@bitgo/sdk-coin-icp 1.23.37 → 1.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -47,6 +47,7 @@ const icpAgent_1 = require("../../../src/lib/icpAgent");
47
47
  const iface_1 = require("../../../src/lib/iface");
48
48
  const principal_1 = require("@dfinity/principal");
49
49
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
50
+ const sdk_core_1 = require("@bitgo/sdk-core");
50
51
  const utils_1 = __importDefault(require("../../../src/lib/utils"));
51
52
  describe('ICP transaction recovery', async () => {
52
53
  let bitgo;
@@ -165,6 +166,12 @@ describe('ICP transaction recovery', async () => {
165
166
  .recover(recoveryParams)
166
167
  .should.rejectedWith('Error during ICP recovery: Transaction broadcast error: Request failed with status code 500');
167
168
  });
169
+ it('should fail to recover txn if balance is zero', async () => {
170
+ sinon_1.default.restore();
171
+ sinon_1.default.stub(icpAgent_1.IcpAgent.prototype, 'getBalance').resolves((0, bignumber_js_1.default)(0));
172
+ sinon_1.default.stub(icpAgent_1.IcpAgent.prototype, 'getFee').resolves((0, bignumber_js_1.default)(10000));
173
+ await icp.recover(recoveryParams).should.rejectedWith(sdk_core_1.ErrorNoInputToRecover);
174
+ });
168
175
  it('should fail to recover txn if balance is low', async () => {
169
176
  sinon_1.default.restore();
170
177
  setupLowBalanceStubs();
@@ -172,6 +179,11 @@ describe('ICP transaction recovery', async () => {
172
179
  .recover(recoveryParams)
173
180
  .should.rejectedWith('Error during ICP recovery: Did not have enough funds to recover');
174
181
  });
182
+ it('should fail to recover txn if the balance provider fails', async () => {
183
+ sinon_1.default.restore();
184
+ sinon_1.default.stub(icpAgent_1.IcpAgent.prototype, 'getBalance').rejects(new sdk_core_1.RecoveryProviderError('Error fetching balance'));
185
+ await icp.recover(recoveryParams).should.rejectedWith(sdk_core_1.RecoveryProviderError);
186
+ });
175
187
  it('should fail to recover txn if userKey is not provided', async () => {
176
188
  recoveryParams.userKey = '';
177
189
  await icp.recover(recoveryParams).should.rejectedWith('Error during ICP recovery: missing userKey');
@@ -185,4 +197,4 @@ describe('ICP transaction recovery', async () => {
185
197
  await icp.recover(recoveryParams).should.rejectedWith('Error during ICP recovery: missing wallet passphrase');
186
198
  });
187
199
  });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25SZWNvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2FjdGlvblJlY292ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsOERBQWdEO0FBQ2hELGtEQUEwQjtBQUMxQiw4Q0FBNEM7QUFDNUMsNENBQTBDO0FBQzFDLGdEQUF3QjtBQUN4Qiw4Q0FBeUM7QUFDekMsd0RBQXFEO0FBQ3JELGtEQUE2RTtBQUM3RSxrREFBK0M7QUFDL0MsZ0VBQXFDO0FBQ3JDLG1FQUEyQztBQUUzQyxRQUFRLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDOUMsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLGNBQStCLENBQUM7SUFDcEMsSUFBSSxHQUFHLENBQUM7SUFDUixJQUFJLGlCQUF5QixDQUFDO0lBQzlCLElBQUksaUJBQXlCLENBQUM7SUFDOUIsSUFBSSxPQUFlLENBQUM7SUFFcEIsd0NBQXdDO0lBQ3hDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFO1FBQzdCLGVBQUssQ0FBQyxJQUFJLENBQUMsbUJBQVEsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUEsc0JBQVMsRUFBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzdFLGVBQUssQ0FBQyxJQUFJLENBQUMsbUJBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUEsc0JBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLGVBQUssQ0FBQyxJQUFJLENBQUMsZUFBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN2QyxRQUFRLEVBQUUsUUFBUSxDQUFDLHVCQUF1QjtZQUMxQyxjQUFjLEVBQUUsUUFB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QUF1RCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JFLGNBQWMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDdEcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMseURBQXlELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDdkUsY0FBYyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDOUIsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUN4RyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpRUFBaUUsRUFBRSxLQUFLLElBQUksRUFBRTtRQUMvRSxjQUFjLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFDaEgsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcy9pY3AnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IFRlc3RCaXRHbyB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCBub2NrIGZyb20gJ25vY2snO1xuaW1wb3J0IHsgSWNwIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2luZGV4JztcbmltcG9ydCB7IEljcEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9pY3BBZ2VudCc7XG5pbXBvcnQgeyBSZWNvdmVyeU9wdGlvbnMsIExFREdFUl9DQU5JU1RFUl9JRCB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHsgUHJpbmNpcGFsIH0gZnJvbSAnQGRmaW5pdHkvcHJpbmNpcGFsJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcblxuZGVzY3JpYmUoJ0lDUCB0cmFuc2FjdGlvbiByZWNvdmVyeScsIGFzeW5jICgpID0+IHtcbiAgbGV0IGJpdGdvO1xuICBsZXQgcmVjb3ZlcnlQYXJhbXM6IFJlY292ZXJ5T3B0aW9ucztcbiAgbGV0IGljcDtcbiAgbGV0IGJyb2FkY2FzdEVuZHBvaW50OiBzdHJpbmc7XG4gIGxldCBicm9hZGNhc3RSZXNwb25zZTogQnVmZmVyO1xuICBsZXQgbm9kZVVybDogc3RyaW5nO1xuXG4gIC8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIHNldHRpbmcgdXAgc3R1YnNcbiAgY29uc3Qgc2V0dXBEZWZhdWx0U3R1YnMgPSAoKSA9PiB7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRCYWxhbmNlJykucmVzb2x2ZXMoQmlnTnVtYmVyKDEwMDAwMDAwMDApKTtcbiAgICBzaW5vbi5zdHViKEljcEFnZW50LnByb3RvdHlwZSwgJ2dldEZlZScpLnJlc29sdmVzKEJpZ051bWJlcigxMDAwMCkpO1xuICAgIHNpbm9uLnN0dWIodXRpbHMsICdnZXRNZXRhRGF0YScpLnJldHVybnMoe1xuICAgICAgbWV0YURhdGE6IHRlc3REYXRhLk1ldGFEYXRhV2l0aERlZmF1bHRNZW1vLFxuICAgICAgaW5ncmVzc0VuZFRpbWU6IHRlc3REYXRhLk1ldGFEYXRhV2l0aERlZmF1bHRNZW1vLmluZ3Jlc3NfZW5kID8/IDAsXG4gICAgfSk7XG4gICAgc2lub24uc3R1YihpY3AsICdzaWduYXR1cmVzJykucmV0dXJucyh0ZXN0RGF0YS5SZWNvdmVyVHJhbnNhY3Rpb25TaWduYXR1cmVXaXRoRGVmYXVsdE1lbW8pO1xuICB9O1xuXG4gIGNvbnN0IHNldHVwTWVtb1N0dWJzID0gKCkgPT4ge1xuICAgIHNpbm9uLnN0dWIoSWNwQWdlbnQucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScpLnJlc29sdmVzKEJpZ051bWJlcigxMDAwMDAwMDAwKSk7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRGZWUnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMTAwMDApKTtcbiAgICBzaW5vbi5zdHViKHV0aWxzLCAnZ2V0TWV0YURhdGEnKS5yZXR1cm5zKHtcbiAgICAgIG1ldGFEYXRhOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhNZW1vLFxuICAgICAgaW5ncmVzc0VuZFRpbWU6IHRlc3REYXRhLk1ldGFEYXRhV2l0aE1lbW8uaW5ncmVzc19lbmQgPz8gMCxcbiAgICB9KTtcbiAgICBzaW5vbi5zdHViKGljcCwgJ3NpZ25hdHVyZXMnKS5yZXR1cm5zKHRlc3REYXRhLlJlY292ZXJUcmFuc2FjdGlvblNpZ25hdHVyZVdpdGhNZW1vKTtcbiAgfTtcblxuICBjb25zdCBzZXR1cExvd0JhbGFuY2VTdHVicyA9ICgpID0+IHtcbiAgICBzaW5vbi5zdHViKEljcEFnZW50LnByb3RvdHlwZSwgJ2dldEJhbGFuY2UnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMTApKTtcbiAgICBzaW5vbi5zdHViKEljcEFnZW50LnByb3RvdHlwZSwgJ2dldEZlZScpLnJlc29sdmVzKEJpZ051bWJlcigxMDAwMCkpO1xuICAgIHNpbm9uLnN0dWIodXRpbHMsICdnZXRNZXRhRGF0YScpLnJldHVybnMoe1xuICAgICAgbWV0YURhdGE6IHRlc3REYXRhLk1ldGFEYXRhV2l0aERlZmF1bHRNZW1vLFxuICAgICAgaW5ncmVzc0VuZFRpbWU6IHRlc3REYXRhLk1ldGFEYXRhV2l0aERlZmF1bHRNZW1vLmluZ3Jlc3NfZW5kID8/IDAsXG4gICAgfSk7XG4gIH07XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ2ljcCcsIEljcC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgcmVjb3ZlcnlQYXJhbXMgPSB7XG4gICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5XUldSZWNvdmVyeS51c2VyS2V5LFxuICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5XUldSZWNvdmVyeS5iYWNrdXBLZXksXG4gICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5XUldSZWNvdmVyeS53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyxcbiAgICB9O1xuXG4gICAgaWNwID0gYml0Z28uY29pbignaWNwJyk7XG4gICAgbm9kZVVybCA9IGljcC5nZXRQdWJsaWNOb2RlVXJsKCk7XG4gICAgY29uc3QgcHJpbmNpcGFsID0gUHJpbmNpcGFsLmZyb21VaW50OEFycmF5KExFREdFUl9DQU5JU1RFUl9JRCk7XG4gICAgY29uc3QgY2FuaXN0ZXJJZEhleCA9IHByaW5jaXBhbC50b1RleHQoKTtcbiAgICBicm9hZGNhc3RFbmRwb2ludCA9IGAvYXBpL3YzL2NhbmlzdGVyLyR7Y2FuaXN0ZXJJZEhleH0vY2FsbGA7XG4gICAgYnJvYWRjYXN0UmVzcG9uc2UgPSBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5QdWJsaWNOb2RlQXBpQnJvYWRjYXN0UmVzcG9uc2UsICdoZXgnKTtcbiAgfSk7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2V0dXBEZWZhdWx0U3R1YnMoKTtcbiAgICAvLyBTZXQgdXAgZGVmYXVsdCBzdWNjZXNzZnVsIG5vY2sgcmVzcG9uc2VcbiAgICBub2NrKG5vZGVVcmwpLnBvc3QoYnJvYWRjYXN0RW5kcG9pbnQpLnJlcGx5KDIwMCwgYnJvYWRjYXN0UmVzcG9uc2UpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHJlY292ZXJ5UGFyYW1zID0ge1xuICAgICAgdXNlcktleTogdGVzdERhdGEuV1JXUmVjb3ZlcnkudXNlcktleSxcbiAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuV1JXUmVjb3ZlcnkuYmFja3VwS2V5LFxuICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuV1JXUmVjb3Zlcnkud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLkFjY291bnRzLmFjY291bnQyLmFkZHJlc3MsXG4gICAgfTtcbiAgICBub2NrLmNsZWFuQWxsKCk7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0cmFuc2FjdGlvbiB3aXRoIGRlZmF1bHQgbWVtbyBzdWNjZXNzZnVsbHknLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVjb3ZlclR4biA9IGF3YWl0IGljcC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKTtcbiAgICByZWNvdmVyVHhuLmlkLnNob3VsZC5iZS5hLlN0cmluZygpO1xuICAgIHNob3VsZC5lcXVhbChyZWNvdmVyVHhuLmlkLCB0ZXN0RGF0YS5UeG5JZFdpdGhEZWZhdWx0TWVtbyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVjb3ZlciBhIHRyYW5zYWN0aW9uIHdpdGggbWVtbyBzdWNjZXNzZnVsbHknLCBhc3luYyAoKSA9PiB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICAgIHNldHVwTWVtb1N0dWJzKCk7XG4gICAgcmVjb3ZlcnlQYXJhbXMubWVtbyA9IHRlc3REYXRhLk1ldGFEYXRhV2l0aE1lbW8ubWVtbztcbiAgICBjb25zdCByZWNvdmVyVHhuID0gYXdhaXQgaWNwLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpO1xuICAgIHJlY292ZXJUeG4uaWQuc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgc2hvdWxkLmVxdWFsKHJlY292ZXJUeG4uaWQsIHRlc3REYXRhLlR4bklkV2l0aE1lbW8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlY292ZXIgYSB1bnNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbiBzdWNjZXNzZnVsbHknLCBhc3luYyAoKSA9PiB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICAgIHNldHVwTWVtb1N0dWJzKCk7XG5cbiAgICBjb25zdCB1bnNpZ25lZFN3ZWVwUmVjb3ZlcnlQYXJhbXMgPSB7XG4gICAgICBiaXRnb0tleTpcbiAgICAgICAgJzAzMTA3Njg3MzZhMDA1ZWE1MzY0ZTFiNWI1Mjg4Y2Y1NTMyMjRkZDI4YjJkZjhjZWQ2M2I3MmE4MDIwNDc4OTY3ZjA1ZWM1YmNlMWYyNmNkN2ViMDA5YTRiZWE0NDViYjU1YzJmNTRhMzBmMjcwNmMxYTM3NDdlOGRmMmQyODg4MjknLFxuICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyxcbiAgICB9O1xuICAgIGNvbnN0IHJlY292ZXJUeG4gPSBhd2FpdCBpY3AucmVjb3Zlcih1bnNpZ25lZFN3ZWVwUmVjb3ZlcnlQYXJhbXMpO1xuICAgIHJlY292ZXJUeG4udHhIZXguc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgc2hvdWxkLmVxdWFsKHJlY292ZXJUeG4udHhIZXgsIHRlc3REYXRhLlVuc2lnbmVkU3dlZXBUcmFuc2FjdGlvbik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbGVkIHRvIHJlY292ZXIgYSB1bnNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbiB3aXRoIHdyb25nIGJpdGdvIGtleScsIGFzeW5jICgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gICAgc2V0dXBNZW1vU3R1YnMoKTtcblxuICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBSZWNvdmVyeVBhcmFtcyA9IHtcbiAgICAgIGJpdGdvS2V5OiAndGVzdEtleScsXG4gICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzLFxuICAgIH07XG4gICAgYXdhaXQgaWNwXG4gICAgICAucmVjb3Zlcih1bnNpZ25lZFN3ZWVwUmVjb3ZlcnlQYXJhbXMpXG4gICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnRXJyb3IgZHVyaW5nIElDUCByZWNvdmVyeTogQ2Fubm90IGNvbnZlcnQgMHggdG8gYSBCaWdJbnQnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsZWQgdG8gcmVjb3ZlciByZWNvdmVyIGEgdW5zaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24gd2l0aG91dCBiaXRnbyBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICAgIHNldHVwTWVtb1N0dWJzKCk7XG5cbiAgICBjb25zdCB1bnNpZ25lZFN3ZWVwUmVjb3ZlcnlQYXJhbXMgPSB7XG4gICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzLFxuICAgIH07XG4gICAgYXdhaXQgaWNwLnJlY292ZXIodW5zaWduZWRTd2VlcFJlY292ZXJ5UGFyYW1zKS5zaG91bGQucmVqZWN0ZWRXaXRoKCdFcnJvciBkdXJpbmcgSUNQIHJlY292ZXJ5OiBtaXNzaW5nIGJpdGdvS2V5Jyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIGlmIGJyb2FkY2FzdCBBUEkgZmFpbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICAgIG5vY2sobm9kZVVybCkucG9zdChicm9hZGNhc3RFbmRwb2ludCkucmVwbHkoNTAwLCAnSW50ZXJuYWwgU2VydmVyIEVycm9yJyk7XG4gICAgcmVjb3ZlcnlQYXJhbXMubWVtbyA9IDA7XG4gICAgYXdhaXQgaWNwXG4gICAgICAucmVjb3ZlcihyZWNvdmVyeVBhcmFtcylcbiAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKFxuICAgICAgICAnRXJyb3IgZHVyaW5nIElDUCByZWNvdmVyeTogVHJhbnNhY3Rpb24gYnJvYWRjYXN0IGVycm9yOiBSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlIDUwMCdcbiAgICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIHR4biBpZiBiYWxhbmNlIGlzIGxvdycsIGFzeW5jICgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gICAgc2V0dXBMb3dCYWxhbmNlU3R1YnMoKTtcbiAgICBhd2FpdCBpY3BcbiAgICAgIC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKVxuICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IERpZCBub3QgaGF2ZSBlbm91Z2ggZnVuZHMgdG8gcmVjb3ZlcicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcmVjb3ZlciB0eG4gaWYgdXNlcktleSBpcyBub3QgcHJvdmlkZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgcmVjb3ZlcnlQYXJhbXMudXNlcktleSA9ICcnO1xuICAgIGF3YWl0IGljcC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKS5zaG91bGQucmVqZWN0ZWRXaXRoKCdFcnJvciBkdXJpbmcgSUNQIHJlY292ZXJ5OiBtaXNzaW5nIHVzZXJLZXknKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHJlY292ZXIgdHhuIGlmIGJhY2t1cEtleSBpcyBub3QgcHJvdmlkZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgcmVjb3ZlcnlQYXJhbXMuYmFja3VwS2V5ID0gJyc7XG4gICAgYXdhaXQgaWNwLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IG1pc3NpbmcgYmFja3VwS2V5Jyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIHR4biBpZiB3YWxsZXQgcGFzc3BocmFzZSBpcyBub3QgcHJvdmlkZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgcmVjb3ZlcnlQYXJhbXMud2FsbGV0UGFzc3BocmFzZSA9ICcnO1xuICAgIGF3YWl0IGljcC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKS5zaG91bGQucmVqZWN0ZWRXaXRoKCdFcnJvciBkdXJpbmcgSUNQIHJlY292ZXJ5OiBtaXNzaW5nIHdhbGxldCBwYXNzcGhyYXNlJyk7XG4gIH0pO1xufSk7XG4iXX0=
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25SZWNvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2FjdGlvblJlY292ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsOERBQWdEO0FBQ2hELGtEQUEwQjtBQUMxQiw4Q0FBNEM7QUFDNUMsNENBQTBDO0FBQzFDLGdEQUF3QjtBQUN4Qiw4Q0FBeUM7QUFDekMsd0RBQXFEO0FBQ3JELGtEQUE2RTtBQUM3RSxrREFBK0M7QUFDL0MsZ0VBQXFDO0FBQ3JDLDhDQUErRTtBQUMvRSxtRUFBMkM7QUFFM0MsUUFBUSxDQUFDLDBCQUEwQixFQUFFLEtBQUssSUFBSSxFQUFFO0lBQzlDLElBQUksS0FBSyxDQUFDO0lBQ1YsSUFBSSxjQUErQixDQUFDO0lBQ3BDLElBQUksR0FBRyxDQUFDO0lBQ1IsSUFBSSxpQkFBeUIsQ0FBQztJQUM5QixJQUFJLGlCQUF5QixDQUFDO0lBQzlCLElBQUksT0FBZSxDQUFDO0lBRXBCLHdDQUF3QztJQUN4QyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtRQUM3QixlQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFRLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFBLHNCQUFTLEVBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM3RSxlQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFBLHNCQUFTLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRSxlQUFLLENBQUMsSUFBSSxDQUFDLGVBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDdkMsUUFBUSxFQUFFLFFBQVEsQ0FBQyx1QkFBdUI7WUFDMUMs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O1FBQ3ZFLGNBQWMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQzlCLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDeEcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUVBQWlFLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0UsY0FBYyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0lBQ2hILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaWNwJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBUZXN0Qml0R28gfSBmcm9tICdAYml0Z28vc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgbm9jayBmcm9tICdub2NrJztcbmltcG9ydCB7IEljcCB9IGZyb20gJy4uLy4uLy4uL3NyYy9pbmRleCc7XG5pbXBvcnQgeyBJY3BBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvaWNwQWdlbnQnO1xuaW1wb3J0IHsgUmVjb3ZlcnlPcHRpb25zLCBMRURHRVJfQ0FOSVNURVJfSUQgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB7IFByaW5jaXBhbCB9IGZyb20gJ0BkZmluaXR5L3ByaW5jaXBhbCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBFcnJvck5vSW5wdXRUb1JlY292ZXIsIFJlY292ZXJ5UHJvdmlkZXJFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmRlc2NyaWJlKCdJQ1AgdHJhbnNhY3Rpb24gcmVjb3ZlcnknLCBhc3luYyAoKSA9PiB7XG4gIGxldCBiaXRnbztcbiAgbGV0IHJlY292ZXJ5UGFyYW1zOiBSZWNvdmVyeU9wdGlvbnM7XG4gIGxldCBpY3A7XG4gIGxldCBicm9hZGNhc3RFbmRwb2ludDogc3RyaW5nO1xuICBsZXQgYnJvYWRjYXN0UmVzcG9uc2U6IEJ1ZmZlcjtcbiAgbGV0IG5vZGVVcmw6IHN0cmluZztcblxuICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBzZXR0aW5nIHVwIHN0dWJzXG4gIGNvbnN0IHNldHVwRGVmYXVsdFN0dWJzID0gKCkgPT4ge1xuICAgIHNpbm9uLnN0dWIoSWNwQWdlbnQucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScpLnJlc29sdmVzKEJpZ051bWJlcigxMDAwMDAwMDAwKSk7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRGZWUnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMTAwMDApKTtcbiAgICBzaW5vbi5zdHViKHV0aWxzLCAnZ2V0TWV0YURhdGEnKS5yZXR1cm5zKHtcbiAgICAgIG1ldGFEYXRhOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhEZWZhdWx0TWVtbyxcbiAgICAgIGluZ3Jlc3NFbmRUaW1lOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhEZWZhdWx0TWVtby5pbmdyZXNzX2VuZCA/PyAwLFxuICAgIH0pO1xuICAgIHNpbm9uLnN0dWIoaWNwLCAnc2lnbmF0dXJlcycpLnJldHVybnModGVzdERhdGEuUmVjb3ZlclRyYW5zYWN0aW9uU2lnbmF0dXJlV2l0aERlZmF1bHRNZW1vKTtcbiAgfTtcblxuICBjb25zdCBzZXR1cE1lbW9TdHVicyA9ICgpID0+IHtcbiAgICBzaW5vbi5zdHViKEljcEFnZW50LnByb3RvdHlwZSwgJ2dldEJhbGFuY2UnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMTAwMDAwMDAwMCkpO1xuICAgIHNpbm9uLnN0dWIoSWNwQWdlbnQucHJvdG90eXBlLCAnZ2V0RmVlJykucmVzb2x2ZXMoQmlnTnVtYmVyKDEwMDAwKSk7XG4gICAgc2lub24uc3R1Yih1dGlscywgJ2dldE1ldGFEYXRhJykucmV0dXJucyh7XG4gICAgICBtZXRhRGF0YTogdGVzdERhdGEuTWV0YURhdGFXaXRoTWVtbyxcbiAgICAgIGluZ3Jlc3NFbmRUaW1lOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhNZW1vLmluZ3Jlc3NfZW5kID8/IDAsXG4gICAgfSk7XG4gICAgc2lub24uc3R1YihpY3AsICdzaWduYXR1cmVzJykucmV0dXJucyh0ZXN0RGF0YS5SZWNvdmVyVHJhbnNhY3Rpb25TaWduYXR1cmVXaXRoTWVtbyk7XG4gIH07XG5cbiAgY29uc3Qgc2V0dXBMb3dCYWxhbmNlU3R1YnMgPSAoKSA9PiB7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRCYWxhbmNlJykucmVzb2x2ZXMoQmlnTnVtYmVyKDEwKSk7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRGZWUnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMTAwMDApKTtcbiAgICBzaW5vbi5zdHViKHV0aWxzLCAnZ2V0TWV0YURhdGEnKS5yZXR1cm5zKHtcbiAgICAgIG1ldGFEYXRhOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhEZWZhdWx0TWVtbyxcbiAgICAgIGluZ3Jlc3NFbmRUaW1lOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhEZWZhdWx0TWVtby5pbmdyZXNzX2VuZCA/PyAwLFxuICAgIH0pO1xuICB9O1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCdpY3AnLCBJY3AuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIHJlY292ZXJ5UGFyYW1zID0ge1xuICAgICAgdXNlcktleTogdGVzdERhdGEuV1JXUmVjb3ZlcnkudXNlcktleSxcbiAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuV1JXUmVjb3ZlcnkuYmFja3VwS2V5LFxuICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuV1JXUmVjb3Zlcnkud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLkFjY291bnRzLmFjY291bnQyLmFkZHJlc3MsXG4gICAgfTtcblxuICAgIGljcCA9IGJpdGdvLmNvaW4oJ2ljcCcpO1xuICAgIG5vZGVVcmwgPSBpY3AuZ2V0UHVibGljTm9kZVVybCgpO1xuICAgIGNvbnN0IHByaW5jaXBhbCA9IFByaW5jaXBhbC5mcm9tVWludDhBcnJheShMRURHRVJfQ0FOSVNURVJfSUQpO1xuICAgIGNvbnN0IGNhbmlzdGVySWRIZXggPSBwcmluY2lwYWwudG9UZXh0KCk7XG4gICAgYnJvYWRjYXN0RW5kcG9pbnQgPSBgL2FwaS92My9jYW5pc3Rlci8ke2NhbmlzdGVySWRIZXh9L2NhbGxgO1xuICAgIGJyb2FkY2FzdFJlc3BvbnNlID0gQnVmZmVyLmZyb20odGVzdERhdGEuUHVibGljTm9kZUFwaUJyb2FkY2FzdFJlc3BvbnNlLCAnaGV4Jyk7XG4gIH0pO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNldHVwRGVmYXVsdFN0dWJzKCk7XG4gICAgLy8gU2V0IHVwIGRlZmF1bHQgc3VjY2Vzc2Z1bCBub2NrIHJlc3BvbnNlXG4gICAgbm9jayhub2RlVXJsKS5wb3N0KGJyb2FkY2FzdEVuZHBvaW50KS5yZXBseSgyMDAsIGJyb2FkY2FzdFJlc3BvbnNlKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICByZWNvdmVyeVBhcmFtcyA9IHtcbiAgICAgIHVzZXJLZXk6IHRlc3REYXRhLldSV1JlY292ZXJ5LnVzZXJLZXksXG4gICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLldSV1JlY292ZXJ5LmJhY2t1cEtleSxcbiAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLldSV1JlY292ZXJ5LndhbGxldFBhc3NwaHJhc2UsXG4gICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzLFxuICAgIH07XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHJhbnNhY3Rpb24gd2l0aCBkZWZhdWx0IG1lbW8gc3VjY2Vzc2Z1bGx5JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlY292ZXJUeG4gPSBhd2FpdCBpY3AucmVjb3ZlcihyZWNvdmVyeVBhcmFtcyk7XG4gICAgcmVjb3ZlclR4bi5pZC5zaG91bGQuYmUuYS5TdHJpbmcoKTtcbiAgICBzaG91bGQuZXF1YWwocmVjb3ZlclR4bi5pZCwgdGVzdERhdGEuVHhuSWRXaXRoRGVmYXVsdE1lbW8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0cmFuc2FjdGlvbiB3aXRoIG1lbW8gc3VjY2Vzc2Z1bGx5JywgYXN5bmMgKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICBzZXR1cE1lbW9TdHVicygpO1xuICAgIHJlY292ZXJ5UGFyYW1zLm1lbW8gPSB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhNZW1vLm1lbW87XG4gICAgY29uc3QgcmVjb3ZlclR4biA9IGF3YWl0IGljcC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKTtcbiAgICByZWNvdmVyVHhuLmlkLnNob3VsZC5iZS5hLlN0cmluZygpO1xuICAgIHNob3VsZC5lcXVhbChyZWNvdmVyVHhuLmlkLCB0ZXN0RGF0YS5UeG5JZFdpdGhNZW1vKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdW5zaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24gc3VjY2Vzc2Z1bGx5JywgYXN5bmMgKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICBzZXR1cE1lbW9TdHVicygpO1xuXG4gICAgY29uc3QgdW5zaWduZWRTd2VlcFJlY292ZXJ5UGFyYW1zID0ge1xuICAgICAgYml0Z29LZXk6XG4gICAgICAgICcwMzEwNzY4NzM2YTAwNWVhNTM2NGUxYjViNTI4OGNmNTUzMjI0ZGQyOGIyZGY4Y2VkNjNiNzJhODAyMDQ3ODk2N2YwNWVjNWJjZTFmMjZjZDdlYjAwOWE0YmVhNDQ1YmI1NWMyZjU0YTMwZjI3MDZjMWEzNzQ3ZThkZjJkMjg4ODI5JyxcbiAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLkFjY291bnRzLmFjY291bnQyLmFkZHJlc3MsXG4gICAgfTtcbiAgICBjb25zdCByZWNvdmVyVHhuID0gYXdhaXQgaWNwLnJlY292ZXIodW5zaWduZWRTd2VlcFJlY292ZXJ5UGFyYW1zKTtcbiAgICByZWNvdmVyVHhuLnR4SGV4LnNob3VsZC5iZS5hLlN0cmluZygpO1xuICAgIHNob3VsZC5lcXVhbChyZWNvdmVyVHhuLnR4SGV4LCB0ZXN0RGF0YS5VbnNpZ25lZFN3ZWVwVHJhbnNhY3Rpb24pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWxlZCB0byByZWNvdmVyIGEgdW5zaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24gd2l0aCB3cm9uZyBiaXRnbyBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICAgIHNldHVwTWVtb1N0dWJzKCk7XG5cbiAgICBjb25zdCB1bnNpZ25lZFN3ZWVwUmVjb3ZlcnlQYXJhbXMgPSB7XG4gICAgICBiaXRnb0tleTogJ3Rlc3RLZXknLFxuICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyxcbiAgICB9O1xuICAgIGF3YWl0IGljcFxuICAgICAgLnJlY292ZXIodW5zaWduZWRTd2VlcFJlY292ZXJ5UGFyYW1zKVxuICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IENhbm5vdCBjb252ZXJ0IDB4IHRvIGEgQmlnSW50Jyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbGVkIHRvIHJlY292ZXIgcmVjb3ZlciBhIHVuc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uIHdpdGhvdXQgYml0Z28ga2V5JywgYXN5bmMgKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICBzZXR1cE1lbW9TdHVicygpO1xuXG4gICAgY29uc3QgdW5zaWduZWRTd2VlcFJlY292ZXJ5UGFyYW1zID0ge1xuICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyxcbiAgICB9O1xuICAgIGF3YWl0IGljcC5yZWNvdmVyKHVuc2lnbmVkU3dlZXBSZWNvdmVyeVBhcmFtcykuc2hvdWxkLnJlamVjdGVkV2l0aCgnRXJyb3IgZHVyaW5nIElDUCByZWNvdmVyeTogbWlzc2luZyBiaXRnb0tleScpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcmVjb3ZlciBpZiBicm9hZGNhc3QgQVBJIGZhaWxzJywgYXN5bmMgKCkgPT4ge1xuICAgIG5vY2suY2xlYW5BbGwoKTtcbiAgICBub2NrKG5vZGVVcmwpLnBvc3QoYnJvYWRjYXN0RW5kcG9pbnQpLnJlcGx5KDUwMCwgJ0ludGVybmFsIFNlcnZlciBFcnJvcicpO1xuICAgIHJlY292ZXJ5UGFyYW1zLm1lbW8gPSAwO1xuICAgIGF3YWl0IGljcFxuICAgICAgLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpXG4gICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aChcbiAgICAgICAgJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IFRyYW5zYWN0aW9uIGJyb2FkY2FzdCBlcnJvcjogUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSA1MDAnXG4gICAgICApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcmVjb3ZlciB0eG4gaWYgYmFsYW5jZSBpcyB6ZXJvJywgYXN5bmMgKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICBzaW5vbi5zdHViKEljcEFnZW50LnByb3RvdHlwZSwgJ2dldEJhbGFuY2UnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMCkpO1xuICAgIHNpbm9uLnN0dWIoSWNwQWdlbnQucHJvdG90eXBlLCAnZ2V0RmVlJykucmVzb2x2ZXMoQmlnTnVtYmVyKDEwMDAwKSk7XG4gICAgYXdhaXQgaWNwLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpLnNob3VsZC5yZWplY3RlZFdpdGgoRXJyb3JOb0lucHV0VG9SZWNvdmVyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHJlY292ZXIgdHhuIGlmIGJhbGFuY2UgaXMgbG93JywgYXN5bmMgKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICBzZXR1cExvd0JhbGFuY2VTdHVicygpO1xuICAgIGF3YWl0IGljcFxuICAgICAgLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpXG4gICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnRXJyb3IgZHVyaW5nIElDUCByZWNvdmVyeTogRGlkIG5vdCBoYXZlIGVub3VnaCBmdW5kcyB0byByZWNvdmVyJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIHR4biBpZiB0aGUgYmFsYW5jZSBwcm92aWRlciBmYWlscycsIGFzeW5jICgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRCYWxhbmNlJykucmVqZWN0cyhuZXcgUmVjb3ZlcnlQcm92aWRlckVycm9yKCdFcnJvciBmZXRjaGluZyBiYWxhbmNlJykpO1xuICAgIGF3YWl0IGljcC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKS5zaG91bGQucmVqZWN0ZWRXaXRoKFJlY292ZXJ5UHJvdmlkZXJFcnJvcik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIHR4biBpZiB1c2VyS2V5IGlzIG5vdCBwcm92aWRlZCcsIGFzeW5jICgpID0+IHtcbiAgICByZWNvdmVyeVBhcmFtcy51c2VyS2V5ID0gJyc7XG4gICAgYXdhaXQgaWNwLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IG1pc3NpbmcgdXNlcktleScpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcmVjb3ZlciB0eG4gaWYgYmFja3VwS2V5IGlzIG5vdCBwcm92aWRlZCcsIGFzeW5jICgpID0+IHtcbiAgICByZWNvdmVyeVBhcmFtcy5iYWNrdXBLZXkgPSAnJztcbiAgICBhd2FpdCBpY3AucmVjb3ZlcihyZWNvdmVyeVBhcmFtcykuc2hvdWxkLnJlamVjdGVkV2l0aCgnRXJyb3IgZHVyaW5nIElDUCByZWNvdmVyeTogbWlzc2luZyBiYWNrdXBLZXknKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHJlY292ZXIgdHhuIGlmIHdhbGxldCBwYXNzcGhyYXNlIGlzIG5vdCBwcm92aWRlZCcsIGFzeW5jICgpID0+IHtcbiAgICByZWNvdmVyeVBhcmFtcy53YWxsZXRQYXNzcGhyYXNlID0gJyc7XG4gICAgYXdhaXQgaWNwLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IG1pc3Npbmcgd2FsbGV0IHBhc3NwaHJhc2UnKTtcbiAgfSk7XG59KTtcbiJdfQ==