@tricoteuses/assemblee 1.4.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/bugs/acteur-00010.js +3 -3
- package/lib/bugs/agenda-00002.js +3 -3
- package/lib/bugs/agenda-00002.mjs +2 -2
- package/lib/bugs/agenda-00008.js +3 -3
- package/lib/bugs/agenda-00011.js +3 -3
- package/lib/bugs/agenda-00011.mjs +2 -2
- package/lib/bugs.js +3 -3
- package/lib/bugs.mjs +2 -2
- package/lib/datasets.d.ts +1 -0
- package/lib/datasets.js +28 -3
- package/lib/datasets.mjs +14 -3
- package/lib/dossiers_legislatifs.js +1 -1
- package/lib/dossiers_legislatifs.mjs +1 -2
- package/lib/file_systems.js +32 -26
- package/lib/file_systems.mjs +6 -3
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.mjs +1 -1
- package/lib/inserters.js +1 -3
- package/lib/inserters.mjs +1 -3
- package/lib/loaders.js +2 -2
- package/lib/loaders.mjs +2 -2
- package/lib/parsers/documents.js +1 -2
- package/lib/parsers/documents.mjs +1 -2
- package/lib/raw_types/acteurs_et_organes.js +2 -2
- package/lib/raw_types/agendas.js +2 -2
- package/lib/raw_types/amendements.js +2 -2
- package/lib/raw_types/debats.d.ts +5 -4
- package/lib/raw_types/debats.js +11 -7
- package/lib/raw_types/debats.mjs +9 -5
- package/lib/raw_types/dossiers_legislatifs.d.ts +3 -0
- package/lib/raw_types/dossiers_legislatifs.js +9 -6
- package/lib/raw_types/dossiers_legislatifs.mjs +7 -4
- package/lib/raw_types/questions.d.ts +1 -1
- package/lib/raw_types/questions.js +4 -4
- package/lib/raw_types/questions.mjs +2 -2
- package/lib/raw_types/scrutins.js +2 -2
- package/lib/scripts/bugs_helper.js +3 -3
- package/lib/scripts/bugs_helper.mjs +2 -2
- package/lib/scripts/clean_reorganized_data.js +13 -42
- package/lib/scripts/clean_reorganized_data.mjs +8 -18
- package/lib/scripts/document_dossiers_legislatifs.js +3 -3
- package/lib/scripts/document_dossiers_legislatifs.mjs +2 -2
- package/lib/scripts/parse_textes_lois.js +2 -1
- package/lib/scripts/reorganize_data.js +17 -46
- package/lib/scripts/reorganize_data.mjs +8 -18
- package/lib/scripts/retrieve_open_data.js +5 -5
- package/lib/scripts/retrieve_open_data.mjs +4 -4
- package/lib/scripts/retrieve_senateurs_photos.js +1 -2
- package/lib/scripts/retrieve_senateurs_photos.mjs +1 -2
- package/lib/scripts/retrieve_textes_lois.js +3 -3
- package/lib/scripts/retrieve_textes_lois.mjs +1 -1
- package/lib/scripts/validate_json.js +3 -3
- package/lib/scripts/validate_json.mjs +2 -2
- package/lib/shared_types/codes_actes.d.ts +129 -342
- package/lib/shared_types/codes_actes.js +212 -243
- package/lib/shared_types/codes_actes.mjs +211 -224
- package/lib/types/acteurs_et_organes.d.ts +32 -32
- package/lib/types/acteurs_et_organes.js +3 -3
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.d.ts +5 -5
- package/lib/types/agendas.js +3 -3
- package/lib/types/agendas.mjs +1 -1
- package/lib/types/amendements.d.ts +1 -1
- package/lib/types/amendements.js +3 -3
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/debats.d.ts +5 -4
- package/lib/types/debats.js +11 -7
- package/lib/types/debats.mjs +9 -5
- package/lib/types/dossiers_legislatifs.d.ts +2 -0
- package/lib/types/dossiers_legislatifs.js +9 -10
- package/lib/types/dossiers_legislatifs.mjs +8 -9
- package/lib/types/questions.d.ts +1 -1
- package/lib/types/questions.js +4 -4
- package/lib/types/questions.mjs +2 -2
- package/lib/types/scrutins.js +3 -3
- package/lib/types/scrutins.mjs +1 -1
- package/package.json +2 -2
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
-
require("core-js/modules/es.array.
|
|
4
|
+
require("core-js/modules/es.array.slice.js");
|
|
5
|
+
require("core-js/modules/es.regexp.to-string.js");
|
|
6
|
+
require("core-js/modules/es.function.name.js");
|
|
7
|
+
require("core-js/modules/es.array.from.js");
|
|
8
|
+
require("core-js/modules/es.string.iterator.js");
|
|
5
9
|
require("core-js/modules/es.symbol.js");
|
|
6
10
|
require("core-js/modules/es.symbol.description.js");
|
|
7
11
|
require("core-js/modules/es.symbol.iterator.js");
|
|
8
12
|
require("core-js/modules/es.array.iterator.js");
|
|
9
|
-
require("core-js/modules/es.string.iterator.js");
|
|
10
13
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
11
|
-
require("core-js/modules/es.array.
|
|
12
|
-
require("core-js/modules/es.function.name.js");
|
|
13
|
-
require("core-js/modules/es.array.from.js");
|
|
14
|
+
require("core-js/modules/es.array.is-array.js");
|
|
14
15
|
require("core-js/modules/es.weak-map.js");
|
|
15
16
|
require("core-js/modules/es.object.define-property.js");
|
|
16
17
|
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
@@ -24,12 +25,6 @@ require("core-js/modules/es.string.trim.js");
|
|
|
24
25
|
require("core-js/modules/es.array.map.js");
|
|
25
26
|
require("core-js/modules/es.array.reduce.js");
|
|
26
27
|
require("core-js/modules/es.object.to-string.js");
|
|
27
|
-
require("core-js/modules/es.array.some.js");
|
|
28
|
-
require("core-js/modules/es.regexp.to-string.js");
|
|
29
|
-
require("core-js/modules/es.object.entries.js");
|
|
30
|
-
require("core-js/modules/es.array.filter.js");
|
|
31
|
-
require("core-js/modules/es.array.includes.js");
|
|
32
|
-
require("core-js/modules/es.string.includes.js");
|
|
33
28
|
require("core-js/modules/es.array.concat.js");
|
|
34
29
|
require("core-js/modules/es.array.join.js");
|
|
35
30
|
require("core-js/modules/es.string.ends-with.js");
|
|
@@ -48,7 +43,6 @@ var _acteurs_et_organes = require("../types/acteurs_et_organes");
|
|
|
48
43
|
var _agendas = require("../types/agendas");
|
|
49
44
|
var _amendements = require("../types/amendements");
|
|
50
45
|
var _dossiers_legislatifs = require("../types/dossiers_legislatifs");
|
|
51
|
-
var _legislatures = require("../types/legislatures");
|
|
52
46
|
var _scrutins = require("../types/scrutins");
|
|
53
47
|
var _questions = require("../types/questions");
|
|
54
48
|
var _debats = require("../types/debats");
|
|
@@ -60,12 +54,8 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
|
|
|
60
54
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
61
55
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
62
56
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
63
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
64
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
65
57
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
66
58
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
67
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
68
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
69
59
|
function parseArgs(argv) {
|
|
70
60
|
var optionsDefinitions = [{
|
|
71
61
|
alias: "C",
|
|
@@ -132,7 +122,6 @@ function parseArgs(argv) {
|
|
|
132
122
|
return options;
|
|
133
123
|
}
|
|
134
124
|
function cleanReorganizedData(options) {
|
|
135
|
-
var _options$legislature;
|
|
136
125
|
var dataDir = options.dataDir;
|
|
137
126
|
Date.prototype.toJSON = _dates.patchedDateToJson;
|
|
138
127
|
var exitCode = 10; // Nothing to commit
|
|
@@ -143,27 +132,9 @@ function cleanReorganizedData(options) {
|
|
|
143
132
|
var enabledDatasets = options.categories.reduce(function (enabledDatasets, datasetName) {
|
|
144
133
|
return enabledDatasets | _datasets.EnabledDatasets[datasetName];
|
|
145
134
|
}, _datasets.EnabledDatasets.None);
|
|
146
|
-
var
|
|
147
|
-
// When a given legislature is 0, it is the same as giving no legislature:
|
|
148
|
-
// It means "every legislatures".
|
|
149
|
-
var legislatures = (_options$legislature = options.legislature) !== null && _options$legislature !== void 0 && _options$legislature.some(function (legislature) {
|
|
150
|
-
return legislature === 0;
|
|
151
|
-
}) ? undefined : options.legislature;
|
|
152
|
-
if (legislatures !== undefined) {
|
|
153
|
-
var enabledLegislatures = legislatures.map(function (legislature) {
|
|
154
|
-
return legislature.toString();
|
|
155
|
-
});
|
|
156
|
-
for (var _i = 0, _Object$entries = Object.entries(choosenDatasets); _i < _Object$entries.length; _i++) {
|
|
157
|
-
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
158
|
-
key = _Object$entries$_i[0],
|
|
159
|
-
value = _Object$entries$_i[1];
|
|
160
|
-
choosenDatasets[key] = value.filter(function (dataset) {
|
|
161
|
-
return dataset.legislature === _legislatures.Legislature.All || enabledLegislatures.includes(dataset.legislature);
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
135
|
+
var chosenDatasets = (0, _datasets.filterByLegislature)(_datasets.datasets, options.legislature);
|
|
165
136
|
if (enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes) {
|
|
166
|
-
var _iterator = _createForOfIteratorHelper(
|
|
137
|
+
var _iterator = _createForOfIteratorHelper(chosenDatasets.acteursEtOrganes),
|
|
167
138
|
_step;
|
|
168
139
|
try {
|
|
169
140
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -282,7 +253,7 @@ function cleanReorganizedData(options) {
|
|
|
282
253
|
}
|
|
283
254
|
}
|
|
284
255
|
if (enabledDatasets & _datasets.EnabledDatasets.Agendas) {
|
|
285
|
-
var _iterator4 = _createForOfIteratorHelper(
|
|
256
|
+
var _iterator4 = _createForOfIteratorHelper(chosenDatasets.agendas),
|
|
286
257
|
_step4;
|
|
287
258
|
try {
|
|
288
259
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
@@ -353,7 +324,7 @@ function cleanReorganizedData(options) {
|
|
|
353
324
|
}
|
|
354
325
|
}
|
|
355
326
|
if (enabledDatasets & _datasets.EnabledDatasets.Amendements) {
|
|
356
|
-
var _iterator6 = _createForOfIteratorHelper(
|
|
327
|
+
var _iterator6 = _createForOfIteratorHelper(chosenDatasets.amendements),
|
|
357
328
|
_step6;
|
|
358
329
|
try {
|
|
359
330
|
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
@@ -424,7 +395,7 @@ function cleanReorganizedData(options) {
|
|
|
424
395
|
}
|
|
425
396
|
}
|
|
426
397
|
if (enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs) {
|
|
427
|
-
var _iterator8 = _createForOfIteratorHelper(
|
|
398
|
+
var _iterator8 = _createForOfIteratorHelper(chosenDatasets.dossiersLegislatifs),
|
|
428
399
|
_step8;
|
|
429
400
|
try {
|
|
430
401
|
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
@@ -529,7 +500,7 @@ function cleanReorganizedData(options) {
|
|
|
529
500
|
}
|
|
530
501
|
}
|
|
531
502
|
if (enabledDatasets & _datasets.EnabledDatasets.Scrutins) {
|
|
532
|
-
var _iterator11 = _createForOfIteratorHelper(
|
|
503
|
+
var _iterator11 = _createForOfIteratorHelper(chosenDatasets.scrutins),
|
|
533
504
|
_step11;
|
|
534
505
|
try {
|
|
535
506
|
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
|
|
@@ -801,4 +772,4 @@ function main(argv) {
|
|
|
801
772
|
|
|
802
773
|
/* istanbul ignore if */
|
|
803
774
|
if (process.argv[1].endsWith("clean_reorganized_data.ts")) process.exit(main(process.argv));
|
|
804
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2NsZWFuZXJzIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiX2ZpbGVfc3lzdGVtcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX2xlZ2lzbGF0dXJlcyIsIl9zY3J1dGlucyIsIl9xdWVzdGlvbnMiLCJfZGViYXRzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib2JqIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIml0ZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwibyIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJsZW5ndGgiLCJGIiwicyIsImRvbmUiLCJ2YWx1ZSIsIl9lIiwiZiIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJlcnIiLCJzdGVwIiwibmV4dCIsIl9lMiIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsIm1pbkxlbiIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibGVuIiwiYXJyMiIsImwiLCJwdXNoIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJOdW1iZXIiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiX29wdGlvbnMkbGVnaXNsYXR1cmUiLCJkYXRhRGlyIiwiRGF0ZSIsInRvSlNPTiIsInBhdGNoZWREYXRlVG9Kc29uIiwiZXhpdENvZGUiLCJnaXRHcm91cFVybCIsImNsb25lIiwidHJpbSIsInJlcGxhY2UiLCJ1bmRlZmluZWQiLCJjYXRlZ29yaWVzIiwibWFwIiwiZGF0YXNldE5hbWUiLCJhc3NlcnQiLCJub3RTdHJpY3RFcXVhbCIsIkVuYWJsZWREYXRhc2V0cyIsImNvbmNhdCIsImVuYWJsZWREYXRhc2V0cyIsInJlZHVjZSIsIk5vbmUiLCJjaG9vc2VuRGF0YXNldHMiLCJkYXRhc2V0cyIsImxlZ2lzbGF0dXJlcyIsImxlZ2lzbGF0dXJlIiwic29tZSIsImVuYWJsZWRMZWdpc2xhdHVyZXMiLCJfaSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJrZXkiLCJmaWx0ZXIiLCJkYXRhc2V0IiwiTGVnaXNsYXR1cmUiLCJBbGwiLCJpbmNsdWRlcyIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJfaXRlcmF0b3IiLCJhY3RldXJzRXRPcmdhbmVzIiwiX3N0ZXAiLCJwYXRoIiwiYmFzZW5hbWUiLCJmaWxlbmFtZSIsImV4ZWNTeW5jIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJkYXRhc2V0UmF3RGlyIiwiam9pbiIsImRhdGFzZXRDbGVhbkRpciIsInB1bGwiLCJhbmFseXplQW5kUmVtb3ZlIiwiX2l0ZXJhdG9yMiIsIndhbGtEaXIiLCJfc3RlcDIiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImVuZHNXaXRoIiwiYWN0ZXVyUmF3RmlsZVBhdGgiLCJhcHBseSIsInZlcmJvc2UiLCJjb25zb2xlIiwibG9nIiwiYWN0ZXVyUmF3SnNvbiIsImZzIiwicmVhZEZpbGVTeW5jIiwiYWN0ZXVyIiwiSlNPTiIsInBhcnNlIiwiY2xlYW5BY3RldXIiLCJhY3RldXJKc29uIiwic3RyaW5naWZ5IiwiYWN0ZXVyQ2xlYW4iLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsInRvQWN0ZXVyIiwiYWN0ZXVyQ2xlYW5Kc29uIiwiYWN0ZXVyVG9Kc29uIiwiYWN0ZXVyQ2xlYW5GaWxlUGF0aCIsImVuc3VyZURpclN5bmMiLCJkaXJuYW1lIiwid3JpdGVGaWxlU3luYyIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJvcmdhbmVTcGxpdFBhdGgiLCJvcmdhbmVGaWxlbmFtZSIsIm9yZ2FuZVJhd0ZpbGVQYXRoIiwib3JnYW5lUmF3SnNvbiIsIm9yZ2FuZSIsImNsZWFuT3JnYW5lIiwib3JnYW5lSnNvbiIsIm9yZ2FuZUNsZWFuIiwidG9PcmdhbmUiLCJvcmdhbmVDbGVhbkpzb24iLCJvcmdhbmVUb0pzb24iLCJvcmdhbmVDbGVhbkZpbGVQYXRoIiwiY29tbWl0IiwiZXJyb3JDb2RlIiwiY29tbWl0QW5kUHVzaCIsInJlbW90ZSIsImNvbW1pdEFuZFB1c2hVaWQiLCJBZ2VuZGFzIiwiX2l0ZXJhdG9yNCIsImFnZW5kYXMiLCJfc3RlcDQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwicmV1bmlvblNwbGl0UGF0aCIsInJldW5pb25GaWxlbmFtZSIsInJldW5pb25SYXdGaWxlUGF0aCIsInJldW5pb25SYXdKc29uIiwicmV1bmlvbiIsImNsZWFuUmV1bmlvbiIsInJldW5pb25Kc29uIiwicmV1bmlvbkNsZWFuIiwiQWdlbmRhc0NvbnZlcnQiLCJ0b1JldW5pb24iLCJyZXVuaW9uQ2xlYW5Kc29uIiwicmV1bmlvblRvSnNvbiIsInJldW5pb25DbGVhbkZpbGVQYXRoIiwiQW1lbmRlbWVudHMiLCJfaXRlcmF0b3I2IiwiYW1lbmRlbWVudHMiLCJfc3RlcDYiLCJfaXRlcmF0b3I3IiwiX3N0ZXA3IiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImFtZW5kZW1lbnRSYXdGaWxlUGF0aCIsImFtZW5kZW1lbnRSYXdKc29uIiwiYW1lbmRlbWVudCIsImNsZWFuQW1lbmRlbWVudCIsImFtZW5kZW1lbnRKc29uIiwiYW1lbmRlbWVudENsZWFuIiwiQW1lbmRlbWVudHNDb252ZXJ0IiwidG9BbWVuZGVtZW50IiwiYW1lbmRlbWVudENsZWFuSnNvbiIsImFtZW5kZW1lbnRUb0pzb24iLCJhbWVuZGVtZW50Q2xlYW5GaWxlUGF0aCIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3I4IiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsIl9zdGVwOCIsIl9pdGVyYXRvcjkiLCJfc3RlcDkiLCJkb2N1bWVudFNwbGl0UGF0aCIsImRvY3VtZW50RmlsZW5hbWUiLCJkb2N1bWVudFJhd0ZpbGVQYXRoIiwiZG9jdW1lbnRSYXdKc29uIiwiZG9jdW1lbnQiLCJjbGVhbkRvY3VtZW50T3JEaXZpc2lvbiIsImRvY3VtZW50SnNvbiIsImRvY3VtZW50Q2xlYW4iLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsInRvRG9jdW1lbnQiLCJkb2N1bWVudENsZWFuSnNvbiIsImRvY3VtZW50VG9Kc29uIiwiZG9jdW1lbnRDbGVhbkZpbGVQYXRoIiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwiZG9zc2llclNwbGl0UGF0aCIsImRvc3NpZXJGaWxlbmFtZSIsImRvc3NpZXJSYXdGaWxlUGF0aCIsImRvc3NpZXJSYXdKc29uIiwiZG9zc2llciIsImNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUiLCJkb3NzaWVySnNvbiIsImRvc3NpZXJDbGVhbiIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJkb3NzaWVyQ2xlYW5Kc29uIiwiZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24iLCJkb3NzaWVyQ2xlYW5GaWxlUGF0aCIsIlNjcnV0aW5zIiwiX2l0ZXJhdG9yMTEiLCJzY3J1dGlucyIsIl9zdGVwMTEiLCJfaXRlcmF0b3IxMiIsIl9zdGVwMTIiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpblJhd0ZpbGVQYXRoIiwic2NydXRpblJhd0pzb24iLCJzY3J1dGluIiwiY2xlYW5TY3J1dGluIiwic2NydXRpbkpzb24iLCJzY3J1dGluQ2xlYW4iLCJTY3J1dGluc0NvbnZlcnQiLCJ0b1NjcnV0aW4iLCJzY3J1dGluQ2xlYW5Kc29uIiwic2NydXRpblRvSnNvbiIsInNjcnV0aW5DbGVhbkZpbGVQYXRoIiwiUXVlc3Rpb25zIiwiX2l0ZXJhdG9yMTMiLCJxdWVzdGlvbnMiLCJfc3RlcDEzIiwiX2l0ZXJhdG9yMTQiLCJfc3RlcDE0IiwicXVlc3Rpb25zU3BsaXRQYXRoIiwicXVlc3Rpb25GaWxlbmFtZSIsInF1ZXN0aW9uUmF3RmlsZVBhdGgiLCJxdWVzdGlvblJhd0pzb24iLCJxdWVzdGlvbiIsImNsZWFuUXVlc3Rpb24iLCJxdWVzdGlvbkpzb24iLCJxdWVzdGlvbkNsZWFuIiwiUXVlc3Rpb25zQ29udmVydCIsInRvUXVlc3Rpb24iLCJxdWVzdGlvbkNsZWFuSnNvbiIsInF1ZXN0aW9uVG9Kc29uIiwicXVlc3Rpb25DbGVhbkZpbGVQYXRoIiwiQ29tcHRlc1JlbmR1c1NlYW5jZXMiLCJfaXRlcmF0b3IxNSIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX3N0ZXAxNSIsIl9pdGVyYXRvcjE2IiwiX3N0ZXAxNiIsImNvbXB0ZXNSZW5kdXNTcGxpdFBhdGgiLCJjb21wdGVSZW5kdUZpbGVuYW1lIiwiY29tcHRlUmVuZHVSYXdGaWxlUGF0aCIsImNvbXB0ZVJlbmR1UmF3SnNvbiIsImNvbXB0ZVJlbmR1IiwiY2xlYW5Db21wdGVSZW5kdSIsImNvbXB0ZVJlbmR1SnNvbiIsImNvbXB0ZVJlbmR1Q2xlYW4iLCJDb21wdGVzUmVuZHVzQ29udmVydCIsInRvQ29tcHRlUmVuZHUiLCJjb21wdGVSZW5kdUNsZWFuSnNvbiIsImNvbXB0ZVJlbmR1VG9Kc29uIiwiY29tcHRlUmVuZHVDbGVhbkZpbGVQYXRoIiwiZXhpc3RpbmdEYXRlVG9Kc29uIiwic2lsZW50IiwiX2l0ZXJhdG9yMTciLCJyZWFkZGlyU3luYyIsIl9zdGVwMTciLCJwYXRobmFtZSIsInJlbW92ZVN5bmMiLCJyZXBvc2l0b3J5RGlyIiwic3ViZGlyZWN0b3JpZXMiLCJlcnJvciIsInVpZEJyYW5jaFVwZGF0ZSIsIl9pdGVyYXRvcjE4IiwiX3N0ZXAxOCIsInJ1biIsImNoaWxkUHJvY2VzcyIsIm1haW4iLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvY2xlYW5fcmVvcmdhbml6ZWRfZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHtcbiAgY2xlYW5BY3RldXIsXG4gIGNsZWFuQW1lbmRlbWVudCxcbiAgY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24sXG4gIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUsXG4gIGNsZWFuT3JnYW5lLFxuICBjbGVhblJldW5pb24sXG4gIGNsZWFuU2NydXRpbixcbiAgY2xlYW5RdWVzdGlvbixcbiAgY2xlYW5Db21wdGVSZW5kdSxcbn0gZnJvbSBcIi4uL2NsZWFuZXJzXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZXhpc3RpbmdEYXRlVG9Kc29uLCBwYXRjaGVkRGF0ZVRvSnNvbiB9IGZyb20gXCIuLi9kYXRlc1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQsXG4gIE9yZ2FuZSxcbn0gZnJvbSBcIi4uL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNDb252ZXJ0LCBSZXVuaW9uIH0gZnJvbSBcIi4uL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCxcbiAgRG9jdW1lbnQsXG4gIERvc3NpZXJQYXJsZW1lbnRhaXJlLFxufSBmcm9tIFwiLi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4uL3R5cGVzL3NjcnV0aW5zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgUXVlc3Rpb25zQ29udmVydCwgUXVlc3Rpb24gfSBmcm9tIFwiLi4vdHlwZXMvcXVlc3Rpb25zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQ29tcHRlc1JlbmR1c0NvbnZlcnQsIENvbXB0ZVJlbmR1IH0gZnJvbSBcIi4uL3R5cGVzL2RlYmF0c1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICB7XG4gICAgICBhbGlhczogXCJDXCIsXG4gICAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICAgIG5hbWU6IFwiY2xvbmVcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImNcIixcbiAgICAgIGhlbHA6IFwiY29tbWl0IGNsZWFuIGZpbGVzXCIsXG4gICAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImRcIixcbiAgICAgIGhlbHA6IFwic2luZ2xlIGRhdGFzZXQgdG8gcmVvcmdhbml6ZVwiLFxuICAgICAgbmFtZTogXCJkYXRhc2V0XCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJrXCIsXG4gICAgICBkZWZhdWx0VmFsdWU6IFtcIkFsbFwiXSxcbiAgICAgIGhlbHA6IFwiY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZW9yZ2FuaXplXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiY2F0ZWdvcmllc1wiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwibFwiLFxuICAgICAgaGVscDogXCJsZWdpc2xhdHVyZXMgb2YgY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZXRyaWV2ZTsgbGVhdmUgZW1wdHkgb3IgdXNlIDAgZm9yIGFsbFwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImxlZ2lzbGF0dXJlXCIsXG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJwXCIsXG4gICAgICBoZWxwOiBcInB1bGwgcmVwb3NpdG9yaWVzIGJlZm9yZSBwcm9jZWVkaW5nXCIsXG4gICAgICBuYW1lOiBcInB1bGxcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJyXCIsXG4gICAgICBoZWxwOiBcInB1c2ggY29tbWl0IHRvIGdpdmVuIHJlbW90ZVwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwic1wiLFxuICAgICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJkbyBub3QgcmVzZXQgLS1oYXJkIGFmdGVyIGNvbW1pdCB0byBzYXZlIEkvTyBpZiB0aGUgd29ya2luZyB0cmVlIGlzIHRvIGJlIGRpc2NhcmRlZFwiLFxuICAgICAgbmFtZTogXCJuby1yZXNldC1hZnRlci1jb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJ2XCIsXG4gICAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBjbGVhblJlb3JnYW5pemVkRGF0YShvcHRpb25zOiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBkYXRhRGlyOiBzdHJpbmcgPSBvcHRpb25zLmRhdGFEaXJcblxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuXG4gIGxldCBleGl0Q29kZSA9IDEwIC8vIE5vdGhpbmcgdG8gY29tbWl0XG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZVxuICAgID8gb3B0aW9ucy5jbG9uZS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICAgIDogdW5kZWZpbmVkXG5cbiAgb3B0aW9ucy5jYXRlZ29yaWVzLm1hcCgoZGF0YXNldE5hbWU6IHN0cmluZykgPT5cbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYFVua25vd24gbmFtZSBvZiBkYXRhc2V0OiAke2RhdGFzZXROYW1lfWAsXG4gICAgKSxcbiAgKVxuICBjb25zdCBlbmFibGVkRGF0YXNldHMgPSBvcHRpb25zLmNhdGVnb3JpZXMucmVkdWNlKFxuICAgIChlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cywgZGF0YXNldE5hbWU6IHN0cmluZyk6IEVuYWJsZWREYXRhc2V0cyA9PlxuICAgICAgZW5hYmxlZERhdGFzZXRzIHxcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgRW5hYmxlZERhdGFzZXRzLk5vbmUsXG4gIClcblxuICBsZXQgY2hvb3NlbkRhdGFzZXRzID0gZGF0YXNldHNcbiAgLy8gV2hlbiBhIGdpdmVuIGxlZ2lzbGF0dXJlIGlzIDAsIGl0IGlzIHRoZSBzYW1lIGFzIGdpdmluZyBubyBsZWdpc2xhdHVyZTpcbiAgLy8gSXQgbWVhbnMgXCJldmVyeSBsZWdpc2xhdHVyZXNcIi5cbiAgY29uc3QgbGVnaXNsYXR1cmVzID0gb3B0aW9ucy5sZWdpc2xhdHVyZT8uc29tZShcbiAgICAobGVnaXNsYXR1cmU6IG51bWJlcikgPT4gbGVnaXNsYXR1cmUgPT09IDAsXG4gIClcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogb3B0aW9ucy5sZWdpc2xhdHVyZVxuICBpZiAobGVnaXNsYXR1cmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBlbmFibGVkTGVnaXNsYXR1cmVzID0gbGVnaXNsYXR1cmVzLm1hcCgobGVnaXNsYXR1cmU6IG51bWJlcikgPT5cbiAgICAgIGxlZ2lzbGF0dXJlLnRvU3RyaW5nKCksXG4gICAgKVxuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjaG9vc2VuRGF0YXNldHMpKSB7XG4gICAgICBjaG9vc2VuRGF0YXNldHNba2V5IGFzIGtleW9mIHR5cGVvZiBjaG9vc2VuRGF0YXNldHNdID0gdmFsdWUuZmlsdGVyKFxuICAgICAgICAoZGF0YXNldDogeyBsZWdpc2xhdHVyZTogYW55IH0pID0+XG4gICAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsIHx8XG4gICAgICAgICAgZW5hYmxlZExlZ2lzbGF0dXJlcy5pbmNsdWRlcyhkYXRhc2V0LmxlZ2lzbGF0dXJlKSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBpZiAob3B0aW9ucy5wdWxsKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbi9tYXN0ZXJgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgICBleGVjU3luYyhgZ2l0IHB1bGwgLS1yZWJhc2VgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJhY3RldXJzXCJdKSkge1xuICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJSYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5hY3RldXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2FjdGV1clJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGFjdGV1clJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhY3RldXIgPSBKU09OLnBhcnNlKGFjdGV1clJhd0pzb24pXG4gICAgICAgIGNsZWFuQWN0ZXVyKGFjdGV1cilcbiAgICAgICAgY29uc3QgYWN0ZXVySnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoYWN0ZXVyLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBhY3RldXJDbGVhbjogQWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgY29uc3QgYWN0ZXVyQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LmFjdGV1clRvSnNvbihhY3RldXJDbGVhbilcblxuICAgICAgICBjb25zdCBhY3RldXJDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmFjdGV1clNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShhY3RldXJDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhhY3RldXJDbGVhbkZpbGVQYXRoLCBhY3RldXJDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtvcmdhbmVSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZVJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gSlNPTi5wYXJzZShvcmdhbmVSYXdKc29uKVxuICAgICAgICBjbGVhbk9yZ2FuZShvcmdhbmUpXG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KG9yZ2FuZSwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3Qgb3JnYW5lQ2xlYW46IE9yZ2FuZSA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvT3JnYW5lKG9yZ2FuZUpzb24pXG4gICAgICAgIGNvbnN0IG9yZ2FuZUNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBY3RldXJzRXRPcmdhbmVzQ29udmVydC5vcmdhbmVUb0pzb24ob3JnYW5lQ2xlYW4pXG5cbiAgICAgICAgY29uc3Qgb3JnYW5lQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5vcmdhbmVTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUob3JnYW5lQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMob3JnYW5lQ2xlYW5GaWxlUGF0aCwgb3JnYW5lQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCJhY3RldXJzXCIsIFwib3JnYW5lc1wiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25SYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtyZXVuaW9uUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25SYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEpTT04ucGFyc2UocmV1bmlvblJhd0pzb24pXG4gICAgICAgIGNsZWFuUmV1bmlvbihyZXVuaW9uKVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocmV1bmlvbiwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgcmV1bmlvbkNsZWFuOiBSZXVuaW9uID0gQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25Kc29uKVxuICAgICAgICBjb25zdCByZXVuaW9uQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFnZW5kYXNDb252ZXJ0LnJldW5pb25Ub0pzb24ocmV1bmlvbkNsZWFuKVxuXG4gICAgICAgIGNvbnN0IHJldW5pb25DbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLnJldW5pb25TcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUocmV1bmlvbkNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHJldW5pb25DbGVhbkZpbGVQYXRoLCByZXVuaW9uQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRSYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7YW1lbmRlbWVudFJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudFJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICBhbWVuZGVtZW50UmF3RmlsZVBhdGgsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudCA9IEpTT04ucGFyc2UoYW1lbmRlbWVudFJhd0pzb24pXG4gICAgICAgIGNsZWFuQW1lbmRlbWVudChhbWVuZGVtZW50KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50SnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoYW1lbmRlbWVudCwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudENsZWFuOiBBbWVuZGVtZW50ID1cbiAgICAgICAgICBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50KGFtZW5kZW1lbnRKc29uKVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50Q2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFtZW5kZW1lbnRzQ29udmVydC5hbWVuZGVtZW50VG9Kc29uKGFtZW5kZW1lbnRDbGVhbilcblxuICAgICAgICBjb25zdCBhbWVuZGVtZW50Q2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhhbWVuZGVtZW50Q2xlYW5GaWxlUGF0aCwgYW1lbmRlbWVudENsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcImRvY3VtZW50c1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9IGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudFJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4uZG9jdW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7ZG9jdW1lbnRSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50UmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50UmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gSlNPTi5wYXJzZShkb2N1bWVudFJhd0pzb24pXG4gICAgICAgIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uKGRvY3VtZW50KVxuICAgICAgICBjb25zdCBkb2N1bWVudEpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGRvY3VtZW50LCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBkb2N1bWVudENsZWFuOiBEb2N1bWVudCA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LmRvY3VtZW50VG9Kc29uKGRvY3VtZW50Q2xlYW4pXG5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmRvY3VtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGRvY3VtZW50Q2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZG9jdW1lbnRDbGVhbkZpbGVQYXRoLCBkb2N1bWVudENsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7ZG9zc2llclJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llclJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPSBKU09OLnBhcnNlKGRvc3NpZXJSYXdKc29uKVxuICAgICAgICBjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlKGRvc3NpZXIpXG4gICAgICAgIGNvbnN0IGRvc3NpZXJKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShkb3NzaWVyLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBkb3NzaWVyQ2xlYW46IERvc3NpZXJQYXJsZW1lbnRhaXJlID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKGRvc3NpZXJKc29uKVxuICAgICAgICBjb25zdCBkb3NzaWVyQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LmRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uKGRvc3NpZXJDbGVhbilcblxuICAgICAgICBjb25zdCBkb3NzaWVyQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5kb3NzaWVyU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGRvc3NpZXJDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkb3NzaWVyQ2xlYW5GaWxlUGF0aCwgZG9zc2llckNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiZG9jdW1lbnRzXCIsIFwiZG9zc2llcnNcIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBzY3J1dGluU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID0gc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5SYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5zY3J1dGluU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtzY3J1dGluUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHNjcnV0aW5SYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IEpTT04ucGFyc2Uoc2NydXRpblJhd0pzb24pXG4gICAgICAgIGNsZWFuU2NydXRpbihzY3J1dGluKVxuICAgICAgICBjb25zdCBzY3J1dGluSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoc2NydXRpbiwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3Qgc2NydXRpbkNsZWFuOiBTY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgY29uc3Qgc2NydXRpbkNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBTY3J1dGluc0NvbnZlcnQuc2NydXRpblRvSnNvbihzY3J1dGluQ2xlYW4pXG5cbiAgICAgICAgY29uc3Qgc2NydXRpbkNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uc2NydXRpblNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShzY3J1dGluQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoc2NydXRpbkNsZWFuRmlsZVBhdGgsIHNjcnV0aW5DbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5RdWVzdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMucXVlc3Rpb25zKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgcXVlc3Rpb25zU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25GaWxlbmFtZSA9XG4gICAgICAgICAgcXVlc3Rpb25zU3BsaXRQYXRoW3F1ZXN0aW9uc1NwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXF1ZXN0aW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlc3Rpb25SYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLnF1ZXN0aW9uc1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtxdWVzdGlvblJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlc3Rpb25SYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocXVlc3Rpb25SYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBKU09OLnBhcnNlKHF1ZXN0aW9uUmF3SnNvbilcbiAgICAgICAgY2xlYW5RdWVzdGlvbihxdWVzdGlvbilcbiAgICAgICAgY29uc3QgcXVlc3Rpb25Kc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShxdWVzdGlvbiwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgcXVlc3Rpb25DbGVhbjogUXVlc3Rpb24gPVxuICAgICAgICAgIFF1ZXN0aW9uc0NvbnZlcnQudG9RdWVzdGlvbihxdWVzdGlvbkpzb24pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIFF1ZXN0aW9uc0NvbnZlcnQucXVlc3Rpb25Ub0pzb24ocXVlc3Rpb25DbGVhbilcblxuICAgICAgICBjb25zdCBxdWVzdGlvbkNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4ucXVlc3Rpb25zU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKHF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocXVlc3Rpb25DbGVhbkZpbGVQYXRoLCBxdWVzdGlvbkNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIueG1sXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBjb21wdGVzUmVuZHVzU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVGaWxlbmFtZSA9XG4gICAgICAgICAgY29tcHRlc1JlbmR1c1NwbGl0UGF0aFtjb21wdGVzUmVuZHVzU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghY29tcHRlUmVuZHVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdVJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4uY29tcHRlc1JlbmR1c1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtjb21wdGVSZW5kdVJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgY29tcHRlUmVuZHVSYXdGaWxlUGF0aCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdSA9IEpTT04ucGFyc2UoY29tcHRlUmVuZHVSYXdKc29uKVxuICAgICAgICBjbGVhbkNvbXB0ZVJlbmR1KGNvbXB0ZVJlbmR1KVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNvbXB0ZVJlbmR1LCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUNsZWFuOiBDb21wdGVSZW5kdSA9XG4gICAgICAgICAgQ29tcHRlc1JlbmR1c0NvbnZlcnQudG9Db21wdGVSZW5kdShjb21wdGVSZW5kdUpzb24pXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1Q2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIENvbXB0ZXNSZW5kdXNDb252ZXJ0LmNvbXB0ZVJlbmR1VG9Kc29uKGNvbXB0ZVJlbmR1Q2xlYW4pXG5cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmNvbXB0ZXNSZW5kdXNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoY29tcHRlUmVuZHVDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGgsIGNvbXB0ZVJlbmR1Q2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RvcmUgc3RhbmRhcmQgY29udmVyc2lvbiBvZiBkYXRlcyB0byBKU09OLlxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBleGlzdGluZ0RhdGVUb0pzb25cblxuICByZXR1cm4gZXhpdENvZGVcbn1cblxuZnVuY3Rpb24gYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZTogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBhbnkge1xuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhgQ2xlYW5pbmcgZGlyZWN0b3J5OiAke2RhdGFzZXRDbGVhbkRpcn3igKZgKVxuICB9XG4gIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldENsZWFuRGlyKVxuICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRDbGVhbkRpcikpIHtcbiAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBwYXRobmFtZSA9IHBhdGguam9pbihkYXRhc2V0Q2xlYW5EaXIsIGZpbGVuYW1lKVxuICAgIGZzLnJlbW92ZVN5bmMocGF0aG5hbWUpXG4gIH1cbn1cblxuZnVuY3Rpb24gY29tbWl0QW5kUHVzaFVpZChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBvcHRpb25zOiBhbnksXG4gIHN1YmRpcmVjdG9yaWVzOiBhbnksXG4pOiBib29sZWFuIHtcbiAgbGV0IGVycm9yID0gZmFsc2VcbiAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgZ2l0LnVpZEJyYW5jaFVwZGF0ZShcbiAgICAgIHJlcG9zaXRvcnlEaXIsXG4gICAgICBzdWJkaXJlY3RvcmllcyxcbiAgICAgIG9wdGlvbnNbXCJuby1yZXNldC1hZnRlci1jb21taXRcIl0sXG4gICAgKVxuICAgIGZvciAoY29uc3QgcmVtb3RlIG9mIG9wdGlvbnMucmVtb3RlIHx8IFtdKSB7XG4gICAgICB0cnkge1xuICAgICAgICBnaXQucnVuKHJlcG9zaXRvcnlEaXIsIGBwdXNoIC0tcXVpZXQgJHtyZW1vdGV9IHVpZDp1aWRgKVxuICAgICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZXJyb3Jcbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIHJldHVybiBjbGVhblJlb3JnYW5pemVkRGF0YShvcHRpb25zKVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJjbGVhbl9yZW9yZ2FuaXpl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
|
|
775
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2NsZWFuZXJzIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiX2ZpbGVfc3lzdGVtcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX3NjcnV0aW5zIiwiX3F1ZXN0aW9ucyIsIl9kZWJhdHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvYmoiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsImxlbmd0aCIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiX2UiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJuZXh0IiwiX2UyIiwibWluTGVuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsZW4iLCJhcnIyIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJOdW1iZXIiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiZGF0YURpciIsIkRhdGUiLCJ0b0pTT04iLCJwYXRjaGVkRGF0ZVRvSnNvbiIsImV4aXRDb2RlIiwiZ2l0R3JvdXBVcmwiLCJjbG9uZSIsInRyaW0iLCJyZXBsYWNlIiwidW5kZWZpbmVkIiwiY2F0ZWdvcmllcyIsIm1hcCIsImRhdGFzZXROYW1lIiwiYXNzZXJ0Iiwibm90U3RyaWN0RXF1YWwiLCJFbmFibGVkRGF0YXNldHMiLCJjb25jYXQiLCJlbmFibGVkRGF0YXNldHMiLCJyZWR1Y2UiLCJOb25lIiwiY2hvc2VuRGF0YXNldHMiLCJmaWx0ZXJCeUxlZ2lzbGF0dXJlIiwiZGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJfaXRlcmF0b3IiLCJhY3RldXJzRXRPcmdhbmVzIiwiX3N0ZXAiLCJkYXRhc2V0IiwicGF0aCIsImJhc2VuYW1lIiwiZmlsZW5hbWUiLCJleGVjU3luYyIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiZGF0YXNldFJhd0RpciIsImpvaW4iLCJkYXRhc2V0Q2xlYW5EaXIiLCJwdWxsIiwiYW5hbHl6ZUFuZFJlbW92ZSIsIl9pdGVyYXRvcjIiLCJ3YWxrRGlyIiwiX3N0ZXAyIiwiYWN0ZXVyU3BsaXRQYXRoIiwiYWN0ZXVyRmlsZW5hbWUiLCJlbmRzV2l0aCIsImFjdGV1clJhd0ZpbGVQYXRoIiwiYXBwbHkiLCJ2ZXJib3NlIiwiY29uc29sZSIsImxvZyIsImFjdGV1clJhd0pzb24iLCJmcyIsInJlYWRGaWxlU3luYyIsImFjdGV1ciIsIkpTT04iLCJwYXJzZSIsImNsZWFuQWN0ZXVyIiwiYWN0ZXVySnNvbiIsInN0cmluZ2lmeSIsImFjdGV1ckNsZWFuIiwiQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQiLCJ0b0FjdGV1ciIsImFjdGV1ckNsZWFuSnNvbiIsImFjdGV1clRvSnNvbiIsImFjdGV1ckNsZWFuRmlsZVBhdGgiLCJlbnN1cmVEaXJTeW5jIiwiZGlybmFtZSIsIndyaXRlRmlsZVN5bmMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVSYXdGaWxlUGF0aCIsIm9yZ2FuZVJhd0pzb24iLCJvcmdhbmUiLCJjbGVhbk9yZ2FuZSIsIm9yZ2FuZUpzb24iLCJvcmdhbmVDbGVhbiIsInRvT3JnYW5lIiwib3JnYW5lQ2xlYW5Kc29uIiwib3JnYW5lVG9Kc29uIiwib3JnYW5lQ2xlYW5GaWxlUGF0aCIsImNvbW1pdCIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJjb21taXRBbmRQdXNoVWlkIiwiQWdlbmRhcyIsIl9pdGVyYXRvcjQiLCJhZ2VuZGFzIiwiX3N0ZXA0IiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uUmF3RmlsZVBhdGgiLCJyZXVuaW9uUmF3SnNvbiIsInJldW5pb24iLCJjbGVhblJldW5pb24iLCJyZXVuaW9uSnNvbiIsInJldW5pb25DbGVhbiIsIkFnZW5kYXNDb252ZXJ0IiwidG9SZXVuaW9uIiwicmV1bmlvbkNsZWFuSnNvbiIsInJldW5pb25Ub0pzb24iLCJyZXVuaW9uQ2xlYW5GaWxlUGF0aCIsIkFtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yNiIsImFtZW5kZW1lbnRzIiwiX3N0ZXA2IiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50UmF3RmlsZVBhdGgiLCJhbWVuZGVtZW50UmF3SnNvbiIsImFtZW5kZW1lbnQiLCJjbGVhbkFtZW5kZW1lbnQiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnRDbGVhbiIsIkFtZW5kZW1lbnRzQ29udmVydCIsInRvQW1lbmRlbWVudCIsImFtZW5kZW1lbnRDbGVhbkpzb24iLCJhbWVuZGVtZW50VG9Kc29uIiwiYW1lbmRlbWVudENsZWFuRmlsZVBhdGgiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yOCIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJfc3RlcDgiLCJfaXRlcmF0b3I5IiwiX3N0ZXA5IiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRSYXdGaWxlUGF0aCIsImRvY3VtZW50UmF3SnNvbiIsImRvY3VtZW50IiwiY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24iLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudENsZWFuIiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJ0b0RvY3VtZW50IiwiZG9jdW1lbnRDbGVhbkpzb24iLCJkb2N1bWVudFRvSnNvbiIsImRvY3VtZW50Q2xlYW5GaWxlUGF0aCIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyUmF3RmlsZVBhdGgiLCJkb3NzaWVyUmF3SnNvbiIsImRvc3NpZXIiLCJjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llckpzb24iLCJkb3NzaWVyQ2xlYW4iLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llckNsZWFuSnNvbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uIiwiZG9zc2llckNsZWFuRmlsZVBhdGgiLCJTY3J1dGlucyIsIl9pdGVyYXRvcjExIiwic2NydXRpbnMiLCJfc3RlcDExIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwic2NydXRpblNwbGl0UGF0aCIsInNjcnV0aW5GaWxlbmFtZSIsInNjcnV0aW5SYXdGaWxlUGF0aCIsInNjcnV0aW5SYXdKc29uIiwic2NydXRpbiIsImNsZWFuU2NydXRpbiIsInNjcnV0aW5Kc29uIiwic2NydXRpbkNsZWFuIiwiU2NydXRpbnNDb252ZXJ0IiwidG9TY3J1dGluIiwic2NydXRpbkNsZWFuSnNvbiIsInNjcnV0aW5Ub0pzb24iLCJzY3J1dGluQ2xlYW5GaWxlUGF0aCIsIlF1ZXN0aW9ucyIsIl9pdGVyYXRvcjEzIiwicXVlc3Rpb25zIiwiX3N0ZXAxMyIsIl9pdGVyYXRvcjE0IiwiX3N0ZXAxNCIsInF1ZXN0aW9uc1NwbGl0UGF0aCIsInF1ZXN0aW9uRmlsZW5hbWUiLCJxdWVzdGlvblJhd0ZpbGVQYXRoIiwicXVlc3Rpb25SYXdKc29uIiwicXVlc3Rpb24iLCJjbGVhblF1ZXN0aW9uIiwicXVlc3Rpb25Kc29uIiwicXVlc3Rpb25DbGVhbiIsIlF1ZXN0aW9uc0NvbnZlcnQiLCJ0b1F1ZXN0aW9uIiwicXVlc3Rpb25DbGVhbkpzb24iLCJxdWVzdGlvblRvSnNvbiIsInF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX2l0ZXJhdG9yMTUiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9zdGVwMTUiLCJfaXRlcmF0b3IxNiIsIl9zdGVwMTYiLCJjb21wdGVzUmVuZHVzU3BsaXRQYXRoIiwiY29tcHRlUmVuZHVGaWxlbmFtZSIsImNvbXB0ZVJlbmR1UmF3RmlsZVBhdGgiLCJjb21wdGVSZW5kdVJhd0pzb24iLCJjb21wdGVSZW5kdSIsImNsZWFuQ29tcHRlUmVuZHUiLCJjb21wdGVSZW5kdUpzb24iLCJjb21wdGVSZW5kdUNsZWFuIiwiQ29tcHRlc1JlbmR1c0NvbnZlcnQiLCJ0b0NvbXB0ZVJlbmR1IiwiY29tcHRlUmVuZHVDbGVhbkpzb24iLCJjb21wdGVSZW5kdVRvSnNvbiIsImNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInNpbGVudCIsIl9pdGVyYXRvcjE3IiwicmVhZGRpclN5bmMiLCJfc3RlcDE3IiwicGF0aG5hbWUiLCJyZW1vdmVTeW5jIiwicmVwb3NpdG9yeURpciIsInN1YmRpcmVjdG9yaWVzIiwiZXJyb3IiLCJ1aWRCcmFuY2hVcGRhdGUiLCJfaXRlcmF0b3IxOCIsIl9zdGVwMTgiLCJydW4iLCJjaGlsZFByb2Nlc3MiLCJtYWluIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2NsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7XG4gIGNsZWFuQWN0ZXVyLFxuICBjbGVhbkFtZW5kZW1lbnQsXG4gIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uLFxuICBjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBjbGVhbk9yZ2FuZSxcbiAgY2xlYW5SZXVuaW9uLFxuICBjbGVhblNjcnV0aW4sXG4gIGNsZWFuUXVlc3Rpb24sXG4gIGNsZWFuQ29tcHRlUmVuZHUsXG59IGZyb20gXCIuLi9jbGVhbmVyc1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzLCBmaWx0ZXJCeUxlZ2lzbGF0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGV4aXN0aW5nRGF0ZVRvSnNvbiwgcGF0Y2hlZERhdGVUb0pzb24gfSBmcm9tIFwiLi4vZGF0ZXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG59IGZyb20gXCIuLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4uL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4uL3R5cGVzL3NjcnV0aW5zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgUXVlc3Rpb25zQ29udmVydCwgUXVlc3Rpb24gfSBmcm9tIFwiLi4vdHlwZXMvcXVlc3Rpb25zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQ29tcHRlc1JlbmR1c0NvbnZlcnQsIENvbXB0ZVJlbmR1IH0gZnJvbSBcIi4uL3R5cGVzL2RlYmF0c1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICB7XG4gICAgICBhbGlhczogXCJDXCIsXG4gICAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICAgIG5hbWU6IFwiY2xvbmVcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImNcIixcbiAgICAgIGhlbHA6IFwiY29tbWl0IGNsZWFuIGZpbGVzXCIsXG4gICAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImRcIixcbiAgICAgIGhlbHA6IFwic2luZ2xlIGRhdGFzZXQgdG8gcmVvcmdhbml6ZVwiLFxuICAgICAgbmFtZTogXCJkYXRhc2V0XCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJrXCIsXG4gICAgICBkZWZhdWx0VmFsdWU6IFtcIkFsbFwiXSxcbiAgICAgIGhlbHA6IFwiY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZW9yZ2FuaXplXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiY2F0ZWdvcmllc1wiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwibFwiLFxuICAgICAgaGVscDogXCJsZWdpc2xhdHVyZXMgb2YgY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZXRyaWV2ZTsgbGVhdmUgZW1wdHkgb3IgdXNlIDAgZm9yIGFsbFwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImxlZ2lzbGF0dXJlXCIsXG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJwXCIsXG4gICAgICBoZWxwOiBcInB1bGwgcmVwb3NpdG9yaWVzIGJlZm9yZSBwcm9jZWVkaW5nXCIsXG4gICAgICBuYW1lOiBcInB1bGxcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJyXCIsXG4gICAgICBoZWxwOiBcInB1c2ggY29tbWl0IHRvIGdpdmVuIHJlbW90ZVwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwic1wiLFxuICAgICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJkbyBub3QgcmVzZXQgLS1oYXJkIGFmdGVyIGNvbW1pdCB0byBzYXZlIEkvTyBpZiB0aGUgd29ya2luZyB0cmVlIGlzIHRvIGJlIGRpc2NhcmRlZFwiLFxuICAgICAgbmFtZTogXCJuby1yZXNldC1hZnRlci1jb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJ2XCIsXG4gICAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBjbGVhblJlb3JnYW5pemVkRGF0YShvcHRpb25zOiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBkYXRhRGlyOiBzdHJpbmcgPSBvcHRpb25zLmRhdGFEaXJcblxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuXG4gIGxldCBleGl0Q29kZSA9IDEwIC8vIE5vdGhpbmcgdG8gY29tbWl0XG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZVxuICAgID8gb3B0aW9ucy5jbG9uZS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICAgIDogdW5kZWZpbmVkXG5cbiAgb3B0aW9ucy5jYXRlZ29yaWVzLm1hcCgoZGF0YXNldE5hbWU6IHN0cmluZykgPT5cbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYFVua25vd24gbmFtZSBvZiBkYXRhc2V0OiAke2RhdGFzZXROYW1lfWAsXG4gICAgKSxcbiAgKVxuICBjb25zdCBlbmFibGVkRGF0YXNldHMgPSBvcHRpb25zLmNhdGVnb3JpZXMucmVkdWNlKFxuICAgIChlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cywgZGF0YXNldE5hbWU6IHN0cmluZyk6IEVuYWJsZWREYXRhc2V0cyA9PlxuICAgICAgZW5hYmxlZERhdGFzZXRzIHxcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgRW5hYmxlZERhdGFzZXRzLk5vbmUsXG4gIClcblxuICBsZXQgY2hvc2VuRGF0YXNldHMgPSBmaWx0ZXJCeUxlZ2lzbGF0dXJlKGRhdGFzZXRzLCBvcHRpb25zLmxlZ2lzbGF0dXJlKVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdWxsIC0tcmViYXNlYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHthY3RldXJSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1clJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gSlNPTi5wYXJzZShhY3RldXJSYXdKc29uKVxuICAgICAgICBjbGVhbkFjdGV1cihhY3RldXIpXG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgYWN0ZXVyQ2xlYW46IEFjdGV1ciA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ckpzb24pXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBY3RldXJzRXRPcmdhbmVzQ29udmVydC5hY3RldXJUb0pzb24oYWN0ZXVyQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgYWN0ZXVyQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5hY3RldXJTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoYWN0ZXVyQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoYWN0ZXVyQ2xlYW5GaWxlUGF0aCwgYWN0ZXVyQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcIm9yZ2FuZXNcIl0pKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVuYW1lID0gb3JnYW5lU3BsaXRQYXRoW29yZ2FuZVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZVJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLm9yZ2FuZVNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7b3JnYW5lUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMob3JnYW5lUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IEpTT04ucGFyc2Uob3JnYW5lUmF3SnNvbilcbiAgICAgICAgY2xlYW5PcmdhbmUob3JnYW5lKVxuICAgICAgICBjb25zdCBvcmdhbmVKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IG9yZ2FuZUNsZWFuOiBPcmdhbmUgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZShvcmdhbmVKc29uKVxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQub3JnYW5lVG9Kc29uKG9yZ2FuZUNsZWFuKVxuXG4gICAgICAgIGNvbnN0IG9yZ2FuZUNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4ub3JnYW5lU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKG9yZ2FuZUNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG9yZ2FuZUNsZWFuRmlsZVBhdGgsIG9yZ2FuZUNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiYWN0ZXVyc1wiLCBcIm9yZ2FuZXNcIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25SYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtyZXVuaW9uUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25SYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEpTT04ucGFyc2UocmV1bmlvblJhd0pzb24pXG4gICAgICAgIGNsZWFuUmV1bmlvbihyZXVuaW9uKVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocmV1bmlvbiwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgcmV1bmlvbkNsZWFuOiBSZXVuaW9uID0gQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25Kc29uKVxuICAgICAgICBjb25zdCByZXVuaW9uQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFnZW5kYXNDb252ZXJ0LnJldW5pb25Ub0pzb24ocmV1bmlvbkNsZWFuKVxuXG4gICAgICAgIGNvbnN0IHJldW5pb25DbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLnJldW5pb25TcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUocmV1bmlvbkNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHJldW5pb25DbGVhbkZpbGVQYXRoLCByZXVuaW9uQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudFJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHthbWVuZGVtZW50UmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50UmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgIGFtZW5kZW1lbnRSYXdGaWxlUGF0aCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gSlNPTi5wYXJzZShhbWVuZGVtZW50UmF3SnNvbilcbiAgICAgICAgY2xlYW5BbWVuZGVtZW50KGFtZW5kZW1lbnQpXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShhbWVuZGVtZW50LCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBhbWVuZGVtZW50Q2xlYW46IEFtZW5kZW1lbnQgPVxuICAgICAgICAgIEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnQoYW1lbmRlbWVudEpzb24pXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQW1lbmRlbWVudHNDb252ZXJ0LmFtZW5kZW1lbnRUb0pzb24oYW1lbmRlbWVudENsZWFuKVxuXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoYW1lbmRlbWVudENsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoLCBhbWVuZGVtZW50Q2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRSYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLmRvY3VtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2RvY3VtZW50UmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudFJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb2N1bWVudFJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb2N1bWVudCA9IEpTT04ucGFyc2UoZG9jdW1lbnRSYXdKc29uKVxuICAgICAgICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbihkb2N1bWVudClcbiAgICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShkb2N1bWVudCwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRDbGVhbjogRG9jdW1lbnQgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9jdW1lbnQoZG9jdW1lbnRKc29uKVxuICAgICAgICBjb25zdCBkb2N1bWVudENsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb2N1bWVudFRvSnNvbihkb2N1bWVudENsZWFuKVxuXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShkb2N1bWVudENsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGRvY3VtZW50Q2xlYW5GaWxlUGF0aCwgZG9jdW1lbnRDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgZG9zc2llclNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcImRvc3NpZXJzXCJdKSkge1xuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZW5hbWUgPSBkb3NzaWVyU3BsaXRQYXRoW2Rvc3NpZXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb3NzaWVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llclJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLmRvc3NpZXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2Rvc3NpZXJSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9zc2llclJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb3NzaWVyID0gSlNPTi5wYXJzZShkb3NzaWVyUmF3SnNvbilcbiAgICAgICAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZShkb3NzaWVyKVxuICAgICAgICBjb25zdCBkb3NzaWVySnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZG9zc2llciwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuOiBEb3NzaWVyUGFybGVtZW50YWlyZSA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShkb3NzaWVySnNvbilcbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb3NzaWVyUGFybGVtZW50YWlyZVRvSnNvbihkb3NzaWVyQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uZG9zc2llclNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShkb3NzaWVyQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZG9zc2llckNsZWFuRmlsZVBhdGgsIGRvc3NpZXJDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcImRvY3VtZW50c1wiLCBcImRvc3NpZXJzXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBzY3J1dGluU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID0gc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5SYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5zY3J1dGluU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtzY3J1dGluUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHNjcnV0aW5SYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IEpTT04ucGFyc2Uoc2NydXRpblJhd0pzb24pXG4gICAgICAgIGNsZWFuU2NydXRpbihzY3J1dGluKVxuICAgICAgICBjb25zdCBzY3J1dGluSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoc2NydXRpbiwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3Qgc2NydXRpbkNsZWFuOiBTY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgY29uc3Qgc2NydXRpbkNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBTY3J1dGluc0NvbnZlcnQuc2NydXRpblRvSnNvbihzY3J1dGluQ2xlYW4pXG5cbiAgICAgICAgY29uc3Qgc2NydXRpbkNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uc2NydXRpblNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShzY3J1dGluQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoc2NydXRpbkNsZWFuRmlsZVBhdGgsIHNjcnV0aW5DbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5RdWVzdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMucXVlc3Rpb25zKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgcXVlc3Rpb25zU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25GaWxlbmFtZSA9XG4gICAgICAgICAgcXVlc3Rpb25zU3BsaXRQYXRoW3F1ZXN0aW9uc1NwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXF1ZXN0aW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlc3Rpb25SYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLnF1ZXN0aW9uc1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtxdWVzdGlvblJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlc3Rpb25SYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocXVlc3Rpb25SYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBKU09OLnBhcnNlKHF1ZXN0aW9uUmF3SnNvbilcbiAgICAgICAgY2xlYW5RdWVzdGlvbihxdWVzdGlvbilcbiAgICAgICAgY29uc3QgcXVlc3Rpb25Kc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShxdWVzdGlvbiwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgcXVlc3Rpb25DbGVhbjogUXVlc3Rpb24gPVxuICAgICAgICAgIFF1ZXN0aW9uc0NvbnZlcnQudG9RdWVzdGlvbihxdWVzdGlvbkpzb24pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIFF1ZXN0aW9uc0NvbnZlcnQucXVlc3Rpb25Ub0pzb24ocXVlc3Rpb25DbGVhbilcblxuICAgICAgICBjb25zdCBxdWVzdGlvbkNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4ucXVlc3Rpb25zU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKHF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocXVlc3Rpb25DbGVhbkZpbGVQYXRoLCBxdWVzdGlvbkNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIueG1sXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBjb21wdGVzUmVuZHVzU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVGaWxlbmFtZSA9XG4gICAgICAgICAgY29tcHRlc1JlbmR1c1NwbGl0UGF0aFtjb21wdGVzUmVuZHVzU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghY29tcHRlUmVuZHVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdVJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4uY29tcHRlc1JlbmR1c1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtjb21wdGVSZW5kdVJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgY29tcHRlUmVuZHVSYXdGaWxlUGF0aCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdSA9IEpTT04ucGFyc2UoY29tcHRlUmVuZHVSYXdKc29uKVxuICAgICAgICBjbGVhbkNvbXB0ZVJlbmR1KGNvbXB0ZVJlbmR1KVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNvbXB0ZVJlbmR1LCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUNsZWFuOiBDb21wdGVSZW5kdSA9XG4gICAgICAgICAgQ29tcHRlc1JlbmR1c0NvbnZlcnQudG9Db21wdGVSZW5kdShjb21wdGVSZW5kdUpzb24pXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1Q2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIENvbXB0ZXNSZW5kdXNDb252ZXJ0LmNvbXB0ZVJlbmR1VG9Kc29uKGNvbXB0ZVJlbmR1Q2xlYW4pXG5cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmNvbXB0ZXNSZW5kdXNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoY29tcHRlUmVuZHVDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGgsIGNvbXB0ZVJlbmR1Q2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RvcmUgc3RhbmRhcmQgY29udmVyc2lvbiBvZiBkYXRlcyB0byBKU09OLlxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBleGlzdGluZ0RhdGVUb0pzb25cblxuICByZXR1cm4gZXhpdENvZGVcbn1cblxuZnVuY3Rpb24gYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZTogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBhbnkge1xuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhgQ2xlYW5pbmcgZGlyZWN0b3J5OiAke2RhdGFzZXRDbGVhbkRpcn3igKZgKVxuICB9XG4gIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldENsZWFuRGlyKVxuICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRDbGVhbkRpcikpIHtcbiAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBwYXRobmFtZSA9IHBhdGguam9pbihkYXRhc2V0Q2xlYW5EaXIsIGZpbGVuYW1lKVxuICAgIGZzLnJlbW92ZVN5bmMocGF0aG5hbWUpXG4gIH1cbn1cblxuZnVuY3Rpb24gY29tbWl0QW5kUHVzaFVpZChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBvcHRpb25zOiBhbnksXG4gIHN1YmRpcmVjdG9yaWVzOiBhbnksXG4pOiBib29sZWFuIHtcbiAgbGV0IGVycm9yID0gZmFsc2VcbiAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgZ2l0LnVpZEJyYW5jaFVwZGF0ZShcbiAgICAgIHJlcG9zaXRvcnlEaXIsXG4gICAgICBzdWJkaXJlY3RvcmllcyxcbiAgICAgIG9wdGlvbnNbXCJuby1yZXNldC1hZnRlci1jb21taXRcIl0sXG4gICAgKVxuICAgIGZvciAoY29uc3QgcmVtb3RlIG9mIG9wdGlvbnMucmVtb3RlIHx8IFtdKSB7XG4gICAgICB0cnkge1xuICAgICAgICBnaXQucnVuKHJlcG9zaXRvcnlEaXIsIGBwdXNoIC0tcXVpZXQgJHtyZW1vdGV9IHVpZDp1aWRgKVxuICAgICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZXJyb3Jcbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIHJldHVybiBjbGVhblJlb3JnYW5pemVkRGF0YShvcHRpb25zKVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJjbGVhbl9yZW9yZ2FuaXplZF9kYXRhLnRzXCIpKVxuICBwcm9jZXNzLmV4aXQobWFpbihwcm9jZXNzLmFyZ3YpKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|