@bitgo-beta/sdk-coin-vet 1.0.1-beta.427 → 1.0.1-beta.429

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 (29) hide show
  1. package/dist/src/lib/constants.d.ts +2 -0
  2. package/dist/src/lib/constants.d.ts.map +1 -1
  3. package/dist/src/lib/constants.js +4 -2
  4. package/dist/src/lib/index.d.ts +2 -0
  5. package/dist/src/lib/index.d.ts.map +1 -1
  6. package/dist/src/lib/index.js +6 -2
  7. package/dist/src/lib/transaction/delegateClauseTransaction.d.ts +27 -0
  8. package/dist/src/lib/transaction/delegateClauseTransaction.d.ts.map +1 -0
  9. package/dist/src/lib/transaction/delegateClauseTransaction.js +156 -0
  10. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  11. package/dist/src/lib/transaction/transaction.js +2 -1
  12. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts +66 -0
  13. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts.map +1 -0
  14. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.js +120 -0
  15. package/dist/src/lib/transactionBuilderFactory.d.ts +3 -0
  16. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  17. package/dist/src/lib/transactionBuilderFactory.js +10 -1
  18. package/dist/src/lib/utils.d.ts +10 -0
  19. package/dist/src/lib/utils.d.ts.map +1 -1
  20. package/dist/src/lib/utils.js +24 -1
  21. package/dist/test/resources/vet.d.ts +2 -0
  22. package/dist/test/resources/vet.d.ts.map +1 -1
  23. package/dist/test/resources/vet.js +5 -3
  24. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts +2 -0
  25. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts.map +1 -0
  26. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.js +173 -0
  27. package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.js +7 -6
  28. package/dist/tsconfig.tsbuildinfo +1 -1
  29. package/package.json +10 -10
@@ -1,9 +1,11 @@
1
1
  export declare const VET_TRANSACTION_ID_LENGTH = 64;
2
2
  export declare const VET_ADDRESS_LENGTH = 40;
3
3
  export declare const VET_BLOCK_ID_LENGTH = 64;
4
+ export declare const ZERO_VALUE_AMOUNT = "0";
4
5
  export declare const TRANSFER_TOKEN_METHOD_ID = "0xa9059cbb";
5
6
  export declare const STAKING_METHOD_ID = "0xd8da3bbf";
6
7
  export declare const STAKE_CLAUSE_METHOD_ID = "0x604f2177";
8
+ export declare const DELEGATE_CLAUSE_METHOD_ID = "0x3207555d";
7
9
  export declare const EXIT_DELEGATION_METHOD_ID = "0x69e79b7d";
8
10
  export declare const BURN_NFT_METHOD_ID = "0x2e17de78";
9
11
  export declare const TRANSFER_NFT_METHOD_ID = "0x23b872dd";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,4BAA4B,eAAe,CAAC;AACzD,eAAO,MAAM,+BAA+B,eAAe,CAAC;AAE5D,eAAO,MAAM,oBAAoB,+CAA+C,CAAC;AACjF,eAAO,MAAM,2BAA2B,+CAA+C,CAAC;AAExF,eAAO,MAAM,4BAA4B,+CAA+C,CAAC;AACzF,eAAO,MAAM,mCAAmC,+CAA+C,CAAC;AAEhG,eAAO,MAAM,aAAa,UAAU,CAAC;AACrC,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,4BAA4B,eAAe,CAAC;AACzD,eAAO,MAAM,+BAA+B,eAAe,CAAC;AAE5D,eAAO,MAAM,oBAAoB,+CAA+C,CAAC;AACjF,eAAO,MAAM,2BAA2B,+CAA+C,CAAC;AAExF,eAAO,MAAM,4BAA4B,+CAA+C,CAAC;AACzF,eAAO,MAAM,mCAAmC,+CAA+C,CAAC;AAEhG,eAAO,MAAM,aAAa,UAAU,CAAC;AACrC,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC"}
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.feeEstimateData = exports.COEF_DIVISOR = exports.GAS_UNIT_PRICE = exports.GAS_PRICE_COEF = exports.EXPIRATION = exports.AVG_GAS_UNITS = exports.STARGATE_DELEGATION_ADDRESS_TESTNET = exports.STARGATE_NFT_ADDRESS_TESTNET = exports.STARGATE_DELEGATION_ADDRESS = exports.STARGATE_NFT_ADDRESS = exports.CLAIM_STAKING_REWARDS_METHOD_ID = exports.CLAIM_BASE_REWARDS_METHOD_ID = exports.TRANSFER_NFT_METHOD_ID = exports.BURN_NFT_METHOD_ID = exports.EXIT_DELEGATION_METHOD_ID = exports.STAKE_CLAUSE_METHOD_ID = exports.STAKING_METHOD_ID = exports.TRANSFER_TOKEN_METHOD_ID = exports.VET_BLOCK_ID_LENGTH = exports.VET_ADDRESS_LENGTH = exports.VET_TRANSACTION_ID_LENGTH = void 0;
3
+ exports.feeEstimateData = exports.COEF_DIVISOR = exports.GAS_UNIT_PRICE = exports.GAS_PRICE_COEF = exports.EXPIRATION = exports.AVG_GAS_UNITS = exports.STARGATE_DELEGATION_ADDRESS_TESTNET = exports.STARGATE_NFT_ADDRESS_TESTNET = exports.STARGATE_DELEGATION_ADDRESS = exports.STARGATE_NFT_ADDRESS = exports.CLAIM_STAKING_REWARDS_METHOD_ID = exports.CLAIM_BASE_REWARDS_METHOD_ID = exports.TRANSFER_NFT_METHOD_ID = exports.BURN_NFT_METHOD_ID = exports.EXIT_DELEGATION_METHOD_ID = exports.DELEGATE_CLAUSE_METHOD_ID = exports.STAKE_CLAUSE_METHOD_ID = exports.STAKING_METHOD_ID = exports.TRANSFER_TOKEN_METHOD_ID = exports.ZERO_VALUE_AMOUNT = exports.VET_BLOCK_ID_LENGTH = exports.VET_ADDRESS_LENGTH = exports.VET_TRANSACTION_ID_LENGTH = void 0;
4
4
  exports.VET_TRANSACTION_ID_LENGTH = 64;
5
5
  exports.VET_ADDRESS_LENGTH = 40;
6
6
  exports.VET_BLOCK_ID_LENGTH = 64;
7
+ exports.ZERO_VALUE_AMOUNT = '0';
7
8
  exports.TRANSFER_TOKEN_METHOD_ID = '0xa9059cbb';
8
9
  exports.STAKING_METHOD_ID = '0xd8da3bbf';
9
10
  exports.STAKE_CLAUSE_METHOD_ID = '0x604f2177';
11
+ exports.DELEGATE_CLAUSE_METHOD_ID = '0x3207555d';
10
12
  exports.EXIT_DELEGATION_METHOD_ID = '0x69e79b7d';
11
13
  exports.BURN_NFT_METHOD_ID = '0x2e17de78';
12
14
  exports.TRANSFER_NFT_METHOD_ID = '0x23b872dd';
@@ -27,4 +29,4 @@ exports.feeEstimateData = {
27
29
  gasPriceCoef: exports.GAS_PRICE_COEF,
28
30
  coefDivisor: exports.COEF_DIVISOR,
29
31
  };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSx5QkFBeUIsR0FBRyxFQUFFLENBQUM7QUFDL0IsUUFBQSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFDeEIsUUFBQSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFFekIsUUFBQSx3QkFBd0IsR0FBRyxZQUFZLENBQUM7QUFDeEMsUUFBQSxpQkFBaUIsR0FBRyxZQUFZLENBQUM7QUFDakMsUUFBQSxzQkFBc0IsR0FBRyxZQUFZLENBQUM7QUFDdEMsUUFBQSx5QkFBeUIsR0FBRyxZQUFZLENBQUM7QUFDekMsUUFBQSxrQkFBa0IsR0FBRyxZQUFZLENBQUM7QUFDbEMsUUFBQSxzQkFBc0IsR0FBRyxZQUFZLENBQUM7QUFDdEMsUUFBQSw0QkFBNEIsR0FBRyxZQUFZLENBQUMsQ0FBQyxpQ0FBaUM7QUFDOUUsUUFBQSwrQkFBK0IsR0FBRyxZQUFZLENBQUMsQ0FBQyx3QkFBd0I7QUFFeEUsUUFBQSxvQkFBb0IsR0FBRyw0Q0FBNEMsQ0FBQztBQUNwRSxRQUFBLDJCQUEyQixHQUFHLDRDQUE0QyxDQUFDO0FBRTNFLFFBQUEsNEJBQTRCLEdBQUcsNENBQTRDLENBQUM7QUFDNUUsUUFBQSxtQ0FBbUMsR0FBRyw0Q0FBNEMsQ0FBQztBQUVuRixRQUFBLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFDeEIsUUFBQSxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBQ2pCLFFBQUEsY0FBYyxHQUFHLEtBQUssQ0FBQztBQUN2QixRQUFBLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLGdEQUFnRDtBQUNuRixRQUFBLFlBQVksR0FBRyxLQUFLLENBQUM7QUFFckIsUUFBQSxlQUFlLEdBQUc7SUFDN0IsR0FBRyxFQUFFLHFCQUFhO0lBQ2xCLFlBQVksRUFBRSxzQkFBYztJQUM1QixZQUFZLEVBQUUsc0JBQWM7SUFDNUIsV0FBVyxFQUFFLG9CQUFZO0NBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVkVUX1RSQU5TQUNUSU9OX0lEX0xFTkdUSCA9IDY0O1xuZXhwb3J0IGNvbnN0IFZFVF9BRERSRVNTX0xFTkdUSCA9IDQwO1xuZXhwb3J0IGNvbnN0IFZFVF9CTE9DS19JRF9MRU5HVEggPSA2NDtcblxuZXhwb3J0IGNvbnN0IFRSQU5TRkVSX1RPS0VOX01FVEhPRF9JRCA9ICcweGE5MDU5Y2JiJztcbmV4cG9ydCBjb25zdCBTVEFLSU5HX01FVEhPRF9JRCA9ICcweGQ4ZGEzYmJmJztcbmV4cG9ydCBjb25zdCBTVEFLRV9DTEFVU0VfTUVUSE9EX0lEID0gJzB4NjA0ZjIxNzcnO1xuZXhwb3J0IGNvbnN0IEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQgPSAnMHg2OWU3OWI3ZCc7XG5leHBvcnQgY29uc3QgQlVSTl9ORlRfTUVUSE9EX0lEID0gJzB4MmUxN2RlNzgnO1xuZXhwb3J0IGNvbnN0IFRSQU5TRkVSX05GVF9NRVRIT0RfSUQgPSAnMHgyM2I4NzJkZCc7XG5leHBvcnQgY29uc3QgQ0xBSU1fQkFTRV9SRVdBUkRTX01FVEhPRF9JRCA9ICcweDg1OGQ1MGU4JzsgLy8gY2xhaW1WZXRHZW5lcmF0ZWRWdGhvKHVpbnQyNTYpXG5leHBvcnQgY29uc3QgQ0xBSU1fU1RBS0lOR19SRVdBUkRTX01FVEhPRF9JRCA9ICcweDA5NjJlZjc5JzsgLy8gY2xhaW1SZXdhcmRzKHVpbnQyNTYpXG5cbmV4cG9ydCBjb25zdCBTVEFSR0FURV9ORlRfQUREUkVTUyA9ICcweDE4NTZjNTMzYWMyZDk0MzQwYWFhODU0NGQzNWE1YzFkNGEyMWRlZTcnO1xuZXhwb3J0IGNvbnN0IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTUyA9ICcweDRjYjFjOWVmMDViNTI5YzA5MzM3MTI2NGZhYjJjOTNjYzZjZGRiMGUnO1xuXG5leHBvcnQgY29uc3QgU1RBUkdBVEVfTkZUX0FERFJFU1NfVEVTVE5FVCA9ICcweDFlYzFkMTY4NTc0NjAzZWMzNWI5ZDIyOTg0M2I3YzJiNDRiY2I3NzAnO1xuZXhwb3J0IGNvbnN0IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVUID0gJzB4NzI0MGUzYmMwZDI2NDMxNTEyZDViNjdkYmQyNmQxOTkyMDViZmZlOCc7XG5cbmV4cG9ydCBjb25zdCBBVkdfR0FTX1VOSVRTID0gJzIxMDAwJztcbmV4cG9ydCBjb25zdCBFWFBJUkFUSU9OID0gNDAwO1xuZXhwb3J0IGNvbnN0IEdBU19QUklDRV9DT0VGID0gJzEyOCc7XG5leHBvcnQgY29uc3QgR0FTX1VOSVRfUFJJQ0UgPSAnMTAwMDAwMDAwMDAwMDAnOyAvLyB2ZWNoYWluIGhhcyBmaXhlZCBnYXMgdW5pdCBwcmljZSBvZiAxMF4xMyB3ZWlcbmV4cG9ydCBjb25zdCBDT0VGX0RJVklTT1IgPSAnMjU1JztcblxuZXhwb3J0IGNvbnN0IGZlZUVzdGltYXRlRGF0YSA9IHtcbiAgZ2FzOiBBVkdfR0FTX1VOSVRTLFxuICBnYXNVbml0UHJpY2U6IEdBU19VTklUX1BSSUNFLFxuICBnYXNQcmljZUNvZWY6IEdBU19QUklDRV9DT0VGLFxuICBjb2VmRGl2aXNvcjogQ09FRl9ESVZJU09SLFxufTtcbiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSx5QkFBeUIsR0FBRyxFQUFFLENBQUM7QUFDL0IsUUFBQSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFDeEIsUUFBQSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFDekIsUUFBQSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFFeEIsUUFBQSx3QkFBd0IsR0FBRyxZQUFZLENBQUM7QUFDeEMsUUFBQSxpQkFBaUIsR0FBRyxZQUFZLENBQUM7QUFDakMsUUFBQSxzQkFBc0IsR0FBRyxZQUFZLENBQUM7QUFDdEMsUUFBQSx5QkFBeUIsR0FBRyxZQUFZLENBQUM7QUFDekMsUUFBQSx5QkFBeUIsR0FBRyxZQUFZLENBQUM7QUFDekMsUUFBQSxrQkFBa0IsR0FBRyxZQUFZLENBQUM7QUFDbEMsUUFBQSxzQkFBc0IsR0FBRyxZQUFZLENBQUM7QUFDdEMsUUFBQSw0QkFBNEIsR0FBRyxZQUFZLENBQUMsQ0FBQyxpQ0FBaUM7QUFDOUUsUUFBQSwrQkFBK0IsR0FBRyxZQUFZLENBQUMsQ0FBQyx3QkFBd0I7QUFFeEUsUUFBQSxvQkFBb0IsR0FBRyw0Q0FBNEMsQ0FBQztBQUNwRSxRQUFBLDJCQUEyQixHQUFHLDRDQUE0QyxDQUFDO0FBRTNFLFFBQUEsNEJBQTRCLEdBQUcsNENBQTRDLENBQUM7QUFDNUUsUUFBQSxtQ0FBbUMsR0FBRyw0Q0FBNEMsQ0FBQztBQUVuRixRQUFBLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFDeEIsUUFBQSxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBQ2pCLFFBQUEsY0FBYyxHQUFHLEtBQUssQ0FBQztBQUN2QixRQUFBLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLGdEQUFnRDtBQUNuRixRQUFBLFlBQVksR0FBRyxLQUFLLENBQUM7QUFFckIsUUFBQSxlQUFlLEdBQUc7SUFDN0IsR0FBRyxFQUFFLHFCQUFhO0lBQ2xCLFlBQVksRUFBRSxzQkFBYztJQUM1QixZQUFZLEVBQUUsc0JBQWM7SUFDNUIsV0FBVyxFQUFFLG9CQUFZO0NBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVkVUX1RSQU5TQUNUSU9OX0lEX0xFTkdUSCA9IDY0O1xuZXhwb3J0IGNvbnN0IFZFVF9BRERSRVNTX0xFTkdUSCA9IDQwO1xuZXhwb3J0IGNvbnN0IFZFVF9CTE9DS19JRF9MRU5HVEggPSA2NDtcbmV4cG9ydCBjb25zdCBaRVJPX1ZBTFVFX0FNT1VOVCA9ICcwJztcblxuZXhwb3J0IGNvbnN0IFRSQU5TRkVSX1RPS0VOX01FVEhPRF9JRCA9ICcweGE5MDU5Y2JiJztcbmV4cG9ydCBjb25zdCBTVEFLSU5HX01FVEhPRF9JRCA9ICcweGQ4ZGEzYmJmJztcbmV4cG9ydCBjb25zdCBTVEFLRV9DTEFVU0VfTUVUSE9EX0lEID0gJzB4NjA0ZjIxNzcnO1xuZXhwb3J0IGNvbnN0IERFTEVHQVRFX0NMQVVTRV9NRVRIT0RfSUQgPSAnMHgzMjA3NTU1ZCc7XG5leHBvcnQgY29uc3QgRVhJVF9ERUxFR0FUSU9OX01FVEhPRF9JRCA9ICcweDY5ZTc5YjdkJztcbmV4cG9ydCBjb25zdCBCVVJOX05GVF9NRVRIT0RfSUQgPSAnMHgyZTE3ZGU3OCc7XG5leHBvcnQgY29uc3QgVFJBTlNGRVJfTkZUX01FVEhPRF9JRCA9ICcweDIzYjg3MmRkJztcbmV4cG9ydCBjb25zdCBDTEFJTV9CQVNFX1JFV0FSRFNfTUVUSE9EX0lEID0gJzB4ODU4ZDUwZTgnOyAvLyBjbGFpbVZldEdlbmVyYXRlZFZ0aG8odWludDI1NilcbmV4cG9ydCBjb25zdCBDTEFJTV9TVEFLSU5HX1JFV0FSRFNfTUVUSE9EX0lEID0gJzB4MDk2MmVmNzknOyAvLyBjbGFpbVJld2FyZHModWludDI1NilcblxuZXhwb3J0IGNvbnN0IFNUQVJHQVRFX05GVF9BRERSRVNTID0gJzB4MTg1NmM1MzNhYzJkOTQzNDBhYWE4NTQ0ZDM1YTVjMWQ0YTIxZGVlNyc7XG5leHBvcnQgY29uc3QgU1RBUkdBVEVfREVMRUdBVElPTl9BRERSRVNTID0gJzB4NGNiMWM5ZWYwNWI1MjljMDkzMzcxMjY0ZmFiMmM5M2NjNmNkZGIwZSc7XG5cbmV4cG9ydCBjb25zdCBTVEFSR0FURV9ORlRfQUREUkVTU19URVNUTkVUID0gJzB4MWVjMWQxNjg1NzQ2MDNlYzM1YjlkMjI5ODQzYjdjMmI0NGJjYjc3MCc7XG5leHBvcnQgY29uc3QgU1RBUkdBVEVfREVMRUdBVElPTl9BRERSRVNTX1RFU1RORVQgPSAnMHg3MjQwZTNiYzBkMjY0MzE1MTJkNWI2N2RiZDI2ZDE5OTIwNWJmZmU4JztcblxuZXhwb3J0IGNvbnN0IEFWR19HQVNfVU5JVFMgPSAnMjEwMDAnO1xuZXhwb3J0IGNvbnN0IEVYUElSQVRJT04gPSA0MDA7XG5leHBvcnQgY29uc3QgR0FTX1BSSUNFX0NPRUYgPSAnMTI4JztcbmV4cG9ydCBjb25zdCBHQVNfVU5JVF9QUklDRSA9ICcxMDAwMDAwMDAwMDAwMCc7IC8vIHZlY2hhaW4gaGFzIGZpeGVkIGdhcyB1bml0IHByaWNlIG9mIDEwXjEzIHdlaVxuZXhwb3J0IGNvbnN0IENPRUZfRElWSVNPUiA9ICcyNTUnO1xuXG5leHBvcnQgY29uc3QgZmVlRXN0aW1hdGVEYXRhID0ge1xuICBnYXM6IEFWR19HQVNfVU5JVFMsXG4gIGdhc1VuaXRQcmljZTogR0FTX1VOSVRfUFJJQ0UsXG4gIGdhc1ByaWNlQ29lZjogR0FTX1BSSUNFX0NPRUYsXG4gIGNvZWZEaXZpc29yOiBDT0VGX0RJVklTT1IsXG59O1xuIl19
@@ -8,6 +8,7 @@ export { FlushTokenTransaction } from './transaction/flushTokenTransaction';
8
8
  export { TokenTransaction } from './transaction/tokenTransaction';
9
9
  export { StakingTransaction } from './transaction/stakingTransaction';
10
10
  export { StakeClauseTransaction } from './transaction/stakeClauseTransaction';
11
+ export { DelegateClauseTransaction } from './transaction/delegateClauseTransaction';
11
12
  export { ExitDelegationTransaction } from './transaction/exitDelegation';
12
13
  export { BurnNftTransaction } from './transaction/burnNftTransaction';
13
14
  export { ClaimRewardsTransaction } from './transaction/claimRewards';
@@ -18,6 +19,7 @@ export { AddressInitializationBuilder } from './transactionBuilder/addressInitia
18
19
  export { FlushTokenTransactionBuilder } from './transactionBuilder/flushTokenTransactionBuilder';
19
20
  export { StakingBuilder } from './transactionBuilder/stakingBuilder';
20
21
  export { StakeClauseTxnBuilder } from './transactionBuilder/stakeClauseTxnBuilder';
22
+ export { DelegateTxnBuilder } from './transactionBuilder/delegateTxnBuilder';
21
23
  export { NFTTransactionBuilder } from './transactionBuilder/nftTransactionBuilder';
22
24
  export { BurnNftBuilder } from './transactionBuilder/burnNftBuilder';
23
25
  export { ExitDelegationBuilder } from './transactionBuilder/exitDelegationBuilder';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC"}
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Interface = exports.Utils = exports.Constants = exports.TransactionBuilderFactory = exports.ClaimRewardsBuilder = exports.ExitDelegationBuilder = exports.BurnNftBuilder = exports.NFTTransactionBuilder = exports.StakeClauseTxnBuilder = exports.StakingBuilder = exports.FlushTokenTransactionBuilder = exports.AddressInitializationBuilder = exports.TransferBuilder = exports.TransactionBuilder = exports.NFTTransaction = exports.ClaimRewardsTransaction = exports.BurnNftTransaction = exports.ExitDelegationTransaction = exports.StakeClauseTransaction = exports.StakingTransaction = exports.TokenTransaction = exports.FlushTokenTransaction = exports.AddressInitializationTransaction = exports.Transaction = exports.KeyPair = void 0;
36
+ exports.Interface = exports.Utils = exports.Constants = exports.TransactionBuilderFactory = exports.ClaimRewardsBuilder = exports.ExitDelegationBuilder = exports.BurnNftBuilder = exports.NFTTransactionBuilder = exports.DelegateTxnBuilder = exports.StakeClauseTxnBuilder = exports.StakingBuilder = exports.FlushTokenTransactionBuilder = exports.AddressInitializationBuilder = exports.TransferBuilder = exports.TransactionBuilder = exports.NFTTransaction = exports.ClaimRewardsTransaction = exports.BurnNftTransaction = exports.ExitDelegationTransaction = exports.DelegateClauseTransaction = exports.StakeClauseTransaction = exports.StakingTransaction = exports.TokenTransaction = exports.FlushTokenTransaction = exports.AddressInitializationTransaction = exports.Transaction = exports.KeyPair = void 0;
37
37
  const Constants = __importStar(require("./constants"));
38
38
  exports.Constants = Constants;
39
39
  const Utils = __importStar(require("./utils"));
@@ -54,6 +54,8 @@ var stakingTransaction_1 = require("./transaction/stakingTransaction");
54
54
  Object.defineProperty(exports, "StakingTransaction", { enumerable: true, get: function () { return stakingTransaction_1.StakingTransaction; } });
55
55
  var stakeClauseTransaction_1 = require("./transaction/stakeClauseTransaction");
56
56
  Object.defineProperty(exports, "StakeClauseTransaction", { enumerable: true, get: function () { return stakeClauseTransaction_1.StakeClauseTransaction; } });
57
+ var delegateClauseTransaction_1 = require("./transaction/delegateClauseTransaction");
58
+ Object.defineProperty(exports, "DelegateClauseTransaction", { enumerable: true, get: function () { return delegateClauseTransaction_1.DelegateClauseTransaction; } });
57
59
  var exitDelegation_1 = require("./transaction/exitDelegation");
58
60
  Object.defineProperty(exports, "ExitDelegationTransaction", { enumerable: true, get: function () { return exitDelegation_1.ExitDelegationTransaction; } });
59
61
  var burnNftTransaction_1 = require("./transaction/burnNftTransaction");
@@ -74,6 +76,8 @@ var stakingBuilder_1 = require("./transactionBuilder/stakingBuilder");
74
76
  Object.defineProperty(exports, "StakingBuilder", { enumerable: true, get: function () { return stakingBuilder_1.StakingBuilder; } });
75
77
  var stakeClauseTxnBuilder_1 = require("./transactionBuilder/stakeClauseTxnBuilder");
76
78
  Object.defineProperty(exports, "StakeClauseTxnBuilder", { enumerable: true, get: function () { return stakeClauseTxnBuilder_1.StakeClauseTxnBuilder; } });
79
+ var delegateTxnBuilder_1 = require("./transactionBuilder/delegateTxnBuilder");
80
+ Object.defineProperty(exports, "DelegateTxnBuilder", { enumerable: true, get: function () { return delegateTxnBuilder_1.DelegateTxnBuilder; } });
77
81
  var nftTransactionBuilder_1 = require("./transactionBuilder/nftTransactionBuilder");
78
82
  Object.defineProperty(exports, "NFTTransactionBuilder", { enumerable: true, get: function () { return nftTransactionBuilder_1.NFTTransactionBuilder; } });
79
83
  var burnNftBuilder_1 = require("./transactionBuilder/burnNftBuilder");
@@ -84,4 +88,4 @@ var claimRewardsBuilder_1 = require("./transactionBuilder/claimRewardsBuilder");
84
88
  Object.defineProperty(exports, "ClaimRewardsBuilder", { enumerable: true, get: function () { return claimRewardsBuilder_1.ClaimRewardsBuilder; } });
85
89
  var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
86
90
  Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUF5QztBQTBCaEMsOEJBQVM7QUF6QmxCLCtDQUFpQztBQXlCYixzQkFBSztBQXhCekIsbURBQXFDO0FBd0JWLDhCQUFTO0FBdEJwQyxxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLHlEQUF3RDtBQUEvQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsbUdBQWtHO0FBQXpGLG9KQUFBLGdDQUFnQyxPQUFBO0FBQ3pDLDZFQUE0RTtBQUFuRSw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QixtRUFBa0U7QUFBekQsb0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIsdUVBQXNFO0FBQTdELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLCtFQUE4RTtBQUFyRSxnSUFBQSxzQkFBc0IsT0FBQTtBQUMvQiwrREFBeUU7QUFBaEUsMkhBQUEseUJBQXlCLE9BQUE7QUFDbEMsdUVBQXNFO0FBQTdELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLDJEQUFxRTtBQUE1RCx1SEFBQSx1QkFBdUIsT0FBQTtBQUNoQywrREFBOEQ7QUFBckQsZ0hBQUEsY0FBYyxPQUFBO0FBQ3ZCLDhFQUE2RTtBQUFwRSx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQix3RUFBdUU7QUFBOUQsa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLGtHQUFpRztBQUF4Riw0SUFBQSw0QkFBNEIsT0FBQTtBQUNyQyxrR0FBaUc7QUFBeEYsNElBQUEsNEJBQTRCLE9BQUE7QUFDckMsc0VBQXFFO0FBQTVELGdIQUFBLGNBQWMsT0FBQTtBQUN2QixvRkFBbUY7QUFBMUUsOEhBQUEscUJBQXFCLE9BQUE7QUFDOUIsb0ZBQW1GO0FBQTFFLDhIQUFBLHFCQUFxQixPQUFBO0FBQzlCLHNFQUFxRTtBQUE1RCxnSEFBQSxjQUFjLE9BQUE7QUFDdkIsb0ZBQW1GO0FBQTFFLDhIQUFBLHFCQUFxQixPQUFBO0FBQzlCLGdGQUErRTtBQUF0RSwwSEFBQSxtQkFBbUIsT0FBQTtBQUM1Qix5RUFBd0U7QUFBL0Qsc0lBQUEseUJBQXlCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBDb25zdGFudHMgZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBJbnRlcmZhY2UgZnJvbSAnLi9pZmFjZSc7XG5cbmV4cG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmV4cG9ydCB7IEFkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9hZGRyZXNzSW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbic7XG5leHBvcnQgeyBGbHVzaFRva2VuVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL2ZsdXNoVG9rZW5UcmFuc2FjdGlvbic7XG5leHBvcnQgeyBUb2tlblRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90b2tlblRyYW5zYWN0aW9uJztcbmV4cG9ydCB7IFN0YWtpbmdUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vc3Rha2luZ1RyYW5zYWN0aW9uJztcbmV4cG9ydCB7IFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL3N0YWtlQ2xhdXNlVHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgRXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vZXhpdERlbGVnYXRpb24nO1xuZXhwb3J0IHsgQnVybk5mdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9idXJuTmZ0VHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgQ2xhaW1SZXdhcmRzVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL2NsYWltUmV3YXJkcyc7XG5leHBvcnQgeyBORlRUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vbmZ0VHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL3RyYW5zZmVyQnVpbGRlcic7XG5leHBvcnQgeyBBZGRyZXNzSW5pdGlhbGl6YXRpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvYWRkcmVzc0luaXRpYWxpemF0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBGbHVzaFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvZmx1c2hUb2tlblRyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBTdGFraW5nQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL3N0YWtpbmdCdWlsZGVyJztcbmV4cG9ydCB7IFN0YWtlQ2xhdXNlVHhuQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL3N0YWtlQ2xhdXNlVHhuQnVpbGRlcic7XG5leHBvcnQgeyBORlRUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9uZnRUcmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgQnVybk5mdEJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9idXJuTmZ0QnVpbGRlcic7XG5leHBvcnQgeyBFeGl0RGVsZWdhdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9leGl0RGVsZWdhdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgQ2xhaW1SZXdhcmRzQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL2NsYWltUmV3YXJkc0J1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSc7XG5leHBvcnQgeyBDb25zdGFudHMsIFV0aWxzLCBJbnRlcmZhY2UgfTtcbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUF5QztBQTRCaEMsOEJBQVM7QUEzQmxCLCtDQUFpQztBQTJCYixzQkFBSztBQTFCekIsbURBQXFDO0FBMEJWLDhCQUFTO0FBeEJwQyxxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLHlEQUF3RDtBQUEvQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsbUdBQWtHO0FBQXpGLG9KQUFBLGdDQUFnQyxPQUFBO0FBQ3pDLDZFQUE0RTtBQUFuRSw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QixtRUFBa0U7QUFBekQsb0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIsdUVBQXNFO0FBQTdELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLCtFQUE4RTtBQUFyRSxnSUFBQSxzQkFBc0IsT0FBQTtBQUMvQixxRkFBb0Y7QUFBM0Usc0lBQUEseUJBQXlCLE9BQUE7QUFDbEMsK0RBQXlFO0FBQWhFLDJIQUFBLHlCQUF5QixPQUFBO0FBQ2xDLHVFQUFzRTtBQUE3RCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQiwyREFBcUU7QUFBNUQsdUhBQUEsdUJBQXVCLE9BQUE7QUFDaEMsK0RBQThEO0FBQXJELGdIQUFBLGNBQWMsT0FBQTtBQUN2Qiw4RUFBNkU7QUFBcEUsd0hBQUEsa0JBQWtCLE9BQUE7QUFDM0Isd0VBQXVFO0FBQTlELGtIQUFBLGVBQWUsT0FBQTtBQUN4QixrR0FBaUc7QUFBeEYsNElBQUEsNEJBQTRCLE9BQUE7QUFDckMsa0dBQWlHO0FBQXhGLDRJQUFBLDRCQUE0QixPQUFBO0FBQ3JDLHNFQUFxRTtBQUE1RCxnSEFBQSxjQUFjLE9BQUE7QUFDdkIsb0ZBQW1GO0FBQTFFLDhIQUFBLHFCQUFxQixPQUFBO0FBQzlCLDhFQUE2RTtBQUFwRSx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixvRkFBbUY7QUFBMUUsOEhBQUEscUJBQXFCLE9BQUE7QUFDOUIsc0VBQXFFO0FBQTVELGdIQUFBLGNBQWMsT0FBQTtBQUN2QixvRkFBbUY7QUFBMUUsOEhBQUEscUJBQXFCLE9BQUE7QUFDOUIsZ0ZBQStFO0FBQXRFLDBIQUFBLG1CQUFtQixPQUFBO0FBQzVCLHlFQUF3RTtBQUEvRCxzSUFBQSx5QkFBeUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIENvbnN0YW50cyBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCAqIGFzIEludGVyZmFjZSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgQWRkcmVzc0luaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL2FkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uJztcbmV4cG9ydCB7IEZsdXNoVG9rZW5UcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vZmx1c2hUb2tlblRyYW5zYWN0aW9uJztcbmV4cG9ydCB7IFRva2VuVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL3Rva2VuVHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgU3Rha2luZ1RyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9zdGFraW5nVHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vc3Rha2VDbGF1c2VUcmFuc2FjdGlvbic7XG5leHBvcnQgeyBEZWxlZ2F0ZUNsYXVzZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9kZWxlZ2F0ZUNsYXVzZVRyYW5zYWN0aW9uJztcbmV4cG9ydCB7IEV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL2V4aXREZWxlZ2F0aW9uJztcbmV4cG9ydCB7IEJ1cm5OZnRUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vYnVybk5mdFRyYW5zYWN0aW9uJztcbmV4cG9ydCB7IENsYWltUmV3YXJkc1RyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9jbGFpbVJld2FyZHMnO1xuZXhwb3J0IHsgTkZUVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL25mdFRyYW5zYWN0aW9uJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgQWRkcmVzc0luaXRpYWxpemF0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL2FkZHJlc3NJbml0aWFsaXphdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgRmx1c2hUb2tlblRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL2ZsdXNoVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgU3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9zdGFraW5nQnVpbGRlcic7XG5leHBvcnQgeyBTdGFrZUNsYXVzZVR4bkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9zdGFrZUNsYXVzZVR4bkJ1aWxkZXInO1xuZXhwb3J0IHsgRGVsZWdhdGVUeG5CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvZGVsZWdhdGVUeG5CdWlsZGVyJztcbmV4cG9ydCB7IE5GVFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL25mdFRyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBCdXJuTmZ0QnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL2J1cm5OZnRCdWlsZGVyJztcbmV4cG9ydCB7IEV4aXREZWxlZ2F0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL2V4aXREZWxlZ2F0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBDbGFpbVJld2FyZHNCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvY2xhaW1SZXdhcmRzQnVpbGRlcic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmV4cG9ydCB7IENvbnN0YW50cywgVXRpbHMsIEludGVyZmFjZSB9O1xuIl19
@@ -0,0 +1,27 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { Transaction as VetTransaction } from '@vechain/sdk-core';
3
+ import { Transaction } from './transaction';
4
+ import { VetTransactionData } from '../iface';
5
+ export declare class DelegateClauseTransaction extends Transaction {
6
+ private _stakingContractAddress;
7
+ private _tokenId;
8
+ private _delegateForever;
9
+ constructor(_coinConfig: Readonly<CoinConfig>);
10
+ get stakingContractAddress(): string;
11
+ set stakingContractAddress(address: string);
12
+ get tokenId(): number;
13
+ set tokenId(tokenId: number);
14
+ get delegateForever(): boolean;
15
+ set delegateForever(delegateForever: boolean);
16
+ buildClauses(): void;
17
+ /**
18
+ * Encodes delegation transaction data using ethereumjs-abi for delegate method
19
+ *
20
+ * @param {number} tokenId - The Token ID for delegation
21
+ * @returns {string} - The encoded transaction data
22
+ */
23
+ getDelegateData(levelId: number, delegateForever?: boolean): string;
24
+ toJson(): VetTransactionData;
25
+ fromDeserializedSignedTransaction(signedTx: VetTransaction): void;
26
+ }
27
+ //# sourceMappingURL=delegateClauseTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegateClauseTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/delegateClauseTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,IAAI,cAAc,EAAa,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAO9C,qBAAa,yBAA0B,SAAQ,WAAW;IACxD,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,gBAAgB,CAAQ;gBAEpB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,IAAI,sBAAsB,IAAI,MAAM,CAEnC;IAED,IAAI,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAEzC;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAE1B;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,eAAe,CAAC,eAAe,EAAE,OAAO,EAE3C;IAED,YAAY,IAAI,IAAI;IA+BpB;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,UAAO,GAAG,MAAM;IAWhE,MAAM,IAAI,kBAAkB;IAuB5B,iCAAiC,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;CA4DlE"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DelegateClauseTransaction = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const sdk_core_2 = require("@vechain/sdk-core");
9
+ const transaction_1 = require("./transaction");
10
+ const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
11
+ const utils_1 = __importDefault(require("../utils"));
12
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
13
+ const ethereumjs_util_1 = require("ethereumjs-util");
14
+ const constants_1 = require("../constants");
15
+ class DelegateClauseTransaction extends transaction_1.Transaction {
16
+ constructor(_coinConfig) {
17
+ super(_coinConfig);
18
+ this._delegateForever = true;
19
+ this._type = sdk_core_1.TransactionType.StakingDelegate;
20
+ }
21
+ get stakingContractAddress() {
22
+ return this._stakingContractAddress;
23
+ }
24
+ set stakingContractAddress(address) {
25
+ this._stakingContractAddress = address;
26
+ }
27
+ get tokenId() {
28
+ return this._tokenId;
29
+ }
30
+ set tokenId(tokenId) {
31
+ this._tokenId = tokenId;
32
+ }
33
+ get delegateForever() {
34
+ return this._delegateForever;
35
+ }
36
+ set delegateForever(delegateForever) {
37
+ this._delegateForever = delegateForever;
38
+ }
39
+ buildClauses() {
40
+ if (!this.stakingContractAddress) {
41
+ throw new Error('Staking contract address is not set');
42
+ }
43
+ utils_1.default.validateDelegationContractAddress(this.stakingContractAddress, this._coinConfig);
44
+ if (this.tokenId === undefined || this.tokenId === null) {
45
+ throw new Error('Token ID is not set');
46
+ }
47
+ const data = this.getDelegateData(this.tokenId, this.delegateForever);
48
+ this._transactionData = data;
49
+ // Create the clause for delegation
50
+ this._clauses = [
51
+ {
52
+ to: this.stakingContractAddress,
53
+ value: constants_1.ZERO_VALUE_AMOUNT,
54
+ data: this._transactionData,
55
+ },
56
+ ];
57
+ // Set recipients based on the clauses
58
+ this._recipients = [
59
+ {
60
+ address: this.stakingContractAddress,
61
+ amount: constants_1.ZERO_VALUE_AMOUNT,
62
+ },
63
+ ];
64
+ }
65
+ /**
66
+ * Encodes delegation transaction data using ethereumjs-abi for delegate method
67
+ *
68
+ * @param {number} tokenId - The Token ID for delegation
69
+ * @returns {string} - The encoded transaction data
70
+ */
71
+ getDelegateData(levelId, delegateForever = true) {
72
+ const methodName = 'delegate';
73
+ const types = ['uint256', 'bool'];
74
+ const params = [levelId, delegateForever];
75
+ const method = ethereumjs_abi_1.default.methodID(methodName, types);
76
+ const args = ethereumjs_abi_1.default.rawEncode(types, params);
77
+ return (0, ethereumjs_util_1.addHexPrefix)(Buffer.concat([method, args]).toString('hex'));
78
+ }
79
+ toJson() {
80
+ const json = {
81
+ id: this.id,
82
+ chainTag: this.chainTag,
83
+ blockRef: this.blockRef,
84
+ expiration: this.expiration,
85
+ gasPriceCoef: this.gasPriceCoef,
86
+ gas: this.gas,
87
+ dependsOn: this.dependsOn,
88
+ nonce: this.nonce,
89
+ data: this.transactionData,
90
+ value: constants_1.ZERO_VALUE_AMOUNT,
91
+ sender: this.sender,
92
+ to: this.stakingContractAddress,
93
+ stakingContractAddress: this.stakingContractAddress,
94
+ amountToStake: constants_1.ZERO_VALUE_AMOUNT,
95
+ nftTokenId: this.tokenId,
96
+ autorenew: this.delegateForever,
97
+ };
98
+ return json;
99
+ }
100
+ fromDeserializedSignedTransaction(signedTx) {
101
+ try {
102
+ if (!signedTx || !signedTx.body) {
103
+ throw new sdk_core_1.InvalidTransactionError('Invalid transaction: missing transaction body');
104
+ }
105
+ // Store the raw transaction
106
+ this.rawTransaction = signedTx;
107
+ // Set transaction body properties
108
+ const body = signedTx.body;
109
+ this.chainTag = typeof body.chainTag === 'number' ? body.chainTag : 0;
110
+ this.blockRef = body.blockRef || '0x0';
111
+ this.expiration = typeof body.expiration === 'number' ? body.expiration : 64;
112
+ this.clauses = body.clauses || [];
113
+ this.gasPriceCoef = typeof body.gasPriceCoef === 'number' ? body.gasPriceCoef : 128;
114
+ this.gas = typeof body.gas === 'number' ? body.gas : Number(body.gas) || 0;
115
+ this.dependsOn = body.dependsOn || null;
116
+ this.nonce = String(body.nonce);
117
+ // Set delegation-specific properties
118
+ if (body.clauses.length > 0) {
119
+ const clause = body.clauses[0];
120
+ if (clause.to) {
121
+ this.stakingContractAddress = clause.to;
122
+ }
123
+ if (clause.data) {
124
+ this.transactionData = clause.data;
125
+ const decoded = utils_1.default.decodeDelegateClauseData(clause.data);
126
+ this.tokenId = decoded.tokenId;
127
+ this.delegateForever = decoded.delegateForever;
128
+ }
129
+ }
130
+ // Set recipients from clauses
131
+ this.recipients = body.clauses.map((clause) => ({
132
+ address: (clause.to || '0x0').toString().toLowerCase(),
133
+ amount: new bignumber_js_1.default(clause.value || 0).toString(),
134
+ }));
135
+ this.loadInputsAndOutputs();
136
+ // Set sender address
137
+ if (signedTx.signature && signedTx.origin) {
138
+ this.sender = signedTx.origin.toString().toLowerCase();
139
+ }
140
+ // Set signatures if present
141
+ if (signedTx.signature) {
142
+ // First signature is sender's signature
143
+ this.senderSignature = Buffer.from(signedTx.signature.slice(0, sdk_core_2.Secp256k1.SIGNATURE_LENGTH));
144
+ // If there's additional signature data, it's the fee payer's signature
145
+ if (signedTx.signature.length > sdk_core_2.Secp256k1.SIGNATURE_LENGTH) {
146
+ this.feePayerSignature = Buffer.from(signedTx.signature.slice(sdk_core_2.Secp256k1.SIGNATURE_LENGTH));
147
+ }
148
+ }
149
+ }
150
+ catch (e) {
151
+ throw new sdk_core_1.InvalidTransactionError(`Failed to deserialize transaction: ${e.message}`);
152
+ }
153
+ }
154
+ }
155
+ exports.DelegateClauseTransaction = DelegateClauseTransaction;
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGVDbGF1c2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb24vZGVsZWdhdGVDbGF1c2VUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBZ0Y7QUFFaEYsZ0RBQTZFO0FBQzdFLCtDQUE0QztBQUU1QyxvRUFBeUM7QUFDekMscURBQTZCO0FBQzdCLGdFQUFxQztBQUNyQyxxREFBK0M7QUFDL0MsNENBQWlEO0FBRWpELE1BQWEseUJBQTBCLFNBQVEseUJBQVc7SUFLeEQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIYixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFJOUIsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBZSxDQUFDLGVBQWUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksc0JBQXNCLENBQUMsT0FBZTtRQUN4QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsT0FBTyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE9BQWU7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsZUFBd0I7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElB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QUFTLEVBQUUsQ0FBQztnQkFDdkIsd0NBQXdDO2dCQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLG9CQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2dCQUU1Rix1RUFBdUU7Z0JBQ3ZFLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsb0JBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUMzRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxvQkFBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFDN0YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXJLRCw4REFxS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUsIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gYXMgVmV0VHJhbnNhY3Rpb24sIFNlY3AyNTZrMSB9IGZyb20gJ0B2ZWNoYWluL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBWZXRUcmFuc2FjdGlvbkRhdGEgfSBmcm9tICcuLi9pZmFjZSc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IGFkZEhleFByZWZpeCB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5pbXBvcnQgeyBaRVJPX1ZBTFVFX0FNT1VOVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBEZWxlZ2F0ZUNsYXVzZVRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9zdGFraW5nQ29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG4gIHByaXZhdGUgX3Rva2VuSWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZGVsZWdhdGVGb3JldmVyID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVsZWdhdGU7XG4gIH1cblxuICBnZXQgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGFraW5nQ29udHJhY3RBZGRyZXNzO1xuICB9XG5cbiAgc2V0IHN0YWtpbmdDb250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cblxuICBnZXQgdG9rZW5JZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90b2tlbklkO1xuICB9XG5cbiAgc2V0IHRva2VuSWQodG9rZW5JZDogbnVtYmVyKSB7XG4gICAgdGhpcy5fdG9rZW5JZCA9IHRva2VuSWQ7XG4gIH1cblxuICBnZXQgZGVsZWdhdGVGb3JldmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZUZvcmV2ZXI7XG4gIH1cblxuICBzZXQgZGVsZWdhdGVGb3JldmVyKGRlbGVnYXRlRm9yZXZlcjogYm9vbGVhbikge1xuICAgIHRoaXMuX2RlbGVnYXRlRm9yZXZlciA9IGRlbGVnYXRlRm9yZXZlcjtcbiAgfVxuXG4gIGJ1aWxkQ2xhdXNlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgaXMgbm90IHNldCcpO1xuICAgIH1cblxuICAgIHV0aWxzLnZhbGlkYXRlRGVsZWdhdGlvbkNvbnRyYWN0QWRkcmVzcyh0aGlzLnN0YWtpbmdDb250cmFjdEFkZHJlc3MsIHRoaXMuX2NvaW5Db25maWcpO1xuXG4gICAgaWYgKHRoaXMudG9rZW5JZCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMudG9rZW5JZCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBJRCBpcyBub3Qgc2V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0RGVsZWdhdGVEYXRhKHRoaXMudG9rZW5JZCwgdGhpcy5kZWxlZ2F0ZUZvcmV2ZXIpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uRGF0YSA9IGRhdGE7XG5cbiAgICAvLyBDcmVhdGUgdGhlIGNsYXVzZSBmb3IgZGVsZWdhdGlvblxuICAgIHRoaXMuX2NsYXVzZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHRvOiB0aGlzLnN0YWtpbmdDb250cmFjdEFkZHJlc3MsXG4gICAgICAgIHZhbHVlOiBaRVJPX1ZBTFVFX0FNT1VOVCxcbiAgICAgICAgZGF0YTogdGhpcy5fdHJhbnNhY3Rpb25EYXRhLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgLy8gU2V0IHJlY2lwaWVudHMgYmFzZWQgb24gdGhlIGNsYXVzZXNcbiAgICB0aGlzLl9yZWNpcGllbnRzID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiB0aGlzLnN0YWtpbmdDb250cmFjdEFkZHJlc3MsXG4gICAgICAgIGFtb3VudDogWkVST19WQUxVRV9BTU9VTlQsXG4gICAgICB9LFxuICAgIF07XG4gIH1cbiAgLyoqXG4gICAqIEVuY29kZXMgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiBkYXRhIHVzaW5nIGV0aGVyZXVtanMtYWJpIGZvciBkZWxlZ2F0ZSBtZXRob2RcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRva2VuSWQgLSBUaGUgVG9rZW4gSUQgZm9yIGRlbGVnYXRpb25cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgZW5jb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBnZXREZWxlZ2F0ZURhdGEobGV2ZWxJZDogbnVtYmVyLCBkZWxlZ2F0ZUZvcmV2ZXIgPSB0cnVlKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gJ2RlbGVnYXRlJztcbiAgICBjb25zdCB0eXBlcyA9IFsndWludDI1NicsICdib29sJ107XG4gICAgY29uc3QgcGFyYW1zID0gW2xldmVsSWQsIGRlbGVnYXRlRm9yZXZlcl07XG5cbiAgICBjb25zdCBtZXRob2QgPSBFdGhlcmV1bUFiaS5tZXRob2RJRChtZXRob2ROYW1lLCB0eXBlcyk7XG4gICAgY29uc3QgYXJncyA9IEV0aGVyZXVtQWJpLnJhd0VuY29kZSh0eXBlcywgcGFyYW1zKTtcblxuICAgIHJldHVybiBhZGRIZXhQcmVmaXgoQnVmZmVyLmNvbmNhdChbbWV0aG9kLCBhcmdzXSkudG9TdHJpbmcoJ2hleCcpKTtcbiAgfVxuXG4gIHRvSnNvbigpOiBWZXRUcmFuc2FjdGlvbkRhdGEge1xuICAgIGNvbnN0IGpzb246IFZldFRyYW5zYWN0aW9uRGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgY2hhaW5UYWc6IHRoaXMuY2hhaW5UYWcsXG4gICAgICBibG9ja1JlZjogdGhpcy5ibG9ja1JlZixcbiAgICAgIGV4cGlyYXRpb246IHRoaXMuZXhwaXJhdGlvbixcbiAgICAgIGdhc1ByaWNlQ29lZjogdGhpcy5nYXNQcmljZUNvZWYsXG4gICAgICBnYXM6IHRoaXMuZ2FzLFxuICAgICAgZGVwZW5kc09uOiB0aGlzLmRlcGVuZHNPbixcbiAgICAgIG5vbmNlOiB0aGlzLm5vbmNlLFxuICAgICAgZGF0YTogdGhpcy50cmFuc2FjdGlvbkRhdGEsXG4gICAgICB2YWx1ZTogWkVST19WQUxVRV9BTU9VTlQsXG4gICAgICBzZW5kZXI6IHRoaXMuc2VuZGVyLFxuICAgICAgdG86IHRoaXMuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyxcbiAgICAgIHN0YWtpbmdDb250cmFjdEFkZHJlc3M6IHRoaXMuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyxcbiAgICAgIGFtb3VudFRvU3Rha2U6IFpFUk9fVkFMVUVfQU1PVU5ULFxuICAgICAgbmZ0VG9rZW5JZDogdGhpcy50b2tlbklkLFxuICAgICAgYXV0b3JlbmV3OiB0aGlzLmRlbGVnYXRlRm9yZXZlcixcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBmcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHg6IFZldFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2lnbmVkVHggfHwgIXNpZ25lZFR4LmJvZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHRyYW5zYWN0aW9uIGJvZHknKTtcbiAgICAgIH1cblxuICAgICAgLy8gU3RvcmUgdGhlIHJhdyB0cmFuc2FjdGlvblxuICAgICAgdGhpcy5yYXdUcmFuc2FjdGlvbiA9IHNpZ25lZFR4O1xuXG4gICAgICAvLyBTZXQgdHJhbnNhY3Rpb24gYm9keSBwcm9wZXJ0aWVzXG4gICAgICBjb25zdCBib2R5ID0gc2lnbmVkVHguYm9keTtcbiAgICAgIHRoaXMuY2hhaW5UYWcgPSB0eXBlb2YgYm9keS5jaGFpblRhZyA9PT0gJ251bWJlcicgPyBib2R5LmNoYWluVGFnIDogMDtcbiAgICAgIHRoaXMuYmxvY2tSZWYgPSBib2R5LmJsb2NrUmVmIHx8ICcweDAnO1xuICAgICAgdGhpcy5leHBpcmF0aW9uID0gdHlwZW9mIGJvZHkuZXhwaXJhdGlvbiA9PT0gJ251bWJlcicgPyBib2R5LmV4cGlyYXRpb24gOiA2NDtcbiAgICAgIHRoaXMuY2xhdXNlcyA9IGJvZHkuY2xhdXNlcyB8fCBbXTtcbiAgICAgIHRoaXMuZ2FzUHJpY2VDb2VmID0gdHlwZW9mIGJvZHkuZ2FzUHJpY2VDb2VmID09PSAnbnVtYmVyJyA/IGJvZHkuZ2FzUHJpY2VDb2VmIDogMTI4O1xuICAgICAgdGhpcy5nYXMgPSB0eXBlb2YgYm9keS5nYXMgPT09ICdudW1iZXInID8gYm9keS5nYXMgOiBOdW1iZXIoYm9keS5nYXMpIHx8IDA7XG4gICAgICB0aGlzLmRlcGVuZHNPbiA9IGJvZHkuZGVwZW5kc09uIHx8IG51bGw7XG4gICAgICB0aGlzLm5vbmNlID0gU3RyaW5nKGJvZHkubm9uY2UpO1xuXG4gICAgICAvLyBTZXQgZGVsZWdhdGlvbi1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgICBpZiAoYm9keS5jbGF1c2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgY2xhdXNlID0gYm9keS5jbGF1c2VzWzBdO1xuICAgICAgICBpZiAoY2xhdXNlLnRvKSB7XG4gICAgICAgICAgdGhpcy5zdGFraW5nQ29udHJhY3RBZGRyZXNzID0gY2xhdXNlLnRvO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbGF1c2UuZGF0YSkge1xuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25EYXRhID0gY2xhdXNlLmRhdGE7XG4gICAgICAgICAgY29uc3QgZGVjb2RlZCA9IHV0aWxzLmRlY29kZURlbGVnYXRlQ2xhdXNlRGF0YShjbGF1c2UuZGF0YSk7XG4gICAgICAgICAgdGhpcy50b2tlbklkID0gZGVjb2RlZC50b2tlbklkO1xuICAgICAgICAgIHRoaXMuZGVsZWdhdGVGb3JldmVyID0gZGVjb2RlZC5kZWxlZ2F0ZUZvcmV2ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHJlY2lwaWVudHMgZnJvbSBjbGF1c2VzXG4gICAgICB0aGlzLnJlY2lwaWVudHMgPSBib2R5LmNsYXVzZXMubWFwKChjbGF1c2UpID0+ICh7XG4gICAgICAgIGFkZHJlc3M6IChjbGF1c2UudG8gfHwgJzB4MCcpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgYW1vdW50OiBuZXcgQmlnTnVtYmVyKGNsYXVzZS52YWx1ZSB8fCAwKS50b1N0cmluZygpLFxuICAgICAgfSkpO1xuICAgICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuXG4gICAgICAvLyBTZXQgc2VuZGVyIGFkZHJlc3NcbiAgICAgIGlmIChzaWduZWRUeC5zaWduYXR1cmUgJiYgc2lnbmVkVHgub3JpZ2luKSB7XG4gICAgICAgIHRoaXMuc2VuZGVyID0gc2lnbmVkVHgub3JpZ2luLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHNpZ25hdHVyZXMgaWYgcHJlc2VudFxuICAgICAgaWYgKHNpZ25lZFR4LnNpZ25hdHVyZSkge1xuICAgICAgICAvLyBGaXJzdCBzaWduYXR1cmUgaXMgc2VuZGVyJ3Mgc2lnbmF0dXJlXG4gICAgICAgIHRoaXMuc2VuZGVyU2lnbmF0dXJlID0gQnVmZmVyLmZyb20oc2lnbmVkVHguc2lnbmF0dXJlLnNsaWNlKDAsIFNlY3AyNTZrMS5TSUdOQVRVUkVfTEVOR1RIKSk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUncyBhZGRpdGlvbmFsIHNpZ25hdHVyZSBkYXRhLCBpdCdzIHRoZSBmZWUgcGF5ZXIncyBzaWduYXR1cmVcbiAgICAgICAgaWYgKHNpZ25lZFR4LnNpZ25hdHVyZS5sZW5ndGggPiBTZWNwMjU2azEuU0lHTkFUVVJFX0xFTkdUSCkge1xuICAgICAgICAgIHRoaXMuZmVlUGF5ZXJTaWduYXR1cmUgPSBCdWZmZXIuZnJvbShzaWduZWRUeC5zaWduYXR1cmUuc2xpY2UoU2VjcDI1NmsxLlNJR05BVFVSRV9MRU5HVEgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgRmFpbGVkIHRvIGRlc2VyaWFsaXplIHRyYW5zYWN0aW9uOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAA2B,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACvH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAEL,iBAAiB,EACjB,WAAW,IAAI,cAAc,EAG9B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAIzE,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC;IAC1C,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IAC9C,SAAS,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IACxC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,WAAW,CAAU;gBAEjB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAiB7C,IAAW,EAAE,IAAI,MAAM,CAGtB;IAED,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,cAAc,EAEvC;IAED,IAAI,IAAI,IAAI,eAAe,CAE1B;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,eAAe,EAE7B;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAEzB;IAED,IAAI,eAAe,IAAI,UAAU,GAAG,SAAS,CAM5C;IAED,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAE9B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,EAElC;IAED,IAAI,iBAAiB,IAAI,UAAU,GAAG,SAAS,CAM9C;IAED,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAEhC;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,EAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,EAEvB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,CAAC,GAAG,EAAE,MAAM,EAEzB;IAED,IAAI,UAAU,IAAI,oBAAoB,EAAE,CAEvC;IAED,IAAI,UAAU,CAAC,UAAU,EAAE,oBAAoB,EAAE,EAEhD;IAED,IAAI,OAAO,IAAI,iBAAiB,EAAE,CAEjC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAEvC;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,EAE5B;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,EAEhB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAE/B;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAElB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAE3B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,eAAe,CAAC,eAAe,EAAE,MAAM,EAE1C;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,UAAU,CAAC,UAAU,EAAE,OAAO,EAEjC;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CASxB;IAED;;;;;OAKG;IACH,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAO3B;IAED,kBAAkB;IAClB,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAOjD,YAAY,IAAI,IAAI;IAQpB;;;;OAIG;IACH,iCAAiC,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IA8CjE,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3C,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;OAGG;IACH,SAAS,CAAC,yBAAyB,IAAI,IAAI;cAqC3B,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BpD,oBAAoB,IAAI,IAAI;IAqB5B,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAUhD,kBAAkB;IAClB,MAAM,IAAI,kBAAkB;IAkBrB,MAAM,IAAI,MAAM;IAQvB,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,SAAS,IAAI,MAAM;IA+BnB,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAc5D,kBAAkB,IAAI,yBAAyB;CA6BhD"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/transaction.ts"],"names":[],"mappings":"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"}
@@ -345,6 +345,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
345
345
  this.type === sdk_core_1.TransactionType.SendNFT ||
346
346
  this.type === sdk_core_1.TransactionType.ContractCall ||
347
347
  this.type === sdk_core_1.TransactionType.StakingActivate ||
348
+ this.type === sdk_core_1.TransactionType.StakingDelegate ||
348
349
  this.type === sdk_core_1.TransactionType.StakingUnlock ||
349
350
  this.type === sdk_core_1.TransactionType.StakingWithdraw ||
350
351
  this.type === sdk_core_1.TransactionType.StakingClaim) {
@@ -480,4 +481,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
480
481
  }
481
482
  }
482
483
  exports.Transaction = Transaction;
483
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdFQUFxQztBQUNyQyxtREFBdUg7QUFFdkgsZ0RBTTJCO0FBQzNCLHVFQUF5RDtBQUN6RCxxREFBNkI7QUFHN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRXRCLE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBb0I5QyxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsMEJBQTBCO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLEVBQUU7UUFDWCxJQUFJLENBQUMseUJB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SUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXBoQkQsa0NBb2hCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25UeXBlLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25SZWNpcGllbnQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkJvZHksXG4gIFRyYW5zYWN0aW9uQ2xhdXNlLFxuICBUcmFuc2FjdGlvbiBhcyBWZXRUcmFuc2FjdGlvbixcbiAgU2VjcDI1NmsxLFxuICBIZXhVSW50LFxufSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBuY191dGlscyBmcm9tICdAbm9ibGUvY3VydmVzL2Fic3RyYWN0L3V0aWxzJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBWZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBWZXRUcmFuc2FjdGlvbkRhdGEgfSBmcm9tICcuLi9pZmFjZSc7XG5cbmNvbnN0IGdhc1ByaWNlID0gMWUxMztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9yYXdUcmFuc2FjdGlvbjogVmV0VHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX3JlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIHByb3RlY3RlZCBfY2xhdXNlczogVHJhbnNhY3Rpb25DbGF1c2VbXTtcbiAgcHJvdGVjdGVkIF9jb250cmFjdDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uRGF0YTogc3RyaW5nO1xuICBwcml2YXRlIF9jaGFpblRhZzogbnVtYmVyO1xuICBwcml2YXRlIF9ibG9ja1JlZjogc3RyaW5nO1xuICBwcml2YXRlIF9leHBpcmF0aW9uOiBudW1iZXI7XG4gIHByaXZhdGUgX2dhc1ByaWNlQ29lZjogbnVtYmVyO1xuICBwcml2YXRlIF9nYXM6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZGVwZW5kc09uOiBzdHJpbmcgfCBudWxsO1xuICBwcml2YXRlIF9ub25jZTogc3RyaW5nO1xuICBwcml2YXRlIF9zZW5kZXI6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VuZGVyU2lnbmF0dXJlOiBCdWZmZXIgfCBudWxsO1xuICBwcml2YXRlIF9mZWVQYXllckFkZHJlc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBfZmVlUGF5ZXJTaWduYXR1cmU6IEJ1ZmZlciB8IG51bGw7XG4gIHByaXZhdGUgX2lzUmVjb3Zlcnk6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICB0aGlzLl9jaGFpblRhZyA9IDB4Mjc7IC8vIEluaXRpYWxpemUgdG8gMzkgKDB4MjcpXG4gICAgdGhpcy5fYmxvY2tSZWYgPSAnMHgwJztcbiAgICB0aGlzLl9leHBpcmF0aW9uID0gNjQ7XG4gICAgdGhpcy5fY2xhdXNlcyA9IFtdO1xuICAgIHRoaXMuX2dhc1ByaWNlQ29lZiA9IDEyODtcbiAgICB0aGlzLl9nYXMgPSAwO1xuICAgIHRoaXMuX2RlcGVuZHNPbiA9IG51bGw7XG4gICAgdGhpcy5fbm9uY2UgPSBTdHJpbmcoMCk7XG4gICAgdGhpcy5fcmVjaXBpZW50cyA9IFtdO1xuICAgIHRoaXMuX3NlbmRlclNpZ25hdHVyZSA9IG51bGw7XG4gICAgdGhpcy5fZmVlUGF5ZXJTaWduYXR1cmUgPSBudWxsO1xuICAgIHRoaXMuX2lzUmVjb3ZlcnkgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICB0aGlzLmdlbmVyYXRlVHhuSWRBbmRTZXRTZW5kZXIoKTtcbiAgICByZXR1cm4gdGhpcy5faWQgPz8gJ1VOQVZBSUxBQkxFJztcbiAgfVxuXG4gIGdldCByYXdUcmFuc2FjdGlvbigpOiBWZXRUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jhd1RyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IHJhd1RyYW5zYWN0aW9uKHJhd1R4OiBWZXRUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3Jhd1RyYW5zYWN0aW9uID0gcmF3VHg7XG4gIH1cblxuICBnZXQgdHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG5cbiAgc2V0IHR5cGUodHlwZTogVHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXQgc2VuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRlcjtcbiAgfVxuXG4gIHNldCBzZW5kZXIoYWRkcmVzczogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2VuZGVyID0gYWRkcmVzcztcbiAgfVxuXG4gIGdldCBzZW5kZXJTaWduYXR1cmUoKTogVWludDhBcnJheSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX3NlbmRlclNpZ25hdHVyZSkge1xuICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHRoaXMuX3NlbmRlclNpZ25hdHVyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgc2V0IHNlbmRlclNpZ25hdHVyZShzaWc6IEJ1ZmZlcikge1xuICAgIHRoaXMuX3NlbmRlclNpZ25hdHVyZSA9IHNpZztcbiAgfVxuXG4gIGdldCBmZWVQYXllckFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmVlUGF5ZXJBZGRyZXNzO1xuICB9XG5cbiAgc2V0IGZlZVBheWVyQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9mZWVQYXllckFkZHJlc3MgPSBhZGRyZXNzO1xuICB9XG5cbiAgZ2V0IGZlZVBheWVyU2lnbmF0dXJlKCk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl9mZWVQYXllclNpZ25hdHVyZSkge1xuICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHRoaXMuX2ZlZVBheWVyU2lnbmF0dXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBzZXQgZmVlUGF5ZXJTaWduYXR1cmUoc2lnOiBCdWZmZXIpIHtcbiAgICB0aGlzLl9mZWVQYXllclNpZ25hdHVyZSA9IHNpZztcbiAgfVxuXG4gIGdldCBjaGFpblRhZygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jaGFpblRhZztcbiAgfVxuXG4gIHNldCBjaGFpblRhZyh0YWc6IG51bWJlcikge1xuICAgIHRoaXMuX2NoYWluVGFnID0gdGFnO1xuICB9XG5cbiAgZ2V0IGJsb2NrUmVmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jsb2NrUmVmO1xuICB9XG5cbiAgc2V0IGJsb2NrUmVmKHJlZjogc3RyaW5nKSB7XG4gICAgdGhpcy5fYmxvY2tSZWYgPSByZWY7XG4gIH1cblxuICBnZXQgZXhwaXJhdGlvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9leHBpcmF0aW9uO1xuICB9XG5cbiAgc2V0IGV4cGlyYXRpb24oZXhwOiBudW1iZXIpIHtcbiAgICB0aGlzLl9leHBpcmF0aW9uID0gZXhwO1xuICB9XG5cbiAgZ2V0IHJlY2lwaWVudHMoKTogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlY2lwaWVudHM7XG4gIH1cblxuICBzZXQgcmVjaXBpZW50cyhyZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdKSB7XG4gICAgdGhpcy5fcmVjaXBpZW50cyA9IHJlY2lwaWVudHM7XG4gIH1cblxuICBnZXQgY2xhdXNlcygpOiBUcmFuc2FjdGlvbkNsYXVzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fY2xhdXNlcztcbiAgfVxuXG4gIHNldCBjbGF1c2VzKGNsYXVzZXM6IFRyYW5zYWN0aW9uQ2xhdXNlW10pIHtcbiAgICB0aGlzLl9jbGF1c2VzID0gY2xhdXNlcztcbiAgfVxuXG4gIGdldCBnYXNQcmljZUNvZWYoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZ2FzUHJpY2VDb2VmO1xuICB9XG5cbiAgc2V0IGdhc1ByaWNlQ29lZihjb2VmOiBudW1iZXIpIHtcbiAgICB0aGlzLl9nYXNQcmljZUNvZWYgPSBjb2VmO1xuICB9XG5cbiAgZ2V0IGdhcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYXM7XG4gIH1cblxuICBzZXQgZ2FzKGc6IG51bWJlcikge1xuICAgIHRoaXMuX2dhcyA9IGc7XG4gIH1cblxuICBnZXQgZGVwZW5kc09uKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kZXBlbmRzT247XG4gIH1cblxuICBzZXQgZGVwZW5kc09uKGRlcDogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX2RlcGVuZHNPbiA9IGRlcDtcbiAgfVxuXG4gIGdldCBub25jZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ub25jZTtcbiAgfVxuXG4gIHNldCBub25jZShuOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9ub25jZSA9IG47XG4gIH1cblxuICBnZXQgY29udHJhY3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29udHJhY3Q7XG4gIH1cblxuICBzZXQgY29udHJhY3QoYWRkcmVzczogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29udHJhY3QgPSBhZGRyZXNzO1xuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uRGF0YSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbkRhdGE7XG4gIH1cblxuICBzZXQgdHJhbnNhY3Rpb25EYXRhKHRyYW5zYWN0aW9uRGF0YTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb25EYXRhID0gdHJhbnNhY3Rpb25EYXRhO1xuICB9XG5cbiAgZ2V0IGlzUmVjb3ZlcnkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzUmVjb3Zlcnk7XG4gIH1cblxuICBzZXQgaXNSZWNvdmVyeShpc1JlY292ZXJ5OiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNSZWNvdmVyeSA9IGlzUmVjb3Zlcnk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBzaWduYXR1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYW5zYWN0aW9uXG4gICAqIFJlcXVpcmVkIGJ5IEJhc2VUcmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0IHNpZ25hdHVyZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc2lnczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5fc2VuZGVyU2lnbmF0dXJlKSB7XG4gICAgICBzaWdzLnB1c2goQnVmZmVyLmZyb20odGhpcy5fc2VuZGVyU2lnbmF0dXJlKS50b1N0cmluZygnaGV4JykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmVlUGF5ZXJTaWduYXR1cmUpIHtcbiAgICAgIHNpZ3MucHVzaChCdWZmZXIuZnJvbSh0aGlzLl9mZWVQYXllclNpZ25hdHVyZSkudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpZ3M7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHNpZ25hdHVyZXMgZm9yIHRoaXMgdHJhbnNhY3Rpb25cbiAgICogUmVxdWlyZWQgYnkgQmFzZVRyYW5zYWN0aW9uXG4gICAqIE5vdGU6IFRoaXMgaXMgbWFpbmx5IGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGJhc2UgY2xhc3MuXG4gICAqIFByZWZlciB1c2luZyBzZW5kZXJTaWduYXR1cmUgYW5kIGZlZVBheWVyU2lnbmF0dXJlIGRpcmVjdGx5LlxuICAgKi9cbiAgc2V0IHNpZ25hdHVyZShzaWdzOiBzdHJpbmdbXSkge1xuICAgIGlmIChzaWdzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3NlbmRlclNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKHNpZ3NbMF0sICdoZXgnKTtcbiAgICB9XG4gICAgaWYgKHNpZ3MubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5fZmVlUGF5ZXJTaWduYXR1cmUgPSBCdWZmZXIuZnJvbShzaWdzWzFdLCAnaGV4Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhpcyBpcyBhIGZlZSBkZWxlZ2F0ZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIGlzRmVlRGVsZWdhdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2ZlZVBheWVyQWRkcmVzcztcbiAgfVxuXG4gIGFkZFJlY2lwaWVudHMoY2xhdXNlczogVHJhbnNhY3Rpb25DbGF1c2VbXSk6IHZvaWQge1xuICAgIHRoaXMuX3JlY2lwaWVudHMgPSBjbGF1c2VzLm1hcCgoY2xhdXNlKSA9PiAoe1xuICAgICAgYWRkcmVzczogKGNsYXVzZS50byB8fCAnMHgwJykudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgYW1vdW50OiAoY2xhdXNlLnZhbHVlIHx8ICcwJykudG9TdHJpbmcoKSxcbiAgICB9KSk7XG4gIH1cblxuICBidWlsZENsYXVzZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xhdXNlcyA9IHRoaXMuX3JlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+ICh7XG4gICAgICB0bzogcmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICB2YWx1ZTogcmVjaXBpZW50LmFtb3VudCxcbiAgICAgIGRhdGE6ICcweCcsXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvcHVsYXRlcyB0aGUgdHJhbnNhY3Rpb24gb2JqZWN0IHdpdGggZGF0YSBmcm9tIGEgZGVzZXJpYWxpemVkIFZlQ2hhaW4gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHNpZ25lZFR4IC0gVGhlIGRlc2VyaWFsaXplZCBWZUNoYWluIHRyYW5zYWN0aW9uIGNvbnRhaW5pbmcgYm9keSwgc2lnbmF0dXJlcywgYW5kIG90aGVyIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHRocm93cyB7SW52YWxpZFRyYW5zYWN0aW9uRXJyb3J9IFdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIGludmFsaWQgb3IgbWlzc2luZyByZXF1aXJlZCBkYXRhXG4gICAqL1xuICBmcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHg6IFZldFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2lnbmVkVHggfHwgIXNpZ25lZFR4LmJvZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHRyYW5zYWN0aW9uIGJvZHknKTtcbiAgICAgIH1cblxuICAgICAgLy8gU3RvcmUgdGhlIHJhdyB0cmFuc2FjdGlvblxuICAgICAgdGhpcy5yYXdUcmFuc2FjdGlvbiA9IHNpZ25lZFR4O1xuXG4gICAgICAvLyBTZXQgdHJhbnNhY3Rpb24gYm9keSBwcm9wZXJ0aWVzXG4gICAgICBjb25zdCBib2R5ID0gc2lnbmVkVHguYm9keTtcbiAgICAgIHRoaXMuY2hhaW5UYWcgPSB0eXBlb2YgYm9keS5jaGFpblRhZyA9PT0gJ251bWJlcicgPyBib2R5LmNoYWluVGFnIDogMDtcbiAgICAgIHRoaXMuYmxvY2tSZWYgPSBib2R5LmJsb2NrUmVmIHx8ICcweDAnO1xuICAgICAgdGhpcy5leHBpcmF0aW9uID0gdHlwZW9mIGJvZHkuZXhwaXJhdGlvbiA9PT0gJ251bWJlcicgPyBib2R5LmV4cGlyYXRpb24gOiA2NDtcbiAgICAgIHRoaXMuY2xhdXNlcyA9IGJvZHkuY2xhdXNlcyB8fCBbXTtcbiAgICAgIHRoaXMuZ2FzUHJpY2VDb2VmID0gdHlwZW9mIGJvZHkuZ2FzUHJpY2VDb2VmID09PSAnbnVtYmVyJyA/IGJvZHkuZ2FzUHJpY2VDb2VmIDogMTI4O1xuICAgICAgdGhpcy5nYXMgPSB0eXBlb2YgYm9keS5nYXMgPT09ICdudW1iZXInID8gYm9keS5nYXMgOiBOdW1iZXIoYm9keS5nYXMpIHx8IDA7XG4gICAgICB0aGlzLmRlcGVuZHNPbiA9IGJvZHkuZGVwZW5kc09uIHx8IG51bGw7XG4gICAgICB0aGlzLm5vbmNlID0gU3RyaW5nKGJvZHkubm9uY2UpO1xuICAgICAgLy8gU2V0IHJlY2lwaWVudHMgZnJvbSBjbGF1c2VzXG4gICAgICB0aGlzLnJlY2lwaWVudHMgPSBib2R5LmNsYXVzZXMubWFwKChjbGF1c2UpID0+ICh7XG4gICAgICAgIGFkZHJlc3M6IChjbGF1c2UudG8gfHwgJzB4MCcpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgYW1vdW50OiBOdW1iZXIoY2xhdXNlLnZhbHVlKS50b1N0cmluZygpLFxuICAgICAgfSkpO1xuICAgICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuXG4gICAgICAvLyBTZXQgc2VuZGVyIGFkZHJlc3NcbiAgICAgIGlmIChzaWduZWRUeC5zaWduYXR1cmUgJiYgc2lnbmVkVHgub3JpZ2luKSB7XG4gICAgICAgIHRoaXMuc2VuZGVyID0gc2lnbmVkVHgub3JpZ2luLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHNpZ25hdHVyZXMgaWYgcHJlc2VudFxuICAgICAgaWYgKHNpZ25lZFR4LnNpZ25hdHVyZSkge1xuICAgICAgICAvLyBGaXJzdCBzaWduYXR1cmUgaXMgc2VuZGVyJ3Mgc2lnbmF0dXJlXG4gICAgICAgIHRoaXMuc2VuZGVyU2lnbmF0dXJlID0gQnVmZmVyLmZyb20oc2lnbmVkVHguc2lnbmF0dXJlLnNsaWNlKDAsIFNlY3AyNTZrMS5TSUdOQVRVUkVfTEVOR1RIKSk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUncyBhZGRpdGlvbmFsIHNpZ25hdHVyZSBkYXRhLCBpdCdzIHRoZSBmZWUgcGF5ZXIncyBzaWduYXR1cmVcbiAgICAgICAgaWYgKHNpZ25lZFR4LnNpZ25hdHVyZS5sZW5ndGggPiBTZWNwMjU2azEuU0lHTkFUVVJFX0xFTkdUSCkge1xuICAgICAgICAgIHRoaXMuZmVlUGF5ZXJTaWduYXR1cmUgPSBCdWZmZXIuZnJvbShzaWduZWRUeC5zaWduYXR1cmUuc2xpY2UoU2VjcDI1NmsxLlNJR05BVFVSRV9MRU5HVEgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgRmFpbGVkIHRvIGRlc2VyaWFsaXplIHRyYW5zYWN0aW9uOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBhZGRTZW5kZXJTaWduYXR1cmUoc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmRlclNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgfVxuXG4gIGFkZEZlZVBheWVyU2lnbmF0dXJlKHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5mZWVQYXllclNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYnVpbGRDbGF1c2VzKCk7XG4gICAgYXdhaXQgdGhpcy5idWlsZFJhd1RyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5nZW5lcmF0ZVR4bklkQW5kU2V0U2VuZGVyKCk7XG4gICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRyYW5zYWN0aW9uIElEIGZyb20gdGhlIHJhdyB0cmFuc2FjdGlvbiBpZiBpdCBpcyBzaWduZWRcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdlbmVyYXRlVHhuSWRBbmRTZXRTZW5kZXIoKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHJhdyB0cmFuc2FjdGlvblxuICAgIGlmICghdGhpcy5yYXdUcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2VuZGVyU2lnbmF0dXJlKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGhhbGZTaWduZWRUcmFuc2FjdGlvbjogVmV0VHJhbnNhY3Rpb24gPSBWZXRUcmFuc2FjdGlvbi5vZih0aGlzLnJhd1RyYW5zYWN0aW9uLmJvZHksIHRoaXMuc2VuZGVyU2lnbmF0dXJlKTtcbiAgICAgIGlmIChoYWxmU2lnbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlKSB7XG4gICAgICAgIHRoaXMuX3Jhd1RyYW5zYWN0aW9uID0gaGFsZlNpZ25lZFRyYW5zYWN0aW9uO1xuICAgICAgICB0aGlzLl9zZW5kZXIgPSBoYWxmU2lnbmVkVHJhbnNhY3Rpb24ub3JpZ2luLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWNvdmVyeSkge1xuICAgICAgICAgIHRoaXMuX2lkID0gaGFsZlNpZ25lZFRyYW5zYWN0aW9uLmlkLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZlZVBheWVyU2lnbmF0dXJlKSB7XG4gICAgICAgIGNvbnN0IGZ1bGxTaWduZWRUcmFuc2FjdGlvbjogVmV0VHJhbnNhY3Rpb24gPSBWZXRUcmFuc2FjdGlvbi5vZihcbiAgICAgICAgICBoYWxmU2lnbmVkVHJhbnNhY3Rpb24uYm9keSxcbiAgICAgICAgICBuY191dGlscy5jb25jYXRCeXRlcyhcbiAgICAgICAgICAgIC8vIERyb3AgYW55IHByZXZpb3VzIGdhcyBwYXllciBzaWduYXR1cmUuXG4gICAgICAgICAgICBoYWxmU2lnbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlLnNsaWNlKDAsIFNlY3AyNTZrMS5TSUdOQVRVUkVfTEVOR1RIKSxcbiAgICAgICAgICAgIHRoaXMuZmVlUGF5ZXJTaWduYXR1cmVcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGlmIChmdWxsU2lnbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlKSB7XG4gICAgICAgICAgdGhpcy5fcmF3VHJhbnNhY3Rpb24gPSBmdWxsU2lnbmVkVHJhbnNhY3Rpb247XG4gICAgICAgICAgdGhpcy5faWQgPSBmdWxsU2lnbmVkVHJhbnNhY3Rpb24uaWQudG9TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRSYXdUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkJvZHk6IFRyYW5zYWN0aW9uQm9keSA9IHtcbiAgICAgIGNoYWluVGFnOiB0aGlzLmNoYWluVGFnLFxuICAgICAgYmxvY2tSZWY6IHRoaXMuYmxvY2tSZWYsXG4gICAgICBleHBpcmF0aW9uOiB0aGlzLmV4cGlyYXRpb24sXG4gICAgICBjbGF1c2VzOiB0aGlzLmNsYXVzZXMsXG4gICAgICBnYXNQcmljZUNvZWY6IHRoaXMuZ2FzUHJpY2VDb2VmLFxuICAgICAgZ2FzOiB0aGlzLmdhcyxcbiAgICAgIGRlcGVuZHNPbjogbnVsbCxcbiAgICAgIG5vbmNlOiB0aGlzLm5vbmNlLFxuICAgIH07XG5cbiAgICBpZiAoXG4gICAgICAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCAmJiAhdGhpcy5pc1JlY292ZXJ5KSB8fFxuICAgICAgdGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuIHx8XG4gICAgICB0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kTkZUIHx8XG4gICAgICB0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwgfHxcbiAgICAgIHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZSB8fFxuICAgICAgdGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jayB8fFxuICAgICAgdGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3IHx8XG4gICAgICB0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQ2xhaW1cbiAgICApIHtcbiAgICAgIHRyYW5zYWN0aW9uQm9keS5yZXNlcnZlZCA9IHtcbiAgICAgICAgZmVhdHVyZXM6IDEsIC8vIG1hcmsgdHJhbnNhY3Rpb24gYXMgZGVsZWdhdGVkIGkuZS4gd2lsbCB1c2UgZ2FzIHBheWVyXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMucmF3VHJhbnNhY3Rpb24gPSBWZXRUcmFuc2FjdGlvbi5vZih0cmFuc2FjdGlvbkJvZHkpO1xuICB9XG5cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgY29uc3QgdG90YWxBbW91bnQgPSB0aGlzLl9yZWNpcGllbnRzLnJlZHVjZShcbiAgICAgIChhY2N1bXVsYXRvciwgY3VycmVudCkgPT4gYWNjdW11bGF0b3IucGx1cyhjdXJyZW50LmFtb3VudCksXG4gICAgICBuZXcgQmlnTnVtYmVyKCcwJylcbiAgICApO1xuICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdGhpcy5zZW5kZXIsXG4gICAgICAgIHZhbHVlOiB0b3RhbEFtb3VudC50b1N0cmluZygpLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9LFxuICAgIF07XG4gICAgdGhpcy5fb3V0cHV0cyA9IHRoaXMuX3JlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudC5hZGRyZXNzLFxuICAgICAgICB2YWx1ZTogcmVjaXBpZW50LmFtb3VudCBhcyBzdHJpbmcsXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBzaWduZWRUeG46IFZldFRyYW5zYWN0aW9uO1xuICAgIHRyeSB7XG4gICAgICBzaWduZWRUeG4gPSB1dGlscy5kZXNlcmlhbGl6ZVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRoaXMuZnJvbURlc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uKHNpZ25lZFR4bik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFZldFRyYW5zYWN0aW9uRGF0YSB7XG4gICAgY29uc3QganNvbjogVmV0VHJhbnNhY3Rpb25EYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBjaGFpblRhZzogdGhpcy5jaGFpblRhZyxcbiAgICAgIGJsb2NrUmVmOiB0aGlzLmJsb2NrUmVmLFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5leHBpcmF0aW9uLFxuICAgICAgcmVjaXBpZW50czogdGhpcy5yZWNpcGllbnRzLFxuICAgICAgZ2FzUHJpY2VDb2VmOiB0aGlzLmdhc1ByaWNlQ29lZixcbiAgICAgIGdhczogdGhpcy5nYXMsXG4gICAgICBkZXBlbmRzT246IHRoaXMuZGVwZW5kc09uLFxuICAgICAgbm9uY2U6IHRoaXMubm9uY2UsXG4gICAgICBzZW5kZXI6IHRoaXMuc2VuZGVyLFxuICAgICAgZmVlUGF5ZXI6IHRoaXMuZmVlUGF5ZXJBZGRyZXNzLFxuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGZWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEJpZ051bWJlcih0aGlzLmdhcylcbiAgICAgIC5tdWx0aXBsaWVkQnkoZ2FzUHJpY2UpXG4gICAgICAubXVsdGlwbGllZEJ5KG5ldyBCaWdOdW1iZXIodGhpcy5nYXNQcmljZUNvZWYpLmRpdmlkZWRCeSgyNTUpLnBsdXMoMSkpXG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLnNsaWNlKDAsIDE4KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMucmF3VHJhbnNhY3Rpb24uZW5jb2RlZCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMucmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgVHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuc2VuZGVyU2lnbmF0dXJlKSB7XG4gICAgICByZXR1cm4gSGV4VUludC5vZih0aGlzLnJhd1RyYW5zYWN0aW9uLmVuY29kZWQpLnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5mZWVQYXllclNpZ25hdHVyZSkge1xuICAgICAgICBjb25zdCBzZW5kZXJTaWduZWRUcmFuc2FjdGlvbjogVmV0VHJhbnNhY3Rpb24gPSBWZXRUcmFuc2FjdGlvbi5vZihcbiAgICAgICAgICB0aGlzLnJhd1RyYW5zYWN0aW9uLmJvZHksXG4gICAgICAgICAgdGhpcy5zZW5kZXJTaWduYXR1cmVcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIEhleFVJbnQub2Yoc2VuZGVyU2lnbmVkVHJhbnNhY3Rpb24uZW5jb2RlZCkudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNlbmRlclNpZ25lZFRyYW5zYWN0aW9uOiBWZXRUcmFuc2FjdGlvbiA9IFZldFRyYW5zYWN0aW9uLm9mKFxuICAgICAgICAgIHRoaXMucmF3VHJhbnNhY3Rpb24uYm9keSxcbiAgICAgICAgICB0aGlzLnNlbmRlclNpZ25hdHVyZVxuICAgICAgICApO1xuICAgICAgICBpZiAoc2VuZGVyU2lnbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlKSB7XG4gICAgICAgICAgY29uc3QgZnVsbFNpZ25lZFRyYW5zYWN0aW9uOiBWZXRUcmFuc2FjdGlvbiA9IFZldFRyYW5zYWN0aW9uLm9mKFxuICAgICAgICAgICAgc2VuZGVyU2lnbmVkVHJhbnNhY3Rpb24uYm9keSxcbiAgICAgICAgICAgIG5jX3V0aWxzLmNvbmNhdEJ5dGVzKFxuICAgICAgICAgICAgICBzZW5kZXJTaWduZWRUcmFuc2FjdGlvbi5zaWduYXR1cmUuc2xpY2UoMCwgU2VjcDI1NmsxLlNJR05BVFVSRV9MRU5HVEgpLFxuICAgICAgICAgICAgICB0aGlzLmZlZVBheWVyU2lnbmF0dXJlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gSGV4VUludC5vZihmdWxsU2lnbmVkVHJhbnNhY3Rpb24uZW5jb2RlZCkudG9TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGlzIG5vdCBzaWduZWQgcHJvcGVybHknKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZVRyYW5zYWN0aW9uKHJhd1R4OiBzdHJpbmcpOiBWZXRUcmFuc2FjdGlvbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghcmF3VHgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdSYXcgdHJhbnNhY3Rpb24gc3RyaW5nIGNhbm5vdCBiZSBlbXB0eScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHV0aWxzLmRlc2VyaWFsaXplVHJhbnNhY3Rpb24ocmF3VHgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgRmFpbGVkIHRvIGRlc2VyaWFsaXplIHRyYW5zYWN0aW9uOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVmV0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gW1xuICAgICAgJ2lkJyxcbiAgICAgICdvdXRwdXRzJyxcbiAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAnZmVlJyxcbiAgICAgICd3aXRoZHJhd0Ftb3VudCcsXG4gICAgICAnc2VuZGVyJyxcbiAgICAgICd0eXBlJyxcbiAgICBdO1xuXG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IHRoaXMuX3JlY2lwaWVudHM7XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gb3V0cHV0c1xuICAgICAgLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yLnBsdXMoY3VycmVudC5hbW91bnQpLCBuZXcgQmlnTnVtYmVyKCcwJykpXG4gICAgICAudG9TdHJpbmcoKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBvdXRwdXRzLFxuICAgICAgb3V0cHV0QW1vdW50LFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6IHRoaXMuZ2V0RmVlKCkgfSxcbiAgICAgIHNlbmRlcjogdGhpcy5zZW5kZXIsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgfVxufVxuIl19
484
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdFQUFxQztBQUNyQyxtREFBdUg7QUFFdkgsZ0RBTTJCO0FBQzNCLHVFQUF5RDtBQUN6RCxxREFBNkI7QUFHN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRXRCLE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBb0I5QyxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsMEJBQTBCO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLEVBQUU7UUFDWCxJQUFJLENBQUMseUJB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LE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJoQkQsa0NBcWhCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25UeXBlLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25SZWNpcGllbnQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkJvZHksXG4gIFRyYW5zYWN0aW9uQ2xhdXNlLFxuICBUcmFuc2FjdGlvbiBhcyBWZXRUcmFuc2FjdGlvbixcbiAgU2VjcDI1NmsxLFxuICBIZXhVSW50LFxufSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBuY191dGlscyBmcm9tICdAbm9ibGUvY3VydmVzL2Fic3RyYWN0L3V0aWxzJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBWZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBWZXRUcmFuc2FjdGlvbkRhdGEgfSBmcm9tICcuLi9pZmFjZSc7XG5cbmNvbnN0IGdhc1ByaWNlID0gMWUxMztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9yYXdUcmFuc2FjdGlvbjogVmV0VHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX3JlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIHByb3RlY3RlZCBfY2xhdXNlczogVHJhbnNhY3Rpb25DbGF1c2VbXTtcbiAgcHJvdGVjdGVkIF9jb250cmFjdDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uRGF0YTogc3RyaW5nO1xuICBwcml2YXRlIF9jaGFpblRhZzogbnVtYmVyO1xuICBwcml2YXRlIF9ibG9ja1JlZjogc3RyaW5nO1xuICBwcml2YXRlIF9leHBpcmF0aW9uOiBudW1iZXI7XG4gIHByaXZhdGUgX2dhc1ByaWNlQ29lZjogbnVtYmVyO1xuICBwcml2YXRlIF9nYXM6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZGVwZW5kc09uOiBzdHJpbmcgfCBudWxsO1xuICBwcml2YXRlIF9ub25jZTogc3RyaW5nO1xuICBwcml2YXRlIF9zZW5kZXI6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VuZGVyU2lnbmF0dXJlOiBCdWZmZXIgfCBudWxsO1xuICBwcml2YXRlIF9mZWVQYXllckFkZHJlc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBfZmVlUGF5ZXJTaWduYXR1cmU6IEJ1ZmZlciB8IG51bGw7XG4gIHByaXZhdGUgX2lzUmVjb3Zlcnk6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICB0aGlzLl9jaGFpblRhZyA9IDB4Mjc7IC8vIEluaXRpYWxpemUgdG8gMzkgKDB4MjcpXG4gICAgdGhpcy5fYmxvY2tSZWYgPSAnMHgwJztcbiAgICB0aGlzLl9leHBpcmF0aW9uID0gNjQ7XG4gICAgdGhpcy5fY2xhdXNlcyA9IFtdO1xuICAgIHRoaXMuX2dhc1ByaWNlQ29lZiA9IDEyODtcbiAgICB0aGlzLl9nYXMgPSAwO1xuICAgIHRoaXMuX2RlcGVuZHNPbiA9IG51bGw7XG4gICAgdGhpcy5fbm9uY2UgPSBTdHJpbmcoMCk7XG4gICAgdGhpcy5fcmVjaXBpZW50cyA9IFtdO1xuICAgIHRoaXMuX3NlbmRlclNpZ25hdHVyZSA9IG51bGw7XG4gICAgdGhpcy5fZmVlUGF5ZXJTaWduYXR1cmUgPSBudWxsO1xuICAgIHRoaXMuX2lzUmVjb3ZlcnkgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICB0aGlzLmdlbmVyYXRlVHhuSWRBbmRTZXRTZW5kZXIoKTtcbiAgICByZXR1cm4gdGhpcy5faWQgPz8gJ1VOQVZBSUxBQkxFJztcbiAgfVxuXG4gIGdldCByYXdUcmFuc2FjdGlvbigpOiBWZXRUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jhd1RyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IHJhd1RyYW5zYWN0aW9uKHJhd1R4OiBWZXRUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3Jhd1RyYW5zYWN0aW9uID0gcmF3VHg7XG4gIH1cblxuICBnZXQgdHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG5cbiAgc2V0IHR5cGUodHlwZTogVHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXQgc2VuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRlcjtcbiAgfVxuXG4gIHNldCBzZW5kZXIoYWRkcmVzczogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2VuZGVyID0gYWRkcmVzcztcbiAgfVxuXG4gIGdldCBzZW5kZXJTaWduYXR1cmUoKTogVWludDhBcnJheSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX3NlbmRlclNpZ25hdHVyZSkge1xuICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHRoaXMuX3NlbmRlclNpZ25hdHVyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgc2V0IHNlbmRlclNpZ25hdHVyZShzaWc6IEJ1ZmZlcikge1xuICAgIHRoaXMuX3NlbmRlclNpZ25hdHVyZSA9IHNpZztcbiAgfVxuXG4gIGdldCBmZWVQYXllckFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmVlUGF5ZXJBZGRyZXNzO1xuICB9XG5cbiAgc2V0IGZlZVBheWVyQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9mZWVQYXllckFkZHJlc3MgPSBhZGRyZXNzO1xuICB9XG5cbiAgZ2V0IGZlZVBheWVyU2lnbmF0dXJlKCk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl9mZWVQYXllclNpZ25hdHVyZSkge1xuICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHRoaXMuX2ZlZVBheWVyU2lnbmF0dXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBzZXQgZmVlUGF5ZXJTaWduYXR1cmUoc2lnOiBCdWZmZXIpIHtcbiAgICB0aGlzLl9mZWVQYXllclNpZ25hdHVyZSA9IHNpZztcbiAgfVxuXG4gIGdldCBjaGFpblRhZygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jaGFpblRhZztcbiAgfVxuXG4gIHNldCBjaGFpblRhZyh0YWc6IG51bWJlcikge1xuICAgIHRoaXMuX2NoYWluVGFnID0gdGFnO1xuICB9XG5cbiAgZ2V0IGJsb2NrUmVmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jsb2NrUmVmO1xuICB9XG5cbiAgc2V0IGJsb2NrUmVmKHJlZjogc3RyaW5nKSB7XG4gICAgdGhpcy5fYmxvY2tSZWYgPSByZWY7XG4gIH1cblxuICBnZXQgZXhwaXJhdGlvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9leHBpcmF0aW9uO1xuICB9XG5cbiAgc2V0IGV4cGlyYXRpb24oZXhwOiBudW1iZXIpIHtcbiAgICB0aGlzLl9leHBpcmF0aW9uID0gZXhwO1xuICB9XG5cbiAgZ2V0IHJlY2lwaWVudHMoKTogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlY2lwaWVudHM7XG4gIH1cblxuICBzZXQgcmVjaXBpZW50cyhyZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdKSB7XG4gICAgdGhpcy5fcmVjaXBpZW50cyA9IHJlY2lwaWVudHM7XG4gIH1cblxuICBnZXQgY2xhdXNlcygpOiBUcmFuc2FjdGlvbkNsYXVzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fY2xhdXNlcztcbiAgfVxuXG4gIHNldCBjbGF1c2VzKGNsYXVzZXM6IFRyYW5zYWN0aW9uQ2xhdXNlW10pIHtcbiAgICB0aGlzLl9jbGF1c2VzID0gY2xhdXNlcztcbiAgfVxuXG4gIGdldCBnYXNQcmljZUNvZWYoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZ2FzUHJpY2VDb2VmO1xuICB9XG5cbiAgc2V0IGdhc1ByaWNlQ29lZihjb2VmOiBudW1iZXIpIHtcbiAgICB0aGlzLl9nYXNQcmljZUNvZWYgPSBjb2VmO1xuICB9XG5cbiAgZ2V0IGdhcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYXM7XG4gIH1cblxuICBzZXQgZ2FzKGc6IG51bWJlcikge1xuICAgIHRoaXMuX2dhcyA9IGc7XG4gIH1cblxuICBnZXQgZGVwZW5kc09uKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kZXBlbmRzT247XG4gIH1cblxuICBzZXQgZGVwZW5kc09uKGRlcDogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX2RlcGVuZHNPbiA9IGRlcDtcbiAgfVxuXG4gIGdldCBub25jZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ub25jZTtcbiAgfVxuXG4gIHNldCBub25jZShuOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9ub25jZSA9IG47XG4gIH1cblxuICBnZXQgY29udHJhY3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29udHJhY3Q7XG4gIH1cblxuICBzZXQgY29udHJhY3QoYWRkcmVzczogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29udHJhY3QgPSBhZGRyZXNzO1xuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uRGF0YSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbkRhdGE7XG4gIH1cblxuICBzZXQgdHJhbnNhY3Rpb25EYXRhKHRyYW5zYWN0aW9uRGF0YTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb25EYXRhID0gdHJhbnNhY3Rpb25EYXRhO1xuICB9XG5cbiAgZ2V0IGlzUmVjb3ZlcnkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzUmVjb3Zlcnk7XG4gIH1cblxuICBzZXQgaXNSZWNvdmVyeShpc1JlY292ZXJ5OiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNSZWNvdmVyeSA9IGlzUmVjb3Zlcnk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBzaWduYXR1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYW5zYWN0aW9uXG4gICAqIFJlcXVpcmVkIGJ5IEJhc2VUcmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0IHNpZ25hdHVyZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc2lnczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5fc2VuZGVyU2lnbmF0dXJlKSB7XG4gICAgICBzaWdzLnB1c2goQnVmZmVyLmZyb20odGhpcy5fc2VuZGVyU2lnbmF0dXJlKS50b1N0cmluZygnaGV4JykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmVlUGF5ZXJTaWduYXR1cmUpIHtcbiAgICAgIHNpZ3MucHVzaChCdWZmZXIuZnJvbSh0aGlzLl9mZWVQYXllclNpZ25hdHVyZSkudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpZ3M7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHNpZ25hdHVyZXMgZm9yIHRoaXMgdHJhbnNhY3Rpb25cbiAgICogUmVxdWlyZWQgYnkgQmFzZVRyYW5zYWN0aW9uXG4gICAqIE5vdGU6IFRoaXMgaXMgbWFpbmx5IGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGJhc2UgY2xhc3MuXG4gICAqIFByZWZlciB1c2luZyBzZW5kZXJTaWduYXR1cmUgYW5kIGZlZVBheWVyU2lnbmF0dXJlIGRpcmVjdGx5LlxuICAgKi9cbiAgc2V0IHNpZ25hdHVyZShzaWdzOiBzdHJpbmdbXSkge1xuICAgIGlmIChzaWdzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3NlbmRlclNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKHNpZ3NbMF0sICdoZXgnKTtcbiAgICB9XG4gICAgaWYgKHNpZ3MubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5fZmVlUGF5ZXJTaWduYXR1cmUgPSBCdWZmZXIuZnJvbShzaWdzWzFdLCAnaGV4Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhpcyBpcyBhIGZlZSBkZWxlZ2F0ZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIGlzRmVlRGVsZWdhdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2ZlZVBheWVyQWRkcmVzcztcbiAgfVxuXG4gIGFkZFJlY2lwaWVudHMoY2xhdXNlczogVHJhbnNhY3Rpb25DbGF1c2VbXSk6IHZvaWQge1xuICAgIHRoaXMuX3JlY2lwaWVudHMgPSBjbGF1c2VzLm1hcCgoY2xhdXNlKSA9PiAoe1xuICAgICAgYWRkcmVzczogKGNsYXVzZS50byB8fCAnMHgwJykudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgYW1vdW50OiAoY2xhdXNlLnZhbHVlIHx8ICcwJykudG9TdHJpbmcoKSxcbiAgICB9KSk7XG4gIH1cblxuICBidWlsZENsYXVzZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xhdXNlcyA9IHRoaXMuX3JlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+ICh7XG4gICAgICB0bzogcmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICB2YWx1ZTogcmVjaXBpZW50LmFtb3VudCxcbiAgICAgIGRhdGE6ICcweCcsXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvcHVsYXRlcyB0aGUgdHJhbnNhY3Rpb24gb2JqZWN0IHdpdGggZGF0YSBmcm9tIGEgZGVzZXJpYWxpemVkIFZlQ2hhaW4gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHNpZ25lZFR4IC0gVGhlIGRlc2VyaWFsaXplZCBWZUNoYWluIHRyYW5zYWN0aW9uIGNvbnRhaW5pbmcgYm9keSwgc2lnbmF0dXJlcywgYW5kIG90aGVyIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHRocm93cyB7SW52YWxpZFRyYW5zYWN0aW9uRXJyb3J9IFdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIGludmFsaWQgb3IgbWlzc2luZyByZXF1aXJlZCBkYXRhXG4gICAqL1xuICBmcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHg6IFZldFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2lnbmVkVHggfHwgIXNpZ25lZFR4LmJvZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHRyYW5zYWN0aW9uIGJvZHknKTtcbiAgICAgIH1cblxuICAgICAgLy8gU3RvcmUgdGhlIHJhdyB0cmFuc2FjdGlvblxuICAgICAgdGhpcy5yYXdUcmFuc2FjdGlvbiA9IHNpZ25lZFR4O1xuXG4gICAgICAvLyBTZXQgdHJhbnNhY3Rpb24gYm9keSBwcm9wZXJ0aWVzXG4gICAgICBjb25zdCBib2R5ID0gc2lnbmVkVHguYm9keTtcbiAgICAgIHRoaXMuY2hhaW5UYWcgPSB0eXBlb2YgYm9keS5jaGFpblRhZyA9PT0gJ251bWJlcicgPyBib2R5LmNoYWluVGFnIDogMDtcbiAgICAgIHRoaXMuYmxvY2tSZWYgPSBib2R5LmJsb2NrUmVmIHx8ICcweDAnO1xuICAgICAgdGhpcy5leHBpcmF0aW9uID0gdHlwZW9mIGJvZHkuZXhwaXJhdGlvbiA9PT0gJ251bWJlcicgPyBib2R5LmV4cGlyYXRpb24gOiA2NDtcbiAgICAgIHRoaXMuY2xhdXNlcyA9IGJvZHkuY2xhdXNlcyB8fCBbXTtcbiAgICAgIHRoaXMuZ2FzUHJpY2VDb2VmID0gdHlwZW9mIGJvZHkuZ2FzUHJpY2VDb2VmID09PSAnbnVtYmVyJyA/IGJvZHkuZ2FzUHJpY2VDb2VmIDogMTI4O1xuICAgICAgdGhpcy5nYXMgPSB0eXBlb2YgYm9keS5nYXMgPT09ICdudW1iZXInID8gYm9keS5nYXMgOiBOdW1iZXIoYm9keS5nYXMpIHx8IDA7XG4gICAgICB0aGlzLmRlcGVuZHNPbiA9IGJvZHkuZGVwZW5kc09uIHx8IG51bGw7XG4gICAgICB0aGlzLm5vbmNlID0gU3RyaW5nKGJvZHkubm9uY2UpO1xuICAgICAgLy8gU2V0IHJlY2lwaWVudHMgZnJvbSBjbGF1c2VzXG4gICAgICB0aGlzLnJlY2lwaWVudHMgPSBib2R5LmNsYXVzZXMubWFwKChjbGF1c2UpID0+ICh7XG4gICAgICAgIGFkZHJlc3M6IChjbGF1c2UudG8gfHwgJzB4MCcpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgYW1vdW50OiBOdW1iZXIoY2xhdXNlLnZhbHVlKS50b1N0cmluZygpLFxuICAgICAgfSkpO1xuICAgICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuXG4gICAgICAvLyBTZXQgc2VuZGVyIGFkZHJlc3NcbiAgICAgIGlmIChzaWduZWRUeC5zaWduYXR1cmUgJiYgc2lnbmVkVHgub3JpZ2luKSB7XG4gICAgICAgIHRoaXMuc2VuZGVyID0gc2lnbmVkVHgub3JpZ2luLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHNpZ25hdHVyZXMgaWYgcHJlc2VudFxuICAgICAgaWYgKHNpZ25lZFR4LnNpZ25hdHVyZSkge1xuICAgICAgICAvLyBGaXJzdCBzaWduYXR1cmUgaXMgc2VuZGVyJ3Mgc2lnbmF0dXJlXG4gICAgICAgIHRoaXMuc2VuZGVyU2lnbmF0dXJlID0gQnVmZmVyLmZyb20oc2lnbmVkVHguc2lnbmF0dXJlLnNsaWNlKDAsIFNlY3AyNTZrMS5TSUdOQVRVUkVfTEVOR1RIKSk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUncyBhZGRpdGlvbmFsIHNpZ25hdHVyZSBkYXRhLCBpdCdzIHRoZSBmZWUgcGF5ZXIncyBzaWduYXR1cmVcbiAgICAgICAgaWYgKHNpZ25lZFR4LnNpZ25hdHVyZS5sZW5ndGggPiBTZWNwMjU2azEuU0lHTkFUVVJFX0xFTkdUSCkge1xuICAgICAgICAgIHRoaXMuZmVlUGF5ZXJTaWduYXR1cmUgPSBCdWZmZXIuZnJvbShzaWduZWRUeC5zaWduYXR1cmUuc2xpY2UoU2VjcDI1NmsxLlNJR05BVFVSRV9MRU5HVEgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgRmFpbGVkIHRvIGRlc2VyaWFsaXplIHRyYW5zYWN0aW9uOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBhZGRTZW5kZXJTaWduYXR1cmUoc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmRlclNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgfVxuXG4gIGFkZEZlZVBheWVyU2lnbmF0dXJlKHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5mZWVQYXllclNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYnVpbGRDbGF1c2VzKCk7XG4gICAgYXdhaXQgdGhpcy5idWlsZFJhd1RyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5nZW5lcmF0ZVR4bklkQW5kU2V0U2VuZGVyKCk7XG4gICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRyYW5zYWN0aW9uIElEIGZyb20gdGhlIHJhdyB0cmFuc2FjdGlvbiBpZiBpdCBpcyBzaWduZWRcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdlbmVyYXRlVHhuSWRBbmRTZXRTZW5kZXIoKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHJhdyB0cmFuc2FjdGlvblxuICAgIGlmICghdGhpcy5yYXdUcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2VuZGVyU2lnbmF0dXJlKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGhhbGZTaWduZWRUcmFuc2FjdGlvbjogVmV0VHJhbnNhY3Rpb24gPSBWZXRUcmFuc2FjdGlvbi5vZih0aGlzLnJhd1RyYW5zYWN0aW9uLmJvZHksIHRoaXMuc2VuZGVyU2lnbmF0dXJlKTtcbiAgICAgIGlmIChoYWxmU2lnbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlKSB7XG4gICAgICAgIHRoaXMuX3Jhd1RyYW5zYWN0aW9uID0gaGFsZlNpZ25lZFRyYW5zYWN0aW9uO1xuICAgICAgICB0aGlzLl9zZW5kZXIgPSBoYWxmU2lnbmVkVHJhbnNhY3Rpb24ub3JpZ2luLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWNvdmVyeSkge1xuICAgICAgICAgIHRoaXMuX2lkID0gaGFsZlNpZ25lZFRyYW5zYWN0aW9uLmlkLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZlZVBheWVyU2lnbmF0dXJlKSB7XG4gICAgICAgIGNvbnN0IGZ1bGxTaWduZWRUcmFuc2FjdGlvbjogVmV0VHJhbnNhY3Rpb24gPSBWZXRUcmFuc2FjdGlvbi5vZihcbiAgICAgICAgICBoYWxmU2lnbmVkVHJhbnNhY3Rpb24uYm9keSxcbiAgICAgICAgICBuY191dGlscy5jb25jYXRCeXRlcyhcbiAgICAgICAgICAgIC8vIERyb3AgYW55IHByZXZpb3VzIGdhcyBwYXllciBzaWduYXR1cmUuXG4gICAgICAgICAgICBoYWxmU2lnbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlLnNsaWNlKDAsIFNlY3AyNTZrMS5TSUdOQVRVUkVfTEVOR1RIKSxcbiAgICAgICAgICAgIHRoaXMuZmVlUGF5ZXJTaWduYXR1cmVcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGlmIChmdWxsU2lnbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlKSB7XG4gICAgICAgICAgdGhpcy5fcmF3VHJhbnNhY3Rpb24gPSBmdWxsU2lnbmVkVHJhbnNhY3Rpb247XG4gICAgICAgICAgdGhpcy5faWQgPSBmdWxsU2lnbmVkVHJhbnNhY3Rpb24uaWQudG9TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRSYXdUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkJvZHk6IFRyYW5zYWN0aW9uQm9keSA9IHtcbiAgICAgIGNoYWluVGFnOiB0aGlzLmNoYWluVGFnLFxuICAgICAgYmxvY2tSZWY6IHRoaXMuYmxvY2tSZWYsXG4gICAgICBleHBpcmF0aW9uOiB0aGlzLmV4cGlyYXRpb24sXG4gICAgICBjbGF1c2VzOiB0aGlzLmNsYXVzZXMsXG4gICAgICBnYXNQcmljZUNvZWY6IHRoaXMuZ2FzUHJpY2VDb2VmLFxuICAgICAgZ2FzOiB0aGlzLmdhcyxcbiAgICAgIGRlcGVuZHNPbjogbnVsbCxcbiAgICAgIG5vbmNlOiB0aGlzLm5vbmNlLFxuICAgIH07XG5cbiAgICBpZiAoXG4gICAgICAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCAmJiAhdGhpcy5pc1JlY292ZXJ5KSB8fFxuICAgICAgdGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuIHx8XG4gICAgICB0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kTkZUIHx8XG4gICAgICB0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwgfHxcbiAgICAgIHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZSB8fFxuICAgICAgdGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlbGVnYXRlIHx8XG4gICAgICB0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrIHx8XG4gICAgICB0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXcgfHxcbiAgICAgIHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdDbGFpbVxuICAgICkge1xuICAgICAgdHJhbnNhY3Rpb25Cb2R5LnJlc2VydmVkID0ge1xuICAgICAgICBmZWF0dXJlczogMSwgLy8gbWFyayB0cmFuc2FjdGlvbiBhcyBkZWxlZ2F0ZWQgaS5lLiB3aWxsIHVzZSBnYXMgcGF5ZXJcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5yYXdUcmFuc2FjdGlvbiA9IFZldFRyYW5zYWN0aW9uLm9mKHRyYW5zYWN0aW9uQm9keSk7XG4gIH1cblxuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBjb25zdCB0b3RhbEFtb3VudCA9IHRoaXMuX3JlY2lwaWVudHMucmVkdWNlKFxuICAgICAgKGFjY3VtdWxhdG9yLCBjdXJyZW50KSA9PiBhY2N1bXVsYXRvci5wbHVzKGN1cnJlbnQuYW1vdW50KSxcbiAgICAgIG5ldyBCaWdOdW1iZXIoJzAnKVxuICAgICk7XG4gICAgdGhpcy5faW5wdXRzID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiB0aGlzLnNlbmRlcixcbiAgICAgICAgdmFsdWU6IHRvdGFsQW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICB0aGlzLl9vdXRwdXRzID0gdGhpcy5fcmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICAgIHZhbHVlOiByZWNpcGllbnQuYW1vdW50IGFzIHN0cmluZyxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IHNpZ25lZFR4bjogVmV0VHJhbnNhY3Rpb247XG4gICAgdHJ5IHtcbiAgICAgIHNpZ25lZFR4biA9IHV0aWxzLmRlc2VyaWFsaXplVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgdGhpcy5mcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHhuKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVmV0VHJhbnNhY3Rpb25EYXRhIHtcbiAgICBjb25zdCBqc29uOiBWZXRUcmFuc2FjdGlvbkRhdGEgPSB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGNoYWluVGFnOiB0aGlzLmNoYWluVGFnLFxuICAgICAgYmxvY2tSZWY6IHRoaXMuYmxvY2tSZWYsXG4gICAgICBleHBpcmF0aW9uOiB0aGlzLmV4cGlyYXRpb24sXG4gICAgICByZWNpcGllbnRzOiB0aGlzLnJlY2lwaWVudHMsXG4gICAgICBnYXNQcmljZUNvZWY6IHRoaXMuZ2FzUHJpY2VDb2VmLFxuICAgICAgZ2FzOiB0aGlzLmdhcyxcbiAgICAgIGRlcGVuZHNPbjogdGhpcy5kZXBlbmRzT24sXG4gICAgICBub25jZTogdGhpcy5ub25jZSxcbiAgICAgIHNlbmRlcjogdGhpcy5zZW5kZXIsXG4gICAgICBmZWVQYXllcjogdGhpcy5mZWVQYXllckFkZHJlc3MsXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgcHVibGljIGdldEZlZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKHRoaXMuZ2FzKVxuICAgICAgLm11bHRpcGxpZWRCeShnYXNQcmljZSlcbiAgICAgIC5tdWx0aXBsaWVkQnkobmV3IEJpZ051bWJlcih0aGlzLmdhc1ByaWNlQ29lZikuZGl2aWRlZEJ5KDI1NSkucGx1cygxKSlcbiAgICAgIC50b1N0cmluZygpXG4gICAgICAuc2xpY2UoMCwgMTgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5yYXdUcmFuc2FjdGlvbi5lbmNvZGVkKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5yYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSBUcmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zZW5kZXJTaWduYXR1cmUpIHtcbiAgICAgIHJldHVybiBIZXhVSW50Lm9mKHRoaXMucmF3VHJhbnNhY3Rpb24uZW5jb2RlZCkudG9TdHJpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLmZlZVBheWVyU2lnbmF0dXJlKSB7XG4gICAgICAgIGNvbnN0IHNlbmRlclNpZ25lZFRyYW5zYWN0aW9uOiBWZXRUcmFuc2FjdGlvbiA9IFZldFRyYW5zYWN0aW9uLm9mKFxuICAgICAgICAgIHRoaXMucmF3VHJhbnNhY3Rpb24uYm9keSxcbiAgICAgICAgICB0aGlzLnNlbmRlclNpZ25hdHVyZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gSGV4VUludC5vZihzZW5kZXJTaWduZWRUcmFuc2FjdGlvbi5lbmNvZGVkKS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2VuZGVyU2lnbmVkVHJhbnNhY3Rpb246IFZldFRyYW5zYWN0aW9uID0gVmV0VHJhbnNhY3Rpb24ub2YoXG4gICAgICAgICAgdGhpcy5yYXdUcmFuc2FjdGlvbi5ib2R5LFxuICAgICAgICAgIHRoaXMuc2VuZGVyU2lnbmF0dXJlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzZW5kZXJTaWduZWRUcmFuc2FjdGlvbi5zaWduYXR1cmUpIHtcbiAgICAgICAgICBjb25zdCBmdWxsU2lnbmVkVHJhbnNhY3Rpb246IFZldFRyYW5zYWN0aW9uID0gVmV0VHJhbnNhY3Rpb24ub2YoXG4gICAgICAgICAgICBzZW5kZXJTaWduZWRUcmFuc2FjdGlvbi5ib2R5LFxuICAgICAgICAgICAgbmNfdXRpbHMuY29uY2F0Qnl0ZXMoXG4gICAgICAgICAgICAgIHNlbmRlclNpZ25lZFRyYW5zYWN0aW9uLnNpZ25hdHVyZS5zbGljZSgwLCBTZWNwMjU2azEuU0lHTkFUVVJFX0xFTkdUSCksXG4gICAgICAgICAgICAgIHRoaXMuZmVlUGF5ZXJTaWduYXR1cmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBIZXhVSW50Lm9mKGZ1bGxTaWduZWRUcmFuc2FjdGlvbi5lbmNvZGVkKS50b1N0cmluZygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gaXMgbm90IHNpZ25lZCBwcm9wZXJseScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRlc2VyaWFsaXplVHJhbnNhY3Rpb24ocmF3VHg6IHN0cmluZyk6IFZldFRyYW5zYWN0aW9uIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFyYXdUeCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBzdHJpbmcgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXRpbHMuZGVzZXJpYWxpemVUcmFuc2FjdGlvbihyYXdUeCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcikge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBGYWlsZWQgdG8gZGVzZXJpYWxpemUgdHJhbnNhY3Rpb246ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGV4cGxhaW5UcmFuc2FjdGlvbigpOiBWZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbXG4gICAgICAnaWQnLFxuICAgICAgJ291dHB1dHMnLFxuICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICdmZWUnLFxuICAgICAgJ3dpdGhkcmF3QW1vdW50JyxcbiAgICAgICdzZW5kZXInLFxuICAgICAgJ3R5cGUnLFxuICAgIF07XG5cbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gdGhpcy5fcmVjaXBpZW50cztcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSBvdXRwdXRzXG4gICAgICAucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudCkgPT4gYWNjdW11bGF0b3IucGx1cyhjdXJyZW50LmFtb3VudCksIG5ldyBCaWdOdW1iZXIoJzAnKSlcbiAgICAgIC50b1N0cmluZygpO1xuICAgIHJldHVybiB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogdGhpcy5nZXRGZWUoKSB9LFxuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuICB9XG59XG4iXX0=