@appium/base-driver 8.4.1 → 8.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/basedriver/commands/log.d.ts.map +1 -1
- package/build/lib/basedriver/commands/log.js +8 -6
- package/build/lib/basedriver/core.d.ts +3 -3
- package/build/lib/basedriver/core.js +1 -1
- package/build/lib/basedriver/device-settings.d.ts +7 -4
- package/build/lib/basedriver/device-settings.d.ts.map +1 -1
- package/build/lib/basedriver/device-settings.js +4 -9
- package/build/lib/basedriver/helpers.js +3 -3
- package/build/lib/express/idempotency.js +4 -4
- package/build/lib/protocol/routes.d.ts.map +1 -1
- package/build/lib/protocol/routes.js +9 -1
- package/build/test/basedriver/driver-e2e-tests.js +4 -4
- package/build/test/unit/basedriver/device-settings.spec.js +97 -0
- package/build/test/unit/protocol/routes.spec.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/lib/basedriver/commands/log.js +8 -13
- package/lib/basedriver/core.js +1 -1
- package/lib/basedriver/device-settings.js +7 -12
- package/lib/basedriver/helpers.js +2 -2
- package/lib/express/idempotency.js +3 -3
- package/lib/protocol/routes.js +3 -0
- package/package.json +6 -6
- package/test/basedriver/driver-e2e-tests.js +3 -4
|
@@ -329,12 +329,12 @@ function baseDriverE2ETests(DriverClass, defaultCaps = {}) {
|
|
|
329
329
|
it('should be able to get settings object', function () {
|
|
330
330
|
d.settings.getSettings().ignoreUnimportantViews.should.be.false;
|
|
331
331
|
});
|
|
332
|
-
it('should
|
|
332
|
+
it('should not reject when `updateSettings` method is not provided', async function () {
|
|
333
333
|
await d.settings.update({
|
|
334
334
|
ignoreUnimportantViews: true
|
|
335
|
-
}).should.
|
|
335
|
+
}).should.not.be.rejected;
|
|
336
336
|
});
|
|
337
|
-
it('should
|
|
337
|
+
it('should reject for invalid update object', async function () {
|
|
338
338
|
await d.settings.update('invalid json').should.eventually.be.rejectedWith('JSON');
|
|
339
339
|
});
|
|
340
340
|
});
|
|
@@ -410,4 +410,4 @@ function baseDriverE2ETests(DriverClass, defaultCaps = {}) {
|
|
|
410
410
|
|
|
411
411
|
var _default = baseDriverE2ETests;
|
|
412
412
|
exports.default = _default;
|
|
413
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvYmFzZWRyaXZlci9kcml2ZXItZTJlLXRlc3RzLmpzIl0sIm5hbWVzIjpbIlBPU1QiLCJERUxFVEUiLCJNRVRIT0RTIiwiYmFzZURyaXZlckUyRVRlc3RzIiwiRHJpdmVyQ2xhc3MiLCJkZWZhdWx0Q2FwcyIsImFkZHJlc3MiLCJURVNUX0hPU1QiLCJwb3J0IiwiY2xhc3NOYW1lIiwibmFtZSIsImRlc2NyaWJlIiwiYmFzZVNlcnZlciIsImQiLCJuZXdTZXNzaW9uVVJMIiwiY3JlYXRlQXBwaXVtVGVzdFVSTCIsImNyZWF0ZVNlc3Npb25VUkwiLCJiZWZvcmUiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJob3N0bmFtZSIsIl8iLCJhZnRlciIsImNsb3NlIiwic3RhcnRTZXNzaW9uIiwiY2FwcyIsInVybCIsIm1ldGhvZCIsImRhdGEiLCJjYXBhYmlsaXRpZXMiLCJhbHdheXNNYXRjaCIsImZpcnN0TWF0Y2giLCJ2YWx1ZSIsImVuZFNlc3Npb24iLCJpZCIsInZhbGlkYXRlU3RhdHVzIiwiZ2V0U2Vzc2lvbiIsIml0Iiwic2Vzc2lvbklkcyIsInRpbWVzIiwic2Vzc2lvbklkIiwiaGVhZGVycyIsInNpbXBsZSIsInJlc29sdmVXaXRoRnVsbFJlc3BvbnNlIiwicHVzaCIsInVuaXEiLCJsZW5ndGgiLCJzaG91bGQiLCJlcXVhbCIsInN0YXR1cyIsInJlcXMiLCJCIiwiYWxsIiwibWFwIiwieCIsImV4aXN0IiwicGxhdGZvcm1OYW1lIiwiZGV2aWNlTmFtZSIsInNraXAiLCJvcmlnaW5hbEZpbmRFbGVtZW50Iiwib3JpZ2luYWxGaW5kRWxlbWVudHMiLCJzdGFydFRpbWVvdXRTZXNzaW9uIiwidGltZW91dCIsImNsb25lRGVlcCIsImZpbmRFbGVtZW50IiwiYmluZCIsImZpbmRFbGVtZW50cyIsImRlbGF5IiwibmV3U2Vzc2lvbiIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJiZSIsImFib3ZlIiwic2Vzc2lvblVSTCIsInVzaW5nIiwiZXJyb3IiLCJyZXNwIiwic3RhcnQiLCJEYXRlIiwibm93IiwiZXFsIiwibm90Iiwibm9Db21tYW5kVGltZXIiLCJzZXR0aW5ncyIsIkRldmljZVNldHRpbmdzIiwiaWdub3JlVW5pbXBvcnRhbnRWaWV3cyIsImdldFNldHRpbmdzIiwiZmFsc2UiLCJ1cGRhdGUiLCJldmVudHVhbGx5IiwicmVqZWN0ZWRXaXRoIiwiX29sZEdldFN0YXR1cyIsImdldFN0YXR1cyIsInJlcVByb21pc2UiLCJzaHV0ZG93bkV2ZW50UHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJvblVuZXhwZWN0ZWRTaHV0ZG93biIsInN0YXJ0VW5leHBlY3RlZFNodXRkb3duIiwibWVzc2FnZSIsImNvbnRhaW4iLCJzZXNzaW9uIiwicmVzIiwiZXZlbnRzIiwiT2JqZWN0IiwiYXNzaWduIiwibmV3U2Vzc2lvblJlcXVlc3RlZCIsIm5ld1Nlc3Npb25TdGFydGVkIiwiYSIsIkJhc2VEcml2ZXIiLCJyZXQiLCJQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAiLCJwbGF0Zm9ybVZlcnNpb24iLCJvcHRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBLE1BQU07QUFBQ0EsRUFBQUEsSUFBRDtBQUFPQyxFQUFBQTtBQUFQLElBQWlCQyxnQkFBdkI7O0FBRUEsU0FBU0Msa0JBQVQsQ0FBNkJDLFdBQTdCLEVBQTBDQyxXQUFXLEdBQUcsRUFBeEQsRUFBNEQ7QUFBQTs7QUFDMUQsTUFBSUMsT0FBTywyQkFBR0QsV0FBVyxDQUFDLGdCQUFELENBQWQsdUVBQW9DRSxrQkFBL0M7QUFDQSxNQUFJQyxJQUFJLEdBQUdILFdBQVcsQ0FBQyxhQUFELENBQXRCO0FBQ0EsUUFBTUksU0FBUyxHQUFHTCxXQUFXLENBQUNNLElBQVosSUFBb0Isa0JBQXRDO0FBRUFDLEVBQUFBLFFBQVEsQ0FBRSxzQkFBcUJGLFNBQVUsR0FBakMsRUFBcUMsWUFB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b0VBQUQsRUFBdUUsa0JBQWtCO0FBQ3pGLGdCQUFNMEUsR0FBRyxHQUFHLE1BQU12RixZQUFZLENBQUM7QUFDN0JnQyxZQUFBQSxZQUFZLEVBQUUsS0FEZTtBQUU3QixhQUFDd0Qsc0NBQUQsR0FBNEI7QUFDMUJDLGNBQUFBLGVBQWUsRUFBRSxNQURTO0FBRTFCLG1DQUFxQjtBQUZLO0FBRkMsV0FBRCxDQUE5QjtBQU9BbkcsVUFBQUEsQ0FBQyxDQUFDb0csSUFBRixDQUFPRCxlQUFQLENBQXVCbEUsTUFBdkIsQ0FBOEJnQyxHQUE5QixDQUFrQyxNQUFsQztBQUNBakUsVUFBQUEsQ0FBQyxDQUFDb0csSUFBRixDQUFPekQsVUFBUCxDQUFrQlYsTUFBbEIsQ0FBeUJnQyxHQUF6QixDQUE2QixXQUE3QjtBQUNBLGdCQUFNOUMsVUFBVSxDQUFDOEUsR0FBRyxDQUFDdkUsU0FBTCxDQUFoQjtBQUNELFNBWEMsQ0FBRjtBQVlELE9BYk8sQ0FBUjtBQWNEO0FBQ0YsR0F4Vk8sQ0FBUjtBQXlWRDs7ZUFFY3BDLGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIsIHNlcnZlciwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBEZXZpY2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgVEVTVF9IT1NULCBnZXRUZXN0UG9ydCwgY3JlYXRlQXBwaXVtVVJMLCBNRVRIT0RTIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAgfSBmcm9tICcuLi8uLi9saWIvYmFzZWRyaXZlci9jYXBhYmlsaXRpZXMnO1xuY29uc3Qge1BPU1QsIERFTEVURX0gPSBNRVRIT0RTO1xuXG5mdW5jdGlvbiBiYXNlRHJpdmVyRTJFVGVzdHMgKERyaXZlckNsYXNzLCBkZWZhdWx0Q2FwcyA9IHt9KSB7XG4gIGxldCBhZGRyZXNzID0gZGVmYXVsdENhcHNbJ2FwcGl1bTphZGRyZXNzJ10gPz8gVEVTVF9IT1NUO1xuICBsZXQgcG9ydCA9IGRlZmF1bHRDYXBzWydhcHBpdW06cG9ydCddO1xuICBjb25zdCBjbGFzc05hbWUgPSBEcml2ZXJDbGFzcy5uYW1lIHx8ICcodW5rbm93biBkcml2ZXIpJztcblxuICBkZXNjcmliZShgQmFzZURyaXZlciBFMkUgKGFzICR7Y2xhc3NOYW1lfSlgLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGJhc2VTZXJ2ZXIsIGQ7XG4gICAgLyoqXG4gICAgICAgKiBUaGlzIFVSTCBjcmVhdGVzIGEgbmV3IHNlc3Npb25cbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKiovXG4gICAgbGV0IG5ld1Nlc3Npb25VUkw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgVVJMIHdpdGggYmFzZSBob3N0L3BvcnQuIFN1cHBseSBgc2Vzc2lvbmAgYW5kIGBwYXRobmFtZWBcbiAgICAgKiBAdHlwZSB7Xy5DdXJyaWVkRnVuY3Rpb24yPHN0cmluZyxzdHJpbmcsc3RyaW5nPn1cbiAgICAgKi9cbiAgICBsZXQgY3JlYXRlQXBwaXVtVGVzdFVSTDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBVUkwgd2l0aCB0aGUgZ2l2ZW4gc2Vzc2lvbiBJRCBhbmQgYSBibGFuayBwYXRobmFtZTtcbiAgICAgKiBlLmcuLCBgaHR0cDovL2Zvby5iYXI6MTIzL3Nlc3Npb24vPHNlc3Npb24taWQ+YFxuICAgICAqICBAdHlwZSB7Xy5DdXJyaWVkRnVuY3Rpb24xPHN0cmluZyxzdHJpbmc+fVxuICAgICAqL1xuICAgIGxldCBjcmVhdGVTZXNzaW9uVVJMO1xuXG4gICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHBvcnQgPSBwb3J0ID8/IGF3YWl0IGdldFRlc3RQb3J0KCk7XG4gICAgICBkZWZhdWx0Q2FwcyA9IHsuLi5kZWZhdWx0Q2FwcywgJ2FwcGl1bTpwb3J0JzogcG9ydH07XG4gICAgICBkID0gbmV3IERyaXZlckNsYXNzKHtwb3J0LCBhZGRyZXNzfSk7XG4gICAgICBiYXNlU2VydmVyID0gYXdhaXQgc2VydmVyKHtcbiAgICAgICAgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uOiByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24oZCksXG4gICAgICAgIHBvcnQsXG4gICAgICAgIGhvc3RuYW1lOiBURVNUX0hPU1RcbiAgICAgIH0pO1xuICAgICAgY3JlYXRlQXBwaXVtVGVzdFVSTCA9IGNyZWF0ZUFwcGl1bVVSTChhZGRyZXNzLCBwb3J0KTtcbiAgICAgIG5ld1Nlc3Npb25VUkwgPSBjcmVhdGVBcHBpdW1UZXN0VVJMKCcnLCAnc2Vzc2lvbicpO1xuICAgICAgY3JlYXRlU2Vzc2lvblVSTCA9IGNyZWF0ZUFwcGl1bVRlc3RVUkwoXywgJycpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZVNlcnZlci5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXNzaW9uIChjYXBzKSB7XG4gICAgICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgdXJsOiBuZXdTZXNzaW9uVVJMLFxuICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgIGRhdGE6IHtjYXBhYmlsaXRpZXM6IHthbHdheXNNYXRjaDogY2FwcywgZmlyc3RNYXRjaDogW3t9XX19LFxuICAgICAgfSkpLmRhdGEudmFsdWU7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZW5kU2Vzc2lvbiAoaWQpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoaWQpLFxuICAgICAgICBtZXRob2Q6IERFTEVURSxcbiAgICAgICAgdmFsaWRhdGVTdGF0dXM6IG51bGwsXG4gICAgICB9KSkuZGF0YS52YWx1ZTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBnZXRTZXNzaW9uIChpZCkge1xuICAgICAgcmV0dXJuIChhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChpZCksXG4gICAgICB9KSkuZGF0YS52YWx1ZTtcbiAgICB9XG5cbiAgICBkZXNjcmliZSgnc2Vzc2lvbiBoYW5kbGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIGlkZW1wb3RlbmN5IHdoaWxlIGNyZWF0aW5nIHNlc3Npb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzZXNzaW9uSWRzID0gW107XG4gICAgICAgIGxldCB0aW1lcyA9IDA7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjb25zdCB7c2Vzc2lvbklkfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgICAgICB1cmw6IG5ld1Nlc3Npb25VUkwsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdYLUlkZW1wb3RlbmN5LUtleSc6ICcxMjM0NTYnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICAgIGRhdGE6IHtjYXBhYmlsaXRpZXM6IHthbHdheXNNYXRjaDogZGVmYXVsdENhcHMsIGZpcnN0TWF0Y2g6IFt7fV19fSxcbiAgICAgICAgICAgIHNpbXBsZTogZmFsc2UsXG4gICAgICAgICAgICByZXNvbHZlV2l0aEZ1bGxSZXNwb25zZTogdHJ1ZVxuICAgICAgICAgIH0pKS5kYXRhLnZhbHVlO1xuXG4gICAgICAgICAgc2Vzc2lvbklkcy5wdXNoKHNlc3Npb25JZCk7XG4gICAgICAgICAgdGltZXMrKztcbiAgICAgICAgfSB3aGlsZSAodGltZXMgPCAyKTtcbiAgICAgICAgXy51bmlxKHNlc3Npb25JZHMpLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG5cbiAgICAgICAgY29uc3Qge3N0YXR1cywgZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVTZXNzaW9uVVJMKHNlc3Npb25JZHNbMF0pLFxuICAgICAgICAgIG1ldGhvZDogREVMRVRFLFxuICAgICAgICB9KTtcbiAgICAgICAgc3RhdHVzLnNob3VsZC5lcXVhbCgyMDApO1xuICAgICAgICBzaG91bGQuZXF1YWwoZGF0YS52YWx1ZSwgbnVsbCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgaWRlbXBvdGVuY3kgd2hpbGUgY3JlYXRpbmcgcGFyYWxsZWwgc2Vzc2lvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHJlcXMgPSBbXTtcbiAgICAgICAgbGV0IHRpbWVzID0gMDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIHJlcXMucHVzaChheGlvcyh7XG4gICAgICAgICAgICB1cmw6IG5ld1Nlc3Npb25VUkwsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdYLUlkZW1wb3RlbmN5LUtleSc6ICcxMjM0NScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgICAgZGF0YToge2NhcGFiaWxpdGllczoge2Fsd2F5c01hdGNoOiBkZWZhdWx0Q2FwcywgZmlyc3RNYXRjaDogW3t9XX19LFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICB0aW1lcysrO1xuICAgICAgICB9IHdoaWxlICh0aW1lcyA8IDIpO1xuICAgICAgICBjb25zdCBzZXNzaW9uSWRzID0gKGF3YWl0IEIuYWxsKHJlcXMpKS5tYXAoKHgpID0+IHguZGF0YS52YWx1ZS5zZXNzaW9uSWQpO1xuICAgICAgICBfLnVuaXEoc2Vzc2lvbklkcykubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcblxuICAgICAgICBjb25zdCB7c3RhdHVzLCBkYXRhfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoc2Vzc2lvbklkc1swXSksXG4gICAgICAgICAgbWV0aG9kOiBERUxFVEUsXG4gICAgICAgIH0pO1xuICAgICAgICBzdGF0dXMuc2hvdWxkLmVxdWFsKDIwMCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkYXRhLnZhbHVlLCBudWxsKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBzZXNzaW9uIGFuZCByZXRyaWV2ZSBhIHNlc3Npb24gaWQsIHRoZW4gZGVsZXRlIGl0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQge3N0YXR1cywgZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBuZXdTZXNzaW9uVVJMLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7Y2FwYWJpbGl0aWVzOiB7YWx3YXlzTWF0Y2g6IGRlZmF1bHRDYXBzLCBmaXJzdE1hdGNoOiBbe31dfX0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0YXR1cy5zaG91bGQuZXF1YWwoMjAwKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGRhdGEudmFsdWUuc2Vzc2lvbklkKTtcbiAgICAgICAgZGF0YS52YWx1ZS5jYXBhYmlsaXRpZXMucGxhdGZvcm1OYW1lLnNob3VsZC5lcXVhbChkZWZhdWx0Q2Fwcy5wbGF0Zm9ybU5hbWUpO1xuICAgICAgICBkYXRhLnZhbHVlLmNhcGFiaWxpdGllcy5kZXZpY2VOYW1lLnNob3VsZC5lcXVhbChkZWZhdWx0Q2Fwc1snYXBwaXVtOmRldmljZU5hbWUnXSk7XG5cbiAgICAgICAgKHtzdGF0dXMsIGRhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChkLnNlc3Npb25JZCksXG4gICAgICAgICAgbWV0aG9kOiBERUxFVEUsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBzdGF0dXMuc2hvdWxkLmVxdWFsKDIwMCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkYXRhLnZhbHVlLCBudWxsKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkLCBudWxsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQuc2tpcCgnc2hvdWxkIHRocm93IE5ZSSBmb3IgY29tbWFuZHMgbm90IGltcGxlbWVudGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NvbW1hbmQgdGltZW91dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgb3JpZ2luYWxGaW5kRWxlbWVudCwgb3JpZ2luYWxGaW5kRWxlbWVudHM7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0VGltZW91dFNlc3Npb24gKHRpbWVvdXQpIHtcbiAgICAgICAgY29uc3QgY2FwcyA9IF8uY2xvbmVEZWVwKGRlZmF1bHRDYXBzKTtcbiAgICAgICAgY2Fwc1snYXBwaXVtOm5ld0NvbW1hbmRUaW1lb3V0J10gPSB0aW1lb3V0O1xuICAgICAgICByZXR1cm4gYXdhaXQgc3RhcnRTZXNzaW9uKGNhcHMpO1xuICAgICAgfVxuXG4gICAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICBvcmlnaW5hbEZpbmRFbGVtZW50ID0gZC5maW5kRWxlbWVudDtcbiAgICAgICAgZC5maW5kRWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gJ2Zvbyc7XG4gICAgICAgIH0uYmluZChkKTtcblxuICAgICAgICBvcmlnaW5hbEZpbmRFbGVtZW50cyA9IGQuZmluZEVsZW1lbnRzO1xuICAgICAgICBkLmZpbmRFbGVtZW50cyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBCLmRlbGF5KDIwMCk7XG4gICAgICAgICAgcmV0dXJuIFsnZm9vJ107XG4gICAgICAgIH0uYmluZChkKTtcbiAgICAgIH0pO1xuXG4gICAgICBhZnRlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQuZmluZEVsZW1lbnQgPSBvcmlnaW5hbEZpbmRFbGVtZW50O1xuICAgICAgICBkLmZpbmRFbGVtZW50cyA9IG9yaWdpbmFsRmluZEVsZW1lbnRzO1xuICAgICAgfSk7XG5cblxuICAgICAgaXQoJ3Nob3VsZCBzZXQgYSBkZWZhdWx0IGNvbW1hbmRUaW1lb3V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbmV3U2Vzc2lvbiA9IGF3YWl0IHN0YXJ0VGltZW91dFNlc3Npb24oKTtcbiAgICAgICAgZC5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5iZS5hYm92ZSgwKTtcbiAgICAgICAgYXdhaXQgZW5kU2Vzc2lvbihuZXdTZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aW1lb3V0IG9uIGNvbW1hbmRzIHVzaW5nIGNvbW1hbmRUaW1lb3V0IGNhcCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDAuMjUpO1xuICAgICAgICAvLyBYWFg6IHJhY2UgY29uZGl0aW9uOiB3ZSBtdXN0IGJ1aWxkIHRoaXMgVVJMIGJlZm9yZSAuLi5zb21ldGhpbmcgaGFwcGVucy4uLlxuICAgICAgICAvLyB3aGljaCBjYXVzZXMgYGQuc2Vzc2lvbklkYCB0byBiZSBtaXNzaW5nXG4gICAgICAgIGxldCBzZXNzaW9uVVJMID0gY3JlYXRlU2Vzc2lvblVSTChkLnNlc3Npb25JZCk7XG4gICAgICAgIGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUFwcGl1bVRlc3RVUkwoZC5zZXNzaW9uSWQsICdlbGVtZW50JyksXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIGRhdGE6IHt1c2luZzogJ25hbWUnLCB2YWx1ZTogJ2Zvbyd9LFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgQi5kZWxheSg0MDApO1xuICAgICAgICBjb25zdCB7ZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBzZXNzaW9uVVJMLFxuICAgICAgICAgIHZhbGlkYXRlU3RhdHVzOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGRhdGEudmFsdWUuZXJyb3IsICdpbnZhbGlkIHNlc3Npb24gaWQnKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkLCBudWxsKTtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzcC5lcnJvciwgJ2ludmFsaWQgc2Vzc2lvbiBpZCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IHRpbWVvdXQgd2l0aCBjb21tYW5kVGltZW91dCBvZiBmYWxzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDAuMSk7XG4gICAgICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChkLnNlc3Npb25JZCwgJ2VsZW1lbnRzJyksXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIGRhdGE6IHt1c2luZzogJ25hbWUnLCB2YWx1ZTogJ2Zvbyd9LFxuICAgICAgICB9KSkuZGF0YTtcbiAgICAgICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmFib3ZlKDE1MCk7XG4gICAgICAgIHZhbHVlLnNob3VsZC5lcWwoWydmb28nXSk7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IHRpbWVvdXQgd2l0aCBjb21tYW5kVGltZW91dCBvZiAwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBkLm5ld0NvbW1hbmRUaW1lb3V0TXMgPSAyO1xuICAgICAgICBsZXQgbmV3U2Vzc2lvbiA9IGF3YWl0IHN0YXJ0VGltZW91dFNlc3Npb24oMCk7XG5cbiAgICAgICAgYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChkLnNlc3Npb25JZCwgJ2VsZW1lbnQnKSxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge3VzaW5nOiAnbmFtZScsIHZhbHVlOiAnZm9vJ30sXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDQwMCk7XG4gICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChkLnNlc3Npb25JZCksXG4gICAgICAgIH0pKS5kYXRhO1xuICAgICAgICB2YWx1ZS5wbGF0Zm9ybU5hbWUuc2hvdWxkLmVxdWFsKGRlZmF1bHRDYXBzLnBsYXRmb3JtTmFtZSk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3AsIG51bGwpO1xuXG4gICAgICAgIGQubmV3Q29tbWFuZFRpbWVvdXRNcyA9IDYwICogMTAwMDtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIG5vdCB0aW1lb3V0IGlmIGl0cyBqdXN0IHRoZSBjb21tYW5kIHRha2luZyBhd2hpbGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBuZXdTZXNzaW9uID0gYXdhaXQgc3RhcnRUaW1lb3V0U2Vzc2lvbigwLjI1KTtcbiAgICAgICAgLy8gWFhYOiByYWNlIGNvbmRpdGlvbjogd2UgbXVzdCBidWlsZCB0aGlzIFVSTCBiZWZvcmUgLi4uc29tZXRoaW5nIGhhcHBlbnMuLi5cbiAgICAgICAgLy8gd2hpY2ggY2F1c2VzIGBkLnNlc3Npb25JZGAgdG8gYmUgbWlzc2luZ1xuICAgICAgICBsZXQgc2Vzc2lvblVSTCA9IGNyZWF0ZVNlc3Npb25VUkwoZC5zZXNzaW9uSWQpO1xuICAgICAgICBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKGQuc2Vzc2lvbklkLCAnZWxlbWVudCcpLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7dXNpbmc6ICduYW1lJywgdmFsdWU6ICdmb28nfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoNDAwKTtcbiAgICAgICAgY29uc3Qge3ZhbHVlfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBzZXNzaW9uVVJMLFxuICAgICAgICAgIHZhbGlkYXRlU3RhdHVzOiBudWxsLFxuICAgICAgICB9KSkuZGF0YTtcbiAgICAgICAgdmFsdWUuZXJyb3Iuc2hvdWxkLmVxdWFsKCdpbnZhbGlkIHNlc3Npb24gaWQnKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkLCBudWxsKTtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICByZXNwLmVycm9yLnNob3VsZC5lcXVhbCgnaW52YWxpZCBzZXNzaW9uIGlkJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBub3QgaGF2ZSBhIHRpbWVyIHJ1bm5pbmcgYmVmb3JlIG9yIGFmdGVyIGEgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChkLm5vQ29tbWFuZFRpbWVyKTtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDAuMjUpO1xuICAgICAgICBuZXdTZXNzaW9uLnNlc3Npb25JZC5zaG91bGQuZXF1YWwoZC5zZXNzaW9uSWQpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZC5ub0NvbW1hbmRUaW1lcik7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGQubm9Db21tYW5kVGltZXIpO1xuICAgICAgfSk7XG5cbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdzZXR0aW5ncyBhcGknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICBkLnNldHRpbmdzID0gbmV3IERldmljZVNldHRpbmdzKHtpZ25vcmVVbmltcG9ydGFudFZpZXdzOiBmYWxzZX0pO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZ2V0IHNldHRpbmdzIG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5zZXR0aW5ncy5nZXRTZXR0aW5ncygpLmlnbm9yZVVuaW1wb3J0YW50Vmlld3Muc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gdXBkYXRlU2V0dGluZ3MgbWV0aG9kIGlzIG5vdCBkZWZpbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLnNldHRpbmdzLnVwZGF0ZSh7aWdub3JlVW5pbXBvcnRhbnRWaWV3czogdHJ1ZX0pLnNob3VsZC5ldmVudHVhbGx5XG4gICAgICAgICAgICAgICAgLmJlLnJlamVjdGVkV2l0aCgnb25TZXR0aW5nc1VwZGF0ZScpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpbnZhbGlkIHVwZGF0ZSBvYmplY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuc2V0dGluZ3MudXBkYXRlKCdpbnZhbGlkIGpzb24nKS5zaG91bGQuZXZlbnR1YWxseVxuICAgICAgICAgICAgICAgIC5iZS5yZWplY3RlZFdpdGgoJ0pTT04nKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3VuZXhwZWN0ZWQgZXhpdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBhIGN1cnJlbnQgY29tbWFuZCB3aGVuIHRoZSBkcml2ZXIgY3Jhc2hlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5fb2xkR2V0U3RhdHVzID0gZC5nZXRTdGF0dXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZC5nZXRTdGF0dXMgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBhd2FpdCBCLmRlbGF5KDUwMDApO1xuICAgICAgICAgIH0uYmluZChkKTtcbiAgICAgICAgICBjb25zdCByZXFQcm9taXNlID0gYXhpb3Moe1xuICAgICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKCcnLCAnc3RhdHVzJyksXG4gICAgICAgICAgICB2YWxpZGF0ZVN0YXR1czogbnVsbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgcmVxdWVzdCBnZXRzIHRvIHRoZSBzZXJ2ZXIgYmVmb3JlIG91ciBzaHV0ZG93blxuICAgICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwKTtcbiAgICAgICAgICBjb25zdCBzaHV0ZG93bkV2ZW50UHJvbWlzZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignb25VbmV4cGVjdGVkU2h1dGRvd24gZXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgZmlyZWQgd2l0aGluIDUgc2Vjb25kcyB0aW1lb3V0JykpLCA1MDAwKTtcbiAgICAgICAgICAgIGQub25VbmV4cGVjdGVkU2h1dGRvd24ocmVzb2x2ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZC5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoJ0NyYXNoeXRpbWVzJykpO1xuICAgICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgcmVxUHJvbWlzZSkuZGF0YTtcbiAgICAgICAgICB2YWx1ZS5tZXNzYWdlLnNob3VsZC5jb250YWluKCdDcmFzaHl0aW1lcycpO1xuICAgICAgICAgIGF3YWl0IHNodXRkb3duRXZlbnRQcm9taXNlO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGQuZ2V0U3RhdHVzID0gZC5fb2xkR2V0U3RhdHVzO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdldmVudCB0aW1pbmdzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBub3QgYWRkIHRpbWluZ3MgaWYgbm90IHVzaW5nIG9wdC1pbiBjYXAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBzdGFydFNlc3Npb24oZGVmYXVsdENhcHMpO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBnZXRTZXNzaW9uKHNlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChyZXMuZXZlbnRzKTtcbiAgICAgICAgYXdhaXQgZW5kU2Vzc2lvbihzZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgYWRkIHN0YXJ0IHNlc3Npb24gdGltaW5ncycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY2FwcyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDYXBzLCB7J2FwcGl1bTpldmVudFRpbWluZ3MnOiB0cnVlfSk7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBzdGFydFNlc3Npb24oY2Fwcyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCBnZXRTZXNzaW9uKHNlc3Npb24uc2Vzc2lvbklkKSk7XG4gICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KHJlcy5ldmVudHMubmV3U2Vzc2lvblJlcXVlc3RlZCk7XG4gICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzLm5ld1Nlc3Npb25TdGFydGVkKTtcbiAgICAgICAgcmVzLmV2ZW50cy5uZXdTZXNzaW9uUmVxdWVzdGVkWzBdLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgcmVzLmV2ZW50cy5uZXdTZXNzaW9uU3RhcnRlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24oc2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoRHJpdmVyQ2xhc3MgPT09IEJhc2VEcml2ZXIpIHtcbiAgICAgIC8vIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBiYXNlZHJpdmVyLCBub3Qgb3RoZXIgZHJpdmVycyB3aGljaCBhbHNvIHVzZSB0aGVzZSB0ZXN0cywgc2luY2Ugd2VcbiAgICAgIC8vIGRvbid0IHdhbnQgdGhlbSB0byB0cnkgYW5kIHN0YXJ0IHNlc3Npb25zIHdpdGggdGhlc2UgcmFuZG9tIGNhcGFiaWxpdGllcyB0aGF0IGFyZVxuICAgICAgLy8gbmVjZXNzYXJ5IHRvIHRlc3QgdGhlIGFwcGl1bSBvcHRpb25zIGxvZ2ljXG4gICAgICBkZXNjcmliZSgnc3BlY2lhbCBhcHBpdW06b3B0aW9ucyBjYXBhYmlsaXR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gc3RhcnQgYSBzZXNzaW9uIHdpdGggY2FwcyBoZWxkIGluIGFwcGl1bTpvcHRpb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHJldCA9IGF3YWl0IHN0YXJ0U2Vzc2lvbih7XG4gICAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICAgW1BSRUZJWEVEX0FQUElVTV9PUFRTX0NBUF06IHtcbiAgICAgICAgICAgICAgcGxhdGZvcm1WZXJzaW9uOiAnMTEuNCcsXG4gICAgICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdpUGhvbmUgMTEnLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGQub3B0cy5wbGF0Zm9ybVZlcnNpb24uc2hvdWxkLmVxbCgnMTEuNCcpO1xuICAgICAgICAgIGQub3B0cy5kZXZpY2VOYW1lLnNob3VsZC5lcWwoJ2lQaG9uZSAxMScpO1xuICAgICAgICAgIGF3YWl0IGVuZFNlc3Npb24ocmV0LnNlc3Npb25JZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZURyaXZlckUyRVRlc3RzO1xuIl19
|
|
413
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvYmFzZWRyaXZlci9kcml2ZXItZTJlLXRlc3RzLmpzIl0sIm5hbWVzIjpbIlBPU1QiLCJERUxFVEUiLCJNRVRIT0RTIiwiYmFzZURyaXZlckUyRVRlc3RzIiwiRHJpdmVyQ2xhc3MiLCJkZWZhdWx0Q2FwcyIsImFkZHJlc3MiLCJURVNUX0hPU1QiLCJwb3J0IiwiY2xhc3NOYW1lIiwibmFtZSIsImRlc2NyaWJlIiwiYmFzZVNlcnZlciIsImQiLCJuZXdTZXNzaW9uVVJMIiwiY3JlYXRlQXBwaXVtVGVzdFVSTCIsImNyZWF0ZVNlc3Npb25VUkwiLCJiZWZvcmUiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJob3N0bmFtZSIsIl8iLCJhZnRlciIsImNsb3NlIiwic3RhcnRTZXNzaW9uIiwiY2FwcyIsInVybCIsIm1ldGhvZCIsImRhdGEiLCJjYXBhYmlsaXRpZXMiLCJhbHdheXNNYXRjaCIsImZpcnN0TWF0Y2giLCJ2YWx1ZSIsImVuZFNlc3Npb24iLCJpZCIsInZhbGlkYXRlU3RhdHVzIiwiZ2V0U2Vzc2lvbiIsIml0Iiwic2Vzc2lvbklkcyIsInRpbWVzIiwic2Vzc2lvbklkIiwiaGVhZGVycyIsInNpbXBsZSIsInJlc29sdmVXaXRoRnVsbFJlc3BvbnNlIiwicHVzaCIsInVuaXEiLCJsZW5ndGgiLCJzaG91bGQiLCJlcXVhbCIsInN0YXR1cyIsInJlcXMiLCJCIiwiYWxsIiwibWFwIiwieCIsImV4aXN0IiwicGxhdGZvcm1OYW1lIiwiZGV2aWNlTmFtZSIsInNraXAiLCJvcmlnaW5hbEZpbmRFbGVtZW50Iiwib3JpZ2luYWxGaW5kRWxlbWVudHMiLCJzdGFydFRpbWVvdXRTZXNzaW9uIiwidGltZW91dCIsImNsb25lRGVlcCIsImZpbmRFbGVtZW50IiwiYmluZCIsImZpbmRFbGVtZW50cyIsImRlbGF5IiwibmV3U2Vzc2lvbiIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJiZSIsImFib3ZlIiwic2Vzc2lvblVSTCIsInVzaW5nIiwiZXJyb3IiLCJyZXNwIiwic3RhcnQiLCJEYXRlIiwibm93IiwiZXFsIiwibm90Iiwibm9Db21tYW5kVGltZXIiLCJzZXR0aW5ncyIsIkRldmljZVNldHRpbmdzIiwiaWdub3JlVW5pbXBvcnRhbnRWaWV3cyIsImdldFNldHRpbmdzIiwiZmFsc2UiLCJ1cGRhdGUiLCJyZWplY3RlZCIsImV2ZW50dWFsbHkiLCJyZWplY3RlZFdpdGgiLCJfb2xkR2V0U3RhdHVzIiwiZ2V0U3RhdHVzIiwicmVxUHJvbWlzZSIsInNodXRkb3duRXZlbnRQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNldFRpbWVvdXQiLCJFcnJvciIsIm9uVW5leHBlY3RlZFNodXRkb3duIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJtZXNzYWdlIiwiY29udGFpbiIsInNlc3Npb24iLCJyZXMiLCJldmVudHMiLCJPYmplY3QiLCJhc3NpZ24iLCJuZXdTZXNzaW9uUmVxdWVzdGVkIiwibmV3U2Vzc2lvblN0YXJ0ZWQiLCJhIiwiQmFzZURyaXZlciIsInJldCIsIlBSRUZJWEVEX0FQUElVTV9PUFRTX0NBUCIsInBsYXRmb3JtVmVyc2lvbiIsIm9wdHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EsTUFBTTtBQUFDQSxFQUFBQSxJQUFEO0FBQU9DLEVBQUFBO0FBQVAsSUFBaUJDLGdCQUF2Qjs7QUFFQSxTQUFTQyxrQkFBVCxDQUE2QkMsV0FBN0IsRUFBMENDLFdBQVcsR0FBRyxFQUF4RCxFQUE0RDtBQUFBOztBQUMxRCxNQUFJQyxPQUFPLDJCQUFHRCxXQUFXLENBQUMsZ0JBQUQsQ0FBZCx1RUFBb0NFLGtCQUEvQztBQUNBLE1BQUlDLElBQUksR0FBR0gsV0FBVyxDQUFDLGFBQUQsQ0FBdEI7QUFDQSxRQUFNSSxTQUFTLEdBQUdMLFdBQVcsQ0FBQ00sSUFBWixJQUFvQixrQkFBdEM7QUFFQUMsRUFBQUEsUUFBUSxDQUFFLHNCQUFxQkYsU0FBVSxHQUFq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RCxFQUF1RSxrQkFBa0I7QUFDekYsZ0JBQU0yRSxHQUFHLEdBQUcsTUFBTXhGLFlBQVksQ0FBQztBQUM3QmdDLFlBQUFBLFlBQVksRUFBRSxLQURlO0FBRTdCLGFBQUN5RCxzQ0FBRCxHQUE0QjtBQUMxQkMsY0FBQUEsZUFBZSxFQUFFLE1BRFM7QUFFMUIsbUNBQXFCO0FBRks7QUFGQyxXQUFELENBQTlCO0FBT0FwRyxVQUFBQSxDQUFDLENBQUNxRyxJQUFGLENBQU9ELGVBQVAsQ0FBdUJuRSxNQUF2QixDQUE4QmdDLEdBQTlCLENBQWtDLE1BQWxDO0FBQ0FqRSxVQUFBQSxDQUFDLENBQUNxRyxJQUFGLENBQU8xRCxVQUFQLENBQWtCVixNQUFsQixDQUF5QmdDLEdBQXpCLENBQTZCLFdBQTdCO0FBQ0EsZ0JBQU05QyxVQUFVLENBQUMrRSxHQUFHLENBQUN4RSxTQUFMLENBQWhCO0FBQ0QsU0FYQyxDQUFGO0FBWUQsT0FiTyxDQUFSO0FBY0Q7QUFDRixHQXZWTyxDQUFSO0FBd1ZEOztlQUVjcEMsa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZURyaXZlciwgc2VydmVyLCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sIERldmljZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vbGliJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBURVNUX0hPU1QsIGdldFRlc3RQb3J0LCBjcmVhdGVBcHBpdW1VUkwsIE1FVEhPRFMgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IFBSRUZJWEVEX0FQUElVTV9PUFRTX0NBUCB9IGZyb20gJy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcyc7XG5jb25zdCB7UE9TVCwgREVMRVRFfSA9IE1FVEhPRFM7XG5cbmZ1bmN0aW9uIGJhc2VEcml2ZXJFMkVUZXN0cyAoRHJpdmVyQ2xhc3MsIGRlZmF1bHRDYXBzID0ge30pIHtcbiAgbGV0IGFkZHJlc3MgPSBkZWZhdWx0Q2Fwc1snYXBwaXVtOmFkZHJlc3MnXSA/PyBURVNUX0hPU1Q7XG4gIGxldCBwb3J0ID0gZGVmYXVsdENhcHNbJ2FwcGl1bTpwb3J0J107XG4gIGNvbnN0IGNsYXNzTmFtZSA9IERyaXZlckNsYXNzLm5hbWUgfHwgJyh1bmtub3duIGRyaXZlciknO1xuXG4gIGRlc2NyaWJlKGBCYXNlRHJpdmVyIEUyRSAoYXMgJHtjbGFzc05hbWV9KWAsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgYmFzZVNlcnZlciwgZDtcbiAgICAvKipcbiAgICAgICAqIFRoaXMgVVJMIGNyZWF0ZXMgYSBuZXcgc2Vzc2lvblxuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqKi9cbiAgICBsZXQgbmV3U2Vzc2lvblVSTDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBVUkwgd2l0aCBiYXNlIGhvc3QvcG9ydC4gU3VwcGx5IGBzZXNzaW9uYCBhbmQgYHBhdGhuYW1lYFxuICAgICAqIEB0eXBlIHtfLkN1cnJpZWRGdW5jdGlvbjI8c3RyaW5nLHN0cmluZyxzdHJpbmc+fVxuICAgICAqL1xuICAgIGxldCBjcmVhdGVBcHBpdW1UZXN0VVJMO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIFVSTCB3aXRoIHRoZSBnaXZlbiBzZXNzaW9uIElEIGFuZCBhIGJsYW5rIHBhdGhuYW1lO1xuICAgICAqIGUuZy4sIGBodHRwOi8vZm9vLmJhcjoxMjMvc2Vzc2lvbi88c2Vzc2lvbi1pZD5gXG4gICAgICogIEB0eXBlIHtfLkN1cnJpZWRGdW5jdGlvbjE8c3RyaW5nLHN0cmluZz59XG4gICAgICovXG4gICAgbGV0IGNyZWF0ZVNlc3Npb25VUkw7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgcG9ydCA9IHBvcnQgPz8gYXdhaXQgZ2V0VGVzdFBvcnQoKTtcbiAgICAgIGRlZmF1bHRDYXBzID0gey4uLmRlZmF1bHRDYXBzLCAnYXBwaXVtOnBvcnQnOiBwb3J0fTtcbiAgICAgIGQgPSBuZXcgRHJpdmVyQ2xhc3Moe3BvcnQsIGFkZHJlc3N9KTtcbiAgICAgIGJhc2VTZXJ2ZXIgPSBhd2FpdCBzZXJ2ZXIoe1xuICAgICAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb246IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbihkKSxcbiAgICAgICAgcG9ydCxcbiAgICAgICAgaG9zdG5hbWU6IFRFU1RfSE9TVFxuICAgICAgfSk7XG4gICAgICBjcmVhdGVBcHBpdW1UZXN0VVJMID0gY3JlYXRlQXBwaXVtVVJMKGFkZHJlc3MsIHBvcnQpO1xuICAgICAgbmV3U2Vzc2lvblVSTCA9IGNyZWF0ZUFwcGl1bVRlc3RVUkwoJycsICdzZXNzaW9uJyk7XG4gICAgICBjcmVhdGVTZXNzaW9uVVJMID0gY3JlYXRlQXBwaXVtVGVzdFVSTChfLCAnJyk7XG4gICAgfSk7XG5cbiAgICBhZnRlcihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBiYXNlU2VydmVyLmNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBzdGFydFNlc3Npb24gKGNhcHMpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmw6IG5ld1Nlc3Npb25VUkwsXG4gICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgZGF0YToge2NhcGFiaWxpdGllczoge2Fsd2F5c01hdGNoOiBjYXBzLCBmaXJzdE1hdGNoOiBbe31dfX0sXG4gICAgICB9KSkuZGF0YS52YWx1ZTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBlbmRTZXNzaW9uIChpZCkge1xuICAgICAgcmV0dXJuIChhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChpZCksXG4gICAgICAgIG1ldGhvZDogREVMRVRFLFxuICAgICAgICB2YWxpZGF0ZVN0YXR1czogbnVsbCxcbiAgICAgIH0pKS5kYXRhLnZhbHVlO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldFNlc3Npb24gKGlkKSB7XG4gICAgICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgdXJsOiBjcmVhdGVTZXNzaW9uVVJMKGlkKSxcbiAgICAgIH0pKS5kYXRhLnZhbHVlO1xuICAgIH1cblxuICAgIGRlc2NyaWJlKCdzZXNzaW9uIGhhbmRsaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgaWRlbXBvdGVuY3kgd2hpbGUgY3JlYXRpbmcgc2Vzc2lvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHNlc3Npb25JZHMgPSBbXTtcbiAgICAgICAgbGV0IHRpbWVzID0gMDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIGNvbnN0IHtzZXNzaW9uSWR9ID0gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICAgIHVybDogbmV3U2Vzc2lvblVSTCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ1gtSWRlbXBvdGVuY3ktS2V5JzogJzEyMzQ1NicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgICAgZGF0YToge2NhcGFiaWxpdGllczoge2Fsd2F5c01hdGNoOiBkZWZhdWx0Q2FwcywgZmlyc3RNYXRjaDogW3t9XX19LFxuICAgICAgICAgICAgc2ltcGxlOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc29sdmVXaXRoRnVsbFJlc3BvbnNlOiB0cnVlXG4gICAgICAgICAgfSkpLmRhdGEudmFsdWU7XG5cbiAgICAgICAgICBzZXNzaW9uSWRzLnB1c2goc2Vzc2lvbklkKTtcbiAgICAgICAgICB0aW1lcysrO1xuICAgICAgICB9IHdoaWxlICh0aW1lcyA8IDIpO1xuICAgICAgICBfLnVuaXEoc2Vzc2lvbklkcykubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcblxuICAgICAgICBjb25zdCB7c3RhdHVzLCBkYXRhfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoc2Vzc2lvbklkc1swXSksXG4gICAgICAgICAgbWV0aG9kOiBERUxFVEUsXG4gICAgICAgIH0pO1xuICAgICAgICBzdGF0dXMuc2hvdWxkLmVxdWFsKDIwMCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkYXRhLnZhbHVlLCBudWxsKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGhhbmRsZSBpZGVtcG90ZW5jeSB3aGlsZSBjcmVhdGluZyBwYXJhbGxlbCBzZXNzaW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVxcyA9IFtdO1xuICAgICAgICBsZXQgdGltZXMgPSAwO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgcmVxcy5wdXNoKGF4aW9zKHtcbiAgICAgICAgICAgIHVybDogbmV3U2Vzc2lvblVSTCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ1gtSWRlbXBvdGVuY3ktS2V5JzogJzEyMzQ1JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgICBkYXRhOiB7Y2FwYWJpbGl0aWVzOiB7YWx3YXlzTWF0Y2g6IGRlZmF1bHRDYXBzLCBmaXJzdE1hdGNoOiBbe31dfX0sXG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIHRpbWVzKys7XG4gICAgICAgIH0gd2hpbGUgKHRpbWVzIDwgMik7XG4gICAgICAgIGNvbnN0IHNlc3Npb25JZHMgPSAoYXdhaXQgQi5hbGwocmVxcykpLm1hcCgoeCkgPT4geC5kYXRhLnZhbHVlLnNlc3Npb25JZCk7XG4gICAgICAgIF8udW5pcShzZXNzaW9uSWRzKS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuXG4gICAgICAgIGNvbnN0IHtzdGF0dXMsIGRhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChzZXNzaW9uSWRzWzBdKSxcbiAgICAgICAgICBtZXRob2Q6IERFTEVURSxcbiAgICAgICAgfSk7XG4gICAgICAgIHN0YXR1cy5zaG91bGQuZXF1YWwoMjAwKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGRhdGEudmFsdWUsIG51bGwpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgY3JlYXRlIHNlc3Npb24gYW5kIHJldHJpZXZlIGEgc2Vzc2lvbiBpZCwgdGhlbiBkZWxldGUgaXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCB7c3RhdHVzLCBkYXRhfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IG5ld1Nlc3Npb25VUkwsXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIGRhdGE6IHtjYXBhYmlsaXRpZXM6IHthbHdheXNNYXRjaDogZGVmYXVsdENhcHMsIGZpcnN0TWF0Y2g6IFt7fV19fSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3RhdHVzLnNob3VsZC5lcXVhbCgyMDApO1xuICAgICAgICBzaG91bGQuZXhpc3QoZGF0YS52YWx1ZS5zZXNzaW9uSWQpO1xuICAgICAgICBkYXRhLnZhbHVlLmNhcGFiaWxpdGllcy5wbGF0Zm9ybU5hbWUuc2hvdWxkLmVxdWFsKGRlZmF1bHRDYXBzLnBsYXRmb3JtTmFtZSk7XG4gICAgICAgIGRhdGEudmFsdWUuY2FwYWJpbGl0aWVzLmRldmljZU5hbWUuc2hvdWxkLmVxdWFsKGRlZmF1bHRDYXBzWydhcHBpdW06ZGV2aWNlTmFtZSddKTtcblxuICAgICAgICAoe3N0YXR1cywgZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVTZXNzaW9uVVJMKGQuc2Vzc2lvbklkKSxcbiAgICAgICAgICBtZXRob2Q6IERFTEVURSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHN0YXR1cy5zaG91bGQuZXF1YWwoMjAwKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGRhdGEudmFsdWUsIG51bGwpO1xuICAgICAgICBzaG91bGQuZXF1YWwoZC5zZXNzaW9uSWQsIG51bGwpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdC5za2lwKCdzaG91bGQgdGhyb3cgTllJIGZvciBjb21tYW5kcyBub3QgaW1wbGVtZW50ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY29tbWFuZCB0aW1lb3V0cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBvcmlnaW5hbEZpbmRFbGVtZW50LCBvcmlnaW5hbEZpbmRFbGVtZW50cztcblxuICAgICAgYXN5bmMgZnVuY3Rpb24gc3RhcnRUaW1lb3V0U2Vzc2lvbiAodGltZW91dCkge1xuICAgICAgICBjb25zdCBjYXBzID0gXy5jbG9uZURlZXAoZGVmYXVsdENhcHMpO1xuICAgICAgICBjYXBzWydhcHBpdW06bmV3Q29tbWFuZFRpbWVvdXQnXSA9IHRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBhd2FpdCBzdGFydFNlc3Npb24oY2Fwcyk7XG4gICAgICB9XG5cbiAgICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9yaWdpbmFsRmluZEVsZW1lbnQgPSBkLmZpbmRFbGVtZW50O1xuICAgICAgICBkLmZpbmRFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiAnZm9vJztcbiAgICAgICAgfS5iaW5kKGQpO1xuXG4gICAgICAgIG9yaWdpbmFsRmluZEVsZW1lbnRzID0gZC5maW5kRWxlbWVudHM7XG4gICAgICAgIGQuZmluZEVsZW1lbnRzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IEIuZGVsYXkoMjAwKTtcbiAgICAgICAgICByZXR1cm4gWydmb28nXTtcbiAgICAgICAgfS5iaW5kKGQpO1xuICAgICAgfSk7XG5cbiAgICAgIGFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5maW5kRWxlbWVudCA9IG9yaWdpbmFsRmluZEVsZW1lbnQ7XG4gICAgICAgIGQuZmluZEVsZW1lbnRzID0gb3JpZ2luYWxGaW5kRWxlbWVudHM7XG4gICAgICB9KTtcblxuXG4gICAgICBpdCgnc2hvdWxkIHNldCBhIGRlZmF1bHQgY29tbWFuZFRpbWVvdXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBuZXdTZXNzaW9uID0gYXdhaXQgc3RhcnRUaW1lb3V0U2Vzc2lvbigpO1xuICAgICAgICBkLm5ld0NvbW1hbmRUaW1lb3V0TXMuc2hvdWxkLmJlLmFib3ZlKDApO1xuICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRpbWVvdXQgb24gY29tbWFuZHMgdXNpbmcgY29tbWFuZFRpbWVvdXQgY2FwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbmV3U2Vzc2lvbiA9IGF3YWl0IHN0YXJ0VGltZW91dFNlc3Npb24oMC4yNSk7XG4gICAgICAgIC8vIFhYWDogcmFjZSBjb25kaXRpb246IHdlIG11c3QgYnVpbGQgdGhpcyBVUkwgYmVmb3JlIC4uLnNvbWV0aGluZyBoYXBwZW5zLi4uXG4gICAgICAgIC8vIHdoaWNoIGNhdXNlcyBgZC5zZXNzaW9uSWRgIHRvIGJlIG1pc3NpbmdcbiAgICAgICAgbGV0IHNlc3Npb25VUkwgPSBjcmVhdGVTZXNzaW9uVVJMKGQuc2Vzc2lvbklkKTtcbiAgICAgICAgYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChkLnNlc3Npb25JZCwgJ2VsZW1lbnQnKSxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge3VzaW5nOiAnbmFtZScsIHZhbHVlOiAnZm9vJ30sXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDQwMCk7XG4gICAgICAgIGNvbnN0IHtkYXRhfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IHNlc3Npb25VUkwsXG4gICAgICAgICAgdmFsaWRhdGVTdGF0dXM6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgICBzaG91bGQuZXF1YWwoZGF0YS52YWx1ZS5lcnJvciwgJ2ludmFsaWQgc2Vzc2lvbiBpZCcpO1xuICAgICAgICBzaG91bGQuZXF1YWwoZC5zZXNzaW9uSWQsIG51bGwpO1xuICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgZW5kU2Vzc2lvbihuZXdTZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZXNwLmVycm9yLCAnaW52YWxpZCBzZXNzaW9uIGlkJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBub3QgdGltZW91dCB3aXRoIGNvbW1hbmRUaW1lb3V0IG9mIGZhbHNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbmV3U2Vzc2lvbiA9IGF3YWl0IHN0YXJ0VGltZW91dFNlc3Npb24oMC4xKTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3Qge3ZhbHVlfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKGQuc2Vzc2lvbklkLCAnZWxlbWVudHMnKSxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge3VzaW5nOiAnbmFtZScsIHZhbHVlOiAnZm9vJ30sXG4gICAgICAgIH0pKS5kYXRhO1xuICAgICAgICAoRGF0ZS5ub3coKSAtIHN0YXJ0KS5zaG91bGQuYmUuYWJvdmUoMTUwKTtcbiAgICAgICAgdmFsdWUuc2hvdWxkLmVxbChbJ2ZvbyddKTtcbiAgICAgICAgYXdhaXQgZW5kU2Vzc2lvbihuZXdTZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBub3QgdGltZW91dCB3aXRoIGNvbW1hbmRUaW1lb3V0IG9mIDAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQubmV3Q29tbWFuZFRpbWVvdXRNcyA9IDI7XG4gICAgICAgIGxldCBuZXdTZXNzaW9uID0gYXdhaXQgc3RhcnRUaW1lb3V0U2Vzc2lvbigwKTtcblxuICAgICAgICBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKGQuc2Vzc2lvbklkLCAnZWxlbWVudCcpLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7dXNpbmc6ICduYW1lJywgdmFsdWU6ICdmb28nfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoNDAwKTtcbiAgICAgICAgY29uc3Qge3ZhbHVlfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVTZXNzaW9uVVJMKGQuc2Vzc2lvbklkKSxcbiAgICAgICAgfSkpLmRhdGE7XG4gICAgICAgIHZhbHVlLnBsYXRmb3JtTmFtZS5zaG91bGQuZXF1YWwoZGVmYXVsdENhcHMucGxhdGZvcm1OYW1lKTtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzcCwgbnVsbCk7XG5cbiAgICAgICAgZC5uZXdDb21tYW5kVGltZW91dE1zID0gNjAgKiAxMDAwO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IHRpbWVvdXQgaWYgaXRzIGp1c3QgdGhlIGNvbW1hbmQgdGFraW5nIGF3aGlsZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDAuMjUpO1xuICAgICAgICAvLyBYWFg6IHJhY2UgY29uZGl0aW9uOiB3ZSBtdXN0IGJ1aWxkIHRoaXMgVVJMIGJlZm9yZSAuLi5zb21ldGhpbmcgaGFwcGVucy4uLlxuICAgICAgICAvLyB3aGljaCBjYXVzZXMgYGQuc2Vzc2lvbklkYCB0byBiZSBtaXNzaW5nXG4gICAgICAgIGxldCBzZXNzaW9uVVJMID0gY3JlYXRlU2Vzc2lvblVSTChkLnNlc3Npb25JZCk7XG4gICAgICAgIGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUFwcGl1bVRlc3RVUkwoZC5zZXNzaW9uSWQsICdlbGVtZW50JyksXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIGRhdGE6IHt1c2luZzogJ25hbWUnLCB2YWx1ZTogJ2Zvbyd9LFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgQi5kZWxheSg0MDApO1xuICAgICAgICBjb25zdCB7dmFsdWV9ID0gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IHNlc3Npb25VUkwsXG4gICAgICAgICAgdmFsaWRhdGVTdGF0dXM6IG51bGwsXG4gICAgICAgIH0pKS5kYXRhO1xuICAgICAgICB2YWx1ZS5lcnJvci5zaG91bGQuZXF1YWwoJ2ludmFsaWQgc2Vzc2lvbiBpZCcpO1xuICAgICAgICBzaG91bGQuZXF1YWwoZC5zZXNzaW9uSWQsIG51bGwpO1xuICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgZW5kU2Vzc2lvbihuZXdTZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICAgIHJlc3AuZXJyb3Iuc2hvdWxkLmVxdWFsKCdpbnZhbGlkIHNlc3Npb24gaWQnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIG5vdCBoYXZlIGEgdGltZXIgcnVubmluZyBiZWZvcmUgb3IgYWZ0ZXIgYSBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGQubm9Db21tYW5kVGltZXIpO1xuICAgICAgICBsZXQgbmV3U2Vzc2lvbiA9IGF3YWl0IHN0YXJ0VGltZW91dFNlc3Npb24oMC4yNSk7XG4gICAgICAgIG5ld1Nlc3Npb24uc2Vzc2lvbklkLnNob3VsZC5lcXVhbChkLnNlc3Npb25JZCk7XG4gICAgICAgIHNob3VsZC5leGlzdChkLm5vQ29tbWFuZFRpbWVyKTtcbiAgICAgICAgYXdhaXQgZW5kU2Vzc2lvbihuZXdTZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZC5ub0NvbW1hbmRUaW1lcik7XG4gICAgICB9KTtcblxuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3NldHRpbmdzIGFwaScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQuc2V0dGluZ3MgPSBuZXcgRGV2aWNlU2V0dGluZ3Moe2lnbm9yZVVuaW1wb3J0YW50Vmlld3M6IGZhbHNlfSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBnZXQgc2V0dGluZ3Mgb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBkLnNldHRpbmdzLmdldFNldHRpbmdzKCkuaWdub3JlVW5pbXBvcnRhbnRWaWV3cy5zaG91bGQuYmUuZmFsc2U7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgbm90IHJlamVjdCB3aGVuIGB1cGRhdGVTZXR0aW5nc2AgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC5zZXR0aW5ncy51cGRhdGUoe2lnbm9yZVVuaW1wb3J0YW50Vmlld3M6IHRydWV9KS5zaG91bGQubm90LmJlLnJlamVjdGVkO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBmb3IgaW52YWxpZCB1cGRhdGUgb2JqZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLnNldHRpbmdzLnVwZGF0ZSgnaW52YWxpZCBqc29uJykuc2hvdWxkLmV2ZW50dWFsbHlcbiAgICAgICAgICAgICAgICAuYmUucmVqZWN0ZWRXaXRoKCdKU09OJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd1bmV4cGVjdGVkIGV4aXRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgYSBjdXJyZW50IGNvbW1hbmQgd2hlbiB0aGUgZHJpdmVyIGNyYXNoZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQuX29sZEdldFN0YXR1cyA9IGQuZ2V0U3RhdHVzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGQuZ2V0U3RhdHVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXdhaXQgQi5kZWxheSg1MDAwKTtcbiAgICAgICAgICB9LmJpbmQoZCk7XG4gICAgICAgICAgY29uc3QgcmVxUHJvbWlzZSA9IGF4aW9zKHtcbiAgICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTCgnJywgJ3N0YXR1cycpLFxuICAgICAgICAgICAgdmFsaWRhdGVTdGF0dXM6IG51bGwsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlcXVlc3QgZ2V0cyB0byB0aGUgc2VydmVyIGJlZm9yZSBvdXIgc2h1dGRvd25cbiAgICAgICAgICBhd2FpdCBCLmRlbGF5KDEwMCk7XG4gICAgICAgICAgY29uc3Qgc2h1dGRvd25FdmVudFByb21pc2UgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ29uVW5leHBlY3RlZFNodXRkb3duIGV2ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGZpcmVkIHdpdGhpbiA1IHNlY29uZHMgdGltZW91dCcpKSwgNTAwMCk7XG4gICAgICAgICAgICBkLm9uVW5leHBlY3RlZFNodXRkb3duKHJlc29sdmUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGQuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24obmV3IEVycm9yKCdDcmFzaHl0aW1lcycpKTtcbiAgICAgICAgICBjb25zdCB7dmFsdWV9ID0gKGF3YWl0IHJlcVByb21pc2UpLmRhdGE7XG4gICAgICAgICAgdmFsdWUubWVzc2FnZS5zaG91bGQuY29udGFpbignQ3Jhc2h5dGltZXMnKTtcbiAgICAgICAgICBhd2FpdCBzaHV0ZG93bkV2ZW50UHJvbWlzZTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBkLmdldFN0YXR1cyA9IGQuX29sZEdldFN0YXR1cztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZXZlbnQgdGltaW5ncycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgbm90IGFkZCB0aW1pbmdzIGlmIG5vdCB1c2luZyBvcHQtaW4gY2FwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgc3RhcnRTZXNzaW9uKGRlZmF1bHRDYXBzKTtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZ2V0U2Vzc2lvbihzZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QocmVzLmV2ZW50cyk7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24oc2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGFkZCBzdGFydCBzZXNzaW9uIHRpbWluZ3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGNhcHMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q2FwcywgeydhcHBpdW06ZXZlbnRUaW1pbmdzJzogdHJ1ZX0pO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgc3RhcnRTZXNzaW9uKGNhcHMpO1xuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgZ2V0U2Vzc2lvbihzZXNzaW9uLnNlc3Npb25JZCkpO1xuICAgICAgICBzaG91bGQuZXhpc3QocmVzLmV2ZW50cyk7XG4gICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzLm5ld1Nlc3Npb25SZXF1ZXN0ZWQpO1xuICAgICAgICBzaG91bGQuZXhpc3QocmVzLmV2ZW50cy5uZXdTZXNzaW9uU3RhcnRlZCk7XG4gICAgICAgIHJlcy5ldmVudHMubmV3U2Vzc2lvblJlcXVlc3RlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIHJlcy5ldmVudHMubmV3U2Vzc2lvblN0YXJ0ZWRbMF0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKHNlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKERyaXZlckNsYXNzID09PSBCYXNlRHJpdmVyKSB7XG4gICAgICAvLyBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gYmFzZWRyaXZlciwgbm90IG90aGVyIGRyaXZlcnMgd2hpY2ggYWxzbyB1c2UgdGhlc2UgdGVzdHMsIHNpbmNlIHdlXG4gICAgICAvLyBkb24ndCB3YW50IHRoZW0gdG8gdHJ5IGFuZCBzdGFydCBzZXNzaW9ucyB3aXRoIHRoZXNlIHJhbmRvbSBjYXBhYmlsaXRpZXMgdGhhdCBhcmVcbiAgICAgIC8vIG5lY2Vzc2FyeSB0byB0ZXN0IHRoZSBhcHBpdW0gb3B0aW9ucyBsb2dpY1xuICAgICAgZGVzY3JpYmUoJ3NwZWNpYWwgYXBwaXVtOm9wdGlvbnMgY2FwYWJpbGl0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIHN0YXJ0IGEgc2Vzc2lvbiB3aXRoIGNhcHMgaGVsZCBpbiBhcHBpdW06b3B0aW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCByZXQgPSBhd2FpdCBzdGFydFNlc3Npb24oe1xuICAgICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAgIFtQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVBdOiB7XG4gICAgICAgICAgICAgIHBsYXRmb3JtVmVyc2lvbjogJzExLjQnLFxuICAgICAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnaVBob25lIDExJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkLm9wdHMucGxhdGZvcm1WZXJzaW9uLnNob3VsZC5lcWwoJzExLjQnKTtcbiAgICAgICAgICBkLm9wdHMuZGV2aWNlTmFtZS5zaG91bGQuZXFsKCdpUGhvbmUgMTEnKTtcbiAgICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKHJldC5zZXNzaW9uSWQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VEcml2ZXJFMkVUZXN0cztcbiJdfQ==
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
require("source-map-support/register");
|
|
6
|
+
|
|
7
|
+
var _support = require("@appium/support");
|
|
8
|
+
|
|
9
|
+
var _sinon = _interopRequireDefault(require("sinon"));
|
|
10
|
+
|
|
11
|
+
var _deviceSettings = require("../../../lib/basedriver/device-settings");
|
|
12
|
+
|
|
13
|
+
var _errors = require("../../../lib/protocol/errors");
|
|
14
|
+
|
|
15
|
+
const {
|
|
16
|
+
expect
|
|
17
|
+
} = chai;
|
|
18
|
+
describe('DeviceSettings', function () {
|
|
19
|
+
let sandbox;
|
|
20
|
+
beforeEach(function () {
|
|
21
|
+
sandbox = _sinon.default.createSandbox();
|
|
22
|
+
});
|
|
23
|
+
afterEach(function () {
|
|
24
|
+
sandbox.restore();
|
|
25
|
+
});
|
|
26
|
+
describe('constructor', function () {
|
|
27
|
+
describe('when no parameteres are provided to the constructor', function () {
|
|
28
|
+
it('should not throw', function () {
|
|
29
|
+
expect(() => new _deviceSettings.DeviceSettings()).not.to.throw();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('instance method', function () {
|
|
34
|
+
describe('getSettings()', function () {
|
|
35
|
+
it('should return a clone of the internal settings object', function () {
|
|
36
|
+
const settings = {
|
|
37
|
+
foo: 'bar',
|
|
38
|
+
bar: 'foo'
|
|
39
|
+
};
|
|
40
|
+
const deviceSettings = new _deviceSettings.DeviceSettings(settings);
|
|
41
|
+
expect(deviceSettings.getSettings()).to.eql(settings);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe('update()', function () {
|
|
45
|
+
describe('when no parameters are provided', function () {
|
|
46
|
+
it('should reject with an InvalidArgumentError', async function () {
|
|
47
|
+
const deviceSettings = new _deviceSettings.DeviceSettings();
|
|
48
|
+
await expect(deviceSettings.update()).to.be.rejectedWith(_errors.InvalidArgumentError, /with valid JSON/i);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe('when a non-plain-object `newSettings` param is provided', function () {
|
|
52
|
+
it('should reject with an InvalidArgumentError', async function () {
|
|
53
|
+
const deviceSettings = new _deviceSettings.DeviceSettings();
|
|
54
|
+
await expect(deviceSettings.update(null)).to.be.rejectedWith(_errors.InvalidArgumentError, /with valid JSON/i);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('when the size of the `newSettings` param exceeds `MAX_SETTINGS_SIZE`', function () {
|
|
58
|
+
beforeEach(function () {
|
|
59
|
+
sandbox.stub(_support.node, 'getObjectSize').returns(_deviceSettings.MAX_SETTINGS_SIZE + 1);
|
|
60
|
+
});
|
|
61
|
+
it('should reject with an InvalidArgumentError', async function () {
|
|
62
|
+
const deviceSettings = new _deviceSettings.DeviceSettings();
|
|
63
|
+
await expect(deviceSettings.update({
|
|
64
|
+
stuff: 'things'
|
|
65
|
+
})).to.be.rejectedWith(_errors.InvalidArgumentError, /object size exceeds/i);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
describe('when the `newSettings` param is valid', function () {
|
|
69
|
+
let onSettingsUpdate;
|
|
70
|
+
beforeEach(function () {
|
|
71
|
+
onSettingsUpdate = sandbox.stub();
|
|
72
|
+
});
|
|
73
|
+
describe('when the new settings do not differ', function () {
|
|
74
|
+
it('should not call the `_onSettingsUpdate` listener', async function () {
|
|
75
|
+
const deviceSettings = new _deviceSettings.DeviceSettings({
|
|
76
|
+
stuff: 'things'
|
|
77
|
+
}, onSettingsUpdate);
|
|
78
|
+
await deviceSettings.update({
|
|
79
|
+
stuff: 'things'
|
|
80
|
+
});
|
|
81
|
+
expect(onSettingsUpdate).not.to.have.been.called;
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe('when the new settings differ', function () {
|
|
85
|
+
it('should call the `_onSettingsUpdate` listener', async function () {
|
|
86
|
+
const deviceSettings = new _deviceSettings.DeviceSettings({}, onSettingsUpdate);
|
|
87
|
+
await deviceSettings.update({
|
|
88
|
+
stuff: 'things'
|
|
89
|
+
});
|
|
90
|
+
expect(onSettingsUpdate).to.have.been.calledOnceWithExactly('stuff', 'things', undefined);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iYXNlZHJpdmVyL2RldmljZS1zZXR0aW5ncy5zcGVjLmpzIl0sIm5hbWVzIjpbImV4cGVjdCIsImNoYWkiLCJkZXNjcmliZSIsInNhbmRib3giLCJiZWZvcmVFYWNoIiwic2lub24iLCJjcmVhdGVTYW5kYm94IiwiYWZ0ZXJFYWNoIiwicmVzdG9yZSIsIml0IiwiRGV2aWNlU2V0dGluZ3MiLCJub3QiLCJ0byIsInRocm93Iiwic2V0dGluZ3MiLCJmb28iLCJiYXIiLCJkZXZpY2VTZXR0aW5ncyIsImdldFNldHRpbmdzIiwiZXFsIiwidXBkYXRlIiwiYmUiLCJyZWplY3RlZFdpdGgiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsInN0dWIiLCJub2RlIiwicmV0dXJucyIsIk1BWF9TRVRUSU5HU19TSVpFIiwic3R1ZmYiLCJvblNldHRpbmdzVXBkYXRlIiwiaGF2ZSIsImJlZW4iLCJjYWxsZWQiLCJjYWxsZWRPbmNlV2l0aEV4YWN0bHkiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU07QUFBQ0EsRUFBQUE7QUFBRCxJQUFXQyxJQUFqQjtBQUVBQyxRQUFRLENBQUMsZ0JBQUQsRUFBbUIsWUFBWTtBQUNyQyxNQUFJQyxPQUFKO0FBRUFDLEVBQUFBLFVBQVUsQ0FBQyxZQUFZO0FBQ3JCRCxJQUFBQSxPQUFPLEdBQUdFLGVBQU1DLGFBQU4sRUFBVjtBQUNELEdBRlMsQ0FBVjtBQUlBQyxFQUFBQSxTQUFTLENBQUMsWUFBWTtBQUNwQkosSUFBQUEsT0FBTyxDQUFDSyxPQUFSO0FBQ0QsR0FGUSxDQUFUO0FBSUFOLEVBQUFBLFFBQVEsQ0FBQyxhQUFELEVBQWdCLFlBQVk7QUFDbENBLElBQUFBLFFBQVEsQ0FBQyxxREFBRCxFQUF3RCxZQUFZO0FBQzFFTyxNQUFBQSxFQUFFLENBQUMsa0JBQUQsRUFBcUIsWUFBWTtBQUNqQ1QsUUFBQUEsTUFBTSxDQUFDLE1B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QUEsS0FBSyxFQUFFO0FBQVIsYUFBbkIsRUFBc0NDLGdCQUF0QyxDQUF2QjtBQUNBLGtCQUFNWixjQUFjLENBQUNHLE1BQWYsQ0FBc0I7QUFBQ1EsY0FBQUEsS0FBSyxFQUFFO0FBQVIsYUFBdEIsQ0FBTjtBQUNBNUIsWUFBQUEsTUFBTSxDQUFDNkIsZ0JBQUQsQ0FBTixDQUF5QmxCLEdBQXpCLENBQTZCQyxFQUE3QixDQUFnQ2tCLElBQWhDLENBQXFDQyxJQUFyQyxDQUEwQ0MsTUFBMUM7QUFDRCxXQUpDLENBQUY7QUFLRCxTQU5PLENBQVI7QUFRQTlCLFFBQUFBLFFBQVEsQ0FBQyw4QkFBRCxFQUFpQyxZQUFZO0FBQ25ETyxVQUFBQSxFQUFFLENBQUMsOENBQUQsRUFBaUQsa0JBQWtCO0FBQ25FLGtCQUFNUSxjQUFjLEdBQUcsSUFBSVAsOEJBQUosQ0FBbUIsRUFBbkIsRUFBdUJtQixnQkFBdkIsQ0FBdkI7QUFDQSxrQkFBTVosY0FBYyxDQUFDRyxNQUFmLENBQXNCO0FBQUNRLGNBQUFBLEtBQUssRUFBRTtBQUFSLGFBQXRCLENBQU47QUFDQTVCLFlBQUFBLE1BQU0sQ0FBQzZCLGdCQUFELENBQU4sQ0FBeUJqQixFQUF6QixDQUE0QmtCLElBQTVCLENBQWlDQyxJQUFqQyxDQUFzQ0UscUJBQXRDLENBQTRELE9BQTVELEVBQXFFLFFBQXJFLEVBQStFQyxTQUEvRTtBQUNELFdBSkMsQ0FBRjtBQUtELFNBTk8sQ0FBUjtBQU9ELE9BdEJPLENBQVI7QUF1QkQsS0F4RE8sQ0FBUjtBQXlERCxHQXJFTyxDQUFSO0FBc0VELENBekZPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub2RlIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBEZXZpY2VTZXR0aW5ncywgTUFYX1NFVFRJTkdTX1NJWkUgfSBmcm9tICcuLi8uLi8uLi9saWIvYmFzZWRyaXZlci9kZXZpY2Utc2V0dGluZ3MnO1xuaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IgfSBmcm9tICcuLi8uLi8uLi9saWIvcHJvdG9jb2wvZXJyb3JzJztcblxuY29uc3Qge2V4cGVjdH0gPSBjaGFpO1xuXG5kZXNjcmliZSgnRGV2aWNlU2V0dGluZ3MnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBzYW5kYm94O1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNhbmRib3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb25zdHJ1Y3RvcicsIGZ1bmN0aW9uICgpIHtcbiAgICBkZXNjcmliZSgnd2hlbiBubyBwYXJhbWV0ZXJlcyBhcmUgcHJvdmlkZWQgdG8gdGhlIGNvbnN0cnVjdG9yJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBub3QgdGhyb3cnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGV4cGVjdCgoKSA9PiBuZXcgRGV2aWNlU2V0dGluZ3MoKSkubm90LnRvLnRocm93KCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2luc3RhbmNlIG1ldGhvZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBkZXNjcmliZSgnZ2V0U2V0dGluZ3MoKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgY2xvbmUgb2YgdGhlIGludGVybmFsIHNldHRpbmdzIG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSB7XG4gICAgICAgICAgZm9vOiAnYmFyJyxcbiAgICAgICAgICBiYXI6ICdmb28nLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkZXZpY2VTZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncyhzZXR0aW5ncyk7XG4gICAgICAgIGV4cGVjdChkZXZpY2VTZXR0aW5ncy5nZXRTZXR0aW5ncygpKS50by5lcWwoc2V0dGluZ3MpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndXBkYXRlKCknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXNjcmliZSgnd2hlbiBubyBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2l0aCBhbiBJbnZhbGlkQXJndW1lbnRFcnJvcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBkZXZpY2VTZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncygpO1xuICAgICAgICAgIGF3YWl0IGV4cGVjdChkZXZpY2VTZXR0aW5ncy51cGRhdGUoKSkudG8uYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICAgSW52YWxpZEFyZ3VtZW50RXJyb3IsIC93aXRoIHZhbGlkIEpTT04vaVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCd3aGVuIGEgbm9uLXBsYWluLW9iamVjdCBgbmV3U2V0dGluZ3NgIHBhcmFtIGlzIHByb3ZpZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIHJlamVjdCB3aXRoIGFuIEludmFsaWRBcmd1bWVudEVycm9yJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGRldmljZVNldHRpbmdzID0gbmV3IERldmljZVNldHRpbmdzKCk7XG4gICAgICAgICAgYXdhaXQgZXhwZWN0KGRldmljZVNldHRpbmdzLnVwZGF0ZShudWxsKSkudG8uYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICAgSW52YWxpZEFyZ3VtZW50RXJyb3IsIC93aXRoIHZhbGlkIEpTT04vaVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCd3aGVuIHRoZSBzaXplIG9mIHRoZSBgbmV3U2V0dGluZ3NgIHBhcmFtIGV4Y2VlZHMgYE1BWF9TRVRUSU5HU19TSVpFYCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gdGhpcyBpcyBlYXNpZXIgdGhhbiBzZW5kaW5nIGEgMjFNQiBvYmplY3RcbiAgICAgICAgICBzYW5kYm94LnN0dWIobm9kZSwgJ2dldE9iamVjdFNpemUnKS5yZXR1cm5zKE1BWF9TRVRUSU5HU19TSVpFICsgMSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgcmVqZWN0IHdpdGggYW4gSW52YWxpZEFyZ3VtZW50RXJyb3InLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgZGV2aWNlU2V0dGluZ3MgPSBuZXcgRGV2aWNlU2V0dGluZ3MoKTtcbiAgICAgICAgICBhd2FpdCBleHBlY3QoZGV2aWNlU2V0dGluZ3MudXBkYXRlKHtzdHVmZjogJ3RoaW5ncyd9KSkudG8uYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICAgSW52YWxpZEFyZ3VtZW50RXJyb3IsIC9vYmplY3Qgc2l6ZSBleGNlZWRzL2lcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnd2hlbiB0aGUgYG5ld1NldHRpbmdzYCBwYXJhbSBpcyB2YWxpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG9uU2V0dGluZ3NVcGRhdGU7XG5cbiAgICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgb25TZXR0aW5nc1VwZGF0ZSA9IHNhbmRib3guc3R1YigpO1xuICAgICAgICB9KTtcblxuICAgICAgICBkZXNjcmliZSgnd2hlbiB0aGUgbmV3IHNldHRpbmdzIGRvIG5vdCBkaWZmZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaXQoJ3Nob3VsZCBub3QgY2FsbCB0aGUgYF9vblNldHRpbmdzVXBkYXRlYCBsaXN0ZW5lcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRldmljZVNldHRpbmdzID0gbmV3IERldmljZVNldHRpbmdzKHtzdHVmZjogJ3RoaW5ncyd9LCBvblNldHRpbmdzVXBkYXRlKTtcbiAgICAgICAgICAgIGF3YWl0IGRldmljZVNldHRpbmdzLnVwZGF0ZSh7c3R1ZmY6ICd0aGluZ3MnfSk7XG4gICAgICAgICAgICBleHBlY3Qob25TZXR0aW5nc1VwZGF0ZSkubm90LnRvLmhhdmUuYmVlbi5jYWxsZWQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRlc2NyaWJlKCd3aGVuIHRoZSBuZXcgc2V0dGluZ3MgZGlmZmVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGl0KCdzaG91bGQgY2FsbCB0aGUgYF9vblNldHRpbmdzVXBkYXRlYCBsaXN0ZW5lcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRldmljZVNldHRpbmdzID0gbmV3IERldmljZVNldHRpbmdzKHt9LCBvblNldHRpbmdzVXBkYXRlKTtcbiAgICAgICAgICAgIGF3YWl0IGRldmljZVNldHRpbmdzLnVwZGF0ZSh7c3R1ZmY6ICd0aGluZ3MnfSk7XG4gICAgICAgICAgICBleHBlY3Qob25TZXR0aW5nc1VwZGF0ZSkudG8uaGF2ZS5iZWVuLmNhbGxlZE9uY2VXaXRoRXhhY3RseSgnc3R1ZmYnLCAndGhpbmdzJywgdW5kZWZpbmVkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -45,7 +45,7 @@ describe('Protocol', function () {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
let hash = shasum.digest('hex').substring(0, 8);
|
|
48
|
-
hash.should.equal('
|
|
48
|
+
hash.should.equal('736bf246');
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
51
|
describe('check route to command name conversion', function () {
|
|
@@ -77,4 +77,4 @@ describe('Protocol', function () {
|
|
|
77
77
|
});
|
|
78
78
|
});
|
|
79
79
|
});
|
|
80
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9wcm90b2NvbC9yb3V0ZXMuc3BlYy5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0Iiwic2hhc3VtIiwiY3J5cHRvIiwiY3JlYXRlSGFzaCIsInVybCIsInVybE1hcHBpbmciLCJfIiwidG9QYWlycyIsIk1FVEhPRF9NQVAiLCJ1cGRhdGUiLCJtZXRob2QiLCJtZXRob2RNYXBwaW5nIiwiY29tbWFuZCIsInBheWxvYWRQYXJhbXMiLCJhbGxQYXJhbXMiLCJmbGF0dGVuIiwicmVxdWlyZWQiLCJvcHRpb25hbCIsImNvbmNhdCIsInBhcmFtIiwid3JhcCIsImhhc2giLCJkaWdlc3QiLCJzdWJzdHJpbmciLCJzaG91bGQiLCJlcXVhbCIsImNtZE5hbWUiLCJyb3V0ZSIsImNoYWkiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUlBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQVk7QUFLL0JBLEVBQUFBLFFBQVEsQ0FBQyw2QkFBRCxFQUFnQyxZQUFZO0FBQ2xEQyxJQUFBQSxFQUFFLENBQUMsbURBQUQsRUFBc0QsWUFBWTtBQUNsRSxVQUFJQyxNQUFNLEdBQUdDLGdCQUFPQyxVQUFQLENBQWtCLE1BQWxCLENBQWI7O0FBQ0EsV0FBSyxJQUFJLENBQUNDLEdBQUQsRUFBTUMsVUFBTixDQUFULElBQThCQyxVQUFFQyxPQUFGLENBQVVDLG9CQUFWLENBQTlCLEVBQXFEO0FBQ25EUCxRQUFBQSxNQUFNLENBQUNRLE1BQVAsQ0FBY0wsR0FBZDs7QUFDQSxhQUFLLElBQUksQ0FBQ00sTUFBRCxFQUFTQyxhQUFULENBQVQsSUFBb0NMLFVBQUVDLE9BQUYsQ0FBVUYsVUFBVixDQUFwQyxFQUEyRDtBQUN6REosVUFBQUEsTUFBTSxDQUFDUSxNQUFQLENBQWNDLE1BQWQ7O0FBQ0EsY0FBSUMsYUFBYSxDQUFDQyxPQUFsQixFQUEyQjtBQUN6QlgsWUFBQUEsTUFBTSxDQUFDUSxNQUFQLENBQWNFLGFBQWEsQ0FBQ0MsT0FBNUI7QUFDRDs7QUFDRCxjQUFJRCxhQUFhLENBQUNFLGFBQWxCLEVBQWlDO0FBQy9CLGdCQUFJQyxTQUFTLEdBQUdSLFVBQUVTLE9BQUYsQ0FBVUosYUFBYSxDQUFDRSxhQUFkLENBQTRCRyxRQUF0QyxDQUFoQjs7QUFDQSxnQkFBSUwsYUFBYSxDQUFDRSxhQUFkLENBQTRCSSxRQUFoQyxFQUEwQztBQUN4Q0gsY0FBQUEsU0FBUyxHQUFHQSxTQUFTLENBQUNJLE1BQVYsQ0FBaUJaLFVBQUVTLE9BQUYsQ0FBVUosYUFBYSxDQUFDRSxhQUFkLENBQTRCSSxRQUF0QyxDQUFqQixDQUFaO0FBQ0Q7O0FBQ0QsaUJBQUssSUFBSUUsS0FBVCxJQUFrQkwsU0FBbEIsRUFBNkI7QUFDM0JiLGNBQUFBLE1BQU0sQ0FBQ1EsTUFBUCxDQUFjVSxLQUFkO0FBQ0Q7O0FBQ0QsZ0JBQUlSLGFBQWEsQ0FBQ0UsYUFBZCxDQUE0Qk8sSUFBaEMsRUFBc0M7QUFDcENuQixjQUFBQSxNQUFNLENBQUNRLE1BQVAsQ0FBYyxNQUFkO0FBQ0FSLGNBQUFBLE1BQU0sQ0FBQ1EsTUFBUCxDQUFjRSxhQUFhLENBQUNFLGFBQWQsQ0FBNEJPLElBQTFDO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7O0FBQ0QsVUFBSUMsSUFBSSxHQUFHcEIsTUFBTSxDQUFDcUIsTUFBUCxDQUFjLEtBQWQsRUFBcUJDLFNBQXJCLENBQStCLENBQS9CLEVBQWtDLENBQWxDLENBQVg7QUFFQUYsTUFBQUEsSUFBSSxDQUFDRyxNQUFMLENBQVlDLEtBQVosQ0FBa0IsVUFBbEI7QUFDRCxLQTNCQyxDQUFGO0FBNEJELEdBN0JPLENBQVI7QUErQkExQixFQUFBQSxRQUFRLENBQUMsd0NBQUQsRUFBMkMsWUFBWTtBQUM3REMsSUFBQUEsRUFBRSxDQUFDLHVFQUFELEVBQTBFLFlBQVk7QUFDdEYsWUFBTTBCLE9BQU8sR0FBRyxrQ0FBbUIsV0FBbkIsRUFBZ0MsTUFBaEMsQ0FBaEI7QUFDQUEsTUFBQUEsT0FBTyxDQUFDRixNQUFSLENBQWVDLEtBQWYsQ0FBcUIsVUFBckI7QUFDRCxLQUhDLENBQUY7QUFLQXpCLElBQUFBLEVBQUUsQ0FBQyx1RUFBRCxFQUEwRSxZQUFZO0FBQ3RGLFlBQU0wQixPQUFPLEdBQUcsa0NBQW1CLHlCQUFuQixFQUE4QyxNQUE5QyxDQUFoQjtBQUNBQSxNQUFBQSxPQUFPLENBQUNGLE1BQVIsQ0FBZUMsS0FBZixDQUFxQixjQUFyQjtBQUNELEtBSEMsQ0FBRjtBQUtBekIsSUFBQUEsRUFBRSxDQUFDLDBFQUFELEVBQTZFLFlBQVk7QUFDekYsWUFBTTBCLE9BQU8sR0FBRyxrQ0FBbUIsU0FBbkIsRUFBOEIsS0FBOUIsQ0FBaEI7QUFDQUEsTUFBQUEsT0FBTyxDQUFDRixNQUFSLENBQWVDLEtBQWYsQ0FBcUIsV0FBckI7QUFDRCxLQUhDLENBQUY7QUFLQXpCLElBQUFBLEVBQUUsQ0FBQyxnRkFBRCxFQUFtRixZQUFZO0FBQy9GLFlBQU0wQixPQUFPLEdBQUcsa0NBQW1CLFFBQW5CLEVBQTZCLEtBQTdCLENBQWhCO0FBQ0FBLE1BQUFBLE9BQU8sQ0FBQ0YsTUFBUixDQUFlQyxLQUFmLENBQXFCLFdBQXJCO0FBQ0QsS0FIQyxDQUFGO0FBS0F6QixJQUFBQSxFQUFFLENBQUMsMEVBQUQsRUFBNkUsWUFBWTtBQUN6RixZQUFNMEIsT0FBTyxHQUFHLGtDQUFtQixTQUFuQixFQUE4QixLQUE5QixDQUFoQjtBQUNBQSxNQUFBQSxPQUFPLENBQUNGLE1BQVIsQ0FBZUMsS0FBZixDQUFxQixXQUFyQjtBQUNELEtBSEMsQ0FBRjtBQUtBekIsSUFBQUEsRUFBRSxDQUFDLHlFQUFELEVBQTRFLFlBQVk7QUFDeEYsV0FBSyxJQUFJLENBQUMyQixLQUFELEVBQVFqQixNQUFSLENBQVQsSUFBNEIsQ0FBQyxDQUFDLFNBQUQsRUFBWSxNQUFaLENBQUQsRUFBc0IsQ0FBQyxVQUFELEVBQWEsS0FBYixDQUF0QixFQUEyQyxDQUFDLFFBQUQsRUFBVyxNQUFYLENBQTNDLENBQTVCLEVBQTRGO0FBQzFGLGNBQU1nQixPQUFPLEdBQUcsa0NBQW1CQyxLQUFuQixFQUEwQmpCLE1BQTFCLENBQWhCO0FBQ0FrQixRQUFBQSxJQUFJLENBQUNKLE1BQUwsR0FBY0MsS0FBZCxDQUFvQkMsT0FBcEIsRUFBNkJHLFNBQTdCO0FBQ0Q7QUFDRixLQUxDLENBQUY7QUFNRCxHQWhDTyxDQUFSO0FBa0NELENBdEVPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bW9jaGFcblxuaW1wb3J0IHsgXyB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBNRVRIT0RfTUFQLCByb3V0ZVRvQ29tbWFuZE5hbWUgfSBmcm9tICcuLi8uLi8uLi9saWIvcHJvdG9jb2wnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5cblxuZGVzY3JpYmUoJ1Byb3RvY29sJywgZnVuY3Rpb24gKCkge1xuXG4gIC8vIFRPRE8gdGVzdCBhZ2FpbnN0IGFuIGV4cGxpY2l0IHByb3RvY29sIHJhdGhlciB0aGFuIGEgaGFzaCBvZiBhIHByZXZpb3VzXG4gIC8vIHByb3RvY29sXG5cbiAgZGVzY3JpYmUoJ2Vuc3VyZSBwcm90b2NvbCBjb25zaXN0ZW5jeScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIG5vdCBjaGFuZ2UgcHJvdG9jb2wgYmV0d2VlbiBwYXRjaCB2ZXJzaW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBzaGFzdW0gPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMScpO1xuICAgICAgZm9yIChsZXQgW3VybCwgdXJsTWFwcGluZ10gb2YgXy50b1BhaXJzKE1FVEhPRF9NQVApKSB7XG4gICAgICAgIHNoYXN1bS51cGRhdGUodXJsKTtcbiAgICAgICAgZm9yIChsZXQgW21ldGhvZCwgbWV0aG9kTWFwcGluZ10gb2YgXy50b1BhaXJzKHVybE1hcHBpbmcpKSB7XG4gICAgICAgICAgc2hhc3VtLnVwZGF0ZShtZXRob2QpO1xuICAgICAgICAgIGlmIChtZXRob2RNYXBwaW5nLmNvbW1hbmQpIHtcbiAgICAgICAgICAgIHNoYXN1bS51cGRhdGUobWV0aG9kTWFwcGluZy5jb21tYW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1ldGhvZE1hcHBpbmcucGF5bG9hZFBhcmFtcykge1xuICAgICAgICAgICAgbGV0IGFsbFBhcmFtcyA9IF8uZmxhdHRlbihtZXRob2RNYXBwaW5nLnBheWxvYWRQYXJhbXMucmVxdWlyZWQpO1xuICAgICAgICAgICAgaWYgKG1ldGhvZE1hcHBpbmcucGF5bG9hZFBhcmFtcy5vcHRpb25hbCkge1xuICAgICAgICAgICAgICBhbGxQYXJhbXMgPSBhbGxQYXJhbXMuY29uY2F0KF8uZmxhdHRlbihtZXRob2RNYXBwaW5nLnBheWxvYWRQYXJhbXMub3B0aW9uYWwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IHBhcmFtIG9mIGFsbFBhcmFtcykge1xuICAgICAgICAgICAgICBzaGFzdW0udXBkYXRlKHBhcmFtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXRob2RNYXBwaW5nLnBheWxvYWRQYXJhbXMud3JhcCkge1xuICAgICAgICAgICAgICBzaGFzdW0udXBkYXRlKCdza2lwJyk7XG4gICAgICAgICAgICAgIHNoYXN1bS51cGRhdGUobWV0aG9kTWFwcGluZy5wYXlsb2FkUGFyYW1zLndyYXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGhhc2ggPSBzaGFzdW0uZGlnZXN0KCdoZXgnKS5zdWJzdHJpbmcoMCwgOCk7XG4gICAgICAvLyBNb2RpZnkgdGhlIGhhc2ggd2hlbmV2ZXIgdGhlIHByb3RvY29sIGhhcyBpbnRlbnRpb25hbGx5IGJlZW4gbW9kaWZpZWQuXG4gICAgICBoYXNoLnNob3VsZC5lcXVhbCgnNzM2YmYyNDYnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NoZWNrIHJvdXRlIHRvIGNvbW1hbmQgbmFtZSBjb252ZXJzaW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcHJvcGVybHkgbG9va3VwIGNvcnJlY3QgY29tbWFuZCBuYW1lIGZvciBlbmRwb2ludCB3aXRoIHNlc3Npb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjbWROYW1lID0gcm91dGVUb0NvbW1hbmROYW1lKCcvdGltZW91dHMnLCAnUE9TVCcpO1xuICAgICAgY21kTmFtZS5zaG91bGQuZXF1YWwoJ3RpbWVvdXRzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByb3Blcmx5IGxvb2t1cCBjb3JyZWN0IGNvbW1hbmQgbmFtZSBmb3IgZW5kcG9pbnQgd2l0aCBzZXNzaW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY21kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZSgnL3RpbWVvdXRzL2ltcGxpY2l0X3dhaXQnLCAnUE9TVCcpO1xuICAgICAgY21kTmFtZS5zaG91bGQuZXF1YWwoJ2ltcGxpY2l0V2FpdCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwcm9wZXJseSBsb29rdXAgY29ycmVjdCBjb21tYW5kIG5hbWUgZm9yIGVuZHBvaW50IHdpdGhvdXQgc2Vzc2lvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNtZE5hbWUgPSByb3V0ZVRvQ29tbWFuZE5hbWUoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgICBjbWROYW1lLnNob3VsZC5lcXVhbCgnZ2V0U3RhdHVzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByb3Blcmx5IGxvb2t1cCBjb3JyZWN0IGNvbW1hbmQgbmFtZSBmb3IgZW5kcG9pbnQgd2l0aG91dCBsZWFkaW5nIHNsYXNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY21kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZSgnc3RhdHVzJywgJ0dFVCcpO1xuICAgICAgY21kTmFtZS5zaG91bGQuZXF1YWwoJ2dldFN0YXR1cycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwcm9wZXJseSBsb29rdXAgY29ycmVjdCBjb21tYW5kIG5hbWUgZm9yIGZ1bGx5IHNwZWNpZmllZCBlbmRwb2ludCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNtZE5hbWUgPSByb3V0ZVRvQ29tbWFuZE5hbWUoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgICBjbWROYW1lLnNob3VsZC5lcXVhbCgnZ2V0U3RhdHVzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBmaW5kIGNvbW1hbmQgbmFtZSBpZiBpbmNvcnJlY3QgaW5wdXQgZGF0YSBoYXMgYmVlbiBzcGVjaWZpZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGxldCBbcm91dGUsIG1ldGhvZF0gb2YgW1snL3N0YXR1cycsICdQT1NUJ10sIFsnL3hzdGF0dXMnLCAnR0VUJ10sIFsnc3RhdHVzJywgJ1BPU1QnXV0pIHtcbiAgICAgICAgY29uc3QgY21kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZShyb3V0ZSwgbWV0aG9kKTtcbiAgICAgICAgY2hhaS5zaG91bGQoKS5lcXVhbChjbWROYW1lLCB1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxufSk7XG4iXX0=
|