@tricoteuses/assemblee 1.1.6 → 1.1.8
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/lib/datasets.js +1 -3
- package/lib/datasets.mjs +1 -3
- package/lib/loaders.d.ts +52 -2
- package/lib/loaders.js +961 -187
- package/lib/loaders.mjs +285 -3
- package/package.json +1 -1
package/lib/loaders.js
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
3
4
|
require("core-js/modules/es.array.slice.js");
|
|
4
|
-
require("core-js/modules/es.object.to-string.js");
|
|
5
5
|
require("core-js/modules/es.function.name.js");
|
|
6
6
|
require("core-js/modules/es.array.from.js");
|
|
7
|
-
require("core-js/modules/es.string.iterator.js");
|
|
8
7
|
require("core-js/modules/es.symbol.js");
|
|
9
8
|
require("core-js/modules/es.symbol.description.js");
|
|
10
9
|
require("core-js/modules/es.symbol.iterator.js");
|
|
11
|
-
require("core-js/modules/es.array.iterator.js");
|
|
12
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
13
10
|
require("core-js/modules/es.array.is-array.js");
|
|
14
11
|
require("core-js/modules/es.object.define-property.js");
|
|
12
|
+
require("core-js/modules/es.symbol.async-iterator.js");
|
|
13
|
+
require("core-js/modules/es.symbol.to-string-tag.js");
|
|
14
|
+
require("core-js/modules/es.json.to-string-tag.js");
|
|
15
|
+
require("core-js/modules/es.math.to-string-tag.js");
|
|
16
|
+
require("core-js/modules/es.object.create.js");
|
|
17
|
+
require("core-js/modules/es.object.get-prototype-of.js");
|
|
18
|
+
require("core-js/modules/es.array.for-each.js");
|
|
19
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
20
|
+
require("core-js/modules/es.object.set-prototype-of.js");
|
|
21
|
+
require("core-js/modules/es.promise.js");
|
|
22
|
+
require("core-js/modules/es.array.reverse.js");
|
|
15
23
|
Object.defineProperty(exports, "__esModule", {
|
|
16
24
|
value: true
|
|
17
25
|
});
|
|
@@ -21,8 +29,17 @@ Object.defineProperty(exports, "EnabledDatasets", {
|
|
|
21
29
|
return _datasets.EnabledDatasets;
|
|
22
30
|
}
|
|
23
31
|
});
|
|
32
|
+
exports.iterLoadAssembleeActeurs = iterLoadAssembleeActeurs;
|
|
33
|
+
exports.iterLoadAssembleeAmendements = iterLoadAssembleeAmendements;
|
|
34
|
+
exports.iterLoadAssembleeDocuments = iterLoadAssembleeDocuments;
|
|
35
|
+
exports.iterLoadAssembleeDossiersParlementaires = iterLoadAssembleeDossiersParlementaires;
|
|
36
|
+
exports.iterLoadAssembleeOrganes = iterLoadAssembleeOrganes;
|
|
37
|
+
exports.iterLoadAssembleeReunions = iterLoadAssembleeReunions;
|
|
38
|
+
exports.iterLoadAssembleeScrutins = iterLoadAssembleeScrutins;
|
|
24
39
|
exports.loadAssembleeData = loadAssembleeData;
|
|
25
40
|
exports.loadAssembleeDataFromBigFiles = loadAssembleeDataFromBigFiles;
|
|
41
|
+
exports.loadAssembleePhotosDeputes = loadAssembleePhotosDeputes;
|
|
42
|
+
exports.loadAssembleePhotosSenateurs = loadAssembleePhotosSenateurs;
|
|
26
43
|
exports.pathFromDocumentUid = pathFromDocumentUid;
|
|
27
44
|
exports.pathFromDossierParlementaireUid = pathFromDossierParlementaireUid;
|
|
28
45
|
exports.pathFromReunionUid = pathFromReunionUid;
|
|
@@ -33,6 +50,11 @@ Object.defineProperty(exports, "walkDir", {
|
|
|
33
50
|
return _file_systems.walkDir;
|
|
34
51
|
}
|
|
35
52
|
});
|
|
53
|
+
require("core-js/modules/es.array.iterator.js");
|
|
54
|
+
require("core-js/modules/es.object.to-string.js");
|
|
55
|
+
require("core-js/modules/es.set.js");
|
|
56
|
+
require("core-js/modules/es.string.iterator.js");
|
|
57
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
36
58
|
require("core-js/modules/es.array.join.js");
|
|
37
59
|
require("core-js/modules/es.regexp.exec.js");
|
|
38
60
|
require("core-js/modules/es.string.replace.js");
|
|
@@ -52,6 +74,7 @@ var _dossiers_legislatifs = require("./types/dossiers_legislatifs");
|
|
|
52
74
|
var _legislatures = require("./types/legislatures");
|
|
53
75
|
var _scrutins = require("./types/scrutins");
|
|
54
76
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
77
|
+
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 exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
55
78
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
56
79
|
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."); }
|
|
57
80
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
@@ -63,20 +86,742 @@ var documentUidRegex = /^(ACIN|ALCN|AVCE|AVIS|DECL|ETDI|LETT|MESS|PION|PNRE|PRJL
|
|
|
63
86
|
var dossierUidRegex = /^DL(R\d+)(L\d+)N(\d+)$/;
|
|
64
87
|
var reunionUidRegex = /^RU(AN|CG|SN)(R\d+)(L\d+)([AS]\d{4})(IDC|IDFL?|IDS)(\d+)$/;
|
|
65
88
|
var scrutinUidRegex = /^VTAN(R\d+)(L\d+)V(\d+)$/;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
69
|
-
var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
89
|
+
function iterLoadAssembleeActeurs(dataDir, legislature) {
|
|
90
|
+
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
70
91
|
_ref$log = _ref.log,
|
|
71
92
|
log = _ref$log === void 0 ? false : _ref$log;
|
|
93
|
+
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
94
|
+
var acteursUid, _iterator, _step, dataset, datasetDir, _iterator2, _step2, acteurSplitPath, acteurFilename, acteurFilePath, acteurJson, acteur;
|
|
95
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
96
|
+
while (1) switch (_context.prev = _context.next) {
|
|
97
|
+
case 0:
|
|
98
|
+
acteursUid = new Set();
|
|
99
|
+
_iterator = _createForOfIteratorHelper(_datasets.datasets.acteursEtOrganes);
|
|
100
|
+
_context.prev = 2;
|
|
101
|
+
_iterator.s();
|
|
102
|
+
case 4:
|
|
103
|
+
if ((_step = _iterator.n()).done) {
|
|
104
|
+
_context.next = 40;
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
dataset = _step.value;
|
|
108
|
+
if (!dataset.ignoreForWeb) {
|
|
109
|
+
_context.next = 8;
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
return _context.abrupt("continue", 38);
|
|
113
|
+
case 8:
|
|
114
|
+
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
115
|
+
_context.next = 10;
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
return _context.abrupt("continue", 38);
|
|
119
|
+
case 10:
|
|
120
|
+
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
121
|
+
_iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["acteurs"]));
|
|
122
|
+
_context.prev = 12;
|
|
123
|
+
_iterator2.s();
|
|
124
|
+
case 14:
|
|
125
|
+
if ((_step2 = _iterator2.n()).done) {
|
|
126
|
+
_context.next = 30;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
acteurSplitPath = _step2.value;
|
|
130
|
+
acteurFilename = acteurSplitPath[acteurSplitPath.length - 1];
|
|
131
|
+
if (acteurFilename.endsWith(".json")) {
|
|
132
|
+
_context.next = 19;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
return _context.abrupt("continue", 28);
|
|
136
|
+
case 19:
|
|
137
|
+
acteurFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(acteurSplitPath)));
|
|
138
|
+
if (log) {
|
|
139
|
+
console.log("Loading file: ".concat(acteurFilePath, "\u2026"));
|
|
140
|
+
}
|
|
141
|
+
acteurJson = _fsExtra["default"].readFileSync(acteurFilePath, {
|
|
142
|
+
encoding: "utf8"
|
|
143
|
+
});
|
|
144
|
+
acteur = _acteurs_et_organes.Convert.toActeur(acteurJson); // Keep the first existing "acteur", because the first wrapper is the most complete.
|
|
145
|
+
if (!acteursUid.has(acteur.uid)) {
|
|
146
|
+
_context.next = 25;
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
return _context.abrupt("continue", 28);
|
|
150
|
+
case 25:
|
|
151
|
+
acteursUid.add(acteur.uid);
|
|
152
|
+
_context.next = 28;
|
|
153
|
+
return {
|
|
154
|
+
acteur: acteur,
|
|
155
|
+
datasetLegislature: dataset.legislature
|
|
156
|
+
};
|
|
157
|
+
case 28:
|
|
158
|
+
_context.next = 14;
|
|
159
|
+
break;
|
|
160
|
+
case 30:
|
|
161
|
+
_context.next = 35;
|
|
162
|
+
break;
|
|
163
|
+
case 32:
|
|
164
|
+
_context.prev = 32;
|
|
165
|
+
_context.t0 = _context["catch"](12);
|
|
166
|
+
_iterator2.e(_context.t0);
|
|
167
|
+
case 35:
|
|
168
|
+
_context.prev = 35;
|
|
169
|
+
_iterator2.f();
|
|
170
|
+
return _context.finish(35);
|
|
171
|
+
case 38:
|
|
172
|
+
_context.next = 4;
|
|
173
|
+
break;
|
|
174
|
+
case 40:
|
|
175
|
+
_context.next = 45;
|
|
176
|
+
break;
|
|
177
|
+
case 42:
|
|
178
|
+
_context.prev = 42;
|
|
179
|
+
_context.t1 = _context["catch"](2);
|
|
180
|
+
_iterator.e(_context.t1);
|
|
181
|
+
case 45:
|
|
182
|
+
_context.prev = 45;
|
|
183
|
+
_iterator.f();
|
|
184
|
+
return _context.finish(45);
|
|
185
|
+
case 48:
|
|
186
|
+
case "end":
|
|
187
|
+
return _context.stop();
|
|
188
|
+
}
|
|
189
|
+
}, _callee, null, [[2, 42, 45, 48], [12, 32, 35, 38]]);
|
|
190
|
+
})();
|
|
191
|
+
}
|
|
192
|
+
function iterLoadAssembleeAmendements(dataDir, legislature) {
|
|
193
|
+
var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
194
|
+
_ref2$log = _ref2.log,
|
|
195
|
+
log = _ref2$log === void 0 ? false : _ref2$log;
|
|
196
|
+
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
197
|
+
var amendementsUid, _iterator3, _step3, dataset, datasetDir, _iterator4, _step4, amendementSplitPath, amendementFilename, amendementFilePath, amendementJson, amendement;
|
|
198
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
199
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
200
|
+
case 0:
|
|
201
|
+
amendementsUid = new Set();
|
|
202
|
+
_iterator3 = _createForOfIteratorHelper(_datasets.datasets.amendements);
|
|
203
|
+
_context2.prev = 2;
|
|
204
|
+
_iterator3.s();
|
|
205
|
+
case 4:
|
|
206
|
+
if ((_step3 = _iterator3.n()).done) {
|
|
207
|
+
_context2.next = 40;
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
dataset = _step3.value;
|
|
211
|
+
if (!dataset.ignoreForWeb) {
|
|
212
|
+
_context2.next = 8;
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
return _context2.abrupt("continue", 38);
|
|
216
|
+
case 8:
|
|
217
|
+
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
218
|
+
_context2.next = 10;
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
return _context2.abrupt("continue", 38);
|
|
222
|
+
case 10:
|
|
223
|
+
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
224
|
+
_iterator4 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir));
|
|
225
|
+
_context2.prev = 12;
|
|
226
|
+
_iterator4.s();
|
|
227
|
+
case 14:
|
|
228
|
+
if ((_step4 = _iterator4.n()).done) {
|
|
229
|
+
_context2.next = 30;
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
amendementSplitPath = _step4.value;
|
|
233
|
+
amendementFilename = amendementSplitPath[amendementSplitPath.length - 1];
|
|
234
|
+
if (amendementFilename.endsWith(".json")) {
|
|
235
|
+
_context2.next = 19;
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
return _context2.abrupt("continue", 28);
|
|
239
|
+
case 19:
|
|
240
|
+
amendementFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(amendementSplitPath)));
|
|
241
|
+
if (log) {
|
|
242
|
+
console.log("Loading file: ".concat(amendementFilePath, "\u2026"));
|
|
243
|
+
}
|
|
244
|
+
amendementJson = _fsExtra["default"].readFileSync(amendementFilePath, {
|
|
245
|
+
encoding: "utf8"
|
|
246
|
+
});
|
|
247
|
+
amendement = _amendements.Convert.toAmendement(amendementJson);
|
|
248
|
+
if (!amendementsUid.has(amendement.uid)) {
|
|
249
|
+
_context2.next = 25;
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
return _context2.abrupt("continue", 28);
|
|
253
|
+
case 25:
|
|
254
|
+
amendementsUid.add(amendement.uid);
|
|
255
|
+
_context2.next = 28;
|
|
256
|
+
return {
|
|
257
|
+
amendement: amendement,
|
|
258
|
+
datasetLegislature: dataset.legislature
|
|
259
|
+
};
|
|
260
|
+
case 28:
|
|
261
|
+
_context2.next = 14;
|
|
262
|
+
break;
|
|
263
|
+
case 30:
|
|
264
|
+
_context2.next = 35;
|
|
265
|
+
break;
|
|
266
|
+
case 32:
|
|
267
|
+
_context2.prev = 32;
|
|
268
|
+
_context2.t0 = _context2["catch"](12);
|
|
269
|
+
_iterator4.e(_context2.t0);
|
|
270
|
+
case 35:
|
|
271
|
+
_context2.prev = 35;
|
|
272
|
+
_iterator4.f();
|
|
273
|
+
return _context2.finish(35);
|
|
274
|
+
case 38:
|
|
275
|
+
_context2.next = 4;
|
|
276
|
+
break;
|
|
277
|
+
case 40:
|
|
278
|
+
_context2.next = 45;
|
|
279
|
+
break;
|
|
280
|
+
case 42:
|
|
281
|
+
_context2.prev = 42;
|
|
282
|
+
_context2.t1 = _context2["catch"](2);
|
|
283
|
+
_iterator3.e(_context2.t1);
|
|
284
|
+
case 45:
|
|
285
|
+
_context2.prev = 45;
|
|
286
|
+
_iterator3.f();
|
|
287
|
+
return _context2.finish(45);
|
|
288
|
+
case 48:
|
|
289
|
+
case "end":
|
|
290
|
+
return _context2.stop();
|
|
291
|
+
}
|
|
292
|
+
}, _callee2, null, [[2, 42, 45, 48], [12, 32, 35, 38]]);
|
|
293
|
+
})();
|
|
294
|
+
}
|
|
295
|
+
function iterLoadAssembleeDocuments(dataDir, legislature) {
|
|
296
|
+
var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
297
|
+
_ref3$log = _ref3.log,
|
|
298
|
+
log = _ref3$log === void 0 ? false : _ref3$log;
|
|
299
|
+
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
300
|
+
var documentsUid, _iterator5, _step5, dataset, datasetDir, _iterator6, _step6, documentSplitPath, documentFilename, documentFilePath, documentJson, document;
|
|
301
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
302
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
303
|
+
case 0:
|
|
304
|
+
documentsUid = new Set();
|
|
305
|
+
_iterator5 = _createForOfIteratorHelper(_datasets.datasets.dossiersLegislatifs);
|
|
306
|
+
_context3.prev = 2;
|
|
307
|
+
_iterator5.s();
|
|
308
|
+
case 4:
|
|
309
|
+
if ((_step5 = _iterator5.n()).done) {
|
|
310
|
+
_context3.next = 40;
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
dataset = _step5.value;
|
|
314
|
+
if (!dataset.ignoreForWeb) {
|
|
315
|
+
_context3.next = 8;
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
return _context3.abrupt("continue", 38);
|
|
319
|
+
case 8:
|
|
320
|
+
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
321
|
+
_context3.next = 10;
|
|
322
|
+
break;
|
|
323
|
+
}
|
|
324
|
+
return _context3.abrupt("continue", 38);
|
|
325
|
+
case 10:
|
|
326
|
+
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
327
|
+
_iterator6 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["documents"]));
|
|
328
|
+
_context3.prev = 12;
|
|
329
|
+
_iterator6.s();
|
|
330
|
+
case 14:
|
|
331
|
+
if ((_step6 = _iterator6.n()).done) {
|
|
332
|
+
_context3.next = 30;
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
documentSplitPath = _step6.value;
|
|
336
|
+
documentFilename = documentSplitPath[documentSplitPath.length - 1];
|
|
337
|
+
if (documentFilename.endsWith(".json")) {
|
|
338
|
+
_context3.next = 19;
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
return _context3.abrupt("continue", 28);
|
|
342
|
+
case 19:
|
|
343
|
+
documentFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(documentSplitPath)));
|
|
344
|
+
if (log) {
|
|
345
|
+
console.log("Loading file: ".concat(documentFilePath, "\u2026"));
|
|
346
|
+
}
|
|
347
|
+
documentJson = _fsExtra["default"].readFileSync(documentFilePath, {
|
|
348
|
+
encoding: "utf8"
|
|
349
|
+
});
|
|
350
|
+
document = _dossiers_legislatifs.Convert.toDocument(documentJson);
|
|
351
|
+
if (!documentsUid.has(document.uid)) {
|
|
352
|
+
_context3.next = 25;
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
355
|
+
return _context3.abrupt("continue", 28);
|
|
356
|
+
case 25:
|
|
357
|
+
documentsUid.add(document.uid);
|
|
358
|
+
_context3.next = 28;
|
|
359
|
+
return {
|
|
360
|
+
document: document,
|
|
361
|
+
datasetLegislature: dataset.legislature
|
|
362
|
+
};
|
|
363
|
+
case 28:
|
|
364
|
+
_context3.next = 14;
|
|
365
|
+
break;
|
|
366
|
+
case 30:
|
|
367
|
+
_context3.next = 35;
|
|
368
|
+
break;
|
|
369
|
+
case 32:
|
|
370
|
+
_context3.prev = 32;
|
|
371
|
+
_context3.t0 = _context3["catch"](12);
|
|
372
|
+
_iterator6.e(_context3.t0);
|
|
373
|
+
case 35:
|
|
374
|
+
_context3.prev = 35;
|
|
375
|
+
_iterator6.f();
|
|
376
|
+
return _context3.finish(35);
|
|
377
|
+
case 38:
|
|
378
|
+
_context3.next = 4;
|
|
379
|
+
break;
|
|
380
|
+
case 40:
|
|
381
|
+
_context3.next = 45;
|
|
382
|
+
break;
|
|
383
|
+
case 42:
|
|
384
|
+
_context3.prev = 42;
|
|
385
|
+
_context3.t1 = _context3["catch"](2);
|
|
386
|
+
_iterator5.e(_context3.t1);
|
|
387
|
+
case 45:
|
|
388
|
+
_context3.prev = 45;
|
|
389
|
+
_iterator5.f();
|
|
390
|
+
return _context3.finish(45);
|
|
391
|
+
case 48:
|
|
392
|
+
case "end":
|
|
393
|
+
return _context3.stop();
|
|
394
|
+
}
|
|
395
|
+
}, _callee3, null, [[2, 42, 45, 48], [12, 32, 35, 38]]);
|
|
396
|
+
})();
|
|
397
|
+
}
|
|
398
|
+
function iterLoadAssembleeDossiersParlementaires(dataDir, legislature) {
|
|
399
|
+
var _ref4 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
400
|
+
_ref4$log = _ref4.log,
|
|
401
|
+
log = _ref4$log === void 0 ? false : _ref4$log;
|
|
402
|
+
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
403
|
+
var dossiersParlementairesUid, _iterator7, _step7, dataset, datasetDir, _iterator8, _step8, dossierParlementaireSplitPath, dossierParlementaireFilename, dossierParlementaireFilePath, dossierParlementaireJson, dossierParlementaire;
|
|
404
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
405
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
406
|
+
case 0:
|
|
407
|
+
dossiersParlementairesUid = new Set();
|
|
408
|
+
_iterator7 = _createForOfIteratorHelper(_datasets.datasets.dossiersLegislatifs);
|
|
409
|
+
_context4.prev = 2;
|
|
410
|
+
_iterator7.s();
|
|
411
|
+
case 4:
|
|
412
|
+
if ((_step7 = _iterator7.n()).done) {
|
|
413
|
+
_context4.next = 40;
|
|
414
|
+
break;
|
|
415
|
+
}
|
|
416
|
+
dataset = _step7.value;
|
|
417
|
+
if (!dataset.ignoreForWeb) {
|
|
418
|
+
_context4.next = 8;
|
|
419
|
+
break;
|
|
420
|
+
}
|
|
421
|
+
return _context4.abrupt("continue", 38);
|
|
422
|
+
case 8:
|
|
423
|
+
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
424
|
+
_context4.next = 10;
|
|
425
|
+
break;
|
|
426
|
+
}
|
|
427
|
+
return _context4.abrupt("continue", 38);
|
|
428
|
+
case 10:
|
|
429
|
+
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
430
|
+
_iterator8 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["dossiers"]));
|
|
431
|
+
_context4.prev = 12;
|
|
432
|
+
_iterator8.s();
|
|
433
|
+
case 14:
|
|
434
|
+
if ((_step8 = _iterator8.n()).done) {
|
|
435
|
+
_context4.next = 30;
|
|
436
|
+
break;
|
|
437
|
+
}
|
|
438
|
+
dossierParlementaireSplitPath = _step8.value;
|
|
439
|
+
dossierParlementaireFilename = dossierParlementaireSplitPath[dossierParlementaireSplitPath.length - 1];
|
|
440
|
+
if (dossierParlementaireFilename.endsWith(".json")) {
|
|
441
|
+
_context4.next = 19;
|
|
442
|
+
break;
|
|
443
|
+
}
|
|
444
|
+
return _context4.abrupt("continue", 28);
|
|
445
|
+
case 19:
|
|
446
|
+
dossierParlementaireFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(dossierParlementaireSplitPath)));
|
|
447
|
+
if (log) {
|
|
448
|
+
console.log("Loading file: ".concat(dossierParlementaireFilePath, "\u2026"));
|
|
449
|
+
}
|
|
450
|
+
dossierParlementaireJson = _fsExtra["default"].readFileSync(dossierParlementaireFilePath, {
|
|
451
|
+
encoding: "utf8"
|
|
452
|
+
});
|
|
453
|
+
dossierParlementaire = _dossiers_legislatifs.Convert.toDossierParlementaire(dossierParlementaireJson);
|
|
454
|
+
if (!dossiersParlementairesUid.has(dossierParlementaire.uid)) {
|
|
455
|
+
_context4.next = 25;
|
|
456
|
+
break;
|
|
457
|
+
}
|
|
458
|
+
return _context4.abrupt("continue", 28);
|
|
459
|
+
case 25:
|
|
460
|
+
dossiersParlementairesUid.add(dossierParlementaire.uid);
|
|
461
|
+
_context4.next = 28;
|
|
462
|
+
return {
|
|
463
|
+
dossierParlementaire: dossierParlementaire,
|
|
464
|
+
datasetLegislature: dataset.legislature
|
|
465
|
+
};
|
|
466
|
+
case 28:
|
|
467
|
+
_context4.next = 14;
|
|
468
|
+
break;
|
|
469
|
+
case 30:
|
|
470
|
+
_context4.next = 35;
|
|
471
|
+
break;
|
|
472
|
+
case 32:
|
|
473
|
+
_context4.prev = 32;
|
|
474
|
+
_context4.t0 = _context4["catch"](12);
|
|
475
|
+
_iterator8.e(_context4.t0);
|
|
476
|
+
case 35:
|
|
477
|
+
_context4.prev = 35;
|
|
478
|
+
_iterator8.f();
|
|
479
|
+
return _context4.finish(35);
|
|
480
|
+
case 38:
|
|
481
|
+
_context4.next = 4;
|
|
482
|
+
break;
|
|
483
|
+
case 40:
|
|
484
|
+
_context4.next = 45;
|
|
485
|
+
break;
|
|
486
|
+
case 42:
|
|
487
|
+
_context4.prev = 42;
|
|
488
|
+
_context4.t1 = _context4["catch"](2);
|
|
489
|
+
_iterator7.e(_context4.t1);
|
|
490
|
+
case 45:
|
|
491
|
+
_context4.prev = 45;
|
|
492
|
+
_iterator7.f();
|
|
493
|
+
return _context4.finish(45);
|
|
494
|
+
case 48:
|
|
495
|
+
case "end":
|
|
496
|
+
return _context4.stop();
|
|
497
|
+
}
|
|
498
|
+
}, _callee4, null, [[2, 42, 45, 48], [12, 32, 35, 38]]);
|
|
499
|
+
})();
|
|
500
|
+
}
|
|
501
|
+
function iterLoadAssembleeOrganes(dataDir, legislature) {
|
|
502
|
+
var _ref5 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
503
|
+
_ref5$log = _ref5.log,
|
|
504
|
+
log = _ref5$log === void 0 ? false : _ref5$log;
|
|
505
|
+
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
506
|
+
var organesUid, _iterator9, _step9, dataset, datasetDir, _iterator10, _step10, organeSplitPath, organeFilename, organeFilePath, organeJson, organe;
|
|
507
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
508
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
509
|
+
case 0:
|
|
510
|
+
organesUid = new Set();
|
|
511
|
+
_iterator9 = _createForOfIteratorHelper(_datasets.datasets.acteursEtOrganes);
|
|
512
|
+
_context5.prev = 2;
|
|
513
|
+
_iterator9.s();
|
|
514
|
+
case 4:
|
|
515
|
+
if ((_step9 = _iterator9.n()).done) {
|
|
516
|
+
_context5.next = 40;
|
|
517
|
+
break;
|
|
518
|
+
}
|
|
519
|
+
dataset = _step9.value;
|
|
520
|
+
if (!dataset.ignoreForWeb) {
|
|
521
|
+
_context5.next = 8;
|
|
522
|
+
break;
|
|
523
|
+
}
|
|
524
|
+
return _context5.abrupt("continue", 38);
|
|
525
|
+
case 8:
|
|
526
|
+
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
527
|
+
_context5.next = 10;
|
|
528
|
+
break;
|
|
529
|
+
}
|
|
530
|
+
return _context5.abrupt("continue", 38);
|
|
531
|
+
case 10:
|
|
532
|
+
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
533
|
+
_iterator10 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["organes"]));
|
|
534
|
+
_context5.prev = 12;
|
|
535
|
+
_iterator10.s();
|
|
536
|
+
case 14:
|
|
537
|
+
if ((_step10 = _iterator10.n()).done) {
|
|
538
|
+
_context5.next = 30;
|
|
539
|
+
break;
|
|
540
|
+
}
|
|
541
|
+
organeSplitPath = _step10.value;
|
|
542
|
+
organeFilename = organeSplitPath[organeSplitPath.length - 1];
|
|
543
|
+
if (organeFilename.endsWith(".json")) {
|
|
544
|
+
_context5.next = 19;
|
|
545
|
+
break;
|
|
546
|
+
}
|
|
547
|
+
return _context5.abrupt("continue", 28);
|
|
548
|
+
case 19:
|
|
549
|
+
organeFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(organeSplitPath)));
|
|
550
|
+
if (log) {
|
|
551
|
+
console.log("Loading file: ".concat(organeFilePath, "\u2026"));
|
|
552
|
+
}
|
|
553
|
+
organeJson = _fsExtra["default"].readFileSync(organeFilePath, {
|
|
554
|
+
encoding: "utf8"
|
|
555
|
+
});
|
|
556
|
+
organe = _acteurs_et_organes.Convert.toOrgane(organeJson); // Keep the first existing "organe", because the first wrapper is the most complete.
|
|
557
|
+
if (!organesUid.has(organe.uid)) {
|
|
558
|
+
_context5.next = 25;
|
|
559
|
+
break;
|
|
560
|
+
}
|
|
561
|
+
return _context5.abrupt("continue", 28);
|
|
562
|
+
case 25:
|
|
563
|
+
organesUid.add(organe.uid);
|
|
564
|
+
_context5.next = 28;
|
|
565
|
+
return {
|
|
566
|
+
organe: organe,
|
|
567
|
+
datasetLegislature: dataset.legislature
|
|
568
|
+
};
|
|
569
|
+
case 28:
|
|
570
|
+
_context5.next = 14;
|
|
571
|
+
break;
|
|
572
|
+
case 30:
|
|
573
|
+
_context5.next = 35;
|
|
574
|
+
break;
|
|
575
|
+
case 32:
|
|
576
|
+
_context5.prev = 32;
|
|
577
|
+
_context5.t0 = _context5["catch"](12);
|
|
578
|
+
_iterator10.e(_context5.t0);
|
|
579
|
+
case 35:
|
|
580
|
+
_context5.prev = 35;
|
|
581
|
+
_iterator10.f();
|
|
582
|
+
return _context5.finish(35);
|
|
583
|
+
case 38:
|
|
584
|
+
_context5.next = 4;
|
|
585
|
+
break;
|
|
586
|
+
case 40:
|
|
587
|
+
_context5.next = 45;
|
|
588
|
+
break;
|
|
589
|
+
case 42:
|
|
590
|
+
_context5.prev = 42;
|
|
591
|
+
_context5.t1 = _context5["catch"](2);
|
|
592
|
+
_iterator9.e(_context5.t1);
|
|
593
|
+
case 45:
|
|
594
|
+
_context5.prev = 45;
|
|
595
|
+
_iterator9.f();
|
|
596
|
+
return _context5.finish(45);
|
|
597
|
+
case 48:
|
|
598
|
+
case "end":
|
|
599
|
+
return _context5.stop();
|
|
600
|
+
}
|
|
601
|
+
}, _callee5, null, [[2, 42, 45, 48], [12, 32, 35, 38]]);
|
|
602
|
+
})();
|
|
603
|
+
}
|
|
604
|
+
function iterLoadAssembleeReunions(dataDir, legislature) {
|
|
605
|
+
var _ref6 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
606
|
+
_ref6$log = _ref6.log,
|
|
607
|
+
log = _ref6$log === void 0 ? false : _ref6$log;
|
|
608
|
+
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
|
|
609
|
+
var reunionsUid, _iterator11, _step11, dataset, datasetDir, _iterator12, _step12, reunionSplitPath, reunionFilename, reunionFilePath, reunionJson, reunion;
|
|
610
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
611
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
612
|
+
case 0:
|
|
613
|
+
reunionsUid = new Set();
|
|
614
|
+
_iterator11 = _createForOfIteratorHelper(_datasets.datasets.agendas);
|
|
615
|
+
_context6.prev = 2;
|
|
616
|
+
_iterator11.s();
|
|
617
|
+
case 4:
|
|
618
|
+
if ((_step11 = _iterator11.n()).done) {
|
|
619
|
+
_context6.next = 40;
|
|
620
|
+
break;
|
|
621
|
+
}
|
|
622
|
+
dataset = _step11.value;
|
|
623
|
+
if (!dataset.ignoreForWeb) {
|
|
624
|
+
_context6.next = 8;
|
|
625
|
+
break;
|
|
626
|
+
}
|
|
627
|
+
return _context6.abrupt("continue", 38);
|
|
628
|
+
case 8:
|
|
629
|
+
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
630
|
+
_context6.next = 10;
|
|
631
|
+
break;
|
|
632
|
+
}
|
|
633
|
+
return _context6.abrupt("continue", 38);
|
|
634
|
+
case 10:
|
|
635
|
+
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
636
|
+
_iterator12 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir));
|
|
637
|
+
_context6.prev = 12;
|
|
638
|
+
_iterator12.s();
|
|
639
|
+
case 14:
|
|
640
|
+
if ((_step12 = _iterator12.n()).done) {
|
|
641
|
+
_context6.next = 30;
|
|
642
|
+
break;
|
|
643
|
+
}
|
|
644
|
+
reunionSplitPath = _step12.value;
|
|
645
|
+
reunionFilename = reunionSplitPath[reunionSplitPath.length - 1];
|
|
646
|
+
if (reunionFilename.endsWith(".json")) {
|
|
647
|
+
_context6.next = 19;
|
|
648
|
+
break;
|
|
649
|
+
}
|
|
650
|
+
return _context6.abrupt("continue", 28);
|
|
651
|
+
case 19:
|
|
652
|
+
reunionFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(reunionSplitPath)));
|
|
653
|
+
if (log) {
|
|
654
|
+
console.log("Loading file: ".concat(reunionFilePath, "\u2026"));
|
|
655
|
+
}
|
|
656
|
+
reunionJson = _fsExtra["default"].readFileSync(reunionFilePath, {
|
|
657
|
+
encoding: "utf8"
|
|
658
|
+
});
|
|
659
|
+
reunion = _agendas.Convert.toReunion(reunionJson);
|
|
660
|
+
if (!reunionsUid.has(reunion.uid)) {
|
|
661
|
+
_context6.next = 25;
|
|
662
|
+
break;
|
|
663
|
+
}
|
|
664
|
+
return _context6.abrupt("continue", 28);
|
|
665
|
+
case 25:
|
|
666
|
+
reunionsUid.add(reunion.uid);
|
|
667
|
+
_context6.next = 28;
|
|
668
|
+
return {
|
|
669
|
+
reunion: reunion,
|
|
670
|
+
datasetLegislature: dataset.legislature
|
|
671
|
+
};
|
|
672
|
+
case 28:
|
|
673
|
+
_context6.next = 14;
|
|
674
|
+
break;
|
|
675
|
+
case 30:
|
|
676
|
+
_context6.next = 35;
|
|
677
|
+
break;
|
|
678
|
+
case 32:
|
|
679
|
+
_context6.prev = 32;
|
|
680
|
+
_context6.t0 = _context6["catch"](12);
|
|
681
|
+
_iterator12.e(_context6.t0);
|
|
682
|
+
case 35:
|
|
683
|
+
_context6.prev = 35;
|
|
684
|
+
_iterator12.f();
|
|
685
|
+
return _context6.finish(35);
|
|
686
|
+
case 38:
|
|
687
|
+
_context6.next = 4;
|
|
688
|
+
break;
|
|
689
|
+
case 40:
|
|
690
|
+
_context6.next = 45;
|
|
691
|
+
break;
|
|
692
|
+
case 42:
|
|
693
|
+
_context6.prev = 42;
|
|
694
|
+
_context6.t1 = _context6["catch"](2);
|
|
695
|
+
_iterator11.e(_context6.t1);
|
|
696
|
+
case 45:
|
|
697
|
+
_context6.prev = 45;
|
|
698
|
+
_iterator11.f();
|
|
699
|
+
return _context6.finish(45);
|
|
700
|
+
case 48:
|
|
701
|
+
case "end":
|
|
702
|
+
return _context6.stop();
|
|
703
|
+
}
|
|
704
|
+
}, _callee6, null, [[2, 42, 45, 48], [12, 32, 35, 38]]);
|
|
705
|
+
})();
|
|
706
|
+
}
|
|
707
|
+
function iterLoadAssembleeScrutins(dataDir, legislature) {
|
|
708
|
+
var _ref7 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
709
|
+
_ref7$log = _ref7.log,
|
|
710
|
+
log = _ref7$log === void 0 ? false : _ref7$log;
|
|
711
|
+
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
|
|
712
|
+
var scrutinsUid, _iterator13, _step13, dataset, datasetDir, _iterator14, _step14, scrutinSplitPath, scrutinFilename, scrutinFilePath, scrutinJson, scrutin;
|
|
713
|
+
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
714
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
715
|
+
case 0:
|
|
716
|
+
scrutinsUid = new Set();
|
|
717
|
+
_iterator13 = _createForOfIteratorHelper(_datasets.datasets.scrutins);
|
|
718
|
+
_context7.prev = 2;
|
|
719
|
+
_iterator13.s();
|
|
720
|
+
case 4:
|
|
721
|
+
if ((_step13 = _iterator13.n()).done) {
|
|
722
|
+
_context7.next = 40;
|
|
723
|
+
break;
|
|
724
|
+
}
|
|
725
|
+
dataset = _step13.value;
|
|
726
|
+
if (!dataset.ignoreForWeb) {
|
|
727
|
+
_context7.next = 8;
|
|
728
|
+
break;
|
|
729
|
+
}
|
|
730
|
+
return _context7.abrupt("continue", 38);
|
|
731
|
+
case 8:
|
|
732
|
+
if (!(legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
733
|
+
_context7.next = 10;
|
|
734
|
+
break;
|
|
735
|
+
}
|
|
736
|
+
return _context7.abrupt("continue", 38);
|
|
737
|
+
case 10:
|
|
738
|
+
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
739
|
+
_iterator14 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir));
|
|
740
|
+
_context7.prev = 12;
|
|
741
|
+
_iterator14.s();
|
|
742
|
+
case 14:
|
|
743
|
+
if ((_step14 = _iterator14.n()).done) {
|
|
744
|
+
_context7.next = 30;
|
|
745
|
+
break;
|
|
746
|
+
}
|
|
747
|
+
scrutinSplitPath = _step14.value;
|
|
748
|
+
scrutinFilename = scrutinSplitPath[scrutinSplitPath.length - 1];
|
|
749
|
+
if (scrutinFilename.endsWith(".json")) {
|
|
750
|
+
_context7.next = 19;
|
|
751
|
+
break;
|
|
752
|
+
}
|
|
753
|
+
return _context7.abrupt("continue", 28);
|
|
754
|
+
case 19:
|
|
755
|
+
scrutinFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(scrutinSplitPath)));
|
|
756
|
+
if (log) {
|
|
757
|
+
console.log("Loading file: ".concat(scrutinFilePath, "\u2026"));
|
|
758
|
+
}
|
|
759
|
+
scrutinJson = _fsExtra["default"].readFileSync(scrutinFilePath, {
|
|
760
|
+
encoding: "utf8"
|
|
761
|
+
});
|
|
762
|
+
scrutin = _scrutins.Convert.toScrutin(scrutinJson);
|
|
763
|
+
if (!scrutinsUid.has(scrutin.uid)) {
|
|
764
|
+
_context7.next = 25;
|
|
765
|
+
break;
|
|
766
|
+
}
|
|
767
|
+
return _context7.abrupt("continue", 28);
|
|
768
|
+
case 25:
|
|
769
|
+
scrutinsUid.add(scrutin.uid);
|
|
770
|
+
_context7.next = 28;
|
|
771
|
+
return {
|
|
772
|
+
scrutin: scrutin,
|
|
773
|
+
datasetLegislature: dataset.legislature
|
|
774
|
+
};
|
|
775
|
+
case 28:
|
|
776
|
+
_context7.next = 14;
|
|
777
|
+
break;
|
|
778
|
+
case 30:
|
|
779
|
+
_context7.next = 35;
|
|
780
|
+
break;
|
|
781
|
+
case 32:
|
|
782
|
+
_context7.prev = 32;
|
|
783
|
+
_context7.t0 = _context7["catch"](12);
|
|
784
|
+
_iterator14.e(_context7.t0);
|
|
785
|
+
case 35:
|
|
786
|
+
_context7.prev = 35;
|
|
787
|
+
_iterator14.f();
|
|
788
|
+
return _context7.finish(35);
|
|
789
|
+
case 38:
|
|
790
|
+
_context7.next = 4;
|
|
791
|
+
break;
|
|
792
|
+
case 40:
|
|
793
|
+
_context7.next = 45;
|
|
794
|
+
break;
|
|
795
|
+
case 42:
|
|
796
|
+
_context7.prev = 42;
|
|
797
|
+
_context7.t1 = _context7["catch"](2);
|
|
798
|
+
_iterator13.e(_context7.t1);
|
|
799
|
+
case 45:
|
|
800
|
+
_context7.prev = 45;
|
|
801
|
+
_iterator13.f();
|
|
802
|
+
return _context7.finish(45);
|
|
803
|
+
case 48:
|
|
804
|
+
case "end":
|
|
805
|
+
return _context7.stop();
|
|
806
|
+
}
|
|
807
|
+
}, _callee7, null, [[2, 42, 45, 48], [12, 32, 35, 38]]);
|
|
808
|
+
})();
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
/// Load data from split files.
|
|
812
|
+
/// Deprecated: Use iterLoad... iterators instead.
|
|
813
|
+
function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
814
|
+
var _ref8 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
815
|
+
_ref8$log = _ref8.log,
|
|
816
|
+
log = _ref8$log === void 0 ? false : _ref8$log;
|
|
72
817
|
var acteurByUid = {};
|
|
73
818
|
var organeByUid = {};
|
|
74
819
|
if (enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes) {
|
|
75
|
-
var
|
|
76
|
-
|
|
820
|
+
var _iterator15 = _createForOfIteratorHelper(_datasets.datasets.acteursEtOrganes),
|
|
821
|
+
_step15;
|
|
77
822
|
try {
|
|
78
|
-
for (
|
|
79
|
-
var dataset =
|
|
823
|
+
for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
|
|
824
|
+
var dataset = _step15.value;
|
|
80
825
|
if (dataset.ignoreForWeb) {
|
|
81
826
|
continue;
|
|
82
827
|
}
|
|
@@ -84,11 +829,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
84
829
|
continue;
|
|
85
830
|
}
|
|
86
831
|
var datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
87
|
-
var
|
|
88
|
-
|
|
832
|
+
var _iterator16 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["acteurs"])),
|
|
833
|
+
_step16;
|
|
89
834
|
try {
|
|
90
|
-
for (
|
|
91
|
-
var acteurSplitPath =
|
|
835
|
+
for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
|
|
836
|
+
var acteurSplitPath = _step16.value;
|
|
92
837
|
var acteurFilename = acteurSplitPath[acteurSplitPath.length - 1];
|
|
93
838
|
if (!acteurFilename.endsWith(".json")) {
|
|
94
839
|
continue;
|
|
@@ -107,15 +852,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
107
852
|
}
|
|
108
853
|
}
|
|
109
854
|
} catch (err) {
|
|
110
|
-
|
|
855
|
+
_iterator16.e(err);
|
|
111
856
|
} finally {
|
|
112
|
-
|
|
857
|
+
_iterator16.f();
|
|
113
858
|
}
|
|
114
|
-
var
|
|
115
|
-
|
|
859
|
+
var _iterator17 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["organes"])),
|
|
860
|
+
_step17;
|
|
116
861
|
try {
|
|
117
|
-
for (
|
|
118
|
-
var organeSplitPath =
|
|
862
|
+
for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
|
|
863
|
+
var organeSplitPath = _step17.value;
|
|
119
864
|
var organeFilename = organeSplitPath[organeSplitPath.length - 1];
|
|
120
865
|
if (!organeFilename.endsWith(".json")) {
|
|
121
866
|
continue;
|
|
@@ -134,26 +879,26 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
134
879
|
}
|
|
135
880
|
}
|
|
136
881
|
} catch (err) {
|
|
137
|
-
|
|
882
|
+
_iterator17.e(err);
|
|
138
883
|
} finally {
|
|
139
|
-
|
|
884
|
+
_iterator17.f();
|
|
140
885
|
}
|
|
141
886
|
}
|
|
142
887
|
} catch (err) {
|
|
143
|
-
|
|
888
|
+
_iterator15.e(err);
|
|
144
889
|
} finally {
|
|
145
|
-
|
|
890
|
+
_iterator15.f();
|
|
146
891
|
}
|
|
147
892
|
}
|
|
148
893
|
var reunionByUid = {};
|
|
149
894
|
var reunionsByDay = {};
|
|
150
895
|
var reunionsByDossierUid = {};
|
|
151
896
|
if (enabledDatasets & _datasets.EnabledDatasets.Agendas) {
|
|
152
|
-
var
|
|
153
|
-
|
|
897
|
+
var _iterator18 = _createForOfIteratorHelper(_datasets.datasets.agendas),
|
|
898
|
+
_step18;
|
|
154
899
|
try {
|
|
155
|
-
for (
|
|
156
|
-
var _dataset =
|
|
900
|
+
for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
|
|
901
|
+
var _dataset = _step18.value;
|
|
157
902
|
if (_dataset.ignoreForWeb) {
|
|
158
903
|
continue;
|
|
159
904
|
}
|
|
@@ -161,11 +906,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
161
906
|
continue;
|
|
162
907
|
}
|
|
163
908
|
var _datasetDir = _path["default"].join(dataDir, _dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
164
|
-
var
|
|
165
|
-
|
|
909
|
+
var _iterator19 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir)),
|
|
910
|
+
_step19;
|
|
166
911
|
try {
|
|
167
|
-
for (
|
|
168
|
-
var reunionSplitPath =
|
|
912
|
+
for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
|
|
913
|
+
var reunionSplitPath = _step19.value;
|
|
169
914
|
var reunionFilename = reunionSplitPath[reunionSplitPath.length - 1];
|
|
170
915
|
if (!reunionFilename.endsWith(".json")) {
|
|
171
916
|
continue;
|
|
@@ -189,16 +934,16 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
189
934
|
reunionsAtDay.push(reunion);
|
|
190
935
|
var odj = reunion.odj;
|
|
191
936
|
if (odj !== undefined) {
|
|
192
|
-
var
|
|
193
|
-
|
|
937
|
+
var _iterator20 = _createForOfIteratorHelper(odj.pointsOdj || []),
|
|
938
|
+
_step20;
|
|
194
939
|
try {
|
|
195
|
-
for (
|
|
196
|
-
var pointOdj =
|
|
197
|
-
var
|
|
198
|
-
|
|
940
|
+
for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
|
|
941
|
+
var pointOdj = _step20.value;
|
|
942
|
+
var _iterator21 = _createForOfIteratorHelper(pointOdj.dossiersLegislatifsRefs || []),
|
|
943
|
+
_step21;
|
|
199
944
|
try {
|
|
200
|
-
for (
|
|
201
|
-
var dossierLegislatifRef =
|
|
945
|
+
for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
|
|
946
|
+
var dossierLegislatifRef = _step21.value;
|
|
202
947
|
var reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef];
|
|
203
948
|
if (reunionsAtDossierUid === undefined) {
|
|
204
949
|
reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef] = [];
|
|
@@ -206,37 +951,37 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
206
951
|
reunionsAtDossierUid.push(reunion);
|
|
207
952
|
}
|
|
208
953
|
} catch (err) {
|
|
209
|
-
|
|
954
|
+
_iterator21.e(err);
|
|
210
955
|
} finally {
|
|
211
|
-
|
|
956
|
+
_iterator21.f();
|
|
212
957
|
}
|
|
213
958
|
}
|
|
214
959
|
} catch (err) {
|
|
215
|
-
|
|
960
|
+
_iterator20.e(err);
|
|
216
961
|
} finally {
|
|
217
|
-
|
|
962
|
+
_iterator20.f();
|
|
218
963
|
}
|
|
219
964
|
}
|
|
220
965
|
}
|
|
221
966
|
} catch (err) {
|
|
222
|
-
|
|
967
|
+
_iterator19.e(err);
|
|
223
968
|
} finally {
|
|
224
|
-
|
|
969
|
+
_iterator19.f();
|
|
225
970
|
}
|
|
226
971
|
}
|
|
227
972
|
} catch (err) {
|
|
228
|
-
|
|
973
|
+
_iterator18.e(err);
|
|
229
974
|
} finally {
|
|
230
|
-
|
|
975
|
+
_iterator18.f();
|
|
231
976
|
}
|
|
232
977
|
}
|
|
233
978
|
var amendementByUid = {};
|
|
234
979
|
if (enabledDatasets & _datasets.EnabledDatasets.Amendements) {
|
|
235
|
-
var
|
|
236
|
-
|
|
980
|
+
var _iterator22 = _createForOfIteratorHelper(_datasets.datasets.amendements),
|
|
981
|
+
_step22;
|
|
237
982
|
try {
|
|
238
|
-
for (
|
|
239
|
-
var _dataset2 =
|
|
983
|
+
for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
|
|
984
|
+
var _dataset2 = _step22.value;
|
|
240
985
|
if (_dataset2.ignoreForWeb) {
|
|
241
986
|
continue;
|
|
242
987
|
}
|
|
@@ -244,11 +989,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
244
989
|
continue;
|
|
245
990
|
}
|
|
246
991
|
var _datasetDir2 = _path["default"].join(dataDir, _dataset2.filename.replace(/\.json$/, "_nettoye"));
|
|
247
|
-
var
|
|
248
|
-
|
|
992
|
+
var _iterator23 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir2)),
|
|
993
|
+
_step23;
|
|
249
994
|
try {
|
|
250
|
-
for (
|
|
251
|
-
var amendementSplitPath =
|
|
995
|
+
for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
|
|
996
|
+
var amendementSplitPath = _step23.value;
|
|
252
997
|
var amendementFilename = amendementSplitPath[amendementSplitPath.length - 1];
|
|
253
998
|
if (!amendementFilename.endsWith(".json")) {
|
|
254
999
|
continue;
|
|
@@ -266,15 +1011,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
266
1011
|
}
|
|
267
1012
|
}
|
|
268
1013
|
} catch (err) {
|
|
269
|
-
|
|
1014
|
+
_iterator23.e(err);
|
|
270
1015
|
} finally {
|
|
271
|
-
|
|
1016
|
+
_iterator23.f();
|
|
272
1017
|
}
|
|
273
1018
|
}
|
|
274
1019
|
} catch (err) {
|
|
275
|
-
|
|
1020
|
+
_iterator22.e(err);
|
|
276
1021
|
} finally {
|
|
277
|
-
|
|
1022
|
+
_iterator22.f();
|
|
278
1023
|
}
|
|
279
1024
|
}
|
|
280
1025
|
var documentByUid = {};
|
|
@@ -282,11 +1027,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
282
1027
|
var dossierParlementaireByTitreChemin = {};
|
|
283
1028
|
var dossierParlementaireByUid = {};
|
|
284
1029
|
if (enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs) {
|
|
285
|
-
var
|
|
286
|
-
|
|
1030
|
+
var _iterator24 = _createForOfIteratorHelper(_datasets.datasets.dossiersLegislatifs),
|
|
1031
|
+
_step24;
|
|
287
1032
|
try {
|
|
288
|
-
for (
|
|
289
|
-
var _dataset3 =
|
|
1033
|
+
for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {
|
|
1034
|
+
var _dataset3 = _step24.value;
|
|
290
1035
|
if (_dataset3.ignoreForWeb) {
|
|
291
1036
|
continue;
|
|
292
1037
|
}
|
|
@@ -294,11 +1039,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
294
1039
|
continue;
|
|
295
1040
|
}
|
|
296
1041
|
var _datasetDir3 = _path["default"].join(dataDir, _dataset3.filename.replace(/\.json$/, "_nettoye"));
|
|
297
|
-
var
|
|
298
|
-
|
|
1042
|
+
var _iterator25 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir3, ["documents"])),
|
|
1043
|
+
_step25;
|
|
299
1044
|
try {
|
|
300
|
-
for (
|
|
301
|
-
var documentSplitPath =
|
|
1045
|
+
for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {
|
|
1046
|
+
var documentSplitPath = _step25.value;
|
|
302
1047
|
var documentFilename = documentSplitPath[documentSplitPath.length - 1];
|
|
303
1048
|
if (!documentFilename.endsWith(".json")) {
|
|
304
1049
|
continue;
|
|
@@ -316,15 +1061,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
316
1061
|
}
|
|
317
1062
|
}
|
|
318
1063
|
} catch (err) {
|
|
319
|
-
|
|
1064
|
+
_iterator25.e(err);
|
|
320
1065
|
} finally {
|
|
321
|
-
|
|
1066
|
+
_iterator25.f();
|
|
322
1067
|
}
|
|
323
|
-
var
|
|
324
|
-
|
|
1068
|
+
var _iterator26 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir3, ["dossiers"])),
|
|
1069
|
+
_step26;
|
|
325
1070
|
try {
|
|
326
|
-
for (
|
|
327
|
-
var dossierSplitPath =
|
|
1071
|
+
for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {
|
|
1072
|
+
var dossierSplitPath = _step26.value;
|
|
328
1073
|
var dossierFilename = dossierSplitPath[dossierSplitPath.length - 1];
|
|
329
1074
|
if (!dossierFilename.endsWith(".json")) {
|
|
330
1075
|
continue;
|
|
@@ -349,15 +1094,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
349
1094
|
}
|
|
350
1095
|
}
|
|
351
1096
|
} catch (err) {
|
|
352
|
-
|
|
1097
|
+
_iterator26.e(err);
|
|
353
1098
|
} finally {
|
|
354
|
-
|
|
1099
|
+
_iterator26.f();
|
|
355
1100
|
}
|
|
356
1101
|
}
|
|
357
1102
|
} catch (err) {
|
|
358
|
-
|
|
1103
|
+
_iterator24.e(err);
|
|
359
1104
|
} finally {
|
|
360
|
-
|
|
1105
|
+
_iterator24.f();
|
|
361
1106
|
}
|
|
362
1107
|
}
|
|
363
1108
|
var photoByUid = {};
|
|
@@ -395,11 +1140,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
395
1140
|
}
|
|
396
1141
|
var scrutinByUid = {};
|
|
397
1142
|
if (enabledDatasets & _datasets.EnabledDatasets.Scrutins) {
|
|
398
|
-
var
|
|
399
|
-
|
|
1143
|
+
var _iterator27 = _createForOfIteratorHelper(_datasets.datasets.scrutins),
|
|
1144
|
+
_step27;
|
|
400
1145
|
try {
|
|
401
|
-
for (
|
|
402
|
-
var _dataset4 =
|
|
1146
|
+
for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {
|
|
1147
|
+
var _dataset4 = _step27.value;
|
|
403
1148
|
if (_dataset4.ignoreForWeb) {
|
|
404
1149
|
continue;
|
|
405
1150
|
}
|
|
@@ -407,11 +1152,11 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
407
1152
|
continue;
|
|
408
1153
|
}
|
|
409
1154
|
var _datasetDir4 = _path["default"].join(dataDir, _dataset4.filename.replace(/\.json$/, "_nettoye"));
|
|
410
|
-
var
|
|
411
|
-
|
|
1155
|
+
var _iterator28 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir4)),
|
|
1156
|
+
_step28;
|
|
412
1157
|
try {
|
|
413
|
-
for (
|
|
414
|
-
var scrutinSplitPath =
|
|
1158
|
+
for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {
|
|
1159
|
+
var scrutinSplitPath = _step28.value;
|
|
415
1160
|
var scrutinFilename = scrutinSplitPath[scrutinSplitPath.length - 1];
|
|
416
1161
|
if (!scrutinFilename.endsWith(".json")) {
|
|
417
1162
|
continue;
|
|
@@ -429,15 +1174,15 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
429
1174
|
}
|
|
430
1175
|
}
|
|
431
1176
|
} catch (err) {
|
|
432
|
-
|
|
1177
|
+
_iterator28.e(err);
|
|
433
1178
|
} finally {
|
|
434
|
-
|
|
1179
|
+
_iterator28.f();
|
|
435
1180
|
}
|
|
436
1181
|
}
|
|
437
1182
|
} catch (err) {
|
|
438
|
-
|
|
1183
|
+
_iterator27.e(err);
|
|
439
1184
|
} finally {
|
|
440
|
-
|
|
1185
|
+
_iterator27.f();
|
|
441
1186
|
}
|
|
442
1187
|
}
|
|
443
1188
|
return {
|
|
@@ -456,19 +1201,20 @@ function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
|
456
1201
|
};
|
|
457
1202
|
}
|
|
458
1203
|
|
|
459
|
-
|
|
1204
|
+
/// Load data from big monolytic files.
|
|
1205
|
+
/// Deprecated: Assemblée nationale open data no more uses monolytic files.
|
|
460
1206
|
function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
461
|
-
var
|
|
462
|
-
|
|
463
|
-
log =
|
|
1207
|
+
var _ref9 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
1208
|
+
_ref9$log = _ref9.log,
|
|
1209
|
+
log = _ref9$log === void 0 ? false : _ref9$log;
|
|
464
1210
|
var acteurByUid = {};
|
|
465
1211
|
var organeByUid = {};
|
|
466
1212
|
if (enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes) {
|
|
467
|
-
var
|
|
468
|
-
|
|
1213
|
+
var _iterator29 = _createForOfIteratorHelper(_datasets.datasets.acteursEtOrganes),
|
|
1214
|
+
_step29;
|
|
469
1215
|
try {
|
|
470
|
-
for (
|
|
471
|
-
var dataset =
|
|
1216
|
+
for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {
|
|
1217
|
+
var dataset = _step29.value;
|
|
472
1218
|
if (dataset.ignoreForWeb) {
|
|
473
1219
|
continue;
|
|
474
1220
|
}
|
|
@@ -483,52 +1229,52 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
483
1229
|
encoding: "utf8"
|
|
484
1230
|
});
|
|
485
1231
|
var acteursEtOrganes = _acteurs_et_organes.Convert.toActeursEtOrganes(json);
|
|
486
|
-
var
|
|
487
|
-
|
|
1232
|
+
var _iterator30 = _createForOfIteratorHelper(acteursEtOrganes.acteurs),
|
|
1233
|
+
_step30;
|
|
488
1234
|
try {
|
|
489
|
-
for (
|
|
490
|
-
var acteur =
|
|
1235
|
+
for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {
|
|
1236
|
+
var acteur = _step30.value;
|
|
491
1237
|
// Keep the first existing "acteur", because the first wrapper is the most complete.
|
|
492
1238
|
if (acteurByUid[acteur.uid] === undefined) {
|
|
493
1239
|
acteurByUid[acteur.uid] = acteur;
|
|
494
1240
|
}
|
|
495
1241
|
}
|
|
496
1242
|
} catch (err) {
|
|
497
|
-
|
|
1243
|
+
_iterator30.e(err);
|
|
498
1244
|
} finally {
|
|
499
|
-
|
|
1245
|
+
_iterator30.f();
|
|
500
1246
|
}
|
|
501
|
-
var
|
|
502
|
-
|
|
1247
|
+
var _iterator31 = _createForOfIteratorHelper(acteursEtOrganes.organes),
|
|
1248
|
+
_step31;
|
|
503
1249
|
try {
|
|
504
|
-
for (
|
|
505
|
-
var organe =
|
|
1250
|
+
for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {
|
|
1251
|
+
var organe = _step31.value;
|
|
506
1252
|
// Keep the first existing "organe", because the first wrapper is the most complete.
|
|
507
1253
|
if (organeByUid[organe.uid] === undefined) {
|
|
508
1254
|
organeByUid[organe.uid] = organe;
|
|
509
1255
|
}
|
|
510
1256
|
}
|
|
511
1257
|
} catch (err) {
|
|
512
|
-
|
|
1258
|
+
_iterator31.e(err);
|
|
513
1259
|
} finally {
|
|
514
|
-
|
|
1260
|
+
_iterator31.f();
|
|
515
1261
|
}
|
|
516
1262
|
}
|
|
517
1263
|
} catch (err) {
|
|
518
|
-
|
|
1264
|
+
_iterator29.e(err);
|
|
519
1265
|
} finally {
|
|
520
|
-
|
|
1266
|
+
_iterator29.f();
|
|
521
1267
|
}
|
|
522
1268
|
}
|
|
523
1269
|
var reunionByUid = {};
|
|
524
1270
|
var reunionsByDay = {};
|
|
525
1271
|
var reunionsByDossierUid = {};
|
|
526
1272
|
if (enabledDatasets & _datasets.EnabledDatasets.Agendas) {
|
|
527
|
-
var
|
|
528
|
-
|
|
1273
|
+
var _iterator32 = _createForOfIteratorHelper(_datasets.datasets.agendas),
|
|
1274
|
+
_step32;
|
|
529
1275
|
try {
|
|
530
|
-
for (
|
|
531
|
-
var _dataset5 =
|
|
1276
|
+
for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) {
|
|
1277
|
+
var _dataset5 = _step32.value;
|
|
532
1278
|
if (_dataset5.ignoreForWeb) {
|
|
533
1279
|
continue;
|
|
534
1280
|
}
|
|
@@ -543,11 +1289,11 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
543
1289
|
encoding: "utf8"
|
|
544
1290
|
});
|
|
545
1291
|
var agendas = _agendas.Convert.toAgendas(_json2);
|
|
546
|
-
var
|
|
547
|
-
|
|
1292
|
+
var _iterator33 = _createForOfIteratorHelper(agendas.reunions),
|
|
1293
|
+
_step33;
|
|
548
1294
|
try {
|
|
549
|
-
for (
|
|
550
|
-
var reunion =
|
|
1295
|
+
for (_iterator33.s(); !(_step33 = _iterator33.n()).done;) {
|
|
1296
|
+
var reunion = _step33.value;
|
|
551
1297
|
if (reunionByUid[reunion.uid] === undefined) {
|
|
552
1298
|
reunionByUid[reunion.uid] = reunion;
|
|
553
1299
|
}
|
|
@@ -559,16 +1305,16 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
559
1305
|
reunionsAtDay.push(reunion);
|
|
560
1306
|
var odj = reunion.odj;
|
|
561
1307
|
if (odj !== undefined) {
|
|
562
|
-
var
|
|
563
|
-
|
|
1308
|
+
var _iterator34 = _createForOfIteratorHelper(odj.pointsOdj || []),
|
|
1309
|
+
_step34;
|
|
564
1310
|
try {
|
|
565
|
-
for (
|
|
566
|
-
var pointOdj =
|
|
567
|
-
var
|
|
568
|
-
|
|
1311
|
+
for (_iterator34.s(); !(_step34 = _iterator34.n()).done;) {
|
|
1312
|
+
var pointOdj = _step34.value;
|
|
1313
|
+
var _iterator35 = _createForOfIteratorHelper(pointOdj.dossiersLegislatifsRefs || []),
|
|
1314
|
+
_step35;
|
|
569
1315
|
try {
|
|
570
|
-
for (
|
|
571
|
-
var dossierLegislatifRef =
|
|
1316
|
+
for (_iterator35.s(); !(_step35 = _iterator35.n()).done;) {
|
|
1317
|
+
var dossierLegislatifRef = _step35.value;
|
|
572
1318
|
var reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef];
|
|
573
1319
|
if (reunionsAtDossierUid === undefined) {
|
|
574
1320
|
reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef] = [];
|
|
@@ -576,37 +1322,37 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
576
1322
|
reunionsAtDossierUid.push(reunion);
|
|
577
1323
|
}
|
|
578
1324
|
} catch (err) {
|
|
579
|
-
|
|
1325
|
+
_iterator35.e(err);
|
|
580
1326
|
} finally {
|
|
581
|
-
|
|
1327
|
+
_iterator35.f();
|
|
582
1328
|
}
|
|
583
1329
|
}
|
|
584
1330
|
} catch (err) {
|
|
585
|
-
|
|
1331
|
+
_iterator34.e(err);
|
|
586
1332
|
} finally {
|
|
587
|
-
|
|
1333
|
+
_iterator34.f();
|
|
588
1334
|
}
|
|
589
1335
|
}
|
|
590
1336
|
}
|
|
591
1337
|
} catch (err) {
|
|
592
|
-
|
|
1338
|
+
_iterator33.e(err);
|
|
593
1339
|
} finally {
|
|
594
|
-
|
|
1340
|
+
_iterator33.f();
|
|
595
1341
|
}
|
|
596
1342
|
}
|
|
597
1343
|
} catch (err) {
|
|
598
|
-
|
|
1344
|
+
_iterator32.e(err);
|
|
599
1345
|
} finally {
|
|
600
|
-
|
|
1346
|
+
_iterator32.f();
|
|
601
1347
|
}
|
|
602
1348
|
}
|
|
603
1349
|
var amendementByUid = {};
|
|
604
1350
|
if (enabledDatasets & _datasets.EnabledDatasets.Amendements) {
|
|
605
|
-
var
|
|
606
|
-
|
|
1351
|
+
var _iterator36 = _createForOfIteratorHelper(_datasets.datasets.amendements),
|
|
1352
|
+
_step36;
|
|
607
1353
|
try {
|
|
608
|
-
for (
|
|
609
|
-
var _dataset6 =
|
|
1354
|
+
for (_iterator36.s(); !(_step36 = _iterator36.n()).done;) {
|
|
1355
|
+
var _dataset6 = _step36.value;
|
|
610
1356
|
if (_dataset6.ignoreForWeb) {
|
|
611
1357
|
continue;
|
|
612
1358
|
}
|
|
@@ -621,36 +1367,36 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
621
1367
|
encoding: "utf8"
|
|
622
1368
|
});
|
|
623
1369
|
var amendements = _amendements.Convert.toAmendements(_json3);
|
|
624
|
-
var
|
|
625
|
-
|
|
1370
|
+
var _iterator37 = _createForOfIteratorHelper(amendements.textesLegislatifs),
|
|
1371
|
+
_step37;
|
|
626
1372
|
try {
|
|
627
|
-
for (
|
|
628
|
-
var texteLegislatif =
|
|
629
|
-
var
|
|
630
|
-
|
|
1373
|
+
for (_iterator37.s(); !(_step37 = _iterator37.n()).done;) {
|
|
1374
|
+
var texteLegislatif = _step37.value;
|
|
1375
|
+
var _iterator38 = _createForOfIteratorHelper(texteLegislatif.amendements),
|
|
1376
|
+
_step38;
|
|
631
1377
|
try {
|
|
632
|
-
for (
|
|
633
|
-
var amendement =
|
|
1378
|
+
for (_iterator38.s(); !(_step38 = _iterator38.n()).done;) {
|
|
1379
|
+
var amendement = _step38.value;
|
|
634
1380
|
if (amendementByUid[amendement.uid] === undefined) {
|
|
635
1381
|
amendementByUid[amendement.uid] = amendement;
|
|
636
1382
|
}
|
|
637
1383
|
}
|
|
638
1384
|
} catch (err) {
|
|
639
|
-
|
|
1385
|
+
_iterator38.e(err);
|
|
640
1386
|
} finally {
|
|
641
|
-
|
|
1387
|
+
_iterator38.f();
|
|
642
1388
|
}
|
|
643
1389
|
}
|
|
644
1390
|
} catch (err) {
|
|
645
|
-
|
|
1391
|
+
_iterator37.e(err);
|
|
646
1392
|
} finally {
|
|
647
|
-
|
|
1393
|
+
_iterator37.f();
|
|
648
1394
|
}
|
|
649
1395
|
}
|
|
650
1396
|
} catch (err) {
|
|
651
|
-
|
|
1397
|
+
_iterator36.e(err);
|
|
652
1398
|
} finally {
|
|
653
|
-
|
|
1399
|
+
_iterator36.f();
|
|
654
1400
|
}
|
|
655
1401
|
}
|
|
656
1402
|
var documentByUid = {};
|
|
@@ -658,11 +1404,11 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
658
1404
|
var dossierParlementaireByTitreChemin = {};
|
|
659
1405
|
var dossierParlementaireByUid = {};
|
|
660
1406
|
if (enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs) {
|
|
661
|
-
var
|
|
662
|
-
|
|
1407
|
+
var _iterator39 = _createForOfIteratorHelper(_datasets.datasets.dossiersLegislatifs),
|
|
1408
|
+
_step39;
|
|
663
1409
|
try {
|
|
664
|
-
for (
|
|
665
|
-
var _dataset7 =
|
|
1410
|
+
for (_iterator39.s(); !(_step39 = _iterator39.n()).done;) {
|
|
1411
|
+
var _dataset7 = _step39.value;
|
|
666
1412
|
if (_dataset7.ignoreForWeb) {
|
|
667
1413
|
continue;
|
|
668
1414
|
}
|
|
@@ -677,25 +1423,25 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
677
1423
|
encoding: "utf8"
|
|
678
1424
|
});
|
|
679
1425
|
var dossiersLegislatifs = _dossiers_legislatifs.Convert.toDossiersLegislatifs(_json4);
|
|
680
|
-
var
|
|
681
|
-
|
|
1426
|
+
var _iterator40 = _createForOfIteratorHelper(dossiersLegislatifs.textesLegislatifs),
|
|
1427
|
+
_step40;
|
|
682
1428
|
try {
|
|
683
|
-
for (
|
|
684
|
-
var document =
|
|
1429
|
+
for (_iterator40.s(); !(_step40 = _iterator40.n()).done;) {
|
|
1430
|
+
var document = _step40.value;
|
|
685
1431
|
if (documentByUid[document.uid] === undefined) {
|
|
686
1432
|
documentByUid[document.uid] = document;
|
|
687
1433
|
}
|
|
688
1434
|
}
|
|
689
1435
|
} catch (err) {
|
|
690
|
-
|
|
1436
|
+
_iterator40.e(err);
|
|
691
1437
|
} finally {
|
|
692
|
-
|
|
1438
|
+
_iterator40.f();
|
|
693
1439
|
}
|
|
694
|
-
var
|
|
695
|
-
|
|
1440
|
+
var _iterator41 = _createForOfIteratorHelper(dossiersLegislatifs.dossiersParlementaires),
|
|
1441
|
+
_step41;
|
|
696
1442
|
try {
|
|
697
|
-
for (
|
|
698
|
-
var dossier =
|
|
1443
|
+
for (_iterator41.s(); !(_step41 = _iterator41.n()).done;) {
|
|
1444
|
+
var dossier = _step41.value;
|
|
699
1445
|
var titreDossier = dossier.titreDossier;
|
|
700
1446
|
if (titreDossier.senatChemin && dossierParlementaireBySenatChemin[titreDossier.senatChemin] === undefined) {
|
|
701
1447
|
dossierParlementaireBySenatChemin[titreDossier.senatChemin] = dossier;
|
|
@@ -708,15 +1454,15 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
708
1454
|
}
|
|
709
1455
|
}
|
|
710
1456
|
} catch (err) {
|
|
711
|
-
|
|
1457
|
+
_iterator41.e(err);
|
|
712
1458
|
} finally {
|
|
713
|
-
|
|
1459
|
+
_iterator41.f();
|
|
714
1460
|
}
|
|
715
1461
|
}
|
|
716
1462
|
} catch (err) {
|
|
717
|
-
|
|
1463
|
+
_iterator39.e(err);
|
|
718
1464
|
} finally {
|
|
719
|
-
|
|
1465
|
+
_iterator39.f();
|
|
720
1466
|
}
|
|
721
1467
|
}
|
|
722
1468
|
var photoByUid = {};
|
|
@@ -755,11 +1501,11 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
755
1501
|
}
|
|
756
1502
|
var scrutinByUid = {};
|
|
757
1503
|
if (enabledDatasets & _datasets.EnabledDatasets.Scrutins) {
|
|
758
|
-
var
|
|
759
|
-
|
|
1504
|
+
var _iterator42 = _createForOfIteratorHelper(_datasets.datasets.scrutins),
|
|
1505
|
+
_step42;
|
|
760
1506
|
try {
|
|
761
|
-
for (
|
|
762
|
-
var _dataset8 =
|
|
1507
|
+
for (_iterator42.s(); !(_step42 = _iterator42.n()).done;) {
|
|
1508
|
+
var _dataset8 = _step42.value;
|
|
763
1509
|
if (_dataset8.ignoreForWeb) {
|
|
764
1510
|
continue;
|
|
765
1511
|
}
|
|
@@ -774,25 +1520,25 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
774
1520
|
encoding: "utf8"
|
|
775
1521
|
});
|
|
776
1522
|
var scrutins = _scrutins.Convert.toScrutins(_json7);
|
|
777
|
-
var
|
|
778
|
-
|
|
1523
|
+
var _iterator43 = _createForOfIteratorHelper(scrutins.scrutins),
|
|
1524
|
+
_step43;
|
|
779
1525
|
try {
|
|
780
|
-
for (
|
|
781
|
-
var scrutin =
|
|
1526
|
+
for (_iterator43.s(); !(_step43 = _iterator43.n()).done;) {
|
|
1527
|
+
var scrutin = _step43.value;
|
|
782
1528
|
if (scrutinByUid[scrutin.uid] === undefined) {
|
|
783
1529
|
scrutinByUid[scrutin.uid] = scrutin;
|
|
784
1530
|
}
|
|
785
1531
|
}
|
|
786
1532
|
} catch (err) {
|
|
787
|
-
|
|
1533
|
+
_iterator43.e(err);
|
|
788
1534
|
} finally {
|
|
789
|
-
|
|
1535
|
+
_iterator43.f();
|
|
790
1536
|
}
|
|
791
1537
|
}
|
|
792
1538
|
} catch (err) {
|
|
793
|
-
|
|
1539
|
+
_iterator42.e(err);
|
|
794
1540
|
} finally {
|
|
795
|
-
|
|
1541
|
+
_iterator42.f();
|
|
796
1542
|
}
|
|
797
1543
|
}
|
|
798
1544
|
return {
|
|
@@ -810,6 +1556,34 @@ function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
|
810
1556
|
scrutinByUid: scrutinByUid
|
|
811
1557
|
};
|
|
812
1558
|
}
|
|
1559
|
+
function loadAssembleePhotosDeputes(dataDir, legislature) {
|
|
1560
|
+
var _ref10 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
1561
|
+
_ref10$log = _ref10.log,
|
|
1562
|
+
log = _ref10$log === void 0 ? false : _ref10$log;
|
|
1563
|
+
var jsonFilePath = _path["default"].join(dataDir, "photos_deputes_".concat(
|
|
1564
|
+
// TODO: Handle Legislature.All.
|
|
1565
|
+
legislature === _legislatures.Legislature.All ? _legislatures.Legislature.Seize : legislature), "deputes.json");
|
|
1566
|
+
if (log) {
|
|
1567
|
+
console.log("Loading file: ".concat(jsonFilePath));
|
|
1568
|
+
}
|
|
1569
|
+
var json = _fsExtra["default"].readFileSync(jsonFilePath, {
|
|
1570
|
+
encoding: "utf8"
|
|
1571
|
+
});
|
|
1572
|
+
return JSON.parse(json);
|
|
1573
|
+
}
|
|
1574
|
+
function loadAssembleePhotosSenateurs(dataDir) {
|
|
1575
|
+
var _ref11 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1576
|
+
_ref11$log = _ref11.log,
|
|
1577
|
+
log = _ref11$log === void 0 ? false : _ref11$log;
|
|
1578
|
+
var jsonFilePath = _path["default"].join(dataDir, "photos_senateurs", "senateurs.json");
|
|
1579
|
+
if (log) {
|
|
1580
|
+
console.log("Loading file: ".concat(jsonFilePath));
|
|
1581
|
+
}
|
|
1582
|
+
var json = _fsExtra["default"].readFileSync(jsonFilePath, {
|
|
1583
|
+
encoding: "utf8"
|
|
1584
|
+
});
|
|
1585
|
+
return JSON.parse(json);
|
|
1586
|
+
}
|
|
813
1587
|
function pathFromDocumentUid(documentsDir, uid) {
|
|
814
1588
|
var match = documentUidRegex.exec(uid);
|
|
815
1589
|
_assert["default"].notStrictEqual(match, null, "Unexpected structure for document UID: ".concat(uid));
|
|
@@ -861,4 +1635,4 @@ function pathFromScrutinUid(scrutinsDir, uid) {
|
|
|
861
1635
|
_fsExtra["default"].ensureDirSync(numeroMilliersDir);
|
|
862
1636
|
return _path["default"].join(numeroMilliersDir, uid);
|
|
863
1637
|
}
|
|
864
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9hY3RldXJzX2V0X29yZ2FuZXMiLCJfYWdlbmRhcyIsIl9hbWVuZGVtZW50cyIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsIl9sZWdpc2xhdHVyZXMiLCJfc2NydXRpbnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIml0ZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwibyIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJsZW5ndGgiLCJpIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZSIsIl9lIiwiZiIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJlcnIiLCJjYWxsIiwic3RlcCIsIm5leHQiLCJfZTIiLCJtaW5MZW4iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJkb2N1bWVudFVpZFJlZ2V4IiwiZG9zc2llclVpZFJlZ2V4IiwicmV1bmlvblVpZFJlZ2V4Iiwic2NydXRpblVpZFJlZ2V4IiwibG9hZEFzc2VtYmxlZURhdGEiLCJkYXRhRGlyIiwiZW5hYmxlZERhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJfcmVmIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZiRsb2ciLCJsb2ciLCJhY3RldXJCeVVpZCIsIm9yZ2FuZUJ5VWlkIiwiRW5hYmxlZERhdGFzZXRzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsIl9pdGVyYXRvciIsImRhdGFzZXRzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsIl9zdGVwIiwiZGF0YXNldCIsImlnbm9yZUZvcldlYiIsIkxlZ2lzbGF0dXJlIiwiQWxsIiwiZGF0YXNldERpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJyZXBsYWNlIiwiX2l0ZXJhdG9yMiIsIndhbGtEaXIiLCJfc3RlcDIiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImVuZHNXaXRoIiwiYWN0ZXVyRmlsZVBhdGgiLCJhcHBseSIsImNvbmNhdCIsImNvbnNvbGUiLCJhY3RldXJKc29uIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsImFjdGV1ciIsIkFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0IiwidG9BY3RldXIiLCJ1aWQiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVGaWxlUGF0aCIsIm9yZ2FuZUpzb24iLCJvcmdhbmUiLCJ0b09yZ2FuZSIsInJldW5pb25CeVVpZCIsInJldW5pb25zQnlEYXkiLCJyZXVuaW9uc0J5RG9zc2llclVpZCIsIkFnZW5kYXMiLCJfaXRlcmF0b3I0IiwiYWdlbmRhcyIsIl9zdGVwNCIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbkZpbGVQYXRoIiwicmV1bmlvbkpzb24iLCJyZXVuaW9uIiwiQWdlbmRhc0NvbnZlcnQiLCJ0b1JldW5pb24iLCJkYXkiLCJ0aW1lc3RhbXBEZWJ1dCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyZXVuaW9uc0F0RGF5IiwicHVzaCIsIm9kaiIsIl9pdGVyYXRvcjYiLCJwb2ludHNPZGoiLCJfc3RlcDYiLCJwb2ludE9kaiIsIl9pdGVyYXRvcjciLCJkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyIsIl9zdGVwNyIsImRvc3NpZXJMZWdpc2xhdGlmUmVmIiwicmV1bmlvbnNBdERvc3NpZXJVaWQiLCJhbWVuZGVtZW50QnlVaWQiLCJBbWVuZGVtZW50cyIsIl9pdGVyYXRvcjgiLCJhbWVuZGVtZW50cyIsIl9zdGVwOCIsIl9pdGVyYXRvcjkiLCJfc3RlcDkiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudEZpbGVQYXRoIiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwidG9BbWVuZGVtZW50IiwiZG9jdW1lbnRCeVVpZCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yMTAiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX3N0ZXAxMCIsIl9pdGVyYXRvcjExIiwiX3N0ZXAxMSIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50RmlsZVBhdGgiLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudCIsIkRvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0IiwidG9Eb2N1bWVudCIsIl9pdGVyYXRvcjEyIiwiX3N0ZXAxMiIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyRmlsZVBhdGgiLCJkb3NzaWVySnNvbiIsImRvc3NpZXIiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJTZWl6ZSIsImV4aXN0c1N5bmMiLCJqc29uIiwiYXNzaWduIiwiSlNPTiIsInBhcnNlIiwic2NydXRpbkJ5VWlkIiwiU2NydXRpbnMiLCJfaXRlcmF0b3IxMyIsInNjcnV0aW5zIiwiX3N0ZXAxMyIsIl9pdGVyYXRvcjE0IiwiX3N0ZXAxNCIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluRmlsZVBhdGgiLCJzY3J1dGluSnNvbiIsInNjcnV0aW4iLCJTY3J1dGluc0NvbnZlcnQiLCJ0b1NjcnV0aW4iLCJsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyIsIl9yZWYyIiwiX3JlZjIkbG9nIiwiX2l0ZXJhdG9yMTUiLCJfc3RlcDE1IiwidG9BY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMTYiLCJhY3RldXJzIiwiX3N0ZXAxNiIsIl9pdGVyYXRvcjE3Iiwib3JnYW5lcyIsIl9zdGVwMTciLCJfaXRlcmF0b3IxOCIsIl9zdGVwMTgiLCJ0b0FnZW5kYXMiLCJfaXRlcmF0b3IxOSIsInJldW5pb25zIiwiX3N0ZXAxOSIsIl9pdGVyYXRvcjIwIiwiX3N0ZXAyMCIsIl9pdGVyYXRvcjIxIiwiX3N0ZXAyMSIsIl9pdGVyYXRvcjIyIiwiX3N0ZXAyMiIsInRvQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IyMyIsInRleHRlc0xlZ2lzbGF0aWZzIiwiX3N0ZXAyMyIsInRleHRlTGVnaXNsYXRpZiIsIl9pdGVyYXRvcjI0IiwiX3N0ZXAyNCIsIl9pdGVyYXRvcjI1IiwiX3N0ZXAyNSIsInRvRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjI2IiwiX3N0ZXAyNiIsIl9pdGVyYXRvcjI3IiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsIl9zdGVwMjciLCJfaXRlcmF0b3IyOCIsIl9zdGVwMjgiLCJ0b1NjcnV0aW5zIiwiX2l0ZXJhdG9yMjkiLCJfc3RlcDI5IiwicGF0aEZyb21Eb2N1bWVudFVpZCIsImRvY3VtZW50c0RpciIsIm1hdGNoIiwiZXhlYyIsImFzc2VydCIsIm5vdFN0cmljdEVxdWFsIiwiZG9jdW1lbnRUeXBlIiwiY2hhbWJyZURpciIsInJlcHVibGlxdWVEaXIiLCJsZWdpc2xhdHVyZURpciIsImV0YXREaXIiLCJudW1lcm8iLCJzdWJzdHIiLCJudW1lcm9NaWxsaWVyc0RpciIsImVuc3VyZURpclN5bmMiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwiZG9zc2llcnNEaXIiLCJwYXRoRnJvbVJldW5pb25VaWQiLCJyZXVuaW9uc0RpciIsInNlc3Npb25EaXIiLCJpZERpciIsIm51bWVyb01pbGxpb25zRGlyIiwicGF0aEZyb21TY3J1dGluVWlkIiwic2NydXRpbnNEaXIiXSwic291cmNlcyI6WyIuLi9zcmMvbG9hZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gTG9hZCBkYXRhIGZyb20gZmlsZXNcblxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5leHBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuZXhwb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxuICBQaG90byxcbn0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCxcbiAgRG9jdW1lbnQsXG4gIERvc3NpZXJQYXJsZW1lbnRhaXJlLFxufSBmcm9tIFwiLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH1cbiAgcmVhZG9ubHkgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfVxuICByZWFkb25seSBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfVxuICByZWFkb25seSBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbiAgcmVhZG9ubHkgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSByZXVuaW9uc0J5RGF5OiB7IFtkYXk6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9XG59XG5cbmNvbnN0IGRvY3VtZW50VWlkUmVnZXggPVxuICAvXihBQ0lOfEFMQ058QVZDRXxBVklTfERFQ0x8RVRESXxMRVRUfE1FU1N8UElPTnxQTlJFfFBSSkx8UkFQUHxSSU5GfFJJT04pKEFOfFNOKShSXFxkKylbTFNdKFxcZCspKEJ8QlRBfEJUQ3xUQVApKFxcZCspKC0uKik/JC9cbmNvbnN0IGRvc3NpZXJVaWRSZWdleCA9IC9eREwoUlxcZCspKExcXGQrKU4oXFxkKykkL1xuY29uc3QgcmV1bmlvblVpZFJlZ2V4ID1cbiAgL15SVShBTnxDR3xTTikoUlxcZCspKExcXGQrKShbQVNdXFxkezR9KShJREN8SURGTD98SURTKShcXGQrKSQvXG5jb25zdCBzY3J1dGluVWlkUmVnZXggPSAvXlZUQU4oUlxcZCspKExcXGQrKVYoXFxkKykkL1xuXG4vKiogTG9hZCBkYXRhIGZyb20gc3BsaXQgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7c2NydXRpbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgICBpZiAoc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9IHNjcnV0aW5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWN0ZXVyQnlVaWQsXG4gICAgYW1lbmRlbWVudEJ5VWlkLFxuICAgIGRvY3VtZW50QnlVaWQsXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkLFxuICAgIG9yZ2FuZUJ5VWlkLFxuICAgIHBob3RvQnlVaWQsXG4gICAgcmV1bmlvbkJ5VWlkLFxuICAgIHJldW5pb25zQnlEYXksXG4gICAgcmV1bmlvbnNCeURvc3NpZXJVaWQsXG4gICAgc2NydXRpbkJ5VWlkLFxuICB9XG59XG5cbi8qKiBMb2FkIGRhdGEgZnJvbSBiaWcgbW9ub2x5dGljIGZpbGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVEYXRhRnJvbUJpZ0ZpbGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogRGF0YSB7XG4gIGNvbnN0IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9ID0ge31cbiAgY29uc3Qgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFjdGV1cnNFdE9yZ2FuZXMgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIGFjdGV1cnNFdE9yZ2FuZXMuYWN0ZXVycykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIGFjdGV1cnNFdE9yZ2FuZXMub3JnYW5lcykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWdlbmRhcyA9IEFnZW5kYXNDb252ZXJ0LnRvQWdlbmRhcyhqc29uKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIGFnZW5kYXMucmV1bmlvbnMpIHtcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhbWVuZGVtZW50cyA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnRzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBhbWVuZGVtZW50cy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnQgb2YgdGV4dGVMZWdpc2xhdGlmLmFtZW5kZW1lbnRzKSB7XG4gICAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgZG9zc2llcnNMZWdpc2xhdGlmcyA9XG4gICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhqc29uKVxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLnRleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgZG9zc2llciBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLmRvc3NpZXJzUGFybGVtZW50YWlyZXMpIHtcbiAgICAgICAgY29uc3QgdGl0cmVEb3NzaWVyID0gZG9zc2llci50aXRyZURvc3NpZXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci5zZW5hdENoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIudGl0cmVDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5QaG90b3MpIHtcbiAgICBjb25zdCBwaG90b0J5VWlkID0ge31cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3Qgc2NydXRpbnMgPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGlucyhqc29uKVxuICAgICAgZm9yIChjb25zdCBzY3J1dGluIG9mIHNjcnV0aW5zLnNjcnV0aW5zKSB7XG4gICAgICAgIGlmIChzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID0gc2NydXRpblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RldXJCeVVpZCxcbiAgICBhbWVuZGVtZW50QnlVaWQsXG4gICAgZG9jdW1lbnRCeVVpZCxcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQsXG4gICAgb3JnYW5lQnlVaWQsXG4gICAgcGhvdG9CeVVpZCxcbiAgICByZXVuaW9uQnlVaWQsXG4gICAgcmV1bmlvbnNCeURheSxcbiAgICByZXVuaW9uc0J5RG9zc2llclVpZCxcbiAgICBzY3J1dGluQnlVaWQsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudFVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvY3VtZW50IFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBkb2N1bWVudFR5cGUgPSBwYXRoLmpvaW4oZG9jdW1lbnRzRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGNoYW1icmVEaXIgPSBwYXRoLmpvaW4oZG9jdW1lbnRUeXBlLCBtYXRjaCFbMl0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzNdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbNF0pXG4gIGNvbnN0IGV0YXREaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs1XSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbNl1cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4oZXRhdERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZChcbiAgZG9zc2llcnNEaXI6IHN0cmluZyxcbiAgdWlkOiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvc3NpZXJVaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBkb3NzaWVyIHBhcmxlbWVudGFpcmUgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oZG9zc2llcnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21SZXVuaW9uVWlkKHJldW5pb25zRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSByZXVuaW9uVWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgcmV1bmlvbiBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihyZXVuaW9uc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKGNoYW1icmVEaXIsIG1hdGNoIVsyXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzNdKVxuICBjb25zdCBzZXNzaW9uRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBtYXRjaCFbNF0pXG4gIGNvbnN0IGlkRGlyID0gcGF0aC5qb2luKHNlc3Npb25EaXIsIG1hdGNoIVs1XSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwMDAwXCIgKyBtYXRjaCFbNl1cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gOSlcbiAgY29uc3QgbnVtZXJvTWlsbGlvbnNEaXIgPSBwYXRoLmpvaW4oaWREaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKG51bWVyb01pbGxpb25zRGlyLCBudW1lcm8uc3Vic3RyKDMsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVNjcnV0aW5VaWQoc2NydXRpbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHNjcnV0aW5VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBzY3J1dGluIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKHNjcnV0aW5zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVsyXSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbM11cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsU0FBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksYUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssbUJBQUEsR0FBQUwsT0FBQTtBQU1BLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFlBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLHFCQUFBLEdBQUFSLE9BQUE7QUFLQSxJQUFBUyxhQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxTQUFBLEdBQUFWLE9BQUE7QUFBc0UsU0FBQUQsdUJBQUFZLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxnQkFBQUEsR0FBQTtBQUFBLFNBQUFFLG1CQUFBQyxHQUFBLFdBQUFDLGtCQUFBLENBQUFELEdBQUEsS0FBQUUsZ0JBQUEsQ0FBQUYsR0FBQSxLQUFBRywyQkFBQSxDQUFBSCxHQUFBLEtBQUFJLGtCQUFBO0FBQUEsU0FBQUEsbUJBQUEsY0FBQUMsU0FBQTtBQUFBLFNBQUFILGlCQUFBSSxJQUFBLGVBQUFDLE1BQUEsb0JBQUFELElBQUEsQ0FBQUMsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLElBQUEsK0JBQUFHLEtBQUEsQ0FBQUMsSUFBQSxDQUFBSixJQUFBO0FBQUEsU0FBQUwsbUJBQUFELEdBQUEsUUFBQVMsS0FBQSxDQUFBRSxPQUFBLENBQUFYLEdBQUEsVUFBQVksaUJBQUEsQ0FBQVosR0FBQTtBQUFBLFNB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
|
|
1638
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9hY3RldXJzX2V0X29yZ2FuZXMiLCJfYWdlbmRhcyIsIl9hbWVuZGVtZW50cyIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsIl9sZWdpc2xhdHVyZXMiLCJfc2NydXRpbnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImV4cG9ydHMiLCJPcCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093biIsImhhc093blByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJrZXkiLCJkZXNjIiwidmFsdWUiLCIkU3ltYm9sIiwiU3ltYm9sIiwiaXRlcmF0b3JTeW1ib2wiLCJpdGVyYXRvciIsImFzeW5jSXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWdTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImVyciIsIndyYXAiLCJpbm5lckZuIiwib3V0ZXJGbiIsInNlbGYiLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJmbiIsImFyZyIsInR5cGUiLCJjYWxsIiwiQ29udGludWVTZW50aW5lbCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldFByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsInZhbHVlcyIsIkdwIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIm1ldGhvZCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiUHJvbWlzZUltcGwiLCJpbnZva2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVjb3JkIiwicmVzdWx0IiwiX3R5cGVvZiIsIl9fYXdhaXQiLCJ0aGVuIiwidW53cmFwcGVkIiwiZXJyb3IiLCJwcmV2aW91c1Byb21pc2UiLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsInN0YXRlIiwiRXJyb3IiLCJkb25lUmVzdWx0IiwiZGVsZWdhdGUiLCJkZWxlZ2F0ZVJlc3VsdCIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsImRvbmUiLCJtZXRob2ROYW1lIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJlbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImlzTmFOIiwibGVuZ3RoIiwiaSIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsIml0ZXIiLCJrZXlzIiwidmFsIiwib2JqZWN0IiwicmV2ZXJzZSIsInBvcCIsInNraXBUZW1wUmVzZXQiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicm9vdFJlY29yZCIsInJ2YWwiLCJleGNlcHRpb24iLCJoYW5kbGUiLCJsb2MiLCJjYXVnaHQiLCJoYXNDYXRjaCIsImhhc0ZpbmFsbHkiLCJmaW5hbGx5RW50cnkiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsInRocm93biIsImRlbGVnYXRlWWllbGQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkYiLCJzIiwibiIsImUiLCJfZSIsImYiLCJub3JtYWxDb21wbGV0aW9uIiwiZGlkRXJyIiwic3RlcCIsIl9lMiIsIm1pbkxlbiIsInRvU3RyaW5nIiwidGVzdCIsImxlbiIsImFycjIiLCJkb2N1bWVudFVpZFJlZ2V4IiwiZG9zc2llclVpZFJlZ2V4IiwicmV1bmlvblVpZFJlZ2V4Iiwic2NydXRpblVpZFJlZ2V4IiwiaXRlckxvYWRBc3NlbWJsZWVBY3RldXJzIiwiZGF0YURpciIsImxlZ2lzbGF0dXJlIiwiX3JlZiIsImFyZ3VtZW50cyIsIl9yZWYkbG9nIiwibG9nIiwiX2NhbGxlZSIsImFjdGV1cnNVaWQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImRhdGFzZXQiLCJkYXRhc2V0RGlyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwiYWN0ZXVyRmlsZVBhdGgiLCJhY3RldXJKc29uIiwiYWN0ZXVyIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIlNldCIsImRhdGFzZXRzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsImlnbm9yZUZvcldlYiIsIkxlZ2lzbGF0dXJlIiwiQWxsIiwicGF0aCIsImpvaW4iLCJmaWxlbmFtZSIsInJlcGxhY2UiLCJ3YWxrRGlyIiwiZW5kc1dpdGgiLCJhcHBseSIsImNvbmNhdCIsImNvbnNvbGUiLCJmcyIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwiQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQiLCJ0b0FjdGV1ciIsImhhcyIsInVpZCIsImFkZCIsImRhdGFzZXRMZWdpc2xhdHVyZSIsInQwIiwidDEiLCJpdGVyTG9hZEFzc2VtYmxlZUFtZW5kZW1lbnRzIiwiX3JlZjIiLCJfcmVmMiRsb2ciLCJfY2FsbGVlMiIsImFtZW5kZW1lbnRzVWlkIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudEZpbGVQYXRoIiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiYW1lbmRlbWVudHMiLCJBbWVuZGVtZW50c0NvbnZlcnQiLCJ0b0FtZW5kZW1lbnQiLCJpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyIsIl9yZWYzIiwiX3JlZjMkbG9nIiwiX2NhbGxlZTMiLCJkb2N1bWVudHNVaWQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50RmlsZVBhdGgiLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsInRvRG9jdW1lbnQiLCJpdGVyTG9hZEFzc2VtYmxlZURvc3NpZXJzUGFybGVtZW50YWlyZXMiLCJfcmVmNCIsIl9yZWY0JGxvZyIsIl9jYWxsZWU0IiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlc1VpZCIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJfaXRlcmF0b3I4IiwiX3N0ZXA4IiwiZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lIiwiZG9zc2llclBhcmxlbWVudGFpcmVGaWxlUGF0aCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlSnNvbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlIiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsIml0ZXJMb2FkQXNzZW1ibGVlT3JnYW5lcyIsIl9yZWY1IiwiX3JlZjUkbG9nIiwiX2NhbGxlZTUiLCJvcmdhbmVzVWlkIiwiX2l0ZXJhdG9yOSIsIl9zdGVwOSIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lRmlsZVBhdGgiLCJvcmdhbmVKc29uIiwib3JnYW5lIiwiX2NhbGxlZTUkIiwiX2NvbnRleHQ1IiwidG9PcmdhbmUiLCJpdGVyTG9hZEFzc2VtYmxlZVJldW5pb25zIiwiX3JlZjYiLCJfcmVmNiRsb2ciLCJfY2FsbGVlNiIsInJldW5pb25zVWlkIiwiX2l0ZXJhdG9yMTEiLCJfc3RlcDExIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwicmV1bmlvblNwbGl0UGF0aCIsInJldW5pb25GaWxlbmFtZSIsInJldW5pb25GaWxlUGF0aCIsInJldW5pb25Kc29uIiwicmV1bmlvbiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsImFnZW5kYXMiLCJBZ2VuZGFzQ29udmVydCIsInRvUmV1bmlvbiIsIml0ZXJMb2FkQXNzZW1ibGVlU2NydXRpbnMiLCJfcmVmNyIsIl9yZWY3JGxvZyIsIl9jYWxsZWU3Iiwic2NydXRpbnNVaWQiLCJfaXRlcmF0b3IxMyIsIl9zdGVwMTMiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwiX2NhbGxlZTckIiwiX2NvbnRleHQ3Iiwic2NydXRpbnMiLCJTY3J1dGluc0NvbnZlcnQiLCJ0b1NjcnV0aW4iLCJsb2FkQXNzZW1ibGVlRGF0YSIsImVuYWJsZWREYXRhc2V0cyIsIl9yZWY4IiwiX3JlZjgkbG9nIiwiYWN0ZXVyQnlVaWQiLCJvcmdhbmVCeVVpZCIsIkVuYWJsZWREYXRhc2V0cyIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJfaXRlcmF0b3IxNSIsIl9zdGVwMTUiLCJfaXRlcmF0b3IxNiIsIl9zdGVwMTYiLCJfaXRlcmF0b3IxNyIsIl9zdGVwMTciLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uc0J5RGF5IiwicmV1bmlvbnNCeURvc3NpZXJVaWQiLCJBZ2VuZGFzIiwiX2l0ZXJhdG9yMTgiLCJfc3RlcDE4IiwiX2l0ZXJhdG9yMTkiLCJfc3RlcDE5IiwiZGF5IiwidGltZXN0YW1wRGVidXQiLCJ0b0lTT1N0cmluZyIsInNwbGl0IiwicmV1bmlvbnNBdERheSIsIm9kaiIsIl9pdGVyYXRvcjIwIiwicG9pbnRzT2RqIiwiX3N0ZXAyMCIsInBvaW50T2RqIiwiX2l0ZXJhdG9yMjEiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyIsIl9zdGVwMjEiLCJkb3NzaWVyTGVnaXNsYXRpZlJlZiIsInJldW5pb25zQXREb3NzaWVyVWlkIiwiYW1lbmRlbWVudEJ5VWlkIiwiQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IyMiIsIl9zdGVwMjIiLCJfaXRlcmF0b3IyMyIsIl9zdGVwMjMiLCJkb2N1bWVudEJ5VWlkIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3IyNCIsIl9zdGVwMjQiLCJfaXRlcmF0b3IyNSIsIl9zdGVwMjUiLCJfaXRlcmF0b3IyNiIsIl9zdGVwMjYiLCJkb3NzaWVyU3BsaXRQYXRoIiwiZG9zc2llckZpbGVuYW1lIiwiZG9zc2llckZpbGVQYXRoIiwiZG9zc2llckpzb24iLCJkb3NzaWVyIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJTZWl6ZSIsImV4aXN0c1N5bmMiLCJqc29uIiwiYXNzaWduIiwiSlNPTiIsInBhcnNlIiwic2NydXRpbkJ5VWlkIiwiU2NydXRpbnMiLCJfaXRlcmF0b3IyNyIsIl9zdGVwMjciLCJfaXRlcmF0b3IyOCIsIl9zdGVwMjgiLCJsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyIsIl9yZWY5IiwiX3JlZjkkbG9nIiwiX2l0ZXJhdG9yMjkiLCJfc3RlcDI5IiwidG9BY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMzAiLCJhY3RldXJzIiwiX3N0ZXAzMCIsIl9pdGVyYXRvcjMxIiwib3JnYW5lcyIsIl9zdGVwMzEiLCJfaXRlcmF0b3IzMiIsIl9zdGVwMzIiLCJ0b0FnZW5kYXMiLCJfaXRlcmF0b3IzMyIsInJldW5pb25zIiwiX3N0ZXAzMyIsIl9pdGVyYXRvcjM0IiwiX3N0ZXAzNCIsIl9pdGVyYXRvcjM1IiwiX3N0ZXAzNSIsIl9pdGVyYXRvcjM2IiwiX3N0ZXAzNiIsInRvQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IzNyIsInRleHRlc0xlZ2lzbGF0aWZzIiwiX3N0ZXAzNyIsInRleHRlTGVnaXNsYXRpZiIsIl9pdGVyYXRvcjM4IiwiX3N0ZXAzOCIsIl9pdGVyYXRvcjM5IiwiX3N0ZXAzOSIsInRvRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjQwIiwiX3N0ZXA0MCIsIl9pdGVyYXRvcjQxIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsIl9zdGVwNDEiLCJfaXRlcmF0b3I0MiIsIl9zdGVwNDIiLCJ0b1NjcnV0aW5zIiwiX2l0ZXJhdG9yNDMiLCJfc3RlcDQzIiwibG9hZEFzc2VtYmxlZVBob3Rvc0RlcHV0ZXMiLCJfcmVmMTAiLCJfcmVmMTAkbG9nIiwibG9hZEFzc2VtYmxlZVBob3Rvc1NlbmF0ZXVycyIsIl9yZWYxMSIsIl9yZWYxMSRsb2ciLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZG9jdW1lbnRzRGlyIiwibWF0Y2giLCJleGVjIiwiYXNzZXJ0Iiwibm90U3RyaWN0RXF1YWwiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlRGlyIiwicmVwdWJsaXF1ZURpciIsImxlZ2lzbGF0dXJlRGlyIiwiZXRhdERpciIsIm51bWVybyIsInN1YnN0ciIsIm51bWVyb01pbGxpZXJzRGlyIiwiZW5zdXJlRGlyU3luYyIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJkb3NzaWVyc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyBMb2FkIGRhdGEgZnJvbSBmaWxlc1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmV4cG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5leHBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG4gIFBob3RvLFxufSBmcm9tIFwiLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICByZWFkb25seSBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9XG4gIHJlYWRvbmx5IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuY29uc3QgZG9jdW1lbnRVaWRSZWdleCA9XG4gIC9eKEFDSU58QUxDTnxBVkNFfEFWSVN8REVDTHxFVERJfExFVFR8TUVTU3xQSU9OfFBOUkV8UFJKTHxSQVBQfFJJTkZ8UklPTikoQU58U04pKFJcXGQrKVtMU10oXFxkKykoQnxCVEF8QlRDfFRBUCkoXFxkKykoLS4qKT8kL1xuY29uc3QgZG9zc2llclVpZFJlZ2V4ID0gL15ETChSXFxkKykoTFxcZCspTihcXGQrKSQvXG5jb25zdCByZXVuaW9uVWlkUmVnZXggPVxuICAvXlJVKEFOfENHfFNOKShSXFxkKykoTFxcZCspKFtBU11cXGR7NH0pKElEQ3xJREZMP3xJRFMpKFxcZCspJC9cbmNvbnN0IHNjcnV0aW5VaWRSZWdleCA9IC9eVlRBTihSXFxkKykoTFxcZCspVihcXGQrKSQvXG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVBY3RldXJzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHsgYWN0ZXVyOiBBY3RldXI7IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IGFjdGV1cnNVaWQgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImFjdGV1cnNcIl0pKSB7XG4gICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FjdGV1ckZpbGVQYXRofeKApmApXG4gICAgICB9XG4gICAgICBjb25zdCBhY3RldXJKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYWN0ZXVyRmlsZVBhdGgsIHtcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGFjdGV1ciA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ckpzb24pXG4gICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgaWYgKGFjdGV1cnNVaWQuaGFzKGFjdGV1ci51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBhY3RldXJzVWlkLmFkZChhY3RldXIudWlkKVxuICAgICAgeWllbGQgeyBhY3RldXIsIGRhdGFzZXRMZWdpc2xhdHVyZTogZGF0YXNldC5sZWdpc2xhdHVyZSB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVBbWVuZGVtZW50cyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQ7IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IGFtZW5kZW1lbnRzVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgZGF0YURpcixcbiAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgIClcblxuICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5hbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgYW1lbmRlbWVudEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhbWVuZGVtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50KGFtZW5kZW1lbnRKc29uKVxuICAgICAgaWYgKGFtZW5kZW1lbnRzVWlkLmhhcyhhbWVuZGVtZW50LnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGFtZW5kZW1lbnRzVWlkLmFkZChhbWVuZGVtZW50LnVpZClcbiAgICAgIHlpZWxkIHsgYW1lbmRlbWVudCwgZGF0YXNldExlZ2lzbGF0dXJlOiBkYXRhc2V0LmxlZ2lzbGF0dXJlIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGRvY3VtZW50OiBEb2N1bWVudDsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgY29uc3QgZG9jdW1lbnRzVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImRvY3VtZW50c1wiXSkpIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRvY3VtZW50RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9jdW1lbnRTcGxpdFBhdGgpXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRGaWxlUGF0aCwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgICAgY29uc3QgZG9jdW1lbnQgPSBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgIGlmIChkb2N1bWVudHNVaWQuaGFzKGRvY3VtZW50LnVpZCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50c1VpZC5hZGQoZG9jdW1lbnQudWlkKVxuICAgICAgeWllbGQgeyBkb2N1bWVudCwgZGF0YXNldExlZ2lzbGF0dXJlOiBkYXRhc2V0LmxlZ2lzbGF0dXJlIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZURvc3NpZXJzUGFybGVtZW50YWlyZXMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAge1xuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICAgIGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmVcbiAgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGNvbnN0IGRvc3NpZXJzUGFybGVtZW50YWlyZXNVaWQgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1xuICAgICAgXCJkb3NzaWVyc1wiLFxuICAgIF0pKSB7XG4gICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lID1cbiAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGhbZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgIGlmICghZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhc2V0RGlyLFxuICAgICAgICAuLi5kb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVQYXRofeKApmApXG4gICAgICB9XG4gICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVGaWxlUGF0aCxcbiAgICAgICAge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlID1cbiAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUpzb24sXG4gICAgICAgIClcbiAgICAgIGlmIChkb3NzaWVyc1BhcmxlbWVudGFpcmVzVWlkLmhhcyhkb3NzaWVyUGFybGVtZW50YWlyZS51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBkb3NzaWVyc1BhcmxlbWVudGFpcmVzVWlkLmFkZChkb3NzaWVyUGFybGVtZW50YWlyZS51aWQpXG4gICAgICB5aWVsZCB7IGRvc3NpZXJQYXJsZW1lbnRhaXJlLCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlT3JnYW5lcyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IG9yZ2FuZTogT3JnYW5lOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCBvcmdhbmVzVWlkID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9yZ2FuZUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLm9yZ2FuZVNwbGl0UGF0aClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZUZpbGVQYXRoLCB7XG4gICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgIH0pXG4gICAgICBjb25zdCBvcmdhbmUgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZShvcmdhbmVKc29uKVxuICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgIGlmIChvcmdhbmVzVWlkLmhhcyhvcmdhbmUudWlkKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgb3JnYW5lc1VpZC5hZGQob3JnYW5lLnVpZClcbiAgICAgIHlpZWxkIHsgb3JnYW5lLCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlUmV1bmlvbnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAgeyByZXVuaW9uOiBSZXVuaW9uOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCByZXVuaW9uc1VpZCA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgZGF0YURpcixcbiAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgIClcblxuICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPSByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3JldW5pb25GaWxlUGF0aH3igKZgKVxuICAgICAgfVxuICAgICAgY29uc3QgcmV1bmlvbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhyZXVuaW9uRmlsZVBhdGgsIHtcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IHJldW5pb24gPSBBZ2VuZGFzQ29udmVydC50b1JldW5pb24ocmV1bmlvbkpzb24pXG4gICAgICBpZiAocmV1bmlvbnNVaWQuaGFzKHJldW5pb24udWlkKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgcmV1bmlvbnNVaWQuYWRkKHJldW5pb24udWlkKVxuICAgICAgeWllbGQgeyByZXVuaW9uLCBkYXRhc2V0TGVnaXNsYXR1cmU6IGRhdGFzZXQubGVnaXNsYXR1cmUgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlU2NydXRpbnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAgeyBzY3J1dGluOiBTY3J1dGluOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBjb25zdCBzY3J1dGluc1VpZCA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID0gc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBzY3J1dGluRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtzY3J1dGluRmlsZVBhdGh94oCmYClcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgIH0pXG4gICAgICBjb25zdCBzY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgIGlmIChzY3J1dGluc1VpZC5oYXMoc2NydXRpbi51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBzY3J1dGluc1VpZC5hZGQoc2NydXRpbi51aWQpXG4gICAgICB5aWVsZCB7IHNjcnV0aW4sIGRhdGFzZXRMZWdpc2xhdHVyZTogZGF0YXNldC5sZWdpc2xhdHVyZSB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBMb2FkIGRhdGEgZnJvbSBzcGxpdCBmaWxlcy5cbi8vLyBEZXByZWNhdGVkOiBVc2UgaXRlckxvYWQuLi4gaXRlcmF0b3JzIGluc3RlYWQuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7c2NydXRpbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgICBpZiAoc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9IHNjcnV0aW5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWN0ZXVyQnlVaWQsXG4gICAgYW1lbmRlbWVudEJ5VWlkLFxuICAgIGRvY3VtZW50QnlVaWQsXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkLFxuICAgIG9yZ2FuZUJ5VWlkLFxuICAgIHBob3RvQnlVaWQsXG4gICAgcmV1bmlvbkJ5VWlkLFxuICAgIHJldW5pb25zQnlEYXksXG4gICAgcmV1bmlvbnNCeURvc3NpZXJVaWQsXG4gICAgc2NydXRpbkJ5VWlkLFxuICB9XG59XG5cbi8vLyBMb2FkIGRhdGEgZnJvbSBiaWcgbW9ub2x5dGljIGZpbGVzLlxuLy8vIERlcHJlY2F0ZWQ6IEFzc2VtYmzDqWUgbmF0aW9uYWxlIG9wZW4gZGF0YSBubyBtb3JlIHVzZXMgbW9ub2x5dGljIGZpbGVzLlxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVEYXRhRnJvbUJpZ0ZpbGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogRGF0YSB7XG4gIGNvbnN0IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9ID0ge31cbiAgY29uc3Qgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFjdGV1cnNFdE9yZ2FuZXMgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIGFjdGV1cnNFdE9yZ2FuZXMuYWN0ZXVycykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIGFjdGV1cnNFdE9yZ2FuZXMub3JnYW5lcykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWdlbmRhcyA9IEFnZW5kYXNDb252ZXJ0LnRvQWdlbmRhcyhqc29uKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIGFnZW5kYXMucmV1bmlvbnMpIHtcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhbWVuZGVtZW50cyA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnRzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBhbWVuZGVtZW50cy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnQgb2YgdGV4dGVMZWdpc2xhdGlmLmFtZW5kZW1lbnRzKSB7XG4gICAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgZG9zc2llcnNMZWdpc2xhdGlmcyA9XG4gICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhqc29uKVxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLnRleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgZG9zc2llciBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLmRvc3NpZXJzUGFybGVtZW50YWlyZXMpIHtcbiAgICAgICAgY29uc3QgdGl0cmVEb3NzaWVyID0gZG9zc2llci50aXRyZURvc3NpZXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci5zZW5hdENoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIudGl0cmVDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5QaG90b3MpIHtcbiAgICBjb25zdCBwaG90b0J5VWlkID0ge31cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3Qgc2NydXRpbnMgPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGlucyhqc29uKVxuICAgICAgZm9yIChjb25zdCBzY3J1dGluIG9mIHNjcnV0aW5zLnNjcnV0aW5zKSB7XG4gICAgICAgIGlmIChzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID0gc2NydXRpblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RldXJCeVVpZCxcbiAgICBhbWVuZGVtZW50QnlVaWQsXG4gICAgZG9jdW1lbnRCeVVpZCxcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQsXG4gICAgb3JnYW5lQnlVaWQsXG4gICAgcGhvdG9CeVVpZCxcbiAgICByZXVuaW9uQnlVaWQsXG4gICAgcmV1bmlvbnNCeURheSxcbiAgICByZXVuaW9uc0J5RG9zc2llclVpZCxcbiAgICBzY3J1dGluQnlVaWQsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVQaG90b3NEZXB1dGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0ge1xuICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgfWAsXG4gICAgXCJkZXB1dGVzLmpzb25cIixcbiAgKVxuICBpZiAobG9nKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgfVxuICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICByZXR1cm4gSlNPTi5wYXJzZShqc29uKSBhcyB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVQaG90b3NTZW5hdGV1cnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0ge1xuICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgKVxuICBpZiAobG9nKSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgfVxuICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICByZXR1cm4gSlNPTi5wYXJzZShqc29uKSBhcyB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudFVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvY3VtZW50IFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBkb2N1bWVudFR5cGUgPSBwYXRoLmpvaW4oZG9jdW1lbnRzRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGNoYW1icmVEaXIgPSBwYXRoLmpvaW4oZG9jdW1lbnRUeXBlLCBtYXRjaCFbMl0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzNdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbNF0pXG4gIGNvbnN0IGV0YXREaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs1XSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbNl1cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4oZXRhdERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZChcbiAgZG9zc2llcnNEaXI6IHN0cmluZyxcbiAgdWlkOiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvc3NpZXJVaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBkb3NzaWVyIHBhcmxlbWVudGFpcmUgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oZG9zc2llcnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21SZXVuaW9uVWlkKHJldW5pb25zRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSByZXVuaW9uVWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgcmV1bmlvbiBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihyZXVuaW9uc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKGNoYW1icmVEaXIsIG1hdGNoIVsyXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzNdKVxuICBjb25zdCBzZXNzaW9uRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBtYXRjaCFbNF0pXG4gIGNvbnN0IGlkRGlyID0gcGF0aC5qb2luKHNlc3Npb25EaXIsIG1hdGNoIVs1XSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwMDAwXCIgKyBtYXRjaCFbNl1cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gOSlcbiAgY29uc3QgbnVtZXJvTWlsbGlvbnNEaXIgPSBwYXRoLmpvaW4oaWREaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKG51bWVyb01pbGxpb25zRGlyLCBudW1lcm8uc3Vic3RyKDMsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVNjcnV0aW5VaWQoc2NydXRpbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHNjcnV0aW5VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBzY3J1dGluIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKHNjcnV0aW5zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVsyXSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbM11cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLFNBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLGFBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLG1CQUFBLEdBQUFMLE9BQUE7QUFNQSxJQUFBTSxRQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxxQkFBQSxHQUFBUixPQUFBO0FBS0EsSUFBQVMsYUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsU0FBQSxHQUFBVixPQUFBO0FBQXNFLFNBQUFELHVCQUFBWSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsZ0JBQUFBLEdBQUE7QUFBQSxTQUFBRSxvQkFBQSxrQkF2QnRFLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxPQUFBLFNBQUFBLE9BQUEsT0FBQUMsRUFBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsTUFBQSxHQUFBSCxFQUFBLENBQUFJLGNBQUEsRUFBQUMsY0FBQSxHQUFBSixNQUFBLENBQUFJLGNBQUEsY0FBQVQsR0FBQSxFQUFBVSxHQUFBLEVBQUFDLElBQUEsSUFBQVgsR0FBQSxDQUFBVSxH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
|