@tricoteuses/assemblee 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api.d.ts +1 -0
- package/lib/api.js +2 -1
- package/lib/api.mjs +2 -1
- package/lib/bugs/acteur-00010/plugin.test.js +3 -3
- package/lib/bugs/acteur-00010.js +3 -3
- package/lib/bugs/agenda-00002/plugin.test.js +3 -3
- package/lib/bugs/agenda-00002.js +3 -3
- package/lib/bugs/agenda-00008/plugin.test.js +3 -3
- package/lib/bugs/agenda-00008.js +3 -3
- package/lib/bugs/agenda-00011/plugin.test.js +3 -3
- package/lib/bugs/agenda-00011.js +3 -3
- package/lib/bugs.js +3 -3
- package/lib/cleaners/acteurs.js +2 -2
- package/lib/cleaners/organes.js +2 -2
- package/lib/cleaners/reunions.js +2 -2
- package/lib/cleaners/xml.js +2 -2
- package/lib/datasets.js +3 -3
- package/lib/dossiers_legislatifs.js +3 -3
- package/lib/file_systems.js +3 -3
- package/lib/inserters.js +8 -1
- package/lib/inserters.mjs +8 -1
- package/lib/loaders.js +3 -3
- package/lib/parsers/documents.js +3 -3
- package/lib/parsers/recherche_amendements.js +11 -11
- package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
- package/lib/raw_types/acteurs_et_organes.js +6 -2
- package/lib/raw_types/acteurs_et_organes.mjs +5 -1
- package/lib/raw_types/agendas.js +1 -1
- package/lib/raw_types/amendements.js +1 -1
- package/lib/raw_types/debats.js +1 -1
- package/lib/raw_types/dossiers_legislatifs.d.ts +1 -0
- package/lib/raw_types/dossiers_legislatifs.js +4 -3
- package/lib/raw_types/dossiers_legislatifs.mjs +3 -2
- package/lib/raw_types/questions.d.ts +2 -0
- package/lib/raw_types/questions.js +6 -4
- package/lib/raw_types/questions.mjs +5 -3
- package/lib/raw_types/scrutins.js +1 -1
- package/lib/scripts/bugs_helper.js +5 -5
- package/lib/scripts/clean_reorganized_data.js +4 -4
- package/lib/scripts/document_dossiers_legislatifs.js +7 -5
- package/lib/scripts/document_dossiers_legislatifs.mjs +4 -2
- package/lib/scripts/raw_types_from_amendements.js +3 -3
- package/lib/scripts/reorganize_data.js +4 -4
- package/lib/scripts/retrieve_deputes_photos.js +8 -8
- package/lib/scripts/retrieve_documents.js +7 -7
- package/lib/scripts/retrieve_documents.mjs +2 -2
- package/lib/scripts/retrieve_open_data.js +3 -3
- package/lib/scripts/retrieve_pending_amendments.js +6 -6
- package/lib/scripts/retrieve_senateurs_photos.js +8 -8
- package/lib/scripts/retrieve_textes_lois.js +5 -5
- package/lib/scripts/validate_json.js +3 -3
- package/lib/shared_types/codes_actes.js +3 -3
- package/lib/types/acteurs_et_organes.d.ts +2 -0
- package/lib/types/acteurs_et_organes.js +6 -2
- package/lib/types/acteurs_et_organes.mjs +5 -1
- package/lib/types/agendas.js +1 -1
- package/lib/types/amendements.js +1 -1
- package/lib/types/debats.js +1 -1
- package/lib/types/dossiers_legislatifs.js +2 -2
- package/lib/types/questions.d.ts +2 -0
- package/lib/types/questions.js +6 -4
- package/lib/types/questions.mjs +5 -3
- package/lib/types/scrutins.js +1 -1
- package/lib/urls.js +3 -3
- package/package.json +7 -7
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(
|
|
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
4
|
require("core-js/modules/es.array.is-array.js");
|
|
5
5
|
require("core-js/modules/es.symbol.js");
|
|
6
6
|
require("core-js/modules/es.symbol.description.js");
|
|
@@ -59,12 +59,12 @@ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableTo
|
|
|
59
59
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
60
60
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
61
61
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
62
|
-
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(
|
|
62
|
+
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
63
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
64
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
65
|
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
66
|
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(
|
|
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
68
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
69
69
|
function parseArgs(argv) {
|
|
70
70
|
var optionsDefinitions = [{
|
|
@@ -801,4 +801,4 @@ function main(argv) {
|
|
|
801
801
|
|
|
802
802
|
/* istanbul ignore if */
|
|
803
803
|
if (process.argv[1].endsWith("clean_reorganized_data.ts")) process.exit(main(process.argv));
|
|
804
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2NsZWFuZXJzIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiX2ZpbGVfc3lzdGVtcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX2xlZ2lzbGF0dXJlcyIsIl9zY3J1dGlucyIsIl9xdWVzdGlvbnMiLCJfZGViYXRzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJpdGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIm8iLCJhbGxvd0FycmF5TGlrZSIsIml0IiwibGVuZ3RoIiwiaSIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImUiLCJfZTIiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJuZXh0IiwiX2UzIiwiX3NsaWNlZFRvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiX2kiLCJfcyIsIl9lIiwiX3giLCJfciIsIl9hcnIiLCJfbiIsIl9kIiwicHVzaCIsInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIm11bHRpcGxlIiwiTnVtYmVyIiwiZGVmYXVsdE9wdGlvbiIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJjbGVhblJlb3JnYW5pemVkRGF0YSIsIl9vcHRpb25zJGxlZ2lzbGF0dXJlIiwiZGF0YURpciIsIkRhdGUiLCJ0b0pTT04iLCJwYXRjaGVkRGF0ZVRvSnNvbiIsImV4aXRDb2RlIiwiZ2l0R3JvdXBVcmwiLCJjbG9uZSIsInRyaW0iLCJyZXBsYWNlIiwidW5kZWZpbmVkIiwiY2F0ZWdvcmllcyIsIm1hcCIsImRhdGFzZXROYW1lIiwiYXNzZXJ0Iiwibm90U3RyaWN0RXF1YWwiLCJFbmFibGVkRGF0YXNldHMiLCJjb25jYXQiLCJlbmFibGVkRGF0YXNldHMiLCJyZWR1Y2UiLCJOb25lIiwiY2hvb3NlbkRhdGFzZXRzIiwiZGF0YXNldHMiLCJsZWdpc2xhdHVyZXMiLCJsZWdpc2xhdHVyZSIsInNvbWUiLCJlbmFibGVkTGVnaXNsYXR1cmVzIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsImZpbHRlciIsImRhdGFzZXQiLCJMZWdpc2xhdHVyZSIsIkFsbCIsImluY2x1ZGVzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsIl9pdGVyYXRvciIsImFjdGV1cnNFdE9yZ2FuZXMiLCJfc3RlcCIsInBhdGgiLCJiYXNlbmFtZSIsImZpbGVuYW1lIiwiZXhlY1N5bmMiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZW5jb2RpbmciLCJzdGRpbyIsImRhdGFzZXRSYXdEaXIiLCJqb2luIiwiZGF0YXNldENsZWFuRGlyIiwicHVsbCIsImFuYWx5emVBbmRSZW1vdmUiLCJfaXRlcmF0b3IyIiwid2Fsa0RpciIsIl9zdGVwMiIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwiZW5kc1dpdGgiLCJhY3RldXJSYXdGaWxlUGF0aCIsImFwcGx5IiwidmVyYm9zZSIsImNvbnNvbGUiLCJsb2ciLCJhY3RldXJSYXdKc29uIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJhY3RldXIiLCJKU09OIiwicGFyc2UiLCJjbGVhbkFjdGV1ciIsImFjdGV1ckpzb24iLCJzdHJpbmdpZnkiLCJhY3RldXJDbGVhbiIsIkFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0IiwidG9BY3RldXIiLCJhY3RldXJDbGVhbkpzb24iLCJhY3RldXJUb0pzb24iLCJhY3RldXJDbGVhbkZpbGVQYXRoIiwiZW5zdXJlRGlyU3luYyIsImRpcm5hbWUiLCJ3cml0ZUZpbGVTeW5jIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lUmF3RmlsZVBhdGgiLCJvcmdhbmVSYXdKc29uIiwib3JnYW5lIiwiY2xlYW5PcmdhbmUiLCJvcmdhbmVKc29uIiwib3JnYW5lQ2xlYW4iLCJ0b09yZ2FuZSIsIm9yZ2FuZUNsZWFuSnNvbiIsIm9yZ2FuZVRvSnNvbiIsIm9yZ2FuZUNsZWFuRmlsZVBhdGgiLCJjb21taXQiLCJlcnJvckNvZGUiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiY29tbWl0QW5kUHVzaFVpZCIsIkFnZW5kYXMiLCJfaXRlcmF0b3I0IiwiYWdlbmRhcyIsIl9zdGVwNCIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvblJhd0ZpbGVQYXRoIiwicmV1bmlvblJhd0pzb24iLCJyZXVuaW9uIiwiY2xlYW5SZXVuaW9uIiwicmV1bmlvbkpzb24iLCJyZXVuaW9uQ2xlYW4iLCJBZ2VuZGFzQ29udmVydCIsInRvUmV1bmlvbiIsInJldW5pb25DbGVhbkpzb24iLCJyZXVuaW9uVG9Kc29uIiwicmV1bmlvbkNsZWFuRmlsZVBhdGgiLCJBbWVuZGVtZW50cyIsIl9pdGVyYXRvcjYiLCJhbWVuZGVtZW50cyIsIl9zdGVwNiIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudFJhd0ZpbGVQYXRoIiwiYW1lbmRlbWVudFJhd0pzb24iLCJhbWVuZGVtZW50IiwiY2xlYW5BbWVuZGVtZW50IiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50Q2xlYW4iLCJBbWVuZGVtZW50c0NvbnZlcnQiLCJ0b0FtZW5kZW1lbnQiLCJhbWVuZGVtZW50Q2xlYW5Kc29uIiwiYW1lbmRlbWVudFRvSnNvbiIsImFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjgiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX3N0ZXA4IiwiX2l0ZXJhdG9yOSIsIl9zdGVwOSIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50UmF3RmlsZVBhdGgiLCJkb2N1bWVudFJhd0pzb24iLCJkb2N1bWVudCIsImNsZWFuRG9jdW1lbnRPckRpdmlzaW9uIiwiZG9jdW1lbnRKc29uIiwiZG9jdW1lbnRDbGVhbiIsIkRvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0IiwidG9Eb2N1bWVudCIsImRvY3VtZW50Q2xlYW5Kc29uIiwiZG9jdW1lbnRUb0pzb24iLCJkb2N1bWVudENsZWFuRmlsZVBhdGgiLCJfaXRlcmF0b3IxMCIsIl9zdGVwMTAiLCJkb3NzaWVyU3BsaXRQYXRoIiwiZG9zc2llckZpbGVuYW1lIiwiZG9zc2llclJhd0ZpbGVQYXRoIiwiZG9zc2llclJhd0pzb24iLCJkb3NzaWVyIiwiY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSIsImRvc3NpZXJKc29uIiwiZG9zc2llckNsZWFuIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsImRvc3NpZXJDbGVhbkpzb24iLCJkb3NzaWVyUGFybGVtZW50YWlyZVRvSnNvbiIsImRvc3NpZXJDbGVhbkZpbGVQYXRoIiwiU2NydXRpbnMiLCJfaXRlcmF0b3IxMSIsInNjcnV0aW5zIiwiX3N0ZXAxMSIsIl9pdGVyYXRvcjEyIiwiX3N0ZXAxMiIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluUmF3RmlsZVBhdGgiLCJzY3J1dGluUmF3SnNvbiIsInNjcnV0aW4iLCJjbGVhblNjcnV0aW4iLCJzY3J1dGluSnNvbiIsInNjcnV0aW5DbGVhbiIsIlNjcnV0aW5zQ29udmVydCIsInRvU2NydXRpbiIsInNjcnV0aW5DbGVhbkpzb24iLCJzY3J1dGluVG9Kc29uIiwic2NydXRpbkNsZWFuRmlsZVBhdGgiLCJRdWVzdGlvbnMiLCJfaXRlcmF0b3IxMyIsInF1ZXN0aW9ucyIsIl9zdGVwMTMiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJxdWVzdGlvbnNTcGxpdFBhdGgiLCJxdWVzdGlvbkZpbGVuYW1lIiwicXVlc3Rpb25SYXdGaWxlUGF0aCIsInF1ZXN0aW9uUmF3SnNvbiIsInF1ZXN0aW9uIiwiY2xlYW5RdWVzdGlvbiIsInF1ZXN0aW9uSnNvbiIsInF1ZXN0aW9uQ2xlYW4iLCJRdWVzdGlvbnNDb252ZXJ0IiwidG9RdWVzdGlvbiIsInF1ZXN0aW9uQ2xlYW5Kc29uIiwicXVlc3Rpb25Ub0pzb24iLCJxdWVzdGlvbkNsZWFuRmlsZVBhdGgiLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9pdGVyYXRvcjE1IiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJfc3RlcDE1IiwiX2l0ZXJhdG9yMTYiLCJfc3RlcDE2IiwiY29tcHRlc1JlbmR1c1NwbGl0UGF0aCIsImNvbXB0ZVJlbmR1RmlsZW5hbWUiLCJjb21wdGVSZW5kdVJhd0ZpbGVQYXRoIiwiY29tcHRlUmVuZHVSYXdKc29uIiwiY29tcHRlUmVuZHUiLCJjbGVhbkNvbXB0ZVJlbmR1IiwiY29tcHRlUmVuZHVKc29uIiwiY29tcHRlUmVuZHVDbGVhbiIsIkNvbXB0ZXNSZW5kdXNDb252ZXJ0IiwidG9Db21wdGVSZW5kdSIsImNvbXB0ZVJlbmR1Q2xlYW5Kc29uIiwiY29tcHRlUmVuZHVUb0pzb24iLCJjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGgiLCJleGlzdGluZ0RhdGVUb0pzb24iLCJzaWxlbnQiLCJfaXRlcmF0b3IxNyIsInJlYWRkaXJTeW5jIiwiX3N0ZXAxNyIsInBhdGhuYW1lIiwicmVtb3ZlU3luYyIsInJlcG9zaXRvcnlEaXIiLCJzdWJkaXJlY3RvcmllcyIsImVycm9yIiwidWlkQnJhbmNoVXBkYXRlIiwiX2l0ZXJhdG9yMTgiLCJfc3RlcDE4IiwicnVuIiwiY2hpbGRQcm9jZXNzIiwibWFpbiIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9jbGVhbl9yZW9yZ2FuaXplZF9kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQge1xuICBjbGVhbkFjdGV1cixcbiAgY2xlYW5BbWVuZGVtZW50LFxuICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbixcbiAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgY2xlYW5PcmdhbmUsXG4gIGNsZWFuUmV1bmlvbixcbiAgY2xlYW5TY3J1dGluLFxuICBjbGVhblF1ZXN0aW9uLFxuICBjbGVhbkNvbXB0ZVJlbmR1LFxufSBmcm9tIFwiLi4vY2xlYW5lcnNcIlxuaW1wb3J0IHsgZGF0YXNldHMsIEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxufSBmcm9tIFwiLi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc0NvbnZlcnQsIFNjcnV0aW4gfSBmcm9tIFwiLi4vdHlwZXMvc2NydXRpbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBRdWVzdGlvbnNDb252ZXJ0LCBRdWVzdGlvbiB9IGZyb20gXCIuLi90eXBlcy9xdWVzdGlvbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBDb21wdGVzUmVuZHVzQ29udmVydCwgQ29tcHRlUmVuZHUgfSBmcm9tIFwiLi4vdHlwZXMvZGViYXRzXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGFsaWFzOiBcIkNcIixcbiAgICAgIGhlbHA6IFwiY2xvbmUgcmVwb3NpdG9yaWVzIGZyb20gZ2l2ZW4gZ3JvdXAgKG9yIG9yZ2FuaXphdGlvbikgZ2l0IFVSTFwiLFxuICAgICAgbmFtZTogXCJjbG9uZVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiY1wiLFxuICAgICAgaGVscDogXCJjb21taXQgY2xlYW4gZmlsZXNcIixcbiAgICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiZFwiLFxuICAgICAgaGVscDogXCJzaW5nbGUgZGF0YXNldCB0byByZW9yZ2FuaXplXCIsXG4gICAgICBuYW1lOiBcImRhdGFzZXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImtcIixcbiAgICAgIGRlZmF1bHRWYWx1ZTogW1wiQWxsXCJdLFxuICAgICAgaGVscDogXCJjYXRlZ29yaWVzIG9mIGRhdGFzZXRzIHRvIHJlb3JnYW5pemVcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJjYXRlZ29yaWVzXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJsXCIsXG4gICAgICBoZWxwOiBcImxlZ2lzbGF0dXJlcyBvZiBjYXRlZ29yaWVzIG9mIGRhdGFzZXRzIHRvIHJldHJpZXZlOyBsZWF2ZSBlbXB0eSBvciB1c2UgMCBmb3IgYWxsXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInBcIixcbiAgICAgIGhlbHA6IFwicHVsbCByZXBvc2l0b3JpZXMgYmVmb3JlIHByb2NlZWRpbmdcIixcbiAgICAgIG5hbWU6IFwicHVsbFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInJcIixcbiAgICAgIGhlbHA6IFwicHVzaCBjb21taXQgdG8gZ2l2ZW4gcmVtb3RlXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwicmVtb3RlXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJzXCIsXG4gICAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWxwOiBcImRvIG5vdCByZXNldCAtLWhhcmQgYWZ0ZXIgY29tbWl0IHRvIHNhdmUgSS9PIGlmIHRoZSB3b3JraW5nIHRyZWUgaXMgdG8gYmUgZGlzY2FyZGVkXCIsXG4gICAgICBuYW1lOiBcIm5vLXJlc2V0LWFmdGVyLWNvbW1pdFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInZcIixcbiAgICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnM6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IGRhdGFEaXI6IHN0cmluZyA9IG9wdGlvbnMuZGF0YURpclxuXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG5cbiAgbGV0IGV4aXRDb2RlID0gMTAgLy8gTm90aGluZyB0byBjb21taXRcbiAgY29uc3QgZ2l0R3JvdXBVcmwgPSBvcHRpb25zLmNsb25lXG4gICAgPyBvcHRpb25zLmNsb25lLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gICAgOiB1bmRlZmluZWRcblxuICBvcHRpb25zLmNhdGVnb3JpZXMubWFwKChkYXRhc2V0TmFtZTogc3RyaW5nKSA9PlxuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBgVW5rbm93biBuYW1lIG9mIGRhdGFzZXQ6ICR7ZGF0YXNldE5hbWV9YCxcbiAgICApLFxuICApXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IG9wdGlvbnMuY2F0ZWdvcmllcy5yZWR1Y2UoXG4gICAgKGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLCBkYXRhc2V0TmFtZTogc3RyaW5nKTogRW5hYmxlZERhdGFzZXRzID0+XG4gICAgICBlbmFibGVkRGF0YXNldHMgfFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICBFbmFibGVkRGF0YXNldHMuTm9uZSxcbiAgKVxuXG4gIGxldCBjaG9vc2VuRGF0YXNldHMgPSBkYXRhc2V0c1xuICAvLyBXaGVuIGEgZ2l2ZW4gbGVnaXNsYXR1cmUgaXMgMCwgaXQgaXMgdGhlIHNhbWUgYXMgZ2l2aW5nIG5vIGxlZ2lzbGF0dXJlOlxuICAvLyBJdCBtZWFucyBcImV2ZXJ5IGxlZ2lzbGF0dXJlc1wiLlxuICBjb25zdCBsZWdpc2xhdHVyZXMgPSBvcHRpb25zLmxlZ2lzbGF0dXJlPy5zb21lKFxuICAgIChsZWdpc2xhdHVyZTogbnVtYmVyKSA9PiBsZWdpc2xhdHVyZSA9PT0gMCxcbiAgKVxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBvcHRpb25zLmxlZ2lzbGF0dXJlXG4gIGlmIChsZWdpc2xhdHVyZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGVuYWJsZWRMZWdpc2xhdHVyZXMgPSBsZWdpc2xhdHVyZXMubWFwKChsZWdpc2xhdHVyZTogbnVtYmVyKSA9PlxuICAgICAgbGVnaXNsYXR1cmUudG9TdHJpbmcoKSxcbiAgICApXG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNob29zZW5EYXRhc2V0cykpIHtcbiAgICAgIGNob29zZW5EYXRhc2V0c1trZXkgYXMga2V5b2YgdHlwZW9mIGNob29zZW5EYXRhc2V0c10gPSB2YWx1ZS5maWx0ZXIoXG4gICAgICAgIChkYXRhc2V0OiB7IGxlZ2lzbGF0dXJlOiBhbnkgfSkgPT5cbiAgICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgfHxcbiAgICAgICAgICBlbmFibGVkTGVnaXNsYXR1cmVzLmluY2x1ZGVzKGRhdGFzZXQubGVnaXNsYXR1cmUpLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCByZXNldCAtLWhhcmQgb3JpZ2luL21hc3RlcmAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVsbCAtLXJlYmFzZWAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcImFjdGV1cnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ckZpbGVuYW1lID0gYWN0ZXVyU3BsaXRQYXRoW2FjdGV1clNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFjdGV1ckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1clJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLmFjdGV1clNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7YWN0ZXVyUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYWN0ZXVyUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IEpTT04ucGFyc2UoYWN0ZXVyUmF3SnNvbilcbiAgICAgICAgY2xlYW5BY3RldXIoYWN0ZXVyKVxuICAgICAgICBjb25zdCBhY3RldXJKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuOiBBY3RldXIgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cihhY3RldXJKc29uKVxuICAgICAgICBjb25zdCBhY3RldXJDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQuYWN0ZXVyVG9Kc29uKGFjdGV1ckNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uYWN0ZXVyU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGFjdGV1ckNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGFjdGV1ckNsZWFuRmlsZVBhdGgsIGFjdGV1ckNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVSYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5vcmdhbmVTcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke29yZ2FuZVJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZVJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBvcmdhbmUgPSBKU09OLnBhcnNlKG9yZ2FuZVJhd0pzb24pXG4gICAgICAgIGNsZWFuT3JnYW5lKG9yZ2FuZSlcbiAgICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbjogT3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgY29uc3Qgb3JnYW5lQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0Lm9yZ2FuZVRvSnNvbihvcmdhbmVDbGVhbilcblxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLm9yZ2FuZVNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShvcmdhbmVDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhvcmdhbmVDbGVhbkZpbGVQYXRoLCBvcmdhbmVDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcImFjdGV1cnNcIiwgXCJvcmdhbmVzXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPSByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvblJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLnJldW5pb25TcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke3JldW5pb25SYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25SYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocmV1bmlvblJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCByZXVuaW9uID0gSlNPTi5wYXJzZShyZXVuaW9uUmF3SnNvbilcbiAgICAgICAgY2xlYW5SZXVuaW9uKHJldW5pb24pXG4gICAgICAgIGNvbnN0IHJldW5pb25Kc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShyZXVuaW9uLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCByZXVuaW9uQ2xlYW46IFJldW5pb24gPSBBZ2VuZGFzQ29udmVydC50b1JldW5pb24ocmV1bmlvbkpzb24pXG4gICAgICAgIGNvbnN0IHJldW5pb25DbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQWdlbmRhc0NvbnZlcnQucmV1bmlvblRvSnNvbihyZXVuaW9uQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgcmV1bmlvbkNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4ucmV1bmlvblNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShyZXVuaW9uQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocmV1bmlvbkNsZWFuRmlsZVBhdGgsIHJldW5pb25DbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudFJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHthbWVuZGVtZW50UmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50UmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgIGFtZW5kZW1lbnRSYXdGaWxlUGF0aCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gSlNPTi5wYXJzZShhbWVuZGVtZW50UmF3SnNvbilcbiAgICAgICAgY2xlYW5BbWVuZGVtZW50KGFtZW5kZW1lbnQpXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShhbWVuZGVtZW50LCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBhbWVuZGVtZW50Q2xlYW46IEFtZW5kZW1lbnQgPVxuICAgICAgICAgIEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnQoYW1lbmRlbWVudEpzb24pXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQW1lbmRlbWVudHNDb252ZXJ0LmFtZW5kZW1lbnRUb0pzb24oYW1lbmRlbWVudENsZWFuKVxuXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoYW1lbmRlbWVudENsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoLCBhbWVuZGVtZW50Q2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IGRvY3VtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wiZG9jdW1lbnRzXCJdKSkge1xuICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVuYW1lID0gZG9jdW1lbnRTcGxpdFBhdGhbZG9jdW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50UmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtkb2N1bWVudFJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBKU09OLnBhcnNlKGRvY3VtZW50UmF3SnNvbilcbiAgICAgICAgY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24oZG9jdW1lbnQpXG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZG9jdW1lbnQsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q2xlYW46IERvY3VtZW50ID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgICAgY29uc3QgZG9jdW1lbnRDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9jdW1lbnRUb0pzb24oZG9jdW1lbnRDbGVhbilcblxuICAgICAgICBjb25zdCBkb2N1bWVudENsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uZG9jdW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoZG9jdW1lbnRDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkb2N1bWVudENsZWFuRmlsZVBhdGgsIGRvY3VtZW50Q2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJkb3NzaWVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9zc2llckZpbGVuYW1lID0gZG9zc2llclNwbGl0UGF0aFtkb3NzaWVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9zc2llckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJSYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5kb3NzaWVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtkb3NzaWVyUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvc3NpZXJSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9zc2llciA9IEpTT04ucGFyc2UoZG9zc2llclJhd0pzb24pXG4gICAgICAgIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llcilcbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGRvc3NpZXIsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbjogRG9zc2llclBhcmxlbWVudGFpcmUgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24oZG9zc2llckNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmRvc3NpZXJTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoZG9zc2llckNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGRvc3NpZXJDbGVhbkZpbGVQYXRoLCBkb3NzaWVyQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCJkb2N1bWVudHNcIiwgXCJkb3NzaWVyc1wiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpblJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke3NjcnV0aW5SYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5SYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpblJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gSlNPTi5wYXJzZShzY3J1dGluUmF3SnNvbilcbiAgICAgICAgY2xlYW5TY3J1dGluKHNjcnV0aW4pXG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShzY3J1dGluLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBzY3J1dGluQ2xlYW46IFNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgICBjb25zdCBzY3J1dGluQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIFNjcnV0aW5zQ29udmVydC5zY3J1dGluVG9Kc29uKHNjcnV0aW5DbGVhbilcblxuICAgICAgICBjb25zdCBzY3J1dGluQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5zY3J1dGluU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKHNjcnV0aW5DbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhzY3J1dGluQ2xlYW5GaWxlUGF0aCwgc2NydXRpbkNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBxdWVzdGlvbnNTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBxdWVzdGlvbkZpbGVuYW1lID1cbiAgICAgICAgICBxdWVzdGlvbnNTcGxpdFBhdGhbcXVlc3Rpb25zU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcXVlc3Rpb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBxdWVzdGlvblJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4ucXVlc3Rpb25zU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke3F1ZXN0aW9uUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBxdWVzdGlvblJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhxdWVzdGlvblJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBxdWVzdGlvbiA9IEpTT04ucGFyc2UocXVlc3Rpb25SYXdKc29uKVxuICAgICAgICBjbGVhblF1ZXN0aW9uKHF1ZXN0aW9uKVxuICAgICAgICBjb25zdCBxdWVzdGlvbkpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHF1ZXN0aW9uLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBxdWVzdGlvbkNsZWFuOiBRdWVzdGlvbiA9XG4gICAgICAgICAgUXVlc3Rpb25zQ29udmVydC50b1F1ZXN0aW9uKHF1ZXN0aW9uSnNvbilcbiAgICAgICAgY29uc3QgcXVlc3Rpb25DbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgUXVlc3Rpb25zQ29udmVydC5xdWVzdGlvblRvSnNvbihxdWVzdGlvbkNsZWFuKVxuXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5xdWVzdGlvbnNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUocXVlc3Rpb25DbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhxdWVzdGlvbkNsZWFuRmlsZVBhdGgsIHF1ZXN0aW9uQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi54bWxcIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IGNvbXB0ZXNSZW5kdXNTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUZpbGVuYW1lID1cbiAgICAgICAgICBjb21wdGVzUmVuZHVzU3BsaXRQYXRoW2NvbXB0ZXNSZW5kdXNTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFjb21wdGVSZW5kdUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1UmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5jb21wdGVzUmVuZHVzU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2NvbXB0ZVJlbmR1UmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdVJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICBjb21wdGVSZW5kdVJhd0ZpbGVQYXRoLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1ID0gSlNPTi5wYXJzZShjb21wdGVSZW5kdVJhd0pzb24pXG4gICAgICAgIGNsZWFuQ29tcHRlUmVuZHUoY29tcHRlUmVuZHUpXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1SnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY29tcHRlUmVuZHUsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1Q2xlYW46IENvbXB0ZVJlbmR1ID1cbiAgICAgICAgICBDb21wdGVzUmVuZHVzQ29udmVydC50b0NvbXB0ZVJlbmR1KGNvbXB0ZVJlbmR1SnNvbilcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQ29tcHRlc1JlbmR1c0NvbnZlcnQuY29tcHRlUmVuZHVUb0pzb24oY29tcHRlUmVuZHVDbGVhbilcblxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uY29tcHRlc1JlbmR1c1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCwgY29tcHRlUmVuZHVDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IGFueSB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBDbGVhbmluZyBkaXJlY3Rvcnk6ICR7ZGF0YXNldENsZWFuRGlyfeKApmApXG4gIH1cbiAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpXG4gIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldENsZWFuRGlyKSkge1xuICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IHBhdGhuYW1lID0gcGF0aC5qb2luKGRhdGFzZXRDbGVhbkRpciwgZmlsZW5hbWUpXG4gICAgZnMucmVtb3ZlU3luYyhwYXRobmFtZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21taXRBbmRQdXNoVWlkKFxuICByZXBvc2l0b3J5RGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbiAgc3ViZGlyZWN0b3JpZXM6IGFueSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBnaXQudWlkQnJhbmNoVXBkYXRlKFxuICAgICAgcmVwb3NpdG9yeURpcixcbiAgICAgIHN1YmRpcmVjdG9yaWVzLFxuICAgICAgb3B0aW9uc1tcIm5vLXJlc2V0LWFmdGVyLWNvbW1pdFwiXSxcbiAgICApXG4gICAgZm9yIChjb25zdCByZW1vdGUgb2Ygb3B0aW9ucy5yZW1vdGUgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGdpdC5ydW4ocmVwb3NpdG9yeURpciwgYHB1c2ggLS1xdWlldCAke3JlbW90ZX0gdWlkOnVpZGApXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgcmV0dXJuIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnMpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImNsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFXQSxJQUFBTSxTQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxNQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxHQUFBLEdBQUFDLHVCQUFBLENBQUFWLE9BQUE7QUFDQSxJQUFBVyxtQkFBQSxHQUFBWCxPQUFBO0FBS0EsSUFBQVksUUFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsWUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMscUJBQUEsR0FBQWQsT0FBQTtBQUtBLElBQUFlLGFBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQixTQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLFVBQUEsR0FBQWpCLE9BQUE7QUFDQSxJQUFBa0IsT0FBQSxHQUFBbEIsT0FBQTtBQUE4RSxTQUFBbUIseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEs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
|
|
804
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2NsZWFuZXJzIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiX2ZpbGVfc3lzdGVtcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX2xlZ2lzbGF0dXJlcyIsIl9zY3J1dGlucyIsIl9xdWVzdGlvbnMiLCJfZGViYXRzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJpdGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIm8iLCJhbGxvd0FycmF5TGlrZSIsIml0IiwibGVuZ3RoIiwiaSIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImUiLCJfZSIsImYiLCJub3JtYWxDb21wbGV0aW9uIiwiZGlkRXJyIiwiZXJyIiwic3RlcCIsIm5leHQiLCJfZTIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJyIiwibCIsInQiLCJ1IiwiYSIsInB1c2giLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJtdWx0aXBsZSIsIk51bWJlciIsImRlZmF1bHRPcHRpb24iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiY2xlYW5SZW9yZ2FuaXplZERhdGEiLCJfb3B0aW9ucyRsZWdpc2xhdHVyZSIsImRhdGFEaXIiLCJEYXRlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJleGl0Q29kZSIsImdpdEdyb3VwVXJsIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsInVuZGVmaW5lZCIsImNhdGVnb3JpZXMiLCJtYXAiLCJkYXRhc2V0TmFtZSIsImFzc2VydCIsIm5vdFN0cmljdEVxdWFsIiwiRW5hYmxlZERhdGFzZXRzIiwiY29uY2F0IiwiZW5hYmxlZERhdGFzZXRzIiwicmVkdWNlIiwiTm9uZSIsImNob29zZW5EYXRhc2V0cyIsImRhdGFzZXRzIiwibGVnaXNsYXR1cmVzIiwibGVnaXNsYXR1cmUiLCJzb21lIiwiZW5hYmxlZExlZ2lzbGF0dXJlcyIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsImZpbHRlciIsImRhdGFzZXQiLCJMZWdpc2xhdHVyZSIsIkFsbCIsImluY2x1ZGVzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsIl9pdGVyYXRvciIsImFjdGV1cnNFdE9yZ2FuZXMiLCJfc3RlcCIsInBhdGgiLCJiYXNlbmFtZSIsImZpbGVuYW1lIiwiZXhlY1N5bmMiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZW5jb2RpbmciLCJzdGRpbyIsImRhdGFzZXRSYXdEaXIiLCJqb2luIiwiZGF0YXNldENsZWFuRGlyIiwicHVsbCIsImFuYWx5emVBbmRSZW1vdmUiLCJfaXRlcmF0b3IyIiwid2Fsa0RpciIsIl9zdGVwMiIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwiZW5kc1dpdGgiLCJhY3RldXJSYXdGaWxlUGF0aCIsImFwcGx5IiwidmVyYm9zZSIsImNvbnNvbGUiLCJsb2ciLCJhY3RldXJSYXdKc29uIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJhY3RldXIiLCJKU09OIiwicGFyc2UiLCJjbGVhbkFjdGV1ciIsImFjdGV1ckpzb24iLCJzdHJpbmdpZnkiLCJhY3RldXJDbGVhbiIsIkFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0IiwidG9BY3RldXIiLCJhY3RldXJDbGVhbkpzb24iLCJhY3RldXJUb0pzb24iLCJhY3RldXJDbGVhbkZpbGVQYXRoIiwiZW5zdXJlRGlyU3luYyIsImRpcm5hbWUiLCJ3cml0ZUZpbGVTeW5jIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lUmF3RmlsZVBhdGgiLCJvcmdhbmVSYXdKc29uIiwib3JnYW5lIiwiY2xlYW5PcmdhbmUiLCJvcmdhbmVKc29uIiwib3JnYW5lQ2xlYW4iLCJ0b09yZ2FuZSIsIm9yZ2FuZUNsZWFuSnNvbiIsIm9yZ2FuZVRvSnNvbiIsIm9yZ2FuZUNsZWFuRmlsZVBhdGgiLCJjb21taXQiLCJlcnJvckNvZGUiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiY29tbWl0QW5kUHVzaFVpZCIsIkFnZW5kYXMiLCJfaXRlcmF0b3I0IiwiYWdlbmRhcyIsIl9zdGVwNCIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvblJhd0ZpbGVQYXRoIiwicmV1bmlvblJhd0pzb24iLCJyZXVuaW9uIiwiY2xlYW5SZXVuaW9uIiwicmV1bmlvbkpzb24iLCJyZXVuaW9uQ2xlYW4iLCJBZ2VuZGFzQ29udmVydCIsInRvUmV1bmlvbiIsInJldW5pb25DbGVhbkpzb24iLCJyZXVuaW9uVG9Kc29uIiwicmV1bmlvbkNsZWFuRmlsZVBhdGgiLCJBbWVuZGVtZW50cyIsIl9pdGVyYXRvcjYiLCJhbWVuZGVtZW50cyIsIl9zdGVwNiIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudFJhd0ZpbGVQYXRoIiwiYW1lbmRlbWVudFJhd0pzb24iLCJhbWVuZGVtZW50IiwiY2xlYW5BbWVuZGVtZW50IiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50Q2xlYW4iLCJBbWVuZGVtZW50c0NvbnZlcnQiLCJ0b0FtZW5kZW1lbnQiLCJhbWVuZGVtZW50Q2xlYW5Kc29uIiwiYW1lbmRlbWVudFRvSnNvbiIsImFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjgiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX3N0ZXA4IiwiX2l0ZXJhdG9yOSIsIl9zdGVwOSIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50UmF3RmlsZVBhdGgiLCJkb2N1bWVudFJhd0pzb24iLCJkb2N1bWVudCIsImNsZWFuRG9jdW1lbnRPckRpdmlzaW9uIiwiZG9jdW1lbnRKc29uIiwiZG9jdW1lbnRDbGVhbiIsIkRvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0IiwidG9Eb2N1bWVudCIsImRvY3VtZW50Q2xlYW5Kc29uIiwiZG9jdW1lbnRUb0pzb24iLCJkb2N1bWVudENsZWFuRmlsZVBhdGgiLCJfaXRlcmF0b3IxMCIsIl9zdGVwMTAiLCJkb3NzaWVyU3BsaXRQYXRoIiwiZG9zc2llckZpbGVuYW1lIiwiZG9zc2llclJhd0ZpbGVQYXRoIiwiZG9zc2llclJhd0pzb24iLCJkb3NzaWVyIiwiY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSIsImRvc3NpZXJKc29uIiwiZG9zc2llckNsZWFuIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsImRvc3NpZXJDbGVhbkpzb24iLCJkb3NzaWVyUGFybGVtZW50YWlyZVRvSnNvbiIsImRvc3NpZXJDbGVhbkZpbGVQYXRoIiwiU2NydXRpbnMiLCJfaXRlcmF0b3IxMSIsInNjcnV0aW5zIiwiX3N0ZXAxMSIsIl9pdGVyYXRvcjEyIiwiX3N0ZXAxMiIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluUmF3RmlsZVBhdGgiLCJzY3J1dGluUmF3SnNvbiIsInNjcnV0aW4iLCJjbGVhblNjcnV0aW4iLCJzY3J1dGluSnNvbiIsInNjcnV0aW5DbGVhbiIsIlNjcnV0aW5zQ29udmVydCIsInRvU2NydXRpbiIsInNjcnV0aW5DbGVhbkpzb24iLCJzY3J1dGluVG9Kc29uIiwic2NydXRpbkNsZWFuRmlsZVBhdGgiLCJRdWVzdGlvbnMiLCJfaXRlcmF0b3IxMyIsInF1ZXN0aW9ucyIsIl9zdGVwMTMiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJxdWVzdGlvbnNTcGxpdFBhdGgiLCJxdWVzdGlvbkZpbGVuYW1lIiwicXVlc3Rpb25SYXdGaWxlUGF0aCIsInF1ZXN0aW9uUmF3SnNvbiIsInF1ZXN0aW9uIiwiY2xlYW5RdWVzdGlvbiIsInF1ZXN0aW9uSnNvbiIsInF1ZXN0aW9uQ2xlYW4iLCJRdWVzdGlvbnNDb252ZXJ0IiwidG9RdWVzdGlvbiIsInF1ZXN0aW9uQ2xlYW5Kc29uIiwicXVlc3Rpb25Ub0pzb24iLCJxdWVzdGlvbkNsZWFuRmlsZVBhdGgiLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9pdGVyYXRvcjE1IiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJfc3RlcDE1IiwiX2l0ZXJhdG9yMTYiLCJfc3RlcDE2IiwiY29tcHRlc1JlbmR1c1NwbGl0UGF0aCIsImNvbXB0ZVJlbmR1RmlsZW5hbWUiLCJjb21wdGVSZW5kdVJhd0ZpbGVQYXRoIiwiY29tcHRlUmVuZHVSYXdKc29uIiwiY29tcHRlUmVuZHUiLCJjbGVhbkNvbXB0ZVJlbmR1IiwiY29tcHRlUmVuZHVKc29uIiwiY29tcHRlUmVuZHVDbGVhbiIsIkNvbXB0ZXNSZW5kdXNDb252ZXJ0IiwidG9Db21wdGVSZW5kdSIsImNvbXB0ZVJlbmR1Q2xlYW5Kc29uIiwiY29tcHRlUmVuZHVUb0pzb24iLCJjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGgiLCJleGlzdGluZ0RhdGVUb0pzb24iLCJzaWxlbnQiLCJfaXRlcmF0b3IxNyIsInJlYWRkaXJTeW5jIiwiX3N0ZXAxNyIsInBhdGhuYW1lIiwicmVtb3ZlU3luYyIsInJlcG9zaXRvcnlEaXIiLCJzdWJkaXJlY3RvcmllcyIsImVycm9yIiwidWlkQnJhbmNoVXBkYXRlIiwiX2l0ZXJhdG9yMTgiLCJfc3RlcDE4IiwicnVuIiwiY2hpbGRQcm9jZXNzIiwibWFpbiIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9jbGVhbl9yZW9yZ2FuaXplZF9kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQge1xuICBjbGVhbkFjdGV1cixcbiAgY2xlYW5BbWVuZGVtZW50LFxuICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbixcbiAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgY2xlYW5PcmdhbmUsXG4gIGNsZWFuUmV1bmlvbixcbiAgY2xlYW5TY3J1dGluLFxuICBjbGVhblF1ZXN0aW9uLFxuICBjbGVhbkNvbXB0ZVJlbmR1LFxufSBmcm9tIFwiLi4vY2xlYW5lcnNcIlxuaW1wb3J0IHsgZGF0YXNldHMsIEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxufSBmcm9tIFwiLi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc0NvbnZlcnQsIFNjcnV0aW4gfSBmcm9tIFwiLi4vdHlwZXMvc2NydXRpbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBRdWVzdGlvbnNDb252ZXJ0LCBRdWVzdGlvbiB9IGZyb20gXCIuLi90eXBlcy9xdWVzdGlvbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBDb21wdGVzUmVuZHVzQ29udmVydCwgQ29tcHRlUmVuZHUgfSBmcm9tIFwiLi4vdHlwZXMvZGViYXRzXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGFsaWFzOiBcIkNcIixcbiAgICAgIGhlbHA6IFwiY2xvbmUgcmVwb3NpdG9yaWVzIGZyb20gZ2l2ZW4gZ3JvdXAgKG9yIG9yZ2FuaXphdGlvbikgZ2l0IFVSTFwiLFxuICAgICAgbmFtZTogXCJjbG9uZVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiY1wiLFxuICAgICAgaGVscDogXCJjb21taXQgY2xlYW4gZmlsZXNcIixcbiAgICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiZFwiLFxuICAgICAgaGVscDogXCJzaW5nbGUgZGF0YXNldCB0byByZW9yZ2FuaXplXCIsXG4gICAgICBuYW1lOiBcImRhdGFzZXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImtcIixcbiAgICAgIGRlZmF1bHRWYWx1ZTogW1wiQWxsXCJdLFxuICAgICAgaGVscDogXCJjYXRlZ29yaWVzIG9mIGRhdGFzZXRzIHRvIHJlb3JnYW5pemVcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJjYXRlZ29yaWVzXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJsXCIsXG4gICAgICBoZWxwOiBcImxlZ2lzbGF0dXJlcyBvZiBjYXRlZ29yaWVzIG9mIGRhdGFzZXRzIHRvIHJldHJpZXZlOyBsZWF2ZSBlbXB0eSBvciB1c2UgMCBmb3IgYWxsXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInBcIixcbiAgICAgIGhlbHA6IFwicHVsbCByZXBvc2l0b3JpZXMgYmVmb3JlIHByb2NlZWRpbmdcIixcbiAgICAgIG5hbWU6IFwicHVsbFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInJcIixcbiAgICAgIGhlbHA6IFwicHVzaCBjb21taXQgdG8gZ2l2ZW4gcmVtb3RlXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwicmVtb3RlXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJzXCIsXG4gICAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWxwOiBcImRvIG5vdCByZXNldCAtLWhhcmQgYWZ0ZXIgY29tbWl0IHRvIHNhdmUgSS9PIGlmIHRoZSB3b3JraW5nIHRyZWUgaXMgdG8gYmUgZGlzY2FyZGVkXCIsXG4gICAgICBuYW1lOiBcIm5vLXJlc2V0LWFmdGVyLWNvbW1pdFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInZcIixcbiAgICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnM6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IGRhdGFEaXI6IHN0cmluZyA9IG9wdGlvbnMuZGF0YURpclxuXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG5cbiAgbGV0IGV4aXRDb2RlID0gMTAgLy8gTm90aGluZyB0byBjb21taXRcbiAgY29uc3QgZ2l0R3JvdXBVcmwgPSBvcHRpb25zLmNsb25lXG4gICAgPyBvcHRpb25zLmNsb25lLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gICAgOiB1bmRlZmluZWRcblxuICBvcHRpb25zLmNhdGVnb3JpZXMubWFwKChkYXRhc2V0TmFtZTogc3RyaW5nKSA9PlxuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBgVW5rbm93biBuYW1lIG9mIGRhdGFzZXQ6ICR7ZGF0YXNldE5hbWV9YCxcbiAgICApLFxuICApXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IG9wdGlvbnMuY2F0ZWdvcmllcy5yZWR1Y2UoXG4gICAgKGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLCBkYXRhc2V0TmFtZTogc3RyaW5nKTogRW5hYmxlZERhdGFzZXRzID0+XG4gICAgICBlbmFibGVkRGF0YXNldHMgfFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICBFbmFibGVkRGF0YXNldHMuTm9uZSxcbiAgKVxuXG4gIGxldCBjaG9vc2VuRGF0YXNldHMgPSBkYXRhc2V0c1xuICAvLyBXaGVuIGEgZ2l2ZW4gbGVnaXNsYXR1cmUgaXMgMCwgaXQgaXMgdGhlIHNhbWUgYXMgZ2l2aW5nIG5vIGxlZ2lzbGF0dXJlOlxuICAvLyBJdCBtZWFucyBcImV2ZXJ5IGxlZ2lzbGF0dXJlc1wiLlxuICBjb25zdCBsZWdpc2xhdHVyZXMgPSBvcHRpb25zLmxlZ2lzbGF0dXJlPy5zb21lKFxuICAgIChsZWdpc2xhdHVyZTogbnVtYmVyKSA9PiBsZWdpc2xhdHVyZSA9PT0gMCxcbiAgKVxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBvcHRpb25zLmxlZ2lzbGF0dXJlXG4gIGlmIChsZWdpc2xhdHVyZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGVuYWJsZWRMZWdpc2xhdHVyZXMgPSBsZWdpc2xhdHVyZXMubWFwKChsZWdpc2xhdHVyZTogbnVtYmVyKSA9PlxuICAgICAgbGVnaXNsYXR1cmUudG9TdHJpbmcoKSxcbiAgICApXG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNob29zZW5EYXRhc2V0cykpIHtcbiAgICAgIGNob29zZW5EYXRhc2V0c1trZXkgYXMga2V5b2YgdHlwZW9mIGNob29zZW5EYXRhc2V0c10gPSB2YWx1ZS5maWx0ZXIoXG4gICAgICAgIChkYXRhc2V0OiB7IGxlZ2lzbGF0dXJlOiBhbnkgfSkgPT5cbiAgICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgfHxcbiAgICAgICAgICBlbmFibGVkTGVnaXNsYXR1cmVzLmluY2x1ZGVzKGRhdGFzZXQubGVnaXNsYXR1cmUpLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCByZXNldCAtLWhhcmQgb3JpZ2luL21hc3RlcmAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVsbCAtLXJlYmFzZWAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcImFjdGV1cnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ckZpbGVuYW1lID0gYWN0ZXVyU3BsaXRQYXRoW2FjdGV1clNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFjdGV1ckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1clJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLmFjdGV1clNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7YWN0ZXVyUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYWN0ZXVyUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IEpTT04ucGFyc2UoYWN0ZXVyUmF3SnNvbilcbiAgICAgICAgY2xlYW5BY3RldXIoYWN0ZXVyKVxuICAgICAgICBjb25zdCBhY3RldXJKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuOiBBY3RldXIgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cihhY3RldXJKc29uKVxuICAgICAgICBjb25zdCBhY3RldXJDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQuYWN0ZXVyVG9Kc29uKGFjdGV1ckNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uYWN0ZXVyU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGFjdGV1ckNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGFjdGV1ckNsZWFuRmlsZVBhdGgsIGFjdGV1ckNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVSYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5vcmdhbmVTcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke29yZ2FuZVJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZVJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBvcmdhbmUgPSBKU09OLnBhcnNlKG9yZ2FuZVJhd0pzb24pXG4gICAgICAgIGNsZWFuT3JnYW5lKG9yZ2FuZSlcbiAgICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbjogT3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgY29uc3Qgb3JnYW5lQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0Lm9yZ2FuZVRvSnNvbihvcmdhbmVDbGVhbilcblxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLm9yZ2FuZVNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShvcmdhbmVDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhvcmdhbmVDbGVhbkZpbGVQYXRoLCBvcmdhbmVDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcImFjdGV1cnNcIiwgXCJvcmdhbmVzXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPSByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvblJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLnJldW5pb25TcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke3JldW5pb25SYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25SYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocmV1bmlvblJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCByZXVuaW9uID0gSlNPTi5wYXJzZShyZXVuaW9uUmF3SnNvbilcbiAgICAgICAgY2xlYW5SZXVuaW9uKHJldW5pb24pXG4gICAgICAgIGNvbnN0IHJldW5pb25Kc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShyZXVuaW9uLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCByZXVuaW9uQ2xlYW46IFJldW5pb24gPSBBZ2VuZGFzQ29udmVydC50b1JldW5pb24ocmV1bmlvbkpzb24pXG4gICAgICAgIGNvbnN0IHJldW5pb25DbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQWdlbmRhc0NvbnZlcnQucmV1bmlvblRvSnNvbihyZXVuaW9uQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgcmV1bmlvbkNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4ucmV1bmlvblNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShyZXVuaW9uQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocmV1bmlvbkNsZWFuRmlsZVBhdGgsIHJldW5pb25DbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudFJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHthbWVuZGVtZW50UmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50UmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgIGFtZW5kZW1lbnRSYXdGaWxlUGF0aCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gSlNPTi5wYXJzZShhbWVuZGVtZW50UmF3SnNvbilcbiAgICAgICAgY2xlYW5BbWVuZGVtZW50KGFtZW5kZW1lbnQpXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShhbWVuZGVtZW50LCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBhbWVuZGVtZW50Q2xlYW46IEFtZW5kZW1lbnQgPVxuICAgICAgICAgIEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnQoYW1lbmRlbWVudEpzb24pXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQW1lbmRlbWVudHNDb252ZXJ0LmFtZW5kZW1lbnRUb0pzb24oYW1lbmRlbWVudENsZWFuKVxuXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoYW1lbmRlbWVudENsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoLCBhbWVuZGVtZW50Q2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IGRvY3VtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wiZG9jdW1lbnRzXCJdKSkge1xuICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVuYW1lID0gZG9jdW1lbnRTcGxpdFBhdGhbZG9jdW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50UmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtkb2N1bWVudFJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBKU09OLnBhcnNlKGRvY3VtZW50UmF3SnNvbilcbiAgICAgICAgY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24oZG9jdW1lbnQpXG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZG9jdW1lbnQsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q2xlYW46IERvY3VtZW50ID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgICAgY29uc3QgZG9jdW1lbnRDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9jdW1lbnRUb0pzb24oZG9jdW1lbnRDbGVhbilcblxuICAgICAgICBjb25zdCBkb2N1bWVudENsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uZG9jdW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoZG9jdW1lbnRDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkb2N1bWVudENsZWFuRmlsZVBhdGgsIGRvY3VtZW50Q2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJkb3NzaWVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9zc2llckZpbGVuYW1lID0gZG9zc2llclNwbGl0UGF0aFtkb3NzaWVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9zc2llckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJSYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5kb3NzaWVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtkb3NzaWVyUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvc3NpZXJSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9zc2llciA9IEpTT04ucGFyc2UoZG9zc2llclJhd0pzb24pXG4gICAgICAgIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llcilcbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGRvc3NpZXIsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbjogRG9zc2llclBhcmxlbWVudGFpcmUgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24oZG9zc2llckNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmRvc3NpZXJTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoZG9zc2llckNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGRvc3NpZXJDbGVhbkZpbGVQYXRoLCBkb3NzaWVyQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCJkb2N1bWVudHNcIiwgXCJkb3NzaWVyc1wiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpblJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke3NjcnV0aW5SYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5SYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpblJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gSlNPTi5wYXJzZShzY3J1dGluUmF3SnNvbilcbiAgICAgICAgY2xlYW5TY3J1dGluKHNjcnV0aW4pXG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShzY3J1dGluLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBzY3J1dGluQ2xlYW46IFNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgICBjb25zdCBzY3J1dGluQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIFNjcnV0aW5zQ29udmVydC5zY3J1dGluVG9Kc29uKHNjcnV0aW5DbGVhbilcblxuICAgICAgICBjb25zdCBzY3J1dGluQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5zY3J1dGluU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKHNjcnV0aW5DbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhzY3J1dGluQ2xlYW5GaWxlUGF0aCwgc2NydXRpbkNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBxdWVzdGlvbnNTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBxdWVzdGlvbkZpbGVuYW1lID1cbiAgICAgICAgICBxdWVzdGlvbnNTcGxpdFBhdGhbcXVlc3Rpb25zU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcXVlc3Rpb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBxdWVzdGlvblJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4ucXVlc3Rpb25zU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke3F1ZXN0aW9uUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBxdWVzdGlvblJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhxdWVzdGlvblJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBxdWVzdGlvbiA9IEpTT04ucGFyc2UocXVlc3Rpb25SYXdKc29uKVxuICAgICAgICBjbGVhblF1ZXN0aW9uKHF1ZXN0aW9uKVxuICAgICAgICBjb25zdCBxdWVzdGlvbkpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHF1ZXN0aW9uLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBxdWVzdGlvbkNsZWFuOiBRdWVzdGlvbiA9XG4gICAgICAgICAgUXVlc3Rpb25zQ29udmVydC50b1F1ZXN0aW9uKHF1ZXN0aW9uSnNvbilcbiAgICAgICAgY29uc3QgcXVlc3Rpb25DbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgUXVlc3Rpb25zQ29udmVydC5xdWVzdGlvblRvSnNvbihxdWVzdGlvbkNsZWFuKVxuXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5xdWVzdGlvbnNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUocXVlc3Rpb25DbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhxdWVzdGlvbkNsZWFuRmlsZVBhdGgsIHF1ZXN0aW9uQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi54bWxcIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IGNvbXB0ZXNSZW5kdXNTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUZpbGVuYW1lID1cbiAgICAgICAgICBjb21wdGVzUmVuZHVzU3BsaXRQYXRoW2NvbXB0ZXNSZW5kdXNTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFjb21wdGVSZW5kdUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1UmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5jb21wdGVzUmVuZHVzU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2NvbXB0ZVJlbmR1UmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdVJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICBjb21wdGVSZW5kdVJhd0ZpbGVQYXRoLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1ID0gSlNPTi5wYXJzZShjb21wdGVSZW5kdVJhd0pzb24pXG4gICAgICAgIGNsZWFuQ29tcHRlUmVuZHUoY29tcHRlUmVuZHUpXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1SnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY29tcHRlUmVuZHUsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1Q2xlYW46IENvbXB0ZVJlbmR1ID1cbiAgICAgICAgICBDb21wdGVzUmVuZHVzQ29udmVydC50b0NvbXB0ZVJlbmR1KGNvbXB0ZVJlbmR1SnNvbilcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQ29tcHRlc1JlbmR1c0NvbnZlcnQuY29tcHRlUmVuZHVUb0pzb24oY29tcHRlUmVuZHVDbGVhbilcblxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uY29tcHRlc1JlbmR1c1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCwgY29tcHRlUmVuZHVDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IGFueSB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBDbGVhbmluZyBkaXJlY3Rvcnk6ICR7ZGF0YXNldENsZWFuRGlyfeKApmApXG4gIH1cbiAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpXG4gIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldENsZWFuRGlyKSkge1xuICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IHBhdGhuYW1lID0gcGF0aC5qb2luKGRhdGFzZXRDbGVhbkRpciwgZmlsZW5hbWUpXG4gICAgZnMucmVtb3ZlU3luYyhwYXRobmFtZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21taXRBbmRQdXNoVWlkKFxuICByZXBvc2l0b3J5RGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbiAgc3ViZGlyZWN0b3JpZXM6IGFueSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBnaXQudWlkQnJhbmNoVXBkYXRlKFxuICAgICAgcmVwb3NpdG9yeURpcixcbiAgICAgIHN1YmRpcmVjdG9yaWVzLFxuICAgICAgb3B0aW9uc1tcIm5vLXJlc2V0LWFmdGVyLWNvbW1pdFwiXSxcbiAgICApXG4gICAgZm9yIChjb25zdCByZW1vdGUgb2Ygb3B0aW9ucy5yZW1vdGUgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGdpdC5ydW4ocmVwb3NpdG9yeURpciwgYHB1c2ggLS1xdWlldCAke3JlbW90ZX0gdWlkOnVpZGApXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgcmV0dXJuIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnMpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImNsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFXQSxJQUFBTSxTQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxNQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxHQUFBLEdBQUFDLHVCQUFBLENBQUFWLE9BQUE7QUFDQSxJQUFBVyxtQkFBQSxHQUFBWCxPQUFBO0FBS0EsSUFBQVksUUFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsWUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMscUJBQUEsR0FBQWQsT0FBQTtBQUtBLElBQUFlLGFBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQixTQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLFVBQUEsR0FBQWpCLE9BQUE7QUFDQSxJQUFBa0IsT0FBQSxHQUFBbEIsT0FBQTtBQUE4RSxTQUFBbUIseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYs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
|