@tricoteuses/assemblee 1.2.1 → 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.
Files changed (58) hide show
  1. package/lib/api.d.ts +1 -0
  2. package/lib/api.js +2 -1
  3. package/lib/api.mjs +2 -1
  4. package/lib/bugs/acteur-00010/plugin.test.js +3 -3
  5. package/lib/bugs/acteur-00010.js +3 -3
  6. package/lib/bugs/agenda-00002/plugin.test.js +3 -3
  7. package/lib/bugs/agenda-00002.js +3 -3
  8. package/lib/bugs/agenda-00008/plugin.test.js +3 -3
  9. package/lib/bugs/agenda-00008.js +3 -3
  10. package/lib/bugs/agenda-00011/plugin.test.js +3 -3
  11. package/lib/bugs/agenda-00011.js +3 -3
  12. package/lib/bugs.js +3 -3
  13. package/lib/cleaners/acteurs.js +2 -2
  14. package/lib/cleaners/organes.js +2 -2
  15. package/lib/cleaners/reunions.js +2 -2
  16. package/lib/cleaners/xml.js +2 -2
  17. package/lib/datasets.js +3 -3
  18. package/lib/dossiers_legislatifs.js +3 -3
  19. package/lib/file_systems.js +3 -3
  20. package/lib/inserters.js +8 -1
  21. package/lib/inserters.mjs +8 -1
  22. package/lib/loaders.js +3 -3
  23. package/lib/parsers/documents.js +3 -3
  24. package/lib/parsers/recherche_amendements.js +11 -11
  25. package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
  26. package/lib/raw_types/acteurs_et_organes.js +6 -2
  27. package/lib/raw_types/acteurs_et_organes.mjs +5 -1
  28. package/lib/raw_types/agendas.js +1 -1
  29. package/lib/raw_types/amendements.js +1 -1
  30. package/lib/raw_types/debats.js +1 -1
  31. package/lib/raw_types/dossiers_legislatifs.js +2 -2
  32. package/lib/raw_types/questions.js +1 -1
  33. package/lib/raw_types/scrutins.js +1 -1
  34. package/lib/scripts/bugs_helper.js +5 -5
  35. package/lib/scripts/clean_reorganized_data.js +4 -4
  36. package/lib/scripts/document_dossiers_legislatifs.js +7 -5
  37. package/lib/scripts/document_dossiers_legislatifs.mjs +4 -2
  38. package/lib/scripts/raw_types_from_amendements.js +3 -3
  39. package/lib/scripts/reorganize_data.js +4 -4
  40. package/lib/scripts/retrieve_deputes_photos.js +8 -8
  41. package/lib/scripts/retrieve_documents.js +6 -6
  42. package/lib/scripts/retrieve_open_data.js +3 -3
  43. package/lib/scripts/retrieve_pending_amendments.js +6 -6
  44. package/lib/scripts/retrieve_senateurs_photos.js +8 -8
  45. package/lib/scripts/retrieve_textes_lois.js +5 -5
  46. package/lib/scripts/validate_json.js +3 -3
  47. package/lib/shared_types/codes_actes.js +3 -3
  48. package/lib/types/acteurs_et_organes.d.ts +2 -0
  49. package/lib/types/acteurs_et_organes.js +6 -2
  50. package/lib/types/acteurs_et_organes.mjs +5 -1
  51. package/lib/types/agendas.js +1 -1
  52. package/lib/types/amendements.js +1 -1
  53. package/lib/types/debats.js +1 -1
  54. package/lib/types/dossiers_legislatifs.js +2 -2
  55. package/lib/types/questions.js +1 -1
  56. package/lib/types/scrutins.js +1 -1
  57. package/lib/urls.js +3 -3
  58. package/package.json +6 -6
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
+ 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");
@@ -61,12 +61,12 @@ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableTo
61
61
  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."); }
62
62
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
63
63
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
64
- 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(_e2) { throw _e2; }, 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(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
64
+ 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; } } }; }
65
65
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
66
66
  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."); }
67
67
  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); }
68
68
  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; }
69
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
69
+ 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; } }
70
70
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
71
71
  var optionsDefinitions = [{
72
72
  alias: "C",
@@ -1084,4 +1084,4 @@ if (process.argv[1].endsWith("reorganize_data.ts")) {
1084
1084
  var options = (0, _commandLineArgs["default"])(optionsDefinitions);
1085
1085
  process.exit(reorganizeData(options));
1086
1086
  }
1087
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiZ2l0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZmlsZV9zeXN0ZW1zIiwiX2xvYWRlcnMiLCJfYWN0ZXVyc19ldF9vcmdhbmVzIiwiX2FnZW5kYXMiLCJfYW1lbmRlbWVudHMiLCJfZG9zc2llcnNfbGVnaXNsYXRpZnMiLCJfc2NydXRpbnMiLCJfcXVlc3Rpb25zIiwiX2RlYmF0cyIsIl9sZWdpc2xhdHVyZXMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIml0ZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwibyIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJsZW5ndGgiLCJpIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZSIsIl9lMiIsImYiLCJub3JtYWxDb21wbGV0aW9uIiwiZGlkRXJyIiwiZXJyIiwic3RlcCIsIm5leHQiLCJfZTMiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJfaSIsIl9zIiwiX2UiLCJfeCIsIl9yIiwiX2FyciIsIl9uIiwiX2QiLCJwdXNoIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJtdWx0aXBsZSIsIk51bWJlciIsImRlZmF1bHRPcHRpb24iLCJyZW9yZ2FuaXplRGF0YSIsIm9wdGlvbnMiLCJfb3B0aW9ucyRsZWdpc2xhdHVyZSIsImRhdGFEaXIiLCJEYXRlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJleGl0Q29kZSIsImdpdEdyb3VwVXJsIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsInVuZGVmaW5lZCIsInZhbGlkYXRlUmF3RGF0YSIsImNhdGVnb3JpZXMiLCJtYXAiLCJkYXRhc2V0TmFtZSIsImFzc2VydCIsIm5vdFN0cmljdEVxdWFsIiwiRW5hYmxlZERhdGFzZXRzIiwiY29uY2F0IiwiZW5hYmxlZERhdGFzZXRzIiwicmVkdWNlIiwiTm9uZSIsImNob29zZW5EYXRhc2V0cyIsImRhdGFzZXRzIiwibGVnaXNsYXR1cmVzIiwibGVnaXNsYXR1cmUiLCJzb21lIiwiZW5hYmxlZExlZ2lzbGF0dXJlcyIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJmaWx0ZXIiLCJkYXRhc2V0IiwiTGVnaXNsYXR1cmUiLCJBbGwiLCJpbmNsdWRlcyIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJfaXRlcmF0b3IiLCJhY3RldXJzRXRPcmdhbmVzIiwiX3N0ZXAiLCJvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoIiwicGF0aCIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJiYXNlbmFtZSIsImV4ZWNTeW5jIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJkYXRhc2V0UmVvcmdhbml6ZWREaXIiLCJwdWxsIiwiZnMiLCJlbnN1cmVEaXJTeW5jIiwiX2l0ZXJhdG9yMiIsInJlYWRkaXJTeW5jIiwiX3N0ZXAyIiwicmVtb3ZlU3luYyIsImFjdGV1cnNSZW9yZ2FuaXplZERpciIsIm1rZGlyU3luYyIsIm9yZ2FuZXNSZW9yZ2FuaXplZERpciIsInN0cnVjdHVyZSIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJTaW5nbGVGaWxlIiwib3JpZ2luYWxKc29uIiwicmVhZEZpbGVTeW5jIiwib3JpZ2luYWxEYXRhIiwiQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJKU09OIiwicGFyc2UiLCJfaXRlcmF0b3IzIiwiYWN0ZXVycyIsImFjdGV1ciIsIl9zdGVwMyIsInJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwidWlkIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsIl9pdGVyYXRvcjQiLCJvcmdhbmVzIiwib3JnYW5lIiwiX3N0ZXA0IiwiU2VnbWVudGVkRmlsZXMiLCJkZXBvcnRzQnlBY3RldXJVaWQiLCJleGlzdHNTeW5jIiwiX2l0ZXJhdG9yNSIsIndhbGtEaXIiLCJfc3RlcDUiLCJkZXBvcnRTcGxpdFBhdGgiLCJkZXBvcnRGaWxlbmFtZSIsImVuZHNXaXRoIiwiZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCIsImFwcGx5IiwidmVyYm9zZSIsImRlcG9ydE9yaWdpbmFsSnNvbiIsImRlcG9ydE9yaWdpbmFsIiwidG9EZXBvcnQiLCJkZXBvcnQiLCJkZXBvcnRzIiwiYWN0ZXVyUmVmIiwiX2kyIiwiX09iamVjdCR2YWx1ZXMiLCJ2YWx1ZXMiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwibWFuZGF0c0J5QWN0ZXVyVWlkIiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsIm1hbmRhdFNwbGl0UGF0aCIsIm1hbmRhdEZpbGVuYW1lIiwibWFuZGF0T3JpZ2luYWxGaWxlUGF0aCIsIm1hbmRhdE9yaWdpbmFsSnNvbiIsIm1hbmRhdE9yaWdpbmFsIiwidG9NYW5kYXRXcmFwcGVyIiwibWFuZGF0IiwibWFuZGF0cyIsIl9pMyIsIl9PYmplY3QkdmFsdWVzMiIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImFjdGV1ck9yaWdpbmFsRmlsZVBhdGgiLCJhY3RldXJPcmlnaW5hbEpzb24iLCJhY3RldXJPcmlnaW5hbCIsInRvQWN0ZXVyIiwiYWN0ZXVyVWlkIiwic3RyaWN0RXF1YWwiLCJhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJvcmdhbmVTcGxpdFBhdGgiLCJvcmdhbmVGaWxlbmFtZSIsIm9yZ2FuZU9yaWdpbmFsRmlsZVBhdGgiLCJvcmdhbmVPcmlnaW5hbEpzb24iLCJvcmdhbmVPcmlnaW5hbCIsInRvT3JnYW5lIiwib3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgiLCJjb21taXQiLCJlcnJvckNvZGUiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiQWdlbmRhcyIsIl9pdGVyYXRvcjkiLCJhZ2VuZGFzIiwiX3N0ZXA5IiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwiQWdlbmRhc1Jhd0NvbnZlcnQiLCJ0b0FnZW5kYXMiLCJfaXRlcmF0b3IxMSIsInJldW5pb25zIiwicmV1bmlvbiIsIl9zdGVwMTEiLCJ3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24iLCJfaXRlcmF0b3IxMiIsIl9zdGVwMTIiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgiLCJyZXVuaW9uT3JpZ2luYWxKc29uIiwicmV1bmlvbk9yaWdpbmFsIiwidG9SZXVuaW9uIiwiQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IxMyIsImFtZW5kZW1lbnRzIiwiX3N0ZXAxMyIsIl9pdGVyYXRvcjE0IiwiX3N0ZXAxNCIsIkFtZW5kZW1lbnRzUmF3Q29udmVydCIsInRvQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IxNSIsInRleHRlc0V0QW1lbmRlbWVudHMiLCJ0ZXh0ZWxlZyIsIl9zdGVwMTUiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJfaXRlcmF0b3IxNiIsIl9zdGVwMTYiLCJhbWVuZGVtZW50Iiwid3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uIiwiX2l0ZXJhdG9yMTciLCJfc3RlcDE3IiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiYW1lbmRlbWVudE9yaWdpbmFsSnNvbiIsImFtZW5kZW1lbnRPcmlnaW5hbCIsInRvQW1lbmRlbWVudFdyYXBwZXIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yMTgiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX3N0ZXAxOCIsIl9pdGVyYXRvcjE5IiwiX3N0ZXAxOSIsImRvY3VtZW50c0RpciIsImRvc3NpZXJzRGlyIiwiRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQiLCJ0b0Rvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3IyMCIsInRleHRlc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnQiLCJfc3RlcDIwIiwid3JpdGVEb2N1bWVudFJlb3JnYW5pemVkSnNvbiIsIl9pdGVyYXRvcjIxIiwiZG9zc2llciIsIl9zdGVwMjEiLCJkb3NzaWVyUGFybGVtZW50YWlyZSIsIndyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24iLCJfaXRlcmF0b3IyMiIsIl9zdGVwMjIiLCJkb2N1bWVudFNwbGl0UGF0aCIsImRvY3VtZW50RmlsZW5hbWUiLCJkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgiLCJkb2N1bWVudE9yaWdpbmFsSnNvbiIsImRvY3VtZW50T3JpZ2luYWwiLCJ0b0RvY3VtZW50IiwiX2l0ZXJhdG9yMjMiLCJfc3RlcDIzIiwiZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24iLCJkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsIlNjcnV0aW5zIiwiX2l0ZXJhdG9yMjQiLCJzY3J1dGlucyIsIl9zdGVwMjQiLCJfaXRlcmF0b3IyNSIsIl9zdGVwMjUiLCJTY3J1dGluc1Jhd0NvbnZlcnQiLCJ0b1NjcnV0aW5zIiwiX2l0ZXJhdG9yMjYiLCJzY3J1dGluIiwiX3N0ZXAyNiIsIndyaXRlU2NydXRpblJlb3JnYW5pemVkSnNvbiIsIl9pdGVyYXRvcjI3IiwiX3N0ZXAyNyIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCIsInNjcnV0aW5PcmlnaW5hbEpzb24iLCJzY3J1dGluT3JpZ2luYWwiLCJ0b1NjcnV0aW5XcmFwcGVyIiwiUXVlc3Rpb25zIiwiX2l0ZXJhdG9yMjgiLCJxdWVzdGlvbnMiLCJfc3RlcDI4IiwiX2l0ZXJhdG9yMjkiLCJfc3RlcDI5IiwiX2l0ZXJhdG9yMzAiLCJfc3RlcDMwIiwicXVlc3Rpb25TcGxpdFBhdGgiLCJxdWVzdGlvbkZpbGVuYW1lIiwicXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoIiwicXVlc3Rpb25PcmlnaW5hbEpzb24iLCJxdWVzdGlvbk9yaWdpbmFsIiwiUXVlc3Rpb25zUmF3Q29udmVydCIsInRvUXVlc3Rpb25XcmFwcGVyIiwicXVlc3Rpb24iLCJ3cml0ZVF1ZXN0aW9uc1Jlb3JnYW5pemVkSnNvbiIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX2l0ZXJhdG9yMzEiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9zdGVwMzEiLCJfaXRlcmF0b3IzMiIsIl9zdGVwMzIiLCJfaXRlcmF0b3IzMyIsIl9zdGVwMzMiLCJjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCIsImNvbXB0ZVJlbmR1U2VhbmNlRmlsZW5hbWUiLCJjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsRmlsZVBhdGgiLCJjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbiIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWwiLCJDb21wdGVzUmVuZHVzUmF3Q29udmVydCIsInRvQ29tcHRlUmVuZHVXcmFwcGVyIiwiY29tcHRlUmVuZHVTZWFuY2UiLCJjb21wdGVSZW5kdSIsIndyaXRlQ29tcHRlc1JlbmR1c1Jlb3JnYW5pemVkSnNvbiIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInVpZFRleHRlTGVnaXNsYXRpZiIsInRleHRlTGVnaXNsYXRpZlJlZiIsInRleHRlTGVnaXNsYXRpZkRpciIsInBhdGhGcm9tRG9jdW1lbnRVaWQiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwicmV1bmlvbnNEaXIiLCJwYXRoRnJvbVJldW5pb25VaWQiLCJzY3J1dGluc0RpciIsInBhdGhGcm9tU2NydXRpblVpZCIsInF1ZXN0aW9uc0RpciIsInF1ZXN0aW9uVWlkUmVnZXgiLCJwYXRoRnJvbVVpZCIsImNvbXB0ZXNSZW5kdXNEaXIiLCJjb21wdGVSZW5kdVVpZFJlZ2V4IiwiYXJndiIsImNvbW1hbmRMaW5lQXJncyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZW9yZ2FuaXplX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlLCBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZXhpc3RpbmdEYXRlVG9Kc29uLCBwYXRjaGVkRGF0ZVRvSnNvbiB9IGZyb20gXCIuLi9kYXRlc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBwYXRoRnJvbURvY3VtZW50VWlkLFxuICBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkLFxuICBwYXRoRnJvbVJldW5pb25VaWQsXG4gIHBhdGhGcm9tU2NydXRpblVpZCxcbiAgcGF0aEZyb21VaWQsXG59IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQW1lbmRlbWVudHNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvc2NydXRpbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBRdWVzdGlvbnNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9xdWVzdGlvbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBDb21wdGVzUmVuZHVzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvZGViYXRzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4uL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcIkNcIixcbiAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IHNwbGl0IGZpbGVzXCIsXG4gICAgbmFtZTogXCJjb21taXRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwia1wiLFxuICAgIGRlZmF1bHRWYWx1ZTogW1wiQWxsXCJdLFxuICAgIGhlbHA6IFwiY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZW9yZ2FuaXplXCIsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgbmFtZTogXCJjYXRlZ29yaWVzXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGhlbHA6IFwibGVnaXNsYXR1cmVzIG9mIGNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmV0cmlldmU7IGxlYXZlIGVtcHR5IG9yIHVzZSAwIGZvciBhbGxcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcImxlZ2lzbGF0dXJlXCIsXG4gICAgdHlwZTogTnVtYmVyLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwicFwiLFxuICAgIGhlbHA6IFwicHVsbCByZXBvc2l0b3JpZXMgYmVmb3JlIHByb2NlZWRpbmdcIixcbiAgICBuYW1lOiBcInB1bGxcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiclwiLFxuICAgIGhlbHA6IFwicHVzaCBjb21taXQgdG8gZ2l2ZW4gcmVtb3RlXCIsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgbmFtZTogXCJyZW1vdGVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJzXCIsXG4gICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJWXCIsXG4gICAgaGVscDogXCJkb24ndCB2YWxpZGF0ZSByYXcgZGF0YVwiLFxuICAgIG5hbWU6IFwibm8tdmFsaWRhdGUtcmF3XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5cbmZ1bmN0aW9uIHJlb3JnYW5pemVEYXRhKG9wdGlvbnM6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gcGF0Y2hlZERhdGVUb0pzb25cblxuICBsZXQgZXhpdENvZGUgPSAxMCAvLyBOb3RoaW5nIHRvIGNvbW1pdFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmVcbiAgICA/IG9wdGlvbnMuY2xvbmUudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgICA6IHVuZGVmaW5lZFxuICBjb25zdCB2YWxpZGF0ZVJhd0RhdGEgPSAhb3B0aW9uc1tcIm5vLXZhbGlkYXRlLXJhd1wiXVxuXG4gIG9wdGlvbnMuY2F0ZWdvcmllcy5tYXAoKGRhdGFzZXROYW1lOiBzdHJpbmcpID0+XG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGBVbmtub3duIG5hbWUgb2YgZGF0YXNldDogJHtkYXRhc2V0TmFtZX1gLFxuICAgICksXG4gIClcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gb3B0aW9ucy5jYXRlZ29yaWVzLnJlZHVjZShcbiAgICAoZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsIGRhdGFzZXROYW1lOiBzdHJpbmcpOiBFbmFibGVkRGF0YXNldHMgPT5cbiAgICAgIGVuYWJsZWREYXRhc2V0cyB8XG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgIEVuYWJsZWREYXRhc2V0cy5Ob25lLFxuICApXG5cbiAgbGV0IGNob29zZW5EYXRhc2V0cyA9IGRhdGFzZXRzXG4gIC8vIFdoZW4gYSBnaXZlbiBsZWdpc2xhdHVyZSBpcyAwLCBpdCBpcyB0aGUgc2FtZSBhcyBnaXZpbmcgbm8gbGVnaXNsYXR1cmU6XG4gIC8vIEl0IG1lYW5zIFwiZXZlcnkgbGVnaXNsYXR1cmVzXCIuXG4gIGNvbnN0IGxlZ2lzbGF0dXJlcyA9IG9wdGlvbnMubGVnaXNsYXR1cmU/LnNvbWUoXG4gICAgKGxlZ2lzbGF0dXJlOiBudW1iZXIpID0+IGxlZ2lzbGF0dXJlID09PSAwLFxuICApXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IG9wdGlvbnMubGVnaXNsYXR1cmVcbiAgaWYgKGxlZ2lzbGF0dXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZW5hYmxlZExlZ2lzbGF0dXJlcyA9IGxlZ2lzbGF0dXJlcy5tYXAoKGxlZ2lzbGF0dXJlOiBudW1iZXIpID0+XG4gICAgICBsZWdpc2xhdHVyZS50b1N0cmluZygpLFxuICAgIClcbiAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY2hvb3NlbkRhdGFzZXRzKSkge1xuICAgICAgY2hvb3NlbkRhdGFzZXRzW2tleSBhcyBrZXlvZiB0eXBlb2YgY2hvb3NlbkRhdGFzZXRzXSA9IHZhbHVlLmZpbHRlcihcbiAgICAgICAgKGRhdGFzZXQ6IHsgbGVnaXNsYXR1cmU6IGFueSB9KSA9PlxuICAgICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCB8fFxuICAgICAgICAgIGVuYWJsZWRMZWdpc2xhdHVyZXMuaW5jbHVkZXMoZGF0YXNldC5sZWdpc2xhdHVyZSksXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCByZXNldCAtLWhhcmQgb3JpZ2luL21hc3RlcmAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVsbCAtLXJlYmFzZWAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuICAgICAgY29uc3QgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJhY3RldXJzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoYWN0ZXVyc1Jlb3JnYW5pemVkRGlyKVxuICAgICAgY29uc3Qgb3JnYW5lc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJvcmdhbmVzXCIpXG4gICAgICBmcy5ta2RpclN5bmMob3JnYW5lc1Jlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBvcmlnaW5hbERhdGEuZXhwb3J0LmFjdGV1cnMuYWN0ZXVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGFjdGV1ci51aWRbXCIjdGV4dFwiXSArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcmdhbmUgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC5vcmdhbmVzLm9yZ2FuZSkge1xuICAgICAgICAgICAgICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yZ2FuZXNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBvcmdhbmUudWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgZGVwb3J0c0J5QWN0ZXVyVWlkOiB7XG4gICAgICAgICAgICAgIFthY3RldXJVaWQ6IHN0cmluZ106IHsgdWlkOiBzdHJpbmcgfVtdXG4gICAgICAgICAgICB9ID0ge31cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4ob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCJkZXBvcnRcIiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcG9ydFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgW1wiZGVwb3J0XCJdLFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgZGVwb3J0U3BsaXRQYXRoW2RlcG9ydFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgIGlmICghZGVwb3J0RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICAuLi5kZXBvcnRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICBgICBMb2FkaW5nIFwiZGVwb3J0XCIgZmlsZTogJHtkZXBvcnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgICAgZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0RlcG9ydChkZXBvcnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZGVwb3J0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydCA9IGRlcG9ydE9yaWdpbmFsLmRlcG9ydFxuICAgICAgICAgICAgICAgIGxldCBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2RlcG9ydC5hY3RldXJSZWZdXG4gICAgICAgICAgICAgICAgaWYgKGRlcG9ydHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFtkZXBvcnQuYWN0ZXVyUmVmXSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlcG9ydHMucHVzaChkZXBvcnQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcG9ydHMgb2YgT2JqZWN0LnZhbHVlcyhkZXBvcnRzQnlBY3RldXJVaWQpKSB7XG4gICAgICAgICAgICAgICAgZGVwb3J0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICAgICAgICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWFuZGF0c0J5QWN0ZXVyVWlkOiB7XG4gICAgICAgICAgICAgIFthY3RldXJVaWQ6IHN0cmluZ106IHsgdWlkOiBzdHJpbmcgfVtdXG4gICAgICAgICAgICB9ID0ge31cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4ob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCJtYW5kYXRcIiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgW1wibWFuZGF0XCJdLFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgbWFuZGF0U3BsaXRQYXRoW21hbmRhdFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgIGlmICghbWFuZGF0RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICAuLi5tYW5kYXRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICBgICBMb2FkaW5nIFwibWFuZGF0XCIgZmlsZTogJHttYW5kYXRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgICAgbWFuZGF0T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b01hbmRhdFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgICAgbWFuZGF0T3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UobWFuZGF0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdCA9IG1hbmRhdE9yaWdpbmFsLm1hbmRhdFxuICAgICAgICAgICAgICAgIGxldCBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW21hbmRhdC5hY3RldXJSZWZdXG4gICAgICAgICAgICAgICAgaWYgKG1hbmRhdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFttYW5kYXQuYWN0ZXVyUmVmXSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hbmRhdHMucHVzaChtYW5kYXQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdHMgb2YgT2JqZWN0LnZhbHVlcyhtYW5kYXRzQnlBY3RldXJVaWQpKSB7XG4gICAgICAgICAgICAgICAgbWFuZGF0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICAgICAgICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiYWN0ZXVyXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uYWN0ZXVyU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFjdGV1clwiIGZpbGU6ICR7YWN0ZXVyT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ck9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoYWN0ZXVyT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXIgPSBhY3RldXJPcmlnaW5hbC5hY3RldXJcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyVWlkID0gYWN0ZXVyLnVpZFtcIiN0ZXh0XCJdXG4gICAgICAgICAgICAgIGNvbnN0IGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbYWN0ZXVyVWlkXVxuICAgICAgICAgICAgICBpZiAoZGVwb3J0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdGV1ci5kZXBvcnRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgYWN0ZXVyLmRlcG9ydHMgPSB7IGRlcG9ydDogZGVwb3J0cyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFthY3RldXJVaWRdXG4gICAgICAgICAgICAgIGlmIChtYW5kYXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0ZXVyLm1hbmRhdHMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBhY3RldXIubWFuZGF0cyA9IHsgbWFuZGF0OiBtYW5kYXRzIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIGFjdGV1cnNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBhY3RldXJVaWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcIm9yZ2FuZVwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLm9yZ2FuZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJvcmdhbmVcIiBmaWxlOiAke29yZ2FuZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b09yZ2FuZShvcmdhbmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yZ2FuZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lID0gb3JnYW5lT3JpZ2luYWwub3JnYW5lXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JnYW5lc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIG9yZ2FuZS51aWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQWdlbmRhc1Jhd0NvbnZlcnQudG9BZ2VuZGFzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIG9yaWdpbmFsRGF0YS5yZXVuaW9ucy5yZXVuaW9uKSB7XG4gICAgICAgICAgICAgIHdyaXRlUmV1bmlvblJlb3JnYW5pemVkSnNvbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wicmV1bmlvblwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5yZXVuaW9uU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcInJldW5pb25cIiBmaWxlOiAke3JldW5pb25PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZXVuaW9uT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWdlbmRhc1Jhd0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHJldW5pb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb24gPSByZXVuaW9uT3JpZ2luYWwucmV1bmlvblxuICAgICAgICAgICAgICB3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCByZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudHMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBvcmlnaW5hbERhdGEudGV4dGVzRXRBbWVuZGVtZW50c1xuICAgICAgICAgICAgICAudGV4dGVsZWcpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgICAgICAgIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFtZW5kZW1lbnRcIiBmaWxlOiAke2FtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBhbWVuZGVtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBkb2N1bWVudHNEaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImRvY3VtZW50c1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGRvY3VtZW50c0RpcilcbiAgICAgIGNvbnN0IGRvc3NpZXJzRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJkb3NzaWVyc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGRvc3NpZXJzRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIG9yaWdpbmFsRGF0YS5leHBvcnQudGV4dGVzTGVnaXNsYXRpZnNcbiAgICAgICAgICAgICAgLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgIHdyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24oZG9jdW1lbnRzRGlyLCBkb2N1bWVudClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGRvc3NpZXJQYXJsZW1lbnRhaXJlIH0gb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydFxuICAgICAgICAgICAgICAuZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyKSB7XG4gICAgICAgICAgICAgIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZG9zc2llcnNEaXIsXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9jdW1lbnRcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJkb2N1bWVudFwiIGZpbGU6ICR7ZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9jdW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gZG9jdW1lbnRPcmlnaW5hbC5kb2N1bWVudFxuICAgICAgICAgICAgICB3cml0ZURvY3VtZW50UmVvcmdhbml6ZWRKc29uKGRvY3VtZW50c0RpciwgZG9jdW1lbnQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9zc2llclBhcmxlbWVudGFpcmVcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoW1xuICAgICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgaWYgKCFkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImRvc3NpZXJQYXJsZW1lbnRhaXJlXCIgZmlsZTogJHtkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKFxuICAgICAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlID1cbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsLmRvc3NpZXJQYXJsZW1lbnRhaXJlXG4gICAgICAgICAgICAgIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZG9zc2llcnNEaXIsXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGxldCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX0uZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBTY3J1dGluc1Jhd0NvbnZlcnQudG9TY3J1dGlucyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2NydXRpbiBvZiBvcmlnaW5hbERhdGEuc2NydXRpbnMuc2NydXRpbikge1xuICAgICAgICAgICAgICB3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBzY3J1dGluKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzY3J1dGluU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uc2NydXRpblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJzY3J1dGluXCIgZmlsZTogJHtzY3J1dGluT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IFNjcnV0aW5zUmF3Q29udmVydC50b1NjcnV0aW5XcmFwcGVyKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW4gPSBzY3J1dGluT3JpZ2luYWwuc2NydXRpblxuICAgICAgICAgICAgICB3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBzY3J1dGluKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5RdWVzdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMucXVlc3Rpb25zKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcXVlc3Rpb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgcXVlc3Rpb25TcGxpdFBhdGhbcXVlc3Rpb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFxdWVzdGlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLnF1ZXN0aW9uU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcInF1ZXN0aW9uXCIgZmlsZTogJHtxdWVzdGlvbk9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBxdWVzdGlvbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IFF1ZXN0aW9uc1Jhd0NvbnZlcnQudG9RdWVzdGlvbldyYXBwZXIocXVlc3Rpb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHF1ZXN0aW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbiA9IHF1ZXN0aW9uT3JpZ2luYWwucXVlc3Rpb25cbiAgICAgICAgICAgICAgd3JpdGVRdWVzdGlvbnNSZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBxdWVzdGlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwiLnhtbFwiKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGhbXG4gICAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aC5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpZiAoIWNvbXB0ZVJlbmR1U2VhbmNlRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiY29tcHRlUmVuZHVTZWFuY2VcIiBmaWxlOiAke2NvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IENvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0LnRvQ29tcHRlUmVuZHVXcmFwcGVyKFxuICAgICAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2UgPSBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsLmNvbXB0ZVJlbmR1XG4gICAgICAgICAgICAgIHdyaXRlQ29tcHRlc1JlbmR1c1Jlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2UsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RvcmUgc3RhbmRhcmQgY29udmVyc2lvbiBvZiBkYXRlcyB0byBKU09OLlxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBleGlzdGluZ0RhdGVUb0pzb25cblxuICByZXR1cm4gZXhpdENvZGVcbn1cblxuZnVuY3Rpb24gd3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uKFxuICBkYXRhc2V0UmVvcmdhbml6ZWREaXI6IHN0cmluZyxcbiAgYW1lbmRlbWVudDoge1xuICAgIHVpZDogc3RyaW5nXG4gICAgdGV4dGVMZWdpc2xhdGlmUmVmOiBzdHJpbmdcbiAgfSxcbik6IHZvaWQge1xuICBjb25zdCB1aWRUZXh0ZUxlZ2lzbGF0aWYgPSBhbWVuZGVtZW50LnRleHRlTGVnaXNsYXRpZlJlZlxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwodWlkVGV4dGVMZWdpc2xhdGlmLCB1bmRlZmluZWQpXG4gIGNvbnN0IHRleHRlTGVnaXNsYXRpZkRpciA9IHBhdGguam9pbihcbiAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgdWlkVGV4dGVMZWdpc2xhdGlmLFxuICApXG4gIGZzLmVuc3VyZURpclN5bmModGV4dGVMZWdpc2xhdGlmRGlyKVxuICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICB0ZXh0ZUxlZ2lzbGF0aWZEaXIsXG4gICAgYW1lbmRlbWVudC51aWQgKyBcIi5qc29uXCIsXG4gIClcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICBKU09OLnN0cmluZ2lmeShhbWVuZGVtZW50LCBudWxsLCAyKSxcbiAgICB7XG4gICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgfSxcbiAgKVxufVxuXG5mdW5jdGlvbiB3cml0ZURvY3VtZW50UmVvcmdhbml6ZWRKc29uKFxuICBkb2N1bWVudHNEaXI6IHN0cmluZyxcbiAgZG9jdW1lbnQ6IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyLCBkb2N1bWVudC51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShkb2N1bWVudCwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gIGRvc3NpZXJzRGlyOiBzdHJpbmcsXG4gIGRvc3NpZXJQYXJsZW1lbnRhaXJlOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICAgIGRvc3NpZXJzRGlyLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlLnVpZCxcbiAgKVxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIGAke2Jhc2VuYW1lfS5qc29uYCxcbiAgICBKU09OLnN0cmluZ2lmeShkb3NzaWVyUGFybGVtZW50YWlyZSwgbnVsbCwgMiksXG4gICAge1xuICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgIH0sXG4gIClcbn1cblxuZnVuY3Rpb24gd3JpdGVSZXVuaW9uUmVvcmdhbml6ZWRKc29uKFxuICByZXVuaW9uc0Rpcjogc3RyaW5nLFxuICByZXVuaW9uOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXIsIHJldW5pb24udWlkKVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkocmV1bmlvbiwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHdyaXRlU2NydXRpblJlb3JnYW5pemVkSnNvbihcbiAgc2NydXRpbnNEaXI6IHN0cmluZyxcbiAgc2NydXRpbjogeyB1aWQ6IHN0cmluZyB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21TY3J1dGluVWlkKHNjcnV0aW5zRGlyLCBzY3J1dGluLnVpZClcbiAgZnMud3JpdGVGaWxlU3luYyhgJHtiYXNlbmFtZX0uanNvbmAsIEpTT04uc3RyaW5naWZ5KHNjcnV0aW4sIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG5mdW5jdGlvbiB3cml0ZVF1ZXN0aW9uc1Jlb3JnYW5pemVkSnNvbihcbiAgcXVlc3Rpb25zRGlyOiBzdHJpbmcsXG4gIHF1ZXN0aW9uOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgcXVlc3Rpb25VaWRSZWdleDogUmVnRXhwID0gL15RQU4oUlxcZCspKExcXGQrKVEoRXxHfE9TRCkoXFxkKykkL1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tVWlkKHF1ZXN0aW9uc0RpciwgcXVlc3Rpb24udWlkLCBxdWVzdGlvblVpZFJlZ2V4KVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkocXVlc3Rpb24sIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG5mdW5jdGlvbiB3cml0ZUNvbXB0ZXNSZW5kdXNSZW9yZ2FuaXplZEpzb24oXG4gIGNvbXB0ZXNSZW5kdXNEaXI6IHN0cmluZyxcbiAgY29tcHRlUmVuZHU6IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBjb21wdGVSZW5kdVVpZFJlZ2V4OiBSZWdFeHAgPVxuICAgIC9eQ1JTQU4oUlxcZCspKExcXGQrKShTXFxkKykoT3xFKShcXGQrKShOXFxkKykkL1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tVWlkKFxuICAgIGNvbXB0ZXNSZW5kdXNEaXIsXG4gICAgY29tcHRlUmVuZHUudWlkLFxuICAgIGNvbXB0ZVJlbmR1VWlkUmVnZXgsXG4gIClcbiAgZnMud3JpdGVGaWxlU3luYyhgJHtiYXNlbmFtZX0uanNvbmAsIEpTT04uc3RyaW5naWZ5KGNvbXB0ZVJlbmR1LCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwicmVvcmdhbml6ZV9kYXRhLnRzXCIpKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG4gIHByb2Nlc3MuZXhpdChyZW9yZ2FuaXplRGF0YShvcHRpb25zKSlcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxnQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUssU0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sR0FBQSxHQUFBQyx1QkFBQSxDQUFBUixPQUFBO0FBQ0EsSUFBQVMsYUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsUUFBQSxHQUFBVixPQUFBO0FBT0EsSUFBQVcsbUJBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLFFBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLFlBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLHFCQUFBLEdBQUFkLE9BQUE7QUFDQSxJQUFBZSxTQUFBLEdBQUFmLE9BQUE7QUFDQSxJQUFBZ0IsVUFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQixPQUFBLEdBQUFqQixPQUFBO0FBQ0EsSUFBQWtCLGFBQUEsR0FBQWxCLE9BQUE7QUFBbUQsU0FBQW1CLHlCQUFBQyxXQUFBLGVBQUFD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
1087
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiZ2l0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZmlsZV9zeXN0ZW1zIiwiX2xvYWRlcnMiLCJfYWN0ZXVyc19ldF9vcmdhbmVzIiwiX2FnZW5kYXMiLCJfYW1lbmRlbWVudHMiLCJfZG9zc2llcnNfbGVnaXNsYXRpZnMiLCJfc2NydXRpbnMiLCJfcXVlc3Rpb25zIiwiX2RlYmF0cyIsIl9sZWdpc2xhdHVyZXMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIml0ZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwibyIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJsZW5ndGgiLCJpIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZSIsIl9lIiwiZiIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJlcnIiLCJzdGVwIiwibmV4dCIsIl9lMiIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsIm1pbkxlbiIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibGVuIiwiYXJyMiIsInIiLCJsIiwidCIsInUiLCJhIiwicHVzaCIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJOdW1iZXIiLCJkZWZhdWx0T3B0aW9uIiwicmVvcmdhbml6ZURhdGEiLCJvcHRpb25zIiwiX29wdGlvbnMkbGVnaXNsYXR1cmUiLCJkYXRhRGlyIiwiRGF0ZSIsInRvSlNPTiIsInBhdGNoZWREYXRlVG9Kc29uIiwiZXhpdENvZGUiLCJnaXRHcm91cFVybCIsImNsb25lIiwidHJpbSIsInJlcGxhY2UiLCJ1bmRlZmluZWQiLCJ2YWxpZGF0ZVJhd0RhdGEiLCJjYXRlZ29yaWVzIiwibWFwIiwiZGF0YXNldE5hbWUiLCJhc3NlcnQiLCJub3RTdHJpY3RFcXVhbCIsIkVuYWJsZWREYXRhc2V0cyIsImNvbmNhdCIsImVuYWJsZWREYXRhc2V0cyIsInJlZHVjZSIsIk5vbmUiLCJjaG9vc2VuRGF0YXNldHMiLCJkYXRhc2V0cyIsImxlZ2lzbGF0dXJlcyIsImxlZ2lzbGF0dXJlIiwic29tZSIsImVuYWJsZWRMZWdpc2xhdHVyZXMiLCJfaSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJmaWx0ZXIiLCJkYXRhc2V0IiwiTGVnaXNsYXR1cmUiLCJBbGwiLCJpbmNsdWRlcyIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJfaXRlcmF0b3IiLCJhY3RldXJzRXRPcmdhbmVzIiwiX3N0ZXAiLCJvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoIiwicGF0aCIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJiYXNlbmFtZSIsImV4ZWNTeW5jIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJkYXRhc2V0UmVvcmdhbml6ZWREaXIiLCJwdWxsIiwiZnMiLCJlbnN1cmVEaXJTeW5jIiwiX2l0ZXJhdG9yMiIsInJlYWRkaXJTeW5jIiwiX3N0ZXAyIiwicmVtb3ZlU3luYyIsImFjdGV1cnNSZW9yZ2FuaXplZERpciIsIm1rZGlyU3luYyIsIm9yZ2FuZXNSZW9yZ2FuaXplZERpciIsInN0cnVjdHVyZSIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJTaW5nbGVGaWxlIiwib3JpZ2luYWxKc29uIiwicmVhZEZpbGVTeW5jIiwib3JpZ2luYWxEYXRhIiwiQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJKU09OIiwicGFyc2UiLCJfaXRlcmF0b3IzIiwiYWN0ZXVycyIsImFjdGV1ciIsIl9zdGVwMyIsInJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwidWlkIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsIl9pdGVyYXRvcjQiLCJvcmdhbmVzIiwib3JnYW5lIiwiX3N0ZXA0IiwiU2VnbWVudGVkRmlsZXMiLCJkZXBvcnRzQnlBY3RldXJVaWQiLCJleGlzdHNTeW5jIiwiX2l0ZXJhdG9yNSIsIndhbGtEaXIiLCJfc3RlcDUiLCJkZXBvcnRTcGxpdFBhdGgiLCJkZXBvcnRGaWxlbmFtZSIsImVuZHNXaXRoIiwiZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCIsImFwcGx5IiwidmVyYm9zZSIsImRlcG9ydE9yaWdpbmFsSnNvbiIsImRlcG9ydE9yaWdpbmFsIiwidG9EZXBvcnQiLCJkZXBvcnQiLCJkZXBvcnRzIiwiYWN0ZXVyUmVmIiwiX2kyIiwiX09iamVjdCR2YWx1ZXMiLCJ2YWx1ZXMiLCJzb3J0IiwiYiIsImxvY2FsZUNvbXBhcmUiLCJtYW5kYXRzQnlBY3RldXJVaWQiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwibWFuZGF0U3BsaXRQYXRoIiwibWFuZGF0RmlsZW5hbWUiLCJtYW5kYXRPcmlnaW5hbEZpbGVQYXRoIiwibWFuZGF0T3JpZ2luYWxKc29uIiwibWFuZGF0T3JpZ2luYWwiLCJ0b01hbmRhdFdyYXBwZXIiLCJtYW5kYXQiLCJtYW5kYXRzIiwiX2kzIiwiX09iamVjdCR2YWx1ZXMyIiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwiYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCIsImFjdGV1ck9yaWdpbmFsSnNvbiIsImFjdGV1ck9yaWdpbmFsIiwidG9BY3RldXIiLCJhY3RldXJVaWQiLCJzdHJpY3RFcXVhbCIsImFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwiX2l0ZXJhdG9yOCIsIl9zdGVwOCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lT3JpZ2luYWxGaWxlUGF0aCIsIm9yZ2FuZU9yaWdpbmFsSnNvbiIsIm9yZ2FuZU9yaWdpbmFsIiwidG9PcmdhbmUiLCJvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsImNvbW1pdCIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJBZ2VuZGFzIiwiX2l0ZXJhdG9yOSIsImFnZW5kYXMiLCJfc3RlcDkiLCJfaXRlcmF0b3IxMCIsIl9zdGVwMTAiLCJBZ2VuZGFzUmF3Q29udmVydCIsInRvQWdlbmRhcyIsIl9pdGVyYXRvcjExIiwicmV1bmlvbnMiLCJyZXVuaW9uIiwiX3N0ZXAxMSIsIndyaXRlUmV1bmlvblJlb3JnYW5pemVkSnNvbiIsIl9pdGVyYXRvcjEyIiwiX3N0ZXAxMiIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uT3JpZ2luYWxGaWxlUGF0aCIsInJldW5pb25PcmlnaW5hbEpzb24iLCJyZXVuaW9uT3JpZ2luYWwiLCJ0b1JldW5pb24iLCJBbWVuZGVtZW50cyIsIl9pdGVyYXRvcjEzIiwiYW1lbmRlbWVudHMiLCJfc3RlcDEzIiwiX2l0ZXJhdG9yMTQiLCJfc3RlcDE0IiwiQW1lbmRlbWVudHNSYXdDb252ZXJ0IiwidG9BbWVuZGVtZW50cyIsIl9pdGVyYXRvcjE1IiwidGV4dGVzRXRBbWVuZGVtZW50cyIsInRleHRlbGVnIiwiX3N0ZXAxNSIsInRleHRlTGVnaXNsYXRpZiIsIl9pdGVyYXRvcjE2IiwiX3N0ZXAxNiIsImFtZW5kZW1lbnQiLCJ3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24iLCJfaXRlcmF0b3IxNyIsIl9zdGVwMTciLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGgiLCJhbWVuZGVtZW50T3JpZ2luYWxKc29uIiwiYW1lbmRlbWVudE9yaWdpbmFsIiwidG9BbWVuZGVtZW50V3JhcHBlciIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3IxOCIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJfc3RlcDE4IiwiX2l0ZXJhdG9yMTkiLCJfc3RlcDE5IiwiZG9jdW1lbnRzRGlyIiwiZG9zc2llcnNEaXIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydCIsInRvRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjIwIiwidGV4dGVzTGVnaXNsYXRpZnMiLCJkb2N1bWVudCIsIl9zdGVwMjAiLCJ3cml0ZURvY3VtZW50UmVvcmdhbml6ZWRKc29uIiwiX2l0ZXJhdG9yMjEiLCJkb3NzaWVyIiwiX3N0ZXAyMSIsImRvc3NpZXJQYXJsZW1lbnRhaXJlIiwid3JpdGVEb3NzaWVyUGFybGVtZW50YWlyZVJlb3JnYW5pemVkSnNvbiIsIl9pdGVyYXRvcjIyIiwiX3N0ZXAyMiIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50T3JpZ2luYWxGaWxlUGF0aCIsImRvY3VtZW50T3JpZ2luYWxKc29uIiwiZG9jdW1lbnRPcmlnaW5hbCIsInRvRG9jdW1lbnQiLCJfaXRlcmF0b3IyMyIsIl9zdGVwMjMiLCJkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUiLCJkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWwiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiU2NydXRpbnMiLCJfaXRlcmF0b3IyNCIsInNjcnV0aW5zIiwiX3N0ZXAyNCIsIl9pdGVyYXRvcjI1IiwiX3N0ZXAyNSIsIlNjcnV0aW5zUmF3Q29udmVydCIsInRvU2NydXRpbnMiLCJfaXRlcmF0b3IyNiIsInNjcnV0aW4iLCJfc3RlcDI2Iiwid3JpdGVTY3J1dGluUmVvcmdhbml6ZWRKc29uIiwiX2l0ZXJhdG9yMjciLCJfc3RlcDI3Iiwic2NydXRpblNwbGl0UGF0aCIsInNjcnV0aW5GaWxlbmFtZSIsInNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoIiwic2NydXRpbk9yaWdpbmFsSnNvbiIsInNjcnV0aW5PcmlnaW5hbCIsInRvU2NydXRpbldyYXBwZXIiLCJRdWVzdGlvbnMiLCJfaXRlcmF0b3IyOCIsInF1ZXN0aW9ucyIsIl9zdGVwMjgiLCJfaXRlcmF0b3IyOSIsIl9zdGVwMjkiLCJfaXRlcmF0b3IzMCIsIl9zdGVwMzAiLCJxdWVzdGlvblNwbGl0UGF0aCIsInF1ZXN0aW9uRmlsZW5hbWUiLCJxdWVzdGlvbk9yaWdpbmFsRmlsZVBhdGgiLCJxdWVzdGlvbk9yaWdpbmFsSnNvbiIsInF1ZXN0aW9uT3JpZ2luYWwiLCJRdWVzdGlvbnNSYXdDb252ZXJ0IiwidG9RdWVzdGlvbldyYXBwZXIiLCJxdWVzdGlvbiIsIndyaXRlUXVlc3Rpb25zUmVvcmdhbml6ZWRKc29uIiwiQ29tcHRlc1JlbmR1c1NlYW5jZXMiLCJfaXRlcmF0b3IzMSIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX3N0ZXAzMSIsIl9pdGVyYXRvcjMyIiwiX3N0ZXAzMiIsIl9pdGVyYXRvcjMzIiwiX3N0ZXAzMyIsImNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoIiwiY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZSIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aCIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uIiwiY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbCIsIkNvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0IiwidG9Db21wdGVSZW5kdVdyYXBwZXIiLCJjb21wdGVSZW5kdVNlYW5jZSIsImNvbXB0ZVJlbmR1Iiwid3JpdGVDb21wdGVzUmVuZHVzUmVvcmdhbml6ZWRKc29uIiwiZXhpc3RpbmdEYXRlVG9Kc29uIiwidWlkVGV4dGVMZWdpc2xhdGlmIiwidGV4dGVMZWdpc2xhdGlmUmVmIiwidGV4dGVMZWdpc2xhdGlmRGlyIiwicGF0aEZyb21Eb2N1bWVudFVpZCIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJyZXVuaW9uc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInNjcnV0aW5zRGlyIiwicGF0aEZyb21TY3J1dGluVWlkIiwicXVlc3Rpb25zRGlyIiwicXVlc3Rpb25VaWRSZWdleCIsInBhdGhGcm9tVWlkIiwiY29tcHRlc1JlbmR1c0RpciIsImNvbXB0ZVJlbmR1VWlkUmVnZXgiLCJhcmd2IiwiY29tbWFuZExpbmVBcmdzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Jlb3JnYW5pemVfZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgZGF0YXNldHMsIERhdGFzZXRTdHJ1Y3R1cmUsIEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIHBhdGhGcm9tRG9jdW1lbnRVaWQsXG4gIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQsXG4gIHBhdGhGcm9tUmV1bmlvblVpZCxcbiAgcGF0aEZyb21TY3J1dGluVWlkLFxuICBwYXRoRnJvbVVpZCxcbn0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBbWVuZGVtZW50c1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9kZWJhdHNcIlxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwiQ1wiLFxuICAgIGhlbHA6IFwiY2xvbmUgcmVwb3NpdG9yaWVzIGZyb20gZ2l2ZW4gZ3JvdXAgKG9yIG9yZ2FuaXphdGlvbikgZ2l0IFVSTFwiLFxuICAgIG5hbWU6IFwiY2xvbmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJjXCIsXG4gICAgaGVscDogXCJjb21taXQgc3BsaXQgZmlsZXNcIixcbiAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJrXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBbXCJBbGxcIl0sXG4gICAgaGVscDogXCJjYXRlZ29yaWVzIG9mIGRhdGFzZXRzIHRvIHJlb3JnYW5pemVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcImNhdGVnb3JpZXNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJsXCIsXG4gICAgaGVscDogXCJsZWdpc2xhdHVyZXMgb2YgY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZXRyaWV2ZTsgbGVhdmUgZW1wdHkgb3IgdXNlIDAgZm9yIGFsbFwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBOdW1iZXIsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJwdWxsIHJlcG9zaXRvcmllcyBiZWZvcmUgcHJvY2VlZGluZ1wiLFxuICAgIG5hbWU6IFwicHVsbFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIlZcIixcbiAgICBoZWxwOiBcImRvbid0IHZhbGlkYXRlIHJhdyBkYXRhXCIsXG4gICAgbmFtZTogXCJuby12YWxpZGF0ZS1yYXdcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidlwiLFxuICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cblxuZnVuY3Rpb24gcmVvcmdhbml6ZURhdGEob3B0aW9uczogYW55KTogbnVtYmVyIHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuXG4gIGxldCBleGl0Q29kZSA9IDEwIC8vIE5vdGhpbmcgdG8gY29tbWl0XG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZVxuICAgID8gb3B0aW9ucy5jbG9uZS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICAgIDogdW5kZWZpbmVkXG4gIGNvbnN0IHZhbGlkYXRlUmF3RGF0YSA9ICFvcHRpb25zW1wibm8tdmFsaWRhdGUtcmF3XCJdXG5cbiAgb3B0aW9ucy5jYXRlZ29yaWVzLm1hcCgoZGF0YXNldE5hbWU6IHN0cmluZykgPT5cbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYFVua25vd24gbmFtZSBvZiBkYXRhc2V0OiAke2RhdGFzZXROYW1lfWAsXG4gICAgKSxcbiAgKVxuICBjb25zdCBlbmFibGVkRGF0YXNldHMgPSBvcHRpb25zLmNhdGVnb3JpZXMucmVkdWNlKFxuICAgIChlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cywgZGF0YXNldE5hbWU6IHN0cmluZyk6IEVuYWJsZWREYXRhc2V0cyA9PlxuICAgICAgZW5hYmxlZERhdGFzZXRzIHxcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgRW5hYmxlZERhdGFzZXRzLk5vbmUsXG4gIClcblxuICBsZXQgY2hvb3NlbkRhdGFzZXRzID0gZGF0YXNldHNcbiAgLy8gV2hlbiBhIGdpdmVuIGxlZ2lzbGF0dXJlIGlzIDAsIGl0IGlzIHRoZSBzYW1lIGFzIGdpdmluZyBubyBsZWdpc2xhdHVyZTpcbiAgLy8gSXQgbWVhbnMgXCJldmVyeSBsZWdpc2xhdHVyZXNcIi5cbiAgY29uc3QgbGVnaXNsYXR1cmVzID0gb3B0aW9ucy5sZWdpc2xhdHVyZT8uc29tZShcbiAgICAobGVnaXNsYXR1cmU6IG51bWJlcikgPT4gbGVnaXNsYXR1cmUgPT09IDAsXG4gIClcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogb3B0aW9ucy5sZWdpc2xhdHVyZVxuICBpZiAobGVnaXNsYXR1cmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBlbmFibGVkTGVnaXNsYXR1cmVzID0gbGVnaXNsYXR1cmVzLm1hcCgobGVnaXNsYXR1cmU6IG51bWJlcikgPT5cbiAgICAgIGxlZ2lzbGF0dXJlLnRvU3RyaW5nKCksXG4gICAgKVxuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjaG9vc2VuRGF0YXNldHMpKSB7XG4gICAgICBjaG9vc2VuRGF0YXNldHNba2V5IGFzIGtleW9mIHR5cGVvZiBjaG9vc2VuRGF0YXNldHNdID0gdmFsdWUuZmlsdGVyKFxuICAgICAgICAoZGF0YXNldDogeyBsZWdpc2xhdHVyZTogYW55IH0pID0+XG4gICAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsIHx8XG4gICAgICAgICAgZW5hYmxlZExlZ2lzbGF0dXJlcy5pbmNsdWRlcyhkYXRhc2V0LmxlZ2lzbGF0dXJlKSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdWxsIC0tcmViYXNlYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBhY3RldXJzUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImFjdGV1cnNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhhY3RldXJzUmVvcmdhbml6ZWREaXIpXG4gICAgICBjb25zdCBvcmdhbmVzUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcIm9yZ2FuZXNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhvcmdhbmVzUmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvQWN0ZXVyc0V0T3JnYW5lcyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIG9yaWdpbmFsRGF0YS5leHBvcnQuYWN0ZXVycy5hY3RldXIpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBhY3RldXJzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgYWN0ZXVyLnVpZFtcIiN0ZXh0XCJdICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYWN0ZXVyLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBvcmlnaW5hbERhdGEuZXhwb3J0Lm9yZ2FuZXMub3JnYW5lKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JnYW5lc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIG9yZ2FuZS51aWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBkZXBvcnRzQnlBY3RldXJVaWQ6IHtcbiAgICAgICAgICAgICAgW2FjdGV1clVpZDogc3RyaW5nXTogeyB1aWQ6IHN0cmluZyB9W11cbiAgICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBmcy5leGlzdHNTeW5jKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLCBcImRlcG9ydFwiKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwb3J0U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBbXCJkZXBvcnRcIl0sXG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBkZXBvcnRTcGxpdFBhdGhbZGVwb3J0U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgaWYgKCFkZXBvcnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIC4uLmRlcG9ydFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgIGAgIExvYWRpbmcgXCJkZXBvcnRcIiBmaWxlOiAke2RlcG9ydE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgICBkZXBvcnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvRGVwb3J0KGRlcG9ydE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkZXBvcnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0ID0gZGVwb3J0T3JpZ2luYWwuZGVwb3J0XG4gICAgICAgICAgICAgICAgbGV0IGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbZGVwb3J0LmFjdGV1clJlZl1cbiAgICAgICAgICAgICAgICBpZiAoZGVwb3J0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2RlcG9ydC5hY3RldXJSZWZdID0gW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVwb3J0cy5wdXNoKGRlcG9ydClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwb3J0cyBvZiBPYmplY3QudmFsdWVzKGRlcG9ydHNCeUFjdGV1clVpZCkpIHtcbiAgICAgICAgICAgICAgICBkZXBvcnRzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgICAgICAgICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtYW5kYXRzQnlBY3RldXJVaWQ6IHtcbiAgICAgICAgICAgICAgW2FjdGV1clVpZDogc3RyaW5nXTogeyB1aWQ6IHN0cmluZyB9W11cbiAgICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBmcy5leGlzdHNTeW5jKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBbXCJtYW5kYXRcIl0sXG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBtYW5kYXRTcGxpdFBhdGhbbWFuZGF0U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgaWYgKCFtYW5kYXRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIC4uLm1hbmRhdFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgIGAgIExvYWRpbmcgXCJtYW5kYXRcIiBmaWxlOiAke21hbmRhdE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgICBtYW5kYXRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvTWFuZGF0V3JhcHBlcihcbiAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShtYW5kYXRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0ID0gbWFuZGF0T3JpZ2luYWwubWFuZGF0XG4gICAgICAgICAgICAgICAgbGV0IG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbbWFuZGF0LmFjdGV1clJlZl1cbiAgICAgICAgICAgICAgICBpZiAobWFuZGF0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW21hbmRhdC5hY3RldXJSZWZdID0gW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFuZGF0cy5wdXNoKG1hbmRhdClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0cyBvZiBPYmplY3QudmFsdWVzKG1hbmRhdHNCeUFjdGV1clVpZCkpIHtcbiAgICAgICAgICAgICAgICBtYW5kYXRzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgICAgICAgICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJhY3RldXJcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ckZpbGVuYW1lID0gYWN0ZXVyU3BsaXRQYXRoW2FjdGV1clNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIWFjdGV1ckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hY3RldXJTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiYWN0ZXVyXCIgZmlsZTogJHthY3RldXJPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFjdGV1ck9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9BY3RldXIoYWN0ZXVyT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShhY3RldXJPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGFjdGV1ck9yaWdpbmFsLmFjdGV1clxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJVaWQgPSBhY3RldXIudWlkW1wiI3RleHRcIl1cbiAgICAgICAgICAgICAgY29uc3QgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFthY3RldXJVaWRdXG4gICAgICAgICAgICAgIGlmIChkZXBvcnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0ZXVyLmRlcG9ydHMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBhY3RldXIuZGVwb3J0cyA9IHsgZGVwb3J0OiBkZXBvcnRzIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW2FjdGV1clVpZF1cbiAgICAgICAgICAgICAgaWYgKG1hbmRhdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhY3RldXIubWFuZGF0cywgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGFjdGV1ci5tYW5kYXRzID0geyBtYW5kYXQ6IG1hbmRhdHMgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGFjdGV1clVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wib3JnYW5lXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ub3JnYW5lU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcIm9yZ2FuZVwiIGZpbGU6ICR7b3JnYW5lT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBvcmdhbmVPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvT3JnYW5lKG9yZ2FuZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JnYW5lT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmUgPSBvcmdhbmVPcmlnaW5hbC5vcmdhbmVcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmdhbmVzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgb3JnYW5lLnVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIG9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG9yZ2FuZSwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX0uZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBBZ2VuZGFzUmF3Q29udmVydC50b0FnZW5kYXMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJldW5pb24gb2Ygb3JpZ2luYWxEYXRhLnJldW5pb25zLnJldW5pb24pIHtcbiAgICAgICAgICAgICAgd3JpdGVSZXVuaW9uUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgcmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJyZXVuaW9uXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIXJldW5pb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLnJldW5pb25TcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwicmV1bmlvblwiIGZpbGU6ICR7cmV1bmlvbk9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJldW5pb25PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBZ2VuZGFzUmF3Q29udmVydC50b1JldW5pb24ocmV1bmlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UocmV1bmlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbiA9IHJldW5pb25PcmlnaW5hbC5yZXVuaW9uXG4gICAgICAgICAgICAgIHdyaXRlUmV1bmlvblJlb3JnYW5pemVkSnNvbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX0uZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBBbWVuZGVtZW50c1Jhd0NvbnZlcnQudG9BbWVuZGVtZW50cyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdGV4dGVMZWdpc2xhdGlmIG9mIG9yaWdpbmFsRGF0YS50ZXh0ZXNFdEFtZW5kZW1lbnRzXG4gICAgICAgICAgICAgIC50ZXh0ZWxlZykge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnQgb2YgdGV4dGVMZWdpc2xhdGlmLmFtZW5kZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgd3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgICAgYW1lbmRlbWVudCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiYW1lbmRlbWVudFwiIGZpbGU6ICR7YW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBbWVuZGVtZW50c1Jhd0NvbnZlcnQudG9BbWVuZGVtZW50V3JhcHBlcihcbiAgICAgICAgICAgICAgICAgICAgYW1lbmRlbWVudE9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoYW1lbmRlbWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudCA9IGFtZW5kZW1lbnRPcmlnaW5hbC5hbWVuZGVtZW50XG4gICAgICAgICAgICAgIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGFtZW5kZW1lbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRvY3VtZW50c0RpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiZG9jdW1lbnRzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9jdW1lbnRzRGlyKVxuICAgICAgY29uc3QgZG9zc2llcnNEaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImRvc3NpZXJzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9zc2llcnNEaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC50ZXh0ZXNMZWdpc2xhdGlmc1xuICAgICAgICAgICAgICAuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgd3JpdGVEb2N1bWVudFJlb3JnYW5pemVkSnNvbihkb2N1bWVudHNEaXIsIGRvY3VtZW50KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHsgZG9zc2llclBhcmxlbWVudGFpcmUgfSBvZiBvcmlnaW5hbERhdGEuZXhwb3J0XG4gICAgICAgICAgICAgIC5kb3NzaWVyc0xlZ2lzbGF0aWZzLmRvc3NpZXIpIHtcbiAgICAgICAgICAgICAgd3JpdGVEb3NzaWVyUGFybGVtZW50YWlyZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkb3NzaWVyc0RpcixcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJkb2N1bWVudFwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgZG9jdW1lbnRTcGxpdFBhdGhbZG9jdW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmRvY3VtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImRvY3VtZW50XCIgZmlsZTogJHtkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0RvY3VtZW50KGRvY3VtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkb2N1bWVudE9yaWdpbmFsLmRvY3VtZW50XG4gICAgICAgICAgICAgIHdyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24oZG9jdW1lbnRzRGlyLCBkb2N1bWVudClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJkb3NzaWVyUGFybGVtZW50YWlyZVwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGhbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aC5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpZiAoIWRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiZG9zc2llclBhcmxlbWVudGFpcmVcIiBmaWxlOiAke2Rvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoXG4gICAgICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmUgPVxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWwuZG9zc2llclBhcmxlbWVudGFpcmVcbiAgICAgICAgICAgICAgd3JpdGVEb3NzaWVyUGFybGVtZW50YWlyZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkb3NzaWVyc0RpcixcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAobGV0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IFNjcnV0aW5zUmF3Q29udmVydC50b1NjcnV0aW5zKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCBzY3J1dGluIG9mIG9yaWdpbmFsRGF0YS5zY3J1dGlucy5zY3J1dGluKSB7XG4gICAgICAgICAgICAgIHdyaXRlU2NydXRpblJlb3JnYW5pemVkSnNvbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIHNjcnV0aW4pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5zY3J1dGluU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcInNjcnV0aW5cIiBmaWxlOiAke3NjcnV0aW5PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbldyYXBwZXIoc2NydXRpbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uoc2NydXRpbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbiA9IHNjcnV0aW5PcmlnaW5hbC5zY3J1dGluXG4gICAgICAgICAgICAgIHdyaXRlU2NydXRpblJlb3JnYW5pemVkSnNvbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIHNjcnV0aW4pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBxdWVzdGlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBxdWVzdGlvblNwbGl0UGF0aFtxdWVzdGlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIXF1ZXN0aW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ucXVlc3Rpb25TcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwicXVlc3Rpb25cIiBmaWxlOiAke3F1ZXN0aW9uT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbk9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gUXVlc3Rpb25zUmF3Q29udmVydC50b1F1ZXN0aW9uV3JhcHBlcihxdWVzdGlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UocXVlc3Rpb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gcXVlc3Rpb25PcmlnaW5hbC5xdWVzdGlvblxuICAgICAgICAgICAgICB3cml0ZVF1ZXN0aW9uc1Jlb3JnYW5pemVkSnNvbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIHF1ZXN0aW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCIueG1sXCIpXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZUZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aFtcbiAgICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIGlmICghY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5jb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJjb21wdGVSZW5kdVNlYW5jZVwiIGZpbGU6ICR7Y29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQ29tcHRlc1JlbmR1c1Jhd0NvbnZlcnQudG9Db21wdGVSZW5kdVdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZSA9IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWwuY29tcHRlUmVuZHVcbiAgICAgICAgICAgICAgd3JpdGVDb21wdGVzUmVuZHVzUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oXG4gIGRhdGFzZXRSZW9yZ2FuaXplZERpcjogc3RyaW5nLFxuICBhbWVuZGVtZW50OiB7XG4gICAgdWlkOiBzdHJpbmdcbiAgICB0ZXh0ZUxlZ2lzbGF0aWZSZWY6IHN0cmluZ1xuICB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IHVpZFRleHRlTGVnaXNsYXRpZiA9IGFtZW5kZW1lbnQudGV4dGVMZWdpc2xhdGlmUmVmXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbCh1aWRUZXh0ZUxlZ2lzbGF0aWYsIHVuZGVmaW5lZClcbiAgY29uc3QgdGV4dGVMZWdpc2xhdGlmRGlyID0gcGF0aC5qb2luKFxuICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICB1aWRUZXh0ZUxlZ2lzbGF0aWYsXG4gIClcbiAgZnMuZW5zdXJlRGlyU3luYyh0ZXh0ZUxlZ2lzbGF0aWZEaXIpXG4gIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgIHRleHRlTGVnaXNsYXRpZkRpcixcbiAgICBhbWVuZGVtZW50LnVpZCArIFwiLmpzb25cIixcbiAgKVxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgIEpTT04uc3RyaW5naWZ5KGFtZW5kZW1lbnQsIG51bGwsIDIpLFxuICAgIHtcbiAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICB9LFxuICApXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24oXG4gIGRvY3VtZW50c0Rpcjogc3RyaW5nLFxuICBkb2N1bWVudDogeyB1aWQ6IHN0cmluZyB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXIsIGRvY3VtZW50LnVpZClcbiAgZnMud3JpdGVGaWxlU3luYyhgJHtiYXNlbmFtZX0uanNvbmAsIEpTT04uc3RyaW5naWZ5KGRvY3VtZW50LCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3NzaWVyUGFybGVtZW50YWlyZVJlb3JnYW5pemVkSnNvbihcbiAgZG9zc2llcnNEaXI6IHN0cmluZyxcbiAgZG9zc2llclBhcmxlbWVudGFpcmU6IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQoXG4gICAgZG9zc2llcnNEaXIsXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmUudWlkLFxuICApXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgYCR7YmFzZW5hbWV9Lmpzb25gLFxuICAgIEpTT04uc3RyaW5naWZ5KGRvc3NpZXJQYXJsZW1lbnRhaXJlLCBudWxsLCAyKSxcbiAgICB7XG4gICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgfSxcbiAgKVxufVxuXG5mdW5jdGlvbiB3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24oXG4gIHJldW5pb25zRGlyOiBzdHJpbmcsXG4gIHJldW5pb246IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tUmV1bmlvblVpZChyZXVuaW9uc0RpciwgcmV1bmlvbi51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShyZXVuaW9uLCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuZnVuY3Rpb24gd3JpdGVTY3J1dGluUmVvcmdhbml6ZWRKc29uKFxuICBzY3J1dGluc0Rpcjogc3RyaW5nLFxuICBzY3J1dGluOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVNjcnV0aW5VaWQoc2NydXRpbnNEaXIsIHNjcnV0aW4udWlkKVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkoc2NydXRpbiwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHdyaXRlUXVlc3Rpb25zUmVvcmdhbml6ZWRKc29uKFxuICBxdWVzdGlvbnNEaXI6IHN0cmluZyxcbiAgcXVlc3Rpb246IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBxdWVzdGlvblVpZFJlZ2V4OiBSZWdFeHAgPSAvXlFBTihSXFxkKykoTFxcZCspUShFfEd8T1NEKShcXGQrKSQvXG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21VaWQocXVlc3Rpb25zRGlyLCBxdWVzdGlvbi51aWQsIHF1ZXN0aW9uVWlkUmVnZXgpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShxdWVzdGlvbiwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHdyaXRlQ29tcHRlc1JlbmR1c1Jlb3JnYW5pemVkSnNvbihcbiAgY29tcHRlc1JlbmR1c0Rpcjogc3RyaW5nLFxuICBjb21wdGVSZW5kdTogeyB1aWQ6IHN0cmluZyB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IGNvbXB0ZVJlbmR1VWlkUmVnZXg6IFJlZ0V4cCA9XG4gICAgL15DUlNBTihSXFxkKykoTFxcZCspKFNcXGQrKShPfEUpKFxcZCspKE5cXGQrKSQvXG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21VaWQoXG4gICAgY29tcHRlc1JlbmR1c0RpcixcbiAgICBjb21wdGVSZW5kdS51aWQsXG4gICAgY29tcHRlUmVuZHVVaWRSZWdleCxcbiAgKVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkoY29tcHRlUmVuZHUsIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJyZW9yZ2FuaXplX2RhdGEudHNcIikpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbiAgcHJvY2Vzcy5leGl0KHJlb3JnYW5pemVEYXRhKG9wdGlvbnMpKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxHQUFBLEdBQUFDLHVCQUFBLENBQUFSLE9BQUE7QUFDQSxJQUFBUyxhQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxRQUFBLEdBQUFWLE9BQUE7QUFPQSxJQUFBVyxtQkFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksUUFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsWUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMscUJBQUEsR0FBQWQsT0FBQTtBQUNBLElBQUFlLFNBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQixVQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLE9BQUEsR0FBQWpCLE9BQUE7QUFDQSxJQUFBa0IsYUFBQSxHQUFBbEIsT0FBQTtBQUFtRCxTQUFBbUIseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FB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