@projectcor/maia-components 2.11.100-5 → 2.11.100-6

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.
@@ -531,32 +531,113 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref6) {
531
531
  var handleSelectOption = useCallback(function (option) {
532
532
  changeProject(option);
533
533
  }, [changeProject]);
534
- var handleSuggestionClick = useCallback(function (messageId, suggestion) {
535
- if (!(suggestion !== null && suggestion !== void 0 && suggestion.trim())) return;
536
- if (selectedSuggestionMessageIds[messageId]) return;
537
- var isMarketplaceGlobalAgent = isMaiakerAgent(agent);
538
- event(EVENTS.aiChatSuggestedAnswer, {
539
- agent_type: isMarketplaceGlobalAgent ? 'marketplace' : agent === null || agent === void 0 ? void 0 : agent.type
540
- });
541
- setSelectedSuggestionMessageIds(function (prev) {
542
- return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, messageId, true));
543
- });
544
- var targetMessage = messages.find(function (msg) {
545
- return msg.id === messageId;
546
- });
547
- var isRetrySuggestion = !!(targetMessage !== null && targetMessage !== void 0 && targetMessage.isError) && suggestion === t('chat.retry');
548
- if (isRetrySuggestion) {
549
- var _lastUserMessage = messages.filter(function (msg) {
550
- return msg.role === ChatHistoryRole.USER || msg.user.id === authUser.id.toString();
551
- }).at(-1);
552
- if (_lastUserMessage !== null && _lastUserMessage !== void 0 && _lastUserMessage.message) {
553
- var retryAttachments = Array.isArray(_lastUserMessage.attachments) ? _lastUserMessage.attachments : Array.isArray(_lastUserMessage.sources) ? _lastUserMessage.sources : [];
554
- sendMessage(_lastUserMessage.message, retryAttachments);
555
- return;
556
- }
557
- }
558
- sendMessage(suggestion);
559
- }, [sendMessage, selectedSuggestionMessageIds, event, agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.name, agent === null || agent === void 0 ? void 0 : agent.type, messages, t, authUser.id]);
534
+ var handleSuggestionClick = useCallback(/*#__PURE__*/function () {
535
+ var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(messageId, suggestion) {
536
+ var targetMessage, isRetrySuggestion, started, _lastUserMessage, _yield$sendMessage, retryAttachments, _yield$sendMessage2, isMarketplaceGlobalAgent, _t2, _t3, _t4, _t5, _t6, _t7;
537
+ return _regeneratorRuntime.wrap(function (_context2) {
538
+ while (1) switch (_context2.prev = _context2.next) {
539
+ case 0:
540
+ if (suggestion !== null && suggestion !== void 0 && suggestion.trim()) {
541
+ _context2.next = 1;
542
+ break;
543
+ }
544
+ return _context2.abrupt("return");
545
+ case 1:
546
+ if (!selectedSuggestionMessageIds[messageId]) {
547
+ _context2.next = 2;
548
+ break;
549
+ }
550
+ return _context2.abrupt("return");
551
+ case 2:
552
+ targetMessage = messages.find(function (msg) {
553
+ return msg.id === messageId;
554
+ });
555
+ isRetrySuggestion = !!(targetMessage !== null && targetMessage !== void 0 && targetMessage.isError) && suggestion === t('chat.retry');
556
+ started = false;
557
+ if (!isRetrySuggestion) {
558
+ _context2.next = 8;
559
+ break;
560
+ }
561
+ _lastUserMessage = messages.filter(function (msg) {
562
+ return msg.role === ChatHistoryRole.USER || msg.user.id === authUser.id.toString();
563
+ }).at(-1);
564
+ if (!(_lastUserMessage !== null && _lastUserMessage !== void 0 && _lastUserMessage.message)) {
565
+ _context2.next = 7;
566
+ break;
567
+ }
568
+ retryAttachments = Array.isArray(_lastUserMessage.attachments) ? _lastUserMessage.attachments : Array.isArray(_lastUserMessage.sources) ? _lastUserMessage.sources : [];
569
+ _context2.next = 3;
570
+ return sendMessage(_lastUserMessage.message, retryAttachments);
571
+ case 3:
572
+ _t3 = _yield$sendMessage = _context2.sent;
573
+ _t2 = _t3 !== null;
574
+ if (!_t2) {
575
+ _context2.next = 4;
576
+ break;
577
+ }
578
+ _t2 = _yield$sendMessage !== void 0;
579
+ case 4:
580
+ if (!_t2) {
581
+ _context2.next = 5;
582
+ break;
583
+ }
584
+ _t4 = _yield$sendMessage;
585
+ _context2.next = 6;
586
+ break;
587
+ case 5:
588
+ _t4 = false;
589
+ case 6:
590
+ started = _t4;
591
+ case 7:
592
+ _context2.next = 13;
593
+ break;
594
+ case 8:
595
+ _context2.next = 9;
596
+ return sendMessage(suggestion);
597
+ case 9:
598
+ _t6 = _yield$sendMessage2 = _context2.sent;
599
+ _t5 = _t6 !== null;
600
+ if (!_t5) {
601
+ _context2.next = 10;
602
+ break;
603
+ }
604
+ _t5 = _yield$sendMessage2 !== void 0;
605
+ case 10:
606
+ if (!_t5) {
607
+ _context2.next = 11;
608
+ break;
609
+ }
610
+ _t7 = _yield$sendMessage2;
611
+ _context2.next = 12;
612
+ break;
613
+ case 11:
614
+ _t7 = false;
615
+ case 12:
616
+ started = _t7;
617
+ case 13:
618
+ if (started) {
619
+ _context2.next = 14;
620
+ break;
621
+ }
622
+ return _context2.abrupt("return");
623
+ case 14:
624
+ isMarketplaceGlobalAgent = isMaiakerAgent(agent);
625
+ event(EVENTS.aiChatSuggestedAnswer, {
626
+ agent_type: isMarketplaceGlobalAgent ? 'marketplace' : agent === null || agent === void 0 ? void 0 : agent.type
627
+ });
628
+ setSelectedSuggestionMessageIds(function (prev) {
629
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, messageId, true));
630
+ });
631
+ case 15:
632
+ case "end":
633
+ return _context2.stop();
634
+ }
635
+ }, _callee2);
636
+ }));
637
+ return function (_x2, _x3) {
638
+ return _ref7.apply(this, arguments);
639
+ };
640
+ }(), [sendMessage, selectedSuggestionMessageIds, event, agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.name, agent === null || agent === void 0 ? void 0 : agent.type, messages, t, authUser.id]);
560
641
 
561
642
  /**
562
643
  * Actualiza el estado del botón "scroll to bottom" comparando la posición
@@ -856,10 +937,10 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref6) {
856
937
  });
857
938
  }
858
939
  }, [showStreamTurnTimeline, anchorTimelineToApproval, streamTimeline, waitingResponse, isWriting, lastApprovalMessageIndex, messages]);
859
- var renderTimelineContentBlock = useCallback(function (_ref7) {
860
- var text = _ref7.text,
861
- isStreaming = _ref7.isStreaming,
862
- showAssistantHeader = _ref7.showAssistantHeader;
940
+ var renderTimelineContentBlock = useCallback(function (_ref8) {
941
+ var text = _ref8.text,
942
+ isStreaming = _ref8.isStreaming,
943
+ showAssistantHeader = _ref8.showAssistantHeader;
863
944
  return /*#__PURE__*/_jsxs(SCMessageItemWrapper, {
864
945
  $isAssistant: true,
865
946
  children: [showAssistantHeader && /*#__PURE__*/_jsx(AssistantMessageHeader, {}), /*#__PURE__*/_jsx(SCMessageItemInner, {
@@ -961,4 +1042,4 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref6) {
961
1042
  });
962
1043
  };
963
1044
  export var ChatAIMessages = /*#__PURE__*/React.memo(ChatAIMessagesInner);
964
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIlN0cmVhbWRvd24iLCJjcmVhdGVDb2RlUGx1Z2luIiwiQXJyb3dTbWFsbERvd24iLCJBdHRhY2htZW50Q2FyZCIsIkFwcHJvdmFsQm94IiwiQXR0YWNobWVudFByZXZpZXdNb2RhbCIsIkF0dGFjaG1lbnRDYXJkQXVkaW8iLCJDaGF0SGlzdG9yeVJvbGUiLCJNQUlBX1NUUkVBTURPV05fUkVIWVBFX1BMVUdJTlMiLCJyZW5kZXJUZXh0V2l0aE1lbnRpb25zIiwiaGFzSW5saW5lTWFya2VycyIsImlzTWFpYWtlckFnZW50IiwidXNlVXNlciIsInVzZVQiLCJ1c2VDaGF0TWFuYWdlciIsInVzZVNtb290aFN0cmVhbVRleHQiLCJ1c2VTdHJlYW1pbmdNZXNzYWdlIiwiTG9hZGluZ1RleHQiLCJpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwicmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5IiwiTG9hZGVyIiwidXNlU3RyZWFtVGltZWxpbmUiLCJTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUiLCJzdHJlYW1EZWJ1Z0xvZyIsInN0cmVhbURlYnVnTG9nSGl0bFVpT3ZlcmxhcCIsInN1bW1hcml6ZVRpbWVsaW5lU25hcHNob3QiLCJGYWRlIiwiTWVzc2FnZUZyb21Vc2VyIiwiTWVzc2FnZUZyb21PdGhlciIsIk1lc3NhZ2VDb250ZW50RnJvbVVzZXIiLCJNZXNzYWdlQ29udGVudEZyb21PdGhlciIsIk1lc3NhZ2VGZWVkYmFjayIsIlNDQ0FJTWVzc2FnZVdyYXBwZXIiLCJTY3JvbGxUb0JvdHRvbUJ1dHRvbiIsIlNDTWVzc2FnZXNPdXRlciIsIlNDTWVzc2FnZXNTY3JvbGwiLCJTQ01lc3NhZ2VzSW5uZXIiLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwiU0NBc3Npc3RhbnRBdmF0YXIiLCJTQ01lc3NhZ2VJdGVtV3JhcHBlciIsIlNDTWVzc2FnZUl0ZW1Jbm5lciIsIlNDQXR0YWNobWVudHNSb3ciLCJTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbiIsIkZlZWRiYWNrIiwidXNlR2xvYmFsQ29udGV4dCIsIk1BSUFJY29uIiwiRW50aXR5TGlua0N1c3RvbUxpbmsiLCJnZXRFbnRpdHlMaW5rV3JhcHBlckNsYXNzTmFtZSIsIkNoYXRBSVN1Z2dlc3Rpb25zIiwiQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJkb3dubG9hZEZpbGVGcm9tVXJsIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiY29kZSIsInRoZW1lcyIsIkFzc2lzdGFudEF2YXRhcklubmVyIiwiX3VzZUdsb2JhbENvbnRleHQiLCJhZ2VudCIsImNoaWxkcmVuIiwidHlwZSIsImlzX2xlZ2FjeV9jb250ZXh0Iiwid2lkdGgiLCJoZWlnaHQiLCJlbW9qaSIsIkFzc2lzdGFudEF2YXRhciIsIk1lc3NhZ2VXcmFwcGVyIiwiX3JlZiIsImlzQ3VycmVudFVzZXIiLCJwcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIk1lc3NhZ2VDb21wb25lbnQiLCJfb2JqZWN0U3ByZWFkIiwiTWVzc2FnZUNvbnRlbnRXcmFwcGVyIiwiX3JlZjIiLCJfZXhjbHVkZWQyIiwiTWVzc2FnZUNvbnRlbnRDb21wb25lbnQiLCJNZXNzYWdlT3B0aW9ucyIsIl9yZWYzIiwib3B0aW9ucyIsImhhbmRsZVNlbGVjdE9wdGlvbiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlbGVjdGVkT3B0aW9uIiwic2V0U2VsZWN0ZWRPcHRpb24iLCJoYW5kbGVTZWxlY3QiLCJvcHRpb24iLCJtYXAiLCIkaGFzU2VsZWN0aW9uIiwiJGRpbW1lZCIsImlkIiwib25DbGljayIsIm5hbWUiLCJBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiX3VzZUdsb2JhbENvbnRleHQyIiwiZGlzcGxheU5hbWUiLCJTdHJlYW1pbmdNZXNzYWdlQm9keSIsIl9wcm9wcyRjcmVhdGVBZ2VudEZvbCIsIl9wcm9wcyRzdWdnZXN0aW9ucyIsInN0cmVhbWluZ1RleHQiLCJpc1N0cmVhbWluZyIsIm1lc3NhZ2VJZCIsInJhd1RleHQiLCJtZXNzYWdlIiwid2luRmxhZ3MiLCJ3aW5kb3ciLCJkaXNwbGF5VGV4dCIsImVuYWJsZWQiLCJtYXhDaGFyc1BlckZyYW1lIiwic25hcFRvV29yZEJvdW5kYXJ5Iiwic3RyZWFtTGFnTXMiLCJ0YXJnZXRMYWdNcyIsInN0cmVhbUFkYXB0IiwiYWRhcHRUb0JhY2tlbmRSYXRlIiwic3RyZWFtQnVmZmVyTXMiLCJ0YXJnZXRCdWZmZXJNcyIsInN0cmVhbU1pbkJ1ZmZlciIsIm1pbkJ1ZmZlckNoYXJzIiwic3RyZWFtV2FybXVwTXMiLCJ3YXJtdXBNcyIsImNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiYWdlbnRJZCIsImhhc01lbnRpb25zIiwibWVudGlvbk5vZGVzIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImNsYXNzTmFtZSIsInN0eWxlIiwiZGlzcGxheSIsInBsdWdpbnMiLCJyZWh5cGVQbHVnaW5zIiwiY29tcG9uZW50cyIsImEiLCJsaW5rU2FmZXR5IiwiaXNBbmltYXRpbmciLCJzaGlraVRoZW1lIiwiY29udHJvbHMiLCJ0YWJsZSIsImlzQXNzaXN0YW50IiwiaXNFcnJvciIsImFwcHJvdmFsIiwiY29udGVudCIsInNvdXJjZXMiLCJoYW5kbGVGZWVkYmFjayIsImhhbmRsZUZlZWRiYWNrQ2xpY2siLCJkaXNhYmxlRmVlZGJhY2siLCJzdWdnZXN0aW9ucyIsImxlbmd0aCIsIm9uU2VsZWN0U3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb24iLCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2siLCJkaXNhYmxlZCIsInN1Z2dlc3Rpb25zRGlzYWJsZWQiLCJoaWRkZW4iLCJpc0xhc3RNZXNzYWdlIiwiVGltZWxpbmVTZWdtZW50Qm9keSIsIl9yZWY0IiwidGV4dCIsIk1lc3NhZ2VJdGVtIiwiX3Byb3BzJHByb2plY3RNZXRhZGF0IiwidXNlciIsImF1dGhVc2VyIiwiaXNDaGFuZ2VQcm9qZWN0IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsInJvbGUiLCJhdHRhY2htZW50cyIsImFwcHJvdmFsU3RhdHVzIiwiaGFzU2VsZWN0ZWRTdWdnZXN0aW9uIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJwcmV2aWV3QXR0YWNobWVudCIsInNldFByZXZpZXdBdHRhY2htZW50IiwiVVNFUiIsInRvU3RyaW5nIiwiQVNTSVNUQU5UIiwiaXNTdHJlYW1pbmdQbGFjZWhvbGRlciIsImlzQWN0aXZlU3RyZWFtaW5nIiwiaXNUaGlua2luZyIsIm1lc3NhZ2VBdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsImhhbmRsZUF0dGFjaG1lbnRDbGljayIsImF0dGFjaG1lbnQiLCJmaWxlIiwiRmlsZSIsIm9yaWdpbmFsRmlsZSIsInVybF90aHVtYm5haWwiLCJ1cmxfb3JpZ2luYWwiLCJ1cmxfZmlsZSIsImhhbmRsZUNsb3NlUHJldmlldyIsImhhbmRsZUF0dGFjaG1lbnREb3dubG9hZCIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJleHRlbnNpb24iLCJmaWxlTmFtZSIsImZpbGVVcmwiLCJibG9iVXJsIiwiZG93bmxvYWRlZEZpbGUiLCJsaW5rIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImluY2x1ZGVzIiwiY29uY2F0Iiwic2VudCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImFicnVwdCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImhyZWYiLCJkb3dubG9hZCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwic2V0VGltZW91dCIsInJlbW92ZUNoaWxkIiwicmV2b2tlT2JqZWN0VVJMIiwiY29uc29sZSIsImVycm9yIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYXNGZWVkYmFjayIsIiRpc0Fzc2lzdGFudCIsIm1lc3NhZ2VFeHRyYUNvbnRlbnQiLCJmZWVkYmFjayIsInNlc3Npb25JZCIsInNwbGl0IiwiZmlsdGVyIiwicXVlc3Rpb25JZCIsImpvaW4iLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJfYXR0YWNobWVudCRuYW1lIiwiYXR0YWNobWVudFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImF0dGFjaG1lbnROYW1lIiwiaXNBdWRpb0ZpbGUiLCJzdGFydHNXaXRoIiwic29tZSIsImV4dCIsImVuZHNXaXRoIiwicG9zaXRpb25JbmRleCIsIm9uRG93bmxvYWQiLCJwZW5kaW5nX2FjdGlvbnMiLCJhY3Rpb25zIiwic3RhdHVzIiwib25BcHByb3ZlIiwidGhyZWFkSWRzIiwib25SZWplY3QiLCJpc1Byb2plY3REZWxldGVkIiwicHJvamVjdE1ldGFkYXRhIiwiaXNfZGVsZXRlZCIsImlzRXhwYW5kZWQiLCJleHBhbmRlZCIsImhpdGxJbnN0YW5jZUlkIiwib3JpZ2luYWxfdGhyZWFkX2lkIiwid2FybmluZ01lc3NhZ2UiLCJ3YXJuaW5nX21lc3NhZ2UiLCJtYW51YWxBcHByb3ZhbERldGVjdGVkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiaXNPcGVuIiwib25DbG9zZSIsIkNoYXRBSU1lc3NhZ2VzSW5uZXIiLCJfcmVmNiIsInVzZXJJbml0aWFsTWVzc2FnZSIsImluaXRpYWxDaGF0SWQiLCJvbkVycm9yIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25TY3JvbGxUb0JvdHRvbSIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0MyIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiZXZlbnQiLCJtZXNzYWdlc1JlZiIsImNoYXRJbml0aWFsaXplZFJlZiIsImlzTG9hZGluZ01vcmVSZWYiLCJ1c2VyU2Nyb2xsaW5nUmVmIiwic2Nyb2xsVGhyZXNob2xkUmVmIiwibGFzdFNjcm9sbFRvcFJlZiIsInNob3dTY3JvbGxUb0JvdHRvbVJlZiIsInNjcm9sbFJhZlJlZiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2hvd1Njcm9sbFRvQm90dG9tIiwic2V0U2hvd1Njcm9sbFRvQm90dG9tIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzIiwic2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyIsIl91c2VDaGF0TWFuYWdlciIsImNoYXRJZCIsInVuZGVmaW5lZCIsIm1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwiaXNMb2FkaW5nTW9yZU1lc3NhZ2VzIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsImFjdGl2ZUxvYWRpbmdzIiwic2VuZE1lc3NhZ2UiLCJjaGFuZ2VQcm9qZWN0IiwiaW5pdGlhbGl6ZUNoYXQiLCJoYW5kbGVTY3JvbGwiLCJzdG9wR2VuZXJhdGlvbiIsInRyaW0iLCJpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQiLCJhaUNoYXRTdWdnZXN0ZWRBbnN3ZXIiLCJhZ2VudF90eXBlIiwiX2RlZmluZVByb3BlcnR5IiwidGFyZ2V0TWVzc2FnZSIsImZpbmQiLCJtc2ciLCJpc1JldHJ5U3VnZ2VzdGlvbiIsImxhc3RVc2VyTWVzc2FnZSIsImF0IiwicmV0cnlBdHRhY2htZW50cyIsImVudGl0eSIsInVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkiLCJlbCIsImN1cnJlbnQiLCJzY3JvbGxUb3AiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJkaXN0YW5jZUZyb21Cb3R0b20iLCJzaG91bGRTaG93Iiwic2Nyb2xsVG9Cb3R0b21SYWYiLCJvcHRzIiwiX29wdHMkc2tpcElmVXNlclNjcm9sIiwic2tpcElmVXNlclNjcm9sbGluZyIsIl9vcHRzJGRlbGF5TXMiLCJkZWxheU1zIiwicnVuIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbSIsInNjcm9sbFRvIiwidG9wIiwiYmVoYXZpb3IiLCJoYW5kbGVBcHByb3ZhbERlY2lzaW9uV2l0aFNjcm9sbCIsImhhbmRsZVNjcm9sbFRvQm90dG9tIiwiZSIsImNvbnRhaW5lciIsImN1cnJlbnRUYXJnZXQiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsImlzU2Nyb2xsaW5nVXAiLCJpc05lYXJCb3R0b20iLCJzZW5kTWVzc2FnZVJlZiIsInN0b3BHZW5lcmF0aW9uUmVmIiwib25TZW5kTWVzc2FnZVJlYWR5UmVmIiwic2VuZE1lc3NhZ2VQcm94eVJlZiIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsInN0b3BHZW5lcmF0aW9uUHJveHlSZWYiLCJyYWZJZCIsImxhc3RIZWlnaHQiLCJ0aWNrIiwiY3VycmVudEhlaWdodCIsImxhc3RNZXNzYWdlSWRSZWYiLCJsYXN0TWVzc2FnZXNMZW5ndGhSZWYiLCJfbGFzdE1lc3NhZ2UkaWQiLCJsYXN0TWVzc2FnZSIsImxhc3RJZCIsInByZXZJZCIsInByZXZMZW4iLCJpc05ld01lc3NhZ2UiLCJpc0F0Qm90dG9tIiwiaGFzSW5pdGlhbE1lc3NhZ2UiLCJpc0FwcHJvdmFsIiwiaXNBbnN3ZXJPclF1ZXN0aW9uIiwiYXR0YWNobWVudHNDb3VudCIsInN0cmVhbUxvYWRpbmdEaXNwbGF5IiwiaGFzQXR0YWNobWVudHMiLCJCb29sZWFuIiwic3RyZWFtVGltZWxpbmUiLCJzaG93U3RyZWFtVHVyblRpbWVsaW5lIiwidHVybklkIiwic2VnbWVudHMiLCJsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXgiLCJpIiwiYW5jaG9yVGltZWxpbmVUb0FwcHJvdmFsIiwiX2FwcHJvdmFsTWVzc2FnZSRhcHByIiwiYXBwcm92YWxNZXNzYWdlIiwic2VnbWVudENvdW50IiwidGltZWxpbmUiLCJhcHByb3ZhbE1lc3NhZ2VJZCIsInBlbmRpbmdUb29scyIsInRvb2xfbmFtZSIsIl9hcHByb3ZhbE1lc3NhZ2UkYXBwcjIiLCJzY29wZSIsInNvdXJjZSIsImhpdGxDb250ZXh0IiwibWVzc2FnZVRleHQiLCJwZW5kaW5nQWN0aW9ucyIsInRocmVhZF9pZCIsInVpU3VyZmFjZXMiLCJyZW5kZXJUaW1lbGluZUNvbnRlbnRCbG9jayIsIl9yZWY3Iiwic2hvd0Fzc2lzdGFudEhlYWRlciIsInN0cmVhbVR1cm5UaW1lbGluZSIsImluaXRpYWxBY3Rpdml0eSIsInJlbmRlckNvbnRlbnRCbG9jayIsImlzU2Nyb2xsT25QYXJlbnQiLCJleHBhbmRlZFJlZiIsInNhdmVkU2Nyb2xsVG9wIiwiZmlsbCIsIm1lc3NhZ2VzQ29udGVudCIsIl9tZXNzYWdlJGF0dGFjaG1lbnRzIiwiX21lc3NhZ2Ukc291cmNlcyIsIl9tZXNzYWdlJHByb2plY3QiLCJfbWVzc2FnZSRpZCIsImlzQXNzaXN0YW50TWVzc2FnZSIsInByb2plY3QiLCJtZXNzYWdlRmVlZGJhY2siLCJ3YXNIZWxwZnVsIiwiVEhVTUJTX1VQIiwiVEhVTUJTX0RPV04iLCJtZXNzYWdlS2V5IiwiJHNjcm9sbE9uUGFyZW50IiwicmVmIiwib25TY3JvbGwiLCIkaXNNYXJrZXRwbGFjZUdsb2JhbCIsImNvbG9yIiwiQ2hhdEFJTWVzc2FnZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTWVzc2FnZXMvQ2hhdEFJTWVzc2FnZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tdW5zdGFibGUtbmVzdGVkLWNvbXBvbmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgUmVhY3QsIHsgRkMsIG1lbW8sIFJlYWN0Tm9kZSwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBTdHJlYW1kb3duIH0gZnJvbSAnc3RyZWFtZG93bidcbmltcG9ydCB7IGNyZWF0ZUNvZGVQbHVnaW4gfSBmcm9tICdAc3RyZWFtZG93bi9jb2RlJ1xuaW1wb3J0IHsgQXJyb3dTbWFsbERvd24gfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9BcnJvd1NtYWxsRG93bidcblxuaW1wb3J0IHsgQXR0YWNobWVudENhcmQgfSBmcm9tICcuLi8uLi9hdG9tcy9BdHRhY2htZW50Q2FyZC9BdHRhY2htZW50Q2FyZCdcbmltcG9ydCB7IEFwcHJvdmFsQm94IH0gZnJvbSAnLi4vLi4vYXRvbXMvQXBwcm92YWxCb3gvQXBwcm92YWxCb3gnXG5pbXBvcnQgeyBBdHRhY2htZW50UHJldmlld01vZGFsIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudFByZXZpZXdNb2RhbCdcbmltcG9ydCB7IEF0dGFjaG1lbnRDYXJkQXVkaW8gfSBmcm9tICcuLi8uLi9hdG9tcy9BdHRhY2htZW50Q2FyZC9BdHRhY2htZW50Q2FyZEF1ZGlvJ1xuaW1wb3J0IHsgTUFJQU1lc3NhZ2VQcm9wcyB9IGZyb20gJy4uLy4uL2F0b21zL01BSUFNZXNzYWdlL01BSUFNZXNzYWdlLmludGVyZmFjZXMnXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdEhpc3RvcnlSb2xlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IE1BSUFfU1RSRUFNRE9XTl9SRUhZUEVfUExVR0lOUyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL21haWFTdHJlYW1kb3duUmVoeXBlUGx1Z2lucydcbmltcG9ydCB7IHJlbmRlclRleHRXaXRoTWVudGlvbnMsIGhhc0lubGluZU1hcmtlcnMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZW5kZXJDb250ZXh0TWVudGlvbnMnXG5cbmltcG9ydCB7IGlzTWFpYWtlckFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IENPUlVzZXIsIHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IHVzZUNoYXRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2hhdE1hbmFnZXIvdXNlQ2hhdE1hbmFnZXInXG5pbXBvcnQgeyB1c2VTbW9vdGhTdHJlYW1UZXh0IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU21vb3RoU3RyZWFtVGV4dCdcbmltcG9ydCB7IHVzZVN0cmVhbWluZ01lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTdHJlYW1pbmdNZXNzYWdlJ1xuXG5pbXBvcnQgeyBMb2FkaW5nVGV4dCB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRpbmdUZXh0J1xuaW1wb3J0IHsgaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCwgcmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcbmltcG9ydCB7IHVzZVN0cmVhbVRpbWVsaW5lIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU3RyZWFtVGltZWxpbmUnXG5pbXBvcnQgeyBTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUgfSBmcm9tICcuLi9TdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUnXG5pbXBvcnQgeyBzdHJlYW1EZWJ1Z0xvZywgc3RyZWFtRGVidWdMb2dIaXRsVWlPdmVybGFwLCBzdW1tYXJpemVUaW1lbGluZVNuYXBzaG90IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RyZWFtRGVidWdMb2cnXG5pbXBvcnQgeyBGYWRlIH0gZnJvbSAnLi4vLi4vYXRvbXMvRmFkZSdcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5cbmltcG9ydCB7IE1lc3NhZ2VGcm9tVXNlciwgTWVzc2FnZUZyb21PdGhlciwgTWVzc2FnZUNvbnRlbnRGcm9tVXNlciwgTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIgfSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IE1lc3NhZ2VGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7XG4gIFNDQ0FJTWVzc2FnZVdyYXBwZXIsXG4gIFNjcm9sbFRvQm90dG9tQnV0dG9uLFxuICBTQ01lc3NhZ2VzT3V0ZXIsXG4gIFNDTWVzc2FnZXNTY3JvbGwsXG4gIFNDTWVzc2FnZXNJbm5lcixcbiAgU0NPcHRpb25zTGlzdCxcbiAgU0NPcHRpb25JdGVtLFxuICBTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXIsXG4gIFNDQXNzaXN0YW50TmFtZSxcbiAgU0NBc3Npc3RhbnRBdmF0YXIsXG4gIFNDTWVzc2FnZUl0ZW1XcmFwcGVyLFxuICBTQ01lc3NhZ2VJdGVtSW5uZXIsXG4gIFNDQXR0YWNobWVudHNSb3csXG4gIFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uLFxufSBmcm9tICcuL25ld1N0eWxlcydcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IE1BSUFJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyBFbnRpdHlMaW5rQ3VzdG9tTGluaywgZ2V0RW50aXR5TGlua1dyYXBwZXJDbGFzc05hbWUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9lbnRpdHlMaW5rUmVuZGVyJ1xuaW1wb3J0IHsgQ2hhdEFJU3VnZ2VzdGlvbnMgfSBmcm9tICcuL0NoYXRBSVN1Z2dlc3Rpb25zJ1xuaW1wb3J0IHsgQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zIH0gZnJvbSAnLi9DaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBkb3dubG9hZEZpbGVGcm9tVXJsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZmlsZURvd25sb2FkSGVscGVyJ1xuXG5jb25zdCBjb2RlID0gY3JlYXRlQ29kZVBsdWdpbih7IHRoZW1lczogWydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J10gfSlcblxuY29uc3QgQXNzaXN0YW50QXZhdGFySW5uZXI6IEZDID0gKCkgPT4ge1xuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgcmV0dXJuIChcbiAgICA8U0NBc3Npc3RhbnRBdmF0YXI+XG4gICAgICB7YWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgfHwgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InIHx8IGFnZW50Py5pc19sZWdhY3lfY29udGV4dCA/IChcbiAgICAgICAgPE1BSUFJY29uIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICkgOiAoXG4gICAgICAgIGFnZW50Py5lbW9qaVxuICAgICAgKX1cbiAgICA8L1NDQXNzaXN0YW50QXZhdGFyPlxuICApXG59XG5cbmNvbnN0IEFzc2lzdGFudEF2YXRhciA9IG1lbW8oQXNzaXN0YW50QXZhdGFySW5uZXIpXG5cbnR5cGUgQ2hhdEFJTWVzc2FnZXNQcm9wcyA9IHtcbiAgdXNlckluaXRpYWxNZXNzYWdlOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgICBzY0lkPzogc3RyaW5nXG4gIH1cbiAgaW5pdGlhbENoYXRJZDogc3RyaW5nIHwgbnVsbFxuICBvbkVycm9yOiAoKSA9PiB2b2lkXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeT86IChcbiAgICBzZW5kTWVzc2FnZTogKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4gdm9pZCxcbiAgICBzdG9wR2VuZXJhdGlvbjogKCkgPT4gdm9pZCxcbiAgICBpc1N0cmVhbWluZzogYm9vbGVhbixcbiAgICBpc1dyaXRpbmc6IGJvb2xlYW5cbiAgKSA9PiB2b2lkXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuXG4gIG9uU2Nyb2xsVG9Cb3R0b20/OiAoKSA9PiB2b2lkXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBhZ2VudHM/OiBBZ2VudFtdXG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuXG50eXBlIE1lc3NhZ2VJdGVtUHJvcHMgPSBDaGF0TWVzc2FnZSAmIHtcbiAgYXV0aFVzZXI6IENPUlVzZXJcbiAgaGFuZGxlU2VsZWN0T3B0aW9uOiAob3B0aW9uOiBQcm9qZWN0KSA9PiB2b2lkXG4gIGhhbmRsZVN1Z2dlc3Rpb25DbGljazogKG1lc3NhZ2VJZDogc3RyaW5nLCBzdWdnZXN0aW9uOiBzdHJpbmcpID0+IHZvaWRcbiAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uPzogYm9vbGVhblxuICBoYW5kbGVGZWVkYmFjazogKGZlZWRiYWNrOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB2b2lkXG4gIGhhbmRsZUFwcHJvdmFsRGVjaXNpb246ICh0aHJlYWRJZHM6IHN0cmluZ1tdLCBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcpID0+IHZvaWRcbiAgZGlzYWJsZUZlZWRiYWNrPzogRmVlZGJhY2sgfCBudWxsXG4gIHNvdXJjZXM/OiBhbnlcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGlzU3RyZWFtaW5nPzogYm9vbGVhblxuICBpc0xhc3RNZXNzYWdlPzogYm9vbGVhblxuICBleHBhbmRlZD86IGJvb2xlYW5cbn1cblxuaW50ZXJmYWNlIE1lc3NhZ2VXcmFwcGVyUHJvcHMge1xuICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgJ2RhdGEtbWVzc2FnZS1pZCc/OiBzdHJpbmdcbiAgaGFzRmVlZGJhY2s/OiBib29sZWFuXG59XG5cbnR5cGUgTWVzc2FnZUNvbnRlbnRXcmFwcGVyUHJvcHMgPSBNQUlBTWVzc2FnZVByb3BzICYge1xuICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gIGlzRXJyb3I/OiBib29sZWFuXG4gIGlzQ2hhbmdlUHJvamVjdD86IGJvb2xlYW5cbn1cblxuY29uc3QgTWVzc2FnZVdyYXBwZXI6IEZDPE1lc3NhZ2VXcmFwcGVyUHJvcHM+ID0gKHsgaXNDdXJyZW50VXNlciwgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgTWVzc2FnZUNvbXBvbmVudCA9IGlzQ3VycmVudFVzZXIgPyBNZXNzYWdlRnJvbVVzZXIgOiBNZXNzYWdlRnJvbU90aGVyXG4gIHJldHVybiA8TWVzc2FnZUNvbXBvbmVudCB7Li4ucHJvcHN9PntjaGlsZHJlbn08L01lc3NhZ2VDb21wb25lbnQ+XG59XG5cbmNvbnN0IE1lc3NhZ2VDb250ZW50V3JhcHBlcjogRkM8TWVzc2FnZUNvbnRlbnRXcmFwcGVyUHJvcHM+ID0gKHsgaXNDdXJyZW50VXNlciwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBNZXNzYWdlQ29udGVudENvbXBvbmVudCA9IGlzQ3VycmVudFVzZXIgPyBNZXNzYWdlQ29udGVudEZyb21Vc2VyIDogTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXJcbiAgcmV0dXJuIDxNZXNzYWdlQ29udGVudENvbXBvbmVudCB7Li4ucHJvcHN9IC8+XG59XG5cbmZ1bmN0aW9uIE1lc3NhZ2VPcHRpb25zKHtcbiAgb3B0aW9ucyxcbiAgaGFuZGxlU2VsZWN0T3B0aW9uLFxufToge1xuICBvcHRpb25zOiBQcm9qZWN0W10gfCBudWxsXG4gIGhhbmRsZVNlbGVjdE9wdGlvbjogKG9wdGlvbjogUHJvamVjdCkgPT4gdm9pZFxufSkge1xuICBjb25zdCBbc2VsZWN0ZWRPcHRpb24sIHNldFNlbGVjdGVkT3B0aW9uXSA9IHVzZVN0YXRlPFByb2plY3QgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdCA9IChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHJldHVyblxuICAgIHNldFNlbGVjdGVkT3B0aW9uKG9wdGlvbilcbiAgICBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NPcHRpb25zTGlzdD5cbiAgICAgIHsob3B0aW9ucyB8fCBbXSkubWFwKG9wdGlvbiA9PiAoXG4gICAgICAgIDxTQ09wdGlvbkl0ZW1cbiAgICAgICAgICAkaGFzU2VsZWN0aW9uPXshIXNlbGVjdGVkT3B0aW9ufVxuICAgICAgICAgICRkaW1tZWQ9eyEhc2VsZWN0ZWRPcHRpb24gJiYgc2VsZWN0ZWRPcHRpb24/LmlkICE9PSBvcHRpb24uaWR9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0KG9wdGlvbil9XG4gICAgICAgICAga2V5PXtvcHRpb24uaWR9XG4gICAgICAgID5cbiAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgIDwvU0NPcHRpb25JdGVtPlxuICAgICAgKSl9XG4gICAgPC9TQ09wdGlvbnNMaXN0PlxuICApXG59XG5cbmNvbnN0IEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIC8vIFNpZW1wcmUgJ01BSUEnIHBhcmEgY2xvbmUvb3JjaGVzdHJhdG9yIChudW5jYSBlbCBub21icmUgZGVsIHN1YmFnZW50ZSBxdWVcbiAgLy8gcmVzcG9uZGnDsyk7IHBhcmEgY3VzdG9tLCBlbCBub21icmUgZGVsIGFnZW50ZS5cbiAgY29uc3QgZGlzcGxheU5hbWUgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyB8fCBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgPyAnTUFJQScgOiBhZ2VudD8ubmFtZVxuXG4gIHJldHVybiAoXG4gICAgPFNDQXNzaXN0YW50TWVzc2FnZUhlYWRlcj5cbiAgICAgIDxBc3Npc3RhbnRBdmF0YXIgLz5cbiAgICAgIHtkaXNwbGF5TmFtZSAmJiA8U0NBc3Npc3RhbnROYW1lPntkaXNwbGF5TmFtZX08L1NDQXNzaXN0YW50TmFtZT59XG4gICAgPC9TQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gIClcbn1cblxuLyoqIFNvbG8gZXN0ZSBjb21wb25lbnRlIHJlLXJlbmRlcml6YSBjdWFuZG8gY2FtYmlhIGVsIHRleHRvIGVuIHN0cmVhbWluZyAobGVlIGRlbCBjb250ZXh0KS4gKi9cbmNvbnN0IFN0cmVhbWluZ01lc3NhZ2VCb2R5ID0gbWVtbyhcbiAgKHByb3BzOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW5cbiAgICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gICAgaXNBc3Npc3RhbnQ6IGJvb2xlYW5cbiAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPzogYm9vbGVhblxuICAgIGFwcHJvdmFsPzogTWVzc2FnZUl0ZW1Qcm9wc1snYXBwcm92YWwnXVxuICAgIGlzRXJyb3I/OiBib29sZWFuXG4gICAgc291cmNlcz86IE1lc3NhZ2VJdGVtUHJvcHNbJ3NvdXJjZXMnXVxuICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gICAgY3JlYXRlQWdlbnRGb2xsb3dVcD86IHsgYWdlbnRJZDogc3RyaW5nIH0gfCBudWxsXG4gICAgaGFuZGxlRmVlZGJhY2tDbGljazogKGY6IEZlZWRiYWNrKSA9PiB2b2lkXG4gICAgZGlzYWJsZUZlZWRiYWNrOiBGZWVkYmFjayB8IG51bGxcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD86IGJvb2xlYW5cbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIH0pID0+IHtcbiAgICAvLyBUZXh0byBkZWwgc3RyZWFtOiBzb2xvIHNlIGxlZSBkZWwgc3RvcmUgY3VhbmRvIGVzdGUgbWVuc2FqZSBlcyBlbFxuICAgIC8vIHF1ZSBlc3TDoSBlbiBzdHJlYW1pbmcuIHVzZVN5bmNFeHRlcm5hbFN0b3JlIGHDrXNsYSBlbCByZS1yZW5kZXIgYVxuICAgIC8vIGVzdGUgY29tcG9uZW50ZSwgc2luIHRvY2FyIGVsIHJlc3RvIGRlbCDDoXJib2wuXG4gICAgY29uc3Qgc3RyZWFtaW5nVGV4dCA9IHVzZVN0cmVhbWluZ01lc3NhZ2UocHJvcHMuaXNTdHJlYW1pbmcgPyBwcm9wcy5tZXNzYWdlSWQgOiBudWxsKVxuICAgIGNvbnN0IHJhd1RleHQgPSBwcm9wcy5pc1N0cmVhbWluZyA/IHN0cmVhbWluZ1RleHQgOiBwcm9wcy5tZXNzYWdlXG4gICAgLy8gU21vb3RoIHN0cmVhbWluZzogZGVzYWNvcGxhIGxhIGNhZGVuY2lhIGRlbCBiYWNrZW5kIGRlbCByZW5kZXIuXG4gICAgLy8gRHVyYW50ZSBlbCBzdHJlYW1pbmcgbGliZXJhIGNoYXJzIGEgcml0bW8gY29uc3RhbnRlIHbDrWEgckFGOyBjdWFuZG9cbiAgICAvLyB0ZXJtaW5hLCBtdWVzdHJhIGVsIHRleHRvIGZpbmFsIGFsIGluc3RhbnRlIChzaW4gYW5pbWFjacOzbiByZXNpZHVhbCkuXG4gICAgLy8gTG9zIGRlZmF1bHRzIGRlbCBob29rIHNlIGFqdXN0YXJvbiBlbXDDrXJpY2FtZW50ZSBlbiBzdGFnaW5nOyBhdW4gYXPDrVxuICAgIC8vIHNlIGV4cG9uZW4gZmxhZ3MgZGUgcnVudGltZSAod2luZG93LiopIHBhcmEgcG9kZXIgdHVuZWFyIHNpbiByZWNvbXBpbGFyXG4gICAgLy8gc2kgYWxnw7puIGJhY2tlbmQgcHJlc2VudGEgdW5hIGNhZGVuY2lhIG11eSBkaXN0aW50YSBlbiBwcm9kdWNjacOzbi5cbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1BZGFwdCA9IGZhbHNlICAgICAgLy8gZGVzYWN0aXZhIGFkYXB0YWNpw7NuIGFsIGJhY2tlbmRcbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1CdWZmZXJNcyA9IDYwMCAgICAgLy8gY29sY2jDs24gb2JqZXRpdm8gKG1zKVxuICAgIC8vICAgd2luZG93LnN0cmVhbUxhZ01zID0gNDUwICAgICAgICAvLyBsYWcgbcOheGltbyBiYXNlIChtcylcbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1NaW5CdWZmZXIgPSA3MCAgICAgLy8gcGlzbyBkZWwgY29sY2jDs24gZW4gY2hhcnNcbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1XYXJtdXBNcyA9IDQwMCAgICAgLy8gd2FybXVwIGluaWNpYWwgKG1zKVxuICAgIGNvbnN0IHdpbkZsYWdzID1cbiAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gICAgICAgID8gKHdpbmRvdyBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgICAgIHN0cmVhbUFkYXB0PzogYm9vbGVhblxuICAgICAgICAgICAgc3RyZWFtQnVmZmVyTXM/OiBudW1iZXJcbiAgICAgICAgICAgIHN0cmVhbUxhZ01zPzogbnVtYmVyXG4gICAgICAgICAgICBzdHJlYW1NaW5CdWZmZXI/OiBudW1iZXJcbiAgICAgICAgICAgIHN0cmVhbVdhcm11cE1zPzogbnVtYmVyXG4gICAgICAgICAgfSlcbiAgICAgICAgOiB7fVxuICAgIGNvbnN0IGRpc3BsYXlUZXh0ID0gdXNlU21vb3RoU3RyZWFtVGV4dChyYXdUZXh0LCB7XG4gICAgICBlbmFibGVkOiAhIXByb3BzLmlzU3RyZWFtaW5nLFxuICAgICAgbWF4Q2hhcnNQZXJGcmFtZTogMjQsXG4gICAgICBzbmFwVG9Xb3JkQm91bmRhcnk6IHRydWUsXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtTGFnTXMgIT0gbnVsbCAmJiB7IHRhcmdldExhZ01zOiB3aW5GbGFncy5zdHJlYW1MYWdNcyB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1BZGFwdCAhPSBudWxsICYmIHsgYWRhcHRUb0JhY2tlbmRSYXRlOiB3aW5GbGFncy5zdHJlYW1BZGFwdCB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1CdWZmZXJNcyAhPSBudWxsICYmIHsgdGFyZ2V0QnVmZmVyTXM6IHdpbkZsYWdzLnN0cmVhbUJ1ZmZlck1zIH0pLFxuICAgICAgLi4uKHdpbkZsYWdzLnN0cmVhbU1pbkJ1ZmZlciAhPSBudWxsICYmIHsgbWluQnVmZmVyQ2hhcnM6IHdpbkZsYWdzLnN0cmVhbU1pbkJ1ZmZlciB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1XYXJtdXBNcyAhPSBudWxsICYmIHsgd2FybXVwTXM6IHdpbkZsYWdzLnN0cmVhbVdhcm11cE1zIH0pLFxuICAgIH0pXG4gICAgY29uc3QgY3JlYXRlQWdlbnRBY3Rpb25zQWdlbnRJZCA9IHByb3BzLmNyZWF0ZUFnZW50Rm9sbG93VXA/LmFnZW50SWRcblxuICAgIGlmICghZGlzcGxheVRleHQgJiYgIXByb3BzLmlzU3RyZWFtaW5nKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGhhc01lbnRpb25zID0gaGFzSW5saW5lTWFya2VycyhkaXNwbGF5VGV4dClcbiAgICBjb25zdCBtZW50aW9uTm9kZXMgPSBoYXNNZW50aW9ucyA/IHJlbmRlclRleHRXaXRoTWVudGlvbnMoZGlzcGxheVRleHQpIDogbnVsbFxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8U0NDQUlNZXNzYWdlV3JhcHBlclxuICAgICAgICAgIGlzQ3VycmVudFVzZXI9e3Byb3BzLmlzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgaXNGcm9udGVuZENhbmNlbGxlZD17cHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZH1cbiAgICAgICAgICBjbGFzc05hbWU9e2dldEVudGl0eUxpbmtXcmFwcGVyQ2xhc3NOYW1lKGRpc3BsYXlUZXh0KX1cbiAgICAgICAgPlxuICAgICAgICAgIHtoYXNNZW50aW9ucyAmJiBtZW50aW9uTm9kZXMgPyAoXG4gICAgICAgICAgICAvLyBTaSBoYXkgbWVudGlvbnMsIHJlbmRlcml6YXIgZGlyZWN0YW1lbnRlIChzaW4gbWFya2Rvd24gZW4gZWwgbWlzbW8gcMOhcnJhZm8pXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lJyB9fT57bWVudGlvbk5vZGVzfTwvc3Bhbj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgLy8gU2luIG1lbnRpb25zLCBwYXNhciBhIFN0cmVhbWRvd24gcGFyYSBtYXJrZG93biBzdXBwb3J0XG4gICAgICAgICAgICA8U3RyZWFtZG93blxuICAgICAgICAgICAgICBwbHVnaW5zPXt7IGNvZGUgfX1cbiAgICAgICAgICAgICAgcmVoeXBlUGx1Z2lucz17TUFJQV9TVFJFQU1ET1dOX1JFSFlQRV9QTFVHSU5TfVxuICAgICAgICAgICAgICBjb21wb25lbnRzPXt7IGE6IEVudGl0eUxpbmtDdXN0b21MaW5rIH0gYXMgUGFyYW1ldGVyczx0eXBlb2YgU3RyZWFtZG93bj5bMF1bJ2NvbXBvbmVudHMnXX1cbiAgICAgICAgICAgICAgbGlua1NhZmV0eT17eyBlbmFibGVkOiBmYWxzZSB9fVxuICAgICAgICAgICAgICBpc0FuaW1hdGluZz17ISFwcm9wcy5pc1N0cmVhbWluZ31cbiAgICAgICAgICAgICAgc2hpa2lUaGVtZT17WydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J119XG4gICAgICAgICAgICAgIGNvbnRyb2xzPXt7IHRhYmxlOiBmYWxzZSwgY29kZTogZmFsc2UgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2Rpc3BsYXlUZXh0fVxuICAgICAgICAgICAgPC9TdHJlYW1kb3duPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NDQUlNZXNzYWdlV3JhcHBlcj5cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmICFwcm9wcy5pc0Vycm9yICYmICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmICFwcm9wcy5hcHByb3ZhbCAmJiAhcHJvcHMuaXNTdHJlYW1pbmcgJiYgKFxuICAgICAgICAgIDxNZXNzYWdlRmVlZGJhY2tcbiAgICAgICAgICAgIGNvbnRlbnQ9e2Rpc3BsYXlUZXh0fVxuICAgICAgICAgICAgc291cmNlcz17cHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrPXtwcm9wcy5oYW5kbGVGZWVkYmFja0NsaWNrfVxuICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXtwcm9wcy5kaXNhYmxlRmVlZGJhY2t9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmXG4gICAgICAgICAgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiZcbiAgICAgICAgICAhcHJvcHMuYXBwcm92YWwgJiZcbiAgICAgICAgICAoIXByb3BzLmlzRXJyb3IgfHwgcHJvcHMuc3VnZ2VzdGlvbnM/Lmxlbmd0aCkgJiYgKFxuICAgICAgICAgICAgPENoYXRBSVN1Z2dlc3Rpb25zXG4gICAgICAgICAgICAgIHN1Z2dlc3Rpb25zPXtwcm9wcy5zdWdnZXN0aW9ucyB8fCBbXX1cbiAgICAgICAgICAgICAgb25TZWxlY3RTdWdnZXN0aW9uPXtzdWdnZXN0aW9uID0+IHByb3BzLmhhbmRsZVN1Z2dlc3Rpb25DbGljayhwcm9wcy5tZXNzYWdlSWQsIHN1Z2dlc3Rpb24pfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgICAgaGlkZGVuPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICFwcm9wcy5pc0xhc3RNZXNzYWdlIHx8ICEhcHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmXG4gICAgICAgICAgIXByb3BzLmlzRXJyb3IgJiZcbiAgICAgICAgICAhcHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZCAmJlxuICAgICAgICAgICFwcm9wcy5hcHByb3ZhbCAmJlxuICAgICAgICAgICEhY3JlYXRlQWdlbnRBY3Rpb25zQWdlbnRJZCAmJiAoXG4gICAgICAgICAgICA8Q2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zXG4gICAgICAgICAgICAgIGFnZW50SWQ9e2NyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgICAgICBoaWRkZW49eyEhcHJvcHMuaXNTdHJlYW1pbmcgfHwgIXByb3BzLmlzTGFzdE1lc3NhZ2UgfHwgISFwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9XG4pXG5cbi8qKiBCbG9xdWUgZGUgdGV4dG8gaW50ZXJjYWxhZG8gZW4gZWwgdGltZWxpbmUgZGVsIHR1cm5vIChtYXJrZG93biArIHNtb290aCBzdHJlYW0pLiAqL1xuY29uc3QgVGltZWxpbmVTZWdtZW50Qm9keSA9IG1lbW8oKHsgdGV4dCwgaXNTdHJlYW1pbmcgfTogeyB0ZXh0OiBzdHJpbmc7IGlzU3RyZWFtaW5nOiBib29sZWFuIH0pID0+IHtcbiAgY29uc3Qgd2luRmxhZ3MgPVxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gICAgICA/ICh3aW5kb3cgYXMgdW5rbm93biBhcyB7XG4gICAgICAgICAgc3RyZWFtQWRhcHQ/OiBib29sZWFuXG4gICAgICAgICAgc3RyZWFtQnVmZmVyTXM/OiBudW1iZXJcbiAgICAgICAgICBzdHJlYW1MYWdNcz86IG51bWJlclxuICAgICAgICAgIHN0cmVhbU1pbkJ1ZmZlcj86IG51bWJlclxuICAgICAgICAgIHN0cmVhbVdhcm11cE1zPzogbnVtYmVyXG4gICAgICAgIH0pXG4gICAgICA6IHt9XG4gIGNvbnN0IGRpc3BsYXlUZXh0ID0gdXNlU21vb3RoU3RyZWFtVGV4dCh0ZXh0LCB7XG4gICAgZW5hYmxlZDogaXNTdHJlYW1pbmcsXG4gICAgbWF4Q2hhcnNQZXJGcmFtZTogMjQsXG4gICAgc25hcFRvV29yZEJvdW5kYXJ5OiB0cnVlLFxuICAgIC4uLih3aW5GbGFncy5zdHJlYW1MYWdNcyAhPSBudWxsICYmIHsgdGFyZ2V0TGFnTXM6IHdpbkZsYWdzLnN0cmVhbUxhZ01zIH0pLFxuICAgIC4uLih3aW5GbGFncy5zdHJlYW1BZGFwdCAhPSBudWxsICYmIHsgYWRhcHRUb0JhY2tlbmRSYXRlOiB3aW5GbGFncy5zdHJlYW1BZGFwdCB9KSxcbiAgICAuLi4od2luRmxhZ3Muc3RyZWFtQnVmZmVyTXMgIT0gbnVsbCAmJiB7IHRhcmdldEJ1ZmZlck1zOiB3aW5GbGFncy5zdHJlYW1CdWZmZXJNcyB9KSxcbiAgICAuLi4od2luRmxhZ3Muc3RyZWFtTWluQnVmZmVyICE9IG51bGwgJiYgeyBtaW5CdWZmZXJDaGFyczogd2luRmxhZ3Muc3RyZWFtTWluQnVmZmVyIH0pLFxuICAgIC4uLih3aW5GbGFncy5zdHJlYW1XYXJtdXBNcyAhPSBudWxsICYmIHsgd2FybXVwTXM6IHdpbkZsYWdzLnN0cmVhbVdhcm11cE1zIH0pLFxuICB9KVxuXG4gIGlmICghZGlzcGxheVRleHQgJiYgIWlzU3RyZWFtaW5nKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGhhc01lbnRpb25zID0gaGFzSW5saW5lTWFya2VycyhkaXNwbGF5VGV4dClcbiAgY29uc3QgbWVudGlvbk5vZGVzID0gaGFzTWVudGlvbnMgPyByZW5kZXJUZXh0V2l0aE1lbnRpb25zKGRpc3BsYXlUZXh0KSA6IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSU1lc3NhZ2VXcmFwcGVyIGlzQ3VycmVudFVzZXI9e2ZhbHNlfSBjbGFzc05hbWU9e2dldEVudGl0eUxpbmtXcmFwcGVyQ2xhc3NOYW1lKGRpc3BsYXlUZXh0KX0+XG4gICAgICB7aGFzTWVudGlvbnMgJiYgbWVudGlvbk5vZGVzID8gKFxuICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lJyB9fT57bWVudGlvbk5vZGVzfTwvc3Bhbj5cbiAgICAgICkgOiAoXG4gICAgICAgIDxTdHJlYW1kb3duXG4gICAgICAgICAgcGx1Z2lucz17eyBjb2RlIH19XG4gICAgICAgICAgcmVoeXBlUGx1Z2lucz17TUFJQV9TVFJFQU1ET1dOX1JFSFlQRV9QTFVHSU5TfVxuICAgICAgICAgIGNvbXBvbmVudHM9e3sgYTogRW50aXR5TGlua0N1c3RvbUxpbmsgfSBhcyBQYXJhbWV0ZXJzPHR5cGVvZiBTdHJlYW1kb3duPlswXVsnY29tcG9uZW50cyddfVxuICAgICAgICAgIGxpbmtTYWZldHk9e3sgZW5hYmxlZDogZmFsc2UgfX1cbiAgICAgICAgICBpc0FuaW1hdGluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgICAgc2hpa2lUaGVtZT17WydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J119XG4gICAgICAgICAgY29udHJvbHM9e3sgdGFibGU6IGZhbHNlLCBjb2RlOiBmYWxzZSB9fVxuICAgICAgICA+XG4gICAgICAgICAge2Rpc3BsYXlUZXh0fVxuICAgICAgICA8L1N0cmVhbWRvd24+XG4gICAgICApfVxuICAgIDwvU0NDQUlNZXNzYWdlV3JhcHBlcj5cbiAgKVxufSlcblxuVGltZWxpbmVTZWdtZW50Qm9keS5kaXNwbGF5TmFtZSA9ICdUaW1lbGluZVNlZ21lbnRCb2R5J1xuXG5jb25zdCBNZXNzYWdlSXRlbSA9IG1lbW8oKHByb3BzOiBNZXNzYWdlSXRlbVByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICB1c2VyLFxuICAgIG1lc3NhZ2UsXG4gICAgaXNTdHJlYW1pbmcsXG4gICAgaXNFcnJvcixcbiAgICBhdXRoVXNlcixcbiAgICBvcHRpb25zLFxuICAgIGlzQ2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVTZWxlY3RPcHRpb24sXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrLFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgZGlzYWJsZUZlZWRiYWNrLFxuICAgIHJvbGUsXG4gICAgc291cmNlcyxcbiAgICBhdHRhY2htZW50cyxcbiAgICBhcHByb3ZhbCxcbiAgICBhcHByb3ZhbFN0YXR1cyxcbiAgICBzdWdnZXN0aW9ucyxcbiAgICBjcmVhdGVBZ2VudEZvbGxvd1VwLFxuICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbixcbiAgICBpc0xhc3RNZXNzYWdlLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBbcHJldmlld0F0dGFjaG1lbnQsIHNldFByZXZpZXdBdHRhY2htZW50XSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNDdXJyZW50VXNlciA9IHJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IHVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKClcbiAgY29uc3QgaXNBc3Npc3RhbnQgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IHVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG4gIC8vIE1pZW50cmFzIGVsIGFnZW50ZSBcInBpZW5zYVwiIChzdHJlYW1pbmcgc2luIHRleHRvKSBubyBtb250YW1vcyBlbCBNZXNzYWdlSXRlbTpcbiAgLy8gdW4gcGxhY2Vob2xkZXIgdmFjw61vIHN1bWFyw61hIG90cm8gZ2FwIGRlIDM2cHggZW5jaW1hIGRlbCBpbmRpY2Fkb3IgZGUgYWN0aXZpZGFkLlxuICBjb25zdCBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyID0gaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZChpZClcbiAgY29uc3Qgc3RyZWFtaW5nVGV4dCA9IHVzZVN0cmVhbWluZ01lc3NhZ2UoaXNTdHJlYW1pbmcgfHwgaXNTdHJlYW1pbmdQbGFjZWhvbGRlciA/IGlkIDogbnVsbClcbiAgY29uc3QgaXNBY3RpdmVTdHJlYW1pbmcgPSAhIWlzU3RyZWFtaW5nIHx8IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJcbiAgY29uc3QgaXNUaGlua2luZyA9IGlzQWN0aXZlU3RyZWFtaW5nICYmICFzdHJlYW1pbmdUZXh0XG4gIGlmIChpc1RoaW5raW5nKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBtZXNzYWdlQXR0YWNobWVudHMgPVxuICAgIGF0dGFjaG1lbnRzICYmIGF0dGFjaG1lbnRzLmxlbmd0aCA+IDBcbiAgICAgID8gYXR0YWNobWVudHNcbiAgICAgIDogIWlzQXNzaXN0YW50ICYmIEFycmF5LmlzQXJyYXkoc291cmNlcylcbiAgICAgICAgPyAoc291cmNlcyBhcyBBdHRhY2htZW50RmlsZVtdKVxuICAgICAgICA6IFtdXG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudENsaWNrID0gKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgLy8gUGVybWl0aXIgcHJldmlzdWFsaXphY2nDs24gc2kgdGllbmUgYXJjaGl2byBsb2NhbCBvIFVSTHMgZGVsIGJhY2tlbmRcbiAgICBpZiAoXG4gICAgICBhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50Lm9yaWdpbmFsRmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX2ZpbGVcbiAgICApIHtcbiAgICAgIHNldFByZXZpZXdBdHRhY2htZW50KGF0dGFjaG1lbnQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VQcmV2aWV3ID0gKCkgPT4ge1xuICAgIHNldFByZXZpZXdBdHRhY2htZW50KG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVBdHRhY2htZW50RG93bmxvYWQgPSBhc3luYyAoYXR0YWNobWVudDogQXR0YWNobWVudEZpbGUpID0+IHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBhdHRhY2htZW50Lm5hbWUuaW5jbHVkZXMoJy4nKSA/ICcnIDogYC4ke2F0dGFjaG1lbnQudHlwZX1gXG4gICAgY29uc3QgZmlsZU5hbWUgPSBgJHthdHRhY2htZW50Lm5hbWV9JHtleHRlbnNpb259YFxuICAgIGNvbnN0IGZpbGVVcmwgPSBhdHRhY2htZW50LnVybF9vcmlnaW5hbCB8fCBhdHRhY2htZW50LnVybF9maWxlIHx8IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbFxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBibG9iVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuXG4gICAgICBpZiAoZmlsZVVybCkge1xuICAgICAgICBjb25zdCBkb3dubG9hZGVkRmlsZSA9IGF3YWl0IGRvd25sb2FkRmlsZUZyb21VcmwoZmlsZVVybCwgZmlsZU5hbWUsIGF0dGFjaG1lbnQudHlwZSlcbiAgICAgICAgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZG93bmxvYWRlZEZpbGUpXG4gICAgICB9IGVsc2UgaWYgKGF0dGFjaG1lbnQuZmlsZSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYXR0YWNobWVudC5maWxlKVxuICAgICAgfVxuXG4gICAgICBpZiAoIWJsb2JVcmwpIHJldHVyblxuXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgICBsaW5rLmhyZWYgPSBibG9iVXJsXG4gICAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWVcbiAgICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKVxuICAgICAgbGluay5jbGljaygpXG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspXG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYmxvYlVybClcbiAgICAgIH0sIDEwMClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRvd25sb2FkIGF0dGFjaG1lbnQnLCBlcnJvcilcbiAgICB9XG4gIH1cblxuICBpZiAoaXNDaGFuZ2VQcm9qZWN0ICYmIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPE1lc3NhZ2VXcmFwcGVyIGtleT17aWR9IGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9IGRhdGEtbWVzc2FnZS1pZD17aWR9IGhhc0ZlZWRiYWNrPXtmYWxzZX0+XG4gICAgICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgICAgICB7aXNBc3Npc3RhbnQgJiYgIWlzVGhpbmtpbmcgJiYgPEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgLz59XG4gICAgICAgICAgPE1lc3NhZ2VDb250ZW50V3JhcHBlclxuICAgICAgICAgICAgaXNDaGFuZ2VQcm9qZWN0PXtpc0NoYW5nZVByb2plY3R9XG4gICAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlfVxuICAgICAgICAgICAgaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBtZXNzYWdlRXh0cmFDb250ZW50PXs8TWVzc2FnZU9wdGlvbnMgb3B0aW9ucz17b3B0aW9ucyBhcyBhbnl9IGhhbmRsZVNlbGVjdE9wdGlvbj17aGFuZGxlU2VsZWN0T3B0aW9ufSAvPn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICAgICAgPC9NZXNzYWdlV3JhcHBlcj5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVGZWVkYmFja0NsaWNrID0gKGZlZWRiYWNrOiBGZWVkYmFjaykgPT4ge1xuICAgIGNvbnN0IHNlc3Npb25JZCA9IGlkXG4gICAgICAuc3BsaXQoJy0nKVxuICAgICAgLmZpbHRlcihxdWVzdGlvbklkID0+IHF1ZXN0aW9uSWQgIT09ICdhbnN3ZXInKVxuICAgICAgLmpvaW4oJy0nKVxuICAgIGhhbmRsZUZlZWRiYWNrPy4oZmVlZGJhY2ssIHNlc3Npb25JZClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDTWVzc2FnZUl0ZW1XcmFwcGVyICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAge2lzQXNzaXN0YW50ICYmICFpc1RoaW5raW5nICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIC8+fVxuICAgICAgPFNDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgICAgeyEhbWVzc2FnZUF0dGFjaG1lbnRzLmxlbmd0aCAmJiAoXG4gICAgICAgICAgPFNDQXR0YWNobWVudHNSb3cgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICAgICAgICB7bWVzc2FnZUF0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgLy8gRGV0ZWN0YXIgc2kgZXMgdW4gYXJjaGl2byBkZSBhdWRpb1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQ/LnR5cGU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudE5hbWUgPSBhdHRhY2htZW50Py5uYW1lPy50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgICAgICAgICAgIGNvbnN0IGlzQXVkaW9GaWxlID1cbiAgICAgICAgICAgICAgICBhdHRhY2htZW50VHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKSB8fFxuICAgICAgICAgICAgICAgIFsnZmxhYycsICdtNGEnLCAnbXAzJywgJ21wNCcsICdvZ2EnLCAnb2dnJywgJ3dhdicsICd3ZWJtJ10uaW5jbHVkZXMoYXR0YWNobWVudFR5cGUpIHx8XG4gICAgICAgICAgICAgICAgWycuZmxhYycsICcubTRhJywgJy5tcDMnLCAnLm1wNCcsICcub2dhJywgJy5vZ2cnLCAnLndhdicsICcud2VibSddLnNvbWUoZXh0ID0+XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50TmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChpc0F1ZGlvRmlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiA8QXR0YWNobWVudENhcmRBdWRpbyBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9IGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9IC8+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxBdHRhY2htZW50Q2FyZFxuICAgICAgICAgICAgICAgICAga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2F0dGFjaG1lbnQubmFtZX1gfVxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudD17YXR0YWNobWVudH1cbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZD17KCkgPT4gaGFuZGxlQXR0YWNobWVudERvd25sb2FkKGF0dGFjaG1lbnQpfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXR0YWNobWVudENsaWNrKGF0dGFjaG1lbnQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NBdHRhY2htZW50c1Jvdz5cbiAgICAgICAgKX1cbiAgICAgICAgeyghIW1lc3NhZ2UgfHwgaXNBY3RpdmVTdHJlYW1pbmcpICYmICEoaXNBc3Npc3RhbnQgJiYgISFtZXNzYWdlQXR0YWNobWVudHMubGVuZ3RoKSAmJiAoXG4gICAgICAgICAgPFN0cmVhbWluZ01lc3NhZ2VCb2R5XG4gICAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlID8/ICcnfVxuICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzQWN0aXZlU3RyZWFtaW5nfVxuICAgICAgICAgICAgaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn1cbiAgICAgICAgICAgIGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH1cbiAgICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgICBhcHByb3ZhbD17YXBwcm92YWx9XG4gICAgICAgICAgICBpc0Vycm9yPXtpc0Vycm9yfVxuICAgICAgICAgICAgc291cmNlcz17c291cmNlc31cbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPXtzdWdnZXN0aW9uc31cbiAgICAgICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXA9e2NyZWF0ZUFnZW50Rm9sbG93VXB9XG4gICAgICAgICAgICBoYW5kbGVGZWVkYmFja0NsaWNrPXtoYW5kbGVGZWVkYmFja0NsaWNrfVxuICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXtkaXNhYmxlRmVlZGJhY2sgPz8gbnVsbH1cbiAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljaz17aGFuZGxlU3VnZ2VzdGlvbkNsaWNrfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD17aXNBY3RpdmVTdHJlYW1pbmcgfHwgISFoYXNTZWxlY3RlZFN1Z2dlc3Rpb259XG4gICAgICAgICAgICBtZXNzYWdlSWQ9e2lkfVxuICAgICAgICAgICAgaXNMYXN0TWVzc2FnZT17aXNMYXN0TWVzc2FnZX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7YXBwcm92YWwgJiYgYXBwcm92YWwucGVuZGluZ19hY3Rpb25zICYmIChcbiAgICAgICAgICA8U0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4+XG4gICAgICAgICAgICA8QXBwcm92YWxCb3hcbiAgICAgICAgICAgICAgYWN0aW9ucz17YXBwcm92YWwucGVuZGluZ19hY3Rpb25zfVxuICAgICAgICAgICAgICBzdGF0dXM9e2FwcHJvdmFsU3RhdHVzfVxuICAgICAgICAgICAgICBvbkFwcHJvdmU9e3RocmVhZElkcyA9PiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKHRocmVhZElkcywgJ2FwcHJvdmUnKX1cbiAgICAgICAgICAgICAgb25SZWplY3Q9e3RocmVhZElkcyA9PiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKHRocmVhZElkcywgJ3JlamVjdCcpfVxuICAgICAgICAgICAgICBpc1Byb2plY3REZWxldGVkPXtwcm9wcy5wcm9qZWN0TWV0YWRhdGE/LmlzX2RlbGV0ZWQgPT09IHRydWV9XG4gICAgICAgICAgICAgIGlzRXhwYW5kZWQ9e3Byb3BzLmV4cGFuZGVkfVxuICAgICAgICAgICAgICBoaXRsSW5zdGFuY2VJZD17YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfVxuICAgICAgICAgICAgICB3YXJuaW5nTWVzc2FnZT17YXBwcm92YWwud2FybmluZ19tZXNzYWdlfVxuICAgICAgICAgICAgICBtYW51YWxBcHByb3ZhbERldGVjdGVkPXthcHByb3ZhbC5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4+XG4gICAgICAgICl9XG4gICAgICA8L1NDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgIDxBdHRhY2htZW50UHJldmlld01vZGFsXG4gICAgICAgIGlzT3Blbj17ISFwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VQcmV2aWV3fVxuICAgICAgICBhdHRhY2htZW50PXtwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgIC8+XG4gICAgPC9TQ01lc3NhZ2VJdGVtV3JhcHBlcj5cbiAgKVxufSlcblxuY29uc3QgQ2hhdEFJTWVzc2FnZXNJbm5lciA9ICh7XG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgaW5pdGlhbENoYXRJZCxcbiAgb25FcnJvcixcbiAgb25TZW5kTWVzc2FnZVJlYWR5LFxuICBvblNjcm9sbFRvQm90dG9tLFxuICBhdHRhY2htZW50cyxcbiAgYWdlbnRzLFxuICBleHBhbmRlZCxcbn06IENoYXRBSU1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgeyBpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlLCBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCBhdXRoVXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBtZXNzYWdlc1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgY2hhdEluaXRpYWxpemVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBpc0xvYWRpbmdNb3JlUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCB1c2VyU2Nyb2xsaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBzY3JvbGxUaHJlc2hvbGRSZWYgPSB1c2VSZWYoMzkpXG4gIGNvbnN0IGxhc3RTY3JvbGxUb3BSZWYgPSB1c2VSZWYoMClcbiAgY29uc3Qgc2hvd1Njcm9sbFRvQm90dG9tUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBzY3JvbGxSYWZSZWYgPSB1c2VSZWY8bnVtYmVyIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3Nob3dTY3JvbGxUb0JvdHRvbSwgc2V0U2hvd1Njcm9sbFRvQm90dG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcywgc2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pXG5cbiAgY29uc3Qge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaW5pdGlhbGl6ZUNoYXQsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIHN0b3BHZW5lcmF0aW9uLFxuICB9ID0gdXNlQ2hhdE1hbmFnZXIoe1xuICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCB1bmRlZmluZWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIG9uRXJyb3IsXG4gICAgYXR0YWNobWVudHMsXG4gICAgYWdlbnRzLFxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGNoYW5nZVByb2plY3Qob3B0aW9uKVxuICAgIH0sXG4gICAgW2NoYW5nZVByb2plY3RdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdWdnZXN0aW9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFzdWdnZXN0aW9uPy50cmltKCkpIHJldHVyblxuICAgICAgaWYgKHNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZUlkXSkgcmV0dXJuXG4gICAgICBjb25zdCBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPSBpc01haWFrZXJBZ2VudChhZ2VudClcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRTdWdnZXN0ZWRBbnN3ZXIsIHtcbiAgICAgICAgYWdlbnRfdHlwZTogaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID8gJ21hcmtldHBsYWNlJyA6IGFnZW50Py50eXBlLFxuICAgICAgfSlcbiAgICAgIHNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMocHJldiA9PiAoeyAuLi5wcmV2LCBbbWVzc2FnZUlkXTogdHJ1ZSB9KSlcblxuICAgICAgY29uc3QgdGFyZ2V0TWVzc2FnZSA9IG1lc3NhZ2VzLmZpbmQobXNnID0+IG1zZy5pZCA9PT0gbWVzc2FnZUlkKVxuICAgICAgY29uc3QgaXNSZXRyeVN1Z2dlc3Rpb24gPSAhIXRhcmdldE1lc3NhZ2U/LmlzRXJyb3IgJiYgc3VnZ2VzdGlvbiA9PT0gdCgnY2hhdC5yZXRyeScpXG4gICAgICBpZiAoaXNSZXRyeVN1Z2dlc3Rpb24pIHtcbiAgICAgICAgY29uc3QgbGFzdFVzZXJNZXNzYWdlID0gbWVzc2FnZXNcbiAgICAgICAgICAuZmlsdGVyKG1zZyA9PiBtc2cucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgfHwgbXNnLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLmF0KC0xKVxuICAgICAgICBpZiAobGFzdFVzZXJNZXNzYWdlPy5tZXNzYWdlKSB7XG4gICAgICAgICAgY29uc3QgcmV0cnlBdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlLmF0dGFjaG1lbnRzKVxuICAgICAgICAgICAgPyBsYXN0VXNlck1lc3NhZ2UuYXR0YWNobWVudHNcbiAgICAgICAgICAgIDogQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2Uuc291cmNlcylcbiAgICAgICAgICAgICAgPyBsYXN0VXNlck1lc3NhZ2Uuc291cmNlc1xuICAgICAgICAgICAgICA6IFtdXG4gICAgICAgICAgc2VuZE1lc3NhZ2UobGFzdFVzZXJNZXNzYWdlLm1lc3NhZ2UsIHJldHJ5QXR0YWNobWVudHMpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2VuZE1lc3NhZ2Uoc3VnZ2VzdGlvbilcbiAgICB9LFxuICAgIFtcbiAgICAgIHNlbmRNZXNzYWdlLFxuICAgICAgc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyxcbiAgICAgIGV2ZW50LFxuICAgICAgYWdlbnQ/LmVudGl0eSxcbiAgICAgIGFnZW50Py5uYW1lLFxuICAgICAgYWdlbnQ/LnR5cGUsXG4gICAgICBtZXNzYWdlcyxcbiAgICAgIHQsXG4gICAgICBhdXRoVXNlci5pZCxcbiAgICBdXG4gIClcblxuICAvKipcbiAgICogQWN0dWFsaXphIGVsIGVzdGFkbyBkZWwgYm90w7NuIFwic2Nyb2xsIHRvIGJvdHRvbVwiIGNvbXBhcmFuZG8gbGEgcG9zaWNpw7NuXG4gICAqIGFjdHVhbCBkZWwgc2Nyb2xsIGNvbiBlbCBmb25kby4gVXNhIHVuIHJlZiBwYXJhIGV2aXRhciBgc2V0U3RhdGVgIGN1YW5kb1xuICAgKiBlbCB2YWxvciBubyBjYW1iaWEuXG4gICAqL1xuICBjb25zdCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGlmICghZWwpIHJldHVyblxuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gZWxcbiAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICBpZiAoc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgIT09IHNob3VsZFNob3cpIHtcbiAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgfVxuICB9LCBbXSlcblxuICAvKipcbiAgICogU2Nyb2xsIGlubWVkaWF0byBhbCBmb25kbyAoZGVudHJvIGRlIHJBRiBwYXJhIGNvb3JkaW5hciBjb24gZWwgcGFpbnQpXG4gICAqIHkgYWN0dWFsaXphIGxhIHZpc2liaWxpZGFkIGRlbCBib3TDs24uIFJlc3BldGEgYHNraXBJZlVzZXJTY3JvbGxpbmdgIHBhcmFcbiAgICogbm8gc29icmVzY3JpYmlyIGVsIHNjcm9sbCBtYW51YWwgZGVsIHVzdWFyaW8gZHVyYW50ZSBlbCBzdHJlYW1pbmcuXG4gICAqL1xuICBjb25zdCBzY3JvbGxUb0JvdHRvbVJhZiA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRzOiB7IHNraXBJZlVzZXJTY3JvbGxpbmc/OiBib29sZWFuOyBkZWxheU1zPzogbnVtYmVyIH0gPSB7fSkgPT4ge1xuICAgICAgY29uc3QgeyBza2lwSWZVc2VyU2Nyb2xsaW5nID0gZmFsc2UsIGRlbGF5TXMgPSAwIH0gPSBvcHRzXG4gICAgICBjb25zdCBydW4gPSAoKSA9PiB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWwgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICAgICAgaWYgKCFlbCkgcmV0dXJuXG4gICAgICAgICAgaWYgKHNraXBJZlVzZXJTY3JvbGxpbmcgJiYgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgICBlbC5zY3JvbGxUb3AgPSBlbC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGlmIChkZWxheU1zID4gMCkgc2V0VGltZW91dChydW4sIGRlbGF5TXMpXG4gICAgICBlbHNlIHJ1bigpXG4gICAgfSxcbiAgICBbdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50KSByZXR1cm5cbiAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvKHtcbiAgICAgIHRvcDogbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgfSlcbiAgICAvLyBEYXIgdGllbXBvIGFsIHNtb290aC1zY3JvbGwgYW50ZXMgZGUgcmVjYWxjdWxhciBsYSB2aXNpYmlsaWRhZCBkZWwgYm90w7NuLlxuICAgIHNldFRpbWVvdXQodXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSwgNTAwKVxuICB9LCBbdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV0pXG5cbiAgLy8gQWwgZGVjaWRpciBlbiBlbCBBcHByb3ZhbEJveDogZWwgYm94IGNvbGFwc2EgKGJvdG9uZXMgLT4gYmFkZ2UpIHkgZWwgc3RyZWFtXG4gIC8vIGNvbnRpbsO6YSBhYmFqby4gUmVhY3RpdmFyIGVsIGF1dG8tc2Nyb2xsIHkgc2VndWlyIGVsIGZvbmRvIHBhcmEgcXVlIGxhIHZpc3RhXG4gIC8vIG5vIHF1ZWRlIGF0csOhcyAoZXZpdGEgcXVlIGFwYXJlemNhIGxhIGZsZWNoYSBkZSBzY3JvbGwtdG8tYm90dG9tKS5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbldpdGhTY3JvbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgaGFuZGxlQXBwcm92YWxEZWNpc2lvbj4pID0+IHtcbiAgICAgIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKC4uLmFyZ3MpXG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZih7IGRlbGF5TXM6IDEwMCB9KVxuICAgIH0sXG4gICAgW2hhbmRsZUFwcHJvdmFsRGVjaXNpb24sIHNjcm9sbFRvQm90dG9tUmFmXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2Nyb2xsVG9Cb3R0b20gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuVUlFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGUuY3VycmVudFRhcmdldFxuXG4gICAgICBpZiAoc2Nyb2xsUmFmUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoc2Nyb2xsUmFmUmVmLmN1cnJlbnQpXG4gICAgICB9XG5cbiAgICAgIHNjcm9sbFJhZlJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG5cbiAgICAgICAgY29uc3QgaXNTY3JvbGxpbmdVcCA9IHNjcm9sbFRvcCA8IGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc1Njcm9sbGluZ1VwKSB7XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAxNVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNOZWFyQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0IDwgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAoaXNOZWFyQm90dG9tKSB7XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAzOVxuICAgICAgICB9XG5cbiAgICAgICAgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ID0gIWlzTmVhckJvdHRvbVxuICAgICAgICBsYXN0U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSBzY3JvbGxUb3BcblxuICAgICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcblxuICAgICAgICBpZiAoaXNOZWFyQm90dG9tICYmIG9uU2Nyb2xsVG9Cb3R0b20pIHtcbiAgICAgICAgICBvblNjcm9sbFRvQm90dG9tKClcbiAgICAgICAgfVxuXG4gICAgICAgIGhhbmRsZVNjcm9sbChjb250YWluZXIpXG4gICAgICB9KVxuICAgIH0sXG4gICAgW29uU2Nyb2xsVG9Cb3R0b20sIGhhbmRsZVNjcm9sbCwgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV1cbiAgKVxuXG4gIC8vIHJlZnMgdG8gc3RhYmlsaXplIGZ1bmN0aW9ucyBhbmQgYXZvaWQgdW5uZWNlc3NhcnkgcmUtcmVuZGVyc1xuICBjb25zdCBzZW5kTWVzc2FnZVJlZiA9IHVzZVJlZihzZW5kTWVzc2FnZSlcbiAgY29uc3Qgc3RvcEdlbmVyYXRpb25SZWYgPSB1c2VSZWYoc3RvcEdlbmVyYXRpb24pXG4gIGNvbnN0IG9uU2VuZE1lc3NhZ2VSZWFkeVJlZiA9IHVzZVJlZihvblNlbmRNZXNzYWdlUmVhZHkpXG4gIGNvbnN0IHNlbmRNZXNzYWdlUHJveHlSZWYgPSB1c2VSZWYoXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4gc2VuZE1lc3NhZ2VSZWYuY3VycmVudChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gIClcbiAgY29uc3Qgc3RvcEdlbmVyYXRpb25Qcm94eVJlZiA9IHVzZVJlZigoKSA9PiBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50KCkpXG5cbiAgLy8gdXBkYXRlIHJlZnMgd2hlbiBmdW5jdGlvbnMgY2hhbmdlXG4gIHNlbmRNZXNzYWdlUmVmLmN1cnJlbnQgPSBzZW5kTWVzc2FnZVxuICBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50ID0gc3RvcEdlbmVyYXRpb25cbiAgb25TZW5kTWVzc2FnZVJlYWR5UmVmLmN1cnJlbnQgPSBvblNlbmRNZXNzYWdlUmVhZHlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCkge1xuICAgICAgb25TZW5kTWVzc2FnZVJlYWR5UmVmLmN1cnJlbnQoXG4gICAgICAgIHNlbmRNZXNzYWdlUHJveHlSZWYuY3VycmVudCxcbiAgICAgICAgc3RvcEdlbmVyYXRpb25Qcm94eVJlZi5jdXJyZW50LFxuICAgICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICAgIGlzV3JpdGluZ1xuICAgICAgKVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZSwgaXNXcml0aW5nXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzTG9hZGluZ01vcmVSZWYuY3VycmVudCA9IGlzTG9hZGluZ01vcmVNZXNzYWdlc1xuICB9LCBbaXNMb2FkaW5nTW9yZU1lc3NhZ2VzXSlcblxuICAvLyBDdWFuZG8gZWwgYWdlbnRlIGVtcGllemEgYSByZXNwb25kZXIsIHJlc2V0ZWFyIGVsIGZsYWcgeSBlbCB1bWJyYWwgcGFyYSBhY3RpdmFyIGVsIGF1dG8tc2Nyb2xsXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdhaXRpbmdSZXNwb25zZSkge1xuICAgICAgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMzlcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2VdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjaGF0SW5pdGlhbGl6ZWRSZWYuY3VycmVudCkge1xuICAgICAgY2hhdEluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBpbml0aWFsaXplQ2hhdCgpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBBdXRvc2Nyb2xsIG1pZW50cmFzIGVsIHRleHRvIGRlbCBzdHJlYW0gY3JlY2UuIEVsIHRleHRvIHNlIHBpbnRhIGFsIHJpdG1vXG4gIC8vIGRlIGB1c2VTbW9vdGhTdHJlYW1UZXh0YCAofjYwZnBzKSwgbm8gYWwgcml0bW8gZGUgbGxlZ2FkYSBkZSB0b2tlbnMgZGVsXG4gIC8vIGJhY2tlbmQ6IHBvciBlc28gYWPDoSB1c2Ftb3MgdW4gbG9vcCBkZSByQUYgcXVlIGNvbXBhcmEgYHNjcm9sbEhlaWdodGBcbiAgLy8gY29udHJhIGVsIMO6bHRpbW8gdmFsb3Igb2JzZXJ2YWRvIHkgYWp1c3RhIHNvbG8gY3VhbmRvIGNhbWJpYS4gQXPDrSBlbFxuICAvLyBzY3JvbGwgcXVlZGEgcGVyZmVjdGFtZW50ZSBzaW5jcm9uaXphZG8gY29uIGxhIGFuaW1hY2nDs24gZGVsIHRleHRvIHNpblxuICAvLyBkZXBlbmRlciBkZSBsYSBjYWRlbmNpYSBkZWwgc3RyZWFtaW5nU3RvcmUuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF3YWl0aW5nUmVzcG9uc2UgJiYgIWlzV3JpdGluZykgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGlmICghbWVzc2FnZXNSZWYuY3VycmVudCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgIGxldCBsYXN0SGVpZ2h0ID0gbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHRcblxuICAgIGNvbnN0IHRpY2sgPSAoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZWwpIHtcbiAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudEhlaWdodCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgaWYgKGN1cnJlbnRIZWlnaHQgIT09IGxhc3RIZWlnaHQpIHtcbiAgICAgICAgbGFzdEhlaWdodCA9IGN1cnJlbnRIZWlnaHRcbiAgICAgICAgaWYgKCF1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBlbC5zY3JvbGxUb3AgPSBjdXJyZW50SGVpZ2h0XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gICAgICB9XG4gICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKVxuICAgIH1cblxuICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyYWZJZCAhPSBudWxsKSBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZClcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV0pXG5cbiAgLy8gQWwgY29tZW56YXIgYSBlc3BlcmFyIGxhIHJlc3B1ZXN0YSBkZWwgYmFja2VuZCwgc2Nyb2xsIGluaWNpYWwgYWwgZm9uZG8uXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdhaXRpbmdSZXNwb25zZSAmJiBtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZih7IHNraXBJZlVzZXJTY3JvbGxpbmc6IHRydWUgfSlcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIHNjcm9sbFRvQm90dG9tUmFmXSlcblxuICAvLyBTY3JvbGwgY3VhbmRvIGNhbWJpYW4gbG9zIG1lbnNhamVzOiBkaXN0aW5ndWUgXCJudWV2byBtZW5zYWplXCIgKGFncmVnYWRvKVxuICAvLyBkZSBcInJlZW1wbGF6b1wiIChtaXNtbyBpZC9sZW5ndGgsIGVqLiBmZWVkYmFjayBvIGFwcHJvdmFsU3RhdHVzKS4gRW5cbiAgLy8gcmVlbXBsYXpvcyBzb2xvIHNlIHJlY2FsY3VsYSBsYSB2aXNpYmlsaWRhZCBkZWwgYm90w7NuIHNpbiBmb3J6YXIgc2Nyb2xsLlxuICBjb25zdCBsYXN0TWVzc2FnZUlkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGxhc3RNZXNzYWdlc0xlbmd0aFJlZiA9IHVzZVJlZjxudW1iZXI+KDApXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50IHx8IGxvYWRpbmdNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG4gICAgY29uc3QgbGFzdElkID0gbGFzdE1lc3NhZ2U/LmlkID8/IG51bGxcbiAgICBjb25zdCBwcmV2SWQgPSBsYXN0TWVzc2FnZUlkUmVmLmN1cnJlbnRcbiAgICBjb25zdCBwcmV2TGVuID0gbGFzdE1lc3NhZ2VzTGVuZ3RoUmVmLmN1cnJlbnRcbiAgICBsYXN0TWVzc2FnZUlkUmVmLmN1cnJlbnQgPSBsYXN0SWRcbiAgICBsYXN0TWVzc2FnZXNMZW5ndGhSZWYuY3VycmVudCA9IG1lc3NhZ2VzLmxlbmd0aFxuXG4gICAgY29uc3QgaXNOZXdNZXNzYWdlID0gbGFzdElkICE9PSBwcmV2SWQgfHwgbWVzc2FnZXMubGVuZ3RoICE9PSBwcmV2TGVuXG4gICAgaWYgKCFpc05ld01lc3NhZ2UpIHtcbiAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTAwXG4gICAgY29uc3QgaGFzSW5pdGlhbE1lc3NhZ2UgPSBtZXNzYWdlcy5zb21lKG1zZyA9PiBtc2cuaWQgPT09ICd1c2VyLWluaXRpYWwtbWVzc2FnZScpXG4gICAgY29uc3QgaXNBcHByb3ZhbCA9ICEhbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2FwcHJvdmFsLScpIHx8ICEhbGFzdE1lc3NhZ2UuYXBwcm92YWwpXG4gICAgY29uc3QgaXNBbnN3ZXJPclF1ZXN0aW9uID1cbiAgICAgICEhbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2Fuc3dlci0nKSB8fCBsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdxdWVzdGlvbi0nKSlcblxuICAgIC8vIEFwcHJvdmFsOiBzZWN1ZW5jaWEgZGUgc2Nyb2xscyBjb24gZGVsYXkgcG9ycXVlIGVsIEFwcHJvdmFsQm94IG5lY2VzaXRhXG4gICAgLy8gdW4gdGljayBwYXJhIG1lZGlyc2UuIFNjcm9sbGVhIGF1bnF1ZSBlbCB1c3VhcmlvIG5vIGVzdMOpIGFsIGZvbmRvIHNpIG5vXG4gICAgLy8gZXN0w6Egc2Nyb2xsZWFuZG8gbWFudWFsbWVudGUuXG4gICAgaWYgKGlzQXBwcm92YWwgJiYgKGlzQXRCb3R0b20gfHwgIXVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCkpIHtcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKHsgZGVsYXlNczogMTAwIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBOdWV2b3MgYW5zd2VyL3F1ZXN0aW9uOiBzY3JvbGwgc2kgZWwgdXN1YXJpbyB5YSBlc3RhYmEgYWwgZm9uZG8uXG4gICAgaWYgKGlzQW5zd2VyT3JRdWVzdGlvbiAmJiBpc0F0Qm90dG9tKSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBDYXNvIGJvcmRlOiBjYW1iaW9zIGRlIG1lbnNhamVzIHNpbiBzZXIgbnVldm8gYW5zd2VyL3VzZXIvYXBwcm92YWxcbiAgICAvLyBwZXJvIHPDrSB1biBtZW5zYWplIG51ZXZvIChubyBlbCBcInVzZXItaW5pdGlhbC1tZXNzYWdlXCIpLiBTY3JvbGxlYS5cbiAgICBpZiAoIWlzQW5zd2VyT3JRdWVzdGlvbiAmJiAhaXNBcHByb3ZhbCAmJiAhaGFzSW5pdGlhbE1lc3NhZ2UgJiYgbWVzc2FnZXMubGVuZ3RoID4gcHJldkxlbikge1xuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gIH0sIFttZXNzYWdlcywgbG9hZGluZ01lc3NhZ2VzLCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIHNjcm9sbFRvQm90dG9tUmFmLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICAvLyBFc3RhZG8gaW5pY2lhbCBkZWwgYm90w7NuIHNjcm9sbC10by1ib3R0b20gYWwgdGVybWluYXIgbG9hZGluZ01lc3NhZ2VzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgICB9XG4gIH0sIFtsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLmxlbmd0aCwgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV0pXG5cbiAgLy8gT2J0ZW5lciBlbCDDumx0aW1vIG1lbnNhamUgZGVsIHVzdWFyaW8gcGFyYSB2ZXJpZmljYXIgc2kgdGllbmUgYXR0YWNobWVudHNcbiAgY29uc3QgbGFzdFVzZXJNZXNzYWdlID0gbWVzc2FnZXNcbiAgICAuZmlsdGVyKG1zZyA9PiBtc2cucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgfHwgbXNnLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkpXG4gICAgLmF0KC0xKVxuXG4gIGNvbnN0IGF0dGFjaG1lbnRzQ291bnQgPVxuICAgIChBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZT8uYXR0YWNobWVudHMpID8gbGFzdFVzZXJNZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aCA6IDApIHx8XG4gICAgKEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlPy5zb3VyY2VzKSA/IGxhc3RVc2VyTWVzc2FnZS5zb3VyY2VzLmxlbmd0aCA6IDApXG5cbiAgY29uc3Qgc3RyZWFtTG9hZGluZ0Rpc3BsYXkgPSByZXNvbHZlU3RyZWFtTG9hZGluZ0Rpc3BsYXkoe1xuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIGFjdGl2ZUxvYWRpbmdzOiBhY3RpdmVMb2FkaW5ncyB8fCB7fSxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGhhc0F0dGFjaG1lbnRzOiBCb29sZWFuKGF0dGFjaG1lbnRzQ291bnQpLFxuICAgIGF0dGFjaG1lbnRzQ291bnQsXG4gICAgdCxcbiAgfSlcblxuICBjb25zdCBzdHJlYW1UaW1lbGluZSA9IHVzZVN0cmVhbVRpbWVsaW5lKClcbiAgY29uc3Qgc2hvd1N0cmVhbVR1cm5UaW1lbGluZSA9IEJvb2xlYW4oXG4gICAgc3RyZWFtVGltZWxpbmUudHVybklkICYmICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nIHx8IHN0cmVhbVRpbWVsaW5lLnNlZ21lbnRzLmxlbmd0aCA+IDApXG4gIClcblxuICBjb25zdCBsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBmb3IgKGxldCBpID0gbWVzc2FnZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgIGlmIChtZXNzYWdlc1tpXS5hcHByb3ZhbCkgcmV0dXJuIGlcbiAgICB9XG4gICAgcmV0dXJuIC0xXG4gIH0sIFttZXNzYWdlc10pXG5cbiAgY29uc3QgYW5jaG9yVGltZWxpbmVUb0FwcHJvdmFsID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGxhc3RBcHByb3ZhbE1lc3NhZ2VJbmRleCA8IDAgfHwgIXNob3dTdHJlYW1UdXJuVGltZWxpbmUpIHJldHVybiBmYWxzZVxuICAgIHJldHVybiBtZXNzYWdlc1tsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXhdLmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnXG4gIH0sIFtsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXgsIG1lc3NhZ2VzLCBzaG93U3RyZWFtVHVyblRpbWVsaW5lXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd1N0cmVhbVR1cm5UaW1lbGluZSkgcmV0dXJuXG4gICAgY29uc3QgYXBwcm92YWxNZXNzYWdlID0gbGFzdEFwcHJvdmFsTWVzc2FnZUluZGV4ID49IDAgPyBtZXNzYWdlc1tsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXhdIDogdW5kZWZpbmVkXG4gICAgc3RyZWFtRGVidWdMb2coJ2NoYXRVSScsICdzdHJlYW1UdXJuVGltZWxpbmU6cmVuZGVyJywge1xuICAgICAgc2hvd1N0cmVhbVR1cm5UaW1lbGluZSxcbiAgICAgIGFuY2hvclRpbWVsaW5lVG9BcHByb3ZhbCxcbiAgICAgIHR1cm5JZDogc3RyZWFtVGltZWxpbmUudHVybklkLFxuICAgICAgc2VnbWVudENvdW50OiBzdHJlYW1UaW1lbGluZS5zZWdtZW50cy5sZW5ndGgsXG4gICAgICB0aW1lbGluZTogc3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdChzdHJlYW1UaW1lbGluZSksXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBpc1dyaXRpbmcsXG4gICAgICBhcHByb3ZhbE1lc3NhZ2VJZDogYXBwcm92YWxNZXNzYWdlPy5pZCxcbiAgICAgIGFwcHJvdmFsU3RhdHVzOiBhcHByb3ZhbE1lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzLFxuICAgICAgcGVuZGluZ1Rvb2xzOiBhcHByb3ZhbE1lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnM/Lm1hcChhID0+IGEudG9vbF9uYW1lKSxcbiAgICB9KVxuICAgIGlmIChhcHByb3ZhbE1lc3NhZ2U/LmFwcHJvdmFsICYmIGFwcHJvdmFsTWVzc2FnZS5hcHByb3ZhbFN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAoe1xuICAgICAgICBzY29wZTogJ2NoYXRVSScsXG4gICAgICAgIHNvdXJjZTogJ3RpbWVsaW5lU2VnbWVudCcsXG4gICAgICAgIGhpdGxDb250ZXh0OiB7XG4gICAgICAgICAgbWVzc2FnZUlkOiBhcHByb3ZhbE1lc3NhZ2UuaWQsXG4gICAgICAgICAgbWVzc2FnZVRleHQ6IGFwcHJvdmFsTWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIGFwcHJvdmFsOiBhcHByb3ZhbE1lc3NhZ2UuYXBwcm92YWwsXG4gICAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsTWVzc2FnZS5hcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgICAgdGhyZWFkSWRzOiBhcHByb3ZhbE1lc3NhZ2UuYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5tYXAoYSA9PiBhLnRocmVhZF9pZCksXG4gICAgICAgIH0sXG4gICAgICAgIHVpU3VyZmFjZXM6IFsnYXBwcm92YWxCb3gnLCAnc3RyZWFtVGltZWxpbmUnXSxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXG4gICAgc2hvd1N0cmVhbVR1cm5UaW1lbGluZSxcbiAgICBhbmNob3JUaW1lbGluZVRvQXBwcm92YWwsXG4gICAgc3RyZWFtVGltZWxpbmUsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXgsXG4gICAgbWVzc2FnZXMsXG4gIF0pXG5cbiAgY29uc3QgcmVuZGVyVGltZWxpbmVDb250ZW50QmxvY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgdGV4dCxcbiAgICAgIGlzU3RyZWFtaW5nLFxuICAgICAgc2hvd0Fzc2lzdGFudEhlYWRlcixcbiAgICB9OiB7XG4gICAgICBzZWdtZW50SWQ6IHN0cmluZ1xuICAgICAgdGV4dDogc3RyaW5nXG4gICAgICBpc1N0cmVhbWluZzogYm9vbGVhblxuICAgICAgc2hvd0Fzc2lzdGFudEhlYWRlcjogYm9vbGVhblxuICAgIH0pID0+IChcbiAgICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ+XG4gICAgICAgIHtzaG93QXNzaXN0YW50SGVhZGVyICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIC8+fVxuICAgICAgICA8U0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgICAgIDxUaW1lbGluZVNlZ21lbnRCb2R5IHRleHQ9e3RleHR9IGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ30gLz5cbiAgICAgICAgPC9TQ01lc3NhZ2VJdGVtSW5uZXI+XG4gICAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICAgICksXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IHN0cmVhbVR1cm5UaW1lbGluZSA9IHNob3dTdHJlYW1UdXJuVGltZWxpbmUgPyAoXG4gICAgPFN0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZVxuICAgICAgc2VnbWVudHM9e3N0cmVhbVRpbWVsaW5lLnNlZ21lbnRzfVxuICAgICAgaW5pdGlhbEFjdGl2aXR5PXtzdHJlYW1Mb2FkaW5nRGlzcGxheX1cbiAgICAgIHdhaXRpbmdSZXNwb25zZT17d2FpdGluZ1Jlc3BvbnNlfVxuICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICByZW5kZXJDb250ZW50QmxvY2s9e3JlbmRlclRpbWVsaW5lQ29udGVudEJsb2NrfVxuICAgIC8+XG4gICkgOiBudWxsXG5cbiAgY29uc3QgaXNTY3JvbGxPblBhcmVudCA9ICEhZXhwYW5kZWRcbiAgY29uc3QgaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID0gaXNNYWlha2VyQWdlbnQoYWdlbnQpXG5cbiAgLy8gQWwgZXhwYW5kaXIvY29udHJhZXIgZWwgbW9kYWwgZWwgcmVmIHBhc2EgYSBvdHJvIGNvbnRlbmVkb3IgKHNjcm9sbFRvcCBzZSByZXNldGVhIGEgMCkuXG4gIC8vIFJlc3RhdXJhciBsYSBwb3NpY2nDs24gZGUgc2Nyb2xsIGFudGVzIGRlbCBwYWludCBwYXJhIGV2aXRhciBxdWUgbGEgY29udmVyc2FjacOzbiBzYWx0ZSBhcnJpYmEuXG4gIGNvbnN0IGV4cGFuZGVkUmVmID0gdXNlUmVmKGV4cGFuZGVkKVxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChleHBhbmRlZFJlZi5jdXJyZW50ICE9PSBleHBhbmRlZCAmJiBtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFRvcCA9IGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudFxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBzYXZlZFNjcm9sbFRvcFxuICAgICAgZXhwYW5kZWRSZWYuY3VycmVudCA9IGV4cGFuZGVkXG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cGFuZGVkUmVmLmN1cnJlbnQgPSBleHBhbmRlZFxuICAgIH1cbiAgfSwgW2V4cGFuZGVkXSlcblxuICBpZiAobG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGYWRlIGZpbGw+XG4gICAgICAgIDxMb2FkZXIgLz5cbiAgICAgIDwvRmFkZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBtZXNzYWdlc0NvbnRlbnQgPSAoXG4gICAgPD5cbiAgICAgIHtpc0xvYWRpbmdNb3JlTWVzc2FnZXMgJiYgPExvYWRpbmdUZXh0IHRleHQ9e3QoJ2NoYXQubG9hZGluZ01vcmUnKX0gLz59XG4gICAgICA8PlxuICAgICAgICB7bWVzc2FnZXMubWFwKChtZXNzYWdlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzQXNzaXN0YW50TWVzc2FnZSA9IG1lc3NhZ2Uucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCBtZXNzYWdlLnVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG4gICAgICAgICAgY29uc3QgaXNMYXN0TWVzc2FnZSA9IGluZGV4ID09PSBtZXNzYWdlcy5sZW5ndGggLSAxXG4gICAgICAgICAgY29uc3QgaXNTdHJlYW1pbmdQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICBpc0Fzc2lzdGFudE1lc3NhZ2UgJiYgaXNMYXN0TWVzc2FnZSAmJiBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkKG1lc3NhZ2UuaWQpXG4gICAgICAgICAgY29uc3QgaXNTdHJlYW1pbmcgPSBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyICYmICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKVxuXG4gICAgICAgICAgLy8gTm8gZmlsdHJhciBlbCBwbGFjZWhvbGRlciBkZWwgbWVuc2FqZSBlbiBzdHJlYW1pbmc6IHN1IHRleHRvIHZpdmVcbiAgICAgICAgICAvLyBlbiBlbCBzdHJlYW1pbmdTdG9yZSB5IGBtZXNzYWdlLm1lc3NhZ2VgIGVzICcnIGhhc3RhIGVsIGNvbXBsZXRlLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFpc1N0cmVhbWluZ1BsYWNlaG9sZGVyICYmXG4gICAgICAgICAgICAhaXNTdHJlYW1pbmcgJiZcbiAgICAgICAgICAgICEobWVzc2FnZS5hdHRhY2htZW50cz8ubGVuZ3RoIHx8IG1lc3NhZ2Uuc291cmNlcz8ubGVuZ3RoKSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UubWVzc2FnZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UucHJvamVjdD8ubmFtZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UuYXBwcm92YWxcbiAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuXG4gICAgICAgICAgY29uc3QgbWVzc2FnZUZlZWRiYWNrID1cbiAgICAgICAgICAgIG1lc3NhZ2U/Lndhc0hlbHBmdWwgPT09IHVuZGVmaW5lZCB8fCBtZXNzYWdlLndhc0hlbHBmdWwgPT09IG51bGxcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbWVzc2FnZS53YXNIZWxwZnVsXG4gICAgICAgICAgICAgICAgPyBGZWVkYmFjay5USFVNQlNfVVBcbiAgICAgICAgICAgICAgICA6IEZlZWRiYWNrLlRIVU1CU19ET1dOXG5cbiAgICAgICAgICAvLyBLZXkgZXN0YWJsZTogc29sbyBtZXNzYWdlLmlkIHBhcmEgZXZpdGFyIHJlbW91bnQgZHVyYW50ZSBzdHJlYW1pbmcgKG1lc3NhZ2UuZGF0ZSBwdWVkZSBjYW1iaWFyKVxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VLZXkgPSBtZXNzYWdlLmlkID8/IGBtc2ctJHtpbmRleH1gXG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17bWVzc2FnZUtleX0+XG4gICAgICAgICAgICAgIDxNZXNzYWdlSXRlbVxuICAgICAgICAgICAgICAgIHsuLi5tZXNzYWdlfVxuICAgICAgICAgICAgICAgIGF1dGhVc2VyPXthdXRoVXNlcn1cbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249e2hhbmRsZVNlbGVjdE9wdGlvbn1cbiAgICAgICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17aGFuZGxlRmVlZGJhY2t9XG4gICAgICAgICAgICAgICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbj17aGFuZGxlQXBwcm92YWxEZWNpc2lvbldpdGhTY3JvbGx9XG4gICAgICAgICAgICAgICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrPXtoYW5kbGVTdWdnZXN0aW9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uPXshIXNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZS5pZF19XG4gICAgICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXttZXNzYWdlRmVlZGJhY2t9XG4gICAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2U9e2lzTGFzdE1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7YW5jaG9yVGltZWxpbmVUb0FwcHJvdmFsICYmIGluZGV4ID09PSBsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXggJiYgc3RyZWFtVHVyblRpbWVsaW5lfVxuICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgICB7c2hvd1N0cmVhbVR1cm5UaW1lbGluZSAmJiAhYW5jaG9yVGltZWxpbmVUb0FwcHJvdmFsICYmIHN0cmVhbVR1cm5UaW1lbGluZX1cbiAgICAgIDwvPlxuICAgIDwvPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlc091dGVyICRzY3JvbGxPblBhcmVudD17aXNTY3JvbGxPblBhcmVudH0+XG4gICAgICB7aXNTY3JvbGxPblBhcmVudCA/IChcbiAgICAgICAgPFNDTWVzc2FnZXNTY3JvbGwgcmVmPXttZXNzYWdlc1JlZn0gb25TY3JvbGw9e2hhbmRsZVNjcm9sbFRvQm90dG9tfT5cbiAgICAgICAgICA8U0NNZXNzYWdlc0lubmVyICRzY3JvbGxPblBhcmVudD17aXNTY3JvbGxPblBhcmVudH0gJGlzTWFya2V0cGxhY2VHbG9iYWw9e2lzTWFya2V0cGxhY2VHbG9iYWxBZ2VudH0+XG4gICAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICAgIDwvU0NNZXNzYWdlc0lubmVyPlxuICAgICAgICA8L1NDTWVzc2FnZXNTY3JvbGw+XG4gICAgICApIDogKFxuICAgICAgICA8U0NNZXNzYWdlc0lubmVyXG4gICAgICAgICAgcmVmPXttZXNzYWdlc1JlZn1cbiAgICAgICAgICBvblNjcm9sbD17aGFuZGxlU2Nyb2xsVG9Cb3R0b219XG4gICAgICAgICAgJHNjcm9sbE9uUGFyZW50PXtmYWxzZX1cbiAgICAgICAgICAkaXNNYXJrZXRwbGFjZUdsb2JhbD17aXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50fVxuICAgICAgICA+XG4gICAgICAgICAge21lc3NhZ2VzQ29udGVudH1cbiAgICAgICAgPC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Njcm9sbFRvQm90dG9tICYmIChcbiAgICAgICAgPFNjcm9sbFRvQm90dG9tQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tfT5cbiAgICAgICAgICA8QXJyb3dTbWFsbERvd24gY29sb3I9XCIjNjY2XCIgd2lkdGg9XCIyMHB4XCIgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgIDwvU2Nyb2xsVG9Cb3R0b21CdXR0b24+XG4gICAgICApfVxuICAgIDwvU0NNZXNzYWdlc091dGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNZXNzYWdlcyA9IFJlYWN0Lm1lbW8oQ2hhdEFJTWVzc2FnZXNJbm5lcilcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLEtBQUssSUFBUUMsSUFBSSxFQUFhQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsZUFBZSxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDdEgsU0FBU0MsVUFBVSxRQUFRLFlBQVk7QUFDdkMsU0FBU0MsZ0JBQWdCLFFBQVEsa0JBQWtCO0FBQ25ELFNBQVNDLGNBQWMsUUFBUSxpREFBaUQ7QUFFaEYsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxXQUFXLFFBQVEscUNBQXFDO0FBQ2pFLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxtQkFBbUIsUUFBUSxnREFBZ0Q7QUFFcEYsU0FBc0JDLGVBQWUsUUFBUSxxQkFBcUI7QUFDbEUsU0FBU0MsOEJB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LHNCQUFzQixFQUFFMEwsZ0NBQWlDO1lBQ3pEdk0scUJBQXFCLEVBQUVBLHFCQUFzQjtZQUM3Q2lCLHFCQUFxQixFQUFFLENBQUMsQ0FBQ21JLDRCQUE0QixDQUFDbk0sT0FBTyxDQUFDYixFQUFFLENBQUU7WUFDbEV1RCxlQUFlLEVBQUV5UixlQUFnQjtZQUNqQ3RVLFdBQVcsRUFBRUEsV0FBWTtZQUN6QnNELGFBQWEsRUFBRUEsYUFBYztZQUM3QjJHLFFBQVEsRUFBRUE7VUFBUyxFQUNwQixDQUFDLEVBQ0RvSSx3QkFBd0IsSUFBSTNKLEtBQUssS0FBS3lKLHdCQUF3QixJQUFJcUIsa0JBQWtCO1FBQUEsR0FkbEVrQixVQWVMLENBQUM7TUFFckIsQ0FBQyxDQUFDLEVBQ0QxQyxzQkFBc0IsSUFBSSxDQUFDSyx3QkFBd0IsSUFBSW1CLGtCQUFrQjtJQUFBLENBQzFFLENBQUM7RUFBQSxDQUNILENBQ0g7RUFFRCxvQkFDRTNXLEtBQUEsQ0FBQ3pCLGVBQWU7SUFBQ3VaLGVBQWUsRUFBRWhCLGdCQUFpQjtJQUFBdFcsUUFBQSxHQUNoRHNXLGdCQUFnQixnQkFDZmhYLElBQUEsQ0FBQ3RCLGdCQUFnQjtNQUFDdVosR0FBRyxFQUFFcEosV0FBWTtNQUFDcUosUUFBUSxFQUFFbkYsb0JBQXFCO01BQUFyUyxRQUFBLGVBQ2pFVixJQUFBLENBQUNyQixlQUFlO1FBQUNxWixlQUFlLEVBQUVoQixnQkFBaUI7UUFBQ21CLG9CQUFvQixFQUFFckgsd0JBQXlCO1FBQUFwUSxRQUFBLEVBQ2hHMFc7TUFBZSxDQUNEO0lBQUMsQ0FDRixDQUFDLGdCQUVuQnBYLElBQUEsQ0FBQ3JCLGVBQWU7TUFDZHNaLEdBQUcsRUFBRXBKLFdBQVk7TUFDakJxSixRQUFRLEVBQUVuRixvQkFBcUI7TUFDL0JpRixlQUFlLEVBQUUsS0FBTTtNQUN2Qkcsb0JBQW9CLEVBQUVySCx3QkFBeUI7TUFBQXBRLFFBQUEsRUFFOUMwVztJQUFlLENBQ0QsQ0FDbEIsRUFFQTdILGtCQUFrQixpQkFDakJ2UCxJQUFBLENBQUN4QixvQkFBb0I7TUFBQ21DLElBQUksRUFBQyxRQUFRO01BQUNpQyxPQUFPLEVBQUU4UCx5QkFBMEI7TUFBQWhTLFFBQUEsZUFDckVWLElBQUEsQ0FBQ3ZELGNBQWM7UUFBQzJiLEtBQUssRUFBQyxNQUFNO1FBQUN2WCxLQUFLLEVBQUMsTUFBTTtRQUFDQyxNQUFNLEVBQUM7TUFBTSxDQUFFO0lBQUMsQ0FDdEMsQ0FDdkI7RUFBQSxDQUNjLENBQUM7QUFFdEIsQ0FBQztBQUVELE9BQU8sSUFBTXVYLGNBQWMsZ0JBQUd0YyxLQUFLLENBQUNDLElBQUksQ0FBQytSLG1CQUFtQixDQUFDIiwiaWdub3JlTGlzdCI6W119
1045
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIlN0cmVhbWRvd24iLCJjcmVhdGVDb2RlUGx1Z2luIiwiQXJyb3dTbWFsbERvd24iLCJBdHRhY2htZW50Q2FyZCIsIkFwcHJvdmFsQm94IiwiQXR0YWNobWVudFByZXZpZXdNb2RhbCIsIkF0dGFjaG1lbnRDYXJkQXVkaW8iLCJDaGF0SGlzdG9yeVJvbGUiLCJNQUlBX1NUUkVBTURPV05fUkVIWVBFX1BMVUdJTlMiLCJyZW5kZXJUZXh0V2l0aE1lbnRpb25zIiwiaGFzSW5saW5lTWFya2VycyIsImlzTWFpYWtlckFnZW50IiwidXNlVXNlciIsInVzZVQiLCJ1c2VDaGF0TWFuYWdlciIsInVzZVNtb290aFN0cmVhbVRleHQiLCJ1c2VTdHJlYW1pbmdNZXNzYWdlIiwiTG9hZGluZ1RleHQiLCJpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwicmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5IiwiTG9hZGVyIiwidXNlU3RyZWFtVGltZWxpbmUiLCJTdHJlYW1Bc3Npc3RhbnRUdXJuVGltZWxpbmUiLCJzdHJlYW1EZWJ1Z0xvZyIsInN0cmVhbURlYnVnTG9nSGl0bFVpT3ZlcmxhcCIsInN1bW1hcml6ZVRpbWVsaW5lU25hcHNob3QiLCJGYWRlIiwiTWVzc2FnZUZyb21Vc2VyIiwiTWVzc2FnZUZyb21PdGhlciIsIk1lc3NhZ2VDb250ZW50RnJvbVVzZXIiLCJNZXNzYWdlQ29udGVudEZyb21PdGhlciIsIk1lc3NhZ2VGZWVkYmFjayIsIlNDQ0FJTWVzc2FnZVdyYXBwZXIiLCJTY3JvbGxUb0JvdHRvbUJ1dHRvbiIsIlNDTWVzc2FnZXNPdXRlciIsIlNDTWVzc2FnZXNTY3JvbGwiLCJTQ01lc3NhZ2VzSW5uZXIiLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwiU0NBc3Npc3RhbnRBdmF0YXIiLCJTQ01lc3NhZ2VJdGVtV3JhcHBlciIsIlNDTWVzc2FnZUl0ZW1Jbm5lciIsIlNDQXR0YWNobWVudHNSb3ciLCJTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbiIsIkZlZWRiYWNrIiwidXNlR2xvYmFsQ29udGV4dCIsIk1BSUFJY29uIiwiRW50aXR5TGlua0N1c3RvbUxpbmsiLCJnZXRFbnRpdHlMaW5rV3JhcHBlckNsYXNzTmFtZSIsIkNoYXRBSVN1Z2dlc3Rpb25zIiwiQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJkb3dubG9hZEZpbGVGcm9tVXJsIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiY29kZSIsInRoZW1lcyIsIkFzc2lzdGFudEF2YXRhcklubmVyIiwiX3VzZUdsb2JhbENvbnRleHQiLCJhZ2VudCIsImNoaWxkcmVuIiwidHlwZSIsImlzX2xlZ2FjeV9jb250ZXh0Iiwid2lkdGgiLCJoZWlnaHQiLCJlbW9qaSIsIkFzc2lzdGFudEF2YXRhciIsIk1lc3NhZ2VXcmFwcGVyIiwiX3JlZiIsImlzQ3VycmVudFVzZXIiLCJwcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIk1lc3NhZ2VDb21wb25lbnQiLCJfb2JqZWN0U3ByZWFkIiwiTWVzc2FnZUNvbnRlbnRXcmFwcGVyIiwiX3JlZjIiLCJfZXhjbHVkZWQyIiwiTWVzc2FnZUNvbnRlbnRDb21wb25lbnQiLCJNZXNzYWdlT3B0aW9ucyIsIl9yZWYzIiwib3B0aW9ucyIsImhhbmRsZVNlbGVjdE9wdGlvbiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlbGVjdGVkT3B0aW9uIiwic2V0U2VsZWN0ZWRPcHRpb24iLCJoYW5kbGVTZWxlY3QiLCJvcHRpb24iLCJtYXAiLCIkaGFzU2VsZWN0aW9uIiwiJGRpbW1lZCIsImlkIiwib25DbGljayIsIm5hbWUiLCJBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiX3VzZUdsb2JhbENvbnRleHQyIiwiZGlzcGxheU5hbWUiLCJTdHJlYW1pbmdNZXNzYWdlQm9keSIsIl9wcm9wcyRjcmVhdGVBZ2VudEZvbCIsIl9wcm9wcyRzdWdnZXN0aW9ucyIsInN0cmVhbWluZ1RleHQiLCJpc1N0cmVhbWluZyIsIm1lc3NhZ2VJZCIsInJhd1RleHQiLCJtZXNzYWdlIiwid2luRmxhZ3MiLCJ3aW5kb3ciLCJkaXNwbGF5VGV4dCIsImVuYWJsZWQiLCJtYXhDaGFyc1BlckZyYW1lIiwic25hcFRvV29yZEJvdW5kYXJ5Iiwic3RyZWFtTGFnTXMiLCJ0YXJnZXRMYWdNcyIsInN0cmVhbUFkYXB0IiwiYWRhcHRUb0JhY2tlbmRSYXRlIiwic3RyZWFtQnVmZmVyTXMiLCJ0YXJnZXRCdWZmZXJNcyIsInN0cmVhbU1pbkJ1ZmZlciIsIm1pbkJ1ZmZlckNoYXJzIiwic3RyZWFtV2FybXVwTXMiLCJ3YXJtdXBNcyIsImNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiYWdlbnRJZCIsImhhc01lbnRpb25zIiwibWVudGlvbk5vZGVzIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImNsYXNzTmFtZSIsInN0eWxlIiwiZGlzcGxheSIsInBsdWdpbnMiLCJyZWh5cGVQbHVnaW5zIiwiY29tcG9uZW50cyIsImEiLCJsaW5rU2FmZXR5IiwiaXNBbmltYXRpbmciLCJzaGlraVRoZW1lIiwiY29udHJvbHMiLCJ0YWJsZSIsImlzQXNzaXN0YW50IiwiaXNFcnJvciIsImFwcHJvdmFsIiwiY29udGVudCIsInNvdXJjZXMiLCJoYW5kbGVGZWVkYmFjayIsImhhbmRsZUZlZWRiYWNrQ2xpY2siLCJkaXNhYmxlRmVlZGJhY2siLCJzdWdnZXN0aW9ucyIsImxlbmd0aCIsIm9uU2VsZWN0U3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb24iLCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2siLCJkaXNhYmxlZCIsInN1Z2dlc3Rpb25zRGlzYWJsZWQiLCJoaWRkZW4iLCJpc0xhc3RNZXNzYWdlIiwiVGltZWxpbmVTZWdtZW50Qm9keSIsIl9yZWY0IiwidGV4dCIsIk1lc3NhZ2VJdGVtIiwiX3Byb3BzJHByb2plY3RNZXRhZGF0IiwidXNlciIsImF1dGhVc2VyIiwiaXNDaGFuZ2VQcm9qZWN0IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsInJvbGUiLCJhdHRhY2htZW50cyIsImFwcHJvdmFsU3RhdHVzIiwiaGFzU2VsZWN0ZWRTdWdnZXN0aW9uIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJwcmV2aWV3QXR0YWNobWVudCIsInNldFByZXZpZXdBdHRhY2htZW50IiwiVVNFUiIsInRvU3RyaW5nIiwiQVNTSVNUQU5UIiwiaXNTdHJlYW1pbmdQbGFjZWhvbGRlciIsImlzQWN0aXZlU3RyZWFtaW5nIiwiaXNUaGlua2luZyIsIm1lc3NhZ2VBdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsImhhbmRsZUF0dGFjaG1lbnRDbGljayIsImF0dGFjaG1lbnQiLCJmaWxlIiwiRmlsZSIsIm9yaWdpbmFsRmlsZSIsInVybF90aHVtYm5haWwiLCJ1cmxfb3JpZ2luYWwiLCJ1cmxfZmlsZSIsImhhbmRsZUNsb3NlUHJldmlldyIsImhhbmRsZUF0dGFjaG1lbnREb3dubG9hZCIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJleHRlbnNpb24iLCJmaWxlTmFtZSIsImZpbGVVcmwiLCJibG9iVXJsIiwiZG93bmxvYWRlZEZpbGUiLCJsaW5rIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImluY2x1ZGVzIiwiY29uY2F0Iiwic2VudCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImFicnVwdCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImhyZWYiLCJkb3dubG9hZCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwic2V0VGltZW91dCIsInJlbW92ZUNoaWxkIiwicmV2b2tlT2JqZWN0VVJMIiwiY29uc29sZSIsImVycm9yIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYXNGZWVkYmFjayIsIiRpc0Fzc2lzdGFudCIsIm1lc3NhZ2VFeHRyYUNvbnRlbnQiLCJmZWVkYmFjayIsInNlc3Npb25JZCIsInNwbGl0IiwiZmlsdGVyIiwicXVlc3Rpb25JZCIsImpvaW4iLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJfYXR0YWNobWVudCRuYW1lIiwiYXR0YWNobWVudFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImF0dGFjaG1lbnROYW1lIiwiaXNBdWRpb0ZpbGUiLCJzdGFydHNXaXRoIiwic29tZSIsImV4dCIsImVuZHNXaXRoIiwicG9zaXRpb25JbmRleCIsIm9uRG93bmxvYWQiLCJwZW5kaW5nX2FjdGlvbnMiLCJhY3Rpb25zIiwic3RhdHVzIiwib25BcHByb3ZlIiwidGhyZWFkSWRzIiwib25SZWplY3QiLCJpc1Byb2plY3REZWxldGVkIiwicHJvamVjdE1ldGFkYXRhIiwiaXNfZGVsZXRlZCIsImlzRXhwYW5kZWQiLCJleHBhbmRlZCIsImhpdGxJbnN0YW5jZUlkIiwib3JpZ2luYWxfdGhyZWFkX2lkIiwid2FybmluZ01lc3NhZ2UiLCJ3YXJuaW5nX21lc3NhZ2UiLCJtYW51YWxBcHByb3ZhbERldGVjdGVkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiaXNPcGVuIiwib25DbG9zZSIsIkNoYXRBSU1lc3NhZ2VzSW5uZXIiLCJfcmVmNiIsInVzZXJJbml0aWFsTWVzc2FnZSIsImluaXRpYWxDaGF0SWQiLCJvbkVycm9yIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25TY3JvbGxUb0JvdHRvbSIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0MyIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiZXZlbnQiLCJtZXNzYWdlc1JlZiIsImNoYXRJbml0aWFsaXplZFJlZiIsImlzTG9hZGluZ01vcmVSZWYiLCJ1c2VyU2Nyb2xsaW5nUmVmIiwic2Nyb2xsVGhyZXNob2xkUmVmIiwibGFzdFNjcm9sbFRvcFJlZiIsInNob3dTY3JvbGxUb0JvdHRvbVJlZiIsInNjcm9sbFJhZlJlZiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2hvd1Njcm9sbFRvQm90dG9tIiwic2V0U2hvd1Njcm9sbFRvQm90dG9tIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzIiwic2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyIsIl91c2VDaGF0TWFuYWdlciIsImNoYXRJZCIsInVuZGVmaW5lZCIsIm1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwiaXNMb2FkaW5nTW9yZU1lc3NhZ2VzIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsImFjdGl2ZUxvYWRpbmdzIiwic2VuZE1lc3NhZ2UiLCJjaGFuZ2VQcm9qZWN0IiwiaW5pdGlhbGl6ZUNoYXQiLCJoYW5kbGVTY3JvbGwiLCJzdG9wR2VuZXJhdGlvbiIsIl9yZWY3IiwiX2NhbGxlZTIiLCJ0YXJnZXRNZXNzYWdlIiwiaXNSZXRyeVN1Z2dlc3Rpb24iLCJzdGFydGVkIiwiX2xhc3RVc2VyTWVzc2FnZSIsIl95aWVsZCRzZW5kTWVzc2FnZSIsInJldHJ5QXR0YWNobWVudHMiLCJfeWllbGQkc2VuZE1lc3NhZ2UyIiwiaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50IiwiX3QyIiwiX3QzIiwiX3Q0IiwiX3Q1IiwiX3Q2IiwiX3Q3IiwiX2NvbnRleHQyIiwidHJpbSIsImZpbmQiLCJtc2ciLCJsYXN0VXNlck1lc3NhZ2UiLCJhdCIsImFpQ2hhdFN1Z2dlc3RlZEFuc3dlciIsImFnZW50X3R5cGUiLCJfZGVmaW5lUHJvcGVydHkiLCJfeDIiLCJfeDMiLCJlbnRpdHkiLCJ1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5IiwiZWwiLCJjdXJyZW50Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwic2hvdWxkU2hvdyIsInNjcm9sbFRvQm90dG9tUmFmIiwib3B0cyIsIl9vcHRzJHNraXBJZlVzZXJTY3JvbCIsInNraXBJZlVzZXJTY3JvbGxpbmciLCJfb3B0cyRkZWxheU1zIiwiZGVsYXlNcyIsInJ1biIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImhhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b20iLCJzY3JvbGxUbyIsInRvcCIsImJlaGF2aW9yIiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbldpdGhTY3JvbGwiLCJoYW5kbGVTY3JvbGxUb0JvdHRvbSIsImUiLCJjb250YWluZXIiLCJjdXJyZW50VGFyZ2V0IiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJpc1Njcm9sbGluZ1VwIiwiaXNOZWFyQm90dG9tIiwic2VuZE1lc3NhZ2VSZWYiLCJzdG9wR2VuZXJhdGlvblJlZiIsIm9uU2VuZE1lc3NhZ2VSZWFkeVJlZiIsInNlbmRNZXNzYWdlUHJveHlSZWYiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJzdG9wR2VuZXJhdGlvblByb3h5UmVmIiwicmFmSWQiLCJsYXN0SGVpZ2h0IiwidGljayIsImN1cnJlbnRIZWlnaHQiLCJsYXN0TWVzc2FnZUlkUmVmIiwibGFzdE1lc3NhZ2VzTGVuZ3RoUmVmIiwiX2xhc3RNZXNzYWdlJGlkIiwibGFzdE1lc3NhZ2UiLCJsYXN0SWQiLCJwcmV2SWQiLCJwcmV2TGVuIiwiaXNOZXdNZXNzYWdlIiwiaXNBdEJvdHRvbSIsImhhc0luaXRpYWxNZXNzYWdlIiwiaXNBcHByb3ZhbCIsImlzQW5zd2VyT3JRdWVzdGlvbiIsImF0dGFjaG1lbnRzQ291bnQiLCJzdHJlYW1Mb2FkaW5nRGlzcGxheSIsImhhc0F0dGFjaG1lbnRzIiwiQm9vbGVhbiIsInN0cmVhbVRpbWVsaW5lIiwic2hvd1N0cmVhbVR1cm5UaW1lbGluZSIsInR1cm5JZCIsInNlZ21lbnRzIiwibGFzdEFwcHJvdmFsTWVzc2FnZUluZGV4IiwiaSIsImFuY2hvclRpbWVsaW5lVG9BcHByb3ZhbCIsIl9hcHByb3ZhbE1lc3NhZ2UkYXBwciIsImFwcHJvdmFsTWVzc2FnZSIsInNlZ21lbnRDb3VudCIsInRpbWVsaW5lIiwiYXBwcm92YWxNZXNzYWdlSWQiLCJwZW5kaW5nVG9vbHMiLCJ0b29sX25hbWUiLCJfYXBwcm92YWxNZXNzYWdlJGFwcHIyIiwic2NvcGUiLCJzb3VyY2UiLCJoaXRsQ29udGV4dCIsIm1lc3NhZ2VUZXh0IiwicGVuZGluZ0FjdGlvbnMiLCJ0aHJlYWRfaWQiLCJ1aVN1cmZhY2VzIiwicmVuZGVyVGltZWxpbmVDb250ZW50QmxvY2siLCJfcmVmOCIsInNob3dBc3Npc3RhbnRIZWFkZXIiLCJzdHJlYW1UdXJuVGltZWxpbmUiLCJpbml0aWFsQWN0aXZpdHkiLCJyZW5kZXJDb250ZW50QmxvY2siLCJpc1Njcm9sbE9uUGFyZW50IiwiZXhwYW5kZWRSZWYiLCJzYXZlZFNjcm9sbFRvcCIsImZpbGwiLCJtZXNzYWdlc0NvbnRlbnQiLCJfbWVzc2FnZSRhdHRhY2htZW50cyIsIl9tZXNzYWdlJHNvdXJjZXMiLCJfbWVzc2FnZSRwcm9qZWN0IiwiX21lc3NhZ2UkaWQiLCJpc0Fzc2lzdGFudE1lc3NhZ2UiLCJwcm9qZWN0IiwibWVzc2FnZUZlZWRiYWNrIiwid2FzSGVscGZ1bCIsIlRIVU1CU19VUCIsIlRIVU1CU19ET1dOIiwibWVzc2FnZUtleSIsIiRzY3JvbGxPblBhcmVudCIsInJlZiIsIm9uU2Nyb2xsIiwiJGlzTWFya2V0cGxhY2VHbG9iYWwiLCJjb2xvciIsIkNoYXRBSU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1lc3NhZ2VzL0NoYXRBSU1lc3NhZ2VzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLXVuc3RhYmxlLW5lc3RlZC1jb21wb25lbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCBtZW1vLCBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgU3RyZWFtZG93biB9IGZyb20gJ3N0cmVhbWRvd24nXG5pbXBvcnQgeyBjcmVhdGVDb2RlUGx1Z2luIH0gZnJvbSAnQHN0cmVhbWRvd24vY29kZSdcbmltcG9ydCB7IEFycm93U21hbGxEb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQXJyb3dTbWFsbERvd24nXG5cbmltcG9ydCB7IEF0dGFjaG1lbnRDYXJkIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmQnXG5pbXBvcnQgeyBBcHByb3ZhbEJveCB9IGZyb20gJy4uLy4uL2F0b21zL0FwcHJvdmFsQm94L0FwcHJvdmFsQm94J1xuaW1wb3J0IHsgQXR0YWNobWVudFByZXZpZXdNb2RhbCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRQcmV2aWV3TW9kYWwnXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZEF1ZGlvIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmRBdWRpbydcbmltcG9ydCB7IE1BSUFNZXNzYWdlUHJvcHMgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBTWVzc2FnZS9NQUlBTWVzc2FnZS5pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRIaXN0b3J5Um9sZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBNQUlBX1NUUkVBTURPV05fUkVIWVBFX1BMVUdJTlMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYWlhU3RyZWFtZG93blJlaHlwZVBsdWdpbnMnXG5pbXBvcnQgeyByZW5kZXJUZXh0V2l0aE1lbnRpb25zLCBoYXNJbmxpbmVNYXJrZXJzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcmVuZGVyQ29udGV4dE1lbnRpb25zJ1xuXG5pbXBvcnQgeyBpc01haWFrZXJBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBDT1JVc2VyLCB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcblxuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VDaGF0TWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlU21vb3RoU3RyZWFtVGV4dCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNtb290aFN0cmVhbVRleHQnXG5pbXBvcnQgeyB1c2VTdHJlYW1pbmdNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU3RyZWFtaW5nTWVzc2FnZSdcblxuaW1wb3J0IHsgTG9hZGluZ1RleHQgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkaW5nVGV4dCdcbmltcG9ydCB7IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQsIHJlc29sdmVTdHJlYW1Mb2FkaW5nRGlzcGxheSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyB1c2VTdHJlYW1UaW1lbGluZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVN0cmVhbVRpbWVsaW5lJ1xuaW1wb3J0IHsgU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lIH0gZnJvbSAnLi4vU3RyZWFtQXNzaXN0YW50VHVyblRpbWVsaW5lJ1xuaW1wb3J0IHsgc3RyZWFtRGVidWdMb2csIHN0cmVhbURlYnVnTG9nSGl0bFVpT3ZlcmxhcCwgc3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmVhbURlYnVnTG9nJ1xuaW1wb3J0IHsgRmFkZSB9IGZyb20gJy4uLy4uL2F0b21zL0ZhZGUnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuXG5pbXBvcnQgeyBNZXNzYWdlRnJvbVVzZXIsIE1lc3NhZ2VGcm9tT3RoZXIsIE1lc3NhZ2VDb250ZW50RnJvbVVzZXIsIE1lc3NhZ2VDb250ZW50RnJvbU90aGVyIH0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyBNZXNzYWdlRmVlZGJhY2sgfSBmcm9tICcuLi9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQge1xuICBTQ0NBSU1lc3NhZ2VXcmFwcGVyLFxuICBTY3JvbGxUb0JvdHRvbUJ1dHRvbixcbiAgU0NNZXNzYWdlc091dGVyLFxuICBTQ01lc3NhZ2VzU2Nyb2xsLFxuICBTQ01lc3NhZ2VzSW5uZXIsXG4gIFNDT3B0aW9uc0xpc3QsXG4gIFNDT3B0aW9uSXRlbSxcbiAgU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyLFxuICBTQ0Fzc2lzdGFudE5hbWUsXG4gIFNDQXNzaXN0YW50QXZhdGFyLFxuICBTQ01lc3NhZ2VJdGVtV3JhcHBlcixcbiAgU0NNZXNzYWdlSXRlbUlubmVyLFxuICBTQ0F0dGFjaG1lbnRzUm93LFxuICBTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbixcbn0gZnJvbSAnLi9uZXdTdHlsZXMnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBNQUlBSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgRW50aXR5TGlua0N1c3RvbUxpbmssIGdldEVudGl0eUxpbmtXcmFwcGVyQ2xhc3NOYW1lIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZW50aXR5TGlua1JlbmRlcidcbmltcG9ydCB7IENoYXRBSVN1Z2dlc3Rpb25zIH0gZnJvbSAnLi9DaGF0QUlTdWdnZXN0aW9ucydcbmltcG9ydCB7IENoYXRBSUNyZWF0ZUFnZW50QWN0aW9ucyB9IGZyb20gJy4vQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgZG93bmxvYWRGaWxlRnJvbVVybCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ZpbGVEb3dubG9hZEhlbHBlcidcblxuY29uc3QgY29kZSA9IGNyZWF0ZUNvZGVQbHVnaW4oeyB0aGVtZXM6IFsnZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddIH0pXG5cbmNvbnN0IEFzc2lzdGFudEF2YXRhcklubmVyOiBGQyA9ICgpID0+IHtcbiAgY29uc3QgeyBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIHJldHVybiAoXG4gICAgPFNDQXNzaXN0YW50QXZhdGFyPlxuICAgICAge2FnZW50Py50eXBlID09PSAnY2xvbmUnIHx8IGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyB8fCBhZ2VudD8uaXNfbGVnYWN5X2NvbnRleHQgPyAoXG4gICAgICAgIDxNQUlBSWNvbiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICApIDogKFxuICAgICAgICBhZ2VudD8uZW1vamlcbiAgICAgICl9XG4gICAgPC9TQ0Fzc2lzdGFudEF2YXRhcj5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRBdmF0YXIgPSBtZW1vKEFzc2lzdGFudEF2YXRhcklubmVyKVxuXG50eXBlIENoYXRBSU1lc3NhZ2VzUHJvcHMgPSB7XG4gIHVzZXJJbml0aWFsTWVzc2FnZToge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICB9XG4gIGluaXRpYWxDaGF0SWQ6IHN0cmluZyB8IG51bGxcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBvblNlbmRNZXNzYWdlUmVhZHk/OiAoXG4gICAgc2VuZE1lc3NhZ2U6IChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHZvaWQsXG4gICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgaXNXcml0aW5nOiBib29sZWFuXG4gICkgPT4gdm9pZFxuICBpc0Rpc2FibGVkPzogYm9vbGVhblxuICBvblNjcm9sbFRvQm90dG9tPzogKCkgPT4gdm9pZFxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgYWdlbnRzPzogQWdlbnRbXVxuICBleHBhbmRlZD86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlSXRlbVByb3BzID0gQ2hhdE1lc3NhZ2UgJiB7XG4gIGF1dGhVc2VyOiBDT1JVc2VyXG4gIGhhbmRsZVNlbGVjdE9wdGlvbjogKG9wdGlvbjogUHJvamVjdCkgPT4gdm9pZFxuICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbj86IGJvb2xlYW5cbiAgaGFuZGxlRmVlZGJhY2s6IChmZWVkYmFjazogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4gdm9pZFxuICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uOiAodGhyZWFkSWRzOiBzdHJpbmdbXSwgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnKSA9PiB2b2lkXG4gIGRpc2FibGVGZWVkYmFjaz86IEZlZWRiYWNrIHwgbnVsbFxuICBzb3VyY2VzPzogYW55XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNMYXN0TWVzc2FnZT86IGJvb2xlYW5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBNZXNzYWdlV3JhcHBlclByb3BzIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gICdkYXRhLW1lc3NhZ2UtaWQnPzogc3RyaW5nXG4gIGhhc0ZlZWRiYWNrPzogYm9vbGVhblxufVxuXG50eXBlIE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzID0gTUFJQU1lc3NhZ2VQcm9wcyAmIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBpc0Vycm9yPzogYm9vbGVhblxuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG59XG5cbmNvbnN0IE1lc3NhZ2VXcmFwcGVyOiBGQzxNZXNzYWdlV3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIGNoaWxkcmVuLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUZyb21Vc2VyIDogTWVzc2FnZUZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb21wb25lbnQgey4uLnByb3BzfT57Y2hpbGRyZW59PC9NZXNzYWdlQ29tcG9uZW50PlxufVxuXG5jb25zdCBNZXNzYWdlQ29udGVudFdyYXBwZXI6IEZDPE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgTWVzc2FnZUNvbnRlbnRDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUNvbnRlbnRGcm9tVXNlciA6IE1lc3NhZ2VDb250ZW50RnJvbU90aGVyXG4gIHJldHVybiA8TWVzc2FnZUNvbnRlbnRDb21wb25lbnQgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBNZXNzYWdlT3B0aW9ucyh7XG4gIG9wdGlvbnMsXG4gIGhhbmRsZVNlbGVjdE9wdGlvbixcbn06IHtcbiAgb3B0aW9uczogUHJvamVjdFtdIHwgbnVsbFxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbn0pIHtcbiAgY29uc3QgW3NlbGVjdGVkT3B0aW9uLCBzZXRTZWxlY3RlZE9wdGlvbl0gPSB1c2VTdGF0ZTxQcm9qZWN0IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBoYW5kbGVTZWxlY3QgPSAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkT3B0aW9uKSByZXR1cm5cbiAgICBzZXRTZWxlY3RlZE9wdGlvbihvcHRpb24pXG4gICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbilcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDT3B0aW9uc0xpc3Q+XG4gICAgICB7KG9wdGlvbnMgfHwgW10pLm1hcChvcHRpb24gPT4gKFxuICAgICAgICA8U0NPcHRpb25JdGVtXG4gICAgICAgICAgJGhhc1NlbGVjdGlvbj17ISFzZWxlY3RlZE9wdGlvbn1cbiAgICAgICAgICAkZGltbWVkPXshIXNlbGVjdGVkT3B0aW9uICYmIHNlbGVjdGVkT3B0aW9uPy5pZCAhPT0gb3B0aW9uLmlkfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChvcHRpb24pfVxuICAgICAgICAgIGtleT17b3B0aW9uLmlkfVxuICAgICAgICA+XG4gICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICA8L1NDT3B0aW9uSXRlbT5cbiAgICAgICkpfVxuICAgIDwvU0NPcHRpb25zTGlzdD5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRNZXNzYWdlSGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICAvLyBTaWVtcHJlICdNQUlBJyBwYXJhIGNsb25lL29yY2hlc3RyYXRvciAobnVuY2EgZWwgbm9tYnJlIGRlbCBzdWJhZ2VudGUgcXVlXG4gIC8vIHJlc3BvbmRpw7MpOyBwYXJhIGN1c3RvbSwgZWwgbm9tYnJlIGRlbCBhZ2VudGUuXG4gIGNvbnN0IGRpc3BsYXlOYW1lID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgfHwgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InID8gJ01BSUEnIDogYWdlbnQ/Lm5hbWVcblxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gICAgICA8QXNzaXN0YW50QXZhdGFyIC8+XG4gICAgICB7ZGlzcGxheU5hbWUgJiYgPFNDQXNzaXN0YW50TmFtZT57ZGlzcGxheU5hbWV9PC9TQ0Fzc2lzdGFudE5hbWU+fVxuICAgIDwvU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyPlxuICApXG59XG5cbi8qKiBTb2xvIGVzdGUgY29tcG9uZW50ZSByZS1yZW5kZXJpemEgY3VhbmRvIGNhbWJpYSBlbCB0ZXh0byBlbiBzdHJlYW1pbmcgKGxlZSBkZWwgY29udGV4dCkuICovXG5jb25zdCBTdHJlYW1pbmdNZXNzYWdlQm9keSA9IG1lbW8oXG4gIChwcm9wczoge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuXG4gICAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICAgIGlzQXNzaXN0YW50OiBib29sZWFuXG4gICAgaXNGcm9udGVuZENhbmNlbGxlZD86IGJvb2xlYW5cbiAgICBhcHByb3ZhbD86IE1lc3NhZ2VJdGVtUHJvcHNbJ2FwcHJvdmFsJ11cbiAgICBpc0Vycm9yPzogYm9vbGVhblxuICAgIHNvdXJjZXM/OiBNZXNzYWdlSXRlbVByb3BzWydzb3VyY2VzJ11cbiAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbFxuICAgIGNyZWF0ZUFnZW50Rm9sbG93VXA/OiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgbnVsbFxuICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s6IChmOiBGZWVkYmFjaykgPT4gdm9pZFxuICAgIGRpc2FibGVGZWVkYmFjazogRmVlZGJhY2sgfCBudWxsXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrOiAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZFxuICAgIHN1Z2dlc3Rpb25zRGlzYWJsZWQ/OiBib29sZWFuXG4gICAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgICBpc0xhc3RNZXNzYWdlPzogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgLy8gVGV4dG8gZGVsIHN0cmVhbTogc29sbyBzZSBsZWUgZGVsIHN0b3JlIGN1YW5kbyBlc3RlIG1lbnNhamUgZXMgZWxcbiAgICAvLyBxdWUgZXN0w6EgZW4gc3RyZWFtaW5nLiB1c2VTeW5jRXh0ZXJuYWxTdG9yZSBhw61zbGEgZWwgcmUtcmVuZGVyIGFcbiAgICAvLyBlc3RlIGNvbXBvbmVudGUsIHNpbiB0b2NhciBlbCByZXN0byBkZWwgw6FyYm9sLlxuICAgIGNvbnN0IHN0cmVhbWluZ1RleHQgPSB1c2VTdHJlYW1pbmdNZXNzYWdlKHByb3BzLmlzU3RyZWFtaW5nID8gcHJvcHMubWVzc2FnZUlkIDogbnVsbClcbiAgICBjb25zdCByYXdUZXh0ID0gcHJvcHMuaXNTdHJlYW1pbmcgPyBzdHJlYW1pbmdUZXh0IDogcHJvcHMubWVzc2FnZVxuICAgIC8vIFNtb290aCBzdHJlYW1pbmc6IGRlc2Fjb3BsYSBsYSBjYWRlbmNpYSBkZWwgYmFja2VuZCBkZWwgcmVuZGVyLlxuICAgIC8vIER1cmFudGUgZWwgc3RyZWFtaW5nIGxpYmVyYSBjaGFycyBhIHJpdG1vIGNvbnN0YW50ZSB2w61hIHJBRjsgY3VhbmRvXG4gICAgLy8gdGVybWluYSwgbXVlc3RyYSBlbCB0ZXh0byBmaW5hbCBhbCBpbnN0YW50ZSAoc2luIGFuaW1hY2nDs24gcmVzaWR1YWwpLlxuICAgIC8vIExvcyBkZWZhdWx0cyBkZWwgaG9vayBzZSBhanVzdGFyb24gZW1ww61yaWNhbWVudGUgZW4gc3RhZ2luZzsgYXVuIGFzw61cbiAgICAvLyBzZSBleHBvbmVuIGZsYWdzIGRlIHJ1bnRpbWUgKHdpbmRvdy4qKSBwYXJhIHBvZGVyIHR1bmVhciBzaW4gcmVjb21waWxhclxuICAgIC8vIHNpIGFsZ8O6biBiYWNrZW5kIHByZXNlbnRhIHVuYSBjYWRlbmNpYSBtdXkgZGlzdGludGEgZW4gcHJvZHVjY2nDs24uXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtQWRhcHQgPSBmYWxzZSAgICAgIC8vIGRlc2FjdGl2YSBhZGFwdGFjacOzbiBhbCBiYWNrZW5kXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtQnVmZmVyTXMgPSA2MDAgICAgIC8vIGNvbGNow7NuIG9iamV0aXZvIChtcylcbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1MYWdNcyA9IDQ1MCAgICAgICAgLy8gbGFnIG3DoXhpbW8gYmFzZSAobXMpXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtTWluQnVmZmVyID0gNzAgICAgIC8vIHBpc28gZGVsIGNvbGNow7NuIGVuIGNoYXJzXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtV2FybXVwTXMgPSA0MDAgICAgIC8vIHdhcm11cCBpbmljaWFsIChtcylcbiAgICBjb25zdCB3aW5GbGFncyA9XG4gICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/ICh3aW5kb3cgYXMgdW5rbm93biBhcyB7XG4gICAgICAgICAgICBzdHJlYW1BZGFwdD86IGJvb2xlYW5cbiAgICAgICAgICAgIHN0cmVhbUJ1ZmZlck1zPzogbnVtYmVyXG4gICAgICAgICAgICBzdHJlYW1MYWdNcz86IG51bWJlclxuICAgICAgICAgICAgc3RyZWFtTWluQnVmZmVyPzogbnVtYmVyXG4gICAgICAgICAgICBzdHJlYW1XYXJtdXBNcz86IG51bWJlclxuICAgICAgICAgIH0pXG4gICAgICAgIDoge31cbiAgICBjb25zdCBkaXNwbGF5VGV4dCA9IHVzZVNtb290aFN0cmVhbVRleHQocmF3VGV4dCwge1xuICAgICAgZW5hYmxlZDogISFwcm9wcy5pc1N0cmVhbWluZyxcbiAgICAgIG1heENoYXJzUGVyRnJhbWU6IDI0LFxuICAgICAgc25hcFRvV29yZEJvdW5kYXJ5OiB0cnVlLFxuICAgICAgLi4uKHdpbkZsYWdzLnN0cmVhbUxhZ01zICE9IG51bGwgJiYgeyB0YXJnZXRMYWdNczogd2luRmxhZ3Muc3RyZWFtTGFnTXMgfSksXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtQWRhcHQgIT0gbnVsbCAmJiB7IGFkYXB0VG9CYWNrZW5kUmF0ZTogd2luRmxhZ3Muc3RyZWFtQWRhcHQgfSksXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtQnVmZmVyTXMgIT0gbnVsbCAmJiB7IHRhcmdldEJ1ZmZlck1zOiB3aW5GbGFncy5zdHJlYW1CdWZmZXJNcyB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1NaW5CdWZmZXIgIT0gbnVsbCAmJiB7IG1pbkJ1ZmZlckNoYXJzOiB3aW5GbGFncy5zdHJlYW1NaW5CdWZmZXIgfSksXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtV2FybXVwTXMgIT0gbnVsbCAmJiB7IHdhcm11cE1zOiB3aW5GbGFncy5zdHJlYW1XYXJtdXBNcyB9KSxcbiAgICB9KVxuICAgIGNvbnN0IGNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQgPSBwcm9wcy5jcmVhdGVBZ2VudEZvbGxvd1VwPy5hZ2VudElkXG5cbiAgICBpZiAoIWRpc3BsYXlUZXh0ICYmICFwcm9wcy5pc1N0cmVhbWluZykgcmV0dXJuIG51bGxcbiAgICBjb25zdCBoYXNNZW50aW9ucyA9IGhhc0lubGluZU1hcmtlcnMoZGlzcGxheVRleHQpXG4gICAgY29uc3QgbWVudGlvbk5vZGVzID0gaGFzTWVudGlvbnMgPyByZW5kZXJUZXh0V2l0aE1lbnRpb25zKGRpc3BsYXlUZXh0KSA6IG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPFNDQ0FJTWVzc2FnZVdyYXBwZXJcbiAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtwcm9wcy5pc0N1cnJlbnRVc2VyfVxuICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtnZXRFbnRpdHlMaW5rV3JhcHBlckNsYXNzTmFtZShkaXNwbGF5VGV4dCl9XG4gICAgICAgID5cbiAgICAgICAgICB7aGFzTWVudGlvbnMgJiYgbWVudGlvbk5vZGVzID8gKFxuICAgICAgICAgICAgLy8gU2kgaGF5IG1lbnRpb25zLCByZW5kZXJpemFyIGRpcmVjdGFtZW50ZSAoc2luIG1hcmtkb3duIGVuIGVsIG1pc21vIHDDoXJyYWZvKVxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2lubGluZScgfX0+e21lbnRpb25Ob2Rlc308L3NwYW4+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIC8vIFNpbiBtZW50aW9ucywgcGFzYXIgYSBTdHJlYW1kb3duIHBhcmEgbWFya2Rvd24gc3VwcG9ydFxuICAgICAgICAgICAgPFN0cmVhbWRvd25cbiAgICAgICAgICAgICAgcGx1Z2lucz17eyBjb2RlIH19XG4gICAgICAgICAgICAgIHJlaHlwZVBsdWdpbnM9e01BSUFfU1RSRUFNRE9XTl9SRUhZUEVfUExVR0lOU31cbiAgICAgICAgICAgICAgY29tcG9uZW50cz17eyBhOiBFbnRpdHlMaW5rQ3VzdG9tTGluayB9IGFzIFBhcmFtZXRlcnM8dHlwZW9mIFN0cmVhbWRvd24+WzBdWydjb21wb25lbnRzJ119XG4gICAgICAgICAgICAgIGxpbmtTYWZldHk9e3sgZW5hYmxlZDogZmFsc2UgfX1cbiAgICAgICAgICAgICAgaXNBbmltYXRpbmc9eyEhcHJvcHMuaXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIHNoaWtpVGhlbWU9e1snZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddfVxuICAgICAgICAgICAgICBjb250cm9scz17eyB0YWJsZTogZmFsc2UsIGNvZGU6IGZhbHNlIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtkaXNwbGF5VGV4dH1cbiAgICAgICAgICAgIDwvU3RyZWFtZG93bj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDQ0FJTWVzc2FnZVdyYXBwZXI+XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJiAhcHJvcHMuaXNFcnJvciAmJiAhcHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZCAmJiAhcHJvcHMuYXBwcm92YWwgJiYgIXByb3BzLmlzU3RyZWFtaW5nICYmIChcbiAgICAgICAgICA8TWVzc2FnZUZlZWRiYWNrXG4gICAgICAgICAgICBjb250ZW50PXtkaXNwbGF5VGV4dH1cbiAgICAgICAgICAgIHNvdXJjZXM9e3Byb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17cHJvcHMuaGFuZGxlRmVlZGJhY2tDbGlja31cbiAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17cHJvcHMuZGlzYWJsZUZlZWRiYWNrfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJlxuICAgICAgICAgICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmXG4gICAgICAgICAgIXByb3BzLmFwcHJvdmFsICYmXG4gICAgICAgICAgKCFwcm9wcy5pc0Vycm9yIHx8IHByb3BzLnN1Z2dlc3Rpb25zPy5sZW5ndGgpICYmIChcbiAgICAgICAgICAgIDxDaGF0QUlTdWdnZXN0aW9uc1xuICAgICAgICAgICAgICBzdWdnZXN0aW9ucz17cHJvcHMuc3VnZ2VzdGlvbnMgfHwgW119XG4gICAgICAgICAgICAgIG9uU2VsZWN0U3VnZ2VzdGlvbj17c3VnZ2VzdGlvbiA9PiBwcm9wcy5oYW5kbGVTdWdnZXN0aW9uQ2xpY2socHJvcHMubWVzc2FnZUlkLCBzdWdnZXN0aW9uKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICAgIGhpZGRlbj17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhcHJvcHMuaXNMYXN0TWVzc2FnZSB8fCAhIXByb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJlxuICAgICAgICAgICFwcm9wcy5pc0Vycm9yICYmXG4gICAgICAgICAgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiZcbiAgICAgICAgICAhcHJvcHMuYXBwcm92YWwgJiZcbiAgICAgICAgICAhIWNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQgJiYgKFxuICAgICAgICAgICAgPENoYXRBSUNyZWF0ZUFnZW50QWN0aW9uc1xuICAgICAgICAgICAgICBhZ2VudElkPXtjcmVhdGVBZ2VudEFjdGlvbnNBZ2VudElkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgICAgaGlkZGVuPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICFwcm9wcy5pc0xhc3RNZXNzYWdlIHx8ICEhcHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvPlxuICAgIClcbiAgfVxuKVxuXG4vKiogQmxvcXVlIGRlIHRleHRvIGludGVyY2FsYWRvIGVuIGVsIHRpbWVsaW5lIGRlbCB0dXJubyAobWFya2Rvd24gKyBzbW9vdGggc3RyZWFtKS4gKi9cbmNvbnN0IFRpbWVsaW5lU2VnbWVudEJvZHkgPSBtZW1vKCh7IHRleHQsIGlzU3RyZWFtaW5nIH06IHsgdGV4dDogc3RyaW5nOyBpc1N0cmVhbWluZzogYm9vbGVhbiB9KSA9PiB7XG4gIGNvbnN0IHdpbkZsYWdzID1cbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgPyAod2luZG93IGFzIHVua25vd24gYXMge1xuICAgICAgICAgIHN0cmVhbUFkYXB0PzogYm9vbGVhblxuICAgICAgICAgIHN0cmVhbUJ1ZmZlck1zPzogbnVtYmVyXG4gICAgICAgICAgc3RyZWFtTGFnTXM/OiBudW1iZXJcbiAgICAgICAgICBzdHJlYW1NaW5CdWZmZXI/OiBudW1iZXJcbiAgICAgICAgICBzdHJlYW1XYXJtdXBNcz86IG51bWJlclxuICAgICAgICB9KVxuICAgICAgOiB7fVxuICBjb25zdCBkaXNwbGF5VGV4dCA9IHVzZVNtb290aFN0cmVhbVRleHQodGV4dCwge1xuICAgIGVuYWJsZWQ6IGlzU3RyZWFtaW5nLFxuICAgIG1heENoYXJzUGVyRnJhbWU6IDI0LFxuICAgIHNuYXBUb1dvcmRCb3VuZGFyeTogdHJ1ZSxcbiAgICAuLi4od2luRmxhZ3Muc3RyZWFtTGFnTXMgIT0gbnVsbCAmJiB7IHRhcmdldExhZ01zOiB3aW5GbGFncy5zdHJlYW1MYWdNcyB9KSxcbiAgICAuLi4od2luRmxhZ3Muc3RyZWFtQWRhcHQgIT0gbnVsbCAmJiB7IGFkYXB0VG9CYWNrZW5kUmF0ZTogd2luRmxhZ3Muc3RyZWFtQWRhcHQgfSksXG4gICAgLi4uKHdpbkZsYWdzLnN0cmVhbUJ1ZmZlck1zICE9IG51bGwgJiYgeyB0YXJnZXRCdWZmZXJNczogd2luRmxhZ3Muc3RyZWFtQnVmZmVyTXMgfSksXG4gICAgLi4uKHdpbkZsYWdzLnN0cmVhbU1pbkJ1ZmZlciAhPSBudWxsICYmIHsgbWluQnVmZmVyQ2hhcnM6IHdpbkZsYWdzLnN0cmVhbU1pbkJ1ZmZlciB9KSxcbiAgICAuLi4od2luRmxhZ3Muc3RyZWFtV2FybXVwTXMgIT0gbnVsbCAmJiB7IHdhcm11cE1zOiB3aW5GbGFncy5zdHJlYW1XYXJtdXBNcyB9KSxcbiAgfSlcblxuICBpZiAoIWRpc3BsYXlUZXh0ICYmICFpc1N0cmVhbWluZykgcmV0dXJuIG51bGxcblxuICBjb25zdCBoYXNNZW50aW9ucyA9IGhhc0lubGluZU1hcmtlcnMoZGlzcGxheVRleHQpXG4gIGNvbnN0IG1lbnRpb25Ob2RlcyA9IGhhc01lbnRpb25zID8gcmVuZGVyVGV4dFdpdGhNZW50aW9ucyhkaXNwbGF5VGV4dCkgOiBudWxsXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlNZXNzYWdlV3JhcHBlciBpc0N1cnJlbnRVc2VyPXtmYWxzZX0gY2xhc3NOYW1lPXtnZXRFbnRpdHlMaW5rV3JhcHBlckNsYXNzTmFtZShkaXNwbGF5VGV4dCl9PlxuICAgICAge2hhc01lbnRpb25zICYmIG1lbnRpb25Ob2RlcyA/IChcbiAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2lubGluZScgfX0+e21lbnRpb25Ob2Rlc308L3NwYW4+XG4gICAgICApIDogKFxuICAgICAgICA8U3RyZWFtZG93blxuICAgICAgICAgIHBsdWdpbnM9e3sgY29kZSB9fVxuICAgICAgICAgIHJlaHlwZVBsdWdpbnM9e01BSUFfU1RSRUFNRE9XTl9SRUhZUEVfUExVR0lOU31cbiAgICAgICAgICBjb21wb25lbnRzPXt7IGE6IEVudGl0eUxpbmtDdXN0b21MaW5rIH0gYXMgUGFyYW1ldGVyczx0eXBlb2YgU3RyZWFtZG93bj5bMF1bJ2NvbXBvbmVudHMnXX1cbiAgICAgICAgICBsaW5rU2FmZXR5PXt7IGVuYWJsZWQ6IGZhbHNlIH19XG4gICAgICAgICAgaXNBbmltYXRpbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgIHNoaWtpVGhlbWU9e1snZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddfVxuICAgICAgICAgIGNvbnRyb2xzPXt7IHRhYmxlOiBmYWxzZSwgY29kZTogZmFsc2UgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtkaXNwbGF5VGV4dH1cbiAgICAgICAgPC9TdHJlYW1kb3duPlxuICAgICAgKX1cbiAgICA8L1NDQ0FJTWVzc2FnZVdyYXBwZXI+XG4gIClcbn0pXG5cblRpbWVsaW5lU2VnbWVudEJvZHkuZGlzcGxheU5hbWUgPSAnVGltZWxpbmVTZWdtZW50Qm9keSdcblxuY29uc3QgTWVzc2FnZUl0ZW0gPSBtZW1vKChwcm9wczogTWVzc2FnZUl0ZW1Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgdXNlcixcbiAgICBtZXNzYWdlLFxuICAgIGlzU3RyZWFtaW5nLFxuICAgIGlzRXJyb3IsXG4gICAgYXV0aFVzZXIsXG4gICAgb3B0aW9ucyxcbiAgICBpc0NoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlU2VsZWN0T3B0aW9uLFxuICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljayxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGRpc2FibGVGZWVkYmFjayxcbiAgICByb2xlLFxuICAgIHNvdXJjZXMsXG4gICAgYXR0YWNobWVudHMsXG4gICAgYXBwcm92YWwsXG4gICAgYXBwcm92YWxTdGF0dXMsXG4gICAgc3VnZ2VzdGlvbnMsXG4gICAgY3JlYXRlQWdlbnRGb2xsb3dVcCxcbiAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb24sXG4gICAgaXNMYXN0TWVzc2FnZSxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgW3ByZXZpZXdBdHRhY2htZW50LCBzZXRQcmV2aWV3QXR0YWNobWVudF0gPSB1c2VTdGF0ZTxBdHRhY2htZW50RmlsZSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzQ3VycmVudFVzZXIgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCB1c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpXG4gIGNvbnN0IGlzQXNzaXN0YW50ID0gcm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCB1c2VyLmlkID09PSAnYXNzaXN0YW50J1xuICAvLyBNaWVudHJhcyBlbCBhZ2VudGUgXCJwaWVuc2FcIiAoc3RyZWFtaW5nIHNpbiB0ZXh0bykgbm8gbW9udGFtb3MgZWwgTWVzc2FnZUl0ZW06XG4gIC8vIHVuIHBsYWNlaG9sZGVyIHZhY8OtbyBzdW1hcsOtYSBvdHJvIGdhcCBkZSAzNnB4IGVuY2ltYSBkZWwgaW5kaWNhZG9yIGRlIGFjdGl2aWRhZC5cbiAgY29uc3QgaXNTdHJlYW1pbmdQbGFjZWhvbGRlciA9IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQoaWQpXG4gIGNvbnN0IHN0cmVhbWluZ1RleHQgPSB1c2VTdHJlYW1pbmdNZXNzYWdlKGlzU3RyZWFtaW5nIHx8IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXIgPyBpZCA6IG51bGwpXG4gIGNvbnN0IGlzQWN0aXZlU3RyZWFtaW5nID0gISFpc1N0cmVhbWluZyB8fCBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyXG4gIGNvbnN0IGlzVGhpbmtpbmcgPSBpc0FjdGl2ZVN0cmVhbWluZyAmJiAhc3RyZWFtaW5nVGV4dFxuICBpZiAoaXNUaGlua2luZykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgbWVzc2FnZUF0dGFjaG1lbnRzID1cbiAgICBhdHRhY2htZW50cyAmJiBhdHRhY2htZW50cy5sZW5ndGggPiAwXG4gICAgICA/IGF0dGFjaG1lbnRzXG4gICAgICA6ICFpc0Fzc2lzdGFudCAmJiBBcnJheS5pc0FycmF5KHNvdXJjZXMpXG4gICAgICAgID8gKHNvdXJjZXMgYXMgQXR0YWNobWVudEZpbGVbXSlcbiAgICAgICAgOiBbXVxuXG4gIGNvbnN0IGhhbmRsZUF0dGFjaG1lbnRDbGljayA9IChhdHRhY2htZW50OiBBdHRhY2htZW50RmlsZSkgPT4ge1xuICAgIC8vIFBlcm1pdGlyIHByZXZpc3VhbGl6YWNpw7NuIHNpIHRpZW5lIGFyY2hpdm8gbG9jYWwgbyBVUkxzIGRlbCBiYWNrZW5kXG4gICAgaWYgKFxuICAgICAgYXR0YWNobWVudC5maWxlIGluc3RhbmNlb2YgRmlsZSB8fFxuICAgICAgYXR0YWNobWVudC5vcmlnaW5hbEZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50LnVybF90aHVtYm5haWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIHx8XG4gICAgICBhdHRhY2htZW50LnVybF9maWxlXG4gICAgKSB7XG4gICAgICBzZXRQcmV2aWV3QXR0YWNobWVudChhdHRhY2htZW50KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlUHJldmlldyA9ICgpID0+IHtcbiAgICBzZXRQcmV2aWV3QXR0YWNobWVudChudWxsKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudERvd25sb2FkID0gYXN5bmMgKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gYXR0YWNobWVudC5uYW1lLmluY2x1ZGVzKCcuJykgPyAnJyA6IGAuJHthdHRhY2htZW50LnR5cGV9YFxuICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7YXR0YWNobWVudC5uYW1lfSR7ZXh0ZW5zaW9ufWBcbiAgICBjb25zdCBmaWxlVXJsID0gYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHwgYXR0YWNobWVudC51cmxfZmlsZSB8fCBhdHRhY2htZW50LnVybF90aHVtYm5haWxcblxuICAgIHRyeSB7XG4gICAgICBsZXQgYmxvYlVybDogc3RyaW5nIHwgbnVsbCA9IG51bGxcblxuICAgICAgaWYgKGZpbGVVcmwpIHtcbiAgICAgICAgY29uc3QgZG93bmxvYWRlZEZpbGUgPSBhd2FpdCBkb3dubG9hZEZpbGVGcm9tVXJsKGZpbGVVcmwsIGZpbGVOYW1lLCBhdHRhY2htZW50LnR5cGUpXG4gICAgICAgIGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGRvd25sb2FkZWRGaWxlKVxuICAgICAgfSBlbHNlIGlmIChhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgIGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGF0dGFjaG1lbnQuZmlsZSlcbiAgICAgIH1cblxuICAgICAgaWYgKCFibG9iVXJsKSByZXR1cm5cblxuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgICAgbGluay5ocmVmID0gYmxvYlVybFxuICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lXG4gICAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICAgIGxpbmsuY2xpY2soKVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGJsb2JVcmwpXG4gICAgICB9LCAxMDApXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBkb3dubG9hZCBhdHRhY2htZW50JywgZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgaWYgKGlzQ2hhbmdlUHJvamVjdCAmJiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxNZXNzYWdlV3JhcHBlciBrZXk9e2lkfSBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfSBkYXRhLW1lc3NhZ2UtaWQ9e2lkfSBoYXNGZWVkYmFjaz17ZmFsc2V9PlxuICAgICAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICAgICAge2lzQXNzaXN0YW50ICYmICFpc1RoaW5raW5nICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIC8+fVxuICAgICAgICAgIDxNZXNzYWdlQ29udGVudFdyYXBwZXJcbiAgICAgICAgICAgIGlzQ2hhbmdlUHJvamVjdD17aXNDaGFuZ2VQcm9qZWN0fVxuICAgICAgICAgICAgbWVzc2FnZT17bWVzc2FnZX1cbiAgICAgICAgICAgIGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgICBpc0Vycm9yPXtpc0Vycm9yfVxuICAgICAgICAgICAgbWVzc2FnZUV4dHJhQ29udGVudD17PE1lc3NhZ2VPcHRpb25zIG9wdGlvbnM9e29wdGlvbnMgYXMgYW55fSBoYW5kbGVTZWxlY3RPcHRpb249e2hhbmRsZVNlbGVjdE9wdGlvbn0gLz59XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TQ01lc3NhZ2VJdGVtV3JhcHBlcj5cbiAgICAgIDwvTWVzc2FnZVdyYXBwZXI+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2tDbGljayA9IChmZWVkYmFjazogRmVlZGJhY2spID0+IHtcbiAgICBjb25zdCBzZXNzaW9uSWQgPSBpZFxuICAgICAgLnNwbGl0KCctJylcbiAgICAgIC5maWx0ZXIocXVlc3Rpb25JZCA9PiBxdWVzdGlvbklkICE9PSAnYW5zd2VyJylcbiAgICAgIC5qb2luKCctJylcbiAgICBoYW5kbGVGZWVkYmFjaz8uKGZlZWRiYWNrLCBzZXNzaW9uSWQpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgIHtpc0Fzc2lzdGFudCAmJiAhaXNUaGlua2luZyAmJiA8QXNzaXN0YW50TWVzc2FnZUhlYWRlciAvPn1cbiAgICAgIDxTQ01lc3NhZ2VJdGVtSW5uZXI+XG4gICAgICAgIHshIW1lc3NhZ2VBdHRhY2htZW50cy5sZW5ndGggJiYgKFxuICAgICAgICAgIDxTQ0F0dGFjaG1lbnRzUm93ICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAgICAgICAge21lc3NhZ2VBdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIC8vIERldGVjdGFyIHNpIGVzIHVuIGFyY2hpdm8gZGUgYXVkaW9cbiAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50Py50eXBlPy50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnROYW1lID0gYXR0YWNobWVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSB8fCAnJ1xuICAgICAgICAgICAgICBjb25zdCBpc0F1ZGlvRmlsZSA9XG4gICAgICAgICAgICAgICAgYXR0YWNobWVudFR5cGUuc3RhcnRzV2l0aCgnYXVkaW8vJykgfHxcbiAgICAgICAgICAgICAgICBbJ2ZsYWMnLCAnbTRhJywgJ21wMycsICdtcDQnLCAnb2dhJywgJ29nZycsICd3YXYnLCAnd2VibSddLmluY2x1ZGVzKGF0dGFjaG1lbnRUeXBlKSB8fFxuICAgICAgICAgICAgICAgIFsnLmZsYWMnLCAnLm00YScsICcubXAzJywgJy5tcDQnLCAnLm9nYScsICcub2dnJywgJy53YXYnLCAnLndlYm0nXS5zb21lKGV4dCA9PlxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudE5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICBpZiAoaXNBdWRpb0ZpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEF0dGFjaG1lbnRDYXJkQXVkaW8ga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2F0dGFjaG1lbnQubmFtZX1gfSBhdHRhY2htZW50PXthdHRhY2htZW50fSAvPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8QXR0YWNobWVudENhcmRcbiAgICAgICAgICAgICAgICAgIGtleT17YCR7YXR0YWNobWVudC5pZH0tJHthdHRhY2htZW50Lm5hbWV9YH1cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9XG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQ9eygpID0+IGhhbmRsZUF0dGFjaG1lbnREb3dubG9hZChhdHRhY2htZW50KX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUF0dGFjaG1lbnRDbGljayhhdHRhY2htZW50KX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NDQXR0YWNobWVudHNSb3c+XG4gICAgICAgICl9XG4gICAgICAgIHsoISFtZXNzYWdlIHx8IGlzQWN0aXZlU3RyZWFtaW5nKSAmJiAhKGlzQXNzaXN0YW50ICYmICEhbWVzc2FnZUF0dGFjaG1lbnRzLmxlbmd0aCkgJiYgKFxuICAgICAgICAgIDxTdHJlYW1pbmdNZXNzYWdlQm9keVxuICAgICAgICAgICAgbWVzc2FnZT17bWVzc2FnZSA/PyAnJ31cbiAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtpc0FjdGl2ZVN0cmVhbWluZ31cbiAgICAgICAgICAgIGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgICBpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9XG4gICAgICAgICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPXtwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkfVxuICAgICAgICAgICAgYXBwcm92YWw9e2FwcHJvdmFsfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIHNvdXJjZXM9e3NvdXJjZXN9XG4gICAgICAgICAgICBzdWdnZXN0aW9ucz17c3VnZ2VzdGlvbnN9XG4gICAgICAgICAgICBjcmVhdGVBZ2VudEZvbGxvd1VwPXtjcmVhdGVBZ2VudEZvbGxvd1VwfVxuICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2tDbGljaz17aGFuZGxlRmVlZGJhY2tDbGlja31cbiAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17ZGlzYWJsZUZlZWRiYWNrID8/IG51bGx9XG4gICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s9e2hhbmRsZVN1Z2dlc3Rpb25DbGlja31cbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zRGlzYWJsZWQ9e2lzQWN0aXZlU3RyZWFtaW5nIHx8ICEhaGFzU2VsZWN0ZWRTdWdnZXN0aW9ufVxuICAgICAgICAgICAgbWVzc2FnZUlkPXtpZH1cbiAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2U9e2lzTGFzdE1lc3NhZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2FwcHJvdmFsICYmIGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyAmJiAoXG4gICAgICAgICAgPFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICAgICAgPEFwcHJvdmFsQm94XG4gICAgICAgICAgICAgIGFjdGlvbnM9e2FwcHJvdmFsLnBlbmRpbmdfYWN0aW9uc31cbiAgICAgICAgICAgICAgc3RhdHVzPXthcHByb3ZhbFN0YXR1c31cbiAgICAgICAgICAgICAgb25BcHByb3ZlPXt0aHJlYWRJZHMgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbih0aHJlYWRJZHMsICdhcHByb3ZlJyl9XG4gICAgICAgICAgICAgIG9uUmVqZWN0PXt0aHJlYWRJZHMgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbih0aHJlYWRJZHMsICdyZWplY3QnKX1cbiAgICAgICAgICAgICAgaXNQcm9qZWN0RGVsZXRlZD17cHJvcHMucHJvamVjdE1ldGFkYXRhPy5pc19kZWxldGVkID09PSB0cnVlfVxuICAgICAgICAgICAgICBpc0V4cGFuZGVkPXtwcm9wcy5leHBhbmRlZH1cbiAgICAgICAgICAgICAgaGl0bEluc3RhbmNlSWQ9e2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1cbiAgICAgICAgICAgICAgd2FybmluZ01lc3NhZ2U9e2FwcHJvdmFsLndhcm5pbmdfbWVzc2FnZX1cbiAgICAgICAgICAgICAgbWFudWFsQXBwcm92YWxEZXRlY3RlZD17YXBwcm92YWwubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICApfVxuICAgICAgPC9TQ01lc3NhZ2VJdGVtSW5uZXI+XG4gICAgICA8QXR0YWNobWVudFByZXZpZXdNb2RhbFxuICAgICAgICBpc09wZW49eyEhcHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlUHJldmlld31cbiAgICAgICAgYXR0YWNobWVudD17cHJldmlld0F0dGFjaG1lbnR9XG4gICAgICAvPlxuICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gIClcbn0pXG5cbmNvbnN0IENoYXRBSU1lc3NhZ2VzSW5uZXIgPSAoe1xuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIGluaXRpYWxDaGF0SWQsXG4gIG9uRXJyb3IsXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeSxcbiAgb25TY3JvbGxUb0JvdHRvbSxcbiAgYXR0YWNobWVudHMsXG4gIGFnZW50cyxcbiAgZXhwYW5kZWQsXG59OiBDaGF0QUlNZXNzYWdlc1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IHsgaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZSwgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGNoYXRJbml0aWFsaXplZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNMb2FkaW5nTW9yZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgdXNlclNjcm9sbGluZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsVGhyZXNob2xkUmVmID0gdXNlUmVmKDM5KVxuICBjb25zdCBsYXN0U2Nyb2xsVG9wUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHNob3dTY3JvbGxUb0JvdHRvbVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsUmFmUmVmID0gdXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzaG93U2Nyb2xsVG9Cb3R0b20sIHNldFNob3dTY3JvbGxUb0JvdHRvbV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMsIHNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHt9KVxuXG4gIGNvbnN0IHtcbiAgICBtZXNzYWdlcyxcbiAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLFxuICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgYWN0aXZlTG9hZGluZ3MsXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBzdG9wR2VuZXJhdGlvbixcbiAgfSA9IHVzZUNoYXRNYW5hZ2VyKHtcbiAgICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQgfHwgdW5kZWZpbmVkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBvbkVycm9yLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIGFnZW50cyxcbiAgfSlcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgICBjaGFuZ2VQcm9qZWN0KG9wdGlvbilcbiAgICB9LFxuICAgIFtjaGFuZ2VQcm9qZWN0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKG1lc3NhZ2VJZDogc3RyaW5nLCBzdWdnZXN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghc3VnZ2VzdGlvbj8udHJpbSgpKSByZXR1cm5cbiAgICAgIGlmIChzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzW21lc3NhZ2VJZF0pIHJldHVyblxuXG4gICAgICBjb25zdCB0YXJnZXRNZXNzYWdlID0gbWVzc2FnZXMuZmluZChtc2cgPT4gbXNnLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICBjb25zdCBpc1JldHJ5U3VnZ2VzdGlvbiA9ICEhdGFyZ2V0TWVzc2FnZT8uaXNFcnJvciAmJiBzdWdnZXN0aW9uID09PSB0KCdjaGF0LnJldHJ5JylcblxuICAgICAgbGV0IHN0YXJ0ZWQgPSBmYWxzZVxuICAgICAgaWYgKGlzUmV0cnlTdWdnZXN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGxhc3RVc2VyTWVzc2FnZSA9IG1lc3NhZ2VzXG4gICAgICAgICAgLmZpbHRlcihtc2cgPT4gbXNnLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IG1zZy51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpKVxuICAgICAgICAgIC5hdCgtMSlcbiAgICAgICAgaWYgKGxhc3RVc2VyTWVzc2FnZT8ubWVzc2FnZSkge1xuICAgICAgICAgIGNvbnN0IHJldHJ5QXR0YWNobWVudHMgPSBBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZS5hdHRhY2htZW50cylcbiAgICAgICAgICAgID8gbGFzdFVzZXJNZXNzYWdlLmF0dGFjaG1lbnRzXG4gICAgICAgICAgICA6IEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlLnNvdXJjZXMpXG4gICAgICAgICAgICAgID8gbGFzdFVzZXJNZXNzYWdlLnNvdXJjZXNcbiAgICAgICAgICAgICAgOiBbXVxuICAgICAgICAgIHN0YXJ0ZWQgPSAoYXdhaXQgc2VuZE1lc3NhZ2UobGFzdFVzZXJNZXNzYWdlLm1lc3NhZ2UsIHJldHJ5QXR0YWNobWVudHMpKSA/PyBmYWxzZVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydGVkID0gKGF3YWl0IHNlbmRNZXNzYWdlKHN1Z2dlc3Rpb24pKSA/PyBmYWxzZVxuICAgICAgfVxuXG4gICAgICBpZiAoIXN0YXJ0ZWQpIHJldHVyblxuXG4gICAgICBjb25zdCBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPSBpc01haWFrZXJBZ2VudChhZ2VudClcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRTdWdnZXN0ZWRBbnN3ZXIsIHtcbiAgICAgICAgYWdlbnRfdHlwZTogaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID8gJ21hcmtldHBsYWNlJyA6IGFnZW50Py50eXBlLFxuICAgICAgfSlcbiAgICAgIHNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMocHJldiA9PiAoeyAuLi5wcmV2LCBbbWVzc2FnZUlkXTogdHJ1ZSB9KSlcbiAgICB9LFxuICAgIFtcbiAgICAgIHNlbmRNZXNzYWdlLFxuICAgICAgc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyxcbiAgICAgIGV2ZW50LFxuICAgICAgYWdlbnQ/LmVudGl0eSxcbiAgICAgIGFnZW50Py5uYW1lLFxuICAgICAgYWdlbnQ/LnR5cGUsXG4gICAgICBtZXNzYWdlcyxcbiAgICAgIHQsXG4gICAgICBhdXRoVXNlci5pZCxcbiAgICBdXG4gIClcblxuICAvKipcbiAgICogQWN0dWFsaXphIGVsIGVzdGFkbyBkZWwgYm90w7NuIFwic2Nyb2xsIHRvIGJvdHRvbVwiIGNvbXBhcmFuZG8gbGEgcG9zaWNpw7NuXG4gICAqIGFjdHVhbCBkZWwgc2Nyb2xsIGNvbiBlbCBmb25kby4gVXNhIHVuIHJlZiBwYXJhIGV2aXRhciBgc2V0U3RhdGVgIGN1YW5kb1xuICAgKiBlbCB2YWxvciBubyBjYW1iaWEuXG4gICAqL1xuICBjb25zdCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGlmICghZWwpIHJldHVyblxuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gZWxcbiAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICBpZiAoc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgIT09IHNob3VsZFNob3cpIHtcbiAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgfVxuICB9LCBbXSlcblxuICAvKipcbiAgICogU2Nyb2xsIGlubWVkaWF0byBhbCBmb25kbyAoZGVudHJvIGRlIHJBRiBwYXJhIGNvb3JkaW5hciBjb24gZWwgcGFpbnQpXG4gICAqIHkgYWN0dWFsaXphIGxhIHZpc2liaWxpZGFkIGRlbCBib3TDs24uIFJlc3BldGEgYHNraXBJZlVzZXJTY3JvbGxpbmdgIHBhcmFcbiAgICogbm8gc29icmVzY3JpYmlyIGVsIHNjcm9sbCBtYW51YWwgZGVsIHVzdWFyaW8gZHVyYW50ZSBlbCBzdHJlYW1pbmcuXG4gICAqL1xuICBjb25zdCBzY3JvbGxUb0JvdHRvbVJhZiA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRzOiB7IHNraXBJZlVzZXJTY3JvbGxpbmc/OiBib29sZWFuOyBkZWxheU1zPzogbnVtYmVyIH0gPSB7fSkgPT4ge1xuICAgICAgY29uc3QgeyBza2lwSWZVc2VyU2Nyb2xsaW5nID0gZmFsc2UsIGRlbGF5TXMgPSAwIH0gPSBvcHRzXG4gICAgICBjb25zdCBydW4gPSAoKSA9PiB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWwgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICAgICAgaWYgKCFlbCkgcmV0dXJuXG4gICAgICAgICAgaWYgKHNraXBJZlVzZXJTY3JvbGxpbmcgJiYgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgICBlbC5zY3JvbGxUb3AgPSBlbC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGlmIChkZWxheU1zID4gMCkgc2V0VGltZW91dChydW4sIGRlbGF5TXMpXG4gICAgICBlbHNlIHJ1bigpXG4gICAgfSxcbiAgICBbdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50KSByZXR1cm5cbiAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvKHtcbiAgICAgIHRvcDogbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgfSlcbiAgICAvLyBEYXIgdGllbXBvIGFsIHNtb290aC1zY3JvbGwgYW50ZXMgZGUgcmVjYWxjdWxhciBsYSB2aXNpYmlsaWRhZCBkZWwgYm90w7NuLlxuICAgIHNldFRpbWVvdXQodXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSwgNTAwKVxuICB9LCBbdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV0pXG5cbiAgLy8gQWwgZGVjaWRpciBlbiBlbCBBcHByb3ZhbEJveDogZWwgYm94IGNvbGFwc2EgKGJvdG9uZXMgLT4gYmFkZ2UpIHkgZWwgc3RyZWFtXG4gIC8vIGNvbnRpbsO6YSBhYmFqby4gUmVhY3RpdmFyIGVsIGF1dG8tc2Nyb2xsIHkgc2VndWlyIGVsIGZvbmRvIHBhcmEgcXVlIGxhIHZpc3RhXG4gIC8vIG5vIHF1ZWRlIGF0csOhcyAoZXZpdGEgcXVlIGFwYXJlemNhIGxhIGZsZWNoYSBkZSBzY3JvbGwtdG8tYm90dG9tKS5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbldpdGhTY3JvbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgaGFuZGxlQXBwcm92YWxEZWNpc2lvbj4pID0+IHtcbiAgICAgIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKC4uLmFyZ3MpXG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZih7IGRlbGF5TXM6IDEwMCB9KVxuICAgIH0sXG4gICAgW2hhbmRsZUFwcHJvdmFsRGVjaXNpb24sIHNjcm9sbFRvQm90dG9tUmFmXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2Nyb2xsVG9Cb3R0b20gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuVUlFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGUuY3VycmVudFRhcmdldFxuXG4gICAgICBpZiAoc2Nyb2xsUmFmUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoc2Nyb2xsUmFmUmVmLmN1cnJlbnQpXG4gICAgICB9XG5cbiAgICAgIHNjcm9sbFJhZlJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG5cbiAgICAgICAgY29uc3QgaXNTY3JvbGxpbmdVcCA9IHNjcm9sbFRvcCA8IGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc1Njcm9sbGluZ1VwKSB7XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAxNVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNOZWFyQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0IDwgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAoaXNOZWFyQm90dG9tKSB7XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAzOVxuICAgICAgICB9XG5cbiAgICAgICAgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ID0gIWlzTmVhckJvdHRvbVxuICAgICAgICBsYXN0U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSBzY3JvbGxUb3BcblxuICAgICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcblxuICAgICAgICBpZiAoaXNOZWFyQm90dG9tICYmIG9uU2Nyb2xsVG9Cb3R0b20pIHtcbiAgICAgICAgICBvblNjcm9sbFRvQm90dG9tKClcbiAgICAgICAgfVxuXG4gICAgICAgIGhhbmRsZVNjcm9sbChjb250YWluZXIpXG4gICAgICB9KVxuICAgIH0sXG4gICAgW29uU2Nyb2xsVG9Cb3R0b20sIGhhbmRsZVNjcm9sbCwgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV1cbiAgKVxuXG4gIC8vIHJlZnMgdG8gc3RhYmlsaXplIGZ1bmN0aW9ucyBhbmQgYXZvaWQgdW5uZWNlc3NhcnkgcmUtcmVuZGVyc1xuICBjb25zdCBzZW5kTWVzc2FnZVJlZiA9IHVzZVJlZihzZW5kTWVzc2FnZSlcbiAgY29uc3Qgc3RvcEdlbmVyYXRpb25SZWYgPSB1c2VSZWYoc3RvcEdlbmVyYXRpb24pXG4gIGNvbnN0IG9uU2VuZE1lc3NhZ2VSZWFkeVJlZiA9IHVzZVJlZihvblNlbmRNZXNzYWdlUmVhZHkpXG4gIGNvbnN0IHNlbmRNZXNzYWdlUHJveHlSZWYgPSB1c2VSZWYoXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4gc2VuZE1lc3NhZ2VSZWYuY3VycmVudChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gIClcbiAgY29uc3Qgc3RvcEdlbmVyYXRpb25Qcm94eVJlZiA9IHVzZVJlZigoKSA9PiBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50KCkpXG5cbiAgLy8gdXBkYXRlIHJlZnMgd2hlbiBmdW5jdGlvbnMgY2hhbmdlXG4gIHNlbmRNZXNzYWdlUmVmLmN1cnJlbnQgPSBzZW5kTWVzc2FnZVxuICBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50ID0gc3RvcEdlbmVyYXRpb25cbiAgb25TZW5kTWVzc2FnZVJlYWR5UmVmLmN1cnJlbnQgPSBvblNlbmRNZXNzYWdlUmVhZHlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCkge1xuICAgICAgb25TZW5kTWVzc2FnZVJlYWR5UmVmLmN1cnJlbnQoXG4gICAgICAgIHNlbmRNZXNzYWdlUHJveHlSZWYuY3VycmVudCxcbiAgICAgICAgc3RvcEdlbmVyYXRpb25Qcm94eVJlZi5jdXJyZW50LFxuICAgICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICAgIGlzV3JpdGluZ1xuICAgICAgKVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZSwgaXNXcml0aW5nXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzTG9hZGluZ01vcmVSZWYuY3VycmVudCA9IGlzTG9hZGluZ01vcmVNZXNzYWdlc1xuICB9LCBbaXNMb2FkaW5nTW9yZU1lc3NhZ2VzXSlcblxuICAvLyBDdWFuZG8gZWwgYWdlbnRlIGVtcGllemEgYSByZXNwb25kZXIsIHJlc2V0ZWFyIGVsIGZsYWcgeSBlbCB1bWJyYWwgcGFyYSBhY3RpdmFyIGVsIGF1dG8tc2Nyb2xsXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdhaXRpbmdSZXNwb25zZSkge1xuICAgICAgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMzlcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2VdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjaGF0SW5pdGlhbGl6ZWRSZWYuY3VycmVudCkge1xuICAgICAgY2hhdEluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBpbml0aWFsaXplQ2hhdCgpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBBdXRvc2Nyb2xsIG1pZW50cmFzIGVsIHRleHRvIGRlbCBzdHJlYW0gY3JlY2UuIEVsIHRleHRvIHNlIHBpbnRhIGFsIHJpdG1vXG4gIC8vIGRlIGB1c2VTbW9vdGhTdHJlYW1UZXh0YCAofjYwZnBzKSwgbm8gYWwgcml0bW8gZGUgbGxlZ2FkYSBkZSB0b2tlbnMgZGVsXG4gIC8vIGJhY2tlbmQ6IHBvciBlc28gYWPDoSB1c2Ftb3MgdW4gbG9vcCBkZSByQUYgcXVlIGNvbXBhcmEgYHNjcm9sbEhlaWdodGBcbiAgLy8gY29udHJhIGVsIMO6bHRpbW8gdmFsb3Igb2JzZXJ2YWRvIHkgYWp1c3RhIHNvbG8gY3VhbmRvIGNhbWJpYS4gQXPDrSBlbFxuICAvLyBzY3JvbGwgcXVlZGEgcGVyZmVjdGFtZW50ZSBzaW5jcm9uaXphZG8gY29uIGxhIGFuaW1hY2nDs24gZGVsIHRleHRvIHNpblxuICAvLyBkZXBlbmRlciBkZSBsYSBjYWRlbmNpYSBkZWwgc3RyZWFtaW5nU3RvcmUuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF3YWl0aW5nUmVzcG9uc2UgJiYgIWlzV3JpdGluZykgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGlmICghbWVzc2FnZXNSZWYuY3VycmVudCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgIGxldCBsYXN0SGVpZ2h0ID0gbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHRcblxuICAgIGNvbnN0IHRpY2sgPSAoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZWwpIHtcbiAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudEhlaWdodCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgaWYgKGN1cnJlbnRIZWlnaHQgIT09IGxhc3RIZWlnaHQpIHtcbiAgICAgICAgbGFzdEhlaWdodCA9IGN1cnJlbnRIZWlnaHRcbiAgICAgICAgaWYgKCF1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBlbC5zY3JvbGxUb3AgPSBjdXJyZW50SGVpZ2h0XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gICAgICB9XG4gICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKVxuICAgIH1cblxuICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyYWZJZCAhPSBudWxsKSBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZClcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZywgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV0pXG5cbiAgLy8gQWwgY29tZW56YXIgYSBlc3BlcmFyIGxhIHJlc3B1ZXN0YSBkZWwgYmFja2VuZCwgc2Nyb2xsIGluaWNpYWwgYWwgZm9uZG8uXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdhaXRpbmdSZXNwb25zZSAmJiBtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZih7IHNraXBJZlVzZXJTY3JvbGxpbmc6IHRydWUgfSlcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIHNjcm9sbFRvQm90dG9tUmFmXSlcblxuICAvLyBTY3JvbGwgY3VhbmRvIGNhbWJpYW4gbG9zIG1lbnNhamVzOiBkaXN0aW5ndWUgXCJudWV2byBtZW5zYWplXCIgKGFncmVnYWRvKVxuICAvLyBkZSBcInJlZW1wbGF6b1wiIChtaXNtbyBpZC9sZW5ndGgsIGVqLiBmZWVkYmFjayBvIGFwcHJvdmFsU3RhdHVzKS4gRW5cbiAgLy8gcmVlbXBsYXpvcyBzb2xvIHNlIHJlY2FsY3VsYSBsYSB2aXNpYmlsaWRhZCBkZWwgYm90w7NuIHNpbiBmb3J6YXIgc2Nyb2xsLlxuICBjb25zdCBsYXN0TWVzc2FnZUlkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGxhc3RNZXNzYWdlc0xlbmd0aFJlZiA9IHVzZVJlZjxudW1iZXI+KDApXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50IHx8IGxvYWRpbmdNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG4gICAgY29uc3QgbGFzdElkID0gbGFzdE1lc3NhZ2U/LmlkID8/IG51bGxcbiAgICBjb25zdCBwcmV2SWQgPSBsYXN0TWVzc2FnZUlkUmVmLmN1cnJlbnRcbiAgICBjb25zdCBwcmV2TGVuID0gbGFzdE1lc3NhZ2VzTGVuZ3RoUmVmLmN1cnJlbnRcbiAgICBsYXN0TWVzc2FnZUlkUmVmLmN1cnJlbnQgPSBsYXN0SWRcbiAgICBsYXN0TWVzc2FnZXNMZW5ndGhSZWYuY3VycmVudCA9IG1lc3NhZ2VzLmxlbmd0aFxuXG4gICAgY29uc3QgaXNOZXdNZXNzYWdlID0gbGFzdElkICE9PSBwcmV2SWQgfHwgbWVzc2FnZXMubGVuZ3RoICE9PSBwcmV2TGVuXG4gICAgaWYgKCFpc05ld01lc3NhZ2UpIHtcbiAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTAwXG4gICAgY29uc3QgaGFzSW5pdGlhbE1lc3NhZ2UgPSBtZXNzYWdlcy5zb21lKG1zZyA9PiBtc2cuaWQgPT09ICd1c2VyLWluaXRpYWwtbWVzc2FnZScpXG4gICAgY29uc3QgaXNBcHByb3ZhbCA9ICEhbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2FwcHJvdmFsLScpIHx8ICEhbGFzdE1lc3NhZ2UuYXBwcm92YWwpXG4gICAgY29uc3QgaXNBbnN3ZXJPclF1ZXN0aW9uID1cbiAgICAgICEhbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2Fuc3dlci0nKSB8fCBsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdxdWVzdGlvbi0nKSlcblxuICAgIC8vIEFwcHJvdmFsOiBzZWN1ZW5jaWEgZGUgc2Nyb2xscyBjb24gZGVsYXkgcG9ycXVlIGVsIEFwcHJvdmFsQm94IG5lY2VzaXRhXG4gICAgLy8gdW4gdGljayBwYXJhIG1lZGlyc2UuIFNjcm9sbGVhIGF1bnF1ZSBlbCB1c3VhcmlvIG5vIGVzdMOpIGFsIGZvbmRvIHNpIG5vXG4gICAgLy8gZXN0w6Egc2Nyb2xsZWFuZG8gbWFudWFsbWVudGUuXG4gICAgaWYgKGlzQXBwcm92YWwgJiYgKGlzQXRCb3R0b20gfHwgIXVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCkpIHtcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKHsgZGVsYXlNczogMTAwIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBOdWV2b3MgYW5zd2VyL3F1ZXN0aW9uOiBzY3JvbGwgc2kgZWwgdXN1YXJpbyB5YSBlc3RhYmEgYWwgZm9uZG8uXG4gICAgaWYgKGlzQW5zd2VyT3JRdWVzdGlvbiAmJiBpc0F0Qm90dG9tKSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBDYXNvIGJvcmRlOiBjYW1iaW9zIGRlIG1lbnNhamVzIHNpbiBzZXIgbnVldm8gYW5zd2VyL3VzZXIvYXBwcm92YWxcbiAgICAvLyBwZXJvIHPDrSB1biBtZW5zYWplIG51ZXZvIChubyBlbCBcInVzZXItaW5pdGlhbC1tZXNzYWdlXCIpLiBTY3JvbGxlYS5cbiAgICBpZiAoIWlzQW5zd2VyT3JRdWVzdGlvbiAmJiAhaXNBcHByb3ZhbCAmJiAhaGFzSW5pdGlhbE1lc3NhZ2UgJiYgbWVzc2FnZXMubGVuZ3RoID4gcHJldkxlbikge1xuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gIH0sIFttZXNzYWdlcywgbG9hZGluZ01lc3NhZ2VzLCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIHNjcm9sbFRvQm90dG9tUmFmLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICAvLyBFc3RhZG8gaW5pY2lhbCBkZWwgYm90w7NuIHNjcm9sbC10by1ib3R0b20gYWwgdGVybWluYXIgbG9hZGluZ01lc3NhZ2VzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgICB9XG4gIH0sIFtsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLmxlbmd0aCwgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV0pXG5cbiAgLy8gT2J0ZW5lciBlbCDDumx0aW1vIG1lbnNhamUgZGVsIHVzdWFyaW8gcGFyYSB2ZXJpZmljYXIgc2kgdGllbmUgYXR0YWNobWVudHNcbiAgY29uc3QgbGFzdFVzZXJNZXNzYWdlID0gbWVzc2FnZXNcbiAgICAuZmlsdGVyKG1zZyA9PiBtc2cucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgfHwgbXNnLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkpXG4gICAgLmF0KC0xKVxuXG4gIGNvbnN0IGF0dGFjaG1lbnRzQ291bnQgPVxuICAgIChBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZT8uYXR0YWNobWVudHMpID8gbGFzdFVzZXJNZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aCA6IDApIHx8XG4gICAgKEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlPy5zb3VyY2VzKSA/IGxhc3RVc2VyTWVzc2FnZS5zb3VyY2VzLmxlbmd0aCA6IDApXG5cbiAgY29uc3Qgc3RyZWFtTG9hZGluZ0Rpc3BsYXkgPSByZXNvbHZlU3RyZWFtTG9hZGluZ0Rpc3BsYXkoe1xuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIGFjdGl2ZUxvYWRpbmdzOiBhY3RpdmVMb2FkaW5ncyB8fCB7fSxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGhhc0F0dGFjaG1lbnRzOiBCb29sZWFuKGF0dGFjaG1lbnRzQ291bnQpLFxuICAgIGF0dGFjaG1lbnRzQ291bnQsXG4gICAgdCxcbiAgfSlcblxuICBjb25zdCBzdHJlYW1UaW1lbGluZSA9IHVzZVN0cmVhbVRpbWVsaW5lKClcbiAgY29uc3Qgc2hvd1N0cmVhbVR1cm5UaW1lbGluZSA9IEJvb2xlYW4oXG4gICAgc3RyZWFtVGltZWxpbmUudHVybklkICYmICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nIHx8IHN0cmVhbVRpbWVsaW5lLnNlZ21lbnRzLmxlbmd0aCA+IDApXG4gIClcblxuICBjb25zdCBsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBmb3IgKGxldCBpID0gbWVzc2FnZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgIGlmIChtZXNzYWdlc1tpXS5hcHByb3ZhbCkgcmV0dXJuIGlcbiAgICB9XG4gICAgcmV0dXJuIC0xXG4gIH0sIFttZXNzYWdlc10pXG5cbiAgY29uc3QgYW5jaG9yVGltZWxpbmVUb0FwcHJvdmFsID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGxhc3RBcHByb3ZhbE1lc3NhZ2VJbmRleCA8IDAgfHwgIXNob3dTdHJlYW1UdXJuVGltZWxpbmUpIHJldHVybiBmYWxzZVxuICAgIHJldHVybiBtZXNzYWdlc1tsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXhdLmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnXG4gIH0sIFtsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXgsIG1lc3NhZ2VzLCBzaG93U3RyZWFtVHVyblRpbWVsaW5lXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd1N0cmVhbVR1cm5UaW1lbGluZSkgcmV0dXJuXG4gICAgY29uc3QgYXBwcm92YWxNZXNzYWdlID0gbGFzdEFwcHJvdmFsTWVzc2FnZUluZGV4ID49IDAgPyBtZXNzYWdlc1tsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXhdIDogdW5kZWZpbmVkXG4gICAgc3RyZWFtRGVidWdMb2coJ2NoYXRVSScsICdzdHJlYW1UdXJuVGltZWxpbmU6cmVuZGVyJywge1xuICAgICAgc2hvd1N0cmVhbVR1cm5UaW1lbGluZSxcbiAgICAgIGFuY2hvclRpbWVsaW5lVG9BcHByb3ZhbCxcbiAgICAgIHR1cm5JZDogc3RyZWFtVGltZWxpbmUudHVybklkLFxuICAgICAgc2VnbWVudENvdW50OiBzdHJlYW1UaW1lbGluZS5zZWdtZW50cy5sZW5ndGgsXG4gICAgICB0aW1lbGluZTogc3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdChzdHJlYW1UaW1lbGluZSksXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBpc1dyaXRpbmcsXG4gICAgICBhcHByb3ZhbE1lc3NhZ2VJZDogYXBwcm92YWxNZXNzYWdlPy5pZCxcbiAgICAgIGFwcHJvdmFsU3RhdHVzOiBhcHByb3ZhbE1lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzLFxuICAgICAgcGVuZGluZ1Rvb2xzOiBhcHByb3ZhbE1lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnM/Lm1hcChhID0+IGEudG9vbF9uYW1lKSxcbiAgICB9KVxuICAgIGlmIChhcHByb3ZhbE1lc3NhZ2U/LmFwcHJvdmFsICYmIGFwcHJvdmFsTWVzc2FnZS5hcHByb3ZhbFN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAoe1xuICAgICAgICBzY29wZTogJ2NoYXRVSScsXG4gICAgICAgIHNvdXJjZTogJ3RpbWVsaW5lU2VnbWVudCcsXG4gICAgICAgIGhpdGxDb250ZXh0OiB7XG4gICAgICAgICAgbWVzc2FnZUlkOiBhcHByb3ZhbE1lc3NhZ2UuaWQsXG4gICAgICAgICAgbWVzc2FnZVRleHQ6IGFwcHJvdmFsTWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIGFwcHJvdmFsOiBhcHByb3ZhbE1lc3NhZ2UuYXBwcm92YWwsXG4gICAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsTWVzc2FnZS5hcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgICAgdGhyZWFkSWRzOiBhcHByb3ZhbE1lc3NhZ2UuYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5tYXAoYSA9PiBhLnRocmVhZF9pZCksXG4gICAgICAgIH0sXG4gICAgICAgIHVpU3VyZmFjZXM6IFsnYXBwcm92YWxCb3gnLCAnc3RyZWFtVGltZWxpbmUnXSxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXG4gICAgc2hvd1N0cmVhbVR1cm5UaW1lbGluZSxcbiAgICBhbmNob3JUaW1lbGluZVRvQXBwcm92YWwsXG4gICAgc3RyZWFtVGltZWxpbmUsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXgsXG4gICAgbWVzc2FnZXMsXG4gIF0pXG5cbiAgY29uc3QgcmVuZGVyVGltZWxpbmVDb250ZW50QmxvY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgdGV4dCxcbiAgICAgIGlzU3RyZWFtaW5nLFxuICAgICAgc2hvd0Fzc2lzdGFudEhlYWRlcixcbiAgICB9OiB7XG4gICAgICBzZWdtZW50SWQ6IHN0cmluZ1xuICAgICAgdGV4dDogc3RyaW5nXG4gICAgICBpc1N0cmVhbWluZzogYm9vbGVhblxuICAgICAgc2hvd0Fzc2lzdGFudEhlYWRlcjogYm9vbGVhblxuICAgIH0pID0+IChcbiAgICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ+XG4gICAgICAgIHtzaG93QXNzaXN0YW50SGVhZGVyICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIC8+fVxuICAgICAgICA8U0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgICAgIDxUaW1lbGluZVNlZ21lbnRCb2R5IHRleHQ9e3RleHR9IGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ30gLz5cbiAgICAgICAgPC9TQ01lc3NhZ2VJdGVtSW5uZXI+XG4gICAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICAgICksXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IHN0cmVhbVR1cm5UaW1lbGluZSA9IHNob3dTdHJlYW1UdXJuVGltZWxpbmUgPyAoXG4gICAgPFN0cmVhbUFzc2lzdGFudFR1cm5UaW1lbGluZVxuICAgICAgc2VnbWVudHM9e3N0cmVhbVRpbWVsaW5lLnNlZ21lbnRzfVxuICAgICAgaW5pdGlhbEFjdGl2aXR5PXtzdHJlYW1Mb2FkaW5nRGlzcGxheX1cbiAgICAgIHdhaXRpbmdSZXNwb25zZT17d2FpdGluZ1Jlc3BvbnNlfVxuICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICByZW5kZXJDb250ZW50QmxvY2s9e3JlbmRlclRpbWVsaW5lQ29udGVudEJsb2NrfVxuICAgIC8+XG4gICkgOiBudWxsXG5cbiAgY29uc3QgaXNTY3JvbGxPblBhcmVudCA9ICEhZXhwYW5kZWRcbiAgY29uc3QgaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID0gaXNNYWlha2VyQWdlbnQoYWdlbnQpXG5cbiAgLy8gQWwgZXhwYW5kaXIvY29udHJhZXIgZWwgbW9kYWwgZWwgcmVmIHBhc2EgYSBvdHJvIGNvbnRlbmVkb3IgKHNjcm9sbFRvcCBzZSByZXNldGVhIGEgMCkuXG4gIC8vIFJlc3RhdXJhciBsYSBwb3NpY2nDs24gZGUgc2Nyb2xsIGFudGVzIGRlbCBwYWludCBwYXJhIGV2aXRhciBxdWUgbGEgY29udmVyc2FjacOzbiBzYWx0ZSBhcnJpYmEuXG4gIGNvbnN0IGV4cGFuZGVkUmVmID0gdXNlUmVmKGV4cGFuZGVkKVxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChleHBhbmRlZFJlZi5jdXJyZW50ICE9PSBleHBhbmRlZCAmJiBtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFRvcCA9IGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudFxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBzYXZlZFNjcm9sbFRvcFxuICAgICAgZXhwYW5kZWRSZWYuY3VycmVudCA9IGV4cGFuZGVkXG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cGFuZGVkUmVmLmN1cnJlbnQgPSBleHBhbmRlZFxuICAgIH1cbiAgfSwgW2V4cGFuZGVkXSlcblxuICBpZiAobG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGYWRlIGZpbGw+XG4gICAgICAgIDxMb2FkZXIgLz5cbiAgICAgIDwvRmFkZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBtZXNzYWdlc0NvbnRlbnQgPSAoXG4gICAgPD5cbiAgICAgIHtpc0xvYWRpbmdNb3JlTWVzc2FnZXMgJiYgPExvYWRpbmdUZXh0IHRleHQ9e3QoJ2NoYXQubG9hZGluZ01vcmUnKX0gLz59XG4gICAgICA8PlxuICAgICAgICB7bWVzc2FnZXMubWFwKChtZXNzYWdlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzQXNzaXN0YW50TWVzc2FnZSA9IG1lc3NhZ2Uucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCBtZXNzYWdlLnVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG4gICAgICAgICAgY29uc3QgaXNMYXN0TWVzc2FnZSA9IGluZGV4ID09PSBtZXNzYWdlcy5sZW5ndGggLSAxXG4gICAgICAgICAgY29uc3QgaXNTdHJlYW1pbmdQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICBpc0Fzc2lzdGFudE1lc3NhZ2UgJiYgaXNMYXN0TWVzc2FnZSAmJiBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkKG1lc3NhZ2UuaWQpXG4gICAgICAgICAgY29uc3QgaXNTdHJlYW1pbmcgPSBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyICYmICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKVxuXG4gICAgICAgICAgLy8gTm8gZmlsdHJhciBlbCBwbGFjZWhvbGRlciBkZWwgbWVuc2FqZSBlbiBzdHJlYW1pbmc6IHN1IHRleHRvIHZpdmVcbiAgICAgICAgICAvLyBlbiBlbCBzdHJlYW1pbmdTdG9yZSB5IGBtZXNzYWdlLm1lc3NhZ2VgIGVzICcnIGhhc3RhIGVsIGNvbXBsZXRlLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFpc1N0cmVhbWluZ1BsYWNlaG9sZGVyICYmXG4gICAgICAgICAgICAhaXNTdHJlYW1pbmcgJiZcbiAgICAgICAgICAgICEobWVzc2FnZS5hdHRhY2htZW50cz8ubGVuZ3RoIHx8IG1lc3NhZ2Uuc291cmNlcz8ubGVuZ3RoKSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UubWVzc2FnZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UucHJvamVjdD8ubmFtZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UuYXBwcm92YWxcbiAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuXG4gICAgICAgICAgY29uc3QgbWVzc2FnZUZlZWRiYWNrID1cbiAgICAgICAgICAgIG1lc3NhZ2U/Lndhc0hlbHBmdWwgPT09IHVuZGVmaW5lZCB8fCBtZXNzYWdlLndhc0hlbHBmdWwgPT09IG51bGxcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbWVzc2FnZS53YXNIZWxwZnVsXG4gICAgICAgICAgICAgICAgPyBGZWVkYmFjay5USFVNQlNfVVBcbiAgICAgICAgICAgICAgICA6IEZlZWRiYWNrLlRIVU1CU19ET1dOXG5cbiAgICAgICAgICAvLyBLZXkgZXN0YWJsZTogc29sbyBtZXNzYWdlLmlkIHBhcmEgZXZpdGFyIHJlbW91bnQgZHVyYW50ZSBzdHJlYW1pbmcgKG1lc3NhZ2UuZGF0ZSBwdWVkZSBjYW1iaWFyKVxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VLZXkgPSBtZXNzYWdlLmlkID8/IGBtc2ctJHtpbmRleH1gXG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17bWVzc2FnZUtleX0+XG4gICAgICAgICAgICAgIDxNZXNzYWdlSXRlbVxuICAgICAgICAgICAgICAgIHsuLi5tZXNzYWdlfVxuICAgICAgICAgICAgICAgIGF1dGhVc2VyPXthdXRoVXNlcn1cbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249e2hhbmRsZVNlbGVjdE9wdGlvbn1cbiAgICAgICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17aGFuZGxlRmVlZGJhY2t9XG4gICAgICAgICAgICAgICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbj17aGFuZGxlQXBwcm92YWxEZWNpc2lvbldpdGhTY3JvbGx9XG4gICAgICAgICAgICAgICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrPXtoYW5kbGVTdWdnZXN0aW9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uPXshIXNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZS5pZF19XG4gICAgICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXttZXNzYWdlRmVlZGJhY2t9XG4gICAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2U9e2lzTGFzdE1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7YW5jaG9yVGltZWxpbmVUb0FwcHJvdmFsICYmIGluZGV4ID09PSBsYXN0QXBwcm92YWxNZXNzYWdlSW5kZXggJiYgc3RyZWFtVHVyblRpbWVsaW5lfVxuICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgICB7c2hvd1N0cmVhbVR1cm5UaW1lbGluZSAmJiAhYW5jaG9yVGltZWxpbmVUb0FwcHJvdmFsICYmIHN0cmVhbVR1cm5UaW1lbGluZX1cbiAgICAgIDwvPlxuICAgIDwvPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlc091dGVyICRzY3JvbGxPblBhcmVudD17aXNTY3JvbGxPblBhcmVudH0+XG4gICAgICB7aXNTY3JvbGxPblBhcmVudCA/IChcbiAgICAgICAgPFNDTWVzc2FnZXNTY3JvbGwgcmVmPXttZXNzYWdlc1JlZn0gb25TY3JvbGw9e2hhbmRsZVNjcm9sbFRvQm90dG9tfT5cbiAgICAgICAgICA8U0NNZXNzYWdlc0lubmVyICRzY3JvbGxPblBhcmVudD17aXNTY3JvbGxPblBhcmVudH0gJGlzTWFya2V0cGxhY2VHbG9iYWw9e2lzTWFya2V0cGxhY2VHbG9iYWxBZ2VudH0+XG4gICAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICAgIDwvU0NNZXNzYWdlc0lubmVyPlxuICAgICAgICA8L1NDTWVzc2FnZXNTY3JvbGw+XG4gICAgICApIDogKFxuICAgICAgICA8U0NNZXNzYWdlc0lubmVyXG4gICAgICAgICAgcmVmPXttZXNzYWdlc1JlZn1cbiAgICAgICAgICBvblNjcm9sbD17aGFuZGxlU2Nyb2xsVG9Cb3R0b219XG4gICAgICAgICAgJHNjcm9sbE9uUGFyZW50PXtmYWxzZX1cbiAgICAgICAgICAkaXNNYXJrZXRwbGFjZUdsb2JhbD17aXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50fVxuICAgICAgICA+XG4gICAgICAgICAge21lc3NhZ2VzQ29udGVudH1cbiAgICAgICAgPC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Njcm9sbFRvQm90dG9tICYmIChcbiAgICAgICAgPFNjcm9sbFRvQm90dG9tQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tfT5cbiAgICAgICAgICA8QXJyb3dTbWFsbERvd24gY29sb3I9XCIjNjY2XCIgd2lkdGg9XCIyMHB4XCIgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgIDwvU2Nyb2xsVG9Cb3R0b21CdXR0b24+XG4gICAgICApfVxuICAgIDwvU0NNZXNzYWdlc091dGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNZXNzYWdlcyA9IFJlYWN0Lm1lbW8oQ2hhdEFJTWVzc2FnZXNJbm5lcilcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLEtBQUssSUFBUUMsSUFBSSxFQUFhQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsZUFBZSxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFB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LENBQUU7WUFDbEV1RCxlQUFlLEVBQUV3UyxlQUFnQjtZQUNqQ3JWLFdBQVcsRUFBRUEsV0FBWTtZQUN6QnNELGFBQWEsRUFBRUEsYUFBYztZQUM3QjJHLFFBQVEsRUFBRUE7VUFBUyxFQUNwQixDQUFDLEVBQ0RtSix3QkFBd0IsSUFBSTFLLEtBQUssS0FBS3dLLHdCQUF3QixJQUFJcUIsa0JBQWtCO1FBQUEsR0FkbEVrQixVQWVMLENBQUM7TUFFckIsQ0FBQyxDQUFDLEVBQ0QxQyxzQkFBc0IsSUFBSSxDQUFDSyx3QkFBd0IsSUFBSW1CLGtCQUFrQjtJQUFBLENBQzFFLENBQUM7RUFBQSxDQUNILENBQ0g7RUFFRCxvQkFDRTFYLEtBQUEsQ0FBQ3pCLGVBQWU7SUFBQ3NhLGVBQWUsRUFBRWhCLGdCQUFpQjtJQUFBclgsUUFBQSxHQUNoRHFYLGdCQUFnQixnQkFDZi9YLElBQUEsQ0FBQ3RCLGdCQUFnQjtNQUFDc2EsR0FBRyxFQUFFbkssV0FBWTtNQUFDb0ssUUFBUSxFQUFFbkYsb0JBQXFCO01BQUFwVCxRQUFBLGVBQ2pFVixJQUFBLENBQUNyQixlQUFlO1FBQUNvYSxlQUFlLEVBQUVoQixnQkFBaUI7UUFBQ21CLG9CQUFvQixFQUFFNUgsd0JBQXlCO1FBQUE1USxRQUFBLEVBQ2hHeVg7TUFBZSxDQUNEO0lBQUMsQ0FDRixDQUFDLGdCQUVuQm5ZLElBQUEsQ0FBQ3JCLGVBQWU7TUFDZHFhLEdBQUcsRUFBRW5LLFdBQVk7TUFDakJvSyxRQUFRLEVBQUVuRixvQkFBcUI7TUFDL0JpRixlQUFlLEVBQUUsS0FBTTtNQUN2Qkcsb0JBQW9CLEVBQUU1SCx3QkFBeUI7TUFBQTVRLFFBQUEsRUFFOUN5WDtJQUFlLENBQ0QsQ0FDbEIsRUFFQTVJLGtCQUFrQixpQkFDakJ2UCxJQUFBLENBQUN4QixvQkFBb0I7TUFBQ21DLElBQUksRUFBQyxRQUFRO01BQUNpQyxPQUFPLEVBQUU2USx5QkFBMEI7TUFBQS9TLFFBQUEsZUFDckVWLElBQUEsQ0FBQ3ZELGNBQWM7UUFBQzBjLEtBQUssRUFBQyxNQUFNO1FBQUN0WSxLQUFLLEVBQUMsTUFBTTtRQUFDQyxNQUFNLEVBQUM7TUFBTSxDQUFFO0lBQUMsQ0FDdEMsQ0FDdkI7RUFBQSxDQUNjLENBQUM7QUFFdEIsQ0FBQztBQUVELE9BQU8sSUFBTXNZLGNBQWMsZ0JBQUdyZCxLQUFLLENBQUNDLElBQUksQ0FBQytSLG1CQUFtQixDQUFDIiwiaWdub3JlTGlzdCI6W119