@rosen-bridge/minimum-fee 2.2.3 → 2.3.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.
Files changed (47) hide show
  1. package/dist/MinimumFeeBox.d.ts.map +1 -0
  2. package/dist/MinimumFeeBox.js +219 -0
  3. package/dist/MinimumFeeBoxBuilder.d.ts.map +1 -0
  4. package/dist/MinimumFeeBoxBuilder.js +138 -0
  5. package/dist/MinimumFeeConfig.d.ts.map +1 -0
  6. package/dist/MinimumFeeConfig.js +41 -0
  7. package/dist/constants.d.ts.map +1 -0
  8. package/dist/constants.js +3 -0
  9. package/dist/errors.d.ts.map +1 -0
  10. package/dist/errors.js +26 -0
  11. package/dist/{lib/handleApiError.d.ts → handleApiError.d.ts} +4 -4
  12. package/dist/handleApiError.d.ts.map +1 -0
  13. package/dist/handleApiError.js +35 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +8 -0
  16. package/dist/types.d.ts.map +1 -0
  17. package/dist/types.js +22 -0
  18. package/dist/utils.d.ts.map +1 -0
  19. package/dist/utils.js +111 -0
  20. package/package.json +10 -14
  21. package/dist/lib/MinimumFeeBox.d.ts.map +0 -1
  22. package/dist/lib/MinimumFeeBox.js +0 -219
  23. package/dist/lib/MinimumFeeBoxBuilder.d.ts.map +0 -1
  24. package/dist/lib/MinimumFeeBoxBuilder.js +0 -138
  25. package/dist/lib/MinimumFeeConfig.d.ts.map +0 -1
  26. package/dist/lib/MinimumFeeConfig.js +0 -41
  27. package/dist/lib/constants.d.ts.map +0 -1
  28. package/dist/lib/constants.js +0 -3
  29. package/dist/lib/errors.d.ts.map +0 -1
  30. package/dist/lib/errors.js +0 -26
  31. package/dist/lib/handleApiError.d.ts.map +0 -1
  32. package/dist/lib/handleApiError.js +0 -35
  33. package/dist/lib/index.d.ts.map +0 -1
  34. package/dist/lib/index.js +0 -8
  35. package/dist/lib/types.d.ts.map +0 -1
  36. package/dist/lib/types.js +0 -22
  37. package/dist/lib/utils.d.ts.map +0 -1
  38. package/dist/lib/utils.js +0 -111
  39. package/dist/tsconfig.build.tsbuildinfo +0 -1
  40. /package/dist/{lib/MinimumFeeBox.d.ts → MinimumFeeBox.d.ts} +0 -0
  41. /package/dist/{lib/MinimumFeeBoxBuilder.d.ts → MinimumFeeBoxBuilder.d.ts} +0 -0
  42. /package/dist/{lib/MinimumFeeConfig.d.ts → MinimumFeeConfig.d.ts} +0 -0
  43. /package/dist/{lib/constants.d.ts → constants.d.ts} +0 -0
  44. /package/dist/{lib/errors.d.ts → errors.d.ts} +0 -0
  45. /package/dist/{lib/index.d.ts → index.d.ts} +0 -0
  46. /package/dist/{lib/types.d.ts → types.d.ts} +0 -0
  47. /package/dist/{lib/utils.d.ts → utils.d.ts} +0 -0
package/dist/types.js ADDED
@@ -0,0 +1,22 @@
1
+ import { FEE_RATIO_DIVISOR } from './constants';
2
+ export class ChainMinimumFee {
3
+ bridgeFee;
4
+ networkFee;
5
+ rsnRatio;
6
+ rsnRatioDivisor;
7
+ feeRatio;
8
+ feeRatioDivisor = FEE_RATIO_DIVISOR;
9
+ constructor(chainFee) {
10
+ this.bridgeFee = chainFee.bridgeFee;
11
+ this.networkFee = chainFee.networkFee;
12
+ this.rsnRatio = chainFee.rsnRatio;
13
+ this.rsnRatioDivisor = chainFee.rsnRatioDivisor;
14
+ this.feeRatio = chainFee.feeRatio;
15
+ }
16
+ }
17
+ export var ErgoNetworkType;
18
+ (function (ErgoNetworkType) {
19
+ ErgoNetworkType["explorer"] = "explorer";
20
+ ErgoNetworkType["node"] = "node";
21
+ })(ErgoNetworkType || (ErgoNetworkType = {}));
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBZWhELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFNBQVMsQ0FBUztJQUNsQixVQUFVLENBQVM7SUFDbkIsUUFBUSxDQUFTO0lBQ2pCLGVBQWUsQ0FBUztJQUN4QixRQUFRLENBQVM7SUFDUixlQUFlLEdBQVcsaUJBQWlCLENBQUM7SUFFckQsWUFBWSxRQUFrQjtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDekIsd0NBQXFCLENBQUE7SUFDckIsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0YW50IH0gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgRkVFX1JBVElPX0RJVklTT1IgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVlIHtcbiAgaGVpZ2h0czogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfTtcbiAgY29uZmlnczogeyBba2V5OiBzdHJpbmddOiBDaGFpbkZlZSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYWluRmVlIHtcbiAgYnJpZGdlRmVlOiBiaWdpbnQ7XG4gIG5ldHdvcmtGZWU6IGJpZ2ludDtcbiAgcnNuUmF0aW86IGJpZ2ludDtcbiAgcnNuUmF0aW9EaXZpc29yOiBiaWdpbnQ7XG4gIGZlZVJhdGlvOiBiaWdpbnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBDaGFpbk1pbmltdW1GZWUgaW1wbGVtZW50cyBDaGFpbkZlZSB7XG4gIGJyaWRnZUZlZTogYmlnaW50O1xuICBuZXR3b3JrRmVlOiBiaWdpbnQ7XG4gIHJzblJhdGlvOiBiaWdpbnQ7XG4gIHJzblJhdGlvRGl2aXNvcjogYmlnaW50O1xuICBmZWVSYXRpbzogYmlnaW50O1xuICByZWFkb25seSBmZWVSYXRpb0Rpdmlzb3I6IGJpZ2ludCA9IEZFRV9SQVRJT19ESVZJU09SO1xuXG4gIGNvbnN0cnVjdG9yKGNoYWluRmVlOiBDaGFpbkZlZSkge1xuICAgIHRoaXMuYnJpZGdlRmVlID0gY2hhaW5GZWUuYnJpZGdlRmVlO1xuICAgIHRoaXMubmV0d29ya0ZlZSA9IGNoYWluRmVlLm5ldHdvcmtGZWU7XG4gICAgdGhpcy5yc25SYXRpbyA9IGNoYWluRmVlLnJzblJhdGlvO1xuICAgIHRoaXMucnNuUmF0aW9EaXZpc29yID0gY2hhaW5GZWUucnNuUmF0aW9EaXZpc29yO1xuICAgIHRoaXMuZmVlUmF0aW8gPSBjaGFpbkZlZS5mZWVSYXRpbztcbiAgfVxufVxuXG5leHBvcnQgZW51bSBFcmdvTmV0d29ya1R5cGUge1xuICBleHBsb3JlciA9ICdleHBsb3JlcicsXG4gIG5vZGUgPSAnbm9kZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJWYWx1ZXMge1xuICBSNDogQ29uc3RhbnQ7XG4gIFI1OiBDb25zdGFudDtcbiAgUjY6IENvbnN0YW50O1xuICBSNzogQ29uc3RhbnQ7XG4gIFI4OiBDb25zdGFudDtcbiAgUjk6IENvbnN0YW50O1xufVxuIl19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,OAAO,KAAG,KAAK,CAAC,GAAG,CAiDzD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,KAAK,CAAC,GAAG,CAAC;;;;;;;CA0DnD,CAAC"}
package/dist/utils.js ADDED
@@ -0,0 +1,111 @@
1
+ import { Constant } from 'ergo-lib-wasm-nodejs';
2
+ /**
3
+ * extracts Fee config from box registers
4
+ * @param box
5
+ */
6
+ export const extractFeeFromBox = (box) => {
7
+ const R4 = box.register_value(4);
8
+ const R5 = box.register_value(5);
9
+ const R6 = box.register_value(6);
10
+ const R7 = box.register_value(7);
11
+ const R8 = box.register_value(8);
12
+ const R9 = box.register_value(9);
13
+ if (!R4 || !R5 || !R6 || !R7 || !R8 || !R9)
14
+ throw Error(`Incomplete register data for minimum-fee config box [${box
15
+ .box_id()
16
+ .to_str()}]`);
17
+ const fees = [];
18
+ const chains = R4.to_coll_coll_byte().map((element) => Buffer.from(element).toString());
19
+ const heights = R5.to_js();
20
+ const bridgeFees = R6.to_js();
21
+ const networkFees = R7.to_js();
22
+ const rsnRatios = R8.to_js();
23
+ const feeRatios = R9.to_js();
24
+ for (let feeIdx = 0; feeIdx < heights.length; feeIdx++) {
25
+ const fee = {
26
+ heights: {},
27
+ configs: {},
28
+ };
29
+ for (let chainIdx = 0; chainIdx < chains.length; chainIdx++) {
30
+ const chain = chains[chainIdx];
31
+ if (heights[feeIdx][chainIdx] === -1)
32
+ continue;
33
+ fee.heights[chain] = heights[feeIdx][chainIdx];
34
+ if (bridgeFees[feeIdx][chainIdx] === '-1')
35
+ continue;
36
+ fee.configs[chain] = {
37
+ bridgeFee: BigInt(bridgeFees[feeIdx][chainIdx]),
38
+ networkFee: BigInt(networkFees[feeIdx][chainIdx]),
39
+ rsnRatio: BigInt(rsnRatios[feeIdx][chainIdx][0]),
40
+ rsnRatioDivisor: BigInt(rsnRatios[feeIdx][chainIdx][1]),
41
+ feeRatio: BigInt(feeRatios[feeIdx][chainIdx]),
42
+ };
43
+ }
44
+ fees.push(fee);
45
+ }
46
+ return fees;
47
+ };
48
+ /**
49
+ * converts fee config to register values
50
+ * @param fees
51
+ * @returns
52
+ */
53
+ export const feeToRegisterValues = (fees) => {
54
+ // extract chains
55
+ const chains = [];
56
+ fees.forEach((fee) => {
57
+ Object.keys(fee.heights).forEach((feeChain) => {
58
+ if (!chains.includes(feeChain))
59
+ chains.push(feeChain);
60
+ });
61
+ });
62
+ chains.sort();
63
+ // extract configs
64
+ const heights = [];
65
+ const bridgeFees = [];
66
+ const networkFees = [];
67
+ const rsnRatios = [];
68
+ const feeRatios = [];
69
+ fees.forEach((fee) => {
70
+ const heightsConfigs = [];
71
+ const bridgeFeesConfigs = [];
72
+ const networkFeesConfigs = [];
73
+ const rsnRatiosConfigs = [];
74
+ const feeRatiosConfigs = [];
75
+ chains.forEach((chain) => {
76
+ if (Object.hasOwn(fee.heights, chain))
77
+ heightsConfigs.push(fee.heights[chain]);
78
+ else
79
+ heightsConfigs.push(-1);
80
+ if (Object.hasOwn(fee.configs, chain)) {
81
+ bridgeFeesConfigs.push(fee.configs[chain].bridgeFee.toString());
82
+ networkFeesConfigs.push(fee.configs[chain].networkFee.toString());
83
+ rsnRatiosConfigs.push([
84
+ fee.configs[chain].rsnRatio.toString(),
85
+ fee.configs[chain].rsnRatioDivisor.toString(),
86
+ ]);
87
+ feeRatiosConfigs.push(fee.configs[chain].feeRatio.toString());
88
+ }
89
+ else {
90
+ bridgeFeesConfigs.push('-1');
91
+ networkFeesConfigs.push('-1');
92
+ rsnRatiosConfigs.push(['-1', '-1']);
93
+ feeRatiosConfigs.push('-1');
94
+ }
95
+ });
96
+ heights.push(heightsConfigs);
97
+ bridgeFees.push(bridgeFeesConfigs);
98
+ networkFees.push(networkFeesConfigs);
99
+ rsnRatios.push(rsnRatiosConfigs);
100
+ feeRatios.push(feeRatiosConfigs);
101
+ });
102
+ return {
103
+ R4: Constant.from_coll_coll_byte(chains.map((chain) => Buffer.from(chain))),
104
+ R5: Constant.from_js(heights),
105
+ R6: Constant.from_js(bridgeFees),
106
+ R7: Constant.from_js(networkFees),
107
+ R8: Constant.from_js(rsnRatios),
108
+ R9: Constant.from_js(feeRatios),
109
+ };
110
+ };
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBR3pEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBWSxFQUFjLEVBQUU7SUFDNUQsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDeEMsTUFBTSxLQUFLLENBQ1Qsd0RBQXdELEdBQUc7YUFDeEQsTUFBTSxFQUFFO2FBQ1IsTUFBTSxFQUFFLEdBQUcsQ0FDZixDQUFDO0lBRUosTUFBTSxJQUFJLEdBQWUsRUFBRSxDQUFDO0lBQzVCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQ2hDLENBQUM7SUFDRixNQUFNLE9B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QyxTQUFTLENBQUM7S0FDaEMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0YW50LCBFcmdvQm94IH0gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgRmVlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogZXh0cmFjdHMgRmVlIGNvbmZpZyBmcm9tIGJveCByZWdpc3RlcnNcbiAqIEBwYXJhbSBib3hcbiAqL1xuZXhwb3J0IGNvbnN0IGV4dHJhY3RGZWVGcm9tQm94ID0gKGJveDogRXJnb0JveCk6IEFycmF5PEZlZT4gPT4ge1xuICBjb25zdCBSNCA9IGJveC5yZWdpc3Rlcl92YWx1ZSg0KTtcbiAgY29uc3QgUjUgPSBib3gucmVnaXN0ZXJfdmFsdWUoNSk7XG4gIGNvbnN0IFI2ID0gYm94LnJlZ2lzdGVyX3ZhbHVlKDYpO1xuICBjb25zdCBSNyA9IGJveC5yZWdpc3Rlcl92YWx1ZSg3KTtcbiAgY29uc3QgUjggPSBib3gucmVnaXN0ZXJfdmFsdWUoOCk7XG4gIGNvbnN0IFI5ID0gYm94LnJlZ2lzdGVyX3ZhbHVlKDkpO1xuXG4gIGlmICghUjQgfHwgIVI1IHx8ICFSNiB8fCAhUjcgfHwgIVI4IHx8ICFSOSlcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIGBJbmNvbXBsZXRlIHJlZ2lzdGVyIGRhdGEgZm9yIG1pbmltdW0tZmVlIGNvbmZpZyBib3ggWyR7Ym94XG4gICAgICAgIC5ib3hfaWQoKVxuICAgICAgICAudG9fc3RyKCl9XWBcbiAgICApO1xuXG4gIGNvbnN0IGZlZXM6IEFycmF5PEZlZT4gPSBbXTtcbiAgY29uc3QgY2hhaW5zID0gUjQudG9fY29sbF9jb2xsX2J5dGUoKS5tYXAoKGVsZW1lbnQpID0+XG4gICAgQnVmZmVyLmZyb20oZWxlbWVudCkudG9TdHJpbmcoKVxuICApO1xuICBjb25zdCBoZWlnaHRzID0gUjUudG9fanMoKSBhcyBBcnJheTxBcnJheTxudW1iZXI+PjtcbiAgY29uc3QgYnJpZGdlRmVlcyA9IFI2LnRvX2pzKCkgYXMgQXJyYXk8QXJyYXk8c3RyaW5nPj47XG4gIGNvbnN0IG5ldHdvcmtGZWVzID0gUjcudG9fanMoKSBhcyBBcnJheTxBcnJheTxzdHJpbmc+PjtcbiAgY29uc3QgcnNuUmF0aW9zID0gUjgudG9fanMoKSBhcyBBcnJheTxBcnJheTxBcnJheTxzdHJpbmc+Pj47XG4gIGNvbnN0IGZlZVJhdGlvcyA9IFI5LnRvX2pzKCkgYXMgQXJyYXk8QXJyYXk8c3RyaW5nPj47XG5cbiAgZm9yIChsZXQgZmVlSWR4ID0gMDsgZmVlSWR4IDwgaGVpZ2h0cy5sZW5ndGg7IGZlZUlkeCsrKSB7XG4gICAgY29uc3QgZmVlOiBGZWUgPSB7XG4gICAgICBoZWlnaHRzOiB7fSxcbiAgICAgIGNvbmZpZ3M6IHt9LFxuICAgIH07XG4gICAgZm9yIChsZXQgY2hhaW5JZHggPSAwOyBjaGFpbklkeCA8IGNoYWlucy5sZW5ndGg7IGNoYWluSWR4KyspIHtcbiAgICAgIGNvbnN0IGNoYWluID0gY2hhaW5zW2NoYWluSWR4XTtcblxuICAgICAgaWYgKGhlaWdodHNbZmVlSWR4XVtjaGFpbklkeF0gPT09IC0xKSBjb250aW51ZTtcbiAgICAgIGZlZS5oZWlnaHRzW2NoYWluXSA9IGhlaWdodHNbZmVlSWR4XVtjaGFpbklkeF07XG5cbiAgICAgIGlmIChicmlkZ2VGZWVzW2ZlZUlkeF1bY2hhaW5JZHhdID09PSAnLTEnKSBjb250aW51ZTtcbiAgICAgIGZlZS5jb25maWdzW2NoYWluXSA9IHtcbiAgICAgICAgYnJpZGdlRmVlOiBCaWdJbnQoYnJpZGdlRmVlc1tmZWVJZHhdW2NoYWluSWR4XSksXG4gICAgICAgIG5ldHdvcmtGZWU6IEJpZ0ludChuZXR3b3JrRmVlc1tmZWVJZHhdW2NoYWluSWR4XSksXG4gICAgICAgIHJzblJhdGlvOiBCaWdJbnQocnNuUmF0aW9zW2ZlZUlkeF1bY2hhaW5JZHhdWzBdKSxcbiAgICAgICAgcnNuUmF0aW9EaXZpc29yOiBCaWdJbnQocnNuUmF0aW9zW2ZlZUlkeF1bY2hhaW5JZHhdWzFdKSxcbiAgICAgICAgZmVlUmF0aW86IEJpZ0ludChmZWVSYXRpb3NbZmVlSWR4XVtjaGFpbklkeF0pLFxuICAgICAgfTtcbiAgICB9XG4gICAgZmVlcy5wdXNoKGZlZSk7XG4gIH1cblxuICByZXR1cm4gZmVlcztcbn07XG5cbi8qKlxuICogY29udmVydHMgZmVlIGNvbmZpZyB0byByZWdpc3RlciB2YWx1ZXNcbiAqIEBwYXJhbSBmZWVzXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgZmVlVG9SZWdpc3RlclZhbHVlcyA9IChmZWVzOiBBcnJheTxGZWU+KSA9PiB7XG4gIC8vICBleHRyYWN0IGNoYWluc1xuICBjb25zdCBjaGFpbnM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgZmVlcy5mb3JFYWNoKChmZWUpID0+IHtcbiAgICBPYmplY3Qua2V5cyhmZWUuaGVpZ2h0cykuZm9yRWFjaCgoZmVlQ2hhaW4pID0+IHtcbiAgICAgIGlmICghY2hhaW5zLmluY2x1ZGVzKGZlZUNoYWluKSkgY2hhaW5zLnB1c2goZmVlQ2hhaW4pO1xuICAgIH0pO1xuICB9KTtcbiAgY2hhaW5zLnNvcnQoKTtcbiAgLy8gIGV4dHJhY3QgY29uZmlnc1xuICBjb25zdCBoZWlnaHRzOiBBcnJheTxBcnJheTxudW1iZXI+PiA9IFtdO1xuICBjb25zdCBicmlkZ2VGZWVzOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuICBjb25zdCBuZXR3b3JrRmVlczogQXJyYXk8QXJyYXk8c3RyaW5nPj4gPSBbXTtcbiAgY29uc3QgcnNuUmF0aW9zOiBBcnJheTxBcnJheTxBcnJheTxzdHJpbmc+Pj4gPSBbXTtcbiAgY29uc3QgZmVlUmF0aW9zOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuICBmZWVzLmZvckVhY2goKGZlZSkgPT4ge1xuICAgIGNvbnN0IGhlaWdodHNDb25maWdzOiBBcnJheTxudW1iZXI+ID0gW107XG4gICAgY29uc3QgYnJpZGdlRmVlc0NvbmZpZ3M6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBjb25zdCBuZXR3b3JrRmVlc0NvbmZpZ3M6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBjb25zdCByc25SYXRpb3NDb25maWdzOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuICAgIGNvbnN0IGZlZVJhdGlvc0NvbmZpZ3M6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICAgIGNoYWlucy5mb3JFYWNoKChjaGFpbikgPT4ge1xuICAgICAgaWYgKE9iamVjdC5oYXNPd24oZmVlLmhlaWdodHMsIGNoYWluKSlcbiAgICAgICAgaGVpZ2h0c0NvbmZpZ3MucHVzaChmZWUuaGVpZ2h0c1tjaGFpbl0pO1xuICAgICAgZWxzZSBoZWlnaHRzQ29uZmlncy5wdXNoKC0xKTtcblxuICAgICAgaWYgKE9iamVjdC5oYXNPd24oZmVlLmNvbmZpZ3MsIGNoYWluKSkge1xuICAgICAgICBicmlkZ2VGZWVzQ29uZmlncy5wdXNoKGZlZS5jb25maWdzW2NoYWluXS5icmlkZ2VGZWUudG9TdHJpbmcoKSk7XG4gICAgICAgIG5ldHdvcmtGZWVzQ29uZmlncy5wdXNoKGZlZS5jb25maWdzW2NoYWluXS5uZXR3b3JrRmVlLnRvU3RyaW5nKCkpO1xuICAgICAgICByc25SYXRpb3NDb25maWdzLnB1c2goW1xuICAgICAgICAgIGZlZS5jb25maWdzW2NoYWluXS5yc25SYXRpby50b1N0cmluZygpLFxuICAgICAgICAgIGZlZS5jb25maWdzW2NoYWluXS5yc25SYXRpb0Rpdmlzb3IudG9TdHJpbmcoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGZlZVJhdGlvc0NvbmZpZ3MucHVzaChmZWUuY29uZmlnc1tjaGFpbl0uZmVlUmF0aW8udG9TdHJpbmcoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmlkZ2VGZWVzQ29uZmlncy5wdXNoKCctMScpO1xuICAgICAgICBuZXR3b3JrRmVlc0NvbmZpZ3MucHVzaCgnLTEnKTtcbiAgICAgICAgcnNuUmF0aW9zQ29uZmlncy5wdXNoKFsnLTEnLCAnLTEnXSk7XG4gICAgICAgIGZlZVJhdGlvc0NvbmZpZ3MucHVzaCgnLTEnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGhlaWdodHMucHVzaChoZWlnaHRzQ29uZmlncyk7XG4gICAgYnJpZGdlRmVlcy5wdXNoKGJyaWRnZUZlZXNDb25maWdzKTtcbiAgICBuZXR3b3JrRmVlcy5wdXNoKG5ldHdvcmtGZWVzQ29uZmlncyk7XG4gICAgcnNuUmF0aW9zLnB1c2gocnNuUmF0aW9zQ29uZmlncyk7XG4gICAgZmVlUmF0aW9zLnB1c2goZmVlUmF0aW9zQ29uZmlncyk7XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgUjQ6IENvbnN0YW50LmZyb21fY29sbF9jb2xsX2J5dGUoY2hhaW5zLm1hcCgoY2hhaW4pID0+IEJ1ZmZlci5mcm9tKGNoYWluKSkpLFxuICAgIFI1OiBDb25zdGFudC5mcm9tX2pzKGhlaWdodHMpLFxuICAgIFI2OiBDb25zdGFudC5mcm9tX2pzKGJyaWRnZUZlZXMpLFxuICAgIFI3OiBDb25zdGFudC5mcm9tX2pzKG5ldHdvcmtGZWVzKSxcbiAgICBSODogQ29uc3RhbnQuZnJvbV9qcyhyc25SYXRpb3MpLFxuICAgIFI5OiBDb25zdGFudC5mcm9tX2pzKGZlZVJhdGlvcyksXG4gIH07XG59O1xuIl19
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@rosen-bridge/minimum-fee",
3
- "version": "2.2.3",
3
+ "version": "2.3.0",
4
4
  "description": "this project gets minimum fee of the bridge for supported tokens from blockchain",
5
- "main": "dist/lib/index.js",
6
- "types": "dist/lib/index.d.ts",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
7
  "type": "module",
8
8
  "author": "Rosen Team",
9
9
  "scripts": {
@@ -22,26 +22,22 @@
22
22
  "files": [
23
23
  "dist"
24
24
  ],
25
- "license": "GPL-3.0",
25
+ "license": "MIT",
26
26
  "dependencies": {
27
- "@rosen-bridge/abstract-logger": "^2.0.1",
28
- "@rosen-bridge/json-bigint": "^0.1.0",
27
+ "@rosen-bridge/abstract-logger": "^2.1.0",
28
+ "@rosen-bridge/json-bigint": "^0.2.0",
29
29
  "@rosen-clients/ergo-explorer": "^1.1.5",
30
30
  "@rosen-clients/ergo-node": "^1.2.3",
31
31
  "ergo-lib-wasm-nodejs": "^0.24.1"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/jest": "^29.1.2",
35
- "@types/node": "^18.0.0",
36
- "@typescript-eslint/eslint-plugin": "^5.30.7",
37
- "@typescript-eslint/parser": "^5.26.0",
38
- "eslint": "^8.16.0",
39
- "eslint-config-prettier": "^8.5.0",
35
+ "@types/node": "^20.11.0",
40
36
  "jest": "^29.2.0",
41
- "prettier": "^2.7.1",
42
37
  "ts-jest": "^29.0.3",
43
38
  "ts-node": "^10.8.1",
44
- "typescript": "^4.7.4"
39
+ "@babel/preset-env": "^7.19.0",
40
+ "typescript": "^5.8.3"
45
41
  },
46
42
  "directories": {
47
43
  "lib": "lib",
@@ -51,6 +47,6 @@
51
47
  "rosen"
52
48
  ],
53
49
  "engines": {
54
- "node": ">=18.16.1"
50
+ "node": ">=20.11.0"
55
51
  }
56
52
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"MinimumFeeBox.d.ts","sourceRoot":"","sources":["../../lib/MinimumFeeBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAiB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,yBAAyB,MAAM,8BAA8B,CAAC;AACrE,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,qBAAa,aAAa;IACxB,SAAS,CAAC,QAAQ,CAAC,sBAAsB,MAAM;IAC/C,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACvE,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;gBAG7D,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,eAAe,EAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,cAAc;IAUzB;;;OAGG;IACH,QAAQ,QAAa,QAAQ,OAAO,CAAC,CAoCnC;IAEF;;;OAGG;IACH,SAAS,CAAC,iBAAiB,kBAAmB,MAAM,OAAO,CAAC,KAAG,OAAO,CAyBpE;IAEF;;OAEG;IACH,SAAS,CAAC,uBAAuB,QAAa,QAAQ,MAAM,OAAO,CAAC,CAAC,CA8CnE;IAEF;;OAEG;IACH,SAAS,CAAC,mBAAmB,QAAa,QAAQ,MAAM,OAAO,CAAC,CAAC,CAiD/D;IAEF;;OAEG;IACH,MAAM,QAAO,OAAO,GAAG,SAAS,CAAa;IAE7C;;OAEG;IACH,UAAU,QAAO,MAAM,GAAG,CAAC,CASzB;IAEF;;;;;OAKG;IACH,MAAM,cACO,MAAM,UACT,MAAM,WACL,MAAM,KACd,eAAe,CA4BhB;IAEF;;;OAGG;IACH,SAAS,QAAO,oBAAoB,CA+BlC;CACH"}
@@ -1,219 +0,0 @@
1
- import { Address, ErgoBox, NetworkPrefix } from 'ergo-lib-wasm-nodejs';
2
- import { ChainMinimumFee, ErgoNetworkType } from './types';
3
- import { FailedError, NotFoundError } from './errors';
4
- import ergoExplorerClientFactory from '@rosen-clients/ergo-explorer';
5
- import ergoNodeClientFactory from '@rosen-clients/ergo-node';
6
- import JsonBigInt from '@rosen-bridge/json-bigint';
7
- import handleApiError from './handleApiError';
8
- import { DummyLogger } from '@rosen-bridge/abstract-logger';
9
- import { MinimumFeeBoxBuilder } from './MinimumFeeBoxBuilder';
10
- import { MinimumFeeConfig } from './MinimumFeeConfig';
11
- import { ERGO_NATIVE_TOKEN } from './constants';
12
- import { extractFeeFromBox } from './utils';
13
- export class MinimumFeeBox {
14
- BOX_FETCHING_PAGE_SIZE = 50;
15
- logger;
16
- box;
17
- tokenId;
18
- minimumFeeNFT;
19
- explorerClient;
20
- nodeClient;
21
- constructor(tokenId, minimumFeeNFT, networkType, networkUrl, logger) {
22
- this.tokenId = tokenId;
23
- this.minimumFeeNFT = minimumFeeNFT;
24
- if (networkType === ErgoNetworkType.explorer)
25
- this.explorerClient = ergoExplorerClientFactory(networkUrl);
26
- else
27
- this.nodeClient = ergoNodeClientFactory(networkUrl);
28
- this.logger = logger ? logger : new DummyLogger();
29
- }
30
- /**
31
- * fetches the box from the blockchain
32
- * @returns true if action was successful, otherwise false
33
- */
34
- fetchBox = async () => {
35
- const boxHasAppropriateTokens = (box) => {
36
- const tokenLen = box.tokens().len();
37
- let hasMinimumFeeNFT = false;
38
- let hasTargetToken = this.tokenId === ERGO_NATIVE_TOKEN ? true : false;
39
- const hasCorrectTokens = this.tokenId === ERGO_NATIVE_TOKEN ? tokenLen === 1 : tokenLen === 2;
40
- for (let i = 0; i < tokenLen; i++) {
41
- const id = box.tokens().get(i).id().to_str();
42
- if (id === this.minimumFeeNFT)
43
- hasMinimumFeeNFT = true;
44
- else if (id === this.tokenId)
45
- hasTargetToken = true;
46
- }
47
- return hasCorrectTokens && hasMinimumFeeNFT && hasTargetToken;
48
- };
49
- try {
50
- const boxes = this.explorerClient
51
- ? await this.fetchBoxesUsingExplorer()
52
- : await this.fetchBoxesUsingNode();
53
- this.box = this.selectEligibleBox(boxes.filter((box) => boxHasAppropriateTokens(box)));
54
- return true;
55
- }
56
- catch (e) {
57
- if (e instanceof NotFoundError || e instanceof FailedError) {
58
- this.logger.warn(`No valid minimum-fee box. reason: ${e}`);
59
- this.box = undefined;
60
- }
61
- else {
62
- this.logger.warn(`An error occurred while updating minimum-fee box for token [${this.tokenId}]: ${e}`);
63
- if (e instanceof Error && e.stack)
64
- this.logger.warn(e.stack);
65
- }
66
- return false;
67
- }
68
- };
69
- /**
70
- * returns fetched box or throws appropriate error if found more or none
71
- * @param eligibleBoxes
72
- */
73
- selectEligibleBox = (eligibleBoxes) => {
74
- this.logger.debug(`Found [${eligibleBoxes.length}] minimum-fee boxes: ${JsonBigInt.stringify(eligibleBoxes.map((box) => box.to_json()))}`);
75
- if (eligibleBoxes.length === 0) {
76
- throw new NotFoundError(`Found no minimum-fee box for token [${this.tokenId}]`);
77
- }
78
- else if (eligibleBoxes.length > 1) {
79
- throw new FailedError(`Found [${eligibleBoxes.length}] minimum-fee boxes for token [${this.tokenId}]`);
80
- }
81
- else {
82
- this.logger.debug(`Found minimum-fee box [${eligibleBoxes[0]
83
- .box_id()
84
- .to_str()}] for token [${this.tokenId}]`);
85
- return eligibleBoxes[0];
86
- }
87
- };
88
- /**
89
- * fetches box from the blockchain using explorer client
90
- */
91
- fetchBoxesUsingExplorer = async () => {
92
- const boxes = [];
93
- try {
94
- let currentPage = 0;
95
- let boxesPage = await this.explorerClient.v1.getApiV1BoxesUnspentBytokenidP1(this.minimumFeeNFT, {
96
- offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
97
- limit: this.BOX_FETCHING_PAGE_SIZE,
98
- });
99
- this.logger.debug(`requested 'explorerClient.getApiV1BoxesUnspentBytokenidP1' for token [${this.minimumFeeNFT}]. res: ${JsonBigInt.stringify(boxesPage)}`);
100
- while (boxesPage.items?.length) {
101
- boxes.push(...boxesPage.items.map((box) => ErgoBox.from_json(JsonBigInt.stringify(box))));
102
- currentPage++;
103
- boxesPage =
104
- await this.explorerClient.v1.getApiV1BoxesUnspentBytokenidP1(this.minimumFeeNFT, {
105
- offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
106
- limit: this.BOX_FETCHING_PAGE_SIZE,
107
- });
108
- this.logger.debug(`requested 'explorerClient.getApiV1BoxesUnspentBytokenidP1' for token [${this.minimumFeeNFT}]. res: ${JsonBigInt.stringify(boxesPage)}`);
109
- }
110
- }
111
- catch (error) {
112
- return handleApiError(error, 'Failed to get boxes by token id from Ergo Explorer:');
113
- }
114
- return boxes;
115
- };
116
- /**
117
- * fetches the box from the blockchain using node client
118
- */
119
- fetchBoxesUsingNode = async () => {
120
- const boxes = [];
121
- try {
122
- let currentPage = 0;
123
- let boxesPage = await this.nodeClient.getBoxesByTokenIdUnspent(this.minimumFeeNFT, {
124
- offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
125
- limit: this.BOX_FETCHING_PAGE_SIZE,
126
- });
127
- this.logger.debug(`requested 'nodeClient.getBoxesByTokenIdUnspent' for token [${this.minimumFeeNFT}]. res: ${JsonBigInt.stringify(boxesPage)}`);
128
- while (boxesPage.length !== 0) {
129
- boxes.push(...boxesPage.map((box) => ErgoBox.from_json(JsonBigInt.stringify(box))));
130
- currentPage++;
131
- boxesPage = await this.nodeClient.getBoxesByTokenIdUnspent(this.minimumFeeNFT, {
132
- offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
133
- limit: this.BOX_FETCHING_PAGE_SIZE,
134
- });
135
- this.logger.debug(`requested 'nodeClient.getBoxesByTokenIdUnspent' for token [${this.minimumFeeNFT}]. res: ${JsonBigInt.stringify(boxesPage)}`);
136
- }
137
- }
138
- catch (error) {
139
- const baseError = 'Failed to get boxes by token id from Ergo Node:';
140
- handleApiError(error, baseError, {
141
- handleRespondedState: (error) => {
142
- if (error.response.status === 400)
143
- return;
144
- throw new FailedError(`${baseError} [${error.response.status}] ${error.response.data.reason}`);
145
- },
146
- });
147
- }
148
- return boxes;
149
- };
150
- /**
151
- * returns fetched config box
152
- */
153
- getBox = () => this.box;
154
- /**
155
- * gets current feeConfig
156
- */
157
- getConfigs = () => {
158
- if (!this.box)
159
- throw Error(`Box is not fetched yet`);
160
- const fee = extractFeeFromBox(this.box);
161
- this.logger.debug(`Extracted fee config from box [${this.box
162
- .box_id()
163
- .to_str()}]: ${JsonBigInt.stringify(fee)}`);
164
- return fee;
165
- };
166
- /**
167
- * gets corresponding config for two chains and height
168
- * @param fromChain
169
- * @param height blockchain height for fromChain
170
- * @param toChain
171
- */
172
- getFee = (fromChain, height, toChain) => {
173
- if (!this.box)
174
- throw Error(`Box is not fetched yet`);
175
- const fees = this.getConfigs().reverse();
176
- for (const fee of fees) {
177
- if (!Object.hasOwn(fee.heights, fromChain))
178
- throw new NotFoundError(`No fee found for chain [${fromChain}] in box [${this.box
179
- .box_id()
180
- .to_str()}]`);
181
- if (fee.heights[fromChain] < height) {
182
- const chainFee = fee.configs[toChain];
183
- if (chainFee)
184
- return new ChainMinimumFee(chainFee);
185
- else
186
- throw new Error(`Chain [${toChain}] is not supported at given height of fromChain [${height} of ${fromChain}] in box [${this.box
187
- .box_id()
188
- .to_str()}]`);
189
- }
190
- }
191
- throw new NotFoundError(`Config does not support height [${height}] for chain [${fromChain}] in box [${this.box
192
- .box_id()
193
- .to_str()}]`);
194
- };
195
- /**
196
- * generates a MinimumFeeBoxBuilder using current box
197
- * note that 'height' parameter of builder won't be set
198
- */
199
- toBuilder = () => {
200
- if (!this.box)
201
- throw Error(`Box is not fetched yet`);
202
- const builder = new MinimumFeeBoxBuilder(this.minimumFeeNFT, Address.recreate_from_ergo_tree(this.box.ergo_tree()).to_base58(NetworkPrefix.Mainnet))
203
- .setValue(BigInt(this.box.value().as_i64().to_str()))
204
- .setToken(this.tokenId);
205
- this.getConfigs().forEach((fee) => {
206
- this.logger.debug(`Extracted fee config from box [${this.box.box_id().to_str()}]: ${JsonBigInt.stringify(fee)}`);
207
- const chainFee = new MinimumFeeConfig();
208
- Object.keys(fee.heights).forEach((chain) => {
209
- if (Object.hasOwn(fee.configs, chain))
210
- chainFee.setChainConfig(chain, fee.heights[chain], fee.configs[chain]);
211
- else
212
- chainFee.setChainConfig(chain, fee.heights[chain], undefined);
213
- });
214
- builder.addConfig(chainFee);
215
- });
216
- return builder;
217
- };
218
- }
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluaW11bUZlZUJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9NaW5pbXVtRmVlQm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFPLE1BQU0sU0FBUyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RELE9BQU8seUJBQXlCLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxxQkFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFNUMsTUFBTSxPQUFPLGFBQWE7SUFDTCxzQkFBc0IsR0FBRyxFQUFFLENBQUM7SUFDckMsTUFBTSxDQUFpQjtJQUN2QixHQUFHLENBQXNCO0lBQ3pCLE9BQU8sQ0FBUztJQUNoQixhQUFhLENBQVM7SUFDdEIsY0FBYyxDQUErQztJQUM3RCxVQUFVLENBQTJDO0lBRS9ELFlBQ0UsT0FBZSxFQUNmLGFBQXFCLEVBQ3JCLFdBQTRCLEVBQzVCLFVBQWtCLEVBQ2xCLE1BQXVCO1FBRXZCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FB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Q0FBQzthQUNwRCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixrQ0FBa0MsSUFBSSxDQUFDLEdBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUNyRixHQUFHLENBQ0osRUFBRSxDQUNKLENBQUM7WUFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztvQkFDbkMsUUFBUSxDQUFDLGNBQWMsQ0FDckIsS0FBSyxFQUNMLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQ2xCLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQ25CLENBQUM7O29CQUNDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZGRyZXNzLCBFcmdvQm94LCBOZXR3b3JrUHJlZml4IH0gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgQ2hhaW5NaW5pbXVtRmVlLCBFcmdvTmV0d29ya1R5cGUsIEZlZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgRmFpbGVkRXJyb3IsIE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgZXJnb0V4cGxvcmVyQ2xpZW50RmFjdG9yeSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLWV4cGxvcmVyJztcbmltcG9ydCBlcmdvTm9kZUNsaWVudEZhY3RvcnkgZnJvbSAnQHJvc2VuLWNsaWVudHMvZXJnby1ub2RlJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IGhhbmRsZUFwaUVycm9yIGZyb20gJy4vaGFuZGxlQXBpRXJyb3InO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgTWluaW11bUZlZUJveEJ1aWxkZXIgfSBmcm9tICcuL01pbmltdW1GZWVCb3hCdWlsZGVyJztcbmltcG9ydCB7IE1pbmltdW1GZWVDb25maWcgfSBmcm9tICcuL01pbmltdW1GZWVDb25maWcnO1xuaW1wb3J0IHsgRVJHT19OQVRJVkVfVE9LRU4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBleHRyYWN0RmVlRnJvbUJveCB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgTWluaW11bUZlZUJveCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBCT1hfRkVUQ0hJTkdfUEFHRV9TSVpFID0gNTA7XG4gIHByb3RlY3RlZCBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICBwcm90ZWN0ZWQgYm94OiBFcmdvQm94IHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgdG9rZW5JZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbWluaW11bUZlZU5GVDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZXhwbG9yZXJDbGllbnQ6IFJldHVyblR5cGU8dHlwZW9mIGVyZ29FeHBsb3JlckNsaWVudEZhY3Rvcnk+O1xuICBwcm90ZWN0ZWQgbm9kZUNsaWVudDogUmV0dXJuVHlwZTx0eXBlb2YgZXJnb05vZGVDbGllbnRGYWN0b3J5PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0b2tlbklkOiBzdHJpbmcsXG4gICAgbWluaW11bUZlZU5GVDogc3RyaW5nLFxuICAgIG5ldHdvcmtUeXBlOiBFcmdvTmV0d29ya1R5cGUsXG4gICAgbmV0d29ya1VybDogc3RyaW5nLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyXG4gICkge1xuICAgIHRoaXMudG9rZW5JZCA9IHRva2VuSWQ7XG4gICAgdGhpcy5taW5pbXVtRmVlTkZUID0gbWluaW11bUZlZU5GVDtcbiAgICBpZiAobmV0d29ya1R5cGUgPT09IEVyZ29OZXR3b3JrVHlwZS5leHBsb3JlcilcbiAgICAgIHRoaXMuZXhwbG9yZXJDbGllbnQgPSBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5KG5ldHdvcmtVcmwpO1xuICAgIGVsc2UgdGhpcy5ub2RlQ2xpZW50ID0gZXJnb05vZGVDbGllbnRGYWN0b3J5KG5ldHdvcmtVcmwpO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gIH1cblxuICAvKipcbiAgICogZmV0Y2hlcyB0aGUgYm94IGZyb20gdGhlIGJsb2NrY2hhaW5cbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhY3Rpb24gd2FzIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBmYWxzZVxuICAgKi9cbiAgZmV0Y2hCb3ggPSBhc3luYyAoKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgY29uc3QgYm94SGFzQXBwcm9wcmlhdGVUb2tlbnMgPSAoYm94OiBFcmdvQm94KSA9PiB7XG4gICAgICBjb25zdCB0b2tlbkxlbiA9IGJveC50b2tlbnMoKS5sZW4oKTtcbiAgICAgIGxldCBoYXNNaW5pbXVtRmVlTkZUID0gZmFsc2U7XG4gICAgICBsZXQgaGFzVGFyZ2V0VG9rZW4gPSB0aGlzLnRva2VuSWQgPT09IEVSR09fTkFUSVZFX1RPS0VOID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgY29uc3QgaGFzQ29ycmVjdFRva2VucyA9XG4gICAgICAgIHRoaXMudG9rZW5JZCA9PT0gRVJHT19OQVRJVkVfVE9LRU4gPyB0b2tlbkxlbiA9PT0gMSA6IHRva2VuTGVuID09PSAyO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbkxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGlkID0gYm94LnRva2VucygpLmdldChpKS5pZCgpLnRvX3N0cigpO1xuICAgICAgICBpZiAoaWQgPT09IHRoaXMubWluaW11bUZlZU5GVCkgaGFzTWluaW11bUZlZU5GVCA9IHRydWU7XG4gICAgICAgIGVsc2UgaWYgKGlkID09PSB0aGlzLnRva2VuSWQpIGhhc1RhcmdldFRva2VuID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNDb3JyZWN0VG9rZW5zICYmIGhhc01pbmltdW1GZWVORlQgJiYgaGFzVGFyZ2V0VG9rZW47XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBib3hlcyA9IHRoaXMuZXhwbG9yZXJDbGllbnRcbiAgICAgICAgPyBhd2FpdCB0aGlzLmZldGNoQm94ZXNVc2luZ0V4cGxvcmVyKClcbiAgICAgICAgOiBhd2FpdCB0aGlzLmZldGNoQm94ZXNVc2luZ05vZGUoKTtcblxuICAgICAgdGhpcy5ib3ggPSB0aGlzLnNlbGVjdEVsaWdpYmxlQm94KFxuICAgICAgICBib3hlcy5maWx0ZXIoKGJveDogRXJnb0JveCkgPT4gYm94SGFzQXBwcm9wcmlhdGVUb2tlbnMoYm94KSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5vdEZvdW5kRXJyb3IgfHwgZSBpbnN0YW5jZW9mIEZhaWxlZEVycm9yKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYE5vIHZhbGlkIG1pbmltdW0tZmVlIGJveC4gcmVhc29uOiAke2V9YCk7XG4gICAgICAgIHRoaXMuYm94ID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICBgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdXBkYXRpbmcgbWluaW11bS1mZWUgYm94IGZvciB0b2tlbiBbJHt0aGlzLnRva2VuSWR9XTogJHtlfWBcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLnN0YWNrKSB0aGlzLmxvZ2dlci53YXJuKGUuc3RhY2spO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJucyBmZXRjaGVkIGJveCBvciB0aHJvd3MgYXBwcm9wcmlhdGUgZXJyb3IgaWYgZm91bmQgbW9yZSBvciBub25lXG4gICAqIEBwYXJhbSBlbGlnaWJsZUJveGVzXG4gICAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0RWxpZ2libGVCb3ggPSAoZWxpZ2libGVCb3hlczogQXJyYXk8RXJnb0JveD4pOiBFcmdvQm94ID0+IHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBGb3VuZCBbJHtcbiAgICAgICAgZWxpZ2libGVCb3hlcy5sZW5ndGhcbiAgICAgIH1dIG1pbmltdW0tZmVlIGJveGVzOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KFxuICAgICAgICBlbGlnaWJsZUJveGVzLm1hcCgoYm94KSA9PiBib3gudG9fanNvbigpKVxuICAgICAgKX1gXG4gICAgKTtcblxuICAgIGlmIChlbGlnaWJsZUJveGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBGb3VuZCBubyBtaW5pbXVtLWZlZSBib3ggZm9yIHRva2VuIFske3RoaXMudG9rZW5JZH1dYFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGVsaWdpYmxlQm94ZXMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEZhaWxlZEVycm9yKFxuICAgICAgICBgRm91bmQgWyR7ZWxpZ2libGVCb3hlcy5sZW5ndGh9XSBtaW5pbXVtLWZlZSBib3hlcyBmb3IgdG9rZW4gWyR7dGhpcy50b2tlbklkfV1gXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEZvdW5kIG1pbmltdW0tZmVlIGJveCBbJHtlbGlnaWJsZUJveGVzWzBdXG4gICAgICAgICAgLmJveF9pZCgpXG4gICAgICAgICAgLnRvX3N0cigpfV0gZm9yIHRva2VuIFske3RoaXMudG9rZW5JZH1dYFxuICAgICAgKTtcbiAgICAgIHJldHVybiBlbGlnaWJsZUJveGVzWzBdO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogZmV0Y2hlcyBib3ggZnJvbSB0aGUgYmxvY2tjaGFpbiB1c2luZyBleHBsb3JlciBjbGllbnRcbiAgICovXG4gIHByb3RlY3RlZCBmZXRjaEJveGVzVXNpbmdFeHBsb3JlciA9IGFzeW5jICgpOiBQcm9taXNlPEFycmF5PEVyZ29Cb3g+PiA9PiB7XG4gICAgY29uc3QgYm94ZXM6IEFycmF5PEVyZ29Cb3g+ID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjdXJyZW50UGFnZSA9IDA7XG4gICAgICBsZXQgYm94ZXNQYWdlID1cbiAgICAgICAgYXdhaXQgdGhpcy5leHBsb3JlckNsaWVudC52MS5nZXRBcGlWMUJveGVzVW5zcGVudEJ5dG9rZW5pZFAxKFxuICAgICAgICAgIHRoaXMubWluaW11bUZlZU5GVCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvZmZzZXQ6IGN1cnJlbnRQYWdlICogdGhpcy5CT1hfRkVUQ0hJTkdfUEFHRV9TSVpFLFxuICAgICAgICAgICAgbGltaXQ6IHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYHJlcXVlc3RlZCAnZXhwbG9yZXJDbGllbnQuZ2V0QXBpVjFCb3hlc1Vuc3BlbnRCeXRva2VuaWRQMScgZm9yIHRva2VuIFske1xuICAgICAgICAgIHRoaXMubWluaW11bUZlZU5GVFxuICAgICAgICB9XS4gcmVzOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KGJveGVzUGFnZSl9YFxuICAgICAgKTtcbiAgICAgIHdoaWxlIChib3hlc1BhZ2UuaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICBib3hlcy5wdXNoKFxuICAgICAgICAgIC4uLmJveGVzUGFnZS5pdGVtcy5tYXAoKGJveCkgPT5cbiAgICAgICAgICAgIEVyZ29Cb3guZnJvbV9qc29uKEpzb25CaWdJbnQuc3RyaW5naWZ5KGJveCkpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBjdXJyZW50UGFnZSsrO1xuICAgICAgICBib3hlc1BhZ2UgPVxuICAgICAgICAgIGF3YWl0IHRoaXMuZXhwbG9yZXJDbGllbnQudjEuZ2V0QXBpVjFCb3hlc1Vuc3BlbnRCeXRva2VuaWRQMShcbiAgICAgICAgICAgIHRoaXMubWluaW11bUZlZU5GVCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb2Zmc2V0OiBjdXJyZW50UGFnZSAqIHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICAgICAgbGltaXQ6IHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgcmVxdWVzdGVkICdleHBsb3JlckNsaWVudC5nZXRBcGlWMUJveGVzVW5zcGVudEJ5dG9rZW5pZFAxJyBmb3IgdG9rZW4gWyR7XG4gICAgICAgICAgICB0aGlzLm1pbmltdW1GZWVORlRcbiAgICAgICAgICB9XS4gcmVzOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KGJveGVzUGFnZSl9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gaGFuZGxlQXBpRXJyb3IoXG4gICAgICAgIGVycm9yLFxuICAgICAgICAnRmFpbGVkIHRvIGdldCBib3hlcyBieSB0b2tlbiBpZCBmcm9tIEVyZ28gRXhwbG9yZXI6J1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYm94ZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIGZldGNoZXMgdGhlIGJveCBmcm9tIHRoZSBibG9ja2NoYWluIHVzaW5nIG5vZGUgY2xpZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgZmV0Y2hCb3hlc1VzaW5nTm9kZSA9IGFzeW5jICgpOiBQcm9taXNlPEFycmF5PEVyZ29Cb3g+PiA9PiB7XG4gICAgY29uc3QgYm94ZXM6IEFycmF5PEVyZ29Cb3g+ID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjdXJyZW50UGFnZSA9IDA7XG4gICAgICBsZXQgYm94ZXNQYWdlID0gYXdhaXQgdGhpcy5ub2RlQ2xpZW50LmdldEJveGVzQnlUb2tlbklkVW5zcGVudChcbiAgICAgICAgdGhpcy5taW5pbXVtRmVlTkZULFxuICAgICAgICB7XG4gICAgICAgICAgb2Zmc2V0OiBjdXJyZW50UGFnZSAqIHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICBsaW1pdDogdGhpcy5CT1hfRkVUQ0hJTkdfUEFHRV9TSVpFLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGByZXF1ZXN0ZWQgJ25vZGVDbGllbnQuZ2V0Qm94ZXNCeVRva2VuSWRVbnNwZW50JyBmb3IgdG9rZW4gWyR7XG4gICAgICAgICAgdGhpcy5taW5pbXVtRmVlTkZUXG4gICAgICAgIH1dLiByZXM6ICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoYm94ZXNQYWdlKX1gXG4gICAgICApO1xuICAgICAgd2hpbGUgKGJveGVzUGFnZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgYm94ZXMucHVzaChcbiAgICAgICAgICAuLi5ib3hlc1BhZ2UubWFwKChib3gpID0+XG4gICAgICAgICAgICBFcmdvQm94LmZyb21fanNvbihKc29uQmlnSW50LnN0cmluZ2lmeShib3gpKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgY3VycmVudFBhZ2UrKztcbiAgICAgICAgYm94ZXNQYWdlID0gYXdhaXQgdGhpcy5ub2RlQ2xpZW50LmdldEJveGVzQnlUb2tlbklkVW5zcGVudChcbiAgICAgICAgICB0aGlzLm1pbmltdW1GZWVORlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgb2Zmc2V0OiBjdXJyZW50UGFnZSAqIHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICAgIGxpbWl0OiB0aGlzLkJPWF9GRVRDSElOR19QQUdFX1NJWkUsXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgcmVxdWVzdGVkICdub2RlQ2xpZW50LmdldEJveGVzQnlUb2tlbklkVW5zcGVudCcgZm9yIHRva2VuIFske1xuICAgICAgICAgICAgdGhpcy5taW5pbXVtRmVlTkZUXG4gICAgICAgICAgfV0uIHJlczogJHtKc29uQmlnSW50LnN0cmluZ2lmeShib3hlc1BhZ2UpfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgYmFzZUVycm9yID0gJ0ZhaWxlZCB0byBnZXQgYm94ZXMgYnkgdG9rZW4gaWQgZnJvbSBFcmdvIE5vZGU6JztcbiAgICAgIGhhbmRsZUFwaUVycm9yKGVycm9yLCBiYXNlRXJyb3IsIHtcbiAgICAgICAgaGFuZGxlUmVzcG9uZGVkU3RhdGU6IChlcnJvcikgPT4ge1xuICAgICAgICAgIGlmIChlcnJvci5yZXNwb25zZS5zdGF0dXMgPT09IDQwMCkgcmV0dXJuO1xuICAgICAgICAgIHRocm93IG5ldyBGYWlsZWRFcnJvcihcbiAgICAgICAgICAgIGAke2Jhc2VFcnJvcn0gWyR7ZXJyb3IucmVzcG9uc2Uuc3RhdHVzfV0gJHtlcnJvci5yZXNwb25zZS5kYXRhLnJlYXNvbn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBib3hlcztcbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJucyBmZXRjaGVkIGNvbmZpZyBib3hcbiAgICovXG4gIGdldEJveCA9ICgpOiBFcmdvQm94IHwgdW5kZWZpbmVkID0+IHRoaXMuYm94O1xuXG4gIC8qKlxuICAgKiBnZXRzIGN1cnJlbnQgZmVlQ29uZmlnXG4gICAqL1xuICBnZXRDb25maWdzID0gKCk6IEFycmF5PEZlZT4gPT4ge1xuICAgIGlmICghdGhpcy5ib3gpIHRocm93IEVycm9yKGBCb3ggaXMgbm90IGZldGNoZWQgeWV0YCk7XG4gICAgY29uc3QgZmVlID0gZXh0cmFjdEZlZUZyb21Cb3godGhpcy5ib3gpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgYEV4dHJhY3RlZCBmZWUgY29uZmlnIGZyb20gYm94IFske3RoaXMuYm94XG4gICAgICAgIC5ib3hfaWQoKVxuICAgICAgICAudG9fc3RyKCl9XTogJHtKc29uQmlnSW50LnN0cmluZ2lmeShmZWUpfWBcbiAgICApO1xuICAgIHJldHVybiBmZWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIGdldHMgY29ycmVzcG9uZGluZyBjb25maWcgZm9yIHR3byBjaGFpbnMgYW5kIGhlaWdodFxuICAgKiBAcGFyYW0gZnJvbUNoYWluXG4gICAqIEBwYXJhbSBoZWlnaHQgYmxvY2tjaGFpbiBoZWlnaHQgZm9yIGZyb21DaGFpblxuICAgKiBAcGFyYW0gdG9DaGFpblxuICAgKi9cbiAgZ2V0RmVlID0gKFxuICAgIGZyb21DaGFpbjogc3RyaW5nLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICAgIHRvQ2hhaW46IHN0cmluZ1xuICApOiBDaGFpbk1pbmltdW1GZWUgPT4ge1xuICAgIGlmICghdGhpcy5ib3gpIHRocm93IEVycm9yKGBCb3ggaXMgbm90IGZldGNoZWQgeWV0YCk7XG5cbiAgICBjb25zdCBmZWVzID0gdGhpcy5nZXRDb25maWdzKCkucmV2ZXJzZSgpO1xuICAgIGZvciAoY29uc3QgZmVlIG9mIGZlZXMpIHtcbiAgICAgIGlmICghT2JqZWN0Lmhhc093bihmZWUuaGVpZ2h0cywgZnJvbUNoYWluKSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgICAgYE5vIGZlZSBmb3VuZCBmb3IgY2hhaW4gWyR7ZnJvbUNoYWlufV0gaW4gYm94IFske3RoaXMuYm94XG4gICAgICAgICAgICAuYm94X2lkKClcbiAgICAgICAgICAgIC50b19zdHIoKX1dYFxuICAgICAgICApO1xuICAgICAgaWYgKGZlZS5oZWlnaHRzW2Zyb21DaGFpbl0gPCBoZWlnaHQpIHtcbiAgICAgICAgY29uc3QgY2hhaW5GZWUgPSBmZWUuY29uZmlnc1t0b0NoYWluXTtcbiAgICAgICAgaWYgKGNoYWluRmVlKSByZXR1cm4gbmV3IENoYWluTWluaW11bUZlZShjaGFpbkZlZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQ2hhaW4gWyR7dG9DaGFpbn1dIGlzIG5vdCBzdXBwb3J0ZWQgYXQgZ2l2ZW4gaGVpZ2h0IG9mIGZyb21DaGFpbiBbJHtoZWlnaHR9IG9mICR7ZnJvbUNoYWlufV0gaW4gYm94IFske3RoaXMuYm94XG4gICAgICAgICAgICAgIC5ib3hfaWQoKVxuICAgICAgICAgICAgICAudG9fc3RyKCl9XWBcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgYENvbmZpZyBkb2VzIG5vdCBzdXBwb3J0IGhlaWdodCBbJHtoZWlnaHR9XSBmb3IgY2hhaW4gWyR7ZnJvbUNoYWlufV0gaW4gYm94IFske3RoaXMuYm94XG4gICAgICAgIC5ib3hfaWQoKVxuICAgICAgICAudG9fc3RyKCl9XWBcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZXMgYSBNaW5pbXVtRmVlQm94QnVpbGRlciB1c2luZyBjdXJyZW50IGJveFxuICAgKiAgbm90ZSB0aGF0ICdoZWlnaHQnIHBhcmFtZXRlciBvZiBidWlsZGVyIHdvbid0IGJlIHNldFxuICAgKi9cbiAgdG9CdWlsZGVyID0gKCk6IE1pbmltdW1GZWVCb3hCdWlsZGVyID0+IHtcbiAgICBpZiAoIXRoaXMuYm94KSB0aHJvdyBFcnJvcihgQm94IGlzIG5vdCBmZXRjaGVkIHlldGApO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBNaW5pbXVtRmVlQm94QnVpbGRlcihcbiAgICAgIHRoaXMubWluaW11bUZlZU5GVCxcbiAgICAgIEFkZHJlc3MucmVjcmVhdGVfZnJvbV9lcmdvX3RyZWUodGhpcy5ib3guZXJnb190cmVlKCkpLnRvX2Jhc2U1OChcbiAgICAgICAgTmV0d29ya1ByZWZpeC5NYWlubmV0XG4gICAgICApXG4gICAgKVxuICAgICAgLnNldFZhbHVlKEJpZ0ludCh0aGlzLmJveC52YWx1ZSgpLmFzX2k2NCgpLnRvX3N0cigpKSlcbiAgICAgIC5zZXRUb2tlbih0aGlzLnRva2VuSWQpO1xuXG4gICAgdGhpcy5nZXRDb25maWdzKCkuZm9yRWFjaCgoZmVlKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEV4dHJhY3RlZCBmZWUgY29uZmlnIGZyb20gYm94IFske3RoaXMuYm94IS5ib3hfaWQoKS50b19zdHIoKX1dOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KFxuICAgICAgICAgIGZlZVxuICAgICAgICApfWBcbiAgICAgICk7XG4gICAgICBjb25zdCBjaGFpbkZlZSA9IG5ldyBNaW5pbXVtRmVlQ29uZmlnKCk7XG4gICAgICBPYmplY3Qua2V5cyhmZWUuaGVpZ2h0cykuZm9yRWFjaCgoY2hhaW4pID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24oZmVlLmNvbmZpZ3MsIGNoYWluKSlcbiAgICAgICAgICBjaGFpbkZlZS5zZXRDaGFpbkNvbmZpZyhcbiAgICAgICAgICAgIGNoYWluLFxuICAgICAgICAgICAgZmVlLmhlaWdodHNbY2hhaW5dLFxuICAgICAgICAgICAgZmVlLmNvbmZpZ3NbY2hhaW5dXG4gICAgICAgICAgKTtcbiAgICAgICAgZWxzZSBjaGFpbkZlZS5zZXRDaGFpbkNvbmZpZyhjaGFpbiwgZmVlLmhlaWdodHNbY2hhaW5dLCB1bmRlZmluZWQpO1xuICAgICAgfSk7XG4gICAgICBidWlsZGVyLmFkZENvbmZpZyhjaGFpbkZlZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH07XG59XG4iXX0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"MinimumFeeBoxBuilder.d.ts","sourceRoot":"","sources":["../../lib/MinimumFeeBoxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAMR,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAK9B,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMlD;;;OAGG;IACH,SAAS,cAAe,gBAAgB,KAAG,oBAAoB,CAG7D;IAEF;;;OAGG;IACH,YAAY,UAAW,MAAM,KAAG,oBAAoB,CAGlD;IAEF;;OAEG;IACH,UAAU,QAAO,MAAM,GAAG,CAAC,CAEzB;IAEF;;;;OAIG;IACH,QAAQ,YAAa,MAAM,KAAG,oBAAoB,CAGhD;IAEF;;;OAGG;IACH,SAAS,kBAAmB,MAAM,KAAG,oBAAoB,CAGvD;IAEF;;;OAGG;IACH,QAAQ,YAAa,MAAM,KAAG,oBAAoB,CAGhD;IAEF;;OAEG;IACH,SAAS,CAAC,QAAQ,QAAO,IAAI,CA6B3B;IAEF;;OAEG;IACH,KAAK,QAAO,oBAAoB,CA8B9B;IAEF;;OAEG;IACH,KAAK,QAAO,gBAAgB,CAiC1B;CACH"}