specmatic 2.24.0 → 2.27.0

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.
@@ -10,7 +10,7 @@ jobs:
10
10
  test:
11
11
  strategy:
12
12
  matrix:
13
- node-version: [18.x, 20.x]
13
+ node-version: [18.x, 20.x, 22.x, 24.x]
14
14
  os: [ubuntu-latest, windows-latest, macos-latest]
15
15
  runs-on: ${{ matrix.os }}
16
16
  steps:
@@ -0,0 +1,41 @@
1
+ name: Update Specmatic Version and Publish
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ specmatic-core-version:
7
+ description: Specmatic Core Version
8
+ required: false
9
+ type: string
10
+ default: ''
11
+
12
+ jobs:
13
+ update-specmatic-version-and-publish:
14
+ runs-on: ubuntu-latest
15
+ if: ${{ github.event.inputs.specmatic-core-version != '' }}
16
+ steps:
17
+ - name: Checkout code
18
+ uses: actions/checkout@v4
19
+ - name: Configure git cli
20
+ run: |
21
+ git config --global user.email "github-service-account@specmatic.io"
22
+ git config --global user.name "Specmatic GitHub Service Account"
23
+
24
+ - name: Update specmaticVersion in package.json
25
+ run: |
26
+ SPEC_VERSION="${{ github.event.inputs.specmatic-core-version }}"
27
+ jq ".specmaticVersion = \"$SPEC_VERSION\"" package.json > package.tmp.json && mv package.tmp.json package.json
28
+
29
+ - name: Commit and push changes
30
+ run: |
31
+ git add package.json
32
+ git commit -m "chore: bump specmaticVersion to ${{ github.event.inputs.specmatic-core-version }}"
33
+ git push
34
+
35
+ - name: Trigger publish workflow
36
+ uses: peter-evans/workflow-dispatch@v1
37
+ with:
38
+ token: ${{ secrets.GITHUB_TOKEN }}
39
+ repository: ${{ github.repository }}
40
+ workflow: publish.yml
41
+ ref: ${{ github.ref }}
package/README.md CHANGED
@@ -22,6 +22,7 @@ This node module is a thin wrapper over the [specmatic executable jar](https://s
22
22
  - [IDE Support](#ide-support)
23
23
  - [Jest Framework](#jest-framework)
24
24
  - [Logging](#logging)
25
+ - [Environment Variables](#environment-variables)
25
26
  - [Known Issues](#known-issues)
26
27
  - [1. Node 17/18 - Connection Refused error when connecting to stub](#1-node-1718---connection-refused-error-when-connecting-to-stub)
27
28
  - [2. Error "ReferenceError: setImmediate is not defined"](#2-error-referenceerror-setimmediate-is-not-defined)
@@ -119,6 +120,33 @@ By default only warning and error messages are displayed. You can configure the
119
120
 
120
121
  logLevel accepts all values supported by [winston logger](https://github.com/winstonjs/winston#logging-levels)
121
122
 
123
+ ## Environment Variables
124
+
125
+ Specmatic Node supports several environment variables to customize the Java runtime behavior:
126
+
127
+ ### JAVA_OPTS
128
+
129
+ You can pass JVM options to the Specmatic Java process using the `JAVA_OPTS` environment variable. The parser supports:
130
+ - Quoted arguments with spaces: `JAVA_OPTS='-Xmx1024m -Dmy.prop="value with spaces"'`
131
+ - Single and double quotes: `JAVA_OPTS="-Dmy.prop='single quotes' -Dother=\"double quotes\""`
132
+ - Escaped characters: `JAVA_OPTS='-Dpath=C:\\Windows\\Temp'`
133
+ - Complex expressions with special characters
134
+
135
+ Example:
136
+ ```bash
137
+ export JAVA_OPTS='-Xmx2048m -Dfile.encoding=UTF-8 -Djava.io.tmpdir="/tmp/specmatic"'
138
+ npm run test
139
+ ```
140
+
141
+ ### Dealing with https proxies
142
+
143
+ If your network requires the use of a proxy server to access external resources, you may need to configure your proxy settings using `JAVA_OPTS`.
144
+
145
+ ```
146
+ export JAVA_OPTS='-Dhttps.proxyHost=proxy.example.com -Dhttps.proxyPort=3128 -Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=3128'
147
+ npm run
148
+ ```
149
+
122
150
  ## Known Issues
123
151
 
124
152
  ### 1. Node 17/18 - Connection Refused error when connecting to stub
@@ -4,11 +4,36 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
+ var _shellQuote = require("shell-quote");
7
8
  var _logger = _interopRequireDefault(require("../common/logger"));
8
9
  var _runner = require("../common/runner");
9
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
12
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
13
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10
14
  var callSpecmaticCli = function callSpecmaticCli(argsv) {
11
15
  var args = argsv || process.argv.slice(2);
16
+
17
+ // Parse JAVA_OPTS and take only string arguments from the beginning until we hit a non-string
18
+ var parsedArgs = (0, _shellQuote.parse)(process.env.JAVA_OPTS || '');
19
+ var jvmArgs = [];
20
+ var _iterator = _createForOfIteratorHelper(parsedArgs),
21
+ _step;
22
+ try {
23
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
24
+ var arg = _step.value;
25
+ if (typeof arg === 'string') {
26
+ jvmArgs.push(arg);
27
+ } else {
28
+ // Stop processing when we encounter a non-string (shell operator, comment, etc.)
29
+ break;
30
+ }
31
+ }
32
+ } catch (err) {
33
+ _iterator.e(err);
34
+ } finally {
35
+ _iterator.f();
36
+ }
12
37
  (0, _runner.callCore)(args, function (err) {
13
38
  if (err) {
14
39
  _logger["default"].info('CLI: Finished with non zero exit code: ', err.code);
@@ -19,7 +44,7 @@ var callSpecmaticCli = function callSpecmaticCli(argsv) {
19
44
  }
20
45
  }, function (message) {
21
46
  console.log("".concat(message));
22
- });
47
+ }, jvmArgs);
23
48
  };
24
49
  var _default = exports["default"] = callSpecmaticCli;
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcnVubmVyIiwiZSIsIl9fZXNNb2R1bGUiLCJjYWxsU3BlY21hdGljQ2xpIiwiYXJnc3YiLCJhcmdzIiwicHJvY2VzcyIsImFyZ3YiLCJzbGljZSIsImNhbGxDb3JlIiwiZXJyIiwibG9nZ2VyIiwiaW5mbyIsImNvZGUiLCJleGl0Q29kZSIsIm1lc3NhZ2UiLCJjb25zb2xlIiwibG9nIiwiY29uY2F0IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9jb21tYW5kLmxpbmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9jb21tb24vbG9nZ2VyJ1xuaW1wb3J0IHsgY2FsbENvcmV9IGZyb20gJy4uL2NvbW1vbi9ydW5uZXInXG5cbmNvbnN0IGNhbGxTcGVjbWF0aWNDbGkgPSAoYXJnc3Y/OiBzdHJpbmdbXSkgPT4ge1xuICAgIGNvbnN0IGFyZ3MgPSBhcmdzdiB8fCBwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7XG4gICAgY2FsbENvcmUoXG4gICAgICAgIGFyZ3MsXG4gICAgICAgIChlcnI/OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQ0xJOiBGaW5pc2hlZCB3aXRoIG5vbiB6ZXJvIGV4aXQgY29kZTogJywgZXJyLmNvZGUpXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IGVyci5jb2RlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdDTEk6IEZpbmlzaGVkJylcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXRDb2RlID0gMFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke21lc3NhZ2V9YClcbiAgICAgICAgfVxuICAgICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNhbGxTcGVjbWF0aWNDbGlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQTBDLFNBQUFELHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFFMUMsSUFBTUUsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBSUMsS0FBZ0IsRUFBSztFQUMzQyxJQUFNQyxJQUFJLEdBQUdELEtBQUssSUFBSUUsT0FBTyxDQUFDQyxJQUFJLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDM0MsSUFBQUMsZ0JBQVEsRUFDSkosSUFBSSxFQUNKLFVBQUNLLEdBQVMsRUFBSztJQUNYLElBQUlBLEdBQUcsRUFBRTtNQUNMQyxrQkFBTSxDQUFDQyxJQUFJLENBQUMseUNBQXlDLEVBQUVGLEdBQUcsQ0FBQ0csSUFBSSxDQUFDO01BQ2hFUCxPQUFPLENBQUNRLFFBQVEsR0FBR0osR0FBRyxDQUFDRyxJQUFJO0lBQy9CLENBQUMsTUFBTTtNQUNIRixrQkFBTSxDQUFDQyxJQUFJLENBQUMsZUFBZSxDQUFDO01BQzVCTixPQUFPLENBQUNRLFFBQVEsR0FBRyxDQUFDO0lBQ3hCO0VBQ0osQ0FBQyxFQUNELFVBQUFDLE9BQU8sRUFBSTtJQUNQQyxPQUFPLENBQUNDLEdBQUcsSUFBQUMsTUFBQSxDQUFJSCxPQUFPLENBQUUsQ0FBQztFQUM3QixDQUNKLENBQUM7QUFDTCxDQUFDO0FBQUEsSUFBQUksUUFBQSxHQUFBQyxPQUFBLGNBRWNqQixnQkFBZ0IiLCJpZ25vcmVMaXN0IjpbXX0=
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2hlbGxRdW90ZSIsInJlcXVpcmUiLCJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9ydW5uZXIiLCJlIiwiX19lc01vZHVsZSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJjYWxsU3BlY21hdGljQ2xpIiwiYXJnc3YiLCJhcmdzIiwicHJvY2VzcyIsImFyZ3YiLCJwYXJzZWRBcmdzIiwicGFyc2UiLCJlbnYiLCJKQVZBX09QVFMiLCJqdm1BcmdzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJhcmciLCJwdXNoIiwiZXJyIiwiY2FsbENvcmUiLCJsb2dnZXIiLCJpbmZvIiwiY29kZSIsImV4aXRDb2RlIiwibWVzc2FnZSIsImNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL2NvbW1hbmQubGluZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZSB9IGZyb20gJ3NoZWxsLXF1b3RlJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vY29tbW9uL2xvZ2dlcidcbmltcG9ydCB7IGNhbGxDb3JlfSBmcm9tICcuLi9jb21tb24vcnVubmVyJ1xuXG5jb25zdCBjYWxsU3BlY21hdGljQ2xpID0gKGFyZ3N2Pzogc3RyaW5nW10pID0+IHtcbiAgICBjb25zdCBhcmdzID0gYXJnc3YgfHwgcHJvY2Vzcy5hcmd2LnNsaWNlKDIpO1xuXG4gICAgLy8gUGFyc2UgSkFWQV9PUFRTIGFuZCB0YWtlIG9ubHkgc3RyaW5nIGFyZ3VtZW50cyBmcm9tIHRoZSBiZWdpbm5pbmcgdW50aWwgd2UgaGl0IGEgbm9uLXN0cmluZ1xuICAgIGNvbnN0IHBhcnNlZEFyZ3MgPSBwYXJzZShwcm9jZXNzLmVudi5KQVZBX09QVFMgfHwgJycpO1xuICAgIGNvbnN0IGp2bUFyZ3M6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBhcmcgb2YgcGFyc2VkQXJncykge1xuICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGp2bUFyZ3MucHVzaChhcmcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gU3RvcCBwcm9jZXNzaW5nIHdoZW4gd2UgZW5jb3VudGVyIGEgbm9uLXN0cmluZyAoc2hlbGwgb3BlcmF0b3IsIGNvbW1lbnQsIGV0Yy4pXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbGxDb3JlKFxuICAgICAgICBhcmdzLFxuICAgICAgICAoZXJyPzogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0NMSTogRmluaXNoZWQgd2l0aCBub24gemVybyBleGl0IGNvZGU6ICcsIGVyci5jb2RlKVxuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSBlcnIuY29kZVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQ0xJOiBGaW5pc2hlZCcpXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVzc2FnZSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHttZXNzYWdlfWApXG4gICAgICAgIH0sXG4gICAgICAgIGp2bUFyZ3NcbiAgICApO1xufVxuXG5l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
@@ -1,3 +1,3 @@
1
1
  import { ChildProcess } from 'child_process';
2
- declare const callCore: (args: (string | number)[], done: (error: any) => void, onOutput: (message: string, error: boolean) => void) => ChildProcess;
2
+ declare const callCore: (args: (string | number)[], done: (error: any) => void, onOutput: (message: string, error: boolean) => void, jvmArgs?: string[]) => ChildProcess;
3
3
  export { callCore };
@@ -16,13 +16,15 @@ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Sym
16
16
  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
17
17
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
18
18
  var callCore = exports.callCore = function callCore(args, done, onOutput) {
19
+ var jvmArgs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
19
20
  var rootPath = _path["default"].resolve(__dirname, '..', '..');
20
21
  var specmaticJarPath = _path["default"].resolve(rootPath, _config.specmaticCoreJarName);
21
- return callJar(specmaticJarPath, args, done, onOutput);
22
+ return callJar(specmaticJarPath, args, done, onOutput, jvmArgs);
22
23
  };
23
24
  function callJar(jarPath, args, done, onOutput) {
24
25
  var _javaProcess$stdout, _javaProcess$stderr;
25
- var argsList = [];
26
+ var jvmArgs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
27
+ var argsList = _toConsumableArray(jvmArgs);
26
28
  if (process.env['endpointsAPI']) {
27
29
  argsList.push("-DendpointsAPI=\"".concat(process.env['endpointsAPI'], "\""));
28
30
  }
@@ -30,7 +32,7 @@ function callJar(jarPath, args, done, onOutput) {
30
32
  argsList.push.apply(argsList, _toConsumableArray(args.map(function (arg) {
31
33
  return String(arg);
32
34
  })));
33
- var prettyPrintedCLIArgs = ["java"].concat(argsList).map(function (arg) {
35
+ var prettyPrintedCLIArgs = ["java"].concat(_toConsumableArray(argsList)).map(function (arg) {
34
36
  return JSON.stringify(arg);
35
37
  }).join(' ');
36
38
  _logger["default"].info("CLI: Running command: ".concat(prettyPrintedCLIArgs));
@@ -55,4 +57,4 @@ function callJar(jarPath, args, done, onOutput) {
55
57
  });
56
58
  return javaProcess;
57
59
  }
58
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbmZpZyIsIl9sb2dnZXIiLCJfY2hpbGRfcHJvY2VzcyIsImUiLCJfX2VzTW9kdWxlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJhIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0IiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJpc0FycmF5IiwibGVuZ3RoIiwibiIsImNhbGxDb3JlIiwiZXhwb3J0cyIsImFyZ3MiLCJkb25lIiwib25PdXRwdXQiLCJyb290UGF0aCIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwic3BlY21hdGljSmFyUGF0aCIsInNwZWNtYXRpY0NvcmVKYXJOYW1lIiwiY2FsbEphciIsImphclBhdGgiLCJfamF2YVByb2Nlc3Mkc3Rkb3V0IiwiX2phdmFQcm9jZXNzJHN0ZGVyciIsImFyZ3NMaXN0IiwicHJvY2VzcyIsImVudiIsInB1c2giLCJjb25jYXQiLCJhcHBseSIsIm1hcCIsImFyZyIsIlN0cmluZyIsInByZXR0eVByaW50ZWRDTElBcmdzIiwiSlNPTiIsInN0cmluZ2lmeSIsImpvaW4iLCJsb2dnZXIiLCJpbmZvIiwiamF2YVByb2Nlc3MiLCJzcGF3biIsInN0ZGlvIiwic3RkZXJyIiwic2hlbGwiLCJzdGRvdXQiLCJvbiIsImRhdGEiLCJjb2RlIiwiRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL3J1bm5lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhlY1NoIGZyb20gJ2V4ZWMtc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzcGVjbWF0aWNDb3JlSmFyTmFtZSB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2NvbW1vbi9sb2dnZXInO1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCBleGVjLCBzcGF3biwgU3Bhd25PcHRpb25zIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5cbmNvbnN0IGNhbGxDb3JlID0gKGFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10sIGRvbmU6IChlcnJvcjogYW55KSA9PiB2b2lkLCBvbk91dHB1dDogKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IGJvb2xlYW4pID0+IHZvaWQpOiBDaGlsZFByb2Nlc3MgPT4ge1xuICAgIGNvbnN0IHJvb3RQYXRoID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJyk7XG4gICAgY29uc3Qgc3BlY21hdGljSmFyUGF0aCA9IHBhdGgucmVzb2x2ZShyb290UGF0aCwgc3BlY21hdGljQ29yZUphck5hbWUpO1xuICAgIHJldHVybiBjYWxsSmFyKHNwZWNtYXRpY0phclBhdGgsIGFyZ3MsIGRvbmUsIG9uT3V0cHV0KTtcbn07XG5cbmZ1bmN0aW9uIGNhbGxKYXIoamFyUGF0aDogc3RyaW5nLCBhcmdzOiAoc3RyaW5nIHwgbnVtYmVyKVtdLCBkb25lOiAoZXJyb3I6IGFueSkgPT4gdm9pZCwgb25PdXRwdXQ6IChtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiBib29sZWFuKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgYXJnc0xpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHByb2Nlc3MuZW52WydlbmRwb2ludHNBUEknXSkge1xuICAgICAgICBhcmdzTGlzdC5wdXNoKGAtRGVuZHBvaW50c0FQST1cIiR7cHJvY2Vzcy5lbnZbJ2VuZHBvaW50c0FQSSddfVwiYCk7XG4gICAgfVxuICAgIGFyZ3NMaXN0LnB1c2goLi4uWyctamFyJywgamFyUGF0aF0pO1xuICAgIGFyZ3NMaXN0LnB1c2goLi4uYXJncy5tYXAoYXJnID0+IFN0cmluZyhhcmcpKSk7XG4gICAgY29uc3QgcHJldHR5UHJpbnRlZENMSUFyZ3MgPSBbYGphdmFgLCAuLi5hcmdzTGlzdF0ubWFwKGFyZyA9PiBKU09OLnN0cmluZ2lmeShhcmcpKS5qb2luKCcgJyk7XG5cbiAgICBsb2dnZXIuaW5mbyhgQ0xJOiBSdW5uaW5nIGNvbW1hbmQ6ICR7cHJldHR5UHJpbnRlZENMSUFyZ3N9YCk7XG4gICAgY29uc3QgamF2YVByb2Nlc3M6IENoaWxkUHJvY2VzcyA9IHNwYXduKCdqYXZhJywgYXJnc0xpc3QsIHsgc3RkaW86ICdwaXBlJywgc3RkZXJyOiAncGlwZScsIHNoZWxsOiBmYWxzZSwgZW52OiBwcm9jZXNzLmVudiB9IGFzIFNwYXduT3B0aW9ucyk7XG4gICAgamF2YVByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIGZ1bmN0aW9uIChkYXRhOiBTdHJpbmcpIHtcbiAgICAgICAgb25PdXRwdXQoYCR7ZGF0YX1gLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgamF2YVByb2Nlc3Muc3RkZXJyPy5vbignZGF0YScsIGZ1bmN0aW9uIChkYXRhOiBTdHJpbmcpIHtcbiAgICAgICAgb25PdXRwdXQoYCR7ZGF0YX1gLCB0cnVlKTtcbiAgICB9KTtcbiAgICBqYXZhUHJvY2Vzcy5vbignY2xvc2UnLCBmdW5jdGlvbiAoY29kZTpudW1iZXIpIHtcbiAgICAgICAgaWYgKGNvZGUpIHtcbiAgICAgICAgICAgIGRvbmUobmV3IEVycm9yKCdDb21tYW5kIGV4aXRlZCB3aXRoIG5vbiB6ZXJvIGNvZGU6ICcgKyBjb2RlKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvbmUobnVsbCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gamF2YVByb2Nlc3M7XG59XG5cbmV4cG9ydCB7IGNhbGxDb3JlIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9B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QUFBdEMsa0JBQUEsQ0FBU3lCLElBQUksQ0FBQ21CLEdBQUcsQ0FBQyxVQUFBQyxHQUFHO0lBQUEsT0FBSUMsTUFBTSxDQUFDRCxHQUFHLENBQUM7RUFBQSxFQUFDLEVBQUM7RUFDOUMsSUFBTUUsb0JBQW9CLEdBQUcsU0FBQUwsTUFBQSxDQUFZSixRQUFRLEVBQUVNLEdBQUcsQ0FBQyxVQUFBQyxHQUFHO0lBQUEsT0FBSUcsSUFBSSxDQUFDQyxTQUFTLENBQUNKLEdBQUcsQ0FBQztFQUFBLEVBQUMsQ0FBQ0ssSUFBSSxDQUFDLEdBQUcsQ0FBQztFQUU1RkMsa0JBQU0sQ0FBQ0MsSUFBSSwwQkFBQVYsTUFBQSxDQUEwQkssb0JBQW9CLENBQUUsQ0FBQztFQUM1RCxJQUFNTSxXQUF5QixHQUFHLElBQUFDLG9CQUFLLEVBQUMsTUFBTSxFQUFFaEIsUUFBUSxFQUFFO0lBQUVpQixLQUFLLEVBQUUsTUFBTTtJQUFFQyxNQUFNLEVBQUUsTUFBTTtJQUFFQyxLQUFLLEVBQUUsS0FBSztJQUFFakIsR0FBRyxFQUFFRCxPQUFPLENBQUNDO0VBQUksQ0FBaUIsQ0FBQztFQUM1SSxDQUFBSixtQkFBQSxHQUFBaUIsV0FBVyxDQUFDSyxNQUFNLGNBQUF0QixtQkFBQSxlQUFsQkEsbUJBQUEsQ0FBb0J1QixFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVVDLElBQVksRUFBRTtJQUNuRGpDLFFBQVEsSUFBQWUsTUFBQSxDQUFJa0IsSUFBSSxHQUFJLEtBQUssQ0FBQztFQUM5QixDQUFDLENBQUM7RUFDRixDQUFBdkIsbUJBQUEsR0FBQWdCLFdBQVcsQ0FBQ0csTUFBTSxjQUFBbkIsbUJBQUEsZUFBbEJBLG1CQUFBLENBQW9Cc0IsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVQyxJQUFZLEVBQUU7SUFDbkRqQyxRQUFRLElBQUFlLE1BQUEsQ0FBSWtCLElBQUksR0FBSSxJQUFJLENBQUM7RUFDN0IsQ0FBQyxDQUFDO0VBQ0ZQLFdBQVcsQ0FBQ00sRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVRSxJQUFXLEVBQUU7SUFDM0MsSUFBSUEsSUFBSSxFQUFFO01BQ05uQyxJQUFJLENBQUMsSUFBSW9DLEtBQUssQ0FBQyxxQ0FBcUMsR0FBR0QsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQyxNQUFNO01BQ0huQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2Q7RUFDSixDQUFDLENBQUM7RUFDRixPQUFPMkIsV0FBVztBQUN0QiIsImlnbm9yZUxpc3QiOltdfQ==
60
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbmZpZyIsIl9sb2dnZXIiLCJfY2hpbGRfcHJvY2VzcyIsImUiLCJfX2VzTW9kdWxlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJhIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0IiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJpc0FycmF5IiwibGVuZ3RoIiwibiIsImNhbGxDb3JlIiwiZXhwb3J0cyIsImFyZ3MiLCJkb25lIiwib25PdXRwdXQiLCJqdm1BcmdzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwicm9vdFBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsInNwZWNtYXRpY0phclBhdGgiLCJzcGVjbWF0aWNDb3JlSmFyTmFtZSIsImNhbGxKYXIiLCJqYXJQYXRoIiwiX2phdmFQcm9jZXNzJHN0ZG91dCIsIl9qYXZhUHJvY2VzcyRzdGRlcnIiLCJhcmdzTGlzdCIsInByb2Nlc3MiLCJlbnYiLCJwdXNoIiwiY29uY2F0IiwiYXBwbHkiLCJtYXAiLCJhcmciLCJTdHJpbmciLCJwcmV0dHlQcmludGVkQ0xJQXJncyIsIkpTT04iLCJzdHJpbmdpZnkiLCJqb2luIiwibG9nZ2VyIiwiaW5mbyIsImphdmFQcm9jZXNzIiwic3Bhd24iLCJzdGRpbyIsInN0ZGVyciIsInNoZWxsIiwic3Rkb3V0Iiwib24iLCJkYXRhIiwiY29kZSIsIkVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9ydW5uZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV4ZWNTaCBmcm9tICdleGVjLXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgc3BlY21hdGljQ29yZUphck5hbWUgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9jb21tb24vbG9nZ2VyJztcbmltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlYywgc3Bhd24sIFNwYXduT3B0aW9ucyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuXG5jb25zdCBjYWxsQ29yZSA9IChhcmdzOiAoc3RyaW5nIHwgbnVtYmVyKVtdLCBkb25lOiAoZXJyb3I6IGFueSkgPT4gdm9pZCwgb25PdXRwdXQ6IChtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiBib29sZWFuKSA9PiB2b2lkLCBqdm1BcmdzOiBzdHJpbmdbXSA9IFtdKTogQ2hpbGRQcm9jZXNzID0+IHtcbiAgICBjb25zdCByb290UGF0aCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicpO1xuICAgIGNvbnN0IHNwZWNtYXRpY0phclBhdGggPSBwYXRoLnJlc29sdmUocm9vdFBhdGgsIHNwZWNtYXRpY0NvcmVKYXJOYW1lKTtcbiAgICByZXR1cm4gY2FsbEphcihzcGVjbWF0aWNKYXJQYXRoLCBhcmdzLCBkb25lLCBvbk91dHB1dCwganZtQXJncyk7XG59O1xuXG5mdW5jdGlvbiBjYWxsSmFyKGphclBhdGg6IHN0cmluZywgYXJnczogKHN0cmluZyB8IG51bWJlcilbXSwgZG9uZTogKGVycm9yOiBhbnkpID0+IHZvaWQsIG9uT3V0cHV0OiAobWVzc2FnZTogc3RyaW5nLCBlcnJvcjogYm9vbGVhbikgPT4gdm9pZCwganZtQXJnczogc3RyaW5nW10gPSBbXSk6IENoaWxkUHJvY2VzcyB7XG4gICAgY29uc3QgYXJnc0xpc3Q6IHN0cmluZ1tdID0gWy4uLmp2bUFyZ3NdO1xuICAgIGlmIChwcm9jZXNzLmVudlsnZW5kcG9pbnRzQVBJJ10pIHtcbiAgICAgICAgYXJnc0xpc3QucHVzaChgLURlbmRwb2ludHNBUEk9XCIke3Byb2Nlc3MuZW52WydlbmRwb2ludHNBUEknXX1cImApO1xuICAgIH1cbiAgICBhcmdzTGlzdC5wdXNoKC4uLlsnLWphcicsIGphclBhdGhdKTtcbiAgICBhcmdzTGlzdC5wdXNoKC4uLmFyZ3MubWFwKGFyZyA9PiBTdHJpbmcoYXJnKSkpO1xuICAgIGNvbnN0IHByZXR0eVByaW50ZWRDTElBcmdzID0gW2BqYXZhYCwgLi4uYXJnc0xpc3RdLm1hcChhcmcgPT4gSlNPTi5zdHJpbmdpZnkoYXJnKSkuam9pbignICcpO1xuXG4gICAgbG9nZ2VyLmluZm8oYENMSTogUnVubmluZyBjb21tYW5kOiAke3ByZXR0eVByaW50ZWRDTElBcmdzfWApO1xuICAgIGNvbnN0IGphdmFQcm9jZXNzOiBDaGlsZFByb2Nlc3MgPSBzcGF3bignamF2YScsIGFyZ3NMaXN0LCB7IHN0ZGlvOiAncGlwZScsIHN0ZGVycjogJ3BpcGUnLCBzaGVsbDogZmFsc2UsIGVudjogcHJvY2Vzcy5lbnYgfSBhcyBTcGF3bk9wdGlvbnMpO1xuICAgIGphdmFQcm9jZXNzLnN0ZG91dD8ub24oJ2RhdGEnLCBmdW5jdGlvbiAoZGF0YTogU3RyaW5nKSB7XG4gICAgICAgIG9uT3V0cHV0KGAke2RhdGF9YCwgZmFsc2UpO1xuICAgIH0pO1xuICAgIGphdmFQcm9jZXNzLnN0ZGVycj8ub24oJ2RhdGEnLCBmdW5jdGlvbiAoZGF0YTogU3RyaW5nKSB7XG4gICAgICAgIG9uT3V0cHV0KGAke2RhdGF9YCwgdHJ1ZSk7XG4gICAgfSk7XG4gICAgamF2YVByb2Nlc3Mub24oJ2Nsb3NlJywgZnVuY3Rpb24gKGNvZGU6bnVtYmVyKSB7XG4gICAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgICAgICBkb25lKG5ldyBFcnJvcignQ29tbWFuZCBleGl0ZWQgd2l0aCBub24gemVybyBjb2RlOiAnICsgY29kZSkpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkb25lKG51bGwpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJu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
@@ -15,7 +15,8 @@ var _http = _interopRequireDefault(require("http"));
15
15
  var _shutdownUtils = require("./shutdownUtils");
16
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
17
17
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
18
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
18
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
19
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
19
20
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
20
21
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
21
22
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
@@ -61,9 +62,8 @@ var startStub = exports.startStub = function startStub(host, port, args) {
61
62
  }, function (message, error) {
62
63
  if (!error) {
63
64
  if (message.indexOf(freePortMessage) > -1) {
64
- var _parsedPort;
65
65
  _logger["default"].info("Stub: ".concat(message));
66
- parsedPort = (_parsedPort = parsedPort) !== null && _parsedPort !== void 0 ? _parsedPort : message.split("".concat(freePortMessage, ":"))[1].trim();
66
+ parsedPort = parsedPort !== null && parsedPort !== void 0 ? parsedPort : message.split("".concat(freePortMessage, ":"))[1].trim();
67
67
  } else if (message.indexOf(stubServingMessage) > -1) {
68
68
  _logger["default"].info("Stub: ".concat(message));
69
69
  var stubInfo = message.split(stubServingMessage);
@@ -118,11 +118,11 @@ function parseStubOutput(stubInfo, parsedPort, javaProcess) {
118
118
  return new Stub(host, Number.parseInt(finalPort), finalUrl, javaProcess);
119
119
  }
120
120
  var stopStub = exports.stopStub = /*#__PURE__*/function () {
121
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(stub) {
121
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(stub) {
122
122
  var _javaProcess$stdout, _javaProcess$stderr;
123
123
  var javaProcess;
124
- return _regeneratorRuntime().wrap(function _callee$(_context) {
125
- while (1) switch (_context.prev = _context.next) {
124
+ return _regenerator().w(function (_context) {
125
+ while (1) switch (_context.n) {
126
126
  case 0:
127
127
  _logger["default"].debug("Stub: Stopping server at ".concat(stub.url));
128
128
  javaProcess = stub.process;
@@ -130,14 +130,13 @@ var stopStub = exports.stopStub = /*#__PURE__*/function () {
130
130
  (_javaProcess$stderr = javaProcess.stderr) === null || _javaProcess$stderr === void 0 || _javaProcess$stderr.removeAllListeners();
131
131
  javaProcess.removeAllListeners('close');
132
132
  _logger["default"].debug('Trying to stop stub process gracefully ...');
133
- _context.next = 8;
133
+ _context.n = 1;
134
134
  return (0, _shutdownUtils.gracefulShutdown)(javaProcess);
135
- case 8:
135
+ case 1:
136
136
  _logger["default"].debug('Completed graceful termination of the stub process');
137
137
  _logger["default"].info("Stub: Stopped server at ".concat(stub.url));
138
- case 10:
139
- case "end":
140
- return _context.stop();
138
+ case 2:
139
+ return _context.a(2);
141
140
  }
142
141
  }, _callee);
143
142
  }));
@@ -146,30 +145,29 @@ var stopStub = exports.stopStub = /*#__PURE__*/function () {
146
145
  };
147
146
  }();
148
147
  var testWithApiCoverage = exports.testWithApiCoverage = /*#__PURE__*/function () {
149
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(expressApp, host, port, contractPath, args) {
150
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
151
- while (1) switch (_context3.prev = _context3.next) {
148
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(expressApp, host, port, contractPath, args) {
149
+ return _regenerator().w(function (_context3) {
150
+ while (1) switch (_context3.n) {
152
151
  case 0:
153
- return _context3.abrupt("return", new Promise(/*#__PURE__*/function () {
154
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(resolve, _reject) {
152
+ return _context3.a(2, new Promise(/*#__PURE__*/function () {
153
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(resolve, _reject) {
155
154
  var apiCoverageServer, results;
156
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
157
- while (1) switch (_context2.prev = _context2.next) {
155
+ return _regenerator().w(function (_context2) {
156
+ while (1) switch (_context2.n) {
158
157
  case 0:
159
- _context2.next = 2;
158
+ _context2.n = 1;
160
159
  return startApiCoverageServer(expressApp);
161
- case 2:
162
- apiCoverageServer = _context2.sent;
163
- _context2.next = 5;
160
+ case 1:
161
+ apiCoverageServer = _context2.v;
162
+ _context2.n = 2;
164
163
  return test(host, port, contractPath, args);
165
- case 5:
166
- results = _context2.sent;
164
+ case 2:
165
+ results = _context2.v;
167
166
  apiCoverageServer.close(function () {
168
167
  resolve(results);
169
168
  });
170
- case 7:
171
- case "end":
172
- return _context2.stop();
169
+ case 3:
170
+ return _context2.a(2);
173
171
  }
174
172
  }, _callee2);
175
173
  }));
@@ -177,9 +175,6 @@ var testWithApiCoverage = exports.testWithApiCoverage = /*#__PURE__*/function ()
177
175
  return _ref4.apply(this, arguments);
178
176
  };
179
177
  }()));
180
- case 1:
181
- case "end":
182
- return _context3.stop();
183
178
  }
184
179
  }, _callee3);
185
180
  }));
@@ -355,4 +350,4 @@ var convertEndpointToSpringSyntax = function convertEndpointToSpringSyntax(path)
355
350
  var removeRegexFromPath = function removeRegexFromPath(path) {
356
351
  return path.replace(/\([^()]*\)/g, '');
357
352
  };
358
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wYXRoIiwiX2Zhc3RYbWxQYXJzZXIiLCJfZnMiLCJfbG9nZ2VyIiwiX3J1bm5lciIsIl9leHByZXNzTGlzdEVuZHBvaW50cyIsIl9odHRwIiwiX3NodXRkb3duVXRpbHMiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJ0IiwiciIsIk9iamVjdCIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiYSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImlzQXJyYXkiLCJfZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2RlZmluZVByb3BlcnR5IiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJmcmVlUG9ydE1lc3NhZ2UiLCJzdHViU2VydmluZ01lc3NhZ2UiLCJTdHViIiwiZXhwb3J0cyIsImhvc3QiLCJwb3J0IiwidXJsIiwicHJvY2VzcyIsInN0YXJ0U3R1YiIsImFyZ3MiLCJjbWQiLCJjb25jYXQiLCJtYXAiLCJsb2dnZXIiLCJpbmZvIiwiZGVidWciLCJwYXJzZWRQb3J0IiwicmVqZWN0IiwiamF2YVByb2Nlc3MiLCJjYWxsQ29yZSIsImVyciIsImVycm9yIiwibWVzc2FnZSIsImluZGV4T2YiLCJfcGFyc2VkUG9ydCIsInNwbGl0IiwidHJpbSIsInN0dWJJbmZvIiwic3R1YiIsInBhcnNlU3R1Yk91dHB1dCIsImV4dHJhY3RFcnJvck1lc3NhZ2UiLCJfcmVmIiwidXJsSW5mbyIsImV4ZWMiLCJwcm90b2NvbCIsInJlZ2V4UG9ydCIsInBhdGgiLCJkZWZhdWx0UG9ydCIsInVuZGVmaW5lZCIsImZpbmFsUG9ydCIsInBvcnROdW1iZXIiLCJwYXJzZUludCIsImZpbmFsVXJsIiwic3RvcFN0dWIiLCJfcmVmMiIsIl9jYWxsZWUiLCJfamF2YVByb2Nlc3Mkc3Rkb3V0IiwiX2phdmFQcm9jZXNzJHN0ZGVyciIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzdGRvdXQiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJzdGRlcnIiLCJncmFjZWZ1bFNodXRkb3duIiwiX3giLCJ0ZXN0V2l0aEFwaUNvdmVyYWdlIiwiX3JlZjMiLCJfY2FsbGVlMyIsImV4cHJlc3NBcHAiLCJjb250cmFjdFBhdGgiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlamVjdCIsImFwaUNvdmVyYWdlU2VydmVyIiwicmVzdWx0cyIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInN0YXJ0QXBpQ292ZXJhZ2VTZXJ2ZXIiLCJjbG9zZSIsIl94NyIsIl94OCIsIl94MiIsIl94MyIsIl94NCIsIl94NSIsIl94NiIsInNwZWNzUGF0aCIsInJlcG9ydERpciIsImZzIiwicm1TeW5jIiwicmVjdXJzaXZlIiwiZm9yY2UiLCJ0ZXN0Q2FzZXMiLCJwYXJzZUp1bml0WE1MIiwidG90YWwiLCJmYWlsdXJlIiwiZmlsdGVyIiwidGVzdGNhc2UiLCJzdWNjZXNzIiwicmVzdWx0IiwiY29uc29sZSIsImxvZyIsInNob3dUZXN0UmVzdWx0cyIsInRlc3RGbiIsIm5hbWVUZW1wQXJyIiwicmVwbGFjZSIsInNraXBwZWQiLCJzZXRFeHBlY3RhdGlvbnMiLCJzdHViUGF0aCIsInN0dWJTZXJ2ZXJCYXNlVXJsIiwic3R1YlJlc3BvbnNlIiwic2V0RXhwZWN0YXRpb25Kc29uIiwiYXhpb3MiLCJwb3N0IiwicmVzcG9uc2UiLCJkYXRhIiwiX2VyciRyZXNwb25zZSIsInNldEV4cGVjdGF0aW9uc0Vycm9yTWVzc2FnZSIsImhlYWRlcnMiLCJlcnJvclRleHQiLCJwcmludEphclZlcnNpb24iLCJhcHAiLCJodHRwIiwiY3JlYXRlU2VydmVyIiwiX3JlcSIsInJlcyIsIndyaXRlSGVhZCIsImVuZFBvaW50cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJleHRyYWN0RW5kUG9pbnRzIiwiZW5kIiwib24iLCJsaXN0ZW4iLCJhZGRyZXNzIiwiZW52IiwicmVwb3J0UGF0aCIsInJlYWRGaWxlU3luYyIsInBhcnNlciIsIlhNTFBhcnNlciIsInJlc3VsdFhtbCIsInBhcnNlIiwidGVzdHN1aXRlIiwibGlzdEVuZFBvaW50cyIsImRldGFpbHMiLCJsaXN0RXhwcmVzc0VuZHBvaW50cyIsImFwaURldGFpbCIsIm1ldGhvZHMiLCJzcHJpbmdBY3R1YXRvclBheWxvYWQiLCJjb250ZXh0cyIsImFwcGxpY2F0aW9uIiwibWFwcGluZ3MiLCJkaXNwYXRjaGVyU2VydmxldHMiLCJkaXNwYXRjaGVyU2VydmxldCIsInNvcnQiLCJyZXF1ZXN0TWFwcGluZ0NvbmRpdGlvbnMiLCJwYXR0ZXJucyIsImNvbnZlcnRFbmRwb2ludFRvU3ByaW5nU3ludGF4IiwicmVtb3ZlUmVnZXhGcm9tUGF0aCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgeyBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgWE1MUGFyc2VyIH0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9jb21tb24vbG9nZ2VyJ1xuaW1wb3J0IHsgY2FsbENvcmUgfSBmcm9tICcuLi9jb21tb24vcnVubmVyJ1xuaW1wb3J0IGxpc3RFeHByZXNzRW5kcG9pbnRzIGZyb20gJy4uL2xpYi9leHByZXNzLWxpc3QtZW5kcG9pbnRzJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnXG5pbXBvcnQgeyBBZGRyZXNzSW5mbyB9IGZyb20gJ25ldCdcbmltcG9ydCB7IGdyYWNlZnVsU2h1dGRvd24gfSBmcm9tICcuL3NodXRkb3duVXRpbHMnXG5cbmNvbnN0IGZyZWVQb3J0TWVzc2FnZSA9ICdGcmVlIHBvcnQgZm91bmQnXG5jb25zdCBzdHViU2VydmluZ01lc3NhZ2UgPSAnc2VydmluZyBlbmRwb2ludHMgZnJvbSBzcGVjcydcblxuZXhwb3J0IGNsYXNzIFN0dWIge1xuICAgIGhvc3Q6IHN0cmluZ1xuICAgIHBvcnQ6IG51bWJlclxuICAgIHVybDogc3RyaW5nXG4gICAgcHJvY2VzczogQ2hpbGRQcm9jZXNzXG4gICAgY29uc3RydWN0b3IoaG9zdDogc3RyaW5nLCBwb3J0OiBudW1iZXIsIHVybDogc3RyaW5nLCBwcm9jZXNzOiBDaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgdGhpcy5ob3N0ID0gaG9zdFxuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0XG4gICAgICAgIHRoaXMudXJsID0gdXJsXG4gICAgICAgIHRoaXMucHJvY2VzcyA9IHByb2Nlc3NcbiAgICB9XG59XG5cbmNvbnN0IHN0YXJ0U3R1YiA9IChob3N0Pzogc3RyaW5nLCBwb3J0PzogbnVtYmVyLCBhcmdzPzogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8U3R1Yj4gPT4ge1xuICAgIHZhciBjbWQgPSBbYHN0dWJgXVxuICAgIGlmIChob3N0KSBjbWQgLnB1c2goYC0taG9zdD0ke2hvc3R9YClcbiAgICBpZiAocG9ydCkgY21kIC5wdXNoKGAtLXBvcnQ9JHtwb3J0fWApXG4gICAgaWYgKGFyZ3MpIGNtZCAucHVzaCguLi5hcmdzLm1hcChhcmcgPT4gU3RyaW5nKGFyZykpKVxuXG4gICAgbG9nZ2VyLmluZm8oJ1N0dWI6IFN0YXJ0aW5nIHNlcnZlcicpXG4gICAgbG9nZ2VyLmRlYnVnKGBTdHViOiBFeGVjdXRpbmcgXCIke2NtZH1cImApXG4gICAgbGV0IHBhcnNlZFBvcnQ6IHN0cmluZyB8IG51bGwgPSBwb3J0ID09IG51bGwgfHwgcG9ydCA9PT0gMCA/IG51bGwgOiBTdHJpbmcocG9ydCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBqYXZhUHJvY2VzcyA9IGNhbGxDb3JlKFxuICAgICAgICAgICAgY21kLFxuICAgICAgICAgICAgKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYFN0dWI6IEV4aXRlZCB3aXRoIGVycm9yICR7ZXJyfWApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChtZXNzYWdlLCBlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UuaW5kZXhPZihmcmVlUG9ydE1lc3NhZ2UpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBTdHViOiAke21lc3NhZ2V9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFBvcnQgPSBwYXJzZWRQb3J0ID8/IG1lc3NhZ2Uuc3BsaXQoYCR7ZnJlZVBvcnRNZXNzYWdlfTpgKVsxXS50cmltKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLmluZGV4T2Yoc3R1YlNlcnZpbmdNZXNzYWdlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgU3R1YjogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHViSW5mbyA9IG1lc3NhZ2Uuc3BsaXQoc3R1YlNlcnZpbmdNZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmxlbmd0aCA8IDIpIHJlamVjdCgnQ2Fubm90IGRldGVybWluZSB1cmwgZnJvbSBzdHViIG91dHB1dCcpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3R1YiA9IHBhcnNlU3R1Yk91dHB1dChzdHViSW5mbywgcGFyc2VkUG9ydCwgamF2YVByb2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc3R1Yik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7IHJlamVjdChleHRyYWN0RXJyb3JNZXNzYWdlKGUpKTsgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5kZXhPZignQWRkcmVzcyBhbHJlYWR5IGluIHVzZScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgU3R1YjogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoJ0FkZHJlc3MgYWxyZWFkeSBpbiB1c2UnKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBTdHViOiAke21lc3NhZ2V9YClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgU3R1YjogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfSlcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEVycm9yTWVzc2FnZShlcnJvcjogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cblxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICByZXR1cm4gZXJyb3IubWVzc2FnZTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKGVycm9yKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VTdHViT3V0cHV0KFxuICAgIHN0dWJJbmZvOiBzdHJpbmdbXSxcbiAgICBwYXJzZWRQb3J0OiBzdHJpbmcgfCBudWxsLFxuICAgIGphdmFQcm9jZXNzOiBDaGlsZFByb2Nlc3Ncbik6IFN0dWIge1xuICAgIGNvbnN0IHVybCA9IHN0dWJJbmZvWzBdLnRyaW0oKTtcbiAgICBjb25zdCB1cmxJbmZvID0gL1xcYiguKj8pOlxcL1xcLyguKj8pOj8oWzAtOV0rKT8oXFwvLiopPyQvLmV4ZWModXJsKTtcblxuICAgIGlmICh1cmxJbmZvID09PSBudWxsIHx8ICF1cmxJbmZvWzFdIHx8ICF1cmxJbmZvWzJdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZXRlcm1pbmUgaG9zdCBhbmQgcG9ydCBmcm9tIHN0dWIgb3V0cHV0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvdG9jb2wgPSB1cmxJbmZvWzFdO1xuICAgIGNvbnN0IGhvc3QgPSB1cmxJbmZvWzJdO1xuICAgIGNvbnN0IHJlZ2V4UG9ydCA9IHVybEluZm9bM107XG4gICAgY29uc3QgcGF0aCA9IHVybEluZm9bNF0gfHwgXCJcIjtcbiAgICBjb25zdCBkZWZhdWx0UG9ydCA9IHByb3RvY29sID09PSAnaHR0cCcgPyAnODAnIDogcHJvdG9jb2wgPT09ICdodHRwcycgPyAnNDQzJyA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaW5hbFBvcnQgPSBwYXJzZWRQb3J0ID8/IHJlZ2V4UG9ydCA/PyBkZWZhdWx0UG9ydDtcblxuICAgIGlmICghZmluYWxQb3J0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZXRlcm1pbmUgcG9ydCBmcm9tIHN0dWIgb3V0cHV0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgcG9ydE51bWJlciA9IE51bWJlci5wYXJzZUludChmaW5hbFBvcnQsIDEwKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHBvcnROdW1iZXIpIHx8IHBvcnROdW1iZXIgPD0gMCB8fCBwb3J0TnVtYmVyID4gNjU1MzUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3J0OiAke2ZpbmFsUG9ydH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5hbFVybCA9IGAke3Byb3RvY29sfTovLyR7aG9zdH06JHtmaW5hbFBvcnR9JHtwYXRofWA7XG4gICAgcmV0dXJuIG5ldyBTdHViKGhvc3QsIE51bWJlci5wYXJzZUludChmaW5hbFBvcnQpLCBmaW5hbFVybCwgamF2YVByb2Nlc3MpO1xufVxuXG5jb25zdCBzdG9wU3R1YiA9IGFzeW5jIChzdHViOiBTdHViKSA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBTdHViOiBTdG9wcGluZyBzZXJ2ZXIgYXQgJHtzdHViLnVybH1gKVxuICAgIGNvbnN0IGphdmFQcm9jZXNzID0gc3R1Yi5wcm9jZXNzXG4gICAgamF2YVByb2Nlc3Muc3Rkb3V0Py5yZW1vdmVBbGxMaXN0ZW5lcnMoKVxuICAgIGphdmFQcm9jZXNzLnN0ZGVycj8ucmVtb3ZlQWxsTGlzdGVuZXJzKClcbiAgICBqYXZhUHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2Nsb3NlJylcbiAgICBsb2dnZXIuZGVidWcoJ1RyeWluZyB0byBzdG9wIHN0dWIgcHJvY2VzcyBncmFjZWZ1bGx5IC4uLicpXG4gICAgYXdhaXQgZ3JhY2VmdWxTaHV0ZG93bihqYXZhUHJvY2VzcylcbiAgICBsb2dnZXIuZGVidWcoJ0NvbXBsZXRlZCBncmFjZWZ1bCB0ZXJtaW5hdGlvbiBvZiB0aGUgc3R1YiBwcm9jZXNzJylcbiAgICBsb2dnZXIuaW5mbyhgU3R1YjogU3RvcHBlZCBzZXJ2ZXIgYXQgJHtzdHViLnVybH1gKVxufVxuXG5jb25zdCB0ZXN0V2l0aEFwaUNvdmVyYWdlID0gYXN5bmMgKFxuICAgIGV4cHJlc3NBcHA6IGFueSxcbiAgICBob3N0Pzogc3RyaW5nLFxuICAgIHBvcnQ/OiBudW1iZXIsXG4gICAgY29udHJhY3RQYXRoPzogc3RyaW5nLFxuICAgIGFyZ3M/OiAoc3RyaW5nIHwgbnVtYmVyKVtdXG4pOiBQcm9taXNlPHsgW2s6IHN0cmluZ106IG51bWJlciB9IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBhcGlDb3ZlcmFnZVNlcnZlciA9IGF3YWl0IHN0YXJ0QXBpQ292ZXJhZ2VTZXJ2ZXIoZXhwcmVzc0FwcClcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRlc3QoaG9zdCwgcG9ydCwgY29udHJhY3RQYXRoLCBhcmdzKVxuICAgICAgICBhcGlDb3ZlcmFnZVNlcnZlci5jbG9zZSgoKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdHMpXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgdGVzdCA9IChob3N0Pzogc3RyaW5nLCBwb3J0PzogbnVtYmVyLCBjb250cmFjdFBhdGg/OiBzdHJpbmcsIGFyZ3M/OiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogUHJvbWlzZTx7IFtrOiBzdHJpbmddOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGNvbnN0IHNwZWNzUGF0aCA9IHBhdGgucmVzb2x2ZShjb250cmFjdFBhdGggKyAnJylcblxuICAgIGNvbnN0IGNtZCA9IFtgdGVzdGBdXG4gICAgaWYgKGNvbnRyYWN0UGF0aCkgY21kLnB1c2goc3BlY3NQYXRoKVxuICAgIGNtZC5wdXNoKCctLWp1bml0UmVwb3J0RGlyPWRpc3QvdGVzdC1yZXBvcnQnKVxuICAgIGlmIChob3N0KSBjbWQucHVzaChgLS1ob3N0PSR7aG9zdH1gKVxuICAgIGlmIChwb3J0KSBjbWQucHVzaChgLS1wb3J0PSR7cG9ydH1gKVxuICAgIGlmIChhcmdzKSBjbWQucHVzaCguLi5hcmdzLm1hcChhcmcgPT4gU3RyaW5nKGFyZykpKVxuXG4gICAgbG9nZ2VyLmluZm8oJ1Rlc3Q6IFJ1bm5pbmcnKVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGVzdDogRXhlY3V0aW5nIFwiJHtjbWR9XCJgKVxuXG4gICAgY29uc3QgcmVwb3J0RGlyID0gcGF0aC5yZXNvbHZlKCdkaXN0L3Rlc3QtcmVwb3J0JylcbiAgICBmcy5ybVN5bmMocmVwb3J0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgX3JlamVjdCkgPT4ge1xuICAgICAgICBjYWxsQ29yZShcbiAgICAgICAgICAgIGNtZCxcbiAgICAgICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIGxvZ2dlci5lcnJvcihgVGVzdDogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgICAgICAgICB2YXIgdGVzdENhc2VzID0gcGFyc2VKdW5pdFhNTCgpXG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSB0ZXN0Q2FzZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgY29uc3QgZmFpbHVyZSA9IHRlc3RDYXNlcy5maWx0ZXIoKHRlc3RjYXNlOiB7IFtpZDogc3RyaW5nXTogYW55IH0pID0+IHRlc3RjYXNlWydmYWlsdXJlJ10gfHwgdGVzdGNhc2VbJ3NraXBwZWQnXSkubGVuZ3RoXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IHRvdGFsIC0gZmFpbHVyZVxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB7IHRvdGFsLCBzdWNjZXNzLCBmYWlsdXJlIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAobWVzc2FnZSwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pbmRleE9mKCdBUEkgQ09WRVJBR0UgU1VNTUFSWScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobWVzc2FnZSkgLy9Mb2cgYWx3YXlzIGZvciBhbGwgbG9nIGxldmVsc1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlcltlcnJvciA/ICdlcnJvcicgOiAnZGVidWcnXShgVGVzdDogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfSlcbn1cblxuY29uc3Qgc2hvd1Rlc3RSZXN1bHRzID0gKHRlc3RGbjogKG5hbWU6IHN0cmluZywgY2I6ICgpID0+IHZvaWQpID0+IHZvaWQpID0+IHtcbiAgICB2YXIgdGVzdENhc2VzID0gcGFyc2VKdW5pdFhNTCgpXG4gICAgdGVzdENhc2VzLm1hcChmdW5jdGlvbiAodGVzdGNhc2U6IHsgW2lkOiBzdHJpbmddOiBhbnkgfSkge1xuICAgICAgICB2YXIgbmFtZSA9ICdObyBOYW1lJ1xuICAgICAgICBpZiAodGVzdGNhc2VbJ3N5c3RlbS1vdXQnXSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZVRlbXBBcnIgPSB0ZXN0Y2FzZVsnc3lzdGVtLW91dCddXG4gICAgICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXG4vZywgJycpXG4gICAgICAgICAgICAgICAgLnNwbGl0KC9kaXNwbGF5LW5hbWU6LipTY2VuYXJpbzogLylcbiAgICAgICAgICAgIGlmIChuYW1lVGVtcEFyci5sZW5ndGggPiAxKSBuYW1lID0gbmFtZVRlbXBBcnJbMV0udHJpbSgpXG4gICAgICAgIH1cbiAgICAgICAgdGVzdEZuKG5hbWUsICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0ZXN0Y2FzZS5mYWlsdXJlIHx8IHRlc3RjYXNlLnNraXBwZWQpIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBwYXNzJylcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5jb25zdCBzZXRFeHBlY3RhdGlvbnMgPSAoc3R1YlBhdGg6IHN0cmluZywgc3R1YlNlcnZlckJhc2VVcmw/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBzdHViUmVzcG9uc2UgPSByZXF1aXJlKHBhdGgucmVzb2x2ZShzdHViUGF0aCkpXG4gICAgcmV0dXJuIHNldEV4cGVjdGF0aW9uSnNvbihzdHViUmVzcG9uc2UsIHN0dWJTZXJ2ZXJCYXNlVXJsKVxufVxuXG5jb25zdCBzZXRFeHBlY3RhdGlvbkpzb24gPSAoc3R1YlJlc3BvbnNlOiBhbnksIHN0dWJTZXJ2ZXJCYXNlVXJsPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgc3R1YlNlcnZlckJhc2VVcmwgPSBzdHViU2VydmVyQmFzZVVybCB8fCAnaHR0cDovL2xvY2FsaG9zdDo5MDAwJ1xuXG4gICAgbG9nZ2VyLmluZm8oYFNldCBFeHBlY3RhdGlvbnM6IFN0dWIgdXJsIGlzICR7c3R1YlNlcnZlckJhc2VVcmx9YClcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgICAucG9zdChgJHtzdHViU2VydmVyQmFzZVVybH0vX3NwZWNtYXRpYy9leHBlY3RhdGlvbnNgLCBzdHViUmVzcG9uc2UpXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBTZXQgRXhwZWN0YXRpb25zOiAke3Jlc3BvbnNlLmRhdGF9YClcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnU2V0IEV4cGVjdGF0aW9uczogRmluaXNoZWQnKVxuICAgICAgICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBzZXRFeHBlY3RhdGlvbnNFcnJvck1lc3NhZ2UgPSBgU2V0IEV4cGVjdGF0aW9uczogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YFxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSByZXNwb25zZSBkYXRhIGlzIGluIHRleHQgZm9ybWF0XG4gICAgICAgICAgICAgICAgaWYgKGVyciAmJiBlcnIucmVzcG9uc2U/LmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID09PSAndGV4dC9wbGFpbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZSBhIGNoZWNrIHRvIGhhbmRsZSB0ZXh0IGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yVGV4dCA9IHR5cGVvZiBlcnIucmVzcG9uc2UuZGF0YSA9PT0gJ3N0cmluZycgPyBlcnIucmVzcG9uc2UuZGF0YSA6IFwiRXJyb3IgdGV4dCBub3QgYXZhaWxhYmxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFeHBlY3RhdGlvbnNFcnJvck1lc3NhZ2UgKz0gYCAtICR7ZXJyb3JUZXh0fWA7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcIkZhaWxlZCB0byByZXRyaWV2ZSB0ZXh0IGVycm9yIG1lc3NhZ2UuXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzZXRFeHBlY3RhdGlvbnNFcnJvck1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgcmVqZWN0KHNldEV4cGVjdGF0aW9uc0Vycm9yTWVzc2FnZSlcbiAgICAgICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgcHJpbnRKYXJWZXJzaW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IGNtZCA9IFtgLS12ZXJzaW9uYF1cbiAgICBsb2dnZXIuaW5mbygnUHJpbnQgSmFyIFZlcnNpb246IFJ1bm5pbmcnKVxuICAgIGxvZ2dlci5kZWJ1ZyhgUHJpbnQgSmFyIFZlcnNpb246IEV4ZWN1dGluZyBcIiR7Y21kfVwiYClcblxuICAgIGNhbGxDb3JlKFxuICAgICAgICBjbWQsXG4gICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikgbG9nZ2VyLmVycm9yKGBQcmludCBKYXIgVmVyc2lvbjogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgfSxcbiAgICAgICAgKG1lc3NhZ2UsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIGxvZ2dlci5lcnJvcihgUHJpbnQgSmFyIFZlcnNpb246ICR7bWVzc2FnZX1gKVxuICAgICAgICAgICAgZWxzZSBjb25zb2xlLmxvZyhgJHttZXNzYWdlfWApXG4gICAgICAgIH1cbiAgICApXG59XG5cbmNvbnN0IHN0YXJ0QXBpQ292ZXJhZ2VTZXJ2ZXIgPSAoZXhwcmVzc0FwcDogYW55KTogUHJvbWlzZTxodHRwLlNlcnZlcj4gPT4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgUmVnaXN0ZXJpbmcgQVBJIGVuZHBvaW50IGZvciBjb3ZlcmFnZWApXG4gICAgbGV0IGFwcCA9IGh0dHAuY3JlYXRlU2VydmVyKChfcmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KVxuICAgICAgICBjb25zdCBlbmRQb2ludHMgPSBKU09OLnN0cmluZ2lmeShleHRyYWN0RW5kUG9pbnRzKGV4cHJlc3NBcHApKVxuICAgICAgICBsb2dnZXIuZGVidWcoYEVuZHBvaW50czogJHtlbmRQb2ludHN9YClcbiAgICAgICAgcmVzLmVuZChlbmRQb2ludHMpXG4gICAgfSlcbiAgICByZXR1cm4gbmV3IFByb21pc2U8aHR0cC5TZXJ2ZXI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYXBwLm9uKCdlcnJvcicsIGVyciA9PiB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHN0YXJ0aW5nIGVuZCBwb2ludHMgc2VydmVyIGZvciBhcGkgY292ZXJhZ2UnLCBlcnIpXG4gICAgICAgICAgICByZWplY3QoJ0Vycm9yIHdoaWxlIHN0YXJ0aW5nIGVuZCBwb2ludHMgc2VydmVyIGZvciBhcGkgY292ZXJhZ2UnKVxuICAgICAgICB9KVxuICAgICAgICBhcHAubGlzdGVuKHsgaG9zdDogJzEyNy4wLjAuMScsIHBvcnQ6IDAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWRkcmVzcyA9IGFwcC5hZGRyZXNzKCkgYXMgQWRkcmVzc0luZm8gfCBudWxsXG4gICAgICAgICAgICBwcm9jZXNzLmVudlsnZW5kcG9pbnRzQVBJJ10gPSBgaHR0cDovLyR7YWRkcmVzcz8uYWRkcmVzc306JHthZGRyZXNzPy5wb3J0fWBcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBFbmRwb2ludHMgQVBJIHJlZ2lzdGVyZWQgYXQgJHtwcm9jZXNzLmVudlsnZW5kcG9pbnRzQVBJJ119YClcbiAgICAgICAgICAgIHJlc29sdmUoYXBwKVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmNvbnN0IHBhcnNlSnVuaXRYTUwgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVwb3J0UGF0aCA9IHBhdGgucmVzb2x2ZSgnZGlzdC90ZXN0LXJlcG9ydC9URVNULWp1bml0LWp1cGl0ZXIueG1sJylcbiAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyhyZXBvcnRQYXRoKVxuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBYTUxQYXJzZXIoKVxuICAgIHZhciByZXN1bHRYbWwgPSBwYXJzZXIucGFyc2UoZGF0YSlcbiAgICByZXN1bHRYbWwudGVzdHN1aXRlLnRlc3RjYXNlID0gQXJyYXkuaXNBcnJheShyZXN1bHRYbWwudGVzdHN1aXRlLnRlc3RjYXNlKSA/IHJlc3VsdFhtbC50ZXN0c3VpdGUudGVzdGNhc2UgOiBbcmVzdWx0WG1sLnRlc3RzdWl0ZS50ZXN0Y2FzZV1cbiAgICByZXR1cm4gcmVzdWx0WG1sLnRlc3RzdWl0ZS50ZXN0Y2FzZVxufVxuXG5jb25zdCBsaXN0RW5kUG9pbnRzID0gKGV4cHJlc3NBcHA6IGFueSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9PiB7XG4gICAgY29uc3QgZGV0YWlscyA9IGxpc3RFeHByZXNzRW5kcG9pbnRzKGV4cHJlc3NBcHApXG4gICAgbGV0IGVuZFBvaW50czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge31cbiAgICBkZXRhaWxzLm1hcChhcGlEZXRhaWwgPT4ge1xuICAgICAgICBlbmRQb2ludHNbYXBpRGV0YWlsLnBhdGhdID0gYXBpRGV0YWlsLm1ldGhvZHNcbiAgICB9KVxuICAgIGRlbGV0ZSBlbmRQb2ludHNbJyonXVxuICAgIHJldHVybiBlbmRQb2ludHNcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEVuZFBvaW50cyhleHByZXNzQXBwOiBhbnkpIHtcbiAgICBsZXQgZW5kUG9pbnRzID0gbGlzdEVuZFBvaW50cyhleHByZXNzQXBwKVxuICAgIGxldCBzcHJpbmdBY3R1YXRvclBheWxvYWQgPSB7XG4gICAgICAgIGNvbnRleHRzOiB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbjoge1xuICAgICAgICAgICAgICAgIG1hcHBpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXJTZXJ2bGV0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlclNlcnZsZXQ6IFtdLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH1cbiAgICBPYmplY3Qua2V5cyhlbmRQb2ludHMpXG4gICAgICAgIC5zb3J0KClcbiAgICAgICAgLm1hcChwYXRoID0+IHtcbiAgICAgICAgICAgIHNwcmluZ0FjdHVhdG9yUGF5bG9hZC5jb250ZXh0cy5hcHBsaWNhdGlvbi5tYXBwaW5ncy5kaXNwYXRjaGVyU2VydmxldHMuZGlzcGF0Y2hlclNlcnZsZXQucHVzaCh7XG4gICAgICAgICAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0TWFwcGluZ0NvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZHM6IGVuZFBvaW50c1twYXRoXS5zb3J0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuczogW2NvbnZlcnRFbmRwb2ludFRvU3ByaW5nU3ludGF4KHBhdGgpXS5tYXAocmVtb3ZlUmVnZXhGcm9tUGF0aClcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSBhcyBuZXZlcilcbiAgICAgICAgfSlcbiAgICByZXR1cm4gc3ByaW5nQWN0dWF0b3JQYXlsb2FkXG59XG5cbmNvbnN0IGNvbnZlcnRFbmRwb2ludFRvU3ByaW5nU3ludGF4ID0gKHBhdGg6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBwYXRoLnJlcGxhY2UoLzooW14vXSspL2csICd7JDF9JykucmVwbGFjZSgvXFxcXC9nLCAnJylcbn1cblxuY29uc3QgcmVtb3ZlUmVnZXhGcm9tUGF0aCA9IChwYXRoOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gcGF0aC5yZXBsYWNlKC9cXChbXigpXSpcXCkvZywgJycpXG59XG5cbmV4cG9ydCB7IHN0YXJ0U3R1Yiwgc3RvcFN0dWIsIHRlc3QsIHRlc3RXaXRoQXBpQ292ZXJhZ2UsIHNldEV4cGVjdGF0aW9ucywgc2V0RXhwZWN0YXRpb25Kc29uLCBwcmludEphclZlcnNpb24sIHNob3dUZXN0UmVzdWx0cyB9XG5leHBvcnQgeyBzdGFydEFwaUNvdmVyYWdlU2VydmVyIH1cbiJdLCJtYXBwaW5ncyI6Ijs7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SCxTQUFTLEVBQUk7SUFDckJuQixTQUFTLENBQUNtQixTQUFTLENBQUN0RyxJQUFJLENBQUMsR0FBR3NHLFNBQVMsQ0FBQ0MsT0FBTztFQUNqRCxDQUFDLENBQUM7RUFDRixPQUFPcEIsU0FBUyxDQUFDLEdBQUcsQ0FBQztFQUNyQixPQUFPQSxTQUFTO0FBQ3BCLENBQUM7QUFFRCxTQUFTRyxnQkFBZ0JBLENBQUNoRSxVQUFlLEVBQUU7RUFDdkMsSUFBSTZELFNBQVMsR0FBR2dCLGFBQWEsQ0FBQzdFLFVBQVUsQ0FBQztFQUN6QyxJQUFJa0YscUJBQXFCLEdBQUc7SUFDeEJDLFFBQVEsRUFBRTtNQUNOQyxXQUFXLEVBQUU7UUFDVEMsUUFBUSxFQUFFO1VBQ05DLGtCQUFrQixFQUFFO1lBQ2hCQyxpQkFBaUIsRUFBRTtVQUN2QjtRQUNKO01BQ0o7SUFDSjtFQUNKLENBQUM7RUFDRHpRLE1BQU0sQ0FBQ2dGLElBQUksQ0FBQytKLFNBQVMsQ0FBQyxDQUNqQjJCLElBQUksQ0FBQyxDQUFDLENBQ050SSxHQUFHLENBQUMsVUFBQXdCLElBQUksRUFBSTtJQUNUd0cscUJBQXFCLENBQUNDLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDQyxRQUFRLENBQUNDLGtCQUFrQixDQUFDQyxpQkFBaUIsQ0FBQ3hNLElBQUksQ0FBQztNQUMxRitMLE9BQU8sRUFBRTtRQUNMVyx3QkFBd0IsRUFBRTtVQUN0QlIsT0FBTyxFQUFFcEIsU0FBUyxDQUFDbkYsSUFBSSxDQUFDLENBQUM4RyxJQUFJLENBQUMsQ0FBQztVQUMvQkUsUUFBUSxFQUFFLENBQUNDLDZCQUE2QixDQUFDakgsSUFBSSxDQUFDLENBQUMsQ0FBQ3hCLEdBQUcsQ0FBQzBJLG1CQUFtQjtRQUMzRTtNQUNKO0lBQ0osQ0FBVSxDQUFDO0VBQ2YsQ0FBQyxDQUFDO0VBQ04sT0FBT1YscUJBQXFCO0FBQ2hDO0FBRUEsSUFBTVMsNkJBQTZCLEdBQUcsU0FBaENBLDZCQUE2QkEsQ0FBSWpILElBQVksRUFBSztFQUNwRCxPQUFPQSxJQUFJLENBQUM2RCxPQUFPLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDQSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztBQUMvRCxDQUFDO0FBRUQsSUFBTXFELG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlsSCxJQUFZLEVBQUs7RUFDMUMsT0FBT0EsSUFBSSxDQUFDNkQsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7QUFDMUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
353
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wYXRoIiwiX2Zhc3RYbWxQYXJzZXIiLCJfZnMiLCJfbG9nZ2VyIiwiX3J1bm5lciIsIl9leHByZXNzTGlzdEVuZHBvaW50cyIsIl9odHRwIiwiX3NodXRkb3duVXRpbHMiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9yZWdlbmVyYXRvciIsInQiLCJyIiwibiIsInRvU3RyaW5nVGFnIiwiaSIsImMiLCJHZW5lcmF0b3IiLCJ1IiwiT2JqZWN0IiwiY3JlYXRlIiwiX3JlZ2VuZXJhdG9yRGVmaW5lMiIsImYiLCJwIiwieSIsIkciLCJ2IiwiYSIsImQiLCJiaW5kIiwibGVuZ3RoIiwibCIsIlR5cGVFcnJvciIsImNhbGwiLCJkb25lIiwidmFsdWUiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwidyIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsIl9yZWdlbmVyYXRvckRlZmluZSIsIl9pbnZva2UiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJpc0FycmF5IiwiX2RlZmluZVByb3BlcnRpZXMiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiZnJlZVBvcnRNZXNzYWdlIiwic3R1YlNlcnZpbmdNZXNzYWdlIiwiU3R1YiIsImV4cG9ydHMiLCJob3N0IiwicG9ydCIsInVybCIsInByb2Nlc3MiLCJzdGFydFN0dWIiLCJhcmdzIiwiY21kIiwicHVzaCIsImNvbmNhdCIsIm1hcCIsImFyZyIsImxvZ2dlciIsImluZm8iLCJkZWJ1ZyIsInBhcnNlZFBvcnQiLCJyZWplY3QiLCJqYXZhUHJvY2VzcyIsImNhbGxDb3JlIiwiZXJyIiwiZXJyb3IiLCJtZXNzYWdlIiwiaW5kZXhPZiIsInNwbGl0IiwidHJpbSIsInN0dWJJbmZvIiwic3R1YiIsInBhcnNlU3R1Yk91dHB1dCIsImV4dHJhY3RFcnJvck1lc3NhZ2UiLCJFcnJvciIsIl9yZWYiLCJ1cmxJbmZvIiwiZXhlYyIsInByb3RvY29sIiwicmVnZXhQb3J0IiwicGF0aCIsImRlZmF1bHRQb3J0IiwidW5kZWZpbmVkIiwiZmluYWxQb3J0IiwicG9ydE51bWJlciIsInBhcnNlSW50IiwiaXNOYU4iLCJmaW5hbFVybCIsInN0b3BTdHViIiwiX3JlZjIiLCJfY2FsbGVlIiwiX2phdmFQcm9jZXNzJHN0ZG91dCIsIl9qYXZhUHJvY2VzcyRzdGRlcnIiLCJfY29udGV4dCIsInN0ZG91dCIsInJlbW92ZUFsbExpc3RlbmVycyIsInN0ZGVyciIsImdyYWNlZnVsU2h1dGRvd24iLCJfeCIsInRlc3RXaXRoQXBpQ292ZXJhZ2UiLCJfcmVmMyIsIl9jYWxsZWUzIiwiZXhwcmVzc0FwcCIsImNvbnRyYWN0UGF0aCIsIl9jb250ZXh0MyIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfcmVqZWN0IiwiYXBpQ292ZXJhZ2VTZXJ2ZXIiLCJyZXN1bHRzIiwiX2NvbnRleHQyIiwic3RhcnRBcGlDb3ZlcmFnZVNlcnZlciIsImNsb3NlIiwiX3g3IiwiX3g4IiwiX3gyIiwiX3gzIiwiX3g0IiwiX3g1IiwiX3g2Iiwic3BlY3NQYXRoIiwicmVwb3J0RGlyIiwiZnMiLCJybVN5bmMiLCJyZWN1cnNpdmUiLCJmb3JjZSIsInRlc3RDYXNlcyIsInBhcnNlSnVuaXRYTUwiLCJ0b3RhbCIsImZhaWx1cmUiLCJmaWx0ZXIiLCJ0ZXN0Y2FzZSIsInN1Y2Nlc3MiLCJyZXN1bHQiLCJjb25zb2xlIiwibG9nIiwic2hvd1Rlc3RSZXN1bHRzIiwidGVzdEZuIiwibmFtZVRlbXBBcnIiLCJyZXBsYWNlIiwic2tpcHBlZCIsInNldEV4cGVjdGF0aW9ucyIsInN0dWJQYXRoIiwic3R1YlNlcnZlckJhc2VVcmwiLCJzdHViUmVzcG9uc2UiLCJzZXRFeHBlY3RhdGlvbkpzb24iLCJheGlvcyIsInBvc3QiLCJyZXNwb25zZSIsImRhdGEiLCJfZXJyJHJlc3BvbnNlIiwic2V0RXhwZWN0YXRpb25zRXJyb3JNZXNzYWdlIiwiaGVhZGVycyIsImVycm9yVGV4dCIsInByaW50SmFyVmVyc2lvbiIsImFwcCIsImh0dHAiLCJjcmVhdGVTZXJ2ZXIiLCJfcmVxIiwicmVzIiwid3JpdGVIZWFkIiwiZW5kUG9pbnRzIiwiSlNPTiIsInN0cmluZ2lmeSIsImV4dHJhY3RFbmRQb2ludHMiLCJlbmQiLCJvbiIsImxpc3RlbiIsImFkZHJlc3MiLCJlbnYiLCJyZXBvcnRQYXRoIiwicmVhZEZpbGVTeW5jIiwicGFyc2VyIiwiWE1MUGFyc2VyIiwicmVzdWx0WG1sIiwicGFyc2UiLCJ0ZXN0c3VpdGUiLCJsaXN0RW5kUG9pbnRzIiwiZGV0YWlscyIsImxpc3RFeHByZXNzRW5kcG9pbnRzIiwiYXBpRGV0YWlsIiwibWV0aG9kcyIsInNwcmluZ0FjdHVhdG9yUGF5bG9hZCIsImNvbnRleHRzIiwiYXBwbGljYXRpb24iLCJtYXBwaW5ncyIsImRpc3BhdGNoZXJTZXJ2bGV0cyIsImRpc3BhdGNoZXJTZXJ2bGV0Iiwia2V5cyIsInNvcnQiLCJyZXF1ZXN0TWFwcGluZ0NvbmRpdGlvbnMiLCJwYXR0ZXJucyIsImNvbnZlcnRFbmRwb2ludFRvU3ByaW5nU3ludGF4IiwicmVtb3ZlUmVnZXhGcm9tUGF0aCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgeyBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgWE1MUGFyc2VyIH0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9jb21tb24vbG9nZ2VyJ1xuaW1wb3J0IHsgY2FsbENvcmUgfSBmcm9tICcuLi9jb21tb24vcnVubmVyJ1xuaW1wb3J0IGxpc3RFeHByZXNzRW5kcG9pbnRzIGZyb20gJy4uL2xpYi9leHByZXNzLWxpc3QtZW5kcG9pbnRzJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnXG5pbXBvcnQgeyBBZGRyZXNzSW5mbyB9IGZyb20gJ25ldCdcbmltcG9ydCB7IGdyYWNlZnVsU2h1dGRvd24gfSBmcm9tICcuL3NodXRkb3duVXRpbHMnXG5cbmNvbnN0IGZyZWVQb3J0TWVzc2FnZSA9ICdGcmVlIHBvcnQgZm91bmQnXG5jb25zdCBzdHViU2VydmluZ01lc3NhZ2UgPSAnc2VydmluZyBlbmRwb2ludHMgZnJvbSBzcGVjcydcblxuZXhwb3J0IGNsYXNzIFN0dWIge1xuICAgIGhvc3Q6IHN0cmluZ1xuICAgIHBvcnQ6IG51bWJlclxuICAgIHVybDogc3RyaW5nXG4gICAgcHJvY2VzczogQ2hpbGRQcm9jZXNzXG4gICAgY29uc3RydWN0b3IoaG9zdDogc3RyaW5nLCBwb3J0OiBudW1iZXIsIHVybDogc3RyaW5nLCBwcm9jZXNzOiBDaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgdGhpcy5ob3N0ID0gaG9zdFxuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0XG4gICAgICAgIHRoaXMudXJsID0gdXJsXG4gICAgICAgIHRoaXMucHJvY2VzcyA9IHByb2Nlc3NcbiAgICB9XG59XG5cbmNvbnN0IHN0YXJ0U3R1YiA9IChob3N0Pzogc3RyaW5nLCBwb3J0PzogbnVtYmVyLCBhcmdzPzogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8U3R1Yj4gPT4ge1xuICAgIHZhciBjbWQgPSBbYHN0dWJgXVxuICAgIGlmIChob3N0KSBjbWQgLnB1c2goYC0taG9zdD0ke2hvc3R9YClcbiAgICBpZiAocG9ydCkgY21kIC5wdXNoKGAtLXBvcnQ9JHtwb3J0fWApXG4gICAgaWYgKGFyZ3MpIGNtZCAucHVzaCguLi5hcmdzLm1hcChhcmcgPT4gU3RyaW5nKGFyZykpKVxuXG4gICAgbG9nZ2VyLmluZm8oJ1N0dWI6IFN0YXJ0aW5nIHNlcnZlcicpXG4gICAgbG9nZ2VyLmRlYnVnKGBTdHViOiBFeGVjdXRpbmcgXCIke2NtZH1cImApXG4gICAgbGV0IHBhcnNlZFBvcnQ6IHN0cmluZyB8IG51bGwgPSBwb3J0ID09IG51bGwgfHwgcG9ydCA9PT0gMCA/IG51bGwgOiBTdHJpbmcocG9ydCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBqYXZhUHJvY2VzcyA9IGNhbGxDb3JlKFxuICAgICAgICAgICAgY21kLFxuICAgICAgICAgICAgKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYFN0dWI6IEV4aXRlZCB3aXRoIGVycm9yICR7ZXJyfWApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChtZXNzYWdlLCBlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UuaW5kZXhPZihmcmVlUG9ydE1lc3NhZ2UpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBTdHViOiAke21lc3NhZ2V9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFBvcnQgPSBwYXJzZWRQb3J0ID8/IG1lc3NhZ2Uuc3BsaXQoYCR7ZnJlZVBvcnRNZXNzYWdlfTpgKVsxXS50cmltKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtZXNzYWdlLmluZGV4T2Yoc3R1YlNlcnZpbmdNZXNzYWdlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgU3R1YjogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHViSW5mbyA9IG1lc3NhZ2Uuc3BsaXQoc3R1YlNlcnZpbmdNZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmxlbmd0aCA8IDIpIHJlamVjdCgnQ2Fubm90IGRldGVybWluZSB1cmwgZnJvbSBzdHViIG91dHB1dCcpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3R1YiA9IHBhcnNlU3R1Yk91dHB1dChzdHViSW5mbywgcGFyc2VkUG9ydCwgamF2YVByb2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc3R1Yik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7IHJlamVjdChleHRyYWN0RXJyb3JNZXNzYWdlKGUpKTsgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5kZXhPZignQWRkcmVzcyBhbHJlYWR5IGluIHVzZScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgU3R1YjogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoJ0FkZHJlc3MgYWxyZWFkeSBpbiB1c2UnKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBTdHViOiAke21lc3NhZ2V9YClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgU3R1YjogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfSlcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEVycm9yTWVzc2FnZShlcnJvcjogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cblxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICByZXR1cm4gZXJyb3IubWVzc2FnZTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKGVycm9yKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VTdHViT3V0cHV0KFxuICAgIHN0dWJJbmZvOiBzdHJpbmdbXSxcbiAgICBwYXJzZWRQb3J0OiBzdHJpbmcgfCBudWxsLFxuICAgIGphdmFQcm9jZXNzOiBDaGlsZFByb2Nlc3Ncbik6IFN0dWIge1xuICAgIGNvbnN0IHVybCA9IHN0dWJJbmZvWzBdLnRyaW0oKTtcbiAgICBjb25zdCB1cmxJbmZvID0gL1xcYiguKj8pOlxcL1xcLyguKj8pOj8oWzAtOV0rKT8oXFwvLiopPyQvLmV4ZWModXJsKTtcblxuICAgIGlmICh1cmxJbmZvID09PSBudWxsIHx8ICF1cmxJbmZvWzFdIHx8ICF1cmxJbmZvWzJdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZXRlcm1pbmUgaG9zdCBhbmQgcG9ydCBmcm9tIHN0dWIgb3V0cHV0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvdG9jb2wgPSB1cmxJbmZvWzFdO1xuICAgIGNvbnN0IGhvc3QgPSB1cmxJbmZvWzJdO1xuICAgIGNvbnN0IHJlZ2V4UG9ydCA9IHVybEluZm9bM107XG4gICAgY29uc3QgcGF0aCA9IHVybEluZm9bNF0gfHwgXCJcIjtcbiAgICBjb25zdCBkZWZhdWx0UG9ydCA9IHByb3RvY29sID09PSAnaHR0cCcgPyAnODAnIDogcHJvdG9jb2wgPT09ICdodHRwcycgPyAnNDQzJyA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaW5hbFBvcnQgPSBwYXJzZWRQb3J0ID8/IHJlZ2V4UG9ydCA/PyBkZWZhdWx0UG9ydDtcblxuICAgIGlmICghZmluYWxQb3J0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZXRlcm1pbmUgcG9ydCBmcm9tIHN0dWIgb3V0cHV0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgcG9ydE51bWJlciA9IE51bWJlci5wYXJzZUludChmaW5hbFBvcnQsIDEwKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHBvcnROdW1iZXIpIHx8IHBvcnROdW1iZXIgPD0gMCB8fCBwb3J0TnVtYmVyID4gNjU1MzUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3J0OiAke2ZpbmFsUG9ydH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5hbFVybCA9IGAke3Byb3RvY29sfTovLyR7aG9zdH06JHtmaW5hbFBvcnR9JHtwYXRofWA7XG4gICAgcmV0dXJuIG5ldyBTdHViKGhvc3QsIE51bWJlci5wYXJzZUludChmaW5hbFBvcnQpLCBmaW5hbFVybCwgamF2YVByb2Nlc3MpO1xufVxuXG5jb25zdCBzdG9wU3R1YiA9IGFzeW5jIChzdHViOiBTdHViKSA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBTdHViOiBTdG9wcGluZyBzZXJ2ZXIgYXQgJHtzdHViLnVybH1gKVxuICAgIGNvbnN0IGphdmFQcm9jZXNzID0gc3R1Yi5wcm9jZXNzXG4gICAgamF2YVByb2Nlc3Muc3Rkb3V0Py5yZW1vdmVBbGxMaXN0ZW5lcnMoKVxuICAgIGphdmFQcm9jZXNzLnN0ZGVycj8ucmVtb3ZlQWxsTGlzdGVuZXJzKClcbiAgICBqYXZhUHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2Nsb3NlJylcbiAgICBsb2dnZXIuZGVidWcoJ1RyeWluZyB0byBzdG9wIHN0dWIgcHJvY2VzcyBncmFjZWZ1bGx5IC4uLicpXG4gICAgYXdhaXQgZ3JhY2VmdWxTaHV0ZG93bihqYXZhUHJvY2VzcylcbiAgICBsb2dnZXIuZGVidWcoJ0NvbXBsZXRlZCBncmFjZWZ1bCB0ZXJtaW5hdGlvbiBvZiB0aGUgc3R1YiBwcm9jZXNzJylcbiAgICBsb2dnZXIuaW5mbyhgU3R1YjogU3RvcHBlZCBzZXJ2ZXIgYXQgJHtzdHViLnVybH1gKVxufVxuXG5jb25zdCB0ZXN0V2l0aEFwaUNvdmVyYWdlID0gYXN5bmMgKFxuICAgIGV4cHJlc3NBcHA6IGFueSxcbiAgICBob3N0Pzogc3RyaW5nLFxuICAgIHBvcnQ/OiBudW1iZXIsXG4gICAgY29udHJhY3RQYXRoPzogc3RyaW5nLFxuICAgIGFyZ3M/OiAoc3RyaW5nIHwgbnVtYmVyKVtdXG4pOiBQcm9taXNlPHsgW2s6IHN0cmluZ106IG51bWJlciB9IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBhcGlDb3ZlcmFnZVNlcnZlciA9IGF3YWl0IHN0YXJ0QXBpQ292ZXJhZ2VTZXJ2ZXIoZXhwcmVzc0FwcClcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRlc3QoaG9zdCwgcG9ydCwgY29udHJhY3RQYXRoLCBhcmdzKVxuICAgICAgICBhcGlDb3ZlcmFnZVNlcnZlci5jbG9zZSgoKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdHMpXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgdGVzdCA9IChob3N0Pzogc3RyaW5nLCBwb3J0PzogbnVtYmVyLCBjb250cmFjdFBhdGg/OiBzdHJpbmcsIGFyZ3M/OiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogUHJvbWlzZTx7IFtrOiBzdHJpbmddOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGNvbnN0IHNwZWNzUGF0aCA9IHBhdGgucmVzb2x2ZShjb250cmFjdFBhdGggKyAnJylcblxuICAgIGNvbnN0IGNtZCA9IFtgdGVzdGBdXG4gICAgaWYgKGNvbnRyYWN0UGF0aCkgY21kLnB1c2goc3BlY3NQYXRoKVxuICAgIGNtZC5wdXNoKCctLWp1bml0UmVwb3J0RGlyPWRpc3QvdGVzdC1yZXBvcnQnKVxuICAgIGlmIChob3N0KSBjbWQucHVzaChgLS1ob3N0PSR7aG9zdH1gKVxuICAgIGlmIChwb3J0KSBjbWQucHVzaChgLS1wb3J0PSR7cG9ydH1gKVxuICAgIGlmIChhcmdzKSBjbWQucHVzaCguLi5hcmdzLm1hcChhcmcgPT4gU3RyaW5nKGFyZykpKVxuXG4gICAgbG9nZ2VyLmluZm8oJ1Rlc3Q6IFJ1bm5pbmcnKVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGVzdDogRXhlY3V0aW5nIFwiJHtjbWR9XCJgKVxuXG4gICAgY29uc3QgcmVwb3J0RGlyID0gcGF0aC5yZXNvbHZlKCdkaXN0L3Rlc3QtcmVwb3J0JylcbiAgICBmcy5ybVN5bmMocmVwb3J0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgX3JlamVjdCkgPT4ge1xuICAgICAgICBjYWxsQ29yZShcbiAgICAgICAgICAgIGNtZCxcbiAgICAgICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIGxvZ2dlci5lcnJvcihgVGVzdDogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgICAgICAgICB2YXIgdGVzdENhc2VzID0gcGFyc2VKdW5pdFhNTCgpXG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSB0ZXN0Q2FzZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgY29uc3QgZmFpbHVyZSA9IHRlc3RDYXNlcy5maWx0ZXIoKHRlc3RjYXNlOiB7IFtpZDogc3RyaW5nXTogYW55IH0pID0+IHRlc3RjYXNlWydmYWlsdXJlJ10gfHwgdGVzdGNhc2VbJ3NraXBwZWQnXSkubGVuZ3RoXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IHRvdGFsIC0gZmFpbHVyZVxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB7IHRvdGFsLCBzdWNjZXNzLCBmYWlsdXJlIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAobWVzc2FnZSwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pbmRleE9mKCdBUEkgQ09WRVJBR0UgU1VNTUFSWScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobWVzc2FnZSkgLy9Mb2cgYWx3YXlzIGZvciBhbGwgbG9nIGxldmVsc1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlcltlcnJvciA/ICdlcnJvcicgOiAnZGVidWcnXShgVGVzdDogJHttZXNzYWdlfWApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfSlcbn1cblxuY29uc3Qgc2hvd1Rlc3RSZXN1bHRzID0gKHRlc3RGbjogKG5hbWU6IHN0cmluZywgY2I6ICgpID0+IHZvaWQpID0+IHZvaWQpID0+IHtcbiAgICB2YXIgdGVzdENhc2VzID0gcGFyc2VKdW5pdFhNTCgpXG4gICAgdGVzdENhc2VzLm1hcChmdW5jdGlvbiAodGVzdGNhc2U6IHsgW2lkOiBzdHJpbmddOiBhbnkgfSkge1xuICAgICAgICB2YXIgbmFtZSA9ICdObyBOYW1lJ1xuICAgICAgICBpZiAodGVzdGNhc2VbJ3N5c3RlbS1vdXQnXSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZVRlbXBBcnIgPSB0ZXN0Y2FzZVsnc3lzdGVtLW91dCddXG4gICAgICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXG4vZywgJycpXG4gICAgICAgICAgICAgICAgLnNwbGl0KC9kaXNwbGF5LW5hbWU6LipTY2VuYXJpbzogLylcbiAgICAgICAgICAgIGlmIChuYW1lVGVtcEFyci5sZW5ndGggPiAxKSBuYW1lID0gbmFtZVRlbXBBcnJbMV0udHJpbSgpXG4gICAgICAgIH1cbiAgICAgICAgdGVzdEZuKG5hbWUsICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0ZXN0Y2FzZS5mYWlsdXJlIHx8IHRlc3RjYXNlLnNraXBwZWQpIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBwYXNzJylcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5jb25zdCBzZXRFeHBlY3RhdGlvbnMgPSAoc3R1YlBhdGg6IHN0cmluZywgc3R1YlNlcnZlckJhc2VVcmw/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBzdHViUmVzcG9uc2UgPSByZXF1aXJlKHBhdGgucmVzb2x2ZShzdHViUGF0aCkpXG4gICAgcmV0dXJuIHNldEV4cGVjdGF0aW9uSnNvbihzdHViUmVzcG9uc2UsIHN0dWJTZXJ2ZXJCYXNlVXJsKVxufVxuXG5jb25zdCBzZXRFeHBlY3RhdGlvbkpzb24gPSAoc3R1YlJlc3BvbnNlOiBhbnksIHN0dWJTZXJ2ZXJCYXNlVXJsPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgc3R1YlNlcnZlckJhc2VVcmwgPSBzdHViU2VydmVyQmFzZVVybCB8fCAnaHR0cDovL2xvY2FsaG9zdDo5MDAwJ1xuXG4gICAgbG9nZ2VyLmluZm8oYFNldCBFeHBlY3RhdGlvbnM6IFN0dWIgdXJsIGlzICR7c3R1YlNlcnZlckJhc2VVcmx9YClcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgICAucG9zdChgJHtzdHViU2VydmVyQmFzZVVybH0vX3NwZWNtYXRpYy9leHBlY3RhdGlvbnNgLCBzdHViUmVzcG9uc2UpXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBTZXQgRXhwZWN0YXRpb25zOiAke3Jlc3BvbnNlLmRhdGF9YClcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnU2V0IEV4cGVjdGF0aW9uczogRmluaXNoZWQnKVxuICAgICAgICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBzZXRFeHBlY3RhdGlvbnNFcnJvck1lc3NhZ2UgPSBgU2V0IEV4cGVjdGF0aW9uczogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YFxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSByZXNwb25zZSBkYXRhIGlzIGluIHRleHQgZm9ybWF0XG4gICAgICAgICAgICAgICAgaWYgKGVyciAmJiBlcnIucmVzcG9uc2U/LmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID09PSAndGV4dC9wbGFpbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZSBhIGNoZWNrIHRvIGhhbmRsZSB0ZXh0IGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yVGV4dCA9IHR5cGVvZiBlcnIucmVzcG9uc2UuZGF0YSA9PT0gJ3N0cmluZycgPyBlcnIucmVzcG9uc2UuZGF0YSA6IFwiRXJyb3IgdGV4dCBub3QgYXZhaWxhYmxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFeHBlY3RhdGlvbnNFcnJvck1lc3NhZ2UgKz0gYCAtICR7ZXJyb3JUZXh0fWA7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcIkZhaWxlZCB0byByZXRyaWV2ZSB0ZXh0IGVycm9yIG1lc3NhZ2UuXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzZXRFeHBlY3RhdGlvbnNFcnJvck1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgcmVqZWN0KHNldEV4cGVjdGF0aW9uc0Vycm9yTWVzc2FnZSlcbiAgICAgICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgcHJpbnRKYXJWZXJzaW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IGNtZCA9IFtgLS12ZXJzaW9uYF1cbiAgICBsb2dnZXIuaW5mbygnUHJpbnQgSmFyIFZlcnNpb246IFJ1bm5pbmcnKVxuICAgIGxvZ2dlci5kZWJ1ZyhgUHJpbnQgSmFyIFZlcnNpb246IEV4ZWN1dGluZyBcIiR7Y21kfVwiYClcblxuICAgIGNhbGxDb3JlKFxuICAgICAgICBjbWQsXG4gICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikgbG9nZ2VyLmVycm9yKGBQcmludCBKYXIgVmVyc2lvbjogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgfSxcbiAgICAgICAgKG1lc3NhZ2UsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIGxvZ2dlci5lcnJvcihgUHJpbnQgSmFyIFZlcnNpb246ICR7bWVzc2FnZX1gKVxuICAgICAgICAgICAgZWxzZSBjb25zb2xlLmxvZyhgJHttZXNzYWdlfWApXG4gICAgICAgIH1cbiAgICApXG59XG5cbmNvbnN0IHN0YXJ0QXBpQ292ZXJhZ2VTZXJ2ZXIgPSAoZXhwcmVzc0FwcDogYW55KTogUHJvbWlzZTxodHRwLlNlcnZlcj4gPT4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgUmVnaXN0ZXJpbmcgQVBJIGVuZHBvaW50IGZvciBjb3ZlcmFnZWApXG4gICAgbGV0IGFwcCA9IGh0dHAuY3JlYXRlU2VydmVyKChfcmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KVxuICAgICAgICBjb25zdCBlbmRQb2ludHMgPSBKU09OLnN0cmluZ2lmeShleHRyYWN0RW5kUG9pbnRzKGV4cHJlc3NBcHApKVxuICAgICAgICBsb2dnZXIuZGVidWcoYEVuZHBvaW50czogJHtlbmRQb2ludHN9YClcbiAgICAgICAgcmVzLmVuZChlbmRQb2ludHMpXG4gICAgfSlcbiAgICByZXR1cm4gbmV3IFByb21pc2U8aHR0cC5TZXJ2ZXI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYXBwLm9uKCdlcnJvcicsIGVyciA9PiB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHN0YXJ0aW5nIGVuZCBwb2ludHMgc2VydmVyIGZvciBhcGkgY292ZXJhZ2UnLCBlcnIpXG4gICAgICAgICAgICByZWplY3QoJ0Vycm9yIHdoaWxlIHN0YXJ0aW5nIGVuZCBwb2ludHMgc2VydmVyIGZvciBhcGkgY292ZXJhZ2UnKVxuICAgICAgICB9KVxuICAgICAgICBhcHAubGlzdGVuKHsgaG9zdDogJzEyNy4wLjAuMScsIHBvcnQ6IDAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWRkcmVzcyA9IGFwcC5hZGRyZXNzKCkgYXMgQWRkcmVzc0luZm8gfCBudWxsXG4gICAgICAgICAgICBwcm9jZXNzLmVudlsnZW5kcG9pbnRzQVBJJ10gPSBgaHR0cDovLyR7YWRkcmVzcz8uYWRkcmVzc306JHthZGRyZXNzPy5wb3J0fWBcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBFbmRwb2ludHMgQVBJIHJlZ2lzdGVyZWQgYXQgJHtwcm9jZXNzLmVudlsnZW5kcG9pbnRzQVBJJ119YClcbiAgICAgICAgICAgIHJlc29sdmUoYXBwKVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmNvbnN0IHBhcnNlSnVuaXRYTUwgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVwb3J0UGF0aCA9IHBhdGgucmVzb2x2ZSgnZGlzdC90ZXN0LXJlcG9ydC9URVNULWp1bml0LWp1cGl0ZXIueG1sJylcbiAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyhyZXBvcnRQYXRoKVxuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBYTUxQYXJzZXIoKVxuICAgIHZhciByZXN1bHRYbWwgPSBwYXJzZXIucGFyc2UoZGF0YSlcbiAgICByZXN1bHRYbWwudGVzdHN1aXRlLnRlc3RjYXNlID0gQXJyYXkuaXNBcnJheShyZXN1bHRYbWwudGVzdHN1aXRlLnRlc3RjYXNlKSA/IHJlc3VsdFhtbC50ZXN0c3VpdGUudGVzdGNhc2UgOiBbcmVzdWx0WG1sLnRlc3RzdWl0ZS50ZXN0Y2FzZV1cbiAgICByZXR1cm4gcmVzdWx0WG1sLnRlc3RzdWl0ZS50ZXN0Y2FzZVxufVxuXG5jb25zdCBsaXN0RW5kUG9pbnRzID0gKGV4cHJlc3NBcHA6IGFueSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9PiB7XG4gICAgY29uc3QgZGV0YWlscyA9IGxpc3RFeHByZXNzRW5kcG9pbnRzKGV4cHJlc3NBcHApXG4gICAgbGV0IGVuZFBvaW50czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge31cbiAgICBkZXRhaWxzLm1hcChhcGlEZXRhaWwgPT4ge1xuICAgICAgICBlbmRQb2ludHNbYXBpRGV0YWlsLnBhdGhdID0gYXBpRGV0YWlsLm1ldGhvZHNcbiAgICB9KVxuICAgIGRlbGV0ZSBlbmRQb2ludHNbJyonXVxuICAgIHJldHVybiBlbmRQb2ludHNcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEVuZFBvaW50cyhleHByZXNzQXBwOiBhbnkpIHtcbiAgICBsZXQgZW5kUG9pbnRzID0gbGlzdEVuZFBvaW50cyhleHByZXNzQXBwKVxuICAgIGxldCBzcHJpbmdBY3R1YXRvclBheWxvYWQgPSB7XG4gICAgICAgIGNvbnRleHRzOiB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbjoge1xuICAgICAgICAgICAgICAgIG1hcHBpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXJTZXJ2bGV0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlclNlcnZsZXQ6IFtdLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH1cbiAgICBPYmplY3Qua2V5cyhlbmRQb2ludHMpXG4gICAgICAgIC5zb3J0KClcbiAgICAgICAgLm1hcChwYXRoID0+IHtcbiAgICAgICAgICAgIHNwcmluZ0FjdHVhdG9yUGF5bG9hZC5jb250ZXh0cy5hcHBsaWNhdGlvbi5tYXBwaW5ncy5kaXNwYXRjaGVyU2VydmxldHMuZGlzcGF0Y2hlclNlcnZsZXQucHVzaCh7XG4gICAgICAgICAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0TWFwcGluZ0NvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZHM6IGVuZFBvaW50c1twYXRoXS5zb3J0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuczogW2NvbnZlcnRFbmRwb2ludFRvU3ByaW5nU3ludGF4KHBhdGgpXS5tYXAocmVtb3ZlUmVnZXhGcm9tUGF0aClcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSBhcyBuZXZlcilcbiAgICAgICAgfSlcbiAgICByZXR1cm4gc3ByaW5nQWN0dWF0b3JQYXlsb2FkXG59XG5cbmNvbnN0IGNvbnZlcnRFbmRwb2ludFRvU3ByaW5nU3ludGF4ID0gKHBhdGg6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBwYXRoLnJlcGxhY2UoLzooW14vXSspL2csICd7JDF9JykucmVwbGFjZSgvXFxcXC9nLCAnJylcbn1cblxuY29uc3QgcmVtb3ZlUmVnZXhGcm9tUGF0aCA9IChwYXRoOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gcGF0aC5yZXBsYWNlKC9cXChbXigpXSpcXCkvZywgJycpXG59XG5cbmV4cG9ydCB7IHN0YXJ0U3R1Yiwgc3RvcFN0dWIsIHRlc3QsIHRlc3RXaXRoQXBpQ292ZXJhZ2UsIHNldEV4cGVjdGF0aW9ucywgc2V0RXhwZWN0YXRpb25Kc29uLCBwcmludEphclZlcnNpb24sIHNob3dUZXN0UmVzdWx0cyB9XG5leHBvcnQgeyBzdGFydEFwaUNvdmVyYWdlU2VydmVyIH1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsY0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsR0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0scUJBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLEtBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFRLGNBQUEsR0FBQVIsT0FBQTtBQUFrRCxTQUFBRCx1QkFBQVUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQUUsUUFBQUMsQ0FBQSxzQ0FBQUQsT0FBQSx3QkFBQUUsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLENBQUEsa0JBQUFBLENBQUEsZ0JBQUFBLENBQUEsV0FBQUEsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBRCxDQUFBLENBQUFHLFdBQUEsS0FBQUYsTUFBQSxJQUFBRCxDQUFBLEtBQUFDLE1B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
@@ -1,22 +1,22 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.gracefulShutdown = void 0;
8
7
  var _logger = _interopRequireDefault(require("../common/logger"));
9
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
9
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
10
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
11
11
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
12
12
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
13
13
  var kill = require('tree-kill');
14
14
  var gracefulShutdown = exports.gracefulShutdown = /*#__PURE__*/function () {
15
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(javaProcess) {
16
- return _regeneratorRuntime().wrap(function _callee$(_context) {
17
- while (1) switch (_context.prev = _context.next) {
15
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(javaProcess) {
16
+ return _regenerator().w(function (_context) {
17
+ while (1) switch (_context.n) {
18
18
  case 0:
19
- return _context.abrupt("return", new Promise(function (resolve, reject) {
19
+ return _context.a(2, new Promise(function (resolve, reject) {
20
20
  _logger["default"].info('Sending SIGTERM to stop stub process');
21
21
  kill(javaProcess.pid, 'SIGTERM', function (err) {
22
22
  if (err) {
@@ -28,9 +28,6 @@ var gracefulShutdown = exports.gracefulShutdown = /*#__PURE__*/function () {
28
28
  }
29
29
  });
30
30
  }));
31
- case 1:
32
- case "end":
33
- return _context.stop();
34
31
  }
35
32
  }, _callee);
36
33
  }));
@@ -38,4 +35,4 @@ var gracefulShutdown = exports.gracefulShutdown = /*#__PURE__*/function () {
38
35
  return _ref.apply(this, arguments);
39
36
  };
40
37
  }();
41
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsImtpbGwiLCJncmFjZWZ1bFNodXRkb3duIiwiZXhwb3J0cyIsIl9yZWYiLCJfY2FsbGVlIiwiamF2YVByb2Nlc3MiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicmVqZWN0IiwibG9nZ2VyIiwiaW5mbyIsInBpZCIsImVyciIsImRlYnVnIiwiX3giXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9zaHV0ZG93blV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoaWxkUHJvY2VzcyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IG5vZGVQcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgdGVybWluYXRlIGZyb20gJ3Rlcm1pbmF0ZS9wcm9taXNlJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vY29tbW9uL2xvZ2dlcidcbmNvbnN0IGtpbGwgPSByZXF1aXJlKCd0cmVlLWtpbGwnKTtcblxuZXhwb3J0IGNvbnN0IGdyYWNlZnVsU2h1dGRvd24gPSBhc3luYyBmdW5jdGlvbiAoamF2YVByb2Nlc3M6IENoaWxkUHJvY2Vzcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvZ2dlci5pbmZvKCdTZW5kaW5nIFNJR1RFUk0gdG8gc3RvcCBzdHViIHByb2Nlc3MnKVxuICAgICAgICBraWxsKGphdmFQcm9jZXNzLnBpZCwgJ1NJR1RFUk0nLCAoZXJyOkVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZihlcnIpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0ZhaWxlZCB0byBzZW5kIFNJR1RFUk0gdG8gc3R1YiBwcm9jZXNzIHRyZWU6JywgZXJyKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnU0lHVEVSTSBzZW50IHN1Y2Nlc3NmdWxseSB0byBzdHViIHByb2Nlc3MgdHJlZScpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFxQyxTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQUUsb0JBQUEsa0JBRnJDLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBRixDQUFBLFNBQUFHLENBQUEsRUFBQUgsQ0FBQSxPQUFBSSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFILENBQUEsRUFBQUksQ0FBQSxJQUFBRCxDQUFBLENBQUFILENBQUEsSUFBQUksQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFB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
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsIl9yZWdlbmVyYXRvciIsInQiLCJyIiwiU3ltYm9sIiwibiIsIml0ZXJhdG9yIiwibyIsInRvU3RyaW5nVGFnIiwiaSIsImMiLCJwcm90b3R5cGUiLCJHZW5lcmF0b3IiLCJ1IiwiT2JqZWN0IiwiY3JlYXRlIiwiX3JlZ2VuZXJhdG9yRGVmaW5lMiIsImYiLCJwIiwieSIsIkciLCJ2IiwiYSIsImQiLCJiaW5kIiwibGVuZ3RoIiwibCIsIlR5cGVFcnJvciIsImNhbGwiLCJkb25lIiwidmFsdWUiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwidyIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsIl9yZWdlbmVyYXRvckRlZmluZSIsIl9pbnZva2UiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJraWxsIiwiZ3JhY2VmdWxTaHV0ZG93biIsImV4cG9ydHMiLCJfcmVmIiwiX2NhbGxlZSIsImphdmFQcm9jZXNzIiwiX2NvbnRleHQiLCJyZWplY3QiLCJsb2dnZXIiLCJpbmZvIiwicGlkIiwiZXJyIiwiZGVidWciLCJfeCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3NodXRkb3duVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgbm9kZVByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCB0ZXJtaW5hdGUgZnJvbSAndGVybWluYXRlL3Byb21pc2UnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9jb21tb24vbG9nZ2VyJ1xuY29uc3Qga2lsbCA9IHJlcXVpcmUoJ3RyZWUta2lsbCcpO1xuXG5leHBvcnQgY29uc3QgZ3JhY2VmdWxTaHV0ZG93biA9IGFzeW5jIGZ1bmN0aW9uIChqYXZhUHJvY2VzczogQ2hpbGRQcm9jZXNzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbG9nZ2VyLmluZm8oJ1NlbmRpbmcgU0lHVEVSTSB0byBzdG9wIHN0dWIgcHJvY2VzcycpXG4gICAgICAgIGtpbGwoamF2YVByb2Nlc3MucGlkLCAnU0lHVEVSTScsIChlcnI6RXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmKGVycikge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnRmFpbGVkIHRvIHNlbmQgU0lHVEVSTSB0byBzdHViIHByb2Nlc3MgdHJlZTonLCBlcnIpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdTSUdURVJNIHNlbnQgc3VjY2Vzc2Z1bGx5IHRvIHN0dWIgcHJvY2VzcyB0cmVlJyk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBcUMsU0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLGFBQUEsSUFGckMsdUtBQUFGLENBQUEsRUFBQUcsQ0FBQSxFQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFB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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "specmatic",
3
- "version": "2.24.0",
4
- "specmaticVersion": "2.24.0",
3
+ "version": "2.27.0",
4
+ "specmaticVersion": "2.27.0",
5
5
  "description": "Node wrapper for Specmatic",
6
6
  "main": "dist/index.js",
7
7
  "scripts": {
@@ -44,8 +44,8 @@
44
44
  "logLevel": "debug"
45
45
  },
46
46
  "dependencies": {
47
- "axios": "^1.7.7",
48
47
  "fast-xml-parser": "^4.5.0",
48
+ "shell-quote": "^1.8.3",
49
49
  "terminate": "^2.8.0",
50
50
  "tree-kill": "^1.2.2",
51
51
  "winston": "^3.14.2"
@@ -60,11 +60,13 @@
60
60
  "@types/jest": "^29.5.13",
61
61
  "@types/jest-when": "^3.5.5",
62
62
  "@types/node": "^22.7.2",
63
+ "@types/shell-quote": "^1.7.5",
63
64
  "@types/supertest": "^6.0.2",
65
+ "axios": "^1.12.2",
64
66
  "express": "^4.21.0",
65
67
  "jest": "^29.7.0",
66
68
  "jest-extended": "^6.0.0",
67
- "jest-mock-extended": "^3.0.7",
69
+ "jest-mock-extended": "^4.0.0",
68
70
  "jest-when": "^3.6.0",
69
71
  "rimraf": "^6.0.1",
70
72
  "supertest": "^7.0.0",
package/specmatic.jar CHANGED
Binary file
@@ -8,6 +8,7 @@ import { Readable } from 'stream';
8
8
 
9
9
  jest.mock('child_process');
10
10
 
11
+ const mockSpawn = spawn as jest.MockedFunction<typeof spawn>;
11
12
  const javaProcessMock = jestMock<ChildProcess>();
12
13
  const readableMock = jestMock<Readable>();
13
14
  javaProcessMock.stdout = readableMock;
@@ -18,12 +19,96 @@ beforeEach(() => {
18
19
  });
19
20
 
20
21
  test('passes arguments to the jar', async () => {
21
- spawn.mockReturnValue(javaProcessMock);
22
+ mockSpawn.mockReturnValue(javaProcessMock);
22
23
 
23
24
  jest.spyOn(fs, 'existsSync').mockReturnValue(true);
24
- const testArgs = ['test', '--testBaseURL', 'http://localhost:9000', `--filter=PATH='/todos/add' || STATUS='404'`, '--foo=bar', 1, 2];
25
+ const testArgs = ['test', '--testBaseURL', 'http://localhost:9000', `--filter=PATH='/todos/add' || STATUS='404'`, '--foo=bar', '1', '2'];
25
26
  callSpecmaticCli(testArgs);
26
27
  const specmaticJarPath = path.resolve(__dirname, '..', '..', '..', specmaticCoreJarName);
27
- expect(spawn.mock.calls[0][0]).toBe(`java`);
28
- expect(spawn.mock.calls[0][1]).toEqual([`-jar`, path.resolve(specmaticJarPath), `test`, `--testBaseURL`, `http://localhost:9000`, `--filter=PATH='/todos/add' || STATUS='404'`, `--foo=bar`, `1`, `2`]);
28
+ expect(mockSpawn.mock.calls[0][0]).toBe(`java`);
29
+ expect(mockSpawn.mock.calls[0][1]).toEqual([`-jar`, path.resolve(specmaticJarPath), `test`, `--testBaseURL`, `http://localhost:9000`, `--filter=PATH='/todos/add' || STATUS='404'`, `--foo=bar`, `1`, `2`]);
30
+ });
31
+
32
+ test('parses JAVA_OPTS and stops at shell operators', async () => {
33
+ mockSpawn.mockReturnValue(javaProcessMock);
34
+ jest.spyOn(fs, 'existsSync').mockReturnValue(true);
35
+
36
+ // Set JAVA_OPTS with shell operators
37
+ const originalJavaOpts = process.env.JAVA_OPTS;
38
+ process.env.JAVA_OPTS = '-Xmx1024m -Dtest=value > output.log';
39
+
40
+ try {
41
+ callSpecmaticCli(['test']);
42
+ const specmaticJarPath = path.resolve(__dirname, '..', '..', '..', specmaticCoreJarName);
43
+
44
+ // Should only include JVM args before the shell operator
45
+ expect(mockSpawn.mock.calls[0][1]).toEqual([
46
+ '-Xmx1024m',
47
+ '-Dtest=value',
48
+ '-jar',
49
+ path.resolve(specmaticJarPath),
50
+ 'test'
51
+ ]);
52
+ } finally {
53
+ // Restore original JAVA_OPTS
54
+ if (originalJavaOpts !== undefined) {
55
+ process.env.JAVA_OPTS = originalJavaOpts;
56
+ } else {
57
+ delete process.env.JAVA_OPTS;
58
+ }
59
+ }
60
+ });
61
+
62
+ test('parses JAVA_OPTS with quotes and stops at comments', async () => {
63
+ mockSpawn.mockReturnValue(javaProcessMock);
64
+ jest.spyOn(fs, 'existsSync').mockReturnValue(true);
65
+
66
+ const originalJavaOpts = process.env.JAVA_OPTS;
67
+ process.env.JAVA_OPTS = '-Xmx512m -Dmy.prop="quoted value" # this is a comment';
68
+
69
+ try {
70
+ callSpecmaticCli(['test']);
71
+ const specmaticJarPath = path.resolve(__dirname, '..', '..', '..', specmaticCoreJarName);
72
+
73
+ // Should only include JVM args before the comment
74
+ expect(mockSpawn.mock.calls[0][1]).toEqual([
75
+ '-Xmx512m',
76
+ '-Dmy.prop=quoted value',
77
+ '-jar',
78
+ path.resolve(specmaticJarPath),
79
+ 'test'
80
+ ]);
81
+ } finally {
82
+ if (originalJavaOpts !== undefined) {
83
+ process.env.JAVA_OPTS = originalJavaOpts;
84
+ } else {
85
+ delete process.env.JAVA_OPTS;
86
+ }
87
+ }
88
+ });
89
+
90
+ test('handles empty JAVA_OPTS', async () => {
91
+ mockSpawn.mockReturnValue(javaProcessMock);
92
+ jest.spyOn(fs, 'existsSync').mockReturnValue(true);
93
+
94
+ const originalJavaOpts = process.env.JAVA_OPTS;
95
+ process.env.JAVA_OPTS = '';
96
+
97
+ try {
98
+ callSpecmaticCli(['test']);
99
+ const specmaticJarPath = path.resolve(__dirname, '..', '..', '..', specmaticCoreJarName);
100
+
101
+ // Should only include the jar and test args (no JVM args)
102
+ expect(mockSpawn.mock.calls[0][1]).toEqual([
103
+ '-jar',
104
+ path.resolve(specmaticJarPath),
105
+ 'test'
106
+ ]);
107
+ } finally {
108
+ if (originalJavaOpts !== undefined) {
109
+ process.env.JAVA_OPTS = originalJavaOpts;
110
+ } else {
111
+ delete process.env.JAVA_OPTS;
112
+ }
113
+ }
29
114
  });
@@ -1,8 +1,22 @@
1
+ import { parse } from 'shell-quote';
1
2
  import logger from '../common/logger'
2
3
  import { callCore} from '../common/runner'
3
4
 
4
5
  const callSpecmaticCli = (argsv?: string[]) => {
5
6
  const args = argsv || process.argv.slice(2);
7
+
8
+ // Parse JAVA_OPTS and take only string arguments from the beginning until we hit a non-string
9
+ const parsedArgs = parse(process.env.JAVA_OPTS || '');
10
+ const jvmArgs: string[] = [];
11
+ for (const arg of parsedArgs) {
12
+ if (typeof arg === 'string') {
13
+ jvmArgs.push(arg);
14
+ } else {
15
+ // Stop processing when we encounter a non-string (shell operator, comment, etc.)
16
+ break;
17
+ }
18
+ }
19
+
6
20
  callCore(
7
21
  args,
8
22
  (err?: any) => {
@@ -16,7 +30,8 @@ const callSpecmaticCli = (argsv?: string[]) => {
16
30
  },
17
31
  message => {
18
32
  console.log(`${message}`)
19
- }
33
+ },
34
+ jvmArgs
20
35
  );
21
36
  }
22
37
 
@@ -4,14 +4,14 @@ import { specmaticCoreJarName } from '../config';
4
4
  import logger from '../common/logger';
5
5
  import { ChildProcess, exec, spawn, SpawnOptions } from 'child_process';
6
6
 
7
- const callCore = (args: (string | number)[], done: (error: any) => void, onOutput: (message: string, error: boolean) => void): ChildProcess => {
7
+ const callCore = (args: (string | number)[], done: (error: any) => void, onOutput: (message: string, error: boolean) => void, jvmArgs: string[] = []): ChildProcess => {
8
8
  const rootPath = path.resolve(__dirname, '..', '..');
9
9
  const specmaticJarPath = path.resolve(rootPath, specmaticCoreJarName);
10
- return callJar(specmaticJarPath, args, done, onOutput);
10
+ return callJar(specmaticJarPath, args, done, onOutput, jvmArgs);
11
11
  };
12
12
 
13
- function callJar(jarPath: string, args: (string | number)[], done: (error: any) => void, onOutput: (message: string, error: boolean) => void) {
14
- const argsList: string[] = [];
13
+ function callJar(jarPath: string, args: (string | number)[], done: (error: any) => void, onOutput: (message: string, error: boolean) => void, jvmArgs: string[] = []): ChildProcess {
14
+ const argsList: string[] = [...jvmArgs];
15
15
  if (process.env['endpointsAPI']) {
16
16
  argsList.push(`-DendpointsAPI="${process.env['endpointsAPI']}"`);
17
17
  }