@projectcor/maia-components 2.11.69-2 → 2.11.69

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 (60) hide show
  1. package/lib/components/atoms/Chip/Chip.js +15 -50
  2. package/lib/components/atoms/Chip/styles.js +5 -9
  3. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +6 -38
  4. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +13 -21
  5. package/lib/components/atoms/MAIAInput/MAIAInput.js +14 -32
  6. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +34 -27
  7. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +2 -5
  8. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +46 -297
  9. package/lib/components/molecules/ChatAIHome/styles.js +26 -63
  10. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +148 -54
  11. package/lib/components/molecules/ChatAIMessages/newStyles.js +9 -19
  12. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +42 -220
  13. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +1 -4
  14. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +1 -26
  15. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +25 -20
  16. package/lib/components/molecules/ChatFooter/ChatFooter.js +18 -75
  17. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +7 -22
  18. package/lib/components/molecules/ChatFooter/styles.js +2 -11
  19. package/lib/components/molecules/Sidebar/Sidebar.js +7 -11
  20. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
  21. package/lib/constants/maiaTaskPanelAccess.js +5 -7
  22. package/lib/constants/taskUrls.js +2 -9
  23. package/lib/context/global-context.js +1 -8
  24. package/lib/hooks/index.js +1 -2
  25. package/lib/hooks/useChatManager/useChatManager.js +125 -149
  26. package/lib/hooks/useChatMessages/useChatMessages.js +2 -33
  27. package/lib/hooks/useEntitySearch.js +129 -74
  28. package/lib/hooks/useEvent.js +1 -2
  29. package/lib/hooks/useFrequentlyAskedQuestions.js +10 -12
  30. package/lib/hooks/useFrequentlyUsedActions.js +3 -5
  31. package/lib/hooks/useMentionAllowedTypes.js +1 -11
  32. package/lib/hooks/useMentionPopover.js +2 -3
  33. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  34. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +18 -27
  35. package/lib/hooks/useProjectSearch.js +28 -4
  36. package/lib/hooks/useProjectSummaryConfig.js +4 -74
  37. package/lib/hooks/useRecentClientsSearch.js +34 -4
  38. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +16 -24
  39. package/lib/lang/br/index.js +2 -28
  40. package/lib/lang/en/index.js +2 -28
  41. package/lib/lang/es/index.js +2 -28
  42. package/lib/lang/fr/index.js +2 -28
  43. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +3 -6
  44. package/lib/services/maia/Agents/getAgents.js +175 -225
  45. package/lib/services/maia/Chats/getChatMessages.js +3 -13
  46. package/lib/services/maia/Chats/getChatsByUserId.js +2 -10
  47. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +4 -6
  48. package/lib/services/maia/Orchestrator/orchestrator.js +5 -21
  49. package/lib/services/maia/index.js +2 -4
  50. package/lib/services/utils/validateIsMaia.js +2 -2
  51. package/lib/types/agent.js +1 -1
  52. package/lib/utils/agentDisplayName.js +1 -9
  53. package/lib/utils/hitlAnalytics.js +3 -3
  54. package/lib/utils/renderContextMentions.js +1 -3
  55. package/package.json +1 -1
  56. package/lib/hooks/useContextPinPopover.js +0 -235
  57. package/lib/hooks/useRecentContexts.js +0 -86
  58. package/lib/services/maia/RecentContexts/getRecentContexts.js +0 -54
  59. package/lib/services/maia/RecentContexts/index.js +0 -6
  60. package/lib/utils/entityLinkRender.js +0 -135
@@ -169,7 +169,6 @@ export var renderMentionLink = function renderMentionLink(href, children) {
169
169
  return /*#__PURE__*/_jsx(SCTaskLink, {
170
170
  href: taskUrl,
171
171
  className: CONTEXT_MENTION_CHIP_CLASS,
172
- "data-cor-link": "task",
173
172
  "data-mention-type": type,
174
173
  "data-mention-surface": "chat",
175
174
  onClick: handleTaskClick,
@@ -294,7 +293,6 @@ var MentionChip = function MentionChip(_ref7) {
294
293
  return /*#__PURE__*/_jsx(SCTaskLink, {
295
294
  href: url !== null && url !== void 0 ? url : '#',
296
295
  className: CONTEXT_MENTION_CHIP_CLASS,
297
- "data-cor-link": "task",
298
296
  "data-mention-type": "task",
299
297
  "data-mention-surface": "chat",
300
298
  onClick: handleClick,
@@ -391,4 +389,4 @@ export var renderTextWithMentions = function renderTextWithMentions(text) {
391
389
  if (lastIdx < text.length) out.push(text.slice(lastIdx));
392
390
  return out;
393
391
  };
394
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsIk1FTlRJT05fQ0hJUF9DT0xPUlMiLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJTbGFzaENvbW1hbmRDaGlwIiwiU0xBU0hfQ09NTUFORF9NQVJLRVJfUkVHRVgiLCJWSU9MRVRfSUFfQ09MT1JTIiwiU0NUYXNrTGluayIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJNRU5USU9OX01BUktFUl9SRUdFWCIsIk1BSUFfTUVOVElPTl9QUk9UT0NPTCIsIklOQ09NUExFVEVfTUVOVElPTl9NQVJLRVJfUkVHRVgiLCJJTkNPTVBMRVRFX1NMQVNIX01BUktFUl9SRUdFWCIsIkFMTE9XRURfVFlQRVMiLCJwYXJzZU1lbnRpb25Qcm90b2NvbEhyZWYiLCJocmVmIiwicmVzdCIsInNsaWNlIiwibGVuZ3RoIiwic2xhc2hJZHgiLCJpbmRleE9mIiwicmF3VHlwZSIsInJhd0lkIiwiaWQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJfdW51c2VkIiwidHlwZSIsImluY2x1ZGVzIiwic2VyaWFsaXplTWVudGlvbiIsIm1lbnRpb24iLCJjb25jYXQiLCJsYWJlbCIsInRyYW5zZm9ybU1lbnRpb25NYXJrZXJzIiwidGV4dCIsInJlcGxhY2UiLCJfbSIsInNhZmVMYWJlbCIsIlN0cmluZyIsImVuY29kZVVSSUNvbXBvbmVudCIsIm1lbnRpb25DaGlsZHJlblRvTGFiZWwiLCJjaGlsZHJlbiIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImMiLCJqb2luIiwic3BsaXRMYWJlbEZpcnN0V29yZCIsIm5vcm1hbGl6ZWQiLCJ0cmltIiwiZmlyc3RXb3JkIiwiZmlyc3RXaGl0ZXNwYWNlSWR4Iiwic2VhcmNoIiwiaW5saW5lTWVudGlvbkhvdmVyQ3NzIiwiaXNDbGlja2FibGUiLCJiZyIsIlNDSW5saW5lTWVudGlvbiIsInNwYW4iLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIl9yZWYiLCJfTUVOVElPTl9DSElQX0NPTE9SUyQiLCIkdHlwZSIsInVzZXIiLCJfcmVmMiIsIl9NRU5USU9OX0NISVBfQ09MT1JTJDIiLCJmZyIsIl9yZWYzIiwiJGlzQ2xpY2thYmxlIiwiX3JlZjQiLCJTQ0lubGluZU1lbnRpb25JY29uIiwiX3JlZjUiLCIkdGFzayIsIl9yZWY2IiwiU0NJbmxpbmVNZW50aW9uSWNvblJvdyIsIlNDSW5saW5lTWVudGlvbldvcmQiLCJTQ0lubGluZU1lbnRpb25SZXN0IiwicmVuZGVyTWVudGlvbkxpbmsiLCJzdGFydHNXaXRoIiwiX3BhcnNlTWVudGlvblByb3RvY29sIiwiaXNUYXNrIiwiaWNvblNpemUiLCJ0YXNrVXJsIiwiaGFuZGxlVGFza0NsaWNrIiwiZSIsIm1ldGFLZXkiLCJjdHJsS2V5IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUYXNrS2V5RG93biIsImtleSIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJvbktleURvd24iLCJpc1Byb2plY3QiLCJwcm9qZWN0VXJsIiwic2hvd0ljb24iLCJfc3BsaXRMYWJlbEZpcnN0V29yZCIsImhhbmRsZVByb2plY3RDbGljayIsIndpbmRvdyIsIm9wZW4iLCJ1bmRlZmluZWQiLCJyb2xlIiwidGFiSW5kZXgiLCJzdHJpcE1lbnRpb25NYXJrZXJzIiwiX3R5cGUiLCJfaWQiLCJmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMiLCJ3aXRob3V0TWVudGlvbnMiLCJzbGFzaFJlZ2V4IiwiUmVnRXhwIiwic291cmNlIiwid2l0aG91dFNsYXNoIiwid2l0aG91dEluY29tcGxldGVTbGFzaCIsImdldE1lbnRpb25VcmwiLCJNZW50aW9uQ2hpcCIsIl9yZWY3Iiwibm9ybWFsaXplZExhYmVsIiwidXJsIiwiX3NwbGl0TGFiZWxGaXJzdFdvcmQyIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVLZXlEb3duIiwiaGFzSW5saW5lTWFya2VycyIsImNvbGxlY3RJbmxpbmVNYXJrZXJzIiwibWFya2VycyIsImxhc3RJbmRleCIsIm0iLCJleGVjIiwiX20yIiwiX20zIiwiX3NsaWNlZFRvQXJyYXkiLCJwdXNoIiwia2luZCIsImluZGV4IiwicyIsInNvcnQiLCJhIiwiYiIsInJlbmRlclRleHRXaXRoTWVudGlvbnMiLCJvdXQiLCJsYXN0SWR4IiwiZm9yRWFjaCIsIm1hcmtlciIsImlubGluZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9yZW5kZXJDb250ZXh0TWVudGlvbnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlYWN0Tm9kZSwgUmVhY3RFbGVtZW50LCBNb3VzZUV2ZW50LCBLZXlib2FyZEV2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgc3R5bGVkLCB7IGNzcyB9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uLCBDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHtcbiAgTUVOVElPTl9DSElQX0NPTE9SUyxcbiAgTUVOVElPTl9DSElQX05PTl9UQVNLX0hPVkVSX0JHLFxufSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uQ2hpcC9Db250ZXh0TWVudGlvbkNoaXAuc3R5bGVzJ1xuaW1wb3J0IHsgU2xhc2hDb21tYW5kQ2hpcCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvU2xhc2hDb21tYW5kQ2hpcCdcbmltcG9ydCB7IFNMQVNIX0NPTU1BTkRfTUFSS0VSX1JFR0VYIH0gZnJvbSAnLi9zbGFzaENvbW1hbmRNYXJrZXInXG5pbXBvcnQgeyBWSU9MRVRfSUFfQ09MT1JTIH0gZnJvbSAnLi4vc3R5bGVzL2NvbmZpZydcbmltcG9ydCB7IFNDVGFza0xpbmsgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9uZXdTdHlsZXMnXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuL2NvbnRleHRNZW50aW9uSWNvbnMnXG5pbXBvcnQgeyBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsIH0gZnJvbSAnLi9jb250ZXh0TWVudGlvbkxhYmVsJ1xuaW1wb3J0IHsgb3BlblRhc2tJbkNvclBhbmVsIH0gZnJvbSAnLi9vcGVuVGFza0luQ29yUGFuZWwnXG5cbi8qKlxuICogRm9ybWF0byBkZWwgbWFyY2Fkb3IgcXVlIHZpYWphIGVuIGVsIHRleHRvIGRlbCBtZW5zYWplOlxuICogICBbW21lbnRpb246PHR5cGU+OjxpZD58PGxhYmVsPl1dXG4gKlxuICogRWwgZWRpdG9yIGxvIGVtaXRlIGN1YW5kbyBzZXJpYWxpemEgZWwgY29udGVudGVkaXRhYmxlLCBlbCBiYWNrZW5kIGxvXG4gKiBwZXJzaXN0ZSB0YWwgY3VhbCB5IGFsIHJlbmRlcml6YXIgc2UgdHJhbnNmb3JtYSBlbiB1biBsaW5rIG1hcmtkb3duIGNvblxuICogdW4gcHJvdG9jb2xvIHByb3BpbyBxdWUgYEN1c3RvbUxpbmtgIGludGVyY2VwdGEgeSBkaWJ1amEgY29tbyBzcGFuXG4gKiBlc3RpbGFkby5cbiAqXG4gKiBQb3Igc2VwYXJhZG8sIGxhIG1ldGFkYXRhIGBjb250ZXh0X21lc3NhZ2VgIGxsZXZhIGxvcyB2YWxvcmVzIGxpbXBpb3NcbiAqIChpZCArIG5hbWUpIHBhcmEgcXVlIGVsIGJhY2tlbmQgcHVlZGEgaW50ZXJwcmV0YXIgbGFzIGVudGlkYWRlcyBzaW5cbiAqIHRlbmVyIHF1ZSBwYXJzZWFyIGVsIHRleHRvLlxuICovXG4vKipcbiAqIExhYmVsIHB1ZWRlIGNvbnRlbmVyIGBdYCAoZWo6IFwiW0VkdWNhdGVdQmxvZyBQb3N0IC4uLlwiKSwgcG9yIGVzb1xuICogc2UgY2FwdHVyYSBkZSBmb3JtYSBsYXp5IGhhc3RhIGVsIGNpZXJyZSByZWFsIGBdXWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOihjbGllbnR8cHJvamVjdHx0YXNrfHVzZXJ8bWNwKTooW158XFxdXSspXFx8KFtcXHNcXFNdKj8pXFxdXFxdL2dcbmV4cG9ydCBjb25zdCBNQUlBX01FTlRJT05fUFJPVE9DT0wgPSAnbWFpYS1tZW50aW9uOi8vJ1xuY29uc3QgSU5DT01QTEVURV9NRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOltcXHNcXFNdKiQvXG5jb25zdCBJTkNPTVBMRVRFX1NMQVNIX01BUktFUl9SRUdFWCA9IC9cXFtcXFtzbGFzaF9jb21tYW5kOltefFxcXV0rXFx8KFtcXHNcXFNdKikkL1xuXG5jb25zdCBBTExPV0VEX1RZUEVTOiBDb250ZXh0RW50aXR5VHlwZVtdID0gWydjbGllbnQnLCAncHJvamVjdCcsICd0YXNrJywgJ3VzZXInLCAnbWNwJ11cblxuY29uc3QgcGFyc2VNZW50aW9uUHJvdG9jb2xIcmVmID0gKGhyZWY6IHN0cmluZyk6IHsgdHlwZTogQ29udGV4dEVudGl0eVR5cGU7IGlkOiBzdHJpbmcgfSA9PiB7XG4gIGNvbnN0IHJlc3QgPSBocmVmLnNsaWNlKE1BSUFfTUVOVElPTl9QUk9UT0NPTC5sZW5ndGgpXG4gIGNvbnN0IHNsYXNoSWR4ID0gcmVzdC5pbmRleE9mKCcvJylcbiAgY29uc3QgcmF3VHlwZSA9IHNsYXNoSWR4ID49IDAgPyByZXN0LnNsaWNlKDAsIHNsYXNoSWR4KSA6IHJlc3RcbiAgY29uc3QgcmF3SWQgPSBzbGFzaElkeCA+PSAwID8gcmVzdC5zbGljZShzbGFzaElkeCArIDEpIDogJydcbiAgbGV0IGlkID0gJydcbiAgdHJ5IHtcbiAgICBpZCA9IHJhd0lkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJhd0lkKSA6ICcnXG4gIH0gY2F0Y2gge1xuICAgIGlkID0gcmF3SWRcbiAgfVxuICBjb25zdCB0eXBlID0gQUxMT1dFRF9UWVBFUy5pbmNsdWRlcyhyYXdUeXBlIGFzIENvbnRleHRFbnRpdHlUeXBlKSA/IChyYXdUeXBlIGFzIENvbnRleHRFbnRpdHlUeXBlKSA6ICd1c2VyJ1xuICByZXR1cm4geyB0eXBlLCBpZCB9XG59XG5cbi8qKiBHZW5lcmEgZWwgbWFyY2Fkb3IgcGFyYSB1biBtZW50aW9uIGRhZG8uIExvIHVzYSBlbCBlZGl0b3IgYWwgc2VyaWFsaXphci4gKi9cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVNZW50aW9uID0gKG1lbnRpb246IENvbnRleHRNZW50aW9uKTogc3RyaW5nID0+XG4gIGBbW21lbnRpb246JHttZW50aW9uLnR5cGV9OiR7bWVudGlvbi5pZH18JHttZW50aW9uLmxhYmVsfV1dYFxuXG4vKipcbiAqIENvbnZpZXJ0ZSBjYWRhIGBbW21lbnRpb246Li4uXV1gIGVuIHVuIGxpbmsgbWFya2Rvd24gY29uIHByb3RvY29sbyBwcm9waW9cbiAqIHBhcmEgcXVlIFN0cmVhbWRvd24gbG8gZW1pdGEgY29tbyBgPGE+YCB5IGBDdXN0b21MaW5rYCBsbyBpbnRlcmNlcHRlLlxuICovXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtTWVudGlvbk1hcmtlcnMgPSAodGV4dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCF0ZXh0KSByZXR1cm4gdGV4dFxuICByZXR1cm4gdGV4dC5yZXBsYWNlKE1FTlRJT05fTUFSS0VSX1JFR0VYLCAoX20sIHR5cGUsIGlkLCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IHNhZmVMYWJlbCA9IFN0cmluZyhsYWJlbCkucmVwbGFjZSgvW1xcXFxcXF1dL2csICdcXFxcJCYnKVxuICAgIHJldHVybiBgWyR7c2FmZUxhYmVsfV0oJHtNQUlBX01FTlRJT05fUFJPVE9DT0x9JHt0eXBlfS8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoaWQpKX0pYFxuICB9KVxufVxuXG5jb25zdCBtZW50aW9uQ2hpbGRyZW5Ub0xhYmVsID0gKGNoaWxkcmVuOiBSZWFjdE5vZGUpOiBzdHJpbmcgPT4ge1xuICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJykgcmV0dXJuIG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwoY2hpbGRyZW4pXG4gIGlmIChjaGlsZHJlbiA9PSBudWxsIHx8IGNoaWxkcmVuID09PSBmYWxzZSkgcmV0dXJuICcnXG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIHJldHVybiBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKGNoaWxkcmVuLm1hcChjID0+ICh0eXBlb2YgYyA9PT0gJ3N0cmluZycgPyBjIDogJycpKS5qb2luKCcnKSlcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChTdHJpbmcoY2hpbGRyZW4pKVxufVxuXG5jb25zdCBzcGxpdExhYmVsRmlyc3RXb3JkID0gKGxhYmVsOiBzdHJpbmcpOiB7IGZpcnN0V29yZDogc3RyaW5nOyByZXN0OiBzdHJpbmcgfSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKGxhYmVsKS50cmltKClcbiAgaWYgKCFub3JtYWxpemVkKSByZXR1cm4geyBmaXJzdFdvcmQ6ICcnLCByZXN0OiAnJyB9XG4gIGNvbnN0IGZpcnN0V2hpdGVzcGFjZUlkeCA9IG5vcm1hbGl6ZWQuc2VhcmNoKC9cXHMvKVxuICBpZiAoZmlyc3RXaGl0ZXNwYWNlSWR4IDwgMCkgcmV0dXJuIHsgZmlyc3RXb3JkOiBub3JtYWxpemVkLCByZXN0OiAnJyB9XG4gIHJldHVybiB7XG4gICAgZmlyc3RXb3JkOiBub3JtYWxpemVkLnNsaWNlKDAsIGZpcnN0V2hpdGVzcGFjZUlkeCksXG4gICAgcmVzdDogbm9ybWFsaXplZC5zbGljZShmaXJzdFdoaXRlc3BhY2VJZHgpLFxuICB9XG59XG5cbmNvbnN0IGlubGluZU1lbnRpb25Ib3ZlckNzcyA9ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgaXNDbGlja2FibGU/OiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IGJnID0gdHlwZSA9PT0gJ3Byb2plY3QnID8gVklPTEVUX0lBX0NPTE9SU1sxMDBdIDogTUVOVElPTl9DSElQX05PTl9UQVNLX0hPVkVSX0JHXG4gIHJldHVybiBjc3NgXG4gICAgYmFja2dyb3VuZDogJHtiZ307XG4gICAgb3BhY2l0eTogJHtpc0NsaWNrYWJsZSA/IDAuOTUgOiAxfTtcbiAgYFxufVxuXG4vKiogU3BhbiBpbmxpbmUgZXN0aWxhZG8gKG1lbmNpb25lcyBuby10YXNrIGVuIGNoYXQpLiAqL1xuY29uc3QgU0NJbmxpbmVNZW50aW9uID0gc3R5bGVkLnNwYW48eyAkdHlwZTogQ29udGV4dEVudGl0eVR5cGU7ICRpc0NsaWNrYWJsZT86IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGlubGluZTtcbiAgcGFkZGluZzogMnB4IDRweDtcbiAgbWFyZ2luOiAwIDFweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmb250LWZhbWlseTogdmFyKC0tY29yLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICdXb3JrIFNhbnMnKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgYmFja2dyb3VuZDogJHsoeyAkdHlwZSB9KSA9PiAoTUVOVElPTl9DSElQX0NPTE9SU1skdHlwZV0gPz8gTUVOVElPTl9DSElQX0NPTE9SUy51c2VyKS5iZ307XG4gIGNvbG9yOiAkeyh7ICR0eXBlIH0pID0+IChNRU5USU9OX0NISVBfQ09MT1JTWyR0eXBlXSA/PyBNRU5USU9OX0NISVBfQ09MT1JTLnVzZXIpLmZnfTtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgY3Vyc29yOiAkeyh7ICRpc0NsaWNrYWJsZSB9KSA9PiAoJGlzQ2xpY2thYmxlID8gJ3BvaW50ZXInIDogJ2RlZmF1bHQnKX07XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAmOmhvdmVyIHtcbiAgICAkeyh7ICR0eXBlLCAkaXNDbGlja2FibGUgfSkgPT4gaW5saW5lTWVudGlvbkhvdmVyQ3NzKCR0eXBlLCAkaXNDbGlja2FibGUpfVxuICB9XG5gXG5cbmNvbnN0IFNDSW5saW5lTWVudGlvbkljb24gPSBzdHlsZWQuc3Bhbjx7ICR0YXNrPzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgd2lkdGg6ICR7KHsgJHRhc2sgfSkgPT4gKCR0YXNrID8gJzE2cHgnIDogJzE0cHgnKX07XG4gIGhlaWdodDogJHsoeyAkdGFzayB9KSA9PiAoJHRhc2sgPyAnMTZweCcgOiAnMTRweCcpfTtcbmBcblxuY29uc3QgU0NJbmxpbmVNZW50aW9uSWNvblJvdyA9IHN0eWxlZC5zcGFuYFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuYFxuXG5jb25zdCBTQ0lubGluZU1lbnRpb25Xb3JkID0gc3R5bGVkLnNwYW5gXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5gXG5cbmNvbnN0IFNDSW5saW5lTWVudGlvblJlc3QgPSBzdHlsZWQuc3BhbmBcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbmBcblxuLyoqXG4gKiBTaSBlbCBocmVmIGNvcnJlc3BvbmRlIGFsIHByb3RvY29sbyBkZSBtZW50aW9uLCBkZXZ1ZWx2ZSB1biBub2RvIGVzdGlsYWRvIHBvciB0aXBvLlxuICogTGFzIHRhcmVhcyB1c2FuIGA8YT5gIGNvbW8gbG9zIGVubGFjZXMgZGUgdGFyZWEgZGVsIGFnZW50ZSAoYC5oYXMtdGFzay1saW5rc2ApLlxuICovXG5leHBvcnQgY29uc3QgcmVuZGVyTWVudGlvbkxpbmsgPSAoaHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkLCBjaGlsZHJlbjogUmVhY3ROb2RlKTogUmVhY3ROb2RlIHwgbnVsbCA9PiB7XG4gIGlmICghaHJlZiB8fCAhaHJlZi5zdGFydHNXaXRoKE1BSUFfTUVOVElPTl9QUk9UT0NPTCkpIHJldHVybiBudWxsXG4gIGNvbnN0IHsgdHlwZSwgaWQgfSA9IHBhcnNlTWVudGlvblByb3RvY29sSHJlZihocmVmKVxuICBjb25zdCBsYWJlbCA9IG1lbnRpb25DaGlsZHJlblRvTGFiZWwoY2hpbGRyZW4pXG4gIGNvbnN0IGlzVGFzayA9IHR5cGUgPT09ICd0YXNrJ1xuICBjb25zdCBpY29uU2l6ZSA9IGlzVGFzayA/IDE2IDogMTRcbiAgY29uc3QgdGFza1VybCA9IGAvdGFza3MvJHtpZH0vZGV0YWlsYFxuXG4gIGNvbnN0IGhhbmRsZVRhc2tDbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVRhc2tLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKGUua2V5ICE9PSAnRW50ZXInICYmIGUua2V5ICE9PSAnICcpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrSW5Db3JQYW5lbChpZCwgJ2RldGFpbCcpXG4gIH1cblxuICBpZiAoaXNUYXNrKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1Rhc2tMaW5rXG4gICAgICAgIGhyZWY9e3Rhc2tVcmx9XG4gICAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICAgIGRhdGEtY29yLWxpbms9XCJ0YXNrXCJcbiAgICAgICAgZGF0YS1tZW50aW9uLXR5cGU9e3R5cGV9XG4gICAgICAgIGRhdGEtbWVudGlvbi1zdXJmYWNlPVwiY2hhdFwiXG4gICAgICAgIG9uQ2xpY2s9e2hhbmRsZVRhc2tDbGlja31cbiAgICAgICAgb25LZXlEb3duPXtoYW5kbGVUYXNrS2V5RG93bn1cbiAgICAgID5cbiAgICAgICAge2xhYmVsfVxuICAgICAgPC9TQ1Rhc2tMaW5rPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGlzUHJvamVjdCA9IHR5cGUgPT09ICdwcm9qZWN0J1xuICBjb25zdCBwcm9qZWN0VXJsID0gaXNQcm9qZWN0ID8gYC9wcm9qZWN0cy8ke2lkfS9kYXNoYm9hcmRgIDogbnVsbFxuICBjb25zdCBzaG93SWNvbiA9ICFpc1Byb2plY3RcbiAgY29uc3QgeyBmaXJzdFdvcmQsIHJlc3QgfSA9IHNwbGl0TGFiZWxGaXJzdFdvcmQobGFiZWwpXG5cbiAgY29uc3QgaGFuZGxlUHJvamVjdENsaWNrID0gKGU6IE1vdXNlRXZlbnQ8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICAgIGlmICghcHJvamVjdFVybCkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHdpbmRvdy5vcGVuKHByb2plY3RVcmwsICdfYmxhbmsnKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NJbmxpbmVNZW50aW9uXG4gICAgICAkdHlwZT17dHlwZX1cbiAgICAgICRpc0NsaWNrYWJsZT17aXNQcm9qZWN0fVxuICAgICAgY2xhc3NOYW1lPXtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU31cbiAgICAgIGRhdGEtbWVudGlvbi10eXBlPXt0eXBlfVxuICAgICAgZGF0YS1tZW50aW9uLXN1cmZhY2U9XCJjaGF0XCJcbiAgICAgIG9uQ2xpY2s9e2lzUHJvamVjdCA/IGhhbmRsZVByb2plY3RDbGljayA6IHVuZGVmaW5lZH1cbiAgICAgIHJvbGU9e2lzUHJvamVjdCA/ICdidXR0b24nIDogdW5kZWZpbmVkfVxuICAgICAgdGFiSW5kZXg9e2lzUHJvamVjdCA/IDAgOiB1bmRlZmluZWR9XG4gICAgPlxuICAgICAge3Nob3dJY29uID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxTQ0lubGluZU1lbnRpb25JY29uUm93PlxuICAgICAgICAgICAgPFNDSW5saW5lTWVudGlvbkljb24gJHRhc2s9e2lzVGFza30+XG4gICAgICAgICAgICAgIHtnZXRDb250ZXh0TWVudGlvbkljb24odHlwZSwgTUVOVElPTl9DSElQX0NPTE9SU1t0eXBlXS5mZywgaWQsIGljb25TaXplKX1cbiAgICAgICAgICAgIDwvU0NJbmxpbmVNZW50aW9uSWNvbj5cbiAgICAgICAgICAgIDxTQ0lubGluZU1lbnRpb25Xb3JkPntmaXJzdFdvcmR9PC9TQ0lubGluZU1lbnRpb25Xb3JkPlxuICAgICAgICAgIDwvU0NJbmxpbmVNZW50aW9uSWNvblJvdz5cbiAgICAgICAgICB7cmVzdCA/IDxTQ0lubGluZU1lbnRpb25SZXN0PntyZXN0fTwvU0NJbmxpbmVNZW50aW9uUmVzdD4gOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgeyFzaG93SWNvbiA/IGxhYmVsIDogbnVsbH1cbiAgICA8L1NDSW5saW5lTWVudGlvbj5cbiAgKVxufVxuXG4vKiogUXVpdGEgbG9zIG1hcmtlcnMgZGVsIHRleHRvLCBkZWphbmRvIHNvbG8gYGxhYmVsYC4gw5p0aWwgcGFyYSBmYWxsYmFjayBwbGFuby4gKi9cbmV4cG9ydCBjb25zdCBzdHJpcE1lbnRpb25NYXJrZXJzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICB0ZXh0LnJlcGxhY2UoTUVOVElPTl9NQVJLRVJfUkVHRVgsIChfbSwgX3R5cGUsIF9pZCwgbGFiZWwpID0+IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwoU3RyaW5nKGxhYmVsKSkpXG5cbi8qKlxuICogVMOtdHVsb3MgZGUgY29udmVyc2FjacOzbiAocC4gZWouIGBsYXN0X3F1ZXN0aW9uYCBkZXJpdmFkbyBkZWwgcHJpbWVyIG1lbnNhamUpIHB1ZWRlblxuICogaW5jbHVpciBlbCB0ZXh0byBzZXJpYWxpemFkbyBgW1ttZW50aW9uOnR5cGU6aWR8bGFiZWxdXWAuIFBhcmEgc2lkZWJhciB5IGxpc3RhZG9zLFxuICogcmVlbXBsYXphIGNhZGEgYmxvcXVlIHBvciBgbGFiZWxgIGVuIHRleHRvIHBsYW5vLCBzaW4gZWwgbWFyY2Fkb3IgY3J1ZG8uXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMgPSAodGV4dDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyA9PiB7XG4gIGlmICh0ZXh0ID09IG51bGwgfHwgdGV4dCA9PT0gJycpIHJldHVybiB0ZXh0ID8/ICcnXG4gIGNvbnN0IHdpdGhvdXRNZW50aW9ucyA9IHRleHQucmVwbGFjZShNRU5USU9OX01BUktFUl9SRUdFWCwgKF9tLCBfdHlwZSwgX2lkLCBsYWJlbCkgPT5cbiAgICBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKFN0cmluZyhsYWJlbCkudHJpbSgpKVxuICApXG4gIGNvbnN0IHNsYXNoUmVnZXggPSBuZXcgUmVnRXhwKFNMQVNIX0NPTU1BTkRfTUFSS0VSX1JFR0VYLnNvdXJjZSwgJ2cnKVxuICBjb25zdCB3aXRob3V0U2xhc2ggPSB3aXRob3V0TWVudGlvbnMucmVwbGFjZShzbGFzaFJlZ2V4LCAoX20sIF9pZCwgbGFiZWwpID0+IGAvJHtTdHJpbmcobGFiZWwpLnRyaW0oKX1gKVxuICBjb25zdCB3aXRob3V0SW5jb21wbGV0ZVNsYXNoID0gd2l0aG91dFNsYXNoLnJlcGxhY2UoXG4gICAgSU5DT01QTEVURV9TTEFTSF9NQVJLRVJfUkVHRVgsXG4gICAgKF9tLCBsYWJlbCkgPT4gYC8ke1N0cmluZyhsYWJlbCkudHJpbSgpfWBcbiAgKVxuICByZXR1cm4gd2l0aG91dEluY29tcGxldGVTbGFzaC5yZXBsYWNlKElOQ09NUExFVEVfTUVOVElPTl9NQVJLRVJfUkVHRVgsICcnKS50cmltKClcbn1cblxuLyoqIEdlbmVyYSBsYSBVUkwgZGUgbmF2ZWdhY2nDs24gcGFyYSB1biBtZW50aW9uIHNlZ8O6biBzdSB0aXBvLiAqL1xuY29uc3QgZ2V0TWVudGlvblVybCA9ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgaWQ6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB8IG51bGwgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdjbGllbnQnOlxuICAgICAgcmV0dXJuIGAvY2xpZW50cy8ke2lkfWBcbiAgICBjYXNlICdwcm9qZWN0JzpcbiAgICAgIHJldHVybiBgL3Byb2plY3RzLyR7aWR9L2Rhc2hib2FyZGBcbiAgICBjYXNlICd0YXNrJzpcbiAgICAgIHJldHVybiBgL3Rhc2tzLyR7aWR9L2RldGFpbGBcbiAgICBjYXNlICd1c2VyJzpcbiAgICAgIHJldHVybiBudWxsIC8vIExvcyB1c2VycyBubyBzb24gY2xpY2tlYWJsZXNcbiAgICBjYXNlICdtY3AnOlxuICAgICAgcmV0dXJuIG51bGxcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5jb25zdCBNZW50aW9uQ2hpcCA9ICh7IHR5cGUsIGlkLCBsYWJlbCB9OiB7IHR5cGU6IENvbnRleHRFbnRpdHlUeXBlOyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0pID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZExhYmVsID0gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChsYWJlbClcbiAgY29uc3QgdXJsID0gZ2V0TWVudGlvblVybCh0eXBlLCBpZClcbiAgY29uc3QgaXNDbGlja2FibGUgPSAhIXVybFxuICBjb25zdCBpc1Rhc2sgPSB0eXBlID09PSAndGFzaydcbiAgY29uc3QgaXNQcm9qZWN0ID0gdHlwZSA9PT0gJ3Byb2plY3QnXG4gIGNvbnN0IHNob3dJY29uID0gIWlzUHJvamVjdFxuICBjb25zdCBpY29uU2l6ZSA9IGlzVGFzayA/IDE2IDogMTRcbiAgY29uc3QgeyBmaXJzdFdvcmQsIHJlc3QgfSA9IHNwbGl0TGFiZWxGaXJzdFdvcmQobm9ybWFsaXplZExhYmVsKVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGU6IE1vdXNlRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQgfCBIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFpc0NsaWNrYWJsZSB8fCAhdXJsKSByZXR1cm5cbiAgICBpZiAodHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgICBpZiAoZS5tZXRhS2V5IHx8IGUuY3RybEtleSkgcmV0dXJuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIG9wZW5UYXNrSW5Db3JQYW5lbChpZCwgJ2RldGFpbCcpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogS2V5Ym9hcmRFdmVudDxIVE1MQW5jaG9yRWxlbWVudCB8IEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWlzQ2xpY2thYmxlIHx8IHR5cGUgIT09ICd0YXNrJykgcmV0dXJuXG4gICAgaWYgKGUua2V5ICE9PSAnRW50ZXInICYmIGUua2V5ICE9PSAnICcpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrSW5Db3JQYW5lbChpZCwgJ2RldGFpbCcpXG4gIH1cblxuICBpZiAodHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1Rhc2tMaW5rXG4gICAgICAgIGhyZWY9e3VybCA/PyAnIyd9XG4gICAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICAgIGRhdGEtY29yLWxpbms9XCJ0YXNrXCJcbiAgICAgICAgZGF0YS1tZW50aW9uLXR5cGU9XCJ0YXNrXCJcbiAgICAgICAgZGF0YS1tZW50aW9uLXN1cmZhY2U9XCJjaGF0XCJcbiAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgID5cbiAgICAgICAge25vcm1hbGl6ZWRMYWJlbH1cbiAgICAgIDwvU0NUYXNrTGluaz5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0lubGluZU1lbnRpb25cbiAgICAgICR0eXBlPXt0eXBlfVxuICAgICAgJGlzQ2xpY2thYmxlPXtpc0NsaWNrYWJsZX1cbiAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICBkYXRhLW1lbnRpb24tdHlwZT17dHlwZX1cbiAgICAgIGRhdGEtbWVudGlvbi1zdXJmYWNlPVwiY2hhdFwiXG4gICAgICBvbkNsaWNrPXtpc0NsaWNrYWJsZSA/IGhhbmRsZUNsaWNrIDogdW5kZWZpbmVkfVxuICAgICAgcm9sZT17aXNDbGlja2FibGUgPyAnYnV0dG9uJyA6IHVuZGVmaW5lZH1cbiAgICAgIHRhYkluZGV4PXtpc0NsaWNrYWJsZSA/IDAgOiB1bmRlZmluZWR9XG4gICAgPlxuICAgICAge3Nob3dJY29uID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxTQ0lubGluZU1lbnRpb25JY29uUm93PlxuICAgICAgICAgICAgPFNDSW5saW5lTWVudGlvbkljb24gJHRhc2s9e2lzVGFza30+XG4gICAgICAgICAgICAgIHtnZXRDb250ZXh0TWVudGlvbkljb24odHlwZSwgTUVOVElPTl9DSElQX0NPTE9SU1t0eXBlXS5mZywgaWQsIGljb25TaXplKX1cbiAgICAgICAgICAgIDwvU0NJbmxpbmVNZW50aW9uSWNvbj5cbiAgICAgICAgICAgIDxTQ0lubGluZU1lbnRpb25Xb3JkPntmaXJzdFdvcmR9PC9TQ0lubGluZU1lbnRpb25Xb3JkPlxuICAgICAgICAgIDwvU0NJbmxpbmVNZW50aW9uSWNvblJvdz5cbiAgICAgICAgICB7cmVzdCA/IDxTQ0lubGluZU1lbnRpb25SZXN0PntyZXN0fTwvU0NJbmxpbmVNZW50aW9uUmVzdD4gOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgeyFzaG93SWNvbiA/IG5vcm1hbGl6ZWRMYWJlbCA6IG51bGx9XG4gICAgPC9TQ0lubGluZU1lbnRpb24+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IGhhc0lubGluZU1hcmtlcnMgPSAodGV4dDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGlmICghdGV4dCkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0ZXh0LmluY2x1ZGVzKCdbW21lbnRpb246JykgfHwgdGV4dC5pbmNsdWRlcygnW1tzbGFzaF9jb21tYW5kOicpXG59XG5cbnR5cGUgSW5saW5lTWFya2VyID1cbiAgfCB7IGtpbmQ6ICdtZW50aW9uJzsgaW5kZXg6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IHR5cGU6IENvbnRleHRFbnRpdHlUeXBlOyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6ICdzbGFzaCc7IGluZGV4OiBudW1iZXI7IGxlbmd0aDogbnVtYmVyOyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1cblxuY29uc3QgY29sbGVjdElubGluZU1hcmtlcnMgPSAodGV4dDogc3RyaW5nKTogSW5saW5lTWFya2VyW10gPT4ge1xuICBjb25zdCBtYXJrZXJzOiBJbmxpbmVNYXJrZXJbXSA9IFtdXG5cbiAgTUVOVElPTl9NQVJLRVJfUkVHRVgubGFzdEluZGV4ID0gMFxuICBsZXQgbTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IE1FTlRJT05fTUFSS0VSX1JFR0VYLmV4ZWModGV4dClcbiAgd2hpbGUgKG0pIHtcbiAgICBjb25zdCBbLCByYXdUeXBlLCBpZCwgbGFiZWxdID0gbVxuICAgIGNvbnN0IHR5cGUgPSBBTExPV0VEX1RZUEVTLmluY2x1ZGVzKHJhd1R5cGUgYXMgQ29udGV4dEVudGl0eVR5cGUpID8gKHJhd1R5cGUgYXMgQ29udGV4dEVudGl0eVR5cGUpIDogJ3VzZXInXG4gICAgbWFya2Vycy5wdXNoKHsga2luZDogJ21lbnRpb24nLCBpbmRleDogbS5pbmRleCwgbGVuZ3RoOiBtWzBdLmxlbmd0aCwgdHlwZSwgaWQsIGxhYmVsIH0pXG4gICAgbSA9IE1FTlRJT05fTUFSS0VSX1JFR0VYLmV4ZWModGV4dClcbiAgfVxuXG4gIGNvbnN0IHNsYXNoUmVnZXggPSBuZXcgUmVnRXhwKFNMQVNIX0NPTU1BTkRfTUFSS0VSX1JFR0VYLnNvdXJjZSwgJ2cnKVxuICBsZXQgczogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IHNsYXNoUmVnZXguZXhlYyh0ZXh0KVxuICB3aGlsZSAocykge1xuICAgIG1hcmtlcnMucHVzaCh7IGtpbmQ6ICdzbGFzaCcsIGluZGV4OiBzLmluZGV4LCBsZW5ndGg6IHNbMF0ubGVuZ3RoLCBpZDogc1sxXSwgbGFiZWw6IHNbMl0gfSlcbiAgICBzID0gc2xhc2hSZWdleC5leGVjKHRleHQpXG4gIH1cblxuICByZXR1cm4gbWFya2Vycy5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleClcbn1cblxuZXhwb3J0IGNvbnN0IHJlbmRlclRleHRXaXRoTWVudGlvbnMgPSAodGV4dDogc3RyaW5nKTogQXJyYXk8c3RyaW5nIHwgUmVhY3RFbGVtZW50PiA9PiB7XG4gIGlmICghdGV4dCkgcmV0dXJuIFt0ZXh0XVxuICBjb25zdCBtYXJrZXJzID0gY29sbGVjdElubGluZU1hcmtlcnModGV4dClcbiAgaWYgKG1hcmtlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gW3RleHRdXG5cbiAgY29uc3Qgb3V0OiBBcnJheTxzdHJpbmcgfCBSZWFjdEVsZW1lbnQ+ID0gW11cbiAgbGV0IGxhc3RJZHggPSAwXG4gIG1hcmtlcnMuZm9yRWFjaChtYXJrZXIgPT4ge1xuICAgIGlmIChtYXJrZXIuaW5kZXggPiBsYXN0SWR4KSBvdXQucHVzaCh0ZXh0LnNsaWNlKGxhc3RJZHgsIG1hcmtlci5pbmRleCkpXG4gICAgaWYgKG1hcmtlci5raW5kID09PSAnbWVudGlvbicpIHtcbiAgICAgIG91dC5wdXNoKFxuICAgICAgICA8TWVudGlvbkNoaXBcbiAgICAgICAgICBrZXk9e2BtZW50aW9uLSR7bWFya2VyLmluZGV4fS0ke21hcmtlci50eXBlfS0ke21hcmtlci5pZH1gfVxuICAgICAgICAgIHR5cGU9e21hcmtlci50eXBlfVxuICAgICAgICAgIGlkPXttYXJrZXIuaWR9XG4gICAgICAgICAgbGFiZWw9e21hcmtlci5sYWJlbH1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0LnB1c2goPFNsYXNoQ29tbWFuZENoaXAga2V5PXtgc2xhc2gtJHttYXJrZXIuaW5kZXh9LSR7bWFya2VyLmlkfWB9IGxhYmVsPXttYXJrZXIubGFiZWx9IGlubGluZT17ZmFsc2V9IC8+KVxuICAgIH1cbiAgICBsYXN0SWR4ID0gbWFya2VyLmluZGV4ICsgbWFya2VyLmxlbmd0aFxuICB9KVxuICBpZiAobGFzdElkeCA8IHRleHQubGVuZ3RoKSBvdXQucHVzaCh0ZXh0LnNsaWNlKGxhc3RJZHgpKVxuICByZXR1cm4gb3V0XG59XG4iXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPQSxNQUFNLElBQUlDLEdBQUcsUUFBUSxtQkFBbUI7QUFDL0MsU0FBNENDLDBCQUEwQixRQUFRLHlCQUF5QjtBQUN2RyxTQUNFQyxtQkFBbUIsRUFDbkJDLDhCQUE4QixRQUN6QixrRUFBa0U7QUFDekUsU0FBU0MsZ0JBQWdCLFFBQVEsc0NBQXNDO0FBQ3ZFLFNBQVNDLDBCQUEwQixRQUFRLHNCQUFzQjtBQUNqRSxTQUFTQyxnQkFBZ0IsUUFBUSxrQkFBa0I7QUFDbkQsU0FBU0MsVUFBVSxRQUFRLGtEQUFrRDtBQUM3RSxTQUFTQyxxQkFBcUIs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
392
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsIk1FTlRJT05fQ0hJUF9DT0xPUlMiLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJTbGFzaENvbW1hbmRDaGlwIiwiU0xBU0hfQ09NTUFORF9NQVJLRVJfUkVHRVgiLCJWSU9MRVRfSUFfQ09MT1JTIiwiU0NUYXNrTGluayIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJNRU5USU9OX01BUktFUl9SRUdFWCIsIk1BSUFfTUVOVElPTl9QUk9UT0NPTCIsIklOQ09NUExFVEVfTUVOVElPTl9NQVJLRVJfUkVHRVgiLCJJTkNPTVBMRVRFX1NMQVNIX01BUktFUl9SRUdFWCIsIkFMTE9XRURfVFlQRVMiLCJwYXJzZU1lbnRpb25Qcm90b2NvbEhyZWYiLCJocmVmIiwicmVzdCIsInNsaWNlIiwibGVuZ3RoIiwic2xhc2hJZHgiLCJpbmRleE9mIiwicmF3VHlwZSIsInJhd0lkIiwiaWQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJfdW51c2VkIiwidHlwZSIsImluY2x1ZGVzIiwic2VyaWFsaXplTWVudGlvbiIsIm1lbnRpb24iLCJjb25jYXQiLCJsYWJlbCIsInRyYW5zZm9ybU1lbnRpb25NYXJrZXJzIiwidGV4dCIsInJlcGxhY2UiLCJfbSIsInNhZmVMYWJlbCIsIlN0cmluZyIsImVuY29kZVVSSUNvbXBvbmVudCIsIm1lbnRpb25DaGlsZHJlblRvTGFiZWwiLCJjaGlsZHJlbiIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImMiLCJqb2luIiwic3BsaXRMYWJlbEZpcnN0V29yZCIsIm5vcm1hbGl6ZWQiLCJ0cmltIiwiZmlyc3RXb3JkIiwiZmlyc3RXaGl0ZXNwYWNlSWR4Iiwic2VhcmNoIiwiaW5saW5lTWVudGlvbkhvdmVyQ3NzIiwiaXNDbGlja2FibGUiLCJiZyIsIlNDSW5saW5lTWVudGlvbiIsInNwYW4iLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIl9yZWYiLCJfTUVOVElPTl9DSElQX0NPTE9SUyQiLCIkdHlwZSIsInVzZXIiLCJfcmVmMiIsIl9NRU5USU9OX0NISVBfQ09MT1JTJDIiLCJmZyIsIl9yZWYzIiwiJGlzQ2xpY2thYmxlIiwiX3JlZjQiLCJTQ0lubGluZU1lbnRpb25JY29uIiwiX3JlZjUiLCIkdGFzayIsIl9yZWY2IiwiU0NJbmxpbmVNZW50aW9uSWNvblJvdyIsIlNDSW5saW5lTWVudGlvbldvcmQiLCJTQ0lubGluZU1lbnRpb25SZXN0IiwicmVuZGVyTWVudGlvbkxpbmsiLCJzdGFydHNXaXRoIiwiX3BhcnNlTWVudGlvblByb3RvY29sIiwiaXNUYXNrIiwiaWNvblNpemUiLCJ0YXNrVXJsIiwiaGFuZGxlVGFza0NsaWNrIiwiZSIsIm1ldGFLZXkiLCJjdHJsS2V5IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUYXNrS2V5RG93biIsImtleSIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJvbktleURvd24iLCJpc1Byb2plY3QiLCJwcm9qZWN0VXJsIiwic2hvd0ljb24iLCJfc3BsaXRMYWJlbEZpcnN0V29yZCIsImhhbmRsZVByb2plY3RDbGljayIsIndpbmRvdyIsIm9wZW4iLCJ1bmRlZmluZWQiLCJyb2xlIiwidGFiSW5kZXgiLCJzdHJpcE1lbnRpb25NYXJrZXJzIiwiX3R5cGUiLCJfaWQiLCJmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMiLCJ3aXRob3V0TWVudGlvbnMiLCJzbGFzaFJlZ2V4IiwiUmVnRXhwIiwic291cmNlIiwid2l0aG91dFNsYXNoIiwid2l0aG91dEluY29tcGxldGVTbGFzaCIsImdldE1lbnRpb25VcmwiLCJNZW50aW9uQ2hpcCIsIl9yZWY3Iiwibm9ybWFsaXplZExhYmVsIiwidXJsIiwiX3NwbGl0TGFiZWxGaXJzdFdvcmQyIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVLZXlEb3duIiwiaGFzSW5saW5lTWFya2VycyIsImNvbGxlY3RJbmxpbmVNYXJrZXJzIiwibWFya2VycyIsImxhc3RJbmRleCIsIm0iLCJleGVjIiwiX20yIiwiX20zIiwiX3NsaWNlZFRvQXJyYXkiLCJwdXNoIiwia2luZCIsImluZGV4IiwicyIsInNvcnQiLCJhIiwiYiIsInJlbmRlclRleHRXaXRoTWVudGlvbnMiLCJvdXQiLCJsYXN0SWR4IiwiZm9yRWFjaCIsIm1hcmtlciIsImlubGluZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9yZW5kZXJDb250ZXh0TWVudGlvbnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlYWN0Tm9kZSwgUmVhY3RFbGVtZW50LCBNb3VzZUV2ZW50LCBLZXlib2FyZEV2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgc3R5bGVkLCB7IGNzcyB9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uLCBDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHtcbiAgTUVOVElPTl9DSElQX0NPTE9SUyxcbiAgTUVOVElPTl9DSElQX05PTl9UQVNLX0hPVkVSX0JHLFxufSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uQ2hpcC9Db250ZXh0TWVudGlvbkNoaXAuc3R5bGVzJ1xuaW1wb3J0IHsgU2xhc2hDb21tYW5kQ2hpcCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvU2xhc2hDb21tYW5kQ2hpcCdcbmltcG9ydCB7IFNMQVNIX0NPTU1BTkRfTUFSS0VSX1JFR0VYIH0gZnJvbSAnLi9zbGFzaENvbW1hbmRNYXJrZXInXG5pbXBvcnQgeyBWSU9MRVRfSUFfQ09MT1JTIH0gZnJvbSAnLi4vc3R5bGVzL2NvbmZpZydcbmltcG9ydCB7IFNDVGFza0xpbmsgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9uZXdTdHlsZXMnXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuL2NvbnRleHRNZW50aW9uSWNvbnMnXG5pbXBvcnQgeyBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsIH0gZnJvbSAnLi9jb250ZXh0TWVudGlvbkxhYmVsJ1xuaW1wb3J0IHsgb3BlblRhc2tJbkNvclBhbmVsIH0gZnJvbSAnLi9vcGVuVGFza0luQ29yUGFuZWwnXG5cbi8qKlxuICogRm9ybWF0byBkZWwgbWFyY2Fkb3IgcXVlIHZpYWphIGVuIGVsIHRleHRvIGRlbCBtZW5zYWplOlxuICogICBbW21lbnRpb246PHR5cGU+OjxpZD58PGxhYmVsPl1dXG4gKlxuICogRWwgZWRpdG9yIGxvIGVtaXRlIGN1YW5kbyBzZXJpYWxpemEgZWwgY29udGVudGVkaXRhYmxlLCBlbCBiYWNrZW5kIGxvXG4gKiBwZXJzaXN0ZSB0YWwgY3VhbCB5IGFsIHJlbmRlcml6YXIgc2UgdHJhbnNmb3JtYSBlbiB1biBsaW5rIG1hcmtkb3duIGNvblxuICogdW4gcHJvdG9jb2xvIHByb3BpbyBxdWUgYEN1c3RvbUxpbmtgIGludGVyY2VwdGEgeSBkaWJ1amEgY29tbyBzcGFuXG4gKiBlc3RpbGFkby5cbiAqXG4gKiBQb3Igc2VwYXJhZG8sIGxhIG1ldGFkYXRhIGBjb250ZXh0X21lc3NhZ2VgIGxsZXZhIGxvcyB2YWxvcmVzIGxpbXBpb3NcbiAqIChpZCArIG5hbWUpIHBhcmEgcXVlIGVsIGJhY2tlbmQgcHVlZGEgaW50ZXJwcmV0YXIgbGFzIGVudGlkYWRlcyBzaW5cbiAqIHRlbmVyIHF1ZSBwYXJzZWFyIGVsIHRleHRvLlxuICovXG4vKipcbiAqIExhYmVsIHB1ZWRlIGNvbnRlbmVyIGBdYCAoZWo6IFwiW0VkdWNhdGVdQmxvZyBQb3N0IC4uLlwiKSwgcG9yIGVzb1xuICogc2UgY2FwdHVyYSBkZSBmb3JtYSBsYXp5IGhhc3RhIGVsIGNpZXJyZSByZWFsIGBdXWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOihjbGllbnR8cHJvamVjdHx0YXNrfHVzZXJ8bWNwKTooW158XFxdXSspXFx8KFtcXHNcXFNdKj8pXFxdXFxdL2dcbmV4cG9ydCBjb25zdCBNQUlBX01FTlRJT05fUFJPVE9DT0wgPSAnbWFpYS1tZW50aW9uOi8vJ1xuY29uc3QgSU5DT01QTEVURV9NRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOltcXHNcXFNdKiQvXG5jb25zdCBJTkNPTVBMRVRFX1NMQVNIX01BUktFUl9SRUdFWCA9IC9cXFtcXFtzbGFzaF9jb21tYW5kOltefFxcXV0rXFx8KFtcXHNcXFNdKikkL1xuXG5jb25zdCBBTExPV0VEX1RZUEVTOiBDb250ZXh0RW50aXR5VHlwZVtdID0gWydjbGllbnQnLCAncHJvamVjdCcsICd0YXNrJywgJ3VzZXInLCAnbWNwJ11cblxuY29uc3QgcGFyc2VNZW50aW9uUHJvdG9jb2xIcmVmID0gKGhyZWY6IHN0cmluZyk6IHsgdHlwZTogQ29udGV4dEVudGl0eVR5cGU7IGlkOiBzdHJpbmcgfSA9PiB7XG4gIGNvbnN0IHJlc3QgPSBocmVmLnNsaWNlKE1BSUFfTUVOVElPTl9QUk9UT0NPTC5sZW5ndGgpXG4gIGNvbnN0IHNsYXNoSWR4ID0gcmVzdC5pbmRleE9mKCcvJylcbiAgY29uc3QgcmF3VHlwZSA9IHNsYXNoSWR4ID49IDAgPyByZXN0LnNsaWNlKDAsIHNsYXNoSWR4KSA6IHJlc3RcbiAgY29uc3QgcmF3SWQgPSBzbGFzaElkeCA+PSAwID8gcmVzdC5zbGljZShzbGFzaElkeCArIDEpIDogJydcbiAgbGV0IGlkID0gJydcbiAgdHJ5IHtcbiAgICBpZCA9IHJhd0lkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJhd0lkKSA6ICcnXG4gIH0gY2F0Y2gge1xuICAgIGlkID0gcmF3SWRcbiAgfVxuICBjb25zdCB0eXBlID0gQUxMT1dFRF9UWVBFUy5pbmNsdWRlcyhyYXdUeXBlIGFzIENvbnRleHRFbnRpdHlUeXBlKSA/IChyYXdUeXBlIGFzIENvbnRleHRFbnRpdHlUeXBlKSA6ICd1c2VyJ1xuICByZXR1cm4geyB0eXBlLCBpZCB9XG59XG5cbi8qKiBHZW5lcmEgZWwgbWFyY2Fkb3IgcGFyYSB1biBtZW50aW9uIGRhZG8uIExvIHVzYSBlbCBlZGl0b3IgYWwgc2VyaWFsaXphci4gKi9cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVNZW50aW9uID0gKG1lbnRpb246IENvbnRleHRNZW50aW9uKTogc3RyaW5nID0+XG4gIGBbW21lbnRpb246JHttZW50aW9uLnR5cGV9OiR7bWVudGlvbi5pZH18JHttZW50aW9uLmxhYmVsfV1dYFxuXG4vKipcbiAqIENvbnZpZXJ0ZSBjYWRhIGBbW21lbnRpb246Li4uXV1gIGVuIHVuIGxpbmsgbWFya2Rvd24gY29uIHByb3RvY29sbyBwcm9waW9cbiAqIHBhcmEgcXVlIFN0cmVhbWRvd24gbG8gZW1pdGEgY29tbyBgPGE+YCB5IGBDdXN0b21MaW5rYCBsbyBpbnRlcmNlcHRlLlxuICovXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtTWVudGlvbk1hcmtlcnMgPSAodGV4dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCF0ZXh0KSByZXR1cm4gdGV4dFxuICByZXR1cm4gdGV4dC5yZXBsYWNlKE1FTlRJT05fTUFSS0VSX1JFR0VYLCAoX20sIHR5cGUsIGlkLCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IHNhZmVMYWJlbCA9IFN0cmluZyhsYWJlbCkucmVwbGFjZSgvW1xcXFxcXF1dL2csICdcXFxcJCYnKVxuICAgIHJldHVybiBgWyR7c2FmZUxhYmVsfV0oJHtNQUlBX01FTlRJT05fUFJPVE9DT0x9JHt0eXBlfS8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoaWQpKX0pYFxuICB9KVxufVxuXG5jb25zdCBtZW50aW9uQ2hpbGRyZW5Ub0xhYmVsID0gKGNoaWxkcmVuOiBSZWFjdE5vZGUpOiBzdHJpbmcgPT4ge1xuICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJykgcmV0dXJuIG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwoY2hpbGRyZW4pXG4gIGlmIChjaGlsZHJlbiA9PSBudWxsIHx8IGNoaWxkcmVuID09PSBmYWxzZSkgcmV0dXJuICcnXG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIHJldHVybiBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKGNoaWxkcmVuLm1hcChjID0+ICh0eXBlb2YgYyA9PT0gJ3N0cmluZycgPyBjIDogJycpKS5qb2luKCcnKSlcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChTdHJpbmcoY2hpbGRyZW4pKVxufVxuXG5jb25zdCBzcGxpdExhYmVsRmlyc3RXb3JkID0gKGxhYmVsOiBzdHJpbmcpOiB7IGZpcnN0V29yZDogc3RyaW5nOyByZXN0OiBzdHJpbmcgfSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKGxhYmVsKS50cmltKClcbiAgaWYgKCFub3JtYWxpemVkKSByZXR1cm4geyBmaXJzdFdvcmQ6ICcnLCByZXN0OiAnJyB9XG4gIGNvbnN0IGZpcnN0V2hpdGVzcGFjZUlkeCA9IG5vcm1hbGl6ZWQuc2VhcmNoKC9cXHMvKVxuICBpZiAoZmlyc3RXaGl0ZXNwYWNlSWR4IDwgMCkgcmV0dXJuIHsgZmlyc3RXb3JkOiBub3JtYWxpemVkLCByZXN0OiAnJyB9XG4gIHJldHVybiB7XG4gICAgZmlyc3RXb3JkOiBub3JtYWxpemVkLnNsaWNlKDAsIGZpcnN0V2hpdGVzcGFjZUlkeCksXG4gICAgcmVzdDogbm9ybWFsaXplZC5zbGljZShmaXJzdFdoaXRlc3BhY2VJZHgpLFxuICB9XG59XG5cbmNvbnN0IGlubGluZU1lbnRpb25Ib3ZlckNzcyA9ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgaXNDbGlja2FibGU/OiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IGJnID0gdHlwZSA9PT0gJ3Byb2plY3QnID8gVklPTEVUX0lBX0NPTE9SU1sxMDBdIDogTUVOVElPTl9DSElQX05PTl9UQVNLX0hPVkVSX0JHXG4gIHJldHVybiBjc3NgXG4gICAgYmFja2dyb3VuZDogJHtiZ307XG4gICAgb3BhY2l0eTogJHtpc0NsaWNrYWJsZSA/IDAuOTUgOiAxfTtcbiAgYFxufVxuXG4vKiogU3BhbiBpbmxpbmUgZXN0aWxhZG8gKG1lbmNpb25lcyBuby10YXNrIGVuIGNoYXQpLiAqL1xuY29uc3QgU0NJbmxpbmVNZW50aW9uID0gc3R5bGVkLnNwYW48eyAkdHlwZTogQ29udGV4dEVudGl0eVR5cGU7ICRpc0NsaWNrYWJsZT86IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGlubGluZTtcbiAgcGFkZGluZzogMnB4IDRweDtcbiAgbWFyZ2luOiAwIDFweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmb250LWZhbWlseTogdmFyKC0tY29yLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICdXb3JrIFNhbnMnKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgYmFja2dyb3VuZDogJHsoeyAkdHlwZSB9KSA9PiAoTUVOVElPTl9DSElQX0NPTE9SU1skdHlwZV0gPz8gTUVOVElPTl9DSElQX0NPTE9SUy51c2VyKS5iZ307XG4gIGNvbG9yOiAkeyh7ICR0eXBlIH0pID0+IChNRU5USU9OX0NISVBfQ09MT1JTWyR0eXBlXSA/PyBNRU5USU9OX0NISVBfQ09MT1JTLnVzZXIpLmZnfTtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgY3Vyc29yOiAkeyh7ICRpc0NsaWNrYWJsZSB9KSA9PiAoJGlzQ2xpY2thYmxlID8gJ3BvaW50ZXInIDogJ2RlZmF1bHQnKX07XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAmOmhvdmVyIHtcbiAgICAkeyh7ICR0eXBlLCAkaXNDbGlja2FibGUgfSkgPT4gaW5saW5lTWVudGlvbkhvdmVyQ3NzKCR0eXBlLCAkaXNDbGlja2FibGUpfVxuICB9XG5gXG5cbmNvbnN0IFNDSW5saW5lTWVudGlvbkljb24gPSBzdHlsZWQuc3Bhbjx7ICR0YXNrPzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgd2lkdGg6ICR7KHsgJHRhc2sgfSkgPT4gKCR0YXNrID8gJzE2cHgnIDogJzE0cHgnKX07XG4gIGhlaWdodDogJHsoeyAkdGFzayB9KSA9PiAoJHRhc2sgPyAnMTZweCcgOiAnMTRweCcpfTtcbmBcblxuY29uc3QgU0NJbmxpbmVNZW50aW9uSWNvblJvdyA9IHN0eWxlZC5zcGFuYFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuYFxuXG5jb25zdCBTQ0lubGluZU1lbnRpb25Xb3JkID0gc3R5bGVkLnNwYW5gXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5gXG5cbmNvbnN0IFNDSW5saW5lTWVudGlvblJlc3QgPSBzdHlsZWQuc3BhbmBcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbmBcblxuLyoqXG4gKiBTaSBlbCBocmVmIGNvcnJlc3BvbmRlIGFsIHByb3RvY29sbyBkZSBtZW50aW9uLCBkZXZ1ZWx2ZSB1biBub2RvIGVzdGlsYWRvIHBvciB0aXBvLlxuICogTGFzIHRhcmVhcyB1c2FuIGA8YT5gIGNvbW8gbG9zIGVubGFjZXMgZGUgdGFyZWEgZGVsIGFnZW50ZSAoYC5oYXMtdGFzay1saW5rc2ApLlxuICovXG5leHBvcnQgY29uc3QgcmVuZGVyTWVudGlvbkxpbmsgPSAoaHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkLCBjaGlsZHJlbjogUmVhY3ROb2RlKTogUmVhY3ROb2RlIHwgbnVsbCA9PiB7XG4gIGlmICghaHJlZiB8fCAhaHJlZi5zdGFydHNXaXRoKE1BSUFfTUVOVElPTl9QUk9UT0NPTCkpIHJldHVybiBudWxsXG4gIGNvbnN0IHsgdHlwZSwgaWQgfSA9IHBhcnNlTWVudGlvblByb3RvY29sSHJlZihocmVmKVxuICBjb25zdCBsYWJlbCA9IG1lbnRpb25DaGlsZHJlblRvTGFiZWwoY2hpbGRyZW4pXG4gIGNvbnN0IGlzVGFzayA9IHR5cGUgPT09ICd0YXNrJ1xuICBjb25zdCBpY29uU2l6ZSA9IGlzVGFzayA/IDE2IDogMTRcbiAgY29uc3QgdGFza1VybCA9IGAvdGFza3MvJHtpZH0vZGV0YWlsYFxuXG4gIGNvbnN0IGhhbmRsZVRhc2tDbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVRhc2tLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKGUua2V5ICE9PSAnRW50ZXInICYmIGUua2V5ICE9PSAnICcpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrSW5Db3JQYW5lbChpZCwgJ2RldGFpbCcpXG4gIH1cblxuICBpZiAoaXNUYXNrKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1Rhc2tMaW5rXG4gICAgICAgIGhyZWY9e3Rhc2tVcmx9XG4gICAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICAgIGRhdGEtbWVudGlvbi10eXBlPXt0eXBlfVxuICAgICAgICBkYXRhLW1lbnRpb24tc3VyZmFjZT1cImNoYXRcIlxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVUYXNrQ2xpY2t9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlVGFza0tleURvd259XG4gICAgICA+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvU0NUYXNrTGluaz5cbiAgICApXG4gIH1cblxuICBjb25zdCBpc1Byb2plY3QgPSB0eXBlID09PSAncHJvamVjdCdcbiAgY29uc3QgcHJvamVjdFVybCA9IGlzUHJvamVjdCA/IGAvcHJvamVjdHMvJHtpZH0vZGFzaGJvYXJkYCA6IG51bGxcbiAgY29uc3Qgc2hvd0ljb24gPSAhaXNQcm9qZWN0XG4gIGNvbnN0IHsgZmlyc3RXb3JkLCByZXN0IH0gPSBzcGxpdExhYmVsRmlyc3RXb3JkKGxhYmVsKVxuXG4gIGNvbnN0IGhhbmRsZVByb2plY3RDbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICBpZiAoIXByb2plY3RVcmwpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB3aW5kb3cub3Blbihwcm9qZWN0VXJsLCAnX2JsYW5rJylcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDSW5saW5lTWVudGlvblxuICAgICAgJHR5cGU9e3R5cGV9XG4gICAgICAkaXNDbGlja2FibGU9e2lzUHJvamVjdH1cbiAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICBkYXRhLW1lbnRpb24tdHlwZT17dHlwZX1cbiAgICAgIGRhdGEtbWVudGlvbi1zdXJmYWNlPVwiY2hhdFwiXG4gICAgICBvbkNsaWNrPXtpc1Byb2plY3QgPyBoYW5kbGVQcm9qZWN0Q2xpY2sgOiB1bmRlZmluZWR9XG4gICAgICByb2xlPXtpc1Byb2plY3QgPyAnYnV0dG9uJyA6IHVuZGVmaW5lZH1cbiAgICAgIHRhYkluZGV4PXtpc1Byb2plY3QgPyAwIDogdW5kZWZpbmVkfVxuICAgID5cbiAgICAgIHtzaG93SWNvbiA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8U0NJbmxpbmVNZW50aW9uSWNvblJvdz5cbiAgICAgICAgICAgIDxTQ0lubGluZU1lbnRpb25JY29uICR0YXNrPXtpc1Rhc2t9PlxuICAgICAgICAgICAgICB7Z2V0Q29udGV4dE1lbnRpb25JY29uKHR5cGUsIE1FTlRJT05fQ0hJUF9DT0xPUlNbdHlwZV0uZmcsIGlkLCBpY29uU2l6ZSl9XG4gICAgICAgICAgICA8L1NDSW5saW5lTWVudGlvbkljb24+XG4gICAgICAgICAgICA8U0NJbmxpbmVNZW50aW9uV29yZD57Zmlyc3RXb3JkfTwvU0NJbmxpbmVNZW50aW9uV29yZD5cbiAgICAgICAgICA8L1NDSW5saW5lTWVudGlvbkljb25Sb3c+XG4gICAgICAgICAge3Jlc3QgPyA8U0NJbmxpbmVNZW50aW9uUmVzdD57cmVzdH08L1NDSW5saW5lTWVudGlvblJlc3Q+IDogbnVsbH1cbiAgICAgICAgPC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIHshc2hvd0ljb24gPyBsYWJlbCA6IG51bGx9XG4gICAgPC9TQ0lubGluZU1lbnRpb24+XG4gIClcbn1cblxuLyoqIFF1aXRhIGxvcyBtYXJrZXJzIGRlbCB0ZXh0bywgZGVqYW5kbyBzb2xvIGBsYWJlbGAuIMOadGlsIHBhcmEgZmFsbGJhY2sgcGxhbm8uICovXG5leHBvcnQgY29uc3Qgc3RyaXBNZW50aW9uTWFya2VycyA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdGV4dC5yZXBsYWNlKE1FTlRJT05fTUFSS0VSX1JFR0VYLCAoX20sIF90eXBlLCBfaWQsIGxhYmVsKSA9PiBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKFN0cmluZyhsYWJlbCkpKVxuXG4vKipcbiAqIFTDrXR1bG9zIGRlIGNvbnZlcnNhY2nDs24gKHAuIGVqLiBgbGFzdF9xdWVzdGlvbmAgZGVyaXZhZG8gZGVsIHByaW1lciBtZW5zYWplKSBwdWVkZW5cbiAqIGluY2x1aXIgZWwgdGV4dG8gc2VyaWFsaXphZG8gYFtbbWVudGlvbjp0eXBlOmlkfGxhYmVsXV1gLiBQYXJhIHNpZGViYXIgeSBsaXN0YWRvcyxcbiAqIHJlZW1wbGF6YSBjYWRhIGJsb3F1ZSBwb3IgYGxhYmVsYCBlbiB0ZXh0byBwbGFubywgc2luIGVsIG1hcmNhZG9yIGNydWRvLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0Q2hhdExpc3RUaXRsZU1lbnRpb25zID0gKHRleHQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgPT4ge1xuICBpZiAodGV4dCA9PSBudWxsIHx8IHRleHQgPT09ICcnKSByZXR1cm4gdGV4dCA/PyAnJ1xuICBjb25zdCB3aXRob3V0TWVudGlvbnMgPSB0ZXh0LnJlcGxhY2UoTUVOVElPTl9NQVJLRVJfUkVHRVgsIChfbSwgX3R5cGUsIF9pZCwgbGFiZWwpID0+XG4gICAgbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChTdHJpbmcobGFiZWwpLnRyaW0oKSlcbiAgKVxuICBjb25zdCBzbGFzaFJlZ2V4ID0gbmV3IFJlZ0V4cChTTEFTSF9DT01NQU5EX01BUktFUl9SRUdFWC5zb3VyY2UsICdnJylcbiAgY29uc3Qgd2l0aG91dFNsYXNoID0gd2l0aG91dE1lbnRpb25zLnJlcGxhY2Uoc2xhc2hSZWdleCwgKF9tLCBfaWQsIGxhYmVsKSA9PiBgLyR7U3RyaW5nKGxhYmVsKS50cmltKCl9YClcbiAgY29uc3Qgd2l0aG91dEluY29tcGxldGVTbGFzaCA9IHdpdGhvdXRTbGFzaC5yZXBsYWNlKFxuICAgIElOQ09NUExFVEVfU0xBU0hfTUFSS0VSX1JFR0VYLFxuICAgIChfbSwgbGFiZWwpID0+IGAvJHtTdHJpbmcobGFiZWwpLnRyaW0oKX1gXG4gIClcbiAgcmV0dXJuIHdpdGhvdXRJbmNvbXBsZXRlU2xhc2gucmVwbGFjZShJTkNPTVBMRVRFX01FTlRJT05fTUFSS0VSX1JFR0VYLCAnJykudHJpbSgpXG59XG5cbi8qKiBHZW5lcmEgbGEgVVJMIGRlIG5hdmVnYWNpw7NuIHBhcmEgdW4gbWVudGlvbiBzZWfDum4gc3UgdGlwby4gKi9cbmNvbnN0IGdldE1lbnRpb25VcmwgPSAodHlwZTogQ29udGV4dEVudGl0eVR5cGUsIGlkOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnY2xpZW50JzpcbiAgICAgIHJldHVybiBgL2NsaWVudHMvJHtpZH1gXG4gICAgY2FzZSAncHJvamVjdCc6XG4gICAgICByZXR1cm4gYC9wcm9qZWN0cy8ke2lkfS9kYXNoYm9hcmRgXG4gICAgY2FzZSAndGFzayc6XG4gICAgICByZXR1cm4gYC90YXNrcy8ke2lkfS9kZXRhaWxgXG4gICAgY2FzZSAndXNlcic6XG4gICAgICByZXR1cm4gbnVsbCAvLyBMb3MgdXNlcnMgbm8gc29uIGNsaWNrZWFibGVzXG4gICAgY2FzZSAnbWNwJzpcbiAgICAgIHJldHVybiBudWxsXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuY29uc3QgTWVudGlvbkNoaXAgPSAoeyB0eXBlLCBpZCwgbGFiZWwgfTogeyB0eXBlOiBDb250ZXh0RW50aXR5VHlwZTsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRMYWJlbCA9IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwobGFiZWwpXG4gIGNvbnN0IHVybCA9IGdldE1lbnRpb25VcmwodHlwZSwgaWQpXG4gIGNvbnN0IGlzQ2xpY2thYmxlID0gISF1cmxcbiAgY29uc3QgaXNUYXNrID0gdHlwZSA9PT0gJ3Rhc2snXG4gIGNvbnN0IGlzUHJvamVjdCA9IHR5cGUgPT09ICdwcm9qZWN0J1xuICBjb25zdCBzaG93SWNvbiA9ICFpc1Byb2plY3RcbiAgY29uc3QgaWNvblNpemUgPSBpc1Rhc2sgPyAxNiA6IDE0XG4gIGNvbnN0IHsgZmlyc3RXb3JkLCByZXN0IH0gPSBzcGxpdExhYmVsRmlyc3RXb3JkKG5vcm1hbGl6ZWRMYWJlbClcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICAgIGlmICghaXNDbGlja2FibGUgfHwgIXVybCkgcmV0dXJuXG4gICAgaWYgKHR5cGUgPT09ICd0YXNrJykge1xuICAgICAgaWYgKGUubWV0YUtleSB8fCBlLmN0cmxLZXkpIHJldHVyblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBvcGVuVGFza0luQ29yUGFuZWwoaWQsICdkZXRhaWwnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpXG4gIH1cblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQgfCBIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFpc0NsaWNrYWJsZSB8fCB0eXBlICE9PSAndGFzaycpIHJldHVyblxuICAgIGlmIChlLmtleSAhPT0gJ0VudGVyJyAmJiBlLmtleSAhPT0gJyAnKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBvcGVuVGFza0luQ29yUGFuZWwoaWQsICdkZXRhaWwnKVxuICB9XG5cbiAgaWYgKHR5cGUgPT09ICd0YXNrJykge1xuICAgIHJldHVybiAoXG4gICAgICA8U0NUYXNrTGlua1xuICAgICAgICBocmVmPXt1cmwgPz8gJyMnfVxuICAgICAgICBjbGFzc05hbWU9e0NPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTfVxuICAgICAgICBkYXRhLW1lbnRpb24tdHlwZT1cInRhc2tcIlxuICAgICAgICBkYXRhLW1lbnRpb24tc3VyZmFjZT1cImNoYXRcIlxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgPlxuICAgICAgICB7bm9ybWFsaXplZExhYmVsfVxuICAgICAgPC9TQ1Rhc2tMaW5rPlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDSW5saW5lTWVudGlvblxuICAgICAgJHR5cGU9e3R5cGV9XG4gICAgICAkaXNDbGlja2FibGU9e2lzQ2xpY2thYmxlfVxuICAgICAgY2xhc3NOYW1lPXtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU31cbiAgICAgIGRhdGEtbWVudGlvbi10eXBlPXt0eXBlfVxuICAgICAgZGF0YS1tZW50aW9uLXN1cmZhY2U9XCJjaGF0XCJcbiAgICAgIG9uQ2xpY2s9e2lzQ2xpY2thYmxlID8gaGFuZGxlQ2xpY2sgOiB1bmRlZmluZWR9XG4gICAgICByb2xlPXtpc0NsaWNrYWJsZSA/ICdidXR0b24nIDogdW5kZWZpbmVkfVxuICAgICAgdGFiSW5kZXg9e2lzQ2xpY2thYmxlID8gMCA6IHVuZGVmaW5lZH1cbiAgICA+XG4gICAgICB7c2hvd0ljb24gPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPFNDSW5saW5lTWVudGlvbkljb25Sb3c+XG4gICAgICAgICAgICA8U0NJbmxpbmVNZW50aW9uSWNvbiAkdGFzaz17aXNUYXNrfT5cbiAgICAgICAgICAgICAge2dldENvbnRleHRNZW50aW9uSWNvbih0eXBlLCBNRU5USU9OX0NISVBfQ09MT1JTW3R5cGVdLmZnLCBpZCwgaWNvblNpemUpfVxuICAgICAgICAgICAgPC9TQ0lubGluZU1lbnRpb25JY29uPlxuICAgICAgICAgICAgPFNDSW5saW5lTWVudGlvbldvcmQ+e2ZpcnN0V29yZH08L1NDSW5saW5lTWVudGlvbldvcmQ+XG4gICAgICAgICAgPC9TQ0lubGluZU1lbnRpb25JY29uUm93PlxuICAgICAgICAgIHtyZXN0ID8gPFNDSW5saW5lTWVudGlvblJlc3Q+e3Jlc3R9PC9TQ0lubGluZU1lbnRpb25SZXN0PiA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICB7IXNob3dJY29uID8gbm9ybWFsaXplZExhYmVsIDogbnVsbH1cbiAgICA8L1NDSW5saW5lTWVudGlvbj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgaGFzSW5saW5lTWFya2VycyA9ICh0ZXh0OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgaWYgKCF0ZXh0KSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHRleHQuaW5jbHVkZXMoJ1tbbWVudGlvbjonKSB8fCB0ZXh0LmluY2x1ZGVzKCdbW3NsYXNoX2NvbW1hbmQ6Jylcbn1cblxudHlwZSBJbmxpbmVNYXJrZXIgPVxuICB8IHsga2luZDogJ21lbnRpb24nOyBpbmRleDogbnVtYmVyOyBsZW5ndGg6IG51bWJlcjsgdHlwZTogQ29udGV4dEVudGl0eVR5cGU7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVxuICB8IHsga2luZDogJ3NsYXNoJzsgaW5kZXg6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVxuXG5jb25zdCBjb2xsZWN0SW5saW5lTWFya2VycyA9ICh0ZXh0OiBzdHJpbmcpOiBJbmxpbmVNYXJrZXJbXSA9PiB7XG4gIGNvbnN0IG1hcmtlcnM6IElubGluZU1hcmtlcltdID0gW11cblxuICBNRU5USU9OX01BUktFUl9SRUdFWC5sYXN0SW5kZXggPSAwXG4gIGxldCBtOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsID0gTUVOVElPTl9NQVJLRVJfUkVHRVguZXhlYyh0ZXh0KVxuICB3aGlsZSAobSkge1xuICAgIGNvbnN0IFssIHJhd1R5cGUsIGlkLCBsYWJlbF0gPSBtXG4gICAgY29uc3QgdHlwZSA9IEFMTE9XRURfVFlQRVMuaW5jbHVkZXMocmF3VHlwZSBhcyBDb250ZXh0RW50aXR5VHlwZSkgPyAocmF3VHlwZSBhcyBDb250ZXh0RW50aXR5VHlwZSkgOiAndXNlcidcbiAgICBtYXJrZXJzLnB1c2goeyBraW5kOiAnbWVudGlvbicsIGluZGV4OiBtLmluZGV4LCBsZW5ndGg6IG1bMF0ubGVuZ3RoLCB0eXBlLCBpZCwgbGFiZWwgfSlcbiAgICBtID0gTUVOVElPTl9NQVJLRVJfUkVHRVguZXhlYyh0ZXh0KVxuICB9XG5cbiAgY29uc3Qgc2xhc2hSZWdleCA9IG5ldyBSZWdFeHAoU0xBU0hfQ09NTUFORF9NQVJLRVJfUkVHRVguc291cmNlLCAnZycpXG4gIGxldCBzOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsID0gc2xhc2hSZWdleC5leGVjKHRleHQpXG4gIHdoaWxlIChzKSB7XG4gICAgbWFya2Vycy5wdXNoKHsga2luZDogJ3NsYXNoJywgaW5kZXg6IHMuaW5kZXgsIGxlbmd0aDogc1swXS5sZW5ndGgsIGlkOiBzWzFdLCBsYWJlbDogc1syXSB9KVxuICAgIHMgPSBzbGFzaFJlZ2V4LmV4ZWModGV4dClcbiAgfVxuXG4gIHJldHVybiBtYXJrZXJzLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KVxufVxuXG5leHBvcnQgY29uc3QgcmVuZGVyVGV4dFdpdGhNZW50aW9ucyA9ICh0ZXh0OiBzdHJpbmcpOiBBcnJheTxzdHJpbmcgfCBSZWFjdEVsZW1lbnQ+ID0+IHtcbiAgaWYgKCF0ZXh0KSByZXR1cm4gW3RleHRdXG4gIGNvbnN0IG1hcmtlcnMgPSBjb2xsZWN0SW5saW5lTWFya2Vycyh0ZXh0KVxuICBpZiAobWFya2Vycy5sZW5ndGggPT09IDApIHJldHVybiBbdGV4dF1cblxuICBjb25zdCBvdXQ6IEFycmF5PHN0cmluZyB8IFJlYWN0RWxlbWVudD4gPSBbXVxuICBsZXQgbGFzdElkeCA9IDBcbiAgbWFya2Vycy5mb3JFYWNoKG1hcmtlciA9PiB7XG4gICAgaWYgKG1hcmtlci5pbmRleCA+IGxhc3RJZHgpIG91dC5wdXNoKHRleHQuc2xpY2UobGFzdElkeCwgbWFya2VyLmluZGV4KSlcbiAgICBpZiAobWFya2VyLmtpbmQgPT09ICdtZW50aW9uJykge1xuICAgICAgb3V0LnB1c2goXG4gICAgICAgIDxNZW50aW9uQ2hpcFxuICAgICAgICAgIGtleT17YG1lbnRpb24tJHttYXJrZXIuaW5kZXh9LSR7bWFya2VyLnR5cGV9LSR7bWFya2VyLmlkfWB9XG4gICAgICAgICAgdHlwZT17bWFya2VyLnR5cGV9XG4gICAgICAgICAgaWQ9e21hcmtlci5pZH1cbiAgICAgICAgICBsYWJlbD17bWFya2VyLmxhYmVsfVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQucHVzaCg8U2xhc2hDb21tYW5kQ2hpcCBrZXk9e2BzbGFzaC0ke21hcmtlci5pbmRleH0tJHttYXJrZXIuaWR9YH0gbGFiZWw9e21hcmtlci5sYWJlbH0gaW5saW5lPXtmYWxzZX0gLz4pXG4gICAgfVxuICAgIGxhc3RJZHggPSBtYXJrZXIuaW5kZXggKyBtYXJrZXIubGVuZ3RoXG4gIH0pXG4gIGlmIChsYXN0SWR4IDwgdGV4dC5sZW5ndGgpIG91dC5wdXNoKHRleHQuc2xpY2UobGFzdElkeCkpXG4gIHJldHVybiBvdXRcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU9BLE1BQU0sSUFBSUMsR0FBRyxRQUFRLG1CQUFtQjtBQUMvQyxTQUE0Q0MsMEJBQTBCLFFBQVEseUJBQXlCO0FBQ3ZHLFNBQ0VDLG1CQUFtQixFQUNuQkMsOEJBQThCLFFBQ3pCLGtFQUFrRTtBQUN6RSxTQUFTQyxnQkFBZ0IsUUFBUSxzQ0FBc0M7QUFDdkUsU0FBU0MsMEJBQTBCLFFBQVEsc0JBQXNCO0FBQ2pFLFNBQVNDLGdCQUFnQixRQUFRLGtCQUFrQjtBQUNuRCxTQUFTQyxVQUFVLFFBQVEsa0RBQWtEO0FBQzdFLFNBQVNDLHFCQUFxQixRQUFRLHVCQUF1QjtBQUM3RCxTQUFTQyw0QkFBNEIsUUFBUSx1QkFBdUI7QUFDcEUsU0FBU0Msa0JBQWtCLFFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.11.69-2",
3
+ "version": "2.11.69",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {
@@ -1,235 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
- import { useCallback, useEffect, useMemo, useState } from 'react';
6
- import { ContextMentionPopover, MAIA_TASK_PANEL_OVERLAY_ATTR, SCMPAnchor } from '../components/atoms/ContextMentionPopover';
7
- import { useMaiaTaskPanelZIndex } from './useMaiaTaskPanelZIndex';
8
- import { useGlobalContext } from '../context/global-context';
9
- import { useT } from './useT';
10
- // eslint-disable-next-line import/no-cycle
11
- import { useEntitySearch } from './useEntitySearch';
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
- /** Tipos pineables como contexto persistente (RFC §6: no incluye `user`, que es solo mención). */
14
- var PIN_ALLOWED_TYPES = ['client', 'project', 'task'];
15
- var PIN_DEFAULT_TYPE = 'project';
16
- /**
17
- * Segundo punto de entrada del buscador de contexto (RFC §6): el mismo motor
18
- * (`useEntitySearch` + `ContextMentionPopover`) pero el commit fija un **pin**
19
- * persistente en el contexto global en vez de insertar una mención.
20
- *
21
- * Jerarquía mono-contexto (RFC §5.1): un pin a la vez; fijar uno reemplaza al
22
- * anterior y arrastra su scope hacia arriba (tarea ⇒ proyecto+cliente, etc.).
23
- */
24
- export var useContextPinPopover = function useContextPinPopover(_ref) {
25
- var popoverAnchorRef = _ref.popoverAnchorRef,
26
- topAnchorRef = _ref.topAnchorRef,
27
- triggerRef = _ref.triggerRef,
28
- enabledTypes = _ref.enabledTypes,
29
- onPinned = _ref.onPinned;
30
- var _useT = useT(),
31
- t = _useT.t;
32
- var _useGlobalContext = useGlobalContext(),
33
- setProject = _useGlobalContext.setProject,
34
- setClient = _useGlobalContext.setClient,
35
- setTask = _useGlobalContext.setTask,
36
- setChipsProject = _useGlobalContext.setChipsProject;
37
- var zIndex = useMaiaTaskPanelZIndex(1200, 'overlay');
38
- var allowedTypes = enabledTypes && enabledTypes.length > 0 ? enabledTypes : PIN_ALLOWED_TYPES;
39
- var _useState = useState(allowedTypes.includes(PIN_DEFAULT_TYPE) ? PIN_DEFAULT_TYPE : allowedTypes[0]),
40
- _useState2 = _slicedToArray(_useState, 2),
41
- activeType = _useState2[0],
42
- setActiveType = _useState2[1];
43
- var _useState3 = useState(false),
44
- _useState4 = _slicedToArray(_useState3, 2),
45
- open = _useState4[0],
46
- setOpen = _useState4[1];
47
- var _useState5 = useState({
48
- bottom: 0,
49
- left: 0,
50
- width: 0
51
- }),
52
- _useState6 = _slicedToArray(_useState5, 2),
53
- pos = _useState6[0],
54
- setPos = _useState6[1];
55
-
56
- // Scope sin restricción: desde el botón se busca libremente cualquier entidad (modo global).
57
- var _useEntitySearch = useEntitySearch(activeType),
58
- items = _useEntitySearch.items,
59
- loading = _useEntitySearch.loading,
60
- error = _useEntitySearch.error,
61
- hideRecentsLabel = _useEntitySearch.hideRecentsLabel,
62
- hasMore = _useEntitySearch.hasMore,
63
- isLoadingMore = _useEntitySearch.isLoadingMore,
64
- loadMore = _useEntitySearch.loadMore,
65
- searchValue = _useEntitySearch.searchValue,
66
- updateSearchValue = _useEntitySearch.updateSearchValue;
67
- var positionPopover = useCallback(function () {
68
- var _popoverAnchorRef$cur, _topAnchorRef$current, _topRect$top;
69
- var inputRect = (_popoverAnchorRef$cur = popoverAnchorRef.current) === null || _popoverAnchorRef$cur === void 0 ? void 0 : _popoverAnchorRef$cur.getBoundingClientRect();
70
- if (!inputRect || inputRect.width <= 0) return;
71
- var topRect = topAnchorRef === null || topAnchorRef === void 0 || (_topAnchorRef$current = topAnchorRef.current) === null || _topAnchorRef$current === void 0 ? void 0 : _topAnchorRef$current.getBoundingClientRect();
72
- var anchorTop = (_topRect$top = topRect === null || topRect === void 0 ? void 0 : topRect.top) !== null && _topRect$top !== void 0 ? _topRect$top : inputRect.top;
73
- var viewportW = window.innerWidth;
74
- var viewportH = window.innerHeight;
75
- var width = inputRect.width;
76
- var left = Math.max(8, Math.min(viewportW - width - 8, inputRect.left));
77
- /** ~4px sobre el borde superior de la barra de contexto (chip), no del input. */
78
- setPos({
79
- width: width,
80
- left: left,
81
- bottom: viewportH - anchorTop + 4
82
- });
83
- }, [popoverAnchorRef, topAnchorRef]);
84
- var close = useCallback(function () {
85
- setOpen(false);
86
- updateSearchValue('');
87
- }, [updateSearchValue]);
88
- var toggle = useCallback(function () {
89
- setOpen(function (prev) {
90
- if (prev) {
91
- updateSearchValue('');
92
- return false;
93
- }
94
- positionPopover();
95
- return true;
96
- });
97
- }, [positionPopover, updateSearchValue]);
98
- var commitPin = useCallback(function (item) {
99
- var _raw$clientName;
100
- var raw = item.raw;
101
- var clientId = raw.clientId != null ? Number(raw.clientId) : undefined;
102
- var clientName = (_raw$clientName = raw.clientName) !== null && _raw$clientName !== void 0 ? _raw$clientName : undefined;
103
- console.info('[useContextPinPopover] commitPin — ASIGNANDO contexto:', {
104
- type: item.type,
105
- rawId: raw.id,
106
- rawName: raw.name,
107
- projectName: raw.projectName,
108
- clientId: clientId
109
- });
110
- if (item.type === 'client') {
111
- var _raw$totalProyectos;
112
- setProject(null);
113
- setTask(null);
114
- setChipsProject(null);
115
- setClient({
116
- id: Number(raw.id),
117
- name: raw.name,
118
- totalProyectos: (_raw$totalProyectos = raw.totalProyectos) !== null && _raw$totalProyectos !== void 0 ? _raw$totalProyectos : undefined
119
- });
120
- } else if (item.type === 'project') {
121
- setTask(null);
122
- setProject(_objectSpread(_objectSpread(_objectSpread({
123
- id: Number(raw.id),
124
- name: raw.name
125
- }, clientId != null ? {
126
- clientId: clientId
127
- } : {}), raw.feeId != null ? {
128
- feeId: raw.feeId
129
- } : {}), clientId != null ? {
130
- client: {
131
- id: clientId,
132
- name: clientName !== null && clientName !== void 0 ? clientName : ''
133
- }
134
- } : {}));
135
- // chipsProject hace visible el pin en el chip del orquestador (RFC §7).
136
- setChipsProject({
137
- projectId: String(raw.id),
138
- projectName: raw.name,
139
- clientName: clientName !== null && clientName !== void 0 ? clientName : ''
140
- });
141
- setClient(clientId != null ? {
142
- id: clientId,
143
- name: clientName !== null && clientName !== void 0 ? clientName : ''
144
- } : null);
145
- } else if (item.type === 'task') {
146
- // El item de tarea no trae projectId fiable; subimos lo disponible (proyecto por nombre, cliente por id).
147
- setTask(_objectSpread({
148
- id: raw.id,
149
- name: raw.name
150
- }, clientId != null ? {
151
- clientId: clientId
152
- } : {}));
153
- setChipsProject(raw.projectName ? {
154
- projectId: '',
155
- projectName: raw.projectName,
156
- clientName: clientName !== null && clientName !== void 0 ? clientName : ''
157
- } : null);
158
- if (clientId != null) setClient({
159
- id: clientId,
160
- name: clientName !== null && clientName !== void 0 ? clientName : ''
161
- });
162
- }
163
- onPinned === null || onPinned === void 0 || onPinned(item);
164
- close();
165
- }, [setProject, setClient, setTask, setChipsProject, onPinned, close]);
166
- useEffect(function () {
167
- if (!open) return undefined;
168
- var handler = function handler() {
169
- return positionPopover();
170
- };
171
- window.addEventListener('scroll', handler, true);
172
- window.addEventListener('resize', handler);
173
- return function () {
174
- window.removeEventListener('scroll', handler, true);
175
- window.removeEventListener('resize', handler);
176
- };
177
- }, [open, positionPopover]);
178
- useEffect(function () {
179
- if (!open) return undefined;
180
- var handlePointerDownOutside = function handlePointerDownOutside(mouseEvent) {
181
- var _popoverAnchorRef$cur2, _triggerRef$current, _closest, _ref2;
182
- var target = mouseEvent.target;
183
- if (!target) return;
184
- if ((_popoverAnchorRef$cur2 = popoverAnchorRef.current) !== null && _popoverAnchorRef$cur2 !== void 0 && _popoverAnchorRef$cur2.contains(target)) return;
185
- if (triggerRef !== null && triggerRef !== void 0 && (_triggerRef$current = triggerRef.current) !== null && _triggerRef$current !== void 0 && _triggerRef$current.contains(target)) return;
186
- var overlay = target === null || target === void 0 || (_closest = (_ref2 = target).closest) === null || _closest === void 0 ? void 0 : _closest.call(_ref2, "[".concat(MAIA_TASK_PANEL_OVERLAY_ATTR, "]"));
187
- if (overlay) return;
188
- close();
189
- };
190
- document.addEventListener('mousedown', handlePointerDownOutside);
191
- return function () {
192
- return document.removeEventListener('mousedown', handlePointerDownOutside);
193
- };
194
- }, [open, close, popoverAnchorRef, triggerRef]);
195
- var popoverNode = useMemo(function () {
196
- if (!open) return null;
197
- return /*#__PURE__*/_jsx(SCMPAnchor, _objectSpread(_objectSpread({}, _defineProperty({}, MAIA_TASK_PANEL_OVERLAY_ATTR, '')), {}, {
198
- $bottom: pos.bottom,
199
- $left: pos.left,
200
- $width: pos.width,
201
- $zIndex: zIndex,
202
- onMouseDown: function onMouseDown(e) {
203
- return e.stopPropagation();
204
- },
205
- children: /*#__PURE__*/_jsx(ContextMentionPopover, {
206
- allowedTypes: allowedTypes,
207
- activeType: activeType,
208
- onTypeChange: setActiveType,
209
- items: items,
210
- loading: loading,
211
- error: error,
212
- hideRecentsLabel: hideRecentsLabel,
213
- hasMore: hasMore,
214
- isLoadingMore: isLoadingMore,
215
- onReachListEnd: loadMore,
216
- searchValue: searchValue,
217
- onItemSelected: commitPin,
218
- showSearchInput: true,
219
- hideTabPrefix: true,
220
- searchPlaceholder: t('contextPin.searchPlaceholder', {
221
- defaultValue: 'Buscar contexto…'
222
- }),
223
- onSearchChange: updateSearchValue,
224
- onRequestClose: close
225
- })
226
- }));
227
- }, [open, pos, zIndex, allowedTypes, activeType, items, loading, error, hideRecentsLabel, hasMore, isLoadingMore, loadMore, searchValue, commitPin, updateSearchValue, close, t]);
228
- return {
229
- open: open,
230
- toggle: toggle,
231
- close: close,
232
- popoverNode: popoverNode
233
- };
234
- };
235
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsIkNvbnRleHRNZW50aW9uUG9wb3ZlciIsIk1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIiLCJTQ01QQW5jaG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlRW50aXR5U2VhcmNoIiwianN4IiwiX2pzeCIsIlBJTl9BTExPV0VEX1RZUEVTIiwiUElOX0RFRkFVTFRfVFlQRSIsInVzZUNvbnRleHRQaW5Qb3BvdmVyIiwiX3JlZiIsInBvcG92ZXJBbmNob3JSZWYiLCJ0b3BBbmNob3JSZWYiLCJ0cmlnZ2VyUmVmIiwiZW5hYmxlZFR5cGVzIiwib25QaW5uZWQiLCJfdXNlVCIsInQiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwic2V0Q2hpcHNQcm9qZWN0IiwiekluZGV4IiwiYWxsb3dlZFR5cGVzIiwibGVuZ3RoIiwiX3VzZVN0YXRlIiwiaW5jbHVkZXMiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhY3RpdmVUeXBlIiwic2V0QWN0aXZlVHlwZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwib3BlbiIsInNldE9wZW4iLCJfdXNlU3RhdGU1IiwiYm90dG9tIiwibGVmdCIsIndpZHRoIiwiX3VzZVN0YXRlNiIsInBvcyIsInNldFBvcyIsIl91c2VFbnRpdHlTZWFyY2giLCJpdGVtcyIsImxvYWRpbmciLCJlcnJvciIsImhpZGVSZWNlbnRzTGFiZWwiLCJoYXNNb3JlIiwiaXNMb2FkaW5nTW9yZSIsImxvYWRNb3JlIiwic2VhcmNoVmFsdWUiLCJ1cGRhdGVTZWFyY2hWYWx1ZSIsInBvc2l0aW9uUG9wb3ZlciIsIl9wb3BvdmVyQW5jaG9yUmVmJGN1ciIsIl90b3BBbmNob3JSZWYkY3VycmVudCIsIl90b3BSZWN0JHRvcCIsImlucHV0UmVjdCIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3BSZWN0IiwiYW5jaG9yVG9wIiwidG9wIiwidmlld3BvcnRXIiwid2luZG93IiwiaW5uZXJXaWR0aCIsInZpZXdwb3J0SCIsImlubmVySGVpZ2h0IiwiTWF0aCIsIm1heCIsIm1pbiIsImNsb3NlIiwidG9nZ2xlIiwicHJldiIsImNvbW1pdFBpbiIsIml0ZW0iLCJfcmF3JGNsaWVudE5hbWUiLCJyYXciLCJjbGllbnRJZCIsIk51bWJlciIsInVuZGVmaW5lZCIsImNsaWVudE5hbWUiLCJjb25zb2xlIiwiaW5mbyIsInR5cGUiLCJyYXdJZCIsImlkIiwicmF3TmFtZSIsIm5hbWUiLCJwcm9qZWN0TmFtZSIsIl9yYXckdG90YWxQcm95ZWN0b3MiLCJ0b3RhbFByb3llY3RvcyIsIl9vYmplY3RTcHJlYWQiLCJmZWVJZCIsImNsaWVudCIsInByb2plY3RJZCIsIlN0cmluZyIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSIsIm1vdXNlRXZlbnQiLCJfcG9wb3ZlckFuY2hvclJlZiRjdXIyIiwiX3RyaWdnZXJSZWYkY3VycmVudCIsIl9jbG9zZXN0IiwiX3JlZjIiLCJ0YXJnZXQiLCJjb250YWlucyIsIm92ZXJsYXkiLCJjbG9zZXN0IiwiY2FsbCIsImNvbmNhdCIsImRvY3VtZW50IiwicG9wb3Zlck5vZGUiLCJfZGVmaW5lUHJvcGVydHkiLCIkYm90dG9tIiwiJGxlZnQiLCIkd2lkdGgiLCIkekluZGV4Iiwib25Nb3VzZURvd24iLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwiY2hpbGRyZW4iLCJvblR5cGVDaGFuZ2UiLCJvblJlYWNoTGlzdEVuZCIsIm9uSXRlbVNlbGVjdGVkIiwic2hvd1NlYXJjaElucHV0IiwiaGlkZVRhYlByZWZpeCIsInNlYXJjaFBsYWNlaG9sZGVyIiwiZGVmYXVsdFZhbHVlIiwib25TZWFyY2hDaGFuZ2UiLCJvblJlcXVlc3RDbG9zZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VDb250ZXh0UGluUG9wb3Zlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVhY3ROb2RlLCBSZWZPYmplY3QsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBDb250ZXh0TWVudGlvblBvcG92ZXIsXG4gIE1BSUFfVEFTS19QQU5FTF9PVkVSTEFZX0FUVFIsXG4gIFNDTVBBbmNob3IsXG59IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25Qb3BvdmVyJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4vdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IHVzZUVudGl0eVNlYXJjaCB9IGZyb20gJy4vdXNlRW50aXR5U2VhcmNoJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG4vKiogVGlwb3MgcGluZWFibGVzIGNvbW8gY29udGV4dG8gcGVyc2lzdGVudGUgKFJGQyDCpzY6IG5vIGluY2x1eWUgYHVzZXJgLCBxdWUgZXMgc29sbyBtZW5jacOzbikuICovXG5jb25zdCBQSU5fQUxMT1dFRF9UWVBFUzogQ29udGV4dEVudGl0eVR5cGVbXSA9IFsnY2xpZW50JywgJ3Byb2plY3QnLCAndGFzayddXG5jb25zdCBQSU5fREVGQVVMVF9UWVBFOiBDb250ZXh0RW50aXR5VHlwZSA9ICdwcm9qZWN0J1xuXG5leHBvcnQgdHlwZSBVc2VDb250ZXh0UGluUG9wb3Zlck9wdGlvbnMgPSB7XG4gIC8qKiBXcmFwcGVyIGRlbCBNQUlBSW5wdXQ6IGRlZmluZSBhbmNobyB5IGFsaW5lYWNpw7NuIGhvcml6b250YWwgKGlndWFsIHF1ZSBALW1lbnRpb25zKS4gKi9cbiAgcG9wb3ZlckFuY2hvclJlZjogUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cbiAgLyoqIEZpbGEgZGVsIGNoaXAgLyBiYXJyYSBkZSBjb250ZXh0bzogZGVmaW5lIGVsIGJvcmRlIHN1cGVyaW9yIHZlcnRpY2FsIGRlbCBwb3BvdmVyLiAqL1xuICB0b3BBbmNob3JSZWY/OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPlxuICAvKiogQm90w7NuIFwiKyBDb250ZXh0b1wiOyBubyBjZXJyYXIgYWwgaGFjZXIgY2xpY2sgZW4gZWwgdHJpZ2dlci4gKi9cbiAgdHJpZ2dlclJlZj86IFJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+XG4gIC8qKiBPdmVycmlkZSBkZWwgc2V0IGRlIHRhYnMgcGluZWFibGVzOyBwb3IgZGVmZWN0byBjbGllbnRlL3Byb3llY3RvL3RhcmVhLiAqL1xuICBlbmFibGVkVHlwZXM/OiBDb250ZXh0RW50aXR5VHlwZVtdXG4gIC8qKiBDYWxsYmFjayB0cmFzIGZpamFyIHVuIGNvbnRleHRvIChhbmFseXRpY3MgLyBjaWVycmUgZXh0ZXJubykuICovXG4gIG9uUGlubmVkPzogKGl0ZW06IENvbnRleHRNZW50aW9uSXRlbSkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBVc2VDb250ZXh0UGluUG9wb3ZlclJldHVybiA9IHtcbiAgb3BlbjogYm9vbGVhblxuICAvKiogQWJyZS9jaWVycmEgZWwgcG9wb3ZlciAoaGFuZGxlciBkZWwgYm90w7NuIFwiKyBDb250ZXh0b1wiKS4gKi9cbiAgdG9nZ2xlOiAoKSA9PiB2b2lkXG4gIGNsb3NlOiAoKSA9PiB2b2lkXG4gIC8qKiBOb2RvIGRlbCBwb3BvdmVyOyBlbCBjb25zdW1lciBkZWJlIHBvcnRhcmxvIGNvbiBgY3JlYXRlUG9ydGFsYC4gKi9cbiAgcG9wb3Zlck5vZGU6IFJlYWN0Tm9kZSB8IG51bGxcbn1cblxuLyoqXG4gKiBTZWd1bmRvIHB1bnRvIGRlIGVudHJhZGEgZGVsIGJ1c2NhZG9yIGRlIGNvbnRleHRvIChSRkMgwqc2KTogZWwgbWlzbW8gbW90b3JcbiAqIChgdXNlRW50aXR5U2VhcmNoYCArIGBDb250ZXh0TWVudGlvblBvcG92ZXJgKSBwZXJvIGVsIGNvbW1pdCBmaWphIHVuICoqcGluKipcbiAqIHBlcnNpc3RlbnRlIGVuIGVsIGNvbnRleHRvIGdsb2JhbCBlbiB2ZXogZGUgaW5zZXJ0YXIgdW5hIG1lbmNpw7NuLlxuICpcbiAqIEplcmFycXXDrWEgbW9uby1jb250ZXh0byAoUkZDIMKnNS4xKTogdW4gcGluIGEgbGEgdmV6OyBmaWphciB1bm8gcmVlbXBsYXphIGFsXG4gKiBhbnRlcmlvciB5IGFycmFzdHJhIHN1IHNjb3BlIGhhY2lhIGFycmliYSAodGFyZWEg4oeSIHByb3llY3RvK2NsaWVudGUsIGV0Yy4pLlxuICovXG5leHBvcnQgY29uc3QgdXNlQ29udGV4dFBpblBvcG92ZXIgPSAoe1xuICBwb3BvdmVyQW5jaG9yUmVmLFxuICB0b3BBbmNob3JSZWYsXG4gIHRyaWdnZXJSZWYsXG4gIGVuYWJsZWRUeXBlcyxcbiAgb25QaW5uZWQsXG59OiBVc2VDb250ZXh0UGluUG9wb3Zlck9wdGlvbnMpOiBVc2VDb250ZXh0UGluUG9wb3ZlclJldHVybiA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IHsgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRUYXNrLCBzZXRDaGlwc1Byb2plY3QgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB6SW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEyMDAsICdvdmVybGF5JylcblxuICBjb25zdCBhbGxvd2VkVHlwZXMgPSBlbmFibGVkVHlwZXMgJiYgZW5hYmxlZFR5cGVzLmxlbmd0aCA+IDAgPyBlbmFibGVkVHlwZXMgOiBQSU5fQUxMT1dFRF9UWVBFU1xuICBjb25zdCBbYWN0aXZlVHlwZSwgc2V0QWN0aXZlVHlwZV0gPSB1c2VTdGF0ZTxDb250ZXh0RW50aXR5VHlwZT4oXG4gICAgYWxsb3dlZFR5cGVzLmluY2x1ZGVzKFBJTl9ERUZBVUxUX1RZUEUpID8gUElOX0RFRkFVTFRfVFlQRSA6IGFsbG93ZWRUeXBlc1swXVxuICApXG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcG9zLCBzZXRQb3NdID0gdXNlU3RhdGU8eyBib3R0b206IG51bWJlcjsgbGVmdDogbnVtYmVyOyB3aWR0aDogbnVtYmVyIH0+KHsgYm90dG9tOiAwLCBsZWZ0OiAwLCB3aWR0aDogMCB9KVxuXG4gIC8vIFNjb3BlIHNpbiByZXN0cmljY2nDs246IGRlc2RlIGVsIGJvdMOzbiBzZSBidXNjYSBsaWJyZW1lbnRlIGN1YWxxdWllciBlbnRpZGFkIChtb2RvIGdsb2JhbCkuXG4gIGNvbnN0IHsgaXRlbXMsIGxvYWRpbmcsIGVycm9yLCBoaWRlUmVjZW50c0xhYmVsLCBoYXNNb3JlLCBpc0xvYWRpbmdNb3JlLCBsb2FkTW9yZSwgc2VhcmNoVmFsdWUsIHVwZGF0ZVNlYXJjaFZhbHVlIH0gPVxuICAgIHVzZUVudGl0eVNlYXJjaChhY3RpdmVUeXBlKVxuXG4gIGNvbnN0IHBvc2l0aW9uUG9wb3ZlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBpbnB1dFJlY3QgPSBwb3BvdmVyQW5jaG9yUmVmLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgaWYgKCFpbnB1dFJlY3QgfHwgaW5wdXRSZWN0LndpZHRoIDw9IDApIHJldHVyblxuICAgIGNvbnN0IHRvcFJlY3QgPSB0b3BBbmNob3JSZWY/LmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgYW5jaG9yVG9wID0gdG9wUmVjdD8udG9wID8/IGlucHV0UmVjdC50b3BcbiAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IHsgd2lkdGggfSA9IGlucHV0UmVjdFxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbih2aWV3cG9ydFcgLSB3aWR0aCAtIDgsIGlucHV0UmVjdC5sZWZ0KSlcbiAgICAvKiogfjRweCBzb2JyZSBlbCBib3JkZSBzdXBlcmlvciBkZSBsYSBiYXJyYSBkZSBjb250ZXh0byAoY2hpcCksIG5vIGRlbCBpbnB1dC4gKi9cbiAgICBzZXRQb3MoeyB3aWR0aCwgbGVmdCwgYm90dG9tOiB2aWV3cG9ydEggLSBhbmNob3JUb3AgKyA0IH0pXG4gIH0sIFtwb3BvdmVyQW5jaG9yUmVmLCB0b3BBbmNob3JSZWZdKVxuXG4gIGNvbnN0IGNsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldE9wZW4oZmFsc2UpXG4gICAgdXBkYXRlU2VhcmNoVmFsdWUoJycpXG4gIH0sIFt1cGRhdGVTZWFyY2hWYWx1ZV0pXG5cbiAgY29uc3QgdG9nZ2xlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldE9wZW4ocHJldiA9PiB7XG4gICAgICBpZiAocHJldikge1xuICAgICAgICB1cGRhdGVTZWFyY2hWYWx1ZSgnJylcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBwb3NpdGlvblBvcG92ZXIoKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9KVxuICB9LCBbcG9zaXRpb25Qb3BvdmVyLCB1cGRhdGVTZWFyY2hWYWx1ZV0pXG5cbiAgY29uc3QgY29tbWl0UGluID0gdXNlQ2FsbGJhY2soXG4gICAgKGl0ZW06IENvbnRleHRNZW50aW9uSXRlbSkgPT4ge1xuICAgICAgY29uc3QgeyByYXcgfSA9IGl0ZW1cbiAgICAgIGNvbnN0IGNsaWVudElkID0gcmF3LmNsaWVudElkICE9IG51bGwgPyBOdW1iZXIocmF3LmNsaWVudElkKSA6IHVuZGVmaW5lZFxuICAgICAgY29uc3QgY2xpZW50TmFtZSA9IHJhdy5jbGllbnROYW1lID8/IHVuZGVmaW5lZFxuXG4gICAgICBjb25zb2xlLmluZm8oJ1t1c2VDb250ZXh0UGluUG9wb3Zlcl0gY29tbWl0UGluIOKAlCBBU0lHTkFORE8gY29udGV4dG86Jywge1xuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXG4gICAgICAgIHJhd0lkOiByYXcuaWQsXG4gICAgICAgIHJhd05hbWU6IHJhdy5uYW1lLFxuICAgICAgICBwcm9qZWN0TmFtZTogcmF3LnByb2plY3ROYW1lLFxuICAgICAgICBjbGllbnRJZCxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgc2V0VGFzayhudWxsKVxuICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgc2V0Q2xpZW50KHsgaWQ6IE51bWJlcihyYXcuaWQpLCBuYW1lOiByYXcubmFtZSwgdG90YWxQcm95ZWN0b3M6IHJhdy50b3RhbFByb3llY3RvcyA/PyB1bmRlZmluZWQgfSlcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgc2V0VGFzayhudWxsKVxuICAgICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgICBpZDogTnVtYmVyKHJhdy5pZCksXG4gICAgICAgICAgbmFtZTogcmF3Lm5hbWUsXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHJhdy5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogcmF3LmZlZUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudDogeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgPz8gJycgfSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICAvLyBjaGlwc1Byb2plY3QgaGFjZSB2aXNpYmxlIGVsIHBpbiBlbiBlbCBjaGlwIGRlbCBvcnF1ZXN0YWRvciAoUkZDIMKnNykuXG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7IHByb2plY3RJZDogU3RyaW5nKHJhdy5pZCksIHByb2plY3ROYW1lOiByYXcubmFtZSwgY2xpZW50TmFtZTogY2xpZW50TmFtZSA/PyAnJyB9KVxuICAgICAgICBzZXRDbGllbnQoY2xpZW50SWQgIT0gbnVsbCA/IHsgaWQ6IGNsaWVudElkLCBuYW1lOiBjbGllbnROYW1lID8/ICcnIH0gOiBudWxsKVxuICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICd0YXNrJykge1xuICAgICAgICAvLyBFbCBpdGVtIGRlIHRhcmVhIG5vIHRyYWUgcHJvamVjdElkIGZpYWJsZTsgc3ViaW1vcyBsbyBkaXNwb25pYmxlIChwcm95ZWN0byBwb3Igbm9tYnJlLCBjbGllbnRlIHBvciBpZCkuXG4gICAgICAgIHNldFRhc2soeyBpZDogcmF3LmlkLCBuYW1lOiByYXcubmFtZSwgLi4uKGNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkIH0gOiB7fSkgfSlcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KFxuICAgICAgICAgIHJhdy5wcm9qZWN0TmFtZSA/IHsgcHJvamVjdElkOiAnJywgcHJvamVjdE5hbWU6IHJhdy5wcm9qZWN0TmFtZSwgY2xpZW50TmFtZTogY2xpZW50TmFtZSA/PyAnJyB9IDogbnVsbFxuICAgICAgICApXG4gICAgICAgIGlmIChjbGllbnRJZCAhPSBudWxsKSBzZXRDbGllbnQoeyBpZDogY2xpZW50SWQsIG5hbWU6IGNsaWVudE5hbWUgPz8gJycgfSlcbiAgICAgIH1cblxuICAgICAgb25QaW5uZWQ/LihpdGVtKVxuICAgICAgY2xvc2UoKVxuICAgIH0sXG4gICAgW3NldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzaywgc2V0Q2hpcHNQcm9qZWN0LCBvblBpbm5lZCwgY2xvc2VdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghb3BlbikgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblBvcG92ZXIoKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW29wZW4sIHBvc2l0aW9uUG9wb3Zlcl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW9wZW4pIHJldHVybiB1bmRlZmluZWRcbiAgICBjb25zdCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUgPSAobW91c2VFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gbW91c2VFdmVudC50YXJnZXQgYXMgTm9kZSB8IG51bGxcbiAgICAgIGlmICghdGFyZ2V0KSByZXR1cm5cbiAgICAgIGlmIChwb3BvdmVyQW5jaG9yUmVmLmN1cnJlbnQ/LmNvbnRhaW5zKHRhcmdldCkpIHJldHVyblxuICAgICAgaWYgKHRyaWdnZXJSZWY/LmN1cnJlbnQ/LmNvbnRhaW5zKHRhcmdldCkpIHJldHVyblxuICAgICAgY29uc3Qgb3ZlcmxheSA9ICh0YXJnZXQgYXMgRWxlbWVudCk/LmNsb3Nlc3Q/LihgWyR7TUFJQV9UQVNLX1BBTkVMX09WRVJMQVlfQVRUUn1dYClcbiAgICAgIGlmIChvdmVybGF5KSByZXR1cm5cbiAgICAgIGNsb3NlKClcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gIH0sIFtvcGVuLCBjbG9zZSwgcG9wb3ZlckFuY2hvclJlZiwgdHJpZ2dlclJlZl0pXG5cbiAgY29uc3QgcG9wb3Zlck5vZGUgPSB1c2VNZW1vPFJlYWN0Tm9kZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIW9wZW4pIHJldHVybiBudWxsXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01QQW5jaG9yXG4gICAgICAgIHsuLi57IFtNQUlBX1RBU0tfUEFORUxfT1ZFUkxBWV9BVFRSXTogJycgfX1cbiAgICAgICAgJGJvdHRvbT17cG9zLmJvdHRvbX1cbiAgICAgICAgJGxlZnQ9e3Bvcy5sZWZ0fVxuICAgICAgICAkd2lkdGg9e3Bvcy53aWR0aH1cbiAgICAgICAgJHpJbmRleD17ekluZGV4fVxuICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgPlxuICAgICAgICA8Q29udGV4dE1lbnRpb25Qb3BvdmVyXG4gICAgICAgICAgYWxsb3dlZFR5cGVzPXthbGxvd2VkVHlwZXN9XG4gICAgICAgICAgYWN0aXZlVHlwZT17YWN0aXZlVHlwZX1cbiAgICAgICAgICBvblR5cGVDaGFuZ2U9e3NldEFjdGl2ZVR5cGV9XG4gICAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgIGhpZGVSZWNlbnRzTGFiZWw9e2hpZGVSZWNlbnRzTGFiZWx9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICBpc0xvYWRpbmdNb3JlPXtpc0xvYWRpbmdNb3JlfVxuICAgICAgICAgIG9uUmVhY2hMaXN0RW5kPXtsb2FkTW9yZX1cbiAgICAgICAgICBzZWFyY2hWYWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25JdGVtU2VsZWN0ZWQ9e2NvbW1pdFBpbn1cbiAgICAgICAgICBzaG93U2VhcmNoSW5wdXRcbiAgICAgICAgICBoaWRlVGFiUHJlZml4XG4gICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI9e3QoJ2NvbnRleHRQaW4uc2VhcmNoUGxhY2Vob2xkZXInLCB7IGRlZmF1bHRWYWx1ZTogJ0J1c2NhciBjb250ZXh0b+KApicgfSl9XG4gICAgICAgICAgb25TZWFyY2hDaGFuZ2U9e3VwZGF0ZVNlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uUmVxdWVzdENsb3NlPXtjbG9zZX1cbiAgICAgICAgLz5cbiAgICAgIDwvU0NNUEFuY2hvcj5cbiAgICApXG4gIH0sIFtcbiAgICBvcGVuLFxuICAgIHBvcyxcbiAgICB6SW5kZXgsXG4gICAgYWxsb3dlZFR5cGVzLFxuICAgIGFjdGl2ZVR5cGUsXG4gICAgaXRlbXMsXG4gICAgbG9hZGluZyxcbiAgICBlcnJvcixcbiAgICBoaWRlUmVjZW50c0xhYmVsLFxuICAgIGhhc01vcmUsXG4gICAgaXNMb2FkaW5nTW9yZSxcbiAgICBsb2FkTW9yZSxcbiAgICBzZWFyY2hWYWx1ZSxcbiAgICBjb21taXRQaW4sXG4gICAgdXBkYXRlU2VhcmNoVmFsdWUsXG4gICAgY2xvc2UsXG4gICAgdCxcbiAgXSlcblxuICByZXR1cm4geyBvcGVuLCB0b2dnbGUsIGNsb3NlLCBwb3BvdmVyTm9kZSB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUErQkEsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDdkYsU0FDRUMscUJBQXFCLEVBQ3JCQyw0QkFBNEIsRUFDNUJDLFVBQVUsUUFDTCwyQ0FBMkM7QUFDbEQsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLGdCQUFnQixRQUFRLDJCQUEyQjtBQUM1RCxTQUFTQyxJQUFJLFFBQVEsUUFBUTtBQUM3QjtBQUNBLFNBQVNDLGVBQWUsUUFBUSxtQkFBbUI7QUFBQSxTQUFB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
@@ -1,86 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import _regeneratorRuntime from "@babel/runtime/regenerator";
4
- import { useCallback, useEffect, useState } from 'react';
5
- import { getRecentContexts } from '../services/maia/RecentContexts';
6
- export var useRecentContexts = function useRecentContexts() {
7
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
8
- agentId = _ref.agentId,
9
- _ref$enabled = _ref.enabled,
10
- enabled = _ref$enabled === void 0 ? true : _ref$enabled,
11
- _ref$limit = _ref.limit,
12
- limit = _ref$limit === void 0 ? 9 : _ref$limit;
13
- var _useState = useState([]),
14
- _useState2 = _slicedToArray(_useState, 2),
15
- contexts = _useState2[0],
16
- setContexts = _useState2[1];
17
- var _useState3 = useState(false),
18
- _useState4 = _slicedToArray(_useState3, 2),
19
- loading = _useState4[0],
20
- setLoading = _useState4[1];
21
- var _useState5 = useState(null),
22
- _useState6 = _slicedToArray(_useState5, 2),
23
- error = _useState6[0],
24
- setError = _useState6[1];
25
- var _useState7 = useState(false),
26
- _useState8 = _slicedToArray(_useState7, 2),
27
- loaded = _useState8[0],
28
- setLoaded = _useState8[1];
29
- var fetchRecentContexts = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
30
- var data, message, _t;
31
- return _regeneratorRuntime.wrap(function (_context) {
32
- while (1) switch (_context.prev = _context.next) {
33
- case 0:
34
- if (enabled) {
35
- _context.next = 1;
36
- break;
37
- }
38
- setContexts([]);
39
- setLoading(false);
40
- setError(null);
41
- setLoaded(false);
42
- return _context.abrupt("return");
43
- case 1:
44
- setLoading(true);
45
- setError(null);
46
- _context.prev = 2;
47
- _context.next = 3;
48
- return getRecentContexts({
49
- agentId: agentId,
50
- limit: limit
51
- });
52
- case 3:
53
- data = _context.sent;
54
- setContexts(data);
55
- _context.next = 5;
56
- break;
57
- case 4:
58
- _context.prev = 4;
59
- _t = _context["catch"](2);
60
- message = _t instanceof Error ? _t.message : 'An unknown error occurred';
61
- setError(message);
62
- setContexts([]);
63
- console.error('Error fetching recent contexts:', _t);
64
- case 5:
65
- _context.prev = 5;
66
- setLoading(false);
67
- setLoaded(true);
68
- return _context.finish(5);
69
- case 6:
70
- case "end":
71
- return _context.stop();
72
- }
73
- }, _callee, null, [[2, 4, 5, 6]]);
74
- })), [agentId, enabled, limit]);
75
- useEffect(function () {
76
- fetchRecentContexts();
77
- }, [fetchRecentContexts]);
78
- return {
79
- contexts: contexts,
80
- loading: loading,
81
- loaded: loaded,
82
- error: error,
83
- fetchRecentContexts: fetchRecentContexts
84
- };
85
- };
86
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiZ2V0UmVjZW50Q29udGV4dHMiLCJ1c2VSZWNlbnRDb250ZXh0cyIsIl9yZWYiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJhZ2VudElkIiwiX3JlZiRlbmFibGVkIiwiZW5hYmxlZCIsIl9yZWYkbGltaXQiLCJsaW1pdCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImNvbnRleHRzIiwic2V0Q29udGV4dHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJsb2FkZWQiLCJzZXRMb2FkZWQiLCJmZXRjaFJlY2VudENvbnRleHRzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJkYXRhIiwibWVzc2FnZSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJhYnJ1cHQiLCJzZW50IiwiRXJyb3IiLCJjb25zb2xlIiwiZmluaXNoIiwic3RvcCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VSZWNlbnRDb250ZXh0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgZ2V0UmVjZW50Q29udGV4dHMsIHR5cGUgUmVjZW50Q29udGV4dEl0ZW0gfSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL1JlY2VudENvbnRleHRzJ1xuXG50eXBlIFVzZVJlY2VudENvbnRleHRzT3B0aW9ucyA9IHtcbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bWJlclxuICBlbmFibGVkPzogYm9vbGVhblxuICBsaW1pdD86IG51bWJlclxufVxuXG5leHBvcnQgY29uc3QgdXNlUmVjZW50Q29udGV4dHMgPSAoeyBhZ2VudElkLCBlbmFibGVkID0gdHJ1ZSwgbGltaXQgPSA5IH06IFVzZVJlY2VudENvbnRleHRzT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IFtjb250ZXh0cywgc2V0Q29udGV4dHNdID0gdXNlU3RhdGU8UmVjZW50Q29udGV4dEl0ZW1bXT4oW10pXG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtsb2FkZWQsIHNldExvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBmZXRjaFJlY2VudENvbnRleHRzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgc2V0Q29udGV4dHMoW10pXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0RXJyb3IobnVsbClcbiAgICAgIHNldExvYWRlZChmYWxzZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICBzZXRFcnJvcihudWxsKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBnZXRSZWNlbnRDb250ZXh0cyh7IGFnZW50SWQsIGxpbWl0IH0pXG4gICAgICBzZXRDb250ZXh0cyhkYXRhKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCdcbiAgICAgIHNldEVycm9yKG1lc3NhZ2UpXG4gICAgICBzZXRDb250ZXh0cyhbXSlcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlY2VudCBjb250ZXh0czonLCBlcnIpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRMb2FkZWQodHJ1ZSlcbiAgICB9XG4gIH0sIFthZ2VudElkLCBlbmFibGVkLCBsaW1pdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFJlY2VudENvbnRleHRzKClcbiAgfSwgW2ZldGNoUmVjZW50Q29udGV4dHNdKVxuXG4gIHJldHVybiB7XG4gICAgY29udGV4dHMsXG4gICAgbG9hZGluZyxcbiAgICBsb2FkZWQsXG4gICAgZXJyb3IsXG4gICAgZmV0Y2hSZWNlbnRDb250ZXh0cyxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDeEQsU0FBU0MsaUJBQWlCLFFBQWdDLGlDQUFpQztBQVEzRixPQUFPLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUEsRUFBOEU7RUFBQSxJQUFBQyxJQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFQLENBQUMsQ0FBQztJQUFuRUcsT0FBTyxHQUFBSixJQUFBLENBQVBJLE9BQU87SUFBQUMsWUFBQSxHQUFBTCxJQUFBLENBQUVNLE9BQU87SUFBUEEsT0FBTyxHQUFBRCxZQUFBLGNBQUcsSUFBSSxHQUFBQSxZQUFBO0lBQUFFLFVBQUEsR0FBQVAsSUFBQSxDQUFFUSxLQUFLO0lBQUxBLEtBQUssR0FBQUQsVUFBQSxjQUFHLENBQUMsR0FBQUEsVUFBQTtFQUNwRSxJQUFBRSxTQUFBLEdBQWdDWixRQUFRLENBQXNCLEVBQUUsQ0FBQztJQUFBYSxVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUExREcsUUFBUSxHQUFBRixVQUFBO0lBQUVHLFdBQVcsR0FBQUgsVUFBQTtFQUM1QixJQUFBSSxVQUFBLEdBQThCakIsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBa0Is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