appium-espresso-driver 2.8.3 → 2.8.4

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.
@@ -29,8 +29,6 @@ var _appiumAndroidDriver = require("appium-android-driver");
29
29
 
30
30
  var _desiredCaps = _interopRequireDefault(require("./desired-caps"));
31
31
 
32
- var _package = require("../../package.json");
33
-
34
32
  var _portscanner = require("portscanner");
35
33
 
36
34
  var _asyncbox = require("asyncbox");
@@ -263,7 +261,10 @@ class EspressoDriver extends _driver.BaseDriver {
263
261
  }
264
262
 
265
263
  async startEspressoSession() {
266
- this.log.info(`EspressoDriver version: ${_package.version}`);
264
+ const {
265
+ manifestPayload
266
+ } = await (0, _utils.getPackageInfo)();
267
+ this.log.info(`EspressoDriver version: ${manifestPayload.version}`);
267
268
 
268
269
  if ((await this.adb.getApiLevel()) >= 28) {
269
270
  this.log.warn('Relaxing hidden api policy');
@@ -558,7 +559,5 @@ for (let [cmd, fn] of _lodash.default.toPairs(_commands.default)) {
558
559
  }
559
560
 
560
561
  var _default = EspressoDriver;
561
- exports.default = _default;require('source-map-support').install();
562
-
563
-
564
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2RyaXZlci5qcyIsIm5hbWVzIjpbImhlbHBlcnMiLCJhbmRyb2lkSGVscGVycyIsIlNZU1RFTV9QT1JUX1JBTkdFIiwiREVWSUNFX1BPUlQiLCJOT19QUk9YWSIsIlJlZ0V4cCIsIkNIUk9NRV9OT19QUk9YWSIsIkFQS19FWFQiLCJBQUJfRVhUIiwiU1VQUE9SVEVEX0VYVEVOU0lPTlMiLCJFc3ByZXNzb0RyaXZlciIsIkJhc2VEcml2ZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJzaG91bGRWYWxpZGF0ZUNhcHMiLCJzaGVsbCIsImxvY2F0b3JTdHJhdGVnaWVzIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwiZXNwcmVzc28iLCJqd3BQcm94eUFjdGl2ZSIsImRlZmF1bHRJTUUiLCJqd3BQcm94eUF2b2lkIiwiYXBrU3RyaW5ncyIsInNldHRpbmdzIiwiRGV2aWNlU2V0dGluZ3MiLCJvblNldHRpbmdzVXBkYXRlIiwiYmluZCIsImNocm9tZWRyaXZlciIsInNlc3Npb25DaHJvbWVkcml2ZXJzIiwiY3JlYXRlU2Vzc2lvbiIsImFyZ3MiLCJzZXNzaW9uSWQiLCJjYXBzIiwic2VydmVyRGV0YWlscyIsInBsYXRmb3JtIiwid2ViU3RvcmFnZUVuYWJsZWQiLCJ0YWtlc1NjcmVlbnNob3QiLCJqYXZhc2NyaXB0RW5hYmxlZCIsImRhdGFiYXNlRW5hYmxlZCIsIm5ldHdvcmtDb25uZWN0aW9uRW5hYmxlZCIsImxvY2F0aW9uQ29udGV4dEVuYWJsZWQiLCJ3YXJuaW5ncyIsImRlc2lyZWQiLCJPYmplY3QiLCJhc3NpZ24iLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiZGVmYXVsdE9wdHMiLCJmdWxsUmVzZXQiLCJhdXRvTGF1bmNoIiwiYWRiUG9ydCIsIkRFRkFVTFRfQURCX1BPUlQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJfIiwiZGVmYXVsdHMiLCJpc0Nocm9tZVNlc3Npb24iLCJhcHAiLCJsb2ciLCJ3YXJuIiwiZXJyb3JBbmRUaHJvdyIsInJlYm9vdCIsInNldEF2ZEZyb21DYXBhYmlsaXRpZXMiLCJhZGRXaXBlRGF0YVRvQXZkQXJncyIsInN5c3RlbVBvcnQiLCJmaW5kQVBvcnROb3RJblVzZSIsInVkaWQiLCJlbVBvcnQiLCJnZXREZXZpY2VJbmZvRnJvbUNhcHMiLCJhZGIiLCJjcmVhdGVBREIiLCJjb25maWd1cmVBcHAiLCJvblBvc3RQcm9jZXNzIiwib25Qb3N0Q29uZmlndXJlQXBwIiwic3VwcG9ydGVkRXh0ZW5zaW9ucyIsImFwcE9uRGV2aWNlIiwiaW5mbyIsImFwcFBhY2thZ2UiLCJpc0FwcEluc3RhbGxlZCIsInN0YXJ0RXNwcmVzc29TZXNzaW9uIiwiZSIsImRlbGV0ZVNlc3Npb24iLCJtZXNzYWdlIiwiZW5kc1dpdGgiLCJpc0Vycm9yVHlwZSIsImVycm9ycyIsIlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IiLCJlcnIiLCJzdGFjayIsInVuemlwQXBwIiwiYXBwUGF0aCIsInVzZVN5c3RlbVVuemlwRW52IiwicHJvY2VzcyIsImVudiIsIkFQUElVTV9QUkVGRVJfU1lTVEVNX1VOWklQIiwidXNlU3lzdGVtVW56aXAiLCJpc0VtcHR5IiwiaW5jbHVkZXMiLCJ0b0xvd2VyIiwidG1wUm9vdCIsInRlbXBEaXIiLCJvcGVuRGlyIiwiemlwIiwiZXh0cmFjdEFsbFRvIiwiZ2xvYlBhdHRlcm4iLCJtYXAiLCJleHQiLCJyZXBsYWNlIiwiam9pbiIsInNvcnRlZEJ1bmRsZUl0ZW1zIiwiZnMiLCJnbG9iIiwiY3dkIiwic3RyaWN0Iiwic29ydCIsImEiLCJiIiwic3BsaXQiLCJwYXRoIiwic2VwIiwibGVuZ3RoIiwidW56aXBwZWRBcHBQYXRoIiwiZmlyc3QiLCJkZWJ1ZyIsImNhY2hlZEFwcEluZm8iLCJpc1VybCIsInByZXNpZ25BcHAiLCJhcHBMb2NhdGlvbiIsIm5vU2lnbiIsImNoZWNrQXBrQ2VydCIsInNpZ24iLCJoYXNBcGtFeHQiLCJoYXNBYWJFeHQiLCJleHRyYWN0VW5pdmVyc2FsQXBrIiwic2hvdWxkRXh0cmFjdCIsInBhdGhJbkNhY2hlIiwiaXNSZXN1bHRBcHBQYXRoQWxyZWFkeUNhY2hlZCIsImlzUGxhaW5PYmplY3QiLCJwYWNrYWdlSGFzaCIsImhhc2giLCJleGlzdHMiLCJmdWxsUGF0aCIsImlzQXBrIiwic2hvdWxkUmVzdWx0QXBwUGF0aEJlQ2FjaGVkIiwiaXNVbnppcHBlZEFwayIsInJpbXJhZiIsImRyaXZlckRhdGEiLCJpc0VtdWxhdG9yIiwiYXZkIiwiZGV2aWNlTmFtZSIsInBsYXRmb3JtVmVyc2lvbiIsImF2ZERldmljZSIsImF2ZEFyZ3MiLCJ0b0xvd2VyQ2FzZSIsInZlcnNpb24iLCJnZXRBcGlMZXZlbCIsInNldEhpZGRlbkFwaVBvbGljeSIsImlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yIiwiYXBwSW5mbyIsImdldExhdW5jaEluZm8iLCJpbml0RGV2aWNlIiwiaXNBbmltYXRpb25PbiIsInNldEFuaW1hdGlvblN0YXRlIiwid2FzQW5pbWF0aW9uRW5hYmxlZCIsImN1ckRldmljZUlkIiwiZGV2aWNlVURJRCIsImluaXRFc3ByZXNzb1NlcnZlciIsImZvcndhcmRQb3J0Iiwic2tpcFVubG9jayIsInVubG9jayIsImluaXRBVVQiLCJhcHBXYWl0UGFja2FnZSIsImFwcEFjdGl2aXR5IiwicXVhbGlmeUFjdGl2aXR5TmFtZSIsImFwcFdhaXRBY3Rpdml0eSIsInN0YXJ0U2Vzc2lvbiIsIndhaXRGb3JBY3Rpdml0eSIsImFwcFdhaXREdXJhdGlvbiIsImF1dG9XZWJ2aWV3IiwiaW5pdFdlYnZpZXciLCJhZGREZXZpY2VJbmZvVG9DYXBzIiwidmlld05hbWUiLCJhbmRyb2lkQ29tbWFuZHMiLCJkZWZhdWx0V2Vidmlld05hbWUiLCJjYWxsIiwidGltZW91dCIsImF1dG9XZWJ2aWV3VGltZW91dCIsInJldHJ5SW50ZXJ2YWwiLCJzZXRDb250ZXh0IiwiYXBpVmVyc2lvbiIsIm1hbnVmYWN0dXJlciIsIm1vZGVsIiwicmVhbERpc3BsYXlTaXplIiwiZGlzcGxheURlbnNpdHkiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwiZGV2aWNlQXBpTGV2ZWwiLCJwYXJzZUludCIsImRldmljZVNjcmVlblNpemUiLCJkZXZpY2VTY3JlZW5EZW5zaXR5IiwiZGV2aWNlTW9kZWwiLCJkZXZpY2VNYW51ZmFjdHVyZXIiLCJFc3ByZXNzb1J1bm5lciIsImhvc3QiLCJyZW1vdGVBZGJIb3N0IiwiZGV2aWNlUG9ydCIsImFwayIsInRtcERpciIsImZvcmNlRXNwcmVzc29SZWJ1aWxkIiwiZXNwcmVzc29CdWlsZENvbmZpZyIsInNob3dHcmFkbGVMb2ciLCJzZXJ2ZXJMYXVuY2hUaW1lb3V0IiwiZXNwcmVzc29TZXJ2ZXJMYXVuY2hUaW1lb3V0Iiwic2tpcFNlcnZlckluc3RhbGxhdGlvbiIsInVzZUtleXN0b3JlIiwia2V5c3RvcmVQYXRoIiwia2V5c3RvcmVQYXNzd29yZCIsImtleUFsaWFzIiwia2V5UGFzc3dvcmQiLCJkaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSIsInByb3h5UmVxUmVzIiwicHJveHlDb21tYW5kIiwidW5pbnN0YWxsT3RoZXJQYWNrYWdlcyIsInBhcnNlQXJyYXkiLCJTRVRUSU5HU19IRUxQRVJfUEtHX0lEIiwiVEVTVF9BUEtfUEtHIiwiZmFzdFJlc2V0IiwicmVzZXRBcHAiLCJza2lwVW5pbnN0YWxsIiwidW5pbnN0YWxsQXBrIiwiaW5zdGFsbEFwayIsImluc3RhbGxUZXN0QXBrIiwiYWRkVG9EZXZpY2VJZGxlV2hpdGVsaXN0Iiwic3RkZXJyIiwic2NyZWVuUmVjb3JkaW5nU3RvcFRhc2tzIiwiX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMiLCJzdG9wUmVjb3JkaW5nU2NyZWVuIiwibW9iaWxlSXNNZWRpYVByb2plY3Rpb25SZWNvcmRpbmdSdW5uaW5nIiwibW9iaWxlU3RvcE1lZGlhUHJvamVjdGlvblJlY29yZGluZyIsIl9zY3JlZW5TdHJlYW1pbmdQcm9wcyIsIm1vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmciLCJyZW1vdmVBbGxTZXNzaW9uV2ViU29ja2V0SGFuZGxlcnMiLCJzZXJ2ZXIiLCJCIiwiYWxsIiwidGFzayIsImlnbiIsInVuaWNvZGVLZXlib2FyZCIsInJlc2V0S2V5Ym9hcmQiLCJzZXRJTUUiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJmb3JjZVN0b3AiLCJzdG9wTG9nY2F0IiwiYXZkTmFtZSIsImtpbGxFbXVsYXRvciIsInNldERlZmF1bHRIaWRkZW5BcGlQb2xpY3kiLCJ1bmRlZmluZWQiLCJyZW1vdmVQb3J0Rm9yd2FyZCIsImVycm9yIiwicHJveHlBY3RpdmUiLCJjYW5Qcm94eSIsImdldFByb3h5QXZvaWRMaXN0IiwiaXNOaWwiLCJuYXRpdmVXZWJTY3JlZW5zaG90IiwiaXNDaHJvbWVCcm93c2VyIiwiYnJvd3Nlck5hbWUiLCJpc1BhY2thZ2VPckJ1bmRsZSIsImNtZCIsImZuIiwidG9QYWlycyIsInByb3RvdHlwZSIsImNvbW1hbmRzIl0sInNvdXJjZVJvb3QiOiIuLi8uLiIsInNvdXJjZXMiOlsibGliL2RyaXZlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBCYXNlRHJpdmVyLCBlcnJvcnMsIGlzRXJyb3JUeXBlLCBEZXZpY2VTZXR0aW5nc30gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgeyBFc3ByZXNzb1J1bm5lciwgVEVTVF9BUEtfUEtHIH0gZnJvbSAnLi9lc3ByZXNzby1ydW5uZXInO1xuaW1wb3J0IHsgZnMsIHRlbXBEaXIsIHppcCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBjb21tYW5kcyBmcm9tICcuL2NvbW1hbmRzJztcbmltcG9ydCB7IERFRkFVTFRfQURCX1BPUlQgfSBmcm9tICdhcHBpdW0tYWRiJztcbmltcG9ydCB7IGFuZHJvaWRIZWxwZXJzLCBhbmRyb2lkQ29tbWFuZHMsIFNFVFRJTkdTX0hFTFBFUl9QS0dfSUQgfSBmcm9tICdhcHBpdW0tYW5kcm9pZC1kcml2ZXInO1xuaW1wb3J0IGRlc2lyZWRDYXBDb25zdHJhaW50cyBmcm9tICcuL2Rlc2lyZWQtY2Fwcyc7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBvcnQvbm8tdW5yZXNvbHZlZFxuaW1wb3J0IHsgZmluZEFQb3J0Tm90SW5Vc2UgfSBmcm9tICdwb3J0c2Nhbm5lcic7XG5pbXBvcnQgeyByZXRyeUludGVydmFsIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgcXVhbGlmeUFjdGl2aXR5TmFtZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5cbi8vIFRPRE8gbWVyZ2Ugb3VyIG93biBoZWxwZXJzIG9udG8gdGhpcyBsYXRlclxuY29uc3QgaGVscGVycyA9IGFuZHJvaWRIZWxwZXJzO1xuXG4vLyBUaGUgcmFuZ2Ugb2YgcG9ydHMgd2UgY2FuIHVzZSBvbiB0aGUgc3lzdGVtIGZvciBjb21tdW5pY2F0aW5nIHRvIHRoZVxuLy8gRXNwcmVzc28gSFRUUCBzZXJ2ZXIgb24gdGhlIGRldmljZVxuY29uc3QgU1lTVEVNX1BPUlRfUkFOR0UgPSBbODMwMCwgODM5OV07XG5cbi8vIFRoaXMgaXMgdGhlIHBvcnQgdGhhdCB0aGUgZXNwcmVzc28gc2VydmVyIGxpc3RlbnMgdG8gb24gdGhlIGRldmljZS4gV2Ugd2lsbFxuLy8gZm9yd2FyZCBvbmUgb2YgdGhlIHBvcnRzIGFib3ZlIG9uIHRoZSBzeXN0ZW0gdG8gdGhpcyBwb3J0IG9uIHRoZSBkZXZpY2UuXG5jb25zdCBERVZJQ0VfUE9SVCA9IDY3OTE7XG5cbi8vIE5PX1BST1hZIGNvbnRhaW5zIHRoZSBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gZXNwcmVzc28gc2VydmVyLlxuLy8gVE9ETzogIEFkZCB0aGUgbGlzdCBvZiBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gZXNwcmVzc28gc2VydmVyLlxuLy8gVE9ETzogTmVlZCB0byBzZWdyZWdhdGUgdGhlIHBhdGhzIGJldHRlciB3YXkgdXNpbmcgcmVndWxhciBleHByZXNzaW9ucyB3aGVyZXZlciBhcHBsaWNhYmxlLlxuLy8gKE5vdCBzZWdyZWdhdGluZyByaWdodCBhd2F5IGJlY2F1c2UgbW9yZSBwYXRocyB0byBiZSBhZGRlZCBpbiB0aGUgTk9fUFJPWFkgbGlzdClcbmNvbnN0IE5PX1BST1hZID0gW1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi8oPyEuKi8pJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL2N1cnJlbnRfYWN0aXZpdHknKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9kZXZpY2UvY3VycmVudF9wYWNrYWdlJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL2Rpc3BsYXlfZGVuc2l0eScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9pc19rZXlib2FyZF9zaG93bicpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9zeXN0ZW1fYmFycycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9zeXN0ZW1fdGltZScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3NldHRpbmdzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0cycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvaW1lL1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9uZXR3b3JrX2Nvbm5lY3Rpb24nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RpbWVvdXRzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy91cmwnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vYXBwL2JhY2tncm91bmQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vYXBwL2Nsb3NlJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2FwcC9sYXVuY2gnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vYXBwL3Jlc2V0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2FwcC9zdHJpbmdzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2NvbXBhcmVfaW1hZ2VzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9hY3RpdmF0ZV9hcHAnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL2FwcF9pbnN0YWxsZWQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL2FwcF9zdGF0ZScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9kZXZpY2UvZmluZ2VyX3ByaW50JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9nZXRfY2xpcGJvYXJkJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9pbnN0YWxsX2FwcCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9kZXZpY2UvaXNfbG9ja2VkJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9sb2NrJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9wdWxsX2ZpbGUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL3B1bGxfZm9sZGVyJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9wdXNoX2ZpbGUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL3JlbW92ZV9hcHAnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL3N0YXJ0X2FjdGl2aXR5JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS90ZXJtaW5hdGVfYXBwJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS91bmxvY2snKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZ2V0UGVyZm9ybWFuY2VEYXRhJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3BlcmZvcm1hbmNlRGF0YS90eXBlcycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9zZXR0aW5ncycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9leGVjdXRlX2RyaXZlcicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9zdGFydF9yZWNvcmRpbmdfc2NyZWVuJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3N0b3BfcmVjb3JkaW5nX3NjcmVlbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZS9hc3luYycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUvc3luYycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGVfYXN5bmMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9pbWUvW14vXSsnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2NhdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RpbWVvdXRzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdXJsJyldLFxuXG4gIC8vIE1KU09OV1AgY29tbWFuZHNcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nL3R5cGVzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nJyldLFxuXG4gIC8vIFczQyBjb21tYW5kc1xuICAvLyBGb3IgU2VsZW5pdW0gdjQgKFczQyBkb2VzIG5vdCBoYXZlIHRoaXMgcm91dGUpXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZy90eXBlcycpXSxcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2UvbG9nJyldLFxuXTtcblxuLy8gVGhpcyBpcyBhIHNldCBvZiBtZXRob2RzIGFuZCBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gQ2hyb21lZHJpdmVyLlxuY29uc3QgQ0hST01FX05PX1BST1hZID0gW1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvcmVjdCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvb3JpZW50YXRpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvb3JpZW50YXRpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90b3VjaC9tdWx0aS9wZXJmb3JtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvcGVyZm9ybScpXSxcblxuICAvLyB0aGlzIGlzIG5lZWRlZCB0byBtYWtlIHRoZSBtb2JpbGU6IGNvbW1hbmRzIHdvcmtpbmcgaW4gd2ViIGNvbnRleHRcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUkJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZS9zeW5jJyldLFxuXG4gIC8vIE1KU09OV1AgY29tbWFuZHNcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nL3R5cGVzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nJyldLFxuXG4gIC8vIFczQyBjb21tYW5kc1xuICAvLyBGb3IgU2VsZW5pdW0gdjQgKFczQyBkb2VzIG5vdCBoYXZlIHRoaXMgcm91dGUpXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZy90eXBlcycpXSxcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2UvbG9nJyldLFxuXTtcblxuXG5jb25zdCBBUEtfRVhUID0gJy5hcGsnO1xuY29uc3QgQUFCX0VYVCA9ICcuYWFiJztcbmNvbnN0IFNVUFBPUlRFRF9FWFRFTlNJT05TID0gW0FQS19FWFQsIEFBQl9FWFRdO1xuXG5jbGFzcyBFc3ByZXNzb0RyaXZlciBleHRlbmRzIEJhc2VEcml2ZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9LCBzaG91bGRWYWxpZGF0ZUNhcHMgPSB0cnVlKSB7XG4gICAgLy8gYHNoZWxsYCBvdmVyd3JpdGVzIGFkYi5zaGVsbCwgc28gcmVtb3ZlXG4gICAgZGVsZXRlIG9wdHMuc2hlbGw7XG5cbiAgICBzdXBlcihvcHRzLCBzaG91bGRWYWxpZGF0ZUNhcHMpO1xuICAgIHRoaXMubG9jYXRvclN0cmF0ZWdpZXMgPSBbXG4gICAgICAnaWQnLFxuICAgICAgJ2NsYXNzIG5hbWUnLFxuICAgICAgJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIF07XG4gICAgdGhpcy5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSBkZXNpcmVkQ2FwQ29uc3RyYWludHM7XG4gICAgdGhpcy5lc3ByZXNzbyA9IG51bGw7XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuZGVmYXVsdElNRSA9IG51bGw7XG4gICAgdGhpcy5qd3BQcm94eUF2b2lkID0gTk9fUFJPWFk7XG5cbiAgICB0aGlzLmFwa1N0cmluZ3MgPSB7fTsgLy8gbWFwIG9mIGxhbmd1YWdlIC0+IHN0cmluZ3Mgb2JqXG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncyh7fSwgdGhpcy5vblNldHRpbmdzVXBkYXRlLmJpbmQodGhpcykpO1xuXG4gICAgdGhpcy5jaHJvbWVkcml2ZXIgPSBudWxsO1xuICAgIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnMgPSB7fTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb24gKC4uLmFyZ3MpIHtcbiAgICB0cnkge1xuICAgICAgLy8gVE9ETyBoYW5kbGUgb3RoZXJTZXNzaW9uRGF0YSBmb3IgbXVsdGlwbGUgc2Vzc2lvbnNcbiAgICAgIGxldCBbc2Vzc2lvbklkLCBjYXBzXSA9IGF3YWl0IHN1cGVyLmNyZWF0ZVNlc3Npb24oLi4uYXJncyk7XG5cbiAgICAgIGxldCBzZXJ2ZXJEZXRhaWxzID0ge1xuICAgICAgICBwbGF0Zm9ybTogJ0xJTlVYJyxcbiAgICAgICAgd2ViU3RvcmFnZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB0YWtlc1NjcmVlbnNob3Q6IHRydWUsXG4gICAgICAgIGphdmFzY3JpcHRFbmFibGVkOiB0cnVlLFxuICAgICAgICBkYXRhYmFzZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBuZXR3b3JrQ29ubmVjdGlvbkVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGxvY2F0aW9uQ29udGV4dEVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB3YXJuaW5nczoge30sXG4gICAgICAgIGRlc2lyZWQ6IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY2FwcylcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY2FwcyA9IE9iamVjdC5hc3NpZ24oc2VydmVyRGV0YWlscywgdGhpcy5jYXBzKTtcblxuICAgICAgdGhpcy5jdXJDb250ZXh0ID0gdGhpcy5kZWZhdWx0Q29udGV4dE5hbWUoKTtcblxuICAgICAgbGV0IGRlZmF1bHRPcHRzID0ge1xuICAgICAgICBmdWxsUmVzZXQ6IGZhbHNlLFxuICAgICAgICBhdXRvTGF1bmNoOiB0cnVlLFxuICAgICAgICBhZGJQb3J0OiBERUZBVUxUX0FEQl9QT1JULFxuICAgICAgICBhbmRyb2lkSW5zdGFsbFRpbWVvdXQ6IDkwMDAwXG4gICAgICB9O1xuICAgICAgXy5kZWZhdWx0cyh0aGlzLm9wdHMsIGRlZmF1bHRPcHRzKTtcblxuICAgICAgaWYgKHRoaXMuaXNDaHJvbWVTZXNzaW9uKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgJ2Jyb3dzZXJOYW1lJyBjYXBhYmlsaXR5IHdpbGwgYmUgaWdub3JlZGApO1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYENocm9tZSBicm93c2VyIGNhbm5vdCBiZSBydW4gaW4gRXNwcmVzc28gc2Vzc2lvbnMgYmVjYXVzZSBFc3ByZXNzbyBhdXRvbWF0aW9uIGRvZXNuJ3QgYCArXG4gICAgICAgICAgICAgIGBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIENocm9tZWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENocm9tZSBicm93c2VyIHNlc3Npb25zIGNhbm5vdCBiZSBydW4gaW4gRXNwcmVzc28gYmVjYXVzZSBFc3ByZXNzbyBgICtcbiAgICAgICAgICAgIGBhdXRvbWF0aW9uIGRvZXNuJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyBDaHJvbWVgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLnJlYm9vdCkge1xuICAgICAgICB0aGlzLnNldEF2ZEZyb21DYXBhYmlsaXRpZXMoY2Fwcyk7XG4gICAgICAgIHRoaXMuYWRkV2lwZURhdGFUb0F2ZEFyZ3MoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5vcHRzLnN5c3RlbVBvcnQgPSB0aGlzLm9wdHMuc3lzdGVtUG9ydFxuICAgICAgICB8fCBhd2FpdCBmaW5kQVBvcnROb3RJblVzZShTWVNURU1fUE9SVF9SQU5HRVswXSwgU1lTVEVNX1BPUlRfUkFOR0VbMV0pO1xuICAgICAgdGhpcy5vcHRzLmFkYlBvcnQgPSB0aGlzLm9wdHMuYWRiUG9ydCB8fCBERUZBVUxUX0FEQl9QT1JUO1xuICAgICAgLy8gZ2V0IGRldmljZSB1ZGlkIGZvciB0aGlzIHNlc3Npb25cbiAgICAgIGNvbnN0IHt1ZGlkLCBlbVBvcnR9ID0gYXdhaXQgaGVscGVycy5nZXREZXZpY2VJbmZvRnJvbUNhcHModGhpcy5vcHRzKTtcbiAgICAgIHRoaXMub3B0cy51ZGlkID0gdWRpZDtcbiAgICAgIHRoaXMub3B0cy5lbVBvcnQgPSBlbVBvcnQ7XG4gICAgICAvLyBub3cgdGhhdCB3ZSBrbm93IG91ciBqYXZhIHZlcnNpb24gYW5kIGRldmljZSBpbmZvLCB3ZSBjYW4gY3JlYXRlIG91clxuICAgICAgLy8gQURCIGluc3RhbmNlXG4gICAgICB0aGlzLmFkYiA9IGF3YWl0IGFuZHJvaWRIZWxwZXJzLmNyZWF0ZUFEQih0aGlzLm9wdHMpO1xuXG4gICAgICBpZiAodGhpcy5vcHRzLmFwcCkge1xuICAgICAgICAvLyBmaW5kIGFuZCBjb3B5LCBvciBkb3dubG9hZCBhbmQgdW56aXAgYW4gYXBwIHVybCBvciBwYXRoXG4gICAgICAgIHRoaXMub3B0cy5hcHAgPSBhd2FpdCB0aGlzLmhlbHBlcnMuY29uZmlndXJlQXBwKHRoaXMub3B0cy5hcHAsIHtcbiAgICAgICAgICBvblBvc3RQcm9jZXNzOiB0aGlzLm9uUG9zdENvbmZpZ3VyZUFwcC5iaW5kKHRoaXMpLFxuICAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnM6IFNVUFBPUlRFRF9FWFRFTlNJT05TXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFwcE9uRGV2aWNlKSB7XG4gICAgICAgIC8vIHRoZSBhcHAgaXNuJ3QgYW4gYWN0dWFsIGFwcCBmaWxlIGJ1dCByYXRoZXIgc29tZXRoaW5nIHdlIHdhbnQgdG9cbiAgICAgICAgLy8gYXNzdW1lIGlzIG9uIHRoZSBkZXZpY2UgYW5kIGp1c3QgbGF1bmNoIHZpYSB0aGUgYXBwUGFja2FnZVxuICAgICAgICB0aGlzLmxvZy5pbmZvKGBBcHAgZmlsZSB3YXMgbm90IGxpc3RlZCwgaW5zdGVhZCB3ZSdyZSBnb2luZyB0byBydW4gYCArXG4gICAgICAgICAgICBgJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0gZGlyZWN0bHkgb24gdGhlIGRldmljZWApO1xuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuYWRiLmlzQXBwSW5zdGFsbGVkKHRoaXMub3B0cy5hcHBQYWNrYWdlKSkge1xuICAgICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBmaW5kIHRoZSBwYWNrYWdlICcke3RoaXMub3B0cy5hcHBQYWNrYWdlfScgYCArXG4gICAgICAgICAgICBgaW5zdGFsbGVkIG9uIHRoZSBkZXZpY2VgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0RXNwcmVzc29TZXNzaW9uKCk7XG4gICAgICByZXR1cm4gW3Nlc3Npb25JZCwgY2Fwc107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKCk7XG4gICAgICBlLm1lc3NhZ2UgKz0gYCR7Xy5lbmRzV2l0aChlLm1lc3NhZ2UsICcuJykgPyAnJyA6ICcuJ30gQ2hlY2sgYCArXG4gICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS1lc3ByZXNzby1kcml2ZXIjdHJvdWJsZXNob290aW5nICcgK1xuICAgICAgICAncmVnYXJkaW5nIGFkdmFuY2VkIHNlc3Npb24gc3RhcnR1cCB0cm91Ymxlc2hvb3RpbmcuJztcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlLCBlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVyciA9IG5ldyBlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcihlLm1lc3NhZ2UpO1xuICAgICAgZXJyLnN0YWNrID0gZS5zdGFjaztcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW56aXAgdGhlIGdpdmVuIGFwcCBwYXRoIGFuZCByZXR1cm4gdGhlIGZpcnN0IHBhY2thZ2UgdGhhdCBoYXMgU1VQUE9SVEVEX0VYVEVOU0lPTlNcbiAgICogaW4gdGhlIGFyY2hpdmVkIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBQYXRoIFRoZSBwYXRoIHRvIGFwcCBmaWxlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1bnMgdGhlIHBhdGggdG8gYW4gdW56aXBwZWQgYXBwIGZpbGUgcGF0aC5cbiAgICogQHRocm93cyBSYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIHppcCBkaWQgbm90IGhhdmUgYW55IFNVUFBPUlRFRF9FWFRFTlNJT05TIHBhY2thZ2VzLlxuICAgKi9cbiAgYXN5bmMgdW56aXBBcHAgKGFwcFBhdGgpIHtcbiAgICBjb25zdCB1c2VTeXN0ZW1VbnppcEVudiA9IHByb2Nlc3MuZW52LkFQUElVTV9QUkVGRVJfU1lTVEVNX1VOWklQO1xuICAgIGNvbnN0IHVzZVN5c3RlbVVuemlwID0gXy5pc0VtcHR5KHVzZVN5c3RlbVVuemlwRW52KVxuICAgICAgfHwgIVsnMCcsICdmYWxzZSddLmluY2x1ZGVzKF8udG9Mb3dlcih1c2VTeXN0ZW1VbnppcEVudikpO1xuICAgIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKGFwcFBhdGgsIHRtcFJvb3QsIHt1c2VTeXN0ZW1VbnppcH0pO1xuXG4gICAgY29uc3QgZ2xvYlBhdHRlcm4gPSBgKiovKi4rKCR7U1VQUE9SVEVEX0VYVEVOU0lPTlMubWFwKChleHQpID0+IGV4dC5yZXBsYWNlKC9eXFwuLywgJycpKS5qb2luKCd8Jyl9KWA7XG4gICAgY29uc3Qgc29ydGVkQnVuZGxlSXRlbXMgPSAoYXdhaXQgZnMuZ2xvYihnbG9iUGF0dGVybiwge1xuICAgICAgY3dkOiB0bXBSb290LFxuICAgICAgc3RyaWN0OiBmYWxzZSxcbiAgICB9KSkuc29ydCgoYSwgYikgPT4gYS5zcGxpdChwYXRoLnNlcCkubGVuZ3RoIC0gYi5zcGxpdChwYXRoLnNlcCkubGVuZ3RoKTtcbiAgICBpZiAoc29ydGVkQnVuZGxlSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBubyBleHBlY3RlZCBwYWNrYWdlcyBpbiB0aGUgemlwXG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGAke3RoaXMub3B0cy5hcHB9IGRpZCBub3QgaGF2ZSBhbnkgb2YgJyR7U1VQUE9SVEVEX0VYVEVOU0lPTlMuam9pbignLCAnKX0nIGAgK1xuICAgICAgICBgZXh0ZW5zaW9uIHBhY2thZ2VzLiBQbGVhc2UgbWFrZSBzdXJlIHRoZSBwcm92aWRlZCAuemlwIGFyY2hpdmUgY29udGFpbnMgYXQgbGVhc3Qgb25lIHZhbGlkIGFwcGxpY2F0aW9uIHBhY2thZ2UuYCk7XG4gICAgfVxuICAgIGNvbnN0IHVuemlwcGVkQXBwUGF0aCA9IHBhdGguam9pbih0bXBSb290LCBfLmZpcnN0KHNvcnRlZEJ1bmRsZUl0ZW1zKSk7XG4gICAgdGhpcy5sb2cuZGVidWcoYCcke3VuemlwcGVkQXBwUGF0aH0nIGlzIHRoZSB1bnppcHBlZCBmaWxlIGZyb20gJyR7YXBwUGF0aH0nYCk7XG4gICAgcmV0dXJuIHVuemlwcGVkQXBwUGF0aDtcbiAgfVxuXG4gIGFzeW5jIG9uUG9zdENvbmZpZ3VyZUFwcCAoe2NhY2hlZEFwcEluZm8sIGlzVXJsLCBhcHBQYXRofSkge1xuICAgIGNvbnN0IHByZXNpZ25BcHAgPSBhc3luYyAoYXBwTG9jYXRpb24pID0+IHtcbiAgICAgIGlmICh0aGlzLm9wdHMubm9TaWduKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1NraXBwaW5nIGFwcGxpY2F0aW9uIHNpZ25pbmcgYmVjYXVzZSBub1NpZ24gY2FwYWJpbGl0eSBpcyBzZXQgdG8gdHJ1ZS4gJyArXG4gICAgICAgICAgJ0hhdmluZyB0aGUgYXBwbGljYXRpb24gdW5kZXIgdGVzdCB3aXRoIGltcHJvcGVyIHNpZ25hdHVyZS9ub24tc2lnbmVkIHdpbGwgY2F1c2UgJyArXG4gICAgICAgICAgJ0VzcHJlc3NvIGF1dG9tYXRpb24gc3RhcnR1cCBmYWlsdXJlLicpO1xuICAgICAgfSBlbHNlIGlmICghYXdhaXQgdGhpcy5hZGIuY2hlY2tBcGtDZXJ0KGFwcExvY2F0aW9uLCB0aGlzLm9wdHMuYXBwUGFja2FnZSkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2lnbihhcHBMb2NhdGlvbiwgdGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYXNBcGtFeHQgPSAoYXBwUGF0aCkgPT4gXy5lbmRzV2l0aChfLnRvTG93ZXIoYXBwUGF0aCksIEFQS19FWFQpO1xuICAgIGNvbnN0IGhhc0FhYkV4dCA9IChhcHBQYXRoKSA9PiBfLmVuZHNXaXRoKF8udG9Mb3dlcihhcHBQYXRoKSwgQUFCX0VYVCk7XG4gICAgY29uc3QgZXh0cmFjdFVuaXZlcnNhbEFwayA9IGFzeW5jIChzaG91bGRFeHRyYWN0LCBhcHBQYXRoKSA9PlxuICAgICAgc2hvdWxkRXh0cmFjdCA/IGFwcFBhdGggOiBhd2FpdCB0aGlzLmFkYi5leHRyYWN0VW5pdmVyc2FsQXBrKGFwcFBhdGgpO1xuXG4gICAgbGV0IHBhdGhJbkNhY2hlID0gbnVsbDtcbiAgICBsZXQgaXNSZXN1bHRBcHBQYXRoQWxyZWFkeUNhY2hlZCA9IGZhbHNlO1xuICAgIGlmIChfLmlzUGxhaW5PYmplY3QoY2FjaGVkQXBwSW5mbykpIHtcbiAgICAgIGNvbnN0IHBhY2thZ2VIYXNoID0gYXdhaXQgZnMuaGFzaChhcHBQYXRoKTtcbiAgICAgIGlmIChwYWNrYWdlSGFzaCA9PT0gY2FjaGVkQXBwSW5mby5wYWNrYWdlSGFzaCAmJiBhd2FpdCBmcy5leGlzdHMoY2FjaGVkQXBwSW5mby5mdWxsUGF0aCkpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgVXNpbmcgJyR7Y2FjaGVkQXBwSW5mby5mdWxsUGF0aH0nIHdoaWNoIGlzIGNhY2hlZCBmcm9tICcke2FwcFBhdGh9J2ApO1xuICAgICAgICBpc1Jlc3VsdEFwcFBhdGhBbHJlYWR5Q2FjaGVkID0gdHJ1ZTtcbiAgICAgICAgcGF0aEluQ2FjaGUgPSBjYWNoZWRBcHBJbmZvLmZ1bGxQYXRoO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFwcFBhdGggY2FuIGJlIC56aXAsIC5hcGsgb3IgLmFhYlxuICAgIGNvbnN0IGlzQXBrID0gaGFzQXBrRXh0KGFwcFBhdGgpO1xuICAgIC8vIE9ubHkgbG9jYWwgLmFwayBmaWxlcyB0aGF0IGFyZSBhdmFpbGFibGUgaW4tcGxhY2Ugc2hvdWxkIG5vdCBiZSBjYWNoZWRcbiAgICBjb25zdCBzaG91bGRSZXN1bHRBcHBQYXRoQmVDYWNoZWQgPSAhaXNBcGsgfHwgKGlzQXBrICYmIGlzVXJsKTtcblxuICAgIGlmICghaXNSZXN1bHRBcHBQYXRoQWxyZWFkeUNhY2hlZCkge1xuICAgICAgaWYgKHNob3VsZFJlc3VsdEFwcFBhdGhCZUNhY2hlZCkge1xuICAgICAgICAvLyAuemlwLCAuYWFiIG9yIGRvd25sb2FkZWQgLmFwa1xuXG4gICAgICAgIGxldCB1bnppcHBlZEFwcFBhdGg7XG4gICAgICAgIGxldCBpc1VuemlwcGVkQXBrID0gZmFsc2U7XG4gICAgICAgIGlmICghKGhhc0Fwa0V4dChhcHBQYXRoKSB8fCBoYXNBYWJFeHQoYXBwUGF0aCkpKSB7XG4gICAgICAgICAgdW56aXBwZWRBcHBQYXRoID0gYXdhaXQgdGhpcy51bnppcEFwcChhcHBQYXRoKTtcbiAgICAgICAgICBpc1VuemlwcGVkQXBrID0gaGFzQXBrRXh0KHVuemlwcGVkQXBwUGF0aCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1bnppcHBlZEFwcFBhdGggb3IgYXBwUGF0aCBoYXMgU1VQUE9SVEVEX0VYVEVOU0lPTlMuXG4gICAgICAgIHBhdGhJbkNhY2hlID0gdW56aXBwZWRBcHBQYXRoXG4gICAgICAgICAgPyBhd2FpdCBleHRyYWN0VW5pdmVyc2FsQXBrKGlzVW56aXBwZWRBcGssIHVuemlwcGVkQXBwUGF0aClcbiAgICAgICAgICA6IGF3YWl0IGV4dHJhY3RVbml2ZXJzYWxBcGsoaXNBcGssIGFwcFBhdGgpO1xuXG4gICAgICAgIGlmICghaXNBcGsgJiYgaXNVcmwpIHtcbiAgICAgICAgICAvLyBDbGVhbiB1cCB0aGUgdGVtcG9yYXJpbHkgZG93bmxvYWRlZCAuYWFiIG9yIC56aXAgcGFja2FnZVxuICAgICAgICAgIGF3YWl0IGZzLnJpbXJhZihhcHBQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzQWFiRXh0KHVuemlwcGVkQXBwUGF0aCkpIHtcbiAgICAgICAgICAvLyBDbGVhbnVwIHRoZSBsb2NhbCB1bnppcHBlZCAuYWFiIGZpbGVcbiAgICAgICAgICBhd2FpdCBmcy5yaW1yYWYodW56aXBwZWRBcHBQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBwcmVzaWduQXBwKHBhdGhJbkNhY2hlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNBcGspIHtcbiAgICAgICAgLy8gSXQgaXMgcHJvYmFibHkgbm90IHRoZSBiZXN0IGlkZWEgdG8gbW9kaWZ5IHRoZSBwcm92aWRlZCBhcHAgaW4tcGxhY2UsXG4gICAgICAgIC8vIGJ1dCB0aGlzIGlzIGhvdyBpdCB3YXMgYWx3YXlzIHdvcmtpbmdcbiAgICAgICAgYXdhaXQgcHJlc2lnbkFwcChhcHBQYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNob3VsZFJlc3VsdEFwcFBhdGhCZUNhY2hlZCA/IHthcHBQYXRoOiBwYXRoSW5DYWNoZX0gOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBkcml2ZXJEYXRhICgpIHtcbiAgICAvLyBUT0RPIGZpbGxlIG91dCByZXNvdXJjZSBpbmZvIGhlcmVcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBpc0VtdWxhdG9yICgpIHtcbiAgICByZXR1cm4gaGVscGVycy5pc0VtdWxhdG9yKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICB9XG5cbiAgLy8gVE9ETyB0aGlzIG1ldGhvZCBpcyBkdXBsaWNhdGVkIGZyb20gdWlhdXRvbWF0b3IyLWRyaXZlcjsgY29uc29saWRhdGVcbiAgc2V0QXZkRnJvbUNhcGFiaWxpdGllcyAoY2Fwcykge1xuICAgIGlmICh0aGlzLm9wdHMuYXZkKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdhdmQgbmFtZSBkZWZpbmVkLCBpZ25vcmluZyBkZXZpY2UgbmFtZSBhbmQgcGxhdGZvcm0gdmVyc2lvbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNhcHMuZGV2aWNlTmFtZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdhdmQgb3IgZGV2aWNlTmFtZSBzaG91bGQgYmUgc3BlY2lmaWVkIHdoZW4gcmVib290IG9wdGlvbiBpcyBlbmFibGVzJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWNhcHMucGxhdGZvcm1WZXJzaW9uKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2F2ZCBvciBwbGF0Zm9ybVZlcnNpb24gc2hvdWxkIGJlIHNwZWNpZmllZCB3aGVuIHJlYm9vdCBvcHRpb24gaXMgZW5hYmxlZCcpO1xuICAgICAgfVxuICAgICAgbGV0IGF2ZERldmljZSA9IGNhcHMuZGV2aWNlTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOV8uXS9nLCAnLScpO1xuICAgICAgdGhpcy5vcHRzLmF2ZCA9IGAke2F2ZERldmljZX1fXyR7Y2Fwcy5wbGF0Zm9ybVZlcnNpb259YDtcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPIHRoaXMgbWV0aG9kIGlzIGR1cGxpY2F0ZWQgZnJvbSB1aWF1dG9tYXRvcjItZHJpdmVyOyBjb25zb2xpZGF0ZVxuICBhZGRXaXBlRGF0YVRvQXZkQXJncyAoKSB7XG4gICAgaWYgKCF0aGlzLm9wdHMuYXZkQXJncykge1xuICAgICAgdGhpcy5vcHRzLmF2ZEFyZ3MgPSAnLXdpcGUtZGF0YSc7XG4gICAgfSBlbHNlIGlmICghdGhpcy5vcHRzLmF2ZEFyZ3MudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnLXdpcGUtZGF0YScpKSB7XG4gICAgICB0aGlzLm9wdHMuYXZkQXJncyArPSAnIC13aXBlLWRhdGEnO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE8gbXVjaCBvZiB0aGlzIGxvZ2ljIGlzIGR1cGxpY2F0ZWQgZnJvbSB1aWF1dG9tYXRvcjJcbiAgYXN5bmMgc3RhcnRFc3ByZXNzb1Nlc3Npb24gKCkge1xuICAgIHRoaXMubG9nLmluZm8oYEVzcHJlc3NvRHJpdmVyIHZlcnNpb246ICR7dmVyc2lvbn1gKTtcblxuICAgIC8vIFJlYWQgaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0tYW5kcm9pZC1kcml2ZXIvcHVsbC80NjEgd2hhdCBoYXBwZW5zIGlmIHRoZXIgaXMgbm8gc2V0SGlkZGVuQXBpUG9saWN5IGZvciBBbmRyb2lkIFArXG4gICAgaWYgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPj0gMjgpIHsgLy8gQW5kcm9pZCBQXG4gICAgICB0aGlzLmxvZy53YXJuKCdSZWxheGluZyBoaWRkZW4gYXBpIHBvbGljeScpO1xuICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0SGlkZGVuQXBpUG9saWN5KCcxJywgISF0aGlzLm9wdHMuaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3IpO1xuICAgIH1cblxuICAgIC8vIGdldCBhcHBQYWNrYWdlIGV0IGFsIGZyb20gbWFuaWZlc3QgaWYgbmVjZXNzYXJ5XG4gICAgbGV0IGFwcEluZm8gPSBhd2FpdCBoZWxwZXJzLmdldExhdW5jaEluZm8odGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgaWYgKGFwcEluZm8pIHtcbiAgICAgIC8vIGFuZCBnZXQgaXQgb250byBvdXIgJ29wdHMnIG9iamVjdCBzbyB3ZSB1c2UgaXQgZnJvbSBub3cgb25cbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRzLCBhcHBJbmZvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBwSW5mbyA9IHRoaXMub3B0cztcbiAgICB9XG5cbiAgICAvLyBzdGFydCBhbiBhdmQsIHNldCB0aGUgbGFuZ3VhZ2UvbG9jYWxlLCBwaWNrIGFuIGVtdWxhdG9yLCBldGMuLi5cbiAgICAvLyBUT0RPIHdpdGggbXVsdGlwbGUgZGV2aWNlcyB3ZSdsbCBuZWVkIHRvIHBhcmFtZXRlcml6ZSB0aGlzXG4gICAgYXdhaXQgaGVscGVycy5pbml0RGV2aWNlKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtLWVzcHJlc3NvLWRyaXZlci9pc3N1ZXMvNzJcbiAgICBpZiAoYXdhaXQgdGhpcy5hZGIuaXNBbmltYXRpb25PbigpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRBbmltYXRpb25TdGF0ZShmYWxzZSk7XG4gICAgICAgIHRoaXMud2FzQW5pbWF0aW9uRW5hYmxlZCA9IHRydWU7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHR1cm4gb2ZmIGFuaW1hdGlvbnM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0IGFjdHVhbCBkZXZpY2UgbmFtZSwgdWRpZFxuICAgIHRoaXMuY2Fwcy5kZXZpY2VOYW1lID0gdGhpcy5hZGIuY3VyRGV2aWNlSWQ7XG4gICAgdGhpcy5jYXBzLmRldmljZVVESUQgPSB0aGlzLm9wdHMudWRpZDtcblxuICAgIC8vIHNldCB1cCB0aGUgbW9kaWZpZWQgZXNwcmVzc28gc2VydmVyIGV0Y1xuICAgIHRoaXMuaW5pdEVzcHJlc3NvU2VydmVyKCk7XG4gICAgLy8gRnVydGhlciBwcmVwYXJlIHRoZSBkZXZpY2UgYnkgZm9yd2FyZGluZyB0aGUgZXNwcmVzc28gcG9ydFxuICAgIHRoaXMubG9nLmRlYnVnKGBGb3J3YXJkaW5nIEVzcHJlc3NvIFNlcnZlciBwb3J0ICR7REVWSUNFX1BPUlR9IHRvICR7dGhpcy5vcHRzLnN5c3RlbVBvcnR9YCk7XG4gICAgYXdhaXQgdGhpcy5hZGIuZm9yd2FyZFBvcnQodGhpcy5vcHRzLnN5c3RlbVBvcnQsIERFVklDRV9QT1JUKTtcblxuICAgIGlmICghdGhpcy5vcHRzLnNraXBVbmxvY2spIHtcbiAgICAgIC8vIHVubG9jayB0aGUgZGV2aWNlIHRvIHByZXBhcmUgaXQgZm9yIHRlc3RpbmdcbiAgICAgIGF3YWl0IGhlbHBlcnMudW5sb2NrKHRoaXMsIHRoaXMuYWRiLCB0aGlzLmNhcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgJ3NraXBVbmxvY2snIGNhcGFiaWxpdHkgc2V0LCBzbyBza2lwcGluZyBkZXZpY2UgdW5sb2NrYCk7XG4gICAgfVxuXG4gICAgLy8gc2V0IHVwIGFwcCB1bmRlciB0ZXN0XG4gICAgLy8gcHJlcGFyZSBvdXIgYWN0dWFsIEFVVCwgZ2V0IGl0IG9uIHRoZSBkZXZpY2UsIGV0Yy4uLlxuICAgIGF3YWl0IHRoaXMuaW5pdEFVVCgpO1xuXG4gICAgLy9BZGRpbmcgQVVUIHBhY2thZ2UgbmFtZSBpbiB0aGUgY2FwYWJpbGl0aWVzIGlmIHBhY2thZ2UgbmFtZSBub3QgZXhpc3QgaW4gY2Fwc1xuICAgIGlmICghdGhpcy5jYXBzLmFwcFBhY2thZ2UpIHtcbiAgICAgIHRoaXMuY2Fwcy5hcHBQYWNrYWdlID0gYXBwSW5mby5hcHBQYWNrYWdlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY2Fwcy5hcHBXYWl0UGFja2FnZSkge1xuICAgICAgdGhpcy5jYXBzLmFwcFdhaXRQYWNrYWdlID0gYXBwSW5mby5hcHBXYWl0UGFja2FnZSB8fCBhcHBJbmZvLmFwcFBhY2thZ2UgfHwgdGhpcy5jYXBzLmFwcFBhY2thZ2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmNhcHMuYXBwQWN0aXZpdHkpIHtcbiAgICAgIHRoaXMuY2Fwcy5hcHBBY3Rpdml0eSA9IHF1YWxpZnlBY3Rpdml0eU5hbWUodGhpcy5jYXBzLmFwcEFjdGl2aXR5LCB0aGlzLmNhcHMuYXBwUGFja2FnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2Fwcy5hcHBBY3Rpdml0eSA9IHF1YWxpZnlBY3Rpdml0eU5hbWUoYXBwSW5mby5hcHBBY3Rpdml0eSwgdGhpcy5jYXBzLmFwcFBhY2thZ2UpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jYXBzLmFwcFdhaXRBY3Rpdml0eSkge1xuICAgICAgdGhpcy5jYXBzLmFwcFdhaXRBY3Rpdml0eSA9IHF1YWxpZnlBY3Rpdml0eU5hbWUodGhpcy5jYXBzLmFwcFdhaXRBY3Rpdml0eSwgdGhpcy5jYXBzLmFwcFdhaXRQYWNrYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXBzLmFwcFdhaXRBY3Rpdml0eSA9IHF1YWxpZnlBY3Rpdml0eU5hbWUoYXBwSW5mby5hcHBXYWl0QWN0aXZpdHkgfHwgYXBwSW5mby5hcHBBY3Rpdml0eSB8fCB0aGlzLmNhcHMuYXBwQWN0aXZpdHksXG4gICAgICAgIHRoaXMuY2Fwcy5hcHBXYWl0UGFja2FnZSk7XG4gICAgfVxuXG4gICAgLy8gbGF1bmNoIGVzcHJlc3NvIGFuZCB3YWl0IHRpbGwgaXRzIG9ubGluZSBhbmQgd2UgaGF2ZSBhIHNlc3Npb25cbiAgICBhd2FpdCB0aGlzLmVzcHJlc3NvLnN0YXJ0U2Vzc2lvbih0aGlzLmNhcHMpO1xuICAgIGlmICh0aGlzLmNhcHMuYXV0b0xhdW5jaCA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYE5vdCB3YWl0aW5nIGZvciB0aGUgYXBwbGljYXRpb24gYWN0aXZpdHkgdG8gc3RhcnQgYmVjYXVzZSAnYXV0b0xhdW5jaCcgaXMgZGlzYWJsZWRgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5hZGIud2FpdEZvckFjdGl2aXR5KHRoaXMuY2Fwcy5hcHBXYWl0UGFja2FnZSwgdGhpcy5jYXBzLmFwcFdhaXRBY3Rpdml0eSwgdGhpcy5vcHRzLmFwcFdhaXREdXJhdGlvbik7XG4gICAgfVxuICAgIC8vIGlmIHdlIHdhbnQgdG8gaW1tZWRpYXRlbHkgZ2V0IGludG8gYSB3ZWJ2aWV3LCBzZXQgb3VyIGNvbnRleHRcbiAgICAvLyBhcHByb3ByaWF0ZWx5XG4gICAgaWYgKHRoaXMub3B0cy5hdXRvV2Vidmlldykge1xuICAgICAgYXdhaXQgdGhpcy5pbml0V2VidmlldygpO1xuICAgIH1cblxuICAgIC8vIG5vdyB0aGF0IGV2ZXJ5dGhpbmcgaGFzIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LCB0dXJuIG9uIHByb3h5aW5nIHNvIGFsbFxuICAgIC8vIHN1YnNlcXVlbnQgc2Vzc2lvbiByZXF1ZXN0cyBnbyBzdHJhaWdodCB0by9mcm9tIGVzcHJlc3NvXG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IHRydWU7XG5cbiAgICBhd2FpdCB0aGlzLmFkZERldmljZUluZm9Ub0NhcHMoKTtcbiAgfVxuXG4gIGFzeW5jIGluaXRXZWJ2aWV3ICgpIHtcbiAgICBjb25zdCB2aWV3TmFtZSA9IGFuZHJvaWRDb21tYW5kcy5kZWZhdWx0V2Vidmlld05hbWUuY2FsbCh0aGlzKTtcbiAgICBjb25zdCB0aW1lb3V0ID0gdGhpcy5vcHRzLmF1dG9XZWJ2aWV3VGltZW91dCB8fCAyMDAwO1xuICAgIHRoaXMubG9nLmluZm8oYFNldHRpbmcgd2VidmlldyB0byBjb250ZXh0ICcke3ZpZXdOYW1lfScgd2l0aCB0aW1lb3V0ICR7dGltZW91dH1tc2ApO1xuICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwodGltZW91dCAvIDUwMCwgNTAwLCB0aGlzLnNldENvbnRleHQuYmluZCh0aGlzKSwgdmlld05hbWUpO1xuICB9XG5cbiAgYXN5bmMgYWRkRGV2aWNlSW5mb1RvQ2FwcyAoKSB7XG4gICAgY29uc3Qge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHBsYXRmb3JtVmVyc2lvbixcbiAgICAgIG1hbnVmYWN0dXJlcixcbiAgICAgIG1vZGVsLFxuICAgICAgcmVhbERpc3BsYXlTaXplLFxuICAgICAgZGlzcGxheURlbnNpdHksXG4gICAgfSA9IGF3YWl0IHRoaXMubW9iaWxlR2V0RGV2aWNlSW5mbygpO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VBcGlMZXZlbCA9IHBhcnNlSW50KGFwaVZlcnNpb24sIDEwKTtcbiAgICB0aGlzLmNhcHMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VTY3JlZW5TaXplID0gcmVhbERpc3BsYXlTaXplO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VTY3JlZW5EZW5zaXR5ID0gZGlzcGxheURlbnNpdHk7XG4gICAgdGhpcy5jYXBzLmRldmljZU1vZGVsID0gbW9kZWw7XG4gICAgdGhpcy5jYXBzLmRldmljZU1hbnVmYWN0dXJlciA9IG1hbnVmYWN0dXJlcjtcbiAgfVxuXG4gIGluaXRFc3ByZXNzb1NlcnZlciAoKSB7XG4gICAgLy8gbm93IHRoYXQgd2UgaGF2ZSBwYWNrYWdlIGFuZCBhY3Rpdml0eSwgd2UgY2FuIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZlxuICAgIC8vIGVzcHJlc3NvIHdpdGggdGhlIGFwcHJvcHJpYXRlIGRhdGFcbiAgICB0aGlzLmVzcHJlc3NvID0gbmV3IEVzcHJlc3NvUnVubmVyKHRoaXMubG9nLCB7XG4gICAgICBob3N0OiB0aGlzLm9wdHMucmVtb3RlQWRiSG9zdCB8fCB0aGlzLm9wdHMuaG9zdCB8fCAnMTI3LjAuMC4xJyxcbiAgICAgIHN5c3RlbVBvcnQ6IHRoaXMub3B0cy5zeXN0ZW1Qb3J0LFxuICAgICAgZGV2aWNlUG9ydDogREVWSUNFX1BPUlQsXG4gICAgICBhZGI6IHRoaXMuYWRiLFxuICAgICAgYXBrOiB0aGlzLm9wdHMuYXBwLFxuICAgICAgdG1wRGlyOiB0aGlzLm9wdHMudG1wRGlyLFxuICAgICAgYXBwUGFja2FnZTogdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgICBhcHBBY3Rpdml0eTogdGhpcy5vcHRzLmFwcEFjdGl2aXR5LFxuICAgICAgZm9yY2VFc3ByZXNzb1JlYnVpbGQ6ICEhdGhpcy5vcHRzLmZvcmNlRXNwcmVzc29SZWJ1aWxkLFxuICAgICAgZXNwcmVzc29CdWlsZENvbmZpZzogdGhpcy5vcHRzLmVzcHJlc3NvQnVpbGRDb25maWcsXG4gICAgICBzaG93R3JhZGxlTG9nOiAhIXRoaXMub3B0cy5zaG93R3JhZGxlTG9nLFxuICAgICAgc2VydmVyTGF1bmNoVGltZW91dDogdGhpcy5vcHRzLmVzcHJlc3NvU2VydmVyTGF1bmNoVGltZW91dCxcbiAgICAgIGFuZHJvaWRJbnN0YWxsVGltZW91dDogdGhpcy5vcHRzLmFuZHJvaWRJbnN0YWxsVGltZW91dCxcbiAgICAgIHNraXBTZXJ2ZXJJbnN0YWxsYXRpb246IHRoaXMub3B0cy5za2lwU2VydmVySW5zdGFsbGF0aW9uLFxuICAgICAgdXNlS2V5c3RvcmU6IHRoaXMub3B0cy51c2VLZXlzdG9yZSxcbiAgICAgIGtleXN0b3JlUGF0aDogdGhpcy5vcHRzLmtleXN0b3JlUGF0aCxcbiAgICAgIGtleXN0b3JlUGFzc3dvcmQ6IHRoaXMub3B0cy5rZXlzdG9yZVBhc3N3b3JkLFxuICAgICAga2V5QWxpYXM6IHRoaXMub3B0cy5rZXlBbGlhcyxcbiAgICAgIGtleVBhc3N3b3JkOiB0aGlzLm9wdHMua2V5UGFzc3dvcmQsXG4gICAgICBkaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZTogdGhpcy5vcHRzLmRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlLFxuICAgIH0pO1xuICAgIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLmVzcHJlc3NvLnByb3h5UmVxUmVzLmJpbmQodGhpcy5lc3ByZXNzbyk7XG4gICAgdGhpcy5wcm94eUNvbW1hbmQgPSB0aGlzLmVzcHJlc3NvLnByb3h5Q29tbWFuZC5iaW5kKHRoaXMuZXNwcmVzc28pO1xuICB9XG5cbiAgLy8gVE9ETyB0aGlzIG1ldGhvZCBpcyBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIHVpYXV0b21hdG9yMlxuICBhc3luYyBpbml0QVVUICgpIHtcbiAgICAvLyBzZXQgdGhlIGxvY2FsaXplZCBzdHJpbmdzIGZvciB0aGUgY3VycmVudCBsYW5ndWFnZSBmcm9tIHRoZSBhcGtcbiAgICAvLyBUT0RPOiBpbmNvcnBvcmF0ZSBjaGFuZ2VzIGZyb20gYXBwaXVtIzUzMDggd2hpY2ggZml4IGEgcmFjZSBjb25kLVxuICAgIC8vIGl0aW9uIGJ1ZyBpbiBvbGQgYXBwaXVtIGFuZCBuZWVkIHRvIGJlIHJlcGxpY2F0ZWQgaGVyZVxuICAgIC8vIHRoaXMuYXBrU3RyaW5nc1t0aGlzLm9wdHMubGFuZ3VhZ2VdID0gYXdhaXQgYW5kcm9pZEhlbHBlcnMucHVzaFN0cmluZ3MoXG4gICAgLy8gICAgIHRoaXMub3B0cy5sYW5ndWFnZSwgdGhpcy5hZGIsIHRoaXMub3B0cyk7XG5cbiAgICAvLyBVbmluc3RhbGwgYW55IHVuaW5zdGFsbE90aGVyUGFja2FnZXMgd2hpY2ggd2VyZSBzcGVjaWZpZWQgaW4gY2Fwc1xuICAgIGlmICh0aGlzLm9wdHMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcykge1xuICAgICAgYXdhaXQgaGVscGVycy51bmluc3RhbGxPdGhlclBhY2thZ2VzKFxuICAgICAgICB0aGlzLmFkYixcbiAgICAgICAgaGVscGVycy5wYXJzZUFycmF5KHRoaXMub3B0cy51bmluc3RhbGxPdGhlclBhY2thZ2VzKSxcbiAgICAgICAgW1NFVFRJTkdTX0hFTFBFUl9QS0dfSUQsIFRFU1RfQVBLX1BLR11cbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm9wdHMuYXBwKSB7XG4gICAgICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdGdWxsIHJlc2V0IHJlcXVpcmVzIGFuIGFwcCBjYXBhYmlsaXR5LCB1c2UgZmFzdFJlc2V0IGlmIGFwcCBpcyBub3QgcHJvdmlkZWQnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKCdObyBhcHAgY2FwYWJpbGl0eS4gQXNzdW1pbmcgaXQgaXMgYWxyZWFkeSBvbiB0aGUgZGV2aWNlJyk7XG4gICAgICBpZiAodGhpcy5vcHRzLmZhc3RSZXNldCkge1xuICAgICAgICBhd2FpdCBoZWxwZXJzLnJlc2V0QXBwKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5vcHRzLnNraXBVbmluc3RhbGwpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICBhd2FpdCBoZWxwZXJzLmluc3RhbGxBcGsodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMuc2tpcFNlcnZlckluc3RhbGxhdGlvbikge1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ3NraXBTZXJ2ZXJJbnN0YWxsYXRpb24gY2FwYWJpbGl0eSBpcyBzZXQuIE5vdCBpbnN0YWxsaWcgZXNwcmVzc28tc2VydmVyICcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmVzcHJlc3NvLmluc3RhbGxUZXN0QXBrKCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5hZGRUb0RldmljZUlkbGVXaGl0ZWxpc3QoU0VUVElOR1NfSEVMUEVSX1BLR19JRCwgVEVTVF9BUEtfUEtHKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgQ2Fubm90IGFkZCBzZXJ2ZXIgcGFja2FnZXMgdG8gdGhlIERvemUgd2hpdGVsaXN0LiBPcmlnaW5hbCBlcnJvcjogYCArXG4gICAgICAgICAgKGUuc3RkZXJyIHx8IGUubWVzc2FnZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdEZWxldGluZyBlc3ByZXNzbyBzZXNzaW9uJyk7XG5cbiAgICBjb25zdCBzY3JlZW5SZWNvcmRpbmdTdG9wVGFza3MgPSBbYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9wUmVjb3JkaW5nU2NyZWVuKCk7XG4gICAgICB9XG4gICAgfSwgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKGF3YWl0IHRoaXMubW9iaWxlSXNNZWRpYVByb2plY3Rpb25SZWNvcmRpbmdSdW5uaW5nKCkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2JpbGVTdG9wTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nKCk7XG4gICAgICB9XG4gICAgfSwgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuU3RyZWFtaW5nUHJvcHMpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZygpO1xuICAgICAgfVxuICAgIH1dO1xuXG4gICAgYXdhaXQgYW5kcm9pZEhlbHBlcnMucmVtb3ZlQWxsU2Vzc2lvbldlYlNvY2tldEhhbmRsZXJzKHRoaXMuc2VydmVyLCB0aGlzLnNlc3Npb25JZCk7XG5cbiAgICBpZiAodGhpcy5lc3ByZXNzbykge1xuICAgICAgaWYgKHRoaXMuandwUHJveHlBY3RpdmUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5lc3ByZXNzby5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmVzcHJlc3NvID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuYWRiKSB7XG4gICAgICBhd2FpdCBCLmFsbChzY3JlZW5SZWNvcmRpbmdTdG9wVGFza3MubWFwKCh0YXNrKSA9PiB7XG4gICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRhc2soKTtcbiAgICAgICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgICAgIH0pKCk7XG4gICAgICB9KSk7XG4gICAgICBpZiAodGhpcy53YXNBbmltYXRpb25FbmFibGVkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0QW5pbWF0aW9uU3RhdGUodHJ1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byByZXNldCBhbmltYXRpb246ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdHMudW5pY29kZUtleWJvYXJkICYmIHRoaXMub3B0cy5yZXNldEtleWJvYXJkICYmXG4gICAgICAgICAgdGhpcy5kZWZhdWx0SU1FKSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBSZXNldHRpbmcgSU1FIHRvICcke3RoaXMuZGVmYXVsdElNRX0nYCk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldElNRSh0aGlzLmRlZmF1bHRJTUUpO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmlzQ2hyb21lU2Vzc2lvbiAmJiB0aGlzLm9wdHMuYXBwUGFja2FnZSAmJiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldCkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5mb3JjZVN0b3AodGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0cy5mdWxsUmVzZXQgJiYgIXRoaXMub3B0cy5za2lwVW5pbnN0YWxsICYmICF0aGlzLmFwcE9uRGV2aWNlKSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBGVUxMX1JFU0VUIHNldCB0byAndHJ1ZScsIFVuaW5zdGFsbGluZyAnJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0nYCk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zdG9wTG9nY2F0KCk7XG4gICAgICBpZiAodGhpcy5vcHRzLnJlYm9vdCkge1xuICAgICAgICBsZXQgYXZkTmFtZSA9IHRoaXMub3B0cy5hdmQucmVwbGFjZSgnQCcsICcnKTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYGNsb3NpbmcgZW11bGF0b3IgJyR7YXZkTmFtZX0nYCk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmtpbGxFbXVsYXRvcihhdmROYW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpID49IDI4KSB7IC8vIEFuZHJvaWQgUFxuICAgICAgICB0aGlzLmxvZy5pbmZvKCdSZXN0b3JpbmcgaGlkZGVuIGFwaSBwb2xpY3kgdG8gdGhlIGRldmljZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24nKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0RGVmYXVsdEhpZGRlbkFwaVBvbGljeSghIXRoaXMub3B0cy5pZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvcik7XG4gICAgICB9XG4gICAgfVxuICAgIGF3YWl0IHN1cGVyLmRlbGV0ZVNlc3Npb24oKTtcbiAgICBpZiAodGhpcy5vcHRzLnN5c3RlbVBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIucmVtb3ZlUG9ydEZvcndhcmQodGhpcy5vcHRzLnN5c3RlbVBvcnQpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHJlbW92ZSBwb3J0IGZvcndhcmQgJyR7ZXJyb3IubWVzc2FnZX0nYCk7XG4gICAgICAgIC8vSWdub3JlLCB0aGlzIGJsb2NrIHdpbGwgYWxzbyBiZSBjYWxsZWQgd2hlbiB3ZSBmYWxsIGluIGNhdGNoIGJsb2NrXG4gICAgICAgIC8vIGFuZCBiZWZvcmUgZXZlbiBwb3J0IGZvcndhcmQuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25TZXR0aW5nc1VwZGF0ZSAoKSB7XG4gICAgLy8gaW50ZW50aW9uYWxseSBkbyBub3RoaW5nIGhlcmUsIHNpbmNlIGNvbW1hbmRzLnVwZGF0ZVNldHRpbmdzIHByb3hpZXNcbiAgICAvLyBzZXR0aW5ncyB0byB0aGUgZXNwcmVzc28gc2VydmVyIGFscmVhZHlcbiAgfVxuXG4gIHByb3h5QWN0aXZlIChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5wcm94eUFjdGl2ZShzZXNzaW9uSWQpO1xuXG4gICAgLy8gd2UgYWx3YXlzIGhhdmUgYW4gYWN0aXZlIHByb3h5IHRvIHRoZSBlc3ByZXNzbyBzZXJ2ZXJcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNhblByb3h5IChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5jYW5Qcm94eShzZXNzaW9uSWQpO1xuXG4gICAgLy8gd2UgY2FuIGFsd2F5cyBwcm94eSB0byB0aGUgZXNwcmVzc28gc2VydmVyXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRQcm94eUF2b2lkTGlzdCAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIuZ2V0UHJveHlBdm9pZExpc3Qoc2Vzc2lvbklkKTtcbiAgICAvLyB3ZSBhcmUgbWFpbnRhaW5pbmcgdHdvIHNldHMgb2YgTk9fUFJPWFkgbGlzdHMsIG9uZSBmb3IgY2hyb21lZHJpdmVyKENIUk9NRV9OT19QUk9YWSlcbiAgICAvLyBhbmQgb25lIGZvciBFc3ByZXNzbyhOT19QUk9YWSksIGJhc2VkIG9uIGN1cnJlbnQgY29udGV4dCB3aWxsIHJldHVybiByZWxhdGVkIE5PX1BST1hZIGxpc3RcbiAgICB0aGlzLmp3cFByb3h5QXZvaWQgPSBfLmlzTmlsKHRoaXMuY2hyb21lZHJpdmVyKSA/IE5PX1BST1hZIDogQ0hST01FX05PX1BST1hZO1xuICAgIGlmICh0aGlzLm9wdHMubmF0aXZlV2ViU2NyZWVuc2hvdCkge1xuICAgICAgdGhpcy5qd3BQcm94eUF2b2lkID0gWy4uLnRoaXMuandwUHJveHlBdm9pZCwgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2NyZWVuc2hvdCcpXV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuandwUHJveHlBdm9pZDtcbiAgfVxuXG4gIGdldCBpc0Nocm9tZVNlc3Npb24gKCkge1xuICAgIHJldHVybiBoZWxwZXJzLmlzQ2hyb21lQnJvd3Nlcih0aGlzLm9wdHMuYnJvd3Nlck5hbWUpO1xuICB9XG5cbiAgZ2V0IGFwcE9uRGV2aWNlICgpIHtcbiAgICByZXR1cm4gIXRoaXMub3B0cy5hcHAgJiYgdGhpcy5oZWxwZXJzLmlzUGFja2FnZU9yQnVuZGxlKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgfVxufVxuXG4vLyBmaXJzdCBhZGQgdGhlIGFuZHJvaWQtZHJpdmVyIGNvbW1hbmRzIHdoaWNoIHdlIHdpbGwgZmFsbCBiYWNrIHRvXG5mb3IgKGxldCBbY21kLCBmbl0gb2YgXy50b1BhaXJzKGFuZHJvaWRDb21tYW5kcykpIHtcbiAgLy8gd2UgZG8gc29tZSBkaWZmZXJlbnQvc3BlY2lhbCB0aGluZ3Mgd2l0aCB0aGVzZSBtZXRob2RzXG4gIGlmICghXy5pbmNsdWRlcyhbJ2RlZmF1bHRXZWJ2aWV3TmFtZSddLCBjbWQpKSB7XG4gICAgRXNwcmVzc29Ecml2ZXIucHJvdG90eXBlW2NtZF0gPSBmbjtcbiAgfVxufVxuXG4vLyB0aGVuIG92ZXJ3cml0ZSB3aXRoIGFueSBlc3ByZXNzby1zcGVjaWZpYyBjb21tYW5kc1xuZm9yIChsZXQgW2NtZCwgZm5dIG9mIF8udG9QYWlycyhjb21tYW5kcykpIHtcbiAgRXNwcmVzc29Ecml2ZXIucHJvdG90eXBlW2NtZF0gPSBmbjtcbn1cblxuZXhwb3J0IHsgRXNwcmVzc29Ecml2ZXIgfTtcbmV4cG9ydCBkZWZhdWx0IEVzcHJlc3NvRHJpdmVy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QSxNQUFKLENBQVcsMkNBQVgsQ0FBVCxDQTlCZSxFQStCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcseUNBQVgsQ0FBVCxDQS9CZSxFQWdDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMENBQVgsQ0FBVCxDQWhDZSxFQWlDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOENBQVgsQ0FBVCxDQWpDZSxFQWtDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsNkNBQVgsQ0FBVCxDQWxDZSxFQW1DZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsc0NBQVgsQ0FBVCxDQW5DZSxFQW9DZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMkNBQVgsQ0FBVCxDQXBDZSxFQXFDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOENBQVgsQ0FBVCxDQXJDZSxFQXNDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsaUNBQVgsQ0FBVCxDQXRDZSxFQXVDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsdUNBQVgsQ0FBVCxDQXZDZSxFQXdDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsK0NBQVgsQ0FBVCxDQXhDZSxFQXlDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOENBQVgsQ0FBVCxDQXpDZSxFQTBDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBVCxDQTFDZSxFQTJDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBVCxDQTNDZSxFQTRDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsK0JBQVgsQ0FBVCxDQTVDZSxFQTZDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOEJBQVgsQ0FBVCxDQTdDZSxFQThDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsK0JBQVgsQ0FBVCxDQTlDZSxFQStDZixD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
562
+ exports.default = _default;
563
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoZWxwZXJzIiwiYW5kcm9pZEhlbHBlcnMiLCJTWVNURU1fUE9SVF9SQU5HRSIsIkRFVklDRV9QT1JUIiwiTk9fUFJPWFkiLCJSZWdFeHAiLCJDSFJPTUVfTk9fUFJPWFkiLCJBUEtfRVhUIiwiQUFCX0VYVCIsIlNVUFBPUlRFRF9FWFRFTlNJT05TIiwiRXNwcmVzc29Ecml2ZXIiLCJCYXNlRHJpdmVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwic2hlbGwiLCJsb2NhdG9yU3RyYXRlZ2llcyIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsImVzcHJlc3NvIiwiandwUHJveHlBY3RpdmUiLCJkZWZhdWx0SU1FIiwiandwUHJveHlBdm9pZCIsImFwa1N0cmluZ3MiLCJzZXR0aW5ncyIsIkRldmljZVNldHRpbmdzIiwib25TZXR0aW5nc1VwZGF0ZSIsImJpbmQiLCJjaHJvbWVkcml2ZXIiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsImNyZWF0ZVNlc3Npb24iLCJhcmdzIiwic2Vzc2lvbklkIiwiY2FwcyIsInNlcnZlckRldGFpbHMiLCJwbGF0Zm9ybSIsIndlYlN0b3JhZ2VFbmFibGVkIiwidGFrZXNTY3JlZW5zaG90IiwiamF2YXNjcmlwdEVuYWJsZWQiLCJkYXRhYmFzZUVuYWJsZWQiLCJuZXR3b3JrQ29ubmVjdGlvbkVuYWJsZWQiLCJsb2NhdGlvbkNvbnRleHRFbmFibGVkIiwid2FybmluZ3MiLCJkZXNpcmVkIiwiT2JqZWN0IiwiYXNzaWduIiwiY3VyQ29udGV4dCIsImRlZmF1bHRDb250ZXh0TmFtZSIsImRlZmF1bHRPcHRzIiwiZnVsbFJlc2V0IiwiYXV0b0xhdW5jaCIsImFkYlBvcnQiLCJERUZBVUxUX0FEQl9QT1JUIiwiYW5kcm9pZEluc3RhbGxUaW1lb3V0IiwiXyIsImRlZmF1bHRzIiwiaXNDaHJvbWVTZXNzaW9uIiwiYXBwIiwibG9nIiwid2FybiIsImVycm9yQW5kVGhyb3ciLCJyZWJvb3QiLCJzZXRBdmRGcm9tQ2FwYWJpbGl0aWVzIiwiYWRkV2lwZURhdGFUb0F2ZEFyZ3MiLCJzeXN0ZW1Qb3J0IiwiZmluZEFQb3J0Tm90SW5Vc2UiLCJ1ZGlkIiwiZW1Qb3J0IiwiZ2V0RGV2aWNlSW5mb0Zyb21DYXBzIiwiYWRiIiwiY3JlYXRlQURCIiwiY29uZmlndXJlQXBwIiwib25Qb3N0UHJvY2VzcyIsIm9uUG9zdENvbmZpZ3VyZUFwcCIsInN1cHBvcnRlZEV4dGVuc2lvbnMiLCJhcHBPbkRldmljZSIsImluZm8iLCJhcHBQYWNrYWdlIiwiaXNBcHBJbnN0YWxsZWQiLCJzdGFydEVzcHJlc3NvU2Vzc2lvbiIsImUiLCJkZWxldGVTZXNzaW9uIiwibWVzc2FnZSIsImVuZHNXaXRoIiwiaXNFcnJvclR5cGUiLCJlcnJvcnMiLCJTZXNzaW9uTm90Q3JlYXRlZEVycm9yIiwiZXJyIiwic3RhY2siLCJ1bnppcEFwcCIsImFwcFBhdGgiLCJ1c2VTeXN0ZW1VbnppcEVudiIsInByb2Nlc3MiLCJlbnYiLCJBUFBJVU1fUFJFRkVSX1NZU1RFTV9VTlpJUCIsInVzZVN5c3RlbVVuemlwIiwiaXNFbXB0eSIsImluY2x1ZGVzIiwidG9Mb3dlciIsInRtcFJvb3QiLCJ0ZW1wRGlyIiwib3BlbkRpciIsInppcCIsImV4dHJhY3RBbGxUbyIsImdsb2JQYXR0ZXJuIiwibWFwIiwiZXh0IiwicmVwbGFjZSIsImpvaW4iLCJzb3J0ZWRCdW5kbGVJdGVtcyIsImZzIiwiZ2xvYiIsImN3ZCIsInN0cmljdCIsInNvcnQiLCJhIiwiYiIsInNwbGl0IiwicGF0aCIsInNlcCIsImxlbmd0aCIsInVuemlwcGVkQXBwUGF0aCIsImZpcnN0IiwiZGVidWciLCJjYWNoZWRBcHBJbmZvIiwiaXNVcmwiLCJwcmVzaWduQXBwIiwiYXBwTG9jYXRpb24iLCJub1NpZ24iLCJjaGVja0Fwa0NlcnQiLCJzaWduIiwiaGFzQXBrRXh0IiwiaGFzQWFiRXh0IiwiZXh0cmFjdFVuaXZlcnNhbEFwayIsInNob3VsZEV4dHJhY3QiLCJwYXRoSW5DYWNoZSIsImlzUmVzdWx0QXBwUGF0aEFscmVhZHlDYWNoZWQiLCJpc1BsYWluT2JqZWN0IiwicGFja2FnZUhhc2giLCJoYXNoIiwiZXhpc3RzIiwiZnVsbFBhdGgiLCJpc0FwayIsInNob3VsZFJlc3VsdEFwcFBhdGhCZUNhY2hlZCIsImlzVW56aXBwZWRBcGsiLCJyaW1yYWYiLCJkcml2ZXJEYXRhIiwiaXNFbXVsYXRvciIsImF2ZCIsImRldmljZU5hbWUiLCJwbGF0Zm9ybVZlcnNpb24iLCJhdmREZXZpY2UiLCJhdmRBcmdzIiwidG9Mb3dlckNhc2UiLCJtYW5pZmVzdFBheWxvYWQiLCJnZXRQYWNrYWdlSW5mbyIsInZlcnNpb24iLCJnZXRBcGlMZXZlbCIsInNldEhpZGRlbkFwaVBvbGljeSIsImlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yIiwiYXBwSW5mbyIsImdldExhdW5jaEluZm8iLCJpbml0RGV2aWNlIiwiaXNBbmltYXRpb25PbiIsInNldEFuaW1hdGlvblN0YXRlIiwid2FzQW5pbWF0aW9uRW5hYmxlZCIsImN1ckRldmljZUlkIiwiZGV2aWNlVURJRCIsImluaXRFc3ByZXNzb1NlcnZlciIsImZvcndhcmRQb3J0Iiwic2tpcFVubG9jayIsInVubG9jayIsImluaXRBVVQiLCJhcHBXYWl0UGFja2FnZSIsImFwcEFjdGl2aXR5IiwicXVhbGlmeUFjdGl2aXR5TmFtZSIsImFwcFdhaXRBY3Rpdml0eSIsInN0YXJ0U2Vzc2lvbiIsIndhaXRGb3JBY3Rpdml0eSIsImFwcFdhaXREdXJhdGlvbiIsImF1dG9XZWJ2aWV3IiwiaW5pdFdlYnZpZXciLCJhZGREZXZpY2VJbmZvVG9DYXBzIiwidmlld05hbWUiLCJhbmRyb2lkQ29tbWFuZHMiLCJkZWZhdWx0V2Vidmlld05hbWUiLCJjYWxsIiwidGltZW91dCIsImF1dG9XZWJ2aWV3VGltZW91dCIsInJldHJ5SW50ZXJ2YWwiLCJzZXRDb250ZXh0IiwiYXBpVmVyc2lvbiIsIm1hbnVmYWN0dXJlciIsIm1vZGVsIiwicmVhbERpc3BsYXlTaXplIiwiZGlzcGxheURlbnNpdHkiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwiZGV2aWNlQXBpTGV2ZWwiLCJwYXJzZUludCIsImRldmljZVNjcmVlblNpemUiLCJkZXZpY2VTY3JlZW5EZW5zaXR5IiwiZGV2aWNlTW9kZWwiLCJkZXZpY2VNYW51ZmFjdHVyZXIiLCJFc3ByZXNzb1J1bm5lciIsImhvc3QiLCJyZW1vdGVBZGJIb3N0IiwiZGV2aWNlUG9ydCIsImFwayIsInRtcERpciIsImZvcmNlRXNwcmVzc29SZWJ1aWxkIiwiZXNwcmVzc29CdWlsZENvbmZpZyIsInNob3dHcmFkbGVMb2ciLCJzZXJ2ZXJMYXVuY2hUaW1lb3V0IiwiZXNwcmVzc29TZXJ2ZXJMYXVuY2hUaW1lb3V0Iiwic2tpcFNlcnZlckluc3RhbGxhdGlvbiIsInVzZUtleXN0b3JlIiwia2V5c3RvcmVQYXRoIiwia2V5c3RvcmVQYXNzd29yZCIsImtleUFsaWFzIiwia2V5UGFzc3dvcmQiLCJkaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSIsInByb3h5UmVxUmVzIiwicHJveHlDb21tYW5kIiwidW5pbnN0YWxsT3RoZXJQYWNrYWdlcyIsInBhcnNlQXJyYXkiLCJTRVRUSU5HU19IRUxQRVJfUEtHX0lEIiwiVEVTVF9BUEtfUEtHIiwiZmFzdFJlc2V0IiwicmVzZXRBcHAiLCJza2lwVW5pbnN0YWxsIiwidW5pbnN0YWxsQXBrIiwiaW5zdGFsbEFwayIsImluc3RhbGxUZXN0QXBrIiwiYWRkVG9EZXZpY2VJZGxlV2hpdGVsaXN0Iiwic3RkZXJyIiwic2NyZWVuUmVjb3JkaW5nU3RvcFRhc2tzIiwiX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMiLCJzdG9wUmVjb3JkaW5nU2NyZWVuIiwibW9iaWxlSXNNZWRpYVByb2plY3Rpb25SZWNvcmRpbmdSdW5uaW5nIiwibW9iaWxlU3RvcE1lZGlhUHJvamVjdGlvblJlY29yZGluZyIsIl9zY3JlZW5TdHJlYW1pbmdQcm9wcyIsIm1vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmciLCJyZW1vdmVBbGxTZXNzaW9uV2ViU29ja2V0SGFuZGxlcnMiLCJzZXJ2ZXIiLCJCIiwiYWxsIiwidGFzayIsImlnbiIsInVuaWNvZGVLZXlib2FyZCIsInJlc2V0S2V5Ym9hcmQiLCJzZXRJTUUiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJmb3JjZVN0b3AiLCJzdG9wTG9nY2F0IiwiYXZkTmFtZSIsImtpbGxFbXVsYXRvciIsInNldERlZmF1bHRIaWRkZW5BcGlQb2xpY3kiLCJ1bmRlZmluZWQiLCJyZW1vdmVQb3J0Rm9yd2FyZCIsImVycm9yIiwicHJveHlBY3RpdmUiLCJjYW5Qcm94eSIsImdldFByb3h5QXZvaWRMaXN0IiwiaXNOaWwiLCJuYXRpdmVXZWJTY3JlZW5zaG90IiwiaXNDaHJvbWVCcm93c2VyIiwiYnJvd3Nlck5hbWUiLCJpc1BhY2thZ2VPckJ1bmRsZSIsImNtZCIsImZuIiwidG9QYWlycyIsInByb3RvdHlwZSIsImNvbW1hbmRzIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2RyaXZlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBCYXNlRHJpdmVyLCBlcnJvcnMsIGlzRXJyb3JUeXBlLCBEZXZpY2VTZXR0aW5nc30gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgeyBFc3ByZXNzb1J1bm5lciwgVEVTVF9BUEtfUEtHIH0gZnJvbSAnLi9lc3ByZXNzby1ydW5uZXInO1xuaW1wb3J0IHsgZnMsIHRlbXBEaXIsIHppcCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBjb21tYW5kcyBmcm9tICcuL2NvbW1hbmRzJztcbmltcG9ydCB7IERFRkFVTFRfQURCX1BPUlQgfSBmcm9tICdhcHBpdW0tYWRiJztcbmltcG9ydCB7IGFuZHJvaWRIZWxwZXJzLCBhbmRyb2lkQ29tbWFuZHMsIFNFVFRJTkdTX0hFTFBFUl9QS0dfSUQgfSBmcm9tICdhcHBpdW0tYW5kcm9pZC1kcml2ZXInO1xuaW1wb3J0IGRlc2lyZWRDYXBDb25zdHJhaW50cyBmcm9tICcuL2Rlc2lyZWQtY2Fwcyc7XG5pbXBvcnQgeyBmaW5kQVBvcnROb3RJblVzZSB9IGZyb20gJ3BvcnRzY2FubmVyJztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBxdWFsaWZ5QWN0aXZpdHlOYW1lLCBnZXRQYWNrYWdlSW5mbyB9IGZyb20gJy4vdXRpbHMnO1xuXG5cbi8vIFRPRE8gbWVyZ2Ugb3VyIG93biBoZWxwZXJzIG9udG8gdGhpcyBsYXRlclxuY29uc3QgaGVscGVycyA9IGFuZHJvaWRIZWxwZXJzO1xuXG4vLyBUaGUgcmFuZ2Ugb2YgcG9ydHMgd2UgY2FuIHVzZSBvbiB0aGUgc3lzdGVtIGZvciBjb21tdW5pY2F0aW5nIHRvIHRoZVxuLy8gRXNwcmVzc28gSFRUUCBzZXJ2ZXIgb24gdGhlIGRldmljZVxuY29uc3QgU1lTVEVNX1BPUlRfUkFOR0UgPSBbODMwMCwgODM5OV07XG5cbi8vIFRoaXMgaXMgdGhlIHBvcnQgdGhhdCB0aGUgZXNwcmVzc28gc2VydmVyIGxpc3RlbnMgdG8gb24gdGhlIGRldmljZS4gV2Ugd2lsbFxuLy8gZm9yd2FyZCBvbmUgb2YgdGhlIHBvcnRzIGFib3ZlIG9uIHRoZSBzeXN0ZW0gdG8gdGhpcyBwb3J0IG9uIHRoZSBkZXZpY2UuXG5jb25zdCBERVZJQ0VfUE9SVCA9IDY3OTE7XG5cbi8vIE5PX1BST1hZIGNvbnRhaW5zIHRoZSBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gZXNwcmVzc28gc2VydmVyLlxuLy8gVE9ETzogIEFkZCB0aGUgbGlzdCBvZiBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gZXNwcmVzc28gc2VydmVyLlxuLy8gVE9ETzogTmVlZCB0byBzZWdyZWdhdGUgdGhlIHBhdGhzIGJldHRlciB3YXkgdXNpbmcgcmVndWxhciBleHByZXNzaW9ucyB3aGVyZXZlciBhcHBsaWNhYmxlLlxuLy8gKE5vdCBzZWdyZWdhdGluZyByaWdodCBhd2F5IGJlY2F1c2UgbW9yZSBwYXRocyB0byBiZSBhZGRlZCBpbiB0aGUgTk9fUFJPWFkgbGlzdClcbmNvbnN0IE5PX1BST1hZID0gW1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi8oPyEuKi8pJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL2N1cnJlbnRfYWN0aXZpdHknKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9kZXZpY2UvY3VycmVudF9wYWNrYWdlJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL2Rpc3BsYXlfZGVuc2l0eScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9pc19rZXlib2FyZF9zaG93bicpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9zeXN0ZW1fYmFycycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9zeXN0ZW1fdGltZScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3NldHRpbmdzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0cycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvaW1lL1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9uZXR3b3JrX2Nvbm5lY3Rpb24nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RpbWVvdXRzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy91cmwnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vYXBwL2JhY2tncm91bmQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vYXBwL2Nsb3NlJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2FwcC9sYXVuY2gnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vYXBwL3Jlc2V0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2FwcC9zdHJpbmdzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2NvbXBhcmVfaW1hZ2VzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9hY3RpdmF0ZV9hcHAnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL2FwcF9pbnN0YWxsZWQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL2FwcF9zdGF0ZScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9kZXZpY2UvZmluZ2VyX3ByaW50JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9nZXRfY2xpcGJvYXJkJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9pbnN0YWxsX2FwcCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9kZXZpY2UvaXNfbG9ja2VkJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9sb2NrJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9wdWxsX2ZpbGUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL3B1bGxfZm9sZGVyJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9wdXNoX2ZpbGUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL3JlbW92ZV9hcHAnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL3N0YXJ0X2FjdGl2aXR5JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS90ZXJtaW5hdGVfYXBwJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS91bmxvY2snKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZ2V0UGVyZm9ybWFuY2VEYXRhJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3BlcmZvcm1hbmNlRGF0YS90eXBlcycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9zZXR0aW5ncycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9leGVjdXRlX2RyaXZlcicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9zdGFydF9yZWNvcmRpbmdfc2NyZWVuJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3N0b3BfcmVjb3JkaW5nX3NjcmVlbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZS9hc3luYycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUvc3luYycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGVfYXN5bmMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9pbWUvW14vXSsnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2NhdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RpbWVvdXRzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdXJsJyldLFxuXG4gIC8vIE1KU09OV1AgY29tbWFuZHNcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nL3R5cGVzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nJyldLFxuXG4gIC8vIFczQyBjb21tYW5kc1xuICAvLyBGb3IgU2VsZW5pdW0gdjQgKFczQyBkb2VzIG5vdCBoYXZlIHRoaXMgcm91dGUpXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZy90eXBlcycpXSxcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2UvbG9nJyldLFxuXTtcblxuLy8gVGhpcyBpcyBhIHNldCBvZiBtZXRob2RzIGFuZCBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gQ2hyb21lZHJpdmVyLlxuY29uc3QgQ0hST01FX05PX1BST1hZID0gW1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvcmVjdCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvb3JpZW50YXRpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvb3JpZW50YXRpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90b3VjaC9tdWx0aS9wZXJmb3JtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvcGVyZm9ybScpXSxcblxuICAvLyB0aGlzIGlzIG5lZWRlZCB0byBtYWtlIHRoZSBtb2JpbGU6IGNvbW1hbmRzIHdvcmtpbmcgaW4gd2ViIGNvbnRleHRcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUkJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZS9zeW5jJyldLFxuXG4gIC8vIE1KU09OV1AgY29tbWFuZHNcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nL3R5cGVzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nJyldLFxuXG4gIC8vIFczQyBjb21tYW5kc1xuICAvLyBGb3IgU2VsZW5pdW0gdjQgKFczQyBkb2VzIG5vdCBoYXZlIHRoaXMgcm91dGUpXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZy90eXBlcycpXSxcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2UvbG9nJyldLFxuXTtcblxuXG5jb25zdCBBUEtfRVhUID0gJy5hcGsnO1xuY29uc3QgQUFCX0VYVCA9ICcuYWFiJztcbmNvbnN0IFNVUFBPUlRFRF9FWFRFTlNJT05TID0gW0FQS19FWFQsIEFBQl9FWFRdO1xuXG5jbGFzcyBFc3ByZXNzb0RyaXZlciBleHRlbmRzIEJhc2VEcml2ZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9LCBzaG91bGRWYWxpZGF0ZUNhcHMgPSB0cnVlKSB7XG4gICAgLy8gYHNoZWxsYCBvdmVyd3JpdGVzIGFkYi5zaGVsbCwgc28gcmVtb3ZlXG4gICAgZGVsZXRlIG9wdHMuc2hlbGw7XG5cbiAgICBzdXBlcihvcHRzLCBzaG91bGRWYWxpZGF0ZUNhcHMpO1xuICAgIHRoaXMubG9jYXRvclN0cmF0ZWdpZXMgPSBbXG4gICAgICAnaWQnLFxuICAgICAgJ2NsYXNzIG5hbWUnLFxuICAgICAgJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIF07XG4gICAgdGhpcy5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSBkZXNpcmVkQ2FwQ29uc3RyYWludHM7XG4gICAgdGhpcy5lc3ByZXNzbyA9IG51bGw7XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuZGVmYXVsdElNRSA9IG51bGw7XG4gICAgdGhpcy5qd3BQcm94eUF2b2lkID0gTk9fUFJPWFk7XG5cbiAgICB0aGlzLmFwa1N0cmluZ3MgPSB7fTsgLy8gbWFwIG9mIGxhbmd1YWdlIC0+IHN0cmluZ3Mgb2JqXG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncyh7fSwgdGhpcy5vblNldHRpbmdzVXBkYXRlLmJpbmQodGhpcykpO1xuXG4gICAgdGhpcy5jaHJvbWVkcml2ZXIgPSBudWxsO1xuICAgIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnMgPSB7fTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb24gKC4uLmFyZ3MpIHtcbiAgICB0cnkge1xuICAgICAgLy8gVE9ETyBoYW5kbGUgb3RoZXJTZXNzaW9uRGF0YSBmb3IgbXVsdGlwbGUgc2Vzc2lvbnNcbiAgICAgIGxldCBbc2Vzc2lvbklkLCBjYXBzXSA9IGF3YWl0IHN1cGVyLmNyZWF0ZVNlc3Npb24oLi4uYXJncyk7XG5cbiAgICAgIGxldCBzZXJ2ZXJEZXRhaWxzID0ge1xuICAgICAgICBwbGF0Zm9ybTogJ0xJTlVYJyxcbiAgICAgICAgd2ViU3RvcmFnZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB0YWtlc1NjcmVlbnNob3Q6IHRydWUsXG4gICAgICAgIGphdmFzY3JpcHRFbmFibGVkOiB0cnVlLFxuICAgICAgICBkYXRhYmFzZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBuZXR3b3JrQ29ubmVjdGlvbkVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGxvY2F0aW9uQ29udGV4dEVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB3YXJuaW5nczoge30sXG4gICAgICAgIGRlc2lyZWQ6IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY2FwcylcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY2FwcyA9IE9iamVjdC5hc3NpZ24oc2VydmVyRGV0YWlscywgdGhpcy5jYXBzKTtcblxuICAgICAgdGhpcy5jdXJDb250ZXh0ID0gdGhpcy5kZWZhdWx0Q29udGV4dE5hbWUoKTtcblxuICAgICAgbGV0IGRlZmF1bHRPcHRzID0ge1xuICAgICAgICBmdWxsUmVzZXQ6IGZhbHNlLFxuICAgICAgICBhdXRvTGF1bmNoOiB0cnVlLFxuICAgICAgICBhZGJQb3J0OiBERUZBVUxUX0FEQl9QT1JULFxuICAgICAgICBhbmRyb2lkSW5zdGFsbFRpbWVvdXQ6IDkwMDAwXG4gICAgICB9O1xuICAgICAgXy5kZWZhdWx0cyh0aGlzLm9wdHMsIGRlZmF1bHRPcHRzKTtcblxuICAgICAgaWYgKHRoaXMuaXNDaHJvbWVTZXNzaW9uKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgJ2Jyb3dzZXJOYW1lJyBjYXBhYmlsaXR5IHdpbGwgYmUgaWdub3JlZGApO1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYENocm9tZSBicm93c2VyIGNhbm5vdCBiZSBydW4gaW4gRXNwcmVzc28gc2Vzc2lvbnMgYmVjYXVzZSBFc3ByZXNzbyBhdXRvbWF0aW9uIGRvZXNuJ3QgYCArXG4gICAgICAgICAgICAgIGBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIENocm9tZWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENocm9tZSBicm93c2VyIHNlc3Npb25zIGNhbm5vdCBiZSBydW4gaW4gRXNwcmVzc28gYmVjYXVzZSBFc3ByZXNzbyBgICtcbiAgICAgICAgICAgIGBhdXRvbWF0aW9uIGRvZXNuJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyBDaHJvbWVgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLnJlYm9vdCkge1xuICAgICAgICB0aGlzLnNldEF2ZEZyb21DYXBhYmlsaXRpZXMoY2Fwcyk7XG4gICAgICAgIHRoaXMuYWRkV2lwZURhdGFUb0F2ZEFyZ3MoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5vcHRzLnN5c3RlbVBvcnQgPSB0aGlzLm9wdHMuc3lzdGVtUG9ydFxuICAgICAgICB8fCBhd2FpdCBmaW5kQVBvcnROb3RJblVzZShTWVNURU1fUE9SVF9SQU5HRVswXSwgU1lTVEVNX1BPUlRfUkFOR0VbMV0pO1xuICAgICAgdGhpcy5vcHRzLmFkYlBvcnQgPSB0aGlzLm9wdHMuYWRiUG9ydCB8fCBERUZBVUxUX0FEQl9QT1JUO1xuICAgICAgLy8gZ2V0IGRldmljZSB1ZGlkIGZvciB0aGlzIHNlc3Npb25cbiAgICAgIGNvbnN0IHt1ZGlkLCBlbVBvcnR9ID0gYXdhaXQgaGVscGVycy5nZXREZXZpY2VJbmZvRnJvbUNhcHModGhpcy5vcHRzKTtcbiAgICAgIHRoaXMub3B0cy51ZGlkID0gdWRpZDtcbiAgICAgIHRoaXMub3B0cy5lbVBvcnQgPSBlbVBvcnQ7XG4gICAgICAvLyBub3cgdGhhdCB3ZSBrbm93IG91ciBqYXZhIHZlcnNpb24gYW5kIGRldmljZSBpbmZvLCB3ZSBjYW4gY3JlYXRlIG91clxuICAgICAgLy8gQURCIGluc3RhbmNlXG4gICAgICB0aGlzLmFkYiA9IGF3YWl0IGFuZHJvaWRIZWxwZXJzLmNyZWF0ZUFEQih0aGlzLm9wdHMpO1xuXG4gICAgICBpZiAodGhpcy5vcHRzLmFwcCkge1xuICAgICAgICAvLyBmaW5kIGFuZCBjb3B5LCBvciBkb3dubG9hZCBhbmQgdW56aXAgYW4gYXBwIHVybCBvciBwYXRoXG4gICAgICAgIHRoaXMub3B0cy5hcHAgPSBhd2FpdCB0aGlzLmhlbHBlcnMuY29uZmlndXJlQXBwKHRoaXMub3B0cy5hcHAsIHtcbiAgICAgICAgICBvblBvc3RQcm9jZXNzOiB0aGlzLm9uUG9zdENvbmZpZ3VyZUFwcC5iaW5kKHRoaXMpLFxuICAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnM6IFNVUFBPUlRFRF9FWFRFTlNJT05TXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFwcE9uRGV2aWNlKSB7XG4gICAgICAgIC8vIHRoZSBhcHAgaXNuJ3QgYW4gYWN0dWFsIGFwcCBmaWxlIGJ1dCByYXRoZXIgc29tZXRoaW5nIHdlIHdhbnQgdG9cbiAgICAgICAgLy8gYXNzdW1lIGlzIG9uIHRoZSBkZXZpY2UgYW5kIGp1c3QgbGF1bmNoIHZpYSB0aGUgYXBwUGFja2FnZVxuICAgICAgICB0aGlzLmxvZy5pbmZvKGBBcHAgZmlsZSB3YXMgbm90IGxpc3RlZCwgaW5zdGVhZCB3ZSdyZSBnb2luZyB0byBydW4gYCArXG4gICAgICAgICAgICBgJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0gZGlyZWN0bHkgb24gdGhlIGRldmljZWApO1xuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuYWRiLmlzQXBwSW5zdGFsbGVkKHRoaXMub3B0cy5hcHBQYWNrYWdlKSkge1xuICAgICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBmaW5kIHRoZSBwYWNrYWdlICcke3RoaXMub3B0cy5hcHBQYWNrYWdlfScgYCArXG4gICAgICAgICAgICBgaW5zdGFsbGVkIG9uIHRoZSBkZXZpY2VgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0RXNwcmVzc29TZXNzaW9uKCk7XG4gICAgICByZXR1cm4gW3Nlc3Npb25JZCwgY2Fwc107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKCk7XG4gICAgICBlLm1lc3NhZ2UgKz0gYCR7Xy5lbmRzV2l0aChlLm1lc3NhZ2UsICcuJykgPyAnJyA6ICcuJ30gQ2hlY2sgYCArXG4gICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS1lc3ByZXNzby1kcml2ZXIjdHJvdWJsZXNob290aW5nICcgK1xuICAgICAgICAncmVnYXJkaW5nIGFkdmFuY2VkIHNlc3Npb24gc3RhcnR1cCB0cm91Ymxlc2hvb3RpbmcuJztcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlLCBlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVyciA9IG5ldyBlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcihlLm1lc3NhZ2UpO1xuICAgICAgZXJyLnN0YWNrID0gZS5zdGFjaztcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW56aXAgdGhlIGdpdmVuIGFwcCBwYXRoIGFuZCByZXR1cm4gdGhlIGZpcnN0IHBhY2thZ2UgdGhhdCBoYXMgU1VQUE9SVEVEX0VYVEVOU0lPTlNcbiAgICogaW4gdGhlIGFyY2hpdmVkIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBQYXRoIFRoZSBwYXRoIHRvIGFwcCBmaWxlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1bnMgdGhlIHBhdGggdG8gYW4gdW56aXBwZWQgYXBwIGZpbGUgcGF0aC5cbiAgICogQHRocm93cyBSYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIHppcCBkaWQgbm90IGhhdmUgYW55IFNVUFBPUlRFRF9FWFRFTlNJT05TIHBhY2thZ2VzLlxuICAgKi9cbiAgYXN5bmMgdW56aXBBcHAgKGFwcFBhdGgpIHtcbiAgICBjb25zdCB1c2VTeXN0ZW1VbnppcEVudiA9IHByb2Nlc3MuZW52LkFQUElVTV9QUkVGRVJfU1lTVEVNX1VOWklQO1xuICAgIGNvbnN0IHVzZVN5c3RlbVVuemlwID0gXy5pc0VtcHR5KHVzZVN5c3RlbVVuemlwRW52KVxuICAgICAgfHwgIVsnMCcsICdmYWxzZSddLmluY2x1ZGVzKF8udG9Mb3dlcih1c2VTeXN0ZW1VbnppcEVudikpO1xuICAgIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKGFwcFBhdGgsIHRtcFJvb3QsIHt1c2VTeXN0ZW1VbnppcH0pO1xuXG4gICAgY29uc3QgZ2xvYlBhdHRlcm4gPSBgKiovKi4rKCR7U1VQUE9SVEVEX0VYVEVOU0lPTlMubWFwKChleHQpID0+IGV4dC5yZXBsYWNlKC9eXFwuLywgJycpKS5qb2luKCd8Jyl9KWA7XG4gICAgY29uc3Qgc29ydGVkQnVuZGxlSXRlbXMgPSAoYXdhaXQgZnMuZ2xvYihnbG9iUGF0dGVybiwge1xuICAgICAgY3dkOiB0bXBSb290LFxuICAgICAgc3RyaWN0OiBmYWxzZSxcbiAgICB9KSkuc29ydCgoYSwgYikgPT4gYS5zcGxpdChwYXRoLnNlcCkubGVuZ3RoIC0gYi5zcGxpdChwYXRoLnNlcCkubGVuZ3RoKTtcbiAgICBpZiAoc29ydGVkQnVuZGxlSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBubyBleHBlY3RlZCBwYWNrYWdlcyBpbiB0aGUgemlwXG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGAke3RoaXMub3B0cy5hcHB9IGRpZCBub3QgaGF2ZSBhbnkgb2YgJyR7U1VQUE9SVEVEX0VYVEVOU0lPTlMuam9pbignLCAnKX0nIGAgK1xuICAgICAgICBgZXh0ZW5zaW9uIHBhY2thZ2VzLiBQbGVhc2UgbWFrZSBzdXJlIHRoZSBwcm92aWRlZCAuemlwIGFyY2hpdmUgY29udGFpbnMgYXQgbGVhc3Qgb25lIHZhbGlkIGFwcGxpY2F0aW9uIHBhY2thZ2UuYCk7XG4gICAgfVxuICAgIGNvbnN0IHVuemlwcGVkQXBwUGF0aCA9IHBhdGguam9pbih0bXBSb290LCBfLmZpcnN0KHNvcnRlZEJ1bmRsZUl0ZW1zKSk7XG4gICAgdGhpcy5sb2cuZGVidWcoYCcke3VuemlwcGVkQXBwUGF0aH0nIGlzIHRoZSB1bnppcHBlZCBmaWxlIGZyb20gJyR7YXBwUGF0aH0nYCk7XG4gICAgcmV0dXJuIHVuemlwcGVkQXBwUGF0aDtcbiAgfVxuXG4gIGFzeW5jIG9uUG9zdENvbmZpZ3VyZUFwcCAoe2NhY2hlZEFwcEluZm8sIGlzVXJsLCBhcHBQYXRofSkge1xuICAgIGNvbnN0IHByZXNpZ25BcHAgPSBhc3luYyAoYXBwTG9jYXRpb24pID0+IHtcbiAgICAgIGlmICh0aGlzLm9wdHMubm9TaWduKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1NraXBwaW5nIGFwcGxpY2F0aW9uIHNpZ25pbmcgYmVjYXVzZSBub1NpZ24gY2FwYWJpbGl0eSBpcyBzZXQgdG8gdHJ1ZS4gJyArXG4gICAgICAgICAgJ0hhdmluZyB0aGUgYXBwbGljYXRpb24gdW5kZXIgdGVzdCB3aXRoIGltcHJvcGVyIHNpZ25hdHVyZS9ub24tc2lnbmVkIHdpbGwgY2F1c2UgJyArXG4gICAgICAgICAgJ0VzcHJlc3NvIGF1dG9tYXRpb24gc3RhcnR1cCBmYWlsdXJlLicpO1xuICAgICAgfSBlbHNlIGlmICghYXdhaXQgdGhpcy5hZGIuY2hlY2tBcGtDZXJ0KGFwcExvY2F0aW9uLCB0aGlzLm9wdHMuYXBwUGFja2FnZSkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2lnbihhcHBMb2NhdGlvbiwgdGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYXNBcGtFeHQgPSAoYXBwUGF0aCkgPT4gXy5lbmRzV2l0aChfLnRvTG93ZXIoYXBwUGF0aCksIEFQS19FWFQpO1xuICAgIGNvbnN0IGhhc0FhYkV4dCA9IChhcHBQYXRoKSA9PiBfLmVuZHNXaXRoKF8udG9Mb3dlcihhcHBQYXRoKSwgQUFCX0VYVCk7XG4gICAgY29uc3QgZXh0cmFjdFVuaXZlcnNhbEFwayA9IGFzeW5jIChzaG91bGRFeHRyYWN0LCBhcHBQYXRoKSA9PlxuICAgICAgc2hvdWxkRXh0cmFjdCA/IGFwcFBhdGggOiBhd2FpdCB0aGlzLmFkYi5leHRyYWN0VW5pdmVyc2FsQXBrKGFwcFBhdGgpO1xuXG4gICAgbGV0IHBhdGhJbkNhY2hlID0gbnVsbDtcbiAgICBsZXQgaXNSZXN1bHRBcHBQYXRoQWxyZWFkeUNhY2hlZCA9IGZhbHNlO1xuICAgIGlmIChfLmlzUGxhaW5PYmplY3QoY2FjaGVkQXBwSW5mbykpIHtcbiAgICAgIGNvbnN0IHBhY2thZ2VIYXNoID0gYXdhaXQgZnMuaGFzaChhcHBQYXRoKTtcbiAgICAgIGlmIChwYWNrYWdlSGFzaCA9PT0gY2FjaGVkQXBwSW5mby5wYWNrYWdlSGFzaCAmJiBhd2FpdCBmcy5leGlzdHMoY2FjaGVkQXBwSW5mby5mdWxsUGF0aCkpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgVXNpbmcgJyR7Y2FjaGVkQXBwSW5mby5mdWxsUGF0aH0nIHdoaWNoIGlzIGNhY2hlZCBmcm9tICcke2FwcFBhdGh9J2ApO1xuICAgICAgICBpc1Jlc3VsdEFwcFBhdGhBbHJlYWR5Q2FjaGVkID0gdHJ1ZTtcbiAgICAgICAgcGF0aEluQ2FjaGUgPSBjYWNoZWRBcHBJbmZvLmZ1bGxQYXRoO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFwcFBhdGggY2FuIGJlIC56aXAsIC5hcGsgb3IgLmFhYlxuICAgIGNvbnN0IGlzQXBrID0gaGFzQXBrRXh0KGFwcFBhdGgpO1xuICAgIC8vIE9ubHkgbG9jYWwgLmFwayBmaWxlcyB0aGF0IGFyZSBhdmFpbGFibGUgaW4tcGxhY2Ugc2hvdWxkIG5vdCBiZSBjYWNoZWRcbiAgICBjb25zdCBzaG91bGRSZXN1bHRBcHBQYXRoQmVDYWNoZWQgPSAhaXNBcGsgfHwgKGlzQXBrICYmIGlzVXJsKTtcblxuICAgIGlmICghaXNSZXN1bHRBcHBQYXRoQWxyZWFkeUNhY2hlZCkge1xuICAgICAgaWYgKHNob3VsZFJlc3VsdEFwcFBhdGhCZUNhY2hlZCkge1xuICAgICAgICAvLyAuemlwLCAuYWFiIG9yIGRvd25sb2FkZWQgLmFwa1xuXG4gICAgICAgIGxldCB1bnppcHBlZEFwcFBhdGg7XG4gICAgICAgIGxldCBpc1VuemlwcGVkQXBrID0gZmFsc2U7XG4gICAgICAgIGlmICghKGhhc0Fwa0V4dChhcHBQYXRoKSB8fCBoYXNBYWJFeHQoYXBwUGF0aCkpKSB7XG4gICAgICAgICAgdW56aXBwZWRBcHBQYXRoID0gYXdhaXQgdGhpcy51bnppcEFwcChhcHBQYXRoKTtcbiAgICAgICAgICBpc1VuemlwcGVkQXBrID0gaGFzQXBrRXh0KHVuemlwcGVkQXBwUGF0aCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1bnppcHBlZEFwcFBhdGggb3IgYXBwUGF0aCBoYXMgU1VQUE9SVEVEX0VYVEVOU0lPTlMuXG4gICAgICAgIHBhdGhJbkNhY2hlID0gdW56aXBwZWRBcHBQYXRoXG4gICAgICAgICAgPyBhd2FpdCBleHRyYWN0VW5pdmVyc2FsQXBrKGlzVW56aXBwZWRBcGssIHVuemlwcGVkQXBwUGF0aClcbiAgICAgICAgICA6IGF3YWl0IGV4dHJhY3RVbml2ZXJzYWxBcGsoaXNBcGssIGFwcFBhdGgpO1xuXG4gICAgICAgIGlmICghaXNBcGsgJiYgaXNVcmwpIHtcbiAgICAgICAgICAvLyBDbGVhbiB1cCB0aGUgdGVtcG9yYXJpbHkgZG93bmxvYWRlZCAuYWFiIG9yIC56aXAgcGFja2FnZVxuICAgICAgICAgIGF3YWl0IGZzLnJpbXJhZihhcHBQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzQWFiRXh0KHVuemlwcGVkQXBwUGF0aCkpIHtcbiAgICAgICAgICAvLyBDbGVhbnVwIHRoZSBsb2NhbCB1bnppcHBlZCAuYWFiIGZpbGVcbiAgICAgICAgICBhd2FpdCBmcy5yaW1yYWYodW56aXBwZWRBcHBQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBwcmVzaWduQXBwKHBhdGhJbkNhY2hlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNBcGspIHtcbiAgICAgICAgLy8gSXQgaXMgcHJvYmFibHkgbm90IHRoZSBiZXN0IGlkZWEgdG8gbW9kaWZ5IHRoZSBwcm92aWRlZCBhcHAgaW4tcGxhY2UsXG4gICAgICAgIC8vIGJ1dCB0aGlzIGlzIGhvdyBpdCB3YXMgYWx3YXlzIHdvcmtpbmdcbiAgICAgICAgYXdhaXQgcHJlc2lnbkFwcChhcHBQYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNob3VsZFJlc3VsdEFwcFBhdGhCZUNhY2hlZCA/IHthcHBQYXRoOiBwYXRoSW5DYWNoZX0gOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBkcml2ZXJEYXRhICgpIHtcbiAgICAvLyBUT0RPIGZpbGxlIG91dCByZXNvdXJjZSBpbmZvIGhlcmVcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBpc0VtdWxhdG9yICgpIHtcbiAgICByZXR1cm4gaGVscGVycy5pc0VtdWxhdG9yKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICB9XG5cbiAgLy8gVE9ETyB0aGlzIG1ldGhvZCBpcyBkdXBsaWNhdGVkIGZyb20gdWlhdXRvbWF0b3IyLWRyaXZlcjsgY29uc29saWRhdGVcbiAgc2V0QXZkRnJvbUNhcGFiaWxpdGllcyAoY2Fwcykge1xuICAgIGlmICh0aGlzLm9wdHMuYXZkKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdhdmQgbmFtZSBkZWZpbmVkLCBpZ25vcmluZyBkZXZpY2UgbmFtZSBhbmQgcGxhdGZvcm0gdmVyc2lvbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNhcHMuZGV2aWNlTmFtZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdhdmQgb3IgZGV2aWNlTmFtZSBzaG91bGQgYmUgc3BlY2lmaWVkIHdoZW4gcmVib290IG9wdGlvbiBpcyBlbmFibGVzJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWNhcHMucGxhdGZvcm1WZXJzaW9uKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2F2ZCBvciBwbGF0Zm9ybVZlcnNpb24gc2hvdWxkIGJlIHNwZWNpZmllZCB3aGVuIHJlYm9vdCBvcHRpb24gaXMgZW5hYmxlZCcpO1xuICAgICAgfVxuICAgICAgbGV0IGF2ZERldmljZSA9IGNhcHMuZGV2aWNlTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOV8uXS9nLCAnLScpO1xuICAgICAgdGhpcy5vcHRzLmF2ZCA9IGAke2F2ZERldmljZX1fXyR7Y2Fwcy5wbGF0Zm9ybVZlcnNpb259YDtcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPIHRoaXMgbWV0aG9kIGlzIGR1cGxpY2F0ZWQgZnJvbSB1aWF1dG9tYXRvcjItZHJpdmVyOyBjb25zb2xpZGF0ZVxuICBhZGRXaXBlRGF0YVRvQXZkQXJncyAoKSB7XG4gICAgaWYgKCF0aGlzLm9wdHMuYXZkQXJncykge1xuICAgICAgdGhpcy5vcHRzLmF2ZEFyZ3MgPSAnLXdpcGUtZGF0YSc7XG4gICAgfSBlbHNlIGlmICghdGhpcy5vcHRzLmF2ZEFyZ3MudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnLXdpcGUtZGF0YScpKSB7XG4gICAgICB0aGlzLm9wdHMuYXZkQXJncyArPSAnIC13aXBlLWRhdGEnO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE8gbXVjaCBvZiB0aGlzIGxvZ2ljIGlzIGR1cGxpY2F0ZWQgZnJvbSB1aWF1dG9tYXRvcjJcbiAgYXN5bmMgc3RhcnRFc3ByZXNzb1Nlc3Npb24gKCkge1xuICAgIGNvbnN0IHttYW5pZmVzdFBheWxvYWR9ID0gYXdhaXQgZ2V0UGFja2FnZUluZm8oKTtcbiAgICB0aGlzLmxvZy5pbmZvKGBFc3ByZXNzb0RyaXZlciB2ZXJzaW9uOiAke21hbmlmZXN0UGF5bG9hZC52ZXJzaW9ufWApO1xuXG4gICAgLy8gUmVhZCBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS1hbmRyb2lkLWRyaXZlci9wdWxsLzQ2MSB3aGF0IGhhcHBlbnMgaWYgdGhlciBpcyBubyBzZXRIaWRkZW5BcGlQb2xpY3kgZm9yIEFuZHJvaWQgUCtcbiAgICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA+PSAyOCkgeyAvLyBBbmRyb2lkIFBcbiAgICAgIHRoaXMubG9nLndhcm4oJ1JlbGF4aW5nIGhpZGRlbiBhcGkgcG9saWN5Jyk7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zZXRIaWRkZW5BcGlQb2xpY3koJzEnLCAhIXRoaXMub3B0cy5pZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvcik7XG4gICAgfVxuXG4gICAgLy8gZ2V0IGFwcFBhY2thZ2UgZXQgYWwgZnJvbSBtYW5pZmVzdCBpZiBuZWNlc3NhcnlcbiAgICBsZXQgYXBwSW5mbyA9IGF3YWl0IGhlbHBlcnMuZ2V0TGF1bmNoSW5mbyh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICBpZiAoYXBwSW5mbykge1xuICAgICAgLy8gYW5kIGdldCBpdCBvbnRvIG91ciAnb3B0cycgb2JqZWN0IHNvIHdlIHVzZSBpdCBmcm9tIG5vdyBvblxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdHMsIGFwcEluZm8pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcHBJbmZvID0gdGhpcy5vcHRzO1xuICAgIH1cblxuICAgIC8vIHN0YXJ0IGFuIGF2ZCwgc2V0IHRoZSBsYW5ndWFnZS9sb2NhbGUsIHBpY2sgYW4gZW11bGF0b3IsIGV0Yy4uLlxuICAgIC8vIFRPRE8gd2l0aCBtdWx0aXBsZSBkZXZpY2VzIHdlJ2xsIG5lZWQgdG8gcGFyYW1ldGVyaXplIHRoaXNcbiAgICBhd2FpdCBoZWxwZXJzLmluaXREZXZpY2UodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0tZXNwcmVzc28tZHJpdmVyL2lzc3Vlcy83MlxuICAgIGlmIChhd2FpdCB0aGlzLmFkYi5pc0FuaW1hdGlvbk9uKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFuaW1hdGlvblN0YXRlKGZhbHNlKTtcbiAgICAgICAgdGhpcy53YXNBbmltYXRpb25FbmFibGVkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gdHVybiBvZmYgYW5pbWF0aW9uczogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzZXQgYWN0dWFsIGRldmljZSBuYW1lLCB1ZGlkXG4gICAgdGhpcy5jYXBzLmRldmljZU5hbWUgPSB0aGlzLmFkYi5jdXJEZXZpY2VJZDtcbiAgICB0aGlzLmNhcHMuZGV2aWNlVURJRCA9IHRoaXMub3B0cy51ZGlkO1xuXG4gICAgLy8gc2V0IHVwIHRoZSBtb2RpZmllZCBlc3ByZXNzbyBzZXJ2ZXIgZXRjXG4gICAgdGhpcy5pbml0RXNwcmVzc29TZXJ2ZXIoKTtcbiAgICAvLyBGdXJ0aGVyIHByZXBhcmUgdGhlIGRldmljZSBieSBmb3J3YXJkaW5nIHRoZSBlc3ByZXNzbyBwb3J0XG4gICAgdGhpcy5sb2cuZGVidWcoYEZvcndhcmRpbmcgRXNwcmVzc28gU2VydmVyIHBvcnQgJHtERVZJQ0VfUE9SVH0gdG8gJHt0aGlzLm9wdHMuc3lzdGVtUG9ydH1gKTtcbiAgICBhd2FpdCB0aGlzLmFkYi5mb3J3YXJkUG9ydCh0aGlzLm9wdHMuc3lzdGVtUG9ydCwgREVWSUNFX1BPUlQpO1xuXG4gICAgaWYgKCF0aGlzLm9wdHMuc2tpcFVubG9jaykge1xuICAgICAgLy8gdW5sb2NrIHRoZSBkZXZpY2UgdG8gcHJlcGFyZSBpdCBmb3IgdGVzdGluZ1xuICAgICAgYXdhaXQgaGVscGVycy51bmxvY2sodGhpcywgdGhpcy5hZGIsIHRoaXMuY2Fwcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGAnc2tpcFVubG9jaycgY2FwYWJpbGl0eSBzZXQsIHNvIHNraXBwaW5nIGRldmljZSB1bmxvY2tgKTtcbiAgICB9XG5cbiAgICAvLyBzZXQgdXAgYXBwIHVuZGVyIHRlc3RcbiAgICAvLyBwcmVwYXJlIG91ciBhY3R1YWwgQVVULCBnZXQgaXQgb24gdGhlIGRldmljZSwgZXRjLi4uXG4gICAgYXdhaXQgdGhpcy5pbml0QVVUKCk7XG5cbiAgICAvL0FkZGluZyBBVVQgcGFja2FnZSBuYW1lIGluIHRoZSBjYXBhYmlsaXRpZXMgaWYgcGFja2FnZSBuYW1lIG5vdCBleGlzdCBpbiBjYXBzXG4gICAgaWYgKCF0aGlzLmNhcHMuYXBwUGFja2FnZSkge1xuICAgICAgdGhpcy5jYXBzLmFwcFBhY2thZ2UgPSBhcHBJbmZvLmFwcFBhY2thZ2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5jYXBzLmFwcFdhaXRQYWNrYWdlKSB7XG4gICAgICB0aGlzLmNhcHMuYXBwV2FpdFBhY2thZ2UgPSBhcHBJbmZvLmFwcFdhaXRQYWNrYWdlIHx8IGFwcEluZm8uYXBwUGFja2FnZSB8fCB0aGlzLmNhcHMuYXBwUGFja2FnZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2Fwcy5hcHBBY3Rpdml0eSkge1xuICAgICAgdGhpcy5jYXBzLmFwcEFjdGl2aXR5ID0gcXVhbGlmeUFjdGl2aXR5TmFtZSh0aGlzLmNhcHMuYXBwQWN0aXZpdHksIHRoaXMuY2Fwcy5hcHBQYWNrYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXBzLmFwcEFjdGl2aXR5ID0gcXVhbGlmeUFjdGl2aXR5TmFtZShhcHBJbmZvLmFwcEFjdGl2aXR5LCB0aGlzLmNhcHMuYXBwUGFja2FnZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNhcHMuYXBwV2FpdEFjdGl2aXR5KSB7XG4gICAgICB0aGlzLmNhcHMuYXBwV2FpdEFjdGl2aXR5ID0gcXVhbGlmeUFjdGl2aXR5TmFtZSh0aGlzLmNhcHMuYXBwV2FpdEFjdGl2aXR5LCB0aGlzLmNhcHMuYXBwV2FpdFBhY2thZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhcHMuYXBwV2FpdEFjdGl2aXR5ID0gcXVhbGlmeUFjdGl2aXR5TmFtZShhcHBJbmZvLmFwcFdhaXRBY3Rpdml0eSB8fCBhcHBJbmZvLmFwcEFjdGl2aXR5IHx8IHRoaXMuY2Fwcy5hcHBBY3Rpdml0eSxcbiAgICAgICAgdGhpcy5jYXBzLmFwcFdhaXRQYWNrYWdlKTtcbiAgICB9XG5cbiAgICAvLyBsYXVuY2ggZXNwcmVzc28gYW5kIHdhaXQgdGlsbCBpdHMgb25saW5lIGFuZCB3ZSBoYXZlIGEgc2Vzc2lvblxuICAgIGF3YWl0IHRoaXMuZXNwcmVzc28uc3RhcnRTZXNzaW9uKHRoaXMuY2Fwcyk7XG4gICAgaWYgKHRoaXMuY2Fwcy5hdXRvTGF1bmNoID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgTm90IHdhaXRpbmcgZm9yIHRoZSBhcHBsaWNhdGlvbiBhY3Rpdml0eSB0byBzdGFydCBiZWNhdXNlICdhdXRvTGF1bmNoJyBpcyBkaXNhYmxlZGApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yQWN0aXZpdHkodGhpcy5jYXBzLmFwcFdhaXRQYWNrYWdlLCB0aGlzLmNhcHMuYXBwV2FpdEFjdGl2aXR5LCB0aGlzLm9wdHMuYXBwV2FpdER1cmF0aW9uKTtcbiAgICB9XG4gICAgLy8gaWYgd2Ugd2FudCB0byBpbW1lZGlhdGVseSBnZXQgaW50byBhIHdlYnZpZXcsIHNldCBvdXIgY29udGV4dFxuICAgIC8vIGFwcHJvcHJpYXRlbHlcbiAgICBpZiAodGhpcy5vcHRzLmF1dG9XZWJ2aWV3KSB7XG4gICAgICBhd2FpdCB0aGlzLmluaXRXZWJ2aWV3KCk7XG4gICAgfVxuXG4gICAgLy8gbm93IHRoYXQgZXZlcnl0aGluZyBoYXMgc3RhcnRlZCBzdWNjZXNzZnVsbHksIHR1cm4gb24gcHJveHlpbmcgc28gYWxsXG4gICAgLy8gc3Vic2VxdWVudCBzZXNzaW9uIHJlcXVlc3RzIGdvIHN0cmFpZ2h0IHRvL2Zyb20gZXNwcmVzc29cbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gdHJ1ZTtcblxuICAgIGF3YWl0IHRoaXMuYWRkRGV2aWNlSW5mb1RvQ2FwcygpO1xuICB9XG5cbiAgYXN5bmMgaW5pdFdlYnZpZXcgKCkge1xuICAgIGNvbnN0IHZpZXdOYW1lID0gYW5kcm9pZENvbW1hbmRzLmRlZmF1bHRXZWJ2aWV3TmFtZS5jYWxsKHRoaXMpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSB0aGlzLm9wdHMuYXV0b1dlYnZpZXdUaW1lb3V0IHx8IDIwMDA7XG4gICAgdGhpcy5sb2cuaW5mbyhgU2V0dGluZyB3ZWJ2aWV3IHRvIGNvbnRleHQgJyR7dmlld05hbWV9JyB3aXRoIHRpbWVvdXQgJHt0aW1lb3V0fW1zYCk7XG4gICAgYXdhaXQgcmV0cnlJbnRlcnZhbCh0aW1lb3V0IC8gNTAwLCA1MDAsIHRoaXMuc2V0Q29udGV4dC5iaW5kKHRoaXMpLCB2aWV3TmFtZSk7XG4gIH1cblxuICBhc3luYyBhZGREZXZpY2VJbmZvVG9DYXBzICgpIHtcbiAgICBjb25zdCB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgcGxhdGZvcm1WZXJzaW9uLFxuICAgICAgbWFudWZhY3R1cmVyLFxuICAgICAgbW9kZWwsXG4gICAgICByZWFsRGlzcGxheVNpemUsXG4gICAgICBkaXNwbGF5RGVuc2l0eSxcbiAgICB9ID0gYXdhaXQgdGhpcy5tb2JpbGVHZXREZXZpY2VJbmZvKCk7XG4gICAgdGhpcy5jYXBzLmRldmljZUFwaUxldmVsID0gcGFyc2VJbnQoYXBpVmVyc2lvbiwgMTApO1xuICAgIHRoaXMuY2Fwcy5wbGF0Zm9ybVZlcnNpb24gPSBwbGF0Zm9ybVZlcnNpb247XG4gICAgdGhpcy5jYXBzLmRldmljZVNjcmVlblNpemUgPSByZWFsRGlzcGxheVNpemU7XG4gICAgdGhpcy5jYXBzLmRldmljZVNjcmVlbkRlbnNpdHkgPSBkaXNwbGF5RGVuc2l0eTtcbiAgICB0aGlzLmNhcHMuZGV2aWNlTW9kZWwgPSBtb2RlbDtcbiAgICB0aGlzLmNhcHMuZGV2aWNlTWFudWZhY3R1cmVyID0gbWFudWZhY3R1cmVyO1xuICB9XG5cbiAgaW5pdEVzcHJlc3NvU2VydmVyICgpIHtcbiAgICAvLyBub3cgdGhhdCB3ZSBoYXZlIHBhY2thZ2UgYW5kIGFjdGl2aXR5LCB3ZSBjYW4gY3JlYXRlIGFuIGluc3RhbmNlIG9mXG4gICAgLy8gZXNwcmVzc28gd2l0aCB0aGUgYXBwcm9wcmlhdGUgZGF0YVxuICAgIHRoaXMuZXNwcmVzc28gPSBuZXcgRXNwcmVzc29SdW5uZXIodGhpcy5sb2csIHtcbiAgICAgIGhvc3Q6IHRoaXMub3B0cy5yZW1vdGVBZGJIb3N0IHx8IHRoaXMub3B0cy5ob3N0IHx8ICcxMjcuMC4wLjEnLFxuICAgICAgc3lzdGVtUG9ydDogdGhpcy5vcHRzLnN5c3RlbVBvcnQsXG4gICAgICBkZXZpY2VQb3J0OiBERVZJQ0VfUE9SVCxcbiAgICAgIGFkYjogdGhpcy5hZGIsXG4gICAgICBhcGs6IHRoaXMub3B0cy5hcHAsXG4gICAgICB0bXBEaXI6IHRoaXMub3B0cy50bXBEaXIsXG4gICAgICBhcHBQYWNrYWdlOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICAgIGFwcEFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwQWN0aXZpdHksXG4gICAgICBmb3JjZUVzcHJlc3NvUmVidWlsZDogISF0aGlzLm9wdHMuZm9yY2VFc3ByZXNzb1JlYnVpbGQsXG4gICAgICBlc3ByZXNzb0J1aWxkQ29uZmlnOiB0aGlzLm9wdHMuZXNwcmVzc29CdWlsZENvbmZpZyxcbiAgICAgIHNob3dHcmFkbGVMb2c6ICEhdGhpcy5vcHRzLnNob3dHcmFkbGVMb2csXG4gICAgICBzZXJ2ZXJMYXVuY2hUaW1lb3V0OiB0aGlzLm9wdHMuZXNwcmVzc29TZXJ2ZXJMYXVuY2hUaW1lb3V0LFxuICAgICAgYW5kcm9pZEluc3RhbGxUaW1lb3V0OiB0aGlzLm9wdHMuYW5kcm9pZEluc3RhbGxUaW1lb3V0LFxuICAgICAgc2tpcFNlcnZlckluc3RhbGxhdGlvbjogdGhpcy5vcHRzLnNraXBTZXJ2ZXJJbnN0YWxsYXRpb24sXG4gICAgICB1c2VLZXlzdG9yZTogdGhpcy5vcHRzLnVzZUtleXN0b3JlLFxuICAgICAga2V5c3RvcmVQYXRoOiB0aGlzLm9wdHMua2V5c3RvcmVQYXRoLFxuICAgICAga2V5c3RvcmVQYXNzd29yZDogdGhpcy5vcHRzLmtleXN0b3JlUGFzc3dvcmQsXG4gICAgICBrZXlBbGlhczogdGhpcy5vcHRzLmtleUFsaWFzLFxuICAgICAga2V5UGFzc3dvcmQ6IHRoaXMub3B0cy5rZXlQYXNzd29yZCxcbiAgICAgIGRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlOiB0aGlzLm9wdHMuZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UsXG4gICAgfSk7XG4gICAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMuZXNwcmVzc28ucHJveHlSZXFSZXMuYmluZCh0aGlzLmVzcHJlc3NvKTtcbiAgICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMuZXNwcmVzc28ucHJveHlDb21tYW5kLmJpbmQodGhpcy5lc3ByZXNzbyk7XG4gIH1cblxuICAvLyBUT0RPIHRoaXMgbWV0aG9kIGlzIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gdWlhdXRvbWF0b3IyXG4gIGFzeW5jIGluaXRBVVQgKCkge1xuICAgIC8vIHNldCB0aGUgbG9jYWxpemVkIHN0cmluZ3MgZm9yIHRoZSBjdXJyZW50IGxhbmd1YWdlIGZyb20gdGhlIGFwa1xuICAgIC8vIFRPRE86IGluY29ycG9yYXRlIGNoYW5nZXMgZnJvbSBhcHBpdW0jNTMwOCB3aGljaCBmaXggYSByYWNlIGNvbmQtXG4gICAgLy8gaXRpb24gYnVnIGluIG9sZCBhcHBpdW0gYW5kIG5lZWQgdG8gYmUgcmVwbGljYXRlZCBoZXJlXG4gICAgLy8gdGhpcy5hcGtTdHJpbmdzW3RoaXMub3B0cy5sYW5ndWFnZV0gPSBhd2FpdCBhbmRyb2lkSGVscGVycy5wdXNoU3RyaW5ncyhcbiAgICAvLyAgICAgdGhpcy5vcHRzLmxhbmd1YWdlLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcblxuICAgIC8vIFVuaW5zdGFsbCBhbnkgdW5pbnN0YWxsT3RoZXJQYWNrYWdlcyB3aGljaCB3ZXJlIHNwZWNpZmllZCBpbiBjYXBzXG4gICAgaWYgKHRoaXMub3B0cy51bmluc3RhbGxPdGhlclBhY2thZ2VzKSB7XG4gICAgICBhd2FpdCBoZWxwZXJzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMoXG4gICAgICAgIHRoaXMuYWRiLFxuICAgICAgICBoZWxwZXJzLnBhcnNlQXJyYXkodGhpcy5vcHRzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMpLFxuICAgICAgICBbU0VUVElOR1NfSEVMUEVSX1BLR19JRCwgVEVTVF9BUEtfUEtHXVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMub3B0cy5hcHApIHtcbiAgICAgIGlmICh0aGlzLm9wdHMuZnVsbFJlc2V0KSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ0Z1bGwgcmVzZXQgcmVxdWlyZXMgYW4gYXBwIGNhcGFiaWxpdHksIHVzZSBmYXN0UmVzZXQgaWYgYXBwIGlzIG5vdCBwcm92aWRlZCcpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2cuZGVidWcoJ05vIGFwcCBjYXBhYmlsaXR5LiBBc3N1bWluZyBpdCBpcyBhbHJlYWR5IG9uIHRoZSBkZXZpY2UnKTtcbiAgICAgIGlmICh0aGlzLm9wdHMuZmFzdFJlc2V0KSB7XG4gICAgICAgIGF3YWl0IGhlbHBlcnMucmVzZXRBcHAodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0cy5hcHApIHtcbiAgICAgIGF3YWl0IGhlbHBlcnMuaW5zdGFsbEFwayh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0cy5za2lwU2VydmVySW5zdGFsbGF0aW9uKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1Zygnc2tpcFNlcnZlckluc3RhbGxhdGlvbiBjYXBhYmlsaXR5IGlzIHNldC4gTm90IGluc3RhbGxpZyBlc3ByZXNzby1zZXJ2ZXIgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuZXNwcmVzc28uaW5zdGFsbFRlc3RBcGsoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmFkZFRvRGV2aWNlSWRsZVdoaXRlbGlzdChTRVRUSU5HU19IRUxQRVJfUEtHX0lELCBURVNUX0FQS19QS0cpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3QgYWRkIHNlcnZlciBwYWNrYWdlcyB0byB0aGUgRG96ZSB3aGl0ZWxpc3QuIE9yaWdpbmFsIGVycm9yOiBgICtcbiAgICAgICAgICAoZS5zdGRlcnIgfHwgZS5tZXNzYWdlKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0RlbGV0aW5nIGVzcHJlc3NvIHNlc3Npb24nKTtcblxuICAgIGNvbnN0IHNjcmVlblJlY29yZGluZ1N0b3BUYXNrcyA9IFthc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzKSkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3BSZWNvcmRpbmdTY3JlZW4oKTtcbiAgICAgIH1cbiAgICB9LCBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoYXdhaXQgdGhpcy5tb2JpbGVJc01lZGlhUHJvamVjdGlvblJlY29yZGluZ1J1bm5pbmcoKSkge1xuICAgICAgICBhd2FpdCB0aGlzLm1vYmlsZVN0b3BNZWRpYVByb2plY3Rpb25SZWNvcmRpbmcoKTtcbiAgICAgIH1cbiAgICB9LCBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9zY3JlZW5TdHJlYW1pbmdQcm9wcykpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nKCk7XG4gICAgICB9XG4gICAgfV07XG5cbiAgICBhd2FpdCBhbmRyb2lkSGVscGVycy5yZW1vdmVBbGxTZXNzaW9uV2ViU29ja2V0SGFuZGxlcnModGhpcy5zZXJ2ZXIsIHRoaXMuc2Vzc2lvbklkKTtcblxuICAgIGlmICh0aGlzLmVzcHJlc3NvKSB7XG4gICAgICBpZiAodGhpcy5qd3BQcm94eUFjdGl2ZSkge1xuICAgICAgICBhd2FpdCB0aGlzLmVzcHJlc3NvLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZXNwcmVzc28gPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5hZGIpIHtcbiAgICAgIGF3YWl0IEIuYWxsKHNjcmVlblJlY29yZGluZ1N0b3BUYXNrcy5tYXAoKHRhc2spID0+IHtcbiAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGFzaygpO1xuICAgICAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICAgICAgfSkoKTtcbiAgICAgIH0pKTtcbiAgICAgIGlmICh0aGlzLndhc0FuaW1hdGlvbkVuYWJsZWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRBbmltYXRpb25TdGF0ZSh0cnVlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHJlc2V0IGFuaW1hdGlvbjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0cy51bmljb2RlS2V5Ym9hcmQgJiYgdGhpcy5vcHRzLnJlc2V0S2V5Ym9hcmQgJiZcbiAgICAgICAgICB0aGlzLmRlZmF1bHRJTUUpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYFJlc2V0dGluZyBJTUUgdG8gJyR7dGhpcy5kZWZhdWx0SU1FfSdgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0SU1FKHRoaXMuZGVmYXVsdElNRSk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuaXNDaHJvbWVTZXNzaW9uICYmIHRoaXMub3B0cy5hcHBQYWNrYWdlICYmICF0aGlzLm9wdHMuZG9udFN0b3BBcHBPblJlc2V0KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmZvcmNlU3RvcCh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCAmJiAhdGhpcy5vcHRzLnNraXBVbmluc3RhbGwgJiYgIXRoaXMuYXBwT25EZXZpY2UpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYEZVTExfUkVTRVQgc2V0IHRvICd0cnVlJywgVW5pbnN0YWxsaW5nICcke3RoaXMub3B0cy5hcHBQYWNrYWdlfSdgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuYWRiLnN0b3BMb2djYXQoKTtcbiAgICAgIGlmICh0aGlzLm9wdHMucmVib290KSB7XG4gICAgICAgIGxldCBhdmROYW1lID0gdGhpcy5vcHRzLmF2ZC5yZXBsYWNlKCdAJywgJycpO1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgY2xvc2luZyBlbXVsYXRvciAnJHthdmROYW1lfSdgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIua2lsbEVtdWxhdG9yKGF2ZE5hbWUpO1xuICAgICAgfVxuICAgICAgaWYgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPj0gMjgpIHsgLy8gQW5kcm9pZCBQXG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1Jlc3RvcmluZyBoaWRkZW4gYXBpIHBvbGljeSB0byB0aGUgZGV2aWNlIGRlZmF1bHQgY29uZmlndXJhdGlvbicpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXREZWZhdWx0SGlkZGVuQXBpUG9saWN5KCEhdGhpcy5vcHRzLmlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXdhaXQgc3VwZXIuZGVsZXRlU2Vzc2lvbigpO1xuICAgIGlmICh0aGlzLm9wdHMuc3lzdGVtUG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5yZW1vdmVQb3J0Rm9yd2FyZCh0aGlzLm9wdHMuc3lzdGVtUG9ydCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gcmVtb3ZlIHBvcnQgZm9yd2FyZCAnJHtlcnJvci5tZXNzYWdlfSdgKTtcbiAgICAgICAgLy9JZ25vcmUsIHRoaXMgYmxvY2sgd2lsbCBhbHNvIGJlIGNhbGxlZCB3aGVuIHdlIGZhbGwgaW4gY2F0Y2ggYmxvY2tcbiAgICAgICAgLy8gYW5kIGJlZm9yZSBldmVuIHBvcnQgZm9yd2FyZC5cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBvblNldHRpbmdzVXBkYXRlICgpIHtcbiAgICAvLyBpbnRlbnRpb25hbGx5IGRvIG5vdGhpbmcgaGVyZSwgc2luY2UgY29tbWFuZHMudXBkYXRlU2V0dGluZ3MgcHJveGllc1xuICAgIC8vIHNldHRpbmdzIHRvIHRoZSBlc3ByZXNzbyBzZXJ2ZXIgYWxyZWFkeVxuICB9XG5cbiAgcHJveHlBY3RpdmUgKHNlc3Npb25JZCkge1xuICAgIHN1cGVyLnByb3h5QWN0aXZlKHNlc3Npb25JZCk7XG5cbiAgICAvLyB3ZSBhbHdheXMgaGF2ZSBhbiBhY3RpdmUgcHJveHkgdG8gdGhlIGVzcHJlc3NvIHNlcnZlclxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2FuUHJveHkgKHNlc3Npb25JZCkge1xuICAgIHN1cGVyLmNhblByb3h5KHNlc3Npb25JZCk7XG5cbiAgICAvLyB3ZSBjYW4gYWx3YXlzIHByb3h5IHRvIHRoZSBlc3ByZXNzbyBzZXJ2ZXJcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldFByb3h5QXZvaWRMaXN0IChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5nZXRQcm94eUF2b2lkTGlzdChzZXNzaW9uSWQpO1xuICAgIC8vIHdlIGFyZSBtYWludGFpbmluZyB0d28gc2V0cyBvZiBOT19QUk9YWSBsaXN0cywgb25lIGZvciBjaHJvbWVkcml2ZXIoQ0hST01FX05PX1BST1hZKVxuICAgIC8vIGFuZCBvbmUgZm9yIEVzcHJlc3NvKE5PX1BST1hZKSwgYmFzZWQgb24gY3VycmVudCBjb250ZXh0IHdpbGwgcmV0dXJuIHJlbGF0ZWQgTk9fUFJPWFkgbGlzdFxuICAgIHRoaXMuandwUHJveHlBdm9pZCA9IF8uaXNOaWwodGhpcy5jaHJvbWVkcml2ZXIpID8gTk9fUFJPWFkgOiBDSFJPTUVfTk9fUFJPWFk7XG4gICAgaWYgKHRoaXMub3B0cy5uYXRpdmVXZWJTY3JlZW5zaG90KSB7XG4gICAgICB0aGlzLmp3cFByb3h5QXZvaWQgPSBbLi4udGhpcy5qd3BQcm94eUF2b2lkLCBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zY3JlZW5zaG90JyldXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5qd3BQcm94eUF2b2lkO1xuICB9XG5cbiAgZ2V0IGlzQ2hyb21lU2Vzc2lvbiAoKSB7XG4gICAgcmV0dXJuIGhlbHBlcnMuaXNDaHJvbWVCcm93c2VyKHRoaXMub3B0cy5icm93c2VyTmFtZSk7XG4gIH1cblxuICBnZXQgYXBwT25EZXZpY2UgKCkge1xuICAgIHJldHVybiAhdGhpcy5vcHRzLmFwcCAmJiB0aGlzLmhlbHBlcnMuaXNQYWNrYWdlT3JCdW5kbGUodGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICB9XG59XG5cbi8vIGZpcnN0IGFkZCB0aGUgYW5kcm9pZC1kcml2ZXIgY29tbWFuZHMgd2hpY2ggd2Ugd2lsbCBmYWxsIGJhY2sgdG9cbmZvciAobGV0IFtjbWQsIGZuXSBvZiBfLnRvUGFpcnMoYW5kcm9pZENvbW1hbmRzKSkge1xuICAvLyB3ZSBkbyBzb21lIGRpZmZlcmVudC9zcGVjaWFsIHRoaW5ncyB3aXRoIHRoZXNlIG1ldGhvZHNcbiAgaWYgKCFfLmluY2x1ZGVzKFsnZGVmYXVsdFdlYnZpZXdOYW1lJ10sIGNtZCkpIHtcbiAgICBFc3ByZXNzb0RyaXZlci5wcm90b3R5cGVbY21kXSA9IGZuO1xuICB9XG59XG5cbi8vIHRoZW4gb3ZlcndyaXRlIHdpdGggYW55IGVzcHJlc3NvLXNwZWNpZmljIGNvbW1hbmRzXG5mb3IgKGxldCBbY21kLCBmbl0gb2YgXy50b1BhaXJzKGNvbW1hbmRzKSkge1xuICBFc3ByZXNzb0RyaXZlci5wcm90b3R5cGVbY21kXSA9IGZuO1xufVxuXG5leHBvcnQgeyBFc3ByZXNzb0RyaXZlciB9O1xuZXhwb3J0IGRlZmF1bHQgRXNwcmVzc29Ecml2ZXI7XG4iXSwi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Q0FBWCxDQUFULENBOUJlLEVBK0JmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyx5Q0FBWCxDQUFULENBL0JlLEVBZ0NmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVywwQ0FBWCxDQUFULENBaENlLEVBaUNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw4Q0FBWCxDQUFULENBakNlLEVBa0NmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw2Q0FBWCxDQUFULENBbENlLEVBbUNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyxzQ0FBWCxDQUFULENBbkNlLEVBb0NmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVywyQ0FBWCxDQUFULENBcENlLEVBcUNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw4Q0FBWCxDQUFULENBckNlLEVBc0NmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyxpQ0FBWCxDQUFULENBdENlLEVBdUNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyx1Q0FBWCxDQUFULENBdkNlLEVBd0NmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVywrQ0FBWCxDQUFULENBeENlLEVBeUNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw4Q0FBWCxDQUFULENBekNlLEVBMENmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyx5QkFBWCxDQUFULENBMUNlLEVBMkNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyx5QkFBWCxDQUFULENBM0NlLEVBNENmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVywrQkFBWCxDQUFULENBNUNlLEVBNkNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw4QkFBWCxDQUFULENBN0NlLEVBOENmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVywrQkFBWCxDQUFULENBOUNlLEVBK0NmLENBQUMsTUFBRCxFQUFT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
@@ -19,8 +19,6 @@ var _path = _interopRequireDefault(require("path"));
19
19
 
20
20
  var _support = require("appium/support");
21
21
 
22
- var _package = require("../../package.json");
23
-
24
22
  var _bluebird = _interopRequireDefault(require("bluebird"));
25
23
 
26
24
  var _lodash = _interopRequireDefault(require("lodash"));
@@ -78,8 +76,11 @@ class EspressoRunner {
78
76
  exited: false,
79
77
  crashed: false
80
78
  };
79
+ const {
80
+ manifestPayload
81
+ } = (0, _utils.getPackageInfoSync)();
81
82
 
82
- const modServerName = _support.fs.sanitizeName(`${TEST_APK_PKG}_${_package.version}_${this.appPackage}_${this.adb.curDeviceId}.apk`, {
83
+ const modServerName = _support.fs.sanitizeName(`${TEST_APK_PKG}_${manifestPayload.version}_${this.appPackage}_${this.adb.curDeviceId}.apk`, {
83
84
  replacement: '-'
84
85
  });
85
86
 
@@ -261,7 +262,10 @@ class EspressoRunner {
261
262
  }
262
263
 
263
264
  cmd.push(`${TEST_APK_PKG}/androidx.test.runner.AndroidJUnitRunner`);
264
- this.log.info(`Starting Espresso Server v${_package.version} with cmd: adb ${cmd.join(' ')}`);
265
+ const {
266
+ manifestPayload
267
+ } = await (0, _utils.getPackageInfo)();
268
+ this.log.info(`Starting Espresso Server v${manifestPayload.version} with cmd: adb ${cmd.join(' ')}`);
265
269
  let hasSocketError = false;
266
270
  this.jwproxy.instrumentationState = {
267
271
  exited: false,
@@ -351,7 +355,5 @@ class EspressoRunner {
351
355
 
352
356
  exports.EspressoRunner = EspressoRunner;
353
357
  var _default = EspressoRunner;
354
- exports.default = _default;require('source-map-support').install();
355
-
356
-
357
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2VzcHJlc3NvLXJ1bm5lci5qcyIsIm5hbWVzIjpbIlRFU1RfU0VSVkVSX1JPT1QiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsIlRFU1RfQVBLX1BLRyIsIlJFUVVJUkVEX1BBUkFNUyIsIkVTUFJFU1NPX1NFUlZFUl9MQVVOQ0hfVElNRU9VVF9NUyIsIlRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUiIsIkVzcHJlc3NvUHJveHkiLCJKV1Byb3h5IiwicHJveHlDb21tYW5kIiwidXJsIiwibWV0aG9kIiwiYm9keSIsImNyYXNoZWQiLCJleGl0ZWQiLCJpbnN0cnVtZW50YXRpb25TdGF0ZSIsImVycm9ycyIsIkludmFsaWRDb250ZXh0RXJyb3IiLCJFc3ByZXNzb1J1bm5lciIsImNvbnN0cnVjdG9yIiwibG9nIiwib3B0cyIsInJlcSIsInV0aWwiLCJoYXNWYWx1ZSIsIkVycm9yIiwiandwcm94eSIsInNlcnZlciIsImhvc3QiLCJwb3J0Iiwic3lzdGVtUG9ydCIsImJhc2UiLCJrZWVwQWxpdmUiLCJwcm94eVJlcVJlcyIsImJpbmQiLCJjb21tYW5kIiwibW9kU2VydmVyTmFtZSIsImZzIiwic2FuaXRpemVOYW1lIiwidmVyc2lvbiIsImFwcFBhY2thZ2UiLCJhZGIiLCJjdXJEZXZpY2VJZCIsInJlcGxhY2VtZW50IiwibW9kU2VydmVyUGF0aCIsInRtcERpciIsInNob3dHcmFkbGVMb2ciLCJlc3ByZXNzb0J1aWxkQ29uZmlnIiwic2VydmVyTGF1bmNoVGltZW91dCIsImFuZHJvaWRJbnN0YWxsVGltZW91dCIsImRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlIiwidXNlS2V5c3RvcmUiLCJrZXlzdG9yZVBhdGgiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsInNpZ25pbmdDb25maWciLCJidWlsZFNlcnZlclNpZ25pbmdDb25maWciLCJrZXlzdG9yZUZpbGUiLCJpc0FwcFBhY2thZ2VDaGFuZ2VkIiwiZmlsZUV4aXN0cyIsImRlYnVnIiwicHJldmlvdXNBcHBQYWNrYWdlIiwic2hlbGwiLCJ0cmltIiwiaW5zdGFsbFNlcnZlciIsImFwcFN0YXRlIiwiZ2V0QXBwbGljYXRpb25JbnN0YWxsU3RhdGUiLCJzaG91bGRVbmluc3RhbGxBcHAiLCJBUFBfSU5TVEFMTF9TVEFURSIsIk9MREVSX1ZFUlNJT05fSU5TVEFMTEVEIiwiTkVXRVJfVkVSU0lPTl9JTlNUQUxMRUQiLCJpbmNsdWRlcyIsInNob3VsZEluc3RhbGxBcHAiLCJOT1RfSU5TVEFMTEVEIiwiaW5mbyIsInVuaW5zdGFsbEFwayIsImVyciIsIndhcm4iLCJtZXNzYWdlIiwiaW5zdGFsbCIsInJlcGxhY2UiLCJ0aW1lb3V0IiwiZXJyb3JBbmRUaHJvdyIsImluc3RhbGxUZXN0QXBrIiwicmVidWlsZCIsImZvcmNlRXNwcmVzc29SZWJ1aWxkIiwiZXhpc3RzIiwidW5saW5rIiwiYnVpbGROZXdNb2RTZXJ2ZXIiLCJpc1NpZ25lZCIsImNoZWNrQXBrQ2VydCIsInNpZ24iLCJidWlsZENvbmZpZ3VyYXRpb24iLCJidWlsZENvbmZpZ3VyYXRpb25TdHIiLCJyZWFkRmlsZSIsIkpTT04iLCJwYXJzZSIsImUiLCJlcnJvciIsImRpck5hbWUiLCJzZXJ2ZXJQYXRoIiwicmltcmFmIiwibWtkaXJwIiwiY29weUdyYWRsZVByb2plY3RSZWN1cnNpdmVseSIsIlNlcnZlckJ1aWxkZXIiLCJ0ZXN0QXBwUGFja2FnZSIsImJ1aWxkIiwiYXBrUGF0aCIsImNvcHlGaWxlIiwiY2xlYW51cFNlc3Npb25MZWZ0b3ZlcnMiLCJ2YWx1ZSIsImF4aW9zIiwiZGF0YSIsImFjdGl2ZVNlc3Npb25JZHMiLCJtYXAiLCJzZXNzIiwiaWQiLCJsZW5ndGgiLCJzdHJpbmdpZnkiLCJCIiwiYWxsIiwiZGVsYXkiLCJzdGFydFNlc3Npb24iLCJjYXBzIiwiY21kIiwicHJvY2VzcyIsImVudiIsIkVTUFJFU1NPX0pBVkFfREVCVUciLCJfIiwiaXNCb29sZWFuIiwicHVzaCIsImpvaW4iLCJoYXNTb2NrZXRFcnJvciIsImluc3RQcm9jZXNzIiwiY3JlYXRlU3ViUHJvY2VzcyIsIm9uIiwiY29kZSIsInNpZ25hbCIsInN0ZG91dCIsInN0ZGVyciIsImxpbmUiLCJpc0VtcHR5IiwidG9Mb3dlckNhc2UiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJ3YWl0Rm9yQ29uZGl0aW9uIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsInRlc3QiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInJlY29yZFRhcmdldEFwcFBhY2thZ2UiLCJkZWxldGVTZXNzaW9uIiwiaXNSdW5uaW5nIiwic3RvcCJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9lc3ByZXNzby1ydW5uZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSldQcm94eSwgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgU2VydmVyQnVpbGRlciwgYnVpbGRTZXJ2ZXJTaWduaW5nQ29uZmlnIH0gZnJvbSAnLi9zZXJ2ZXItYnVpbGRlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZzLCB1dGlsLCBta2RpcnAsIHRpbWluZyB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9uby11bnJlc29sdmVkXG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29weUdyYWRsZVByb2plY3RSZWN1cnNpdmVseSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuXG5jb25zdCBURVNUX1NFUlZFUl9ST09UID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2VzcHJlc3NvLXNlcnZlcicpO1xuY29uc3QgVEVTVF9BUEtfUEtHID0gJ2lvLmFwcGl1bS5lc3ByZXNzb3NlcnZlci50ZXN0JztcbmNvbnN0IFJFUVVJUkVEX1BBUkFNUyA9IFtcbiAgJ2FkYicsXG4gICd0bXBEaXInLFxuICAnaG9zdCcsXG4gICdzeXN0ZW1Qb3J0JyxcbiAgJ2RldmljZVBvcnQnLFxuICAnYXBwUGFja2FnZScsXG4gICdmb3JjZUVzcHJlc3NvUmVidWlsZCcsXG5dO1xuY29uc3QgRVNQUkVTU09fU0VSVkVSX0xBVU5DSF9USU1FT1VUX01TID0gNDUwMDA7XG5jb25zdCBUQVJHRVRfUEFDS0FHRV9DT05UQUlORVIgPSAnL2RhdGEvbG9jYWwvdG1wL2VzcHJlc3NvLmFwcHBhY2thZ2UnO1xuXG5jbGFzcyBFc3ByZXNzb1Byb3h5IGV4dGVuZHMgSldQcm94eSB7XG4gIGFzeW5jIHByb3h5Q29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgY29uc3Qge2NyYXNoZWQsIGV4aXRlZH0gPSB0aGlzLmluc3RydW1lbnRhdGlvblN0YXRlO1xuICAgIGlmIChleGl0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZENvbnRleHRFcnJvcihgJyR7bWV0aG9kfSAke3VybH0nIGNhbm5vdCBiZSBwcm94aWVkIHRvIEVzcHJlc3NvIHNlcnZlciBiZWNhdXNlIGAgK1xuICAgICAgICBgdGhlIGluc3RydW1lbnRhdGlvbiBwcm9jZXNzIGhhcyAke2NyYXNoZWQgPyAnY3Jhc2hlZCcgOiAnYmVlbiB1bmV4cGVjdGVkbHkgdGVybWluYXRlZCd9LiBgICtcbiAgICAgICAgYENoZWNrIHRoZSBBcHBpdW0gc2VydmVyIGxvZyBhbmQgdGhlIGxvZ2NhdCBvdXRwdXQgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgc3VwZXIucHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxufVxuXG5jbGFzcyBFc3ByZXNzb1J1bm5lciB7XG4gIGNvbnN0cnVjdG9yIChsb2csIG9wdHMgPSB7fSkge1xuICAgIGZvciAobGV0IHJlcSBvZiBSRVFVSVJFRF9QQVJBTVMpIHtcbiAgICAgIGlmICghb3B0cyB8fCAhdXRpbC5oYXNWYWx1ZShvcHRzW3JlcV0pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgT3B0aW9uICcke3JlcX0nIGlzIHJlcXVpcmVkIWApO1xuICAgICAgfVxuICAgICAgdGhpc1tyZXFdID0gb3B0c1tyZXFdO1xuICAgIH1cbiAgICB0aGlzLmxvZyA9IGxvZztcbiAgICB0aGlzLmp3cHJveHkgPSBuZXcgRXNwcmVzc29Qcm94eSh7XG4gICAgICBsb2csXG4gICAgICBzZXJ2ZXI6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMuc3lzdGVtUG9ydCxcbiAgICAgIGJhc2U6ICcnLFxuICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLmp3cHJveHkucHJveHlSZXFSZXMuYmluZCh0aGlzLmp3cHJveHkpO1xuICAgIHRoaXMucHJveHlDb21tYW5kID0gdGhpcy5qd3Byb3h5LmNvbW1hbmQuYmluZCh0aGlzLmp3cHJveHkpO1xuICAgIHRoaXMuandwcm94eS5pbnN0cnVtZW50YXRpb25TdGF0ZSA9IHtcbiAgICAgIGV4aXRlZDogZmFsc2UsXG4gICAgICBjcmFzaGVkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3QgbW9kU2VydmVyTmFtZSA9IGZzLnNhbml0aXplTmFtZShgJHtURVNUX0FQS19QS0d9XyR7dmVyc2lvbn1fJHt0aGlzLmFwcFBhY2thZ2V9XyR7dGhpcy5hZGIuY3VyRGV2aWNlSWR9LmFwa2AsIHtcbiAgICAgIHJlcGxhY2VtZW50OiAnLScsXG4gICAgfSk7XG4gICAgdGhpcy5tb2RTZXJ2ZXJQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMudG1wRGlyLCBtb2RTZXJ2ZXJOYW1lKTtcbiAgICB0aGlzLnNob3dHcmFkbGVMb2cgPSBvcHRzLnNob3dHcmFkbGVMb2c7XG4gICAgdGhpcy5lc3ByZXNzb0J1aWxkQ29uZmlnID0gb3B0cy5lc3ByZXNzb0J1aWxkQ29uZmlnO1xuXG4gICAgdGhpcy5zZXJ2ZXJMYXVuY2hUaW1lb3V0ID0gb3B0cy5zZXJ2ZXJMYXVuY2hUaW1lb3V0IHx8IEVTUFJFU1NPX1NFUlZFUl9MQVVOQ0hfVElNRU9VVF9NUztcbiAgICB0aGlzLmFuZHJvaWRJbnN0YWxsVGltZW91dCA9IG9wdHMuYW5kcm9pZEluc3RhbGxUaW1lb3V0O1xuXG4gICAgdGhpcy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSA9IG9wdHMuZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2U7XG5cbiAgICAvLyBFc3ByZXNzbyBTZXJ2ZXIgYXBwIG5lZWRzIHRvIGJlIHNpZ25lZCB3aXRoIHNhbWUga2V5U3RvcmUgYXMgYXBwUGFja2FnZVxuICAgIGlmIChvcHRzLnVzZUtleXN0b3JlICYmIG9wdHMua2V5c3RvcmVQYXRoICYmIG9wdHMua2V5c3RvcmVQYXNzd29yZCAmJiBvcHRzLmtleUFsaWFzICYmIG9wdHMua2V5UGFzc3dvcmQpIHtcbiAgICAgIHRoaXMuc2lnbmluZ0NvbmZpZyA9IGJ1aWxkU2VydmVyU2lnbmluZ0NvbmZpZyh7XG4gICAgICAgIGtleXN0b3JlRmlsZTogb3B0cy5rZXlzdG9yZVBhdGgsXG4gICAgICAgIGtleXN0b3JlUGFzc3dvcmQ6IG9wdHMua2V5c3RvcmVQYXNzd29yZCxcbiAgICAgICAga2V5QWxpYXM6IG9wdHMua2V5QWxpYXMsXG4gICAgICAgIGtleVBhc3N3b3JkOiBvcHRzLmtleVBhc3N3b3JkXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaWduaW5nQ29uZmlnID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpc0FwcFBhY2thZ2VDaGFuZ2VkICgpIHtcbiAgICBpZiAoIWF3YWl0IHRoaXMuYWRiLmZpbGVFeGlzdHMoVEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ1RoZSBwcmV2aW91cyB0YXJnZXQgYXBwbGljYXRpb24gcGFja2FnZSBpcyB1bmtub3duJyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgcHJldmlvdXNBcHBQYWNrYWdlID0gKGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnY2F0JywgVEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSXSkpLnRyaW0oKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIHByZXZpb3VzIHRhcmdldCBhcHBsaWNhdGlvbiBwYWNrYWdlIHdhcyAnJHtwcmV2aW91c0FwcFBhY2thZ2V9Jy4gYCArXG4gICAgICBgVGhlIGN1cnJlbnQgcGFja2FnZSBpcyAnJHt0aGlzLmFwcFBhY2thZ2V9J2ApO1xuICAgIHJldHVybiBwcmV2aW91c0FwcFBhY2thZ2UgIT09IHRoaXMuYXBwUGFja2FnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxscyBFc3ByZXNzbyBzZXJ2ZXIgYXBrIG9uIHRvIHRoZSBkZXZpY2Ugb3IgZW11bGF0b3IuXG4gICAqIEVhY2ggYWRiIGNvbW1hbmQgdXNlcyBkZWZhdWx0IHRpbWVvdXQgYnkgdGhlbS5cbiAgICovXG4gIGFzeW5jIGluc3RhbGxTZXJ2ZXIgKCkge1xuICAgIGNvbnN0IGFwcFN0YXRlID0gYXdhaXQgdGhpcy5hZGIuZ2V0QXBwbGljYXRpb25JbnN0YWxsU3RhdGUodGhpcy5tb2RTZXJ2ZXJQYXRoLCBURVNUX0FQS19QS0cpO1xuXG4gICAgY29uc3Qgc2hvdWxkVW5pbnN0YWxsQXBwID0gW1xuICAgICAgdGhpcy5hZGIuQVBQX0lOU1RBTExfU1RBVEUuT0xERVJfVkVSU0lPTl9JTlNUQUxMRUQsXG4gICAgICB0aGlzLmFkYi5BUFBfSU5TVEFMTF9TVEFURS5ORVdFUl9WRVJTSU9OX0lOU1RBTExFRFxuICAgIF0uaW5jbHVkZXMoYXBwU3RhdGUpO1xuICAgIGNvbnN0IHNob3VsZEluc3RhbGxBcHAgPSBzaG91bGRVbmluc3RhbGxBcHAgfHwgW1xuICAgICAgdGhpcy5hZGIuQVBQX0lOU1RBTExfU1RBVEUuTk9UX0lOU1RBTExFRFxuICAgIF0uaW5jbHVkZXMoYXBwU3RhdGUpO1xuXG4gICAgaWYgKHNob3VsZFVuaW5zdGFsbEFwcCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgVW5pbnN0YWxsaW5nIEVzcHJlc3NvIFRlc3QgU2VydmVyIGFwayBmcm9tIHRoZSB0YXJnZXQgZGV2aWNlIChwa2c6ICcke1RFU1RfQVBLX1BLR30nKWApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKFRFU1RfQVBLX1BLRyk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgRXJyb3IgdW5pbnN0YWxsaW5nICcke1RFU1RfQVBLX1BLR30nOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzaG91bGRJbnN0YWxsQXBwKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBJbnN0YWxsaW5nIEVzcHJlc3NvIFRlc3QgU2VydmVyIGFwayBmcm9tIHRoZSB0YXJnZXQgZGV2aWNlIChwYXRoOiAnJHt0aGlzLm1vZFNlcnZlclBhdGh9JylgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmluc3RhbGwodGhpcy5tb2RTZXJ2ZXJQYXRoLCB7IHJlcGxhY2U6IGZhbHNlLCB0aW1lb3V0OiB0aGlzLmFuZHJvaWRJbnN0YWxsVGltZW91dCB9KTtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgSW5zdGFsbGVkIEVzcHJlc3NvIFRlc3QgU2VydmVyIGFwayAnJHt0aGlzLm1vZFNlcnZlclBhdGh9JyAocGtnOiAnJHtURVNUX0FQS19QS0d9JylgKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgaW5zdGFsbCAnJHt0aGlzLm1vZFNlcnZlclBhdGh9JyBiZWNhdXNlIG9mICcke2Vyci5tZXNzYWdlfSdgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBpbnN0YWxsVGVzdEFwayAoKSB7XG4gICAgbGV0IHJlYnVpbGQgPSB0aGlzLmZvcmNlRXNwcmVzc29SZWJ1aWxkO1xuICAgIGlmIChyZWJ1aWxkKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgJ2ZvcmNlRXNwcmVzc29SZWJ1aWxkJyBjYXBhYmlsaXR5IGlzIGVuYWJsZWRgKTtcbiAgICB9IGVsc2UgaWYgKGF3YWl0IHRoaXMuaXNBcHBQYWNrYWdlQ2hhbmdlZCgpKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBGb3JjaW5nIEVzcHJlc3NvIHNlcnZlciByZWJ1aWxkIGJlY2F1c2Ugb2YgY2hhbmdlZCBhcHBsaWNhdGlvbiBwYWNrYWdlYCk7XG4gICAgICByZWJ1aWxkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocmVidWlsZCAmJiBhd2FpdCBmcy5leGlzdHModGhpcy5tb2RTZXJ2ZXJQYXRoKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYERlbGV0aW5nIHRoZSBvYnNvbGV0ZSBFc3ByZXNzbyBzZXJ2ZXIgcGFja2FnZSAnJHt0aGlzLm1vZFNlcnZlclBhdGh9J2ApO1xuICAgICAgYXdhaXQgZnMudW5saW5rKHRoaXMubW9kU2VydmVyUGF0aCk7XG4gICAgfVxuICAgIGlmICghKGF3YWl0IGZzLmV4aXN0cyh0aGlzLm1vZFNlcnZlclBhdGgpKSkge1xuICAgICAgYXdhaXQgdGhpcy5idWlsZE5ld01vZFNlcnZlcigpO1xuICAgIH1cbiAgICBjb25zdCBpc1NpZ25lZCA9IGF3YWl0IHRoaXMuYWRiLmNoZWNrQXBrQ2VydCh0aGlzLm1vZFNlcnZlclBhdGgsIFRFU1RfQVBLX1BLRyk7XG4gICAgaWYgKCFpc1NpZ25lZCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuc2lnbih0aGlzLm1vZFNlcnZlclBhdGgpO1xuICAgIH1cbiAgICBpZiAoKHJlYnVpbGQgfHwgIWlzU2lnbmVkKSAmJiBhd2FpdCB0aGlzLmFkYi51bmluc3RhbGxBcGsoVEVTVF9BUEtfUEtHKSkge1xuICAgICAgdGhpcy5sb2cuaW5mbygnVW5pbnN0YWxsZWQgdGhlIG9ic29sZXRlIEVzcHJlc3NvIHNlcnZlciBwYWNrYWdlIGZyb20gdGhlIGRldmljZSB1bmRlciB0ZXN0Jyk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5pbnN0YWxsU2VydmVyKCk7XG4gIH1cblxuICBhc3luYyBidWlsZE5ld01vZFNlcnZlciAoKSB7XG4gICAgbGV0IGJ1aWxkQ29uZmlndXJhdGlvbiA9IHt9O1xuICAgIGlmICh0aGlzLmVzcHJlc3NvQnVpbGRDb25maWcpIHtcbiAgICAgIGxldCBidWlsZENvbmZpZ3VyYXRpb25TdHI7XG4gICAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHRoaXMuZXNwcmVzc29CdWlsZENvbmZpZykpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgTG9hZGluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmcm9tICcke3RoaXMuZXNwcmVzc29CdWlsZENvbmZpZ30nYCk7XG4gICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvblN0ciA9IGF3YWl0IGZzLnJlYWRGaWxlKHRoaXMuZXNwcmVzc29CdWlsZENvbmZpZywgJ3V0ZjgnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYExvYWRpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZnJvbSAnZXNwcmVzc29CdWlsZENvbmZpZycgY2FwYWJpbGl0eWApO1xuICAgICAgICBidWlsZENvbmZpZ3VyYXRpb25TdHIgPSB0aGlzLmVzcHJlc3NvQnVpbGRDb25maWc7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSBKU09OLnBhcnNlKGJ1aWxkQ29uZmlndXJhdGlvblN0cik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yKCdDYW5ub3QgcGFyc2UgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gSlNPTicsIGUpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkaXJOYW1lID0gZnMuc2FuaXRpemVOYW1lKGBlc3ByZXNzby1zZXJ2ZXItJHt0aGlzLmFkYi5jdXJEZXZpY2VJZH1gLCB7XG4gICAgICByZXBsYWNlbWVudDogJy0nLFxuICAgIH0pO1xuICAgIGNvbnN0IHNlcnZlclBhdGggPSBwYXRoLnJlc29sdmUodGhpcy50bXBEaXIsIGRpck5hbWUpO1xuICAgIHRoaXMubG9nLmluZm8oYEJ1aWxkaW5nIGVzcHJlc3NvIHNlcnZlciBpbiAnJHtzZXJ2ZXJQYXRofSdgKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIGJ1aWxkIGZvbGRlciByb290IGNvdWxkIGJlIGN1c3RvbWl6ZWQgYnkgY2hhbmdpbmcgdGhlICd0bXBEaXInIGNhcGFiaWxpdHlgKTtcbiAgICBhd2FpdCBmcy5yaW1yYWYoc2VydmVyUGF0aCk7XG4gICAgYXdhaXQgbWtkaXJwKHNlcnZlclBhdGgpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBDb3B5aW5nIGVzcHJlc3NvIHNlcnZlciB0ZW1wbGF0ZSBmcm9tICgnJHtURVNUX1NFUlZFUl9ST09UfScgdG8gJyR7c2VydmVyUGF0aH0nKWApO1xuICAgIGF3YWl0IGNvcHlHcmFkbGVQcm9qZWN0UmVjdXJzaXZlbHkoVEVTVF9TRVJWRVJfUk9PVCwgc2VydmVyUGF0aCk7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0J1bGRpbmcgZXNwcmVzc28gc2VydmVyJyk7XG4gICAgYXdhaXQgbmV3IFNlcnZlckJ1aWxkZXIodGhpcy5sb2csIHtcbiAgICAgIHNlcnZlclBhdGgsIGJ1aWxkQ29uZmlndXJhdGlvbixcbiAgICAgIHNob3dHcmFkbGVMb2c6IHRoaXMuc2hvd0dyYWRsZUxvZyxcbiAgICAgIHRlc3RBcHBQYWNrYWdlOiB0aGlzLmFwcFBhY2thZ2UsXG4gICAgICBzaWduaW5nQ29uZmlnOiB0aGlzLnNpZ25pbmdDb25maWdcbiAgICB9KS5idWlsZCgpO1xuICAgIGNvbnN0IGFwa1BhdGggPSBwYXRoLnJlc29sdmUoc2VydmVyUGF0aCwgJ2FwcCcsICdidWlsZCcsICdvdXRwdXRzJywgJ2FwaycsICdhbmRyb2lkVGVzdCcsICdkZWJ1ZycsICdhcHAtZGVidWctYW5kcm9pZFRlc3QuYXBrJyk7XG4gICAgdGhpcy5sb2cuZGVidWcoYENvcHlpbmcgYnVpbHQgYXBrIGZyb20gJyR7YXBrUGF0aH0nIHRvICcke3RoaXMubW9kU2VydmVyUGF0aH0nYCk7XG4gICAgYXdhaXQgZnMuY29weUZpbGUoYXBrUGF0aCwgdGhpcy5tb2RTZXJ2ZXJQYXRoKTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFudXBTZXNzaW9uTGVmdG92ZXJzICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnUGVyZm9ybWluZyBjbGVhbnVwIG9mIGF1dG9tYXRpb24gbGVmdG92ZXJzJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qge3ZhbHVlfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybDogYGh0dHA6Ly8ke3RoaXMuaG9zdH06JHt0aGlzLnN5c3RlbVBvcnR9L3Nlc3Npb25zYCxcbiAgICAgICAgdGltZW91dDogNTAwLFxuICAgICAgfSkpLmRhdGE7XG4gICAgICBjb25zdCBhY3RpdmVTZXNzaW9uSWRzID0gdmFsdWUubWFwKChzZXNzKSA9PiBzZXNzLmlkKTtcbiAgICAgIGlmIChhY3RpdmVTZXNzaW9uSWRzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIGZvbGxvd2luZyBvYnNvbGV0ZSBzZXNzaW9ucyBhcmUgc3RpbGwgcnVubmluZzogJHtKU09OLnN0cmluZ2lmeShhY3RpdmVTZXNzaW9uSWRzKX1gKTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoJ0NsZWFuaW5nIHVwIHRoZSBvYnNvbGV0ZSBzZXNzaW9ucycpO1xuICAgICAgICBhd2FpdCBCLmFsbChhY3RpdmVTZXNzaW9uSWRzLm1hcCgoaWQpID0+XG4gICAgICAgICAgYXhpb3Moe1xuICAgICAgICAgICAgdXJsOiBgaHR0cDovLyR7dGhpcy5ob3N0fToke3RoaXMuc3lzdGVtUG9ydH0vc2Vzc2lvbi8ke2lkfWAsXG4gICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgICAgIH0pXG4gICAgICAgICkpO1xuICAgICAgICAvLyBMZXQgYWxsIHNlc3Npb25zIHRvIGJlIHByb3Blcmx5IHRlcm1pbmF0ZWQgYmVmb3JlIGNvbnRpbnVpbmdcbiAgICAgICAgYXdhaXQgQi5kZWxheSgxMDAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKCdObyBvYnNvbGV0ZSBzZXNzaW9ucyBoYXZlIGJlZW4gZGV0ZWN0ZWQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgTm8gb2Jzb2xldGUgc2Vzc2lvbnMgaGF2ZSBiZWVuIGRldGVjdGVkICgke2UubWVzc2FnZX0pYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RhcnRTZXNzaW9uIChjYXBzKSB7XG4gICAgYXdhaXQgdGhpcy5jbGVhbnVwU2Vzc2lvbkxlZnRvdmVycygpO1xuXG4gICAgY29uc3QgY21kID0gW1xuICAgICAgJ3NoZWxsJyxcbiAgICAgICdhbScsICdpbnN0cnVtZW50JyxcbiAgICAgICctdycsXG4gICAgICAnLWUnLCAnZGVidWcnLCBwcm9jZXNzLmVudi5FU1BSRVNTT19KQVZBX0RFQlVHID09PSAndHJ1ZScsXG4gICAgICAnLWUnLCAnZGlzYWJsZUFuYWx5dGljcycsIHRydWUsIC8vIFRvIGF2b2lkIHVuZXhwZWN0ZWQgZXJyb3IgYnkgZ29vZ2xlIGFuYWx5dGljc1xuICAgIF07XG5cbiAgICBpZiAoXy5pc0Jvb2xlYW4odGhpcy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSkpIHtcbiAgICAgIGNtZC5wdXNoKCctZScsICdESVNBQkxFX1NVUFBSRVNTX0FDQ0VTU0lCSUxJVFlfU0VSVklDRVMnLCB0aGlzLmRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBjbWQucHVzaChgJHtURVNUX0FQS19QS0d9L2FuZHJvaWR4LnRlc3QucnVubmVyLkFuZHJvaWRKVW5pdFJ1bm5lcmApO1xuXG4gICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgRXNwcmVzc28gU2VydmVyIHYke3ZlcnNpb259IHdpdGggY21kOiBhZGIgJHtjbWQuam9pbignICcpfWApO1xuXG4gICAgbGV0IGhhc1NvY2tldEVycm9yID0gZmFsc2U7XG4gICAgLy8gc3RhcnQgdGhlIGluc3RydW1lbnRhdGlvbiBwcm9jZXNzXG4gICAgdGhpcy5qd3Byb3h5Lmluc3RydW1lbnRhdGlvblN0YXRlID0ge1xuICAgICAgZXhpdGVkOiBmYWxzZSxcbiAgICAgIGNyYXNoZWQ6IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5pbnN0UHJvY2VzcyA9IHRoaXMuYWRiLmNyZWF0ZVN1YlByb2Nlc3MoY21kKTtcbiAgICB0aGlzLmluc3RQcm9jZXNzLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgSW5zdHJ1bWVudGF0aW9uIHByb2Nlc3MgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9IGZyb20gc2lnbmFsICR7c2lnbmFsfWApO1xuICAgICAgdGhpcy5qd3Byb3h5Lmluc3RydW1lbnRhdGlvblN0YXRlLmV4aXRlZCA9IHRydWU7XG4gICAgfSk7XG4gICAgdGhpcy5pbnN0UHJvY2Vzcy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICBjb25zdCBsaW5lID0gc3Rkb3V0IHx8IHN0ZGVycjtcbiAgICAgIGlmIChfLmlzRW1wdHkobGluZS50cmltKCkpKSB7XG4gICAgICAgIC8vIERvIG5vdCBwcmludCBlbXB0eSBsaW5lcyBpbnRvIHRoZSBzeXN0ZW0gbG9nXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2cuZGVidWcoYFtJbnN0cnVtZW50YXRpb25dICR7bGluZS50cmltKCl9YCk7XG4gICAgICAvLyBBICdTb2NrZXRFeGNlcHRpb24nIGluZGljYXRlcyB0aGF0IHdlIGNvdWxkbid0IGNvbm5lY3QgdG8gdGhlIEVzcHJlc3NvIHNlcnZlcixcbiAgICAgIC8vIGJlY2F1c2UgdGhlIElOVEVSTkVUIHBlcm1pc3Npb24gaXMgbm90IHNldFxuICAgICAgaWYgKGxpbmUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnamF2YS5uZXQuc29ja2V0ZXhjZXB0aW9uJykpIHtcbiAgICAgICAgaGFzU29ja2V0RXJyb3IgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChsaW5lLmluY2x1ZGVzKCdQcm9jZXNzIGNyYXNoZWQnKSkge1xuICAgICAgICB0aGlzLmp3cHJveHkuaW5zdHJ1bWVudGF0aW9uU3RhdGUuY3Jhc2hlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGF3YWl0IHRoaXMuaW5zdFByb2Nlc3Muc3RhcnQoMCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgV2FpdGluZyB1cCB0byAke3RoaXMuc2VydmVyTGF1bmNoVGltZW91dH1tcyBmb3IgRXNwcmVzc28gc2VydmVyIHRvIGJlIG9ubGluZWApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGhhc1NvY2tldEVycm9yKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgRXNwcmVzc28gc2VydmVyIGhhcyBmYWlsZWQgdG8gc3RhcnQgZHVlIHRvIGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9uLiBgICtcbiAgICAgICAgICAgIGBNYWtlIHN1cmUgdGhlICdJTlRFUk5FVCcgcGVybWlzc2lvbiBpcyByZXF1ZXN0ZWQgaW4gdGhlIEFuZHJvaWQgbWFuaWZlc3Qgb2YgeW91ciBgICtcbiAgICAgICAgICAgIGBhcHBsaWNhdGlvbiB1bmRlciB0ZXN0ICg8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT1cImFuZHJvaWQucGVybWlzc2lvbi5JTlRFUk5FVFwiIC8+KWApO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuandwcm94eS5pbnN0cnVtZW50YXRpb25TdGF0ZS5leGl0ZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBFc3ByZXNzbyBzZXJ2ZXIgcHJvY2VzcyBoYXMgYmVlbiB1bmV4cGVjdGVkbHkgdGVybWluYXRlZC4gYCArXG4gICAgICAgICAgICBgQ2hlY2sgdGhlIEFwcGl1bSBzZXJ2ZXIgbG9nIGFuZCB0aGUgbG9nY2F0IG91dHB1dCBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmp3cHJveHkuY29tbWFuZCgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IHRoaXMuc2VydmVyTGF1bmNoVGltZW91dCxcbiAgICAgICAgaW50ZXJ2YWxNczogNTAwLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKC9Db25kaXRpb24gdW5tZXQvLnRlc3QoZS5tZXNzYWdlKSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaW1lZCBvdXQgd2FpdGluZyBmb3IgRXNwcmVzc28gc2VydmVyIHRvIGJlIGAgK1xuICAgICAgICAgIGBvbmxpbmUgd2l0aGluICR7dGhpcy5zZXJ2ZXJMYXVuY2hUaW1lb3V0fW1zLiBUaGUgdGltZW91dCB2YWx1ZSBjb3VsZCBiZSBgICtcbiAgICAgICAgICBgY3VzdG9taXplZCB1c2luZyAnZXNwcmVzc29TZXJ2ZXJMYXVuY2hUaW1lb3V0JyBjYXBhYmlsaXR5YCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICB0aGlzLmxvZy5pbmZvKGBFc3ByZXNzbyBzZXJ2ZXIgaXMgb25saW5lLiBgICtcbiAgICAgIGBUaGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyB0b29rICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zYCk7XG4gICAgdGhpcy5sb2cuaW5mbygnU3RhcnRpbmcgdGhlIHNlc3Npb24nKTtcblxuICAgIGF3YWl0IHRoaXMuandwcm94eS5jb21tYW5kKCcvc2Vzc2lvbicsICdQT1NUJywge1xuICAgICAgY2FwYWJpbGl0aWVzOiB7XG4gICAgICAgIGZpcnN0TWF0Y2g6IFtjYXBzXSxcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHt9XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5yZWNvcmRUYXJnZXRBcHBQYWNrYWdlKCk7XG4gIH1cblxuICBhc3luYyByZWNvcmRUYXJnZXRBcHBQYWNrYWdlICgpIHtcbiAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbYGVjaG8gXCIke3RoaXMuYXBwUGFja2FnZX1cIiA+IFwiJHtUQVJHRVRfUEFDS0FHRV9DT05UQUlORVJ9XCJgXSk7XG4gICAgdGhpcy5sb2cuaW5mbyhgUmVjb3JkZWQgdGhlIHRhcmdldCBhcHBsaWNhdGlvbiBwYWNrYWdlICcke3RoaXMuYXBwUGFja2FnZX0nIHRvICR7VEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSfWApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0RlbGV0aW5nIEVzcHJlc3NvIHNlcnZlciBzZXNzaW9uJyk7XG4gICAgLy8gcmVseSBvbiBqd3Byb3h5J3MgaW50ZWxsaWdlbmNlIHRvIGtub3cgd2hhdCB3ZSdyZSB0YWxraW5nIGFib3V0IGFuZFxuICAgIC8vIGRlbGV0ZSB0aGUgY3VycmVudCBzZXNzaW9uXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuandwcm94eS5jb21tYW5kKCcvJywgJ0RFTEVURScpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cud2FybihgRGlkIG5vdCBnZXQgY29uZmlybWF0aW9uIEVzcHJlc3NvIGRlbGV0ZVNlc3Npb24gd29ya2VkOyBgICtcbiAgICAgICAgICBgRXJyb3Igd2FzOiAke2Vycn1gKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbnN0UHJvY2VzcyAmJiB0aGlzLmluc3RQcm9jZXNzLmlzUnVubmluZykge1xuICAgICAgYXdhaXQgdGhpcy5pbnN0UHJvY2Vzcy5zdG9wKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IEVzcHJlc3NvUnVubmVyLCBSRVFVSVJFRF9QQVJBTVMsIFRFU1RfQVBLX1BLRyB9O1xuZXhwb3J0IGRlZmF1bHQgRXNwcmVzc29SdW5uZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsZ0JBQWdCLEdBQUdDLGFBQUEsQ0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCLElBQXhCLEVBQThCLElBQTlCLEVBQW9DLGlCQUFwQyxDQUF6Qjs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsK0JBQXJCOztBQUNBLE1BQU1DLGVBQWUsR0FBRyxDQUN0QixLQURzQixFQUV0QixRQUZzQixFQUd0QixNQUhzQixFQUl0QixZQUpzQixFQUt0QixZQUxzQixFQU10QixZQU5zQixFQU90QixzQkFQc0IsQ0FBeEI7O0FBU0EsTUFBTUMsaUNBQWlDLEdBQUcsS0FBMUM7QUFDQSxNQUFNQyx3QkFBd0IsR0FBRyxxQ0FBakM7O0FBRUEsTUFBTUMsYUFBTixTQUE0QkMsZUFBNUIsQ0FBb0M7RUFDaEIsTUFBWkMsWUFBWSxDQUFFQyxHQUFGLEVBQU9DLE1BQVAs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
358
+ exports.default = _default;
359
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJURVNUX1NFUlZFUl9ST09UIiwicGF0aCIsInJlc29sdmUiLCJfX2Rpcm5hbWUiLCJURVNUX0FQS19QS0ciLCJSRVFVSVJFRF9QQVJBTVMiLCJFU1BSRVNTT19TRVJWRVJfTEFVTkNIX1RJTUVPVVRfTVMiLCJUQVJHRVRfUEFDS0FHRV9DT05UQUlORVIiLCJFc3ByZXNzb1Byb3h5IiwiSldQcm94eSIsInByb3h5Q29tbWFuZCIsInVybCIsIm1ldGhvZCIsImJvZHkiLCJjcmFzaGVkIiwiZXhpdGVkIiwiaW5zdHJ1bWVudGF0aW9uU3RhdGUiLCJlcnJvcnMiLCJJbnZhbGlkQ29udGV4dEVycm9yIiwiRXNwcmVzc29SdW5uZXIiLCJjb25zdHJ1Y3RvciIsImxvZyIsIm9wdHMiLCJyZXEiLCJ1dGlsIiwiaGFzVmFsdWUiLCJFcnJvciIsImp3cHJveHkiLCJzZXJ2ZXIiLCJob3N0IiwicG9ydCIsInN5c3RlbVBvcnQiLCJiYXNlIiwia2VlcEFsaXZlIiwicHJveHlSZXFSZXMiLCJiaW5kIiwiY29tbWFuZCIsIm1hbmlmZXN0UGF5bG9hZCIsImdldFBhY2thZ2VJbmZvU3luYyIsIm1vZFNlcnZlck5hbWUiLCJmcyIsInNhbml0aXplTmFtZSIsInZlcnNpb24iLCJhcHBQYWNrYWdlIiwiYWRiIiwiY3VyRGV2aWNlSWQiLCJyZXBsYWNlbWVudCIsIm1vZFNlcnZlclBhdGgiLCJ0bXBEaXIiLCJzaG93R3JhZGxlTG9nIiwiZXNwcmVzc29CdWlsZENvbmZpZyIsInNlcnZlckxhdW5jaFRpbWVvdXQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJkaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSIsInVzZUtleXN0b3JlIiwia2V5c3RvcmVQYXRoIiwia2V5c3RvcmVQYXNzd29yZCIsImtleUFsaWFzIiwia2V5UGFzc3dvcmQiLCJzaWduaW5nQ29uZmlnIiwiYnVpbGRTZXJ2ZXJTaWduaW5nQ29uZmlnIiwia2V5c3RvcmVGaWxlIiwiaXNBcHBQYWNrYWdlQ2hhbmdlZCIsImZpbGVFeGlzdHMiLCJkZWJ1ZyIsInByZXZpb3VzQXBwUGFja2FnZSIsInNoZWxsIiwidHJpbSIsImluc3RhbGxTZXJ2ZXIiLCJhcHBTdGF0ZSIsImdldEFwcGxpY2F0aW9uSW5zdGFsbFN0YXRlIiwic2hvdWxkVW5pbnN0YWxsQXBwIiwiQVBQX0lOU1RBTExfU1RBVEUiLCJPTERFUl9WRVJTSU9OX0lOU1RBTExFRCIsIk5FV0VSX1ZFUlNJT05fSU5TVEFMTEVEIiwiaW5jbHVkZXMiLCJzaG91bGRJbnN0YWxsQXBwIiwiTk9UX0lOU1RBTExFRCIsImluZm8iLCJ1bmluc3RhbGxBcGsiLCJlcnIiLCJ3YXJuIiwibWVzc2FnZSIsImluc3RhbGwiLCJyZXBsYWNlIiwidGltZW91dCIsImVycm9yQW5kVGhyb3ciLCJpbnN0YWxsVGVzdEFwayIsInJlYnVpbGQiLCJmb3JjZUVzcHJlc3NvUmVidWlsZCIsImV4aXN0cyIsInVubGluayIsImJ1aWxkTmV3TW9kU2VydmVyIiwiaXNTaWduZWQiLCJjaGVja0Fwa0NlcnQiLCJzaWduIiwiYnVpbGRDb25maWd1cmF0aW9uIiwiYnVpbGRDb25maWd1cmF0aW9uU3RyIiwicmVhZEZpbGUiLCJKU09OIiwicGFyc2UiLCJlIiwiZXJyb3IiLCJkaXJOYW1lIiwic2VydmVyUGF0aCIsInJpbXJhZiIsIm1rZGlycCIsImNvcHlHcmFkbGVQcm9qZWN0UmVjdXJzaXZlbHkiLCJTZXJ2ZXJCdWlsZGVyIiwidGVzdEFwcFBhY2thZ2UiLCJidWlsZCIsImFwa1BhdGgiLCJjb3B5RmlsZSIsImNsZWFudXBTZXNzaW9uTGVmdG92ZXJzIiwidmFsdWUiLCJheGlvcyIsImRhdGEiLCJhY3RpdmVTZXNzaW9uSWRzIiwibWFwIiwic2VzcyIsImlkIiwibGVuZ3RoIiwic3RyaW5naWZ5IiwiQiIsImFsbCIsImRlbGF5Iiwic3RhcnRTZXNzaW9uIiwiY2FwcyIsImNtZCIsInByb2Nlc3MiLCJlbnYiLCJFU1BSRVNTT19KQVZBX0RFQlVHIiwiXyIsImlzQm9vbGVhbiIsInB1c2giLCJnZXRQYWNrYWdlSW5mbyIsImpvaW4iLCJoYXNTb2NrZXRFcnJvciIsImluc3RQcm9jZXNzIiwiY3JlYXRlU3ViUHJvY2VzcyIsIm9uIiwiY29kZSIsInNpZ25hbCIsInN0ZG91dCIsInN0ZGVyciIsImxpbmUiLCJpc0VtcHR5IiwidG9Mb3dlckNhc2UiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJ3YWl0Rm9yQ29uZGl0aW9uIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsInRlc3QiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInJlY29yZFRhcmdldEFwcFBhY2thZ2UiLCJkZWxldGVTZXNzaW9uIiwiaXNSdW5uaW5nIiwic3RvcCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9lc3ByZXNzby1ydW5uZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSldQcm94eSwgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgU2VydmVyQnVpbGRlciwgYnVpbGRTZXJ2ZXJTaWduaW5nQ29uZmlnIH0gZnJvbSAnLi9zZXJ2ZXItYnVpbGRlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZzLCB1dGlsLCBta2RpcnAsIHRpbWluZyB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBjb3B5R3JhZGxlUHJvamVjdFJlY3Vyc2l2ZWx5LCBnZXRQYWNrYWdlSW5mb1N5bmMsIGdldFBhY2thZ2VJbmZvIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuXG5cbmNvbnN0IFRFU1RfU0VSVkVSX1JPT1QgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnZXNwcmVzc28tc2VydmVyJyk7XG5jb25zdCBURVNUX0FQS19QS0cgPSAnaW8uYXBwaXVtLmVzcHJlc3Nvc2VydmVyLnRlc3QnO1xuY29uc3QgUkVRVUlSRURfUEFSQU1TID0gW1xuICAnYWRiJyxcbiAgJ3RtcERpcicsXG4gICdob3N0JyxcbiAgJ3N5c3RlbVBvcnQnLFxuICAnZGV2aWNlUG9ydCcsXG4gICdhcHBQYWNrYWdlJyxcbiAgJ2ZvcmNlRXNwcmVzc29SZWJ1aWxkJyxcbl07XG5jb25zdCBFU1BSRVNTT19TRVJWRVJfTEFVTkNIX1RJTUVPVVRfTVMgPSA0NTAwMDtcbmNvbnN0IFRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUiA9ICcvZGF0YS9sb2NhbC90bXAvZXNwcmVzc28uYXBwcGFja2FnZSc7XG5cbmNsYXNzIEVzcHJlc3NvUHJveHkgZXh0ZW5kcyBKV1Byb3h5IHtcbiAgYXN5bmMgcHJveHlDb21tYW5kICh1cmwsIG1ldGhvZCwgYm9keSA9IG51bGwpIHtcbiAgICBjb25zdCB7Y3Jhc2hlZCwgZXhpdGVkfSA9IHRoaXMuaW5zdHJ1bWVudGF0aW9uU3RhdGU7XG4gICAgaWYgKGV4aXRlZCkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQ29udGV4dEVycm9yKGAnJHttZXRob2R9ICR7dXJsfScgY2Fubm90IGJlIHByb3hpZWQgdG8gRXNwcmVzc28gc2VydmVyIGJlY2F1c2UgYCArXG4gICAgICAgIGB0aGUgaW5zdHJ1bWVudGF0aW9uIHByb2Nlc3MgaGFzICR7Y3Jhc2hlZCA/ICdjcmFzaGVkJyA6ICdiZWVuIHVuZXhwZWN0ZWRseSB0ZXJtaW5hdGVkJ30uIGAgK1xuICAgICAgICBgQ2hlY2sgdGhlIEFwcGl1bSBzZXJ2ZXIgbG9nIGFuZCB0aGUgbG9nY2F0IG91dHB1dCBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBzdXBlci5wcm94eUNvbW1hbmQodXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG59XG5cbmNsYXNzIEVzcHJlc3NvUnVubmVyIHtcbiAgY29uc3RydWN0b3IgKGxvZywgb3B0cyA9IHt9KSB7XG4gICAgZm9yIChsZXQgcmVxIG9mIFJFUVVJUkVEX1BBUkFNUykge1xuICAgICAgaWYgKCFvcHRzIHx8ICF1dGlsLmhhc1ZhbHVlKG9wdHNbcmVxXSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPcHRpb24gJyR7cmVxfScgaXMgcmVxdWlyZWQhYCk7XG4gICAgICB9XG4gICAgICB0aGlzW3JlcV0gPSBvcHRzW3JlcV07XG4gICAgfVxuICAgIHRoaXMubG9nID0gbG9nO1xuICAgIHRoaXMuandwcm94eSA9IG5ldyBFc3ByZXNzb1Byb3h5KHtcbiAgICAgIGxvZyxcbiAgICAgIHNlcnZlcjogdGhpcy5ob3N0LFxuICAgICAgcG9ydDogdGhpcy5zeXN0ZW1Qb3J0LFxuICAgICAgYmFzZTogJycsXG4gICAgICBrZWVwQWxpdmU6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMuandwcm94eS5wcm94eVJlcVJlcy5iaW5kKHRoaXMuandwcm94eSk7XG4gICAgdGhpcy5wcm94eUNvbW1hbmQgPSB0aGlzLmp3cHJveHkuY29tbWFuZC5iaW5kKHRoaXMuandwcm94eSk7XG4gICAgdGhpcy5qd3Byb3h5Lmluc3RydW1lbnRhdGlvblN0YXRlID0ge1xuICAgICAgZXhpdGVkOiBmYWxzZSxcbiAgICAgIGNyYXNoZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICBjb25zdCB7IG1hbmlmZXN0UGF5bG9hZCB9ID0gZ2V0UGFja2FnZUluZm9TeW5jKCk7XG4gICAgY29uc3QgbW9kU2VydmVyTmFtZSA9IGZzLnNhbml0aXplTmFtZShcbiAgICAgIGAke1RFU1RfQVBLX1BLR31fJHttYW5pZmVzdFBheWxvYWQudmVyc2lvbn1fJHt0aGlzLmFwcFBhY2thZ2V9XyR7dGhpcy5hZGIuY3VyRGV2aWNlSWR9LmFwa2AsXG4gICAgICB7cmVwbGFjZW1lbnQ6ICctJ31cbiAgICApO1xuICAgIHRoaXMubW9kU2VydmVyUGF0aCA9IHBhdGgucmVzb2x2ZSh0aGlzLnRtcERpciwgbW9kU2VydmVyTmFtZSk7XG4gICAgdGhpcy5zaG93R3JhZGxlTG9nID0gb3B0cy5zaG93R3JhZGxlTG9nO1xuICAgIHRoaXMuZXNwcmVzc29CdWlsZENvbmZpZyA9IG9wdHMuZXNwcmVzc29CdWlsZENvbmZpZztcblxuICAgIHRoaXMuc2VydmVyTGF1bmNoVGltZW91dCA9IG9wdHMuc2VydmVyTGF1bmNoVGltZW91dCB8fCBFU1BSRVNTT19TRVJWRVJfTEFVTkNIX1RJTUVPVVRfTVM7XG4gICAgdGhpcy5hbmRyb2lkSW5zdGFsbFRpbWVvdXQgPSBvcHRzLmFuZHJvaWRJbnN0YWxsVGltZW91dDtcblxuICAgIHRoaXMuZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UgPSBvcHRzLmRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlO1xuXG4gICAgLy8gRXNwcmVzc28gU2VydmVyIGFwcCBuZWVkcyB0byBiZSBzaWduZWQgd2l0aCBzYW1lIGtleVN0b3JlIGFzIGFwcFBhY2thZ2VcbiAgICBpZiAob3B0cy51c2VLZXlzdG9yZSAmJiBvcHRzLmtleXN0b3JlUGF0aCAmJiBvcHRzLmtleXN0b3JlUGFzc3dvcmQgJiYgb3B0cy5rZXlBbGlhcyAmJiBvcHRzLmtleVBhc3N3b3JkKSB7XG4gICAgICB0aGlzLnNpZ25pbmdDb25maWcgPSBidWlsZFNlcnZlclNpZ25pbmdDb25maWcoe1xuICAgICAgICBrZXlzdG9yZUZpbGU6IG9wdHMua2V5c3RvcmVQYXRoLFxuICAgICAgICBrZXlzdG9yZVBhc3N3b3JkOiBvcHRzLmtleXN0b3JlUGFzc3dvcmQsXG4gICAgICAgIGtleUFsaWFzOiBvcHRzLmtleUFsaWFzLFxuICAgICAgICBrZXlQYXNzd29yZDogb3B0cy5rZXlQYXNzd29yZFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2lnbmluZ0NvbmZpZyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaXNBcHBQYWNrYWdlQ2hhbmdlZCAoKSB7XG4gICAgaWYgKCFhd2FpdCB0aGlzLmFkYi5maWxlRXhpc3RzKFRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUikpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdUaGUgcHJldmlvdXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHBhY2thZ2UgaXMgdW5rbm93bicpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHByZXZpb3VzQXBwUGFja2FnZSA9IChhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2NhdCcsIFRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUl0pKS50cmltKCk7XG4gICAgdGhpcy5sb2cuZGVidWcoYFRoZSBwcmV2aW91cyB0YXJnZXQgYXBwbGljYXRpb24gcGFja2FnZSB3YXMgJyR7cHJldmlvdXNBcHBQYWNrYWdlfScuIGAgK1xuICAgICAgYFRoZSBjdXJyZW50IHBhY2thZ2UgaXMgJyR7dGhpcy5hcHBQYWNrYWdlfSdgKTtcbiAgICByZXR1cm4gcHJldmlvdXNBcHBQYWNrYWdlICE9PSB0aGlzLmFwcFBhY2thZ2U7XG4gIH1cblxuICAvKipcbiAgICogSW5zdGFsbHMgRXNwcmVzc28gc2VydmVyIGFwayBvbiB0byB0aGUgZGV2aWNlIG9yIGVtdWxhdG9yLlxuICAgKiBFYWNoIGFkYiBjb21tYW5kIHVzZXMgZGVmYXVsdCB0aW1lb3V0IGJ5IHRoZW0uXG4gICAqL1xuICBhc3luYyBpbnN0YWxsU2VydmVyICgpIHtcbiAgICBjb25zdCBhcHBTdGF0ZSA9IGF3YWl0IHRoaXMuYWRiLmdldEFwcGxpY2F0aW9uSW5zdGFsbFN0YXRlKHRoaXMubW9kU2VydmVyUGF0aCwgVEVTVF9BUEtfUEtHKTtcblxuICAgIGNvbnN0IHNob3VsZFVuaW5zdGFsbEFwcCA9IFtcbiAgICAgIHRoaXMuYWRiLkFQUF9JTlNUQUxMX1NUQVRFLk9MREVSX1ZFUlNJT05fSU5TVEFMTEVELFxuICAgICAgdGhpcy5hZGIuQVBQX0lOU1RBTExfU1RBVEUuTkVXRVJfVkVSU0lPTl9JTlNUQUxMRURcbiAgICBdLmluY2x1ZGVzKGFwcFN0YXRlKTtcbiAgICBjb25zdCBzaG91bGRJbnN0YWxsQXBwID0gc2hvdWxkVW5pbnN0YWxsQXBwIHx8IFtcbiAgICAgIHRoaXMuYWRiLkFQUF9JTlNUQUxMX1NUQVRFLk5PVF9JTlNUQUxMRURcbiAgICBdLmluY2x1ZGVzKGFwcFN0YXRlKTtcblxuICAgIGlmIChzaG91bGRVbmluc3RhbGxBcHApIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYFVuaW5zdGFsbGluZyBFc3ByZXNzbyBUZXN0IFNlcnZlciBhcGsgZnJvbSB0aGUgdGFyZ2V0IGRldmljZSAocGtnOiAnJHtURVNUX0FQS19QS0d9JylgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayhURVNUX0FQS19QS0cpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYEVycm9yIHVuaW5zdGFsbGluZyAnJHtURVNUX0FQS19QS0d9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkSW5zdGFsbEFwcCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgSW5zdGFsbGluZyBFc3ByZXNzbyBUZXN0IFNlcnZlciBhcGsgZnJvbSB0aGUgdGFyZ2V0IGRldmljZSAocGF0aDogJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofScpYCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5pbnN0YWxsKHRoaXMubW9kU2VydmVyUGF0aCwgeyByZXBsYWNlOiBmYWxzZSwgdGltZW91dDogdGhpcy5hbmRyb2lkSW5zdGFsbFRpbWVvdXQgfSk7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYEluc3RhbGxlZCBFc3ByZXNzbyBUZXN0IFNlcnZlciBhcGsgJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofScgKHBrZzogJyR7VEVTVF9BUEtfUEtHfScpYCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ2Fubm90IGluc3RhbGwgJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofScgYmVjYXVzZSBvZiAnJHtlcnIubWVzc2FnZX0nYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5zdGFsbFRlc3RBcGsgKCkge1xuICAgIGxldCByZWJ1aWxkID0gdGhpcy5mb3JjZUVzcHJlc3NvUmVidWlsZDtcbiAgICBpZiAocmVidWlsZCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYCdmb3JjZUVzcHJlc3NvUmVidWlsZCcgY2FwYWJpbGl0eSBpcyBlbmFibGVkYCk7XG4gICAgfSBlbHNlIGlmIChhd2FpdCB0aGlzLmlzQXBwUGFja2FnZUNoYW5nZWQoKSkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgRm9yY2luZyBFc3ByZXNzbyBzZXJ2ZXIgcmVidWlsZCBiZWNhdXNlIG9mIGNoYW5nZWQgYXBwbGljYXRpb24gcGFja2FnZWApO1xuICAgICAgcmVidWlsZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHJlYnVpbGQgJiYgYXdhaXQgZnMuZXhpc3RzKHRoaXMubW9kU2VydmVyUGF0aCkpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBEZWxldGluZyB0aGUgb2Jzb2xldGUgRXNwcmVzc28gc2VydmVyIHBhY2thZ2UgJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofSdgKTtcbiAgICAgIGF3YWl0IGZzLnVubGluayh0aGlzLm1vZFNlcnZlclBhdGgpO1xuICAgIH1cbiAgICBpZiAoIShhd2FpdCBmcy5leGlzdHModGhpcy5tb2RTZXJ2ZXJQYXRoKSkpIHtcbiAgICAgIGF3YWl0IHRoaXMuYnVpbGROZXdNb2RTZXJ2ZXIoKTtcbiAgICB9XG4gICAgY29uc3QgaXNTaWduZWQgPSBhd2FpdCB0aGlzLmFkYi5jaGVja0Fwa0NlcnQodGhpcy5tb2RTZXJ2ZXJQYXRoLCBURVNUX0FQS19QS0cpO1xuICAgIGlmICghaXNTaWduZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNpZ24odGhpcy5tb2RTZXJ2ZXJQYXRoKTtcbiAgICB9XG4gICAgaWYgKChyZWJ1aWxkIHx8ICFpc1NpZ25lZCkgJiYgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKFRFU1RfQVBLX1BLRykpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ1VuaW5zdGFsbGVkIHRoZSBvYnNvbGV0ZSBFc3ByZXNzbyBzZXJ2ZXIgcGFja2FnZSBmcm9tIHRoZSBkZXZpY2UgdW5kZXIgdGVzdCcpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuaW5zdGFsbFNlcnZlcigpO1xuICB9XG5cbiAgYXN5bmMgYnVpbGROZXdNb2RTZXJ2ZXIgKCkge1xuICAgIGxldCBidWlsZENvbmZpZ3VyYXRpb24gPSB7fTtcbiAgICBpZiAodGhpcy5lc3ByZXNzb0J1aWxkQ29uZmlnKSB7XG4gICAgICBsZXQgYnVpbGRDb25maWd1cmF0aW9uU3RyO1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyh0aGlzLmVzcHJlc3NvQnVpbGRDb25maWcpKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYExvYWRpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZnJvbSAnJHt0aGlzLmVzcHJlc3NvQnVpbGRDb25maWd9J2ApO1xuICAgICAgICBidWlsZENvbmZpZ3VyYXRpb25TdHIgPSBhd2FpdCBmcy5yZWFkRmlsZSh0aGlzLmVzcHJlc3NvQnVpbGRDb25maWcsICd1dGY4Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBMb2FkaW5nIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZyb20gJ2VzcHJlc3NvQnVpbGRDb25maWcnIGNhcGFiaWxpdHlgKTtcbiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uU3RyID0gdGhpcy5lc3ByZXNzb0J1aWxkQ29uZmlnO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gSlNPTi5wYXJzZShidWlsZENvbmZpZ3VyYXRpb25TdHIpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvcignQ2Fubm90IHBhcnNlIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIEpTT04nLCBlKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZGlyTmFtZSA9IGZzLnNhbml0aXplTmFtZShgZXNwcmVzc28tc2VydmVyLSR7dGhpcy5hZGIuY3VyRGV2aWNlSWR9YCwge1xuICAgICAgcmVwbGFjZW1lbnQ6ICctJyxcbiAgICB9KTtcbiAgICBjb25zdCBzZXJ2ZXJQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMudG1wRGlyLCBkaXJOYW1lKTtcbiAgICB0aGlzLmxvZy5pbmZvKGBCdWlsZGluZyBlc3ByZXNzbyBzZXJ2ZXIgaW4gJyR7c2VydmVyUGF0aH0nYCk7XG4gICAgdGhpcy5sb2cuZGVidWcoYFRoZSBidWlsZCBmb2xkZXIgcm9vdCBjb3VsZCBiZSBjdXN0b21pemVkIGJ5IGNoYW5naW5nIHRoZSAndG1wRGlyJyBjYXBhYmlsaXR5YCk7XG4gICAgYXdhaXQgZnMucmltcmFmKHNlcnZlclBhdGgpO1xuICAgIGF3YWl0IG1rZGlycChzZXJ2ZXJQYXRoKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgQ29weWluZyBlc3ByZXNzbyBzZXJ2ZXIgdGVtcGxhdGUgZnJvbSAoJyR7VEVTVF9TRVJWRVJfUk9PVH0nIHRvICcke3NlcnZlclBhdGh9JylgKTtcbiAgICBhd2FpdCBjb3B5R3JhZGxlUHJvamVjdFJlY3Vyc2l2ZWx5KFRFU1RfU0VSVkVSX1JPT1QsIHNlcnZlclBhdGgpO1xuICAgIHRoaXMubG9nLmRlYnVnKCdCdWxkaW5nIGVzcHJlc3NvIHNlcnZlcicpO1xuICAgIGF3YWl0IG5ldyBTZXJ2ZXJCdWlsZGVyKHRoaXMubG9nLCB7XG4gICAgICBzZXJ2ZXJQYXRoLCBidWlsZENvbmZpZ3VyYXRpb24sXG4gICAgICBzaG93R3JhZGxlTG9nOiB0aGlzLnNob3dHcmFkbGVMb2csXG4gICAgICB0ZXN0QXBwUGFja2FnZTogdGhpcy5hcHBQYWNrYWdlLFxuICAgICAgc2lnbmluZ0NvbmZpZzogdGhpcy5zaWduaW5nQ29uZmlnXG4gICAgfSkuYnVpbGQoKTtcbiAgICBjb25zdCBhcGtQYXRoID0gcGF0aC5yZXNvbHZlKHNlcnZlclBhdGgsICdhcHAnLCAnYnVpbGQnLCAnb3V0cHV0cycsICdhcGsnLCAnYW5kcm9pZFRlc3QnLCAnZGVidWcnLCAnYXBwLWRlYnVnLWFuZHJvaWRUZXN0LmFwaycpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBDb3B5aW5nIGJ1aWx0IGFwayBmcm9tICcke2Fwa1BhdGh9JyB0byAnJHt0aGlzLm1vZFNlcnZlclBhdGh9J2ApO1xuICAgIGF3YWl0IGZzLmNvcHlGaWxlKGFwa1BhdGgsIHRoaXMubW9kU2VydmVyUGF0aCk7XG4gIH1cblxuICBhc3luYyBjbGVhbnVwU2Vzc2lvbkxlZnRvdmVycyAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ1BlcmZvcm1pbmcgY2xlYW51cCBvZiBhdXRvbWF0aW9uIGxlZnRvdmVycycpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmw6IGBodHRwOi8vJHt0aGlzLmhvc3R9OiR7dGhpcy5zeXN0ZW1Qb3J0fS9zZXNzaW9uc2AsXG4gICAgICAgIHRpbWVvdXQ6IDUwMCxcbiAgICAgIH0pKS5kYXRhO1xuICAgICAgY29uc3QgYWN0aXZlU2Vzc2lvbklkcyA9IHZhbHVlLm1hcCgoc2VzcykgPT4gc2Vzcy5pZCk7XG4gICAgICBpZiAoYWN0aXZlU2Vzc2lvbklkcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYFRoZSBmb2xsb3dpbmcgb2Jzb2xldGUgc2Vzc2lvbnMgYXJlIHN0aWxsIHJ1bm5pbmc6ICR7SlNPTi5zdHJpbmdpZnkoYWN0aXZlU2Vzc2lvbklkcyl9YCk7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKCdDbGVhbmluZyB1cCB0aGUgb2Jzb2xldGUgc2Vzc2lvbnMnKTtcbiAgICAgICAgYXdhaXQgQi5hbGwoYWN0aXZlU2Vzc2lvbklkcy5tYXAoKGlkKSA9PlxuICAgICAgICAgIGF4aW9zKHtcbiAgICAgICAgICAgIHVybDogYGh0dHA6Ly8ke3RoaXMuaG9zdH06JHt0aGlzLnN5c3RlbVBvcnR9L3Nlc3Npb24vJHtpZH1gLFxuICAgICAgICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgICAgICB9KVxuICAgICAgICApKTtcbiAgICAgICAgLy8gTGV0IGFsbCBzZXNzaW9ucyB0byBiZSBwcm9wZXJseSB0ZXJtaW5hdGVkIGJlZm9yZSBjb250aW51aW5nXG4gICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZygnTm8gb2Jzb2xldGUgc2Vzc2lvbnMgaGF2ZSBiZWVuIGRldGVjdGVkJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYE5vIG9ic29sZXRlIHNlc3Npb25zIGhhdmUgYmVlbiBkZXRlY3RlZCAoJHtlLm1lc3NhZ2V9KWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0YXJ0U2Vzc2lvbiAoY2Fwcykge1xuICAgIGF3YWl0IHRoaXMuY2xlYW51cFNlc3Npb25MZWZ0b3ZlcnMoKTtcblxuICAgIGNvbnN0IGNtZCA9IFtcbiAgICAgICdzaGVsbCcsXG4gICAgICAnYW0nLCAnaW5zdHJ1bWVudCcsXG4gICAgICAnLXcnLFxuICAgICAgJy1lJywgJ2RlYnVnJywgcHJvY2Vzcy5lbnYuRVNQUkVTU09fSkFWQV9ERUJVRyA9PT0gJ3RydWUnLFxuICAgICAgJy1lJywgJ2Rpc2FibGVBbmFseXRpY3MnLCB0cnVlLCAvLyBUbyBhdm9pZCB1bmV4cGVjdGVkIGVycm9yIGJ5IGdvb2dsZSBhbmFseXRpY3NcbiAgICBdO1xuXG4gICAgaWYgKF8uaXNCb29sZWFuKHRoaXMuZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UpKSB7XG4gICAgICBjbWQucHVzaCgnLWUnLCAnRElTQUJMRV9TVVBQUkVTU19BQ0NFU1NJQklMSVRZX1NFUlZJQ0VTJywgdGhpcy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSk7XG4gICAgfVxuXG4gICAgY21kLnB1c2goYCR7VEVTVF9BUEtfUEtHfS9hbmRyb2lkeC50ZXN0LnJ1bm5lci5BbmRyb2lkSlVuaXRSdW5uZXJgKTtcblxuICAgIGNvbnN0IHttYW5pZmVzdFBheWxvYWR9ID0gYXdhaXQgZ2V0UGFja2FnZUluZm8oKTtcbiAgICB0aGlzLmxvZy5pbmZvKGBTdGFydGluZyBFc3ByZXNzbyBTZXJ2ZXIgdiR7bWFuaWZlc3RQYXlsb2FkLnZlcnNpb259IHdpdGggY21kOiBhZGIgJHtjbWQuam9pbignICcpfWApO1xuXG4gICAgbGV0IGhhc1NvY2tldEVycm9yID0gZmFsc2U7XG4gICAgLy8gc3RhcnQgdGhlIGluc3RydW1lbnRhdGlvbiBwcm9jZXNzXG4gICAgdGhpcy5qd3Byb3h5Lmluc3RydW1lbnRhdGlvblN0YXRlID0ge1xuICAgICAgZXhpdGVkOiBmYWxzZSxcbiAgICAgIGNyYXNoZWQ6IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5pbnN0UHJvY2VzcyA9IHRoaXMuYWRiLmNyZWF0ZVN1YlByb2Nlc3MoY21kKTtcbiAgICB0aGlzLmluc3RQcm9jZXNzLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgSW5zdHJ1bWVudGF0aW9uIHByb2Nlc3MgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9IGZyb20gc2lnbmFsICR7c2lnbmFsfWApO1xuICAgICAgdGhpcy5qd3Byb3h5Lmluc3RydW1lbnRhdGlvblN0YXRlLmV4aXRlZCA9IHRydWU7XG4gICAgfSk7XG4gICAgdGhpcy5pbnN0UHJvY2Vzcy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICBjb25zdCBsaW5lID0gc3Rkb3V0IHx8IHN0ZGVycjtcbiAgICAgIGlmIChfLmlzRW1wdHkobGluZS50cmltKCkpKSB7XG4gICAgICAgIC8vIERvIG5vdCBwcmludCBlbXB0eSBsaW5lcyBpbnRvIHRoZSBzeXN0ZW0gbG9nXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2cuZGVidWcoYFtJbnN0cnVtZW50YXRpb25dICR7bGluZS50cmltKCl9YCk7XG4gICAgICAvLyBBICdTb2NrZXRFeGNlcHRpb24nIGluZGljYXRlcyB0aGF0IHdlIGNvdWxkbid0IGNvbm5lY3QgdG8gdGhlIEVzcHJlc3NvIHNlcnZlcixcbiAgICAgIC8vIGJlY2F1c2UgdGhlIElOVEVSTkVUIHBlcm1pc3Npb24gaXMgbm90IHNldFxuICAgICAgaWYgKGxpbmUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnamF2YS5uZXQuc29ja2V0ZXhjZXB0aW9uJykpIHtcbiAgICAgICAgaGFzU29ja2V0RXJyb3IgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChsaW5lLmluY2x1ZGVzKCdQcm9jZXNzIGNyYXNoZWQnKSkge1xuICAgICAgICB0aGlzLmp3cHJveHkuaW5zdHJ1bWVudGF0aW9uU3RhdGUuY3Jhc2hlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGF3YWl0IHRoaXMuaW5zdFByb2Nlc3Muc3RhcnQoMCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgV2FpdGluZyB1cCB0byAke3RoaXMuc2VydmVyTGF1bmNoVGltZW91dH1tcyBmb3IgRXNwcmVzc28gc2VydmVyIHRvIGJlIG9ubGluZWApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGhhc1NvY2tldEVycm9yKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgRXNwcmVzc28gc2VydmVyIGhhcyBmYWlsZWQgdG8gc3RhcnQgZHVlIHRvIGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9uLiBgICtcbiAgICAgICAgICAgIGBNYWtlIHN1cmUgdGhlICdJTlRFUk5FVCcgcGVybWlzc2lvbiBpcyByZXF1ZXN0ZWQgaW4gdGhlIEFuZHJvaWQgbWFuaWZlc3Qgb2YgeW91ciBgICtcbiAgICAgICAgICAgIGBhcHBsaWNhdGlvbiB1bmRlciB0ZXN0ICg8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT1cImFuZHJvaWQucGVybWlzc2lvbi5JTlRFUk5FVFwiIC8+KWApO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuandwcm94eS5pbnN0cnVtZW50YXRpb25TdGF0ZS5leGl0ZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBFc3ByZXNzbyBzZXJ2ZXIgcHJvY2VzcyBoYXMgYmVlbiB1bmV4cGVjdGVkbHkgdGVybWluYXRlZC4gYCArXG4gICAgICAgICAgICBgQ2hlY2sgdGhlIEFwcGl1bSBzZXJ2ZXIgbG9nIGFuZCB0aGUgbG9nY2F0IG91dHB1dCBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmp3cHJveHkuY29tbWFuZCgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IHRoaXMuc2VydmVyTGF1bmNoVGltZW91dCxcbiAgICAgICAgaW50ZXJ2YWxNczogNTAwLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKC9Db25kaXRpb24gdW5tZXQvLnRlc3QoZS5tZXNzYWdlKSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaW1lZCBvdXQgd2FpdGluZyBmb3IgRXNwcmVzc28gc2VydmVyIHRvIGJlIGAgK1xuICAgICAgICAgIGBvbmxpbmUgd2l0aGluICR7dGhpcy5zZXJ2ZXJMYXVuY2hUaW1lb3V0fW1zLiBUaGUgdGltZW91dCB2YWx1ZSBjb3VsZCBiZSBgICtcbiAgICAgICAgICBgY3VzdG9taXplZCB1c2luZyAnZXNwcmVzc29TZXJ2ZXJMYXVuY2hUaW1lb3V0JyBjYXBhYmlsaXR5YCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICB0aGlzLmxvZy5pbmZvKGBFc3ByZXNzbyBzZXJ2ZXIgaXMgb25saW5lLiBgICtcbiAgICAgIGBUaGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyB0b29rICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zYCk7XG4gICAgdGhpcy5sb2cuaW5mbygnU3RhcnRpbmcgdGhlIHNlc3Npb24nKTtcblxuICAgIGF3YWl0IHRoaXMuandwcm94eS5jb21tYW5kKCcvc2Vzc2lvbicsICdQT1NUJywge1xuICAgICAgY2FwYWJpbGl0aWVzOiB7XG4gICAgICAgIGZpcnN0TWF0Y2g6IFtjYXBzXSxcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHt9XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5yZWNvcmRUYXJnZXRBcHBQYWNrYWdlKCk7XG4gIH1cblxuICBhc3luYyByZWNvcmRUYXJnZXRBcHBQYWNrYWdlICgpIHtcbiAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbYGVjaG8gXCIke3RoaXMuYXBwUGFja2FnZX1cIiA+IFwiJHtUQVJHRVRfUEFDS0FHRV9DT05UQUlORVJ9XCJgXSk7XG4gICAgdGhpcy5sb2cuaW5mbyhgUmVjb3JkZWQgdGhlIHRhcmdldCBhcHBsaWNhdGlvbiBwYWNrYWdlICcke3RoaXMuYXBwUGFja2FnZX0nIHRvICR7VEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSfWApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0RlbGV0aW5nIEVzcHJlc3NvIHNlcnZlciBzZXNzaW9uJyk7XG4gICAgLy8gcmVseSBvbiBqd3Byb3h5J3MgaW50ZWxsaWdlbmNlIHRvIGtub3cgd2hhdCB3ZSdyZSB0YWxraW5nIGFib3V0IGFuZFxuICAgIC8vIGRlbGV0ZSB0aGUgY3VycmVudCBzZXNzaW9uXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuandwcm94eS5jb21tYW5kKCcvJywgJ0RFTEVURScpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cud2FybihgRGlkIG5vdCBnZXQgY29uZmlybWF0aW9uIEVzcHJlc3NvIGRlbGV0ZVNlc3Npb24gd29ya2VkOyBgICtcbiAgICAgICAgICBgRXJyb3Igd2FzOiAke2Vycn1gKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbnN0UHJvY2VzcyAmJiB0aGlzLmluc3RQcm9jZXNzLmlzUnVubmluZykge1xuICAgICAgYXdhaXQgdGhpcy5pbnN0UHJvY2Vzcy5zdG9wKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IEVzcHJlc3NvUnVubmVyLCBSRVFVSVJFRF9QQVJBTVMsIFRFU1RfQVBLX1BLRyB9O1xuZXhwb3J0IGRlZmF1bHQgRXNwcmVzc29SdW5uZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsZ0JBQWdCLEdBQUdDLGFBQUEsQ0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCLElBQXhCLEVBQThCLElBQTlCLEVBQW9DLGlCQUFwQyxDQUF6Qjs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsK0JBQXJCOztBQUNBLE1BQU1DLGVBQWUsR0FBRyxDQUN0QixLQURzQixFQUV0QixRQUZzQixFQUd0QixNQUhzQixFQUl0QixZQUpzQixFQUt0QixZQUxzQixFQU10QixZQU5zQixFQU90QixzQkFQc0IsQ0FBeEI7O0FBU0EsTUFBTUMsaUNBQWlDLEdBQUcsS0FBMUM7QUFDQSxNQUFN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
@@ -12,7 +12,5 @@ var _support = require("appium/support");
12
12
  const log = _support.logger.getLogger('Espresso');
13
13
 
14
14
  var _default = log;
15
- exports.default = _default;require('source-map-support').install();
16
-
17
-
18
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2dlci5qcyIsIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0VzcHJlc3NvJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBR0EsTUFBTUEsR0FBRyxHQUFHQyxlQUFBLENBQU9DLFNBQVAsQ0FBaUIsVUFBakIsQ0FBWjs7ZUFFZUYsRyJ9
15
+ exports.default = _default;
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi9saWIvbG9nZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcblxuXG5jb25zdCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdFc3ByZXNzbycpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2c7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUdBLE1BQU1BLEdBQUcsR0FBR0MsZUFBQSxDQUFPQyxTQUFQLENBQWlCLFVBQWpCLENBQVo7O2VBRWVGLEcifQ==