@projectcor/maia-components 2.29.0 → 2.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. package/lib/App.js +55 -0
  2. package/lib/components/atoms/ActionableButton.js +60 -0
  3. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +89 -0
  4. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +21 -0
  5. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.js +9 -0
  6. package/lib/components/atoms/AgentActivityIndicator/index.js +2 -0
  7. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +209 -0
  8. package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +93 -0
  9. package/lib/components/atoms/ApprovalBox/index.js +2 -0
  10. package/lib/components/atoms/AttachmentCard/AttachmentCard.js +218 -0
  11. package/lib/components/atoms/AttachmentCard/AttachmentCard.styles.js +52 -0
  12. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +448 -0
  13. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.styles.js +58 -0
  14. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +55 -0
  15. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.styles.js +14 -0
  16. package/lib/components/atoms/AttachmentCard/index.js +4 -0
  17. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +442 -0
  18. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.styles.js +119 -0
  19. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +222 -0
  20. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +313 -0
  21. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +128 -0
  22. package/lib/components/atoms/AttachmentPreviewModal/index.js +2 -0
  23. package/lib/components/atoms/Backdrop/Backdrop.js +17 -0
  24. package/lib/components/atoms/Backdrop/Backdrop.styles.js +9 -0
  25. package/lib/components/atoms/Backdrop/index.js +2 -0
  26. package/lib/components/atoms/CardItem.js +7 -0
  27. package/lib/components/atoms/CardMenu/CardMenu.js +131 -0
  28. package/lib/components/atoms/CardMenu/index.js +2 -0
  29. package/lib/components/atoms/CardMenu/styles.js +21 -0
  30. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +77 -0
  31. package/lib/components/atoms/ChatClientSelector/index.js +2 -0
  32. package/lib/components/atoms/ChatDisclaimerMessage/ChatDisclaimerMessage.js +9 -0
  33. package/lib/components/atoms/ChatDisclaimerMessage/index.js +2 -0
  34. package/lib/components/atoms/ChatDisclaimerMessage/styles.js +6 -0
  35. package/lib/components/atoms/Checkbox/Checkbox.js +34 -0
  36. package/lib/components/atoms/Checkbox/index.js +2 -0
  37. package/lib/components/atoms/Checkbox/styles.js +39 -0
  38. package/lib/components/atoms/Chip/Chip.js +150 -0
  39. package/lib/components/atoms/Chip/index.js +2 -0
  40. package/lib/components/atoms/Chip/styles.js +43 -0
  41. package/lib/components/atoms/ChipLlm/ChipLlm.js +45 -0
  42. package/lib/components/atoms/ChipLlm/ChipLlm.style.js +21 -0
  43. package/lib/components/atoms/ChipLlm/index.js +2 -0
  44. package/lib/components/atoms/ChipStatus/ChipStatus.interface.js +2 -0
  45. package/lib/components/atoms/ChipStatus/ChipStatus.js +14 -0
  46. package/lib/components/atoms/ChipStatus/ChipStatus.styles.js +27 -0
  47. package/lib/components/atoms/ChipStatus/index.js +2 -0
  48. package/lib/components/atoms/ClearButton.js +6 -0
  49. package/lib/components/atoms/ClientSelector/ClientSelector.js +146 -0
  50. package/lib/components/atoms/ClientSelector/ClientSelector.styles.js +15 -0
  51. package/lib/components/atoms/ClientSelector/index.js +2 -0
  52. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +38 -0
  53. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +188 -0
  54. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.js +39 -0
  55. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +434 -0
  56. package/lib/components/atoms/ContextMentionChip/index.js +4 -0
  57. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +411 -0
  58. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +10 -0
  59. package/lib/components/atoms/ContextMentionEditor/index.js +2 -0
  60. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +309 -0
  61. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +157 -0
  62. package/lib/components/atoms/ContextMentionItem/index.js +2 -0
  63. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +307 -0
  64. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +108 -0
  65. package/lib/components/atoms/ContextMentionPopover/index.js +3 -0
  66. package/lib/components/atoms/CopyToClipboard.js +70 -0
  67. package/lib/components/atoms/EditableLabel/EditableLabel.js +110 -0
  68. package/lib/components/atoms/EditableLabel/index.js +2 -0
  69. package/lib/components/atoms/EditableLabel/styles.js +7 -0
  70. package/lib/components/atoms/EmptySearchClients/EmptySearchClients.js +22 -0
  71. package/lib/components/atoms/EmptySearchClients/EmptySearchClients.styles.js +18 -0
  72. package/lib/components/atoms/EmptySearchClients/index.js +2 -0
  73. package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.js +19 -0
  74. package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.styles.js +15 -0
  75. package/lib/components/atoms/EmptySearchProjects/index.js +2 -0
  76. package/lib/components/atoms/EntitySelector/EntitySelector.js +247 -0
  77. package/lib/components/atoms/EntitySelector/EntitySelector.skeleton.js +38 -0
  78. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +67 -0
  79. package/lib/components/atoms/EntitySelector/index.js +2 -0
  80. package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.js +14 -0
  81. package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.styles.js +15 -0
  82. package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.js +14 -0
  83. package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.style.js +15 -0
  84. package/lib/components/atoms/ErrorSearchFaqs/index.js +2 -0
  85. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.js +18 -0
  86. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.style.js +15 -0
  87. package/lib/components/atoms/ErrorSearchProjects/index.js +2 -0
  88. package/lib/components/atoms/Expand/Expand.js +32 -0
  89. package/lib/components/atoms/Expand/index.js +2 -0
  90. package/lib/components/atoms/Fade/Fade.js +56 -0
  91. package/lib/components/atoms/Fade/index.js +2 -0
  92. package/lib/components/atoms/FeedbackButton/FeedbackButton.js +59 -0
  93. package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +14 -0
  94. package/lib/components/atoms/FeedbackButton/index.js +2 -0
  95. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +138 -0
  96. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.skeleton.js +44 -0
  97. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +43 -0
  98. package/lib/components/atoms/FrequentlyAskedQuestions/index.js +2 -0
  99. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +122 -0
  100. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.skeleton.js +43 -0
  101. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +62 -0
  102. package/lib/components/atoms/FrequentlyUsedActions/index.js +2 -0
  103. package/lib/components/atoms/GoBackButton.js +24 -0
  104. package/lib/components/atoms/HelpButton.js +44 -0
  105. package/lib/components/atoms/IconButton.js +56 -0
  106. package/lib/components/atoms/ImagePreview/ImagePreview.js +96 -0
  107. package/lib/components/atoms/ImagePreview/ImagePreview.styles.js +70 -0
  108. package/lib/components/atoms/Input/CustomInput.interface.js +2 -0
  109. package/lib/components/atoms/Input/CustomInput.js +91 -0
  110. package/lib/components/atoms/Input/CustomInput.styles.js +39 -0
  111. package/lib/components/atoms/Input/index.js +2 -0
  112. package/lib/components/atoms/ListMenuOption/ListMenuOption.js +41 -0
  113. package/lib/components/atoms/ListMenuOption/index.js +2 -0
  114. package/lib/components/atoms/ListMenuOption/styles.js +9 -0
  115. package/lib/components/atoms/Loader.js +41 -0
  116. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.js +11 -0
  117. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.style.js +6 -0
  118. package/lib/components/atoms/LoadingFaqs/index.js +2 -0
  119. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.js +11 -0
  120. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.styles.js +6 -0
  121. package/lib/components/atoms/LoadingSearchClients/index.js +2 -0
  122. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.js +14 -0
  123. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.style.js +10 -0
  124. package/lib/components/atoms/LoadingSearchProjects/index.js +2 -0
  125. package/lib/components/atoms/LoadingText/LoadingText.js +18 -0
  126. package/lib/components/atoms/LoadingText/index.js +2 -0
  127. package/lib/components/atoms/LoadingText/styles.js +7 -0
  128. package/lib/components/atoms/MAIAButton/MAIAButton.js +33 -0
  129. package/lib/components/atoms/MAIAButton/index.js +2 -0
  130. package/lib/components/atoms/MAIAError/MAIAError.js +15 -0
  131. package/lib/components/atoms/MAIAError/index.js +2 -0
  132. package/lib/components/atoms/MAIAInput/MAIAInput.js +1058 -0
  133. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +266 -0
  134. package/lib/components/atoms/MAIAInput/index.js +2 -0
  135. package/lib/components/atoms/MAIAInput/maiaInputLayout.js +25 -0
  136. package/lib/components/atoms/MAIAInput/styles.js +182 -0
  137. package/lib/components/atoms/MAIAMessage/MAIAMessage.interfaces.js +2 -0
  138. package/lib/components/atoms/MAIAMessage/MAIAMessage.js +22 -0
  139. package/lib/components/atoms/MAIAMessage/index.js +2 -0
  140. package/lib/components/atoms/MAIAMessage/styles.js +7 -0
  141. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.config.js +23 -0
  142. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.interfaces.js +2 -0
  143. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.js +51 -0
  144. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.styles.js +26 -0
  145. package/lib/components/atoms/MaiaStreamdown/index.js +2 -0
  146. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.js +18 -0
  147. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +84 -0
  148. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.js +15 -0
  149. package/lib/components/atoms/MaiaWrapper/index.js +3 -0
  150. package/lib/components/atoms/MaiaWrapper/styles.js +21 -0
  151. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.interface.js +2 -0
  152. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.js +84 -0
  153. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.styles.js +53 -0
  154. package/lib/components/atoms/ModalClientAccess/index.js +2 -0
  155. package/lib/components/atoms/ModalInfo/ModalInfo.js +52 -0
  156. package/lib/components/atoms/ModalInfo/ModalInfoContent.js +7 -0
  157. package/lib/components/atoms/ModalInfo/index.js +3 -0
  158. package/lib/components/atoms/ModalInfo/styles.js +7 -0
  159. package/lib/components/atoms/ModalProject/ModalProject.interface.js +2 -0
  160. package/lib/components/atoms/ModalProject/ModalProject.js +112 -0
  161. package/lib/components/atoms/ModalProject/ModalProject.style.js +59 -0
  162. package/lib/components/atoms/ModalProject/index.js +2 -0
  163. package/lib/components/atoms/NextPageLoader.js +33 -0
  164. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.js +28 -0
  165. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +180 -0
  166. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.styles.js +34 -0
  167. package/lib/components/atoms/OnboardingModalButton/index.js +3 -0
  168. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +131 -0
  169. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.styles.js +59 -0
  170. package/lib/components/atoms/OptionAccessibility/index.js +2 -0
  171. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +27 -0
  172. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +18 -0
  173. package/lib/components/atoms/OptionCorPermission/index.js +2 -0
  174. package/lib/components/atoms/PrimaryButton.js +31 -0
  175. package/lib/components/atoms/ProjectSelector/ProjectSelector.js +77 -0
  176. package/lib/components/atoms/ProjectSelector/ProjectSelector.styles.js +61 -0
  177. package/lib/components/atoms/ProjectSelector/index.js +2 -0
  178. package/lib/components/atoms/SecondaryButton.js +20 -0
  179. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +20 -0
  180. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +20 -0
  181. package/lib/components/atoms/SessionGeneratingDot/index.js +2 -0
  182. package/lib/components/atoms/Skeleton/Skeleton.js +36 -0
  183. package/lib/components/atoms/Skeleton/index.js +2 -0
  184. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.js +16 -0
  185. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.styles.js +24 -0
  186. package/lib/components/atoms/SlashCommandChip/buildSlashChipElement.js +18 -0
  187. package/lib/components/atoms/SlashCommandChip/index.js +4 -0
  188. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +210 -0
  189. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +53 -0
  190. package/lib/components/atoms/SlashCommandDropdown/index.js +2 -0
  191. package/lib/components/atoms/Switch/Switch.js +27 -0
  192. package/lib/components/atoms/Switch/Switch.styles.js +22 -0
  193. package/lib/components/atoms/Switch/index.js +2 -0
  194. package/lib/components/atoms/TextArea/CustomTextArea.interface.js +2 -0
  195. package/lib/components/atoms/TextArea/CustomTextArea.js +93 -0
  196. package/lib/components/atoms/TextArea/CustomTextArea.styles.js +25 -0
  197. package/lib/components/atoms/TextArea/TextArea.interfaces.js +2 -0
  198. package/lib/components/atoms/TextArea/TextArea.js +172 -0
  199. package/lib/components/atoms/TextArea/TextArea.styles.js +16 -0
  200. package/lib/components/atoms/TextArea/index.js +2 -0
  201. package/lib/components/atoms/ThirdButton.js +19 -0
  202. package/lib/components/atoms/VideoModal/VideoModal.js +76 -0
  203. package/lib/components/atoms/VideoModal/index.js +2 -0
  204. package/lib/components/atoms/WithAppCfg.js +26 -0
  205. package/lib/components/atoms/WithFeatureValidation.js +23 -0
  206. package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.js +9 -0
  207. package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.styles.js +6 -0
  208. package/lib/components/atoms/WrapperCenterIcon/index.js +2 -0
  209. package/lib/components/atoms/icons/AIIcon.js +23 -0
  210. package/lib/components/atoms/icons/AacFile.js +39 -0
  211. package/lib/components/atoms/icons/AccessibilityIcon.js +42 -0
  212. package/lib/components/atoms/icons/ActionAssignIcon.js +111 -0
  213. package/lib/components/atoms/icons/ActionCalendarIcon.js +112 -0
  214. package/lib/components/atoms/icons/ActionChargeHoursIcon.js +111 -0
  215. package/lib/components/atoms/icons/ActionChatIcon.js +71 -0
  216. package/lib/components/atoms/icons/ActionCreateIcon.js +91 -0
  217. package/lib/components/atoms/icons/ActionCreateReworkIcon.js +39 -0
  218. package/lib/components/atoms/icons/ActionCreateSubtaskIcon.js +37 -0
  219. package/lib/components/atoms/icons/ActionEditIcon.js +39 -0
  220. package/lib/components/atoms/icons/ActionSummaryMessagesIcon.js +88 -0
  221. package/lib/components/atoms/icons/ActionSummaryTaskIcon.js +37 -0
  222. package/lib/components/atoms/icons/ActionTimeBackIcon.js +112 -0
  223. package/lib/components/atoms/icons/AgentMaiaIcon.js +31 -0
  224. package/lib/components/atoms/icons/Brain.js +77 -0
  225. package/lib/components/atoms/icons/CorAccessIcon.js +41 -0
  226. package/lib/components/atoms/icons/CorLogo.js +76 -0
  227. package/lib/components/atoms/icons/CsvFile.js +41 -0
  228. package/lib/components/atoms/icons/DocFile.js +41 -0
  229. package/lib/components/atoms/icons/DocxFile.js +41 -0
  230. package/lib/components/atoms/icons/EmptyClientIllustration.js +67 -0
  231. package/lib/components/atoms/icons/EmptyHistory.js +46 -0
  232. package/lib/components/atoms/icons/EmptySearchIllustration.js +37 -0
  233. package/lib/components/atoms/icons/EmptyState.js +84 -0
  234. package/lib/components/atoms/icons/EmptyStateAgents.js +58 -0
  235. package/lib/components/atoms/icons/ErrorIcon.js +14 -0
  236. package/lib/components/atoms/icons/ErrorSearchIllustration.js +52 -0
  237. package/lib/components/atoms/icons/ErrorState.js +51 -0
  238. package/lib/components/atoms/icons/FaqChevronIcon.js +39 -0
  239. package/lib/components/atoms/icons/FaqsIcon.js +51 -0
  240. package/lib/components/atoms/icons/FlacIcon.js +39 -0
  241. package/lib/components/atoms/icons/FolderIcon.js +29 -0
  242. package/lib/components/atoms/icons/HomeIcon.js +30 -0
  243. package/lib/components/atoms/icons/ImageFile.js +46 -0
  244. package/lib/components/atoms/icons/M4aFile.js +39 -0
  245. package/lib/components/atoms/icons/MAIAIcon.js +20 -0
  246. package/lib/components/atoms/icons/MAIAIsologo.js +65 -0
  247. package/lib/components/atoms/icons/MDFile.js +41 -0
  248. package/lib/components/atoms/icons/MaiaChatLayoutFloatingIcon.js +41 -0
  249. package/lib/components/atoms/icons/MaiaChatLayoutFullscreenIcon.js +41 -0
  250. package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +33 -0
  251. package/lib/components/atoms/icons/MaiaChatLayoutSidebarIcon.js +41 -0
  252. package/lib/components/atoms/icons/MaiaInputAddIcon.js +42 -0
  253. package/lib/components/atoms/icons/MaiaInputAttachIcon.js +29 -0
  254. package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +33 -0
  255. package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +35 -0
  256. package/lib/components/atoms/icons/MaiaInputMentionIcon.js +44 -0
  257. package/lib/components/atoms/icons/MaiaInputRobotIcon.js +29 -0
  258. package/lib/components/atoms/icons/MaiaInputSendIcon.js +29 -0
  259. package/lib/components/atoms/icons/MaiaInputSlashIcon.js +29 -0
  260. package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +35 -0
  261. package/lib/components/atoms/icons/MaiaSettingsProject.js +111 -0
  262. package/lib/components/atoms/icons/MaiaSettingsProjectV2.js +193 -0
  263. package/lib/components/atoms/icons/MaiaSparkleIcon.js +75 -0
  264. package/lib/components/atoms/icons/MaiaStoreIcon.js +31 -0
  265. package/lib/components/atoms/icons/Mp3File.js +39 -0
  266. package/lib/components/atoms/icons/Mp4File.js +39 -0
  267. package/lib/components/atoms/icons/MyAgentsNavIcon.js +51 -0
  268. package/lib/components/atoms/icons/NewChat.js +29 -0
  269. package/lib/components/atoms/icons/NotionIcon.js +36 -0
  270. package/lib/components/atoms/icons/OgaFile.js +39 -0
  271. package/lib/components/atoms/icons/OggFile.js +39 -0
  272. package/lib/components/atoms/icons/PdfFile.js +39 -0
  273. package/lib/components/atoms/icons/PptFile.js +47 -0
  274. package/lib/components/atoms/icons/PptxFile.js +49 -0
  275. package/lib/components/atoms/icons/RetryIcon.js +34 -0
  276. package/lib/components/atoms/icons/SkillIcon.js +30 -0
  277. package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
  278. package/lib/components/atoms/icons/SubtaskIcon.js +36 -0
  279. package/lib/components/atoms/icons/TaskLinkIcon.js +27 -0
  280. package/lib/components/atoms/icons/TelescopeIcon.js +60 -0
  281. package/lib/components/atoms/icons/TemplateGradientIcon.js +42 -0
  282. package/lib/components/atoms/icons/TextFile.js +41 -0
  283. package/lib/components/atoms/icons/WavFile.js +39 -0
  284. package/lib/components/atoms/icons/WebmFile.js +50 -0
  285. package/lib/components/atoms/icons/XlsFile.js +42 -0
  286. package/lib/components/atoms/icons/XlsxFile.js +42 -0
  287. package/lib/components/atoms/icons/index.js +50 -0
  288. package/lib/components/atoms/index.js +42 -0
  289. package/lib/components/index.js +11 -0
  290. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.interface.js +2 -0
  291. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +149 -0
  292. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +53 -0
  293. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +415 -0
  294. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +152 -0
  295. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +374 -0
  296. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +106 -0
  297. package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +92 -0
  298. package/lib/components/molecules/AbmSection/AbmLoaderFiles.styles.js +57 -0
  299. package/lib/components/molecules/AbmSection/index.js +4 -0
  300. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +52 -0
  301. package/lib/components/molecules/ChatAIClientSelector/index.js +2 -0
  302. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +117 -0
  303. package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +187 -0
  304. package/lib/components/molecules/ChatAIContent/ChatAIContent.styles.js +6 -0
  305. package/lib/components/molecules/ChatAIContent/index.js +2 -0
  306. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +241 -0
  307. package/lib/components/molecules/ChatAIHistory/index.js +2 -0
  308. package/lib/components/molecules/ChatAIHistory/styles.js +22 -0
  309. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +649 -0
  310. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +115 -0
  311. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +95 -0
  312. package/lib/components/molecules/ChatAIHome/index.js +2 -0
  313. package/lib/components/molecules/ChatAIHome/styles.js +335 -0
  314. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +137 -0
  315. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +853 -0
  316. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.js +47 -0
  317. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.styles.js +37 -0
  318. package/lib/components/molecules/ChatAIMessages/README.md +101 -0
  319. package/lib/components/molecules/ChatAIMessages/index.js +2 -0
  320. package/lib/components/molecules/ChatAIMessages/newStyles.js +131 -0
  321. package/lib/components/molecules/ChatAIMessages/styles.js +94 -0
  322. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +1217 -0
  323. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +58 -0
  324. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +127 -0
  325. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +34 -0
  326. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/index.js +2 -0
  327. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +189 -0
  328. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -0
  329. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/index.js +2 -0
  330. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +448 -0
  331. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +108 -0
  332. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/index.js +2 -0
  333. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +48 -0
  334. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +38 -0
  335. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +2 -0
  336. package/lib/components/molecules/ChatAIModal/constants.js +40 -0
  337. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.js +16 -0
  338. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.styles.js +12 -0
  339. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/constants.js +13 -0
  340. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/index.js +3 -0
  341. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.js +57 -0
  342. package/lib/components/molecules/ChatAIModal/index.js +2 -0
  343. package/lib/components/molecules/ChatAIModal/layout.js +74 -0
  344. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +457 -0
  345. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +218 -0
  346. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
  347. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
  348. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  349. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +48 -0
  350. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.styles.js +49 -0
  351. package/lib/components/molecules/ChatAIProjectSelector/index.js +2 -0
  352. package/lib/components/molecules/ChatFooter/ChatFooter.js +337 -0
  353. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.js +32 -0
  354. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.styles.js +14 -0
  355. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +201 -0
  356. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.styles.js +51 -0
  357. package/lib/components/molecules/ChatFooter/index.js +2 -0
  358. package/lib/components/molecules/ChatFooter/styles.js +23 -0
  359. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +62 -0
  360. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +6 -0
  361. package/lib/components/molecules/ContextMentionInput/index.js +2 -0
  362. package/lib/components/molecules/MessageFeedback/MessageFeedback.js +118 -0
  363. package/lib/components/molecules/MessageFeedback/index.js +2 -0
  364. package/lib/components/molecules/MessageFeedback/styles.js +14 -0
  365. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.js +127 -0
  366. package/lib/components/molecules/ProjectSummaryChat/index.js +2 -0
  367. package/lib/components/molecules/ProjectSummaryChat/styles.js +8 -0
  368. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.js +152 -0
  369. package/lib/components/molecules/ProjectSummaryConfig/index.js +2 -0
  370. package/lib/components/molecules/ProjectSummaryConfig/styles.js +86 -0
  371. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.js +49 -0
  372. package/lib/components/molecules/ProjectSummaryContent/index.js +2 -0
  373. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.js +19 -0
  374. package/lib/components/molecules/ProjectSummaryModal/index.js +2 -0
  375. package/lib/components/molecules/ProjectSummaryModal/styles.js +2 -0
  376. package/lib/components/molecules/Sidebar/Sidebar.js +715 -0
  377. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +157 -0
  378. package/lib/components/molecules/Sidebar/Sidebar.skeleton.js +48 -0
  379. package/lib/components/molecules/Sidebar/Sidebar.styles.js +75 -0
  380. package/lib/components/molecules/Sidebar/index.js +2 -0
  381. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +1420 -0
  382. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +93 -0
  383. package/lib/components/organisms/AbmAgentModal/index.js +2 -0
  384. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +175 -0
  385. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  386. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  387. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +432 -0
  388. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
  389. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  390. package/lib/components/organisms/ChatAI/ChatAI.js +167 -0
  391. package/lib/components/organisms/ChatAI/index.js +2 -0
  392. package/lib/components/organisms/ChatAI/styles.js +7 -0
  393. package/lib/components/organisms/ClientAIButton/ClientAIButton.js +23 -0
  394. package/lib/components/organisms/ClientAIButton/index.js +2 -0
  395. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.js +86 -0
  396. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.styles.js +39 -0
  397. package/lib/components/organisms/DeleteAgentModal/index.js +2 -0
  398. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +122 -0
  399. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.styles.js +47 -0
  400. package/lib/components/organisms/DeleteQuestionModal/index.js +2 -0
  401. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +138 -0
  402. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.styles.js +69 -0
  403. package/lib/components/organisms/EditQuestionModal/index.js +2 -0
  404. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.js +113 -0
  405. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.styles.js +54 -0
  406. package/lib/components/organisms/ModalFileExceeds/index.js +2 -0
  407. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.js +26 -0
  408. package/lib/components/organisms/ProjectAIButton/index.js +2 -0
  409. package/lib/components/organisms/ProjectSummary/ProjectSummary.js +60 -0
  410. package/lib/components/organisms/ProjectSummary/index.js +2 -0
  411. package/lib/components/organisms/ProjectSummary/styles.js +7 -0
  412. package/lib/components/organisms/SnackBar/Snackbar.interface.js +2 -0
  413. package/lib/components/organisms/SnackBar/Snackbar.js +73 -0
  414. package/lib/components/organisms/SnackBar/Snackbar.styles.js +9 -0
  415. package/lib/components/organisms/SnackBar/index.js +2 -0
  416. package/lib/components/organisms/SourcesInformation/SourceItem.js +18 -0
  417. package/lib/components/organisms/SourcesInformation/SourceItem.styles.js +14 -0
  418. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +66 -0
  419. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.styles.js +27 -0
  420. package/lib/components/organisms/SourcesInformation/index.js +2 -0
  421. package/lib/constants/config.js +13 -0
  422. package/lib/constants/formatExtensions.js +55 -0
  423. package/lib/constants/gqlClient.js +4 -0
  424. package/lib/constants/maiaHourAgentAccess.js +15 -0
  425. package/lib/constants/maiaTaskPanelAccess.js +24 -0
  426. package/lib/constants/maiaTaskPanelOutsideClick.js +9 -0
  427. package/lib/constants/maiaTaskPanelZIndex.js +19 -0
  428. package/lib/constants/permissions/config.js +72 -0
  429. package/lib/constants/permissions/index.js +3 -0
  430. package/lib/constants/permissions/types.js +2 -0
  431. package/lib/constants/permissions/utils.js +18 -0
  432. package/lib/constants/plannerSyncEvents.js +15 -0
  433. package/lib/constants/taskLinkIcon.js +15 -0
  434. package/lib/constants/taskUrls.js +11 -0
  435. package/lib/context/cor-user.js +31 -0
  436. package/lib/context/global-context.js +39 -0
  437. package/lib/dev/DevChatAI.js +101 -0
  438. package/lib/dev/DevContextMentionInput.js +67 -0
  439. package/lib/dev/ProjectSummary.js +9 -0
  440. package/lib/dev/Providers.js +27 -0
  441. package/lib/exports.js +2 -0
  442. package/lib/hooks/README.md +192 -0
  443. package/lib/hooks/index.js +30 -0
  444. package/lib/hooks/useAccessClient/index.js +2 -0
  445. package/lib/hooks/useAccessClient/useAccessClient.js +81 -0
  446. package/lib/hooks/useAgentModel/index.js +2 -0
  447. package/lib/hooks/useAgentModel/useAgentModel.js +62 -0
  448. package/lib/hooks/useAgentModel/useCreateAgent.js +128 -0
  449. package/lib/hooks/useAgentModel/useDeleteAgent.js +88 -0
  450. package/lib/hooks/useAgentModel/useUpdateAgent.js +129 -0
  451. package/lib/hooks/useAgentSuggestions.js +60 -0
  452. package/lib/hooks/useCaretPosition.js +65 -0
  453. package/lib/hooks/useChatManager/index.js +2 -0
  454. package/lib/hooks/useChatManager/useChatManager.interface.js +2 -0
  455. package/lib/hooks/useChatManager/useChatManager.js +1782 -0
  456. package/lib/hooks/useChatMessages/index.js +2 -0
  457. package/lib/hooks/useChatMessages/useChatMessages.interface.js +2 -0
  458. package/lib/hooks/useChatMessages/useChatMessages.js +722 -0
  459. package/lib/hooks/useChats/index.js +2 -0
  460. package/lib/hooks/useChats/useChats.interfaces.js +2 -0
  461. package/lib/hooks/useChats/useChats.js +187 -0
  462. package/lib/hooks/useClientSearch.js +163 -0
  463. package/lib/hooks/useContextMentions.js +463 -0
  464. package/lib/hooks/useContextPinPopover.js +228 -0
  465. package/lib/hooks/useDebounce.js +18 -0
  466. package/lib/hooks/useEntitySearch.js +1239 -0
  467. package/lib/hooks/useEvent.js +93 -0
  468. package/lib/hooks/useFrequentlyAskedQuestions.js +150 -0
  469. package/lib/hooks/useFrequentlyUsedActions.js +94 -0
  470. package/lib/hooks/useKnowledge/deleteKnowledge.js +69 -0
  471. package/lib/hooks/useKnowledge/downloadKnowledge.js +81 -0
  472. package/lib/hooks/useKnowledge/index.js +4 -0
  473. package/lib/hooks/useKnowledge/saveKnowledge.js +107 -0
  474. package/lib/hooks/useKnowledge/useKnowledgeOperations.js +156 -0
  475. package/lib/hooks/useMaiaTaskPanelZIndex.js +17 -0
  476. package/lib/hooks/useMentionAllowedTypes.js +136 -0
  477. package/lib/hooks/useMentionPopover.js +366 -0
  478. package/lib/hooks/useMinimizedPillBottomOffset.js +110 -0
  479. package/lib/hooks/useModal/index.js +2 -0
  480. package/lib/hooks/useModal/useModal.interfaces.js +2 -0
  481. package/lib/hooks/useModal/useModal.js +47 -0
  482. package/lib/hooks/useOnboardingNavigation.js +20 -0
  483. package/lib/hooks/useOrchestratorStream/index.js +2 -0
  484. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +2 -0
  485. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +269 -0
  486. package/lib/hooks/useProjectSearch.js +183 -0
  487. package/lib/hooks/useProjectSummary.js +101 -0
  488. package/lib/hooks/useProjectSummaryConfig.js +211 -0
  489. package/lib/hooks/useProjects.js +46 -0
  490. package/lib/hooks/useRecentClientsSearch.js +150 -0
  491. package/lib/hooks/useRecentContexts.js +86 -0
  492. package/lib/hooks/useResize.js +29 -0
  493. package/lib/hooks/useSlashCommands.js +84 -0
  494. package/lib/hooks/useSmoothStreamText/index.js +2 -0
  495. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +197 -0
  496. package/lib/hooks/useSnackBarManager/useSnackBarManager.js +41 -0
  497. package/lib/hooks/useStreamResponse.js +112 -0
  498. package/lib/hooks/useStreamdownStyles.js +13 -0
  499. package/lib/hooks/useStreamingMessage/index.js +2 -0
  500. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +18 -0
  501. package/lib/hooks/useT.js +17 -0
  502. package/lib/hooks/useTabTaskDefault.js +33 -0
  503. package/lib/hooks/useTaskPanel.js +22 -0
  504. package/lib/hooks/useTextOverflowEllipsisTooltip.js +34 -0
  505. package/lib/hooks/useToggle.js +19 -0
  506. package/lib/hooks/useToggleFavorite/index.js +2 -0
  507. package/lib/hooks/useToggleFavorite/useToggleFavorite.js +83 -0
  508. package/lib/index.css +76 -0
  509. package/lib/index.js +30 -0
  510. package/lib/lang/br/index.js +761 -0
  511. package/lib/lang/en/index.js +761 -0
  512. package/lib/lang/es/index.js +762 -0
  513. package/lib/lang/fr/index.js +582 -0
  514. package/lib/lang/index.js +24 -0
  515. package/lib/lang/utils.js +33 -0
  516. package/lib/mocks/mockChats.js +395 -0
  517. package/lib/mocks/mockOrchestrator.js +5 -0
  518. package/lib/mocks/mockProject.js +11 -0
  519. package/lib/mocks/mockProjectSummary.js +6 -0
  520. package/lib/mocks/mockedUser.js +169 -0
  521. package/lib/services/apolloClient.js +3 -0
  522. package/lib/services/appcues.js +19 -0
  523. package/lib/services/corpilot/ProjectSummary/getProjectSummary.js +31 -0
  524. package/lib/services/corpilot/ProjectSummary/index.js +5 -0
  525. package/lib/services/corpilot/client.js +27 -0
  526. package/lib/services/corpilot/index.js +5 -0
  527. package/lib/services/maia/Access/updateAccess.js +59 -0
  528. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +46 -0
  529. package/lib/services/maia/Actions/getSlashCommands.js +39 -0
  530. package/lib/services/maia/Actions/index.js +7 -0
  531. package/lib/services/maia/Agents/createAgent.js +39 -0
  532. package/lib/services/maia/Agents/deleteAgent.js +38 -0
  533. package/lib/services/maia/Agents/fetchAgentDetail.js +122 -0
  534. package/lib/services/maia/Agents/getAgentById.js +162 -0
  535. package/lib/services/maia/Agents/getAgentModels.js +112 -0
  536. package/lib/services/maia/Agents/getAgentSuggestions.js +44 -0
  537. package/lib/services/maia/Agents/getAgents.js +718 -0
  538. package/lib/services/maia/Agents/setAgentToolGroups.js +42 -0
  539. package/lib/services/maia/Agents/toggleFavorite.js +34 -0
  540. package/lib/services/maia/Agents/updateAgent.js +39 -0
  541. package/lib/services/maia/Chats/deleteChat.js +32 -0
  542. package/lib/services/maia/Chats/getChatMessages.js +144 -0
  543. package/lib/services/maia/Chats/getChatsByUserId.js +82 -0
  544. package/lib/services/maia/Chats/index.js +15 -0
  545. package/lib/services/maia/Chats/markSessionAsRead.js +32 -0
  546. package/lib/services/maia/Chats/patchChat.js +43 -0
  547. package/lib/services/maia/Chats/wasHelpfulChat.js +31 -0
  548. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +55 -0
  549. package/lib/services/maia/Faqs/index.js +5 -0
  550. package/lib/services/maia/Knowledge/delete.js +41 -0
  551. package/lib/services/maia/Knowledge/download.js +48 -0
  552. package/lib/services/maia/Knowledge/index.js +3 -0
  553. package/lib/services/maia/Knowledge/save.js +43 -0
  554. package/lib/services/maia/Orchestrator/index.js +7 -0
  555. package/lib/services/maia/Orchestrator/orchestrator.js +246 -0
  556. package/lib/services/maia/RecentClients/getRecentClients.js +43 -0
  557. package/lib/services/maia/RecentClients/index.js +6 -0
  558. package/lib/services/maia/RecentContexts/getRecentContexts.js +54 -0
  559. package/lib/services/maia/RecentContexts/index.js +6 -0
  560. package/lib/services/maia/RecentProjects/getRecentProjects.js +55 -0
  561. package/lib/services/maia/RecentProjects/index.js +6 -0
  562. package/lib/services/maia/RecentTasks/getRecentTasks.js +54 -0
  563. package/lib/services/maia/RecentTasks/index.js +6 -0
  564. package/lib/services/maia/RecentUsers/getRecentUsers.js +59 -0
  565. package/lib/services/maia/RecentUsers/index.js +6 -0
  566. package/lib/services/maia/Skills/createSkill.js +39 -0
  567. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  568. package/lib/services/maia/Skills/generateSkill.js +41 -0
  569. package/lib/services/maia/Skills/getSkills.js +90 -0
  570. package/lib/services/maia/Skills/updateSkill.js +39 -0
  571. package/lib/services/maia/client.js +27 -0
  572. package/lib/services/maia/index.js +17 -0
  573. package/lib/services/query/ClientSearchQuery.js +5 -0
  574. package/lib/services/query/entitySearchQuery.js +18 -0
  575. package/lib/services/query/index.js +2 -0
  576. package/lib/services/query/projectSearchByValueQuery.js +5 -0
  577. package/lib/services/query/taskUserTabQuery.js +8 -0
  578. package/lib/services/query/usersDirectoryQuery.js +19 -0
  579. package/lib/services/types.js +6 -0
  580. package/lib/services/utils/fetchCOR.js +117 -0
  581. package/lib/services/utils/getCookie.js +10 -0
  582. package/lib/services/utils/index.js +3 -0
  583. package/lib/services/utils/mapChatMessages.js +287 -0
  584. package/lib/services/utils/validateIsMaia.js +4 -0
  585. package/lib/store/chatsSidebarOptimistic.js +92 -0
  586. package/lib/store/chatsStore.types.js +2 -0
  587. package/lib/store/chatsStoreLifecycle.js +8 -0
  588. package/lib/store/faqsStore.types.js +2 -0
  589. package/lib/store/index.js +4 -0
  590. package/lib/store/maiaLastChatPersistence.js +35 -0
  591. package/lib/store/sessions/activeView.js +22 -0
  592. package/lib/store/sessions/index.js +9 -0
  593. package/lib/store/sessions/sessionHitlContext.js +15 -0
  594. package/lib/store/sessions/sessionNotificationSound.js +57 -0
  595. package/lib/store/sessions/sessionNotifications.js +110 -0
  596. package/lib/store/sessions/sessionNotifications.types.js +2 -0
  597. package/lib/store/sessions/sessionStreamManager.js +715 -0
  598. package/lib/store/sessions/sessionStreamingText.js +80 -0
  599. package/lib/store/sessions/sessions.types.js +35 -0
  600. package/lib/store/sessions/useSessionMeta.js +39 -0
  601. package/lib/store/sessions/useSessionStreamingText.js +18 -0
  602. package/lib/store/sessions/useSessionsStore.js +197 -0
  603. package/lib/store/useChatsStore.js +387 -0
  604. package/lib/store/useFaqsStore.js +27 -0
  605. package/lib/streamdownStyles.js +9 -0
  606. package/lib/styles/StyledCleanContainer.js +7 -0
  607. package/lib/styles/cascade.js +14 -0
  608. package/lib/styles/config.js +47 -0
  609. package/lib/styles/shared/scrollable.js +3 -0
  610. package/lib/styles/transitions.js +21 -0
  611. package/lib/types/Action.js +2 -0
  612. package/lib/types/AgentSuggestion.js +2 -0
  613. package/lib/types/Chat.js +10 -0
  614. package/lib/types/Client.js +2 -0
  615. package/lib/types/FrequentlyAskedQuestion.js +2 -0
  616. package/lib/types/Project.js +2 -0
  617. package/lib/types/ProjectSummaryConfigKeys.js +9 -0
  618. package/lib/types/Task.js +2 -0
  619. package/lib/types/agent.js +2 -0
  620. package/lib/types/agentModal.js +2 -0
  621. package/lib/types/contextMention.js +37 -0
  622. package/lib/types/global.d.js +2 -0
  623. package/lib/types/skill.js +2 -0
  624. package/lib/types/streamActivity.js +2 -0
  625. package/lib/types/userType.d.js +2 -0
  626. package/lib/utils/actionCategoryMap.js +37 -0
  627. package/lib/utils/actionIconMap.js +61 -0
  628. package/lib/utils/agentDisplayName.js +42 -0
  629. package/lib/utils/chatInputFiles.js +52 -0
  630. package/lib/utils/contextMentionIcons.js +134 -0
  631. package/lib/utils/contextMentionLabel.js +4 -0
  632. package/lib/utils/contextMentionTriggers.js +54 -0
  633. package/lib/utils/contextMentionTypeLabel.js +17 -0
  634. package/lib/utils/corConnectorMentionTypes.js +41 -0
  635. package/lib/utils/ensureStreamdownStyles.js +21 -0
  636. package/lib/utils/entityLinkRender.js +135 -0
  637. package/lib/utils/fileDownloadHelper.js +40 -0
  638. package/lib/utils/formatQuickActionMessage.js +16 -0
  639. package/lib/utils/formatUnreadCount.js +6 -0
  640. package/lib/utils/getUnitFileSize.js +13 -0
  641. package/lib/utils/hitlAnalytics.js +65 -0
  642. package/lib/utils/hoursPlannerQuickActionType.js +64 -0
  643. package/lib/utils/imagePreprocessor.js +108 -0
  644. package/lib/utils/index.js +3 -0
  645. package/lib/utils/maiaHostOpen.js +19 -0
  646. package/lib/utils/maiaStreamdownRehypePlugins.js +27 -0
  647. package/lib/utils/mapBackendLang.js +8 -0
  648. package/lib/utils/normalizeAgentConnectors.js +70 -0
  649. package/lib/utils/openTaskInCorPanel.js +22 -0
  650. package/lib/utils/orchestratorSubagents.js +11 -0
  651. package/lib/utils/renderContextMentions.js +399 -0
  652. package/lib/utils/retryCompletion.js +85 -0
  653. package/lib/utils/slashCommandMarker.js +30 -0
  654. package/lib/utils/sortManagerHoursHomeFuas.js +14 -0
  655. package/lib/utils/sseStreamContent.js +17 -0
  656. package/lib/utils/streamActivityMessages.js +359 -0
  657. package/lib/utils/validateTrimmedFields.js +8 -0
  658. package/package.json +1 -1
@@ -0,0 +1,24 @@
1
+ import i18next from 'i18next';
2
+ import br from './br';
3
+ import en from './en';
4
+ import es from './es';
5
+ import fr from './fr';
6
+ var fallbackLng = 'es';
7
+ export var LANG = window.lang || fallbackLng;
8
+ var i18n = i18next.createInstance();
9
+ i18n.init({
10
+ lng: LANG,
11
+ fallbackLng: fallbackLng,
12
+ resources: {
13
+ en: en,
14
+ es: es,
15
+ br: br,
16
+ fr: fr
17
+ },
18
+ keySeparator: '.',
19
+ interpolation: {
20
+ escapeValue: false
21
+ }
22
+ });
23
+ export default i18n;
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpMThuZXh0IiwiYnIiLCJlbiIsImVzIiwiZnIiLCJmYWxsYmFja0xuZyIsIkxBTkciLCJ3aW5kb3ciLCJsYW5nIiwiaTE4biIsImNyZWF0ZUluc3RhbmNlIiwiaW5pdCIsImxuZyIsInJlc291cmNlcyIsImtleVNlcGFyYXRvciIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYW5nL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpMThuZXh0IGZyb20gJ2kxOG5leHQnXG5pbXBvcnQgYnIgZnJvbSAnLi9icidcbmltcG9ydCBlbiBmcm9tICcuL2VuJ1xuaW1wb3J0IGVzIGZyb20gJy4vZXMnXG5pbXBvcnQgZnIgZnJvbSAnLi9mcidcblxuY29uc3QgZmFsbGJhY2tMbmcgPSAnZXMnXG5leHBvcnQgY29uc3QgTEFORzogc3RyaW5nID0gd2luZG93LmxhbmcgfHwgZmFsbGJhY2tMbmdcblxuY29uc3QgaTE4biA9IGkxOG5leHQuY3JlYXRlSW5zdGFuY2UoKVxuXG5pMThuLmluaXQoe1xuICBsbmc6IExBTkcsXG4gIGZhbGxiYWNrTG5nLFxuICByZXNvdXJjZXM6IHtcbiAgICBlbixcbiAgICBlcyxcbiAgICBicixcbiAgICBmcixcbiAgfSxcbiAga2V5U2VwYXJhdG9yOiAnLicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsXG4gIH0sXG59KVxuXG5leHBvcnQgZGVmYXVsdCBpMThuXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE9BQU8sTUFBTSxTQUFTO0FBQzdCLE9BQU9DLEVBQUUsTUFBTSxNQUFNO0FBQ3JCLE9BQU9DLEVBQUUsTUFBTSxNQUFNO0FBQ3JCLE9BQU9DLEVBQUUsTUFBTSxNQUFNO0FBQ3JCLE9BQU9DLEVBQUUsTUFBTSxNQUFNO0FBRXJCLElBQU1DLFdBQVcsR0FBRyxJQUFJO0FBQ3hCLE9BQU8sSUFBTUMsSUFBWSxHQUFHQyxNQUFNLENBQUNDLElBQUksSUFBSUgsV0FBVztBQUV0RCxJQUFNSSxJQUFJLEdBQUdULE9BQU8sQ0FBQ1UsY0FBYyxDQUFDLENBQUM7QUFFckNELElBQUksQ0FBQ0UsSUFBSSxDQUFDO0VBQ1JDLEdBQUcsRUFBRU4sSUFBSTtFQUNURCxXQUFXLEVBQVhBLFdBQVc7RUFDWFEsU0FBUyxFQUFFO0lBQ1RYLEVBQUUsRUFBRkEsRUFBRTtJQUNGQyxFQUFFLEVBQUZBLEVBQUU7SUFDRkYsRUFBRSxFQUFGQSxFQUFFO0lBQ0ZHLEVBQUUsRUFBRkE7RUFDRixDQUFDO0VBQ0RVLFlBQVksRUFBRSxHQUFHO0VBQ2pCQyxhQUFhLEVBQUU7SUFDYkMsV0FBVyxFQUFFO0VBQ2Y7QUFDRixDQUFDLENBQUM7QUFFRixlQUFlUCxJQUFJIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,33 @@
1
+ import moment from 'moment';
2
+ import i18n from './index';
3
+ export var mapCORLang = function mapCORLang(lang) {
4
+ if (lang === 'br') return 'pt';
5
+ return lang;
6
+ };
7
+ export var LANGS = /*#__PURE__*/function (LANGS) {
8
+ LANGS["ES"] = "es";
9
+ LANGS["EN"] = "en";
10
+ LANGS["BR"] = "br";
11
+ LANGS["MOMENT_BR"] = "pt-BR";
12
+ LANGS["EJ2_BR"] = "pt";
13
+ return LANGS;
14
+ }({});
15
+ export var getMomentLocale = function getMomentLocale() {
16
+ var current = i18n.language;
17
+ switch (current) {
18
+ case LANGS.BR:
19
+ return LANGS.MOMENT_BR;
20
+ default:
21
+ return current;
22
+ }
23
+ };
24
+ export var formatDate = function formatDate(date) {
25
+ var momentLocale = getMomentLocale();
26
+ var formatted = moment(date).locale(momentLocale).format('DD MMM, YYYY').replace(/\./g, '');
27
+ // Capitalize the month (which is the second word in the string)
28
+ return formatted.replace(/\b\w/g, function (match, offset) {
29
+ // Only capitalize if it's the month (second word)
30
+ return offset > 2 ? match.toUpperCase() : match;
31
+ });
32
+ };
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb21lbnQiLCJpMThuIiwibWFwQ09STGFuZyIsImxhbmciLCJMQU5HUyIsImdldE1vbWVudExvY2FsZSIsImN1cnJlbnQiLCJsYW5ndWFnZSIsIkJSIiwiTU9NRU5UX0JSIiwiZm9ybWF0RGF0ZSIsImRhdGUiLCJtb21lbnRMb2NhbGUiLCJmb3JtYXR0ZWQiLCJsb2NhbGUiLCJmb3JtYXQiLCJyZXBsYWNlIiwibWF0Y2giLCJvZmZzZXQiLCJ0b1VwcGVyQ2FzZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYW5nL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IGkxOG4gZnJvbSAnLi9pbmRleCdcblxuZXhwb3J0IGNvbnN0IG1hcENPUkxhbmcgPSAobGFuZzogc3RyaW5nKSA9PiB7XG4gIGlmIChsYW5nID09PSAnYnInKSByZXR1cm4gJ3B0J1xuICByZXR1cm4gbGFuZ1xufVxuXG5leHBvcnQgZW51bSBMQU5HUyB7XG4gIEVTID0gJ2VzJyxcbiAgRU4gPSAnZW4nLFxuICBCUiA9ICdicicsXG4gIE1PTUVOVF9CUiA9ICdwdC1CUicsXG4gIEVKMl9CUiA9ICdwdCcsXG59XG5cbmV4cG9ydCBjb25zdCBnZXRNb21lbnRMb2NhbGUgPSAoKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnQgPSBpMThuLmxhbmd1YWdlXG5cbiAgc3dpdGNoIChjdXJyZW50KSB7XG4gICAgY2FzZSBMQU5HUy5CUjpcbiAgICAgIHJldHVybiBMQU5HUy5NT01FTlRfQlJcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGN1cnJlbnRcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZm9ybWF0RGF0ZSA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGNvbnN0IG1vbWVudExvY2FsZSA9IGdldE1vbWVudExvY2FsZSgpXG4gIGNvbnN0IGZvcm1hdHRlZCA9IG1vbWVudChkYXRlKS5sb2NhbGUobW9tZW50TG9jYWxlKS5mb3JtYXQoJ0REIE1NTSwgWVlZWScpLnJlcGxhY2UoL1xcLi9nLCAnJylcbiAgLy8gQ2FwaXRhbGl6ZSB0aGUgbW9udGggKHdoaWNoIGlzIHRoZSBzZWNvbmQgd29yZCBpbiB0aGUgc3RyaW5nKVxuICByZXR1cm4gZm9ybWF0dGVkLnJlcGxhY2UoL1xcYlxcdy9nLCAobWF0Y2gsIG9mZnNldCkgPT4ge1xuICAgIC8vIE9ubHkgY2FwaXRhbGl6ZSBpZiBpdCdzIHRoZSBtb250aCAoc2Vjb25kIHdvcmQpXG4gICAgcmV0dXJuIG9mZnNldCA+IDIgPyBtYXRjaC50b1VwcGVyQ2FzZSgpIDogbWF0Y2hcbiAgfSlcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBTSxNQUFNLFFBQVE7QUFDM0IsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFFMUIsT0FBTyxJQUFNQyxVQUFVLEdBQUcsU0FBYkEsVUFBVUEsQ0FBSUMsSUFBWSxFQUFLO0VBQzFDLElBQUlBLElBQUksS0FBSyxJQUFJLEVBQUUsT0FBTyxJQUFJO0VBQzlCLE9BQU9BLElBQUk7QUFDYixDQUFDO0FBRUQsV0FBWUMsS0FBSywwQkFBTEEsS0FBSztFQUFMQSxLQUFLO0VBQUxBLEtBQUs7RUFBTEEsS0FBSztFQUFMQSxLQUFLO0VBQUxBLEtBQUs7RUFBQSxPQUFMQSxLQUFLO0FBQUE7QUFRakIsT0FBTyxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUEsRUFBUztFQUNuQyxJQUFNQyxPQUFPLEdBQUdMLElBQUksQ0FBQ00sUUFBUTtFQUU3QixRQUFRRCxPQUFPO0lBQ2IsS0FBS0YsS0FBSyxDQUFDSSxFQUFFO01BQ1gsT0FBT0osS0FBSyxDQUFDSyxTQUFTO0lBQ3hCO01BQ0UsT0FBT0gsT0FBTztFQUNsQjtBQUNGLENBQUM7QUFFRCxPQUFPLElBQU1JLFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUFJQyxJQUFVLEVBQUs7RUFDeEMsSUFBTUMsWUFBWSxHQUFHUCxlQUFlLENBQUMsQ0FBQztFQUN0QyxJQUFNUSxTQUFTLEdBQUdiLE1BQU0sQ0FBQ1csSUFBSSxDQUFDLENBQUNHLE1BQU0sQ0FBQ0YsWUFBWSxDQUFDLENBQUNHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7RUFDN0Y7RUFDQSxPQUFPSCxTQUFTLENBQUNHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBQ0MsS0FBSyxFQUFFQyxNQUFNLEVBQUs7SUFDbkQ7SUFDQSxPQUFPQSxNQUFNLEdBQUcsQ0FBQyxHQUFHRCxLQUFLLENBQUNFLFdBQVcsQ0FBQyxDQUFDLEdBQUdGLEtBQUs7RUFDakQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,395 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ 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; }
3
+ 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; }
4
+ import { v4 as uuidv4 } from 'uuid';
5
+ export var MOCK_TIME_SLEEP_RESPONSE = 1000; // milliseconds
6
+
7
+ export var MOCK_CHATS_RESPONSE = {
8
+ items: [{
9
+ chat_id: 'bfcad520-dbf7-4d99-ba9b-0eed93424459',
10
+ chat_status: 'active',
11
+ last_question: 'What is the profitability of this project?',
12
+ last_question_date: '2025-05-14T17:48:08Z',
13
+ message_id: uuidv4(),
14
+ q_answers: 1,
15
+ general_rating: 5,
16
+ user_id: '47138',
17
+ agent_id: '123'
18
+ }, {
19
+ chat_id: 'e5711ca1-00f5-4e35-afc8-22f1a230ca25',
20
+ chat_status: 'active',
21
+ last_question: 'What are the upcoming tasks due?',
22
+ last_question_date: '2025-05-14T15:16:06Z',
23
+ message_id: uuidv4(),
24
+ q_answers: 1,
25
+ general_rating: 5,
26
+ user_id: '47138',
27
+ agent_id: '123'
28
+ }, {
29
+ chat_id: '415bc2ff-6061-461a-b867-039ee905c118',
30
+ chat_status: 'active',
31
+ last_question: 'What is the progress of this project?',
32
+ last_question_date: '2025-05-14T15:16:03Z',
33
+ message_id: uuidv4(),
34
+ q_answers: 1,
35
+ general_rating: 5,
36
+ user_id: '47138',
37
+ agent_id: '123'
38
+ }, {
39
+ chat_id: '9c4699b3-0e7f-4540-9fad-4cfb7ef6242a',
40
+ chat_status: 'active',
41
+ last_question: 'What is the progress of this project?',
42
+ last_question_date: '2025-05-14T15:16:00Z',
43
+ message_id: uuidv4(),
44
+ q_answers: 1,
45
+ general_rating: 5,
46
+ user_id: '47138',
47
+ agent_id: '123'
48
+ }, {
49
+ chat_id: '51b67392-5ea7-4f2e-ac44-83f4c825767c',
50
+ chat_status: 'active',
51
+ last_question: 'What is the profitability of this project?',
52
+ last_question_date: '2025-05-14T15:15:59Z',
53
+ message_id: uuidv4(),
54
+ q_answers: 1,
55
+ general_rating: 5,
56
+ user_id: '47138',
57
+ agent_id: '123'
58
+ }, {
59
+ chat_id: '3e9ba276-c688-45a8-8fe1-c491629bbba3',
60
+ chat_status: 'active',
61
+ last_question: 'What are the upcoming tasks due?',
62
+ last_question_date: '2025-05-14T15:15:55Z',
63
+ message_id: uuidv4(),
64
+ q_answers: 1,
65
+ general_rating: 5,
66
+ user_id: '47138',
67
+ agent_id: '123'
68
+ }, {
69
+ chat_id: '04ff2f62-b07b-4c3b-b224-39f2d50e0734',
70
+ chat_status: 'active',
71
+ last_question: 'What is the progress of this project?',
72
+ last_question_date: '2025-05-14T15:15:53Z',
73
+ message_id: uuidv4(),
74
+ q_answers: 1,
75
+ general_rating: 5,
76
+ user_id: '47138',
77
+ agent_id: '123'
78
+ }, {
79
+ chat_id: '4b286566-8bf3-4f84-bd04-6f79f5575dbf',
80
+ chat_status: 'active',
81
+ last_question: 'What is the profitability of this project?',
82
+ last_question_date: '2025-05-14T15:15:51Z',
83
+ message_id: uuidv4(),
84
+ q_answers: 1,
85
+ general_rating: 5,
86
+ user_id: '47138',
87
+ agent_id: '123'
88
+ }, {
89
+ chat_id: 'cc6b91ea-f8ed-4862-acf3-e4ecb454f547',
90
+ chat_status: 'active',
91
+ last_question: 'What are the upcoming tasks due?',
92
+ last_question_date: '2025-05-14T15:15:35Z',
93
+ message_id: uuidv4(),
94
+ q_answers: 1,
95
+ general_rating: 5,
96
+ user_id: '47138',
97
+ agent_id: '123'
98
+ }, {
99
+ chat_id: '5d9eb5fa-733d-4e7c-aea8-0d599a8b01af',
100
+ chat_status: 'active',
101
+ last_question: 'What is the profitability of this project?',
102
+ last_question_date: '2025-05-14T15:15:30Z',
103
+ message_id: uuidv4(),
104
+ q_answers: 1,
105
+ general_rating: 5,
106
+ user_id: '47138',
107
+ agent_id: '123'
108
+ }],
109
+ last_evaluated_key: '%7B%22index%22%3A%2010%7D'
110
+ };
111
+
112
+ // Base de datos de preguntas y respuestas por tipo de chat
113
+ var CHAT_MESSAGES_DATABASE = {
114
+ 'bfcad520-dbf7-4d99-ba9b-0eed93424459': [{
115
+ question: '¿Cuál es la rentabilidad esperada del proyecto?',
116
+ answer: 'La rentabilidad proyectada del proyecto es del 28% anual. Los principales indicadores son:\n- ROI esperado: 2.8x\n- Margen de beneficio: 35%\n- Período de recuperación: 18 meses\n\nEstos números están basados en las proyecciones actuales y el análisis de mercado realizado en Q1 2025.',
117
+ project_id: 40532
118
+ }, {
119
+ question: '¿Cuáles son los costos operativos mensuales?',
120
+ answer: 'Los costos operativos mensuales ascienden a $45,000 distribuidos de la siguiente manera:\n- Infraestructura y hosting: $12,000\n- Licencias de software: $8,000\n- Recursos humanos: $20,000\n- Marketing y publicidad: $5,000\n\nEstos costos están dentro del presupuesto proyectado.',
121
+ project_id: 40532
122
+ }, {
123
+ question: '¿Cuál es el margen de contribución actual?',
124
+ answer: 'El margen de contribución actual es del 65%. Esto significa que por cada $100 de ingresos, $65 contribuyen directamente a cubrir los costos fijos y generar utilidades. Este margen está por encima del objetivo del 60%.',
125
+ project_id: 40532
126
+ }],
127
+ 'e5711ca1-00f5-4e35-afc8-22f1a230ca25': [{
128
+ question: '¿Cuáles son las próximas tareas pendientes?',
129
+ answer: 'Las próximas tareas prioritarias son:\n1. Finalizar la integración con el sistema de pagos (Fecha límite: 2025-05-20)\n2. Implementar el nuevo módulo de reportes (Fecha límite: 2025-05-25)\n3. Realizar pruebas de carga del sistema (Fecha límite: 2025-05-28)\n4. Preparar la documentación para el lanzamiento (Fecha límite: 2025-06-01)',
130
+ project_id: 40532
131
+ }, {
132
+ question: '¿Quién está asignado a la tarea de integración?',
133
+ answer: 'La tarea de integración está asignada al equipo de desarrollo backend:\n- Líder técnico: María González\n- Desarrolladores: Carlos Ruiz, Ana López\n- QA: Pedro Martínez\n\nEl equipo está trabajando en modalidad híbrida con reuniones diarias de seguimiento.',
134
+ project_id: 40532
135
+ }, {
136
+ question: '¿Cuál es el estado de las tareas críticas?',
137
+ answer: 'Estado de las tareas críticas:\n- ✅ Integración API: 85% completado\n- 🔄 Módulo de reportes: 60% completado\n- ⏳ Pruebas de carga: 30% completado\n- 📋 Documentación: 20% completado\n\nTodas las tareas están en camino de cumplir sus fechas límite.',
138
+ project_id: 40532
139
+ }],
140
+ '415bc2ff-6061-461a-b867-039ee905c118': [{
141
+ question: '¿Cuál es el estado actual del proyecto?',
142
+ answer: 'El proyecto actualmente tiene un progreso del 75%. Los hitos principales completados incluyen la fase de diseño (100%), desarrollo del backend (90%), y la interfaz de usuario (60%). El sprint actual está enfocado en la implementación de nuevas características y la optimización del rendimiento.',
143
+ project_id: 40532
144
+ }, {
145
+ question: '¿Cuáles son los hitos alcanzados este mes?',
146
+ answer: 'Hitos alcanzados en mayo 2025:\n- ✅ Lanzamiento de la versión beta\n- ✅ Integración completa con sistemas externos\n- ✅ Implementación del sistema de autenticación\n- ✅ Optimización del rendimiento en un 40%\n- 🔄 Migración a la nueva infraestructura (80% completado)',
147
+ project_id: 40532
148
+ }, {
149
+ question: '¿Cómo se compara el progreso con el plan original?',
150
+ answer: 'El progreso actual está 5% adelantado respecto al plan original:\n- Plan original: 70% completado\n- Progreso actual: 75% completado\n- Adelanto: +5%\n\nEste adelanto se debe principalmente a la eficiencia del equipo y la optimización de procesos.',
151
+ project_id: 40532
152
+ }],
153
+ '9c4699b3-0e7f-4540-9fad-4cfb7ef6242a': [{
154
+ question: '¿Cuál es el progreso del desarrollo frontend?',
155
+ answer: 'El desarrollo frontend está al 60% completado:\n- Componentes principales: 90%\n- Integración con APIs: 75%\n- Responsive design: 85%\n- Testing: 40%\n- Optimización: 30%\n\nEl equipo frontend está trabajando en paralelo con el backend.',
156
+ project_id: 40531
157
+ }, {
158
+ question: '¿Cuándo estará lista la versión beta?',
159
+ answer: 'La versión beta estará lista para el 25 de mayo de 2025. El cronograma detallado es:\n- Semana 1: Finalización de funcionalidades core\n- Semana 2: Testing y corrección de bugs\n- Semana 3: Preparación de documentación\n- Semana 4: Lanzamiento beta con usuarios selectos',
160
+ project_id: 40531
161
+ }, {
162
+ question: '¿Cuáles son los principales desafíos técnicos?',
163
+ answer: 'Los principales desafíos técnicos identificados son:\n1. Optimización de consultas de base de datos\n2. Implementación de cache distribuido\n3. Manejo de concurrencia en tiempo real\n4. Integración con sistemas legacy\n\nSe están aplicando soluciones escalables para cada desafío.',
164
+ project_id: 40531
165
+ }],
166
+ '51b67392-5ea7-4f2e-ac44-83f4c825767c': [{
167
+ question: '¿Cuál es el ROI esperado del proyecto?',
168
+ answer: 'El ROI esperado del proyecto es de 2.8x en un período de 18 meses. Desglose:\n- Inversión inicial: $500,000\n- Ingresos proyectados: $1,400,000\n- ROI: 180%\n- Período de recuperación: 18 meses\n\nEstas proyecciones están basadas en análisis de mercado y tendencias actuales.',
169
+ project_id: 155671
170
+ }, {
171
+ question: '¿Cuáles son las fuentes de ingresos principales?',
172
+ answer: 'Las fuentes de ingresos principales son:\n1. Suscripciones premium: 45% ($630,000)\n2. Licencias empresariales: 35% ($490,000)\n3. Servicios de consultoría: 15% ($210,000)\n4. Integraciones personalizadas: 5% ($70,000)\n\nLa estrategia se enfoca en diversificar las fuentes de ingresos.',
173
+ project_id: 155671
174
+ }, {
175
+ question: '¿Cómo se compara con la competencia?',
176
+ answer: 'Comparación con la competencia:\n- Nuestro margen: 35%\n- Competencia promedio: 25%\n- Ventaja competitiva: +10%\n\nEsta ventaja se debe a nuestra tecnología propietaria y eficiencia operativa.',
177
+ project_id: 155671
178
+ }],
179
+ '3e9ba276-c688-45a8-8fe1-c491629bbba3': [{
180
+ question: '¿Cuáles son las tareas del sprint actual?',
181
+ answer: 'Tareas del sprint actual (Sprint 12):\n1. Implementar filtros avanzados (8 puntos)\n2. Optimizar consultas de base de datos (5 puntos)\n3. Agregar exportación a PDF (3 puntos)\n4. Corregir bugs de UI (2 puntos)\n5. Actualizar documentación (1 punto)\n\nTotal: 19 puntos - 85% completado',
182
+ project_id: 40532
183
+ }, {
184
+ question: '¿Quién está disponible para nuevas tareas?',
185
+ answer: 'Disponibilidad del equipo:\n- María (Frontend): Disponible desde 2025-05-20\n- Carlos (Backend): Ocupado hasta 2025-05-25\n- Ana (QA): Disponible desde 2025-05-18\n- Pedro (DevOps): Ocupado hasta 2025-05-30\n\nRecomendación: Asignar tareas frontend a María y Ana.',
186
+ project_id: 40532
187
+ }, {
188
+ question: '¿Cuál es la velocidad del equipo?',
189
+ answer: 'La velocidad promedio del equipo es de 45 puntos por sprint:\n- Sprint 10: 42 puntos\n- Sprint 11: 48 puntos\n- Sprint 12 (actual): 38 puntos (proyectado)\n- Promedio: 45 puntos\n\nEl equipo está estable y consistente en su rendimiento.',
190
+ project_id: 40532
191
+ }],
192
+ '04ff2f62-b07b-4c3b-b224-39f2d50e0734': [{
193
+ question: '¿Cuál es el progreso de la fase de testing?',
194
+ answer: 'Progreso de la fase de testing:\n- Tests unitarios: 95% completado\n- Tests de integración: 80% completado\n- Tests de aceptación: 70% completado\n- Tests de rendimiento: 60% completado\n- Tests de seguridad: 85% completado\n\nCobertura total: 78% - Objetivo: 85%',
195
+ project_id: 40532
196
+ }, {
197
+ question: '¿Cuántos bugs críticos quedan por resolver?',
198
+ answer: 'Estado de bugs por prioridad:\n- Críticos: 2 bugs (ambos en proceso)\n- Altos: 8 bugs (5 resueltos)\n- Medios: 15 bugs (12 resueltos)\n- Bajos: 25 bugs (20 resueltos)\n\nLos bugs críticos están programados para resolución antes del 2025-05-20.',
199
+ project_id: 40532
200
+ }, {
201
+ question: '¿Cuándo estará lista la versión de producción?',
202
+ answer: 'La versión de producción estará lista el 15 de junio de 2025:\n- Semana 1: Finalización de testing\n- Semana 2: Corrección de bugs críticos\n- Semana 3: Preparación de despliegue\n- Semana 4: Lanzamiento gradual\n\nEl cronograma está alineado con los objetivos del proyecto.',
203
+ project_id: 40532
204
+ }],
205
+ '4b286566-8bf3-4f84-bd04-6f79f5575dbf': [{
206
+ question: '¿Cuál es el análisis de rentabilidad por segmento?',
207
+ answer: 'Análisis de rentabilidad por segmento:\n- Segmento SMB: 25% margen, $200K ingresos\n- Segmento Enterprise: 40% margen, $800K ingresos\n- Segmento Gobierno: 30% margen, $400K ingresos\n\nEl segmento Enterprise es el más rentable y representa el 57% de los ingresos.',
208
+ project_id: 155671
209
+ }, {
210
+ question: '¿Cuáles son las proyecciones para el próximo trimestre?',
211
+ answer: 'Proyecciones Q2 2025:\n- Ingresos totales: $450,000 (+15% vs Q1)\n- Nuevos clientes: 25 (+20% vs Q1)\n- Churn rate: 5% (objetivo: <8%)\n- LTV promedio: $18,000 (+10% vs Q1)\n\nLas proyecciones están basadas en el pipeline actual y tendencias de mercado.',
212
+ project_id: 155671
213
+ }, {
214
+ question: '¿Cómo afecta la inflación a la rentabilidad?',
215
+ answer: 'Impacto de la inflación en la rentabilidad:\n- Costos operativos: +8% (vs 5% proyectado)\n- Precios: +12% (ajuste implementado)\n- Margen neto: +2% (beneficio del ajuste de precios)\n\nLa estrategia de precios ha compensado el aumento de costos.',
216
+ project_id: 155671
217
+ }],
218
+ 'cc6b91ea-f8ed-4862-acf3-e4ecb454f547': [{
219
+ question: '¿Cuáles son las tareas bloqueadas actualmente?',
220
+ answer: 'Tareas bloqueadas:\n1. Integración con sistema de pagos (bloqueada por dependencia externa)\n2. Implementación de notificaciones push (bloqueada por aprobación de seguridad)\n3. Migración de datos (bloqueada por mantenimiento de BD)\n\nSe están coordinando con los equipos externos para resolver los bloqueos.',
221
+ project_id: 40532
222
+ }, {
223
+ question: '¿Quién puede ayudar con las tareas bloqueadas?',
224
+ answer: 'Recursos disponibles para desbloquear tareas:\n- Juan (Arquitecto): Puede ayudar con dependencias técnicas\n- Laura (Product Manager): Puede coordinar con stakeholders externos\n- Roberto (DevOps): Puede resolver problemas de infraestructura\n\nSe ha asignado un coordinador para cada tarea bloqueada.',
225
+ project_id: 40532
226
+ }, {
227
+ question: '¿Cuál es el plan de contingencia?',
228
+ answer: 'Plan de contingencia para tareas bloqueadas:\n- Alternativa 1: Usar sistema de pagos alternativo (implementación: 3 días)\n- Alternativa 2: Implementar notificaciones por email (implementación: 1 día)\n- Alternativa 3: Migración incremental de datos (implementación: 5 días)\n\nSe activará el plan de contingencia si los bloqueos persisten más de 48 horas.',
229
+ project_id: 40532
230
+ }],
231
+ '5d9eb5fa-733d-4e7c-aea8-0d599a8b01af': [{
232
+ question: '¿Cuál es el análisis de costos vs beneficios?',
233
+ answer: 'Análisis costo-beneficio:\n- Costos totales: $350,000\n- Beneficios proyectados: $1,200,000\n- Ratio beneficio/costo: 3.4:1\n- Valor presente neto: $750,000\n- Tasa interna de retorno: 45%\n\nEl proyecto es altamente rentable y supera todos los criterios de inversión.',
234
+ project_id: 155671
235
+ }, {
236
+ question: '¿Cuáles son los riesgos financieros?',
237
+ answer: 'Riesgos financieros identificados:\n1. Fluctuación de divisas (Probabilidad: Media, Impacto: Alto)\n2. Cambios regulatorios (Probabilidad: Baja, Impacto: Alto)\n3. Competencia agresiva (Probabilidad: Alta, Impacto: Medio)\n4. Recesión económica (Probabilidad: Baja, Impacto: Alto)\n\nSe han implementado estrategias de mitigación para cada riesgo.',
238
+ project_id: 155671
239
+ }, {
240
+ question: '¿Cómo se distribuye el presupuesto?',
241
+ answer: 'Distribución del presupuesto:\n- Desarrollo: 40% ($140,000)\n- Infraestructura: 25% ($87,500)\n- Marketing: 20% ($70,000)\n- Operaciones: 10% ($35,000)\n- Contingencia: 5% ($17,500)\n\nEl presupuesto está alineado con las mejores prácticas del sector.',
242
+ project_id: 155671
243
+ }]
244
+ };
245
+
246
+ // Función para generar mensajes aleatorios basados en el chatId
247
+ export var generateMockChatMessages = function generateMockChatMessages(chatId) {
248
+ var messagesForChat = CHAT_MESSAGES_DATABASE[chatId] || CHAT_MESSAGES_DATABASE['bfcad520-dbf7-4d99-ba9b-0eed93424459'];
249
+
250
+ // Generar entre 3 y 6 mensajes aleatorios
251
+ var numMessages = Math.floor(Math.random() * 4) + 3;
252
+ var selectedMessages = [];
253
+ for (var i = 0; i < numMessages; i += 1) {
254
+ var randomIndex = Math.floor(Math.random() * messagesForChat.length);
255
+ var message = messagesForChat[randomIndex];
256
+
257
+ // Generar fecha aleatoria en los últimos 7 días
258
+ var randomDate = new Date();
259
+ randomDate.setDate(randomDate.getDate() - Math.floor(Math.random() * 7));
260
+ randomDate.setHours(Math.floor(Math.random() * 24));
261
+ randomDate.setMinutes(Math.floor(Math.random() * 60));
262
+ selectedMessages.push(_objectSpread(_objectSpread({}, message), {}, {
263
+ date: randomDate.toISOString(),
264
+ message_id: "msg_".concat(Date.now(), "_").concat(i),
265
+ user_id: '15',
266
+ was_helpful: Math.random() > 0.3 ? 1 : 0
267
+ }));
268
+ }
269
+
270
+ // Ordenar por fecha
271
+ selectedMessages.sort(function (a, b) {
272
+ return new Date(a.date).getTime() - new Date(b.date).getTime();
273
+ });
274
+ return {
275
+ items: selectedMessages,
276
+ last_evaluated_key: "%7B%22PK%22%3A%20%22staging%23CHATID%23".concat(chatId, "%23PROJECT%23pm_agent%22%2C%20%22SK%22%3A%20").concat(Date.now(), "%7D")
277
+ };
278
+ };
279
+
280
+ // Mock original para compatibilidad
281
+ export var MOCK_CHAT_MESSAGES_RESPONSE = {
282
+ items: [{
283
+ answer: 'El proyecto actualmente tiene un progreso del 75%. Los hitos principales completados incluyen la fase de diseño (100%), desarrollo del backend (90%), y la interfaz de usuario (60%). El sprint actual está enfocado en la implementación de nuevas características y la optimización del rendimiento.',
284
+ date: '2025-05-14T17:52:44.117485',
285
+ message_id: 'msg_20250514_001',
286
+ question: '¿Cuál es el estado actual del proyecto?',
287
+ user_id: '15',
288
+ was_helpful: true,
289
+ project_id: 40532,
290
+ agent_id: '123',
291
+ timestamp: '',
292
+ memory_session_id: ''
293
+ }, {
294
+ answer: 'La rentabilidad proyectada del proyecto es del 28% anual. Los principales indicadores son:\n- ROI esperado: 2.8x\n- Margen de beneficio: 35%\n- Período de recuperación: 18 meses\n\nEstos números están basados en las proyecciones actuales y el análisis de mercado realizado en Q1 2025.',
295
+ date: '2025-05-14T17:52:46.543980',
296
+ message_id: 'msg_20250514_002',
297
+ question: '¿Cuál es la rentabilidad esperada del proyecto?',
298
+ user_id: '15',
299
+ was_helpful: true,
300
+ project_id: 40532,
301
+ agent_id: '123',
302
+ timestamp: '',
303
+ memory_session_id: ''
304
+ }, {
305
+ answer: 'Las próximas tareas prioritarias son:\n1. Finalizar la integración con el sistema de pagos (Fecha límite: 2025-05-20)\n2. Implementar el nuevo módulo de reportes (Fecha límite: 2025-05-25)\n3. Realizar pruebas de carga del sistema (Fecha límite: 2025-05-28)\n4. Preparar la documentación para el lanzamiento (Fecha límite: 2025-06-01)',
306
+ date: '2025-05-14T17:52:48.786884',
307
+ message_id: 'msg_20250514_003',
308
+ question: '¿Cuáles son las próximas tareas pendientes?',
309
+ user_id: '15',
310
+ was_helpful: true,
311
+ project_id: 40532,
312
+ agent_id: '123',
313
+ timestamp: '',
314
+ memory_session_id: ''
315
+ }, {
316
+ answer: 'El equipo actual está compuesto por:\n- 3 desarrolladores backend\n- 2 desarrolladores frontend\n- 1 diseñador UX/UI\n- 1 Project Manager\n- 1 QA Engineer\n\nTodos los miembros están asignados al 100% al proyecto y trabajan en modalidad híbrida.',
317
+ date: '2025-05-14T17:52:50.657815',
318
+ message_id: 'msg_20250514_004',
319
+ question: '¿Cómo está conformado el equipo del proyecto?',
320
+ user_id: '15',
321
+ was_helpful: true,
322
+ project_id: 40531,
323
+ agent_id: '123',
324
+ timestamp: '',
325
+ memory_session_id: ''
326
+ }, {
327
+ answer: 'Los principales riesgos identificados son:\n1. Dependencias de terceros (Probabilidad: Media, Impacto: Alto)\n2. Escalabilidad del sistema (Probabilidad: Baja, Impacto: Alto)\n3. Cumplimiento regulatorio (Probabilidad: Media, Impacto: Medio)\n\nSe están implementando planes de mitigación para cada uno de estos riesgos.',
328
+ date: '2025-05-14T17:52:53.271657',
329
+ message_id: 'msg_20250514_005',
330
+ question: '¿Cuáles son los principales riesgos del proyecto?',
331
+ user_id: '15',
332
+ was_helpful: true,
333
+ project_id: 40532,
334
+ agent_id: '123',
335
+ timestamp: '',
336
+ memory_session_id: ''
337
+ }, {
338
+ answer: 'El presupuesto actual del proyecto es de $450,000. Hasta la fecha, se han gastado $320,000 (71% del presupuesto). Los principales gastos han sido en desarrollo (45%), infraestructura (25%), y recursos humanos (30%). El presupuesto está alineado con las proyecciones iniciales.',
339
+ date: '2025-05-14T17:52:54.872512',
340
+ message_id: 'msg_20250514_006',
341
+ question: '¿Cuál es el estado del presupuesto del proyecto?',
342
+ user_id: '15',
343
+ was_helpful: true,
344
+ project_id: 155671,
345
+ agent_id: '123',
346
+ timestamp: '',
347
+ memory_session_id: ''
348
+ }, {
349
+ answer: 'Las métricas clave (KPIs) del proyecto son:\n- Velocidad del equipo: 45 puntos por sprint\n- Calidad del código: 98% de cobertura de pruebas\n- Satisfacción del cliente: 4.8/5\n- Tiempo de respuesta a incidencias: < 2 horas\n\nTodas las métricas están dentro de los rangos objetivos establecidos.',
350
+ date: '2025-05-14T17:53:11.677306',
351
+ message_id: 'msg_20250514_007',
352
+ question: '¿Cuáles son las métricas actuales del proyecto?',
353
+ user_id: '15',
354
+ was_helpful: true,
355
+ project_id: 40532,
356
+ agent_id: '123',
357
+ timestamp: '',
358
+ memory_session_id: ''
359
+ }, {
360
+ answer: 'El cronograma actual indica que el proyecto está en la Fase 3 de 5. Las fechas clave son:\n- Fase 3 (Actual): 2025-05-01 a 2025-06-15\n- Fase 4: 2025-06-16 a 2025-07-31\n- Fase 5 (Final): 2025-08-01 a 2025-08-31\n\nEl proyecto está avanzando según lo planificado.',
361
+ date: '2025-05-14T17:53:12.618905',
362
+ message_id: 'msg_20250514_008',
363
+ question: '¿Cuál es el cronograma actual del proyecto?',
364
+ user_id: '15',
365
+ was_helpful: true,
366
+ project_id: 40532,
367
+ agent_id: '123',
368
+ timestamp: '',
369
+ memory_session_id: ''
370
+ }, {
371
+ answer: 'Los stakeholders principales son:\n1. Cliente final: Empresa XYZ\n2. Patrocinador: Director de Innovación\n3. Usuarios finales: Equipo de Operaciones\n4. Proveedores: Cloud Services Inc.\n\nSe realizan reuniones semanales con los stakeholders para mantenerlos informados del progreso.',
372
+ date: '2025-05-14T17:53:15.706412',
373
+ message_id: 'msg_20250514_009',
374
+ question: '¿Quiénes son los stakeholders del proyecto?',
375
+ user_id: '15',
376
+ was_helpful: true,
377
+ project_id: 40532,
378
+ agent_id: '123',
379
+ timestamp: '',
380
+ memory_session_id: ''
381
+ }, {
382
+ answer: 'Los entregables pendientes para este trimestre son:\n\n| Título de la Tarea | Estado |\n|--------------------|--------|\n| Propuesta creativa | Nueva |\n| Aplicaciones de marca | Nueva |\n| Brainstorming Conceptos visuales | Nueva |\n| Brainstorming Naming | Nueva |\n| Consolidación de Brief | Nueva |\n| Análisis de la Marca | Nueva |\n| tarea de Prueba | Nueva |\n| Presentación de propuesta (1) | Nueva |\n| Manual de marca | Nueva |\n| Ajustes de Diseño Propuesta 1 | Nueva |\n| tarea al medio | Nueva |\n| La tarea para refrescar | Nueva |\n\nTodos los entregables tienen sus fechas de entrega definidas y están siendo monitoreados activamente.',
383
+ date: '2025-05-14T17:53:16.918493',
384
+ message_id: 'msg_20250514_010',
385
+ question: '¿Cuáles son los entregables pendientes?',
386
+ user_id: '15',
387
+ was_helpful: true,
388
+ project_id: 40532,
389
+ agent_id: '123',
390
+ timestamp: '',
391
+ memory_session_id: ''
392
+ }],
393
+ last_evaluated_key: '%7B%22PK%22%3A%20%22staging%23CHATID%2390491d3c-058a-4149-b87e-f37f00681839%23PROJECT%23pm_agent%22%2C%20%22SK%22%3A%201747245164%7D'
394
+ };
395
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ2NCIsInV1aWR2NCIsIk1PQ0tfVElNRV9TTEVFUF9SRVNQT05TRSIsIk1PQ0tfQ0hBVFNfUkVTUE9OU0UiLCJpdGVtcyIsImNoYXRfaWQiLCJjaGF0X3N0YXR1cyIsImxhc3RfcXVlc3Rpb24iLCJsYXN0X3F1ZXN0aW9uX2RhdGUiLCJtZXNzYWdlX2lkIiwicV9hbnN3ZXJzIiwiZ2VuZXJhbF9yYXRpbmciLCJ1c2VyX2lkIiwiYWdlbnRfaWQiLCJsYXN0X2V2YWx1YXRlZF9rZXkiLCJDSEFUX01FU1NBR0VTX0RBVEFCQVNFIiwicXVlc3Rpb24iLCJhbnN3ZXIiLCJwcm9qZWN0X2lkIiwiZ2VuZXJhdGVNb2NrQ2hhdE1lc3NhZ2VzIiwiY2hhdElkIiwibWVzc2FnZXNGb3JDaGF0IiwibnVtTWVzc2FnZXMiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJzZWxlY3RlZE1lc3NhZ2VzIiwiaSIsInJhbmRvbUluZGV4IiwibGVuZ3RoIiwibWVzc2FnZSIsInJhbmRvbURhdGUiLCJEYXRlIiwic2V0RGF0ZSIsImdldERhdGUiLCJzZXRIb3VycyIsInNldE1pbnV0ZXMiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImRhdGUiLCJ0b0lTT1N0cmluZyIsImNvbmNhdCIsIm5vdyIsIndhc19oZWxwZnVsIiwic29ydCIsImEiLCJiIiwiZ2V0VGltZSIsIk1PQ0tfQ0hBVF9NRVNTQUdFU19SRVNQT05TRSIsInRpbWVzdGFtcCIsIm1lbW9yeV9zZXNzaW9uX2lkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vY2tzL21vY2tDaGF0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2VzUmVzcG9uc2VTY2hlbWEsIENoYXRNZXNzYWdlSXRlbVJlc3BvbnNlIH0gZnJvbSAnLi4vdHlwZXMvQ2hhdCdcblxuZXhwb3J0IGNvbnN0IE1PQ0tfVElNRV9TTEVFUF9SRVNQT05TRSA9IDEwMDAgLy8gbWlsbGlzZWNvbmRzXG5cbmV4cG9ydCBjb25zdCBNT0NLX0NIQVRTX1JFU1BPTlNFID0ge1xuICBpdGVtczogW1xuICAgIHtcbiAgICAgIGNoYXRfaWQ6ICdiZmNhZDUyMC1kYmY3LTRkOTktYmE5Yi0wZWVkOTM0MjQ0NTknLFxuICAgICAgY2hhdF9zdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGFzdF9xdWVzdGlvbjogJ1doYXQgaXMgdGhlIHByb2ZpdGFiaWxpdHkgb2YgdGhpcyBwcm9qZWN0PycsXG4gICAgICBsYXN0X3F1ZXN0aW9uX2RhdGU6ICcyMDI1LTA1LTE0VDE3OjQ4OjA4WicsXG4gICAgICBtZXNzYWdlX2lkOiB1dWlkdjQoKSxcbiAgICAgIHFfYW5zd2VyczogMSxcbiAgICAgIGdlbmVyYWxfcmF0aW5nOiA1LFxuICAgICAgdXNlcl9pZDogJzQ3MTM4JyxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNoYXRfaWQ6ICdlNTcxMWNhMS0wMGY1LTRlMzUtYWZjOC0yMmYxYTIzMGNhMjUnLFxuICAgICAgY2hhdF9zdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGFzdF9xdWVzdGlvbjogJ1doYXQgYXJlIHRoZSB1cGNvbWluZyB0YXNrcyBkdWU/JyxcbiAgICAgIGxhc3RfcXVlc3Rpb25fZGF0ZTogJzIwMjUtMDUtMTRUMTU6MTY6MDZaJyxcbiAgICAgIG1lc3NhZ2VfaWQ6IHV1aWR2NCgpLFxuICAgICAgcV9hbnN3ZXJzOiAxLFxuICAgICAgZ2VuZXJhbF9yYXRpbmc6IDUsXG4gICAgICB1c2VyX2lkOiAnNDcxMzgnLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgIH0sXG4gICAge1xuICAgICAgY2hhdF9pZDogJzQxNWJjMmZmLTYwNjEtNDYxYS1iODY3LTAzOWVlOTA1YzExOCcsXG4gICAgICBjaGF0X3N0YXR1czogJ2FjdGl2ZScsXG4gICAgICBsYXN0X3F1ZXN0aW9uOiAnV2hhdCBpcyB0aGUgcHJvZ3Jlc3Mgb2YgdGhpcyBwcm9qZWN0PycsXG4gICAgICBsYXN0X3F1ZXN0aW9uX2RhdGU6ICcyMDI1LTA1LTE0VDE1OjE2OjAzWicsXG4gICAgICBtZXNzYWdlX2lkOiB1dWlkdjQoKSxcbiAgICAgIHFfYW5zd2VyczogMSxcbiAgICAgIGdlbmVyYWxfcmF0aW5nOiA1LFxuICAgICAgdXNlcl9pZDogJzQ3MTM4JyxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNoYXRfaWQ6ICc5YzQ2OTliMy0wZTdmLTQ1NDAtOWZhZC00Y2ZiN2VmNjI0MmEnLFxuICAgICAgY2hhdF9zdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGFzdF9xdWVzdGlvbjogJ1doYXQgaXMgdGhlIHByb2dyZXNzIG9mIHRoaXMgcHJvamVjdD8nLFxuICAgICAgbGFzdF9xdWVzdGlvbl9kYXRlOiAnMjAyNS0wNS0xNFQxNToxNjowMFonLFxuICAgICAgbWVzc2FnZV9pZDogdXVpZHY0KCksXG4gICAgICBxX2Fuc3dlcnM6IDEsXG4gICAgICBnZW5lcmFsX3JhdGluZzogNSxcbiAgICAgIHVzZXJfaWQ6ICc0NzEzOCcsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBjaGF0X2lkOiAnNTFiNjczOTItNWVhNy00ZjJlLWFjNDQtODNmNGM4MjU3NjdjJyxcbiAgICAgIGNoYXRfc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGxhc3RfcXVlc3Rpb246ICdXaGF0IGlzIHRoZSBwcm9maXRhYmlsaXR5IG9mIHRoaXMgcHJvamVjdD8nLFxuICAgICAgbGFzdF9xdWVzdGlvbl9kYXRlOiAnMjAyNS0wNS0xNFQxNToxNTo1OVonLFxuICAgICAgbWVzc2FnZV9pZDogdXVpZHY0KCksXG4gICAgICBxX2Fuc3dlcnM6IDEsXG4gICAgICBnZW5lcmFsX3JhdGluZzogNSxcbiAgICAgIHVzZXJfaWQ6ICc0NzEzOCcsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBjaGF0X2lkOiAnM2U5YmEyNzYtYzY4OC00NWE4LThmZTEtYzQ5MTYyOWJiYmEzJyxcbiAgICAgIGNoYXRfc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGxhc3RfcXVlc3Rpb246ICdXaGF0IGFyZSB0aGUgdXBjb21pbmcgdGFza3MgZHVlPycsXG4gICAgICBsYXN0X3F1ZXN0aW9uX2RhdGU6ICcyMDI1LTA1LTE0VDE1OjE1OjU1WicsXG4gICAgICBtZXNzYWdlX2lkOiB1dWlkdjQoKSxcbiAgICAgIHFfYW5zd2VyczogMSxcbiAgICAgIGdlbmVyYWxfcmF0aW5nOiA1LFxuICAgICAgdXNlcl9pZDogJzQ3MTM4JyxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNoYXRfaWQ6ICcwNGZmMmY2Mi1iMDdiLTRjM2ItYjIyNC0zOWYyZDUwZTA3MzQnLFxuICAgICAgY2hhdF9zdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGFzdF9xdWVzdGlvbjogJ1doYXQgaXMgdGhlIHByb2dyZXNzIG9mIHRoaXMgcHJvamVjdD8nLFxuICAgICAgbGFzdF9xdWVzdGlvbl9kYXRlOiAnMjAyNS0wNS0xNFQxNToxNTo1M1onLFxuICAgICAgbWVzc2FnZV9pZDogdXVpZHY0KCksXG4gICAgICBxX2Fuc3dlcnM6IDEsXG4gICAgICBnZW5lcmFsX3JhdGluZzogNSxcbiAgICAgIHVzZXJfaWQ6ICc0NzEzOCcsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBjaGF0X2lkOiAnNGIyODY1NjYtOGJmMy00Zjg0LWJkMDQtNmY3OWY1NTc1ZGJmJyxcbiAgICAgIGNoYXRfc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGxhc3RfcXVlc3Rpb246ICdXaGF0IGlzIHRoZSBwcm9maXRhYmlsaXR5IG9mIHRoaXMgcHJvamVjdD8nLFxuICAgICAgbGFzdF9xdWVzdGlvbl9kYXRlOiAnMjAyNS0wNS0xNFQxNToxNTo1MVonLFxuICAgICAgbWVzc2FnZV9pZDogdXVpZHY0KCksXG4gICAgICBxX2Fuc3dlcnM6IDEsXG4gICAgICBnZW5lcmFsX3JhdGluZzogNSxcbiAgICAgIHVzZXJfaWQ6ICc0NzEzOCcsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBjaGF0X2lkOiAnY2M2YjkxZWEtZjhlZC00ODYyLWFjZjMtZTRlY2I0NTRmNTQ3JyxcbiAgICAgIGNoYXRfc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGxhc3RfcXVlc3Rpb246ICdXaGF0IGFyZSB0aGUgdXBjb21pbmcgdGFza3MgZHVlPycsXG4gICAgICBsYXN0X3F1ZXN0aW9uX2RhdGU6ICcyMDI1LTA1LTE0VDE1OjE1OjM1WicsXG4gICAgICBtZXNzYWdlX2lkOiB1dWlkdjQoKSxcbiAgICAgIHFfYW5zd2VyczogMSxcbiAgICAgIGdlbmVyYWxfcmF0aW5nOiA1LFxuICAgICAgdXNlcl9pZDogJzQ3MTM4JyxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNoYXRfaWQ6ICc1ZDllYjVmYS03MzNkLTRlN2MtYWVhOC0wZDU5OWE4YjAxYWYnLFxuICAgICAgY2hhdF9zdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGFzdF9xdWVzdGlvbjogJ1doYXQgaXMgdGhlIHByb2ZpdGFiaWxpdHkgb2YgdGhpcyBwcm9qZWN0PycsXG4gICAgICBsYXN0X3F1ZXN0aW9uX2RhdGU6ICcyMDI1LTA1LTE0VDE1OjE1OjMwWicsXG4gICAgICBtZXNzYWdlX2lkOiB1dWlkdjQoKSxcbiAgICAgIHFfYW5zd2VyczogMSxcbiAgICAgIGdlbmVyYWxfcmF0aW5nOiA1LFxuICAgICAgdXNlcl9pZDogJzQ3MTM4JyxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICB9LFxuICBdLFxuICBsYXN0X2V2YWx1YXRlZF9rZXk6ICclN0IlMjJpbmRleCUyMiUzQSUyMDEwJTdEJyxcbn1cblxuLy8gQmFzZSBkZSBkYXRvcyBkZSBwcmVndW50YXMgeSByZXNwdWVzdGFzIHBvciB0aXBvIGRlIGNoYXRcbmNvbnN0IENIQVRfTUVTU0FHRVNfREFUQUJBU0UgPSB7XG4gICdiZmNhZDUyMC1kYmY3LTRkOTktYmE5Yi0wZWVkOTM0MjQ0NTknOiBbXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsIGVzIGxhIHJlbnRhYmlsaWRhZCBlc3BlcmFkYSBkZWwgcHJveWVjdG8/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhIHJlbnRhYmlsaWRhZCBwcm95ZWN0YWRhIGRlbCBwcm95ZWN0byBlcyBkZWwgMjglIGFudWFsLiBMb3MgcHJpbmNpcGFsZXMgaW5kaWNhZG9yZXMgc29uOlxcbi0gUk9JIGVzcGVyYWRvOiAyLjh4XFxuLSBNYXJnZW4gZGUgYmVuZWZpY2lvOiAzNSVcXG4tIFBlcsOtb2RvIGRlIHJlY3VwZXJhY2nDs246IDE4IG1lc2VzXFxuXFxuRXN0b3MgbsO6bWVyb3MgZXN0w6FuIGJhc2Fkb3MgZW4gbGFzIHByb3llY2Npb25lcyBhY3R1YWxlcyB5IGVsIGFuw6FsaXNpcyBkZSBtZXJjYWRvIHJlYWxpemFkbyBlbiBRMSAyMDI1LicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsb3MgY29zdG9zIG9wZXJhdGl2b3MgbWVuc3VhbGVzPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMb3MgY29zdG9zIG9wZXJhdGl2b3MgbWVuc3VhbGVzIGFzY2llbmRlbiBhICQ0NSwwMDAgZGlzdHJpYnVpZG9zIGRlIGxhIHNpZ3VpZW50ZSBtYW5lcmE6XFxuLSBJbmZyYWVzdHJ1Y3R1cmEgeSBob3N0aW5nOiAkMTIsMDAwXFxuLSBMaWNlbmNpYXMgZGUgc29mdHdhcmU6ICQ4LDAwMFxcbi0gUmVjdXJzb3MgaHVtYW5vczogJDIwLDAwMFxcbi0gTWFya2V0aW5nIHkgcHVibGljaWRhZDogJDUsMDAwXFxuXFxuRXN0b3MgY29zdG9zIGVzdMOhbiBkZW50cm8gZGVsIHByZXN1cHVlc3RvIHByb3llY3RhZG8uJyxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsIGVzIGVsIG1hcmdlbiBkZSBjb250cmlidWNpw7NuIGFjdHVhbD8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRWwgbWFyZ2VuIGRlIGNvbnRyaWJ1Y2nDs24gYWN0dWFsIGVzIGRlbCA2NSUuIEVzdG8gc2lnbmlmaWNhIHF1ZSBwb3IgY2FkYSAkMTAwIGRlIGluZ3Jlc29zLCAkNjUgY29udHJpYnV5ZW4gZGlyZWN0YW1lbnRlIGEgY3VicmlyIGxvcyBjb3N0b3MgZmlqb3MgeSBnZW5lcmFyIHV0aWxpZGFkZXMuIEVzdGUgbWFyZ2VuIGVzdMOhIHBvciBlbmNpbWEgZGVsIG9iamV0aXZvIGRlbCA2MCUuJyxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgIH0sXG4gIF0sXG4gICdlNTcxMWNhMS0wMGY1LTRlMzUtYWZjOC0yMmYxYTIzMGNhMjUnOiBbXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsZXMgc29uIGxhcyBwcsOzeGltYXMgdGFyZWFzIHBlbmRpZW50ZXM/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhcyBwcsOzeGltYXMgdGFyZWFzIHByaW9yaXRhcmlhcyBzb246XFxuMS4gRmluYWxpemFyIGxhIGludGVncmFjacOzbiBjb24gZWwgc2lzdGVtYSBkZSBwYWdvcyAoRmVjaGEgbMOtbWl0ZTogMjAyNS0wNS0yMClcXG4yLiBJbXBsZW1lbnRhciBlbCBudWV2byBtw7NkdWxvIGRlIHJlcG9ydGVzIChGZWNoYSBsw61taXRlOiAyMDI1LTA1LTI1KVxcbjMuIFJlYWxpemFyIHBydWViYXMgZGUgY2FyZ2EgZGVsIHNpc3RlbWEgKEZlY2hhIGzDrW1pdGU6IDIwMjUtMDUtMjgpXFxuNC4gUHJlcGFyYXIgbGEgZG9jdW1lbnRhY2nDs24gcGFyYSBlbCBsYW56YW1pZW50byAoRmVjaGEgbMOtbWl0ZTogMjAyNS0wNi0wMSknLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/UXVpw6luIGVzdMOhIGFzaWduYWRvIGEgbGEgdGFyZWEgZGUgaW50ZWdyYWNpw7NuPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMYSB0YXJlYSBkZSBpbnRlZ3JhY2nDs24gZXN0w6EgYXNpZ25hZGEgYWwgZXF1aXBvIGRlIGRlc2Fycm9sbG8gYmFja2VuZDpcXG4tIEzDrWRlciB0w6ljbmljbzogTWFyw61hIEdvbnrDoWxlelxcbi0gRGVzYXJyb2xsYWRvcmVzOiBDYXJsb3MgUnVpeiwgQW5hIEzDs3Blelxcbi0gUUE6IFBlZHJvIE1hcnTDrW5lelxcblxcbkVsIGVxdWlwbyBlc3TDoSB0cmFiYWphbmRvIGVuIG1vZGFsaWRhZCBow61icmlkYSBjb24gcmV1bmlvbmVzIGRpYXJpYXMgZGUgc2VndWltaWVudG8uJyxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsIGVzIGVsIGVzdGFkbyBkZSBsYXMgdGFyZWFzIGNyw610aWNhcz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRXN0YWRvIGRlIGxhcyB0YXJlYXMgY3LDrXRpY2FzOlxcbi0g4pyFIEludGVncmFjacOzbiBBUEk6IDg1JSBjb21wbGV0YWRvXFxuLSDwn5SEIE3Ds2R1bG8gZGUgcmVwb3J0ZXM6IDYwJSBjb21wbGV0YWRvXFxuLSDij7MgUHJ1ZWJhcyBkZSBjYXJnYTogMzAlIGNvbXBsZXRhZG9cXG4tIPCfk4sgRG9jdW1lbnRhY2nDs246IDIwJSBjb21wbGV0YWRvXFxuXFxuVG9kYXMgbGFzIHRhcmVhcyBlc3TDoW4gZW4gY2FtaW5vIGRlIGN1bXBsaXIgc3VzIGZlY2hhcyBsw61taXRlLicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICBdLFxuICAnNDE1YmMyZmYtNjA2MS00NjFhLWI4NjctMDM5ZWU5MDVjMTE4JzogW1xuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbCBlcyBlbCBlc3RhZG8gYWN0dWFsIGRlbCBwcm95ZWN0bz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRWwgcHJveWVjdG8gYWN0dWFsbWVudGUgdGllbmUgdW4gcHJvZ3Jlc28gZGVsIDc1JS4gTG9zIGhpdG9zIHByaW5jaXBhbGVzIGNvbXBsZXRhZG9zIGluY2x1eWVuIGxhIGZhc2UgZGUgZGlzZcOxbyAoMTAwJSksIGRlc2Fycm9sbG8gZGVsIGJhY2tlbmQgKDkwJSksIHkgbGEgaW50ZXJmYXogZGUgdXN1YXJpbyAoNjAlKS4gRWwgc3ByaW50IGFjdHVhbCBlc3TDoSBlbmZvY2FkbyBlbiBsYSBpbXBsZW1lbnRhY2nDs24gZGUgbnVldmFzIGNhcmFjdGVyw61zdGljYXMgeSBsYSBvcHRpbWl6YWNpw7NuIGRlbCByZW5kaW1pZW50by4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWxlcyBzb24gbG9zIGhpdG9zIGFsY2FuemFkb3MgZXN0ZSBtZXM/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0hpdG9zIGFsY2FuemFkb3MgZW4gbWF5byAyMDI1Olxcbi0g4pyFIExhbnphbWllbnRvIGRlIGxhIHZlcnNpw7NuIGJldGFcXG4tIOKchSBJbnRlZ3JhY2nDs24gY29tcGxldGEgY29uIHNpc3RlbWFzIGV4dGVybm9zXFxuLSDinIUgSW1wbGVtZW50YWNpw7NuIGRlbCBzaXN0ZW1hIGRlIGF1dGVudGljYWNpw7NuXFxuLSDinIUgT3B0aW1pemFjacOzbiBkZWwgcmVuZGltaWVudG8gZW4gdW4gNDAlXFxuLSDwn5SEIE1pZ3JhY2nDs24gYSBsYSBudWV2YSBpbmZyYWVzdHJ1Y3R1cmEgKDgwJSBjb21wbGV0YWRvKScsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9Dw7NtbyBzZSBjb21wYXJhIGVsIHByb2dyZXNvIGNvbiBlbCBwbGFuIG9yaWdpbmFsPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdFbCBwcm9ncmVzbyBhY3R1YWwgZXN0w6EgNSUgYWRlbGFudGFkbyByZXNwZWN0byBhbCBwbGFuIG9yaWdpbmFsOlxcbi0gUGxhbiBvcmlnaW5hbDogNzAlIGNvbXBsZXRhZG9cXG4tIFByb2dyZXNvIGFjdHVhbDogNzUlIGNvbXBsZXRhZG9cXG4tIEFkZWxhbnRvOiArNSVcXG5cXG5Fc3RlIGFkZWxhbnRvIHNlIGRlYmUgcHJpbmNpcGFsbWVudGUgYSBsYSBlZmljaWVuY2lhIGRlbCBlcXVpcG8geSBsYSBvcHRpbWl6YWNpw7NuIGRlIHByb2Nlc29zLicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICBdLFxuICAnOWM0Njk5YjMtMGU3Zi00NTQwLTlmYWQtNGNmYjdlZjYyNDJhJzogW1xuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbCBlcyBlbCBwcm9ncmVzbyBkZWwgZGVzYXJyb2xsbyBmcm9udGVuZD8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRWwgZGVzYXJyb2xsbyBmcm9udGVuZCBlc3TDoSBhbCA2MCUgY29tcGxldGFkbzpcXG4tIENvbXBvbmVudGVzIHByaW5jaXBhbGVzOiA5MCVcXG4tIEludGVncmFjacOzbiBjb24gQVBJczogNzUlXFxuLSBSZXNwb25zaXZlIGRlc2lnbjogODUlXFxuLSBUZXN0aW5nOiA0MCVcXG4tIE9wdGltaXphY2nDs246IDMwJVxcblxcbkVsIGVxdWlwbyBmcm9udGVuZCBlc3TDoSB0cmFiYWphbmRvIGVuIHBhcmFsZWxvIGNvbiBlbCBiYWNrZW5kLicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbmRvIGVzdGFyw6EgbGlzdGEgbGEgdmVyc2nDs24gYmV0YT8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnTGEgdmVyc2nDs24gYmV0YSBlc3RhcsOhIGxpc3RhIHBhcmEgZWwgMjUgZGUgbWF5byBkZSAyMDI1LiBFbCBjcm9ub2dyYW1hIGRldGFsbGFkbyBlczpcXG4tIFNlbWFuYSAxOiBGaW5hbGl6YWNpw7NuIGRlIGZ1bmNpb25hbGlkYWRlcyBjb3JlXFxuLSBTZW1hbmEgMjogVGVzdGluZyB5IGNvcnJlY2Npw7NuIGRlIGJ1Z3NcXG4tIFNlbWFuYSAzOiBQcmVwYXJhY2nDs24gZGUgZG9jdW1lbnRhY2nDs25cXG4tIFNlbWFuYSA0OiBMYW56YW1pZW50byBiZXRhIGNvbiB1c3VhcmlvcyBzZWxlY3RvcycsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsb3MgcHJpbmNpcGFsZXMgZGVzYWbDrW9zIHTDqWNuaWNvcz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnTG9zIHByaW5jaXBhbGVzIGRlc2Fmw61vcyB0w6ljbmljb3MgaWRlbnRpZmljYWRvcyBzb246XFxuMS4gT3B0aW1pemFjacOzbiBkZSBjb25zdWx0YXMgZGUgYmFzZSBkZSBkYXRvc1xcbjIuIEltcGxlbWVudGFjacOzbiBkZSBjYWNoZSBkaXN0cmlidWlkb1xcbjMuIE1hbmVqbyBkZSBjb25jdXJyZW5jaWEgZW4gdGllbXBvIHJlYWxcXG40LiBJbnRlZ3JhY2nDs24gY29uIHNpc3RlbWFzIGxlZ2FjeVxcblxcblNlIGVzdMOhbiBhcGxpY2FuZG8gc29sdWNpb25lcyBlc2NhbGFibGVzIHBhcmEgY2FkYSBkZXNhZsOtby4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzEsXG4gICAgfSxcbiAgXSxcbiAgJzUxYjY3MzkyLTVlYTctNGYyZS1hYzQ0LTgzZjRjODI1NzY3Yyc6IFtcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgZWwgUk9JIGVzcGVyYWRvIGRlbCBwcm95ZWN0bz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRWwgUk9JIGVzcGVyYWRvIGRlbCBwcm95ZWN0byBlcyBkZSAyLjh4IGVuIHVuIHBlcsOtb2RvIGRlIDE4IG1lc2VzLiBEZXNnbG9zZTpcXG4tIEludmVyc2nDs24gaW5pY2lhbDogJDUwMCwwMDBcXG4tIEluZ3Jlc29zIHByb3llY3RhZG9zOiAkMSw0MDAsMDAwXFxuLSBST0k6IDE4MCVcXG4tIFBlcsOtb2RvIGRlIHJlY3VwZXJhY2nDs246IDE4IG1lc2VzXFxuXFxuRXN0YXMgcHJveWVjY2lvbmVzIGVzdMOhbiBiYXNhZGFzIGVuIGFuw6FsaXNpcyBkZSBtZXJjYWRvIHkgdGVuZGVuY2lhcyBhY3R1YWxlcy4nLFxuICAgICAgcHJvamVjdF9pZDogMTU1NjcxLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsZXMgc29uIGxhcyBmdWVudGVzIGRlIGluZ3Jlc29zIHByaW5jaXBhbGVzPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMYXMgZnVlbnRlcyBkZSBpbmdyZXNvcyBwcmluY2lwYWxlcyBzb246XFxuMS4gU3VzY3JpcGNpb25lcyBwcmVtaXVtOiA0NSUgKCQ2MzAsMDAwKVxcbjIuIExpY2VuY2lhcyBlbXByZXNhcmlhbGVzOiAzNSUgKCQ0OTAsMDAwKVxcbjMuIFNlcnZpY2lvcyBkZSBjb25zdWx0b3LDrWE6IDE1JSAoJDIxMCwwMDApXFxuNC4gSW50ZWdyYWNpb25lcyBwZXJzb25hbGl6YWRhczogNSUgKCQ3MCwwMDApXFxuXFxuTGEgZXN0cmF0ZWdpYSBzZSBlbmZvY2EgZW4gZGl2ZXJzaWZpY2FyIGxhcyBmdWVudGVzIGRlIGluZ3Jlc29zLicsXG4gICAgICBwcm9qZWN0X2lkOiAxNTU2NzEsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q8OzbW8gc2UgY29tcGFyYSBjb24gbGEgY29tcGV0ZW5jaWE/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0NvbXBhcmFjacOzbiBjb24gbGEgY29tcGV0ZW5jaWE6XFxuLSBOdWVzdHJvIG1hcmdlbjogMzUlXFxuLSBDb21wZXRlbmNpYSBwcm9tZWRpbzogMjUlXFxuLSBWZW50YWphIGNvbXBldGl0aXZhOiArMTAlXFxuXFxuRXN0YSB2ZW50YWphIHNlIGRlYmUgYSBudWVzdHJhIHRlY25vbG9nw61hIHByb3BpZXRhcmlhIHkgZWZpY2llbmNpYSBvcGVyYXRpdmEuJyxcbiAgICAgIHByb2plY3RfaWQ6IDE1NTY3MSxcbiAgICB9LFxuICBdLFxuICAnM2U5YmEyNzYtYzY4OC00NWE4LThmZTEtYzQ5MTYyOWJiYmEzJzogW1xuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsYXMgdGFyZWFzIGRlbCBzcHJpbnQgYWN0dWFsPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdUYXJlYXMgZGVsIHNwcmludCBhY3R1YWwgKFNwcmludCAxMik6XFxuMS4gSW1wbGVtZW50YXIgZmlsdHJvcyBhdmFuemFkb3MgKDggcHVudG9zKVxcbjIuIE9wdGltaXphciBjb25zdWx0YXMgZGUgYmFzZSBkZSBkYXRvcyAoNSBwdW50b3MpXFxuMy4gQWdyZWdhciBleHBvcnRhY2nDs24gYSBQREYgKDMgcHVudG9zKVxcbjQuIENvcnJlZ2lyIGJ1Z3MgZGUgVUkgKDIgcHVudG9zKVxcbjUuIEFjdHVhbGl6YXIgZG9jdW1lbnRhY2nDs24gKDEgcHVudG8pXFxuXFxuVG90YWw6IDE5IHB1bnRvcyAtIDg1JSBjb21wbGV0YWRvJyxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv1F1acOpbiBlc3TDoSBkaXNwb25pYmxlIHBhcmEgbnVldmFzIHRhcmVhcz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRGlzcG9uaWJpbGlkYWQgZGVsIGVxdWlwbzpcXG4tIE1hcsOtYSAoRnJvbnRlbmQpOiBEaXNwb25pYmxlIGRlc2RlIDIwMjUtMDUtMjBcXG4tIENhcmxvcyAoQmFja2VuZCk6IE9jdXBhZG8gaGFzdGEgMjAyNS0wNS0yNVxcbi0gQW5hIChRQSk6IERpc3BvbmlibGUgZGVzZGUgMjAyNS0wNS0xOFxcbi0gUGVkcm8gKERldk9wcyk6IE9jdXBhZG8gaGFzdGEgMjAyNS0wNS0zMFxcblxcblJlY29tZW5kYWNpw7NuOiBBc2lnbmFyIHRhcmVhcyBmcm9udGVuZCBhIE1hcsOtYSB5IEFuYS4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgbGEgdmVsb2NpZGFkIGRlbCBlcXVpcG8/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhIHZlbG9jaWRhZCBwcm9tZWRpbyBkZWwgZXF1aXBvIGVzIGRlIDQ1IHB1bnRvcyBwb3Igc3ByaW50Olxcbi0gU3ByaW50IDEwOiA0MiBwdW50b3NcXG4tIFNwcmludCAxMTogNDggcHVudG9zXFxuLSBTcHJpbnQgMTIgKGFjdHVhbCk6IDM4IHB1bnRvcyAocHJveWVjdGFkbylcXG4tIFByb21lZGlvOiA0NSBwdW50b3NcXG5cXG5FbCBlcXVpcG8gZXN0w6EgZXN0YWJsZSB5IGNvbnNpc3RlbnRlIGVuIHN1IHJlbmRpbWllbnRvLicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICBdLFxuICAnMDRmZjJmNjItYjA3Yi00YzNiLWIyMjQtMzlmMmQ1MGUwNzM0JzogW1xuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbCBlcyBlbCBwcm9ncmVzbyBkZSBsYSBmYXNlIGRlIHRlc3Rpbmc/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ1Byb2dyZXNvIGRlIGxhIGZhc2UgZGUgdGVzdGluZzpcXG4tIFRlc3RzIHVuaXRhcmlvczogOTUlIGNvbXBsZXRhZG9cXG4tIFRlc3RzIGRlIGludGVncmFjacOzbjogODAlIGNvbXBsZXRhZG9cXG4tIFRlc3RzIGRlIGFjZXB0YWNpw7NuOiA3MCUgY29tcGxldGFkb1xcbi0gVGVzdHMgZGUgcmVuZGltaWVudG86IDYwJSBjb21wbGV0YWRvXFxuLSBUZXN0cyBkZSBzZWd1cmlkYWQ6IDg1JSBjb21wbGV0YWRvXFxuXFxuQ29iZXJ0dXJhIHRvdGFsOiA3OCUgLSBPYmpldGl2bzogODUlJyxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FudG9zIGJ1Z3MgY3LDrXRpY29zIHF1ZWRhbiBwb3IgcmVzb2x2ZXI/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0VzdGFkbyBkZSBidWdzIHBvciBwcmlvcmlkYWQ6XFxuLSBDcsOtdGljb3M6IDIgYnVncyAoYW1ib3MgZW4gcHJvY2VzbylcXG4tIEFsdG9zOiA4IGJ1Z3MgKDUgcmVzdWVsdG9zKVxcbi0gTWVkaW9zOiAxNSBidWdzICgxMiByZXN1ZWx0b3MpXFxuLSBCYWpvczogMjUgYnVncyAoMjAgcmVzdWVsdG9zKVxcblxcbkxvcyBidWdzIGNyw610aWNvcyBlc3TDoW4gcHJvZ3JhbWFkb3MgcGFyYSByZXNvbHVjacOzbiBhbnRlcyBkZWwgMjAyNS0wNS0yMC4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoW5kbyBlc3RhcsOhIGxpc3RhIGxhIHZlcnNpw7NuIGRlIHByb2R1Y2Npw7NuPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMYSB2ZXJzacOzbiBkZSBwcm9kdWNjacOzbiBlc3RhcsOhIGxpc3RhIGVsIDE1IGRlIGp1bmlvIGRlIDIwMjU6XFxuLSBTZW1hbmEgMTogRmluYWxpemFjacOzbiBkZSB0ZXN0aW5nXFxuLSBTZW1hbmEgMjogQ29ycmVjY2nDs24gZGUgYnVncyBjcsOtdGljb3NcXG4tIFNlbWFuYSAzOiBQcmVwYXJhY2nDs24gZGUgZGVzcGxpZWd1ZVxcbi0gU2VtYW5hIDQ6IExhbnphbWllbnRvIGdyYWR1YWxcXG5cXG5FbCBjcm9ub2dyYW1hIGVzdMOhIGFsaW5lYWRvIGNvbiBsb3Mgb2JqZXRpdm9zIGRlbCBwcm95ZWN0by4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgXSxcbiAgJzRiMjg2NTY2LThiZjMtNGY4NC1iZDA0LTZmNzlmNTU3NWRiZic6IFtcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgZWwgYW7DoWxpc2lzIGRlIHJlbnRhYmlsaWRhZCBwb3Igc2VnbWVudG8/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0Fuw6FsaXNpcyBkZSByZW50YWJpbGlkYWQgcG9yIHNlZ21lbnRvOlxcbi0gU2VnbWVudG8gU01COiAyNSUgbWFyZ2VuLCAkMjAwSyBpbmdyZXNvc1xcbi0gU2VnbWVudG8gRW50ZXJwcmlzZTogNDAlIG1hcmdlbiwgJDgwMEsgaW5ncmVzb3NcXG4tIFNlZ21lbnRvIEdvYmllcm5vOiAzMCUgbWFyZ2VuLCAkNDAwSyBpbmdyZXNvc1xcblxcbkVsIHNlZ21lbnRvIEVudGVycHJpc2UgZXMgZWwgbcOhcyByZW50YWJsZSB5IHJlcHJlc2VudGEgZWwgNTclIGRlIGxvcyBpbmdyZXNvcy4nLFxuICAgICAgcHJvamVjdF9pZDogMTU1NjcxLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsZXMgc29uIGxhcyBwcm95ZWNjaW9uZXMgcGFyYSBlbCBwcsOzeGltbyB0cmltZXN0cmU/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ1Byb3llY2Npb25lcyBRMiAyMDI1Olxcbi0gSW5ncmVzb3MgdG90YWxlczogJDQ1MCwwMDAgKCsxNSUgdnMgUTEpXFxuLSBOdWV2b3MgY2xpZW50ZXM6IDI1ICgrMjAlIHZzIFExKVxcbi0gQ2h1cm4gcmF0ZTogNSUgKG9iamV0aXZvOiA8OCUpXFxuLSBMVFYgcHJvbWVkaW86ICQxOCwwMDAgKCsxMCUgdnMgUTEpXFxuXFxuTGFzIHByb3llY2Npb25lcyBlc3TDoW4gYmFzYWRhcyBlbiBlbCBwaXBlbGluZSBhY3R1YWwgeSB0ZW5kZW5jaWFzIGRlIG1lcmNhZG8uJyxcbiAgICAgIHByb2plY3RfaWQ6IDE1NTY3MSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9Dw7NtbyBhZmVjdGEgbGEgaW5mbGFjacOzbiBhIGxhIHJlbnRhYmlsaWRhZD8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnSW1wYWN0byBkZSBsYSBpbmZsYWNpw7NuIGVuIGxhIHJlbnRhYmlsaWRhZDpcXG4tIENvc3RvcyBvcGVyYXRpdm9zOiArOCUgKHZzIDUlIHByb3llY3RhZG8pXFxuLSBQcmVjaW9zOiArMTIlIChhanVzdGUgaW1wbGVtZW50YWRvKVxcbi0gTWFyZ2VuIG5ldG86ICsyJSAoYmVuZWZpY2lvIGRlbCBhanVzdGUgZGUgcHJlY2lvcylcXG5cXG5MYSBlc3RyYXRlZ2lhIGRlIHByZWNpb3MgaGEgY29tcGVuc2FkbyBlbCBhdW1lbnRvIGRlIGNvc3Rvcy4nLFxuICAgICAgcHJvamVjdF9pZDogMTU1NjcxLFxuICAgIH0sXG4gIF0sXG4gICdjYzZiOTFlYS1mOGVkLTQ4NjItYWNmMy1lNGVjYjQ1NGY1NDcnOiBbXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsZXMgc29uIGxhcyB0YXJlYXMgYmxvcXVlYWRhcyBhY3R1YWxtZW50ZT8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnVGFyZWFzIGJsb3F1ZWFkYXM6XFxuMS4gSW50ZWdyYWNpw7NuIGNvbiBzaXN0ZW1hIGRlIHBhZ29zIChibG9xdWVhZGEgcG9yIGRlcGVuZGVuY2lhIGV4dGVybmEpXFxuMi4gSW1wbGVtZW50YWNpw7NuIGRlIG5vdGlmaWNhY2lvbmVzIHB1c2ggKGJsb3F1ZWFkYSBwb3IgYXByb2JhY2nDs24gZGUgc2VndXJpZGFkKVxcbjMuIE1pZ3JhY2nDs24gZGUgZGF0b3MgKGJsb3F1ZWFkYSBwb3IgbWFudGVuaW1pZW50byBkZSBCRClcXG5cXG5TZSBlc3TDoW4gY29vcmRpbmFuZG8gY29uIGxvcyBlcXVpcG9zIGV4dGVybm9zIHBhcmEgcmVzb2x2ZXIgbG9zIGJsb3F1ZW9zLicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9RdWnDqW4gcHVlZGUgYXl1ZGFyIGNvbiBsYXMgdGFyZWFzIGJsb3F1ZWFkYXM/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ1JlY3Vyc29zIGRpc3BvbmlibGVzIHBhcmEgZGVzYmxvcXVlYXIgdGFyZWFzOlxcbi0gSnVhbiAoQXJxdWl0ZWN0byk6IFB1ZWRlIGF5dWRhciBjb24gZGVwZW5kZW5jaWFzIHTDqWNuaWNhc1xcbi0gTGF1cmEgKFByb2R1Y3QgTWFuYWdlcik6IFB1ZWRlIGNvb3JkaW5hciBjb24gc3Rha2Vob2xkZXJzIGV4dGVybm9zXFxuLSBSb2JlcnRvIChEZXZPcHMpOiBQdWVkZSByZXNvbHZlciBwcm9ibGVtYXMgZGUgaW5mcmFlc3RydWN0dXJhXFxuXFxuU2UgaGEgYXNpZ25hZG8gdW4gY29vcmRpbmFkb3IgcGFyYSBjYWRhIHRhcmVhIGJsb3F1ZWFkYS4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgZWwgcGxhbiBkZSBjb250aW5nZW5jaWE/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ1BsYW4gZGUgY29udGluZ2VuY2lhIHBhcmEgdGFyZWFzIGJsb3F1ZWFkYXM6XFxuLSBBbHRlcm5hdGl2YSAxOiBVc2FyIHNpc3RlbWEgZGUgcGFnb3MgYWx0ZXJuYXRpdm8gKGltcGxlbWVudGFjacOzbjogMyBkw61hcylcXG4tIEFsdGVybmF0aXZhIDI6IEltcGxlbWVudGFyIG5vdGlmaWNhY2lvbmVzIHBvciBlbWFpbCAoaW1wbGVtZW50YWNpw7NuOiAxIGTDrWEpXFxuLSBBbHRlcm5hdGl2YSAzOiBNaWdyYWNpw7NuIGluY3JlbWVudGFsIGRlIGRhdG9zIChpbXBsZW1lbnRhY2nDs246IDUgZMOtYXMpXFxuXFxuU2UgYWN0aXZhcsOhIGVsIHBsYW4gZGUgY29udGluZ2VuY2lhIHNpIGxvcyBibG9xdWVvcyBwZXJzaXN0ZW4gbcOhcyBkZSA0OCBob3Jhcy4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgXSxcbiAgJzVkOWViNWZhLTczM2QtNGU3Yy1hZWE4LTBkNTk5YThiMDFhZic6IFtcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgZWwgYW7DoWxpc2lzIGRlIGNvc3RvcyB2cyBiZW5lZmljaW9zPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdBbsOhbGlzaXMgY29zdG8tYmVuZWZpY2lvOlxcbi0gQ29zdG9zIHRvdGFsZXM6ICQzNTAsMDAwXFxuLSBCZW5lZmljaW9zIHByb3llY3RhZG9zOiAkMSwyMDAsMDAwXFxuLSBSYXRpbyBiZW5lZmljaW8vY29zdG86IDMuNDoxXFxuLSBWYWxvciBwcmVzZW50ZSBuZXRvOiAkNzUwLDAwMFxcbi0gVGFzYSBpbnRlcm5hIGRlIHJldG9ybm86IDQ1JVxcblxcbkVsIHByb3llY3RvIGVzIGFsdGFtZW50ZSByZW50YWJsZSB5IHN1cGVyYSB0b2RvcyBsb3MgY3JpdGVyaW9zIGRlIGludmVyc2nDs24uJyxcbiAgICAgIHByb2plY3RfaWQ6IDE1NTY3MSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsb3Mgcmllc2dvcyBmaW5hbmNpZXJvcz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnUmllc2dvcyBmaW5hbmNpZXJvcyBpZGVudGlmaWNhZG9zOlxcbjEuIEZsdWN0dWFjacOzbiBkZSBkaXZpc2FzIChQcm9iYWJpbGlkYWQ6IE1lZGlhLCBJbXBhY3RvOiBBbHRvKVxcbjIuIENhbWJpb3MgcmVndWxhdG9yaW9zIChQcm9iYWJpbGlkYWQ6IEJhamEsIEltcGFjdG86IEFsdG8pXFxuMy4gQ29tcGV0ZW5jaWEgYWdyZXNpdmEgKFByb2JhYmlsaWRhZDogQWx0YSwgSW1wYWN0bzogTWVkaW8pXFxuNC4gUmVjZXNpw7NuIGVjb27Ds21pY2EgKFByb2JhYmlsaWRhZDogQmFqYSwgSW1wYWN0bzogQWx0bylcXG5cXG5TZSBoYW4gaW1wbGVtZW50YWRvIGVzdHJhdGVnaWFzIGRlIG1pdGlnYWNpw7NuIHBhcmEgY2FkYSByaWVzZ28uJyxcbiAgICAgIHByb2plY3RfaWQ6IDE1NTY3MSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9Dw7NtbyBzZSBkaXN0cmlidXllIGVsIHByZXN1cHVlc3RvPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdEaXN0cmlidWNpw7NuIGRlbCBwcmVzdXB1ZXN0bzpcXG4tIERlc2Fycm9sbG86IDQwJSAoJDE0MCwwMDApXFxuLSBJbmZyYWVzdHJ1Y3R1cmE6IDI1JSAoJDg3LDUwMClcXG4tIE1hcmtldGluZzogMjAlICgkNzAsMDAwKVxcbi0gT3BlcmFjaW9uZXM6IDEwJSAoJDM1LDAwMClcXG4tIENvbnRpbmdlbmNpYTogNSUgKCQxNyw1MDApXFxuXFxuRWwgcHJlc3VwdWVzdG8gZXN0w6EgYWxpbmVhZG8gY29uIGxhcyBtZWpvcmVzIHByw6FjdGljYXMgZGVsIHNlY3Rvci4nLFxuICAgICAgcHJvamVjdF9pZDogMTU1NjcxLFxuICAgIH0sXG4gIF0sXG59XG5cbi8vIEZ1bmNpw7NuIHBhcmEgZ2VuZXJhciBtZW5zYWplcyBhbGVhdG9yaW9zIGJhc2Fkb3MgZW4gZWwgY2hhdElkXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVNb2NrQ2hhdE1lc3NhZ2VzID0gKGNoYXRJZDogc3RyaW5nKTogQ2hhdE1lc3NhZ2VzUmVzcG9uc2VTY2hlbWEgPT4ge1xuICBjb25zdCBtZXNzYWdlc0ZvckNoYXQgPVxuICAgIENIQVRfTUVTU0FHRVNfREFUQUJBU0VbY2hhdElkXSB8fCBDSEFUX01FU1NBR0VTX0RBVEFCQVNFWydiZmNhZDUyMC1kYmY3LTRkOTktYmE5Yi0wZWVkOTM0MjQ0NTknXVxuXG4gIC8vIEdlbmVyYXIgZW50cmUgMyB5IDYgbWVuc2FqZXMgYWxlYXRvcmlvc1xuICBjb25zdCBudW1NZXNzYWdlcyA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDQpICsgM1xuICBjb25zdCBzZWxlY3RlZE1lc3NhZ2VzOiBDaGF0TWVzc2FnZUl0ZW1SZXNwb25zZVtdID0gW11cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bU1lc3NhZ2VzOyBpICs9IDEpIHtcbiAgICBjb25zdCByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG1lc3NhZ2VzRm9yQ2hhdC5sZW5ndGgpXG4gICAgY29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VzRm9yQ2hhdFtyYW5kb21JbmRleF1cblxuICAgIC8vIEdlbmVyYXIgZmVjaGEgYWxlYXRvcmlhIGVuIGxvcyDDumx0aW1vcyA3IGTDrWFzXG4gICAgY29uc3QgcmFuZG9tRGF0ZSA9IG5ldyBEYXRlKClcbiAgICByYW5kb21EYXRlLnNldERhdGUocmFuZG9tRGF0ZS5nZXREYXRlKCkgLSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA3KSlcbiAgICByYW5kb21EYXRlLnNldEhvdXJzKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDI0KSlcbiAgICByYW5kb21EYXRlLnNldE1pbnV0ZXMoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNjApKVxuXG4gICAgc2VsZWN0ZWRNZXNzYWdlcy5wdXNoKHtcbiAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICBkYXRlOiByYW5kb21EYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICBtZXNzYWdlX2lkOiBgbXNnXyR7RGF0ZS5ub3coKX1fJHtpfWAsXG4gICAgICB1c2VyX2lkOiAnMTUnLFxuICAgICAgd2FzX2hlbHBmdWw6IE1hdGgucmFuZG9tKCkgPiAwLjMgPyAxIDogMCxcbiAgICB9KVxuICB9XG5cbiAgLy8gT3JkZW5hciBwb3IgZmVjaGFcbiAgc2VsZWN0ZWRNZXNzYWdlcy5zb3J0KChhLCBiKSA9PiBuZXcgRGF0ZShhLmRhdGUpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpKVxuXG4gIHJldHVybiB7XG4gICAgaXRlbXM6IHNlbGVjdGVkTWVzc2FnZXMsXG4gICAgbGFzdF9ldmFsdWF0ZWRfa2V5OiBgJTdCJTIyUEslMjIlM0ElMjAlMjJzdGFnaW5nJTIzQ0hBVElEJTIzJHtjaGF0SWR9JTIzUFJPSkVDVCUyM3BtX2FnZW50JTIyJTJDJTIwJTIyU0slMjIlM0ElMjAke0RhdGUubm93KCl9JTdEYCxcbiAgfVxufVxuXG4vLyBNb2NrIG9yaWdpbmFsIHBhcmEgY29tcGF0aWJpbGlkYWRcbmV4cG9ydCBjb25zdCBNT0NLX0NIQVRfTUVTU0FHRVNfUkVTUE9OU0U6IENoYXRNZXNzYWdlc1Jlc3BvbnNlU2NoZW1hID0ge1xuICBpdGVtczogW1xuICAgIHtcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0VsIHByb3llY3RvIGFjdHVhbG1lbnRlIHRpZW5lIHVuIHByb2dyZXNvIGRlbCA3NSUuIExvcyBoaXRvcyBwcmluY2lwYWxlcyBjb21wbGV0YWRvcyBpbmNsdXllbiBsYSBmYXNlIGRlIGRpc2XDsW8gKDEwMCUpLCBkZXNhcnJvbGxvIGRlbCBiYWNrZW5kICg5MCUpLCB5IGxhIGludGVyZmF6IGRlIHVzdWFyaW8gKDYwJSkuIEVsIHNwcmludCBhY3R1YWwgZXN0w6EgZW5mb2NhZG8gZW4gbGEgaW1wbGVtZW50YWNpw7NuIGRlIG51ZXZhcyBjYXJhY3RlcsOtc3RpY2FzIHkgbGEgb3B0aW1pemFjacOzbiBkZWwgcmVuZGltaWVudG8uJyxcbiAgICAgIGRhdGU6ICcyMDI1LTA1LTE0VDE3OjUyOjQ0LjExNzQ4NScsXG4gICAgICBtZXNzYWdlX2lkOiAnbXNnXzIwMjUwNTE0XzAwMScsXG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgZWwgZXN0YWRvIGFjdHVhbCBkZWwgcHJveWVjdG8/JyxcbiAgICAgIHVzZXJfaWQ6ICcxNScsXG4gICAgICB3YXNfaGVscGZ1bDogdHJ1ZSxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgICAgdGltZXN0YW1wOiAnJyxcbiAgICAgIG1lbW9yeV9zZXNzaW9uX2lkOiAnJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhIHJlbnRhYmlsaWRhZCBwcm95ZWN0YWRhIGRlbCBwcm95ZWN0byBlcyBkZWwgMjglIGFudWFsLiBMb3MgcHJpbmNpcGFsZXMgaW5kaWNhZG9yZXMgc29uOlxcbi0gUk9JIGVzcGVyYWRvOiAyLjh4XFxuLSBNYXJnZW4gZGUgYmVuZWZpY2lvOiAzNSVcXG4tIFBlcsOtb2RvIGRlIHJlY3VwZXJhY2nDs246IDE4IG1lc2VzXFxuXFxuRXN0b3MgbsO6bWVyb3MgZXN0w6FuIGJhc2Fkb3MgZW4gbGFzIHByb3llY2Npb25lcyBhY3R1YWxlcyB5IGVsIGFuw6FsaXNpcyBkZSBtZXJjYWRvIHJlYWxpemFkbyBlbiBRMSAyMDI1LicsXG4gICAgICBkYXRlOiAnMjAyNS0wNS0xNFQxNzo1Mjo0Ni41NDM5ODAnLFxuICAgICAgbWVzc2FnZV9pZDogJ21zZ18yMDI1MDUxNF8wMDInLFxuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsIGVzIGxhIHJlbnRhYmlsaWRhZCBlc3BlcmFkYSBkZWwgcHJveWVjdG8/JyxcbiAgICAgIHVzZXJfaWQ6ICcxNScsXG4gICAgICB3YXNfaGVscGZ1bDogdHJ1ZSxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgICAgdGltZXN0YW1wOiAnJyxcbiAgICAgIG1lbW9yeV9zZXNzaW9uX2lkOiAnJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhcyBwcsOzeGltYXMgdGFyZWFzIHByaW9yaXRhcmlhcyBzb246XFxuMS4gRmluYWxpemFyIGxhIGludGVncmFjacOzbiBjb24gZWwgc2lzdGVtYSBkZSBwYWdvcyAoRmVjaGEgbMOtbWl0ZTogMjAyNS0wNS0yMClcXG4yLiBJbXBsZW1lbnRhciBlbCBudWV2byBtw7NkdWxvIGRlIHJlcG9ydGVzIChGZWNoYSBsw61taXRlOiAyMDI1LTA1LTI1KVxcbjMuIFJlYWxpemFyIHBydWViYXMgZGUgY2FyZ2EgZGVsIHNpc3RlbWEgKEZlY2hhIGzDrW1pdGU6IDIwMjUtMDUtMjgpXFxuNC4gUHJlcGFyYXIgbGEgZG9jdW1lbnRhY2nDs24gcGFyYSBlbCBsYW56YW1pZW50byAoRmVjaGEgbMOtbWl0ZTogMjAyNS0wNi0wMSknLFxuICAgICAgZGF0ZTogJzIwMjUtMDUtMTRUMTc6NTI6NDguNzg2ODg0JyxcbiAgICAgIG1lc3NhZ2VfaWQ6ICdtc2dfMjAyNTA1MTRfMDAzJyxcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsYXMgcHLDs3hpbWFzIHRhcmVhcyBwZW5kaWVudGVzPycsXG4gICAgICB1c2VyX2lkOiAnMTUnLFxuICAgICAgd2FzX2hlbHBmdWw6IHRydWUsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICAgIHRpbWVzdGFtcDogJycsXG4gICAgICBtZW1vcnlfc2Vzc2lvbl9pZDogJycsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdFbCBlcXVpcG8gYWN0dWFsIGVzdMOhIGNvbXB1ZXN0byBwb3I6XFxuLSAzIGRlc2Fycm9sbGFkb3JlcyBiYWNrZW5kXFxuLSAyIGRlc2Fycm9sbGFkb3JlcyBmcm9udGVuZFxcbi0gMSBkaXNlw7FhZG9yIFVYL1VJXFxuLSAxIFByb2plY3QgTWFuYWdlclxcbi0gMSBRQSBFbmdpbmVlclxcblxcblRvZG9zIGxvcyBtaWVtYnJvcyBlc3TDoW4gYXNpZ25hZG9zIGFsIDEwMCUgYWwgcHJveWVjdG8geSB0cmFiYWphbiBlbiBtb2RhbGlkYWQgaMOtYnJpZGEuJyxcbiAgICAgIGRhdGU6ICcyMDI1LTA1LTE0VDE3OjUyOjUwLjY1NzgxNScsXG4gICAgICBtZXNzYWdlX2lkOiAnbXNnXzIwMjUwNTE0XzAwNCcsXG4gICAgICBxdWVzdGlvbjogJ8K/Q8OzbW8gZXN0w6EgY29uZm9ybWFkbyBlbCBlcXVpcG8gZGVsIHByb3llY3RvPycsXG4gICAgICB1c2VyX2lkOiAnMTUnLFxuICAgICAgd2FzX2hlbHBmdWw6IHRydWUsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMSxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICAgIHRpbWVzdGFtcDogJycsXG4gICAgICBtZW1vcnlfc2Vzc2lvbl9pZDogJycsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMb3MgcHJpbmNpcGFsZXMgcmllc2dvcyBpZGVudGlmaWNhZG9zIHNvbjpcXG4xLiBEZXBlbmRlbmNpYXMgZGUgdGVyY2Vyb3MgKFByb2JhYmlsaWRhZDogTWVkaWEsIEltcGFjdG86IEFsdG8pXFxuMi4gRXNjYWxhYmlsaWRhZCBkZWwgc2lzdGVtYSAoUHJvYmFiaWxpZGFkOiBCYWphLCBJbXBhY3RvOiBBbHRvKVxcbjMuIEN1bXBsaW1pZW50byByZWd1bGF0b3JpbyAoUHJvYmFiaWxpZGFkOiBNZWRpYSwgSW1wYWN0bzogTWVkaW8pXFxuXFxuU2UgZXN0w6FuIGltcGxlbWVudGFuZG8gcGxhbmVzIGRlIG1pdGlnYWNpw7NuIHBhcmEgY2FkYSB1bm8gZGUgZXN0b3Mgcmllc2dvcy4nLFxuICAgICAgZGF0ZTogJzIwMjUtMDUtMTRUMTc6NTI6NTMuMjcxNjU3JyxcbiAgICAgIG1lc3NhZ2VfaWQ6ICdtc2dfMjAyNTA1MTRfMDA1JyxcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsb3MgcHJpbmNpcGFsZXMgcmllc2dvcyBkZWwgcHJveWVjdG8/JyxcbiAgICAgIHVzZXJfaWQ6ICcxNScsXG4gICAgICB3YXNfaGVscGZ1bDogdHJ1ZSxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgICAgdGltZXN0YW1wOiAnJyxcbiAgICAgIG1lbW9yeV9zZXNzaW9uX2lkOiAnJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0VsIHByZXN1cHVlc3RvIGFjdHVhbCBkZWwgcHJveWVjdG8gZXMgZGUgJDQ1MCwwMDAuIEhhc3RhIGxhIGZlY2hhLCBzZSBoYW4gZ2FzdGFkbyAkMzIwLDAwMCAoNzElIGRlbCBwcmVzdXB1ZXN0bykuIExvcyBwcmluY2lwYWxlcyBnYXN0b3MgaGFuIHNpZG8gZW4gZGVzYXJyb2xsbyAoNDUlKSwgaW5mcmFlc3RydWN0dXJhICgyNSUpLCB5IHJlY3Vyc29zIGh1bWFub3MgKDMwJSkuIEVsIHByZXN1cHVlc3RvIGVzdMOhIGFsaW5lYWRvIGNvbiBsYXMgcHJveWVjY2lvbmVzIGluaWNpYWxlcy4nLFxuICAgICAgZGF0ZTogJzIwMjUtMDUtMTRUMTc6NTI6NTQuODcyNTEyJyxcbiAgICAgIG1lc3NhZ2VfaWQ6ICdtc2dfMjAyNTA1MTRfMDA2JyxcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbCBlcyBlbCBlc3RhZG8gZGVsIHByZXN1cHVlc3RvIGRlbCBwcm95ZWN0bz8nLFxuICAgICAgdXNlcl9pZDogJzE1JyxcbiAgICAgIHdhc19oZWxwZnVsOiB0cnVlLFxuICAgICAgcHJvamVjdF9pZDogMTU1NjcxLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgICAgdGltZXN0YW1wOiAnJyxcbiAgICAgIG1lbW9yeV9zZXNzaW9uX2lkOiAnJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhcyBtw6l0cmljYXMgY2xhdmUgKEtQSXMpIGRlbCBwcm95ZWN0byBzb246XFxuLSBWZWxvY2lkYWQgZGVsIGVxdWlwbzogNDUgcHVudG9zIHBvciBzcHJpbnRcXG4tIENhbGlkYWQgZGVsIGPDs2RpZ286IDk4JSBkZSBjb2JlcnR1cmEgZGUgcHJ1ZWJhc1xcbi0gU2F0aXNmYWNjacOzbiBkZWwgY2xpZW50ZTogNC44LzVcXG4tIFRpZW1wbyBkZSByZXNwdWVzdGEgYSBpbmNpZGVuY2lhczogPCAyIGhvcmFzXFxuXFxuVG9kYXMgbGFzIG3DqXRyaWNhcyBlc3TDoW4gZGVudHJvIGRlIGxvcyByYW5nb3Mgb2JqZXRpdm9zIGVzdGFibGVjaWRvcy4nLFxuICAgICAgZGF0ZTogJzIwMjUtMDUtMTRUMTc6NTM6MTEuNjc3MzA2JyxcbiAgICAgIG1lc3NhZ2VfaWQ6ICdtc2dfMjAyNTA1MTRfMDA3JyxcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsYXMgbcOpdHJpY2FzIGFjdHVhbGVzIGRlbCBwcm95ZWN0bz8nLFxuICAgICAgdXNlcl9pZDogJzE1JyxcbiAgICAgIHdhc19oZWxwZnVsOiB0cnVlLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgICB0aW1lc3RhbXA6ICcnLFxuICAgICAgbWVtb3J5X3Nlc3Npb25faWQ6ICcnLFxuICAgIH0sXG4gICAge1xuICAgICAgYW5zd2VyOlxuICAgICAgICAnRWwgY3Jvbm9ncmFtYSBhY3R1YWwgaW5kaWNhIHF1ZSBlbCBwcm95ZWN0byBlc3TDoSBlbiBsYSBGYXNlIDMgZGUgNS4gTGFzIGZlY2hhcyBjbGF2ZSBzb246XFxuLSBGYXNlIDMgKEFjdHVhbCk6IDIwMjUtMDUtMDEgYSAyMDI1LTA2LTE1XFxuLSBGYXNlIDQ6IDIwMjUtMDYtMTYgYSAyMDI1LTA3LTMxXFxuLSBGYXNlIDUgKEZpbmFsKTogMjAyNS0wOC0wMSBhIDIwMjUtMDgtMzFcXG5cXG5FbCBwcm95ZWN0byBlc3TDoSBhdmFuemFuZG8gc2Vnw7puIGxvIHBsYW5pZmljYWRvLicsXG4gICAgICBkYXRlOiAnMjAyNS0wNS0xNFQxNzo1MzoxMi42MTg5MDUnLFxuICAgICAgbWVzc2FnZV9pZDogJ21zZ18yMDI1MDUxNF8wMDgnLFxuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsIGVzIGVsIGNyb25vZ3JhbWEgYWN0dWFsIGRlbCBwcm95ZWN0bz8nLFxuICAgICAgdXNlcl9pZDogJzE1JyxcbiAgICAgIHdhc19oZWxwZnVsOiB0cnVlLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgICB0aW1lc3RhbXA6ICcnLFxuICAgICAgbWVtb3J5X3Nlc3Npb25faWQ6ICcnLFxuICAgIH0sXG4gICAge1xuICAgICAgYW5zd2VyOlxuICAgICAgICAnTG9zIHN0YWtlaG9sZGVycyBwcmluY2lwYWxlcyBzb246XFxuMS4gQ2xpZW50ZSBmaW5hbDogRW1wcmVzYSBYWVpcXG4yLiBQYXRyb2NpbmFkb3I6IERpcmVjdG9yIGRlIElubm92YWNpw7NuXFxuMy4gVXN1YXJpb3MgZmluYWxlczogRXF1aXBvIGRlIE9wZXJhY2lvbmVzXFxuNC4gUHJvdmVlZG9yZXM6IENsb3VkIFNlcnZpY2VzIEluYy5cXG5cXG5TZSByZWFsaXphbiByZXVuaW9uZXMgc2VtYW5hbGVzIGNvbiBsb3Mgc3Rha2Vob2xkZXJzIHBhcmEgbWFudGVuZXJsb3MgaW5mb3JtYWRvcyBkZWwgcHJvZ3Jlc28uJyxcbiAgICAgIGRhdGU6ICcyMDI1LTA1LTE0VDE3OjUzOjE1LjcwNjQxMicsXG4gICAgICBtZXNzYWdlX2lkOiAnbXNnXzIwMjUwNTE0XzAwOScsXG4gICAgICBxdWVzdGlvbjogJ8K/UXVpw6luZXMgc29uIGxvcyBzdGFrZWhvbGRlcnMgZGVsIHByb3llY3RvPycsXG4gICAgICB1c2VyX2lkOiAnMTUnLFxuICAgICAgd2FzX2hlbHBmdWw6IHRydWUsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICAgIHRpbWVzdGFtcDogJycsXG4gICAgICBtZW1vcnlfc2Vzc2lvbl9pZDogJycsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMb3MgZW50cmVnYWJsZXMgcGVuZGllbnRlcyBwYXJhIGVzdGUgdHJpbWVzdHJlIHNvbjpcXG5cXG58IFTDrXR1bG8gZGUgbGEgVGFyZWEgfCBFc3RhZG8gfFxcbnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLXxcXG58IFByb3B1ZXN0YSBjcmVhdGl2YSB8IE51ZXZhIHxcXG58IEFwbGljYWNpb25lcyBkZSBtYXJjYSB8IE51ZXZhIHxcXG58IEJyYWluc3Rvcm1pbmcgQ29uY2VwdG9zIHZpc3VhbGVzIHwgTnVldmEgfFxcbnwgQnJhaW5zdG9ybWluZyBOYW1pbmcgfCBOdWV2YSB8XFxufCBDb25zb2xpZGFjacOzbiBkZSBCcmllZiB8IE51ZXZhIHxcXG58IEFuw6FsaXNpcyBkZSBsYSBNYXJjYSB8IE51ZXZhIHxcXG58IHRhcmVhIGRlIFBydWViYSB8IE51ZXZhIHxcXG58IFByZXNlbnRhY2nDs24gZGUgcHJvcHVlc3RhICgxKSB8IE51ZXZhIHxcXG58IE1hbnVhbCBkZSBtYXJjYSB8IE51ZXZhIHxcXG58IEFqdXN0ZXMgZGUgRGlzZcOxbyBQcm9wdWVzdGEgMSB8IE51ZXZhIHxcXG58IHRhcmVhIGFsIG1lZGlvIHwgTnVldmEgfFxcbnwgTGEgdGFyZWEgcGFyYSByZWZyZXNjYXIgfCBOdWV2YSB8XFxuXFxuVG9kb3MgbG9zIGVudHJlZ2FibGVzIHRpZW5lbiBzdXMgZmVjaGFzIGRlIGVudHJlZ2EgZGVmaW5pZGFzIHkgZXN0w6FuIHNpZW5kbyBtb25pdG9yZWFkb3MgYWN0aXZhbWVudGUuJyxcbiAgICAgIGRhdGU6ICcyMDI1LTA1LTE0VDE3OjUzOjE2LjkxODQ5MycsXG4gICAgICBtZXNzYWdlX2lkOiAnbXNnXzIwMjUwNTE0XzAxMCcsXG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWxlcyBzb24gbG9zIGVudHJlZ2FibGVzIHBlbmRpZW50ZXM/JyxcbiAgICAgIHVzZXJfaWQ6ICcxNScsXG4gICAgICB3YXNfaGVscGZ1bDogdHJ1ZSxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgICAgdGltZXN0YW1wOiAnJyxcbiAgICAgIG1lbW9yeV9zZXNzaW9uX2lkOiAnJyxcbiAgICB9LFxuICBdLFxuICBsYXN0X2V2YWx1YXRlZF9rZXk6XG4gICAgJyU3QiUyMlBLJTIyJTNBJTIwJTIyc3RhZ2luZyUyM0NIQVRJRCUyMzkwNDkxZDNjLTA1OGEtNDE0OS1iODdlLWYzN2YwMDY4MTgzOSUyM1BST0pFQ1QlMjNwbV9hZ2VudCUyMiUyQyUyMCUyMlNLJTIyJTNBJTIwMTc0NzI0NTE2NCU3RCcsXG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLEVBQUUsSUFBSUMsTUFBTSxRQUFRLE1BQU07QUFH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
@@ -0,0 +1,5 @@
1
+ export var MOCK_ORCHESTRATOR_RESPONSE = {
2
+ content: "Let me help you analyze this project in detail.\n\nFirst, let's look at the key objectives and deliverables. Based on the information provided, this project aims to:\n\n1. Improve the user experience by implementing a new interface\n2. Optimize performance across different devices\n3. Enhance security measures\n4. Integrate with existing systems\n\nThe current implementation shows several areas that need attention:\n\n\u2022 The authentication flow could be more robust\n\u2022 API endpoints need better error handling\n\u2022 Database queries should be optimized\n\u2022 Frontend components require better state management\n\nHere are my recommendations for moving forward:\n\n1. Authentication:\n - Implement OAuth 2.0 with refresh tokens\n - Add rate limiting\n - Set up proper session management\n\n2. Performance:\n - Implement caching strategies\n - Optimize database indexes\n - Use lazy loading for components\n - Consider implementing a CDN\n\n3. Security:\n - Add input validation\n - Implement CSRF protection\n - Set up proper CORS policies\n - Regular security audits\n\n4. Code Quality:\n - Increase test coverage\n - Implement proper logging\n - Add documentation\n - Set up CI/CD pipelines\n\nWould you like me to elaborate on any of these points or provide specific code examples for implementation?",
3
+ mockDelay: 100 // This is no longer used since we're streaming
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNT0NLX09SQ0hFU1RSQVRPUl9SRVNQT05TRSIsImNvbnRlbnQiLCJtb2NrRGVsYXkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ja3MvbW9ja09yY2hlc3RyYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTU9DS19PUkNIRVNUUkFUT1JfUkVTUE9OU0UgPSB7XG4gIGNvbnRlbnQ6IGBMZXQgbWUgaGVscCB5b3UgYW5hbHl6ZSB0aGlzIHByb2plY3QgaW4gZGV0YWlsLlxuXG5GaXJzdCwgbGV0J3MgbG9vayBhdCB0aGUga2V5IG9iamVjdGl2ZXMgYW5kIGRlbGl2ZXJhYmxlcy4gQmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkLCB0aGlzIHByb2plY3QgYWltcyB0bzpcblxuMS4gSW1wcm92ZSB0aGUgdXNlciBleHBlcmllbmNlIGJ5IGltcGxlbWVudGluZyBhIG5ldyBpbnRlcmZhY2VcbjIuIE9wdGltaXplIHBlcmZvcm1hbmNlIGFjcm9zcyBkaWZmZXJlbnQgZGV2aWNlc1xuMy4gRW5oYW5jZSBzZWN1cml0eSBtZWFzdXJlc1xuNC4gSW50ZWdyYXRlIHdpdGggZXhpc3Rpbmcgc3lzdGVtc1xuXG5UaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBzaG93cyBzZXZlcmFsIGFyZWFzIHRoYXQgbmVlZCBhdHRlbnRpb246XG5cbuKAoiBUaGUgYXV0aGVudGljYXRpb24gZmxvdyBjb3VsZCBiZSBtb3JlIHJvYnVzdFxu4oCiIEFQSSBlbmRwb2ludHMgbmVlZCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmdcbuKAoiBEYXRhYmFzZSBxdWVyaWVzIHNob3VsZCBiZSBvcHRpbWl6ZWRcbuKAoiBGcm9udGVuZCBjb21wb25lbnRzIHJlcXVpcmUgYmV0dGVyIHN0YXRlIG1hbmFnZW1lbnRcblxuSGVyZSBhcmUgbXkgcmVjb21tZW5kYXRpb25zIGZvciBtb3ZpbmcgZm9yd2FyZDpcblxuMS4gQXV0aGVudGljYXRpb246XG4gICAtIEltcGxlbWVudCBPQXV0aCAyLjAgd2l0aCByZWZyZXNoIHRva2Vuc1xuICAgLSBBZGQgcmF0ZSBsaW1pdGluZ1xuICAgLSBTZXQgdXAgcHJvcGVyIHNlc3Npb24gbWFuYWdlbWVudFxuXG4yLiBQZXJmb3JtYW5jZTpcbiAgIC0gSW1wbGVtZW50IGNhY2hpbmcgc3RyYXRlZ2llc1xuICAgLSBPcHRpbWl6ZSBkYXRhYmFzZSBpbmRleGVzXG4gICAtIFVzZSBsYXp5IGxvYWRpbmcgZm9yIGNvbXBvbmVudHNcbiAgIC0gQ29uc2lkZXIgaW1wbGVtZW50aW5nIGEgQ0ROXG5cbjMuIFNlY3VyaXR5OlxuICAgLSBBZGQgaW5wdXQgdmFsaWRhdGlvblxuICAgLSBJbXBsZW1lbnQgQ1NSRiBwcm90ZWN0aW9uXG4gICAtIFNldCB1cCBwcm9wZXIgQ09SUyBwb2xpY2llc1xuICAgLSBSZWd1bGFyIHNlY3VyaXR5IGF1ZGl0c1xuXG40LiBDb2RlIFF1YWxpdHk6XG4gICAtIEluY3JlYXNlIHRlc3QgY292ZXJhZ2VcbiAgIC0gSW1wbGVtZW50IHByb3BlciBsb2dnaW5nXG4gICAtIEFkZCBkb2N1bWVudGF0aW9uXG4gICAtIFNldCB1cCBDSS9DRCBwaXBlbGluZXNcblxuV291bGQgeW91IGxpa2UgbWUgdG8gZWxhYm9yYXRlIG9uIGFueSBvZiB0aGVzZSBwb2ludHMgb3IgcHJvdmlkZSBzcGVjaWZpYyBjb2RlIGV4YW1wbGVzIGZvciBpbXBsZW1lbnRhdGlvbj9gLFxuICBtb2NrRGVsYXk6IDEwMCwgLy8gVGhpcyBpcyBubyBsb25nZXIgdXNlZCBzaW5jZSB3ZSdyZSBzdHJlYW1pbmdcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFNQSwwQkFBMEIsR0FBRztFQUN4Q0MsT0FBTywwMENBeUNtRztFQUMxR0MsU0FBUyxFQUFFLEdBQUcsQ0FBRTtBQUNsQixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,11 @@
1
+ export var MOCK_PROJECT_DATA = {
2
+ id: 40531,
3
+ // id: 44653,
4
+ name: 'Mock project',
5
+ client: {
6
+ id: 14,
7
+ name: 'Mock client'
8
+ },
9
+ incomeType: 'fee'
10
+ };
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNT0NLX1BST0pFQ1RfREFUQSIsImlkIiwibmFtZSIsImNsaWVudCIsImluY29tZVR5cGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ja3MvbW9ja1Byb2plY3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IE1PQ0tfUFJPSkVDVF9EQVRBID0ge1xuICBpZDogNDA1MzEsXG4gIC8vIGlkOiA0NDY1MyxcbiAgbmFtZTogJ01vY2sgcHJvamVjdCcsXG4gIGNsaWVudDoge1xuICAgIGlkOiAxNCxcbiAgICBuYW1lOiAnTW9jayBjbGllbnQnLFxuICB9LFxuICBpbmNvbWVUeXBlOiAnZmVlJyxcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFNQSxpQkFBaUIsR0FBRztFQUMvQkMsRUFBRSxFQUFFLEtBQUs7RUFDVDtFQUNBQyxJQUFJLEVBQUUsY0FBYztFQUNwQkMsTUFBTSxFQUFFO0lBQ05GLEVBQUUsRUFBRSxFQUFFO0lBQ05DLElBQUksRUFBRTtFQUNSLENBQUM7RUFDREUsVUFBVSxFQUFFO0FBQ2QsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,6 @@
1
+ export var MOCK_PROJECT_SUMMARY = 'data: # 📅 Fechas y Deadlines\nThe project does not have a defined deadline. It has been active for **2,159 days** since its start date on June 1, 2019. It is recommended to define a deadline to better assess potential deviations and ensure timely completion.\n\n---\n\n#### 💰 Estado Rentabilidad\nInformation not available.\n\n---\n\n#### ⏱️ Estimación de Horas y Consumos\nThe project has consumed **114.34** hours out of the estimated **2,556** hours, representing approximately **4.47%** of the total estimated time. There are still **2,441.66** hours remaining to be utilized. The current consumption suggests a significant margin of **95.53%** is still available, indicating that the project is well within its time allocation.\n\n---\n\n#### 📊 Tareas y Avances\n- **Total Tasks**: 91\n - **New**: 74 tasks (81.32%). This high percentage suggests a low execution rate.\n - **In Process**: 12 tasks (13.19%).\n - **Working**: 9 tasks\n - **In Design**: 3 tasks\n - **Stuck**: 1 task (1.10%). Minimal impact but should be monitored.\n - **Finished**: 4 tasks (4.40%). The project shows limited progress, with a small number of tasks completed.\n - **In Review**: 0 tasks. No tasks are currently under review.\n\n---\n\n#### 🔄 Retrabajos\nA total of 12 reworks have been identified in the project:\n- **Internal**: 4 reworks (33.33%)\n- **Client Requirements**: 8 reworks (66.67%). This high percentage suggests a potential area for improvement in initial requirement gathering or client communication.\n\nDistribution by type:\n- **Adjustment**: 6 reworks (50%). A significant portion, indicating a need to address recurring adjustments.\n- **Redefinition**: 1 rework (8.33%).\n- **Additional**: 2 reworks (16.67%).\n\nThe dominance of client-requested reworks and adjustments highlights areas for potential process refinement or enhanced client collaboration.';
2
+ export var MOCK_PROJECT_SUMMARY_RESPONSE = {
3
+ content: MOCK_PROJECT_SUMMARY,
4
+ date: '2021-09-30T12:00:00Z'
5
+ };
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNT0NLX1BST0pFQ1RfU1VNTUFSWSIsIk1PQ0tfUFJPSkVDVF9TVU1NQVJZX1JFU1BPTlNFIiwiY29udGVudCIsImRhdGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ja3MvbW9ja1Byb2plY3RTdW1tYXJ5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBNT0NLX1BST0pFQ1RfU1VNTUFSWSA9XG4gICdkYXRhOiAjIPCfk4UgRmVjaGFzIHkgRGVhZGxpbmVzXFxuVGhlIHByb2plY3QgZG9lcyBub3QgaGF2ZSBhIGRlZmluZWQgZGVhZGxpbmUuIEl0IGhhcyBiZWVuIGFjdGl2ZSBmb3IgKioyLDE1OSBkYXlzKiogc2luY2UgaXRzIHN0YXJ0IGRhdGUgb24gSnVuZSAxLCAyMDE5LiBJdCBpcyByZWNvbW1lbmRlZCB0byBkZWZpbmUgYSBkZWFkbGluZSB0byBiZXR0ZXIgYXNzZXNzIHBvdGVudGlhbCBkZXZpYXRpb25zIGFuZCBlbnN1cmUgdGltZWx5IGNvbXBsZXRpb24uXFxuXFxuLS0tXFxuXFxuIyMjIyDwn5KwIEVzdGFkbyBSZW50YWJpbGlkYWRcXG5JbmZvcm1hdGlvbiBub3QgYXZhaWxhYmxlLlxcblxcbi0tLVxcblxcbiMjIyMg4o+x77iPIEVzdGltYWNpw7NuIGRlIEhvcmFzIHkgQ29uc3Vtb3NcXG5UaGUgcHJvamVjdCBoYXMgY29uc3VtZWQgKioxMTQuMzQqKiBob3VycyBvdXQgb2YgdGhlIGVzdGltYXRlZCAqKjIsNTU2KiogaG91cnMsIHJlcHJlc2VudGluZyBhcHByb3hpbWF0ZWx5ICoqNC40NyUqKiBvZiB0aGUgdG90YWwgZXN0aW1hdGVkIHRpbWUuIFRoZXJlIGFyZSBzdGlsbCAqKjIsNDQxLjY2KiogaG91cnMgcmVtYWluaW5nIHRvIGJlIHV0aWxpemVkLiBUaGUgY3VycmVudCBjb25zdW1wdGlvbiBzdWdnZXN0cyBhIHNpZ25pZmljYW50IG1hcmdpbiBvZiAqKjk1LjUzJSoqIGlzIHN0aWxsIGF2YWlsYWJsZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBwcm9qZWN0IGlzIHdlbGwgd2l0aGluIGl0cyB0aW1lIGFsbG9jYXRpb24uXFxuXFxuLS0tXFxuXFxuIyMjIyDwn5OKIFRhcmVhcyB5IEF2YW5jZXNcXG4tICoqVG90YWwgVGFza3MqKjogOTFcXG4gIC0gKipOZXcqKjogNzQgdGFza3MgKDgxLjMyJSkuIFRoaXMgaGlnaCBwZXJjZW50YWdlIHN1Z2dlc3RzIGEgbG93IGV4ZWN1dGlvbiByYXRlLlxcbiAgLSAqKkluIFByb2Nlc3MqKjogMTIgdGFza3MgKDEzLjE5JSkuXFxuICAgIC0gKipXb3JraW5nKio6IDkgdGFza3NcXG4gICAgLSAqKkluIERlc2lnbioqOiAzIHRhc2tzXFxuICAtICoqU3R1Y2sqKjogMSB0YXNrICgxLjEwJSkuIE1pbmltYWwgaW1wYWN0IGJ1dCBzaG91bGQgYmUgbW9uaXRvcmVkLlxcbiAgLSAqKkZpbmlzaGVkKio6IDQgdGFza3MgKDQuNDAlKS4gVGhlIHByb2plY3Qgc2hvd3MgbGltaXRlZCBwcm9ncmVzcywgd2l0aCBhIHNtYWxsIG51bWJlciBvZiB0YXNrcyBjb21wbGV0ZWQuXFxuICAtICoqSW4gUmV2aWV3Kio6IDAgdGFza3MuIE5vIHRhc2tzIGFyZSBjdXJyZW50bHkgdW5kZXIgcmV2aWV3Llxcblxcbi0tLVxcblxcbiMjIyMg8J+UhCBSZXRyYWJham9zXFxuQSB0b3RhbCBvZiAxMiByZXdvcmtzIGhhdmUgYmVlbiBpZGVudGlmaWVkIGluIHRoZSBwcm9qZWN0Olxcbi0gKipJbnRlcm5hbCoqOiA0IHJld29ya3MgKDMzLjMzJSlcXG4tICoqQ2xpZW50IFJlcXVpcmVtZW50cyoqOiA4IHJld29ya3MgKDY2LjY3JSkuIFRoaXMgaGlnaCBwZXJjZW50YWdlIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGFyZWEgZm9yIGltcHJvdmVtZW50IGluIGluaXRpYWwgcmVxdWlyZW1lbnQgZ2F0aGVyaW5nIG9yIGNsaWVudCBjb21tdW5pY2F0aW9uLlxcblxcbkRpc3RyaWJ1dGlvbiBieSB0eXBlOlxcbi0gKipBZGp1c3RtZW50Kio6IDYgcmV3b3JrcyAoNTAlKS4gQSBzaWduaWZpY2FudCBwb3J0aW9uLCBpbmRpY2F0aW5nIGEgbmVlZCB0byBhZGRyZXNzIHJlY3VycmluZyBhZGp1c3RtZW50cy5cXG4tICoqUmVkZWZpbml0aW9uKio6IDEgcmV3b3JrICg4LjMzJSkuXFxuLSAqKkFkZGl0aW9uYWwqKjogMiByZXdvcmtzICgxNi42NyUpLlxcblxcblRoZSBkb21pbmFuY2Ugb2YgY2xpZW50LXJlcXVlc3RlZCByZXdvcmtzIGFuZCBhZGp1c3RtZW50cyBoaWdobGlnaHRzIGFyZWFzIGZvciBwb3RlbnRpYWwgcHJvY2VzcyByZWZpbmVtZW50IG9yIGVuaGFuY2VkIGNsaWVudCBjb2xsYWJvcmF0aW9uLidcblxuZXhwb3J0IGNvbnN0IE1PQ0tfUFJPSkVDVF9TVU1NQVJZX1JFU1BPTlNFID0ge1xuICBjb250ZW50OiBNT0NLX1BST0pFQ1RfU1VNTUFSWSxcbiAgZGF0ZTogJzIwMjEtMDktMzBUMTI6MDA6MDBaJyxcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFNQSxvQkFBb0IsR0FDL0IsdzFEQUF3MUQ7QUFFMTFELE9BQU8sSUFBTUMsNkJBQTZCLEdBQUc7RUFDM0NDLE9BQU8sRUFBRUYsb0JBQW9CO0VBQzdCRyxJQUFJLEVBQUU7QUFDUixDQUFDIiwiaWdub3JlTGlzdCI6W119