@projectcor/maia-components 2.11.59-2 → 2.11.59-4

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.
@@ -49,6 +49,7 @@ import { useAccessClient } from '../../../hooks/useAccessClient/useAccessClient'
49
49
  import { useToggleFavorite } from '../../../hooks';
50
50
  import { createSchedule } from '../../../services/maia/Schedules';
51
51
  import { getAgentConnectors, openConnectorAuthorizationWindows, saveAgentConnectors } from '../../../services/maia/Agents/connectors';
52
+ import { fetchAgentDetail } from '../../../services/maia/Agents/fetchAgentDetail';
52
53
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
53
54
  var initialValues = Object.freeze({
54
55
  isEditing: false,
@@ -196,6 +197,7 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
196
197
  // Mientras esté activo, los useEffect de post-guardado NO deben disparar
197
198
  // snackbars de éxito ni auto-cerrar el modal.
198
199
  var processFilesTimedOutRef = useRef(false);
200
+ var connectorsSavedForAgentRef = useRef(null);
199
201
  var _useState3 = useState(0),
200
202
  _useState4 = _slicedToArray(_useState3, 2),
201
203
  filesProcessed = _useState4[0],
@@ -472,7 +474,7 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
472
474
  var _handleConfirmAction = /*#__PURE__*/function () {
473
475
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(chat, action) {
474
476
  var _modalValues$actions5;
475
- var connectorChanges, _modalValues$actions6, _firstValueAgent$curr8, _modalValues$actions7, _t;
477
+ var connectorChanges, _modalValues$actions6, _firstValueAgent$curr8, _modalValues$actions7, _modalValues$general$4, agentId, _t;
476
478
  return _regeneratorRuntime.wrap(function (_context2) {
477
479
  while (1) switch (_context2.prev = _context2.next) {
478
480
  case 0:
@@ -517,6 +519,7 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
517
519
  selectedConnectors: _toConsumableArray(((_modalValues$actions7 = modalValues.actions) === null || _modalValues$actions7 === void 0 ? void 0 : _modalValues$actions7.selectedConnectors) || [])
518
520
  })
519
521
  });
522
+ connectorsSavedForAgentRef.current = modalValues.general.id.toString();
520
523
  _context2.next = 6;
521
524
  break;
522
525
  case 5:
@@ -548,6 +551,13 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
548
551
  case 10:
549
552
  if (connectorChanges) {
550
553
  handleSnackbarSuccess(t('confirmAgentUpdated'));
554
+ agentId = (_modalValues$general$4 = modalValues.general.id) === null || _modalValues$general$4 === void 0 ? void 0 : _modalValues$general$4.toString();
555
+ if (agentId && (currentSelectedAgent === null || currentSelectedAgent === void 0 ? void 0 : currentSelectedAgent.id) === agentId) {
556
+ fetchAgentDetail(agentId).then(function (freshAgent) {
557
+ updateAgent(freshAgent);
558
+ selectAgent(freshAgent);
559
+ })["catch"](function () {});
560
+ }
551
561
  handleClose();
552
562
  }
553
563
  _context2.next = 12;
@@ -1014,6 +1024,13 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
1014
1024
  if ((currentSelectedAgent === null || currentSelectedAgent === void 0 ? void 0 : currentSelectedAgent.id) === successUpdate.id) {
1015
1025
  selectAgent(successUpdate);
1016
1026
  }
1027
+ if (connectorsSavedForAgentRef.current === successUpdate.id) {
1028
+ connectorsSavedForAgentRef.current = null;
1029
+ fetchAgentDetail(successUpdate.id).then(function (freshAgent) {
1030
+ updateAgent(freshAgent);
1031
+ selectAgent(freshAgent);
1032
+ })["catch"](function () {});
1033
+ }
1017
1034
  handleResetSuccessDelete();
1018
1035
  resetSuccessUpdate();
1019
1036
  document.dispatchEvent(new CustomEvent('refetch-session'));
@@ -1610,4 +1627,4 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
1610
1627
  })]
1611
1628
  }), selector);
1612
1629
  };
1613
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsImNyZWF0ZVBvcnRhbCIsInVzZVRyYW5zbGF0aW9uIiwiQ1VCdXR0b24iLCJDYXRlZ29yeSIsIkFsZXJ0IiwiVHJhc2giLCJTdGFyIiwiQ3Jvc3MiLCJTcGlubmVyTG90dGllIiwiVG9vbHRpcCIsIkFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIiwiQmFja2Ryb3AiLCJ1c2VVc2VyIiwiQWNjZXNzaWJpbGl0eUljb24iLCJCcmFpbkljb24iLCJ1c2VBZ2VudE1vZGVsIiwidXNlR2V0QWdlbnRCeUlkIiwiQWJtQWN0aW9uc1NlY3Rpb25WMiIsIkFibUdlbmVyYWxTZWN0aW9uIiwiQWJtS25vd2xlZGdlU2VjdGlvbiIsIlNDQUFNQ29udGVudCIsIlNDQUFNRm9vdGVyIiwiU0NBQU1IZWFkZXIiLCJTQ0FBTUhlYWRlclRpdGxlIiwiU0NBQU1IZWFkZXJMZWZ0IiwiU0NBQU1IZWFkZXJGYXZvcml0ZSIsIlNDQUFNSGVhZGVyQ2xvc2VCdXR0b24iLCJTQ0FBTVNpZGViYXIiLCJTQ0FBTVdyYXBwZXIiLCJTQ0FBTVNpZGViYXJJdGVtIiwiU0NBQU1TaWRlYmFySXRlbVRpdGxlIiwiU0NBQU1EZWxldGVCdXR0b24iLCJTQ0FBTVNhdmVCdXR0b24iLCJTQ0FBTVdyYXBwZXJTcGlubmVyIiwiU0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQiLCJTQ0FBTVNpZGViYXJJdGVtRXJyb3IiLCJ1c2VDcmVhdGVBZ2VudCIsInVzZURlbGV0ZUFnZW50IiwidXNlU25hY2tCYXJNYW5hZ2VyIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVwZGF0ZUFnZW50IiwidXNlS25vd2xlZGdlT3BlcmF0aW9ucyIsIkFibUxvYWRlckZpbGVzIiwiV3JhcHBlckNlbnRlckljb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwidXNlQWNjZXNzQ2xpZW50IiwidXNlVG9nZ2xlRmF2b3JpdGUiLCJjcmVhdGVTY2hlZHVsZSIsImdldEFnZW50Q29ubmVjdG9ycyIsIm9wZW5Db25uZWN0b3JBdXRob3JpemF0aW9uV2luZG93cyIsInNhdmVBZ2VudENvbm5lY3RvcnMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJpbml0aWFsVmFsdWVzIiwiT2JqZWN0IiwiZnJlZXplIiwiaXNFZGl0aW5nIiwia25vd2xlZGdlIiwiZ2VuZXJhbCIsIm5hbWUiLCJlbW9qaSIsImludHJvZHVjdGlvbiIsImlucHV0UGxhY2Vob2xkZXIiLCJpc0FjdGl2ZSIsImFpTW9kZWwiLCJpZCIsInVzZXJQcm9tcHQiLCJrbm93bGVkZ2VCYXNlcyIsImlzX2Zhdm9yaXRlIiwiYWNjZXNzaWJpbGl0eSIsImFjY2Vzc1R5cGUiLCJjbGllbnRzIiwiYWN0aW9ucyIsInNlbGVjdGVkVG9vbEdyb3VwcyIsInNlbGVjdGVkQ29ubmVjdG9ycyIsImNvbm5lY3RvclN0YXRlcyIsIlNlY3Rpb25CeUtleSIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsInZhbGlkYXRlRmllbGRWYWx1ZXMiLCJ2YWx1ZVRvVmFsaWRhdGUiLCJidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbCIsImFnZW50QnlJZCIsImFnZW50TW9kZWxzIiwicHJldiIsIl9hZ2VudEJ5SWQka25vd2xlZGdlQiIsIl9hZ2VudEJ5SWQkY2xpZW50cyIsImFnZW50TW9kZWwiLCJmaW5kIiwibW9kZWwiLCJtb2RlbEFpSWQiLCJjcmVhdGVkX2J5IiwiY3JlYXRlZEJ5IiwibWFwIiwiayIsImZpbGUiLCJGaWxlIiwiZmlsZW5hbWUiLCJ0b1N0cmluZyIsInNpemUiLCJmaWxlX3NpemVfYnl0ZXMiLCJ0eXBlIiwib3JpZ2luYWxfZmlsZV90eXBlIiwic3RhdHVzIiwidXJsX29yaWdpbmFsIiwidW5kZWZpbmVkIiwidXJsX3RodW1ibmFpbCIsImFjY2VzcyIsImNsaWVudCIsIl9jbGllbnQkaWQiLCJfY2xpZW50JGlzX2FjdGl2ZSIsIl9jbGllbnQkaXNfZGVsZXRlZCIsImlzX2FjdGl2ZSIsImlzX2RlbGV0ZWQiLCJ0b29sR3JvdXBTbHVncyIsIkFibUFnZW50TW9kYWwiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIyIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwzIiwiX21vZGFsVmFsdWVzJGdlbmVyYWw0IiwiX21vZGFsVmFsdWVzJGdlbmVyYWw1IiwiX21vZGFsVmFsdWVzJGdlbmVyYWw2IiwiYWRkQWdlbnQiLCJ1cGRhdGVBZ2VudCIsInJlbW92ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJ1c2VyIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiX3VzZUdsb2JhbENvbnRleHQiLCJjdXJyZW50U2VsZWN0ZWRBZ2VudCIsImFnZW50Iiwic2VsZWN0QWdlbnQiLCJhYm1BZ2VudE1vZGFsWkluZGV4IiwidG9vbHRpcFpJbmRleCIsIl91c2VUb2dnbGVGYXZvcml0ZSIsInRvZ2dsZUZhdm9yaXRlIiwic2VsZWN0b3IiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNTdWJzY3JpYmVkIiwic2V0SXNTdWJzY3JpYmVkIiwibW9kYWxSZWYiLCJjb25uZWN0b3JBdXRoUG9wdXBSZWYiLCJoYXNQZW5kaW5nRmlsZXNSZWYiLCJhY3Rpb25zVG9GaWxlcyIsInRvRGVsZXRlIiwidG9VcGxvYWQiLCJhY2Nlc3NVcGRhdGVDb250ZXh0IiwiaXNGcm9tQ3JlYXRpb24iLCJpc0Zyb21FZGl0aW5nIiwiaGFzQWN0aW9uRmlsZXMiLCJvcGVyYXRpb25UeXBlIiwiaGFzQmVlbkNhbGxlZCIsImFjY2Vzc0hhbmRsZWRSZWYiLCJhZ2VudENyZWF0ZWRSZWYiLCJwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYiLCJwZW5kaW5nVHJpZ2dlclJlZiIsInByZWZldGNoZWRBZ2VudEJ5SWRSZWYiLCJmaWxlc0ZpbmlzaGVkUmVmIiwicHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImZpbGVzUHJvY2Vzc2VkIiwic2V0RmlsZXNQcm9jZXNzZWQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2hvd01vZGFsRGVsZXRlIiwic2V0U2hvd01vZGFsRGVsZXRlIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzZWN0aW9uIiwic2V0U2VjdGlvbiIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJtb2RhbFZhbHVlcyIsInNldE1vZGFsVmFsdWVzIiwiX3VzZUdldEFnZW50QnlJZCIsImFnZW50TG9hZGluZyIsImxvYWRpbmciLCJoYW5kbGVHZXRBZ2VudEJ5SWQiLCJoYW5kbGVDbGVhbkFnZW50IiwiZXJyb3JHZXRBZ2VudEJ5SWQiLCJlcnJvciIsIl91c2VBZ2VudE1vZGVsIiwiZ2V0QWxsQWdlbnRNb2RlbHMiLCJmaXJzdFZhbHVlQWdlbnQiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiaXNTaG93UHJvY2Vzc0ZpbGVzIiwic2V0SXNTaG93UHJvY2Vzc0ZpbGVzIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImhhc0ZpbGVFcnJvcnMiLCJzZXRIYXNGaWxlRXJyb3JzIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJfdXNlRGVsZXRlQWdlbnQiLCJoYW5kbGVEZWxldGVBZ2VudCIsInN1Y2Nlc3NEZWxldGUiLCJzdWNjZXNzIiwicmVzZXRTdWNjZXNzIiwiX3VzZVVwZGF0ZUFnZW50IiwiaGFuZGxlVXBkYXRlQWdlbnQiLCJzdWNjZXNzVXBkYXRlIiwicmVzZXRTdWNjZXNzVXBkYXRlIiwiX3VzZUNyZWF0ZUFnZW50IiwiaGFuZGxlQ3JlYXRlQWdlbnQiLCJpc0xvYWRpbmdDcmVhdGUiLCJzdWNjZXNzQ3JlYXRlIiwicmVzZXRTdWNjZXNzQ3JlYXRlIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlS25vd2xlZGdlT3BlcmF0aW8iLCJoYW5kbGVDcmVhdGVLbm93bGVkZ2VzIiwiaGFuZGxlRGVsZXRlS25vd2xlZGdlcyIsImhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMiLCJpc0xvYWRpbmdLbm93bGVkZ2UiLCJlcnJvcktub3dsZWRnZSIsInN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUiLCJoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlIiwiaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlIiwiX3VzZUFjY2Vzc0NsaWVudCIsImhhbmRsZUFjY2Vzc0NsaWVudCIsInN1Y2Nlc3NVcGRhdGVBY2Nlc3MiLCJpc0xvYWRpbmdVcGRhdGVBY2Nlc3MiLCJyZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MiLCJoYW5kbGVSZXNldFN1Y2Nlc3MiLCJhcmVDbGllbnRzQXJyYXlzRXF1YWwiLCJjbGllbnRzMSIsImNsaWVudHMyIiwibGVuZ3RoIiwiY2xpZW50czFJZHMiLCJjIiwiY2xpZW50SWQiLCJzb3J0IiwiY2xpZW50czJJZHMiLCJldmVyeSIsImluZGV4IiwiaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnIiLCJjdXJyZW50IiwiYWNjZXNzVHlwZVNhbWUiLCJjbGllbnRzU2FtZSIsImhhc0FjdGlvbnNDaGFuZ2VkIiwiX21vZGFsVmFsdWVzJGFjdGlvbnMiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnIyIiwiY3VycmVudEFjdGlvbnMiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJvcmlnaW5hbEFjdGlvbnMiLCJzb21lIiwic2x1ZyIsImhhc0Nvbm5lY3RvckNoYW5nZXMiLCJfbW9kYWxWYWx1ZXMkYWN0aW9uczIiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnIzIiwiY3VycmVudENvbm5lY3RvcnMiLCJvcmlnaW5hbENvbm5lY3RvcnMiLCJwZXJzaXN0QWdlbnRDb25uZWN0b3JzIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImFnZW50SWQiLCJjb25uZWN0b3JTbHVncyIsInBvcHVwV2luZG93IiwicmVzcG9uc2UiLCJwZW5kaW5nQXV0aG9yaXphdGlvbnMiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0Iiwic2VudCIsInJlcXVpcmVzX2F1dGgiLCJhYnJ1cHQiLCJzdG9wIiwiX3giLCJfeDIiLCJfeDMiLCJhcHBseSIsImFyZ3VtZW50cyIsInZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnI0IiwiX21vZGFsVmFsdWVzJGdlbmVyYWwkIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyNSIsIl9tb2RhbFZhbHVlcyRrbm93bGVkZyIsIl9maXJzdFZhbHVlQWdlbnQkY3VycjYiLCJfbW9kYWxWYWx1ZXMka25vd2xlZGcyIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyNyIsIl9hY3Rpb25zVG9GaWxlcyRjdXJyZSIsIl9hY3Rpb25zVG9GaWxlcyRjdXJyZTIiLCJ0b1VwZGF0ZSIsImhhc0FueVZhbHVlRm9yQ3JlYXRpb24iLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbCQyIiwiX2FnZW50TW9kZWxzJCIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsJDMiLCJfbW9kYWxWYWx1ZXMkYWN0aW9uczMiLCJfbW9kYWxWYWx1ZXMkYWN0aW9uczQiLCJpc0RlZmF1bHRBaU1vZGVsIiwiZGVmYXVsdElucHV0UGxhY2Vob2xkZXIiLCJpc0RlZmF1bHRJbnB1dFBsYWNlaG9sZGVyIiwiZGVmYXVsdFVzZXJQcm9tcHRQbGFjZWhvbGRlciIsImlzRGVmYXVsdFVzZXJQcm9tcHQiLCJoYXNOYW1lIiwidHJpbSIsImhhc0Vtb2ppIiwiaGFzSW50cm9kdWN0aW9uIiwiaGFzSW5wdXRQbGFjZWhvbGRlciIsImhhc1VzZXJQcm9tcHQiLCJoYXNLbm93bGVkZ2UiLCJoYXNDdXN0b21BaU1vZGVsIiwiaGFzQWNjZXNzaWJpbGl0eSIsImhhc0FjdGlvbnMiLCJoYXNDb25uZWN0b3JzIiwiaGFzQ2hhbmdlc0ZvckVkaXRpbmciLCJoYXNQZW5kaW5nQ2hhbmdlcyIsImhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwidXBkYXRlZEFnZW50IiwiaGFuZGxlQ2xvc2UiLCJza2lwQ29uZmlybWF0aW9uIiwiY29uZmlybU1lc3NhZ2UiLCJ3aW5kb3ciLCJjb25maXJtIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImV2ZW50IiwidGFyZ2V0IiwiY3VycmVudFRhcmdldCIsImhhbmRsZVNlY3Rpb25DaGFuZ2UiLCJuZXdTZWN0aW9uIiwidGFiU2VjdGlvbiIsIm9wdGlvbiIsImhhbmRsZVNldEFnZW50VmFsdWVzQnlLZXlzIiwiX3JlZjMiLCJrZXkiLCJ2YWx1ZSIsImRlbGV0ZUtub3dsZWRnZSIsIm5leHRLbm93bGVkZ2UiLCJfYWN0aW9uc1RvRmlsZXMkY3VycmUzIiwicHVzaCIsImZpbGVzUHJldklkcyIsIlNldCIsIm5ld0ZpbGVzIiwiZmlsdGVyIiwiaGFzIiwidmFsdWVJZHMiLCJjb25jYXQiLCJrbm93bGVkZ2VGaWxlcyIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJfcmVmNCIsIl9jYWxsZWUyIiwiY2hhdCIsImFjdGlvbiIsIl9tb2RhbFZhbHVlcyRhY3Rpb25zNSIsImNvbm5lY3RvckNoYW5nZXMiLCJfbW9kYWxWYWx1ZXMkYWN0aW9uczYiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnI4IiwiX21vZGFsVmFsdWVzJGFjdGlvbnM3IiwiX3QiLCJfY29udGV4dDIiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY29uZmlybUFjdGlvbiIsIm9wZW4iLCJjbG9zZWQiLCJjbG9zZSIsIl94NCIsIl94NSIsImhhbmRsZVNldEFnZW50VmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlcyIsIl9hZ2VudFZhbHVlcyR2YWx1ZXMzIiwiYWdlbnRWYWx1ZXMiLCJkZXRhaWwiLCJpbml0aWFsU2VjdGlvbiIsImluY2x1ZGVzIiwidmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlczIiLCJwcmVmZXRjaGVkQWdlbnRCeUlkIiwibmV4dFZhbHVlcyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiX2RvY3VtZW50IiwiYm9keSIsIm9yaWdpbmFsT3ZlcmZsb3ciLCJzdHlsZSIsIm92ZXJmbG93IiwiaGFuZGxlQmVmb3JlVW5sb2FkIiwicHJldmVudERlZmF1bHQiLCJyZXR1cm5WYWx1ZSIsIl9tb2RhbFZhbHVlcyRhY3Rpb25zOCIsImNvbnNvbGUiLCJhZ2VudF9leHRlcm5hbF9pZCIsImVyciIsInByb21pc2VzIiwiZmlsZXNUb0RlbGV0ZSIsImZpbGVzVG9DcmVhdGUiLCJhZ2VudFdpdGhGYXZvcml0ZSIsImFnZW50Rm9yVG9nZ2xlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhbGwiLCJmaWxlcyIsImFpQ2hhdEZhdm9yaXRlIiwiZmlsZXNUb1VwbG9hZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZVByb2Nlc3NGaWxlc1RpbWVvdXQiLCJ3ZWJTb2NrZXRGdW5jdGlvbiIsIl9yZWY1IiwibW9kZWxEYXRhIiwibW9kZWxfZGF0YSIsImZpbGVTdGF0dXMiLCJ1cGRhdGVkS25vd2xlZGdlIiwia25vd2xlZGdlX2Jhc2VfaWQiLCJoYXNQZW5kaW5nRmlsZXMiLCJoYXNFcnJvckZpbGVzIiwicHJldkNvdW50IiwiY29udGV4dCIsImFnZW50VG9BZGQiLCJfc3VjY2Vzc0NyZWF0ZSRpZCIsImNoYW5uZWwiLCIkX3NjIiwiXyRfc2MiLCJzdWJzY3JpYmVIYW5kbGVyIiwiXyRfc2MyIiwiXyRfc2MzIiwiXyRfc2MkY2hhbm5lbFR5cGUiLCJtb2RlbF9oYXNoIiwiYWN0aW9uVHlwZSIsIlNVQlNDUklCRSIsInVwZGF0ZUNvbm5lY3Rpb25Nb2RlbCIsImNoYW5uZWxUeXBlIiwiTU9ERUxfQ0hBTk5FTCIsImFwcGx5RWRpdGluZ0FnZW50Iiwic291cmNlIiwic2V0VGltZW91dCIsIl9jYWxsZWUzIiwiY29ubmVjdG9ycyIsIl90MiIsIl9jb250ZXh0MyIsImNvbm5lY3RvciIsImVuYWJsZWRfZm9yX2FnZW50IiwidXNlcl9hdXRob3JpemVkIiwiYWdlbnRWYWx1ZXNUb1NldCIsInByZWZldGNoZWQiLCJzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIiLCJpc1NhdmVCdXR0b25EaXNhYmxlZCIsImhhbmRsZVRvZ2dsZUZhdm9yaXRlIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDIiLCJjcmVhdGUiLCJlZGl0IiwiekluZGV4Iiwib25DbGljayIsImNoaWxkcmVuIiwicmVmIiwidGFiSW5kZXgiLCJjb2xvciIsImF0dGFjaG1lbnRzIiwibGFiZWwiLCJvblRpbWVvdXQiLCJ0aXRsZSIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsInZhcmlhbnQiLCJjbGFzc05hbWUiLCJjYW5jZWxNb2RhbCIsImRpc2FibGVkIiwiaGFzU2Nyb2xsIiwiJGluZGV4IiwiZXhpc3RpbmdLbm93bGVkZ2UiLCJuZXdLbm93bGVkZ2UiLCJvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlIiwib25SZW1vdmVOZXdLbm93bGVkZ2UiLCJvbkZpbGVFcnJvckNoYW5nZSIsImNoaWxkcmVuV2l0aEljb24iLCJkaXNwbGF5IiwiZ2FwIiwiaXNEaXNhYmxlZCIsIm9uQ2xvc2UiLCJoYW5kbGVycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWFsZXJ0ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tY3ljbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5cbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DYXRlZ29yeSdcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQWxlcnQnXG5pbXBvcnQgeyBUcmFzaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1RyYXNoJ1xuaW1wb3J0IHsgU3RhciB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1N0YXInXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgU3Bpbm5lckxvdHRpZSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2Nvci1jb21tb25zL2xpYi9jb21wb25lbnRzL3NwaW5uZXItbG90dGllJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbidcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlJY29uLCBCcmFpbkljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IHVzZUFnZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBZ2VudE1vZGVsL3VzZUFnZW50TW9kZWwnXG5pbXBvcnQgeyBBZ2VudCwgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlR2V0QWdlbnRCeUlkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRCeUlkJ1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQWJtQWN0aW9uc1NlY3Rpb25WMiwgQWJtR2VuZXJhbFNlY3Rpb24sIEFibUtub3dsZWRnZVNlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbidcbmltcG9ydCB0eXBlIHsgQWdlbnRDb25uZWN0b3JTbmFwc2hvdCwgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHtcbiAgU0NBQU1Db250ZW50LFxuICBTQ0FBTUZvb3RlcixcbiAgU0NBQU1IZWFkZXIsXG4gIFNDQUFNSGVhZGVyVGl0bGUsXG4gIFNDQUFNSGVhZGVyTGVmdCxcbiAgU0NBQU1IZWFkZXJGYXZvcml0ZSxcbiAgU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbixcbiAgU0NBQU1TaWRlYmFyLFxuICBTQ0FBTVdyYXBwZXIsXG4gIFNDQUFNU2lkZWJhckl0ZW0sXG4gIFNDQUFNU2lkZWJhckl0ZW1UaXRsZSxcbiAgU0NBQU1EZWxldGVCdXR0b24sXG4gIFNDQUFNU2F2ZUJ1dHRvbixcbiAgU0NBQU1XcmFwcGVyU3Bpbm5lcixcbiAgU0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQsXG4gIFNDQUFNU2lkZWJhckl0ZW1FcnJvcixcbn0gZnJvbSAnLi9BYm1BZ2VudE1vZGFsLnN0eWxlcydcbmltcG9ydCB7IHVzZUNyZWF0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VDcmVhdGVBZ2VudCdcbmltcG9ydCB7IHVzZURlbGV0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VEZWxldGVBZ2VudCdcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVwZGF0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VVcGRhdGVBZ2VudCdcbmltcG9ydCB7IHVzZUtub3dsZWRnZU9wZXJhdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VLbm93bGVkZ2UnXG5pbXBvcnQgeyBBYm1Mb2FkZXJGaWxlcyB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUxvYWRlckZpbGVzJ1xuaW1wb3J0IHsgV3JhcHBlckNlbnRlckljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9XcmFwcGVyQ2VudGVySWNvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbmltcG9ydCB7IHVzZUFjY2Vzc0NsaWVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFjY2Vzc0NsaWVudC91c2VBY2Nlc3NDbGllbnQnXG5pbXBvcnQgeyB1c2VUb2dnbGVGYXZvcml0ZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzJ1xuaW1wb3J0IHsgY3JlYXRlU2NoZWR1bGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NjaGVkdWxlcydcbmltcG9ydCB7XG4gIGdldEFnZW50Q29ubmVjdG9ycyxcbiAgb3BlbkNvbm5lY3RvckF1dGhvcml6YXRpb25XaW5kb3dzLFxuICBzYXZlQWdlbnRDb25uZWN0b3JzLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9jb25uZWN0b3JzJ1xuaW1wb3J0IHR5cGUgeyBQZW5kaW5nVHJpZ2dlclBheWxvYWQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1UcmlnZ2Vyc1NlY3Rpb24vQWJtVHJpZ2dlcnNTZWN0aW9uLmludGVyZmFjZSdcblxuY29uc3QgaW5pdGlhbFZhbHVlcyA9IE9iamVjdC5mcmVlemUoe1xuICBpc0VkaXRpbmc6IGZhbHNlLFxuICBrbm93bGVkZ2U6IFtdLFxuICBnZW5lcmFsOiB7XG4gICAgbmFtZTogJycsXG4gICAgZW1vamk6ICcnLFxuICAgIGludHJvZHVjdGlvbjogJycsXG4gICAgaW5wdXRQbGFjZWhvbGRlcjogJycsXG4gICAgaXNBY3RpdmU6IGZhbHNlLFxuICAgIGFpTW9kZWw6IG51bGwsXG4gICAgaWQ6IG51bGwsXG4gICAgdXNlclByb21wdDogbnVsbCxcbiAgICBrbm93bGVkZ2VCYXNlczogW10sXG4gICAgaXNfZmF2b3JpdGU6IGZhbHNlLFxuICB9LFxuICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgYWNjZXNzVHlwZTogJ2NvbXBhbnknLFxuICAgIGNsaWVudHM6IG51bGwsXG4gIH0sXG4gIGFjdGlvbnM6IHtcbiAgICBzZWxlY3RlZFRvb2xHcm91cHM6IFtdLFxuICAgIHNlbGVjdGVkQ29ubmVjdG9yczogW10sXG4gICAgY29ubmVjdG9yU3RhdGVzOiBbXSxcbiAgfSxcbn0pXG5cbnR5cGUgQWJtU2VjdGlvbiA9ICdnZW5lcmFsJyB8ICdrbm93bGVkZ2UnIHwgJ3RyYWluaW5nJyB8ICd0ZXN0aW5nJyB8ICdhY2Nlc3NpYmlsaXR5JyB8ICdhY3Rpb25zJ1xuXG5leHBvcnQgY29uc3QgU2VjdGlvbkJ5S2V5ID0ge1xuICBnZW5lcmFsOiAocHJvcHM6IHtcbiAgICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7XG4gICAgICBrZXksXG4gICAgICB2YWx1ZSxcbiAgICAgIGRlbGV0ZUtub3dsZWRnZSxcbiAgICB9OiB7XG4gICAgICBrZXk6IHN0cmluZ1xuICAgICAgdmFsdWU6IHVua25vd25cbiAgICAgIGRlbGV0ZUtub3dsZWRnZT86IGJvb2xlYW5cbiAgICB9KSA9PiB2b2lkXG4gICAgYWdlbnRNb2RlbHM6IEFnZW50TW9kZWxbXVxuICAgIGxvYWRpbmc6IGJvb2xlYW5cbiAgICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIH0pID0+IDxBYm1HZW5lcmFsU2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxuICBrbm93bGVkZ2U6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gICAgZXhpc3RpbmdLbm93bGVkZ2U6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBuZXdLbm93bGVkZ2U6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlOiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvblJlbW92ZU5ld0tub3dsZWRnZTogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25GaWxlRXJyb3JDaGFuZ2U6IChoYXNFcnJvcnM6IGJvb2xlYW4pID0+IHZvaWRcbiAgICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIH0pID0+IDxBYm1Lbm93bGVkZ2VTZWN0aW9uIHsuLi5wcm9wc30gLz4sXG4gIGFjY2Vzc2liaWxpdHk6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gIH0pID0+IDxBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxuICBhY3Rpb25zOiAocHJvcHM6IHtcbiAgICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7IGtleSwgdmFsdWUgfTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSkgPT4gdm9pZFxuICB9KSA9PiA8QWJtQWN0aW9uc1NlY3Rpb25WMiB7Li4ucHJvcHN9IC8+LFxufVxuXG50eXBlIEFibUFnZW50TW9kYWxQcm9wcyA9IHtcbiAgYWRkQWdlbnQ6IChuZXdBZ2VudDogQWdlbnQsIG9wdGlvbnM/OiB7IG5hdmlnYXRlSG9tZT86IGJvb2xlYW4gfSkgPT4gdm9pZFxuICByZW1vdmVBZ2VudDogKGFnZW50SWQ6IG51bWJlciB8IHN0cmluZykgPT4gdm9pZFxuICB1cGRhdGVBZ2VudDogKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgdXBkYXRlQWdlbnRGYXZvcml0ZTogKHVwZGF0ZWRBZ2VudDogQWdlbnQsIHNob3VsZFNvcnQ/OiBib29sZWFuKSA9PiB2b2lkXG4gIHNlbGVjdEZpcnN0QWdlbnQ6IChhZ2VudElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuY29uc3QgdmFsaWRhdGVGaWVsZFZhbHVlcyA9ICh2YWx1ZVRvVmFsaWRhdGU6IE1vZGFsVmFsdWVzKSA9PiB7XG4gIGlmICghdmFsdWVUb1ZhbGlkYXRlLmdlbmVyYWwubmFtZSB8fCAhdmFsdWVUb1ZhbGlkYXRlLmdlbmVyYWwudXNlclByb21wdCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbi8qKiBNaXNtYSBlc3RydWN0dXJhIHF1ZSBlbCBlZmVjdG8gcXVlIGhpZHJhdGEgZGVzZGUgdXNlR2V0QWdlbnRCeUlkICh0b2RhcyBsYXMgcGVzdGHDsWFzIGRlbCBBQk0pLiAqL1xuZnVuY3Rpb24gYnVpbGRFZGl0aW5nTW9kYWxWYWx1ZXNGcm9tQWdlbnREZXRhaWwoXG4gIGFnZW50QnlJZDogYW55LFxuICBhZ2VudE1vZGVsczogQWdlbnRNb2RlbFtdLFxuICBwcmV2OiBNb2RhbFZhbHVlc1xuKTogTW9kYWxWYWx1ZXMge1xuICBjb25zdCBhZ2VudE1vZGVsID0gYWdlbnRNb2RlbHMuZmluZChtb2RlbCA9PiBtb2RlbC5pZCA9PT0gYWdlbnRCeUlkLm1vZGVsQWlJZClcbiAgcmV0dXJuIHtcbiAgICAuLi5wcmV2LFxuICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICBnZW5lcmFsOiB7XG4gICAgICBlbW9qaTogYWdlbnRCeUlkLmVtb2ppLFxuICAgICAgbmFtZTogYWdlbnRCeUlkLm5hbWUsXG4gICAgICBpbnRyb2R1Y3Rpb246IGFnZW50QnlJZC5pbnRyb2R1Y3Rpb24sXG4gICAgICBpbnB1dFBsYWNlaG9sZGVyOiBhZ2VudEJ5SWQuaW5wdXRQbGFjZWhvbGRlcixcbiAgICAgIGlzQWN0aXZlOiBhZ2VudEJ5SWQuaXNBY3RpdmUsXG4gICAgICBhaU1vZGVsOiBhZ2VudE1vZGVsIHx8IG51bGwsXG4gICAgICBpZDogYWdlbnRCeUlkLmlkLFxuICAgICAgdXNlclByb21wdDogYWdlbnRCeUlkLnVzZXJQcm9tcHQsXG4gICAgICBrbm93bGVkZ2VCYXNlczogW10sXG4gICAgICBpc19mYXZvcml0ZTogYWdlbnRCeUlkLmlzX2Zhdm9yaXRlLFxuICAgICAgY3JlYXRlZF9ieTogYWdlbnRCeUlkLmNyZWF0ZWRCeSxcbiAgICB9LFxuICAgIGtub3dsZWRnZTpcbiAgICAgIGFnZW50QnlJZC5rbm93bGVkZ2VCYXNlcz8ubWFwKChrOiBhbnkpID0+ICh7XG4gICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCBrLmZpbGVuYW1lKSxcbiAgICAgICAgaWQ6IGsuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgbmFtZTogay5maWxlbmFtZSxcbiAgICAgICAgc2l6ZTogay5maWxlX3NpemVfYnl0ZXMgfHwgMCxcbiAgICAgICAgdHlwZTogay5vcmlnaW5hbF9maWxlX3R5cGUsXG4gICAgICAgIHN0YXR1czogay5zdGF0dXMsXG4gICAgICAgIHVybF9vcmlnaW5hbDogay51cmxfb3JpZ2luYWwgfHwgdW5kZWZpbmVkLFxuICAgICAgICB1cmxfdGh1bWJuYWlsOiBrLnVybF90aHVtYm5haWwgfHwgdW5kZWZpbmVkLFxuICAgICAgfSkpIHx8IFtdLFxuICAgIGFjY2Vzc2liaWxpdHk6IHtcbiAgICAgIGFjY2Vzc1R5cGU6IGFnZW50QnlJZC5hY2Nlc3MsXG4gICAgICBjbGllbnRzOlxuICAgICAgICBhZ2VudEJ5SWQuY2xpZW50cz8ubWFwKChjbGllbnQ6IGFueSkgPT4gKHtcbiAgICAgICAgICBpZDogY2xpZW50LmlkPy50b1N0cmluZygpIHx8ICcnLFxuICAgICAgICAgIG5hbWU6IGNsaWVudC5uYW1lLFxuICAgICAgICAgIGlzX2FjdGl2ZTogY2xpZW50LmlzX2FjdGl2ZSA/PyBmYWxzZSxcbiAgICAgICAgICBpc19kZWxldGVkOiBjbGllbnQuaXNfZGVsZXRlZCA/PyBmYWxzZSxcbiAgICAgICAgfSkpIHx8IG51bGwsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZWxlY3RlZFRvb2xHcm91cHM6IGFnZW50QnlJZC50b29sR3JvdXBTbHVncyB8fCBbXSxcbiAgICAgIHNlbGVjdGVkQ29ubmVjdG9yczogW10sXG4gICAgICBjb25uZWN0b3JTdGF0ZXM6IFtdLFxuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFibUFnZW50TW9kYWwgPSAoe1xuICBhZGRBZ2VudCxcbiAgdXBkYXRlQWdlbnQsXG4gIHJlbW92ZUFnZW50LFxuICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICBzZWxlY3RGaXJzdEFnZW50LFxufTogQWJtQWdlbnRNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgLy8gY29uc3QgJF9zYzogYW55ID0gbnVsbFxuICBjb25zdCB7IGFnZW50OiBjdXJyZW50U2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBhYm1BZ2VudE1vZGFsWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMTEyLCAnYWdlbnRNb2RhbCcpXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICduZXN0ZWRNb2RhbCcpXG4gIGNvbnN0IHsgdG9nZ2xlRmF2b3JpdGUgfSA9IHVzZVRvZ2dsZUZhdm9yaXRlKClcbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWJtLWFnZW50LW1vZGFsJylcbiAgY29uc3QgW2lzU3Vic2NyaWJlZCwgc2V0SXNTdWJzY3JpYmVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBtb2RhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgY29ubmVjdG9yQXV0aFBvcHVwUmVmID0gdXNlUmVmPFdpbmRvdyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGhhc1BlbmRpbmdGaWxlc1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWN0aW9uc1RvRmlsZXMgPSB1c2VSZWY8YW55Pih7XG4gICAgdG9EZWxldGU6IFtdLFxuICAgIHRvVXBsb2FkOiBbXSxcbiAgfSlcbiAgY29uc3QgYWNjZXNzVXBkYXRlQ29udGV4dCA9IHVzZVJlZjx7XG4gICAgaXNGcm9tQ3JlYXRpb246IGJvb2xlYW5cbiAgICBpc0Zyb21FZGl0aW5nOiBib29sZWFuXG4gICAgaGFzQWN0aW9uRmlsZXM6IGJvb2xlYW5cbiAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyB8ICd1cGRhdGUnIHwgbnVsbFxuICAgIGhhc0JlZW5DYWxsZWQ/OiBib29sZWFuXG4gIH0+KHtcbiAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gIH0pXG4gIGNvbnN0IGFjY2Vzc0hhbmRsZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGFnZW50Q3JlYXRlZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYgPSB1c2VSZWY8QWJtU2VjdGlvbiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHBlbmRpbmdUcmlnZ2VyUmVmID0gdXNlUmVmPFBlbmRpbmdUcmlnZ2VyUGF5bG9hZCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHByZWZldGNoZWRBZ2VudEJ5SWRSZWYgPSB1c2VSZWY8YW55PihudWxsKVxuICBjb25zdCBmaWxlc0ZpbmlzaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvLyBNYXJjYSBjdWFuZG8gY2VycmFtb3MgZWwgbG9hZGVyIHBvciBlbCB0aW1lb3V0IGRlIHNlZ3VyaWRhZCBkZSBhcmNoaXZvcy5cbiAgLy8gTWllbnRyYXMgZXN0w6kgYWN0aXZvLCBsb3MgdXNlRWZmZWN0IGRlIHBvc3QtZ3VhcmRhZG8gTk8gZGViZW4gZGlzcGFyYXJcbiAgLy8gc25hY2tiYXJzIGRlIMOpeGl0byBuaSBhdXRvLWNlcnJhciBlbCBtb2RhbC5cbiAgY29uc3QgcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IFtmaWxlc1Byb2Nlc3NlZCwgc2V0RmlsZXNQcm9jZXNzZWRdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd01vZGFsRGVsZXRlLCBzZXRTaG93TW9kYWxEZWxldGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWN0aW9uLCBzZXRTZWN0aW9uXSA9IHVzZVN0YXRlPEFibVNlY3Rpb24+KCdnZW5lcmFsJylcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbW9kYWxWYWx1ZXMsIHNldE1vZGFsVmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBnZW5lcmFsOiBhbnlcbiAgICBrbm93bGVkZ2U6IGFueVxuICAgIGlzRWRpdGluZzogYm9vbGVhblxuICAgIGFjY2Vzc2liaWxpdHk6IGFueVxuICAgIGFjdGlvbnM6IGFueVxuICB9Pihpbml0aWFsVmFsdWVzKVxuICBjb25zdCB7XG4gICAgbG9hZGluZzogYWdlbnRMb2FkaW5nLFxuICAgIGhhbmRsZUdldEFnZW50QnlJZCxcbiAgICBhZ2VudDogYWdlbnRCeUlkLFxuICAgIGhhbmRsZUNsZWFuQWdlbnQsXG4gICAgZXJyb3I6IGVycm9yR2V0QWdlbnRCeUlkLFxuICB9ID0gdXNlR2V0QWdlbnRCeUlkKClcbiAgY29uc3QgeyBhZ2VudE1vZGVscywgZ2V0QWxsQWdlbnRNb2RlbHMgfSA9IHVzZUFnZW50TW9kZWwoKVxuICBjb25zdCBmaXJzdFZhbHVlQWdlbnQgPSB1c2VSZWY8YW55PihudWxsKVxuICBjb25zdCBbaXNTaG93UHJvY2Vzc0ZpbGVzLCBzZXRJc1Nob3dQcm9jZXNzRmlsZXNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoYXNGaWxlRXJyb3JzLCBzZXRIYXNGaWxlRXJyb3JzXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcblxuICBjb25zdCB7IGhhbmRsZURlbGV0ZUFnZW50LCBzdWNjZXNzOiBzdWNjZXNzRGVsZXRlLCByZXNldFN1Y2Nlc3MgfSA9IHVzZURlbGV0ZUFnZW50KClcbiAgY29uc3QgeyBoYW5kbGVVcGRhdGVBZ2VudCwgc3VjY2Vzczogc3VjY2Vzc1VwZGF0ZSwgcmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NVcGRhdGUgfSA9IHVzZVVwZGF0ZUFnZW50KClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQ3JlYXRlQWdlbnQsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdDcmVhdGUsXG4gICAgc3VjY2Vzczogc3VjY2Vzc0NyZWF0ZSxcbiAgICByZXNldFN1Y2Nlc3M6IHJlc2V0U3VjY2Vzc0NyZWF0ZSxcbiAgfSA9IHVzZUNyZWF0ZUFnZW50KClcblxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdLbm93bGVkZ2UsXG4gICAgZXJyb3I6IGVycm9yS25vd2xlZGdlLFxuICAgIHN1Y2Nlc3NEZWxldGU6IHN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gIH0gPSB1c2VLbm93bGVkZ2VPcGVyYXRpb25zKClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQWNjZXNzQ2xpZW50LFxuICAgIHN1Y2Nlc3M6IHN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdVcGRhdGVBY2Nlc3MsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gIH0gPSB1c2VBY2Nlc3NDbGllbnQoKVxuXG4gIGlmICghc2VsZWN0b3IpIHJldHVybiBudWxsXG5cbiAgY29uc3QgYXJlQ2xpZW50c0FycmF5c0VxdWFsID0gKGNsaWVudHMxOiBhbnlbXSB8IG51bGwsIGNsaWVudHMyOiBhbnlbXSB8IG51bGwpID0+IHtcbiAgICBpZiAoIWNsaWVudHMxICYmICFjbGllbnRzMikgcmV0dXJuIHRydWVcbiAgICBpZiAoIWNsaWVudHMxIHx8ICFjbGllbnRzMikgcmV0dXJuIGZhbHNlXG4gICAgaWYgKGNsaWVudHMxLmxlbmd0aCAhPT0gY2xpZW50czIubGVuZ3RoKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IGNsaWVudHMxSWRzID0gY2xpZW50czEubWFwKGMgPT4gYy5jbGllbnRJZCkuc29ydCgpXG4gICAgY29uc3QgY2xpZW50czJJZHMgPSBjbGllbnRzMi5tYXAoYyA9PiBjLmNsaWVudElkKS5zb3J0KClcblxuICAgIHJldHVybiBjbGllbnRzMUlkcy5ldmVyeSgoaWQsIGluZGV4KSA9PiBpZCA9PT0gY2xpZW50czJJZHNbaW5kZXhdKVxuICB9XG5cbiAgY29uc3QgaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQgPSAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8uYWNjZXNzaWJpbGl0eSB8fCAhbW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHkpIHJldHVybiB0cnVlXG5cbiAgICBjb25zdCBhY2Nlc3NUeXBlU2FtZSA9IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlXG4gICAgY29uc3QgY2xpZW50c1NhbWUgPSBhcmVDbGllbnRzQXJyYXlzRXF1YWwoXG4gICAgICBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNsaWVudHMsXG4gICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5hY2Nlc3NpYmlsaXR5LmNsaWVudHNcbiAgICApXG5cbiAgICByZXR1cm4gIWFjY2Vzc1R5cGVTYW1lIHx8ICFjbGllbnRzU2FtZVxuICB9XG5cbiAgY29uc3QgaGFzQWN0aW9uc0NoYW5nZWQgPSAoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFjdGlvbnMgPSBbLi4uKG1vZGFsVmFsdWVzLmFjdGlvbnM/LnNlbGVjdGVkVG9vbEdyb3VwcyB8fCBbXSldLnNvcnQoKVxuICAgIGNvbnN0IG9yaWdpbmFsQWN0aW9ucyA9IFsuLi4oZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQ/LmFjdGlvbnM/LnNlbGVjdGVkVG9vbEdyb3VwcyB8fCBbXSldLnNvcnQoKVxuXG4gICAgaWYgKGN1cnJlbnRBY3Rpb25zLmxlbmd0aCAhPT0gb3JpZ2luYWxBY3Rpb25zLmxlbmd0aCkgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiBjdXJyZW50QWN0aW9ucy5zb21lKChzbHVnLCBpbmRleCkgPT4gc2x1ZyAhPT0gb3JpZ2luYWxBY3Rpb25zW2luZGV4XSlcbiAgfVxuXG4gIGNvbnN0IGhhc0Nvbm5lY3RvckNoYW5nZXMgPSAoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudENvbm5lY3RvcnMgPSBbLi4uKG1vZGFsVmFsdWVzLmFjdGlvbnM/LnNlbGVjdGVkQ29ubmVjdG9ycyB8fCBbXSldLnNvcnQoKVxuICAgIGNvbnN0IG9yaWdpbmFsQ29ubmVjdG9ycyA9IFsuLi4oZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQ/LmFjdGlvbnM/LnNlbGVjdGVkQ29ubmVjdG9ycyB8fCBbXSldLnNvcnQoKVxuXG4gICAgaWYgKGN1cnJlbnRDb25uZWN0b3JzLmxlbmd0aCAhPT0gb3JpZ2luYWxDb25uZWN0b3JzLmxlbmd0aCkgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiBjdXJyZW50Q29ubmVjdG9ycy5zb21lKChzbHVnLCBpbmRleCkgPT4gc2x1ZyAhPT0gb3JpZ2luYWxDb25uZWN0b3JzW2luZGV4XSlcbiAgfVxuXG4gIGNvbnN0IHBlcnNpc3RBZ2VudENvbm5lY3RvcnMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoYWdlbnRJZDogc3RyaW5nLCBjb25uZWN0b3JTbHVnczogc3RyaW5nW10sIHBvcHVwV2luZG93PzogV2luZG93IHwgbnVsbCkgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzYXZlQWdlbnRDb25uZWN0b3JzKGFnZW50SWQsIGNvbm5lY3RvclNsdWdzKVxuICAgICAgY29uc3QgcGVuZGluZ0F1dGhvcml6YXRpb25zID0gcmVzcG9uc2UucmVxdWlyZXNfYXV0aCB8fCBbXVxuXG4gICAgICBvcGVuQ29ubmVjdG9yQXV0aG9yaXphdGlvbldpbmRvd3MocGVuZGluZ0F1dGhvcml6YXRpb25zLCBwb3B1cFdpbmRvdylcbiAgICAgIGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50ID0gbnVsbFxuXG4gICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICB9LFxuICAgIFtdXG4gIClcblxuICBjb25zdCB2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lID0gKCkgPT4ge1xuICAgIGlmICghZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQ/LmdlbmVyYWwgfHwgIW1vZGFsVmFsdWVzPy5nZW5lcmFsKSByZXR1cm4gZmFsc2VcblxuICAgIHJldHVybiAoXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLm5hbWUgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwubmFtZSAmJlxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5lbW9qaSA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5lbW9qaSAmJlxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24gPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwuaW50cm9kdWN0aW9uICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciAmJlxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5haU1vZGVsPy5pZCA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5haU1vZGVsPy5pZCAmJlxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0ID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLnVzZXJQcm9tcHQgJiZcbiAgICAgICFoYXNBY3Rpb25zQ2hhbmdlZCgpICYmXG4gICAgICAhaGFzQ29ubmVjdG9yQ2hhbmdlcygpICYmXG4gICAgICAobW9kYWxWYWx1ZXMua25vd2xlZGdlPy5sZW5ndGggPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50Py5rbm93bGVkZ2U/Lmxlbmd0aCB8fFxuICAgICAgICAoIW1vZGFsVmFsdWVzLmtub3dsZWRnZT8ubGVuZ3RoICYmICFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8ua25vd2xlZGdlPy5sZW5ndGgpKSAmJlxuICAgICAgIWFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGRhdGU/Lmxlbmd0aCAmJlxuICAgICAgIWFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGU/Lmxlbmd0aCAmJlxuICAgICAgIWhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKClcbiAgICApXG4gIH1cblxuICBjb25zdCBoYXNBbnlWYWx1ZUZvckNyZWF0aW9uID0gKCkgPT4ge1xuICAgIGlmIChtb2RhbFZhbHVlcy5pc0VkaXRpbmcpIHJldHVybiBmYWxzZVxuXG4gICAgY29uc3QgaXNEZWZhdWx0QWlNb2RlbCA9ICEhYWdlbnRNb2RlbHMubGVuZ3RoICYmIG1vZGFsVmFsdWVzLmdlbmVyYWwuYWlNb2RlbD8uaWQgPT09IGFnZW50TW9kZWxzWzBdPy5pZFxuXG4gICAgY29uc3QgZGVmYXVsdElucHV0UGxhY2Vob2xkZXIgPSB0KCdnZW5lcmFsU2VjdGlvbi5pbnB1dFBsYWNlaG9sZGVyJylcbiAgICBjb25zdCBpc0RlZmF1bHRJbnB1dFBsYWNlaG9sZGVyID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyID09PSBkZWZhdWx0SW5wdXRQbGFjZWhvbGRlclxuXG4gICAgY29uc3QgZGVmYXVsdFVzZXJQcm9tcHRQbGFjZWhvbGRlciA9IHQoJ2dlbmVyYWxTZWN0aW9uLmluaXRpYWxQcm9tcHRQbGFjZWhvbGRlcicpXG4gICAgY29uc3QgaXNEZWZhdWx0VXNlclByb21wdCA9XG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09IGRlZmF1bHRVc2VyUHJvbXB0UGxhY2Vob2xkZXIgfHxcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdCA9PT0gJycgfHxcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdCA9PT0gbnVsbFxuXG4gICAgY29uc3QgaGFzTmFtZSA9IG1vZGFsVmFsdWVzLmdlbmVyYWwubmFtZS50cmltKCkgIT09ICcnXG4gICAgY29uc3QgaGFzRW1vamkgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmVtb2ppLnRyaW0oKSAhPT0gJydcbiAgICBjb25zdCBoYXNJbnRyb2R1Y3Rpb24gPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbi50cmltKCkgIT09ICcnXG4gICAgY29uc3QgaGFzSW5wdXRQbGFjZWhvbGRlciA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlci50cmltKCkgIT09ICcnICYmICFpc0RlZmF1bHRJbnB1dFBsYWNlaG9sZGVyXG4gICAgY29uc3QgaGFzVXNlclByb21wdCA9IG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdD8udHJpbSgpICE9PSAnJyAmJiAhaXNEZWZhdWx0VXNlclByb21wdFxuICAgIGNvbnN0IGhhc0tub3dsZWRnZSA9ICEhbW9kYWxWYWx1ZXMua25vd2xlZGdlLmxlbmd0aFxuICAgIGNvbnN0IGhhc0N1c3RvbUFpTW9kZWwgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmFpTW9kZWwgJiYgIWlzRGVmYXVsdEFpTW9kZWxcbiAgICBjb25zdCBoYXNBY2Nlc3NpYmlsaXR5ID0gbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueSdcbiAgICBjb25zdCBoYXNBY3Rpb25zID0gISFtb2RhbFZhbHVlcy5hY3Rpb25zPy5zZWxlY3RlZFRvb2xHcm91cHM/Lmxlbmd0aFxuICAgIGNvbnN0IGhhc0Nvbm5lY3RvcnMgPSAhIW1vZGFsVmFsdWVzLmFjdGlvbnM/LnNlbGVjdGVkQ29ubmVjdG9ycz8ubGVuZ3RoXG5cbiAgICByZXR1cm4gKFxuICAgICAgaGFzTmFtZSB8fFxuICAgICAgaGFzRW1vamkgfHxcbiAgICAgIGhhc0ludHJvZHVjdGlvbiB8fFxuICAgICAgaGFzSW5wdXRQbGFjZWhvbGRlciB8fFxuICAgICAgaGFzVXNlclByb21wdCB8fFxuICAgICAgaGFzS25vd2xlZGdlIHx8XG4gICAgICBoYXNDdXN0b21BaU1vZGVsIHx8XG4gICAgICBoYXNBY2Nlc3NpYmlsaXR5IHx8XG4gICAgICBoYXNBY3Rpb25zIHx8XG4gICAgICBoYXNDb25uZWN0b3JzXG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFzQ2hhbmdlc0ZvckVkaXRpbmcgPSAoKSA9PiB7XG4gICAgaWYgKCFtb2RhbFZhbHVlcy5pc0VkaXRpbmcpIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIChcbiAgICAgICF2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lKCkgfHxcbiAgICAgICEhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGggfHxcbiAgICAgICEhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGhcbiAgICApXG4gIH1cblxuICBjb25zdCBoYXNQZW5kaW5nQ2hhbmdlcyA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFzQW55VmFsdWVGb3JDcmVhdGlvbigpIHx8IGhhc0NoYW5nZXNGb3JFZGl0aW5nKClcbiAgfVxuXG4gIC8vIEhlbHBlciBwYXJhIG1hbmVqYXIgZWwgdG9nZ2xlIGRlIGZhdm9yaXRvIHkgYWN0dWFsaXphciBlbCBlc3RhZG8gY29uIG9yZGVuYW1pZW50b1xuICBjb25zdCBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZywgYWdlbnQ6IEFnZW50LCBvblN1Y2Nlc3M/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZCwgb25FcnJvcj86ICgpID0+IHZvaWQpID0+IHtcbiAgICAgIHRvZ2dsZUZhdm9yaXRlKFxuICAgICAgICBhZ2VudElkLFxuICAgICAgICB1cGRhdGVkQWdlbnQgPT4ge1xuICAgICAgICAgIC8vIEFjdHVhbGl6YXIgZWwgZXN0YWRvIGRlIGFnZW50ZXMgY29uIGVsIHJlc3VsdGFkbyBkZWwgc2Vydmlkb3IgeSBvcmRlbmFyXG4gICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZSh1cGRhdGVkQWdlbnQsIHRydWUpXG4gICAgICAgICAgaWYgKG9uU3VjY2Vzcykge1xuICAgICAgICAgICAgb25TdWNjZXNzKHVwZGF0ZWRBZ2VudClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgICAgb25FcnJvcigpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhZ2VudC5pc19mYXZvcml0ZVxuICAgICAgKVxuICAgIH0sXG4gICAgW3RvZ2dsZUZhdm9yaXRlLCB1cGRhdGVBZ2VudEZhdm9yaXRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoc2tpcENvbmZpcm1hdGlvbiA9IGZhbHNlKSA9PiB7XG4gICAgaWYgKCFza2lwQ29uZmlybWF0aW9uICYmIGhhc1BlbmRpbmdDaGFuZ2VzKCkgJiYgIXN1Y2Nlc3NDcmVhdGUgJiYgIXN1Y2Nlc3NVcGRhdGUgJiYgIXN1Y2Nlc3NEZWxldGUpIHtcbiAgICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gbW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gdCgnY29uZmlybUNsb3NlRWRpdEFnZW50JykgOiB0KCdjb25maXJtQ2xvc2VDcmVhdGVBZ2VudCcpXG5cbiAgICAgIGlmICghd2luZG93LmNvbmZpcm0oY29uZmlybU1lc3NhZ2UpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIHNldE1vZGFsVmFsdWVzKGluaXRpYWxWYWx1ZXMpXG4gICAgaGFuZGxlQ2xlYW5BZ2VudCgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQgPSB7XG4gICAgICB0b0RlbGV0ZTogW10sXG4gICAgICB0b1VwbG9hZDogW10sXG4gICAgfVxuICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgIH1cbiAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG4gICAgc2V0SXNTdWJzY3JpYmVkKGZhbHNlKVxuICAgIHNldEZpbGVzUHJvY2Vzc2VkKDApXG4gICAgc2V0U2VjdGlvbignZ2VuZXJhbCcpXG4gICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHBlbmRpbmdUcmlnZ2VyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gbnVsbFxuICB9XG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgIWlzU2hvd1Byb2Nlc3NGaWxlcykge1xuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlY3Rpb25DaGFuZ2UgPSAobmV3U2VjdGlvbjogQWJtU2VjdGlvbikgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy50YWJTZWN0aW9uLCB7IG9wdGlvbjogbmV3U2VjdGlvbiB9KVxuICAgIHNldFNlY3Rpb24obmV3U2VjdGlvbilcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNldEFnZW50VmFsdWVzQnlLZXlzID0gKHtcbiAgICBrZXksXG4gICAgdmFsdWUsXG4gICAgZGVsZXRlS25vd2xlZGdlLFxuICB9OiB7XG4gICAga2V5OiBzdHJpbmdcbiAgICB2YWx1ZTogdW5rbm93blxuICAgIGRlbGV0ZUtub3dsZWRnZT86IGJvb2xlYW5cbiAgfSkgPT4ge1xuICAgIGlmIChrZXkgPT09ICdrbm93bGVkZ2UnKSB7XG4gICAgICBjb25zdCBuZXh0S25vd2xlZGdlID0gKHZhbHVlIGFzIEF0dGFjaG1lbnRGaWxlW10gfCB1bmRlZmluZWQpIHx8IFtdXG4gICAgICBpZiAoIWRlbGV0ZUtub3dsZWRnZSkge1xuICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLnB1c2goLi4ubmV4dEtub3dsZWRnZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpbGVzUHJldklkcyA9IG5leHRLbm93bGVkZ2UubGVuZ3RoID8gbmV3IFNldChuZXh0S25vd2xlZGdlLm1hcChmaWxlID0+IGZpbGUuaWQpKSA6IG5ldyBTZXQoKVxuICAgICAgICBjb25zdCBuZXdGaWxlcyA9IG1vZGFsVmFsdWVzLmtub3dsZWRnZS5maWx0ZXIoZmlsZSA9PiAhZmlsZXNQcmV2SWRzLmhhcyhmaWxlLmlkKSAmJiBmaWxlLnN0YXR1cyAhPT0gJ3N0YXJ0ZWQnKVxuICAgICAgICBpZiAoIW5ld0ZpbGVzLmxlbmd0aCAmJiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlSWRzID0gbmV3IFNldChuZXh0S25vd2xlZGdlLm1hcChmaWxlID0+IGZpbGUuaWQpKVxuICAgICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQgPSBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmZpbHRlcihmaWxlID0+IHZhbHVlSWRzLmhhcyhmaWxlLmlkKSlcbiAgICAgICAgfVxuICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlID0gWy4uLihhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlIHx8IFtdKSwgLi4ubmV3RmlsZXNdXG4gICAgICB9XG4gICAgfVxuICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4ge1xuICAgICAgY29uc3Qga25vd2xlZGdlRmlsZXMgPVxuICAgICAgICBrZXkgPT09ICdrbm93bGVkZ2UnXG4gICAgICAgICAgPyBkZWxldGVLbm93bGVkZ2VcbiAgICAgICAgICAgID8gKHZhbHVlIGFzIEF0dGFjaG1lbnRGaWxlW10pXG4gICAgICAgICAgICA6IFsuLi4ocHJldi5rbm93bGVkZ2UgfHwgW10pLCAuLi4oKHZhbHVlIGFzIEF0dGFjaG1lbnRGaWxlW10pIHx8IFtdKV1cbiAgICAgICAgICA6IG51bGxcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIC4uLihrZXkgPT09ICdrbm93bGVkZ2UnXG4gICAgICAgICAgPyB7IGtub3dsZWRnZToga25vd2xlZGdlRmlsZXMgfVxuICAgICAgICAgIDoga2V5ID09PSAnYWNjZXNzaWJpbGl0eSdcbiAgICAgICAgICAgID8geyBhY2Nlc3NpYmlsaXR5OiB2YWx1ZSB9XG4gICAgICAgICAgICA6IGtleSA9PT0gJ2FjdGlvbnMnXG4gICAgICAgICAgICAgID8geyBhY3Rpb25zOiB2YWx1ZSB9XG4gICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgICAgICAgICAgIFtrZXldOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1BY3Rpb24gPSBhc3luYyAoY2hhdDogYW55LCBhY3Rpb246ICdkZWxldGUnIHwgJ3VwZGF0ZScgfCAnY3JlYXRlJykgPT4ge1xuICAgIC8vIFNvbG8gcGVybWl0aXIgb3BlcmFjaW9uZXMgZGUgYWdlbnRlcyBjdXN0b20gc2kgbGEgZmVhdHVyZSBmbGFnIGVzdMOhIGhhYmlsaXRhZGFcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYWN0aW9uID09PSAnZGVsZXRlJykge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmRlbGV0ZSlcbiAgICAgIGhhbmRsZURlbGV0ZUFnZW50KGNoYXQuaWQgYXMgdW5rbm93biBhcyBzdHJpbmcpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmNvbmZpcm1BY3Rpb24sIHsgb3B0aW9uOiBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyAnZWRpdGUnIDogJ2NyZWF0ZScgfSlcbiAgICBpZiAobW9kYWxWYWx1ZXMuYWN0aW9ucz8uc2VsZWN0ZWRDb25uZWN0b3JzPy5sZW5ndGgpIHtcbiAgICAgIGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50ID0gd2luZG93Lm9wZW4oJycsICdfYmxhbmsnLCAncG9wdXA9eWVzLHdpZHRoPTU2MCxoZWlnaHQ9NzYwJylcbiAgICB9XG4gICAgLy8gQWwgcmVpbnRlbnRhciBndWFyZGFyLCBsaWJlcmFyIGVsIGZyZW5vIGRlbCB0aW1lb3V0IHByZXZpbyBwYXJhIHF1ZSBsb3NcbiAgICAvLyB1c2VFZmZlY3QgZGUgcG9zdC1ndWFyZGFkbyB2dWVsdmFuIGEgcG9kZXIgZGlzcGFyYXIgc25hY2tiYXJzIHkgY2VycmFyLlxuICAgIHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIGlmIChtb2RhbFZhbHVlcy5pc0VkaXRpbmcpIHtcbiAgICAgIGNvbnN0IGNvbm5lY3RvckNoYW5nZXMgPSBoYXNDb25uZWN0b3JDaGFuZ2VzKClcblxuICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQgJiYgY29ubmVjdG9yQ2hhbmdlcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHBlcnNpc3RBZ2VudENvbm5lY3RvcnMoXG4gICAgICAgICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBtb2RhbFZhbHVlcy5hY3Rpb25zPy5zZWxlY3RlZENvbm5lY3RvcnMgfHwgW10sXG4gICAgICAgICAgICBjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudFxuICAgICAgICAgIClcbiAgICAgICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIC4uLmZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LFxuICAgICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgICAuLi5maXJzdFZhbHVlQWdlbnQuY3VycmVudD8uYWN0aW9ucyxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRDb25uZWN0b3JzOiBbLi4uKG1vZGFsVmFsdWVzLmFjdGlvbnM/LnNlbGVjdGVkQ29ubmVjdG9ycyB8fCBbXSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFnZW50Q3JlYXRlZCcpKVxuICAgICAgICAgIGlmIChjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudCAmJiAhY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQuY2xvc2VkKSB7XG4gICAgICAgICAgICBjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudC5jbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50ICYmICFjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudC5jbG9zZWQpIHtcbiAgICAgICAgY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQuY2xvc2UoKVxuICAgICAgICBjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lKCkpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlVXBkYXRlQWdlbnQobW9kYWxWYWx1ZXMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoY29ubmVjdG9yQ2hhbmdlcykge1xuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGhhbmRsZUNyZWF0ZUFnZW50KG1vZGFsVmFsdWVzKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2V0QWdlbnRWYWx1ZXMgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudFZhbHVlcyB9ID0gZXZlbnQuZGV0YWlsXG4gICAgICBjb25zdCBpbml0aWFsU2VjdGlvbiA9IGFnZW50VmFsdWVzPy5pbml0aWFsU2VjdGlvbiBhcyBBYm1TZWN0aW9uIHwgdW5kZWZpbmVkXG4gICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9XG4gICAgICAgIGluaXRpYWxTZWN0aW9uICYmIFsnZ2VuZXJhbCcsICdrbm93bGVkZ2UnLCAnYWNjZXNzaWJpbGl0eScsICdhY3Rpb25zJ10uaW5jbHVkZXMoaW5pdGlhbFNlY3Rpb24pXG4gICAgICAgICAgPyBpbml0aWFsU2VjdGlvblxuICAgICAgICAgIDogbnVsbFxuXG4gICAgICBnZXRBbGxBZ2VudE1vZGVscygpXG4gICAgICBzZXRJc09wZW4odHJ1ZSlcbiAgICAgIHNldElzTG9hZGluZyh0cnVlKVxuXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG5cbiAgICAgIGlmIChhZ2VudFZhbHVlcy52YWx1ZXM/LmlzRWRpdGluZykge1xuICAgICAgICAvLyBWYWxpZGFyIHF1ZSBsYSBmZWF0dXJlIGZsYWcgZXN0w6kgaGFiaWxpdGFkYSBhbnRlcyBkZSBjYXJnYXIgZWwgYWdlbnRlIHBhcmEgZWRpdGFyXG4gICAgICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFnZW50VmFsdWVzLnByZWZldGNoZWRBZ2VudEJ5SWQpIHtcbiAgICAgICAgICBoYW5kbGVDbGVhbkFnZW50KClcbiAgICAgICAgICBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQgPSBhZ2VudFZhbHVlcy5wcmVmZXRjaGVkQWdlbnRCeUlkXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlR2V0QWdlbnRCeUlkKGFnZW50VmFsdWVzPy52YWx1ZXM/LmdlbmVyYWw/LmlkIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGFnZW50VmFsdWVzLnZhbHVlcykge1xuICAgICAgICBjb25zdCBuZXh0VmFsdWVzID0ge1xuICAgICAgICAgIC4uLmluaXRpYWxWYWx1ZXMsXG4gICAgICAgICAgLi4uYWdlbnRWYWx1ZXMudmFsdWVzLFxuICAgICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxWYWx1ZXMuZ2VuZXJhbCxcbiAgICAgICAgICAgIC4uLihhZ2VudFZhbHVlcy52YWx1ZXMuZ2VuZXJhbCB8fCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAuLi5pbml0aWFsVmFsdWVzLmFjY2Vzc2liaWxpdHksXG4gICAgICAgICAgICAuLi4oYWdlbnRWYWx1ZXMudmFsdWVzLmFjY2Vzc2liaWxpdHkgfHwge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgLi4uaW5pdGlhbFZhbHVlcy5hY3Rpb25zLFxuICAgICAgICAgICAgLi4uKGFnZW50VmFsdWVzLnZhbHVlcy5hY3Rpb25zIHx8IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtub3dsZWRnZTogYWdlbnRWYWx1ZXMudmFsdWVzLmtub3dsZWRnZSB8fCBbXSxcbiAgICAgICAgfVxuXG4gICAgICAgIGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50ID0gbmV4dFZhbHVlc1xuICAgICAgICBzZXRNb2RhbFZhbHVlcyhuZXh0VmFsdWVzKVxuICAgICAgfVxuXG4gICAgICBpZiAocGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgJiYgIWFnZW50VmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nKSB7XG4gICAgICAgIHNldFNlY3Rpb24ocGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQpXG4gICAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuXG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywgaGFuZGxlU2V0QWdlbnRWYWx1ZXMpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywgaGFuZGxlU2V0QWdlbnRWYWx1ZXMgYXMgRXZlbnRMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIHVzZUVmZmVjdCB0byBoYW5kbGUgdGhlIG92ZXJmbG93IG9mIHRoZSBib2R5IHdoZW4gdGhlIG1vZGFsIGlzIG9wZW5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHsgYm9keSB9ID0gZG9jdW1lbnRcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE92ZXJmbG93ID0gYm9keS5zdHlsZS5vdmVyZmxvd1xuICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJ1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSBvcmlnaW5hbE92ZXJmbG93XG4gICAgfVxuICB9LCBbaXNPcGVuXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUJlZm9yZVVubG9hZCA9IChldmVudDogQmVmb3JlVW5sb2FkRXZlbnQpID0+IHtcbiAgICAgIGlmIChoYXNQZW5kaW5nQ2hhbmdlcygpKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gdCgnY29uZmlybVJlbG9hZEJyb3dzZXInKVxuICAgICAgICByZXR1cm4gdCgnY29uZmlybVJlbG9hZEJyb3dzZXInKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBoYW5kbGVCZWZvcmVVbmxvYWQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBoYW5kbGVCZWZvcmVVbmxvYWQpXG4gICAgfVxuICB9LCBbaXNPcGVuLCBoYXNQZW5kaW5nQ2hhbmdlcywgdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3VjY2Vzc0RlbGV0ZSkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudERlbGV0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2VzcygpXG4gICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkIGFzIHN0cmluZylcbiAgICAgIH1cbiAgICAgIHJlbW92ZUFnZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpXG4gICAgICBzZXRTaG93TW9kYWxEZWxldGUoZmFsc2UpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuICB9LCBbc3VjY2Vzc0RlbGV0ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBFdml0YXIgZWplY3VjacOzbiBtw7psdGlwbGUgZGVsIGVmZWN0b1xuICAgIGlmIChzdWNjZXNzQ3JlYXRlICYmICFpc0xvYWRpbmdDcmVhdGUgJiYgYWdlbnRDcmVhdGVkUmVmLmN1cnJlbnQgIT09IHN1Y2Nlc3NDcmVhdGUuaWQpIHtcbiAgICAgIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ID0gc3VjY2Vzc0NyZWF0ZS5pZFxuICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjdGlvbnM/LnNlbGVjdGVkQ29ubmVjdG9ycz8ubGVuZ3RoKSB7XG4gICAgICAgIHBlcnNpc3RBZ2VudENvbm5lY3RvcnMoXG4gICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgIG1vZGFsVmFsdWVzLmFjdGlvbnMuc2VsZWN0ZWRDb25uZWN0b3JzLFxuICAgICAgICAgIGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50XG4gICAgICAgICkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBhZ2VudCBjb25uZWN0b3JzIGFmdGVyIGNyZWF0ZTonLCBlcnJvcilcbiAgICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWdlbnRDcmVhdGVkJykpXG4gICAgICAgICAgaWYgKGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50ICYmICFjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudC5jbG9zZWQpIHtcbiAgICAgICAgICAgIGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50LmNsb3NlKClcbiAgICAgICAgICB9XG4gICAgICAgICAgY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50ICYmICFjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudC5jbG9zZWQpIHtcbiAgICAgICAgY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQuY2xvc2UoKVxuICAgICAgICBjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cbiAgICAgIGlmIChwZW5kaW5nVHJpZ2dlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNyZWF0ZVNjaGVkdWxlKHsgLi4ucGVuZGluZ1RyaWdnZXJSZWYuY3VycmVudCwgYWdlbnRfZXh0ZXJuYWxfaWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSB9KS5jYXRjaChlcnIgPT5cbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjcmVhdGluZyBwZW5kaW5nIHRyaWdnZXI6JywgZXJyKVxuICAgICAgICApXG4gICAgICAgIHBlbmRpbmdUcmlnZ2VyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGggJiYgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2kgbm8gaGF5IGFjY2VzaWJpbGlkYWQgcGVybyBoYXkgYXJjaGl2b3MsIGVzdGFibGVjZXIgZWwgY29udGV4dG8gcGFyYSBjcmVhY2nDs25cbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtcbiAgICAgICAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICAgIGZpbGVzVG9EZWxldGU6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUsXG4gICAgICAgICAgICBmaWxlc1RvQ3JlYXRlOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLFxuICAgICAgICAgICAgYWdlbnRJZDogc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdXG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgICAgY29uc3QgYWdlbnRXaXRoRmF2b3JpdGUgPSB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH1cbiAgICAgICAgICBhZGRBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcbiAgICAgICAgICAvLyBDdWFuZG8gc2UgY3JlYSB1biBhZ2VudGUgbnVldm8sIGVsIHNlcnZpZG9yIG5vIHRpZW5lIGVsIGZhdm9yaXRvIG1hcmNhZG8gYcO6blxuICAgICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgICAgICAgICgpID0+IHJlc29sdmUoKSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZWplY3QoKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBZ2VudChzdWNjZXNzQ3JlYXRlKVxuICAgICAgICB9XG5cbiAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG5cbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCkge1xuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWNjZXNpYmlsaWRhZCBwZXJvIGhheSBhcmNoaXZvcywgZXN0YWJsZWNlciBlbCBjb250ZXh0byBwYXJhIGNyZWFjacOzblxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW1xuICAgICAgICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMoeyBmaWxlczogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSwgYWdlbnRJZDogc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpIH0pLFxuICAgICAgICBdXG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgICAgY29uc3QgYWdlbnRXaXRoRmF2b3JpdGUgPSB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH1cbiAgICAgICAgICBhZGRBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcbiAgICAgICAgICAvLyBDdWFuZG8gc2UgY3JlYSB1biBhZ2VudGUgbnVldm8sIGVsIHNlcnZpZG9yIG5vIHRpZW5lIGVsIGZhdm9yaXRvIG1hcmNhZG8gYcO6blxuICAgICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgICAgICAgICgpID0+IHJlc29sdmUoKSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZWplY3QoKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBZ2VudChzdWNjZXNzQ3JlYXRlKVxuICAgICAgICB9XG5cbiAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMoeyBmaWxlczogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSwgYWdlbnRJZDogc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpIH0pXG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2kgbm8gaGF5IGFjY2VzaWJpbGlkYWQgcGVybyBoYXkgYXJjaGl2b3MsIGVzdGFibGVjZXIgZWwgY29udGV4dG8gcGFyYSBjcmVhY2nDs25cbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtcbiAgICAgICAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzKHsgZmlsZXM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQsIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSB9KSxcbiAgICAgICAgXVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goaGFuZGxlQWNjZXNzQ2xpZW50KHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAgIGNvbnN0IGFnZW50V2l0aEZhdm9yaXRlID0geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9XG4gICAgICAgICAgYWRkQWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG4gICAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgICAvLyBFbnRvbmNlcyBjdXJyZW50SXNGYXZvcml0ZSBkZWJlIHNlciBmYWxzZSBwYXJhIHF1ZSBlbCB0b2dnbGUgbG8gbWFycXVlIGNvbW8gdHJ1ZVxuICAgICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZXNvbHZlKCksXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgIC8vIFNvbG8gcmVzZXRlYXIgZWwgY29udGV4dG8gc2kgTk8gc2UgaGEgbGxhbWFkbyB0b2RhdsOtYVxuICAgICAgICBpZiAoIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkKSB7XG4gICAgICAgICAgY29uc3QgeyBoYXNBY3Rpb25GaWxlcyB9ID0gYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBoYXNBY3Rpb25GaWxlcyB8fCBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCkge1xuICAgICAgICAgIGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBTb2xvIGVqZWN1dGFyIGhhbmRsZUFjY2Vzc0NsaWVudCwgZWwgYWdlbnRlIHNlIGFncmVnYXLDoSB5IGVsIHRvZ2dsZSBzZSBoYXLDoSBlbiBzdWNjZXNzVXBkYXRlQWNjZXNzXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgZmF2b3JpdGUgaWYgaXQgd2FzIG1hcmtlZCBkdXJpbmcgY3JlYXRpb25cbiAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgIC8vIFByaW1lcm8gYWdyZWdhciBlbCBhZ2VudGUgYSBsYSBsaXN0YSAoYWRkQWdlbnQgeWEgb3JkZW5hKVxuICAgICAgICBjb25zdCBhZ2VudFdpdGhGYXZvcml0ZSA9IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfVxuICAgICAgICBhZGRBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcblxuICAgICAgICAvLyBDdWFuZG8gc2UgY3JlYSB1biBhZ2VudGUgbnVldm8sIGVsIHNlcnZpZG9yIG5vIHRpZW5lIGVsIGZhdm9yaXRvIG1hcmNhZG8gYcO6blxuICAgICAgICAvLyBFbnRvbmNlcyBjdXJyZW50SXNGYXZvcml0ZSBkZWJlIHNlciBmYWxzZSBwYXJhIHF1ZSBlbCB0b2dnbGUgbG8gbWFycXVlIGNvbW8gdHJ1ZVxuICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgIC8vIEx1ZWdvIGhhY2VyIGVsIHRvZ2dsZSBkZSBmYXZvcml0byBlbiBlbCBzZXJ2aWRvciB5IGFjdHVhbGl6YXIgZWwgZXN0YWRvXG4gICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0RmF2b3JpdGUsIHsgb3B0aW9uOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUgPyAnYWRkJyA6ICdyZW1vdmUnIH0pXG4gICAgICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgICAgICAgc2VsZWN0QWdlbnQoeyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSB9KVxuICAgICAgICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0RmF2b3JpdGUsIHsgb3B0aW9uOiAnYWRkJyB9KVxuICAgICAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgICAgIHNlbGVjdEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuICAgICAgICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgICBhZGRBZ2VudChzdWNjZXNzQ3JlYXRlKVxuICAgICAgICBzZWxlY3RBZ2VudChzdWNjZXNzQ3JlYXRlKVxuICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNMb2FkaW5nQ3JlYXRlLFxuICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgYWRkQWdlbnQsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSxcbiAgICBoYW5kbGVDbG9zZSxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NVcGRhdGUpIHtcbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCAmJiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICBpZiAoaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKSkge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgICAgICBjb25zdCBmaWxlc1RvRGVsZXRlID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGVdXG4gICAgICAgICAgY29uc3QgZmlsZXNUb1VwbG9hZCA9IFsuLi5hY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkXVxuICAgICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgPSBbXVxuICAgICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQgPSBbXVxuXG4gICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgICAgIGZpbGVzVG9EZWxldGUsXG4gICAgICAgICAgICAgIGZpbGVzVG9DcmVhdGU6IGZpbGVzVG9VcGxvYWQsXG4gICAgICAgICAgICAgIGFnZW50SWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKClcbiAgICAgICAgICAgICAgPyBbaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSldXG4gICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCkge1xuICAgICAgICBpZiAoaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKSkge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgICAgICBjb25zdCBmaWxlc1RvRGVsZXRlID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGVdXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSA9IFtdXG5cbiAgICAgICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICAgICAgZmlsZXM6IGZpbGVzVG9EZWxldGUsXG4gICAgICAgICAgICAgIGFnZW50SWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKClcbiAgICAgICAgICAgICAgPyBbaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSldXG4gICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKCkpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgICAgY29uc3QgZmlsZXNUb1VwbG9hZCA9IFsuLi5hY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkXVxuICAgICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQgPSBbXVxuXG4gICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgICAgIGZpbGVzOiBmaWxlc1RvVXBsb2FkLFxuICAgICAgICAgICAgICBhZ2VudElkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLihoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgICAgICAgICAgID8gW2hhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXVxuICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICBdKVxuICAgICAgICB9XG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKSkge1xuICAgICAgICAvLyBTb2xvIHJlc2V0ZWFyIGVsIGNvbnRleHRvIHNpIE5PIHNlIGhhIGxsYW1hZG8gdG9kYXbDrWEgeSBOTyBoYXkgYXJjaGl2b3MgcGVuZGllbnRlc1xuICAgICAgICBpZiAoIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkICYmICFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICAgIC8vIExsYW1hciBhIGhhbmRsZUFjY2Vzc0NsaWVudCBzb2xvIHVuYSB2ZXpcbiAgICAgICAgICBpZiAoIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkKSB7XG4gICAgICAgICAgICBoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KVxuICAgICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBTb2xvIGNlcnJhciBzaSBubyBoYXkgYXJjaGl2b3Mgc2llbmRvIHByb2Nlc2Fkb3MgbmkgYWNjZXNzIHBlbmRpZW50ZVxuICAgICAgaWYgKFxuICAgICAgICAhaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgJiZcbiAgICAgICAgIWlzU2hvd1Byb2Nlc3NGaWxlcyAmJlxuICAgICAgICAhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGggJiZcbiAgICAgICAgIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNBY3Rpb25GaWxlcyAmJlxuICAgICAgICAhc3VjY2Vzc1VwZGF0ZUFjY2VzcyAmJlxuICAgICAgICAhcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRVcGRhdGVkJykpXG4gICAgICAgIHVwZGF0ZUFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQgPT09IHN1Y2Nlc3NVcGRhdGUuaWQpIHtcbiAgICAgICAgICBzZWxlY3RBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgICB9XG4gICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKSlcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHN1Y2Nlc3NVcGRhdGUsXG4gICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCxcbiAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlLFxuICAgIGhhbmRsZUNsb3NlLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVByb2Nlc3NGaWxlc1RpbWVvdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCAmJiAhaXNTaG93UHJvY2Vzc0ZpbGVzKSByZXR1cm5cblxuICAgIC8vIEFsIGN1bXBsaXJzZSBlbCB0aW1lb3V0IGFzdW1pbW9zIHF1ZSBlbCBndWFyZGFkbyBkZWwgYWdlbnRlIGZ1ZSBleGl0b3NvXG4gICAgLy8gKGVsIHNlcnZlciByZXNwb25kacOzIE9LKSB5IHF1ZSBsb3MgYXJjaGl2b3Mgc2UgZW52aWFyb24gY29ycmVjdGFtZW50ZS5cbiAgICAvLyBTb2xvIHBlcmRpbW9zIGxhIGNvbmZpcm1hY2nDs24gYXNpbmNyw7NuaWNhIGRlbCBXZWJTb2NrZXQgc29icmUgc3VcbiAgICAvLyBwcm9jZXNhbWllbnRvLiBDZXJyYW1vcyB0b2RvIG1vc3RyYW5kbyBlbCBzbmFja2JhciBkZSDDqXhpdG8gcXVlIGh1Ymllc2VcbiAgICAvLyBkaXNwYXJhZG8gZWwgZmx1am8gbm9ybWFsIGRlIMOpeGl0by5cblxuICAgIC8vIEZyZW5vIHBhcmEgcXVlIGxvcyB1c2VFZmZlY3QgZGUgcG9zdC1ndWFyZGFkbyBubyByZS1kaXNwYXJlbiBzbmFja2JhcnNcbiAgICAvLyBvIGNpZXJyZXMgZHVwbGljYWRvcyBjdWFuZG8gc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKGZhbHNlKSBsb3MgZ2F0aWxsZS5cbiAgICBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50ID0gdHJ1ZVxuXG4gICAgaWYgKG1vZGFsVmFsdWVzLmlzRWRpdGluZyAmJiBzdWNjZXNzVXBkYXRlKSB7XG4gICAgICB1cGRhdGVBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gc3VjY2Vzc1VwZGF0ZS5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgfVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgfSBlbHNlIGlmICghbW9kYWxWYWx1ZXMuaXNFZGl0aW5nICYmIHN1Y2Nlc3NDcmVhdGUpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgIH1cblxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc1NhdmUoKVxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcblxuICAgIGhhbmRsZUNsb3NlKClcbiAgfSwgW1xuICAgIGlzU2hvd1Byb2Nlc3NGaWxlcyxcbiAgICBtb2RhbFZhbHVlcy5pc0VkaXRpbmcsXG4gICAgc3VjY2Vzc1VwZGF0ZSxcbiAgICBzdWNjZXNzQ3JlYXRlLFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGUsXG4gICAgcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc1NhdmUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBoYW5kbGVDbG9zZSxcbiAgXSlcblxuICBjb25zdCB3ZWJTb2NrZXRGdW5jdGlvbiA9ICh7IG1vZGVsX2RhdGE6IG1vZGVsRGF0YSB9OiB7IG1vZGVsX2RhdGE6IGFueSB9KSA9PiB7XG4gICAgY29uc3QgZmlsZVN0YXR1cyA9IG1vZGVsRGF0YVxuICAgIGlmIChmaWxlU3RhdHVzLnN0YXR1cyA9PT0gJ2RvbmUnIHx8IGZpbGVTdGF0dXMuc3RhdHVzID09PSAnZmFpbGVkJykge1xuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRLbm93bGVkZ2UgPSBwcmV2Lmtub3dsZWRnZS5tYXAoZmlsZSA9PiB7XG4gICAgICAgICAgaWYgKGZpbGUubmFtZSA9PT0gZmlsZVN0YXR1cy5maWxlbmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgICAgICAgc3RhdHVzOiBmaWxlU3RhdHVzLnN0YXR1cyxcbiAgICAgICAgICAgICAgaWQ6IGZpbGVTdGF0dXMua25vd2xlZGdlX2Jhc2VfaWQgfHwgZmlsZS5pZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZpbGVcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgaGFzUGVuZGluZ0ZpbGVzID0gdXBkYXRlZEtub3dsZWRnZS5zb21lKGZpbGUgPT4gZmlsZS5zdGF0dXMgPT09ICdwZW5kaW5nJylcbiAgICAgICAgY29uc3QgaGFzRXJyb3JGaWxlcyA9IHVwZGF0ZWRLbm93bGVkZ2Uuc29tZShmaWxlID0+IGZpbGUuc3RhdHVzID09PSAnZmFpbGVkJylcbiAgICAgICAgaWYgKGhhc0Vycm9yRmlsZXMgJiYgIWhhc1BlbmRpbmdGaWxlcykge1xuICAgICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG4gICAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcihcbiAgICAgICAgICAgIG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWRXaXRoRmlsZXNFcnJvcicpIDogdCgnY29uZmlybUFnZW50V2l0aEZpbGVzRXJyb3InKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIGlmICghaGFzUGVuZGluZ0ZpbGVzICYmICFoYXNFcnJvckZpbGVzKSB7XG4gICAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyhmYWxzZSlcblxuICAgICAgICAgIC8vIFNpIGhhYsOtYSBhY2Nlc3MgcGVuZGllbnRlIHkgeWEgZXN0YWJhIG1hbmVqYWRvLCBmb3J6YXIgcXVlIGVsIHVzZUVmZmVjdCBkZSBhY2Nlc3Mgc2UgZWplY3V0ZSBkZSBudWV2b1xuICAgICAgICAgIGlmIChhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMgJiYgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRGaWxlc1Byb2Nlc3NlZChwcmV2Q291bnQgPT4gcHJldkNvdW50ICsgMSlcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnICYmXG4gICAgICAgICAgICAhYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICAgICAgICAhZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTaSBlcyBjcmVhY2nDs24gc2luIGFjY2VzaWJpbGlkYWQsIG1hcmNhciBxdWUgbG9zIGFyY2hpdm9zIHRlcm1pbmFyb25cbiAgICAgICAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgICAgIHNldEZpbGVzUHJvY2Vzc2VkKHByZXZDb3VudCA9PiBwcmV2Q291bnQgKyAxKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAga25vd2xlZGdlOiB1cGRhdGVkS25vd2xlZGdlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUgJiYgIWlzTG9hZGluZ0tub3dsZWRnZSAmJiAhZXJyb3JLbm93bGVkZ2UpIHtcbiAgICAgIC8vIFNvbG8gY2VycmFyIHNpIE5PIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvc1xuICAgICAgaWYgKGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50IHx8IGlzU2hvd1Byb2Nlc3NGaWxlcyB8fCBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8vIFNpIGVsIGxvYWRlciBzZSBjZXJyw7MgcG9yIHRpbWVvdXQsIG5vIG1vc3RyYXIgc25hY2tiYXIgZGUgw6l4aXRvIG5pIGNlcnJhclxuICAgICAgaWYgKHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG4gICAgaWYgKGVycm9yS25vd2xlZGdlKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKFxuICAgICAgICBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdjb25maXJtQWdlbnRVcGRhdGVkV2l0aEZpbGVzRXJyb3InKSA6IHQoJ2NvbmZpcm1BZ2VudFdpdGhGaWxlc0Vycm9yJylcbiAgICAgIClcbiAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgfVxuICB9LCBbc3VjY2Vzc0tub3dsZWRnZURlbGV0ZSwgaXNMb2FkaW5nS25vd2xlZGdlLCBlcnJvcktub3dsZWRnZSwgaXNTaG93UHJvY2Vzc0ZpbGVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcblxuICAgIC8vIFNpIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvcywgZXNwZXJhciBhIHF1ZSB0ZXJtaW5lblxuICAgIGlmIChjb250ZXh0Lmhhc0FjdGlvbkZpbGVzICYmIChoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCB8fCBpc1Nob3dQcm9jZXNzRmlsZXMpKSB7XG4gICAgICAvLyBTaSBzdWNjZXNzVXBkYXRlQWNjZXNzIGVzdMOhIGFjdGl2bywgbWFyY2FyIGNvbW8gbWFuZWphZG8gcGVybyBOTyByZXNldGVhciBoYXN0YSBxdWUgdGVybWluZW4gbG9zIGFyY2hpdm9zXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2VzcyAmJiAhYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNpIHlhIGZ1ZSBtYW5lamFkbyB5IG5vIGhheSBhcmNoaXZvcyBwZW5kaWVudGVzLCBlamVjdXRhciBlbCBjaWVycmVcbiAgICBpZiAoYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ICYmIGNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiYgY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJykge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2Vzcykge1xuICAgICAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFzdWNjZXNzVXBkYXRlQWNjZXNzKSB7XG4gICAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG5cbiAgICBpZiAoY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJykge1xuICAgICAgLy8gU2kgaGF5IGFyY2hpdm9zLCBlbCBhZ2VudGUgeWEgZnVlIGFncmVnYWRvIHkgZWwgdG9nZ2xlIHlhIHNlIGhpem8gZW4gc3VjY2Vzc0NyZWF0ZVxuICAgICAgLy8gU29sbyBuZWNlc2l0YW1vcyBjZXJyYXIgZWwgbW9kYWxcbiAgICAgIGlmIChjb250ZXh0Lmhhc0FjdGlvbkZpbGVzKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBmdWUgY3JlYWRvIGNvbiBmYXZvcml0bywgbmVjZXNpdGFtb3Mgb3JkZW5hciBkZXNwdcOpcyBkZSBhZ3JlZ2FybG9cbiAgICAgIGNvbnN0IGFnZW50VG9BZGQgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlID8geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9IDogc3VjY2Vzc0NyZWF0ZVxuXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgYWRkQWdlbnQoYWdlbnRUb0FkZClcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50VG9BZGQpXG5cbiAgICAgIC8vIFNpIHRpZW5lIGZhdm9yaXRvLCBoYWNlciB0b2dnbGUgeSBhY3R1YWxpemFyIGVzdGFkbyBhbnRlcyBkZSBjZXJyYXJcbiAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFRvQWRkLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAvLyBDZXJyYXIgZGVzcHXDqXMgZGUgcXVlIGVsIHRvZ2dsZSBjb21wbGV0ZSB5IGFjdHVhbGljZSBlbCBlc3RhZG9cbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAndXBkYXRlJykge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWQnKSlcbiAgICAgIHVwZGF0ZUFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBzdWNjZXNzVXBkYXRlLmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICB9XG4gICAgICByZXNldFN1Y2Nlc3NVcGRhdGUoKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cblxuICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgIH1cbiAgfSwgW3N1Y2Nlc3NVcGRhdGVBY2Nlc3MsIGZpbGVzUHJvY2Vzc2VkXSlcblxuICAvLyB1c2VFZmZlY3QgcGFyYSBtYW5lamFyIGVsIGNpZXJyZSBkZWwgbW9kYWwgY3VhbmRvIHRlcm1pbmFuIGxvcyBhcmNoaXZvcyBlbiBjcmVhY2nDs24gc2luIGFjY2VzaWJpbGlkYWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50XG5cbiAgICAvLyBTb2xvIHByb2Nlc2FyIHNpOlxuICAgIC8vIC0gRXMgdW5hIG9wZXJhY2nDs24gZGUgY3JlYWNpw7NuXG4gICAgLy8gLSBObyBoYXkgYWNjZXNpYmlsaWRhZCBwZW5kaWVudGVcbiAgICAvLyAtIExvcyBhcmNoaXZvcyB0ZXJtaW5hcm9uIGRlIHByb2Nlc2Fyc2VcbiAgICAvLyAtIEVsIGFnZW50ZSBmdWUgY3JlYWRvIGV4aXRvc2FtZW50ZVxuICAgIC8vIC0gQcO6biBubyBzZSBoYSBjZXJyYWRvIGVsIG1vZGFsXG4gICAgaWYgKFxuICAgICAgY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJyAmJlxuICAgICAgIWNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCAmJlxuICAgICAgc3VjY2Vzc0NyZWF0ZSAmJlxuICAgICAgIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmXG4gICAgICAhaXNTaG93UHJvY2Vzc0ZpbGVzXG4gICAgKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFtYmnDqW4gbWFuZWphciBlbCBjYXNvIGN1YW5kbyBoYXkgYWNjZXNpYmlsaWRhZCB5IGFyY2hpdm9zIHRlcm1pbmFyb25cbiAgICBpZiAoXG4gICAgICBjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnICYmXG4gICAgICBjb250ZXh0Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgJiZcbiAgICAgIHN1Y2Nlc3NDcmVhdGUgJiZcbiAgICAgICFoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCAmJlxuICAgICAgIWlzU2hvd1Byb2Nlc3NGaWxlc1xuICAgICkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2Vzcykge1xuICAgICAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGZpbGVzUHJvY2Vzc2VkLFxuICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgc3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBpc1Nob3dQcm9jZXNzRmlsZXMsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBoYW5kbGVDbG9zZSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1Nob3dQcm9jZXNzRmlsZXMpIHtcbiAgICAgIGNvbnN0IGNoYW5uZWwgPSBga25vd2xlZGdlLWJhc2Uuc3RhdHVzOiR7YWdlbnRCeUlkID8gYWdlbnRCeUlkPy5pZCA6IHN1Y2Nlc3NDcmVhdGU/LmlkPy50b1N0cmluZygpfWBcbiAgICAgIGlmICgkX3NjKSB7XG4gICAgICAgIGlmIChpc1N1YnNjcmliZWQpIHtcbiAgICAgICAgICAkX3NjPy5zdWJzY3JpYmVIYW5kbGVyKGNoYW5uZWwsIHdlYlNvY2tldEZ1bmN0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG1vZGVsRGF0YSA9IHtcbiAgICAgICAgICAgIG1vZGVsX2hhc2g6IGNoYW5uZWwsXG4gICAgICAgICAgICBhY3Rpb246ICRfc2M/LmFjdGlvblR5cGU/LlNVQlNDUklCRSxcbiAgICAgICAgICB9XG4gICAgICAgICAgJF9zYz8udXBkYXRlQ29ubmVjdGlvbk1vZGVsKG1vZGVsRGF0YSwgY2hhbm5lbCwgdXNlciwgdXNlciwgJF9zYy5jaGFubmVsVHlwZT8uTU9ERUxfQ0hBTk5FTClcbiAgICAgICAgICBzZXRJc1N1YnNjcmliZWQodHJ1ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzU2hvd1Byb2Nlc3NGaWxlcywgaXNTdWJzY3JpYmVkLCAkX3NjLCBhZ2VudEJ5SWQsIHN1Y2Nlc3NDcmVhdGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4gfHwgIWFnZW50TW9kZWxzLmxlbmd0aCkgcmV0dXJuXG4gICAgaWYgKGFnZW50TG9hZGluZyAmJiAhcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIGNvbnN0IGFwcGx5RWRpdGluZ0FnZW50ID0gKHNvdXJjZTogYW55KSA9PiB7XG4gICAgICBpZiAoc291cmNlLnR5cGUgIT09ICdjdXN0b20nIHx8ICF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICB9LCAzMDAwKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIDsoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgc2VsZWN0ZWRDb25uZWN0b3JzOiBzdHJpbmdbXSA9IFtdXG4gICAgICAgIGxldCBjb25uZWN0b3JTdGF0ZXM6IEFnZW50Q29ubmVjdG9yU25hcHNob3RbXSA9IFtdXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjb25uZWN0b3JzID0gYXdhaXQgZ2V0QWdlbnRDb25uZWN0b3JzKHNvdXJjZS5pZC50b1N0cmluZygpKVxuICAgICAgICAgIHNlbGVjdGVkQ29ubmVjdG9ycyA9IGNvbm5lY3RvcnNcbiAgICAgICAgICAgIC5maWx0ZXIoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5lbmFibGVkX2Zvcl9hZ2VudClcbiAgICAgICAgICAgIC5tYXAoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5zbHVnKVxuICAgICAgICAgIGNvbm5lY3RvclN0YXRlcyA9IGNvbm5lY3RvcnMubWFwKGNvbm5lY3RvciA9PiAoe1xuICAgICAgICAgICAgc2x1ZzogY29ubmVjdG9yLnNsdWcsXG4gICAgICAgICAgICB1c2VyX2F1dGhvcml6ZWQ6IGNvbm5lY3Rvci51c2VyX2F1dGhvcml6ZWQsXG4gICAgICAgICAgICByZXF1aXJlc19hdXRoOiBjb25uZWN0b3IucmVxdWlyZXNfYXV0aCxcbiAgICAgICAgICAgIGVuYWJsZWRfZm9yX2FnZW50OiBjb25uZWN0b3IuZW5hYmxlZF9mb3JfYWdlbnQsXG4gICAgICAgICAgfSkpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgYWdlbnQgY29ubmVjdG9yczonLCBlcnJvcilcbiAgICAgICAgfVxuXG4gICAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IGFnZW50VmFsdWVzVG9TZXQgPSBidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbChzb3VyY2UsIGFnZW50TW9kZWxzLCBwcmV2KVxuICAgICAgICAgIGNvbnN0IG5leHRWYWx1ZXMgPSB7XG4gICAgICAgICAgICAuLi5hZ2VudFZhbHVlc1RvU2V0LFxuICAgICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgICAuLi5hZ2VudFZhbHVlc1RvU2V0LmFjdGlvbnMsXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ29ubmVjdG9ycyxcbiAgICAgICAgICAgICAgY29ubmVjdG9yU3RhdGVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgICAgZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQgPSBuZXh0VmFsdWVzXG4gICAgICAgICAgcmV0dXJuIG5leHRWYWx1ZXNcbiAgICAgICAgfSlcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICBpZiAocGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBzZXRTZWN0aW9uKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50KVxuICAgICAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9KSgpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IHByZWZldGNoZWQgPSBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnRcbiAgICBpZiAocHJlZmV0Y2hlZCkge1xuICAgICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYXBwbHlFZGl0aW5nQWdlbnQocHJlZmV0Y2hlZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChhZ2VudEJ5SWQgJiYgIWFnZW50TG9hZGluZyAmJiBhZ2VudE1vZGVscy5sZW5ndGgpIHtcbiAgICAgIGFwcGx5RWRpdGluZ0FnZW50KGFnZW50QnlJZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNMb2FkaW5nICYmICFhZ2VudExvYWRpbmcgJiYgIWFnZW50QnlJZCAmJiAhbW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSB7XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgYWlNb2RlbDogYWdlbnRNb2RlbHNbMF0sXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9XG4gICAgLy8gTm8gaW5jbHVpciBgaXNMb2FkaW5nYCBlbiBkZXBzOiBhbCB0ZXJtaW5hciBnZXRBZ2VudENvbm5lY3RvcnMgc2UgaGFjZSBzZXRJc0xvYWRpbmcoZmFsc2UpIHlcbiAgICAvLyBzZSByZS1lamVjdXRhcsOtYSBlbCBlZmVjdG8gY29uIGVsIG1pc21vIGFnZW50QnlJZCwgZHVwbGljYW5kbyBsYSBxdWVyeSBkZSBjb25uZWN0b3JzLlxuICB9LCBbYWdlbnRCeUlkLCBpc09wZW4sIGFnZW50TG9hZGluZywgYWdlbnRNb2RlbHM/Lmxlbmd0aCwgbW9kYWxWYWx1ZXMuaXNFZGl0aW5nLCB0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChlcnJvckdldEFnZW50QnlJZCkge1xuICAgICAgaWYgKGVycm9yR2V0QWdlbnRCeUlkID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIikge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgfSwgMzAwMClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKGVycm9yR2V0QWdlbnRCeUlkKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH0sIDMwMDApXG4gICAgfVxuICB9LCBbZXJyb3JHZXRBZ2VudEJ5SWRdKVxuXG4gIGNvbnN0IHNob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghbW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmNsaWVudHMgfHwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5jbGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNsaWVudHMuc29tZShjbGllbnQgPT4gY2xpZW50LmlzX2FjdGl2ZSA9PT0gZmFsc2UgfHwgY2xpZW50LmlzX2RlbGV0ZWQgPT09IHRydWUpXG4gIH0sIFttb2RhbFZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY2xpZW50c10pXG5cbiAgY29uc3QgaXNTYXZlQnV0dG9uRGlzYWJsZWQgPVxuICAgICF2YWxpZGF0ZUZpZWxkVmFsdWVzKG1vZGFsVmFsdWVzKSB8fFxuICAgIHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSB8fFxuICAgIGlzTG9hZGluZyB8fFxuICAgIGlzTG9hZGluZ0tub3dsZWRnZSB8fFxuICAgIGlzTG9hZGluZ0NyZWF0ZSB8fFxuICAgIGlzTG9hZGluZ1VwZGF0ZUFjY2VzcyB8fFxuICAgIHNob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyB8fFxuICAgIGhhc0ZpbGVFcnJvcnNcblxuICBjb25zdCBoYW5kbGVUb2dnbGVGYXZvcml0ZSA9ICgpID0+IHtcbiAgICBpZiAobW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlkKSB7XG4gICAgICAvLyBFeGlzdGluZyBhZ2VudFxuICAgICAgdG9nZ2xlRmF2b3JpdGUoXG4gICAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQsXG4gICAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgICAgICBpc19mYXZvcml0ZTogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAvLyBBY3R1YWxpemFyIGVsIGVzdGFkbyBkZSBhZ2VudGVzIHkgb3JkZW5hciBjdWFuZG8gc2UgaGFjZSBkZXNkZSBlbCBtb2RhbCBBQk1cbiAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlKHVwZGF0ZWRBZ2VudCwgdHJ1ZSlcbiAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0RmF2b3JpdGUsIHtcbiAgICAgICAgICAgIG9wdGlvbjogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlID8gJ2FkZCcgOiAncmVtb3ZlJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIG1vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDcmVhdGUgbmV3IGFnZW50XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgaXNfZmF2b3JpdGU6ICFwcmV2LmdlbmVyYWwuaXNfZmF2b3JpdGUsXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWlzT3BlbiB8fCAoIXVzZXJQZXJtaXNzaW9ucz8uY3JlYXRlICYmICF1c2VyUGVybWlzc2lvbnM/LmVkaXQgJiYgIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKFxuICAgIDxCYWNrZHJvcCB6SW5kZXg9e2FibUFnZW50TW9kYWxaSW5kZXh9IG9uQ2xpY2s9e2hhbmRsZUJhY2tkcm9wQ2xpY2t9PlxuICAgICAgPFNDQUFNV3JhcHBlciByZWY9e21vZGFsUmVmfSB0YWJJbmRleD17LTF9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTQ0FBTVdyYXBwZXJTcGlubmVyPlxuICAgICAgICAgICAgPFNDQUFNV3JhcHBlclNwaW5uZXJDb250ZW50PlxuICAgICAgICAgICAgICA8U3Bpbm5lckxvdHRpZSBzaXplPVwiODBweFwiIGNvbG9yPVwicHJpbWFyeVwiIC8+XG4gICAgICAgICAgICA8L1NDQUFNV3JhcHBlclNwaW5uZXJDb250ZW50PlxuICAgICAgICAgIDwvU0NBQU1XcmFwcGVyU3Bpbm5lcj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAge2lzU2hvd1Byb2Nlc3NGaWxlcyAmJiBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA/IChcbiAgICAgICAgICAgICAgPEFibUxvYWRlckZpbGVzXG4gICAgICAgICAgICAgICAgYXR0YWNobWVudHM9e21vZGFsVmFsdWVzLmtub3dsZWRnZX1cbiAgICAgICAgICAgICAgICBsYWJlbD17dChgcHJvY2Vzc2luZ0tub3dsZWRnZS4ke21vZGFsVmFsdWVzLmlzRWRpdGluZyA/ICdkZXNjcmlwdGlvblVwZGF0ZScgOiAnZGVzY3JpcHRpb25DcmVhdGUnfWApfVxuICAgICAgICAgICAgICAgIG9uVGltZW91dD17aGFuZGxlUHJvY2Vzc0ZpbGVzVGltZW91dH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyTGVmdD5cbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gdCgnZ2VuZXJhbFNlY3Rpb24ucmVtb3ZlRmF2b3JpdGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2dlbmVyYWxTZWN0aW9uLmFkZEZhdm9yaXRlJylcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJGYXZvcml0ZSBvbkNsaWNrPXtoYW5kbGVUb2dnbGVGYXZvcml0ZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhclxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MjB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MjB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXttb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnI2E2YTZhNid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9e21vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZSA/ICcjRkZDNjI0JyA6ICdub25lJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXttb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGUgPyAnJyA6ICdzdGFyLWZhdm9yaXRlLWljb24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyRmF2b3JpdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyVGl0bGU+e21vZGFsVmFsdWVzPy5pc0VkaXRpbmcgPyB0KCdlZGl0QWdlbnQnKSA6IHQoJ25ld0FnZW50Jyl9PC9TQ0FBTUhlYWRlclRpdGxlPlxuICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckxlZnQ+XG4gICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJDbG9zZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmNhbmNlbE1vZGFsKVxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTG9hZGluZyB8fCBpc0xvYWRpbmdLbm93bGVkZ2UgfHwgaXNMb2FkaW5nQ3JlYXRlIHx8IGlzTG9hZGluZ1VwZGF0ZUFjY2Vzc31cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiI2E2YTZhNlwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxTQ0FBTUNvbnRlbnQgaGFzU2Nyb2xsPXtzZWN0aW9uICE9PSAna25vd2xlZGdlJ30+XG4gICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFyPlxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVxuICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnZ2VuZXJhbCd9XG4gICAgICAgICAgICAgICAgICAgICAgJGluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2dlbmVyYWwnKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1nZW5lcmFsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdnZW5lcmFsJyA/ICdyZ2JhKDYzLCA2MywgNjMsIDEpJyA6ICdyZ2JhKDE2NiwgMTY2LCAxNjYsIDEpJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtVGl0bGUgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdnZW5lcmFsJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgnZ2VuZXJhbFNlY3Rpb24udGl0bGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtPlxuXG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdrbm93bGVkZ2UnfVxuICAgICAgICAgICAgICAgICAgICAgICRpbmRleD17MX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdrbm93bGVkZ2UnKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1rbm93bGVkZ2VcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPEJyYWluSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdrbm93bGVkZ2UnID8gJ3JnYmEoNjMsIDYzLCA2MywgMSknIDogJ3JnYmEoMTY2LCAxNjYsIDE2NiwgMSknfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1UaXRsZSBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2tub3dsZWRnZSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2tub3dsZWRnZVNlY3Rpb24udGl0bGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtPlxuXG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdhY3Rpb25zJ31cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdhY3Rpb25zJyl9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhYm0tYWdlbnQtbW9kYWwtYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Q2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtgJHtzZWN0aW9uID09PSAnYWN0aW9ucycgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnYWN0aW9ucyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2FjdGlvbnNTZWN0aW9uLnRpdGxlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbT5cblxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVxuICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eSd9XG4gICAgICAgICAgICAgICAgICAgICAgJGluZGV4PXsyfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2FjY2Vzc2liaWxpdHknKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1hY2Nlc3NpYmlsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmlsaXR5SWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdhY2Nlc3NpYmlsaXR5JyA/ICdyZ2JhKDYzLCA2MywgNjMsIDEpJyA6ICdyZ2JhKDE2NiwgMTY2LCAxNjYsIDEpJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtVGl0bGUgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdhY2Nlc3NpYmlsaXR5J30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24udGl0bGVUYWInKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICB7c2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jbGllbnRzRXJyb3InKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1FcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgY29sb3I9XCIjQzcwNTA1XCIgd2lkdGg9XCIxNnB4XCIgaGVpZ2h0PVwiMTZweFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbUVycm9yPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbT5cbiAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFyPlxuICAgICAgICAgICAgICAgICAge1NlY3Rpb25CeUtleVtzZWN0aW9uXSh7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogbW9kYWxWYWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiBoYW5kbGVTZXRBZ2VudFZhbHVlc0J5S2V5cyxcbiAgICAgICAgICAgICAgICAgICAgYWdlbnRNb2RlbHMsXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0tub3dsZWRnZTogW10sXG4gICAgICAgICAgICAgICAgICAgIG5ld0tub3dsZWRnZTogW10sXG4gICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlRXhpc3RpbmdLbm93bGVkZ2U6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgICAgICBvblJlbW92ZU5ld0tub3dsZWRnZTogKCkgPT4ge30sXG4gICAgICAgICAgICAgICAgICAgIG9uRmlsZUVycm9yQ2hhbmdlOiBzZXRIYXNGaWxlRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwWkluZGV4LFxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9TQ0FBTUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPFNDQUFNRm9vdGVyIGlzRWRpdGluZz17ISFtb2RhbFZhbHVlcz8uaXNFZGl0aW5nICYmICEhdXNlclBlcm1pc3Npb25zPy5kZWxldGV9PlxuICAgICAgICAgICAgICAgICAgeyEhbW9kYWxWYWx1ZXM/LmlzRWRpdGluZyAmJlxuICAgICAgICAgICAgICAgICAgICAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlICYmXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1EZWxldGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbldpdGhJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93TW9kYWxEZWxldGUodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTG9hZGluZyB8fCBpc0xvYWRpbmdLbm93bGVkZ2UgfHwgaXNMb2FkaW5nQ3JlYXRlIHx8IGlzTG9hZGluZ1VwZGF0ZUFjY2Vzc31cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFdyYXBwZXJDZW50ZXJJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUcmFzaCBjb2xvcj1cIiMwOGNcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2RlbGV0ZUFnZW50Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvV3JhcHBlckNlbnRlckljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1EZWxldGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiAnMjRweCcgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNhdmVCdXR0b24gaXNEaXNhYmxlZD17aXNTYXZlQnV0dG9uRGlzYWJsZWR9PlxuICAgICAgICAgICAgICAgICAgICAgIDxDVUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbihudWxsLCAnY3JlYXRlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTYXZlQnV0dG9uRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge21vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ3NhdmVDaGFuZ2VzJykgOiB0KCdjcmVhdGVBZ2VudExhYmVsQnV0dG9uJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNhdmVCdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1NDQUFNRm9vdGVyPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDQUFNV3JhcHBlcj5cbiAgICAgIHtzaG93TW9kYWxEZWxldGUgJiYgKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNb2RhbERlbGV0ZShmYWxzZSl9XG4gICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb246IChwcm9wczogYW55KSA9PiBoYW5kbGVDb25maXJtQWN0aW9uKHByb3BzLCAnZGVsZXRlJyksXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjaGF0PXt7IHRpdGxlOiBtb2RhbFZhbHVlcy5nZW5lcmFsLm5hbWUsIGlkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkIH19XG4gICAgICAgICAgYWN0aW9uPVwiYWdlbnRcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L0JhY2tkcm9wPixcbiAgICBzZWxlY3RvclxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxRQUFRLE9BQU87QUFDekUsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsYUFBYSxRQUFRLHVEQUF1RDtBQUNyRixTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLHVCQUF1QixRQUFRLDRFQUE0RTtBQUNwSCxTQUFTQyxRQUFRLFFBQVEsc0JBQXNCO0FBQy9DLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsaUJBQWlCLEVBQUVDLFNBQVMsUUFBUSxtQkFBbUI7QUFDaEUsU0FBU0MsYUFBYSxRQUFRLDRDQUE0QztBQUUxRSxTQUFTQyxlQUFlLFFBQVEsNENBQTRDO0FBRTVFLFNBQVNDLG1CQUFtQixFQUFFQyxpQkFBaUIsRUFBRUMsbUJBQW1CLFFBQVEsNEJBQTRCO0FBRXhHLFNBQ0VDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxXQUFXLEVBQ1hDLGdCQUFnQixFQUNoQkMsZUFBZSxFQUNmQyxtQkFBbUIsRUFDbkJDLHNCQUFzQixFQUN0QkMsWUFBWSxFQUNaQyxZQUFZLEVB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LE1BQU0sRUFBRTtrQkFBRyxDQUFFLENBQUMsRUFDNUM5VixDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUFBLENBQ0E7Y0FBQyxDQUNaO1lBQUMsQ0FDTSxDQUNwQixlQUNIbkYsSUFBQTtjQUFLZ1csS0FBSyxFQUFFO2dCQUFFK0YsT0FBTyxFQUFFLE1BQU07Z0JBQUVDLEdBQUcsRUFBRTtjQUFPLENBQUU7Y0FBQXhCLFFBQUEsZUFDM0N4YSxJQUFBLENBQUN2QixlQUFlO2dCQUFDd2QsVUFBVSxFQUFFakMsb0JBQXFCO2dCQUFBUSxRQUFBLGVBQ2hEeGEsSUFBQSxDQUFDckQsUUFBUTtrQkFDUHdlLE9BQU8sRUFBQyxXQUFXO2tCQUNuQmhZLElBQUksRUFBQyxRQUFRO2tCQUNib1gsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUEsRUFBUTtvQkFDYjFHLG9CQUFtQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7a0JBQ3JDLENBQUU7a0JBQ0Z5SCxRQUFRLEVBQUV0QixvQkFBcUI7a0JBQUFRLFFBQUEsRUFFOUIzUixXQUFXLENBQUNySSxTQUFTLEdBQUcyRSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUdBLENBQUMsQ0FBQyx3QkFBd0I7Z0JBQUMsQ0FDL0Q7Y0FBQyxDQUNJO1lBQUMsQ0FDZixDQUFDO1VBQUEsQ0FDSyxDQUFDO1FBQUEsQ0FDZDtNQUNILENBQ0Q7SUFDSCxDQUNXLENBQUMsRUFDZDhDLGVBQWUsaUJBQ2RqSSxJQUFBLENBQUNULG1CQUFtQjtNQUNsQjJjLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO1FBQUEsT0FBUWhVLGtCQUFrQixDQUFDLEtBQUssQ0FBQztNQUFBLENBQUM7TUFDekNpVSxRQUFRLEVBQUU7UUFDUnRJLG1CQUFtQixFQUFFLFNBQXJCQSxtQkFBbUJBLENBQUdoUyxLQUFVO1VBQUEsT0FBS2dTLG9CQUFtQixDQUFDaFMsS0FBSyxFQUFFLFFBQVEsQ0FBQztRQUFBO01BQzNFLENBQUU7TUFDRm1TLElBQUksRUFBRTtRQUFFK0csS0FBSyxFQUFFbFMsV0FBVyxDQUFDbkksT0FBTyxDQUFDQyxJQUFJO1FBQUVNLEVBQUUsRUFBRTRILFdBQVcsQ0FBQ25JLE9BQU8sQ0FBQ087TUFBRyxDQUFFO01BQ3RFZ1QsTUFBTSxFQUFDO0lBQU8sQ0FDZixDQUNGO0VBQUEsQ0FDTyxDQUFDLEVBQ1hyTyxRQUNGLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119
1630
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsImNyZWF0ZVBvcnRhbCIsInVzZVRyYW5zbGF0aW9uIiwiQ1VCdXR0b24iLCJDYXRlZ29yeSIsIkFsZXJ0IiwiVHJhc2giLCJTdGFyIiwiQ3Jvc3MiLCJTcGlubmVyTG90dGllIiwiVG9vbHRpcCIsIkFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIiwiQmFja2Ryb3AiLCJ1c2VVc2VyIiwiQWNjZXNzaWJpbGl0eUljb24iLCJCcmFpbkljb24iLCJ1c2VBZ2VudE1vZGVsIiwidXNlR2V0QWdlbnRCeUlkIiwiQWJtQWN0aW9uc1NlY3Rpb25WMiIsIkFibUdlbmVyYWxTZWN0aW9uIiwiQWJtS25vd2xlZGdlU2VjdGlvbiIsIlNDQUFNQ29udGVudCIsIlNDQUFNRm9vdGVyIiwiU0NBQU1IZWFkZXIiLCJTQ0FBTUhlYWRlclRpdGxlIiwiU0NBQU1IZWFkZXJMZWZ0IiwiU0NBQU1IZWFkZXJGYXZvcml0ZSIsIlNDQUFNSGVhZGVyQ2xvc2VCdXR0b24iLCJTQ0FBTVNpZGViYXIiLCJTQ0FBTVdyYXBwZXIiLCJTQ0FBTVNpZGViYXJJdGVtIiwiU0NBQU1TaWRlYmFySXRlbVRpdGxlIiwiU0NBQU1EZWxldGVCdXR0b24iLCJTQ0FBTVNhdmVCdXR0b24iLCJTQ0FBTVdyYXBwZXJTcGlubmVyIiwiU0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQiLCJTQ0FBTVNpZGViYXJJdGVtRXJyb3IiLCJ1c2VDcmVhdGVBZ2VudCIsInVzZURlbGV0ZUFnZW50IiwidXNlU25hY2tCYXJNYW5hZ2VyIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVwZGF0ZUFnZW50IiwidXNlS25vd2xlZGdlT3BlcmF0aW9ucyIsIkFibUxvYWRlckZpbGVzIiwiV3JhcHBlckNlbnRlckljb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwidXNlQWNjZXNzQ2xpZW50IiwidXNlVG9nZ2xlRmF2b3JpdGUiLCJjcmVhdGVTY2hlZHVsZSIsImdldEFnZW50Q29ubmVjdG9ycyIsIm9wZW5Db25uZWN0b3JBdXRob3JpemF0aW9uV2luZG93cyIsInNhdmVBZ2VudENvbm5lY3RvcnMiLCJmZXRjaEFnZW50RGV0YWlsIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiaW5pdGlhbFZhbHVlcyIsIk9iamVjdCIsImZyZWV6ZSIsImlzRWRpdGluZyIsImtub3dsZWRnZSIsImdlbmVyYWwiLCJuYW1lIiwiZW1vamkiLCJpbnRyb2R1Y3Rpb24iLCJpbnB1dFBsYWNlaG9sZGVyIiwiaXNBY3RpdmUiLCJhaU1vZGVsIiwiaWQiLCJ1c2VyUHJvbXB0Iiwia25vd2xlZGdlQmFzZXMiLCJpc19mYXZvcml0ZSIsImFjY2Vzc2liaWxpdHkiLCJhY2Nlc3NUeXBlIiwiY2xpZW50cyIsImFjdGlvbnMiLCJzZWxlY3RlZFRvb2xHcm91cHMiLCJzZWxlY3RlZENvbm5lY3RvcnMiLCJjb25uZWN0b3JTdGF0ZXMiLCJTZWN0aW9uQnlLZXkiLCJwcm9wcyIsIl9vYmplY3RTcHJlYWQiLCJ2YWxpZGF0ZUZpZWxkVmFsdWVzIiwidmFsdWVUb1ZhbGlkYXRlIiwiYnVpbGRFZGl0aW5nTW9kYWxWYWx1ZXNGcm9tQWdlbnREZXRhaWwiLCJhZ2VudEJ5SWQiLCJhZ2VudE1vZGVscyIsInByZXYiLCJfYWdlbnRCeUlkJGtub3dsZWRnZUIiLCJfYWdlbnRCeUlkJGNsaWVudHMiLCJhZ2VudE1vZGVsIiwiZmluZCIsIm1vZGVsIiwibW9kZWxBaUlkIiwiY3JlYXRlZF9ieSIsImNyZWF0ZWRCeSIsIm1hcCIsImsiLCJmaWxlIiwiRmlsZSIsImZpbGVuYW1lIiwidG9TdHJpbmciLCJzaXplIiwiZmlsZV9zaXplX2J5dGVzIiwidHlwZSIsIm9yaWdpbmFsX2ZpbGVfdHlwZSIsInN0YXR1cyIsInVybF9vcmlnaW5hbCIsInVuZGVmaW5lZCIsInVybF90aHVtYm5haWwiLCJhY2Nlc3MiLCJjbGllbnQiLCJfY2xpZW50JGlkIiwiX2NsaWVudCRpc19hY3RpdmUiLCJfY2xpZW50JGlzX2RlbGV0ZWQiLCJpc19hY3RpdmUiLCJpc19kZWxldGVkIiwidG9vbEdyb3VwU2x1Z3MiLCJBYm1BZ2VudE1vZGFsIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiX21vZGFsVmFsdWVzJGFjY2Vzc2liMiIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsMyIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsNCIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsNSIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsNiIsImFkZEFnZW50IiwidXBkYXRlQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50RmF2b3JpdGUiLCJzZWxlY3RGaXJzdEFnZW50IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VHbG9iYWxDb250ZXh0IiwiY3VycmVudFNlbGVjdGVkQWdlbnQiLCJhZ2VudCIsInNlbGVjdEFnZW50IiwiYWJtQWdlbnRNb2RhbFpJbmRleCIsInRvb2x0aXBaSW5kZXgiLCJfdXNlVG9nZ2xlRmF2b3JpdGUiLCJ0b2dnbGVGYXZvcml0ZSIsInNlbGVjdG9yIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzU3Vic2NyaWJlZCIsInNldElzU3Vic2NyaWJlZCIsIm1vZGFsUmVmIiwiY29ubmVjdG9yQXV0aFBvcHVwUmVmIiwiaGFzUGVuZGluZ0ZpbGVzUmVmIiwiYWN0aW9uc1RvRmlsZXMiLCJ0b0RlbGV0ZSIsInRvVXBsb2FkIiwiYWNjZXNzVXBkYXRlQ29udGV4dCIsImlzRnJvbUNyZWF0aW9uIiwiaXNGcm9tRWRpdGluZyIsImhhc0FjdGlvbkZpbGVzIiwib3BlcmF0aW9uVHlwZSIsImhhc0JlZW5DYWxsZWQiLCJhY2Nlc3NIYW5kbGVkUmVmIiwiYWdlbnRDcmVhdGVkUmVmIiwicGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmIiwicGVuZGluZ1RyaWdnZXJSZWYiLCJwcmVmZXRjaGVkQWdlbnRCeUlkUmVmIiwiZmlsZXNGaW5pc2hlZFJlZiIsInByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmIiwiY29ubmVjdG9yc1NhdmVkRm9yQWdlbnRSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImZpbGVzUHJvY2Vzc2VkIiwic2V0RmlsZXNQcm9jZXNzZWQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2hvd01vZGFsRGVsZXRlIiwic2V0U2hvd01vZGFsRGVsZXRlIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJzZWN0aW9uIiwic2V0U2VjdGlvbiIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJtb2RhbFZhbHVlcyIsInNldE1vZGFsVmFsdWVzIiwiX3VzZUdldEFnZW50QnlJZCIsImFnZW50TG9hZGluZyIsImxvYWRpbmciLCJoYW5kbGVHZXRBZ2VudEJ5SWQiLCJoYW5kbGVDbGVhbkFnZW50IiwiZXJyb3JHZXRBZ2VudEJ5SWQiLCJlcnJvciIsIl91c2VBZ2VudE1vZGVsIiwiZ2V0QWxsQWdlbnRNb2RlbHMiLCJmaXJzdFZhbHVlQWdlbnQiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiaXNTaG93UHJvY2Vzc0ZpbGVzIiwic2V0SXNTaG93UHJvY2Vzc0ZpbGVzIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImhhc0ZpbGVFcnJvcnMiLCJzZXRIYXNGaWxlRXJyb3JzIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJfdXNlRGVsZXRlQWdlbnQiLCJoYW5kbGVEZWxldGVBZ2VudCIsInN1Y2Nlc3NEZWxldGUiLCJzdWNjZXNzIiwicmVzZXRTdWNjZXNzIiwiX3VzZVVwZGF0ZUFnZW50IiwiaGFuZGxlVXBkYXRlQWdlbnQiLCJzdWNjZXNzVXBkYXRlIiwicmVzZXRTdWNjZXNzVXBkYXRlIiwiX3VzZUNyZWF0ZUFnZW50IiwiaGFuZGxlQ3JlYXRlQWdlbnQiLCJpc0xvYWRpbmdDcmVhdGUiLCJzdWNjZXNzQ3JlYXRlIiwicmVzZXRTdWNjZXNzQ3JlYXRlIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlS25vd2xlZGdlT3BlcmF0aW8iLCJoYW5kbGVDcmVhdGVLbm93bGVkZ2VzIiwiaGFuZGxlRGVsZXRlS25vd2xlZGdlcyIsImhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMiLCJpc0xvYWRpbmdLbm93bGVkZ2UiLCJlcnJvcktub3dsZWRnZSIsInN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUiLCJoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlIiwiaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlIiwiX3VzZUFjY2Vzc0NsaWVudCIsImhhbmRsZUFjY2Vzc0NsaWVudCIsInN1Y2Nlc3NVcGRhdGVBY2Nlc3MiLCJpc0xvYWRpbmdVcGRhdGVBY2Nlc3MiLCJyZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MiLCJoYW5kbGVSZXNldFN1Y2Nlc3MiLCJhcmVDbGllbnRzQXJyYXlzRXF1YWwiLCJjbGllbnRzMSIsImNsaWVudHMyIiwibGVuZ3RoIiwiY2xpZW50czFJZHMiLCJjIiwiY2xpZW50SWQiLCJzb3J0IiwiY2xpZW50czJJZHMiLCJldmVyeSIsImluZGV4IiwiaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnIiLCJjdXJyZW50IiwiYWNjZXNzVHlwZVNhbWUiLCJjbGllbnRzU2FtZSIsImhhc0FjdGlvbnNDaGFuZ2VkIiwiX21vZGFsVmFsdWVzJGFjdGlvbnMiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnIyIiwiY3VycmVudEFjdGlvbnMiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJvcmlnaW5hbEFjdGlvbnMiLCJzb21lIiwic2x1ZyIsImhhc0Nvbm5lY3RvckNoYW5nZXMiLCJfbW9kYWxWYWx1ZXMkYWN0aW9uczIiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnIzIiwiY3VycmVudENvbm5lY3RvcnMiLCJvcmlnaW5hbENvbm5lY3RvcnMiLCJwZXJzaXN0QWdlbnRDb25uZWN0b3JzIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImFnZW50SWQiLCJjb25uZWN0b3JTbHVncyIsInBvcHVwV2luZG93IiwicmVzcG9uc2UiLCJwZW5kaW5nQXV0aG9yaXphdGlvbnMiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0Iiwic2VudCIsInJlcXVpcmVzX2F1dGgiLCJhYnJ1cHQiLCJzdG9wIiwiX3giLCJfeDIiLCJfeDMiLCJhcHBseSIsImFyZ3VtZW50cyIsInZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnI0IiwiX21vZGFsVmFsdWVzJGdlbmVyYWwkIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyNSIsIl9tb2RhbFZhbHVlcyRrbm93bGVkZyIsIl9maXJzdFZhbHVlQWdlbnQkY3VycjYiLCJfbW9kYWxWYWx1ZXMka25vd2xlZGcyIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyNyIsIl9hY3Rpb25zVG9GaWxlcyRjdXJyZSIsIl9hY3Rpb25zVG9GaWxlcyRjdXJyZTIiLCJ0b1VwZGF0ZSIsImhhc0FueVZhbHVlRm9yQ3JlYXRpb24iLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbCQyIiwiX2FnZW50TW9kZWxzJCIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsJDMiLCJfbW9kYWxWYWx1ZXMkYWN0aW9uczMiLCJfbW9kYWxWYWx1ZXMkYWN0aW9uczQiLCJpc0RlZmF1bHRBaU1vZGVsIiwiZGVmYXVsdElucHV0UGxhY2Vob2xkZXIiLCJpc0RlZmF1bHRJbnB1dFBsYWNlaG9sZGVyIiwiZGVmYXVsdFVzZXJQcm9tcHRQbGFjZWhvbGRlciIsImlzRGVmYXVsdFVzZXJQcm9tcHQiLCJoYXNOYW1lIiwidHJpbSIsImhhc0Vtb2ppIiwiaGFzSW50cm9kdWN0aW9uIiwiaGFzSW5wdXRQbGFjZWhvbGRlciIsImhhc1VzZXJQcm9tcHQiLCJoYXNLbm93bGVkZ2UiLCJoYXNDdXN0b21BaU1vZGVsIiwiaGFzQWNjZXNzaWJpbGl0eSIsImhhc0FjdGlvbnMiLCJoYXNDb25uZWN0b3JzIiwiaGFzQ2hhbmdlc0ZvckVkaXRpbmciLCJoYXNQZW5kaW5nQ2hhbmdlcyIsImhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwidXBkYXRlZEFnZW50IiwiaGFuZGxlQ2xvc2UiLCJza2lwQ29uZmlybWF0aW9uIiwiY29uZmlybU1lc3NhZ2UiLCJ3aW5kb3ciLCJjb25maXJtIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImV2ZW50IiwidGFyZ2V0IiwiY3VycmVudFRhcmdldCIsImhhbmRsZVNlY3Rpb25DaGFuZ2UiLCJuZXdTZWN0aW9uIiwidGFiU2VjdGlvbiIsIm9wdGlvbiIsImhhbmRsZVNldEFnZW50VmFsdWVzQnlLZXlzIiwiX3JlZjMiLCJrZXkiLCJ2YWx1ZSIsImRlbGV0ZUtub3dsZWRnZSIsIm5leHRLbm93bGVkZ2UiLCJfYWN0aW9uc1RvRmlsZXMkY3VycmUzIiwicHVzaCIsImZpbGVzUHJldklkcyIsIlNldCIsIm5ld0ZpbGVzIiwiZmlsdGVyIiwiaGFzIiwidmFsdWVJZHMiLCJjb25jYXQiLCJrbm93bGVkZ2VGaWxlcyIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJfcmVmNCIsIl9jYWxsZWUyIiwiY2hhdCIsImFjdGlvbiIsIl9tb2RhbFZhbHVlcyRhY3Rpb25zNSIsImNvbm5lY3RvckNoYW5nZXMiLCJfbW9kYWxWYWx1ZXMkYWN0aW9uczYiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnI4IiwiX21vZGFsVmFsdWVzJGFjdGlvbnM3IiwiX21vZGFsVmFsdWVzJGdlbmVyYWwkNCIsIl90IiwiX2NvbnRleHQyIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImNvbmZpcm1BY3Rpb24iLCJvcGVuIiwiY2xvc2VkIiwiY2xvc2UiLCJ0aGVuIiwiZnJlc2hBZ2VudCIsIl94NCIsIl94NSIsImhhbmRsZVNldEFnZW50VmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlcyIsIl9hZ2VudFZhbHVlcyR2YWx1ZXMzIiwiYWdlbnRWYWx1ZXMiLCJkZXRhaWwiLCJpbml0aWFsU2VjdGlvbiIsImluY2x1ZGVzIiwidmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlczIiLCJwcmVmZXRjaGVkQWdlbnRCeUlkIiwibmV4dFZhbHVlcyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiX2RvY3VtZW50IiwiYm9keSIsIm9yaWdpbmFsT3ZlcmZsb3ciLCJzdHlsZSIsIm92ZXJmbG93IiwiaGFuZGxlQmVmb3JlVW5sb2FkIiwicHJldmVudERlZmF1bHQiLCJyZXR1cm5WYWx1ZSIsIl9tb2RhbFZhbHVlcyRhY3Rpb25zOCIsImNvbnNvbGUiLCJhZ2VudF9leHRlcm5hbF9pZCIsImVyciIsInByb21pc2VzIiwiZmlsZXNUb0RlbGV0ZSIsImZpbGVzVG9DcmVhdGUiLCJhZ2VudFdpdGhGYXZvcml0ZSIsImFnZW50Rm9yVG9nZ2xlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhbGwiLCJmaWxlcyIsImFpQ2hhdEZhdm9yaXRlIiwiZmlsZXNUb1VwbG9hZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImhhbmRsZVByb2Nlc3NGaWxlc1RpbWVvdXQiLCJ3ZWJTb2NrZXRGdW5jdGlvbiIsIl9yZWY1IiwibW9kZWxEYXRhIiwibW9kZWxfZGF0YSIsImZpbGVTdGF0dXMiLCJ1cGRhdGVkS25vd2xlZGdlIiwia25vd2xlZGdlX2Jhc2VfaWQiLCJoYXNQZW5kaW5nRmlsZXMiLCJoYXNFcnJvckZpbGVzIiwicHJldkNvdW50IiwiY29udGV4dCIsImFnZW50VG9BZGQiLCJfc3VjY2Vzc0NyZWF0ZSRpZCIsImNoYW5uZWwiLCIkX3NjIiwiXyRfc2MiLCJzdWJzY3JpYmVIYW5kbGVyIiwiXyRfc2MyIiwiXyRfc2MzIiwiXyRfc2MkY2hhbm5lbFR5cGUiLCJtb2RlbF9oYXNoIiwiYWN0aW9uVHlwZSIsIlNVQlNDUklCRSIsInVwZGF0ZUNvbm5lY3Rpb25Nb2RlbCIsImNoYW5uZWxUeXBlIiwiTU9ERUxfQ0hBTk5FTCIsImFwcGx5RWRpdGluZ0FnZW50Iiwic291cmNlIiwic2V0VGltZW91dCIsIl9jYWxsZWUzIiwiY29ubmVjdG9ycyIsIl90MiIsIl9jb250ZXh0MyIsImNvbm5lY3RvciIsImVuYWJsZWRfZm9yX2FnZW50IiwidXNlcl9hdXRob3JpemVkIiwiYWdlbnRWYWx1ZXNUb1NldCIsInByZWZldGNoZWQiLCJzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIiLCJpc1NhdmVCdXR0b25EaXNhYmxlZCIsImhhbmRsZVRvZ2dsZUZhdm9yaXRlIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDIiLCJjcmVhdGUiLCJlZGl0IiwiekluZGV4Iiwib25DbGljayIsImNoaWxkcmVuIiwicmVmIiwidGFiSW5kZXgiLCJjb2xvciIsImF0dGFjaG1lbnRzIiwibGFiZWwiLCJvblRpbWVvdXQiLCJ0aXRsZSIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsInZhcmlhbnQiLCJjbGFzc05hbWUiLCJjYW5jZWxNb2RhbCIsImRpc2FibGVkIiwiaGFzU2Nyb2xsIiwiJGluZGV4IiwiZXhpc3RpbmdLbm93bGVkZ2UiLCJuZXdLbm93bGVkZ2UiLCJvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlIiwib25SZW1vdmVOZXdLbm93bGVkZ2UiLCJvbkZpbGVFcnJvckNoYW5nZSIsImNoaWxkcmVuV2l0aEljb24iLCJkaXNwbGF5IiwiZ2FwIiwiaXNEaXNhYmxlZCIsIm9uQ2xvc2UiLCJoYW5kbGVycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWFsZXJ0ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tY3ljbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5cbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DYXRlZ29yeSdcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQWxlcnQnXG5pbXBvcnQgeyBUcmFzaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1RyYXNoJ1xuaW1wb3J0IHsgU3RhciB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1N0YXInXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgU3Bpbm5lckxvdHRpZSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2Nvci1jb21tb25zL2xpYi9jb21wb25lbnRzL3NwaW5uZXItbG90dGllJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbidcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlJY29uLCBCcmFpbkljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IHVzZUFnZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBZ2VudE1vZGVsL3VzZUFnZW50TW9kZWwnXG5pbXBvcnQgeyBBZ2VudCwgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlR2V0QWdlbnRCeUlkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRCeUlkJ1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQWJtQWN0aW9uc1NlY3Rpb25WMiwgQWJtR2VuZXJhbFNlY3Rpb24sIEFibUtub3dsZWRnZVNlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbidcbmltcG9ydCB0eXBlIHsgQWdlbnRDb25uZWN0b3JTbmFwc2hvdCwgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHtcbiAgU0NBQU1Db250ZW50LFxuICBTQ0FBTUZvb3RlcixcbiAgU0NBQU1IZWFkZXIsXG4gIFNDQUFNSGVhZGVyVGl0bGUsXG4gIFNDQUFNSGVhZGVyTGVmdCxcbiAgU0NBQU1IZWFkZXJGYXZvcml0ZSxcbiAgU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbixcbiAgU0NBQU1TaWRlYmFyLFxuICBTQ0FBTVdyYXBwZXIsXG4gIFNDQUFNU2lkZWJhckl0ZW0sXG4gIFNDQUFNU2lkZWJhckl0ZW1UaXRsZSxcbiAgU0NBQU1EZWxldGVCdXR0b24sXG4gIFNDQUFNU2F2ZUJ1dHRvbixcbiAgU0NBQU1XcmFwcGVyU3Bpbm5lcixcbiAgU0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQsXG4gIFNDQUFNU2lkZWJhckl0ZW1FcnJvcixcbn0gZnJvbSAnLi9BYm1BZ2VudE1vZGFsLnN0eWxlcydcbmltcG9ydCB7IHVzZUNyZWF0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VDcmVhdGVBZ2VudCdcbmltcG9ydCB7IHVzZURlbGV0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VEZWxldGVBZ2VudCdcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVwZGF0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VVcGRhdGVBZ2VudCdcbmltcG9ydCB7IHVzZUtub3dsZWRnZU9wZXJhdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VLbm93bGVkZ2UnXG5pbXBvcnQgeyBBYm1Mb2FkZXJGaWxlcyB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUxvYWRlckZpbGVzJ1xuaW1wb3J0IHsgV3JhcHBlckNlbnRlckljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9XcmFwcGVyQ2VudGVySWNvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbmltcG9ydCB7IHVzZUFjY2Vzc0NsaWVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFjY2Vzc0NsaWVudC91c2VBY2Nlc3NDbGllbnQnXG5pbXBvcnQgeyB1c2VUb2dnbGVGYXZvcml0ZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzJ1xuaW1wb3J0IHsgY3JlYXRlU2NoZWR1bGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NjaGVkdWxlcydcbmltcG9ydCB7XG4gIGdldEFnZW50Q29ubmVjdG9ycyxcbiAgb3BlbkNvbm5lY3RvckF1dGhvcml6YXRpb25XaW5kb3dzLFxuICBzYXZlQWdlbnRDb25uZWN0b3JzLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9jb25uZWN0b3JzJ1xuaW1wb3J0IHsgZmV0Y2hBZ2VudERldGFpbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2ZldGNoQWdlbnREZXRhaWwnXG5pbXBvcnQgdHlwZSB7IFBlbmRpbmdUcmlnZ2VyUGF5bG9hZCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibVRyaWdnZXJzU2VjdGlvbi9BYm1UcmlnZ2Vyc1NlY3Rpb24uaW50ZXJmYWNlJ1xuXG5jb25zdCBpbml0aWFsVmFsdWVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGlzRWRpdGluZzogZmFsc2UsXG4gIGtub3dsZWRnZTogW10sXG4gIGdlbmVyYWw6IHtcbiAgICBuYW1lOiAnJyxcbiAgICBlbW9qaTogJycsXG4gICAgaW50cm9kdWN0aW9uOiAnJyxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiAnJyxcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gICAgYWlNb2RlbDogbnVsbCxcbiAgICBpZDogbnVsbCxcbiAgICB1c2VyUHJvbXB0OiBudWxsLFxuICAgIGtub3dsZWRnZUJhc2VzOiBbXSxcbiAgICBpc19mYXZvcml0ZTogZmFsc2UsXG4gIH0sXG4gIGFjY2Vzc2liaWxpdHk6IHtcbiAgICBhY2Nlc3NUeXBlOiAnY29tcGFueScsXG4gICAgY2xpZW50czogbnVsbCxcbiAgfSxcbiAgYWN0aW9uczoge1xuICAgIHNlbGVjdGVkVG9vbEdyb3VwczogW10sXG4gICAgc2VsZWN0ZWRDb25uZWN0b3JzOiBbXSxcbiAgICBjb25uZWN0b3JTdGF0ZXM6IFtdLFxuICB9LFxufSlcblxudHlwZSBBYm1TZWN0aW9uID0gJ2dlbmVyYWwnIHwgJ2tub3dsZWRnZScgfCAndHJhaW5pbmcnIHwgJ3Rlc3RpbmcnIHwgJ2FjY2Vzc2liaWxpdHknIHwgJ2FjdGlvbnMnXG5cbmV4cG9ydCBjb25zdCBTZWN0aW9uQnlLZXkgPSB7XG4gIGdlbmVyYWw6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHtcbiAgICAgIGtleSxcbiAgICAgIHZhbHVlLFxuICAgICAgZGVsZXRlS25vd2xlZGdlLFxuICAgIH06IHtcbiAgICAgIGtleTogc3RyaW5nXG4gICAgICB2YWx1ZTogdW5rbm93blxuICAgICAgZGVsZXRlS25vd2xlZGdlPzogYm9vbGVhblxuICAgIH0pID0+IHZvaWRcbiAgICBhZ2VudE1vZGVsczogQWdlbnRNb2RlbFtdXG4gICAgbG9hZGluZzogYm9vbGVhblxuICAgIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbiAgfSkgPT4gPEFibUdlbmVyYWxTZWN0aW9uIHsuLi5wcm9wc30gLz4sXG4gIGtub3dsZWRnZTogKHByb3BzOiB7XG4gICAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoeyBrZXksIHZhbHVlIH06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWRcbiAgICBleGlzdGluZ0tub3dsZWRnZTogQXR0YWNobWVudEZpbGVbXVxuICAgIG5ld0tub3dsZWRnZTogQXR0YWNobWVudEZpbGVbXVxuICAgIG9uUmVtb3ZlRXhpc3RpbmdLbm93bGVkZ2U6IChmaWxlSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uUmVtb3ZlTmV3S25vd2xlZGdlOiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkZpbGVFcnJvckNoYW5nZTogKGhhc0Vycm9yczogYm9vbGVhbikgPT4gdm9pZFxuICAgIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbiAgfSkgPT4gPEFibUtub3dsZWRnZVNlY3Rpb24gey4uLnByb3BzfSAvPixcbiAgYWNjZXNzaWJpbGl0eTogKHByb3BzOiB7XG4gICAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoeyBrZXksIHZhbHVlIH06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWRcbiAgfSkgPT4gPEFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIHsuLi5wcm9wc30gLz4sXG4gIGFjdGlvbnM6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gIH0pID0+IDxBYm1BY3Rpb25zU2VjdGlvblYyIHsuLi5wcm9wc30gLz4sXG59XG5cbnR5cGUgQWJtQWdlbnRNb2RhbFByb3BzID0ge1xuICBhZGRBZ2VudDogKG5ld0FnZW50OiBBZ2VudCwgb3B0aW9ucz86IHsgbmF2aWdhdGVIb21lPzogYm9vbGVhbiB9KSA9PiB2b2lkXG4gIHJlbW92ZUFnZW50OiAoYWdlbnRJZDogbnVtYmVyIHwgc3RyaW5nKSA9PiB2b2lkXG4gIHVwZGF0ZUFnZW50OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICB1cGRhdGVBZ2VudEZhdm9yaXRlOiAodXBkYXRlZEFnZW50OiBBZ2VudCwgc2hvdWxkU29ydD86IGJvb2xlYW4pID0+IHZvaWRcbiAgc2VsZWN0Rmlyc3RBZ2VudDogKGFnZW50SWQ6IHN0cmluZykgPT4gdm9pZFxufVxuXG5jb25zdCB2YWxpZGF0ZUZpZWxkVmFsdWVzID0gKHZhbHVlVG9WYWxpZGF0ZTogTW9kYWxWYWx1ZXMpID0+IHtcbiAgaWYgKCF2YWx1ZVRvVmFsaWRhdGUuZ2VuZXJhbC5uYW1lIHx8ICF2YWx1ZVRvVmFsaWRhdGUuZ2VuZXJhbC51c2VyUHJvbXB0KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqIE1pc21hIGVzdHJ1Y3R1cmEgcXVlIGVsIGVmZWN0byBxdWUgaGlkcmF0YSBkZXNkZSB1c2VHZXRBZ2VudEJ5SWQgKHRvZGFzIGxhcyBwZXN0YcOxYXMgZGVsIEFCTSkuICovXG5mdW5jdGlvbiBidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbChcbiAgYWdlbnRCeUlkOiBhbnksXG4gIGFnZW50TW9kZWxzOiBBZ2VudE1vZGVsW10sXG4gIHByZXY6IE1vZGFsVmFsdWVzXG4pOiBNb2RhbFZhbHVlcyB7XG4gIGNvbnN0IGFnZW50TW9kZWwgPSBhZ2VudE1vZGVscy5maW5kKG1vZGVsID0+IG1vZGVsLmlkID09PSBhZ2VudEJ5SWQubW9kZWxBaUlkKVxuICByZXR1cm4ge1xuICAgIC4uLnByZXYsXG4gICAgaXNFZGl0aW5nOiB0cnVlLFxuICAgIGdlbmVyYWw6IHtcbiAgICAgIGVtb2ppOiBhZ2VudEJ5SWQuZW1vamksXG4gICAgICBuYW1lOiBhZ2VudEJ5SWQubmFtZSxcbiAgICAgIGludHJvZHVjdGlvbjogYWdlbnRCeUlkLmludHJvZHVjdGlvbixcbiAgICAgIGlucHV0UGxhY2Vob2xkZXI6IGFnZW50QnlJZC5pbnB1dFBsYWNlaG9sZGVyLFxuICAgICAgaXNBY3RpdmU6IGFnZW50QnlJZC5pc0FjdGl2ZSxcbiAgICAgIGFpTW9kZWw6IGFnZW50TW9kZWwgfHwgbnVsbCxcbiAgICAgIGlkOiBhZ2VudEJ5SWQuaWQsXG4gICAgICB1c2VyUHJvbXB0OiBhZ2VudEJ5SWQudXNlclByb21wdCxcbiAgICAgIGtub3dsZWRnZUJhc2VzOiBbXSxcbiAgICAgIGlzX2Zhdm9yaXRlOiBhZ2VudEJ5SWQuaXNfZmF2b3JpdGUsXG4gICAgICBjcmVhdGVkX2J5OiBhZ2VudEJ5SWQuY3JlYXRlZEJ5LFxuICAgIH0sXG4gICAga25vd2xlZGdlOlxuICAgICAgYWdlbnRCeUlkLmtub3dsZWRnZUJhc2VzPy5tYXAoKGs6IGFueSkgPT4gKHtcbiAgICAgICAgZmlsZTogbmV3IEZpbGUoW10sIGsuZmlsZW5hbWUpLFxuICAgICAgICBpZDogay5pZC50b1N0cmluZygpLFxuICAgICAgICBuYW1lOiBrLmZpbGVuYW1lLFxuICAgICAgICBzaXplOiBrLmZpbGVfc2l6ZV9ieXRlcyB8fCAwLFxuICAgICAgICB0eXBlOiBrLm9yaWdpbmFsX2ZpbGVfdHlwZSxcbiAgICAgICAgc3RhdHVzOiBrLnN0YXR1cyxcbiAgICAgICAgdXJsX29yaWdpbmFsOiBrLnVybF9vcmlnaW5hbCB8fCB1bmRlZmluZWQsXG4gICAgICAgIHVybF90aHVtYm5haWw6IGsudXJsX3RodW1ibmFpbCB8fCB1bmRlZmluZWQsXG4gICAgICB9KSkgfHwgW10sXG4gICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgYWNjZXNzVHlwZTogYWdlbnRCeUlkLmFjY2VzcyxcbiAgICAgIGNsaWVudHM6XG4gICAgICAgIGFnZW50QnlJZC5jbGllbnRzPy5tYXAoKGNsaWVudDogYW55KSA9PiAoe1xuICAgICAgICAgIGlkOiBjbGllbnQuaWQ/LnRvU3RyaW5nKCkgfHwgJycsXG4gICAgICAgICAgbmFtZTogY2xpZW50Lm5hbWUsXG4gICAgICAgICAgaXNfYWN0aXZlOiBjbGllbnQuaXNfYWN0aXZlID8/IGZhbHNlLFxuICAgICAgICAgIGlzX2RlbGV0ZWQ6IGNsaWVudC5pc19kZWxldGVkID8/IGZhbHNlLFxuICAgICAgICB9KSkgfHwgbnVsbCxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNlbGVjdGVkVG9vbEdyb3VwczogYWdlbnRCeUlkLnRvb2xHcm91cFNsdWdzIHx8IFtdLFxuICAgICAgc2VsZWN0ZWRDb25uZWN0b3JzOiBbXSxcbiAgICAgIGNvbm5lY3RvclN0YXRlczogW10sXG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQWJtQWdlbnRNb2RhbCA9ICh7XG4gIGFkZEFnZW50LFxuICB1cGRhdGVBZ2VudCxcbiAgcmVtb3ZlQWdlbnQsXG4gIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gIHNlbGVjdEZpcnN0QWdlbnQsXG59OiBBYm1BZ2VudE1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbignYWJtX2FnZW50X3NlY3Rpb24nKVxuICAvLyBjb25zdCAkX3NjOiBhbnkgPSBudWxsXG4gIGNvbnN0IHsgYWdlbnQ6IGN1cnJlbnRTZWxlY3RlZEFnZW50LCBzZWxlY3RBZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGFibUFnZW50TW9kYWxaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDExMTIsICdhZ2VudE1vZGFsJylcbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ25lc3RlZE1vZGFsJylcbiAgY29uc3QgeyB0b2dnbGVGYXZvcml0ZSB9ID0gdXNlVG9nZ2xlRmF2b3JpdGUoKVxuICBjb25zdCBzZWxlY3RvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhYm0tYWdlbnQtbW9kYWwnKVxuICBjb25zdCBbaXNTdWJzY3JpYmVkLCBzZXRJc1N1YnNjcmliZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IG1vZGFsUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBjb25uZWN0b3JBdXRoUG9wdXBSZWYgPSB1c2VSZWY8V2luZG93IHwgbnVsbD4obnVsbClcbiAgY29uc3QgaGFzUGVuZGluZ0ZpbGVzUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBhY3Rpb25zVG9GaWxlcyA9IHVzZVJlZjxhbnk+KHtcbiAgICB0b0RlbGV0ZTogW10sXG4gICAgdG9VcGxvYWQ6IFtdLFxuICB9KVxuICBjb25zdCBhY2Nlc3NVcGRhdGVDb250ZXh0ID0gdXNlUmVmPHtcbiAgICBpc0Zyb21DcmVhdGlvbjogYm9vbGVhblxuICAgIGlzRnJvbUVkaXRpbmc6IGJvb2xlYW5cbiAgICBoYXNBY3Rpb25GaWxlczogYm9vbGVhblxuICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnIHwgJ3VwZGF0ZScgfCBudWxsXG4gICAgaGFzQmVlbkNhbGxlZD86IGJvb2xlYW5cbiAgfT4oe1xuICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgfSlcbiAgY29uc3QgYWNjZXNzSGFuZGxlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWdlbnRDcmVhdGVkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZiA9IHVzZVJlZjxBYm1TZWN0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3QgcGVuZGluZ1RyaWdnZXJSZWYgPSB1c2VSZWY8UGVuZGluZ1RyaWdnZXJQYXlsb2FkIHwgbnVsbD4obnVsbClcbiAgY29uc3QgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZiA9IHVzZVJlZjxhbnk+KG51bGwpXG4gIGNvbnN0IGZpbGVzRmluaXNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIC8vIE1hcmNhIGN1YW5kbyBjZXJyYW1vcyBlbCBsb2FkZXIgcG9yIGVsIHRpbWVvdXQgZGUgc2VndXJpZGFkIGRlIGFyY2hpdm9zLlxuICAvLyBNaWVudHJhcyBlc3TDqSBhY3Rpdm8sIGxvcyB1c2VFZmZlY3QgZGUgcG9zdC1ndWFyZGFkbyBOTyBkZWJlbiBkaXNwYXJhclxuICAvLyBzbmFja2JhcnMgZGUgw6l4aXRvIG5pIGF1dG8tY2VycmFyIGVsIG1vZGFsLlxuICBjb25zdCBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgY29ubmVjdG9yc1NhdmVkRm9yQWdlbnRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2ZpbGVzUHJvY2Vzc2VkLCBzZXRGaWxlc1Byb2Nlc3NlZF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93TW9kYWxEZWxldGUsIHNldFNob3dNb2RhbERlbGV0ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlY3Rpb24sIHNldFNlY3Rpb25dID0gdXNlU3RhdGU8QWJtU2VjdGlvbj4oJ2dlbmVyYWwnKVxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFttb2RhbFZhbHVlcywgc2V0TW9kYWxWYWx1ZXNdID0gdXNlU3RhdGU8e1xuICAgIGdlbmVyYWw6IGFueVxuICAgIGtub3dsZWRnZTogYW55XG4gICAgaXNFZGl0aW5nOiBib29sZWFuXG4gICAgYWNjZXNzaWJpbGl0eTogYW55XG4gICAgYWN0aW9uczogYW55XG4gIH0+KGluaXRpYWxWYWx1ZXMpXG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nOiBhZ2VudExvYWRpbmcsXG4gICAgaGFuZGxlR2V0QWdlbnRCeUlkLFxuICAgIGFnZW50OiBhZ2VudEJ5SWQsXG4gICAgaGFuZGxlQ2xlYW5BZ2VudCxcbiAgICBlcnJvcjogZXJyb3JHZXRBZ2VudEJ5SWQsXG4gIH0gPSB1c2VHZXRBZ2VudEJ5SWQoKVxuICBjb25zdCB7IGFnZW50TW9kZWxzLCBnZXRBbGxBZ2VudE1vZGVscyB9ID0gdXNlQWdlbnRNb2RlbCgpXG4gIGNvbnN0IGZpcnN0VmFsdWVBZ2VudCA9IHVzZVJlZjxhbnk+KG51bGwpXG4gIGNvbnN0IFtpc1Nob3dQcm9jZXNzRmlsZXMsIHNldElzU2hvd1Byb2Nlc3NGaWxlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hhc0ZpbGVFcnJvcnMsIHNldEhhc0ZpbGVFcnJvcnNdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgdXNlclBlcm1pc3Npb25zID0gdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50c1xuXG4gIGNvbnN0IHsgaGFuZGxlRGVsZXRlQWdlbnQsIHN1Y2Nlc3M6IHN1Y2Nlc3NEZWxldGUsIHJlc2V0U3VjY2VzcyB9ID0gdXNlRGVsZXRlQWdlbnQoKVxuICBjb25zdCB7IGhhbmRsZVVwZGF0ZUFnZW50LCBzdWNjZXNzOiBzdWNjZXNzVXBkYXRlLCByZXNldFN1Y2Nlc3M6IHJlc2V0U3VjY2Vzc1VwZGF0ZSB9ID0gdXNlVXBkYXRlQWdlbnQoKVxuXG4gIGNvbnN0IHtcbiAgICBoYW5kbGVDcmVhdGVBZ2VudCxcbiAgICBpc0xvYWRpbmc6IGlzTG9hZGluZ0NyZWF0ZSxcbiAgICBzdWNjZXNzOiBzdWNjZXNzQ3JlYXRlLFxuICAgIHJlc2V0U3VjY2VzczogcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICB9ID0gdXNlQ3JlYXRlQWdlbnQoKVxuXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuXG4gIGNvbnN0IHtcbiAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBpc0xvYWRpbmc6IGlzTG9hZGluZ0tub3dsZWRnZSxcbiAgICBlcnJvcjogZXJyb3JLbm93bGVkZ2UsXG4gICAgc3VjY2Vzc0RlbGV0ZTogc3VjY2Vzc0tub3dsZWRnZURlbGV0ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlLFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgfSA9IHVzZUtub3dsZWRnZU9wZXJhdGlvbnMoKVxuXG4gIGNvbnN0IHtcbiAgICBoYW5kbGVBY2Nlc3NDbGllbnQsXG4gICAgc3VjY2Vzczogc3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBpc0xvYWRpbmc6IGlzTG9hZGluZ1VwZGF0ZUFjY2VzcyxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3M6IHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgfSA9IHVzZUFjY2Vzc0NsaWVudCgpXG5cbiAgaWYgKCFzZWxlY3RvcikgcmV0dXJuIG51bGxcblxuICBjb25zdCBhcmVDbGllbnRzQXJyYXlzRXF1YWwgPSAoY2xpZW50czE6IGFueVtdIHwgbnVsbCwgY2xpZW50czI6IGFueVtdIHwgbnVsbCkgPT4ge1xuICAgIGlmICghY2xpZW50czEgJiYgIWNsaWVudHMyKSByZXR1cm4gdHJ1ZVxuICAgIGlmICghY2xpZW50czEgfHwgIWNsaWVudHMyKSByZXR1cm4gZmFsc2VcbiAgICBpZiAoY2xpZW50czEubGVuZ3RoICE9PSBjbGllbnRzMi5sZW5ndGgpIHJldHVybiBmYWxzZVxuXG4gICAgY29uc3QgY2xpZW50czFJZHMgPSBjbGllbnRzMS5tYXAoYyA9PiBjLmNsaWVudElkKS5zb3J0KClcbiAgICBjb25zdCBjbGllbnRzMklkcyA9IGNsaWVudHMyLm1hcChjID0+IGMuY2xpZW50SWQpLnNvcnQoKVxuXG4gICAgcmV0dXJuIGNsaWVudHMxSWRzLmV2ZXJ5KChpZCwgaW5kZXgpID0+IGlkID09PSBjbGllbnRzMklkc1tpbmRleF0pXG4gIH1cblxuICBjb25zdCBoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCA9ICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VmFsdWVBZ2VudC5jdXJyZW50Py5hY2Nlc3NpYmlsaXR5IHx8ICFtb2RhbFZhbHVlcz8uYWNjZXNzaWJpbGl0eSkgcmV0dXJuIHRydWVcblxuICAgIGNvbnN0IGFjY2Vzc1R5cGVTYW1lID0gbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGVcbiAgICBjb25zdCBjbGllbnRzU2FtZSA9IGFyZUNsaWVudHNBcnJheXNFcXVhbChcbiAgICAgIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuY2xpZW50cyxcbiAgICAgIGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmFjY2Vzc2liaWxpdHkuY2xpZW50c1xuICAgIClcblxuICAgIHJldHVybiAhYWNjZXNzVHlwZVNhbWUgfHwgIWNsaWVudHNTYW1lXG4gIH1cblxuICBjb25zdCBoYXNBY3Rpb25zQ2hhbmdlZCA9ICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50QWN0aW9ucyA9IFsuLi4obW9kYWxWYWx1ZXMuYWN0aW9ucz8uc2VsZWN0ZWRUb29sR3JvdXBzIHx8IFtdKV0uc29ydCgpXG4gICAgY29uc3Qgb3JpZ2luYWxBY3Rpb25zID0gWy4uLihmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8uYWN0aW9ucz8uc2VsZWN0ZWRUb29sR3JvdXBzIHx8IFtdKV0uc29ydCgpXG5cbiAgICBpZiAoY3VycmVudEFjdGlvbnMubGVuZ3RoICE9PSBvcmlnaW5hbEFjdGlvbnMubGVuZ3RoKSByZXR1cm4gdHJ1ZVxuXG4gICAgcmV0dXJuIGN1cnJlbnRBY3Rpb25zLnNvbWUoKHNsdWcsIGluZGV4KSA9PiBzbHVnICE9PSBvcmlnaW5hbEFjdGlvbnNbaW5kZXhdKVxuICB9XG5cbiAgY29uc3QgaGFzQ29ubmVjdG9yQ2hhbmdlcyA9ICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50Q29ubmVjdG9ycyA9IFsuLi4obW9kYWxWYWx1ZXMuYWN0aW9ucz8uc2VsZWN0ZWRDb25uZWN0b3JzIHx8IFtdKV0uc29ydCgpXG4gICAgY29uc3Qgb3JpZ2luYWxDb25uZWN0b3JzID0gWy4uLihmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8uYWN0aW9ucz8uc2VsZWN0ZWRDb25uZWN0b3JzIHx8IFtdKV0uc29ydCgpXG5cbiAgICBpZiAoY3VycmVudENvbm5lY3RvcnMubGVuZ3RoICE9PSBvcmlnaW5hbENvbm5lY3RvcnMubGVuZ3RoKSByZXR1cm4gdHJ1ZVxuXG4gICAgcmV0dXJuIGN1cnJlbnRDb25uZWN0b3JzLnNvbWUoKHNsdWcsIGluZGV4KSA9PiBzbHVnICE9PSBvcmlnaW5hbENvbm5lY3RvcnNbaW5kZXhdKVxuICB9XG5cbiAgY29uc3QgcGVyc2lzdEFnZW50Q29ubmVjdG9ycyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChhZ2VudElkOiBzdHJpbmcsIGNvbm5lY3RvclNsdWdzOiBzdHJpbmdbXSwgcG9wdXBXaW5kb3c/OiBXaW5kb3cgfCBudWxsKSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNhdmVBZ2VudENvbm5lY3RvcnMoYWdlbnRJZCwgY29ubmVjdG9yU2x1Z3MpXG4gICAgICBjb25zdCBwZW5kaW5nQXV0aG9yaXphdGlvbnMgPSByZXNwb25zZS5yZXF1aXJlc19hdXRoIHx8IFtdXG5cbiAgICAgIG9wZW5Db25uZWN0b3JBdXRob3JpemF0aW9uV2luZG93cyhwZW5kaW5nQXV0aG9yaXphdGlvbnMsIHBvcHVwV2luZG93KVxuICAgICAgY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQgPSBudWxsXG5cbiAgICAgIHJldHVybiByZXNwb25zZVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUgPSAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8uZ2VuZXJhbCB8fCAhbW9kYWxWYWx1ZXM/LmdlbmVyYWwpIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIChcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwubmFtZSA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5uYW1lICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmVtb2ppID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmVtb2ppICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbiA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24gJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmFpTW9kZWw/LmlkID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmFpTW9kZWw/LmlkICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwudXNlclByb21wdCAmJlxuICAgICAgIWhhc0FjdGlvbnNDaGFuZ2VkKCkgJiZcbiAgICAgICFoYXNDb25uZWN0b3JDaGFuZ2VzKCkgJiZcbiAgICAgIChtb2RhbFZhbHVlcy5rbm93bGVkZ2U/Lmxlbmd0aCA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQ/Lmtub3dsZWRnZT8ubGVuZ3RoIHx8XG4gICAgICAgICghbW9kYWxWYWx1ZXMua25vd2xlZGdlPy5sZW5ndGggJiYgIWZpcnN0VmFsdWVBZ2VudC5jdXJyZW50Py5rbm93bGVkZ2U/Lmxlbmd0aCkpICYmXG4gICAgICAhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwZGF0ZT8ubGVuZ3RoICYmXG4gICAgICAhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZT8ubGVuZ3RoICYmXG4gICAgICAhaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKVxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhc0FueVZhbHVlRm9yQ3JlYXRpb24gPSAoKSA9PiB7XG4gICAgaWYgKG1vZGFsVmFsdWVzLmlzRWRpdGluZykgcmV0dXJuIGZhbHNlXG5cbiAgICBjb25zdCBpc0RlZmF1bHRBaU1vZGVsID0gISFhZ2VudE1vZGVscy5sZW5ndGggJiYgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5haU1vZGVsPy5pZCA9PT0gYWdlbnRNb2RlbHNbMF0/LmlkXG5cbiAgICBjb25zdCBkZWZhdWx0SW5wdXRQbGFjZWhvbGRlciA9IHQoJ2dlbmVyYWxTZWN0aW9uLmlucHV0UGxhY2Vob2xkZXInKVxuICAgIGNvbnN0IGlzRGVmYXVsdElucHV0UGxhY2Vob2xkZXIgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgPT09IGRlZmF1bHRJbnB1dFBsYWNlaG9sZGVyXG5cbiAgICBjb25zdCBkZWZhdWx0VXNlclByb21wdFBsYWNlaG9sZGVyID0gdCgnZ2VuZXJhbFNlY3Rpb24uaW5pdGlhbFByb21wdFBsYWNlaG9sZGVyJylcbiAgICBjb25zdCBpc0RlZmF1bHRVc2VyUHJvbXB0ID1cbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdCA9PT0gZGVmYXVsdFVzZXJQcm9tcHRQbGFjZWhvbGRlciB8fFxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0ID09PSAnJyB8fFxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0ID09PSBudWxsXG5cbiAgICBjb25zdCBoYXNOYW1lID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5uYW1lLnRyaW0oKSAhPT0gJydcbiAgICBjb25zdCBoYXNFbW9qaSA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuZW1vamkudHJpbSgpICE9PSAnJ1xuICAgIGNvbnN0IGhhc0ludHJvZHVjdGlvbiA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uLnRyaW0oKSAhPT0gJydcbiAgICBjb25zdCBoYXNJbnB1dFBsYWNlaG9sZGVyID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyLnRyaW0oKSAhPT0gJycgJiYgIWlzRGVmYXVsdElucHV0UGxhY2Vob2xkZXJcbiAgICBjb25zdCBoYXNVc2VyUHJvbXB0ID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0Py50cmltKCkgIT09ICcnICYmICFpc0RlZmF1bHRVc2VyUHJvbXB0XG4gICAgY29uc3QgaGFzS25vd2xlZGdlID0gISFtb2RhbFZhbHVlcy5rbm93bGVkZ2UubGVuZ3RoXG4gICAgY29uc3QgaGFzQ3VzdG9tQWlNb2RlbCA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuYWlNb2RlbCAmJiAhaXNEZWZhdWx0QWlNb2RlbFxuICAgIGNvbnN0IGhhc0FjY2Vzc2liaWxpdHkgPSBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55J1xuICAgIGNvbnN0IGhhc0FjdGlvbnMgPSAhIW1vZGFsVmFsdWVzLmFjdGlvbnM/LnNlbGVjdGVkVG9vbEdyb3Vwcz8ubGVuZ3RoXG4gICAgY29uc3QgaGFzQ29ubmVjdG9ycyA9ICEhbW9kYWxWYWx1ZXMuYWN0aW9ucz8uc2VsZWN0ZWRDb25uZWN0b3JzPy5sZW5ndGhcblxuICAgIHJldHVybiAoXG4gICAgICBoYXNOYW1lIHx8XG4gICAgICBoYXNFbW9qaSB8fFxuICAgICAgaGFzSW50cm9kdWN0aW9uIHx8XG4gICAgICBoYXNJbnB1dFBsYWNlaG9sZGVyIHx8XG4gICAgICBoYXNVc2VyUHJvbXB0IHx8XG4gICAgICBoYXNLbm93bGVkZ2UgfHxcbiAgICAgIGhhc0N1c3RvbUFpTW9kZWwgfHxcbiAgICAgIGhhc0FjY2Vzc2liaWxpdHkgfHxcbiAgICAgIGhhc0FjdGlvbnMgfHxcbiAgICAgIGhhc0Nvbm5lY3RvcnNcbiAgICApXG4gIH1cblxuICBjb25zdCBoYXNDaGFuZ2VzRm9yRWRpdGluZyA9ICgpID0+IHtcbiAgICBpZiAoIW1vZGFsVmFsdWVzLmlzRWRpdGluZykgcmV0dXJuIGZhbHNlXG5cbiAgICByZXR1cm4gKFxuICAgICAgIXZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSB8fFxuICAgICAgISFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCB8fFxuICAgICAgISFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhc1BlbmRpbmdDaGFuZ2VzID0gKCkgPT4ge1xuICAgIHJldHVybiBoYXNBbnlWYWx1ZUZvckNyZWF0aW9uKCkgfHwgaGFzQ2hhbmdlc0ZvckVkaXRpbmcoKVxuICB9XG5cbiAgLy8gSGVscGVyIHBhcmEgbWFuZWphciBlbCB0b2dnbGUgZGUgZmF2b3JpdG8geSBhY3R1YWxpemFyIGVsIGVzdGFkbyBjb24gb3JkZW5hbWllbnRvXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZDogc3RyaW5nLCBhZ2VudDogQWdlbnQsIG9uU3VjY2Vzcz86ICh1cGRhdGVkQWdlbnQ6IEFnZW50KSA9PiB2b2lkLCBvbkVycm9yPzogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgdG9nZ2xlRmF2b3JpdGUoXG4gICAgICAgIGFnZW50SWQsXG4gICAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgICAgLy8gQWN0dWFsaXphciBlbCBlc3RhZG8gZGUgYWdlbnRlcyBjb24gZWwgcmVzdWx0YWRvIGRlbCBzZXJ2aWRvciB5IG9yZGVuYXJcbiAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlKHVwZGF0ZWRBZ2VudCwgdHJ1ZSlcbiAgICAgICAgICBpZiAob25TdWNjZXNzKSB7XG4gICAgICAgICAgICBvblN1Y2Nlc3ModXBkYXRlZEFnZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGlmIChvbkVycm9yKSB7XG4gICAgICAgICAgICBvbkVycm9yKClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFnZW50LmlzX2Zhdm9yaXRlXG4gICAgICApXG4gICAgfSxcbiAgICBbdG9nZ2xlRmF2b3JpdGUsIHVwZGF0ZUFnZW50RmF2b3JpdGVdXG4gIClcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9IChza2lwQ29uZmlybWF0aW9uID0gZmFsc2UpID0+IHtcbiAgICBpZiAoIXNraXBDb25maXJtYXRpb24gJiYgaGFzUGVuZGluZ0NoYW5nZXMoKSAmJiAhc3VjY2Vzc0NyZWF0ZSAmJiAhc3VjY2Vzc1VwZGF0ZSAmJiAhc3VjY2Vzc0RlbGV0ZSkge1xuICAgICAgY29uc3QgY29uZmlybU1lc3NhZ2UgPSBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdjb25maXJtQ2xvc2VFZGl0QWdlbnQnKSA6IHQoJ2NvbmZpcm1DbG9zZUNyZWF0ZUFnZW50JylcblxuICAgICAgaWYgKCF3aW5kb3cuY29uZmlybShjb25maXJtTWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0TW9kYWxWYWx1ZXMoaW5pdGlhbFZhbHVlcylcbiAgICBoYW5kbGVDbGVhbkFnZW50KClcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlKClcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG4gICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudCA9IHtcbiAgICAgIHRvRGVsZXRlOiBbXSxcbiAgICAgIHRvVXBsb2FkOiBbXSxcbiAgICB9XG4gICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgfVxuICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyhmYWxzZSlcbiAgICBzZXRJc1N1YnNjcmliZWQoZmFsc2UpXG4gICAgc2V0RmlsZXNQcm9jZXNzZWQoMClcbiAgICBzZXRTZWN0aW9uKCdnZW5lcmFsJylcbiAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgYWdlbnRDcmVhdGVkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcGVuZGluZ1RyaWdnZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQgPSBudWxsXG4gIH1cblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiAhaXNTaG93UHJvY2Vzc0ZpbGVzKSB7XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VjdGlvbkNoYW5nZSA9IChuZXdTZWN0aW9uOiBBYm1TZWN0aW9uKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLnRhYlNlY3Rpb24sIHsgb3B0aW9uOiBuZXdTZWN0aW9uIH0pXG4gICAgc2V0U2VjdGlvbihuZXdTZWN0aW9uKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2V0QWdlbnRWYWx1ZXNCeUtleXMgPSAoe1xuICAgIGtleSxcbiAgICB2YWx1ZSxcbiAgICBkZWxldGVLbm93bGVkZ2UsXG4gIH06IHtcbiAgICBrZXk6IHN0cmluZ1xuICAgIHZhbHVlOiB1bmtub3duXG4gICAgZGVsZXRlS25vd2xlZGdlPzogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgaWYgKGtleSA9PT0gJ2tub3dsZWRnZScpIHtcbiAgICAgIGNvbnN0IG5leHRLbm93bGVkZ2UgPSAodmFsdWUgYXMgQXR0YWNobWVudEZpbGVbXSB8IHVuZGVmaW5lZCkgfHwgW11cbiAgICAgIGlmICghZGVsZXRlS25vd2xlZGdlKSB7XG4gICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQucHVzaCguLi5uZXh0S25vd2xlZGdlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZmlsZXNQcmV2SWRzID0gbmV4dEtub3dsZWRnZS5sZW5ndGggPyBuZXcgU2V0KG5leHRLbm93bGVkZ2UubWFwKGZpbGUgPT4gZmlsZS5pZCkpIDogbmV3IFNldCgpXG4gICAgICAgIGNvbnN0IG5ld0ZpbGVzID0gbW9kYWxWYWx1ZXMua25vd2xlZGdlLmZpbHRlcihmaWxlID0+ICFmaWxlc1ByZXZJZHMuaGFzKGZpbGUuaWQpICYmIGZpbGUuc3RhdHVzICE9PSAnc3RhcnRlZCcpXG4gICAgICAgIGlmICghbmV3RmlsZXMubGVuZ3RoICYmIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWVJZHMgPSBuZXcgU2V0KG5leHRLbm93bGVkZ2UubWFwKGZpbGUgPT4gZmlsZS5pZCkpXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCA9IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQuZmlsdGVyKGZpbGUgPT4gdmFsdWVJZHMuaGFzKGZpbGUuaWQpKVxuICAgICAgICB9XG4gICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgPSBbLi4uKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgfHwgW10pLCAuLi5uZXdGaWxlc11cbiAgICAgIH1cbiAgICB9XG4gICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBrbm93bGVkZ2VGaWxlcyA9XG4gICAgICAgIGtleSA9PT0gJ2tub3dsZWRnZSdcbiAgICAgICAgICA/IGRlbGV0ZUtub3dsZWRnZVxuICAgICAgICAgICAgPyAodmFsdWUgYXMgQXR0YWNobWVudEZpbGVbXSlcbiAgICAgICAgICAgIDogWy4uLihwcmV2Lmtub3dsZWRnZSB8fCBbXSksIC4uLigodmFsdWUgYXMgQXR0YWNobWVudEZpbGVbXSkgfHwgW10pXVxuICAgICAgICAgIDogbnVsbFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgLi4uKGtleSA9PT0gJ2tub3dsZWRnZSdcbiAgICAgICAgICA/IHsga25vd2xlZGdlOiBrbm93bGVkZ2VGaWxlcyB9XG4gICAgICAgICAgOiBrZXkgPT09ICdhY2Nlc3NpYmlsaXR5J1xuICAgICAgICAgICAgPyB7IGFjY2Vzc2liaWxpdHk6IHZhbHVlIH1cbiAgICAgICAgICAgIDoga2V5ID09PSAnYWN0aW9ucydcbiAgICAgICAgICAgICAgPyB7IGFjdGlvbnM6IHZhbHVlIH1cbiAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgICAgICAgICAgICAgW2tleV06IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybUFjdGlvbiA9IGFzeW5jIChjaGF0OiBhbnksIGFjdGlvbjogJ2RlbGV0ZScgfCAndXBkYXRlJyB8ICdjcmVhdGUnKSA9PiB7XG4gICAgLy8gU29sbyBwZXJtaXRpciBvcGVyYWNpb25lcyBkZSBhZ2VudGVzIGN1c3RvbSBzaSBsYSBmZWF0dXJlIGZsYWcgZXN0w6EgaGFiaWxpdGFkYVxuICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChhY3Rpb24gPT09ICdkZWxldGUnKSB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuZGVsZXRlKVxuICAgICAgaGFuZGxlRGVsZXRlQWdlbnQoY2hhdC5pZCBhcyB1bmtub3duIGFzIHN0cmluZylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY29uZmlybUFjdGlvbiwgeyBvcHRpb246IG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/ICdlZGl0ZScgOiAnY3JlYXRlJyB9KVxuICAgIGlmIChtb2RhbFZhbHVlcy5hY3Rpb25zPy5zZWxlY3RlZENvbm5lY3RvcnM/Lmxlbmd0aCkge1xuICAgICAgY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQgPSB3aW5kb3cub3BlbignJywgJ19ibGFuaycsICdwb3B1cD15ZXMsd2lkdGg9NTYwLGhlaWdodD03NjAnKVxuICAgIH1cbiAgICAvLyBBbCByZWludGVudGFyIGd1YXJkYXIsIGxpYmVyYXIgZWwgZnJlbm8gZGVsIHRpbWVvdXQgcHJldmlvIHBhcmEgcXVlIGxvc1xuICAgIC8vIHVzZUVmZmVjdCBkZSBwb3N0LWd1YXJkYWRvIHZ1ZWx2YW4gYSBwb2RlciBkaXNwYXJhciBzbmFja2JhcnMgeSBjZXJyYXIuXG4gICAgcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgaWYgKG1vZGFsVmFsdWVzLmlzRWRpdGluZykge1xuICAgICAgY29uc3QgY29ubmVjdG9yQ2hhbmdlcyA9IGhhc0Nvbm5lY3RvckNoYW5nZXMoKVxuXG4gICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCAmJiBjb25uZWN0b3JDaGFuZ2VzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgcGVyc2lzdEFnZW50Q29ubmVjdG9ycyhcbiAgICAgICAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIG1vZGFsVmFsdWVzLmFjdGlvbnM/LnNlbGVjdGVkQ29ubmVjdG9ycyB8fCBbXSxcbiAgICAgICAgICAgIGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50XG4gICAgICAgICAgKVxuICAgICAgICAgIGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgLi4uZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQsXG4gICAgICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgICAgIC4uLmZpcnN0VmFsdWVBZ2VudC5jdXJyZW50Py5hY3Rpb25zLFxuICAgICAgICAgICAgICBzZWxlY3RlZENvbm5lY3RvcnM6IFsuLi4obW9kYWxWYWx1ZXMuYWN0aW9ucz8uc2VsZWN0ZWRDb25uZWN0b3JzIHx8IFtdKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25uZWN0b3JzU2F2ZWRGb3JBZ2VudFJlZi5jdXJyZW50ID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFnZW50Q3JlYXRlZCcpKVxuICAgICAgICAgIGlmIChjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudCAmJiAhY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQuY2xvc2VkKSB7XG4gICAgICAgICAgICBjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudC5jbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50ICYmICFjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudC5jbG9zZWQpIHtcbiAgICAgICAgY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQuY2xvc2UoKVxuICAgICAgICBjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lKCkpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlVXBkYXRlQWdlbnQobW9kYWxWYWx1ZXMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoY29ubmVjdG9yQ2hhbmdlcykge1xuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgICBjb25zdCBhZ2VudElkID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZD8udG9TdHJpbmcoKVxuICAgICAgICBpZiAoYWdlbnRJZCAmJiBjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQgPT09IGFnZW50SWQpIHtcbiAgICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGFnZW50SWQpXG4gICAgICAgICAgICAudGhlbihmcmVzaEFnZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlQWdlbnQoZnJlc2hBZ2VudClcbiAgICAgICAgICAgICAgc2VsZWN0QWdlbnQoZnJlc2hBZ2VudClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge30pXG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBoYW5kbGVDcmVhdGVBZ2VudChtb2RhbFZhbHVlcylcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNldEFnZW50VmFsdWVzID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnRWYWx1ZXMgfSA9IGV2ZW50LmRldGFpbFxuICAgICAgY29uc3QgaW5pdGlhbFNlY3Rpb24gPSBhZ2VudFZhbHVlcz8uaW5pdGlhbFNlY3Rpb24gYXMgQWJtU2VjdGlvbiB8IHVuZGVmaW5lZFxuICAgICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPVxuICAgICAgICBpbml0aWFsU2VjdGlvbiAmJiBbJ2dlbmVyYWwnLCAna25vd2xlZGdlJywgJ2FjY2Vzc2liaWxpdHknLCAnYWN0aW9ucyddLmluY2x1ZGVzKGluaXRpYWxTZWN0aW9uKVxuICAgICAgICAgID8gaW5pdGlhbFNlY3Rpb25cbiAgICAgICAgICA6IG51bGxcblxuICAgICAgZ2V0QWxsQWdlbnRNb2RlbHMoKVxuICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgICBzZXRJc0xvYWRpbmcodHJ1ZSlcblxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgfVxuXG4gICAgICBpZiAoYWdlbnRWYWx1ZXMudmFsdWVzPy5pc0VkaXRpbmcpIHtcbiAgICAgICAgLy8gVmFsaWRhciBxdWUgbGEgZmVhdHVyZSBmbGFnIGVzdMOpIGhhYmlsaXRhZGEgYW50ZXMgZGUgY2FyZ2FyIGVsIGFnZW50ZSBwYXJhIGVkaXRhclxuICAgICAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFjY2Vzc0RlbmllZCcpKVxuICAgICAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChhZ2VudFZhbHVlcy5wcmVmZXRjaGVkQWdlbnRCeUlkKSB7XG4gICAgICAgICAgaGFuZGxlQ2xlYW5BZ2VudCgpXG4gICAgICAgICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gYWdlbnRWYWx1ZXMucHJlZmV0Y2hlZEFnZW50QnlJZFxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGhhbmRsZUdldEFnZW50QnlJZChhZ2VudFZhbHVlcz8udmFsdWVzPy5nZW5lcmFsPy5pZCBhcyB1bmtub3duIGFzIHN0cmluZylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChhZ2VudFZhbHVlcy52YWx1ZXMpIHtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlcyA9IHtcbiAgICAgICAgICAuLi5pbml0aWFsVmFsdWVzLFxuICAgICAgICAgIC4uLmFnZW50VmFsdWVzLnZhbHVlcyxcbiAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAuLi5pbml0aWFsVmFsdWVzLmdlbmVyYWwsXG4gICAgICAgICAgICAuLi4oYWdlbnRWYWx1ZXMudmFsdWVzLmdlbmVyYWwgfHwge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgICAgICAgLi4uaW5pdGlhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LFxuICAgICAgICAgICAgLi4uKGFnZW50VmFsdWVzLnZhbHVlcy5hY2Nlc3NpYmlsaXR5IHx8IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxWYWx1ZXMuYWN0aW9ucyxcbiAgICAgICAgICAgIC4uLihhZ2VudFZhbHVlcy52YWx1ZXMuYWN0aW9ucyB8fCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBrbm93bGVkZ2U6IGFnZW50VmFsdWVzLnZhbHVlcy5rbm93bGVkZ2UgfHwgW10sXG4gICAgICAgIH1cblxuICAgICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCA9IG5leHRWYWx1ZXNcbiAgICAgICAgc2V0TW9kYWxWYWx1ZXMobmV4dFZhbHVlcylcbiAgICAgIH1cblxuICAgICAgaWYgKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ICYmICFhZ2VudFZhbHVlcy52YWx1ZXM/LmlzRWRpdGluZykge1xuICAgICAgICBzZXRTZWN0aW9uKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50KVxuICAgICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldEFnZW50VmFsdWVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldEFnZW50VmFsdWVzIGFzIEV2ZW50TGlzdGVuZXIpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyB1c2VFZmZlY3QgdG8gaGFuZGxlIHRoZSBvdmVyZmxvdyBvZiB0aGUgYm9keSB3aGVuIHRoZSBtb2RhbCBpcyBvcGVuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IGJvZHkgfSA9IGRvY3VtZW50XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxPdmVyZmxvdyA9IGJvZHkuc3R5bGUub3ZlcmZsb3dcbiAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbidcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gb3JpZ2luYWxPdmVyZmxvd1xuICAgIH1cbiAgfSwgW2lzT3Blbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVCZWZvcmVVbmxvYWQgPSAoZXZlbnQ6IEJlZm9yZVVubG9hZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IHQoJ2NvbmZpcm1SZWxvYWRCcm93c2VyJylcbiAgICAgICAgcmV0dXJuIHQoJ2NvbmZpcm1SZWxvYWRCcm93c2VyJylcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgaGFuZGxlQmVmb3JlVW5sb2FkKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgaGFuZGxlQmVmb3JlVW5sb2FkKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgaGFzUGVuZGluZ0NoYW5nZXMsIHRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NEZWxldGUpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnREZWxldGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3MoKVxuICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICBzZWxlY3RGaXJzdEFnZW50KGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCBhcyBzdHJpbmcpXG4gICAgICB9XG4gICAgICByZW1vdmVBZ2VudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKVxuICAgICAgc2V0U2hvd01vZGFsRGVsZXRlKGZhbHNlKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgfSwgW3N1Y2Nlc3NEZWxldGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gRXZpdGFyIGVqZWN1Y2nDs24gbcO6bHRpcGxlIGRlbCBlZmVjdG9cbiAgICBpZiAoc3VjY2Vzc0NyZWF0ZSAmJiAhaXNMb2FkaW5nQ3JlYXRlICYmIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ICE9PSBzdWNjZXNzQ3JlYXRlLmlkKSB7XG4gICAgICBhZ2VudENyZWF0ZWRSZWYuY3VycmVudCA9IHN1Y2Nlc3NDcmVhdGUuaWRcbiAgICAgIGlmIChtb2RhbFZhbHVlcy5hY3Rpb25zPy5zZWxlY3RlZENvbm5lY3RvcnM/Lmxlbmd0aCkge1xuICAgICAgICBwZXJzaXN0QWdlbnRDb25uZWN0b3JzKFxuICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBtb2RhbFZhbHVlcy5hY3Rpb25zLnNlbGVjdGVkQ29ubmVjdG9ycyxcbiAgICAgICAgICBjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudFxuICAgICAgICApLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgYWdlbnQgY29ubmVjdG9ycyBhZnRlciBjcmVhdGU6JywgZXJyb3IpXG4gICAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFnZW50Q3JlYXRlZCcpKVxuICAgICAgICAgIGlmIChjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudCAmJiAhY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQuY2xvc2VkKSB7XG4gICAgICAgICAgICBjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudC5jbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChjb25uZWN0b3JBdXRoUG9wdXBSZWYuY3VycmVudCAmJiAhY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQuY2xvc2VkKSB7XG4gICAgICAgIGNvbm5lY3RvckF1dGhQb3B1cFJlZi5jdXJyZW50LmNsb3NlKClcbiAgICAgICAgY29ubmVjdG9yQXV0aFBvcHVwUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgICBpZiAocGVuZGluZ1RyaWdnZXJSZWYuY3VycmVudCkge1xuICAgICAgICBjcmVhdGVTY2hlZHVsZSh7IC4uLnBlbmRpbmdUcmlnZ2VyUmVmLmN1cnJlbnQsIGFnZW50X2V4dGVybmFsX2lkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSkuY2F0Y2goZXJyID0+XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY3JlYXRpbmcgcGVuZGluZyB0cmlnZ2VyOicsIGVycilcbiAgICAgICAgKVxuICAgICAgICBwZW5kaW5nVHJpZ2dlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoICYmIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpIG5vIGhheSBhY2Nlc2liaWxpZGFkIHBlcm8gaGF5IGFyY2hpdm9zLCBlc3RhYmxlY2VyIGVsIGNvbnRleHRvIHBhcmEgY3JlYWNpw7NuXG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXG4gICAgICAgICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgICBmaWxlc1RvRGVsZXRlOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLFxuICAgICAgICAgICAgZmlsZXNUb0NyZWF0ZTogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCxcbiAgICAgICAgICAgIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goaGFuZGxlQWNjZXNzQ2xpZW50KHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAgIGNvbnN0IGFnZW50V2l0aEZhdm9yaXRlID0geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9XG4gICAgICAgICAgYWRkQWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG4gICAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgICAvLyBFbnRvbmNlcyBjdXJyZW50SXNGYXZvcml0ZSBkZWJlIHNlciBmYWxzZSBwYXJhIHF1ZSBlbCB0b2dnbGUgbG8gbWFycXVlIGNvbW8gdHJ1ZVxuICAgICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZXNvbHZlKCksXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKVxuXG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2kgbm8gaGF5IGFjY2VzaWJpbGlkYWQgcGVybyBoYXkgYXJjaGl2b3MsIGVzdGFibGVjZXIgZWwgY29udGV4dG8gcGFyYSBjcmVhY2nDs25cbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtcbiAgICAgICAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzKHsgZmlsZXM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUsIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSB9KSxcbiAgICAgICAgXVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goaGFuZGxlQWNjZXNzQ2xpZW50KHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAgIGNvbnN0IGFnZW50V2l0aEZhdm9yaXRlID0geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9XG4gICAgICAgICAgYWRkQWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG4gICAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgICAvLyBFbnRvbmNlcyBjdXJyZW50SXNGYXZvcml0ZSBkZWJlIHNlciBmYWxzZSBwYXJhIHF1ZSBlbCB0b2dnbGUgbG8gbWFycXVlIGNvbW8gdHJ1ZVxuICAgICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZXNvbHZlKCksXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzKHsgZmlsZXM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUsIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSB9KVxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpIG5vIGhheSBhY2Nlc2liaWxpZGFkIHBlcm8gaGF5IGFyY2hpdm9zLCBlc3RhYmxlY2VyIGVsIGNvbnRleHRvIHBhcmEgY3JlYWNpw7NuXG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXG4gICAgICAgICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSksXG4gICAgICAgIF1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgICBjb25zdCBhZ2VudFdpdGhGYXZvcml0ZSA9IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfVxuICAgICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuICAgICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVzb2x2ZSgpLFxuICAgICAgICAgICAgICAgICgpID0+IHJlamVjdCgpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIH1cblxuICAgICAgICBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAvLyBTb2xvIHJlc2V0ZWFyIGVsIGNvbnRleHRvIHNpIE5PIHNlIGhhIGxsYW1hZG8gdG9kYXbDrWFcbiAgICAgICAgaWYgKCFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCkge1xuICAgICAgICAgIGNvbnN0IHsgaGFzQWN0aW9uRmlsZXMgfSA9IGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudFxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogaGFzQWN0aW9uRmlsZXMgfHwgZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgICBoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KVxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBoYW5kbGVBY2Nlc3NDbGllbnQsIGVsIGFnZW50ZSBzZSBhZ3JlZ2Fyw6EgeSBlbCB0b2dnbGUgc2UgaGFyw6EgZW4gc3VjY2Vzc1VwZGF0ZUFjY2Vzc1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGZhdm9yaXRlIGlmIGl0IHdhcyBtYXJrZWQgZHVyaW5nIGNyZWF0aW9uXG4gICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAvLyBQcmltZXJvIGFncmVnYXIgZWwgYWdlbnRlIGEgbGEgbGlzdGEgKGFkZEFnZW50IHlhIG9yZGVuYSlcbiAgICAgICAgY29uc3QgYWdlbnRXaXRoRmF2b3JpdGUgPSB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH1cbiAgICAgICAgYWRkQWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG5cbiAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICAvLyBMdWVnbyBoYWNlciBlbCB0b2dnbGUgZGUgZmF2b3JpdG8gZW4gZWwgc2Vydmlkb3IgeSBhY3R1YWxpemFyIGVsIGVzdGFkb1xuICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICB1cGRhdGVkQWdlbnQgPT4ge1xuICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEZhdm9yaXRlLCB7IG9wdGlvbjogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlID8gJ2FkZCcgOiAncmVtb3ZlJyB9KVxuICAgICAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgICAgIHNlbGVjdEFnZW50KHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUgfSlcbiAgICAgICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdEZhdm9yaXRlLCB7IG9wdGlvbjogJ2FkZCcgfSlcbiAgICAgICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgICAgICBzZWxlY3RBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcbiAgICAgICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgYWRkQWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzTG9hZGluZ0NyZWF0ZSxcbiAgICBzdWNjZXNzQ3JlYXRlLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIGFkZEFnZW50LFxuICAgIHNlbGVjdEFnZW50LFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gICAgaGFuZGxlQ2xvc2UsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdWNjZXNzVXBkYXRlKSB7XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGggJiYgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKCkpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgICAgY29uc3QgZmlsZXNUb0RlbGV0ZSA9IFsuLi5hY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlXVxuICAgICAgICAgIGNvbnN0IGZpbGVzVG9VcGxvYWQgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZF1cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlID0gW11cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkID0gW11cblxuICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgICBmaWxlc1RvRGVsZXRlLFxuICAgICAgICAgICAgICBmaWxlc1RvQ3JlYXRlOiBmaWxlc1RvVXBsb2FkLFxuICAgICAgICAgICAgICBhZ2VudElkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLihoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgICAgICAgICAgID8gW2hhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXVxuICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICBdKVxuICAgICAgICB9XG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKCkpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgICAgY29uc3QgZmlsZXNUb0RlbGV0ZSA9IFsuLi5hY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlXVxuICAgICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgPSBbXVxuXG4gICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgICAgIGZpbGVzOiBmaWxlc1RvRGVsZXRlLFxuICAgICAgICAgICAgICBhZ2VudElkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLihoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgICAgICAgICAgID8gW2hhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXVxuICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICBdKVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICAgIGNvbnN0IGZpbGVzVG9VcGxvYWQgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZF1cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkID0gW11cblxuICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgICBmaWxlczogZmlsZXNUb1VwbG9hZCxcbiAgICAgICAgICAgICAgYWdlbnRJZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4oaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKVxuICAgICAgICAgICAgICA/IFtoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KV1cbiAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgXSlcbiAgICAgICAgfVxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKCkpIHtcbiAgICAgICAgLy8gU29sbyByZXNldGVhciBlbCBjb250ZXh0byBzaSBOTyBzZSBoYSBsbGFtYWRvIHRvZGF2w61hIHkgTk8gaGF5IGFyY2hpdm9zIHBlbmRpZW50ZXNcbiAgICAgICAgaWYgKCFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCAmJiAhYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgICAgICAvLyBMbGFtYXIgYSBoYW5kbGVBY2Nlc3NDbGllbnQgc29sbyB1bmEgdmV6XG4gICAgICAgICAgaWYgKCFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCkge1xuICAgICAgICAgICAgaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSlcbiAgICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gU29sbyBjZXJyYXIgc2kgbm8gaGF5IGFyY2hpdm9zIHNpZW5kbyBwcm9jZXNhZG9zIG5pIGFjY2VzcyBwZW5kaWVudGVcbiAgICAgIGlmIChcbiAgICAgICAgIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmXG4gICAgICAgICFpc1Nob3dQcm9jZXNzRmlsZXMgJiZcbiAgICAgICAgIWFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoICYmXG4gICAgICAgICFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgICAgIXN1Y2Nlc3NVcGRhdGVBY2Nlc3MgJiZcbiAgICAgICAgIXByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgICB1cGRhdGVBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBzdWNjZXNzVXBkYXRlLmlkKSB7XG4gICAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29ubmVjdG9yc1NhdmVkRm9yQWdlbnRSZWYuY3VycmVudCA9PT0gc3VjY2Vzc1VwZGF0ZS5pZCkge1xuICAgICAgICAgIGNvbm5lY3RvcnNTYXZlZEZvckFnZW50UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgZmV0Y2hBZ2VudERldGFpbChzdWNjZXNzVXBkYXRlLmlkKVxuICAgICAgICAgICAgLnRoZW4oZnJlc2hBZ2VudCA9PiB7XG4gICAgICAgICAgICAgIHVwZGF0ZUFnZW50KGZyZXNoQWdlbnQpXG4gICAgICAgICAgICAgIHNlbGVjdEFnZW50KGZyZXNoQWdlbnQpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHt9KVxuICAgICAgICB9XG4gICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKSlcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHN1Y2Nlc3NVcGRhdGUsXG4gICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCxcbiAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlLFxuICAgIGhhbmRsZUNsb3NlLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVByb2Nlc3NGaWxlc1RpbWVvdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCAmJiAhaXNTaG93UHJvY2Vzc0ZpbGVzKSByZXR1cm5cblxuICAgIC8vIEFsIGN1bXBsaXJzZSBlbCB0aW1lb3V0IGFzdW1pbW9zIHF1ZSBlbCBndWFyZGFkbyBkZWwgYWdlbnRlIGZ1ZSBleGl0b3NvXG4gICAgLy8gKGVsIHNlcnZlciByZXNwb25kacOzIE9LKSB5IHF1ZSBsb3MgYXJjaGl2b3Mgc2UgZW52aWFyb24gY29ycmVjdGFtZW50ZS5cbiAgICAvLyBTb2xvIHBlcmRpbW9zIGxhIGNvbmZpcm1hY2nDs24gYXNpbmNyw7NuaWNhIGRlbCBXZWJTb2NrZXQgc29icmUgc3VcbiAgICAvLyBwcm9jZXNhbWllbnRvLiBDZXJyYW1vcyB0b2RvIG1vc3RyYW5kbyBlbCBzbmFja2JhciBkZSDDqXhpdG8gcXVlIGh1Ymllc2VcbiAgICAvLyBkaXNwYXJhZG8gZWwgZmx1am8gbm9ybWFsIGRlIMOpeGl0by5cblxuICAgIC8vIEZyZW5vIHBhcmEgcXVlIGxvcyB1c2VFZmZlY3QgZGUgcG9zdC1ndWFyZGFkbyBubyByZS1kaXNwYXJlbiBzbmFja2JhcnNcbiAgICAvLyBvIGNpZXJyZXMgZHVwbGljYWRvcyBjdWFuZG8gc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKGZhbHNlKSBsb3MgZ2F0aWxsZS5cbiAgICBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50ID0gdHJ1ZVxuXG4gICAgaWYgKG1vZGFsVmFsdWVzLmlzRWRpdGluZyAmJiBzdWNjZXNzVXBkYXRlKSB7XG4gICAgICB1cGRhdGVBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gc3VjY2Vzc1VwZGF0ZS5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgfVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgfSBlbHNlIGlmICghbW9kYWxWYWx1ZXMuaXNFZGl0aW5nICYmIHN1Y2Nlc3NDcmVhdGUpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgIH1cblxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc1NhdmUoKVxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcblxuICAgIGhhbmRsZUNsb3NlKClcbiAgfSwgW1xuICAgIGlzU2hvd1Byb2Nlc3NGaWxlcyxcbiAgICBtb2RhbFZhbHVlcy5pc0VkaXRpbmcsXG4gICAgc3VjY2Vzc1VwZGF0ZSxcbiAgICBzdWNjZXNzQ3JlYXRlLFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGUsXG4gICAgcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc1NhdmUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBoYW5kbGVDbG9zZSxcbiAgXSlcblxuICBjb25zdCB3ZWJTb2NrZXRGdW5jdGlvbiA9ICh7IG1vZGVsX2RhdGE6IG1vZGVsRGF0YSB9OiB7IG1vZGVsX2RhdGE6IGFueSB9KSA9PiB7XG4gICAgY29uc3QgZmlsZVN0YXR1cyA9IG1vZGVsRGF0YVxuICAgIGlmIChmaWxlU3RhdHVzLnN0YXR1cyA9PT0gJ2RvbmUnIHx8IGZpbGVTdGF0dXMuc3RhdHVzID09PSAnZmFpbGVkJykge1xuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRLbm93bGVkZ2UgPSBwcmV2Lmtub3dsZWRnZS5tYXAoZmlsZSA9PiB7XG4gICAgICAgICAgaWYgKGZpbGUubmFtZSA9PT0gZmlsZVN0YXR1cy5maWxlbmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgICAgICAgc3RhdHVzOiBmaWxlU3RhdHVzLnN0YXR1cyxcbiAgICAgICAgICAgICAgaWQ6IGZpbGVTdGF0dXMua25vd2xlZGdlX2Jhc2VfaWQgfHwgZmlsZS5pZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZpbGVcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgaGFzUGVuZGluZ0ZpbGVzID0gdXBkYXRlZEtub3dsZWRnZS5zb21lKGZpbGUgPT4gZmlsZS5zdGF0dXMgPT09ICdwZW5kaW5nJylcbiAgICAgICAgY29uc3QgaGFzRXJyb3JGaWxlcyA9IHVwZGF0ZWRLbm93bGVkZ2Uuc29tZShmaWxlID0+IGZpbGUuc3RhdHVzID09PSAnZmFpbGVkJylcbiAgICAgICAgaWYgKGhhc0Vycm9yRmlsZXMgJiYgIWhhc1BlbmRpbmdGaWxlcykge1xuICAgICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG4gICAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcihcbiAgICAgICAgICAgIG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWRXaXRoRmlsZXNFcnJvcicpIDogdCgnY29uZmlybUFnZW50V2l0aEZpbGVzRXJyb3InKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIGlmICghaGFzUGVuZGluZ0ZpbGVzICYmICFoYXNFcnJvckZpbGVzKSB7XG4gICAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyhmYWxzZSlcblxuICAgICAgICAgIC8vIFNpIGhhYsOtYSBhY2Nlc3MgcGVuZGllbnRlIHkgeWEgZXN0YWJhIG1hbmVqYWRvLCBmb3J6YXIgcXVlIGVsIHVzZUVmZmVjdCBkZSBhY2Nlc3Mgc2UgZWplY3V0ZSBkZSBudWV2b1xuICAgICAgICAgIGlmIChhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMgJiYgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRGaWxlc1Byb2Nlc3NlZChwcmV2Q291bnQgPT4gcHJldkNvdW50ICsgMSlcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnICYmXG4gICAgICAgICAgICAhYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICAgICAgICAhZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTaSBlcyBjcmVhY2nDs24gc2luIGFjY2VzaWJpbGlkYWQsIG1hcmNhciBxdWUgbG9zIGFyY2hpdm9zIHRlcm1pbmFyb25cbiAgICAgICAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgICAgIHNldEZpbGVzUHJvY2Vzc2VkKHByZXZDb3VudCA9PiBwcmV2Q291bnQgKyAxKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAga25vd2xlZGdlOiB1cGRhdGVkS25vd2xlZGdlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUgJiYgIWlzTG9hZGluZ0tub3dsZWRnZSAmJiAhZXJyb3JLbm93bGVkZ2UpIHtcbiAgICAgIC8vIFNvbG8gY2VycmFyIHNpIE5PIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvc1xuICAgICAgaWYgKGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50IHx8IGlzU2hvd1Byb2Nlc3NGaWxlcyB8fCBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8vIFNpIGVsIGxvYWRlciBzZSBjZXJyw7MgcG9yIHRpbWVvdXQsIG5vIG1vc3RyYXIgc25hY2tiYXIgZGUgw6l4aXRvIG5pIGNlcnJhclxuICAgICAgaWYgKHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG4gICAgaWYgKGVycm9yS25vd2xlZGdlKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKFxuICAgICAgICBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdjb25maXJtQWdlbnRVcGRhdGVkV2l0aEZpbGVzRXJyb3InKSA6IHQoJ2NvbmZpcm1BZ2VudFdpdGhGaWxlc0Vycm9yJylcbiAgICAgIClcbiAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgfVxuICB9LCBbc3VjY2Vzc0tub3dsZWRnZURlbGV0ZSwgaXNMb2FkaW5nS25vd2xlZGdlLCBlcnJvcktub3dsZWRnZSwgaXNTaG93UHJvY2Vzc0ZpbGVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcblxuICAgIC8vIFNpIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvcywgZXNwZXJhciBhIHF1ZSB0ZXJtaW5lblxuICAgIGlmIChjb250ZXh0Lmhhc0FjdGlvbkZpbGVzICYmIChoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCB8fCBpc1Nob3dQcm9jZXNzRmlsZXMpKSB7XG4gICAgICAvLyBTaSBzdWNjZXNzVXBkYXRlQWNjZXNzIGVzdMOhIGFjdGl2bywgbWFyY2FyIGNvbW8gbWFuZWphZG8gcGVybyBOTyByZXNldGVhciBoYXN0YSBxdWUgdGVybWluZW4gbG9zIGFyY2hpdm9zXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2VzcyAmJiAhYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNpIHlhIGZ1ZSBtYW5lamFkbyB5IG5vIGhheSBhcmNoaXZvcyBwZW5kaWVudGVzLCBlamVjdXRhciBlbCBjaWVycmVcbiAgICBpZiAoYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ICYmIGNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiYgY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJykge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2Vzcykge1xuICAgICAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFzdWNjZXNzVXBkYXRlQWNjZXNzKSB7XG4gICAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG5cbiAgICBpZiAoY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJykge1xuICAgICAgLy8gU2kgaGF5IGFyY2hpdm9zLCBlbCBhZ2VudGUgeWEgZnVlIGFncmVnYWRvIHkgZWwgdG9nZ2xlIHlhIHNlIGhpem8gZW4gc3VjY2Vzc0NyZWF0ZVxuICAgICAgLy8gU29sbyBuZWNlc2l0YW1vcyBjZXJyYXIgZWwgbW9kYWxcbiAgICAgIGlmIChjb250ZXh0Lmhhc0FjdGlvbkZpbGVzKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBmdWUgY3JlYWRvIGNvbiBmYXZvcml0bywgbmVjZXNpdGFtb3Mgb3JkZW5hciBkZXNwdcOpcyBkZSBhZ3JlZ2FybG9cbiAgICAgIGNvbnN0IGFnZW50VG9BZGQgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlID8geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9IDogc3VjY2Vzc0NyZWF0ZVxuXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgYWRkQWdlbnQoYWdlbnRUb0FkZClcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50VG9BZGQpXG5cbiAgICAgIC8vIFNpIHRpZW5lIGZhdm9yaXRvLCBoYWNlciB0b2dnbGUgeSBhY3R1YWxpemFyIGVzdGFkbyBhbnRlcyBkZSBjZXJyYXJcbiAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFRvQWRkLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAvLyBDZXJyYXIgZGVzcHXDqXMgZGUgcXVlIGVsIHRvZ2dsZSBjb21wbGV0ZSB5IGFjdHVhbGljZSBlbCBlc3RhZG9cbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAndXBkYXRlJykge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWQnKSlcbiAgICAgIHVwZGF0ZUFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBzdWNjZXNzVXBkYXRlLmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICB9XG4gICAgICByZXNldFN1Y2Nlc3NVcGRhdGUoKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cblxuICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgIH1cbiAgfSwgW3N1Y2Nlc3NVcGRhdGVBY2Nlc3MsIGZpbGVzUHJvY2Vzc2VkXSlcblxuICAvLyB1c2VFZmZlY3QgcGFyYSBtYW5lamFyIGVsIGNpZXJyZSBkZWwgbW9kYWwgY3VhbmRvIHRlcm1pbmFuIGxvcyBhcmNoaXZvcyBlbiBjcmVhY2nDs24gc2luIGFjY2VzaWJpbGlkYWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50XG5cbiAgICAvLyBTb2xvIHByb2Nlc2FyIHNpOlxuICAgIC8vIC0gRXMgdW5hIG9wZXJhY2nDs24gZGUgY3JlYWNpw7NuXG4gICAgLy8gLSBObyBoYXkgYWNjZXNpYmlsaWRhZCBwZW5kaWVudGVcbiAgICAvLyAtIExvcyBhcmNoaXZvcyB0ZXJtaW5hcm9uIGRlIHByb2Nlc2Fyc2VcbiAgICAvLyAtIEVsIGFnZW50ZSBmdWUgY3JlYWRvIGV4aXRvc2FtZW50ZVxuICAgIC8vIC0gQcO6biBubyBzZSBoYSBjZXJyYWRvIGVsIG1vZGFsXG4gICAgaWYgKFxuICAgICAgY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJyAmJlxuICAgICAgIWNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCAmJlxuICAgICAgc3VjY2Vzc0NyZWF0ZSAmJlxuICAgICAgIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmXG4gICAgICAhaXNTaG93UHJvY2Vzc0ZpbGVzXG4gICAgKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFtYmnDqW4gbWFuZWphciBlbCBjYXNvIGN1YW5kbyBoYXkgYWNjZXNpYmlsaWRhZCB5IGFyY2hpdm9zIHRlcm1pbmFyb25cbiAgICBpZiAoXG4gICAgICBjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnICYmXG4gICAgICBjb250ZXh0Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgJiZcbiAgICAgIHN1Y2Nlc3NDcmVhdGUgJiZcbiAgICAgICFoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCAmJlxuICAgICAgIWlzU2hvd1Byb2Nlc3NGaWxlc1xuICAgICkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2Vzcykge1xuICAgICAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGZpbGVzUHJvY2Vzc2VkLFxuICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgc3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBpc1Nob3dQcm9jZXNzRmlsZXMsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBoYW5kbGVDbG9zZSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1Nob3dQcm9jZXNzRmlsZXMpIHtcbiAgICAgIGNvbnN0IGNoYW5uZWwgPSBga25vd2xlZGdlLWJhc2Uuc3RhdHVzOiR7YWdlbnRCeUlkID8gYWdlbnRCeUlkPy5pZCA6IHN1Y2Nlc3NDcmVhdGU/LmlkPy50b1N0cmluZygpfWBcbiAgICAgIGlmICgkX3NjKSB7XG4gICAgICAgIGlmIChpc1N1YnNjcmliZWQpIHtcbiAgICAgICAgICAkX3NjPy5zdWJzY3JpYmVIYW5kbGVyKGNoYW5uZWwsIHdlYlNvY2tldEZ1bmN0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG1vZGVsRGF0YSA9IHtcbiAgICAgICAgICAgIG1vZGVsX2hhc2g6IGNoYW5uZWwsXG4gICAgICAgICAgICBhY3Rpb246ICRfc2M/LmFjdGlvblR5cGU/LlNVQlNDUklCRSxcbiAgICAgICAgICB9XG4gICAgICAgICAgJF9zYz8udXBkYXRlQ29ubmVjdGlvbk1vZGVsKG1vZGVsRGF0YSwgY2hhbm5lbCwgdXNlciwgdXNlciwgJF9zYy5jaGFubmVsVHlwZT8uTU9ERUxfQ0hBTk5FTClcbiAgICAgICAgICBzZXRJc1N1YnNjcmliZWQodHJ1ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzU2hvd1Byb2Nlc3NGaWxlcywgaXNTdWJzY3JpYmVkLCAkX3NjLCBhZ2VudEJ5SWQsIHN1Y2Nlc3NDcmVhdGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4gfHwgIWFnZW50TW9kZWxzLmxlbmd0aCkgcmV0dXJuXG4gICAgaWYgKGFnZW50TG9hZGluZyAmJiAhcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIGNvbnN0IGFwcGx5RWRpdGluZ0FnZW50ID0gKHNvdXJjZTogYW55KSA9PiB7XG4gICAgICBpZiAoc291cmNlLnR5cGUgIT09ICdjdXN0b20nIHx8ICF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICB9LCAzMDAwKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIDsoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgc2VsZWN0ZWRDb25uZWN0b3JzOiBzdHJpbmdbXSA9IFtdXG4gICAgICAgIGxldCBjb25uZWN0b3JTdGF0ZXM6IEFnZW50Q29ubmVjdG9yU25hcHNob3RbXSA9IFtdXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjb25uZWN0b3JzID0gYXdhaXQgZ2V0QWdlbnRDb25uZWN0b3JzKHNvdXJjZS5pZC50b1N0cmluZygpKVxuICAgICAgICAgIHNlbGVjdGVkQ29ubmVjdG9ycyA9IGNvbm5lY3RvcnNcbiAgICAgICAgICAgIC5maWx0ZXIoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5lbmFibGVkX2Zvcl9hZ2VudClcbiAgICAgICAgICAgIC5tYXAoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5zbHVnKVxuICAgICAgICAgIGNvbm5lY3RvclN0YXRlcyA9IGNvbm5lY3RvcnMubWFwKGNvbm5lY3RvciA9PiAoe1xuICAgICAgICAgICAgc2x1ZzogY29ubmVjdG9yLnNsdWcsXG4gICAgICAgICAgICB1c2VyX2F1dGhvcml6ZWQ6IGNvbm5lY3Rvci51c2VyX2F1dGhvcml6ZWQsXG4gICAgICAgICAgICByZXF1aXJlc19hdXRoOiBjb25uZWN0b3IucmVxdWlyZXNfYXV0aCxcbiAgICAgICAgICAgIGVuYWJsZWRfZm9yX2FnZW50OiBjb25uZWN0b3IuZW5hYmxlZF9mb3JfYWdlbnQsXG4gICAgICAgICAgfSkpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgYWdlbnQgY29ubmVjdG9yczonLCBlcnJvcilcbiAgICAgICAgfVxuXG4gICAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IGFnZW50VmFsdWVzVG9TZXQgPSBidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbChzb3VyY2UsIGFnZW50TW9kZWxzLCBwcmV2KVxuICAgICAgICAgIGNvbnN0IG5leHRWYWx1ZXMgPSB7XG4gICAgICAgICAgICAuLi5hZ2VudFZhbHVlc1RvU2V0LFxuICAgICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgICAuLi5hZ2VudFZhbHVlc1RvU2V0LmFjdGlvbnMsXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ29ubmVjdG9ycyxcbiAgICAgICAgICAgICAgY29ubmVjdG9yU3RhdGVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgICAgZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQgPSBuZXh0VmFsdWVzXG4gICAgICAgICAgcmV0dXJuIG5leHRWYWx1ZXNcbiAgICAgICAgfSlcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICBpZiAocGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBzZXRTZWN0aW9uKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50KVxuICAgICAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9KSgpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IHByZWZldGNoZWQgPSBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnRcbiAgICBpZiAocHJlZmV0Y2hlZCkge1xuICAgICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYXBwbHlFZGl0aW5nQWdlbnQocHJlZmV0Y2hlZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChhZ2VudEJ5SWQgJiYgIWFnZW50TG9hZGluZyAmJiBhZ2VudE1vZGVscy5sZW5ndGgpIHtcbiAgICAgIGFwcGx5RWRpdGluZ0FnZW50KGFnZW50QnlJZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNMb2FkaW5nICYmICFhZ2VudExvYWRpbmcgJiYgIWFnZW50QnlJZCAmJiAhbW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSB7XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgYWlNb2RlbDogYWdlbnRNb2RlbHNbMF0sXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9XG4gICAgLy8gTm8gaW5jbHVpciBgaXNMb2FkaW5nYCBlbiBkZXBzOiBhbCB0ZXJtaW5hciBnZXRBZ2VudENvbm5lY3RvcnMgc2UgaGFjZSBzZXRJc0xvYWRpbmcoZmFsc2UpIHlcbiAgICAvLyBzZSByZS1lamVjdXRhcsOtYSBlbCBlZmVjdG8gY29uIGVsIG1pc21vIGFnZW50QnlJZCwgZHVwbGljYW5kbyBsYSBxdWVyeSBkZSBjb25uZWN0b3JzLlxuICB9LCBbYWdlbnRCeUlkLCBpc09wZW4sIGFnZW50TG9hZGluZywgYWdlbnRNb2RlbHM/Lmxlbmd0aCwgbW9kYWxWYWx1ZXMuaXNFZGl0aW5nLCB0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChlcnJvckdldEFnZW50QnlJZCkge1xuICAgICAgaWYgKGVycm9yR2V0QWdlbnRCeUlkID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIikge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgfSwgMzAwMClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKGVycm9yR2V0QWdlbnRCeUlkKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH0sIDMwMDApXG4gICAgfVxuICB9LCBbZXJyb3JHZXRBZ2VudEJ5SWRdKVxuXG4gIGNvbnN0IHNob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghbW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmNsaWVudHMgfHwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5jbGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNsaWVudHMuc29tZShjbGllbnQgPT4gY2xpZW50LmlzX2FjdGl2ZSA9PT0gZmFsc2UgfHwgY2xpZW50LmlzX2RlbGV0ZWQgPT09IHRydWUpXG4gIH0sIFttb2RhbFZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY2xpZW50c10pXG5cbiAgY29uc3QgaXNTYXZlQnV0dG9uRGlzYWJsZWQgPVxuICAgICF2YWxpZGF0ZUZpZWxkVmFsdWVzKG1vZGFsVmFsdWVzKSB8fFxuICAgIHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSB8fFxuICAgIGlzTG9hZGluZyB8fFxuICAgIGlzTG9hZGluZ0tub3dsZWRnZSB8fFxuICAgIGlzTG9hZGluZ0NyZWF0ZSB8fFxuICAgIGlzTG9hZGluZ1VwZGF0ZUFjY2VzcyB8fFxuICAgIHNob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyB8fFxuICAgIGhhc0ZpbGVFcnJvcnNcblxuICBjb25zdCBoYW5kbGVUb2dnbGVGYXZvcml0ZSA9ICgpID0+IHtcbiAgICBpZiAobW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlkKSB7XG4gICAgICAvLyBFeGlzdGluZyBhZ2VudFxuICAgICAgdG9nZ2xlRmF2b3JpdGUoXG4gICAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQsXG4gICAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgICAgICBpc19mYXZvcml0ZTogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAvLyBBY3R1YWxpemFyIGVsIGVzdGFkbyBkZSBhZ2VudGVzIHkgb3JkZW5hciBjdWFuZG8gc2UgaGFjZSBkZXNkZSBlbCBtb2RhbCBBQk1cbiAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlKHVwZGF0ZWRBZ2VudCwgdHJ1ZSlcbiAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0RmF2b3JpdGUsIHtcbiAgICAgICAgICAgIG9wdGlvbjogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlID8gJ2FkZCcgOiAncmVtb3ZlJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIG1vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDcmVhdGUgbmV3IGFnZW50XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgaXNfZmF2b3JpdGU6ICFwcmV2LmdlbmVyYWwuaXNfZmF2b3JpdGUsXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWlzT3BlbiB8fCAoIXVzZXJQZXJtaXNzaW9ucz8uY3JlYXRlICYmICF1c2VyUGVybWlzc2lvbnM/LmVkaXQgJiYgIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKFxuICAgIDxCYWNrZHJvcCB6SW5kZXg9e2FibUFnZW50TW9kYWxaSW5kZXh9IG9uQ2xpY2s9e2hhbmRsZUJhY2tkcm9wQ2xpY2t9PlxuICAgICAgPFNDQUFNV3JhcHBlciByZWY9e21vZGFsUmVmfSB0YWJJbmRleD17LTF9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTQ0FBTVdyYXBwZXJTcGlubmVyPlxuICAgICAgICAgICAgPFNDQUFNV3JhcHBlclNwaW5uZXJDb250ZW50PlxuICAgICAgICAgICAgICA8U3Bpbm5lckxvdHRpZSBzaXplPVwiODBweFwiIGNvbG9yPVwicHJpbWFyeVwiIC8+XG4gICAgICAgICAgICA8L1NDQUFNV3JhcHBlclNwaW5uZXJDb250ZW50PlxuICAgICAgICAgIDwvU0NBQU1XcmFwcGVyU3Bpbm5lcj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAge2lzU2hvd1Byb2Nlc3NGaWxlcyAmJiBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA/IChcbiAgICAgICAgICAgICAgPEFibUxvYWRlckZpbGVzXG4gICAgICAgICAgICAgICAgYXR0YWNobWVudHM9e21vZGFsVmFsdWVzLmtub3dsZWRnZX1cbiAgICAgICAgICAgICAgICBsYWJlbD17dChgcHJvY2Vzc2luZ0tub3dsZWRnZS4ke21vZGFsVmFsdWVzLmlzRWRpdGluZyA/ICdkZXNjcmlwdGlvblVwZGF0ZScgOiAnZGVzY3JpcHRpb25DcmVhdGUnfWApfVxuICAgICAgICAgICAgICAgIG9uVGltZW91dD17aGFuZGxlUHJvY2Vzc0ZpbGVzVGltZW91dH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyTGVmdD5cbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gdCgnZ2VuZXJhbFNlY3Rpb24ucmVtb3ZlRmF2b3JpdGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2dlbmVyYWxTZWN0aW9uLmFkZEZhdm9yaXRlJylcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJGYXZvcml0ZSBvbkNsaWNrPXtoYW5kbGVUb2dnbGVGYXZvcml0ZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhclxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MjB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MjB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXttb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnI2E2YTZhNid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9e21vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZSA/ICcjRkZDNjI0JyA6ICdub25lJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXttb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGUgPyAnJyA6ICdzdGFyLWZhdm9yaXRlLWljb24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyRmF2b3JpdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyVGl0bGU+e21vZGFsVmFsdWVzPy5pc0VkaXRpbmcgPyB0KCdlZGl0QWdlbnQnKSA6IHQoJ25ld0FnZW50Jyl9PC9TQ0FBTUhlYWRlclRpdGxlPlxuICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckxlZnQ+XG4gICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJDbG9zZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmNhbmNlbE1vZGFsKVxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTG9hZGluZyB8fCBpc0xvYWRpbmdLbm93bGVkZ2UgfHwgaXNMb2FkaW5nQ3JlYXRlIHx8IGlzTG9hZGluZ1VwZGF0ZUFjY2Vzc31cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiI2E2YTZhNlwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxTQ0FBTUNvbnRlbnQgaGFzU2Nyb2xsPXtzZWN0aW9uICE9PSAna25vd2xlZGdlJ30+XG4gICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFyPlxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVxuICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnZ2VuZXJhbCd9XG4gICAgICAgICAgICAgICAgICAgICAgJGluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2dlbmVyYWwnKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1nZW5lcmFsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdnZW5lcmFsJyA/ICdyZ2JhKDYzLCA2MywgNjMsIDEpJyA6ICdyZ2JhKDE2NiwgMTY2LCAxNjYsIDEpJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtVGl0bGUgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdnZW5lcmFsJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgnZ2VuZXJhbFNlY3Rpb24udGl0bGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtPlxuXG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdrbm93bGVkZ2UnfVxuICAgICAgICAgICAgICAgICAgICAgICRpbmRleD17MX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdrbm93bGVkZ2UnKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1rbm93bGVkZ2VcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPEJyYWluSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdrbm93bGVkZ2UnID8gJ3JnYmEoNjMsIDYzLCA2MywgMSknIDogJ3JnYmEoMTY2LCAxNjYsIDE2NiwgMSknfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1UaXRsZSBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2tub3dsZWRnZSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2tub3dsZWRnZVNlY3Rpb24udGl0bGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtPlxuXG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdhY3Rpb25zJ31cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdhY3Rpb25zJyl9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhYm0tYWdlbnQtbW9kYWwtYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Q2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtgJHtzZWN0aW9uID09PSAnYWN0aW9ucycgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnYWN0aW9ucyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2FjdGlvbnNTZWN0aW9uLnRpdGxlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbT5cblxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVxuICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eSd9XG4gICAgICAgICAgICAgICAgICAgICAgJGluZGV4PXsyfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2FjY2Vzc2liaWxpdHknKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1hY2Nlc3NpYmlsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmlsaXR5SWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdhY2Nlc3NpYmlsaXR5JyA/ICdyZ2JhKDYzLCA2MywgNjMsIDEpJyA6ICdyZ2JhKDE2NiwgMTY2LCAxNjYsIDEpJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtVGl0bGUgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdhY2Nlc3NpYmlsaXR5J30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24udGl0bGVUYWInKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICB7c2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jbGllbnRzRXJyb3InKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1FcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgY29sb3I9XCIjQzcwNTA1XCIgd2lkdGg9XCIxNnB4XCIgaGVpZ2h0PVwiMTZweFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbUVycm9yPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbT5cbiAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFyPlxuICAgICAgICAgICAgICAgICAge1NlY3Rpb25CeUtleVtzZWN0aW9uXSh7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogbW9kYWxWYWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiBoYW5kbGVTZXRBZ2VudFZhbHVlc0J5S2V5cyxcbiAgICAgICAgICAgICAgICAgICAgYWdlbnRNb2RlbHMsXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0tub3dsZWRnZTogW10sXG4gICAgICAgICAgICAgICAgICAgIG5ld0tub3dsZWRnZTogW10sXG4gICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlRXhpc3RpbmdLbm93bGVkZ2U6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgICAgICBvblJlbW92ZU5ld0tub3dsZWRnZTogKCkgPT4ge30sXG4gICAgICAgICAgICAgICAgICAgIG9uRmlsZUVycm9yQ2hhbmdlOiBzZXRIYXNGaWxlRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwWkluZGV4LFxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9TQ0FBTUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPFNDQUFNRm9vdGVyIGlzRWRpdGluZz17ISFtb2RhbFZhbHVlcz8uaXNFZGl0aW5nICYmICEhdXNlclBlcm1pc3Npb25zPy5kZWxldGV9PlxuICAgICAgICAgICAgICAgICAgeyEhbW9kYWxWYWx1ZXM/LmlzRWRpdGluZyAmJlxuICAgICAgICAgICAgICAgICAgICAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlICYmXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1EZWxldGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbldpdGhJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93TW9kYWxEZWxldGUodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTG9hZGluZyB8fCBpc0xvYWRpbmdLbm93bGVkZ2UgfHwgaXNMb2FkaW5nQ3JlYXRlIHx8IGlzTG9hZGluZ1VwZGF0ZUFjY2Vzc31cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFdyYXBwZXJDZW50ZXJJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUcmFzaCBjb2xvcj1cIiMwOGNcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2RlbGV0ZUFnZW50Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvV3JhcHBlckNlbnRlckljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1EZWxldGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiAnMjRweCcgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNhdmVCdXR0b24gaXNEaXNhYmxlZD17aXNTYXZlQnV0dG9uRGlzYWJsZWR9PlxuICAgICAgICAgICAgICAgICAgICAgIDxDVUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbihudWxsLCAnY3JlYXRlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTYXZlQnV0dG9uRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge21vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ3NhdmVDaGFuZ2VzJykgOiB0KCdjcmVhdGVBZ2VudExhYmVsQnV0dG9uJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNhdmVCdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1NDQUFNRm9vdGVyPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDQUFNV3JhcHBlcj5cbiAgICAgIHtzaG93TW9kYWxEZWxldGUgJiYgKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNb2RhbERlbGV0ZShmYWxzZSl9XG4gICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb246IChwcm9wczogYW55KSA9PiBoYW5kbGVDb25maXJtQWN0aW9uKHByb3BzLCAnZGVsZXRlJyksXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjaGF0PXt7IHRpdGxlOiBtb2RhbFZhbHVlcy5nZW5lcmFsLm5hbWUsIGlkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkIH19XG4gICAgICAgICAgYWN0aW9uPVwiYWdlbnRcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L0JhY2tkcm9wPixcbiAgICBzZWxlY3RvclxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxRQUFRLE9BQU87QUFDekUsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsYUFBYSxRQUFRLHVEQUF1RDtBQUNyRixTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLHVCQUF1QixRQUFRLDRFQUE0RTtBQUNwSCxTQUFTQyxRQUFRLFFBQVEsc0JBQXNCO0FBQy9DLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsaUJBQWlCLEVBQUVDLFNBQVMsUUFBUSxtQkFBbUI7QUFDaEUsU0FBU0MsYUFBYSxRQUFRLDRDQUE0QztBQUUxRSxTQUFTQyxlQUFlLFFBQVEsNENBQTRDO0FBRTVFLFNBQVNDLG1CQUFtQixFQUFFQyxpQkFBaUIsRUFBRUMsbUJBQW1CLFFBQVEsNEJBQTRCO0FBRXhHLFNBQ0VDLFlBQVksRUFD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RCxLQUFLO29CQUFDa2UsS0FBSyxFQUFDLE1BQU07b0JBQUNLLEtBQUssRUFBRSxFQUFHO29CQUFDQyxNQUFNLEVBQUU7a0JBQUcsQ0FBRSxDQUFDLEVBQzVDbFcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFBQSxDQUNBO2NBQUMsQ0FDWjtZQUFDLENBQ00sQ0FDcEIsZUFDSG5GLElBQUE7Y0FBS29XLEtBQUssRUFBRTtnQkFBRStGLE9BQU8sRUFBRSxNQUFNO2dCQUFFQyxHQUFHLEVBQUU7Y0FBTyxDQUFFO2NBQUF4QixRQUFBLGVBQzNDNWEsSUFBQSxDQUFDeEIsZUFBZTtnQkFBQzZkLFVBQVUsRUFBRWpDLG9CQUFxQjtnQkFBQVEsUUFBQSxlQUNoRDVhLElBQUEsQ0FBQ3RELFFBQVE7a0JBQ1A2ZSxPQUFPLEVBQUMsV0FBVztrQkFDbkJwWSxJQUFJLEVBQUMsUUFBUTtrQkFDYndYLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVE7b0JBQ2I3RyxvQkFBbUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2tCQUNyQyxDQUFFO2tCQUNGNEgsUUFBUSxFQUFFdEIsb0JBQXFCO2tCQUFBUSxRQUFBLEVBRTlCOVIsV0FBVyxDQUFDdEksU0FBUyxHQUFHMkUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHQSxDQUFDLENBQUMsd0JBQXdCO2dCQUFDLENBQy9EO2NBQUMsQ0FDSTtZQUFDLENBQ2YsQ0FBQztVQUFBLENBQ0ssQ0FBQztRQUFBLENBQ2Q7TUFDSCxDQUNEO0lBQ0gsQ0FDVyxDQUFDLEVBQ2QrQyxlQUFlLGlCQUNkbEksSUFBQSxDQUFDVixtQkFBbUI7TUFDbEJnZCxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtRQUFBLE9BQVFuVSxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7TUFBQSxDQUFDO01BQ3pDb1UsUUFBUSxFQUFFO1FBQ1J6SSxtQkFBbUIsRUFBRSxTQUFyQkEsbUJBQW1CQSxDQUFHalMsS0FBVTtVQUFBLE9BQUtpUyxvQkFBbUIsQ0FBQ2pTLEtBQUssRUFBRSxRQUFRLENBQUM7UUFBQTtNQUMzRSxDQUFFO01BQ0ZvUyxJQUFJLEVBQUU7UUFBRWtILEtBQUssRUFBRXJTLFdBQVcsQ0FBQ3BJLE9BQU8sQ0FBQ0MsSUFBSTtRQUFFTSxFQUFFLEVBQUU2SCxXQUFXLENBQUNwSSxPQUFPLENBQUNPO01BQUcsQ0FBRTtNQUN0RWlULE1BQU0sRUFBQztJQUFPLENBQ2YsQ0FDRjtFQUFBLENBQ08sQ0FBQyxFQUNYdE8sUUFDRixDQUFDO0FBQ0gsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==