@bitgo/statics 58.35.0 → 58.37.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/allCoinsAndTokens.d.ts.map +1 -1
- package/dist/src/allCoinsAndTokens.js +63 -8
- package/dist/src/base.d.ts +39 -1
- package/dist/src/base.d.ts.map +1 -1
- package/dist/src/base.js +41 -1
- package/dist/src/coinFeatures.d.ts.map +1 -1
- package/dist/src/coinFeatures.js +2 -1
- package/dist/src/coins/botOfcTokens.d.ts.map +1 -1
- package/dist/src/coins/botOfcTokens.js +3 -1
- package/dist/src/coins/botTokens.d.ts.map +1 -1
- package/dist/src/coins/botTokens.js +3 -1
- package/dist/src/coins/bscTokens.d.ts.map +1 -1
- package/dist/src/coins/bscTokens.js +3 -1
- package/dist/src/coins/cantonTokens.js +3 -3
- package/dist/src/coins/erc20Coins.d.ts.map +1 -1
- package/dist/src/coins/erc20Coins.js +7 -1
- package/dist/src/coins/ofcCoins.d.ts.map +1 -1
- package/dist/src/coins/ofcCoins.js +64 -4
- package/dist/src/coins/ofcErc20Coins.d.ts.map +1 -1
- package/dist/src/coins/ofcErc20Coins.js +13 -1
- package/dist/src/coins/polygonTokens.d.ts.map +1 -1
- package/dist/src/coins/polygonTokens.js +3 -1
- package/dist/src/coins/solTokens.d.ts.map +1 -1
- package/dist/src/coins/solTokens.js +5 -3
- package/dist/src/coins.js +2 -2
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/kaspa.d.ts +35 -0
- package/dist/src/kaspa.d.ts.map +1 -0
- package/dist/src/kaspa.js +63 -0
- package/dist/src/networks.d.ts +34 -0
- package/dist/src/networks.d.ts.map +1 -1
- package/dist/src/networks.js +51 -3
- package/dist/src/tokenConfig.d.ts +6 -0
- package/dist/src/tokenConfig.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
package/dist/src/coins.js
CHANGED
|
@@ -383,7 +383,7 @@ function enrichBaseChainFeatures(coinTokenMap, networksMap) {
|
|
|
383
383
|
return Object.fromEntries(Object.entries(coinTokenMap).map(([key, coins]) => [
|
|
384
384
|
key,
|
|
385
385
|
coins.map((coin) => {
|
|
386
|
-
if (coin.isToken || coin.additionalFeatures !== undefined)
|
|
386
|
+
if (coin.isToken || coin.additionalFeatures !== undefined || coin.network === undefined)
|
|
387
387
|
return coin;
|
|
388
388
|
const features = featuresByNetworkName.get(coin.network.name);
|
|
389
389
|
return features !== undefined ? { ...coin, additionalFeatures: features } : coin;
|
|
@@ -440,4 +440,4 @@ function createTokenUsingTrimmedConfigDetails(tokenConfig) {
|
|
|
440
440
|
return createToken(fullTokenConfig);
|
|
441
441
|
}
|
|
442
442
|
}
|
|
443
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29pbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29pbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMkVBLGtDQTZSQztBQTZERCx3REFFQztBQUVELDRFQThDQztBQVlELDBEQWlCQztBQUVELDBGQThCQztBQUVELG9GQTBCQztBQWhqQkQsdUNBOEJtQjtBQUNuQiwrQkFBaUM7QUFDakMsaUNBQTREO0FBRTVELCtCQUFnQztBQUNoQyx5Q0FBa0Y7QUFDbEYsNkVBQTBFO0FBQzFFLHlEQUFzRTtBQUN0RSwrQ0FBNEM7QUFDNUMsMkRBQXdEO0FBQ3hELHVEQUFvRDtBQUV2QyxRQUFBLEtBQUssR0FBRyxhQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3JDLEdBQUcscUNBQWlCO0lBQ3BCLEdBQUcsNkJBQWE7SUFDaEIsR0FBRyw4QkFBYztJQUNqQixHQUFHLG1CQUFRO0lBQ1gsR0FBRywyQkFBWTtDQUNoQixDQUFDLENBQUM7QUFFSCxpRkFBaUY7QUFDakYsZ0RBQWdEO0FBQ2hELE1BQU0sbUJBQW1CLEdBQTJCLEVBQUUsQ0FBQztBQUV2RCxxQ0FBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNqQyxJQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGtCQUFXLENBQUMsY0FBYyxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLHNCQUFXLENBQUMsT0FBTztRQUN6QyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQ2IsQ0FBQztRQUNELG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQy9DLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sb0JBQW9CLEdBQTJCLEVBQUUsQ0FBQztBQUN4RCxxQ0FBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNqQyxJQUNFLElBQUks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QixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQW9CLENBQUMsQ0FBQztRQUNwSCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksT0FBTyxJQUFJLHVEQUEwQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyx1REFBMEIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JELEdBQUcsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO1NBQzFDLENBQUMsQ0FBQztRQUNILFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM3RSxlQUFlLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQW9CLENBQUM7UUFDaEcsT0FBTyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbGdvVG9rZW4sXG4gIGFwdE5GVENvbGxlY3Rpb24sXG4gIGFwdFRva2VuLFxuICBhcmJldGhFcmMyMCxcbiAgYXZheEVyYzIwLFxuICBiZXJhRXJjMjAsXG4gIGJzY1Rva2VuLFxuICBjZWxvVG9rZW4sXG4gIGNvc21vc1Rva2VuLFxuICBlb3NUb2tlbixcbiAgZXJjMjAsXG4gIGhlZGVyYVRva2VuLFxuICBqZXR0b25Ub2tlbixcbiAgbmVwMTQxVG9rZW4sXG4gIG9wZXRoRXJjMjAsXG4gIHBvbHlnb25FcmMyMCxcbiAgcG9seXhUb2tlbixcbiAgc2lwMTBUb2tlbixcbiAgc29sVG9rZW4sXG4gIHN0ZWxsYXJUb2tlbixcbiAgc3VpVG9rZW4sXG4gIHRhb1Rva2VuLFxuICB0cm9uVG9rZW4sXG4gIHZldE5GVENvbGxlY3Rpb24sXG4gIHZldFRva2VuLFxuICB4cnBUb2tlbixcbiAgYWRhVG9rZW4sXG4gIGVyYzIwVG9rZW4sXG4gIGVyYzcyMVRva2VuLFxufSBmcm9tICcuL2FjY291bnQnO1xuaW1wb3J0IHsgb2ZjVG9rZW4gfSBmcm9tICcuL29mYyc7XG5pbXBvcnQgeyBCYXNlQ29pbiwgQ29pbkZlYXR1cmUsIER5bmFtaWNDb2luIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEFtc05ldHdvcmtDb25maWdNYXAsIEFtc1Rva2VuQ29uZmlnLCBUcmltbWVkQW1zVG9rZW5Db25maWcgfSBmcm9tICcuL3Rva2VuQ29uZmlnJztcbmltcG9ydCB7IENvaW5NYXAgfSBmcm9tICcuL21hcCc7XG5pbXBvcnQgeyBCYXNlTmV0d29yaywgZ2V0TmV0d29yaywgZ2V0TmV0d29ya3NNYXAsIE5ldHdvcmtUeXBlIH0gZnJvbSAnLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2VucyB9IGZyb20gJy4vbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMnO1xuaW1wb3J0IHsgb2ZjRXJjMjBDb2lucywgdE9mY0VyYzIwQ29pbnMgfSBmcm9tICcuL2NvaW5zL29mY0VyYzIwQ29pbnMnO1xuaW1wb3J0IHsgb2ZjQ29pbnMgfSBmcm9tICcuL2NvaW5zL29mY0NvaW5zJztcbmltcG9ydCB7IGFsbENvaW5zQW5kVG9rZW5zIH0gZnJvbSAnLi9hbGxDb2luc0FuZFRva2Vucyc7XG5pbXBvcnQgeyBib3RPZmNUb2tlbnMgfSBmcm9tICcuL2NvaW5zL2JvdE9mY1Rva2Vucyc7XG5cbmV4cG9ydCBjb25zdCBjb2lucyA9IENvaW5NYXAuZnJvbUNvaW5zKFtcbiAgLi4uYWxsQ29pbnNBbmRUb2tlbnMsXG4gIC4uLm9mY0VyYzIwQ29pbnMsXG4gIC4uLnRPZmNFcmMyMENvaW5zLFxuICAuLi5vZmNDb2lucyxcbiAgLi4uYm90T2ZjVG9rZW5zLFxuXSk7XG5cbi8vIEJ1aWxkIGEgbWFwIG9mIEVSQzIwLXN1cHBvcnRpbmcgY2hhaW4gZmFtaWx5IG5hbWVzIHRvIHRoZWlyIG1haW5uZXQgY29pbiBuYW1lc1xuLy8gTWFwcyBmYW1pbHkgLT4gY29pbiBuYW1lIChlLmcuLCAnaXAnIC0+ICdpcCcpXG5jb25zdCBlcmMyMENoYWluVG9OYW1lTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbmFsbENvaW5zQW5kVG9rZW5zLmZvckVhY2goKGNvaW4pID0+IHtcbiAgaWYgKFxuICAgIGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDMjApICYmXG4gICAgY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgJiZcbiAgICAhY29pbi5pc1Rva2VuXG4gICkge1xuICAgIGVyYzIwQ2hhaW5Ub05hbWVNYXBbY29pbi5mYW1pbHldID0gY29pbi5uYW1lO1xuICB9XG59KTtcblxuY29uc3QgZXJjNzIxQ2hhaW5Ub05hbWVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbmFsbENvaW5zQW5kVG9rZW5zLmZvckVhY2goKGNvaW4pID0+IHtcbiAgaWYgKFxuICAgIGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDNzIxKSAmJlxuICAgIGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUICYmXG4gICAgIWNvaW4uaXNUb2tlblxuICApIHtcbiAgICBlcmM3MjFDaGFpblRvTmFtZU1hcFtjb2luLmZhbWlseV0gPSBjb2luLm5hbWU7XG4gIH1cbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW4odG9rZW46IEFtc1Rva2VuQ29uZmlnKTogUmVhZG9ubHk8QmFzZUNvaW4+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0b2tlbi5pc1Rva2VuKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBidWlsZER5bmFtaWNDb2luKHRva2VuKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gYnVpbGQgZHluYW1pYyBjb2luIGZvciAke3Rva2VuLm5hbWV9ICgke3Rva2VuLmlkfSk6YCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaW5pdGlhbGl6ZXJNYXA6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIGFsZ286IGFsZ29Ub2tlbixcbiAgICBhcHQ6IGFwdFRva2VuLFxuICAgIGFyYmV0aDogYXJiZXRoRXJjMjAsXG4gICAgYXZheGM6IGF2YXhFcmMyMCxcbiAgICBiYXNlZXRoOiBlcmMyMFRva2VuLFxuICAgIGJlcmE6IGJlcmFFcmMyMCxcbiAgICBmbG93OiBlcmMyMFRva2VuLFxuICAgIGxpbmVhZXRoOiBlcmMyMFRva2VuLFxuICAgIHNlaWV2bTogZXJjMjBUb2tlbixcbiAgICBtb246IGVyYzIwVG9rZW4sXG4gICAgeGRjOiBlcmMyMFRva2VuLFxuICAgIGJzYzogYnNjVG9rZW4sXG4gICAgY2VsbzogY2Vsb1Rva2VuLFxuICAgIGNvc21vczogY29zbW9zVG9rZW4sXG4gICAgZXRoOiBlcmMyMCxcbiAgICBlb3M6IGVvc1Rva2VuLFxuICAgIGhiYXI6IGhlZGVyYVRva2VuLFxuICAgIG5lYXI6IG5lcDE0MVRva2VuLFxuICAgIG9wZXRoOiBvcGV0aEVyYzIwLFxuICAgIHBvbHlnb246IHBvbHlnb25FcmMyMCxcbiAgICBzb2w6IHNvbFRva2VuLFxuICAgIHN0eDogc2lwMTBUb2tlbixcbiAgICBzdWk6IHN1aVRva2VuLFxuICAgIHRhbzogdGFvVG9rZW4sXG4gICAgcG9seXg6IHBvbHl4VG9rZW4sXG4gICAgdHJ4OiB0cm9uVG9rZW4sXG4gICAgdmV0OiB2ZXRUb2tlbixcbiAgICB4bG06IHN0ZWxsYXJUb2tlbixcbiAgICB4cnA6IHhycFRva2VuLFxuICAgIG9mYzogb2ZjVG9rZW4sXG4gICAgYWRhOiBhZGFUb2tlbixcbiAgICB0b246IGpldHRvblRva2VuLFxuICB9O1xuXG4gIC8vIGR5bmFtaWNhbGx5IGFkZCBlcmMyMCB0b2tlbiBpbml0aWFsaXplcnMgZm9yIGV0aCBsaWtlIGNoYWlucyB0byB0aGUgaW5pdGlhbGl6ZXIgbWFwXG4gIE9iamVjdC5rZXlzKGVyYzIwQ2hhaW5Ub05hbWVNYXApLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGluaXRpYWxpemVyTWFwW2tleV0gPSBlcmMyMFRva2VuO1xuICB9KTtcblxuICBPYmplY3Qua2V5cyhlcmM3MjFDaGFpblRvTmFtZU1hcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgaW5pdGlhbGl6ZXJNYXBba2V5XSA9IGVyYzcyMVRva2VuO1xuICB9KTtcblxuICAvL3JldHVybiB0aGUgQmFzZUNvaW4gZnJvbSBkZWZhdWx0IGNvaW4gbWFwIGlmIHByZXNlbnRcbiAgaWYgKGlzQ29pblByZXNlbnRJbkNvaW5NYXAoeyAuLi50b2tlbiB9KSkge1xuICAgIGlmIChjb2lucy5oYXModG9rZW4ubmFtZSkpIHtcbiAgICAgIHJldHVybiBjb2lucy5nZXQodG9rZW4ubmFtZSk7XG4gICAgfVxuICAgIGlmIChjb2lucy5oYXModG9rZW4uaWQpKSB7XG4gICAgICByZXR1cm4gY29pbnMuZ2V0KHRva2VuLmlkKTtcbiAgICB9XG4gICAgaWYgKHRva2VuLmFsaWFzICYmIGNvaW5zLmhhcyh0b2tlbi5hbGlhcykpIHtcbiAgICAgIHJldHVybiBjb2lucy5nZXQodG9rZW4uYWxpYXMpO1xuICAgIH1cbiAgfVxuICBjb25zdCBmYW1pbHkgPSB0b2tlbi5mYW1pbHk7XG4gIGNvbnN0IGluaXRpYWxpemVyID0gaW5pdGlhbGl6ZXJNYXBbZmFtaWx5XSBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBSZWFkb25seTxCYXNlQ29pbj47XG4gIGlmICghaW5pdGlhbGl6ZXIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgY29tbW9uQXJncyA9IFtcbiAgICB0b2tlbi5pZCxcbiAgICB0b2tlbi5uYW1lLFxuICAgIHRva2VuLmZ1bGxOYW1lLFxuICAgIHRva2VuLmRlY2ltYWxQbGFjZXMsXG4gICAgdG9rZW4uYXNzZXQsXG4gICAgdG9rZW4uZmVhdHVyZXMsXG4gICAgdG9rZW4ucHJlZml4LFxuICAgIHRva2VuLnN1ZmZpeCxcbiAgICB0b2tlbi5uZXR3b3JrLFxuICAgIHRva2VuLnByaW1hcnlLZXlDdXJ2ZSxcbiAgXTtcblxuICBzd2l0Y2ggKGZhbWlseSkge1xuICAgIGNhc2UgZXJjMjBDaGFpblRvTmFtZU1hcFtmYW1pbHldOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzIHx8IHRva2VuLnRva2VuQWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIHRva2VuLmFzc2V0LFxuICAgICAgICB0b2tlbi5uZXR3b3JrLFxuICAgICAgICB0b2tlbi5mZWF0dXJlcyxcbiAgICAgICAgdG9rZW4ucHJlZml4LFxuICAgICAgICB0b2tlbi5zdWZmaXgsXG4gICAgICAgIHRva2VuLnByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcbiAgICBjYXNlIGVyYzcyMUNoYWluVG9OYW1lTWFwW2ZhbWlseV06XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgMyksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZVxuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MsIC8vIGNvbnRyYWN0QWRkcmVzc1xuICAgICAgICB0b2tlbi5uZXR3b3JrLFxuICAgICAgICB0b2tlbi5mZWF0dXJlcyxcbiAgICAgICAgdG9rZW4ucHJlZml4LFxuICAgICAgICB0b2tlbi5zdWZmaXgsXG4gICAgICAgIHRva2VuLnByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcbiAgICBjYXNlICdhcmJldGgnOlxuICAgIGNhc2UgJ2F2YXhjJzpcbiAgICBjYXNlICdiYXNlZXRoJzpcbiAgICBjYXNlICdiZXJhJzpcbiAgICBjYXNlICdic2MnOlxuICAgIGNhc2UgJ2Zsb3cnOlxuICAgIGNhc2UgJ2xpbmVhZXRoJzpcbiAgICBjYXNlICdzZWlldm0nOlxuICAgIGNhc2UgJ21vbic6XG4gICAgY2FzZSAneGRjJzpcbiAgICBjYXNlICdjZWxvJzpcbiAgICBjYXNlICdldGgnOlxuICAgIGNhc2UgJ29wZXRoJzpcbiAgICBjYXNlICdwb2x5Z29uJzpcbiAgICBjYXNlICd0cngnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzIHx8IHRva2VuLnRva2VuQWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAnYXB0JzpcbiAgICAgIGNvbnN0IHsgaW5pdEZ1bmMsIG9iamVjdElkIH0gPSBnZXRBcHRUb2tlbkluaXRpYWxpemVyKHRva2VuKTtcbiAgICAgIHJldHVybiBpbml0RnVuYyhcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIG9iamVjdElkLFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ3ZldCc6XG4gICAgICBjb25zdCB7IHZldEluaXRGdW5jLCB2ZXRPYmplY3RJZCwgaXNORlQgfSA9IGdldFZldFRva2VuSW5pdGlhbGl6ZXIodG9rZW4pO1xuICAgICAgaWYgKGlzTkZUKSB7XG4gICAgICAgIHJldHVybiB2ZXRJbml0RnVuYyhcbiAgICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDMpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWVcbiAgICAgICAgICB2ZXRPYmplY3RJZCxcbiAgICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZldEluaXRGdW5jKFxuICAgICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICAgIHZldE9iamVjdElkLFxuICAgICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICBjYXNlICdzdHgnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4uYXNzZXRJZCwgLy8gYXNzZXRJZFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ2FsZ28nOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDIpLCAvLyBpZCwgbmFtZVxuICAgICAgICB0b2tlbi5hbGlhcywgLy8gYWxpYXNcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgyKSAvLyBmdWxsTmFtZSwgZGVjaW1hbCwgYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAnZW9zJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLmNvbnRyYWN0TmFtZSwgLy8gY29udHJhY3ROYW1lXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCwgOCksIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXhcbiAgICAgICAgdG9rZW4uc3ltYm9sLCAvLyBzeW1ib2xcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg4KSAvLyBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICdoYmFyJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCAzKSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lXG4gICAgICAgIHRva2VuLm5ldHdvcmssIC8vIG5ldHdvcmtcbiAgICAgICAgdG9rZW4uZGVjaW1hbFBsYWNlcyxcbiAgICAgICAgdG9rZW4uYXNzZXQsXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNSwgOCksIC8vIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeFxuICAgICAgICB0b2tlbi5wcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICdzb2wnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4udG9rZW5BZGRyZXNzLCAvLyB0b2tlbkFkZHJlc3NcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzLCAvLyBjb250cmFjdEFkZHJlc3NcbiAgICAgICAgdG9rZW4uYXNzZXQsXG4gICAgICAgIHRva2VuLmZlYXR1cmVzLFxuICAgICAgICB0b2tlbi5wcm9ncmFtSWQsXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNikgLy8gcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ3N1aSc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5wYWNrYWdlSWQsIC8vIHBhY2thZ2VJZFxuICAgICAgICB0b2tlbi5tb2R1bGUsIC8vIG1vZHVsZVxuICAgICAgICB0b2tlbi5zeW1ib2wsIC8vIHN5bWJvbFxuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MsIC8vIGNvbnRyYWN0QWRkcmVzc1xuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ3Rhbyc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5zdWJuZXRJZCwgLy8gc3VibmV0SWRcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG4gICAgY2FzZSAncG9seXgnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4udGlja2VyLCAvLyB0aWNrZXJcbiAgICAgICAgdG9rZW4uYXNzZXRJZCwgLy8gYXNzZXRJZFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ3hsbSc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNSksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlcywgYXNzZXRcbiAgICAgICAgdG9rZW4uZG9tYWluLCAvLyBkb21haW5cbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg1KSAvLyBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ3hycCc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5pc3N1ZXJBZGRyZXNzLCAvLyBpc3N1ZXJBZGRyZXNzXG4gICAgICAgIHRva2VuLmN1cnJlY255Y29kZSwgLy8gY3VycmVuY3lDb2RlXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIHRva2VuLmRvbWFpbiwgLy8gZG9tYWluXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuICAgIGNhc2UgJ29mYyc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3MsIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlcywgYXNzZXQsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICAgdG9rZW4uYmFzZVVuaXQsIC8vIGJhc2VVbml0XG4gICAgICAgIHRva2VuLmlzVG9rZW4sIC8vIGlzVG9rZW5cbiAgICAgICAgdG9rZW4ua2luZCwgLy8ga2luZFxuICAgICAgICB0b2tlbi5hZGRyZXNzQ29pbiAvLyBhZGRyZXNzQ29pblxuICAgICAgKTtcbiAgICBjYXNlICdhc2knOlxuICAgIGNhc2UgJ2F0b20nOlxuICAgIGNhc2UgJ2JhYnknOlxuICAgIGNhc2UgJ2JsZCc6XG4gICAgY2FzZSAnY29yZXVtJzpcbiAgICBjYXNlICdjcm9ub3MnOlxuICAgIGNhc2UgJ2hhc2gnOlxuICAgIGNhc2UgJ2luamVjdGl2ZSc6XG4gICAgY2FzZSAnaW5pdGlhJzpcbiAgICBjYXNlICdvc21vJzpcbiAgICBjYXNlICd0aG9yJzpcbiAgICBjYXNlICdzZWknOlxuICAgIGNhc2UgJ3RpYSc6XG4gICAgY2FzZSAnemV0YSc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgMyksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZVxuICAgICAgICB0b2tlbi5kZW5vbSwgLy8gZGVub21cbiAgICAgICAgdG9rZW4uZGVjaW1hbFBsYWNlcywgLy8gZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5uZXR3b3JrLCAvLyBuZXR3b3JrXG4gICAgICAgIHRva2VuLmJhc2VVbml0LCAvLyBiYXNlVW5pdFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQsIDgpLCAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4XG4gICAgICAgIHRva2VuLnByaW1hcnlLZXlDdXJ2ZSAvLyBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG4gICAgY2FzZSAnYWRhJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLmFzc2V0TmFtZSxcbiAgICAgICAgdG9rZW4ucG9saWN5SWQsXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG4gICAgY2FzZSAndG9uJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSByZWFsIER5bmFtaWNDb2luICsgRHluYW1pY05ldHdvcmsgaW5zdGFuY2UgZm9yIEFNUy1kaXNjb3ZlcmVkIGJhc2UgY2hhaW5zXG4gKiB3aG9zZSBmYW1pbHkgaXMgbm90IHlldCByZWdpc3RlcmVkIGluIHRoZSBTREsncyBpbml0aWFsaXplck1hcC5cbiAqIENhbGxlZCBmcm9tIGNyZWF0ZVRva2VuKCkgYXMgYSBmYWxsYmFjayB3aGVuIG5vIGluaXRpYWxpemVyIGV4aXN0cyBhbmQgaXNUb2tlbiBpcyBmYWxzZS5cbiAqL1xuZnVuY3Rpb24gYnVpbGREeW5hbWljQ29pbih0b2tlbjogQW1zVG9rZW5Db25maWcpOiBSZWFkb25seTxCYXNlQ29pbj4ge1xuICBjb25zdCBuZXR3b3JrID0gdG9rZW4ubmV0d29yayBpbnN0YW5jZW9mIEJhc2VOZXR3b3JrID8gdG9rZW4ubmV0d29yayA6IGdldE5ldHdvcmsodG9rZW4ubmV0d29yayBhcyBzdHJpbmcpO1xuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKFxuICAgIG5ldyBEeW5hbWljQ29pbih7XG4gICAgICBpZDogdG9rZW4uaWQsXG4gICAgICBuYW1lOiB0b2tlbi5uYW1lLFxuICAgICAgZnVsbE5hbWU6IHRva2VuLmZ1bGxOYW1lLFxuICAgICAgZGVjaW1hbFBsYWNlczogdG9rZW4uZGVjaW1hbFBsYWNlcyxcbiAgICAgIGFzc2V0OiB0b2tlbi5hc3NldCBhcyBzdHJpbmcsXG4gICAgICBpc1Rva2VuOiB0b2tlbi5pc1Rva2VuLFxuICAgICAgZmVhdHVyZXM6ICh0b2tlbi5mZWF0dXJlcyA/PyBbXSkgYXMgc3RyaW5nW10sXG4gICAgICBuZXR3b3JrLFxuICAgICAgcHJpbWFyeUtleUN1cnZlOiAodG9rZW4ucHJpbWFyeUtleUN1cnZlIGFzIHN0cmluZykgPz8gJ3NlY3AyNTZrMScsXG4gICAgICBwcmVmaXg6IHRva2VuLnByZWZpeCA/PyAnJyxcbiAgICAgIHN1ZmZpeDogdG9rZW4uc3VmZml4ID8/IHRva2VuLm5hbWUudG9VcHBlckNhc2UoKSxcbiAgICAgIGJhc2VVbml0OiAodG9rZW4uYmFzZVVuaXQgYXMgc3RyaW5nKSA/PyAnJyxcbiAgICAgIGtpbmQ6ICh0b2tlbi5raW5kIGFzIHN0cmluZykgPz8gJ2NyeXB0bycsXG4gICAgICBhbGlhczogdG9rZW4uYWxpYXMsXG4gICAgfSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0QXB0VG9rZW5Jbml0aWFsaXplcih0b2tlbjogQW1zVG9rZW5Db25maWcpIHtcbiAgaWYgKHRva2VuLmFzc2V0SWQpIHtcbiAgICAvLyB1c2VkIGZvciBmdW5naWJsZS1hc3NldHMgLyBsZWdhY3kgY29pbnMgZXRjLlxuICAgIHJldHVybiB7XG4gICAgICBpbml0RnVuYzogYXB0VG9rZW4gYXMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gUmVhZG9ubHk8QmFzZUNvaW4+LFxuICAgICAgb2JqZWN0SWQ6IHRva2VuLmFzc2V0SWQsXG4gICAgfTtcbiAgfVxuICAvLyB1c2VkIGZvciBub24tZnVuZ2libGUgdG9rZW4gKE5GVCkgY29sbGVjdGlvbnNcbiAgcmV0dXJuIHtcbiAgICBpbml0RnVuYzogYXB0TkZUQ29sbGVjdGlvbiBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBSZWFkb25seTxCYXNlQ29pbj4sXG4gICAgb2JqZWN0SWQ6IHRva2VuLm5mdENvbGxlY3Rpb25JZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VmV0VG9rZW5Jbml0aWFsaXplcih0b2tlbjogQW1zVG9rZW5Db25maWcpIHtcbiAgaWYgKHRva2VuLm5mdENvbGxlY3Rpb25JZCkge1xuICAgIHJldHVybiB7XG4gICAgICB2ZXRJbml0RnVuYzogdmV0TkZUQ29sbGVjdGlvbiBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBSZWFkb25seTxCYXNlQ29pbj4sXG4gICAgICB2ZXRPYmplY3RJZDogdG9rZW4ubmZ0Q29sbGVjdGlvbklkLFxuICAgICAgaXNORlQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdmV0SW5pdEZ1bmM6IHZldFRva2VuIGFzICguLi5hcmdzOiB1bmtub3duW10pID0+IFJlYWRvbmx5PEJhc2VDb2luPixcbiAgICB2ZXRPYmplY3RJZDogdG9rZW4uY29udHJhY3RBZGRyZXNzLFxuICAgIGlzTkZUOiBmYWxzZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29pblByZXNlbnRJbkNvaW5NYXAoeyBuYW1lLCBpZCwgYWxpYXMgfTogeyBuYW1lOiBzdHJpbmc7IGlkPzogc3RyaW5nOyBhbGlhcz86IHN0cmluZyB9KTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKGNvaW5zLmhhcyhuYW1lKSB8fCAoaWQgJiYgY29pbnMuaGFzKGlkKSkgfHwgKGFsaWFzICYmIGNvaW5zLmhhcyhhbGlhcykpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRva2VuTWFwVXNpbmdDb25maWdEZXRhaWxzKHRva2VuQ29uZmlnTWFwOiBSZWNvcmQ8c3RyaW5nLCBBbXNUb2tlbkNvbmZpZ1tdPik6IENvaW5NYXAge1xuICBjb25zdCBCYXNlQ29pbnM6IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3QgbmZ0QW5kT3RoZXJUb2tlbnMgPSBuZXcgU2V0KFtcbiAgICAnZXJjNzIxOmJzY3Rva2VuJyxcbiAgICAndGVyYzcyMTpic2N0b2tlbicsXG4gICAgJ2VyYzExNTU6YnNjdG9rZW4nLFxuICAgICd0ZXJjMTE1NTpic2N0b2tlbicsXG4gICAgJ2VyYzcyMTp3aXRjaCcsXG4gICAgJ2VyYzcyMTp0b2tlbicsXG4gICAgJ2VyYzExNTU6dG9rZW4nLFxuICAgICdub25zdGFuZGFyZDp0b2tlbicsXG4gICAgJ3RlcmM3MjE6dG9rZW4nLFxuICAgICd0ZXJjMTE1NTp0b2tlbicsXG4gICAgJ3Rub25zdGFuZGFyZDp0b2tlbicsXG4gICAgJ3RlcmM3MjE6Yml0Z29lcmM3MjEnLFxuICAgICd0ZXJjMTE1NTpiaXRnb2VyYzExNTUnLFxuICAgICd0ZXJjNzIxOmhvb2RpZGonLFxuICAgICdlcmM3MjE6cG9seWdvbnRva2VuJyxcbiAgICAnZXJjMTE1NTpwb2x5Z29udG9rZW4nLFxuICAgICd0ZXJjNzIxOnBvbHlnb250b2tlbicsXG4gICAgJ3RlcmMxMTU1OnBvbHlnb250b2tlbicsXG4gICAgJ2VyYzcyMTpzb25laXVtdG9rZW4nLFxuICAgICdlcmMxMTU1OnNvbmVpdW10b2tlbicsXG4gICAgJ3RlcmM3MjE6c29uZWl1bXRva2VuJyxcbiAgICAndGVyYzExNTU6c29uZWl1bXRva2VuJyxcbiAgXSk7XG5cbiAgLy8gQWRkIGFsbCB0aGUgY29pbnMgZnJvbSBzdGF0aWNzIGNvaW4gbWFwIGZpcnN0XG4gIGNvaW5zLmZvckVhY2goKGNvaW4sIGNvaW5OYW1lKSA9PiB7XG4gICAgQmFzZUNvaW5zLnNldChjb2luTmFtZSwgY29pbik7XG4gIH0pO1xuXG4gIC8vIGFkZCB0aGUgdG9rZW5zIG5vdCBwcmVzZW50IGluIHRoZSBzdGF0aWMgY29pbiBtYXBcbiAgZm9yIChjb25zdCB0b2tlbkNvbmZpZ3Mgb2YgT2JqZWN0LnZhbHVlcyh0b2tlbkNvbmZpZ01hcCkpIHtcbiAgICBjb25zdCB0b2tlbkNvbmZpZyA9IHRva2VuQ29uZmlnc1swXTtcblxuICAgIGlmICghaXNDb2luUHJlc2VudEluQ29pbk1hcCh7IC4uLnRva2VuQ29uZmlnIH0pICYmICFuZnRBbmRPdGhlclRva2Vucy5oYXModG9rZW5Db25maWcubmFtZSkpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gY3JlYXRlVG9rZW4odG9rZW5Db25maWcpO1xuICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgIEJhc2VDb2lucy5zZXQodG9rZW4ubmFtZSwgdG9rZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBDb2luTWFwLmZyb21Db2lucyhBcnJheS5mcm9tKEJhc2VDb2lucy52YWx1ZXMoKSkpO1xufVxuXG4vKipcbiAqIEVucmljaCBiYXNlIGNoYWluIGNvaW5zIChpc1Rva2VuPWZhbHNlKSB3aXRoIGZlYXR1cmVzIGZyb20gdGhlIEFNUyBuZXR3b3JrcyBtYXAuXG4gKlxuICogY3JlYXRlVG9rZW5NYXBVc2luZ1RyaW1tZWRDb25maWdEZXRhaWxzIHJlYWRzIGZlYXR1cmVzIGZvciBiYXNlIGNoYWlucyBmcm9tXG4gKiBUcmltbWVkQW1zVG9rZW5Db25maWcuYWRkaXRpb25hbEZlYXR1cmVzLiBUaGUgYXNzZXRzTGlzdCBlbmRwb2ludCByZXR1cm5zIGJhc2UgY2hhaW5zIHdpdGggbm8gZmVhdHVyZXM7XG4gKiBmZWF0dXJlcyBhcmUgaW4gdGhlIG5ldHdvcmtzIGVuZHBvaW50ICgvYXBpL3YxL25ldHdvcmtzLzpuZXR3b3JrKSwgbWF0Y2hlZCBieSBjb2luLm5ldHdvcmsubmFtZSA9PT0gbmV0d29ya3NFbnRyeS5uYW1lLlxuICpcbiAqIENvaW5zIHRoYXQgYWxyZWFkeSBoYXZlIGFkZGl0aW9uYWxGZWF0dXJlcyBkZWZpbmVkIGFyZSBsZWZ0IHVuY2hhbmdlZC5cbiAqIENvaW5zIHdob3NlIG5ldHdvcmsubmFtZSBoYXMgbm8gbWF0Y2ggaW4gbmV0d29ya3NNYXAgYXJlIGxlZnQgdW5jaGFuZ2VkIChlbXB0eSBmZWF0dXJlcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnJpY2hCYXNlQ2hhaW5GZWF0dXJlcyhcbiAgY29pblRva2VuTWFwOiBSZWNvcmQ8c3RyaW5nLCBUcmltbWVkQW1zVG9rZW5Db25maWdbXT4sXG4gIG5ldHdvcmtzTWFwOiBBbXNOZXR3b3JrQ29uZmlnTWFwXG4pOiBSZWNvcmQ8c3RyaW5nLCBUcmltbWVkQW1zVG9rZW5Db25maWdbXT4ge1xuICBjb25zdCBmZWF0dXJlc0J5TmV0d29ya05hbWUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KFxuICAgIE9iamVjdC52YWx1ZXMobmV0d29ya3NNYXApLm1hcCgobmV0KTogW3N0cmluZywgc3RyaW5nW11dID0+IFtuZXQubmFtZSwgbmV0LmZlYXR1cmVzXSlcbiAgKTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhjb2luVG9rZW5NYXApLm1hcCgoW2tleSwgY29pbnNdKSA9PiBbXG4gICAgICBrZXksXG4gICAgICBjb2lucy5tYXAoKGNvaW4pID0+IHtcbiAgICAgICAgaWYgKGNvaW4uaXNUb2tlbiB8fCBjb2luLmFkZGl0aW9uYWxGZWF0dXJlcyAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY29pbjtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBmZWF0dXJlc0J5TmV0d29ya05hbWUuZ2V0KGNvaW4ubmV0d29yay5uYW1lKTtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzICE9PSB1bmRlZmluZWQgPyB7IC4uLmNvaW4sIGFkZGl0aW9uYWxGZWF0dXJlczogZmVhdHVyZXMgfSA6IGNvaW47XG4gICAgICB9KSxcbiAgICBdKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW5NYXBVc2luZ1RyaW1tZWRDb25maWdEZXRhaWxzKFxuICByZWR1Y2VkVG9rZW5Db25maWdNYXA6IFJlY29yZDxzdHJpbmcsIFRyaW1tZWRBbXNUb2tlbkNvbmZpZ1tdPlxuKTogQ29pbk1hcCB7XG4gIGNvbnN0IGFtc1Rva2VuQ29uZmlnTWFwOiBSZWNvcmQ8c3RyaW5nLCBBbXNUb2tlbkNvbmZpZ1tdPiA9IHt9O1xuICBjb25zdCBuZXR3b3JrTmFtZU1hcCA9IGdldE5ldHdvcmtzTWFwKCk7XG5cbiAgZm9yIChjb25zdCB0b2tlbkNvbmZpZ3Mgb2YgT2JqZWN0LnZhbHVlcyhyZWR1Y2VkVG9rZW5Db25maWdNYXApKSB7XG4gICAgY29uc3QgdG9rZW5Db25maWcgPSB0b2tlbkNvbmZpZ3NbMF07XG4gICAgY29uc3QgbmV0d29yayA9IG5ldHdvcmtOYW1lTWFwLmdldCh0b2tlbkNvbmZpZy5uZXR3b3JrLm5hbWUpO1xuXG4gICAgaWYgKGlzQ29pblByZXNlbnRJbkNvaW5NYXAoeyAuLi50b2tlbkNvbmZpZyB9KSkgY29udGludWU7XG5cbiAgICBpZiAoIXRva2VuQ29uZmlnLmlzVG9rZW4pIHtcbiAgICAgIC8vIER5bmFtaWMgYmFzZSBjaGFpbiDigJQgbmV0d29yayBtdXN0IGJlIHByZS1yZWdpc3RlcmVkIGluIG5ldHdvcmtCeU5hbWUgbWFwIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAgICBpZiAobmV0d29yaykge1xuICAgICAgICBhbXNUb2tlbkNvbmZpZ01hcFt0b2tlbkNvbmZpZy5uYW1lXSA9IFtcbiAgICAgICAgICB7IC4uLnRva2VuQ29uZmlnLCBmZWF0dXJlczogdG9rZW5Db25maWcuYWRkaXRpb25hbEZlYXR1cmVzID8/IFtdLCBuZXR3b3JrIH0sXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChuZXR3b3JrICYmIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW25ldHdvcmsuZmFtaWx5XSkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBuZXcgU2V0KFtcbiAgICAgICAgLi4uKG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW25ldHdvcmsuZmFtaWx5XSB8fCBbXSksXG4gICAgICAgIC4uLih0b2tlbkNvbmZpZy5hZGRpdGlvbmFsRmVhdHVyZXMgfHwgW10pLFxuICAgICAgXSk7XG4gICAgICB0b2tlbkNvbmZpZy5leGNsdWRlZEZlYXR1cmVzPy5mb3JFYWNoKChmZWF0dXJlKSA9PiBmZWF0dXJlcy5kZWxldGUoZmVhdHVyZSkpO1xuICAgICAgYW1zVG9rZW5Db25maWdNYXBbdG9rZW5Db25maWcubmFtZV0gPSBbeyAuLi50b2tlbkNvbmZpZywgZmVhdHVyZXM6IEFycmF5LmZyb20oZmVhdHVyZXMpLCBuZXR3b3JrIH1dO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjcmVhdGVUb2tlbk1hcFVzaW5nQ29uZmlnRGV0YWlscyhhbXNUb2tlbkNvbmZpZ01hcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb2tlblVzaW5nVHJpbW1lZENvbmZpZ0RldGFpbHMoXG4gIHRva2VuQ29uZmlnOiBUcmltbWVkQW1zVG9rZW5Db25maWdcbik6IFJlYWRvbmx5PEJhc2VDb2luPiB8IHVuZGVmaW5lZCB7XG4gIGxldCBmdWxsVG9rZW5Db25maWc6IEFtc1Rva2VuQ29uZmlnIHwgdW5kZWZpbmVkO1xuICBjb25zdCBuZXR3b3JrTmFtZU1hcCA9IGdldE5ldHdvcmtzTWFwKCk7XG4gIGNvbnN0IG5ldHdvcmsgPSBuZXR3b3JrTmFtZU1hcC5nZXQodG9rZW5Db25maWcubmV0d29yay5uYW1lKTtcblxuICBpZiAoaXNDb2luUHJlc2VudEluQ29pbk1hcCh7IC4uLnRva2VuQ29uZmlnIH0pKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGlmICghdG9rZW5Db25maWcuaXNUb2tlbikge1xuICAgIC8vIER5bmFtaWMgYmFzZSBjaGFpbiDigJQgbmV0d29yayBtdXN0IGJlIHByZS1yZWdpc3RlcmVkIGluIG5ldHdvcmtCeU5hbWUgbWFwIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAgaWYgKG5ldHdvcmspIHtcbiAgICAgIHJldHVybiBjcmVhdGVUb2tlbih7IC4uLnRva2VuQ29uZmlnLCBmZWF0dXJlczogdG9rZW5Db25maWcuYWRkaXRpb25hbEZlYXR1cmVzID8/IFtdLCBuZXR3b3JrIH0gYXMgQW1zVG9rZW5Db25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKG5ldHdvcmsgJiYgbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnNbbmV0d29yay5mYW1pbHldKSB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSBuZXcgU2V0KFtcbiAgICAgIC4uLihuZXR3b3JrRmVhdHVyZU1hcEZvclRva2Vuc1tuZXR3b3JrLmZhbWlseV0gfHwgW10pLFxuICAgICAgLi4uKHRva2VuQ29uZmlnLmFkZGl0aW9uYWxGZWF0dXJlcyB8fCBbXSksXG4gICAgXSk7XG4gICAgdG9rZW5Db25maWcuZXhjbHVkZWRGZWF0dXJlcz8uZm9yRWFjaCgoZmVhdHVyZSkgPT4gZmVhdHVyZXMuZGVsZXRlKGZlYXR1cmUpKTtcbiAgICBmdWxsVG9rZW5Db25maWcgPSB7IC4uLnRva2VuQ29uZmlnLCBmZWF0dXJlczogQXJyYXkuZnJvbShmZWF0dXJlcyksIG5ldHdvcmsgfSBhcyBBbXNUb2tlbkNvbmZpZztcbiAgICByZXR1cm4gY3JlYXRlVG9rZW4oZnVsbFRva2VuQ29uZmlnKTtcbiAgfVxufVxuIl19
|
|
443
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29pbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29pbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMkVBLGtDQTZSQztBQTZERCx3REFFQztBQUVELDRFQThDQztBQVlELDBEQWlCQztBQUVELDBGQThCQztBQUVELG9GQTBCQztBQWhqQkQsdUNBOEJtQjtBQUNuQiwrQkFBaUM7QUFDakMsaUNBQTREO0FBRTVELCtCQUFnQztBQUNoQyx5Q0FBa0Y7QUFDbEYsNkVBQTBFO0FBQzFFLHlEQUFzRTtBQUN0RSwrQ0FBNEM7QUFDNUMsMkRBQXdEO0FBQ3hELHVEQUFvRDtBQUV2QyxRQUFBLEtBQUssR0FBRyxhQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3JDLEdBQUcscUNBQWlCO0lBQ3BCLEdBQUcsNkJBQWE7SUFDaEIsR0FBRyw4QkFBYztJQUNqQixHQUFHLG1CQUFRO0lBQ1gsR0FBRywyQkFBWTtDQUNoQixDQUFDLENBQUM7QUFFSCxpRkFBaUY7QUFDakYsZ0RBQWdEO0FBQ2hELE1BQU0sbUJBQW1CLEdBQTJCLEVBQUUsQ0FBQztBQUV2RCxxQ0FBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNqQyxJQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGtCQUFXLENBQUMsY0FBYyxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLHNCQUFXLENBQUMsT0FBTztRQUN6QyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQ2IsQ0FBQztRQUNELG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQy9DLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sb0JBQW9CLEdBQTJCLEVBQUUsQ0FBQztBQUN4RCxxQ0FBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNqQyxJQUNFLElBQUks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RUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQW9CLENBQUMsQ0FBQztRQUNwSCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksT0FBTyxJQUFJLHVEQUEwQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyx1REFBMEIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JELEdBQUcsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO1NBQzFDLENBQUMsQ0FBQztRQUNILFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM3RSxlQUFlLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQW9CLENBQUM7UUFDaEcsT0FBTyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbGdvVG9rZW4sXG4gIGFwdE5GVENvbGxlY3Rpb24sXG4gIGFwdFRva2VuLFxuICBhcmJldGhFcmMyMCxcbiAgYXZheEVyYzIwLFxuICBiZXJhRXJjMjAsXG4gIGJzY1Rva2VuLFxuICBjZWxvVG9rZW4sXG4gIGNvc21vc1Rva2VuLFxuICBlb3NUb2tlbixcbiAgZXJjMjAsXG4gIGhlZGVyYVRva2VuLFxuICBqZXR0b25Ub2tlbixcbiAgbmVwMTQxVG9rZW4sXG4gIG9wZXRoRXJjMjAsXG4gIHBvbHlnb25FcmMyMCxcbiAgcG9seXhUb2tlbixcbiAgc2lwMTBUb2tlbixcbiAgc29sVG9rZW4sXG4gIHN0ZWxsYXJUb2tlbixcbiAgc3VpVG9rZW4sXG4gIHRhb1Rva2VuLFxuICB0cm9uVG9rZW4sXG4gIHZldE5GVENvbGxlY3Rpb24sXG4gIHZldFRva2VuLFxuICB4cnBUb2tlbixcbiAgYWRhVG9rZW4sXG4gIGVyYzIwVG9rZW4sXG4gIGVyYzcyMVRva2VuLFxufSBmcm9tICcuL2FjY291bnQnO1xuaW1wb3J0IHsgb2ZjVG9rZW4gfSBmcm9tICcuL29mYyc7XG5pbXBvcnQgeyBCYXNlQ29pbiwgQ29pbkZlYXR1cmUsIER5bmFtaWNDb2luIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEFtc05ldHdvcmtDb25maWdNYXAsIEFtc1Rva2VuQ29uZmlnLCBUcmltbWVkQW1zVG9rZW5Db25maWcgfSBmcm9tICcuL3Rva2VuQ29uZmlnJztcbmltcG9ydCB7IENvaW5NYXAgfSBmcm9tICcuL21hcCc7XG5pbXBvcnQgeyBCYXNlTmV0d29yaywgZ2V0TmV0d29yaywgZ2V0TmV0d29ya3NNYXAsIE5ldHdvcmtUeXBlIH0gZnJvbSAnLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2VucyB9IGZyb20gJy4vbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMnO1xuaW1wb3J0IHsgb2ZjRXJjMjBDb2lucywgdE9mY0VyYzIwQ29pbnMgfSBmcm9tICcuL2NvaW5zL29mY0VyYzIwQ29pbnMnO1xuaW1wb3J0IHsgb2ZjQ29pbnMgfSBmcm9tICcuL2NvaW5zL29mY0NvaW5zJztcbmltcG9ydCB7IGFsbENvaW5zQW5kVG9rZW5zIH0gZnJvbSAnLi9hbGxDb2luc0FuZFRva2Vucyc7XG5pbXBvcnQgeyBib3RPZmNUb2tlbnMgfSBmcm9tICcuL2NvaW5zL2JvdE9mY1Rva2Vucyc7XG5cbmV4cG9ydCBjb25zdCBjb2lucyA9IENvaW5NYXAuZnJvbUNvaW5zKFtcbiAgLi4uYWxsQ29pbnNBbmRUb2tlbnMsXG4gIC4uLm9mY0VyYzIwQ29pbnMsXG4gIC4uLnRPZmNFcmMyMENvaW5zLFxuICAuLi5vZmNDb2lucyxcbiAgLi4uYm90T2ZjVG9rZW5zLFxuXSk7XG5cbi8vIEJ1aWxkIGEgbWFwIG9mIEVSQzIwLXN1cHBvcnRpbmcgY2hhaW4gZmFtaWx5IG5hbWVzIHRvIHRoZWlyIG1haW5uZXQgY29pbiBuYW1lc1xuLy8gTWFwcyBmYW1pbHkgLT4gY29pbiBuYW1lIChlLmcuLCAnaXAnIC0+ICdpcCcpXG5jb25zdCBlcmMyMENoYWluVG9OYW1lTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbmFsbENvaW5zQW5kVG9rZW5zLmZvckVhY2goKGNvaW4pID0+IHtcbiAgaWYgKFxuICAgIGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDMjApICYmXG4gICAgY29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgJiZcbiAgICAhY29pbi5pc1Rva2VuXG4gICkge1xuICAgIGVyYzIwQ2hhaW5Ub05hbWVNYXBbY29pbi5mYW1pbHldID0gY29pbi5uYW1lO1xuICB9XG59KTtcblxuY29uc3QgZXJjNzIxQ2hhaW5Ub05hbWVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbmFsbENvaW5zQW5kVG9rZW5zLmZvckVhY2goKGNvaW4pID0+IHtcbiAgaWYgKFxuICAgIGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDNzIxKSAmJlxuICAgIGNvaW4ubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUICYmXG4gICAgIWNvaW4uaXNUb2tlblxuICApIHtcbiAgICBlcmM3MjFDaGFpblRvTmFtZU1hcFtjb2luLmZhbWlseV0gPSBjb2luLm5hbWU7XG4gIH1cbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW4odG9rZW46IEFtc1Rva2VuQ29uZmlnKTogUmVhZG9ubHk8QmFzZUNvaW4+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0b2tlbi5pc1Rva2VuKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBidWlsZER5bmFtaWNDb2luKHRva2VuKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gYnVpbGQgZHluYW1pYyBjb2luIGZvciAke3Rva2VuLm5hbWV9ICgke3Rva2VuLmlkfSk6YCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaW5pdGlhbGl6ZXJNYXA6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIGFsZ286IGFsZ29Ub2tlbixcbiAgICBhcHQ6IGFwdFRva2VuLFxuICAgIGFyYmV0aDogYXJiZXRoRXJjMjAsXG4gICAgYXZheGM6IGF2YXhFcmMyMCxcbiAgICBiYXNlZXRoOiBlcmMyMFRva2VuLFxuICAgIGJlcmE6IGJlcmFFcmMyMCxcbiAgICBmbG93OiBlcmMyMFRva2VuLFxuICAgIGxpbmVhZXRoOiBlcmMyMFRva2VuLFxuICAgIHNlaWV2bTogZXJjMjBUb2tlbixcbiAgICBtb246IGVyYzIwVG9rZW4sXG4gICAgeGRjOiBlcmMyMFRva2VuLFxuICAgIGJzYzogYnNjVG9rZW4sXG4gICAgY2VsbzogY2Vsb1Rva2VuLFxuICAgIGNvc21vczogY29zbW9zVG9rZW4sXG4gICAgZXRoOiBlcmMyMCxcbiAgICBlb3M6IGVvc1Rva2VuLFxuICAgIGhiYXI6IGhlZGVyYVRva2VuLFxuICAgIG5lYXI6IG5lcDE0MVRva2VuLFxuICAgIG9wZXRoOiBvcGV0aEVyYzIwLFxuICAgIHBvbHlnb246IHBvbHlnb25FcmMyMCxcbiAgICBzb2w6IHNvbFRva2VuLFxuICAgIHN0eDogc2lwMTBUb2tlbixcbiAgICBzdWk6IHN1aVRva2VuLFxuICAgIHRhbzogdGFvVG9rZW4sXG4gICAgcG9seXg6IHBvbHl4VG9rZW4sXG4gICAgdHJ4OiB0cm9uVG9rZW4sXG4gICAgdmV0OiB2ZXRUb2tlbixcbiAgICB4bG06IHN0ZWxsYXJUb2tlbixcbiAgICB4cnA6IHhycFRva2VuLFxuICAgIG9mYzogb2ZjVG9rZW4sXG4gICAgYWRhOiBhZGFUb2tlbixcbiAgICB0b246IGpldHRvblRva2VuLFxuICB9O1xuXG4gIC8vIGR5bmFtaWNhbGx5IGFkZCBlcmMyMCB0b2tlbiBpbml0aWFsaXplcnMgZm9yIGV0aCBsaWtlIGNoYWlucyB0byB0aGUgaW5pdGlhbGl6ZXIgbWFwXG4gIE9iamVjdC5rZXlzKGVyYzIwQ2hhaW5Ub05hbWVNYXApLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGluaXRpYWxpemVyTWFwW2tleV0gPSBlcmMyMFRva2VuO1xuICB9KTtcblxuICBPYmplY3Qua2V5cyhlcmM3MjFDaGFpblRvTmFtZU1hcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgaW5pdGlhbGl6ZXJNYXBba2V5XSA9IGVyYzcyMVRva2VuO1xuICB9KTtcblxuICAvL3JldHVybiB0aGUgQmFzZUNvaW4gZnJvbSBkZWZhdWx0IGNvaW4gbWFwIGlmIHByZXNlbnRcbiAgaWYgKGlzQ29pblByZXNlbnRJbkNvaW5NYXAoeyAuLi50b2tlbiB9KSkge1xuICAgIGlmIChjb2lucy5oYXModG9rZW4ubmFtZSkpIHtcbiAgICAgIHJldHVybiBjb2lucy5nZXQodG9rZW4ubmFtZSk7XG4gICAgfVxuICAgIGlmIChjb2lucy5oYXModG9rZW4uaWQpKSB7XG4gICAgICByZXR1cm4gY29pbnMuZ2V0KHRva2VuLmlkKTtcbiAgICB9XG4gICAgaWYgKHRva2VuLmFsaWFzICYmIGNvaW5zLmhhcyh0b2tlbi5hbGlhcykpIHtcbiAgICAgIHJldHVybiBjb2lucy5nZXQodG9rZW4uYWxpYXMpO1xuICAgIH1cbiAgfVxuICBjb25zdCBmYW1pbHkgPSB0b2tlbi5mYW1pbHk7XG4gIGNvbnN0IGluaXRpYWxpemVyID0gaW5pdGlhbGl6ZXJNYXBbZmFtaWx5XSBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBSZWFkb25seTxCYXNlQ29pbj47XG4gIGlmICghaW5pdGlhbGl6ZXIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgY29tbW9uQXJncyA9IFtcbiAgICB0b2tlbi5pZCxcbiAgICB0b2tlbi5uYW1lLFxuICAgIHRva2VuLmZ1bGxOYW1lLFxuICAgIHRva2VuLmRlY2ltYWxQbGFjZXMsXG4gICAgdG9rZW4uYXNzZXQsXG4gICAgdG9rZW4uZmVhdHVyZXMsXG4gICAgdG9rZW4ucHJlZml4LFxuICAgIHRva2VuLnN1ZmZpeCxcbiAgICB0b2tlbi5uZXR3b3JrLFxuICAgIHRva2VuLnByaW1hcnlLZXlDdXJ2ZSxcbiAgXTtcblxuICBzd2l0Y2ggKGZhbWlseSkge1xuICAgIGNhc2UgZXJjMjBDaGFpblRvTmFtZU1hcFtmYW1pbHldOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzIHx8IHRva2VuLnRva2VuQWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIHRva2VuLmFzc2V0LFxuICAgICAgICB0b2tlbi5uZXR3b3JrLFxuICAgICAgICB0b2tlbi5mZWF0dXJlcyxcbiAgICAgICAgdG9rZW4ucHJlZml4LFxuICAgICAgICB0b2tlbi5zdWZmaXgsXG4gICAgICAgIHRva2VuLnByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcbiAgICBjYXNlIGVyYzcyMUNoYWluVG9OYW1lTWFwW2ZhbWlseV06XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgMyksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZVxuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MsIC8vIGNvbnRyYWN0QWRkcmVzc1xuICAgICAgICB0b2tlbi5uZXR3b3JrLFxuICAgICAgICB0b2tlbi5mZWF0dXJlcyxcbiAgICAgICAgdG9rZW4ucHJlZml4LFxuICAgICAgICB0b2tlbi5zdWZmaXgsXG4gICAgICAgIHRva2VuLnByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcbiAgICBjYXNlICdhcmJldGgnOlxuICAgIGNhc2UgJ2F2YXhjJzpcbiAgICBjYXNlICdiYXNlZXRoJzpcbiAgICBjYXNlICdiZXJhJzpcbiAgICBjYXNlICdic2MnOlxuICAgIGNhc2UgJ2Zsb3cnOlxuICAgIGNhc2UgJ2xpbmVhZXRoJzpcbiAgICBjYXNlICdzZWlldm0nOlxuICAgIGNhc2UgJ21vbic6XG4gICAgY2FzZSAneGRjJzpcbiAgICBjYXNlICdjZWxvJzpcbiAgICBjYXNlICdldGgnOlxuICAgIGNhc2UgJ29wZXRoJzpcbiAgICBjYXNlICdwb2x5Z29uJzpcbiAgICBjYXNlICd0cngnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzIHx8IHRva2VuLnRva2VuQWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAnYXB0JzpcbiAgICAgIGNvbnN0IHsgaW5pdEZ1bmMsIG9iamVjdElkIH0gPSBnZXRBcHRUb2tlbkluaXRpYWxpemVyKHRva2VuKTtcbiAgICAgIHJldHVybiBpbml0RnVuYyhcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIG9iamVjdElkLFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ3ZldCc6XG4gICAgICBjb25zdCB7IHZldEluaXRGdW5jLCB2ZXRPYmplY3RJZCwgaXNORlQgfSA9IGdldFZldFRva2VuSW5pdGlhbGl6ZXIodG9rZW4pO1xuICAgICAgaWYgKGlzTkZUKSB7XG4gICAgICAgIHJldHVybiB2ZXRJbml0RnVuYyhcbiAgICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDMpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWVcbiAgICAgICAgICB2ZXRPYmplY3RJZCxcbiAgICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZldEluaXRGdW5jKFxuICAgICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICAgIHZldE9iamVjdElkLFxuICAgICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICBjYXNlICdzdHgnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4uYXNzZXRJZCwgLy8gYXNzZXRJZFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ2FsZ28nOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDIpLCAvLyBpZCwgbmFtZVxuICAgICAgICB0b2tlbi5hbGlhcywgLy8gYWxpYXNcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgyKSAvLyBmdWxsTmFtZSwgZGVjaW1hbCwgYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuXG4gICAgY2FzZSAnZW9zJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLmNvbnRyYWN0TmFtZSwgLy8gY29udHJhY3ROYW1lXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCwgOCksIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXhcbiAgICAgICAgdG9rZW4uc3ltYm9sLCAvLyBzeW1ib2xcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg4KSAvLyBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICdoYmFyJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCAzKSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lXG4gICAgICAgIHRva2VuLm5ldHdvcmssIC8vIG5ldHdvcmtcbiAgICAgICAgdG9rZW4uZGVjaW1hbFBsYWNlcyxcbiAgICAgICAgdG9rZW4uYXNzZXQsXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNSwgOCksIC8vIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeFxuICAgICAgICB0b2tlbi5wcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG5cbiAgICBjYXNlICdzb2wnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4udG9rZW5BZGRyZXNzLCAvLyB0b2tlbkFkZHJlc3NcbiAgICAgICAgdG9rZW4uY29udHJhY3RBZGRyZXNzLCAvLyBjb250cmFjdEFkZHJlc3NcbiAgICAgICAgdG9rZW4uYXNzZXQsXG4gICAgICAgIHRva2VuLmZlYXR1cmVzLFxuICAgICAgICB0b2tlbi5wcm9ncmFtSWQsXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNikgLy8gcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ3N1aSc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5wYWNrYWdlSWQsIC8vIHBhY2thZ2VJZFxuICAgICAgICB0b2tlbi5tb2R1bGUsIC8vIG1vZHVsZVxuICAgICAgICB0b2tlbi5zeW1ib2wsIC8vIHN5bWJvbFxuICAgICAgICB0b2tlbi5jb250cmFjdEFkZHJlc3MsIC8vIGNvbnRyYWN0QWRkcmVzc1xuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ3Rhbyc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5zdWJuZXRJZCwgLy8gc3VibmV0SWRcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG4gICAgY2FzZSAncG9seXgnOlxuICAgICAgcmV0dXJuIGluaXRpYWxpemVyKFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDAsIDQpLCAvLyBpZCwgbmFtZSwgZnVsbE5hbWUsIGRlY2ltYWxQbGFjZXNcbiAgICAgICAgdG9rZW4udGlja2VyLCAvLyB0aWNrZXJcbiAgICAgICAgdG9rZW4uYXNzZXRJZCwgLy8gYXNzZXRJZFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQpIC8vIGFzc2V0LCBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ3hsbSc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNSksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlcywgYXNzZXRcbiAgICAgICAgdG9rZW4uZG9tYWluLCAvLyBkb21haW5cbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg1KSAvLyBmZWF0dXJlcywgcHJlZml4LCBzdWZmaXgsIG5ldHdvcmssIHByaW1hcnlLZXlDdXJ2ZVxuICAgICAgKTtcblxuICAgIGNhc2UgJ3hycCc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgNCksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5pc3N1ZXJBZGRyZXNzLCAvLyBpc3N1ZXJBZGRyZXNzXG4gICAgICAgIHRva2VuLmN1cnJlY255Y29kZSwgLy8gY3VycmVuY3lDb2RlXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIHRva2VuLmRvbWFpbiwgLy8gZG9tYWluXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuICAgIGNhc2UgJ29mYyc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3MsIC8vIGlkLCBuYW1lLCBmdWxsTmFtZSwgZGVjaW1hbFBsYWNlcywgYXNzZXQsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICAgdG9rZW4uYmFzZVVuaXQsIC8vIGJhc2VVbml0XG4gICAgICAgIHRva2VuLmlzVG9rZW4sIC8vIGlzVG9rZW5cbiAgICAgICAgdG9rZW4ua2luZCwgLy8ga2luZFxuICAgICAgICB0b2tlbi5hZGRyZXNzQ29pbiAvLyBhZGRyZXNzQ29pblxuICAgICAgKTtcbiAgICBjYXNlICdhc2knOlxuICAgIGNhc2UgJ2F0b20nOlxuICAgIGNhc2UgJ2JhYnknOlxuICAgIGNhc2UgJ2JsZCc6XG4gICAgY2FzZSAnY29yZXVtJzpcbiAgICBjYXNlICdjcm9ub3MnOlxuICAgIGNhc2UgJ2hhc2gnOlxuICAgIGNhc2UgJ2luamVjdGl2ZSc6XG4gICAgY2FzZSAnaW5pdGlhJzpcbiAgICBjYXNlICdvc21vJzpcbiAgICBjYXNlICd0aG9yJzpcbiAgICBjYXNlICdzZWknOlxuICAgIGNhc2UgJ3RpYSc6XG4gICAgY2FzZSAnemV0YSc6XG4gICAgICByZXR1cm4gaW5pdGlhbGl6ZXIoXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoMCwgMyksIC8vIGlkLCBuYW1lLCBmdWxsTmFtZVxuICAgICAgICB0b2tlbi5kZW5vbSwgLy8gZGVub21cbiAgICAgICAgdG9rZW4uZGVjaW1hbFBsYWNlcywgLy8gZGVjaW1hbFBsYWNlc1xuICAgICAgICB0b2tlbi5uZXR3b3JrLCAvLyBuZXR3b3JrXG4gICAgICAgIHRva2VuLmJhc2VVbml0LCAvLyBiYXNlVW5pdFxuICAgICAgICAuLi5jb21tb25BcmdzLnNsaWNlKDQsIDgpLCAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4XG4gICAgICAgIHRva2VuLnByaW1hcnlLZXlDdXJ2ZSAvLyBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG4gICAgY2FzZSAnYWRhJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLmFzc2V0TmFtZSxcbiAgICAgICAgdG9rZW4ucG9saWN5SWQsXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSg0KSAvLyBhc3NldCwgZmVhdHVyZXMsIHByZWZpeCwgc3VmZml4LCBuZXR3b3JrLCBwcmltYXJ5S2V5Q3VydmVcbiAgICAgICk7XG4gICAgY2FzZSAndG9uJzpcbiAgICAgIHJldHVybiBpbml0aWFsaXplcihcbiAgICAgICAgLi4uY29tbW9uQXJncy5zbGljZSgwLCA0KSwgLy8gaWQsIG5hbWUsIGZ1bGxOYW1lLCBkZWNpbWFsUGxhY2VzXG4gICAgICAgIHRva2VuLmNvbnRyYWN0QWRkcmVzcywgLy8gY29udHJhY3RBZGRyZXNzXG4gICAgICAgIC4uLmNvbW1vbkFyZ3Muc2xpY2UoNCkgLy8gYXNzZXQsIGZlYXR1cmVzLCBwcmVmaXgsIHN1ZmZpeCwgbmV0d29yaywgcHJpbWFyeUtleUN1cnZlXG4gICAgICApO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSByZWFsIER5bmFtaWNDb2luICsgRHluYW1pY05ldHdvcmsgaW5zdGFuY2UgZm9yIEFNUy1kaXNjb3ZlcmVkIGJhc2UgY2hhaW5zXG4gKiB3aG9zZSBmYW1pbHkgaXMgbm90IHlldCByZWdpc3RlcmVkIGluIHRoZSBTREsncyBpbml0aWFsaXplck1hcC5cbiAqIENhbGxlZCBmcm9tIGNyZWF0ZVRva2VuKCkgYXMgYSBmYWxsYmFjayB3aGVuIG5vIGluaXRpYWxpemVyIGV4aXN0cyBhbmQgaXNUb2tlbiBpcyBmYWxzZS5cbiAqL1xuZnVuY3Rpb24gYnVpbGREeW5hbWljQ29pbih0b2tlbjogQW1zVG9rZW5Db25maWcpOiBSZWFkb25seTxCYXNlQ29pbj4ge1xuICBjb25zdCBuZXR3b3JrID0gdG9rZW4ubmV0d29yayBpbnN0YW5jZW9mIEJhc2VOZXR3b3JrID8gdG9rZW4ubmV0d29yayA6IGdldE5ldHdvcmsodG9rZW4ubmV0d29yayBhcyBzdHJpbmcpO1xuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKFxuICAgIG5ldyBEeW5hbWljQ29pbih7XG4gICAgICBpZDogdG9rZW4uaWQsXG4gICAgICBuYW1lOiB0b2tlbi5uYW1lLFxuICAgICAgZnVsbE5hbWU6IHRva2VuLmZ1bGxOYW1lLFxuICAgICAgZGVjaW1hbFBsYWNlczogdG9rZW4uZGVjaW1hbFBsYWNlcyxcbiAgICAgIGFzc2V0OiB0b2tlbi5hc3NldCBhcyBzdHJpbmcsXG4gICAgICBpc1Rva2VuOiB0b2tlbi5pc1Rva2VuLFxuICAgICAgZmVhdHVyZXM6ICh0b2tlbi5mZWF0dXJlcyA/PyBbXSkgYXMgc3RyaW5nW10sXG4gICAgICBuZXR3b3JrLFxuICAgICAgcHJpbWFyeUtleUN1cnZlOiAodG9rZW4ucHJpbWFyeUtleUN1cnZlIGFzIHN0cmluZykgPz8gJ3NlY3AyNTZrMScsXG4gICAgICBwcmVmaXg6IHRva2VuLnByZWZpeCA/PyAnJyxcbiAgICAgIHN1ZmZpeDogdG9rZW4uc3VmZml4ID8/IHRva2VuLm5hbWUudG9VcHBlckNhc2UoKSxcbiAgICAgIGJhc2VVbml0OiAodG9rZW4uYmFzZVVuaXQgYXMgc3RyaW5nKSA/PyAnJyxcbiAgICAgIGtpbmQ6ICh0b2tlbi5raW5kIGFzIHN0cmluZykgPz8gJ2NyeXB0bycsXG4gICAgICBhbGlhczogdG9rZW4uYWxpYXMsXG4gICAgfSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0QXB0VG9rZW5Jbml0aWFsaXplcih0b2tlbjogQW1zVG9rZW5Db25maWcpIHtcbiAgaWYgKHRva2VuLmFzc2V0SWQpIHtcbiAgICAvLyB1c2VkIGZvciBmdW5naWJsZS1hc3NldHMgLyBsZWdhY3kgY29pbnMgZXRjLlxuICAgIHJldHVybiB7XG4gICAgICBpbml0RnVuYzogYXB0VG9rZW4gYXMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gUmVhZG9ubHk8QmFzZUNvaW4+LFxuICAgICAgb2JqZWN0SWQ6IHRva2VuLmFzc2V0SWQsXG4gICAgfTtcbiAgfVxuICAvLyB1c2VkIGZvciBub24tZnVuZ2libGUgdG9rZW4gKE5GVCkgY29sbGVjdGlvbnNcbiAgcmV0dXJuIHtcbiAgICBpbml0RnVuYzogYXB0TkZUQ29sbGVjdGlvbiBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBSZWFkb25seTxCYXNlQ29pbj4sXG4gICAgb2JqZWN0SWQ6IHRva2VuLm5mdENvbGxlY3Rpb25JZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VmV0VG9rZW5Jbml0aWFsaXplcih0b2tlbjogQW1zVG9rZW5Db25maWcpIHtcbiAgaWYgKHRva2VuLm5mdENvbGxlY3Rpb25JZCkge1xuICAgIHJldHVybiB7XG4gICAgICB2ZXRJbml0RnVuYzogdmV0TkZUQ29sbGVjdGlvbiBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBSZWFkb25seTxCYXNlQ29pbj4sXG4gICAgICB2ZXRPYmplY3RJZDogdG9rZW4ubmZ0Q29sbGVjdGlvbklkLFxuICAgICAgaXNORlQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdmV0SW5pdEZ1bmM6IHZldFRva2VuIGFzICguLi5hcmdzOiB1bmtub3duW10pID0+IFJlYWRvbmx5PEJhc2VDb2luPixcbiAgICB2ZXRPYmplY3RJZDogdG9rZW4uY29udHJhY3RBZGRyZXNzLFxuICAgIGlzTkZUOiBmYWxzZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29pblByZXNlbnRJbkNvaW5NYXAoeyBuYW1lLCBpZCwgYWxpYXMgfTogeyBuYW1lOiBzdHJpbmc7IGlkPzogc3RyaW5nOyBhbGlhcz86IHN0cmluZyB9KTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKGNvaW5zLmhhcyhuYW1lKSB8fCAoaWQgJiYgY29pbnMuaGFzKGlkKSkgfHwgKGFsaWFzICYmIGNvaW5zLmhhcyhhbGlhcykpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRva2VuTWFwVXNpbmdDb25maWdEZXRhaWxzKHRva2VuQ29uZmlnTWFwOiBSZWNvcmQ8c3RyaW5nLCBBbXNUb2tlbkNvbmZpZ1tdPik6IENvaW5NYXAge1xuICBjb25zdCBCYXNlQ29pbnM6IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3QgbmZ0QW5kT3RoZXJUb2tlbnMgPSBuZXcgU2V0KFtcbiAgICAnZXJjNzIxOmJzY3Rva2VuJyxcbiAgICAndGVyYzcyMTpic2N0b2tlbicsXG4gICAgJ2VyYzExNTU6YnNjdG9rZW4nLFxuICAgICd0ZXJjMTE1NTpic2N0b2tlbicsXG4gICAgJ2VyYzcyMTp3aXRjaCcsXG4gICAgJ2VyYzcyMTp0b2tlbicsXG4gICAgJ2VyYzExNTU6dG9rZW4nLFxuICAgICdub25zdGFuZGFyZDp0b2tlbicsXG4gICAgJ3RlcmM3MjE6dG9rZW4nLFxuICAgICd0ZXJjMTE1NTp0b2tlbicsXG4gICAgJ3Rub25zdGFuZGFyZDp0b2tlbicsXG4gICAgJ3RlcmM3MjE6Yml0Z29lcmM3MjEnLFxuICAgICd0ZXJjMTE1NTpiaXRnb2VyYzExNTUnLFxuICAgICd0ZXJjNzIxOmhvb2RpZGonLFxuICAgICdlcmM3MjE6cG9seWdvbnRva2VuJyxcbiAgICAnZXJjMTE1NTpwb2x5Z29udG9rZW4nLFxuICAgICd0ZXJjNzIxOnBvbHlnb250b2tlbicsXG4gICAgJ3RlcmMxMTU1OnBvbHlnb250b2tlbicsXG4gICAgJ2VyYzcyMTpzb25laXVtdG9rZW4nLFxuICAgICdlcmMxMTU1OnNvbmVpdW10b2tlbicsXG4gICAgJ3RlcmM3MjE6c29uZWl1bXRva2VuJyxcbiAgICAndGVyYzExNTU6c29uZWl1bXRva2VuJyxcbiAgXSk7XG5cbiAgLy8gQWRkIGFsbCB0aGUgY29pbnMgZnJvbSBzdGF0aWNzIGNvaW4gbWFwIGZpcnN0XG4gIGNvaW5zLmZvckVhY2goKGNvaW4sIGNvaW5OYW1lKSA9PiB7XG4gICAgQmFzZUNvaW5zLnNldChjb2luTmFtZSwgY29pbik7XG4gIH0pO1xuXG4gIC8vIGFkZCB0aGUgdG9rZW5zIG5vdCBwcmVzZW50IGluIHRoZSBzdGF0aWMgY29pbiBtYXBcbiAgZm9yIChjb25zdCB0b2tlbkNvbmZpZ3Mgb2YgT2JqZWN0LnZhbHVlcyh0b2tlbkNvbmZpZ01hcCkpIHtcbiAgICBjb25zdCB0b2tlbkNvbmZpZyA9IHRva2VuQ29uZmlnc1swXTtcblxuICAgIGlmICghaXNDb2luUHJlc2VudEluQ29pbk1hcCh7IC4uLnRva2VuQ29uZmlnIH0pICYmICFuZnRBbmRPdGhlclRva2Vucy5oYXModG9rZW5Db25maWcubmFtZSkpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gY3JlYXRlVG9rZW4odG9rZW5Db25maWcpO1xuICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgIEJhc2VDb2lucy5zZXQodG9rZW4ubmFtZSwgdG9rZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBDb2luTWFwLmZyb21Db2lucyhBcnJheS5mcm9tKEJhc2VDb2lucy52YWx1ZXMoKSkpO1xufVxuXG4vKipcbiAqIEVucmljaCBiYXNlIGNoYWluIGNvaW5zIChpc1Rva2VuPWZhbHNlKSB3aXRoIGZlYXR1cmVzIGZyb20gdGhlIEFNUyBuZXR3b3JrcyBtYXAuXG4gKlxuICogY3JlYXRlVG9rZW5NYXBVc2luZ1RyaW1tZWRDb25maWdEZXRhaWxzIHJlYWRzIGZlYXR1cmVzIGZvciBiYXNlIGNoYWlucyBmcm9tXG4gKiBUcmltbWVkQW1zVG9rZW5Db25maWcuYWRkaXRpb25hbEZlYXR1cmVzLiBUaGUgYXNzZXRzTGlzdCBlbmRwb2ludCByZXR1cm5zIGJhc2UgY2hhaW5zIHdpdGggbm8gZmVhdHVyZXM7XG4gKiBmZWF0dXJlcyBhcmUgaW4gdGhlIG5ldHdvcmtzIGVuZHBvaW50ICgvYXBpL3YxL25ldHdvcmtzLzpuZXR3b3JrKSwgbWF0Y2hlZCBieSBjb2luLm5ldHdvcmsubmFtZSA9PT0gbmV0d29ya3NFbnRyeS5uYW1lLlxuICpcbiAqIENvaW5zIHRoYXQgYWxyZWFkeSBoYXZlIGFkZGl0aW9uYWxGZWF0dXJlcyBkZWZpbmVkIGFyZSBsZWZ0IHVuY2hhbmdlZC5cbiAqIENvaW5zIHdob3NlIG5ldHdvcmsubmFtZSBoYXMgbm8gbWF0Y2ggaW4gbmV0d29ya3NNYXAgYXJlIGxlZnQgdW5jaGFuZ2VkIChlbXB0eSBmZWF0dXJlcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnJpY2hCYXNlQ2hhaW5GZWF0dXJlcyhcbiAgY29pblRva2VuTWFwOiBSZWNvcmQ8c3RyaW5nLCBUcmltbWVkQW1zVG9rZW5Db25maWdbXT4sXG4gIG5ldHdvcmtzTWFwOiBBbXNOZXR3b3JrQ29uZmlnTWFwXG4pOiBSZWNvcmQ8c3RyaW5nLCBUcmltbWVkQW1zVG9rZW5Db25maWdbXT4ge1xuICBjb25zdCBmZWF0dXJlc0J5TmV0d29ya05hbWUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KFxuICAgIE9iamVjdC52YWx1ZXMobmV0d29ya3NNYXApLm1hcCgobmV0KTogW3N0cmluZywgc3RyaW5nW11dID0+IFtuZXQubmFtZSwgbmV0LmZlYXR1cmVzXSlcbiAgKTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhjb2luVG9rZW5NYXApLm1hcCgoW2tleSwgY29pbnNdKSA9PiBbXG4gICAgICBrZXksXG4gICAgICBjb2lucy5tYXAoKGNvaW4pID0+IHtcbiAgICAgICAgaWYgKGNvaW4uaXNUb2tlbiB8fCBjb2luLmFkZGl0aW9uYWxGZWF0dXJlcyAhPT0gdW5kZWZpbmVkIHx8IGNvaW4ubmV0d29yayA9PT0gdW5kZWZpbmVkKSByZXR1cm4gY29pbjtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBmZWF0dXJlc0J5TmV0d29ya05hbWUuZ2V0KGNvaW4ubmV0d29yay5uYW1lKTtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzICE9PSB1bmRlZmluZWQgPyB7IC4uLmNvaW4sIGFkZGl0aW9uYWxGZWF0dXJlczogZmVhdHVyZXMgfSA6IGNvaW47XG4gICAgICB9KSxcbiAgICBdKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW5NYXBVc2luZ1RyaW1tZWRDb25maWdEZXRhaWxzKFxuICByZWR1Y2VkVG9rZW5Db25maWdNYXA6IFJlY29yZDxzdHJpbmcsIFRyaW1tZWRBbXNUb2tlbkNvbmZpZ1tdPlxuKTogQ29pbk1hcCB7XG4gIGNvbnN0IGFtc1Rva2VuQ29uZmlnTWFwOiBSZWNvcmQ8c3RyaW5nLCBBbXNUb2tlbkNvbmZpZ1tdPiA9IHt9O1xuICBjb25zdCBuZXR3b3JrTmFtZU1hcCA9IGdldE5ldHdvcmtzTWFwKCk7XG5cbiAgZm9yIChjb25zdCB0b2tlbkNvbmZpZ3Mgb2YgT2JqZWN0LnZhbHVlcyhyZWR1Y2VkVG9rZW5Db25maWdNYXApKSB7XG4gICAgY29uc3QgdG9rZW5Db25maWcgPSB0b2tlbkNvbmZpZ3NbMF07XG4gICAgY29uc3QgbmV0d29yayA9IG5ldHdvcmtOYW1lTWFwLmdldCh0b2tlbkNvbmZpZy5uZXR3b3JrLm5hbWUpO1xuXG4gICAgaWYgKGlzQ29pblByZXNlbnRJbkNvaW5NYXAoeyAuLi50b2tlbkNvbmZpZyB9KSkgY29udGludWU7XG5cbiAgICBpZiAoIXRva2VuQ29uZmlnLmlzVG9rZW4pIHtcbiAgICAgIC8vIER5bmFtaWMgYmFzZSBjaGFpbiDigJQgbmV0d29yayBtdXN0IGJlIHByZS1yZWdpc3RlcmVkIGluIG5ldHdvcmtCeU5hbWUgbWFwIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAgICBpZiAobmV0d29yaykge1xuICAgICAgICBhbXNUb2tlbkNvbmZpZ01hcFt0b2tlbkNvbmZpZy5uYW1lXSA9IFtcbiAgICAgICAgICB7IC4uLnRva2VuQ29uZmlnLCBmZWF0dXJlczogdG9rZW5Db25maWcuYWRkaXRpb25hbEZlYXR1cmVzID8/IFtdLCBuZXR3b3JrIH0sXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChuZXR3b3JrICYmIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW25ldHdvcmsuZmFtaWx5XSkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBuZXcgU2V0KFtcbiAgICAgICAgLi4uKG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW25ldHdvcmsuZmFtaWx5XSB8fCBbXSksXG4gICAgICAgIC4uLih0b2tlbkNvbmZpZy5hZGRpdGlvbmFsRmVhdHVyZXMgfHwgW10pLFxuICAgICAgXSk7XG4gICAgICB0b2tlbkNvbmZpZy5leGNsdWRlZEZlYXR1cmVzPy5mb3JFYWNoKChmZWF0dXJlKSA9PiBmZWF0dXJlcy5kZWxldGUoZmVhdHVyZSkpO1xuICAgICAgYW1zVG9rZW5Db25maWdNYXBbdG9rZW5Db25maWcubmFtZV0gPSBbeyAuLi50b2tlbkNvbmZpZywgZmVhdHVyZXM6IEFycmF5LmZyb20oZmVhdHVyZXMpLCBuZXR3b3JrIH1dO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjcmVhdGVUb2tlbk1hcFVzaW5nQ29uZmlnRGV0YWlscyhhbXNUb2tlbkNvbmZpZ01hcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb2tlblVzaW5nVHJpbW1lZENvbmZpZ0RldGFpbHMoXG4gIHRva2VuQ29uZmlnOiBUcmltbWVkQW1zVG9rZW5Db25maWdcbik6IFJlYWRvbmx5PEJhc2VDb2luPiB8IHVuZGVmaW5lZCB7XG4gIGxldCBmdWxsVG9rZW5Db25maWc6IEFtc1Rva2VuQ29uZmlnIHwgdW5kZWZpbmVkO1xuICBjb25zdCBuZXR3b3JrTmFtZU1hcCA9IGdldE5ldHdvcmtzTWFwKCk7XG4gIGNvbnN0IG5ldHdvcmsgPSBuZXR3b3JrTmFtZU1hcC5nZXQodG9rZW5Db25maWcubmV0d29yay5uYW1lKTtcblxuICBpZiAoaXNDb2luUHJlc2VudEluQ29pbk1hcCh7IC4uLnRva2VuQ29uZmlnIH0pKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGlmICghdG9rZW5Db25maWcuaXNUb2tlbikge1xuICAgIC8vIER5bmFtaWMgYmFzZSBjaGFpbiDigJQgbmV0d29yayBtdXN0IGJlIHByZS1yZWdpc3RlcmVkIGluIG5ldHdvcmtCeU5hbWUgbWFwIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAgaWYgKG5ldHdvcmspIHtcbiAgICAgIHJldHVybiBjcmVhdGVUb2tlbih7IC4uLnRva2VuQ29uZmlnLCBmZWF0dXJlczogdG9rZW5Db25maWcuYWRkaXRpb25hbEZlYXR1cmVzID8/IFtdLCBuZXR3b3JrIH0gYXMgQW1zVG9rZW5Db25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKG5ldHdvcmsgJiYgbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnNbbmV0d29yay5mYW1pbHldKSB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSBuZXcgU2V0KFtcbiAgICAgIC4uLihuZXR3b3JrRmVhdHVyZU1hcEZvclRva2Vuc1tuZXR3b3JrLmZhbWlseV0gfHwgW10pLFxuICAgICAgLi4uKHRva2VuQ29uZmlnLmFkZGl0aW9uYWxGZWF0dXJlcyB8fCBbXSksXG4gICAgXSk7XG4gICAgdG9rZW5Db25maWcuZXhjbHVkZWRGZWF0dXJlcz8uZm9yRWFjaCgoZmVhdHVyZSkgPT4gZmVhdHVyZXMuZGVsZXRlKGZlYXR1cmUpKTtcbiAgICBmdWxsVG9rZW5Db25maWcgPSB7IC4uLnRva2VuQ29uZmlnLCBmZWF0dXJlczogQXJyYXkuZnJvbShmZWF0dXJlcyksIG5ldHdvcmsgfSBhcyBBbXNUb2tlbkNvbmZpZztcbiAgICByZXR1cm4gY3JlYXRlVG9rZW4oZnVsbFRva2VuQ29uZmlnKTtcbiAgfVxufVxuIl19
|
package/dist/src/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from './coins';
|
|
|
3
3
|
export * from './networks';
|
|
4
4
|
export * from './errors';
|
|
5
5
|
export * from './tokenConfig';
|
|
6
|
+
export { KaspaCoin } from './kaspa';
|
|
6
7
|
export { OfcCoin } from './ofc';
|
|
7
8
|
export { UtxoCoin } from './utxo';
|
|
8
9
|
export { LightningCoin } from './lightning';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,2BAA2B,EAC3B,SAAS,EACT,WAAW,EACX,OAAO,EACP,QAAQ,EACR,cAAc,EACd,2BAA2B,EAC3B,OAAO,EACP,WAAW,EACX,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACT,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,2BAA2B,EAC3B,SAAS,EACT,WAAW,EACX,OAAO,EACP,QAAQ,EACR,cAAc,EACd,2BAA2B,EAC3B,OAAO,EACP,WAAW,EACX,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACT,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -14,12 +14,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.generateTestErc20Token = exports.generateErc20Token = exports.generateTestErc20Coin = exports.generateErc20Coin = exports.networkFeatureMapForTokens = exports.CoinMap = exports.CantonToken = exports.JettonToken = exports.AdaToken = exports.CosmosChainToken = exports.VetNFTCollection = exports.VetToken = exports.Nep141Token = exports.Sip10Token = exports.AptNFTCollection = exports.AptCoin = exports.XrpCoin = exports.PolyxCoin = exports.TaoCoin = exports.SuiCoin = exports.TronErc20Coin = exports.HederaToken = exports.SolCoin = exports.NFTCollectionIdDefinedToken = exports.AvaxERC20Token = exports.AlgoCoin = exports.EosCoin = exports.StellarCoin = exports.Erc20Coin = exports.ContractAddressDefinedToken = exports.CeloCoin = exports.GasTankAccountCoin = exports.AccountCoin = exports.LightningCoin = exports.UtxoCoin = exports.OfcCoin = void 0;
|
|
17
|
+
exports.generateTestErc20Token = exports.generateErc20Token = exports.generateTestErc20Coin = exports.generateErc20Coin = exports.networkFeatureMapForTokens = exports.CoinMap = exports.CantonToken = exports.JettonToken = exports.AdaToken = exports.CosmosChainToken = exports.VetNFTCollection = exports.VetToken = exports.Nep141Token = exports.Sip10Token = exports.AptNFTCollection = exports.AptCoin = exports.XrpCoin = exports.PolyxCoin = exports.TaoCoin = exports.SuiCoin = exports.TronErc20Coin = exports.HederaToken = exports.SolCoin = exports.NFTCollectionIdDefinedToken = exports.AvaxERC20Token = exports.AlgoCoin = exports.EosCoin = exports.StellarCoin = exports.Erc20Coin = exports.ContractAddressDefinedToken = exports.CeloCoin = exports.GasTankAccountCoin = exports.AccountCoin = exports.LightningCoin = exports.UtxoCoin = exports.OfcCoin = exports.KaspaCoin = void 0;
|
|
18
18
|
__exportStar(require("./base"), exports);
|
|
19
19
|
__exportStar(require("./coins"), exports);
|
|
20
20
|
__exportStar(require("./networks"), exports);
|
|
21
21
|
__exportStar(require("./errors"), exports);
|
|
22
22
|
__exportStar(require("./tokenConfig"), exports);
|
|
23
|
+
var kaspa_1 = require("./kaspa");
|
|
24
|
+
Object.defineProperty(exports, "KaspaCoin", { enumerable: true, get: function () { return kaspa_1.KaspaCoin; } });
|
|
23
25
|
var ofc_1 = require("./ofc");
|
|
24
26
|
Object.defineProperty(exports, "OfcCoin", { enumerable: true, get: function () { return ofc_1.OfcCoin; } });
|
|
25
27
|
var utxo_1 = require("./utxo");
|
|
@@ -63,4 +65,4 @@ Object.defineProperty(exports, "generateErc20Coin", { enumerable: true, get: fun
|
|
|
63
65
|
Object.defineProperty(exports, "generateTestErc20Coin", { enumerable: true, get: function () { return generateERC20_1.generateTestErc20Coin; } });
|
|
64
66
|
Object.defineProperty(exports, "generateErc20Token", { enumerable: true, get: function () { return generateERC20_1.generateErc20Token; } });
|
|
65
67
|
Object.defineProperty(exports, "generateTestErc20Token", { enumerable: true, get: function () { return generateERC20_1.generateTestErc20Token; } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBdUI7QUFDdkIsMENBQXdCO0FBQ3hCLDZDQUEyQjtBQUMzQiwyQ0FBeUI7QUFDekIsZ0RBQThCO0FBQzlCLGlDQUFvQztBQUEzQixrR0FBQSxTQUFTLE9BQUE7QUFDbEIsNkJBQWdDO0FBQXZCLDhGQUFBLE9BQU8sT0FBQTtBQUNoQiwrQkFBa0M7QUFBekIsZ0dBQUEsUUFBUSxPQUFBO0FBQ2pCLHlDQUE0QztBQUFuQywwR0FBQSxhQUFhLE9BQUE7QUFDdEIscUNBNEJtQjtBQTNCakIsc0dBQUEsV0FBVyxPQUFBO0FBQ1gsNkdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsbUdBQUEsUUFBUSxPQUFBO0FBQ1Isc0hBQUEsMkJBQTJCLE9BQUE7QUFDM0Isb0dBQUEsU0FBUyxPQUFBO0FBQ1Qsc0dBQUEsV0FBVyxPQUFBO0FBQ1gsa0dBQUEsT0FBTyxPQUFBO0FBQ1AsbUdBQUEsUUFBUSxPQUFBO0FBQ1IseUdBQUEsY0FBYyxPQUFBO0FBQ2Qsc0hBQUEsMkJBQTJCLE9BQUE7QUFDM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ1Asc0dBQUEsV0FBVyxPQUFBO0FBQ1gsd0dBQUEsYUFBYSxPQUFBO0FBQ2Isa0dBQUEsT0FBTyxPQUFBO0FBQ1Asa0dBQUEsT0FBTyxPQUFBO0FBQ1Asb0dBQUEsU0FBUyxPQUFBO0FBQ1Qsa0dBQUEsT0FBTyxPQUFBO0FBQ1Asa0dBQUEsT0FBTyxPQUFBO0FBQ1AsMkdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIscUdBQUEsVUFBVSxPQUFBO0FBQ1Ysc0dBQUEsV0FBVyxPQUFBO0FBQ1gsbUdBQUEsUUFBUSxPQUFBO0FBQ1IsMkdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsMkdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsbUdBQUEsUUFBUSxPQUFBO0FBQ1Isc0dBQUEsV0FBVyxPQUFBO0FBQ1gsc0dBQUEsV0FBVyxPQUFBO0FBRWIsNkJBQWdDO0FBQXZCLDhGQUFBLE9BQU8sT0FBQTtBQUNoQiwyRUFBMEU7QUFBakUsd0lBQUEsMEJBQTBCLE9BQUE7QUFDbkMsdURBSytCO0FBSjdCLGtIQUFBLGlCQUFpQixPQUFBO0FBQ2pCLHNIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLG1IQUFBLGtCQUFrQixPQUFBO0FBQ2xCLHVIQUFBLHNCQUFzQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29pbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9uZXR3b3Jrcyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3Rva2VuQ29uZmlnJztcbmV4cG9ydCB7IEthc3BhQ29pbiB9IGZyb20gJy4va2FzcGEnO1xuZXhwb3J0IHsgT2ZjQ29pbiB9IGZyb20gJy4vb2ZjJztcbmV4cG9ydCB7IFV0eG9Db2luIH0gZnJvbSAnLi91dHhvJztcbmV4cG9ydCB7IExpZ2h0bmluZ0NvaW4gfSBmcm9tICcuL2xpZ2h0bmluZyc7XG5leHBvcnQge1xuICBBY2NvdW50Q29pbixcbiAgR2FzVGFua0FjY291bnRDb2luLFxuICBDZWxvQ29pbixcbiAgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuLFxuICBFcmMyMENvaW4sXG4gIFN0ZWxsYXJDb2luLFxuICBFb3NDb2luLFxuICBBbGdvQ29pbixcbiAgQXZheEVSQzIwVG9rZW4sXG4gIE5GVENvbGxlY3Rpb25JZERlZmluZWRUb2tlbixcbiAgU29sQ29pbixcbiAgSGVkZXJhVG9rZW4sXG4gIFRyb25FcmMyMENvaW4sXG4gIFN1aUNvaW4sXG4gIFRhb0NvaW4sXG4gIFBvbHl4Q29pbixcbiAgWHJwQ29pbixcbiAgQXB0Q29pbixcbiAgQXB0TkZUQ29sbGVjdGlvbixcbiAgU2lwMTBUb2tlbixcbiAgTmVwMTQxVG9rZW4sXG4gIFZldFRva2VuLFxuICBWZXRORlRDb2xsZWN0aW9uLFxuICBDb3Ntb3NDaGFpblRva2VuLFxuICBBZGFUb2tlbixcbiAgSmV0dG9uVG9rZW4sXG4gIENhbnRvblRva2VuLFxufSBmcm9tICcuL2FjY291bnQnO1xuZXhwb3J0IHsgQ29pbk1hcCB9IGZyb20gJy4vbWFwJztcbmV4cG9ydCB7IG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zIH0gZnJvbSAnLi9uZXR3b3JrRmVhdHVyZU1hcEZvclRva2Vucyc7XG5leHBvcnQge1xuICBnZW5lcmF0ZUVyYzIwQ29pbixcbiAgZ2VuZXJhdGVUZXN0RXJjMjBDb2luLFxuICBnZW5lcmF0ZUVyYzIwVG9rZW4sXG4gIGdlbmVyYXRlVGVzdEVyYzIwVG9rZW4sXG59IGZyb20gJy4vY29pbnMvZ2VuZXJhdGVFUkMyMCc7XG4iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { BaseCoin, CoinFeature, KeyCurve, UnderlyingAsset } from './base';
|
|
2
|
+
import { KaspaMainnet, KaspaTestnet } from './networks';
|
|
3
|
+
export interface KaspaConstructorOptions {
|
|
4
|
+
id: string;
|
|
5
|
+
fullName: string;
|
|
6
|
+
name: string;
|
|
7
|
+
network: KaspaMainnet | KaspaTestnet;
|
|
8
|
+
features: CoinFeature[];
|
|
9
|
+
asset: UnderlyingAsset;
|
|
10
|
+
prefix?: string;
|
|
11
|
+
suffix?: string;
|
|
12
|
+
primaryKeyCurve: KeyCurve;
|
|
13
|
+
}
|
|
14
|
+
export declare class KaspaCoin extends BaseCoin {
|
|
15
|
+
static readonly DEFAULT_FEATURES: CoinFeature[];
|
|
16
|
+
readonly network: KaspaMainnet | KaspaTestnet;
|
|
17
|
+
constructor(options: KaspaConstructorOptions);
|
|
18
|
+
protected disallowedFeatures(): Set<CoinFeature>;
|
|
19
|
+
protected requiredFeatures(): Set<CoinFeature>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Factory function for Kaspa coin instances.
|
|
23
|
+
*
|
|
24
|
+
* @param id uuid v4
|
|
25
|
+
* @param name unique identifier of the coin
|
|
26
|
+
* @param fullName Complete human-readable name of the coin
|
|
27
|
+
* @param network Network object for this coin
|
|
28
|
+
* @param asset Asset which this coin represents. This is the same for both mainnet and testnet variants of a coin.
|
|
29
|
+
* @param features? Features of this coin. Defaults to the DEFAULT_FEATURES defined in `KaspaCoin`
|
|
30
|
+
* @param prefix? Optional coin prefix. Defaults to empty string
|
|
31
|
+
* @param suffix? Optional coin suffix. Defaults to coin name.
|
|
32
|
+
* @param primaryKeyCurve The elliptic curve for this chain/token
|
|
33
|
+
*/
|
|
34
|
+
export declare function kaspa(id: string, name: string, fullName: string, network: KaspaMainnet | KaspaTestnet, asset: UnderlyingAsset, features?: CoinFeature[], prefix?: string, suffix?: string, primaryKeyCurve?: KeyCurve): Readonly<KaspaCoin>;
|
|
35
|
+
//# sourceMappingURL=kaspa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kaspa.d.ts","sourceRoot":"","sources":["../../src/kaspa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAY,WAAW,EAAY,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,GAAG,YAAY,CAAC;IACrC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,QAAQ,CAAC;CAC3B;AAED,qBAAa,SAAU,SAAQ,QAAQ;IACrC,gBAAuB,gBAAgB,gBAWrC;IAEF,SAAgB,OAAO,EAAE,YAAY,GAAG,YAAY,CAAC;gBAEzC,OAAO,EAAE,uBAAuB;IAY5C,SAAS,CAAC,kBAAkB,IAAI,GAAG,CAAC,WAAW,CAAC;IAIhD,SAAS,CAAC,gBAAgB,IAAI,GAAG,CAAC,WAAW,CAAC;CAG/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CACnB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,GAAG,YAAY,EACpC,KAAK,EAAE,eAAe,EACtB,QAAQ,GAAE,WAAW,EAA+B,EACpD,MAAM,SAAK,EACX,MAAM,GAAE,MAA2B,EACnC,eAAe,GAAE,QAA6B,uBAe/C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KaspaCoin = void 0;
|
|
4
|
+
exports.kaspa = kaspa;
|
|
5
|
+
const base_1 = require("./base");
|
|
6
|
+
class KaspaCoin extends base_1.BaseCoin {
|
|
7
|
+
constructor(options) {
|
|
8
|
+
super({
|
|
9
|
+
...options,
|
|
10
|
+
kind: base_1.CoinKind.CRYPTO,
|
|
11
|
+
isToken: false,
|
|
12
|
+
decimalPlaces: 8,
|
|
13
|
+
baseUnit: base_1.BaseUnit.KASPA,
|
|
14
|
+
});
|
|
15
|
+
this.network = options.network;
|
|
16
|
+
}
|
|
17
|
+
disallowedFeatures() {
|
|
18
|
+
return new Set([base_1.CoinFeature.ACCOUNT_MODEL]);
|
|
19
|
+
}
|
|
20
|
+
requiredFeatures() {
|
|
21
|
+
return new Set([base_1.CoinFeature.UNSPENT_MODEL]);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.KaspaCoin = KaspaCoin;
|
|
25
|
+
KaspaCoin.DEFAULT_FEATURES = [
|
|
26
|
+
base_1.CoinFeature.UNSPENT_MODEL,
|
|
27
|
+
base_1.CoinFeature.TSS,
|
|
28
|
+
base_1.CoinFeature.TSS_COLD,
|
|
29
|
+
base_1.CoinFeature.CUSTODY,
|
|
30
|
+
base_1.CoinFeature.CUSTODY_BITGO_TRUST,
|
|
31
|
+
base_1.CoinFeature.CUSTODY_BITGO_INDIA,
|
|
32
|
+
base_1.CoinFeature.CUSTODY_BITGO_MENA_FZE,
|
|
33
|
+
base_1.CoinFeature.CUSTODY_BITGO_CUSTODY_MENA_FZE,
|
|
34
|
+
base_1.CoinFeature.CUSTODY_BITGO_GERMANY,
|
|
35
|
+
base_1.CoinFeature.CUSTODY_BITGO_FRANKFURT,
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Factory function for Kaspa coin instances.
|
|
39
|
+
*
|
|
40
|
+
* @param id uuid v4
|
|
41
|
+
* @param name unique identifier of the coin
|
|
42
|
+
* @param fullName Complete human-readable name of the coin
|
|
43
|
+
* @param network Network object for this coin
|
|
44
|
+
* @param asset Asset which this coin represents. This is the same for both mainnet and testnet variants of a coin.
|
|
45
|
+
* @param features? Features of this coin. Defaults to the DEFAULT_FEATURES defined in `KaspaCoin`
|
|
46
|
+
* @param prefix? Optional coin prefix. Defaults to empty string
|
|
47
|
+
* @param suffix? Optional coin suffix. Defaults to coin name.
|
|
48
|
+
* @param primaryKeyCurve The elliptic curve for this chain/token
|
|
49
|
+
*/
|
|
50
|
+
function kaspa(id, name, fullName, network, asset, features = KaspaCoin.DEFAULT_FEATURES, prefix = '', suffix = name.toUpperCase(), primaryKeyCurve = base_1.KeyCurve.Secp256k1) {
|
|
51
|
+
return Object.freeze(new KaspaCoin({
|
|
52
|
+
id,
|
|
53
|
+
name,
|
|
54
|
+
fullName,
|
|
55
|
+
network,
|
|
56
|
+
prefix,
|
|
57
|
+
suffix,
|
|
58
|
+
features,
|
|
59
|
+
asset,
|
|
60
|
+
primaryKeyCurve,
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FzcGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMva2FzcGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBaUVBLHNCQXdCQztBQXpGRCxpQ0FBOEY7QUFlOUYsTUFBYSxTQUFVLFNBQVEsZUFBUTtJQWdCckMsWUFBWSxPQUFnQztRQUMxQyxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsZUFBUSxDQUFDLE1BQU07WUFDckIsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsQ0FBQztZQUNoQixRQUFRLEVBQUUsZUFBUSxDQUFDLEtBQUs7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFFUyxrQkFBa0I7UUFDMUIsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGtCQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsZ0JBQWdCO1FBQ3hCLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxrQkFBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7QUFsQ0gsOEJBbUNDO0FBbEN3QiwwQkFBZ0IsR0FBRztJQUN4QyxrQkFBVyxDQUFDLGFBQWE7SUFDekIsa0JBQVcsQ0FBQyxHQUFHO0lBQ2Ysa0JBQVcsQ0FBQyxRQUFRO0lBQ3BCLGtCQUFXLENBQUMsT0FBTztJQUNuQixrQkFBVyxDQUFDLG1CQUFtQjtJQUMvQixrQkFBVyxDQUFDLG1CQUFtQjtJQUMvQixrQkFBVyxDQUFDLHNCQUFzQjtJQUNsQyxrQkFBVyxDQUFDLDhCQUE4QjtJQUMxQyxrQkFBVyxDQUFDLHFCQUFxQjtJQUNqQyxrQkFBVyxDQUFDLHVCQUF1QjtDQUNwQyxDQUFDO0FBeUJKOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILFNBQWdCLEtBQUssQ0FDbkIsRUFBVSxFQUNWLElBQVksRUFDWixRQUFnQixFQUNoQixPQUFvQyxFQUNwQyxLQUFzQixFQUN0QixXQUEwQixTQUFTLENBQUMsZ0JBQWdCLEVBQ3BELE1BQU0sR0FBRyxFQUFFLEVBQ1gsU0FBaUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUNuQyxrQkFBNEIsZUFBUSxDQUFDLFNBQVM7SUFFOUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNsQixJQUFJLFNBQVMsQ0FBQztRQUNaLEVBQUU7UUFDRixJQUFJO1FBQ0osUUFBUTtRQUNSLE9BQU87UUFDUCxNQUFNO1FBQ04sTUFBTTtRQUNOLFFBQVE7UUFDUixLQUFLO1FBQ0wsZUFBZTtLQUNoQixDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiwgQmFzZVVuaXQsIENvaW5GZWF0dXJlLCBDb2luS2luZCwgS2V5Q3VydmUsIFVuZGVybHlpbmdBc3NldCB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBLYXNwYU1haW5uZXQsIEthc3BhVGVzdG5ldCB9IGZyb20gJy4vbmV0d29ya3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEthc3BhQ29uc3RydWN0b3JPcHRpb25zIHtcbiAgaWQ6IHN0cmluZztcbiAgZnVsbE5hbWU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBuZXR3b3JrOiBLYXNwYU1haW5uZXQgfCBLYXNwYVRlc3RuZXQ7XG4gIGZlYXR1cmVzOiBDb2luRmVhdHVyZVtdO1xuICBhc3NldDogVW5kZXJseWluZ0Fzc2V0O1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIHN1ZmZpeD86IHN0cmluZztcbiAgcHJpbWFyeUtleUN1cnZlOiBLZXlDdXJ2ZTtcbn1cblxuZXhwb3J0IGNsYXNzIEthc3BhQ29pbiBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0ZFQVRVUkVTID0gW1xuICAgIENvaW5GZWF0dXJlLlVOU1BFTlRfTU9ERUwsXG4gICAgQ29pbkZlYXR1cmUuVFNTLFxuICAgIENvaW5GZWF0dXJlLlRTU19DT0xELFxuICAgIENvaW5GZWF0dXJlLkNVU1RPRFksXG4gICAgQ29pbkZlYXR1cmUuQ1VTVE9EWV9CSVRHT19UUlVTVCxcbiAgICBDb2luRmVhdHVyZS5DVVNUT0RZX0JJVEdPX0lORElBLFxuICAgIENvaW5GZWF0dXJlLkNVU1RPRFlfQklUR09fTUVOQV9GWkUsXG4gICAgQ29pbkZlYXR1cmUuQ1VTVE9EWV9CSVRHT19DVVNUT0RZX01FTkFfRlpFLFxuICAgIENvaW5GZWF0dXJlLkNVU1RPRFlfQklUR09fR0VSTUFOWSxcbiAgICBDb2luRmVhdHVyZS5DVVNUT0RZX0JJVEdPX0ZSQU5LRlVSVCxcbiAgXTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbmV0d29yazogS2FzcGFNYWlubmV0IHwgS2FzcGFUZXN0bmV0O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEthc3BhQ29uc3RydWN0b3JPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGtpbmQ6IENvaW5LaW5kLkNSWVBUTyxcbiAgICAgIGlzVG9rZW46IGZhbHNlLFxuICAgICAgZGVjaW1hbFBsYWNlczogOCxcbiAgICAgIGJhc2VVbml0OiBCYXNlVW5pdC5LQVNQQSxcbiAgICB9KTtcblxuICAgIHRoaXMubmV0d29yayA9IG9wdGlvbnMubmV0d29yaztcbiAgfVxuXG4gIHByb3RlY3RlZCBkaXNhbGxvd2VkRmVhdHVyZXMoKTogU2V0PENvaW5GZWF0dXJlPiB7XG4gICAgcmV0dXJuIG5ldyBTZXQoW0NvaW5GZWF0dXJlLkFDQ09VTlRfTU9ERUxdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXF1aXJlZEZlYXR1cmVzKCk6IFNldDxDb2luRmVhdHVyZT4ge1xuICAgIHJldHVybiBuZXcgU2V0KFtDb2luRmVhdHVyZS5VTlNQRU5UX01PREVMXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIGZvciBLYXNwYSBjb2luIGluc3RhbmNlcy5cbiAqXG4gKiBAcGFyYW0gaWQgdXVpZCB2NFxuICogQHBhcmFtIG5hbWUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvaW5cbiAqIEBwYXJhbSBmdWxsTmFtZSBDb21wbGV0ZSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoZSBjb2luXG4gKiBAcGFyYW0gbmV0d29yayBOZXR3b3JrIG9iamVjdCBmb3IgdGhpcyBjb2luXG4gKiBAcGFyYW0gYXNzZXQgQXNzZXQgd2hpY2ggdGhpcyBjb2luIHJlcHJlc2VudHMuIFRoaXMgaXMgdGhlIHNhbWUgZm9yIGJvdGggbWFpbm5ldCBhbmQgdGVzdG5ldCB2YXJpYW50cyBvZiBhIGNvaW4uXG4gKiBAcGFyYW0gZmVhdHVyZXM/IEZlYXR1cmVzIG9mIHRoaXMgY29pbi4gRGVmYXVsdHMgdG8gdGhlIERFRkFVTFRfRkVBVFVSRVMgZGVmaW5lZCBpbiBgS2FzcGFDb2luYFxuICogQHBhcmFtIHByZWZpeD8gT3B0aW9uYWwgY29pbiBwcmVmaXguIERlZmF1bHRzIHRvIGVtcHR5IHN0cmluZ1xuICogQHBhcmFtIHN1ZmZpeD8gT3B0aW9uYWwgY29pbiBzdWZmaXguIERlZmF1bHRzIHRvIGNvaW4gbmFtZS5cbiAqIEBwYXJhbSBwcmltYXJ5S2V5Q3VydmUgVGhlIGVsbGlwdGljIGN1cnZlIGZvciB0aGlzIGNoYWluL3Rva2VuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrYXNwYShcbiAgaWQ6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICBmdWxsTmFtZTogc3RyaW5nLFxuICBuZXR3b3JrOiBLYXNwYU1haW5uZXQgfCBLYXNwYVRlc3RuZXQsXG4gIGFzc2V0OiBVbmRlcmx5aW5nQXNzZXQsXG4gIGZlYXR1cmVzOiBDb2luRmVhdHVyZVtdID0gS2FzcGFDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIHByZWZpeCA9ICcnLFxuICBzdWZmaXg6IHN0cmluZyA9IG5hbWUudG9VcHBlckNhc2UoKSxcbiAgcHJpbWFyeUtleUN1cnZlOiBLZXlDdXJ2ZSA9IEtleUN1cnZlLlNlY3AyNTZrMVxuKSB7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKFxuICAgIG5ldyBLYXNwYUNvaW4oe1xuICAgICAgaWQsXG4gICAgICBuYW1lLFxuICAgICAgZnVsbE5hbWUsXG4gICAgICBuZXR3b3JrLFxuICAgICAgcHJlZml4LFxuICAgICAgc3VmZml4LFxuICAgICAgZmVhdHVyZXMsXG4gICAgICBhc3NldCxcbiAgICAgIHByaW1hcnlLZXlDdXJ2ZSxcbiAgICB9KVxuICApO1xufVxuIl19
|
package/dist/src/networks.d.ts
CHANGED
|
@@ -222,6 +222,18 @@ declare class IcpTestnet extends Testnet implements AccountNetwork {
|
|
|
222
222
|
explorerUrl: string;
|
|
223
223
|
accountExplorerUrl: string;
|
|
224
224
|
}
|
|
225
|
+
export declare class KaspaMainnet extends Mainnet implements AccountNetwork {
|
|
226
|
+
name: string;
|
|
227
|
+
family: CoinFamily;
|
|
228
|
+
explorerUrl: string;
|
|
229
|
+
accountExplorerUrl: string;
|
|
230
|
+
}
|
|
231
|
+
export declare class KaspaTestnet extends Testnet implements AccountNetwork {
|
|
232
|
+
name: string;
|
|
233
|
+
family: CoinFamily;
|
|
234
|
+
explorerUrl: string;
|
|
235
|
+
accountExplorerUrl: string;
|
|
236
|
+
}
|
|
225
237
|
declare class Arbitrum extends Mainnet implements EthereumNetwork {
|
|
226
238
|
name: string;
|
|
227
239
|
family: CoinFamily;
|
|
@@ -1154,6 +1166,7 @@ declare class Near extends Mainnet implements AccountNetwork {
|
|
|
1154
1166
|
name: string;
|
|
1155
1167
|
family: CoinFamily;
|
|
1156
1168
|
explorerUrl: string;
|
|
1169
|
+
accountExplorerUrl: string;
|
|
1157
1170
|
feeReserve: string;
|
|
1158
1171
|
storageReserve: string;
|
|
1159
1172
|
}
|
|
@@ -1161,6 +1174,7 @@ declare class NearTestnet extends Testnet implements AccountNetwork {
|
|
|
1161
1174
|
name: string;
|
|
1162
1175
|
family: CoinFamily;
|
|
1163
1176
|
explorerUrl: string;
|
|
1177
|
+
accountExplorerUrl: string;
|
|
1164
1178
|
feeReserve: string;
|
|
1165
1179
|
storageReserve: string;
|
|
1166
1180
|
}
|
|
@@ -2231,6 +2245,22 @@ declare class PrividiumETHTestnet extends Testnet implements EthereumNetwork {
|
|
|
2231
2245
|
chainId: number;
|
|
2232
2246
|
nativeCoinOperationHashPrefix: string;
|
|
2233
2247
|
}
|
|
2248
|
+
declare class InkEth extends Mainnet implements EthereumNetwork {
|
|
2249
|
+
name: string;
|
|
2250
|
+
family: CoinFamily;
|
|
2251
|
+
explorerUrl: string;
|
|
2252
|
+
accountExplorerUrl: string;
|
|
2253
|
+
chainId: number;
|
|
2254
|
+
nativeCoinOperationHashPrefix: string;
|
|
2255
|
+
}
|
|
2256
|
+
declare class InkEthTestnet extends Testnet implements EthereumNetwork {
|
|
2257
|
+
name: string;
|
|
2258
|
+
family: CoinFamily;
|
|
2259
|
+
explorerUrl: string;
|
|
2260
|
+
accountExplorerUrl: string;
|
|
2261
|
+
chainId: number;
|
|
2262
|
+
nativeCoinOperationHashPrefix: string;
|
|
2263
|
+
}
|
|
2234
2264
|
declare class PlumeTestnet extends Testnet implements EthereumNetwork {
|
|
2235
2265
|
name: string;
|
|
2236
2266
|
family: CoinFamily;
|
|
@@ -2429,6 +2459,7 @@ export declare const Networks: {
|
|
|
2429
2459
|
hedera: Readonly<Hedera>;
|
|
2430
2460
|
hederaEVM: Readonly<HederaEVM>;
|
|
2431
2461
|
hemieth: Readonly<HemiEth>;
|
|
2462
|
+
inketh: Readonly<InkEth>;
|
|
2432
2463
|
hppeth: Readonly<Hppeth>;
|
|
2433
2464
|
prividiumeth: Readonly<PrividiumETH>;
|
|
2434
2465
|
icp: Readonly<Icp>;
|
|
@@ -2440,6 +2471,7 @@ export declare const Networks: {
|
|
|
2440
2471
|
islm: Readonly<Islm>;
|
|
2441
2472
|
jovayeth: Readonly<JovayETH>;
|
|
2442
2473
|
kaia: Readonly<Kaia>;
|
|
2474
|
+
kaspa: Readonly<KaspaMainnet>;
|
|
2443
2475
|
kavacosmos: Readonly<KavaCosmos>;
|
|
2444
2476
|
kavaevm: Readonly<KavaEVM>;
|
|
2445
2477
|
lnbtc: Readonly<LightningBitcoin>;
|
|
@@ -2558,6 +2590,7 @@ export declare const Networks: {
|
|
|
2558
2590
|
prividiumeth: Readonly<PrividiumETHTestnet>;
|
|
2559
2591
|
hederaEVM: Readonly<HederaEVMTestnet>;
|
|
2560
2592
|
hemieth: Readonly<HemiEthTestnet>;
|
|
2593
|
+
inketh: Readonly<InkEthTestnet>;
|
|
2561
2594
|
icp: Readonly<IcpTestnet>;
|
|
2562
2595
|
ip: Readonly<IPTestnet>;
|
|
2563
2596
|
initia: Readonly<InitiaTestnet>;
|
|
@@ -2566,6 +2599,7 @@ export declare const Networks: {
|
|
|
2566
2599
|
irys: Readonly<IrysTestnet>;
|
|
2567
2600
|
islm: Readonly<IslmTestnet>;
|
|
2568
2601
|
jovayeth: Readonly<JovayETHTestnet>;
|
|
2602
|
+
kaspa: Readonly<KaspaTestnet>;
|
|
2569
2603
|
kavacosmos: Readonly<KavaCosmosTestnet>;
|
|
2570
2604
|
kavaevm: Readonly<KavaEVMTestnet>;
|
|
2571
2605
|
kovan: Readonly<Kovan>;
|