testcafe 3.7.1 → 3.7.2

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.
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildChromeArgs = exports.CONTAINERIZED_CHROME_FLAGS = void 0;
4
- exports.CONTAINERIZED_CHROME_FLAGS = ['--no-sandbox', '--disable-dev-shm-usage'];
4
+ exports.CONTAINERIZED_CHROME_FLAGS = ['--no-sandbox', '--disable-dev-shm-usage', '--disable-gpu'];
5
5
  function buildChromeArgs({ config, cdpPort, platformArgs, tempProfileDir, isContainerized, isNativeAutomation, browserName }) {
6
6
  const headlessMode = ['chrome', 'chromium'].includes(browserName) ? '--headless=new' : '--headless';
7
7
  const defaultArgs = [
@@ -45,4 +45,4 @@ function buildChromeArgs({ config, cdpPort, platformArgs, tempProfileDir, isCont
45
45
  return chromeArgs;
46
46
  }
47
47
  exports.buildChromeArgs = buildChromeArgs;
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY2hyb21lLWFyZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvY2hyb21lL2J1aWxkLWNocm9tZS1hcmdzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsMEJBQTBCLEdBQUcsQ0FBQyxjQUFjLEVBQUUseUJBQXlCLENBQUMsQ0FBQztBQUV0RixTQUFnQixlQUFlLENBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRTtJQUNoSSxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDcEcsTUFBTSxXQUFXLEdBQUk7UUFDakIsdUNBQXVDO1FBQ3ZDLHNEQUFzRDtRQUN0RCwwQkFBMEI7UUFDMUIsaUNBQWlDO1FBQ2pDLHVDQUF1QztRQUN2QywwQ0FBMEM7UUFDMUMsb0JBQW9CO1FBQ3BCLDBDQUEwQztRQUMxQyx3QkFBd0I7UUFDeEIsc0JBQXNCO1FBQ3RCLHdCQUF3QjtRQUN4QixvQkFBb0I7UUFDcEIsbUNBQW1DO1FBQ25DLDBCQUEwQjtRQUMxQiw0QkFBNEI7UUFDNUIsa0NBQWtDO1FBQ2xDLGdCQUFnQjtRQUNoQixxQkFBcUI7UUFDckIscUJBQXFCO1FBQ3JCLGlDQUFpQztRQUNqQyw0QkFBNEI7UUFDNUIsMEJBQTBCO1FBQzFCLGdCQUFnQjtRQUNoQix3QkFBd0I7UUFDeEIscUJBQXFCO0tBQ3hCLENBQUM7SUFFRixJQUFJLFVBQVUsR0FBRyxFQUFFO1NBQ2QsTUFBTSxDQUNILE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQywyQkFBMkIsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUNyRCxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ3JFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDckMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDeEMseUZBQXlGO0lBQ3pGLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDdEQsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ2xDLFdBQVcsQ0FDZDtTQUNBLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVmLElBQUksZUFBZSxFQUFFO1FBQ2pCLGtDQUEwQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztLQUNOO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQW5ERCwwQ0FtREMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQ09OVEFJTkVSSVpFRF9DSFJPTUVfRkxBR1MgPSBbJy0tbm8tc2FuZGJveCcsICctLWRpc2FibGUtZGV2LXNobS11c2FnZSddO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDaHJvbWVBcmdzICh7IGNvbmZpZywgY2RwUG9ydCwgcGxhdGZvcm1BcmdzLCB0ZW1wUHJvZmlsZURpciwgaXNDb250YWluZXJpemVkLCBpc05hdGl2ZUF1dG9tYXRpb24sIGJyb3dzZXJOYW1lIH0pIHtcbiAgICBjb25zdCBoZWFkbGVzc01vZGUgPSBbJ2Nocm9tZScsICdjaHJvbWl1bSddLmluY2x1ZGVzKGJyb3dzZXJOYW1lKSA/ICctLWhlYWRsZXNzPW5ldycgOiAnLS1oZWFkbGVzcyc7XG4gICAgY29uc3QgZGVmYXVsdEFyZ3MgID0gW1xuICAgICAgICAnLS1kaXNhYmxlLXNlYXJjaC1lbmdpbmUtY2hvaWNlLXNjcmVlbicsXG4gICAgICAgICctLWRpc2FibGUtY29tcG9uZW50LWV4dGVuc2lvbnMtd2l0aC1iYWNrZ3JvdW5kLXBhZ2VzJyxcbiAgICAgICAgJy0tYWxsb3ctcHJlLWNvbW1pdC1pbnB1dCcsXG4gICAgICAgICctLWRpc2FibGUtYmFja2dyb3VuZC1uZXR3b3JraW5nJyxcbiAgICAgICAgJy0tZGlzYWJsZS1iYWNrZ3JvdW5kLXRpbWVyLXRocm90dGxpbmcnLFxuICAgICAgICAnLS1kaXNhYmxlLWJhY2tncm91bmRpbmctb2NjbHVkZWQtd2luZG93cycsXG4gICAgICAgICctLWRpc2FibGUtYnJlYWtwYWQnLFxuICAgICAgICAnLS1kaXNhYmxlLWNsaWVudC1zaWRlLXBoaXNoaW5nLWRldGVjdGlvbicsXG4gICAgICAgICctLWRpc2FibGUtZGVmYXVsdC1hcHBzJyxcbiAgICAgICAgJy0tZGlzYWJsZS1leHRlbnNpb25zJyxcbiAgICAgICAgJy0tZGlzYWJsZS1oYW5nLW1vbml0b3InLFxuICAgICAgICAnLS1kaXNhYmxlLWluZm9iYXJzJyxcbiAgICAgICAgJy0tZGlzYWJsZS1pcGMtZmxvb2RpbmctcHJvdGVjdGlvbicsXG4gICAgICAgICctLWRpc2FibGUtcG9wdXAtYmxvY2tpbmcnLFxuICAgICAgICAnLS1kaXNhYmxlLXByb21wdC1vbi1yZXBvc3QnLFxuICAgICAgICAnLS1kaXNhYmxlLXJlbmRlcmVyLWJhY2tncm91bmRpbmcnLFxuICAgICAgICAnLS1kaXNhYmxlLXN5bmMnLFxuICAgICAgICAnLS1lbmFibGUtYXV0b21hdGlvbicsXG4gICAgICAgICctLWV4cG9ydC10YWdnZWQtcGRmJyxcbiAgICAgICAgJy0tZ2VuZXJhdGUtcGRmLWRvY3VtZW50LW91dGxpbmUnLFxuICAgICAgICAnLS1mb3JjZS1jb2xvci1wcm9maWxlPXNyZ2InLFxuICAgICAgICAnLS1tZXRyaWNzLXJlY29yZGluZy1vbmx5JyxcbiAgICAgICAgJy0tbm8tZmlyc3QtcnVuJyxcbiAgICAgICAgJy0tcGFzc3dvcmQtc3RvcmU9YmFzaWMnLFxuICAgICAgICAnLS11c2UtbW9jay1rZXljaGFpbicsXG4gICAgXTtcblxuICAgIGxldCBjaHJvbWVBcmdzID0gW11cbiAgICAgICAgLmNvbmNhdChcbiAgICAgICAgICAgIGNkcFBvcnQgPyBbYC0tcmVtb3RlLWRlYnVnZ2luZy1wb3J0PSR7Y2RwUG9ydH1gXSA6IFtdLFxuICAgICAgICAgICAgIWNvbmZpZy51c2VyUHJvZmlsZSA/IFtgLS11c2VyLWRhdGEtZGlyPSR7dGVtcFByb2ZpbGVEaXIucGF0aH1gXSA6IFtdLFxuICAgICAgICAgICAgY29uZmlnLmhlYWRsZXNzID8gW2hlYWRsZXNzTW9kZV0gOiBbXSxcbiAgICAgICAgICAgIGNvbmZpZy51c2VyQXJncyA/IFtjb25maWcudXNlckFyZ3NdIDogW10sXG4gICAgICAgICAgICAvLyBOT1RFOiB3ZSBuZWVkIHRvIHByZXZlbnQgbmV3IHdpbmRvdyBibG9ja2luZyBmb3IgbXVsdGlwbGUgd2luZG93cyBpbiBOYXRpdmUgQXV0b21hdGlvblxuICAgICAgICAgICAgaXNOYXRpdmVBdXRvbWF0aW9uID8gWyctLWRpc2FibGUtcG9wdXAtYmxvY2tpbmcnXSA6IFtdLFxuICAgICAgICAgICAgcGxhdGZvcm1BcmdzID8gW3BsYXRmb3JtQXJnc10gOiBbXSxcbiAgICAgICAgICAgIGRlZmF1bHRBcmdzXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oJyAnKTtcblxuICAgIGlmIChpc0NvbnRhaW5lcml6ZWQpIHtcbiAgICAgICAgQ09OVEFJTkVSSVpFRF9DSFJPTUVfRkxBR1MuZm9yRWFjaChmbGFnID0+IHtcbiAgICAgICAgICAgIGlmICghY2hyb21lQXJncy5pbmNsdWRlcyhmbGFnKSlcbiAgICAgICAgICAgICAgICBjaHJvbWVBcmdzID0gY2hyb21lQXJncy5jb25jYXQoJyAnLCBmbGFnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNocm9tZUFyZ3M7XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY2hyb21lLWFyZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvY2hyb21lL2J1aWxkLWNocm9tZS1hcmdzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsMEJBQTBCLEdBQUcsQ0FBQyxjQUFjLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFFdkcsU0FBZ0IsZUFBZSxDQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUU7SUFDaEksTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3BHLE1BQU0sV0FBVyxHQUFJO1FBQ2pCLHVDQUF1QztRQUN2QyxzREFBc0Q7UUFDdEQsMEJBQTBCO1FBQzFCLGlDQUFpQztRQUNqQyx1Q0FBdUM7UUFDdkMsMENBQTBDO1FBQzFDLG9CQUFvQjtRQUNwQiwwQ0FBMEM7UUFDMUMsd0JBQXdCO1FBQ3hCLHNCQUFzQjtRQUN0Qix3QkFBd0I7UUFDeEIsb0JBQW9CO1FBQ3BCLG1DQUFtQztRQUNuQywwQkFBMEI7UUFDMUIsNEJBQTRCO1FBQzVCLGtDQUFrQztRQUNsQyxnQkFBZ0I7UUFDaEIscUJBQXFCO1FBQ3JCLHFCQUFxQjtRQUNyQixpQ0FBaUM7UUFDakMsNEJBQTRCO1FBQzVCLDBCQUEwQjtRQUMxQixnQkFBZ0I7UUFDaEIsd0JBQXdCO1FBQ3hCLHFCQUFxQjtLQUN4QixDQUFDO0lBRUYsSUFBSSxVQUFVLEdBQUcsRUFBRTtTQUNkLE1BQU0sQ0FDSCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDckQsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUNyRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ3JDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3hDLHlGQUF5RjtJQUN6RixrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ3RELFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUNsQyxXQUFXLENBQ2Q7U0FDQSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFZixJQUFJLGVBQWUsRUFBRTtRQUNqQixrQ0FBMEIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUMxQixVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7S0FDTjtJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUM7QUFuREQsMENBbURDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENPTlRBSU5FUklaRURfQ0hST01FX0ZMQUdTID0gWyctLW5vLXNhbmRib3gnLCAnLS1kaXNhYmxlLWRldi1zaG0tdXNhZ2UnLCAnLS1kaXNhYmxlLWdwdSddO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDaHJvbWVBcmdzICh7IGNvbmZpZywgY2RwUG9ydCwgcGxhdGZvcm1BcmdzLCB0ZW1wUHJvZmlsZURpciwgaXNDb250YWluZXJpemVkLCBpc05hdGl2ZUF1dG9tYXRpb24sIGJyb3dzZXJOYW1lIH0pIHtcbiAgICBjb25zdCBoZWFkbGVzc01vZGUgPSBbJ2Nocm9tZScsICdjaHJvbWl1bSddLmluY2x1ZGVzKGJyb3dzZXJOYW1lKSA/ICctLWhlYWRsZXNzPW5ldycgOiAnLS1oZWFkbGVzcyc7XG4gICAgY29uc3QgZGVmYXVsdEFyZ3MgID0gW1xuICAgICAgICAnLS1kaXNhYmxlLXNlYXJjaC1lbmdpbmUtY2hvaWNlLXNjcmVlbicsXG4gICAgICAgICctLWRpc2FibGUtY29tcG9uZW50LWV4dGVuc2lvbnMtd2l0aC1iYWNrZ3JvdW5kLXBhZ2VzJyxcbiAgICAgICAgJy0tYWxsb3ctcHJlLWNvbW1pdC1pbnB1dCcsXG4gICAgICAgICctLWRpc2FibGUtYmFja2dyb3VuZC1uZXR3b3JraW5nJyxcbiAgICAgICAgJy0tZGlzYWJsZS1iYWNrZ3JvdW5kLXRpbWVyLXRocm90dGxpbmcnLFxuICAgICAgICAnLS1kaXNhYmxlLWJhY2tncm91bmRpbmctb2NjbHVkZWQtd2luZG93cycsXG4gICAgICAgICctLWRpc2FibGUtYnJlYWtwYWQnLFxuICAgICAgICAnLS1kaXNhYmxlLWNsaWVudC1zaWRlLXBoaXNoaW5nLWRldGVjdGlvbicsXG4gICAgICAgICctLWRpc2FibGUtZGVmYXVsdC1hcHBzJyxcbiAgICAgICAgJy0tZGlzYWJsZS1leHRlbnNpb25zJyxcbiAgICAgICAgJy0tZGlzYWJsZS1oYW5nLW1vbml0b3InLFxuICAgICAgICAnLS1kaXNhYmxlLWluZm9iYXJzJyxcbiAgICAgICAgJy0tZGlzYWJsZS1pcGMtZmxvb2RpbmctcHJvdGVjdGlvbicsXG4gICAgICAgICctLWRpc2FibGUtcG9wdXAtYmxvY2tpbmcnLFxuICAgICAgICAnLS1kaXNhYmxlLXByb21wdC1vbi1yZXBvc3QnLFxuICAgICAgICAnLS1kaXNhYmxlLXJlbmRlcmVyLWJhY2tncm91bmRpbmcnLFxuICAgICAgICAnLS1kaXNhYmxlLXN5bmMnLFxuICAgICAgICAnLS1lbmFibGUtYXV0b21hdGlvbicsXG4gICAgICAgICctLWV4cG9ydC10YWdnZWQtcGRmJyxcbiAgICAgICAgJy0tZ2VuZXJhdGUtcGRmLWRvY3VtZW50LW91dGxpbmUnLFxuICAgICAgICAnLS1mb3JjZS1jb2xvci1wcm9maWxlPXNyZ2InLFxuICAgICAgICAnLS1tZXRyaWNzLXJlY29yZGluZy1vbmx5JyxcbiAgICAgICAgJy0tbm8tZmlyc3QtcnVuJyxcbiAgICAgICAgJy0tcGFzc3dvcmQtc3RvcmU9YmFzaWMnLFxuICAgICAgICAnLS11c2UtbW9jay1rZXljaGFpbicsXG4gICAgXTtcblxuICAgIGxldCBjaHJvbWVBcmdzID0gW11cbiAgICAgICAgLmNvbmNhdChcbiAgICAgICAgICAgIGNkcFBvcnQgPyBbYC0tcmVtb3RlLWRlYnVnZ2luZy1wb3J0PSR7Y2RwUG9ydH1gXSA6IFtdLFxuICAgICAgICAgICAgIWNvbmZpZy51c2VyUHJvZmlsZSA/IFtgLS11c2VyLWRhdGEtZGlyPSR7dGVtcFByb2ZpbGVEaXIucGF0aH1gXSA6IFtdLFxuICAgICAgICAgICAgY29uZmlnLmhlYWRsZXNzID8gW2hlYWRsZXNzTW9kZV0gOiBbXSxcbiAgICAgICAgICAgIGNvbmZpZy51c2VyQXJncyA/IFtjb25maWcudXNlckFyZ3NdIDogW10sXG4gICAgICAgICAgICAvLyBOT1RFOiB3ZSBuZWVkIHRvIHByZXZlbnQgbmV3IHdpbmRvdyBibG9ja2luZyBmb3IgbXVsdGlwbGUgd2luZG93cyBpbiBOYXRpdmUgQXV0b21hdGlvblxuICAgICAgICAgICAgaXNOYXRpdmVBdXRvbWF0aW9uID8gWyctLWRpc2FibGUtcG9wdXAtYmxvY2tpbmcnXSA6IFtdLFxuICAgICAgICAgICAgcGxhdGZvcm1BcmdzID8gW3BsYXRmb3JtQXJnc10gOiBbXSxcbiAgICAgICAgICAgIGRlZmF1bHRBcmdzXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oJyAnKTtcblxuICAgIGlmIChpc0NvbnRhaW5lcml6ZWQpIHtcbiAgICAgICAgQ09OVEFJTkVSSVpFRF9DSFJPTUVfRkxBR1MuZm9yRWFjaChmbGFnID0+IHtcbiAgICAgICAgICAgIGlmICghY2hyb21lQXJncy5pbmNsdWRlcyhmbGFnKSlcbiAgICAgICAgICAgICAgICBjaHJvbWVBcmdzID0gY2hyb21lQXJncy5jb25jYXQoJyAnLCBmbGFnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNocm9tZUFyZ3M7XG59XG4iXX0=
@@ -152,7 +152,7 @@ class BrowserClient {
152
152
  }
153
153
  }
154
154
  async resizeBounds(newDimensions) {
155
- const { viewportSize, config } = this._runtimeInfo;
155
+ const { viewportSize } = this._runtimeInfo;
156
156
  let nonClientWidth = 0;
157
157
  let nonClientHeight = 0;
158
158
  if (viewportSize.outerWidth && viewportSize.outerHeight) {
@@ -162,7 +162,6 @@ class BrowserClient {
162
162
  const target = await (0, utils_1.getFirstTab)(this._port);
163
163
  const client = await this.getActiveClient();
164
164
  if (client) {
165
- await this._setDeviceMetricsOverride(client, newDimensions.width, newDimensions.height, 1, config.mobile);
166
165
  const windowParams = await client.Browser.getWindowForTarget({ targetId: target.id });
167
166
  if (windowParams.bounds.windowState !== 'normal') {
168
167
  await client.Browser.setWindowBounds({
@@ -319,4 +318,4 @@ class BrowserClient {
319
318
  }
320
319
  }
321
320
  exports.BrowserClient = BrowserClient;
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvY2hyb21lL2NkcC1jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsZ0RBQXdCO0FBQ3hCLDRDQUFvQjtBQUNwQixzRkFBbUU7QUFDbkUsa0RBQTBCO0FBQzFCLHlFQUF1RjtBQUN2RixzR0FBOEU7QUFROUUsa0VBQXVDO0FBQ3ZDLGdFQUFvRjtBQUNwRix3R0FBOEU7QUFDOUUsMEVBQWtEO0FBTWxELDJFQUk2QztBQUU3QyxtQ0FNbUI7QUFFbkIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFVLEVBQVUsRUFBRSxDQUFDLDREQUE0RCxFQUFFLEVBQUUsQ0FBQztBQUM3RyxNQUFNLGFBQWEsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFlBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUUzRCxNQUFNLFFBQVEsR0FBRyxJQUFBLGVBQUssRUFBQyxxREFBcUQsQ0FBQyxDQUFDO0FBRTlFLE1BQU0sZUFBZTtJQUlqQixZQUFvQixNQUFnQztRQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFLLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0NBQ0o7QUFFRCxNQUFNLGtCQUFrQixHQUFHO0lBQ3ZCLE1BQU0sRUFBUyxNQUFNO0lBQ3JCLGFBQWEsRUFBRSxDQUFDO0NBQ25CLENBQUM7QUFPVyxRQUFBLHNDQUFzQyxHQUFHLHdDQUF3QyxDQUFDO0FBRS9GLE1BQWEsYUFBYTtJQVN0QixZQUFvQixXQUF3QjtRQVJwQyxhQUFRLEdBQWdDLEVBQUUsQ0FBQztRQU0zQyxxQ0FBZ0MsR0FBRyxLQUFLLENBQUM7UUFHN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBSSxJQUFBLGVBQUssRUFBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFOUQsV0FBVyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFFakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFXLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBWSxLQUFLO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBWSxVQUFVO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQVksT0FBTztRQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVPLHVCQUF1QixDQUFFLE1BQXdCLEVBQUUsV0FBNkI7UUFDcEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLE1BQU0sVUFBVSxJQUFBLHVCQUFVLEVBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLE1BQU0sQ0FBRSxjQUFjLENBQUUsR0FBRyxXQUFXLENBQUM7UUFFdkMsSUFBSSxjQUFjLEdBQUcsOENBQXdCLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUMzQyx5QkFBZSxDQUFDLGdDQUFnQyxFQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FDaEMsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxhQUFhLENBQUUsTUFBa0IsRUFBRSxXQUFtQixJQUFJLENBQUMsVUFBVTtRQUMvRSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsaUNBQVksRUFBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFaEUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBRTFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEQsTUFBTSxJQUFBLDhCQUFrQixFQUNwQixLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUMvQixXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxzQ0FBZ0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQ3hGLENBQUM7UUFFRixNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsTUFBTSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFdkIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVPLEtBQUssQ0FBQyxZQUFZLENBQUUsTUFBZ0M7UUFDeEQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDdEIsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQ3JCLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sS0FBSyxDQUFDLHlCQUF5QixDQUFFLE1BQWdDLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxpQkFBeUIsRUFBRSxNQUFlO1FBQ2hKLE1BQU0sSUFBQSw4QkFBa0IsRUFDcEIsS0FBSyxJQUFJLEVBQUU7WUFDUCxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUM7Z0JBQzVDLEtBQUs7Z0JBQ0wsTUFBTTtnQkFDTixpQkFBaUI7Z0JBQ2pCLE1BQU07Z0JBQ04sYUFBYTtnQkFDYixTQUFTLEVBQUUsS0FBSzthQUNuQixDQUFDLENBQUM7UUFDUCxDQUFDLEVBQ0QsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsc0NBQWdCLENBQUMsd0JBQXdCLEVBQUUsV0FBVyxDQUFDLENBQ3RHLENBQUM7SUFDTixDQUFDO0lBRU8sS0FBSyxDQUFDLHNCQUFzQixDQUFFLE1BQWdDO1FBQ2xFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDO1lBQ2pDLE9BQU87UUFFWCxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCLENBQUUsTUFBZ0M7UUFDOUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUM7WUFDN0IsT0FBTztRQUVYLE1BQU0sV0FBVyxHQUF1QjtZQUNwQyxPQUFPLEVBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO1lBQ2xDLGFBQWEsRUFBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQzFELGNBQWMsRUFBRSxDQUFDO1NBQ3BCLENBQUM7UUFFRixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsMEJBQTBCO1lBQzNDLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVuRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsd0JBQXdCO1lBQ3pDLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWEsQ0FBRSxNQUFnQztRQUN6RCxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV0QyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDcEIsS0FBSyxFQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztZQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1NBQzlCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZSxDQUFFLE1BQWdDO1FBQzNELE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNsQyxRQUFRLEVBQU0sT0FBTztZQUNyQixZQUFZLEVBQUUsYUFBYTtTQUM5QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQixDQUFFLE1BQWdDLEVBQUUsVUFBa0IsRUFBRSxhQUFhLEdBQUcsS0FBSztRQUN2RyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBRSxNQUFnQztRQUM5RSxJQUFJLENBQUMsTUFBTTtZQUNQLE9BQU87UUFFWCxNQUFNLDJCQUEyQixHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBRTdHLElBQUksQ0FBQyxZQUFZLENBQUMsd0JBQXdCLEdBQUcsMkJBQTJCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUN0RixJQUFJLENBQUMsWUFBWSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUM7SUFDeEgsQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFZLENBQUUsYUFBbUI7UUFDMUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFekcsTUFBTSxZQUFZLEdBQUksWUFBWSxDQUFDLEtBQUssQ0FBQztRQUN6QyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQzFDLE1BQU0sUUFBUSxHQUFRLGFBQWEsQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDO1FBQzFELE1BQU0sU0FBUyxHQUFPLGFBQWEsQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDO1FBRTVELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUNoQixNQUFNLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFaEgsWUFBWSxDQUFDLEtBQUssR0FBSSxRQUFRLENBQUM7UUFDL0IsWUFBWSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFFaEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFNUMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUM1QixNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUUvSCxNQUFNLElBQUEsOEJBQWtCLEVBQ3BCLEtBQUssSUFBSSxFQUFFO2dCQUNQLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdEcsQ0FBQyxFQUNELFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHNDQUFnQixDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FDNUYsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyw4QkFBOEI7UUFDdkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLG1CQUFXLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRTVDLElBQUksTUFBTSxFQUFFO1lBQ1IsTUFBTSxZQUFZLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRXRGLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ25IO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFZLENBQUUsYUFBbUI7UUFDMUMsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRW5ELElBQUksY0FBYyxHQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFFeEIsSUFBSSxZQUFZLENBQUMsVUFBVSxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUU7WUFDckQsY0FBYyxHQUFJLFlBQVksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUMvRCxlQUFlLEdBQUcsWUFBWSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1NBQ3BFO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLG1CQUFXLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRTVDLElBQUksTUFBTSxFQUFFO1lBQ1IsTUFBTSxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTFHLE1BQU0sWUFBWSxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUV0RixJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRTtnQkFDOUMsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztvQkFDakMsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRO29CQUMvQixNQUFNLEVBQUk7d0JBQ04sV0FBVyxFQUFFLFFBQVE7cUJBQ3hCO2lCQUNKLENBQUMsQ0FBQzthQUNOO1lBRUQsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztnQkFDakMsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRO2dCQUMvQixNQUFNLEVBQUk7b0JBQ04sS0FBSyxFQUFHLGFBQWEsQ0FBQyxLQUFLLEdBQUcsY0FBYztvQkFDNUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNLEdBQUcsZUFBZTtpQkFDakQ7YUFDSixDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTSxhQUFhO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDekQsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBRSxRQUFnQjtRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZDLElBQUksTUFBTTtZQUNOLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZTtRQUN4QixJQUFJO1lBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsb0JBQVksRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBRWhGLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNwQztTQUNKO1FBQ0QsT0FBTyxHQUFHLEVBQUU7WUFDUixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFZCxPQUFPLEtBQUssQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFNUMsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUNiLE9BQU8sS0FBSyxDQUFDLENBQUM7UUFFbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxLQUFLLENBQUMsdUJBQXVCO1FBQ2hDLElBQUk7WUFDQSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsZUFBTyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV2QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFFakYsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO2dCQUNuQixPQUFPO1lBRVgsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFNUMsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsTUFBTSxJQUFJLENBQUMsa0NBQWtDLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RELE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNuQztTQUNKO1FBQ0QsT0FBTyxDQUFDLEVBQUU7WUFDTixPQUFPO1NBQ1Y7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUFFLFFBQWtCO1FBQzlDLElBQUksSUFBSSxHQUF1QyxLQUFLLENBQUMsQ0FBQztRQUV0RCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUU1QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1Qsd0VBQXdFO1lBQ3hFLE1BQU0sSUFBQSxlQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFFZixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUI7UUFFRCxJQUFJLFFBQVEsRUFBRTtZQUNWLE1BQU0sT0FBTyxHQUFhLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9ELE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDO1lBRXhFLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUNsRDtRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUMvQyxJQUFJO1lBQ0oscUJBQXFCLEVBQUUsUUFBUTtTQUNsQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVE7UUFDakIsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUNsQixNQUFNLGlDQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU0sS0FBSyxDQUFDLHdCQUF3QjtRQUNqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUU1QyxJQUFJLENBQUMsTUFBTTtZQUNQLE9BQU87UUFFWCxNQUFNLDJCQUEyQixHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLG9EQUFpQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFMUgsTUFBTSxnQkFBZ0IsR0FBRywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRWxFLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7UUFDcEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLHVCQUF1QixDQUFFLFFBQWdCO1FBQ2xELE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZDLHFDQUFxQztRQUNyQyxNQUFNLElBQUEsZUFBSyxFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CO1FBQzVCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRTVDLElBQUksQ0FBQyxNQUFNO1lBQ1AsT0FBTztRQUVYLElBQUksQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUU7WUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxLQUEyQixFQUFFLEVBQUU7Z0JBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7b0JBQ3pCLElBQUksRUFBTyxLQUFLLENBQUMsSUFBSTtvQkFDckIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO2lCQUM3QixDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLENBQUM7U0FDaEQ7UUFFRCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUE0QyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0I7UUFDM0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFNUMsSUFBSSxDQUFDLE1BQU07WUFDUCxPQUFPO1FBRVgsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxVQUFVLEdBQVcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUI7UUFDMUIsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0QsTUFBTSxpQkFBaUIsR0FBTSxvQkFBb0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRXJFLElBQUksQ0FBQyxpQkFBaUI7WUFDbEIsT0FBTyxJQUFJLENBQUM7UUFFaEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztRQUV4QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUU1QyxJQUFJLENBQUMsTUFBTTtZQUNQLE9BQU8sSUFBSSxDQUFDO1FBRWhCLElBQUksb0JBQW9CO1lBQ3BCLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXJGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLEtBQUssQ0FBQyx1QkFBdUIsQ0FBRSxVQUFtQyxFQUFFLE9BQW9DO1FBQzVHLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxrQkFBVSxFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxNQUFNO1lBQ1AsT0FBTyxJQUFJLENBQUM7UUFFaEIsSUFBSTtZQUNBLE1BQU0sTUFBTSxHQUFhLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSwrQ0FBMkIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUVsSCxNQUFNLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBRS9CLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQztTQUNwQjtRQUNELE9BQU8sR0FBRyxFQUFFO1lBQ1IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRWQsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsZ0NBQWdDLENBQUUsT0FBb0M7UUFDL0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLG1CQUFXLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoRCxNQUFNLGdCQUFnQixHQUFHLElBQUksOENBQTBCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFakgsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLDhDQUFzQyxFQUFFLEtBQUssRUFBQyxVQUFVLEVBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVuSSxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7Q0FDSjtBQXpaRCxzQ0F5WkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCBQcm90b2NvbCBmcm9tICdkZXZ0b29scy1wcm90b2NvbCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcmVtb3RlQ2hyb21lLCB7IFRhcmdldEluZm8gfSBmcm9tICdjaHJvbWUtcmVtb3RlLWludGVyZmFjZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgR0VUX1dJTkRPV19ESU1FTlNJT05TX0lORk9fU0NSSVBUIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvY2xpZW50LWZ1bmN0aW9ucyc7XG5pbXBvcnQgV0FSTklOR19NRVNTQUdFIGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1tZXNzYWdlJztcblxuaW1wb3J0IHtcbiAgICBDb25maWcsXG4gICAgUnVudGltZUluZm8sXG4gICAgVG91Y2hDb25maWdPcHRpb25zLFxuICAgIFNpemUsXG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHByZXR0eVRpbWUgZnJvbSAncHJldHR5LWhydGltZSc7XG5pbXBvcnQgeyBDaGVja2VkQ0RQTWV0aG9kLCBFTEFQU0VEX1RJTUVfVVBQRVJCT1VORFMgfSBmcm9tICcuLi9lbGFwc2VkLXVwcGVyYm91bmRzJztcbmltcG9ydCBndWFyZFRpbWVFeGVjdXRpb24gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vdXRpbHMvZ3VhcmQtdGltZS1leGVjdXRpb24nO1xuaW1wb3J0IGRlbGF5IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3V0aWxzL2RlbGF5JztcblxuaW1wb3J0IFN0YXJ0U2NyZWVuY2FzdFJlcXVlc3QgPSBQcm90b2NvbC5QYWdlLlN0YXJ0U2NyZWVuY2FzdFJlcXVlc3Q7XG5pbXBvcnQgU2NyZWVuY2FzdEZyYW1lRXZlbnQgPSBQcm90b2NvbC5QYWdlLlNjcmVlbmNhc3RGcmFtZUV2ZW50O1xuaW1wb3J0IHsgTmF0aXZlQXV0b21hdGlvbkluaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgICBOYXRpdmVBdXRvbWF0aW9uQmFzZSxcbiAgICBOYXRpdmVBdXRvbWF0aW9uQ2hpbGRXaW5kb3csXG4gICAgTmF0aXZlQXV0b21hdGlvbk1haW5XaW5kb3csXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL25hdGl2ZS1hdXRvbWF0aW9uJztcblxuaW1wb3J0IHtcbiAgICBnZXRBY3RpdmVUYWIsXG4gICAgZ2V0Rmlyc3RUYWIsXG4gICAgZ2V0VGFiQnlJZCxcbiAgICBnZXRUYWJzLFxufVxuICAgIGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBERUJVR19TQ09QRSA9IChpZDogc3RyaW5nKTogc3RyaW5nID0+IGB0ZXN0Y2FmZTpicm93c2VyOnByb3ZpZGVyOmJ1aWx0LWluOmNocm9tZTpicm93c2VyLWNsaWVudDoke2lkfWA7XG5jb25zdCBET1dOTE9BRFNfRElSID0gcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgJ0Rvd25sb2FkcycpO1xuXG5jb25zdCBkZWJ1Z0xvZyA9IGRlYnVnKCd0ZXN0Y2FmZTpicm93c2VyOnByb3ZpZGVyOmJ1aWx0LWluOmRlZGljYXRlZDpjaHJvbWUnKTtcblxuY2xhc3MgUHJvdG9jb2xBcGlJbmZvIHtcbiAgICBwdWJsaWMgaW5hY3RpdmU6IGJvb2xlYW47XG4gICAgcHVibGljIGNsaWVudDogcmVtb3RlQ2hyb21lLlByb3RvY29sQXBpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSkge1xuICAgICAgICB0aGlzLmNsaWVudCAgID0gY2xpZW50O1xuICAgICAgICB0aGlzLmluYWN0aXZlID0gZmFsc2U7XG4gICAgfVxufVxuXG5jb25zdCBTQ1JFRU5DQVNUX09QVElPTlMgPSB7XG4gICAgZm9ybWF0OiAgICAgICAgJ2pwZWcnLFxuICAgIGV2ZXJ5TnRoRnJhbWU6IDEsXG59O1xuXG5pbnRlcmZhY2UgVmlkZW9GcmFtZURhdGEge1xuICAgIGRhdGE6IHN0cmluZztcbiAgICBzZXNzaW9uSWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IE5FV19XSU5ET1dfT1BFTkVEX0lOX05BVElWRV9BVVRPTUFUSU9OID0gJ25ldy13aW5kb3ctb3BlbmVkLWluLW5hdGl2ZS1hdXRvbWF0aW9uJztcblxuZXhwb3J0IGNsYXNzIEJyb3dzZXJDbGllbnQge1xuICAgIHByaXZhdGUgX2NsaWVudHM6IERpY3Rpb25hcnk8UHJvdG9jb2xBcGlJbmZvPiA9IHt9O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3J1bnRpbWVJbmZvOiBSdW50aW1lSW5mbztcbiAgICBwcml2YXRlIF9wYXJlbnRUYXJnZXQ/OiByZW1vdGVDaHJvbWUuVGFyZ2V0SW5mbztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnTG9nZ2VyOiBkZWJ1Zy5EZWJ1Z2dlcjtcbiAgICBwcml2YXRlIF92aWRlb0ZyYW1lc0J1ZmZlcjogVmlkZW9GcmFtZURhdGFbXTtcbiAgICBwcml2YXRlIF9sYXN0RnJhbWU6IFZpZGVvRnJhbWVEYXRhIHwgbnVsbDtcbiAgICBwcml2YXRlIF9zY3JlZW5jYXN0RnJhbWVMaXN0ZW5lckF0dGFjaGVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHJ1bnRpbWVJbmZvOiBSdW50aW1lSW5mbykge1xuICAgICAgICB0aGlzLl9ydW50aW1lSW5mbyA9IHJ1bnRpbWVJbmZvO1xuICAgICAgICB0aGlzLmRlYnVnTG9nZ2VyICA9IGRlYnVnKERFQlVHX1NDT1BFKHJ1bnRpbWVJbmZvLmJyb3dzZXJJZCkpO1xuXG4gICAgICAgIHJ1bnRpbWVJbmZvLmJyb3dzZXJDbGllbnQgPSB0aGlzO1xuXG4gICAgICAgIHRoaXMuX3ZpZGVvRnJhbWVzQnVmZmVyID0gW107XG4gICAgICAgIHRoaXMuX2xhc3RGcmFtZSAgICAgICAgID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBfcG9ydCAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVJbmZvLmNkcFBvcnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgX2NsaWVudEtleSAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVJbmZvLmFjdGl2ZVdpbmRvd0lkIHx8IHRoaXMuX3J1bnRpbWVJbmZvLmJyb3dzZXJJZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBfY29uZmlnICgpOiBDb25maWcge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVudGltZUluZm8uY29uZmlnO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NoZWNrRHJvcE9mUGVyZm9ybWFuY2UgKG1ldGhvZDogQ2hlY2tlZENEUE1ldGhvZCwgZWxhcHNlZFRpbWU6IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dlcihgQ0RQIG1ldGhvZCAnJHttZXRob2R9JyB0b29rICR7cHJldHR5VGltZShlbGFwc2VkVGltZSl9YCk7XG5cbiAgICAgICAgY29uc3QgWyBlbGFwc2VkU2Vjb25kcyBdID0gZWxhcHNlZFRpbWU7XG5cbiAgICAgICAgaWYgKGVsYXBzZWRTZWNvbmRzID4gRUxBUFNFRF9USU1FX1VQUEVSQk9VTkRTW21ldGhvZF0pIHtcbiAgICAgICAgICAgIHRoaXMuX3J1bnRpbWVJbmZvLnByb3ZpZGVyTWV0aG9kcy5yZXBvcnRXYXJuaW5nKFxuICAgICAgICAgICAgICAgIFdBUk5JTkdfTUVTU0FHRS5icm93c2VyUHJvdmlkZXJEcm9wT2ZQZXJmb3JtYW5jZSxcbiAgICAgICAgICAgICAgICB0aGlzLl9ydW50aW1lSW5mby5icm93c2VyTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2NyZWF0ZUNsaWVudCAodGFyZ2V0OiBUYXJnZXRJbmZvLCBjYWNoZUtleTogc3RyaW5nID0gdGhpcy5fY2xpZW50S2V5KTogUHJvbWlzZTxyZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGk+IHtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgcmVtb3RlQ2hyb21lKHsgdGFyZ2V0LCBwb3J0OiB0aGlzLl9wb3J0IH0pO1xuXG4gICAgICAgIGNvbnN0IHsgUGFnZSwgTmV0d29yaywgUnVudGltZSB9ID0gY2xpZW50O1xuXG4gICAgICAgIHRoaXMuX2NsaWVudHNbY2FjaGVLZXldID0gbmV3IFByb3RvY29sQXBpSW5mbyhjbGllbnQpO1xuXG4gICAgICAgIGF3YWl0IGd1YXJkVGltZUV4ZWN1dGlvbihcbiAgICAgICAgICAgIGFzeW5jICgpID0+IGF3YWl0IFBhZ2UuZW5hYmxlKCksXG4gICAgICAgICAgICBlbGFwc2VkVGltZSA9PiB0aGlzLl9jaGVja0Ryb3BPZlBlcmZvcm1hbmNlKENoZWNrZWRDRFBNZXRob2QuUGFnZUVuYWJsZSwgZWxhcHNlZFRpbWUpXG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgTmV0d29yay5lbmFibGUoe30pO1xuICAgICAgICBhd2FpdCBSdW50aW1lLmVuYWJsZSgpO1xuXG4gICAgICAgIHJldHVybiBjbGllbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0dXBDbGllbnQgKGNsaWVudDogcmVtb3RlQ2hyb21lLlByb3RvY29sQXBpKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLl9jb25maWcuZW11bGF0aW9uKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2V0RW11bGF0aW9uKGNsaWVudCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5oZWFkbGVzcylcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldHVwRG93bmxvYWRzKGNsaWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0RGV2aWNlTWV0cmljc092ZXJyaWRlIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGRldmljZVNjYWxlRmFjdG9yOiBudW1iZXIsIG1vYmlsZTogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBndWFyZFRpbWVFeGVjdXRpb24oXG4gICAgICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LkVtdWxhdGlvbi5zZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUoe1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBkZXZpY2VTY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgICAgbW9iaWxlLFxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGZpdFdpbmRvdzogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZWxhcHNlZFRpbWUgPT4gdGhpcy5fY2hlY2tEcm9wT2ZQZXJmb3JtYW5jZShDaGVja2VkQ0RQTWV0aG9kLlNldERldmljZU1ldHJpY3NPdmVycmlkZSwgZWxhcHNlZFRpbWUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0VXNlckFnZW50RW11bGF0aW9uIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fY29uZmlnLnVzZXJBZ2VudCA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGF3YWl0IGNsaWVudC5OZXR3b3JrLnNldFVzZXJBZ2VudE92ZXJyaWRlKHsgdXNlckFnZW50OiB0aGlzLl9jb25maWcudXNlckFnZW50IH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldFRvdWNoRW11bGF0aW9uIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fY29uZmlnLnRvdWNoID09PSB2b2lkIDApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgdG91Y2hDb25maWc6IFRvdWNoQ29uZmlnT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6ICAgICAgICB0aGlzLl9jb25maWcudG91Y2gsXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiAgdGhpcy5fY29uZmlnLm1vYmlsZSA/ICdtb2JpbGUnIDogJ2Rlc2t0b3AnLFxuICAgICAgICAgICAgbWF4VG91Y2hQb2ludHM6IDEsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGNsaWVudC5FbXVsYXRpb24uc2V0RW1pdFRvdWNoRXZlbnRzRm9yTW91c2UpXG4gICAgICAgICAgICBhd2FpdCBjbGllbnQuRW11bGF0aW9uLnNldEVtaXRUb3VjaEV2ZW50c0Zvck1vdXNlKHRvdWNoQ29uZmlnKTtcblxuICAgICAgICBpZiAoY2xpZW50LkVtdWxhdGlvbi5zZXRUb3VjaEVtdWxhdGlvbkVuYWJsZWQpXG4gICAgICAgICAgICBhd2FpdCBjbGllbnQuRW11bGF0aW9uLnNldFRvdWNoRW11bGF0aW9uRW5hYmxlZCh0b3VjaENvbmZpZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0RW11bGF0aW9uIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9zZXRVc2VyQWdlbnRFbXVsYXRpb24oY2xpZW50KTtcbiAgICAgICAgYXdhaXQgdGhpcy5fc2V0VG91Y2hFbXVsYXRpb24oY2xpZW50KTtcblxuICAgICAgICBhd2FpdCB0aGlzLnJlc2l6ZVdpbmRvdyh7XG4gICAgICAgICAgICB3aWR0aDogIHRoaXMuX2NvbmZpZy53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5fY29uZmlnLmhlaWdodCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0dXBEb3dubG9hZHMgKGNsaWVudDogcmVtb3RlQ2hyb21lLlByb3RvY29sQXBpKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IGNsaWVudC5QYWdlLnNldERvd25sb2FkQmVoYXZpb3Ioe1xuICAgICAgICAgICAgYmVoYXZpb3I6ICAgICAnYWxsb3cnLFxuICAgICAgICAgICAgZG93bmxvYWRQYXRoOiBET1dOTE9BRFNfRElSLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9ldmFsdWF0ZVJ1bnRpbWUgKGNsaWVudDogcmVtb3RlQ2hyb21lLlByb3RvY29sQXBpLCBleHByZXNzaW9uOiBzdHJpbmcsIHJldHVybkJ5VmFsdWUgPSBmYWxzZSk6IFByb21pc2U8UHJvdG9jb2wuUnVudGltZS5FdmFsdWF0ZVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBjbGllbnQuUnVudGltZS5ldmFsdWF0ZSh7IGV4cHJlc3Npb24sIHJldHVybkJ5VmFsdWUgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfY2FsY3VsYXRlRW11bGF0ZWREZXZpY2VQaXhlbFJhdGlvIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIWNsaWVudClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBkZXZpY2VQaXhlbFJhdGlvUXVlcnlSZXN1bHQgPSBhd2FpdCBjbGllbnQuUnVudGltZS5ldmFsdWF0ZSh7IGV4cHJlc3Npb246ICd3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbycgfSk7XG5cbiAgICAgICAgdGhpcy5fcnVudGltZUluZm8ub3JpZ2luYWxEZXZpY2VQaXhlbFJhdGlvID0gZGV2aWNlUGl4ZWxSYXRpb1F1ZXJ5UmVzdWx0LnJlc3VsdC52YWx1ZTtcbiAgICAgICAgdGhpcy5fcnVudGltZUluZm8uZW11bGF0ZWREZXZpY2VQaXhlbFJhdGlvID0gdGhpcy5fY29uZmlnLnNjYWxlRmFjdG9yIHx8IHRoaXMuX3J1bnRpbWVJbmZvLm9yaWdpbmFsRGV2aWNlUGl4ZWxSYXRpbztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzaXplV2luZG93IChuZXdEaW1lbnNpb25zOiBTaXplKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgYnJvd3NlcklkLCBjb25maWcsIHZpZXdwb3J0U2l6ZSwgcHJvdmlkZXJNZXRob2RzLCBlbXVsYXRlZERldmljZVBpeGVsUmF0aW8gfSA9IHRoaXMuX3J1bnRpbWVJbmZvO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aCAgPSB2aWV3cG9ydFNpemUud2lkdGg7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSB2aWV3cG9ydFNpemUuaGVpZ2h0O1xuICAgICAgICBjb25zdCBuZXdXaWR0aCAgICAgID0gbmV3RGltZW5zaW9ucy53aWR0aCB8fCBjdXJyZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IG5ld0hlaWdodCAgICAgPSBuZXdEaW1lbnNpb25zLmhlaWdodCB8fCBjdXJyZW50SGVpZ2h0O1xuXG4gICAgICAgIGlmICghY29uZmlnLmhlYWRsZXNzKVxuICAgICAgICAgICAgYXdhaXQgcHJvdmlkZXJNZXRob2RzLnJlc2l6ZUxvY2FsQnJvd3NlcldpbmRvdyhicm93c2VySWQsIG5ld1dpZHRoLCBuZXdIZWlnaHQsIGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCk7XG5cbiAgICAgICAgdmlld3BvcnRTaXplLndpZHRoICA9IG5ld1dpZHRoO1xuICAgICAgICB2aWV3cG9ydFNpemUuaGVpZ2h0ID0gbmV3SGVpZ2h0O1xuXG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgaWYgKGNsaWVudCAmJiBjb25maWcuZW11bGF0aW9uKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUoY2xpZW50LCB2aWV3cG9ydFNpemUud2lkdGgsIHZpZXdwb3J0U2l6ZS5oZWlnaHQsIGVtdWxhdGVkRGV2aWNlUGl4ZWxSYXRpbywgY29uZmlnLm1vYmlsZSk7XG5cbiAgICAgICAgICAgIGF3YWl0IGd1YXJkVGltZUV4ZWN1dGlvbihcbiAgICAgICAgICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5FbXVsYXRpb24uc2V0VmlzaWJsZVNpemUoeyB3aWR0aDogdmlld3BvcnRTaXplLndpZHRoLCBoZWlnaHQ6IHZpZXdwb3J0U2l6ZS5oZWlnaHQgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlbGFwc2VkVGltZSA9PiB0aGlzLl9jaGVja0Ryb3BPZlBlcmZvcm1hbmNlKENoZWNrZWRDRFBNZXRob2QuU2V0VmlzaWJsZVNpemUsIGVsYXBzZWRUaW1lKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBtYXhpbWl6ZVdpbmRvd05hdGl2ZUF1dG9tYXRpb24gKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBhd2FpdCBnZXRGaXJzdFRhYih0aGlzLl9wb3J0KTtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVDbGllbnQoKTtcblxuICAgICAgICBpZiAoY2xpZW50KSB7XG4gICAgICAgICAgICBjb25zdCB3aW5kb3dQYXJhbXMgPSBhd2FpdCBjbGllbnQuQnJvd3Nlci5nZXRXaW5kb3dGb3JUYXJnZXQoeyB0YXJnZXRJZDogdGFyZ2V0LmlkIH0pO1xuXG4gICAgICAgICAgICBhd2FpdCBjbGllbnQuQnJvd3Nlci5zZXRXaW5kb3dCb3VuZHMoeyB3aW5kb3dJZDogd2luZG93UGFyYW1zLndpbmRvd0lkLCBib3VuZHM6IHsgd2luZG93U3RhdGU6ICdtYXhpbWl6ZWQnIH0gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzaXplQm91bmRzIChuZXdEaW1lbnNpb25zOiBTaXplKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgdmlld3BvcnRTaXplLCBjb25maWcgfSA9IHRoaXMuX3J1bnRpbWVJbmZvO1xuXG4gICAgICAgIGxldCBub25DbGllbnRXaWR0aCAgPSAwO1xuICAgICAgICBsZXQgbm9uQ2xpZW50SGVpZ2h0ID0gMDtcblxuICAgICAgICBpZiAodmlld3BvcnRTaXplLm91dGVyV2lkdGggJiYgdmlld3BvcnRTaXplLm91dGVySGVpZ2h0KSB7XG4gICAgICAgICAgICBub25DbGllbnRXaWR0aCAgPSB2aWV3cG9ydFNpemUub3V0ZXJXaWR0aCAtIHZpZXdwb3J0U2l6ZS53aWR0aDtcbiAgICAgICAgICAgIG5vbkNsaWVudEhlaWdodCA9IHZpZXdwb3J0U2l6ZS5vdXRlckhlaWdodCAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXJnZXQgPSBhd2FpdCBnZXRGaXJzdFRhYih0aGlzLl9wb3J0KTtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVDbGllbnQoKTtcblxuICAgICAgICBpZiAoY2xpZW50KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUoY2xpZW50LCBuZXdEaW1lbnNpb25zLndpZHRoLCBuZXdEaW1lbnNpb25zLmhlaWdodCwgMSwgY29uZmlnLm1vYmlsZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHdpbmRvd1BhcmFtcyA9IGF3YWl0IGNsaWVudC5Ccm93c2VyLmdldFdpbmRvd0ZvclRhcmdldCh7IHRhcmdldElkOiB0YXJnZXQuaWQgfSk7XG5cbiAgICAgICAgICAgIGlmICh3aW5kb3dQYXJhbXMuYm91bmRzLndpbmRvd1N0YXRlICE9PSAnbm9ybWFsJykge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5Ccm93c2VyLnNldFdpbmRvd0JvdW5kcyh7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvd0lkOiB3aW5kb3dQYXJhbXMud2luZG93SWQsXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kczogICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dTdGF0ZTogJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF3YWl0IGNsaWVudC5Ccm93c2VyLnNldFdpbmRvd0JvdW5kcyh7XG4gICAgICAgICAgICAgICAgd2luZG93SWQ6IHdpbmRvd1BhcmFtcy53aW5kb3dJZCxcbiAgICAgICAgICAgICAgICBib3VuZHM6ICAge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogIG5ld0RpbWVuc2lvbnMud2lkdGggKyBub25DbGllbnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBuZXdEaW1lbnNpb25zLmhlaWdodCArIG5vbkNsaWVudEhlaWdodCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNIZWFkbGVzc1RhYiAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX3BhcmVudFRhcmdldCAmJiB0aGlzLl9jb25maWcuaGVhZGxlc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldENsaWVudEluYWN0aXZlICh3aW5kb3dJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuX2NsaWVudHNbd2luZG93SWRdO1xuXG4gICAgICAgIGlmIChjbGllbnQpXG4gICAgICAgICAgICBjbGllbnQuaW5hY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBY3RpdmVDbGllbnQgKCk6IFByb21pc2U8cmVtb3RlQ2hyb21lLlByb3RvY29sQXBpIHwgdm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9jbGllbnRzW3RoaXMuX2NsaWVudEtleV0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBhd2FpdCBnZXRBY3RpdmVUYWIodGhpcy5fcG9ydCwgdGhpcy5fcnVudGltZUluZm8uYWN0aXZlV2luZG93SWQpO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fY3JlYXRlQ2xpZW50KHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgZGVidWdMb2coZXJyKTtcblxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLl9jbGllbnRzW3RoaXMuX2NsaWVudEtleV07XG5cbiAgICAgICAgaWYgKGluZm8uaW5hY3RpdmUpXG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuXG4gICAgICAgIHJldHVybiBpbmZvLmNsaWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdE1haW5XaW5kb3dDZHBDbGllbnQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdGFicyA9IGF3YWl0IGdldFRhYnModGhpcy5fcG9ydCk7XG5cbiAgICAgICAgICAgIHRoaXMuX3BhcmVudFRhcmdldCA9IHRhYnMuZmluZCh0ID0+IHQudXJsLmluY2x1ZGVzKHRoaXMuX3J1bnRpbWVJbmZvLmJyb3dzZXJJZCkpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3BhcmVudFRhcmdldClcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgICAgIGlmIChjbGllbnQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9jYWxjdWxhdGVFbXVsYXRlZERldmljZVBpeGVsUmF0aW8oY2xpZW50KTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXR1cENsaWVudChjbGllbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2NyZWVuc2hvdERhdGEgKGZ1bGxQYWdlPzogYm9vbGVhbik6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIGxldCBjbGlwOiBQcm90b2NvbC5QYWdlLlZpZXdwb3J0IHwgdW5kZWZpbmVkID0gdm9pZCAwO1xuXG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgaWYgKCFjbGllbnQpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IHJlcXVpcmVkIGZvciBodHRwczovL2dpdGh1Yi5jb20vRGV2RXhwcmVzcy90ZXN0Y2FmZS9pc3N1ZXMvNjAzN1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoMCk7XG5cbiAgICAgICAgICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZnVsbFBhZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1ldHJpY3MgICAgICAgICAgID0gYXdhaXQgY2xpZW50LlBhZ2UuZ2V0TGF5b3V0TWV0cmljcygpO1xuICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBtZXRyaWNzLmNzc0NvbnRlbnRTaXplIHx8IG1ldHJpY3MuY29udGVudFNpemU7XG5cbiAgICAgICAgICAgIGNsaXAgPSB7IHg6IDAsIHk6IDAsIHdpZHRoLCBoZWlnaHQsIHNjYWxlOiAxIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjbGllbnQuUGFnZS5jYXB0dXJlU2NyZWVuc2hvdCh7XG4gICAgICAgICAgICBjbGlwLFxuICAgICAgICAgICAgY2FwdHVyZUJleW9uZFZpZXdwb3J0OiBmdWxsUGFnZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHJlc3VsdC5kYXRhLCAnYmFzZTY0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNsb3NlVGFiICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudFRhcmdldClcbiAgICAgICAgICAgIGF3YWl0IHJlbW90ZUNocm9tZS5DbG9zZSh7IGlkOiB0aGlzLl9wYXJlbnRUYXJnZXQuaWQsIHBvcnQ6IHRoaXMuX3BvcnQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHVwZGF0ZU1vYmlsZVZpZXdwb3J0U2l6ZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgaWYgKCFjbGllbnQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgd2luZG93RGltZW5zaW9uc1F1ZXJ5UmVzdWx0ID0gYXdhaXQgdGhpcy5fZXZhbHVhdGVSdW50aW1lKGNsaWVudCwgYCgke0dFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVH0pKClgLCB0cnVlKTtcblxuICAgICAgICBjb25zdCB3aW5kb3dEaW1lbnNpb25zID0gd2luZG93RGltZW5zaW9uc1F1ZXJ5UmVzdWx0LnJlc3VsdC52YWx1ZTtcblxuICAgICAgICB0aGlzLl9ydW50aW1lSW5mby52aWV3cG9ydFNpemUud2lkdGggID0gd2luZG93RGltZW5zaW9ucy5vdXRlcldpZHRoO1xuICAgICAgICB0aGlzLl9ydW50aW1lSW5mby52aWV3cG9ydFNpemUuaGVpZ2h0ID0gd2luZG93RGltZW5zaW9ucy5vdXRlckhlaWdodDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xvc2VCcm93c2VyQ2hpbGRXaW5kb3cgKHdpbmRvd0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRDbGllbnRJbmFjdGl2ZSh3aW5kb3dJZCk7XG5cbiAgICAgICAgLy8gTk9URTogZGVsYXkgYnJvd3NlciB3aW5kb3cgY2xvc2luZ1xuICAgICAgICBhd2FpdCBkZWxheSgxMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdGFydENhcHR1cmluZ1ZpZGVvICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVDbGllbnQoKTtcblxuICAgICAgICBpZiAoIWNsaWVudClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBpZiAoIXRoaXMuX3NjcmVlbmNhc3RGcmFtZUxpc3RlbmVyQXR0YWNoZWQpIHtcbiAgICAgICAgICAgIGNsaWVudC5QYWdlLm9uKCdzY3JlZW5jYXN0RnJhbWUnLCAoZXZlbnQ6IFNjcmVlbmNhc3RGcmFtZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW9GcmFtZXNCdWZmZXIucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6ICAgICAgZXZlbnQuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbklkOiBldmVudC5zZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fc2NyZWVuY2FzdEZyYW1lTGlzdGVuZXJBdHRhY2hlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBjbGllbnQuUGFnZS5zdGFydFNjcmVlbmNhc3QoU0NSRUVOQ0FTVF9PUFRJT05TIGFzIFN0YXJ0U2NyZWVuY2FzdFJlcXVlc3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdG9wQ2FwdHVyaW5nVmlkZW8gKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmICghY2xpZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGF3YWl0IGNsaWVudC5QYWdlLnN0b3BTY3JlZW5jYXN0KCk7XG5cbiAgICAgICAgdGhpcy5fbGFzdEZyYW1lICAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLl92aWRlb0ZyYW1lc0J1ZmZlciA9IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRWaWRlb0ZyYW1lRGF0YSAoKTogUHJvbWlzZTxCdWZmZXIgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IGZpcnN0RnJhbWVGcm9tQnVmZmVyID0gdGhpcy5fdmlkZW9GcmFtZXNCdWZmZXIuc2hpZnQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudFZpZGVvRnJhbWUgICAgPSBmaXJzdEZyYW1lRnJvbUJ1ZmZlciB8fCB0aGlzLl9sYXN0RnJhbWU7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50VmlkZW9GcmFtZSlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLl92aWRlb0ZyYW1lc0J1ZmZlci5sZW5ndGggPT09IDApXG4gICAgICAgICAgICB0aGlzLl9sYXN0RnJhbWUgPSBjdXJyZW50VmlkZW9GcmFtZTtcblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmICghY2xpZW50KVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKGZpcnN0RnJhbWVGcm9tQnVmZmVyKVxuICAgICAgICAgICAgYXdhaXQgY2xpZW50LlBhZ2Uuc2NyZWVuY2FzdEZyYW1lQWNrKHsgc2Vzc2lvbklkOiBjdXJyZW50VmlkZW9GcmFtZS5zZXNzaW9uSWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGN1cnJlbnRWaWRlb0ZyYW1lLmRhdGEsICdiYXNlNjQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9vblRhcmdldENyZWF0ZWRIYW5kbGVyICh0YXJnZXRJbmZvOiByZW1vdGVDaHJvbWUuVGFyZ2V0SW5mbywgb3B0aW9uczogTmF0aXZlQXV0b21hdGlvbkluaXRPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGF3YWl0IGdldFRhYkJ5SWQodGhpcy5fcG9ydCwgdGFyZ2V0SW5mby50YXJnZXRJZCk7XG5cbiAgICAgICAgaWYgKCF0YXJnZXQpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY2xpZW50ICAgICAgICAgICA9IGF3YWl0IHRoaXMuX2NyZWF0ZUNsaWVudCh0YXJnZXQsIHRhcmdldEluZm8udGFyZ2V0SWQpO1xuICAgICAgICAgICAgY29uc3QgbmF0aXZlQXV0b21hdGlvbiA9IG5ldyBOYXRpdmVBdXRvbWF0aW9uQ2hpbGRXaW5kb3codGhpcy5fcnVudGltZUluZm8uYnJvd3NlcklkLCB0YXJnZXQuaWQsIGNsaWVudCwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGF3YWl0IG5hdGl2ZUF1dG9tYXRpb24uc3RhcnQoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5pZDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhlcnIpO1xuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVNYWluV2luZG93TmF0aXZlQXV0b21hdGlvbiAob3B0aW9uczogTmF0aXZlQXV0b21hdGlvbkluaXRPcHRpb25zKTogUHJvbWlzZTxOYXRpdmVBdXRvbWF0aW9uQmFzZSB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gYXdhaXQgZ2V0Rmlyc3RUYWIodGhpcy5fcG9ydCk7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuX2NyZWF0ZUNsaWVudCh0YXJnZXQpO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZUF1dG9tYXRpb24gPSBuZXcgTmF0aXZlQXV0b21hdGlvbk1haW5XaW5kb3codGhpcy5fcnVudGltZUluZm8uYnJvd3NlcklkLCB0YXJnZXQuaWQsIGNsaWVudCwgb3B0aW9ucyk7XG5cbiAgICAgICAgbmF0aXZlQXV0b21hdGlvbi5vbihORVdfV0lORE9XX09QRU5FRF9JTl9OQVRJVkVfQVVUT01BVElPTiwgYXN5bmMgdGFyZ2V0SW5mbyA9PiB0aGlzLl9vblRhcmdldENyZWF0ZWRIYW5kbGVyKHRhcmdldEluZm8sIG9wdGlvbnMpKTtcblxuICAgICAgICByZXR1cm4gbmF0aXZlQXV0b21hdGlvbjtcbiAgICB9XG59XG5cbiJdfQ==
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvY2hyb21lL2NkcC1jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsZ0RBQXdCO0FBQ3hCLDRDQUFvQjtBQUNwQixzRkFBbUU7QUFDbkUsa0RBQTBCO0FBQzFCLHlFQUF1RjtBQUN2RixzR0FBOEU7QUFROUUsa0VBQXVDO0FBQ3ZDLGdFQUFvRjtBQUNwRix3R0FBOEU7QUFDOUUsMEVBQWtEO0FBTWxELDJFQUk2QztBQUU3QyxtQ0FNbUI7QUFFbkIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFVLEVBQVUsRUFBRSxDQUFDLDREQUE0RCxFQUFFLEVBQUUsQ0FBQztBQUM3RyxNQUFNLGFBQWEsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFlBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUUzRCxNQUFNLFFBQVEsR0FBRyxJQUFBLGVBQUssRUFBQyxxREFBcUQsQ0FBQyxDQUFDO0FBRTlFLE1BQU0sZUFBZTtJQUlqQixZQUFvQixNQUFnQztRQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFLLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0NBQ0o7QUFFRCxNQUFNLGtCQUFrQixHQUFHO0lBQ3ZCLE1BQU0sRUFBUyxNQUFNO0lBQ3JCLGFBQWEsRUFBRSxDQUFDO0NBQ25CLENBQUM7QUFPVyxRQUFBLHNDQUFzQyxHQUFHLHdDQUF3QyxDQUFDO0FBRS9GLE1BQWEsYUFBYTtJQVN0QixZQUFvQixXQUF3QjtRQVJwQyxhQUFRLEdBQWdDLEVBQUUsQ0FBQztRQU0zQyxxQ0FBZ0MsR0FBRyxLQUFLLENBQUM7UUFHN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFB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QU0sR0FBYSxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRSxNQUFNLGdCQUFnQixHQUFHLElBQUksK0NBQTJCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFbEgsTUFBTSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUUvQixPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUM7U0FDcEI7UUFDRCxPQUFPLEdBQUcsRUFBRTtZQUNSLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVkLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLGdDQUFnQyxDQUFFLE9BQW9DO1FBQy9FLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxtQkFBVyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLDhDQUEwQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWpILGdCQUFnQixDQUFDLEVBQUUsQ0FBQyw4Q0FBc0MsRUFBRSxLQUFLLEVBQUMsVUFBVSxFQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFbkksT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0NBQ0o7QUF2WkQsc0NBdVpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgUHJvdG9jb2wgZnJvbSAnZGV2dG9vbHMtcHJvdG9jb2wnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHJlbW90ZUNocm9tZSwgeyBUYXJnZXRJbmZvIH0gZnJvbSAnY2hyb21lLXJlbW90ZS1pbnRlcmZhY2UnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IEdFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NsaWVudC1mdW5jdGlvbnMnO1xuaW1wb3J0IFdBUk5JTkdfTUVTU0FHRSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbWVzc2FnZSc7XG5cbmltcG9ydCB7XG4gICAgQ29uZmlnLFxuICAgIFJ1bnRpbWVJbmZvLFxuICAgIFRvdWNoQ29uZmlnT3B0aW9ucyxcbiAgICBTaXplLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCBwcmV0dHlUaW1lIGZyb20gJ3ByZXR0eS1ocnRpbWUnO1xuaW1wb3J0IHsgQ2hlY2tlZENEUE1ldGhvZCwgRUxBUFNFRF9USU1FX1VQUEVSQk9VTkRTIH0gZnJvbSAnLi4vZWxhcHNlZC11cHBlcmJvdW5kcyc7XG5pbXBvcnQgZ3VhcmRUaW1lRXhlY3V0aW9uIGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3V0aWxzL2d1YXJkLXRpbWUtZXhlY3V0aW9uJztcbmltcG9ydCBkZWxheSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi91dGlscy9kZWxheSc7XG5cbmltcG9ydCBTdGFydFNjcmVlbmNhc3RSZXF1ZXN0ID0gUHJvdG9jb2wuUGFnZS5TdGFydFNjcmVlbmNhc3RSZXF1ZXN0O1xuaW1wb3J0IFNjcmVlbmNhc3RGcmFtZUV2ZW50ID0gUHJvdG9jb2wuUGFnZS5TY3JlZW5jYXN0RnJhbWVFdmVudDtcbmltcG9ydCB7IE5hdGl2ZUF1dG9tYXRpb25Jbml0T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5cbmltcG9ydCB7XG4gICAgTmF0aXZlQXV0b21hdGlvbkJhc2UsXG4gICAgTmF0aXZlQXV0b21hdGlvbkNoaWxkV2luZG93LFxuICAgIE5hdGl2ZUF1dG9tYXRpb25NYWluV2luZG93LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9uYXRpdmUtYXV0b21hdGlvbic7XG5cbmltcG9ydCB7XG4gICAgZ2V0QWN0aXZlVGFiLFxuICAgIGdldEZpcnN0VGFiLFxuICAgIGdldFRhYkJ5SWQsXG4gICAgZ2V0VGFicyxcbn1cbiAgICBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgREVCVUdfU0NPUEUgPSAoaWQ6IHN0cmluZyk6IHN0cmluZyA9PiBgdGVzdGNhZmU6YnJvd3Nlcjpwcm92aWRlcjpidWlsdC1pbjpjaHJvbWU6YnJvd3Nlci1jbGllbnQ6JHtpZH1gO1xuY29uc3QgRE9XTkxPQURTX0RJUiA9IHBhdGguam9pbihvcy5ob21lZGlyKCksICdEb3dubG9hZHMnKTtcblxuY29uc3QgZGVidWdMb2cgPSBkZWJ1ZygndGVzdGNhZmU6YnJvd3Nlcjpwcm92aWRlcjpidWlsdC1pbjpkZWRpY2F0ZWQ6Y2hyb21lJyk7XG5cbmNsYXNzIFByb3RvY29sQXBpSW5mbyB7XG4gICAgcHVibGljIGluYWN0aXZlOiBib29sZWFuO1xuICAgIHB1YmxpYyBjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpIHtcbiAgICAgICAgdGhpcy5jbGllbnQgICA9IGNsaWVudDtcbiAgICAgICAgdGhpcy5pbmFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbn1cblxuY29uc3QgU0NSRUVOQ0FTVF9PUFRJT05TID0ge1xuICAgIGZvcm1hdDogICAgICAgICdqcGVnJyxcbiAgICBldmVyeU50aEZyYW1lOiAxLFxufTtcblxuaW50ZXJmYWNlIFZpZGVvRnJhbWVEYXRhIHtcbiAgICBkYXRhOiBzdHJpbmc7XG4gICAgc2Vzc2lvbklkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBORVdfV0lORE9XX09QRU5FRF9JTl9OQVRJVkVfQVVUT01BVElPTiA9ICduZXctd2luZG93LW9wZW5lZC1pbi1uYXRpdmUtYXV0b21hdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBCcm93c2VyQ2xpZW50IHtcbiAgICBwcml2YXRlIF9jbGllbnRzOiBEaWN0aW9uYXJ5PFByb3RvY29sQXBpSW5mbz4gPSB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydW50aW1lSW5mbzogUnVudGltZUluZm87XG4gICAgcHJpdmF0ZSBfcGFyZW50VGFyZ2V0PzogcmVtb3RlQ2hyb21lLlRhcmdldEluZm87XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJ1Z0xvZ2dlcjogZGVidWcuRGVidWdnZXI7XG4gICAgcHJpdmF0ZSBfdmlkZW9GcmFtZXNCdWZmZXI6IFZpZGVvRnJhbWVEYXRhW107XG4gICAgcHJpdmF0ZSBfbGFzdEZyYW1lOiBWaWRlb0ZyYW1lRGF0YSB8IG51bGw7XG4gICAgcHJpdmF0ZSBfc2NyZWVuY2FzdEZyYW1lTGlzdGVuZXJBdHRhY2hlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChydW50aW1lSW5mbzogUnVudGltZUluZm8pIHtcbiAgICAgICAgdGhpcy5fcnVudGltZUluZm8gPSBydW50aW1lSW5mbztcbiAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dlciAgPSBkZWJ1ZyhERUJVR19TQ09QRShydW50aW1lSW5mby5icm93c2VySWQpKTtcblxuICAgICAgICBydW50aW1lSW5mby5icm93c2VyQ2xpZW50ID0gdGhpcztcblxuICAgICAgICB0aGlzLl92aWRlb0ZyYW1lc0J1ZmZlciA9IFtdO1xuICAgICAgICB0aGlzLl9sYXN0RnJhbWUgICAgICAgICA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgX3BvcnQgKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW50aW1lSW5mby5jZHBQb3J0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IF9jbGllbnRLZXkgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW50aW1lSW5mby5hY3RpdmVXaW5kb3dJZCB8fCB0aGlzLl9ydW50aW1lSW5mby5icm93c2VySWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgX2NvbmZpZyAoKTogQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVJbmZvLmNvbmZpZztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGVja0Ryb3BPZlBlcmZvcm1hbmNlIChtZXRob2Q6IENoZWNrZWRDRFBNZXRob2QsIGVsYXBzZWRUaW1lOiBbbnVtYmVyLCBudW1iZXJdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVidWdMb2dnZXIoYENEUCBtZXRob2QgJyR7bWV0aG9kfScgdG9vayAke3ByZXR0eVRpbWUoZWxhcHNlZFRpbWUpfWApO1xuXG4gICAgICAgIGNvbnN0IFsgZWxhcHNlZFNlY29uZHMgXSA9IGVsYXBzZWRUaW1lO1xuXG4gICAgICAgIGlmIChlbGFwc2VkU2Vjb25kcyA+IEVMQVBTRURfVElNRV9VUFBFUkJPVU5EU1ttZXRob2RdKSB7XG4gICAgICAgICAgICB0aGlzLl9ydW50aW1lSW5mby5wcm92aWRlck1ldGhvZHMucmVwb3J0V2FybmluZyhcbiAgICAgICAgICAgICAgICBXQVJOSU5HX01FU1NBR0UuYnJvd3NlclByb3ZpZGVyRHJvcE9mUGVyZm9ybWFuY2UsXG4gICAgICAgICAgICAgICAgdGhpcy5fcnVudGltZUluZm8uYnJvd3Nlck5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9jcmVhdGVDbGllbnQgKHRhcmdldDogVGFyZ2V0SW5mbywgY2FjaGVLZXk6IHN0cmluZyA9IHRoaXMuX2NsaWVudEtleSk6IFByb21pc2U8cmVtb3RlQ2hyb21lLlByb3RvY29sQXBpPiB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHJlbW90ZUNocm9tZSh7IHRhcmdldCwgcG9ydDogdGhpcy5fcG9ydCB9KTtcblxuICAgICAgICBjb25zdCB7IFBhZ2UsIE5ldHdvcmssIFJ1bnRpbWUgfSA9IGNsaWVudDtcblxuICAgICAgICB0aGlzLl9jbGllbnRzW2NhY2hlS2V5XSA9IG5ldyBQcm90b2NvbEFwaUluZm8oY2xpZW50KTtcblxuICAgICAgICBhd2FpdCBndWFyZFRpbWVFeGVjdXRpb24oXG4gICAgICAgICAgICBhc3luYyAoKSA9PiBhd2FpdCBQYWdlLmVuYWJsZSgpLFxuICAgICAgICAgICAgZWxhcHNlZFRpbWUgPT4gdGhpcy5fY2hlY2tEcm9wT2ZQZXJmb3JtYW5jZShDaGVja2VkQ0RQTWV0aG9kLlBhZ2VFbmFibGUsIGVsYXBzZWRUaW1lKVxuICAgICAgICApO1xuXG4gICAgICAgIGF3YWl0IE5ldHdvcmsuZW5hYmxlKHt9KTtcbiAgICAgICAgYXdhaXQgUnVudGltZS5lbmFibGUoKTtcblxuICAgICAgICByZXR1cm4gY2xpZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwQ2xpZW50IChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fY29uZmlnLmVtdWxhdGlvbilcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldEVtdWxhdGlvbihjbGllbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLl9jb25maWcuaGVhZGxlc3MpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXR1cERvd25sb2FkcyhjbGllbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldERldmljZU1ldHJpY3NPdmVycmlkZSAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGksIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBkZXZpY2VTY2FsZUZhY3RvcjogbnVtYmVyLCBtb2JpbGU6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgZ3VhcmRUaW1lRXhlY3V0aW9uKFxuICAgICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5FbXVsYXRpb24uc2V0RGV2aWNlTWV0cmljc092ZXJyaWRlKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIG1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBmaXRXaW5kb3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVsYXBzZWRUaW1lID0+IHRoaXMuX2NoZWNrRHJvcE9mUGVyZm9ybWFuY2UoQ2hlY2tlZENEUE1ldGhvZC5TZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUsIGVsYXBzZWRUaW1lKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldFVzZXJBZ2VudEVtdWxhdGlvbiAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy51c2VyQWdlbnQgPT09IHZvaWQgMClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhd2FpdCBjbGllbnQuTmV0d29yay5zZXRVc2VyQWdlbnRPdmVycmlkZSh7IHVzZXJBZ2VudDogdGhpcy5fY29uZmlnLnVzZXJBZ2VudCB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRUb3VjaEVtdWxhdGlvbiAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy50b3VjaCA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHRvdWNoQ29uZmlnOiBUb3VjaENvbmZpZ09wdGlvbnMgPSB7XG4gICAgICAgICAgICBlbmFibGVkOiAgICAgICAgdGhpcy5fY29uZmlnLnRvdWNoLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogIHRoaXMuX2NvbmZpZy5tb2JpbGUgPyAnbW9iaWxlJyA6ICdkZXNrdG9wJyxcbiAgICAgICAgICAgIG1heFRvdWNoUG9pbnRzOiAxLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChjbGllbnQuRW11bGF0aW9uLnNldEVtaXRUb3VjaEV2ZW50c0Zvck1vdXNlKVxuICAgICAgICAgICAgYXdhaXQgY2xpZW50LkVtdWxhdGlvbi5zZXRFbWl0VG91Y2hFdmVudHNGb3JNb3VzZSh0b3VjaENvbmZpZyk7XG5cbiAgICAgICAgaWYgKGNsaWVudC5FbXVsYXRpb24uc2V0VG91Y2hFbXVsYXRpb25FbmFibGVkKVxuICAgICAgICAgICAgYXdhaXQgY2xpZW50LkVtdWxhdGlvbi5zZXRUb3VjaEVtdWxhdGlvbkVuYWJsZWQodG91Y2hDb25maWcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldEVtdWxhdGlvbiAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fc2V0VXNlckFnZW50RW11bGF0aW9uKGNsaWVudCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3NldFRvdWNoRW11bGF0aW9uKGNsaWVudCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5yZXNpemVXaW5kb3coe1xuICAgICAgICAgICAgd2lkdGg6ICB0aGlzLl9jb25maWcud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuX2NvbmZpZy5oZWlnaHQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwRG93bmxvYWRzIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBjbGllbnQuUGFnZS5zZXREb3dubG9hZEJlaGF2aW9yKHtcbiAgICAgICAgICAgIGJlaGF2aW9yOiAgICAgJ2FsbG93JyxcbiAgICAgICAgICAgIGRvd25sb2FkUGF0aDogRE9XTkxPQURTX0RJUixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZXZhbHVhdGVSdW50aW1lIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSwgZXhwcmVzc2lvbjogc3RyaW5nLCByZXR1cm5CeVZhbHVlID0gZmFsc2UpOiBQcm9taXNlPFByb3RvY29sLlJ1bnRpbWUuRXZhbHVhdGVSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gY2xpZW50LlJ1bnRpbWUuZXZhbHVhdGUoeyBleHByZXNzaW9uLCByZXR1cm5CeVZhbHVlIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2NhbGN1bGF0ZUVtdWxhdGVkRGV2aWNlUGl4ZWxSYXRpbyAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFjbGllbnQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZGV2aWNlUGl4ZWxSYXRpb1F1ZXJ5UmVzdWx0ID0gYXdhaXQgY2xpZW50LlJ1bnRpbWUuZXZhbHVhdGUoeyBleHByZXNzaW9uOiAnd2luZG93LmRldmljZVBpeGVsUmF0aW8nIH0pO1xuXG4gICAgICAgIHRoaXMuX3J1bnRpbWVJbmZvLm9yaWdpbmFsRGV2aWNlUGl4ZWxSYXRpbyA9IGRldmljZVBpeGVsUmF0aW9RdWVyeVJlc3VsdC5yZXN1bHQudmFsdWU7XG4gICAgICAgIHRoaXMuX3J1bnRpbWVJbmZvLmVtdWxhdGVkRGV2aWNlUGl4ZWxSYXRpbyA9IHRoaXMuX2NvbmZpZy5zY2FsZUZhY3RvciB8fCB0aGlzLl9ydW50aW1lSW5mby5vcmlnaW5hbERldmljZVBpeGVsUmF0aW87XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc2l6ZVdpbmRvdyAobmV3RGltZW5zaW9uczogU2l6ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGJyb3dzZXJJZCwgY29uZmlnLCB2aWV3cG9ydFNpemUsIHByb3ZpZGVyTWV0aG9kcywgZW11bGF0ZWREZXZpY2VQaXhlbFJhdGlvIH0gPSB0aGlzLl9ydW50aW1lSW5mbztcblxuICAgICAgICBjb25zdCBjdXJyZW50V2lkdGggID0gdmlld3BvcnRTaXplLndpZHRoO1xuICAgICAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gdmlld3BvcnRTaXplLmhlaWdodDtcbiAgICAgICAgY29uc3QgbmV3V2lkdGggICAgICA9IG5ld0RpbWVuc2lvbnMud2lkdGggfHwgY3VycmVudFdpZHRoO1xuICAgICAgICBjb25zdCBuZXdIZWlnaHQgICAgID0gbmV3RGltZW5zaW9ucy5oZWlnaHQgfHwgY3VycmVudEhlaWdodDtcblxuICAgICAgICBpZiAoIWNvbmZpZy5oZWFkbGVzcylcbiAgICAgICAgICAgIGF3YWl0IHByb3ZpZGVyTWV0aG9kcy5yZXNpemVMb2NhbEJyb3dzZXJXaW5kb3coYnJvd3NlcklkLCBuZXdXaWR0aCwgbmV3SGVpZ2h0LCBjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHQpO1xuXG4gICAgICAgIHZpZXdwb3J0U2l6ZS53aWR0aCAgPSBuZXdXaWR0aDtcbiAgICAgICAgdmlld3BvcnRTaXplLmhlaWdodCA9IG5ld0hlaWdodDtcblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmIChjbGllbnQgJiYgY29uZmlnLmVtdWxhdGlvbikge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2V0RGV2aWNlTWV0cmljc092ZXJyaWRlKGNsaWVudCwgdmlld3BvcnRTaXplLndpZHRoLCB2aWV3cG9ydFNpemUuaGVpZ2h0LCBlbXVsYXRlZERldmljZVBpeGVsUmF0aW8sIGNvbmZpZy5tb2JpbGUpO1xuXG4gICAgICAgICAgICBhd2FpdCBndWFyZFRpbWVFeGVjdXRpb24oXG4gICAgICAgICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQuRW11bGF0aW9uLnNldFZpc2libGVTaXplKHsgd2lkdGg6IHZpZXdwb3J0U2l6ZS53aWR0aCwgaGVpZ2h0OiB2aWV3cG9ydFNpemUuaGVpZ2h0IH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZWxhcHNlZFRpbWUgPT4gdGhpcy5fY2hlY2tEcm9wT2ZQZXJmb3JtYW5jZShDaGVja2VkQ0RQTWV0aG9kLlNldFZpc2libGVTaXplLCBlbGFwc2VkVGltZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbWF4aW1pemVXaW5kb3dOYXRpdmVBdXRvbWF0aW9uICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gYXdhaXQgZ2V0Rmlyc3RUYWIodGhpcy5fcG9ydCk7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgaWYgKGNsaWVudCkge1xuICAgICAgICAgICAgY29uc3Qgd2luZG93UGFyYW1zID0gYXdhaXQgY2xpZW50LkJyb3dzZXIuZ2V0V2luZG93Rm9yVGFyZ2V0KHsgdGFyZ2V0SWQ6IHRhcmdldC5pZCB9KTtcblxuICAgICAgICAgICAgYXdhaXQgY2xpZW50LkJyb3dzZXIuc2V0V2luZG93Qm91bmRzKHsgd2luZG93SWQ6IHdpbmRvd1BhcmFtcy53aW5kb3dJZCwgYm91bmRzOiB7IHdpbmRvd1N0YXRlOiAnbWF4aW1pemVkJyB9IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc2l6ZUJvdW5kcyAobmV3RGltZW5zaW9uczogU2l6ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHZpZXdwb3J0U2l6ZSB9ID0gdGhpcy5fcnVudGltZUluZm87XG5cbiAgICAgICAgbGV0IG5vbkNsaWVudFdpZHRoICA9IDA7XG4gICAgICAgIGxldCBub25DbGllbnRIZWlnaHQgPSAwO1xuXG4gICAgICAgIGlmICh2aWV3cG9ydFNpemUub3V0ZXJXaWR0aCAmJiB2aWV3cG9ydFNpemUub3V0ZXJIZWlnaHQpIHtcbiAgICAgICAgICAgIG5vbkNsaWVudFdpZHRoICA9IHZpZXdwb3J0U2l6ZS5vdXRlcldpZHRoIC0gdmlld3BvcnRTaXplLndpZHRoO1xuICAgICAgICAgICAgbm9uQ2xpZW50SGVpZ2h0ID0gdmlld3BvcnRTaXplLm91dGVySGVpZ2h0IC0gdmlld3BvcnRTaXplLmhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGF3YWl0IGdldEZpcnN0VGFiKHRoaXMuX3BvcnQpO1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmIChjbGllbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpbmRvd1BhcmFtcyA9IGF3YWl0IGNsaWVudC5Ccm93c2VyLmdldFdpbmRvd0ZvclRhcmdldCh7IHRhcmdldElkOiB0YXJnZXQuaWQgfSk7XG5cbiAgICAgICAgICAgIGlmICh3aW5kb3dQYXJhbXMuYm91bmRzLndpbmRvd1N0YXRlICE9PSAnbm9ybWFsJykge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5Ccm93c2VyLnNldFdpbmRvd0JvdW5kcyh7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvd0lkOiB3aW5kb3dQYXJhbXMud2luZG93SWQsXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kczogICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dTdGF0ZTogJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF3YWl0IGNsaWVudC5Ccm93c2VyLnNldFdpbmRvd0JvdW5kcyh7XG4gICAgICAgICAgICAgICAgd2luZG93SWQ6IHdpbmRvd1BhcmFtcy53aW5kb3dJZCxcbiAgICAgICAgICAgICAgICBib3VuZHM6ICAge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogIG5ld0RpbWVuc2lvbnMud2lkdGggKyBub25DbGllbnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBuZXdEaW1lbnNpb25zLmhlaWdodCArIG5vbkNsaWVudEhlaWdodCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNIZWFkbGVzc1RhYiAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX3BhcmVudFRhcmdldCAmJiB0aGlzLl9jb25maWcuaGVhZGxlc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldENsaWVudEluYWN0aXZlICh3aW5kb3dJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuX2NsaWVudHNbd2luZG93SWRdO1xuXG4gICAgICAgIGlmIChjbGllbnQpXG4gICAgICAgICAgICBjbGllbnQuaW5hY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBY3RpdmVDbGllbnQgKCk6IFByb21pc2U8cmVtb3RlQ2hyb21lLlByb3RvY29sQXBpIHwgdm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9jbGllbnRzW3RoaXMuX2NsaWVudEtleV0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBhd2FpdCBnZXRBY3RpdmVUYWIodGhpcy5fcG9ydCwgdGhpcy5fcnVudGltZUluZm8uYWN0aXZlV2luZG93SWQpO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fY3JlYXRlQ2xpZW50KHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgZGVidWdMb2coZXJyKTtcblxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLl9jbGllbnRzW3RoaXMuX2NsaWVudEtleV07XG5cbiAgICAgICAgaWYgKGluZm8uaW5hY3RpdmUpXG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuXG4gICAgICAgIHJldHVybiBpbmZvLmNsaWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdE1haW5XaW5kb3dDZHBDbGllbnQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdGFicyA9IGF3YWl0IGdldFRhYnModGhpcy5fcG9ydCk7XG5cbiAgICAgICAgICAgIHRoaXMuX3BhcmVudFRhcmdldCA9IHRhYnMuZmluZCh0ID0+IHQudXJsLmluY2x1ZGVzKHRoaXMuX3J1bnRpbWVJbmZvLmJyb3dzZXJJZCkpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3BhcmVudFRhcmdldClcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgICAgIGlmIChjbGllbnQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9jYWxjdWxhdGVFbXVsYXRlZERldmljZVBpeGVsUmF0aW8oY2xpZW50KTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXR1cENsaWVudChjbGllbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0U2NyZWVuc2hvdERhdGEgKGZ1bGxQYWdlPzogYm9vbGVhbik6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIGxldCBjbGlwOiBQcm90b2NvbC5QYWdlLlZpZXdwb3J0IHwgdW5kZWZpbmVkID0gdm9pZCAwO1xuXG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgaWYgKCFjbGllbnQpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IHJlcXVpcmVkIGZvciBodHRwczovL2dpdGh1Yi5jb20vRGV2RXhwcmVzcy90ZXN0Y2FmZS9pc3N1ZXMvNjAzN1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoMCk7XG5cbiAgICAgICAgICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZnVsbFBhZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1ldHJpY3MgICAgICAgICAgID0gYXdhaXQgY2xpZW50LlBhZ2UuZ2V0TGF5b3V0TWV0cmljcygpO1xuICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBtZXRyaWNzLmNzc0NvbnRlbnRTaXplIHx8IG1ldHJpY3MuY29udGVudFNpemU7XG5cbiAgICAgICAgICAgIGNsaXAgPSB7IHg6IDAsIHk6IDAsIHdpZHRoLCBoZWlnaHQsIHNjYWxlOiAxIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjbGllbnQuUGFnZS5jYXB0dXJlU2NyZWVuc2hvdCh7XG4gICAgICAgICAgICBjbGlwLFxuICAgICAgICAgICAgY2FwdHVyZUJleW9uZFZpZXdwb3J0OiBmdWxsUGFnZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHJlc3VsdC5kYXRhLCAnYmFzZTY0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNsb3NlVGFiICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudFRhcmdldClcbiAgICAgICAgICAgIGF3YWl0IHJlbW90ZUNocm9tZS5DbG9zZSh7IGlkOiB0aGlzLl9wYXJlbnRUYXJnZXQuaWQsIHBvcnQ6IHRoaXMuX3BvcnQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHVwZGF0ZU1vYmlsZVZpZXdwb3J0U2l6ZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgaWYgKCFjbGllbnQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgd2luZG93RGltZW5zaW9uc1F1ZXJ5UmVzdWx0ID0gYXdhaXQgdGhpcy5fZXZhbHVhdGVSdW50aW1lKGNsaWVudCwgYCgke0dFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVH0pKClgLCB0cnVlKTtcblxuICAgICAgICBjb25zdCB3aW5kb3dEaW1lbnNpb25zID0gd2luZG93RGltZW5zaW9uc1F1ZXJ5UmVzdWx0LnJlc3VsdC52YWx1ZTtcblxuICAgICAgICB0aGlzLl9ydW50aW1lSW5mby52aWV3cG9ydFNpemUud2lkdGggID0gd2luZG93RGltZW5zaW9ucy5vdXRlcldpZHRoO1xuICAgICAgICB0aGlzLl9ydW50aW1lSW5mby52aWV3cG9ydFNpemUuaGVpZ2h0ID0gd2luZG93RGltZW5zaW9ucy5vdXRlckhlaWdodDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xvc2VCcm93c2VyQ2hpbGRXaW5kb3cgKHdpbmRvd0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRDbGllbnRJbmFjdGl2ZSh3aW5kb3dJZCk7XG5cbiAgICAgICAgLy8gTk9URTogZGVsYXkgYnJvd3NlciB3aW5kb3cgY2xvc2luZ1xuICAgICAgICBhd2FpdCBkZWxheSgxMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdGFydENhcHR1cmluZ1ZpZGVvICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVDbGllbnQoKTtcblxuICAgICAgICBpZiAoIWNsaWVudClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBpZiAoIXRoaXMuX3NjcmVlbmNhc3RGcmFtZUxpc3RlbmVyQXR0YWNoZWQpIHtcbiAgICAgICAgICAgIGNsaWVudC5QYWdlLm9uKCdzY3JlZW5jYXN0RnJhbWUnLCAoZXZlbnQ6IFNjcmVlbmNhc3RGcmFtZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW9GcmFtZXNCdWZmZXIucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6ICAgICAgZXZlbnQuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbklkOiBldmVudC5zZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fc2NyZWVuY2FzdEZyYW1lTGlzdGVuZXJBdHRhY2hlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBjbGllbnQuUGFnZS5zdGFydFNjcmVlbmNhc3QoU0NSRUVOQ0FTVF9PUFRJT05TIGFzIFN0YXJ0U2NyZWVuY2FzdFJlcXVlc3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdG9wQ2FwdHVyaW5nVmlkZW8gKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmICghY2xpZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGF3YWl0IGNsaWVudC5QYWdlLnN0b3BTY3JlZW5jYXN0KCk7XG5cbiAgICAgICAgdGhpcy5fbGFzdEZyYW1lICAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLl92aWRlb0ZyYW1lc0J1ZmZlciA9IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRWaWRlb0ZyYW1lRGF0YSAoKTogUHJvbWlzZTxCdWZmZXIgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IGZpcnN0RnJhbWVGcm9tQnVmZmVyID0gdGhpcy5fdmlkZW9GcmFtZXNCdWZmZXIuc2hpZnQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudFZpZGVvRnJhbWUgICAgPSBmaXJzdEZyYW1lRnJvbUJ1ZmZlciB8fCB0aGlzLl9sYXN0RnJhbWU7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50VmlkZW9GcmFtZSlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLl92aWRlb0ZyYW1lc0J1ZmZlci5sZW5ndGggPT09IDApXG4gICAgICAgICAgICB0aGlzLl9sYXN0RnJhbWUgPSBjdXJyZW50VmlkZW9GcmFtZTtcblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmICghY2xpZW50KVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKGZpcnN0RnJhbWVGcm9tQnVmZmVyKVxuICAgICAgICAgICAgYXdhaXQgY2xpZW50LlBhZ2Uuc2NyZWVuY2FzdEZyYW1lQWNrKHsgc2Vzc2lvbklkOiBjdXJyZW50VmlkZW9GcmFtZS5zZXNzaW9uSWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGN1cnJlbnRWaWRlb0ZyYW1lLmRhdGEsICdiYXNlNjQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9vblRhcmdldENyZWF0ZWRIYW5kbGVyICh0YXJnZXRJbmZvOiByZW1vdGVDaHJvbWUuVGFyZ2V0SW5mbywgb3B0aW9uczogTmF0aXZlQXV0b21hdGlvbkluaXRPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGF3YWl0IGdldFRhYkJ5SWQodGhpcy5fcG9ydCwgdGFyZ2V0SW5mby50YXJnZXRJZCk7XG5cbiAgICAgICAgaWYgKCF0YXJnZXQpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY2xpZW50ICAgICAgICAgICA9IGF3YWl0IHRoaXMuX2NyZWF0ZUNsaWVudCh0YXJnZXQsIHRhcmdldEluZm8udGFyZ2V0SWQpO1xuICAgICAgICAgICAgY29uc3QgbmF0aXZlQXV0b21hdGlvbiA9IG5ldyBOYXRpdmVBdXRvbWF0aW9uQ2hpbGRXaW5kb3codGhpcy5fcnVudGltZUluZm8uYnJvd3NlcklkLCB0YXJnZXQuaWQsIGNsaWVudCwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGF3YWl0IG5hdGl2ZUF1dG9tYXRpb24uc3RhcnQoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5pZDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhlcnIpO1xuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVNYWluV2luZG93TmF0aXZlQXV0b21hdGlvbiAob3B0aW9uczogTmF0aXZlQXV0b21hdGlvbkluaXRPcHRpb25zKTogUHJvbWlzZTxOYXRpdmVBdXRvbWF0aW9uQmFzZSB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gYXdhaXQgZ2V0Rmlyc3RUYWIodGhpcy5fcG9ydCk7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuX2NyZWF0ZUNsaWVudCh0YXJnZXQpO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZUF1dG9tYXRpb24gPSBuZXcgTmF0aXZlQXV0b21hdGlvbk1haW5XaW5kb3codGhpcy5fcnVudGltZUluZm8uYnJvd3NlcklkLCB0YXJnZXQuaWQsIGNsaWVudCwgb3B0aW9ucyk7XG5cbiAgICAgICAgbmF0aXZlQXV0b21hdGlvbi5vbihORVdfV0lORE9XX09QRU5FRF9JTl9OQVRJVkVfQVVUT01BVElPTiwgYXN5bmMgdGFyZ2V0SW5mbyA9PiB0aGlzLl9vblRhcmdldENyZWF0ZWRIYW5kbGVyKHRhcmdldEluZm8sIG9wdGlvbnMpKTtcblxuICAgICAgICByZXR1cm4gbmF0aXZlQXV0b21hdGlvbjtcbiAgICB9XG59XG5cbiJdfQ==
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "testcafe",
3
3
  "description": "Automated browser testing for the modern web development stack.",
4
4
  "license": "MIT",
5
- "version": "3.7.1",
5
+ "version": "3.7.2",
6
6
  "author": {
7
7
  "name": "Developer Express Inc.",
8
8
  "url": "https://www.devexpress.com/"
@@ -144,7 +144,7 @@
144
144
  "source-map-support": "^0.5.16",
145
145
  "strip-bom": "^2.0.0",
146
146
  "testcafe-browser-tools": "2.0.26",
147
- "testcafe-hammerhead": "31.7.4",
147
+ "testcafe-hammerhead": "31.7.5",
148
148
  "testcafe-legacy-api": "5.1.8",
149
149
  "testcafe-reporter-json": "^2.1.0",
150
150
  "testcafe-reporter-list": "^2.2.0",