@bitgo/statics 58.18.0 → 58.20.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/account.d.ts +60 -1
- package/dist/src/account.d.ts.map +1 -1
- package/dist/src/account.js +101 -2
- package/dist/src/allCoinsAndTokens.d.ts.map +1 -1
- package/dist/src/allCoinsAndTokens.js +65 -10
- package/dist/src/base.d.ts +34 -4
- package/dist/src/base.d.ts.map +1 -1
- package/dist/src/base.js +37 -4
- package/dist/src/coinFeatures.d.ts +13 -12
- package/dist/src/coinFeatures.d.ts.map +1 -1
- package/dist/src/coinFeatures.js +7 -8
- package/dist/src/coins/bscTokens.d.ts.map +1 -1
- package/dist/src/coins/bscTokens.js +2 -1
- package/dist/src/coins/erc20Coins.d.ts.map +1 -1
- package/dist/src/coins/erc20Coins.js +8 -4
- package/dist/src/coins/ofcCoins.d.ts.map +1 -1
- package/dist/src/coins/ofcCoins.js +19 -1
- package/dist/src/coins/ofcErc20Coins.d.ts +3 -2
- package/dist/src/coins/ofcErc20Coins.d.ts.map +1 -1
- package/dist/src/coins/ofcErc20Coins.js +37 -27
- package/dist/src/coins/polygonTokens.d.ts.map +1 -1
- package/dist/src/coins/polygonTokens.js +5 -1
- package/dist/src/coins/solTokens.d.ts.map +1 -1
- package/dist/src/coins/solTokens.js +5 -1
- package/dist/src/coins.d.ts.map +1 -1
- package/dist/src/coins.js +16 -1
- 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 +7 -1
- package/dist/src/map.d.ts.map +1 -1
- package/dist/src/map.js +116 -79
- package/dist/src/networks.d.ts +38 -0
- package/dist/src/networks.d.ts.map +1 -1
- package/dist/src/networks.js +59 -9
- package/dist/src/tokenConfig.d.ts +14 -3
- package/dist/src/tokenConfig.d.ts.map +1 -1
- package/dist/src/tokenConfig.js +106 -31
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
package/dist/src/coins.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coins.d.ts","sourceRoot":"","sources":["../../src/coins.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"coins.d.ts","sourceRoot":"","sources":["../../src/coins.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,QAAQ,EAAe,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAQhC,eAAO,MAAM,KAAK,SAMhB,CAAC;AA8BH,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,CAqRjF;AAiCD,wBAAgB,sBAAsB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAElH;AAED,wBAAgB,gCAAgC,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,GAAG,OAAO,CAkD1G;AAED,wBAAgB,uCAAuC,CACrD,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC,GAC7D,OAAO,CA2BT;AAED,wBAAgB,oCAAoC,CAClD,WAAW,EAAE,qBAAqB,GACjC,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,CAsBhC"}
|
package/dist/src/coins.js
CHANGED
|
@@ -36,6 +36,14 @@ allCoinsAndTokens_1.allCoinsAndTokens.forEach((coin) => {
|
|
|
36
36
|
erc20ChainToNameMap[coin.family] = coin.name;
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
|
+
const erc721ChainToNameMap = {};
|
|
40
|
+
allCoinsAndTokens_1.allCoinsAndTokens.forEach((coin) => {
|
|
41
|
+
if (coin.features.includes(base_1.CoinFeature.SUPPORTS_ERC721) &&
|
|
42
|
+
coin.network.type === networks_1.NetworkType.MAINNET &&
|
|
43
|
+
!coin.isToken) {
|
|
44
|
+
erc721ChainToNameMap[coin.family] = coin.name;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
39
47
|
function createToken(token) {
|
|
40
48
|
const initializerMap = {
|
|
41
49
|
algo: account_1.algoToken,
|
|
@@ -75,6 +83,9 @@ function createToken(token) {
|
|
|
75
83
|
Object.keys(erc20ChainToNameMap).forEach((key) => {
|
|
76
84
|
initializerMap[key] = account_1.erc20Token;
|
|
77
85
|
});
|
|
86
|
+
Object.keys(erc721ChainToNameMap).forEach((key) => {
|
|
87
|
+
initializerMap[key] = account_1.erc721Token;
|
|
88
|
+
});
|
|
78
89
|
//return the BaseCoin from default coin map if present
|
|
79
90
|
if (isCoinPresentInCoinMap({ ...token })) {
|
|
80
91
|
if (exports.coins.has(token.name)) {
|
|
@@ -109,6 +120,10 @@ function createToken(token) {
|
|
|
109
120
|
return initializer(...commonArgs.slice(0, 4), // id, name, fullName, decimalPlaces
|
|
110
121
|
token.contractAddress || token.tokenAddress, // contractAddress
|
|
111
122
|
token.asset, token.network, token.features, token.prefix, token.suffix, token.primaryKeyCurve);
|
|
123
|
+
case erc721ChainToNameMap[family]:
|
|
124
|
+
return initializer(...commonArgs.slice(0, 3), // id, name, fullName
|
|
125
|
+
token.contractAddress, // contractAddress
|
|
126
|
+
token.network, token.features, token.prefix, token.suffix, token.primaryKeyCurve);
|
|
112
127
|
case 'arbeth':
|
|
113
128
|
case 'avaxc':
|
|
114
129
|
case 'baseeth':
|
|
@@ -361,4 +376,4 @@ function createTokenUsingTrimmedConfigDetails(tokenConfig) {
|
|
|
361
376
|
return createToken(fullTokenConfig);
|
|
362
377
|
}
|
|
363
378
|
}
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29pbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29pbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0VBLGtDQXVRQztBQWlDRCx3REFFQztBQUVELDRFQWtEQztBQUVELDBGQTZCQztBQUVELG9GQXdCQztBQXpkRCx1Q0E2Qm1CO0FBQ25CLCtCQUFpQztBQUNqQyxpQ0FBK0M7QUFFL0MsK0JBQWdDO0FBQ2hDLHlDQUFtRDtBQUNuRCw2RUFBMEU7QUFDMUUseURBQXNFO0FBQ3RFLCtDQUE0QztBQUM1QywyREFBd0Q7QUFDeEQsdURBQW9EO0FBRXZDLFFBQUEsS0FBSyxHQUFHLGFBQU8sQ0FBQyxTQUFTLENBQUM7SUFDckMsR0FBRyxxQ0FBaUI7SUFDcEIsR0FBRyw2QkFBYTtJQUNoQixHQUFHLDhCQUFjO0lBQ2pCLEdBQUcsbUJBQVE7SUFDWCxHQUFHLDJCQUFZO0NBQ2hCLENBQUMsQ0FBQztBQUVILGlGQUFpRjtBQUNqRixnREFBZ0Q7QUFDaEQsTUFBTSxtQkFBbUIsR0FBMkIsRUFBRSxDQUFDO0FBRXZELHlLQUF5SztBQUN6SyxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbkQscUNBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDakMsSUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxrQkFBVyxDQUFDLGNBQWMsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxzQkFBVyxDQUFDLE9BQU87UUFDekMsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUNiLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUNyQyxDQUFDO1FBQ0QsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDL0MsQ0FBQztBQUNILENBQUMs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ICBhbGdvVG9rZW4sXG4gIGFwdE5GVENvbGxlY3Rpb24sXG4gIGFwdFRva2VuLFxuICBhcmJldGhFcmMyMCxcbiAgYXZheEVyYzIwLFxuICBiZXJhRXJjMjAsXG4gIGJzY1Rva2VuLFxuICBjZWxvVG9rZW4sXG4gIGNvc21vc1Rva2VuLFxuICBlb3NUb2tlbixcbiAgZXJjMjAsXG4gIGhlZGVyYVRva2VuLFxuICBqZXR0b25Ub2tlbixcbiAgbmVwMTQxVG9rZW4sXG4gIG9wZXRoRXJjMjAsXG4gIHBvbHlnb25FcmMyMCxcbiAgcG9seXhUb2tlbixcbiAgc2lwMTBUb2tlbixcbiAgc29sVG9rZW4sXG4gIHN0ZWxsYXJUb2tlbixcbiAgc3VpVG9rZW4sXG4gIHRhb1Rva2VuLFxuICB0cm9uVG9rZW4sXG4gIHZldE5GVENvbGxlY3Rpb24sXG4gIHZldFRva2VuLFxuICB4cnBUb2tlbixcbiAgYWRhVG9rZW4sXG4gIGVyYzIwVG9rZW4sXG59IGZyb20gJy4vYWNjb3VudCc7XG5pbXBvcnQgeyBvZmNUb2tlbiB9IGZyb20gJy4vb2ZjJztcbmltcG9ydCB7IEJhc2VDb2luLCBDb2luRmVhdHVyZSB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBBbXNUb2tlbkNvbmZpZywgVHJpbW1lZEFtc1Rva2VuQ29uZmlnIH0gZnJvbSAnLi90b2tlbkNvbmZpZyc7XG5pbXBvcnQgeyBDb2luTWFwIH0gZnJvbSAnLi9tYXAnO1xuaW1wb3J0IHsgTmV0d29ya3MsIE5ldHdvcmtUeXBlIH0gZnJvbSAnLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2VucyB9IGZyb20gJy4vbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMnO1xuaW1wb3J0IHsgb2ZjRXJjMjBDb2lucywgdE9mY0VyYzIwQ29pbnMgfSBmcm9tICcuL2NvaW5zL29mY0VyYzIwQ29pbnMnO1xuaW1wb3J0IHsgb2ZjQ29pbnMgfSBmcm9tICcuL2NvaW5zL29mY0NvaW5zJztcbmltcG9ydCB7IGFsbENvaW5zQW5kVG9rZW5zIH0gZnJvbSAnLi9hbGxDb2luc0FuZFRva2Vucyc7XG5pbXBvcnQgeyBib3RPZmNUb2tlbnMgfSBmcm9tICcuL2NvaW5zL2JvdE9mY1Rva2Vucyc7XG5cbmV4cG9ydCBjb25zdCBjb2lucyA9IENvaW5NYXAuZnJvbUNvaW5zKFtcbiAgLi4uYWxsQ29pbnNBbmRUb2tlbnMsXG4gIC4uLm9mY0VyYzIwQ29pbnMsXG4gIC4uLnRPZmNFcmMyMENvaW5zLFxuICAuLi5vZmNDb2lucyxcbiAgLi4uYm90T2ZjVG9rZW5zLFxuXSk7XG5cbi8vIEJ1aWxkIGEgbWFwIG9mIEVSQzIwLXN1cHBvcnRpbmcgY2hhaW4gZmFtaWx5IG5hbWVzIHRvIHRoZWlyIG1haW5uZXQgY29pbiBuYW1lc1xuLy8gTWFwcyBmYW1pbHkgLT4gY29pbiBuYW1lIChlLmcuLCAnaXAnIC0+ICdpcCcpXG5jb25zdCBlcmMyMENoYWluVG9OYW1lTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbi8vIFRPRE86IHJlbW92ZSBpcCBhbmQgaHlwZWVldm0gY29pbnMgaGVyZSBhbmQgcmVtb3ZlIG90aGVyIGV2bSBjb2lucyBmcm9tIHN3aXRjaCBibG9jaywgb25jZSBjaGFuZ2VzIGFyZSB0ZXN0ZWQgKFRpY2tldDogaHR0cHM6Ly9iaXRnb2luYy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9XSU4tNzgzNSlcbmNvbnN0IGVuYWJsZWRFdm1Db2lucyA9IFsnaXAnLCAnaHlwZWV2bScsICdwbHVtZSddO1xuYWxsQ29pbnNBbmRUb2tlbnMuZm9yRWFjaCgoY29pbikgPT4ge1xuICBpZiAoXG4gICAgY29pbi5mZWF0dXJlcy5pbmNsdWRlcyhDb2luRmVhdHVyZS5TVVBQT1JUU19FUkMyMCkgJiZcbiAgICBjb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVCAmJlxuICAgICFjb2luLmlzVG9rZW4gJiZcbiAgICBlbmFibGVkRXZtQ29pbnMuaW5jbHVkZXMoY29pbi5mYW1pbHkpXG4gICkge1xuICAgIGVyYzIwQ2hhaW5Ub05hbWVNYXBbY29pbi5mYW1pbHldID0gY29pbi5uYW1lO1xuICB9XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRva2VuKHRva2VuOiBBbXNUb2tlbkNvbmZpZyk6IFJlYWRvbmx5PEJhc2VDb2luPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGluaXRpYWxpemVyTWFwOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBhbGdvOiBhbGdvVG9rZW4sXG4gICAgYXB0OiBhcHRUb2tlbixcbiAgICBhcmJldGg6IGFyYmV0aEVyYzIwLFxuICAgIGF2YXhjOiBhdmF4RXJjMjAsXG4gICAgYmFzZWV0aDogZXJjMjBUb2tlbixcbiAgICBiZXJhOiBiZXJhRXJjMjAsXG4gICAgZmxvdzogZXJjMjBUb2tlbixcbiAgICBsaW5lYWV0aDogZXJjMjBUb2tlbixcbiAgICBzZWlldm06IGVyYzIwVG9rZW4sXG4gICAgbW9uOiBlcmMyMFRva2VuLFxuICAgIHhkYzogZXJjMjBUb2tlbixcbiAgICBic2M6IGJzY1Rva2VuLFxuICAgIGNlbG86IGNlbG9Ub2tlbixcbiAgICBjb3Ntb3M6IGNvc21vc1Rva2VuLFxuICAgIGV0aDogZXJjMjAsXG4gICAgZW9zOiBlb3NUb2tlbixcbiAgICBoYmFyOiBoZWRlcmFUb2tlbixcbiAgICBuZWFyOiBuZXAxNDFUb2tlbixcbiAgICBvcGV0aDogb3BldGhFcmMyMCxcbiAgICBwb2x5Z29uOiBwb2x5Z29uRXJjMjAsXG4gICAgc29sOiBzb2xUb2tlbixcbiAgICBzdHg6IHNpcDEwVG9rZW4sXG4gICAgc3VpOiBzdWlUb2tlbixcbiAgICB0YW86IHRhb1Rva2VuLFxuICAgIHBvbHl4OiBwb2x5eFRva2VuLFxuICAgIHRyeDogdHJvblRva2VuLFxuICAgIHZldDogdmV0VG9rZW4sXG4gICAgeGxtOiBzdGVsbGFyVG9rZW4sXG4gICAgeHJwOiB4cnBUb2tlbixcbiAgICBvZmM6IG9mY1Rva2VuLFxuICAgIGFkYTogYWRhVG9rZW4sXG4gICAgdG9uOiBqZXR0b25Ub2tlbixcbiAgfTtcblxuICAvLyBkeW5hbWljYWxseSBhZGQgZXJjMjAgdG9rZW4gaW5pdGlhbGl6ZXJzIGZvciBldGggbGlrZSBjaGFpbnMgdG8gdGhlIGluaXRpYWxpemVyIG1hcFxuICBPYmplY3Qua2V5cyhlcmMyMENoYWluVG9OYW1lTWFwKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBpbml0aWFsaXplck1hcFtrZXldID0gZXJjMjBUb2tlbjtcbiAgfSk7XG5cbiAgLy9yZXR1cm4gdGhlIEJhc2VDb2luIGZyb20gZGVmYXVsdCBjb2luIG1hcCBpZiBwcmVzZW50XG4gIGlmIChpc0NvaW5QcmVzZW50SW5Db2luTWFwKHsgLi4udG9rZW4gfSkpIHtcbiAgICBpZiAoY29pbnMuaGFzKHRva2VuLm5hbWUpKSB7XG4gICAgICByZXR1cm4gY29pbnMuZ2V0KHRva2VuLm5hbWUpO1xuICAgIH1cbiAgICBpZiAoY29pbnMuaGFzKHRva2VuLmlkKSkge1xuICAgICAgcmV0dXJuIGNvaW5zLmdldCh0b2tlbi5pZCk7XG4gICAgfVxuICAgIGlmICh0b2tlbi5hbGlhcyAmJiBjb2lucy5oYXModG9rZW4uYWxpYXMpKSB7XG4gICAgICByZXR1cm4gY29pbnMuZ2V0KHRva2VuLmFsaWFzKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZmFtaWx5ID0gdG9rZW4uZmFtaWx5O1xuICBjb25zdCBpbml0aWFsaXplciA9IGluaXRpYWxpemVyTWFwW2ZhbWlseV0gYXMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gUmVhZG9ubHk8QmFzZUNvaW4+O1xuICBpZiAoIWluaXRpYWxpemVyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGNvbW1vbkFyZ3MgPSBbXG4gICAgdG9rZW4uaWQsXG4gICAgdG9rZW4ubmFtZSxcbiAgICB0b2tlbi5mdWxsTmFtZSxcbiAgICB0b2tlbi5kZWNpbWFsUGxhY2VzLFxuICAgIHRva2VuLmFzc2V0LFxuICAgIHRva2VuLmZlYXR1cmVzLFxuICAgIHRva2VuLnByZWZpeCxcbiAgICB0b2tlbi5zdWZmaXgsXG4gICAgdG9rZW4ubmV0d29yayxcbiAgICB0b2tlbi5wcmltYXJ5S2V5Q3VydmUsXG4gIF07XG5cbiAgc3dpdGNoIChmYW1pbHkpIHtcbiAgICBjYXNlIGVyYzIwQ2hhaW5Ub05hbWVNYXBbZmFtaWx5XTpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcyB8fCB0b2tlbi50b2tlbkFkZHJlc3MsIC8vIGNvbnRyYWN0QWRkcmVzc1xuICAgICAgICB0b2tlbi5hc3NldCxcbiAgICAgICAgdG9rZW4ubmV0d29yayxcbiAgICAgICAgdG9rZW4uZmVhdHVyZXMsXG4gICAgICAgIHRva2VuLnByZWZpeCxcbiAgICAgICAgdG9rZW4uc3VmZml4LFxuICAgICAgICB0b2tlbi5wcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG4gICAgY2FzZSAnYXJiZXRoJzpcbiAgICBjYXNlICdhdmF4Yyc6XG4gICAgY2FzZSAnYmFzZWV0aCc6XG4gICAgY2FzZSAnYmVyYSc6XG4gICAgY2FzZSAnYnNjJzpcbiAgICBjYXNlICdmbG93JzpcbiAgICBjYXNlICdsaW5lYWV0aCc6XG4gICAgY2FzZSAnc2VpZXZtJzpcbiAgICBjYXNlICdtb24nOlxuICAgIGNhc2UgJ3hkYyc6XG4gICAgY2FzZSAnY2Vsbyc6XG4gICAgY2FzZSAnZXRoJzpcbiAgICBjYXNlICdvcGV0aCc6XG4gICAgY2FzZSAncG9seWdvbic6XG4gICAgY2FzZSAndHJ4JzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcyB8fCB0b2tlbi50b2tlbkFkZHJlc3MsIC8vIGNvbnRyYWN0QWRkcmVzc1xuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ2FwdCc6XG4gICAgICBjb25zdCB7IGluaXRGdW5jLCBvYmplY3RJZCB9ID0gZ2V0QXB0VG9rZW5Jbml0aWFsaXplcih0b2tlbik7XG4gICAgICByZXR1cm4gaW5pdEZ1bmMoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICBvYmplY3RJZCxcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICd2ZXQnOlxuICAgICAgY29uc3QgeyB2ZXRJbml0RnVuYywgdmV0T2JqZWN0SWQsIGlzTkZUIH0gPSBnZXRWZXRUb2tlbkluaXRpYWxpemVyKHRva2VuKTtcbiAgICAgIGlmIChpc05GVCkge1xuICAgICAgICByZXR1cm4gdmV0SW5pdEZ1bmMoXG4gICAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCAzKSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lXG4gICAgICAgICAgdmV0T2JqZWN0SWQsXG4gICAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2ZXRJbml0RnVuYyhcbiAgICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgICB2ZXRPYmplY3RJZCxcbiAgICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgY2FzZSAnc3R4JzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLmFzc2V0SWQsIC8vIGFzc2V0SWRcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICdhbGdvJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCAyKSwgLy8gaWQsIG5hbWVcbiAgICAgICAgdG9rZW4uYWxpYXMsIC8vIGFsaWFzXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMikgLy8gZnVsbE5hbWUsIGRlY2ltYWwsIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ2Vvcyc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5jb250cmFjdE5hbWUsIC8vIGNvbnRyYWN0TmFtZVxuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MsIC8vIGNvbnRyYWN0QWRkcmVzc1xuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQsIDgpLCAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4XG4gICAgICAgIHRva2VuLnN5bWJvbCwgLy8gc3ltYm9sXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoOCkgLy8gbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAnaGJhcic6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgMyksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZVxuICAgICAgICB0b2tlbi5uZXR3b3JrLCAvLyBuZXR3b3JrXG4gICAgICAgIHRva2VuLmRlY2ltYWxQbGFjZXMsXG4gICAgICAgIHRva2VuLmFzc2V0LFxuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MsIC8vIGNvbnRyYWN0QWRkcmVzc1xuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDUsIDgpLCAvLyBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXhcbiAgICAgICAgdG9rZW4ucHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAnc29sJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLnRva2VuQWRkcmVzcywgLy8gdG9rZW5BZGRyZXNzXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIHRva2VuLmFzc2V0LFxuICAgICAgICB0b2tlbi5mZWF0dXJlcyxcbiAgICAgICAgdG9rZW4ucHJvZ3JhbUlkLFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDYpIC8vIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICdzdWknOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4ucGFja2FnZUlkLCAvLyBwYWNrYWdlSWRcbiAgICAgICAgdG9rZW4ubW9kdWxlLCAvLyBtb2R1bGVcbiAgICAgICAgdG9rZW4uc3ltYm9sLCAvLyBzeW1ib2xcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzLCAvLyBjb250cmFjdEFkZHJlc3NcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICd0YW8nOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4uc3VibmV0SWQsIC8vIHN1Ym5ldElkXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuICAgIGNhc2UgJ3BvbHl4JzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLnRpY2tlciwgLy8gdGlja2VyXG4gICAgICAgIHRva2VuLmFzc2V0SWQsIC8vIGFzc2V0SWRcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICd4bG0nOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDUpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXMsIGFzc2V0XG4gICAgICAgIHRva2VuLmRvbWFpbiwgLy8gZG9tYWluXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNSkgLy8gZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICd4cnAnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4uaXNzdWVyQWRkcmVzcywgLy8gaXNzdWVyQWRkcmVzc1xuICAgICAgICB0b2tlbi5jdXJyZWNueWNvZGUsIC8vIGN1cnJlbmN5Q29kZVxuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MsIC8vIGNvbnRyYWN0QWRkcmVzc1xuICAgICAgICB0b2tlbi5kb21haW4sIC8vIGRvbWFpblxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcbiAgICBjYXNlICdvZmMnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXMsIGFzc2V0LCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICAgIHRva2VuLmJhc2VVbml0LCAvLyBiYXNlVW5pdFxuICAgICAgICB0b2tlbi5pc1Rva2VuLCAvLyBpc1Rva2VuXG4gICAgICAgIHRva2VuLmtpbmQsIC8vIGtpbmRcbiAgICAgICAgdG9rZW4uYWRkcmVzc0NvaW4gLy8gYWRkcmVzc0NvaW5cbiAgICAgICk7XG4gICAgY2FzZSAnYXNpJzpcbiAgICBjYXNlICdhdG9tJzpcbiAgICBjYXNlICdiYWJ5JzpcbiAgICBjYXNlICdibGQnOlxuICAgIGNhc2UgJ2NvcmV1bSc6XG4gICAgY2FzZSAnY3Jvbm9zJzpcbiAgICBjYXNlICdoYXNoJzpcbiAgICBjYXNlICdpbmplY3RpdmUnOlxuICAgIGNhc2UgJ2luaXRpYSc6XG4gICAgY2FzZSAnb3Ntbyc6XG4gICAgY2FzZSAndGhvcic6XG4gICAgY2FzZSAnc2VpJzpcbiAgICBjYXNlICd0aWEnOlxuICAgIGNhc2UgJ3pldGEnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDMpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWVcbiAgICAgICAgdG9rZW4uZGVub20sIC8vIGRlbm9tXG4gICAgICAgIHRva2VuLmRlY2ltYWxQbGFjZXMsIC8vIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4ubmV0d29yaywgLy8gbmV0d29ya1xuICAgICAgICB0b2tlbi5iYXNlVW5pdCwgLy8gYmFzZVVuaXRcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0LCA4KSwgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeFxuICAgICAgICB0b2tlbi5wcmltYXJ5S2V5Q3VydmUgLy8gcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuICAgIGNhc2UgJ2FkYSc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5hc3NldE5hbWUsXG4gICAgICAgIHRva2VuLnBvbGljeUlkLFxuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MsXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuICAgIGNhc2UgJ3Rvbic6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MsIC8vIGNvbnRyYWN0QWRkcmVzc1xuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBcHRUb2tlbkluaXRpYWxpemVyKHRva2VuOiBBbXNUb2tlbkNvbmZpZykge1xuICBpZiAodG9rZW4uYXNzZXRJZCkge1xuICAgIC8vIHVzZWQgZm9yIGZ1bmdpYmxlLWFzc2V0cyAvIGxlZ2FjeSBjb2lucyBldGMuXG4gICAgcmV0dXJuIHtcbiAgICAgIGluaXRGdW5jOiBhcHRUb2tlbiBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBSZWFkb25seTxCYXNlQ29pbj4sXG4gICAgICBvYmplY3RJZDogdG9rZW4uYXNzZXRJZCxcbiAgICB9O1xuICB9XG4gIC8vIHVzZWQgZm9yIG5vbi1mdW5naWJsZSB0b2tlbiAoTkZUKSBjb2xsZWN0aW9uc1xuICByZXR1cm4ge1xuICAgIGluaXRGdW5jOiBhcHRORlRDb2xsZWN0aW9uIGFzICguLi5hcmdzOiB1bmtub3duW10pID0+IFJlYWRvbmx5PEJhc2VDb2luPixcbiAgICBvYmplY3RJZDogdG9rZW4ubmZ0Q29sbGVjdGlvbklkLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRWZXRUb2tlbkluaXRpYWxpemVyKHRva2VuOiBBbXNUb2tlbkNvbmZpZykge1xuICBpZiAodG9rZW4ubmZ0Q29sbGVjdGlvbklkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZldEluaXRGdW5jOiB2ZXRORlRDb2xsZWN0aW9uIGFzICguLi5hcmdzOiB1bmtub3duW10pID0+IFJlYWRvbmx5PEJhc2VDb2luPixcbiAgICAgIHZldE9iamVjdElkOiB0b2tlbi5uZnRDb2xsZWN0aW9uSWQsXG4gICAgICBpc05GVDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB2ZXRJbml0RnVuYzogdmV0VG9rZW4gYXMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gUmVhZG9ubHk8QmFzZUNvaW4+LFxuICAgIHZldE9iamVjdElkOiB0b2tlbi5jb250cmFjdEFkZHJlc3MsXG4gICAgaXNORlQ6IGZhbHNlLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb2luUHJlc2VudEluQ29pbk1hcCh7IG5hbWUsIGlkLCBhbGlhcyB9OiB7IG5hbWU6IHN0cmluZzsgaWQ/OiBzdHJpbmc7IGFsaWFzPzogc3RyaW5nIH0pOiBib29sZWFuIHtcbiAgcmV0dXJuIEJvb2xlYW4oY29pbnMuaGFzKG5hbWUpIHx8IChpZCAmJiBjb2lucy5oYXMoaWQpKSB8fCAoYWxpYXMgJiYgY29pbnMuaGFzKGFsaWFzKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW5NYXBVc2luZ0NvbmZpZ0RldGFpbHModG9rZW5Db25maWdNYXA6IFJlY29yZDxzdHJpbmcsIEFtc1Rva2VuQ29uZmlnW10+KTogQ29pbk1hcCB7XG4gIGNvbnN0IEJhc2VDb2luczogTWFwPHN0cmluZywgUmVhZG9ubHk8QmFzZUNvaW4+PiA9IG5ldyBNYXAoKTtcblxuICBjb25zdCBuZnRBbmRPdGhlclRva2VucyA9IG5ldyBTZXQoW1xuICAgICdlcmM3MjE6YnNjdG9rZW4nLFxuICAgICd0ZXJjNzIxOmJzY3Rva2VuJyxcbiAgICAnZXJjMTE1NTpic2N0b2tlbicsXG4gICAgJ3RlcmMxMTU1OmJzY3Rva2VuJyxcbiAgICAnZXJjNzIxOndpdGNoJyxcbiAgICAnZXJjNzIxOnRva2VuJyxcbiAgICAnZXJjMTE1NTp0b2tlbicsXG4gICAgJ25vbnN0YW5kYXJkOnRva2VuJyxcbiAgICAndGVyYzcyMTp0b2tlbicsXG4gICAgJ3RlcmMxMTU1OnRva2VuJyxcbiAgICAndG5vbnN0YW5kYXJkOnRva2VuJyxcbiAgICAndGVyYzcyMTpiaXRnb2VyYzcyMScsXG4gICAgJ3RlcmMxMTU1OmJpdGdvZXJjMTE1NScsXG4gICAgJ3RlcmM3MjE6aG9vZGlkaicsXG4gICAgJ2VyYzcyMTpwb2x5Z29udG9rZW4nLFxuICAgICdlcmMxMTU1OnBvbHlnb250b2tlbicsXG4gICAgJ3RlcmM3MjE6cG9seWdvbnRva2VuJyxcbiAgICAndGVyYzExNTU6cG9seWdvbnRva2VuJyxcbiAgICAnZXJjNzIxOnNvbmVpdW10b2tlbicsXG4gICAgJ2VyYzExNTU6c29uZWl1bXRva2VuJyxcbiAgICAndGVyYzcyMTpzb25laXVtdG9rZW4nLFxuICAgICd0ZXJjMTE1NTpzb25laXVtdG9rZW4nLFxuICBdKTtcblxuICAvLyBBZGQgYWxsIHRoZSBjb2lucyBmcm9tIHN0YXRpY3MgY29pbiBtYXAgZmlyc3RcbiAgY29pbnMuZm9yRWFjaCgoY29pbiwgY29pbk5hbWUpID0+IHtcbiAgICBCYXNlQ29pbnMuc2V0KGNvaW5OYW1lLCBjb2luKTtcbiAgfSk7XG5cbiAgLy8gYWRkIHRoZSB0b2tlbnMgbm90IHByZXNlbnQgaW4gdGhlIHN0YXRpYyBjb2luIG1hcFxuICBmb3IgKGNvbnN0IHRva2VuQ29uZmlncyBvZiBPYmplY3QudmFsdWVzKHRva2VuQ29uZmlnTWFwKSkge1xuICAgIGNvbnN0IHRva2VuQ29uZmlnID0gdG9rZW5Db25maWdzWzBdO1xuXG4gICAgaWYgKFxuICAgICAgIWlzQ29pblByZXNlbnRJbkNvaW5NYXAoeyAuLi50b2tlbkNvbmZpZyB9KSAmJlxuICAgICAgdG9rZW5Db25maWcuaXNUb2tlbiAmJlxuICAgICAgIW5mdEFuZE90aGVyVG9rZW5zLmhhcyh0b2tlbkNvbmZpZy5uYW1lKVxuICAgICkge1xuICAgICAgY29uc3QgdG9rZW4gPSBjcmVhdGVUb2tlbih0b2tlbkNvbmZpZyk7XG4gICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgQmFzZUNvaW5zLnNldCh0b2tlbi5uYW1lLCB0b2tlbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIENvaW5NYXAuZnJvbUNvaW5zKEFycmF5LmZyb20oQmFzZUNvaW5zLnZhbHVlcygpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb2tlbk1hcFVzaW5nVHJpbW1lZENvbmZpZ0RldGFpbHMoXG4gIHJlZHVjZWRUb2tlbkNvbmZpZ01hcDogUmVjb3JkPHN0cmluZywgVHJpbW1lZEFtc1Rva2VuQ29uZmlnW10+XG4pOiBDb2luTWFwIHtcbiAgY29uc3QgYW1zVG9rZW5Db25maWdNYXA6IFJlY29yZDxzdHJpbmcsIEFtc1Rva2VuQ29uZmlnW10+ID0ge307XG4gIGNvbnN0IG5ldHdvcmtOYW1lTWFwID0gbmV3IE1hcChcbiAgICBPYmplY3QudmFsdWVzKE5ldHdvcmtzKS5mbGF0TWFwKChuZXR3b3JrVHlwZSkgPT5cbiAgICAgIE9iamVjdC52YWx1ZXMobmV0d29ya1R5cGUpLm1hcCgobmV0d29yaykgPT4gW25ldHdvcmsubmFtZSwgbmV0d29ya10pXG4gICAgKVxuICApO1xuXG4gIGZvciAoY29uc3QgdG9rZW5Db25maWdzIG9mIE9iamVjdC52YWx1ZXMocmVkdWNlZFRva2VuQ29uZmlnTWFwKSkge1xuICAgIGNvbnN0IHRva2VuQ29uZmlnID0gdG9rZW5Db25maWdzWzBdO1xuICAgIGNvbnN0IG5ldHdvcmsgPSBuZXR3b3JrTmFtZU1hcC5nZXQodG9rZW5Db25maWcubmV0d29yay5uYW1lKTtcbiAgICBpZiAoXG4gICAgICAhaXNDb2luUHJlc2VudEluQ29pbk1hcCh7IC4uLnRva2VuQ29uZmlnIH0pICYmXG4gICAgICBuZXR3b3JrICYmXG4gICAgICB0b2tlbkNvbmZpZy5pc1Rva2VuICYmXG4gICAgICBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2Vuc1tuZXR3b3JrLmZhbWlseV1cbiAgICApIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVzID0gbmV3IFNldChbXG4gICAgICAgIC4uLihuZXR3b3JrRmVhdHVyZU1hcEZvclRva2Vuc1tuZXR3b3JrLmZhbWlseV0gfHwgW10pLFxuICAgICAgICAuLi4odG9rZW5Db25maWcuYWRkaXRpb25hbEZlYXR1cmVzIHx8IFtdKSxcbiAgICAgIF0pO1xuICAgICAgdG9rZW5Db25maWcuZXhjbHVkZWRGZWF0dXJlcz8uZm9yRWFjaCgoZmVhdHVyZSkgPT4gZmVhdHVyZXMuZGVsZXRlKGZlYXR1cmUpKTtcbiAgICAgIGFtc1Rva2VuQ29uZmlnTWFwW3Rva2VuQ29uZmlnLm5hbWVdID0gW3sgLi4udG9rZW5Db25maWcsIGZlYXR1cmVzOiBBcnJheS5mcm9tKGZlYXR1cmVzKSwgbmV0d29yayB9XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY3JlYXRlVG9rZW5NYXBVc2luZ0NvbmZpZ0RldGFpbHMoYW1zVG9rZW5Db25maWdNYXApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW5Vc2luZ1RyaW1tZWRDb25maWdEZXRhaWxzKFxuICB0b2tlbkNvbmZpZzogVHJpbW1lZEFtc1Rva2VuQ29uZmlnXG4pOiBSZWFkb25seTxCYXNlQ29pbj4gfCB1bmRlZmluZWQge1xuICBsZXQgZnVsbFRva2VuQ29uZmlnOiBBbXNUb2tlbkNvbmZpZyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgbmV0d29ya05hbWVNYXAgPSBuZXcgTWFwKFxuICAgIE9iamVjdC52YWx1ZXMoTmV0d29ya3MpLmZsYXRNYXAoKG5ldHdvcmtUeXBlKSA9PlxuICAgICAgT2JqZWN0LnZhbHVlcyhuZXR3b3JrVHlwZSkubWFwKChuZXR3b3JrKSA9PiBbbmV0d29yay5uYW1lLCBuZXR3b3JrXSlcbiAgICApXG4gICk7XG4gIGNvbnN0IG5ldHdvcmsgPSBuZXR3b3JrTmFtZU1hcC5nZXQodG9rZW5Db25maWcubmV0d29yay5uYW1lKTtcbiAgaWYgKFxuICAgICFpc0NvaW5QcmVzZW50SW5Db2luTWFwKHsgLi4udG9rZW5Db25maWcgfSkgJiZcbiAgICBuZXR3b3JrICYmXG4gICAgdG9rZW5Db25maWcuaXNUb2tlbiAmJlxuICAgIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW25ldHdvcmsuZmFtaWx5XVxuICApIHtcbiAgICBjb25zdCBmZWF0dXJlcyA9IG5ldyBTZXQoW1xuICAgICAgLi4uKG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW25ldHdvcmsuZmFtaWx5XSB8fCBbXSksXG4gICAgICAuLi4odG9rZW5Db25maWcuYWRkaXRpb25hbEZlYXR1cmVzIHx8IFtdKSxcbiAgICBdKTtcbiAgICB0b2tlbkNvbmZpZy5leGNsdWRlZEZlYXR1cmVzPy5mb3JFYWNoKChmZWF0dXJlKSA9PiBmZWF0dXJlcy5kZWxldGUoZmVhdHVyZSkpO1xuICAgIGZ1bGxUb2tlbkNvbmZpZyA9IHsgLi4udG9rZW5Db25maWcsIGZlYXR1cmVzOiBBcnJheS5mcm9tKGZlYXR1cmVzKSwgbmV0d29yayB9IGFzIEFtc1Rva2VuQ29uZmlnO1xuICAgIHJldHVybiBjcmVhdGVUb2tlbihmdWxsVG9rZW5Db25maWcpO1xuICB9XG59XG4iXX0=
|
|
379
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29pbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29pbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBOEVBLGtDQXFSQztBQWlDRCx3REFFQztBQUVELDRFQWtEQztBQUVELDBGQTZCQztBQUVELG9GQXdCQztBQW5mRCx1Q0E4Qm1CO0FBQ25CLCtCQUFpQztBQUNqQyxpQ0FBK0M7QUFFL0MsK0JBQWdDO0FBQ2hDLHlDQUFtRDtBQUNuRCw2RUFBMEU7QUFDMUUseURBQXNFO0FBQ3RFLCtDQUE0QztBQUM1QywyREFBd0Q7QUFDeEQsdURBQW9EO0FBRXZDLFFBQUEsS0FBSyxHQUFHLGFBQU8sQ0FBQyxTQUFTLENBQUM7SUFDckMsR0FBRyxxQ0FBaUI7SUFDcEIsR0FBRyw2QkFBYTtJQUNoQixHQUFHLDhCQUFjO0lBQ2pCLEdBQUcsbUJBQVE7SUFDWCxHQUFHLDJCQUFZO0NBQ2hCLENBQUMsQ0FBQztBQUVILGlGQUFpRjtBQUNqRixnREFBZ0Q7QUFDaEQsTUFBTSxtQkFBbUIsR0FBMkIsRUFBRSxDQUFDO0FBRXZELHlLQUF5SztBQUN6SyxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbkQscUNBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDakMsSUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxrQkFBVyxDQUFDLGNBQWMsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxzQkFBVyxDQUFDLE9BQU87UUFDekMsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUNiLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUNyQyxDQUFDO1FBQ0QsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDL0MsQ0FBQztBQUNILENBQUMs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QUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQ3JFLENBQ0YsQ0FBQztJQUNGLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxJQUNFLENBQUMsc0JBQXNCLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQzNDLE9BQU87UUFDUCxXQUFXLENBQUMsT0FBTztRQUNuQix1REFBMEIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQzFDLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQztZQUN2QixHQUFHLENBQUMsdURBQTBCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyRCxHQUFHLENBQUMsV0FBVyxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztTQUMxQyxDQUFDLENBQUM7UUFDSCxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDN0UsZUFBZSxHQUFHLEVBQUUsR0FBRyxXQUFXLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFvQixDQUFDO1FBQ2hHLE9BQU8sV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWxnb1Rva2VuLFxuICBhcHRORlRDb2xsZWN0aW9uLFxuICBhcHRUb2tlbixcbiAgYXJiZXRoRXJjMjAsXG4gIGF2YXhFcmMyMCxcbiAgYmVyYUVyYzIwLFxuICBic2NUb2tlbixcbiAgY2Vsb1Rva2VuLFxuICBjb3Ntb3NUb2tlbixcbiAgZW9zVG9rZW4sXG4gIGVyYzIwLFxuICBoZWRlcmFUb2tlbixcbiAgamV0dG9uVG9rZW4sXG4gIG5lcDE0MVRva2VuLFxuICBvcGV0aEVyYzIwLFxuICBwb2x5Z29uRXJjMjAsXG4gIHBvbHl4VG9rZW4sXG4gIHNpcDEwVG9rZW4sXG4gIHNvbFRva2VuLFxuICBzdGVsbGFyVG9rZW4sXG4gIHN1aVRva2VuLFxuICB0YW9Ub2tlbixcbiAgdHJvblRva2VuLFxuICB2ZXRORlRDb2xsZWN0aW9uLFxuICB2ZXRUb2tlbixcbiAgeHJwVG9rZW4sXG4gIGFkYVRva2VuLFxuICBlcmMyMFRva2VuLFxuICBlcmM3MjFUb2tlbixcbn0gZnJvbSAnLi9hY2NvdW50JztcbmltcG9ydCB7IG9mY1Rva2VuIH0gZnJvbSAnLi9vZmMnO1xuaW1wb3J0IHsgQmFzZUNvaW4sIENvaW5GZWF0dXJlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEFtc1Rva2VuQ29uZmlnLCBUcmltbWVkQW1zVG9rZW5Db25maWcgfSBmcm9tICcuL3Rva2VuQ29uZmlnJztcbmltcG9ydCB7IENvaW5NYXAgfSBmcm9tICcuL21hcCc7XG5pbXBvcnQgeyBOZXR3b3JrcywgTmV0d29ya1R5cGUgfSBmcm9tICcuL25ldHdvcmtzJztcbmltcG9ydCB7IG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zIH0gZnJvbSAnLi9uZXR3b3JrRmVhdHVyZU1hcEZvclRva2Vucyc7XG5pbXBvcnQgeyBvZmNFcmMyMENvaW5zLCB0T2ZjRXJjMjBDb2lucyB9IGZyb20gJy4vY29pbnMvb2ZjRXJjMjBDb2lucyc7XG5pbXBvcnQgeyBvZmNDb2lucyB9IGZyb20gJy4vY29pbnMvb2ZjQ29pbnMnO1xuaW1wb3J0IHsgYWxsQ29pbnNBbmRUb2tlbnMgfSBmcm9tICcuL2FsbENvaW5zQW5kVG9rZW5zJztcbmltcG9ydCB7IGJvdE9mY1Rva2VucyB9IGZyb20gJy4vY29pbnMvYm90T2ZjVG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IGNvaW5zID0gQ29pbk1hcC5mcm9tQ29pbnMoW1xuICAuLi5hbGxDb2luc0FuZFRva2VucyxcbiAgLi4ub2ZjRXJjMjBDb2lucyxcbiAgLi4udE9mY0VyYzIwQ29pbnMsXG4gIC4uLm9mY0NvaW5zLFxuICAuLi5ib3RPZmNUb2tlbnMsXG5dKTtcblxuLy8gQnVpbGQgYSBtYXAgb2YgRVJDMjAtc3VwcG9ydGluZyBjaGFpbiBmYW1pbHkgbmFtZXMgdG8gdGhlaXIgbWFpbm5ldCBjb2luIG5hbWVzXG4vLyBNYXBzIGZhbWlseSAtPiBjb2luIG5hbWUgKGUuZy4sICdpcCcgLT4gJ2lwJylcbmNvbnN0IGVyYzIwQ2hhaW5Ub05hbWVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuLy8gVE9ETzogcmVtb3ZlIGlwIGFuZCBoeXBlZWV2bSBjb2lucyBoZXJlIGFuZCByZW1vdmUgb3RoZXIgZXZtIGNvaW5zIGZyb20gc3dpdGNoIGJsb2NrLCBvbmNlIGNoYW5nZXMgYXJlIHRlc3RlZCAoVGlja2V0OiBodHRwczovL2JpdGdvaW5jLmF0bGFzc2lhbi5uZXQvYnJvd3NlL1dJTi03ODM1KVxuY29uc3QgZW5hYmxlZEV2bUNvaW5zID0gWydpcCcsICdoeXBlZXZtJywgJ3BsdW1lJ107XG5hbGxDb2luc0FuZFRva2Vucy5mb3JFYWNoKChjb2luKSA9PiB7XG4gIGlmIChcbiAgICBjb2luLmZlYXR1cmVzLmluY2x1ZGVzKENvaW5GZWF0dXJlLlNVUFBPUlRTX0VSQzIwKSAmJlxuICAgIGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUICYmXG4gICAgIWNvaW4uaXNUb2tlbiAmJlxuICAgIGVuYWJsZWRFdm1Db2lucy5pbmNsdWRlcyhjb2luLmZhbWlseSlcbiAgKSB7XG4gICAgZXJjMjBDaGFpblRvTmFtZU1hcFtjb2luLmZhbWlseV0gPSBjb2luLm5hbWU7XG4gIH1cbn0pO1xuXG5jb25zdCBlcmM3MjFDaGFpblRvTmFtZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuYWxsQ29pbnNBbmRUb2tlbnMuZm9yRWFjaCgoY29pbikgPT4ge1xuICBpZiAoXG4gICAgY29pbi5mZWF0dXJlcy5pbmNsdWRlcyhDb2luRmVhdHVyZS5TVVBQT1JUU19FUkM3MjEpICYmXG4gICAgY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgJiZcbiAgICAhY29pbi5pc1Rva2VuXG4gICkge1xuICAgIGVyYzcyMUNoYWluVG9OYW1lTWFwW2NvaW4uZmFtaWx5XSA9IGNvaW4ubmFtZTtcbiAgfVxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb2tlbih0b2tlbjogQW1zVG9rZW5Db25maWcpOiBSZWFkb25seTxCYXNlQ29pbj4gfCB1bmRlZmluZWQge1xuICBjb25zdCBpbml0aWFsaXplck1hcDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgYWxnbzogYWxnb1Rva2VuLFxuICAgIGFwdDogYXB0VG9rZW4sXG4gICAgYXJiZXRoOiBhcmJldGhFcmMyMCxcbiAgICBhdmF4YzogYXZheEVyYzIwLFxuICAgIGJhc2VldGg6IGVyYzIwVG9rZW4sXG4gICAgYmVyYTogYmVyYUVyYzIwLFxuICAgIGZsb3c6IGVyYzIwVG9rZW4sXG4gICAgbGluZWFldGg6IGVyYzIwVG9rZW4sXG4gICAgc2VpZXZtOiBlcmMyMFRva2VuLFxuICAgIG1vbjogZXJjMjBUb2tlbixcbiAgICB4ZGM6IGVyYzIwVG9rZW4sXG4gICAgYnNjOiBic2NUb2tlbixcbiAgICBjZWxvOiBjZWxvVG9rZW4sXG4gICAgY29zbW9zOiBjb3Ntb3NUb2tlbixcbiAgICBldGg6IGVyYzIwLFxuICAgIGVvczogZW9zVG9rZW4sXG4gICAgaGJhcjogaGVkZXJhVG9rZW4sXG4gICAgbmVhcjogbmVwMTQxVG9rZW4sXG4gICAgb3BldGg6IG9wZXRoRXJjMjAsXG4gICAgcG9seWdvbjogcG9seWdvbkVyYzIwLFxuICAgIHNvbDogc29sVG9rZW4sXG4gICAgc3R4OiBzaXAxMFRva2VuLFxuICAgIHN1aTogc3VpVG9rZW4sXG4gICAgdGFvOiB0YW9Ub2tlbixcbiAgICBwb2x5eDogcG9seXhUb2tlbixcbiAgICB0cng6IHRyb25Ub2tlbixcbiAgICB2ZXQ6IHZldFRva2VuLFxuICAgIHhsbTogc3RlbGxhclRva2VuLFxuICAgIHhycDogeHJwVG9rZW4sXG4gICAgb2ZjOiBvZmNUb2tlbixcbiAgICBhZGE6IGFkYVRva2VuLFxuICAgIHRvbjogamV0dG9uVG9rZW4sXG4gIH07XG5cbiAgLy8gZHluYW1pY2FsbHkgYWRkIGVyYzIwIHRva2VuIGluaXRpYWxpemVycyBmb3IgZXRoIGxpa2UgY2hhaW5zIHRvIHRoZSBpbml0aWFsaXplciBtYXBcbiAgT2JqZWN0LmtleXMoZXJjMjBDaGFpblRvTmFtZU1hcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgaW5pdGlhbGl6ZXJNYXBba2V5XSA9IGVyYzIwVG9rZW47XG4gIH0pO1xuXG4gIE9iamVjdC5rZXlzKGVyYzcyMUNoYWluVG9OYW1lTWFwKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBpbml0aWFsaXplck1hcFtrZXldID0gZXJjNzIxVG9rZW47XG4gIH0pO1xuXG4gIC8vcmV0dXJuIHRoZSBCYXNlQ29pbiBmcm9tIGRlZmF1bHQgY29pbiBtYXAgaWYgcHJlc2VudFxuICBpZiAoaXNDb2luUHJlc2VudEluQ29pbk1hcCh7IC4uLnRva2VuIH0pKSB7XG4gICAgaWYgKGNvaW5zLmhhcyh0b2tlbi5uYW1lKSkge1xuICAgICAgcmV0dXJuIGNvaW5zLmdldCh0b2tlbi5uYW1lKTtcbiAgICB9XG4gICAgaWYgKGNvaW5zLmhhcyh0b2tlbi5pZCkpIHtcbiAgICAgIHJldHVybiBjb2lucy5nZXQodG9rZW4uaWQpO1xuICAgIH1cbiAgICBpZiAodG9rZW4uYWxpYXMgJiYgY29pbnMuaGFzKHRva2VuLmFsaWFzKSkge1xuICAgICAgcmV0dXJuIGNvaW5zLmdldCh0b2tlbi5hbGlhcyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGZhbWlseSA9IHRva2VuLmZhbWlseTtcbiAgY29uc3QgaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplck1hcFtmYW1pbHldIGFzICguLi5hcmdzOiB1bmtub3duW10pID0+IFJlYWRvbmx5PEJhc2VDb2luPjtcbiAgaWYgKCFpbml0aWFsaXplcikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBjb21tb25BcmdzID0gW1xuICAgIHRva2VuLmlkLFxuICAgIHRva2VuLm5hbWUsXG4gICAgdG9rZW4uZnVsbE5hbWUsXG4gICAgdG9rZW4uZGVjaW1hbFBsYWNlcyxcbiAgICB0b2tlbi5hc3NldCxcbiAgICB0b2tlbi5mZWF0dXJlcyxcbiAgICB0b2tlbi5wcmVmaXgsXG4gICAgdG9rZW4uc3VmZml4LFxuICAgIHRva2VuLm5ldHdvcmssXG4gICAgdG9rZW4ucHJpbWFyeUtleUN1cnZlLFxuICBdO1xuXG4gIHN3aXRjaCAoZmFtaWx5KSB7XG4gICAgY2FzZSBlcmMyMENoYWluVG9OYW1lTWFwW2ZhbWlseV06XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MgfHwgdG9rZW4udG9rZW5BZGRyZXNzLCAvLyBjb250cmFjdEFkZHJlc3NcbiAgICAgICAgdG9rZW4uYXNzZXQsXG4gICAgICAgIHRva2VuLm5ldHdvcmssXG4gICAgICAgIHRva2VuLmZlYXR1cmVzLFxuICAgICAgICB0b2tlbi5wcmVmaXgsXG4gICAgICAgIHRva2VuLnN1ZmZpeCxcbiAgICAgICAgdG9rZW4ucHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuICAgIGNhc2UgZXJjNzIxQ2hhaW5Ub05hbWVNYXBbZmFtaWx5XTpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCAzKSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIHRva2VuLm5ldHdvcmssXG4gICAgICAgIHRva2VuLmZlYXR1cmVzLFxuICAgICAgICB0b2tlbi5wcmVmaXgsXG4gICAgICAgIHRva2VuLnN1ZmZpeCxcbiAgICAgICAgdG9rZW4ucHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuICAgIGNhc2UgJ2FyYmV0aCc6XG4gICAgY2FzZSAnYXZheGMnOlxuICAgIGNhc2UgJ2Jhc2VldGgnOlxuICAgIGNhc2UgJ2JlcmEnOlxuICAgIGNhc2UgJ2JzYyc6XG4gICAgY2FzZSAnZmxvdyc6XG4gICAgY2FzZSAnbGluZWFldGgnOlxuICAgIGNhc2UgJ3NlaWV2bSc6XG4gICAgY2FzZSAnbW9uJzpcbiAgICBjYXNlICd4ZGMnOlxuICAgIGNhc2UgJ2NlbG8nOlxuICAgIGNhc2UgJ2V0aCc6XG4gICAgY2FzZSAnb3BldGgnOlxuICAgIGNhc2UgJ3BvbHlnb24nOlxuICAgIGNhc2UgJ3RyeCc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MgfHwgdG9rZW4udG9rZW5BZGRyZXNzLCAvLyBjb250cmFjdEFkZHJlc3NcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICdhcHQnOlxuICAgICAgY29uc3QgeyBpbml0RnVuYywgb2JqZWN0SWQgfSA9IGdldEFwdFRva2VuSW5pdGlhbGl6ZXIodG9rZW4pO1xuICAgICAgcmV0dXJuIGluaXRGdW5jKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgb2JqZWN0SWQsXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAndmV0JzpcbiAgICAgIGNvbnN0IHsgdmV0SW5pdEZ1bmMsIHZldE9iamVjdElkLCBpc05GVCB9ID0gZ2V0VmV0VG9rZW5Jbml0aWFsaXplcih0b2tlbik7XG4gICAgICBpZiAoaXNORlQpIHtcbiAgICAgICAgcmV0dXJuIHZldEluaXRGdW5jKFxuICAgICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgMyksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZVxuICAgICAgICAgIHZldE9iamVjdElkLFxuICAgICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmV0SW5pdEZ1bmMoXG4gICAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgICAgdmV0T2JqZWN0SWQsXG4gICAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ3N0eCc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5hc3NldElkLCAvLyBhc3NldElkXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAnYWxnbyc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgMiksIC8vIGlkLCBuYW1lXG4gICAgICAgIHRva2VuLmFsaWFzLCAvLyBhbGlhc1xuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDIpIC8vIGZ1bGxOYW1lLCBkZWNpbWFsLCBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICdlb3MnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4uY29udHJhY3ROYW1lLCAvLyBjb250cmFjdE5hbWVcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzLCAvLyBjb250cmFjdEFkZHJlc3NcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0LCA4KSwgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeFxuICAgICAgICB0b2tlbi5zeW1ib2wsIC8vIHN5bWJvbFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDgpIC8vIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ2hiYXInOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDMpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWVcbiAgICAgICAgdG9rZW4ubmV0d29yaywgLy8gbmV0d29ya1xuICAgICAgICB0b2tlbi5kZWNpbWFsUGxhY2VzLFxuICAgICAgICB0b2tlbi5hc3NldCxcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzLCAvLyBjb250cmFjdEFkZHJlc3NcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg1LCA4KSwgLy8gZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4XG4gICAgICAgIHRva2VuLnByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ3NvbCc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi50b2tlbkFkZHJlc3MsIC8vIHRva2VuQWRkcmVzc1xuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MsIC8vIGNvbnRyYWN0QWRkcmVzc1xuICAgICAgICB0b2tlbi5hc3NldCxcbiAgICAgICAgdG9rZW4uZmVhdHVyZXMsXG4gICAgICAgIHRva2VuLnByb2dyYW1JZCxcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg2KSAvLyBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAnc3VpJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLnBhY2thZ2VJZCwgLy8gcGFja2FnZUlkXG4gICAgICAgIHRva2VuLm1vZHVsZSwgLy8gbW9kdWxlXG4gICAgICAgIHRva2VuLnN5bWJvbCwgLy8gc3ltYm9sXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAndGFvJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLnN1Ym5ldElkLCAvLyBzdWJuZXRJZFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcbiAgICBjYXNlICdwb2x5eCc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi50aWNrZXIsIC8vIHRpY2tlclxuICAgICAgICB0b2tlbi5hc3NldElkLCAvLyBhc3NldElkXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAneGxtJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA1KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzLCBhc3NldFxuICAgICAgICB0b2tlbi5kb21haW4sIC8vIGRvbWFpblxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDUpIC8vIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAneHJwJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLmlzc3VlckFkZHJlc3MsIC8vIGlzc3VlckFkZHJlc3NcbiAgICAgICAgdG9rZW4uY3VycmVjbnljb2RlLCAvLyBjdXJyZW5jeUNvZGVcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzLCAvLyBjb250cmFjdEFkZHJlc3NcbiAgICAgICAgdG9rZW4uZG9tYWluLCAvLyBkb21haW5cbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG4gICAgY2FzZSAnb2ZjJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncywgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzLCBhc3NldCwgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgICB0b2tlbi5iYXNlVW5pdCwgLy8gYmFzZVVuaXRcbiAgICAgICAgdG9rZW4uaXNUb2tlbiwgLy8gaXNUb2tlblxuICAgICAgICB0b2tlbi5raW5kLCAvLyBraW5kXG4gICAgICAgIHRva2VuLmFkZHJlc3NDb2luIC8vIGFkZHJlc3NDb2luXG4gICAgICApO1xuICAgIGNhc2UgJ2FzaSc6XG4gICAgY2FzZSAnYXRvbSc6XG4gICAgY2FzZSAnYmFieSc6XG4gICAgY2FzZSAnYmxkJzpcbiAgICBjYXNlICdjb3JldW0nOlxuICAgIGNhc2UgJ2Nyb25vcyc6XG4gICAgY2FzZSAnaGFzaCc6XG4gICAgY2FzZSAnaW5qZWN0aXZlJzpcbiAgICBjYXNlICdpbml0aWEnOlxuICAgIGNhc2UgJ29zbW8nOlxuICAgIGNhc2UgJ3Rob3InOlxuICAgIGNhc2UgJ3NlaSc6XG4gICAgY2FzZSAndGlhJzpcbiAgICBjYXNlICd6ZXRhJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCAzKSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lXG4gICAgICAgIHRva2VuLmRlbm9tLCAvLyBkZW5vbVxuICAgICAgICB0b2tlbi5kZWNpbWFsUGxhY2VzLCAvLyBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLm5ldHdvcmssIC8vIG5ldHdvcmtcbiAgICAgICAgdG9rZW4uYmFzZVVuaXQsIC8vIGJhc2VVbml0XG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCwgOCksIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXhcbiAgICAgICAgdG9rZW4ucHJpbWFyeUtleUN1cnZlIC8vIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcbiAgICBjYXNlICdhZGEnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4uYXNzZXROYW1lLFxuICAgICAgICB0b2tlbi5wb2xpY3lJZCxcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzLFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcbiAgICBjYXNlICd0b24nOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzLCAvLyBjb250cmFjdEFkZHJlc3NcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QXB0VG9rZW5Jbml0aWFsaXplcih0b2tlbjogQW1zVG9rZW5Db25maWcpIHtcbiAgaWYgKHRva2VuLmFzc2V0SWQpIHtcbiAgICAvLyB1c2VkIGZvciBmdW5naWJsZS1hc3NldHMgLyBsZWdhY3kgY29pbnMgZXRjLlxuICAgIHJldHVybiB7XG4gICAgICBpbml0RnVuYzogYXB0VG9rZW4gYXMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gUmVhZG9ubHk8QmFzZUNvaW4+LFxuICAgICAgb2JqZWN0SWQ6IHRva2VuLmFzc2V0SWQsXG4gICAgfTtcbiAgfVxuICAvLyB1c2VkIGZvciBub24tZnVuZ2libGUgdG9rZW4gKE5GVCkgY29sbGVjdGlvbnNcbiAgcmV0dXJuIHtcbiAgICBpbml0RnVuYzogYXB0TkZUQ29sbGVjdGlvbiBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBSZWFkb25seTxCYXNlQ29pbj4sXG4gICAgb2JqZWN0SWQ6IHRva2VuLm5mdENvbGxlY3Rpb25JZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VmV0VG9rZW5Jbml0aWFsaXplcih0b2tlbjogQW1zVG9rZW5Db25maWcpIHtcbiAgaWYgKHRva2VuLm5mdENvbGxlY3Rpb25JZCkge1xuICAgIHJldHVybiB7XG4gICAgICB2ZXRJbml0RnVuYzogdmV0TkZUQ29sbGVjdGlvbiBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBSZWFkb25seTxCYXNlQ29pbj4sXG4gICAgICB2ZXRPYmplY3RJZDogdG9rZW4ubmZ0Q29sbGVjdGlvbklkLFxuICAgICAgaXNORlQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdmV0SW5pdEZ1bmM6IHZldFRva2VuIGFzICguLi5hcmdzOiB1bmtub3duW10pID0+IFJlYWRvbmx5PEJhc2VDb2luPixcbiAgICB2ZXRPYmplY3RJZDogdG9rZW4uY29udHJhY3RBZGRyZXNzLFxuICAgIGlzTkZUOiBmYWxzZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29pblByZXNlbnRJbkNvaW5NYXAoeyBuYW1lLCBpZCwgYWxpYXMgfTogeyBuYW1lOiBzdHJpbmc7IGlkPzogc3RyaW5nOyBhbGlhcz86IHN0cmluZyB9KTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKGNvaW5zLmhhcyhuYW1lKSB8fCAoaWQgJiYgY29pbnMuaGFzKGlkKSkgfHwgKGFsaWFzICYmIGNvaW5zLmhhcyhhbGlhcykpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRva2VuTWFwVXNpbmdDb25maWdEZXRhaWxzKHRva2VuQ29uZmlnTWFwOiBSZWNvcmQ8c3RyaW5nLCBBbXNUb2tlbkNvbmZpZ1tdPik6IENvaW5NYXAge1xuICBjb25zdCBCYXNlQ29pbnM6IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3QgbmZ0QW5kT3RoZXJUb2tlbnMgPSBuZXcgU2V0KFtcbiAgICAnZXJjNzIxOmJzY3Rva2VuJyxcbiAgICAndGVyYzcyMTpic2N0b2tlbicsXG4gICAgJ2VyYzExNTU6YnNjdG9rZW4nLFxuICAgICd0ZXJjMTE1NTpic2N0b2tlbicsXG4gICAgJ2VyYzcyMTp3aXRjaCcsXG4gICAgJ2VyYzcyMTp0b2tlbicsXG4gICAgJ2VyYzExNTU6dG9rZW4nLFxuICAgICdub25zdGFuZGFyZDp0b2tlbicsXG4gICAgJ3RlcmM3MjE6dG9rZW4nLFxuICAgICd0ZXJjMTE1NTp0b2tlbicsXG4gICAgJ3Rub25zdGFuZGFyZDp0b2tlbicsXG4gICAgJ3RlcmM3MjE6Yml0Z29lcmM3MjEnLFxuICAgICd0ZXJjMTE1NTpiaXRnb2VyYzExNTUnLFxuICAgICd0ZXJjNzIxOmhvb2RpZGonLFxuICAgICdlcmM3MjE6cG9seWdvbnRva2VuJyxcbiAgICAnZXJjMTE1NTpwb2x5Z29udG9rZW4nLFxuICAgICd0ZXJjNzIxOnBvbHlnb250b2tlbicsXG4gICAgJ3RlcmMxMTU1OnBvbHlnb250b2tlbicsXG4gICAgJ2VyYzcyMTpzb25laXVtdG9rZW4nLFxuICAgICdlcmMxMTU1OnNvbmVpdW10b2tlbicsXG4gICAgJ3RlcmM3MjE6c29uZWl1bXRva2VuJyxcbiAgICAndGVyYzExNTU6c29uZWl1bXRva2VuJyxcbiAgXSk7XG5cbiAgLy8gQWRkIGFsbCB0aGUgY29pbnMgZnJvbSBzdGF0aWNzIGNvaW4gbWFwIGZpcnN0XG4gIGNvaW5zLmZvckVhY2goKGNvaW4sIGNvaW5OYW1lKSA9PiB7XG4gICAgQmFzZUNvaW5zLnNldChjb2luTmFtZSwgY29pbik7XG4gIH0pO1xuXG4gIC8vIGFkZCB0aGUgdG9rZW5zIG5vdCBwcmVzZW50IGluIHRoZSBzdGF0aWMgY29pbiBtYXBcbiAgZm9yIChjb25zdCB0b2tlbkNvbmZpZ3Mgb2YgT2JqZWN0LnZhbHVlcyh0b2tlbkNvbmZpZ01hcCkpIHtcbiAgICBjb25zdCB0b2tlbkNvbmZpZyA9IHRva2VuQ29uZmlnc1swXTtcblxuICAgIGlmIChcbiAgICAgICFpc0NvaW5QcmVzZW50SW5Db2luTWFwKHsgLi4udG9rZW5Db25maWcgfSkgJiZcbiAgICAgIHRva2VuQ29uZmlnLmlzVG9rZW4gJiZcbiAgICAgICFuZnRBbmRPdGhlclRva2Vucy5oYXModG9rZW5Db25maWcubmFtZSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHRva2VuID0gY3JlYXRlVG9rZW4odG9rZW5Db25maWcpO1xuICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgIEJhc2VDb2lucy5zZXQodG9rZW4ubmFtZSwgdG9rZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBDb2luTWFwLmZyb21Db2lucyhBcnJheS5mcm9tKEJhc2VDb2lucy52YWx1ZXMoKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW5NYXBVc2luZ1RyaW1tZWRDb25maWdEZXRhaWxzKFxuICByZWR1Y2VkVG9rZW5Db25maWdNYXA6IFJlY29yZDxzdHJpbmcsIFRyaW1tZWRBbXNUb2tlbkNvbmZpZ1tdPlxuKTogQ29pbk1hcCB7XG4gIGNvbnN0IGFtc1Rva2VuQ29uZmlnTWFwOiBSZWNvcmQ8c3RyaW5nLCBBbXNUb2tlbkNvbmZpZ1tdPiA9IHt9O1xuICBjb25zdCBuZXR3b3JrTmFtZU1hcCA9IG5ldyBNYXAoXG4gICAgT2JqZWN0LnZhbHVlcyhOZXR3b3JrcykuZmxhdE1hcCgobmV0d29ya1R5cGUpID0+XG4gICAgICBPYmplY3QudmFsdWVzKG5ldHdvcmtUeXBlKS5tYXAoKG5ldHdvcmspID0+IFtuZXR3b3JrLm5hbWUsIG5ldHdvcmtdKVxuICAgIClcbiAgKTtcblxuICBmb3IgKGNvbnN0IHRva2VuQ29uZmlncyBvZiBPYmplY3QudmFsdWVzKHJlZHVjZWRUb2tlbkNvbmZpZ01hcCkpIHtcbiAgICBjb25zdCB0b2tlbkNvbmZpZyA9IHRva2VuQ29uZmlnc1swXTtcbiAgICBjb25zdCBuZXR3b3JrID0gbmV0d29ya05hbWVNYXAuZ2V0KHRva2VuQ29uZmlnLm5ldHdvcmsubmFtZSk7XG4gICAgaWYgKFxuICAgICAgIWlzQ29pblByZXNlbnRJbkNvaW5NYXAoeyAuLi50b2tlbkNvbmZpZyB9KSAmJlxuICAgICAgbmV0d29yayAmJlxuICAgICAgdG9rZW5Db25maWcuaXNUb2tlbiAmJlxuICAgICAgbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnNbbmV0d29yay5mYW1pbHldXG4gICAgKSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IG5ldyBTZXQoW1xuICAgICAgICAuLi4obmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnNbbmV0d29yay5mYW1pbHldIHx8IFtdKSxcbiAgICAgICAgLi4uKHRva2VuQ29uZmlnLmFkZGl0aW9uYWxGZWF0dXJlcyB8fCBbXSksXG4gICAgICBdKTtcbiAgICAgIHRva2VuQ29uZmlnLmV4Y2x1ZGVkRmVhdHVyZXM/LmZvckVhY2goKGZlYXR1cmUpID0+IGZlYXR1cmVzLmRlbGV0ZShmZWF0dXJlKSk7XG4gICAgICBhbXNUb2tlbkNvbmZpZ01hcFt0b2tlbkNvbmZpZy5uYW1lXSA9IFt7IC4uLnRva2VuQ29uZmlnLCBmZWF0dXJlczogQXJyYXkuZnJvbShmZWF0dXJlcyksIG5ldHdvcmsgfV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVRva2VuTWFwVXNpbmdDb25maWdEZXRhaWxzKGFtc1Rva2VuQ29uZmlnTWFwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRva2VuVXNpbmdUcmltbWVkQ29uZmlnRGV0YWlscyhcbiAgdG9rZW5Db25maWc6IFRyaW1tZWRBbXNUb2tlbkNvbmZpZ1xuKTogUmVhZG9ubHk8QmFzZUNvaW4+IHwgdW5kZWZpbmVkIHtcbiAgbGV0IGZ1bGxUb2tlbkNvbmZpZzogQW1zVG9rZW5Db25maWcgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IG5ldHdvcmtOYW1lTWFwID0gbmV3IE1hcChcbiAgICBPYmplY3QudmFsdWVzKE5ldHdvcmtzKS5mbGF0TWFwKChuZXR3b3JrVHlwZSkgPT5cbiAgICAgIE9iamVjdC52YWx1ZXMobmV0d29ya1R5cGUpLm1hcCgobmV0d29yaykgPT4gW25ldHdvcmsubmFtZSwgbmV0d29ya10pXG4gICAgKVxuICApO1xuICBjb25zdCBuZXR3b3JrID0gbmV0d29ya05hbWVNYXAuZ2V0KHRva2VuQ29uZmlnLm5ldHdvcmsubmFtZSk7XG4gIGlmIChcbiAgICAhaXNDb2luUHJlc2VudEluQ29pbk1hcCh7IC4uLnRva2VuQ29uZmlnIH0pICYmXG4gICAgbmV0d29yayAmJlxuICAgIHRva2VuQ29uZmlnLmlzVG9rZW4gJiZcbiAgICBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2Vuc1tuZXR3b3JrLmZhbWlseV1cbiAgKSB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSBuZXcgU2V0KFtcbiAgICAgIC4uLihuZXR3b3JrRmVhdHVyZU1hcEZvclRva2Vuc1tuZXR3b3JrLmZhbWlseV0gfHwgW10pLFxuICAgICAgLi4uKHRva2VuQ29uZmlnLmFkZGl0aW9uYWxGZWF0dXJlcyB8fCBbXSksXG4gICAgXSk7XG4gICAgdG9rZW5Db25maWcuZXhjbHVkZWRGZWF0dXJlcz8uZm9yRWFjaCgoZmVhdHVyZSkgPT4gZmVhdHVyZXMuZGVsZXRlKGZlYXR1cmUpKTtcbiAgICBmdWxsVG9rZW5Db25maWcgPSB7IC4uLnRva2VuQ29uZmlnLCBmZWF0dXJlczogQXJyYXkuZnJvbShmZWF0dXJlcyksIG5ldHdvcmsgfSBhcyBBbXNUb2tlbkNvbmZpZztcbiAgICByZXR1cm4gY3JlYXRlVG9rZW4oZnVsbFRva2VuQ29uZmlnKTtcbiAgfVxufVxuIl19
|
package/dist/src/errors.d.ts
CHANGED
|
@@ -33,5 +33,8 @@ export declare class InvalidDomainError extends BitGoStaticsError {
|
|
|
33
33
|
export declare class ConflictingCoinFeaturesError extends BitGoStaticsError {
|
|
34
34
|
constructor(coinName: string, conflictingFeatures: CoinFeature[]);
|
|
35
35
|
}
|
|
36
|
+
export declare class ChainIdNotFoundError extends BitGoStaticsError {
|
|
37
|
+
constructor(chainId: number);
|
|
38
|
+
}
|
|
36
39
|
export {};
|
|
37
40
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/src/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,cAAM,iBAAkB,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAKnC;AAED,qBAAa,mBAAoB,SAAQ,iBAAiB;gBACrC,QAAQ,EAAE,MAAM;CAIpC;AAED,qBAAa,4BAA6B,SAAQ,iBAAiB;gBAC9C,QAAQ,EAAE,MAAM;CAIpC;AAED,qBAAa,8BAA+B,SAAQ,iBAAiB;gBAChD,EAAE,EAAE,MAAM;CAI9B;AAED,qBAAa,0BAA2B,SAAQ,iBAAiB;gBAC5C,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;CAI1D;AAED,qBAAa,+BAAgC,SAAQ,iBAAiB;gBACjD,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE;CAIpE;AAED,qBAAa,cAAe,SAAQ,iBAAiB;gBAChC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;CAIhD;AAED,qBAAa,2BAA4B,SAAQ,iBAAiB;gBAC7C,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;CAI7D;AAED,qBAAa,kBAAmB,SAAQ,iBAAiB;gBACpC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIpD;AAED,qBAAa,4BAA6B,SAAQ,iBAAiB;gBAC9C,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE;CAMxE"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,cAAM,iBAAkB,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAKnC;AAED,qBAAa,mBAAoB,SAAQ,iBAAiB;gBACrC,QAAQ,EAAE,MAAM;CAIpC;AAED,qBAAa,4BAA6B,SAAQ,iBAAiB;gBAC9C,QAAQ,EAAE,MAAM;CAIpC;AAED,qBAAa,8BAA+B,SAAQ,iBAAiB;gBAChD,EAAE,EAAE,MAAM;CAI9B;AAED,qBAAa,0BAA2B,SAAQ,iBAAiB;gBAC5C,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;CAI1D;AAED,qBAAa,+BAAgC,SAAQ,iBAAiB;gBACjD,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE;CAIpE;AAED,qBAAa,cAAe,SAAQ,iBAAiB;gBAChC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;CAIhD;AAED,qBAAa,2BAA4B,SAAQ,iBAAiB;gBAC7C,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;CAI7D;AAED,qBAAa,kBAAmB,SAAQ,iBAAiB;gBACpC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIpD;AAED,qBAAa,4BAA6B,SAAQ,iBAAiB;gBAC9C,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE;CAMxE;AAED,qBAAa,oBAAqB,SAAQ,iBAAiB;gBACtC,OAAO,EAAE,MAAM;CAInC"}
|
package/dist/src/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConflictingCoinFeaturesError = exports.InvalidDomainError = exports.InvalidContractAddressError = exports.InvalidIdError = exports.MissingRequiredCoinFeatureError = exports.DisallowedCoinFeatureError = exports.DuplicateCoinIdDefinitionError = exports.DuplicateCoinDefinitionError = exports.CoinNotDefinedError = void 0;
|
|
3
|
+
exports.ChainIdNotFoundError = exports.ConflictingCoinFeaturesError = exports.InvalidDomainError = exports.InvalidContractAddressError = exports.InvalidIdError = exports.MissingRequiredCoinFeatureError = exports.DisallowedCoinFeatureError = exports.DuplicateCoinIdDefinitionError = exports.DuplicateCoinDefinitionError = exports.CoinNotDefinedError = void 0;
|
|
4
4
|
class BitGoStaticsError extends Error {
|
|
5
5
|
constructor(message) {
|
|
6
6
|
super(message);
|
|
@@ -71,4 +71,11 @@ class ConflictingCoinFeaturesError extends BitGoStaticsError {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
exports.ConflictingCoinFeaturesError = ConflictingCoinFeaturesError;
|
|
74
|
-
|
|
74
|
+
class ChainIdNotFoundError extends BitGoStaticsError {
|
|
75
|
+
constructor(chainId) {
|
|
76
|
+
super(`chain '${chainId}' not found`);
|
|
77
|
+
Object.setPrototypeOf(this, CoinNotDefinedError.prototype);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.ChainIdNotFoundError = ChainIdNotFoundError;
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxNQUFNLGlCQUFrQixTQUFRLEtBQUs7SUFDbkMsWUFBbUIsT0FBZTtRQUNoQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN0QyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0Y7QUFFRCxNQUFhLG1CQUFvQixTQUFRLGlCQUFpQjtJQUN4RCxZQUFtQixRQUFnQjtRQUNqQyxLQUFLLENBQUMsU0FBUyxRQUFRLGtCQUFrQixDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBTEQsa0RBS0M7QUFFRCxNQUFhLDRCQUE2QixTQUFRLGlCQUFpQjtJQUNqRSxZQUFtQixRQUFnQjtRQUNqQyxLQUFLLENBQUMsU0FBUyxRQUFRLHNCQUFzQixDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUNGO0FBTEQsb0VBS0M7QUFFRCxNQUFhLDhCQUErQixTQUFRLGlCQUFpQjtJQUNuRSxZQUFtQixFQUFVO1FBQzNCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLDhCQUE4QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRjtBQUxELHdFQUtDO0FBRUQsTUFBYSwwQkFBMkIsU0FBUSxpQkFBaUI7SUFDL0QsWUFBbUIsUUFBZ0IsRUFBRSxPQUFvQjtRQUN2RCxLQUFLLENBQUMsaUJBQWlCLE9BQU8sNEJBQTRCLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDdkUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNGO0FBTEQsZ0VBS0M7QUFFRCxNQUFhLCtCQUFnQyxTQUFRLGlCQUFpQjtJQUNwRSxZQUFtQixRQUFnQixFQUFFLGVBQThCO1FBQ2pFLEtBQUssQ0FBQyw2QkFBNkIsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDdkcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsK0JBQStCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUNGO0FBTEQsMEVBS0M7QUFFRCxNQUFhLGNBQWUsU0FBUSxpQkFBaUI7SUFDbkQsWUFBbUIsUUFBZ0IsRUFBRSxFQUFVO1FBQzdDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDckQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FDRjtBQUxELHdDQUtDO0FBRUQsTUFBYSwyQkFBNEIsU0FBUSxpQkFBaUI7SUFDaEUsWUFBbUIsUUFBZ0IsRUFBRSxlQUF1QjtRQUMxRCxLQUFLLENBQUMsNkJBQTZCLGVBQWUsZUFBZSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDRjtBQUxELGtFQUtDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxpQkFBaUI7SUFDdkQsWUFBbUIsUUFBZ0IsRUFBRSxNQUFjO1FBQ2pELEtBQUssQ0FBQyxtQkFBbUIsTUFBTSxlQUFlLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDM0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGO0FBTEQsZ0RBS0M7QUFFRCxNQUFhLDRCQUE2QixTQUFRLGlCQUFpQjtJQUNqRSxZQUFtQixRQUFnQixFQUFFLG1CQUFrQztRQUNyRSxLQUFLLENBQ0gsNkJBQTZCLFFBQVEsNkNBQTZDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNuSCxDQUFDO1FBQ0YsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUNGO0FBUEQsb0VBT0M7QUFFRCxNQUFhLG9CQUFxQixTQUFRLGlCQUFpQjtJQUN6RCxZQUFtQixPQUFlO1FBQ2hDLEtBQUssQ0FBQyxVQUFVLE9BQU8sYUFBYSxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBTEQsb0RBS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVhY2ggc3ViY2xhc3MgbmVlZHMgdGhlIGV4cGxpY2l0IE9iamVjdC5zZXRQcm90b3R5cGVPZigpIHNvIHRoYXQgaW5zdGFuY2VvZiB3aWxsIHdvcmsgY29ycmVjdGx5LlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC13aWtpL2Jsb2IvbWFzdGVyL0JyZWFraW5nLUNoYW5nZXMubWQjZXh0ZW5kaW5nLWJ1aWx0LWlucy1saWtlLWVycm9yLWFycmF5LWFuZC1tYXAtbWF5LW5vLWxvbmdlci13b3JrXG4gKi9cbmltcG9ydCB7IENvaW5GZWF0dXJlIH0gZnJvbSAnLi9iYXNlJztcblxuY2xhc3MgQml0R29TdGF0aWNzRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLnN0YWNrID0gbmV3IEVycm9yKG1lc3NhZ2UpLnN0YWNrO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBCaXRHb1N0YXRpY3NFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2luTm90RGVmaW5lZEVycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKGBjb2luICcke2NvaW5OYW1lfScgaXMgbm90IGRlZmluZWRgKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQ29pbk5vdERlZmluZWRFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEdXBsaWNhdGVDb2luRGVmaW5pdGlvbkVycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKGBjb2luICcke2NvaW5OYW1lfScgaXMgYWxyZWFkeSBkZWZpbmVkYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIER1cGxpY2F0ZUNvaW5EZWZpbml0aW9uRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHVwbGljYXRlQ29pbklkRGVmaW5pdGlvbkVycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKGBjb2luIHdpdGggaWQgJyR7aWR9JyBpcyBhbHJlYWR5IGRlZmluZWRgKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgRHVwbGljYXRlQ29pbklkRGVmaW5pdGlvbkVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpc2FsbG93ZWRDb2luRmVhdHVyZUVycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZywgZmVhdHVyZTogQ29pbkZlYXR1cmUpIHtcbiAgICBzdXBlcihgY29pbiBmZWF0dXJlICcke2ZlYXR1cmV9JyBpcyBkaXNhbGxvd2VkIGZvciBjb2luICR7Y29pbk5hbWV9LmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBEaXNhbGxvd2VkQ29pbkZlYXR1cmVFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaXNzaW5nUmVxdWlyZWRDb2luRmVhdHVyZUVycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZywgbWlzc2luZ0ZlYXR1cmVzOiBDb2luRmVhdHVyZVtdKSB7XG4gICAgc3VwZXIoYFJlcXVpcmVkIGNvaW4gZmVhdHVyZShzKSAnJHttaXNzaW5nRmVhdHVyZXMuam9pbignLCAnKX0nIHdlcmUgbm90IGZvdW5kIGZvciBjb2luICR7Y29pbk5hbWV9LmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBNaXNzaW5nUmVxdWlyZWRDb2luRmVhdHVyZUVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRJZEVycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKGBpbnZhbGlkIHV1aWQgJyR7aWR9JyBmb3IgY29pbiAnJHtjb2luTmFtZX0nYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEludmFsaWRJZEVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRDb250cmFjdEFkZHJlc3NFcnJvciBleHRlbmRzIEJpdEdvU3RhdGljc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvaW5OYW1lOiBzdHJpbmcsIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nKSB7XG4gICAgc3VwZXIoYGludmFsaWQgY29udHJhY3QgYWRkcmVzcyAnJHtjb250cmFjdEFkZHJlc3N9JyBmb3IgY29pbiAnJHtjb2luTmFtZX0nYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEludmFsaWRDb250cmFjdEFkZHJlc3NFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkRG9tYWluRXJyb3IgZXh0ZW5kcyBCaXRHb1N0YXRpY3NFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb2luTmFtZTogc3RyaW5nLCBkb21haW46IHN0cmluZykge1xuICAgIHN1cGVyKGBpbnZhbGlkIGRvbWFpbiAnJHtkb21haW59JyBmb3IgY29pbiAnJHtjb2luTmFtZX0nYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEludmFsaWREb21haW5FcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25mbGljdGluZ0NvaW5GZWF0dXJlc0Vycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZywgY29uZmxpY3RpbmdGZWF0dXJlczogQ29pbkZlYXR1cmVbXSkge1xuICAgIHN1cGVyKFxuICAgICAgYGNvaW4gZmVhdHVyZShzKSBmb3IgY29pbiAnJHtjb2luTmFtZX0nIGNhbm5vdCBiZSBib3RoIHJlcXVpcmVkIGFuZCBkaXNhbGxvd2VkOiAke2NvbmZsaWN0aW5nRmVhdHVyZXMuam9pbignLCAnKX1gXG4gICAgKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQ29uZmxpY3RpbmdDb2luRmVhdHVyZXNFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDaGFpbklkTm90Rm91bmRFcnJvciBleHRlbmRzIEJpdEdvU3RhdGljc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNoYWluSWQ6IG51bWJlcikge1xuICAgIHN1cGVyKGBjaGFpbiAnJHtjaGFpbklkfScgbm90IGZvdW5kYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIENvaW5Ob3REZWZpbmVkRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuIl19
|
package/dist/src/map.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare class CoinMap {
|
|
|
5
5
|
private readonly _coinByAliases;
|
|
6
6
|
private readonly _coinByContractAddress;
|
|
7
7
|
private readonly _coinByNftCollectionID;
|
|
8
|
+
private _coinByChainId;
|
|
8
9
|
private constructor();
|
|
9
10
|
static fromCoins(coins: Readonly<BaseCoin>[]): CoinMap;
|
|
10
11
|
addCoin(coin: Readonly<BaseCoin>): void;
|
|
@@ -14,7 +15,12 @@ export declare class CoinMap {
|
|
|
14
15
|
* @param {Readonly<BaseCoin>} coin new coin object
|
|
15
16
|
*/
|
|
16
17
|
replace(coin: Readonly<BaseCoin>): void;
|
|
17
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Hardcoded mapping for backward compatibility.
|
|
20
|
+
*/
|
|
21
|
+
private static readonly LEGACY_CHAIN_ID_MAP;
|
|
22
|
+
private buildChainIdMap;
|
|
23
|
+
coinNameFromChainId(chainId: number): string | undefined;
|
|
18
24
|
/**
|
|
19
25
|
* Override `get` to throw if a coin is missing, instead of returning undefined.
|
|
20
26
|
* It will honor key equivalences in case given key is missing.
|
package/dist/src/map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAKlC,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyC;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyC;IAEpE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyC;IAGxE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyC;IAEhF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyC;IAEhF,OAAO,CAAC,cAAc,CAAoC;IAE1D,OAAO;IAIP,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO;IAQ/C,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;IA0B9C;;;;OAIG;IACI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;IAmB9C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAmFzC;IAEF,OAAO,CAAC,eAAe;IAkBhB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAY/D;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAepC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUzB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE;IAQtE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC;IAQjG,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO;IAUnF,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI7E,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;CAG3E"}
|
package/dist/src/map.js
CHANGED
|
@@ -14,6 +14,8 @@ class CoinMap {
|
|
|
14
14
|
this._coinByContractAddress = new Map();
|
|
15
15
|
// map of coin by NFT collection ID -> the key is the (t)family:nftCollectionID
|
|
16
16
|
this._coinByNftCollectionID = new Map();
|
|
17
|
+
// Lazily initialized cache for chainId to coin name mapping (derived from network definitions)
|
|
18
|
+
this._coinByChainId = null;
|
|
17
19
|
// Do not instantiate
|
|
18
20
|
}
|
|
19
21
|
static fromCoins(coins) {
|
|
@@ -72,84 +74,32 @@ class CoinMap {
|
|
|
72
74
|
}
|
|
73
75
|
this.addCoin(coin);
|
|
74
76
|
}
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
51: 'txdc',
|
|
102
|
-
80094: 'bera',
|
|
103
|
-
80069: 'tbera',
|
|
104
|
-
42220: 'celo',
|
|
105
|
-
11142220: 'tcelo',
|
|
106
|
-
2222: 'kava',
|
|
107
|
-
2221: 'tkava',
|
|
108
|
-
43114: 'avax',
|
|
109
|
-
43113: 'tavax',
|
|
110
|
-
100: 'gno',
|
|
111
|
-
130: 'uni',
|
|
112
|
-
324: 'zketh',
|
|
113
|
-
8453: 'baseeth',
|
|
114
|
-
84532: 'tbaseeth',
|
|
115
|
-
10143: 'tmon',
|
|
116
|
-
480: 'world',
|
|
117
|
-
4801: 'tworld',
|
|
118
|
-
5031: 'somi',
|
|
119
|
-
50312: 'tstt',
|
|
120
|
-
1868: 'soneium',
|
|
121
|
-
1946: 'tsoneium',
|
|
122
|
-
33111: 'tapechain',
|
|
123
|
-
33139: 'apechain',
|
|
124
|
-
688688: 'tphrs',
|
|
125
|
-
102030: 'ctc',
|
|
126
|
-
102031: 'tctc',
|
|
127
|
-
998: 'thypeevm',
|
|
128
|
-
999: 'hypeevm',
|
|
129
|
-
16602: 'tog',
|
|
130
|
-
16661: 'og',
|
|
131
|
-
9746: 'txpl',
|
|
132
|
-
9745: 'xpl',
|
|
133
|
-
14601: 'tsonic',
|
|
134
|
-
146: 'sonic',
|
|
135
|
-
1328: 'tseievm',
|
|
136
|
-
1329: 'seievm',
|
|
137
|
-
1001: 'tkaia',
|
|
138
|
-
8217: 'kaia',
|
|
139
|
-
1270: 'tirys',
|
|
140
|
-
59141: 'tlineaeth',
|
|
141
|
-
59144: 'lineaeth',
|
|
142
|
-
1315: 'tip',
|
|
143
|
-
1514: 'ip',
|
|
144
|
-
545: 'tflow',
|
|
145
|
-
747: 'flow',
|
|
146
|
-
98867: 'tplume',
|
|
147
|
-
98866: 'plume',
|
|
148
|
-
6342: 'tmegaeth',
|
|
149
|
-
295: 'hbarevm',
|
|
150
|
-
296: 'thbarevm',
|
|
151
|
-
};
|
|
152
|
-
return ethLikeCoinFromChainId[chainId];
|
|
77
|
+
buildChainIdMap() {
|
|
78
|
+
const chainIdMap = new Map();
|
|
79
|
+
this._map.forEach((coin, coinName) => {
|
|
80
|
+
// Skip tokens - they share the same chainId as their parent chain
|
|
81
|
+
if (coin.isToken) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const network = coin.network;
|
|
85
|
+
if ('chainId' in network && typeof network.chainId === 'number') {
|
|
86
|
+
const chainId = network.chainId;
|
|
87
|
+
if (!chainIdMap.has(chainId)) {
|
|
88
|
+
chainIdMap.set(chainId, coinName);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return chainIdMap;
|
|
93
|
+
}
|
|
94
|
+
coinNameFromChainId(chainId) {
|
|
95
|
+
const coinName = CoinMap.LEGACY_CHAIN_ID_MAP[chainId];
|
|
96
|
+
if (coinName) {
|
|
97
|
+
return coinName;
|
|
98
|
+
}
|
|
99
|
+
if (this._coinByChainId === null) {
|
|
100
|
+
this._coinByChainId = this.buildChainIdMap();
|
|
101
|
+
}
|
|
102
|
+
return this._coinByChainId.get(chainId);
|
|
153
103
|
}
|
|
154
104
|
/**
|
|
155
105
|
* Override `get` to throw if a coin is missing, instead of returning undefined.
|
|
@@ -206,4 +156,91 @@ class CoinMap {
|
|
|
206
156
|
}
|
|
207
157
|
}
|
|
208
158
|
exports.CoinMap = CoinMap;
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxQ0FBNkc7QUFDN0csdUNBQXFGO0FBRXJGLE1BQWEsT0FBTztJQVdsQjtRQVZpQixTQUFJLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDN0MsZUFBVSxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3BFLDZEQUE2RDtRQUM1QyxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3hFLGtFQUFrRTtRQUNsRSxvR0FBb0c7UUFDbkYsMkJBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDaEYsK0VBQStFO1FBQzlELDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBRzlFLHFCQUFxQjtJQUN2QixDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUEyQjtRQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzlCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUF3QjtRQUNyQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxxQ0FBNEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLHVDQUE4QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxxQ0FBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLElBQUksWUFBWSxxQ0FBMkIsRUFBRSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEYsQ0FBQztpQkFBTSxJQUFJLElBQUksWUFBWSxxQ0FBMkIsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTyxDQUFDLElBQXdCO1FBQ3JDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixJQUFJLE9BQU8sWUFBWSxxQ0FBMkIsRUFBRSxDQUFDO29CQUNuRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztnQkFDckYsQ0FBQztxQkFBTSxJQUFJLE9BQU8sWUFBWSxxQ0FBMkIsRUFBRSxDQUFDO29CQUMxRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBZTtRQUN4QyxNQUFNLHNCQUFzQixHQUEyQjtZQUNyRCxDQUFDLEVBQUUsS0FBSztZQUNSLEVBQUUsRUFBRSxNQUFNO1lBQ1YsQ0FBQyxFQUFFLE9BQU87WUFDVixNQUFNLEVBQUUsT0FBTztZQUNmLEtBQUssRUFBRSxNQUFNO1lBQ2IsS0FBSyxFQUFFLFVBQVU7WUFDakIsR0FBRyxFQUFFLFNBQVM7WUFDZCxFQUFFLEVBQUUsS0FBSztZQUNULEVBQUUsRUFBRSxNQUFNO1lBQ1YsS0FBSyxFQUFFLFFBQVE7WUFDZixNQUFNLEVBQUUsU0FBUztZQUNqQixFQUFFLEVBQUUsT0FBTztZQUNYLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFVBQVU7WUFDaEIsR0FBRyxFQUFFLEtBQUs7WUFDVixJQUFJLEVBQUUsTUFBTTtZQUNaLEVBQUUsRUFBRSxLQUFLO1lBQ1QsR0FBRyxFQUFFLE1BQU07WUFDWCxFQUFFLEVBQUUsS0FBSztZQUNULEVBQUUsRUFBRSxNQUFNO1lBQ1YsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsUUFBUTtZQUNkLEVBQUUsRUFBRSxLQUFLO1lBQ1QsRUFBRSxFQUFFLE1BQU07WUFDVixLQUFLLEVBQUUsTUFBTTtZQUNiLEtBQUssRUFBRSxPQUFPO1lBQ2QsS0FBSyxFQUFFLE1BQU07WUFDYixRQUFRLEVBQUUsT0FBTztZQUNqQixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLE1BQU07WUFDYixLQUFLLEVBQUUsT0FBTztZQUNkLEdBQUcsRUFBRSxLQUFLO1lBQ1YsR0FBRyxFQUFFLEtBQUs7WUFDVixHQUFHLEVBQUUsT0FBTztZQUNaLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSyxFQUFFLFVBQVU7WUFDakIsS0FBSyxFQUFFLE1BQU07WUFDYixHQUFHLEVBQUUsT0FBTztZQUNaLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsTUFBTTtZQUNiLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsS0FBSyxFQUFFLFVBQVU7WUFDakIsTUFBTSxFQUFFLE9BQU87WUFDZixNQUFNLEVBQUUsS0FBSztZQUNiLE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxFQUFFLFVBQVU7WUFDZixHQUFHLEVBQUUsU0FBUztZQUNkLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLElBQUk7WUFDWCxJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxLQUFLO1lBQ1gsS0FBSyxFQUFFLFFBQVE7WUFDZixHQUFHLEVBQUUsT0FBTztZQUNaLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxNQUFNO1lBQ1osSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsV0FBVztZQUNsQixLQUFLLEVBQUUsVUFBVTtZQUNqQixJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxJQUFJO1lBQ1YsR0FBRyxFQUFFLE9BQU87WUFDWixHQUFHLEVBQUUsTUFBTTtZQUNYLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsVUFBVTtZQUNoQixHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxVQUFVO1NBQ2hCLENBQUM7UUFDRixPQUFPLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEdBQUcsQ0FBQyxHQUFXO1FBQ3BCLE1BQU0sSUFBSSxHQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQzVCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdkMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQVc7UUFDcEIsT0FBTyxDQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQzVCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQ3JDLENBQUM7SUFDSixDQUFDO0lBRU0sR0FBRyxDQUFJLE1BQXlEO1FBQ3JFLE1BQU0sU0FBUyxHQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMvQixTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTSxNQUFNLENBQUksT0FBa0UsRUFBRSxZQUFlO1FBQ2xHLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMvQixHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBa0U7UUFDOUUsTUFBTSxZQUFZLEdBQXlCLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMvQixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxRQUE4RDtRQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUF6TkQsMEJBeU5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvciwgQ29pbk5vdERlZmluZWRFcnJvciwgRHVwbGljYXRlQ29pbklkRGVmaW5pdGlvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuLCBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4gfSBmcm9tICcuL2FjY291bnQnO1xuXG5leHBvcnQgY2xhc3MgQ29pbk1hcCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvaW5CeUlkcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIEhvbGRzIGtleSBlcXVpdmFsZW5jZXMgdXNlZCBkdXJpbmcgYW4gYXNzZXQgbmFtZSBtaWdyYXRpb25cbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5QWxpYXNlcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIG1hcCBvZiBjb2luIGJ5IGFkZHJlc3MgLT4gdGhlIGtleSBpcyB0aGUgZmFtaWx5OmNvbnRyYWN0QWRkcmVzc1xuICAvLyB0aGUgZmFtaWx5IGlzIHRoZSB3aGVyZSB0aGUgY29pbiBpcyBlLmcgbDEgY2hhaW5zIGxpa2UgZXRoLCBic2MgZXRjLiBvciBsMiBsaWtlIGFyYmV0aCwgY2VsbyBldGMuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvaW5CeUNvbnRyYWN0QWRkcmVzcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIG1hcCBvZiBjb2luIGJ5IE5GVCBjb2xsZWN0aW9uIElEIC0+IHRoZSBrZXkgaXMgdGhlICh0KWZhbWlseTpuZnRDb2xsZWN0aW9uSURcbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5TmZ0Q29sbGVjdGlvbklEID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIERvIG5vdCBpbnN0YW50aWF0ZVxuICB9XG5cbiAgc3RhdGljIGZyb21Db2lucyhjb2luczogUmVhZG9ubHk8QmFzZUNvaW4+W10pOiBDb2luTWFwIHtcbiAgICBjb25zdCBjb2luTWFwID0gbmV3IENvaW5NYXAoKTtcbiAgICBjb2lucy5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgICBjb2luTWFwLmFkZENvaW4oY29pbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvaW5NYXA7XG4gIH1cblxuICBwdWJsaWMgYWRkQ29pbihjb2luOiBSZWFkb25seTxCYXNlQ29pbj4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWFwLmhhcyhjb2luLm5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvcihjb2luLm5hbWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29pbkJ5SWRzLmhhcyhjb2luLmlkKSkge1xuICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZUNvaW5JZERlZmluaXRpb25FcnJvcihjb2luLmlkKTtcbiAgICB9XG4gICAgY29uc3QgYWxpYXMgPSBjb2luLmFsaWFzO1xuICAgIGlmIChhbGlhcyAmJiB0aGlzLl9jb2luQnlBbGlhc2VzLmhhcyhhbGlhcykpIHtcbiAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVDb2luRGVmaW5pdGlvbkVycm9yKGFsaWFzKTtcbiAgICB9XG4gICAgdGhpcy5fbWFwLnNldChjb2luLm5hbWUsIGNvaW4pO1xuICAgIHRoaXMuX2NvaW5CeUlkcy5zZXQoY29pbi5pZCwgY29pbik7XG4gICAgaWYgKGFsaWFzKSB7XG4gICAgICB0aGlzLl9jb2luQnlBbGlhc2VzLnNldChjb2luLmFsaWFzLCBjb2luKTtcbiAgICB9XG5cbiAgICBpZiAoY29pbi5pc1Rva2VuKSB7XG4gICAgICBpZiAoY29pbiBpbnN0YW5jZW9mIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbikge1xuICAgICAgICB0aGlzLl9jb2luQnlDb250cmFjdEFkZHJlc3Muc2V0KGAke2NvaW4uZmFtaWx5fToke2NvaW4uY29udHJhY3RBZGRyZXNzfWAsIGNvaW4pO1xuICAgICAgfSBlbHNlIGlmIChjb2luIGluc3RhbmNlb2YgTkZUQ29sbGVjdGlvbklkRGVmaW5lZFRva2VuKSB7XG4gICAgICAgIHRoaXMuX2NvaW5CeU5mdENvbGxlY3Rpb25JRC5zZXQoYCR7Y29pbi5wcmVmaXh9JHtjb2luLmZhbWlseX06JHtjb2luLm5mdENvbGxlY3Rpb25JZH1gLCBjb2luKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSBhIEJhc2UgY29pbiBvYmplY3QgY29tcGxldGVseSBmcm9tIHRoZSBDb2luTWFwIHVzaW5nIGl0cyBJRC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBrZXkgdG8gc2VhcmNoIHRoZSBvbGQgY29pbiBvYmplY3RcbiAgICogQHBhcmFtIHtSZWFkb25seTxCYXNlQ29pbj59IGNvaW4gbmV3IGNvaW4gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgcmVwbGFjZShjb2luOiBSZWFkb25seTxCYXNlQ29pbj4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXMoY29pbi5pZCkpIHtcbiAgICAgIGNvbnN0IG9sZENvaW4gPSB0aGlzLmdldChjb2luLmlkKTtcbiAgICAgIHRoaXMuX21hcC5kZWxldGUob2xkQ29pbi5uYW1lKTtcbiAgICAgIHRoaXMuX2NvaW5CeUlkcy5kZWxldGUob2xkQ29pbi5pZCk7XG4gICAgICBpZiAob2xkQ29pbi5hbGlhcykge1xuICAgICAgICB0aGlzLl9jb2luQnlBbGlhc2VzLmRlbGV0ZShvbGRDb2luLmFsaWFzKTtcbiAgICAgIH1cbiAgICAgIGlmIChvbGRDb2luLmlzVG9rZW4pIHtcbiAgICAgICAgaWYgKG9sZENvaW4gaW5zdGFuY2VvZiBDb250cmFjdEFkZHJlc3NEZWZpbmVkVG9rZW4pIHtcbiAgICAgICAgICB0aGlzLl9jb2luQnlDb250cmFjdEFkZHJlc3MuZGVsZXRlKGAke29sZENvaW4uZmFtaWx5fToke29sZENvaW4uY29udHJhY3RBZGRyZXNzfWApO1xuICAgICAgICB9IGVsc2UgaWYgKG9sZENvaW4gaW5zdGFuY2VvZiBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4pIHtcbiAgICAgICAgICB0aGlzLl9jb2luQnlOZnRDb2xsZWN0aW9uSUQuZGVsZXRlKGAke29sZENvaW4ucHJlZml4fSR7b2xkQ29pbi5mYW1pbHl9OiR7b2xkQ29pbi5uZnRDb2xsZWN0aW9uSWR9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5hZGRDb2luKGNvaW4pO1xuICB9XG5cbiAgc3RhdGljIGNvaW5OYW1lRnJvbUNoYWluSWQoY2hhaW5JZDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBldGhMaWtlQ29pbkZyb21DaGFpbklkOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xuICAgICAgMTogJ2V0aCcsXG4gICAgICA0MjogJ3RldGgnLFxuICAgICAgNTogJ2d0ZXRoJyxcbiAgICAgIDU2MDA0ODogJ2h0ZXRoJyxcbiAgICAgIDEwMDAxOiAnZXRodycsXG4gICAgICA4MDAwMjogJ3Rwb2x5Z29uJyxcbiAgICAgIDEzNzogJ3BvbHlnb24nLFxuICAgICAgNTY6ICdic2MnLFxuICAgICAgOTc6ICd0YnNjJyxcbiAgICAgIDQyMTYxOiAnYXJiZXRoJyxcbiAgICAgIDQyMTYxNDogJ3RhcmJldGgnLFxuICAgICAgMTA6ICdvcGV0aCcsXG4gICAgICAxMTE1NTQyMDogJ3RvcGV0aCcsXG4gICAgICAxMTE2OiAnY29yZWRhbycsXG4gICAgICAxMTE0OiAndGNvcmVkYW8nLFxuICAgICAgMjQ4OiAnb2FzJyxcbiAgICAgIDkzNzI6ICd0b2FzJyxcbiAgICAgIDE0OiAnZmxyJyxcbiAgICAgIDExNDogJ3RmbHInLFxuICAgICAgMTk6ICdzZ2InLFxuICAgICAgMTY6ICd0c2diJyxcbiAgICAgIDExMTE6ICd3ZW1peCcsXG4gICAgICAxMTEyOiAndHdlbWl4JyxcbiAgICAgIDUwOiAneGRjJyxcbiAgICAgIDUxOiAndHhkYycsXG4gICAgICA4MDA5NDogJ2JlcmEnLFxuICAgICAgODAwNjk6ICd0YmVyYScsXG4gICAgICA0MjIyMDogJ2NlbG8nLFxuICAgICAgMTExNDIyMjA6ICd0Y2VsbycsXG4gICAgICAyMjIyOiAna2F2YScsXG4gICAgICAyMjIxOiAndGthdmEnLFxuICAgICAgNDMxMTQ6ICdhdmF4JyxcbiAgICAgIDQzMTEzOiAndGF2YXgnLFxuICAgICAgMTAwOiAnZ25vJyxcbiAgICAgIDEzMDogJ3VuaScsXG4gICAgICAzMjQ6ICd6a2V0aCcsXG4gICAgICA4NDUzOiAnYmFzZWV0aCcsXG4gICAgICA4NDUzMjogJ3RiYXNlZXRoJyxcbiAgICAgIDEwMTQzOiAndG1vbicsXG4gICAgICA0ODA6ICd3b3JsZCcsXG4gICAgICA0ODAxOiAndHdvcmxkJyxcbiAgICAgIDUwMzE6ICdzb21pJyxcbiAgICAgIDUwMzEyOiAndHN0dCcsXG4gICAgICAxODY4OiAnc29uZWl1bScsXG4gICAgICAxOTQ2OiAndHNvbmVpdW0nLFxuICAgICAgMzMxMTE6ICd0YXBlY2hhaW4nLFxuICAgICAgMzMxMzk6ICdhcGVjaGFpbicsXG4gICAgICA2ODg2ODg6ICd0cGhycycsXG4gICAgICAxMDIwMzA6ICdjdGMnLFxuICAgICAgMTAyMDMxOiAndGN0YycsXG4gICAgICA5OTg6ICd0aHlwZWV2bScsXG4gICAgICA5OTk6ICdoeXBlZXZtJyxcbiAgICAgIDE2NjAyOiAndG9nJyxcbiAgICAgIDE2NjYxOiAnb2cnLFxuICAgICAgOTc0NjogJ3R4cGwnLFxuICAgICAgOTc0NTogJ3hwbCcsXG4gICAgICAxNDYwMTogJ3Rzb25pYycsXG4gICAgICAxNDY6ICdzb25pYycsXG4gICAgICAxMzI4OiAndHNlaWV2bScsXG4gICAgICAxMzI5OiAnc2VpZXZtJyxcbiAgICAgIDEwMDE6ICd0a2FpYScsXG4gICAgICA4MjE3OiAna2FpYScsXG4gICAgICAxMjcwOiAndGlyeXMnLFxuICAgICAgNTkxNDE6ICd0bGluZWFldGgnLFxuICAgICAgNTkxNDQ6ICdsaW5lYWV0aCcsXG4gICAgICAxMzE1OiAndGlwJyxcbiAgICAgIDE1MTQ6ICdpcCcsXG4gICAgICA1NDU6ICd0ZmxvdycsXG4gICAgICA3NDc6ICdmbG93JyxcbiAgICAgIDk4ODY3OiAndHBsdW1lJyxcbiAgICAgIDk4ODY2OiAncGx1bWUnLFxuICAgICAgNjM0MjogJ3RtZWdhZXRoJyxcbiAgICAgIDI5NTogJ2hiYXJldm0nLFxuICAgICAgMjk2OiAndGhiYXJldm0nLFxuICAgIH07XG4gICAgcmV0dXJuIGV0aExpa2VDb2luRnJvbUNoYWluSWRbY2hhaW5JZF07XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgYGdldGAgdG8gdGhyb3cgaWYgYSBjb2luIGlzIG1pc3NpbmcsIGluc3RlYWQgb2YgcmV0dXJuaW5nIHVuZGVmaW5lZC5cbiAgICogSXQgd2lsbCBob25vciBrZXkgZXF1aXZhbGVuY2VzIGluIGNhc2UgZ2l2ZW4ga2V5IGlzIG1pc3NpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHJldHVybiB7QmFzZUNvaW59XG4gICAqL1xuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogUmVhZG9ubHk8QmFzZUNvaW4+IHtcbiAgICBjb25zdCBjb2luID1cbiAgICAgIHRoaXMuX21hcC5nZXQoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5SWRzLmdldChrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlBbGlhc2VzLmdldChrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlDb250cmFjdEFkZHJlc3MuZ2V0KGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeU5mdENvbGxlY3Rpb25JRC5nZXQoa2V5KTtcblxuICAgIGlmIChjb2luKSB7XG4gICAgICByZXR1cm4gY29pbjtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgQ29pbk5vdERlZmluZWRFcnJvcihrZXkpO1xuICB9XG5cbiAgcHVibGljIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl9tYXAuaGFzKGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUlkcy5oYXMoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5QWxpYXNlcy5oYXMoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5Q29udHJhY3RBZGRyZXNzLmhhcyhrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlOZnRDb2xsZWN0aW9uSUQuaGFzKGtleSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG1hcDxUPihtYXBwZXI6IChjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIGNvaW5OYW1lOiBzdHJpbmcpID0+IFQpOiBUW10ge1xuICAgIGNvbnN0IG1hcFJlc3VsdDogVFtdID0gW107XG4gICAgdGhpcy5fbWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIG1hcFJlc3VsdC5wdXNoKG1hcHBlcih2YWx1ZSwga2V5KSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG1hcFJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyByZWR1Y2U8VD4ocmVkdWNlcjogKGFjYzogVCwgY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LCBjb2luTmFtZTogc3RyaW5nKSA9PiBULCBpbml0aWFsVmFsdWU6IFQpOiBUIHtcbiAgICBsZXQgYWNjID0gaW5pdGlhbFZhbHVlO1xuICAgIHRoaXMuX21hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBhY2MgPSByZWR1Y2VyKGFjYywgdmFsdWUsIGtleSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjYztcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXIocHJlZGljYXRlOiAoY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LCBjb2luTmFtZTogc3RyaW5nKSA9PiBib29sZWFuKTogQ29pbk1hcCB7XG4gICAgY29uc3QgZmlsdGVyUmVzdWx0OiBSZWFkb25seTxCYXNlQ29pbj5bXSA9IFtdO1xuICAgIHRoaXMuX21hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBrZXkpKSB7XG4gICAgICAgIGZpbHRlclJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQ29pbk1hcC5mcm9tQ29pbnMoZmlsdGVyUmVzdWx0KTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JFYWNoKGNhbGxiYWNrOiAoY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LCBjb2luTmFtZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fbWFwLmZvckVhY2goY2FsbGJhY2spO1xuICB9XG5cbiAgcHVibGljIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgUmVhZG9ubHk8QmFzZUNvaW4+XT4ge1xuICAgIHJldHVybiB0aGlzLl9tYXBbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICB9XG59XG4iXX0=
|
|
159
|
+
/**
|
|
160
|
+
* Hardcoded mapping for backward compatibility.
|
|
161
|
+
*/
|
|
162
|
+
CoinMap.LEGACY_CHAIN_ID_MAP = {
|
|
163
|
+
1: 'eth',
|
|
164
|
+
42: 'teth',
|
|
165
|
+
5: 'gteth',
|
|
166
|
+
560048: 'hteth',
|
|
167
|
+
10001: 'ethw',
|
|
168
|
+
80002: 'tpolygon',
|
|
169
|
+
137: 'polygon',
|
|
170
|
+
56: 'bsc',
|
|
171
|
+
97: 'tbsc',
|
|
172
|
+
42161: 'arbeth',
|
|
173
|
+
421614: 'tarbeth',
|
|
174
|
+
10: 'opeth',
|
|
175
|
+
11155420: 'topeth',
|
|
176
|
+
1116: 'coredao',
|
|
177
|
+
1114: 'tcoredao',
|
|
178
|
+
248: 'oas',
|
|
179
|
+
9372: 'toas',
|
|
180
|
+
14: 'flr',
|
|
181
|
+
114: 'tflr',
|
|
182
|
+
19: 'sgb',
|
|
183
|
+
16: 'tsgb',
|
|
184
|
+
1111: 'wemix',
|
|
185
|
+
1112: 'twemix',
|
|
186
|
+
50: 'xdc',
|
|
187
|
+
51: 'txdc',
|
|
188
|
+
80094: 'bera',
|
|
189
|
+
80069: 'tbera',
|
|
190
|
+
42220: 'celo',
|
|
191
|
+
11142220: 'tcelo',
|
|
192
|
+
2222: 'kava',
|
|
193
|
+
2221: 'tkava',
|
|
194
|
+
43114: 'avax',
|
|
195
|
+
43113: 'tavax',
|
|
196
|
+
100: 'gno',
|
|
197
|
+
130: 'uni',
|
|
198
|
+
324: 'zketh',
|
|
199
|
+
8453: 'baseeth',
|
|
200
|
+
84532: 'tbaseeth',
|
|
201
|
+
30143: 'mon',
|
|
202
|
+
10143: 'tmon',
|
|
203
|
+
480: 'world',
|
|
204
|
+
4801: 'tworld',
|
|
205
|
+
5031: 'somi',
|
|
206
|
+
50312: 'tstt',
|
|
207
|
+
1868: 'soneium',
|
|
208
|
+
1946: 'tsoneium',
|
|
209
|
+
33111: 'tapechain',
|
|
210
|
+
33139: 'apechain',
|
|
211
|
+
688688: 'tphrs',
|
|
212
|
+
102030: 'ctc',
|
|
213
|
+
102031: 'tctc',
|
|
214
|
+
998: 'thypeevm',
|
|
215
|
+
999: 'hypeevm',
|
|
216
|
+
16602: 'tog',
|
|
217
|
+
16661: 'og',
|
|
218
|
+
9746: 'txpl',
|
|
219
|
+
9745: 'xpl',
|
|
220
|
+
14601: 'tsonic',
|
|
221
|
+
146: 'sonic',
|
|
222
|
+
1328: 'tseievm',
|
|
223
|
+
1329: 'seievm',
|
|
224
|
+
1001: 'tkaia',
|
|
225
|
+
8217: 'kaia',
|
|
226
|
+
1270: 'tirys',
|
|
227
|
+
59141: 'tlineaeth',
|
|
228
|
+
59144: 'lineaeth',
|
|
229
|
+
1315: 'tip',
|
|
230
|
+
1514: 'ip',
|
|
231
|
+
545: 'tflow',
|
|
232
|
+
747: 'flow',
|
|
233
|
+
98867: 'tplume',
|
|
234
|
+
98866: 'plume',
|
|
235
|
+
6342: 'tmegaeth',
|
|
236
|
+
295: 'hbarevm',
|
|
237
|
+
296: 'thbarevm',
|
|
238
|
+
196: 'okb',
|
|
239
|
+
1952: 'tokb',
|
|
240
|
+
5734951: 'jovayeth',
|
|
241
|
+
2019775: 'tjovayeth',
|
|
242
|
+
5042002: 'tarc',
|
|
243
|
+
42428: 'tempo',
|
|
244
|
+
42429: 'ttempo',
|
|
245
|
+
};
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxQ0FBNkc7QUFDN0csdUNBQXFGO0FBR3JGLE1BQWEsT0FBTztJQWFsQjtRQVppQixTQUFJLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDN0MsZUFBVSxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3BFLDZEQUE2RDtRQUM1QyxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3hFLGtFQUFrRTtRQUNsRSxvR0FBb0c7UUFDbkYsMkJBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDaEYsK0VBQStFO1FBQzlELDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ2hGLCtGQUErRjtRQUN2RixtQkFBYyxHQUErQixJQUFJLENBQUM7UUFHeEQscUJBQXFCO0lBQ3ZCLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQTJCO1FBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3JCLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU0sT0FBTyxDQUFDLElBQXdCO1FBQ3JDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLHFDQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxN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SSxFQUFFLFFBQVE7SUFDZCxJQUFJLEVBQUUsT0FBTztJQUNiLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE9BQU87SUFDYixLQUFLLEVBQUUsV0FBVztJQUNsQixLQUFLLEVBQUUsVUFBVTtJQUNqQixJQUFJLEVBQUUsS0FBSztJQUNYLElBQUksRUFBRSxJQUFJO0lBQ1YsR0FBRyxFQUFFLE9BQU87SUFDWixHQUFHLEVBQUUsTUFBTTtJQUNYLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsVUFBVTtJQUNoQixHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxVQUFVO0lBQ2YsR0FBRyxFQUFFLEtBQUs7SUFDVixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxVQUFVO0lBQ25CLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLE9BQU8sRUFBRSxNQUFNO0lBQ2YsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsUUFBUTtDQUNoQixBQW5GMEMsQ0FtRnpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvciwgQ29pbk5vdERlZmluZWRFcnJvciwgRHVwbGljYXRlQ29pbklkRGVmaW5pdGlvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuLCBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4gfSBmcm9tICcuL2FjY291bnQnO1xuaW1wb3J0IHsgRXRoZXJldW1OZXR3b3JrIH0gZnJvbSAnLi9uZXR3b3Jrcyc7XG5cbmV4cG9ydCBjbGFzcyBDb2luTWFwIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFwID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5SWRzID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgLy8gSG9sZHMga2V5IGVxdWl2YWxlbmNlcyB1c2VkIGR1cmluZyBhbiBhc3NldCBuYW1lIG1pZ3JhdGlvblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2luQnlBbGlhc2VzID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgLy8gbWFwIG9mIGNvaW4gYnkgYWRkcmVzcyAtPiB0aGUga2V5IGlzIHRoZSBmYW1pbHk6Y29udHJhY3RBZGRyZXNzXG4gIC8vIHRoZSBmYW1pbHkgaXMgdGhlIHdoZXJlIHRoZSBjb2luIGlzIGUuZyBsMSBjaGFpbnMgbGlrZSBldGgsIGJzYyBldGMuIG9yIGwyIGxpa2UgYXJiZXRoLCBjZWxvIGV0Yy5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5Q29udHJhY3RBZGRyZXNzID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgLy8gbWFwIG9mIGNvaW4gYnkgTkZUIGNvbGxlY3Rpb24gSUQgLT4gdGhlIGtleSBpcyB0aGUgKHQpZmFtaWx5Om5mdENvbGxlY3Rpb25JRFxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2luQnlOZnRDb2xsZWN0aW9uSUQgPSBuZXcgTWFwPHN0cmluZywgUmVhZG9ubHk8QmFzZUNvaW4+PigpO1xuICAvLyBMYXppbHkgaW5pdGlhbGl6ZWQgY2FjaGUgZm9yIGNoYWluSWQgdG8gY29pbiBuYW1lIG1hcHBpbmcgKGRlcml2ZWQgZnJvbSBuZXR3b3JrIGRlZmluaXRpb25zKVxuICBwcml2YXRlIF9jb2luQnlDaGFpbklkOiBNYXA8bnVtYmVyLCBzdHJpbmc+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBEbyBub3QgaW5zdGFudGlhdGVcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQ29pbnMoY29pbnM6IFJlYWRvbmx5PEJhc2VDb2luPltdKTogQ29pbk1hcCB7XG4gICAgY29uc3QgY29pbk1hcCA9IG5ldyBDb2luTWFwKCk7XG4gICAgY29pbnMuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgICAgY29pbk1hcC5hZGRDb2luKGNvaW4pO1xuICAgIH0pO1xuICAgIHJldHVybiBjb2luTWFwO1xuICB9XG5cbiAgcHVibGljIGFkZENvaW4oY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX21hcC5oYXMoY29pbi5uYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZUNvaW5EZWZpbml0aW9uRXJyb3IoY29pbi5uYW1lKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2NvaW5CeUlkcy5oYXMoY29pbi5pZCkpIHtcbiAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVDb2luSWREZWZpbml0aW9uRXJyb3IoY29pbi5pZCk7XG4gICAgfVxuICAgIGNvbnN0IGFsaWFzID0gY29pbi5hbGlhcztcbiAgICBpZiAoYWxpYXMgJiYgdGhpcy5fY29pbkJ5QWxpYXNlcy5oYXMoYWxpYXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvcihhbGlhcyk7XG4gICAgfVxuICAgIHRoaXMuX21hcC5zZXQoY29pbi5uYW1lLCBjb2luKTtcbiAgICB0aGlzLl9jb2luQnlJZHMuc2V0KGNvaW4uaWQsIGNvaW4pO1xuICAgIGlmIChhbGlhcykge1xuICAgICAgdGhpcy5fY29pbkJ5QWxpYXNlcy5zZXQoY29pbi5hbGlhcywgY29pbik7XG4gICAgfVxuXG4gICAgaWYgKGNvaW4uaXNUb2tlbikge1xuICAgICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBDb250cmFjdEFkZHJlc3NEZWZpbmVkVG9rZW4pIHtcbiAgICAgICAgdGhpcy5fY29pbkJ5Q29udHJhY3RBZGRyZXNzLnNldChgJHtjb2luLmZhbWlseX06JHtjb2luLmNvbnRyYWN0QWRkcmVzc31gLCBjb2luKTtcbiAgICAgIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIE5GVENvbGxlY3Rpb25JZERlZmluZWRUb2tlbikge1xuICAgICAgICB0aGlzLl9jb2luQnlOZnRDb2xsZWN0aW9uSUQuc2V0KGAke2NvaW4ucHJlZml4fSR7Y29pbi5mYW1pbHl9OiR7Y29pbi5uZnRDb2xsZWN0aW9uSWR9YCwgY29pbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgYSBCYXNlIGNvaW4gb2JqZWN0IGNvbXBsZXRlbHkgZnJvbSB0aGUgQ29pbk1hcCB1c2luZyBpdHMgSUQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkga2V5IHRvIHNlYXJjaCB0aGUgb2xkIGNvaW4gb2JqZWN0XG4gICAqIEBwYXJhbSB7UmVhZG9ubHk8QmFzZUNvaW4+fSBjb2luIG5ldyBjb2luIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHJlcGxhY2UoY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzKGNvaW4uaWQpKSB7XG4gICAgICBjb25zdCBvbGRDb2luID0gdGhpcy5nZXQoY29pbi5pZCk7XG4gICAgICB0aGlzLl9tYXAuZGVsZXRlKG9sZENvaW4ubmFtZSk7XG4gICAgICB0aGlzLl9jb2luQnlJZHMuZGVsZXRlKG9sZENvaW4uaWQpO1xuICAgICAgaWYgKG9sZENvaW4uYWxpYXMpIHtcbiAgICAgICAgdGhpcy5fY29pbkJ5QWxpYXNlcy5kZWxldGUob2xkQ29pbi5hbGlhcyk7XG4gICAgICB9XG4gICAgICBpZiAob2xkQ29pbi5pc1Rva2VuKSB7XG4gICAgICAgIGlmIChvbGRDb2luIGluc3RhbmNlb2YgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuKSB7XG4gICAgICAgICAgdGhpcy5fY29pbkJ5Q29udHJhY3RBZGRyZXNzLmRlbGV0ZShgJHtvbGRDb2luLmZhbWlseX06JHtvbGRDb2luLmNvbnRyYWN0QWRkcmVzc31gKTtcbiAgICAgICAgfSBlbHNlIGlmIChvbGRDb2luIGluc3RhbmNlb2YgTkZUQ29sbGVjdGlvbklkRGVmaW5lZFRva2VuKSB7XG4gICAgICAgICAgdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmRlbGV0ZShgJHtvbGRDb2luLnByZWZpeH0ke29sZENvaW4uZmFtaWx5fToke29sZENvaW4ubmZ0Q29sbGVjdGlvbklkfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWRkQ29pbihjb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYXJkY29kZWQgbWFwcGluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IExFR0FDWV9DSEFJTl9JRF9NQVA6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XG4gICAgMTogJ2V0aCcsXG4gICAgNDI6ICd0ZXRoJyxcbiAgICA1OiAnZ3RldGgnLFxuICAgIDU2MDA0ODogJ2h0ZXRoJyxcbiAgICAxMDAwMTogJ2V0aHcnLFxuICAgIDgwMDAyOiAndHBvbHlnb24nLFxuICAgIDEzNzogJ3BvbHlnb24nLFxuICAgIDU2OiAnYnNjJyxcbiAgICA5NzogJ3Ric2MnLFxuICAgIDQyMTYxOiAnYXJiZXRoJyxcbiAgICA0MjE2MTQ6ICd0YXJiZXRoJyxcbiAgICAxMDogJ29wZXRoJyxcbiAgICAxMTE1NTQyMDogJ3RvcGV0aCcsXG4gICAgMTExNjogJ2NvcmVkYW8nLFxuICAgIDExMTQ6ICd0Y29yZWRhbycsXG4gICAgMjQ4OiAnb2FzJyxcbiAgICA5MzcyOiAndG9hcycsXG4gICAgMTQ6ICdmbHInLFxuICAgIDExNDogJ3RmbHInLFxuICAgIDE5OiAnc2diJyxcbiAgICAxNjogJ3RzZ2InLFxuICAgIDExMTE6ICd3ZW1peCcsXG4gICAgMTExMjogJ3R3ZW1peCcsXG4gICAgNTA6ICd4ZGMnLFxuICAgIDUxOiAndHhkYycsXG4gICAgODAwOTQ6ICdiZXJhJyxcbiAgICA4MDA2OTogJ3RiZXJhJyxcbiAgICA0MjIyMDogJ2NlbG8nLFxuICAgIDExMTQyMjIwOiAndGNlbG8nLFxuICAgIDIyMjI6ICdrYXZhJyxcbiAgICAyMjIxOiAndGthdmEnLFxuICAgIDQzMTE0OiAnYXZheCcsXG4gICAgNDMxMTM6ICd0YXZheCcsXG4gICAgMTAwOiAnZ25vJyxcbiAgICAxMzA6ICd1bmknLFxuICAgIDMyNDogJ3prZXRoJyxcbiAgICA4NDUzOiAnYmFzZWV0aCcsXG4gICAgODQ1MzI6ICd0YmFzZWV0aCcsXG4gICAgMzAxNDM6ICdtb24nLFxuICAgIDEwMTQzOiAndG1vbicsXG4gICAgNDgwOiAnd29ybGQnLFxuICAgIDQ4MDE6ICd0d29ybGQnLFxuICAgIDUwMzE6ICdzb21pJyxcbiAgICA1MDMxMjogJ3RzdHQnLFxuICAgIDE4Njg6ICdzb25laXVtJyxcbiAgICAxOTQ2OiAndHNvbmVpdW0nLFxuICAgIDMzMTExOiAndGFwZWNoYWluJyxcbiAgICAzMzEzOTogJ2FwZWNoYWluJyxcbiAgICA2ODg2ODg6ICd0cGhycycsXG4gICAgMTAyMDMwOiAnY3RjJyxcbiAgICAxMDIwMzE6ICd0Y3RjJyxcbiAgICA5OTg6ICd0aHlwZWV2bScsXG4gICAgOTk5OiAnaHlwZWV2bScsXG4gICAgMTY2MDI6ICd0b2cnLFxuICAgIDE2NjYxOiAnb2cnLFxuICAgIDk3NDY6ICd0eHBsJyxcbiAgICA5NzQ1OiAneHBsJyxcbiAgICAxNDYwMTogJ3Rzb25pYycsXG4gICAgMTQ2OiAnc29uaWMnLFxuICAgIDEzMjg6ICd0c2VpZXZtJyxcbiAgICAxMzI5OiAnc2VpZXZtJyxcbiAgICAxMDAxOiAndGthaWEnLFxuICAgIDgyMTc6ICdrYWlhJyxcbiAgICAxMjcwOiAndGlyeXMnLFxuICAgIDU5MTQxOiAndGxpbmVhZXRoJyxcbiAgICA1OTE0NDogJ2xpbmVhZXRoJyxcbiAgICAxMzE1OiAndGlwJyxcbiAgICAxNTE0OiAnaXAnLFxuICAgIDU0NTogJ3RmbG93JyxcbiAgICA3NDc6ICdmbG93JyxcbiAgICA5ODg2NzogJ3RwbHVtZScsXG4gICAgOTg4NjY6ICdwbHVtZScsXG4gICAgNjM0MjogJ3RtZWdhZXRoJyxcbiAgICAyOTU6ICdoYmFyZXZtJyxcbiAgICAyOTY6ICd0aGJhcmV2bScsXG4gICAgMTk2OiAnb2tiJyxcbiAgICAxOTUyOiAndG9rYicsXG4gICAgNTczNDk1MTogJ2pvdmF5ZXRoJyxcbiAgICAyMDE5Nzc1OiAndGpvdmF5ZXRoJyxcbiAgICA1MDQyMDAyOiAndGFyYycsXG4gICAgNDI0Mjg6ICd0ZW1wbycsXG4gICAgNDI0Mjk6ICd0dGVtcG8nLFxuICB9O1xuXG4gIHByaXZhdGUgYnVpbGRDaGFpbklkTWFwKCk6IE1hcDxudW1iZXIsIHN0cmluZz4ge1xuICAgIGNvbnN0IGNoYWluSWRNYXAgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuICAgIHRoaXMuX21hcC5mb3JFYWNoKChjb2luLCBjb2luTmFtZSkgPT4ge1xuICAgICAgLy8gU2tpcCB0b2tlbnMgLSB0aGV5IHNoYXJlIHRoZSBzYW1lIGNoYWluSWQgYXMgdGhlaXIgcGFyZW50IGNoYWluXG4gICAgICBpZiAoY29pbi5pc1Rva2VuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ldHdvcmsgPSBjb2luLm5ldHdvcms7XG4gICAgICBpZiAoJ2NoYWluSWQnIGluIG5ldHdvcmsgJiYgdHlwZW9mIChuZXR3b3JrIGFzIEV0aGVyZXVtTmV0d29yaykuY2hhaW5JZCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgY2hhaW5JZCA9IChuZXR3b3JrIGFzIEV0aGVyZXVtTmV0d29yaykuY2hhaW5JZDtcbiAgICAgICAgaWYgKCFjaGFpbklkTWFwLmhhcyhjaGFpbklkKSkge1xuICAgICAgICAgIGNoYWluSWRNYXAuc2V0KGNoYWluSWQsIGNvaW5OYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjaGFpbklkTWFwO1xuICB9XG5cbiAgcHVibGljIGNvaW5OYW1lRnJvbUNoYWluSWQoY2hhaW5JZDogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb2luTmFtZSA9IENvaW5NYXAuTEVHQUNZX0NIQUlOX0lEX01BUFtjaGFpbklkXTtcbiAgICBpZiAoY29pbk5hbWUpIHtcbiAgICAgIHJldHVybiBjb2luTmFtZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29pbkJ5Q2hhaW5JZCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fY29pbkJ5Q2hhaW5JZCA9IHRoaXMuYnVpbGRDaGFpbklkTWFwKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb2luQnlDaGFpbklkLmdldChjaGFpbklkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBgZ2V0YCB0byB0aHJvdyBpZiBhIGNvaW4gaXMgbWlzc2luZywgaW5zdGVhZCBvZiByZXR1cm5pbmcgdW5kZWZpbmVkLlxuICAgKiBJdCB3aWxsIGhvbm9yIGtleSBlcXVpdmFsZW5jZXMgaW4gY2FzZSBnaXZlbiBrZXkgaXMgbWlzc2luZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKiBAcmV0dXJuIHtCYXNlQ29pbn1cbiAgICovXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBSZWFkb25seTxCYXNlQ29pbj4ge1xuICAgIGNvbnN0IGNvaW4gPVxuICAgICAgdGhpcy5fbWFwLmdldChrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlJZHMuZ2V0KGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUFsaWFzZXMuZ2V0KGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5nZXQoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmdldChrZXkpO1xuXG4gICAgaWYgKGNvaW4pIHtcbiAgICAgIHJldHVybiBjb2luO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBDb2luTm90RGVmaW5lZEVycm9yKGtleSk7XG4gIH1cblxuICBwdWJsaWMgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX21hcC5oYXMoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5SWRzLmhhcyhrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlBbGlhc2VzLmhhcyhrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlDb250cmFjdEFkZHJlc3MuaGFzKGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeU5mdENvbGxlY3Rpb25JRC5oYXMoa2V5KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbWFwPFQ+KG1hcHBlcjogKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gVCk6IFRbXSB7XG4gICAgY29uc3QgbWFwUmVzdWx0OiBUW10gPSBbXTtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgbWFwUmVzdWx0LnB1c2gobWFwcGVyKHZhbHVlLCBrZXkpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbWFwUmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHJlZHVjZTxUPihyZWR1Y2VyOiAoYWNjOiBULCBjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIGNvaW5OYW1lOiBzdHJpbmcpID0+IFQsIGluaXRpYWxWYWx1ZTogVCk6IFQge1xuICAgIGxldCBhY2MgPSBpbml0aWFsVmFsdWU7XG4gICAgdGhpcy5fbWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIGFjYyA9IHJlZHVjZXIoYWNjLCB2YWx1ZSwga2V5KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWNjO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcihwcmVkaWNhdGU6IChjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIGNvaW5OYW1lOiBzdHJpbmcpID0+IGJvb2xlYW4pOiBDb2luTWFwIHtcbiAgICBjb25zdCBmaWx0ZXJSZXN1bHQ6IFJlYWRvbmx5PEJhc2VDb2luPltdID0gW107XG4gICAgdGhpcy5fbWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSkpIHtcbiAgICAgICAgZmlsdGVyUmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBDb2luTWFwLmZyb21Db2lucyhmaWx0ZXJSZXN1bHQpO1xuICB9XG5cbiAgcHVibGljIGZvckVhY2goY2FsbGJhY2s6IChjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIGNvaW5OYW1lOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaChjYWxsYmFjayk7XG4gIH1cblxuICBwdWJsaWMgW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxbc3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj5dPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcFtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gIH1cbn1cbiJdfQ==
|