@projectcor/maia-components 2.11.64 → 2.11.65-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/lib/components/atoms/Chip/Chip.js +49 -15
  2. package/lib/components/atoms/Chip/styles.js +7 -3
  3. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +38 -6
  4. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +21 -13
  5. package/lib/components/atoms/MAIAInput/MAIAInput.js +8 -5
  6. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +6 -4
  7. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +10 -5
  8. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +15 -9
  9. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +13 -12
  10. package/lib/components/molecules/ChatFooter/ChatFooter.js +105 -21
  11. package/lib/components/molecules/ChatFooter/styles.js +11 -2
  12. package/lib/components/molecules/Sidebar/Sidebar.js +9 -5
  13. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
  14. package/lib/context/global-context.js +8 -1
  15. package/lib/hooks/useChatManager/useChatManager.js +155 -30
  16. package/lib/hooks/useChatMessages/useChatMessages.js +1 -1
  17. package/lib/hooks/useContextPinPopover.js +228 -0
  18. package/lib/hooks/useEntitySearch.js +74 -129
  19. package/lib/hooks/useMentionAllowedTypes.js +11 -1
  20. package/lib/hooks/useMentionPopover.js +3 -2
  21. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  22. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +16 -7
  23. package/lib/hooks/useProjectSearch.js +4 -28
  24. package/lib/hooks/useProjectSummaryConfig.js +74 -4
  25. package/lib/hooks/useRecentClientsSearch.js +4 -34
  26. package/lib/lang/br/index.js +7 -1
  27. package/lib/lang/en/index.js +7 -1
  28. package/lib/lang/es/index.js +7 -1
  29. package/lib/lang/fr/index.js +7 -1
  30. package/lib/services/maia/Agents/getAgents.js +68 -91
  31. package/lib/services/maia/Chats/getChatsByUserId.js +13 -9
  32. package/lib/services/maia/Orchestrator/orchestrator.js +15 -5
  33. package/lib/services/utils/validateIsMaia.js +2 -2
  34. package/lib/types/agent.js +1 -1
  35. package/lib/utils/hitlAnalytics.js +3 -3
  36. package/package.json +1 -1
@@ -89,11 +89,14 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
89
89
  var _useResizeListener = useResizeListener(textRefAgent, [selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.name]),
90
90
  showTooltipAgent = _useResizeListener.showTooltip;
91
91
  var agentsRef = useRef(null);
92
+ var isMaiaAgent = useCallback(function (agentItem) {
93
+ return agentItem.type === 'orchestrator';
94
+ }, []);
92
95
  var agentsForSelector = useMemo(function () {
93
96
  return agents.filter(function (agentItem) {
94
- return agentItem.entity !== 'global';
97
+ return isMaiaAgent(agentItem) || agentItem.entity !== 'global';
95
98
  });
96
- }, [agents]);
99
+ }, [agents, isMaiaAgent]);
97
100
 
98
101
  // Manejar scroll infinito para cargar más agents
99
102
  useEffect(function () {
@@ -247,25 +250,23 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
247
250
  children: /*#__PURE__*/_jsxs(SCCAIMHWrapperModalContent, {
248
251
  children: [window.MAIA_CHAT_AI_FEATURE_ACCESS && !cloneAgentsRoleBlocked && /*#__PURE__*/_jsx(_Fragment, {
249
252
  children: function () {
250
- var cloneAgents = agentsForSelector.filter(function (ag) {
251
- return ag.type === 'clone';
252
- });
253
- if (!cloneAgents.length) return null;
253
+ var maiaAgents = agentsForSelector.filter(isMaiaAgent);
254
+ if (!maiaAgents.length) return null;
254
255
  return /*#__PURE__*/_jsxs(_Fragment, {
255
256
  children: [/*#__PURE__*/_jsxs(SCCAIWrapper, {
256
257
  children: [/*#__PURE__*/_jsx(MAIAIcon, {}), /*#__PURE__*/_jsx(SCCAIMHWrapperModalContentTitle, {
257
258
  isClone: true,
258
259
  children: "MAIA by COR"
259
260
  })]
260
- }), /*#__PURE__*/_jsx(SCCAIMHDivider, {}), cloneAgents.map(function (cloneAgent, index) {
261
+ }), /*#__PURE__*/_jsx(SCCAIMHDivider, {}), maiaAgents.map(function (maiaAgent, index) {
261
262
  return /*#__PURE__*/_jsx(ChatAIAgentOption, {
262
- agent: cloneAgent,
263
+ agent: maiaAgent,
263
264
  index: index,
264
265
  handleSelectAgent: handleSelectAgent,
265
- isSelected: (selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) === cloneAgent.id,
266
+ isSelected: (selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) === maiaAgent.id,
266
267
  isMaia: true,
267
268
  onFavoriteToggle: onAgentUpdate
268
- }, "agent-".concat(cloneAgent.id));
269
+ }, "agent-".concat(maiaAgent.id));
269
270
  })]
270
271
  });
271
272
  }()
@@ -280,7 +281,7 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
280
281
  agentsCount: agentsForSelector.length,
281
282
  ref: agentsRef,
282
283
  children: [agentsForSelector === null || agentsForSelector === void 0 ? void 0 : agentsForSelector.map(function (agent, index) {
283
- if (agent !== null && agent !== void 0 && agent.is_deleted || agent !== null && agent !== void 0 && agent.has_not_permissions || agent !== null && agent !== void 0 && agent.has_not_access || (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' || (agent === null || agent === void 0 ? void 0 : agent.type) === 'custom' && !window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) return null;
284
+ if (agent !== null && agent !== void 0 && agent.is_deleted || agent !== null && agent !== void 0 && agent.has_not_permissions || agent !== null && agent !== void 0 && agent.has_not_access || (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' || isMaiaAgent(agent) || (agent === null || agent === void 0 ? void 0 : agent.type) === 'custom' && !window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) return null;
284
285
  return /*#__PURE__*/_jsx(ChatAIAgentOption, {
285
286
  agent: agent,
286
287
  index: index,
@@ -382,4 +383,4 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
382
383
  })]
383
384
  });
384
385
  };
385
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJDcm9zcyIsIkNoZXZyb25Eb3duIiwiQ2hldnJvbkxlZnQiLCJ1c2VUcmFuc2xhdGlvbiIsIlNFQ1RJT05TIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVJlc2l6ZUxpc3RlbmVyIiwiSWNvbkJ1dHRvbiIsIk1BSUFJY29uIiwiTWFpYUNoYXRMYXlvdXRNZW51SWNvbiIsIkNoYXRBSUFnZW50T3B0aW9uIiwiU0NDQUlNSE1vZGFsIiwiU0NDQUlNSFNlbGVjdGVkQWdlbnQiLCJTQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHQiLCJTQ0NBSU1IV3JhcHBlciIsIlNDQ0FJTUhXcmFwcGVyQnV0dG9uIiwiU0NDQUlNSFdyYXBwZXJJY29uIiwiU0NDQUlNSFdyYXBwZXJNb2RhbCIsIlNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50IiwiU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZSIsIlNDQ0FJTUhEaXZpZGVyIiwiU0NDQUlNSEFnZW50c0xpc3QiLCJTQ0NBSU1ITG9hZGVyV3JhcHBlciIsIlNDQ0FJV3JhcHBlciIsIlNDQ0FJTUhMYXlvdXRNZW51QW5jaG9yIiwiU0NDQUlNSExheW91dE1lbnVQYW5lbCIsIlNDQ0FJTUhMYXlvdXRNZW51Um93IiwiU0NDQUlNSEJhY2tCdXR0b24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVVzZXIiLCJpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIiwiQ2hpcExsbSIsIkxvYWRlciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIl9yZWYiLCJsYXlvdXRNb2RlIiwib25MYXlvdXRNb2RlQ2hhbmdlIiwiZXhwYW5kZWQiLCJfcmVmJGRyYWdnYWJsZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsIl9yZWYkaGFuZGxlQ2xvc2UiLCJoYW5kbGVDbG9zZSIsIl9yZWYkYWdlbnRzIiwiYWdlbnRzIiwiX3JlZiRoYXNFcnJvciIsImhhc0Vycm9yIiwiX3JlZiRsb2FkaW5nIiwibG9hZGluZyIsIl9yZWYkbG9hZGluZ01vcmUiLCJsb2FkaW5nTW9yZSIsIl9yZWYkaGFzTW9yZSIsImhhc01vcmUiLCJoYW5kbGVSZXNldENoYXQiLCJvbkFnZW50VXBkYXRlIiwibG9hZE1vcmVBZ2VudHMiLCJzb3J0QWdlbnRzTGlzdCIsIl9yZWYkaGlkZUFnZW50U2VsZWN0byIsImhpZGVBZ2VudFNlbGVjdG9yIiwib25BZ2VudFNlbGVjdGVkIiwiX3JlZiRzaG93QmFja0J1dHRvbiIsInNob3dCYWNrQnV0dG9uIiwiX3JlZiRvbkJhY2siLCJvbkJhY2siLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsInQiLCJ1c2VyIiwiYW1wbGl0dWRFdmVudCIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsImFnZW50Iiwic2VsZWN0QWdlbnQiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0VGFzayIsInNlY3Rpb24iLCJ0b29sdGlwWkluZGV4IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJ0ZXh0UmVmQWdlbnQiLCJkcm9wZG93blJlZiIsImxheW91dE1lbnVSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxheW91dE1lbnVPcGVuIiwic2V0TGF5b3V0TWVudU9wZW4iLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJuYW1lIiwic2hvd1Rvb2x0aXBBZ2VudCIsInNob3dUb29sdGlwIiwiYWdlbnRzUmVmIiwiYWdlbnRzRm9yU2VsZWN0b3IiLCJmaWx0ZXIiLCJhZ2VudEl0ZW0iLCJlbnRpdHkiLCJ1bmRlZmluZWQiLCJoYW5kbGVTY3JvbGwiLCJjdXJyZW50IiwiX2FnZW50c1JlZiRjdXJyZW50Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwidGltZW91dElkIiwic2V0VGltZW91dCIsInNjcm9sbEVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiY2xlYXJUaW1lb3V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImxvY2FsQWdlbnRzIiwiX3JlZjIiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwiaXNfZnJvbV9jb252ZXJzYXRpb24iLCJmcm9tTGlzdCIsImZpbmQiLCJpZCIsImhhbmRsZVNlbGVjdEFnZW50IiwiYWlDaGF0QWdlbnRTZWxlY3QiLCJhZ2VudF90eXBlIiwidHlwZSIsIm5lZWRzRW50aXR5IiwiaGFuZGxlRXhwYW5kTW9kYWwiLCJhaUNoYXRPcGVuQWdlbnRTZWxlY3QiLCJwcmV2IiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJ0YXJnZXQiLCJjb250YWlucyIsImRvY3VtZW50IiwiaGFuZGxlUGlja0xheW91dCIsIm1vZGUiLCJwcm9qZWN0UmVzdW1lRXhwYW5kIiwiYWlDaGF0U2VsZWN0Vmlld09wdGlvbnMiLCJvcHRpb24iLCJjbG9uZUFnZW50c1JvbGVCbG9ja2VkIiwicmVuZGVyTW9kYWwiLCJyZWYiLCJvbkNsaWNrIiwibGVuZ3RoIiwiY2hpbGRyZW4iLCJfb2JqZWN0U3ByZWFkIiwidGl0bGUiLCJzdHlsZSIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwiZ2FwIiwiZW1vamkiLCJwbGFjZW1lbnQiLCJ6SW5kZXgiLCJpc0FnZW50RGVsZXRlZCIsIndpZHRoIiwiaGVpZ2h0IiwiY29sb3IiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJjbG9uZUFnZW50cyIsImFnIiwiaXNDbG9uZSIsIm1hcCIsImNsb25lQWdlbnQiLCJpbmRleCIsImlzU2VsZWN0ZWQiLCJpc01haWEiLCJvbkZhdm9yaXRlVG9nZ2xlIiwiY29uY2F0Iiwic29tZSIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJjb21wYW55IiwiYWdlbnRzQ291bnQiLCJzaXplIiwic2VsZWN0ZWRNb2RlbExsbSIsIm1vZGVsX2Rpc3BsYXlfbmFtZSIsInNlbGVjdGVkQWdlbnRUeXBlIiwic2hvdWxkUmVuZGVyU2VsZWN0b3IiLCIkaGFzRXJyb3IiLCIkbG9hZGluZyIsIiRoYXNBZ2VudHMiLCJvblBvaW50ZXJEb3duIiwib25Qb2ludGVyTW92ZSIsIm9uUG9pbnRlclVwIiwib25Qb2ludGVyQ2FuY2VsIiwib25Mb3N0UG9pbnRlckNhcHR1cmUiLCJjdXJzb3IiLCJ0b3VjaEFjdGlvbiIsImFpQ2hhdEJhY2siLCJtb2RlbCIsImJ1dHRvbklkIiwiaGFuZGxlQ2xpY2siLCJhaUNoYXRPcGVuVmlld09wdGlvbnMiLCJ0b29sdGlwIiwiZGlzYWJsZVRvb2x0aXAiLCJyb2xlIiwiJGFjdGl2ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgUG9pbnRlckV2ZW50IGFzIFJlYWN0UG9pbnRlckV2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgQ2hldnJvbkRvd24gfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uRG93bidcbmltcG9ydCB7IENoZXZyb25MZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkxlZnQnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL0ljb25CdXR0b24nXG5pbXBvcnQgeyBNQUlBSWNvbiwgTWFpYUNoYXRMYXlvdXRNZW51SWNvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgQ2hhdEFJQWdlbnRPcHRpb24gfSBmcm9tICcuLi9DaGF0QWlBZ2VudE9wdGlvbnMvQ2hhdEFpQWdlbnRPcHRpb25zJ1xuaW1wb3J0IHtcbiAgU0NDQUlNSE1vZGFsLFxuICBTQ0NBSU1IU2VsZWN0ZWRBZ2VudCxcbiAgU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0LFxuICBTQ0NBSU1IV3JhcHBlcixcbiAgU0NDQUlNSFdyYXBwZXJCdXR0b24sXG4gIFNDQ0FJTUhXcmFwcGVySWNvbixcbiAgU0NDQUlNSFdyYXBwZXJNb2RhbCxcbiAgU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQsXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGUsXG4gIFNDQ0FJTUhEaXZpZGVyLFxuICBTQ0NBSU1IQWdlbnRzTGlzdCxcbiAgU0NDQUlNSExvYWRlcldyYXBwZXIsXG4gIFNDQ0FJV3JhcHBlcixcbiAgU0NDQUlNSExheW91dE1lbnVBbmNob3IsXG4gIFNDQ0FJTUhMYXlvdXRNZW51UGFuZWwsXG4gIFNDQ0FJTUhMYXlvdXRNZW51Um93LFxuICBTQ0NBSU1IQmFja0J1dHRvbixcbn0gZnJvbSAnLi9DaGF0QWlNb2RhbEhlYWRlci5zdHlsZXMnXG5pbXBvcnQgdHlwZSB7IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlIH0gZnJvbSAnLi4vLi4vbGF5b3V0J1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29uc3RhbnRzL21haWFUYXNrUGFuZWxBY2Nlc3MnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ2hpcExsbSB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL0NoaXBMbG0nXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcblxuZXhwb3J0IGNvbnN0IENoYXRBSU1vZGFsSGVhZGVyID0gKHtcbiAgbGF5b3V0TW9kZSxcbiAgb25MYXlvdXRNb2RlQ2hhbmdlLFxuICBleHBhbmRlZCxcbiAgZHJhZ2dhYmxlID0gZmFsc2UsXG4gIG9uRHJhZ1N0YXJ0LFxuICBvbkRyYWdNb3ZlLFxuICBvbkRyYWdFbmQsXG4gIGhhbmRsZUNsb3NlID0gKCkgPT4gbnVsbCxcbiAgYWdlbnRzID0gW10sXG4gIGhhc0Vycm9yID0gZmFsc2UsXG4gIGxvYWRpbmcgPSBmYWxzZSxcbiAgbG9hZGluZ01vcmUgPSBmYWxzZSxcbiAgaGFzTW9yZSA9IGZhbHNlLFxuICBoYW5kbGVSZXNldENoYXQsXG4gIG9uQWdlbnRVcGRhdGUsXG4gIGxvYWRNb3JlQWdlbnRzLFxuICBzb3J0QWdlbnRzTGlzdCxcbiAgaGlkZUFnZW50U2VsZWN0b3IgPSBmYWxzZSxcbiAgb25BZ2VudFNlbGVjdGVkLFxuICBzaG93QmFja0J1dHRvbiA9IGZhbHNlLFxuICBvbkJhY2sgPSAoKSA9PiBudWxsLFxufToge1xuICBsYXlvdXRNb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZVxuICBvbkxheW91dE1vZGVDaGFuZ2U6IChtb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSkgPT4gdm9pZFxuICBleHBhbmRlZDogYm9vbGVhblxuICBkcmFnZ2FibGU/OiBib29sZWFuXG4gIG9uRHJhZ1N0YXJ0PzogKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWRcbiAgb25EcmFnTW92ZT86IChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIG9uRHJhZ0VuZD86IChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIGhhbmRsZUNsb3NlPzogKCkgPT4gdm9pZFxuICBhZ2VudHM6IEFnZW50W11cbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgbG9hZGluZzogYm9vbGVhblxuICBsb2FkaW5nTW9yZT86IGJvb2xlYW5cbiAgaGFzTW9yZT86IGJvb2xlYW5cbiAgaGFuZGxlUmVzZXRDaGF0OiAoKSA9PiB2b2lkXG4gIG9uQWdlbnRVcGRhdGU/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBsb2FkTW9yZUFnZW50cz86ICgpID0+IHZvaWRcbiAgc29ydEFnZW50c0xpc3Q/OiAoKSA9PiB2b2lkXG4gIGhpZGVBZ2VudFNlbGVjdG9yPzogYm9vbGVhblxuICAvKipcbiAgICogU2UgaW52b2NhIGRlc3B1w6lzIGRlbCByZXNldCBjdWFuZG8gZWwgYWdlbnRlIHNlbGVjY2lvbmFkbyBOTyByZXF1aWVyZSBzZWxlY2Npw7NuXG4gICAqIGRlIGVudGl0eSAoY3VzdG9tIG8gY2xvbmUrZ2xvYmFsKS4gUGVybWl0ZSByZXNvbHZlciBgR0VUIC92Mi9zZXNzaW9ucy9hZ2VudC97aWR9YFxuICAgKiB5IG5hdmVnYXIgYSB1bmEgY29udmVyc2FjacOzbiBleGlzdGVudGUgc2kgbGEgaGF5LlxuICAgKi9cbiAgb25BZ2VudFNlbGVjdGVkPzogKGFnZW50OiBBZ2VudCkgPT4gdm9pZCB8IFByb21pc2U8dW5rbm93bj5cbiAgc2hvd0JhY2tCdXR0b24/OiBib29sZWFuXG4gIG9uQmFjaz86ICgpID0+IHZvaWRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWdlbnQ6IHNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldFRhc2ssIHNlY3Rpb24gfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICAvLyBFbiBzZWN0aW9uICd0YXNrJyBlbCBtb2RhbCBkZSBNYWlhIHNlIGVsZXZhIHBvciBlbmNpbWEgZGVsIHRhc2sgcGFuZWwgKHotaW5kZXggOTgwMDAwMSkuXG4gIC8vIExvcyB0b29sdGlwcyBzZSBtb250YW4gZW4gcG9ydGFsIGNvbiB6LWluZGV4IDE1MDAgcG9yIGRlZmVjdG8sIGFzw60gcXVlIHF1ZWRhcsOtYW4gZGV0csOhcy5cbiAgLy8gU3ViaW1vcyBzdSB6LWluZGV4IHPDs2xvIGVuIGVzdGUgY2FzbyBwYXJhIHF1ZSBzZSB2ZWFuIHBvciBlbmNpbWEgZGVsIG1vZGFsLlxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0ZXh0UmVmQWdlbnQgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50PihudWxsKVxuICBjb25zdCBkcm9wZG93blJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgbGF5b3V0TWVudVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2xheW91dE1lbnVPcGVuLCBzZXRMYXlvdXRNZW51T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgeyBzaG93VG9vbHRpcDogc2hvd1Rvb2x0aXBBZ2VudCB9ID0gdXNlUmVzaXplTGlzdGVuZXIodGV4dFJlZkFnZW50LCBbc2VsZWN0ZWRBZ2VudD8ubmFtZV0pXG4gIGNvbnN0IGFnZW50c1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICBjb25zdCBhZ2VudHNGb3JTZWxlY3RvciA9IHVzZU1lbW8oKCkgPT4gYWdlbnRzLmZpbHRlcihhZ2VudEl0ZW0gPT4gYWdlbnRJdGVtLmVudGl0eSAhPT0gJ2dsb2JhbCcpLCBbYWdlbnRzXSlcblxuICAvLyBNYW5lamFyIHNjcm9sbCBpbmZpbml0byBwYXJhIGNhcmdhciBtw6FzIGFnZW50c1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFNvbG8gY3VhbmRvIGVsIGRyb3Bkb3duIGVzdMOpIGFiaWVydG9cbiAgICBpZiAoIWlzRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAoIWFnZW50c1JlZi5jdXJyZW50IHx8ICFsb2FkTW9yZUFnZW50cyB8fCAhaGFzTW9yZSB8fCBsb2FkaW5nTW9yZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBhZ2VudHNSZWYuY3VycmVudFxuICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG5cbiAgICAgIC8vIENhcmdhciBtw6FzICg1MHB4IGFudGVzKVxuICAgICAgaWYgKGRpc3RhbmNlRnJvbUJvdHRvbSA8IDUwKSB7XG4gICAgICAgIGxvYWRNb3JlQWdlbnRzKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZWxheSBwYXJhIGFzZWd1cmFyIHF1ZSBlbCBET00gZXN0w6kgcmVuZGVyaXphZG9cbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSBhZ2VudHNSZWYuY3VycmVudFxuICAgICAgaWYgKHNjcm9sbEVsZW1lbnQpIHtcbiAgICAgICAgc2Nyb2xsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICB9XG4gICAgfSwgMTAwKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gICAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICAgIGlmIChzY3JvbGxFbGVtZW50KSB7XG4gICAgICAgIHNjcm9sbEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzRXhwYW5kZWQsIGxvYWRNb3JlQWdlbnRzLCBoYXNNb3JlLCBsb2FkaW5nTW9yZV0pXG5cbiAgY29uc3QgbG9jYWxBZ2VudHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICBzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkIHx8XG4gICAgICBzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8XG4gICAgICBzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcyB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaXNfZnJvbV9jb252ZXJzYXRpb25cbiAgICApIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZEFnZW50XG4gICAgfVxuICAgIGNvbnN0IGZyb21MaXN0ID0gYWdlbnRzLmZpbmQoXG4gICAgICBhZ2VudCA9PlxuICAgICAgICAhYWdlbnQuaXNfZGVsZXRlZCAmJiAhYWdlbnQuaGFzX25vdF9wZXJtaXNzaW9ucyAmJiAhYWdlbnQuaGFzX25vdF9hY2Nlc3MgJiYgYWdlbnQuaWQgPT09IHNlbGVjdGVkQWdlbnQ/LmlkXG4gICAgKVxuICAgIC8vIEFnZW50ZSBoaWRyYXRhZG8gcG9yIEdFVCAocC4gZWouIG51ZXZvIGNoYXQgdHJhcyBjcmVhdGVfYWdlbnQpIHB1ZWRlIG5vIGVzdGFyIGHDum4gZW4gbGEgbGlzdGEgcGFnaW5hZGFcbiAgICByZXR1cm4gZnJvbUxpc3QgPz8gc2VsZWN0ZWRBZ2VudCA/PyBudWxsXG4gIH0sIFthZ2VudHMsIHNlbGVjdGVkQWdlbnRdKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50OiBBZ2VudCkgPT4ge1xuICAgICAgc2VsZWN0QWdlbnQoYWdlbnQpXG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRBZ2VudFNlbGVjdCwge1xuICAgICAgICBhZ2VudF90eXBlOiBhZ2VudD8udHlwZSxcbiAgICAgIH0pXG4gICAgICBzZXRJc0V4cGFuZGVkKGZhbHNlKVxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBoYW5kbGVSZXNldENoYXQoKVxuICAgICAgICAvLyBTaSBlbCBhZ2VudGUgbm8gZGVwZW5kZSBkZSB1bmEgZW50aXR5IChjdXN0b20gbyBjbG9uZStnbG9iYWwpIHlhIHBvZGVtb3NcbiAgICAgICAgLy8gcmVzb2x2ZXIgc2kgZXhpc3RlIHVuYSBzZXNpw7NuIHByZXZpYSB5LCBlbiBlc2UgY2FzbywgbmF2ZWdhciBhIGVsbGEuXG4gICAgICAgIC8vIFBhcmEgY2xvbmUrcHJvamVjdHxjbGllbnQsIGxhIHJlc29sdWNpw7NuIG9jdXJyZSBlbiBsb3Mgc2VsZWN0b3JzIGRlIGVudGl0eS5cbiAgICAgICAgY29uc3QgbmVlZHNFbnRpdHkgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnKVxuICAgICAgICBpZiAoIW5lZWRzRW50aXR5KSB7XG4gICAgICAgICAgb25BZ2VudFNlbGVjdGVkPy4oYWdlbnQpXG4gICAgICAgIH1cbiAgICAgIH0sIDEwMClcbiAgICB9LFxuICAgIFtzZWxlY3RBZ2VudCwgYW1wbGl0dWRFdmVudCwgaGFuZGxlUmVzZXRDaGF0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldFRhc2ssIG9uQWdlbnRTZWxlY3RlZF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUV4cGFuZE1vZGFsID0gKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCkge1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0T3BlbkFnZW50U2VsZWN0KVxuICAgICAgLy8gQ3VhbmRvIHNlIGFicmUgZWwgc2VsZWN0b3IsIG9yZGVuYXIgbG9zIGFnZW50ZXNcbiAgICAgIGlmIChzb3J0QWdlbnRzTGlzdCkge1xuICAgICAgICBzb3J0QWdlbnRzTGlzdCgpXG4gICAgICB9XG4gICAgfVxuICAgIHNldElzRXhwYW5kZWQocHJldiA9PiAhcHJldilcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0V4cGFuZGVkICYmICFsYXlvdXRNZW51T3Blbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIE5vZGVcbiAgICAgIGlmIChpc0V4cGFuZGVkICYmIGRyb3Bkb3duUmVmLmN1cnJlbnQgJiYgIWRyb3Bkb3duUmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICBzZXRJc0V4cGFuZGVkKGZhbHNlKVxuICAgICAgfVxuICAgICAgaWYgKGxheW91dE1lbnVPcGVuICYmIGxheW91dE1lbnVSZWYuY3VycmVudCAmJiAhbGF5b3V0TWVudVJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgc2V0TGF5b3V0TWVudU9wZW4oZmFsc2UpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuICB9LCBbaXNFeHBhbmRlZCwgbGF5b3V0TWVudU9wZW5dKVxuXG4gIGNvbnN0IGhhbmRsZVBpY2tMYXlvdXQgPSB1c2VDYWxsYmFjayhcbiAgICAobW9kZTogTWFpYUNoYXRNb2RhbExheW91dE1vZGUpID0+IHtcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLnByb2plY3RSZXN1bWVFeHBhbmQsIHtcbiAgICAgICAgZXhwYW5kZWQ6IG1vZGUgPT09ICdmdWxsc2NyZWVuJyxcbiAgICAgIH0pXG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRTZWxlY3RWaWV3T3B0aW9ucywgeyBvcHRpb246IG1vZGUgfSlcbiAgICAgIG9uTGF5b3V0TW9kZUNoYW5nZShtb2RlKVxuICAgICAgc2V0TGF5b3V0TWVudU9wZW4oZmFsc2UpXG4gICAgfSxcbiAgICBbYW1wbGl0dWRFdmVudCwgb25MYXlvdXRNb2RlQ2hhbmdlXVxuICApXG5cbiAgY29uc3QgY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCA9IGlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQodXNlciwgc2VjdGlvbilcblxuICBjb25zdCByZW5kZXJNb2RhbCA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNDQ0FJTUhXcmFwcGVyXG4gICAgICAgIHJlZj17ZHJvcGRvd25SZWZ9XG4gICAgICAgIGRhdGEtbm8tZHJhZz1cInRydWVcIlxuICAgICAgICBvbkNsaWNrPXthZ2VudHMubGVuZ3RoID8gaGFuZGxlRXhwYW5kTW9kYWwgOiB1bmRlZmluZWR9XG4gICAgICAgIGlkPVwiY2hhdC1haS1tb2RhbC1oZWFkZXItd3JhcHBlclwiXG4gICAgICA+XG4gICAgICAgIDxTQ0NBSU1IU2VsZWN0ZWRBZ2VudD5cbiAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICBzaG93VG9vbHRpcEFnZW50ID8gKFxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzRweCcgfX0+XG4gICAgICAgICAgICAgICAgICB7bG9jYWxBZ2VudHM/LnR5cGUgPT09ICdjdXN0b20nID8gbG9jYWxBZ2VudHM/LmVtb2ppIDogPE1BSUFJY29uIC8+fSB7bG9jYWxBZ2VudHM/Lm5hbWV9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYWNlbWVudD17aXNFeHBhbmRlZCA/ICdsZWZ0JyA6ICd0b3AnfVxuICAgICAgICAgICAgey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHRcbiAgICAgICAgICAgICAgcmVmPXt0ZXh0UmVmQWdlbnR9XG4gICAgICAgICAgICAgIGlzQWdlbnREZWxldGVkPXtcbiAgICAgICAgICAgICAgICAhIXNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgfHwgISFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8ICEhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3NcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc0cHgnIH19PlxuICAgICAgICAgICAgICAgIHtsb2NhbEFnZW50cz8udHlwZSA9PT0gJ2N1c3RvbScgPyBsb2NhbEFnZW50cz8uZW1vamkgOiA8TUFJQUljb24gLz59IHtsb2NhbEFnZW50cz8ubmFtZX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9TQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1NDQ0FJTUhTZWxlY3RlZEFnZW50PlxuICAgICAgICA8U0NDQUlNSFdyYXBwZXJJY29uPlxuICAgICAgICAgIDxDaGV2cm9uRG93biB3aWR0aD17MTR9IGhlaWdodD17MTR9IGNvbG9yPVwiIzIwMjAxRlwiIC8+XG4gICAgICAgIDwvU0NDQUlNSFdyYXBwZXJJY29uPlxuICAgICAgICB7aXNFeHBhbmRlZCAmJiAoXG4gICAgICAgICAgPFNDQ0FJTUhXcmFwcGVyTW9kYWw+XG4gICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgICAgIHt3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICFjbG9uZUFnZW50c1JvbGVCbG9ja2VkICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lQWdlbnRzID0gYWdlbnRzRm9yU2VsZWN0b3IuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgPT09ICdjbG9uZScpXG4gICAgICAgICAgICAgICAgICAgIGlmICghY2xvbmVBZ2VudHMubGVuZ3RoKSByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TUFJQUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGUgaXNDbG9uZT5NQUlBIGJ5IENPUjwvU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NDQUlXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhEaXZpZGVyIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjbG9uZUFnZW50cy5tYXAoKGNsb25lQWdlbnQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGF0QUlBZ2VudE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YGFnZW50LSR7Y2xvbmVBZ2VudC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50PXtjbG9uZUFnZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RBZ2VudD17aGFuZGxlU2VsZWN0QWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IGNsb25lQWdlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNYWlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GYXZvcml0ZVRvZ2dsZT17b25BZ2VudFVwZGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7YWdlbnRzRm9yU2VsZWN0b3Iuc29tZShhZ2VudCA9PiBhZ2VudC50eXBlID09PSAnY3VzdG9tJykgJiZcbiAgICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICB7dCgnYWdlbnRzJyl9IGJ5IHt1c2VyLmNvbXBhbnl9XG4gICAgICAgICAgICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8U0NDQUlNSEFnZW50c0xpc3QgaGFzTW9yZT17aGFzTW9yZX0gYWdlbnRzQ291bnQ9e2FnZW50c0ZvclNlbGVjdG9yLmxlbmd0aH0gcmVmPXthZ2VudHNSZWZ9PlxuICAgICAgICAgICAgICAgIHthZ2VudHNGb3JTZWxlY3Rvcj8ubWFwKChhZ2VudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgYWdlbnQ/LmlzX2RlbGV0ZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHxcbiAgICAgICAgICAgICAgICAgICAgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAgIGFnZW50Py50eXBlID09PSAnY2xvbmUnIHx8XG4gICAgICAgICAgICAgICAgICAgIChhZ2VudD8udHlwZSA9PT0gJ2N1c3RvbScgJiYgIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPENoYXRBSUFnZW50T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtgYWdlbnQtJHthZ2VudC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgIGFnZW50PXthZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0QWdlbnQ9e2hhbmRsZVNlbGVjdEFnZW50fVxuICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e3NlbGVjdGVkQWdlbnQ/LmlkID09PSBhZ2VudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkZhdm9yaXRlVG9nZ2xlPXtvbkFnZW50VXBkYXRlfVxuICAgICAgICAgICAgICAgICAgICAgIHNldElzRXhwYW5kZWQ9e3NldElzRXhwYW5kZWR9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAge2xvYWRpbmdNb3JlICYmIChcbiAgICAgICAgICAgICAgICAgIDxTQ0NBSU1ITG9hZGVyV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgPExvYWRlciBzaXplPVwic21hbGxcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ0NBSU1ITG9hZGVyV3JhcHBlcj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1NDQ0FJTUhBZ2VudHNMaXN0PlxuICAgICAgICAgICAgPC9TQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudD5cbiAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWw+XG4gICAgICAgICl9XG4gICAgICA8L1NDQ0FJTUhXcmFwcGVyPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGVkTW9kZWxMbG0gPSBzZWxlY3RlZEFnZW50Py5tb2RlbF9kaXNwbGF5X25hbWVcbiAgY29uc3Qgc2VsZWN0ZWRBZ2VudFR5cGUgPSBzZWxlY3RlZEFnZW50Py50eXBlID09PSAnY3VzdG9tJ1xuICBjb25zdCBzaG91bGRSZW5kZXJTZWxlY3RvciA9XG4gICAgIWhhc0Vycm9yICYmXG4gICAgIWxvYWRpbmcgJiZcbiAgICAhaGlkZUFnZW50U2VsZWN0b3IgJiZcbiAgICAhIXNlbGVjdGVkQWdlbnQgJiZcbiAgICAoISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyB8fCAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlNSE1vZGFsXG4gICAgICAkaGFzRXJyb3I9e2hhc0Vycm9yfVxuICAgICAgJGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAkaGFzQWdlbnRzPXshIWFnZW50cy5sZW5ndGh9XG4gICAgICBvblBvaW50ZXJEb3duPXtkcmFnZ2FibGUgPyBvbkRyYWdTdGFydCA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlck1vdmU9e2RyYWdnYWJsZSA/IG9uRHJhZ01vdmUgOiB1bmRlZmluZWR9XG4gICAgICBvblBvaW50ZXJVcD17ZHJhZ2dhYmxlID8gb25EcmFnRW5kIDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyQ2FuY2VsPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBvbkxvc3RQb2ludGVyQ2FwdHVyZT17ZHJhZ2dhYmxlID8gb25EcmFnRW5kIDogdW5kZWZpbmVkfVxuICAgICAgc3R5bGU9e3sgY3Vyc29yOiBkcmFnZ2FibGUgPyAnZ3JhYicgOiB1bmRlZmluZWQsIHRvdWNoQWN0aW9uOiBkcmFnZ2FibGUgPyAnbWFuaXB1bGF0aW9uJyA6IHVuZGVmaW5lZCB9fVxuICAgID5cbiAgICAgIHtzaG91bGRSZW5kZXJTZWxlY3RvciA/IHJlbmRlck1vZGFsKCkgOiA8ZGl2IC8+fVxuICAgICAgPFNDQ0FJTUhXcmFwcGVyQnV0dG9uIGRhdGEtbm8tZHJhZz1cInRydWVcIj5cbiAgICAgICAge3Nob3dCYWNrQnV0dG9uICYmIChcbiAgICAgICAgICA8U0NDQUlNSEJhY2tCdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRCYWNrKVxuICAgICAgICAgICAgICBvbkJhY2soKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2hldnJvbkxlZnQgd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSBjb2xvcj1cIiMzNDM0MzNcIiAvPlxuICAgICAgICAgICAge3QoJ2JhY2snKX1cbiAgICAgICAgICA8L1NDQ0FJTUhCYWNrQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgICB7c2VsZWN0ZWRBZ2VudFR5cGUgJiYgc2VsZWN0ZWRNb2RlbExsbSAmJiA8Q2hpcExsbSBtb2RlbD17c2VsZWN0ZWRNb2RlbExsbX0gZXhwYW5kZWQ9e2V4cGFuZGVkfSAvPn1cbiAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51QW5jaG9yIHJlZj17bGF5b3V0TWVudVJlZn0gZGF0YS1uby1kcmFnPVwidHJ1ZVwiPlxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICBidXR0b25JZD1cImJ0bi1tYWlhLWxheW91dC1tZW51XCJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghbGF5b3V0TWVudU9wZW4pIHtcbiAgICAgICAgICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRPcGVuVmlld09wdGlvbnMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2V0TGF5b3V0TWVudU9wZW4ocHJldiA9PiAhcHJldilcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB0b29sdGlwPXt0KCdsYXlvdXRNZW51VG9vbHRpcCcpfVxuICAgICAgICAgICAgZGlzYWJsZVRvb2x0aXA9e2xheW91dE1lbnVPcGVufVxuICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TWFpYUNoYXRMYXlvdXRNZW51SWNvbiAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICB7bGF5b3V0TWVudU9wZW4gPyAoXG4gICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVQYW5lbCByb2xlPVwibWVudVwiPlxuICAgICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVSb3dcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAkYWN0aXZlPXtsYXlvdXRNb2RlID09PSAnc2lkZWJhcid9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnc2lkZWJhcicpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoJ2xheW91dFNpZGViYXInKX1cbiAgICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVJvdz5cbiAgICAgICAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51Um93XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgJGFjdGl2ZT17bGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVBpY2tMYXlvdXQoJ2Z1bGxzY3JlZW4nKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KCdsYXlvdXRGdWxsc2NyZWVuJyl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVSb3c+XG4gICAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVJvd1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICRhY3RpdmU9e2xheW91dE1vZGUgPT09ICdmbG9hdGluZyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnZmxvYXRpbmcnKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KCdsYXlvdXRGbG9hdGluZycpfVxuICAgICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51Um93PlxuICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVBhbmVsPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51QW5jaG9yPlxuICAgICAgICA8SWNvbkJ1dHRvbiBoYW5kbGVDbGljaz17aGFuZGxlQ2xvc2V9IHRvb2x0aXA9e3QoJ2dsb2JhbHMuY2xvc2UnKX0gdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgPENyb3NzIC8+XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDwvU0NDQUlNSFdyYXBwZXJC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
386
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJDcm9zcyIsIkNoZXZyb25Eb3duIiwiQ2hldnJvbkxlZnQiLCJ1c2VUcmFuc2xhdGlvbiIsIlNFQ1RJT05TIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVJlc2l6ZUxpc3RlbmVyIiwiSWNvbkJ1dHRvbiIsIk1BSUFJY29uIiwiTWFpYUNoYXRMYXlvdXRNZW51SWNvbiIsIkNoYXRBSUFnZW50T3B0aW9uIiwiU0NDQUlNSE1vZGFsIiwiU0NDQUlNSFNlbGVjdGVkQWdlbnQiLCJTQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHQiLCJTQ0NBSU1IV3JhcHBlciIsIlNDQ0FJTUhXcmFwcGVyQnV0dG9uIiwiU0NDQUlNSFdyYXBwZXJJY29uIiwiU0NDQUlNSFdyYXBwZXJNb2RhbCIsIlNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50IiwiU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZSIsIlNDQ0FJTUhEaXZpZGVyIiwiU0NDQUlNSEFnZW50c0xpc3QiLCJTQ0NBSU1ITG9hZGVyV3JhcHBlciIsIlNDQ0FJV3JhcHBlciIsIlNDQ0FJTUhMYXlvdXRNZW51QW5jaG9yIiwiU0NDQUlNSExheW91dE1lbnVQYW5lbCIsIlNDQ0FJTUhMYXlvdXRNZW51Um93IiwiU0NDQUlNSEJhY2tCdXR0b24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVVzZXIiLCJpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIiwiQ2hpcExsbSIsIkxvYWRlciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIl9yZWYiLCJsYXlvdXRNb2RlIiwib25MYXlvdXRNb2RlQ2hhbmdlIiwiZXhwYW5kZWQiLCJfcmVmJGRyYWdnYWJsZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsIl9yZWYkaGFuZGxlQ2xvc2UiLCJoYW5kbGVDbG9zZSIsIl9yZWYkYWdlbnRzIiwiYWdlbnRzIiwiX3JlZiRoYXNFcnJvciIsImhhc0Vycm9yIiwiX3JlZiRsb2FkaW5nIiwibG9hZGluZyIsIl9yZWYkbG9hZGluZ01vcmUiLCJsb2FkaW5nTW9yZSIsIl9yZWYkaGFzTW9yZSIsImhhc01vcmUiLCJoYW5kbGVSZXNldENoYXQiLCJvbkFnZW50VXBkYXRlIiwibG9hZE1vcmVBZ2VudHMiLCJzb3J0QWdlbnRzTGlzdCIsIl9yZWYkaGlkZUFnZW50U2VsZWN0byIsImhpZGVBZ2VudFNlbGVjdG9yIiwib25BZ2VudFNlbGVjdGVkIiwiX3JlZiRzaG93QmFja0J1dHRvbiIsInNob3dCYWNrQnV0dG9uIiwiX3JlZiRvbkJhY2siLCJvbkJhY2siLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsInQiLCJ1c2VyIiwiYW1wbGl0dWRFdmVudCIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsImFnZW50Iiwic2VsZWN0QWdlbnQiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0VGFzayIsInNlY3Rpb24iLCJ0b29sdGlwWkluZGV4IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJ0ZXh0UmVmQWdlbnQiLCJkcm9wZG93blJlZiIsImxheW91dE1lbnVSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxheW91dE1lbnVPcGVuIiwic2V0TGF5b3V0TWVudU9wZW4iLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJuYW1lIiwic2hvd1Rvb2x0aXBBZ2VudCIsInNob3dUb29sdGlwIiwiYWdlbnRzUmVmIiwiaXNNYWlhQWdlbnQiLCJhZ2VudEl0ZW0iLCJ0eXBlIiwiYWdlbnRzRm9yU2VsZWN0b3IiLCJmaWx0ZXIiLCJlbnRpdHkiLCJ1bmRlZmluZWQiLCJoYW5kbGVTY3JvbGwiLCJjdXJyZW50IiwiX2FnZW50c1JlZiRjdXJyZW50Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwidGltZW91dElkIiwic2V0VGltZW91dCIsInNjcm9sbEVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiY2xlYXJUaW1lb3V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImxvY2FsQWdlbnRzIiwiX3JlZjIiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwiaXNfZnJvbV9jb252ZXJzYXRpb24iLCJmcm9tTGlzdCIsImZpbmQiLCJpZCIsImhhbmRsZVNlbGVjdEFnZW50IiwiYWlDaGF0QWdlbnRTZWxlY3QiLCJhZ2VudF90eXBlIiwibmVlZHNFbnRpdHkiLCJoYW5kbGVFeHBhbmRNb2RhbCIsImFpQ2hhdE9wZW5BZ2VudFNlbGVjdCIsInByZXYiLCJoYW5kbGVDbGlja091dHNpZGUiLCJldmVudCIsInRhcmdldCIsImNvbnRhaW5zIiwiZG9jdW1lbnQiLCJoYW5kbGVQaWNrTGF5b3V0IiwibW9kZSIsInByb2plY3RSZXN1bWVFeHBhbmQiLCJhaUNoYXRTZWxlY3RWaWV3T3B0aW9ucyIsIm9wdGlvbiIsImNsb25lQWdlbnRzUm9sZUJsb2NrZWQiLCJyZW5kZXJNb2RhbCIsInJlZiIsIm9uQ2xpY2siLCJsZW5ndGgiLCJjaGlsZHJlbiIsIl9vYmplY3RTcHJlYWQiLCJ0aXRsZSIsInN0eWxlIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJnYXAiLCJlbW9qaSIsInBsYWNlbWVudCIsInpJbmRleCIsImlzQWdlbnREZWxldGVkIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIm1haWFBZ2VudHMiLCJpc0Nsb25lIiwibWFwIiwibWFpYUFnZW50IiwiaW5kZXgiLCJpc1NlbGVjdGVkIiwiaXNNYWlhIiwib25GYXZvcml0ZVRvZ2dsZSIsImNvbmNhdCIsInNvbWUiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY29tcGFueSIsImFnZW50c0NvdW50Iiwic2l6ZSIsInNlbGVjdGVkTW9kZWxMbG0iLCJtb2RlbF9kaXNwbGF5X25hbWUiLCJzZWxlY3RlZEFnZW50VHlwZSIsInNob3VsZFJlbmRlclNlbGVjdG9yIiwiJGhhc0Vycm9yIiwiJGxvYWRpbmciLCIkaGFzQWdlbnRzIiwib25Qb2ludGVyRG93biIsIm9uUG9pbnRlck1vdmUiLCJvblBvaW50ZXJVcCIsIm9uUG9pbnRlckNhbmNlbCIsIm9uTG9zdFBvaW50ZXJDYXB0dXJlIiwiY3Vyc29yIiwidG91Y2hBY3Rpb24iLCJhaUNoYXRCYWNrIiwibW9kZWwiLCJidXR0b25JZCIsImhhbmRsZUNsaWNrIiwiYWlDaGF0T3BlblZpZXdPcHRpb25zIiwidG9vbHRpcCIsImRpc2FibGVUb29sdGlwIiwicm9sZSIsIiRhY3RpdmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIFBvaW50ZXJFdmVudCBhcyBSZWFjdFBvaW50ZXJFdmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgQ3Jvc3MgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Dcm9zcydcbmltcG9ydCB7IENoZXZyb25Eb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvd24nXG5pbXBvcnQgeyBDaGV2cm9uTGVmdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25MZWZ0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICcuLi8uLi8uLi8uLi9hdG9tcy9JY29uQnV0dG9uJ1xuaW1wb3J0IHsgTUFJQUljb24sIE1haWFDaGF0TGF5b3V0TWVudUljb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IENoYXRBSUFnZW50T3B0aW9uIH0gZnJvbSAnLi4vQ2hhdEFpQWdlbnRPcHRpb25zL0NoYXRBaUFnZW50T3B0aW9ucydcbmltcG9ydCB7XG4gIFNDQ0FJTUhNb2RhbCxcbiAgU0NDQUlNSFNlbGVjdGVkQWdlbnQsXG4gIFNDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dCxcbiAgU0NDQUlNSFdyYXBwZXIsXG4gIFNDQ0FJTUhXcmFwcGVyQnV0dG9uLFxuICBTQ0NBSU1IV3JhcHBlckljb24sXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWwsXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50LFxuICBTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlLFxuICBTQ0NBSU1IRGl2aWRlcixcbiAgU0NDQUlNSEFnZW50c0xpc3QsXG4gIFNDQ0FJTUhMb2FkZXJXcmFwcGVyLFxuICBTQ0NBSVdyYXBwZXIsXG4gIFNDQ0FJTUhMYXlvdXRNZW51QW5jaG9yLFxuICBTQ0NBSU1ITGF5b3V0TWVudVBhbmVsLFxuICBTQ0NBSU1ITGF5b3V0TWVudVJvdyxcbiAgU0NDQUlNSEJhY2tCdXR0b24sXG59IGZyb20gJy4vQ2hhdEFpTW9kYWxIZWFkZXIuc3R5bGVzJ1xuaW1wb3J0IHR5cGUgeyBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSB9IGZyb20gJy4uLy4uL2xheW91dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy9tYWlhVGFza1BhbmVsQWNjZXNzJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IENoaXBMbG0gfSBmcm9tICcuLi8uLi8uLi8uLi9hdG9tcy9DaGlwTGxtJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbEhlYWRlciA9ICh7XG4gIGxheW91dE1vZGUsXG4gIG9uTGF5b3V0TW9kZUNoYW5nZSxcbiAgZXhwYW5kZWQsXG4gIGRyYWdnYWJsZSA9IGZhbHNlLFxuICBvbkRyYWdTdGFydCxcbiAgb25EcmFnTW92ZSxcbiAgb25EcmFnRW5kLFxuICBoYW5kbGVDbG9zZSA9ICgpID0+IG51bGwsXG4gIGFnZW50cyA9IFtdLFxuICBoYXNFcnJvciA9IGZhbHNlLFxuICBsb2FkaW5nID0gZmFsc2UsXG4gIGxvYWRpbmdNb3JlID0gZmFsc2UsXG4gIGhhc01vcmUgPSBmYWxzZSxcbiAgaGFuZGxlUmVzZXRDaGF0LFxuICBvbkFnZW50VXBkYXRlLFxuICBsb2FkTW9yZUFnZW50cyxcbiAgc29ydEFnZW50c0xpc3QsXG4gIGhpZGVBZ2VudFNlbGVjdG9yID0gZmFsc2UsXG4gIG9uQWdlbnRTZWxlY3RlZCxcbiAgc2hvd0JhY2tCdXR0b24gPSBmYWxzZSxcbiAgb25CYWNrID0gKCkgPT4gbnVsbCxcbn06IHtcbiAgbGF5b3V0TW9kZTogTWFpYUNoYXRNb2RhbExheW91dE1vZGVcbiAgb25MYXlvdXRNb2RlQ2hhbmdlOiAobW9kZTogTWFpYUNoYXRNb2RhbExheW91dE1vZGUpID0+IHZvaWRcbiAgZXhwYW5kZWQ6IGJvb2xlYW5cbiAgZHJhZ2dhYmxlPzogYm9vbGVhblxuICBvbkRyYWdTdGFydD86IChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIG9uRHJhZ01vdmU/OiAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gdm9pZFxuICBvbkRyYWdFbmQ/OiAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gdm9pZFxuICBoYW5kbGVDbG9zZT86ICgpID0+IHZvaWRcbiAgYWdlbnRzOiBBZ2VudFtdXG4gIGhhc0Vycm9yOiBib29sZWFuXG4gIGxvYWRpbmc6IGJvb2xlYW5cbiAgbG9hZGluZ01vcmU/OiBib29sZWFuXG4gIGhhc01vcmU/OiBib29sZWFuXG4gIGhhbmRsZVJlc2V0Q2hhdDogKCkgPT4gdm9pZFxuICBvbkFnZW50VXBkYXRlPzogKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgbG9hZE1vcmVBZ2VudHM/OiAoKSA9PiB2b2lkXG4gIHNvcnRBZ2VudHNMaXN0PzogKCkgPT4gdm9pZFxuICBoaWRlQWdlbnRTZWxlY3Rvcj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFNlIGludm9jYSBkZXNwdcOpcyBkZWwgcmVzZXQgY3VhbmRvIGVsIGFnZW50ZSBzZWxlY2Npb25hZG8gTk8gcmVxdWllcmUgc2VsZWNjacOzblxuICAgKiBkZSBlbnRpdHkgKGN1c3RvbSBvIGNsb25lK2dsb2JhbCkuIFBlcm1pdGUgcmVzb2x2ZXIgYEdFVCAvdjIvc2Vzc2lvbnMvYWdlbnQve2lkfWBcbiAgICogeSBuYXZlZ2FyIGEgdW5hIGNvbnZlcnNhY2nDs24gZXhpc3RlbnRlIHNpIGxhIGhheS5cbiAgICovXG4gIG9uQWdlbnRTZWxlY3RlZD86IChhZ2VudDogQWdlbnQpID0+IHZvaWQgfCBQcm9taXNlPHVua25vd24+XG4gIHNob3dCYWNrQnV0dG9uPzogYm9vbGVhblxuICBvbkJhY2s/OiAoKSA9PiB2b2lkXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmFibUFnZW50XSlcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGFnZW50OiBzZWxlY3RlZEFnZW50LCBzZWxlY3RBZ2VudCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRUYXNrLCBzZWN0aW9uIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgLy8gRW4gc2VjdGlvbiAndGFzaycgZWwgbW9kYWwgZGUgTWFpYSBzZSBlbGV2YSBwb3IgZW5jaW1hIGRlbCB0YXNrIHBhbmVsICh6LWluZGV4IDk4MDAwMDEpLlxuICAvLyBMb3MgdG9vbHRpcHMgc2UgbW9udGFuIGVuIHBvcnRhbCBjb24gei1pbmRleCAxNTAwIHBvciBkZWZlY3RvLCBhc8OtIHF1ZSBxdWVkYXLDrWFuIGRldHLDoXMuXG4gIC8vIFN1Ymltb3Mgc3Ugei1pbmRleCBzw7NsbyBlbiBlc3RlIGNhc28gcGFyYSBxdWUgc2UgdmVhbiBwb3IgZW5jaW1hIGRlbCBtb2RhbC5cbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ292ZXJsYXknKVxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgdGV4dFJlZkFnZW50ID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgZHJvcGRvd25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGxheW91dE1lbnVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtsYXlvdXRNZW51T3Blbiwgc2V0TGF5b3V0TWVudU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXA6IHNob3dUb29sdGlwQWdlbnQgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWZBZ2VudCwgW3NlbGVjdGVkQWdlbnQ/Lm5hbWVdKVxuICBjb25zdCBhZ2VudHNSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgY29uc3QgaXNNYWlhQWdlbnQgPSB1c2VDYWxsYmFjaygoYWdlbnRJdGVtOiBBZ2VudCkgPT4gYWdlbnRJdGVtLnR5cGUgPT09ICdvcmNoZXN0cmF0b3InLCBbXSlcbiAgY29uc3QgYWdlbnRzRm9yU2VsZWN0b3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGFnZW50cy5maWx0ZXIoYWdlbnRJdGVtID0+IGlzTWFpYUFnZW50KGFnZW50SXRlbSkgfHwgYWdlbnRJdGVtLmVudGl0eSAhPT0gJ2dsb2JhbCcpLFxuICAgIFthZ2VudHMsIGlzTWFpYUFnZW50XVxuICApXG5cbiAgLy8gTWFuZWphciBzY3JvbGwgaW5maW5pdG8gcGFyYSBjYXJnYXIgbcOhcyBhZ2VudHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBTb2xvIGN1YW5kbyBlbCBkcm9wZG93biBlc3TDqSBhYmllcnRvXG4gICAgaWYgKCFpc0V4cGFuZGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKCFhZ2VudHNSZWYuY3VycmVudCB8fCAhbG9hZE1vcmVBZ2VudHMgfHwgIWhhc01vcmUgfHwgbG9hZGluZ01vcmUpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuXG4gICAgICAvLyBDYXJnYXIgbcOhcyAoNTBweCBhbnRlcylcbiAgICAgIGlmIChkaXN0YW5jZUZyb21Cb3R0b20gPCA1MCkge1xuICAgICAgICBsb2FkTW9yZUFnZW50cygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGVsYXkgcGFyYSBhc2VndXJhciBxdWUgZWwgRE9NIGVzdMOpIHJlbmRlcml6YWRvXG4gICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICAgIGlmIChzY3JvbGxFbGVtZW50KSB7XG4gICAgICAgIHNjcm9sbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgfVxuICAgIH0sIDEwMClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IGFnZW50c1JlZi5jdXJyZW50XG4gICAgICBpZiAoc2Nyb2xsRWxlbWVudCkge1xuICAgICAgICBzY3JvbGxFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc0V4cGFuZGVkLCBsb2FkTW9yZUFnZW50cywgaGFzTW9yZSwgbG9hZGluZ01vcmVdKVxuXG4gIGNvbnN0IGxvY2FsQWdlbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHxcbiAgICAgIHNlbGVjdGVkQWdlbnQ/LmlzX2Zyb21fY29udmVyc2F0aW9uXG4gICAgKSB7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRBZ2VudFxuICAgIH1cbiAgICBjb25zdCBmcm9tTGlzdCA9IGFnZW50cy5maW5kKFxuICAgICAgYWdlbnQgPT5cbiAgICAgICAgIWFnZW50LmlzX2RlbGV0ZWQgJiYgIWFnZW50Lmhhc19ub3RfcGVybWlzc2lvbnMgJiYgIWFnZW50Lmhhc19ub3RfYWNjZXNzICYmIGFnZW50LmlkID09PSBzZWxlY3RlZEFnZW50Py5pZFxuICAgIClcbiAgICAvLyBBZ2VudGUgaGlkcmF0YWRvIHBvciBHRVQgKHAuIGVqLiBudWV2byBjaGF0IHRyYXMgY3JlYXRlX2FnZW50KSBwdWVkZSBubyBlc3RhciBhw7puIGVuIGxhIGxpc3RhIHBhZ2luYWRhXG4gICAgcmV0dXJuIGZyb21MaXN0ID8/IHNlbGVjdGVkQWdlbnQgPz8gbnVsbFxuICB9LCBbYWdlbnRzLCBzZWxlY3RlZEFnZW50XSlcblxuICBjb25zdCBoYW5kbGVTZWxlY3RBZ2VudCA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudDogQWdlbnQpID0+IHtcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QWdlbnRTZWxlY3QsIHtcbiAgICAgICAgYWdlbnRfdHlwZTogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaGFuZGxlUmVzZXRDaGF0KClcbiAgICAgICAgLy8gU2kgZWwgYWdlbnRlIG5vIGRlcGVuZGUgZGUgdW5hIGVudGl0eSAoY3VzdG9tIG8gY2xvbmUrZ2xvYmFsKSB5YSBwb2RlbW9zXG4gICAgICAgIC8vIHJlc29sdmVyIHNpIGV4aXN0ZSB1bmEgc2VzacOzbiBwcmV2aWEgeSwgZW4gZXNlIGNhc28sIG5hdmVnYXIgYSBlbGxhLlxuICAgICAgICAvLyBQYXJhIGNsb25lK3Byb2plY3R8Y2xpZW50LCBsYSByZXNvbHVjacOzbiBvY3VycmUgZW4gbG9zIHNlbGVjdG9ycyBkZSBlbnRpdHkuXG4gICAgICAgIGNvbnN0IG5lZWRzRW50aXR5ID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JylcbiAgICAgICAgaWYgKCFuZWVkc0VudGl0eSkge1xuICAgICAgICAgIG9uQWdlbnRTZWxlY3RlZD8uKGFnZW50KVxuICAgICAgICB9XG4gICAgICB9LCAxMDApXG4gICAgfSxcbiAgICBbc2VsZWN0QWdlbnQsIGFtcGxpdHVkRXZlbnQsIGhhbmRsZVJlc2V0Q2hhdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRUYXNrLCBvbkFnZW50U2VsZWN0ZWRdXG4gIClcblxuICBjb25zdCBoYW5kbGVFeHBhbmRNb2RhbCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHtcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdE9wZW5BZ2VudFNlbGVjdClcbiAgICAgIC8vIEN1YW5kbyBzZSBhYnJlIGVsIHNlbGVjdG9yLCBvcmRlbmFyIGxvcyBhZ2VudGVzXG4gICAgICBpZiAoc29ydEFnZW50c0xpc3QpIHtcbiAgICAgICAgc29ydEFnZW50c0xpc3QoKVxuICAgICAgfVxuICAgIH1cbiAgICBzZXRJc0V4cGFuZGVkKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCAmJiAhbGF5b3V0TWVudU9wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlXG4gICAgICBpZiAoaXNFeHBhbmRlZCAmJiBkcm9wZG93blJlZi5jdXJyZW50ICYmICFkcm9wZG93blJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgIH1cbiAgICAgIGlmIChsYXlvdXRNZW51T3BlbiAmJiBsYXlvdXRNZW51UmVmLmN1cnJlbnQgJiYgIWxheW91dE1lbnVSZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgIHNldExheW91dE1lbnVPcGVuKGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW2lzRXhwYW5kZWQsIGxheW91dE1lbnVPcGVuXSlcblxuICBjb25zdCBoYW5kbGVQaWNrTGF5b3V0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB7XG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5wcm9qZWN0UmVzdW1lRXhwYW5kLCB7XG4gICAgICAgIGV4cGFuZGVkOiBtb2RlID09PSAnZnVsbHNjcmVlbicsXG4gICAgICB9KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0U2VsZWN0Vmlld09wdGlvbnMsIHsgb3B0aW9uOiBtb2RlIH0pXG4gICAgICBvbkxheW91dE1vZGVDaGFuZ2UobW9kZSlcbiAgICAgIHNldExheW91dE1lbnVPcGVuKGZhbHNlKVxuICAgIH0sXG4gICAgW2FtcGxpdHVkRXZlbnQsIG9uTGF5b3V0TW9kZUNoYW5nZV1cbiAgKVxuXG4gIGNvbnN0IGNsb25lQWdlbnRzUm9sZUJsb2NrZWQgPSBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkKHVzZXIsIHNlY3Rpb24pXG5cbiAgY29uc3QgcmVuZGVyTW9kYWwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSU1IV3JhcHBlclxuICAgICAgICByZWY9e2Ryb3Bkb3duUmVmfVxuICAgICAgICBkYXRhLW5vLWRyYWc9XCJ0cnVlXCJcbiAgICAgICAgb25DbGljaz17YWdlbnRzLmxlbmd0aCA/IGhhbmRsZUV4cGFuZE1vZGFsIDogdW5kZWZpbmVkfVxuICAgICAgICBpZD1cImNoYXQtYWktbW9kYWwtaGVhZGVyLXdyYXBwZXJcIlxuICAgICAgPlxuICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnQ+XG4gICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgc2hvd1Rvb2x0aXBBZ2VudCA/IChcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc0cHgnIH19PlxuICAgICAgICAgICAgICAgICAge2xvY2FsQWdlbnRzPy50eXBlID09PSAnY3VzdG9tJyA/IGxvY2FsQWdlbnRzPy5lbW9qaSA6IDxNQUlBSWNvbiAvPn0ge2xvY2FsQWdlbnRzPy5uYW1lfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwbGFjZW1lbnQ9e2lzRXhwYW5kZWQgPyAnbGVmdCcgOiAndG9wJ31cbiAgICAgICAgICAgIHsuLi4odG9vbHRpcFpJbmRleCAhPSBudWxsID8geyB6SW5kZXg6IHRvb2x0aXBaSW5kZXggfSA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0XG4gICAgICAgICAgICAgIHJlZj17dGV4dFJlZkFnZW50fVxuICAgICAgICAgICAgICBpc0FnZW50RGVsZXRlZD17XG4gICAgICAgICAgICAgICAgISFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkIHx8ICEhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fCAhIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnNHB4JyB9fT5cbiAgICAgICAgICAgICAgICB7bG9jYWxBZ2VudHM/LnR5cGUgPT09ICdjdXN0b20nID8gbG9jYWxBZ2VudHM/LmVtb2ppIDogPE1BSUFJY29uIC8+fSB7bG9jYWxBZ2VudHM/Lm5hbWV9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9TQ0NBSU1IU2VsZWN0ZWRBZ2VudD5cbiAgICAgICAgPFNDQ0FJTUhXcmFwcGVySWNvbj5cbiAgICAgICAgICA8Q2hldnJvbkRvd24gd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSBjb2xvcj1cIiMyMDIwMUZcIiAvPlxuICAgICAgICA8L1NDQ0FJTUhXcmFwcGVySWNvbj5cbiAgICAgICAge2lzRXhwYW5kZWQgJiYgKFxuICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlck1vZGFsPlxuICAgICAgICAgICAgPFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50PlxuICAgICAgICAgICAgICB7d2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYWlhQWdlbnRzID0gYWdlbnRzRm9yU2VsZWN0b3IuZmlsdGVyKGlzTWFpYUFnZW50KVxuICAgICAgICAgICAgICAgICAgICBpZiAoIW1haWFBZ2VudHMubGVuZ3RoKSByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TUFJQUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGUgaXNDbG9uZT5NQUlBIGJ5IENPUjwvU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NDQUlXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhEaXZpZGVyIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHttYWlhQWdlbnRzLm1hcCgobWFpYUFnZW50LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hhdEFJQWdlbnRPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke21haWFBZ2VudC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50PXttYWlhQWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZEFnZW50Py5pZCA9PT0gbWFpYUFnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWFpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2FnZW50c0ZvclNlbGVjdG9yLnNvbWUoYWdlbnQgPT4gYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScpICYmXG4gICAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAge3QoJ2FnZW50cycpfSBieSB7dXNlci5jb21wYW55fVxuICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0NBSU1IRGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPFNDQ0FJTUhBZ2VudHNMaXN0IGhhc01vcmU9e2hhc01vcmV9IGFnZW50c0NvdW50PXthZ2VudHNGb3JTZWxlY3Rvci5sZW5ndGh9IHJlZj17YWdlbnRzUmVmfT5cbiAgICAgICAgICAgICAgICB7YWdlbnRzRm9yU2VsZWN0b3I/Lm1hcCgoYWdlbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGFnZW50Py5pc19kZWxldGVkIHx8XG4gICAgICAgICAgICAgICAgICAgIGFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8XG4gICAgICAgICAgICAgICAgICAgIGFnZW50Py5oYXNfbm90X2FjY2VzcyB8fFxuICAgICAgICAgICAgICAgICAgICBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyB8fFxuICAgICAgICAgICAgICAgICAgICBpc01haWFBZ2VudChhZ2VudCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGFnZW50Py50eXBlID09PSAnY3VzdG9tJyAmJiAhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8Q2hhdEFJQWdlbnRPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke2FnZW50LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgYWdlbnQ9e2FnZW50fVxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RBZ2VudD17aGFuZGxlU2VsZWN0QWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IGFnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZD17c2V0SXNFeHBhbmRlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICB7bG9hZGluZ01vcmUgJiYgKFxuICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhMb2FkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhMb2FkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSEFnZW50c0xpc3Q+XG4gICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50PlxuICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNSFdyYXBwZXI+XG4gICAgKVxuICB9XG5cbiAgY29uc3Qgc2VsZWN0ZWRNb2RlbExsbSA9IHNlbGVjdGVkQWdlbnQ/Lm1vZGVsX2Rpc3BsYXlfbmFtZVxuICBjb25zdCBzZWxlY3RlZEFnZW50VHlwZSA9IHNlbGVjdGVkQWdlbnQ/LnR5cGUgPT09ICdjdXN0b20nXG4gIGNvbnN0IHNob3VsZFJlbmRlclNlbGVjdG9yID1cbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZyAmJlxuICAgICFoaWRlQWdlbnRTZWxlY3RvciAmJlxuICAgICEhc2VsZWN0ZWRBZ2VudCAmJlxuICAgICghIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUylcblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSU1ITW9kYWxcbiAgICAgICRoYXNFcnJvcj17aGFzRXJyb3J9XG4gICAgICAkbG9hZGluZz17bG9hZGluZ31cbiAgICAgICRoYXNBZ2VudHM9eyEhYWdlbnRzLmxlbmd0aH1cbiAgICAgIG9uUG9pbnRlckRvd249e2RyYWdnYWJsZSA/IG9uRHJhZ1N0YXJ0IDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyTW92ZT17ZHJhZ2dhYmxlID8gb25EcmFnTW92ZSA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlclVwPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBvblBvaW50ZXJDYW5jZWw9e2RyYWdnYWJsZSA/IG9uRHJhZ0VuZCA6IHVuZGVmaW5lZH1cbiAgICAgIG9uTG9zdFBvaW50ZXJDYXB0dXJlPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBzdHlsZT17eyBjdXJzb3I6IGRyYWdnYWJsZSA/ICdncmFiJyA6IHVuZGVmaW5lZCwgdG91Y2hBY3Rpb246IGRyYWdnYWJsZSA/ICdtYW5pcHVsYXRpb24nIDogdW5kZWZpbmVkIH19XG4gICAgPlxuICAgICAge3Nob3VsZFJlbmRlclNlbGVjdG9yID8gcmVuZGVyTW9kYWwoKSA6IDxkaXYgLz59XG4gICAgICA8U0NDQUlNSFdyYXBwZXJCdXR0b24gZGF0YS1uby1kcmFnPVwidHJ1ZVwiPlxuICAgICAgICB7c2hvd0JhY2tCdXR0b24gJiYgKFxuICAgICAgICAgIDxTQ0NBSU1IQmFja0J1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdEJhY2spXG4gICAgICAgICAgICAgIG9uQmFjaygpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxDaGV2cm9uTGVmdCB3aWR0aD17MTR9IGhlaWdodD17MTR9IGNvbG9yPVwiIzM0MzQzM1wiIC8+XG4gICAgICAgICAgICB7dCgnYmFjaycpfVxuICAgICAgICAgIDwvU0NDQUlNSEJhY2tCdXR0b24+XG4gICAgICAgICl9XG4gICAgICAgIHtzZWxlY3RlZEFnZW50VHlwZSAmJiBzZWxlY3RlZE1vZGVsTGxtICYmIDxDaGlwTGxtIG1vZGVsPXtzZWxlY3RlZE1vZGVsTGxtfSBleHBhbmRlZD17ZXhwYW5kZWR9IC8+fVxuICAgICAgICA8U0NDQUlNSExheW91dE1lbnVBbmNob3IgcmVmPXtsYXlvdXRNZW51UmVmfSBkYXRhLW5vLWRyYWc9XCJ0cnVlXCI+XG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIGJ1dHRvbklkPVwiYnRuLW1haWEtbGF5b3V0LW1lbnVcIlxuICAgICAgICAgICAgaGFuZGxlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFsYXlvdXRNZW51T3Blbikge1xuICAgICAgICAgICAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdE9wZW5WaWV3T3B0aW9ucylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRMYXlvdXRNZW51T3BlbihwcmV2ID0+ICFwcmV2KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHRvb2x0aXA9e3QoJ2xheW91dE1lbnVUb29sdGlwJyl9XG4gICAgICAgICAgICBkaXNhYmxlVG9vbHRpcD17bGF5b3V0TWVudU9wZW59XG4gICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxNYWlhQ2hhdExheW91dE1lbnVJY29uIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIHtsYXlvdXRNZW51T3BlbiA/IChcbiAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVBhbmVsIHJvbGU9XCJtZW51XCI+XG4gICAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVJvd1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICRhY3RpdmU9e2xheW91dE1vZGUgPT09ICdzaWRlYmFyJ31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVQaWNrTGF5b3V0KCdzaWRlYmFyJyl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dCgnbGF5b3V0U2lkZWJhcicpfVxuICAgICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51Um93PlxuICAgICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVSb3dcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAkYWN0aXZlPXtsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbid9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnZnVsbHNjcmVlbicpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoJ2xheW91dEZ1bGxzY3JlZW4nKX1cbiAgICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVJvdz5cbiAgICAgICAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51Um93XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgJGFjdGl2ZT17bGF5b3V0TW9kZSA9PT0gJ2Zsb2F0aW5nJ31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVQaWNrTGF5b3V0KCdmbG9hdGluZycpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoJ2xheW91dEZsb2F0aW5nJyl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVSb3c+XG4gICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51UGFuZWw+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVBbmNob3I+XG4gICAgICAgIDxJY29uQnV0dG9uIGhhbmRsZUNsaWNrPXtoYW5kbGVDbG9zZX0gdG9vbHRpcD17dCgnZ2xvYmFscy5jbG9zZScpfSB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICA8Q3Jvc3MgLz5cbiAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgPC9TQ0NBSU1IV3JhcHBlckJ1dHRvbj5cbiAgICA8L1NDQ0FJTUhNb2RhbD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxRQUEyQyxPQUFPO0FBQzVHLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxXQUFXLFFBQVEsOENBQThDO0FBQzFFLFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsUUFBUSxRQUFRLGlDQUFpQztBQUMxRCxTQUFTQyxnQkFBZ0IsUUFBUSx1Q0FBdUM7QUFDeEUsU0FBU0MsaUJBQWlCLFFBQVEsZ0NBQWdDO0FBQ2xFLFNBQVNDLFVBQVUsUUFBUSw4QkFBOEI7QUFDekQsU0FBU0MsUUFBUSxFQUFFQyxzQkFBc0IsUUFBUSx5QkFBeUI7QUFDMUUsU0FBU0MsaUJBQWlCLFFBQVEsMENBQTBDO0FBQzVFLFNBQ0VDLFlBQVksRUFDWkMsb0JBQW9CLEVBQ3BCQyx3QkFBd0IsRUFDeEJDLGNBQWMsRUFDZEMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsRUFDbEJDLG1CQUFtQixFQUNuQkMsMEJBQTBCLEVBQzFCQywrQkFBK0IsRUFDL0JDLGNBQWMsRUFDZEMsaUJBQWlCLEVBQ2pCQyxvQkFBb0IsRUFDcEJDLFlBQVksRUFDWkMsdUJBQXVCLEVBQ3ZCQyxzQkFBc0IsRUFDdEJDLG9CQUFvQixFQUNwQkMsaUJBQWlCLFFBQ1osNEJBQTRCO0FBRW5DLFNBQVNDLE1B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
@@ -6,8 +6,10 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
6
6
  /* eslint-disable no-unused-vars */
7
7
  /* eslint-disable no-undef */
8
8
  /* eslint-disable react/require-default-props */
9
- import { useMemo, useRef, useState, useEffect } from 'react';
9
+ import { useCallback, useMemo, useRef, useState, useEffect } from 'react';
10
+ import { createPortal } from 'react-dom';
10
11
  import { Attach } from '@projectcor/icons/lib/components/Attach';
12
+ import { Plus } from '@projectcor/icons/lib/components/Plus';
11
13
  import { MODAL_ELEMENTS } from '../../../hooks/useModal/useModal';
12
14
  import { Chip } from '../../atoms/Chip';
13
15
  // eslint-disable-next-line import/no-cycle
@@ -16,7 +18,9 @@ import { ChatFooterFaqs } from './ChatFooterFaqs';
16
18
  import { useGlobalContext } from '../../../context/global-context';
17
19
  import { useT } from '../../../hooks/useT';
18
20
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
19
- import { StyledChatFooter, ChipsAndFaqsRow } from './styles';
21
+ // eslint-disable-next-line import/no-cycle
22
+ import { useContextPinPopover } from '../../../hooks/useContextPinPopover';
23
+ import { StyledChatFooter, ChipsAndFaqsRow, ContextBarLeft, AddContextButton } from './styles';
20
24
  import { CsvFileIcon, MDFileIcon, DocFileIcon, DocxFileIcon, TextFileIcon, PdfFileIcon, ImageFileIcon, XlsxFileIcon, XlsFileIcon, Mp3FileIcon, WavFileIcon, FlacFileIcon, M4aFileIcon, Mp4FileIcon, OgaFileIcon, OggFileIcon, WebmFileIcon } from '../../atoms/icons';
21
25
  import { ImagePreview } from '../../atoms/ImagePreview/ImagePreview';
22
26
  import { preprocessImageForBackend } from '../../../utils/imagePreprocessor';
@@ -62,10 +66,25 @@ export function ChatFooter(_ref) {
62
66
  chipsProject = _useGlobalContext.chipsProject,
63
67
  client = _useGlobalContext.client,
64
68
  task = _useGlobalContext.task,
65
- section = _useGlobalContext.section;
69
+ section = _useGlobalContext.section,
70
+ setProject = _useGlobalContext.setProject,
71
+ setClient = _useGlobalContext.setClient,
72
+ setTask = _useGlobalContext.setTask,
73
+ setChipsProject = _useGlobalContext.setChipsProject;
66
74
  var _useT = useT(),
67
75
  t = _useT.t;
68
76
  var event = useEvent();
77
+ var pinButtonRef = useRef(null);
78
+ var inputPopoverAnchorRef = useRef(null);
79
+ var contextBarAnchorRef = useRef(null);
80
+ var isOrchestrator = (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator';
81
+ var _useContextPinPopover = useContextPinPopover({
82
+ popoverAnchorRef: inputPopoverAnchorRef,
83
+ topAnchorRef: contextBarAnchorRef,
84
+ triggerRef: pinButtonRef
85
+ }),
86
+ togglePin = _useContextPinPopover.toggle,
87
+ pinPopoverNode = _useContextPinPopover.popoverNode;
69
88
  var _useState = useState([]),
70
89
  _useState2 = _slicedToArray(_useState, 2),
71
90
  attachments = _useState2[0],
@@ -98,20 +117,61 @@ export function ChatFooter(_ref) {
98
117
  document.removeEventListener('chat-session-changed', handleSessionChange);
99
118
  };
100
119
  }, []);
101
- var chipItems = useMemo(function () {
102
- if (items) return items;
103
- var tempItems = [];
104
- if ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'client' && client !== null && client !== void 0 && client.name) {
105
- tempItems.push(client.name);
106
- } else if (task !== null && task !== void 0 && task.name) {
107
- tempItems.push(task.name);
108
- } else if (chipsProject !== null && chipsProject !== void 0 && chipsProject.projectName) {
109
- tempItems.push(chipsProject.projectName);
110
- } else if (project !== null && project !== void 0 && project.name) {
111
- tempItems.push(project.name);
112
- }
113
- return tempItems;
114
- }, [items, project, chipsProject, agent === null || agent === void 0 ? void 0 : agent.entity, client, task === null || task === void 0 ? void 0 : task.name]);
120
+ var _useMemo = useMemo(function () {
121
+ if (items) return {
122
+ chipItems: items
123
+ };
124
+
125
+ // Mono-contexto: solo la entidad más específica (sin anidar cliente/proyecto/tarea).
126
+ if ((agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator') {
127
+ if (task !== null && task !== void 0 && task.name) return {
128
+ chipItems: [task.name],
129
+ chipType: 'task'
130
+ };
131
+ if (chipsProject !== null && chipsProject !== void 0 && chipsProject.projectName) return {
132
+ chipItems: [chipsProject.projectName],
133
+ chipType: 'project'
134
+ };
135
+ if (client !== null && client !== void 0 && client.name) return {
136
+ chipItems: [client.name],
137
+ chipType: 'client'
138
+ };
139
+ return {
140
+ chipItems: []
141
+ };
142
+ }
143
+ if ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'client' && client !== null && client !== void 0 && client.name) {
144
+ return {
145
+ chipItems: [client.name],
146
+ chipType: 'client'
147
+ };
148
+ }
149
+ if (task !== null && task !== void 0 && task.name) return {
150
+ chipItems: [task.name],
151
+ chipType: 'task'
152
+ };
153
+ if (chipsProject !== null && chipsProject !== void 0 && chipsProject.projectName) return {
154
+ chipItems: [chipsProject.projectName],
155
+ chipType: 'project'
156
+ };
157
+ if (project !== null && project !== void 0 && project.name) return {
158
+ chipItems: [project.name],
159
+ chipType: 'project'
160
+ };
161
+ return {
162
+ chipItems: []
163
+ };
164
+ }, [items, project, chipsProject, agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.type, client, task === null || task === void 0 ? void 0 : task.name]),
165
+ chipItems = _useMemo.chipItems,
166
+ chipType = _useMemo.chipType;
167
+
168
+ // Quitar el pin ⇒ modo global, sin redirect (el orquestador no pasa por el gate de selectores). RFC §8.
169
+ var handleRemoveContext = useCallback(function () {
170
+ setProject(null);
171
+ setClient === null || setClient === void 0 || setClient(null);
172
+ setTask(null);
173
+ setChipsProject(null);
174
+ }, [setProject, setClient, setTask, setChipsProject]);
115
175
  var onChange = function onChange() {
116
176
  if (reportedEvent.current) return;
117
177
  event(EVENTS.pmAiTypedText, {
@@ -246,13 +306,37 @@ export function ChatFooter(_ref) {
246
306
  var shouldShowFaqs = showFaqs && section !== 'task';
247
307
  return /*#__PURE__*/_jsxs(StyledChatFooter, {
248
308
  children: [isMAIA && !loadingMessages && /*#__PURE__*/_jsxs(ChipsAndFaqsRow, {
249
- children: [!!chipItems.length && /*#__PURE__*/_jsx(Chip, {
250
- items: chipItems
309
+ ref: contextBarAnchorRef,
310
+ children: [/*#__PURE__*/_jsxs(ContextBarLeft, {
311
+ children: [!!chipItems.length && /*#__PURE__*/_jsx(Chip, {
312
+ items: chipItems,
313
+ type: chipType,
314
+ onRemove: isOrchestrator ? handleRemoveContext : undefined,
315
+ removeLabel: t('contextPin.remove', {
316
+ defaultValue: 'Quitar contexto'
317
+ }),
318
+ tooltip: isOrchestrator ? t('chat.activity.dynamicContextTooltip') : undefined,
319
+ tooltipZIndex: tooltipZIndex
320
+ }), isOrchestrator && /*#__PURE__*/_jsxs(AddContextButton, {
321
+ ref: pinButtonRef,
322
+ type: "button",
323
+ onClick: togglePin,
324
+ children: [/*#__PURE__*/_jsx(Plus, {
325
+ color: "currentColor",
326
+ width: 14,
327
+ height: 14
328
+ }), !chipItems.length && /*#__PURE__*/_jsx("span", {
329
+ children: t('contextPin.addContext', {
330
+ defaultValue: 'Contexto'
331
+ })
332
+ })]
333
+ })]
251
334
  }), shouldShowFaqs && /*#__PURE__*/_jsx(ChatFooterFaqs, {
252
335
  onSelectFaq: handleSelectFaq,
253
336
  disabled: isFaqInteractionDisabled
254
337
  })]
255
- }), /*#__PURE__*/_jsx(MAIAInput, {
338
+ }), pinPopoverNode && /*#__PURE__*/createPortal(pinPopoverNode, document.body), /*#__PURE__*/_jsx(MAIAInput, {
339
+ popoverAnchorRef: inputPopoverAnchorRef,
256
340
  onSendMessage: handleSendMessage,
257
341
  className: MODAL_ELEMENTS,
258
342
  disabled: disabled,
@@ -284,4 +368,4 @@ export function ChatFooter(_ref) {
284
368
  })]
285
369
  });
286
370
  }
287
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJBdHRhY2giLCJNT0RBTF9FTEVNRU5UUyIsIkNoaXAiLCJNQUlBSW5wdXQiLCJDaGF0Rm9vdGVyRmFxcyIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJTdHlsZWRDaGF0Rm9vdGVyIiwiQ2hpcHNBbmRGYXFzUm93IiwiQ3N2RmlsZUljb24iLCJNREZpbGVJY29uIiwiRG9jRmlsZUljb24iLCJEb2N4RmlsZUljb24iLCJUZXh0RmlsZUljb24iLCJQZGZGaWxlSWNvbiIsIkltYWdlRmlsZUljb24iLCJYbHN4RmlsZUljb24iLCJYbHNGaWxlSWNvbiIsIk1wM0ZpbGVJY29uIiwiV2F2RmlsZUljb24iLCJGbGFjRmlsZUljb24iLCJNNGFGaWxlSWNvbiIsIk1wNEZpbGVJY29uIiwiT2dhRmlsZUljb24iLCJPZ2dGaWxlSWNvbiIsIldlYm1GaWxlSWNvbiIsIkltYWdlUHJldmlldyIsInByZXByb2Nlc3NJbWFnZUZvckJhY2tlbmQiLCJ2YWxpZGF0ZUlzTWFpYSIsIkNoYXREaXNjbGFpbWVyTWVzc2FnZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJJY29uQnlGaWxlVHlwZSIsIkNoYXRGb290ZXIiLCJfcmVmIiwib25TZW5kTWVzc2FnZSIsIml0ZW1zIiwiZGlzYWJsZWQiLCJpc1N0cmVhbWluZyIsImlzV3JpdGluZyIsIm9uU3RvcEdlbmVyYXRpb24iLCJjaGF0SWQiLCJuZXdDaGF0S2V5IiwiX3JlZiRzaG93RmFxcyIsInNob3dGYXFzIiwidG9vbHRpcFpJbmRleCIsIl91c2VHbG9iYWxDb250ZXh0IiwicHJvamVjdCIsImFnZW50IiwiY2hpcHNQcm9qZWN0IiwiY2xpZW50IiwidGFzayIsInNlY3Rpb24iLCJfdXNlVCIsInQiLCJldmVudCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImF0dGFjaG1lbnRzIiwic2V0QXR0YWNobWVudHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmdNZXNzYWdlcyIsInNldExvYWRpbmdNZXNzYWdlcyIsInJlcG9ydGVkRXZlbnQiLCJpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQiLCJlbnRpdHkiLCJ0ZXN0IiwibmFtZSIsImhhbmRsZUxvYWRpbmdNZXNzYWdlc0NoYW5nZSIsImUiLCJkZXRhaWwiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlU2Vzc2lvbkNoYW5nZSIsImNoaXBJdGVtcyIsInRlbXBJdGVtcyIsInB1c2giLCJwcm9qZWN0TmFtZSIsIm9uQ2hhbmdlIiwiY3VycmVudCIsInBtQWlUeXBlZFRleHQiLCJhZ2VudF90eXBlIiwidHlwZSIsImhhbmRsZVNlbmRNZXNzYWdlIiwibWVzc2FnZSIsIm5ld0F0dGFjaG1lbnRzIiwibWVudGlvbnMiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiYWlDaGF0U2VuZCIsImFnZW50X2lkIiwiaWQiLCJhZ2VudF9uYW1lIiwiaGFuZGxlU2VsZWN0RmFxIiwidW5kZWZpbmVkIiwiaGFuZGxlRmlsZUF0dGFjaCIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJmaWxlIiwiX2ZpbGVOYW1lUGFydHMkcG9wIiwiZmlsZU5hbWVQYXJ0cyIsImZpbGVFeHRlbnNpb24iLCJpc0ltYWdlQnlFeHRlbnNpb24iLCJpc0ltYWdlQnlNaW1lIiwiaXNJbWFnZSIsImV4dGVuc2lvblRvSWNvbiIsImljb24iLCJleHRlbnNpb25Ub01pbWVUeXBlIiwibWltZVR5cGVCeUV4dGVuc2lvbiIsInByb2Nlc3NlZEZpbGUiLCJpbWFnZVVybCIsIm5ld0F0dGFjaG1lbnQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic3BsaXQiLCJsZW5ndGgiLCJjb25jYXQiLCJwb3AiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwic3RhcnRzV2l0aCIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJzZW50IiwiY29uc29sZSIsImVycm9yIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwic3JjIiwiYWx0IiwiYm9yZGVyUmFkaXVzIiwib3JpZ2luYWxGaWxlIiwiRGF0ZSIsIm5vdyIsIk1hdGgiLCJyYW5kb20iLCJzaXplIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVEZWxldGVBdHRhY2htZW50IiwiZmlsZUlkIiwiZmlsdGVyIiwiYXR0YWNobWVudCIsImlzTUFJQSIsImRpc2NsYWltZXJNZXNzYWdlIiwiYWdlbnROYW1lIiwiaXNGYXFJbnRlcmFjdGlvbkRpc2FibGVkIiwiQm9vbGVhbiIsInNob3VsZFNob3dGYXFzIiwiY2hpbGRyZW4iLCJvblNlbGVjdEZhcSIsImNsYXNzTmFtZSIsInBsYWNlaG9sZGVyIiwiaW5wdXRfcGxhY2Vob2xkZXIiLCJvbkZpbGVBdHRhY2giLCJvbkRlbGV0ZUF0dGFjaG1lbnQiLCJhdHQiLCJtYXAiLCJOdW1iZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG5pbXBvcnQgeyBSZWFjdE5vZGUsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQXR0YWNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQXR0YWNoJ1xuaW1wb3J0IHsgTU9EQUxfRUxFTUVOVFMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNb2RhbC91c2VNb2RhbCdcblxuaW1wb3J0IHsgQ2hpcCB9IGZyb20gJy4uLy4uL2F0b21zL0NoaXAnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBNQUlBSW5wdXQgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBSW5wdXQnXG5pbXBvcnQgeyBDaGF0Rm9vdGVyRmFxcyB9IGZyb20gJy4vQ2hhdEZvb3RlckZhcXMnXG5cbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgU3R5bGVkQ2hhdEZvb3RlciwgQ2hpcHNBbmRGYXFzUm93IH0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQge1xuICBDc3ZGaWxlSWNvbixcbiAgTURGaWxlSWNvbixcbiAgRG9jRmlsZUljb24sXG4gIERvY3hGaWxlSWNvbixcbiAgVGV4dEZpbGVJY29uLFxuICBQZGZGaWxlSWNvbixcbiAgSW1hZ2VGaWxlSWNvbixcbiAgWGxzeEZpbGVJY29uLFxuICBYbHNGaWxlSWNvbixcbiAgTXAzRmlsZUljb24sXG4gIFdhdkZpbGVJY29uLFxuICBGbGFjRmlsZUljb24sXG4gIE00YUZpbGVJY29uLFxuICBNcDRGaWxlSWNvbixcbiAgT2dhRmlsZUljb24sXG4gIE9nZ0ZpbGVJY29uLFxuICBXZWJtRmlsZUljb24sXG59IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgSW1hZ2VQcmV2aWV3IH0gZnJvbSAnLi4vLi4vYXRvbXMvSW1hZ2VQcmV2aWV3L0ltYWdlUHJldmlldydcbmltcG9ydCB7IHByZXByb2Nlc3NJbWFnZUZvckJhY2tlbmQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9pbWFnZVByZXByb2Nlc3NvcidcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ2hhdERpc2NsYWltZXJNZXNzYWdlIH0gZnJvbSAnLi4vLi4vYXRvbXMvQ2hhdERpc2NsYWltZXJNZXNzYWdlJ1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50RmlsZSA9IHtcbiAgZmlsZTogRmlsZVxuICBvcmlnaW5hbEZpbGU/OiBGaWxlXG4gIHVybF90aHVtYm5haWw/OiBzdHJpbmdcbiAgdXJsX29yaWdpbmFsPzogc3RyaW5nXG4gIHVybF9maWxlPzogc3RyaW5nXG4gIHJvbGU/OiAndXNlcicgfCAnYXNzaXN0YW50J1xuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbiAgZXh0Pzogc3RyaW5nXG4gIHN0YXR1cz86ICdwZW5kaW5nJyB8ICdwcm9jZXNzaW5nJyB8ICdkb25lJyB8ICdmYWlsZWQnIHwgJ3N0YXJ0ZWQnXG59XG5cbnR5cGUgQ2hhdEZvb3RlclByb3BzID0ge1xuICBpdGVtcz86IHN0cmluZ1tdXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNXcml0aW5nPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgb25TdG9wR2VuZXJhdGlvbj86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgY2hhdElkPzogc3RyaW5nIHwgbnVsbFxuICBuZXdDaGF0S2V5PzogbnVtYmVyXG4gIC8qKiBTaSBlcyBmYWxzZSwgbm8gc2UgbXVlc3RyYSBlbCBib3TDs24gZGUgRkFRcy4gRGViZSBzZXIgdHJ1ZSBjdWFuZG8gY3VycmVudE9wdGlvbiA9PT0gY2hhdC4gRW4gc2VjdGlvbiB0YXNrIG5vIHNlIG11ZXN0cmEgYXVucXVlIHNlYSB0cnVlLiAqL1xuICBzaG93RmFxcz86IGJvb2xlYW5cbiAgdG9vbHRpcFpJbmRleD86IG51bWJlclxufVxuXG5leHBvcnQgY29uc3QgSWNvbkJ5RmlsZVR5cGUgPSB7XG4gICd0ZXh0L3BsYWluJzogPFRleHRGaWxlSWNvbiAvPixcbiAgJ3RleHQveC1tYXJrZG93bic6IDxNREZpbGVJY29uIC8+LFxuICAndGV4dC9jc3YnOiA8Q3N2RmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi9tc3dvcmQnOiA8RG9jRmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc6IDxEb2N4RmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi9wZGYnOiA8UGRmRmlsZUljb24gLz4sXG4gICdpbWFnZS9wbmcnOiA8SW1hZ2VGaWxlSWNvbiAvPixcbiAgJ2ltYWdlL2pwZWcnOiA8SW1hZ2VGaWxlSWNvbiAvPixcbiAgJ2ltYWdlL2pwZyc6IDxJbWFnZUZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnOiA8WGxzeEZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJzogPFhsc0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vbXBlZyc6IDxNcDNGaWxlSWNvbiAvPixcbiAgJ2F1ZGlvL2ZsYWMnOiA8RmxhY0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vbXA0JzogPE1wNEZpbGVJY29uIC8+LFxuICAnYXVkaW8vbTRhJzogPE00YUZpbGVJY29uIC8+LFxuICAnYXVkaW8vb2dnJzogPE9nZ0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vb2dhJzogPE9nYUZpbGVJY29uIC8+LFxuICAnYXVkaW8vd2F2JzogPFdhdkZpbGVJY29uIC8+LFxuICAnYXVkaW8vd2VibSc6IDxXZWJtRmlsZUljb24gLz4sXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGF0Rm9vdGVyKHtcbiAgb25TZW5kTWVzc2FnZSxcbiAgaXRlbXMsXG4gIGRpc2FibGVkLFxuICBpc1N0cmVhbWluZyxcbiAgaXNXcml0aW5nLFxuICBvblN0b3BHZW5lcmF0aW9uLFxuICBjaGF0SWQsXG4gIG5ld0NoYXRLZXksXG4gIHNob3dGYXFzID0gdHJ1ZSxcbiAgdG9vbHRpcFpJbmRleCxcbn06IENoYXRGb290ZXJQcm9wcykge1xuICBjb25zdCB7IHByb2plY3QsIGFnZW50LCBjaGlwc1Byb2plY3QsIGNsaWVudCwgdGFzaywgc2VjdGlvbiB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCBbYXR0YWNobWVudHMsIHNldEF0dGFjaG1lbnRzXSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlW10+KFtdKVxuICBjb25zdCBbbG9hZGluZ01lc3NhZ2VzLCBzZXRMb2FkaW5nTWVzc2FnZXNdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID0gYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpXG5cbiAgLy8gdXNlRWZmZWN0IHRvIGxpc3RlbiBsb2FkaW5nTWVzc2FnZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVMb2FkaW5nTWVzc2FnZXNDaGFuZ2UgPSAoZTogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlcyhlLmRldGFpbC5sb2FkaW5nTWVzc2FnZXMpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1sb2FkaW5nLW1lc3NhZ2VzLWNoYW5nZWQnLCBoYW5kbGVMb2FkaW5nTWVzc2FnZXNDaGFuZ2UgYXMgRXZlbnRMaXN0ZW5lcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIGhhbmRsZUxvYWRpbmdNZXNzYWdlc0NoYW5nZSBhcyBFdmVudExpc3RlbmVyKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQ2xlYXIgYXR0YWNobWVudHMgd2hlbiBzZXNzaW9uIGNoYW5nZXMgKHVzZXIgc3dpdGNoZXMgdG8gYSBkaWZmZXJlbnQgY2hhdClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXNzaW9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgc2V0QXR0YWNobWVudHMoW10pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGNoaXBJdGVtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpdGVtcykgcmV0dXJuIGl0ZW1zXG5cbiAgICBjb25zdCB0ZW1wSXRlbXM6IHN0cmluZ1tdID0gW11cblxuICAgIGlmIChhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JyAmJiBjbGllbnQ/Lm5hbWUpIHtcbiAgICAgIHRlbXBJdGVtcy5wdXNoKGNsaWVudC5uYW1lKVxuICAgIH0gZWxzZSBpZiAodGFzaz8ubmFtZSkge1xuICAgICAgdGVtcEl0ZW1zLnB1c2godGFzay5uYW1lKVxuICAgIH0gZWxzZSBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0TmFtZSkge1xuICAgICAgdGVtcEl0ZW1zLnB1c2goY2hpcHNQcm9qZWN0LnByb2plY3ROYW1lKVxuICAgIH0gZWxzZSBpZiAocHJvamVjdD8ubmFtZSkge1xuICAgICAgdGVtcEl0ZW1zLnB1c2gocHJvamVjdC5uYW1lKVxuICAgIH1cblxuICAgIHJldHVybiB0ZW1wSXRlbXNcbiAgfSwgW2l0ZW1zLCBwcm9qZWN0LCBjaGlwc1Byb2plY3QsIGFnZW50Py5lbnRpdHksIGNsaWVudCwgdGFzaz8ubmFtZV0pXG5cbiAgY29uc3Qgb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHJlcG9ydGVkRXZlbnQuY3VycmVudCkgcmV0dXJuXG4gICAgZXZlbnQoRVZFTlRTLnBtQWlUeXBlZFRleHQsIHtcbiAgICAgIGFnZW50X3R5cGU6IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA/ICdtYXJrZXRwbGFjZScgOiBhZ2VudD8udHlwZSxcbiAgICB9KVxuICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IHRydWVcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBuZXdBdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgIGZhcUlkPzogc3RyaW5nLFxuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgIHNjSWQ/OiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgZXZlbnQoRVZFTlRTLmFpQ2hhdFNlbmQsIHtcbiAgICAgIGFnZW50X3R5cGU6IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA/ICdtYXJrZXRwbGFjZScgOiBhZ2VudD8udHlwZSxcbiAgICAgIGFnZW50X2lkOiBhZ2VudD8uaWQsXG4gICAgICBhZ2VudF9uYW1lOiBhZ2VudD8ubmFtZSxcbiAgICB9KVxuICAgIG9uU2VuZE1lc3NhZ2UobWVzc2FnZSwgbmV3QXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgIHNldEF0dGFjaG1lbnRzKFtdKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0RmFxID0gKG1lc3NhZ2U6IHN0cmluZywgZmFxSWQ6IHN0cmluZykgPT4ge1xuICAgIG9uU2VuZE1lc3NhZ2UobWVzc2FnZSwgdW5kZWZpbmVkLCBmYXFJZCwgdW5kZWZpbmVkKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmlsZUF0dGFjaCA9IGFzeW5jIChmaWxlOiBGaWxlKSA9PiB7XG4gICAgY29uc3QgZmlsZU5hbWVQYXJ0cyA9IGZpbGUubmFtZS5zcGxpdCgnLicpXG4gICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGVOYW1lUGFydHMubGVuZ3RoID4gMSA/IGAuJHtmaWxlTmFtZVBhcnRzLnBvcCgpPy50b0xvd2VyQ2FzZSgpfWAgOiAnJ1xuICAgIGNvbnN0IGlzSW1hZ2VCeUV4dGVuc2lvbiA9IFsnLnBuZycsICcuanBnJywgJy5qcGVnJ10uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbilcbiAgICBjb25zdCBpc0ltYWdlQnlNaW1lID0gZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpXG4gICAgY29uc3QgaXNJbWFnZSA9IGlzSW1hZ2VCeU1pbWUgJiYgaXNJbWFnZUJ5RXh0ZW5zaW9uXG4gICAgLy8gTWFwZW8gZGUgZXh0ZW5zacOzbiBhIGljb25vIGRpcmVjdG8gcGFyYSBjYXNvcyBlc3BlY2lhbGVzIChhdWRpby9vZ2cgeSBhdWRpby9tcDQpXG4gICAgY29uc3QgZXh0ZW5zaW9uVG9JY29uOiBSZWNvcmQ8c3RyaW5nLCBSZWFjdE5vZGU+ID0ge1xuICAgICAgJy5vZ2cnOiA8T2dnRmlsZUljb24gLz4sXG4gICAgICAnLm9nYSc6IDxPZ2FGaWxlSWNvbiAvPixcbiAgICAgICcubXA0JzogPE1wNEZpbGVJY29uIC8+LFxuICAgICAgJy5tNGEnOiA8TTRhRmlsZUljb24gLz4sXG4gICAgfVxuXG4gICAgbGV0IGljb24gPSBJY29uQnlGaWxlVHlwZVtmaWxlLnR5cGVdXG5cbiAgICAvLyBTaSBlbCB0aXBvIGVzIGF1ZGlvL29nZyBvIGF1ZGlvL21wNCwgdXNhciBsYSBleHRlbnNpw7NuIHBhcmEgZGV0ZXJtaW5hciBlbCBpY29ub1xuICAgIGlmICgoZmlsZS50eXBlID09PSAnYXVkaW8vb2dnJyB8fCBmaWxlLnR5cGUgPT09ICdhdWRpby9tcDQnKSAmJiBmaWxlRXh0ZW5zaW9uKSB7XG4gICAgICBpY29uID0gZXh0ZW5zaW9uVG9JY29uW2ZpbGVFeHRlbnNpb25dIHx8IGljb25cbiAgICB9XG5cbiAgICBpZiAoIWljb24pIHtcbiAgICAgIGNvbnN0IGV4dGVuc2lvblRvTWltZVR5cGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICcudHh0JzogJ3RleHQvcGxhaW4nLFxuICAgICAgICAnLm1kJzogJ3RleHQveC1tYXJrZG93bicsXG4gICAgICAgICcuY3N2JzogJ3RleHQvY3N2JyxcbiAgICAgICAgJy5kb2MnOiAnYXBwbGljYXRpb24vbXN3b3JkJyxcbiAgICAgICAgJy5kb2N4JzogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyxcbiAgICAgICAgJy5wZGYnOiAnYXBwbGljYXRpb24vcGRmJyxcbiAgICAgICAgJy54bHN4JzogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbiAgICAgICAgJy54bHMnOiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyxcbiAgICAgICAgJy5mbGFjJzogJ2F1ZGlvL2ZsYWMnLFxuICAgICAgICAnLm00YSc6ICdhdWRpby9tNGEnLFxuICAgICAgICAnLm1wMyc6ICdhdWRpby9tcGVnJyxcbiAgICAgICAgJy5tcDQnOiAnYXVkaW8vbXA0JyxcbiAgICAgICAgJy5vZ2EnOiAnYXVkaW8vb2dhJyxcbiAgICAgICAgJy5vZ2cnOiAnYXVkaW8vb2dnJyxcbiAgICAgICAgJy53YXYnOiAnYXVkaW8vd2F2JyxcbiAgICAgICAgJy53ZWJtJzogJ2F1ZGlvL3dlYm0nLFxuICAgICAgfVxuICAgICAgY29uc3QgbWltZVR5cGVCeUV4dGVuc2lvbiA9IGV4dGVuc2lvblRvTWltZVR5cGVbZmlsZUV4dGVuc2lvbl1cbiAgICAgIGlmIChtaW1lVHlwZUJ5RXh0ZW5zaW9uKSB7XG4gICAgICAgIGljb24gPSBJY29uQnlGaWxlVHlwZVttaW1lVHlwZUJ5RXh0ZW5zaW9uXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWNvbiA9IDxBdHRhY2ggY29sb3I9XCJyZ2JhKDEzNSwgNjQsIDE5MSwgMSlcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBwcm9jZXNzZWRGaWxlID0gZmlsZVxuXG4gICAgLy8gU2kgZXMgdW5hIGltYWdlbiwgcHJlLXByb2Nlc2FybGEgcGFyYSBlbCBiYWNrZW5kXG4gICAgaWYgKGlzSW1hZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFByb2Nlc2FuZG8gaW1hZ2VuXG4gICAgICAgIHByb2Nlc3NlZEZpbGUgPSBhd2FpdCBwcmVwcm9jZXNzSW1hZ2VGb3JCYWNrZW5kKGZpbGUpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwcmUtcHJvY2VzYW5kbyBpbWFnZW46JywgZXJyb3IpXG4gICAgICAgIC8vIENvbnRpbnVhciBjb24gZWwgYXJjaGl2byBvcmlnaW5hbCBzaSBoYXkgZXJyb3JcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW1hZ2VVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpXG5cbiAgICAgIGljb24gPSA8SW1hZ2VQcmV2aWV3IHNyYz17aW1hZ2VVcmx9IGFsdD17ZmlsZS5uYW1lfSB3aWR0aD1cIjYzcHhcIiBoZWlnaHQ9XCI2M3B4XCIgYm9yZGVyUmFkaXVzPVwiNnB4XCIgLz5cbiAgICB9XG5cbiAgICBjb25zdCBuZXdBdHRhY2htZW50OiBBdHRhY2htZW50RmlsZSA9IHtcbiAgICAgIGZpbGU6IHByb2Nlc3NlZEZpbGUsXG4gICAgICBvcmlnaW5hbEZpbGU6IGlzSW1hZ2UgPyBmaWxlIDogdW5kZWZpbmVkLFxuICAgICAgaWQ6IGAke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKX1gLFxuICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgc2l6ZTogcHJvY2Vzc2VkRmlsZS5zaXplLFxuICAgICAgdHlwZTogcHJvY2Vzc2VkRmlsZS50eXBlLFxuICAgICAgaWNvbixcbiAgICB9XG5cbiAgICBzZXRBdHRhY2htZW50cyhwcmV2ID0+IFsuLi5wcmV2LCBuZXdBdHRhY2htZW50XSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQgPSAoZmlsZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBuZXdBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzLmZpbHRlcihhdHRhY2htZW50ID0+IGF0dGFjaG1lbnQuaWQgIT09IGZpbGVJZClcbiAgICBzZXRBdHRhY2htZW50cyhuZXdBdHRhY2htZW50cylcbiAgfVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuICBjb25zdCBkaXNjbGFpbWVyTWVzc2FnZSA9IGlzTUFJQVxuICAgID8gdCgnY2hhdC5mb290ZXIuZGlzY2xhaW1lcicsIHsgYWdlbnROYW1lOiB0KCdnbG9iYWxzLmJyYW5kTmFtZScpIH0pXG4gICAgOiB0KCdjaGF0LmZvb3Rlci5kaXNjbGFpbWVyQWdlbnQnKVxuXG4gIGNvbnN0IGlzRmFxSW50ZXJhY3Rpb25EaXNhYmxlZCA9IEJvb2xlYW4oZGlzYWJsZWQgfHwgaXNTdHJlYW1pbmcgfHwgaXNXcml0aW5nKVxuICBjb25zdCBzaG91bGRTaG93RmFxcyA9IHNob3dGYXFzICYmIHNlY3Rpb24gIT09ICd0YXNrJ1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZENoYXRGb290ZXI+XG4gICAgICB7aXNNQUlBICYmICFsb2FkaW5nTWVzc2FnZXMgJiYgKFxuICAgICAgICA8Q2hpcHNBbmRGYXFzUm93PlxuICAgICAgICAgIHshIWNoaXBJdGVtcy5sZW5ndGggJiYgPENoaXAgaXRlbXM9e2NoaXBJdGVtc30gLz59XG4gICAgICAgICAge3Nob3VsZFNob3dGYXFzICYmIDxDaGF0Rm9vdGVyRmFxcyBvblNlbGVjdEZhcT17aGFuZGxlU2VsZWN0RmFxfSBkaXNhYmxlZD17aXNGYXFJbnRlcmFjdGlvbkRpc2FibGVkfSAvPn1cbiAgICAgICAgPC9DaGlwc0FuZEZhcXNSb3c+XG4gICAgICApfVxuICAgICAgPE1BSUFJbnB1dFxuICAgICAgICBvblNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgY2xhc3NOYW1lPXtNT0RBTF9FTEVNRU5UU31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBwbGFjZWhvbGRlcj17YWdlbnQ/LmlucHV0X3BsYWNlaG9sZGVyIHx8IHQoJ2NoYXQuZm9vdGVyLnBsYWNlaG9sZGVyJyl9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgb25GaWxlQXR0YWNoPXtoYW5kbGVGaWxlQXR0YWNofVxuICAgICAgICBvbkRlbGV0ZUF0dGFjaG1lbnQ9e2hhbmRsZURlbGV0ZUF0dGFjaG1lbnR9XG4gICAgICAgIGF0dGFjaG1lbnRzPXthdHRhY2htZW50c1xuICAgICAgICAgIC5maWx0ZXIoYXR0ID0+ICEhYXR0LmZpbGUpXG4gICAgICAgICAgLm1hcChhdHQgPT4gKHtcbiAgICAgICAgICAgIGZpbGU6IGF0dC5maWxlISxcbiAgICAgICAgICAgIG9yaWdpbmFsRmlsZTogYXR0Lm9yaWdpbmFsRmlsZSxcbiAgICAgICAgICAgIGlkOiBhdHQuaWQsXG4gICAgICAgICAgICBuYW1lOiBhdHQubmFtZSxcbiAgICAgICAgICAgIHNpemU6IHR5cGVvZiBhdHQuc2l6ZSA9PT0gJ251bWJlcicgPyBhdHQuc2l6ZSA6IE51bWJlcihhdHQuc2l6ZSkgfHwgMCxcbiAgICAgICAgICAgIHR5cGU6IGF0dC50eXBlLFxuICAgICAgICAgICAgaWNvbjogYXR0Lmljb24sXG4gICAgICAgICAgfSkpfVxuICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgIGlzV3JpdGluZz17aXNXcml0aW5nfVxuICAgICAgICBvblN0b3BHZW5lcmF0aW9uPXtvblN0b3BHZW5lcmF0aW9ufVxuICAgICAgICBjaGF0SWQ9e2NoYXRJZCB8fCB1bmRlZmluZWR9XG4gICAgICAgIG5ld0NoYXRLZXk9e25ld0NoYXRLZXl9XG4gICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAvPlxuICAgICAgPENoYXREaXNjbGFpbWVyTWVzc2FnZSBtZXNzYWdlPXtkaXNjbGFpbWVyTWVzc2FnZX0gLz5cbiAgICA8L1N0eWxlZENoYXRGb290ZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBb0JBLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQ3ZFLFNBQVNDLE1B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
371
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsImNyZWF0ZVBvcnRhbCIsIkF0dGFjaCIsIlBsdXMiLCJNT0RBTF9FTEVNRU5UUyIsIkNoaXAiLCJNQUlBSW5wdXQiLCJDaGF0Rm9vdGVyRmFxcyIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJ1c2VDb250ZXh0UGluUG9wb3ZlciIsIlN0eWxlZENoYXRGb290ZXIiLCJDaGlwc0FuZEZhcXNSb3ciLCJDb250ZXh0QmFyTGVmdCIsIkFkZENvbnRleHRCdXR0b24iLCJDc3ZGaWxlSWNvbiIsIk1ERmlsZUljb24iLCJEb2NGaWxlSWNvbiIsIkRvY3hGaWxlSWNvbiIsIlRleHRGaWxlSWNvbiIsIlBkZkZpbGVJY29uIiwiSW1hZ2VGaWxlSWNvbiIsIlhsc3hGaWxlSWNvbiIsIlhsc0ZpbGVJY29uIiwiTXAzRmlsZUljb24iLCJXYXZGaWxlSWNvbiIsIkZsYWNGaWxlSWNvbiIsIk00YUZpbGVJY29uIiwiTXA0RmlsZUljb24iLCJPZ2FGaWxlSWNvbiIsIk9nZ0ZpbGVJY29uIiwiV2VibUZpbGVJY29uIiwiSW1hZ2VQcmV2aWV3IiwicHJlcHJvY2Vzc0ltYWdlRm9yQmFja2VuZCIsInZhbGlkYXRlSXNNYWlhIiwiQ2hhdERpc2NsYWltZXJNZXNzYWdlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkljb25CeUZpbGVUeXBlIiwiQ2hhdEZvb3RlciIsIl9yZWYiLCJvblNlbmRNZXNzYWdlIiwiaXRlbXMiLCJkaXNhYmxlZCIsImlzU3RyZWFtaW5nIiwiaXNXcml0aW5nIiwib25TdG9wR2VuZXJhdGlvbiIsImNoYXRJZCIsIm5ld0NoYXRLZXkiLCJfcmVmJHNob3dGYXFzIiwic2hvd0ZhcXMiLCJ0b29sdGlwWkluZGV4IiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0IiwiYWdlbnQiLCJjaGlwc1Byb2plY3QiLCJjbGllbnQiLCJ0YXNrIiwic2VjdGlvbiIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwic2V0Q2hpcHNQcm9qZWN0IiwiX3VzZVQiLCJ0IiwiZXZlbnQiLCJwaW5CdXR0b25SZWYiLCJpbnB1dFBvcG92ZXJBbmNob3JSZWYiLCJjb250ZXh0QmFyQW5jaG9yUmVmIiwiaXNPcmNoZXN0cmF0b3IiLCJ0eXBlIiwiX3VzZUNvbnRleHRQaW5Qb3BvdmVyIiwicG9wb3ZlckFuY2hvclJlZiIsInRvcEFuY2hvclJlZiIsInRyaWdnZXJSZWYiLCJ0b2dnbGVQaW4iLCJ0b2dnbGUiLCJwaW5Qb3BvdmVyTm9kZSIsInBvcG92ZXJOb2RlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiYXR0YWNobWVudHMiLCJzZXRBdHRhY2htZW50cyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibG9hZGluZ01lc3NhZ2VzIiwic2V0TG9hZGluZ01lc3NhZ2VzIiwicmVwb3J0ZWRFdmVudCIsImlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCIsImVudGl0eSIsInRlc3QiLCJuYW1lIiwiaGFuZGxlTG9hZGluZ01lc3NhZ2VzQ2hhbmdlIiwiZSIsImRldGFpbCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVTZXNzaW9uQ2hhbmdlIiwiX3VzZU1lbW8iLCJjaGlwSXRlbXMiLCJjaGlwVHlwZSIsInByb2plY3ROYW1lIiwiaGFuZGxlUmVtb3ZlQ29udGV4dCIsIm9uQ2hhbmdlIiwiY3VycmVudCIsInBtQWlUeXBlZFRleHQiLCJhZ2VudF90eXBlIiwiaGFuZGxlU2VuZE1lc3NhZ2UiLCJtZXNzYWdlIiwibmV3QXR0YWNobWVudHMiLCJtZW50aW9ucyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJmdWFJZCIsInNjSWQiLCJhaUNoYXRTZW5kIiwiYWdlbnRfaWQiLCJpZCIsImFnZW50X25hbWUiLCJoYW5kbGVTZWxlY3RGYXEiLCJ1bmRlZmluZWQiLCJoYW5kbGVGaWxlQXR0YWNoIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImZpbGUiLCJfZmlsZU5hbWVQYXJ0cyRwb3AiLCJmaWxlTmFtZVBhcnRzIiwiZmlsZUV4dGVuc2lvbiIsImlzSW1hZ2VCeUV4dGVuc2lvbiIsImlzSW1hZ2VCeU1pbWUiLCJpc0ltYWdlIiwiZXh0ZW5zaW9uVG9JY29uIiwiaWNvbiIsImV4dGVuc2lvblRvTWltZVR5cGUiLCJtaW1lVHlwZUJ5RXh0ZW5zaW9uIiwicHJvY2Vzc2VkRmlsZSIsImltYWdlVXJsIiwibmV3QXR0YWNobWVudCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJzcGxpdCIsImxlbmd0aCIsImNvbmNhdCIsInBvcCIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJzdGFydHNXaXRoIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsInNlbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJzcmMiLCJhbHQiLCJib3JkZXJSYWRpdXMiLCJvcmlnaW5hbEZpbGUiLCJEYXRlIiwibm93IiwiTWF0aCIsInJhbmRvbSIsInNpemUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJmaWxlSWQiLCJmaWx0ZXIiLCJhdHRhY2htZW50IiwiaXNNQUlBIiwiZGlzY2xhaW1lck1lc3NhZ2UiLCJhZ2VudE5hbWUiLCJpc0ZhcUludGVyYWN0aW9uRGlzYWJsZWQiLCJCb29sZWFuIiwic2hvdWxkU2hvd0ZhcXMiLCJjaGlsZHJlbiIsInJlZiIsIm9uUmVtb3ZlIiwicmVtb3ZlTGFiZWwiLCJkZWZhdWx0VmFsdWUiLCJ0b29sdGlwIiwib25DbGljayIsIm9uU2VsZWN0RmFxIiwiYm9keSIsImNsYXNzTmFtZSIsInBsYWNlaG9sZGVyIiwiaW5wdXRfcGxhY2Vob2xkZXIiLCJvbkZpbGVBdHRhY2giLCJvbkRlbGV0ZUF0dGFjaG1lbnQiLCJhdHQiLCJtYXAiLCJOdW1iZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG5pbXBvcnQgeyBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IEF0dGFjaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0F0dGFjaCdcbmltcG9ydCB7IFBsdXMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9QbHVzJ1xuaW1wb3J0IHsgTU9EQUxfRUxFTUVOVFMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNb2RhbC91c2VNb2RhbCdcblxuaW1wb3J0IHsgQ2hpcCB9IGZyb20gJy4uLy4uL2F0b21zL0NoaXAnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBNQUlBSW5wdXQgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBSW5wdXQnXG5pbXBvcnQgeyBDaGF0Rm9vdGVyRmFxcyB9IGZyb20gJy4vQ2hhdEZvb3RlckZhcXMnXG5cbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IHVzZUNvbnRleHRQaW5Qb3BvdmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ29udGV4dFBpblBvcG92ZXInXG5pbXBvcnQgeyBTdHlsZWRDaGF0Rm9vdGVyLCBDaGlwc0FuZEZhcXNSb3csIENvbnRleHRCYXJMZWZ0LCBBZGRDb250ZXh0QnV0dG9uIH0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQge1xuICBDc3ZGaWxlSWNvbixcbiAgTURGaWxlSWNvbixcbiAgRG9jRmlsZUljb24sXG4gIERvY3hGaWxlSWNvbixcbiAgVGV4dEZpbGVJY29uLFxuICBQZGZGaWxlSWNvbixcbiAgSW1hZ2VGaWxlSWNvbixcbiAgWGxzeEZpbGVJY29uLFxuICBYbHNGaWxlSWNvbixcbiAgTXAzRmlsZUljb24sXG4gIFdhdkZpbGVJY29uLFxuICBGbGFjRmlsZUljb24sXG4gIE00YUZpbGVJY29uLFxuICBNcDRGaWxlSWNvbixcbiAgT2dhRmlsZUljb24sXG4gIE9nZ0ZpbGVJY29uLFxuICBXZWJtRmlsZUljb24sXG59IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgSW1hZ2VQcmV2aWV3IH0gZnJvbSAnLi4vLi4vYXRvbXMvSW1hZ2VQcmV2aWV3L0ltYWdlUHJldmlldydcbmltcG9ydCB7IHByZXByb2Nlc3NJbWFnZUZvckJhY2tlbmQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9pbWFnZVByZXByb2Nlc3NvcidcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ2hhdERpc2NsYWltZXJNZXNzYWdlIH0gZnJvbSAnLi4vLi4vYXRvbXMvQ2hhdERpc2NsYWltZXJNZXNzYWdlJ1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50RmlsZSA9IHtcbiAgZmlsZTogRmlsZVxuICBvcmlnaW5hbEZpbGU/OiBGaWxlXG4gIHVybF90aHVtYm5haWw/OiBzdHJpbmdcbiAgdXJsX29yaWdpbmFsPzogc3RyaW5nXG4gIHVybF9maWxlPzogc3RyaW5nXG4gIHJvbGU/OiAndXNlcicgfCAnYXNzaXN0YW50J1xuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbiAgZXh0Pzogc3RyaW5nXG4gIHN0YXR1cz86ICdwZW5kaW5nJyB8ICdwcm9jZXNzaW5nJyB8ICdkb25lJyB8ICdmYWlsZWQnIHwgJ3N0YXJ0ZWQnXG59XG5cbnR5cGUgQ2hhdEZvb3RlclByb3BzID0ge1xuICBpdGVtcz86IHN0cmluZ1tdXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNXcml0aW5nPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgb25TdG9wR2VuZXJhdGlvbj86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgY2hhdElkPzogc3RyaW5nIHwgbnVsbFxuICBuZXdDaGF0S2V5PzogbnVtYmVyXG4gIC8qKiBTaSBlcyBmYWxzZSwgbm8gc2UgbXVlc3RyYSBlbCBib3TDs24gZGUgRkFRcy4gRGViZSBzZXIgdHJ1ZSBjdWFuZG8gY3VycmVudE9wdGlvbiA9PT0gY2hhdC4gRW4gc2VjdGlvbiB0YXNrIG5vIHNlIG11ZXN0cmEgYXVucXVlIHNlYSB0cnVlLiAqL1xuICBzaG93RmFxcz86IGJvb2xlYW5cbiAgdG9vbHRpcFpJbmRleD86IG51bWJlclxufVxuXG5leHBvcnQgY29uc3QgSWNvbkJ5RmlsZVR5cGUgPSB7XG4gICd0ZXh0L3BsYWluJzogPFRleHRGaWxlSWNvbiAvPixcbiAgJ3RleHQveC1tYXJrZG93bic6IDxNREZpbGVJY29uIC8+LFxuICAndGV4dC9jc3YnOiA8Q3N2RmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi9tc3dvcmQnOiA8RG9jRmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc6IDxEb2N4RmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi9wZGYnOiA8UGRmRmlsZUljb24gLz4sXG4gICdpbWFnZS9wbmcnOiA8SW1hZ2VGaWxlSWNvbiAvPixcbiAgJ2ltYWdlL2pwZWcnOiA8SW1hZ2VGaWxlSWNvbiAvPixcbiAgJ2ltYWdlL2pwZyc6IDxJbWFnZUZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnOiA8WGxzeEZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJzogPFhsc0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vbXBlZyc6IDxNcDNGaWxlSWNvbiAvPixcbiAgJ2F1ZGlvL2ZsYWMnOiA8RmxhY0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vbXA0JzogPE1wNEZpbGVJY29uIC8+LFxuICAnYXVkaW8vbTRhJzogPE00YUZpbGVJY29uIC8+LFxuICAnYXVkaW8vb2dnJzogPE9nZ0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vb2dhJzogPE9nYUZpbGVJY29uIC8+LFxuICAnYXVkaW8vd2F2JzogPFdhdkZpbGVJY29uIC8+LFxuICAnYXVkaW8vd2VibSc6IDxXZWJtRmlsZUljb24gLz4sXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGF0Rm9vdGVyKHtcbiAgb25TZW5kTWVzc2FnZSxcbiAgaXRlbXMsXG4gIGRpc2FibGVkLFxuICBpc1N0cmVhbWluZyxcbiAgaXNXcml0aW5nLFxuICBvblN0b3BHZW5lcmF0aW9uLFxuICBjaGF0SWQsXG4gIG5ld0NoYXRLZXksXG4gIHNob3dGYXFzID0gdHJ1ZSxcbiAgdG9vbHRpcFpJbmRleCxcbn06IENoYXRGb290ZXJQcm9wcykge1xuICBjb25zdCB7IHByb2plY3QsIGFnZW50LCBjaGlwc1Byb2plY3QsIGNsaWVudCwgdGFzaywgc2VjdGlvbiwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRUYXNrLCBzZXRDaGlwc1Byb2plY3QgfSA9XG4gICAgdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCBwaW5CdXR0b25SZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGlucHV0UG9wb3ZlckFuY2hvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgY29udGV4dEJhckFuY2hvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaXNPcmNoZXN0cmF0b3IgPSBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgY29uc3QgeyB0b2dnbGU6IHRvZ2dsZVBpbiwgcG9wb3Zlck5vZGU6IHBpblBvcG92ZXJOb2RlIH0gPSB1c2VDb250ZXh0UGluUG9wb3Zlcih7XG4gICAgcG9wb3ZlckFuY2hvclJlZjogaW5wdXRQb3BvdmVyQW5jaG9yUmVmLFxuICAgIHRvcEFuY2hvclJlZjogY29udGV4dEJhckFuY2hvclJlZixcbiAgICB0cmlnZ2VyUmVmOiBwaW5CdXR0b25SZWYsXG4gIH0pXG4gIGNvbnN0IFthdHRhY2htZW50cywgc2V0QXR0YWNobWVudHNdID0gdXNlU3RhdGU8QXR0YWNobWVudEZpbGVbXT4oW10pXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZXMsIHNldExvYWRpbmdNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCByZXBvcnRlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPSBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJyAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhZ2VudD8ubmFtZSB8fCAnJylcblxuICAvLyB1c2VFZmZlY3QgdG8gbGlzdGVuIGxvYWRpbmdNZXNzYWdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUxvYWRpbmdNZXNzYWdlc0NoYW5nZSA9IChlOiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgc2V0TG9hZGluZ01lc3NhZ2VzKGUuZGV0YWlsLmxvYWRpbmdNZXNzYWdlcylcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIGhhbmRsZUxvYWRpbmdNZXNzYWdlc0NoYW5nZSBhcyBFdmVudExpc3RlbmVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYXQtbG9hZGluZy1tZXNzYWdlcy1jaGFuZ2VkJywgaGFuZGxlTG9hZGluZ01lc3NhZ2VzQ2hhbmdlIGFzIEV2ZW50TGlzdGVuZXIpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBDbGVhciBhdHRhY2htZW50cyB3aGVuIHNlc3Npb24gY2hhbmdlcyAodXNlciBzd2l0Y2hlcyB0byBhIGRpZmZlcmVudCBjaGF0KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNlc3Npb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBzZXRBdHRhY2htZW50cyhbXSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgeyBjaGlwSXRlbXMsIGNoaXBUeXBlIH0gPSB1c2VNZW1vPHsgY2hpcEl0ZW1zOiBzdHJpbmdbXTsgY2hpcFR5cGU/OiBDb250ZXh0RW50aXR5VHlwZSB9PigoKSA9PiB7XG4gICAgaWYgKGl0ZW1zKSByZXR1cm4geyBjaGlwSXRlbXM6IGl0ZW1zIH1cblxuICAgIC8vIE1vbm8tY29udGV4dG86IHNvbG8gbGEgZW50aWRhZCBtw6FzIGVzcGVjw61maWNhIChzaW4gYW5pZGFyIGNsaWVudGUvcHJveWVjdG8vdGFyZWEpLlxuICAgIGlmIChhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIHtcbiAgICAgIGlmICh0YXNrPy5uYW1lKSByZXR1cm4geyBjaGlwSXRlbXM6IFt0YXNrLm5hbWVdLCBjaGlwVHlwZTogJ3Rhc2snIH1cbiAgICAgIGlmIChjaGlwc1Byb2plY3Q/LnByb2plY3ROYW1lKSByZXR1cm4geyBjaGlwSXRlbXM6IFtjaGlwc1Byb2plY3QucHJvamVjdE5hbWVdLCBjaGlwVHlwZTogJ3Byb2plY3QnIH1cbiAgICAgIGlmIChjbGllbnQ/Lm5hbWUpIHJldHVybiB7IGNoaXBJdGVtczogW2NsaWVudC5uYW1lXSwgY2hpcFR5cGU6ICdjbGllbnQnIH1cbiAgICAgIHJldHVybiB7IGNoaXBJdGVtczogW10gfVxuICAgIH1cblxuICAgIGlmIChhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JyAmJiBjbGllbnQ/Lm5hbWUpIHtcbiAgICAgIHJldHVybiB7IGNoaXBJdGVtczogW2NsaWVudC5uYW1lXSwgY2hpcFR5cGU6ICdjbGllbnQnIH1cbiAgICB9XG4gICAgaWYgKHRhc2s/Lm5hbWUpIHJldHVybiB7IGNoaXBJdGVtczogW3Rhc2submFtZV0sIGNoaXBUeXBlOiAndGFzaycgfVxuICAgIGlmIChjaGlwc1Byb2plY3Q/LnByb2plY3ROYW1lKSByZXR1cm4geyBjaGlwSXRlbXM6IFtjaGlwc1Byb2plY3QucHJvamVjdE5hbWVdLCBjaGlwVHlwZTogJ3Byb2plY3QnIH1cbiAgICBpZiAocHJvamVjdD8ubmFtZSkgcmV0dXJuIHsgY2hpcEl0ZW1zOiBbcHJvamVjdC5uYW1lXSwgY2hpcFR5cGU6ICdwcm9qZWN0JyB9XG5cbiAgICByZXR1cm4geyBjaGlwSXRlbXM6IFtdIH1cbiAgfSwgW2l0ZW1zLCBwcm9qZWN0LCBjaGlwc1Byb2plY3QsIGFnZW50Py5lbnRpdHksIGFnZW50Py50eXBlLCBjbGllbnQsIHRhc2s/Lm5hbWVdKVxuXG4gIC8vIFF1aXRhciBlbCBwaW4g4oeSIG1vZG8gZ2xvYmFsLCBzaW4gcmVkaXJlY3QgKGVsIG9ycXVlc3RhZG9yIG5vIHBhc2EgcG9yIGVsIGdhdGUgZGUgc2VsZWN0b3JlcykuIFJGQyDCpzguXG4gIGNvbnN0IGhhbmRsZVJlbW92ZUNvbnRleHQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2V0VGFzayhudWxsKVxuICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICB9LCBbc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRUYXNrLCBzZXRDaGlwc1Byb2plY3RdKVxuXG4gIGNvbnN0IG9uQ2hhbmdlID0gKCkgPT4ge1xuICAgIGlmIChyZXBvcnRlZEV2ZW50LmN1cnJlbnQpIHJldHVyblxuICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0LCB7XG4gICAgICBhZ2VudF90eXBlOiBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPyAnbWFya2V0cGxhY2UnIDogYWdlbnQ/LnR5cGUsXG4gICAgfSlcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgbmV3QXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBmdWFJZD86IHN0cmluZyxcbiAgICBzY0lkPzogc3RyaW5nXG4gICkgPT4ge1xuICAgIGV2ZW50KEVWRU5UUy5haUNoYXRTZW5kLCB7XG4gICAgICBhZ2VudF90eXBlOiBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPyAnbWFya2V0cGxhY2UnIDogYWdlbnQ/LnR5cGUsXG4gICAgICBhZ2VudF9pZDogYWdlbnQ/LmlkLFxuICAgICAgYWdlbnRfbmFtZTogYWdlbnQ/Lm5hbWUsXG4gICAgfSlcbiAgICBvblNlbmRNZXNzYWdlKG1lc3NhZ2UsIG5ld0F0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICBzZXRBdHRhY2htZW50cyhbXSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEZhcSA9IChtZXNzYWdlOiBzdHJpbmcsIGZhcUlkOiBzdHJpbmcpID0+IHtcbiAgICBvblNlbmRNZXNzYWdlKG1lc3NhZ2UsIHVuZGVmaW5lZCwgZmFxSWQsIHVuZGVmaW5lZClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVBdHRhY2ggPSBhc3luYyAoZmlsZTogRmlsZSkgPT4ge1xuICAgIGNvbnN0IGZpbGVOYW1lUGFydHMgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKVxuICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlTmFtZVBhcnRzLmxlbmd0aCA+IDEgPyBgLiR7ZmlsZU5hbWVQYXJ0cy5wb3AoKT8udG9Mb3dlckNhc2UoKX1gIDogJydcbiAgICBjb25zdCBpc0ltYWdlQnlFeHRlbnNpb24gPSBbJy5wbmcnLCAnLmpwZycsICcuanBlZyddLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pXG4gICAgY29uc3QgaXNJbWFnZUJ5TWltZSA9IGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKVxuICAgIGNvbnN0IGlzSW1hZ2UgPSBpc0ltYWdlQnlNaW1lICYmIGlzSW1hZ2VCeUV4dGVuc2lvblxuICAgIC8vIE1hcGVvIGRlIGV4dGVuc2nDs24gYSBpY29ubyBkaXJlY3RvIHBhcmEgY2Fzb3MgZXNwZWNpYWxlcyAoYXVkaW8vb2dnIHkgYXVkaW8vbXA0KVxuICAgIGNvbnN0IGV4dGVuc2lvblRvSWNvbjogUmVjb3JkPHN0cmluZywgUmVhY3ROb2RlPiA9IHtcbiAgICAgICcub2dnJzogPE9nZ0ZpbGVJY29uIC8+LFxuICAgICAgJy5vZ2EnOiA8T2dhRmlsZUljb24gLz4sXG4gICAgICAnLm1wNCc6IDxNcDRGaWxlSWNvbiAvPixcbiAgICAgICcubTRhJzogPE00YUZpbGVJY29uIC8+LFxuICAgIH1cblxuICAgIGxldCBpY29uID0gSWNvbkJ5RmlsZVR5cGVbZmlsZS50eXBlXVxuXG4gICAgLy8gU2kgZWwgdGlwbyBlcyBhdWRpby9vZ2cgbyBhdWRpby9tcDQsIHVzYXIgbGEgZXh0ZW5zacOzbiBwYXJhIGRldGVybWluYXIgZWwgaWNvbm9cbiAgICBpZiAoKGZpbGUudHlwZSA9PT0gJ2F1ZGlvL29nZycgfHwgZmlsZS50eXBlID09PSAnYXVkaW8vbXA0JykgJiYgZmlsZUV4dGVuc2lvbikge1xuICAgICAgaWNvbiA9IGV4dGVuc2lvblRvSWNvbltmaWxlRXh0ZW5zaW9uXSB8fCBpY29uXG4gICAgfVxuXG4gICAgaWYgKCFpY29uKSB7XG4gICAgICBjb25zdCBleHRlbnNpb25Ub01pbWVUeXBlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAnLnR4dCc6ICd0ZXh0L3BsYWluJyxcbiAgICAgICAgJy5tZCc6ICd0ZXh0L3gtbWFya2Rvd24nLFxuICAgICAgICAnLmNzdic6ICd0ZXh0L2NzdicsXG4gICAgICAgICcuZG9jJzogJ2FwcGxpY2F0aW9uL21zd29yZCcsXG4gICAgICAgICcuZG9jeCc6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsXG4gICAgICAgICcucGRmJzogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICcueGxzeCc6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gICAgICAgICcueGxzJzogJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcsXG4gICAgICAgICcuZmxhYyc6ICdhdWRpby9mbGFjJyxcbiAgICAgICAgJy5tNGEnOiAnYXVkaW8vbTRhJyxcbiAgICAgICAgJy5tcDMnOiAnYXVkaW8vbXBlZycsXG4gICAgICAgICcubXA0JzogJ2F1ZGlvL21wNCcsXG4gICAgICAgICcub2dhJzogJ2F1ZGlvL29nYScsXG4gICAgICAgICcub2dnJzogJ2F1ZGlvL29nZycsXG4gICAgICAgICcud2F2JzogJ2F1ZGlvL3dhdicsXG4gICAgICAgICcud2VibSc6ICdhdWRpby93ZWJtJyxcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbWVUeXBlQnlFeHRlbnNpb24gPSBleHRlbnNpb25Ub01pbWVUeXBlW2ZpbGVFeHRlbnNpb25dXG4gICAgICBpZiAobWltZVR5cGVCeUV4dGVuc2lvbikge1xuICAgICAgICBpY29uID0gSWNvbkJ5RmlsZVR5cGVbbWltZVR5cGVCeUV4dGVuc2lvbl1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGljb24gPSA8QXR0YWNoIGNvbG9yPVwicmdiYSgxMzUsIDY0LCAxOTEsIDEpXCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcHJvY2Vzc2VkRmlsZSA9IGZpbGVcblxuICAgIC8vIFNpIGVzIHVuYSBpbWFnZW4sIHByZS1wcm9jZXNhcmxhIHBhcmEgZWwgYmFja2VuZFxuICAgIGlmIChpc0ltYWdlKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBQcm9jZXNhbmRvIGltYWdlblxuICAgICAgICBwcm9jZXNzZWRGaWxlID0gYXdhaXQgcHJlcHJvY2Vzc0ltYWdlRm9yQmFja2VuZChmaWxlKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcHJlLXByb2Nlc2FuZG8gaW1hZ2VuOicsIGVycm9yKVxuICAgICAgICAvLyBDb250aW51YXIgY29uIGVsIGFyY2hpdm8gb3JpZ2luYWwgc2kgaGF5IGVycm9yXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGltYWdlVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKVxuXG4gICAgICBpY29uID0gPEltYWdlUHJldmlldyBzcmM9e2ltYWdlVXJsfSBhbHQ9e2ZpbGUubmFtZX0gd2lkdGg9XCI2M3B4XCIgaGVpZ2h0PVwiNjNweFwiIGJvcmRlclJhZGl1cz1cIjZweFwiIC8+XG4gICAgfVxuXG4gICAgY29uc3QgbmV3QXR0YWNobWVudDogQXR0YWNobWVudEZpbGUgPSB7XG4gICAgICBmaWxlOiBwcm9jZXNzZWRGaWxlLFxuICAgICAgb3JpZ2luYWxGaWxlOiBpc0ltYWdlID8gZmlsZSA6IHVuZGVmaW5lZCxcbiAgICAgIGlkOiBgJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCl9YCxcbiAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgIHNpemU6IHByb2Nlc3NlZEZpbGUuc2l6ZSxcbiAgICAgIHR5cGU6IHByb2Nlc3NlZEZpbGUudHlwZSxcbiAgICAgIGljb24sXG4gICAgfVxuXG4gICAgc2V0QXR0YWNobWVudHMocHJldiA9PiBbLi4ucHJldiwgbmV3QXR0YWNobWVudF0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVEZWxldGVBdHRhY2htZW50ID0gKGZpbGVJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbmV3QXR0YWNobWVudHMgPSBhdHRhY2htZW50cy5maWx0ZXIoYXR0YWNobWVudCA9PiBhdHRhY2htZW50LmlkICE9PSBmaWxlSWQpXG4gICAgc2V0QXR0YWNobWVudHMobmV3QXR0YWNobWVudHMpXG4gIH1cblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcbiAgY29uc3QgZGlzY2xhaW1lck1lc3NhZ2UgPSBpc01BSUFcbiAgICA/IHQoJ2NoYXQuZm9vdGVyLmRpc2NsYWltZXInLCB7IGFnZW50TmFtZTogdCgnZ2xvYmFscy5icmFuZE5hbWUnKSB9KVxuICAgIDogdCgnY2hhdC5mb290ZXIuZGlzY2xhaW1lckFnZW50JylcblxuICBjb25zdCBpc0ZhcUludGVyYWN0aW9uRGlzYWJsZWQgPSBCb29sZWFuKGRpc2FibGVkIHx8IGlzU3RyZWFtaW5nIHx8IGlzV3JpdGluZylcbiAgY29uc3Qgc2hvdWxkU2hvd0ZhcXMgPSBzaG93RmFxcyAmJiBzZWN0aW9uICE9PSAndGFzaydcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRDaGF0Rm9vdGVyPlxuICAgICAge2lzTUFJQSAmJiAhbG9hZGluZ01lc3NhZ2VzICYmIChcbiAgICAgICAgPENoaXBzQW5kRmFxc1JvdyByZWY9e2NvbnRleHRCYXJBbmNob3JSZWZ9PlxuICAgICAgICAgIDxDb250ZXh0QmFyTGVmdD5cbiAgICAgICAgICAgIHshIWNoaXBJdGVtcy5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8Q2hpcFxuICAgICAgICAgICAgICAgIGl0ZW1zPXtjaGlwSXRlbXN9XG4gICAgICAgICAgICAgICAgdHlwZT17Y2hpcFR5cGV9XG4gICAgICAgICAgICAgICAgb25SZW1vdmU9e2lzT3JjaGVzdHJhdG9yID8gaGFuZGxlUmVtb3ZlQ29udGV4dCA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICByZW1vdmVMYWJlbD17dCgnY29udGV4dFBpbi5yZW1vdmUnLCB7IGRlZmF1bHRWYWx1ZTogJ1F1aXRhciBjb250ZXh0bycgfSl9XG4gICAgICAgICAgICAgICAgdG9vbHRpcD17aXNPcmNoZXN0cmF0b3IgPyB0KCdjaGF0LmFjdGl2aXR5LmR5bmFtaWNDb250ZXh0VG9vbHRpcCcpIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2lzT3JjaGVzdHJhdG9yICYmIChcbiAgICAgICAgICAgICAgPEFkZENvbnRleHRCdXR0b24gcmVmPXtwaW5CdXR0b25SZWZ9IHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXt0b2dnbGVQaW59PlxuICAgICAgICAgICAgICAgIDxQbHVzIGNvbG9yPVwiY3VycmVudENvbG9yXCIgd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSAvPlxuICAgICAgICAgICAgICAgIHshY2hpcEl0ZW1zLmxlbmd0aCAmJiA8c3Bhbj57dCgnY29udGV4dFBpbi5hZGRDb250ZXh0JywgeyBkZWZhdWx0VmFsdWU6ICdDb250ZXh0bycgfSl9PC9zcGFuPn1cbiAgICAgICAgICAgICAgPC9BZGRDb250ZXh0QnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0NvbnRleHRCYXJMZWZ0PlxuICAgICAgICAgIHtzaG91bGRTaG93RmFxcyAmJiA8Q2hhdEZvb3RlckZhcXMgb25TZWxlY3RGYXE9e2hhbmRsZVNlbGVjdEZhcX0gZGlzYWJsZWQ9e2lzRmFxSW50ZXJhY3Rpb25EaXNhYmxlZH0gLz59XG4gICAgICAgIDwvQ2hpcHNBbmRGYXFzUm93PlxuICAgICAgKX1cbiAgICAgIHtwaW5Qb3BvdmVyTm9kZSAmJiBjcmVhdGVQb3J0YWwocGluUG9wb3Zlck5vZGUsIGRvY3VtZW50LmJvZHkpfVxuICAgICAgPE1BSUFJbnB1dFxuICAgICAgICBwb3BvdmVyQW5jaG9yUmVmPXtpbnB1dFBvcG92ZXJBbmNob3JSZWZ9XG4gICAgICAgIG9uU2VuZE1lc3NhZ2U9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICBjbGFzc05hbWU9e01PREFMX0VMRU1FTlRTfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIHBsYWNlaG9sZGVyPXthZ2VudD8uaW5wdXRfcGxhY2Vob2xkZXIgfHwgdCgnY2hhdC5mb290ZXIucGxhY2Vob2xkZXInKX1cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICBvbkZpbGVBdHRhY2g9e2hhbmRsZUZpbGVBdHRhY2h9XG4gICAgICAgIG9uRGVsZXRlQXR0YWNobWVudD17aGFuZGxlRGVsZXRlQXR0YWNobWVudH1cbiAgICAgICAgYXR0YWNobWVudHM9e2F0dGFjaG1lbnRzXG4gICAgICAgICAgLmZpbHRlcihhdHQgPT4gISFhdHQuZmlsZSlcbiAgICAgICAgICAubWFwKGF0dCA9PiAoe1xuICAgICAgICAgICAgZmlsZTogYXR0LmZpbGUhLFxuICAgICAgICAgICAgb3JpZ2luYWxGaWxlOiBhdHQub3JpZ2luYWxGaWxlLFxuICAgICAgICAgICAgaWQ6IGF0dC5pZCxcbiAgICAgICAgICAgIG5hbWU6IGF0dC5uYW1lLFxuICAgICAgICAgICAgc2l6ZTogdHlwZW9mIGF0dC5zaXplID09PSAnbnVtYmVyJyA/IGF0dC5zaXplIDogTnVtYmVyKGF0dC5zaXplKSB8fCAwLFxuICAgICAgICAgICAgdHlwZTogYXR0LnR5cGUsXG4gICAgICAgICAgICBpY29uOiBhdHQuaWNvbixcbiAgICAgICAgICB9KSl9XG4gICAgICAgIGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ31cbiAgICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICAgIG9uU3RvcEdlbmVyYXRpb249e29uU3RvcEdlbmVyYXRpb259XG4gICAgICAgIGNoYXRJZD17Y2hhdElkIHx8IHVuZGVmaW5lZH1cbiAgICAgICAgbmV3Q2hhdEtleT17bmV3Q2hhdEtleX1cbiAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgIC8+XG4gICAgICA8Q2hhdERpc2NsYWltZXJNZXNzYWdlIG1lc3NhZ2U9e2Rpc2NsYWltZXJNZXNzYWdlfSAvPlxuICAgIDwvU3R5bGVkQ2hhdEZvb3Rlcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFvQkEsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxTQUFTLFFBQVEsT0FBTztBQUNwRixTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxNQUFNLFFBQVEseUNBQXlDO0FBQ2hFLFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBU0MsY0FBYyxRQUFRLGtDQUFrQztBQUVqRSxTQUFTQyxJQUFJLFFBQVEsa0JBQWtCO0FBQ3ZDO0FBQ0EsU0FBU0MsU0FBUyxRQUFRLHVCQUF1QjtBQUNqRCxTQUFTQyxjQUFjLFFBQVEsa0JBQWtCO0FBRWpELFNBQVNDLGdCQUFnQixRQUFRLGlDQUFpQztBQUNsRSxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUUxRDtBQUNBLFNBQVNDLG9CQUFvQixRQUFRLHFDQUFxQztBQUMxRSxTQUFTQyxnQkFBZ0IsRUFBRUMsZUFBZSxFQUFFQyxjQUFjLEVBQUVDLGdCQUFnQixRQUFRLFVBQVU7QUFDOUYsU0FDRUMsV0FBVyxFQUNYQyxVQUFVLEVBQ1ZDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsYUFBYSxFQUNiQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsV0FBVyxFQUNYQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxXQUFXLEVBQ1hDLFdBQVcsRUFDWEMsV0FBVyxFQUNYQyxZQUFZLFFBQ1AsbUJBQW1CO0FBQzFCLFNBQVNDLFlBQVksUUFBUSx1Q0FBdUM7QUFDcEUsU0FBU0MseUJBQXlCLFFBQVEsa0NBQWtDO0FBQzVFLFNBQVNDLGNBQWMsUUFBUSx3Q0FBd0M7QUFFdkUsU0FBU0MscUJBQXFCLFFBQVEsbUNBQW1DO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQTtBQXdDekUsT0FBTyxJQUFNQyxjQUFjLEdBQUc7RUFDNUIsWUFBWSxlQUFFSCxJQUFBLENBQUNsQixZQUFZLElBQUUsQ0FBQztFQUM5QixpQkFBaUIsZUFBRWtCLElBQUEsQ0FBQ3JCLFVBQVUsSUFBRSxDQUFDO0VBQ2pDLFVBQVUsZUFBRXFCLElBQUEsQ0FBQ3RCLFdBQVcsSUFBRSxDQUFDO0VBQzNCLG9CQUFvQixlQUFFc0IsSUFBQSxDQUFDcEIsV0FBVyxJQUFFLENBQUM7RUFDckMseUVBQXlFLGVBQUVvQixJQUFBLENBQUNuQixZQUFZLElBQUUsQ0FBQztFQUMzRixpQkFBaUIsZUFBRW1CLElBQUEsQ0FBQ2pCLFdBQVcsSUFBRSxDQUFDO0VBQ2xDLFdBQVcsZUFBRWlCLElBQUEsQ0FBQ2hCLGFBQWEsSUFBRSxDQUFDO0VBQzlCLFlBQVksZUFBRWdCLElBQUEsQ0FBQ2hCLGFBQWEsSUFBRSxDQUFDO0VBQy9CLFdBQVcsZUFBRWdCLElBQUEsQ0FBQ2hCLGFBQWEsSUFBRSxDQUFDO0VBQzlCLG1FQUFtRSxlQUFFZ0IsSUFBQSxDQUFDZixZQUFZLElBQUUsQ0FBQztFQUNyRiwwQkFBMEIsZUFBRWUsSUFBQSxDQUFDZCxXQUFXLElBQUUsQ0FBQztFQUMzQyxZQUFZLGVBQUVjLElBQUEsQ0FBQ2IsV0FBVyxJQUFFLENBQUM7RUFDN0IsWUFBWSxlQUFFYSxJQUFBLENBQUNYLFlBQVksSUFBRSxDQUFDO0VBQzlCLFdBQVcsZUFBRVcsSUFBQSxDQUFDVCxXQUFXLElBQUUsQ0FBQztFQUM1QixXQUFXLGVBQUVTLElBQUEsQ0FBQ1YsV0FBVyxJQUFFLENBQUM7RUFDNUIsV0FBVyxlQUFFVSxJQUFBLENBQUNQLFdBQVcsSUFBRSxDQUFDO0VBQzVCLFdBQVcsZUFBRU8sSUFBQSxDQUFDUixXQUFXLElBQUUsQ0FBQztFQUM1QixXQUFXLGVBQUVRLElBQUEsQ0FBQ1osV0FBVyxJQUFFLENBQUM7RUFDNUIsWUFBWSxlQUFFWSxJQUFBLENBQUNOLFlBQVksSUFBRTtBQUMvQixDQUFDO0FBRUQsT0FBTyxTQUFTVSxVQUFVQSxDQUFBQyxJQUFBLEVBV047RUFBQSxJQVZsQkMsYUFBYSxHQUFBRCxJQUFBLENBQWJDLGFBQWE7SUFDYkMsS0FBSyxHQUFBRixJQUFBLENBQUxFLEtBQUs7SUFDTEMsUUFBUSxHQUFBSCxJQUFBLENBQVJHLFFBQVE7SUFDUkMsV0FBVyxHQUFBSixJQUFBLENBQVhJLFdBQVc7SUFDWEMsU0FBUyxHQUFBTCxJQUFBLENBQVRLLFNBQVM7SUFDVEMsZ0JBQWdCLEdBQUFOLElBQUEsQ0FBaEJNLGdCQUFnQjtJQUNoQkMsTUFBTSxHQUFBUCxJQUFBLENBQU5PLE1BQU07SUFDTkMsVUFBVSxHQUFBUixJQUFBLENBQVZRLFVBQVU7SUFBQUMsYUFBQSxHQUFBVCxJQUFBLENBQ1ZVLFFBQVE7SUFBUkEsUUFBUSxHQUFBRCxhQUFBLGNBQUcsSUFBSSxHQUFBQSxhQUFBO0lBQ2ZFLGFBQWEsR0FBQVgsSUFBQSxDQUFiVyxhQUFhO0VBRWIsSUFBQUMsaUJBQUEsR0FDRWhELGdCQUFnQixDQUFDLENBQUM7SUFEWmlELE9BQU8sR0FBQUQsaUJBQUEsQ0FBUEMsT0FBTztJQUFFQyxLQUFLLEdBQUFGLGlCQUFBLENBQUxFLEtBQUs7SUFBRUMsWUFBWSxHQUFBSCxpQkFBQSxDQUFaRyxZQUFZO0lBQUVDLE1BQU0sR0FBQUosaUJBQUEsQ0FBTkksTUFBTTtJQUFFQyxJQUFJLEdBQUFMLGlCQUFBLENBQUpLLElBQUk7SUFBRUMsT0FBTyxHQUFBTixpQkFBQSxDQUFQTSxPQUFPO0lBQUVDLFVBQVUsR0FBQVAsaUJBQUEsQ0FBVk8sVUFBVTtJQUFFQyxTQUFTLEdBQUFSLGlCQUFBLENBQVRRLFNBQVM7SUFBRUMsT0FBTyxHQUFBVCxpQkFBQSxDQUFQUyxPQUFPO0lBQUVDLGVBQWUsR0FBQVYsaUJBQUEsQ0FBZlUsZUFBZTtFQUU1RyxJQUFBQyxLQUFBLEdBQWMxRCxJQUFJLENBQUMsQ0FBQztJQUFaMkQsQ0FBQyxHQUFBRCxLQUFBLENBQURDLENBQUM7RUFDVCxJQUFNQyxLQUFLLEdBQUcxRCxRQUFRLENBQUMsQ0FBQztFQUN4QixJQUFNMkQsWUFBWSxHQUFHeEUsTUFBTSxDQUFvQixJQUFJLENBQUM7RUFDcEQsSUFBTXlFLHFCQUFxQixHQUFHekUsTUFBTSxDQUFpQixJQUFJLENBQUM7RUFDMUQsSUFBTTBFLG1CQUFtQixHQUFHMUUsTUFBTSxDQUFpQixJQUFJLENBQUM7RUFDeEQsSUFBTTJFLGNBQWMsR0FBRyxDQUFBZixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWdCLElBQUksTUFBSyxjQUFjO0VBQ3JELElBQUFDLHFCQUFBLEdBQTJEL0Qsb0JBQW9CLENBQUM7TUFDOUVnRSxnQkFBZ0IsRUFBRUwscUJBQXFCO01BQ3ZDTSxZQUFZLEVBQUVMLG1CQUFtQjtNQUNqQ00sVUFBVSxFQUFFUjtJQUNkLENBQUMsQ0FBQztJQUpjUyxTQUFTLEdBQUFKLHFCQUFBLENBQWpCSyxNQUFNO0lBQTBCQyxjQUFjLEdBQUFOLHFCQUFBLENBQTNCTyxXQUFXO0VBS3RDLElBQUFDLFNBQUEsR0FBc0NwRixRQUFRLENBQW1CLEVBQUUsQ0FBQztJQUFBcUYsVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBN0RHLFdBQVcsR0FBQUYsVUFBQTtJQUFFRyxjQUFjLEdBQUFILFVBQUE7RUFDbEMsSUFBQUksVUFBQSxHQUE4Q3pGLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQTBGLFVBQUEsR0FBQUosY0FBQSxDQUFBRyxVQUFBO0lBQXRERSxlQUFlLEdBQUFELFVBQUE7SUFBRUUsa0JBQWtCLEdBQUFGLFVBQUE7RUFFMUMsSUFBTUcsYUFBYSxHQUFHOUYsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNuQyxJQUFNK0Ysd0JBQXdCLEdBQUcsQ0FBQW5DLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFb0MsTUFBTSxNQUFLLFFBQVEsSUFBSSx3QkFBd0IsQ0FBQ0MsSUFBSSxDQUFDLENBQUFyQyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXNDLElBQUksS0FBSSxFQUFFLENBQUM7O0VBRS9HO0VBQ0FoRyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQU1pRywyQkFBMkIsR0FBRyxTQUE5QkEsMkJBQTJCQSxDQUFJQyxDQUFjLEVBQUs7TUFDdERQLGtCQUFrQixDQUFDTyxDQUFDLENBQUNDLE1BQU0sQ0FBQ1QsZUFBZSxDQUFDO0lBQzlDLENBQUM7SUFFRFUsUUFBUSxDQUFDQyxnQkFBZ0IsQ0FBQywrQkFBK0IsRUFBRUosMkJBQTRDLENBQUM7SUFFeEcsT0FBTyxZQUFNO01BQ1hHLFFBQVEsQ0FBQ0UsbUJBQW1CLENBQUMsK0JBQStCLEVBQUVMLDJCQUE0QyxDQUFDO0lBQzdHLENBQUM7RUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDOztFQUVOO0VBQ0FqRyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQU11RyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFBLEVBQVM7TUFDaENoQixjQUFjLENBQUMsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRGEsUUFBUSxDQUFDQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsRUFBRUUsbUJBQW1CLENBQUM7SUFFdEUsT0FBTyxZQUFNO01BQ1hILFFBQVEsQ0FBQ0UsbUJBQW1CLENBQUMsc0JBQXNCLEVBQUVDLG1CQUFtQixDQUFDO0lBQzNFLENBQUM7RUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sSUFBQUMsUUFBQSxHQUFnQzNHLE9BQU8sQ0FBd0QsWUFBTTtNQUNuRyxJQUFJaUQsS0FBSyxFQUFFLE9BQU87UUFBRTJELFNBQVMsRUFBRTNEO01BQU0sQ0FBQzs7TUFFdEM7TUFDQSxJQUFJLENBQUFZLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFZ0IsSUFBSSxNQUFLLGNBQWMsRUFBRTtRQUNsQyxJQUFJYixJQUFJLGFBQUpBLElBQUksZUFBSkEsSUFBSSxDQUFFbUMsSUFBSSxFQUFFLE9BQU87VUFBRVMsU0FBUyxFQUFFLENBQUM1QyxJQUFJLENBQUNtQyxJQUFJLENBQUM7VUFBRVUsUUFBUSxFQUFFO1FBQU8sQ0FBQztRQUNuRSxJQUFJL0MsWUFBWSxhQUFaQSxZQUFZLGVBQVpBLFlBQVksQ0FBRWdELFdBQVcsRUFBRSxPQUFPO1VBQUVGLFNBQVMsRUFBRSxDQUFDOUMsWUFBWSxDQUFDZ0QsV0FBVyxDQUFDO1VBQUVELFFBQVEsRUFBRTtRQUFVLENBQUM7UUFDcEcsSUFBSTlDLE1BQU0sYUFBTkEsTUFBTSxlQUFOQSxNQUFNLENBQUVvQyxJQUFJLEVBQUUsT0FBTztVQUFFUyxTQUFTLEVBQUUsQ0FBQzdDLE1BQU0sQ0FBQ29DLElBQUksQ0FBQztVQUFFVSxRQUFRLEVBQUU7UUFBUyxDQUFDO1FBQ3pFLE9BQU87VUFBRUQsU0FBUyxFQUFFO1FBQUcsQ0FBQztNQUMxQjtNQUVBLElBQUksQ0FBQS9DLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFb0MsTUFBTSxNQUFLLFFBQVEsSUFBSWxDLE1BQU0sYUFBTkEsTUFBTSxlQUFOQSxNQUFNLENBQUVvQyxJQUFJLEVBQUU7UUFDOUMsT0FBTztVQUFFUyxTQUFTLEVBQUUsQ0FBQzdDLE1BQU0sQ0FBQ29DLElBQUksQ0FBQztVQUFFVSxRQUFRLEVBQUU7UUFBUyxDQUFDO01BQ3pEO01BQ0EsSUFBSTdDLElBQUksYUFBSkEsSUFBSSxlQUFKQSxJQUFJLENBQUVtQyxJQUFJLEVBQUUsT0FBTztRQUFFUyxTQUFTLEVBQUUsQ0FBQzVDLElBQUksQ0FBQ21DLElBQUksQ0FBQztRQUFFVSxRQUFRLEVBQUU7TUFBTyxDQUFDO01BQ25FLElBQUkvQyxZQUFZLGFBQVpBLFlBQVksZUFBWkEsWUFBWSxDQUFFZ0QsV0FBVyxFQUFFLE9BQU87UUFBRUYsU0FBUyxFQUFFLENBQUM5QyxZQUFZLENBQUNnRCxXQUFXLENBQUM7UUFBRUQsUUFBUSxFQUFFO01BQVUsQ0FBQztNQUNwRyxJQUFJakQsT0FBTyxhQUFQQSxPQUFPLGVBQVBBLE9BQU8sQ0FBRXVDLElBQUksRUFBRSxPQUFPO1FBQUVTLFNBQVMsRUFBRSxDQUFDaEQsT0FBTyxDQUFDdUMsSUFBSSxDQUFDO1FBQUVVLFFBQVEsRUFBRTtNQUFVLENBQUM7TUFFNUUsT0FBTztRQUFFRCxTQUFTLEVBQUU7TUFBRyxDQUFDO0lBQzFCLENBQUMsRUFBRSxDQUFDM0QsS0FBSyxFQUFFVyxPQUFPLEVBQUVFLFlBQVksRUFBRUQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVvQyxNQUFNLEVBQUVwQyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWdCLElBQUksRUFBRWQsTUFBTSxFQUFFQyxJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRW1DLElBQUksQ0FBQyxDQUFDO0lBbkIxRVMsU0FBUyxHQUFBRCxRQUFBLENBQVRDLFNBQVM7SUFBRUMsUUFBUSxHQUFBRixRQUFBLENBQVJFLFFBQVE7O0VBcUIzQjtFQUNBLElBQU1FLG1CQUFtQixHQUFHaEgsV0FBVyxDQUFDLFlBQU07SUFDNUNtRSxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ2hCQyxTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFHLElBQUksQ0FBQztJQUNqQkMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUNiQyxlQUFlLENBQUMsSUFBSSxDQUFDO0VBQ3ZCLENBQUMsRUFBRSxDQUFDSCxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxlQUFlLENBQUMsQ0FBQztFQUVyRCxJQUFNMkMsUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUEsRUFBUztJQUNyQixJQUFJakIsYUFBYSxDQUFDa0IsT0FBTyxFQUFFO0lBQzNCekMsS0FBSyxDQUFDM0QsTUFBTSxDQUFDcUcsYUFBYSxFQUFFO01BQzFCQyxVQUFVLEVBQUVuQix3QkFBd0IsR0FBRyxhQUFhLEdBQUduQyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWdCO0lBQ2hFLENBQUMsQ0FBQztJQUNGa0IsYUFBYSxDQUFDa0IsT0FBTyxHQUFHLElBQUk7RUFDOUIsQ0FBQztFQUVELElBQU1HLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQ3JCQyxPQUFlLEVBQ2ZDLGNBQWlDLEVBQ2pDQyxRQUEyQixFQUMzQkMsS0FBYyxFQUNkQyxpQkFBMEIsRUFDMUJDLEtBQWMsRUFDZEMsSUFBYSxFQUNWO0lBQ0huRCxLQUFLLENBQUMzRCxNQUFNLENBQUMrRyxVQUFVLEVBQUU7TUFDdkJULFVBQVUsRUFBRW5CLHdCQUF3QixHQUFHLGFBQWEsR0FBR25DLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFZ0IsSUFBSTtNQUNsRWdELFFBQVEsRUFBRWhFLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFaUUsRUFBRTtNQUNuQkMsVUFBVSxFQUFFbEUsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVzQztJQUNyQixDQUFDLENBQUM7SUFDRm5ELGFBQWEsQ0FBQ3FFLE9BQU8sRUFBRUMsY0FBYyxFQUFFRSxLQUFLLEVBQUVDLGlCQUFpQixFQUFFRixRQUFRLEVBQUVHLEtBQUssRUFBRUMsSUFBSSxDQUFDO0lBQ3ZGakMsY0FBYyxDQUFDLEVBQUUsQ0FBQztFQUNwQixDQUFDO0VBRUQsSUFBTXNDLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSVgsT0FBZSxFQUFFRyxLQUFhLEVBQUs7SUFDMUR4RSxhQUFhLENBQUNxRSxPQUFPLEVBQUVZLFNBQVMsRUFBRVQsS0FBSyxFQUFFUyxTQUFTLENBQUM7RUFDckQsQ0FBQztFQUVELElBQU1DLGdCQUFnQjtJQUFBLElBQUFDLEtBQUEsR0FBQUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFHLFNBQUFDLFFBQU9DLElBQVU7TUFBQSxJQUFBQyxrQkFBQTtNQUFBLElBQUFDLGFBQUEsRUFBQUMsYUFBQSxFQUFBQyxrQkFBQSxFQUFBQyxhQUFBLEVBQUFDLE9BQUEsRUFBQUMsZUFBQSxFQUFBQyxJQUFBLEVBQUFDLG1CQUFBLEVBQUFDLG1CQUFBLEVBQUFDLGFBQUEsRUFBQUMsUUFBQSxFQUFBQyxhQUFBLEVBQUFDLEVBQUE7TUFBQSxPQUFBakIsbUJBQUEsQ0FBQWtCLElBQUEsV0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1VBQUE7WUFDbENoQixhQUFhLEdBQUdGLElBQUksQ0FBQ3JDLElBQUksQ0FBQ3dELEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDcENoQixhQUFhLEdBQUdELGFBQWEsQ0FBQ2tCLE1BQU0sR0FBRyxDQUFDLE9BQUFDLE1BQUEsRUFBQXBCLGtCQUFBLEdBQU9DLGFBQWEsQ0FBQ29CLEdBQUcsQ0FBQyxDQUFDLGNBQUFyQixrQkFBQSx1QkFBbkJBLGtCQUFBLENBQXFCc0IsV0FBVyxDQUFDLENBQUMsSUFBSyxFQUFFO1lBQ3hGbkIsa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDb0IsUUFBUSxDQUFDckIsYUFBYSxDQUFDO1lBQ3RFRSxhQUFhLEdBQUdMLElBQUksQ0FBQzNELElBQUksQ0FBQ29GLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDOUNuQixPQUFPLEdBQUdELGFBQWEsSUFBSUQsa0JBQWtCLEVBQ25EO1lBQ01HLGVBQTBDLEdBQUc7Y0FDakQsTUFBTSxlQUFFckcsSUFBQSxDQUFDUCxXQUFXLElBQUUsQ0FBQztjQUN2QixNQUFNLGVBQUVPLElBQUEsQ0FBQ1IsV0FBVyxJQUFFLENBQUM7Y0FDdkIsTUFBTSxlQUFFUSxJQUFBLENBQUNULFdBQVcsSUFBRSxDQUFDO2NBQ3ZCLE1BQU0sZUFBRVMsSUFBQSxDQUFDVixXQUFXLElBQUU7WUFDeEIsQ0FBQztZQUVHZ0gsSUFBSSxHQUFHbkcsY0FBYyxDQUFDMkYsSUFBSSxDQUFDM0QsSUFBSSxDQUFDLEVBRXBDO1lBQ0EsSUFBSSxDQUFDMkQsSUFBSSxDQUFDM0QsSUFBSSxLQUFLLFdBQVcsSUFBSTJELElBQUksQ0FBQzNELElBQUksS0FBSyxXQUFXLEtBQUs4RCxhQUFhLEVBQUU7Y0FDN0VLLElBQUksR0FBR0QsZUFBZSxDQUFDSixhQUFhLENBQUMsSUFBSUssSUFBSTtZQUMvQztZQUVBLElBQUksQ0FBQ0EsSUFBSSxFQUFFO2NBQ0hDLG1CQUEyQyxHQUFHO2dCQUNsRCxNQUFNLEVBQUUsWUFBWTtnQkFDcEIsS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEIsTUFBTSxFQUFFLFVBQVU7Z0JBQ2xCLE1BQU0sRUFBRSxvQkFBb0I7Z0JBQzVCLE9BQU8sRUFBRSx5RUFBeUU7Z0JBQ2xGLE1BQU0sRUFBRSxpQkFBaUI7Z0JBQ3pCLE9BQU8sRUFBRSxtRUFBbUU7Z0JBQzVFLE1BQU0sRUFBRSwwQkFBMEI7Z0JBQ2xDLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixNQUFNLEVBQUUsV0FBVztnQkFDbkIsTUFBTSxFQUFFLFlBQVk7Z0JBQ3BCLE1BQU0sRUFBRSxXQUFXO2dCQUNuQixNQUFNLEVBQUUsV0FBVztnQkFDbkIsTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLE1BQU0sRUFBRSxXQUFXO2dCQUNuQixPQUFPLEVBQUU7Y0FDWCxDQUFDO2NBQ0tDLG1CQUFtQixHQUFHRCxtQkFBbUIsQ0FBQ04sYUFBYSxDQUFDO2NBQzlELElBQUlPLG1CQUFtQixFQUFFO2dCQUN2QkYsSUFBSSxHQUFHbkcsY0FBYyxDQUFDcUcsbUJBQW1CLENBQUM7Y0FDNUMsQ0FBQyxNQUFNO2dCQUNMRixJQUFJLGdCQUFHdEcsSUFBQSxDQUFDckMsTUFBTTtrQkFBQzZKLEtBQUssRUFBQyx1QkFBdUI7a0JBQUNDLEtBQUssRUFBRSxFQUFHO2tCQUFDQyxNQUFNLEVBQUU7Z0JBQUcsQ0FBRSxDQUFDO2NBQ3hFO1lBQ0Y7WUFDSWpCLGFBQWEsR0FBR1gsSUFBSSxFQUV4QjtZQUFBLEtBQ0lNLE9BQU87Y0FBQVUsUUFBQSxDQUFBRSxJQUFBO2NBQUE7WUFBQTtZQUFBRixRQUFBLENBQUFDLElBQUE7WUFBQUQsUUFBQSxDQUFBRSxJQUFBO1lBQUEsT0FHZXBILHlCQUF5QixDQUFDa0csSUFBSSxDQUFDO1VBQUE7WUFBckRXLGFBQWEsR0FBQUssUUFBQSxDQUFBYSxJQUFBO1lBQUFiLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7WUFBQUYsUUFBQSxDQUFBQyxJQUFBO1lBQUFILEVBQUEsR0FBQUUsUUFBQTtZQUViYyxPQUFPLENBQUNDLEtBQUssQ0FBQyw4QkFBOEIsRUFBQWpCLEVBQU8sQ0FBQztZQUNwRDtVQUFBO1lBR0lGLFFBQVEsR0FBR29CLEdBQUcsQ0FBQ0MsZUFBZSxDQUFDakMsSUFBSSxDQUFDO1lBRTFDUSxJQUFJLGdCQUFHdEcsSUFBQSxDQUFDTCxZQUFZO2NBQUNxSSxHQUFHLEVBQUV0QixRQUFTO2NBQUN1QixHQUFHLEVBQUVuQyxJQUFJLENBQUNyQyxJQUFLO2NBQUNnRSxLQUFLLEVBQUMsTUFBTTtjQUFDQyxNQUFNLEVBQUMsTUFBTTtjQUFDUSxZQUFZLEVBQUM7WUFBSyxDQUFFLENBQUM7VUFBQTtZQUdoR3ZCLGFBQTZCLEdBQUc7Y0FDcENiLElBQUksRUFBRVcsYUFBYTtjQUNuQjBCLFlBQVksRUFBRS9CLE9BQU8sR0FBR04sSUFBSSxHQUFHUCxTQUFTO2NBQ3hDSCxFQUFFLEtBQUErQixNQUFBLENBQUtpQixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLE9BQUFsQixNQUFBLENBQUltQixJQUFJLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUU7Y0FDcEM5RSxJQUFJLEVBQUVxQyxJQUFJLENBQUNyQyxJQUFJO2NBQ2YrRSxJQUFJLEVBQUUvQixhQUFhLENBQUMrQixJQUFJO2NBQ3hCckcsSUFBSSxFQUFFc0UsYUFBYSxDQUFDdEUsSUFBSTtjQUN4Qm1FLElBQUksRUFBSkE7WUFDRixDQUFDO1lBRUR0RCxjQUFjLENBQUMsVUFBQStELElBQUk7Y0FBQSxVQUFBSSxNQUFBLENBQUFzQixrQkFBQSxDQUFRMUIsSUFBSSxJQUFFSixhQUFhO1lBQUEsQ0FBQyxDQUFDO1VBQUE7VUFBQTtZQUFBLE9BQUFHLFFBQUEsQ0FBQTRCLElBQUE7UUFBQTtNQUFBLEdBQUE3QyxPQUFBO0lBQUEsQ0FDakQ7SUFBQSxnQkEzRUtMLGdCQUFnQkEsQ0FBQW1ELEVBQUE7TUFBQSxPQUFBbEQsS0FBQSxDQUFBbUQsS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxHQTJFckI7RUFFRCxJQUFNQyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJQyxNQUFjLEVBQUs7SUFDakQsSUFBTW5FLGNBQWMsR0FBRzdCLFdBQVcsQ0FBQ2lHLE1BQU0sQ0FBQyxVQUFBQyxVQUFVO01BQUEsT0FBSUEsVUFBVSxDQUFDN0QsRUFBRSxLQUFLMkQsTUFBTTtJQUFBLEVBQUM7SUFDakYvRixjQUFjLENBQUM0QixjQUFjLENBQUM7RUFDaEMsQ0FBQztFQUVELElBQU1zRSxNQUFNLEdBQUdySixjQUFjLENBQUNzQixLQUFjLENBQUM7RUFDN0MsSUFBTWdJLGlCQUFpQixHQUFHRCxNQUFNLEdBQzVCckgsQ0FBQyxDQUFDLHdCQUF3QixFQUFFO0lBQUV1SCxTQUFTLEVBQUV2SCxDQUFDLENBQUMsbUJBQW1CO0VBQUUsQ0FBQyxDQUFDLEdBQ2xFQSxDQUFDLENBQUMsNkJBQTZCLENBQUM7RUFFcEMsSUFBTXdILHdCQUF3QixHQUFHQyxPQUFPLENBQUM5SSxRQUFRLElBQUlDLFdBQVcsSUFBSUMsU0FBUyxDQUFDO0VBQzlFLElBQU02SSxjQUFjLEdBQUd4SSxRQUFRLElBQUlRLE9BQU8sS0FBSyxNQUFNO0VBRXJELG9CQUNFckIsS0FBQSxDQUFDNUIsZ0JBQWdCO0lBQUFrTCxRQUFBLEdBQ2ROLE1BQU0sSUFBSSxDQUFDL0YsZUFBZSxpQkFDekJqRCxLQUFBLENBQUMzQixlQUFlO01BQUNrTCxHQUFHLEVBQUV4SCxtQkFBb0I7TUFBQXVILFFBQUEsZ0JBQ3hDdEosS0FBQSxDQUFDMUIsY0FBYztRQUFBZ0wsUUFBQSxHQUNaLENBQUMsQ0FBQ3RGLFNBQVMsQ0FBQ2dELE1BQU0saUJBQ2pCbEgsSUFBQSxDQUFDbEMsSUFBSTtVQUNIeUMsS0FBSyxFQUFFMkQsU0FBVTtVQUNqQi9CLElBQUksRUFBRWdDLFFBQVM7VUFDZnVGLFFBQVEsRUFBRXhILGNBQWMsR0FBR21DLG1CQUFtQixHQUFHa0IsU0FBVTtVQUMzRG9FLFdBQVcsRUFBRTlILENBQUMsQ0FBQyxtQkFBbUIsRUFBRTtZQUFFK0gsWUFBWSxFQUFFO1VBQWtCLENBQUMsQ0FBRTtVQUN6RUMsT0FBTyxFQUFFM0gsY0FBYyxHQUFHTCxDQUFDLENBQUMscUNBQXFDLENBQUMsR0FBRzBELFNBQVU7VUFDL0V2RSxhQUFhLEVBQUVBO1FBQWMsQ0FDOUIsQ0FDRixFQUNBa0IsY0FBYyxpQkFDYmhDLEtBQUEsQ0FBQ3pCLGdCQUFnQjtVQUFDZ0wsR0FBRyxFQUFFMUgsWUFBYTtVQUFDSSxJQUFJLEVBQUMsUUFBUTtVQUFDMkgsT0FBTyxFQUFFdEgsU0FBVTtVQUFBZ0gsUUFBQSxnQkFDcEV4SixJQUFBLENBQUNwQyxJQUFJO1lBQUM0SixLQUFLLEVBQUMsY0FBYztZQUFDQyxLQUFLLEVBQUUsRUFBRztZQUFDQyxNQUFNLEVBQUU7VUFBRyxDQUFFLENBQUMsRUFDbkQsQ0FBQ3hELFNBQVMsQ0FBQ2dELE1BQU0saUJBQUlsSCxJQUFBO1lBQUF3SixRQUFBLEVBQU8zSCxDQUFDLENBQUMsdUJBQXVCLEVBQUU7Y0FBRStILFlBQVksRUFBRTtZQUFXLENBQUM7VUFBQyxDQUFPLENBQUM7UUFBQSxDQUM3RSxDQUNuQjtNQUFBLENBQ2EsQ0FBQyxFQUNoQkwsY0FBYyxpQkFBSXZKLElBQUEsQ0FBQ2hDLGNBQWM7UUFBQytMLFdBQVcsRUFBRXpFLGVBQWdCO1FBQUM5RSxRQUFRLEVBQUU2STtNQUF5QixDQUFFLENBQUM7SUFBQSxDQUN4RixDQUNsQixFQUNBM0csY0FBYyxpQkFBSWhGLFlBQVksQ0FBQ2dGLGNBQWMsRUFBRW1CLFFBQVEsQ0FBQ21HLElBQUksQ0FBQyxlQUM5RGhLLElBQUEsQ0FBQ2pDLFNBQVM7TUFDUnNFLGdCQUFnQixFQUFFTCxxQkFBc0I7TUFDeEMxQixhQUFhLEVBQUVvRSxpQkFBa0I7TUFDakN1RixTQUFTLEVBQUVwTSxjQUFlO01BQzFCMkMsUUFBUSxFQUFFQSxRQUFTO01BQ25CMEosV0FBVyxFQUFFLENBQUEvSSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWdKLGlCQUFpQixLQUFJdEksQ0FBQyxDQUFDLHlCQUF5QixDQUFFO01BQ3RFeUMsUUFBUSxFQUFFQSxRQUFTO01BQ25COEYsWUFBWSxFQUFFNUUsZ0JBQWlCO01BQy9CNkUsa0JBQWtCLEVBQUV2QixzQkFBdUI7TUFDM0MvRixXQUFXLEVBQUVBLFdBQVcsQ0FDckJpRyxNQUFNLENBQUMsVUFBQXNCLEdBQUc7UUFBQSxPQUFJLENBQUMsQ0FBQ0EsR0FBRyxDQUFDeEUsSUFBSTtNQUFBLEVBQUMsQ0FDekJ5RSxHQUFHLENBQUMsVUFBQUQsR0FBRztRQUFBLE9BQUs7VUFDWHhFLElBQUksRUFBRXdFLEdBQUcsQ0FBQ3hFLElBQUs7VUFDZnFDLFlBQVksRUFBRW1DLEdBQUcsQ0FBQ25DLFlBQVk7VUFDOUIvQyxFQUFFLEVBQUVrRixHQUFHLENBQUNsRixFQUFFO1VBQ1YzQixJQUFJLEVBQUU2RyxHQUFHLENBQUM3RyxJQUFJO1VBQ2QrRSxJQUFJLEVBQUUsT0FBTzhCLEdBQUcsQ0FBQzlCLElBQUksS0FBSyxRQUFRLEdBQUc4QixHQUFHLENBQUM5QixJQUFJLEdBQUdnQyxNQUFNLENBQUNGLEdBQUcsQ0FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUM7VUFDckVyRyxJQUFJLEVBQUVtSSxHQUFHLENBQUNuSSxJQUFJO1VBQ2RtRSxJQUFJLEVBQUVnRSxHQUFHLENBQUNoRTtRQUNaLENBQUM7TUFBQSxDQUFDLENBQUU7TUFDTjdGLFdBQVcsRUFBRUEsV0FBWTtNQUN6QkMsU0FBUyxFQUFFQSxTQUFVO01BQ3JCQyxnQkFBZ0IsRUFBRUEsZ0JBQWlCO01BQ25DQyxNQUFNLEVBQUVBLE1BQU0sSUFBSTJFLFNBQVU7TUFDNUIxRSxVQUFVLEVBQUVBLFVBQVc7TUFDdkJHLGFBQWEsRUFBRUE7SUFBYyxDQUM5QixDQUFDLGVBQ0ZoQixJQUFBLENBQUNGLHFCQUFxQjtNQUFDNkUsT0FBTyxFQUFFd0U7SUFBa0IsQ0FBRSxDQUFDO0VBQUEsQ0FDckMsQ0FBQztBQUV2QiIsImlnbm9yZUxpc3QiOltdfQ==