oxygen-cli 1.24.0 → 1.25.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.24.1 (2022-07-29)
4
+
5
+ #### :beetle: Bug Fix
6
+ * Closing bracket indentation in `log.*` output.
7
+ * Handing of objects with circular references in `log.*` commands.
8
+ * `web.assertTextPresent` and `web.assertTextNotPresent` not properly restoring timeouts on exit.
9
+
10
+ #### :house: Internal
11
+ * Bump dependencies.
12
+
3
13
  ## v1.24.0 (2022-07-19)
4
14
 
5
15
  #### :tada: New Feature
@@ -297,11 +297,11 @@ function deleteNullProperties(obj) {
297
297
  return clone;
298
298
  }
299
299
 
300
- function processTargetPath(targetPath) {
300
+ function processTargetPath(targetPath, cwd) {
301
301
  if (typeof targetPath === 'undefined') {
302
- targetPath = process.cwd();
302
+ targetPath = cwd || process.cwd();
303
303
  } else {
304
- targetPath = _util.default.resolvePath(targetPath, process.cwd());
304
+ targetPath = _util.default.resolvePath(targetPath, cwd || process.cwd());
305
305
  }
306
306
 
307
307
  if (!_fs.default.existsSync(targetPath)) {
@@ -332,11 +332,11 @@ function processTargetPath(targetPath) {
332
332
 
333
333
  return {
334
334
  path: targetPath,
335
- cwd: _path.default.dirname(targetPath),
335
+ cwd: cwd || _path.default.dirname(targetPath),
336
336
  name: _util.default.getFileNameWithoutExt(targetPath),
337
337
  fullName: _path.default.basename(targetPath),
338
338
  baseName: _path.default.basename(_path.default.dirname(targetPath)),
339
339
  extension: _path.default.extname(targetPath)
340
340
  };
341
341
  }
342
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLXV0aWwuanMiXSwibmFtZXMiOlsiT1hZR0VOX0NPTkZJR19GSUxFX05BTUUiLCJPWFlHRU5fRU5WX0ZJTEVfTkFNRSIsIk9YWUdFTl9QQUdFX09CSkVDVF9GSUxFX05BTUUiLCJnZW5lcmF0ZVRlc3RPcHRpb25zIiwiY29uZmlnIiwiYXJndiIsIm9wdGlvbnMiLCJlbnYiLCJsb2FkRW52aXJvbm1lbnRWYXJpYWJsZXMiLCJwbyIsImdldFBhZ2VPYmplY3RGaWxlUGF0aCIsInN1aXRlcyIsImxvYWRTdWl0ZXMiLCJmcmFtZXdvcmsiLCJ0b0xvd2VyQ2FzZSIsInRhcmdldCIsImlzQ29uZmlnRmlsZSIsIm5hbWUiLCJpbmRleE9mIiwiZXh0ZW5zaW9uIiwicHVzaCIsIm94dXRpbCIsImdlbmVyYXRlVGVzdFN1aXRlRnJvbUpTRmlsZSIsInBhdGgiLCJwYXJhbWV0ZXJzIiwiZmlsZSIsIm1vZGUiLCJpdGVyYXRpb25zIiwiZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbkZpbGUiLCJzdWl0ZURlZnMiLCJBcnJheSIsImlzQXJyYXkiLCJzdWl0ZXNGb2xkZXIiLCJqb2luIiwiY3dkIiwiZnMiLCJleGlzdHNTeW5jIiwibG9hZFN1aXRlRGVmaW5pdGlvbnNGcm9tRm9sZGVyIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInN1aXRlRGVmIiwiZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbiIsInNlbGVjdGVkU3VpdGVOYW1lcyIsInNwbGl0IiwiZmlsdGVyIiwieCIsImluY2x1ZGVzIiwiZm9sZGVyUGF0aCIsImZpbGVzIiwicmVhZGRpclN5bmMiLCJleHRuYW1lIiwiZnVsbFBhdGgiLCJwb0ZpbGVOYW1lIiwicHJvY2VzcyIsInBvRmlsZVBhdGgiLCJyZXNvbHZlIiwiZSIsImVyciIsIkVycm9yIiwibWVzc2FnZSIsInN0YWNrIiwiZW52TmFtZSIsImVudmlyb25tZW50IiwiZGVmYXVsdEVudkZpbGUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZWRpY2F0ZWRFbnZGaWxlSnMiLCJkZWRpY2F0ZWRFbnZGaWxlSnNvbiIsImdldEVudmlyb25tZW50cyIsInRhcmdldEN3ZCIsImdldENvbmZpZ3VyYXRpb25zIiwiREVGQVVMVF9PUFRTIiwiYnJvd3Nlck5hbWUiLCJzZWxlbml1bVVybCIsImFwcGl1bVVybCIsInJlb3BlblNlc3Npb24iLCJyZVJ1bk9uRmFpbGVkIiwiZGVidWdQb3J0IiwiZGVsYXkiLCJjb2xsZWN0RGV2aWNlTG9ncyIsImNvbGxlY3RBcHBpdW1Mb2dzIiwiY29sbGVjdEJyb3dzZXJMb2dzIiwicmVwb3J0aW5nIiwicmVwb3J0ZXJzIiwiY21kT3B0cyIsImdldENvbW1hbmRMaW5lT3B0aW9ucyIsInByb2pDb25maWdPcHRzIiwiZW52cyIsImJhc2VOYW1lIiwib3B0cyIsImIiLCJicm93c2VyIiwicyIsInNlcnZlciIsInJlb3BlbiIsImkiLCJwYXJzZUludCIsIml0ZXIiLCJkYmdwb3J0IiwiZCIsInJmIiwibGVuZ3RoIiwicmVwb3J0Rm9ybWF0cyIsInJvIiwib3V0cHV0RGlyIiwicCIsInBhcmFtIiwicG0iLCJzcGVjcyIsIm1vZHVsZXMiLCJkZWxldGVOdWxsUHJvcGVydGllcyIsIm9iaiIsImNsb25lIiwia2V5cyIsImtleSIsInVuZGVmaW5lZCIsInByb2Nlc3NUYXJnZXRQYXRoIiwidGFyZ2V0UGF0aCIsInJlc29sdmVQYXRoIiwic3RhdHMiLCJsc3RhdFN5bmMiLCJpc0RpcmVjdG9yIiwiaXNEaXJlY3RvcnkiLCJjb25maWdGaWxlUGF0aCIsImRpcm5hbWUiLCJnZXRGaWxlTmFtZVdpdGhvdXRFeHQiLCJmdWxsTmFtZSIsImJhc2VuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVPLE1BQU1BLHVCQUF1QixHQUFHLGFBQWhDOztBQUNBLE1BQU1DLG9CQUFvQixHQUFHLFlBQTdCOztBQUNBLE1B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MUcsY0FBSzJHLFFBQUwsQ0FBY1YsVUFBZCxDQVJQO0FBVUg3QixJQUFBQSxRQUFRLEVBQUVwRSxjQUFLMkcsUUFBTCxDQUFjM0csY0FBS3dHLE9BQUwsQ0FBYVAsVUFBYixDQUFkLENBVlA7QUFZSHJHLElBQUFBLFNBQVMsRUFBRUksY0FBSzRCLE9BQUwsQ0FBYXFFLFVBQWI7QUFaUixHQUFQO0FBY0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcclxuaW1wb3J0IGZzIGZyb20gJ2ZzJztcclxuaW1wb3J0IG94dXRpbCBmcm9tICcuL3V0aWwnO1xyXG5pbXBvcnQgeyBmb3JFYWNoIH0gZnJvbSAnYXN5bmMnO1xyXG5pbXBvcnQgbW9kdWxlUmVxdWlyZSBmcm9tICcuL21vZHVsZVJlcXVpcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9YWUdFTl9DT05GSUdfRklMRV9OQU1FID0gJ294eWdlbi5jb25mJztcclxuZXhwb3J0IGNvbnN0IE9YWUdFTl9FTlZfRklMRV9OQU1FID0gJ294eWdlbi5lbnYnO1xyXG5leHBvcnQgY29uc3QgT1hZR0VOX1BBR0VfT0JKRUNUX0ZJTEVfTkFNRSA9ICdveHlnZW4ucG8nO1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlVGVzdE9wdGlvbnMoY29uZmlnLCBhcmd2KSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0geyAuLi5jb25maWcgfTtcclxuICAgIG9wdGlvbnMuZW52ID0gbG9hZEVudmlyb25tZW50VmFyaWFibGVzKGNvbmZpZywgYXJndik7XHJcbiAgICBvcHRpb25zLnBvID0gZ2V0UGFnZU9iamVjdEZpbGVQYXRoKGNvbmZpZywgYXJndik7XHJcbiAgICBvcHRpb25zLnN1aXRlcyA9IGF3YWl0IGxvYWRTdWl0ZXMoY29uZmlnLCBhcmd2KTtcclxuICAgIHJldHVybiBvcHRpb25zO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFN1aXRlcyhjb25maWcsIGFyZ3YpIHtcclxuICAgIGlmIChjb25maWcuZnJhbWV3b3JrICYmIHR5cGVvZiBjb25maWcuZnJhbWV3b3JrID09PSAnc3RyaW5nJyAmJiBjb25maWcuZnJhbWV3b3JrLnRvTG93ZXJDYXNlKCkgIT09ICdveHlnZW4nKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IGNvbmZpZztcclxuICAgIGNvbnN0IGlzQ29uZmlnRmlsZSA9IHRhcmdldCAmJiB0YXJnZXQubmFtZSAmJiB0YXJnZXQubmFtZS5pbmRleE9mKE9YWUdFTl9DT05GSUdfRklMRV9OQU1FKSA9PT0gMDtcclxuICAgIGxldCBzdWl0ZXMgPSBbXTtcclxuICAgIC8vIGlmIGFuIGluZGl2aWR1YWwgc2NyaXB0IG9yIHN1aXRlIGZpbGUgd2FzIHBhc3NlZFxyXG4gICAgaWYgKCFpc0NvbmZpZ0ZpbGUpIHtcclxuICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5leHRlbnNpb24gPT09ICcuanMnKSB7XHJcbiAgICAgICAgICAgIHN1aXRlcy5wdXNoKGF3YWl0IG94dXRpbC5nZW5lcmF0ZVRlc3RTdWl0ZUZyb21KU0ZpbGUodGFyZ2V0LnBhdGgsIGNvbmZpZy5wYXJhbWV0ZXJzLmZpbGUsIGNvbmZpZy5wYXJhbWV0ZXJzLm1vZGUsIGZhbHNlLCBjb25maWcuaXRlcmF0aW9ucyB8fCAxKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRhcmdldCAmJiB0YXJnZXQuZXh0ZW5zaW9uID09PSAnLmpzb24nKSB7XHJcbiAgICAgICAgICAgIHN1aXRlcy5wdXNoKGF3YWl0IG94dXRpbC5nZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uRmlsZSh0YXJnZXQucGF0aCwgY29uZmlnLnBhcmFtZXRlcnMuZmlsZSwgY29uZmlnLnBhcmFtZXRlcnMubW9kZSwgY29uZmlnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gaWYgYSBmb2xkZXIgb3IgYSBjb25maWd1cmF0aW9uIGZpbGUgd2FzIHBhc3NlZFxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IHN1aXRlRGVmcyA9IFtdO1xyXG4gICAgICAgIGlmIChjb25maWcuc3VpdGVzICYmIEFycmF5LmlzQXJyYXkoY29uZmlnLnN1aXRlcykpIHtcclxuICAgICAgICAgICAgc3VpdGVEZWZzID0gY29uZmlnLnN1aXRlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgbW9yZSBzdWl0ZXMgYXJlIGRlZmluZWQgaW4gdGhlICdzdWl0ZXMnIGZvbGRlclxyXG4gICAgICAgIGNvbnN0IHN1aXRlc0ZvbGRlciA9IHBhdGguam9pbih0YXJnZXQuY3dkLCAnc3VpdGVzJyk7XHJcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoc3VpdGVzRm9sZGVyKSkge1xyXG4gICAgICAgICAgICBzdWl0ZURlZnMgPSBbXHJcbiAgICAgICAgICAgICAgICAuLi5zdWl0ZURlZnMsXHJcbiAgICAgICAgICAgICAgICAuLi5sb2FkU3VpdGVEZWZpbml0aW9uc0Zyb21Gb2xkZXIoc3VpdGVzRm9sZGVyKVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBtZXJnZSBzdWl0ZXMgY29uZmlndXJlZCBpbiB0aGUgcHJvamVjdCBjb25maWcgZmlsZSBhbmQgdGhvc2UgZm91bmQgaW4gJ3N1aXRlcycgZm9sZGVyXHJcbiAgICAgICAgc3VpdGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoc3VpdGVEZWZzLm1hcChhc3luYyAoc3VpdGVEZWYpID0+IGF3YWl0IG94dXRpbC5nZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uKHN1aXRlRGVmLCBjb25maWcpKSk7XHJcbiAgICB9XHJcbiAgICAvLyBmaWx0ZXIgb3V0IHN1aXRlcyBpZiAnLS1zdWl0ZXMnIGNvbW1hbmQgbGluZSBhcmd1bWVudCB3YXMgc3BlY2lmaWVkXHJcbiAgICBpZiAoYXJndi5zdWl0ZXMgJiYgdHlwZW9mIGFyZ3Yuc3VpdGVzID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkU3VpdGVOYW1lcyA9IGFyZ3Yuc3VpdGVzLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgc3VpdGVzID0gc3VpdGVzLmZpbHRlcih4ID0+IHNlbGVjdGVkU3VpdGVOYW1lcy5pbmNsdWRlcyh4Lm5hbWUpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdWl0ZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkU3VpdGVEZWZpbml0aW9uc0Zyb21Gb2xkZXIoZm9sZGVyUGF0aCkge1xyXG4gICAgY29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyhmb2xkZXJQYXRoKTtcclxuICAgIGxldCBzdWl0ZURlZnMgPSBbXTtcclxuICAgIGZvckVhY2goZmlsZXMsIGZpbGUgPT4ge1xyXG4gICAgICAgIGlmIChwYXRoLmV4dG5hbWUoZmlsZSkgPT09ICcuanNvbicpIHtcclxuICAgICAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZm9sZGVyUGF0aCwgZmlsZSk7XHJcbiAgICAgICAgICAgIHN1aXRlRGVmcy5wdXNoKG1vZHVsZVJlcXVpcmUoZnVsbFBhdGgpKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzdWl0ZURlZnM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlT2JqZWN0RmlsZVBhdGgoY29uZmlnLCBhcmd2ID0ge30pIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGNvbmZpZy50YXJnZXQgfHwge307XHJcbiAgICBjb25zdCBwb0ZpbGVOYW1lID0gYXJndi5wbyB8fCBgJHtPWFlHRU5fUEFHRV9PQkpFQ1RfRklMRV9OQU1FfS5qc2A7XHJcbiAgICBjb25zdCBjd2QgPSB0YXJnZXQuY3dkIHx8IHByb2Nlc3MuY3dkKCk7XHJcbiAgICBsZXQgcG9GaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShjd2QsIHBvRmlsZU5hbWUpO1xyXG4gICAgcG9GaWxlUGF0aCA9IGZzLmV4aXN0c1N5bmMocG9GaWxlUGF0aCkgPyBwb0ZpbGVQYXRoIDogbnVsbDtcclxuXHJcbiAgICBpZiAocG9GaWxlUGF0aCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIG1vZHVsZVJlcXVpcmUocG9GaWxlUGF0aCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwb0ZpbGVQYXRoO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmaWxlOiAke3BvRmlsZVBhdGh9LiBSZWFzb246ICR7ZS5tZXNzYWdlfSAke2Uuc3RhY2t9YCk7XHJcbiAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudmlyb25tZW50VmFyaWFibGVzKGNvbmZpZywgYXJndikge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gY29uZmlnLnRhcmdldCB8fCB7fTtcclxuICAgIGNvbnN0IGVudk5hbWUgPSBhcmd2LmVudiB8fCBjb25maWcuZW52aXJvbm1lbnQgfHwgJ2RlZmF1bHQnO1xyXG4gICAgY29uc3QgY3dkID0gdGFyZ2V0LmN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xyXG4gICAgY29uc3QgZGVmYXVsdEVudkZpbGUgPSBwYXRoLmpvaW4oY3dkLCBgJHtPWFlHRU5fRU5WX0ZJTEVfTkFNRX0uanNgKTtcclxuICAgIGlmIChmcy5leGlzdHNTeW5jKGRlZmF1bHRFbnZGaWxlKSkge1xyXG4gICAgICAgIGNvbnN0IGVudiA9IG1vZHVsZVJlcXVpcmUoZGVmYXVsdEVudkZpbGUpO1xyXG4gICAgICAgIGlmIChlbnYgJiYgdHlwZW9mIGVudiA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVudiwgZW52TmFtZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVudltlbnZOYW1lXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB0cnkgdG8gcmVzb2x2ZSBhIGRlZGljYXRlZCBlbnZpcm9ubWVudCBmaWxlIGluICdlbnYnIHN1YiBmb2xkZXJcclxuICAgIGNvbnN0IGRlZGljYXRlZEVudkZpbGVKcyA9IHBhdGguam9pbihjd2QsICdlbnYnLCBgJHtlbnZOYW1lfS5qc2ApO1xyXG4gICAgY29uc3QgZGVkaWNhdGVkRW52RmlsZUpzb24gPSBwYXRoLmpvaW4oY3dkLCAnZW52JywgYCR7ZW52TmFtZX0uanNvbmApO1xyXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZGVkaWNhdGVkRW52RmlsZUpzKSkge1xyXG4gICAgICAgIHJldHVybiBtb2R1bGVSZXF1aXJlKGRlZGljYXRlZEVudkZpbGVKcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmcy5leGlzdHNTeW5jKGRlZGljYXRlZEVudkZpbGVKc29uKSkge1xyXG4gICAgICAgIHJldHVybiBtb2R1bGVSZXF1aXJlKGRlZGljYXRlZEVudkZpbGVKc29uKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7fTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEVudmlyb25tZW50cyh0YXJnZXQpIHtcclxuICAgIGxldCB0YXJnZXRDd2QgPSBudWxsO1xyXG5cclxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmN3ZCkge1xyXG4gICAgICAgIHRhcmdldEN3ZCA9IHRhcmdldC5jd2Q7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3dkID0gdGFyZ2V0Q3dkIHx8IHByb2Nlc3MuY3dkKCk7XHJcbiAgICBjb25zdCBkZWZhdWx0RW52RmlsZSA9IHBhdGguam9pbihjd2QsIGAke09YWUdFTl9FTlZfRklMRV9OQU1FfS5qc2ApO1xyXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZGVmYXVsdEVudkZpbGUpKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIG1vZHVsZVJlcXVpcmUoZGVmYXVsdEVudkZpbGUpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmaWxlOiAke2RlZmF1bHRFbnZGaWxlfS4gUmVhc29uOiAke2UubWVzc2FnZX0gJHtlLnN0YWNrfWApO1xyXG4gICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHt9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlndXJhdGlvbnModGFyZ2V0LCBhcmd2KSB7XHJcbiAgICAvLyBwcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcclxuICAgIGxldCB0YXJnZXRDd2QgPSBudWxsO1xyXG5cclxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmN3ZCkge1xyXG4gICAgICAgIHRhcmdldEN3ZCA9IHRhcmdldC5jd2Q7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgREVGQVVMVF9PUFRTID0ge1xyXG4gICAgICAgIGN3ZDogdGFyZ2V0ID8gKHRhcmdldEN3ZCB8fCBwcm9jZXNzLmN3ZCgpKSA6IHByb2Nlc3MuY3dkKCksXHJcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXHJcbiAgICAgICAgYnJvd3Nlck5hbWU6ICdjaHJvbWUnLFxyXG4gICAgICAgIHNlbGVuaXVtVXJsIDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDQ0NC93ZC9odWInLFxyXG4gICAgICAgIGFwcGl1bVVybCA6ICdodHRwOi8vbG9jYWxob3N0OjQ3MjMvd2QvaHViJyxcclxuICAgICAgICByZW9wZW5TZXNzaW9uOiBmYWxzZSxcclxuICAgICAgICByZVJ1bk9uRmFpbGVkOiBmYWxzZSxcclxuICAgICAgICBpdGVyYXRpb25zIDogMSxcclxuICAgICAgICBkZWJ1Z1BvcnQ6IG51bGwsXHJcbiAgICAgICAgZGVsYXk6IG51bGwsXHJcbiAgICAgICAgY29sbGVjdERldmljZUxvZ3M6IGZhbHNlLFxyXG4gICAgICAgIGNvbGxlY3RBcHBpdW1Mb2dzOiBmYWxzZSxcclxuICAgICAgICBjb2xsZWN0QnJvd3NlckxvZ3M6IGZhbHNlLFxyXG4gICAgICAgIHJlcG9ydGluZzoge1xyXG4gICAgICAgICAgICByZXBvcnRlcnM6IFsnaHRtbCddXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwYXJhbWV0ZXJzIDoge1xyXG4gICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gICAgICAgICAgICBtb2RlOiAnc2VxJ1xyXG4gICAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgLy8gcmV0cmlldmUgb3B0aW9ucyBwcm92aWRlZCB2aWEgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xyXG4gICAgY29uc3QgY21kT3B0cyA9IGdldENvbW1hbmRMaW5lT3B0aW9ucyhhcmd2KTtcclxuICAgIC8vIGlmIHRoZSB0YXJnZXQgaXMgb3h5Z2VuIGNvbmZpZyBmaWxlLCBtZXJnZSBpdHMgY29udGVudCB3aXRoIHRoZSBkZWZhdWx0IG9wdGlvbnNcclxuICAgIGxldCBwcm9qQ29uZmlnT3B0cyA9IHt9O1xyXG4gICAgaWYgKHRhcmdldCAmJiB0YXJnZXQubmFtZSA9PT0gT1hZR0VOX0NPTkZJR19GSUxFX05BTUUgJiYgKHRhcmdldC5leHRlbnNpb24gPT09ICcuanMnIHx8IHRhcmdldC5leHRlbnNpb24gPT09ICcuanNvbicpKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcHJvakNvbmZpZ09wdHMgPSBtb2R1bGVSZXF1aXJlKHRhcmdldC5wYXRoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgZmlsZTogJHt0YXJnZXQucGF0aH0uIFJlYXNvbjogJHtlLm1lc3NhZ2V9ICR7ZS5zdGFja31gKTtcclxuICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGVudnMgPSBnZXRFbnZpcm9ubWVudHModGFyZ2V0KTtcclxuXHJcbiAgICBpZiAocHJvakNvbmZpZ09wdHMuZW52cykge1xyXG4gICAgICAgIC8vIG1lcmdlIGV4dGVybmFsIGVudmlyb25tZW50cyBkZWZpbml0aW9uIHdpdGggdGhlIG9uZSBpbiB0aGUgY29uZmlnIGZpbGVcclxuICAgICAgICBwcm9qQ29uZmlnT3B0cy5lbnZzID0geyAuLi5wcm9qQ29uZmlnT3B0cy5lbnZzLCAuLi5lbnZzIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBwcm9qQ29uZmlnT3B0cyA9IHsgLi4ucHJvakNvbmZpZ09wdHMsIGVudnM6IGVudnMgfTtcclxuICAgIH1cclxuICAgIC8vIGRldGVybWluZSB0ZXN0IG5hbWVcclxuICAgIGxldCBuYW1lID0gY21kT3B0cy5uYW1lIHx8IHByb2pDb25maWdPcHRzLm5hbWUgfHwgbnVsbDtcclxuICAgIGlmICghbmFtZSAmJiB0YXJnZXQpIHtcclxuICAgICAgICBuYW1lID0gdGFyZ2V0Lm5hbWUgIT09IE9YWUdFTl9DT05GSUdfRklMRV9OQU1FID8gdGFyZ2V0Lm5hbWUgOiB0YXJnZXQuYmFzZU5hbWU7XHJcbiAgICB9XHJcbiAgICAvLyBtZXJnZSBvcHRpb25zIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIG9yZGVyICh0aGUgbGFzdCBvbmUgb3ZlcnJpZGVzIHRoZSBwcmV2aW91cyBvbmUpOlxyXG4gICAgLy8gZGVmYXVsdCBvcHRpb25zLCBwcm9qZWN0IGNvbmZpZyBmaWxlLCBjb21tYW5kIGxpbmUgYXJndW1lbnRzXHJcbiAgICByZXR1cm4geyAuLi5ERUZBVUxUX09QVFMsIC4uLnByb2pDb25maWdPcHRzLCAuLi5jbWRPcHRzLCBuYW1lOiBuYW1lIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tYW5kTGluZU9wdGlvbnMoYXJndikge1xyXG4gICAgY29uc3Qgb3B0cyA9IHtcclxuICAgICAgICAvLyBzd2l0Y2g6IC0tbmFtZSBcclxuICAgICAgICBuYW1lOiBhcmd2Lm5hbWUgfHwgbnVsbCxcclxuICAgICAgICAvLyBzd2l0Y2g6IC1iIG9yIC0tYnJvd3NlclxyXG4gICAgICAgIGJyb3dzZXJOYW1lIDogYXJndi5iIHx8IGFyZ3YuYnJvd3NlciB8fCBudWxsLFxyXG4gICAgICAgIHNlbGVuaXVtVXJsIDogYXJndi5zIHx8IGFyZ3Yuc2VydmVyIHx8IG51bGwsXHJcbiAgICAgICAgYXBwaXVtVXJsIDogYXJndi5zIHx8IGFyZ3Yuc2VydmVyIHx8IG51bGwsXHJcbiAgICAgICAgcmVvcGVuU2Vzc2lvbjogYXJndi5yZW9wZW4gPyBhcmd2LnJlb3BlbiA9PT0gJ3RydWUnIDogbnVsbCxcclxuICAgICAgICBpdGVyYXRpb25zIDogYXJndi5pID8gcGFyc2VJbnQoYXJndi5pKSA6IChhcmd2Lml0ZXIgPyBwYXJzZUludChhcmd2Lml0ZXIpIDogbnVsbCksXHJcbiAgICAgICAgZGVidWdQb3J0OiBhcmd2LmRiZ3BvcnQgfHwgbnVsbCxcclxuICAgICAgICBkZWxheTogYXJndi5kIHx8IGFyZ3YuZGVsYXkgfHwgbnVsbCxcclxuICAgIH07XHJcbiAgICAvLyBzd2l0Y2g6IC0tcmYgZmxhZ1xyXG4gICAgaWYgKGFyZ3YucmYgJiYgdHlwZW9mIGFyZ3YucmYgPT09ICdzdHJpbmcnICYmIGFyZ3YucmYubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHJlcG9ydEZvcm1hdHMgPSBhcmd2LnJmLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgb3B0cy5yZXBvcnRpbmcgPSB7XHJcbiAgICAgICAgICAgIHJlcG9ydGVyczogcmVwb3J0Rm9ybWF0c1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gc3dpdGNoOiAtLXJvIC0gc2V0IHJlcG9ydGVyIG91dHB1dCBkaXJlY3RvcnkgaWYgc2V0IGJ5IHVzZXIgdGhyb3VnaCBjb21uYW5kIGxpbmVcclxuICAgICAgICAvLyBOT1RFOiAtLXJvIHN3aXRjaCBtdXN0IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIC0tcmZcclxuICAgICAgICBpZiAoYXJndi5ybyAmJiB0eXBlb2YgYXJndi5ybyA9PT0gJ3N0cmluZycgJiYgYXJndi5yby5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIG9wdHMucmVwb3J0aW5nLm91dHB1dERpciA9IGFyZ3Yucm87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gb3B0aW9uOiAtcCBvciAtLXBhcmFtIGFuZCAtLXBtXHJcbiAgICBpZiAoYXJndi5wIHx8IGFyZ3YucGFyYW0pIHtcclxuICAgICAgICBvcHRzLnBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICAgICAgIGZpbGU6IGFyZ3YucCB8fCBhcmd2LnBhcmFtIHx8IG51bGwsXHJcbiAgICAgICAgICAgIG1vZGU6IGFyZ3YucG0gfHwgJ3NlcSdcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHN3aXRjaDogLS1zcGVjcyAtIHNldCBzcGVjcyBpZiBzZXQgYnkgdXNlciB0aHJvdWdoIGNvbW5hbmQgbGluZVxyXG4gICAgaWYgKGFyZ3Yuc3BlY3MgJiYgdHlwZW9mIGFyZ3Yuc3BlY3MgPT09ICdzdHJpbmcnICYmIGFyZ3Yuc3BlY3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHNwZWNzID0gYXJndi5zcGVjcy5zcGxpdCgnLCcpO1xyXG4gICAgICAgIG9wdHMuc3BlY3MgPSBzcGVjcztcclxuICAgIH1cclxuICAgIC8vIHN3aXRjaDogLS1tb2R1bGVzIC0gc2V0IGEgbGlzdCBvZiBtb2R1bGVzIHRvIGJlIGxvYWRlZCwgaWYgc2V0IGJ5IHVzZXIgdGhyb3VnaCBjb21uYW5kIGxpbmVcclxuICAgIGlmIChhcmd2Lm1vZHVsZXMgJiYgdHlwZW9mIGFyZ3YubW9kdWxlcyA9PT0gJ3N0cmluZycgJiYgYXJndi5tb2R1bGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBtb2R1bGVzID0gYXJndi5tb2R1bGVzLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgb3B0cy5tb2R1bGVzID0gbW9kdWxlcztcclxuICAgIH1cclxuICAgIC8vIHJlbW92ZSBhbnkgcHJvcGVydHkgd2l0aCBudWxsIHZhbHVlIChzbyBpdCB3b24ndCBvdmVycmlkZSBkZWZhdWx0IHZhbHVlcyBpZiBpdCdzIG51bGwpXHJcbiAgICByZXR1cm4gZGVsZXRlTnVsbFByb3BlcnRpZXMob3B0cyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlbGV0ZU51bGxQcm9wZXJ0aWVzKG9iaikge1xyXG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuICAgIGNvbnN0IGNsb25lID0geyAuLi5vYmogfTtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xyXG4gICAgZm9yRWFjaCAoa2V5cywga2V5ID0+IHtcclxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSAmJiAob2JqW2tleV0gPT0gbnVsbCB8fCBvYmpba2V5XSA9PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBjbG9uZVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1RhcmdldFBhdGgodGFyZ2V0UGF0aCkge1xyXG4gICAgLy8gZ2V0IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaWYgdXNlciBoYXMgbm90IHByb3ZpZGVkIHBhdGhcclxuICAgIGlmICh0eXBlb2YodGFyZ2V0UGF0aCkgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgdGFyZ2V0UGF0aCA9IHByb2Nlc3MuY3dkKCk7XHJcbiAgICB9XHJcbiAgICAvLyB1c2VyJ3MgcGF0aCBtaWdodCBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAtIG1ha2Ugc3VyZSB0aGUgcmVsYXRpdmUgcGF0aCB3aWxsIHdvcmtcclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHRhcmdldFBhdGggPSBveHV0aWwucmVzb2x2ZVBhdGgodGFyZ2V0UGF0aCwgcHJvY2Vzcy5jd2QoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhcmdldFBhdGgpKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3RhdHMgPSBmcy5sc3RhdFN5bmModGFyZ2V0UGF0aCk7XHJcbiAgICBjb25zdCBpc0RpcmVjdG9yID0gc3RhdHMuaXNEaXJlY3RvcnkoKTtcclxuICAgIGlmIChpc0RpcmVjdG9yKSB7XHJcbiAgICAgICAgLy8gYXBwZW5kIG94eWdlbiBjb25maWcgZmlsZSBuYW1lIHRvIHRoZSBkaXJlY3RvcnksIGlmIG5vIHRlc3QgY2FzZSBmaWxlIHdhcyBwcm92aWRlZFxyXG4gICAgICAgIGxldCBjb25maWdGaWxlUGF0aCA9IHBhdGguam9pbih0YXJnZXRQYXRoLCBPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSArICcuanMnKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpKSB7XHJcbiAgICAgICAgICAgIGNvbmZpZ0ZpbGVQYXRoID0gcGF0aC5qb2luKHRhcmdldFBhdGgsIE9YWUdFTl9DT05GSUdfRklMRV9OQU1FICsgJy5qc29uJyk7XHJcbiAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhjb25maWdGaWxlUGF0aCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRhcmdldFBhdGggPSBjb25maWdGaWxlUGF0aDtcclxuICAgIH1cclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0YXJnZXRQYXRoKSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAvLyBwYXRoIHRvIHRoZSBjb25maWcgb3IgLmpzIGZpbGVcclxuICAgICAgICBwYXRoOiB0YXJnZXRQYXRoLFxyXG4gICAgICAgIC8vIHdvcmtpbmcgZGlyZWN0b3J5XHJcbiAgICAgICAgY3dkOiBwYXRoLmRpcm5hbWUodGFyZ2V0UGF0aCksXHJcbiAgICAgICAgLy8gbmFtZSBvZiB0aGUgdGFyZ2V0IGZpbGUgd2l0aG91dCBleHRlbnNpb25cclxuICAgICAgICBuYW1lOiBveHV0aWwuZ2V0RmlsZU5hbWVXaXRob3V0RXh0KHRhcmdldFBhdGgpLFxyXG4gICAgICAgIC8vIG5hbWUgaW5jbHVkaW5nIGV4dGVuc2lvblxyXG4gICAgICAgIGZ1bGxOYW1lOiBwYXRoLmJhc2VuYW1lKHRhcmdldFBhdGgpLFxyXG4gICAgICAgIC8vIHBhcmVudCBmb2xkZXIncyBuYW1lXHJcbiAgICAgICAgYmFzZU5hbWU6IHBhdGguYmFzZW5hbWUocGF0aC5kaXJuYW1lKHRhcmdldFBhdGgpKSxcclxuICAgICAgICAvLyB0YXJnZXQgZmlsZSBleHRlbnNpb25cclxuICAgICAgICBleHRlbnNpb246IHBhdGguZXh0bmFtZSh0YXJnZXRQYXRoKVxyXG4gICAgfTtcclxufSJdfQ==
342
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLXV0aWwuanMiXSwibmFtZXMiOlsiT1hZR0VOX0NPTkZJR19GSUxFX05BTUUiLCJPWFlHRU5fRU5WX0ZJTEVfTkFNRSIsIk9YWUdFTl9QQUdFX09CSkVDVF9GSUxFX05BTUUiLCJnZW5lcmF0ZVRlc3RPcHRpb25zIiwiY29uZmlnIiwiYXJndiIsIm9wdGlvbnMiLCJlbnYiLCJsb2FkRW52aXJvbm1lbnRWYXJpYWJsZXMiLCJwbyIsImdldFBhZ2VPYmplY3RGaWxlUGF0aCIsInN1aXRlcyIsImxvYWRTdWl0ZXMiLCJmcmFtZXdvcmsiLCJ0b0xvd2VyQ2FzZSIsInRhcmdldCIsImlzQ29uZmlnRmlsZSIsIm5hbWUiLCJpbmRleE9mIiwiZXh0ZW5zaW9uIiwicHVzaCIsIm94dXRpbCIsImdlbmVyYXRlVGVzdFN1aXRlRnJvbUpTRmlsZSIsInBhdGgiLCJwYXJhbWV0ZXJzIiwiZmlsZSIsIm1vZGUiLCJpdGVyYXRpb25zIiwiZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbkZpbGUiLCJzdWl0ZURlZnMiLCJBcnJheSIsImlzQXJyYXkiLCJzdWl0ZXNGb2xkZXIiLCJqb2luIiwiY3dkIiwiZnMiLCJleGlzdHNTeW5jIiwibG9hZFN1aXRlRGVmaW5pdGlvbnNGcm9tRm9sZGVyIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInN1aXRlRGVmIiwiZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbiIsInNlbGVjdGVkU3VpdGVOYW1lcyIsInNwbGl0IiwiZmlsdGVyIiwieCIsImluY2x1ZGVzIiwiZm9sZGVyUGF0aCIsImZpbGVzIiwicmVhZGRpclN5bmMiLCJleHRuYW1lIiwiZnVsbFBhdGgiLCJwb0ZpbGVOYW1lIiwicHJvY2VzcyIsInBvRmlsZVBhdGgiLCJyZXNvbHZlIiwiZSIsImVyciIsIkVycm9yIiwibWVzc2FnZSIsInN0YWNrIiwiZW52TmFtZSIsImVudmlyb25tZW50IiwiZGVmYXVsdEVudkZpbGUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZWRpY2F0ZWRFbnZGaWxlSnMiLCJkZWRpY2F0ZWRFbnZGaWxlSnNvbiIsImdldEVudmlyb25tZW50cyIsInRhcmdldEN3ZCIsImdldENvbmZpZ3VyYXRpb25zIiwiREVGQVVMVF9PUFRTIiwiYnJvd3Nlck5hbWUiLCJzZWxlbml1bVVybCIsImFwcGl1bVVybCIsInJlb3BlblNlc3Npb24iLCJyZVJ1bk9uRmFpbGVkIiwiZGVidWdQb3J0IiwiZGVsYXkiLCJjb2xsZWN0RGV2aWNlTG9ncyIsImNvbGxlY3RBcHBpdW1Mb2dzIiwiY29sbGVjdEJyb3dzZXJMb2dzIiwicmVwb3J0aW5nIiwicmVwb3J0ZXJzIiwiY21kT3B0cyIsImdldENvbW1hbmRMaW5lT3B0aW9ucyIsInByb2pDb25maWdPcHRzIiwiZW52cyIsImJhc2VOYW1lIiwib3B0cyIsImIiLCJicm93c2VyIiwicyIsInNlcnZlciIsInJlb3BlbiIsImkiLCJwYXJzZUludCIsIml0ZXIiLCJkYmdwb3J0IiwiZCIsInJmIiwibGVuZ3RoIiwicmVwb3J0Rm9ybWF0cyIsInJvIiwib3V0cHV0RGlyIiwicCIsInBhcmFtIiwicG0iLCJzcGVjcyIsIm1vZHVsZXMiLCJkZWxldGVOdWxsUHJvcGVydGllcyIsIm9iaiIsImNsb25lIiwia2V5cyIsImtleSIsInVuZGVmaW5lZCIsInByb2Nlc3NUYXJnZXRQYXRoIiwidGFyZ2V0UGF0aCIsInJlc29sdmVQYXRoIiwic3RhdHMiLCJsc3RhdFN5bmMiLCJpc0RpcmVjdG9yIiwiaXNEaXJlY3RvcnkiLCJjb25maWdGaWxlUGF0aCIsImRpcm5hbWUiLCJnZXRGaWxlTmFtZVdpdGhvdXRFeHQiLCJmdWxsTmFtZSIsImJhc2VuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVPLE1BQU1BLHVCQUF1QixHQUFHLGFBQWhDOztBQUNBLE1BQU1DLG9CQUFvQixHQUFHLFlBQTdCOztBQUNBLE1B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QUFPMkcscUJBQVAsQ0FBNkJSLFVBQTdCLENBTkg7QUFRSFMsSUFBQUEsUUFBUSxFQUFFMUcsY0FBSzJHLFFBQUwsQ0FBY1YsVUFBZCxDQVJQO0FBVUg3QixJQUFBQSxRQUFRLEVBQUVwRSxjQUFLMkcsUUFBTCxDQUFjM0csY0FBS3dHLE9BQUwsQ0FBYVAsVUFBYixDQUFkLENBVlA7QUFZSHJHLElBQUFBLFNBQVMsRUFBRUksY0FBSzRCLE9BQUwsQ0FBYXFFLFVBQWI7QUFaUixHQUFQO0FBY0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcclxuaW1wb3J0IGZzIGZyb20gJ2ZzJztcclxuaW1wb3J0IG94dXRpbCBmcm9tICcuL3V0aWwnO1xyXG5pbXBvcnQgeyBmb3JFYWNoIH0gZnJvbSAnYXN5bmMnO1xyXG5pbXBvcnQgbW9kdWxlUmVxdWlyZSBmcm9tICcuL21vZHVsZVJlcXVpcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9YWUdFTl9DT05GSUdfRklMRV9OQU1FID0gJ294eWdlbi5jb25mJztcclxuZXhwb3J0IGNvbnN0IE9YWUdFTl9FTlZfRklMRV9OQU1FID0gJ294eWdlbi5lbnYnO1xyXG5leHBvcnQgY29uc3QgT1hZR0VOX1BBR0VfT0JKRUNUX0ZJTEVfTkFNRSA9ICdveHlnZW4ucG8nO1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlVGVzdE9wdGlvbnMoY29uZmlnLCBhcmd2KSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0geyAuLi5jb25maWcgfTtcclxuICAgIG9wdGlvbnMuZW52ID0gbG9hZEVudmlyb25tZW50VmFyaWFibGVzKGNvbmZpZywgYXJndik7XHJcbiAgICBvcHRpb25zLnBvID0gZ2V0UGFnZU9iamVjdEZpbGVQYXRoKGNvbmZpZywgYXJndik7XHJcbiAgICBvcHRpb25zLnN1aXRlcyA9IGF3YWl0IGxvYWRTdWl0ZXMoY29uZmlnLCBhcmd2KTtcclxuICAgIHJldHVybiBvcHRpb25zO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFN1aXRlcyhjb25maWcsIGFyZ3YpIHtcclxuICAgIGlmIChjb25maWcuZnJhbWV3b3JrICYmIHR5cGVvZiBjb25maWcuZnJhbWV3b3JrID09PSAnc3RyaW5nJyAmJiBjb25maWcuZnJhbWV3b3JrLnRvTG93ZXJDYXNlKCkgIT09ICdveHlnZW4nKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IGNvbmZpZztcclxuICAgIGNvbnN0IGlzQ29uZmlnRmlsZSA9IHRhcmdldCAmJiB0YXJnZXQubmFtZSAmJiB0YXJnZXQubmFtZS5pbmRleE9mKE9YWUdFTl9DT05GSUdfRklMRV9OQU1FKSA9PT0gMDtcclxuICAgIGxldCBzdWl0ZXMgPSBbXTtcclxuICAgIC8vIGlmIGFuIGluZGl2aWR1YWwgc2NyaXB0IG9yIHN1aXRlIGZpbGUgd2FzIHBhc3NlZFxyXG4gICAgaWYgKCFpc0NvbmZpZ0ZpbGUpIHtcclxuICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5leHRlbnNpb24gPT09ICcuanMnKSB7XHJcbiAgICAgICAgICAgIHN1aXRlcy5wdXNoKGF3YWl0IG94dXRpbC5nZW5lcmF0ZVRlc3RTdWl0ZUZyb21KU0ZpbGUodGFyZ2V0LnBhdGgsIGNvbmZpZy5wYXJhbWV0ZXJzLmZpbGUsIGNvbmZpZy5wYXJhbWV0ZXJzLm1vZGUsIGZhbHNlLCBjb25maWcuaXRlcmF0aW9ucyB8fCAxKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRhcmdldCAmJiB0YXJnZXQuZXh0ZW5zaW9uID09PSAnLmpzb24nKSB7XHJcbiAgICAgICAgICAgIHN1aXRlcy5wdXNoKGF3YWl0IG94dXRpbC5nZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uRmlsZSh0YXJnZXQucGF0aCwgY29uZmlnLnBhcmFtZXRlcnMuZmlsZSwgY29uZmlnLnBhcmFtZXRlcnMubW9kZSwgY29uZmlnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gaWYgYSBmb2xkZXIgb3IgYSBjb25maWd1cmF0aW9uIGZpbGUgd2FzIHBhc3NlZFxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IHN1aXRlRGVmcyA9IFtdO1xyXG4gICAgICAgIGlmIChjb25maWcuc3VpdGVzICYmIEFycmF5LmlzQXJyYXkoY29uZmlnLnN1aXRlcykpIHtcclxuICAgICAgICAgICAgc3VpdGVEZWZzID0gY29uZmlnLnN1aXRlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgbW9yZSBzdWl0ZXMgYXJlIGRlZmluZWQgaW4gdGhlICdzdWl0ZXMnIGZvbGRlclxyXG4gICAgICAgIGNvbnN0IHN1aXRlc0ZvbGRlciA9IHBhdGguam9pbih0YXJnZXQuY3dkLCAnc3VpdGVzJyk7XHJcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoc3VpdGVzRm9sZGVyKSkge1xyXG4gICAgICAgICAgICBzdWl0ZURlZnMgPSBbXHJcbiAgICAgICAgICAgICAgICAuLi5zdWl0ZURlZnMsXHJcbiAgICAgICAgICAgICAgICAuLi5sb2FkU3VpdGVEZWZpbml0aW9uc0Zyb21Gb2xkZXIoc3VpdGVzRm9sZGVyKVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBtZXJnZSBzdWl0ZXMgY29uZmlndXJlZCBpbiB0aGUgcHJvamVjdCBjb25maWcgZmlsZSBhbmQgdGhvc2UgZm91bmQgaW4gJ3N1aXRlcycgZm9sZGVyXHJcbiAgICAgICAgc3VpdGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoc3VpdGVEZWZzLm1hcChhc3luYyAoc3VpdGVEZWYpID0+IGF3YWl0IG94dXRpbC5nZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uKHN1aXRlRGVmLCBjb25maWcpKSk7XHJcbiAgICB9XHJcbiAgICAvLyBmaWx0ZXIgb3V0IHN1aXRlcyBpZiAnLS1zdWl0ZXMnIGNvbW1hbmQgbGluZSBhcmd1bWVudCB3YXMgc3BlY2lmaWVkXHJcbiAgICBpZiAoYXJndi5zdWl0ZXMgJiYgdHlwZW9mIGFyZ3Yuc3VpdGVzID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkU3VpdGVOYW1lcyA9IGFyZ3Yuc3VpdGVzLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgc3VpdGVzID0gc3VpdGVzLmZpbHRlcih4ID0+IHNlbGVjdGVkU3VpdGVOYW1lcy5pbmNsdWRlcyh4Lm5hbWUpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdWl0ZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkU3VpdGVEZWZpbml0aW9uc0Zyb21Gb2xkZXIoZm9sZGVyUGF0aCkge1xyXG4gICAgY29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyhmb2xkZXJQYXRoKTtcclxuICAgIGxldCBzdWl0ZURlZnMgPSBbXTtcclxuICAgIGZvckVhY2goZmlsZXMsIGZpbGUgPT4ge1xyXG4gICAgICAgIGlmIChwYXRoLmV4dG5hbWUoZmlsZSkgPT09ICcuanNvbicpIHtcclxuICAgICAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZm9sZGVyUGF0aCwgZmlsZSk7XHJcbiAgICAgICAgICAgIHN1aXRlRGVmcy5wdXNoKG1vZHVsZVJlcXVpcmUoZnVsbFBhdGgpKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzdWl0ZURlZnM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlT2JqZWN0RmlsZVBhdGgoY29uZmlnLCBhcmd2ID0ge30pIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGNvbmZpZy50YXJnZXQgfHwge307XHJcbiAgICBjb25zdCBwb0ZpbGVOYW1lID0gYXJndi5wbyB8fCBgJHtPWFlHRU5fUEFHRV9PQkpFQ1RfRklMRV9OQU1FfS5qc2A7XHJcbiAgICBjb25zdCBjd2QgPSB0YXJnZXQuY3dkIHx8IHByb2Nlc3MuY3dkKCk7XHJcbiAgICBsZXQgcG9GaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShjd2QsIHBvRmlsZU5hbWUpO1xyXG4gICAgcG9GaWxlUGF0aCA9IGZzLmV4aXN0c1N5bmMocG9GaWxlUGF0aCkgPyBwb0ZpbGVQYXRoIDogbnVsbDtcclxuXHJcbiAgICBpZiAocG9GaWxlUGF0aCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIG1vZHVsZVJlcXVpcmUocG9GaWxlUGF0aCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwb0ZpbGVQYXRoO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmaWxlOiAke3BvRmlsZVBhdGh9LiBSZWFzb246ICR7ZS5tZXNzYWdlfSAke2Uuc3RhY2t9YCk7XHJcbiAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudmlyb25tZW50VmFyaWFibGVzKGNvbmZpZywgYXJndikge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gY29uZmlnLnRhcmdldCB8fCB7fTtcclxuICAgIGNvbnN0IGVudk5hbWUgPSBhcmd2LmVudiB8fCBjb25maWcuZW52aXJvbm1lbnQgfHwgJ2RlZmF1bHQnO1xyXG4gICAgY29uc3QgY3dkID0gdGFyZ2V0LmN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xyXG4gICAgY29uc3QgZGVmYXVsdEVudkZpbGUgPSBwYXRoLmpvaW4oY3dkLCBgJHtPWFlHRU5fRU5WX0ZJTEVfTkFNRX0uanNgKTtcclxuICAgIGlmIChmcy5leGlzdHNTeW5jKGRlZmF1bHRFbnZGaWxlKSkge1xyXG4gICAgICAgIGNvbnN0IGVudiA9IG1vZHVsZVJlcXVpcmUoZGVmYXVsdEVudkZpbGUpO1xyXG4gICAgICAgIGlmIChlbnYgJiYgdHlwZW9mIGVudiA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVudiwgZW52TmFtZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVudltlbnZOYW1lXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB0cnkgdG8gcmVzb2x2ZSBhIGRlZGljYXRlZCBlbnZpcm9ubWVudCBmaWxlIGluICdlbnYnIHN1YiBmb2xkZXJcclxuICAgIGNvbnN0IGRlZGljYXRlZEVudkZpbGVKcyA9IHBhdGguam9pbihjd2QsICdlbnYnLCBgJHtlbnZOYW1lfS5qc2ApO1xyXG4gICAgY29uc3QgZGVkaWNhdGVkRW52RmlsZUpzb24gPSBwYXRoLmpvaW4oY3dkLCAnZW52JywgYCR7ZW52TmFtZX0uanNvbmApO1xyXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZGVkaWNhdGVkRW52RmlsZUpzKSkge1xyXG4gICAgICAgIHJldHVybiBtb2R1bGVSZXF1aXJlKGRlZGljYXRlZEVudkZpbGVKcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmcy5leGlzdHNTeW5jKGRlZGljYXRlZEVudkZpbGVKc29uKSkge1xyXG4gICAgICAgIHJldHVybiBtb2R1bGVSZXF1aXJlKGRlZGljYXRlZEVudkZpbGVKc29uKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7fTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEVudmlyb25tZW50cyh0YXJnZXQpIHtcclxuICAgIGxldCB0YXJnZXRDd2QgPSBudWxsO1xyXG5cclxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmN3ZCkge1xyXG4gICAgICAgIHRhcmdldEN3ZCA9IHRhcmdldC5jd2Q7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3dkID0gdGFyZ2V0Q3dkIHx8IHByb2Nlc3MuY3dkKCk7XHJcbiAgICBjb25zdCBkZWZhdWx0RW52RmlsZSA9IHBhdGguam9pbihjd2QsIGAke09YWUdFTl9FTlZfRklMRV9OQU1FfS5qc2ApO1xyXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZGVmYXVsdEVudkZpbGUpKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIG1vZHVsZVJlcXVpcmUoZGVmYXVsdEVudkZpbGUpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmaWxlOiAke2RlZmF1bHRFbnZGaWxlfS4gUmVhc29uOiAke2UubWVzc2FnZX0gJHtlLnN0YWNrfWApO1xyXG4gICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHt9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlndXJhdGlvbnModGFyZ2V0LCBhcmd2KSB7XHJcbiAgICAvLyBwcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcclxuICAgIGxldCB0YXJnZXRDd2QgPSBudWxsO1xyXG5cclxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmN3ZCkge1xyXG4gICAgICAgIHRhcmdldEN3ZCA9IHRhcmdldC5jd2Q7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgREVGQVVMVF9PUFRTID0ge1xyXG4gICAgICAgIGN3ZDogdGFyZ2V0ID8gKHRhcmdldEN3ZCB8fCBwcm9jZXNzLmN3ZCgpKSA6IHByb2Nlc3MuY3dkKCksXHJcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXHJcbiAgICAgICAgYnJvd3Nlck5hbWU6ICdjaHJvbWUnLFxyXG4gICAgICAgIHNlbGVuaXVtVXJsIDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDQ0NC93ZC9odWInLFxyXG4gICAgICAgIGFwcGl1bVVybCA6ICdodHRwOi8vbG9jYWxob3N0OjQ3MjMvd2QvaHViJyxcclxuICAgICAgICByZW9wZW5TZXNzaW9uOiBmYWxzZSxcclxuICAgICAgICByZVJ1bk9uRmFpbGVkOiBmYWxzZSxcclxuICAgICAgICBpdGVyYXRpb25zIDogMSxcclxuICAgICAgICBkZWJ1Z1BvcnQ6IG51bGwsXHJcbiAgICAgICAgZGVsYXk6IG51bGwsXHJcbiAgICAgICAgY29sbGVjdERldmljZUxvZ3M6IGZhbHNlLFxyXG4gICAgICAgIGNvbGxlY3RBcHBpdW1Mb2dzOiBmYWxzZSxcclxuICAgICAgICBjb2xsZWN0QnJvd3NlckxvZ3M6IGZhbHNlLFxyXG4gICAgICAgIHJlcG9ydGluZzoge1xyXG4gICAgICAgICAgICByZXBvcnRlcnM6IFsnaHRtbCddXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwYXJhbWV0ZXJzIDoge1xyXG4gICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gICAgICAgICAgICBtb2RlOiAnc2VxJ1xyXG4gICAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgLy8gcmV0cmlldmUgb3B0aW9ucyBwcm92aWRlZCB2aWEgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xyXG4gICAgY29uc3QgY21kT3B0cyA9IGdldENvbW1hbmRMaW5lT3B0aW9ucyhhcmd2KTtcclxuICAgIC8vIGlmIHRoZSB0YXJnZXQgaXMgb3h5Z2VuIGNvbmZpZyBmaWxlLCBtZXJnZSBpdHMgY29udGVudCB3aXRoIHRoZSBkZWZhdWx0IG9wdGlvbnNcclxuICAgIGxldCBwcm9qQ29uZmlnT3B0cyA9IHt9O1xyXG4gICAgaWYgKHRhcmdldCAmJiB0YXJnZXQubmFtZSA9PT0gT1hZR0VOX0NPTkZJR19GSUxFX05BTUUgJiYgKHRhcmdldC5leHRlbnNpb24gPT09ICcuanMnIHx8IHRhcmdldC5leHRlbnNpb24gPT09ICcuanNvbicpKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcHJvakNvbmZpZ09wdHMgPSBtb2R1bGVSZXF1aXJlKHRhcmdldC5wYXRoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgZmlsZTogJHt0YXJnZXQucGF0aH0uIFJlYXNvbjogJHtlLm1lc3NhZ2V9ICR7ZS5zdGFja31gKTtcclxuICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGVudnMgPSBnZXRFbnZpcm9ubWVudHModGFyZ2V0KTtcclxuXHJcbiAgICBpZiAocHJvakNvbmZpZ09wdHMuZW52cykge1xyXG4gICAgICAgIC8vIG1lcmdlIGV4dGVybmFsIGVudmlyb25tZW50cyBkZWZpbml0aW9uIHdpdGggdGhlIG9uZSBpbiB0aGUgY29uZmlnIGZpbGVcclxuICAgICAgICBwcm9qQ29uZmlnT3B0cy5lbnZzID0geyAuLi5wcm9qQ29uZmlnT3B0cy5lbnZzLCAuLi5lbnZzIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBwcm9qQ29uZmlnT3B0cyA9IHsgLi4ucHJvakNvbmZpZ09wdHMsIGVudnM6IGVudnMgfTtcclxuICAgIH1cclxuICAgIC8vIGRldGVybWluZSB0ZXN0IG5hbWVcclxuICAgIGxldCBuYW1lID0gY21kT3B0cy5uYW1lIHx8IHByb2pDb25maWdPcHRzLm5hbWUgfHwgbnVsbDtcclxuICAgIGlmICghbmFtZSAmJiB0YXJnZXQpIHtcclxuICAgICAgICBuYW1lID0gdGFyZ2V0Lm5hbWUgIT09IE9YWUdFTl9DT05GSUdfRklMRV9OQU1FID8gdGFyZ2V0Lm5hbWUgOiB0YXJnZXQuYmFzZU5hbWU7XHJcbiAgICB9XHJcbiAgICAvLyBtZXJnZSBvcHRpb25zIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIG9yZGVyICh0aGUgbGFzdCBvbmUgb3ZlcnJpZGVzIHRoZSBwcmV2aW91cyBvbmUpOlxyXG4gICAgLy8gZGVmYXVsdCBvcHRpb25zLCBwcm9qZWN0IGNvbmZpZyBmaWxlLCBjb21tYW5kIGxpbmUgYXJndW1lbnRzXHJcbiAgICByZXR1cm4geyAuLi5ERUZBVUxUX09QVFMsIC4uLnByb2pDb25maWdPcHRzLCAuLi5jbWRPcHRzLCBuYW1lOiBuYW1lIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tYW5kTGluZU9wdGlvbnMoYXJndikge1xyXG4gICAgY29uc3Qgb3B0cyA9IHtcclxuICAgICAgICAvLyBzd2l0Y2g6IC0tbmFtZSBcclxuICAgICAgICBuYW1lOiBhcmd2Lm5hbWUgfHwgbnVsbCxcclxuICAgICAgICAvLyBzd2l0Y2g6IC1iIG9yIC0tYnJvd3NlclxyXG4gICAgICAgIGJyb3dzZXJOYW1lIDogYXJndi5iIHx8IGFyZ3YuYnJvd3NlciB8fCBudWxsLFxyXG4gICAgICAgIHNlbGVuaXVtVXJsIDogYXJndi5zIHx8IGFyZ3Yuc2VydmVyIHx8IG51bGwsXHJcbiAgICAgICAgYXBwaXVtVXJsIDogYXJndi5zIHx8IGFyZ3Yuc2VydmVyIHx8IG51bGwsXHJcbiAgICAgICAgcmVvcGVuU2Vzc2lvbjogYXJndi5yZW9wZW4gPyBhcmd2LnJlb3BlbiA9PT0gJ3RydWUnIDogbnVsbCxcclxuICAgICAgICBpdGVyYXRpb25zIDogYXJndi5pID8gcGFyc2VJbnQoYXJndi5pKSA6IChhcmd2Lml0ZXIgPyBwYXJzZUludChhcmd2Lml0ZXIpIDogbnVsbCksXHJcbiAgICAgICAgZGVidWdQb3J0OiBhcmd2LmRiZ3BvcnQgfHwgbnVsbCxcclxuICAgICAgICBkZWxheTogYXJndi5kIHx8IGFyZ3YuZGVsYXkgfHwgbnVsbCxcclxuICAgIH07XHJcbiAgICAvLyBzd2l0Y2g6IC0tcmYgZmxhZ1xyXG4gICAgaWYgKGFyZ3YucmYgJiYgdHlwZW9mIGFyZ3YucmYgPT09ICdzdHJpbmcnICYmIGFyZ3YucmYubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHJlcG9ydEZvcm1hdHMgPSBhcmd2LnJmLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgb3B0cy5yZXBvcnRpbmcgPSB7XHJcbiAgICAgICAgICAgIHJlcG9ydGVyczogcmVwb3J0Rm9ybWF0c1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gc3dpdGNoOiAtLXJvIC0gc2V0IHJlcG9ydGVyIG91dHB1dCBkaXJlY3RvcnkgaWYgc2V0IGJ5IHVzZXIgdGhyb3VnaCBjb21uYW5kIGxpbmVcclxuICAgICAgICAvLyBOT1RFOiAtLXJvIHN3aXRjaCBtdXN0IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIC0tcmZcclxuICAgICAgICBpZiAoYXJndi5ybyAmJiB0eXBlb2YgYXJndi5ybyA9PT0gJ3N0cmluZycgJiYgYXJndi5yby5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIG9wdHMucmVwb3J0aW5nLm91dHB1dERpciA9IGFyZ3Yucm87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gb3B0aW9uOiAtcCBvciAtLXBhcmFtIGFuZCAtLXBtXHJcbiAgICBpZiAoYXJndi5wIHx8IGFyZ3YucGFyYW0pIHtcclxuICAgICAgICBvcHRzLnBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICAgICAgIGZpbGU6IGFyZ3YucCB8fCBhcmd2LnBhcmFtIHx8IG51bGwsXHJcbiAgICAgICAgICAgIG1vZGU6IGFyZ3YucG0gfHwgJ3NlcSdcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHN3aXRjaDogLS1zcGVjcyAtIHNldCBzcGVjcyBpZiBzZXQgYnkgdXNlciB0aHJvdWdoIGNvbW5hbmQgbGluZVxyXG4gICAgaWYgKGFyZ3Yuc3BlY3MgJiYgdHlwZW9mIGFyZ3Yuc3BlY3MgPT09ICdzdHJpbmcnICYmIGFyZ3Yuc3BlY3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHNwZWNzID0gYXJndi5zcGVjcy5zcGxpdCgnLCcpO1xyXG4gICAgICAgIG9wdHMuc3BlY3MgPSBzcGVjcztcclxuICAgIH1cclxuICAgIC8vIHN3aXRjaDogLS1tb2R1bGVzIC0gc2V0IGEgbGlzdCBvZiBtb2R1bGVzIHRvIGJlIGxvYWRlZCwgaWYgc2V0IGJ5IHVzZXIgdGhyb3VnaCBjb21uYW5kIGxpbmVcclxuICAgIGlmIChhcmd2Lm1vZHVsZXMgJiYgdHlwZW9mIGFyZ3YubW9kdWxlcyA9PT0gJ3N0cmluZycgJiYgYXJndi5tb2R1bGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBtb2R1bGVzID0gYXJndi5tb2R1bGVzLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgb3B0cy5tb2R1bGVzID0gbW9kdWxlcztcclxuICAgIH1cclxuICAgIC8vIHJlbW92ZSBhbnkgcHJvcGVydHkgd2l0aCBudWxsIHZhbHVlIChzbyBpdCB3b24ndCBvdmVycmlkZSBkZWZhdWx0IHZhbHVlcyBpZiBpdCdzIG51bGwpXHJcbiAgICByZXR1cm4gZGVsZXRlTnVsbFByb3BlcnRpZXMob3B0cyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlbGV0ZU51bGxQcm9wZXJ0aWVzKG9iaikge1xyXG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuICAgIGNvbnN0IGNsb25lID0geyAuLi5vYmogfTtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xyXG4gICAgZm9yRWFjaCAoa2V5cywga2V5ID0+IHtcclxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSAmJiAob2JqW2tleV0gPT0gbnVsbCB8fCBvYmpba2V5XSA9PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBjbG9uZVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1RhcmdldFBhdGgodGFyZ2V0UGF0aCwgY3dkKSB7XHJcbiAgICAvLyBnZXQgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpZiB1c2VyIGhhcyBub3QgcHJvdmlkZWQgcGF0aFxyXG4gICAgaWYgKHR5cGVvZih0YXJnZXRQYXRoKSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICB0YXJnZXRQYXRoID0gY3dkIHx8IHByb2Nlc3MuY3dkKCk7XHJcbiAgICB9XHJcbiAgICAvLyB1c2VyJ3MgcGF0aCBtaWdodCBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAtIG1ha2Ugc3VyZSB0aGUgcmVsYXRpdmUgcGF0aCB3aWxsIHdvcmtcclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHRhcmdldFBhdGggPSBveHV0aWwucmVzb2x2ZVBhdGgodGFyZ2V0UGF0aCwgY3dkIHx8IHByb2Nlc3MuY3dkKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0YXJnZXRQYXRoKSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0YXRzID0gZnMubHN0YXRTeW5jKHRhcmdldFBhdGgpO1xyXG4gICAgY29uc3QgaXNEaXJlY3RvciA9IHN0YXRzLmlzRGlyZWN0b3J5KCk7XHJcbiAgICBpZiAoaXNEaXJlY3Rvcikge1xyXG4gICAgICAgIC8vIGFwcGVuZCBveHlnZW4gY29uZmlnIGZpbGUgbmFtZSB0byB0aGUgZGlyZWN0b3J5LCBpZiBubyB0ZXN0IGNhc2UgZmlsZSB3YXMgcHJvdmlkZWRcclxuICAgICAgICBsZXQgY29uZmlnRmlsZVBhdGggPSBwYXRoLmpvaW4odGFyZ2V0UGF0aCwgT1hZR0VOX0NPTkZJR19GSUxFX05BTUUgKyAnLmpzJyk7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGNvbmZpZ0ZpbGVQYXRoKSkge1xyXG4gICAgICAgICAgICBjb25maWdGaWxlUGF0aCA9IHBhdGguam9pbih0YXJnZXRQYXRoLCBPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSArICcuanNvbicpO1xyXG4gICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0YXJnZXRQYXRoID0gY29uZmlnRmlsZVBhdGg7XHJcbiAgICB9XHJcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGFyZ2V0UGF0aCkpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLy8gcGF0aCB0byB0aGUgY29uZmlnIG9yIC5qcyBmaWxlXHJcbiAgICAgICAgcGF0aDogdGFyZ2V0UGF0aCxcclxuICAgICAgICAvLyB3b3JraW5nIGRpcmVjdG9yeVxyXG4gICAgICAgIGN3ZDogY3dkIHx8IHBhdGguZGlybmFtZSh0YXJnZXRQYXRoKSxcclxuICAgICAgICAvLyBuYW1lIG9mIHRoZSB0YXJnZXQgZmlsZSB3aXRob3V0IGV4dGVuc2lvblxyXG4gICAgICAgIG5hbWU6IG94dXRpbC5nZXRGaWxlTmFtZVdpdGhvdXRFeHQodGFyZ2V0UGF0aCksXHJcbiAgICAgICAgLy8gbmFtZSBpbmNsdWRpbmcgZXh0ZW5zaW9uXHJcbiAgICAgICAgZnVsbE5hbWU6IHBhdGguYmFzZW5hbWUodGFyZ2V0UGF0aCksXHJcbiAgICAgICAgLy8gcGFyZW50IGZvbGRlcidzIG5hbWVcclxuICAgICAgICBiYXNlTmFtZTogcGF0aC5iYXNlbmFtZShwYXRoLmRpcm5hbWUodGFyZ2V0UGF0aCkpLFxyXG4gICAgICAgIC8vIHRhcmdldCBmaWxlIGV4dGVuc2lvblxyXG4gICAgICAgIGV4dGVuc2lvbjogcGF0aC5leHRuYW1lKHRhcmdldFBhdGgpXHJcbiAgICB9O1xyXG59Il19
package/build/lib/cli.js CHANGED
@@ -43,7 +43,7 @@ if (argv.d || argv.delay) {
43
43
  }
44
44
  }
45
45
 
46
- const targetFile = cliutil.processTargetPath(argv._[0]);
46
+ const targetFile = cliutil.processTargetPath(argv._[0], argv.cwd);
47
47
 
48
48
  if (targetFile == null) {
49
49
  printUsage();
@@ -132,4 +132,4 @@ Web test options:
132
132
  Mobile test options:
133
133
  -s, --server=SERVER_URL Appium server URL. Default is http://localhost:4723/wd/hub.`);
134
134
  }
135
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwibGF1bmNoZXIiLCJMYXVuY2hlciIsInJ1biIsImdlbmVyYXRlUmVwb3J0cyIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQUEsT0FBTyxDQUFDQyxFQUFSLENBQVcsUUFBWCxFQUFxQkMsWUFBckI7QUFDQUYsT0FBTyxDQUFDQyxFQUFSLENBQVcsbUJBQVgsRUFBZ0NFLEtBQUssSUFBSTtBQUNyQ0MsRUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsbUJBQWQsRUFBbUNBLEtBQW5DO0FBQ0gsQ0FGRDtBQUlBSCxPQUFPLENBQUNDLEVBQVIsQ0FBVyxvQkFBWCxFQUFpQ0UsS0FBSyxJQUFJO0FBQ3RDQyxFQUFBQSxPQUFPLENBQUNELEtBQVIsQ0FBYyxvQkFBZCxFQUFvQ0EsS0FBcEM7QUFDSCxDQUZEOztBQUtBLE1BQU1FLElBQUksR0FBR0MsT0FBTyxDQUFDLFVBQUQs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QUFFQSxNQUFJO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLHlCQUFKLENBQXFCYixPQUFyQixDQUFqQjtBQUNBLFVBQU1jLFFBQVEsR0FBRyxJQUFJQyxpQkFBSixDQUFhZixPQUFiLEVBQXNCWSxRQUF0QixDQUFqQjtBQUNBakMsSUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQVksaUJBQVo7QUFDQSxVQUFNNkIsUUFBUSxDQUFDRSxHQUFULENBQWFQLE9BQWIsQ0FBTjtBQUNBRyxJQUFBQSxRQUFRLENBQUNLLGVBQVQ7QUFDQU4sSUFBQUEsUUFBUSxHQUFHQyxRQUFRLENBQUNNLFdBQVQsRUFBWDtBQUNILEdBUEQsQ0FRQSxPQUFPZixDQUFQLEVBQVU7QUFDTnhCLElBQUFBLE9BQU8sQ0FBQ0QsS0FBUixDQUFjLGFBQWQsRUFBNkJ5QixDQUE3QjtBQUNBeEIsSUFBQUEsT0FBTyxDQUFDd0MsS0FBUjtBQUNBNUMsSUFBQUEsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYjtBQUNIOztBQUNELFNBQU95QixRQUFQO0FBQ0g7O0FBRUQsU0FBU2xDLFlBQVQsR0FBd0I7QUFFcEIyQyxFQUFBQSxVQUFVLENBQUMsTUFBTTdDLE9BQU8sQ0FBQ1csSUFBUixDQUFhLENBQWIsQ0FBUCxFQUF3QixJQUF4QixDQUFWO0FBQ0g7O0FBRUQsU0FBU0csVUFBVCxHQUFzQjtBQUNsQlYsRUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RkFoQ0k7QUFpQ0giLCJzb3VyY2VzQ29udGVudCI6WyIjISAvdXNyL2Jpbi9lbnYgbm9kZVxyXG4vKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuaW1wb3J0ICogYXMgY2xpdXRpbCBmcm9tICcuL2NsaS11dGlsJztcclxuaW1wb3J0IExhdW5jaGVyIGZyb20gJy4vbGF1bmNoZXInO1xyXG5pbXBvcnQgUmVwb3J0QWdncmVnYXRvciBmcm9tICcuLi9yZXBvcnRlci9SZXBvcnRBZ2dyZWdhdG9yJztcclxuXHJcbnByb2Nlc3Mub24oJ1NJR0lOVCcsIGhhbmRsZVNpZ0ludCk7XHJcbnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyb3IgPT4ge1xyXG4gICAgY29uc29sZS5lcnJvcigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvcik7XHJcbn0pO1xyXG5cclxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IgPT4ge1xyXG4gICAgY29uc29sZS5lcnJvcigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IpO1xyXG59KTtcclxuXHJcbi8vIHBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcclxuY29uc3QgYXJndiA9IHJlcXVpcmUoJ21pbmltaXN0JykocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKTtcclxuXHJcbmlmIChhcmd2LnYgfHwgYXJndi52ZXJzaW9uKSB7XHJcbiAgICBjb25zb2xlLmxvZyhyZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uKTtcclxuICAgIHByb2Nlc3MuZXhpdCgwKTtcclxufSBlbHNlIGlmICh0eXBlb2YoYXJndi5fWzBdKSA9PT0gJ3VuZGVmaW5lZCcgfHwgYXJndi5oZWxwKSB7XHJcbiAgICBwcmludFVzYWdlKCk7XHJcbiAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbn1cclxuXHJcbmlmIChhcmd2LmQgfHwgYXJndi5kZWxheSkge1xyXG4gICAgY29uc3QgZGVsYXkgPSBhcmd2LmQgfHwgYXJndi5kZWxheTtcclxuICAgIGlmICghKHBhcnNlSW50KGRlbGF5KSA+IDApKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgYXJndW1lbnQgLSAnZGVsYXknIHNob3VsZCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuXCIpO1xyXG4gICAgICAgIHByaW50VXNhZ2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHRhcmdldEZpbGUgPSBjbGl1dGlsLnByb2Nlc3NUYXJnZXRQYXRoKGFyZ3YuX1swXSk7XHJcbmlmICh0YXJnZXRGaWxlID09IG51bGwpIHtcclxuICAgIHByaW50VXNhZ2UoKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxufVxyXG5cclxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcclxuXHJcbmNsaXV0aWwuZ2VuZXJhdGVUZXN0T3B0aW9ucyhjb25maWcsIGFyZ3YpLnRoZW4oXHJcbiAgICAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgIHByZXBhcmVBbmRTdGFydFRoZVRlc3Qob3B0aW9ucykudGhlbihcclxuICAgICAgICAgICAgKGNvZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KGNvZGUpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGVzdCBmYWlsZWQ6ICcsIGUpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0sXHJcbiAgICAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkIG9uIGdlbmVyYXRlIHN0YXRlOiAnLCBlKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbik7XHJcblxyXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcclxuICAgIGlmIChvcHRpb25zLmZyYW1ld29yayA9PT0gJ294eWdlbicgJiYgKCFvcHRpb25zLnN1aXRlcyB8fCAhQXJyYXkuaXNBcnJheShvcHRpb25zLnN1aXRlcykpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHRlc3QgLSBubyBzdWl0ZXMgYXJlIHNwZWNpZmllZC4nKTtcclxuICAgIH1cclxuICAgIGxldCBjYXBzQXJyID0gb3B0aW9ucy5jYXBhYmlsaXRpZXMgfHwgW3t9XTtcclxuICAgIC8vIGNoZWNrIGlmIGNhcGFiaWxpdGllcyBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSBoYXNodGFibGVcclxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgICBjYXBzQXJyID0gW2NhcHNBcnJdO1xyXG4gICAgfVxyXG4gICAgbGV0IGV4aXRDb2RlID0gMDtcclxuICAgIC8vIHN0YXJ0IGxhdW5jaGVyXHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgbGF1bmNoZXIgPSBuZXcgTGF1bmNoZXIob3B0aW9ucywgcmVwb3J0ZXIpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUZXN0IHN0YXJ0ZWQuLi4nKTtcclxuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XHJcbiAgICAgICAgcmVwb3J0ZXIuZ2VuZXJhdGVSZXBvcnRzKCk7XHJcbiAgICAgICAgZXhpdENvZGUgPSByZXBvcnRlci5nZXRFeGl0Q29kZSgpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdGYXRhbCBlcnJvcicsIGUpO1xyXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXhpdENvZGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcclxuICAgIC8vIGRlbGF5IHByb2Nlc3MgZXhpdCB0byBsZXQgT3h5Z2VuIHRvIHByb3Blcmx5IGRpc3Bvc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gcHJvY2Vzcy5leGl0KDApLCAyMDAwKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJpbnRVc2FnZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXHJcblxyXG5GSUxFIC0gUGF0aCB0byBhIHRlc3Qgc2NyaXB0ICguanMpIG9yIGEgcHJvamVjdCBjb25maWd1cmF0aW9uICguanNvbikgZmlsZS5cclxuXHJcbkdlbmVyYWwgb3B0aW9uczpcclxuICAtZCwgLS1kZWxheT1TRUNPTkRTICAgICAgICBEZWxheSBiZXR3ZWVuIGVhY2ggY29tbWFuZCBpbiBzZWNvbmRzLlxyXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cclxuICAgICAgLS1ybz1QQVRIICAgICAgICAgICAgICBPdXRwdXQgcGF0aCBmb3IgcmVwb3J0IGZpbGUuIElmIHNwZWNpZmllZCwgdGhlIHJlcG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgb3ZlcndyaXRlIGFueSBwcmV2aW91cyByZXBvcnRzLlxyXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cclxuICAtcCwgLS1wYXJhbT1GSUxFICAgICAgICAgICBQYXJhbWV0ZXJzIGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgYW4gYXR0ZW1wdCB3aWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgbWFkZSB0byBsb2FkIHBhcmFtZXRlcnMgZnJvbSBhIGZpbGUgbmFtZWQgc2FtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhhdmluZyBleHRlbnNpb24gLSB4bHN4LCB4bHMsIGNzdiwgb3IgdHh0LlxyXG4gICAgICAtLXBtPXtzZXF8cmFuZG9tfGFsbH0gIE9yZGVyIGluIHdoaWNoIHRvIHJlYWQgdGhlIHBhcmFtZXRlcnMgLSBzZXF1ZW50aWFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiAnc2VxJyBhbmQgJ3JhbmRvbScgbW9kZXMgdGVzdCB3aWxsIHJ1biBleGFjdCBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aW1lcyBzcGVjaWZpZWQgd2l0aCB0aGUgLWkgb3B0aW9uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsbHkuIFRoaXMgb3B0aW9uIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWkgb3B0aW9uLlxyXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXHJcbiAgICAgIC0tc3VpdGVzICAgICAgICAgICAgICAgRmlsdGVyIG91dCBzdWl0ZXMgYnkgbmFtZVxyXG4gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBpbmZvcm1hdGlvbiBhbmQgZXhpdC5cclxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQuXHJcblxyXG5XZWIgdGVzdCBvcHRpb25zOlxyXG4gIC1iLCAtLWJyb3dzZXI9e2Nocm9tZXxpZXxzYWZhcml8ZmlyZWZveH0gIEJyb3dzZXIgbmFtZS4gRGVmYXVsdCBpcyBjaHJvbWUuXHJcbiAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgICAgU2VsZW5pdW0gaHViIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ0NDQvd2QvaHViLlxyXG4gICAgICAtLXJlb3Blbj17dHJ1ZXxmYWxzZX0gIFJlb3BlbiBicm93c2VyIG9uIGVhY2ggaXRlcmF0aW9uLiBEZWZhdWx0IGlzIGZhbHNlLlxyXG4gICAgICBcclxuTW9iaWxlIHRlc3Qgb3B0aW9uczpcclxuICAgIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICBBcHBpdW0gc2VydmVyIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ3MjMvd2QvaHViLmApO1xyXG59Il19
135
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjd2QiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwibGF1bmNoZXIiLCJMYXVuY2hlciIsInJ1biIsImdlbmVyYXRlUmVwb3J0cyIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQUEsT0FBTyxDQUFDQyxFQUFSLENBQVcsUUFBWCxFQUFxQkMsWUFBckI7QUFDQUYsT0FBTyxDQUFDQyxFQUFSLENBQVcsbUJBQVgsRUFBZ0NFLEtBQUssSUFBSTtBQUNyQ0MsRUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsbUJBQWQsRUFBbUNBLEtBQW5DO0FBQ0gsQ0FGRDtBQUlBSCxPQUFPLENBQUNDLEVBQVIsQ0FBVyxvQkFBWCxFQUFpQ0UsS0FBSyxJQUFJO0FBQ3RDQyxFQUFBQSxPQUFPLENBQUNELEtBQVIsQ0FBYyxvQkFBZCxFQUFvQ0EsS0FBcEM7QUFDSCxDQUZEOztBQUtBLE1BQU1FLElBQUksR0FBR0MsT0FBTyxDQUFD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QUNIOztBQUNELE1BQUlFLFFBQVEsR0FBRyxDQUFmOztBQUVBLE1BQUk7QUFDQSxVQUFNQyxRQUFRLEdBQUcsSUFBSUMseUJBQUosQ0FBcUJiLE9BQXJCLENBQWpCO0FBQ0EsVUFBTWMsUUFBUSxHQUFHLElBQUlDLGlCQUFKLENBQWFmLE9BQWIsRUFBc0JZLFFBQXRCLENBQWpCO0FBQ0FsQyxJQUFBQSxPQUFPLENBQUNNLEdBQVIsQ0FBWSxpQkFBWjtBQUNBLFVBQU04QixRQUFRLENBQUNFLEdBQVQsQ0FBYVAsT0FBYixDQUFOO0FBQ0FHLElBQUFBLFFBQVEsQ0FBQ0ssZUFBVDtBQUNBTixJQUFBQSxRQUFRLEdBQUdDLFFBQVEsQ0FBQ00sV0FBVCxFQUFYO0FBQ0gsR0FQRCxDQVFBLE9BQU9mLENBQVAsRUFBVTtBQUNOekIsSUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsYUFBZCxFQUE2QjBCLENBQTdCO0FBQ0F6QixJQUFBQSxPQUFPLENBQUN5QyxLQUFSO0FBQ0E3QyxJQUFBQSxPQUFPLENBQUNXLElBQVIsQ0FBYSxDQUFiO0FBQ0g7O0FBQ0QsU0FBTzBCLFFBQVA7QUFDSDs7QUFFRCxTQUFTbkMsWUFBVCxHQUF3QjtBQUVwQjRDLEVBQUFBLFVBQVUsQ0FBQyxNQUFNOUMsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYixDQUFQLEVBQXdCLElBQXhCLENBQVY7QUFDSDs7QUFFRCxTQUFTRyxVQUFULEdBQXNCO0FBQ2xCVixFQUFBQSxPQUFPLENBQUNNLEdBQVIsQ0FBYTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlGQWhDSTtBQWlDSCIsInNvdXJjZXNDb250ZW50IjpbIiMhIC91c3IvYmluL2VudiBub2RlXHJcbi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5pbXBvcnQgKiBhcyBjbGl1dGlsIGZyb20gJy4vY2xpLXV0aWwnO1xyXG5pbXBvcnQgTGF1bmNoZXIgZnJvbSAnLi9sYXVuY2hlcic7XHJcbmltcG9ydCBSZXBvcnRBZ2dyZWdhdG9yIGZyb20gJy4uL3JlcG9ydGVyL1JlcG9ydEFnZ3JlZ2F0b3InO1xyXG5cclxucHJvY2Vzcy5vbignU0lHSU5UJywgaGFuZGxlU2lnSW50KTtcclxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvciA9PiB7XHJcbiAgICBjb25zb2xlLmVycm9yKCd1bmNhdWdodEV4Y2VwdGlvbicsIGVycm9yKTtcclxufSk7XHJcblxyXG5wcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnJvciA9PiB7XHJcbiAgICBjb25zb2xlLmVycm9yKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnJvcik7XHJcbn0pO1xyXG5cclxuLy8gcGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xyXG5jb25zdCBhcmd2ID0gcmVxdWlyZSgnbWluaW1pc3QnKShwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpO1xyXG5cclxuaWYgKGFyZ3YudiB8fCBhcmd2LnZlcnNpb24pIHtcclxuICAgIGNvbnNvbGUubG9nKHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb24pO1xyXG4gICAgcHJvY2Vzcy5leGl0KDApO1xyXG59IGVsc2UgaWYgKHR5cGVvZihhcmd2Ll9bMF0pID09PSAndW5kZWZpbmVkJyB8fCBhcmd2LmhlbHApIHtcclxuICAgIHByaW50VXNhZ2UoKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxufVxyXG5cclxuaWYgKGFyZ3YuZCB8fCBhcmd2LmRlbGF5KSB7XHJcbiAgICBjb25zdCBkZWxheSA9IGFyZ3YuZCB8fCBhcmd2LmRlbGF5O1xyXG4gICAgaWYgKCEocGFyc2VJbnQoZGVsYXkpID4gMCkpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBhcmd1bWVudCAtICdkZWxheScgc2hvdWxkIGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci5cIik7XHJcbiAgICAgICAgcHJpbnRVc2FnZSgpO1xyXG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcclxuICAgIH1cclxufVxyXG5cclxuY29uc3QgdGFyZ2V0RmlsZSA9IGNsaXV0aWwucHJvY2Vzc1RhcmdldFBhdGgoYXJndi5fWzBdLCBhcmd2LmN3ZCk7XHJcbmlmICh0YXJnZXRGaWxlID09IG51bGwpIHtcclxuICAgIHByaW50VXNhZ2UoKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxufVxyXG5cclxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcclxuXHJcbmNsaXV0aWwuZ2VuZXJhdGVUZXN0T3B0aW9ucyhjb25maWcsIGFyZ3YpLnRoZW4oXHJcbiAgICAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgIHByZXBhcmVBbmRTdGFydFRoZVRlc3Qob3B0aW9ucykudGhlbihcclxuICAgICAgICAgICAgKGNvZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KGNvZGUpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGVzdCBmYWlsZWQ6ICcsIGUpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0sXHJcbiAgICAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkIG9uIGdlbmVyYXRlIHN0YXRlOiAnLCBlKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbik7XHJcblxyXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcclxuICAgIGlmIChvcHRpb25zLmZyYW1ld29yayA9PT0gJ294eWdlbicgJiYgKCFvcHRpb25zLnN1aXRlcyB8fCAhQXJyYXkuaXNBcnJheShvcHRpb25zLnN1aXRlcykpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHRlc3QgLSBubyBzdWl0ZXMgYXJlIHNwZWNpZmllZC4nKTtcclxuICAgIH1cclxuICAgIGxldCBjYXBzQXJyID0gb3B0aW9ucy5jYXBhYmlsaXRpZXMgfHwgW3t9XTtcclxuICAgIC8vIGNoZWNrIGlmIGNhcGFiaWxpdGllcyBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSBoYXNodGFibGVcclxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgICBjYXBzQXJyID0gW2NhcHNBcnJdO1xyXG4gICAgfVxyXG4gICAgbGV0IGV4aXRDb2RlID0gMDtcclxuICAgIC8vIHN0YXJ0IGxhdW5jaGVyXHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgbGF1bmNoZXIgPSBuZXcgTGF1bmNoZXIob3B0aW9ucywgcmVwb3J0ZXIpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUZXN0IHN0YXJ0ZWQuLi4nKTtcclxuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XHJcbiAgICAgICAgcmVwb3J0ZXIuZ2VuZXJhdGVSZXBvcnRzKCk7XHJcbiAgICAgICAgZXhpdENvZGUgPSByZXBvcnRlci5nZXRFeGl0Q29kZSgpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdGYXRhbCBlcnJvcicsIGUpO1xyXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXhpdENvZGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcclxuICAgIC8vIGRlbGF5IHByb2Nlc3MgZXhpdCB0byBsZXQgT3h5Z2VuIHRvIHByb3Blcmx5IGRpc3Bvc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gcHJvY2Vzcy5leGl0KDApLCAyMDAwKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJpbnRVc2FnZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXHJcblxyXG5GSUxFIC0gUGF0aCB0byBhIHRlc3Qgc2NyaXB0ICguanMpIG9yIGEgcHJvamVjdCBjb25maWd1cmF0aW9uICguanNvbikgZmlsZS5cclxuXHJcbkdlbmVyYWwgb3B0aW9uczpcclxuICAtZCwgLS1kZWxheT1TRUNPTkRTICAgICAgICBEZWxheSBiZXR3ZWVuIGVhY2ggY29tbWFuZCBpbiBzZWNvbmRzLlxyXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cclxuICAgICAgLS1ybz1QQVRIICAgICAgICAgICAgICBPdXRwdXQgcGF0aCBmb3IgcmVwb3J0IGZpbGUuIElmIHNwZWNpZmllZCwgdGhlIHJlcG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgb3ZlcndyaXRlIGFueSBwcmV2aW91cyByZXBvcnRzLlxyXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cclxuICAtcCwgLS1wYXJhbT1GSUxFICAgICAgICAgICBQYXJhbWV0ZXJzIGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgYW4gYXR0ZW1wdCB3aWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgbWFkZSB0byBsb2FkIHBhcmFtZXRlcnMgZnJvbSBhIGZpbGUgbmFtZWQgc2FtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhhdmluZyBleHRlbnNpb24gLSB4bHN4LCB4bHMsIGNzdiwgb3IgdHh0LlxyXG4gICAgICAtLXBtPXtzZXF8cmFuZG9tfGFsbH0gIE9yZGVyIGluIHdoaWNoIHRvIHJlYWQgdGhlIHBhcmFtZXRlcnMgLSBzZXF1ZW50aWFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiAnc2VxJyBhbmQgJ3JhbmRvbScgbW9kZXMgdGVzdCB3aWxsIHJ1biBleGFjdCBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aW1lcyBzcGVjaWZpZWQgd2l0aCB0aGUgLWkgb3B0aW9uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsbHkuIFRoaXMgb3B0aW9uIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWkgb3B0aW9uLlxyXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXHJcbiAgICAgIC0tc3VpdGVzICAgICAgICAgICAgICAgRmlsdGVyIG91dCBzdWl0ZXMgYnkgbmFtZVxyXG4gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBpbmZvcm1hdGlvbiBhbmQgZXhpdC5cclxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQuXHJcblxyXG5XZWIgdGVzdCBvcHRpb25zOlxyXG4gIC1iLCAtLWJyb3dzZXI9e2Nocm9tZXxpZXxzYWZhcml8ZmlyZWZveH0gIEJyb3dzZXIgbmFtZS4gRGVmYXVsdCBpcyBjaHJvbWUuXHJcbiAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgICAgU2VsZW5pdW0gaHViIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ0NDQvd2QvaHViLlxyXG4gICAgICAtLXJlb3Blbj17dHJ1ZXxmYWxzZX0gIFJlb3BlbiBicm93c2VyIG9uIGVhY2ggaXRlcmF0aW9uLiBEZWZhdWx0IGlzIGZhbHNlLlxyXG4gICAgICBcclxuTW9iaWxlIHRlc3Qgb3B0aW9uczpcclxuICAgIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICBBcHBpdW0gc2VydmVyIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ3MjMvd2QvaHViLmApO1xyXG59Il19