botframework-directlinejs 0.14.2-master.8e67d7a → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/dist/directline.js +2 -24
- package/dist/directline.js.LICENSE.txt +18 -0
- package/dist/stats.json +52066 -0
- package/lib/dedupeFilenames.js +1 -1
- package/lib/directLine.js +16 -27
- package/lib/directLine.mock.d.ts +2 -8
- package/lib/directLine.mock.js +13 -23
- package/lib/directLineStreaming.js +43 -77
- package/lib/parseFilename.js +1 -1
- package/package.json +37 -37
- package/dist/stats.html +0 -208
package/lib/directLine.mock.js
CHANGED
|
@@ -17,6 +17,12 @@ var _rxjs = require("rxjs");
|
|
|
17
17
|
|
|
18
18
|
var _url = require("url");
|
|
19
19
|
|
|
20
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
21
|
+
|
|
22
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
23
|
+
|
|
24
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
25
|
+
|
|
20
26
|
// MOCK helpers
|
|
21
27
|
var notImplemented = function notImplemented() {
|
|
22
28
|
throw new Error('not implemented');
|
|
@@ -150,28 +156,18 @@ var mockAjax = function mockAjax(server, customAjax) {
|
|
|
150
156
|
|
|
151
157
|
var _start = _after - 1;
|
|
152
158
|
|
|
153
|
-
var
|
|
154
|
-
|
|
155
|
-
var _iteratorError = undefined;
|
|
159
|
+
var _iterator = _createForOfIteratorHelper(server.conversation.sockets),
|
|
160
|
+
_step;
|
|
156
161
|
|
|
157
162
|
try {
|
|
158
|
-
for (
|
|
163
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
159
164
|
var socket = _step.value;
|
|
160
165
|
socket.play(_start, _after);
|
|
161
166
|
}
|
|
162
167
|
} catch (err) {
|
|
163
|
-
|
|
164
|
-
_iteratorError = err;
|
|
168
|
+
_iterator.e(err);
|
|
165
169
|
} finally {
|
|
166
|
-
|
|
167
|
-
if (!_iteratorNormalCompletion && _iterator["return"] != null) {
|
|
168
|
-
_iterator["return"]();
|
|
169
|
-
}
|
|
170
|
-
} finally {
|
|
171
|
-
if (_didIteratorError) {
|
|
172
|
-
throw _iteratorError;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
170
|
+
_iterator.f();
|
|
175
171
|
}
|
|
176
172
|
|
|
177
173
|
var _response2 = {
|
|
@@ -245,9 +241,7 @@ exports.mockAjax = mockAjax;
|
|
|
245
241
|
var mockWebSocket = function mockWebSocket(server) {
|
|
246
242
|
var _class, _temp;
|
|
247
243
|
|
|
248
|
-
return _temp = _class =
|
|
249
|
-
/*#__PURE__*/
|
|
250
|
-
function () {
|
|
244
|
+
return _temp = _class = /*#__PURE__*/function () {
|
|
251
245
|
function MockWebSocket(url, protocols) {
|
|
252
246
|
var _this = this;
|
|
253
247
|
|
|
@@ -262,10 +256,6 @@ var mockWebSocket = function mockWebSocket(server) {
|
|
|
262
256
|
(0, _defineProperty2["default"])(this, "CLOSING", WebSocket.CLOSING);
|
|
263
257
|
(0, _defineProperty2["default"])(this, "CONNECTING", WebSocket.CONNECTING);
|
|
264
258
|
(0, _defineProperty2["default"])(this, "OPEN", WebSocket.OPEN);
|
|
265
|
-
(0, _defineProperty2["default"])(this, "onclose", void 0);
|
|
266
|
-
(0, _defineProperty2["default"])(this, "onerror", void 0);
|
|
267
|
-
(0, _defineProperty2["default"])(this, "onmessage", void 0);
|
|
268
|
-
(0, _defineProperty2["default"])(this, "onopen", void 0);
|
|
269
259
|
server.scheduler.schedule(function () {
|
|
270
260
|
_this.readyState = WebSocket.CONNECTING;
|
|
271
261
|
server.conversation.sockets.add(_this);
|
|
@@ -345,4 +335,4 @@ var mockServices = function mockServices(server, scheduler) {
|
|
|
345
335
|
};
|
|
346
336
|
|
|
347
337
|
exports.mockServices = mockServices;
|
|
348
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lLm1vY2sudHMiXSwibmFtZXMiOlsibm90SW1wbGVtZW50ZWQiLCJFcnJvciIsIm1vY2tBY3Rpdml0eSIsInRleHQiLCJ0eXBlIiwiZnJvbSIsImlkIiwidG9rZW5QcmVmaXgiLCJtb2NrU2VydmVyIiwic2NoZWR1bGVyIiwiY29udmVyc2F0aW9uIiwic29ja2V0cyIsIlNldCIsImNvbnZlcnNhdGlvbklkIiwiaGlzdG9yeSIsInRva2VuIiwidG9rZW5SZXNwb25zZSIsInNlcnZlciIsInJlcXVlc3QiLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInJlc3BvbnNlIiwic3RhdHVzIiwiaW5qZWN0Q2xvc2UiLCJmb3JFYWNoIiwicyIsIm9uY2xvc2UiLCJDbG9zZUV2ZW50IiwiaW5qZWN0TmV3VG9rZW4iLCJzdWZmaXgiLCJOdW1iZXIiLCJwYXJzZUludCIsInN1YnN0cmluZyIsImxlbmd0aCIsImtleVdhdGVybWFyayIsIm1vY2tBamF4IiwiY3VzdG9tQWpheCIsInVyaUJhc2UiLCJVUkwiLCJjcmVhdGVTdHJlYW1VcmwiLCJ3YXRlcm1hcmsiLCJ1cmkiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJhcHBlbmQiLCJ0b1N0cmluZyIsInNlYXJjaCIsImpheCIsInVybE9yUmVxdWVzdCIsInVybCIsInBhdGhuYW1lIiwic2VhcmNoUGFyYW1zIiwicGFydHMiLCJzcGxpdCIsInN0cmVhbVVybCIsInJlc3BvbnNlVG9rZW4iLCJhY3Rpdml0eSIsImJvZHkiLCJhZnRlciIsInB1c2giLCJzdGFydCIsInNvY2tldCIsInBsYXkiLCJnZXQiLCJtZXRob2QiLCJPYnNlcnZhYmxlIiwic3Vic2NyaWJlciIsIm5leHQiLCJjb21wbGV0ZSIsImVycm9yIiwicHJvcGVydGllcyIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImdldEpTT04iLCJPYmplY3QiLCJhc3NpZ24iLCJtb2NrV2ViU29ja2V0IiwicHJvdG9jb2xzIiwiV2ViU29ja2V0IiwiQ0xPU0VEIiwiQ0xPU0lORyIsIkNPTk5FQ1RJTkciLCJPUEVOIiwic2NoZWR1bGUiLCJyZWFkeVN0YXRlIiwiYWRkIiwib25vcGVuIiwiRXZlbnQiLCJhY3Rpdml0aWVzIiwic2xpY2UiLCJhY3Rpdml0eUdyb3VwIiwibWVzc2FnZSIsIk1lc3NhZ2VFdmVudCIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5Iiwib25tZXNzYWdlIiwiY29kZSIsInJlYXNvbiIsIm1vY2tTZXJ2aWNlcyIsImFqYXgiLCJyYW5kb20iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUNBOztBQUVBOztBQUVBO0FBRUEsSUFBTUEsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixHQUFhO0FBQUUsUUFBTSxJQUFJQyxLQUFKLENBQVUsaUJBQVYsQ0FBTjtBQUFvQyxDQUExRSxDLENBRUE7OztBQUVPLElBQU1DLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQUNDLElBQUQ7QUFBQSxTQUE4QztBQUFFQyxJQUFBQSxJQUFJLEVBQUUsU0FBUjtBQUFtQkMsSUFBQUEsSUFBSSxFQUFFO0FBQUVDLE1BQUFBLEVBQUUsRUFBRTtBQUFOLEtBQXpCO0FBQTJDSCxJQUFBQSxJQUFJLEVBQUpBO0FBQTNDLEdBQTlDO0FBQUEsQ0FBckIsQyxDQUVQOzs7O0FBb0JBLElBQU1JLFdBQVcsR0FBRyxPQUFwQjs7QUFFTyxJQUFNQyxVQUFVLEdBQUcsU0FBYkEsVUFBYSxDQUFDQyxTQUFEO0FBQUEsU0FBdUM7QUFDL0RBLElBQUFBLFNBQVMsRUFBVEEsU0FEK0Q7QUFFL0RDLElBQUFBLFlBQVksRUFBRTtBQUNaQyxNQUFBQSxPQUFPLEVBQUUsSUFBSUMsR0FBSixFQURHO0FBRVpDLE1BQUFBLGNBQWMsRUFBRSxpQkFGSjtBQUdaQyxNQUFBQSxPQUFPLEVBQUUsRUFIRztBQUlaQyxNQUFBQSxLQUFLLEVBQUVSLFdBQVcsR0FBRztBQUpUO0FBRmlELEdBQXZDO0FBQUEsQ0FBbkI7Ozs7QUFVUCxJQUFNUyxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLENB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LEVBd0QyQyxDQUNuRTtBQXpEd0I7QUFBQTtBQUFBLHlDQTJETjtBQUFFLGNBQU0sSUFBSTdGLEtBQUosRUFBTjtBQUFvQjtBQTNEaEI7QUFBQTtBQUFBLDRDQTRESDtBQUFFLGNBQU0sSUFBSUEsS0FBSixFQUFOO0FBQW9CO0FBNURuQjtBQUFBO0FBQUEsc0NBNkRBO0FBQUUsY0FBTSxJQUFJQSxLQUFKLEVBQU47QUFBb0I7QUE3RHRCO0FBQUE7QUFBQSwwREErRFQ4RSxTQUFTLENBQUNDLE1BL0RELHVEQWdFUkQsU0FBUyxDQUFDRSxPQWhFRiwwREFpRUxGLFNBQVMsQ0FBQ0csVUFqRUwsb0RBa0VYSCxTQUFTLENBQUNJLElBbEVDO0FBQUEsQ0FBdEIsQyxDQXFFUDs7Ozs7QUFFTyxJQUFNaUIsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQ25GLE1BQUQsRUFBaUJSLFNBQWpCO0FBQUEsU0FBMEU7QUFDcEdBLElBQUFBLFNBQVMsRUFBVEEsU0FEb0c7QUFFcEdzRSxJQUFBQSxTQUFTLEVBQUVGLGFBQWEsQ0FBQzVELE1BQUQsQ0FGNEU7QUFHcEdvRixJQUFBQSxJQUFJLEVBQUVsRSxRQUFRLENBQUNsQixNQUFELENBSHNGO0FBSXBHcUYsSUFBQUEsTUFBTSxFQUFFO0FBQUEsYUFBTSxDQUFOO0FBQUE7QUFKNEYsR0FBMUU7QUFBQSxDQUFyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERpcmVjdExpbmVFeHBvcnQgZnJvbSBcIi4vZGlyZWN0TGluZVwiO1xuaW1wb3J0IHsgVGVzdFNjaGVkdWxlciwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBBamF4Q3JlYXRpb25NZXRob2QsIEFqYXhSZXF1ZXN0LCBBamF4UmVzcG9uc2UgfSBmcm9tIFwicnhqcy9vYnNlcnZhYmxlL2RvbS9BamF4T2JzZXJ2YWJsZVwiO1xuaW1wb3J0IHsgVVJMLCBVUkxTZWFyY2hQYXJhbXMgfSBmcm9tICd1cmwnO1xuXG4vLyBNT0NLIGhlbHBlcnNcblxuY29uc3Qgbm90SW1wbGVtZW50ZWQgPSAoKTogbmV2ZXIgPT4geyB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpIH07XG5cbi8vIE1PQ0sgQWN0aXZpdHlcblxuZXhwb3J0IGNvbnN0IG1vY2tBY3Rpdml0eSA9ICh0ZXh0OiBzdHJpbmcpOiBEaXJlY3RMaW5lRXhwb3J0LkFjdGl2aXR5ID0+ICh7IHR5cGU6ICdtZXNzYWdlJywgZnJvbTogeyBpZDogJ3NlbmRlcicgfSwgdGV4dCB9KTtcblxuLy8gTU9DSyBEaXJlY3RMaW5lIFNlcnZlciAoc2hhcmVkIHN0YXRlIHVzZWQgYnkgT2JzZXJ2YWJsZS5hamF4IGFuZCBXZWJTb2NrZXQgbW9ja3MpXG5cbmludGVyZmFjZSBBY3Rpdml0eVNvY2tldCB7XG4gIHBsYXk6IChzdGFydDogbnVtYmVyLCBhZnRlcjogbnVtYmVyKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBTb2NrZXQgPSBXZWJTb2NrZXQgJiBBY3Rpdml0eVNvY2tldDtcblxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJzYXRpb24ge1xuICBzb2NrZXRzOiBTZXQ8U29ja2V0PjtcbiAgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgaGlzdG9yeTogQXJyYXk8RGlyZWN0TGluZUV4cG9ydC5BY3Rpdml0eT47XG4gIHRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyIHtcbiAgc2NoZWR1bGVyOiBUZXN0U2NoZWR1bGVyO1xuICBjb252ZXJzYXRpb246IENvbnZlcnNhdGlvbjtcbn1cblxuY29uc3QgdG9rZW5QcmVmaXggPSAndG9rZW4nO1xuXG5leHBvcnQgY29uc3QgbW9ja1NlcnZlciA9IChzY2hlZHVsZXI6IFRlc3RTY2hlZHVsZXIpOiBTZXJ2ZXIgPT4gKHtcbiAgc2NoZWR1bGVyLFxuICBjb252ZXJzYXRpb246IHtcbiAgICBzb2NrZXRzOiBuZXcgU2V0PFNvY2tldD4oKSxcbiAgICBjb252ZXJzYXRpb25JZDogJ09uZUNvbnZlcnNhdGlvbicsXG4gICAgaGlzdG9yeTogW10sXG4gICAgdG9rZW46IHRva2VuUHJlZml4ICsgJzEnLFxuICB9XG59KTtcblxuY29uc3QgdG9rZW5SZXNwb25zZSA9IChzZXJ2ZXI6IFNlcnZlciwgcmVxdWVzdDogQWpheFJlcXVlc3QpOiBBamF4UmVzcG9uc2UgfCBudWxsID0+IHtcbiAgY29uc3QgeyBoZWFkZXJzIH0gPSByZXF1ZXN0O1xuICBjb25zdCBhdXRob3JpemF0aW9uID0gaGVhZGVyc1snQXV0aG9yaXphdGlvbiddO1xuICBpZiAoYXV0aG9yaXphdGlvbiA9PT0gYEJlYXJlciAke3NlcnZlci5jb252ZXJzYXRpb24udG9rZW59YCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVzcG9uc2U6IFBhcnRpYWw8QWpheFJlc3BvbnNlPiA9IHtcbiAgICBzdGF0dXM6IDQwMyxcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZSBhcyBBamF4UmVzcG9uc2U7XG59XG5cbmV4cG9ydCBjb25zdCBpbmplY3RDbG9zZSA9IChzZXJ2ZXI6IFNlcnZlcik6IHZvaWQgPT5cbiAgc2VydmVyLmNvbnZlcnNhdGlvbi5zb2NrZXRzLmZvckVhY2gocyA9PiBzLm9uY2xvc2UobmV3IENsb3NlRXZlbnQoJ2Nsb3NlJykpKTtcblxuZXhwb3J0IGNvbnN0IGluamVjdE5ld1Rva2VuID0gKHNlcnZlcjogU2VydmVyKTogdm9pZCA9PiB7XG4gIGNvbnN0IHsgY29udmVyc2F0aW9uIH0gPSBzZXJ2ZXI7XG4gIGNvbnN0IHN1ZmZpeCA9IE51bWJlci5wYXJzZUludChjb252ZXJzYXRpb24udG9rZW4uc3Vic3RyaW5nKHRva2VuUHJlZml4Lmxlbmd0aCksIDEwKSArIDFcbiAgY29udmVyc2F0aW9uLnRva2VuID0gdG9rZW5QcmVmaXggKyBzdWZmaXg7XG59XG5cbmNvbnN0IGtleVdhdGVybWFyayA9ICd3YXRlcm1hcmsnO1xuXG50eXBlIGFqYXhUeXBlID0gKHVybE9yUmVxdWVzdDogc3RyaW5nIHwgQWpheFJlcXVlc3QpID0+IEFqYXhSZXNwb25zZTtcblxuLy8gTU9DSyBPYnNlcnZhYmxlLmFqYXggKHVzZXMgc2hhcmVkIHN0YXRlIGluIFNlcnZlcilcblxuZXhwb3J0IGNvbnN0IG1vY2tBamF4ID0gKHNlcnZlcjogU2VydmVyLCBjdXN0b21BamF4PzogYWpheFR5cGUpOiBBamF4Q3JlYXRpb25NZXRob2QgPT4ge1xuXG4gIGNvbnN0IHVyaUJhc2UgPSBuZXcgVVJMKCdodHRwczovL2RpcmVjdGxpbmUuYm90ZnJhbWV3b3JrLmNvbS92My9kaXJlY3RsaW5lLycpO1xuICBjb25zdCBjcmVhdGVTdHJlYW1VcmwgPSAod2F0ZXJtYXJrOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwoJ2NvbnZlcnNhdGlvbnMvc3RyZWFtJywgdXJpQmFzZSk7XG4gICAgaWYgKHdhdGVybWFyayA+IDApIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgIHBhcmFtcy5hcHBlbmQoa2V5V2F0ZXJtYXJrLCB3YXRlcm1hcmsudG9TdHJpbmcoMTApKTtcbiAgICAgIHVyaS5zZWFyY2ggPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBjb25zdCBqYXggPSBjdXN0b21BamF4IHx8ICgodXJsT3JSZXF1ZXN0OiBzdHJpbmcgfCBBamF4UmVxdWVzdCk6IEFqYXhSZXNwb25zZSA9PiB7XG4gICAgaWYgKHR5cGVvZiB1cmxPclJlcXVlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHVybE9yUmVxdWVzdC51cmwpO1xuXG4gICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoUGFyYW1zIH0gPSB1cmk7XG5cbiAgICBjb25zdCBwYXJ0cyA9IHBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAocGFydHNbM10gPT09ICd0b2tlbnMnICYmIHBhcnRzWzRdID09PSAncmVmcmVzaCcpIHtcblxuICAgICAgY29uc3QgcmVzcG9uc2U6IFBhcnRpYWw8QWpheFJlc3BvbnNlPiA9IHtcbiAgICAgICAgcmVzcG9uc2U6IHsgdG9rZW46IHNlcnZlci5jb252ZXJzYXRpb24udG9rZW4gfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlIGFzIEFqYXhSZXNwb25zZTtcbiAgICB9XG5cbiAgICBpZiAocGFydHNbM10gIT09ICdjb252ZXJzYXRpb25zJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gNCkge1xuICAgICAgY29uc3QgY29udmVyc2F0aW9uOiBEaXJlY3RMaW5lRXhwb3J0LkNvbnZlcnNhdGlvbiA9IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHNlcnZlci5jb252ZXJzYXRpb24uY29udmVyc2F0aW9uSWQsXG4gICAgICAgIHRva2VuOiBzZXJ2ZXIuY29udmVyc2F0aW9uLnRva2VuLFxuICAgICAgICBzdHJlYW1Vcmw6IGNyZWF0ZVN0cmVhbVVybCgwKSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBQYXJ0aWFsPEFqYXhSZXNwb25zZT4gPSB7XG4gICAgICAgIHJlc3BvbnNlOiBjb252ZXJzYXRpb24sXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNwb25zZSBhcyBBamF4UmVzcG9uc2U7XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzWzRdICE9PSBzZXJ2ZXIuY29udmVyc2F0aW9uLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG5cbiAgICBpZiAocGFydHNbNV0gPT09ICdhY3Rpdml0aWVzJykge1xuICAgICAgY29uc3QgcmVzcG9uc2VUb2tlbiA9IHRva2VuUmVzcG9uc2Uoc2VydmVyLCB1cmxPclJlcXVlc3QpO1xuICAgICAgaWYgKHJlc3BvbnNlVG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlVG9rZW47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdGl2aXR5OiBEaXJlY3RMaW5lRXhwb3J0LkFjdGl2aXR5ID0gdXJsT3JSZXF1ZXN0LmJvZHk7XG5cbiAgICAgIGNvbnN0IGFmdGVyID0gc2VydmVyLmNvbnZlcnNhdGlvbi5oaXN0b3J5LnB1c2goYWN0aXZpdHkpO1xuICAgICAgY29uc3Qgc3RhcnQgPSBhZnRlciAtIDE7XG5cbiAgICAgIGZvciAoY29uc3Qgc29ja2V0IG9mIHNlcnZlci5jb252ZXJzYXRpb24uc29ja2V0cykge1xuICAgICAgICBzb2NrZXQucGxheShzdGFydCwgYWZ0ZXIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZTogUGFydGlhbDxBamF4UmVzcG9uc2U+ID0ge1xuICAgICAgICByZXNwb25zZTogeyBpZDogJ21lc3NhZ2VJZCcgfSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3BvbnNlIGFzIEFqYXhSZXNwb25zZTtcbiAgICB9XG4gICAgZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSA1KSB7XG4gICAgICBjb25zdCByZXNwb25zZVRva2VuID0gdG9rZW5SZXNwb25zZShzZXJ2ZXIsIHVybE9yUmVxdWVzdCk7XG4gICAgICBpZiAocmVzcG9uc2VUb2tlbiAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VUb2tlbjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd2F0ZXJtYXJrID0gc2VhcmNoUGFyYW1zLmdldCgnd2F0ZXJtYXJrJyk7XG4gICAgICBjb25zdCBzdGFydCA9IE51bWJlci5wYXJzZUludCh3YXRlcm1hcmssIDEwKTtcblxuICAgICAgY29uc3QgY29udmVyc2F0aW9uOiBEaXJlY3RMaW5lRXhwb3J0LkNvbnZlcnNhdGlvbiA9IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHNlcnZlci5jb252ZXJzYXRpb24uY29udmVyc2F0aW9uSWQsXG4gICAgICAgIHRva2VuOiBzZXJ2ZXIuY29udmVyc2F0aW9uLnRva2VuLFxuICAgICAgICBzdHJlYW1Vcmw6IGNyZWF0ZVN0cmVhbVVybChzdGFydCksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZTogUGFydGlhbDxBamF4UmVzcG9uc2U+ID0ge1xuICAgICAgICByZXNwb25zZTogY29udmVyc2F0aW9uLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzcG9uc2UgYXMgQWpheFJlc3BvbnNlO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcigpO1xuICB9KTtcblxuICBjb25zdCBtZXRob2QgPSAodXJsT3JSZXF1ZXN0OiBzdHJpbmcgfCBBamF4UmVxdWVzdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PlxuICAgIG5ldyBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4oc3Vic2NyaWJlciA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQoamF4KHVybE9yUmVxdWVzdCkpO1xuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgdHlwZSBWYWx1ZVR5cGU8VCwgVj4gPSB7XG4gICAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBWID8gVFtLXSA6IG5ldmVyO1xuICB9XG5cbiAgdHlwZSBQcm9wZXJ0aWVzID0gVmFsdWVUeXBlPEFqYXhDcmVhdGlvbk1ldGhvZCwgRnVuY3Rpb24+O1xuXG4gIGNvbnN0IHByb3BlcnRpZXM6IFByb3BlcnRpZXMgPSB7XG4gICAgZ2V0OiAodXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICBwb3N0OiAodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICBwdXQ6ICh1cmw6IHN0cmluZywgYm9keT86IGFueSwgaGVhZGVycz86IE9iamVjdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PiBub3RJbXBsZW1lbnRlZCgpLFxuICAgIHBhdGNoOiAodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICBkZWxldGU6ICh1cmw6IHN0cmluZywgaGVhZGVycz86IE9iamVjdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PiBub3RJbXBsZW1lbnRlZCgpLFxuICAgIGdldEpTT046ICh1cmw6IHN0cmluZywgaGVhZGVycz86IE9iamVjdCkgPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgfTtcblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihtZXRob2QsIHByb3BlcnRpZXMpO1xufVxuXG4vLyBNT0NLIFdlYlNvY2tldCAodXNlcyBzaGFyZWQgc3RhdGUgaW4gU2VydmVyKVxuXG50eXBlIFdlYlNvY2tldENvbnN0cnVjdG9yID0gdHlwZW9mIFdlYlNvY2tldDtcbnR5cGUgRXZlbnRIYW5kbGVyPEUgZXh0ZW5kcyBFdmVudD4gPSAodGhpczogV2ViU29ja2V0LCBldjogRSkgPT4gYW55O1xuXG5leHBvcnQgY29uc3QgbW9ja1dlYlNvY2tldCA9IChzZXJ2ZXI6IFNlcnZlcik6IFdlYlNvY2tldENvbnN0cnVjdG9yID0+XG4gIGNsYXNzIE1vY2tXZWJTb2NrZXQgaW1wbGVtZW50cyBXZWJTb2NrZXQsIEFjdGl2aXR5U29ja2V0IHtcbiAgICBjb25zdHJ1Y3Rvcih1cmw6IHN0cmluZywgcHJvdG9jb2xzPzogc3RyaW5nIHwgc3RyaW5nW10pIHtcblxuICAgICAgc2VydmVyLnNjaGVkdWxlci5zY2hlZHVsZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZSA9IFdlYlNvY2tldC5DT05ORUNUSU5HO1xuICAgICAgICBzZXJ2ZXIuY29udmVyc2F0aW9uLnNvY2tldHMuYWRkKHRoaXMpO1xuICAgICAgICB0aGlzLm9ub3BlbihuZXcgRXZlbnQoJ29wZW4nKSk7XG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZSA9IFdlYlNvY2tldC5PUEVOO1xuICAgICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHVybCk7XG4gICAgICAgIGNvbnN0IHdhdGVybWFyayA9IHVyaS5zZWFyY2hQYXJhbXMuZ2V0KGtleVdhdGVybWFyaylcbiAgICAgICAgaWYgKHdhdGVybWFyayAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gTnVtYmVyLnBhcnNlSW50KHdhdGVybWFyaywgMTApO1xuICAgICAgICAgIHRoaXMucGxheShzdGFydCwgc2VydmVyLmNvbnZlcnNhdGlvbi5oaXN0b3J5Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHBsYXkoc3RhcnQ6IG51bWJlciwgYWZ0ZXI6IG51bWJlcikge1xuXG4gICAgICBjb25zdCB7IGNvbnZlcnNhdGlvbjogeyBoaXN0b3J5IH0gfSA9IHNlcnZlcjtcbiAgICAgIGNvbnN0IGFjdGl2aXRpZXMgPSBoaXN0b3J5LnNsaWNlKHN0YXJ0LCBhZnRlcik7XG4gICAgICBjb25zdCB3YXRlcm1hcmsgPSBoaXN0b3J5Lmxlbmd0aC50b1N0cmluZygpO1xuICAgICAgY29uc3QgYWN0aXZpdHlHcm91cDogRGlyZWN0TGluZUV4cG9ydC5BY3Rpdml0eUdyb3VwID0ge1xuICAgICAgICBhY3Rpdml0aWVzLFxuICAgICAgICB3YXRlcm1hcmssXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgTWVzc2FnZUV2ZW50KCd0eXBlJywgeyBkYXRhOiBKU09OLnN0cmluZ2lmeShhY3Rpdml0eUdyb3VwKSB9KTtcblxuICAgICAgdGhpcy5vbm1lc3NhZ2UobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgYmluYXJ5VHlwZTogQmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7XG4gICAgcmVhZG9ubHkgYnVmZmVyZWRBbW91bnQ6IG51bWJlciA9IDA7XG4gICAgcmVhZG9ubHkgZXh0ZW5zaW9uczogc3RyaW5nID0gJyc7XG4gICAgcmVhZG9ubHkgcHJvdG9jb2w6IHN0cmluZyA9ICdodHRwcyc7XG4gICAgcmVhZHlTdGF0ZTogbnVtYmVyID0gV2ViU29ja2V0LkNMT1NFRDtcbiAgICByZWFkb25seSB1cmw6IHN0cmluZyA9ICcnO1xuICAgIHJlYWRvbmx5IENMT1NFRDogbnVtYmVyID0gV2ViU29ja2V0LkNMT1NFRDtcbiAgICByZWFkb25seSBDTE9TSU5HOiBudW1iZXIgPSBXZWJTb2NrZXQuQ0xPU0lORztcbiAgICByZWFkb25seSBDT05ORUNUSU5HOiBudW1iZXIgPSBXZWJTb2NrZXQuQ09OTkVDVElORztcbiAgICByZWFkb25seSBPUEVOOiBudW1iZXIgPSBXZWJTb2NrZXQuT1BFTjtcblxuICAgIG9uY2xvc2U6IEV2ZW50SGFuZGxlcjxDbG9zZUV2ZW50PjtcbiAgICBvbmVycm9yOiBFdmVudEhhbmRsZXI8RXZlbnQ+O1xuICAgIG9ubWVzc2FnZTogRXZlbnRIYW5kbGVyPE1lc3NhZ2VFdmVudD47XG4gICAgb25vcGVuOiBFdmVudEhhbmRsZXI8RXZlbnQ+O1xuXG4gICAgY2xvc2UoY29kZT86IG51bWJlciwgcmVhc29uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICB0aGlzLnJlYWR5U3RhdGUgPSBXZWJTb2NrZXQuQ0xPU0lORztcbiAgICAgIHRoaXMub25jbG9zZShuZXcgQ2xvc2VFdmVudCgnY2xvc2UnKSlcbiAgICAgIHNlcnZlci5jb252ZXJzYXRpb24uc29ja2V0cy5kZWxldGUodGhpcyk7XG4gICAgICB0aGlzLnJlYWR5U3RhdGUgPSBXZWJTb2NrZXQuQ0xPU0VEO1xuICAgIH1cblxuICAgIHNlbmQoZGF0YTogc3RyaW5nIHwgQXJyYXlCdWZmZXJMaWtlIHwgQmxvYiB8IEFycmF5QnVmZmVyVmlldyk6IHZvaWQge1xuICAgIH1cblxuICAgIGFkZEV2ZW50TGlzdGVuZXIoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9XG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH1cbiAgICBkaXNwYXRjaEV2ZW50KCk6IGJvb2xlYW4geyB0aHJvdyBuZXcgRXJyb3IoKTsgfVxuXG4gICAgc3RhdGljIENMT1NFRCA9IFdlYlNvY2tldC5DTE9TRUQ7XG4gICAgc3RhdGljIENMT1NJTkcgPSBXZWJTb2NrZXQuQ0xPU0lORztcbiAgICBzdGF0aWMgQ09OTkVDVElORyA9IFdlYlNvY2tldC5DT05ORUNUSU5HO1xuICAgIHN0YXRpYyBPUEVOID0gV2ViU29ja2V0Lk9QRU47XG4gIH07XG5cbi8vIE1PQ0sgc2VydmljZXMgKHRvcC1sZXZlbCBhZ2dyZWdhdGlvbiBvZiBhbGwgbW9ja3MpXG5cbmV4cG9ydCBjb25zdCBtb2NrU2VydmljZXMgPSAoc2VydmVyOiBTZXJ2ZXIsIHNjaGVkdWxlcjogVGVzdFNjaGVkdWxlcik6IERpcmVjdExpbmVFeHBvcnQuU2VydmljZXMgPT4gKHtcbiAgc2NoZWR1bGVyLFxuICBXZWJTb2NrZXQ6IG1vY2tXZWJTb2NrZXQoc2VydmVyKSxcbiAgYWpheDogbW9ja0FqYXgoc2VydmVyKSxcbiAgcmFuZG9tOiAoKSA9PiAwLFxufSk7XG4iXX0=
|
|
338
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lLm1vY2sudHMiXSwibmFtZXMiOlsibm90SW1wbGVtZW50ZWQiLCJFcnJvciIsIm1vY2tBY3Rpdml0eSIsInRleHQiLCJ0eXBlIiwiZnJvbSIsImlkIiwidG9rZW5QcmVmaXgiLCJtb2NrU2VydmVyIiwic2NoZWR1bGVyIiwiY29udmVyc2F0aW9uIiwic29ja2V0cyIsIlNldCIsImNvbnZlcnNhdGlvbklkIiwiaGlzdG9yeSIsInRva2VuIiwidG9rZW5SZXNwb25zZSIsInNlcnZlciIsInJlcXVlc3QiLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInJlc3BvbnNlIiwic3RhdHVzIiwiaW5qZWN0Q2xvc2UiLCJmb3JFYWNoIiwicyIsIm9uY2xvc2UiLCJDbG9zZUV2ZW50IiwiaW5qZWN0TmV3VG9rZW4iLCJzdWZmaXgiLCJOdW1iZXIiLCJwYXJzZUludCIsInN1YnN0cmluZyIsImxlbmd0aCIsImtleVdhdGVybWFyayIsIm1vY2tBamF4IiwiY3VzdG9tQWpheCIsInVyaUJhc2UiLCJVUkwiLCJjcmVhdGVTdHJlYW1VcmwiLCJ3YXRlcm1hcmsiLCJ1cmkiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJhcHBlbmQiLCJ0b1N0cmluZyIsInNlYXJjaCIsImpheCIsInVybE9yUmVxdWVzdCIsInVybCIsInBhdGhuYW1lIiwic2VhcmNoUGFyYW1zIiwicGFydHMiLCJzcGxpdCIsInN0cmVhbVVybCIsInJlc3BvbnNlVG9rZW4iLCJhY3Rpdml0eSIsImJvZHkiLCJhZnRlciIsInB1c2giLCJzdGFydCIsInNvY2tldCIsInBsYXkiLCJnZXQiLCJtZXRob2QiLCJPYnNlcnZhYmxlIiwic3Vic2NyaWJlciIsIm5leHQiLCJjb21wbGV0ZSIsImVycm9yIiwicHJvcGVydGllcyIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImdldEpTT04iLCJPYmplY3QiLCJhc3NpZ24iLCJtb2NrV2ViU29ja2V0IiwicHJvdG9jb2xzIiwiV2ViU29ja2V0IiwiQ0xPU0VEIiwiQ0xPU0lORyIsIkNPTk5FQ1RJTkciLCJPUEVOIiwic2NoZWR1bGUiLCJyZWFkeVN0YXRlIiwiYWRkIiwib25vcGVuIiwiRXZlbnQiLCJhY3Rpdml0aWVzIiwic2xpY2UiLCJhY3Rpdml0eUdyb3VwIiwibWVzc2FnZSIsIk1lc3NhZ2VFdmVudCIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5Iiwib25tZXNzYWdlIiwiY29kZSIsInJlYXNvbiIsIm1vY2tTZXJ2aWNlcyIsImFqYXgiLCJyYW5kb20iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUNBOztBQUVBOzs7Ozs7OztBQUVBO0FBRUEsSUFBTUEsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixHQUFhO0FBQUUsUUFBTSxJQUFJQyxLQUFKLENBQVUsaUJBQVYsQ0FBTjtBQUFvQyxDQUExRSxDLENBRUE7OztBQUVPLElBQU1DLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQUNDLElBQUQ7QUFBQSxTQUE4QztBQUFFQyxJQUFBQSxJQUFJLEVBQUUsU0FBUjtBQUFtQkMsSUFBQUEsSUFBSSxFQUFFO0FBQUVDLE1BQUFBLEVBQUUsRUFBRTtBQUFOLEtBQXpCO0FBQTJDSCxJQUFBQSxJQUFJLEVBQUpBO0FBQTNDLEdBQTlDO0FBQUEsQ0FBckIsQyxDQUVQOzs7O0FBb0JBLElBQU1JLFdBQVcsR0FBRyxPQUFwQjs7QUFFTyxJQUFNQyxVQUFVLEdBQUcsU0FBYkEsVUFBYSxDQUFDQyxTQUFEO0FBQUEsU0FBdUM7QUFDL0RBLElBQUFBLFNBQVMsRUFBVEEsU0FEK0Q7QUFFL0RDLElBQUFBLFlBQVksRUFBRTtBQUNaQyxNQUFBQSxPQUFPLEVBQUUsSUFBSUMsR0FBSixFQURHO0FBRVpDLE1BQUFBLGNBQWMsRUFBRSxpQkFGSjtBQUdaQyxNQUFBQSxPQUFPLEVBQUUsRUFIRztBQUlaQyxNQUFBQSxLQUFLLEVBQUVSLFdBQVcsR0FBRztBQUpUO0FBRmlELEdBQXZDO0FBQUEsQ0FBbkI7Ozs7QUFVUCxJQUFNUyxhQUFhLEdBQUcsU0FBaEJBLGFB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aEI7QUFBQTtBQUFBLGFBNER6QiwrQkFBc0I7QUFBRSxjQUFNLElBQUlBLEtBQUosRUFBTjtBQUFvQjtBQTVEbkI7QUFBQTtBQUFBLGFBNkR6Qix5QkFBeUI7QUFBRSxjQUFNLElBQUlBLEtBQUosRUFBTjtBQUFvQjtBQTdEdEI7QUFBQTtBQUFBLDBEQStEVDhFLFNBQVMsQ0FBQ0MsTUEvREQsdURBZ0VSRCxTQUFTLENBQUNFLE9BaEVGLDBEQWlFTEYsU0FBUyxDQUFDRyxVQWpFTCxvREFrRVhILFNBQVMsQ0FBQ0ksSUFsRUM7QUFBQSxDQUF0QixDLENBcUVQOzs7OztBQUVPLElBQU1pQixZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFDbkYsTUFBRCxFQUFpQlIsU0FBakI7QUFBQSxTQUEwRTtBQUNwR0EsSUFBQUEsU0FBUyxFQUFUQSxTQURvRztBQUVwR3NFLElBQUFBLFNBQVMsRUFBRUYsYUFBYSxDQUFDNUQsTUFBRCxDQUY0RTtBQUdwR29GLElBQUFBLElBQUksRUFBRWxFLFFBQVEsQ0FBQ2xCLE1BQUQsQ0FIc0Y7QUFJcEdxRixJQUFBQSxNQUFNLEVBQUU7QUFBQSxhQUFNLENBQU47QUFBQTtBQUo0RixHQUExRTtBQUFBLENBQXJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgRGlyZWN0TGluZUV4cG9ydCBmcm9tIFwiLi9kaXJlY3RMaW5lXCI7XG5pbXBvcnQgeyBUZXN0U2NoZWR1bGVyLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEFqYXhDcmVhdGlvbk1ldGhvZCwgQWpheFJlcXVlc3QsIEFqYXhSZXNwb25zZSB9IGZyb20gXCJyeGpzL29ic2VydmFibGUvZG9tL0FqYXhPYnNlcnZhYmxlXCI7XG5pbXBvcnQgeyBVUkwsIFVSTFNlYXJjaFBhcmFtcyB9IGZyb20gJ3VybCc7XG5cbi8vIE1PQ0sgaGVscGVyc1xuXG5jb25zdCBub3RJbXBsZW1lbnRlZCA9ICgpOiBuZXZlciA9PiB7IHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJykgfTtcblxuLy8gTU9DSyBBY3Rpdml0eVxuXG5leHBvcnQgY29uc3QgbW9ja0FjdGl2aXR5ID0gKHRleHQ6IHN0cmluZyk6IERpcmVjdExpbmVFeHBvcnQuQWN0aXZpdHkgPT4gKHsgdHlwZTogJ21lc3NhZ2UnLCBmcm9tOiB7IGlkOiAnc2VuZGVyJyB9LCB0ZXh0IH0pO1xuXG4vLyBNT0NLIERpcmVjdExpbmUgU2VydmVyIChzaGFyZWQgc3RhdGUgdXNlZCBieSBPYnNlcnZhYmxlLmFqYXggYW5kIFdlYlNvY2tldCBtb2NrcylcblxuaW50ZXJmYWNlIEFjdGl2aXR5U29ja2V0IHtcbiAgcGxheTogKHN0YXJ0OiBudW1iZXIsIGFmdGVyOiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIFNvY2tldCA9IFdlYlNvY2tldCAmIEFjdGl2aXR5U29ja2V0O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvbiB7XG4gIHNvY2tldHM6IFNldDxTb2NrZXQ+O1xuICBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICBoaXN0b3J5OiBBcnJheTxEaXJlY3RMaW5lRXhwb3J0LkFjdGl2aXR5PjtcbiAgdG9rZW46IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXIge1xuICBzY2hlZHVsZXI6IFRlc3RTY2hlZHVsZXI7XG4gIGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uO1xufVxuXG5jb25zdCB0b2tlblByZWZpeCA9ICd0b2tlbic7XG5cbmV4cG9ydCBjb25zdCBtb2NrU2VydmVyID0gKHNjaGVkdWxlcjogVGVzdFNjaGVkdWxlcik6IFNlcnZlciA9PiAoe1xuICBzY2hlZHVsZXIsXG4gIGNvbnZlcnNhdGlvbjoge1xuICAgIHNvY2tldHM6IG5ldyBTZXQ8U29ja2V0PigpLFxuICAgIGNvbnZlcnNhdGlvbklkOiAnT25lQ29udmVyc2F0aW9uJyxcbiAgICBoaXN0b3J5OiBbXSxcbiAgICB0b2tlbjogdG9rZW5QcmVmaXggKyAnMScsXG4gIH1cbn0pO1xuXG5jb25zdCB0b2tlblJlc3BvbnNlID0gKHNlcnZlcjogU2VydmVyLCByZXF1ZXN0OiBBamF4UmVxdWVzdCk6IEFqYXhSZXNwb25zZSB8IG51bGwgPT4ge1xuICBjb25zdCB7IGhlYWRlcnMgfSA9IHJlcXVlc3Q7XG4gIGNvbnN0IGF1dGhvcml6YXRpb24gPSBoZWFkZXJzWydBdXRob3JpemF0aW9uJ107XG4gIGlmIChhdXRob3JpemF0aW9uID09PSBgQmVhcmVyICR7c2VydmVyLmNvbnZlcnNhdGlvbi50b2tlbn1gKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCByZXNwb25zZTogUGFydGlhbDxBamF4UmVzcG9uc2U+ID0ge1xuICAgIHN0YXR1czogNDAzLFxuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlIGFzIEFqYXhSZXNwb25zZTtcbn1cblxuZXhwb3J0IGNvbnN0IGluamVjdENsb3NlID0gKHNlcnZlcjogU2VydmVyKTogdm9pZCA9PlxuICBzZXJ2ZXIuY29udmVyc2F0aW9uLnNvY2tldHMuZm9yRWFjaChzID0+IHMub25jbG9zZShuZXcgQ2xvc2VFdmVudCgnY2xvc2UnKSkpO1xuXG5leHBvcnQgY29uc3QgaW5qZWN0TmV3VG9rZW4gPSAoc2VydmVyOiBTZXJ2ZXIpOiB2b2lkID0+IHtcbiAgY29uc3QgeyBjb252ZXJzYXRpb24gfSA9IHNlcnZlcjtcbiAgY29uc3Qgc3VmZml4ID0gTnVtYmVyLnBhcnNlSW50KGNvbnZlcnNhdGlvbi50b2tlbi5zdWJzdHJpbmcodG9rZW5QcmVmaXgubGVuZ3RoKSwgMTApICsgMVxuICBjb252ZXJzYXRpb24udG9rZW4gPSB0b2tlblByZWZpeCArIHN1ZmZpeDtcbn1cblxuY29uc3Qga2V5V2F0ZXJtYXJrID0gJ3dhdGVybWFyayc7XG5cbnR5cGUgYWpheFR5cGUgPSAodXJsT3JSZXF1ZXN0OiBzdHJpbmcgfCBBamF4UmVxdWVzdCkgPT4gQWpheFJlc3BvbnNlO1xuXG4vLyBNT0NLIE9ic2VydmFibGUuYWpheCAodXNlcyBzaGFyZWQgc3RhdGUgaW4gU2VydmVyKVxuXG5leHBvcnQgY29uc3QgbW9ja0FqYXggPSAoc2VydmVyOiBTZXJ2ZXIsIGN1c3RvbUFqYXg/OiBhamF4VHlwZSk6IEFqYXhDcmVhdGlvbk1ldGhvZCA9PiB7XG5cbiAgY29uc3QgdXJpQmFzZSA9IG5ldyBVUkwoJ2h0dHBzOi8vZGlyZWN0bGluZS5ib3RmcmFtZXdvcmsuY29tL3YzL2RpcmVjdGxpbmUvJyk7XG4gIGNvbnN0IGNyZWF0ZVN0cmVhbVVybCA9ICh3YXRlcm1hcms6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgdXJpID0gbmV3IFVSTCgnY29udmVyc2F0aW9ucy9zdHJlYW0nLCB1cmlCYXNlKTtcbiAgICBpZiAod2F0ZXJtYXJrID4gMCkge1xuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgcGFyYW1zLmFwcGVuZChrZXlXYXRlcm1hcmssIHdhdGVybWFyay50b1N0cmluZygxMCkpO1xuICAgICAgdXJpLnNlYXJjaCA9IHBhcmFtcy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGNvbnN0IGpheCA9IGN1c3RvbUFqYXggfHwgKCh1cmxPclJlcXVlc3Q6IHN0cmluZyB8IEFqYXhSZXF1ZXN0KTogQWpheFJlc3BvbnNlID0+IHtcbiAgICBpZiAodHlwZW9mIHVybE9yUmVxdWVzdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgIH1cblxuICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodXJsT3JSZXF1ZXN0LnVybCk7XG5cbiAgICBjb25zdCB7IHBhdGhuYW1lLCBzZWFyY2hQYXJhbXMgfSA9IHVyaTtcblxuICAgIGNvbnN0IHBhcnRzID0gcGF0aG5hbWUuc3BsaXQoJy8nKTtcblxuICAgIGlmIChwYXJ0c1szXSA9PT0gJ3Rva2VucycgJiYgcGFydHNbNF0gPT09ICdyZWZyZXNoJykge1xuXG4gICAgICBjb25zdCByZXNwb25zZTogUGFydGlhbDxBamF4UmVzcG9uc2U+ID0ge1xuICAgICAgICByZXNwb25zZTogeyB0b2tlbjogc2VydmVyLmNvbnZlcnNhdGlvbi50b2tlbiB9XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2UgYXMgQWpheFJlc3BvbnNlO1xuICAgIH1cblxuICAgIGlmIChwYXJ0c1szXSAhPT0gJ2NvbnZlcnNhdGlvbnMnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG5cbiAgICBpZiAocGFydHMubGVuZ3RoID09PSA0KSB7XG4gICAgICBjb25zdCBjb252ZXJzYXRpb246IERpcmVjdExpbmVFeHBvcnQuQ29udmVyc2F0aW9uID0ge1xuICAgICAgICBjb252ZXJzYXRpb25JZDogc2VydmVyLmNvbnZlcnNhdGlvbi5jb252ZXJzYXRpb25JZCxcbiAgICAgICAgdG9rZW46IHNlcnZlci5jb252ZXJzYXRpb24udG9rZW4sXG4gICAgICAgIHN0cmVhbVVybDogY3JlYXRlU3RyZWFtVXJsKDApLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2U6IFBhcnRpYWw8QWpheFJlc3BvbnNlPiA9IHtcbiAgICAgICAgcmVzcG9uc2U6IGNvbnZlcnNhdGlvbixcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3BvbnNlIGFzIEFqYXhSZXNwb25zZTtcbiAgICB9XG5cbiAgICBpZiAocGFydHNbNF0gIT09IHNlcnZlci5jb252ZXJzYXRpb24uY29udmVyc2F0aW9uSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgIH1cblxuICAgIGlmIChwYXJ0c1s1XSA9PT0gJ2FjdGl2aXRpZXMnKSB7XG4gICAgICBjb25zdCByZXNwb25zZVRva2VuID0gdG9rZW5SZXNwb25zZShzZXJ2ZXIsIHVybE9yUmVxdWVzdCk7XG4gICAgICBpZiAocmVzcG9uc2VUb2tlbiAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VUb2tlbjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWN0aXZpdHk6IERpcmVjdExpbmVFeHBvcnQuQWN0aXZpdHkgPSB1cmxPclJlcXVlc3QuYm9keTtcblxuICAgICAgY29uc3QgYWZ0ZXIgPSBzZXJ2ZXIuY29udmVyc2F0aW9uLmhpc3RvcnkucHVzaChhY3Rpdml0eSk7XG4gICAgICBjb25zdCBzdGFydCA9IGFmdGVyIC0gMTtcblxuICAgICAgZm9yIChjb25zdCBzb2NrZXQgb2Ygc2VydmVyLmNvbnZlcnNhdGlvbi5zb2NrZXRzKSB7XG4gICAgICAgIHNvY2tldC5wbGF5KHN0YXJ0LCBhZnRlcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBQYXJ0aWFsPEFqYXhSZXNwb25zZT4gPSB7XG4gICAgICAgIHJlc3BvbnNlOiB7IGlkOiAnbWVzc2FnZUlkJyB9LFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzcG9uc2UgYXMgQWpheFJlc3BvbnNlO1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXJ0cy5sZW5ndGggPT09IDUpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlVG9rZW4gPSB0b2tlblJlc3BvbnNlKHNlcnZlciwgdXJsT3JSZXF1ZXN0KTtcbiAgICAgIGlmIChyZXNwb25zZVRva2VuICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVRva2VuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB3YXRlcm1hcmsgPSBzZWFyY2hQYXJhbXMuZ2V0KCd3YXRlcm1hcmsnKTtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gTnVtYmVyLnBhcnNlSW50KHdhdGVybWFyaywgMTApO1xuXG4gICAgICBjb25zdCBjb252ZXJzYXRpb246IERpcmVjdExpbmVFeHBvcnQuQ29udmVyc2F0aW9uID0ge1xuICAgICAgICBjb252ZXJzYXRpb25JZDogc2VydmVyLmNvbnZlcnNhdGlvbi5jb252ZXJzYXRpb25JZCxcbiAgICAgICAgdG9rZW46IHNlcnZlci5jb252ZXJzYXRpb24udG9rZW4sXG4gICAgICAgIHN0cmVhbVVybDogY3JlYXRlU3RyZWFtVXJsKHN0YXJ0KSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBQYXJ0aWFsPEFqYXhSZXNwb25zZT4gPSB7XG4gICAgICAgIHJlc3BvbnNlOiBjb252ZXJzYXRpb24sXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNwb25zZSBhcyBBamF4UmVzcG9uc2U7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gIH0pO1xuXG4gIGNvbnN0IG1ldGhvZCA9ICh1cmxPclJlcXVlc3Q6IHN0cmluZyB8IEFqYXhSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+ID0+XG4gICAgbmV3IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPihzdWJzY3JpYmVyID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dChqYXgodXJsT3JSZXF1ZXN0KSk7XG4gICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB0eXBlIFZhbHVlVHlwZTxULCBWPiA9IHtcbiAgICBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIFYgPyBUW0tdIDogbmV2ZXI7XG4gIH1cblxuICB0eXBlIFByb3BlcnRpZXMgPSBWYWx1ZVR5cGU8QWpheENyZWF0aW9uTWV0aG9kLCBGdW5jdGlvbj47XG5cbiAgY29uc3QgcHJvcGVydGllczogUHJvcGVydGllcyA9IHtcbiAgICBnZXQ6ICh1cmw6IHN0cmluZywgaGVhZGVycz86IE9iamVjdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PiBub3RJbXBsZW1lbnRlZCgpLFxuICAgIHBvc3Q6ICh1cmw6IHN0cmluZywgYm9keT86IGFueSwgaGVhZGVycz86IE9iamVjdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PiBub3RJbXBsZW1lbnRlZCgpLFxuICAgIHB1dDogKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+ID0+IG5vdEltcGxlbWVudGVkKCksXG4gICAgcGF0Y2g6ICh1cmw6IHN0cmluZywgYm9keT86IGFueSwgaGVhZGVycz86IE9iamVjdCk6IE9ic2VydmFibGU8QWpheFJlc3BvbnNlPiA9PiBub3RJbXBsZW1lbnRlZCgpLFxuICAgIGRlbGV0ZTogKHVybDogc3RyaW5nLCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+ID0+IG5vdEltcGxlbWVudGVkKCksXG4gICAgZ2V0SlNPTjogKHVybDogc3RyaW5nLCBoZWFkZXJzPzogT2JqZWN0KSA9PiBub3RJbXBsZW1lbnRlZCgpLFxuICB9O1xuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKG1ldGhvZCwgcHJvcGVydGllcyk7XG59XG5cbi8vIE1PQ0sgV2ViU29ja2V0ICh1c2VzIHNoYXJlZCBzdGF0ZSBpbiBTZXJ2ZXIpXG5cbnR5cGUgV2ViU29ja2V0Q29uc3RydWN0b3IgPSB0eXBlb2YgV2ViU29ja2V0O1xudHlwZSBFdmVudEhhbmRsZXI8RSBleHRlbmRzIEV2ZW50PiA9ICh0aGlzOiBXZWJTb2NrZXQsIGV2OiBFKSA9PiBhbnk7XG5cbmV4cG9ydCBjb25zdCBtb2NrV2ViU29ja2V0ID0gKHNlcnZlcjogU2VydmVyKTogV2ViU29ja2V0Q29uc3RydWN0b3IgPT5cbiAgY2xhc3MgTW9ja1dlYlNvY2tldCBpbXBsZW1lbnRzIFdlYlNvY2tldCwgQWN0aXZpdHlTb2NrZXQge1xuICAgIGNvbnN0cnVjdG9yKHVybDogc3RyaW5nLCBwcm90b2NvbHM/OiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuXG4gICAgICBzZXJ2ZXIuc2NoZWR1bGVyLnNjaGVkdWxlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZWFkeVN0YXRlID0gV2ViU29ja2V0LkNPTk5FQ1RJTkc7XG4gICAgICAgIHNlcnZlci5jb252ZXJzYXRpb24uc29ja2V0cy5hZGQodGhpcyk7XG4gICAgICAgIHRoaXMub25vcGVuKG5ldyBFdmVudCgnb3BlbicpKTtcbiAgICAgICAgdGhpcy5yZWFkeVN0YXRlID0gV2ViU29ja2V0Lk9QRU47XG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodXJsKTtcbiAgICAgICAgY29uc3Qgd2F0ZXJtYXJrID0gdXJpLnNlYXJjaFBhcmFtcy5nZXQoa2V5V2F0ZXJtYXJrKVxuICAgICAgICBpZiAod2F0ZXJtYXJrICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBOdW1iZXIucGFyc2VJbnQod2F0ZXJtYXJrLCAxMCk7XG4gICAgICAgICAgdGhpcy5wbGF5KHN0YXJ0LCBzZXJ2ZXIuY29udmVyc2F0aW9uLmhpc3RvcnkubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcGxheShzdGFydDogbnVtYmVyLCBhZnRlcjogbnVtYmVyKSB7XG5cbiAgICAgIGNvbnN0IHsgY29udmVyc2F0aW9uOiB7IGhpc3RvcnkgfSB9ID0gc2VydmVyO1xuICAgICAgY29uc3QgYWN0aXZpdGllcyA9IGhpc3Rvcnkuc2xpY2Uoc3RhcnQsIGFmdGVyKTtcbiAgICAgIGNvbnN0IHdhdGVybWFyayA9IGhpc3RvcnkubGVuZ3RoLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBhY3Rpdml0eUdyb3VwOiBEaXJlY3RMaW5lRXhwb3J0LkFjdGl2aXR5R3JvdXAgPSB7XG4gICAgICAgIGFjdGl2aXRpZXMsXG4gICAgICAgIHdhdGVybWFyayxcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBNZXNzYWdlRXZlbnQoJ3R5cGUnLCB7IGRhdGE6IEpTT04uc3RyaW5naWZ5KGFjdGl2aXR5R3JvdXApIH0pO1xuXG4gICAgICB0aGlzLm9ubWVzc2FnZShtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBiaW5hcnlUeXBlOiBCaW5hcnlUeXBlID0gJ2FycmF5YnVmZmVyJztcbiAgICByZWFkb25seSBidWZmZXJlZEFtb3VudDogbnVtYmVyID0gMDtcbiAgICByZWFkb25seSBleHRlbnNpb25zOiBzdHJpbmcgPSAnJztcbiAgICByZWFkb25seSBwcm90b2NvbDogc3RyaW5nID0gJ2h0dHBzJztcbiAgICByZWFkeVN0YXRlOiBudW1iZXIgPSBXZWJTb2NrZXQuQ0xPU0VEO1xuICAgIHJlYWRvbmx5IHVybDogc3RyaW5nID0gJyc7XG4gICAgcmVhZG9ubHkgQ0xPU0VEOiBudW1iZXIgPSBXZWJTb2NrZXQuQ0xPU0VEO1xuICAgIHJlYWRvbmx5IENMT1NJTkc6IG51bWJlciA9IFdlYlNvY2tldC5DTE9TSU5HO1xuICAgIHJlYWRvbmx5IENPTk5FQ1RJTkc6IG51bWJlciA9IFdlYlNvY2tldC5DT05ORUNUSU5HO1xuICAgIHJlYWRvbmx5IE9QRU46IG51bWJlciA9IFdlYlNvY2tldC5PUEVOO1xuXG4gICAgb25jbG9zZTogRXZlbnRIYW5kbGVyPENsb3NlRXZlbnQ+O1xuICAgIG9uZXJyb3I6IEV2ZW50SGFuZGxlcjxFdmVudD47XG4gICAgb25tZXNzYWdlOiBFdmVudEhhbmRsZXI8TWVzc2FnZUV2ZW50PjtcbiAgICBvbm9wZW46IEV2ZW50SGFuZGxlcjxFdmVudD47XG5cbiAgICBjbG9zZShjb2RlPzogbnVtYmVyLCByZWFzb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIHRoaXMucmVhZHlTdGF0ZSA9IFdlYlNvY2tldC5DTE9TSU5HO1xuICAgICAgdGhpcy5vbmNsb3NlKG5ldyBDbG9zZUV2ZW50KCdjbG9zZScpKVxuICAgICAgc2VydmVyLmNvbnZlcnNhdGlvbi5zb2NrZXRzLmRlbGV0ZSh0aGlzKTtcbiAgICAgIHRoaXMucmVhZHlTdGF0ZSA9IFdlYlNvY2tldC5DTE9TRUQ7XG4gICAgfVxuXG4gICAgc2VuZChkYXRhOiBzdHJpbmcgfCBBcnJheUJ1ZmZlckxpa2UgfCBCbG9iIHwgQXJyYXlCdWZmZXJWaWV3KTogdm9pZCB7XG4gICAgfVxuXG4gICAgYWRkRXZlbnRMaXN0ZW5lcigpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH1cbiAgICByZW1vdmVFdmVudExpc3RlbmVyKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfVxuICAgIGRpc3BhdGNoRXZlbnQoKTogYm9vbGVhbiB7IHRocm93IG5ldyBFcnJvcigpOyB9XG5cbiAgICBzdGF0aWMgQ0xPU0VEID0gV2ViU29ja2V0LkNMT1NFRDtcbiAgICBzdGF0aWMgQ0xPU0lORyA9IFdlYlNvY2tldC5DTE9TSU5HO1xuICAgIHN0YXRpYyBDT05ORUNUSU5HID0gV2ViU29ja2V0LkNPTk5FQ1RJTkc7XG4gICAgc3RhdGljIE9QRU4gPSBXZWJTb2NrZXQuT1BFTjtcbiAgfTtcblxuLy8gTU9DSyBzZXJ2aWNlcyAodG9wLWxldmVsIGFnZ3JlZ2F0aW9uIG9mIGFsbCBtb2NrcylcblxuZXhwb3J0IGNvbnN0IG1vY2tTZXJ2aWNlcyA9IChzZXJ2ZXI6IFNlcnZlciwgc2NoZWR1bGVyOiBUZXN0U2NoZWR1bGVyKTogRGlyZWN0TGluZUV4cG9ydC5TZXJ2aWNlcyA9PiAoe1xuICBzY2hlZHVsZXIsXG4gIFdlYlNvY2tldDogbW9ja1dlYlNvY2tldChzZXJ2ZXIpLFxuICBhamF4OiBtb2NrQWpheChzZXJ2ZXIpLFxuICByYW5kb206ICgpID0+IDAsXG59KTtcbiJdfQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
-
|
|
5
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
4
|
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
@@ -25,6 +25,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
25
25
|
|
|
26
26
|
var _BehaviorSubject = require("rxjs/BehaviorSubject");
|
|
27
27
|
|
|
28
|
+
var _buffer = require("buffer");
|
|
29
|
+
|
|
28
30
|
var _Observable = require("rxjs/Observable");
|
|
29
31
|
|
|
30
32
|
var BFSE = _interopRequireWildcard(require("botframework-streaming"));
|
|
@@ -33,7 +35,12 @@ var _crossFetch = _interopRequireDefault(require("cross-fetch"));
|
|
|
33
35
|
|
|
34
36
|
var _directLine = require("./directLine");
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
var _excluded = ["attachments"];
|
|
39
|
+
|
|
40
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
|
+
|
|
42
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
|
+
|
|
37
44
|
var DIRECT_LINE_VERSION = 'DirectLine/3.0';
|
|
38
45
|
var MAX_RETRY_COUNT = 3;
|
|
39
46
|
var refreshTokenLifetime = 30 * 60 * 1000; //const refreshTokenLifetime = 5000;
|
|
@@ -41,14 +48,9 @@ var refreshTokenLifetime = 30 * 60 * 1000; //const refreshTokenLifetime = 5000;
|
|
|
41
48
|
var timeout = 20 * 1000;
|
|
42
49
|
var refreshTokenInterval = refreshTokenLifetime / 2;
|
|
43
50
|
|
|
44
|
-
var StreamHandler =
|
|
45
|
-
/*#__PURE__*/
|
|
46
|
-
function () {
|
|
51
|
+
var StreamHandler = /*#__PURE__*/function () {
|
|
47
52
|
function StreamHandler(s, c$, sq) {
|
|
48
53
|
(0, _classCallCheck2["default"])(this, StreamHandler);
|
|
49
|
-
(0, _defineProperty2["default"])(this, "connectionStatus$", void 0);
|
|
50
|
-
(0, _defineProperty2["default"])(this, "subscriber", void 0);
|
|
51
|
-
(0, _defineProperty2["default"])(this, "shouldQueue", void 0);
|
|
52
54
|
(0, _defineProperty2["default"])(this, "activityQueue", []);
|
|
53
55
|
this.subscriber = s;
|
|
54
56
|
this.connectionStatus$ = c$;
|
|
@@ -63,9 +65,7 @@ function () {
|
|
|
63
65
|
}, {
|
|
64
66
|
key: "processRequest",
|
|
65
67
|
value: function () {
|
|
66
|
-
var _processRequest = (0, _asyncToGenerator2["default"])(
|
|
67
|
-
/*#__PURE__*/
|
|
68
|
-
_regenerator["default"].mark(function _callee(request, logger) {
|
|
68
|
+
var _processRequest = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(request, logger) {
|
|
69
69
|
var streams, stream0, activitySetJson, activitySet, activity, attachments, stream, attachment, dataUri;
|
|
70
70
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
71
71
|
while (1) {
|
|
@@ -159,22 +159,12 @@ function () {
|
|
|
159
159
|
return StreamHandler;
|
|
160
160
|
}();
|
|
161
161
|
|
|
162
|
-
var DirectLineStreaming =
|
|
163
|
-
/*#__PURE__*/
|
|
164
|
-
function () {
|
|
162
|
+
var DirectLineStreaming = /*#__PURE__*/function () {
|
|
165
163
|
function DirectLineStreaming(options) {
|
|
166
164
|
var _this2 = this;
|
|
167
165
|
|
|
168
166
|
(0, _classCallCheck2["default"])(this, DirectLineStreaming);
|
|
169
167
|
(0, _defineProperty2["default"])(this, "connectionStatus$", new _BehaviorSubject.BehaviorSubject(_directLine.ConnectionStatus.Uninitialized));
|
|
170
|
-
(0, _defineProperty2["default"])(this, "activity$", void 0);
|
|
171
|
-
(0, _defineProperty2["default"])(this, "activitySubscriber", void 0);
|
|
172
|
-
(0, _defineProperty2["default"])(this, "theStreamHandler", void 0);
|
|
173
|
-
(0, _defineProperty2["default"])(this, "domain", void 0);
|
|
174
|
-
(0, _defineProperty2["default"])(this, "conversationId", void 0);
|
|
175
|
-
(0, _defineProperty2["default"])(this, "token", void 0);
|
|
176
|
-
(0, _defineProperty2["default"])(this, "streamConnection", void 0);
|
|
177
|
-
(0, _defineProperty2["default"])(this, "queueActivities", void 0);
|
|
178
168
|
(0, _defineProperty2["default"])(this, "_botAgent", '');
|
|
179
169
|
this.token = options.token;
|
|
180
170
|
this.refreshToken();
|
|
@@ -186,12 +176,8 @@ function () {
|
|
|
186
176
|
|
|
187
177
|
this._botAgent = this.getBotAgent(options.botAgent);
|
|
188
178
|
this.queueActivities = true;
|
|
189
|
-
this.activity$ = _Observable.Observable.create(
|
|
190
|
-
|
|
191
|
-
function () {
|
|
192
|
-
var _ref = (0, _asyncToGenerator2["default"])(
|
|
193
|
-
/*#__PURE__*/
|
|
194
|
-
_regenerator["default"].mark(function _callee2(subscriber) {
|
|
179
|
+
this.activity$ = _Observable.Observable.create( /*#__PURE__*/function () {
|
|
180
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(subscriber) {
|
|
195
181
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
196
182
|
while (1) {
|
|
197
183
|
switch (_context2.prev = _context2.next) {
|
|
@@ -255,14 +241,12 @@ function () {
|
|
|
255
241
|
}, {
|
|
256
242
|
key: "refreshToken",
|
|
257
243
|
value: function () {
|
|
258
|
-
var _refreshToken = (0, _asyncToGenerator2["default"])(
|
|
259
|
-
/*#__PURE__*/
|
|
260
|
-
_regenerator["default"].mark(function _callee3() {
|
|
244
|
+
var _refreshToken = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
261
245
|
var firstCall,
|
|
262
246
|
retryCount,
|
|
263
247
|
numberOfAttempts,
|
|
264
248
|
res,
|
|
265
|
-
|
|
249
|
+
_yield$res$json,
|
|
266
250
|
token,
|
|
267
251
|
_args3 = arguments;
|
|
268
252
|
|
|
@@ -311,8 +295,8 @@ function () {
|
|
|
311
295
|
return res.json();
|
|
312
296
|
|
|
313
297
|
case 17:
|
|
314
|
-
|
|
315
|
-
token =
|
|
298
|
+
_yield$res$json = _context3.sent;
|
|
299
|
+
token = _yield$res$json.token;
|
|
316
300
|
this.token = token;
|
|
317
301
|
_context3.next = 23;
|
|
318
302
|
break;
|
|
@@ -365,12 +349,8 @@ function () {
|
|
|
365
349
|
return this.postMessageWithAttachments(activity);
|
|
366
350
|
}
|
|
367
351
|
|
|
368
|
-
var resp$ = _Observable.Observable.create(
|
|
369
|
-
|
|
370
|
-
function () {
|
|
371
|
-
var _ref4 = (0, _asyncToGenerator2["default"])(
|
|
372
|
-
/*#__PURE__*/
|
|
373
|
-
_regenerator["default"].mark(function _callee4(subscriber) {
|
|
352
|
+
var resp$ = _Observable.Observable.create( /*#__PURE__*/function () {
|
|
353
|
+
var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(subscriber) {
|
|
374
354
|
var request, resp, numberOfStreams, idString, _JSON$parse, id;
|
|
375
355
|
|
|
376
356
|
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
@@ -433,7 +413,7 @@ function () {
|
|
|
433
413
|
}));
|
|
434
414
|
|
|
435
415
|
return function (_x4) {
|
|
436
|
-
return
|
|
416
|
+
return _ref3.apply(this, arguments);
|
|
437
417
|
};
|
|
438
418
|
}());
|
|
439
419
|
|
|
@@ -445,13 +425,11 @@ function () {
|
|
|
445
425
|
var _this4 = this;
|
|
446
426
|
|
|
447
427
|
var attachments = message.attachments,
|
|
448
|
-
messageWithoutAttachments = (0, _objectWithoutProperties2["default"])(message,
|
|
428
|
+
messageWithoutAttachments = (0, _objectWithoutProperties2["default"])(message, _excluded);
|
|
449
429
|
return _Observable.Observable.create(function (subscriber) {
|
|
450
430
|
var httpContentList = [];
|
|
451
|
-
(0, _asyncToGenerator2["default"])(
|
|
452
|
-
|
|
453
|
-
_regenerator["default"].mark(function _callee6() {
|
|
454
|
-
var arrayBuffers, url, request, activityStream, resp, _ref8, id;
|
|
431
|
+
(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
|
432
|
+
var arrayBuffers, url, request, activityStream, resp, _yield$resp$streams$, id;
|
|
455
433
|
|
|
456
434
|
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
457
435
|
while (1) {
|
|
@@ -459,12 +437,8 @@ function () {
|
|
|
459
437
|
case 0:
|
|
460
438
|
_context6.prev = 0;
|
|
461
439
|
_context6.next = 3;
|
|
462
|
-
return Promise.all(attachments.map(
|
|
463
|
-
|
|
464
|
-
function () {
|
|
465
|
-
var _ref6 = (0, _asyncToGenerator2["default"])(
|
|
466
|
-
/*#__PURE__*/
|
|
467
|
-
_regenerator["default"].mark(function _callee5(attachment) {
|
|
440
|
+
return Promise.all(attachments.map( /*#__PURE__*/function () {
|
|
441
|
+
var _ref5 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(attachment) {
|
|
468
442
|
var media, res;
|
|
469
443
|
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
470
444
|
while (1) {
|
|
@@ -505,16 +479,18 @@ function () {
|
|
|
505
479
|
}));
|
|
506
480
|
|
|
507
481
|
return function (_x5) {
|
|
508
|
-
return
|
|
482
|
+
return _ref5.apply(this, arguments);
|
|
509
483
|
};
|
|
510
484
|
}()));
|
|
511
485
|
|
|
512
486
|
case 3:
|
|
513
487
|
arrayBuffers = _context6.sent;
|
|
514
|
-
arrayBuffers.forEach(function (
|
|
515
|
-
var arrayBuffer =
|
|
516
|
-
media =
|
|
517
|
-
|
|
488
|
+
arrayBuffers.forEach(function (_ref6) {
|
|
489
|
+
var arrayBuffer = _ref6.arrayBuffer,
|
|
490
|
+
media = _ref6.media;
|
|
491
|
+
|
|
492
|
+
var buffer = _buffer.Buffer.from(arrayBuffer);
|
|
493
|
+
|
|
518
494
|
console.log(buffer);
|
|
519
495
|
var stream = new BFSE.SubscribableStream();
|
|
520
496
|
stream.write(buffer);
|
|
@@ -555,8 +531,8 @@ function () {
|
|
|
555
531
|
return resp.streams[0].readAsJson();
|
|
556
532
|
|
|
557
533
|
case 20:
|
|
558
|
-
|
|
559
|
-
id =
|
|
534
|
+
_yield$resp$streams$ = _context6.sent;
|
|
535
|
+
id = _yield$resp$streams$.Id;
|
|
560
536
|
subscriber.next(id);
|
|
561
537
|
|
|
562
538
|
case 23:
|
|
@@ -580,9 +556,7 @@ function () {
|
|
|
580
556
|
}, {
|
|
581
557
|
key: "waitUntilOnline",
|
|
582
558
|
value: function () {
|
|
583
|
-
var _waitUntilOnline = (0, _asyncToGenerator2["default"])(
|
|
584
|
-
/*#__PURE__*/
|
|
585
|
-
_regenerator["default"].mark(function _callee7() {
|
|
559
|
+
var _waitUntilOnline = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
|
|
586
560
|
var _this5 = this;
|
|
587
561
|
|
|
588
562
|
return _regenerator["default"].wrap(function _callee7$(_context7) {
|
|
@@ -614,9 +588,7 @@ function () {
|
|
|
614
588
|
}, {
|
|
615
589
|
key: "connectAsync",
|
|
616
590
|
value: function () {
|
|
617
|
-
var _connectAsync = (0, _asyncToGenerator2["default"])(
|
|
618
|
-
/*#__PURE__*/
|
|
619
|
-
_regenerator["default"].mark(function _callee9() {
|
|
591
|
+
var _connectAsync = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
|
|
620
592
|
var _this6 = this;
|
|
621
593
|
|
|
622
594
|
var re, params, urlSearchParams, wsUrl;
|
|
@@ -640,12 +612,8 @@ function () {
|
|
|
640
612
|
if (this.conversationId) params['conversationId'] = this.conversationId;
|
|
641
613
|
urlSearchParams = new URLSearchParams(params).toString();
|
|
642
614
|
wsUrl = "".concat(this.domain.replace(re, 'ws$1'), "/conversations/connect?").concat(urlSearchParams);
|
|
643
|
-
return _context9.abrupt("return", new Promise(
|
|
644
|
-
|
|
645
|
-
function () {
|
|
646
|
-
var _ref9 = (0, _asyncToGenerator2["default"])(
|
|
647
|
-
/*#__PURE__*/
|
|
648
|
-
_regenerator["default"].mark(function _callee8(resolve, reject) {
|
|
615
|
+
return _context9.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
616
|
+
var _ref7 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(resolve, reject) {
|
|
649
617
|
var request, response, responseString, conversation;
|
|
650
618
|
return _regenerator["default"].wrap(function _callee8$(_context8) {
|
|
651
619
|
while (1) {
|
|
@@ -723,7 +691,7 @@ function () {
|
|
|
723
691
|
}));
|
|
724
692
|
|
|
725
693
|
return function (_x6, _x7) {
|
|
726
|
-
return
|
|
694
|
+
return _ref7.apply(this, arguments);
|
|
727
695
|
};
|
|
728
696
|
}()));
|
|
729
697
|
|
|
@@ -744,9 +712,7 @@ function () {
|
|
|
744
712
|
}, {
|
|
745
713
|
key: "connectWithRetryAsync",
|
|
746
714
|
value: function () {
|
|
747
|
-
var _connectWithRetryAsync = (0, _asyncToGenerator2["default"])(
|
|
748
|
-
/*#__PURE__*/
|
|
749
|
-
_regenerator["default"].mark(function _callee10() {
|
|
715
|
+
var _connectWithRetryAsync = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
|
|
750
716
|
var _this7 = this;
|
|
751
717
|
|
|
752
718
|
var numRetries, start, res;
|
|
@@ -828,4 +794,4 @@ function () {
|
|
|
828
794
|
}();
|
|
829
795
|
|
|
830
796
|
exports.DirectLineStreaming = DirectLineStreaming;
|
|
831
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lU3RyZWFtaW5nLnRzIl0sIm5hbWVzIjpbIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJNQVhfUkVUUllfQ09VTlQiLCJyZWZyZXNoVG9rZW5MaWZldGltZSIsInRpbWVvdXQiLCJyZWZyZXNoVG9rZW5JbnRlcnZhbCIsIlN0cmVhbUhhbmRsZXIiLCJzIiwiYyQiLCJzcSIsInN1YnNjcmliZXIiLCJjb25uZWN0aW9uU3RhdHVzJCIsInNob3VsZFF1ZXVlIiwicmVxdWVzdCIsImxvZ2dlciIsInN0cmVhbXMiLCJzdHJlYW0wIiwic2hpZnQiLCJyZWFkQXNTdHJpbmciLCJhY3Rpdml0eVNldEpzb24iLCJhY3Rpdml0eVNldCIsIkpTT04iLCJwYXJzZSIsImFjdGl2aXRpZXMiLCJsZW5ndGgiLCJlcnJvciIsIkVycm9yIiwiQkZTRSIsIlN0cmVhbWluZ1Jlc3BvbnNlIiwiY3JlYXRlIiwiYWN0aXZpdHkiLCJhdHRhY2htZW50cyIsInN0cmVhbSIsImF0dGFjaG1lbnQiLCJkYXRhVXJpIiwicHVzaCIsImNvbnRlbnRUeXBlIiwiY29udGVudFVybCIsImFjdGl2aXR5UXVldWUiLCJuZXh0Iiwic3Vic2NyaWJlIiwiY3MiLCJmb3JFYWNoIiwiYSIsIkRpcmVjdExpbmVTdHJlYW1pbmciLCJvcHRpb25zIiwiQmVoYXZpb3JTdWJqZWN0IiwiQ29ubmVjdGlvblN0YXR1cyIsIlVuaW5pdGlhbGl6ZWQiLCJ0b2tlbiIsInJlZnJlc2hUb2tlbiIsImRvbWFpbiIsImNvbnZlcnNhdGlvbklkIiwiX2JvdEFnZW50IiwiZ2V0Qm90QWdlbnQiLCJib3RBZ2VudCIsInF1ZXVlQWN0aXZpdGllcyIsImFjdGl2aXR5JCIsIk9ic2VydmFibGUiLCJhY3Rpdml0eVN1YnNjcmliZXIiLCJ0aGVTdHJlYW1IYW5kbGVyIiwiY29ubmVjdFdpdGhSZXRyeUFzeW5jIiwic2hhcmUiLCJjb25uZWN0QXN5bmMiLCJFbmRlZCIsInN0cmVhbUNvbm5lY3Rpb24iLCJkaXNjb25uZWN0IiwiY3VzdG9tQWdlbnQiLCJjbGllbnRBZ2VudCIsImZpcnN0Q2FsbCIsInJldHJ5Q291bnQiLCJ3YWl0VW50aWxPbmxpbmUiLCJudW1iZXJPZkF0dGVtcHRzIiwiUHJvbWlzZSIsInIiLCJzZXRUaW1lb3V0IiwibWV0aG9kIiwiaGVhZGVycyIsImNvbW1vbkhlYWRlcnMiLCJyZXMiLCJvayIsImpzb24iLCJzdGF0dXMiLCJjb25zb2xlIiwic3RhdHVzVGV4dCIsIndhcm4iLCJ0eXBlIiwicG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMiLCJyZXNwJCIsIlN0cmVhbWluZ1JlcXVlc3QiLCJzZXRCb2R5Iiwic3RyaW5naWZ5Iiwic2VuZCIsInJlc3AiLCJzdGF0dXNDb2RlIiwibnVtYmVyT2ZTdHJlYW1zIiwiaWRTdHJpbmciLCJpZCIsIklkIiwibWVzc2FnZSIsIm1lc3NhZ2VXaXRob3V0QXR0YWNobWVudHMiLCJodHRwQ29udGVudExpc3QiLCJhbGwiLCJtYXAiLCJtZWRpYSIsImFycmF5QnVmZmVyIiwiYXJyYXlCdWZmZXJzIiwiYnVmZmVyIiwiQnVmZmVyIiwibG9nIiwiU3Vic2NyaWJhYmxlU3RyZWFtIiwid3JpdGUiLCJodHRwQ29udGVudCIsIkh0dHBDb250ZW50IiwiY29udGVudExlbmd0aCIsInVybCIsImZyb20iLCJhY3Rpdml0eVN0cmVhbSIsImFkZFN0cmVhbSIsImUiLCJyZWFkQXNKc29uIiwicmVzb2x2ZSIsInJlamVjdCIsIk9ubGluZSIsInJlIiwiUmVnRXhwIiwidGVzdCIsInBhcmFtcyIsInVybFNlYXJjaFBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsInRvU3RyaW5nIiwid3NVcmwiLCJyZXBsYWNlIiwiV2ViU29ja2V0Q2xpZW50IiwicmVxdWVzdEhhbmRsZXIiLCJkaXNjb25uZWN0aW9uSGFuZGxlciIsImNvbm5lY3QiLCJyZXNwb25zZSIsInJlc3BvbnNlU3RyaW5nIiwiY29udmVyc2F0aW9uIiwiZmx1c2giLCJudW1SZXRyaWVzIiwic3RhcnQiLCJEYXRlIiwi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OztBQUFBO0FBQUE7QUFBQTtBQXlCZmtFLDRCQUFBQSxNQUFNLGNBQU47O0FBekJlO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUFaOztBQUFBO0FBQUE7QUFBQTtBQUFBLG9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCSG1CLGdCQUFBQSxVLEdBQWEzSSxlOzs7c0JBQ1YySSxVQUFVLEdBQUcsQzs7Ozs7QUFDbEJBLGdCQUFBQSxVQUFVO0FBQ0pDLGdCQUFBQSxLLEdBQVFDLElBQUksQ0FBQ0MsR0FBTCxFOztBQUVaLHFCQUFLckksaUJBQUwsQ0FBdUI0QixJQUF2QixDQUE0QlEsNkJBQWlCa0csVUFBN0M7O3VCQUNrQixLQUFLbEYsWUFBTCxFOzs7QUFBWmdCLGdCQUFBQSxHO0FBQ05JLGdCQUFBQSxPQUFPLENBQUNFLElBQVIsK0JBQW9DTixHQUFwQzs7c0JBQ0ksUUFBUWdFLElBQUksQ0FBQ0MsR0FBTCxLQUFhRixLOzs7OztBQUN2QjtBQUNBO0FBQ0FELGdCQUFBQSxVQUFVLEdBQUczSSxlQUFiOzs7Ozs7Ozs7O0FBSUZpRixnQkFBQUEsT0FBTyxDQUFDMUQsS0FBUjs7Ozs7dUJBSUksSUFBSWdELE9BQUosQ0FBWSxVQUFBQyxDQUFDO0FBQUEseUJBQUlDLFVBQVUsQ0FBQ0QsQ0FBRCxFQUFJLE1BQUksQ0FBQ3dFLGFBQUwsRUFBSixDQUFkO0FBQUEsaUJBQWIsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQUlWOzs7O29DQUN3QjtBQUN0QixhQUFPQyxJQUFJLENBQUNDLEtBQUwsQ0FBVyxPQUFPRCxJQUFJLENBQUNFLE1BQUwsS0FBZ0IsS0FBbEMsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSW4gb3JkZXIgdG8ga2VlcCBmaWxlIHNpemUgZG93biwgb25seSBpbXBvcnQgdGhlIHBhcnRzIG9mIHJ4anMgdGhhdCB3ZSB1c2VcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcy9CZWhhdmlvclN1YmplY3QnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBTdWJzY3JpYmVyIH0gZnJvbSAncnhqcy9TdWJzY3JpYmVyJztcbmltcG9ydCAqIGFzIEJGU0UgZnJvbSAnYm90ZnJhbWV3b3JrLXN0cmVhbWluZyc7XG5pbXBvcnQgZmV0Y2ggZnJvbSAnY3Jvc3MtZmV0Y2gnO1xuXG5pbXBvcnQge1xuICBBY3Rpdml0eSxcbiAgQ29ubmVjdGlvblN0YXR1cyxcbiAgQ29udmVyc2F0aW9uLFxuICBJQm90Q29ubmVjdGlvbixcbiAgTWVkaWEsXG4gIE1lc3NhZ2Vcbn0gZnJvbSAnLi9kaXJlY3RMaW5lJztcblxuY29uc3QgRElSRUNUX0xJTkVfVkVSU0lPTiA9ICdEaXJlY3RMaW5lLzMuMCc7XG5jb25zdCBNQVhfUkVUUllfQ09VTlQgPSAzO1xuY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSAzMCAqIDYwICogMTAwMDtcbi8vY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSA1MDAwO1xuY29uc3QgdGltZW91dCA9IDIwICogMTAwMDtcbmNvbnN0IHJlZnJlc2hUb2tlbkludGVydmFsID0gcmVmcmVzaFRva2VuTGlmZXRpbWUgLyAyO1xuXG5pbnRlcmZhY2UgRGlyZWN0TGluZVN0cmVhbWluZ09wdGlvbnMge1xuICB0b2tlbjogc3RyaW5nLFxuICBjb252ZXJzYXRpb25JZD86IHN0cmluZyxcbiAgZG9tYWluOiBzdHJpbmcsXG4gIC8vIEF0dGFjaGVkIHRvIGFsbCByZXF1ZXN0cyB0byBpZGVudGlmeSByZXF1ZXN0aW5nIGFnZW50LlxuICBib3RBZ2VudD86IHN0cmluZ1xufVxuXG5jbGFzcyBTdHJlYW1IYW5kbGVyIGltcGxlbWVudHMgQkZTRS5SZXF1ZXN0SGFuZGxlciB7XG4gIHByaXZhdGUgY29ubmVjdGlvblN0YXR1cyQ7XG4gIHByaXZhdGUgc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxBY3Rpdml0eT47XG4gIHByaXZhdGUgc2hvdWxkUXVldWU6ICgpID0+IGJvb2xlYW47XG4gIHByaXZhdGUgYWN0aXZpdHlRdWV1ZTogQXJyYXk8QWN0aXZpdHk+ID0gW107XG5cbiAgY29uc3RydWN0b3IoczogU3Vic2NyaWJlcjxBY3Rpdml0eT4sIGMkOiBPYnNlcnZhYmxlPENvbm5lY3Rpb25TdGF0dXM+LCBzcTogKCkgPT4gYm9vbGVhbikge1xuICAgIHRoaXMuc3Vic2NyaWJlciA9IHM7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJCA9IGMkO1xuICAgIHRoaXMuc2hvdWxkUXVldWUgPSBzcTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdWJzY3JpYmVyKHM6IFN1YnNjcmliZXI8QWN0aXZpdHk+KSB7XG4gICAgdGhpcy5zdWJzY3JpYmVyID0gcztcbiAgfVxuXG4gIGFzeW5jIHByb2Nlc3NSZXF1ZXN0KHJlcXVlc3Q6IEJGU0UuSVJlY2VpdmVSZXF1ZXN0LCBsb2dnZXI/OiBhbnkpOiBQcm9taXNlPEJGU0UuU3RyZWFtaW5nUmVzcG9uc2U+IHtcbiAgICBjb25zdCBzdHJlYW1zID0gWy4uLnJlcXVlc3Quc3RyZWFtc107XG4gICAgY29uc3Qgc3RyZWFtMCA9IHN0cmVhbXMuc2hpZnQoKTtcbiAgICBjb25zdCBhY3Rpdml0eVNldEpzb24gPSBhd2FpdCBzdHJlYW0wLnJlYWRBc1N0cmluZygpO1xuICAgIGNvbnN0IGFjdGl2aXR5U2V0ID0gSlNPTi5wYXJzZShhY3Rpdml0eVNldEpzb24pO1xuXG4gICAgaWYgKGFjdGl2aXR5U2V0LmFjdGl2aXRpZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAvLyBPbmx5IG9uZSBhY3Rpdml0eSBpcyBleHBlY3RlZCBpbiBhIHNldCBpbiBzdHJlYW1pbmdcbiAgICAgIHRoaXMuc3Vic2NyaWJlci5lcnJvcihuZXcgRXJyb3IoJ3RoZXJlIHNob3VsZCBiZSBleGFjdGx5IG9uZSBhY3Rpdml0eScpKTtcbiAgICAgIHJldHVybiBCRlNFLlN0cmVhbWluZ1Jlc3BvbnNlLmNyZWF0ZSg1MDApO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2aXR5ID0gYWN0aXZpdHlTZXQuYWN0aXZpdGllc1swXTtcblxuICAgIGlmIChzdHJlYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gWy4uLmFjdGl2aXR5LmF0dGFjaG1lbnRzXTtcblxuICAgICAgbGV0IHN0cmVhbTogQkZTRS5Db250ZW50U3RyZWFtO1xuICAgICAgd2hpbGUgKHN0cmVhbSA9IHN0cmVhbXMuc2hpZnQoKSkge1xuICAgICAgICBjb25zdCBhdHRhY2htZW50ID0gYXdhaXQgc3RyZWFtLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCBkYXRhVXJpID0gXCJkYXRhOnRleHQvcGxhaW47YmFzZTY0LFwiICsgYXR0YWNobWVudDtcbiAgICAgICAgYXR0YWNobWVudHMucHVzaCh7IGNvbnRlbnRUeXBlOiBzdHJlYW0uY29udGVudFR5cGUsIGNvbnRlbnRVcmw6IGRhdGFVcmkgfSk7XG4gICAgICB9XG5cbiAgICAgIGFjdGl2aXR5LmF0dGFjaG1lbnRzID0gYXR0YWNobWVudHM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkUXVldWUoKSkge1xuICAgICAgdGhpcy5hY3Rpdml0eVF1ZXVlLnB1c2goYWN0aXZpdHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN1YnNjcmliZXIubmV4dChhY3Rpdml0eSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEJGU0UuU3RyZWFtaW5nUmVzcG9uc2UuY3JlYXRlKDIwMCk7XG4gIH1cblxuICBwdWJsaWMgZmx1c2goKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5zdWJzY3JpYmUoY3MgPT4geyB9KVxuICAgIHRoaXMuYWN0aXZpdHlRdWV1ZS5mb3JFYWNoKChhKSA9PiB0aGlzLnN1YnNjcmliZXIubmV4dChhKSk7XG4gICAgdGhpcy5hY3Rpdml0eVF1ZXVlID0gW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpcmVjdExpbmVTdHJlYW1pbmcgaW1wbGVtZW50cyBJQm90Q29ubmVjdGlvbiB7XG4gIHB1YmxpYyBjb25uZWN0aW9uU3RhdHVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoQ29ubmVjdGlvblN0YXR1cy5VbmluaXRpYWxpemVkKTtcbiAgcHVibGljIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT47XG5cbiAgcHJpdmF0ZSBhY3Rpdml0eVN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+O1xuICBwcml2YXRlIHRoZVN0cmVhbUhhbmRsZXI6IFN0cmVhbUhhbmRsZXI7XG5cbiAgcHJpdmF0ZSBkb21haW46IHN0cmluZztcblxuICBwcml2YXRlIGNvbnZlcnNhdGlvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgdG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSBzdHJlYW1Db25uZWN0aW9uOiBCRlNFLldlYlNvY2tldENsaWVudDtcbiAgcHJpdmF0ZSBxdWV1ZUFjdGl2aXRpZXM6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfYm90QWdlbnQgPSAnJztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBEaXJlY3RMaW5lU3RyZWFtaW5nT3B0aW9ucykge1xuICAgIHRoaXMudG9rZW4gPSBvcHRpb25zLnRva2VuO1xuXG4gICAgdGhpcy5yZWZyZXNoVG9rZW4oKTtcblxuICAgIHRoaXMuZG9tYWluID0gb3B0aW9ucy5kb21haW47XG5cbiAgICBpZiAob3B0aW9ucy5jb252ZXJzYXRpb25JZCkge1xuICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IG9wdGlvbnMuY29udmVyc2F0aW9uSWQ7XG4gICAgfVxuXG4gICAgdGhpcy5fYm90QWdlbnQgPSB0aGlzLmdldEJvdEFnZW50KG9wdGlvbnMuYm90QWdlbnQpO1xuXG4gICAgdGhpcy5xdWV1ZUFjdGl2aXRpZXMgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZpdHkkID0gT2JzZXJ2YWJsZS5jcmVhdGUoYXN5bmMgKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+KSA9PiB7XG4gICAgICB0aGlzLmFjdGl2aXR5U3Vic2NyaWJlciA9IHN1YnNjcmliZXI7XG4gICAgICB0aGlzLnRoZVN0cmVhbUhhbmRsZXIgPSBuZXcgU3RyZWFtSGFuZGxlcihzdWJzY3JpYmVyLCB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLCAoKSA9PiB0aGlzLnF1ZXVlQWN0aXZpdGllcyk7XG4gICAgICB0aGlzLmNvbm5lY3RXaXRoUmV0cnlBc3luYygpO1xuICAgIH0pLnNoYXJlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVjb25uZWN0KHsgY29udmVyc2F0aW9uSWQsIHRva2VuIH0gOiBDb252ZXJzYXRpb24pIHtcbiAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gY29udmVyc2F0aW9uSWQ7XG4gICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgIHRoaXMuY29ubmVjdEFzeW5jKCk7XG4gIH1cblxuICBlbmQoKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGNvbW1vbkhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwiQXV0aG9yaXphdGlvblwiOiBgQmVhcmVyICR7dGhpcy50b2tlbn1gLFxuICAgICAgXCJ4LW1zLWJvdC1hZ2VudFwiOiB0aGlzLl9ib3RBZ2VudFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEJvdEFnZW50KGN1c3RvbUFnZW50OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgbGV0IGNsaWVudEFnZW50ID0gJ2RpcmVjdGxpbmVTdHJlYW1pbmcnXG5cbiAgICBpZiAoY3VzdG9tQWdlbnQpIHtcbiAgICAgIGNsaWVudEFnZW50ICs9IGA7ICR7Y3VzdG9tQWdlbnR9YFxuICAgIH1cblxuICAgIHJldHVybiBgJHtESVJFQ1RfTElORV9WRVJTSU9OfSAoJHtjbGllbnRBZ2VudH0pYDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaFRva2VuKGZpcnN0Q2FsbCA9IHRydWUsIHJldHJ5Q291bnQgPSAwKSB7XG4gICAgYXdhaXQgdGhpcy53YWl0VW50aWxPbmxpbmUoKTtcblxuICAgIGxldCBudW1iZXJPZkF0dGVtcHRzID0gMDtcbiAgICB3aGlsZShudW1iZXJPZkF0dGVtcHRzIDwgTUFYX1JFVFJZX0NPVU5UKSB7XG4gICAgICBudW1iZXJPZkF0dGVtcHRzKys7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgcmVmcmVzaFRva2VuSW50ZXJ2YWwpKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke3RoaXMuZG9tYWlufS90b2tlbnMvcmVmcmVzaGAsIHttZXRob2Q6IFwiUE9TVFwiLCBoZWFkZXJzOiB0aGlzLmNvbW1vbkhlYWRlcnMoKX0pO1xuICAgICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgICAgbnVtYmVyT2ZBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgY29uc3Qge3Rva2VufSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSA0MDMgfHwgcmVzLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYXRhbCBlcnJvciB3aGlsZSByZWZyZXNoaW5nIHRoZSB0b2tlbjogJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fWApO1xuICAgICAgICAgICAgdGhpcy5zdHJlYW1Db25uZWN0aW9uLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBSZWZyZXNoIGF0dGVtcHQgIyR7bnVtYmVyT2ZBdHRlbXB0c30gZmFpbGVkOiAke3Jlcy5zdGF0dXN9ICR7cmVzLnN0YXR1c1RleHR9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBSZWZyZXNoIGF0dGVtcHQgIyR7bnVtYmVyT2ZBdHRlbXB0c30gdGhyZXcgYW4gZXhjZXB0aW9uOiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihcIlJldHJpZXMgZXhoYXVzdGVkXCIpO1xuICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwb3N0QWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KSB7XG4gICAgaWYgKGFjdGl2aXR5LnR5cGUgPT09IFwibWVzc2FnZVwiICYmIGFjdGl2aXR5LmF0dGFjaG1lbnRzICYmIGFjdGl2aXR5LmF0dGFjaG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzKGFjdGl2aXR5KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwJCA9IE9ic2VydmFibGUuY3JlYXRlKGFzeW5jIHN1YnNjcmliZXIgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IEJGU0UuU3RyZWFtaW5nUmVxdWVzdC5jcmVhdGUoJ1BPU1QnLCAnL3YzL2RpcmVjdGxpbmUvY29udmVyc2F0aW9ucy8nICsgdGhpcy5jb252ZXJzYXRpb25JZCArICcvYWN0aXZpdGllcycpO1xuICAgICAgcmVxdWVzdC5zZXRCb2R5KEpTT04uc3RyaW5naWZ5KGFjdGl2aXR5KSk7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5zdHJlYW1Db25uZWN0aW9uLnNlbmQocmVxdWVzdCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChyZXNwLnN0YXR1c0NvZGUgIT09IDIwMCkgdGhyb3cgbmV3IEVycm9yKFwiUG9zdEFjdGl2aXR5IHJldHVybmVkIFwiICsgcmVzcC5zdGF0dXNDb2RlKTtcbiAgICAgICAgY29uc3QgbnVtYmVyT2ZTdHJlYW1zID0gcmVzcC5zdHJlYW1zLmxlbmd0aDtcbiAgICAgICAgaWYgKG51bWJlck9mU3RyZWFtcyAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgb25lIHN0cmVhbSBidXQgZ290IFwiICsgbnVtYmVyT2ZTdHJlYW1zKVxuICAgICAgICBjb25zdCBpZFN0cmluZyA9IGF3YWl0IHJlc3Auc3RyZWFtc1swXS5yZWFkQXNTdHJpbmcoKTtcbiAgICAgICAgY29uc3Qge0lkIDogaWR9ID0gSlNPTi5wYXJzZShpZFN0cmluZyk7XG4gICAgICAgIHJldHVybiBzdWJzY3JpYmVyLm5leHQoaWQpO1xuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBuZXR3b3JrIGlzc3VlIHRoZW4gaXRzIGhhbmRsZWQgYnlcbiAgICAgICAgICAvLyB0aGUgZGlzY29ubmVjdGlvbkhhbmRsZXIuIEV2ZXJ5dGhpbmcgZWxzZSBjYW5cbiAgICAgICAgICAvLyBiZSByZXRyaWVkXG4gICAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3AkO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyhtZXNzYWdlOiBNZXNzYWdlKSB7XG4gICAgY29uc3QgeyBhdHRhY2htZW50cywgLi4ubWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cyB9ID0gbWVzc2FnZTtcblxuICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSggc3Vic2NyaWJlciA9PiB7XG4gICAgICBjb25zdCBodHRwQ29udGVudExpc3QgPSBbXTtcbiAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXJzID0gYXdhaXQgUHJvbWlzZS5hbGwoYXR0YWNobWVudHMubWFwKGFzeW5jIGF0dGFjaG1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWVkaWEgPSBhdHRhY2htZW50IGFzIE1lZGlhO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gobWVkaWEuY29udGVudFVybCk7XG4gICAgICAgICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IGFycmF5QnVmZmVyOiBhd2FpdCByZXMuYXJyYXlCdWZmZXIoKSwgbWVkaWEgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignLi4uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgYXJyYXlCdWZmZXJzLmZvckVhY2goKHsgYXJyYXlCdWZmZXIsIG1lZGlhIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBCdWZmZXIoYXJyYXlCdWZmZXIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYnVmZmVyKTtcbiAgICAgICAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBCRlNFLlN1YnNjcmliYWJsZVN0cmVhbSgpO1xuICAgICAgICAgICAgc3RyZWFtLndyaXRlKGJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBodHRwQ29udGVudCA9IG5ldyBCRlNFLkh0dHBDb250ZW50KHsgdHlwZTogbWVkaWEuY29udGVudFR5cGUsIGNvbnRlbnRMZW5ndGg6IGJ1ZmZlci5sZW5ndGggfSwgc3RyZWFtKTtcbiAgICAgICAgICAgIGh0dHBDb250ZW50TGlzdC5wdXNoKGh0dHBDb250ZW50KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IHVybCA9IGAvdjMvZGlyZWN0bGluZS9jb252ZXJzYXRpb25zLyR7dGhpcy5jb252ZXJzYXRpb25JZH0vdXNlcnMvJHttZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzLmZyb20uaWR9L3VwbG9hZGA7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdCA9IEJGU0UuU3RyZWFtaW5nUmVxdWVzdC5jcmVhdGUoJ1BVVCcsIHVybCk7XG4gICAgICAgICAgY29uc3QgYWN0aXZpdHlTdHJlYW0gPSBuZXcgQkZTRS5TdWJzY3JpYmFibGVTdHJlYW0oKTtcbiAgICAgICAgICBhY3Rpdml0eVN0cmVhbS53cml0ZShKU09OLnN0cmluZ2lmeShtZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzKSwgJ3V0Zi04Jyk7XG4gICAgICAgICAgcmVxdWVzdC5hZGRTdHJlYW0obmV3IEJGU0UuSHR0cENvbnRlbnQoeyB0eXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuYWN0aXZpdHlcIiwgY29udGVudExlbmd0aDogYWN0aXZpdHlTdHJlYW0ubGVuZ3RoIH0sIGFjdGl2aXR5U3RyZWFtKSk7XG4gICAgICAgICAgaHR0cENvbnRlbnRMaXN0LmZvckVhY2goZSA9PiByZXF1ZXN0LmFkZFN0cmVhbShlKSk7XG5cbiAgICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5zdHJlYW1Db25uZWN0aW9uLnNlbmQocmVxdWVzdCk7XG4gICAgICAgICAgaWYgKHJlc3Auc3RyZWFtcyAmJiByZXNwLnN0cmVhbXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcihgSW52YWxpZCBzdHJlYW0gY291bnQgJHtyZXNwLnN0cmVhbXMubGVuZ3RofWApKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qge0lkOiBpZH0gPSBhd2FpdCByZXNwLnN0cmVhbXNbMF0ucmVhZEFzSnNvbigpO1xuICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdhaXRVbnRpbE9ubGluZSgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5zdWJzY3JpYmUoKGNzKSA9PiB7XG4gICAgICAgIGlmIChjcyA9PT0gQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9LFxuICAgICAgICAoZSkgPT4gcmVqZWN0KGUpKTtcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25uZWN0QXN5bmMoKSB7XG4gICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKCdeaHR0cChzPyknKTtcbiAgICBpZiAoIXJlLnRlc3QodGhpcy5kb21haW4pKSB0aHJvdyAoXCJEb21haW4gbXVzdCBiZWdpbiB3aXRoIGh0dHAgb3IgaHR0cHNcIik7XG4gICAgY29uc3QgcGFyYW1zID0ge3Rva2VuOiB0aGlzLnRva2VufTtcbiAgICBpZiAodGhpcy5jb252ZXJzYXRpb25JZCkgcGFyYW1zWydjb252ZXJzYXRpb25JZCddID0gdGhpcy5jb252ZXJzYXRpb25JZDtcbiAgICBjb25zdCB1cmxTZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykudG9TdHJpbmcoKTtcbiAgICBjb25zdCB3c1VybCA9IGAke3RoaXMuZG9tYWluLnJlcGxhY2UocmUsICd3cyQxJyl9L2NvbnZlcnNhdGlvbnMvY29ubmVjdD8ke3VybFNlYXJjaFBhcmFtc31gO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbiA9IG5ldyBCRlNFLldlYlNvY2tldENsaWVudCh7XG4gICAgICAgICAgdXJsOiB3c1VybCxcbiAgICAgICAgICByZXF1ZXN0SGFuZGxlcjogdGhpcy50aGVTdHJlYW1IYW5kbGVyLFxuICAgICAgICAgIGRpc2Nvbm5lY3Rpb25IYW5kbGVyOiAoZSkgPT4gcmVzb2x2ZShlKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnF1ZXVlQWN0aXZpdGllcyA9IHRydWU7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5jb25uZWN0KCk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBCRlNFLlN0cmVhbWluZ1JlcXVlc3QuY3JlYXRlKCdQT1NUJywgJy92My9kaXJlY3RsaW5lL2NvbnZlcnNhdGlvbnMnKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uc2VuZChyZXF1ZXN0KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkgdGhyb3cgbmV3IEVycm9yKFwiQ29ubmVjdGlvbiByZXNwb25zZSBjb2RlIFwiICsgcmVzcG9uc2Uuc3RhdHVzQ29kZSk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdHJlYW1zLmxlbmd0aCAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgMSBzdHJlYW0gYnV0IGdvdCBcIiArIHJlc3BvbnNlLnN0cmVhbXMubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VTdHJpbmcgPSBhd2FpdCByZXNwb25zZS5zdHJlYW1zWzBdLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCBjb252ZXJzYXRpb24gPSBKU09OLnBhcnNlKHJlc3BvbnNlU3RyaW5nKTtcbiAgICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IGNvbnZlcnNhdGlvbi5jb252ZXJzYXRpb25JZDtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuT25saW5lKTtcblxuICAgICAgICAvLyBXYWl0IHVudGlsIERMIGNvbnN1bWVycyBoYXZlIGhhZCBhIGNoYW5jZSB0byBiZSBub3RpZmllZFxuICAgICAgICAvLyBvZiB0aGUgY29ubmVjdGlvbiBzdGF0dXMgY2hhbmdlLlxuICAgICAgICBhd2FpdCB0aGlzLndhaXRVbnRpbE9ubGluZSgpO1xuICAgICAgICB0aGlzLnRoZVN0cmVhbUhhbmRsZXIuZmx1c2goKTtcbiAgICAgICAgdGhpcy5xdWV1ZUFjdGl2aXRpZXMgPSBmYWxzZTtcbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RXaXRoUmV0cnlBc3luYygpIHtcbiAgICBsZXQgbnVtUmV0cmllcyA9IE1BWF9SRVRSWV9DT1VOVDtcbiAgICB3aGlsZSAobnVtUmV0cmllcyA+IDApIHtcbiAgICAgIG51bVJldHJpZXMtLTtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbm5lY3RBc3luYygpO1xuICAgICAgICBjb25zb2xlLndhcm4oYFJldHJ5aW5nIGNvbm5lY3Rpb24gJHtyZXN9YCk7XG4gICAgICAgIGlmICg2MDAwMCA8IERhdGUubm93KCkgLSBzdGFydCkge1xuICAgICAgICAgIC8vIHJlc2V0IHRoZSByZXRyeSBjb3VudGVyIGFuZCByZXRyeSBpbW1lZGlhdGVseVxuICAgICAgICAgIC8vIGlmIHRoZSBjb25uZWN0aW9uIGxhc3RlZCBmb3IgbW9yZSB0aGFuIGEgbWludXRlXG4gICAgICAgICAgbnVtUmV0cmllcyA9IE1BWF9SRVRSWV9DT1VOVDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjb25uZWN0ICR7ZXJyfWApO1xuICAgICAgICB0aHJvdyhlcnIpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgdGhpcy5nZXRSZXRyeURlbGF5KCkpKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBkZWxheSBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHNcbiAgcHJpdmF0ZSBnZXRSZXRyeURlbGF5KCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKDMwMDAgKyBNYXRoLnJhbmRvbSgpICogMTIwMDApO1xuICB9XG59Il19
|
|
797
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lU3RyZWFtaW5nLnRzIl0sIm5hbWVzIjpbIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJNQVhfUkVUUllfQ09VTlQiLCJyZWZyZXNoVG9rZW5MaWZldGltZSIsInRpbWVvdXQiLCJyZWZyZXNoVG9rZW5JbnRlcnZhbCIsIlN0cmVhbUhhbmRsZXIiLCJzIiwiYyQiLCJzcSIsInN1YnNjcmliZXIiLCJjb25uZWN0aW9uU3RhdHVzJCIsInNob3VsZFF1ZXVlIiwicmVxdWVzdCIsImxvZ2dlciIsInN0cmVhbXMiLCJzdHJlYW0wIiwic2hpZnQiLCJyZWFkQXNTdHJpbmciLCJhY3Rpdml0eVNldEpzb24iLCJhY3Rpdml0eVNldCIsIkpTT04iLCJwYXJzZSIsImFjdGl2aXRpZXMiLCJsZW5ndGgiLCJlcnJvciIsIkVycm9yIiwiQkZTRSIsIlN0cmVhbWluZ1Jlc3BvbnNlIiwiY3JlYXRlIiwiYWN0aXZpdHkiLCJhdHRhY2htZW50cyIsInN0cmVhbSIsImF0dGFjaG1lbnQiLCJkYXRhVXJpIiwicHVzaCIsImNvbnRlbnRUeXBlIiwiY29udGVudFVybCIsImFjdGl2aXR5UXVldWUiLCJuZXh0Iiwic3Vic2NyaWJlIiwiY3MiLCJmb3JFYWNoIiwiYSIsIkRpcmVjdExpbmVTdHJlYW1pbmciLCJvcHRpb25zIiwiQmVoYXZpb3JTdWJqZWN0IiwiQ29ubmVjdGlvblN0YXR1cyIsIlVuaW5pdGlhbGl6ZWQiLCJ0b2tlbiIsInJlZnJlc2hUb2tlbiIsImRvbWFpbiIsImNvbnZlcnNhdGlvbklkIiwiX2JvdEFnZW50IiwiZ2V0Qm90QWdlbnQiLCJib3RBZ2VudCIsInF1ZXVlQWN0aXZpdGllcyIsImFjdGl2aXR5JCIsIk9ic2VydmFibGUiLCJhY3Rpdml0eVN1YnNjcmliZXIiLCJ0aGVTdHJlYW1IYW5kbGVyIiwiY29ubmVjdFdpdGhSZXRyeUFzeW5jIiwic2hhcmUiLCJjb25uZWN0QXN5bmMiLCJFbmRlZCIsInN0cmVhbUNvbm5lY3Rpb24iLCJkaXNjb25uZWN0IiwiY3VzdG9tQWdlbnQiLCJjbGllbnRBZ2VudCIsImZpcnN0Q2FsbCIsInJldHJ5Q291bnQiLCJ3YWl0VW50aWxPbmxpbmUiLCJudW1iZXJPZkF0dGVtcHRzIiwiUHJvbWlzZSIsInIiLCJzZXRUaW1lb3V0IiwibWV0aG9kIiwiaGVhZGVycyIsImNvbW1vbkhlYWRlcnMiLCJyZXMiLCJvayIsImpzb24iLCJzdGF0dXMiLCJjb25zb2xlIiwic3RhdHVzVGV4dCIsIndhcm4iLCJ0eXBlIiwicG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMiLCJyZXNwJCIsIlN0cmVhbWluZ1JlcXVlc3QiLCJzZXRCb2R5Iiwic3RyaW5naWZ5Iiwic2VuZCIsInJlc3AiLCJzdGF0dXNDb2RlIiwibnVtYmVyT2ZTdHJlYW1zIiwiaWRTdHJpbmciLCJpZCIsIklkIiwibWVzc2FnZSIsIm1lc3NhZ2VXaXRob3V0QXR0YWNobWVudHMiLCJodHRwQ29udGVudExpc3QiLCJhbGwiLCJtYXAiLCJtZWRpYSIsImFycmF5QnVmZmVyIiwiYXJyYXlCdWZmZXJzIiwiYnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsImxvZyIsIlN1YnNjcmliYWJsZVN0cmVhbSIsIndyaXRlIiwiaHR0cENvbnRlbnQiLCJIdHRwQ29udGVudCIsImNvbnRlbnRMZW5ndGgiLCJ1cmwiLCJhY3Rpdml0eVN0cmVhbSIsImFkZFN0cmVhbSIsImUiLCJyZWFkQXNKc29uIiwicmVzb2x2ZSIsInJlamVjdCIsIk9ubGluZSIsInJlIiwiUmVnRXhwIiwidGVzdCIsInBhcmFtcyIsInVybFNlYXJjaFBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsInRvU3RyaW5nIiwid3NVcmwiLCJyZXBsYWNlIiwiV2ViU29ja2V0Q2xpZW50IiwicmVxdWVzdEhhbmRsZXIiLCJkaXNjb25uZWN0aW9uSGFuZGxlciIsImNvbm5lY3QiLCJyZXNwb25zZSIsInJlc3BvbnNlU3RyaW5nIiwiY29udmVyc2F0aW9uIiwiZmx1c2giLCJudW1SZXRyaWVzIiwic3RhcnQiLCJEYXRlIiwi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QUFHSUEsZ0JBQUFBLFVBQVU7QUFDSkMsZ0JBQUFBLEtBSlYsR0FJa0JDLElBQUksQ0FBQ0MsR0FBTCxFQUpsQjtBQUFBO0FBTU0scUJBQUtySSxpQkFBTCxDQUF1QjRCLElBQXZCLENBQTRCUSw2QkFBaUJrRyxVQUE3QztBQU5OO0FBQUEsdUJBT3dCLEtBQUtsRixZQUFMLEVBUHhCOztBQUFBO0FBT1lnQixnQkFBQUEsR0FQWjtBQVFNSSxnQkFBQUEsT0FBTyxDQUFDRSxJQUFSLCtCQUFvQ04sR0FBcEM7O0FBUk4sc0JBU1UsUUFBUWdFLElBQUksQ0FBQ0MsR0FBTCxLQUFhRixLQVQvQjtBQUFBO0FBQUE7QUFBQTs7QUFVUTtBQUNBO0FBQ0FELGdCQUFBQSxVQUFVLEdBQUczSSxlQUFiO0FBWlI7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQWdCTWlGLGdCQUFBQSxPQUFPLENBQUMxRCxLQUFSO0FBaEJOOztBQUFBO0FBQUE7QUFBQSx1QkFvQlUsSUFBSWdELE9BQUosQ0FBWSxVQUFBQyxDQUFDO0FBQUEseUJBQUlDLFVBQVUsQ0FBQ0QsQ0FBRCxFQUFJLE1BQUksQ0FBQ3dFLGFBQUwsRUFBSixDQUFkO0FBQUEsaUJBQWIsQ0FwQlY7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE87Ozs7Ozs7UUF3QkE7Ozs7V0FDQSx5QkFBd0I7QUFDdEIsYUFBT0MsSUFBSSxDQUFDQyxLQUFMLENBQVcsT0FBT0QsSUFBSSxDQUFDRSxNQUFMLEtBQWdCLEtBQWxDLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEluIG9yZGVyIHRvIGtlZXAgZmlsZSBzaXplIGRvd24sIG9ubHkgaW1wb3J0IHRoZSBwYXJ0cyBvZiByeGpzIHRoYXQgd2UgdXNlXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMvQmVoYXZpb3JTdWJqZWN0JztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9PYnNlcnZhYmxlJztcbmltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICdyeGpzL1N1YnNjcmliZXInO1xuaW1wb3J0ICogYXMgQkZTRSBmcm9tICdib3RmcmFtZXdvcmstc3RyZWFtaW5nJztcbmltcG9ydCBmZXRjaCBmcm9tICdjcm9zcy1mZXRjaCc7XG5cbmltcG9ydCB7XG4gIEFjdGl2aXR5LFxuICBDb25uZWN0aW9uU3RhdHVzLFxuICBDb252ZXJzYXRpb24sXG4gIElCb3RDb25uZWN0aW9uLFxuICBNZWRpYSxcbiAgTWVzc2FnZVxufSBmcm9tICcuL2RpcmVjdExpbmUnO1xuXG5jb25zdCBESVJFQ1RfTElORV9WRVJTSU9OID0gJ0RpcmVjdExpbmUvMy4wJztcbmNvbnN0IE1BWF9SRVRSWV9DT1VOVCA9IDM7XG5jb25zdCByZWZyZXNoVG9rZW5MaWZldGltZSA9IDMwICogNjAgKiAxMDAwO1xuLy9jb25zdCByZWZyZXNoVG9rZW5MaWZldGltZSA9IDUwMDA7XG5jb25zdCB0aW1lb3V0ID0gMjAgKiAxMDAwO1xuY29uc3QgcmVmcmVzaFRva2VuSW50ZXJ2YWwgPSByZWZyZXNoVG9rZW5MaWZldGltZSAvIDI7XG5cbmludGVyZmFjZSBEaXJlY3RMaW5lU3RyZWFtaW5nT3B0aW9ucyB7XG4gIHRva2VuOiBzdHJpbmcsXG4gIGNvbnZlcnNhdGlvbklkPzogc3RyaW5nLFxuICBkb21haW46IHN0cmluZyxcbiAgLy8gQXR0YWNoZWQgdG8gYWxsIHJlcXVlc3RzIHRvIGlkZW50aWZ5IHJlcXVlc3RpbmcgYWdlbnQuXG4gIGJvdEFnZW50Pzogc3RyaW5nXG59XG5cbmNsYXNzIFN0cmVhbUhhbmRsZXIgaW1wbGVtZW50cyBCRlNFLlJlcXVlc3RIYW5kbGVyIHtcbiAgcHJpdmF0ZSBjb25uZWN0aW9uU3RhdHVzJDtcbiAgcHJpdmF0ZSBzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPEFjdGl2aXR5PjtcbiAgcHJpdmF0ZSBzaG91bGRRdWV1ZTogKCkgPT4gYm9vbGVhbjtcbiAgcHJpdmF0ZSBhY3Rpdml0eVF1ZXVlOiBBcnJheTxBY3Rpdml0eT4gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihzOiBTdWJzY3JpYmVyPEFjdGl2aXR5PiwgYyQ6IE9ic2VydmFibGU8Q29ubmVjdGlvblN0YXR1cz4sIHNxOiAoKSA9PiBib29sZWFuKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVyID0gcztcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkID0gYyQ7XG4gICAgdGhpcy5zaG91bGRRdWV1ZSA9IHNxO1xuICB9XG5cbiAgcHVibGljIHNldFN1YnNjcmliZXIoczogU3Vic2NyaWJlcjxBY3Rpdml0eT4pIHtcbiAgICB0aGlzLnN1YnNjcmliZXIgPSBzO1xuICB9XG5cbiAgYXN5bmMgcHJvY2Vzc1JlcXVlc3QocmVxdWVzdDogQkZTRS5JUmVjZWl2ZVJlcXVlc3QsIGxvZ2dlcj86IGFueSk6IFByb21pc2U8QkZTRS5TdHJlYW1pbmdSZXNwb25zZT4ge1xuICAgIGNvbnN0IHN0cmVhbXMgPSBbLi4ucmVxdWVzdC5zdHJlYW1zXTtcbiAgICBjb25zdCBzdHJlYW0wID0gc3RyZWFtcy5zaGlmdCgpO1xuICAgIGNvbnN0IGFjdGl2aXR5U2V0SnNvbiA9IGF3YWl0IHN0cmVhbTAucmVhZEFzU3RyaW5nKCk7XG4gICAgY29uc3QgYWN0aXZpdHlTZXQgPSBKU09OLnBhcnNlKGFjdGl2aXR5U2V0SnNvbik7XG5cbiAgICBpZiAoYWN0aXZpdHlTZXQuYWN0aXZpdGllcy5sZW5ndGggIT09IDEpIHtcbiAgICAgIC8vIE9ubHkgb25lIGFjdGl2aXR5IGlzIGV4cGVjdGVkIGluIGEgc2V0IGluIHN0cmVhbWluZ1xuICAgICAgdGhpcy5zdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcigndGhlcmUgc2hvdWxkIGJlIGV4YWN0bHkgb25lIGFjdGl2aXR5JykpO1xuICAgICAgcmV0dXJuIEJGU0UuU3RyZWFtaW5nUmVzcG9uc2UuY3JlYXRlKDUwMCk7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZpdHkgPSBhY3Rpdml0eVNldC5hY3Rpdml0aWVzWzBdO1xuXG4gICAgaWYgKHN0cmVhbXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBbLi4uYWN0aXZpdHkuYXR0YWNobWVudHNdO1xuXG4gICAgICBsZXQgc3RyZWFtOiBCRlNFLkNvbnRlbnRTdHJlYW07XG4gICAgICB3aGlsZSAoc3RyZWFtID0gc3RyZWFtcy5zaGlmdCgpKSB7XG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBhd2FpdCBzdHJlYW0ucmVhZEFzU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IGRhdGFVcmkgPSBcImRhdGE6dGV4dC9wbGFpbjtiYXNlNjQsXCIgKyBhdHRhY2htZW50O1xuICAgICAgICBhdHRhY2htZW50cy5wdXNoKHsgY29udGVudFR5cGU6IHN0cmVhbS5jb250ZW50VHlwZSwgY29udGVudFVybDogZGF0YVVyaSB9KTtcbiAgICAgIH1cblxuICAgICAgYWN0aXZpdHkuYXR0YWNobWVudHMgPSBhdHRhY2htZW50cztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG91bGRRdWV1ZSgpKSB7XG4gICAgICB0aGlzLmFjdGl2aXR5UXVldWUucHVzaChhY3Rpdml0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlci5uZXh0KGFjdGl2aXR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gQkZTRS5TdHJlYW1pbmdSZXNwb25zZS5jcmVhdGUoMjAwKTtcbiAgfVxuXG4gIHB1YmxpYyBmbHVzaCgpIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLnN1YnNjcmliZShjcyA9PiB7IH0pXG4gICAgdGhpcy5hY3Rpdml0eVF1ZXVlLmZvckVhY2goKGEpID0+IHRoaXMuc3Vic2NyaWJlci5uZXh0KGEpKTtcbiAgICB0aGlzLmFjdGl2aXR5UXVldWUgPSBbXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlyZWN0TGluZVN0cmVhbWluZyBpbXBsZW1lbnRzIElCb3RDb25uZWN0aW9uIHtcbiAgcHVibGljIGNvbm5lY3Rpb25TdGF0dXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChDb25uZWN0aW9uU3RhdHVzLlVuaW5pdGlhbGl6ZWQpO1xuICBwdWJsaWMgYWN0aXZpdHkkOiBPYnNlcnZhYmxlPEFjdGl2aXR5PjtcblxuICBwcml2YXRlIGFjdGl2aXR5U3Vic2NyaWJlcjogU3Vic2NyaWJlcjxBY3Rpdml0eT47XG4gIHByaXZhdGUgdGhlU3RyZWFtSGFuZGxlcjogU3RyZWFtSGFuZGxlcjtcblxuICBwcml2YXRlIGRvbWFpbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0b2tlbjogc3RyaW5nO1xuICBwcml2YXRlIHN0cmVhbUNvbm5lY3Rpb246IEJGU0UuV2ViU29ja2V0Q2xpZW50O1xuICBwcml2YXRlIHF1ZXVlQWN0aXZpdGllczogYm9vbGVhbjtcblxuICBwcml2YXRlIF9ib3RBZ2VudCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IERpcmVjdExpbmVTdHJlYW1pbmdPcHRpb25zKSB7XG4gICAgdGhpcy50b2tlbiA9IG9wdGlvbnMudG9rZW47XG5cbiAgICB0aGlzLnJlZnJlc2hUb2tlbigpO1xuXG4gICAgdGhpcy5kb21haW4gPSBvcHRpb25zLmRvbWFpbjtcblxuICAgIGlmIChvcHRpb25zLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gb3B0aW9ucy5jb252ZXJzYXRpb25JZDtcbiAgICB9XG5cbiAgICB0aGlzLl9ib3RBZ2VudCA9IHRoaXMuZ2V0Qm90QWdlbnQob3B0aW9ucy5ib3RBZ2VudCk7XG5cbiAgICB0aGlzLnF1ZXVlQWN0aXZpdGllcyA9IHRydWU7XG4gICAgdGhpcy5hY3Rpdml0eSQgPSBPYnNlcnZhYmxlLmNyZWF0ZShhc3luYyAoc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxBY3Rpdml0eT4pID0+IHtcbiAgICAgIHRoaXMuYWN0aXZpdHlTdWJzY3JpYmVyID0gc3Vic2NyaWJlcjtcbiAgICAgIHRoaXMudGhlU3RyZWFtSGFuZGxlciA9IG5ldyBTdHJlYW1IYW5kbGVyKHN1YnNjcmliZXIsIHRoaXMuY29ubmVjdGlvblN0YXR1cyQsICgpID0+IHRoaXMucXVldWVBY3Rpdml0aWVzKTtcbiAgICAgIHRoaXMuY29ubmVjdFdpdGhSZXRyeUFzeW5jKCk7XG4gICAgfSkuc2hhcmUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWNvbm5lY3QoeyBjb252ZXJzYXRpb25JZCwgdG9rZW4gfSA6IENvbnZlcnNhdGlvbikge1xuICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSBjb252ZXJzYXRpb25JZDtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgdGhpcy5jb25uZWN0QXN5bmMoKTtcbiAgfVxuXG4gIGVuZCgpIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5FbmRlZCk7XG4gICAgdGhpcy5zdHJlYW1Db25uZWN0aW9uLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tbW9uSGVhZGVycygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgXCJBdXRob3JpemF0aW9uXCI6IGBCZWFyZXIgJHt0aGlzLnRva2VufWAsXG4gICAgICBcIngtbXMtYm90LWFnZW50XCI6IHRoaXMuX2JvdEFnZW50XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Qm90QWdlbnQoY3VzdG9tQWdlbnQ6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgICBsZXQgY2xpZW50QWdlbnQgPSAnZGlyZWN0bGluZVN0cmVhbWluZydcblxuICAgIGlmIChjdXN0b21BZ2VudCkge1xuICAgICAgY2xpZW50QWdlbnQgKz0gYDsgJHtjdXN0b21BZ2VudH1gXG4gICAgfVxuXG4gICAgcmV0dXJuIGAke0RJUkVDVF9MSU5FX1ZFUlNJT059ICgke2NsaWVudEFnZW50fSlgO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoVG9rZW4oZmlyc3RDYWxsID0gdHJ1ZSwgcmV0cnlDb3VudCA9IDApIHtcbiAgICBhd2FpdCB0aGlzLndhaXRVbnRpbE9ubGluZSgpO1xuXG4gICAgbGV0IG51bWJlck9mQXR0ZW1wdHMgPSAwO1xuICAgIHdoaWxlKG51bWJlck9mQXR0ZW1wdHMgPCBNQVhfUkVUUllfQ09VTlQpIHtcbiAgICAgIG51bWJlck9mQXR0ZW1wdHMrKztcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCByZWZyZXNoVG9rZW5JbnRlcnZhbCkpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7dGhpcy5kb21haW59L3Rva2Vucy9yZWZyZXNoYCwge21ldGhvZDogXCJQT1NUXCIsIGhlYWRlcnM6IHRoaXMuY29tbW9uSGVhZGVycygpfSk7XG4gICAgICAgIGlmIChyZXMub2spIHtcbiAgICAgICAgICBudW1iZXJPZkF0dGVtcHRzID0gMDtcbiAgICAgICAgICBjb25zdCB7dG9rZW59ID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgICAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDQwMyB8fCByZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhdGFsIGVycm9yIHdoaWxlIHJlZnJlc2hpbmcgdGhlIHRva2VuOiAke3Jlcy5zdGF0dXN9ICR7cmVzLnN0YXR1c1RleHR9YCk7XG4gICAgICAgICAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFJlZnJlc2ggYXR0ZW1wdCAjJHtudW1iZXJPZkF0dGVtcHRzfSBmYWlsZWQ6ICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFJlZnJlc2ggYXR0ZW1wdCAjJHtudW1iZXJPZkF0dGVtcHRzfSB0aHJldyBhbiBleGNlcHRpb246ICR7ZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKFwiUmV0cmllcyBleGhhdXN0ZWRcIik7XG4gICAgdGhpcy5zdHJlYW1Db25uZWN0aW9uLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHBvc3RBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpIHtcbiAgICBpZiAoYWN0aXZpdHkudHlwZSA9PT0gXCJtZXNzYWdlXCIgJiYgYWN0aXZpdHkuYXR0YWNobWVudHMgJiYgYWN0aXZpdHkuYXR0YWNobWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMucG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMoYWN0aXZpdHkpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3AkID0gT2JzZXJ2YWJsZS5jcmVhdGUoYXN5bmMgc3Vic2NyaWJlciA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gQkZTRS5TdHJlYW1pbmdSZXF1ZXN0LmNyZWF0ZSgnUE9TVCcsICcvdjMvZGlyZWN0bGluZS9jb252ZXJzYXRpb25zLycgKyB0aGlzLmNvbnZlcnNhdGlvbklkICsgJy9hY3Rpdml0aWVzJyk7XG4gICAgICByZXF1ZXN0LnNldEJvZHkoSlNPTi5zdHJpbmdpZnkoYWN0aXZpdHkpKTtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uc2VuZChyZXF1ZXN0KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHJlc3Auc3RhdHVzQ29kZSAhPT0gMjAwKSB0aHJvdyBuZXcgRXJyb3IoXCJQb3N0QWN0aXZpdHkgcmV0dXJuZWQgXCIgKyByZXNwLnN0YXR1c0NvZGUpO1xuICAgICAgICBjb25zdCBudW1iZXJPZlN0cmVhbXMgPSByZXNwLnN0cmVhbXMubGVuZ3RoO1xuICAgICAgICBpZiAobnVtYmVyT2ZTdHJlYW1zICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBvbmUgc3RyZWFtIGJ1dCBnb3QgXCIgKyBudW1iZXJPZlN0cmVhbXMpXG4gICAgICAgIGNvbnN0IGlkU3RyaW5nID0gYXdhaXQgcmVzcC5zdHJlYW1zWzBdLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCB7SWQgOiBpZH0gPSBKU09OLnBhcnNlKGlkU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHN1YnNjcmliZXIubmV4dChpZCk7XG4gICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG5ldHdvcmsgaXNzdWUgdGhlbiBpdHMgaGFuZGxlZCBieVxuICAgICAgICAgIC8vIHRoZSBkaXNjb25uZWN0aW9uSGFuZGxlci4gRXZlcnl0aGluZyBlbHNlIGNhblxuICAgICAgICAgIC8vIGJlIHJldHJpZWRcbiAgICAgICAgICBjb25zb2xlLndhcm4oZSk7XG4gICAgICAgICAgdGhpcy5zdHJlYW1Db25uZWN0aW9uLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICByZXR1cm4gc3Vic2NyaWJlci5lcnJvcihlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcCQ7XG4gIH1cblxuICBwcml2YXRlIHBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICBjb25zdCB7IGF0dGFjaG1lbnRzLCAuLi5tZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzIH0gPSBtZXNzYWdlO1xuXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKCBzdWJzY3JpYmVyID0+IHtcbiAgICAgIGNvbnN0IGh0dHBDb250ZW50TGlzdCA9IFtdO1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlcnMgPSBhd2FpdCBQcm9taXNlLmFsbChhdHRhY2htZW50cy5tYXAoYXN5bmMgYXR0YWNobWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZWRpYSA9IGF0dGFjaG1lbnQgYXMgTWVkaWE7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChtZWRpYS5jb250ZW50VXJsKTtcbiAgICAgICAgICAgIGlmIChyZXMub2spIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgYXJyYXlCdWZmZXI6IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpLCBtZWRpYSB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCcuLi4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICBhcnJheUJ1ZmZlcnMuZm9yRWFjaCgoeyBhcnJheUJ1ZmZlciwgbWVkaWEgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYXJyYXlCdWZmZXIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYnVmZmVyKTtcbiAgICAgICAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBCRlNFLlN1YnNjcmliYWJsZVN0cmVhbSgpO1xuICAgICAgICAgICAgc3RyZWFtLndyaXRlKGJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBodHRwQ29udGVudCA9IG5ldyBCRlNFLkh0dHBDb250ZW50KHsgdHlwZTogbWVkaWEuY29udGVudFR5cGUsIGNvbnRlbnRMZW5ndGg6IGJ1ZmZlci5sZW5ndGggfSwgc3RyZWFtKTtcbiAgICAgICAgICAgIGh0dHBDb250ZW50TGlzdC5wdXNoKGh0dHBDb250ZW50KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IHVybCA9IGAvdjMvZGlyZWN0bGluZS9jb252ZXJzYXRpb25zLyR7dGhpcy5jb252ZXJzYXRpb25JZH0vdXNlcnMvJHttZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzLmZyb20uaWR9L3VwbG9hZGA7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdCA9IEJGU0UuU3RyZWFtaW5nUmVxdWVzdC5jcmVhdGUoJ1BVVCcsIHVybCk7XG4gICAgICAgICAgY29uc3QgYWN0aXZpdHlTdHJlYW0gPSBuZXcgQkZTRS5TdWJzY3JpYmFibGVTdHJlYW0oKTtcbiAgICAgICAgICBhY3Rpdml0eVN0cmVhbS53cml0ZShKU09OLnN0cmluZ2lmeShtZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzKSwgJ3V0Zi04Jyk7XG4gICAgICAgICAgcmVxdWVzdC5hZGRTdHJlYW0obmV3IEJGU0UuSHR0cENvbnRlbnQoeyB0eXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuYWN0aXZpdHlcIiwgY29udGVudExlbmd0aDogYWN0aXZpdHlTdHJlYW0ubGVuZ3RoIH0sIGFjdGl2aXR5U3RyZWFtKSk7XG4gICAgICAgICAgaHR0cENvbnRlbnRMaXN0LmZvckVhY2goZSA9PiByZXF1ZXN0LmFkZFN0cmVhbShlKSk7XG5cbiAgICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5zdHJlYW1Db25uZWN0aW9uLnNlbmQocmVxdWVzdCk7XG4gICAgICAgICAgaWYgKHJlc3Auc3RyZWFtcyAmJiByZXNwLnN0cmVhbXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcihgSW52YWxpZCBzdHJlYW0gY291bnQgJHtyZXNwLnN0cmVhbXMubGVuZ3RofWApKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qge0lkOiBpZH0gPSBhd2FpdCByZXNwLnN0cmVhbXNbMF0ucmVhZEFzSnNvbigpO1xuICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdhaXRVbnRpbE9ubGluZSgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5zdWJzY3JpYmUoKGNzKSA9PiB7XG4gICAgICAgIGlmIChjcyA9PT0gQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9LFxuICAgICAgICAoZSkgPT4gcmVqZWN0KGUpKTtcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25uZWN0QXN5bmMoKSB7XG4gICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKCdeaHR0cChzPyknKTtcbiAgICBpZiAoIXJlLnRlc3QodGhpcy5kb21haW4pKSB0aHJvdyAoXCJEb21haW4gbXVzdCBiZWdpbiB3aXRoIGh0dHAgb3IgaHR0cHNcIik7XG4gICAgY29uc3QgcGFyYW1zID0ge3Rva2VuOiB0aGlzLnRva2VufTtcbiAgICBpZiAodGhpcy5jb252ZXJzYXRpb25JZCkgcGFyYW1zWydjb252ZXJzYXRpb25JZCddID0gdGhpcy5jb252ZXJzYXRpb25JZDtcbiAgICBjb25zdCB1cmxTZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykudG9TdHJpbmcoKTtcbiAgICBjb25zdCB3c1VybCA9IGAke3RoaXMuZG9tYWluLnJlcGxhY2UocmUsICd3cyQxJyl9L2NvbnZlcnNhdGlvbnMvY29ubmVjdD8ke3VybFNlYXJjaFBhcmFtc31gO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbiA9IG5ldyBCRlNFLldlYlNvY2tldENsaWVudCh7XG4gICAgICAgICAgdXJsOiB3c1VybCxcbiAgICAgICAgICByZXF1ZXN0SGFuZGxlcjogdGhpcy50aGVTdHJlYW1IYW5kbGVyLFxuICAgICAgICAgIGRpc2Nvbm5lY3Rpb25IYW5kbGVyOiAoZSkgPT4gcmVzb2x2ZShlKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnF1ZXVlQWN0aXZpdGllcyA9IHRydWU7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5jb25uZWN0KCk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBCRlNFLlN0cmVhbWluZ1JlcXVlc3QuY3JlYXRlKCdQT1NUJywgJy92My9kaXJlY3RsaW5lL2NvbnZlcnNhdGlvbnMnKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uc2VuZChyZXF1ZXN0KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkgdGhyb3cgbmV3IEVycm9yKFwiQ29ubmVjdGlvbiByZXNwb25zZSBjb2RlIFwiICsgcmVzcG9uc2Uuc3RhdHVzQ29kZSk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdHJlYW1zLmxlbmd0aCAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgMSBzdHJlYW0gYnV0IGdvdCBcIiArIHJlc3BvbnNlLnN0cmVhbXMubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VTdHJpbmcgPSBhd2FpdCByZXNwb25zZS5zdHJlYW1zWzBdLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCBjb252ZXJzYXRpb24gPSBKU09OLnBhcnNlKHJlc3BvbnNlU3RyaW5nKTtcbiAgICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IGNvbnZlcnNhdGlvbi5jb252ZXJzYXRpb25JZDtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuT25saW5lKTtcblxuICAgICAgICAvLyBXYWl0IHVudGlsIERMIGNvbnN1bWVycyBoYXZlIGhhZCBhIGNoYW5jZSB0byBiZSBub3RpZmllZFxuICAgICAgICAvLyBvZiB0aGUgY29ubmVjdGlvbiBzdGF0dXMgY2hhbmdlLlxuICAgICAgICBhd2FpdCB0aGlzLndhaXRVbnRpbE9ubGluZSgpO1xuICAgICAgICB0aGlzLnRoZVN0cmVhbUhhbmRsZXIuZmx1c2goKTtcbiAgICAgICAgdGhpcy5xdWV1ZUFjdGl2aXRpZXMgPSBmYWxzZTtcbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RXaXRoUmV0cnlBc3luYygpIHtcbiAgICBsZXQgbnVtUmV0cmllcyA9IE1BWF9SRVRSWV9DT1VOVDtcbiAgICB3aGlsZSAobnVtUmV0cmllcyA+IDApIHtcbiAgICAgIG51bVJldHJpZXMtLTtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbm5lY3RBc3luYygpO1xuICAgICAgICBjb25zb2xlLndhcm4oYFJldHJ5aW5nIGNvbm5lY3Rpb24gJHtyZXN9YCk7XG4gICAgICAgIGlmICg2MDAwMCA8IERhdGUubm93KCkgLSBzdGFydCkge1xuICAgICAgICAgIC8vIHJlc2V0IHRoZSByZXRyeSBjb3VudGVyIGFuZCByZXRyeSBpbW1lZGlhdGVseVxuICAgICAgICAgIC8vIGlmIHRoZSBjb25uZWN0aW9uIGxhc3RlZCBmb3IgbW9yZSB0aGFuIGEgbWludXRlXG4gICAgICAgICAgbnVtUmV0cmllcyA9IE1BWF9SRVRSWV9DT1VOVDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjb25uZWN0ICR7ZXJyfWApO1xuICAgICAgICB0aHJvdyhlcnIpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgdGhpcy5nZXRSZXRyeURlbGF5KCkpKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBkZWxheSBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHNcbiAgcHJpdmF0ZSBnZXRSZXRyeURlbGF5KCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKDMwMDAgKyBNYXRoLnJhbmRvbSgpICogMTIwMDApO1xuICB9XG59XG4iXX0=
|
package/lib/parseFilename.js
CHANGED
|
@@ -32,4 +32,4 @@ function parseFilename(filename) {
|
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUZpbGVuYW1lLmpzIl0sIm5hbWVzIjpbInBhcnNlRmlsZW5hbWUiLCJmaWxlbmFtZSIsImV4dG5hbWUiLCJuYW1lIiwiaW5kZXhPZiIsInNwbGl0IiwicmV2ZXJzZSIsImV4dGVuc2lvbldpdGhvdXREb3QiLCJuYW1lU2VnbWVudHMiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFlLFNBQVNBLGFBQVQsQ0FBdUJDLFFBQXZCLEVBQWlDO0FBQzVDLE1BQUksQ0FBQ0EsUUFBTCxFQUFlO0FBQ1gsV0FBTztBQUNIQyxNQUFBQSxPQUFPLEVBQUUsRUFETjtBQUVIQyxNQUFBQSxJQUFJLEVBQUU7QUFGSCxLQUFQO0FBSUgsR0FMRCxNQUtPLElBQUksQ0FBQ0YsUUFBUSxDQUFDRyxPQUFULENBQWlCLEdBQWpCLENBQUwsRUFBNEI7QUFDL0IsZ0NBQStDSCxRQUFRLENBQUNJLEtBQVQsQ0FBZSxHQUFmLEVBQW9CQyxPQUFwQixFQUEvQztBQUFBO0FBQUEsUUFBT0MsbUJBQVA7QUFBQSxRQUErQkMsWUFBL0I7O0FBRUEsV0FBTztBQUNITixNQUFBQSxPQUFPLEVBQUUsTUFBTUssbUJBRFo7QUFFSEosTUFBQUEsSUFBSSxFQUFFSyxZQUFZLENBQUNGLE9BQWIsR0FBdUJHLElBQXZCLENBQTRCLEdBQTVCO0FBRkgsS0FBUDtBQUlILEdBUE0sTUFPQTtBQUNILFdBQU87QUFDSFAsTUFBQUEsT0FBTyxFQUFFLEVBRE47QUFFSEMsTUFBQUEsSUFBSSxFQUFFRjtBQUZILEtBQVA7QUFJSDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VGaWxlbmFtZShmaWxlbmFtZSkge1xuICAgIGlmICghZmlsZW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4dG5hbWU6ICcnLFxuICAgICAgICAgICAgbmFtZTogJydcbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKH5maWxlbmFtZS5pbmRleE9mKCcuJykpIHtcbiAgICAgICAgY29uc3QgW2V4dGVuc2lvbldpdGhvdXREb3QsIC4uLm5hbWVTZWdtZW50c10gPSBmaWxlbmFtZS5zcGxpdCgnLicpLnJldmVyc2UoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXh0bmFtZTogJy4nICsgZXh0ZW5zaW9uV2l0aG91dERvdCxcbiAgICAgICAgICAgIG5hbWU6IG5hbWVTZWdtZW50cy5yZXZlcnNlKCkuam9pbignLicpXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4dG5hbWU6ICcnLFxuICAgICAgICAgICAgbmFtZTogZmlsZW5hbWVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
|