@projectcor/maia-components 2.11.58 → 2.11.59-1

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 (78) hide show
  1. package/lib/App.js +4 -2
  2. package/lib/components/atoms/icons/RocketIcon.js +31 -0
  3. package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
  4. package/lib/components/atoms/icons/WrenchIcon.js +42 -0
  5. package/lib/components/atoms/icons/index.js +3 -1
  6. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
  7. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +510 -0
  8. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.styles.js +234 -0
  9. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/catalog.js +437 -0
  10. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/index.js +3 -0
  11. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +3 -3
  12. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +2 -2
  13. package/lib/components/molecules/AbmSection/AbmSkillsSection.styles.js +80 -0
  14. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.interface.js +2 -0
  15. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +722 -0
  16. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +165 -0
  17. package/lib/components/molecules/AbmSection/AbmTriggersSection/index.js +2 -0
  18. package/lib/components/molecules/AbmSection/index.js +2 -1
  19. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +21 -2
  20. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +60 -16
  21. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -2
  22. package/lib/components/molecules/ChatAIModal/constants.js +10 -2
  23. package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.js +448 -0
  24. package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.styles.js +184 -0
  25. package/lib/components/molecules/ChatAIMyRoutines/index.js +2 -0
  26. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
  27. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
  28. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  29. package/lib/components/molecules/ChatFooter/ChatFooter.js +1 -1
  30. package/lib/components/molecules/SchedulesPage/SchedulesPage.js +610 -0
  31. package/lib/components/molecules/SchedulesPage/index.js +2 -0
  32. package/lib/components/molecules/Sidebar/Sidebar.js +61 -28
  33. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +15 -11
  34. package/lib/components/molecules/SkillsPage/SkillsPage.js +708 -0
  35. package/lib/components/molecules/SkillsPage/index.js +2 -0
  36. package/lib/components/molecules/maiaSectionModalStyles.js +91 -0
  37. package/lib/components/molecules/maiaSectionUiTokens.js +31 -0
  38. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +247 -50
  39. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +4 -4
  40. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
  41. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  42. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  43. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
  44. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
  45. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  46. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +16 -2
  47. package/lib/dev/DevAbmAgentModal.js +114 -0
  48. package/lib/dev/mocks/abmModalMocks.js +193 -0
  49. package/lib/hooks/useAgentModel/useCreateAgent.js +11 -10
  50. package/lib/hooks/useAgentModel/useUpdateAgent.js +12 -11
  51. package/lib/hooks/useMentionAllowedTypes.js +38 -6
  52. package/lib/lang/br/index.js +294 -1
  53. package/lib/lang/en/index.js +294 -1
  54. package/lib/lang/es/index.js +294 -1
  55. package/lib/lang/fr/index.js +296 -2
  56. package/lib/services/maia/Agents/connectors.js +110 -0
  57. package/lib/services/maia/Agents/createAgent.js +1 -1
  58. package/lib/services/maia/Agents/getAgentById.js +3 -2
  59. package/lib/services/maia/Agents/skills.js +164 -0
  60. package/lib/services/maia/Agents/updateAgent.js +1 -1
  61. package/lib/services/maia/Orchestrator/orchestrator.js +1 -2
  62. package/lib/services/maia/Schedules/createSchedule.js +39 -0
  63. package/lib/services/maia/Schedules/deleteSchedule.js +36 -0
  64. package/lib/services/maia/Schedules/getMySchedules.js +55 -0
  65. package/lib/services/maia/Schedules/getSchedules.js +58 -0
  66. package/lib/services/maia/Schedules/index.js +5 -0
  67. package/lib/services/maia/Skills/createSkill.js +39 -0
  68. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  69. package/lib/services/maia/Skills/generateSkill.js +41 -0
  70. package/lib/services/maia/Skills/getSkills.js +90 -0
  71. package/lib/services/maia/Skills/updateSkill.js +39 -0
  72. package/lib/types/Chat.js +1 -1
  73. package/lib/types/agent.js +1 -1
  74. package/lib/types/agentModal.js +1 -1
  75. package/lib/types/agentSkill.js +2 -0
  76. package/lib/types/attachment.js +2 -0
  77. package/lib/types/skill.js +2 -0
  78. package/package.json +1 -1
@@ -29,9 +29,41 @@ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
29
29
  var _useGlobalContext = useGlobalContext(),
30
30
  agent = _useGlobalContext.agent;
31
31
  return useMemo(function () {
32
- var _agent$connectors$fin, _agent$connectors, _allowedTypes$;
32
+ var _agent$connectors$fin3, _agent$connectors3, _allowedTypes$;
33
+ // Agentes custom: los tipos disponibles se derivan de sus conectores COR.
34
+ // tasks_read → [user, task]; projects_read → agrega project; clients_read → agrega client.
35
+ // Los conectores están encadenados: clients implica projects, projects implica tasks.
36
+ if ((agent === null || agent === void 0 ? void 0 : agent.type) === 'custom') {
37
+ var _agent$connectors$fin, _agent$connectors, _agent$connectors$fin2, _agent$connectors2, _corTypes$;
38
+ var corSlugs = (_agent$connectors$fin = (_agent$connectors = agent.connectors) === null || _agent$connectors === void 0 || (_agent$connectors = _agent$connectors.find(function (c) {
39
+ return c.group === 'COR';
40
+ })) === null || _agent$connectors === void 0 ? void 0 : _agent$connectors.slugs) !== null && _agent$connectors$fin !== void 0 ? _agent$connectors$fin : [];
41
+ var hasClients = corSlugs.includes('clients_read');
42
+ var hasProjects = corSlugs.includes('projects_read');
43
+ var hasTasks = corSlugs.includes('tasks_read');
44
+ var corTypes = [];
45
+ if (hasClients) {
46
+ corTypes = ['user', 'task', 'project', 'client'];
47
+ } else if (hasProjects) {
48
+ corTypes = ['user', 'task', 'project'];
49
+ } else if (hasTasks) {
50
+ corTypes = ['user', 'task'];
51
+ }
52
+ var _mcpSlugs = (_agent$connectors$fin2 = (_agent$connectors2 = agent.connectors) === null || _agent$connectors2 === void 0 || (_agent$connectors2 = _agent$connectors2.find(function (c) {
53
+ return c.group === 'MCP';
54
+ })) === null || _agent$connectors2 === void 0 || (_agent$connectors2 = _agent$connectors2.slugs) === null || _agent$connectors2 === void 0 ? void 0 : _agent$connectors2.filter(function (s) {
55
+ return typeof s === 'string' && s.trim().length > 0;
56
+ })) !== null && _agent$connectors$fin2 !== void 0 ? _agent$connectors$fin2 : [];
57
+ if (_mcpSlugs.length > 0) {
58
+ corTypes = [].concat(_toConsumableArray(corTypes), ['mcp']);
59
+ }
60
+ return {
61
+ allowedTypes: corTypes,
62
+ defaultType: (_corTypes$ = corTypes[0]) !== null && _corTypes$ !== void 0 ? _corTypes$ : 'user'
63
+ };
64
+ }
65
+
33
66
  // Las @-mentions (y por ende los fetch de recents) solo aplican a agentes clone.
34
- // Los agentes no-clone (custom, etc.) no las tienen habilitadas por ahora.
35
67
  if ((agent === null || agent === void 0 ? void 0 : agent.type) !== 'clone') {
36
68
  return {
37
69
  allowedTypes: [],
@@ -70,11 +102,11 @@ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
70
102
  return type !== 'user';
71
103
  });
72
104
  }
73
- var mcpSlugs = (_agent$connectors$fin = agent === null || agent === void 0 || (_agent$connectors = agent.connectors) === null || _agent$connectors === void 0 || (_agent$connectors = _agent$connectors.find(function (connector) {
105
+ var mcpSlugs = (_agent$connectors$fin3 = agent === null || agent === void 0 || (_agent$connectors3 = agent.connectors) === null || _agent$connectors3 === void 0 || (_agent$connectors3 = _agent$connectors3.find(function (connector) {
74
106
  return connector.group === 'MCP';
75
- })) === null || _agent$connectors === void 0 || (_agent$connectors = _agent$connectors.slugs) === null || _agent$connectors === void 0 ? void 0 : _agent$connectors.filter(function (slug) {
107
+ })) === null || _agent$connectors3 === void 0 || (_agent$connectors3 = _agent$connectors3.slugs) === null || _agent$connectors3 === void 0 ? void 0 : _agent$connectors3.filter(function (slug) {
76
108
  return typeof slug === 'string' && slug.trim().length > 0;
77
- })) !== null && _agent$connectors$fin !== void 0 ? _agent$connectors$fin : [];
109
+ })) !== null && _agent$connectors$fin3 !== void 0 ? _agent$connectors$fin3 : [];
78
110
  if (mcpSlugs.length > 0) {
79
111
  allowedTypes = [].concat(_toConsumableArray(allowedTypes), ['mcp']);
80
112
  }
@@ -84,4 +116,4 @@ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
84
116
  };
85
117
  }, [agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.type, agent === null || agent === void 0 ? void 0 : agent.connectors, override]);
86
118
  };
87
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlR2xvYmFsQ29udGV4dCIsIkFMTF9UWVBFUyIsIlRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSIsInVzZU1lbnRpb25BbGxvd2VkVHlwZXMiLCJvdmVycmlkZSIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJfYWdlbnQkY29ubmVjdG9ycyRmaW4iLCJfYWdlbnQkY29ubmVjdG9ycyIsIl9hbGxvd2VkVHlwZXMkIiwidHlwZSIsImFsbG93ZWRUeXBlcyIsImRlZmF1bHRUeXBlIiwibGVuZ3RoIiwiZW50aXR5IiwiaW5jbHVkZXMiLCJmaWx0ZXIiLCJtY3BTbHVncyIsImNvbm5lY3RvcnMiLCJmaW5kIiwiY29ubmVjdG9yIiwiZ3JvdXAiLCJzbHVncyIsInNsdWciLCJ0cmltIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG5jb25zdCBBTExfVFlQRVM6IENvbnRleHRFbnRpdHlUeXBlW10gPSBbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snLCAndXNlciddXG5cbi8qKlxuICogUmVzdHJpY2Npw7NuIHRlbXBvcmFsIGRlIHByb2R1Y3RvOiBlbCBwb3BvdmVyIGRlIEAtbWVudGlvbnMgKENPUiArIE1DUCkgc29sbyBhcGxpY2EgYVxuICogYWdlbnRlcyBjdXlvIGBlbnRpdHlgIGVzIHByb3llY3RvIG8gY2xpZW50ZSAo4oCcZXNwZWNpYWxpc3Rhc+KAnSBhY290YWRvcykuIEVsIHJlc3RvIG5vIHZlIHRhYnNcbiAqIG5pIE1DUCBhdW5xdWUgdGVuZ2EgY29uZWN0b3JlcyBhY3Rpdm9zLiBQYXNhciBhIGBmYWxzZWAgY3VhbmRvIHNlIGhhYmlsaXRlIGRlIG51ZXZvIGVsXG4gKiBhbGNhbmNlIGFtcGxpbzsgbm8gYm9ycmFyIGVsIGN1ZXJwbyBkZWwgaG9vayBxdWUgcXVlZGEgZGViYWpvLlxuICovXG5jb25zdCBURU1QX0NPTlRFWFRfTUVOVElPTlNfUkVRVUlSRV9QUk9KRUNUX09SX0NMSUVOVF9FTlRJVFkgPSB0cnVlXG5cbmV4cG9ydCB0eXBlIFVzZU1lbnRpb25BbGxvd2VkVHlwZXNSZXN1bHQgPSB7XG4gIGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXVxuICBkZWZhdWx0VHlwZTogQ29udGV4dEVudGl0eVR5cGVcbn1cblxuLyoqXG4gKiBEZXJpdmEgZGVsIGFnZW50IGFjdGl2byBxdcOpIHRhYnMgZGVsIGNvbnRleHQgbWVudGlvbiBkZWJlbiBlc3RhciBkaXNwb25pYmxlcy5cbiAqXG4gKiBSZWdsYXM6XG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSAnZ2xvYmFsJyAg4oaSIG5pbmd1bmEgKHNpbiBALW1lbnRpb25zKVxuICogICAtIGFnZW50LmVudGl0eSA9PT0gJ3Byb2plY3QnIOKGkiBbdGFzaywgdXNlcl1cbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09ICdjbGllbnQnICDihpIgW3Byb2plY3QsIHRhc2ssIHVzZXJdXG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSBudWxsL290cm8gIOKGkiB0b2RhcyBzaSBlbCBmbGFnIHRlbXBvcmFsIGVzdMOhIGVuIGZhbHNlIChjb250ZXh0byBhbXBsaW8pXG4gKiAgIC0gYWdlbnQudHlwZSAhPT0gJ2Nsb25lJyAgICAgIOKGkiBuaW5ndW5hIChzaW4gQC1tZW50aW9ucyBwb3IgYWhvcmEpXG4gKlxuICogRWwgYG92ZXJyaWRlYCAocHJvcCBgZW5hYmxlZFR5cGVzYCBkZWwgY29tcG9uZW50ZSBjb25zdW1pZG9yKSBzaWVtcHJlIGdhbmEuXG4gKlxuICogTWllbnRyYXMgYFRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWWAgc2VhIHRydWUsIHRyYXMgZWwgb3ZlcnJpZGVcbiAqIHNvbG8gc2UgcGVybWl0ZSBjb250aW51YXIgc2kgYGFnZW50LmVudGl0eWAgZXMgYHByb2plY3RgIG8gYGNsaWVudGAgKHNpbiBAIHBhcmEgZ2xvYmFsL251bGwvb3Ryb3MpLlxuICovXG5leHBvcnQgY29uc3QgdXNlTWVudGlvbkFsbG93ZWRUeXBlcyA9IChvdmVycmlkZT86IENvbnRleHRFbnRpdHlUeXBlW10pOiBVc2VNZW50aW9uQWxsb3dlZFR5cGVzUmVzdWx0ID0+IHtcbiAgY29uc3QgeyBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgcmV0dXJuIHVzZU1lbW8oKCk6IFVzZU1lbnRpb25BbGxvd2VkVHlwZXNSZXN1bHQgPT4ge1xuICAgIC8vIExhcyBALW1lbnRpb25zICh5IHBvciBlbmRlIGxvcyBmZXRjaCBkZSByZWNlbnRzKSBzb2xvIGFwbGljYW4gYSBhZ2VudGVzIGNsb25lLlxuICAgIC8vIExvcyBhZ2VudGVzIG5vLWNsb25lIChjdXN0b20sIGV0Yy4pIG5vIGxhcyB0aWVuZW4gaGFiaWxpdGFkYXMgcG9yIGFob3JhLlxuICAgIGlmIChhZ2VudD8udHlwZSAhPT0gJ2Nsb25lJykge1xuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbXSwgZGVmYXVsdFR5cGU6ICd1c2VyJyB9XG4gICAgfVxuXG4gICAgaWYgKG92ZXJyaWRlICYmIG92ZXJyaWRlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRUeXBlID0gb3ZlcnJpZGVbMF1cbiAgICAgIHJldHVybiB7IGFsbG93ZWRUeXBlczogb3ZlcnJpZGUsIGRlZmF1bHRUeXBlIH1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBURU1QX0NPTlRFWFRfTUVOVElPTlNfUkVRVUlSRV9QUk9KRUNUX09SX0NMSUVOVF9FTlRJVFkgJiZcbiAgICAgIGFnZW50Py5lbnRpdHkgIT09ICdwcm9qZWN0JyAmJlxuICAgICAgYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCdcbiAgICApIHtcbiAgICAgIHJldHVybiB7IGFsbG93ZWRUeXBlczogW10sIGRlZmF1bHRUeXBlOiAndXNlcicgfVxuICAgIH1cblxuICAgIGlmIChhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJykge1xuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbXSwgZGVmYXVsdFR5cGU6ICd1c2VyJyB9XG4gICAgfVxuXG4gICAgbGV0IGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXSA9IEFMTF9UWVBFU1xuXG4gICAgaWYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWyd1c2VyJywgJ3Rhc2snXVxuICAgIH0gZWxzZSBpZiAoYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IFsndXNlcicsICd0YXNrJywgJ3Byb2plY3QnXVxuICAgIH1cblxuICAgIC8vIGB1c2VyYCBzw7NsbyBzZSBoYWJpbGl0YSBqdW50byBjb24gYHRhc2tgLlxuICAgIGlmICghYWxsb3dlZFR5cGVzLmluY2x1ZGVzKCd0YXNrJykpIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IGFsbG93ZWRUeXBlcy5maWx0ZXIodHlwZSA9PiB0eXBlICE9PSAndXNlcicpXG4gICAgfVxuXG4gICAgY29uc3QgbWNwU2x1Z3MgPVxuICAgICAgYWdlbnQ/LmNvbm5lY3RvcnNcbiAgICAgICAgPy5maW5kKGNvbm5lY3RvciA9PiBjb25uZWN0b3IuZ3JvdXAgPT09ICdNQ1AnKVxuICAgICAgICA/LnNsdWdzPy5maWx0ZXIoKHNsdWcpOiBzbHVnIGlzIHN0cmluZyA9PiB0eXBlb2Ygc2x1ZyA9PT0gJ3N0cmluZycgJiYgc2x1Zy50cmltKCkubGVuZ3RoID4gMCkgPz8gW11cbiAgICBpZiAobWNwU2x1Z3MubGVuZ3RoID4gMCkge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWy4uLmFsbG93ZWRUeXBlcywgJ21jcCddXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFsbG93ZWRUeXBlcyxcbiAgICAgIGRlZmF1bHRUeXBlOiBhbGxvd2VkVHlwZXNbMF0gPz8gJ3VzZXInLFxuICAgIH1cbiAgfSwgW2FnZW50Py5lbnRpdHksIGFnZW50Py50eXBlLCBhZ2VudD8uY29ubmVjdG9ycywgb3ZlcnJpZGVdKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBU0EsT0FBTyxRQUFRLE9BQU87QUFDL0IsU0FBU0MsZ0JBQWdCLFFBQVEsMkJBQTJCO0FBRzVELElBQU1DLFNBQThCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7O0FBRTVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLHNEQUFzRCxHQUFHLElBQUk7QUFPbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJQyxRQUE4QixFQUFtQztFQUN0RyxJQUFBQyxpQkFBQSxHQUFrQkwsZ0JBQWdCLENBQUMsQ0FBQztJQUE1Qk0sS0FBSyxHQUFBRCxpQkFBQSxDQUFMQyxLQUFLO0VBRWIsT0FBT1AsT0FBTyxDQUFDLFlBQW9DO0lBQUEsSUFBQVEscUJBQUEsRUFBQUMsaUJBQUEsRUFBQUMsY0FBQTtJQUNqRDtJQUNBO0lBQ0EsSUFBSSxDQUFBSCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUksSUFBSSxNQUFLLE9BQU8sRUFBRTtNQUMzQixPQUFPO1FBQUVDLFlBQVksRUFBRSxFQUFFO1FBQUVDLFdBQVcsRUFBRTtNQUFPLENBQUM7SUFDbEQ7SUFFQSxJQUFJUixRQUFRLElBQUlBLFFB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
119
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlR2xvYmFsQ29udGV4dCIsIkFMTF9UWVBFUyIsIlRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSIsInVzZU1lbnRpb25BbGxvd2VkVHlwZXMiLCJvdmVycmlkZSIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJfYWdlbnQkY29ubmVjdG9ycyRmaW4zIiwiX2FnZW50JGNvbm5lY3RvcnMzIiwiX2FsbG93ZWRUeXBlcyQiLCJ0eXBlIiwiX2FnZW50JGNvbm5lY3RvcnMkZmluIiwiX2FnZW50JGNvbm5lY3RvcnMiLCJfYWdlbnQkY29ubmVjdG9ycyRmaW4yIiwiX2FnZW50JGNvbm5lY3RvcnMyIiwiX2NvclR5cGVzJCIsImNvclNsdWdzIiwiY29ubmVjdG9ycyIsImZpbmQiLCJjIiwiZ3JvdXAiLCJzbHVncyIsImhhc0NsaWVudHMiLCJpbmNsdWRlcyIsImhhc1Byb2plY3RzIiwiaGFzVGFza3MiLCJjb3JUeXBlcyIsIm1jcFNsdWdzIiwiZmlsdGVyIiwicyIsInRyaW0iLCJsZW5ndGgiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhbGxvd2VkVHlwZXMiLCJkZWZhdWx0VHlwZSIsImVudGl0eSIsImNvbm5lY3RvciIsInNsdWciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWVudGlvbkFsbG93ZWRUeXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlIH0gZnJvbSAnLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5cbmNvbnN0IEFMTF9UWVBFUzogQ29udGV4dEVudGl0eVR5cGVbXSA9IFsnY2xpZW50JywgJ3Byb2plY3QnLCAndGFzaycsICd1c2VyJ11cblxuLyoqXG4gKiBSZXN0cmljY2nDs24gdGVtcG9yYWwgZGUgcHJvZHVjdG86IGVsIHBvcG92ZXIgZGUgQC1tZW50aW9ucyAoQ09SICsgTUNQKSBzb2xvIGFwbGljYSBhXG4gKiBhZ2VudGVzIGN1eW8gYGVudGl0eWAgZXMgcHJveWVjdG8gbyBjbGllbnRlICjigJxlc3BlY2lhbGlzdGFz4oCdIGFjb3RhZG9zKS4gRWwgcmVzdG8gbm8gdmUgdGFic1xuICogbmkgTUNQIGF1bnF1ZSB0ZW5nYSBjb25lY3RvcmVzIGFjdGl2b3MuIFBhc2FyIGEgYGZhbHNlYCBjdWFuZG8gc2UgaGFiaWxpdGUgZGUgbnVldm8gZWxcbiAqIGFsY2FuY2UgYW1wbGlvOyBubyBib3JyYXIgZWwgY3VlcnBvIGRlbCBob29rIHF1ZSBxdWVkYSBkZWJham8uXG4gKi9cbmNvbnN0IFRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSA9IHRydWVcblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvbkFsbG93ZWRUeXBlc1Jlc3VsdCA9IHtcbiAgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdXG4gIGRlZmF1bHRUeXBlOiBDb250ZXh0RW50aXR5VHlwZVxufVxuXG4vKipcbiAqIERlcml2YSBkZWwgYWdlbnQgYWN0aXZvIHF1w6kgdGFicyBkZWwgY29udGV4dCBtZW50aW9uIGRlYmVuIGVzdGFyIGRpc3BvbmlibGVzLlxuICpcbiAqIFJlZ2xhczpcbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09ICdnbG9iYWwnICDihpIgbmluZ3VuYSAoc2luIEAtbWVudGlvbnMpXG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSAncHJvamVjdCcg4oaSIFt0YXNrLCB1c2VyXVxuICogICAtIGFnZW50LmVudGl0eSA9PT0gJ2NsaWVudCcgIOKGkiBbcHJvamVjdCwgdGFzaywgdXNlcl1cbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09IG51bGwvb3RybyAg4oaSIHRvZGFzIHNpIGVsIGZsYWcgdGVtcG9yYWwgZXN0w6EgZW4gZmFsc2UgKGNvbnRleHRvIGFtcGxpbylcbiAqICAgLSBhZ2VudC50eXBlICE9PSAnY2xvbmUnICAgICAg4oaSIG5pbmd1bmEgKHNpbiBALW1lbnRpb25zIHBvciBhaG9yYSlcbiAqXG4gKiBFbCBgb3ZlcnJpZGVgIChwcm9wIGBlbmFibGVkVHlwZXNgIGRlbCBjb21wb25lbnRlIGNvbnN1bWlkb3IpIHNpZW1wcmUgZ2FuYS5cbiAqXG4gKiBNaWVudHJhcyBgVEVNUF9DT05URVhUX01FTlRJT05TX1JFUVVJUkVfUFJPSkVDVF9PUl9DTElFTlRfRU5USVRZYCBzZWEgdHJ1ZSwgdHJhcyBlbCBvdmVycmlkZVxuICogc29sbyBzZSBwZXJtaXRlIGNvbnRpbnVhciBzaSBgYWdlbnQuZW50aXR5YCBlcyBgcHJvamVjdGAgbyBgY2xpZW50YCAoc2luIEAgcGFyYSBnbG9iYWwvbnVsbC9vdHJvcykuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZW50aW9uQWxsb3dlZFR5cGVzID0gKG92ZXJyaWRlPzogQ29udGV4dEVudGl0eVR5cGVbXSk6IFVzZU1lbnRpb25BbGxvd2VkVHlwZXNSZXN1bHQgPT4ge1xuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICByZXR1cm4gdXNlTWVtbygoKTogVXNlTWVudGlvbkFsbG93ZWRUeXBlc1Jlc3VsdCA9PiB7XG4gICAgLy8gQWdlbnRlcyBjdXN0b206IGxvcyB0aXBvcyBkaXNwb25pYmxlcyBzZSBkZXJpdmFuIGRlIHN1cyBjb25lY3RvcmVzIENPUi5cbiAgICAvLyB0YXNrc19yZWFkIOKGkiBbdXNlciwgdGFza107IHByb2plY3RzX3JlYWQg4oaSIGFncmVnYSBwcm9qZWN0OyBjbGllbnRzX3JlYWQg4oaSIGFncmVnYSBjbGllbnQuXG4gICAgLy8gTG9zIGNvbmVjdG9yZXMgZXN0w6FuIGVuY2FkZW5hZG9zOiBjbGllbnRzIGltcGxpY2EgcHJvamVjdHMsIHByb2plY3RzIGltcGxpY2EgdGFza3MuXG4gICAgaWYgKGFnZW50Py50eXBlID09PSAnY3VzdG9tJykge1xuICAgICAgY29uc3QgY29yU2x1Z3MgPSBhZ2VudC5jb25uZWN0b3JzPy5maW5kKGMgPT4gYy5ncm91cCA9PT0gJ0NPUicpPy5zbHVncyA/PyBbXVxuICAgICAgY29uc3QgaGFzQ2xpZW50cyA9IGNvclNsdWdzLmluY2x1ZGVzKCdjbGllbnRzX3JlYWQnKVxuICAgICAgY29uc3QgaGFzUHJvamVjdHMgPSBjb3JTbHVncy5pbmNsdWRlcygncHJvamVjdHNfcmVhZCcpXG4gICAgICBjb25zdCBoYXNUYXNrcyA9IGNvclNsdWdzLmluY2x1ZGVzKCd0YXNrc19yZWFkJylcblxuICAgICAgbGV0IGNvclR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdID0gW11cbiAgICAgIGlmIChoYXNDbGllbnRzKSB7XG4gICAgICAgIGNvclR5cGVzID0gWyd1c2VyJywgJ3Rhc2snLCAncHJvamVjdCcsICdjbGllbnQnXVxuICAgICAgfSBlbHNlIGlmIChoYXNQcm9qZWN0cykge1xuICAgICAgICBjb3JUeXBlcyA9IFsndXNlcicsICd0YXNrJywgJ3Byb2plY3QnXVxuICAgICAgfSBlbHNlIGlmIChoYXNUYXNrcykge1xuICAgICAgICBjb3JUeXBlcyA9IFsndXNlcicsICd0YXNrJ11cbiAgICAgIH1cblxuICAgICAgY29uc3QgbWNwU2x1Z3MgPVxuICAgICAgICBhZ2VudC5jb25uZWN0b3JzXG4gICAgICAgICAgPy5maW5kKGMgPT4gYy5ncm91cCA9PT0gJ01DUCcpXG4gICAgICAgICAgPy5zbHVncz8uZmlsdGVyKChzKTogcyBpcyBzdHJpbmcgPT4gdHlwZW9mIHMgPT09ICdzdHJpbmcnICYmIHMudHJpbSgpLmxlbmd0aCA+IDApID8/IFtdXG4gICAgICBpZiAobWNwU2x1Z3MubGVuZ3RoID4gMCkge1xuICAgICAgICBjb3JUeXBlcyA9IFsuLi5jb3JUeXBlcywgJ21jcCddXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFsbG93ZWRUeXBlczogY29yVHlwZXMsXG4gICAgICAgIGRlZmF1bHRUeXBlOiBjb3JUeXBlc1swXSA/PyAndXNlcicsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGFzIEAtbWVudGlvbnMgKHkgcG9yIGVuZGUgbG9zIGZldGNoIGRlIHJlY2VudHMpIHNvbG8gYXBsaWNhbiBhIGFnZW50ZXMgY2xvbmUuXG4gICAgaWYgKGFnZW50Py50eXBlICE9PSAnY2xvbmUnKSB7XG4gICAgICByZXR1cm4geyBhbGxvd2VkVHlwZXM6IFtdLCBkZWZhdWx0VHlwZTogJ3VzZXInIH1cbiAgICB9XG5cbiAgICBpZiAob3ZlcnJpZGUgJiYgb3ZlcnJpZGUubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZGVmYXVsdFR5cGUgPSBvdmVycmlkZVswXVxuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBvdmVycmlkZSwgZGVmYXVsdFR5cGUgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIFRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSAmJlxuICAgICAgYWdlbnQ/LmVudGl0eSAhPT0gJ3Byb2plY3QnICYmXG4gICAgICBhZ2VudD8uZW50aXR5ICE9PSAnY2xpZW50J1xuICAgICkge1xuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbXSwgZGVmYXVsdFR5cGU6ICd1c2VyJyB9XG4gICAgfVxuXG4gICAgaWYgKGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnKSB7XG4gICAgICByZXR1cm4geyBhbGxvd2VkVHlwZXM6IFtdLCBkZWZhdWx0VHlwZTogJ3VzZXInIH1cbiAgICB9XG5cbiAgICBsZXQgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdID0gQUxMX1RZUEVTXG5cbiAgICBpZiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICBhbGxvd2VkVHlwZXMgPSBbJ3VzZXInLCAndGFzayddXG4gICAgfSBlbHNlIGlmIChhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50Jykge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWyd1c2VyJywgJ3Rhc2snLCAncHJvamVjdCddXG4gICAgfVxuXG4gICAgLy8gYHVzZXJgIHPDs2xvIHNlIGhhYmlsaXRhIGp1bnRvIGNvbiBgdGFza2AuXG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoJ3Rhc2snKSkge1xuICAgICAgYWxsb3dlZFR5cGVzID0gYWxsb3dlZFR5cGVzLmZpbHRlcih0eXBlID0+IHR5cGUgIT09ICd1c2VyJylcbiAgICB9XG5cbiAgICBjb25zdCBtY3BTbHVncyA9XG4gICAgICBhZ2VudD8uY29ubmVjdG9yc1xuICAgICAgICA/LmZpbmQoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5ncm91cCA9PT0gJ01DUCcpXG4gICAgICAgID8uc2x1Z3M/LmZpbHRlcigoc2x1Zyk6IHNsdWcgaXMgc3RyaW5nID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJyAmJiBzbHVnLnRyaW0oKS5sZW5ndGggPiAwKSA/PyBbXVxuICAgIGlmIChtY3BTbHVncy5sZW5ndGggPiAwKSB7XG4gICAgICBhbGxvd2VkVHlwZXMgPSBbLi4uYWxsb3dlZFR5cGVzLCAnbWNwJ11cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWxsb3dlZFR5cGVzLFxuICAgICAgZGVmYXVsdFR5cGU6IGFsbG93ZWRUeXBlc1swXSA/PyAndXNlcicsXG4gICAgfVxuICB9LCBbYWdlbnQ/LmVudGl0eSwgYWdlbnQ/LnR5cGUsIGFnZW50Py5jb25uZWN0b3JzLCBvdmVycmlkZV0pXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxPQUFPLFFBQVEsT0FBTztBQUMvQixTQUFTQyxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFHNUQsSUFBTUMsU0FBOEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQzs7QUFFNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsc0RBQXNELEdBQUcsSUFBSTtBQU9u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