@bitgo-beta/statics 15.1.1-beta.213 → 15.1.1-beta.2131
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 +1188 -73
- package/dist/src/account.d.ts.map +1 -1
- package/dist/src/account.js +1794 -161
- package/dist/src/ada.d.ts +1 -0
- package/dist/src/ada.d.ts.map +1 -1
- package/dist/src/ada.js +7 -3
- package/dist/src/allCoinsAndTokens.d.ts +2 -0
- package/dist/src/allCoinsAndTokens.d.ts.map +1 -0
- package/dist/src/allCoinsAndTokens.js +1916 -0
- package/dist/src/avaxp.d.ts +1 -0
- package/dist/src/avaxp.d.ts.map +1 -1
- package/dist/src/avaxp.js +8 -3
- package/dist/src/base.d.ts +2979 -45
- package/dist/src/base.d.ts.map +1 -1
- package/dist/src/base.js +3098 -56
- package/dist/src/bip44CoinTypes.d.ts +26 -0
- package/dist/src/bip44CoinTypes.d.ts.map +1 -0
- package/dist/src/bip44CoinTypes.js +148 -0
- package/dist/src/canton.d.ts +35 -0
- package/dist/src/canton.d.ts.map +1 -0
- package/dist/src/canton.js +51 -0
- package/dist/src/coinFeatures.d.ts +134 -0
- package/dist/src/coinFeatures.d.ts.map +1 -0
- package/dist/src/coinFeatures.js +817 -0
- package/dist/src/coins/adaTokens.d.ts +2 -0
- package/dist/src/coins/adaTokens.d.ts.map +1 -0
- package/dist/src/coins/adaTokens.js +27 -0
- package/dist/src/coins/avaxTokens.d.ts +2 -0
- package/dist/src/coins/avaxTokens.d.ts.map +1 -0
- package/dist/src/coins/avaxTokens.js +133 -0
- package/dist/src/coins/botOfcTokens.d.ts +3 -0
- package/dist/src/coins/botOfcTokens.d.ts.map +1 -0
- package/dist/src/coins/botOfcTokens.js +352 -0
- package/dist/src/coins/botTokens.d.ts +3 -0
- package/dist/src/coins/botTokens.d.ts.map +1 -0
- package/dist/src/coins/botTokens.js +1662 -0
- package/dist/src/coins/bscTokens.d.ts +2 -0
- package/dist/src/coins/bscTokens.d.ts.map +1 -0
- package/dist/src/coins/bscTokens.js +421 -0
- package/dist/src/coins/cantonTokens.d.ts +2 -0
- package/dist/src/coins/cantonTokens.d.ts.map +1 -0
- package/dist/src/coins/cantonTokens.js +134 -0
- package/dist/src/coins/cosmosTokens.d.ts +2 -0
- package/dist/src/coins/cosmosTokens.d.ts.map +1 -0
- package/dist/src/coins/cosmosTokens.js +14 -0
- package/dist/src/coins/erc20Coins.d.ts +2 -0
- package/dist/src/coins/erc20Coins.d.ts.map +1 -0
- package/dist/src/coins/erc20Coins.js +2086 -0
- package/dist/src/coins/erc7984Tokens.d.ts +17 -0
- package/dist/src/coins/erc7984Tokens.d.ts.map +1 -0
- package/dist/src/coins/erc7984Tokens.js +40 -0
- package/dist/src/coins/generateERC20.d.ts +36 -0
- package/dist/src/coins/generateERC20.d.ts.map +1 -0
- package/dist/src/coins/generateERC20.js +46 -0
- package/dist/src/coins/hoodethTokens.d.ts +2 -0
- package/dist/src/coins/hoodethTokens.d.ts.map +1 -0
- package/dist/src/coins/hoodethTokens.js +319 -0
- package/dist/src/coins/jettonTokens.d.ts +2 -0
- package/dist/src/coins/jettonTokens.d.ts.map +1 -0
- package/dist/src/coins/jettonTokens.js +19 -0
- package/dist/src/coins/nep141Tokens.d.ts +2 -0
- package/dist/src/coins/nep141Tokens.d.ts.map +1 -0
- package/dist/src/coins/nep141Tokens.js +18 -0
- package/dist/src/coins/ofcCoins.d.ts +2 -0
- package/dist/src/coins/ofcCoins.d.ts.map +1 -0
- package/dist/src/coins/ofcCoins.js +1502 -0
- package/dist/src/coins/ofcErc20Coins.d.ts +4 -0
- package/dist/src/coins/ofcErc20Coins.d.ts.map +1 -0
- package/dist/src/coins/ofcErc20Coins.js +1905 -0
- package/dist/src/coins/ofcHoodethTokens.d.ts +2 -0
- package/dist/src/coins/ofcHoodethTokens.d.ts.map +1 -0
- package/dist/src/coins/ofcHoodethTokens.js +317 -0
- package/dist/src/coins/polygonTokens.d.ts +2 -0
- package/dist/src/coins/polygonTokens.d.ts.map +1 -0
- package/dist/src/coins/polygonTokens.js +219 -0
- package/dist/src/coins/polyxTokens.d.ts +2 -0
- package/dist/src/coins/polyxTokens.d.ts.map +1 -0
- package/dist/src/coins/polyxTokens.js +22 -0
- package/dist/src/coins/sip10Tokens.d.ts +2 -0
- package/dist/src/coins/sip10Tokens.d.ts.map +1 -0
- package/dist/src/coins/sip10Tokens.js +25 -0
- package/dist/src/coins/solTokens.d.ts +3 -0
- package/dist/src/coins/solTokens.d.ts.map +1 -0
- package/dist/src/coins/solTokens.js +538 -0
- package/dist/src/coins/vetTokens.d.ts +2 -0
- package/dist/src/coins/vetTokens.d.ts.map +1 -0
- package/dist/src/coins/vetTokens.js +11 -0
- package/dist/src/coins.d.ts +22 -1
- package/dist/src/coins.d.ts.map +1 -1
- package/dist/src/coins.js +477 -2064
- package/dist/src/constants.d.ts +6 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +8 -2
- package/dist/src/errors.d.ts +12 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +30 -2
- package/dist/src/flrp.d.ts +41 -0
- package/dist/src/flrp.d.ts.map +1 -0
- package/dist/src/flrp.js +66 -0
- package/dist/src/hypeevm.d.ts +28 -0
- package/dist/src/hypeevm.d.ts.map +1 -0
- package/dist/src/hypeevm.js +60 -0
- package/dist/src/index.d.ts +8 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +53 -3
- 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/lightning.d.ts +44 -0
- package/dist/src/lightning.d.ts.map +1 -0
- package/dist/src/lightning.js +64 -0
- package/dist/src/map.d.ts +34 -1
- package/dist/src/map.d.ts.map +1 -1
- package/dist/src/map.js +251 -35
- package/dist/src/networkFeatureMapForTokens.d.ts +30 -0
- package/dist/src/networkFeatureMapForTokens.d.ts.map +1 -0
- package/dist/src/networkFeatureMapForTokens.js +92 -0
- package/dist/src/networks.d.ts +2065 -72
- package/dist/src/networks.d.ts.map +1 -1
- package/dist/src/networks.js +2532 -108
- package/dist/src/ofc.d.ts +695 -3
- package/dist/src/ofc.d.ts.map +1 -1
- package/dist/src/ofc.js +1653 -28
- package/dist/src/safe.d.ts +22 -0
- package/dist/src/safe.d.ts.map +1 -0
- package/dist/src/safe.js +28 -0
- package/dist/src/tokenConfig.d.ts +718 -114
- package/dist/src/tokenConfig.d.ts.map +1 -1
- package/dist/src/tokenConfig.js +1132 -233
- package/dist/src/utxo.d.ts +7 -2
- package/dist/src/utxo.d.ts.map +1 -1
- package/dist/src/utxo.js +132 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -3
- package/.mocharc.js +0 -10
- package/.prettierignore +0 -2
- package/CHANGELOG.md +0 -1584
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CoinFamily, CoinFeature } from './base';
|
|
2
|
+
/** Register default token features for a dynamically onboarded chain family. */
|
|
3
|
+
export declare function registerNetworkFeatures(family: string, features: CoinFeature[]): void;
|
|
4
|
+
/** Default token feature set shared by "plain" EVM-compatible chain families (no bespoke features). */
|
|
5
|
+
export declare const EVM_TOKEN_FEATURES: CoinFeature[];
|
|
6
|
+
/** Same as EVM_TOKEN_FEATURES, minus EIP1559, for EVM-compatible families that don't support it (e.g. xdc). */
|
|
7
|
+
export declare const EVM_TOKEN_FEATURES_NON_EIP1559: CoinFeature[];
|
|
8
|
+
/**
|
|
9
|
+
* Populate networkFeatureMapForTokens for every family whose base coin carries
|
|
10
|
+
* CoinFeature.SUPPORTS_ERC20 and isn't already explicitly listed below, using EVM_TOKEN_FEATURES
|
|
11
|
+
* (or its non-EIP1559 variant, mirroring the base coin's own EIP1559 support). Called once from
|
|
12
|
+
* coins.ts (which has access to the full coin map) so this module doesn't need to import it
|
|
13
|
+
* directly (that would create a circular import: coins.ts -> networkFeatureMapForTokens.ts ->
|
|
14
|
+
* allCoinsAndTokens.ts -> coins/botTokens.ts -> networkFeatureMapForTokens.ts).
|
|
15
|
+
*/
|
|
16
|
+
export declare function registerErc20Families(families: Iterable<[family: string, supportsEip1559: boolean]>): void;
|
|
17
|
+
/**
|
|
18
|
+
* Look up token features for a family.
|
|
19
|
+
* Checks the static map first (including entries backfilled by registerErc20Families), then the
|
|
20
|
+
* dynamic map. Returns undefined if the family isn't recognized by either.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getNetworkFeatures(family: string): CoinFeature[] | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve the final feature list for a token: the family's default token features
|
|
25
|
+
* plus `additionalFeatures`, minus `excludedFeatures`. Used by generated bot-token
|
|
26
|
+
* lists to apply the per-token diff returned by AMS (`features=false`).
|
|
27
|
+
*/
|
|
28
|
+
export declare function getTokenFeatures(family: string, additionalFeatures?: CoinFeature[], excludedFeatures?: CoinFeature[]): CoinFeature[];
|
|
29
|
+
export declare const networkFeatureMapForTokens: Partial<Record<CoinFamily, CoinFeature[]>>;
|
|
30
|
+
//# sourceMappingURL=networkFeatureMapForTokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"networkFeatureMapForTokens.d.ts","sourceRoot":"","sources":["../../src/networkFeatureMapForTokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAiBjD,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAErF;AAED,uGAAuG;AACvG,eAAO,MAAM,kBAAkB,EAAE,WAAW,EAQ3C,CAAC;AAEF,+GAA+G;AAC/G,eAAO,MAAM,8BAA8B,EAAE,WAAW,EAEvD,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAQ1G;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,SAAS,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,kBAAkB,GAAE,WAAW,EAAO,EACtC,gBAAgB,GAAE,WAAW,EAAO,GACnC,WAAW,EAAE,CAIf;AAED,eAAO,MAAM,0BAA0B,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CA4BjF,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.networkFeatureMapForTokens = exports.EVM_TOKEN_FEATURES_NON_EIP1559 = exports.EVM_TOKEN_FEATURES = void 0;
|
|
4
|
+
exports.registerNetworkFeatures = registerNetworkFeatures;
|
|
5
|
+
exports.registerErc20Families = registerErc20Families;
|
|
6
|
+
exports.getNetworkFeatures = getNetworkFeatures;
|
|
7
|
+
exports.getTokenFeatures = getTokenFeatures;
|
|
8
|
+
const account_1 = require("./account");
|
|
9
|
+
const base_1 = require("./base");
|
|
10
|
+
const coinFeatures_1 = require("./coinFeatures");
|
|
11
|
+
const dynamicNetworkFeaturesMap = new Map();
|
|
12
|
+
/** Register default token features for a dynamically onboarded chain family. */
|
|
13
|
+
function registerNetworkFeatures(family, features) {
|
|
14
|
+
dynamicNetworkFeaturesMap.set(family, features);
|
|
15
|
+
}
|
|
16
|
+
/** Default token feature set shared by "plain" EVM-compatible chain families (no bespoke features). */
|
|
17
|
+
exports.EVM_TOKEN_FEATURES = [
|
|
18
|
+
...coinFeatures_1.EVM_FEATURES,
|
|
19
|
+
base_1.CoinFeature.SHARED_EVM_SIGNING,
|
|
20
|
+
base_1.CoinFeature.SHARED_EVM_SDK,
|
|
21
|
+
base_1.CoinFeature.EVM_COMPATIBLE_IMS,
|
|
22
|
+
base_1.CoinFeature.EVM_COMPATIBLE_UI,
|
|
23
|
+
base_1.CoinFeature.EVM_COMPATIBLE_WP,
|
|
24
|
+
base_1.CoinFeature.SUPPORTS_ERC20,
|
|
25
|
+
];
|
|
26
|
+
/** Same as EVM_TOKEN_FEATURES, minus EIP1559, for EVM-compatible families that don't support it (e.g. xdc). */
|
|
27
|
+
exports.EVM_TOKEN_FEATURES_NON_EIP1559 = exports.EVM_TOKEN_FEATURES.filter((feature) => feature !== base_1.CoinFeature.EIP1559);
|
|
28
|
+
/**
|
|
29
|
+
* Populate networkFeatureMapForTokens for every family whose base coin carries
|
|
30
|
+
* CoinFeature.SUPPORTS_ERC20 and isn't already explicitly listed below, using EVM_TOKEN_FEATURES
|
|
31
|
+
* (or its non-EIP1559 variant, mirroring the base coin's own EIP1559 support). Called once from
|
|
32
|
+
* coins.ts (which has access to the full coin map) so this module doesn't need to import it
|
|
33
|
+
* directly (that would create a circular import: coins.ts -> networkFeatureMapForTokens.ts ->
|
|
34
|
+
* allCoinsAndTokens.ts -> coins/botTokens.ts -> networkFeatureMapForTokens.ts).
|
|
35
|
+
*/
|
|
36
|
+
function registerErc20Families(families) {
|
|
37
|
+
for (const [family, supportsEip1559] of families) {
|
|
38
|
+
if (!(family in exports.networkFeatureMapForTokens)) {
|
|
39
|
+
exports.networkFeatureMapForTokens[family] = supportsEip1559
|
|
40
|
+
? exports.EVM_TOKEN_FEATURES
|
|
41
|
+
: exports.EVM_TOKEN_FEATURES_NON_EIP1559;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Look up token features for a family.
|
|
47
|
+
* Checks the static map first (including entries backfilled by registerErc20Families), then the
|
|
48
|
+
* dynamic map. Returns undefined if the family isn't recognized by either.
|
|
49
|
+
*/
|
|
50
|
+
function getNetworkFeatures(family) {
|
|
51
|
+
return exports.networkFeatureMapForTokens[family] ?? dynamicNetworkFeaturesMap.get(family);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Resolve the final feature list for a token: the family's default token features
|
|
55
|
+
* plus `additionalFeatures`, minus `excludedFeatures`. Used by generated bot-token
|
|
56
|
+
* lists to apply the per-token diff returned by AMS (`features=false`).
|
|
57
|
+
*/
|
|
58
|
+
function getTokenFeatures(family, additionalFeatures = [], excludedFeatures = []) {
|
|
59
|
+
const base = getNetworkFeatures(family) ?? [];
|
|
60
|
+
const excluded = new Set(excludedFeatures);
|
|
61
|
+
return [...new Set([...base, ...additionalFeatures])].filter((f) => !excluded.has(f));
|
|
62
|
+
}
|
|
63
|
+
exports.networkFeatureMapForTokens = {
|
|
64
|
+
algo: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
65
|
+
apt: coinFeatures_1.APT_FEATURES,
|
|
66
|
+
arbeth: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
|
|
67
|
+
avaxc: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
68
|
+
bera: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
|
|
69
|
+
bsc: coinFeatures_1.BSC_TOKEN_FEATURES,
|
|
70
|
+
canton: coinFeatures_1.CANTON_TOKEN_FEATURES,
|
|
71
|
+
celo: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
72
|
+
eth: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
73
|
+
baseeth: exports.EVM_TOKEN_FEATURES,
|
|
74
|
+
eos: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
75
|
+
gasevm: exports.EVM_TOKEN_FEATURES,
|
|
76
|
+
hbar: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
77
|
+
opeth: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
|
|
78
|
+
katanaeth: exports.EVM_TOKEN_FEATURES,
|
|
79
|
+
polygon: coinFeatures_1.POLYGON_TOKEN_FEATURES,
|
|
80
|
+
scrolleth: exports.EVM_TOKEN_FEATURES,
|
|
81
|
+
sol: coinFeatures_1.SOL_TOKEN_FEATURES,
|
|
82
|
+
stx: coinFeatures_1.STX_TOKEN_FEATURES,
|
|
83
|
+
sui: coinFeatures_1.SUI_TOKEN_FEATURES,
|
|
84
|
+
tao: coinFeatures_1.TAO_TOKEN_FEATURES,
|
|
85
|
+
polyx: coinFeatures_1.POLYX_TOKEN_FEATURES,
|
|
86
|
+
trx: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
87
|
+
xlm: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
88
|
+
xrp: account_1.AccountCoin.DEFAULT_FEATURES,
|
|
89
|
+
ofc: [],
|
|
90
|
+
ada: coinFeatures_1.ADA_TOKEN_FEATURES,
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLDBEQUVDO0FBMEJELHNEQVFDO0FBT0QsZ0RBRUM7QUFPRCw0Q0FRQztBQS9FRCx1Q0FBd0M7QUFDeEMsaUNBQWlEO0FBQ2pELGlEQVl3QjtBQUV4QixNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0FBRW5FLGdGQUFnRjtBQUNoRixTQUFnQix1QkFBdUIsQ0FBQyxNQUFjLEVBQUUsUUFBdUI7SUFDN0UseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsdUdBQXVHO0FBQzFGLFFBQUEsa0JBQWtCLEdBQWtCO0lBQy9DLEdBQUcsMkJBQVk7SUFDZixrQkFBVyxDQUFDLGtCQUFrQjtJQUM5QixrQkFBVyxDQUFDLGNBQWM7SUFDMUIsa0JBQVcsQ0FBQyxrQkFBa0I7SUFDOUIsa0JBQVcsQ0FBQyxpQkFBaUI7SUFDN0Isa0JBQVcsQ0FBQyxpQkFBaUI7SUFDN0Isa0JBQVcsQ0FBQyxjQUFjO0NBQzNCLENBQUM7QUFFRiwrR0FBK0c7QUFDbEcsUUFBQSw4QkFBOEIsR0FBa0IsMEJBQWtCLENBQUMsTUFBTSxDQUNwRixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxLQUFLLGtCQUFXLENBQUMsT0FBTyxDQUM3QyxDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFFBQThEO0lBQ2xHLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksa0NBQTBCLENBQUMsRUFBRSxDQUFDO1lBQzVDLGtDQUEwQixDQUFDLE1BQW9CLENBQUMsR0FBRyxlQUFlO2dCQUNoRSxDQUFDLENBQUMsMEJBQWtCO2dCQUNwQixDQUFDLENBQUMsc0NBQThCLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLE1BQWM7SUFDL0MsT0FBTyxrQ0FBMEIsQ0FBQyxNQUFvQixDQUFDLElBQUkseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25HLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE1BQWMsRUFDZCxxQkFBb0MsRUFBRSxFQUN0QyxtQkFBa0MsRUFBRTtJQUVwQyxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQWMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RCxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBYyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRyxDQUFDO0FBRVksUUFBQSwwQkFBMEIsR0FBK0M7SUFDcEYsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSwyQkFBWTtJQUNqQixNQUFNLEVBQUUsQ0FBQyxHQUFHLHFCQUFXLENBQUMsZ0JBQWdCLEVBQUUsa0JBQVcsQ0FBQyxPQUFPLENBQUM7SUFDOUQsS0FBSyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ25DLElBQUksRUFBRSxDQUFDLEdBQUcscUJBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBVyxDQUFDLE9BQU8sQ0FBQztJQUM1RCxHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLE1BQU0sRUFBRSxvQ0FBcUI7SUFDN0IsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxPQUFPLEVBQUUsMEJBQWtCO0lBQzNCLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxNQUFNLEVBQUUsMEJBQWtCO0lBQzFCLElBQUksRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNsQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLHFCQUFXLENBQUMsZ0JBQWdCLEVBQUUsa0JBQVcsQ0FBQyxPQUFPLENBQUM7SUFDN0QsU0FBUyxFQUFFLDBCQUFrQjtJQUM3QixPQUFPLEVBQUUscUNBQXNCO0lBQy9CLFNBQVMsRUFBRSwwQkFBa0I7SUFDN0IsR0FBRyxFQUFFLGlDQUFrQjtJQUN2QixHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLEdBQUcsRUFBRSxpQ0FBa0I7SUFDdkIsR0FBRyxFQUFFLGlDQUFrQjtJQUN2QixLQUFLLEVBQUUsbUNBQW9CO0lBQzNCLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsR0FBRyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2pDLEdBQUcsRUFBRSxFQUFFO0lBQ1AsR0FBRyxFQUFFLGlDQUFrQjtDQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjb3VudENvaW4gfSBmcm9tICcuL2FjY291bnQnO1xuaW1wb3J0IHsgQ29pbkZhbWlseSwgQ29pbkZlYXR1cmUgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtcbiAgQURBX1RPS0VOX0ZFQVRVUkVTLFxuICBBUFRfRkVBVFVSRVMsXG4gIEJTQ19UT0tFTl9GRUFUVVJFUyxcbiAgQ0FOVE9OX1RPS0VOX0ZFQVRVUkVTLFxuICBFVk1fRkVBVFVSRVMsXG4gIFBPTFlHT05fVE9LRU5fRkVBVFVSRVMsXG4gIFBPTFlYX1RPS0VOX0ZFQVRVUkVTLFxuICBTT0xfVE9LRU5fRkVBVFVSRVMsXG4gIFNUWF9UT0tFTl9GRUFUVVJFUyxcbiAgU1VJX1RPS0VOX0ZFQVRVUkVTLFxuICBUQU9fVE9LRU5fRkVBVFVSRVMsXG59IGZyb20gJy4vY29pbkZlYXR1cmVzJztcblxuY29uc3QgZHluYW1pY05ldHdvcmtGZWF0dXJlc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBDb2luRmVhdHVyZVtdPigpO1xuXG4vKiogUmVnaXN0ZXIgZGVmYXVsdCB0b2tlbiBmZWF0dXJlcyBmb3IgYSBkeW5hbWljYWxseSBvbmJvYXJkZWQgY2hhaW4gZmFtaWx5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTmV0d29ya0ZlYXR1cmVzKGZhbWlseTogc3RyaW5nLCBmZWF0dXJlczogQ29pbkZlYXR1cmVbXSk6IHZvaWQge1xuICBkeW5hbWljTmV0d29ya0ZlYXR1cmVzTWFwLnNldChmYW1pbHksIGZlYXR1cmVzKTtcbn1cblxuLyoqIERlZmF1bHQgdG9rZW4gZmVhdHVyZSBzZXQgc2hhcmVkIGJ5IFwicGxhaW5cIiBFVk0tY29tcGF0aWJsZSBjaGFpbiBmYW1pbGllcyAobm8gYmVzcG9rZSBmZWF0dXJlcykuICovXG5leHBvcnQgY29uc3QgRVZNX1RPS0VOX0ZFQVRVUkVTOiBDb2luRmVhdHVyZVtdID0gW1xuICAuLi5FVk1fRkVBVFVSRVMsXG4gIENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0lHTklORyxcbiAgQ29pbkZlYXR1cmUuU0hBUkVEX0VWTV9TREssXG4gIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX0lNUyxcbiAgQ29pbkZlYXR1cmUuRVZNX0NPTVBBVElCTEVfVUksXG4gIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX1dQLFxuICBDb2luRmVhdHVyZS5TVVBQT1JUU19FUkMyMCxcbl07XG5cbi8qKiBTYW1lIGFzIEVWTV9UT0tFTl9GRUFUVVJFUywgbWludXMgRUlQMTU1OSwgZm9yIEVWTS1jb21wYXRpYmxlIGZhbWlsaWVzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdCAoZS5nLiB4ZGMpLiAqL1xuZXhwb3J0IGNvbnN0IEVWTV9UT0tFTl9GRUFUVVJFU19OT05fRUlQMTU1OTogQ29pbkZlYXR1cmVbXSA9IEVWTV9UT0tFTl9GRUFUVVJFUy5maWx0ZXIoXG4gIChmZWF0dXJlKSA9PiBmZWF0dXJlICE9PSBDb2luRmVhdHVyZS5FSVAxNTU5XG4pO1xuXG4vKipcbiAqIFBvcHVsYXRlIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zIGZvciBldmVyeSBmYW1pbHkgd2hvc2UgYmFzZSBjb2luIGNhcnJpZXNcbiAqIENvaW5GZWF0dXJlLlNVUFBPUlRTX0VSQzIwIGFuZCBpc24ndCBhbHJlYWR5IGV4cGxpY2l0bHkgbGlzdGVkIGJlbG93LCB1c2luZyBFVk1fVE9LRU5fRkVBVFVSRVNcbiAqIChvciBpdHMgbm9uLUVJUDE1NTkgdmFyaWFudCwgbWlycm9yaW5nIHRoZSBiYXNlIGNvaW4ncyBvd24gRUlQMTU1OSBzdXBwb3J0KS4gQ2FsbGVkIG9uY2UgZnJvbVxuICogY29pbnMudHMgKHdoaWNoIGhhcyBhY2Nlc3MgdG8gdGhlIGZ1bGwgY29pbiBtYXApIHNvIHRoaXMgbW9kdWxlIGRvZXNuJ3QgbmVlZCB0byBpbXBvcnQgaXRcbiAqIGRpcmVjdGx5ICh0aGF0IHdvdWxkIGNyZWF0ZSBhIGNpcmN1bGFyIGltcG9ydDogY29pbnMudHMgLT4gbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMudHMgLT5cbiAqIGFsbENvaW5zQW5kVG9rZW5zLnRzIC0+IGNvaW5zL2JvdFRva2Vucy50cyAtPiBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2Vucy50cykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckVyYzIwRmFtaWxpZXMoZmFtaWxpZXM6IEl0ZXJhYmxlPFtmYW1pbHk6IHN0cmluZywgc3VwcG9ydHNFaXAxNTU5OiBib29sZWFuXT4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBbZmFtaWx5LCBzdXBwb3J0c0VpcDE1NTldIG9mIGZhbWlsaWVzKSB7XG4gICAgaWYgKCEoZmFtaWx5IGluIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zKSkge1xuICAgICAgbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnNbZmFtaWx5IGFzIENvaW5GYW1pbHldID0gc3VwcG9ydHNFaXAxNTU5XG4gICAgICAgID8gRVZNX1RPS0VOX0ZFQVRVUkVTXG4gICAgICAgIDogRVZNX1RPS0VOX0ZFQVRVUkVTX05PTl9FSVAxNTU5O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIExvb2sgdXAgdG9rZW4gZmVhdHVyZXMgZm9yIGEgZmFtaWx5LlxuICogQ2hlY2tzIHRoZSBzdGF0aWMgbWFwIGZpcnN0IChpbmNsdWRpbmcgZW50cmllcyBiYWNrZmlsbGVkIGJ5IHJlZ2lzdGVyRXJjMjBGYW1pbGllcyksIHRoZW4gdGhlXG4gKiBkeW5hbWljIG1hcC4gUmV0dXJucyB1bmRlZmluZWQgaWYgdGhlIGZhbWlseSBpc24ndCByZWNvZ25pemVkIGJ5IGVpdGhlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5ldHdvcmtGZWF0dXJlcyhmYW1pbHk6IHN0cmluZyk6IENvaW5GZWF0dXJlW10gfCB1bmRlZmluZWQge1xuICByZXR1cm4gbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnNbZmFtaWx5IGFzIENvaW5GYW1pbHldID8/IGR5bmFtaWNOZXR3b3JrRmVhdHVyZXNNYXAuZ2V0KGZhbWlseSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgZmluYWwgZmVhdHVyZSBsaXN0IGZvciBhIHRva2VuOiB0aGUgZmFtaWx5J3MgZGVmYXVsdCB0b2tlbiBmZWF0dXJlc1xuICogcGx1cyBgYWRkaXRpb25hbEZlYXR1cmVzYCwgbWludXMgYGV4Y2x1ZGVkRmVhdHVyZXNgLiBVc2VkIGJ5IGdlbmVyYXRlZCBib3QtdG9rZW5cbiAqIGxpc3RzIHRvIGFwcGx5IHRoZSBwZXItdG9rZW4gZGlmZiByZXR1cm5lZCBieSBBTVMgKGBmZWF0dXJlcz1mYWxzZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9rZW5GZWF0dXJlcyhcbiAgZmFtaWx5OiBzdHJpbmcsXG4gIGFkZGl0aW9uYWxGZWF0dXJlczogQ29pbkZlYXR1cmVbXSA9IFtdLFxuICBleGNsdWRlZEZlYXR1cmVzOiBDb2luRmVhdHVyZVtdID0gW11cbik6IENvaW5GZWF0dXJlW10ge1xuICBjb25zdCBiYXNlID0gZ2V0TmV0d29ya0ZlYXR1cmVzKGZhbWlseSkgPz8gW107XG4gIGNvbnN0IGV4Y2x1ZGVkID0gbmV3IFNldDxDb2luRmVhdHVyZT4oZXhjbHVkZWRGZWF0dXJlcyk7XG4gIHJldHVybiBbLi4ubmV3IFNldDxDb2luRmVhdHVyZT4oWy4uLmJhc2UsIC4uLmFkZGl0aW9uYWxGZWF0dXJlc10pXS5maWx0ZXIoKGYpID0+ICFleGNsdWRlZC5oYXMoZikpO1xufVxuXG5leHBvcnQgY29uc3QgbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnM6IFBhcnRpYWw8UmVjb3JkPENvaW5GYW1pbHksIENvaW5GZWF0dXJlW10+PiA9IHtcbiAgYWxnbzogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgYXB0OiBBUFRfRkVBVFVSRVMsXG4gIGFyYmV0aDogWy4uLkFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsIENvaW5GZWF0dXJlLkVJUDE1NTldLFxuICBhdmF4YzogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgYmVyYTogWy4uLkFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsIENvaW5GZWF0dXJlLkVJUDE1NTldLFxuICBic2M6IEJTQ19UT0tFTl9GRUFUVVJFUyxcbiAgY2FudG9uOiBDQU5UT05fVE9LRU5fRkVBVFVSRVMsXG4gIGNlbG86IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGV0aDogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgYmFzZWV0aDogRVZNX1RPS0VOX0ZFQVRVUkVTLFxuICBlb3M6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGdhc2V2bTogRVZNX1RPS0VOX0ZFQVRVUkVTLFxuICBoYmFyOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICBvcGV0aDogWy4uLkFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsIENvaW5GZWF0dXJlLkVJUDE1NTldLFxuICBrYXRhbmFldGg6IEVWTV9UT0tFTl9GRUFUVVJFUyxcbiAgcG9seWdvbjogUE9MWUdPTl9UT0tFTl9GRUFUVVJFUyxcbiAgc2Nyb2xsZXRoOiBFVk1fVE9LRU5fRkVBVFVSRVMsXG4gIHNvbDogU09MX1RPS0VOX0ZFQVRVUkVTLFxuICBzdHg6IFNUWF9UT0tFTl9GRUFUVVJFUyxcbiAgc3VpOiBTVUlfVE9LRU5fRkVBVFVSRVMsXG4gIHRhbzogVEFPX1RPS0VOX0ZFQVRVUkVTLFxuICBwb2x5eDogUE9MWVhfVE9LRU5fRkVBVFVSRVMsXG4gIHRyeDogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgeGxtOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICB4cnA6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIG9mYzogW10sXG4gIGFkYTogQURBX1RPS0VOX0ZFQVRVUkVTLFxufTtcbiJdfQ==
|