testcafe 3.0.1 → 3.1.0-rc.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.
@@ -7,6 +7,7 @@ const role = lazyRequire('../../role');
7
7
  const createRequestLogger = lazyRequire('../request-hooks/request-logger');
8
8
  const createRequestMock = lazyRequire('../request-hooks/request-mock/create-request-mock');
9
9
  const userVariables = lazyRequire('../user-variables');
10
+ const getTestCafeVersion = lazyRequire('../../utils/get-testcafe-version');
10
11
  // NOTE: We can't use lazy require for RequestHook, because it will break base class detection for inherited classes
11
12
  let RequestHook = null;
12
13
  // NOTE: We can't use lazy require for testControllerProxy, because it will break test controller detection
@@ -50,7 +51,10 @@ const exportableLib = {
50
51
  get userVariables() {
51
52
  return userVariables.value;
52
53
  },
54
+ get version() {
55
+ return getTestCafeVersion();
56
+ },
53
57
  };
54
58
  exports.default = exportableLib;
55
59
  module.exports = exports.default;
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL2V4cG9ydGFibGUtbGliL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTSxXQUFXLEdBQWEsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlELE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7QUFDNUYsTUFBTSxlQUFlLEdBQVMsV0FBVyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7QUFDL0YsTUFBTSxJQUFJLEdBQW9CLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RCxNQUFNLG1CQUFtQixHQUFLLFdBQVcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQzdFLE1BQU0saUJBQWlCLEdBQU8sV0FBVyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7QUFDL0YsTUFBTSxhQUFhLEdBQVcsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFL0Qsb0hBQW9IO0FBQ3BILElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztBQUV2QiwyR0FBMkc7QUFDM0csSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFFL0IsU0FBUyxJQUFJLENBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPO0lBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRCxTQUFTLFdBQVc7SUFDaEIsT0FBTyxpQkFBaUIsRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBRSxxQkFBcUIsRUFBRSxVQUFVO0lBQ3JELE9BQU8sbUJBQW1CLENBQUMscUJBQXFCLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFFLEVBQUUsRUFBRSxPQUFPO0lBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQXFCLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFFNUYsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFFLEVBQUUsRUFBRSxPQUFPO0lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUVoRixPQUFPLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQ3JDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO0NBQ3RDLENBQUMsQ0FBQztBQUVILE1BQU0sYUFBYSxHQUFHO0lBQ2xCLElBQUk7SUFFSixjQUFjO0lBRWQsUUFBUTtJQUVSLGFBQWE7SUFFYixXQUFXO0lBRVgsSUFBSSxXQUFXO1FBQ1gsSUFBSSxDQUFDLFdBQVc7WUFDWixXQUFXLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFbkQsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUI7WUFDcEIsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFOUQsT0FBTyxtQkFBbUIsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7Q0FDSixDQUFDO0FBRUYsa0JBQWUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbGF6eVJlcXVpcmUgICAgICAgICAgID0gcmVxdWlyZSgnaW1wb3J0LWxhenknKShyZXF1aXJlKTtcbmNvbnN0IENsaWVudEZ1bmN0aW9uQnVpbGRlciA9IGxhenlSZXF1aXJlKCcuLi8uLi9jbGllbnQtZnVuY3Rpb25zL2NsaWVudC1mdW5jdGlvbi1idWlsZGVyJyk7XG5jb25zdCBTZWxlY3RvckJ1aWxkZXIgICAgICAgPSBsYXp5UmVxdWlyZSgnLi4vLi4vY2xpZW50LWZ1bmN0aW9ucy9zZWxlY3RvcnMvc2VsZWN0b3ItYnVpbGRlcicpO1xuY29uc3Qgcm9sZSAgICAgICAgICAgICAgICAgID0gbGF6eVJlcXVpcmUoJy4uLy4uL3JvbGUnKTtcbmNvbnN0IGNyZWF0ZVJlcXVlc3RMb2dnZXIgICA9IGxhenlSZXF1aXJlKCcuLi9yZXF1ZXN0LWhvb2tzL3JlcXVlc3QtbG9nZ2VyJyk7XG5jb25zdCBjcmVhdGVSZXF1ZXN0TW9jayAgICAgPSBsYXp5UmVxdWlyZSgnLi4vcmVxdWVzdC1ob29rcy9yZXF1ZXN0LW1vY2svY3JlYXRlLXJlcXVlc3QtbW9jaycpO1xuY29uc3QgdXNlclZhcmlhYmxlcyAgICAgICAgID0gbGF6eVJlcXVpcmUoJy4uL3VzZXItdmFyaWFibGVzJyk7XG5cbi8vIE5PVEU6IFdlIGNhbid0IHVzZSBsYXp5IHJlcXVpcmUgZm9yIFJlcXVlc3RIb29rLCBiZWNhdXNlIGl0IHdpbGwgYnJlYWsgYmFzZSBjbGFzcyBkZXRlY3Rpb24gZm9yIGluaGVyaXRlZCBjbGFzc2VzXG5sZXQgUmVxdWVzdEhvb2sgPSBudWxsO1xuXG4vLyBOT1RFOiBXZSBjYW4ndCB1c2UgbGF6eSByZXF1aXJlIGZvciB0ZXN0Q29udHJvbGxlclByb3h5LCBiZWNhdXNlIGl0IHdpbGwgYnJlYWsgdGVzdCBjb250cm9sbGVyIGRldGVjdGlvblxubGV0IHRlc3RDb250cm9sbGVyUHJveHkgPSBudWxsO1xuXG5mdW5jdGlvbiBSb2xlIChsb2dpblVybCwgaW5pdEZuLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIHJvbGUuY3JlYXRlUm9sZShsb2dpblVybCwgaW5pdEZuLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gUmVxdWVzdE1vY2sgKCkge1xuICAgIHJldHVybiBjcmVhdGVSZXF1ZXN0TW9jaygpO1xufVxuXG5mdW5jdGlvbiBSZXF1ZXN0TG9nZ2VyIChyZXF1ZXN0RmlsdGVyUnVsZUluaXQsIGxvZ09wdGlvbnMpIHtcbiAgICByZXR1cm4gY3JlYXRlUmVxdWVzdExvZ2dlcihyZXF1ZXN0RmlsdGVyUnVsZUluaXQsIGxvZ09wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBDbGllbnRGdW5jdGlvbiAoZm4sIG9wdGlvbnMpIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IENsaWVudEZ1bmN0aW9uQnVpbGRlcihmbiwgb3B0aW9ucywgeyBpbnN0YW50aWF0aW9uOiAnQ2xpZW50RnVuY3Rpb24nIH0pO1xuXG4gICAgcmV0dXJuIGJ1aWxkZXIuZ2V0RnVuY3Rpb24oKTtcbn1cblxuZnVuY3Rpb24gU2VsZWN0b3IgKGZuLCBvcHRpb25zKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBTZWxlY3RvckJ1aWxkZXIoZm4sIG9wdGlvbnMsIHsgaW5zdGFudGlhdGlvbjogJ1NlbGVjdG9yJyB9KTtcblxuICAgIHJldHVybiBidWlsZGVyLmdldEZ1bmN0aW9uKCk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSb2xlLCAnYW5vbnltb3VzJywge1xuICAgIGdldDogKCkgPT4gcm9sZS5jcmVhdGVBbm9ueW1vdXNSb2xlLFxufSk7XG5cbmNvbnN0IGV4cG9ydGFibGVMaWIgPSB7XG4gICAgUm9sZSxcblxuICAgIENsaWVudEZ1bmN0aW9uLFxuXG4gICAgU2VsZWN0b3IsXG5cbiAgICBSZXF1ZXN0TG9nZ2VyLFxuXG4gICAgUmVxdWVzdE1vY2ssXG5cbiAgICBnZXQgUmVxdWVzdEhvb2sgKCkge1xuICAgICAgICBpZiAoIVJlcXVlc3RIb29rKVxuICAgICAgICAgICAgUmVxdWVzdEhvb2sgPSByZXF1aXJlKCcuLi9yZXF1ZXN0LWhvb2tzL2hvb2snKTtcblxuICAgICAgICByZXR1cm4gUmVxdWVzdEhvb2s7XG4gICAgfSxcblxuICAgIGdldCB0ICgpIHtcbiAgICAgICAgaWYgKCF0ZXN0Q29udHJvbGxlclByb3h5KVxuICAgICAgICAgICAgdGVzdENvbnRyb2xsZXJQcm94eSA9IHJlcXVpcmUoJy4uL3Rlc3QtY29udHJvbGxlci9wcm94eScpO1xuXG4gICAgICAgIHJldHVybiB0ZXN0Q29udHJvbGxlclByb3h5O1xuICAgIH0sXG5cbiAgICBnZXQgdXNlclZhcmlhYmxlcyAoKSB7XG4gICAgICAgIHJldHVybiB1c2VyVmFyaWFibGVzLnZhbHVlO1xuICAgIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBleHBvcnRhYmxlTGliO1xuXG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL2V4cG9ydGFibGUtbGliL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTSxXQUFXLEdBQWEsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlELE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7QUFDNUYsTUFBTSxlQUFlLEdBQVMsV0FBVyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7QUFDL0YsTUFBTSxJQUFJLEdBQW9CLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RCxNQUFNLG1CQUFtQixHQUFLLFdBQVcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQzdFLE1BQU0saUJBQWlCLEdBQU8sV0FBVyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7QUFDL0YsTUFBTSxhQUFhLEdBQVcsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDL0QsTUFBTSxrQkFBa0IsR0FBTSxXQUFXLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUU5RSxvSEFBb0g7QUFDcEgsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBRXZCLDJHQUEyRztBQUMzRyxJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQztBQUUvQixTQUFTLElBQUksQ0FBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU87SUFDcEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELFNBQVMsV0FBVztJQUNoQixPQUFPLGlCQUFpQixFQUFFLENBQUM7QUFDL0IsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFFLHFCQUFxQixFQUFFLFVBQVU7SUFDckQsT0FBTyxtQkFBbUIsQ0FBQyxxQkFBcUIsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUUsRUFBRSxFQUFFLE9BQU87SUFDaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUU1RixPQUFPLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUUsRUFBRSxFQUFFLE9BQU87SUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBRWhGLE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2pDLENBQUM7QUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7SUFDckMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7Q0FDdEMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxhQUFhLEdBQUc7SUFDbEIsSUFBSTtJQUVKLGNBQWM7SUFFZCxRQUFRO0lBRVIsYUFBYTtJQUViLFdBQVc7SUFFWCxJQUFJLFdBQVc7UUFDWCxJQUFJLENBQUMsV0FBVztZQUNaLFdBQVcsR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUVuRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQjtZQUNwQixtQkFBbUIsR0FBRyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUU5RCxPQUFPLG1CQUFtQixDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sa0JBQWtCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0NBQ0osQ0FBQztBQUVGLGtCQUFlLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGxhenlSZXF1aXJlICAgICAgICAgICA9IHJlcXVpcmUoJ2ltcG9ydC1sYXp5JykocmVxdWlyZSk7XG5jb25zdCBDbGllbnRGdW5jdGlvbkJ1aWxkZXIgPSBsYXp5UmVxdWlyZSgnLi4vLi4vY2xpZW50LWZ1bmN0aW9ucy9jbGllbnQtZnVuY3Rpb24tYnVpbGRlcicpO1xuY29uc3QgU2VsZWN0b3JCdWlsZGVyICAgICAgID0gbGF6eVJlcXVpcmUoJy4uLy4uL2NsaWVudC1mdW5jdGlvbnMvc2VsZWN0b3JzL3NlbGVjdG9yLWJ1aWxkZXInKTtcbmNvbnN0IHJvbGUgICAgICAgICAgICAgICAgICA9IGxhenlSZXF1aXJlKCcuLi8uLi9yb2xlJyk7XG5jb25zdCBjcmVhdGVSZXF1ZXN0TG9nZ2VyICAgPSBsYXp5UmVxdWlyZSgnLi4vcmVxdWVzdC1ob29rcy9yZXF1ZXN0LWxvZ2dlcicpO1xuY29uc3QgY3JlYXRlUmVxdWVzdE1vY2sgICAgID0gbGF6eVJlcXVpcmUoJy4uL3JlcXVlc3QtaG9va3MvcmVxdWVzdC1tb2NrL2NyZWF0ZS1yZXF1ZXN0LW1vY2snKTtcbmNvbnN0IHVzZXJWYXJpYWJsZXMgICAgICAgICA9IGxhenlSZXF1aXJlKCcuLi91c2VyLXZhcmlhYmxlcycpO1xuY29uc3QgZ2V0VGVzdENhZmVWZXJzaW9uICAgID0gbGF6eVJlcXVpcmUoJy4uLy4uL3V0aWxzL2dldC10ZXN0Y2FmZS12ZXJzaW9uJyk7XG5cbi8vIE5PVEU6IFdlIGNhbid0IHVzZSBsYXp5IHJlcXVpcmUgZm9yIFJlcXVlc3RIb29rLCBiZWNhdXNlIGl0IHdpbGwgYnJlYWsgYmFzZSBjbGFzcyBkZXRlY3Rpb24gZm9yIGluaGVyaXRlZCBjbGFzc2VzXG5sZXQgUmVxdWVzdEhvb2sgPSBudWxsO1xuXG4vLyBOT1RFOiBXZSBjYW4ndCB1c2UgbGF6eSByZXF1aXJlIGZvciB0ZXN0Q29udHJvbGxlclByb3h5LCBiZWNhdXNlIGl0IHdpbGwgYnJlYWsgdGVzdCBjb250cm9sbGVyIGRldGVjdGlvblxubGV0IHRlc3RDb250cm9sbGVyUHJveHkgPSBudWxsO1xuXG5mdW5jdGlvbiBSb2xlIChsb2dpblVybCwgaW5pdEZuLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIHJvbGUuY3JlYXRlUm9sZShsb2dpblVybCwgaW5pdEZuLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gUmVxdWVzdE1vY2sgKCkge1xuICAgIHJldHVybiBjcmVhdGVSZXF1ZXN0TW9jaygpO1xufVxuXG5mdW5jdGlvbiBSZXF1ZXN0TG9nZ2VyIChyZXF1ZXN0RmlsdGVyUnVsZUluaXQsIGxvZ09wdGlvbnMpIHtcbiAgICByZXR1cm4gY3JlYXRlUmVxdWVzdExvZ2dlcihyZXF1ZXN0RmlsdGVyUnVsZUluaXQsIGxvZ09wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBDbGllbnRGdW5jdGlvbiAoZm4sIG9wdGlvbnMpIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IENsaWVudEZ1bmN0aW9uQnVpbGRlcihmbiwgb3B0aW9ucywgeyBpbnN0YW50aWF0aW9uOiAnQ2xpZW50RnVuY3Rpb24nIH0pO1xuXG4gICAgcmV0dXJuIGJ1aWxkZXIuZ2V0RnVuY3Rpb24oKTtcbn1cblxuZnVuY3Rpb24gU2VsZWN0b3IgKGZuLCBvcHRpb25zKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBTZWxlY3RvckJ1aWxkZXIoZm4sIG9wdGlvbnMsIHsgaW5zdGFudGlhdGlvbjogJ1NlbGVjdG9yJyB9KTtcblxuICAgIHJldHVybiBidWlsZGVyLmdldEZ1bmN0aW9uKCk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSb2xlLCAnYW5vbnltb3VzJywge1xuICAgIGdldDogKCkgPT4gcm9sZS5jcmVhdGVBbm9ueW1vdXNSb2xlLFxufSk7XG5cbmNvbnN0IGV4cG9ydGFibGVMaWIgPSB7XG4gICAgUm9sZSxcblxuICAgIENsaWVudEZ1bmN0aW9uLFxuXG4gICAgU2VsZWN0b3IsXG5cbiAgICBSZXF1ZXN0TG9nZ2VyLFxuXG4gICAgUmVxdWVzdE1vY2ssXG5cbiAgICBnZXQgUmVxdWVzdEhvb2sgKCkge1xuICAgICAgICBpZiAoIVJlcXVlc3RIb29rKVxuICAgICAgICAgICAgUmVxdWVzdEhvb2sgPSByZXF1aXJlKCcuLi9yZXF1ZXN0LWhvb2tzL2hvb2snKTtcblxuICAgICAgICByZXR1cm4gUmVxdWVzdEhvb2s7XG4gICAgfSxcblxuICAgIGdldCB0ICgpIHtcbiAgICAgICAgaWYgKCF0ZXN0Q29udHJvbGxlclByb3h5KVxuICAgICAgICAgICAgdGVzdENvbnRyb2xsZXJQcm94eSA9IHJlcXVpcmUoJy4uL3Rlc3QtY29udHJvbGxlci9wcm94eScpO1xuXG4gICAgICAgIHJldHVybiB0ZXN0Q29udHJvbGxlclByb3h5O1xuICAgIH0sXG5cbiAgICBnZXQgdXNlclZhcmlhYmxlcyAoKSB7XG4gICAgICAgIHJldHVybiB1c2VyVmFyaWFibGVzLnZhbHVlO1xuICAgIH0sXG5cbiAgICBnZXQgdmVyc2lvbiAoKSB7XG4gICAgICAgIHJldHVybiBnZXRUZXN0Q2FmZVZlcnNpb24oKTtcbiAgICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZXhwb3J0YWJsZUxpYjtcblxuIl19
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvc3RydWN0dXJlL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFRlc3RUaW1lb3V0IGZyb20gJy4vdGVzdC10aW1lb3V0JztcblxuZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSBEaWN0aW9uYXJ5PHVua25vd24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDcmVkZW50aWFscyB7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIGRvbWFpbj86IHN0cmluZztcbiAgICB3b3Jrc3RhdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVGVzdFRpbWVvdXRzID0ge1xuICAgIFtrZXkgaW4gVGVzdFRpbWVvdXRdPzogbnVtYmVyO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvc3RydWN0dXJlL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUZXN0VGltZW91dCBmcm9tICcuL3Rlc3QtdGltZW91dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aENyZWRlbnRpYWxzIHtcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgZG9tYWluPzogc3RyaW5nO1xuICAgIHdvcmtzdGF0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBUZXN0VGltZW91dHMgPSB7XG4gICAgW2tleSBpbiBUZXN0VGltZW91dF0/OiBudW1iZXI7XG59XG4iXX0=
@@ -113,4 +113,4 @@ exports.default = TestingUnit;
113
113
  // @ts-ignore
114
114
  TestingUnit.API_LIST = (0, delegated_api_1.getDelegatedAPIList)(TestingUnit.prototype);
115
115
  module.exports = exports.default;
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy11bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9zdHJ1Y3R1cmUvdGVzdGluZy11bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNERBQW1DO0FBQ25DLG9EQUkwQjtBQUMxQixrRkFBd0Q7QUFDeEQsNkRBQTZFO0FBQzdFLDBFQUFzRTtBQUN0RSxzRUFBNkM7QUFDN0Msb0ZBQTREO0FBUzVELCtCQUErQjtBQUMvQiwyRUFBeUY7QUFDekYsa0RBQW9FO0FBRXBFLE1BQThCLFdBQVksU0FBUSxtQkFBUTtJQWlCdEQsWUFBdUIsUUFBa0IsRUFBRSxRQUFrQixFQUFFLE9BQWUsRUFBRSxPQUFnQjtRQUM1RixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUksR0FBYyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBVyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBVyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBYyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBYyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBYyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBTSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBSyxFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksbUJBQVEsQ0FBQyxDQUFDLHNCQUFZLENBQUMsYUFBYSxFQUFFLHNCQUFZLENBQUMs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QUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBQSxtQ0FBbUIsRUFBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBRSxVQUFtQixFQUFFLEdBQUcsU0FBb0I7UUFDNUQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQWUsRUFBWSxFQUFFO1lBQ3hDLFlBQVk7WUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBd0IsQ0FBQztZQUV0RSxPQUFPLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLEdBQVksRUFBRTtZQUM3QixZQUFZO1lBQ1osT0FBTyxJQUFJLFVBQVUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7UUFFRixZQUFZO1FBQ1osSUFBQSwyQkFBVyxFQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUVyRCxPQUFPLEVBQTRCLENBQUM7SUFDeEMsQ0FBQztDQUNKO0FBekpELDhCQXlKQztBQUVELGFBQWE7QUFDYixXQUFXLENBQUMsUUFBUSxHQUFHLElBQUEsbUNBQW1CLEVBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VVbml0IGZyb20gJy4vYmFzZS11bml0JztcbmltcG9ydCB7XG4gICAgYXNzZXJ0UGFnZVVybCxcbiAgICBnZXRVcmwsXG4gICAgcHJlcGFyZUJhc2VVcmwsXG59IGZyb20gJy4uL3Rlc3QtcGFnZS11cmwnO1xuaW1wb3J0IGhhbmRsZVRhZ0FyZ3MgZnJvbSAnLi4vLi4vdXRpbHMvaGFuZGxlLXRhZy1hcmdzJztcbmltcG9ydCB7IGRlbGVnYXRlQVBJLCBnZXREZWxlZ2F0ZWRBUElMaXN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsZWdhdGVkLWFwaSc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgRmxhZ0xpc3QgZnJvbSAnLi4vLi4vdXRpbHMvZmxhZy1saXN0JztcbmltcG9ydCBPUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9vcHRpb24tbmFtZXMnO1xuaW1wb3J0IFVuaXRUeXBlIGZyb20gJy4vdW5pdC10eXBlJztcbmltcG9ydCBSZXF1ZXN0SG9vayBmcm9tICcuLi9yZXF1ZXN0LWhvb2tzL2hvb2snO1xuaW1wb3J0IENsaWVudFNjcmlwdEluaXQgZnJvbSAnLi4vLi4vY3VzdG9tLWNsaWVudC1zY3JpcHRzL2NsaWVudC1zY3JpcHQtaW5pdCc7XG5pbXBvcnQgVGVzdEZpbGUgZnJvbSAnLi90ZXN0LWZpbGUnO1xuaW1wb3J0IHsgQXV0aENyZWRlbnRpYWxzLCBNZXRhZGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICAgIERpY3Rpb25hcnksIFNraXBKc0Vycm9yc0NhbGxiYWNrLCBTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0LFxufSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgdmFsaWRhdGVTa2lwSnNFcnJvcnNPcHRpb25WYWx1ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2dldC1vcHRpb25zL3NraXAtanMtZXJyb3JzJztcbmltcG9ydCB7IFNraXBKc0Vycm9yc0FyZ3VtZW50QXBpRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFic3RyYWN0IGNsYXNzIFRlc3RpbmdVbml0IGV4dGVuZHMgQmFzZVVuaXQge1xuICAgIHB1YmxpYyByZWFkb25seSB0ZXN0RmlsZTogVGVzdEZpbGU7XG4gICAgcHVibGljIG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgcHVibGljIHBhZ2VVcmw6IHN0cmluZztcbiAgICBwdWJsaWMgYmFzZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHB1YmxpYyBhdXRoQ3JlZGVudGlhbHM6IG51bGwgfCBBdXRoQ3JlZGVudGlhbHM7XG4gICAgcHVibGljIG1ldGE6IE1ldGFkYXRhO1xuICAgIHB1YmxpYyBvbmx5OiBib29sZWFuO1xuICAgIHB1YmxpYyBza2lwOiBib29sZWFuO1xuICAgIHB1YmxpYyByZXF1ZXN0SG9va3M6IFJlcXVlc3RIb29rW107XG4gICAgcHVibGljIGNsaWVudFNjcmlwdHM6IENsaWVudFNjcmlwdEluaXRbXTtcbiAgICBwdWJsaWMgZGlzYWJsZVBhZ2VSZWxvYWRzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIHB1YmxpYyBkaXNhYmxlUGFnZUNhY2hpbmc6IGJvb2xlYW47XG4gICAgcHVibGljIGFwaU1ldGhvZFdhc0NhbGxlZDogRmxhZ0xpc3Q7XG4gICAgcHVibGljIGFwaU9yaWdpbjogRnVuY3Rpb247XG4gICAgcHVibGljIHNraXBKc0Vycm9yc09wdGlvbnM/OiBib29sZWFuIHwgU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCB8IFNraXBKc0Vycm9yc0NhbGxiYWNrfCBTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yICh0ZXN0RmlsZTogVGVzdEZpbGUsIHVuaXRUeXBlOiBVbml0VHlwZSwgcGFnZVVybDogc3RyaW5nLCBiYXNlVXJsPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHVuaXRUeXBlKTtcblxuICAgICAgICB0aGlzLnRlc3RGaWxlID0gdGVzdEZpbGU7XG5cbiAgICAgICAgdGhpcy5uYW1lICAgICAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLnBhZ2VVcmwgICAgICAgICA9IHBhZ2VVcmw7XG4gICAgICAgIHRoaXMuYmFzZVVybCAgICAgICAgID0gYmFzZVVybDtcbiAgICAgICAgdGhpcy5hdXRoQ3JlZGVudGlhbHMgPSBudWxsO1xuICAgICAgICB0aGlzLm1ldGEgICAgICAgICAgICA9IHt9O1xuICAgICAgICB0aGlzLm9ubHkgICAgICAgICAgICA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNraXAgICAgICAgICAgICA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlcXVlc3RIb29rcyAgICA9IFtdO1xuICAgICAgICB0aGlzLmNsaWVudFNjcmlwdHMgICA9IFtdO1xuXG4gICAgICAgIHRoaXMuZGlzYWJsZVBhZ2VSZWxvYWRzID0gdm9pZCAwO1xuICAgICAgICB0aGlzLmRpc2FibGVQYWdlQ2FjaGluZyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuYXBpTWV0aG9kV2FzQ2FsbGVkID0gbmV3IEZsYWdMaXN0KFtPUFRJT05fTkFNRVMuY2xpZW50U2NyaXB0cywgT1BUSU9OX05BTUVTLnJlcXVlc3RIb29rc10pO1xuXG4gICAgICAgIGNvbnN0IHVuaXQgPSB0aGlzO1xuXG4gICAgICAgIHRoaXMuYXBpT3JpZ2luID0gZnVuY3Rpb24gYXBpT3JpZ2luICguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgICAgICAgIHJldHVybiB1bml0Ll9hZGQoLi4uYXJncyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGRlbGVnYXRlQVBJKHRoaXMuYXBpT3JpZ2luLCB0aGlzLmNvbnN0cnVjdG9yLkFQSV9MSVNULCB7IGhhbmRsZXI6IHRoaXMgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9hZGQgKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd247XG5cbiAgICBwcml2YXRlIF9vbmx5JGdldHRlciAoKTogRnVuY3Rpb24ge1xuICAgICAgICB0aGlzLm9ubHkgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9za2lwJGdldHRlciAoKTogRnVuY3Rpb24ge1xuICAgICAgICB0aGlzLnNraXAgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlUGFnZVJlbG9hZHMkZ2V0dGVyICgpOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMuZGlzYWJsZVBhZ2VSZWxvYWRzID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZW5hYmxlUGFnZVJlbG9hZHMkZ2V0dGVyICgpOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMuZGlzYWJsZVBhZ2VSZWxvYWRzID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhZ2UkICh1cmw6IHN0cmluZywgLi4ucmVzdDogdW5rbm93bltdKTogRnVuY3Rpb24ge1xuICAgICAgICB0aGlzLnBhZ2VVcmwgPSBoYW5kbGVUYWdBcmdzKHVybCwgcmVzdCk7XG4gICAgICAgIHRoaXMuYmFzZVVybCA9IHRoaXMuYmFzZVVybCB8fCBkaXJuYW1lKHRoaXMudGVzdEZpbGUuZmlsZW5hbWUpO1xuXG4gICAgICAgIGNvbnN0IGJhc2UgPSBwcmVwYXJlQmFzZVVybCh0aGlzLmJhc2VVcmwpO1xuXG4gICAgICAgIGFzc2VydFR5cGUoaXMuc3RyaW5nLCAncGFnZScsICdUaGUgcGFnZSBVUkwnLCB0aGlzLnBhZ2VVcmwpO1xuICAgICAgICBhc3NlcnRQYWdlVXJsKHRoaXMucGFnZVVybCwgJ3BhZ2UnKTtcblxuICAgICAgICB0aGlzLnBhZ2VVcmwgPSBnZXRVcmwodGhpcy5wYWdlVXJsLCBiYXNlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2tpcEpzRXJyb3JzJCAob3B0aW9uczogYm9vbGVhbiB8IFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QgfCBTa2lwSnNFcnJvcnNDYWxsYmFjayB8IFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QgPSB0cnVlKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKFsgaXMuYm9vbGVhbiwgaXMubm9uTnVsbE9iamVjdCwgaXMuZnVuY3Rpb24gXSwgJ3NraXBKc0Vycm9ycycsICdUaGUgc2tpcEpzRXJyb3JzIG9wdGlvbnMgYXJndW1lbnQnLCBvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnNraXBKc0Vycm9yc09wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgICAgIHZhbGlkYXRlU2tpcEpzRXJyb3JzT3B0aW9uVmFsdWUodGhpcy5za2lwSnNFcnJvcnNPcHRpb25zLCBTa2lwSnNFcnJvcnNBcmd1bWVudEFwaUVycm9yKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaHR0cEF1dGgkIChjcmVkZW50aWFsczogQXV0aENyZWRlbnRpYWxzKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk51bGxPYmplY3QsICdodHRwQXV0aCcsICdUaGUgY3JlZGVudGlhbHMnLCBjcmVkZW50aWFscyk7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuc3RyaW5nLCAnaHR0cEF1dGgnLCAnY3JlZGVudGlhbHMudXNlcm5hbWUnLCBjcmVkZW50aWFscy51c2VybmFtZSk7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuc3RyaW5nLCAnaHR0cEF1dGgnLCAnY3JlZGVudGlhbHMucGFzc3dvcmQnLCBjcmVkZW50aWFscy5wYXNzd29yZCk7XG5cbiAgICAgICAgaWYgKGNyZWRlbnRpYWxzLmRvbWFpbilcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMuc3RyaW5nLCAnaHR0cEF1dGgnLCAnY3JlZGVudGlhbHMuZG9tYWluJywgY3JlZGVudGlhbHMuZG9tYWluKTtcbiAgICAgICAgaWYgKGNyZWRlbnRpYWxzLndvcmtzdGF0aW9uKVxuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdodHRwQXV0aCcsICdjcmVkZW50aWFscy53b3Jrc3RhdGlvbicsIGNyZWRlbnRpYWxzLndvcmtzdGF0aW9uKTtcblxuICAgICAgICB0aGlzLmF1dGhDcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9tZXRhJCAoa2V5OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZz4sIHZhbHVlPzogc3RyaW5nKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKFtpcy5zdHJpbmcsIGlzLm5vbk51bGxPYmplY3RdLCAnbWV0YScsIGAke3RoaXMudW5pdFR5cGV9Lm1ldGFgLCBrZXkpO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyA/IHsgW2tleV06IHZhbHVlIGFzIHN0cmluZyB9IDoga2V5IGFzIERpY3Rpb25hcnk8c3RyaW5nPjtcblxuICAgICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKHByb3BOYW1lID0+IHtcbiAgICAgICAgICAgIHRoaXMubWV0YVtwcm9wTmFtZV0gPSBkYXRhW3Byb3BOYW1lXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVQYWdlQ2FjaGluZyRnZXR0ZXIgKCk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZUNhY2hpbmcgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1ha2VBUElMaXN0Rm9yQ2hpbGRDbGFzcyAoQ2hpbGRDbGFzczogdW5rbm93bik6IHZvaWQge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgQ2hpbGRDbGFzcy5BUElfTElTVCA9IFRlc3RpbmdVbml0LkFQSV9MSVNULmNvbmNhdChnZXREZWxlZ2F0ZWRBUElMaXN0KENoaWxkQ2xhc3MucHJvdG90eXBlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbml0IChDaGlsZENsYXNzOiB1bmtub3duLCAuLi5pbml0UHJvcHM6IHVua25vd25bXSk6IFRlc3RpbmdVbml0IHtcbiAgICAgICAgY29uc3QgZm4gPSAoLi4uYXJnczogdW5rbm93bltdKSA6IHVua25vd24gPT4ge1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBhcGlPcmlnaW4gPSBuZXcgQ2hpbGRDbGFzcyguLi5pbml0UHJvcHMpIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG5cbiAgICAgICAgICAgIHJldHVybiBhcGlPcmlnaW4oLi4uYXJncyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZ2V0SGFuZGxlciA9ICgpOiB1bmtub3duID0+IHtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDaGlsZENsYXNzKC4uLmluaXRQcm9wcywgZmFsc2UpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBkZWxlZ2F0ZUFQSShmbiwgQ2hpbGRDbGFzcy5BUElfTElTVCwgeyBnZXRIYW5kbGVyIH0pO1xuXG4gICAgICAgIHJldHVybiBmbiBhcyB1bmtub3duIGFzIFRlc3RpbmdVbml0O1xuICAgIH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuVGVzdGluZ1VuaXQuQVBJX0xJU1QgPSBnZXREZWxlZ2F0ZWRBUElMaXN0KFRlc3RpbmdVbml0LnByb3RvdHlwZSk7XG5cblxuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy11bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9zdHJ1Y3R1cmUvdGVzdGluZy11bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNERBQW1DO0FBQ25DLG9EQUkwQjtBQUMxQixrRkFBd0Q7QUFDeEQsNkRBQTZFO0FBQzdFLDBFQUFzRTtBQUN0RSxzRUFBNkM7QUFDN0Msb0ZBQTREO0FBUzVELCtCQUErQjtBQUMvQiwyRUFBeUY7QUFDekYsa0RBQW9FO0FBRXBFLE1BQThCLFdBQVksU0FBUSxtQkFBUTtJQWlCdEQsWUFBdUIsUUFBa0IsRUFBRSxRQUFrQixFQUFFLE9BQWUsRUFBRSxPQUFnQjtRQUM1RixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUksR0FBYyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBVyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBVyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBYyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBYyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBYyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBTSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBSyxFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksbUJBQVEsQ0FBQyxDQUFDLHNCQUFZLENBQUMsYUFBYSxFQUFFLHNCQUFZLENBQUMs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QUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBQSxtQ0FBbUIsRUFBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBRSxVQUFtQixFQUFFLEdBQUcsU0FBb0I7UUFDNUQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQWUsRUFBWSxFQUFFO1lBQ3hDLFlBQVk7WUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBd0IsQ0FBQztZQUV0RSxPQUFPLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLEdBQVksRUFBRTtZQUM3QixZQUFZO1lBQ1osT0FBTyxJQUFJLFVBQVUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7UUFFRixZQUFZO1FBQ1osSUFBQSwyQkFBVyxFQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUVyRCxPQUFPLEVBQTRCLENBQUM7SUFDeEMsQ0FBQztDQUNKO0FBekpELDhCQXlKQztBQUVELGFBQWE7QUFDYixXQUFXLENBQUMsUUFBUSxHQUFHLElBQUEsbUNBQW1CLEVBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VVbml0IGZyb20gJy4vYmFzZS11bml0JztcbmltcG9ydCB7XG4gICAgYXNzZXJ0UGFnZVVybCxcbiAgICBnZXRVcmwsXG4gICAgcHJlcGFyZUJhc2VVcmwsXG59IGZyb20gJy4uL3Rlc3QtcGFnZS11cmwnO1xuaW1wb3J0IGhhbmRsZVRhZ0FyZ3MgZnJvbSAnLi4vLi4vdXRpbHMvaGFuZGxlLXRhZy1hcmdzJztcbmltcG9ydCB7IGRlbGVnYXRlQVBJLCBnZXREZWxlZ2F0ZWRBUElMaXN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsZWdhdGVkLWFwaSc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgRmxhZ0xpc3QgZnJvbSAnLi4vLi4vdXRpbHMvZmxhZy1saXN0JztcbmltcG9ydCBPUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9vcHRpb24tbmFtZXMnO1xuaW1wb3J0IFVuaXRUeXBlIGZyb20gJy4vdW5pdC10eXBlJztcbmltcG9ydCBSZXF1ZXN0SG9vayBmcm9tICcuLi9yZXF1ZXN0LWhvb2tzL2hvb2snO1xuaW1wb3J0IENsaWVudFNjcmlwdEluaXQgZnJvbSAnLi4vLi4vY3VzdG9tLWNsaWVudC1zY3JpcHRzL2NsaWVudC1zY3JpcHQtaW5pdCc7XG5pbXBvcnQgVGVzdEZpbGUgZnJvbSAnLi90ZXN0LWZpbGUnO1xuaW1wb3J0IHsgQXV0aENyZWRlbnRpYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgRGljdGlvbmFyeSwgU2tpcEpzRXJyb3JzQ2FsbGJhY2ssIFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QsXG59IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyB2YWxpZGF0ZVNraXBKc0Vycm9yc09wdGlvblZhbHVlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LW9wdGlvbnMvc2tpcC1qcy1lcnJvcnMnO1xuaW1wb3J0IHsgU2tpcEpzRXJyb3JzQXJndW1lbnRBcGlFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcblxuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgVGVzdGluZ1VuaXQgZXh0ZW5kcyBCYXNlVW5pdCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHRlc3RGaWxlOiBUZXN0RmlsZTtcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBwdWJsaWMgcGFnZVVybDogc3RyaW5nO1xuICAgIHB1YmxpYyBiYXNlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIGF1dGhDcmVkZW50aWFsczogbnVsbCB8IEF1dGhDcmVkZW50aWFscztcbiAgICBwdWJsaWMgbWV0YTogTWV0YWRhdGE7XG4gICAgcHVibGljIG9ubHk6IGJvb2xlYW47XG4gICAgcHVibGljIHNraXA6IGJvb2xlYW47XG4gICAgcHVibGljIHJlcXVlc3RIb29rczogUmVxdWVzdEhvb2tbXTtcbiAgICBwdWJsaWMgY2xpZW50U2NyaXB0czogQ2xpZW50U2NyaXB0SW5pdFtdO1xuICAgIHB1YmxpYyBkaXNhYmxlUGFnZVJlbG9hZHM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIGRpc2FibGVQYWdlQ2FjaGluZzogYm9vbGVhbjtcbiAgICBwdWJsaWMgYXBpTWV0aG9kV2FzQ2FsbGVkOiBGbGFnTGlzdDtcbiAgICBwdWJsaWMgYXBpT3JpZ2luOiBGdW5jdGlvbjtcbiAgICBwdWJsaWMgc2tpcEpzRXJyb3JzT3B0aW9ucz86IGJvb2xlYW4gfCBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0IHwgU2tpcEpzRXJyb3JzQ2FsbGJhY2t8IFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3Q7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IgKHRlc3RGaWxlOiBUZXN0RmlsZSwgdW5pdFR5cGU6IFVuaXRUeXBlLCBwYWdlVXJsOiBzdHJpbmcsIGJhc2VVcmw/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIodW5pdFR5cGUpO1xuXG4gICAgICAgIHRoaXMudGVzdEZpbGUgPSB0ZXN0RmlsZTtcblxuICAgICAgICB0aGlzLm5hbWUgICAgICAgICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMucGFnZVVybCAgICAgICAgID0gcGFnZVVybDtcbiAgICAgICAgdGhpcy5iYXNlVXJsICAgICAgICAgPSBiYXNlVXJsO1xuICAgICAgICB0aGlzLmF1dGhDcmVkZW50aWFscyA9IG51bGw7XG4gICAgICAgIHRoaXMubWV0YSAgICAgICAgICAgID0ge307XG4gICAgICAgIHRoaXMub25seSAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2tpcCAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVxdWVzdEhvb2tzICAgID0gW107XG4gICAgICAgIHRoaXMuY2xpZW50U2NyaXB0cyAgID0gW107XG5cbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZVJlbG9hZHMgPSB2b2lkIDA7XG4gICAgICAgIHRoaXMuZGlzYWJsZVBhZ2VDYWNoaW5nID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5hcGlNZXRob2RXYXNDYWxsZWQgPSBuZXcgRmxhZ0xpc3QoW09QVElPTl9OQU1FUy5jbGllbnRTY3JpcHRzLCBPUFRJT05fTkFNRVMucmVxdWVzdEhvb2tzXSk7XG5cbiAgICAgICAgY29uc3QgdW5pdCA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5hcGlPcmlnaW4gPSBmdW5jdGlvbiBhcGlPcmlnaW4gKC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuaXQuX2FkZCguLi5hcmdzKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgZGVsZWdhdGVBUEkodGhpcy5hcGlPcmlnaW4sIHRoaXMuY29uc3RydWN0b3IuQVBJX0xJU1QsIHsgaGFuZGxlcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2FkZCAoLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93bjtcblxuICAgIHByaXZhdGUgX29ubHkkZ2V0dGVyICgpOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMub25seSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NraXAkZ2V0dGVyICgpOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMuc2tpcCA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVQYWdlUmVsb2FkcyRnZXR0ZXIgKCk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZVJlbG9hZHMgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9lbmFibGVQYWdlUmVsb2FkcyRnZXR0ZXIgKCk6IEZ1bmN0aW9uIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlUGFnZVJlbG9hZHMgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFnZSQgKHVybDogc3RyaW5nLCAuLi5yZXN0OiB1bmtub3duW10pOiBGdW5jdGlvbiB7XG4gICAgICAgIHRoaXMucGFnZVVybCA9IGhhbmRsZVRhZ0FyZ3ModXJsLCByZXN0KTtcbiAgICAgICAgdGhpcy5iYXNlVXJsID0gdGhpcy5iYXNlVXJsIHx8IGRpcm5hbWUodGhpcy50ZXN0RmlsZS5maWxlbmFtZSk7XG5cbiAgICAgICAgY29uc3QgYmFzZSA9IHByZXBhcmVCYXNlVXJsKHRoaXMuYmFzZVVybCk7XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdwYWdlJywgJ1RoZSBwYWdlIFVSTCcsIHRoaXMucGFnZVVybCk7XG4gICAgICAgIGFzc2VydFBhZ2VVcmwodGhpcy5wYWdlVXJsLCAncGFnZScpO1xuXG4gICAgICAgIHRoaXMucGFnZVVybCA9IGdldFVybCh0aGlzLnBhZ2VVcmwsIGJhc2UpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9za2lwSnNFcnJvcnMkIChvcHRpb25zOiBib29sZWFuIHwgU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCB8IFNraXBKc0Vycm9yc0NhbGxiYWNrIHwgU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdCA9IHRydWUpOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoWyBpcy5ib29sZWFuLCBpcy5ub25OdWxsT2JqZWN0LCBpcy5mdW5jdGlvbiBdLCAnc2tpcEpzRXJyb3JzJywgJ1RoZSBza2lwSnNFcnJvcnMgb3B0aW9ucyBhcmd1bWVudCcsIG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMuc2tpcEpzRXJyb3JzT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICAgICAgdmFsaWRhdGVTa2lwSnNFcnJvcnNPcHRpb25WYWx1ZSh0aGlzLnNraXBKc0Vycm9yc09wdGlvbnMsIFNraXBKc0Vycm9yc0FyZ3VtZW50QXBpRXJyb3IpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9odHRwQXV0aCQgKGNyZWRlbnRpYWxzOiBBdXRoQ3JlZGVudGlhbHMpOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTnVsbE9iamVjdCwgJ2h0dHBBdXRoJywgJ1RoZSBjcmVkZW50aWFscycsIGNyZWRlbnRpYWxzKTtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdodHRwQXV0aCcsICdjcmVkZW50aWFscy51c2VybmFtZScsIGNyZWRlbnRpYWxzLnVzZXJuYW1lKTtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdodHRwQXV0aCcsICdjcmVkZW50aWFscy5wYXNzd29yZCcsIGNyZWRlbnRpYWxzLnBhc3N3b3JkKTtcblxuICAgICAgICBpZiAoY3JlZGVudGlhbHMuZG9tYWluKVxuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdodHRwQXV0aCcsICdjcmVkZW50aWFscy5kb21haW4nLCBjcmVkZW50aWFscy5kb21haW4pO1xuICAgICAgICBpZiAoY3JlZGVudGlhbHMud29ya3N0YXRpb24pXG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLnN0cmluZywgJ2h0dHBBdXRoJywgJ2NyZWRlbnRpYWxzLndvcmtzdGF0aW9uJywgY3JlZGVudGlhbHMud29ya3N0YXRpb24pO1xuXG4gICAgICAgIHRoaXMuYXV0aENyZWRlbnRpYWxzID0gY3JlZGVudGlhbHM7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21ldGEkIChrZXk6IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nPiwgdmFsdWU/OiBzdHJpbmcpOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoW2lzLnN0cmluZywgaXMubm9uTnVsbE9iamVjdF0sICdtZXRhJywgYCR7dGhpcy51bml0VHlwZX0ubWV0YWAsIGtleSk7XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnID8geyBba2V5XTogdmFsdWUgYXMgc3RyaW5nIH0gOiBrZXkgYXMgRGljdGlvbmFyeTxzdHJpbmc+O1xuXG4gICAgICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2gocHJvcE5hbWUgPT4ge1xuICAgICAgICAgICAgdGhpcy5tZXRhW3Byb3BOYW1lXSA9IGRhdGFbcHJvcE5hbWVdO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZVBhZ2VDYWNoaW5nJGdldHRlciAoKTogRnVuY3Rpb24ge1xuICAgICAgICB0aGlzLmRpc2FibGVQYWdlQ2FjaGluZyA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbWFrZUFQSUxpc3RGb3JDaGlsZENsYXNzIChDaGlsZENsYXNzOiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBDaGlsZENsYXNzLkFQSV9MSVNUID0gVGVzdGluZ1VuaXQuQVBJX0xJU1QuY29uY2F0KGdldERlbGVnYXRlZEFQSUxpc3QoQ2hpbGRDbGFzcy5wcm90b3R5cGUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluaXQgKENoaWxkQ2xhc3M6IHVua25vd24sIC4uLmluaXRQcm9wczogdW5rbm93bltdKTogVGVzdGluZ1VuaXQge1xuICAgICAgICBjb25zdCBmbiA9ICguLi5hcmdzOiB1bmtub3duW10pIDogdW5rbm93biA9PiB7XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IGFwaU9yaWdpbiA9IG5ldyBDaGlsZENsYXNzKC4uLmluaXRQcm9wcykgYXMgdW5rbm93biBhcyBGdW5jdGlvbjtcblxuICAgICAgICAgICAgcmV0dXJuIGFwaU9yaWdpbiguLi5hcmdzKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBnZXRIYW5kbGVyID0gKCk6IHVua25vd24gPT4ge1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gbmV3IENoaWxkQ2xhc3MoLi4uaW5pdFByb3BzLCBmYWxzZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGRlbGVnYXRlQVBJKGZuLCBDaGlsZENsYXNzLkFQSV9MSVNULCB7IGdldEhhbmRsZXIgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZuIGFzIHVua25vd24gYXMgVGVzdGluZ1VuaXQ7XG4gICAgfVxufVxuXG4vLyBAdHMtaWdub3JlXG5UZXN0aW5nVW5pdC5BUElfTElTVCA9IGdldERlbGVnYXRlZEFQSUxpc3QoVGVzdGluZ1VuaXQucHJvdG90eXBlKTtcblxuXG4iXX0=
@@ -376,4 +376,4 @@ class CLIArgumentParser {
376
376
  }
377
377
  exports.default = CLIArgumentParser;
378
378
  module.exports = exports.default;
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2FyZ3VtZW50LXBhcnNlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQWtDO0FBRWxDLHVEQUdtQjtBQUVuQixvREFBNEI7QUFDNUIsa0RBQW9EO0FBQ3BELDhDQUFvRDtBQUNwRCwwRUFBc0U7QUFDdEUsd0ZBQThEO0FBQzlELCtDQUErRDtBQUMvRCx5REFTaUM7QUFFakMsOEVBQW9EO0FBQ3BELDBHQUFrRjtBQUNsRiw0RkFBb0U7QUFNcEUsMEdBQWtGO0FBQ2xGLG9FQUF1RTtBQUN2RSw0RkFBa0U7QUFDbEUsK0NBQTJEO0FBQzNELG9FQUE0QztBQUM1QyxpR0FBNkc7QUFDN0csbUdBQXVFO0FBRXZFLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDO0FBRTlDLE1BQU0sV0FBVyxHQUFHLElBQUEsZ0JBQU0sRUFBQzs7Ozs7Ozs7Ozs7Q0FXMUIsQ0FBQyxDQUFDO0FBd0NILE1BQXFCLGlCQUFpQjtJQU9sQyxZQUFvQixHQUFZO1FBQzVCLElBQUksQ0FBQyxHQUFHLEdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFVLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFVLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRWxELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQjtRQUM1Qix3RUFBd0U7UUFDeEUsZ0ZBQWdG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QUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBMEIsQ0FBQztJQUN0QyxDQUFDO0NBQ0o7QUF6WkQsb0NBeVpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGFzLCBzZXQgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgcHJvZ3JhbSwge1xuICAgIENvbW1hbmQsXG4gICAgT3B0aW9uLFxufSBmcm9tICdjb21tYW5kZXInO1xuXG5pbXBvcnQgZGVkZW50IGZyb20gJ2RlZGVudCc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgZ2V0Vmlld1BvcnRXaWR0aCBmcm9tICcuLi8uLi91dGlscy9nZXQtdmlld3BvcnQtd2lkdGgnO1xuaW1wb3J0IHsgd29yZFdyYXAsIHNwbGl0UXVvdGVkVGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZyc7XG5pbXBvcnQge1xuICAgIGdldFNTTE9wdGlvbnMsXG4gICAgZ2V0UXVhcmFudGluZU9wdGlvbnMsXG4gICAgZ2V0U2NyZWVuc2hvdE9wdGlvbnMsXG4gICAgZ2V0U2tpcEpzRXJyb3JzT3B0aW9ucyxcbiAgICBnZXRWaWRlb09wdGlvbnMsXG4gICAgZ2V0TWV0YU9wdGlvbnMsXG4gICAgZ2V0R3JlcE9wdGlvbnMsXG4gICAgZ2V0Q29tcGlsZXJPcHRpb25zLFxufSBmcm9tICcuLi8uLi91dGlscy9nZXQtb3B0aW9ucyc7XG5cbmltcG9ydCBnZXRGaWx0ZXJGbiBmcm9tICcuLi8uLi91dGlscy9nZXQtZmlsdGVyLWZuJztcbmltcG9ydCBTQ1JFRU5TSE9UX09QVElPTl9OQU1FUyBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL3NjcmVlbnNob3Qtb3B0aW9uLW5hbWVzJztcbmltcG9ydCBSVU5fT1BUSU9OX05BTUVTIGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vcnVuLW9wdGlvbi1uYW1lcyc7XG5pbXBvcnQge1xuICAgIERpY3Rpb25hcnksXG4gICAgUmVwb3J0ZXJPcHRpb24sXG4gICAgUnVubmVyUnVuT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCBRVUFSQU5USU5FX09QVElPTl9OQU1FUyBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL3F1YXJhbnRpbmUtb3B0aW9uLW5hbWVzJztcbmltcG9ydCB7IGV4dHJhY3ROb2RlUHJvY2Vzc0FyZ3VtZW50cyB9IGZyb20gJy4uL25vZGUtYXJndW1lbnRzLWZpbHRlcic7XG5pbXBvcnQgZ2V0VGVzdGNhZmVWZXJzaW9uIGZyb20gJy4uLy4uL3V0aWxzL2dldC10ZXN0Y2FmZS12ZXJzaW9uJztcbmltcG9ydCB7IHBhcnNlUG9ydE51bWJlciwgcGFyc2VMaXN0IH0gZnJvbSAnLi9wYXJzZS11dGlscyc7XG5pbXBvcnQgQ09NTUFORF9OQU1FUyBmcm9tICcuL2NvbW1hbmQtbmFtZXMnO1xuaW1wb3J0IHsgU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9za2lwLWpzLWVycm9ycy1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHNob3VsZE1vdmVPcHRpb25Ub0VuZCBmcm9tICcuLi91dGlscy9zaG91bGQtbW92ZS1vcHRpb24tdG8tZW5kJztcblxuY29uc3QgUkVNT1RFX0FMSUFTX1JFID0gL15yZW1vdGUoPzo6KFxcZCopKT8kLztcblxuY29uc3QgREVTQ1JJUFRJT04gPSBkZWRlbnQoYFxuXG4gICAgVG8gc2VsZWN0IGEgYnJvd3Nlciwgc3BlY2lmeSBhbiBhbGlhcyAoXCJpZVwiLCBcImNocm9tZVwiLCBldGMuKSBvciB0aGUgcGF0aCB0byB0aGUgYnJvd3NlciBleGVjdXRhYmxlLiBZb3UgY2FuIHNlbGVjdCBtb3JlIHRoYW4gb25lIGJyb3dzZXIuXG5cbiAgICBVc2UgdGhlIFwiYWxsXCIgYWxpYXMgdG8gcnVuIHRlc3RzIGFnYWluc3QgYWxsIGF2YWlsYWJsZSBicm93c2Vycy5cbiAgICBVc2UgdGhlIFwicmVtb3RlXCIgYWxpYXMgdG8gcnVuIHRlc3RzIG9uIHJlbW90ZSBkZXZpY2VzLCBsaWtlIHNtYXJ0cGhvbmVzIG9yIHRhYmxldHMuIFNwZWNpZnkgdGhlIG51bWJlciBvZiByZW1vdGUgYnJvd3NlcnMgYWZ0ZXIgdGhlIHNlbWljb2xvbiAoXCJyZW1vdGU6M1wiKS5cbiAgICBJZiB5b3UgdXNlIGEgYnJvd3NlciBwcm92aWRlciBwbHVnaW4sIHNwZWNpZnkgYm90aCB0aGUgbmFtZSBvZiB0aGUgcGx1Z2luIGFuZCB0aGUgbmFtZSBvZiB0aGUgYnJvd3Nlci4gU2VwYXJhdGUgdGhlIHR3byB3aXRoIGEgc2VtaWNvbG9uIChcInNhdWNlbGFiczpjaHJvbWVANTFcIikuXG5cbiAgICBUbyBleGVjdXRlIG11bHRpcGxlIHRlc3QgZmlsZXMsIHNwZWNpZnkgbXVsdGlwbGUgZmlsZSBwYXRocyBvciBnbG9iIHBhdHRlcm5zLlxuXG4gICAgRnVsbCBkb2N1bWVudGF0aW9uOiBodHRwczovL3Rlc3RjYWZlLmlvL2RvY3VtZW50YXRpb24vNDAyNjM5L3JlZmVyZW5jZS9jb21tYW5kLWxpbmUtaW50ZXJmYWNlXG5gKTtcblxuaW50ZXJmYWNlIENvbW1hbmRMaW5lT3B0aW9ucyB7XG4gICAgdGVzdEdyZXA/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgZml4dHVyZUdyZXA/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgc3JjPzogc3RyaW5nW107XG4gICAgYnJvd3NlcnM/OiBzdHJpbmdbXTtcbiAgICBsaXN0QnJvd3NlcnM/OiBib29sZWFuIHwgc3RyaW5nO1xuICAgIHRlc3RNZXRhPzogc3RyaW5nIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICBmaXh0dXJlTWV0YT86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgZmlsdGVyPzogRnVuY3Rpb247XG4gICAgYXBwSW5pdERlbGF5Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGFzc2VydGlvblRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgc2VsZWN0b3JUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHNwZWVkPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHBhZ2VMb2FkVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBwYWdlUmVxdWVzdFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYWpheFJlcXVlc3RUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJyb3dzZXJJbml0VGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICB0ZXN0RXhlY3V0aW9uVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBydW5FeGVjdXRpb25UaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGNvbmN1cnJlbmN5Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHF1YXJhbnRpbmVNb2RlPzogYm9vbGVhbiB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyPjtcbiAgICBwb3J0cz86IHN0cmluZyB8IG51bWJlcltdO1xuICAgIHByb3ZpZGVyTmFtZT86IHN0cmluZztcbiAgICBzc2w/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgIHJlcG9ydGVyPzogc3RyaW5nIHwgUmVwb3J0ZXJPcHRpb25bXTtcbiAgICBzY3JlZW5zaG90cz86IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4gfCBzdHJpbmc7XG4gICAgc2NyZWVuc2hvdFBhdGhQYXR0ZXJuPzogc3RyaW5nO1xuICAgIHNjcmVlbnNob3RzT25GYWlscz86IGJvb2xlYW47XG4gICAgdmlkZW9PcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICB2aWRlb0VuY29kaW5nT3B0aW9ucz86IHN0cmluZyB8IERpY3Rpb25hcnk8bnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbj47XG4gICAgY29tcGlsZXJPcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICBjb25maWdGaWxlPzogc3RyaW5nO1xuICAgIG5hdGl2ZUF1dG9tYXRpb24/OiBib29sZWFuO1xuICAgIHY4RmxhZ3M/OiBzdHJpbmdbXTtcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xuICAgIHNraXBKc0Vycm9ycz86IGJvb2xlYW4gfCBEaWN0aW9uYXJ5PFJlZ0V4cCB8IHN0cmluZz47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENMSUFyZ3VtZW50UGFyc2VyIHtcbiAgICBwcml2YXRlIGN3ZDogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVtb3RlQ291bnQ6IG51bWJlcjtcbiAgICBwdWJsaWMgb3B0czogQ29tbWFuZExpbmVPcHRpb25zO1xuICAgIHB1YmxpYyBhcmdzOiBzdHJpbmdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlc3RDYWZlQ29tbWFuZDogQ29tbWFuZDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoY3dkPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY3dkICAgICAgICAgPSBjd2QgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgdGhpcy5yZW1vdGVDb3VudCA9IDA7XG4gICAgICAgIHRoaXMub3B0cyAgICAgICAgPSB7fTtcbiAgICAgICAgdGhpcy5hcmdzICAgICAgICA9IFtdO1xuXG4gICAgICAgIHRoaXMudGVzdENhZmVDb21tYW5kID0gdGhpcy5fYWRkVGVzdENhZmVDb21tYW5kKCk7XG5cbiAgICAgICAgdGhpcy5fcGF0Y2hIZWxwT3V0cHV0KHRoaXMudGVzdENhZmVDb21tYW5kKTtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3NldHVwUm9vdENvbW1hbmQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfc2V0dXBSb290Q29tbWFuZCAoKTogdm9pZCB7XG4gICAgICAgIC8vIE5PVEU6IFdlIGFyZSBmb3JjZWQgdG8gc2V0IHRoZSBuYW1lIG9mIHRoZSByb290IGNvbW1hbmQgdG8gJ3Rlc3RjYWZlJ1xuICAgICAgICAvLyB0byBhdm9pZCB0aGUgYXV0b21hdGljIGNvbW1hbmQgbmFtZSBjYWxjdWxhdGlvbiB1c2luZyB0aGUgZXhlY3V0ZWQgZmlsZSBwYXRoLlxuICAgICAgICAvLyBJdCdzIG5lY2Vzc2FyeSB0byBjb3JyZWN0IGNvbW1hbmQgZGVzY3JpcHRpb24gZm9yIG5lc3RlZCBjb21tYW5kcy5cbiAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5uYW1lKENPTU1BTkRfTkFNRVMuVGVzdENhZmUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9yZW1vdmVDb21tYW5kSWZFeGlzdHMgKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBCdWcgaW4gdGhlICdjb21tYW5kZXInIG1vZHVsZS5cbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0byBhZGQgYSBmZXcgY29tbWFuZHMgd2l0aCB0aGUgc2FtZSBuYW1lLlxuICAgICAgICAvLyBBbHNvLCByZW1vdmluZyBpcyBhIGJldHRlciB0aGFuIGNvbmRpdGlvbmFsbHkgYWRkaW5nXG4gICAgICAgIC8vIGJlY2F1c2UgaXQgYWxsb3dzIGF2b2lkaW5nIHRoZSBwYXJzZWQgb3B0aW9uIGR1cGxpY2F0ZXMuXG4gICAgICAgIGNvbnN0IGluZGV4ID0gKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5jb21tYW5kcy5maW5kSW5kZXgoY21kID0+IGNtZC5uYW1lKCkgPT09IG5hbWUpO1xuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKVxuICAgICAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5jb21tYW5kcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXREZXNjcmlwdGlvbiAoKTogc3RyaW5nIHtcbiAgICAgICAgLy8gTk9URTogYWRkIGVtcHR5IGxpbmUgdG8gd29ya2Fyb3VuZCBjb21tYW5kZXItZm9yY2VkIGluZGVudGF0aW9uIG9uIHRoZSBmaXJzdCBsaW5lLlxuICAgICAgICByZXR1cm4gJ1xcbicgKyB3b3JkV3JhcChERVNDUklQVElPTiwgMiwgZ2V0Vmlld1BvcnRXaWR0aChwcm9jZXNzLnN0ZG91dCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FkZFRlc3RDYWZlQ29tbWFuZCAoKTogQ29tbWFuZCB7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9yZW1vdmVDb21tYW5kSWZFeGlzdHMoQ09NTUFORF9OQU1FUy5UZXN0Q2FmZSk7XG5cbiAgICAgICAgcmV0dXJuIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZClcbiAgICAgICAgICAgIC5jb21tYW5kKENPTU1BTkRfTkFNRVMuVGVzdENhZmUsIHsgaXNEZWZhdWx0OiB0cnVlIH0pXG4gICAgICAgICAgICAudmVyc2lvbihnZXRUZXN0Y2FmZVZlcnNpb24oKSwgJy12LCAtLXZlcnNpb24nKVxuICAgICAgICAgICAgLnVzYWdlKCdbb3B0aW9uc10gPGNvbW1hLXNlcGFyYXRlZC1icm93c2VyLWxpc3Q+IDxmaWxlLW9yLWdsb2IgLi4uPicpXG4gICAgICAgICAgICAuZGVzY3JpcHRpb24oQ0xJQXJndW1lbnRQYXJzZXIuX2dldERlc2NyaXB0aW9uKCkpXG5cbiAgICAgICAgICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgICAgICAgICAgLm9wdGlvbignLWIsIC0tbGlzdC1icm93c2VycyBbcHJvdmlkZXJdJywgJ2Rpc3BsYXkgdGhlIGxpc3Qgb2YgYWxpYXNlcyBmb3IgYXZhaWxhYmxlIGJyb3dzZXJzIGFuZCBicm93c2VyIHByb3ZpZGVycycpXG4gICAgICAgICAgICAub3B0aW9uKCctciwgLS1yZXBvcnRlciA8bmFtZVs6b3V0cHV0RmlsZV1bLC4uLl0+JywgJ3NwZWNpZnkgcmVwb3J0ZXJzIGFuZCByZXBvcnQgZmlsZW5hbWVzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1zLCAtLXNjcmVlbnNob3RzIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgc2NyZWVuc2hvdCBvcHRpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1TLCAtLXNjcmVlbnNob3RzLW9uLWZhaWxzJywgJ3Rha2UgYSBzY3JlZW5zaG90IG9uIHRlc3QgZmFpbHVyZScpXG4gICAgICAgICAgICAub3B0aW9uKCctcCwgLS1zY3JlZW5zaG90LXBhdGgtcGF0dGVybiA8cGF0dGVybj4nLCAnc3BlY2lmeSB0aGUgbmFtaW5nIHNjaGVtYSBmb3Igc2NyZWVuc2hvdCBmaWxlbmFtZXMgYW5kIHBhdGhzOiAke0JST1dTRVJ9LCAke0JST1dTRVJfVkVSU0lPTn0sICR7T1N9LCBldGMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1xLCAtLXF1YXJhbnRpbmUtbW9kZSBbb3B0aW9uPXZhbHVlLC4uLl0nLCAnZW5hYmxlIGFuZCBjb25maWd1cmUgcXVhcmFudGluZSBtb2RlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1kLCAtLWRlYnVnLW1vZGUnLCAnZW5hYmxlIGRlYnVnIG1vZGUuIFdoZW4geW91IHJ1biBUZXN0Q2FmZSBpbiBkZWJ1ZyBtb2RlLCBpdCBleGVjdXRlcyB0ZXN0IHN0ZXBzIG9uZSBieSBvbmUsIGFuZCBwYXVzZXMgdGhlIHRlc3QgYWZ0ZXIgZWFjaCBzdGVwLicpXG4gICAgICAgICAgICAub3B0aW9uKCctZSwgLS1za2lwLWpzLWVycm9ycyBbb3B0aW9uPXZhbHVlLC4uLl0nLCAnaWdub3JlIEphdmFTY3JpcHQgZXJyb3JzIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpXG4gICAgICAgICAgICAub3B0aW9uKCctdSwgLS1za2lwLXVuY2F1Z2h0LWVycm9ycycsICdpZ25vcmUgdW5jYXVnaHQgZXJyb3JzIGFuZCB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy10LCAtLXRlc3QgPG5hbWU+JywgJ2ZpbHRlciB0ZXN0cyBieSBuYW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1ULCAtLXRlc3QtZ3JlcCA8cGF0dGVybj4nLCAnZmlsdGVyIHRlc3RzIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvbicpXG4gICAgICAgICAgICAub3B0aW9uKCctZiwgLS1maXh0dXJlIDxuYW1lPicsICdmaWx0ZXIgZml4dHVyZXMgYnkgbmFtZScpXG4gICAgICAgICAgICAub3B0aW9uKCctRiwgLS1maXh0dXJlLWdyZXAgPHBhdHRlcm4+JywgJ2ZpbHRlciBmaXh0dXJlcyBieSByZWd1bGFyIGV4cHJlc3Npb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLWEsIC0tYXBwIDxjb21tYW5kPicsICdleGVjdXRlIGEgc2hlbGwgY29tbWFuZCBvbiBzdGFydHVwIHRvIGxhdW5jaCBhIHdlYiBhcHBsaWNhdGlvbiBvciBwZXJmb3JtIG90aGVyIHByZXBhcmF0b3J5IHRhc2tzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1jLCAtLWNvbmN1cnJlbmN5IDxudW1iZXI+JywgJ3J1biB0ZXN0cyBjb25jdXJyZW50bHknKVxuICAgICAgICAgICAgLm9wdGlvbignLUwsIC0tbGl2ZScsICdlbmFibGUgbGl2ZSBtb2RlLiBMaXZlIG1vZGUgcmVzdGFydHMgdGVzdHMgd2hlbiB5b3UgbWFrZSBjaGFuZ2VzIHRvIHRlc3QgZmlsZXMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdGVzdC1tZXRhIDxrZXk9dmFsdWVbLGtleTI9dmFsdWUyLC4uLl0+JywgJ2ZpbHRlciB0ZXN0cyBieSBtZXRhZGF0YScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWZpeHR1cmUtbWV0YSA8a2V5PXZhbHVlWyxrZXkyPXZhbHVlMiwuLi5dPicsICdmaWx0ZXIgZml4dHVyZXMgYnkgbWV0YWRhdGEnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kZWJ1Zy1vbi1mYWlsJywgJ3BhdXNlIHRlc3RzIG9uIGZhaWx1cmUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLW5hdGl2ZS1hdXRvbWF0aW9uJywgJ2Rpc2FibGUgbmF0aXZlIGF1dG9tYXRpb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hcHAtaW5pdC1kZWxheSA8bXM+JywgJ3NwZWNpZnkgeW91ciBhcHBsaWNhdGlvbmBzIGluaXRpYWxpemF0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZWxlY3Rvci10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSBTZWxlY3RvciByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hc3NlcnRpb24tdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gQXNzZXJ0aW9uIHJlc29sdXRpb24gdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBhZ2UtbG9hZC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW4gdGhlIHdpbmRvdy5sb2FkIGV2ZW50IGFuZCB0aGUgRE9NQ29udGVudExvYWRlZCBldmVudCAobXMpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcGFnZS1yZXF1ZXN0LXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHBhZ2UgcmVxdWVzdCByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hamF4LXJlcXVlc3QtdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gQUpBWCByZXF1ZXN0IHJlc29sdXRpb24gdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWJyb3dzZXItaW5pdC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSBicm93c2VyIHN0YXJ0dXAgdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXRlc3QtZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHRlc3QgZXhlY3V0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1ydW4tZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHRlc3QgcnVuIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zcGVlZCA8ZmFjdG9yPicsICdzZXQgdGVzdCBleGVjdXRpb24gc3BlZWQgKDAuMDEgLi4uIDEpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcG9ydHMgPHBvcnQxLHBvcnQyPicsICdzcGVjaWZ5IG5ldHdvcmsgcG9ydHMgdG8gdXNlIGR1cmluZyB0aGUgdGVzdCBydW4uIFRoZSBzZWNvbmQgcG9ydCBpcyBuZWNlc3NhcnkgdG8gYWNjZXNzIGNyb3NzLWRvbWFpbiByZXNvdXJjZXMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0taG9zdG5hbWUgPG5hbWU+JywgYHNwZWNpZnkgeW91ciBob3N0bmFtZS4gTmVjZXNzYXJ5IHRvIHJ1biB0ZXN0cyBpbiByZW1vdGUgYnJvd3NlcnMuYClcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHkgPGhvc3Q+JywgJ3NwZWNpZnkgdGhlIHByb3h5IHNlcnZlciBob3N0bmFtZSBvciBJUCBhZGRyZXNzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHktYnlwYXNzIDxydWxlcz4nLCAnc3BlY2lmeSBVUkxzIHRoYXQgYnlwYXNzIHRoZSBwcm94eSBzZXJ2ZXInKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zc2wgPG9wdGlvbnM+JywgJ3NwZWNpZnkgU1NMIG9wdGlvbnMgdG8gcnVuIFRlc3RDYWZlIG92ZXIgSFRUUFMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlbyA8cGF0aD4nLCAncmVjb3JkIHZpZGVvcyBvZiB0ZXN0IHJ1bnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gcmVjb3JkaW5nIG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1lbmNvZGluZy1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gZW5jb2Rpbmcgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRldicsICdsb2cgYW5kIGRpYWdub3NlIFRlc3RDYWZlIGVycm9ycycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXFyLWNvZGUnLCAnb3V0cHV0IFFSIGNvZGVzIHdpdGggVVJMcyBmb3IgcmVtb3RlIGJyb3dzZXIgY29ubmVjdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZiwgLS1zdG9wLW9uLWZpcnN0LWZhaWwnLCAnc3RvcCB0aGUgdGVzdCBydW4gaWYgYW55IHRlc3QgZmFpbHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jb25maWctZmlsZSA8cGF0aD4nLCAnc3BlY2lmeSBhIGN1c3RvbSBwYXRoIHRvIHRoZSB0ZXN0Y2FmZSBjb25maWd1cmF0aW9uIGZpbGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS10cy1jb25maWctcGF0aCA8cGF0aD4nLCAnc3BlY2lmeSB0aGUgcGF0aCB0byBhIGN1c3RvbSBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNzLCAtLWNsaWVudC1zY3JpcHRzIDxwYXRocz4nLCAnaW5qZWN0IGNsaWVudC1zaWRlIHNjcmlwdHMgaW50byB0aGUgcGFnZScsIHBhcnNlTGlzdCwgW10pXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1jYWNoaW5nJywgJ2RvIG5vdCBjYWNoZSBwYWdlcycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1yZWxvYWRzJywgJ2RvIG5vdCByZWxvYWQgcGFnZXMgYmV0d2VlbiB0ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXJldHJ5LXRlc3QtcGFnZXMnLCAncmV0cnkgcGFnZSByZXF1ZXN0cyBpbiBjYXNlIG9mIGZhaWx1cmUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLXNjcmVlbnNob3RzJywgJ2Rpc2FibGUgc2NyZWVuc2hvdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zY3JlZW5zaG90cy1mdWxsLXBhZ2UnLCAnZW5hYmxlIGZ1bGwtcGFnZSBzY3JlZW5zaG90cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbXBpbGVyLW9wdGlvbnMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSB0ZXN0IGNvbXBpbGF0aW9uIHNldHRpbmdzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1tdWx0aXBsZS13aW5kb3dzJywgJ2Rpc2FibGUgdGhlIG11bHRpLXdpbmRvdyBtb2RlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1odHRwMicsICdmb3JjZSB0aGUgcHJveHkgdG8gaXNzdWUgSFRUUC8xLjEgcmVxdWVzdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jYWNoZScsICdjYWNoZSB3ZWIgYXNzZXRzIGJldHdlZW4gdGVzdCBydW5zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tYmFzZS11cmwgPHVybD4nLCAnc2V0IHRoZSBiYXNlIHVybCBmb3IgdGhlIHRlc3QgcnVuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZXNtJywgJ2VuYWJsZSBFU00gbW9kdWxlIHN1cHBvcnQnKVxuXG4gICAgICAgICAgICAvLyBOT1RFOiB0aGVzZSBvcHRpb25zIHdpbGwgYmUgaGFuZGxlZCBieSBjaGFsayBpbnRlcm5hbGx5XG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbG9yJywgJ2ZvcmNlIFRlc3RDYWZlIHRvIGZvcm1hdCBDTEkgb3V0cHV0IHdpdGggY29sb3InKVxuICAgICAgICAgICAgLm9wdGlvbignLS1uby1jb2xvcicsICdkaXNhYmxlIHRleHQgY29sb3IgZm9ybWF0dGluZyBpbiB0aGUgQ0xJJylcblxuICAgICAgICAgICAgLy8gTk9URTogVGVtcG9yYXJpbHkgZXhjbHVkZSBleHBlcmltZW50YWwgb3B0aW9ucyBmcm9tIC0taGVscCBvdXRwdXRcbiAgICAgICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1kaXNhYmxlLWNyb3NzLWRvbWFpbicsICdleHBlcmltZW50YWwnKS5oaWRlSGVscCgpKVxuICAgICAgICAgICAgLmFjdGlvbigob3B0czogQ29tbWFuZExpbmVPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRzID0gb3B0cztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhdGNoSGVscE91dHB1dCAoZGVmYXVsdFN1YkNvbW1hbmQ6IENvbW1hbmQpOiB2b2lkIHtcbiAgICAgICAgLy8gTk9URTogSW4gdGhlIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgJ2NvbW1hbmRlcicgbW9kdWxlXG4gICAgICAgIC8vIG5lZWQgdG8gaW52ZXN0aWdhdGUgaG93IHRvIHJlbW92ZSB0aGlzIGhhY2suXG4gICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkub3V0cHV0SGVscCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlZFBhcmVudCA9IGRlZmF1bHRTdWJDb21tYW5kLnBhcmVudDtcblxuICAgICAgICAgICAgZGVmYXVsdFN1YkNvbW1hbmQucGFyZW50ID0gbnVsbDtcblxuICAgICAgICAgICAgZGVmYXVsdFN1YkNvbW1hbmQub3V0cHV0SGVscCgpO1xuXG4gICAgICAgICAgICBkZWZhdWx0U3ViQ29tbWFuZC5wYXJlbnQgPSBzdG9yZWRQYXJlbnQ7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tBbmRDb3VudFJlbW90ZXMgKGJyb3dzZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCByZW1vdGVNYXRjaCA9IGJyb3dzZXIubWF0Y2goUkVNT1RFX0FMSUFTX1JFKTtcblxuICAgICAgICBpZiAocmVtb3RlTWF0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3RlQ291bnQgKz0gcGFyc2VJbnQocmVtb3RlTWF0Y2hbMV0sIDEwKSB8fCAxO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX3BhcnNlRmlsdGVyaW5nT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMudGVzdEdyZXApXG4gICAgICAgICAgICB0aGlzLm9wdHMudGVzdEdyZXAgPSBnZXRHcmVwT3B0aW9ucygnLS10ZXN0LWdyZXAnLCB0aGlzLm9wdHMudGVzdEdyZXAgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLmZpeHR1cmVHcmVwKVxuICAgICAgICAgICAgdGhpcy5vcHRzLmZpeHR1cmVHcmVwID0gZ2V0R3JlcE9wdGlvbnMoJy0tZml4dHVyZS1ncmVwJywgdGhpcy5vcHRzLmZpeHR1cmVHcmVwIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy50ZXN0TWV0YSlcbiAgICAgICAgICAgIHRoaXMub3B0cy50ZXN0TWV0YSA9IGF3YWl0IGdldE1ldGFPcHRpb25zKCctLXRlc3QtbWV0YScsIHRoaXMub3B0cy50ZXN0TWV0YSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMuZml4dHVyZU1ldGEpXG4gICAgICAgICAgICB0aGlzLm9wdHMuZml4dHVyZU1ldGEgPSBhd2FpdCBnZXRNZXRhT3B0aW9ucygnLS1maXh0dXJlLW1ldGEnLCB0aGlzLm9wdHMuZml4dHVyZU1ldGEgYXMgc3RyaW5nKTtcblxuICAgICAgICB0aGlzLm9wdHMuZmlsdGVyID0gZ2V0RmlsdGVyRm4odGhpcy5vcHRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUFwcEluaXREZWxheSAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuYXBwSW5pdERlbGF5KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHRlc3RlZCBhcHAgaW5pdGlhbGl6YXRpb24gZGVsYXknLCB0aGlzLm9wdHMuYXBwSW5pdERlbGF5KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLmFwcEluaXREZWxheSA9IHBhcnNlSW50KHRoaXMub3B0cy5hcHBJbml0RGVsYXkgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVNlbGVjdG9yVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIFNlbGVjdG9yIHRpbWVvdXQnLCB0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUFzc2VydGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgYXNzZXJ0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVBhZ2VMb2FkVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHBhZ2UgbG9hZCB0aW1lb3V0JywgdGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQYWdlUmVxdWVzdFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBwYWdlIHJlcXVlc3QgdGltZW91dCcsIHRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQWpheFJlcXVlc3RUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgQUpBWCByZXF1ZXN0IHRpbWVvdXQnLCB0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUJyb3dzZXJJbml0VGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIGJyb3dzZXIgaW5pdGlhbGl6YXRpb24gdGltZW91dCcsIHRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlVGVzdEV4ZWN1dGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHRlc3QgZXhlY3V0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVJ1bkV4ZWN1dGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcnVuIGV4ZWN1dGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VTcGVlZCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc3BlZWQpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc3BlZWQgPSBwYXJzZUZsb2F0KHRoaXMub3B0cy5zcGVlZCBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQ29uY3VycmVuY3kgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmNvbmN1cnJlbmN5KVxuICAgICAgICAgICAgdGhpcy5vcHRzLmNvbmN1cnJlbmN5ID0gcGFyc2VJbnQodGhpcy5vcHRzLmNvbmN1cnJlbmN5IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlUXVhcmFudGluZU9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnF1YXJhbnRpbmVNb2RlICE9PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLm9wdHMucXVhcmFudGluZU1vZGUgPSBhd2FpdCBnZXRRdWFyYW50aW5lT3B0aW9ucygnLS1xdWFyYW50aW5lLW1vZGUnLCB0aGlzLm9wdHMucXVhcmFudGluZU1vZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlU2tpcEpzRXJyb3JzT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc2tpcEpzRXJyb3JzICE9PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2tpcEpzRXJyb3JzID0gYXdhaXQgZ2V0U2tpcEpzRXJyb3JzT3B0aW9ucygnLS1za2lwLWpzLWVycm9ycycsIHRoaXMub3B0cy5za2lwSnNFcnJvcnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUG9ydHMgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnBvcnRzKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRQb3J0cyA9ICh0aGlzLm9wdHMucG9ydHMgYXMgc3RyaW5nKSAvKiBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWV4dHJhLXBhcmVucyAqL1xuICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgLm1hcChwYXJzZVBvcnROdW1iZXIpO1xuXG4gICAgICAgICAgICBpZiAocGFyc2VkUG9ydHMubGVuZ3RoIDwgMilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLnBvcnRzT3B0aW9uUmVxdWlyZXNUd29OdW1iZXJzKTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnBvcnRzID0gcGFyc2VkUG9ydHMgYXMgbnVtYmVyW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUJyb3dzZXJzRnJvbUFyZ3MgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBicm93c2Vyc0FyZyA9IHRoaXMudGVzdENhZmVDb21tYW5kLmFyZ3NbMF0gfHwgJyc7XG5cbiAgICAgICAgdGhpcy5vcHRzLmJyb3dzZXJzID0gc3BsaXRRdW90ZWRUZXh0KGJyb3dzZXJzQXJnLCAnLCcpXG4gICAgICAgICAgICAuZmlsdGVyKGJyb3dzZXIgPT4gYnJvd3NlciAmJiB0aGlzLl9jaGVja0FuZENvdW50UmVtb3Rlcyhicm93c2VyKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9wYXJzZVNzbE9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNzbClcbiAgICAgICAgICAgIHRoaXMub3B0cy5zc2wgPSBhd2FpdCBnZXRTU0xPcHRpb25zKHRoaXMub3B0cy5zc2wgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVJlcG9ydGVycyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVycyA9IHRoaXMub3B0cy5yZXBvcnRlciA/ICh0aGlzLm9wdHMucmVwb3J0ZXIgYXMgc3RyaW5nKS5zcGxpdCgnLCcpIDogW107IC8qIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXh0cmEtcGFyZW5zKi9cblxuICAgICAgICB0aGlzLm9wdHMucmVwb3J0ZXIgPSByZXBvcnRlcnMubWFwKChyZXBvcnRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JJbmRleCA9IHJlcG9ydGVyLmluZGV4T2YoJzonKTtcblxuICAgICAgICAgICAgaWYgKHNlcGFyYXRvckluZGV4IDwgMClcbiAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lOiByZXBvcnRlciB9O1xuXG4gICAgICAgICAgICBjb25zdCBuYW1lICAgPSByZXBvcnRlci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9ySW5kZXgpO1xuICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gcmVwb3J0ZXIuc3Vic3RyaW5nKHNlcGFyYXRvckluZGV4ICsgMSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7IG5hbWUsIG91dHB1dCB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUZpbGVMaXN0ICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcHRzLnNyYyA9IHRoaXMudGVzdENhZmVDb21tYW5kLmFyZ3Muc2xpY2UoMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VTY3JlZW5zaG90T3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc2NyZWVuc2hvdHMpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHMgPSBhd2FpdCBnZXRTY3JlZW5zaG90T3B0aW9ucyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHMgPSB7fTtcblxuICAgICAgICBpZiAoIWhhcyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMsIFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnBhdGhQYXR0ZXJuKSAmJiB0aGlzLm9wdHMuc2NyZWVuc2hvdFBhdGhQYXR0ZXJuKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzW1NDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnBhdGhQYXR0ZXJuXSA9IHRoaXMub3B0cy5zY3JlZW5zaG90UGF0aFBhdHRlcm47XG5cbiAgICAgICAgaWYgKCFoYXModGhpcy5vcHRzLnNjcmVlbnNob3RzLCBTQ1JFRU5TSE9UX09QVElPTl9OQU1FUy50YWtlT25GYWlscykgJiYgdGhpcy5vcHRzLnNjcmVlbnNob3RzT25GYWlscylcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90c1tTQ1JFRU5TSE9UX09QVElPTl9OQU1FUy50YWtlT25GYWlsc10gPSB0aGlzLm9wdHMuc2NyZWVuc2hvdHNPbkZhaWxzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlVmlkZW9PcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy52aWRlb09wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMudmlkZW9PcHRpb25zID0gYXdhaXQgZ2V0VmlkZW9PcHRpb25zKHRoaXMub3B0cy52aWRlb09wdGlvbnMgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zID0gYXdhaXQgZ2V0VmlkZW9PcHRpb25zKHRoaXMub3B0cy52aWRlb0VuY29kaW5nT3B0aW9ucyBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlQ29tcGlsZXJPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuY29tcGlsZXJPcHRpb25zKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHBhcnNlZENvbXBpbGVyT3B0aW9ucyA9IGF3YWl0IGdldENvbXBpbGVyT3B0aW9ucyh0aGlzLm9wdHMuY29tcGlsZXJPcHRpb25zIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IHJlc3VsdENvbXBpbGVyT3B0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyc2VkQ29tcGlsZXJPcHRpb25zKSlcbiAgICAgICAgICAgIHNldChyZXN1bHRDb21waWxlck9wdGlvbnMsIGtleSwgdmFsdWUpO1xuXG4gICAgICAgIHRoaXMub3B0cy5jb21waWxlck9wdGlvbnMgPSByZXN1bHRDb21waWxlck9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VMaXN0QnJvd3NlcnMgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsaXN0QnJvd3Nlck9wdGlvbiA9IHRoaXMub3B0cy5saXN0QnJvd3NlcnM7XG5cbiAgICAgICAgdGhpcy5vcHRzLmxpc3RCcm93c2VycyA9ICEhdGhpcy5vcHRzLmxpc3RCcm93c2VycztcblxuICAgICAgICBpZiAoIXRoaXMub3B0cy5saXN0QnJvd3NlcnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5vcHRzLnByb3ZpZGVyTmFtZSA9IHR5cGVvZiBsaXN0QnJvd3Nlck9wdGlvbiA9PT0gJ3N0cmluZycgPyBsaXN0QnJvd3Nlck9wdGlvbiA6ICdsb2NhbGx5LWluc3RhbGxlZCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3ByZXBhcmVCb29sZWFuT3JPYmplY3RPcHRpb24gKGFyZ3Y6IHN0cmluZ1tdLCBvcHRpb25OYW1lczogc3RyaW5nW10sIHN1Yk9wdGlvbnNOYW1lczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgLy8gTk9URTogbW92ZSBvcHRpb25zIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5IHRvIGNvcnJlY3RseSBwYXJzZSBib3RoIEJvb2xlYW4gYW5kIE9iamVjdCB0eXBlIGFyZ3VtZW50cyAoR0gtNjIzMSlcbiAgICAgICAgY29uc3Qgb3B0aW9uSW5kZXggPSBhcmd2LmZpbmRJbmRleChcbiAgICAgICAgICAgIGVsID0+IG9wdGlvbk5hbWVzLnNvbWUob3B0ID0+IGVsLnN0YXJ0c1dpdGgob3B0KSkpO1xuXG4gICAgICAgIGlmIChvcHRpb25JbmRleCA+IC0xICYmIHNob3VsZE1vdmVPcHRpb25Ub0VuZChhcmd2LCBvcHRpb25JbmRleCwgc3ViT3B0aW9uc05hbWVzKSlcbiAgICAgICAgICAgIGFyZ3YucHVzaChhcmd2LnNwbGljZShvcHRpb25JbmRleCwgMSlbMF0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwYXJzZSAoYXJndjogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3ByZXBhcmVCb29sZWFuT3JPYmplY3RPcHRpb24oYXJndiwgWyctcScsICctLXF1YXJhbnRpbmUtbW9kZSddLCBPYmplY3QudmFsdWVzKFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTKSk7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9wcmVwYXJlQm9vbGVhbk9yT2JqZWN0T3B0aW9uKGFyZ3YsIFsnLWUnLCAnLS1za2lwLWpzLWVycm9ycyddLCBPYmplY3QudmFsdWVzKFNLSVBfSlNfRVJST1JTX09QVElPTlNfT0JKRUNUX09QVElPTl9OQU1FUykpO1xuXG4gICAgICAgIGNvbnN0IHsgYXJncywgdjhGbGFncyB9ID0gZXh0cmFjdE5vZGVQcm9jZXNzQXJndW1lbnRzKGFyZ3YpO1xuXG4gICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkucGFyc2UoYXJncyk7XG5cbiAgICAgICAgdGhpcy5hcmdzID0gKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5hcmdzO1xuICAgICAgICB0aGlzLm9wdHMgPSBPYmplY3QuYXNzaWduKHRoaXMub3B0cywgeyB2OEZsYWdzIH0pO1xuXG4gICAgICAgIHRoaXMuX3BhcnNlTGlzdEJyb3dzZXJzKCk7XG5cbiAgICAgICAgLy8gTk9URTogdGhlICctLWxpc3QtYnJvd3NlcnMnIG9wdGlvbiBvbmx5IGxpc3RzIGJyb3dzZXJzIGFuZCBpbW1lZGlhdGVseSBleGl0cyB0aGUgYXBwLlxuICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIGRvbid0IG5lZWQgdG8gcHJvY2VzcyBvdGhlciBhcmd1bWVudHMuXG4gICAgICAgIGlmICh0aGlzLm9wdHMubGlzdEJyb3dzZXJzKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuX3BhcnNlU2VsZWN0b3JUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQXNzZXJ0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBhZ2VMb2FkVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBhZ2VSZXF1ZXN0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFqYXhSZXF1ZXN0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUJyb3dzZXJJbml0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVRlc3RFeGVjdXRpb25UaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUnVuRXhlY3V0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFwcEluaXREZWxheSgpO1xuICAgICAgICB0aGlzLl9wYXJzZVNwZWVkKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUG9ydHMoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VCcm93c2Vyc0Zyb21BcmdzKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQ29uY3VycmVuY3koKTtcbiAgICAgICAgdGhpcy5fcGFyc2VGaWxlTGlzdCgpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlRmlsdGVyaW5nT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVF1YXJhbnRpbmVPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU2tpcEpzRXJyb3JzT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVNjcmVlbnNob3RPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlVmlkZW9PcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlQ29tcGlsZXJPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU3NsT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVJlcG9ydGVycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSdW5PcHRpb25zICgpOiBSdW5uZXJSdW5PcHRpb25zIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICBSVU5fT1BUSU9OX05BTUVTLmZvckVhY2gob3B0aW9uTmFtZSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uTmFtZSBpbiB0aGlzLm9wdHMpXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBhIGhhY2sgdG8gYWRkIGFuIGluZGV4IHNpZ25hdHVyZSB0byBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgICByZXN1bHRbb3B0aW9uTmFtZV0gPSB0aGlzLm9wdHNbb3B0aW9uTmFtZV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQgYXMgUnVubmVyUnVuT3B0aW9ucztcbiAgICB9XG59XG4iXX0=
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2FyZ3VtZW50LXBhcnNlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQWtDO0FBRWxDLHVEQUdtQjtBQUVuQixvREFBNEI7QUFDNUIsa0RBQW9EO0FBQ3BELDhDQUFvRDtBQUNwRCwwRUFBc0U7QUFDdEUsd0ZBQThEO0FBQzlELCtDQUErRDtBQUMvRCx5REFTaUM7QUFFakMsOEVBQW9EO0FBQ3BELDBHQUFrRjtBQUNsRiw0RkFBb0U7QUFNcEUsMEdBQWtGO0FBQ2xGLG9FQUF1RTtBQUN2RSw0RkFBa0U7QUFDbEUsK0NBQTJEO0FBQzNELG9FQUE0QztBQUM1QyxpR0FBNkc7QUFDN0csbUdBQXVFO0FBRXZFLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDO0FBRTlDLE1BQU0sV0FBVyxHQUFHLElBQUEsZ0JBQU0sRUFBQzs7Ozs7Ozs7Ozs7Q0FXMUIsQ0FBQyxDQUFDO0FBd0NILE1BQXFCLGlCQUFpQjtJQU9sQyxZQUFvQixHQUFZO1FBQzVCLElBQUksQ0FBQyxHQUFHLEdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFVLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFVLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRWxELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQjtRQUM1Qix3RUFBd0U7UUFDeEUsZ0ZBQWdG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QUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBMEIsQ0FBQztJQUN0QyxDQUFDO0NBQ0o7QUF6WkQsb0NBeVpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGFzLCBzZXQgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgcHJvZ3JhbSwge1xuICAgIENvbW1hbmQsXG4gICAgT3B0aW9uLFxufSBmcm9tICdjb21tYW5kZXInO1xuXG5pbXBvcnQgZGVkZW50IGZyb20gJ2RlZGVudCc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgZ2V0Vmlld1BvcnRXaWR0aCBmcm9tICcuLi8uLi91dGlscy9nZXQtdmlld3BvcnQtd2lkdGgnO1xuaW1wb3J0IHsgd29yZFdyYXAsIHNwbGl0UXVvdGVkVGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZyc7XG5pbXBvcnQge1xuICAgIGdldFNTTE9wdGlvbnMsXG4gICAgZ2V0UXVhcmFudGluZU9wdGlvbnMsXG4gICAgZ2V0U2NyZWVuc2hvdE9wdGlvbnMsXG4gICAgZ2V0U2tpcEpzRXJyb3JzT3B0aW9ucyxcbiAgICBnZXRWaWRlb09wdGlvbnMsXG4gICAgZ2V0TWV0YU9wdGlvbnMsXG4gICAgZ2V0R3JlcE9wdGlvbnMsXG4gICAgZ2V0Q29tcGlsZXJPcHRpb25zLFxufSBmcm9tICcuLi8uLi91dGlscy9nZXQtb3B0aW9ucyc7XG5cbmltcG9ydCBnZXRGaWx0ZXJGbiBmcm9tICcuLi8uLi91dGlscy9nZXQtZmlsdGVyLWZuJztcbmltcG9ydCBTQ1JFRU5TSE9UX09QVElPTl9OQU1FUyBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL3NjcmVlbnNob3Qtb3B0aW9uLW5hbWVzJztcbmltcG9ydCBSVU5fT1BUSU9OX05BTUVTIGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vcnVuLW9wdGlvbi1uYW1lcyc7XG5pbXBvcnQge1xuICAgIERpY3Rpb25hcnksXG4gICAgUmVwb3J0ZXJPcHRpb24sXG4gICAgUnVubmVyUnVuT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCBRVUFSQU5USU5FX09QVElPTl9OQU1FUyBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL3F1YXJhbnRpbmUtb3B0aW9uLW5hbWVzJztcbmltcG9ydCB7IGV4dHJhY3ROb2RlUHJvY2Vzc0FyZ3VtZW50cyB9IGZyb20gJy4uL25vZGUtYXJndW1lbnRzLWZpbHRlcic7XG5pbXBvcnQgZ2V0VGVzdENhZmVWZXJzaW9uIGZyb20gJy4uLy4uL3V0aWxzL2dldC10ZXN0Y2FmZS12ZXJzaW9uJztcbmltcG9ydCB7IHBhcnNlUG9ydE51bWJlciwgcGFyc2VMaXN0IH0gZnJvbSAnLi9wYXJzZS11dGlscyc7XG5pbXBvcnQgQ09NTUFORF9OQU1FUyBmcm9tICcuL2NvbW1hbmQtbmFtZXMnO1xuaW1wb3J0IHsgU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9za2lwLWpzLWVycm9ycy1vcHRpb24tbmFtZXMnO1xuaW1wb3J0IHNob3VsZE1vdmVPcHRpb25Ub0VuZCBmcm9tICcuLi91dGlscy9zaG91bGQtbW92ZS1vcHRpb24tdG8tZW5kJztcblxuY29uc3QgUkVNT1RFX0FMSUFTX1JFID0gL15yZW1vdGUoPzo6KFxcZCopKT8kLztcblxuY29uc3QgREVTQ1JJUFRJT04gPSBkZWRlbnQoYFxuXG4gICAgVG8gc2VsZWN0IGEgYnJvd3Nlciwgc3BlY2lmeSBhbiBhbGlhcyAoXCJpZVwiLCBcImNocm9tZVwiLCBldGMuKSBvciB0aGUgcGF0aCB0byB0aGUgYnJvd3NlciBleGVjdXRhYmxlLiBZb3UgY2FuIHNlbGVjdCBtb3JlIHRoYW4gb25lIGJyb3dzZXIuXG5cbiAgICBVc2UgdGhlIFwiYWxsXCIgYWxpYXMgdG8gcnVuIHRlc3RzIGFnYWluc3QgYWxsIGF2YWlsYWJsZSBicm93c2Vycy5cbiAgICBVc2UgdGhlIFwicmVtb3RlXCIgYWxpYXMgdG8gcnVuIHRlc3RzIG9uIHJlbW90ZSBkZXZpY2VzLCBsaWtlIHNtYXJ0cGhvbmVzIG9yIHRhYmxldHMuIFNwZWNpZnkgdGhlIG51bWJlciBvZiByZW1vdGUgYnJvd3NlcnMgYWZ0ZXIgdGhlIHNlbWljb2xvbiAoXCJyZW1vdGU6M1wiKS5cbiAgICBJZiB5b3UgdXNlIGEgYnJvd3NlciBwcm92aWRlciBwbHVnaW4sIHNwZWNpZnkgYm90aCB0aGUgbmFtZSBvZiB0aGUgcGx1Z2luIGFuZCB0aGUgbmFtZSBvZiB0aGUgYnJvd3Nlci4gU2VwYXJhdGUgdGhlIHR3byB3aXRoIGEgc2VtaWNvbG9uIChcInNhdWNlbGFiczpjaHJvbWVANTFcIikuXG5cbiAgICBUbyBleGVjdXRlIG11bHRpcGxlIHRlc3QgZmlsZXMsIHNwZWNpZnkgbXVsdGlwbGUgZmlsZSBwYXRocyBvciBnbG9iIHBhdHRlcm5zLlxuXG4gICAgRnVsbCBkb2N1bWVudGF0aW9uOiBodHRwczovL3Rlc3RjYWZlLmlvL2RvY3VtZW50YXRpb24vNDAyNjM5L3JlZmVyZW5jZS9jb21tYW5kLWxpbmUtaW50ZXJmYWNlXG5gKTtcblxuaW50ZXJmYWNlIENvbW1hbmRMaW5lT3B0aW9ucyB7XG4gICAgdGVzdEdyZXA/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgZml4dHVyZUdyZXA/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgc3JjPzogc3RyaW5nW107XG4gICAgYnJvd3NlcnM/OiBzdHJpbmdbXTtcbiAgICBsaXN0QnJvd3NlcnM/OiBib29sZWFuIHwgc3RyaW5nO1xuICAgIHRlc3RNZXRhPzogc3RyaW5nIHwgRGljdGlvbmFyeTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICBmaXh0dXJlTWV0YT86IHN0cmluZyB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgZmlsdGVyPzogRnVuY3Rpb247XG4gICAgYXBwSW5pdERlbGF5Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGFzc2VydGlvblRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgc2VsZWN0b3JUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHNwZWVkPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHBhZ2VMb2FkVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBwYWdlUmVxdWVzdFRpbWVvdXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYWpheFJlcXVlc3RUaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJyb3dzZXJJbml0VGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICB0ZXN0RXhlY3V0aW9uVGltZW91dD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBydW5FeGVjdXRpb25UaW1lb3V0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGNvbmN1cnJlbmN5Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHF1YXJhbnRpbmVNb2RlPzogYm9vbGVhbiB8IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyPjtcbiAgICBwb3J0cz86IHN0cmluZyB8IG51bWJlcltdO1xuICAgIHByb3ZpZGVyTmFtZT86IHN0cmluZztcbiAgICBzc2w/OiBzdHJpbmcgfCBEaWN0aW9uYXJ5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgIHJlcG9ydGVyPzogc3RyaW5nIHwgUmVwb3J0ZXJPcHRpb25bXTtcbiAgICBzY3JlZW5zaG90cz86IERpY3Rpb25hcnk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4gfCBzdHJpbmc7XG4gICAgc2NyZWVuc2hvdFBhdGhQYXR0ZXJuPzogc3RyaW5nO1xuICAgIHNjcmVlbnNob3RzT25GYWlscz86IGJvb2xlYW47XG4gICAgdmlkZW9PcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICB2aWRlb0VuY29kaW5nT3B0aW9ucz86IHN0cmluZyB8IERpY3Rpb25hcnk8bnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbj47XG4gICAgY29tcGlsZXJPcHRpb25zPzogc3RyaW5nIHwgRGljdGlvbmFyeTxudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPjtcbiAgICBjb25maWdGaWxlPzogc3RyaW5nO1xuICAgIG5hdGl2ZUF1dG9tYXRpb24/OiBib29sZWFuO1xuICAgIHY4RmxhZ3M/OiBzdHJpbmdbXTtcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xuICAgIHNraXBKc0Vycm9ycz86IGJvb2xlYW4gfCBEaWN0aW9uYXJ5PFJlZ0V4cCB8IHN0cmluZz47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENMSUFyZ3VtZW50UGFyc2VyIHtcbiAgICBwcml2YXRlIGN3ZDogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVtb3RlQ291bnQ6IG51bWJlcjtcbiAgICBwdWJsaWMgb3B0czogQ29tbWFuZExpbmVPcHRpb25zO1xuICAgIHB1YmxpYyBhcmdzOiBzdHJpbmdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlc3RDYWZlQ29tbWFuZDogQ29tbWFuZDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoY3dkPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY3dkICAgICAgICAgPSBjd2QgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgdGhpcy5yZW1vdGVDb3VudCA9IDA7XG4gICAgICAgIHRoaXMub3B0cyAgICAgICAgPSB7fTtcbiAgICAgICAgdGhpcy5hcmdzICAgICAgICA9IFtdO1xuXG4gICAgICAgIHRoaXMudGVzdENhZmVDb21tYW5kID0gdGhpcy5fYWRkVGVzdENhZmVDb21tYW5kKCk7XG5cbiAgICAgICAgdGhpcy5fcGF0Y2hIZWxwT3V0cHV0KHRoaXMudGVzdENhZmVDb21tYW5kKTtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3NldHVwUm9vdENvbW1hbmQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfc2V0dXBSb290Q29tbWFuZCAoKTogdm9pZCB7XG4gICAgICAgIC8vIE5PVEU6IFdlIGFyZSBmb3JjZWQgdG8gc2V0IHRoZSBuYW1lIG9mIHRoZSByb290IGNvbW1hbmQgdG8gJ3Rlc3RjYWZlJ1xuICAgICAgICAvLyB0byBhdm9pZCB0aGUgYXV0b21hdGljIGNvbW1hbmQgbmFtZSBjYWxjdWxhdGlvbiB1c2luZyB0aGUgZXhlY3V0ZWQgZmlsZSBwYXRoLlxuICAgICAgICAvLyBJdCdzIG5lY2Vzc2FyeSB0byBjb3JyZWN0IGNvbW1hbmQgZGVzY3JpcHRpb24gZm9yIG5lc3RlZCBjb21tYW5kcy5cbiAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5uYW1lKENPTU1BTkRfTkFNRVMuVGVzdENhZmUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9yZW1vdmVDb21tYW5kSWZFeGlzdHMgKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBCdWcgaW4gdGhlICdjb21tYW5kZXInIG1vZHVsZS5cbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0byBhZGQgYSBmZXcgY29tbWFuZHMgd2l0aCB0aGUgc2FtZSBuYW1lLlxuICAgICAgICAvLyBBbHNvLCByZW1vdmluZyBpcyBhIGJldHRlciB0aGFuIGNvbmRpdGlvbmFsbHkgYWRkaW5nXG4gICAgICAgIC8vIGJlY2F1c2UgaXQgYWxsb3dzIGF2b2lkaW5nIHRoZSBwYXJzZWQgb3B0aW9uIGR1cGxpY2F0ZXMuXG4gICAgICAgIGNvbnN0IGluZGV4ID0gKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5jb21tYW5kcy5maW5kSW5kZXgoY21kID0+IGNtZC5uYW1lKCkgPT09IG5hbWUpO1xuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKVxuICAgICAgICAgICAgKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5jb21tYW5kcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXREZXNjcmlwdGlvbiAoKTogc3RyaW5nIHtcbiAgICAgICAgLy8gTk9URTogYWRkIGVtcHR5IGxpbmUgdG8gd29ya2Fyb3VuZCBjb21tYW5kZXItZm9yY2VkIGluZGVudGF0aW9uIG9uIHRoZSBmaXJzdCBsaW5lLlxuICAgICAgICByZXR1cm4gJ1xcbicgKyB3b3JkV3JhcChERVNDUklQVElPTiwgMiwgZ2V0Vmlld1BvcnRXaWR0aChwcm9jZXNzLnN0ZG91dCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FkZFRlc3RDYWZlQ29tbWFuZCAoKTogQ29tbWFuZCB7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9yZW1vdmVDb21tYW5kSWZFeGlzdHMoQ09NTUFORF9OQU1FUy5UZXN0Q2FmZSk7XG5cbiAgICAgICAgcmV0dXJuIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZClcbiAgICAgICAgICAgIC5jb21tYW5kKENPTU1BTkRfTkFNRVMuVGVzdENhZmUsIHsgaXNEZWZhdWx0OiB0cnVlIH0pXG4gICAgICAgICAgICAudmVyc2lvbihnZXRUZXN0Q2FmZVZlcnNpb24oKSwgJy12LCAtLXZlcnNpb24nKVxuICAgICAgICAgICAgLnVzYWdlKCdbb3B0aW9uc10gPGNvbW1hLXNlcGFyYXRlZC1icm93c2VyLWxpc3Q+IDxmaWxlLW9yLWdsb2IgLi4uPicpXG4gICAgICAgICAgICAuZGVzY3JpcHRpb24oQ0xJQXJndW1lbnRQYXJzZXIuX2dldERlc2NyaXB0aW9uKCkpXG5cbiAgICAgICAgICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgICAgICAgICAgLm9wdGlvbignLWIsIC0tbGlzdC1icm93c2VycyBbcHJvdmlkZXJdJywgJ2Rpc3BsYXkgdGhlIGxpc3Qgb2YgYWxpYXNlcyBmb3IgYXZhaWxhYmxlIGJyb3dzZXJzIGFuZCBicm93c2VyIHByb3ZpZGVycycpXG4gICAgICAgICAgICAub3B0aW9uKCctciwgLS1yZXBvcnRlciA8bmFtZVs6b3V0cHV0RmlsZV1bLC4uLl0+JywgJ3NwZWNpZnkgcmVwb3J0ZXJzIGFuZCByZXBvcnQgZmlsZW5hbWVzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1zLCAtLXNjcmVlbnNob3RzIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgc2NyZWVuc2hvdCBvcHRpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1TLCAtLXNjcmVlbnNob3RzLW9uLWZhaWxzJywgJ3Rha2UgYSBzY3JlZW5zaG90IG9uIHRlc3QgZmFpbHVyZScpXG4gICAgICAgICAgICAub3B0aW9uKCctcCwgLS1zY3JlZW5zaG90LXBhdGgtcGF0dGVybiA8cGF0dGVybj4nLCAnc3BlY2lmeSB0aGUgbmFtaW5nIHNjaGVtYSBmb3Igc2NyZWVuc2hvdCBmaWxlbmFtZXMgYW5kIHBhdGhzOiAke0JST1dTRVJ9LCAke0JST1dTRVJfVkVSU0lPTn0sICR7T1N9LCBldGMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1xLCAtLXF1YXJhbnRpbmUtbW9kZSBbb3B0aW9uPXZhbHVlLC4uLl0nLCAnZW5hYmxlIGFuZCBjb25maWd1cmUgcXVhcmFudGluZSBtb2RlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1kLCAtLWRlYnVnLW1vZGUnLCAnZW5hYmxlIGRlYnVnIG1vZGUuIFdoZW4geW91IHJ1biBUZXN0Q2FmZSBpbiBkZWJ1ZyBtb2RlLCBpdCBleGVjdXRlcyB0ZXN0IHN0ZXBzIG9uZSBieSBvbmUsIGFuZCBwYXVzZXMgdGhlIHRlc3QgYWZ0ZXIgZWFjaCBzdGVwLicpXG4gICAgICAgICAgICAub3B0aW9uKCctZSwgLS1za2lwLWpzLWVycm9ycyBbb3B0aW9uPXZhbHVlLC4uLl0nLCAnaWdub3JlIEphdmFTY3JpcHQgZXJyb3JzIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllZCBjcml0ZXJpYScpXG4gICAgICAgICAgICAub3B0aW9uKCctdSwgLS1za2lwLXVuY2F1Z2h0LWVycm9ycycsICdpZ25vcmUgdW5jYXVnaHQgZXJyb3JzIGFuZCB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy10LCAtLXRlc3QgPG5hbWU+JywgJ2ZpbHRlciB0ZXN0cyBieSBuYW1lJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1ULCAtLXRlc3QtZ3JlcCA8cGF0dGVybj4nLCAnZmlsdGVyIHRlc3RzIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvbicpXG4gICAgICAgICAgICAub3B0aW9uKCctZiwgLS1maXh0dXJlIDxuYW1lPicsICdmaWx0ZXIgZml4dHVyZXMgYnkgbmFtZScpXG4gICAgICAgICAgICAub3B0aW9uKCctRiwgLS1maXh0dXJlLWdyZXAgPHBhdHRlcm4+JywgJ2ZpbHRlciBmaXh0dXJlcyBieSByZWd1bGFyIGV4cHJlc3Npb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLWEsIC0tYXBwIDxjb21tYW5kPicsICdleGVjdXRlIGEgc2hlbGwgY29tbWFuZCBvbiBzdGFydHVwIHRvIGxhdW5jaCBhIHdlYiBhcHBsaWNhdGlvbiBvciBwZXJmb3JtIG90aGVyIHByZXBhcmF0b3J5IHRhc2tzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy1jLCAtLWNvbmN1cnJlbmN5IDxudW1iZXI+JywgJ3J1biB0ZXN0cyBjb25jdXJyZW50bHknKVxuICAgICAgICAgICAgLm9wdGlvbignLUwsIC0tbGl2ZScsICdlbmFibGUgbGl2ZSBtb2RlLiBMaXZlIG1vZGUgcmVzdGFydHMgdGVzdHMgd2hlbiB5b3UgbWFrZSBjaGFuZ2VzIHRvIHRlc3QgZmlsZXMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tdGVzdC1tZXRhIDxrZXk9dmFsdWVbLGtleTI9dmFsdWUyLC4uLl0+JywgJ2ZpbHRlciB0ZXN0cyBieSBtZXRhZGF0YScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWZpeHR1cmUtbWV0YSA8a2V5PXZhbHVlWyxrZXkyPXZhbHVlMiwuLi5dPicsICdmaWx0ZXIgZml4dHVyZXMgYnkgbWV0YWRhdGEnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kZWJ1Zy1vbi1mYWlsJywgJ3BhdXNlIHRlc3RzIG9uIGZhaWx1cmUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLW5hdGl2ZS1hdXRvbWF0aW9uJywgJ2Rpc2FibGUgbmF0aXZlIGF1dG9tYXRpb24nKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hcHAtaW5pdC1kZWxheSA8bXM+JywgJ3NwZWNpZnkgeW91ciBhcHBsaWNhdGlvbmBzIGluaXRpYWxpemF0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZWxlY3Rvci10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSBTZWxlY3RvciByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hc3NlcnRpb24tdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gQXNzZXJ0aW9uIHJlc29sdXRpb24gdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXBhZ2UtbG9hZC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW4gdGhlIHdpbmRvdy5sb2FkIGV2ZW50IGFuZCB0aGUgRE9NQ29udGVudExvYWRlZCBldmVudCAobXMpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcGFnZS1yZXF1ZXN0LXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHBhZ2UgcmVxdWVzdCByZXNvbHV0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1hamF4LXJlcXVlc3QtdGltZW91dCA8bXM+JywgJ3NwZWNpZnkgdGhlIG1heGltdW0gQUpBWCByZXF1ZXN0IHJlc29sdXRpb24gdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWJyb3dzZXItaW5pdC10aW1lb3V0IDxtcz4nLCAnc3BlY2lmeSB0aGUgbWF4aW11bSBicm93c2VyIHN0YXJ0dXAgdGltZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLXRlc3QtZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHRlc3QgZXhlY3V0aW9uIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1ydW4tZXhlY3V0aW9uLXRpbWVvdXQgPG1zPicsICdzcGVjaWZ5IHRoZSBtYXhpbXVtIHRlc3QgcnVuIHRpbWUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zcGVlZCA8ZmFjdG9yPicsICdzZXQgdGVzdCBleGVjdXRpb24gc3BlZWQgKDAuMDEgLi4uIDEpJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcG9ydHMgPHBvcnQxLHBvcnQyPicsICdzcGVjaWZ5IG5ldHdvcmsgcG9ydHMgdG8gdXNlIGR1cmluZyB0aGUgdGVzdCBydW4uIFRoZSBzZWNvbmQgcG9ydCBpcyBuZWNlc3NhcnkgdG8gYWNjZXNzIGNyb3NzLWRvbWFpbiByZXNvdXJjZXMuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0taG9zdG5hbWUgPG5hbWU+JywgYHNwZWNpZnkgeW91ciBob3N0bmFtZS4gTmVjZXNzYXJ5IHRvIHJ1biB0ZXN0cyBpbiByZW1vdGUgYnJvd3NlcnMuYClcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHkgPGhvc3Q+JywgJ3NwZWNpZnkgdGhlIHByb3h5IHNlcnZlciBob3N0bmFtZSBvciBJUCBhZGRyZXNzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tcHJveHktYnlwYXNzIDxydWxlcz4nLCAnc3BlY2lmeSBVUkxzIHRoYXQgYnlwYXNzIHRoZSBwcm94eSBzZXJ2ZXInKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zc2wgPG9wdGlvbnM+JywgJ3NwZWNpZnkgU1NMIG9wdGlvbnMgdG8gcnVuIFRlc3RDYWZlIG92ZXIgSFRUUFMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlbyA8cGF0aD4nLCAncmVjb3JkIHZpZGVvcyBvZiB0ZXN0IHJ1bnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gcmVjb3JkaW5nIG9wdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS12aWRlby1lbmNvZGluZy1vcHRpb25zIDxvcHRpb249dmFsdWVbLC4uLl0+JywgJ3NwZWNpZnkgdmlkZW8gZW5jb2Rpbmcgb3B0aW9ucycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRldicsICdsb2cgYW5kIGRpYWdub3NlIFRlc3RDYWZlIGVycm9ycycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXFyLWNvZGUnLCAnb3V0cHV0IFFSIGNvZGVzIHdpdGggVVJMcyBmb3IgcmVtb3RlIGJyb3dzZXIgY29ubmVjdGlvbnMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zZiwgLS1zdG9wLW9uLWZpcnN0LWZhaWwnLCAnc3RvcCB0aGUgdGVzdCBydW4gaWYgYW55IHRlc3QgZmFpbHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jb25maWctZmlsZSA8cGF0aD4nLCAnc3BlY2lmeSBhIGN1c3RvbSBwYXRoIHRvIHRoZSB0ZXN0Y2FmZSBjb25maWd1cmF0aW9uIGZpbGUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS10cy1jb25maWctcGF0aCA8cGF0aD4nLCAnc3BlY2lmeSB0aGUgcGF0aCB0byBhIGN1c3RvbSBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZScpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNzLCAtLWNsaWVudC1zY3JpcHRzIDxwYXRocz4nLCAnaW5qZWN0IGNsaWVudC1zaWRlIHNjcmlwdHMgaW50byB0aGUgcGFnZScsIHBhcnNlTGlzdCwgW10pXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1jYWNoaW5nJywgJ2RvIG5vdCBjYWNoZSBwYWdlcycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWRpc2FibGUtcGFnZS1yZWxvYWRzJywgJ2RvIG5vdCByZWxvYWQgcGFnZXMgYmV0d2VlbiB0ZXN0cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLXJldHJ5LXRlc3QtcGFnZXMnLCAncmV0cnkgcGFnZSByZXF1ZXN0cyBpbiBjYXNlIG9mIGZhaWx1cmUnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1kaXNhYmxlLXNjcmVlbnNob3RzJywgJ2Rpc2FibGUgc2NyZWVuc2hvdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1zY3JlZW5zaG90cy1mdWxsLXBhZ2UnLCAnZW5hYmxlIGZ1bGwtcGFnZSBzY3JlZW5zaG90cycpXG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbXBpbGVyLW9wdGlvbnMgPG9wdGlvbj12YWx1ZVssLi4uXT4nLCAnc3BlY2lmeSB0ZXN0IGNvbXBpbGF0aW9uIHNldHRpbmdzJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1tdWx0aXBsZS13aW5kb3dzJywgJ2Rpc2FibGUgdGhlIG11bHRpLXdpbmRvdyBtb2RlJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZGlzYWJsZS1odHRwMicsICdmb3JjZSB0aGUgcHJveHkgdG8gaXNzdWUgSFRUUC8xLjEgcmVxdWVzdHMnKVxuICAgICAgICAgICAgLm9wdGlvbignLS1jYWNoZScsICdjYWNoZSB3ZWIgYXNzZXRzIGJldHdlZW4gdGVzdCBydW5zJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tYmFzZS11cmwgPHVybD4nLCAnc2V0IHRoZSBiYXNlIHVybCBmb3IgdGhlIHRlc3QgcnVuJylcbiAgICAgICAgICAgIC5vcHRpb24oJy0tZXNtJywgJ2VuYWJsZSBFU00gbW9kdWxlIHN1cHBvcnQnKVxuXG4gICAgICAgICAgICAvLyBOT1RFOiB0aGVzZSBvcHRpb25zIHdpbGwgYmUgaGFuZGxlZCBieSBjaGFsayBpbnRlcm5hbGx5XG4gICAgICAgICAgICAub3B0aW9uKCctLWNvbG9yJywgJ2ZvcmNlIFRlc3RDYWZlIHRvIGZvcm1hdCBDTEkgb3V0cHV0IHdpdGggY29sb3InKVxuICAgICAgICAgICAgLm9wdGlvbignLS1uby1jb2xvcicsICdkaXNhYmxlIHRleHQgY29sb3IgZm9ybWF0dGluZyBpbiB0aGUgQ0xJJylcblxuICAgICAgICAgICAgLy8gTk9URTogVGVtcG9yYXJpbHkgZXhjbHVkZSBleHBlcmltZW50YWwgb3B0aW9ucyBmcm9tIC0taGVscCBvdXRwdXRcbiAgICAgICAgICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1kaXNhYmxlLWNyb3NzLWRvbWFpbicsICdleHBlcmltZW50YWwnKS5oaWRlSGVscCgpKVxuICAgICAgICAgICAgLmFjdGlvbigob3B0czogQ29tbWFuZExpbmVPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRzID0gb3B0cztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhdGNoSGVscE91dHB1dCAoZGVmYXVsdFN1YkNvbW1hbmQ6IENvbW1hbmQpOiB2b2lkIHtcbiAgICAgICAgLy8gTk9URTogSW4gdGhlIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgJ2NvbW1hbmRlcicgbW9kdWxlXG4gICAgICAgIC8vIG5lZWQgdG8gaW52ZXN0aWdhdGUgaG93IHRvIHJlbW92ZSB0aGlzIGhhY2suXG4gICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkub3V0cHV0SGVscCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlZFBhcmVudCA9IGRlZmF1bHRTdWJDb21tYW5kLnBhcmVudDtcblxuICAgICAgICAgICAgZGVmYXVsdFN1YkNvbW1hbmQucGFyZW50ID0gbnVsbDtcblxuICAgICAgICAgICAgZGVmYXVsdFN1YkNvbW1hbmQub3V0cHV0SGVscCgpO1xuXG4gICAgICAgICAgICBkZWZhdWx0U3ViQ29tbWFuZC5wYXJlbnQgPSBzdG9yZWRQYXJlbnQ7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tBbmRDb3VudFJlbW90ZXMgKGJyb3dzZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCByZW1vdGVNYXRjaCA9IGJyb3dzZXIubWF0Y2goUkVNT1RFX0FMSUFTX1JFKTtcblxuICAgICAgICBpZiAocmVtb3RlTWF0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3RlQ291bnQgKz0gcGFyc2VJbnQocmVtb3RlTWF0Y2hbMV0sIDEwKSB8fCAxO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX3BhcnNlRmlsdGVyaW5nT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMudGVzdEdyZXApXG4gICAgICAgICAgICB0aGlzLm9wdHMudGVzdEdyZXAgPSBnZXRHcmVwT3B0aW9ucygnLS10ZXN0LWdyZXAnLCB0aGlzLm9wdHMudGVzdEdyZXAgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLmZpeHR1cmVHcmVwKVxuICAgICAgICAgICAgdGhpcy5vcHRzLmZpeHR1cmVHcmVwID0gZ2V0R3JlcE9wdGlvbnMoJy0tZml4dHVyZS1ncmVwJywgdGhpcy5vcHRzLmZpeHR1cmVHcmVwIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy50ZXN0TWV0YSlcbiAgICAgICAgICAgIHRoaXMub3B0cy50ZXN0TWV0YSA9IGF3YWl0IGdldE1ldGFPcHRpb25zKCctLXRlc3QtbWV0YScsIHRoaXMub3B0cy50ZXN0TWV0YSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMuZml4dHVyZU1ldGEpXG4gICAgICAgICAgICB0aGlzLm9wdHMuZml4dHVyZU1ldGEgPSBhd2FpdCBnZXRNZXRhT3B0aW9ucygnLS1maXh0dXJlLW1ldGEnLCB0aGlzLm9wdHMuZml4dHVyZU1ldGEgYXMgc3RyaW5nKTtcblxuICAgICAgICB0aGlzLm9wdHMuZmlsdGVyID0gZ2V0RmlsdGVyRm4odGhpcy5vcHRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUFwcEluaXREZWxheSAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuYXBwSW5pdERlbGF5KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHRlc3RlZCBhcHAgaW5pdGlhbGl6YXRpb24gZGVsYXknLCB0aGlzLm9wdHMuYXBwSW5pdERlbGF5KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLmFwcEluaXREZWxheSA9IHBhcnNlSW50KHRoaXMub3B0cy5hcHBJbml0RGVsYXkgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVNlbGVjdG9yVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIFNlbGVjdG9yIHRpbWVvdXQnLCB0aGlzLm9wdHMuc2VsZWN0b3JUaW1lb3V0KTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnNlbGVjdG9yVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5zZWxlY3RvclRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUFzc2VydGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgYXNzZXJ0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMuYXNzZXJ0aW9uVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5hc3NlcnRpb25UaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLmFzc2VydGlvblRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVBhZ2VMb2FkVGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHBhZ2UgbG9hZCB0aW1lb3V0JywgdGhpcy5vcHRzLnBhZ2VMb2FkVGltZW91dCk7XG5cbiAgICAgICAgICAgIHRoaXMub3B0cy5wYWdlTG9hZFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMucGFnZUxvYWRUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VQYWdlUmVxdWVzdFRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlclN0cmluZywgbnVsbCwgJ1RoZSBwYWdlIHJlcXVlc3QgdGltZW91dCcsIHRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMub3B0cy5wYWdlUmVxdWVzdFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMucGFnZVJlcXVlc3RUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQWpheFJlcXVlc3RUaW1lb3V0ICgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgQUpBWCByZXF1ZXN0IHRpbWVvdXQnLCB0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLm9wdHMuYWpheFJlcXVlc3RUaW1lb3V0ID0gcGFyc2VJbnQodGhpcy5vcHRzLmFqYXhSZXF1ZXN0VGltZW91dCBhcyBzdHJpbmcsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUJyb3dzZXJJbml0VGltZW91dCAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLmJyb3dzZXJJbml0VGltZW91dClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIGJyb3dzZXIgaW5pdGlhbGl6YXRpb24gdGltZW91dCcsIHRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMub3B0cy5icm93c2VySW5pdFRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMuYnJvd3NlckluaXRUaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlVGVzdEV4ZWN1dGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnRlc3RFeGVjdXRpb25UaW1lb3V0KSB7XG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyU3RyaW5nLCBudWxsLCAnVGhlIHRlc3QgZXhlY3V0aW9uIHRpbWVvdXQnLCB0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQgPSBwYXJzZUludCh0aGlzLm9wdHMudGVzdEV4ZWN1dGlvblRpbWVvdXQgYXMgc3RyaW5nLCAxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZVJ1bkV4ZWN1dGlvblRpbWVvdXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQpIHtcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXJTdHJpbmcsIG51bGwsICdUaGUgcnVuIGV4ZWN1dGlvbiB0aW1lb3V0JywgdGhpcy5vcHRzLnJ1bkV4ZWN1dGlvblRpbWVvdXQpO1xuXG4gICAgICAgICAgICB0aGlzLm9wdHMucnVuRXhlY3V0aW9uVGltZW91dCA9IHBhcnNlSW50KHRoaXMub3B0cy5ydW5FeGVjdXRpb25UaW1lb3V0IGFzIHN0cmluZywgMTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VTcGVlZCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc3BlZWQpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc3BlZWQgPSBwYXJzZUZsb2F0KHRoaXMub3B0cy5zcGVlZCBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQ29uY3VycmVuY3kgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLmNvbmN1cnJlbmN5KVxuICAgICAgICAgICAgdGhpcy5vcHRzLmNvbmN1cnJlbmN5ID0gcGFyc2VJbnQodGhpcy5vcHRzLmNvbmN1cnJlbmN5IGFzIHN0cmluZywgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlUXVhcmFudGluZU9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnF1YXJhbnRpbmVNb2RlICE9PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLm9wdHMucXVhcmFudGluZU1vZGUgPSBhd2FpdCBnZXRRdWFyYW50aW5lT3B0aW9ucygnLS1xdWFyYW50aW5lLW1vZGUnLCB0aGlzLm9wdHMucXVhcmFudGluZU1vZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlU2tpcEpzRXJyb3JzT3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc2tpcEpzRXJyb3JzICE9PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2tpcEpzRXJyb3JzID0gYXdhaXQgZ2V0U2tpcEpzRXJyb3JzT3B0aW9ucygnLS1za2lwLWpzLWVycm9ycycsIHRoaXMub3B0cy5za2lwSnNFcnJvcnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlUG9ydHMgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnBvcnRzKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRQb3J0cyA9ICh0aGlzLm9wdHMucG9ydHMgYXMgc3RyaW5nKSAvKiBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWV4dHJhLXBhcmVucyAqL1xuICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgLm1hcChwYXJzZVBvcnROdW1iZXIpO1xuXG4gICAgICAgICAgICBpZiAocGFyc2VkUG9ydHMubGVuZ3RoIDwgMilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLnBvcnRzT3B0aW9uUmVxdWlyZXNUd29OdW1iZXJzKTtcblxuICAgICAgICAgICAgdGhpcy5vcHRzLnBvcnRzID0gcGFyc2VkUG9ydHMgYXMgbnVtYmVyW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUJyb3dzZXJzRnJvbUFyZ3MgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBicm93c2Vyc0FyZyA9IHRoaXMudGVzdENhZmVDb21tYW5kLmFyZ3NbMF0gfHwgJyc7XG5cbiAgICAgICAgdGhpcy5vcHRzLmJyb3dzZXJzID0gc3BsaXRRdW90ZWRUZXh0KGJyb3dzZXJzQXJnLCAnLCcpXG4gICAgICAgICAgICAuZmlsdGVyKGJyb3dzZXIgPT4gYnJvd3NlciAmJiB0aGlzLl9jaGVja0FuZENvdW50UmVtb3Rlcyhicm93c2VyKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9wYXJzZVNzbE9wdGlvbnMgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnNzbClcbiAgICAgICAgICAgIHRoaXMub3B0cy5zc2wgPSBhd2FpdCBnZXRTU0xPcHRpb25zKHRoaXMub3B0cy5zc2wgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9wYXJzZVJlcG9ydGVycyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVycyA9IHRoaXMub3B0cy5yZXBvcnRlciA/ICh0aGlzLm9wdHMucmVwb3J0ZXIgYXMgc3RyaW5nKS5zcGxpdCgnLCcpIDogW107IC8qIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXh0cmEtcGFyZW5zKi9cblxuICAgICAgICB0aGlzLm9wdHMucmVwb3J0ZXIgPSByZXBvcnRlcnMubWFwKChyZXBvcnRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JJbmRleCA9IHJlcG9ydGVyLmluZGV4T2YoJzonKTtcblxuICAgICAgICAgICAgaWYgKHNlcGFyYXRvckluZGV4IDwgMClcbiAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lOiByZXBvcnRlciB9O1xuXG4gICAgICAgICAgICBjb25zdCBuYW1lICAgPSByZXBvcnRlci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9ySW5kZXgpO1xuICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gcmVwb3J0ZXIuc3Vic3RyaW5nKHNlcGFyYXRvckluZGV4ICsgMSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7IG5hbWUsIG91dHB1dCB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUZpbGVMaXN0ICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcHRzLnNyYyA9IHRoaXMudGVzdENhZmVDb21tYW5kLmFyZ3Muc2xpY2UoMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcGFyc2VTY3JlZW5zaG90T3B0aW9ucyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMuc2NyZWVuc2hvdHMpXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHMgPSBhd2FpdCBnZXRTY3JlZW5zaG90T3B0aW9ucyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLm9wdHMuc2NyZWVuc2hvdHMgPSB7fTtcblxuICAgICAgICBpZiAoIWhhcyh0aGlzLm9wdHMuc2NyZWVuc2hvdHMsIFNDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnBhdGhQYXR0ZXJuKSAmJiB0aGlzLm9wdHMuc2NyZWVuc2hvdFBhdGhQYXR0ZXJuKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnNjcmVlbnNob3RzW1NDUkVFTlNIT1RfT1BUSU9OX05BTUVTLnBhdGhQYXR0ZXJuXSA9IHRoaXMub3B0cy5zY3JlZW5zaG90UGF0aFBhdHRlcm47XG5cbiAgICAgICAgaWYgKCFoYXModGhpcy5vcHRzLnNjcmVlbnNob3RzLCBTQ1JFRU5TSE9UX09QVElPTl9OQU1FUy50YWtlT25GYWlscykgJiYgdGhpcy5vcHRzLnNjcmVlbnNob3RzT25GYWlscylcbiAgICAgICAgICAgIHRoaXMub3B0cy5zY3JlZW5zaG90c1tTQ1JFRU5TSE9UX09QVElPTl9OQU1FUy50YWtlT25GYWlsc10gPSB0aGlzLm9wdHMuc2NyZWVuc2hvdHNPbkZhaWxzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlVmlkZW9PcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy52aWRlb09wdGlvbnMpXG4gICAgICAgICAgICB0aGlzLm9wdHMudmlkZW9PcHRpb25zID0gYXdhaXQgZ2V0VmlkZW9PcHRpb25zKHRoaXMub3B0cy52aWRlb09wdGlvbnMgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zKVxuICAgICAgICAgICAgdGhpcy5vcHRzLnZpZGVvRW5jb2RpbmdPcHRpb25zID0gYXdhaXQgZ2V0VmlkZW9PcHRpb25zKHRoaXMub3B0cy52aWRlb0VuY29kaW5nT3B0aW9ucyBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3BhcnNlQ29tcGlsZXJPcHRpb25zICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuY29tcGlsZXJPcHRpb25zKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHBhcnNlZENvbXBpbGVyT3B0aW9ucyA9IGF3YWl0IGdldENvbXBpbGVyT3B0aW9ucyh0aGlzLm9wdHMuY29tcGlsZXJPcHRpb25zIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IHJlc3VsdENvbXBpbGVyT3B0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyc2VkQ29tcGlsZXJPcHRpb25zKSlcbiAgICAgICAgICAgIHNldChyZXN1bHRDb21waWxlck9wdGlvbnMsIGtleSwgdmFsdWUpO1xuXG4gICAgICAgIHRoaXMub3B0cy5jb21waWxlck9wdGlvbnMgPSByZXN1bHRDb21waWxlck9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VMaXN0QnJvd3NlcnMgKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsaXN0QnJvd3Nlck9wdGlvbiA9IHRoaXMub3B0cy5saXN0QnJvd3NlcnM7XG5cbiAgICAgICAgdGhpcy5vcHRzLmxpc3RCcm93c2VycyA9ICEhdGhpcy5vcHRzLmxpc3RCcm93c2VycztcblxuICAgICAgICBpZiAoIXRoaXMub3B0cy5saXN0QnJvd3NlcnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5vcHRzLnByb3ZpZGVyTmFtZSA9IHR5cGVvZiBsaXN0QnJvd3Nlck9wdGlvbiA9PT0gJ3N0cmluZycgPyBsaXN0QnJvd3Nlck9wdGlvbiA6ICdsb2NhbGx5LWluc3RhbGxlZCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3ByZXBhcmVCb29sZWFuT3JPYmplY3RPcHRpb24gKGFyZ3Y6IHN0cmluZ1tdLCBvcHRpb25OYW1lczogc3RyaW5nW10sIHN1Yk9wdGlvbnNOYW1lczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgLy8gTk9URTogbW92ZSBvcHRpb25zIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5IHRvIGNvcnJlY3RseSBwYXJzZSBib3RoIEJvb2xlYW4gYW5kIE9iamVjdCB0eXBlIGFyZ3VtZW50cyAoR0gtNjIzMSlcbiAgICAgICAgY29uc3Qgb3B0aW9uSW5kZXggPSBhcmd2LmZpbmRJbmRleChcbiAgICAgICAgICAgIGVsID0+IG9wdGlvbk5hbWVzLnNvbWUob3B0ID0+IGVsLnN0YXJ0c1dpdGgob3B0KSkpO1xuXG4gICAgICAgIGlmIChvcHRpb25JbmRleCA+IC0xICYmIHNob3VsZE1vdmVPcHRpb25Ub0VuZChhcmd2LCBvcHRpb25JbmRleCwgc3ViT3B0aW9uc05hbWVzKSlcbiAgICAgICAgICAgIGFyZ3YucHVzaChhcmd2LnNwbGljZShvcHRpb25JbmRleCwgMSlbMF0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwYXJzZSAoYXJndjogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgQ0xJQXJndW1lbnRQYXJzZXIuX3ByZXBhcmVCb29sZWFuT3JPYmplY3RPcHRpb24oYXJndiwgWyctcScsICctLXF1YXJhbnRpbmUtbW9kZSddLCBPYmplY3QudmFsdWVzKFFVQVJBTlRJTkVfT1BUSU9OX05BTUVTKSk7XG4gICAgICAgIENMSUFyZ3VtZW50UGFyc2VyLl9wcmVwYXJlQm9vbGVhbk9yT2JqZWN0T3B0aW9uKGFyZ3YsIFsnLWUnLCAnLS1za2lwLWpzLWVycm9ycyddLCBPYmplY3QudmFsdWVzKFNLSVBfSlNfRVJST1JTX09QVElPTlNfT0JKRUNUX09QVElPTl9OQU1FUykpO1xuXG4gICAgICAgIGNvbnN0IHsgYXJncywgdjhGbGFncyB9ID0gZXh0cmFjdE5vZGVQcm9jZXNzQXJndW1lbnRzKGFyZ3YpO1xuXG4gICAgICAgIChwcm9ncmFtIGFzIHVua25vd24gYXMgQ29tbWFuZCkucGFyc2UoYXJncyk7XG5cbiAgICAgICAgdGhpcy5hcmdzID0gKHByb2dyYW0gYXMgdW5rbm93biBhcyBDb21tYW5kKS5hcmdzO1xuICAgICAgICB0aGlzLm9wdHMgPSBPYmplY3QuYXNzaWduKHRoaXMub3B0cywgeyB2OEZsYWdzIH0pO1xuXG4gICAgICAgIHRoaXMuX3BhcnNlTGlzdEJyb3dzZXJzKCk7XG5cbiAgICAgICAgLy8gTk9URTogdGhlICctLWxpc3QtYnJvd3NlcnMnIG9wdGlvbiBvbmx5IGxpc3RzIGJyb3dzZXJzIGFuZCBpbW1lZGlhdGVseSBleGl0cyB0aGUgYXBwLlxuICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIGRvbid0IG5lZWQgdG8gcHJvY2VzcyBvdGhlciBhcmd1bWVudHMuXG4gICAgICAgIGlmICh0aGlzLm9wdHMubGlzdEJyb3dzZXJzKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuX3BhcnNlU2VsZWN0b3JUaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQXNzZXJ0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBhZ2VMb2FkVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVBhZ2VSZXF1ZXN0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFqYXhSZXF1ZXN0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUJyb3dzZXJJbml0VGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZVRlc3RFeGVjdXRpb25UaW1lb3V0KCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUnVuRXhlY3V0aW9uVGltZW91dCgpO1xuICAgICAgICB0aGlzLl9wYXJzZUFwcEluaXREZWxheSgpO1xuICAgICAgICB0aGlzLl9wYXJzZVNwZWVkKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlUG9ydHMoKTtcbiAgICAgICAgdGhpcy5fcGFyc2VCcm93c2Vyc0Zyb21BcmdzKCk7XG4gICAgICAgIHRoaXMuX3BhcnNlQ29uY3VycmVuY3koKTtcbiAgICAgICAgdGhpcy5fcGFyc2VGaWxlTGlzdCgpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlRmlsdGVyaW5nT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVF1YXJhbnRpbmVPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU2tpcEpzRXJyb3JzT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVNjcmVlbnNob3RPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlVmlkZW9PcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlQ29tcGlsZXJPcHRpb25zKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3BhcnNlU3NsT3B0aW9ucygpO1xuICAgICAgICBhd2FpdCB0aGlzLl9wYXJzZVJlcG9ydGVycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSdW5PcHRpb25zICgpOiBSdW5uZXJSdW5PcHRpb25zIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICBSVU5fT1BUSU9OX05BTUVTLmZvckVhY2gob3B0aW9uTmFtZSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uTmFtZSBpbiB0aGlzLm9wdHMpXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBhIGhhY2sgdG8gYWRkIGFuIGluZGV4IHNpZ25hdHVyZSB0byBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgICByZXN1bHRbb3B0aW9uTmFtZV0gPSB0aGlzLm9wdHNbb3B0aW9uTmFtZV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQgYXMgUnVubmVyUnVuT3B0aW9ucztcbiAgICB9XG59XG4iXX0=
@@ -3187,6 +3187,7 @@ window['%hammerhead%'].utils.removeInjectedScript();
3187
3187
  var messageSandbox$1 = eventSandbox.message;
3188
3188
  var MOUSE_EVENT_OPTIONS = {
3189
3189
  clickCount: 1,
3190
+ force: 0.5,
3190
3191
  };
3191
3192
  var CALCULATE_TOP_LEFT_POINT_REQUEST_CMD = 'native-automation|calculate-top-left-point|request';
3192
3193
  var CALCULATE_TOP_LEFT_POINT_RESPONSE_CMD = 'native-automation|calculate-top-left-point|response';