specmatic 2.13.1 → 2.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/test.yml +2 -1
- package/README.md +2 -39
- package/dist/bin/command.line.d.ts +1 -1
- package/dist/bin/command.line.js +4 -48
- package/dist/common/runner.d.ts +2 -4
- package/dist/common/runner.js +17 -17
- package/dist/config.d.ts +0 -2
- package/dist/config.js +2 -4
- package/dist/core/index.js +22 -12
- package/dist/index.d.ts +0 -2
- package/dist/index.js +1 -75
- package/package.json +3 -6
- package/specmatic.jar +0 -0
- package/src/bin/__tests__/command.line.ts +5 -83
- package/src/bin/command.line.ts +5 -34
- package/src/common/runner.ts +12 -23
- package/src/config.ts +0 -2
- package/src/core/__tests__/print.jar.version.ts +2 -2
- package/src/core/__tests__/stub.ts +38 -46
- package/src/core/__tests__/test.ts +10 -10
- package/src/core/index.ts +16 -16
- package/src/index.ts +0 -16
- package/dist/graphql/index.d.ts +0 -11
- package/dist/graphql/index.js +0 -126
- package/dist/kafka/index.d.ts +0 -13
- package/dist/kafka/index.js +0 -152
- package/src/graphql/index.ts +0 -114
- package/src/kafka/__tests__/kafkaStub.ts +0 -62
- package/src/kafka/index.ts +0 -140
package/dist/core/index.js
CHANGED
|
@@ -18,6 +18,12 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
18
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; }
|
|
19
19
|
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
20
|
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
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
22
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
23
|
+
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; } }
|
|
24
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
25
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
26
|
+
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; }
|
|
21
27
|
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
22
28
|
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
23
29
|
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
@@ -38,10 +44,12 @@ var Stub = exports.Stub = /*#__PURE__*/_createClass(function Stub(host, port, ur
|
|
|
38
44
|
this.process = process;
|
|
39
45
|
});
|
|
40
46
|
var startStub = exports.startStub = function startStub(host, port, args) {
|
|
41
|
-
var cmd = "stub";
|
|
42
|
-
if (host) cmd
|
|
43
|
-
if (port) cmd
|
|
44
|
-
if (args) cmd
|
|
47
|
+
var cmd = ["stub"];
|
|
48
|
+
if (host) cmd.push("--host=".concat(host));
|
|
49
|
+
if (port) cmd.push("--port=".concat(port));
|
|
50
|
+
if (args) cmd.push.apply(cmd, _toConsumableArray(args.map(function (arg) {
|
|
51
|
+
return String(arg);
|
|
52
|
+
})));
|
|
45
53
|
_logger["default"].info('Stub: Starting server');
|
|
46
54
|
_logger["default"].debug("Stub: Executing \"".concat(cmd, "\""));
|
|
47
55
|
var parsedPort = port == null || port === 0 ? null : String(port);
|
|
@@ -181,12 +189,14 @@ var testWithApiCoverage = exports.testWithApiCoverage = /*#__PURE__*/function ()
|
|
|
181
189
|
}();
|
|
182
190
|
var test = exports.test = function test(host, port, contractPath, args) {
|
|
183
191
|
var specsPath = _path["default"].resolve(contractPath + '');
|
|
184
|
-
var cmd = "test";
|
|
185
|
-
if (contractPath) cmd
|
|
186
|
-
cmd
|
|
187
|
-
if (host) cmd
|
|
188
|
-
if (port) cmd
|
|
189
|
-
if (args) cmd
|
|
192
|
+
var cmd = ["test"];
|
|
193
|
+
if (contractPath) cmd.push(specsPath);
|
|
194
|
+
cmd.push('--junitReportDir=dist/test-report');
|
|
195
|
+
if (host) cmd.push("--host=".concat(host));
|
|
196
|
+
if (port) cmd.push("--port=".concat(port));
|
|
197
|
+
if (args) cmd.push.apply(cmd, _toConsumableArray(args.map(function (arg) {
|
|
198
|
+
return String(arg);
|
|
199
|
+
})));
|
|
190
200
|
_logger["default"].info('Test: Running');
|
|
191
201
|
_logger["default"].debug("Test: Executing \"".concat(cmd, "\""));
|
|
192
202
|
var reportDir = _path["default"].resolve('dist/test-report');
|
|
@@ -262,7 +272,7 @@ var setExpectationJson = exports.setExpectationJson = function setExpectationJso
|
|
|
262
272
|
});
|
|
263
273
|
};
|
|
264
274
|
var printJarVersion = exports.printJarVersion = function printJarVersion() {
|
|
265
|
-
var cmd = "--version";
|
|
275
|
+
var cmd = ["--version"];
|
|
266
276
|
_logger["default"].info('Print Jar Version: Running');
|
|
267
277
|
_logger["default"].debug("Print Jar Version: Executing \"".concat(cmd, "\""));
|
|
268
278
|
(0, _runner.callCore)(cmd, function (err) {
|
|
@@ -345,4 +355,4 @@ var convertEndpointToSpringSyntax = function convertEndpointToSpringSyntax(path)
|
|
|
345
355
|
var removeRegexFromPath = function removeRegexFromPath(path) {
|
|
346
356
|
return path.replace(/\([^()]*\)/g, '');
|
|
347
357
|
};
|
|
348
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wYXRoIiwiX2Zhc3RYbWxQYXJzZXIiLCJfZnMiLCJfbG9nZ2VyIiwiX3J1bm5lciIsIl9leHByZXNzTGlzdEVuZHBvaW50cyIsIl9odHRwIiwiX3NodXRkb3duVXRpbHMiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJ0IiwiciIsIk9iamVjdCIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiYSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsImZyZWVQb3J0TWVzc2FnZSIsInN0dWJTZXJ2aW5nTWVzc2FnZSIsIlN0dWIiLCJleHBvcnRzIiwiaG9zdCIsInBvcnQiLCJ1cmwiLCJwcm9jZXNzIiwic3RhcnRTdHViIiwiYXJncyIsImNtZCIsImNvbmNhdCIsImpvaW4iLCJsb2dnZXIiLCJpbmZvIiwiZGVidWciLCJwYXJzZWRQb3J0IiwicmVqZWN0IiwiamF2YVByb2Nlc3MiLCJjYWxsQ29yZSIsImVyciIsImVycm9yIiwibWVzc2FnZSIsImluZGV4T2YiLCJfcGFyc2VkUG9ydCIsInNwbGl0IiwidHJpbSIsInN0dWJJbmZvIiwic3R1YiIsInBhcnNlU3R1Yk91dHB1dCIsImV4dHJhY3RFcnJvck1lc3NhZ2UiLCJfcmVmIiwidXJsSW5mbyIsImV4ZWMiLCJwcm90b2NvbCIsInJlZ2V4UG9ydCIsInBhdGgiLCJkZWZhdWx0UG9ydCIsInVuZGVmaW5lZCIsImZpbmFsUG9ydCIsInBvcnROdW1iZXIiLCJwYXJzZUludCIsImZpbmFsVXJsIiwic3RvcFN0dWIiLCJfcmVmMiIsIl9jYWxsZWUiLCJfamF2YVByb2Nlc3Mkc3Rkb3V0IiwiX2phdmFQcm9jZXNzJHN0ZGVyciIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzdGRvdXQiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJzdGRlcnIiLCJncmFjZWZ1bFNodXRkb3duIiwiX3giLCJ0ZXN0V2l0aEFwaUNvdmVyYWdlIiwiX3JlZjMiLCJfY2FsbGVlMyIsImV4cHJlc3NBcHAiLCJjb250cmFjdFBhdGgiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlamVjdCIsImFwaUNvdmVyYWdlU2VydmVyIiwicmVzdWx0cyIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInN0YXJ0QXBpQ292ZXJhZ2VTZXJ2ZXIiLCJ0ZXN0IiwiY2xvc2UiLCJfeDciLCJfeDgiLCJfeDIiLCJfeDMiLCJfeDQiLCJfeDUiLCJfeDYiLCJzcGVjc1BhdGgiLCJyZXBvcnREaXIiLCJmcyIsInJtU3luYyIsInJlY3Vyc2l2ZSIsImZvcmNlIiwidGVzdENhc2VzIiwicGFyc2VKdW5pdFhNTCIsInRvdGFsIiwiZmFpbHVyZSIsImZpbHRlciIsInRlc3RjYXNlIiwic3VjY2VzcyIsInJlc3VsdCIsImNvbnNvbGUiLCJsb2ciLCJzaG93VGVzdFJlc3VsdHMiLCJ0ZXN0Rm4iLCJtYXAiLCJuYW1lVGVtcEFyciIsInJlcGxhY2UiLCJza2lwcGVkIiwic2V0RXhwZWN0YXRpb25zIiwic3R1YlBhdGgiLCJzdHViU2VydmVyQmFzZVVybCIsInN0dWJSZXNwb25zZSIsInNldEV4cGVjdGF0aW9uSnNvbiIsImF4aW9zIiwicG9zdCIsInJlc3BvbnNlIiwiZGF0YSIsIl9lcnIkcmVzcG9uc2UiLCJzZXRFeHBlY3RhdGlvbnNFcnJvck1lc3NhZ2UiLCJoZWFkZXJzIiwiZXJyb3JUZXh0IiwicHJpbnRKYXJWZXJzaW9uIiwiYXBwIiwiaHR0cCIsImNyZWF0ZVNlcnZlciIsIl9yZXEiLCJyZXMiLCJ3cml0ZUhlYWQiLCJlbmRQb2ludHMiLCJKU09OIiwic3RyaW5naWZ5IiwiZXh0cmFjdEVuZFBvaW50cyIsImVuZCIsIm9uIiwibGlzdGVuIiwiYWRkcmVzcyIsImVudiIsInJlcG9ydFBhdGgiLCJyZWFkRmlsZVN5bmMiLCJwYXJzZXIiLCJYTUxQYXJzZXIiLCJyZXN1bHRYbWwiLCJwYXJzZSIsInRlc3RzdWl0ZSIsIkFycmF5IiwiaXNBcnJheSIsImxpc3RFbmRQb2ludHMiLCJkZXRhaWxzIiwibGlzdEV4cHJlc3NFbmRwb2ludHMiLCJhcGlEZXRhaWwiLCJtZXRob2RzIiwic3ByaW5nQWN0dWF0b3JQYXlsb2FkIiwiY29udGV4dHMiLCJhcHBsaWNhdGlvbiIsIm1hcHBpbmdzIiwiZGlzcGF0Y2hlclNlcnZsZXRzIiwiZGlzcGF0Y2hlclNlcnZsZXQiLCJzb3J0IiwicmVxdWVzdE1hcHBpbmdDb25kaXRpb25zIiwicGF0dGVybnMiLCJjb252ZXJ0RW5kcG9pbnRUb1NwcmluZ1N5bnRheCIsInJlbW92ZVJlZ2V4RnJvbVBhdGgiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSAnY2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gJ2Zhc3QteG1sLXBhcnNlcidcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vY29tbW9uL2xvZ2dlcidcbmltcG9ydCB7IGNhbGxDb3JlIH0gZnJvbSAnLi4vY29tbW9uL3J1bm5lcidcbmltcG9ydCBsaXN0RXhwcmVzc0VuZHBvaW50cyBmcm9tICcuLi9saWIvZXhwcmVzcy1saXN0LWVuZHBvaW50cyc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJ1xuaW1wb3J0IHsgQWRkcmVzc0luZm8gfSBmcm9tICduZXQnXG5pbXBvcnQgeyBncmFjZWZ1bFNodXRkb3duIH0gZnJvbSAnLi9zaHV0ZG93blV0aWxzJ1xuXG5jb25zdCBmcmVlUG9ydE1lc3NhZ2UgPSAnRnJlZSBwb3J0IGZvdW5kJ1xuY29uc3Qgc3R1YlNlcnZpbmdNZXNzYWdlID0gJ3NlcnZpbmcgZW5kcG9pbnRzIGZyb20gc3BlY3MnXG5cbmV4cG9ydCBjbGFzcyBTdHViIHtcbiAgICBob3N0OiBzdHJpbmdcbiAgICBwb3J0OiBudW1iZXJcbiAgICB1cmw6IHN0cmluZ1xuICAgIHByb2Nlc3M6IENoaWxkUHJvY2Vzc1xuICAgIGNvbnN0cnVjdG9yKGhvc3Q6IHN0cmluZywgcG9ydDogbnVtYmVyLCB1cmw6IHN0cmluZywgcHJvY2VzczogQ2hpbGRQcm9jZXNzKSB7XG4gICAgICAgIHRoaXMuaG9zdCA9IGhvc3RcbiAgICAgICAgdGhpcy5wb3J0ID0gcG9ydFxuICAgICAgICB0aGlzLnVybCA9IHVybFxuICAgICAgICB0aGlzLnByb2Nlc3MgPSBwcm9jZXNzXG4gICAgfVxufVxuXG5jb25zdCBzdGFydFN0dWIgPSAoaG9zdD86IHN0cmluZywgcG9ydD86IG51bWJlciwgYXJncz86IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPFN0dWI+ID0+IHtcbiAgICB2YXIgY21kID0gYHN0dWJgXG4gICAgaWYgKGhvc3QpIGNtZCArPSBgIC0taG9zdD0ke2hvc3R9YFxuICAgIGlmIChwb3J0KSBjbWQgKz0gYCAtLXBvcnQ9JHtwb3J0fWBcbiAgICBpZiAoYXJncykgY21kICs9ICcgJyArIGFyZ3Muam9pbignICcpXG5cbiAgICBsb2dnZXIuaW5mbygnU3R1YjogU3RhcnRpbmcgc2VydmVyJylcbiAgICBsb2dnZXIuZGVidWcoYFN0dWI6IEV4ZWN1dGluZyBcIiR7Y21kfVwiYClcbiAgICBsZXQgcGFyc2VkUG9ydDogc3RyaW5nIHwgbnVsbCA9IHBvcnQgPT0gbnVsbCB8fCBwb3J0ID09PSAwID8gbnVsbCA6IFN0cmluZyhwb3J0KTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGphdmFQcm9jZXNzID0gY2FsbENvcmUoXG4gICAgICAgICAgICBjbWQsXG4gICAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgU3R1YjogRXhpdGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKG1lc3NhZ2UsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pbmRleE9mKGZyZWVQb3J0TWVzc2FnZSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFN0dWI6ICR7bWVzc2FnZX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkUG9ydCA9IHBhcnNlZFBvcnQgPz8gbWVzc2FnZS5zcGxpdChgJHtmcmVlUG9ydE1lc3NhZ2V9OmApWzFdLnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UuaW5kZXhPZihzdHViU2VydmluZ01lc3NhZ2UpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBTdHViOiAke21lc3NhZ2V9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0dWJJbmZvID0gbWVzc2FnZS5zcGxpdChzdHViU2VydmluZ01lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8ubGVuZ3RoIDwgMikgcmVqZWN0KCdDYW5ub3QgZGV0ZXJtaW5lIHVybCBmcm9tIHN0dWIgb3V0cHV0JylcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHViID0gcGFyc2VTdHViT3V0cHV0KHN0dWJJbmZvLCBwYXJzZWRQb3J0LCBqYXZhUHJvY2Vzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShzdHViKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGV4dHJhY3RFcnJvck1lc3NhZ2UoZSkpOyB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pbmRleE9mKCdBZGRyZXNzIGFscmVhZHkgaW4gdXNlJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBTdHViOiAke21lc3NhZ2V9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgnQWRkcmVzcyBhbHJlYWR5IGluIHVzZScpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoYFN0dWI6ICR7bWVzc2FnZX1gKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBTdHViOiAke21lc3NhZ2V9YClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIClcbiAgICB9KVxufVxuXG5mdW5jdGlvbiBleHRyYWN0RXJyb3JNZXNzYWdlKGVycm9yOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuICAgIFxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICByZXR1cm4gZXJyb3IubWVzc2FnZTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKGVycm9yKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VTdHViT3V0cHV0KFxuICAgIHN0dWJJbmZvOiBzdHJpbmdbXSxcbiAgICBwYXJzZWRQb3J0OiBzdHJpbmcgfCBudWxsLFxuICAgIGphdmFQcm9jZXNzOiBDaGlsZFByb2Nlc3Ncbik6IFN0dWIge1xuICAgIGNvbnN0IHVybCA9IHN0dWJJbmZvWzBdLnRyaW0oKTtcbiAgICBjb25zdCB1cmxJbmZvID0gL1xcYiguKj8pOlxcL1xcLyguKj8pOj8oWzAtOV0rKT8oXFwvLiopPyQvLmV4ZWModXJsKTtcbiAgICBcbiAgICBpZiAodXJsSW5mbyA9PT0gbnVsbCB8fCAhdXJsSW5mb1sxXSB8fCAhdXJsSW5mb1syXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGV0ZXJtaW5lIGhvc3QgYW5kIHBvcnQgZnJvbSBzdHViIG91dHB1dCcpO1xuICAgIH1cbiAgXG4gICAgY29uc3QgcHJvdG9jb2wgPSB1cmxJbmZvWzFdO1xuICAgIGNvbnN0IGhvc3QgPSB1cmxJbmZvWzJdO1xuICAgIGNvbnN0IHJlZ2V4UG9ydCA9IHVybEluZm9bM107XG4gICAgY29uc3QgcGF0aCA9IHVybEluZm9bNF0gfHwgXCJcIjtcbiAgICBjb25zdCBkZWZhdWx0UG9ydCA9IHByb3RvY29sID09PSAnaHR0cCcgPyAnODAnIDogcHJvdG9jb2wgPT09ICdodHRwcycgPyAnNDQzJyA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaW5hbFBvcnQgPSBwYXJzZWRQb3J0ID8/IHJlZ2V4UG9ydCA/PyBkZWZhdWx0UG9ydDtcbiAgICBcbiAgICBpZiAoIWZpbmFsUG9ydCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGV0ZXJtaW5lIHBvcnQgZnJvbSBzdHViIG91dHB1dCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcnROdW1iZXIgPSBOdW1iZXIucGFyc2VJbnQoZmluYWxQb3J0LCAxMCk7XG4gICAgaWYgKE51bWJlci5pc05hTihwb3J0TnVtYmVyKSB8fCBwb3J0TnVtYmVyIDw9IDAgfHwgcG9ydE51bWJlciA+IDY1NTM1KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcG9ydDogJHtmaW5hbFBvcnR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgZmluYWxVcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3R9OiR7ZmluYWxQb3J0fSR7cGF0aH1gO1xuICAgIHJldHVybiBuZXcgU3R1Yihob3N0LCBOdW1iZXIucGFyc2VJbnQoZmluYWxQb3J0KSwgZmluYWxVcmwsIGphdmFQcm9jZXNzKTtcbn1cblxuY29uc3Qgc3RvcFN0dWIgPSBhc3luYyAoc3R1YjogU3R1YikgPT4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgU3R1YjogU3RvcHBpbmcgc2VydmVyIGF0ICR7c3R1Yi51cmx9YClcbiAgICBjb25zdCBqYXZhUHJvY2VzcyA9IHN0dWIucHJvY2Vzc1xuICAgIGphdmFQcm9jZXNzLnN0ZG91dD8ucmVtb3ZlQWxsTGlzdGVuZXJzKClcbiAgICBqYXZhUHJvY2Vzcy5zdGRlcnI/LnJlbW92ZUFsbExpc3RlbmVycygpXG4gICAgamF2YVByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzKCdjbG9zZScpXG4gICAgbG9nZ2VyLmRlYnVnKCdUcnlpbmcgdG8gc3RvcCBzdHViIHByb2Nlc3MgZ3JhY2VmdWxseSAuLi4nKVxuICAgIGF3YWl0IGdyYWNlZnVsU2h1dGRvd24oamF2YVByb2Nlc3MpXG4gICAgbG9nZ2VyLmRlYnVnKCdDb21wbGV0ZWQgZ3JhY2VmdWwgdGVybWluYXRpb24gb2YgdGhlIHN0dWIgcHJvY2VzcycpXG4gICAgbG9nZ2VyLmluZm8oYFN0dWI6IFN0b3BwZWQgc2VydmVyIGF0ICR7c3R1Yi51cmx9YClcbn1cblxuY29uc3QgdGVzdFdpdGhBcGlDb3ZlcmFnZSA9IGFzeW5jIChcbiAgICBleHByZXNzQXBwOiBhbnksXG4gICAgaG9zdD86IHN0cmluZyxcbiAgICBwb3J0PzogbnVtYmVyLFxuICAgIGNvbnRyYWN0UGF0aD86IHN0cmluZyxcbiAgICBhcmdzPzogKHN0cmluZyB8IG51bWJlcilbXVxuKTogUHJvbWlzZTx7IFtrOiBzdHJpbmddOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgX3JlamVjdCkgPT4ge1xuICAgICAgICBsZXQgYXBpQ292ZXJhZ2VTZXJ2ZXIgPSBhd2FpdCBzdGFydEFwaUNvdmVyYWdlU2VydmVyKGV4cHJlc3NBcHApXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0ZXN0KGhvc3QsIHBvcnQsIGNvbnRyYWN0UGF0aCwgYXJncylcbiAgICAgICAgYXBpQ292ZXJhZ2VTZXJ2ZXIuY2xvc2UoKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHRzKVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmNvbnN0IHRlc3QgPSAoaG9zdD86IHN0cmluZywgcG9ydD86IG51bWJlciwgY29udHJhY3RQYXRoPzogc3RyaW5nLCBhcmdzPzogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8eyBbazogc3RyaW5nXTogbnVtYmVyIH0gfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBjb25zdCBzcGVjc1BhdGggPSBwYXRoLnJlc29sdmUoY29udHJhY3RQYXRoICsgJycpXG5cbiAgICB2YXIgY21kID0gYHRlc3RgXG4gICAgaWYgKGNvbnRyYWN0UGF0aCkgY21kICs9IGAgJHtzcGVjc1BhdGh9YFxuICAgIGNtZCArPSAnIC0tanVuaXRSZXBvcnREaXI9ZGlzdC90ZXN0LXJlcG9ydCdcbiAgICBpZiAoaG9zdCkgY21kICs9IGAgLS1ob3N0PSR7aG9zdH1gXG4gICAgaWYgKHBvcnQpIGNtZCArPSBgIC0tcG9ydD0ke3BvcnR9YFxuICAgIGlmIChhcmdzKSBjbWQgKz0gJyAnICsgYXJncy5qb2luKCcgJylcblxuICAgIGxvZ2dlci5pbmZvKCdUZXN0OiBSdW5uaW5nJylcbiAgICBsb2dnZXIuZGVidWcoYFRlc3Q6IEV4ZWN1dGluZyBcIiR7Y21kfVwiYClcblxuICAgIGNvbnN0IHJlcG9ydERpciA9IHBhdGgucmVzb2x2ZSgnZGlzdC90ZXN0LXJlcG9ydCcpXG4gICAgZnMucm1TeW5jKHJlcG9ydERpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICAgICAgY2FsbENvcmUoXG4gICAgICAgICAgICBjbWQsXG4gICAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSBsb2dnZXIuZXJyb3IoYFRlc3Q6IEZhaWxlZCB3aXRoIGVycm9yICR7ZXJyfWApXG4gICAgICAgICAgICAgICAgdmFyIHRlc3RDYXNlcyA9IHBhcnNlSnVuaXRYTUwoKVxuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gdGVzdENhc2VzLmxlbmd0aFxuICAgICAgICAgICAgICAgIGNvbnN0IGZhaWx1cmUgPSB0ZXN0Q2FzZXMuZmlsdGVyKCh0ZXN0Y2FzZTogeyBbaWQ6IHN0cmluZ106IGFueSB9KSA9PiB0ZXN0Y2FzZVsnZmFpbHVyZSddIHx8IHRlc3RjYXNlWydza2lwcGVkJ10pLmxlbmd0aFxuICAgICAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0b3RhbCAtIGZhaWx1cmVcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0geyB0b3RhbCwgc3VjY2VzcywgZmFpbHVyZSB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKG1lc3NhZ2UsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UuaW5kZXhPZignQVBJIENPVkVSQUdFIFNVTU1BUlknKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpIC8vTG9nIGFsd2F5cyBmb3IgYWxsIGxvZyBsZXZlbHNcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2dnZXJbZXJyb3IgPyAnZXJyb3InIDogJ2RlYnVnJ10oYFRlc3Q6ICR7bWVzc2FnZX1gKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgIH0pXG59XG5cbmNvbnN0IHNob3dUZXN0UmVzdWx0cyA9ICh0ZXN0Rm46IChuYW1lOiBzdHJpbmcsIGNiOiAoKSA9PiB2b2lkKSA9PiB2b2lkKSA9PiB7XG4gICAgdmFyIHRlc3RDYXNlcyA9IHBhcnNlSnVuaXRYTUwoKVxuICAgIHRlc3RDYXNlcy5tYXAoZnVuY3Rpb24gKHRlc3RjYXNlOiB7IFtpZDogc3RyaW5nXTogYW55IH0pIHtcbiAgICAgICAgdmFyIG5hbWUgPSAnTm8gTmFtZSdcbiAgICAgICAgaWYgKHRlc3RjYXNlWydzeXN0ZW0tb3V0J10pIHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWVUZW1wQXJyID0gdGVzdGNhc2VbJ3N5c3RlbS1vdXQnXVxuICAgICAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxuL2csICcnKVxuICAgICAgICAgICAgICAgIC5zcGxpdCgvZGlzcGxheS1uYW1lOi4qU2NlbmFyaW86IC8pXG4gICAgICAgICAgICBpZiAobmFtZVRlbXBBcnIubGVuZ3RoID4gMSkgbmFtZSA9IG5hbWVUZW1wQXJyWzFdLnRyaW0oKVxuICAgICAgICB9XG4gICAgICAgIHRlc3RGbihuYW1lLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGVzdGNhc2UuZmFpbHVyZSB8fCB0ZXN0Y2FzZS5za2lwcGVkKSB0aHJvdyBuZXcgRXJyb3IoJ0RpZCBub3QgcGFzcycpXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3Qgc2V0RXhwZWN0YXRpb25zID0gKHN0dWJQYXRoOiBzdHJpbmcsIHN0dWJTZXJ2ZXJCYXNlVXJsPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3Qgc3R1YlJlc3BvbnNlID0gcmVxdWlyZShwYXRoLnJlc29sdmUoc3R1YlBhdGgpKVxuICAgIHJldHVybiBzZXRFeHBlY3RhdGlvbkpzb24oc3R1YlJlc3BvbnNlLCBzdHViU2VydmVyQmFzZVVybClcbn1cblxuY29uc3Qgc2V0RXhwZWN0YXRpb25Kc29uID0gKHN0dWJSZXNwb25zZTogYW55LCBzdHViU2VydmVyQmFzZVVybD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHN0dWJTZXJ2ZXJCYXNlVXJsID0gc3R1YlNlcnZlckJhc2VVcmwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3Q6OTAwMCdcbiAgICBcbiAgICBsb2dnZXIuaW5mbyhgU2V0IEV4cGVjdGF0aW9uczogU3R1YiB1cmwgaXMgJHtzdHViU2VydmVyQmFzZVVybH1gKVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5wb3N0KGAke3N0dWJTZXJ2ZXJCYXNlVXJsfS9fc3BlY21hdGljL2V4cGVjdGF0aW9uc2AsIHN0dWJSZXNwb25zZSlcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoYFNldCBFeHBlY3RhdGlvbnM6ICR7cmVzcG9uc2UuZGF0YX1gKVxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdTZXQgRXhwZWN0YXRpb25zOiBGaW5pc2hlZCcpXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIHNldEV4cGVjdGF0aW9uc0Vycm9yTWVzc2FnZSA9IGBTZXQgRXhwZWN0YXRpb25zOiBGYWlsZWQgd2l0aCBlcnJvciAke2Vycn1gXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHJlc3BvbnNlIGRhdGEgaXMgaW4gdGV4dCBmb3JtYXRcbiAgICAgICAgICAgICAgICBpZiAoZXJyICYmIGVyci5yZXNwb25zZT8uaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICd0ZXh0L3BsYWluJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlIGEgY2hlY2sgdG8gaGFuZGxlIHRleHQgY29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JUZXh0ID0gdHlwZW9mIGVyci5yZXNwb25zZS5kYXRhID09PSAnc3RyaW5nJyA/IGVyci5yZXNwb25zZS5kYXRhIDogXCJFcnJvciB0ZXh0IG5vdCBhdmFpbGFibGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4cGVjdGF0aW9uc0Vycm9yTWVzc2FnZSArPSBgIC0gJHtlcnJvclRleHR9YDtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKFwiRmFpbGVkIHRvIHJldHJpZXZlIHRleHQgZXJyb3IgbWVzc2FnZS5cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHNldEV4cGVjdGF0aW9uc0Vycm9yTWVzc2FnZSlcbiAgICAgICAgICAgICAgICByZWplY3Qoc2V0RXhwZWN0YXRpb25zRXJyb3JNZXNzYWdlKVxuICAgICAgICAgICAgfSlcbiAgICB9KVxufVxuXG5jb25zdCBwcmludEphclZlcnNpb24gPSAoKSA9PiB7XG4gICAgY29uc3QgY21kID0gYC0tdmVyc2lvbmBcbiAgICBsb2dnZXIuaW5mbygnUHJpbnQgSmFyIFZlcnNpb246IFJ1bm5pbmcnKVxuICAgIGxvZ2dlci5kZWJ1ZyhgUHJpbnQgSmFyIFZlcnNpb246IEV4ZWN1dGluZyBcIiR7Y21kfVwiYClcblxuICAgIGNhbGxDb3JlKFxuICAgICAgICBjbWQsXG4gICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikgbG9nZ2VyLmVycm9yKGBQcmludCBKYXIgVmVyc2lvbjogRmFpbGVkIHdpdGggZXJyb3IgJHtlcnJ9YClcbiAgICAgICAgfSxcbiAgICAgICAgKG1lc3NhZ2UsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIGxvZ2dlci5lcnJvcihgUHJpbnQgSmFyIFZlcnNpb246ICR7bWVzc2FnZX1gKVxuICAgICAgICAgICAgZWxzZSBjb25zb2xlLmxvZyhgJHttZXNzYWdlfWApXG4gICAgICAgIH1cbiAgICApXG59XG5cbmNvbnN0IHN0YXJ0QXBpQ292ZXJhZ2VTZXJ2ZXIgPSAoZXhwcmVzc0FwcDogYW55KTogUHJvbWlzZTxodHRwLlNlcnZlcj4gPT4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgUmVnaXN0ZXJpbmcgQVBJIGVuZHBvaW50IGZvciBjb3ZlcmFnZWApXG4gICAgbGV0IGFwcCA9IGh0dHAuY3JlYXRlU2VydmVyKChfcmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KVxuICAgICAgICBjb25zdCBlbmRQb2ludHMgPSBKU09OLnN0cmluZ2lmeShleHRyYWN0RW5kUG9pbnRzKGV4cHJlc3NBcHApKVxuICAgICAgICBsb2dnZXIuZGVidWcoYEVuZHBvaW50czogJHtlbmRQb2ludHN9YClcbiAgICAgICAgcmVzLmVuZChlbmRQb2ludHMpXG4gICAgfSlcbiAgICByZXR1cm4gbmV3IFByb21pc2U8aHR0cC5TZXJ2ZXI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYXBwLm9uKCdlcnJvcicsIGVyciA9PiB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHN0YXJ0aW5nIGVuZCBwb2ludHMgc2VydmVyIGZvciBhcGkgY292ZXJhZ2UnLCBlcnIpXG4gICAgICAgICAgICByZWplY3QoJ0Vycm9yIHdoaWxlIHN0YXJ0aW5nIGVuZCBwb2ludHMgc2VydmVyIGZvciBhcGkgY292ZXJhZ2UnKVxuICAgICAgICB9KVxuICAgICAgICBhcHAubGlzdGVuKHsgaG9zdDogJzEyNy4wLjAuMScsIHBvcnQ6IDAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWRkcmVzcyA9IGFwcC5hZGRyZXNzKCkgYXMgQWRkcmVzc0luZm8gfCBudWxsXG4gICAgICAgICAgICBwcm9jZXNzLmVudlsnZW5kcG9pbnRzQVBJJ10gPSBgaHR0cDovLyR7YWRkcmVzcz8uYWRkcmVzc306JHthZGRyZXNzPy5wb3J0fWBcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBFbmRwb2ludHMgQVBJIHJlZ2lzdGVyZWQgYXQgJHtwcm9jZXNzLmVudlsnZW5kcG9pbnRzQVBJJ119YClcbiAgICAgICAgICAgIHJlc29sdmUoYXBwKVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmNvbnN0IHBhcnNlSnVuaXRYTUwgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVwb3J0UGF0aCA9IHBhdGgucmVzb2x2ZSgnZGlzdC90ZXN0LXJlcG9ydC9URVNULWp1bml0LWp1cGl0ZXIueG1sJylcbiAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyhyZXBvcnRQYXRoKVxuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBYTUxQYXJzZXIoKVxuICAgIHZhciByZXN1bHRYbWwgPSBwYXJzZXIucGFyc2UoZGF0YSlcbiAgICByZXN1bHRYbWwudGVzdHN1aXRlLnRlc3RjYXNlID0gQXJyYXkuaXNBcnJheShyZXN1bHRYbWwudGVzdHN1aXRlLnRlc3RjYXNlKSA/IHJlc3VsdFhtbC50ZXN0c3VpdGUudGVzdGNhc2UgOiBbcmVzdWx0WG1sLnRlc3RzdWl0ZS50ZXN0Y2FzZV1cbiAgICByZXR1cm4gcmVzdWx0WG1sLnRlc3RzdWl0ZS50ZXN0Y2FzZVxufVxuXG5jb25zdCBsaXN0RW5kUG9pbnRzID0gKGV4cHJlc3NBcHA6IGFueSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9PiB7XG4gICAgY29uc3QgZGV0YWlscyA9IGxpc3RFeHByZXNzRW5kcG9pbnRzKGV4cHJlc3NBcHApXG4gICAgbGV0IGVuZFBvaW50czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge31cbiAgICBkZXRhaWxzLm1hcChhcGlEZXRhaWwgPT4ge1xuICAgICAgICBlbmRQb2ludHNbYXBpRGV0YWlsLnBhdGhdID0gYXBpRGV0YWlsLm1ldGhvZHNcbiAgICB9KVxuICAgIGRlbGV0ZSBlbmRQb2ludHNbJyonXVxuICAgIHJldHVybiBlbmRQb2ludHNcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEVuZFBvaW50cyhleHByZXNzQXBwOiBhbnkpIHtcbiAgICBsZXQgZW5kUG9pbnRzID0gbGlzdEVuZFBvaW50cyhleHByZXNzQXBwKVxuICAgIGxldCBzcHJpbmdBY3R1YXRvclBheWxvYWQgPSB7XG4gICAgICAgIGNvbnRleHRzOiB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbjoge1xuICAgICAgICAgICAgICAgIG1hcHBpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXJTZXJ2bGV0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlclNlcnZsZXQ6IFtdLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH1cbiAgICBPYmplY3Qua2V5cyhlbmRQb2ludHMpXG4gICAgICAgIC5zb3J0KClcbiAgICAgICAgLm1hcChwYXRoID0+IHtcbiAgICAgICAgICAgIHNwcmluZ0FjdHVhdG9yUGF5bG9hZC5jb250ZXh0cy5hcHBsaWNhdGlvbi5tYXBwaW5ncy5kaXNwYXRjaGVyU2VydmxldHMuZGlzcGF0Y2hlclNlcnZsZXQucHVzaCh7XG4gICAgICAgICAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0TWFwcGluZ0NvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZHM6IGVuZFBvaW50c1twYXRoXS5zb3J0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuczogW2NvbnZlcnRFbmRwb2ludFRvU3ByaW5nU3ludGF4KHBhdGgpXS5tYXAocmVtb3ZlUmVnZXhGcm9tUGF0aClcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSBhcyBuZXZlcilcbiAgICAgICAgfSlcbiAgICByZXR1cm4gc3ByaW5nQWN0dWF0b3JQYXlsb2FkXG59XG5cbmNvbnN0IGNvbnZlcnRFbmRwb2ludFRvU3ByaW5nU3ludGF4ID0gKHBhdGg6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBwYXRoLnJlcGxhY2UoLzooW14vXSspL2csICd7JDF9JykucmVwbGFjZSgvXFxcXC9nLCAnJylcbn1cblxuY29uc3QgcmVtb3ZlUmVnZXhGcm9tUGF0aCA9IChwYXRoOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gcGF0aC5yZXBsYWNlKC9cXChbXigpXSpcXCkvZywgJycpXG59XG5cbmV4cG9ydCB7IHN0YXJ0U3R1Yiwgc3RvcFN0dWIsIHRlc3QsIHRlc3RXaXRoQXBpQ292ZXJhZ2UsIHNldEV4cGVjdGF0aW9ucywgc2V0RXhwZWN0YXRpb25Kc29uLCBwcmludEphclZlcnNpb24sIHNob3dUZXN0UmVzdWx0cyB9XG5leHBvcnQgeyBzdGFydEFwaUNvdmVyYWdlU2VydmVyIH1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsY0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsR0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0scUJBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLEtBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFRLGNBQUEsR0FBQVIsT0FBQTtBQUFrRCxTQUFBRCx1QkFBQVUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQUUsUUFBQUMsQ0FBQSxzQ0FBQUQsT0FBQSx3QkFBQUUsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLENBQUEsa0JBQUFBLENBQUEsZ0JBQUFBLENBQUEsV0FBQUEsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBRCxDQUFBLENBQUFHLFdBQUEsS0FBQUYsTUFBQSxJQUFBRCxDQUFBLEtBQUFDLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQUosQ0FBQSxLQUFBRCxPQUFBLENBQUFDLENBQUE7QUFBQSxTQUFBSyxvQkFBQSxrQkFUbEQscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFSLENBQUEsU0FBQVMsQ0FBQSxFQUFBVCxDQUFBLE9BQUFVLENBQUEsR0FBQUMsTUFBQSxDQUFBSixTQUFBLEVBQUFLLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxjQUFBLEVBQUFWLENBQUEsR0FBQVEsTUFBQSxDQUFBRyxjQUFBLGNBQUFMLENBQUEsRUFBQVQsQ0FBQSxFQUFBVSxDQUFBLElBQUFELENBQUEsQ0FBQVQsQ0FBQSxJQUFBVSxDQUFBLENBQUFLLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQVosTUFBQSxHQUFBQSxNQUFBLE9BQUFhLENBQUEsR0FBQUQsQ0FBQSxDQUFBWCxRQUFBLGtCQUFBYSxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsYUFBQSx1QkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLFdBQUEsOEJBQUFDLE9BQUFiLENBQUEsRUFBQVQsQ0FBQSxFQUFBVSxDQUFBLFdBQUFDLE1BQUEsQ0FBQUcsY0FBQSxDQUFBTCxDQUFBLEVBQUFULENBQUEsSUFBQWUsS0FBQSxFQUFBTCxDQUFBLEVBQUFhLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFoQixDQUFBLENBQUFULENBQUEsV0FBQXNCLE1BQUEsbUJBQUFiLENBQUEsSUFBQWEsTUFBQSxZQUFBQSxPQUFBYixDQUFBLEVBQUFULENBQUEsRUFBQVUsQ0FBQSxXQUFBRCxDQUFBLENBQUFULENBQUEsSUFBQVUsQ0FBQSxnQkFBQWdCLEtBQUFqQixDQUFBLEVBQUFULENBQUEsRUFBQVUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFJLENBQUEsR0FBQWhCLENBQUEsSUFBQUEsQ0FBQSxDQUFBTyxTQUFBLFlBQUFvQixTQUFBLEdBQUEzQixDQUFBLEdBQUEyQixTQUFBLEVBQUFWLENBQUEsR0FBQU4sTUFBQSxDQUFBaUIsTUFBQSxDQUFBWixDQUFBLENBQUFULFNBQUEsR0FBQVcsQ0FBQSxPQUFBVyxPQUFBLENBQUFqQixDQUFBLGdCQUFBVCxDQUFBLENBQUFjLENBQUEsZUFBQUYsS0FBQSxFQUFBZSxnQkFBQSxDQUFBckIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLENBQUEsTUFBQUQsQ0FBQSxhQUFBYyxTQUFBdEIsQ0FBQSxFQUFBVCxDQUFBLEVBQUFVLENBQUEsbUJBQUFzQixJQUFBLFlBQUFDLEdBQUEsRUFBQXhCLENBQUEsQ0FBQXlCLElBQUEsQ0FBQWxDLENBQUEsRUFBQVUsQ0FBQSxjQUFBRCxDQUFBLGFBQUF1QixJQUFBLFdBQUFDLEdBQUEsRUFBQXhCLENBQUEsUUFBQVQsQ0FBQSxDQUFBMEIsSUFBQSxHQUFBQSxJQUFBLE1BQUFTLENBQUEscUJBQUFDLENBQUEscUJBQUFDLENBQUEsZ0JBQUFDLENBQUEsZ0JBQUFDLENBQUEsZ0JBQUFaLFVBQUEsY0FBQWEsa0JBQUEsY0FBQUMsMkJBQUEsU0FBQUMsQ0FBQSxPQUFBcEIsTUFBQSxDQUFBb0IsQ0FBQSxFQUFBekIsQ0FBQSxxQ0FBQTBCLENBQUEsR0FBQWhDLE1BQUEsQ0FBQWlDLGNBQUEsRUFBQUMsQ0FBQSxHQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUEsQ0FBQSxDQUFBRyxNQUFBLFFBQUFELENBQUEsSUFBQUEsQ0FBQSxLQUFBbkMsQ0FBQSxJQUFBRSxDQUFBLENBQUFzQixJQUFBLENBQUFXLENBQUEsRUFBQTVCLENBQUEsTUFBQXlCLENBQUEsR0FBQUcsQ0FBQSxPQUFBRSxDQUFBLEdBQUFOLDBCQUFBLENBQUFsQyxTQUFBLEdBQUFvQixTQUFBLENBQUFwQixTQUFBLEdBQUFJLE1BQUEsQ0FBQWlCLE1BQUEsQ0FBQWMsQ0FBQSxZQUFBTSxzQkFBQXZDLENBQUEsZ0NBQUF3QyxPQUFBLFdBQUFqRCxDQUFBLElBQUFzQixNQUFBLENBQUFiLENBQUEsRUFBQVQsQ0FBQSxZQUFBUyxDQUFBLGdCQUFBeUMsT0FBQSxDQUFBbEQsQ0FBQSxFQUFBUyxDQUFBLHNCQUFBMEMsY0FBQTFDLENBQUEsRUFBQVQsQ0FBQSxhQUFBb0QsT0FBQTFDLENBQUEsRUFBQVAsQ0FBQSxFQUFBYSxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBYSxRQUFBLENBQUF0QixDQUFBLENBQUFDLENBQUEsR0FBQUQsQ0FBQSxFQUFBTixDQUFBLG1CQUFBZSxDQUFBLENBQUFjLElBQUEsUUFBQVosQ0FBQSxHQUFBRixDQUFBLENBQUFlLEdBQUEsRUFBQUUsQ0FBQSxHQUFBZixDQUFBLENBQUFMLEtBQUEsU0FBQW9CLENBQUEsZ0JBQUFqQyxPQUFBLENBQUFpQyxDQUFBLEtBQUF2QixDQUFBLENBQUFzQixJQUFBLENBQUFDLENBQUEsZUFBQW5DLENBQUEsQ0FBQXFELE9BQUEsQ0FBQWxCLENBQUEsQ0FBQW1CLE9BQUEsRUFBQUMsSUFBQSxXQUFBOUMsQ0FBQSxJQUFBMkMsTUFBQSxTQUFBM0MsQ0FBQSxFQUFBTyxDQUFBLEVBQUFDLENBQUEsZ0JBQUFSLENBQUEsSUFBQTJDLE1BQUEsVUFBQTNDLENBQUEsRUFBQU8sQ0FBQSxFQUFBQyxDQUFBLFFBQUFqQixDQUFBLENBQUFxRCxPQUFBLENBQUFsQixDQUFBLEVBQUFvQixJQUFBLFdBQUE5QyxDQUFBLElBQUFXLENBQUEsQ0FBQUwsS0FBQSxHQUFBTixDQUFBLEVBQUFPLENBQUEsQ0FBQUksQ0FBQSxnQkFBQVgsQ0FBQSxXQUFBMkMsTUFBQSxVQUFBM0MsQ0FBQSxFQUFBTyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxDQUFBQyxDQUFBLENBQUFlLEdBQUEsU0FBQXZCLENBQUEsRUFBQVAsQ0FBQSxvQkFBQVksS0FBQSxXQUFBQSxNQUFBTixDQUFBLEVBQUFHLENBQUEsYUFBQTRDLDJCQUFBLGVBQUF4RCxDQUFBLFdBQUFBLENBQUEsRUFBQVUsQ0FBQSxJQUFBMEMsTUFBQSxDQUFBM0MsQ0FBQSxFQUFBRyxDQUFBLEVBQUFaLENBQUEsRUFBQVUsQ0FBQSxnQkFBQUEsQ0FBQSxHQUFBQSxDQUFBLEdBQUFBLENBQUEsQ0FBQTZDLElBQUEsQ0FBQUMsMEJBQUEsRUFBQUEsMEJBQUEsSUFBQUEsMEJBQUEscUJBQUExQixpQkFBQTlCLENBQUEsRUFBQVUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFULENBQUEsR0FBQWdDLENBQUEsbUJBQUFuQixDQUFBLEVBQUFDLENBQUEsUUFBQWQsQ0FBQSxLQUFBa0MsQ0FBQSxRQUFBb0IsS0FBQSxzQ0FBQXRELENBQUEsS0FBQW1DLENBQUEsb0JBQUF0QixDQUFBLFFBQUFDLENBQUEsV0FBQUYsS0FBQSxFQUFBTixDQUFBLEVBQUFpRCxJQUFBLGVBQUE5QyxDQUFBLENBQUErQyxNQUFBLEdBQUEzQyxDQUFBLEVBQUFKLENBQUEsQ0FBQXFCLEdBQUEsR0FBQWhCLENBQUEsVUFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFnRCxRQUFBLE1BQUExQyxDQUFBLFFBQUFFLENBQUEsR0FBQXlDLG1CQUFBLENBQUEzQyxDQUFBLEVBQUFOLENBQUEsT0FBQVEsQ0FBQSxRQUFBQSxDQUFBLEtBQUFtQixDQUFBLG1CQUFBbkIsQ0FBQSxxQkFBQVIsQ0FBQSxDQUFBK0MsTUFBQSxFQUFBL0MsQ0FBQSxDQUFBa0QsSUFBQSxHQUFBbEQsQ0FBQSxDQUFBbUQsS0FBQSxHQUFBbkQsQ0FBQSxDQUFBcUIsR0FBQSxzQkFBQXJCLENBQUEsQ0FBQStDLE1BQUEsUUFBQXhELENBQUEsS0FBQWdDLENBQUEsUUFBQWhDLENBQUEsR0FBQW1DLENBQUEsRUFBQTFCLENBQUEsQ0FBQXFCLEdBQUEsRUFBQXJCLENBQUEsQ0FBQW9ELGlCQUFBLENBQUFwRCxDQUFBLENBQUFxQixHQUFBLHVCQUFBckIsQ0FBQSxDQUFBK0MsTUFBQSxJQUFBL0MsQ0FBQSxDQUFBcUQsTUFBQSxXQUFBckQsQ0FBQSxDQUFBcUIsR0FBQSxHQUFBOUIsQ0FBQSxHQUFBa0MsQ0FBQSxNQUFBSyxDQUFBLEdBQUFYLFFBQUEsQ0FBQS9CLENBQUEsRUFBQVUsQ0FBQSxFQUFBRSxDQUFBLG9CQUFBOEIsQ0FBQSxDQUFBVixJQUFBLFFBQUE3QixDQUFBLEdBQUFTLENBQUEsQ0FBQThDLElBQUEsR0FBQXBCLENBQUEsR0FBQUYsQ0FBQSxFQUFBTSxDQUFBLENBQUFULEdBQUEsS0FBQU0sQ0FBQSxxQkFBQXhCLEtBQUEsRUFBQTJCLENBQUEsQ0FBQVQsR0FBQSxFQUFBeUIsSUFBQSxFQUFBOUMsQ0FBQSxDQUFBOEMsSUFBQSxrQkFBQWhCLENBQUEsQ0FBQVYsSUFBQSxLQUFBN0IsQ0FBQSxHQUFBbUMsQ0FBQSxFQUFBMUIsQ0FBQSxDQUFBK0MsTUFBQSxZQUFBL0MsQ0FBQSxDQUFBcUIsR0FBQSxHQUFBUyxDQUFBLENBQUFULEdBQUEsbUJBQUE0QixvQkFBQTdELENBQUEsRUFBQVUsQ0FBQSxRQUFBRSxDQUFBLEdBQUFGLENBQUEsQ0FBQWlELE1BQUEsRUFBQXhELENBQUEsR0FBQUgsQ0FBQSxDQUFBSyxRQUFBLENBQUFPLENBQUEsT0FBQVQsQ0FBQSxLQUFBTSxDQUFBLFNBQUFDLENBQUEsQ0FBQWtELFFBQUEscUJBQUFoRCxDQUFBLElBQUFaLENBQUEsQ0FBQUssUUFBQSxlQUFBSyxDQUFBLENBQUFpRCxNQUFBLGFBQUFqRCxDQUFBLENBQUF1QixHQUFBLEdBQUF4QixDQUFBLEVBQUFvRCxtQkFBQSxDQUFBN0QsQ0FBQSxFQUFBVSxDQUFBLGVBQUFBLENBQUEsQ0FBQWlELE1BQUEsa0JBQUEvQyxDQUFBLEtBQUFGLENBQUEsQ0FBQWlELE1BQUEsWUFBQWpELENBQUEsQ0FBQXVCLEdBQUEsT0FBQWlDLFNBQUEsdUNBQUF0RCxDQUFBLGlCQUFBMkIsQ0FBQSxNQUFBdkIsQ0FBQSxHQUFBZSxRQUFBLENBQUE1QixDQUFBLEVBQUFILENBQUEsQ0FBQUssUUFBQSxFQUFBSyxDQUFBLENBQUF1QixHQUFBLG1CQUFBakIsQ0FBQSxDQUFBZ0IsSUFBQSxTQUFBdEIsQ0FBQSxDQUFBaUQsTUFBQSxZQUFBakQsQ0FBQSxDQUFBdUIsR0FBQSxHQUFBakIsQ0FBQSxDQUFBaUIsR0FBQSxFQUFBdkIsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxNQUFBdEIsQ0FBQSxHQUFBRCxDQUFBLENBQUFpQixHQUFBLFNBQUFoQixDQUFBLEdBQUFBLENBQUEsQ0FBQXlDLElBQUEsSUFBQWhELENBQUEsQ0FBQVYsQ0FBQSxDQUFBbUUsVUFBQSxJQUFBbEQsQ0FBQSxDQUFBRixLQUFBLEVBQUFMLENBQUEsQ0FBQTBELElBQUEsR0FBQXBFLENBQUEsQ0FBQXFFLE9BQUEsZUFBQTNELENBQUEsQ0FBQWlELE1BQUEsS0FBQWpELENBQUEsQ0FBQWlELE1BQUEsV0FBQWpELENBQUEsQ0FBQXVCLEdBQUEsR0FBQXhCLENBQUEsR0FBQUMsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxJQUFBdEIsQ0FBQSxJQUFBUCxDQUFBLENBQUFpRCxNQUFBLFlBQUFqRCxDQUFBLENBQUF1QixHQUFBLE9BQUFpQyxTQUFBLHNDQUFBeEQsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxjQUFBK0IsYUFBQTdELENBQUEsUUFBQVQsQ0FBQSxLQUFBdUUsTUFBQSxFQUFBOUQsQ0FBQSxZQUFBQSxDQUFBLEtBQUFULENBQUEsQ0FBQXdFLFFBQUEsR0FBQS9ELENBQUEsV0FBQUEsQ0FBQSxLQUFBVCxDQUFBLENBQUF5RSxVQUFBLEdBQUFoRSxDQUFBLEtBQUFULENBQUEsQ0FBQTBFLFFBQUEsR0FBQWpFLENBQUEsV0FBQWtFLFVBQUEsQ0FBQUMsSUFBQSxDQUFBNUUsQ0FBQSxjQUFBNkUsY0FBQXBFLENBQUEsUUFBQVQsQ0FBQSxHQUFBUyxDQUFBLENBQUFxRSxVQUFBLFFBQUE5RSxDQUFBLENBQUFnQyxJQUFBLG9CQUFBaEMsQ0FBQSxDQUFBaUMsR0FBQSxFQUFBeEIsQ0FBQSxDQUFBcUUsVUFBQSxHQUFBOUUsQ0FBQSxhQUFBNkIsUUFBQXBCLENBQUEsU0FBQWtFLFVBQUEsTUFBQUosTUFBQSxhQUFBOUQsQ0FBQSxDQUFBd0MsT0FBQSxDQUFBcUIsWUFBQSxjQUFBUyxLQUFBLGlCQUFBakMsT0FBQTlDLENBQUEsUUFBQUEsQ0FBQSxXQUFBQSxDQUFBLFFBQUFVLENBQUEsR0FBQVYsQ0FBQSxDQUFBaUIsQ0FBQSxPQUFBUCxDQUFBLFNBQUFBLENBQUEsQ0FBQXdCLElBQUEsQ0FBQWxDLENBQUEsNEJBQUFBLENBQUEsQ0FBQW9FLElBQUEsU0FBQXBFLENBQUEsT0FBQWdGLEtBQUEsQ0FBQWhGLENBQUEsQ0FBQWlGLE1BQUEsU0FBQTlFLENBQUEsT0FBQWEsQ0FBQSxZQUFBb0QsS0FBQSxhQUFBakUsQ0FBQSxHQUFBSCxDQUFBLENBQUFpRixNQUFBLE9BQUFyRSxDQUFBLENBQUFzQixJQUFBLENBQUFsQyxDQUFBLEVBQUFHLENBQUEsVUFBQWlFLElBQUEsQ0FBQXJELEtBQUEsR0FBQWYsQ0FBQSxDQUFBRyxDQUFBLEdBQUFpRSxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxTQUFBQSxJQUFBLENBQUFyRCxLQUFBLEdBQUFOLENBQUEsRUFBQTJELElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFlBQUFwRCxDQUFBLENBQUFvRCxJQUFBLEdBQUFwRCxDQUFBLGdCQUFBa0QsU0FBQSxDQUFBaEUsT0FBQSxDQUFBRixDQUFBLGtDQUFBd0MsaUJBQUEsQ0FBQWpDLFNBQUEsR0FBQWtDLDBCQUFBLEVBQUF0QyxDQUFBLENBQUE0QyxDQUFBLG1CQUFBaEMsS0FBQSxFQUFBMEIsMEJBQUEsRUFBQWpCLFlBQUEsU0FBQXJCLENBQUEsQ0FBQXNDLDBCQUFBLG1CQUFBMUIsS0FBQSxFQUFBeUIsaUJBQUEsRUFBQWhCLFlBQUEsU0FBQWdCLGlCQUFBLENBQUEwQyxXQUFBLEdBQUE1RCxNQUFBLENBQUFtQiwwQkFBQSxFQUFBckIsQ0FBQSx3QkFBQXBCLENBQUEsQ0FBQW1GLG1CQUFBLGFBQUExRSxDQUFBLFFBQUFULENBQUEsd0JBQUFTLENBQUEsSUFBQUEsQ0FBQSxDQUFBSCxXQUFBLFdBQUFOLENBQUEsS0FBQUEsQ0FBQSxLQUFBd0MsaUJBQUEsNkJBQUF4QyxDQUFBLENBQUFrRixXQUFBLElBQUFsRixDQUFBLENBQUFvRixJQUFBLE9BQUFwRixDQUFBLENBQUFxRixJQUFBLGFBQUE1RSxDQUFBLFdBQUFFLE1BQUEsQ0FBQTJFLGNBQUEsR0FBQTNFLE1BQUEsQ0FBQTJFLGNBQUEsQ0FBQTdFLENBQUEsRUFBQWdDLDBCQUFBLEtBQUFoQyxDQUFBLENBQUE4RSxTQUFBLEdBQUE5QywwQkFBQSxFQUFBbkIsTUFBQSxDQUFBYixDQUFBLEVBQUFXLENBQUEseUJBQUFYLENBQUEsQ0FBQUYsU0FBQSxHQUFBSSxNQUFBLENBQUFpQixNQUFBLENBQUFtQixDQUFBLEdBQUF0QyxDQUFBLEtBQUFULENBQUEsQ0FBQXdGLEtBQUEsYUFBQS9FLENBQUEsYUFBQTZDLE9BQUEsRUFBQTdDLENBQUEsT0FBQXVDLHFCQUFBLENBQUFHLGFBQUEsQ0FBQTVDLFNBQUEsR0FBQWUsTUFBQSxDQUFBNkIsYUFBQSxDQUFBNUMsU0FBQSxFQUFBVyxDQUFBLGlDQUFBbEIsQ0FBQSxDQUFBbUQsYUFBQSxHQUFBQSxhQUFBLEVBQUFuRCxDQUFBLENBQUF5RixLQUFBLGFBQUFoRixDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBVCxDQUFBLEVBQUFhLENBQUEsZUFBQUEsQ0FBQSxLQUFBQSxDQUFBLEdBQUEwRSxPQUFBLE9BQUF6RSxDQUFBLE9BQUFrQyxhQUFBLENBQUF6QixJQUFBLENBQUFqQixDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBVCxDQUFBLEdBQUFhLENBQUEsVUFBQWhCLENBQUEsQ0FBQW1GLG1CQUFBLENBQUF6RSxDQUFBLElBQUFPLENBQUEsR0FBQUEsQ0FBQSxDQUFBbUQsSUFBQSxHQUFBYixJQUFBLFdBQUE5QyxDQUFBLFdBQUFBLENBQUEsQ0FBQWlELElBQUEsR0FBQWpELENBQUEsQ0FBQU0sS0FBQSxHQUFBRSxDQUFBLENBQUFtRCxJQUFBLFdBQUFwQixxQkFBQSxDQUFBRCxDQUFBLEdBQUF6QixNQUFBLENBQUF5QixDQUFBLEVBQUEzQixDQUFBLGdCQUFBRSxNQUFBLENBQUF5QixDQUFBLEVBQUE5QixDQUFBLGlDQUFBSyxNQUFBLENBQUF5QixDQUFBLDZEQUFBL0MsQ0FBQSxDQUFBMkYsSUFBQSxhQUFBbEYsQ0FBQSxRQUFBVCxDQUFBLEdBQUFXLE1BQUEsQ0FBQUYsQ0FBQSxHQUFBQyxDQUFBLGdCQUFBRSxDQUFBLElBQUFaLENBQUEsRUFBQVUsQ0FBQSxDQUFBa0UsSUFBQSxDQUFBaEUsQ0FBQSxVQUFBRixDQUFBLENBQUFrRixPQUFBLGFBQUF4QixLQUFBLFdBQUExRCxDQUFBLENBQUF1RSxNQUFBLFNBQUF4RSxDQUFBLEdBQUFDLENBQUEsQ0FBQW1GLEdBQUEsUUFBQXBGLENBQUEsSUFBQVQsQ0FBQSxTQUFBb0UsSUFBQSxDQUFBckQsS0FBQSxHQUFBTixDQUFBLEVBQUEyRCxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxXQUFBQSxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxRQUFBcEUsQ0FBQSxDQUFBOEMsTUFBQSxHQUFBQSxNQUFBLEVBQUFqQixPQUFBLENBQUF0QixTQUFBLEtBQUFELFdBQUEsRUFBQXVCLE9BQUEsRUFBQWtELEtBQUEsV0FBQUEsTUFBQS9FLENBQUEsYUFBQThGLElBQUEsV0FBQTFCLElBQUEsV0FBQU4sSUFBQSxRQUFBQyxLQUFBLEdBQUF0RCxDQUFBLE9BQUFpRCxJQUFBLFlBQUFFLFFBQUEsY0FBQUQsTUFBQSxnQkFBQTFCLEdBQUEsR0FBQXhCLENBQUEsT0FBQWtFLFVBQUEsQ0FBQTFCLE9BQUEsQ0FBQTRCLGFBQUEsSUFBQTdFLENBQUEsV0FBQVUsQ0FBQSxrQkFBQUEsQ0FBQSxDQUFBcUYsTUFBQSxPQUFBbkYsQ0FBQSxDQUFBc0IsSUFBQSxPQUFBeEIsQ0FBQSxNQUFBc0UsS0FBQSxFQUFBdEUsQ0FBQSxDQUFBc0YsS0FBQSxjQUFBdEYsQ0FBQSxJQUFBRCxDQUFBLE1BQUF3RixJQUFBLFdBQUFBLEtBQUEsU0FBQXZDLElBQUEsV0FBQWpELENBQUEsUUFBQWtFLFVBQUEsSUFBQUcsVUFBQSxrQkFBQXJFLENBQUEsQ0FBQXVCLElBQUEsUUFBQXZCLENBQUEsQ0FBQXdCLEdBQUEsY0FBQWlFLElBQUEsS0FBQWxDLGlCQUFBLFdBQUFBLGtCQUFBaEUsQ0FBQSxhQUFBMEQsSUFBQSxRQUFBMUQsQ0FBQSxNQUFBVSxDQUFBLGtCQUFBeUYsT0FBQXZGLENBQUEsRUFBQVQsQ0FBQSxXQUFBYyxDQUFBLENBQUFlLElBQUEsWUFBQWYsQ0FBQSxDQUFBZ0IsR0FBQSxHQUFBakMsQ0FBQSxFQUFBVSxDQUFBLENBQUEwRCxJQUFBLEdBQUF4RCxDQUFBLEVBQUFULENBQUEsS0FBQU8sQ0FBQSxDQUFBaUQsTUFBQSxXQUFBakQsQ0FBQSxDQUFBdUIsR0FBQSxHQUFBeEIsQ0FBQSxLQUFBTixDQUFBLGFBQUFBLENBQUEsUUFBQXdFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBOUUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFhLENBQUEsUUFBQTJELFVBQUEsQ0FBQXhFLENBQUEsR0FBQWMsQ0FBQSxHQUFBRCxDQUFBLENBQUE4RCxVQUFBLGlCQUFBOUQsQ0FBQSxDQUFBdUQsTUFBQSxTQUFBNEIsTUFBQSxhQUFBbkYsQ0FBQSxDQUFBdUQsTUFBQSxTQUFBdUIsSUFBQSxRQUFBNUUsQ0FBQSxHQUFBTixDQUFBLENBQUFzQixJQUFBLENBQUFsQixDQUFBLGVBQUFJLENBQUEsR0FBQVIsQ0FBQSxDQUFBc0IsSUFBQSxDQUFBbEIsQ0FBQSxxQkFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUEwRSxJQUFBLEdBQUE5RSxDQUFBLENBQUF3RCxRQUFBLFNBQUEyQixNQUFBLENBQUFuRixDQUFBLENBQUF3RCxRQUFBLGdCQUFBc0IsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBeUQsVUFBQSxTQUFBMEIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBeUQsVUFBQSxjQUFBdkQsQ0FBQSxhQUFBNEUsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBd0QsUUFBQSxTQUFBMkIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBd0QsUUFBQSxxQkFBQXBELENBQUEsUUFBQXFDLEtBQUEscURBQUFxQyxJQUFBLEdBQUE5RSxDQUFBLENBQUF5RCxVQUFBLFNBQUEwQixNQUFBLENBQUFuRixDQUFBLENBQUF5RCxVQUFBLFlBQUFSLE1BQUEsV0FBQUEsT0FBQXhELENBQUEsRUFBQVQsQ0FBQSxhQUFBVSxDQUFBLFFBQUFpRSxVQUFBLENBQUFNLE1BQUEsTUFBQXZFLENBQUEsU0FBQUEsQ0FBQSxRQUFBUCxDQUFBLFFBQUF3RSxVQUFBLENBQUFqRSxDQUFBLE9BQUFQLENBQUEsQ0FBQW9FLE1BQUEsU0FBQXVCLElBQUEsSUFBQWxGLENBQUEsQ0FBQXNCLElBQUEsQ0FBQS9CLENBQUEsd0JBQUEyRixJQUFBLEdBQUEzRixDQUFBLENBQUFzRSxVQUFBLFFBQUF6RCxDQUFBLEdBQUFiLENBQUEsYUFBQWEsQ0FBQSxpQkFBQVAsQ0FBQSxtQkFBQUEsQ0FBQSxLQUFBTyxDQUFBLENBQUF1RCxNQUFBLElBQUF2RSxDQUFBLElBQUFBLENBQUEsSUFBQWdCLENBQUEsQ0FBQXlELFVBQUEsS0FBQXpELENBQUEsY0FBQUMsQ0FBQSxHQUFBRCxDQUFBLEdBQUFBLENBQUEsQ0FBQThELFVBQUEsY0FBQTdELENBQUEsQ0FBQWUsSUFBQSxHQUFBdkIsQ0FBQSxFQUFBUSxDQUFBLENBQUFnQixHQUFBLEdBQUFqQyxDQUFBLEVBQUFnQixDQUFBLFNBQUEyQyxNQUFBLGdCQUFBUyxJQUFBLEdBQUFwRCxDQUFBLENBQUF5RCxVQUFBLEVBQUFsQyxDQUFBLFNBQUE2RCxRQUFBLENBQUFuRixDQUFBLE1BQUFtRixRQUFBLFdBQUFBLFNBQUEzRixDQUFBLEVBQUFULENBQUEsb0JBQUFTLENBQUEsQ0FBQXVCLElBQUEsUUFBQXZCLENBQUEsQ0FBQXdCLEdBQUEscUJBQUF4QixDQUFBLENBQUF1QixJQUFBLG1CQUFBdkIsQ0FBQSxDQUFBdUIsSUFBQSxRQUFBb0MsSUFBQSxHQUFBM0QsQ0FBQSxDQUFBd0IsR0FBQSxnQkFBQXhCLENBQUEsQ0FBQXVCLElBQUEsU0FBQWtFLElBQUEsUUFBQWpFLEdBQUEsR0FBQXhCLENBQUEsQ0FBQXdCLEdBQUEsT0FBQTBCLE1BQUEsa0JBQUFTLElBQUEseUJBQUEzRCxDQUFBLENBQUF1QixJQUFBLElBQUFoQyxDQUFBLFVBQUFvRSxJQUFBLEdBQUFwRSxDQUFBLEdBQUF1QyxDQUFBLEtBQUE4RCxNQUFBLFdBQUFBLE9BQUE1RixDQUFBLGFBQUFULENBQUEsUUFBQTJFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBakYsQ0FBQSxTQUFBQSxDQUFBLFFBQUFVLENBQUEsUUFBQWlFLFVBQUEsQ0FBQTNFLENBQUEsT0FBQVUsQ0FBQSxDQUFBK0QsVUFBQSxLQUFBaEUsQ0FBQSxjQUFBMkYsUUFBQSxDQUFBMUYsQ0FBQSxDQUFBb0UsVUFBQSxFQUFBcEUsQ0FBQSxDQUFBZ0UsUUFBQSxHQUFBRyxhQUFBLENBQUFuRSxDQUFBLEdBQUE2QixDQUFBLHlCQUFBK0QsT0FBQTdGLENBQUEsYUFBQVQsQ0FBQSxRQUFBMkUsVUFBQSxDQUFBTSxNQUFBLE1BQUFqRixDQUFBLFNBQUFBLENBQUEsUUFBQVUsQ0FBQSxRQUFBaUUsVUFBQSxDQUFBM0UsQ0FBQSxPQUFBVSxDQUFBLENBQUE2RCxNQUFBLEtBQUE5RCxDQUFBLFFBQUFHLENBQUEsR0FBQUYsQ0FBQSxDQUFBb0UsVUFBQSxrQkFBQWxFLENBQUEsQ0FBQW9CLElBQUEsUUFBQTdCLENBQUEsR0FBQVMsQ0FBQSxDQUFBcUIsR0FBQSxFQUFBNEMsYUFBQSxDQUFBbkUsQ0FBQSxZQUFBUCxDQUFBLFlBQUFzRCxLQUFBLDhCQUFBOEMsYUFBQSxXQUFBQSxjQUFBdkcsQ0FBQSxFQUFBVSxDQUFBLEVBQUFFLENBQUEsZ0JBQUFnRCxRQUFBLEtBQUF2RCxRQUFBLEVBQUF5QyxNQUFBLENBQUE5QyxDQUFBLEdBQUFtRSxVQUFBLEVBQUF6RCxDQUFBLEVBQUEyRCxPQUFBLEVBQUF6RCxDQUFBLG9CQUFBK0MsTUFBQSxVQUFBMUIsR0FBQSxHQUFBeEIsQ0FBQSxHQUFBOEIsQ0FBQSxPQUFBdkMsQ0FBQTtBQUFBLFNBQUF3RyxtQkFBQTVGLENBQUEsRUFBQUgsQ0FBQSxFQUFBVCxDQUFBLEVBQUFVLENBQUEsRUFBQVAsQ0FBQSxFQUFBYyxDQUFBLEVBQUFDLENBQUEsY0FBQUYsQ0FBQSxHQUFBSixDQUFBLENBQUFLLENBQUEsRUFBQUMsQ0FBQSxHQUFBRSxDQUFBLEdBQUFKLENBQUEsQ0FBQUQsS0FBQSxXQUFBSCxDQUFBLGdCQUFBWixDQUFBLENBQUFZLENBQUEsS0FBQUksQ0FBQSxDQUFBMEMsSUFBQSxHQUFBakQsQ0FBQSxDQUFBVyxDQUFBLElBQUFzRSxPQUFBLENBQUFyQyxPQUFBLENBQUFqQyxDQUFBLEVBQUFtQyxJQUFBLENBQUE3QyxDQUFBLEVBQUFQLENBQUE7QUFBQSxTQUFBc0csa0JBQUE3RixDQUFBLDZCQUFBSCxDQUFBLFNBQUFULENBQUEsR0FBQTBHLFNBQUEsYUFBQWhCLE9BQUEsV0FBQWhGLENBQUEsRUFBQVAsQ0FBQSxRQUFBYyxDQUFBLEdBQUFMLENBQUEsQ0FBQStGLEtBQUEsQ0FBQWxHLENBQUEsRUFBQVQsQ0FBQSxZQUFBNEcsTUFBQWhHLENBQUEsSUFBQTRGLGtCQUFBLENBQUF2RixDQUFBLEVBQUFQLENBQUEsRUFBQVAsQ0FBQSxFQUFBeUcsS0FBQSxFQUFBQyxNQUFBLFVBQUFqRyxDQUFBLGNBQUFpRyxPQUFBakcsQ0FBQSxJQUFBNEYsa0JBQUEsQ0FBQXZGLENBQUEsRUFBQVAsQ0FBQSxFQUFBUCxDQUFBLEVBQUF5RyxLQUFBLEVBQUFDLE1BQUEsV0FBQWpHLENBQUEsS0FBQWdHLEtBQUE7QUFBQSxTQUFBRSxrQkFBQTlHLENBQUEsRUFBQVUsQ0FBQSxhQUFBRCxDQUFBLE1BQUFBLENBQUEsR0FBQUMsQ0FBQSxDQUFBdUUsTUFBQSxFQUFBeEUsQ0FBQSxVQUFBTixDQUFBLEdBQUFPLENBQUEsQ0FBQUQsQ0FBQSxHQUFBTixDQUFBLENBQUFvQixVQUFBLEdBQUFwQixDQUFBLENBQUFvQixVQUFBLFFBQUFwQixDQUFBLENBQUFxQixZQUFBLGtCQUFBckIsQ0FBQSxLQUFBQSxDQUFBLENBQUFzQixRQUFBLFFBQUFkLE1BQUEsQ0FBQUcsY0FBQSxDQUFBZCxDQUFBLEVBQUErRyxjQUFBLENBQUE1RyxDQUFBLENBQUE2RyxHQUFBLEdBQUE3RyxDQUFBO0FBQUEsU0FBQThHLGFBQUFqSCxDQUFBLEVBQUFVLENBQUEsRUFBQUQsQ0FBQSxXQUFBQyxDQUFBLElBQUFvRyxpQkFBQSxDQUFBOUcsQ0FBQSxDQUFBTyxTQUFBLEVBQUFHLENBQUEsR0FBQUQsQ0FBQSxJQUFBcUcsaUJBQUEsQ0FBQTlHLENBQUEsRUFBQVMsQ0FBQSxHQUFBRSxNQUFBLENBQUFHLGNBQUEsQ0FBQWQsQ0FBQSxpQkFBQXlCLFFBQUEsU0FBQXpCLENBQUE7QUFBQSxTQUFBa0gsZ0JBQUFqRyxDQUFBLEVBQUFMLENBQUEsVUFBQUssQ0FBQSxZQUFBTCxDQUFBLGFBQUFzRCxTQUFBO0FBQUEsU0FBQWlELGdCQUFBbkgsQ0FBQSxFQUFBVSxDQUFBLEVBQUFELENBQUEsWUFBQUMsQ0FBQSxHQUFBcUcsY0FBQSxDQUFBckcsQ0FBQSxNQUFBVixDQUFBLEdBQUFXLE1BQUEsQ0FBQUcsY0FBQSxDQUFBZCxDQUFBLEVBQUFVLENBQUEsSUFBQUssS0FBQSxFQUFBTixDQUFBLEVBQUFjLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFVBQUF6QixDQUFBLENBQUFVLENBQUEsSUFBQUQsQ0FBQSxFQUFBVCxDQUFBO0FBQUEsU0FBQStHLGVBQUF0RyxDQUFBLFFBQUFPLENBQUEsR0FBQW9HLFlBQUEsQ0FBQTNHLENBQUEsZ0NBQUFQLE9BQUEsQ0FBQWMsQ0FBQSxJQUFBQSxDQUFBLEdBQUFBLENBQUE7QUFBQSxTQUFBb0csYUFBQTNHLENBQUEsRUFBQUMsQ0FBQSxvQkFBQVIsT0FBQSxDQUFBTyxDQUFBLE1BQUFBLENBQUEsU0FBQUEsQ0FBQSxNQUFBVCxDQUFBLEdBQUFTLENBQUEsQ0FBQUwsTUFBQSxDQUFBaUgsV0FBQSxrQkFBQXJILENBQUEsUUFBQWdCLENBQUEsR0FBQWhCLENBQUEsQ0FBQWtDLElBQUEsQ0FBQXpCLENBQUEsRUFBQUMsQ0FBQSxnQ0FBQVIsT0FBQSxDQUFBYyxDQUFBLFVBQUFBLENBQUEsWUFBQWtELFNBQUEseUVBQUF4RCxDQUFBLEdBQUE0RyxNQUFBLEdBQUFDLE1BQUEsRUFBQTlHLENBQUE7QUFXQSxJQUFNK0csZUFBZSxHQUFHLGlCQUFpQjtBQUN6QyxJQUFNQyxrQkFBa0IsR0FBRyw4QkFBOEI7QUFBQSxJQUU1Q0MsSUFBSSxHQUFBQyxPQUFBLENBQUFELElBQUEsZ0JBQUFULFlBQUEsQ0FLYixTQUFBUyxLQUFZRSxJQUFZLEVBQUVDLElBQVksRUFBRUMsR0FBVyxFQUFFQyxPQUFxQixFQUFFO0VBQUFiLGVBQUEsT0FBQVEsSUFBQTtFQUFBUCxlQUFBO0VBQUFBLGVBQUE7RUFBQUEsZUFBQTtFQUFBQSxlQUFBO0VBQ3hFLElBQUksQ0FBQ1MsSUFBSSxHQUFHQSxJQUFJO0VBQ2hCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQSxJQUFJO0VBQ2hCLElBQUksQ0FBQ0MsR0FBRyxHQUFHQSxHQUFHO0VBQ2QsSUFBSSxDQUFDQyxPQUFPLEdBQUdBLE9BQU87QUFDMUIsQ0FBQztBQUdMLElBQU1DLFNBQVMsR0FBQUwsT0FBQSxDQUFBSyxTQUFBLEdBQUcsU0FBWkEsU0FBU0EsQ0FBSUosSUFBYSxFQUFFQyxJQUFhLEVBQUVJLElBQTBCLEVBQW9CO0VBQzNGLElBQUlDLEdBQUcsU0FBUztFQUNoQixJQUFJTixJQUFJLEVBQUVNLEdBQUcsZUFBQUMsTUFBQSxDQUFlUCxJQUFJLENBQUU7RUFDbEMsSUFBSUMsSUFBSSxFQUFFSyxHQUFHLGVBQUFDLE1BQUEsQ0FBZU4sSUFBSSxDQUFFO0VBQ2xDLElBQUlJLElBQUksRUFBRUMsR0FBRyxJQUFJLEdBQUcsR0FBR0QsSUFBSSxDQUFDRyxJQUFJLENBQUMsR0FBRyxDQUFDO0VBRXJDQyxrQkFBTSxDQUFDQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7RUFDcENELGtCQUFNLENBQUNFLEtBQUssc0JBQUFKLE1BQUEsQ0FBcUJELEdBQUcsT0FBRyxDQUFDO0VBQ3hDLElBQUlNLFVBQXlCLEdBQUdYLElBQUksSUFBSSxJQUFJLElBQUlBLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHUCxNQUFNLENBQUNPLElBQUksQ0FBQztFQUVoRixPQUFPLElBQUluQyxPQUFPLENBQUMsVUFBQ3JDLE9BQU8sRUFBRW9GLE1BQU0sRUFBSztJQUNwQyxJQUFNQyxXQUFXLEdBQUcsSUFBQUMsZ0JBQVEsRUFDeEJULEdBQUcsRUFDSCxVQUFDVSxHQUFRLEVBQUs7TUFDVixJQUFJQSxHQUFHLEVBQUU7UUFDTFAsa0JBQU0sQ0FBQ1EsS0FBSyw0QkFBQVYsTUFBQSxDQUE0QlMsR0FBRyxDQUFFLENBQUM7TUFDbEQ7SUFDSixDQUFDLEVBQ0QsVUFBQ0UsT0FBTyxFQUFFRCxLQUFLLEVBQUs7TUFDaEIsSUFBSSxDQUFDQSxLQUFLLEVBQUU7UUFDUixJQUFJQyxPQUFPLENBQUNDLE9BQU8sQ0FBQ3ZCLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1VBQUEsSUFBQXdCLFdBQUE7VUFDdkNYLGtCQUFNLENBQUNDLElBQUksVUFBQUgsTUFBQSxDQUFVVyxPQUFPLENBQUUsQ0FBQztVQUMvQk4sVUFBVSxJQUFBUSxXQUFBLEdBQUdSLFVBQVUsY0FBQVEsV0FBQSxjQUFBQSxXQUFBLEdBQUlGLE9BQU8sQ0FBQ0csS0FBSyxJQUFBZCxNQUFBLENBQUlYLGVBQWUsTUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMwQixJQUFJLENBQUMsQ0FBQztRQUM3RSxDQUFDLE1BQ0ksSUFBSUosT0FBTyxDQUFDQyxPQUFPLENBQUN0QixrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1VBQy9DWSxrQkFBTSxDQUFDQyxJQUFJLFVBQUFILE1BQUEsQ0FBVVcsT0FBTyxDQUFFLENBQUM7VUFDL0IsSUFBTUssUUFBUSxHQUFHTCxPQUFPLENBQUNHLEtBQUssQ0FBQ3hCLGtCQUFrQixDQUFDO1VBQ2xELElBQUkwQixRQUFRLENBQUNsRSxNQUFNLEdBQUcsQ0FBQyxFQUFFd0QsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLE1BQ25FLElBQUk7WUFDTCxJQUFNVyxJQUFJLEdBQUdDLGVBQWUsQ0FBQ0YsUUFBUSxFQUFFWCxVQUFVLEVBQUVFLFdBQVcsQ0FBQztZQUMvRHJGLE9BQU8sQ0FBQytGLElBQUksQ0FBQztVQUNqQixDQUFDLENBQUMsT0FBT3BKLENBQUMsRUFBRTtZQUFFeUksTUFBTSxDQUFDYSxtQkFBbUIsQ0FBQ3RKLENBQUMsQ0FBQyxDQUFDO1VBQUU7UUFDbEQsQ0FBQyxNQUFNLElBQUk4SSxPQUFPLENBQUNDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1VBQ3ZEVixrQkFBTSxDQUFDUSxLQUFLLFVBQUFWLE1BQUEsQ0FBVVcsT0FBTyxDQUFFLENBQUM7VUFDaENMLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQztRQUNwQyxDQUFDLE1BQU07VUFDSEosa0JBQU0sQ0FBQ0UsS0FBSyxVQUFBSixNQUFBLENBQVVXLE9BQU8sQ0FBRSxDQUFDO1FBQ3BDO01BQ0osQ0FBQyxNQUFNO1FBQ0hULGtCQUFNLENBQUNRLEtBQUssVUFBQVYsTUFBQSxDQUFVVyxPQUFPLENBQUUsQ0FBQztNQUNwQztJQUNKLENBQ0osQ0FBQztFQUNMLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTUSxtQkFBbUJBLENBQUNULEtBQVUsRUFBVTtFQUM3QyxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDN0IsT0FBT0EsS0FBSztFQUNkO0VBRUEsSUFBSUEsS0FBSyxZQUFZcEYsS0FBSyxFQUFFO0lBQzFCLE9BQU9vRixLQUFLLENBQUNDLE9BQU87RUFDdEI7RUFFQSxPQUFPeEIsTUFBTSxDQUFDdUIsS0FBSyxDQUFDO0FBQ3hCO0FBRUEsU0FBU1EsZUFBZUEsQ0FDcEJGLFFBQWtCLEVBQ2xCWCxVQUF5QixFQUN6QkUsV0FBeUIsRUFDckI7RUFBQSxJQUFBYSxJQUFBO0VBQ0osSUFBTXpCLEdBQUcsR0FBR3FCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0QsSUFBSSxDQUFDLENBQUM7RUFDOUIsSUFBTU0sT0FBTyxHQUFHLHNDQUFzQyxDQUFDQyxJQUFJLENBQUMzQixHQUFHLENBQUM7RUFFaEUsSUFBSTBCLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQ0EsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUNBLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNsRCxNQUFNLElBQUkvRixLQUFLLENBQUMsaURBQWlELENBQUM7RUFDcEU7RUFFQSxJQUFNaUcsUUFBUSxHQUFHRixPQUFPLENBQUMsQ0FBQyxDQUFDO0VBQzNCLElBQU01QixJQUFJLEdBQUc0QixPQUFPLENBQUMsQ0FBQyxDQUFDO0VBQ3ZCLElBQU1HLFNBQVMsR0FBR0gsT0FBTyxDQUFDLENBQUMsQ0FBQztFQUM1QixJQUFNSSxJQUFJLEdBQUdKLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO0VBQzdCLElBQU1LLFdBQVcsR0FBR0gsUUFBUSxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUdBLFFBQVEsS0FBSyxPQUFPLEdBQUcsS0FBSyxHQUFHSSxTQUFTO0VBQ3pGLElBQU1DLFNBQVMsSUFBQVIsSUFBQSxHQUFHZixVQUFVLGFBQVZBLFVBQVUsY0FBVkEsVUFBVSxHQUFJbUIsU0FBUyxjQUFBSixJQUFBLGNBQUFBLElBQUEsR0FBSU0sV0FBVztFQUV4RCxJQUFJLENBQUNFLFNBQVMsRUFBRTtJQUNkLE1BQU0sSUFBSXRHLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQztFQUMzRDtFQUVBLElBQU11RyxVQUFVLEdBQUd6QyxNQUFNLENBQUMwQyxRQUFRLENBQUNGLFNBQVMsRUFBRSxFQUFFLENBQUM7RUFDakQsSUFBSXhDLE1BQU0sQ0FBQ3ZDLEtBQUssQ0FBQ2dGLFVBQVUsQ0FBQyxJQUFJQSxVQUFVLElBQUksQ0FBQyxJQUFJQSxVQUFVLEdBQUcsS0FBSyxFQUFFO0lBQ3JFLE1BQU0sSUFBSXZHLEtBQUssa0JBQUEwRSxNQUFBLENBQWtCNEIsU0FBUyxDQUFFLENBQUM7RUFDL0M7RUFFQSxJQUFNRyxRQUFRLE1BQUEvQixNQUFBLENBQU11QixRQUFRLFNBQUF2QixNQUFBLENBQU1QLElBQUksT0FBQU8sTUFBQSxDQUFJNEIsU0FBUyxFQUFBNUIsTUFBQSxDQUFHeUIsSUFBSSxDQUFFO0VBQzVELE9BQU8sSUFBSWxDLElBQUksQ0FBQ0UsSUFBSSxFQUFFTCxNQUFNLENBQUMwQyxRQUFRLENBQUNGLFNBQVMsQ0FBQyxFQUFFRyxRQUFRLEVBQUV4QixXQUFXLENBQUM7QUFDNUU7QUFFQSxJQUFNeUIsUUFBUSxHQUFBeEMsT0FBQSxDQUFBd0MsUUFBQTtFQUFBLElBQUFDLEtBQUEsR0FBQTNELGlCQUFBLGNBQUFqRyxtQkFBQSxHQUFBNkUsSUFBQSxDQUFHLFNBQUFnRixRQUFPakIsSUFBVTtJQUFBLElBQUFrQixtQkFBQSxFQUFBQyxtQkFBQTtJQUFBLElBQUE3QixXQUFBO0lBQUEsT0FBQWxJLG1CQUFBLEdBQUFrQixJQUFBLFVBQUE4SSxTQUFBQyxRQUFBO01BQUEsa0JBQUFBLFFBQUEsQ0FBQTNFLElBQUEsR0FBQTJFLFFBQUEsQ0FBQXJHLElBQUE7UUFBQTtVQUM5QmlFLGtCQUFNLENBQUNFLEtBQUssNkJBQUFKLE1BQUEsQ0FBNkJpQixJQUFJLENBQUN0QixHQUFHLENBQUUsQ0FBQztVQUM5Q1ksV0FBVyxHQUFHVSxJQUFJLENBQUNyQixPQUFPO1VBQ2hDLENBQUF1QyxtQkFBQSxHQUFBNUIsV0FBVyxDQUFDZ0MsTUFBTSxjQUFBSixtQkFBQSxlQUFsQkEsbUJBQUEsQ0FBb0JLLGtCQUFrQixDQUFDLENBQUM7VUFDeEMsQ0FBQUosbUJBQUEsR0FBQTdCLFdBQVcsQ0FBQ2tDLE1BQU0sY0FBQUwsbUJBQUEsZUFBbEJBLG1CQUFBLENBQW9CSSxrQkFBa0IsQ0FBQyxDQUFDO1VBQ3hDakMsV0FBVyxDQUFDaUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDO1VBQ3ZDdEMsa0JBQU0sQ0FBQ0UsS0FBSyxDQUFDLDRDQUE0QyxDQUFDO1VBQUFrQyxRQUFBLENBQUFyRyxJQUFBO1VBQUEsT0FDcEQsSUFBQXlHLCtCQUFnQixFQUFDbkMsV0FBVyxDQUFDO1FBQUE7VUFDbkNMLGtCQUFNLENBQUNFLEtBQUssQ0FBQyxvREFBb0QsQ0FBQztVQUNsRUYsa0JBQU0sQ0FBQ0MsSUFBSSw0QkFBQUgsTUFBQSxDQUE0QmlCLElBQUksQ0FBQ3RCLEdBQUcsQ0FBRSxDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUEyQyxRQUFBLENBQUF4RSxJQUFBO01BQUE7SUFBQSxHQUFBb0UsT0FBQTtFQUFBLENBQ3JEO0VBQUEsZ0JBVktGLFFBQVFBLENBQUFXLEVBQUE7SUFBQSxPQUFBVixLQUFBLENBQUF6RCxLQUFBLE9BQUFELFNBQUE7RUFBQTtBQUFBLEdBVWI7QUFFRCxJQUFNcUUsbUJBQW1CLEdBQUFwRCxPQUFBLENBQUFvRCxtQkFBQTtFQUFBLElBQUFDLEtBQUEsR0FBQXZFLGlCQUFBLGNBQUFqRyxtQkFBQSxHQUFBNkUsSUFBQSxDQUFHLFNBQUE0RixTQUN4QkMsVUFBZSxFQUNmdEQsSUFBYSxFQUNiQyxJQUFhLEVBQ2JzRCxZQUFxQixFQUNyQmxELElBQTBCO0lBQUEsT0FBQXpILG1CQUFBLEdBQUFrQixJQUFBLFVBQUEwSixVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQXZGLElBQUEsR0FBQXVGLFNBQUEsQ0FBQWpILElBQUE7UUFBQTtVQUFBLE9BQUFpSCxTQUFBLENBQUFwSCxNQUFBLFdBRW5CLElBQUl5QixPQUFPO1lBQUEsSUFBQTRGLEtBQUEsR0FBQTdFLGlCQUFBLGNBQUFqRyxtQkFBQSxHQUFBNkUsSUFBQSxDQUFDLFNBQUFrRyxTQUFPbEksT0FBTyxFQUFFbUksT0FBTztjQUFBLElBQUFDLGlCQUFBLEVBQUFDLE9BQUE7Y0FBQSxPQUFBbEwsbUJBQUEsR0FBQWtCLElBQUEsVUFBQWlLLFVBQUFDLFNBQUE7Z0JBQUEsa0JBQUFBLFNBQUEsQ0FBQTlGLElBQUEsR0FBQThGLFNBQUEsQ0FBQXhILElBQUE7a0JBQUE7b0JBQUF3SCxTQUFBLENBQUF4SCxJQUFBO29CQUFBLE9BQ1J5SCxzQkFBc0IsQ0FBQ1gsVUFBVSxDQUFDO2tCQUFBO29CQUE1RE8saUJBQWlCLEdBQUFHLFNBQUEsQ0FBQTlILElBQUE7b0JBQUE4SCxTQUFBLENBQUF4SCxJQUFBO29CQUFBLE9BQ0MwSCxJQUFJLENBQUNsRSxJQUFJLEVBQUVDLElBQUksRUFBRXNELFlBQVksRUFBRWxELElBQUksQ0FBQztrQkFBQTtvQkFBcER5RCxPQUFPLEdBQUFFLFNBQUEsQ0FBQTlILElBQUE7b0JBQ2IySCxpQkFBaUIsQ0FBQ00sS0FBSyxDQUFDLFlBQU07c0JBQzFCMUksT0FBTyxDQUFDcUksT0FBTyxDQUFDO29CQUNwQixDQUFDLENBQUM7a0JBQUE7a0JBQUE7b0JBQUEsT0FBQUUsU0FBQSxDQUFBM0YsSUFBQTtnQkFBQTtjQUFBLEdBQUFzRixRQUFBO1lBQUEsQ0FDTDtZQUFBLGlCQUFBUyxHQUFBLEVBQUFDLEdBQUE7Y0FBQSxPQUFBWCxLQUFBLENBQUEzRSxLQUFBLE9BQUFELFNBQUE7WUFBQTtVQUFBLElBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQTJFLFNBQUEsQ0FBQXBGLElBQUE7TUFBQTtJQUFBLEdBQUFnRixRQUFBO0VBQUEsQ0FDTDtFQUFBLGdCQWRLRixtQkFBbUJBLENBQUFtQixHQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUE7SUFBQSxPQUFBdEIsS0FBQSxDQUFBckUsS0FBQSxPQUFBRCxTQUFBO0VBQUE7QUFBQSxHQWN4QjtBQUVELElBQU1vRixJQUFJLEdBQUFuRSxPQUFBLENBQUFtRSxJQUFBLEdBQUcsU0FBUEEsSUFBSUEsQ0FBSWxFLElBQWEsRUFBRUMsSUFBYSxFQUFFc0QsWUFBcUIsRUFBRWxELElBQTBCLEVBQW1EO0VBQzVJLElBQU1zRSxTQUFTLEdBQUczQyxnQkFBSSxDQUFDdkcsT0FBTyxDQUFDOEgsWUFBWSxHQUFHLEVBQUUsQ0FBQztFQUVqRCxJQUFJakQsR0FBRyxTQUFTO0VBQ2hCLElBQUlpRCxZQUFZLEVBQUVqRCxHQUFHLFFBQUFDLE1BQUEsQ0FBUW9FLFNBQVMsQ0FBRTtFQUN4Q3JFLEdBQUcsSUFBSSxvQ0FBb0M7RUFDM0MsSUFBSU4sSUFBSSxFQUFFTSxHQUFHLGVBQUFDLE1BQUEsQ0FBZVAsSUFBSSxDQUFFO0VBQ2xDLElBQUlDLElBQUksRUFBRUssR0FBRyxlQUFBQyxNQUFBLENBQWVOLElBQUksQ0FBRTtFQUNsQyxJQUFJSSxJQUFJLEVBQUVDLEdBQUcsSUFBSSxHQUFHLEdBQUdELElBQUksQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQztFQUVyQ0Msa0JBQU0sQ0FBQ0MsSUFBSSxDQUFDLGVBQWUsQ0FBQztFQUM1QkQsa0JBQU0sQ0FBQ0UsS0FBSyxzQkFBQUosTUFBQSxDQUFxQkQsR0FBRyxPQUFHLENBQUM7RUFFeEMsSUFBTXNFLFNBQVMsR0FBRzVDLGdCQUFJLENBQUN2RyxPQUFPLENBQUMsa0JBQWtCLENBQUM7RUFDbERvSixjQUFFLENBQUNDLE1BQU0sQ0FBQ0YsU0FBUyxFQUFFO0lBQUVHLFNBQVMsRUFBRSxJQUFJO0lBQUVDLEtBQUssRUFBRTtFQUFLLENBQUMsQ0FBQztFQUV0RCxPQUFPLElBQUlsSCxPQUFPLENBQUMsVUFBQ3JDLE9BQU8sRUFBRW1JLE9BQU8sRUFBSztJQUNyQyxJQUFBN0MsZ0JBQVEsRUFDSlQsR0FBRyxFQUNILFVBQUNVLEdBQVEsRUFBSztNQUNWLElBQUlBLEdBQUcsRUFBRVAsa0JBQU0sQ0FBQ1EsS0FBSyw0QkFBQVYsTUFBQSxDQUE0QlMsR0FBRyxDQUFFLENBQUM7TUFDdkQsSUFBSWlFLFNBQVMsR0FBR0MsYUFBYSxDQUFDLENBQUM7TUFDL0IsSUFBTUMsS0FBSyxHQUFHRixTQUFTLENBQUM1SCxNQUFNO01BQzlCLElBQU0rSCxPQUFPLEdBQUdILFNBQVMsQ0FBQ0ksTUFBTSxDQUFDLFVBQUNDLFFBQStCO1FBQUEsT0FBS0EsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJQSxRQUFRLENBQUMsU0FBUyxDQUFDO01BQUEsRUFBQyxDQUFDakksTUFBTTtNQUN4SCxJQUFNa0ksT0FBTyxHQUFHSixLQUFLLEdBQUdDLE9BQU87TUFDL0IsSUFBSUksTUFBTSxHQUFHO1FBQUVMLEtBQUssRUFBTEEsS0FBSztRQUFFSSxPQUFPLEVBQVBBLE9BQU87UUFBRUgsT0FBTyxFQUFQQTtNQUFRLENBQUM7TUFDeEMzSixPQUFPLENBQUMrSixNQUFNLENBQUM7SUFDbkIsQ0FBQyxFQUNELFVBQUN0RSxPQUFPLEVBQUVELEtBQUssRUFBSztNQUNoQixJQUFJQyxPQUFPLENBQUNDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQzlDc0UsT0FBTyxDQUFDQyxHQUFHLENBQUN4RSxPQUFPLENBQUMsRUFBQztNQUN6QixDQUFDLE1BQU07UUFDSFQsa0JBQU0sQ0FBQ1EsS0FBSyxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUMsVUFBQVYsTUFBQSxDQUFVVyxPQUFPLENBQUUsQ0FBQztNQUN6RDtJQUNKLENBQ0osQ0FBQztFQUNMLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxJQUFNeUUsZUFBZSxHQUFBNUYsT0FBQSxDQUFBNEYsZUFBQSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJQyxNQUE4QyxFQUFLO0VBQ3hFLElBQUlYLFNBQVMsR0FBR0MsYUFBYSxDQUFDLENBQUM7RUFDL0JELFNBQVMsQ0FBQ1ksR0FBRyxDQUFDLFVBQVVQLFFBQStCLEVBQUU7SUFDckQsSUFBSTlILElBQUksR0FBRyxTQUFTO0lBQ3BCLElBQUk4SCxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7TUFDeEIsSUFBTVEsV0FBVyxHQUFHUixRQUFRLENBQUMsWUFBWSxDQUFDLENBQ3JDaEUsSUFBSSxDQUFDLENBQUMsQ0FDTnlFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQ2xCMUUsS0FBSyxDQUFDLDJCQUEyQixDQUFDO01BQ3ZDLElBQUl5RSxXQUFXLENBQUN6SSxNQUFNLEdBQUcsQ0FBQyxFQUFFRyxJQUFJLEdBQUdzSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4RSxJQUFJLENBQUMsQ0FBQztJQUM1RDtJQUNBc0UsTUFBTSxDQUFDcEksSUFBSSxFQUFFLFlBQU07TUFDZixJQUFJOEgsUUFBUSxDQUFDRixPQUFPLElBQUlFLFFBQVEsQ0FBQ1UsT0FBTyxFQUFFLE1BQU0sSUFBSW5LLEtBQUssQ0FBQyxjQUFjLENBQUM7SUFDN0UsQ0FBQyxDQUFDO0VBQ04sQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELElBQU1vSyxlQUFlLEdBQUFsRyxPQUFBLENBQUFrRyxlQUFBLEdBQUcsU0FBbEJBLGVBQWVBLENBQUlDLFFBQWdCLEVBQUVDLGlCQUEwQixFQUFvQjtFQUNyRixJQUFNQyxZQUFZLEdBQUd6TyxPQUFPLENBQUNxSyxnQkFBSSxDQUFDdkcsT0FBTyxDQUFDeUssUUFBUSxDQUFDLENBQUM7RUFDcEQsT0FBT0csa0JBQWtCLENBQUNELFlBQVksRUFBRUQsaUJBQWlCLENBQUM7QUFDOUQsQ0FBQztBQUVELElBQU1FLGtCQUFrQixHQUFBdEcsT0FBQSxDQUFBc0csa0JBQUEsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJRCxZQUFpQixFQUFFRCxpQkFBMEIsRUFBb0I7RUFDekZBLGlCQUFpQixHQUFHQSxpQkFBaUIsSUFBSSx1QkFBdUI7RUFFaEUxRixrQkFBTSxDQUFDQyxJQUFJLGtDQUFBSCxNQUFBLENBQWtDNEYsaUJBQWlCLENBQUUsQ0FBQztFQUVqRSxPQUFPLElBQUlySSxPQUFPLENBQUMsVUFBQ3JDLE9BQU8sRUFBRW9GLE1BQU0sRUFBSztJQUNwQ3lGLGlCQUFLLENBQ0FDLElBQUksSUFBQWhHLE1BQUEsQ0FBSTRGLGlCQUFpQiwrQkFBNEJDLFlBQVksQ0FBQyxDQUNsRXpLLElBQUksQ0FBQyxVQUFBNkssUUFBUSxFQUFJO01BQ2QvRixrQkFBTSxDQUFDRSxLQUFLLHNCQUFBSixNQUFBLENBQXNCaUcsUUFBUSxDQUFDQyxJQUFJLENBQUUsQ0FBQztNQUNsRGhHLGtCQUFNLENBQUNDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztNQUN6Q2pGLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLFNBQ0ksQ0FBQyxVQUFBdUYsR0FBRyxFQUFJO01BQUEsSUFBQTBGLGFBQUE7TUFDVixJQUFJQywyQkFBMkIsMENBQUFwRyxNQUFBLENBQTBDUyxHQUFHLENBQUU7TUFDOUU7TUFDQSxJQUFJQSxHQUFHLElBQUksRUFBQTBGLGFBQUEsR0FBQTFGLEdBQUcsQ0FBQ3dGLFFBQVEsY0FBQUUsYUFBQSx1QkFBWkEsYUFBQSxDQUFjRSxPQUFPLENBQUMsY0FBYyxDQUFDLE1BQUssWUFBWSxFQUFFO1FBQy9ELElBQUk7VUFDQTtVQUNBLElBQU1DLFNBQVMsR0FBRyxPQUFPN0YsR0FBRyxDQUFDd0YsUUFBUSxDQUFDQyxJQUFJLEtBQUssUUFBUSxHQUFHekYsR0FBRyxDQUFDd0YsUUFBUSxDQUFDQyxJQUFJLEdBQUcsMEJBQTBCO1VBQ3hHRSwyQkFBMkIsVUFBQXBHLE1BQUEsQ0FBVXNHLFNBQVMsQ0FBRTtRQUNwRCxDQUFDLENBQUMsT0FBT3pPLENBQUMsRUFBRTtVQUNScUksa0JBQU0sQ0FBQ1EsS0FBSyxDQUFDLHdDQUF3QyxDQUFDO1FBQzFEO01BQ0o7TUFDQVIsa0JBQU0sQ0FBQ1EsS0FBSyxDQUFDMEYsMkJBQTJCLENBQUM7TUFDekM5RixNQUFNLENBQUM4RiwyQkFBMkIsQ0FBQztJQUN2QyxDQUFDLENBQUM7RUFDVixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsSUFBTUcsZUFBZSxHQUFBL0csT0FBQSxDQUFBK0csZUFBQSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFBLEVBQVM7RUFDMUIsSUFBTXhHLEdBQUcsY0FBYztFQUN2Qkcsa0JBQU0sQ0FBQ0MsSUFBSSxDQUFDLDRCQUE0QixDQUFDO0VBQ3pDRCxrQkFBTSxDQUFDRSxLQUFLLG1DQUFBSixNQUFBLENBQWtDRCxHQUFHLE9BQUcsQ0FBQztFQUVyRCxJQUFBUyxnQkFBUSxFQUNKVCxHQUFHLEVBQ0gsVUFBQ1UsR0FBUSxFQUFLO0lBQ1YsSUFBSUEsR0FBRyxFQUFFUCxrQkFBTSxDQUFDUSxLQUFLLHlDQUFBVixNQUFBLENBQXlDUyxHQUFHLENBQUUsQ0FBQztFQUN4RSxDQUFDLEVBQ0QsVUFBQ0UsT0FBTyxFQUFFRCxLQUFLLEVBQUs7SUFDaEIsSUFBSUEsS0FBSyxFQUFFUixrQkFBTSxDQUFDUSxLQUFLLHVCQUFBVixNQUFBLENBQXVCVyxPQUFPLENBQUUsQ0FBQyxNQUNuRHVFLE9BQU8sQ0FBQ0MsR0FBRyxJQUFBbkYsTUFBQSxDQUFJVyxPQUFPLENBQUUsQ0FBQztFQUNsQyxDQUNKLENBQUM7QUFDTCxDQUFDO0FBRUQsSUFBTStDLHNCQUFzQixHQUFBbEUsT0FBQSxDQUFBa0Usc0JBQUEsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJWCxVQUFlLEVBQTJCO0VBQ3RFN0Msa0JBQU0sQ0FBQ0UsS0FBSyx3Q0FBd0MsQ0FBQztFQUNyRCxJQUFJb0csR0FBRyxHQUFHQyxnQkFBSSxDQUFDQyxZQUFZLENBQUMsVUFBQ0MsSUFBSSxFQUFFQyxHQUFHLEVBQUs7SUFDdkNBLEdBQUcsQ0FBQ0MsU0FBUyxDQUFDLEdBQUcsRUFBRTtNQUFFLGNBQWMsRUFBRTtJQUFtQixDQUFDLENBQUM7SUFDMUQsSUFBTUMsU0FBUyxHQUFHQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0MsZ0JBQWdCLENBQUNsRSxVQUFVLENBQUMsQ0FBQztJQUM5RDdDLGtCQUFNLENBQUNFLEtBQUssZUFBQUosTUFBQSxDQUFlOEcsU0FBUyxDQUFFLENBQUM7SUFDdkNGLEdBQUcsQ0FBQ00sR0FBRyxDQUFDSixTQUFTLENBQUM7RUFDdEIsQ0FBQyxDQUFDO0VBQ0YsT0FBTyxJQUFJdkosT0FBTyxDQUFjLFVBQUNyQyxPQUFPLEVBQUVvRixNQUFNLEVBQUs7SUFDakRrRyxHQUFHLENBQUNXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBQTFHLEdBQUcsRUFBSTtNQUNuQlAsa0JBQU0sQ0FBQ1EsS0FBSyxDQUFDLHlEQUF5RCxFQUFFRCxHQUFHLENBQUM7TUFDNUVILE1BQU0sQ0FBQyx5REFBeUQsQ0FBQztJQUNyRSxDQUFDLENBQUM7SUFDRmtHLEdBQUcsQ0FBQ1ksTUFBTSxDQUFDO01BQUUzSCxJQUFJLEVBQUUsV0FBVztNQUFFQyxJQUFJLEVBQUU7SUFBRSxDQUFDLEVBQUUsWUFBTTtNQUM3QyxJQUFNMkgsT0FBTyxHQUFHYixHQUFHLENBQUNhLE9BQU8sQ0FBQyxDQUF1QjtNQUNuRHpILE9BQU8sQ0FBQzBILEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBQXRILE1BQUEsQ0FBYXFILE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFQSxPQUFPLE9BQUFySCxNQUFBLENBQUlxSCxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTNILElBQUksQ0FBRTtNQUMzRVEsa0JBQU0sQ0FBQ0MsSUFBSSxnQ0FBQUgsTUFBQSxDQUFnQ0osT0FBTyxDQUFDMEgsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFFLENBQUM7TUFDekVwTSxPQUFPLENBQUNzTCxHQUFHLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ04sQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELElBQU03QixhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUEsRUFBUztFQUN4QixJQUFNNEMsVUFBVSxHQUFHOUYsZ0JBQUksQ0FBQ3ZHLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQztFQUMxRSxJQUFJZ0wsSUFBSSxHQUFHNUIsY0FBRSxDQUFDa0QsWUFBWSxDQUFDRCxVQUFVLENBQUM7RUFDdEMsSUFBTUUsTUFBTSxHQUFHLElBQUlDLHdCQUFTLENBQUMsQ0FBQztFQUM5QixJQUFJQyxTQUFTLEdBQUdGLE1BQU0sQ0FBQ0csS0FBSyxDQUFDMUIsSUFBSSxDQUFDO0VBQ2xDeUIsU0FBUyxDQUFDRSxTQUFTLENBQUM5QyxRQUFRLEdBQUcrQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0osU0FBUyxDQUFDRSxTQUFTLENBQUM5QyxRQUFRLENBQUMsR0FBRzRDLFNBQVMsQ0FBQ0UsU0FBUyxDQUFDOUMsUUFBUSxHQUFHLENBQUM0QyxTQUFTLENBQUNFLFNBQVMsQ0FBQzlDLFFBQVEsQ0FBQztFQUMxSSxPQUFPNEMsU0FBUyxDQUFDRSxTQUFTLENBQUM5QyxRQUFRO0FBQ3ZDLENBQUM7QUFFRCxJQUFNaUQsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFJakYsVUFBZSxFQUFrQztFQUNwRSxJQUFNa0YsT0FBTyxHQUFHLElBQUFDLGdDQUFvQixFQUFDbkYsVUFBVSxDQUFDO0VBQ2hELElBQUkrRCxTQUFzQyxHQUFHLENBQUMsQ0FBQztFQUMvQ21CLE9BQU8sQ0FBQzNDLEdBQUcsQ0FBQyxVQUFBNkMsU0FBUyxFQUFJO0lBQ3JCckIsU0FBUyxDQUFDcUIsU0FBUyxDQUFDMUcsSUFBSSxDQUFDLEdBQUcwRyxTQUFTLENBQUNDLE9BQU87RUFDakQsQ0FBQyxDQUFDO0VBQ0YsT0FBT3RCLFNBQVMsQ0FBQyxHQUFHLENBQUM7RUFDckIsT0FBT0EsU0FBUztBQUNwQixDQUFDO0FBRUQsU0FBU0csZ0JBQWdCQSxDQUFDbEUsVUFBZSxFQUFFO0VBQ3ZDLElBQUkrRCxTQUFTLEdBQUdrQixhQUFhLENBQUNqRixVQUFVLENBQUM7RUFDekMsSUFBSXNGLHFCQUFxQixHQUFHO0lBQ3hCQyxRQUFRLEVBQUU7TUFDTkMsV0FBVyxFQUFFO1FBQ1RDLFFBQVEsRUFBRTtVQUNOQyxrQkFBa0IsRUFBRTtZQUNoQkMsaUJBQWlCLEVBQUU7VUFDdkI7UUFDSjtNQUNKO0lBQ0o7RUFDSixDQUFDO0VBQ0RsUSxNQUFNLENBQUNnRixJQUFJLENBQUNzSixTQUFTLENBQUMsQ0FDakI2QixJQUFJLENBQUMsQ0FBQyxDQUNOckQsR0FBRyxDQUFDLFVBQUE3RCxJQUFJLEVBQUk7SUFDVDRHLHFCQUFxQixDQUFDQyxRQUFRLENBQUNDLFdBQVcsQ0FBQ0MsUUFBUSxDQUFDQyxrQkFBa0IsQ0FBQ0MsaUJBQWlCLENBQUNqTSxJQUFJLENBQUM7TUFDMUZ3TCxPQUFPLEVBQUU7UUFDTFcsd0JBQXdCLEVBQUU7VUFDdEJSLE9BQU8sRUFBRXRCLFNBQVMsQ0FBQ3JGLElBQUksQ0FBQyxDQUFDa0gsSUFBSSxDQUFDLENBQUM7VUFDL0JFLFFBQVEsRUFBRSxDQUFDQyw2QkFBNkIsQ0FBQ3JILElBQUksQ0FBQyxDQUFDLENBQUM2RCxHQUFHLENBQUN5RCxtQkFBbUI7UUFDM0U7TUFDSjtJQUNKLENBQVUsQ0FBQztFQUNmLENBQUMsQ0FBQztFQUNOLE9BQU9WLHFCQUFxQjtBQUNoQztBQUVBLElBQU1TLDZCQUE2QixHQUFHLFNBQWhDQSw2QkFBNkJBLENBQUlySCxJQUFZLEVBQUs7RUFDcEQsT0FBT0EsSUFBSSxDQUFDK0QsT0FBTyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQ0EsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7QUFDL0QsQ0FBQztBQUVELElBQU11RCxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJdEgsSUFBWSxFQUFLO0VBQzFDLE9BQU9BLElBQUksQ0FBQytELE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO0FBQzFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
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==
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1 @@
|
|
|
1
1
|
export { startStub, startStub as startHttpStub, stopStub, stopStub as stopHttpStub, test, testWithApiCoverage, setExpectations, setExpectations as setHttpStubExpectations, setExpectationJson, setExpectationJson as setHttpStubExpectationJson, printJarVersion, showTestResults, } from "./core";
|
|
2
|
-
export { startKafkaStub, startKafkaStub as startKafkaMock, stopKafkaStub, stopKafkaStub as stopKafkaMock, verifyKafkaStubMessage, verifyKafkaStubMessage as verifyKafkaMockMessage, verifyKafkaStub, verifyKafkaStub as verifyKafkaMock, setKafkaStubExpectations, setKafkaStubExpectations as setKafkaMockExpectations, } from "./kafka";
|
|
3
|
-
export { startGraphQlStub, stopGraphQlStub, } from "./graphql";
|
package/dist/index.js
CHANGED
|
@@ -33,78 +33,30 @@ Object.defineProperty(exports, "setHttpStubExpectations", {
|
|
|
33
33
|
return _core.setExpectations;
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
-
Object.defineProperty(exports, "setKafkaMockExpectations", {
|
|
37
|
-
enumerable: true,
|
|
38
|
-
get: function get() {
|
|
39
|
-
return _kafka.setKafkaStubExpectations;
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
Object.defineProperty(exports, "setKafkaStubExpectations", {
|
|
43
|
-
enumerable: true,
|
|
44
|
-
get: function get() {
|
|
45
|
-
return _kafka.setKafkaStubExpectations;
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
36
|
Object.defineProperty(exports, "showTestResults", {
|
|
49
37
|
enumerable: true,
|
|
50
38
|
get: function get() {
|
|
51
39
|
return _core.showTestResults;
|
|
52
40
|
}
|
|
53
41
|
});
|
|
54
|
-
Object.defineProperty(exports, "startGraphQlStub", {
|
|
55
|
-
enumerable: true,
|
|
56
|
-
get: function get() {
|
|
57
|
-
return _graphql.startGraphQlStub;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
42
|
Object.defineProperty(exports, "startHttpStub", {
|
|
61
43
|
enumerable: true,
|
|
62
44
|
get: function get() {
|
|
63
45
|
return _core.startStub;
|
|
64
46
|
}
|
|
65
47
|
});
|
|
66
|
-
Object.defineProperty(exports, "startKafkaMock", {
|
|
67
|
-
enumerable: true,
|
|
68
|
-
get: function get() {
|
|
69
|
-
return _kafka.startKafkaStub;
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
Object.defineProperty(exports, "startKafkaStub", {
|
|
73
|
-
enumerable: true,
|
|
74
|
-
get: function get() {
|
|
75
|
-
return _kafka.startKafkaStub;
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
48
|
Object.defineProperty(exports, "startStub", {
|
|
79
49
|
enumerable: true,
|
|
80
50
|
get: function get() {
|
|
81
51
|
return _core.startStub;
|
|
82
52
|
}
|
|
83
53
|
});
|
|
84
|
-
Object.defineProperty(exports, "stopGraphQlStub", {
|
|
85
|
-
enumerable: true,
|
|
86
|
-
get: function get() {
|
|
87
|
-
return _graphql.stopGraphQlStub;
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
54
|
Object.defineProperty(exports, "stopHttpStub", {
|
|
91
55
|
enumerable: true,
|
|
92
56
|
get: function get() {
|
|
93
57
|
return _core.stopStub;
|
|
94
58
|
}
|
|
95
59
|
});
|
|
96
|
-
Object.defineProperty(exports, "stopKafkaMock", {
|
|
97
|
-
enumerable: true,
|
|
98
|
-
get: function get() {
|
|
99
|
-
return _kafka.stopKafkaStub;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
Object.defineProperty(exports, "stopKafkaStub", {
|
|
103
|
-
enumerable: true,
|
|
104
|
-
get: function get() {
|
|
105
|
-
return _kafka.stopKafkaStub;
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
60
|
Object.defineProperty(exports, "stopStub", {
|
|
109
61
|
enumerable: true,
|
|
110
62
|
get: function get() {
|
|
@@ -123,31 +75,5 @@ Object.defineProperty(exports, "testWithApiCoverage", {
|
|
|
123
75
|
return _core.testWithApiCoverage;
|
|
124
76
|
}
|
|
125
77
|
});
|
|
126
|
-
Object.defineProperty(exports, "verifyKafkaMock", {
|
|
127
|
-
enumerable: true,
|
|
128
|
-
get: function get() {
|
|
129
|
-
return _kafka.verifyKafkaStub;
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
Object.defineProperty(exports, "verifyKafkaMockMessage", {
|
|
133
|
-
enumerable: true,
|
|
134
|
-
get: function get() {
|
|
135
|
-
return _kafka.verifyKafkaStubMessage;
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
Object.defineProperty(exports, "verifyKafkaStub", {
|
|
139
|
-
enumerable: true,
|
|
140
|
-
get: function get() {
|
|
141
|
-
return _kafka.verifyKafkaStub;
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
Object.defineProperty(exports, "verifyKafkaStubMessage", {
|
|
145
|
-
enumerable: true,
|
|
146
|
-
get: function get() {
|
|
147
|
-
return _kafka.verifyKafkaStubMessage;
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
78
|
var _core = require("./core");
|
|
151
|
-
|
|
152
|
-
var _graphql = require("./graphql");
|
|
153
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfa2Fma2EiLCJfZ3JhcGhxbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuXHRzdGFydFN0dWIsXG5cdHN0YXJ0U3R1YiBhcyBzdGFydEh0dHBTdHViLFxuXHRzdG9wU3R1Yixcblx0c3RvcFN0dWIgYXMgc3RvcEh0dHBTdHViLFxuXHR0ZXN0LFxuXHR0ZXN0V2l0aEFwaUNvdmVyYWdlLFxuXHRzZXRFeHBlY3RhdGlvbnMsXG5cdHNldEV4cGVjdGF0aW9ucyBhcyBzZXRIdHRwU3R1YkV4cGVjdGF0aW9ucyxcblx0c2V0RXhwZWN0YXRpb25Kc29uLFxuXHRzZXRFeHBlY3RhdGlvbkpzb24gYXMgc2V0SHR0cFN0dWJFeHBlY3RhdGlvbkpzb24sXG5cdHByaW50SmFyVmVyc2lvbixcblx0c2hvd1Rlc3RSZXN1bHRzLFxufSBmcm9tIFwiLi9jb3JlXCI7XG5leHBvcnQge1xuXHRzdGFydEthZmthU3R1Yixcblx0c3RhcnRLYWZrYVN0dWIgYXMgc3RhcnRLYWZrYU1vY2ssXG5cdHN0b3BLYWZrYVN0dWIsXG5cdHN0b3BLYWZrYVN0dWIgYXMgc3RvcEthZmthTW9jayxcblx0dmVyaWZ5S2Fma2FTdHViTWVzc2FnZSxcblx0dmVyaWZ5S2Fma2FTdHViTWVzc2FnZSBhcyB2ZXJpZnlLYWZrYU1vY2tNZXNzYWdlLFxuXHR2ZXJpZnlLYWZrYVN0dWIsXG5cdHZlcmlmeUthZmthU3R1YiBhcyB2ZXJpZnlLYWZrYU1vY2ssXG5cdHNldEthZmthU3R1YkV4cGVjdGF0aW9ucyxcblx0c2V0S2Fma2FTdHViRXhwZWN0YXRpb25zIGFzIHNldEthZmthTW9ja0V4cGVjdGF0aW9ucyxcbn0gZnJvbSBcIi4va2Fma2FcIjtcbmV4cG9ydCB7XG5cdHN0YXJ0R3JhcGhRbFN0dWIsXG5cdHN0b3BHcmFwaFFsU3R1Yixcbn0gZnJvbSBcIi4vZ3JhcGhxbFwiO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQWNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQVlBLElBQUFFLFFBQUEsR0FBQUYsT0FBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
79
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcblx0c3RhcnRTdHViLFxuXHRzdGFydFN0dWIgYXMgc3RhcnRIdHRwU3R1Yixcblx0c3RvcFN0dWIsXG5cdHN0b3BTdHViIGFzIHN0b3BIdHRwU3R1Yixcblx0dGVzdCxcblx0dGVzdFdpdGhBcGlDb3ZlcmFnZSxcblx0c2V0RXhwZWN0YXRpb25zLFxuXHRzZXRFeHBlY3RhdGlvbnMgYXMgc2V0SHR0cFN0dWJFeHBlY3RhdGlvbnMsXG5cdHNldEV4cGVjdGF0aW9uSnNvbixcblx0c2V0RXhwZWN0YXRpb25Kc29uIGFzIHNldEh0dHBTdHViRXhwZWN0YXRpb25Kc29uLFxuXHRwcmludEphclZlcnNpb24sXG5cdHNob3dUZXN0UmVzdWx0cyxcbn0gZnJvbSBcIi4vY29yZVwiO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsT0FBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specmatic",
|
|
3
|
-
"version": "2.13.
|
|
4
|
-
"specmaticVersion": "2.13.
|
|
3
|
+
"version": "2.13.2",
|
|
4
|
+
"specmaticVersion": "2.13.2",
|
|
5
5
|
"description": "Node wrapper for Specmatic",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"scripts": {
|
|
@@ -29,10 +29,7 @@
|
|
|
29
29
|
"asyncapi",
|
|
30
30
|
"api",
|
|
31
31
|
"mocking",
|
|
32
|
-
"stubbing"
|
|
33
|
-
"kafka",
|
|
34
|
-
"jms",
|
|
35
|
-
"redis"
|
|
32
|
+
"stubbing"
|
|
36
33
|
],
|
|
37
34
|
"author": "Sahil Sharma (sahilaug@gmail.com)",
|
|
38
35
|
"license": "ISC",
|
package/specmatic.jar
CHANGED
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import callSpecmaticCli from '../command.line';
|
|
3
|
-
import { specmaticCoreJarName
|
|
3
|
+
import { specmaticCoreJarName } from '../../config';
|
|
4
4
|
import fs from 'fs';
|
|
5
5
|
import { ChildProcess, spawn } from 'child_process';
|
|
6
6
|
import { mock as jestMock, mockReset } from 'jest-mock-extended';
|
|
@@ -17,91 +17,13 @@ beforeEach(() => {
|
|
|
17
17
|
jest.resetAllMocks();
|
|
18
18
|
});
|
|
19
19
|
|
|
20
|
-
test('
|
|
20
|
+
test('passes arguments to the jar', async () => {
|
|
21
21
|
spawn.mockReturnValue(javaProcessMock);
|
|
22
22
|
|
|
23
23
|
jest.spyOn(fs, 'existsSync').mockReturnValue(true);
|
|
24
|
-
const testArgs = ['
|
|
24
|
+
const testArgs = ['test', '--testBaseURL', 'http://localhost:9000', `--filter=PATH='/todos/add' || STATUS='404'`, '--foo=bar', 1, 2];
|
|
25
25
|
callSpecmaticCli(testArgs);
|
|
26
26
|
const specmaticJarPath = path.resolve(__dirname, '..', '..', '..', specmaticCoreJarName);
|
|
27
|
-
expect(spawn.mock.calls[0][
|
|
28
|
-
expect(spawn.mock.calls[0][1]
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
test('pass kafka related calls to the kafka jar', async () => {
|
|
32
|
-
spawn.mockReturnValue(javaProcessMock);
|
|
33
|
-
|
|
34
|
-
jest.spyOn(fs, 'existsSync').mockReturnValue(true);
|
|
35
|
-
const testArgs = ['node', 'index.js', 'kafka', '--host', 'localhost', '--port', '8000'];
|
|
36
|
-
callSpecmaticCli(testArgs);
|
|
37
|
-
const specmaticKafkaJarPath = path.resolve(__dirname, '..', '..', '..', '..', 'specmatic-commercial', 'kafka', specmaticKafkaJarName);
|
|
38
|
-
expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(specmaticKafkaJarPath)}"`);
|
|
39
|
-
expect(spawn.mock.calls[0][1][2]).toBe("--host=\"localhost\" --port=\"8000\"");
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
test('pass graphql related calls to the graphql jar', async () => {
|
|
44
|
-
spawn.mockReturnValue(javaProcessMock);
|
|
45
|
-
|
|
46
|
-
jest.spyOn(fs, 'existsSync').mockReturnValue(true);
|
|
47
|
-
const testArgs = ['node', 'index.js', 'graphql', '--host', 'localhost', '--port', '8000'];
|
|
48
|
-
callSpecmaticCli(testArgs);
|
|
49
|
-
const specmaticGraphQlJarPath = path.resolve(__dirname, '..', '..', '..', '..', 'specmatic-commercial', 'graphql', specmaticGraphQlJarName);
|
|
50
|
-
expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(specmaticGraphQlJarPath)}"`);
|
|
51
|
-
expect(spawn.mock.calls[0][1][2]).toBe("--host=\"localhost\" --port=\"8000\"");
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
test('pass filter arguments to the jar', async () => {
|
|
55
|
-
spawn.mockReturnValue(javaProcessMock);
|
|
56
|
-
|
|
57
|
-
jest.spyOn(fs, 'existsSync').mockReturnValue(true);
|
|
58
|
-
const testArgs = ['node', 'index.js', 'test', '*.specmatic','--testBaseURL', 'http://localhost:9000', '--filter="PATH=\'/todos/add\' || STATUS=\'404\'"'];
|
|
59
|
-
callSpecmaticCli(testArgs);
|
|
60
|
-
const specmaticJarPath = path.resolve(__dirname, '..', '..', '..', specmaticCoreJarName);
|
|
61
|
-
expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(specmaticJarPath)}"`);
|
|
62
|
-
expect(spawn.mock.calls[0][1][2]).toBe("test *.specmatic --testBaseURL=\"http://localhost:9000\" --filter=\"PATH='/todos/add' || STATUS='404'\"");
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
test('make sure args are not expanded into camelcase', async () => {
|
|
66
|
-
spawn.mockReturnValue(javaProcessMock);
|
|
67
|
-
|
|
68
|
-
jest.spyOn(fs, 'existsSync').mockReturnValue(true);
|
|
69
|
-
const testArgs = ['node', 'index.js', 'test', '*.specmatic', 'test', '--timeout-in-ms', '10'];
|
|
70
|
-
callSpecmaticCli(testArgs);
|
|
71
|
-
const specmaticJarPath = path.resolve(__dirname, '..', '..', '..', specmaticCoreJarName);
|
|
72
|
-
expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(specmaticJarPath)}"`);
|
|
73
|
-
expect(spawn.mock.calls[0][1][2]).toBe("test *.specmatic test --timeout-in-ms=\"10\"");
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
test('make sure args are not expanded into objects if there is dot', async () => {
|
|
77
|
-
spawn.mockReturnValue(javaProcessMock);
|
|
78
|
-
|
|
79
|
-
jest.spyOn(fs, 'existsSync').mockReturnValue(true);
|
|
80
|
-
const testArgs = ['node', 'index.js', 'test', '*.specmatic', 'test', '--no.foo', '10'];
|
|
81
|
-
callSpecmaticCli(testArgs);
|
|
82
|
-
const specmaticJarPath = path.resolve(__dirname, '..', '..', '..', specmaticCoreJarName);
|
|
83
|
-
expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(specmaticJarPath)}"`);
|
|
84
|
-
expect(spawn.mock.calls[0][1][2]).toBe("test *.specmatic test --no.foo=\"10\"");
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
test('make sure args are not parsed as number if the value is number', async () => {
|
|
88
|
-
spawn.mockReturnValue(javaProcessMock);
|
|
89
|
-
|
|
90
|
-
jest.spyOn(fs, 'existsSync').mockReturnValue(true);
|
|
91
|
-
const testArgs = ['node', 'index.js', 'test', '*.specmatic', 'test', '--foo', '10'];
|
|
92
|
-
callSpecmaticCli(testArgs);
|
|
93
|
-
const specmaticJarPath = path.resolve(__dirname, '..', '..', '..', specmaticCoreJarName);
|
|
94
|
-
expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(specmaticJarPath)}"`);
|
|
95
|
-
expect(spawn.mock.calls[0][1][2]).toBe("test *.specmatic test --foo=\"10\"");
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
test('make sure args are not negated if prefixed with --no ', async () => {
|
|
99
|
-
spawn.mockReturnValue(javaProcessMock);
|
|
100
|
-
|
|
101
|
-
jest.spyOn(fs, 'existsSync').mockReturnValue(true);
|
|
102
|
-
const testArgs = ['node', 'index.js', 'test', '*.specmatic', 'test', '--no-foo', '10'];
|
|
103
|
-
callSpecmaticCli(testArgs);
|
|
104
|
-
const specmaticJarPath = path.resolve(__dirname, '..', '..', '..', specmaticCoreJarName);
|
|
105
|
-
expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(specmaticJarPath)}"`);
|
|
106
|
-
expect(spawn.mock.calls[0][1][2]).toBe("test *.specmatic test --no-foo=\"10\"");
|
|
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`]);
|
|
107
29
|
});
|