@bitgo-beta/sdk-coin-rune 1.0.0-beta.100 → 1.0.0-beta.1000

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 (38) hide show
  1. package/dist/src/lib/constants.d.ts +4 -3
  2. package/dist/src/lib/constants.d.ts.map +1 -1
  3. package/dist/src/lib/constants.js +8 -5
  4. package/dist/src/lib/utils.d.ts +1 -1
  5. package/dist/src/lib/utils.d.ts.map +1 -1
  6. package/dist/src/lib/utils.js +2 -4
  7. package/dist/src/rune.d.ts +11 -1
  8. package/dist/src/rune.d.ts.map +1 -1
  9. package/dist/src/rune.js +90 -2
  10. package/dist/test/resources/rune.d.ts +74 -0
  11. package/dist/test/resources/rune.d.ts.map +1 -0
  12. package/dist/test/resources/rune.js +51 -0
  13. package/dist/test/resources/trune.d.ts +110 -0
  14. package/dist/test/resources/trune.d.ts.map +1 -0
  15. package/dist/test/resources/trune.js +102 -0
  16. package/dist/test/unit/keyPair.d.ts +2 -0
  17. package/dist/test/unit/keyPair.d.ts.map +1 -0
  18. package/dist/test/unit/keyPair.js +94 -0
  19. package/dist/test/unit/rune.d.ts +2 -0
  20. package/dist/test/unit/rune.d.ts.map +1 -0
  21. package/dist/test/unit/rune.js +369 -0
  22. package/dist/test/unit/transaction.d.ts +2 -0
  23. package/dist/test/unit/transaction.d.ts.map +1 -0
  24. package/dist/test/unit/transaction.js +146 -0
  25. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  26. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  27. package/dist/test/unit/transactionBuilder/transactionBuilder.js +97 -0
  28. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  29. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  30. package/dist/test/unit/transactionBuilder/transferBuilder.js +202 -0
  31. package/dist/test/unit/utils.d.ts +2 -0
  32. package/dist/test/unit/utils.d.ts.map +1 -0
  33. package/dist/test/unit/utils.js +101 -0
  34. package/dist/tsconfig.tsbuildinfo +1 -0
  35. package/package.json +12 -9
  36. package/.eslintignore +0 -5
  37. package/.mocharc.yml +0 -8
  38. package/CHANGELOG.md +0 -72
@@ -1,11 +1,12 @@
1
- export declare const mainnetValidDenoms: string[];
1
+ export declare const validDenoms: string[];
2
2
  export declare const mainnetAccountAddressRegex: RegExp;
3
3
  export declare const mainnetValidatorAddressRegex: RegExp;
4
4
  export declare const MAINNET_ADDRESS_PREFIX = "thor";
5
- export declare const testnetValidDenoms: string[];
6
5
  export declare const testnetAccountAddressRegex: RegExp;
7
6
  export declare const testnetValidatorAddressRegex: RegExp;
8
7
  export declare const TESTNET_ADDRESS_PREFIX = "sthor";
9
8
  export declare const GAS_LIMIT = 200000;
10
- export declare const GAS_AMOUNT = "150000";
9
+ export declare const GAS_AMOUNT = "0";
10
+ export declare const RUNE_FEES = "2000000";
11
+ export declare const ROOT_PATH = "m/0";
11
12
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,UAAW,CAAC;AAC3C,eAAO,MAAM,0BAA0B,QAAuD,CAAC;AAC/F,eAAO,MAAM,4BAA4B,QAAuD,CAAC;AACjG,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAE7C,eAAO,MAAM,kBAAkB,UAAW,CAAC;AAC3C,eAAO,MAAM,0BAA0B,QAAwD,CAAC;AAChG,eAAO,MAAM,4BAA4B,QAAwD,CAAC;AAClG,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,UAAU,WAAW,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,UAAiE,CAAC;AAC1F,eAAO,MAAM,0BAA0B,QAAuD,CAAC;AAC/F,eAAO,MAAM,4BAA4B,QAAuD,CAAC;AACjG,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAE7C,eAAO,MAAM,0BAA0B,QAAwD,CAAC;AAChG,eAAO,MAAM,4BAA4B,QAAwD,CAAC;AAClG,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,SAAS,YAAY,CAAC;AACnC,eAAO,MAAM,SAAS,QAAQ,CAAC"}
@@ -1,14 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GAS_AMOUNT = exports.GAS_LIMIT = exports.TESTNET_ADDRESS_PREFIX = exports.testnetValidatorAddressRegex = exports.testnetAccountAddressRegex = exports.testnetValidDenoms = exports.MAINNET_ADDRESS_PREFIX = exports.mainnetValidatorAddressRegex = exports.mainnetAccountAddressRegex = exports.mainnetValidDenoms = void 0;
4
- exports.mainnetValidDenoms = ['rune'];
3
+ exports.ROOT_PATH = exports.RUNE_FEES = exports.GAS_AMOUNT = exports.GAS_LIMIT = exports.TESTNET_ADDRESS_PREFIX = exports.testnetValidatorAddressRegex = exports.testnetAccountAddressRegex = exports.MAINNET_ADDRESS_PREFIX = exports.mainnetValidatorAddressRegex = exports.mainnetAccountAddressRegex = exports.validDenoms = void 0;
4
+ const abstract_cosmos_1 = require("@bitgo-beta/abstract-cosmos");
5
+ const cosmosUtils = new abstract_cosmos_1.CosmosUtils();
6
+ exports.validDenoms = ['rune', ...cosmosUtils.getTokenDenomsUsingCoinFamily('thor')];
5
7
  exports.mainnetAccountAddressRegex = /^(thor)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$/;
6
8
  exports.mainnetValidatorAddressRegex = /^(thor)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$/;
7
9
  exports.MAINNET_ADDRESS_PREFIX = 'thor';
8
- exports.testnetValidDenoms = ['rune'];
9
10
  exports.testnetAccountAddressRegex = /^(sthor)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$/;
10
11
  exports.testnetValidatorAddressRegex = /^(sthor)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$/;
11
12
  exports.TESTNET_ADDRESS_PREFIX = 'sthor';
12
13
  exports.GAS_LIMIT = 200000;
13
- exports.GAS_AMOUNT = '150000';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxrQkFBa0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLFFBQUEsMEJBQTBCLEdBQUcsb0RBQW9ELENBQUM7QUFDbEYsUUFBQSw0QkFBNEIsR0FBRyxvREFBb0QsQ0FBQztBQUNwRixRQUFBLHNCQUFzQixHQUFHLE1BQU0sQ0FBQztBQUVoQyxRQUFBLGtCQUFrQixHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsUUFBQSwwQkFBMEIsR0FBRyxxREFBcUQsQ0FBQztBQUNuRixRQUFBLDRCQUE0QixHQUFHLHFEQUFxRCxDQUFDO0FBQ3JGLFFBQUEsc0JBQXNCLEdBQUcsT0FBTyxDQUFDO0FBRWpDLFFBQUEsU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUNuQixRQUFBLFVBQVUsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgbWFpbm5ldFZhbGlkRGVub21zID0gWydydW5lJ107XG5leHBvcnQgY29uc3QgbWFpbm5ldEFjY291bnRBZGRyZXNzUmVnZXggPSAvXih0aG9yKTEoWydxcHpyeTl4OGdmMnR2ZHcwczNqbjU0a2hjZTZtdWE3bF17Mzh9KSQvO1xuZXhwb3J0IGNvbnN0IG1haW5uZXRWYWxpZGF0b3JBZGRyZXNzUmVnZXggPSAvXih0aG9yKTEoWydxcHpyeTl4OGdmMnR2ZHcwczNqbjU0a2hjZTZtdWE3bF17Mzh9KSQvO1xuZXhwb3J0IGNvbnN0IE1BSU5ORVRfQUREUkVTU19QUkVGSVggPSAndGhvcic7XG5cbmV4cG9ydCBjb25zdCB0ZXN0bmV0VmFsaWREZW5vbXMgPSBbJ3J1bmUnXTtcbmV4cG9ydCBjb25zdCB0ZXN0bmV0QWNjb3VudEFkZHJlc3NSZWdleCA9IC9eKHN0aG9yKTEoWydxcHpyeTl4OGdmMnR2ZHcwczNqbjU0a2hjZTZtdWE3bF17Mzh9KSQvO1xuZXhwb3J0IGNvbnN0IHRlc3RuZXRWYWxpZGF0b3JBZGRyZXNzUmVnZXggPSAvXihzdGhvcikxKFsncXB6cnk5eDhnZjJ0dmR3MHMzam41NGtoY2U2bXVhN2xdezM4fSkkLztcbmV4cG9ydCBjb25zdCBURVNUTkVUX0FERFJFU1NfUFJFRklYID0gJ3N0aG9yJztcblxuZXhwb3J0IGNvbnN0IEdBU19MSU1JVCA9IDIwMDAwMDtcbmV4cG9ydCBjb25zdCBHQVNfQU1PVU5UID0gJzE1MDAwMCc7XG4iXX0=
14
+ exports.GAS_AMOUNT = '0'; // Gas amount should be zero for RUNE transactions, as fees (0.02 RUNE) is cut from sender balance directly in the transaction
15
+ exports.RUNE_FEES = '2000000'; // https://dev.thorchain.org/concepts/fees.html#thorchain-native-rune
16
+ exports.ROOT_PATH = 'm/0';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUVBQTBEO0FBRTFELE1BQU0sV0FBVyxHQUFHLElBQUksNkJBQVcsRUFBRSxDQUFDO0FBQ3pCLFFBQUEsV0FBVyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLDZCQUE2QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDN0UsUUFBQSwwQkFBMEIsR0FBRyxvREFBb0QsQ0FBQztBQUNsRixRQUFBLDRCQUE0QixHQUFHLG9EQUFvRCxDQUFDO0FBQ3BGLFFBQUEsc0JBQXNCLEdBQUcsTUFBTSxDQUFDO0FBRWhDLFFBQUEsMEJBQTBCLEdBQUcscURBQXFELENBQUM7QUFDbkYsUUFBQSw0QkFBNEIsR0FBRyxxREFBcUQsQ0FBQztBQUNyRixRQUFBLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztBQUVqQyxRQUFBLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFDbkIsUUFBQSxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsOEhBQThIO0FBQ2hKLFFBQUEsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLHFFQUFxRTtBQUM1RixRQUFBLFNBQVMsR0FBRyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3Ntb3NVdGlscyB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWNvc21vcyc7XG5cbmNvbnN0IGNvc21vc1V0aWxzID0gbmV3IENvc21vc1V0aWxzKCk7XG5leHBvcnQgY29uc3QgdmFsaWREZW5vbXMgPSBbJ3J1bmUnLCAuLi5jb3Ntb3NVdGlscy5nZXRUb2tlbkRlbm9tc1VzaW5nQ29pbkZhbWlseSgndGhvcicpXTtcbmV4cG9ydCBjb25zdCBtYWlubmV0QWNjb3VudEFkZHJlc3NSZWdleCA9IC9eKHRob3IpMShbJ3FwenJ5OXg4Z2YydHZkdzBzM2puNTRraGNlNm11YTdsXXszOH0pJC87XG5leHBvcnQgY29uc3QgbWFpbm5ldFZhbGlkYXRvckFkZHJlc3NSZWdleCA9IC9eKHRob3IpMShbJ3FwenJ5OXg4Z2YydHZkdzBzM2puNTRraGNlNm11YTdsXXszOH0pJC87XG5leHBvcnQgY29uc3QgTUFJTk5FVF9BRERSRVNTX1BSRUZJWCA9ICd0aG9yJztcblxuZXhwb3J0IGNvbnN0IHRlc3RuZXRBY2NvdW50QWRkcmVzc1JlZ2V4ID0gL14oc3Rob3IpMShbJ3FwenJ5OXg4Z2YydHZkdzBzM2puNTRraGNlNm11YTdsXXszOH0pJC87XG5leHBvcnQgY29uc3QgdGVzdG5ldFZhbGlkYXRvckFkZHJlc3NSZWdleCA9IC9eKHN0aG9yKTEoWydxcHpyeTl4OGdmMnR2ZHcwczNqbjU0a2hjZTZtdWE3bF17Mzh9KSQvO1xuZXhwb3J0IGNvbnN0IFRFU1RORVRfQUREUkVTU19QUkVGSVggPSAnc3Rob3InO1xuXG5leHBvcnQgY29uc3QgR0FTX0xJTUlUID0gMjAwMDAwO1xuZXhwb3J0IGNvbnN0IEdBU19BTU9VTlQgPSAnMCc7IC8vIEdhcyBhbW91bnQgc2hvdWxkIGJlIHplcm8gZm9yIFJVTkUgdHJhbnNhY3Rpb25zLCBhcyBmZWVzICgwLjAyIFJVTkUpIGlzIGN1dCBmcm9tIHNlbmRlciBiYWxhbmNlIGRpcmVjdGx5IGluIHRoZSB0cmFuc2FjdGlvblxuZXhwb3J0IGNvbnN0IFJVTkVfRkVFUyA9ICcyMDAwMDAwJzsgLy8gaHR0cHM6Ly9kZXYudGhvcmNoYWluLm9yZy9jb25jZXB0cy9mZWVzLmh0bWwjdGhvcmNoYWluLW5hdGl2ZS1ydW5lXG5leHBvcnQgY29uc3QgUk9PVF9QQVRIID0gJ20vMCc7XG4iXX0=
@@ -61,7 +61,7 @@ export declare class RuneUtils extends CosmosUtils {
61
61
  validateDenomination(amountDenom: string): void;
62
62
  convertMessageAddressToUint8Array(messages: MessageData[]): MessageData[];
63
63
  createTransaction(sequence: number, messages: MessageData[], gasBudget: FeeData, publicKey?: string, memo?: string): CosmosLikeTransaction;
64
- getNetworkPrefix(): "sthor" | "thor";
64
+ getNetworkPrefix(): "thor" | "sthor";
65
65
  }
66
66
  declare const runeUtils: RuneUtils;
67
67
  export default runeUtils;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,qBAAa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,WAAW,CAAc;gBACrB,WAAW,GAAE,WAAiC;IAK1D,+BAA+B,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,EAAE;IAcvE,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO;IAarD;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM;IAU9C;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQ9C,kBAAkB;IAClB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOjD,kBAAkB;IAClB,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAQlC;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAO3C;;;OAGG;IACH,qBAAqB,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI;IAMhD,iBAAiB,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAQrC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAU/C,iCAAiC,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IA0BzE,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,qBAAqB;IAaxB,gBAAgB;CAGjB;AAED,QAAA,MAAM,SAAS,WAAkB,CAAC;AAElC,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,qBAAa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,WAAW,CAAc;gBACrB,WAAW,GAAE,WAAiC;IAK1D,+BAA+B,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,EAAE;IAcvE,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO;IAarD;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM;IAU9C;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQ9C,kBAAkB;IAClB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOjD,kBAAkB;IAClB,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAQlC;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAO3C;;;OAGG;IACH,qBAAqB,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI;IAMhD,iBAAiB,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAQrC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAM/C,iCAAiC,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IA0BzE,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,qBAAqB;IAaxB,gBAAgB;CAGjB;AAED,QAAA,MAAM,SAAS,WAAkB,CAAC;AAElC,eAAe,SAAS,CAAC"}
@@ -175,9 +175,7 @@ class RuneUtils extends abstract_cosmos_1.CosmosUtils {
175
175
  this.validateDenomination(amount.denom);
176
176
  }
177
177
  validateDenomination(amountDenom) {
178
- if ((this.networkType === statics_1.NetworkType.TESTNET &&
179
- !constants.testnetValidDenoms.find((denom) => denom === amountDenom)) ||
180
- (this.networkType === statics_1.NetworkType.MAINNET && !constants.mainnetValidDenoms.find((denom) => denom === amountDenom))) {
178
+ if (!constants.validDenoms.find((denom) => denom === amountDenom)) {
181
179
  throw new sdk_core_1.InvalidTransactionError('transactionBuilder: validateAmount: Invalid denom: ' + amountDenom);
182
180
  }
183
181
  }
@@ -220,4 +218,4 @@ class RuneUtils extends abstract_cosmos_1.CosmosUtils {
220
218
  exports.RuneUtils = RuneUtils;
221
219
  const runeUtils = new RuneUtils();
222
220
  exports.default = runeUtils;
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUErRDtBQUUvRCxnRUFBcUM7QUFFckMsaUVBQTBGO0FBRTFGLHVEQUF5QztBQUN6QyxpREFBa0Q7QUFFbEQsMkNBQTZFO0FBQzdFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUV4QyxNQUFhLFNBQVUsU0FBUSw2QkFBVztJQUV4QyxZQUFZLGNBQTJCLHFCQUFXLENBQUMsT0FBTztRQUN4RCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxTQUF1QjtRQUNyRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVDLE9BQU87Z0JBQ0wsS0FBSyxFQUFFO29CQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztvQkFDdEQsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO29CQUNsRCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07aUJBQ3JCO2dCQUNELE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTzthQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxPQUE0QjtRQUN6QyxJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLElBQUksRUFBRSxD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QUFTO3FCQUNyQjtpQkFDRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUNmLFFBQWdCLEVBQ2hCLFFBQXVCLEVBQ3ZCLFNBQWtCLEVBQ2xCLFNBQWtCLEVBQ2xCLElBQWE7UUFFYixRQUFRLEdBQUcsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVELE1BQU0sYUFBYSxHQUFHO1lBQ3BCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFlBQVksRUFBRSxRQUFRO1lBQ3RCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4QyxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLHFCQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQ0FBc0IsQ0FBQyxDQUFDLENBQUMsa0NBQXNCLENBQUM7SUFDcEcsQ0FBQztDQUNGO0FBdk1ELDhCQXVNQztBQUVELE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7QUFFbEMsa0JBQWUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDb2luIH0gZnJvbSAnQGNvc21qcy9zdGFyZ2F0ZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5cbmltcG9ydCB7IENvc21vc0xpa2VUcmFuc2FjdGlvbiwgQ29zbW9zVXRpbHMsIEZlZURhdGEgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1jb3Ntb3MnO1xuaW1wb3J0IHsgTWVzc2FnZURhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBOZXR3b3JrVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgRGVjb2RlZFR4UmF3IH0gZnJvbSAnQGNvc21qcy9wcm90by1zaWduaW5nJztcbmltcG9ydCB7IE1BSU5ORVRfQUREUkVTU19QUkVGSVgsIFRFU1RORVRfQUREUkVTU19QUkVGSVggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5jb25zdCBiZWNoMzIgPSByZXF1aXJlKCdiZWNoMzItYnVmZmVyJyk7XG5cbmV4cG9ydCBjbGFzcyBSdW5lVXRpbHMgZXh0ZW5kcyBDb3Ntb3NVdGlscyB7XG4gIHByaXZhdGUgbmV0d29ya1R5cGU6IE5ldHdvcmtUeXBlO1xuICBjb25zdHJ1Y3RvcihuZXR3b3JrVHlwZTogTmV0d29ya1R5cGUgPSBOZXR3b3JrVHlwZS5NQUlOTkVUKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5ldHdvcmtUeXBlID0gbmV0d29ya1R5cGU7XG4gIH1cblxuICBnZXRTZW5kTWVzc2FnZURhdGFGcm9tRGVjb2RlZFR4KGRlY29kZWRUeDogRGVjb2RlZFR4UmF3KTogTWVzc2FnZURhdGFbXSB7XG4gICAgcmV0dXJuIGRlY29kZWRUeC5ib2R5Lm1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnJlZ2lzdHJ5LmRlY29kZShtZXNzYWdlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgZnJvbUFkZHJlc3M6IHRoaXMuZ2V0RW5jb2RlZEFkZHJlc3ModmFsdWUuZnJvbUFkZHJlc3MpLFxuICAgICAgICAgIHRvQWRkcmVzczogdGhpcy5nZXRFbmNvZGVkQWRkcmVzcyh2YWx1ZS50b0FkZHJlc3MpLFxuICAgICAgICAgIGFtb3VudDogdmFsdWUuYW1vdW50LFxuICAgICAgICB9LFxuICAgICAgICB0eXBlVXJsOiBtZXNzYWdlLnR5cGVVcmwsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICBpZiAoYWRkcmVzcyA9PT0gdW5kZWZpbmVkIHx8IGFkZHJlc3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGFkZHJlc3MgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkRGVjb2RlZEFkZHJlc3MoYWRkcmVzcyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYWRkcmVzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRFbmNvZGVkQWRkcmVzcyhhZGRyZXNzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIGRlY29kZWQgYWRkcmVzcyBpbiBgVWludDhBcnJheWAgZm9ybSBieSBlbmNvZGluZyBpdCBhbmRcbiAgICogY2hlY2tpbmcgaWYgdGhlIGVuY29kZWQgdmVyc2lvbiBpcyB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzcyAtIFRoZSBkZWNvZGVkIGFkZHJlc3MgYXMgYSBgVWludDhBcnJheWAuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW5jb2RlZCBhZGRyZXNzIGlzIHZhbGlkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHByaXZhdGUgaXNWYWxpZERlY29kZWRBZGRyZXNzKGFkZHJlc3M6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbmNvZGVkQWRkcmVzcyA9IHRoaXMuZ2V0RW5jb2RlZEFkZHJlc3MoYWRkcmVzcyk7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEVuY29kZWRBZGRyZXNzKGVuY29kZWRBZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW4gZW5jb2RlZCBhZGRyZXNzIHN0cmluZyBhZ2FpbnN0IG5ldHdvcmstc3BlY2lmaWMgY3JpdGVyaWEuXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzIC0gVGhlIGVuY29kZWQgYWRkcmVzcyBhcyBhIGBzdHJpbmdgLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFkZHJlc3MgbWVldHMgbmV0d29yay1zcGVjaWZpYyB2YWxpZGF0aW9uIGNyaXRlcmlhLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHByaXZhdGUgaXNWYWxpZEVuY29kZWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5ldHdvcmtUeXBlID09PSBOZXR3b3JrVHlwZS5URVNUTkVUKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQ29zbW9zTGlrZUFkZHJlc3NXaXRoTWVtb0lkKGFkZHJlc3MsIGNvbnN0YW50cy50ZXN0bmV0QWNjb3VudEFkZHJlc3NSZWdleCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmlzVmFsaWRDb3Ntb3NMaWtlQWRkcmVzc1dpdGhNZW1vSWQoYWRkcmVzcywgY29uc3RhbnRzLm1haW5uZXRBY2NvdW50QWRkcmVzc1JlZ2V4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGVzIGEgZ2l2ZW4gYWRkcmVzcyBgVWludDhBcnJheWAgaW50byBhIGJlY2gzMiBzdHJpbmcgZm9ybWF0LCBiYXNlZCBvbiB0aGUgY3VycmVudCBuZXR3b3JrIHR5cGUuXG4gICAqIFByaW1hcmlseSBzZXJ2ZXMgYXMgYSB1dGlsaXR5IHRvIGNvbnZlcnQgYSBgVWludDhBcnJheWAtdHlwZSBhZGRyZXNzIHRvIGEgYmVjaDMyIGVuY29kZWQgc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzIC0gVGhlIGFkZHJlc3MgdG8gYmUgZW5jb2RlZCwgcHJvdmlkZWQgYXMgYSBgVWludDhBcnJheWAuXG4gICAqIEByZXR1cm5zIEEgYmVjaDMyLWVuY29kZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgYWRkcmVzcy5cbiAgICogQHRocm93cyBFcnJvciAtIFRocm93cyBhbiBlcnJvciBpZiBlbmNvZGluZyBmYWlsc1xuICAgKi9cbiAgZ2V0RW5jb2RlZEFkZHJlc3MoYWRkcmVzczogVWludDhBcnJheSk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLm5ldHdvcmtUeXBlID09PSBOZXR3b3JrVHlwZS5URVNUTkVUXG4gICAgICAgID8gYmVjaDMyLmVuY29kZShURVNUTkVUX0FERFJFU1NfUFJFRklYLCBhZGRyZXNzKVxuICAgICAgICA6IGJlY2gzMi5lbmNvZGUoTUFJTk5FVF9BRERSRVNTX1BSRUZJWCwgYWRkcmVzcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGVuY29kZSBhZGRyZXNzOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBhIGJlY2gzMi1lbmNvZGVkIGFkZHJlc3Mgc3RyaW5nIGJhY2sgaW50byBhIGBVaW50OEFycmF5YC5cbiAgICogUHJpbWFyaWx5IHNlcnZlcyBhcyBhIHV0aWxpdHkgdG8gY29udmVydCBhIHN0cmluZy10eXBlIGFkZHJlc3MgaW50byBpdHMgYmluYXJ5IHJlcHJlc2VudGF0aW9uLFxuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzcyAtIFRoZSBiZWNoMzItZW5jb2RlZCBhZGRyZXNzIGFzIGEgYHN0cmluZ2AuXG4gICAqIEByZXR1cm5zIFRoZSBkZWNvZGVkIGFkZHJlc3MgYXMgYSBgVWludDhBcnJheWAuXG4gICAqIEB0aHJvd3MgRXJyb3IgLSBUaHJvd3MgYW4gZXJyb3IgaWYgZGVjb2RpbmcgZmFpbHNcbiAgICovXG4gIGdldERlY29kZWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYmVjaDMyLmRlY29kZShhZGRyZXNzKS5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgYWRkcmVzczogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRWYWxpZGF0b3JBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5ldHdvcmtUeXBlID09PSBOZXR3b3JrVHlwZS5URVNUTkVUKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQmVjaDMyQWRkcmVzc01hdGNoaW5nUmVnZXgoYWRkcmVzcywgY29uc3RhbnRzLnRlc3RuZXRWYWxpZGF0b3JBZGRyZXNzUmVnZXgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkQmVjaDMyQWRkcmVzc01hdGNoaW5nUmVnZXgoYWRkcmVzcywgY29uc3RhbnRzLm1haW5uZXRWYWxpZGF0b3JBZGRyZXNzUmVnZXgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQW1vdW50KGFtb3VudDogQ29pbik6IHZvaWQge1xuICAgIGNvbnN0IGFtb3VudEJpZyA9IEJpZ051bWJlcihhbW91bnQuYW1vdW50KTtcbiAgICBpZiAoYW1vdW50QmlnLmlzTmFOKCkgfHwgYW1vdW50QmlnLmlzTGVzc1RoYW5PckVxdWFsVG8oMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcigndHJhbnNhY3Rpb25CdWlsZGVyOiB2YWxpZGF0ZUFtb3VudDogSW52YWxpZCBhbW91bnQ6ICcgKyBhbW91bnQuYW1vdW50KTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZURlbm9taW5hdGlvbihhbW91bnQuZGVub20pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZ2FzIGxpbWl0IGFuZCBnYXMgYW1vdW50IGZvciBhIHRyYW5zYWN0aW9uLlxuICAgKiBAcGFyYW0ge0ZlZURhdGF9IGdhc0J1ZGdldCAtIFRoZSBnYXMgYnVkZ2V0IHRvIHZhbGlkYXRlLlxuICAgKiBAdGhyb3dzIHtJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcn0gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBnYXMgYnVkZ2V0IGlzIGludmFsaWQuXG4gICAqL1xuICB2YWxpZGF0ZUdhc0J1ZGdldChnYXNCdWRnZXQ6IEZlZURhdGEpOiB2b2lkIHtcbiAgICBpZiAoZ2FzQnVkZ2V0Lmdhc0xpbWl0IDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBnYXMgbGltaXQgJyArIGdhc0J1ZGdldC5nYXNMaW1pdCk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVHYXNBbW91bnREYXRhKGdhc0J1ZGdldC5hbW91bnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbiBhcnJheSBvZiBjb2luIGFtb3VudHMuXG4gICAqIEBwYXJhbSB7Q29pbltdfSBhbW91bnRBcnJheSAtIFRoZSBhcnJheSBvZiBjb2luIGFtb3VudHMgdG8gdmFsaWRhdGUuXG4gICAqL1xuICB2YWxpZGF0ZUdhc0Ftb3VudERhdGEoYW1vdW50QXJyYXk6IENvaW5bXSk6IHZvaWQge1xuICAgIGFtb3VudEFycmF5LmZvckVhY2goKGNvaW5BbW91bnQpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVHYXNBbW91bnQoY29pbkFtb3VudCk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZUdhc0Ftb3VudChhbW91bnQ6IENvaW4pOiB2b2lkIHtcbiAgICBjb25zdCBhbW91bnRCaWcgPSBCaWdOdW1iZXIoYW1vdW50LmFtb3VudCk7XG4gICAgaWYgKGFtb3VudEJpZy5pc05hTigpIHx8IGFtb3VudEJpZy5pc0xlc3NUaGFuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uQnVpbGRlcjogdmFsaWRhdGVBbW91bnQ6IEludmFsaWQgYW1vdW50OiAnICsgYW1vdW50LmFtb3VudCk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVEZW5vbWluYXRpb24oYW1vdW50LmRlbm9tKTtcbiAgfVxuXG4gIHZhbGlkYXRlRGVub21pbmF0aW9uKGFtb3VudERlbm9tOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAodGhpcy5uZXR3b3JrVHlwZSA9PT0gTmV0d29ya1R5cGUuVEVTVE5FVCAmJlxuICAgICAgICAhY29uc3RhbnRzLnRlc3RuZXRWYWxpZERlbm9tcy5maW5kKChkZW5vbSkgPT4gZGVub20gPT09IGFtb3VudERlbm9tKSkgfHxcbiAgICAgICh0aGlzLm5ldHdvcmtUeXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUICYmICFjb25zdGFudHMubWFpbm5ldFZhbGlkRGVub21zLmZpbmQoKGRlbm9tKSA9PiBkZW5vbSA9PT0gYW1vdW50RGVub20pKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbkJ1aWxkZXI6IHZhbGlkYXRlQW1vdW50OiBJbnZhbGlkIGRlbm9tOiAnICsgYW1vdW50RGVub20pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnRNZXNzYWdlQWRkcmVzc1RvVWludDhBcnJheShtZXNzYWdlczogTWVzc2FnZURhdGFbXSk6IE1lc3NhZ2VEYXRhW10ge1xuICAgIHJldHVybiBtZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAgIGlmICgnZnJvbUFkZHJlc3MnIGluIG1lc3NhZ2UudmFsdWUgJiYgJ3RvQWRkcmVzcycgaW4gbWVzc2FnZS52YWx1ZSkge1xuICAgICAgICBjb25zdCBzZW5kTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWU7XG5cbiAgICAgICAgY29uc3QgZGVjb2RlZEZyb20gPVxuICAgICAgICAgIHR5cGVvZiBzZW5kTWVzc2FnZS5mcm9tQWRkcmVzcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gYmVjaDMyLmRlY29kZShzZW5kTWVzc2FnZS5mcm9tQWRkcmVzcykuZGF0YVxuICAgICAgICAgICAgOiBzZW5kTWVzc2FnZS5mcm9tQWRkcmVzcztcbiAgICAgICAgY29uc3QgZGVjb2RlZFRvID1cbiAgICAgICAgICB0eXBlb2Ygc2VuZE1lc3NhZ2UudG9BZGRyZXNzID09PSAnc3RyaW5nJyA/IGJlY2gzMi5kZWNvZGUoc2VuZE1lc3NhZ2UudG9BZGRyZXNzKS5kYXRhIDogc2VuZE1lc3NhZ2UudG9BZGRyZXNzO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ubWVzc2FnZSxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgLi4uc2VuZE1lc3NhZ2UsXG4gICAgICAgICAgICBmcm9tQWRkcmVzczogZGVjb2RlZEZyb20sXG4gICAgICAgICAgICB0b0FkZHJlc3M6IGRlY29kZWRUbyxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZVRyYW5zYWN0aW9uKFxuICAgIHNlcXVlbmNlOiBudW1iZXIsXG4gICAgbWVzc2FnZXM6IE1lc3NhZ2VEYXRhW10sXG4gICAgZ2FzQnVkZ2V0OiBGZWVEYXRhLFxuICAgIHB1YmxpY0tleT86IHN0cmluZyxcbiAgICBtZW1vPzogc3RyaW5nXG4gICk6IENvc21vc0xpa2VUcmFuc2FjdGlvbiB7XG4gICAgbWVzc2FnZXMgPSB0aGlzLmNvbnZlcnRNZXNzYWdlQWRkcmVzc1RvVWludDhBcnJheShtZXNzYWdlcyk7XG4gICAgY29uc3QgY29zbW9zTGlrZVR4biA9IHtcbiAgICAgIHNlcXVlbmNlOiBzZXF1ZW5jZSxcbiAgICAgIHNlbmRNZXNzYWdlczogbWVzc2FnZXMsXG4gICAgICBnYXNCdWRnZXQ6IGdhc0J1ZGdldCxcbiAgICAgIHB1YmxpY0tleTogcHVibGljS2V5LFxuICAgICAgbWVtbzogbWVtbyxcbiAgICB9O1xuICAgIHRoaXMudmFsaWRhdGVUcmFuc2FjdGlvbihjb3Ntb3NMaWtlVHhuKTtcbiAgICByZXR1cm4gY29zbW9zTGlrZVR4bjtcbiAgfVxuXG4gIGdldE5ldHdvcmtQcmVmaXgoKSB7XG4gICAgcmV0dXJuIHRoaXMubmV0d29ya1R5cGUgPT09IE5ldHdvcmtUeXBlLlRFU1RORVQgPyBURVNUTkVUX0FERFJFU1NfUFJFRklYIDogTUFJTk5FVF9BRERSRVNTX1BSRUZJWDtcbiAgfVxufVxuXG5jb25zdCBydW5lVXRpbHMgPSBuZXcgUnVuZVV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHJ1bmVVdGlscztcbiJdfQ==
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUErRDtBQUUvRCxnRUFBcUM7QUFFckMsaUVBQTBGO0FBRTFGLHVEQUF5QztBQUN6QyxpREFBa0Q7QUFFbEQsMkNBQTZFO0FBQzdFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUV4QyxNQUFhLFNBQVUsU0FBUSw2QkFBVztJQUV4QyxZQUFZLGNBQTJCLHFCQUFXLENBQUMsT0FBTztRQUN4RCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxTQUF1QjtRQUNyRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVDLE9BQU87Z0JBQ0wsS0FBSyxFQUFFO29CQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztvQkFDdEQsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO29CQUNsRCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07aUJBQ3JCO2dCQUNELE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTzthQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxPQUE0QjtRQUN6QyxJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLElBQUksRUFBRSxD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USxDQUFDLENBQUM7UUFDNUQsTUFBTSxhQUFhLEdBQUc7WUFDcEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsWUFBWSxFQUFFLFFBQVE7WUFDdEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUsscUJBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtDQUFzQixDQUFDLENBQUMsQ0FBQyxrQ0FBc0IsQ0FBQztJQUNwRyxDQUFDO0NBQ0Y7QUFuTUQsOEJBbU1DO0FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUVsQyxrQkFBZSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvaW4gfSBmcm9tICdAY29zbWpzL3N0YXJnYXRlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuaW1wb3J0IHsgQ29zbW9zTGlrZVRyYW5zYWN0aW9uLCBDb3Ntb3NVdGlscywgRmVlRGF0YSB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWNvc21vcyc7XG5pbXBvcnQgeyBNZXNzYWdlRGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE5ldHdvcmtUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBEZWNvZGVkVHhSYXcgfSBmcm9tICdAY29zbWpzL3Byb3RvLXNpZ25pbmcnO1xuaW1wb3J0IHsgTUFJTk5FVF9BRERSRVNTX1BSRUZJWCwgVEVTVE5FVF9BRERSRVNTX1BSRUZJWCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmNvbnN0IGJlY2gzMiA9IHJlcXVpcmUoJ2JlY2gzMi1idWZmZXInKTtcblxuZXhwb3J0IGNsYXNzIFJ1bmVVdGlscyBleHRlbmRzIENvc21vc1V0aWxzIHtcbiAgcHJpdmF0ZSBuZXR3b3JrVHlwZTogTmV0d29ya1R5cGU7XG4gIGNvbnN0cnVjdG9yKG5ldHdvcmtUeXBlOiBOZXR3b3JrVHlwZSA9IE5ldHdvcmtUeXBlLk1BSU5ORVQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmV0d29ya1R5cGUgPSBuZXR3b3JrVHlwZTtcbiAgfVxuXG4gIGdldFNlbmRNZXNzYWdlRGF0YUZyb21EZWNvZGVkVHgoZGVjb2RlZFR4OiBEZWNvZGVkVHhSYXcpOiBNZXNzYWdlRGF0YVtdIHtcbiAgICByZXR1cm4gZGVjb2RlZFR4LmJvZHkubWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVnaXN0cnkuZGVjb2RlKG1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBmcm9tQWRkcmVzczogdGhpcy5nZXRFbmNvZGVkQWRkcmVzcyh2YWx1ZS5mcm9tQWRkcmVzcyksXG4gICAgICAgICAgdG9BZGRyZXNzOiB0aGlzLmdldEVuY29kZWRBZGRyZXNzKHZhbHVlLnRvQWRkcmVzcyksXG4gICAgICAgICAgYW1vdW50OiB2YWx1ZS5hbW91bnQsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVVcmw6IG1lc3NhZ2UudHlwZVVybCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nIHwgVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICAgIGlmIChhZGRyZXNzID09PSB1bmRlZmluZWQgfHwgYWRkcmVzcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYWRkcmVzcyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWREZWNvZGVkQWRkcmVzcyhhZGRyZXNzKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBhZGRyZXNzID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZEVuY29kZWRBZGRyZXNzKGFkZHJlc3MpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgZGVjb2RlZCBhZGRyZXNzIGluIGBVaW50OEFycmF5YCBmb3JtIGJ5IGVuY29kaW5nIGl0IGFuZFxuICAgKiBjaGVja2luZyBpZiB0aGUgZW5jb2RlZCB2ZXJzaW9uIGlzIHZhbGlkXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzIC0gVGhlIGRlY29kZWQgYWRkcmVzcyBhcyBhIGBVaW50OEFycmF5YC5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBlbmNvZGVkIGFkZHJlc3MgaXMgdmFsaWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHJpdmF0ZSBpc1ZhbGlkRGVjb2RlZEFkZHJlc3MoYWRkcmVzczogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVuY29kZWRBZGRyZXNzID0gdGhpcy5nZXRFbmNvZGVkQWRkcmVzcyhhZGRyZXNzKTtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkRW5jb2RlZEFkZHJlc3MoZW5jb2RlZEFkZHJlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbiBlbmNvZGVkIGFkZHJlc3Mgc3RyaW5nIGFnYWluc3QgbmV0d29yay1zcGVjaWZpYyBjcml0ZXJpYS5cbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3MgLSBUaGUgZW5jb2RlZCBhZGRyZXNzIGFzIGEgYHN0cmluZ2AuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBtZWV0cyBuZXR3b3JrLXNwZWNpZmljIHZhbGlkYXRpb24gY3JpdGVyaWEsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHJpdmF0ZSBpc1ZhbGlkRW5jb2RlZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubmV0d29ya1R5cGUgPT09IE5ldHdvcmtUeXBlLlRFU1RORVQpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRDb3Ntb3NMaWtlQWRkcmVzc1dpdGhNZW1vSWQoYWRkcmVzcywgY29uc3RhbnRzLnRlc3RuZXRBY2NvdW50QWRkcmVzc1JlZ2V4KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZENvc21vc0xpa2VBZGRyZXNzV2l0aE1lbW9JZChhZGRyZXNzLCBjb25zdGFudHMubWFpbm5ldEFjY291bnRBZGRyZXNzUmVnZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZXMgYSBnaXZlbiBhZGRyZXNzIGBVaW50OEFycmF5YCBpbnRvIGEgYmVjaDMyIHN0cmluZyBmb3JtYXQsIGJhc2VkIG9uIHRoZSBjdXJyZW50IG5ldHdvcmsgdHlwZS5cbiAgICogUHJpbWFyaWx5IHNlcnZlcyBhcyBhIHV0aWxpdHkgdG8gY29udmVydCBhIGBVaW50OEFycmF5YC10eXBlIGFkZHJlc3MgdG8gYSBiZWNoMzIgZW5jb2RlZCBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byBiZSBlbmNvZGVkLCBwcm92aWRlZCBhcyBhIGBVaW50OEFycmF5YC5cbiAgICogQHJldHVybnMgQSBiZWNoMzItZW5jb2RlZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhZGRyZXNzLlxuICAgKiBAdGhyb3dzIEVycm9yIC0gVGhyb3dzIGFuIGVycm9yIGlmIGVuY29kaW5nIGZhaWxzXG4gICAqL1xuICBnZXRFbmNvZGVkQWRkcmVzcyhhZGRyZXNzOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMubmV0d29ya1R5cGUgPT09IE5ldHdvcmtUeXBlLlRFU1RORVRcbiAgICAgICAgPyBiZWNoMzIuZW5jb2RlKFRFU1RORVRfQUREUkVTU19QUkVGSVgsIGFkZHJlc3MpXG4gICAgICAgIDogYmVjaDMyLmVuY29kZShNQUlOTkVUX0FERFJFU1NfUFJFRklYLCBhZGRyZXNzKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZW5jb2RlIGFkZHJlc3M6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGEgYmVjaDMyLWVuY29kZWQgYWRkcmVzcyBzdHJpbmcgYmFjayBpbnRvIGEgYFVpbnQ4QXJyYXlgLlxuICAgKiBQcmltYXJpbHkgc2VydmVzIGFzIGEgdXRpbGl0eSB0byBjb252ZXJ0IGEgc3RyaW5nLXR5cGUgYWRkcmVzcyBpbnRvIGl0cyBiaW5hcnkgcmVwcmVzZW50YXRpb24sXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzIC0gVGhlIGJlY2gzMi1lbmNvZGVkIGFkZHJlc3MgYXMgYSBgc3RyaW5nYC5cbiAgICogQHJldHVybnMgVGhlIGRlY29kZWQgYWRkcmVzcyBhcyBhIGBVaW50OEFycmF5YC5cbiAgICogQHRocm93cyBFcnJvciAtIFRocm93cyBhbiBlcnJvciBpZiBkZWNvZGluZyBmYWlsc1xuICAgKi9cbiAgZ2V0RGVjb2RlZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBiZWNoMzIuZGVjb2RlKGFkZHJlc3MpLmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlY29kZSBhZGRyZXNzOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFZhbGlkYXRvckFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubmV0d29ya1R5cGUgPT09IE5ldHdvcmtUeXBlLlRFU1RORVQpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRCZWNoMzJBZGRyZXNzTWF0Y2hpbmdSZWdleChhZGRyZXNzLCBjb25zdGFudHMudGVzdG5ldFZhbGlkYXRvckFkZHJlc3NSZWdleCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmlzVmFsaWRCZWNoMzJBZGRyZXNzTWF0Y2hpbmdSZWdleChhZGRyZXNzLCBjb25zdGFudHMubWFpbm5ldFZhbGlkYXRvckFkZHJlc3NSZWdleCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVBbW91bnQoYW1vdW50OiBDb2luKTogdm9pZCB7XG4gICAgY29uc3QgYW1vdW50QmlnID0gQmlnTnVtYmVyKGFtb3VudC5hbW91bnQpO1xuICAgIGlmIChhbW91bnRCaWcuaXNOYU4oKSB8fCBhbW91bnRCaWcuaXNMZXNzVGhhbk9yRXF1YWxUbygwKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbkJ1aWxkZXI6IHZhbGlkYXRlQW1vdW50OiBJbnZhbGlkIGFtb3VudDogJyArIGFtb3VudC5hbW91bnQpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlRGVub21pbmF0aW9uKGFtb3VudC5kZW5vbSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBnYXMgbGltaXQgYW5kIGdhcyBhbW91bnQgZm9yIGEgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB7RmVlRGF0YX0gZ2FzQnVkZ2V0IC0gVGhlIGdhcyBidWRnZXQgdG8gdmFsaWRhdGUuXG4gICAqIEB0aHJvd3Mge0ludmFsaWRUcmFuc2FjdGlvbkVycm9yfSBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIGdhcyBidWRnZXQgaXMgaW52YWxpZC5cbiAgICovXG4gIHZhbGlkYXRlR2FzQnVkZ2V0KGdhc0J1ZGdldDogRmVlRGF0YSk6IHZvaWQge1xuICAgIGlmIChnYXNCdWRnZXQuZ2FzTGltaXQgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGdhcyBsaW1pdCAnICsgZ2FzQnVkZ2V0Lmdhc0xpbWl0KTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZUdhc0Ftb3VudERhdGEoZ2FzQnVkZ2V0LmFtb3VudCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuIGFycmF5IG9mIGNvaW4gYW1vdW50cy5cbiAgICogQHBhcmFtIHtDb2luW119IGFtb3VudEFycmF5IC0gVGhlIGFycmF5IG9mIGNvaW4gYW1vdW50cyB0byB2YWxpZGF0ZS5cbiAgICovXG4gIHZhbGlkYXRlR2FzQW1vdW50RGF0YShhbW91bnRBcnJheTogQ29pbltdKTogdm9pZCB7XG4gICAgYW1vdW50QXJyYXkuZm9yRWFjaCgoY29pbkFtb3VudCkgPT4ge1xuICAgICAgdGhpcy52YWxpZGF0ZUdhc0Ftb3VudChjb2luQW1vdW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlR2FzQW1vdW50KGFtb3VudDogQ29pbik6IHZvaWQge1xuICAgIGNvbnN0IGFtb3VudEJpZyA9IEJpZ051bWJlcihhbW91bnQuYW1vdW50KTtcbiAgICBpZiAoYW1vdW50QmlnLmlzTmFOKCkgfHwgYW1vdW50QmlnLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcigndHJhbnNhY3Rpb25CdWlsZGVyOiB2YWxpZGF0ZUFtb3VudDogSW52YWxpZCBhbW91bnQ6ICcgKyBhbW91bnQuYW1vdW50KTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZURlbm9taW5hdGlvbihhbW91bnQuZGVub20pO1xuICB9XG5cbiAgdmFsaWRhdGVEZW5vbWluYXRpb24oYW1vdW50RGVub206IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghY29uc3RhbnRzLnZhbGlkRGVub21zLmZpbmQoKGRlbm9tKSA9PiBkZW5vbSA9PT0gYW1vdW50RGVub20pKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uQnVpbGRlcjogdmFsaWRhdGVBbW91bnQ6IEludmFsaWQgZGVub206ICcgKyBhbW91bnREZW5vbSk7XG4gICAgfVxuICB9XG5cbiAgY29udmVydE1lc3NhZ2VBZGRyZXNzVG9VaW50OEFycmF5KG1lc3NhZ2VzOiBNZXNzYWdlRGF0YVtdKTogTWVzc2FnZURhdGFbXSB7XG4gICAgcmV0dXJuIG1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xuICAgICAgaWYgKCdmcm9tQWRkcmVzcycgaW4gbWVzc2FnZS52YWx1ZSAmJiAndG9BZGRyZXNzJyBpbiBtZXNzYWdlLnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHNlbmRNZXNzYWdlID0gbWVzc2FnZS52YWx1ZTtcblxuICAgICAgICBjb25zdCBkZWNvZGVkRnJvbSA9XG4gICAgICAgICAgdHlwZW9mIHNlbmRNZXNzYWdlLmZyb21BZGRyZXNzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBiZWNoMzIuZGVjb2RlKHNlbmRNZXNzYWdlLmZyb21BZGRyZXNzKS5kYXRhXG4gICAgICAgICAgICA6IHNlbmRNZXNzYWdlLmZyb21BZGRyZXNzO1xuICAgICAgICBjb25zdCBkZWNvZGVkVG8gPVxuICAgICAgICAgIHR5cGVvZiBzZW5kTWVzc2FnZS50b0FkZHJlc3MgPT09ICdzdHJpbmcnID8gYmVjaDMyLmRlY29kZShzZW5kTWVzc2FnZS50b0FkZHJlc3MpLmRhdGEgOiBzZW5kTWVzc2FnZS50b0FkZHJlc3M7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5tZXNzYWdlLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAuLi5zZW5kTWVzc2FnZSxcbiAgICAgICAgICAgIGZyb21BZGRyZXNzOiBkZWNvZGVkRnJvbSxcbiAgICAgICAgICAgIHRvQWRkcmVzczogZGVjb2RlZFRvLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlVHJhbnNhY3Rpb24oXG4gICAgc2VxdWVuY2U6IG51bWJlcixcbiAgICBtZXNzYWdlczogTWVzc2FnZURhdGFbXSxcbiAgICBnYXNCdWRnZXQ6IEZlZURhdGEsXG4gICAgcHVibGljS2V5Pzogc3RyaW5nLFxuICAgIG1lbW8/OiBzdHJpbmdcbiAgKTogQ29zbW9zTGlrZVRyYW5zYWN0aW9uIHtcbiAgICBtZXNzYWdlcyA9IHRoaXMuY29udmVydE1lc3NhZ2VBZGRyZXNzVG9VaW50OEFycmF5KG1lc3NhZ2VzKTtcbiAgICBjb25zdCBjb3Ntb3NMaWtlVHhuID0ge1xuICAgICAgc2VxdWVuY2U6IHNlcXVlbmNlLFxuICAgICAgc2VuZE1lc3NhZ2VzOiBtZXNzYWdlcyxcbiAgICAgIGdhc0J1ZGdldDogZ2FzQnVkZ2V0LFxuICAgICAgcHVibGljS2V5OiBwdWJsaWNLZXksXG4gICAgICBtZW1vOiBtZW1vLFxuICAgIH07XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uKGNvc21vc0xpa2VUeG4pO1xuICAgIHJldHVybiBjb3Ntb3NMaWtlVHhuO1xuICB9XG5cbiAgZ2V0TmV0d29ya1ByZWZpeCgpIHtcbiAgICByZXR1cm4gdGhpcy5uZXR3b3JrVHlwZSA9PT0gTmV0d29ya1R5cGUuVEVTVE5FVCA/IFRFU1RORVRfQUREUkVTU19QUkVGSVggOiBNQUlOTkVUX0FERFJFU1NfUFJFRklYO1xuICB9XG59XG5cbmNvbnN0IHJ1bmVVdGlscyA9IG5ldyBSdW5lVXRpbHMoKTtcblxuZXhwb3J0IGRlZmF1bHQgcnVuZVV0aWxzO1xuIl19
@@ -1,4 +1,4 @@
1
- import { CosmosCoin, CosmosKeyPair, GasAmountDetails } from '@bitgo-beta/abstract-cosmos';
1
+ import { CosmosCoin, CosmosKeyPair, CosmosLikeCoinRecoveryOutput, GasAmountDetails, RecoveryOptions } from '@bitgo-beta/abstract-cosmos';
2
2
  import { BaseCoin, BitGoBase, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
3
3
  import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
4
4
  import { TransactionBuilderFactory } from './lib';
@@ -26,5 +26,15 @@ export declare class Rune extends CosmosCoin {
26
26
  /** @inheritDoc **/
27
27
  getAddressFromPublicKey(publicKey: string): string;
28
28
  verifyTransaction(params: VerifyTransactionOptions): Promise<boolean>;
29
+ getNativeRuneTxnFees(): string;
30
+ /**
31
+ * This function is overridden from CosmosCoin class' recover function due to the difference in fees handling in thorchain
32
+ * @param {RecoveryOptions} params parameters needed to construct and
33
+ * (maybe) sign the transaction
34
+ *
35
+ * @returns {CosmosLikeCoinRecoveryOutput} the serialized transaction hex string and index
36
+ * of the address being swept
37
+ */
38
+ recover(params: RecoveryOptions): Promise<CosmosLikeCoinRecoveryOutput>;
29
39
  }
30
40
  //# sourceMappingURL=rune.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rune.d.ts","sourceRoot":"","sources":["../../src/rune.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAiC,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAW,yBAAyB,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,qBAAa,IAAK,SAAQ,UAAU;IAClC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAS/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,mBAAmB;IACnB,UAAU,IAAI,yBAAyB;IAIvC;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,mBAAmB;IACnB,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,mBAAmB;IACnB,eAAe,IAAI,MAAM;IAIzB,mBAAmB;IACnB,mBAAmB,IAAI,gBAAgB;IAOvC,mBAAmB;IACnB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;IAI5C,mBAAmB;IACnB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI5C,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;CAsC5E"}
1
+ {"version":3,"file":"rune.d.ts","sourceRoot":"","sources":["../../src/rune.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,aAAa,EACb,4BAA4B,EAG5B,gBAAgB,EAChB,eAAe,EAEhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,QAAQ,EACR,SAAS,EAKT,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAW,yBAAyB,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOxC,qBAAa,IAAK,SAAQ,UAAU;IAClC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAS/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,mBAAmB;IACnB,UAAU,IAAI,yBAAyB;IAIvC;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,mBAAmB;IACnB,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,mBAAmB;IACnB,eAAe,IAAI,MAAM;IAIzB,mBAAmB;IACnB,mBAAmB,IAAI,gBAAgB;IAOvC,mBAAmB;IACnB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;IAI5C,mBAAmB;IACnB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI5C,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IA0C3E,oBAAoB,IAAI,MAAM;IAI9B;;;;;;;OAOG;IACG,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,4BAA4B,CAAC;CA2F9E"}
package/dist/src/rune.js CHANGED
@@ -43,6 +43,7 @@ const utils_1 = require("./lib/utils");
43
43
  const bignumber_js_1 = require("bignumber.js");
44
44
  const bech32 = require('bech32-buffer');
45
45
  const _ = __importStar(require("lodash"));
46
+ const crypto_1 = require("crypto");
46
47
  class Rune extends abstract_cosmos_1.CosmosCoin {
47
48
  constructor(bitgo, staticsCoin) {
48
49
  super(bitgo, staticsCoin);
@@ -101,7 +102,10 @@ class Rune extends abstract_cosmos_1.CosmosCoin {
101
102
  const transaction = await this.getBuilder().from(rawTx).build();
102
103
  const explainedTx = transaction.explainTransaction();
103
104
  if (txParams.recipients && txParams.recipients.length > 0) {
104
- const filteredRecipients = txParams.recipients?.map((recipient) => _.pick(recipient, ['address', 'amount']));
105
+ const filteredRecipients = txParams.recipients.map((recipient) => ({
106
+ address: this.getAddressDetails(recipient.address).address,
107
+ amount: recipient.amount,
108
+ }));
105
109
  let filteredOutputs = explainedTx.outputs.map((output) => _.pick(output, ['address', 'amount']));
106
110
  filteredOutputs = filteredOutputs.map((output) => {
107
111
  const prefix = this._utils.getNetworkPrefix();
@@ -126,6 +130,90 @@ class Rune extends abstract_cosmos_1.CosmosCoin {
126
130
  }
127
131
  return true;
128
132
  }
133
+ getNativeRuneTxnFees() {
134
+ return constants_1.RUNE_FEES;
135
+ }
136
+ /**
137
+ * This function is overridden from CosmosCoin class' recover function due to the difference in fees handling in thorchain
138
+ * @param {RecoveryOptions} params parameters needed to construct and
139
+ * (maybe) sign the transaction
140
+ *
141
+ * @returns {CosmosLikeCoinRecoveryOutput} the serialized transaction hex string and index
142
+ * of the address being swept
143
+ */
144
+ async recover(params) {
145
+ // Step 1: Check if params contains the required parameters
146
+ if (!params.recoveryDestination || !this.isValidAddress(params.recoveryDestination)) {
147
+ throw new Error('invalid recoveryDestination');
148
+ }
149
+ if (!params.userKey) {
150
+ throw new Error('missing userKey');
151
+ }
152
+ if (!params.backupKey) {
153
+ throw new Error('missing backupKey');
154
+ }
155
+ if (!params.walletPassphrase) {
156
+ throw new Error('missing wallet passphrase');
157
+ }
158
+ // Step 2: Fetch the bitgo key from params
159
+ const userKey = params.userKey.replace(/\s/g, '');
160
+ const backupKey = params.backupKey.replace(/\s/g, '');
161
+ const { userKeyShare, backupKeyShare, commonKeyChain } = await sdk_core_1.ECDSAUtils.getMpcV2RecoveryKeyShares(userKey, backupKey, params.walletPassphrase); // baseAddress is not extracted
162
+ // Step 3: Instantiate the ECDSA signer and fetch the address details
163
+ const MPC = new sdk_core_1.Ecdsa();
164
+ const chainId = await this.getChainId();
165
+ const publicKey = MPC.deriveUnhardened(commonKeyChain, constants_1.ROOT_PATH).slice(0, 66);
166
+ const senderAddress = this.getAddressFromPublicKey(publicKey);
167
+ // Step 4: Fetch account details such as accountNo, balance and check for sufficient funds once gasAmount has been deducted
168
+ const [accountNumber, sequenceNo] = await this.getAccountDetails(senderAddress);
169
+ const balances = await this.getAccountBalance(senderAddress);
170
+ const balance = new bignumber_js_1.BigNumber(balances[0].amount);
171
+ const gasBudget = {
172
+ amount: [{ denom: this.getDenomination(), amount: this.getGasAmountDetails().gasAmount }],
173
+ gasLimit: this.getGasAmountDetails().gasLimit,
174
+ };
175
+ const actualBalance = balance.minus(this.getNativeRuneTxnFees());
176
+ if (actualBalance.isLessThanOrEqualTo(0)) {
177
+ throw new Error('Did not have enough funds to recover');
178
+ }
179
+ // Step 5: Once sufficient funds are present, construct the recover tx messsage
180
+ const amount = [
181
+ {
182
+ denom: this.getDenomination(),
183
+ amount: actualBalance.toFixed(),
184
+ },
185
+ ];
186
+ const sendMessage = [
187
+ {
188
+ fromAddress: senderAddress,
189
+ toAddress: params.recoveryDestination,
190
+ amount: amount,
191
+ },
192
+ ];
193
+ // Step 6: Build the unsigned tx using the constructed message
194
+ const txnBuilder = this.getBuilder().getTransferBuilder();
195
+ txnBuilder
196
+ .messages(sendMessage)
197
+ .gasBudget(gasBudget)
198
+ .publicKey(publicKey)
199
+ .sequence(Number(sequenceNo))
200
+ .accountNumber(Number(accountNumber))
201
+ .chainId(chainId);
202
+ const unsignedTransaction = (await txnBuilder.build());
203
+ let serializedTx = unsignedTransaction.toBroadcastFormat();
204
+ const signableHex = unsignedTransaction.signablePayload.toString('hex');
205
+ // Step 7: Sign the tx
206
+ const message = unsignedTransaction.signablePayload;
207
+ const messageHash = (0, crypto_1.createHash)('sha256').update(message).digest();
208
+ const signature = await sdk_core_1.ECDSAUtils.signRecoveryMpcV2(messageHash, userKeyShare, backupKeyShare, commonKeyChain);
209
+ const signableBuffer = Buffer.from(signableHex, 'hex');
210
+ MPC.verify(signableBuffer, signature, this.getHashFunction());
211
+ const cosmosKeyPair = this.getKeyPair(publicKey);
212
+ txnBuilder.addSignature({ pub: cosmosKeyPair.getKeys().pub }, Buffer.from(signature.r + signature.s, 'hex'));
213
+ const signedTransaction = await txnBuilder.build();
214
+ serializedTx = signedTransaction.toBroadcastFormat();
215
+ return { serializedTx: serializedTx };
216
+ }
129
217
  }
130
218
  exports.Rune = Rune;
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlFQUEwRjtBQUMxRixtREFBb0g7QUFDcEgsaURBQW1GO0FBQ25GLCtCQUEyRDtBQUMzRCwrQ0FBd0Q7QUFDeEQsdUNBQXdDO0FBQ3hDLCtDQUF5QztBQUN6QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDeEMsMENBQTRCO0FBRTVCLE1BQWEsSUFBSyxTQUFRLDRCQUFVO0lBR2xDLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksaUJBQVMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixVQUFVO1FBQ1IsT0FBTyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxD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V0FBVyxDQUFDLElBQUksS0FBSywwQkFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM5RyxLQUFLLE1BQU0sVUFBVSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDN0MsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO2dCQUNELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO29CQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7Z0JBQ3JGLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBbEdELG9CQWtHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvc21vc0NvaW4sIENvc21vc0tleVBhaXIsIEdhc0Ftb3VudERldGFpbHMgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1jb3Ntb3MnO1xuaW1wb3J0IHsgQmFzZUNvaW4sIEJpdEdvQmFzZSwgRW52aXJvbm1lbnRzLCBUcmFuc2FjdGlvblR5cGUsIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiwgQmFzZVVuaXQsIGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBLZXlQYWlyLCBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi9saWInO1xuaW1wb3J0IHsgR0FTX0FNT1VOVCwgR0FTX0xJTUlUIH0gZnJvbSAnLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IFJ1bmVVdGlscyB9IGZyb20gJy4vbGliL3V0aWxzJztcbmltcG9ydCB7IEJpZ051bWJlciB9IGZyb20gJ2JpZ251bWJlci5qcyc7XG5jb25zdCBiZWNoMzIgPSByZXF1aXJlKCdiZWNoMzItYnVmZmVyJyk7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjbGFzcyBSdW5lIGV4dGVuZHMgQ29zbW9zQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfdXRpbHM6IFJ1bmVVdGlscztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICAgIHRoaXMuX3V0aWxzID0gbmV3IFJ1bmVVdGlscygpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IFJ1bmUoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0QnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhY3RvciBiZXR3ZWVuIHRoZSBjb2luJ3MgYmFzZSB1bml0IGFuZCBpdHMgc21hbGxlc3Qgc3ViZGl2aXNvblxuICAgKi9cbiAgcHVibGljIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMWU4O1xuICB9XG5cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3V0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpIHx8IHRoaXMuX3V0aWxzLmlzVmFsaWRWYWxpZGF0b3JBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBwcm90ZWN0ZWQgZ2V0UHVibGljTm9kZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBFbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0ucnVuZU5vZGVVcmw7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldERlbm9taW5hdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCYXNlVW5pdC5SVU5FO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXRHYXNBbW91bnREZXRhaWxzKCk6IEdhc0Ftb3VudERldGFpbHMge1xuICAgIHJldHVybiB7XG4gICAgICBnYXNBbW91bnQ6IEdBU19BTU9VTlQsXG4gICAgICBnYXNMaW1pdDogR0FTX0xJTUlULFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldEtleVBhaXIocHVibGljS2V5OiBzdHJpbmcpOiBDb3Ntb3NLZXlQYWlyIHtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwdWI6IHB1YmxpY0tleSB9KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgS2V5UGFpcih7IHB1YjogcHVibGljS2V5IH0pLmdldEFkZHJlc3MoKTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgbGV0IHRvdGFsQW1vdW50ID0gbmV3IEJpZ051bWJlcigwKTtcbiAgICBjb25zdCB7IHR4UHJlYnVpbGQsIHR4UGFyYW1zIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcmF3VHggPSB0eFByZWJ1aWxkLnR4SGV4O1xuICAgIGlmICghcmF3VHgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eCBwcmVidWlsZCBwcm9wZXJ0eSB0eEhleCcpO1xuICAgIH1cbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMuZ2V0QnVpbGRlcigpLmZyb20ocmF3VHgpLmJ1aWxkKCk7XG4gICAgY29uc3QgZXhwbGFpbmVkVHggPSB0cmFuc2FjdGlvbi5leHBsYWluVHJhbnNhY3Rpb24oKTtcblxuICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVyZWRSZWNpcGllbnRzID0gdHhQYXJhbXMucmVjaXBpZW50cz8ubWFwKChyZWNpcGllbnQpID0+IF8ucGljayhyZWNpcGllbnQsIFsnYWRkcmVzcycsICdhbW91bnQnXSkpO1xuICAgICAgbGV0IGZpbHRlcmVkT3V0cHV0cyA9IGV4cGxhaW5lZFR4Lm91dHB1dHMubWFwKChvdXRwdXQpID0+IF8ucGljayhvdXRwdXQsIFsnYWRkcmVzcycsICdhbW91bnQnXSkpO1xuXG4gICAgICBmaWx0ZXJlZE91dHB1dHMgPSBmaWx0ZXJlZE91dHB1dHMubWFwKChvdXRwdXQpID0+IHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5fdXRpbHMuZ2V0TmV0d29ya1ByZWZpeCgpO1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRBZGRyZXNzID0gYmVjaDMyLmVuY29kZShwcmVmaXgsIG91dHB1dC5hZGRyZXNzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgICAgYWRkcmVzczogY29udmVydGVkQWRkcmVzcyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIV8uaXNFcXVhbChmaWx0ZXJlZE91dHB1dHMsIGZpbHRlcmVkUmVjaXBpZW50cykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgICAgfVxuICAgICAgLy8gV2l0aGRyYXdEZWxlZ2F0b3JSZXdhcmRzIGFuZCBDb250cmFjdENhbGwgdHJhbnNhY3Rpb24gZG9uJ3QgaGF2ZSBhbW91bnRcbiAgICAgIGlmICh0cmFuc2FjdGlvbi50eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3ICYmIHRyYW5zYWN0aW9uLnR5cGUgIT09IFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpIHtcbiAgICAgICAgZm9yIChjb25zdCByZWNpcGllbnRzIG9mIHR4UGFyYW1zLnJlY2lwaWVudHMpIHtcbiAgICAgICAgICB0b3RhbEFtb3VudCA9IHRvdGFsQW1vdW50LnBsdXMocmVjaXBpZW50cy5hbW91bnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdG90YWxBbW91bnQuaXNFcXVhbFRvKGV4cGxhaW5lZFR4Lm91dHB1dEFtb3VudCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHRvdGFsIGFtb3VudCBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHRvdGFsIGFtb3VudCBmaWVsZCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlFQVNxQztBQUNyQyxtREFROEI7QUFDOUIsaURBQW1GO0FBQ25GLCtCQUEyRDtBQUMzRCwrQ0FBOEU7QUFDOUUsdUNBQXdDO0FBQ3hDLCtDQUF5QztBQUN6QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDeEMsMENBQTRCO0FBRTVCLG1DQUFvQztBQUVwQyxNQUFhLElBQUssU0FBUSw0QkFBVTtJQUdsQyxZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGlCQUFTLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsVUFBVTtRQUNSLE9BQU8sSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZTtRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FB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QTZNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvc21vc0NvaW4sXG4gIENvc21vc0tleVBhaXIsXG4gIENvc21vc0xpa2VDb2luUmVjb3ZlcnlPdXRwdXQsXG4gIENvc21vc1RyYW5zYWN0aW9uLFxuICBGZWVEYXRhLFxuICBHYXNBbW91bnREZXRhaWxzLFxuICBSZWNvdmVyeU9wdGlvbnMsXG4gIFNlbmRNZXNzYWdlLFxufSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1jb3Ntb3MnO1xuaW1wb3J0IHtcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgRWNkc2EsXG4gIEVDRFNBVXRpbHMsXG4gIEVudmlyb25tZW50cyxcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiwgQmFzZVVuaXQsIGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBLZXlQYWlyLCBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi9saWInO1xuaW1wb3J0IHsgR0FTX0FNT1VOVCwgR0FTX0xJTUlULCBSVU5FX0ZFRVMsIFJPT1RfUEFUSCB9IGZyb20gJy4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSdW5lVXRpbHMgfSBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgeyBCaWdOdW1iZXIgfSBmcm9tICdiaWdudW1iZXIuanMnO1xuY29uc3QgYmVjaDMyID0gcmVxdWlyZSgnYmVjaDMyLWJ1ZmZlcicpO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQ29pbiB9IGZyb20gJ0Bjb3NtanMvc3RhcmdhdGUnO1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5cbmV4cG9ydCBjbGFzcyBSdW5lIGV4dGVuZHMgQ29zbW9zQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfdXRpbHM6IFJ1bmVVdGlscztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICAgIHRoaXMuX3V0aWxzID0gbmV3IFJ1bmVVdGlscygpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IFJ1bmUoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0QnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhY3RvciBiZXR3ZWVuIHRoZSBjb2luJ3MgYmFzZSB1bml0IGFuZCBpdHMgc21hbGxlc3Qgc3ViZGl2aXNvblxuICAgKi9cbiAgcHVibGljIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMWU4O1xuICB9XG5cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3V0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpIHx8IHRoaXMuX3V0aWxzLmlzVmFsaWRWYWxpZGF0b3JBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBwcm90ZWN0ZWQgZ2V0UHVibGljTm9kZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBFbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0ucnVuZU5vZGVVcmw7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldERlbm9taW5hdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCYXNlVW5pdC5SVU5FO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXRHYXNBbW91bnREZXRhaWxzKCk6IEdhc0Ftb3VudERldGFpbHMge1xuICAgIHJldHVybiB7XG4gICAgICBnYXNBbW91bnQ6IEdBU19BTU9VTlQsXG4gICAgICBnYXNMaW1pdDogR0FTX0xJTUlULFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldEtleVBhaXIocHVibGljS2V5OiBzdHJpbmcpOiBDb3Ntb3NLZXlQYWlyIHtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwdWI6IHB1YmxpY0tleSB9KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgS2V5UGFpcih7IHB1YjogcHVibGljS2V5IH0pLmdldEFkZHJlc3MoKTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgbGV0IHRvdGFsQW1vdW50ID0gbmV3IEJpZ051bWJlcigwKTtcbiAgICBjb25zdCB7IHR4UHJlYnVpbGQsIHR4UGFyYW1zIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcmF3VHggPSB0eFByZWJ1aWxkLnR4SGV4O1xuICAgIGlmICghcmF3VHgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eCBwcmVidWlsZCBwcm9wZXJ0eSB0eEhleCcpO1xuICAgIH1cbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMuZ2V0QnVpbGRlcigpLmZyb20ocmF3VHgpLmJ1aWxkKCk7XG4gICAgY29uc3QgZXhwbGFpbmVkVHggPSB0cmFuc2FjdGlvbi5leHBsYWluVHJhbnNhY3Rpb24oKTtcblxuICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVyZWRSZWNpcGllbnRzID0gdHhQYXJhbXMucmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4gKHtcbiAgICAgICAgYWRkcmVzczogdGhpcy5nZXRBZGRyZXNzRGV0YWlscyhyZWNpcGllbnQuYWRkcmVzcykuYWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiByZWNpcGllbnQuYW1vdW50LFxuICAgICAgfSkpO1xuICAgICAgbGV0IGZpbHRlcmVkT3V0cHV0cyA9IGV4cGxhaW5lZFR4Lm91dHB1dHMubWFwKChvdXRwdXQpID0+IF8ucGljayhvdXRwdXQsIFsnYWRkcmVzcycsICdhbW91bnQnXSkpO1xuXG4gICAgICBmaWx0ZXJlZE91dHB1dHMgPSBmaWx0ZXJlZE91dHB1dHMubWFwKChvdXRwdXQpID0+IHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5fdXRpbHMuZ2V0TmV0d29ya1ByZWZpeCgpO1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRBZGRyZXNzID0gYmVjaDMyLmVuY29kZShwcmVmaXgsIG91dHB1dC5hZGRyZXNzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgICAgYWRkcmVzczogY29udmVydGVkQWRkcmVzcyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIV8uaXNFcXVhbChmaWx0ZXJlZE91dHB1dHMsIGZpbHRlcmVkUmVjaXBpZW50cykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgICAgfVxuICAgICAgLy8gV2l0aGRyYXdEZWxlZ2F0b3JSZXdhcmRzIGFuZCBDb250cmFjdENhbGwgdHJhbnNhY3Rpb24gZG9uJ3QgaGF2ZSBhbW91bnRcbiAgICAgIGlmICh0cmFuc2FjdGlvbi50eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3ICYmIHRyYW5zYWN0aW9uLnR5cGUgIT09IFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpIHtcbiAgICAgICAgZm9yIChjb25zdCByZWNpcGllbnRzIG9mIHR4UGFyYW1zLnJlY2lwaWVudHMpIHtcbiAgICAgICAgICB0b3RhbEFtb3VudCA9IHRvdGFsQW1vdW50LnBsdXMocmVjaXBpZW50cy5hbW91bnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdG90YWxBbW91bnQuaXNFcXVhbFRvKGV4cGxhaW5lZFR4Lm91dHB1dEFtb3VudCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHRvdGFsIGFtb3VudCBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHRvdGFsIGFtb3VudCBmaWVsZCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0TmF0aXZlUnVuZVR4bkZlZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUlVORV9GRUVTO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgb3ZlcnJpZGRlbiBmcm9tIENvc21vc0NvaW4gY2xhc3MnIHJlY292ZXIgZnVuY3Rpb24gZHVlIHRvIHRoZSBkaWZmZXJlbmNlIGluIGZlZXMgaGFuZGxpbmcgaW4gdGhvcmNoYWluXG4gICAqIEBwYXJhbSB7UmVjb3ZlcnlPcHRpb25zfSBwYXJhbXMgcGFyYW1ldGVycyBuZWVkZWQgdG8gY29uc3RydWN0IGFuZFxuICAgKiAobWF5YmUpIHNpZ24gdGhlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEByZXR1cm5zIHtDb3Ntb3NMaWtlQ29pblJlY292ZXJ5T3V0cHV0fSB0aGUgc2VyaWFsaXplZCB0cmFuc2FjdGlvbiBoZXggc3RyaW5nIGFuZCBpbmRleFxuICAgKiBvZiB0aGUgYWRkcmVzcyBiZWluZyBzd2VwdFxuICAgKi9cbiAgYXN5bmMgcmVjb3ZlcihwYXJhbXM6IFJlY292ZXJ5T3B0aW9ucyk6IFByb21pc2U8Q29zbW9zTGlrZUNvaW5SZWNvdmVyeU91dHB1dD4ge1xuICAgIC8vIFN0ZXAgMTogQ2hlY2sgaWYgcGFyYW1zIGNvbnRhaW5zIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXJzXG5cbiAgICBpZiAoIXBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uIHx8ICF0aGlzLmlzVmFsaWRBZGRyZXNzKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlY292ZXJ5RGVzdGluYXRpb24nKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhcmFtcy51c2VyS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdXNlcktleScpO1xuICAgIH1cblxuICAgIGlmICghcGFyYW1zLmJhY2t1cEtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGJhY2t1cEtleScpO1xuICAgIH1cblxuICAgIGlmICghcGFyYW1zLndhbGxldFBhc3NwaHJhc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB3YWxsZXQgcGFzc3BocmFzZScpO1xuICAgIH1cblxuICAgIC8vIFN0ZXAgMjogRmV0Y2ggdGhlIGJpdGdvIGtleSBmcm9tIHBhcmFtc1xuICAgIGNvbnN0IHVzZXJLZXkgPSBwYXJhbXMudXNlcktleS5yZXBsYWNlKC9cXHMvZywgJycpO1xuICAgIGNvbnN0IGJhY2t1cEtleSA9IHBhcmFtcy5iYWNrdXBLZXkucmVwbGFjZSgvXFxzL2csICcnKTtcblxuICAgIGNvbnN0IHsgdXNlcktleVNoYXJlLCBiYWNrdXBLZXlTaGFyZSwgY29tbW9uS2V5Q2hhaW4gfSA9IGF3YWl0IEVDRFNBVXRpbHMuZ2V0TXBjVjJSZWNvdmVyeUtleVNoYXJlcyhcbiAgICAgIHVzZXJLZXksXG4gICAgICBiYWNrdXBLZXksXG4gICAgICBwYXJhbXMud2FsbGV0UGFzc3BocmFzZVxuICAgICk7IC8vIGJhc2VBZGRyZXNzIGlzIG5vdCBleHRyYWN0ZWRcbiAgICAvLyBTdGVwIDM6IEluc3RhbnRpYXRlIHRoZSBFQ0RTQSBzaWduZXIgYW5kIGZldGNoIHRoZSBhZGRyZXNzIGRldGFpbHNcbiAgICBjb25zdCBNUEMgPSBuZXcgRWNkc2EoKTtcbiAgICBjb25zdCBjaGFpbklkID0gYXdhaXQgdGhpcy5nZXRDaGFpbklkKCk7XG4gICAgY29uc3QgcHVibGljS2V5ID0gTVBDLmRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Q2hhaW4sIFJPT1RfUEFUSCkuc2xpY2UoMCwgNjYpO1xuICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSB0aGlzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleSk7XG5cbiAgICAvLyBTdGVwIDQ6IEZldGNoIGFjY291bnQgZGV0YWlscyBzdWNoIGFzIGFjY291bnRObywgYmFsYW5jZSBhbmQgY2hlY2sgZm9yIHN1ZmZpY2llbnQgZnVuZHMgb25jZSBnYXNBbW91bnQgaGFzIGJlZW4gZGVkdWN0ZWRcbiAgICBjb25zdCBbYWNjb3VudE51bWJlciwgc2VxdWVuY2VOb10gPSBhd2FpdCB0aGlzLmdldEFjY291bnREZXRhaWxzKHNlbmRlckFkZHJlc3MpO1xuICAgIGNvbnN0IGJhbGFuY2VzID0gYXdhaXQgdGhpcy5nZXRBY2NvdW50QmFsYW5jZShzZW5kZXJBZGRyZXNzKTtcbiAgICBjb25zdCBiYWxhbmNlID0gbmV3IEJpZ051bWJlcihiYWxhbmNlc1swXS5hbW91bnQpO1xuICAgIGNvbnN0IGdhc0J1ZGdldDogRmVlRGF0YSA9IHtcbiAgICAgIGFtb3VudDogW3sgZGVub206IHRoaXMuZ2V0RGVub21pbmF0aW9uKCksIGFtb3VudDogdGhpcy5nZXRHYXNBbW91bnREZXRhaWxzKCkuZ2FzQW1vdW50IH1dLFxuICAgICAgZ2FzTGltaXQ6IHRoaXMuZ2V0R2FzQW1vdW50RGV0YWlscygpLmdhc0xpbWl0LFxuICAgIH07XG4gICAgY29uc3QgYWN0dWFsQmFsYW5jZSA9IGJhbGFuY2UubWludXModGhpcy5nZXROYXRpdmVSdW5lVHhuRmVlcygpKTtcblxuICAgIGlmIChhY3R1YWxCYWxhbmNlLmlzTGVzc1RoYW5PckVxdWFsVG8oMCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBoYXZlIGVub3VnaCBmdW5kcyB0byByZWNvdmVyJyk7XG4gICAgfVxuXG4gICAgLy8gU3RlcCA1OiBPbmNlIHN1ZmZpY2llbnQgZnVuZHMgYXJlIHByZXNlbnQsIGNvbnN0cnVjdCB0aGUgcmVjb3ZlciB0eCBtZXNzc2FnZVxuICAgIGNvbnN0IGFtb3VudDogQ29pbltdID0gW1xuICAgICAge1xuICAgICAgICBkZW5vbTogdGhpcy5nZXREZW5vbWluYXRpb24oKSxcbiAgICAgICAgYW1vdW50OiBhY3R1YWxCYWxhbmNlLnRvRml4ZWQoKSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBjb25zdCBzZW5kTWVzc2FnZTogU2VuZE1lc3NhZ2VbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgZnJvbUFkZHJlc3M6IHNlbmRlckFkZHJlc3MsXG4gICAgICAgIHRvQWRkcmVzczogcGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIGFtb3VudDogYW1vdW50LFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgLy8gU3RlcCA2OiBCdWlsZCB0aGUgdW5zaWduZWQgdHggdXNpbmcgdGhlIGNvbnN0cnVjdGVkIG1lc3NhZ2VcbiAgICBjb25zdCB0eG5CdWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKCkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgdHhuQnVpbGRlclxuICAgICAgLm1lc3NhZ2VzKHNlbmRNZXNzYWdlKVxuICAgICAgLmdhc0J1ZGdldChnYXNCdWRnZXQpXG4gICAgICAucHVibGljS2V5KHB1YmxpY0tleSlcbiAgICAgIC5zZXF1ZW5jZShOdW1iZXIoc2VxdWVuY2VObykpXG4gICAgICAuYWNjb3VudE51bWJlcihOdW1iZXIoYWNjb3VudE51bWJlcikpXG4gICAgICAuY2hhaW5JZChjaGFpbklkKTtcbiAgICBjb25zdCB1bnNpZ25lZFRyYW5zYWN0aW9uID0gKGF3YWl0IHR4bkJ1aWxkZXIuYnVpbGQoKSkgYXMgQ29zbW9zVHJhbnNhY3Rpb247XG4gICAgbGV0IHNlcmlhbGl6ZWRUeCA9IHVuc2lnbmVkVHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBjb25zdCBzaWduYWJsZUhleCA9IHVuc2lnbmVkVHJhbnNhY3Rpb24uc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIC8vIFN0ZXAgNzogU2lnbiB0aGUgdHhcbiAgICBjb25zdCBtZXNzYWdlID0gdW5zaWduZWRUcmFuc2FjdGlvbi5zaWduYWJsZVBheWxvYWQ7XG4gICAgY29uc3QgbWVzc2FnZUhhc2ggPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUobWVzc2FnZSkuZGlnZXN0KCk7XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBFQ0RTQVV0aWxzLnNpZ25SZWNvdmVyeU1wY1YyKG1lc3NhZ2VIYXNoLCB1c2VyS2V5U2hhcmUsIGJhY2t1cEtleVNoYXJlLCBjb21tb25LZXlDaGFpbik7XG5cbiAgICBjb25zdCBzaWduYWJsZUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHNpZ25hYmxlSGV4LCAnaGV4Jyk7XG4gICAgTVBDLnZlcmlmeShzaWduYWJsZUJ1ZmZlciwgc2lnbmF0dXJlLCB0aGlzLmdldEhhc2hGdW5jdGlvbigpKTtcbiAgICBjb25zdCBjb3Ntb3NLZXlQYWlyID0gdGhpcy5nZXRLZXlQYWlyKHB1YmxpY0tleSk7XG4gICAgdHhuQnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGNvc21vc0tleVBhaXIuZ2V0S2V5cygpLnB1YiB9LCBCdWZmZXIuZnJvbShzaWduYXR1cmUuciArIHNpZ25hdHVyZS5zLCAnaGV4JykpO1xuICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgdHhuQnVpbGRlci5idWlsZCgpO1xuICAgIHNlcmlhbGl6ZWRUeCA9IHNpZ25lZFRyYW5zYWN0aW9uLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICByZXR1cm4geyBzZXJpYWxpemVkVHg6IHNlcmlhbGl6ZWRUeCB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,74 @@
1
+ export declare const TEST_ACCOUNT: {
2
+ pubAddress: string;
3
+ testnetPubAddress: string;
4
+ compressedPublicKey: string;
5
+ compressedPublicKeyTwo: string;
6
+ uncompressedPublicKey: string;
7
+ privateKey: string;
8
+ extendedPrv: string;
9
+ extendedPub: string;
10
+ };
11
+ export declare const mainnetAddress: {
12
+ address1: string;
13
+ address2: string;
14
+ address3: string;
15
+ address4: string;
16
+ validatorAddress1: string;
17
+ validatorAddress2: string;
18
+ validatorAddress3: string;
19
+ validatorAddress4: string;
20
+ noMemoIdAddress: string;
21
+ validMemoIdAddress: string;
22
+ invalidMemoIdAddress: string;
23
+ multipleMemoIdAddress: string;
24
+ };
25
+ export declare const blockHash: {
26
+ hash1: string;
27
+ hash2: string;
28
+ };
29
+ export declare const txIds: {
30
+ hash1: string;
31
+ hash2: string;
32
+ hash3: string;
33
+ };
34
+ export declare const mainnetCoinAmounts: {
35
+ amount1: {
36
+ amount: string;
37
+ denom: string;
38
+ };
39
+ amount2: {
40
+ amount: string;
41
+ denom: string;
42
+ };
43
+ amount3: {
44
+ amount: string;
45
+ denom: string;
46
+ };
47
+ amount4: {
48
+ amount: string;
49
+ denom: string;
50
+ };
51
+ amount5: {
52
+ amount: string;
53
+ denom: string;
54
+ };
55
+ };
56
+ export declare const mainnetGasAmounts: {
57
+ positiveGasAmount: {
58
+ amount: string;
59
+ denom: string;
60
+ };
61
+ zeroGasAmount: {
62
+ amount: string;
63
+ denom: string;
64
+ };
65
+ emptyGasAmount: {
66
+ amount: string;
67
+ denom: string;
68
+ };
69
+ alphabeticGasAmount: {
70
+ amount: string;
71
+ denom: string;
72
+ };
73
+ };
74
+ //# sourceMappingURL=rune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rune.d.ts","sourceRoot":"","sources":["../../../test/resources/rune.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;CAYxB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;CAa1B,CAAC;AAEF,eAAO,MAAM,SAAS;;;CAGrB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;CAIjB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;CAM9B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAK7B,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // Get the test data by running the scripts for the particular coin from coin-sandbox repo.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.mainnetGasAmounts = exports.mainnetCoinAmounts = exports.txIds = exports.blockHash = exports.mainnetAddress = exports.TEST_ACCOUNT = void 0;
5
+ exports.TEST_ACCOUNT = {
6
+ pubAddress: 'thor1xrh89ced02ea6928kcwectgtkk7k4954dags7v',
7
+ testnetPubAddress: 'sthor1xrh89ced02ea6928kcwectgtkk7k4954ey5xgj',
8
+ compressedPublicKey: '0371b155f21bf4426d9adeda30c858f523da3d20ca9c2a1c27b83baeac3ed6f184',
9
+ compressedPublicKeyTwo: '02e04ea328d98de663224a126a1c64740e341976f0360d45511c954e61fba30466',
10
+ uncompressedPublicKey: '0471b155f21bf4426d9adeda30c858f523da3d20ca9c2a1c27b83baeac3ed6f1843a0b64237e638ba7129d2dbe86a5c5cbd1e85f6e5ba6606b6c1f98e1b5d23b87',
11
+ privateKey: 'c9cfbf9d86f86d55ce358b15402bd4f9e274b5249ff9be1b852553a36681a798',
12
+ extendedPrv: 'xprv9s21ZrQH143K4CFciZ9dkVK2gyAj8ag8PUPm7vVZhbUhA9mQPK9f4BhzqkDsKojLhJWQndiRKPbwFaEy6dGv6eDBZkMimpiDX8ZvNN2kCVH',
13
+ extendedPub: 'xpub661MyMwAqRbcGgL5page7dFmF11DY3PykhKMvJuBFw1g2x6YvrTubz2Uh2Xa4qmBvtxVPxy2YCpRAQQCQQYz5MctWsCdWvDwybRJvaGubjL',
14
+ };
15
+ exports.mainnetAddress = {
16
+ address1: 'thor1fwk9jl6kfflurj9p0wt098kxl02gle4yhnm687',
17
+ address2: 'thor17hwqt302e5f2xm4h95ma8wuggqkvfzgvsnh5z9',
18
+ address3: 'thor17hwqt302e5f2xm4h95ma8wuggqkvfzgvsnh5',
19
+ address4: 'tho166n4w5039meulfa3p6ydg60ve6ueac7tlt0jws',
20
+ validatorAddress1: 'thor1v882x92avxcmkaucm2h6cp6j2qc4lhll0vfsex',
21
+ validatorAddress2: 'thor1nl0hc33pllze4athmvyaj9ky35le30vvhx3a25',
22
+ validatorAddress3: 'tho140wms8h9pm5dmj832lwnhw45qvt25v0ps888sf',
23
+ validatorAddress4: 'thor1hjpct8pd9d48vyqltaqunltwx9twm57l3qmay',
24
+ noMemoIdAddress: 'thor1pxfnmdjc0esuswlx8uxguqhgywchhuv4k9ntna',
25
+ validMemoIdAddress: 'thor1pxfnmdjc0esuswlx8uxguqhgywchhuv4k9ntna?memoId=2',
26
+ invalidMemoIdAddress: 'thor1pxfnmdjc0esuswlx8uxguqhgywchhuv4k9ntna?memoId=xyz',
27
+ multipleMemoIdAddress: 'thor1pxfnmdjc0esuswlx8uxguqhgywchhuv4k9ntna?memoId=3&memoId=12',
28
+ };
29
+ exports.blockHash = {
30
+ hash1: '10D155BC67CD47A75BA53D5EF92A69721D56D81DEB350D3AE5F3CC7876B14F1B',
31
+ hash2: '6F17E7913CF87E6D167767D4E4167FBFB643BFFCB2571AEA6FA22566E4FBD1B5',
32
+ };
33
+ exports.txIds = {
34
+ hash1: '7CDB56BA820B5A93014A0382014205F3BE18BF4916FE16963B35A4E9B541FA71',
35
+ hash2: 'F2A1A5F434D389BACE737A1A57C1797C35A6DF7450B550955F03380D07BF136A',
36
+ hash3: '2FBB379F11573583155E6F61301F7B00050417411732BF46F6CF354520077F25',
37
+ };
38
+ exports.mainnetCoinAmounts = {
39
+ amount1: { amount: '100000', denom: 'rune' },
40
+ amount2: { amount: '1000000', denom: 'rune' },
41
+ amount3: { amount: '10000000', denom: 'rune' },
42
+ amount4: { amount: '-1', denom: 'rune' },
43
+ amount5: { amount: '1000000000', denom: 'arune' },
44
+ };
45
+ exports.mainnetGasAmounts = {
46
+ positiveGasAmount: { amount: '100', denom: 'rune' },
47
+ zeroGasAmount: { amount: '0', denom: 'rune' },
48
+ emptyGasAmount: { amount: '', denom: 'rune' },
49
+ alphabeticGasAmount: { amount: 'xyz', denom: 'rune' },
50
+ };
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvcmVzb3VyY2VzL3J1bmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJGQUEyRjs7O0FBRTlFLFFBQUEsWUFBWSxHQUFHO0lBQzFCLFVBQVUsRUFBRSw2Q0FBNkM7SUFDekQsaUJBQWlCLEVBQUUsOENBQThDO0lBQ2pFLG1CQUFtQixFQUFFLG9FQUFvRTtJQUN6RixzQkFBc0IsRUFBRSxvRUFBb0U7SUFDNUYscUJBQXFCLEVBQ25CLG9JQUFvSTtJQUN0SSxVQUFVLEVBQUUsa0VBQWtFO0lBQzlFLFdBQVcsRUFDVCxpSEFBaUg7SUFDbkgsV0FBVyxFQUNULGlIQUFpSDtDQUNwSCxDQUFDO0FBRVcsUUFBQSxjQUFjLEdBQUc7SUFDNUIsUUFBUSxFQUFFLDZDQUE2QztJQUN2RCxRQUFRLEVBQUUsNkNBQTZDO0lBQ3ZELFFBQVEsRUFBRSwyQ0FBMkM7SUFDckQsUUFBUSxFQUFFLDRDQUE0QztJQUN0RCxpQkFBaUIsRUFBRSw2Q0FBNkM7SUFDaEUsaUJBQWlCLEVBQUUsNkNBQTZDO0lBQ2hFLGlCQUFpQixFQUFFLDRDQUE0QztJQUMvRCxpQkFBaUIsRUFBRSw0Q0FBNEM7SUFDL0QsZUFBZSxFQUFFLDZDQUE2QztJQUM5RCxrQkFBa0IsRUFBRSxzREFBc0Q7SUFDMUUsb0JBQW9CLEVBQUUsd0RBQXdEO0lBQzlFLHFCQUFxQixFQUFFLGdFQUFnRTtDQUN4RixDQUFDO0FBRVcsUUFBQSxTQUFTLEdBQUc7SUFDdkIsS0FBSyxFQUFFLGtFQUFrRTtJQUN6RSxLQUFLLEVBQUUsa0VBQWtFO0NBQzFFLENBQUM7QUFFVyxRQUFBLEtBQUssR0FBRztJQUNuQixLQUFLLEVBQUUsa0VBQWtFO0lBQ3pFLEtBQUssRUFBRSxrRUFBa0U7SUFDekUsS0FBSyxFQUFFLGtFQUFrRTtDQUMxRSxDQUFDO0FBRVcsUUFBQSxrQkFBa0IsR0FBRztJQUNoQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDNUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQzdDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUM5QyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDeEMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0NBQ2xELENBQUM7QUFFVyxRQUFBLGlCQUFpQixHQUFHO0lBQy9CLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ25ELGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUM3QyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDN0MsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Q0FDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdldCB0aGUgdGVzdCBkYXRhIGJ5IHJ1bm5pbmcgdGhlIHNjcmlwdHMgZm9yIHRoZSBwYXJ0aWN1bGFyIGNvaW4gZnJvbSBjb2luLXNhbmRib3ggcmVwby5cblxuZXhwb3J0IGNvbnN0IFRFU1RfQUNDT1VOVCA9IHtcbiAgcHViQWRkcmVzczogJ3Rob3IxeHJoODljZWQwMmVhNjkyOGtjd2VjdGd0a2s3azQ5NTRkYWdzN3YnLFxuICB0ZXN0bmV0UHViQWRkcmVzczogJ3N0aG9yMXhyaDg5Y2VkMDJlYTY5MjhrY3dlY3RndGtrN2s0OTU0ZXk1eGdqJyxcbiAgY29tcHJlc3NlZFB1YmxpY0tleTogJzAzNzFiMTU1ZjIxYmY0NDI2ZDlhZGVkYTMwYzg1OGY1MjNkYTNkMjBjYTljMmExYzI3YjgzYmFlYWMzZWQ2ZjE4NCcsXG4gIGNvbXByZXNzZWRQdWJsaWNLZXlUd286ICcwMmUwNGVhMzI4ZDk4ZGU2NjMyMjRhMTI2YTFjNjQ3NDBlMzQxOTc2ZjAzNjBkNDU1MTFjOTU0ZTYxZmJhMzA0NjYnLFxuICB1bmNvbXByZXNzZWRQdWJsaWNLZXk6XG4gICAgJzA0NzFiMTU1ZjIxYmY0NDI2ZDlhZGVkYTMwYzg1OGY1MjNkYTNkMjBjYTljMmExYzI3YjgzYmFlYWMzZWQ2ZjE4NDNhMGI2NDIzN2U2MzhiYTcxMjlkMmRiZTg2YTVjNWNiZDFlODVmNmU1YmE2NjA2YjZjMWY5OGUxYjVkMjNiODcnLFxuICBwcml2YXRlS2V5OiAnYzljZmJmOWQ4NmY4NmQ1NWNlMzU4YjE1NDAyYmQ0ZjllMjc0YjUyNDlmZjliZTFiODUyNTUzYTM2NjgxYTc5OCcsXG4gIGV4dGVuZGVkUHJ2OlxuICAgICd4cHJ2OXMyMVpyUUgxNDNLNENGY2laOWRrVksyZ3lBajhhZzhQVVBtN3ZWWmhiVWhBOW1RUEs5ZjRCaHpxa0RzS29qTGhKV1FuZGlSS1Bid0ZhRXk2ZEd2NmVEQlprTWltcGlEWDhadk5OMmtDVkgnLFxuICBleHRlbmRlZFB1YjpcbiAgICAneHB1YjY2MU15TXdBcVJiY0dnTDVwYWdlN2RGbUYxMURZM1B5a2hLTXZKdUJGdzFnMng2WXZyVHViejJVaDJYYTRxbUJ2dHhWUHh5MllDcFJBUVFDUVFZejVNY3RXc0NkV3ZEd3liUkp2YUd1YmpMJyxcbn07XG5cbmV4cG9ydCBjb25zdCBtYWlubmV0QWRkcmVzcyA9IHtcbiAgYWRkcmVzczE6ICd0aG9yMWZ3azlqbDZrZmZsdXJqOXAwd3QwOThreGwwMmdsZTR5aG5tNjg3JyxcbiAgYWRkcmVzczI6ICd0aG9yMTdod3F0MzAyZTVmMnhtNGg5NW1hOHd1Z2dxa3Zmemd2c25oNXo5JyxcbiAgYWRkcmVzczM6ICd0aG9yMTdod3F0MzAyZTVmMnhtNGg5NW1hOHd1Z2dxa3Zmemd2c25oNScsXG4gIGFkZHJlc3M0OiAndGhvMTY2bjR3NTAzOW1ldWxmYTNwNnlkZzYwdmU2dWVhYzd0bHQwandzJyxcbiAgdmFsaWRhdG9yQWRkcmVzczE6ICd0aG9yMXY4ODJ4OTJhdnhjbWthdWNtMmg2Y3A2ajJxYzRsaGxsMHZmc2V4JyxcbiAgdmFsaWRhdG9yQWRkcmVzczI6ICd0aG9yMW5sMGhjMzNwbGx6ZTRhdGhtdnlhajlreTM1bGUzMHZ2aHgzYTI1JyxcbiAgdmFsaWRhdG9yQWRkcmVzczM6ICd0aG8xNDB3bXM4aDlwbTVkbWo4MzJsd25odzQ1cXZ0MjV2MHBzODg4c2YnLFxuICB2YWxpZGF0b3JBZGRyZXNzNDogJ3Rob3IxaGpwY3Q4cGQ5ZDQ4dnlxbHRhcXVubHR3eDl0d201N2wzcW1heScsXG4gIG5vTWVtb0lkQWRkcmVzczogJ3Rob3IxcHhmbm1kamMwZXN1c3dseDh1eGd1cWhneXdjaGh1djRrOW50bmEnLFxuICB2YWxpZE1lbW9JZEFkZHJlc3M6ICd0aG9yMXB4Zm5tZGpjMGVzdXN3bHg4dXhndXFoZ3l3Y2hodXY0azludG5hP21lbW9JZD0yJyxcbiAgaW52YWxpZE1lbW9JZEFkZHJlc3M6ICd0aG9yMXB4Zm5tZGpjMGVzdXN3bHg4dXhndXFoZ3l3Y2hodXY0azludG5hP21lbW9JZD14eXonLFxuICBtdWx0aXBsZU1lbW9JZEFkZHJlc3M6ICd0aG9yMXB4Zm5tZGpjMGVzdXN3bHg4dXhndXFoZ3l3Y2hodXY0azludG5hP21lbW9JZD0zJm1lbW9JZD0xMicsXG59O1xuXG5leHBvcnQgY29uc3QgYmxvY2tIYXNoID0ge1xuICBoYXNoMTogJzEwRDE1NUJDNjdDRDQ3QTc1QkE1M0Q1RUY5MkE2OTcyMUQ1NkQ4MURFQjM1MEQzQUU1RjNDQzc4NzZCMTRGMUInLFxuICBoYXNoMjogJzZGMTdFNzkxM0NGODdFNkQxNjc3NjdENEU0MTY3RkJGQjY0M0JGRkNCMjU3MUFFQTZGQTIyNTY2RTRGQkQxQjUnLFxufTtcblxuZXhwb3J0IGNvbnN0IHR4SWRzID0ge1xuICBoYXNoMTogJzdDREI1NkJBODIwQjVBOTMwMTRBMDM4MjAxNDIwNUYzQkUxOEJGNDkxNkZFMTY5NjNCMzVBNEU5QjU0MUZBNzEnLFxuICBoYXNoMjogJ0YyQTFBNUY0MzREMzg5QkFDRTczN0ExQTU3QzE3OTdDMzVBNkRGNzQ1MEI1NTA5NTVGMDMzODBEMDdCRjEzNkEnLFxuICBoYXNoMzogJzJGQkIzNzlGMTE1NzM1ODMxNTVFNkY2MTMwMUY3QjAwMDUwNDE3NDExNzMyQkY0NkY2Q0YzNTQ1MjAwNzdGMjUnLFxufTtcblxuZXhwb3J0IGNvbnN0IG1haW5uZXRDb2luQW1vdW50cyA9IHtcbiAgYW1vdW50MTogeyBhbW91bnQ6ICcxMDAwMDAnLCBkZW5vbTogJ3J1bmUnIH0sXG4gIGFtb3VudDI6IHsgYW1vdW50OiAnMTAwMDAwMCcsIGRlbm9tOiAncnVuZScgfSxcbiAgYW1vdW50MzogeyBhbW91bnQ6ICcxMDAwMDAwMCcsIGRlbm9tOiAncnVuZScgfSxcbiAgYW1vdW50NDogeyBhbW91bnQ6ICctMScsIGRlbm9tOiAncnVuZScgfSxcbiAgYW1vdW50NTogeyBhbW91bnQ6ICcxMDAwMDAwMDAwJywgZGVub206ICdhcnVuZScgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBtYWlubmV0R2FzQW1vdW50cyA9IHtcbiAgcG9zaXRpdmVHYXNBbW91bnQ6IHsgYW1vdW50OiAnMTAwJywgZGVub206ICdydW5lJyB9LFxuICB6ZXJvR2FzQW1vdW50OiB7IGFtb3VudDogJzAnLCBkZW5vbTogJ3J1bmUnIH0sXG4gIGVtcHR5R2FzQW1vdW50OiB7IGFtb3VudDogJycsIGRlbm9tOiAncnVuZScgfSxcbiAgYWxwaGFiZXRpY0dhc0Ftb3VudDogeyBhbW91bnQ6ICd4eXonLCBkZW5vbTogJ3J1bmUnIH0sXG59O1xuIl19
@@ -0,0 +1,110 @@
1
+ export declare const TEST_TX_WITH_MEMO: {
2
+ hash: string;
3
+ signature: string;
4
+ pubKey: string;
5
+ privateKey: string;
6
+ signedTxBase64: string;
7
+ sender: string;
8
+ recipient: string;
9
+ chainId: string;
10
+ accountNumber: number;
11
+ sequence: number;
12
+ memo: string;
13
+ sendAmount: string;
14
+ feeAmount: string;
15
+ sendMessage: {
16
+ typeUrl: string;
17
+ value: {
18
+ amount: {
19
+ denom: string;
20
+ amount: string;
21
+ }[];
22
+ fromAddress: string;
23
+ toAddress: string;
24
+ };
25
+ };
26
+ gasBudget: {
27
+ amount: {
28
+ denom: string;
29
+ amount: string;
30
+ }[];
31
+ gasLimit: number;
32
+ };
33
+ };
34
+ export declare const TEST_SEND_TX: {
35
+ hash: string;
36
+ signature: string;
37
+ pubKey: string;
38
+ privateKey: string;
39
+ signedTxBase64: string;
40
+ sender: string;
41
+ recipient: string;
42
+ chainId: string;
43
+ accountNumber: number;
44
+ sequence: number;
45
+ sendAmount: string;
46
+ feeAmount: string;
47
+ sendMessage: {
48
+ typeUrl: string;
49
+ value: {
50
+ amount: {
51
+ denom: string;
52
+ amount: string;
53
+ }[];
54
+ fromAddress: string;
55
+ toAddress: string;
56
+ };
57
+ };
58
+ gasBudget: {
59
+ amount: {
60
+ denom: string;
61
+ amount: string;
62
+ }[];
63
+ gasLimit: number;
64
+ };
65
+ };
66
+ export declare const testnetAddress: {
67
+ address1: string;
68
+ address2: string;
69
+ address3: string;
70
+ address4: string;
71
+ validatorAddress1: string;
72
+ validatorAddress2: string;
73
+ validatorAddress3: string;
74
+ validatorAddress4: string;
75
+ noMemoIdAddress: string;
76
+ validMemoIdAddress: string;
77
+ invalidMemoIdAddress: string;
78
+ multipleMemoIdAddress: string;
79
+ };
80
+ export declare const testnetCoinAmounts: {
81
+ amount1: {
82
+ amount: string;
83
+ denom: string;
84
+ };
85
+ amount2: {
86
+ amount: string;
87
+ denom: string;
88
+ };
89
+ amount3: {
90
+ amount: string;
91
+ denom: string;
92
+ };
93
+ amount4: {
94
+ amount: string;
95
+ denom: string;
96
+ };
97
+ amount5: {
98
+ amount: string;
99
+ denom: string;
100
+ };
101
+ };
102
+ export declare const wrwUser: {
103
+ senderAddress: string;
104
+ destinationAddress: string;
105
+ userPrivateKey: string;
106
+ backupPrivateKey: string;
107
+ bitgoPublicKey: string;
108
+ walletPassphrase: string;
109
+ };
110
+ //# sourceMappingURL=trune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trune.d.ts","sourceRoot":"","sources":["../../../test/resources/trune.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC7B,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCxB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;CAa1B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;CAM9B,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;CAUnB,CAAC"}