oxygen-cli 1.23.2 → 1.24.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.24.2 (2022-08-05)
4
+
5
+ #### :tada: New Feature
6
+ * Add `web.isInteractable`.
7
+
8
+ #### :beetle: Bug Fix
9
+ * Fixed MODULE_NOT_INITIALIZED error when running multiple tests which reference an external script containing `*.init` commands.
10
+
11
+ #### :house: Internal
12
+ * Bump dependencies.
13
+
14
+ ## v1.24.1 (2022-07-29)
15
+
16
+ #### :beetle: Bug Fix
17
+ * Closing bracket indentation in `log.*` output.
18
+ * Handing of objects with circular references in `log.*` commands.
19
+ * `web.assertTextPresent` and `web.assertTextNotPresent` not properly restoring timeouts on exit.
20
+
21
+ #### :house: Internal
22
+ * Bump dependencies.
23
+
24
+ ## v1.24.0 (2022-07-19)
25
+
26
+ #### :tada: New Feature
27
+ * Add `twilio.getLastSentApiSms` (by Akiva Brookler).
28
+
29
+ #### :house: Internal
30
+ * Bump dependencies.
31
+
3
32
  ## v1.23.2 (2022-06-17)
4
33
 
5
34
  #### :beetle: Bug Fix
package/build/lib/util.js CHANGED
@@ -210,10 +210,21 @@ var self = module.exports = {
210
210
  return value;
211
211
  }, indentation);
212
212
  str = str.replace(/^\[{1}\s*|\s*\]{1}$/g, '');
213
+
214
+ if (str.endsWith(' }')) {
215
+ str = str.substring(0, str.length - 3) + '}';
216
+ }
217
+
218
+ if (str.endsWith(' ]')) {
219
+ str = str.substring(0, str.length - 3) + ']';
220
+ }
221
+
213
222
  str = str.replace(/"__UNDEFINED"/g, 'undefined');
214
223
  } catch (e) {
215
224
  console.warn('Failed to serialize command arguments: ', e);
216
- str = e.toString();
225
+ return util.inspect(args[0], {
226
+ depth: 3
227
+ });
217
228
  }
218
229
 
219
230
  return str;
@@ -356,4 +367,4 @@ var self = module.exports = {
356
367
  return new Promise(resolve => setTimeout(resolve, timeout));
357
368
  }
358
369
  };
359
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbC5qcyJdLCJuYW1lcyI6WyJwYXRoIiwicmVxdWlyZSIsImZzIiwibW9tZW50IiwiY3J5cHRvIiwidXRpbCIsInBhc3N3b3JkIiwiZW5jcnlwdGlvbktleSIsImtleSIsInNjcnlwdFN5bmMiLCJpdiIsIkJ1ZmZlciIsImFsbG9jIiwiYWxnb3JpdGhtIiwiRGVjcnlwdFJlc3VsdCIsInJlc3VsdCIsImRlY3J5cHRSZXN1bHQiLCJnZXREZWNyeXB0UmVzdWx0IiwiRFVNTVlfSE9PS1MiLCJiZWZvcmVUZXN0IiwiYmVmb3JlU3VpdGUiLCJiZWZvcmVDYXNlIiwiYmVmb3JlQ29tbWFuZCIsImFmdGVyQ29tbWFuZCIsImFmdGVyVGVzdCIsImFmdGVyU3VpdGUiLCJhZnRlckNhc2UiLCJzZWxmIiwibW9kdWxlIiwiZXhwb3J0cyIsImdlbmVyYXRlVW5pcXVlSWQiLCJyYW5kb21CeXRlcyIsInRvU3RyaW5nIiwiZ2V0VGltZVN0YW1wIiwidXRjIiwidmFsdWVPZiIsImdlbmVyYXRlVGVzdFN1aXRlRnJvbUpzb24iLCJzdWl0ZURlZiIsInRlc3RDb25maWciLCJpdGVyYXRpb25Db3VudCIsInN1aXRlIiwiaWQiLCJuYW1lIiwiaXRlcmF0aW9ucyIsInN1aXRlRmlsZVBhdGgiLCJqb2luIiwidGFyZ2V0IiwiY3dkIiwicGFyYW1NYW5hZ2VyIiwiZ2V0UGFyYW1ldGVyTWFuYWdlciIsInBhcmFtZXRlcnMiLCJnZXRNb2RlIiwicm93cyIsImNhcGFiaWxpdGllcyIsImVudmlyb25tZW50Iiwib3B0aW9ucyIsInBhcmFsbGVsIiwiY29uY3VycmVuY3kiLCJjYXNlcyIsImZvckVhY2giLCJjYXNlRGVmIiwidGMiLCJnZXRGaWxlTmFtZVdpdGhvdXRFeHQiLCJyZXNvbHZlUGF0aCIsImZvcm1hdCIsInB1c2giLCJnZW5lcmF0ZVRlc3RTdWl0ZUZyb21KU0ZpbGUiLCJmaWxlUGF0aCIsInBhcmFtRmlsZSIsInBhcmFtTW9kZSIsIm5vUGFyYW1BdXRvU2VhcmNoIiwiZmlsZU5hbWVOb0V4dCIsInRlc3RjYXNlIiwicmVvcGVuU2Vzc2lvbiIsImRpcm5hbWUiLCJmaWxlIiwibW9kZSIsIm1haW5GaWxlUGF0aCIsInBhcmFtT3B0cyIsImF1dG9TZWFyY2giLCJwYXJhbUZpbGVQYXRoIiwiaXNBYnNvbHV0ZSIsImxvYWRQYXJhbWV0ZXJNYW5hZ2VyIiwiZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbkZpbGUiLCJmaWxlTmFtZSIsImJhc2VuYW1lIiwiZmlsZUV4dCIsImV4dG5hbWUiLCJmaWxlUGF0aE5vRXh0Iiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJtYWluRmlsZSIsImNzdlBhcmFtRmlsZSIsInR4dFBhcmFtRmlsZSIsInhsc1BhcmFtRmlsZSIsInhsc3hQYXJhbUZpbGUiLCJleGlzdHNTeW5jIiwiaW5pdCIsInBhdGhUb1Jlc29sdmUiLCJiYXNlRm9sZGVyIiwicmVzb2x2ZSIsIm1ha2VTZXJpYWxpemFibGUiLCJlcnIiLCJkZXN0cm95Q2lyY3VsYXIiLCJmcm9tIiwic2VlbiIsInRvIiwiQXJyYXkiLCJpc0FycmF5IiwiT2JqZWN0Iiwia2V5cyIsImluZGV4T2YiLCJzbGljZSIsImdldE1ldGhvZFNpZ25hdHVyZSIsIm1vZHVsZU5hbWUiLCJtZXRob2ROYW1lIiwibWV0aG9kQXJncyIsInN0cmluZ2lmeSIsImFyZ3MiLCJpbmRlbnRhdGlvbiIsInN0ciIsIkpTT04iLCJ2YWx1ZSIsIkVycm9yIiwiUmVnRXhwIiwic291cmNlIiwiZmxhZ3MiLCJyZXBsYWNlIiwiZSIsImNvbnNvbGUiLCJ3YXJuIiwiaXNJbkRlYnVnTW9kZSIsImxvYWRUZXN0SG9va3MiLCJob29rcyIsImV4ZWN1dGVUZXN0SG9vayIsIm1ldGhvZCIsImdsb2JhbCIsImNoYWlBbmRNb2NrZXJ5TG9hZGVkIiwiY2hhaSIsIm1vY2tlcnkiLCJlbmFibGUiLCJ1c2VDbGVhbkNhY2hlIiwid2Fybk9uUmVwbGFjZSIsIndhcm5PblVucmVnaXN0ZXJlZCIsInJlZ2lzdGVyTW9jayIsImFwcGx5IiwidW5kZWZpbmVkIiwiZXJyb3IiLCJnZXRPeE1vZHVsZXNEaXIiLCJfX2Rpcm5hbWUiLCJob29rTG9ncyIsImxvZ2dlciIsIm9yaWdsb2ciLCJsb2ciLCJvcmlnRGVidWciLCJkZWJ1ZyIsIm9yaWdJbmZvIiwiaW5mbyIsIm9yaWdXYXJuIiwib3JpZ0Vycm9yIiwicHJvY2Vzc0FyZ3MiLCJhcmd1bWVudEFycmF5IiwibWFwIiwiaXRlbSIsImluc3BlY3QiLCJtYWtlVHJhbnNhY3Rpb25GYWlsZWRJZlN0ZXBGYWlsZWQiLCJzdGVwcyIsImxlbmd0aCIsImxhc3RGaW5kZWRUcmFuc2FjdGlvbkluZGV4IiwibmV3U3RlcHMiLCJpZHgiLCJpbmNsdWRlcyIsInN0YXR1cyIsImRlY3J5cHQiLCJ0ZXh0IiwiZW5jcnlwdGVkVGV4dCIsImRlY2lwaGVyIiwiY3JlYXRlRGVjaXBoZXJpdiIsImRlY3J5cHRlZCIsInVwZGF0ZSIsImNvbmNhdCIsImZpbmFsIiwicmV0VmFsIiwiT3h5Z2VuRXJyb3IiLCJlcnJvckhlbHBlciIsImVycm9yQ29kZSIsIkNSWVBUT19FUlJPUiIsImVuY3J5cHQiLCJjaXBoZXIiLCJjcmVhdGVDaXBoZXJpdiIsImVuY3J5cHRlZCIsInNsZWVwIiwidGltZW91dCIsIlByb21pc2UiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiOzs7O0FBc0JBOztBQUNBOzs7O0FBWEEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNQyxFQUFFLEdBQUdELE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNSSxJQUFJLEdBQUdKLE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU1LLFFBQVEsR0FBR0wsT0FBTyxDQUFDLG9CQUFELENBQVAsQ0FBOEJNLGFBQS9DOztBQUNBLE1BQU1DLEdBQUcsR0FBR0osTUFBTSxDQUFDSyxVQUFQLENBQWtCSCxRQUFsQixFQUE0QixLQUE1QixFQUFtQyxFQUFuQyxDQUFaO0FBQ0EsTUFBTUksRUFBRSxHQUFHQyxNQUFNLENBQUNDLEtBQVAsQ0FBYSxFQUFiLEVBQWlCLENBQWpCLENBQVg7QUFDQSxNQUFNQyxTQUFTLEdBQUcsYUFBbEI7O0FBS0EsU0FBU0MsYUFBVCxDQUF1QkMsTUFBdkIsRUFBK0I7QUFDM0IsUUFBTUMsYUFBYSxHQUFHRCxNQUF0Qjs7QUFFQSxPQUFLRSxnQkFBTCxHQUF3QixNQUFNO0FBQzFCLFdBQU9ELGFBQVA7QUFDSCxHQUZEO0FBR0g7O0FBRUQsTUFBTUUsV0FBVyxHQUFHO0FBQ2hCQyxFQUFBQSxVQUFVLEVBQUUsTUFBTSxDQUFFLENBREo7QUFFaEJDLEVBQUFBLFdBQVcsRUFBRSxNQUFNLENBQUUsQ0FGTDtBQUdoQkMsRUFBQUEsVUFBVSxFQUFFLE1BQU0sQ0FBRSxDQUhKO0FBSWhCQyxFQUFBQSxhQUFhLEVBQUUsTUFBTSxDQUFFLENBSlA7QUFLaEJDLEVBQUFBLFlBQVksRUFBRSxNQUFNLENBQUUsQ0FMTjtBQU1oQkMsRUFBQUEsU0FBUyxFQUFFLE1BQU0sQ0FBRSxDQU5IO0FBT2hCQyxFQUFBQSxVQUFVLEVBQUUsTUFBTSxDQUFFLENBUEo7QUFRaEJDLEVBQUFBLFNBQVMsRUFBRSxNQUFNLENBQUU7QUFSSCxDQUFwQjtBQVdBLElBQUlDLElBQUksR0FBR0MsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBRXhCQyxFQUFBQSxnQkFBZ0IsRUFBRSxZQUFXO0FBQ3pCLFdBQU8xQixNQUFNLENBQUMyQixXQUFQLENBQW1CLENBQW5CLEVBQXNCQyxRQUF0QixDQUErQixLQUEvQixDQUFQO0FBQ0gsR0FKdUI7QUFNeEJDLEVBQUFBLFlBQVksRUFBRSxZQUFXO0FBQ3JCLFdBQU85QixNQUFNLENBQUMrQixHQUFQLEdBQWFDLE9BQWIsRUFBUDtBQUNILEdBUnVCO0FBVXhCQyxFQUFBQSx5QkFBeUIsRUFBRSxnQkFBZUMsUUFBZixFQUF5QkMsVUFBekIsRUFBcUNDLGNBQWMsR0FBRyxDQUF0RCxFQUF5RDtBQUNoRixRQUFJQyxLQUFLLEdBQUcsSUFBSXZDLE9BQUosQ0FBWSx1QkFBWixHQUFaO0FBQ0F1QyxJQUFBQSxLQUFLLENBQUNDLEVBQU4sR0FBVyxJQUFYO0FBQ0FELElBQUFBLEtBQUssQ0FBQ0UsSUFBTixHQUFhTCxRQUFRLENBQUNLLElBQXRCO0FBQ0FGLElBQUFBLEtBQUssQ0FBQ0MsRUFBTixHQUFXSixRQUFRLENBQUNJLEVBQXBCO0FBQ0FELElBQUFBLEtBQUssQ0FBQ0QsY0FBTixHQUF1QkYsUUFBUSxDQUFDTSxVQUFULElBQXVCTCxVQUFVLENBQUNLLFVBQWxDLElBQWdESixjQUF2RTtBQUNBLFVBQU1LLGFBQWEsR0FBR1AsUUFBUSxDQUFDckMsSUFBVCxJQUFpQkEsSUFBSSxDQUFDNkMsSUFBTCxDQUFVUCxVQUFVLENBQUNRLE1BQVgsQ0FBa0JDLEdBQTVCLEVBQWlDLFFBQWpDLEVBQTRDLEdBQUVWLFFBQVEsQ0FBQ0ssSUFBSyxPQUE1RCxDQUF2QztBQUNBRixJQUFBQSxLQUFLLENBQUNRLFlBQU4sR0FBcUIsTUFBTXJCLElBQUksQ0FBQ3NCLG1CQUFMLENBQXlCTCxhQUF6QixFQUF3Q04sVUFBVSxDQUFDWSxVQUFuRCxFQUErRFosVUFBVSxDQUFDUSxNQUFYLENBQWtCQyxHQUFqRixDQUEzQjs7QUFDQSxRQUFJUCxLQUFLLENBQUNRLFlBQU4sSUFBc0JSLEtBQUssQ0FBQ1EsWUFBTixDQUFtQkcsT0FBbkIsTUFBZ0MsS0FBMUQsRUFBaUU7QUFDN0RYLE1BQUFBLEtBQUssQ0FBQ0QsY0FBTixHQUF1QkMsS0FBSyxDQUFDUSxZQUFOLENBQW1CSSxJQUExQztBQUNIOztBQUNEWixJQUFBQSxLQUFLLENBQUNhLFlBQU4sR0FBcUJoQixRQUFRLENBQUNnQixZQUFULElBQXlCZixVQUFVLENBQUNlLFlBQXBDLElBQW9ELEVBQXpFO0FBQ0FiLElBQUFBLEtBQUssQ0FBQ2MsV0FBTixHQUFvQmhCLFVBQVUsQ0FBQ2dCLFdBQVgsSUFBMEIsSUFBOUM7QUFDQWQsSUFBQUEsS0FBSyxDQUFDZSxPQUFOLEdBQWdCakIsVUFBVSxDQUFDaUIsT0FBWCxJQUFzQixJQUF0QztBQUNBZixJQUFBQSxLQUFLLENBQUNnQixRQUFOLEdBQWlCbkIsUUFBUSxDQUFDbUIsUUFBVCxJQUFxQmxCLFVBQVUsQ0FBQ2tCLFFBQWhDLElBQTRDbEIsVUFBVSxDQUFDbUIsV0FBdkQsSUFBc0UsQ0FBdkY7QUFFQXBCLElBQUFBLFFBQVEsQ0FBQ3FCLEtBQVQsQ0FBZUMsT0FBZixDQUF1QkMsT0FBTyxJQUFJO0FBRTlCLFlBQU1DLEVBQUUsR0FBRyxJQUFJNUQsT0FBSixDQUFZLHNCQUFaLEdBQVg7QUFDQSxVQUFJMkQsT0FBTyxDQUFDbEIsSUFBWixFQUNJbUIsRUFBRSxDQUFDbkIsSUFBSCxHQUFVa0IsT0FBTyxDQUFDbEIsSUFBbEIsQ0FESixLQUdJbUIsRUFBRSxDQUFDbkIsSUFBSCxHQUFVZixJQUFJLENBQUNtQyxxQkFBTCxDQUEyQkYsT0FBTyxDQUFDNUQsSUFBbkMsQ0FBVjtBQUNKNkQsTUFBQUEsRUFBRSxDQUFDN0QsSUFBSCxHQUFVMkIsSUFBSSxDQUFDb0MsV0FBTCxDQUFpQkgsT0FBTyxDQUFDNUQsSUFBekIsRUFBK0JzQyxVQUFVLENBQUNRLE1BQVgsQ0FBa0JDLEdBQWpELENBQVY7QUFDQWMsTUFBQUEsRUFBRSxDQUFDRyxNQUFILEdBQVksSUFBWjtBQUNBSCxNQUFBQSxFQUFFLENBQUN0QixjQUFILEdBQW9CcUIsT0FBTyxDQUFDakIsVUFBUixJQUFzQixDQUExQztBQUNBSCxNQUFBQSxLQUFLLENBQUNrQixLQUFOLENBQVlPLElBQVosQ0FBaUJKLEVBQWpCO0FBQ0gsS0FYRDtBQVlBLFdBQU9yQixLQUFQO0FBQ0gsR0F2Q3VCO0FBeUN4QjBCLEVBQUFBLDJCQUEyQixFQUFFLGdCQUFnQkMsUUFBaEIsRUFBMEJDLFNBQVMsR0FBRyxJQUF0QyxFQUE0Q0MsU0FBUyxHQUFHLElBQXhELEVBQThEQyxpQkFBaUIsR0FBRyxJQUFsRixFQUF3Ri9CLGNBQWMsR0FBRyxDQUF6RyxFQUE0RztBQUNySSxRQUFJZ0MsYUFBYSxHQUFHNUMsSUFBSSxDQUFDbUMscUJBQUwsQ0FBMkJLLFFBQTNCLENBQXBCO0FBRUEsUUFBSUssUUFBUSxHQUFHLElBQUl2RSxPQUFKLENBQVksc0JBQVosR0FBZjtBQUNBdUUsSUFBQUEsUUFBUSxDQUFDOUIsSUFBVCxHQUFnQjZCLGFBQWhCO0FBQ0FDLElBQUFBLFFBQVEsQ0FBQ3hFLElBQVQsR0FBZ0JtRSxRQUFoQjtBQUNBSyxJQUFBQSxRQUFRLENBQUNSLE1BQVQsR0FBa0IsSUFBbEI7QUFDQVEsSUFBQUEsUUFBUSxDQUFDakMsY0FBVCxHQUEwQixDQUExQjtBQUVBLFFBQUlDLEtBQUssR0FBRyxJQUFJdkMsT0FBSixDQUFZLHVCQUFaLEdBQVo7QUFDQXVDLElBQUFBLEtBQUssQ0FBQ0UsSUFBTixHQUFhOEIsUUFBUSxDQUFDOUIsSUFBdEI7QUFDQUYsSUFBQUEsS0FBSyxDQUFDQyxFQUFOLEdBQVcrQixRQUFRLENBQUMvQixFQUFwQjtBQUNBRCxJQUFBQSxLQUFLLENBQUNELGNBQU4sR0FBdUJBLGNBQXZCO0FBQ0FDLElBQUFBLEtBQUssQ0FBQ2tCLEtBQU4sQ0FBWU8sSUFBWixDQUFpQk8sUUFBakI7O0FBQ0EsUUFBSUEsUUFBUSxDQUFDQyxhQUFiLEVBQTRCO0FBQ3hCakMsTUFBQUEsS0FBSyxDQUFDaUMsYUFBTixHQUFzQkQsUUFBUSxDQUFDQyxhQUEvQjtBQUNIOztBQUNELFVBQU0xQixHQUFHLEdBQUcvQyxJQUFJLENBQUMwRSxPQUFMLENBQWFQLFFBQWIsQ0FBWjtBQUNBM0IsSUFBQUEsS0FBSyxDQUFDUSxZQUFOLEdBQXFCLE1BQU1yQixJQUFJLENBQUNzQixtQkFBTCxDQUF5QmtCLFFBQXpCLEVBQW1DO0FBQUVRLE1BQUFBLElBQUksRUFBRVAsU0FBUjtBQUFtQlEsTUFBQUEsSUFBSSxFQUFFUDtBQUF6QixLQUFuQyxFQUF5RXRCLEdBQXpFLENBQTNCOztBQUVBLFFBQUlQLEtBQUssQ0FBQ1EsWUFBTixJQUFzQnFCLFNBQVMsSUFBSSxLQUF2QyxFQUE4QztBQUMxQzdCLE1BQUFBLEtBQUssQ0FBQ0QsY0FBTixHQUF1QkMsS0FBSyxDQUFDUSxZQUFOLENBQW1CSSxJQUExQztBQUNIOztBQUNELFdBQU9aLEtBQVA7QUFDSCxHQWpFdUI7QUFtRXhCUyxFQUFBQSxtQkFBbUIsRUFBRSxnQkFBZTRCLFlBQWYsRUFBNkJDLFNBQVMsR0FBRyxJQUF6QyxFQUErQy9CLEdBQUcsR0FBRyxJQUFyRCxFQUEyRGdDLFVBQVUsR0FBRyxLQUF4RSxFQUErRTtBQUNoRyxRQUFJQyxhQUFhLEdBQUdGLFNBQVMsSUFBSUEsU0FBUyxDQUFDSCxJQUF2QixHQUE4QkcsU0FBUyxDQUFDSCxJQUF4QyxHQUErQyxJQUFuRTtBQUNBLFFBQUlOLFNBQVMsR0FBR1MsU0FBUyxJQUFJQSxTQUFTLENBQUNGLElBQXZCLEdBQThCRSxTQUFTLENBQUNGLElBQXhDLEdBQStDLEtBQS9EOztBQUVBLFFBQUlJLGFBQWEsSUFBSWpDLEdBQWpCLElBQXdCLENBQUMvQyxJQUFJLENBQUNpRixVQUFMLENBQWdCRCxhQUFoQixDQUE3QixFQUE2RDtBQUN6REEsTUFBQUEsYUFBYSxHQUFHaEYsSUFBSSxDQUFDNkMsSUFBTCxDQUFVRSxHQUFWLEVBQWVpQyxhQUFmLENBQWhCO0FBQ0g7O0FBRUQsV0FBTyxNQUFNckQsSUFBSSxDQUFDdUQsb0JBQUwsQ0FBMEJMLFlBQTFCLEVBQXdDRyxhQUF4QyxFQUF1RFgsU0FBdkQsRUFBa0VVLFVBQWxFLENBQWI7QUFDSCxHQTVFdUI7QUE4RXhCSSxFQUFBQSw2QkFBNkIsRUFBRSxnQkFBZ0JoQixRQUFoQixFQUEwQkMsU0FBMUIsRUFBcUNDLFNBQVMsR0FBRyxJQUFqRCxFQUF1RGQsT0FBTyxHQUFHLEVBQWpFLEVBQXFFO0FBQ2hHLFVBQU1qQixVQUFVLEdBQUcsRUFDZixJQUFHaUIsT0FBTyxJQUFJLEVBQWQ7QUFEZSxLQUFuQjs7QUFHQSxRQUFJYSxTQUFKLEVBQWU7QUFDWDlCLE1BQUFBLFVBQVUsQ0FBQ1ksVUFBWCxHQUF3QjtBQUNwQnlCLFFBQUFBLElBQUksRUFBRVAsU0FEYztBQUVwQlEsUUFBQUEsSUFBSSxFQUFFUDtBQUZjLE9BQXhCO0FBSUg7O0FBQ0QsV0FBTyxNQUFNMUMsSUFBSSxDQUFDUyx5QkFBTCxDQUErQm5DLE9BQU8sQ0FBQ2tFLFFBQUQsQ0FBdEMsRUFBa0Q3QixVQUFsRCxDQUFiO0FBQ0gsR0F6RnVCO0FBMkZ4QndCLEVBQUFBLHFCQUFxQixFQUFFLFVBQVVLLFFBQVYsRUFBb0I7QUFDdkMsUUFBSWlCLFFBQVEsR0FBR3BGLElBQUksQ0FBQ3FGLFFBQUwsQ0FBY2xCLFFBQWQsQ0FBZjtBQUNBLFFBQUltQixPQUFPLEdBQUd0RixJQUFJLENBQUN1RixPQUFMLENBQWFwQixRQUFiLENBQWQ7QUFDQSxRQUFJcUIsYUFBYSxHQUFHSixRQUFRLENBQUNLLFNBQVQsQ0FBbUIsQ0FBbkIsRUFBc0JMLFFBQVEsQ0FBQ00sV0FBVCxDQUFxQkosT0FBckIsQ0FBdEIsQ0FBcEI7QUFDQSxXQUFPRSxhQUFQO0FBQ0gsR0FoR3VCO0FBa0d4Qk4sRUFBQUEsb0JBQW9CLEVBQUUsZ0JBQWVTLFFBQWYsRUFBeUJ2QixTQUF6QixFQUFvQ0MsU0FBcEMsRUFBK0NVLFVBQVUsR0FBRyxLQUE1RCxFQUFtRTtBQUNyRixRQUFJL0IsWUFBWSxHQUFHLElBQW5COztBQUdBLFFBQUksQ0FBQ29CLFNBQUQsSUFBY1csVUFBbEIsRUFBOEI7QUFDMUIsVUFBSVIsYUFBYSxHQUFHNUMsSUFBSSxDQUFDbUMscUJBQUwsQ0FBMkI2QixRQUEzQixDQUFwQjtBQUNBLFVBQUlDLFlBQVksR0FBRzVGLElBQUksQ0FBQzZDLElBQUwsQ0FBVTdDLElBQUksQ0FBQzBFLE9BQUwsQ0FBYWlCLFFBQWIsQ0FBVixFQUFrQ3BCLGFBQWEsR0FBRyxNQUFsRCxDQUFuQjtBQUNBLFVBQUlzQixZQUFZLEdBQUc3RixJQUFJLENBQUM2QyxJQUFMLENBQVU3QyxJQUFJLENBQUMwRSxPQUFMLENBQWFpQixRQUFiLENBQVYsRUFBa0NwQixhQUFhLEdBQUcsTUFBbEQsQ0FBbkI7QUFDQSxVQUFJdUIsWUFBWSxHQUFHOUYsSUFBSSxDQUFDNkMsSUFBTCxDQUFVN0MsSUFBSSxDQUFDMEUsT0FBTCxDQUFhaUIsUUFBYixDQUFWLEVBQWtDcEIsYUFBYSxHQUFHLE1BQWxELENBQW5CO0FBQ0EsVUFBSXdCLGFBQWEsR0FBRy9GLElBQUksQ0FBQzZDLElBQUwsQ0FBVTdDLElBQUksQ0FBQzBFLE9BQUwsQ0FBYWlCLFFBQWIsQ0FBVixFQUFrQ3BCLGFBQWEsR0FBRyxPQUFsRCxDQUFwQjs7QUFFQSxVQUFJckUsRUFBRSxDQUFDOEYsVUFBSCxDQUFjSixZQUFkLENBQUosRUFBaUM7QUFDN0J4QixRQUFBQSxTQUFTLEdBQUd3QixZQUFaO0FBQ0gsT0FGRCxNQUVPLElBQUkxRixFQUFFLENBQUM4RixVQUFILENBQWNILFlBQWQsQ0FBSixFQUFpQztBQUNwQ3pCLFFBQUFBLFNBQVMsR0FBR3lCLFlBQVo7QUFDSCxPQUZNLE1BRUEsSUFBSTNGLEVBQUUsQ0FBQzhGLFVBQUgsQ0FBY0YsWUFBZCxDQUFKLEVBQWlDO0FBQ3BDMUIsUUFBQUEsU0FBUyxHQUFHMEIsWUFBWjtBQUNILE9BRk0sTUFFQSxJQUFJNUYsRUFBRSxDQUFDOEYsVUFBSCxDQUFjRCxhQUFkLENBQUosRUFBa0M7QUFDckMzQixRQUFBQSxTQUFTLEdBQUcyQixhQUFaO0FBQ0g7QUFDSjs7QUFDRCxRQUFJM0IsU0FBSixFQUFlO0FBQ1hwQixNQUFBQSxZQUFZLEdBQUcsSUFBSS9DLE9BQUosQ0FBWSxpQkFBWixFQUErQm1FLFNBQS9CLEVBQTBDQyxTQUFTLElBQUksWUFBdkQsQ0FBZjtBQUNBLFlBQU1yQixZQUFZLENBQUNpRCxJQUFiLEVBQU47QUFDQSxhQUFPakQsWUFBUDtBQUNIOztBQUNELFdBQU8sSUFBUDtBQUNILEdBN0h1QjtBQStIeEJlLEVBQUFBLFdBQVcsRUFBRSxVQUFTbUMsYUFBVCxFQUF3QkMsVUFBeEIsRUFBb0M7QUFDN0MsUUFBSW5HLElBQUksQ0FBQ2lGLFVBQUwsQ0FBZ0JpQixhQUFoQixDQUFKLEVBQ0ksT0FBT0EsYUFBUDtBQUNKLFdBQU9sRyxJQUFJLENBQUNvRyxPQUFMLENBQWFELFVBQWIsRUFBeUJELGFBQXpCLENBQVA7QUFDSCxHQW5JdUI7QUFxSXhCRyxFQUFBQSxnQkFBZ0IsRUFBRSxVQUFTQyxHQUFULEVBQWM7QUFDNUIsUUFBSSxPQUFPQSxHQUFQLEtBQWUsUUFBbkIsRUFBNkI7QUFDekIsYUFBT0MsZUFBZSxDQUFDRCxHQUFELEVBQU0sRUFBTixDQUF0QjtBQUNIOztBQUNELFdBQU9BLEdBQVA7O0FBR0EsYUFBU0MsZUFBVCxDQUF5QkMsSUFBekIsRUFBK0JDLElBQS9CLEVBQXFDO0FBQ2pDLFVBQUlDLEVBQUUsR0FBR0MsS0FBSyxDQUFDQyxPQUFOLENBQWNKLElBQWQsSUFBc0IsRUFBdEIsR0FBMkIsRUFBcEM7QUFDQUMsTUFBQUEsSUFBSSxDQUFDeEMsSUFBTCxDQUFVdUMsSUFBVjtBQUNBSyxNQUFBQSxNQUFNLENBQUNDLElBQVAsQ0FBWU4sSUFBWixFQUFrQjdDLE9BQWxCLENBQTBCLFVBQVNuRCxHQUFULEVBQWM7QUFDcEMsWUFBSSxDQUFDZ0csSUFBSSxDQUFDaEcsR0FBRCxDQUFMLElBQWUsT0FBT2dHLElBQUksQ0FBQ2hHLEdBQUQsQ0FBWCxJQUFvQixRQUFwQixJQUFnQyxDQUFDbUcsS0FBSyxDQUFDQyxPQUFOLENBQWNKLElBQUksQ0FBQ2hHLEdBQUQsQ0FBbEIsQ0FBcEQsRUFBK0U7QUFDM0VrRyxVQUFBQSxFQUFFLENBQUNsRyxHQUFELENBQUYsR0FBVWdHLElBQUksQ0FBQ2hHLEdBQUQsQ0FBZDtBQUNILFNBRkQsTUFFTyxJQUFJaUcsSUFBSSxDQUFDTSxPQUFMLENBQWFQLElBQUksQ0FBQ2hHLEdBQUQsQ0FBakIsS0FBMkIsQ0FBQyxDQUFoQyxFQUFtQztBQUN0Q2tHLFVBQUFBLEVBQUUsQ0FBQ2xHLEdBQUQsQ0FBRixHQUFVK0YsZUFBZSxDQUFDQyxJQUFJLENBQUNoRyxHQUFELENBQUwsRUFBWWlHLElBQUksQ0FBQ08sS0FBTCxDQUFXLENBQVgsQ0FBWixDQUF6QjtBQUNILFNBRk0sTUFFQU4sRUFBRSxDQUFDbEcsR0FBRCxDQUFGLEdBQVUsWUFBVjtBQUNWLE9BTkQ7QUFPQSxhQUFPa0csRUFBUDtBQUNIO0FBQ0osR0F4SnVCO0FBMEp4Qk8sRUFBQUEsa0JBQWtCLEVBQUUsVUFBU0MsVUFBVCxFQUFxQkMsVUFBckIsRUFBaUNDLFVBQWpDLEVBQTZDO0FBQzdELFdBQU9GLFVBQVUsR0FBRyxHQUFiLEdBQW1CQyxVQUFuQixHQUFnQyxHQUFoQyxHQUFzQ3hGLElBQUksQ0FBQzBGLFNBQUwsQ0FBZUQsVUFBZixFQUEyQixDQUEzQixDQUF0QyxHQUFzRSxHQUE3RTtBQUNILEdBNUp1QjtBQWlLeEJDLEVBQUFBLFNBQVMsRUFBRSxVQUFVQyxJQUFWLEVBQWdCQyxXQUFXLEdBQUcsQ0FBOUIsRUFBaUM7QUFDeEMsUUFBSUMsR0FBSjs7QUFDQSxRQUFJO0FBQ0FBLE1BQUFBLEdBQUcsR0FBR0MsSUFBSSxDQUFDSixTQUFMLENBQWVDLElBQWYsRUFBcUIsQ0FBQzlHLEdBQUQsRUFBTWtILEtBQU4sS0FBZ0I7QUFDdkMsWUFBSSxPQUFPQSxLQUFQLEtBQWlCLFFBQXJCLEVBQStCO0FBQzNCLGlCQUFPQSxLQUFLLENBQUMxRixRQUFOLEVBQVA7QUFDSCxTQUZELE1BRU8sSUFBSSxPQUFPMEYsS0FBUCxLQUFpQixVQUFyQixFQUFpQztBQUNwQyxpQkFBT0EsS0FBSyxDQUFDMUYsUUFBTixFQUFQO0FBQ0gsU0FGTSxNQUVBLElBQUksT0FBTzBGLEtBQVAsS0FBaUIsV0FBckIsRUFBa0M7QUFJckMsaUJBQU8sYUFBUDtBQUNILFNBTE0sTUFLQSxJQUFJQSxLQUFLLFlBQVlDLEtBQXJCLEVBQTRCO0FBQy9CLGlCQUFPRCxLQUFLLENBQUMxRixRQUFOLEVBQVA7QUFDSCxTQUZNLE1BRUEsSUFBSTBGLEtBQUssWUFBWUUsTUFBckIsRUFBNkI7QUFDaEMsaUJBQU8sTUFBTUYsS0FBSyxDQUFDRyxNQUFaLEdBQXFCLEdBQXJCLEdBQTJCSCxLQUFLLENBQUNJLEtBQXhDO0FBQ0g7O0FBQ0QsZUFBT0osS0FBUDtBQUNILE9BaEJLLEVBZ0JISCxXQWhCRyxDQUFOO0FBa0JBQyxNQUFBQSxHQUFHLEdBQUdBLEdBQUcsQ0FBQ08sT0FBSixDQUFZLHNCQUFaLEVBQW9DLEVBQXBDLENBQU47QUFFQVAsTUFBQUEsR0FBRyxHQUFHQSxHQUFHLENBQUNPLE9BQUosQ0FBWSxnQkFBWixFQUE4QixXQUE5QixDQUFOO0FBQ0gsS0F0QkQsQ0FzQkUsT0FBT0MsQ0FBUCxFQUFVO0FBQ1JDLE1BQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLHlDQUFiLEVBQXdERixDQUF4RDtBQUNBUixNQUFBQSxHQUFHLEdBQUdRLENBQUMsQ0FBQ2hHLFFBQUYsRUFBTjtBQUNIOztBQUNELFdBQU93RixHQUFQO0FBQ0gsR0E5THVCO0FBZ014QlcsRUFBQUEsYUFBYSxFQUFFLFlBQVc7QUFXdEIsV0FBTyxLQUFQO0FBQ0gsR0E1TXVCO0FBOE14QkMsRUFBQUEsYUFBYSxFQUFFLFVBQVM3RSxPQUFULEVBQWtCO0FBQzdCLFFBQUk4RSxLQUFLLEdBQUduSCxXQUFaOztBQUNBLFFBQUlxQyxPQUFPLElBQUlBLE9BQU8sQ0FBQ1QsTUFBbkIsSUFBNkJTLE9BQU8sQ0FBQ1QsTUFBUixDQUFlSixJQUFmLEtBQXdCLGFBQXpELEVBQXdFO0FBQ3BFLFVBQUk7QUFDQTJGLFFBQUFBLEtBQUssR0FBR3BJLE9BQU8sQ0FBQ3NELE9BQU8sQ0FBQ1QsTUFBUixDQUFlOUMsSUFBaEIsQ0FBUCxDQUE2QnFJLEtBQTdCLElBQXNDbkgsV0FBOUM7QUFDSCxPQUZELENBR0EsT0FBTzhHLENBQVAsRUFBVTtBQUNOQyxRQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYSwyQkFBYixFQUEwQ0YsQ0FBMUM7QUFDSDtBQUNKOztBQUNELFdBQU9LLEtBQVA7QUFDSCxHQXpOdUI7QUEyTnhCQyxFQUFBQSxlQUFlLEVBQUUsZ0JBQWVELEtBQWYsRUFBc0JFLE1BQXRCLEVBQThCakIsSUFBOUIsRUFBb0M7QUFFakQsUUFBSSxDQUFDZSxLQUFELElBQVUsQ0FBQ0UsTUFBWCxJQUFxQixDQUFDRixLQUFLLENBQUNFLE1BQUQsQ0FBM0IsSUFBdUMsT0FBT0YsS0FBSyxDQUFDRSxNQUFELENBQVosS0FBeUIsVUFBcEUsRUFBZ0Y7QUFDNUUsYUFBTyxJQUFQO0FBQ0g7O0FBQ0QsUUFBSTtBQUNBLFVBQUlDLE1BQU0sQ0FBQ0Msb0JBQVgsRUFBaUMsQ0FFaEMsQ0FGRCxNQUVPO0FBQ0gsY0FBTUMsSUFBSSxHQUFHekksT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsY0FBTTBJLE9BQU8sR0FBRzFJLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBMEksUUFBQUEsT0FBTyxDQUFDQyxNQUFSLENBQWU7QUFDWEMsVUFBQUEsYUFBYSxFQUFFLElBREo7QUFFWEMsVUFBQUEsYUFBYSxFQUFFLEtBRko7QUFHWEMsVUFBQUEsa0JBQWtCLEVBQUU7QUFIVCxTQUFmO0FBS0FKLFFBQUFBLE9BQU8sQ0FBQ0ssWUFBUixDQUFxQixNQUFyQixFQUE2Qk4sSUFBN0I7QUFDQUYsUUFBQUEsTUFBTSxDQUFDQyxvQkFBUCxHQUE4QixJQUE5QjtBQUNIOztBQUVELFlBQU1KLEtBQUssQ0FBQ0UsTUFBRCxDQUFMLENBQWNVLEtBQWQsQ0FBb0JDLFNBQXBCLEVBQStCNUIsSUFBL0IsQ0FBTjtBQUNILEtBaEJELENBaUJBLE9BQU9VLENBQVAsRUFBVTtBQUNOQyxNQUFBQSxPQUFPLENBQUNrQixLQUFSLENBQWUsU0FBUVosTUFBTywwQkFBeUJQLENBQUMsQ0FBQ2hHLFFBQUYsRUFBYSxFQUFwRTtBQUNBLFlBQU1nRyxDQUFOO0FBQ0g7QUFDSixHQXJQdUI7QUF1UHhCb0IsRUFBQUEsZUFBZSxFQUFFLFlBQVc7QUFDeEIsV0FBT3BKLElBQUksQ0FBQzZDLElBQUwsQ0FBVXdHLFNBQVYsRUFBcUIsSUFBckIsRUFBMkIsWUFBM0IsQ0FBUDtBQUNILEdBelB1Qjs7QUEyUHhCQyxFQUFBQSxRQUFRLENBQUNDLE1BQUQsRUFBUztBQUNiLFVBQU1DLE9BQU8sR0FBR3ZCLE9BQU8sQ0FBQ3dCLEdBQXhCO0FBQ0EsVUFBTUMsU0FBUyxHQUFHekIsT0FBTyxDQUFDMEIsS0FBMUI7QUFDQSxVQUFNQyxRQUFRLEdBQUczQixPQUFPLENBQUM0QixJQUF6QjtBQUNBLFVBQU1DLFFBQVEsR0FBRzdCLE9BQU8sQ0FBQ0MsSUFBekI7QUFDQSxVQUFNNkIsU0FBUyxHQUFHOUIsT0FBTyxDQUFDa0IsS0FBMUI7O0FBRUEsVUFBTWEsV0FBVyxHQUFJQyxhQUFELElBQW1CO0FBQ25DLFVBQUlsSixNQUFNLEdBQUcsRUFBYjs7QUFFQSxVQUFJa0osYUFBYSxJQUFJQSxhQUFhLENBQUNDLEdBQW5DLEVBQXdDO0FBQ3BDRCxRQUFBQSxhQUFhLENBQUNDLEdBQWQsQ0FBbUJDLElBQUQsSUFBVTtBQUN4QixjQUFJLE9BQU9BLElBQVAsS0FBZ0IsUUFBcEIsRUFBOEI7QUFDMUJwSixZQUFBQSxNQUFNLENBQUNrRCxJQUFQLENBQWEsR0FBRWtHLElBQUssRUFBcEI7QUFDSCxXQUZELE1BRU87QUFDSHBKLFlBQUFBLE1BQU0sQ0FBQ2tELElBQVAsQ0FBYSxHQUFFNUQsSUFBSSxDQUFDK0osT0FBTCxDQUFhRCxJQUFiLENBQW1CLEVBQWxDO0FBQ0g7QUFDSixTQU5EO0FBT0g7O0FBRUQsYUFBT3BKLE1BQU0sQ0FBQzhCLElBQVAsQ0FBWSxHQUFaLENBQVA7QUFDSCxLQWREOztBQWdCQW9GLElBQUFBLE9BQU8sQ0FBQ3dCLEdBQVIsR0FBYyxVQUFVLEdBQUdRLGFBQWIsRUFBNEI7QUFDdENULE1BQUFBLE9BQU8sQ0FBQ1AsS0FBUixDQUFjLElBQWQsRUFBb0JnQixhQUFwQjtBQUNBVixNQUFBQSxNQUFNLENBQUNNLElBQVAsQ0FBWUcsV0FBVyxDQUFDQyxhQUFELENBQXZCO0FBQ0gsS0FIRDs7QUFJQWhDLElBQUFBLE9BQU8sQ0FBQzBCLEtBQVIsR0FBZ0IsVUFBVSxHQUFHTSxhQUFiLEVBQTRCO0FBQ3hDUCxNQUFBQSxTQUFTLENBQUNULEtBQVYsQ0FBZ0IsSUFBaEIsRUFBc0JnQixhQUF0QjtBQUNBVixNQUFBQSxNQUFNLENBQUNJLEtBQVAsQ0FBYUssV0FBVyxDQUFDQyxhQUFELENBQXhCO0FBQ0gsS0FIRDs7QUFJQWhDLElBQUFBLE9BQU8sQ0FBQzRCLElBQVIsR0FBZSxVQUFVLEdBQUdJLGFBQWIsRUFBNEI7QUFDdkNMLE1BQUFBLFFBQVEsQ0FBQ1gsS0FBVCxDQUFlLElBQWYsRUFBcUJnQixhQUFyQjtBQUNBVixNQUFBQSxNQUFNLENBQUNNLElBQVAsQ0FBWUcsV0FBVyxDQUFDQyxhQUFELENBQXZCO0FBQ0gsS0FIRDs7QUFJQWhDLElBQUFBLE9BQU8sQ0FBQ0MsSUFBUixHQUFlLFVBQVUsR0FBRytCLGFBQWIsRUFBNEI7QUFDdkNILE1BQUFBLFFBQVEsQ0FBQ2IsS0FBVCxDQUFlLElBQWYsRUFBcUJnQixhQUFyQjtBQUNBVixNQUFBQSxNQUFNLENBQUNyQixJQUFQLENBQVk4QixXQUFXLENBQUNDLGFBQUQsQ0FBdkI7QUFDSCxLQUhEOztBQUlBaEMsSUFBQUEsT0FBTyxDQUFDa0IsS0FBUixHQUFnQixVQUFVLEdBQUdjLGFBQWIsRUFBNEI7QUFDeENGLE1BQUFBLFNBQVMsQ0FBQ2QsS0FBVixDQUFnQixJQUFoQixFQUFzQmdCLGFBQXRCO0FBQ0FWLE1BQUFBLE1BQU0sQ0FBQ0osS0FBUCxDQUFhYSxXQUFXLENBQUNDLGFBQUQsQ0FBeEI7QUFDSCxLQUhEO0FBSUgsR0F0U3VCOztBQXdTeEJJLEVBQUFBLGlDQUFpQyxDQUFDQyxLQUFELEVBQVE7QUFDckMsUUFBSUEsS0FBSyxJQUFJQSxLQUFLLENBQUNDLE1BQWYsSUFBeUJELEtBQUssQ0FBQ0MsTUFBTixHQUFlLENBQTVDLEVBQStDO0FBQzNDLFVBQUlDLDBCQUEwQixHQUFHLEtBQWpDO0FBQ0EsWUFBTUMsUUFBUSxHQUFHLENBQUMsR0FBR0gsS0FBSixDQUFqQjtBQUNBQSxNQUFBQSxLQUFLLENBQUNKLEdBQU4sQ0FBVSxDQUFDQyxJQUFELEVBQU9PLEdBQVAsS0FBZTtBQUNyQixZQUFJUCxJQUFJLENBQUN6SCxJQUFMLElBQWF5SCxJQUFJLENBQUN6SCxJQUFMLENBQVVpSSxRQUF2QixJQUFtQ1IsSUFBSSxDQUFDekgsSUFBTCxDQUFVaUksUUFBVixDQUFtQixlQUFuQixDQUF2QyxFQUE0RTtBQUN4RUgsVUFBQUEsMEJBQTBCLEdBQUdFLEdBQTdCO0FBQ0g7O0FBRUQsWUFBSSxPQUFPRiwwQkFBUCxLQUFzQyxRQUF0QyxJQUFrREwsSUFBSSxDQUFDUyxNQUF2RCxJQUFpRVQsSUFBSSxDQUFDUyxNQUFMLEtBQWdCLFFBQXJGLEVBQStGO0FBQzNGSCxVQUFBQSxRQUFRLENBQUNELDBCQUFELENBQVIsQ0FBcUMsUUFBckMsSUFBaUQsUUFBakQ7QUFDSDtBQUNKLE9BUkQ7QUFVQSxhQUFPQyxRQUFQO0FBQ0g7O0FBRUQsV0FBT0gsS0FBUDtBQUNILEdBMVR1Qjs7QUE0VHhCTyxFQUFBQSxPQUFPLENBQUNDLElBQUQsRUFBTztBQUNWLFFBQUk7QUFDQSxVQUFJQyxhQUFhLEdBQUdwSyxNQUFNLENBQUM2RixJQUFQLENBQVlzRSxJQUFaLEVBQWtCLEtBQWxCLENBQXBCO0FBQ0EsVUFBSUUsUUFBUSxHQUFHNUssTUFBTSxDQUFDNkssZ0JBQVAsQ0FBd0JwSyxTQUF4QixFQUFtQ0wsR0FBbkMsRUFBd0NFLEVBQXhDLENBQWY7QUFDQSxVQUFJd0ssU0FBUyxHQUFHRixRQUFRLENBQUNHLE1BQVQsQ0FBZ0JKLGFBQWhCLENBQWhCO0FBQ0FHLE1BQUFBLFNBQVMsR0FBR3ZLLE1BQU0sQ0FBQ3lLLE1BQVAsQ0FBYyxDQUFDRixTQUFELEVBQVlGLFFBQVEsQ0FBQ0ssS0FBVCxFQUFaLENBQWQsQ0FBWjtBQUNBLFlBQU1DLE1BQU0sR0FBR0osU0FBUyxDQUFDbEosUUFBVixFQUFmO0FBQ0EsYUFBTyxJQUFJbEIsYUFBSixDQUFrQndLLE1BQWxCLENBQVA7QUFDSCxLQVBELENBT0UsT0FBT3RELENBQVAsRUFBVTtBQUNSLFlBQU0sSUFBSXVELG9CQUFKLENBQWdCQyxnQkFBWUMsU0FBWixDQUFzQkMsWUFBdEMsRUFBb0QscUZBQXBELENBQU47QUFDSDtBQUNKLEdBdlV1Qjs7QUF5VXhCQyxFQUFBQSxPQUFPLENBQUNiLElBQUQsRUFBTztBQUNWLFFBQUljLE1BQU0sR0FBR3hMLE1BQU0sQ0FBQ3lMLGNBQVAsQ0FBc0JoTCxTQUF0QixFQUFpQ0wsR0FBakMsRUFBc0NFLEVBQXRDLENBQWI7QUFDQSxRQUFJb0wsU0FBUyxHQUFHRixNQUFNLENBQUNULE1BQVAsQ0FBY0wsSUFBZCxDQUFoQjtBQUNBZ0IsSUFBQUEsU0FBUyxHQUFHbkwsTUFBTSxDQUFDeUssTUFBUCxDQUFjLENBQUNVLFNBQUQsRUFBWUYsTUFBTSxDQUFDUCxLQUFQLEVBQVosQ0FBZCxDQUFaO0FBQ0EsV0FBT1MsU0FBUyxDQUFDOUosUUFBVixDQUFtQixLQUFuQixDQUFQO0FBQ0gsR0E5VXVCOztBQWdWeEIrSixFQUFBQSxLQUFLLEVBQUUsVUFBU0MsT0FBVCxFQUFrQjtBQUNyQixXQUFPLElBQUlDLE9BQUosQ0FBYTdGLE9BQUQsSUFBYThGLFVBQVUsQ0FBQzlGLE9BQUQsRUFBVTRGLE9BQVYsQ0FBbkMsQ0FBUDtBQUNIO0FBbFZ1QixDQUE1QiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEhlbHBlciBtb2R1bGUgZm9yIGludGVybmFsIE94eWdlbiB1c2VcclxuICovXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XHJcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcclxuY29uc3QgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50Jyk7XHJcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5jb25zdCBwYXNzd29yZCA9IHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLmVuY3J5cHRpb25LZXk7XHJcbmNvbnN0IGtleSA9IGNyeXB0by5zY3J5cHRTeW5jKHBhc3N3b3JkLCAnR2ZHJywgMjQpO1xyXG5jb25zdCBpdiA9IEJ1ZmZlci5hbGxvYygxNiwgMCk7XHJcbmNvbnN0IGFsZ29yaXRobSA9ICdhZXMtMTkyLWNiYyc7XHJcblxyXG5pbXBvcnQgT3h5Z2VuRXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxuaW1wb3J0IGVycm9ySGVscGVyIGZyb20gJy4uL2Vycm9ycy9oZWxwZXInO1xyXG5cclxuZnVuY3Rpb24gRGVjcnlwdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIGNvbnN0IGRlY3J5cHRSZXN1bHQgPSByZXN1bHQ7XHJcblxyXG4gICAgdGhpcy5nZXREZWNyeXB0UmVzdWx0ID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBkZWNyeXB0UmVzdWx0O1xyXG4gICAgfTtcclxufVxyXG5cclxuY29uc3QgRFVNTVlfSE9PS1MgPSB7XHJcbiAgICBiZWZvcmVUZXN0OiAoKSA9PiB7fSxcclxuICAgIGJlZm9yZVN1aXRlOiAoKSA9PiB7fSxcclxuICAgIGJlZm9yZUNhc2U6ICgpID0+IHt9LFxyXG4gICAgYmVmb3JlQ29tbWFuZDogKCkgPT4ge30sXHJcbiAgICBhZnRlckNvbW1hbmQ6ICgpID0+IHt9LFxyXG4gICAgYWZ0ZXJUZXN0OiAoKSA9PiB7fSxcclxuICAgIGFmdGVyU3VpdGU6ICgpID0+IHt9LFxyXG4gICAgYWZ0ZXJDYXNlOiAoKSA9PiB7fSxcclxufTtcclxuXHJcbnZhciBzZWxmID0gbW9kdWxlLmV4cG9ydHMgPSB7XHJcblxyXG4gICAgZ2VuZXJhdGVVbmlxdWVJZDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIGNyeXB0by5yYW5kb21CeXRlcyg0KS50b1N0cmluZygnaGV4Jyk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFRpbWVTdGFtcDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudC51dGMoKS52YWx1ZU9mKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdlbmVyYXRlVGVzdFN1aXRlRnJvbUpzb246IGFzeW5jIGZ1bmN0aW9uKHN1aXRlRGVmLCB0ZXN0Q29uZmlnLCBpdGVyYXRpb25Db3VudCA9IDEpIHtcclxuICAgICAgICB2YXIgc3VpdGUgPSBuZXcgcmVxdWlyZSgnLi4vbW9kZWwvdGVzdHN1aXRlLmpzJykoKTtcclxuICAgICAgICBzdWl0ZS5pZCA9IG51bGw7XHJcbiAgICAgICAgc3VpdGUubmFtZSA9IHN1aXRlRGVmLm5hbWU7XHJcbiAgICAgICAgc3VpdGUuaWQgPSBzdWl0ZURlZi5pZDtcclxuICAgICAgICBzdWl0ZS5pdGVyYXRpb25Db3VudCA9IHN1aXRlRGVmLml0ZXJhdGlvbnMgfHwgdGVzdENvbmZpZy5pdGVyYXRpb25zIHx8IGl0ZXJhdGlvbkNvdW50O1xyXG4gICAgICAgIGNvbnN0IHN1aXRlRmlsZVBhdGggPSBzdWl0ZURlZi5wYXRoIHx8IHBhdGguam9pbih0ZXN0Q29uZmlnLnRhcmdldC5jd2QsICdzdWl0ZXMnLCBgJHtzdWl0ZURlZi5uYW1lfS5qc29uYCk7XHJcbiAgICAgICAgc3VpdGUucGFyYW1NYW5hZ2VyID0gYXdhaXQgc2VsZi5nZXRQYXJhbWV0ZXJNYW5hZ2VyKHN1aXRlRmlsZVBhdGgsIHRlc3RDb25maWcucGFyYW1ldGVycywgdGVzdENvbmZpZy50YXJnZXQuY3dkKTtcclxuICAgICAgICBpZiAoc3VpdGUucGFyYW1NYW5hZ2VyICYmIHN1aXRlLnBhcmFtTWFuYWdlci5nZXRNb2RlKCkgPT0gJ2FsbCcpIHtcclxuICAgICAgICAgICAgc3VpdGUuaXRlcmF0aW9uQ291bnQgPSBzdWl0ZS5wYXJhbU1hbmFnZXIucm93cztcclxuICAgICAgICB9XHJcbiAgICAgICAgc3VpdGUuY2FwYWJpbGl0aWVzID0gc3VpdGVEZWYuY2FwYWJpbGl0aWVzIHx8IHRlc3RDb25maWcuY2FwYWJpbGl0aWVzIHx8IHt9O1xyXG4gICAgICAgIHN1aXRlLmVudmlyb25tZW50ID0gdGVzdENvbmZpZy5lbnZpcm9ubWVudCB8fCBudWxsO1xyXG4gICAgICAgIHN1aXRlLm9wdGlvbnMgPSB0ZXN0Q29uZmlnLm9wdGlvbnMgfHwgbnVsbDtcclxuICAgICAgICBzdWl0ZS5wYXJhbGxlbCA9IHN1aXRlRGVmLnBhcmFsbGVsIHx8IHRlc3RDb25maWcucGFyYWxsZWwgfHwgdGVzdENvbmZpZy5jb25jdXJyZW5jeSB8fCAxO1xyXG4gICAgICAgIC8vIGluaXRpYWxpemUgZWFjaCB0ZXN0IGNhc2VcclxuICAgICAgICBzdWl0ZURlZi5jYXNlcy5mb3JFYWNoKGNhc2VEZWYgPT4ge1xyXG4gICAgICAgICAgICAvLyBpbml0aWFsaXplIHRlc3RjYXNlIG9iamVjdFxyXG4gICAgICAgICAgICBjb25zdCB0YyA9IG5ldyByZXF1aXJlKCcuLi9tb2RlbC90ZXN0Y2FzZS5qcycpKCk7XHJcbiAgICAgICAgICAgIGlmIChjYXNlRGVmLm5hbWUpXHJcbiAgICAgICAgICAgICAgICB0Yy5uYW1lID0gY2FzZURlZi5uYW1lO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0Yy5uYW1lID0gc2VsZi5nZXRGaWxlTmFtZVdpdGhvdXRFeHQoY2FzZURlZi5wYXRoKTtcclxuICAgICAgICAgICAgdGMucGF0aCA9IHNlbGYucmVzb2x2ZVBhdGgoY2FzZURlZi5wYXRoLCB0ZXN0Q29uZmlnLnRhcmdldC5jd2QpO1xyXG4gICAgICAgICAgICB0Yy5mb3JtYXQgPSAnanMnO1xyXG4gICAgICAgICAgICB0Yy5pdGVyYXRpb25Db3VudCA9IGNhc2VEZWYuaXRlcmF0aW9ucyB8fCAxO1xyXG4gICAgICAgICAgICBzdWl0ZS5jYXNlcy5wdXNoKHRjKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gc3VpdGU7XHJcbiAgICB9LFxyXG5cclxuICAgIGdlbmVyYXRlVGVzdFN1aXRlRnJvbUpTRmlsZTogYXN5bmMgZnVuY3Rpb24gKGZpbGVQYXRoLCBwYXJhbUZpbGUgPSBudWxsLCBwYXJhbU1vZGUgPSBudWxsLCBub1BhcmFtQXV0b1NlYXJjaCA9IHRydWUsIGl0ZXJhdGlvbkNvdW50ID0gMSkge1xyXG4gICAgICAgIHZhciBmaWxlTmFtZU5vRXh0ID0gc2VsZi5nZXRGaWxlTmFtZVdpdGhvdXRFeHQoZmlsZVBhdGgpO1xyXG5cclxuICAgICAgICB2YXIgdGVzdGNhc2UgPSBuZXcgcmVxdWlyZSgnLi4vbW9kZWwvdGVzdGNhc2UuanMnKSgpO1xyXG4gICAgICAgIHRlc3RjYXNlLm5hbWUgPSBmaWxlTmFtZU5vRXh0O1xyXG4gICAgICAgIHRlc3RjYXNlLnBhdGggPSBmaWxlUGF0aDtcclxuICAgICAgICB0ZXN0Y2FzZS5mb3JtYXQgPSAnanMnO1xyXG4gICAgICAgIHRlc3RjYXNlLml0ZXJhdGlvbkNvdW50ID0gMTtcclxuXHJcbiAgICAgICAgdmFyIHN1aXRlID0gbmV3IHJlcXVpcmUoJy4uL21vZGVsL3Rlc3RzdWl0ZS5qcycpKCk7XHJcbiAgICAgICAgc3VpdGUubmFtZSA9IHRlc3RjYXNlLm5hbWU7XHJcbiAgICAgICAgc3VpdGUuaWQgPSB0ZXN0Y2FzZS5pZDtcclxuICAgICAgICBzdWl0ZS5pdGVyYXRpb25Db3VudCA9IGl0ZXJhdGlvbkNvdW50O1xyXG4gICAgICAgIHN1aXRlLmNhc2VzLnB1c2godGVzdGNhc2UpO1xyXG4gICAgICAgIGlmICh0ZXN0Y2FzZS5yZW9wZW5TZXNzaW9uKSB7XHJcbiAgICAgICAgICAgIHN1aXRlLnJlb3BlblNlc3Npb24gPSB0ZXN0Y2FzZS5yZW9wZW5TZXNzaW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjd2QgPSBwYXRoLmRpcm5hbWUoZmlsZVBhdGgpO1xyXG4gICAgICAgIHN1aXRlLnBhcmFtTWFuYWdlciA9IGF3YWl0IHNlbGYuZ2V0UGFyYW1ldGVyTWFuYWdlcihmaWxlUGF0aCwgeyBmaWxlOiBwYXJhbUZpbGUsIG1vZGU6IHBhcmFtTW9kZSB9LCBjd2QpO1xyXG4gICAgICAgIC8vIGlmIHBhcmFtZXRlciByZWFkaW5nIG1vZGUgaXMgJ2FsbCcgdGhlbiBjaGFuZ2UgaXRlcmF0aW9uQ291bnQgdG8gdGhlIGFtb3VudCBvZiByb3dzIGluIHRoZSBwYXJhbSBmaWxlXHJcbiAgICAgICAgaWYgKHN1aXRlLnBhcmFtTWFuYWdlciAmJiBwYXJhbU1vZGUgPT0gJ2FsbCcpIHtcclxuICAgICAgICAgICAgc3VpdGUuaXRlcmF0aW9uQ291bnQgPSBzdWl0ZS5wYXJhbU1hbmFnZXIucm93cztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN1aXRlO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRQYXJhbWV0ZXJNYW5hZ2VyOiBhc3luYyBmdW5jdGlvbihtYWluRmlsZVBhdGgsIHBhcmFtT3B0cyA9IG51bGwsIGN3ZCA9IG51bGwsIGF1dG9TZWFyY2ggPSBmYWxzZSkge1xyXG4gICAgICAgIGxldCBwYXJhbUZpbGVQYXRoID0gcGFyYW1PcHRzICYmIHBhcmFtT3B0cy5maWxlID8gcGFyYW1PcHRzLmZpbGUgOiBudWxsO1xyXG4gICAgICAgIGxldCBwYXJhbU1vZGUgPSBwYXJhbU9wdHMgJiYgcGFyYW1PcHRzLm1vZGUgPyBwYXJhbU9wdHMubW9kZSA6ICdzZXEnO1xyXG5cclxuICAgICAgICBpZiAocGFyYW1GaWxlUGF0aCAmJiBjd2QgJiYgIXBhdGguaXNBYnNvbHV0ZShwYXJhbUZpbGVQYXRoKSkge1xyXG4gICAgICAgICAgICBwYXJhbUZpbGVQYXRoID0gcGF0aC5qb2luKGN3ZCwgcGFyYW1GaWxlUGF0aCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5sb2FkUGFyYW1ldGVyTWFuYWdlcihtYWluRmlsZVBhdGgsIHBhcmFtRmlsZVBhdGgsIHBhcmFtTW9kZSwgYXV0b1NlYXJjaCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdlbmVyYXRlVGVzdFN1aXRlRnJvbUpzb25GaWxlOiBhc3luYyBmdW5jdGlvbiAoZmlsZVBhdGgsIHBhcmFtRmlsZSwgcGFyYW1Nb2RlID0gbnVsbCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3QgdGVzdENvbmZpZyA9IHtcclxuICAgICAgICAgICAgLi4ub3B0aW9ucyB8fCB7fSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChwYXJhbUZpbGUpIHtcclxuICAgICAgICAgICAgdGVzdENvbmZpZy5wYXJhbWV0ZXJzID0ge1xyXG4gICAgICAgICAgICAgICAgZmlsZTogcGFyYW1GaWxlLFxyXG4gICAgICAgICAgICAgICAgbW9kZTogcGFyYW1Nb2RlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5nZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uKHJlcXVpcmUoZmlsZVBhdGgpLCB0ZXN0Q29uZmlnKTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0RmlsZU5hbWVXaXRob3V0RXh0OiBmdW5jdGlvbiAoZmlsZVBhdGgpIHtcclxuICAgICAgICB2YXIgZmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKTtcclxuICAgICAgICB2YXIgZmlsZUV4dCA9IHBhdGguZXh0bmFtZShmaWxlUGF0aCk7XHJcbiAgICAgICAgdmFyIGZpbGVQYXRoTm9FeHQgPSBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgZmlsZU5hbWUubGFzdEluZGV4T2YoZmlsZUV4dCkpO1xyXG4gICAgICAgIHJldHVybiBmaWxlUGF0aE5vRXh0O1xyXG4gICAgfSxcclxuXHJcbiAgICBsb2FkUGFyYW1ldGVyTWFuYWdlcjogYXN5bmMgZnVuY3Rpb24obWFpbkZpbGUsIHBhcmFtRmlsZSwgcGFyYW1Nb2RlLCBhdXRvU2VhcmNoID0gZmFsc2UpIHtcclxuICAgICAgICB2YXIgcGFyYW1NYW5hZ2VyID0gbnVsbDtcclxuICAgICAgICAvLyBpZiBwYXJhbSBmaWxlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gY2hlY2sgaWYgSlMgZmlsZSBpcyBjb21pbmcgaW4gcGFpciB3aXRoIGEgcGFyYW1ldGVyIGZpbGUgXHJcbiAgICAgICAgLy8gKGN1cnJlbnRseSBzdXBwb3J0aW5nIENTViBvciBUWFQpXHJcbiAgICAgICAgaWYgKCFwYXJhbUZpbGUgJiYgYXV0b1NlYXJjaCkge1xyXG4gICAgICAgICAgICB2YXIgZmlsZU5hbWVOb0V4dCA9IHNlbGYuZ2V0RmlsZU5hbWVXaXRob3V0RXh0KG1haW5GaWxlKTtcclxuICAgICAgICAgICAgdmFyIGNzdlBhcmFtRmlsZSA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUobWFpbkZpbGUpLCBmaWxlTmFtZU5vRXh0ICsgJy5jc3YnKTtcclxuICAgICAgICAgICAgdmFyIHR4dFBhcmFtRmlsZSA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUobWFpbkZpbGUpLCBmaWxlTmFtZU5vRXh0ICsgJy50eHQnKTtcclxuICAgICAgICAgICAgdmFyIHhsc1BhcmFtRmlsZSA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUobWFpbkZpbGUpLCBmaWxlTmFtZU5vRXh0ICsgJy54bHMnKTtcclxuICAgICAgICAgICAgdmFyIHhsc3hQYXJhbUZpbGUgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKG1haW5GaWxlKSwgZmlsZU5hbWVOb0V4dCArICcueGxzeCcpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoY3N2UGFyYW1GaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1GaWxlID0gY3N2UGFyYW1GaWxlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZzLmV4aXN0c1N5bmModHh0UGFyYW1GaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1GaWxlID0gdHh0UGFyYW1GaWxlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZzLmV4aXN0c1N5bmMoeGxzUGFyYW1GaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1GaWxlID0geGxzUGFyYW1GaWxlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZzLmV4aXN0c1N5bmMoeGxzeFBhcmFtRmlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtRmlsZSA9IHhsc3hQYXJhbUZpbGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcmFtRmlsZSkge1xyXG4gICAgICAgICAgICBwYXJhbU1hbmFnZXIgPSBuZXcgcmVxdWlyZSgnLi9wYXJhbS1tYW5hZ2VyJykocGFyYW1GaWxlLCBwYXJhbU1vZGUgfHwgJ3NlcXVlbnRpYWwnKTtcclxuICAgICAgICAgICAgYXdhaXQgcGFyYW1NYW5hZ2VyLmluaXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHBhcmFtTWFuYWdlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9LFxyXG5cclxuICAgIHJlc29sdmVQYXRoOiBmdW5jdGlvbihwYXRoVG9SZXNvbHZlLCBiYXNlRm9sZGVyKSB7XHJcbiAgICAgICAgaWYgKHBhdGguaXNBYnNvbHV0ZShwYXRoVG9SZXNvbHZlKSlcclxuICAgICAgICAgICAgcmV0dXJuIHBhdGhUb1Jlc29sdmU7XHJcbiAgICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZShiYXNlRm9sZGVyLCBwYXRoVG9SZXNvbHZlKTtcclxuICAgIH0sXHJcblxyXG4gICAgbWFrZVNlcmlhbGl6YWJsZTogZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBlcnIgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkZXN0cm95Q2lyY3VsYXIoZXJyLCBbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlcnI7XHJcblxyXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qb25wYWNrZXIvZGVzdHJveS1jaXJjdWxhclxyXG4gICAgICAgIGZ1bmN0aW9uIGRlc3Ryb3lDaXJjdWxhcihmcm9tLCBzZWVuKSB7XHJcbiAgICAgICAgICAgIHZhciB0byA9IEFycmF5LmlzQXJyYXkoZnJvbSkgPyBbXSA6IHt9O1xyXG4gICAgICAgICAgICBzZWVuLnB1c2goZnJvbSk7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZyb20pLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZyb21ba2V5XSB8fCAodHlwZW9mIGZyb21ba2V5XSAhPSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShmcm9tW2tleV0pKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvW2tleV0gPSBmcm9tW2tleV07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlZW4uaW5kZXhPZihmcm9tW2tleV0pID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9ba2V5XSA9IGRlc3Ryb3lDaXJjdWxhcihmcm9tW2tleV0sIHNlZW4uc2xpY2UoMCkpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHRvW2tleV0gPSAnW0NpcmN1bGFyXSc7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdG87XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBnZXRNZXRob2RTaWduYXR1cmU6IGZ1bmN0aW9uKG1vZHVsZU5hbWUsIG1ldGhvZE5hbWUsIG1ldGhvZEFyZ3MpIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlTmFtZSArICcuJyArIG1ldGhvZE5hbWUgKyAnKCcgKyBzZWxmLnN0cmluZ2lmeShtZXRob2RBcmdzLCAwKSArICcpJztcclxuICAgIH0sXHJcblxyXG4gICAgLypcclxuICAgICAqIFVzZWQgdG8gc2VyaWFsaXplIG94eWdlbiBjb21tYW5kIHBhcmFtZXRlcnMuIFByb2R1Y2VzIGEgbm9uLWNvbXBsaWFudCBKU09OIHNlcmlhbGl6YXRpb24uXHJcbiAgICAgKi9cclxuICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKGFyZ3MsIGluZGVudGF0aW9uID0gMCkge1xyXG4gICAgICAgIGxldCBzdHI7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgc3RyID0gSlNPTi5zdHJpbmdpZnkoYXJncywgKGtleSwgdmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnKSB7ICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL2pzYmkvaXNzdWVzLzMwXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdW5kZWZpbmVkIGlzIGluc2lkZSBhbiBhcnJheSB0aGVuIGl0IHdpbGwgYmUgc2VyaWFsaXplZCBhcyBudWxsLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGhvd2V2ZXIgaWYgd2UganVzdCByZXR1cm4gJ3VuZGVmaW5lZCcgaGVyZSBhcyBzdHJpbmcsIGl0IHdpbGwgYmUgZW5jbG9zZWQgaW4gcXVvdGVzLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNvIHJldHVybiBtYWdpYyBzdHJpbmcgaW5zdGVhZCBhbmQgdHJpbSB0aGUgcXVvdGVzIGxhdGVyIG9uXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdfX1VOREVGSU5FRCc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJy8nICsgdmFsdWUuc291cmNlICsgJy8nICsgdmFsdWUuZmxhZ3M7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH0sIGluZGVudGF0aW9uKTtcclxuICAgICAgICAgICAgLy8gdHJpbSB0aGUgZW5jbG9zaW5nIGFycmF5IGFuZCBhbnkgd2hpdGVzcGFjZVxyXG4gICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgvXlxcW3sxfVxccyp8XFxzKlxcXXsxfSQvZywgJycpO1xyXG4gICAgICAgICAgICAvLyBjb252ZXJ0IG1hZ2ljICd1bmRlZmluZWQnIHN0cmluZyB0byBwcm9wZXIgcmVwcmVzZW50YXRpb25cclxuICAgICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoL1wiX19VTkRFRklORURcIi9nLCAndW5kZWZpbmVkJyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBzZXJpYWxpemUgY29tbWFuZCBhcmd1bWVudHM6ICcsIGUpO1xyXG4gICAgICAgICAgICBzdHIgPSBlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzSW5EZWJ1Z01vZGU6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIC8vIHRoaXMgYWx3YXlzIHRydWU7XHJcbiAgICAgICAgLy8gY29uc3QgYXJndiA9IHByb2Nlc3MuZXhlY0FyZ3Yuam9pbigpO1xyXG5cclxuICAgICAgICAvLyBjb25zb2xlLmxvZygncHJvY2Vzcy5kZWJ1Z1BvcnQnLCBwcm9jZXNzLmRlYnVnUG9ydCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJhcmd2LmluY2x1ZGVzKCdpbnNwZWN0JylcIiwgYXJndi5pbmNsdWRlcygnaW5zcGVjdCcpKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImFyZ3YuaW5jbHVkZXMoJ2luc3BlY3QtYnJrJylcIiwgYXJndi5pbmNsdWRlcygnaW5zcGVjdC1icmsnKSk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJhcmd2LmluY2x1ZGVzKCdkZWJ1ZycpXCIsIGFyZ3YuaW5jbHVkZXMoJ2RlYnVnJykpO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gcHJvY2Vzcy5kZWJ1Z1BvcnQgfHwgYXJndi5pbmNsdWRlcygnaW5zcGVjdCcpIHx8IGFyZ3YuaW5jbHVkZXMoJ2luc3BlY3QtYnJrJykgfHwgYXJndi5pbmNsdWRlcygnZGVidWcnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSxcclxuXHJcbiAgICBsb2FkVGVzdEhvb2tzOiBmdW5jdGlvbihvcHRpb25zKSB7XHJcbiAgICAgICAgbGV0IGhvb2tzID0gRFVNTVlfSE9PS1M7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50YXJnZXQgJiYgb3B0aW9ucy50YXJnZXQubmFtZSA9PT0gJ294eWdlbi5jb25mJykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaG9va3MgPSByZXF1aXJlKG9wdGlvbnMudGFyZ2V0LnBhdGgpLmhvb2tzIHx8IERVTU1ZX0hPT0tTO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0Vycm9yIGxvYWRpbmcgdXNlciBob29rczonLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaG9va3M7XHJcbiAgICB9LFxyXG5cclxuICAgIGV4ZWN1dGVUZXN0SG9vazogYXN5bmMgZnVuY3Rpb24oaG9va3MsIG1ldGhvZCwgYXJncykge1xyXG4gICAgICAgIC8vIGlmIGhvb2sgaXMgbm90IGRlZmluZWQsIGp1c3QgcXVpZXRseSBpZ25vcmUgaXRcclxuICAgICAgICBpZiAoIWhvb2tzIHx8ICFtZXRob2QgfHwgIWhvb2tzW21ldGhvZF0gfHwgdHlwZW9mIGhvb2tzW21ldGhvZF0gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChnbG9iYWwuY2hhaUFuZE1vY2tlcnlMb2FkZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hhaSA9IHJlcXVpcmUoJ2NoYWknKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vY2tlcnkgPSByZXF1aXJlKCdtb2NrZXJ5Jyk7XHJcbiAgICAgICAgICAgICAgICBtb2NrZXJ5LmVuYWJsZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgdXNlQ2xlYW5DYWNoZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB3YXJuT25SZXBsYWNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICB3YXJuT25VbnJlZ2lzdGVyZWQ6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIG1vY2tlcnkucmVnaXN0ZXJNb2NrKCdjaGFpJywgY2hhaSk7XHJcbiAgICAgICAgICAgICAgICBnbG9iYWwuY2hhaUFuZE1vY2tlcnlMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBhd2FpdCBob29rc1ttZXRob2RdLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEhvb2sgXCIke21ldGhvZH1cIiBoYXMgdGhyb3duIGFuIGVycm9yOiAke2UudG9TdHJpbmcoKX1gKTtcclxuICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE94TW9kdWxlc0RpcjogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdveF9tb2R1bGVzJyk7XHJcbiAgICB9LFxyXG5cclxuICAgIGhvb2tMb2dzKGxvZ2dlcikge1xyXG4gICAgICAgIGNvbnN0IG9yaWdsb2cgPSBjb25zb2xlLmxvZztcclxuICAgICAgICBjb25zdCBvcmlnRGVidWcgPSBjb25zb2xlLmRlYnVnO1xyXG4gICAgICAgIGNvbnN0IG9yaWdJbmZvID0gY29uc29sZS5pbmZvO1xyXG4gICAgICAgIGNvbnN0IG9yaWdXYXJuID0gY29uc29sZS53YXJuO1xyXG4gICAgICAgIGNvbnN0IG9yaWdFcnJvciA9IGNvbnNvbGUuZXJyb3I7XHJcblxyXG4gICAgICAgIGNvbnN0IHByb2Nlc3NBcmdzID0gKGFyZ3VtZW50QXJyYXkpID0+IHtcclxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50QXJyYXkgJiYgYXJndW1lbnRBcnJheS5tYXApIHtcclxuICAgICAgICAgICAgICAgIGFyZ3VtZW50QXJyYXkubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChgJHtpdGVtfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke3V0aWwuaW5zcGVjdChpdGVtKX1gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJyk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2cgPSBmdW5jdGlvbiAoLi4uYXJndW1lbnRBcnJheSkge1xyXG4gICAgICAgICAgICBvcmlnbG9nLmFwcGx5KHRoaXMsIGFyZ3VtZW50QXJyYXkpO1xyXG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhwcm9jZXNzQXJncyhhcmd1bWVudEFycmF5KSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zb2xlLmRlYnVnID0gZnVuY3Rpb24gKC4uLmFyZ3VtZW50QXJyYXkpIHtcclxuICAgICAgICAgICAgb3JpZ0RlYnVnLmFwcGx5KHRoaXMsIGFyZ3VtZW50QXJyYXkpO1xyXG4gICAgICAgICAgICBsb2dnZXIuZGVidWcocHJvY2Vzc0FyZ3MoYXJndW1lbnRBcnJheSkpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc29sZS5pbmZvID0gZnVuY3Rpb24gKC4uLmFyZ3VtZW50QXJyYXkpIHtcclxuICAgICAgICAgICAgb3JpZ0luZm8uYXBwbHkodGhpcywgYXJndW1lbnRBcnJheSk7XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKHByb2Nlc3NBcmdzKGFyZ3VtZW50QXJyYXkpKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnNvbGUud2FybiA9IGZ1bmN0aW9uICguLi5hcmd1bWVudEFycmF5KSB7XHJcbiAgICAgICAgICAgIG9yaWdXYXJuLmFwcGx5KHRoaXMsIGFyZ3VtZW50QXJyYXkpO1xyXG4gICAgICAgICAgICBsb2dnZXIud2Fybihwcm9jZXNzQXJncyhhcmd1bWVudEFycmF5KSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zb2xlLmVycm9yID0gZnVuY3Rpb24gKC4uLmFyZ3VtZW50QXJyYXkpIHtcclxuICAgICAgICAgICAgb3JpZ0Vycm9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50QXJyYXkpO1xyXG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IocHJvY2Vzc0FyZ3MoYXJndW1lbnRBcnJheSkpO1xyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG5cclxuICAgIG1ha2VUcmFuc2FjdGlvbkZhaWxlZElmU3RlcEZhaWxlZChzdGVwcykge1xyXG4gICAgICAgIGlmIChzdGVwcyAmJiBzdGVwcy5sZW5ndGggJiYgc3RlcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgbGFzdEZpbmRlZFRyYW5zYWN0aW9uSW5kZXggPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgbmV3U3RlcHMgPSBbLi4uc3RlcHNdO1xyXG4gICAgICAgICAgICBzdGVwcy5tYXAoKGl0ZW0sIGlkeCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubmFtZSAmJiBpdGVtLm5hbWUuaW5jbHVkZXMgJiYgaXRlbS5uYW1lLmluY2x1ZGVzKCcudHJhbnNhY3Rpb24oJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBsYXN0RmluZGVkVHJhbnNhY3Rpb25JbmRleCA9IGlkeDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGxhc3RGaW5kZWRUcmFuc2FjdGlvbkluZGV4ID09PSAnbnVtYmVyJyAmJiBpdGVtLnN0YXR1cyAmJiBpdGVtLnN0YXR1cyA9PT0gJ2ZhaWxlZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdTdGVwc1tsYXN0RmluZGVkVHJhbnNhY3Rpb25JbmRleF1bJ3N0YXR1cyddID0gJ2ZhaWxlZCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIG5ld1N0ZXBzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHN0ZXBzO1xyXG4gICAgfSxcclxuXHJcbiAgICBkZWNyeXB0KHRleHQpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgZW5jcnlwdGVkVGV4dCA9IEJ1ZmZlci5mcm9tKHRleHQsICdoZXgnKTtcclxuICAgICAgICAgICAgbGV0IGRlY2lwaGVyID0gY3J5cHRvLmNyZWF0ZURlY2lwaGVyaXYoYWxnb3JpdGhtLCBrZXksIGl2KTtcclxuICAgICAgICAgICAgbGV0IGRlY3J5cHRlZCA9IGRlY2lwaGVyLnVwZGF0ZShlbmNyeXB0ZWRUZXh0KTtcclxuICAgICAgICAgICAgZGVjcnlwdGVkID0gQnVmZmVyLmNvbmNhdChbZGVjcnlwdGVkLCBkZWNpcGhlci5maW5hbCgpXSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJldFZhbCA9IGRlY3J5cHRlZC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERlY3J5cHRSZXN1bHQocmV0VmFsKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeHlnZW5FcnJvcihlcnJvckhlbHBlci5lcnJvckNvZGUuQ1JZUFRPX0VSUk9SLCBcIlRoZSBwcm92aWRlZCBhcmd1bWVudCBkb2Vzbid0IHNlZW0gdG8gYmUgYSB2YWxpZCBjaXBoZXIgcHJvZHVjZWQgYnkgJ3V0aWxzLmVuY3J5cHQnXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZW5jcnlwdCh0ZXh0KSB7XHJcbiAgICAgICAgbGV0IGNpcGhlciA9IGNyeXB0by5jcmVhdGVDaXBoZXJpdihhbGdvcml0aG0sIGtleSwgaXYpO1xyXG4gICAgICAgIGxldCBlbmNyeXB0ZWQgPSBjaXBoZXIudXBkYXRlKHRleHQpO1xyXG4gICAgICAgIGVuY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQoW2VuY3J5cHRlZCwgY2lwaGVyLmZpbmFsKCldKTtcclxuICAgICAgICByZXR1cm4gZW5jcnlwdGVkLnRvU3RyaW5nKCdoZXgnKTtcclxuICAgIH0sXHJcblxyXG4gICAgc2xlZXA6IGZ1bmN0aW9uKHRpbWVvdXQpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZW91dCkpO1xyXG4gICAgfVxyXG59O1xyXG4iXX0=
370
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbC5qcyJdLCJuYW1lcyI6WyJwYXRoIiwicmVxdWlyZSIsImZzIiwibW9tZW50IiwiY3J5cHRvIiwidXRpbCIsInBhc3N3b3JkIiwiZW5jcnlwdGlvbktleSIsImtleSIsInNjcnlwdFN5bmMiLCJpdiIsIkJ1ZmZlciIsImFsbG9jIiwiYWxnb3JpdGhtIiwiRGVjcnlwdFJlc3VsdCIsInJlc3VsdCIsImRlY3J5cHRSZXN1bHQiLCJnZXREZWNyeXB0UmVzdWx0IiwiRFVNTVlfSE9PS1MiLCJiZWZvcmVUZXN0IiwiYmVmb3JlU3VpdGUiLCJiZWZvcmVDYXNlIiwiYmVmb3JlQ29tbWFuZCIsImFmdGVyQ29tbWFuZCIsImFmdGVyVGVzdCIsImFmdGVyU3VpdGUiLCJhZnRlckNhc2UiLCJzZWxmIiwibW9kdWxlIiwiZXhwb3J0cyIsImdlbmVyYXRlVW5pcXVlSWQiLCJyYW5kb21CeXRlcyIsInRvU3RyaW5nIiwiZ2V0VGltZVN0YW1wIiwidXRjIiwidmFsdWVPZiIsImdlbmVyYXRlVGVzdFN1aXRlRnJvbUpzb24iLCJzdWl0ZURlZiIsInRlc3RDb25maWciLCJpdGVyYXRpb25Db3VudCIsInN1aXRlIiwiaWQiLCJuYW1lIiwiaXRlcmF0aW9ucyIsInN1aXRlRmlsZVBhdGgiLCJqb2luIiwidGFyZ2V0IiwiY3dkIiwicGFyYW1NYW5hZ2VyIiwiZ2V0UGFyYW1ldGVyTWFuYWdlciIsInBhcmFtZXRlcnMiLCJnZXRNb2RlIiwicm93cyIsImNhcGFiaWxpdGllcyIsImVudmlyb25tZW50Iiwib3B0aW9ucyIsInBhcmFsbGVsIiwiY29uY3VycmVuY3kiLCJjYXNlcyIsImZvckVhY2giLCJjYXNlRGVmIiwidGMiLCJnZXRGaWxlTmFtZVdpdGhvdXRFeHQiLCJyZXNvbHZlUGF0aCIsImZvcm1hdCIsInB1c2giLCJnZW5lcmF0ZVRlc3RTdWl0ZUZyb21KU0ZpbGUiLCJmaWxlUGF0aCIsInBhcmFtRmlsZSIsInBhcmFtTW9kZSIsIm5vUGFyYW1BdXRvU2VhcmNoIiwiZmlsZU5hbWVOb0V4dCIsInRlc3RjYXNlIiwicmVvcGVuU2Vzc2lvbiIsImRpcm5hbWUiLCJmaWxlIiwibW9kZSIsIm1haW5GaWxlUGF0aCIsInBhcmFtT3B0cyIsImF1dG9TZWFyY2giLCJwYXJhbUZpbGVQYXRoIiwiaXNBYnNvbHV0ZSIsImxvYWRQYXJhbWV0ZXJNYW5hZ2VyIiwiZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbkZpbGUiLCJmaWxlTmFtZSIsImJhc2VuYW1lIiwiZmlsZUV4dCIsImV4dG5hbWUiLCJmaWxlUGF0aE5vRXh0Iiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJtYWluRmlsZSIsImNzdlBhcmFtRmlsZSIsInR4dFBhcmFtRmlsZSIsInhsc1BhcmFtRmlsZSIsInhsc3hQYXJhbUZpbGUiLCJleGlzdHNTeW5jIiwiaW5pdCIsInBhdGhUb1Jlc29sdmUiLCJiYXNlRm9sZGVyIiwicmVzb2x2ZSIsIm1ha2VTZXJpYWxpemFibGUiLCJlcnIiLCJkZXN0cm95Q2lyY3VsYXIiLCJmcm9tIiwic2VlbiIsInRvIiwiQXJyYXkiLCJpc0FycmF5IiwiT2JqZWN0Iiwia2V5cyIsImluZGV4T2YiLCJzbGljZSIsImdldE1ldGhvZFNpZ25hdHVyZSIsIm1vZHVsZU5hbWUiLCJtZXRob2ROYW1lIiwibWV0aG9kQXJncyIsInN0cmluZ2lmeSIsImFyZ3MiLCJpbmRlbnRhdGlvbiIsInN0ciIsIkpTT04iLCJ2YWx1ZSIsIkVycm9yIiwiUmVnRXhwIiwic291cmNlIiwiZmxhZ3MiLCJyZXBsYWNlIiwiZW5kc1dpdGgiLCJsZW5ndGgiLCJlIiwiY29uc29sZSIsIndhcm4iLCJpbnNwZWN0IiwiZGVwdGgiLCJpc0luRGVidWdNb2RlIiwibG9hZFRlc3RIb29rcyIsImhvb2tzIiwiZXhlY3V0ZVRlc3RIb29rIiwibWV0aG9kIiwiZ2xvYmFsIiwiY2hhaUFuZE1vY2tlcnlMb2FkZWQiLCJjaGFpIiwibW9ja2VyeSIsImVuYWJsZSIsInVzZUNsZWFuQ2FjaGUiLCJ3YXJuT25SZXBsYWNlIiwid2Fybk9uVW5yZWdpc3RlcmVkIiwicmVnaXN0ZXJNb2NrIiwiYXBwbHkiLCJ1bmRlZmluZWQiLCJlcnJvciIsImdldE94TW9kdWxlc0RpciIsIl9fZGlybmFtZSIsImhvb2tMb2dzIiwibG9nZ2VyIiwib3JpZ2xvZyIsImxvZyIsIm9yaWdEZWJ1ZyIsImRlYnVnIiwib3JpZ0luZm8iLCJpbmZvIiwib3JpZ1dhcm4iLCJvcmlnRXJyb3IiLCJwcm9jZXNzQXJncyIsImFyZ3VtZW50QXJyYXkiLCJtYXAiLCJpdGVtIiwibWFrZVRyYW5zYWN0aW9uRmFpbGVkSWZTdGVwRmFpbGVkIiwic3RlcHMiLCJsYXN0RmluZGVkVHJhbnNhY3Rpb25JbmRleCIsIm5ld1N0ZXBzIiwiaWR4IiwiaW5jbHVkZXMiLCJzdGF0dXMiLCJkZWNyeXB0IiwidGV4dCIsImVuY3J5cHRlZFRleHQiLCJkZWNpcGhlciIsImNyZWF0ZURlY2lwaGVyaXYiLCJkZWNyeXB0ZWQiLCJ1cGRhdGUiLCJjb25jYXQiLCJmaW5hbCIsInJldFZhbCIsIk94eWdlbkVycm9yIiwiZXJyb3JIZWxwZXIiLCJlcnJvckNvZGUiLCJDUllQVE9fRVJST1IiLCJlbmNyeXB0IiwiY2lwaGVyIiwiY3JlYXRlQ2lwaGVyaXYiLCJlbmNyeXB0ZWQiLCJzbGVlcCIsInRpbWVvdXQiLCJQcm9taXNlIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6Ijs7OztBQXNCQTs7QUFDQTs7OztBQVhBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsSUFBRCxDQUFsQjs7QUFDQSxNQUFNRSxNQUFNLEdBQUdGLE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1HLE1BQU0sR0FBR0gsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSixPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNSyxRQUFRLEdBQUdMLE9BQU8sQ0FBQyxvQkFBRCxDQUFQLENB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cHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBIZWxwZXIgbW9kdWxlIGZvciBpbnRlcm5hbCBPeHlnZW4gdXNlXHJcbiAqL1xyXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoJ21vbWVudCcpO1xyXG5jb25zdCBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcclxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcclxuY29uc3QgcGFzc3dvcmQgPSByZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS5lbmNyeXB0aW9uS2V5O1xyXG5jb25zdCBrZXkgPSBjcnlwdG8uc2NyeXB0U3luYyhwYXNzd29yZCwgJ0dmRycsIDI0KTtcclxuY29uc3QgaXYgPSBCdWZmZXIuYWxsb2MoMTYsIDApO1xyXG5jb25zdCBhbGdvcml0aG0gPSAnYWVzLTE5Mi1jYmMnO1xyXG5cclxuaW1wb3J0IE94eWdlbkVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbmltcG9ydCBlcnJvckhlbHBlciBmcm9tICcuLi9lcnJvcnMvaGVscGVyJztcclxuXHJcbmZ1bmN0aW9uIERlY3J5cHRSZXN1bHQocmVzdWx0KSB7XHJcbiAgICBjb25zdCBkZWNyeXB0UmVzdWx0ID0gcmVzdWx0O1xyXG5cclxuICAgIHRoaXMuZ2V0RGVjcnlwdFJlc3VsdCA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gZGVjcnlwdFJlc3VsdDtcclxuICAgIH07XHJcbn1cclxuXHJcbmNvbnN0IERVTU1ZX0hPT0tTID0ge1xyXG4gICAgYmVmb3JlVGVzdDogKCkgPT4ge30sXHJcbiAgICBiZWZvcmVTdWl0ZTogKCkgPT4ge30sXHJcbiAgICBiZWZvcmVDYXNlOiAoKSA9PiB7fSxcclxuICAgIGJlZm9yZUNvbW1hbmQ6ICgpID0+IHt9LFxyXG4gICAgYWZ0ZXJDb21tYW5kOiAoKSA9PiB7fSxcclxuICAgIGFmdGVyVGVzdDogKCkgPT4ge30sXHJcbiAgICBhZnRlclN1aXRlOiAoKSA9PiB7fSxcclxuICAgIGFmdGVyQ2FzZTogKCkgPT4ge30sXHJcbn07XHJcblxyXG52YXIgc2VsZiA9IG1vZHVsZS5leHBvcnRzID0ge1xyXG5cclxuICAgIGdlbmVyYXRlVW5pcXVlSWQ6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNCkudG9TdHJpbmcoJ2hleCcpO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRUaW1lU3RhbXA6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQudXRjKCkudmFsdWVPZigpO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uOiBhc3luYyBmdW5jdGlvbihzdWl0ZURlZiwgdGVzdENvbmZpZywgaXRlcmF0aW9uQ291bnQgPSAxKSB7XHJcbiAgICAgICAgdmFyIHN1aXRlID0gbmV3IHJlcXVpcmUoJy4uL21vZGVsL3Rlc3RzdWl0ZS5qcycpKCk7XHJcbiAgICAgICAgc3VpdGUuaWQgPSBudWxsO1xyXG4gICAgICAgIHN1aXRlLm5hbWUgPSBzdWl0ZURlZi5uYW1lO1xyXG4gICAgICAgIHN1aXRlLmlkID0gc3VpdGVEZWYuaWQ7XHJcbiAgICAgICAgc3VpdGUuaXRlcmF0aW9uQ291bnQgPSBzdWl0ZURlZi5pdGVyYXRpb25zIHx8IHRlc3RDb25maWcuaXRlcmF0aW9ucyB8fCBpdGVyYXRpb25Db3VudDtcclxuICAgICAgICBjb25zdCBzdWl0ZUZpbGVQYXRoID0gc3VpdGVEZWYucGF0aCB8fCBwYXRoLmpvaW4odGVzdENvbmZpZy50YXJnZXQuY3dkLCAnc3VpdGVzJywgYCR7c3VpdGVEZWYubmFtZX0uanNvbmApO1xyXG4gICAgICAgIHN1aXRlLnBhcmFtTWFuYWdlciA9IGF3YWl0IHNlbGYuZ2V0UGFyYW1ldGVyTWFuYWdlcihzdWl0ZUZpbGVQYXRoLCB0ZXN0Q29uZmlnLnBhcmFtZXRlcnMsIHRlc3RDb25maWcudGFyZ2V0LmN3ZCk7XHJcbiAgICAgICAgaWYgKHN1aXRlLnBhcmFtTWFuYWdlciAmJiBzdWl0ZS5wYXJhbU1hbmFnZXIuZ2V0TW9kZSgpID09ICdhbGwnKSB7XHJcbiAgICAgICAgICAgIHN1aXRlLml0ZXJhdGlvbkNvdW50ID0gc3VpdGUucGFyYW1NYW5hZ2VyLnJvd3M7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1aXRlLmNhcGFiaWxpdGllcyA9IHN1aXRlRGVmLmNhcGFiaWxpdGllcyB8fCB0ZXN0Q29uZmlnLmNhcGFiaWxpdGllcyB8fCB7fTtcclxuICAgICAgICBzdWl0ZS5lbnZpcm9ubWVudCA9IHRlc3RDb25maWcuZW52aXJvbm1lbnQgfHwgbnVsbDtcclxuICAgICAgICBzdWl0ZS5vcHRpb25zID0gdGVzdENvbmZpZy5vcHRpb25zIHx8IG51bGw7XHJcbiAgICAgICAgc3VpdGUucGFyYWxsZWwgPSBzdWl0ZURlZi5wYXJhbGxlbCB8fCB0ZXN0Q29uZmlnLnBhcmFsbGVsIHx8IHRlc3RDb25maWcuY29uY3VycmVuY3kgfHwgMTtcclxuICAgICAgICAvLyBpbml0aWFsaXplIGVhY2ggdGVzdCBjYXNlXHJcbiAgICAgICAgc3VpdGVEZWYuY2FzZXMuZm9yRWFjaChjYXNlRGVmID0+IHtcclxuICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSB0ZXN0Y2FzZSBvYmplY3RcclxuICAgICAgICAgICAgY29uc3QgdGMgPSBuZXcgcmVxdWlyZSgnLi4vbW9kZWwvdGVzdGNhc2UuanMnKSgpO1xyXG4gICAgICAgICAgICBpZiAoY2FzZURlZi5uYW1lKVxyXG4gICAgICAgICAgICAgICAgdGMubmFtZSA9IGNhc2VEZWYubmFtZTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGMubmFtZSA9IHNlbGYuZ2V0RmlsZU5hbWVXaXRob3V0RXh0KGNhc2VEZWYucGF0aCk7XHJcbiAgICAgICAgICAgIHRjLnBhdGggPSBzZWxmLnJlc29sdmVQYXRoKGNhc2VEZWYucGF0aCwgdGVzdENvbmZpZy50YXJnZXQuY3dkKTtcclxuICAgICAgICAgICAgdGMuZm9ybWF0ID0gJ2pzJztcclxuICAgICAgICAgICAgdGMuaXRlcmF0aW9uQ291bnQgPSBjYXNlRGVmLml0ZXJhdGlvbnMgfHwgMTtcclxuICAgICAgICAgICAgc3VpdGUuY2FzZXMucHVzaCh0Yyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHN1aXRlO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZW5lcmF0ZVRlc3RTdWl0ZUZyb21KU0ZpbGU6IGFzeW5jIGZ1bmN0aW9uIChmaWxlUGF0aCwgcGFyYW1GaWxlID0gbnVsbCwgcGFyYW1Nb2RlID0gbnVsbCwgbm9QYXJhbUF1dG9TZWFyY2ggPSB0cnVlLCBpdGVyYXRpb25Db3VudCA9IDEpIHtcclxuICAgICAgICB2YXIgZmlsZU5hbWVOb0V4dCA9IHNlbGYuZ2V0RmlsZU5hbWVXaXRob3V0RXh0KGZpbGVQYXRoKTtcclxuXHJcbiAgICAgICAgdmFyIHRlc3RjYXNlID0gbmV3IHJlcXVpcmUoJy4uL21vZGVsL3Rlc3RjYXNlLmpzJykoKTtcclxuICAgICAgICB0ZXN0Y2FzZS5uYW1lID0gZmlsZU5hbWVOb0V4dDtcclxuICAgICAgICB0ZXN0Y2FzZS5wYXRoID0gZmlsZVBhdGg7XHJcbiAgICAgICAgdGVzdGNhc2UuZm9ybWF0ID0gJ2pzJztcclxuICAgICAgICB0ZXN0Y2FzZS5pdGVyYXRpb25Db3VudCA9IDE7XHJcblxyXG4gICAgICAgIHZhciBzdWl0ZSA9IG5ldyByZXF1aXJlKCcuLi9tb2RlbC90ZXN0c3VpdGUuanMnKSgpO1xyXG4gICAgICAgIHN1aXRlLm5hbWUgPSB0ZXN0Y2FzZS5uYW1lO1xyXG4gICAgICAgIHN1aXRlLmlkID0gdGVzdGNhc2UuaWQ7XHJcbiAgICAgICAgc3VpdGUuaXRlcmF0aW9uQ291bnQgPSBpdGVyYXRpb25Db3VudDtcclxuICAgICAgICBzdWl0ZS5jYXNlcy5wdXNoKHRlc3RjYXNlKTtcclxuICAgICAgICBpZiAodGVzdGNhc2UucmVvcGVuU2Vzc2lvbikge1xyXG4gICAgICAgICAgICBzdWl0ZS5yZW9wZW5TZXNzaW9uID0gdGVzdGNhc2UucmVvcGVuU2Vzc2lvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3dkID0gcGF0aC5kaXJuYW1lKGZpbGVQYXRoKTtcclxuICAgICAgICBzdWl0ZS5wYXJhbU1hbmFnZXIgPSBhd2FpdCBzZWxmLmdldFBhcmFtZXRlck1hbmFnZXIoZmlsZVBhdGgsIHsgZmlsZTogcGFyYW1GaWxlLCBtb2RlOiBwYXJhbU1vZGUgfSwgY3dkKTtcclxuICAgICAgICAvLyBpZiBwYXJhbWV0ZXIgcmVhZGluZyBtb2RlIGlzICdhbGwnIHRoZW4gY2hhbmdlIGl0ZXJhdGlvbkNvdW50IHRvIHRoZSBhbW91bnQgb2Ygcm93cyBpbiB0aGUgcGFyYW0gZmlsZVxyXG4gICAgICAgIGlmIChzdWl0ZS5wYXJhbU1hbmFnZXIgJiYgcGFyYW1Nb2RlID09ICdhbGwnKSB7XHJcbiAgICAgICAgICAgIHN1aXRlLml0ZXJhdGlvbkNvdW50ID0gc3VpdGUucGFyYW1NYW5hZ2VyLnJvd3M7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdWl0ZTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0UGFyYW1ldGVyTWFuYWdlcjogYXN5bmMgZnVuY3Rpb24obWFpbkZpbGVQYXRoLCBwYXJhbU9wdHMgPSBudWxsLCBjd2QgPSBudWxsLCBhdXRvU2VhcmNoID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgcGFyYW1GaWxlUGF0aCA9IHBhcmFtT3B0cyAmJiBwYXJhbU9wdHMuZmlsZSA/IHBhcmFtT3B0cy5maWxlIDogbnVsbDtcclxuICAgICAgICBsZXQgcGFyYW1Nb2RlID0gcGFyYW1PcHRzICYmIHBhcmFtT3B0cy5tb2RlID8gcGFyYW1PcHRzLm1vZGUgOiAnc2VxJztcclxuXHJcbiAgICAgICAgaWYgKHBhcmFtRmlsZVBhdGggJiYgY3dkICYmICFwYXRoLmlzQWJzb2x1dGUocGFyYW1GaWxlUGF0aCkpIHtcclxuICAgICAgICAgICAgcGFyYW1GaWxlUGF0aCA9IHBhdGguam9pbihjd2QsIHBhcmFtRmlsZVBhdGgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYubG9hZFBhcmFtZXRlck1hbmFnZXIobWFpbkZpbGVQYXRoLCBwYXJhbUZpbGVQYXRoLCBwYXJhbU1vZGUsIGF1dG9TZWFyY2gpO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uRmlsZTogYXN5bmMgZnVuY3Rpb24gKGZpbGVQYXRoLCBwYXJhbUZpbGUsIHBhcmFtTW9kZSA9IG51bGwsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IHRlc3RDb25maWcgPSB7XHJcbiAgICAgICAgICAgIC4uLm9wdGlvbnMgfHwge30sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAocGFyYW1GaWxlKSB7XHJcbiAgICAgICAgICAgIHRlc3RDb25maWcucGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgICAgIGZpbGU6IHBhcmFtRmlsZSxcclxuICAgICAgICAgICAgICAgIG1vZGU6IHBhcmFtTW9kZSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbihyZXF1aXJlKGZpbGVQYXRoKSwgdGVzdENvbmZpZyk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldEZpbGVOYW1lV2l0aG91dEV4dDogZnVuY3Rpb24gKGZpbGVQYXRoKSB7XHJcbiAgICAgICAgdmFyIGZpbGVOYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XHJcbiAgICAgICAgdmFyIGZpbGVFeHQgPSBwYXRoLmV4dG5hbWUoZmlsZVBhdGgpO1xyXG4gICAgICAgIHZhciBmaWxlUGF0aE5vRXh0ID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIGZpbGVOYW1lLmxhc3RJbmRleE9mKGZpbGVFeHQpKTtcclxuICAgICAgICByZXR1cm4gZmlsZVBhdGhOb0V4dDtcclxuICAgIH0sXHJcblxyXG4gICAgbG9hZFBhcmFtZXRlck1hbmFnZXI6IGFzeW5jIGZ1bmN0aW9uKG1haW5GaWxlLCBwYXJhbUZpbGUsIHBhcmFtTW9kZSwgYXV0b1NlYXJjaCA9IGZhbHNlKSB7XHJcbiAgICAgICAgdmFyIHBhcmFtTWFuYWdlciA9IG51bGw7XHJcbiAgICAgICAgLy8gaWYgcGFyYW0gZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIGNoZWNrIGlmIEpTIGZpbGUgaXMgY29taW5nIGluIHBhaXIgd2l0aCBhIHBhcmFtZXRlciBmaWxlIFxyXG4gICAgICAgIC8vIChjdXJyZW50bHkgc3VwcG9ydGluZyBDU1Ygb3IgVFhUKVxyXG4gICAgICAgIGlmICghcGFyYW1GaWxlICYmIGF1dG9TZWFyY2gpIHtcclxuICAgICAgICAgICAgdmFyIGZpbGVOYW1lTm9FeHQgPSBzZWxmLmdldEZpbGVOYW1lV2l0aG91dEV4dChtYWluRmlsZSk7XHJcbiAgICAgICAgICAgIHZhciBjc3ZQYXJhbUZpbGUgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKG1haW5GaWxlKSwgZmlsZU5hbWVOb0V4dCArICcuY3N2Jyk7XHJcbiAgICAgICAgICAgIHZhciB0eHRQYXJhbUZpbGUgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKG1haW5GaWxlKSwgZmlsZU5hbWVOb0V4dCArICcudHh0Jyk7XHJcbiAgICAgICAgICAgIHZhciB4bHNQYXJhbUZpbGUgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKG1haW5GaWxlKSwgZmlsZU5hbWVOb0V4dCArICcueGxzJyk7XHJcbiAgICAgICAgICAgIHZhciB4bHN4UGFyYW1GaWxlID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShtYWluRmlsZSksIGZpbGVOYW1lTm9FeHQgKyAnLnhsc3gnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNzdlBhcmFtRmlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtRmlsZSA9IGNzdlBhcmFtRmlsZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChmcy5leGlzdHNTeW5jKHR4dFBhcmFtRmlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtRmlsZSA9IHR4dFBhcmFtRmlsZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChmcy5leGlzdHNTeW5jKHhsc1BhcmFtRmlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtRmlsZSA9IHhsc1BhcmFtRmlsZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChmcy5leGlzdHNTeW5jKHhsc3hQYXJhbUZpbGUpKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbUZpbGUgPSB4bHN4UGFyYW1GaWxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJhbUZpbGUpIHtcclxuICAgICAgICAgICAgcGFyYW1NYW5hZ2VyID0gbmV3IHJlcXVpcmUoJy4vcGFyYW0tbWFuYWdlcicpKHBhcmFtRmlsZSwgcGFyYW1Nb2RlIHx8ICdzZXF1ZW50aWFsJyk7XHJcbiAgICAgICAgICAgIGF3YWl0IHBhcmFtTWFuYWdlci5pbml0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwYXJhbU1hbmFnZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSxcclxuXHJcbiAgICByZXNvbHZlUGF0aDogZnVuY3Rpb24ocGF0aFRvUmVzb2x2ZSwgYmFzZUZvbGRlcikge1xyXG4gICAgICAgIGlmIChwYXRoLmlzQWJzb2x1dGUocGF0aFRvUmVzb2x2ZSkpXHJcbiAgICAgICAgICAgIHJldHVybiBwYXRoVG9SZXNvbHZlO1xyXG4gICAgICAgIHJldHVybiBwYXRoLnJlc29sdmUoYmFzZUZvbGRlciwgcGF0aFRvUmVzb2x2ZSk7XHJcbiAgICB9LFxyXG5cclxuICAgIG1ha2VTZXJpYWxpemFibGU6IGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZXJyID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVzdHJveUNpcmN1bGFyKGVyciwgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXJyO1xyXG5cclxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vam9ucGFja2VyL2Rlc3Ryb3ktY2lyY3VsYXJcclxuICAgICAgICBmdW5jdGlvbiBkZXN0cm95Q2lyY3VsYXIoZnJvbSwgc2Vlbikge1xyXG4gICAgICAgICAgICB2YXIgdG8gPSBBcnJheS5pc0FycmF5KGZyb20pID8gW10gOiB7fTtcclxuICAgICAgICAgICAgc2Vlbi5wdXNoKGZyb20pO1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhmcm9tKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmcm9tW2tleV0gfHwgKHR5cGVvZiBmcm9tW2tleV0gIT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoZnJvbVtrZXldKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0b1trZXldID0gZnJvbVtrZXldO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzZWVuLmluZGV4T2YoZnJvbVtrZXldKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvW2tleV0gPSBkZXN0cm95Q2lyY3VsYXIoZnJvbVtrZXldLCBzZWVuLnNsaWNlKDApKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB0b1trZXldID0gJ1tDaXJjdWxhcl0nO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHRvO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0TWV0aG9kU2lnbmF0dXJlOiBmdW5jdGlvbihtb2R1bGVOYW1lLCBtZXRob2ROYW1lLCBtZXRob2RBcmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIG1vZHVsZU5hbWUgKyAnLicgKyBtZXRob2ROYW1lICsgJygnICsgc2VsZi5zdHJpbmdpZnkobWV0aG9kQXJncywgMCkgKyAnKSc7XHJcbiAgICB9LFxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBVc2VkIHRvIHNlcmlhbGl6ZSBveHlnZW4gY29tbWFuZCBwYXJhbWV0ZXJzLiBQcm9kdWNlcyBhIG5vbi1jb21wbGlhbnQgSlNPTiBzZXJpYWxpemF0aW9uLlxyXG4gICAgICovXHJcbiAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uIChhcmdzLCBpbmRlbnRhdGlvbiA9IDApIHtcclxuICAgICAgICBsZXQgc3RyO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHN0ciA9IEpTT04uc3RyaW5naWZ5KGFyZ3MsIChrZXksIHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50JykgeyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vR29vZ2xlQ2hyb21lTGFicy9qc2JpL2lzc3Vlcy8zMFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHVuZGVmaW5lZCBpcyBpbnNpZGUgYW4gYXJyYXkgdGhlbiBpdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYXMgbnVsbC5cclxuICAgICAgICAgICAgICAgICAgICAvLyBob3dldmVyIGlmIHdlIGp1c3QgcmV0dXJuICd1bmRlZmluZWQnIGhlcmUgYXMgc3RyaW5nLCBpdCB3aWxsIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy5cclxuICAgICAgICAgICAgICAgICAgICAvLyBzbyByZXR1cm4gbWFnaWMgc3RyaW5nIGluc3RlYWQgYW5kIHRyaW0gdGhlIHF1b3RlcyBsYXRlciBvblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnX19VTkRFRklORUQnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcvJyArIHZhbHVlLnNvdXJjZSArICcvJyArIHZhbHVlLmZsYWdzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICB9LCBpbmRlbnRhdGlvbik7XHJcbiAgICAgICAgICAgIC8vIHRyaW0gdGhlIGVuY2xvc2luZyBhcnJheSBhbmQgYW55IHdoaXRlc3BhY2VcclxuICAgICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoL15cXFt7MX1cXHMqfFxccypcXF17MX0kL2csICcnKTtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIHNwYWNlIGJlZm9yZSBsYXN0IH0gYW5kIF0sIHRvIG1ha2UgaW5kZW50YXRpb24gbXRjaCB0aGUgb3BlbmluZyBicmFja2V0XHJcbiAgICAgICAgICAgIGlmIChzdHIuZW5kc1dpdGgoJyAgfScpKSB7XHJcbiAgICAgICAgICAgICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIHN0ci5sZW5ndGggLSAzKSArICd9JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3RyLmVuZHNXaXRoKCcgIF0nKSkge1xyXG4gICAgICAgICAgICAgICAgc3RyID0gc3RyLnN1YnN0cmluZygwLCBzdHIubGVuZ3RoIC0gMykgKyAnXSc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY29udmVydCBtYWdpYyAndW5kZWZpbmVkJyBzdHJpbmcgdG8gcHJvcGVyIHJlcHJlc2VudGF0aW9uXHJcbiAgICAgICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cIl9fVU5ERUZJTkVEXCIvZywgJ3VuZGVmaW5lZCcpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gc2VyaWFsaXplIGNvbW1hbmQgYXJndW1lbnRzOiAnLCBlKTtcclxuICAgICAgICAgICAgLy8gaWYgSlNPTi5zdHJpbmdpZnkgZmFpbHMsIHRoZW4gZmFsbGJhY2sgdG8gdXRpbC5pbnNwZWN0LlxyXG4gICAgICAgICAgICAvLyAod2UgZG9uJ3QgdXNlIHV0aWwuaW5zcGVjdCBpbml0aWFseSBiZWNhdXNlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBvdXRwdXQgaW5kZW50YXRpb24pXHJcbiAgICAgICAgICAgIHJldHVybiB1dGlsLmluc3BlY3QoYXJnc1swXSwgeyBkZXB0aDogMyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH0sXHJcblxyXG4gICAgaXNJbkRlYnVnTW9kZTogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgLy8gdGhpcyBhbHdheXMgdHJ1ZTtcclxuICAgICAgICAvLyBjb25zdCBhcmd2ID0gcHJvY2Vzcy5leGVjQXJndi5qb2luKCk7XHJcblxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdwcm9jZXNzLmRlYnVnUG9ydCcsIHByb2Nlc3MuZGVidWdQb3J0KTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImFyZ3YuaW5jbHVkZXMoJ2luc3BlY3QnKVwiLCBhcmd2LmluY2x1ZGVzKCdpbnNwZWN0JykpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYXJndi5pbmNsdWRlcygnaW5zcGVjdC1icmsnKVwiLCBhcmd2LmluY2x1ZGVzKCdpbnNwZWN0LWJyaycpKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImFyZ3YuaW5jbHVkZXMoJ2RlYnVnJylcIiwgYXJndi5pbmNsdWRlcygnZGVidWcnKSk7XHJcblxyXG4gICAgICAgIC8vIHJldHVybiBwcm9jZXNzLmRlYnVnUG9ydCB8fCBhcmd2LmluY2x1ZGVzKCdpbnNwZWN0JykgfHwgYXJndi5pbmNsdWRlcygnaW5zcGVjdC1icmsnKSB8fCBhcmd2LmluY2x1ZGVzKCdkZWJ1ZycpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9LFxyXG5cclxuICAgIGxvYWRUZXN0SG9va3M6IGZ1bmN0aW9uKG9wdGlvbnMpIHtcclxuICAgICAgICBsZXQgaG9va3MgPSBEVU1NWV9IT09LUztcclxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRhcmdldCAmJiBvcHRpb25zLnRhcmdldC5uYW1lID09PSAnb3h5Z2VuLmNvbmYnKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBob29rcyA9IHJlcXVpcmUob3B0aW9ucy50YXJnZXQucGF0aCkuaG9va3MgfHwgRFVNTVlfSE9PS1M7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignRXJyb3IgbG9hZGluZyB1c2VyIGhvb2tzOicsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBob29rcztcclxuICAgIH0sXHJcblxyXG4gICAgZXhlY3V0ZVRlc3RIb29rOiBhc3luYyBmdW5jdGlvbihob29rcywgbWV0aG9kLCBhcmdzKSB7XHJcbiAgICAgICAgLy8gaWYgaG9vayBpcyBub3QgZGVmaW5lZCwganVzdCBxdWlldGx5IGlnbm9yZSBpdFxyXG4gICAgICAgIGlmICghaG9va3MgfHwgIW1ldGhvZCB8fCAhaG9va3NbbWV0aG9kXSB8fCB0eXBlb2YgaG9va3NbbWV0aG9kXSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGdsb2JhbC5jaGFpQW5kTW9ja2VyeUxvYWRlZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWdub3JlXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGFpID0gcmVxdWlyZSgnY2hhaScpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9ja2VyeSA9IHJlcXVpcmUoJ21vY2tlcnknKTtcclxuICAgICAgICAgICAgICAgIG1vY2tlcnkuZW5hYmxlKHtcclxuICAgICAgICAgICAgICAgICAgICB1c2VDbGVhbkNhY2hlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHdhcm5PblJlcGxhY2U6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHdhcm5PblVucmVnaXN0ZXJlZDogZmFsc2VcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgbW9ja2VyeS5yZWdpc3Rlck1vY2soJ2NoYWknLCBjaGFpKTtcclxuICAgICAgICAgICAgICAgIGdsb2JhbC5jaGFpQW5kTW9ja2VyeUxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGF3YWl0IGhvb2tzW21ldGhvZF0uYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgSG9vayBcIiR7bWV0aG9kfVwiIGhhcyB0aHJvd24gYW4gZXJyb3I6ICR7ZS50b1N0cmluZygpfWApO1xyXG4gICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0T3hNb2R1bGVzRGlyOiBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ294X21vZHVsZXMnKTtcclxuICAgIH0sXHJcblxyXG4gICAgaG9va0xvZ3MobG9nZ2VyKSB7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2xvZyA9IGNvbnNvbGUubG9nO1xyXG4gICAgICAgIGNvbnN0IG9yaWdEZWJ1ZyA9IGNvbnNvbGUuZGVidWc7XHJcbiAgICAgICAgY29uc3Qgb3JpZ0luZm8gPSBjb25zb2xlLmluZm87XHJcbiAgICAgICAgY29uc3Qgb3JpZ1dhcm4gPSBjb25zb2xlLndhcm47XHJcbiAgICAgICAgY29uc3Qgb3JpZ0Vycm9yID0gY29uc29sZS5lcnJvcjtcclxuXHJcbiAgICAgICAgY29uc3QgcHJvY2Vzc0FyZ3MgPSAoYXJndW1lbnRBcnJheSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107XHJcblxyXG4gICAgICAgICAgICBpZiAoYXJndW1lbnRBcnJheSAmJiBhcmd1bWVudEFycmF5Lm1hcCkge1xyXG4gICAgICAgICAgICAgICAgYXJndW1lbnRBcnJheS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke2l0ZW19YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7dXRpbC5pbnNwZWN0KGl0ZW0pfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmpvaW4oJyAnKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyA9IGZ1bmN0aW9uICguLi5hcmd1bWVudEFycmF5KSB7XHJcbiAgICAgICAgICAgIG9yaWdsb2cuYXBwbHkodGhpcywgYXJndW1lbnRBcnJheSk7XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKHByb2Nlc3NBcmdzKGFyZ3VtZW50QXJyYXkpKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnNvbGUuZGVidWcgPSBmdW5jdGlvbiAoLi4uYXJndW1lbnRBcnJheSkge1xyXG4gICAgICAgICAgICBvcmlnRGVidWcuYXBwbHkodGhpcywgYXJndW1lbnRBcnJheSk7XHJcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1Zyhwcm9jZXNzQXJncyhhcmd1bWVudEFycmF5KSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zb2xlLmluZm8gPSBmdW5jdGlvbiAoLi4uYXJndW1lbnRBcnJheSkge1xyXG4gICAgICAgICAgICBvcmlnSW5mby5hcHBseSh0aGlzLCBhcmd1bWVudEFycmF5KTtcclxuICAgICAgICAgICAgbG9nZ2VyLmluZm8ocHJvY2Vzc0FyZ3MoYXJndW1lbnRBcnJheSkpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc29sZS53YXJuID0gZnVuY3Rpb24gKC4uLmFyZ3VtZW50QXJyYXkpIHtcclxuICAgICAgICAgICAgb3JpZ1dhcm4uYXBwbHkodGhpcywgYXJndW1lbnRBcnJheSk7XHJcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKHByb2Nlc3NBcmdzKGFyZ3VtZW50QXJyYXkpKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IgPSBmdW5jdGlvbiAoLi4uYXJndW1lbnRBcnJheSkge1xyXG4gICAgICAgICAgICBvcmlnRXJyb3IuYXBwbHkodGhpcywgYXJndW1lbnRBcnJheSk7XHJcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihwcm9jZXNzQXJncyhhcmd1bWVudEFycmF5KSk7XHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcblxyXG4gICAgbWFrZVRyYW5zYWN0aW9uRmFpbGVkSWZTdGVwRmFpbGVkKHN0ZXBzKSB7XHJcbiAgICAgICAgaWYgKHN0ZXBzICYmIHN0ZXBzLmxlbmd0aCAmJiBzdGVwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCBsYXN0RmluZGVkVHJhbnNhY3Rpb25JbmRleCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdTdGVwcyA9IFsuLi5zdGVwc107XHJcbiAgICAgICAgICAgIHN0ZXBzLm1hcCgoaXRlbSwgaWR4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5uYW1lICYmIGl0ZW0ubmFtZS5pbmNsdWRlcyAmJiBpdGVtLm5hbWUuaW5jbHVkZXMoJy50cmFuc2FjdGlvbignKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RGaW5kZWRUcmFuc2FjdGlvbkluZGV4ID0gaWR4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbGFzdEZpbmRlZFRyYW5zYWN0aW9uSW5kZXggPT09ICdudW1iZXInICYmIGl0ZW0uc3RhdHVzICYmIGl0ZW0uc3RhdHVzID09PSAnZmFpbGVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1N0ZXBzW2xhc3RGaW5kZWRUcmFuc2FjdGlvbkluZGV4XVsnc3RhdHVzJ10gPSAnZmFpbGVkJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbmV3U3RlcHM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gc3RlcHM7XHJcbiAgICB9LFxyXG5cclxuICAgIGRlY3J5cHQodGV4dCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCBlbmNyeXB0ZWRUZXh0ID0gQnVmZmVyLmZyb20odGV4dCwgJ2hleCcpO1xyXG4gICAgICAgICAgICBsZXQgZGVjaXBoZXIgPSBjcnlwdG8uY3JlYXRlRGVjaXBoZXJpdihhbGdvcml0aG0sIGtleSwgaXYpO1xyXG4gICAgICAgICAgICBsZXQgZGVjcnlwdGVkID0gZGVjaXBoZXIudXBkYXRlKGVuY3J5cHRlZFRleHQpO1xyXG4gICAgICAgICAgICBkZWNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KFtkZWNyeXB0ZWQsIGRlY2lwaGVyLmZpbmFsKCldKTtcclxuICAgICAgICAgICAgY29uc3QgcmV0VmFsID0gZGVjcnlwdGVkLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGVjcnlwdFJlc3VsdChyZXRWYWwpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94eWdlbkVycm9yKGVycm9ySGVscGVyLmVycm9yQ29kZS5DUllQVE9fRVJST1IsIFwiVGhlIHByb3ZpZGVkIGFyZ3VtZW50IGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHZhbGlkIGNpcGhlciBwcm9kdWNlZCBieSAndXRpbHMuZW5jcnlwdCdcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBlbmNyeXB0KHRleHQpIHtcclxuICAgICAgICBsZXQgY2lwaGVyID0gY3J5cHRvLmNyZWF0ZUNpcGhlcml2KGFsZ29yaXRobSwga2V5LCBpdik7XHJcbiAgICAgICAgbGV0IGVuY3J5cHRlZCA9IGNpcGhlci51cGRhdGUodGV4dCk7XHJcbiAgICAgICAgZW5jcnlwdGVkID0gQnVmZmVyLmNvbmNhdChbZW5jcnlwdGVkLCBjaXBoZXIuZmluYWwoKV0pO1xyXG4gICAgICAgIHJldHVybiBlbmNyeXB0ZWQudG9TdHJpbmcoJ2hleCcpO1xyXG4gICAgfSxcclxuXHJcbiAgICBzbGVlcDogZnVuY3Rpb24odGltZW91dCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0aW1lb3V0KSk7XHJcbiAgICB9XHJcbn07XHJcbiJdfQ==
@@ -122,6 +122,74 @@ module.exports = function () {
122
122
 
123
123
  return msg.body;
124
124
  };
125
+ /**
126
+ * @summary Retrieves last SMS message sent from API.
127
+ * @function getLastSentApiSms
128
+ * @param {Boolean} removeOnRead - Specifies whether to delete the message after reading it.
129
+ * @param {Number} timeout - Timeout in milliseconds for waiting for the message to arrive.
130
+ * @param {Number=} notOlderThan - Retrieve message only if it arrived not before the given time (in ms). Default is 4 minutes.
131
+ * @return {String} SMS text.
132
+ */
133
+
134
+
135
+ module.getLastSentApiSms = async function (removeOnRead, timeout, notOlderThan) {
136
+ helpers.assertArgumentBool(removeOnRead, 'removeOnRead');
137
+ helpers.assertArgumentNumberNonNegative(timeout, 'timeout');
138
+
139
+ if (!notOlderThan) {
140
+ notOlderThan = 4 * 60 * 1000;
141
+ }
142
+
143
+ var msg;
144
+ var now = Date.now();
145
+ var earliestMessageDate = new Date(now - notOlderThan);
146
+
147
+ while (!msg && Date.now() - now < timeout) {
148
+ await (() => {
149
+ return new Promise((resolve, reject) => {
150
+ _client.messages.list({
151
+ dateSentAfter: earliestMessageDate
152
+ }, function (err, messages) {
153
+ var _msg;
154
+
155
+ if (messages && typeof messages[Symbol.iterator] === 'function') {
156
+ for (_msg of messages) {
157
+ if (_msg.direction == 'outbound-api') {
158
+ var _msgDate = Date.parse(_msg.dateCreated); // if message is newer than the previous one - save it
159
+
160
+
161
+ if (msg && Date.parse(msg.dateCreated) < _msgDate) {
162
+ msg = _msg;
163
+ } else if (!msg) {
164
+ msg = _msg;
165
+ }
166
+ }
167
+ }
168
+ }
169
+
170
+ resolve();
171
+ });
172
+ });
173
+ })();
174
+ await _util.default.sleep(800);
175
+ }
176
+
177
+ if (!msg) {
178
+ throw new OxError(errHelper.errorCode.TWILIO_ERROR, "Couldn't get the SMS within " + timeout + 'ms.');
179
+ }
180
+
181
+ if (removeOnRead) {
182
+ await (() => {
183
+ return new Promise((resolve, reject) => {
184
+ _client.messages(msg.sid).remove().then(() => {
185
+ resolve();
186
+ });
187
+ });
188
+ })();
189
+ }
190
+
191
+ return msg.body;
192
+ };
125
193
  /**
126
194
  * @summary Send an SMS.
127
195
  * @function sendSms
@@ -189,4 +257,4 @@ module.exports = function () {
189
257
 
190
258
  return module;
191
259
  };
192
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS10d2lsaW8uanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInV0aWxzIiwicmVxdWlyZSIsIk94RXJyb3IiLCJPeEVycm9yQ29udHNydWN0b3IiLCJlcnJIZWxwZXIiLCJoZWxwZXJzIiwiX2NsaWVudCIsImlzSW5pdGlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJpbml0IiwiYWNjb3VudFNpZCIsImF1dGhUb2tlbiIsImdldExhc3RTbXMiLCJyZW1vdmVPblJlYWQiLCJ0aW1lb3V0Iiwibm90T2xkZXJUaGFuIiwiZnJvbU51bWJlciIsImFzc2VydEFyZ3VtZW50Qm9vbCIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJhc3NlcnRBcmd1bWVudFN0cmluZyIsIm1zZyIsIm5vdyIsIkRhdGUiLCJlYXJsaWVzdE1lc3NhZ2VEYXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJtZXNzYWdlcyIsImxpc3QiLCJkYXRlU2VudEFmdGVyIiwiZXJyIiwiX21zZyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZGlyZWN0aW9uIiwiZnJvbSIsIl9tc2dEYXRlIiwicGFyc2UiLCJkYXRlQ3JlYXRlZCIsImxpYlV0aWxzIiwic2xlZXAiLCJlcnJvckNvZGUiLCJUV0lMSU9fRVJST1IiLCJzaWQiLCJyZW1vdmUiLCJ0aGVuIiwiYm9keSIsInNlbmRTbXMiLCJ0byIsIm1lc3NhZ2UiLCJhc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nIiwicmVzcG9uc2UiLCJjcmVhdGUiLCJjYXRjaCIsIm1vcmVJbmZvIiwiY29kZSIsImFzc2VydEFyZ3VtZW50IiwidmFsIiwibmFtZSIsImNhbGwiLCJhc3NlcnRBcmd1bWVudE51bWJlciIsImFzc2VydEFyZ3VtZW50Qm9vbE9wdGlvbmFsIiwiYXNzZXJ0QXJndW1lbnRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiOzs7O0FBYUE7O0FBQ0E7Ozs7QUFkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFXO0FBQ3hCLFFBQU1DLEtBQUssR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsUUFBTUMsT0FBTyxHQUFHLEtBQUtBLE9BQUwsR0FBZUMsb0JBQS9COztBQUNBLFFBQU1DLFNBQVMsR0FBRyxLQUFLQSxTQUFMLEdBQWlCSCxPQUFPLENBQUMsa0JBQUQsQ0FBMUM7O0FBQ0EsUUFBTUksT0FBTyxHQUFHLEtBQUtBLE9BQUwsR0FBZSxFQUEvQjs7QUFFQSxNQUFJQyxPQUFKOztBQUVBUixFQUFBQSxNQUFNLENBQUNTLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPRCxPQUFPLEtBQUtFLFNBQW5CO0FBQ0gsR0FGRDtBQUlBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lWLEVBQUFBLE1BQU0sQ0FBQ1csSUFBUCxHQUFjLFVBQVNDLFVBQVQsRUFBcUJDLFNBQXJCLEVBQWdDO0FBQzFDTCxJQUFBQSxPQUFPLEdBQUdMLE9BQU8sQ0FBQyxRQUFELENBQVAsQ0FBa0JTLFVBQWxCLEVBQThCQyxTQUE5QixDQUFWO0FBQ0gsR0FGRDtBQUlBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0liLEVBQUFBLE1BQU0sQ0FBQ2MsVUFBUCxHQUFvQixnQkFBZUMsWUFBZixFQUE2QkMsT0FBN0IsRUFBc0NDLFlBQXRDLEVBQW9EQyxVQUFwRCxFQUFnRTtBQUNoRlgsSUFBQUEsT0FBTyxDQUFDWSxrQkFBUixDQUEyQkosWUFBM0IsRUFBeUMsY0FBekM7QUFDQVIsSUFBQUEsT0FBTyxDQUFDYSwrQkFBUixDQUF3Q0osT0FBeEMsRUFBaUQsU0FBakQ7O0FBQ0EsUUFBSUUsVUFBSixFQUFnQjtBQUNaWCxNQUFBQSxPQUFPLENBQUNjLG9CQUFSLENBQTZCSCxVQUE3QixFQUF5QyxZQUF6QztBQUNIOztBQUVELFFBQUksQ0FBQ0QsWUFBTCxFQUFtQjtBQUNmQSxNQUFBQSxZQUFZLEdBQUcsSUFBRSxFQUFGLEdBQUssSUFBcEI7QUFDSDs7QUFDRCxRQUFJSyxHQUFKO0FBQ0EsUUFBSUMsR0FBRyxHQUFHQyxJQUFJLENBQUNELEdBQUwsRUFBVjtBQUNBLFFBQUlFLG1CQUFtQixHQUFHLElBQUlELElBQUosQ0FBU0QsR0FBRyxHQUFHTixZQUFmLENBQTFCOztBQUNBLFdBQU8sQ0FBQ0ssR0FBRCxJQUFTRSxJQUFJLENBQUNELEdBQUwsS0FBYUEsR0FBZCxHQUFxQlAsT0FBcEMsRUFBNkM7QUFDekMsWUFBTSxDQUFDLE1BQU07QUFDVCxlQUFPLElBQUlVLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDcENwQixVQUFBQSxPQUFPLENBQUNxQixRQUFSLENBQWlCQyxJQUFqQixDQUFzQjtBQUFFQyxZQUFBQSxhQUFhLEVBQUVOO0FBQWpCLFdBQXRCLEVBQThELFVBQVNPLEdBQVQsRUFBY0gsUUFBZCxFQUF3QjtBQUNsRixnQkFBSUksSUFBSjs7QUFDQSxnQkFBSUosUUFBUSxJQUFJLE9BQU9BLFFBQVEsQ0FBQ0ssTUFBTSxDQUFDQyxRQUFSLENBQWYsS0FBcUMsVUFBckQsRUFBaUU7QUFDN0QsbUJBQUtGLElBQUwsSUFBYUosUUFBYixFQUF1QjtBQUNuQixvQkFBSUksSUFBSSxDQUFDRyxTQUFMLElBQWtCLFNBQXRCLEVBQWlDO0FBQzdCLHNCQUFJbEIsVUFBVSxJQUFJZSxJQUFJLENBQUNJLElBQUwsS0FBY25CLFVBQWhDLEVBQTRDLENBQ3hDO0FBQ0gsbUJBRkQsTUFFTztBQUNILHdCQUFJb0IsUUFBUSxHQUFHZCxJQUFJLENBQUNlLEtBQUwsQ0FBV04sSUFBSSxDQUFDTyxXQUFoQixDQUFmLENBREcsQ0FFSDs7O0FBQ0Esd0JBQUlsQixHQUFHLElBQUlFLElBQUksQ0FBQ2UsS0FBTCxDQUFXakIsR0FBRyxDQUFDa0IsV0FBZixJQUE4QkYsUUFBekMsRUFBbUQ7QUFDL0NoQixzQkFBQUEsR0FBRyxHQUFHVyxJQUFOO0FBQ0gscUJBRkQsTUFFTyxJQUFJLENBQUNYLEdBQUwsRUFBVTtBQUNiQSxzQkFBQUEsR0FBRyxHQUFHVyxJQUFOO0FBQ0g7QUFDSjtBQUNKO0FBQ0o7QUFDSjs7QUFDRE4sWUFBQUEsT0FBTztBQUNWLFdBcEJEO0FBcUJILFNBdEJNLENBQVA7QUF1QkgsT0F4QkssR0FBTjtBQXlCQSxZQUFNYyxjQUFTQyxLQUFULENBQWUsR0FBZixDQUFOO0FBQ0g7O0FBRUQsUUFBSSxDQUFDcEIsR0FBTCxFQUFVO0FBQ04sWUFBTSxJQUFJbEIsT0FBSixDQUFZRSxTQUFTLENBQUNxQyxTQUFWLENBQW9CQyxZQUFoQyxFQUE4QyxpQ0FBaUM1QixPQUFqQyxHQUEyQyxLQUF6RixDQUFOO0FBQ0g7O0FBRUQsUUFBSUQsWUFBSixFQUFrQjtBQUNkLFlBQU0sQ0FBQyxNQUFNO0FBQ1QsZUFBTyxJQUFJVyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3BDcEIsVUFBQUEsT0FBTyxDQUFDcUIsUUFBUixDQUFpQlAsR0FBRyxDQUFDdUIsR0FBckIsRUFBMEJDLE1BQTFCLEdBQW1DQyxJQUFuQyxDQUF3QyxNQUFNO0FBQUVwQixZQUFBQSxPQUFPO0FBQUssV0FBNUQ7QUFDSCxTQUZNLENBQVA7QUFHSCxPQUpLLEdBQU47QUFLSDs7QUFFRCxXQUFPTCxHQUFHLENBQUMwQixJQUFYO0FBQ0gsR0F2REQ7QUF5REE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0loRCxFQUFBQSxNQUFNLENBQUNpRCxPQUFQLEdBQWlCLGdCQUFlWixJQUFmLEVBQXFCYSxFQUFyQixFQUF5QkMsT0FBekIsRUFBa0M7QUFDL0M1QyxJQUFBQSxPQUFPLENBQUM2Qyw0QkFBUixDQUFxQ2YsSUFBckMsRUFBMkMsTUFBM0M7QUFDQTlCLElBQUFBLE9BQU8sQ0FBQzZDLDRCQUFSLENBQXFDRixFQUFyQyxFQUF5QyxJQUF6QztBQUNBM0MsSUFBQUEsT0FBTyxDQUFDNkMsNEJBQVIsQ0FBcUNELE9BQXJDLEVBQThDLFNBQTlDO0FBRUEsUUFBSUUsUUFBUSxHQUFHLElBQWY7QUFFQSxVQUFNLENBQUMsTUFBTTtBQUNULGFBQU8sSUFBSTNCLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDcENwQixRQUFBQSxPQUFPLENBQUNxQixRQUFSLENBQWlCeUIsTUFBakIsQ0FBd0I7QUFDcEJOLFVBQUFBLElBQUksRUFBRUcsT0FEYztBQUVwQmQsVUFBQUEsSUFBSSxFQUFFQSxJQUZjO0FBR3BCYSxVQUFBQSxFQUFFLEVBQUVBO0FBSGdCLFNBQXhCLEVBSUdILElBSkgsQ0FJUUksT0FBTyxJQUFJO0FBQ2ZFLFVBQUFBLFFBQVEsR0FBR0YsT0FBTyxDQUFDTixHQUFuQjtBQUNBbEIsVUFBQUEsT0FBTztBQUNWLFNBUEQsRUFPRzRCLEtBUEgsQ0FPU3ZCLEdBQUcsSUFBSTtBQUNacUIsVUFBQUEsUUFBUSxHQUFHckIsR0FBWDtBQUNBTCxVQUFBQSxPQUFPO0FBQ1YsU0FWRDtBQVdILE9BWk0sQ0FBUDtBQWFILEtBZEssR0FBTjs7QUFnQkEsUUFBSTBCLFFBQVEsQ0FBQ0YsT0FBYixFQUFzQjtBQUNsQixVQUFJN0IsR0FBRyxHQUFHK0IsUUFBUSxDQUFDRixPQUFuQjs7QUFDQSxVQUFJRSxRQUFRLENBQUNHLFFBQWIsRUFBdUI7QUFDbkJsQyxRQUFBQSxHQUFHLElBQUkscUJBQXFCK0IsUUFBUSxDQUFDRyxRQUFyQztBQUNILE9BRkQsTUFFTyxJQUFJSCxRQUFRLENBQUNJLElBQWIsRUFBbUI7QUFDdEJuQyxRQUFBQSxHQUFHLEdBQUcsa0NBQWtDQSxHQUF4QztBQUNIOztBQUNELFlBQU0sSUFBSWxCLE9BQUosQ0FBWUUsU0FBUyxDQUFDcUMsU0FBVixDQUFvQkMsWUFBaEMsRUFBOEN0QixHQUE5QyxDQUFOO0FBQ0g7O0FBRUQsV0FBTytCLFFBQVA7QUFDSCxHQWxDRDs7QUFvQ0E5QyxFQUFBQSxPQUFPLENBQUNtRCxjQUFSLEdBQXlCLENBQUNDLEdBQUQsRUFBTUMsSUFBTixLQUFlMUQsS0FBSyxDQUFDd0QsY0FBTixDQUFxQkcsSUFBckIsQ0FBMEIsSUFBMUIsRUFBZ0NGLEdBQWhDLEVBQXFDQyxJQUFyQyxDQUF4Qzs7QUFDQXJELEVBQUFBLE9BQU8sQ0FBQzZDLDRCQUFSLEdBQXVDLENBQUNPLEdBQUQsRUFBTUMsSUFBTixLQUFlMUQsS0FBSyxDQUFDa0QsNEJBQU4sQ0FBbUNTLElBQW5DLENBQXdDLElBQXhDLEVBQThDRixHQUE5QyxFQUFtREMsSUFBbkQsQ0FBdEQ7O0FBQ0FyRCxFQUFBQSxPQUFPLENBQUNjLG9CQUFSLEdBQStCLENBQUNzQyxHQUFELEVBQU1DLElBQU4sS0FBZTFELEtBQUssQ0FBQ21CLG9CQUFOLENBQTJCd0MsSUFBM0IsQ0FBZ0MsSUFBaEMsRUFBc0NGLEdBQXRDLEVBQTJDQyxJQUEzQyxDQUE5Qzs7QUFDQXJELEVBQUFBLE9BQU8sQ0FBQ3VELG9CQUFSLEdBQStCLENBQUNILEdBQUQsRUFBTUMsSUFBTixLQUFlMUQsS0FBSyxDQUFDNEQsb0JBQU4sQ0FBMkJELElBQTNCLENBQWdDLElBQWhDLEVBQXNDRixHQUF0QyxFQUEyQ0MsSUFBM0MsQ0FBOUM7O0FBQ0FyRCxFQUFBQSxPQUFPLENBQUNhLCtCQUFSLEdBQTBDLENBQUN1QyxHQUFELEVBQU1DLElBQU4sS0FBZTFELEtBQUssQ0FBQ2tCLCtCQUFOLENBQXNDeUMsSUFBdEMsQ0FBMkMsSUFBM0MsRUFBaURGLEdBQWpELEVBQXNEQyxJQUF0RCxDQUF6RDs7QUFDQXJELEVBQUFBLE9BQU8sQ0FBQ1ksa0JBQVIsR0FBNkIsQ0FBQ3dDLEdBQUQsRUFBTUMsSUFBTixLQUFlMUQsS0FBSyxDQUFDaUIsa0JBQU4sQ0FBeUIwQyxJQUF6QixDQUE4QixJQUE5QixFQUFvQ0YsR0FBcEMsRUFBeUNDLElBQXpDLENBQTVDOztBQUNBckQsRUFBQUEsT0FBTyxDQUFDd0QsMEJBQVIsR0FBcUMsQ0FBQ0osR0FBRCxFQUFNQyxJQUFOLEtBQWUxRCxLQUFLLENBQUM2RCwwQkFBTixDQUFpQ0YsSUFBakMsQ0FBc0MsSUFBdEMsRUFBNENGLEdBQTVDLEVBQWlEQyxJQUFqRCxDQUFwRDs7QUFDQXJELEVBQUFBLE9BQU8sQ0FBQ3lELHFCQUFSLEdBQWdDLENBQUNMLEdBQUQsRUFBTUMsSUFBTixLQUFlMUQsS0FBSyxDQUFDOEQscUJBQU4sQ0FBNEJILElBQTVCLENBQWlDLElBQWpDLEVBQXVDRixHQUF2QyxFQUE0Q0MsSUFBNUMsQ0FBL0M7O0FBRUEsU0FBTzVELE1BQVA7QUFDSCxDQWpKRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBuYW1lIHR3aWxpb1xyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIFR3aWxpbyBzZXJ2aWNlLlxyXG4gKi9cclxuaW1wb3J0IE94RXJyb3JDb250c3J1Y3RvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgbGliVXRpbHMgZnJvbSAnLi4vbGliL3V0aWwnO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuICAgIGNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xyXG4gICAgY29uc3QgT3hFcnJvciA9IHRoaXMuT3hFcnJvciA9IE94RXJyb3JDb250c3J1Y3RvcjtcclxuICAgIGNvbnN0IGVyckhlbHBlciA9IHRoaXMuZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xyXG4gICAgY29uc3QgaGVscGVycyA9IHRoaXMuaGVscGVycyA9IHt9O1xyXG5cclxuICAgIHZhciBfY2xpZW50O1xyXG5cclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIF9jbGllbnQgIT09IHVuZGVmaW5lZDtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBTZXQgVHdpbGlvIGF1dGhlbnRpY2F0aW9uIGRldGFpbHMuXHJcbiAgICAgKiBAZnVuY3Rpb24gaW5pdFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGFjY291bnRTaWQgLSBBY2NvdW50IFNJRC5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBhdXRoVG9rZW4gLSBBdXRoZW50aWNhdGlvbiB0b2tlbi5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmluaXQgPSBmdW5jdGlvbihhY2NvdW50U2lkLCBhdXRoVG9rZW4pIHtcclxuICAgICAgICBfY2xpZW50ID0gcmVxdWlyZSgndHdpbGlvJykoYWNjb3VudFNpZCwgYXV0aFRva2VuKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgbGFzdCBTTVMgbWVzc2FnZS5cclxuICAgICAqIEBmdW5jdGlvbiBnZXRMYXN0U21zXHJcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IHJlbW92ZU9uUmVhZCAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIGRlbGV0ZSB0aGUgbWVzc2FnZSBhZnRlciByZWFkaW5nIGl0LlxyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVvdXQgLSBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgdGhlIG1lc3NhZ2UgdG8gYXJyaXZlLlxyXG4gICAgICogQHBhcmFtIHtOdW1iZXI9fSBub3RPbGRlclRoYW4gLSBSZXRyaWV2ZSBtZXNzYWdlIG9ubHkgaWYgaXQgYXJyaXZlZCBub3QgYmVmb3JlIHRoZSBnaXZlbiB0aW1lIChpbiBtcykuIERlZmF1bHQgaXMgNCBtaW51dGVzLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBmcm9tTnVtYmVyIC0gRnJvbSBudW1iZXIgdG8gZmlsdGVyIG1lc3NhZ2VcclxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gU01TIHRleHQuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5nZXRMYXN0U21zID0gYXN5bmMgZnVuY3Rpb24ocmVtb3ZlT25SZWFkLCB0aW1lb3V0LCBub3RPbGRlclRoYW4sIGZyb21OdW1iZXIpIHtcclxuICAgICAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50Qm9vbChyZW1vdmVPblJlYWQsICdyZW1vdmVPblJlYWQnKTtcclxuICAgICAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUodGltZW91dCwgJ3RpbWVvdXQnKTtcclxuICAgICAgICBpZiAoZnJvbU51bWJlcikge1xyXG4gICAgICAgICAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50U3RyaW5nKGZyb21OdW1iZXIsICdmcm9tTnVtYmVyJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIW5vdE9sZGVyVGhhbikge1xyXG4gICAgICAgICAgICBub3RPbGRlclRoYW4gPSA0KjYwKjEwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBtc2c7XHJcbiAgICAgICAgdmFyIG5vdyA9IERhdGUubm93KCk7XHJcbiAgICAgICAgdmFyIGVhcmxpZXN0TWVzc2FnZURhdGUgPSBuZXcgRGF0ZShub3cgLSBub3RPbGRlclRoYW4pO1xyXG4gICAgICAgIHdoaWxlICghbXNnICYmIChEYXRlLm5vdygpIC0gbm93KSA8IHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NsaWVudC5tZXNzYWdlcy5saXN0KHsgZGF0ZVNlbnRBZnRlcjogZWFybGllc3RNZXNzYWdlRGF0ZSB9LCBmdW5jdGlvbihlcnIsIG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbXNnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZXMgJiYgdHlwZW9mIG1lc3NhZ2VzW1N5bWJvbC5pdGVyYXRvcl0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoX21zZyBvZiBtZXNzYWdlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfbXNnLmRpcmVjdGlvbiA9PSAnaW5ib3VuZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyb21OdW1iZXIgJiYgX21zZy5mcm9tICE9PSBmcm9tTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbXNnRGF0ZSA9IERhdGUucGFyc2UoX21zZy5kYXRlQ3JlYXRlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBtZXNzYWdlIGlzIG5ld2VyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSAtIHNhdmUgaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2cgJiYgRGF0ZS5wYXJzZShtc2cuZGF0ZUNyZWF0ZWQpIDwgX21zZ0RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBfbXNnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbXNnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gX21zZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSkoKTtcclxuICAgICAgICAgICAgYXdhaXQgbGliVXRpbHMuc2xlZXAoODAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbXNnKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuVFdJTElPX0VSUk9SLCBcIkNvdWxkbid0IGdldCB0aGUgU01TIHdpdGhpbiBcIiArIHRpbWVvdXQgKyAnbXMuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVtb3ZlT25SZWFkKSB7XHJcbiAgICAgICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIF9jbGllbnQubWVzc2FnZXMobXNnLnNpZCkucmVtb3ZlKCkudGhlbigoKSA9PiB7IHJlc29sdmUoKTsgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSkoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtc2cuYm9keTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBTZW5kIGFuIFNNUy5cclxuICAgICAqIEBmdW5jdGlvbiBzZW5kU21zXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZnJvbSAtIFBob25lIG51bWJlciB0byBzZW5kIGZyb20uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdG8gLSBQaG9uZSBudW1iZXIgdG8gc2VuZCB0by5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIC0gTWVzc2FnZSB0byBzZW5kLlxyXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBNZXNzYWdlIFNJRC5cclxuICAgICAqIEBleGFtcGxlIDxjYXB0aW9uPltqYXZhc2NyaXB0XSBVc2FnZSBleGFtcGxlPC9jYXB0aW9uPlxyXG4gICAgICogdHdpbGlvLmluaXQoJ0FjY291bnQgU2lkJywgJ0FjY291bnQgVG9rZW4nKTtcclxuICAgICAqIHR3aWxpby5zZW5kU21zKCcrMXh4eHh4eHh4eHgnLCAnKzk3Mnh4eHh4eHh4eCcsICdIZWxsbyBXb3JsZCEnKTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLnNlbmRTbXMgPSBhc3luYyBmdW5jdGlvbihmcm9tLCB0bywgbWVzc2FnZSkge1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyhmcm9tLCAnZnJvbScpO1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyh0bywgJ3RvJyk7XHJcbiAgICAgICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKG1lc3NhZ2UsICdtZXNzYWdlJyk7XHJcblxyXG4gICAgICAgIHZhciByZXNwb25zZSA9IG51bGw7XHJcblxyXG4gICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBfY2xpZW50Lm1lc3NhZ2VzLmNyZWF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9keTogbWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBmcm9tLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvOiB0b1xyXG4gICAgICAgICAgICAgICAgfSkudGhlbihtZXNzYWdlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IG1lc3NhZ2Uuc2lkO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBlcnI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pKCk7XHJcblxyXG4gICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHZhciBtc2cgPSByZXNwb25zZS5tZXNzYWdlO1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UubW9yZUluZm8pIHtcclxuICAgICAgICAgICAgICAgIG1zZyArPSAnIEZvciBtb3JlIGluZm86ICcgKyByZXNwb25zZS5tb3JlSW5mbztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBtc2cgPSAnVW5hYmxlIHRvIGNvbm5lY3QgdG8gVHdpbGlvOiAnICsgbXNnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuVFdJTElPX0VSUk9SLCBtc2cpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfTtcclxuXHJcbiAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50ID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnQuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZy5jYWxsKHRoaXMsIHZhbCwgbmFtZSk7XHJcbiAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50U3RyaW5nID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnRTdHJpbmcuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE51bWJlciA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyLmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudEJvb2wgPSAodmFsLCBuYW1lKSA9PiB1dGlscy5hc3NlcnRBcmd1bWVudEJvb2wuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbCA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50Qm9vbE9wdGlvbmFsLmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0ID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0LmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
260
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS10d2lsaW8uanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInV0aWxzIiwicmVxdWlyZSIsIk94RXJyb3IiLCJPeEVycm9yQ29udHNydWN0b3IiLCJlcnJIZWxwZXIiLCJoZWxwZXJzIiwiX2NsaWVudCIsImlzSW5pdGlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJpbml0IiwiYWNjb3VudFNpZCIsImF1dGhUb2tlbiIsImdldExhc3RTbXMiLCJyZW1vdmVPblJlYWQiLCJ0aW1lb3V0Iiwibm90T2xkZXJUaGFuIiwiZnJvbU51bWJlciIsImFzc2VydEFyZ3VtZW50Qm9vbCIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJhc3NlcnRBcmd1bWVudFN0cmluZyIsIm1zZyIsIm5vdyIsIkRhdGUiLCJlYXJsaWVzdE1lc3NhZ2VEYXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJtZXNzYWdlcyIsImxpc3QiLCJkYXRlU2VudEFmdGVyIiwiZXJyIiwiX21zZyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZGlyZWN0aW9uIiwiZnJvbSIsIl9tc2dEYXRlIiwicGFyc2UiLCJkYXRlQ3JlYXRlZCIsImxpYlV0aWxzIiwic2xlZXAiLCJlcnJvckNvZGUiLCJUV0lMSU9fRVJST1IiLCJzaWQiLCJyZW1vdmUiLCJ0aGVuIiwiYm9keSIsImdldExhc3RTZW50QXBpU21zIiwic2VuZFNtcyIsInRvIiwibWVzc2FnZSIsImFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmciLCJyZXNwb25zZSIsImNyZWF0ZSIsImNhdGNoIiwibW9yZUluZm8iLCJjb2RlIiwiYXNzZXJ0QXJndW1lbnQiLCJ2YWwiLCJuYW1lIiwiY2FsbCIsImFzc2VydEFyZ3VtZW50TnVtYmVyIiwiYXNzZXJ0QXJndW1lbnRCb29sT3B0aW9uYWwiLCJhc3NlcnRBcmd1bWVudFRpbWVvdXQiXSwibWFwcGluZ3MiOiI7Ozs7QUFhQTs7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R0FBRCxFQUFNQyxJQUFOLEtBQWUzRCxLQUFLLENBQUMrRCxxQkFBTixDQUE0QkgsSUFBNUIsQ0FBaUMsSUFBakMsRUFBdUNGLEdBQXZDLEVBQTRDQyxJQUE1QyxDQUEvQzs7QUFFQSxTQUFPN0QsTUFBUDtBQUNILENBbk5EIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgdHdpbGlvXHJcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggVHdpbGlvIHNlcnZpY2UuXHJcbiAqL1xyXG5pbXBvcnQgT3hFcnJvckNvbnRzcnVjdG9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbmltcG9ydCBsaWJVdGlscyBmcm9tICcuLi9saWIvdXRpbCc7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XHJcbiAgICBjb25zdCBPeEVycm9yID0gdGhpcy5PeEVycm9yID0gT3hFcnJvckNvbnRzcnVjdG9yO1xyXG4gICAgY29uc3QgZXJySGVscGVyID0gdGhpcy5lcnJIZWxwZXIgPSByZXF1aXJlKCcuLi9lcnJvcnMvaGVscGVyJyk7XHJcbiAgICBjb25zdCBoZWxwZXJzID0gdGhpcy5oZWxwZXJzID0ge307XHJcblxyXG4gICAgdmFyIF9jbGllbnQ7XHJcblxyXG4gICAgbW9kdWxlLmlzSW5pdGlhbGl6ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gX2NsaWVudCAhPT0gdW5kZWZpbmVkO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldCBUd2lsaW8gYXV0aGVudGljYXRpb24gZGV0YWlscy5cclxuICAgICAqIEBmdW5jdGlvbiBpbml0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gYWNjb3VudFNpZCAtIEFjY291bnQgU0lELlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGF1dGhUb2tlbiAtIEF1dGhlbnRpY2F0aW9uIHRva2VuLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuaW5pdCA9IGZ1bmN0aW9uKGFjY291bnRTaWQsIGF1dGhUb2tlbikge1xyXG4gICAgICAgIF9jbGllbnQgPSByZXF1aXJlKCd0d2lsaW8nKShhY2NvdW50U2lkLCBhdXRoVG9rZW4pO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBsYXN0IFNNUyBtZXNzYWdlLlxyXG4gICAgICogQGZ1bmN0aW9uIGdldExhc3RTbXNcclxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gcmVtb3ZlT25SZWFkIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gZGVsZXRlIHRoZSBtZXNzYWdlIGFmdGVyIHJlYWRpbmcgaXQuXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gdGltZW91dCAtIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB3YWl0aW5nIGZvciB0aGUgbWVzc2FnZSB0byBhcnJpdmUuXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcj19IG5vdE9sZGVyVGhhbiAtIFJldHJpZXZlIG1lc3NhZ2Ugb25seSBpZiBpdCBhcnJpdmVkIG5vdCBiZWZvcmUgdGhlIGdpdmVuIHRpbWUgKGluIG1zKS4gRGVmYXVsdCBpcyA0IG1pbnV0ZXMuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IGZyb21OdW1iZXIgLSBGcm9tIG51bWJlciB0byBmaWx0ZXIgbWVzc2FnZVxyXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBTTVMgdGV4dC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmdldExhc3RTbXMgPSBhc3luYyBmdW5jdGlvbihyZW1vdmVPblJlYWQsIHRpbWVvdXQsIG5vdE9sZGVyVGhhbiwgZnJvbU51bWJlcikge1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnRCb29sKHJlbW92ZU9uUmVhZCwgJ3JlbW92ZU9uUmVhZCcpO1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSh0aW1lb3V0LCAndGltZW91dCcpO1xyXG4gICAgICAgIGlmIChmcm9tTnVtYmVyKSB7XHJcbiAgICAgICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnRTdHJpbmcoZnJvbU51bWJlciwgJ2Zyb21OdW1iZXInKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbm90T2xkZXJUaGFuKSB7XHJcbiAgICAgICAgICAgIG5vdE9sZGVyVGhhbiA9IDQqNjAqMTAwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG1zZztcclxuICAgICAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICB2YXIgZWFybGllc3RNZXNzYWdlRGF0ZSA9IG5ldyBEYXRlKG5vdyAtIG5vdE9sZGVyVGhhbik7XHJcbiAgICAgICAgd2hpbGUgKCFtc2cgJiYgKERhdGUubm93KCkgLSBub3cpIDwgdGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBfY2xpZW50Lm1lc3NhZ2VzLmxpc3QoeyBkYXRlU2VudEFmdGVyOiBlYXJsaWVzdE1lc3NhZ2VEYXRlIH0sIGZ1bmN0aW9uKGVyciwgbWVzc2FnZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9tc2c7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlcyAmJiB0eXBlb2YgbWVzc2FnZXNbU3ltYm9sLml0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChfbXNnIG9mIG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9tc2cuZGlyZWN0aW9uID09ICdpbmJvdW5kJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJvbU51bWJlciAmJiBfbXNnLmZyb20gIT09IGZyb21OdW1iZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9tc2dEYXRlID0gRGF0ZS5wYXJzZShfbXNnLmRhdGVDcmVhdGVkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG1lc3NhZ2UgaXMgbmV3ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIC0gc2F2ZSBpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1zZyAmJiBEYXRlLnBhcnNlKG1zZy5kYXRlQ3JlYXRlZCkgPCBfbXNnRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IF9tc2c7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFtc2cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBfbXNnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KSgpO1xyXG4gICAgICAgICAgICBhd2FpdCBsaWJVdGlscy5zbGVlcCg4MDApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFtc2cpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5UV0lMSU9fRVJST1IsIFwiQ291bGRuJ3QgZ2V0IHRoZSBTTVMgd2l0aGluIFwiICsgdGltZW91dCArICdtcy4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZW1vdmVPblJlYWQpIHtcclxuICAgICAgICAgICAgYXdhaXQgKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NsaWVudC5tZXNzYWdlcyhtc2cuc2lkKS5yZW1vdmUoKS50aGVuKCgpID0+IHsgcmVzb2x2ZSgpOyB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG1zZy5ib2R5O1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBsYXN0IFNNUyBtZXNzYWdlIHNlbnQgZnJvbSBBUEkuXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0TGFzdFNlbnRBcGlTbXNcclxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gcmVtb3ZlT25SZWFkIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gZGVsZXRlIHRoZSBtZXNzYWdlIGFmdGVyIHJlYWRpbmcgaXQuXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gdGltZW91dCAtIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB3YWl0aW5nIGZvciB0aGUgbWVzc2FnZSB0byBhcnJpdmUuXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcj19IG5vdE9sZGVyVGhhbiAtIFJldHJpZXZlIG1lc3NhZ2Ugb25seSBpZiBpdCBhcnJpdmVkIG5vdCBiZWZvcmUgdGhlIGdpdmVuIHRpbWUgKGluIG1zKS4gRGVmYXVsdCBpcyA0IG1pbnV0ZXMuXHJcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IFNNUyB0ZXh0LlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZ2V0TGFzdFNlbnRBcGlTbXMgPSBhc3luYyBmdW5jdGlvbiAocmVtb3ZlT25SZWFkLCB0aW1lb3V0LCBub3RPbGRlclRoYW4pIHtcclxuICAgICAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50Qm9vbChyZW1vdmVPblJlYWQsICdyZW1vdmVPblJlYWQnKTtcclxuICAgICAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUodGltZW91dCwgJ3RpbWVvdXQnKTtcclxuXHJcbiAgICAgICAgaWYgKCFub3RPbGRlclRoYW4pIHtcclxuICAgICAgICAgICAgbm90T2xkZXJUaGFuID0gNCAqIDYwICogMTAwMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBtc2c7XHJcbiAgICAgICAgdmFyIG5vdyA9IERhdGUubm93KCk7XHJcbiAgICAgICAgdmFyIGVhcmxpZXN0TWVzc2FnZURhdGUgPSBuZXcgRGF0ZShub3cgLSBub3RPbGRlclRoYW4pO1xyXG5cclxuICAgICAgICB3aGlsZSAoIW1zZyAmJiBEYXRlLm5vdygpIC0gbm93IDwgdGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBfY2xpZW50Lm1lc3NhZ2VzLmxpc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlU2VudEFmdGVyOiBlYXJsaWVzdE1lc3NhZ2VEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGVyciwgbWVzc2FnZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9tc2c7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZXMgJiYgdHlwZW9mIG1lc3NhZ2VzW1N5bWJvbC5pdGVyYXRvcl0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoX21zZyBvZiBtZXNzYWdlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfbXNnLmRpcmVjdGlvbiA9PSAnb3V0Ym91bmQtYXBpJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX21zZ0RhdGUgPSBEYXRlLnBhcnNlKF9tc2cuZGF0ZUNyZWF0ZWQpOyAvLyBpZiBtZXNzYWdlIGlzIG5ld2VyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSAtIHNhdmUgaXRcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2cgJiYgRGF0ZS5wYXJzZShtc2cuZGF0ZUNyZWF0ZWQpIDwgX21zZ0RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IF9tc2c7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW1zZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gX21zZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IGxpYlV0aWxzLnNsZWVwKDgwMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIW1zZykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlRXSUxJT19FUlJPUiwgXCJDb3VsZG4ndCBnZXQgdGhlIFNNUyB3aXRoaW4gXCIgKyB0aW1lb3V0ICsgJ21zLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlbW92ZU9uUmVhZCkge1xyXG4gICAgICAgICAgICBhd2FpdCAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBfY2xpZW50Lm1lc3NhZ2VzKG1zZy5zaWQpLnJlbW92ZSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSkoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtc2cuYm9keTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBTZW5kIGFuIFNNUy5cclxuICAgICAqIEBmdW5jdGlvbiBzZW5kU21zXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZnJvbSAtIFBob25lIG51bWJlciB0byBzZW5kIGZyb20uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdG8gLSBQaG9uZSBudW1iZXIgdG8gc2VuZCB0by5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIC0gTWVzc2FnZSB0byBzZW5kLlxyXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBNZXNzYWdlIFNJRC5cclxuICAgICAqIEBleGFtcGxlIDxjYXB0aW9uPltqYXZhc2NyaXB0XSBVc2FnZSBleGFtcGxlPC9jYXB0aW9uPlxyXG4gICAgICogdHdpbGlvLmluaXQoJ0FjY291bnQgU2lkJywgJ0FjY291bnQgVG9rZW4nKTtcclxuICAgICAqIHR3aWxpby5zZW5kU21zKCcrMXh4eHh4eHh4eHgnLCAnKzk3Mnh4eHh4eHh4eCcsICdIZWxsbyBXb3JsZCEnKTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLnNlbmRTbXMgPSBhc3luYyBmdW5jdGlvbihmcm9tLCB0bywgbWVzc2FnZSkge1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyhmcm9tLCAnZnJvbScpO1xyXG4gICAgICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyh0bywgJ3RvJyk7XHJcbiAgICAgICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKG1lc3NhZ2UsICdtZXNzYWdlJyk7XHJcblxyXG4gICAgICAgIHZhciByZXNwb25zZSA9IG51bGw7XHJcblxyXG4gICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBfY2xpZW50Lm1lc3NhZ2VzLmNyZWF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9keTogbWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBmcm9tLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvOiB0b1xyXG4gICAgICAgICAgICAgICAgfSkudGhlbihtZXNzYWdlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IG1lc3NhZ2Uuc2lkO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBlcnI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pKCk7XHJcblxyXG4gICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHZhciBtc2cgPSByZXNwb25zZS5tZXNzYWdlO1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UubW9yZUluZm8pIHtcclxuICAgICAgICAgICAgICAgIG1zZyArPSAnIEZvciBtb3JlIGluZm86ICcgKyByZXNwb25zZS5tb3JlSW5mbztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBtc2cgPSAnVW5hYmxlIHRvIGNvbm5lY3QgdG8gVHdpbGlvOiAnICsgbXNnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuVFdJTElPX0VSUk9SLCBtc2cpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfTtcclxuXHJcbiAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50ID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnQuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZy5jYWxsKHRoaXMsIHZhbCwgbmFtZSk7XHJcbiAgICBoZWxwZXJzLmFzc2VydEFyZ3VtZW50U3RyaW5nID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnRTdHJpbmcuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudE51bWJlciA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyLmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudEJvb2wgPSAodmFsLCBuYW1lKSA9PiB1dGlscy5hc3NlcnRBcmd1bWVudEJvb2wuY2FsbCh0aGlzLCB2YWwsIG5hbWUpO1xyXG4gICAgaGVscGVycy5hc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbCA9ICh2YWwsIG5hbWUpID0+IHV0aWxzLmFzc2VydEFyZ3VtZW50Qm9vbE9wdGlvbmFsLmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuICAgIGhlbHBlcnMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0ID0gKHZhbCwgbmFtZSkgPT4gdXRpbHMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0LmNhbGwodGhpcywgdmFsLCBuYW1lKTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
@@ -27,7 +27,7 @@ module.exports = async function (text, timeout) {
27
27
  this.helpers.assertArgumentTimeout(timeout, 'timeout');
28
28
 
29
29
  if (timeout) {
30
- this.helpers.setTimeoutImplicit(timeout);
30
+ await this.helpers.setTimeoutImplicit(timeout);
31
31
  }
32
32
 
33
33
  try {
@@ -43,14 +43,14 @@ module.exports = async function (text, timeout) {
43
43
  });
44
44
  } catch (e) {
45
45
  if (timeout) {
46
- this.helpers.restoreTimeoutImplicit();
46
+ await this.helpers.restoreTimeoutImplicit();
47
47
  }
48
48
 
49
49
  throw new this.OxError(this.errHelper.errorCode.ASSERT_ERROR, `Text: "${text}" found on the page`);
50
50
  }
51
51
 
52
52
  if (timeout) {
53
- this.helpers.restoreTimeoutImplicit();
53
+ await this.helpers.restoreTimeoutImplicit();
54
54
  }
55
55
  };
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvYXNzZXJ0VGV4dE5vdFByZXNlbnQuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInRleHQiLCJ0aW1lb3V0IiwiaGVscGVycyIsImFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmciLCJhc3NlcnRBcmd1bWVudFRpbWVvdXQiLCJzZXRUaW1lb3V0SW1wbGljaXQiLCJkcml2ZXIiLCJ3YWl0VW50aWwiLCJlbHMiLCIkJCIsImxlbmd0aCIsImUiLCJ3YWl0Rm9yVGltZW91dCIsInJlc3RvcmVUaW1lb3V0SW1wbGljaXQiLCJPeEVycm9yIiwiZXJySGVscGVyIiwiZXJyb3JDb2RlIiwiQVNTRVJUX0VSUk9SIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixnQkFBZUMsSUFBZixFQUFxQkMsT0FBckIsRUFBOEI7QUFDM0MsT0FBS0MsT0FBTCxDQUFhQyw0QkFBYixDQUEwQ0gsSUFBMUMsRUFBZ0QsTUFBaEQ7QUFDQSxPQUFLRSxPQUFMLENBQWFFLHFCQUFiLENBQW1DSCxPQUFuQyxFQUE0QyxTQUE1Qzs7QUFFQSxNQUFJQSxPQUFKLEVBQWE7QUFDVCxTQUFLQyxPQUFMLENBQWFHLGtCQUFiLENBQWdDSixPQUFoQztBQUNIOztBQUVELE1BQUk7QUFDQSxVQUFNLEtBQUtLLE1BQUwsQ0FBWUMsU0FBWixDQUFzQixZQUFXO0FBQ25DLFVBQUk7QUFDQSxjQUFNQyxHQUFHLEdBQUcsTUFBTSxLQUFLRixNQUFMLENBQVlHLEVBQVosQ0FBZSwwQkFBMEJULElBQTFCLEdBQWlDLEtBQWhELENBQWxCO0FBQ0EsZUFBT1EsR0FBRyxDQUFDRSxNQUFKLEtBQWUsQ0FBdEI7QUFDSCxPQUhELENBR0UsT0FBT0MsQ0FBUCxFQUFVO0FBQ1IsZUFBTyxLQUFQO0FBQ0g7QUFDSixLQVBLLEVBUU47QUFBRVYsTUFBQUEsT0FBTyxFQUFHQSxPQUFPLEdBQUdBLE9BQUgsR0FBYSxLQUFLVztBQUFyQyxLQVJNLENBQU47QUFTSCxHQVZELENBVUUsT0FBT0QsQ0FBUCxFQUFVO0FBQ1IsUUFBSVYsT0FBSixFQUFhO0FBQ1QsV0FBS0MsT0FBTCxDQUFhVyxzQkFBYjtBQUNIOztBQUNELFVBQU0sSUFBSSxLQUFLQyxPQUFULENBQWlCLEtBQUtDLFNBQUwsQ0FBZUMsU0FBZixDQUF5QkMsWUFBMUMsRUFBeUQsVUFBU2pCLElBQUsscUJBQXZFLENBQU47QUFDSDs7QUFFRCxNQUFJQyxPQUFKLEVBQWE7QUFDVCxTQUFLQyxPQUFMLENBQWFXLHNCQUFiO0FBQ0g7QUFDSixDQTVCRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBzdW1tYXJ5IEFzc2VydHMgd2hldGhlciB0aGUgZ2l2ZW4gdGV4dCBpcyAqbm90KiBwcmVzZW50IG9uIHRoZSBwYWdlLiBUaGF0IGlzLCB3aGV0aGVyIHRoZXJlIGFyZVxyXG4gKiAgICAgICAgICBubyBlbGVtZW50cyBjb250YWluaW5nIHRoaXMgdGV4dCBvbiB0aGUgcGFnZS5cclxuICogQGZ1bmN0aW9uIGFzc2VydFRleHROb3RQcmVzZW50XHJcbiAqIEBwYXJhbSB7U3RyaW5nfEVsZW1lbnR9IHRleHQgLSBUZXh0LlxyXG4gKiBAcGFyYW0ge051bWJlcj19IHRpbWVvdXQgLSBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdCBpcyA2MCBzZWNvbmRzLlxyXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICogd2ViLmluaXQoKTsvL09wZW5zIGJyb3dzZXIgc2Vzc2lvblxyXG4gKiB3ZWIub3BlbihcInd3dy55b3Vyd2Vic2l0ZS5jb21cIik7Ly8gT3BlbnMgYSB3ZWJzaXRlLlxyXG4gKiB3ZWIuYXNzZXJ0VGV4dE5vdFByZXNlbnQoXCJKb2huIERvZVwiKTsvLyBBc3NlcnRzIGlmIGEgdGV4dCBpcyBub3QgcHJlc2VudGVkIHNvbWV3aGVyZSBvbiB0aGUgcGFnZS5cclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gYXN5bmMgZnVuY3Rpb24odGV4dCwgdGltZW91dCkge1xyXG4gICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmcodGV4dCwgJ3RleHQnKTtcclxuICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudFRpbWVvdXQodGltZW91dCwgJ3RpbWVvdXQnKTtcclxuXHJcbiAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5zZXRUaW1lb3V0SW1wbGljaXQodGltZW91dCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci53YWl0VW50aWwoYXN5bmMoKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbHMgPSBhd2FpdCB0aGlzLmRyaXZlci4kJCgnLy8qW2NvbnRhaW5zKHRleHQoKSxcIicgKyB0ZXh0ICsgJ1wiKV0nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbHMubGVuZ3RoID09PSAwO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgdGltZW91dDogKHRpbWVvdXQgPyB0aW1lb3V0IDogdGhpcy53YWl0Rm9yVGltZW91dCkgfSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5oZWxwZXJzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgbmV3IHRoaXMuT3hFcnJvcih0aGlzLmVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBgVGV4dDogXCIke3RleHR9XCIgZm91bmQgb24gdGhlIHBhZ2VgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5yZXN0b3JlVGltZW91dEltcGxpY2l0KCk7XHJcbiAgICB9XHJcbn07XHJcbiJdfQ==
56
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvYXNzZXJ0VGV4dE5vdFByZXNlbnQuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInRleHQiLCJ0aW1lb3V0IiwiaGVscGVycyIsImFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmciLCJhc3NlcnRBcmd1bWVudFRpbWVvdXQiLCJzZXRUaW1lb3V0SW1wbGljaXQiLCJkcml2ZXIiLCJ3YWl0VW50aWwiLCJlbHMiLCIkJCIsImxlbmd0aCIsImUiLCJ3YWl0Rm9yVGltZW91dCIsInJlc3RvcmVUaW1lb3V0SW1wbGljaXQiLCJPeEVycm9yIiwiZXJySGVscGVyIiwiZXJyb3JDb2RlIiwiQVNTRVJUX0VSUk9SIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixnQkFBZUMsSUFBZixFQUFxQkMsT0FBckIsRUFBOEI7QUFDM0MsT0FBS0MsT0FBTCxDQUFhQyw0QkFBYixDQUEwQ0gsSUFBMUMsRUFBZ0QsTUFBaEQ7QUFDQSxPQUFLRSxPQUFMLENBQWFFLHFCQUFiLENBQW1DSCxPQUFuQyxFQUE0QyxTQUE1Qzs7QUFFQSxNQUFJQSxPQUFKLEVBQWE7QUFDVCxVQUFNLEtBQUtDLE9BQUwsQ0FBYUcsa0JBQWIsQ0FBZ0NKLE9BQWhDLENBQU47QUFDSDs7QUFFRCxNQUFJO0FBQ0EsVUFBTSxLQUFLSyxNQUFMLENBQVlDLFNBQVosQ0FBc0IsWUFBVztBQUNuQyxVQUFJO0FBQ0EsY0FBTUMsR0FBRyxHQUFHLE1BQU0sS0FBS0YsTUFBTCxDQUFZRyxFQUFaLENBQWUsMEJBQTBCVCxJQUExQixHQUFpQyxLQUFoRCxDQUFsQjtBQUNBLGVBQU9RLEdBQUcsQ0FBQ0UsTUFBSixLQUFlLENBQXRCO0FBQ0gsT0FIRCxDQUdFLE9BQU9DLENBQVAsRUFBVTtBQUNSLGVBQU8sS0FBUDtBQUNIO0FBQ0osS0FQSyxFQVFOO0FBQUVWLE1BQUFBLE9BQU8sRUFBR0EsT0FBTyxHQUFHQSxPQUFILEdBQWEsS0FBS1c7QUFBckMsS0FSTSxDQUFOO0FBU0gsR0FWRCxDQVVFLE9BQU9ELENBQVAsRUFBVTtBQUNSLFFBQUlWLE9BQUosRUFBYTtBQUNULFlBQU0sS0FBS0MsT0FBTCxDQUFhVyxzQkFBYixFQUFOO0FBQ0g7O0FBQ0QsVUFBTSxJQUFJLEtBQUtDLE9BQVQsQ0FBaUIsS0FBS0MsU0FBTCxDQUFlQyxTQUFmLENBQXlCQyxZQUExQyxFQUF5RCxVQUFTakIsSUFBSyxxQkFBdkUsQ0FBTjtBQUNIOztBQUVELE1BQUlDLE9BQUosRUFBYTtBQUNULFVBQU0sS0FBS0MsT0FBTCxDQUFhVyxzQkFBYixFQUFOO0FBQ0g7QUFDSixDQTVCRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBzdW1tYXJ5IEFzc2VydHMgd2hldGhlciB0aGUgZ2l2ZW4gdGV4dCBpcyAqbm90KiBwcmVzZW50IG9uIHRoZSBwYWdlLiBUaGF0IGlzLCB3aGV0aGVyIHRoZXJlIGFyZVxyXG4gKiAgICAgICAgICBubyBlbGVtZW50cyBjb250YWluaW5nIHRoaXMgdGV4dCBvbiB0aGUgcGFnZS5cclxuICogQGZ1bmN0aW9uIGFzc2VydFRleHROb3RQcmVzZW50XHJcbiAqIEBwYXJhbSB7U3RyaW5nfEVsZW1lbnR9IHRleHQgLSBUZXh0LlxyXG4gKiBAcGFyYW0ge051bWJlcj19IHRpbWVvdXQgLSBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdCBpcyA2MCBzZWNvbmRzLlxyXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICogd2ViLmluaXQoKTsvL09wZW5zIGJyb3dzZXIgc2Vzc2lvblxyXG4gKiB3ZWIub3BlbihcInd3dy55b3Vyd2Vic2l0ZS5jb21cIik7Ly8gT3BlbnMgYSB3ZWJzaXRlLlxyXG4gKiB3ZWIuYXNzZXJ0VGV4dE5vdFByZXNlbnQoXCJKb2huIERvZVwiKTsvLyBBc3NlcnRzIGlmIGEgdGV4dCBpcyBub3QgcHJlc2VudGVkIHNvbWV3aGVyZSBvbiB0aGUgcGFnZS5cclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gYXN5bmMgZnVuY3Rpb24odGV4dCwgdGltZW91dCkge1xyXG4gICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmcodGV4dCwgJ3RleHQnKTtcclxuICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudFRpbWVvdXQodGltZW91dCwgJ3RpbWVvdXQnKTtcclxuXHJcbiAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaGVscGVycy5zZXRUaW1lb3V0SW1wbGljaXQodGltZW91dCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci53YWl0VW50aWwoYXN5bmMoKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbHMgPSBhd2FpdCB0aGlzLmRyaXZlci4kJCgnLy8qW2NvbnRhaW5zKHRleHQoKSxcIicgKyB0ZXh0ICsgJ1wiKV0nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbHMubGVuZ3RoID09PSAwO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgdGltZW91dDogKHRpbWVvdXQgPyB0aW1lb3V0IDogdGhpcy53YWl0Rm9yVGltZW91dCkgfSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5oZWxwZXJzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgbmV3IHRoaXMuT3hFcnJvcih0aGlzLmVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBgVGV4dDogXCIke3RleHR9XCIgZm91bmQgb24gdGhlIHBhZ2VgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaGVscGVycy5yZXN0b3JlVGltZW91dEltcGxpY2l0KCk7XHJcbiAgICB9XHJcbn07XHJcbiJdfQ==
@@ -39,14 +39,14 @@ module.exports = async function (text, timeout) {
39
39
  });
40
40
  } catch (e) {
41
41
  if (timeout) {
42
- this.helpers.restoreTimeoutImplicit();
42
+ await this.helpers.restoreTimeoutImplicit();
43
43
  }
44
44
 
45
45
  throw new this.OxError(this.errHelper.errorCode.ASSERT_ERROR, `Text: "${text}" not found on the page`);
46
46
  }
47
47
 
48
48
  if (timeout) {
49
- this.helpers.restoreTimeoutImplicit();
49
+ await this.helpers.restoreTimeoutImplicit();
50
50
  }
51
51
  };
52
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvYXNzZXJ0VGV4dFByZXNlbnQuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInRleHQiLCJ0aW1lb3V0IiwiaGVscGVycyIsImFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmciLCJhc3NlcnRBcmd1bWVudFRpbWVvdXQiLCJzZXRUaW1lb3V0SW1wbGljaXQiLCJkcml2ZXIiLCJ3YWl0VW50aWwiLCJlbHMiLCIkJCIsImxlbmd0aCIsIndhaXRGb3JUaW1lb3V0IiwiZSIsInJlc3RvcmVUaW1lb3V0SW1wbGljaXQiLCJPeEVycm9yIiwiZXJySGVscGVyIiwiZXJyb3JDb2RlIiwiQVNTRVJUX0VSUk9SIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixnQkFBZUMsSUFBZixFQUFxQkMsT0FBckIsRUFBOEI7QUFDM0MsT0FBS0MsT0FBTCxDQUFhQyw0QkFBYixDQUEwQ0gsSUFBMUMsRUFBZ0QsTUFBaEQ7QUFDQSxPQUFLRSxPQUFMLENBQWFFLHFCQUFiLENBQW1DSCxPQUFuQyxFQUE0QyxTQUE1Qzs7QUFFQSxNQUFJQSxPQUFKLEVBQWE7QUFDVCxVQUFNLEtBQUtDLE9BQUwsQ0FBYUcsa0JBQWIsQ0FBZ0NKLE9BQWhDLENBQU47QUFDSDs7QUFFRCxNQUFJO0FBQ0EsVUFBTSxLQUFLSyxNQUFMLENBQVlDLFNBQVosQ0FBc0IsWUFBVztBQUNuQyxVQUFJQyxHQUFHLEdBQUcsTUFBTSxLQUFLRixNQUFMLENBQVlHLEVBQVosQ0FBZSwwQkFBMEJULElBQTFCLEdBQWlDLEtBQWhELENBQWhCO0FBQ0EsYUFBT1EsR0FBRyxDQUFDRSxNQUFKLEtBQWUsQ0FBdEI7QUFDSCxLQUhLLEVBSU47QUFBRVQsTUFBQUEsT0FBTyxFQUFHQSxPQUFPLEdBQUdBLE9BQUgsR0FBYSxLQUFLVTtBQUFyQyxLQUpNLENBQU47QUFLSCxHQU5ELENBTUUsT0FBT0MsQ0FBUCxFQUFVO0FBQ1IsUUFBSVgsT0FBSixFQUFhO0FBQ1QsV0FBS0MsT0FBTCxDQUFhVyxzQkFBYjtBQUNIOztBQUNELFVBQU0sSUFBSSxLQUFLQyxPQUFULENBQWlCLEtBQUtDLFNBQUwsQ0FBZUMsU0FBZixDQUF5QkMsWUFBMUMsRUFBeUQsVUFBU2pCLElBQUsseUJBQXZFLENBQU47QUFDSDs7QUFFRCxNQUFJQyxPQUFKLEVBQWE7QUFDVCxTQUFLQyxPQUFMLENBQWFXLHNCQUFiO0FBQ0g7QUFDSixDQXhCRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBzdW1tYXJ5IEFzc2VydHMgd2hldGhlciB0aGUgZ2l2ZW4gdGV4dCBpcyBwcmVzZW50IHNvbWV3aGVyZSBvbiB0aGUgcGFnZS4gVGhhdCBpcyB3aGV0aGVyIGFuXHJcbiAqICAgICAgICAgIGVsZW1lbnQgY29udGFpbmluZyB0aGlzIHRleHQgZXhpc3RzIG9uIHRoZSBwYWdlLlxyXG4gKiBAZnVuY3Rpb24gYXNzZXJ0VGV4dFByZXNlbnRcclxuICogQHBhcmFtIHtTdHJpbmd9IHRleHQgLSBUZXh0LlxyXG4gKiBAcGFyYW0ge051bWJlcj19IHRpbWVvdXQgLSBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdCBpcyA2MCBzZWNvbmRzLlxyXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICogd2ViLmluaXQoKTsvL09wZW5zIGJyb3dzZXIgc2Vzc2lvblxyXG4gKiB3ZWIub3BlbihcInd3dy55b3Vyd2Vic2l0ZS5jb21cIik7Ly8gT3BlbnMgYSB3ZWJzaXRlLlxyXG4gKiB3ZWIuYXNzZXJ0VGV4dFByZXNlbnQoXCJKb2huIERvZVwiKTsvLyBBc3NlcnRzIGlmIGEgdGV4dCBpcyBwcmVzZW50ZWQgc29tZXdoZXJlIG9uIHRoZSBwYWdlLlxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBhc3luYyBmdW5jdGlvbih0ZXh0LCB0aW1lb3V0KSB7XHJcbiAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyh0ZXh0LCAndGV4dCcpO1xyXG4gICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50VGltZW91dCh0aW1lb3V0LCAndGltZW91dCcpO1xyXG5cclxuICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5oZWxwZXJzLnNldFRpbWVvdXRJbXBsaWNpdCh0aW1lb3V0KTtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLndhaXRVbnRpbChhc3luYygpID0+IHtcclxuICAgICAgICAgICAgdmFyIGVscyA9IGF3YWl0IHRoaXMuZHJpdmVyLiQkKCcvLypbY29udGFpbnModGV4dCgpLFwiJyArIHRleHQgKyAnXCIpXScpO1xyXG4gICAgICAgICAgICByZXR1cm4gZWxzLmxlbmd0aCAhPT0gMDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgdGltZW91dDogKHRpbWVvdXQgPyB0aW1lb3V0IDogdGhpcy53YWl0Rm9yVGltZW91dCkgfSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5oZWxwZXJzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgbmV3IHRoaXMuT3hFcnJvcih0aGlzLmVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBgVGV4dDogXCIke3RleHR9XCIgbm90IGZvdW5kIG9uIHRoZSBwYWdlYCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICB0aGlzLmhlbHBlcnMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdCgpO1xyXG4gICAgfVxyXG59O1xyXG4iXX0=
52
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvYXNzZXJ0VGV4dFByZXNlbnQuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInRleHQiLCJ0aW1lb3V0IiwiaGVscGVycyIsImFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmciLCJhc3NlcnRBcmd1bWVudFRpbWVvdXQiLCJzZXRUaW1lb3V0SW1wbGljaXQiLCJkcml2ZXIiLCJ3YWl0VW50aWwiLCJlbHMiLCIkJCIsImxlbmd0aCIsIndhaXRGb3JUaW1lb3V0IiwiZSIsInJlc3RvcmVUaW1lb3V0SW1wbGljaXQiLCJPeEVycm9yIiwiZXJySGVscGVyIiwiZXJyb3JDb2RlIiwiQVNTRVJUX0VSUk9SIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixnQkFBZUMsSUFBZixFQUFxQkMsT0FBckIsRUFBOEI7QUFDM0MsT0FBS0MsT0FBTCxDQUFhQyw0QkFBYixDQUEwQ0gsSUFBMUMsRUFBZ0QsTUFBaEQ7QUFDQSxPQUFLRSxPQUFMLENBQWFFLHFCQUFiLENBQW1DSCxPQUFuQyxFQUE0QyxTQUE1Qzs7QUFFQSxNQUFJQSxPQUFKLEVBQWE7QUFDVCxVQUFNLEtBQUtDLE9BQUwsQ0FBYUcsa0JBQWIsQ0FBZ0NKLE9BQWhDLENBQU47QUFDSDs7QUFFRCxNQUFJO0FBQ0EsVUFBTSxLQUFLSyxNQUFMLENBQVlDLFNBQVosQ0FBc0IsWUFBVztBQUNuQyxVQUFJQyxHQUFHLEdBQUcsTUFBTSxLQUFLRixNQUFMLENBQVlHLEVBQVosQ0FBZSwwQkFBMEJULElBQTFCLEdBQWlDLEtBQWhELENBQWhCO0FBQ0EsYUFBT1EsR0FBRyxDQUFDRSxNQUFKLEtBQWUsQ0FBdEI7QUFDSCxLQUhLLEVBSU47QUFBRVQsTUFBQUEsT0FBTyxFQUFHQSxPQUFPLEdBQUdBLE9BQUgsR0FBYSxLQUFLVTtBQUFyQyxLQUpNLENBQU47QUFLSCxHQU5ELENBTUUsT0FBT0MsQ0FBUCxFQUFVO0FBQ1IsUUFBSVgsT0FBSixFQUFhO0FBQ1QsWUFBTSxLQUFLQyxPQUFMLENBQWFXLHNCQUFiLEVBQU47QUFDSDs7QUFDRCxVQUFNLElBQUksS0FBS0MsT0FBVCxDQUFpQixLQUFLQyxTQUFMLENBQWVDLFNBQWYsQ0FBeUJDLFlBQTFDLEVBQXlELFVBQVNqQixJQUFLLHlCQUF2RSxDQUFOO0FBQ0g7O0FBRUQsTUFBSUMsT0FBSixFQUFhO0FBQ1QsVUFBTSxLQUFLQyxPQUFMLENBQWFXLHNCQUFiLEVBQU47QUFDSDtBQUNKLENBeEJEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQHN1bW1hcnkgQXNzZXJ0cyB3aGV0aGVyIHRoZSBnaXZlbiB0ZXh0IGlzIHByZXNlbnQgc29tZXdoZXJlIG9uIHRoZSBwYWdlLiBUaGF0IGlzIHdoZXRoZXIgYW5cclxuICogICAgICAgICAgZWxlbWVudCBjb250YWluaW5nIHRoaXMgdGV4dCBleGlzdHMgb24gdGhlIHBhZ2UuXHJcbiAqIEBmdW5jdGlvbiBhc3NlcnRUZXh0UHJlc2VudFxyXG4gKiBAcGFyYW0ge1N0cmluZ30gdGV4dCAtIFRleHQuXHJcbiAqIEBwYXJhbSB7TnVtYmVyPX0gdGltZW91dCAtIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0IGlzIDYwIHNlY29uZHMuXHJcbiAqIEBleGFtcGxlIDxjYXB0aW9uPltqYXZhc2NyaXB0XSBVc2FnZSBleGFtcGxlPC9jYXB0aW9uPlxyXG4gKiB3ZWIuaW5pdCgpOy8vT3BlbnMgYnJvd3NlciBzZXNzaW9uXHJcbiAqIHdlYi5vcGVuKFwid3d3LnlvdXJ3ZWJzaXRlLmNvbVwiKTsvLyBPcGVucyBhIHdlYnNpdGUuXHJcbiAqIHdlYi5hc3NlcnRUZXh0UHJlc2VudChcIkpvaG4gRG9lXCIpOy8vIEFzc2VydHMgaWYgYSB0ZXh0IGlzIHByZXNlbnRlZCBzb21ld2hlcmUgb24gdGhlIHBhZ2UuXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGFzeW5jIGZ1bmN0aW9uKHRleHQsIHRpbWVvdXQpIHtcclxuICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKHRleHQsICd0ZXh0Jyk7XHJcbiAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0KHRpbWVvdXQsICd0aW1lb3V0Jyk7XHJcblxyXG4gICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmhlbHBlcnMuc2V0VGltZW91dEltcGxpY2l0KHRpbWVvdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIud2FpdFVudGlsKGFzeW5jKCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgZWxzID0gYXdhaXQgdGhpcy5kcml2ZXIuJCQoJy8vKltjb250YWlucyh0ZXh0KCksXCInICsgdGV4dCArICdcIildJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBlbHMubGVuZ3RoICE9PSAwO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyB0aW1lb3V0OiAodGltZW91dCA/IHRpbWVvdXQgOiB0aGlzLndhaXRGb3JUaW1lb3V0KSB9KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhlbHBlcnMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBuZXcgdGhpcy5PeEVycm9yKHRoaXMuZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIGBUZXh0OiBcIiR7dGV4dH1cIiBub3QgZm91bmQgb24gdGhlIHBhZ2VgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaGVscGVycy5yZXN0b3JlVGltZW91dEltcGxpY2l0KCk7XHJcbiAgICB9XHJcbn07XHJcbiJdfQ==
@@ -261,6 +261,12 @@ Object.defineProperty(exports, "isExist", {
261
261
  return _isExist.default;
262
262
  }
263
263
  });
264
+ Object.defineProperty(exports, "isInteractable", {
265
+ enumerable: true,
266
+ get: function () {
267
+ return _isInteractable.default;
268
+ }
269
+ });
264
270
  Object.defineProperty(exports, "isSelected", {
265
271
  enumerable: true,
266
272
  get: function () {
@@ -560,6 +566,8 @@ var _isAlertPresent = _interopRequireDefault(require("./isAlertPresent"));
560
566
 
561
567
  var _isExist = _interopRequireDefault(require("./isExist"));
562
568
 
569
+ var _isInteractable = _interopRequireDefault(require("./isInteractable"));
570
+
563
571
  var _isSelected = _interopRequireDefault(require("./isSelected"));
564
572
 
565
573
  var _isVisible = _interopRequireDefault(require("./isVisible"));
@@ -631,4 +639,4 @@ var _getHTML = _interopRequireDefault(require("./getHTML"));
631
639
  var _isChecked = _interopRequireDefault(require("./isChecked"));
632
640
 
633
641
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
634
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBhbGVydEFjY2VwdH0gZnJvbSAnLi9hbGVydEFjY2VwdCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBhbGVydERpc21pc3N9IGZyb20gJy4vYWxlcnREaXNtaXNzJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydEFsZXJ0fSBmcm9tICcuL2Fzc2VydEFsZXJ0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydEV4aXN0fSBmcm9tICcuL2Fzc2VydEV4aXN0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydFNlbGVjdGVkTGFiZWx9IGZyb20gJy4vYXNzZXJ0U2VsZWN0ZWRMYWJlbCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBhc3NlcnRTZWxlY3RlZFZhbHVlfSBmcm9tICcuL2Fzc2VydFNlbGVjdGVkVmFsdWUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgYXNzZXJ0VGV4dH0gZnJvbSAnLi9hc3NlcnRUZXh0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydFRleHROb3RQcmVzZW50fSBmcm9tICcuL2Fzc2VydFRleHROb3RQcmVzZW50JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydFRleHRQcmVzZW50fSBmcm9tICcuL2Fzc2VydFRleHRQcmVzZW50JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydFRpdGxlfSBmcm9tICcuL2Fzc2VydFRpdGxlJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydFZhbHVlfSBmcm9tICcuL2Fzc2VydFZhbHVlJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGJhY2t9IGZyb20gJy4vYmFjayc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjbGVhcn0gZnJvbSAnLi9jbGVhcic7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjbGlja30gZnJvbSAnLi9jbGljayc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjbGlja0hpZGRlbn0gZnJvbSAnLi9jbGlja0hpZGRlbic7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjbG9zZVdpbmRvd30gZnJvbSAnLi9jbG9zZVdpbmRvdyc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkZWJ1Z30gZnJvbSAnLi9kZWJ1Zyc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkZWxldGVDb29raWVzfSBmcm9tICcuL2RlbGV0ZUNvb2tpZXMnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZGVzZWxlY3R9IGZyb20gJy4vZGVzZWxlY3QnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZG91YmxlQ2xpY2t9IGZyb20gJy4vZG91YmxlQ2xpY2snO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZHJhZ0FuZERyb3B9IGZyb20gJy4vZHJhZ0FuZERyb3AnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZXhlY3V0ZX0gZnJvbSAnLi9leGVjdXRlJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGZpbGVCcm93c2V9IGZyb20gJy4vZmlsZUJyb3dzZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmaW5kRWxlbWVudH0gZnJvbSAnLi9maW5kRWxlbWVudCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmaW5kRWxlbWVudHN9IGZyb20gJy4vZmluZEVsZW1lbnRzJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGZ1bGxzY3JlZW5XaW5kb3d9IGZyb20gJy4vZnVsbHNjcmVlbldpbmRvdyc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZXRBbGVydFRleHR9IGZyb20gJy4vZ2V0QWxlcnRUZXh0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGdldEF0dHJpYnV0ZX0gZnJvbSAnLi9nZXRBdHRyaWJ1dGUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0QnJvd3NlckxvZ3N9IGZyb20gJy4vZ2V0QnJvd3NlckxvZ3MnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0Q29va2llc30gZnJvbSAnLi9nZXRDb29raWVzJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGdldENzc1ZhbHVlfSBmcm9tICcuL2dldENzc1ZhbHVlJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGdldEVsZW1lbnRDb3VudH0gZnJvbSAnLi9nZXRFbGVtZW50Q291bnQnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0U291cmNlfSBmcm9tICcuL2dldFNvdXJjZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZXRUZXh0fSBmcm9tICcuL2dldFRleHQnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0VGl0bGV9IGZyb20gJy4vZ2V0VGl0bGUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0VXJsfSBmcm9tICcuL2dldFVybCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZXRWYWx1ZX0gZnJvbSAnLi9nZXRWYWx1ZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZXRXaW5kb3dIYW5kbGVzfSBmcm9tICcuL2dldFdpbmRvd0hhbmRsZXMnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0V2luZG93U2l6ZX0gZnJvbSAnLi9nZXRXaW5kb3dTaXplJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGdldFhNTFBhZ2VTb3VyY2V9IGZyb20gJy4vZ2V0WE1MUGFnZVNvdXJjZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbmRleH0gZnJvbSAnLi9pbmRleCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpc0FsZXJ0UHJlc2VudH0gZnJvbSAnLi9pc0FsZXJ0UHJlc2VudCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpc0V4aXN0fSBmcm9tICcuL2lzRXhpc3QnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgaXNTZWxlY3RlZH0gZnJvbSAnLi9pc1NlbGVjdGVkJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGlzVmlzaWJsZX0gZnJvbSAnLi9pc1Zpc2libGUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgbWFrZVZpc2libGV9IGZyb20gJy4vbWFrZVZpc2libGUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgbWF4aW1pemVXaW5kb3d9IGZyb20gJy4vbWF4aW1pemVXaW5kb3cnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgbWluaW1pemVXaW5kb3d9IGZyb20gJy4vbWluaW1pemVXaW5kb3cnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgbmV3V2luZG93fSBmcm9tICcuL25ld1dpbmRvdyc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBvcGVufSBmcm9tICcuL29wZW4nO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgcGF1c2V9IGZyb20gJy4vcGF1c2UnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgcG9pbnR9IGZyb20gJy4vcG9pbnQnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgcG9pbnRKU30gZnJvbSAnLi9wb2ludEpTJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHJlZnJlc2h9IGZyb20gJy4vcmVmcmVzaCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyByaWdodENsaWNrfSBmcm9tICcuL3JpZ2h0Q2xpY2snO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgcmlnaHRDbGlja0FjdGlvbnN9IGZyb20gJy4vcmlnaHRDbGlja0FjdGlvbnMnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgc2Nyb2xsVG9FbGVtZW50fSBmcm9tICcuL3Njcm9sbFRvRWxlbWVudCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzZWxlY3R9IGZyb20gJy4vc2VsZWN0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHNlbGVjdEZyYW1lfSBmcm9tICcuL3NlbGVjdEZyYW1lJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHNlbGVjdFdpbmRvd30gZnJvbSAnLi9zZWxlY3RXaW5kb3cnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgc2VuZEtleXN9IGZyb20gJy4vc2VuZEtleXMnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgc2V0QXV0b1dhaXRGb3JBbmd1bGFyfSBmcm9tICcuL3NldEF1dG9XYWl0Rm9yQW5ndWxhcic7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzZXRUaW1lb3V0fSBmcm9tICcuL3NldFRpbWVvdXQnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgc2V0V2luZG93U2l6ZX0gZnJvbSAnLi9zZXRXaW5kb3dTaXplJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHRha2VTY3JlZW5zaG90fSBmcm9tICcuL3Rha2VTY3JlZW5zaG90JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHR5cGV9IGZyb20gJy4vdHlwZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3YWl0Rm9yQW5ndWxhciB9IGZyb20gJy4vd2FpdEZvckFuZ3VsYXInO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgd2FpdEZvckV4aXN0fSBmcm9tICcuL3dhaXRGb3JFeGlzdCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3YWl0Rm9yTm90RXhpc3R9IGZyb20gJy4vd2FpdEZvck5vdEV4aXN0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHdhaXRGb3JOb3RUZXh0fSBmcm9tICcuL3dhaXRGb3JOb3RUZXh0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHdhaXRGb3JOb3RWYWx1ZX0gZnJvbSAnLi93YWl0Rm9yTm90VmFsdWUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgd2FpdEZvclRleHR9IGZyb20gJy4vd2FpdEZvclRleHQnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgd2FpdEZvclZhbHVlfSBmcm9tICcuL3dhaXRGb3JWYWx1ZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3YWl0Rm9yVmlzaWJsZX0gZnJvbSAnLi93YWl0Rm9yVmlzaWJsZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3YWl0Rm9yV2luZG93fSBmcm9tICcuL3dhaXRGb3JXaW5kb3cnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgd2FpdEZvckludGVyYWN0YWJsZX0gZnJvbSAnLi93YWl0Rm9ySW50ZXJhY3RhYmxlJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGdldEhUTUx9IGZyb20gJy4vZ2V0SFRNTCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpc0NoZWNrZWR9IGZyb20gJy4vaXNDaGVja2VkJztcclxuIl19
642
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBhbGVydEFjY2VwdH0gZnJvbSAnLi9hbGVydEFjY2VwdCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBhbGVydERpc21pc3N9IGZyb20gJy4vYWxlcnREaXNtaXNzJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydEFsZXJ0fSBmcm9tICcuL2Fzc2VydEFsZXJ0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydEV4aXN0fSBmcm9tICcuL2Fzc2VydEV4aXN0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydFNlbGVjdGVkTGFiZWx9IGZyb20gJy4vYXNzZXJ0U2VsZWN0ZWRMYWJlbCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBhc3NlcnRTZWxlY3RlZFZhbHVlfSBmcm9tICcuL2Fzc2VydFNlbGVjdGVkVmFsdWUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgYXNzZXJ0VGV4dH0gZnJvbSAnLi9hc3NlcnRUZXh0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydFRleHROb3RQcmVzZW50fSBmcm9tICcuL2Fzc2VydFRleHROb3RQcmVzZW50JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydFRleHRQcmVzZW50fSBmcm9tICcuL2Fzc2VydFRleHRQcmVzZW50JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydFRpdGxlfSBmcm9tICcuL2Fzc2VydFRpdGxlJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydFZhbHVlfSBmcm9tICcuL2Fzc2VydFZhbHVlJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGJhY2t9IGZyb20gJy4vYmFjayc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjbGVhcn0gZnJvbSAnLi9jbGVhcic7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjbGlja30gZnJvbSAnLi9jbGljayc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjbGlja0hpZGRlbn0gZnJvbSAnLi9jbGlja0hpZGRlbic7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjbG9zZVdpbmRvd30gZnJvbSAnLi9jbG9zZVdpbmRvdyc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkZWJ1Z30gZnJvbSAnLi9kZWJ1Zyc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkZWxldGVDb29raWVzfSBmcm9tICcuL2RlbGV0ZUNvb2tpZXMnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZGVzZWxlY3R9IGZyb20gJy4vZGVzZWxlY3QnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZG91YmxlQ2xpY2t9IGZyb20gJy4vZG91YmxlQ2xpY2snO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZHJhZ0FuZERyb3B9IGZyb20gJy4vZHJhZ0FuZERyb3AnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZXhlY3V0ZX0gZnJvbSAnLi9leGVjdXRlJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGZpbGVCcm93c2V9IGZyb20gJy4vZmlsZUJyb3dzZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmaW5kRWxlbWVudH0gZnJvbSAnLi9maW5kRWxlbWVudCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBmaW5kRWxlbWVudHN9IGZyb20gJy4vZmluZEVsZW1lbnRzJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGZ1bGxzY3JlZW5XaW5kb3d9IGZyb20gJy4vZnVsbHNjcmVlbldpbmRvdyc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZXRBbGVydFRleHR9IGZyb20gJy4vZ2V0QWxlcnRUZXh0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGdldEF0dHJpYnV0ZX0gZnJvbSAnLi9nZXRBdHRyaWJ1dGUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0QnJvd3NlckxvZ3N9IGZyb20gJy4vZ2V0QnJvd3NlckxvZ3MnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0Q29va2llc30gZnJvbSAnLi9nZXRDb29raWVzJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGdldENzc1ZhbHVlfSBmcm9tICcuL2dldENzc1ZhbHVlJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGdldEVsZW1lbnRDb3VudH0gZnJvbSAnLi9nZXRFbGVtZW50Q291bnQnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0U291cmNlfSBmcm9tICcuL2dldFNvdXJjZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZXRUZXh0fSBmcm9tICcuL2dldFRleHQnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0VGl0bGV9IGZyb20gJy4vZ2V0VGl0bGUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0VXJsfSBmcm9tICcuL2dldFVybCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZXRWYWx1ZX0gZnJvbSAnLi9nZXRWYWx1ZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZXRXaW5kb3dIYW5kbGVzfSBmcm9tICcuL2dldFdpbmRvd0hhbmRsZXMnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZ2V0V2luZG93U2l6ZX0gZnJvbSAnLi9nZXRXaW5kb3dTaXplJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGdldFhNTFBhZ2VTb3VyY2V9IGZyb20gJy4vZ2V0WE1MUGFnZVNvdXJjZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbmRleH0gZnJvbSAnLi9pbmRleCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpc0FsZXJ0UHJlc2VudH0gZnJvbSAnLi9pc0FsZXJ0UHJlc2VudCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpc0V4aXN0fSBmcm9tICcuL2lzRXhpc3QnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgaXNJbnRlcmFjdGFibGV9IGZyb20gJy4vaXNJbnRlcmFjdGFibGUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgaXNTZWxlY3RlZH0gZnJvbSAnLi9pc1NlbGVjdGVkJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGlzVmlzaWJsZX0gZnJvbSAnLi9pc1Zpc2libGUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgbWFrZVZpc2libGV9IGZyb20gJy4vbWFrZVZpc2libGUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgbWF4aW1pemVXaW5kb3d9IGZyb20gJy4vbWF4aW1pemVXaW5kb3cnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgbWluaW1pemVXaW5kb3d9IGZyb20gJy4vbWluaW1pemVXaW5kb3cnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgbmV3V2luZG93fSBmcm9tICcuL25ld1dpbmRvdyc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBvcGVufSBmcm9tICcuL29wZW4nO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgcGF1c2V9IGZyb20gJy4vcGF1c2UnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgcG9pbnR9IGZyb20gJy4vcG9pbnQnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgcG9pbnRKU30gZnJvbSAnLi9wb2ludEpTJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHJlZnJlc2h9IGZyb20gJy4vcmVmcmVzaCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyByaWdodENsaWNrfSBmcm9tICcuL3JpZ2h0Q2xpY2snO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgcmlnaHRDbGlja0FjdGlvbnN9IGZyb20gJy4vcmlnaHRDbGlja0FjdGlvbnMnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgc2Nyb2xsVG9FbGVtZW50fSBmcm9tICcuL3Njcm9sbFRvRWxlbWVudCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzZWxlY3R9IGZyb20gJy4vc2VsZWN0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHNlbGVjdEZyYW1lfSBmcm9tICcuL3NlbGVjdEZyYW1lJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHNlbGVjdFdpbmRvd30gZnJvbSAnLi9zZWxlY3RXaW5kb3cnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgc2VuZEtleXN9IGZyb20gJy4vc2VuZEtleXMnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgc2V0QXV0b1dhaXRGb3JBbmd1bGFyfSBmcm9tICcuL3NldEF1dG9XYWl0Rm9yQW5ndWxhcic7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzZXRUaW1lb3V0fSBmcm9tICcuL3NldFRpbWVvdXQnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgc2V0V2luZG93U2l6ZX0gZnJvbSAnLi9zZXRXaW5kb3dTaXplJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHRha2VTY3JlZW5zaG90fSBmcm9tICcuL3Rha2VTY3JlZW5zaG90JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHR5cGV9IGZyb20gJy4vdHlwZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3YWl0Rm9yQW5ndWxhciB9IGZyb20gJy4vd2FpdEZvckFuZ3VsYXInO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgd2FpdEZvckV4aXN0fSBmcm9tICcuL3dhaXRGb3JFeGlzdCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3YWl0Rm9yTm90RXhpc3R9IGZyb20gJy4vd2FpdEZvck5vdEV4aXN0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHdhaXRGb3JOb3RUZXh0fSBmcm9tICcuL3dhaXRGb3JOb3RUZXh0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHdhaXRGb3JOb3RWYWx1ZX0gZnJvbSAnLi93YWl0Rm9yTm90VmFsdWUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgd2FpdEZvclRleHR9IGZyb20gJy4vd2FpdEZvclRleHQnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgd2FpdEZvclZhbHVlfSBmcm9tICcuL3dhaXRGb3JWYWx1ZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3YWl0Rm9yVmlzaWJsZX0gZnJvbSAnLi93YWl0Rm9yVmlzaWJsZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3YWl0Rm9yV2luZG93fSBmcm9tICcuL3dhaXRGb3JXaW5kb3cnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgd2FpdEZvckludGVyYWN0YWJsZX0gZnJvbSAnLi93YWl0Rm9ySW50ZXJhY3RhYmxlJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGdldEhUTUx9IGZyb20gJy4vZ2V0SFRNTCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpc0NoZWNrZWR9IGZyb20gJy4vaXNDaGVja2VkJztcclxuIl19
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ require("source-map-support/register");
4
+
5
+ /*
6
+ * Copyright (C) 2015-present CloudBeat Limited
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ */
13
+
14
+ /**
15
+ * @summary Returns true if the selected element is interactable.
16
+ * @description Element is considered interactable only if it exists, is visible, is within viewport (if not try scroll to it),
17
+ * its center is not overlapped with another element, and is not disabled.
18
+ * @function isInteractable
19
+ * @param {String|Element} locator - An element locator.
20
+ * @param {Number=} timeout - Timeout in milliseconds to wait for element to appear. Default is 60 seconds.
21
+ * @return {Boolean} True if element is interactable. False otherwise.
22
+ * @example <caption>[javascript] Usage example</caption>
23
+ * web.init();//Opens browser session.
24
+ * web.open("www.yourwebsite.com");// Opens a website.
25
+ * if (web.isInteractable("id=SaveButton")) {
26
+ * // the element is interactable
27
+ * }
28
+ */
29
+ module.exports = async function (locator, timeout) {
30
+ this.helpers.assertArgumentTimeout(timeout, 'timeout');
31
+ const el = await this.helpers.getElement(locator, false, timeout);
32
+ return await el.isClickable();
33
+ };
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvaXNJbnRlcmFjdGFibGUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImxvY2F0b3IiLCJ0aW1lb3V0IiwiaGVscGVycyIsImFzc2VydEFyZ3VtZW50VGltZW91dCIsImVsIiwiZ2V0RWxlbWVudCIsImlzQ2xpY2thYmxlIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLGdCQUFlQyxPQUFmLEVBQXdCQyxPQUF4QixFQUFpQztBQUM5QyxPQUFLQyxPQUFMLENBQWFDLHFCQUFiLENBQW1DRixPQUFuQyxFQUE0QyxTQUE1QztBQUNBLFFBQU1HLEVBQUUsR0FBRyxNQUFNLEtBQUtGLE9BQUwsQ0FBYUcsVUFBYixDQUF3QkwsT0FBeEIsRUFBaUMsS0FBakMsRUFBd0NDLE9BQXhDLENBQWpCO0FBQ0EsU0FBTyxNQUFNRyxFQUFFLENBQUNFLFdBQUgsRUFBYjtBQUNILENBSkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAc3VtbWFyeSBSZXR1cm5zIHRydWUgaWYgdGhlIHNlbGVjdGVkIGVsZW1lbnQgaXMgaW50ZXJhY3RhYmxlLlxyXG4gKiBAZGVzY3JpcHRpb24gRWxlbWVudCBpcyBjb25zaWRlcmVkIGludGVyYWN0YWJsZSBvbmx5IGlmIGl0IGV4aXN0cywgaXMgdmlzaWJsZSwgaXMgd2l0aGluIHZpZXdwb3J0IChpZiBub3QgdHJ5IHNjcm9sbCB0byBpdCksIFxyXG4gKiAgICAgICAgICAgICAgaXRzIGNlbnRlciBpcyBub3Qgb3ZlcmxhcHBlZCB3aXRoIGFub3RoZXIgZWxlbWVudCwgYW5kIGlzIG5vdCBkaXNhYmxlZC5cclxuICogQGZ1bmN0aW9uIGlzSW50ZXJhY3RhYmxlXHJcbiAqIEBwYXJhbSB7U3RyaW5nfEVsZW1lbnR9IGxvY2F0b3IgLSBBbiBlbGVtZW50IGxvY2F0b3IuXHJcbiAqIEBwYXJhbSB7TnVtYmVyPX0gdGltZW91dCAtIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIGVsZW1lbnQgdG8gYXBwZWFyLiBEZWZhdWx0IGlzIDYwIHNlY29uZHMuXHJcbiAqIEByZXR1cm4ge0Jvb2xlYW59IFRydWUgaWYgZWxlbWVudCBpcyBpbnRlcmFjdGFibGUuIEZhbHNlIG90aGVyd2lzZS5cclxuICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XHJcbiAqIHdlYi5pbml0KCk7Ly9PcGVucyBicm93c2VyIHNlc3Npb24uXHJcbiAqIHdlYi5vcGVuKFwid3d3LnlvdXJ3ZWJzaXRlLmNvbVwiKTsvLyBPcGVucyBhIHdlYnNpdGUuXHJcbiAqIGlmICh3ZWIuaXNJbnRlcmFjdGFibGUoXCJpZD1TYXZlQnV0dG9uXCIpKSB7XHJcbiAqICAvLyB0aGUgZWxlbWVudCBpcyBpbnRlcmFjdGFibGVcclxuICogfVxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBhc3luYyBmdW5jdGlvbihsb2NhdG9yLCB0aW1lb3V0KSB7XHJcbiAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0KHRpbWVvdXQsICd0aW1lb3V0Jyk7XHJcbiAgICBjb25zdCBlbCA9IGF3YWl0IHRoaXMuaGVscGVycy5nZXRFbGVtZW50KGxvY2F0b3IsIGZhbHNlLCB0aW1lb3V0KTtcclxuICAgIHJldHVybiBhd2FpdCBlbC5pc0NsaWNrYWJsZSgpO1xyXG59O1xyXG4iXX0=
@@ -82,6 +82,7 @@ class OxygenWorker extends EventEmitter {
82
82
  }
83
83
 
84
84
  let error = null;
85
+ const cwd = this._cwd;
85
86
 
86
87
  try {
87
88
  this._oxygen && this._oxygen.onBeforeCase && (await this._oxygen.onBeforeCase(context));
@@ -89,6 +90,26 @@ class OxygenWorker extends EventEmitter {
89
90
  try {
90
91
  require.cache[require.resolve(scriptPath)] && delete require.cache[require.resolve(scriptPath)];
91
92
 
93
+ const Module = require('module');
94
+
95
+ const originalRequire = Module.prototype.require;
96
+
97
+ Module.prototype.require = function () {
98
+ const script = arguments['0'];
99
+
100
+ try {
101
+ if (script && script.startsWith('.')) {
102
+ var resolvedPath = require.resolve(path.resolve(cwd, script));
103
+
104
+ if (require.cache[resolvedPath]) {
105
+ delete require.cache[resolvedPath];
106
+ }
107
+ }
108
+ } catch (ex) {}
109
+
110
+ return originalRequire.apply(this, arguments);
111
+ };
112
+
92
113
  require(scriptPath);
93
114
  } catch (e) {
94
115
  if (e && e.type && e.type === errorHelper.errorCode.ASSERT_PASSED) {} else {
@@ -243,4 +264,4 @@ class OxygenWorker extends EventEmitter {
243
264
  }
244
265
 
245
266
  exports.default = OxygenWorker;
246
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydW5uZXJzL294eWdlbi9PeHlnZW5Xb3JrZXIuanMiXSwibmFtZXMiOlsiRmliZXIiLCJyZXF1aXJlIiwicGF0aCIsIkV2ZW50RW1pdHRlciIsIk94eWdlbiIsImRlZmF1bHQiLCJveHV0aWwiLCJlcnJvckhlbHBlciIsIm1vZHVsZSIsImdsb2JhbCIsImJyb3dzZXIiLCJPeHlnZW5Xb3JrZXIiLCJjb25zdHJ1Y3RvciIsInJlcG9ydGVyIiwibG9nZ2VyIiwiX294eWdlbiIsIl9vcHRzIiwiX2xvZ2dlciIsIl90ZXN0SG9va3MiLCJfcmVwb3J0ZXIiLCJfcnVuSWQiLCJpbml0IiwicnVuSWQiLCJvcHRpb25zIiwiY2FwcyIsIl9jd2QiLCJjd2QiLCJwcm9jZXNzIiwib24iLCJfaGFuZGxlQmVmb3JlQ29tbWFuZCIsImJpbmQiLCJfaGFuZGxlQWZ0ZXJDb21tYW5kIiwiX2hhbmRsZUxvZ0VudHJ5IiwibG9hZFRlc3RIb29rcyIsImRlYnVnIiwiZSIsInRvU3RyaW5nIiwicnVuIiwic2NyaXB0UGF0aCIsImNvbnRleHQiLCJwb0ZpbGUiLCJFcnJvciIsImxvYWRQYWdlT2JqZWN0RmlsZSIsIl9zdGVwcyIsImlzQWJzb2x1dGUiLCJyZXNvbHZlIiwiZXJyb3IiLCJvbkJlZm9yZUNhc2UiLCJfcnVuRm5JbkZpYmVyQ29udGV4dCIsImNhY2hlIiwidHlwZSIsImVycm9yQ29kZSIsIkFTU0VSVF9QQVNTRUQiLCJfd2FpdFN0ZXBSZXN1bHQiLCJnZXRGYWlsdXJlRnJvbUVycm9yIiwibW9kdWxlQ2FwcyIsImdldE1vZHVsZXNDYXBhYmlsaXRpZXMiLCJvbkFmdGVyQ2FzZSIsInJlc3VsdFN0b3JlIiwicmVzdWx0cyIsInJlc2V0UmVzdWx0cyIsIm94Q29udGV4dCIsInZhcnMiLCJkaXNwb3NlIiwic3RhdHVzIiwiZGlzcG9zZU1vZHVsZXMiLCJjYWxsVGVzdEhvb2siLCJob29rTmFtZSIsImhvb2tBcmdzIiwiZXhlY3V0ZVRlc3RIb29rIiwiZm4iLCJQcm9taXNlIiwicmVqZWN0IiwicmVzdWx0IiwiYXBwbHkiLCJlcnIiLCJyZXBsU3RhcnQiLCJjb21tYW5kUmVzb2x2ZSIsInNldFRpbWVvdXQiLCJtb2R1bGVzIiwia2V5cyIsIk9iamVjdCIsIm1hcCIsIml0ZW0iLCJkcml2ZXIiLCJlbWl0IiwicHVzaCIsImxldmVsIiwibWVzc2FnZSIsInNyYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBWUEsTUFBTUEsS0FBSyxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFyQjs7QUFDQSxNQUFNQyxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFtQkYsT0FBTyxDQUFDLFFBQUQsQ0FBaEM7O0FBRUEsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsdUJBQUQsQ0FBUCxDQUFpQ0ksT0FBaEQ7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHTCxPQUFPLENBQUMsZ0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTU0sV0FBVyxHQUFHTixPQUFPLENBQUMscUJBQUQsQ0FBM0I7O0FBR0FBLE9BQU8sR0FBR0EsT0FBTyxDQUFDLEtBQUQsQ0FBUCxDQUFlTyxNQUFmLENBQVY7QUFHQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLEVBQWpCOztBQUVlLE1BQU1DLFlBQU4sU0FBMkJSLFlBQTNCLENBQXdDO0FBQ25EUyxFQUFBQSxXQUFXLENBQUVDLFFBQUYsRUFBWUMsTUFBWixFQUFvQjtBQUMzQjtBQUNBLFNBQUtDLE9BQUwsR0FBZSxJQUFmO0FBQ0EsU0FBS0MsS0FBTCxHQUFhLElBQWI7QUFDQSxTQUFLQyxPQUFMLEdBQWVILE1BQWY7QUFDQSxTQUFLSSxVQUFMLEdBQWtCLEVBQWxCO0FBQ0EsU0FBS0MsU0FBTCxHQUFpQk4sUUFBakI7QUFDQSxTQUFLTyxNQUFMLEdBQWMsSUFBZDtBQUNIOztBQUVTLFFBQUpDLElBQUksQ0FBQ0MsS0FBRCxFQUFRQyxPQUFSLEVBQWlCQyxJQUFqQixFQUF1QjtBQUM3QixTQUFLSixN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RCxDQUFDLENBQUNxRCxPQUF4QixFQUFpQ3JELENBQUMsQ0FBQ3NELEdBQW5DLEVBQXdDdEQsQ0FBQyxDQUFDd0MsR0FBMUM7QUFDSCxLQUZELE1BRU87QUFDSCxXQUFLMUQsT0FBTCxDQUFha0IsQ0FBQyxDQUFDb0QsS0FBZixFQUFzQnBELENBQUMsQ0FBQ3FELE9BQXhCLEVBQWlDckQsQ0FBQyxDQUFDc0QsR0FBbkM7QUFDSDtBQUNKOztBQTlNa0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTktcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBCYXNlZCBvbjpcclxuICogQ29weXJpZ2h0IChjKSBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzLiBMaWNlbnNlZCB1bmRlciBNSVQuXHJcbiAqL1xyXG5cclxuY29uc3QgRmliZXIgPSByZXF1aXJlKCdmaWJlcnMnKTtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgeyBFdmVudEVtaXR0ZXIgfSA9IHJlcXVpcmUoJ2V2ZW50cycpO1xyXG5cclxuY29uc3QgT3h5Z2VuID0gcmVxdWlyZSgnLi4vLi4vY29yZS9PeHlnZW5Db3JlJykuZGVmYXVsdDtcclxuY29uc3Qgb3h1dGlsID0gcmVxdWlyZSgnLi4vLi4vbGliL3V0aWwnKTtcclxuY29uc3QgZXJyb3JIZWxwZXIgPSByZXF1aXJlKCcuLi8uLi9lcnJvcnMvaGVscGVyJyk7XHJcblxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZ2xvYmFsLWFzc2lnblxyXG5yZXF1aXJlID0gcmVxdWlyZSgnZXNtJykobW9kdWxlKTtcclxuXHJcbi8vIG1vY2t1cCBnbG9iYmFsLmJyb3dzZXIgb2JqZWN0IGZvciBpbnRlcm5hbCBXRElPIGZ1bmN0aW9ucyB0byB3b3JrIHByb3Blcmx5XHJcbmdsb2JhbC5icm93c2VyID0ge307XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPeHlnZW5Xb3JrZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xyXG4gICAgY29uc3RydWN0b3IgKHJlcG9ydGVyLCBsb2dnZXIpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuX294eWdlbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fb3B0cyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fbG9nZ2VyID0gbG9nZ2VyO1xyXG4gICAgICAgIHRoaXMuX3Rlc3RIb29rcyA9IHt9O1xyXG4gICAgICAgIHRoaXMuX3JlcG9ydGVyID0gcmVwb3J0ZXI7XHJcbiAgICAgICAgdGhpcy5fcnVuSWQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXQocnVuSWQsIG9wdGlvbnMsIGNhcHMpIHtcclxuICAgICAgICB0aGlzLl9ydW5JZCA9IHJ1bklkO1xyXG4gICAgICAgIHRoaXMuX29wdHMgPSBvcHRpb25zO1xyXG4gICAgICAgIHRoaXMuX2N3ZCA9IHRoaXMuX29wdHMuY3dkIHx8IHByb2Nlc3MuY3dkKCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5fb3h5Z2VuKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9veHlnZW4gPSBuZXcgT3h5Z2VuKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9veHlnZW4ub24oJ2NvbW1hbmQ6YmVmb3JlJywgdGhpcy5faGFuZGxlQmVmb3JlQ29tbWFuZC5iaW5kKHRoaXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX294eWdlbi5vbignY29tbWFuZDphZnRlcicsIHRoaXMuX2hhbmRsZUFmdGVyQ29tbWFuZC5iaW5kKHRoaXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX294eWdlbi5vbignbG9nJywgdGhpcy5faGFuZGxlTG9nRW50cnkuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9veHlnZW4uaW5pdChvcHRpb25zLCBjYXBzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Rlc3RIb29rcyA9IG94dXRpbC5sb2FkVGVzdEhvb2tzKG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgLy9tYWtlTW9kdWxlc0dsb2JhbChvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnT3h5Z2VuIGluaXRpYWxpemF0aW9uIGNvbXBsZXRlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoYE94eWdlbiBpbml0aWFsaXphdGlvbiBmYWlsZWQ6ICR7ZS50b1N0cmluZygpfWApO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBydW4oeyBzY3JpcHRQYXRoLCBjb250ZXh0LCBwb0ZpbGUgPSBudWxsIH0pIHtcclxuICAgICAgICAvLyBhc3NpZ24gdXAgdG8gZGF0ZSBjb250ZXh0IHRvIE94eWdlbiBDb3JlIHRvIHJlZmxlY3QgbmV3IHBhcmFtZXRlcnMgYW5kIG90aGVyIGNvbnRleHQgZGF0YVxyXG4gICAgICAgIGlmICghdGhpcy5fb3h5Z2VuKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yICgnT3h5Z2VuIGlzIG5vdCBpbml0aWFsaXplZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9veHlnZW4uY29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICAgICAgdGhpcy5fb3h5Z2VuLmxvYWRQYWdlT2JqZWN0RmlsZShwb0ZpbGUpO1xyXG4gICAgICAgIHRoaXMuX3N0ZXBzID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMuX2N3ZCAmJiAhcGF0aC5pc0Fic29sdXRlKHNjcmlwdFBhdGgpKSB7XHJcbiAgICAgICAgICAgIHNjcmlwdFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5fY3dkLCBzY3JpcHRQYXRoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGVycm9yID0gbnVsbDtcclxuICAgICAgICAvLyBsb2FkIGFuZCBydW4gdGhlIHRlc3Qgc2NyaXB0XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5fb3h5Z2VuICYmIHRoaXMuX294eWdlbi5vbkJlZm9yZUNhc2UgJiYgYXdhaXQgdGhpcy5fb3h5Z2VuLm9uQmVmb3JlQ2FzZShjb250ZXh0KTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fcnVuRm5JbkZpYmVyQ29udGV4dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0byBjbGVhciByZXF1aXJlIGNhY2hlIHNvIHRoZSBzY3JpcHQgd2lsbCBiZSBleGVjdXRlZCBvbiBlYWNoIGl0ZXJhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmUuY2FjaGVbcmVxdWlyZS5yZXNvbHZlKHNjcmlwdFBhdGgpXSAmJiBkZWxldGUgcmVxdWlyZS5jYWNoZVtyZXF1aXJlLnJlc29sdmUoc2NyaXB0UGF0aCldO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoc2NyaXB0UGF0aCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGVycm9yID0gZS5jb2RlICYmIGUuY29kZSA9PT0gJ01PRFVMRV9OT1RfRk9VTkQnID8gbmV3IFNjcmlwdE5vdEZvdW5kRXJyb3Ioc2NyaXB0UGF0aCkgOiBlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLnR5cGUgJiYgZS50eXBlID09PSBlcnJvckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX1BBU1NFRCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2lnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgZXJyb3IgPSBlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSW4gc29tZSBjYXNlcyBzdGVwIHJlc3VsdCBnZW5lcmF0aW9uIHRha2VzIHNvbWUgdGltZSB0byBtYWtlIHNjcmVlbnNob3RcclxuICAgICAgICBhd2FpdCB0aGlzLl9veHlnZW4uX3dhaXRTdGVwUmVzdWx0KCk7XHJcblxyXG4gICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICBlcnJvciA9IGVycm9ySGVscGVyLmdldEZhaWx1cmVGcm9tRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG1vZHVsZUNhcHMgPSB7fTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX294eWdlbiAmJiB0aGlzLl9veHlnZW4uZ2V0TW9kdWxlc0NhcGFiaWxpdGllcykge1xyXG4gICAgICAgICAgICBtb2R1bGVDYXBzID0gdGhpcy5fb3h5Z2VuLmdldE1vZHVsZXNDYXBhYmlsaXRpZXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX294eWdlbiAmJiB0aGlzLl9veHlnZW4ub25BZnRlckNhc2UgJiYgYXdhaXQgdGhpcy5fb3h5Z2VuLm9uQWZ0ZXJDYXNlKGVycm9yKTtcclxuXHJcbiAgICAgICAgLy8gY2xvbmUgdGhlIHJlc3VsdHMsIG90aGVyd2lzZSByZXN1bHRTdG9yZSB3aWxsIGJlIGVtcHR5IGFmdGVyIHRoZSBmb2xsb3dpbmcgdGhpcy5fb3h5Z2VuLnJlc2V0UmVzdWx0cygpIGNhbGxcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdFN0b3JlID0ge307XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9veHlnZW4gJiYgdGhpcy5fb3h5Z2VuLnJlc3VsdHMpIHtcclxuICAgICAgICAgICAgcmVzdWx0U3RvcmUgPSB7IC4uLnRoaXMuX294eWdlbi5yZXN1bHRzIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fb3h5Z2VuICYmIHRoaXMuX294eWdlbi5yZXNldFJlc3VsdHMpIHtcclxuICAgICAgICAgICAgLy8gcmVzZXQgc3RlcHMgYW5kIG90aGVyIHJlc3VsdCBkYXRhXHJcbiAgICAgICAgICAgIHRoaXMuX294eWdlbi5yZXNldFJlc3VsdHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fc3RlcHMgPSBudWxsO1xyXG5cclxuICAgICAgICBsZXQgb3hDb250ZXh0ID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMuX294eWdlbiAmJiB0aGlzLl9veHlnZW4uY29udGV4dCkge1xyXG4gICAgICAgICAgICBveENvbnRleHQgPSB0aGlzLl9veHlnZW4uY29udGV4dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3hDb250ZXh0LnZhcnMgPSBnbG9iYWwudmFycztcclxuXHJcbiAgICAgICAgcmV0dXJuIHsgZXJyb3IsIG1vZHVsZUNhcHMsIHJlc3VsdFN0b3JlLCBjb250ZXh0OiBveENvbnRleHQgfTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkaXNwb3NlKHN0YXR1cyA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5fb3h5Z2VuKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9veHlnZW4uZGlzcG9zZShzdGF0dXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBkaXNwb3NlIE94eWdlbicsIG51bGwsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RlcHMgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRpc3Bvc2VNb2R1bGVzKHN0YXR1cyA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5fb3h5Z2VuKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9veHlnZW4uZGlzcG9zZU1vZHVsZXMoc3RhdHVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGlzcG9zZSBPeHlnZW4gbW9kdWxlcycsIG51bGwsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb3h5Z2VuLnJlc2V0UmVzdWx0cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNhbGxUZXN0SG9vayhob29rTmFtZSwgaG9va0FyZ3MpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3Rlc3RIb29rcyB8fCAhdGhpcy5fdGVzdEhvb2tzW2hvb2tOYW1lXSB8fCB0eXBlb2YgdGhpcy5fdGVzdEhvb2tzW2hvb2tOYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEhvb2sgZG9lcyBub3QgZXhpc3Q6ICR7aG9va05hbWV9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IG94dXRpbC5leGVjdXRlVGVzdEhvb2sodGhpcy5fdGVzdEhvb2tzLCBob29rTmFtZSwgaG9va0FyZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9ydW5GbkluRmliZXJDb250ZXh0IChmbikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBGaWJlcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBmbi5hcHBseSh0aGlzKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkucnVuKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlcGxTdGFydCgpIHtcclxuICAgICAgICBsZXQgY29tbWFuZFJlc29sdmUgPSAoKSA9PiB7IH07XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9veHlnZW4gJiYgdGhpcy5fb3h5Z2VuLm1vZHVsZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLl9veHlnZW4ubW9kdWxlcyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGVidWc7XHJcbiAgICAgICAgICAgICAgICBrZXlzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRyaXZlciA9IHRoaXMuX294eWdlbi5tb2R1bGVzW2l0ZW1dWydnZXREcml2ZXInXSAmJiB0aGlzLl9veHlnZW4ubW9kdWxlc1tpdGVtXVsnZ2V0RHJpdmVyJ10oKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZHJpdmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnID0gdGhpcy5fb3h5Z2VuLm1vZHVsZXNbaXRlbV1bJ2RlYnVnJ107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGRlYnVnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZGVidWcoKTtcclxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kUmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kUmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29tbWFuZFJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiAoY29tbWFuZFJlc29sdmUgPSByZXNvbHZlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUJlZm9yZUNvbW1hbmQoZSkge1xyXG4gICAgICAgIGlmICghZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1pdCgnY29tbWFuZDpiZWZvcmUnLCBlKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQWZ0ZXJDb21tYW5kKGUpIHtcclxuICAgICAgICBpZiAoIWUgfHwgIWUucmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3N0ZXBzICYmIHRoaXMuX3N0ZXBzLnB1c2goZS5yZXN1bHQpO1xyXG4gICAgICAgIHRoaXMuZW1pdCgnY29tbWFuZDphZnRlcicsIGUpO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVMb2dFbnRyeShlKSB7XHJcbiAgICAgICAgaWYgKCFlIHx8ICFlLmxldmVsIHx8ICFlLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZSAmJiBlLmxldmVsICYmIGUubGV2ZWwgPT09ICdlcnJvcicpIHtcclxuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyW2UubGV2ZWxdKGUubWVzc2FnZSwgZS5zcmMsIGUuZXJyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9sb2dnZXJbZS5sZXZlbF0oZS5tZXNzYWdlLCBlLnNyYyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
267
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydW5uZXJzL294eWdlbi9PeHlnZW5Xb3JrZXIuanMiXSwibmFtZXMiOlsiRmliZXIiLCJyZXF1aXJlIiwicGF0aCIsIkV2ZW50RW1pdHRlciIsIk94eWdlbiIsImRlZmF1bHQiLCJveHV0aWwiLCJlcnJvckhlbHBlciIsIm1vZHVsZSIsImdsb2JhbCIsImJyb3dzZXIiLCJPeHlnZW5Xb3JrZXIiLCJjb25zdHJ1Y3RvciIsInJlcG9ydGVyIiwibG9nZ2VyIiwiX294eWdlbiIsIl9vcHRzIiwiX2xvZ2dlciIsIl90ZXN0SG9va3MiLCJfcmVwb3J0ZXIiLCJfcnVuSWQiLCJpbml0IiwicnVuSWQiLCJvcHRpb25zIiwiY2FwcyIsIl9jd2QiLCJjd2QiLCJwcm9jZXNzIiwib24iLCJfaGFuZGxlQmVmb3JlQ29tbWFuZCIsImJpbmQiLCJfaGFuZGxlQWZ0ZXJDb21tYW5kIiwiX2hhbmRsZUxvZ0VudHJ5IiwibG9hZFRlc3RIb29rcyIsImRlYnVnIiwiZSIsInRvU3RyaW5nIiwicnVuIiwic2NyaXB0UGF0aCIsImNvbnRleHQiLCJwb0ZpbGUiLCJFcnJvciIsImxvYWRQYWdlT2JqZWN0RmlsZSIsIl9zdGVwcyIsImlzQWJzb2x1dGUiLCJyZXNvbHZlIiwiZXJyb3IiLCJvbkJlZm9yZUNhc2UiLCJfcnVuRm5JbkZpYmVyQ29udGV4dCIsImNhY2hlIiwiTW9kdWxlIiwib3JpZ2luYWxSZXF1aXJlIiwicHJvdG90eXBlIiwic2NyaXB0IiwiYXJndW1lbnRzIiwic3RhcnRzV2l0aCIsInJlc29sdmVkUGF0aCIsImV4IiwiYXBwbHkiLCJ0eXBlIiwiZXJyb3JDb2RlIiwiQVNTRVJUX1BBU1NFRCIsIl93YWl0U3RlcFJlc3VsdCIsImdldEZhaWx1cmVGcm9tRXJyb3IiLCJtb2R1bGVDYXBzIiwiZ2V0TW9kdWxlc0NhcGFiaWxpdGllcyIsIm9uQWZ0ZXJDYXNlIiwicmVzdWx0U3RvcmUiLCJyZXN1bHRzIiwicmVzZXRSZXN1bHRzIiwib3hDb250ZXh0IiwidmFycyIsImRpc3Bvc2UiLCJzdGF0dXMiLCJkaXNwb3NlTW9kdWxlcyIsImNhbGxUZXN0SG9vayIsImhvb2tOYW1lIiwiaG9va0FyZ3MiLCJleGVjdXRlVGVzdEhvb2siLCJmbiIsIlByb21pc2UiLCJyZWplY3QiLCJyZXN1bHQiLCJlcnIiLCJyZXBsU3RhcnQiLCJjb21tYW5kUmVzb2x2ZSIsInNldFRpbWVvdXQiLCJtb2R1bGVzIiwia2V5cyIsIk9iamVjdCIsIm1hcCIsIml0ZW0iLCJkcml2ZXIiLCJlbWl0IiwicHVzaCIsImxldmVsIiwibWVzc2FnZSIsInNyYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBWUEsTUFBTUEsS0FBSyxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFyQjs7QUFDQSxNQUFNQyxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFtQkYsT0FBTyxDQUFDLFFBQUQsQ0FBaEM7O0FBRUEsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsdUJBQUQsQ0FBUCxDQUFpQ0ksT0FBaEQ7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHTCxPQUFPLENBQUMsZ0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTU0sV0FBVyxHQUFHTixPQUFPLENBQUMscUJBQUQsQ0FBM0I7O0FBR0FBLE9BQU8sR0FBR0EsT0FBTyxDQUFDLEtBQUQsQ0FBUCxDQUFlTyxNQUFmLENBQVY7QUFHQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLEVBQWpCOztBQUVlLE1BQU1DLFlBQU4sU0FBMkJSLFlBQTNCLENBQXdDO0FBQ25EUyxFQUFBQSxXQUFXLENBQUVDLFFBQUYsRUFBWUMsTUFBWixFQUFvQjtBQUMzQjtBQUNBLFNBQUtDLE9BQUwsR0FBZSxJQUFmO0FBQ0EsU0FBS0MsS0FBTCxHQUFhLElBQWI7QUFDQSxTQUFLQyxPQUFMLEdBQWVILE1BQWY7QUFDQSxTQUFLSSxVQUFMLEdBQWtCLEVBQWxCO0FBQ0EsU0FBS0MsU0FBTCxHQUFpQk4sUUFBakI7QUFDQSxTQUFL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QyxDQUFDOEQsR0FBbkM7QUFDSDtBQUNKOztBQXhPa0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTktcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBCYXNlZCBvbjpcclxuICogQ29weXJpZ2h0IChjKSBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzLiBMaWNlbnNlZCB1bmRlciBNSVQuXHJcbiAqL1xyXG5cclxuY29uc3QgRmliZXIgPSByZXF1aXJlKCdmaWJlcnMnKTtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgeyBFdmVudEVtaXR0ZXIgfSA9IHJlcXVpcmUoJ2V2ZW50cycpO1xyXG5cclxuY29uc3QgT3h5Z2VuID0gcmVxdWlyZSgnLi4vLi4vY29yZS9PeHlnZW5Db3JlJykuZGVmYXVsdDtcclxuY29uc3Qgb3h1dGlsID0gcmVxdWlyZSgnLi4vLi4vbGliL3V0aWwnKTtcclxuY29uc3QgZXJyb3JIZWxwZXIgPSByZXF1aXJlKCcuLi8uLi9lcnJvcnMvaGVscGVyJyk7XHJcblxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZ2xvYmFsLWFzc2lnblxyXG5yZXF1aXJlID0gcmVxdWlyZSgnZXNtJykobW9kdWxlKTtcclxuXHJcbi8vIG1vY2t1cCBnbG9iYmFsLmJyb3dzZXIgb2JqZWN0IGZvciBpbnRlcm5hbCBXRElPIGZ1bmN0aW9ucyB0byB3b3JrIHByb3Blcmx5XHJcbmdsb2JhbC5icm93c2VyID0ge307XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPeHlnZW5Xb3JrZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xyXG4gICAgY29uc3RydWN0b3IgKHJlcG9ydGVyLCBsb2dnZXIpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuX294eWdlbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fb3B0cyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fbG9nZ2VyID0gbG9nZ2VyO1xyXG4gICAgICAgIHRoaXMuX3Rlc3RIb29rcyA9IHt9O1xyXG4gICAgICAgIHRoaXMuX3JlcG9ydGVyID0gcmVwb3J0ZXI7XHJcbiAgICAgICAgdGhpcy5fcnVuSWQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXQocnVuSWQsIG9wdGlvbnMsIGNhcHMpIHtcclxuICAgICAgICB0aGlzLl9ydW5JZCA9IHJ1bklkO1xyXG4gICAgICAgIHRoaXMuX29wdHMgPSBvcHRpb25zO1xyXG4gICAgICAgIHRoaXMuX2N3ZCA9IHRoaXMuX29wdHMuY3dkIHx8IHByb2Nlc3MuY3dkKCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5fb3h5Z2VuKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9veHlnZW4gPSBuZXcgT3h5Z2VuKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9veHlnZW4ub24oJ2NvbW1hbmQ6YmVmb3JlJywgdGhpcy5faGFuZGxlQmVmb3JlQ29tbWFuZC5iaW5kKHRoaXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX294eWdlbi5vbignY29tbWFuZDphZnRlcicsIHRoaXMuX2hhbmRsZUFmdGVyQ29tbWFuZC5iaW5kKHRoaXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX294eWdlbi5vbignbG9nJywgdGhpcy5faGFuZGxlTG9nRW50cnkuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9veHlnZW4uaW5pdChvcHRpb25zLCBjYXBzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Rlc3RIb29rcyA9IG94dXRpbC5sb2FkVGVzdEhvb2tzKG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgLy9tYWtlTW9kdWxlc0dsb2JhbChvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnT3h5Z2VuIGluaXRpYWxpemF0aW9uIGNvbXBsZXRlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoYE94eWdlbiBpbml0aWFsaXphdGlvbiBmYWlsZWQ6ICR7ZS50b1N0cmluZygpfWApO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBydW4oeyBzY3JpcHRQYXRoLCBjb250ZXh0LCBwb0ZpbGUgPSBudWxsIH0pIHtcclxuICAgICAgICAvLyBhc3NpZ24gdXAgdG8gZGF0ZSBjb250ZXh0IHRvIE94eWdlbiBDb3JlIHRvIHJlZmxlY3QgbmV3IHBhcmFtZXRlcnMgYW5kIG90aGVyIGNvbnRleHQgZGF0YVxyXG4gICAgICAgIGlmICghdGhpcy5fb3h5Z2VuKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yICgnT3h5Z2VuIGlzIG5vdCBpbml0aWFsaXplZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9veHlnZW4uY29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICAgICAgdGhpcy5fb3h5Z2VuLmxvYWRQYWdlT2JqZWN0RmlsZShwb0ZpbGUpO1xyXG4gICAgICAgIHRoaXMuX3N0ZXBzID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMuX2N3ZCAmJiAhcGF0aC5pc0Fic29sdXRlKHNjcmlwdFBhdGgpKSB7XHJcbiAgICAgICAgICAgIHNjcmlwdFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5fY3dkLCBzY3JpcHRQYXRoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGVycm9yID0gbnVsbDtcclxuICAgICAgICBjb25zdCBjd2QgPSB0aGlzLl9jd2Q7XHJcbiAgICAgICAgLy8gbG9hZCBhbmQgcnVuIHRoZSB0ZXN0IHNjcmlwdFxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMuX294eWdlbiAmJiB0aGlzLl9veHlnZW4ub25CZWZvcmVDYXNlICYmIGF3YWl0IHRoaXMuX294eWdlbi5vbkJlZm9yZUNhc2UoY29udGV4dCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3J1bkZuSW5GaWJlckNvbnRleHQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdG8gY2xlYXIgcmVxdWlyZSBjYWNoZSBzbyB0aGUgc2NyaXB0IHdpbGwgYmUgZXhlY3V0ZWQgb24gZWFjaCBpdGVyYXRpb25cclxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlLmNhY2hlW3JlcXVpcmUucmVzb2x2ZShzY3JpcHRQYXRoKV0gJiYgZGVsZXRlIHJlcXVpcmUuY2FjaGVbcmVxdWlyZS5yZXNvbHZlKHNjcmlwdFBhdGgpXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdXNlciB1c2VzIHJlcXVpcmUoJy4vc29tZXNjcmlwdC5qcycpIGluIG11bHRpcGxlIHRlc3Qgc2NyaXB0cyAoY2FzZXMpLCBhbmQgc29tZXNjcmlwdC5qcyBjb250YWlucyB3ZWIvbW9iLmluaXRcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGVuLCB3aGVuIHRob3NlIHNjcmlwdHMgYXJlIGV4ZWN1dGVkIGluIGEgc3VpdGUsIG9ubHkgZmlyc3QgY2FzZSB3aWxsIHBhc3MsIHRoZSByZXN0IHdpbGwgZmFpbCB3aXRoIE1PRFVMRV9OT1RfSU5JVElBTElaRUQgZXJyb3IuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBiZWNhdXNlICdyZXF1aXJlJyBpcyBjYWNoZWQsIGFuZCB3aGVuIHRoZSBmaXJzdCBjYXNlIGlzIGZpbmlzaGVkLCB0aGUgbW9kdWxlIGlzIG1hcmtlZCBhcyBpc0luaXRpYWxpemVkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAvLyBhbmQgbm90IHJlLWluaXRpYWxpemVkIGJhY2sgb24gbmV4dCBjYXNlLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRodXMgd2UgY2xlYW4gdXNlciBsZXZlbCBzY3JpcHRzIGZyb20gJ3JlcXVpcmUnIGNhY2hlLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBwcm9iYWJseSBmaXhlZCBpbiBhIGRpZmZlcmVudCB3YXkuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgTW9kdWxlID0gcmVxdWlyZSgnbW9kdWxlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxSZXF1aXJlID0gTW9kdWxlLnByb3RvdHlwZS5yZXF1aXJlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBNb2R1bGUucHJvdG90eXBlLnJlcXVpcmUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0ID0gYXJndW1lbnRzWycwJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnZhbGlkYXRlIGNhY2hlIG9ubHkgZm9yIHVzZXIgbGV2ZWwgc2NyaXB0cyAodGhvc2Ugc3RhcnRpbmcgd2l0aCAnLi8nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdCAmJiBzY3JpcHQuc3RhcnRzV2l0aCgnLicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc29sdmVkUGF0aCA9IHJlcXVpcmUucmVzb2x2ZShwYXRoLnJlc29sdmUoY3dkLCBzY3JpcHQpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWlyZS5jYWNoZVtyZXNvbHZlZFBhdGhdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW3Jlc29sdmVkUGF0aF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFJlcXVpcmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoc2NyaXB0UGF0aCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGVycm9yID0gZS5jb2RlICYmIGUuY29kZSA9PT0gJ01PRFVMRV9OT1RfRk9VTkQnID8gbmV3IFNjcmlwdE5vdEZvdW5kRXJyb3Ioc2NyaXB0UGF0aCkgOiBlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLnR5cGUgJiYgZS50eXBlID09PSBlcnJvckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX1BBU1NFRCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2lnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgZXJyb3IgPSBlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSW4gc29tZSBjYXNlcyBzdGVwIHJlc3VsdCBnZW5lcmF0aW9uIHRha2VzIHNvbWUgdGltZSB0byBtYWtlIHNjcmVlbnNob3RcclxuICAgICAgICBhd2FpdCB0aGlzLl9veHlnZW4uX3dhaXRTdGVwUmVzdWx0KCk7XHJcblxyXG4gICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICBlcnJvciA9IGVycm9ySGVscGVyLmdldEZhaWx1cmVGcm9tRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG1vZHVsZUNhcHMgPSB7fTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX294eWdlbiAmJiB0aGlzLl9veHlnZW4uZ2V0TW9kdWxlc0NhcGFiaWxpdGllcykge1xyXG4gICAgICAgICAgICBtb2R1bGVDYXBzID0gdGhpcy5fb3h5Z2VuLmdldE1vZHVsZXNDYXBhYmlsaXRpZXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX294eWdlbiAmJiB0aGlzLl9veHlnZW4ub25BZnRlckNhc2UgJiYgYXdhaXQgdGhpcy5fb3h5Z2VuLm9uQWZ0ZXJDYXNlKGVycm9yKTtcclxuXHJcbiAgICAgICAgLy8gY2xvbmUgdGhlIHJlc3VsdHMsIG90aGVyd2lzZSByZXN1bHRTdG9yZSB3aWxsIGJlIGVtcHR5IGFmdGVyIHRoZSBmb2xsb3dpbmcgdGhpcy5fb3h5Z2VuLnJlc2V0UmVzdWx0cygpIGNhbGxcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdFN0b3JlID0ge307XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9veHlnZW4gJiYgdGhpcy5fb3h5Z2VuLnJlc3VsdHMpIHtcclxuICAgICAgICAgICAgcmVzdWx0U3RvcmUgPSB7IC4uLnRoaXMuX294eWdlbi5yZXN1bHRzIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fb3h5Z2VuICYmIHRoaXMuX294eWdlbi5yZXNldFJlc3VsdHMpIHtcclxuICAgICAgICAgICAgLy8gcmVzZXQgc3RlcHMgYW5kIG90aGVyIHJlc3VsdCBkYXRhXHJcbiAgICAgICAgICAgIHRoaXMuX294eWdlbi5yZXNldFJlc3VsdHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fc3RlcHMgPSBudWxsO1xyXG5cclxuICAgICAgICBsZXQgb3hDb250ZXh0ID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMuX294eWdlbiAmJiB0aGlzLl9veHlnZW4uY29udGV4dCkge1xyXG4gICAgICAgICAgICBveENvbnRleHQgPSB0aGlzLl9veHlnZW4uY29udGV4dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3hDb250ZXh0LnZhcnMgPSBnbG9iYWwudmFycztcclxuXHJcbiAgICAgICAgcmV0dXJuIHsgZXJyb3IsIG1vZHVsZUNhcHMsIHJlc3VsdFN0b3JlLCBjb250ZXh0OiBveENvbnRleHQgfTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkaXNwb3NlKHN0YXR1cyA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5fb3h5Z2VuKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9veHlnZW4uZGlzcG9zZShzdGF0dXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBkaXNwb3NlIE94eWdlbicsIG51bGwsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RlcHMgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRpc3Bvc2VNb2R1bGVzKHN0YXR1cyA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5fb3h5Z2VuKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9veHlnZW4uZGlzcG9zZU1vZHVsZXMoc3RhdHVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGlzcG9zZSBPeHlnZW4gbW9kdWxlcycsIG51bGwsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb3h5Z2VuLnJlc2V0UmVzdWx0cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNhbGxUZXN0SG9vayhob29rTmFtZSwgaG9va0FyZ3MpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3Rlc3RIb29rcyB8fCAhdGhpcy5fdGVzdEhvb2tzW2hvb2tOYW1lXSB8fCB0eXBlb2YgdGhpcy5fdGVzdEhvb2tzW2hvb2tOYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEhvb2sgZG9lcyBub3QgZXhpc3Q6ICR7aG9va05hbWV9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IG94dXRpbC5leGVjdXRlVGVzdEhvb2sodGhpcy5fdGVzdEhvb2tzLCBob29rTmFtZSwgaG9va0FyZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9ydW5GbkluRmliZXJDb250ZXh0IChmbikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBGaWJlcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBmbi5hcHBseSh0aGlzKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkucnVuKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlcGxTdGFydCgpIHtcclxuICAgICAgICBsZXQgY29tbWFuZFJlc29sdmUgPSAoKSA9PiB7IH07XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9veHlnZW4gJiYgdGhpcy5fb3h5Z2VuLm1vZHVsZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLl9veHlnZW4ubW9kdWxlcyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGVidWc7XHJcbiAgICAgICAgICAgICAgICBrZXlzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRyaXZlciA9IHRoaXMuX294eWdlbi5tb2R1bGVzW2l0ZW1dWydnZXREcml2ZXInXSAmJiB0aGlzLl9veHlnZW4ubW9kdWxlc1tpdGVtXVsnZ2V0RHJpdmVyJ10oKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZHJpdmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnID0gdGhpcy5fb3h5Z2VuLm1vZHVsZXNbaXRlbV1bJ2RlYnVnJ107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGRlYnVnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZGVidWcoKTtcclxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kUmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kUmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29tbWFuZFJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiAoY29tbWFuZFJlc29sdmUgPSByZXNvbHZlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUJlZm9yZUNvbW1hbmQoZSkge1xyXG4gICAgICAgIGlmICghZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1pdCgnY29tbWFuZDpiZWZvcmUnLCBlKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQWZ0ZXJDb21tYW5kKGUpIHtcclxuICAgICAgICBpZiAoIWUgfHwgIWUucmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3N0ZXBzICYmIHRoaXMuX3N0ZXBzLnB1c2goZS5yZXN1bHQpO1xyXG4gICAgICAgIHRoaXMuZW1pdCgnY29tbWFuZDphZnRlcicsIGUpO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVMb2dFbnRyeShlKSB7XHJcbiAgICAgICAgaWYgKCFlIHx8ICFlLmxldmVsIHx8ICFlLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZSAmJiBlLmxldmVsICYmIGUubGV2ZWwgPT09ICdlcnJvcicpIHtcclxuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyW2UubGV2ZWxdKGUubWVzc2FnZSwgZS5zcmMsIGUuZXJyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9sb2dnZXJbZS5sZXZlbF0oZS5tZXNzYWdlLCBlLnNyYyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxygen-cli",
3
- "version": "1.23.2",
3
+ "version": "1.24.2",
4
4
  "description": "Automation framework for testing modern applications",
5
5
  "main": "./build/index.js",
6
6
  "bin": {
@@ -38,23 +38,22 @@
38
38
  "@babel/cli": "7.14.5",
39
39
  "@babel/core": "7.14.6",
40
40
  "@babel/preset-env": "7.14.7",
41
- "babel-plugin-source-map-support": "2.1.3",
41
+ "babel-plugin-source-map-support": "2.2.0",
42
42
  "cross-env": "7.0.3",
43
43
  "doctrine": "3.0.0",
44
44
  "eslint": "6.8.0",
45
45
  "husky": "4.3.8",
46
- "md-reverse": "1.0.0",
47
- "npm-run-all": "4.1.5"
46
+ "md-reverse": "1.0.0"
48
47
  },
49
48
  "dependencies": {
50
- "@applitools/eyes-webdriverio": "5.35.3",
51
- "@lambdatest/node-rest-client": "1.0.2",
49
+ "@applitools/eyes-webdriverio": "5.35.8",
50
+ "@lambdatest/node-rest-client": "1.0.3",
52
51
  "@oxygenhq/chrome-remote-interface": "0.30.0",
53
52
  "@oxygenhq/logger": "0.5.1",
54
53
  "@oxygenhq/mitmproxy-node": "1.0.1",
55
- "@wdio/cli": "7.20.2",
56
- "@wdio/devtools-service": "7.20.2",
57
- "@wdio/sync": "7.20.2",
54
+ "@wdio/cli": "7.20.8",
55
+ "@wdio/devtools-service": "7.20.8",
56
+ "@wdio/sync": "7.20.8",
58
57
  "async": "3.2.4",
59
58
  "chai": "4.3.6",
60
59
  "chrome-har": "0.11.12",
@@ -65,23 +64,23 @@
65
64
  "deasync": "0.1.26",
66
65
  "decache": "4.6.1",
67
66
  "easyxml": "2.0.1",
68
- "ejs": "3.0.2",
67
+ "ejs": "3.1.8",
69
68
  "esm": "3.2.25",
70
- "fast-xml-parser": "4.0.8",
69
+ "fast-xml-parser": "4.0.9",
71
70
  "fibers": "5.0.0",
72
- "glob": "7.1.7",
71
+ "glob": "7.2.3",
73
72
  "glob-to-regexp": "0.4.1",
74
73
  "global-agent": "3.0.0",
75
- "got": "11.8.2",
74
+ "got": "11.8.5",
76
75
  "imap-simple": "5.1.0",
77
76
  "is-glob": "4.0.3",
78
77
  "jimp": "0.16.1",
79
- "junit-report-builder": "3.0.0",
78
+ "junit-report-builder": "3.0.1",
80
79
  "lodash": "4.17.21",
81
80
  "mailparser": "3.5.0",
82
81
  "minimist": "1.2.6",
83
82
  "mockery": "2.1.0",
84
- "moment": "2.29.3",
83
+ "moment": "2.29.4",
85
84
  "node-addon-api": "3.0.2",
86
85
  "objects-to-csv": "1.3.6",
87
86
  "pdf2json": "1.2.5",
@@ -94,9 +93,9 @@
94
93
  "stacktrace-parser": "0.1.10",
95
94
  "testdouble": "3.16.6",
96
95
  "testingbot-api": "1.0.7",
97
- "text-to-image": "2.4.4",
96
+ "text-to-image": "5.2.0",
98
97
  "twilio": "3.77.2",
99
- "webdriverio": "7.20.2",
98
+ "webdriverio": "7.20.8",
100
99
  "when": "3.7.8",
101
100
  "xlsx": "0.18.5"
102
101
  },
@@ -104,10 +103,9 @@
104
103
  "odbc": "2.4.4"
105
104
  },
106
105
  "scripts": {
107
- "build": "run-s clean compile",
106
+ "build": "npm run clean && npm run compile",
108
107
  "clean": "rimraf ./build",
109
108
  "compile": "babel src/ -d build/ --config-file ./.babelrc --copy-files",
110
- "test": "run-s test:*",
111
109
  "test:lint": "eslint src test",
112
110
  "test:unit": "jest",
113
111
  "prepublishOnly": "npm run build && node tools/dos2unix src/lib/cli.js",