@agilemotion/oui-react-js 2.0.22 → 2.0.24

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.
@@ -22,11 +22,15 @@ var _reactPromiseTracker = require("react-promise-tracker");
22
22
  var _View = require("../components/layout/View");
23
23
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
24
24
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
25
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
27
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
28
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
29
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
25
30
  const location = window.location.protocol + '//' + window.location.hostname;
26
31
  const text = response => {
27
32
  return response.text();
28
33
  };
29
- let keyCounter = 0;
30
34
  const alertBarHandle = {};
31
35
  const DashboardCard = props => {
32
36
  const [path, setPath] = _react.default.useState(null);
@@ -39,7 +43,14 @@ const DashboardCard = props => {
39
43
  const [id, setId] = _react.default.useState(props.settings.id);
40
44
  const [content, setContent] = _react.default.useState(null);
41
45
  const [ref] = _react.default.useState(/*#__PURE__*/_react.default.createRef());
46
+ // One stable, unique view id for this card's lifetime, drawn from the
47
+ // dashboard-lifecycle counter so it never collides with a sibling card.
48
+ const viewIdRef = _react.default.useRef(null);
49
+ if (viewIdRef.current === null) {
50
+ viewIdRef.current = props.allocateViewId();
51
+ }
42
52
  _react.default.useEffect(() => {
53
+ let cancelled = false;
43
54
  const accessToken = sessionStorage.getItem('accessToken');
44
55
  const idToken = sessionStorage.getItem('idToken');
45
56
  const handle = {
@@ -55,15 +66,21 @@ const DashboardCard = props => {
55
66
  if (path && displayType) {
56
67
  if (displayType === 'VIEW') {
57
68
  (0, _RestUtils.sendRequest)(path, data => {
69
+ if (cancelled) return;
58
70
  // sendRequest auto-decodes the {_cdui_z} wire
59
- // wrap for /ui/api/v*/ URLs.
60
- data.id = data.id + "_" + keyCounter++;
71
+ // wrap for /ui/api/v*/ URLs. Clone so we never mutate
72
+ // a (possibly cached) shared response, and stamp a
73
+ // unique-and-stable id for this card instance; the
74
+ // React key matches config.id.
75
+ const config = _objectSpread(_objectSpread({}, data), {}, {
76
+ id: data.id + "_" + viewIdRef.current,
77
+ window: false
78
+ });
61
79
  let dashboardView = {};
62
- dashboardView.config = data;
80
+ dashboardView.config = config;
63
81
  dashboardView.parent = false;
64
82
  dashboardView.popUp = false;
65
83
  dashboardView.window = false;
66
- dashboardView.config.window = false;
67
84
  dashboardView.handle = {
68
85
  api: {
69
86
  loaded: () => {
@@ -73,8 +90,8 @@ const DashboardCard = props => {
73
90
  };
74
91
  _ApplicationManager.default.addDashboardView(dashboardView, path);
75
92
  let element = /*#__PURE__*/_react.default.createElement(_View.View, {
76
- key: data.id + "_" + keyCounter,
77
- config: data,
93
+ key: config.id,
94
+ config: config,
78
95
  parameters: [],
79
96
  handle: dashboardView.handle
80
97
  });
@@ -91,14 +108,19 @@ const DashboardCard = props => {
91
108
  }
92
109
  };
93
110
  (0, _reactPromiseTracker.trackPromise)(fetch(encodeURI(path), fetchConfig).then(text).then(data => {
111
+ if (cancelled) return;
94
112
  console.log("CONTENT : ", data);
95
113
  setContent(data);
96
114
  }).catch(e => {
115
+ if (cancelled) return;
97
116
  alert(e.message);
98
117
  console.error(e);
99
118
  }));
100
119
  }
101
120
  }
121
+ return () => {
122
+ cancelled = true;
123
+ };
102
124
  }, [path, displayType]);
103
125
  function load() {
104
126
  if (!path) {
@@ -334,6 +356,13 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
334
356
  const [cardCols, setCardCols] = _react.default.useState(null);
335
357
  const [columnHeights, setColumnHeights] = _react.default.useState([]);
336
358
  let numCols = 2;
359
+
360
+ // View-id counter scoped to this dashboard's lifecycle: initiated on load,
361
+ // increments per card as needed. Restarting on each load is safe because the
362
+ // cleanup below unloads every card view (clearing their bus subscriptions),
363
+ // so no stale ids/subscriptions survive to collide with the next load.
364
+ const viewSeq = _react.default.useRef(0);
365
+ const allocateViewId = _react.default.useCallback(() => ++viewSeq.current, []);
337
366
  const api = {
338
367
  get id() {
339
368
  return '_sys_dashboard';
@@ -465,7 +494,8 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
465
494
  handle: handle
466
495
  });
467
496
  return () => {
468
- keyCounter = 0;
497
+ // Unload all dashboard card views on destroy so the event bus
498
+ // doesn't keep responding to events for these unmounted views.
469
499
  _ApplicationManager.default.clearDashboardViews();
470
500
  };
471
501
  }, []);
@@ -596,6 +626,7 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
596
626
  settings: dashboard,
597
627
  index: colIndex + index,
598
628
  key: index,
629
+ allocateViewId: allocateViewId,
599
630
  onDelete: () => {
600
631
  userDashboards.splice(userDashboards.indexOf(dashboard), 1);
601
632
  setupCardCols();
@@ -603,4 +634,4 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
603
634
  })))))))))));
604
635
  }));
605
636
  var _default = exports.default = Dashboard;
606
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0c3RyYXAiLCJfSWNvbiIsIl9JY29uQnV0dG9uIiwiX1BhcGVyIiwiX0J1dHRvbiIsIl9SZXN0VXRpbHMiLCJfUm91dGVBY3Rpb25IYW5kbGVyIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50VHlwZSIsIl9BbGVydEJhciIsIl9yZWFjdFByb21pc2VUcmFja2VyIiwiX1ZpZXciLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJsb2NhdGlvbiIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJ0ZXh0IiwicmVzcG9uc2UiLCJrZXlDb3VudGVyIiwiYWxlcnRCYXJIYW5kbGUiLCJEYXNoYm9hcmRDYXJkIiwicHJvcHMiLCJwYXRoIiwic2V0UGF0aCIsIlJlYWN0IiwidXNlU3RhdGUiLCJuYW1lIiwic2V0TmFtZSIsImRpc3BsYXlUeXBlIiwic2V0RGlzcGxheVR5cGUiLCJ2aWV3Iiwic2V0dmlldyIsInNldHRpbmdzIiwiaWQiLCJzZXRJZCIsImNvbnRlbnQiLCJzZXRDb250ZW50IiwicmVmIiwiY3JlYXRlUmVmIiwidXNlRWZmZWN0IiwiYWNjZXNzVG9rZW4iLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJpZFRva2VuIiwiaGFuZGxlIiwiYXBpIiwibG9hZGVkIiwic2VuZFJlcXVlc3QiLCJkYXRhIiwiZGFzaGJvYXJkVmlldyIsImNvbmZpZyIsInBhcmVudCIsInBvcFVwIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiYWRkRGFzaGJvYXJkVmlldyIsImVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiVmlldyIsImtleSIsInBhcmFtZXRlcnMiLCJmZXRjaENvbmZpZyIsIm1ldGhvZCIsImhlYWRlcnMiLCJ0cmFja1Byb21pc2UiLCJmZXRjaCIsImVuY29kZVVSSSIsInRoZW4iLCJjb25zb2xlIiwibG9nIiwiY2F0Y2giLCJhbGVydCIsIm1lc3NhZ2UiLCJlcnJvciIsImxvYWQiLCJ1cmwiLCJnZXRDb250ZXh0Um9vdCIsImdldFVJQ29uZmlnUGF0aCIsImRlZmF1bHREaXNwbGF5VHlwZSIsIlV0aWxzIiwiaXNOdWxsIiwiZGVmYXVsdE5hbWUiLCJkYXNoYm9hcmROYW1lIiwiZGVmYXVsdERhc2hib2FyZE5hbWUiLCJjb250ZW50UGF0aCIsImNvbmNhdCIsInRvTG93ZXJDYXNlIiwic2F2ZURhc2hib2FyZCIsInBvc3REYXRhIiwiZGlzcGxheUFsZXJ0IiwiU1lTVEVNX0VSUk9SX01FU1NBR0UiLCJtZXNzYWdlVHlwZSIsIm1lc3NhZ2VUZXh0IiwiZXZlbnQiLCJFdmVudCIsImV2ZW50TWFuYWdlciIsImZpcmVFdmVudCIsIkV2ZW50VHlwZSIsIk1FU1NBR0VfQVJSSVZFRCIsImRlbGV0ZURhc2hib2FyZCIsIm9wZW5Db25maXJtRGlhbG9nIiwicmVzdWx0Iiwib25EZWxldGUiLCJzdHlsZSIsIm1pbldpZHRoIiwib3ZlcmZsb3ciLCJjbGFzc05hbWUiLCJoZWlnaHQiLCJVbmNvbnRyb2xsZWREcm9wZG93biIsIkRyb3Bkb3duVG9nZ2xlIiwiY29sb3IiLCJ3aWR0aCIsIm1hcmdpbiIsIm5hdiIsInBhZGRpbmciLCJEcm9wZG93bk1lbnUiLCJ0YWciLCJOYXZMaW5rIiwiRHJvcGRvd25JdGVtIiwib25DbGljayIsImRpc2FibGVkIiwiZm9udFNpemUiLCJ0eXBlIiwiV29ya0Zsb3dDYXJkIiwic3AiLCJzZXRTcCIsIm1pblciLCJzZXRNaW5XIiwicm91dGVBY3Rpb24iLCJpbm5lcldpZHRoIiwidGl0bGUiLCJpdGVtQ291bnQiLCJtYXJnaW5Ub3AiLCJ2YXJpYW50Iiwic2l6ZSIsInBhcnNlRmxvYXQiLCJSb3V0ZUFjdGlvbkhhbmRsZXIiLCJleGVjdXRlIiwidmlld1JlZiIsIkRhc2hib2FyZCIsIm1lbW8iLCJmb3J3YXJkUmVmIiwidXNlckRhc2hib2FyZHMiLCJnZXREYXNoYm9hcmRTZXR0aW5ncyIsInRhc2tTdW1tYXJ5Iiwic2V0VGFza1N1bW1hcnkiLCJtZW51SXRlbXMiLCJzZXRNZW51SXRlbXMiLCJjYXJkQ29scyIsInNldENhcmRDb2xzIiwiY29sdW1uSGVpZ2h0cyIsInNldENvbHVtbkhlaWdodHMiLCJudW1Db2xzIiwiZ2V0Q2hpbGRyZW4iLCJnZXRDaGlsZCIsImdldERhc2hib2FyZE1lbnUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNlcnZpY2UiLCJ2YWx1ZSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiY29udGVudFR5cGUiLCJpbnZva2VSZXN0IiwibWVudXMiLCJsb2FkTWVudXMiLCJzeXN0ZW1Qcm9maWxlRHRvIiwibW9kdWxlcyIsImRhc2hib2FyZE1lbnVpdGVtcyIsImxlbmd0aCIsIm1vZHVsZSIsImRhc2hib2FyZE1lbnUiLCJqIiwibWVudSIsIml0ZW1zIiwiaXRlbSIsInB1c2giLCJzZXR1cENhcmRDb2xzIiwidG90YWxJdGVtcyIsImNvbHMiLCJBcnJheSIsImZyb20iLCJfIiwiZm9yRWFjaCIsImluZGV4IiwibWF4SXRlbXMiLCJNYXRoIiwibWF4IiwibWFwIiwiY29sIiwiYmFzZUhlaWdodFBlckNhcmQiLCJ0b3RhbFRhcmdldEhlaWdodCIsImhlaWdodHMiLCJ0b0ZpeGVkIiwiZGFzaGJvYXJkcyIsImRhc2hib2FyZCIsInNldERhc2hib2FyZFZpZXciLCJjbGVhckRhc2hib2FyZFZpZXdzIiwiYWRkRGFzaGJvYXJkQ2FyZCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJzdWJzY3JpcHRpb25zIiwiYWN0aW9ucyIsIkZyYWdtZW50IiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsImdhcCIsImVuZCIsImF0dHJpYnV0ZXMiLCJsYWJlbCIsIm1heEhlaWdodCIsIm92ZXJmbG93WSIsIm92ZXJmbG93WCIsInZpZXdJZCIsInBhZGRpbmdSaWdodCIsIm1pbkhlaWdodCIsInBlcnNvbmFsV29ya0l0ZW1Db3VudCIsImdyb3VwV29ya0l0ZW1Db3VudCIsImR1ZVRvZGF5SXRlbUNvdW50IiwiY29sSW5kZXgiLCJmbGV4IiwiYm94U2l6aW5nIiwiZmxleERpcmVjdGlvbiIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsImJvcmRlclJhZGl1cyIsInNwbGljZSIsImluZGV4T2YiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3ZpZXcvRGFzaGJvYXJkLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHt1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQge0Ryb3Bkb3duSXRlbSwgRHJvcGRvd25NZW51LCBEcm9wZG93blRvZ2dsZSwgTmF2TGluaywgVW5jb250cm9sbGVkRHJvcGRvd259IGZyb20gJ3JlYWN0c3RyYXAnO1xuaW1wb3J0IEljb24gZnJvbSAnLi4vY29tcG9uZW50cy9JY29uJztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvSWNvbkJ1dHRvbic7XG5pbXBvcnQgUGFwZXIgZnJvbSAnQG11aS9tYXRlcmlhbC9QYXBlcic7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQnV0dG9uJztcbmltcG9ydCB7aW52b2tlUmVzdCwgcG9zdERhdGEsIHNlbmRSZXF1ZXN0fSBmcm9tICcuLi9SZXN0VXRpbHMnO1xuaW1wb3J0IFJvdXRlQWN0aW9uSGFuZGxlciBmcm9tICcuLi9ldmVudC9Sb3V0ZUFjdGlvbkhhbmRsZXInO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgQWxlcnRCYXIgZnJvbSAnLi4vY29tcG9uZW50cy9BbGVydEJhcic7XG5pbXBvcnQge3RyYWNrUHJvbWlzZX0gZnJvbSBcInJlYWN0LXByb21pc2UtdHJhY2tlclwiO1xuaW1wb3J0IHtWaWV3fSBmcm9tIFwiLi4vY29tcG9uZW50cy9sYXlvdXQvVmlld1wiO1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5jb25zdCB0ZXh0ID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcbn07XG5cbmxldCBrZXlDb3VudGVyID0gMDtcblxuY29uc3QgYWxlcnRCYXJIYW5kbGUgPSB7fTtcbmNvbnN0IERhc2hib2FyZENhcmQgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbcGF0aCwgc2V0UGF0aF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbmFtZSwgc2V0TmFtZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbZGlzcGxheVR5cGUsIHNldERpc3BsYXlUeXBlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2aWV3LCBzZXR2aWV3XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IHtzZXR0aW5nc30gPSBwcm9wcztcbiAgICBjb25zdCBbaWQsIHNldElkXSA9IFJlYWN0LnVzZVN0YXRlKHByb3BzLnNldHRpbmdzLmlkKTtcbiAgICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbcmVmXSA9IFJlYWN0LnVzZVN0YXRlKFJlYWN0LmNyZWF0ZVJlZigpKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NUb2tlbicpO1xuICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IHtcbiAgICAgICAgICAgICAgICBhcGk6IHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkYXNoYm9hcmQtbWVudXMnO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChwYXRoICYmIGRpc3BsYXlUeXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3BsYXlUeXBlID09PSAnVklFVycpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VuZFJlcXVlc3QocGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VuZFJlcXVlc3QgYXV0by1kZWNvZGVzIHRoZSB7X2NkdWlfen0gd2lyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyYXAgZm9yIC91aS9hcGkvdiovIFVSTHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5pZCA9IGRhdGEuaWQgKyBcIl9cIiArIGtleUNvdW50ZXIrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGFzaGJvYXJkVmlldyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuY29uZmlnID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LnBhcmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcucG9wVXAgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LndpbmRvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuY29uZmlnLndpbmRvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuaGFuZGxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuYWRkRGFzaGJvYXJkVmlldyhkYXNoYm9hcmRWaWV3LCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IDxWaWV3IGtleT17ZGF0YS5pZCArIFwiX1wiICsga2V5Q291bnRlcn0gY29uZmlnPXtkYXRhfSBwYXJhbWV0ZXJzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2Rhc2hib2FyZFZpZXcuaGFuZGxlfS8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHZpZXcoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmV0Y2hDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ3RleHQvaHRtbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWRUb2tlbic6IGlkVG9rZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoKGVuY29kZVVSSShwYXRoKSwgZmV0Y2hDb25maWcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4odGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNPTlRFTlQgOiBcIiwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRlbnQoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoZS5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbcGF0aCwgZGlzcGxheVR5cGVdKTtcblxuICAgIGZ1bmN0aW9uIGxvYWQoKSB7XG4gICAgICAgIGlmICghcGF0aCkge1xuICAgICAgICAgICAgLy8gVE9ETzogTWFrZSB0aGUgYmFzZSBVUkwgZHluYW1pY1xuICAgICAgICAgICAgbGV0IHVybCA9IGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KClcbiAgICAgICAgICAgICAgICArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVSUNvbmZpZ1BhdGgoKSArICcvZGFzaGJvYXJkL2dldD92ZXJzaW9uPTEuMCZpZD0nICsgc2V0dGluZ3MucGF0aDtcbiAgICAgICAgICAgIHNlbmRSZXF1ZXN0KHVybCxcbiAgICAgICAgICAgICAgICAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZW5kUmVxdWVzdCBhdXRvLWRlY29kZXMgdGhlIHtfY2R1aV96fSB3aXJlIHdyYXAuXG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0RGlzcGxheVR5cGUgPSAhVXRpbHMuaXNOdWxsKHNldHRpbmdzLnBhcmFtZXRlcnMuZGlzcGxheVR5cGUpID8gc2V0dGluZ3MucGFyYW1ldGVycy5kaXNwbGF5VHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkYXRhLmRlZmF1bHREaXNwbGF5VHlwZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGRlZmF1bHREaXNwbGF5VHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBkZXRlcm1pbmUgZGlzcGxheSB0eXBlIGZvciBkYXNoYm9hcmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlUeXBlKGRlZmF1bHREaXNwbGF5VHlwZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlZmF1bHROYW1lID0gIVV0aWxzLmlzTnVsbChzZXR0aW5ncy5wYXJhbWV0ZXJzLmRhc2hib2FyZE5hbWUpID8gc2V0dGluZ3MucGFyYW1ldGVycy5kYXNoYm9hcmROYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRhdGEuZGVmYXVsdERhc2hib2FyZE5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChkZWZhdWx0RGlzcGxheVR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZGV0ZXJtaW5lIGEgZGVmYXVsdCBuYW1lIGZvciBkYXNoYm9hcmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNldE5hbWUoZGVmYXVsdE5hbWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdERpc3BsYXlUeXBlID09PSAnVklFVycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVJQ29uZmlnUGF0aCgpICsgJy92aWV3L2dldD92ZXJzaW9uPTEuMCZpZD0nICsgZGF0YS5jb250ZW50UGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhdGgodXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlUeXBlKGRlZmF1bHREaXNwbGF5VHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYXRoKGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVSUNvbmZpZ1BhdGgoKSArICcvaHRtbC9nZXQ/dmVyc2lvbj0xLjAmaWQ9J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZGF0YS5jb250ZW50UGF0aCArIGAtJHtkZWZhdWx0RGlzcGxheVR5cGUudG9Mb3dlckNhc2UoKX0uaHRtbCZhY2Nlc3NfdG9rZW49JHthY2Nlc3NUb2tlbn0maWRUb2tlbj0ke2lkVG9rZW59YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBsb2FkKCk7XG4gICAgICAgIH0sIFtdXG4gICAgKTtcblxuICAgIGNvbnN0IHNhdmVEYXNoYm9hcmQgPSAoKSA9PiB7XG4gICAgICAgIHNldHRpbmdzLnBhcmFtZXRlcnMuZGlzcGxheVR5cGUgPSBkaXNwbGF5VHlwZTtcbiAgICAgICAgc2V0dGluZ3MucGFyYW1ldGVycy5kYXNoYm9hcmROYW1lID0gbmFtZTtcblxuICAgICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgICAgIGlkOiBzZXR0aW5ncy5pZCxcbiAgICAgICAgICAgIHBhdGg6IHNldHRpbmdzLnBhdGgsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiBzZXR0aW5ncy5wYXJhbWV0ZXJzXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHVybCA9IGAke2xvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L3N5c3RlbS9hcGkvdjEvdXNlci9kYXNoYm9hcmQvc2F2ZWA7XG4gICAgICAgIHBvc3REYXRhKHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBzZXR0aW5ncy5pZCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgc2V0SWQocmVzcG9uc2UpO1xuICAgICAgICAgICAgZGlzcGxheUFsZXJ0KCdTVUNDRVNTJywgJ0Rhc2hib2FyZCBzYXZlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgZGlzcGxheUFsZXJ0KCdFUlJPUicsIFV0aWxzLlNZU1RFTV9FUlJPUl9NRVNTQUdFKVxuICAgICAgICB9LCB0cnVlLCBkYXRhKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGlzcGxheUFsZXJ0ID0gKG1lc3NhZ2VUeXBlLCBtZXNzYWdlVGV4dCkgPT4ge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IHtcbiAgICAgICAgICAgIG1lc3NhZ2VUeXBlOiBtZXNzYWdlVHlwZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VUZXh0XG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KGFwcGxpY2F0aW9uTWFuYWdlciwgJ19zeXNfZGFzaGJvYXJkJywgbWVzc2FnZSk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLk1FU1NBR0VfQVJSSVZFRCwgZXZlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlbGV0ZURhc2hib2FyZCA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2V0dGluZ3MpICYmICFVdGlscy5pc051bGwoc2V0dGluZ3MuaWQpKSB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIub3BlbkNvbmZpcm1EaWFsb2coJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBkYXNoYm9hcmQ/JywgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGAke2xvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L3N5c3RlbS9hcGkvdjEvdXNlci9kYXNoYm9hcmQvZGVsZXRlLyR7c2V0dGluZ3MuaWR9YDtcbiAgICAgICAgICAgICAgICAgICAgc2VuZFJlcXVlc3QodXJsLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5vbkRlbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxQYXBlciBzdHlsZT17e1xuICAgICAgICAgICAgbWluV2lkdGg6ICcyMDBweCcsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICAgICAgfX1cbiAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2NvbCd9IHJlZj17cmVmfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wtKi0qJ30gc3R5bGU9e3toZWlnaHQ6ICc2NHB4J319PlxuICAgICAgICAgICAgICAgICAgICA8VW5jb250cm9sbGVkRHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMzJweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzMycHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICc4cHggOHB4IDAgMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJtZW51LWxpc3QtZ3Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogJzMycHgnLCBoZWlnaHQ6ICczMnB4J319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJmYSBmYS1lbGxpcHNpcy12IGZhLXhzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9e3twYWRkaW5nOiAnM3B4J319Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duVG9nZ2xlPnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudSBjbGFzc05hbWU9XCJkcm9wZG93bi1uYXZiYXJcIiB0YWc9XCJ1bFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKkRpc2FibGUgdGhpcyBidXR0b24gaWYgaWQgaXMgYWxyZWFkeSBzYXZlZC4gQWZ0ZXIgY3JlYXRpbmcgZGFzaGJvYXJkIHByb3BlcnRpZXMgc3VjaCBhcyBmaWx0ZXJzLCB0aGlzIGJ1dHRvbiBtdXN0IHJlbWFpbiBlbmFibGVkIGF0IGFsbCB0aW1lcyovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2TGluayB0YWc9XCJsaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW0gY2xhc3NOYW1lPVwibmF2LWl0ZW1cIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXNoYm9hcmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSBkaXNhYmxlZD17IVV0aWxzLmlzTnVsbChpZCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J1NBVkUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9OYXZMaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZMaW5rIHRhZz1cImxpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbSBjbGFzc05hbWU9XCJuYXYtaXRlbVwiIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlRGFzaGJvYXJkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gZGlzYWJsZWQ9e1V0aWxzLmlzTnVsbChpZCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J0RFTEVURSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+eycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTmF2TGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L1VuY29udHJvbGxlZERyb3Bkb3duPnsnICd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wtKi0qJ30gc3R5bGU9e3twYWRkaW5nOiAnMTRweCAwIDAgMTJweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3tmb250U2l6ZTogJzI0cHgnfX0+e25hbWV9PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICdjYWxjKDEwMCUgLSA2NHB4KScsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJzhweCAwIDMycHggMzJweCdcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChwYXRoKSAmJiAhVXRpbHMuaXNOdWxsKGRpc3BsYXlUeXBlKSAmJiBkaXNwbGF5VHlwZSAhPT0gJ1ZJRVcnICYmXG4gICAgICAgICAgICAgICAgICAgIDxvYmplY3QgZGF0YT17cGF0aH0gdHlwZT1cInRleHQvaHRtbFwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgfX0vPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwocGF0aCkgJiYgZGlzcGxheVR5cGUgIT09ICdWSUVXJyAmJlxuICAgICAgICAgICAgICAgICAgICA8cD5Mb2FkaW5nLi4uPC9wPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUeXBlID09PSAnVklFVycgJiYgIVV0aWxzLmlzTnVsbCh2aWV3KSAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7d2lkdGg6ICcxMDAlJywgaGVpZ2h0OiBcIjEwMCVcIn19PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgKTtcbn07XG5cbmNvbnN0IFdvcmtGbG93Q2FyZCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtzcCwgc2V0U3BdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW21pblcsIHNldE1pblddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgcm91dGVBY3Rpb24gPSB7XG4gICAgICAgICdhY3Rpb25UeXBlJzogJ3JvdXRlJyxcbiAgICAgICAgJ3BhcmVudCc6IHRydWVcbiAgICB9O1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA0MDApIHtcbiAgICAgICAgICAgICAgICBzZXRTcCgxNik7XG4gICAgICAgICAgICAgICAgc2V0TWluVygyODApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRTcCg0OCk7XG4gICAgICAgICAgICAgICAgc2V0TWluVygzMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICBVdGlscy5pc051bGwoc3ApIHx8IFV0aWxzLmlzTnVsbChtaW5XKSA/XG4gICAgICAgICAgICBudWxsIDpcbiAgICAgICAgICAgIDxQYXBlciBzdHlsZT17e1xuICAgICAgICAgICAgICAgIG1pbldpZHRoOiBgJHttaW5XfXB4YCxcbiAgICAgICAgICAgICAgICBtYXJnaW46IHByb3BzLm1hcmdpbixcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxNTJweCdcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wtKi0qJ30gc3R5bGU9e3t3aWR0aDogJzcwJSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBgMTZweCAke3NwfXB4IDE2cHggJHtzcH1weGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzhweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjU0KSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JrIEl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBgMTZweCAke3NwfXB4IDQ4cHggJHtzcH1weGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcyMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogYDAgJHtzcH1weCAxNnB4ICR7c3B9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5pdGVtQ291bnR9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sLSotKid9IHN0eWxlPXt7bWFyZ2luVG9wOiAnNTBweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnY29udGFpbmVkJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17J3ByaW1hcnknfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3BhcnNlRmxvYXQocHJvcHMuaXRlbUNvdW50KSA9PT0gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlQWN0aW9uLnBhdGggPSBwcm9wcy5wYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3V0ZUFjdGlvbkhhbmRsZXIuZXhlY3V0ZShyb3V0ZUFjdGlvbiwgbnVsbCwgcHJvcHMudmlld1JlZiwgJ19zeXNfZGFzaGJvYXJkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWV3XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L1BhcGVyPlxuICAgICk7XG59O1xuXG5jb25zdCBEYXNoYm9hcmQgPSBSZWFjdC5tZW1vKFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcbiAgICBjb25zdCBbdXNlckRhc2hib2FyZHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgICAgICFVdGlscy5pc051bGwoYXBwbGljYXRpb25NYW5hZ2VyLmdldERhc2hib2FyZFNldHRpbmdzKCkudXNlckRhc2hib2FyZHMpID8gYXBwbGljYXRpb25NYW5hZ2VyLmdldERhc2hib2FyZFNldHRpbmdzKCkudXNlckRhc2hib2FyZHMgOiBbXSk7XG4gICAgY29uc3QgW3NldHRpbmdzXSA9IFJlYWN0LnVzZVN0YXRlKGFwcGxpY2F0aW9uTWFuYWdlci5nZXREYXNoYm9hcmRTZXR0aW5ncygpKTtcbiAgICBjb25zdCBbdGFza1N1bW1hcnksIHNldFRhc2tTdW1tYXJ5XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFttZW51SXRlbXMsIHNldE1lbnVJdGVtc10gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY2FyZENvbHMsIHNldENhcmRDb2xzXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjb2x1bW5IZWlnaHRzLCBzZXRDb2x1bW5IZWlnaHRzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBsZXQgbnVtQ29scyA9IDI7XG5cbiAgICBjb25zdCBhcGkgPSB7XG4gICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgIHJldHVybiAnX3N5c19kYXNoYm9hcmQnO1xuICAgICAgICB9LFxuICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFthbGVydEJhckhhbmRsZV07XG4gICAgICAgIH0sXG4gICAgICAgIGdldENoaWxkOiAoaWQpID0+IHtcbiAgICAgICAgICAgIGlmIChpZCA9PT0gJ2Rhc2hib2FyZEFsZXJ0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhbGVydEJhckhhbmRsZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlID0ge1xuICAgICAgICAnYXBpJzogYXBpXG4gICAgfTtcblxuICAgIGNvbnN0IGdldERhc2hib2FyZE1lbnUgPSAocGF0aCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGxldCBzZXJ2aWNlID0ge1xuICAgICAgICAgICAgICAgIHVybDogJy91aS9hcGkvdjEvbWVudS9nZXQnLFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cFBhcmFtZXRlclR5cGU6ICdRVUVSWV9QQVJBTUVURVInXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAxLjAsXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1ldGVyVHlwZTogJ1FVRVJZX1BBUkFNRVRFUidcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaW52b2tlUmVzdChzZXJ2aWNlLCB7XG4gICAgICAgICAgICAgICAgICAgIGFwaToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGFzaGJvYXJkLW1lbnVzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sICdkYXNoYm9hcmQtbWVudXMnLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0Lm1lbnVzKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICAgICAgfSwgbnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBhc3luYyBmdW5jdGlvbiBsb2FkTWVudXMoKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwobWVudUl0ZW1zKSAmJiAhVXRpbHMuaXNOdWxsKHNldHRpbmdzLnN5c3RlbVByb2ZpbGVEdG8ubW9kdWxlcykpIHtcbiAgICAgICAgICAgIGxldCBkYXNoYm9hcmRNZW51aXRlbXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dGluZ3Muc3lzdGVtUHJvZmlsZUR0by5tb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSA9IHNldHRpbmdzLnN5c3RlbVByb2ZpbGVEdG8ubW9kdWxlc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChtb2R1bGUuZGFzaGJvYXJkTWVudSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lbnVzID0gYXdhaXQgZ2V0RGFzaGJvYXJkTWVudShtb2R1bGUuZGFzaGJvYXJkTWVudSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZW51cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtZW51cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZW51ID0gbWVudXNbal07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lbnUuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIG1lbnUuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZE1lbnVpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRNZW51SXRlbXMoZGFzaGJvYXJkTWVudWl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNldHVwQ2FyZENvbHMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsSXRlbXMgPSB1c2VyRGFzaGJvYXJkcy5sZW5ndGg7XG5cbiAgICAgICAgLy8gU3BlY2lhbCBjYXNlOiAxIG9yIDIgY2FyZHMg4oCUIGZ1bGwgaGVpZ2h0XG4gICAgICAgIGlmICh0b3RhbEl0ZW1zIDw9IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHMgPSBBcnJheS5mcm9tKHtsZW5ndGg6IHRvdGFsSXRlbXN9LCAoXywgaSkgPT4gW3VzZXJEYXNoYm9hcmRzW2ldXSk7XG4gICAgICAgICAgICBzZXRDYXJkQ29scyhjb2xzKTtcbiAgICAgICAgICAgIHNldENvbHVtbkhlaWdodHMoQXJyYXkuZnJvbSh7bGVuZ3RoOiB0b3RhbEl0ZW1zfSwgKCkgPT4gJzEwMCUnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXN0cmlidXRlIHJvdW5kLXJvYmluIGludG8gY29sdW1uc1xuICAgICAgICBjb25zdCBjb2xzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiBudW1Db2xzfSwgKCkgPT4gW10pO1xuICAgICAgICB1c2VyRGFzaGJvYXJkcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29sc1tpbmRleCAlIG51bUNvbHNdLnB1c2goaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRDYXJkQ29scyhjb2xzKTtcblxuICAgICAgICAvLyBEZXRlcm1pbmUgbWF4IGNhcmQgY291bnQgYWNyb3NzIGFsbCBjb2x1bW5zXG4gICAgICAgIGNvbnN0IG1heEl0ZW1zID0gTWF0aC5tYXgoLi4uY29scy5tYXAoY29sID0+IGNvbC5sZW5ndGgpKTtcbiAgICAgICAgY29uc3QgYmFzZUhlaWdodFBlckNhcmQgPSA0MDsgLy8gaW4gdmhcbiAgICAgICAgY29uc3QgdG90YWxUYXJnZXRIZWlnaHQgPSBtYXhJdGVtcyAqIGJhc2VIZWlnaHRQZXJDYXJkOyAvLyB0b3RhbCBoZWlnaHQgcGVyIGNvbHVtbiBpbiB2aFxuXG4gICAgICAgIC8vIENhbGN1bGF0ZSB0YXJnZXQgaGVpZ2h0IHBlciBjYXJkIGluIGVhY2ggY29sdW1uXG4gICAgICAgIGNvbnN0IGhlaWdodHMgPSBjb2xzLm1hcChjb2wgPT5cbiAgICAgICAgICAgIGNvbC5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgJHsodG90YWxUYXJnZXRIZWlnaHQgLyBjb2wubGVuZ3RoKS50b0ZpeGVkKDIpfXZoYFxuICAgICAgICAgICAgICAgIDogJzB2aCdcbiAgICAgICAgKTtcblxuICAgICAgICBzZXRDb2x1bW5IZWlnaHRzKGhlaWdodHMpO1xuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbCh0YXNrU3VtbWFyeSkpIHtcbiAgICAgICAgICAgICAgICBzZW5kUmVxdWVzdChgJHtsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9icG0vYXBpL3YxL3N1bW1hcnlgLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGFza1N1bW1hcnkocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIDogU2hvdyBlcnJvciBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIH0sIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZW5kUmVxdWVzdChgJHtsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9zeXN0ZW0vYXBpL3YxL3VzZXIvZGFzaGJvYXJkL2xpc3RgLCAoZGFzaGJvYXJkcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChkYXNoYm9hcmRzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBkYXNoYm9hcmQgb2YgZGFzaGJvYXJkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJEYXNoYm9hcmRzLnB1c2goZGFzaGJvYXJkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXBDYXJkQ29scygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIDogU2hvdyBlcnJvciBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfSwgdHJ1ZSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGxvYWRNZW51cygpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2V0dGluZ3MpICYmICFVdGlscy5pc051bGwodXNlckRhc2hib2FyZHMpICYmIFV0aWxzLmlzTnVsbChjYXJkQ29scykpIHtcbiAgICAgICAgICAgICAgICBzZXR1cENhcmRDb2xzKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXREYXNoYm9hcmRWaWV3KHtoYW5kbGU6IGhhbmRsZX0pO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBrZXlDb3VudGVyID0gMDtcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuY2xlYXJEYXNoYm9hcmRWaWV3cygpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwgW10pO1xuXG4gICAgY29uc3QgYWRkRGFzaGJvYXJkQ2FyZCA9IChpdGVtKSA9PiB7XG4gICAgICAgIGxldCBwYXRoID0gaXRlbS5ldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnNbMF0uYWN0aW9uc1swXS5wYXRoO1xuICAgICAgICBsZXQgc2V0dGluZ3MgPSB7fTtcbiAgICAgICAgc2V0dGluZ3MucGF0aCA9IHBhdGg7XG4gICAgICAgIHNldHRpbmdzLnBhcmFtZXRlcnMgPSB7fTtcblxuICAgICAgICB1c2VyRGFzaGJvYXJkcy5wdXNoKHNldHRpbmdzKTtcbiAgICAgICAgc2V0dXBDYXJkQ29scygpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IHJlZj17cmVmfSBzdHlsZT17e2hlaWdodDogJzMwMHB4J319PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwoc2V0dGluZ3MpICYmXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcDogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5EYXNoYm9hcmQ8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVuY29udHJvbGxlZERyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duVG9nZ2xlIGNvbG9yPVwiZGVmYXVsdFwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBuYXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gYXJpYS1jb250cm9scz1cIm1lbnUtbGlzdC1ncm93XCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydBREQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93blRvZ2dsZT57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwobWVudUl0ZW1zKSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudSBjbGFzc05hbWU9XCJkcm9wZG93bi1uYXZiYXJcIiBlbmQgdGFnPVwidWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZW51SXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZMaW5rIHRhZz1cImxpXCIga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm5hdi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGREYXNoYm9hcmRDYXJkKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0uYXR0cmlidXRlcy5sYWJlbH17JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTmF2TGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1VuY29udHJvbGxlZERyb3Bkb3duPnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3ttYXhIZWlnaHQ6ICdjYWxjKDEwMGR2aCAtIDMycHggLSB2YXIoLS1oZWFkZXItaCkpJywgb3ZlcmZsb3dZOiAnYXV0byd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvd1k6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93WDogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzAnXG4gICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnRCYXIgY29uZmlnPXt7aWQ6ICdkYXNoYm9hcmRBbGVydCd9fSBoYW5kbGU9e2FsZXJ0QmFySGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9eydfc3lzX2Rhc2hib2FyZCd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwodGFza1N1bW1hcnkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogJzE2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiAnMTYwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFdvcmtGbG93Q2FyZCBtYXJnaW49eycwIDAgOHB4IDhweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsnQXNzaWduZWQgdG8gTWUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtQ291bnQ9e3Rhc2tTdW1tYXJ5LnBlcnNvbmFsV29ya0l0ZW1Db3VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD17Jy93b3JrZmxvdy92aWV3cy9wZXJzb25hbC13b3JrLWl0ZW1zLmpzb24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxXb3JrRmxvd0NhcmQgbWFyZ2luPXsnMCAwIDhweCA4cHgnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17J0F2YWlsYWJsZSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Db3VudD17dGFza1N1bW1hcnkuZ3JvdXBXb3JrSXRlbUNvdW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPXsnL3dvcmtmbG93L3ZpZXdzL2dyb3VwLXdvcmstaXRlbXMuanNvbid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFdvcmtGbG93Q2FyZCBtYXJnaW49eycwIDAgOHB4IDhweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsnRHVlIFRvZGF5J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUNvdW50PXt0YXNrU3VtbWFyeS5kdWVUb2RheUl0ZW1Db3VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD17Jy93b3JrZmxvdy92aWV3cy9kdWUtdG9kYXktd29yay1pdGVtcy5qc29uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dYOiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJ2NhbGMoMTAwZHZoIC0gMTU4cHggLSA2NHB4IC0gdmFyKC0taGVhZGVyLWgpKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6ICdjYWxjKDEwMGR2aCAtIDE1OHB4IC0gNjRweCAtIHZhcigtLWhlYWRlci1oKSknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRDb2xzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdXNlckRhc2hib2FyZHMubGVuZ3RoIDw9IDIgPyAnMTAwJScgOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZENvbHMubWFwKChjb2wsIGNvbEluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjb2xJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FwOiAnMTJweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnNTAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogY29sSW5kZXggJSBudW1Db2xzID8gJzRweCcgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogKGNhcmRDb2xzLmxlbmd0aCA+IDEgJiYgIShjb2xJbmRleCAlIG51bUNvbHMpKSA/ICc0cHgnIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbC5tYXAoKGRhc2hib2FyZCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjb2x1bW5IZWlnaHRzW2NvbEluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hib2FyZENhcmQgc2V0dGluZ3M9e2Rhc2hib2FyZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtjb2xJbmRleCArIGluZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhc2hib2FyZHMuc3BsaWNlKHVzZXJEYXNoYm9hcmRzLmluZGV4T2YoZGFzaGJvYXJkKSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXBDYXJkQ29scygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KSk7XG5cbmV4cG9ydCBkZWZhdWx0IERhc2hib2FyZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsbUJBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLG1CQUFB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
637
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0c3RyYXAiLCJfSWNvbiIsIl9JY29uQnV0dG9uIiwiX1BhcGVyIiwiX0J1dHRvbiIsIl9SZXN0VXRpbHMiLCJfUm91dGVBY3Rpb25IYW5kbGVyIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50VHlwZSIsIl9BbGVydEJhciIsIl9yZWFjdFByb21pc2VUcmFja2VyIiwiX1ZpZXciLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJsb2NhdGlvbiIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJ0ZXh0IiwicmVzcG9uc2UiLCJhbGVydEJhckhhbmRsZSIsIkRhc2hib2FyZENhcmQiLCJwcm9wcyIsInBhdGgiLCJzZXRQYXRoIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsIm5hbWUiLCJzZXROYW1lIiwiZGlzcGxheVR5cGUiLCJzZXREaXNwbGF5VHlwZSIsInZpZXciLCJzZXR2aWV3Iiwic2V0dGluZ3MiLCJpZCIsInNldElkIiwiY29udGVudCIsInNldENvbnRlbnQiLCJyZWYiLCJjcmVhdGVSZWYiLCJ2aWV3SWRSZWYiLCJ1c2VSZWYiLCJjdXJyZW50IiwiYWxsb2NhdGVWaWV3SWQiLCJ1c2VFZmZlY3QiLCJjYW5jZWxsZWQiLCJhY2Nlc3NUb2tlbiIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsImlkVG9rZW4iLCJoYW5kbGUiLCJhcGkiLCJsb2FkZWQiLCJzZW5kUmVxdWVzdCIsImRhdGEiLCJjb25maWciLCJkYXNoYm9hcmRWaWV3IiwicGFyZW50IiwicG9wVXAiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJhZGREYXNoYm9hcmRWaWV3IiwiZWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJWaWV3Iiwia2V5IiwicGFyYW1ldGVycyIsImZldGNoQ29uZmlnIiwibWV0aG9kIiwiaGVhZGVycyIsInRyYWNrUHJvbWlzZSIsImZldGNoIiwiZW5jb2RlVVJJIiwidGhlbiIsImNvbnNvbGUiLCJsb2ciLCJjYXRjaCIsImFsZXJ0IiwibWVzc2FnZSIsImVycm9yIiwibG9hZCIsInVybCIsImdldENvbnRleHRSb290IiwiZ2V0VUlDb25maWdQYXRoIiwiZGVmYXVsdERpc3BsYXlUeXBlIiwiVXRpbHMiLCJpc051bGwiLCJkZWZhdWx0TmFtZSIsImRhc2hib2FyZE5hbWUiLCJkZWZhdWx0RGFzaGJvYXJkTmFtZSIsImNvbnRlbnRQYXRoIiwiY29uY2F0IiwidG9Mb3dlckNhc2UiLCJzYXZlRGFzaGJvYXJkIiwicG9zdERhdGEiLCJkaXNwbGF5QWxlcnQiLCJTWVNURU1fRVJST1JfTUVTU0FHRSIsIm1lc3NhZ2VUeXBlIiwibWVzc2FnZVRleHQiLCJldmVudCIsIkV2ZW50IiwiZXZlbnRNYW5hZ2VyIiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiTUVTU0FHRV9BUlJJVkVEIiwiZGVsZXRlRGFzaGJvYXJkIiwib3BlbkNvbmZpcm1EaWFsb2ciLCJyZXN1bHQiLCJvbkRlbGV0ZSIsInN0eWxlIiwibWluV2lkdGgiLCJvdmVyZmxvdyIsImNsYXNzTmFtZSIsImhlaWdodCIsIlVuY29udHJvbGxlZERyb3Bkb3duIiwiRHJvcGRvd25Ub2dnbGUiLCJjb2xvciIsIndpZHRoIiwibWFyZ2luIiwibmF2IiwicGFkZGluZyIsIkRyb3Bkb3duTWVudSIsInRhZyIsIk5hdkxpbmsiLCJEcm9wZG93bkl0ZW0iLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJmb250U2l6ZSIsInR5cGUiLCJXb3JrRmxvd0NhcmQiLCJzcCIsInNldFNwIiwibWluVyIsInNldE1pblciLCJyb3V0ZUFjdGlvbiIsImlubmVyV2lkdGgiLCJ0aXRsZSIsIml0ZW1Db3VudCIsIm1hcmdpblRvcCIsInZhcmlhbnQiLCJzaXplIiwicGFyc2VGbG9hdCIsIlJvdXRlQWN0aW9uSGFuZGxlciIsImV4ZWN1dGUiLCJ2aWV3UmVmIiwiRGFzaGJvYXJkIiwibWVtbyIsImZvcndhcmRSZWYiLCJ1c2VyRGFzaGJvYXJkcyIsImdldERhc2hib2FyZFNldHRpbmdzIiwidGFza1N1bW1hcnkiLCJzZXRUYXNrU3VtbWFyeSIsIm1lbnVJdGVtcyIsInNldE1lbnVJdGVtcyIsImNhcmRDb2xzIiwic2V0Q2FyZENvbHMiLCJjb2x1bW5IZWlnaHRzIiwic2V0Q29sdW1uSGVpZ2h0cyIsIm51bUNvbHMiLCJ2aWV3U2VxIiwidXNlQ2FsbGJhY2siLCJnZXRDaGlsZHJlbiIsImdldENoaWxkIiwiZ2V0RGFzaGJvYXJkTWVudSIsIlByb21pc2UiLCJyZXNvbHZlIiwic2VydmljZSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiY29udGVudFR5cGUiLCJpbnZva2VSZXN0IiwibWVudXMiLCJsb2FkTWVudXMiLCJzeXN0ZW1Qcm9maWxlRHRvIiwibW9kdWxlcyIsImRhc2hib2FyZE1lbnVpdGVtcyIsIm1vZHVsZSIsImRhc2hib2FyZE1lbnUiLCJqIiwibWVudSIsIml0ZW1zIiwiaXRlbSIsInNldHVwQ2FyZENvbHMiLCJ0b3RhbEl0ZW1zIiwiY29scyIsIkFycmF5IiwiZnJvbSIsIl8iLCJpbmRleCIsIm1heEl0ZW1zIiwiTWF0aCIsIm1heCIsIm1hcCIsImNvbCIsImJhc2VIZWlnaHRQZXJDYXJkIiwidG90YWxUYXJnZXRIZWlnaHQiLCJoZWlnaHRzIiwidG9GaXhlZCIsImRhc2hib2FyZHMiLCJkYXNoYm9hcmQiLCJzZXREYXNoYm9hcmRWaWV3IiwiY2xlYXJEYXNoYm9hcmRWaWV3cyIsImFkZERhc2hib2FyZENhcmQiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwic3Vic2NyaXB0aW9ucyIsImFjdGlvbnMiLCJGcmFnbWVudCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJnYXAiLCJlbmQiLCJhdHRyaWJ1dGVzIiwibGFiZWwiLCJtYXhIZWlnaHQiLCJvdmVyZmxvd1kiLCJvdmVyZmxvd1giLCJ2aWV3SWQiLCJwYWRkaW5nUmlnaHQiLCJtaW5IZWlnaHQiLCJwZXJzb25hbFdvcmtJdGVtQ291bnQiLCJncm91cFdvcmtJdGVtQ291bnQiLCJkdWVUb2RheUl0ZW1Db3VudCIsImNvbEluZGV4IiwiZmxleCIsImJveFNpemluZyIsImZsZXhEaXJlY3Rpb24iLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJib3JkZXJSYWRpdXMiLCJzcGxpY2UiLCJpbmRleE9mIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi92aWV3L0Rhc2hib2FyZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0LCB7dXNlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0IHtEcm9wZG93bkl0ZW0sIERyb3Bkb3duTWVudSwgRHJvcGRvd25Ub2dnbGUsIE5hdkxpbmssIFVuY29udHJvbGxlZERyb3Bkb3dufSBmcm9tICdyZWFjdHN0cmFwJztcbmltcG9ydCBJY29uIGZyb20gJy4uL2NvbXBvbmVudHMvSWNvbic7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0ljb25CdXR0b24nO1xuaW1wb3J0IFBhcGVyIGZyb20gJ0BtdWkvbWF0ZXJpYWwvUGFwZXInO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0J1dHRvbic7XG5pbXBvcnQge2ludm9rZVJlc3QsIHBvc3REYXRhLCBzZW5kUmVxdWVzdH0gZnJvbSAnLi4vUmVzdFV0aWxzJztcbmltcG9ydCBSb3V0ZUFjdGlvbkhhbmRsZXIgZnJvbSAnLi4vZXZlbnQvUm91dGVBY3Rpb25IYW5kbGVyJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBFdmVudCBmcm9tICcuLi9ldmVudC9FdmVudCc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tICcuLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IEFsZXJ0QmFyIGZyb20gJy4uL2NvbXBvbmVudHMvQWxlcnRCYXInO1xuaW1wb3J0IHt0cmFja1Byb21pc2V9IGZyb20gXCJyZWFjdC1wcm9taXNlLXRyYWNrZXJcIjtcbmltcG9ydCB7Vmlld30gZnJvbSBcIi4uL2NvbXBvbmVudHMvbGF5b3V0L1ZpZXdcIjtcblxuY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuY29uc3QgdGV4dCA9IChyZXNwb25zZSkgPT4ge1xuICAgIHJldHVybiByZXNwb25zZS50ZXh0KCk7XG59O1xuXG5jb25zdCBhbGVydEJhckhhbmRsZSA9IHt9O1xuY29uc3QgRGFzaGJvYXJkQ2FyZCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtwYXRoLCBzZXRQYXRoXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtuYW1lLCBzZXROYW1lXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtkaXNwbGF5VHlwZSwgc2V0RGlzcGxheVR5cGVdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3ZpZXcsIHNldHZpZXddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qge3NldHRpbmdzfSA9IHByb3BzO1xuICAgIGNvbnN0IFtpZCwgc2V0SWRdID0gUmVhY3QudXNlU3RhdGUocHJvcHMuc2V0dGluZ3MuaWQpO1xuICAgIGNvbnN0IFtjb250ZW50LCBzZXRDb250ZW50XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtyZWZdID0gUmVhY3QudXNlU3RhdGUoUmVhY3QuY3JlYXRlUmVmKCkpO1xuICAgIC8vIE9uZSBzdGFibGUsIHVuaXF1ZSB2aWV3IGlkIGZvciB0aGlzIGNhcmQncyBsaWZldGltZSwgZHJhd24gZnJvbSB0aGVcbiAgICAvLyBkYXNoYm9hcmQtbGlmZWN5Y2xlIGNvdW50ZXIgc28gaXQgbmV2ZXIgY29sbGlkZXMgd2l0aCBhIHNpYmxpbmcgY2FyZC5cbiAgICBjb25zdCB2aWV3SWRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgaWYgKHZpZXdJZFJlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIHZpZXdJZFJlZi5jdXJyZW50ID0gcHJvcHMuYWxsb2NhdGVWaWV3SWQoKTtcbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJyk7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGUgPSB7XG4gICAgICAgICAgICAgICAgYXBpOiB7XG4gICAgICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGFzaGJvYXJkLW1lbnVzJztcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAocGF0aCAmJiBkaXNwbGF5VHlwZSkge1xuICAgICAgICAgICAgICAgIGlmIChkaXNwbGF5VHlwZSA9PT0gJ1ZJRVcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbmRSZXF1ZXN0KHBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxsZWQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZW5kUmVxdWVzdCBhdXRvLWRlY29kZXMgdGhlIHtfY2R1aV96fSB3aXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JhcCBmb3IgL3VpL2FwaS92Ki8gVVJMcy4gQ2xvbmUgc28gd2UgbmV2ZXIgbXV0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSAocG9zc2libHkgY2FjaGVkKSBzaGFyZWQgcmVzcG9uc2UsIGFuZCBzdGFtcCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5pcXVlLWFuZC1zdGFibGUgaWQgZm9yIHRoaXMgY2FyZCBpbnN0YW5jZTsgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhY3Qga2V5IG1hdGNoZXMgY29uZmlnLmlkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHsuLi5kYXRhLCBpZDogZGF0YS5pZCArIFwiX1wiICsgdmlld0lkUmVmLmN1cnJlbnQsIHdpbmRvdzogZmFsc2V9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXNoYm9hcmRWaWV3ID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5jb25maWcgPSBjb25maWc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5wYXJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LnBvcFVwID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldy53aW5kb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmhhbmRsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmFkZERhc2hib2FyZFZpZXcoZGFzaGJvYXJkVmlldywgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSA8VmlldyBrZXk9e2NvbmZpZy5pZH0gY29uZmlnPXtjb25maWd9IHBhcmFtZXRlcnM9e1tdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17ZGFzaGJvYXJkVmlldy5oYW5kbGV9Lz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dmlldyhlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmZXRjaENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQnOiAndGV4dC9odG1sJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZFRva2VuJzogaWRUb2tlblxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgdHJhY2tQcm9taXNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2goZW5jb2RlVVJJKHBhdGgpLCBmZXRjaENvbmZpZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbih0ZXh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxsZWQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJDT05URU5UIDogXCIsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250ZW50KGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxsZWQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoZS5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCBbcGF0aCwgZGlzcGxheVR5cGVdKTtcblxuICAgIGZ1bmN0aW9uIGxvYWQoKSB7XG4gICAgICAgIGlmICghcGF0aCkge1xuICAgICAgICAgICAgLy8gVE9ETzogTWFrZSB0aGUgYmFzZSBVUkwgZHluYW1pY1xuICAgICAgICAgICAgbGV0IHVybCA9IGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KClcbiAgICAgICAgICAgICAgICArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVSUNvbmZpZ1BhdGgoKSArICcvZGFzaGJvYXJkL2dldD92ZXJzaW9uPTEuMCZpZD0nICsgc2V0dGluZ3MucGF0aDtcbiAgICAgICAgICAgIHNlbmRSZXF1ZXN0KHVybCxcbiAgICAgICAgICAgICAgICAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZW5kUmVxdWVzdCBhdXRvLWRlY29kZXMgdGhlIHtfY2R1aV96fSB3aXJlIHdyYXAuXG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0RGlzcGxheVR5cGUgPSAhVXRpbHMuaXNOdWxsKHNldHRpbmdzLnBhcmFtZXRlcnMuZGlzcGxheVR5cGUpID8gc2V0dGluZ3MucGFyYW1ldGVycy5kaXNwbGF5VHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkYXRhLmRlZmF1bHREaXNwbGF5VHlwZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGRlZmF1bHREaXNwbGF5VHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBkZXRlcm1pbmUgZGlzcGxheSB0eXBlIGZvciBkYXNoYm9hcmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlUeXBlKGRlZmF1bHREaXNwbGF5VHlwZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlZmF1bHROYW1lID0gIVV0aWxzLmlzTnVsbChzZXR0aW5ncy5wYXJhbWV0ZXJzLmRhc2hib2FyZE5hbWUpID8gc2V0dGluZ3MucGFyYW1ldGVycy5kYXNoYm9hcmROYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRhdGEuZGVmYXVsdERhc2hib2FyZE5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChkZWZhdWx0RGlzcGxheVR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZGV0ZXJtaW5lIGEgZGVmYXVsdCBuYW1lIGZvciBkYXNoYm9hcmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNldE5hbWUoZGVmYXVsdE5hbWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdERpc3BsYXlUeXBlID09PSAnVklFVycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVJQ29uZmlnUGF0aCgpICsgJy92aWV3L2dldD92ZXJzaW9uPTEuMCZpZD0nICsgZGF0YS5jb250ZW50UGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhdGgodXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlUeXBlKGRlZmF1bHREaXNwbGF5VHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYXRoKGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVSUNvbmZpZ1BhdGgoKSArICcvaHRtbC9nZXQ/dmVyc2lvbj0xLjAmaWQ9J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZGF0YS5jb250ZW50UGF0aCArIGAtJHtkZWZhdWx0RGlzcGxheVR5cGUudG9Mb3dlckNhc2UoKX0uaHRtbCZhY2Nlc3NfdG9rZW49JHthY2Nlc3NUb2tlbn0maWRUb2tlbj0ke2lkVG9rZW59YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBsb2FkKCk7XG4gICAgICAgIH0sIFtdXG4gICAgKTtcblxuICAgIGNvbnN0IHNhdmVEYXNoYm9hcmQgPSAoKSA9PiB7XG4gICAgICAgIHNldHRpbmdzLnBhcmFtZXRlcnMuZGlzcGxheVR5cGUgPSBkaXNwbGF5VHlwZTtcbiAgICAgICAgc2V0dGluZ3MucGFyYW1ldGVycy5kYXNoYm9hcmROYW1lID0gbmFtZTtcblxuICAgICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgICAgIGlkOiBzZXR0aW5ncy5pZCxcbiAgICAgICAgICAgIHBhdGg6IHNldHRpbmdzLnBhdGgsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiBzZXR0aW5ncy5wYXJhbWV0ZXJzXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHVybCA9IGAke2xvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L3N5c3RlbS9hcGkvdjEvdXNlci9kYXNoYm9hcmQvc2F2ZWA7XG4gICAgICAgIHBvc3REYXRhKHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBzZXR0aW5ncy5pZCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgc2V0SWQocmVzcG9uc2UpO1xuICAgICAgICAgICAgZGlzcGxheUFsZXJ0KCdTVUNDRVNTJywgJ0Rhc2hib2FyZCBzYXZlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgZGlzcGxheUFsZXJ0KCdFUlJPUicsIFV0aWxzLlNZU1RFTV9FUlJPUl9NRVNTQUdFKVxuICAgICAgICB9LCB0cnVlLCBkYXRhKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGlzcGxheUFsZXJ0ID0gKG1lc3NhZ2VUeXBlLCBtZXNzYWdlVGV4dCkgPT4ge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IHtcbiAgICAgICAgICAgIG1lc3NhZ2VUeXBlOiBtZXNzYWdlVHlwZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VUZXh0XG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KGFwcGxpY2F0aW9uTWFuYWdlciwgJ19zeXNfZGFzaGJvYXJkJywgbWVzc2FnZSk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLk1FU1NBR0VfQVJSSVZFRCwgZXZlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlbGV0ZURhc2hib2FyZCA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2V0dGluZ3MpICYmICFVdGlscy5pc051bGwoc2V0dGluZ3MuaWQpKSB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIub3BlbkNvbmZpcm1EaWFsb2coJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBkYXNoYm9hcmQ/JywgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGAke2xvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L3N5c3RlbS9hcGkvdjEvdXNlci9kYXNoYm9hcmQvZGVsZXRlLyR7c2V0dGluZ3MuaWR9YDtcbiAgICAgICAgICAgICAgICAgICAgc2VuZFJlcXVlc3QodXJsLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5vbkRlbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxQYXBlciBzdHlsZT17e1xuICAgICAgICAgICAgbWluV2lkdGg6ICcyMDBweCcsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICAgICAgfX1cbiAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2NvbCd9IHJlZj17cmVmfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wtKi0qJ30gc3R5bGU9e3toZWlnaHQ6ICc2NHB4J319PlxuICAgICAgICAgICAgICAgICAgICA8VW5jb250cm9sbGVkRHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMzJweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzMycHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICc4cHggOHB4IDAgMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJtZW51LWxpc3QtZ3Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogJzMycHgnLCBoZWlnaHQ6ICczMnB4J319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJmYSBmYS1lbGxpcHNpcy12IGZhLXhzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9e3twYWRkaW5nOiAnM3B4J319Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duVG9nZ2xlPnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudSBjbGFzc05hbWU9XCJkcm9wZG93bi1uYXZiYXJcIiB0YWc9XCJ1bFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKkRpc2FibGUgdGhpcyBidXR0b24gaWYgaWQgaXMgYWxyZWFkeSBzYXZlZC4gQWZ0ZXIgY3JlYXRpbmcgZGFzaGJvYXJkIHByb3BlcnRpZXMgc3VjaCBhcyBmaWx0ZXJzLCB0aGlzIGJ1dHRvbiBtdXN0IHJlbWFpbiBlbmFibGVkIGF0IGFsbCB0aW1lcyovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2TGluayB0YWc9XCJsaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW0gY2xhc3NOYW1lPVwibmF2LWl0ZW1cIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXNoYm9hcmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSBkaXNhYmxlZD17IVV0aWxzLmlzTnVsbChpZCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J1NBVkUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9OYXZMaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZMaW5rIHRhZz1cImxpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbSBjbGFzc05hbWU9XCJuYXYtaXRlbVwiIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlRGFzaGJvYXJkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gZGlzYWJsZWQ9e1V0aWxzLmlzTnVsbChpZCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J0RFTEVURSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+eycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTmF2TGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L1VuY29udHJvbGxlZERyb3Bkb3duPnsnICd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wtKi0qJ30gc3R5bGU9e3twYWRkaW5nOiAnMTRweCAwIDAgMTJweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3tmb250U2l6ZTogJzI0cHgnfX0+e25hbWV9PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICdjYWxjKDEwMCUgLSA2NHB4KScsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJzhweCAwIDMycHggMzJweCdcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChwYXRoKSAmJiAhVXRpbHMuaXNOdWxsKGRpc3BsYXlUeXBlKSAmJiBkaXNwbGF5VHlwZSAhPT0gJ1ZJRVcnICYmXG4gICAgICAgICAgICAgICAgICAgIDxvYmplY3QgZGF0YT17cGF0aH0gdHlwZT1cInRleHQvaHRtbFwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgfX0vPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwocGF0aCkgJiYgZGlzcGxheVR5cGUgIT09ICdWSUVXJyAmJlxuICAgICAgICAgICAgICAgICAgICA8cD5Mb2FkaW5nLi4uPC9wPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUeXBlID09PSAnVklFVycgJiYgIVV0aWxzLmlzTnVsbCh2aWV3KSAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7d2lkdGg6ICcxMDAlJywgaGVpZ2h0OiBcIjEwMCVcIn19PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgKTtcbn07XG5cbmNvbnN0IFdvcmtGbG93Q2FyZCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtzcCwgc2V0U3BdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW21pblcsIHNldE1pblddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgcm91dGVBY3Rpb24gPSB7XG4gICAgICAgICdhY3Rpb25UeXBlJzogJ3JvdXRlJyxcbiAgICAgICAgJ3BhcmVudCc6IHRydWVcbiAgICB9O1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA0MDApIHtcbiAgICAgICAgICAgICAgICBzZXRTcCgxNik7XG4gICAgICAgICAgICAgICAgc2V0TWluVygyODApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRTcCg0OCk7XG4gICAgICAgICAgICAgICAgc2V0TWluVygzMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICBVdGlscy5pc051bGwoc3ApIHx8IFV0aWxzLmlzTnVsbChtaW5XKSA/XG4gICAgICAgICAgICBudWxsIDpcbiAgICAgICAgICAgIDxQYXBlciBzdHlsZT17e1xuICAgICAgICAgICAgICAgIG1pbldpZHRoOiBgJHttaW5XfXB4YCxcbiAgICAgICAgICAgICAgICBtYXJnaW46IHByb3BzLm1hcmdpbixcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxNTJweCdcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wtKi0qJ30gc3R5bGU9e3t3aWR0aDogJzcwJSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBgMTZweCAke3NwfXB4IDE2cHggJHtzcH1weGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzhweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjU0KSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JrIEl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBgMTZweCAke3NwfXB4IDQ4cHggJHtzcH1weGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcyMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogYDAgJHtzcH1weCAxNnB4ICR7c3B9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5pdGVtQ291bnR9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sLSotKid9IHN0eWxlPXt7bWFyZ2luVG9wOiAnNTBweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnY29udGFpbmVkJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17J3ByaW1hcnknfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3BhcnNlRmxvYXQocHJvcHMuaXRlbUNvdW50KSA9PT0gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlQWN0aW9uLnBhdGggPSBwcm9wcy5wYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3V0ZUFjdGlvbkhhbmRsZXIuZXhlY3V0ZShyb3V0ZUFjdGlvbiwgbnVsbCwgcHJvcHMudmlld1JlZiwgJ19zeXNfZGFzaGJvYXJkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWV3XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L1BhcGVyPlxuICAgICk7XG59O1xuXG5jb25zdCBEYXNoYm9hcmQgPSBSZWFjdC5tZW1vKFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcbiAgICBjb25zdCBbdXNlckRhc2hib2FyZHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgICAgICFVdGlscy5pc051bGwoYXBwbGljYXRpb25NYW5hZ2VyLmdldERhc2hib2FyZFNldHRpbmdzKCkudXNlckRhc2hib2FyZHMpID8gYXBwbGljYXRpb25NYW5hZ2VyLmdldERhc2hib2FyZFNldHRpbmdzKCkudXNlckRhc2hib2FyZHMgOiBbXSk7XG4gICAgY29uc3QgW3NldHRpbmdzXSA9IFJlYWN0LnVzZVN0YXRlKGFwcGxpY2F0aW9uTWFuYWdlci5nZXREYXNoYm9hcmRTZXR0aW5ncygpKTtcbiAgICBjb25zdCBbdGFza1N1bW1hcnksIHNldFRhc2tTdW1tYXJ5XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFttZW51SXRlbXMsIHNldE1lbnVJdGVtc10gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY2FyZENvbHMsIHNldENhcmRDb2xzXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjb2x1bW5IZWlnaHRzLCBzZXRDb2x1bW5IZWlnaHRzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBsZXQgbnVtQ29scyA9IDI7XG5cbiAgICAvLyBWaWV3LWlkIGNvdW50ZXIgc2NvcGVkIHRvIHRoaXMgZGFzaGJvYXJkJ3MgbGlmZWN5Y2xlOiBpbml0aWF0ZWQgb24gbG9hZCxcbiAgICAvLyBpbmNyZW1lbnRzIHBlciBjYXJkIGFzIG5lZWRlZC4gUmVzdGFydGluZyBvbiBlYWNoIGxvYWQgaXMgc2FmZSBiZWNhdXNlIHRoZVxuICAgIC8vIGNsZWFudXAgYmVsb3cgdW5sb2FkcyBldmVyeSBjYXJkIHZpZXcgKGNsZWFyaW5nIHRoZWlyIGJ1cyBzdWJzY3JpcHRpb25zKSxcbiAgICAvLyBzbyBubyBzdGFsZSBpZHMvc3Vic2NyaXB0aW9ucyBzdXJ2aXZlIHRvIGNvbGxpZGUgd2l0aCB0aGUgbmV4dCBsb2FkLlxuICAgIGNvbnN0IHZpZXdTZXEgPSBSZWFjdC51c2VSZWYoMCk7XG4gICAgY29uc3QgYWxsb2NhdGVWaWV3SWQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiArK3ZpZXdTZXEuY3VycmVudCwgW10pO1xuXG4gICAgY29uc3QgYXBpID0ge1xuICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ19zeXNfZGFzaGJvYXJkJztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0Q2hpbGRyZW46ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBbYWxlcnRCYXJIYW5kbGVdO1xuICAgICAgICB9LFxuICAgICAgICBnZXRDaGlsZDogKGlkKSA9PiB7XG4gICAgICAgICAgICBpZiAoaWQgPT09ICdkYXNoYm9hcmRBbGVydCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWxlcnRCYXJIYW5kbGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZSA9IHtcbiAgICAgICAgJ2FwaSc6IGFwaVxuICAgIH07XG5cbiAgICBjb25zdCBnZXREYXNoYm9hcmRNZW51ID0gKHBhdGgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBsZXQgc2VydmljZSA9IHtcbiAgICAgICAgICAgICAgICB1cmw6ICcvdWkvYXBpL3YxL21lbnUvZ2V0JyxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBQYXJhbWV0ZXJUeXBlOiAnUVVFUllfUEFSQU1FVEVSJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMS4wLFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cFBhcmFtZXRlclR5cGU6ICdRVUVSWV9QQVJBTUVURVInXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGludm9rZVJlc3Qoc2VydmljZSwge1xuICAgICAgICAgICAgICAgICAgICBhcGk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rhc2hib2FyZC1tZW51cyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAnZGFzaGJvYXJkLW1lbnVzJywgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5tZW51cyk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgIH0sIG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gbG9hZE1lbnVzKCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKG1lbnVJdGVtcykgJiYgIVV0aWxzLmlzTnVsbChzZXR0aW5ncy5zeXN0ZW1Qcm9maWxlRHRvLm1vZHVsZXMpKSB7XG4gICAgICAgICAgICBsZXQgZGFzaGJvYXJkTWVudWl0ZW1zID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNldHRpbmdzLnN5c3RlbVByb2ZpbGVEdG8ubW9kdWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgPSBzZXR0aW5ncy5zeXN0ZW1Qcm9maWxlRHRvLm1vZHVsZXNbaV07XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwobW9kdWxlLmRhc2hib2FyZE1lbnUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtZW51cyA9IGF3YWl0IGdldERhc2hib2FyZE1lbnUobW9kdWxlLmRhc2hib2FyZE1lbnUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVudXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWVudXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWVudSA9IG1lbnVzW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW51Lml0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBtZW51Lml0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRNZW51aXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0TWVudUl0ZW1zKGRhc2hib2FyZE1lbnVpdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzZXR1cENhcmRDb2xzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB0b3RhbEl0ZW1zID0gdXNlckRhc2hib2FyZHMubGVuZ3RoO1xuXG4gICAgICAgIC8vIFNwZWNpYWwgY2FzZTogMSBvciAyIGNhcmRzIOKAlCBmdWxsIGhlaWdodFxuICAgICAgICBpZiAodG90YWxJdGVtcyA8PSAyKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiB0b3RhbEl0ZW1zfSwgKF8sIGkpID0+IFt1c2VyRGFzaGJvYXJkc1tpXV0pO1xuICAgICAgICAgICAgc2V0Q2FyZENvbHMoY29scyk7XG4gICAgICAgICAgICBzZXRDb2x1bW5IZWlnaHRzKEFycmF5LmZyb20oe2xlbmd0aDogdG90YWxJdGVtc30sICgpID0+ICcxMDAlJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGlzdHJpYnV0ZSByb3VuZC1yb2JpbiBpbnRvIGNvbHVtbnNcbiAgICAgICAgY29uc3QgY29scyA9IEFycmF5LmZyb20oe2xlbmd0aDogbnVtQ29sc30sICgpID0+IFtdKTtcbiAgICAgICAgdXNlckRhc2hib2FyZHMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbHNbaW5kZXggJSBudW1Db2xzXS5wdXNoKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgICAgc2V0Q2FyZENvbHMoY29scyk7XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIG1heCBjYXJkIGNvdW50IGFjcm9zcyBhbGwgY29sdW1uc1xuICAgICAgICBjb25zdCBtYXhJdGVtcyA9IE1hdGgubWF4KC4uLmNvbHMubWFwKGNvbCA9PiBjb2wubGVuZ3RoKSk7XG4gICAgICAgIGNvbnN0IGJhc2VIZWlnaHRQZXJDYXJkID0gNDA7IC8vIGluIHZoXG4gICAgICAgIGNvbnN0IHRvdGFsVGFyZ2V0SGVpZ2h0ID0gbWF4SXRlbXMgKiBiYXNlSGVpZ2h0UGVyQ2FyZDsgLy8gdG90YWwgaGVpZ2h0IHBlciBjb2x1bW4gaW4gdmhcblxuICAgICAgICAvLyBDYWxjdWxhdGUgdGFyZ2V0IGhlaWdodCBwZXIgY2FyZCBpbiBlYWNoIGNvbHVtblxuICAgICAgICBjb25zdCBoZWlnaHRzID0gY29scy5tYXAoY29sID0+XG4gICAgICAgICAgICBjb2wubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gYCR7KHRvdGFsVGFyZ2V0SGVpZ2h0IC8gY29sLmxlbmd0aCkudG9GaXhlZCgyKX12aGBcbiAgICAgICAgICAgICAgICA6ICcwdmgnXG4gICAgICAgICk7XG5cbiAgICAgICAgc2V0Q29sdW1uSGVpZ2h0cyhoZWlnaHRzKTtcbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwodGFza1N1bW1hcnkpKSB7XG4gICAgICAgICAgICAgICAgc2VuZFJlcXVlc3QoYCR7bG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vYnBtL2FwaS92MS9zdW1tYXJ5YCwgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocmVzdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRhc2tTdW1tYXJ5KHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyA6IFNob3cgZXJyb3IgbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICB9LCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2VuZFJlcXVlc3QoYCR7bG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vc3lzdGVtL2FwaS92MS91c2VyL2Rhc2hib2FyZC9saXN0YCwgKGRhc2hib2FyZHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZGFzaGJvYXJkcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZGFzaGJvYXJkIG9mIGRhc2hib2FyZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGFzaGJvYXJkcy5wdXNoKGRhc2hib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwQ2FyZENvbHMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyA6IFNob3cgZXJyb3IgbWVzc2FnZVxuICAgICAgICAgICAgICAgIH0sIHRydWUsIHRydWUpO1xuXG4gICAgICAgICAgICBsb2FkTWVudXMoKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNldHRpbmdzKSAmJiAhVXRpbHMuaXNOdWxsKHVzZXJEYXNoYm9hcmRzKSAmJiBVdGlscy5pc051bGwoY2FyZENvbHMpKSB7XG4gICAgICAgICAgICAgICAgc2V0dXBDYXJkQ29scygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0RGFzaGJvYXJkVmlldyh7aGFuZGxlOiBoYW5kbGV9KTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVW5sb2FkIGFsbCBkYXNoYm9hcmQgY2FyZCB2aWV3cyBvbiBkZXN0cm95IHNvIHRoZSBldmVudCBidXNcbiAgICAgICAgICAgICAgICAvLyBkb2Vzbid0IGtlZXAgcmVzcG9uZGluZyB0byBldmVudHMgZm9yIHRoZXNlIHVubW91bnRlZCB2aWV3cy5cbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuY2xlYXJEYXNoYm9hcmRWaWV3cygpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwgW10pO1xuXG4gICAgY29uc3QgYWRkRGFzaGJvYXJkQ2FyZCA9IChpdGVtKSA9PiB7XG4gICAgICAgIGxldCBwYXRoID0gaXRlbS5ldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnNbMF0uYWN0aW9uc1swXS5wYXRoO1xuICAgICAgICBsZXQgc2V0dGluZ3MgPSB7fTtcbiAgICAgICAgc2V0dGluZ3MucGF0aCA9IHBhdGg7XG4gICAgICAgIHNldHRpbmdzLnBhcmFtZXRlcnMgPSB7fTtcblxuICAgICAgICB1c2VyRGFzaGJvYXJkcy5wdXNoKHNldHRpbmdzKTtcbiAgICAgICAgc2V0dXBDYXJkQ29scygpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IHJlZj17cmVmfSBzdHlsZT17e2hlaWdodDogJzMwMHB4J319PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwoc2V0dGluZ3MpICYmXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcDogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5EYXNoYm9hcmQ8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVuY29udHJvbGxlZERyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duVG9nZ2xlIGNvbG9yPVwiZGVmYXVsdFwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBuYXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gYXJpYS1jb250cm9scz1cIm1lbnUtbGlzdC1ncm93XCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydBREQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93blRvZ2dsZT57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwobWVudUl0ZW1zKSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudSBjbGFzc05hbWU9XCJkcm9wZG93bi1uYXZiYXJcIiBlbmQgdGFnPVwidWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZW51SXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZMaW5rIHRhZz1cImxpXCIga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm5hdi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGREYXNoYm9hcmRDYXJkKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0uYXR0cmlidXRlcy5sYWJlbH17JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTmF2TGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1VuY29udHJvbGxlZERyb3Bkb3duPnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3ttYXhIZWlnaHQ6ICdjYWxjKDEwMGR2aCAtIDMycHggLSB2YXIoLS1oZWFkZXItaCkpJywgb3ZlcmZsb3dZOiAnYXV0byd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvd1k6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93WDogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzAnXG4gICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnRCYXIgY29uZmlnPXt7aWQ6ICdkYXNoYm9hcmRBbGVydCd9fSBoYW5kbGU9e2FsZXJ0QmFySGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9eydfc3lzX2Rhc2hib2FyZCd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwodGFza1N1bW1hcnkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogJzE2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiAnMTYwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFdvcmtGbG93Q2FyZCBtYXJnaW49eycwIDAgOHB4IDhweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsnQXNzaWduZWQgdG8gTWUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtQ291bnQ9e3Rhc2tTdW1tYXJ5LnBlcnNvbmFsV29ya0l0ZW1Db3VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD17Jy93b3JrZmxvdy92aWV3cy9wZXJzb25hbC13b3JrLWl0ZW1zLmpzb24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxXb3JrRmxvd0NhcmQgbWFyZ2luPXsnMCAwIDhweCA4cHgnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17J0F2YWlsYWJsZSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Db3VudD17dGFza1N1bW1hcnkuZ3JvdXBXb3JrSXRlbUNvdW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPXsnL3dvcmtmbG93L3ZpZXdzL2dyb3VwLXdvcmstaXRlbXMuanNvbid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFdvcmtGbG93Q2FyZCBtYXJnaW49eycwIDAgOHB4IDhweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsnRHVlIFRvZGF5J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUNvdW50PXt0YXNrU3VtbWFyeS5kdWVUb2RheUl0ZW1Db3VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD17Jy93b3JrZmxvdy92aWV3cy9kdWUtdG9kYXktd29yay1pdGVtcy5qc29uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dYOiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJ2NhbGMoMTAwZHZoIC0gMTU4cHggLSA2NHB4IC0gdmFyKC0taGVhZGVyLWgpKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6ICdjYWxjKDEwMGR2aCAtIDE1OHB4IC0gNjRweCAtIHZhcigtLWhlYWRlci1oKSknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRDb2xzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdXNlckRhc2hib2FyZHMubGVuZ3RoIDw9IDIgPyAnMTAwJScgOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZENvbHMubWFwKChjb2wsIGNvbEluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjb2xJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FwOiAnMTJweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnNTAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogY29sSW5kZXggJSBudW1Db2xzID8gJzRweCcgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogKGNhcmRDb2xzLmxlbmd0aCA+IDEgJiYgIShjb2xJbmRleCAlIG51bUNvbHMpKSA/ICc0cHgnIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbC5tYXAoKGRhc2hib2FyZCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjb2x1bW5IZWlnaHRzW2NvbEluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hib2FyZENhcmQgc2V0dGluZ3M9e2Rhc2hib2FyZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtjb2xJbmRleCArIGluZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlVmlld0lkPXthbGxvY2F0ZVZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhc2hib2FyZHMuc3BsaWNlKHVzZXJEYXNoYm9hcmRzLmluZGV4T2YoZGFzaGJvYXJkKSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXBDYXJkQ29scygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KSk7XG5cbmV4cG9ydCBkZWZhdWx0IERhc2hib2FyZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsbUJBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLG1CQUFBLEdBQUFSLHNCQUFBLENBQUFG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