@projectcor/maia-components 2.50.1-2 → 2.51.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/README.md +2 -0
  2. package/lib/App.js +19 -44
  3. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +1 -3
  4. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +1 -3
  5. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +14 -24
  6. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +10 -28
  7. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +15 -19
  8. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +4 -8
  9. package/lib/components/atoms/ClientSelector/ClientSelector.js +13 -15
  10. package/lib/components/atoms/Fade/Fade.js +6 -10
  11. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
  12. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
  13. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +2 -3
  14. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +2 -3
  15. package/lib/components/atoms/MAIAInput/MAIAInput.js +99 -123
  16. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +4 -9
  17. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +5 -4
  18. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +26 -28
  19. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +14 -15
  20. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
  21. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +24 -41
  22. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +10 -25
  23. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +43 -78
  24. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +11 -9
  25. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +15 -37
  26. package/lib/components/index.js +1 -2
  27. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +8 -6
  28. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +4 -6
  29. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +16 -25
  30. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
  31. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +72 -93
  32. package/lib/components/molecules/ChatAIHome/styles.js +78 -85
  33. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +14 -30
  34. package/lib/components/molecules/ChatAIMessages/newStyles.js +35 -32
  35. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +3 -9
  36. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +20 -25
  37. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  38. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
  39. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
  40. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +367 -63
  41. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -10
  42. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +2 -5
  43. package/lib/components/molecules/Sidebar/Sidebar.js +49 -57
  44. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +2 -2
  45. package/lib/components/organisms/ChatAI/ChatAI.js +14 -1
  46. package/lib/components/organisms/ProjectSummary/ProjectSummary.js +7 -11
  47. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +1 -4
  48. package/lib/constants/permissions/index.js +2 -2
  49. package/lib/constants/permissions/utils.js +1 -4
  50. package/lib/dev/DevReasoningTimeline.js +37 -68
  51. package/lib/dev/Providers.js +3 -5
  52. package/lib/hooks/useAgentModel/useUpdateAgent.js +6 -7
  53. package/lib/hooks/useChatManager/useChatManager.helpers.js +3 -3
  54. package/lib/hooks/useChatManager/useChatManager.js +7 -8
  55. package/lib/hooks/useEntitySearch.js +1 -3
  56. package/lib/hooks/useFrequentlyUsedActions.js +22 -61
  57. package/lib/hooks/useKnowledge/downloadKnowledge.js +4 -4
  58. package/lib/hooks/useKnowledge/useKnowledgeOperations.js +15 -16
  59. package/lib/hooks/useProjectSummaryConfig.js +5 -10
  60. package/lib/index.js +2 -5
  61. package/lib/lang/br/index.js +2 -27
  62. package/lib/lang/en/index.js +2 -27
  63. package/lib/lang/es/index.js +2 -27
  64. package/lib/lang/fr/index.js +2 -27
  65. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  66. package/lib/services/maia/Agents/connectors.js +1 -3
  67. package/lib/services/maia/Chats/getChatsByUserId.js +6 -5
  68. package/lib/store/sessions/sessionStreamManager.js +55 -51
  69. package/lib/store/useChatsStore.js +7 -6
  70. package/lib/styles/cascade.js +3 -29
  71. package/lib/styles/transitions.js +1 -3
  72. package/lib/types/global.d.js +1 -1
  73. package/lib/utils/hoursPlannerQuickActionType.js +1 -116
  74. package/lib/utils/imagePreprocessor.js +3 -14
  75. package/lib/utils/navigateContextEntity.js +2 -2
  76. package/lib/utils/openTaskInCorPanel.js +2 -2
  77. package/lib/utils/streamActivityMessages.helpers.js +4 -5
  78. package/lib/utils/streamActivityMessages.js +20 -32
  79. package/package.json +1 -1
  80. package/lib/components/atoms/ActionableButton.spec.js +0 -111
  81. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.spec.js +0 -52
  82. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.spec.js +0 -11
  83. package/lib/components/atoms/ApprovalBox/ApprovalBox.helpers.spec.js +0 -63
  84. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -183
  85. package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +0 -123
  86. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +0 -139
  87. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +0 -385
  88. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +0 -78
  89. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +0 -94
  90. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +0 -396
  91. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +0 -80
  92. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +0 -526
  93. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +0 -169
  94. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +0 -11
  95. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +0 -77
  96. package/lib/components/atoms/Backdrop/Backdrop.spec.js +0 -28
  97. package/lib/components/atoms/CardMenu/CardMenu.spec.js +0 -56
  98. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +0 -67
  99. package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
  100. package/lib/components/atoms/Chip/Chip.spec.js +0 -82
  101. package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +0 -26
  102. package/lib/components/atoms/ClientSelector/ClientSelector.helpers.spec.js +0 -45
  103. package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +0 -133
  104. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.spec.js +0 -107
  105. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
  106. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +0 -46
  107. package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +0 -109
  108. package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +0 -81
  109. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +0 -92
  110. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +0 -319
  111. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +0 -107
  112. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +0 -136
  113. package/lib/components/atoms/CopyToClipboard.spec.js +0 -74
  114. package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +0 -76
  115. package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +0 -86
  116. package/lib/components/atoms/Expand/Expand.spec.js +0 -57
  117. package/lib/components/atoms/Fade/Fade.spec.js +0 -66
  118. package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +0 -75
  119. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +0 -104
  120. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +0 -91
  121. package/lib/components/atoms/HelpButton.spec.js +0 -87
  122. package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +0 -96
  123. package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +0 -54
  124. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +0 -21
  125. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +0 -20
  126. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +0 -26
  127. package/lib/components/atoms/LoadingText/LoadingText.spec.js +0 -25
  128. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
  129. package/lib/components/atoms/MAIAError/MAIAError.spec.js +0 -27
  130. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.spec.js +0 -113
  131. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +0 -381
  132. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -719
  133. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +0 -92
  134. package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +0 -193
  135. package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +0 -32
  136. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +0 -64
  137. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +0 -43
  138. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +0 -114
  139. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +0 -51
  140. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +0 -48
  141. package/lib/components/atoms/ModalProject/ModalProject.spec.js +0 -66
  142. package/lib/components/atoms/NextPageLoader.spec.js +0 -37
  143. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +0 -20
  144. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +0 -35
  145. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +0 -47
  146. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +0 -146
  147. package/lib/components/atoms/PrimaryButton.spec.js +0 -42
  148. package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +0 -69
  149. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
  150. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
  151. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -170
  152. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +0 -199
  153. package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +0 -70
  154. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -120
  155. package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +0 -8
  156. package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +0 -31
  157. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
  158. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
  159. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.js +0 -29
  160. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.spec.js +0 -38
  161. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +0 -16
  162. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
  163. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +0 -24
  164. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.spec.js +0 -71
  165. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -120
  166. package/lib/components/atoms/Switch/Switch.spec.js +0 -41
  167. package/lib/components/atoms/TextArea/CustomTextArea.spec.js +0 -52
  168. package/lib/components/atoms/TextArea/TextArea.helpers.spec.js +0 -25
  169. package/lib/components/atoms/TextArea/TextArea.spec.js +0 -126
  170. package/lib/components/atoms/ThirdButton.spec.js +0 -29
  171. package/lib/components/atoms/VideoModal/VideoModal.spec.js +0 -68
  172. package/lib/components/atoms/WithAppCfg.spec.js +0 -82
  173. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +0 -53
  174. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -742
  175. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +0 -107
  176. package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +0 -256
  177. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +0 -175
  178. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +0 -318
  179. package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +0 -50
  180. package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +0 -94
  181. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
  182. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
  183. package/lib/components/molecules/AgentInputBlock/index.js +0 -5
  184. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
  185. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
  186. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
  187. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
  188. package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
  189. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +0 -66
  190. package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +0 -145
  191. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +0 -204
  192. package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.spec.js +0 -622
  193. package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -264
  194. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +0 -86
  195. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
  196. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +0 -742
  197. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -541
  198. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
  199. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -1394
  200. package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +0 -1401
  201. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +0 -33
  202. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +0 -116
  203. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +0 -134
  204. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +0 -142
  205. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +0 -241
  206. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.js +0 -69
  207. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.spec.js +0 -144
  208. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentDropdown.js +0 -95
  209. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentSelector.js +0 -174
  210. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.js +0 -99
  211. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.spec.js +0 -65
  212. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
  213. package/lib/components/molecules/ChatAIModal/constants.spec.js +0 -16
  214. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +0 -22
  215. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +0 -67
  216. package/lib/components/molecules/ChatAIModal/layout.spec.js +0 -72
  217. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.spec.js +0 -93
  218. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +0 -297
  219. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.spec.js +0 -62
  220. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -221
  221. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +0 -66
  222. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -369
  223. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +0 -10
  224. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +0 -104
  225. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +0 -139
  226. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
  227. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
  228. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +0 -126
  229. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +0 -115
  230. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +0 -79
  231. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +0 -37
  232. package/lib/components/molecules/Sidebar/Sidebar.helpers.spec.js +0 -119
  233. package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -464
  234. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +0 -1067
  235. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -1236
  236. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +0 -112
  237. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.spec.js +0 -77
  238. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -503
  239. package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
  240. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -525
  241. package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -246
  242. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  243. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
  244. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -291
  245. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
  246. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -284
  247. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -343
  248. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -197
  249. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -94
  250. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -69
  251. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
  252. package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
  253. package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
  254. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  255. package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +0 -53
  256. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
  257. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
  258. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
  259. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +0 -49
  260. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +0 -67
  261. package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +0 -117
  262. package/lib/components/organisms/SnackBar/Snackbar.spec.js +0 -66
  263. package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +0 -19
  264. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +0 -52
  265. package/lib/constants/formatExtensions.spec.js +0 -15
  266. package/lib/constants/maiaExternalConnectorsAccess.spec.js +0 -29
  267. package/lib/constants/maiaFeatureAccess.spec.js +0 -30
  268. package/lib/constants/maiaHourAgentAccess.spec.js +0 -30
  269. package/lib/constants/maiaTaskPanelAccess.spec.js +0 -41
  270. package/lib/constants/permissions/clientRoleAccess.spec.js +0 -65
  271. package/lib/constants/permissions/utils.spec.js +0 -128
  272. package/lib/constants/plannerSyncEvents.spec.js +0 -31
  273. package/lib/constants/taskUrls.spec.js +0 -9
  274. package/lib/dev/DevMaiaPage.js +0 -30
  275. package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
  276. package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
  277. package/lib/hooks/useAccessClient/useAccessClient.spec.js +0 -149
  278. package/lib/hooks/useAgentModel/useAgentModel.spec.js +0 -83
  279. package/lib/hooks/useAgentModel/useCreateAgent.helpers.spec.js +0 -268
  280. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -314
  281. package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +0 -183
  282. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -374
  283. package/lib/hooks/useAgentSuggestions.spec.js +0 -89
  284. package/lib/hooks/useCaretPosition.spec.js +0 -58
  285. package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +0 -2027
  286. package/lib/hooks/useChatManager/useChatManager.spec.js +0 -2409
  287. package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +0 -491
  288. package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -729
  289. package/lib/hooks/useChats/useChats.spec.js +0 -208
  290. package/lib/hooks/useClientSearch.helpers.spec.js +0 -52
  291. package/lib/hooks/useClientSearch.spec.js +0 -86
  292. package/lib/hooks/useContextMentions.helpers.spec.js +0 -267
  293. package/lib/hooks/useContextMentions.spec.js +0 -338
  294. package/lib/hooks/useContextPinPopover.helpers.spec.js +0 -183
  295. package/lib/hooks/useContextPinPopover.spec.js +0 -159
  296. package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
  297. package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
  298. package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.spec.js +0 -257
  299. package/lib/hooks/useDebounce.spec.js +0 -42
  300. package/lib/hooks/useEntitySearch.helpers.spec.js +0 -723
  301. package/lib/hooks/useEntitySearch.spec.js +0 -718
  302. package/lib/hooks/useEvent.spec.js +0 -45
  303. package/lib/hooks/useFrequentlyAskedQuestions.spec.js +0 -222
  304. package/lib/hooks/useFrequentlyUsedActions.spec.js +0 -293
  305. package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
  306. package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +0 -122
  307. package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +0 -148
  308. package/lib/hooks/useKnowledge/saveKnowledge.spec.js +0 -104
  309. package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +0 -178
  310. package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
  311. package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
  312. package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
  313. package/lib/hooks/useMentionPopover.helpers.spec.js +0 -100
  314. package/lib/hooks/useMentionPopover.spec.js +0 -392
  315. package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +0 -176
  316. package/lib/hooks/useMinimizedPillBottomOffset.spec.js +0 -89
  317. package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
  318. package/lib/hooks/useModal/useModal.spec.js +0 -73
  319. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.spec.js +0 -138
  320. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.spec.js +0 -417
  321. package/lib/hooks/useProjectSearch.helpers.spec.js +0 -89
  322. package/lib/hooks/useProjectSearch.spec.js +0 -91
  323. package/lib/hooks/useProjectSummary.spec.js +0 -193
  324. package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +0 -151
  325. package/lib/hooks/useProjectSummaryConfig.spec.js +0 -133
  326. package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +0 -112
  327. package/lib/hooks/useRecentClientsSearch.helpers.spec.js +0 -33
  328. package/lib/hooks/useRecentClientsSearch.spec.js +0 -85
  329. package/lib/hooks/useRecentContexts.spec.js +0 -139
  330. package/lib/hooks/useResize.spec.js +0 -37
  331. package/lib/hooks/useSkillsCatalog.spec.js +0 -88
  332. package/lib/hooks/useSlashCommands.spec.js +0 -139
  333. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +0 -101
  334. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
  335. package/lib/hooks/useStreamResponse.spec.js +0 -199
  336. package/lib/hooks/useT.spec.js +0 -20
  337. package/lib/hooks/useToggle.spec.js +0 -33
  338. package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +0 -171
  339. package/lib/services/appcues.spec.js +0 -37
  340. package/lib/services/maia/Access/updateAccess.spec.js +0 -137
  341. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -121
  342. package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -91
  343. package/lib/services/maia/Agents/connectors.spec.js +0 -496
  344. package/lib/services/maia/Agents/createAgent.spec.js +0 -55
  345. package/lib/services/maia/Agents/deleteAgent.spec.js +0 -57
  346. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
  347. package/lib/services/maia/Agents/getAgentById.spec.js +0 -190
  348. package/lib/services/maia/Agents/getAgentModels.spec.js +0 -190
  349. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -89
  350. package/lib/services/maia/Agents/getAgents.helpers.spec.js +0 -325
  351. package/lib/services/maia/Agents/getAgents.spec.js +0 -1135
  352. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
  353. package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -59
  354. package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
  355. package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
  356. package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
  357. package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
  358. package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
  359. package/lib/services/maia/Chats/patchChat.spec.js +0 -41
  360. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
  361. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
  362. package/lib/services/maia/Knowledge/delete.spec.js +0 -45
  363. package/lib/services/maia/Knowledge/download.spec.js +0 -78
  364. package/lib/services/maia/Knowledge/save.spec.js +0 -58
  365. package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +0 -225
  366. package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -181
  367. package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
  368. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -103
  369. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
  370. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
  371. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
  372. package/lib/services/maia/Skills/createSkill.spec.js +0 -68
  373. package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
  374. package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
  375. package/lib/services/maia/Skills/getSkills.spec.js +0 -152
  376. package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
  377. package/lib/services/maia/client.spec.js +0 -56
  378. package/lib/services/utils/fetchCOR.spec.js +0 -211
  379. package/lib/services/utils/getCookie.spec.js +0 -20
  380. package/lib/services/utils/mapChatMessages.helpers.spec.js +0 -336
  381. package/lib/services/utils/mapChatMessages.spec.js +0 -254
  382. package/lib/store/chatsSidebarOptimistic.spec.js +0 -145
  383. package/lib/store/maiaLastChatPersistence.spec.js +0 -22
  384. package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
  385. package/lib/store/sessions/sessionNotificationSound.spec.js +0 -145
  386. package/lib/store/sessions/sessionNotifications.helpers.spec.js +0 -63
  387. package/lib/store/sessions/sessionNotifications.spec.js +0 -106
  388. package/lib/store/sessions/sessionStreamManager.helpers.spec.js +0 -177
  389. package/lib/store/sessions/sessionStreamManager.spec.js +0 -939
  390. package/lib/store/sessions/sessions.types.spec.js +0 -16
  391. package/lib/store/sessions/useSessionsStore.spec.js +0 -135
  392. package/lib/store/useChatsStore.spec.js +0 -619
  393. package/lib/store/useFaqsStore.spec.js +0 -57
  394. package/lib/utils/actionCategoryMap.spec.js +0 -18
  395. package/lib/utils/agentDisplayName.spec.js +0 -48
  396. package/lib/utils/autoApproveStorage.spec.js +0 -25
  397. package/lib/utils/chatInputFiles.spec.js +0 -39
  398. package/lib/utils/contextMentionIcons.spec.js +0 -41
  399. package/lib/utils/contextMentionLabel.spec.js +0 -13
  400. package/lib/utils/contextMentionTriggers.spec.js +0 -44
  401. package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
  402. package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
  403. package/lib/utils/entityLinkRender.spec.js +0 -72
  404. package/lib/utils/fileDownloadHelper.spec.js +0 -67
  405. package/lib/utils/formatQuickActionMessage.spec.js +0 -27
  406. package/lib/utils/formatUnreadCount.spec.js +0 -12
  407. package/lib/utils/getUnitFileSize.spec.js +0 -18
  408. package/lib/utils/hitlAnalytics.spec.js +0 -136
  409. package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -124
  410. package/lib/utils/imagePreprocessor.helpers.spec.js +0 -28
  411. package/lib/utils/imagePreprocessor.spec.js +0 -112
  412. package/lib/utils/maiaPageRoute.spec.js +0 -23
  413. package/lib/utils/mapBackendLang.spec.js +0 -19
  414. package/lib/utils/navigateContextEntity.spec.js +0 -50
  415. package/lib/utils/normalizeAgentConnectors.spec.js +0 -98
  416. package/lib/utils/openTaskInCorPanel.spec.js +0 -43
  417. package/lib/utils/orchestratorSubagents.spec.js +0 -32
  418. package/lib/utils/reasoningMappers.spec.js +0 -103
  419. package/lib/utils/recentContextsHomeLimit.spec.js +0 -32
  420. package/lib/utils/renderContextMentions.helpers.spec.js +0 -87
  421. package/lib/utils/renderContextMentions.spec.js +0 -268
  422. package/lib/utils/retryCompletion.spec.js +0 -181
  423. package/lib/utils/skillContentSize.spec.js +0 -13
  424. package/lib/utils/slashCommandMarker.spec.js +0 -43
  425. package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
  426. package/lib/utils/sseStreamContent.spec.js +0 -31
  427. package/lib/utils/streamActivityMessages.helpers.spec.js +0 -84
  428. package/lib/utils/streamActivityMessages.spec.js +0 -336
  429. package/lib/utils/validateTrimmedFields.spec.js +0 -26
@@ -237,20 +237,15 @@ export var Sidebar = function Sidebar(_ref3) {
237
237
  isLegacyContextSession = _ref3$isLegacyContext === void 0 ? false : _ref3$isLegacyContext,
238
238
  _ref3$initialOpen = _ref3.initialOpen,
239
239
  initialOpen = _ref3$initialOpen === void 0 ? false : _ref3$initialOpen,
240
- onOpenChange = _ref3.onOpenChange,
241
- open = _ref3.open,
242
- _ref3$conversationsOn = _ref3.conversationsOnly,
243
- conversationsOnly = _ref3$conversationsOn === void 0 ? false : _ref3$conversationsOn,
244
- resetSelectedChatRef = _ref3.resetSelectedChatRef;
240
+ onOpenChange = _ref3.onOpenChange;
245
241
  var _useT2 = useT(),
246
242
  t = _useT2.t,
247
243
  i18n = _useT2.i18n;
248
244
  var tooltipZIndex = useMaiaTaskPanelZIndex(1500, 'overlay');
249
245
  var _useState3 = useState(initialOpen),
250
246
  _useState4 = _slicedToArray(_useState3, 2),
251
- uncontrolledOpen = _useState4[0],
252
- setUncontrolledOpen = _useState4[1];
253
- var isOpen = open !== null && open !== void 0 ? open : uncontrolledOpen;
247
+ isOpen = _useState4[0],
248
+ setIsOpen = _useState4[1];
254
249
  var _useState5 = useState(null),
255
250
  _useState6 = _slicedToArray(_useState5, 2),
256
251
  isOpenModal = _useState6[0],
@@ -258,10 +253,11 @@ export var Sidebar = function Sidebar(_ref3) {
258
253
  var activeChatId = useChatsStore(function (state) {
259
254
  return state.activeChatId;
260
255
  });
261
- var setActiveChatId = useChatsStore(function (state) {
262
- return state.setActiveChatId;
256
+ var chatsFetchedForUserRef = useRef(null);
257
+ var prevAgentIdRef = useRef(undefined);
258
+ var resetChatsStore = useChatsStore(function (state) {
259
+ return state.reset;
263
260
  });
264
- var chatsFetchedRef = useRef(false);
265
261
  var chatsContainerRef = useRef(null);
266
262
  var user = useUser();
267
263
  var eventAmplitude = useEvent();
@@ -280,22 +276,12 @@ export var Sidebar = function Sidebar(_ref3) {
280
276
  updateChat = _useChats.updateChat,
281
277
  fetchChats = _useChats.fetchChats,
282
278
  limit = _useChats.limit,
283
- offset = _useChats.offset,
284
279
  hasMoreChats = _useChats.hasMoreChats,
285
280
  loadMoreChats = _useChats.loadMoreChats,
286
281
  isLoadingMoreChats = _useChats.isLoadingMoreChats,
287
282
  setUnreadCount = _useChats.setUnreadCount,
288
283
  setChatReadState = _useChats.setChatReadState;
289
284
  var unreadSubscribedRef = useRef(false);
290
- useEffect(function () {
291
- if (!resetSelectedChatRef) return undefined;
292
- resetSelectedChatRef.current = function () {
293
- return setActiveChatId(null);
294
- };
295
- return function () {
296
- resetSelectedChatRef.current = null;
297
- };
298
- }, [resetSelectedChatRef, setActiveChatId]);
299
285
  useEffect(function () {
300
286
  if (!(user !== null && user !== void 0 && user.id) || typeof $_sc === 'undefined' || !$_sc) return undefined;
301
287
  var channel = "sessions.unread:".concat(user.id);
@@ -326,7 +312,7 @@ export var Sidebar = function Sidebar(_ref3) {
326
312
  var canViewSkills = canAccessToSkills(user) && isSkillsPilotCompany(user === null || user === void 0 ? void 0 : user.company_id);
327
313
  var showMarketplaceSidebarButton = !!canCreateAgents && hasMultiAgentsFeatureAccess;
328
314
  var agentNavButtonCount = countSidebarAgentNavButtons(showMarketplaceSidebarButton, canViewAgents, canViewSkills);
329
- var showAgentsNavBlock = !conversationsOnly && (showMarketplaceSidebarButton || canViewAgents || canViewSkills);
315
+ var showAgentsNavBlock = showMarketplaceSidebarButton || canViewAgents || canViewSkills;
330
316
  var myAgentsSidebarTrackedRef = useRef(false);
331
317
  useEffect(function () {
332
318
  if (!canViewAgents || myAgentsSidebarTrackedRef.current) return;
@@ -381,11 +367,11 @@ export var Sidebar = function Sidebar(_ref3) {
381
367
  eventAmplitude(EVENTS.aiChatSidebar, {
382
368
  action: isOpen ? 'close' : 'open'
383
369
  });
384
- var next = !isOpen;
385
- if (open === undefined) {
386
- setUncontrolledOpen(next);
387
- }
388
- onOpenChange === null || onOpenChange === void 0 || onOpenChange(next);
370
+ setIsOpen(function (prev) {
371
+ var next = !prev;
372
+ onOpenChange === null || onOpenChange === void 0 || onOpenChange(next);
373
+ return next;
374
+ });
389
375
  };
390
376
  var handleOpenCreateAgent = /*#__PURE__*/function () {
391
377
  var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
@@ -455,23 +441,28 @@ export var Sidebar = function Sidebar(_ref3) {
455
441
  };
456
442
  }();
457
443
  useEffect(function () {
458
- if (!chatsFetchedRef.current) {
459
- chatsFetchedRef.current = true;
460
- fetchChats({
461
- limit: limit,
462
- offset: offset
463
- });
464
- return;
444
+ var _selectedAgent$id;
445
+ if (!(user !== null && user !== void 0 && user.id)) return;
446
+ var userId = user.id;
447
+ var userChanged = chatsFetchedForUserRef.current != null && chatsFetchedForUserRef.current !== userId;
448
+ var agentId = (_selectedAgent$id = selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) !== null && _selectedAgent$id !== void 0 ? _selectedAgent$id : null;
449
+ var agentJustBecameAvailable = prevAgentIdRef.current === null && agentId != null;
450
+ prevAgentIdRef.current = agentId;
451
+ if (userChanged) {
452
+ resetChatsStore();
465
453
  }
466
- // Refetch solicitado por prop: se ejecuta aunque el sidebar esté colapsado.
454
+ var shouldFetch = chatsFetchedForUserRef.current !== userId || refetchChats || agentJustBecameAvailable;
455
+ if (!shouldFetch) return;
456
+ chatsFetchedForUserRef.current = userId;
457
+ // Initial/refresh always starts at page 1 (never reuse loadMore offset).
458
+ fetchChats({
459
+ limit: limit,
460
+ offset: 0
461
+ });
467
462
  if (refetchChats) {
468
- fetchChats({
469
- limit: limit,
470
- offset: offset
471
- });
472
463
  handleSetRefetchChats(false);
473
464
  }
474
- }, [refetchChats, handleSetRefetchChats, fetchChats, limit, offset]);
465
+ }, [user === null || user === void 0 ? void 0 : user.id, selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id, refetchChats, handleSetRefetchChats, fetchChats, limit, resetChatsStore]);
475
466
  useEffect(function () {
476
467
  var handleScroll = function handleScroll() {
477
468
  if (!chatsContainerRef.current || !hasMoreChats || isLoadingMoreChats || hasError) {
@@ -509,7 +500,9 @@ export var Sidebar = function Sidebar(_ref3) {
509
500
  useEffect(function () {
510
501
  // Al crear/actualizar una conversación refrescamos la lista aunque el sidebar esté colapsado.
511
502
  var handleRefetchSession = function handleRefetchSession() {
512
- chatsFetchedRef.current = true;
503
+ if (user !== null && user !== void 0 && user.id) {
504
+ chatsFetchedForUserRef.current = user.id;
505
+ }
513
506
  fetchChats({
514
507
  limit: 20,
515
508
  offset: 0,
@@ -520,7 +513,7 @@ export var Sidebar = function Sidebar(_ref3) {
520
513
  return function () {
521
514
  document.removeEventListener('refetch-session', handleRefetchSession);
522
515
  };
523
- }, [fetchChats]);
516
+ }, [fetchChats, user === null || user === void 0 ? void 0 : user.id]);
524
517
  var isAgentsHubSection = resolveAgentsHubSection(showNewChat, agentsNavActive);
525
518
  var showNewChatButton = resolveShowNewChatButton({
526
519
  isAgentsHubSection: isAgentsHubSection,
@@ -531,18 +524,6 @@ export var Sidebar = function Sidebar(_ref3) {
531
524
  userCanViewAgents: Boolean(userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.view),
532
525
  selectedAgent: selectedAgent
533
526
  });
534
- var newChatButton = /*#__PURE__*/_jsx(Tooltip, {
535
- title: t('conversations.newChat'),
536
- zIndex: tooltipZIndex,
537
- children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
538
- onClick: handleNewChat,
539
- "aria-label": t('conversations.newChat'),
540
- children: /*#__PURE__*/_jsx(NewChat, {
541
- width: 16,
542
- height: 16
543
- })
544
- })
545
- });
546
527
  return /*#__PURE__*/_jsxs(SCSSidebarRoot, {
547
528
  $isOpen: isOpen,
548
529
  children: [/*#__PURE__*/_jsxs(SCSSidebarToolbar, {
@@ -563,7 +544,18 @@ export var Sidebar = function Sidebar(_ref3) {
563
544
  height: 20
564
545
  })
565
546
  })
566
- }), showNewChatButton ? newChatButton : null, !isOpen && showAgentsNavBlock ? /*#__PURE__*/_jsxs(_Fragment, {
547
+ }), showNewChatButton ? /*#__PURE__*/_jsx(Tooltip, {
548
+ title: t('conversations.newChat'),
549
+ zIndex: tooltipZIndex,
550
+ children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
551
+ onClick: handleNewChat,
552
+ "aria-label": t('conversations.newChat'),
553
+ children: /*#__PURE__*/_jsx(NewChat, {
554
+ width: 16,
555
+ height: 16
556
+ })
557
+ })
558
+ }) : null, !isOpen && showAgentsNavBlock ? /*#__PURE__*/_jsxs(_Fragment, {
567
559
  children: [/*#__PURE__*/_jsx(SCSSidebarCollapsedDivider, {}), showMarketplaceSidebarButton ? /*#__PURE__*/_jsx(Tooltip, {
568
560
  title: t('conversations.maiakerNav'),
569
561
  zIndex: tooltipZIndex,
@@ -660,7 +652,7 @@ export var Sidebar = function Sidebar(_ref3) {
660
652
  ref: chatsContainerRef,
661
653
  $hasChats: chats.length > 0,
662
654
  $offsetVariant: hasError ? 'error' : 'default',
663
- $agentNavButtonCount: showAgentsNavBlock ? agentNavButtonCount : 0,
655
+ $agentNavButtonCount: agentNavButtonCount,
664
656
  children: hasError && !chats.length ? /*#__PURE__*/_jsxs(SCSSidebarErrorStateColumn, {
665
657
  children: [/*#__PURE__*/_jsx(SCSSidebarErrorStateTop, {
666
658
  children: /*#__PURE__*/_jsx(ErrorState, {})
@@ -724,4 +716,4 @@ export var Sidebar = function Sidebar(_ref3) {
724
716
  })]
725
717
  });
726
718
  };
727
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJDaGV2cm9uRG91YmxlTGVmdCIsIkhpc3RvcnkiLCJDVUJ1dHRvbiIsIk1lbnVEb3RzIiwiUGVuY2lsIiwiVHJhc2giLCJUb29sdGlwIiwiRW1wdHlIaXN0b3J5SWNvbiIsInVzZVJlc2l6ZUxpc3RlbmVyIiwidXNlQ2hhdHMiLCJTaWRlYmFyQ2hhdHNTa2VsZXRvbiIsIkVycm9yU3RhdGUiLCJNQUlBSWNvbiIsIk1haWFTdG9yZUljb24iLCJNeUFnZW50c05hdkljb24iLCJTa2lsbHNOYXZJY29uIiwiTmV3Q2hhdCIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlVCIsIk9wdGlvbkl0ZW0iLCJFZGl0UXVlc3Rpb25Nb2RhbCIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJFcnJvckljb24iLCJ1c2VVc2VyIiwiRmVlZGJhY2tCdXR0b24iLCJ1c2VHbG9iYWxDb250ZXh0IiwiZmV0Y2hNYWlhIiwiY2FuQWNjZXNzVG9Ta2lsbHMiLCJpc1NraWxsc1BpbG90Q29tcGFueSIsIm1hcENPUkxhbmciLCJmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMiLCJnZXRBZ2VudERpc3BsYXlOYW1lIiwiaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQiLCJBUFBDVUVTX0VWRU5UUyIsIkFQUENVRVNfU0VMRUNUT1JTIiwidHJhY2tBcHBjdWVzRXZlbnQiLCJTZXNzaW9uR2VuZXJhdGluZ0RvdCIsInVzZUlzU2Vzc2lvbkdlbmVyYXRpbmciLCJ1c2VTZXNzaW9uTWV0YSIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VDaGF0c1N0b3JlIiwiU0NMSENXcmFwcGVyIiwiU0NMSENXcmFwcGVyQWdlbnQiLCJTQ0xIQ1dyYXBwZXJBZ2VudFRleHQiLCJTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zIiwiU0NMSENXcmFwcGVyQ29udGVudCIsIlNDTEhDV3JhcHBlclRpdGxlIiwiU0NMSENXcmFwcGVyVGl0bGVSb3ciLCJTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIiwiU0NTV3JhcHBlck5ld0NoYXRJY29uIiwiU0NTV3JhcHBlckFnZW50c05hdkljb24iLCJTQ1NTaWRlYmFyUm9vdCIsIlNDU1NpZGViYXJUb29sYmFyIiwiU0NTU2lkZWJhckJvZHkiLCJTQ1NTaWRlYmFyT3BlblBhbmVsIiwiU0NTU2lkZWJhckFnZW50c0Jsb2NrIiwiU0NTU2lkZWJhckFnZW50c0FjdGlvbnMiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbiIsIlNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3IiwiU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nIiwiU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nUm93IiwiU0NTU2lkZWJhckNoYXRzU2Nyb2xsIiwiU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4iLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcCIsIlNDU1NpZGViYXJFcnJvckJhbm5lciIsIlNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwIiwiU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZSIsIlNDU1NpZGViYXJMb2FkaW5nQXJlYSIsIlNDU1NpZGViYXJMb2FkTW9yZVJvdyIsIlNDU1NpZGViYXJFbXB0eUNoYXRzIiwiU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0IiwiU0NTU2lkZWJhckNoYXRzRm9vdGVyIiwiU0NTU2lkZWJhckZvb3RlckFjdGlvbnMiLCJTQ1NTaWRlYmFyQ29sbGFwc2VkRGl2aWRlciIsImNvdW50U2lkZWJhckFnZW50TmF2QnV0dG9ucyIsImlzQ2hhdExpc3RTY3JvbGxlZFRvQm90dG9tIiwiaXNDaGF0VW5yZWFkSW5kaWNhdG9yIiwicmVzb2x2ZUFnZW50c0h1YlNlY3Rpb24iLCJyZXNvbHZlU2hvd05ld0NoYXRCdXR0b24iLCJyZXNvbHZlU2lkZWJhckNoYXRBZ2VudExhYmVsIiwicmVzb2x2ZVRvZ2dsZUNoYXRNb2RhbElkIiwic2hvdWxkQ2xvc2VNb2RhbE9uT3V0c2lkZUNsaWNrIiwic2hvdWxkVXNlTWFpYUljb25Gb3JDaGF0QWdlbnQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJhY3Rpb25zIiwiZWRpdCIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsImRlbGV0ZSIsIkxpc3RIaXN0b3J5Q2hhdCIsIl9yZWYiLCJjaGF0Iiwib25DbGljayIsImlzTW9kYWxPcGVuIiwib25PcGVuTW9kYWwiLCJvbkNsb3NlTW9kYWwiLCJoYW5kbGVycyIsImlzU2VsZWN0ZWQiLCJpbmRleCIsInRvb2x0aXBaSW5kZXgiLCJ0ZXh0UmVmIiwiYWdlbnRSZWYiLCJkaXNwbGF5VGl0bGUiLCJ0aXRsZSIsImRpc3BsYXlBZ2VudCIsImFnZW50VHlwZSIsImFnZW50IiwiY29udGV4dE5hbWUiLCJwcm9qZWN0TmFtZSIsImNsaWVudE5hbWUiLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJzaG93VG9vbHRpcCIsIl91c2VSZXNpemVMaXN0ZW5lcjIiLCJzaG93VG9vbHRpcEFnZW50IiwiX3VzZVQiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiYWN0aW9uIiwic2V0QWN0aW9uIiwiaXNHZW5lcmF0aW5nIiwic2Vzc2lvbkV4dGVybmFsSWQiLCJzZXNzaW9uTWV0YSIsImlzVW5yZWFkIiwiaXNSZWFkIiwic2lkZWJhckFnZW50TGFiZWwiLCJhZ2VudE5hbWUiLCJtZW51SXRlbXMiLCJsYWJlbCIsIm9uQ2xpY2tJdGVtIiwiY2hhdElkIiwiSWNvbiIsImV2ZW50S2V5IiwicG1BaU1lbnVFZGl0IiwicG1BaU1lbnVEZWxldGUiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdERhdGEiLCJoYW5kbGVVcGRhdGVDaGF0IiwiaGFuZGxlRGVsZXRlQ2hhdCIsImNoaWxkcmVuIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsIiRpbmRleCIsImFyaWFMYWJlbCIsImlzV3JpdGluZyIsImFuaW1hdGVkIiwiekluZGV4IiwicmVmIiwiJHVucmVhZCIsImNvbmNhdCIsIndpZHRoIiwiaGVpZ2h0Iiwic3R5bGUiLCJmb250U2l6ZSIsImVtb2ppIiwiaWNvbk9ubHkiLCJzaXplIiwidmFyaWFudCIsImV2ZW50IiwiaWQiLCJwb3NpdGlvbiIsInRvcCIsInJpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJib3JkZXJSYWRpdXMiLCJib3JkZXIiLCJtaW5XaWR0aCIsIm1hcCIsIl9yZWYyIiwib25DbG9zZSIsImhhbmRsZVNldElzT3Blbk1vZGFsIiwiU2lkZWJhciIsIl9yZWYzIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJvbkdvVG9DaGF0IiwiX3JlZjMkb25FcnJvciIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZVN0YXJ0TmV3Q2hhdCIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZU9wZW5Ta2lsbHMiLCJvbk9wZW5NYWlha2VyQ3JlYXRvciIsInNob3dOZXdDaGF0IiwicmVmZXRjaENoYXRzIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiaGFzRXJyb3IiLCJfcmVmMyRhZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNOYXZBY3RpdmUiLCJfcmVmMyRpc0xlZ2FjeUNvbnRleHQiLCJpc0xlZ2FjeUNvbnRleHRTZXNzaW9uIiwiX3JlZjMkaW5pdGlhbE9wZW4iLCJpbml0aWFsT3BlbiIsIm9uT3BlbkNoYW5nZSIsIm9wZW4iLCJfcmVmMyRjb252ZXJzYXRpb25zT24iLCJjb252ZXJzYXRpb25zT25seSIsInJlc2V0U2VsZWN0ZWRDaGF0UmVmIiwiX3VzZVQyIiwiaTE4biIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwidW5jb250cm9sbGVkT3BlbiIsInNldFVuY29udHJvbGxlZE9wZW4iLCJpc09wZW4iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3Blbk1vZGFsIiwic2V0SXNPcGVuTW9kYWwiLCJhY3RpdmVDaGF0SWQiLCJzdGF0ZSIsInNldEFjdGl2ZUNoYXRJZCIsImNoYXRzRmV0Y2hlZFJlZiIsImNoYXRzQ29udGFpbmVyUmVmIiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RlZEFnZW50Iiwic2VsZWN0QWdlbnQiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0VGFzayIsIl91c2VDaGF0cyIsImxvYWRpbmdDaGF0cyIsImNoYXRzIiwiZGVsZXRlQ2hhdCIsInVwZGF0ZUNoYXQiLCJmZXRjaENoYXRzIiwibGltaXQiLCJvZmZzZXQiLCJoYXNNb3JlQ2hhdHMiLCJsb2FkTW9yZUNoYXRzIiwiaXNMb2FkaW5nTW9yZUNoYXRzIiwic2V0VW5yZWFkQ291bnQiLCJzZXRDaGF0UmVhZFN0YXRlIiwidW5yZWFkU3Vic2NyaWJlZFJlZiIsInVuZGVmaW5lZCIsImN1cnJlbnQiLCIkX3NjIiwiY2hhbm5lbCIsImhhbmRsZVVucmVhZEV2ZW50IiwiX3JlZjQiLCJtb2RlbERhdGEiLCJtb2RlbF9kYXRhIiwidW5yZWFkX2NvdW50Iiwic2Vzc2lvbl9pZCIsImlzX3JlYWQiLCJzdWJzY3JpYmVIYW5kbGVyIiwiXyRfc2MkYWN0aW9uVHlwZSIsIl8kX3NjJGNoYW5uZWxUeXBlIiwidXBkYXRlQ29ubmVjdGlvbk1vZGVsIiwibW9kZWxfaGFzaCIsImFjdGlvblR5cGUiLCJTVUJTQ1JJQkUiLCJjaGFubmVsVHlwZSIsIk1PREVMX0NIQU5ORUwiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNhbkNyZWF0ZUFnZW50cyIsImNyZWF0ZSIsImhhc011bHRpQWdlbnRzRmVhdHVyZUFjY2VzcyIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJjYW5WaWV3QWdlbnRzIiwidmlldyIsImNhblZpZXdTa2lsbHMiLCJjb21wYW55X2lkIiwic2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiIsImFnZW50TmF2QnV0dG9uQ291bnQiLCJzaG93QWdlbnRzTmF2QmxvY2siLCJteUFnZW50c1NpZGViYXJUcmFja2VkUmVmIiwibWFpYVNpZGViYXJNeUFnZW50cyIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlT3Blbk1vZGFsIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZUNsaWNrT3V0c2lkZSIsInRhcmdldCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVUb2dnbGVTaWRlYmFyIiwiYWlDaGF0U2lkZWJhciIsImhhbmRsZU9wZW5DcmVhdGVBZ2VudCIsIl9yZWY2IiwiX2NhbGxlZTIiLCJyZXNwb25zZSIsImRhdGEiLCJtYWlha2VyQWdlbnQiLCJfdCIsIl90MiIsIl9jb250ZXh0MiIsImFicnVwdCIsInBhdGgiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiZmluZCIsImFnZW50SXRlbSIsImhhbmRsZVNjcm9sbCIsIl9jaGF0c0NvbnRhaW5lclJlZiRjdSIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImNvbnRhaW5lciIsImhhbmRsZU5ld0NoYXQiLCJhaVNpZGViYXJOZXdDaGF0IiwiaGFuZGxlUmVmZXRjaFNlc3Npb24iLCJiYWNrZ3JvdW5kIiwiaXNBZ2VudHNIdWJTZWN0aW9uIiwic2hvd05ld0NoYXRCdXR0b24iLCJ1c2VyQ2FuVmlld0FnZW50cyIsIkJvb2xlYW4iLCJuZXdDaGF0QnV0dG9uIiwiJGlzT3BlbiIsImNvbG9yIiwiJGFjdGl2ZSIsImFpQ2hhdE1wT3BlbiIsImFpU2lkZWJhck15QWdlbnRzIiwiYWlTaWRlYmFyTXlTa2lsbHMiLCJ0eXBlIiwiJGhhc0NoYXRzIiwibGVuZ3RoIiwiJG9mZnNldFZhcmlhbnQiLCIkYWdlbnROYXZCdXR0b25Db3VudCIsImNvdW50IiwiJGp1c3RpZnlCZXR3ZWVuIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NpZGViYXIvU2lkZWJhci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSwgdHlwZSBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDaGV2cm9uRG91YmxlTGVmdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3VibGVMZWZ0J1xuaW1wb3J0IHsgSGlzdG9yeSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0hpc3RvcnknXG5pbXBvcnQgeyBDVUJ1dHRvbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2J1dHRvbi9saWIvY29tcG9uZW50cy9DVUJ1dHRvbidcbmltcG9ydCB7IE1lbnVEb3RzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTWVudURvdHMnXG5pbXBvcnQgeyBQZW5jaWwgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9QZW5jaWwnXG5pbXBvcnQgeyBUcmFzaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1RyYXNoJ1xuXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7IEVtcHR5SGlzdG9yeUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9FbXB0eUhpc3RvcnknXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7IHVzZUNoYXRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2hhdHMnXG5pbXBvcnQgeyBTaWRlYmFyQ2hhdHNTa2VsZXRvbiB9IGZyb20gJy4vU2lkZWJhci5za2VsZXRvbidcbmltcG9ydCB7IEVycm9yU3RhdGUsIE1BSUFJY29uLCBNYWlhU3RvcmVJY29uLCBNeUFnZW50c05hdkljb24sIFNraWxsc05hdkljb24sIE5ld0NoYXQgfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgT3B0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2F0b21zL0NhcmRNZW51L0NhcmRNZW51J1xuaW1wb3J0IHsgRWRpdFF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRWRpdFF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBEZWxldGVRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBFcnJvckljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9FcnJvckljb24nXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IEZlZWRiYWNrQnV0dG9uIH0gZnJvbSAnLi4vLi4vYXRvbXMvRmVlZGJhY2tCdXR0b24nXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgY2FuQWNjZXNzVG9Ta2lsbHMsIGlzU2tpbGxzUGlsb3RDb21wYW55IH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zJ1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgeyBmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZW5kZXJDb250ZXh0TWVudGlvbnMnXG5pbXBvcnQgeyBnZXRBZ2VudERpc3BsYXlOYW1lLCBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBBUFBDVUVTX0VWRU5UUywgQVBQQ1VFU19TRUxFQ1RPUlMsIHRyYWNrQXBwY3Vlc0V2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwY3VlcydcbmltcG9ydCB7IFNlc3Npb25HZW5lcmF0aW5nRG90IH0gZnJvbSAnLi4vLi4vYXRvbXMvU2Vzc2lvbkdlbmVyYXRpbmdEb3QnXG5pbXBvcnQgeyB1c2VJc1Nlc3Npb25HZW5lcmF0aW5nLCB1c2VTZXNzaW9uTWV0YSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25NZXRhJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5pbXBvcnQgeyB1c2VDaGF0c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB7XG4gIFNDTEhDV3JhcHBlcixcbiAgU0NMSENXcmFwcGVyQWdlbnQsXG4gIFNDTEhDV3JhcHBlckFnZW50VGV4dCxcbiAgU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucyxcbiAgU0NMSENXcmFwcGVyQ29udGVudCxcbiAgU0NMSENXcmFwcGVyVGl0bGUsXG4gIFNDTEhDV3JhcHBlclRpdGxlUm93LFxuICBTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uLFxuICBTQ1NXcmFwcGVyTmV3Q2hhdEljb24sXG4gIFNDU1dyYXBwZXJBZ2VudHNOYXZJY29uLFxufSBmcm9tICcuL1NpZGViYXIuc3R5bGVzJ1xuaW1wb3J0IHtcbiAgU0NTU2lkZWJhclJvb3QsXG4gIFNDU1NpZGViYXJUb29sYmFyLFxuICBTQ1NTaWRlYmFyQm9keSxcbiAgU0NTU2lkZWJhck9wZW5QYW5lbCxcbiAgU0NTU2lkZWJhckFnZW50c0Jsb2NrLFxuICBTQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucyxcbiAgU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24sXG4gIFNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwsXG4gIFNDU1NpZGViYXJNYWlha2VyTmF2QmFkZ2VOZXcsXG4gIFNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZyxcbiAgU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nUm93LFxuICBTQ1NTaWRlYmFyQ2hhdHNTY3JvbGwsXG4gIFNDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uLFxuICBTQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcCxcbiAgU0NTU2lkZWJhckVycm9yQmFubmVyLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcCxcbiAgU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZSxcbiAgU0NTU2lkZWJhckxvYWRpbmdBcmVhLFxuICBTQ1NTaWRlYmFyTG9hZE1vcmVSb3csXG4gIFNDU1NpZGViYXJFbXB0eUNoYXRzLFxuICBTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQsXG4gIFNDU1NpZGViYXJDaGF0c0Zvb3RlcixcbiAgU0NTU2lkZWJhckZvb3RlckFjdGlvbnMsXG4gIFNDU1NpZGViYXJDb2xsYXBzZWREaXZpZGVyLFxufSBmcm9tICcuL1NpZGViYXIubGF5b3V0LnN0eWxlcydcbmltcG9ydCB7XG4gIGNvdW50U2lkZWJhckFnZW50TmF2QnV0dG9ucyxcbiAgaXNDaGF0TGlzdFNjcm9sbGVkVG9Cb3R0b20sXG4gIGlzQ2hhdFVucmVhZEluZGljYXRvcixcbiAgcmVzb2x2ZUFnZW50c0h1YlNlY3Rpb24sXG4gIHJlc29sdmVTaG93TmV3Q2hhdEJ1dHRvbixcbiAgcmVzb2x2ZVNpZGViYXJDaGF0QWdlbnRMYWJlbCxcbiAgcmVzb2x2ZVRvZ2dsZUNoYXRNb2RhbElkLFxuICBzaG91bGRDbG9zZU1vZGFsT25PdXRzaWRlQ2xpY2ssXG4gIHNob3VsZFVzZU1haWFJY29uRm9yQ2hhdEFnZW50LFxufSBmcm9tICcuL1NpZGViYXIuaGVscGVycydcblxuY29uc3QgYWN0aW9ucyA9IHtcbiAgZWRpdDogKHByb3BzOiBhbnkpID0+IDxFZGl0UXVlc3Rpb25Nb2RhbCB7Li4ucHJvcHN9IC8+LFxuICBkZWxldGU6IChwcm9wczogYW55KSA9PiA8RGVsZXRlUXVlc3Rpb25Nb2RhbCB7Li4ucHJvcHN9IC8+LFxufVxuXG5jb25zdCBMaXN0SGlzdG9yeUNoYXQgPSAoe1xuICBjaGF0LFxuICBvbkNsaWNrLFxuICBpc01vZGFsT3BlbixcbiAgb25PcGVuTW9kYWwsXG4gIG9uQ2xvc2VNb2RhbCxcbiAgaGFuZGxlcnMsXG4gIGlzU2VsZWN0ZWQsXG4gIGluZGV4LFxuICB0b29sdGlwWkluZGV4LFxufToge1xuICBjaGF0OiBhbnlcbiAgb25DbGljazogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICBpc01vZGFsT3BlbjogYm9vbGVhblxuICBvbk9wZW5Nb2RhbDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZFxuICBoYW5kbGVyczoge1xuICAgIGhhbmRsZURlbGV0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgICBoYW5kbGVVcGRhdGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIH1cbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBpbmRleDogbnVtYmVyXG4gIHRvb2x0aXBaSW5kZXg6IG51bWJlclxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBhZ2VudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgZGlzcGxheVRpdGxlID0gdXNlTWVtbygoKSA9PiBmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMoY2hhdC50aXRsZSksIFtjaGF0LnRpdGxlXSlcbiAgY29uc3QgZGlzcGxheUFnZW50ID0gZ2V0QWdlbnREaXNwbGF5TmFtZShjaGF0LmFnZW50VHlwZSwgY2hhdC5hZ2VudClcbiAgY29uc3QgY29udGV4dE5hbWUgPSBjaGF0LnByb2plY3ROYW1lIHx8IGNoYXQuY2xpZW50TmFtZVxuICBjb25zdCB7IHNob3dUb29sdGlwIH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmLCBbZGlzcGxheVRpdGxlXSlcbiAgY29uc3QgeyBzaG93VG9vbHRpcDogc2hvd1Rvb2x0aXBBZ2VudCB9ID0gdXNlUmVzaXplTGlzdGVuZXIoYWdlbnRSZWYsIFtjaGF0LmFnZW50XSlcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgW2FjdGlvbiwgc2V0QWN0aW9uXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzR2VuZXJhdGluZyA9IHVzZUlzU2Vzc2lvbkdlbmVyYXRpbmcoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgY29uc3Qgc2Vzc2lvbk1ldGEgPSB1c2VTZXNzaW9uTWV0YShjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICBjb25zdCBpc1VucmVhZCA9IGlzQ2hhdFVucmVhZEluZGljYXRvcihjaGF0LmlzUmVhZCwgaXNHZW5lcmF0aW5nKVxuICBjb25zdCBzaWRlYmFyQWdlbnRMYWJlbCA9IHJlc29sdmVTaWRlYmFyQ2hhdEFnZW50TGFiZWwoe1xuICAgIGFnZW50VHlwZTogY2hhdC5hZ2VudFR5cGUsXG4gICAgYWdlbnROYW1lOiBjaGF0LmFnZW50LFxuICAgIHByb2plY3ROYW1lOiBjaGF0LnByb2plY3ROYW1lLFxuICB9KVxuXG4gIGNvbnN0IG1lbnVJdGVtcyA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LnJlbmFtZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2VkaXQnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogUGVuY2lsLFxuICAgICAgZXZlbnRLZXk6IEVWRU5UUy5wbUFpTWVudUVkaXQsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LmRlbGV0ZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2RlbGV0ZScpXG4gICAgICAgIG9uT3Blbk1vZGFsKGNoYXRJZClcbiAgICAgIH0sXG4gICAgICBJY29uOiBUcmFzaCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVEZWxldGUsXG4gICAgfSxcbiAgXVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1BY3Rpb24gPSAoY2hhdERhdGE6IGFueSkgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09ICdlZGl0Jykge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlVXBkYXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlRGVsZXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9XG4gICAgc2V0QWN0aW9uKG51bGwpXG4gICAgb25DbG9zZU1vZGFsKClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTQ0xIQ1dyYXBwZXJDb250ZW50XG4gICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBvbkNsaWNrKGNoYXQpXG4gICAgICAgIH19XG4gICAgICAgIGtleT17YGNvbnZlcnNhdGlvbi0ke2NoYXQuc2Vzc2lvbkV4dGVybmFsSWR9YH1cbiAgICAgICAgaXNNb2RhbE9wZW49e2lzTW9kYWxPcGVufVxuICAgICAgICBpc1NlbGVjdGVkPXtpc1NlbGVjdGVkfVxuICAgICAgICAkaW5kZXg9e2luZGV4fVxuICAgICAgPlxuICAgICAgICA8U0NMSENXcmFwcGVyPlxuICAgICAgICAgIDxTQ0xIQ1dyYXBwZXJUaXRsZVJvdz5cbiAgICAgICAgICAgIHtpc0dlbmVyYXRpbmcgfHwgaXNVbnJlYWQgPyAoXG4gICAgICAgICAgICAgIDxTZXNzaW9uR2VuZXJhdGluZ0RvdFxuICAgICAgICAgICAgICAgIGFyaWFMYWJlbD17aXNHZW5lcmF0aW5nID8gdCgnY29udmVyc2F0aW9ucy5nZW5lcmF0aW5nJykgOiB0KCdjb252ZXJzYXRpb25zLnVucmVhZExhYmVsJyl9XG4gICAgICAgICAgICAgICAgaXNXcml0aW5nPXtpc0dlbmVyYXRpbmcgJiYgc2Vzc2lvbk1ldGE/LmlzV3JpdGluZ31cbiAgICAgICAgICAgICAgICBhbmltYXRlZD17aXNHZW5lcmF0aW5nfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXAgPyBkaXNwbGF5VGl0bGUgOiAnJ30gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgPFNDTEhDV3JhcHBlclRpdGxlIHJlZj17dGV4dFJlZn0gJHVucmVhZD17aXNVbnJlYWR9PlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5VGl0bGUgfHwgdCgnY29udmVyc2F0aW9ucy5lbXB0eUxhYmVsJyl9XG4gICAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyVGl0bGU+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJUaXRsZVJvdz5cbiAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgdGl0bGU9e3Nob3dUb29sdGlwQWdlbnQgPyBkaXNwbGF5QWdlbnQgKyAoY29udGV4dE5hbWUgPyBgIC0gJHtjb250ZXh0TmFtZX1gIDogJycpIDogJyd9XG4gICAgICAgICAgICB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNDTEhDV3JhcHBlckFnZW50PlxuICAgICAgICAgICAgICB7c2hvdWxkVXNlTWFpYUljb25Gb3JDaGF0QWdlbnQoY2hhdC5hZ2VudFR5cGUpID8gKFxuICAgICAgICAgICAgICAgIDxNQUlBSWNvbiB3aWR0aD17MTR9IGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZm9udFNpemU6ICcxNHB4JyB9fT57Y2hhdC5lbW9qaX08L3NwYW4+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgPFNDTEhDV3JhcHBlckFnZW50VGV4dCByZWY9e2FnZW50UmVmfT57c2lkZWJhckFnZW50TGFiZWx9PC9TQ0xIQ1dyYXBwZXJBZ2VudFRleHQ+XG4gICAgICAgICAgICA8L1NDTEhDV3JhcHBlckFnZW50PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9TQ0xIQ1dyYXBwZXI+XG4gICAgICAgIDxTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zPlxuICAgICAgICAgIDxDVUJ1dHRvblxuICAgICAgICAgICAgaWNvbk9ubHlcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgIG9uT3Blbk1vZGFsKGNoYXQuaWQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxNZW51RG90cyB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICB7aXNNb2RhbE9wZW4gJiYgIWFjdGlvbiAmJiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhdGEtbW9kYWwtY29udGFpbmVyXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgdG9wOiAnMzJweCcsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICcxNnB4JyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgICAgICAgekluZGV4OiAxMDAwLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCByZ2JhKDIyNCwgMjI0LCAyMjQsIDEpJyxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzEyNHB4JyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge21lbnVJdGVtcy5tYXAoKHsgbGFiZWwsIG9uQ2xpY2tJdGVtLCBJY29uLCBldmVudEtleSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPE9wdGlvbkl0ZW1cbiAgICAgICAgICAgICAgICAgIGtleT17bGFiZWx9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkNsaWNrSXRlbShjaGF0LmlkKX1cbiAgICAgICAgICAgICAgICAgIEljb249e0ljb259XG4gICAgICAgICAgICAgICAgICBldmVudEtleT17ZXZlbnRLZXl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnM+XG4gICAgICA8L1NDTEhDV3JhcHBlckNvbnRlbnQ+XG4gICAgICB7ISFhY3Rpb24gJiZcbiAgICAgICAgYWN0aW9uc1thY3Rpb25dKHtcbiAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7XG4gICAgICAgICAgICBvbkNsb3NlTW9kYWwoKVxuICAgICAgICAgICAgc2V0QWN0aW9uKG51bGwpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGF0LFxuICAgICAgICAgIGhhbmRsZXJzOiB7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uLFxuICAgICAgICAgICAgaGFuZGxlU2V0SXNPcGVuTW9kYWw6IG9uQ2xvc2VNb2RhbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KX1cbiAgICA8Lz5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgU2lkZWJhciA9ICh7XG4gIG9uR29Ub0NoYXQsXG4gIG9uRXJyb3IgPSAoKSA9PiBudWxsLFxuICBoYW5kbGVHb1RvSG9tZSxcbiAgaGFuZGxlU3RhcnROZXdDaGF0LFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gIGhhbmRsZU9wZW5Ta2lsbHMsXG4gIG9uT3Blbk1haWFrZXJDcmVhdG9yLFxuICBzaG93TmV3Q2hhdCxcbiAgcmVmZXRjaENoYXRzLFxuICBoYW5kbGVTZXRSZWZldGNoQ2hhdHMsXG4gIGhhc0Vycm9yLFxuICBhZ2VudHNOYXZBY3RpdmUgPSBudWxsLFxuICBpc0xlZ2FjeUNvbnRleHRTZXNzaW9uID0gZmFsc2UsXG4gIGluaXRpYWxPcGVuID0gZmFsc2UsXG4gIG9uT3BlbkNoYW5nZSxcbiAgb3BlbixcbiAgY29udmVyc2F0aW9uc09ubHkgPSBmYWxzZSxcbiAgcmVzZXRTZWxlY3RlZENoYXRSZWYsXG59OiB7XG4gIG9uR29Ub0NoYXQ6IChjaGF0SWQ6IHN0cmluZykgPT4gdm9pZFxuICBvbkVycm9yOiAoKSA9PiB2b2lkXG4gIGhhbmRsZUdvVG9Ib21lOiAoKSA9PiB2b2lkXG4gIC8qKiBJbmljaWEgdW4gY2hhdCBudWV2bzsgZW4gTWlzIGFnZW50ZXMgLyBNYWlha2VyIC8gTWlzIHNraWxscyB1c2EgZWwgcHJpbWVyIGFnZW50ZSBkZSBsYSBsaXN0YS4gKi9cbiAgaGFuZGxlU3RhcnROZXdDaGF0PzogKCkgPT4gdm9pZFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2U6ICgpID0+IHZvaWRcbiAgaGFuZGxlT3BlblNraWxsczogKCkgPT4gdm9pZFxuICAvKiogQWJyZSBlbCBjcmVhZG9yIE1haWFrZXIgKG1pc21hIGzDs2dpY2EgcXVlIGVsIGh1YiBkZWwgbW9kYWwpLiAqL1xuICBvbk9wZW5NYWlha2VyQ3JlYXRvcj86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+XG4gIHNob3dOZXdDaGF0OiBib29sZWFuXG4gIHJlZmV0Y2hDaGF0czogYm9vbGVhblxuICBoYW5kbGVTZXRSZWZldGNoQ2hhdHM6IChyZWZldGNoOiBib29sZWFuKSA9PiB2b2lkXG4gIGhhc0Vycm9yOiBib29sZWFuXG4gIC8qKiBSZXNhbHRhIE1haWFrZXIsIE1pcyBhZ2VudGVzIG8gTWlzIHNraWxscyAqL1xuICBhZ2VudHNOYXZBY3RpdmU/OiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgJ215U2tpbGxzJyB8IG51bGxcbiAgLyoqIENvbnZlcnNhY2nDs24gZGUgdW4gY2xvbmUgbGVnYWN5IChhZ2VudF90eXBlIGNsb25lICsgZW50aXR5IHByb2plY3QvY2xpZW50L3Rhc2spOiBvY3VsdGEgXCJudWV2byBjaGF0XCIuICovXG4gIGlzTGVnYWN5Q29udGV4dFNlc3Npb24/OiBib29sZWFuXG4gIC8qKiBFc3RhZG8gaW5pY2lhbCBkZWwgc2lkZWJhciAocmVzdGF1cmFjacOzbiBkZSBzZXNpw7NuIHRyYXMgbmF2ZWdhY2nDs24pLiAqL1xuICBpbml0aWFsT3Blbj86IGJvb2xlYW5cbiAgb25PcGVuQ2hhbmdlPzogKG9wZW46IGJvb2xlYW4pID0+IHZvaWRcbiAgLyoqIFNpIHNlIHBhc2EsIGVsIHNpZGViYXIgZXMgY29udHJvbGFkbyBwb3IgZWwgcGFkcmUgKHAuIGVqLiB0b2dnbGUgZGVsIGhlYWRlciBkZSBww6FnaW5hKS4gKi9cbiAgb3Blbj86IGJvb2xlYW5cbiAgLyoqIFDDoWdpbmEgL21haWE6IHNvbG8gaGlzdG9yaWFsIGRlIGNvbnZlcnNhY2lvbmVzLCBzaW4gbmF2IGRlIGFnZW50ZXMuICovXG4gIGNvbnZlcnNhdGlvbnNPbmx5PzogYm9vbGVhblxuICAvKiogQ2FsbGJhY2sgaW1wZXJhdGl2byBwYXJhIGRlc2VsZWNjaW9uYXIgZWwgY2hhdCBhY3Rpdm8gYWwgdm9sdmVyIGFsIGhvbWUgKHDDoWdpbmEgL21haWEpLiAqL1xuICByZXNldFNlbGVjdGVkQ2hhdFJlZj86IE11dGFibGVSZWZPYmplY3Q8KCgpID0+IHZvaWQpIHwgbnVsbD5cbn0pID0+IHtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ292ZXJsYXknKVxuICBjb25zdCBbdW5jb250cm9sbGVkT3Blbiwgc2V0VW5jb250cm9sbGVkT3Blbl0gPSB1c2VTdGF0ZShpbml0aWFsT3BlbilcbiAgY29uc3QgaXNPcGVuID0gb3BlbiA/PyB1bmNvbnRyb2xsZWRPcGVuXG4gIGNvbnN0IFtpc09wZW5Nb2RhbCwgc2V0SXNPcGVuTW9kYWxdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgYWN0aXZlQ2hhdElkID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5hY3RpdmVDaGF0SWQpXG4gIGNvbnN0IHNldEFjdGl2ZUNoYXRJZCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuc2V0QWN0aXZlQ2hhdElkKVxuICBjb25zdCBjaGF0c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGNoYXRzQ29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGFnZW50OiBzZWxlY3RlZEFnZW50LCBzZWxlY3RBZ2VudCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRUYXNrIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3Qge1xuICAgIGxvYWRpbmdDaGF0cyxcbiAgICBjaGF0cyxcbiAgICBkZWxldGVDaGF0LFxuICAgIHVwZGF0ZUNoYXQsXG4gICAgZmV0Y2hDaGF0cyxcbiAgICBsaW1pdCxcbiAgICBvZmZzZXQsXG4gICAgaGFzTW9yZUNoYXRzLFxuICAgIGxvYWRNb3JlQ2hhdHMsXG4gICAgaXNMb2FkaW5nTW9yZUNoYXRzLFxuICAgIHNldFVucmVhZENvdW50LFxuICAgIHNldENoYXRSZWFkU3RhdGUsXG4gIH0gPSB1c2VDaGF0cyh7XG4gICAgb25FcnJvcixcbiAgfSlcblxuICBjb25zdCB1bnJlYWRTdWJzY3JpYmVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyZXNldFNlbGVjdGVkQ2hhdFJlZikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCA9ICgpID0+IHNldEFjdGl2ZUNoYXRJZChudWxsKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICB9LCBbcmVzZXRTZWxlY3RlZENoYXRSZWYsIHNldEFjdGl2ZUNoYXRJZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXVzZXI/LmlkIHx8IHR5cGVvZiAkX3NjID09PSAndW5kZWZpbmVkJyB8fCAhJF9zYykgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgY2hhbm5lbCA9IGBzZXNzaW9ucy51bnJlYWQ6JHt1c2VyLmlkfWBcbiAgICBjb25zdCBoYW5kbGVVbnJlYWRFdmVudCA9ICh7XG4gICAgICBtb2RlbF9kYXRhOiBtb2RlbERhdGEsXG4gICAgfToge1xuICAgICAgbW9kZWxfZGF0YT86IHsgdW5yZWFkX2NvdW50PzogbnVtYmVyOyBzZXNzaW9uX2lkPzogc3RyaW5nOyBpc19yZWFkPzogYm9vbGVhbiB9XG4gICAgfSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBtb2RlbERhdGE/LnVucmVhZF9jb3VudCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgc2V0VW5yZWFkQ291bnQobW9kZWxEYXRhLnVucmVhZF9jb3VudClcbiAgICAgIH1cbiAgICAgIGlmIChtb2RlbERhdGE/LnNlc3Npb25faWQgJiYgdHlwZW9mIG1vZGVsRGF0YT8uaXNfcmVhZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHNldENoYXRSZWFkU3RhdGUobW9kZWxEYXRhLnNlc3Npb25faWQsIG1vZGVsRGF0YS5pc19yZWFkKVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc2Muc3Vic2NyaWJlSGFuZGxlcihjaGFubmVsLCBoYW5kbGVVbnJlYWRFdmVudClcblxuICAgIGlmICghdW5yZWFkU3Vic2NyaWJlZFJlZi5jdXJyZW50KSB7XG4gICAgICAkX3NjLnVwZGF0ZUNvbm5lY3Rpb25Nb2RlbChcbiAgICAgICAge1xuICAgICAgICAgIG1vZGVsX2hhc2g6IGNoYW5uZWwsXG4gICAgICAgICAgYWN0aW9uOiAkX3NjLmFjdGlvblR5cGU/LlNVQlNDUklCRSxcbiAgICAgICAgfSxcbiAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgdXNlcixcbiAgICAgICAgdXNlcixcbiAgICAgICAgJF9zYy5jaGFubmVsVHlwZT8uTU9ERUxfQ0hBTk5FTFxuICAgICAgKVxuICAgICAgdW5yZWFkU3Vic2NyaWJlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSwgW3VzZXIsIHNldFVucmVhZENvdW50LCBzZXRDaGF0UmVhZFN0YXRlXSlcblxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG4gIGNvbnN0IGNhbkNyZWF0ZUFnZW50cyA9ICEhdXNlclBlcm1pc3Npb25zPy5jcmVhdGVcbiAgY29uc3QgaGFzTXVsdGlBZ2VudHNGZWF0dXJlQWNjZXNzID0gISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICBjb25zdCBjYW5WaWV3QWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LnZpZXcgJiYgaGFzTXVsdGlBZ2VudHNGZWF0dXJlQWNjZXNzXG4gIGNvbnN0IGNhblZpZXdTa2lsbHMgPSBjYW5BY2Nlc3NUb1NraWxscyh1c2VyKSAmJiBpc1NraWxsc1BpbG90Q29tcGFueSh1c2VyPy5jb21wYW55X2lkKVxuICBjb25zdCBzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID0gISFjYW5DcmVhdGVBZ2VudHMgJiYgaGFzTXVsdGlBZ2VudHNGZWF0dXJlQWNjZXNzXG4gIGNvbnN0IGFnZW50TmF2QnV0dG9uQ291bnQgPSBjb3VudFNpZGViYXJBZ2VudE5hdkJ1dHRvbnMoc2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiwgY2FuVmlld0FnZW50cywgY2FuVmlld1NraWxscylcbiAgY29uc3Qgc2hvd0FnZW50c05hdkJsb2NrID0gIWNvbnZlcnNhdGlvbnNPbmx5ICYmIChzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIHx8IGNhblZpZXdBZ2VudHMgfHwgY2FuVmlld1NraWxscylcbiAgY29uc3QgbXlBZ2VudHNTaWRlYmFyVHJhY2tlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY2FuVmlld0FnZW50cyB8fCBteUFnZW50c1NpZGViYXJUcmFja2VkUmVmLmN1cnJlbnQpIHJldHVyblxuXG4gICAgbXlBZ2VudHNTaWRlYmFyVHJhY2tlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHRyYWNrQXBwY3Vlc0V2ZW50KEFQUENVRVNfRVZFTlRTLm1haWFTaWRlYmFyTXlBZ2VudHMpXG4gIH0sIFtjYW5WaWV3QWdlbnRzXSlcblxuICBjb25zdCBoYW5kbGVEZWxldGVDaGF0ID0gYXN5bmMgKGNoYXQ6IGFueSkgPT4ge1xuICAgIGRlbGV0ZUNoYXQoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwZGF0ZUNoYXQgPSAoY2hhdDogYW55KSA9PiB7XG4gICAgdXBkYXRlQ2hhdChjaGF0KVxuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRJc09wZW5Nb2RhbChyZXNvbHZlVG9nZ2xlQ2hhdE1vZGFsSWQoaXNPcGVuTW9kYWwsIGNoYXRJZCkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHNob3VsZENsb3NlTW9kYWxPbk91dHNpZGVDbGljayhpc09wZW5Nb2RhbCwgZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpKSB7XG4gICAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFtpc09wZW5Nb2RhbF0pXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlU2lkZWJhciA9ICgpID0+IHtcbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTaWRlYmFyLCB7IGFjdGlvbjogaXNPcGVuID8gJ2Nsb3NlJyA6ICdvcGVuJyB9KVxuICAgIGNvbnN0IG5leHQgPSAhaXNPcGVuXG4gICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0VW5jb250cm9sbGVkT3BlbihuZXh0KVxuICAgIH1cbiAgICBvbk9wZW5DaGFuZ2U/LihuZXh0KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3BlbkNyZWF0ZUFnZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChvbk9wZW5NYWlha2VyQ3JlYXRvcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgb25PcGVuTWFpYWtlckNyZWF0b3IoKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIG9uRXJyb3IoKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmVudGl0eT1nbG9iYWwmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICBjb25zdCBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhZ2VudEl0ZW06IHsgdHlwZT86IHN0cmluZzsgZW50aXR5Pzogc3RyaW5nOyBuYW1lPzogc3RyaW5nIH0pID0+XG4gICAgICAgIGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50SXRlbSlcbiAgICAgIClcblxuICAgICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG4gICAgICAvLyBoYW5kbGVHb1RvSG9tZSBwdWVkZSByZXNlbGVjY2lvbmFyIGFnZW50cy5kYXRhWzBdIHNpIGVsIGFnZW50ZSBnbG9iYWwgYXVuIGVzdGEgZW4gbnVsbFxuICAgICAgLy8gKGNsb3N1cmUgc3RhbGUgZGUgbGEgc2VjY2lvbiBcIk1pcyBhZ2VudGVzXCIpLCBwb3IgZXNvIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudCkgdmEgZGVzcHVlcy5cbiAgICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25FcnJvcigpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNoYXRzRmV0Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICBjaGF0c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdCwgb2Zmc2V0IH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgLy8gUmVmZXRjaCBzb2xpY2l0YWRvIHBvciBwcm9wOiBzZSBlamVjdXRhIGF1bnF1ZSBlbCBzaWRlYmFyIGVzdMOpIGNvbGFwc2Fkby5cbiAgICBpZiAocmVmZXRjaENoYXRzKSB7XG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldCB9KVxuICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzKGZhbHNlKVxuICAgIH1cbiAgfSwgW3JlZmV0Y2hDaGF0cywgaGFuZGxlU2V0UmVmZXRjaENoYXRzLCBmZXRjaENoYXRzLCBsaW1pdCwgb2Zmc2V0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICAgIGlmICghY2hhdHNDb250YWluZXJSZWYuY3VycmVudCB8fCAhaGFzTW9yZUNoYXRzIHx8IGlzTG9hZGluZ01vcmVDaGF0cyB8fCBoYXNFcnJvcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgICBpZiAoaXNDaGF0TGlzdFNjcm9sbGVkVG9Cb3R0b20oc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCkpIHtcbiAgICAgICAgbG9hZE1vcmVDaGF0cygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY2hhdHNDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtoYXNNb3JlQ2hhdHMsIGlzTG9hZGluZ01vcmVDaGF0cywgbG9hZE1vcmVDaGF0cywgaGFzRXJyb3JdKVxuXG4gIGNvbnN0IGhhbmRsZU5ld0NoYXQgPSAoKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck5ld0NoYXQpXG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH1cbiAgICBpZiAoaGFuZGxlU3RhcnROZXdDaGF0KSB7XG4gICAgICBoYW5kbGVTdGFydE5ld0NoYXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gQWwgY3JlYXIvYWN0dWFsaXphciB1bmEgY29udmVyc2FjacOzbiByZWZyZXNjYW1vcyBsYSBsaXN0YSBhdW5xdWUgZWwgc2lkZWJhciBlc3TDqSBjb2xhcHNhZG8uXG4gICAgY29uc3QgaGFuZGxlUmVmZXRjaFNlc3Npb24gPSAoKSA9PiB7XG4gICAgICBjaGF0c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdDogMjAsIG9mZnNldDogMCwgYmFja2dyb3VuZDogdHJ1ZSB9KVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdyZWZldGNoLXNlc3Npb24nLCBoYW5kbGVSZWZldGNoU2Vzc2lvbilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgfVxuICB9LCBbZmV0Y2hDaGF0c10pXG5cbiAgY29uc3QgaXNBZ2VudHNIdWJTZWN0aW9uID0gcmVzb2x2ZUFnZW50c0h1YlNlY3Rpb24oc2hvd05ld0NoYXQsIGFnZW50c05hdkFjdGl2ZSlcblxuICBjb25zdCBzaG93TmV3Q2hhdEJ1dHRvbiA9IHJlc29sdmVTaG93TmV3Q2hhdEJ1dHRvbih7XG4gICAgaXNBZ2VudHNIdWJTZWN0aW9uLFxuICAgIHNob3dOZXdDaGF0LFxuICAgIGhhc0Vycm9yLFxuICAgIGxvYWRpbmdDaGF0cyxcbiAgICBpc0xlZ2FjeUNvbnRleHRTZXNzaW9uLFxuICAgIHVzZXJDYW5WaWV3QWdlbnRzOiBCb29sZWFuKHVzZXJQZXJtaXNzaW9ucz8udmlldyksXG4gICAgc2VsZWN0ZWRBZ2VudCxcbiAgfSlcblxuICBjb25zdCBuZXdDaGF0QnV0dG9uID0gKFxuICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm5ld0NoYXQnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgIDxTQ1NXcmFwcGVyTmV3Q2hhdEljb24gb25DbGljaz17aGFuZGxlTmV3Q2hhdH0gYXJpYS1sYWJlbD17dCgnY29udmVyc2F0aW9ucy5uZXdDaGF0Jyl9PlxuICAgICAgICA8TmV3Q2hhdCB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICA8L1NDU1dyYXBwZXJOZXdDaGF0SWNvbj5cbiAgICA8L1Rvb2x0aXA+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTQ1NTaWRlYmFyUm9vdCAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgPFNDU1NpZGViYXJUb29sYmFyICRpc09wZW49e2lzT3Blbn0+XG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXtpc09wZW4gPyB0KCdjb252ZXJzYXRpb25zLmNvbGxhcHNlJykgOiB0KCdoaXN0b3J5LnRvb2x0aXAnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICA8U0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVUb2dnbGVTaWRlYmFyfSBpc09wZW49e2lzT3Blbn0+XG4gICAgICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgICAgICA8Q2hldnJvbkRvdWJsZUxlZnQgY29sb3I9XCJyZ2JhKDEwMiwgMTAyLCAxMDIsIDEpXCIgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPEhpc3RvcnkgY29sb3I9XCJyZ2JhKDEzLCAxMywgMTMsIDEpXCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1NDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAge3Nob3dOZXdDaGF0QnV0dG9uID8gbmV3Q2hhdEJ1dHRvbiA6IG51bGx9XG4gICAgICAgIHshaXNPcGVuICYmIHNob3dBZ2VudHNOYXZCbG9jayA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDb2xsYXBzZWREaXZpZGVyIC8+XG4gICAgICAgICAgICB7c2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA/IChcbiAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubWFpYWtlck5hdicpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgIDxTQ1NXcmFwcGVyQWdlbnRzTmF2SWNvblxuICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbWFpYWtlcid9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRNcE9wZW4pXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DcmVhdGVBZ2VudCgpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNYWlhU3RvcmVJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgIDwvU0NTV3JhcHBlckFnZW50c05hdkljb24+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge2NhblZpZXdBZ2VudHMgPyAoXG4gICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm15QWdlbnRzTmF2Jyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgPFNDU1dyYXBwZXJBZ2VudHNOYXZJY29uXG4gICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cyd9XG4gICAgICAgICAgICAgICAgICBkYXRhLWFwcGN1ZXM9e0FQUENVRVNfU0VMRUNUT1JTLm1haWFTaWRlYmFyTXlBZ2VudHN9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haVNpZGViYXJNeUFnZW50cylcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlKClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE15QWdlbnRzTmF2SWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICA8L1NDU1dyYXBwZXJBZ2VudHNOYXZJY29uPlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtjYW5WaWV3U2tpbGxzID8gKFxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY29udmVyc2F0aW9ucy5teVNraWxsc05hdicpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgIDxTQ1NXcmFwcGVyQWdlbnRzTmF2SWNvblxuICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbXlTa2lsbHMnfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlTaWRlYmFyTXlTa2lsbHMpXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5Ta2lsbHMoKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2tpbGxzTmF2SWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICA8L1NDU1dyYXBwZXJBZ2VudHNOYXZJY29uPlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1NDU1NpZGViYXJUb29sYmFyPlxuICAgICAgPFNDU1NpZGViYXJCb2R5ICRpc09wZW49e2lzT3Blbn0+XG4gICAgICAgIHtpc09wZW4gPyAoXG4gICAgICAgICAgPFNDU1NpZGViYXJPcGVuUGFuZWw+XG4gICAgICAgICAgICA8U0NTU2lkZWJhckFnZW50c0Jsb2NrPlxuICAgICAgICAgICAgICB7c2hvd0FnZW50c05hdkJsb2NrID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgIHtzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0TXBPcGVuKVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNyZWF0ZUFnZW50KClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ21haWFrZXInfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPE1haWFTdG9yZUljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+e3QoJ2NvbnZlcnNhdGlvbnMubWFpYWtlck5hdicpfTwvU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAge2NhblZpZXdBZ2VudHMgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXBwY3Vlcz17QVBQQ1VFU19TRUxFQ1RPUlMubWFpYVNpZGViYXJNeUFnZW50c31cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlTaWRlYmFyTXlBZ2VudHMpXG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2UoKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPE15QWdlbnRzTmF2SWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD57dCgnY29udmVyc2F0aW9ucy5teUFnZW50c05hdicpfTwvU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAge2NhblZpZXdTa2lsbHMgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haVNpZGViYXJNeVNraWxscylcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5Ta2lsbHMoKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbXlTa2lsbHMnfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNraWxsc05hdkljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+e3QoJ2NvbnZlcnNhdGlvbnMubXlTa2lsbHNOYXYnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QmFkZ2VOZXc+e3QoJ2hvbWVNZW51Lm1haWFrZXIuYmFkZ2VOZXcnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2QmFkZ2VOZXc+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJBZ2VudHNBY3Rpb25zPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZ1Jvdz5cbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nPnt0KCdjb252ZXJzYXRpb25zLnRpdGxlJyl9PC9TQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmc+XG4gICAgICAgICAgICAgIDwvU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nUm93PlxuICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzQmxvY2s+XG4gICAgICAgICAgICA8U0NTU2lkZWJhckNoYXRzU2Nyb2xsXG4gICAgICAgICAgICAgIHJlZj17Y2hhdHNDb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgICRoYXNDaGF0cz17Y2hhdHMubGVuZ3RoID4gMH1cbiAgICAgICAgICAgICAgJG9mZnNldFZhcmlhbnQ9e2hhc0Vycm9yID8gJ2Vycm9yJyA6ICdkZWZhdWx0J31cbiAgICAgICAgICAgICAgJGFnZW50TmF2QnV0dG9uQ291bnQ9e3Nob3dBZ2VudHNOYXZCbG9jayA/IGFnZW50TmF2QnV0dG9uQ291bnQgOiAwfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgIWNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvclN0YXRlIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICApIDogbG9hZGluZ0NoYXRzID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICAgICA8U2lkZWJhckNoYXRzU2tlbGV0b24gLz5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJMb2FkaW5nQXJlYT5cbiAgICAgICAgICAgICAgKSA6IGNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAge2NoYXRzLm1hcCgoY2hhdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8TGlzdEhpc3RvcnlDaGF0XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NoYXQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGF0PXtjaGF0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2hhdERhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uR29Ub0NoYXQoY2hhdERhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2RhbE9wZW49e2lzT3Blbk1vZGFsID09PSBjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25PcGVuTW9kYWw9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2VNb2RhbD17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVVwZGF0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17YWN0aXZlQ2hhdElkID09PSBjaGF0LnNlc3Npb25FeHRlcm5hbElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdNb3JlQ2hhdHMgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckxvYWRNb3JlUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxTaWRlYmFyQ2hhdHNTa2VsZXRvbiBjb3VudD17Mn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTG9hZE1vcmVSb3c+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRW1wdHlDaGF0cz5cbiAgICAgICAgICAgICAgICAgIDxFbXB0eUhpc3RvcnlJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0Pnt0KCdjb252ZXJzYXRpb25zLmVtcHR5Jyl9PC9TQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQ+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRW1wdHlDaGF0cz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckNoYXRzU2Nyb2xsPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDaGF0c0Zvb3Rlcj5cbiAgICAgICAgICAgICAge2hhc0Vycm9yICYmIGNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQ2hhdHNGb290ZXI+XG4gICAgICAgICAgPC9TQ1NTaWRlYmFyT3BlblBhbmVsPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPFNDU1NpZGViYXJGb290ZXJBY3Rpb25zICRpc09wZW49e2lzT3Blbn0gJGp1c3RpZnlCZXR3ZWVuPXshIXNlbGVjdGVkQWdlbnR9PlxuICAgICAgICAgIHtzZWxlY3RlZEFnZW50ID8gPEZlZWRiYWNrQnV0dG9uIHNlbGVjdGVkQWdlbnQ9e3NlbGVjdGVkQWdlbnR9IGlzT3Blbj17aXNPcGVufSAvPiA6IG51bGx9XG4gICAgICAgIDwvU0NTU2lkZWJhckZvb3RlckFjdGlvbnM+XG4gICAgICA8L1NDU1NpZGViYXJCb2R5PlxuICAgIDwvU0NTU2lkZWJhclJvb3Q+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBK0IsT0FBTztBQUNuRixTQUFTQyxpQkFBaUIsUUFBUSxvREFBb0Q7QUFDdEYsU0FBU0MsT0FBTyxRQUFRLDBDQUEwQztBQUNsRSxTQUFTQyxRQUFRLFFBQVEsNENBQTRDO0FBQ3JFLFNBQVNDLFFBQVEsUUFBUSwyQ0FBMkM7QUFDcEUsU0FBU0MsTUFBTSxRQUFRLHlDQUF5QztBQUNoRSxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBRTlELFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFFdEUsU0FBU0MsZ0JBQWdCLFFBQVEsZ0NBQWdDO0FBQ2pFLFNBQVNDLGlCQUFpQixRQUFRLDBCQUEwQjtBQUM1RCxTQUFTQyxRQUFRLFFBQVEseUJBQXlCO0FBQ2xELFNBQVNDLG9CQUFvQixRQUFRLG9CQUFvQjtBQUN6RCxTQUFTQyxVQUFVLEVBQUVDLFFBQVEsRUFBRUMsYUFBYSxFQUFFQyxlQUFlLEVBQUVDLGFBQWEsRUFBRUMsT0FBTyxRQUFRLG1CQUFtQjtBQUNoSCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSx5QkFBeUI7QUFDMUQsU0FBU0MsSUFBSSxRQUFRLHFCQUFxQjtBQUMxQyxTQUFTQyxVQUFVLFFBQVEsK0JBQStCO0FBQzFELFNBQVNDLGlCQUFpQixRQUFRLG1DQUFtQztBQUNyRSxTQUFTQyxtQkFBbUIsUUFBUSxxQ0FBcUM7QUFDekUsU0FBU0MsU0FBUyxRQUFRLDZCQUE2QjtBQUN2RCxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLGNBQWMsUUFBUSw0QkFBNEI7QUFDM0QsU0FBU0MsZ0JBQWdCLFFBQVEsaUNBQWlDO0FBQ2xFLFNBQVNDLFNBQVMsUUFBUSwrQkFBK0I7QUFDekQsU0FBU0MsaUJBQWlCLEVBQUVDLG9CQUFvQixRQUFRLGdDQUFnQztBQUN4RixTQUFTQyxVQUFVLFFBQVEscUJBQXFCO0FBQ2hELFNBQVNDLDJCQUEyQixRQUFRLHNDQUFzQztBQUNsRixTQUFTQyxtQkFBbUIsRUFBRUMsNkJBQTZCLFFBQVEsaUNBQWlDO0FBQ3BHLFNBQVNDLGNBQWMsRUFBRUMsaUJBQWlCLEVBQUVDLGlCQUFpQixRQUFRLDJCQUEyQjtBQUNoRyxTQUFTQyxvQkFBb0IsUUFBUSxrQ0FBa0M7QUFDdkUsU0FBU0Msc0JBQXNCLEVBQUVDLGNBQWMsUUFBUSx3Q0FBd0M7QUFDL0YsU0FBU0Msc0JBQXNCLFFBQVEsdUNBQXVDO0FBQzlFLFNBQVNDLGFBQWEsUUFBUSw4QkFBOEI7QUFDNUQsU0FDRUMsWUFBWSxFQUNaQyxpQkFBaUIsRUFDakJDLHFCQUFxQixFQUNyQkMseUJBQXlCLEVBQ3pCQyxtQkFBbUIsRUFDbkJDLGlCQUFpQixFQUNqQkMsb0JBQW9CLEVBQ3BCQyx5QkFBeUIsRUFDekJDLHFCQUFxQixFQUNyQkMsdUJBQXVCLFFBQ2xCLGtCQUFrQjtBQUN6QixTQUNFQyxjQUFjLEVBQ2RDLGlCQUFpQixFQUNqQkMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLHFCQUFxQixFQUNyQkMsdUJBQXVCLEVBQ3ZCQywwQkFBMEIsRUFDMUJDLHlCQUF5QixFQUN6QkMsNEJBQTRCLEVBQzVCQyw4QkFBOEIsRUFDOUJDLGlDQUFpQyxFQUNqQ0MscUJBQXFCLEVBQ3JCQywwQkFBMEIsRUFDMUJDLHVCQUF1QixFQUN2QkMscUJBQXFCLEVBQ3JCQyw2QkFBNkIsRUFDN0JDLDRCQUE0QixFQUM1QkMscUJBQXFCLEVBQ3JCQyxxQkFBcUIsRUFDckJDLG9CQUFvQixFQUNwQkMsd0JBQXdCLEVBQ3hCQyxxQkFBcUIsRUFDckJDLHVCQUF1QixFQUN2QkMsMEJBQTBCLFFBQ3JCLHlCQUF5QjtBQUNoQyxTQUNFQywyQkFBMkIsRUFDM0JDLDBCQUEwQixFQUMxQkMscUJBQXFCLEVBQ3JCQyx1QkFBdUIsRUFDdkJDLHdCQUF3QixFQUN4QkMsNEJBQTRCLEVBQzVCQyx3QkFBd0IsRUFDeEJDLDhCQUE4QixFQUM5QkMsNkJBQTZCLFFBQ3hCLG1CQUFtQjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUEsRUFBQUMsUUFBQSxJQUFBQyxTQUFBO0FBRTFCLElBQU1DLE9BQU8sR0FBRztFQUNkQyxJQUFJLEVBQUUsU0FBTkEsSUFBSUEsQ0FBR0MsS0FBVTtJQUFBLG9CQUFLUCxJQUFBLENBQUNqRSxpQkFBaUIsRUFBQXlFLGFBQUEsS0FBS0QsS0FBSyxDQUFHLENBQUM7RUFBQTtFQUN0RCxVQUFRLFNBQVJFLE9BQU1BLENBQUdGLEtBQVU7SUFBQSxvQkFBS1AsSUFBQSxDQUFDaEUsbUJBQW1CLEVBQUF3RSxhQUFBLEtBQUtELEtBQUssQ0FBRyxDQUFDO0VBQUE7QUFDNUQsQ0FBQztBQUVELElBQU1HLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBQUMsSUFBQSxFQXVCZjtFQUFBLElBdEJKQyxJQUFJLEdBQUFELElBQUEsQ0FBSkMsSUFBSTtJQUNKQyxRQUFPLEdBQUFGLElBQUEsQ0FBUEUsT0FBTztJQUNQQyxXQUFXLEdBQUFILElBQUEsQ0FBWEcsV0FBVztJQUNYQyxXQUFXLEdBQUFKLElBQUEsQ0FBWEksV0FBVztJQUNYQyxZQUFZLEdBQUFMLElBQUEsQ0FBWkssWUFBWTtJQUNaQyxRQUFRLEdBQUFOLElBQUEsQ0FBUk0sUUFBUTtJQUNSQyxVQUFVLEdBQUFQLElBQUEsQ0FBVk8sVUFBVTtJQUNWQyxLQUFLLEdBQUFSLElBQUEsQ0FBTFEsS0FBSztJQUNMQyxhQUFhLEdBQUFULElBQUEsQ0FBYlMsYUFBYTtFQWViLElBQU1DLE9BQU8sR0FBRzdHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDO0VBQzVDLElBQU04RyxRQUFRLEdBQUc5RyxNQUFNLENBQWlCLElBQUksQ0FBQztFQUM3QyxJQUFNK0csWUFBWSxHQUFHaEgsT0FBTyxDQUFDO0lBQUEsT0FBTWtDLDJCQUEyQixDQUFDbUUsSUFBSSxDQUFDWSxLQUFLLENBQUM7RUFBQSxHQUFFLENBQUNaLElBQUksQ0FBQ1ksS0FBSyxDQUFDLENBQUM7RUFDekYsSUFBTUMsWUFBWSxHQUFHL0UsbUJBQW1CLENBQUNrRSxJQUFJLENBQUNjLFNBQVMsRUFBRWQsSUFBSSxDQUFDZSxLQUFLLENBQUM7RUFDcEUsSUFBTUMsV0FBVyxHQUFHaEIsSUFBSSxDQUFDaUIsV0FBVyxJQUFJakIsSUFBSSxDQUFDa0IsVUFBVTtFQUN2RCxJQUFBQyxrQkFBQSxHQUF3QjdHLGlCQUFpQixDQUFDbUcsT0FBTyxFQUFFLENBQUNFLFlBQVksQ0FBQyxDQUFDO0lBQTFEUyxXQUFXLEdBQUFELGtCQUFBLENBQVhDLFdBQVc7RUFDbkIsSUFBQUMsbUJBQUEsR0FBMEMvRyxpQkFBaUIsQ0FBQ29HLFFBQVEsRUFBRSxDQUFDVixJQUFJLENBQUNlLEtBQUssQ0FBQyxDQUFDO0lBQTlETyxnQkFBZ0IsR0FBQUQsbUJBQUEsQ0FBN0JELFdBQVc7RUFDbkIsSUFBQUcsS0FBQSxHQUFjdEcsSUFBSSxDQUFDLENBQUM7SUFBWnVHLENBQUMsR0FBQUQsS0FBQSxDQUFEQyxDQUFDO0VBQ1QsSUFBQUMsU0FBQSxHQUE0QjVILFFBQVEsQ0FBZ0IsSUFBSSxDQUFDO0lBQUE2SCxVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUFsREcsTUFBTSxHQUFBRixVQUFBO0lBQUVHLFNBQVMsR0FBQUgsVUFBQTtFQUN4QixJQUFNSSxZQUFZLEdBQUcxRixzQkFBc0IsQ0FBQzRELElBQUksQ0FBQytCLGlCQUFpQixDQUFDO0VBQ25FLElBQU1DLFdBQVcsR0FBRzNGLGNBQWMsQ0FBQzJELElBQUksQ0FBQytCLGlCQUFpQixDQUFDO0VBQzFELElBQU1FLFFBQVEsR0FBR3JELHFCQUFxQixDQUFDb0IsSUFBSSxDQUFDa0MsTUFBTSxFQUFFSixZQUFZLENBQUM7RUFDakUsSUFBTUssaUJBQWlCLEdBQUdwRCw0QkFBNEIsQ0FBQztJQUNyRCtCLFNBQVMsRUFBRWQsSUFBSSxDQUFDYyxTQUFTO0lBQ3pCc0IsU0FBUyxFQUFFcEMsSUFBSSxDQUFDZSxLQUFLO0lBQ3JCRSxXQUFXLEVBQUVqQixJQUFJLENBQUNpQjtFQUNwQixDQUFDLENBQUM7RUFFRixJQUFNb0IsU0FBUyxHQUFHLENBQ2hCO0lBQ0VDLEtBQUssRUFBRWQsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO0lBQy9CZSxXQUFXLEVBQUUsU0FBYkEsV0FBV0EsQ0FBR0MsTUFBYyxFQUFLO01BQy9CWCxTQUFTLENBQUMsTUFBTSxDQUFDO01BQ2pCMUIsV0FBVyxDQUFDcUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDREMsSUFBSSxFQUFFdkksTUFBTTtJQUNad0ksUUFBUSxFQUFFM0gsTUFBTSxDQUFDNEg7RUFDbkIsQ0FBQyxFQUNEO0lBQ0VMLEtBQUssRUFBRWQsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO0lBQy9CZSxXQUFXLEVBQUUsU0FBYkEsV0FBV0EsQ0FBR0MsTUFBYyxFQUFLO01BQy9CWCxTQUFTLENBQUMsUUFBUSxDQUFDO01BQ25CMUIsV0FBVyxDQUFDcUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDREMsSUFBSSxFQUFFdEksS0FBSztJQUNYdUksUUFBUSxFQUFFM0gsTUFBTSxDQUFDNkg7RUFDbkIsQ0FBQyxDQUNGO0VBRUQsSUFBTUMsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBSUMsUUFBYSxFQUFLO0lBQzdDLElBQUlsQixNQUFNLEtBQUssTUFBTSxFQUFFO01BQ3JCdkIsUUFBUSxDQUFDMEMsZ0JBQWdCLENBQUNELFFBQVEsQ0FBQztJQUNyQyxDQUFDLE1BQU07TUFDTHpDLFFBQVEsQ0FBQzJDLGdCQUFnQixDQUFDRixRQUFRLENBQUM7SUFDckM7SUFDQWpCLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDZnpCLFlBQVksQ0FBQyxDQUFDO0VBQ2hCLENBQUM7RUFFRCxvQkFDRWQsS0FBQSxDQUFBRSxTQUFBO0lBQUF5RCxRQUFBLGdCQUNFM0QsS0FBQSxDQUFDMUMsbUJBQW1CO01BQ2xCcUQsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUVpRCxDQUFDLEVBQUk7UUFDWkEsQ0FBQyxDQUFDQyxlQUFlLENBQUMsQ0FBQztRQUNuQmxELFFBQU8sQ0FBQ0QsSUFBSSxDQUFDO01BQ2YsQ0FBRTtNQUVGRSxXQUFXLEVBQUVBLFdBQVk7TUFDekJJLFVBQVUsRUFBRUEsVUFBVztNQUN2QjhDLE1BQU0sRUFBRTdDLEtBQU07TUFBQTBDLFFBQUEsZ0JBRWQzRCxLQUFBLENBQUM5QyxZQUFZO1FBQUF5RyxRQUFBLGdCQUNYM0QsS0FBQSxDQUFDeEMsb0JBQW9CO1VBQUFtRyxRQUFBLEdBQ2xCbkIsWUFBWSxJQUFJRyxRQUFRLGdCQUN2QjdDLElBQUEsQ0FBQ2pELG9CQUFvQjtZQUNuQmtILFNBQVMsRUFBRXZCLFlBQVksR0FBR04sQ0FBQyxDQUFDLDBCQUEwQixDQUFDLEdBQUdBLENBQUMsQ0FBQywyQkFBMkIsQ0FBRTtZQUN6RjhCLFNBQVMsRUFBRXhCLFlBQVksS0FBSUUsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVzQixTQUFTLENBQUM7WUFDbERDLFFBQVEsRUFBRXpCO1VBQWEsQ0FDeEIsQ0FBQyxHQUNBLElBQUksZUFDUjFDLElBQUEsQ0FBQ2hGLE9BQU87WUFBQ3dHLEtBQUssRUFBRVEsV0FBVyxHQUFHVCxZQUFZLEdBQUcsRUFBRztZQUFDNkMsTUFBTSxFQUFFaEQsYUFBYztZQUFBeUMsUUFBQSxlQUNyRTdELElBQUEsQ0FBQ3ZDLGlCQUFpQjtjQUFDNEcsR0FBRyxFQUFFaEQsT0FBUTtjQUFDaUQsT0FBTyxFQUFFekIsUUFBUztjQUFBZ0IsUUFBQSxFQUNoRHRDLFlBQVksSUFBSWEsQ0FBQyxDQUFDLDBCQUEwQjtZQUFDLENBQzdCO1VBQUMsQ0FDYixDQUFDO1FBQUEsQ0FDVSxDQUFDLGVBQ3ZCcEMsSUFBQSxDQUFDaEYsT0FBTztVQUNOd0csS0FBSyxFQUFFVSxnQkFBZ0IsR0FBR1QsWUFBWSxJQUFJRyxXQUFXLFNBQUEyQyxNQUFBLENBQVMzQyxXQUFXLElBQUssRUFBRSxDQUFDLEdBQUcsRUFBRztVQUN2RndDLE1BQU0sRUFBRWhELGFBQWM7VUFBQXlDLFFBQUEsZUFFdEIzRCxLQUFBLENBQUM3QyxpQkFBaUI7WUFBQXdHLFFBQUEsR0FDZi9ELDZCQUE2QixDQUFDYyxJQUFJLENBQUNjLFNBQVMsQ0FBQyxnQkFDNUMxQixJQUFBLENBQUMxRSxRQUFRO2NBQUNrSixLQUFLLEVBQUUsRUFBRztjQUFDQyxNQUFNLEVBQUU7WUFBRyxDQUFFLENBQUMsZ0JBRW5DekUsSUFBQTtjQUFNMEUsS0FBSyxFQUFFO2dCQUFFQyxRQUFRLEVBQUU7Y0FBTyxDQUFFO2NBQUFkLFFBQUEsRUFBRWpELElBQUksQ0FBQ2dFO1lBQUssQ0FBTyxDQUN0RCxlQUVENUUsSUFBQSxDQUFDMUMscUJBQXFCO2NBQUMrRyxHQUFHLEVBQUUvQyxRQUFTO2NBQUF1QyxRQUFBLEVBQUVkO1lBQWlCLENBQXdCLENBQUM7VUFBQSxDQUNoRTtRQUFDLENBQ2IsQ0FBQztNQUFBLENBQ0UsQ0FBQyxlQUNmN0MsS0FBQSxDQUFDM0MseUJBQXlCO1FBQUFzRyxRQUFBLGdCQUN4QjdELElBQUEsQ0FBQ3BGLFFBQVE7VUFDUGlLLFFBQVE7VUFDUkMsSUFBSSxFQUFDLE9BQU87VUFDWkMsT0FBTyxFQUFDLE1BQU07VUFDZGxFLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFbUUsS0FBSyxFQUFJO1lBQ2hCQSxLQUFLLENBQUNqQixlQUFlLENBQUMsQ0FBQztZQUN2QmhELFdBQVcsQ0FBQ0gsSUFBSSxDQUFDcUUsRUFBRSxDQUFDO1VBQ3RCLENBQUU7VUFBQXBCLFFBQUEsZUFFRjdELElBQUEsQ0FBQ25GLFFBQVE7WUFBQzJKLEtBQUssRUFBRSxFQUFHO1lBQUNDLE1BQU0sRUFBRTtVQUFHLENBQUU7UUFBQyxDQUMzQixDQUFDLEVBQ1YzRCxXQUFXLElBQUksQ0FBQzBCLE1BQU0saUJBQ3JCeEMsSUFBQTtVQUNFLDRCQUFvQjtVQUNwQjBFLEtBQUssRUFBRTtZQUNMUSxRQUFRLEVBQUUsVUFBVTtZQUNwQkMsR0FBRyxFQUFFLE1BQU07WUFDWEMsS0FBSyxFQUFFLE1BQU07WUFDYkMsZUFBZSxFQUFFLE9BQU87WUFDeEJqQixNQUFNLEVBQUUsSUFBSTtZQUNaa0IsT0FBTyxFQUFFLE1BQU07WUFDZkMsYUFBYSxFQUFFLFFBQVE7WUFDdkJDLFlBQVksRUFBRSxLQUFLO1lBQ25CQyxNQUFNLEVBQUUsa0NBQWtDO1lBQzFDQyxRQUFRLEVBQUU7VUFDWixDQUFFO1VBQUE3QixRQUFBLEVBRURaLFNBQVMsQ0FBQzBDLEdBQUcsQ0FBQyxVQUFBQyxLQUFBO1lBQUEsSUFBRzFDLEtBQUssR0FBQTBDLEtBQUEsQ0FBTDFDLEtBQUs7Y0FBRUMsV0FBVyxHQUFBeUMsS0FBQSxDQUFYekMsV0FBVztjQUFFRSxJQUFJLEdBQUF1QyxLQUFBLENBQUp2QyxJQUFJO2NBQUVDLFFBQVEsR0FBQXNDLEtBQUEsQ0FBUnRDLFFBQVE7WUFBQSxvQkFDbER0RCxJQUFBLENBQUNsRSxVQUFVO2NBRVRvSCxLQUFLLEVBQUVBLEtBQU07Y0FDYnJDLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO2dCQUFBLE9BQVFzQyxXQUFXLENBQUN2QyxJQUFJLENBQUNxRSxFQUFFLENBQUM7Y0FBQSxDQUFDO2NBQ3BDNUIsSUFBSSxFQUFFQSxJQUFLO2NBQ1hDLFFBQVEsRUFBRUE7WUFBUyxHQUpkSixLQUtOLENBQUM7VUFBQSxDQUNIO1FBQUMsQ0FDQyxDQUNOO01BQUEsQ0FDd0IsQ0FBQztJQUFBLG1CQUFBcUIsTUFBQSxDQTFFUDNELElBQUksQ0FBQytCLGlCQUFpQixDQTJFeEIsQ0FBQyxFQUNyQixDQUFDLENBQUNILE1BQU0sSUFDUG5DLE9BQU8sQ0FBQ21DLE1BQU0sQ0FBQyxDQUFDO01BQ2RxRCxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUFRO1FBQ2I3RSxZQUFZLENBQUMsQ0FBQztRQUNkeUIsU0FBUyxDQUFDLElBQUksQ0FBQztNQUNqQixDQUFDO01BQ0Q3QixJQUFJLEVBQUpBLElBQUk7TUFDSkssUUFBUSxFQUFFO1FBQ1J3QyxtQkFBbUIsRUFBbkJBLG1CQUFtQjtRQUNuQnFDLG9CQUFvQixFQUFFOUU7TUFDeEI7SUFDRixDQUFDLENBQUM7RUFBQSxDQUNKLENBQUM7QUFFUCxDQUFDO0FBRUQsT0FBTyxJQUFNK0UsT0FBTyxHQUFHLFNBQVZBLE9BQU9BLENBQUFDLEtBQUEsRUE4Q2Q7RUFBQSxJQUFBQyxpQkFBQTtFQUFBLElBN0NKQyxVQUFVLEdBQUFGLEtBQUEsQ0FBVkUsVUFBVTtJQUFBQyxhQUFBLEdBQUFILEtBQUEsQ0FDVkksT0FBTztJQUFQQSxPQUFPLEdBQUFELGFBQUEsY0FBRztNQUFBLE9BQU0sSUFBSTtJQUFBLElBQUFBLGFBQUE7SUFDcEJFLGNBQWMsR0FBQUwsS0FBQSxDQUFkSyxjQUFjO0lBQ2RDLGtCQUFrQixHQUFBTixLQUFBLENBQWxCTSxrQkFBa0I7SUFDbEJDLHFCQUFxQixHQUFBUCxLQUFBLENBQXJCTyxxQkFBcUI7SUFDckJDLGdCQUFnQixHQUFBUixLQUFBLENBQWhCUSxnQkFBZ0I7SUFDaEJDLG9CQUFvQixHQUFBVCxLQUFBLENBQXBCUyxvQkFBb0I7SUFDcEJDLFdBQVcsR0FBQVYsS0FBQSxDQUFYVSxXQUFXO0lBQ1hDLFlBQVksR0FBQVgsS0FBQSxDQUFaVyxZQUFZO0lBQ1pDLHFCQUFxQixHQUFBWixLQUFBLENBQXJCWSxxQkFBcUI7SUFDckJDLFFBQVEsR0FBQWIsS0FBQSxDQUFSYSxRQUFRO0lBQUFDLHFCQUFBLEdBQUFkLEtBQUEsQ0FDUmUsZUFBZTtJQUFmQSxlQUFlLEdBQUFELHFCQUFBLGNBQUcsSUFBSSxHQUFBQSxxQkFBQTtJQUFBRSxxQkFBQSxHQUFBaEIsS0FBQSxDQUN0QmlCLHNCQUFzQjtJQUF0QkEsc0JBQXNCLEdBQUFELHFCQUFBLGNBQUcsS0FBSyxHQUFBQSxxQkFBQTtJQUFBRSxpQkFBQSxHQUFBbEIsS0FBQSxDQUM5Qm1CLFdBQVc7SUFBWEEsV0FBVyxHQUFBRCxpQkFBQSxjQUFHLEtBQUssR0FBQUEsaUJBQUE7SUFDbkJFLFlBQVksR0FBQXBCLEtBQUEsQ0FBWm9CLFlBQVk7SUFDWkMsSUFBSSxHQUFBckIsS0FBQSxDQUFKcUIsSUFBSTtJQUFBQyxxQkFBQSxHQUFBdEIsS0FBQSxDQUNKdUIsaUJBQWlCO0lBQWpCQSxpQkFBaUIsR0FBQUQscUJBQUEsY0FBRyxLQUFLLEdBQUFBLHFCQUFBO0lBQ3pCRSxvQkFBb0IsR0FBQXhCLEtBQUEsQ0FBcEJ3QixvQkFBb0I7RUE2QnBCLElBQUFDLE1BQUEsR0FBb0I1TCxJQUFJLENBQUMsQ0FBQztJQUFsQnVHLENBQUMsR0FBQXFGLE1BQUEsQ0FBRHJGLENBQUM7SUFBRXNGLElBQUksR0FBQUQsTUFBQSxDQUFKQyxJQUFJO0VBQ2YsSUFBTXRHLGFBQWEsR0FBR2xFLHNCQUFzQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7RUFDN0QsSUFBQXlLLFVBQUEsR0FBZ0RsTixRQUFRLENBQUMwTSxXQUFXLENBQUM7SUFBQVMsVUFBQSxHQUFBckYsY0FBQSxDQUFBb0YsVUFBQTtJQUE5REUsZ0JBQWdCLEdBQUFELFVBQUE7SUFBRUUsbUJBQW1CLEdBQUFGLFVBQUE7RUFDNUMsSUFBTUcsTUFBTSxHQUFHVixJQUFJLGFBQUpBLElBQUksY0FBSkEsSUFBSSxHQUFJUSxnQkFBZ0I7RUFDdkMsSUFBQUcsVUFBQSxHQUFzQ3ZOLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDO0lBQUF3TixVQUFBLEdBQUExRixjQUFBLENBQUF5RixVQUFBO0lBQTVERSxXQUFXLEdBQUFELFVBQUE7SUFBRUUsY0FBYyxHQUFBRixVQUFBO0VBQ2xDLElBQU1HLFlBQVksR0FBR2pMLGFBQWEsQ0FBQyxVQUFBa0wsS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0QsWUFBWTtFQUFBLEVBQUM7RUFDL0QsSUFBTUUsZUFBZSxHQUFHbkwsYUFBYSxDQUFDLFVBQUFrTCxLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDQyxlQUFlO0VBQUEsRUFBQztFQUNyRSxJQUFNQyxlQUFlLEdBQUcvTixNQUFNLENBQUMsS0FBSyxDQUFDO0VBQ3JDLElBQU1nTyxpQkFBaUIsR0FBR2hPLE1BQU0sQ0FBaUIsSUFBSSxDQUFDO0VBQ3RELElBQU1pTyxJQUFJLEdBQUd2TSxPQUFPLENBQUMsQ0FBQztFQUN0QixJQUFNd00sY0FBYyxHQUFHOU0sUUFBUSxDQUFDLENBQUM7RUFDakMsSUFBQStNLGlCQUFBLEdBQThFdk0sZ0JBQWdCLENBQUMsQ0FBQztJQUFqRndNLGFBQWEsR0FBQUQsaUJBQUEsQ0FBcEJoSCxLQUFLO0lBQWlCa0gsV0FBVyxHQUFBRixpQkFBQSxDQUFYRSxXQUFXO0lBQUVDLFVBQVUsR0FBQUgsaUJBQUEsQ0FBVkcsVUFBVTtJQUFFQyxTQUFTLEdBQUFKLGlCQUFBLENBQVRJLFNBQVM7SUFBRUMsT0FBTyxHQUFBTCxpQkFBQSxDQUFQSyxPQUFPO0VBQ3pFLElBQUFDLFNBQUEsR0FhSTlOLFFBQVEsQ0FBQztNQUNYaUwsT0FBTyxFQUFQQTtJQUNGLENBQUMsQ0FBQztJQWRBOEMsWUFBWSxHQUFBRCxTQUFBLENBQVpDLFlBQVk7SUFDWkMsS0FBSyxHQUFBRixTQUFBLENBQUxFLEtBQUs7SUFDTEMsVUFBVSxHQUFBSCxTQUFBLENBQVZHLFVBQVU7SUFDVkMsVUFBVSxHQUFBSixTQUFBLENBQVZJLFVBQVU7SUFDVkMsVUFBVSxHQUFBTCxTQUFBLENBQVZLLFVBQVU7SUFDVkMsS0FBSyxHQUFBTixTQUFBLENBQUxNLEtBQUs7SUFDTEMsTUFBTSxHQUFBUCxTQUFBLENBQU5PLE1BQU07SUFDTkMsWUFBWSxHQUFBUixTQUFBLENBQVpRLFlBQVk7SUFDWkMsYUFBYSxHQUFBVCxTQUFBLENBQWJTLGFBQWE7SUFDYkMsa0JBQWtCLEdBQUFWLFNBQUEsQ0FBbEJVLGtCQUFrQjtJQUNsQkMsY0FBYyxHQUFBWCxTQUFBLENBQWRXLGNBQWM7SUFDZEMsZ0JBQWdCLEdBQUFaLFNBQUEsQ0FBaEJZLGdCQUFnQjtFQUtsQixJQUFNQyxtQkFBbUIsR0FBR3RQLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFFekNGLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDa04sb0JBQW9CLEVBQUUsT0FBT3VDLFNBQVM7SUFFM0N2QyxvQkFBb0IsQ0FBQ3dDLE9BQU8sR0FBRztNQUFBLE9BQU0xQixlQUFlLENBQUMsSUFBSSxDQUFDO0lBQUE7SUFFMUQsT0FBTyxZQUFNO01BQ1hkLG9CQUFvQixDQUFDd0MsT0FBTyxHQUFHLElBQUk7SUFDckMsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDeEMsb0JBQW9CLEVBQUVjLGVBQWUsQ0FBQyxDQUFDO0VBRTNDaE8sU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLEVBQUNtTyxJQUFJLGFBQUpBLElBQUksZUFBSkEsSUFBSSxDQUFFeEQsRUFBRSxLQUFJLE9BQU9nRixJQUFJLEtBQUssV0FBVyxJQUFJLENBQUNBLElBQUksRUFBRSxPQUFPRixTQUFTO0lBRXZFLElBQU1HLE9BQU8sc0JBQUEzRixNQUFBLENBQXNCa0UsSUFBSSxDQUFDeEQsRUFBRSxDQUFFO0lBQzVDLElBQU1rRixpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFBQyxLQUFBLEVBSWpCO01BQUEsSUFIUUMsU0FBUyxHQUFBRCxLQUFBLENBQXJCRSxVQUFVO01BSVYsSUFBSSxRQUFPRCxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRUUsWUFBWSxNQUFLLFFBQVEsRUFBRTtRQUMvQ1gsY0FBYyxDQUFDUyxTQUFTLENBQUNFLFlBQVksQ0FBQztNQUN4QztNQUNBLElBQUlGLFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUVHLFVBQVUsSUFBSSxRQUFPSCxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRUksT0FBTyxNQUFLLFNBQVMsRUFBRTtRQUNwRVosZ0JBQWdCLENBQUNRLFNBQVMsQ0FBQ0csVUFBVSxFQUFFSCxTQUFTLENBQUNJLE9BQU8sQ0FBQztNQUMzRDtJQUNGLENBQUM7SUFFRFIsSUFBSSxDQUFDUyxnQkFBZ0IsQ0FBQ1IsT0FBTyxFQUFFQyxpQkFBaUIsQ0FBQztJQUVqRCxJQUFJLENBQUNMLG1CQUFtQixDQUFDRSxPQUFPLEVBQUU7TUFBQSxJQUFBVyxnQkFBQSxFQUFBQyxpQkFBQTtNQUNoQ1gsSUFBSSxDQUFDWSxxQkFBcUIsQ0FDeEI7UUFDRUMsVUFBVSxFQUFFWixPQUFPO1FBQ25CMUgsTUFBTSxHQUFBbUksZ0JBQUEsR0FBRVYsSUFBSSxDQUFDYyxVQUFVLGNBQUFKLGdCQUFBLHVCQUFmQSxnQkFBQSxDQUFpQks7TUFDM0IsQ0FBQyxFQUNEZCxPQUFPLEVBQ1B6QixJQUFJLEVBQ0pBLElBQUksR0FBQW1DLGlCQUFBLEdBQ0pYLElBQUksQ0FBQ2dCLFdBQVcsY0FBQUwsaUJBQUEsdUJBQWhCQSxpQkFBQSxDQUFrQk0sYUFDcEIsQ0FBQztNQUNEcEIsbUJBQW1CLENBQUNFLE9BQU8sR0FBRyxJQUFJO0lBQ3BDO0lBRUEsT0FBT0QsU0FBUztFQUNsQixDQUFDLEVBQUUsQ0FBQ3RCLElBQUksRUFBRW1CLGNBQWMsRUFBRUMsZ0JBQWdCLENBQUMsQ0FBQztFQUU1QyxJQUFNc0IsZUFBZSxHQUFHMUMsSUFBSSxhQUFKQSxJQUFJLGdCQUFBeEMsaUJBQUEsR0FBSndDLElBQUksQ0FBRTJDLFdBQVcsY0FBQW5GLGlCQUFBLHVCQUFqQkEsaUJBQUEsQ0FBbUJvRixTQUFTO0VBQ3BELElBQU1DLGVBQWUsR0FBRyxDQUFDLEVBQUNILGVBQWUsYUFBZkEsZUFBZSxlQUFmQSxlQUFlLENBQUVJLE1BQU07RUFDakQsSUFBTUMsMkJBQTJCLEdBQUcsQ0FBQyxDQUFDQyxNQUFNLENBQUNDLHdDQUF3QztFQUNyRixJQUFNQyxhQUFhLEdBQUcsQ0FBQyxFQUFDUixlQUFlLGFBQWZBLGVBQWUsZUFBZkEsZUFBZSxDQUFFUyxJQUFJLEtBQUlKLDJCQUEyQjtFQUM1RSxJQUFNSyxhQUFhLEdBQUd2UCxpQkFBaUIsQ0FBQ21NLElBQUksQ0FBQyxJQUFJbE0sb0JBQW9CLENBQUNrTSxJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRXFELFVBQVUsQ0FBQztFQUN2RixJQUFNQyw0QkFBNEIsR0FBRyxDQUFDLENBQUNULGVBQWUsSUFBSUUsMkJBQTJCO0VBQ3JGLElBQU1RLG1CQUFtQixHQUFHMU0sMkJBQTJCLENBQUN5TSw0QkFBNEIsRUFBRUosYUFBYSxFQUFFRSxhQUFhLENBQUM7RUFDbkgsSUFBTUksa0JBQWtCLEdBQUcsQ0FBQzFFLGlCQUFpQixLQUFLd0UsNEJBQTRCLElBQUlKLGFBQWEsSUFBSUUsYUFBYSxDQUFDO0VBQ2pILElBQU1LLHlCQUF5QixHQUFHMVIsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUUvQ0YsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUNxUixhQUFhLElBQUlPLHlCQUF5QixDQUFDbEMsT0FBTyxFQUFFO0lBRXpEa0MseUJBQXlCLENBQUNsQyxPQUFPLEdBQUcsSUFBSTtJQUN4Q2xOLGlCQUFpQixDQUFDRixjQUFjLENBQUN1UCxtQkFBbUIsQ0FBQztFQUN2RCxDQUFDLEVBQUUsQ0FBQ1IsYUFBYSxDQUFDLENBQUM7RUFFbkIsSUFBTS9ILGdCQUFnQjtJQUFBLElBQUF3SSxLQUFBLEdBQUFDLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBRyxTQUFBQyxRQUFPNUwsSUFBUztNQUFBLE9BQUEwTCxtQkFBQSxDQUFBRyxJQUFBLFdBQUFDLFFBQUE7UUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtVQUFBO1lBQ3ZDeEQsVUFBVSxDQUFDeEksSUFBSSxDQUFDK0IsaUJBQWlCLENBQUM7WUFDbEN3RixjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3BCOUIsY0FBYyxDQUFDLENBQUM7VUFBQTtVQUFBO1lBQUEsT0FBQXFHLFFBQUEsQ0FBQUcsSUFBQTtRQUFBO01BQUEsR0FBQUwsT0FBQTtJQUFBLENBQ2pCO0lBQUEsZ0JBSks1SSxnQkFBZ0JBLENBQUFrSixFQUFBO01BQUEsT0FBQVYsS0FBQSxDQUFBVyxLQUFBLE9BQUFDLFNBQUE7SUFBQTtFQUFBLEdBSXJCO0VBRUQsSUFBTXJKLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUkvQyxJQUFTLEVBQUs7SUFDdEN5SSxVQUFVLENBQUN6SSxJQUFJLENBQUM7SUFDaEJ1SCxjQUFjLENBQUMsSUFBSSxDQUFDO0VBQ3RCLENBQUM7RUFFRCxJQUFNOEUsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJN0osTUFBYyxFQUFLO0lBQzFDK0UsY0FBYyxDQUFDdkksd0JBQXdCLENBQUNzSSxXQUFXLEVBQUU5RSxNQUFNLENBQUMsQ0FBQztFQUMvRCxDQUFDO0VBRUQsSUFBTThKLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUEsRUFBUztJQUM3Qi9FLGNBQWMsQ0FBQyxJQUFJLENBQUM7RUFDdEIsQ0FBQztFQUVEN04sU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNNlMsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBSW5JLEtBQWlCLEVBQUs7TUFDaEQsSUFBSW5GLDhCQUE4QixDQUFDcUksV0FBVyxFQUFFbEQsS0FBSyxDQUFDb0ksTUFBaUIsQ0FBQyxFQUFFO1FBQ3hFakYsY0FBYyxDQUFDLElBQUksQ0FBQztNQUN0QjtJQUNGLENBQUM7SUFFRCxJQUFJRCxXQUFXLEVBQUU7TUFDZm1GLFFBQVEsQ0FBQ0MsZ0JBQWdCLENBQUMsV0FBVyxFQUFFSCxrQkFBa0IsQ0FBQztJQUM1RDtJQUVBLE9BQU8sWUFBTTtNQUNYRSxRQUFRLENBQUNFLG1CQUFtQixDQUFDLFdBQVcsRUFBRUosa0JBQWtCLENBQUM7SUFDL0QsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDakYsV0FBVyxDQUFDLENBQUM7RUFFakIsSUFBTXNGLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUEsRUFBUztJQUNoQyxJQUFJdEYsV0FBVyxFQUFFO01BQ2ZDLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDdEI7SUFDQU8sY0FBYyxDQUFDL00sTUFBTSxDQUFDOFIsYUFBYSxFQUFFO01BQUVqTCxNQUFNLEVBQUV1RixNQUFNLEdBQUcsT0FBTyxHQUFHO0lBQU8sQ0FBQyxDQUFDO0lBQzNFLElBQU02RSxJQUFJLEdBQUcsQ0FBQzdFLE1BQU07SUFDcEIsSUFBSVYsSUFBSSxLQUFLMEMsU0FBUyxFQUFFO01BQ3RCakMsbUJBQW1CLENBQUM4RSxJQUFJLENBQUM7SUFDM0I7SUFDQXhGLFlBQVksYUFBWkEsWUFBWSxlQUFaQSxZQUFZLENBQUd3RixJQUFJLENBQUM7RUFDdEIsQ0FBQztFQUVELElBQU1jLHFCQUFxQjtJQUFBLElBQUFDLEtBQUEsR0FBQXRCLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBRyxTQUFBcUIsU0FBQTtNQUFBLElBQUFDLFFBQUEsRUFBQUMsSUFBQSxFQUFBQyxZQUFBLEVBQUFDLEVBQUEsRUFBQUMsR0FBQTtNQUFBLE9BQUEzQixtQkFBQSxDQUFBRyxJQUFBLFdBQUF5QixTQUFBO1FBQUEsa0JBQUFBLFNBQUEsQ0FBQXZCLElBQUEsR0FBQXVCLFNBQUEsQ0FBQXRCLElBQUE7VUFBQTtZQUFBLEtBQ3hCbkcsb0JBQW9CO2NBQUF5SCxTQUFBLENBQUF0QixJQUFBO2NBQUE7WUFBQTtZQUFBc0IsU0FBQSxDQUFBdkIsSUFBQTtZQUFBdUIsU0FBQSxDQUFBdEIsSUFBQTtZQUFBLE9BRWRuRyxvQkFBb0IsQ0FBQyxDQUFDO1VBQUE7WUFBQXlILFNBQUEsQ0FBQXRCLElBQUE7WUFBQTtVQUFBO1lBQUFzQixTQUFBLENBQUF2QixJQUFBO1lBQUFxQixFQUFBLEdBQUFFLFNBQUE7WUFFNUI5SCxPQUFPLENBQUMsQ0FBQztVQUFBO1lBQUEsT0FBQThILFNBQUEsQ0FBQUMsTUFBQTtVQUFBO1lBQUFELFNBQUEsQ0FBQXZCLElBQUE7WUFBQXVCLFNBQUEsQ0FBQXRCLElBQUE7WUFBQSxPQU1ZdlEsU0FBUyxDQUFDO2NBQy9CK1IsSUFBSSxnREFBQTdKLE1BQUEsQ0FBZ0QvSCxVQUFVLENBQUNrTCxJQUFJLENBQUMyRyxRQUFRLENBQUMsQ0FBRTtjQUMvRUMsTUFBTSxFQUFFO1lBQ1YsQ0FBQyxDQUFDO1VBQUE7WUFISVQsUUFBUSxHQUFBSyxTQUFBLENBQUFLLElBQUE7WUFBQUwsU0FBQSxDQUFBdEIsSUFBQTtZQUFBLE9BSUtpQixRQUFRLENBQUNXLElBQUksQ0FBQyxDQUFDO1VBQUE7WUFBNUJWLElBQUksR0FBQUksU0FBQSxDQUFBSyxJQUFBO1lBQ0pSLFlBQVksR0FBRyxDQUFDRCxJQUFJLENBQUNBLElBQUksSUFBSSxFQUFFLEVBQUVXLElBQUksQ0FBQyxVQUFDQyxTQUE0RDtjQUFBLE9BQ3ZHL1IsNkJBQTZCLENBQUMrUixTQUFTLENBQUM7WUFBQSxDQUMxQyxDQUFDO1lBQUEsSUFFSVgsWUFBWTtjQUFBRyxTQUFBLENBQUF0QixJQUFBO2NBQUE7WUFBQTtZQUFBLE9BQUFzQixTQUFBLENBQUFDLE1BQUE7VUFBQTtZQUlqQnJGLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDaEJDLFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUcsSUFBSSxDQUFDO1lBQ2pCQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2I7WUFDQTtZQUNBM0MsY0FBYyxDQUFDLENBQUM7WUFDaEJ3QyxXQUFXLENBQUNrRixZQUFZLENBQUM7WUFBQUcsU0FBQSxDQUFBdEIsSUFBQTtZQUFBO1VBQUE7WUFBQXNCLFNBQUEsQ0FBQXZCLElBQUE7WUFBQXNCLEdBQUEsR0FBQUMsU0FBQTtZQUV6QjlILE9BQU8sQ0FBQyxDQUFDO1VBQUE7VUFBQTtZQUFBLE9BQUE4SCxTQUFBLENBQUFyQixJQUFBO1FBQUE7TUFBQSxHQUFBZSxRQUFBO0lBQUEsQ0FFWjtJQUFBLGdCQWxDS0YscUJBQXFCQSxDQUFBO01BQUEsT0FBQUMsS0FBQSxDQUFBWixLQUFBLE9BQUFDLFNBQUE7SUFBQTtFQUFBLEdBa0MxQjtFQUVEMVMsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUNpTyxlQUFlLENBQUN5QixPQUFPLEVBQUU7TUFDNUJ6QixlQUFlLENBQUN5QixPQUFPLEdBQUcsSUFBSTtNQUM5QlYsVUFBVSxDQUFDO1FBQUVDLEtBQUssRUFBTEEsS0FBSztRQUFFQyxNQUFNLEVBQU5BO01BQU8sQ0FBQyxDQUFDO01BQzdCO0lBQ0Y7SUFDQTtJQUNBLElBQUk3QyxZQUFZLEVBQUU7TUFDaEIyQyxVQUFVLENBQUM7UUFBRUMsS0FBSyxFQUFMQSxLQUFLO1FBQUVDLE1BQU0sRUFBTkE7TUFBTyxDQUFDLENBQUM7TUFDN0I1QyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7SUFDOUI7RUFDRixDQUFDLEVBQUUsQ0FBQ0QsWUFBWSxFQUFFQyxxQkFBcUIsRUFBRTBDLFVBQVUsRUFBRUMsS0FBSyxFQUFFQyxNQUFNLENBQUMsQ0FBQztFQUVwRWxQLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBTXFVLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUFBLEVBQVM7TUFDekIsSUFBSSxDQUFDbkcsaUJBQWlCLENBQUN3QixPQUFPLElBQUksQ0FBQ1AsWUFBWSxJQUFJRSxrQkFBa0IsSUFBSTlDLFFBQVEsRUFBRTtRQUNqRjtNQUNGO01BRUEsSUFBQStILHFCQUFBLEdBQWtEcEcsaUJBQWlCLENBQUN3QixPQUFPO1FBQW5FNkUsU0FBUyxHQUFBRCxxQkFBQSxDQUFUQyxTQUFTO1FBQUVDLFlBQVksR0FBQUYscUJBQUEsQ0FBWkUsWUFBWTtRQUFFQyxZQUFZLEdBQUFILHFCQUFBLENBQVpHLFlBQVk7TUFDN0MsSUFBSXhQLDBCQUEwQixDQUFDc1AsU0FBUyxFQUFFQyxZQUFZLEVBQUVDLFlBQVksQ0FBQyxFQUFFO1FBQ3JFckYsYUFBYSxDQUFDLENBQUM7TUFDakI7SUFDRixDQUFDO0lBRUQsSUFBTXNGLFNBQVMsR0FBR3hHLGlCQUFpQixDQUFDd0IsT0FBTztJQUMzQyxJQUFJZ0YsU0FBUyxFQUFFO01BQ2JBLFNBQVMsQ0FBQzFCLGdCQUFnQixDQUFDLFFBQVEsRUFBRXFCLFlBQVksQ0FBQztJQUNwRDtJQUVBLE9BQU8sWUFBTTtNQUNYLElBQUlLLFNBQVMsRUFBRTtRQUNiQSxTQUFTLENBQUN6QixtQkFBbUIsQ0FBQyxRQUFRLEVBQUVvQixZQUFZLENBQUM7TUFDdkQ7SUFDRixDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNsRixZQUFZLEVBQUVFLGtCQUFrQixFQUFFRCxhQUFhLEVBQUU3QyxRQUFRLENBQUMsQ0FBQztFQUUvRCxJQUFNb0ksYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFBLEVBQVM7SUFDMUJ2RyxjQUFjLENBQUMvTSxNQUFNLENBQUN1VCxnQkFBZ0IsQ0FBQztJQUN2QyxJQUFJaEgsV0FBVyxFQUFFO01BQ2ZDLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDdEI7SUFDQSxJQUFJN0Isa0JBQWtCLEVBQUU7TUFDdEJBLGtCQUFrQixDQUFDLENBQUM7TUFDcEI7SUFDRjtJQUNBRCxjQUFjLENBQUMsQ0FBQztFQUNsQixDQUFDO0VBRUQvTCxTQUFTLENBQUMsWUFBTTtJQUNkO0lBQ0EsSUFBTTZVLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUEsRUFBUztNQUNqQzVHLGVBQWUsQ0FBQ3lCLE9BQU8sR0FBRyxJQUFJO01BQzlCVixVQUFVLENBQUM7UUFBRUMsS0FBSyxFQUFFLEVBQUU7UUFBRUMsTUFBTSxFQUFFLENBQUM7UUFBRTRGLFVBQVUsRUFBRTtNQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QvQixRQUFRLENBQUNDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFNkIsb0JBQW9CLENBQUM7SUFDbEUsT0FBTyxZQUFNO01BQ1g5QixRQUFRLENBQUNFLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFNEIsb0JBQW9CLENBQUM7SUFDdkUsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDN0YsVUFBVSxDQUFDLENBQUM7RUFFaEIsSUFBTStGLGtCQUFrQixHQUFHNVAsdUJBQXVCLENBQUNpSCxXQUFXLEVBQUVLLGVBQWUsQ0FBQztFQUVoRixJQUFNdUksaUJBQWlCLEdBQUc1UCx3QkFBd0IsQ0FBQztJQUNqRDJQLGtCQUFrQixFQUFsQkEsa0JBQWtCO0lBQ2xCM0ksV0FBVyxFQUFYQSxXQUFXO0lBQ1hHLFFBQVEsRUFBUkEsUUFBUTtJQUNScUMsWUFBWSxFQUFaQSxZQUFZO0lBQ1pqQyxzQkFBc0IsRUFBdEJBLHNCQUFzQjtJQUN0QnNJLGlCQUFpQixFQUFFQyxPQUFPLENBQUNyRSxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRVMsSUFBSSxDQUFDO0lBQ2pEaEQsYUFBYSxFQUFiQTtFQUNGLENBQUMsQ0FBQztFQUVGLElBQU02RyxhQUFhLGdCQUNqQnpQLElBQUEsQ0FBQ2hGLE9BQU87SUFBQ3dHLEtBQUssRUFBRVksQ0FBQyxDQUFDLHVCQUF1QixDQUFFO0lBQUNnQyxNQUFNLEVBQUVoRCxhQUFjO0lBQUF5QyxRQUFBLGVBQ2hFN0QsSUFBQSxDQUFDcEMscUJBQXFCO01BQUNpRCxPQUFPLEVBQUVvTyxhQUFjO01BQUMsY0FBWTdNLENBQUMsQ0FBQyx1QkFBdUIsQ0FBRTtNQUFBeUIsUUFBQSxlQUNwRjdELElBQUEsQ0FBQ3RFLE9BQU87UUFBQzhJLEtBQUssRUFBRSxFQUFHO1FBQUNDLE1BQU0sRUFBRTtNQUFHLENBQUU7SUFBQyxDQUNiO0VBQUMsQ0FDakIsQ0FDVjtFQUVELG9CQUNFdkUsS0FBQSxDQUFDcEMsY0FBYztJQUFDNFIsT0FBTyxFQUFFM0gsTUFBTztJQUFBbEUsUUFBQSxnQkFDOUIzRCxLQUFBLENBQUNuQyxpQkFBaUI7TUFBQzJSLE9BQU8sRUFBRTNILE1BQU87TUFBQWxFLFFBQUEsZ0JBQ2pDN0QsSUFBQSxDQUFDaEYsT0FBTztRQUFDd0csS0FBSyxFQUFFdUcsTUFBTSxHQUFHM0YsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLEdBQUdBLENBQUMsQ0FBQyxpQkFBaUIsQ0FBRTtRQUFDZ0MsTUFBTSxFQUFFaEQsYUFBYztRQUFBeUMsUUFBQSxlQUNqRzdELElBQUEsQ0FBQ3JDLHlCQUF5QjtVQUFDa0QsT0FBTyxFQUFFMk0sbUJBQW9CO1VBQUN6RixNQUFNLEVBQUVBLE1BQU87VUFBQWxFLFFBQUEsRUFDckVrRSxNQUFNLGdCQUNML0gsSUFBQSxDQUFDdEYsaUJBQWlCO1lBQUNpVixLQUFLLEVBQUMsd0JBQXdCO1lBQUNuTCxLQUFLLEVBQUUsRUFBRztZQUFDQyxNQUFNLEVBQUU7VUFBRyxDQUFFLENBQUMsZ0JBRTNFekUsSUFBQSxDQUFDckYsT0FBTztZQUFDZ1YsS0FBSyxFQUFDLHFCQUFxQjtZQUFDbkwsS0FBSyxFQUFFLEVBQUc7WUFBQ0MsTUFBTSxFQUFFO1VBQUcsQ0FBRTtRQUM5RCxDQUN3QjtNQUFDLENBQ3JCLENBQUMsRUFDVDZLLGlCQUFpQixHQUFHRyxhQUFhLEdBQUcsSUFBSSxFQUN4QyxDQUFDMUgsTUFBTSxJQUFJa0Usa0JBQWtCLGdCQUM1Qi9MLEtBQUEsQ0FBQUUsU0FBQTtRQUFBeUQsUUFBQSxnQkFDRTdELElBQUEsQ0FBQ1gsMEJBQTBCLElBQUUsQ0FBQyxFQUM3QjBNLDRCQUE0QixnQkFDM0IvTCxJQUFBLENBQUNoRixPQUFPO1VBQUN3RyxLQUFLLEVBQUVZLENBQUMsQ0FBQywwQkFBMEIsQ0FBRTtVQUFDZ0MsTUFBTSxFQUFFaEQsYUFBYztVQUFBeUMsUUFBQSxlQUNuRTdELElBQUEsQ0FBQ25DLHVCQUF1QjtZQUN0QitSLE9BQU8sRUFBRTdJLGVBQWUsS0FBSyxTQUFVO1lBQ3ZDbEcsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUEsRUFBUTtjQUNiNkgsY0FBYyxDQUFDL00sTUFBTSxDQUFDa1UsWUFBWSxDQUFDO2NBQ25DbkMscUJBQXFCLENBQUMsQ0FBQztZQUN6QixDQUFFO1lBQUE3SixRQUFBLGVBRUY3RCxJQUFBLENBQUN6RSxhQUFhO2NBQUN1SixJQUFJLEVBQUU7WUFBRyxDQUFFO1VBQUMsQ0FDSjtRQUFDLENBQ25CLENBQUMsR0FDUixJQUFJLEVBQ1A2RyxhQUFhLGdCQUNaM0wsSUFBQSxDQUFDaEYsT0FBTztVQUFDd0csS0FBSyxFQUFFWSxDQUFDLENBQUMsMkJBQTJCLENBQUU7VUFBQ2dDLE1BQU0sRUFBRWhELGFBQWM7VUFBQXlDLFFBQUEsZUFDcEU3RCxJQUFBLENBQUNuQyx1QkFBdUI7WUFDdEIrUixPQUFPLEVBQUU3SSxlQUFlLEtBQUssVUFBVztZQUN4QyxnQkFBY2xLLGlCQUFpQixDQUFDc1AsbUJBQW9CO1lBQ3BEdEwsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUEsRUFBUTtjQUNiNkgsY0FBYyxDQUFDL00sTUFBTSxDQUFDbVUsaUJBQWlCLENBQUM7Y0FDeEN2SixxQkFBcUIsQ0FBQyxDQUFDO1lBQ3pCLENBQUU7WUFBQTFDLFFBQUEsZUFFRjdELElBQUEsQ0FBQ3hFLGVBQWU7Y0FBQ3NKLElBQUksRUFBRTtZQUFHLENBQUU7VUFBQyxDQUNOO1FBQUMsQ0FDbkIsQ0FBQyxHQUNSLElBQUksRUFDUCtHLGFBQWEsZ0JBQ1o3TCxJQUFBLENBQUNoRixPQUFPO1VBQUN3RyxLQUFLLEVBQUVZLENBQUMsQ0FBQywyQkFBMkIsQ0FBRTtVQUFDZ0MsTUFBTSxFQUFFaEQsYUFBYztVQUFBeUMsUUFBQSxlQUNwRTdELElBQUEsQ0FBQ25DLHVCQUF1QjtZQUN0QitSLE9BQU8sRUFBRTdJLGVBQWUsS0FBSyxVQUFXO1lBQ3hDbEcsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUEsRUFBUTtjQUNiNkgsY0FBYyxDQUFDL00sTUFBTSxDQUFDb1UsaUJBQWlCLENBQUM7Y0FDeEN2SixnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3BCLENBQUU7WUFBQTNDLFFBQUEsZUFFRjdELElBQUEsQ0FBQ3ZFLGFBQWE7Y0FBQ3FKLElBQUksRUFBRTtZQUFHLENBQUU7VUFBQyxDQUNKO1FBQUMsQ0FDbkIsQ0FBQyxHQUNSLElBQUk7TUFBQSxDQUNSLENBQUMsR0FDRCxJQUFJO0lBQUEsQ0FDUyxDQUFDLGVBQ3BCNUUsS0FBQSxDQUFDbEMsY0FBYztNQUFDMFIsT0FBTyxFQUFFM0gsTUFBTztNQUFBbEUsUUFBQSxHQUM3QmtFLE1BQU0sZ0JBQ0w3SCxLQUFBLENBQUNqQyxtQkFBbUI7UUFBQTRGLFFBQUEsZ0JBQ2xCM0QsS0FBQSxDQUFDaEMscUJBQXFCO1VBQUEyRixRQUFBLEdBQ25Cb0ksa0JBQWtCLGdCQUNqQi9MLEtBQUEsQ0FBQy9CLHVCQUF1QjtZQUFBMEYsUUFBQSxHQUNyQmtJLDRCQUE0QixnQkFDM0I3TCxLQUFBLENBQUM5QiwwQkFBMEI7Y0FDekI0UixJQUFJLEVBQUMsUUFBUTtjQUNiblAsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUEsRUFBUTtnQkFDYjZILGNBQWMsQ0FBQy9NLE1BQU0sQ0FBQ2tVLFlBQVksQ0FBQztnQkFDbkNuQyxxQkFBcUIsQ0FBQyxDQUFDO2NBQ3pCLENBQUU7Y0FDRmtDLE9BQU8sRUFBRTdJLGVBQWUsS0FBSyxTQUFVO2NBQUFsRCxRQUFBLGdCQUV2QzdELElBQUEsQ0FBQ3pFLGFBQWE7Z0JBQUN1SixJQUFJLEVBQUU7Y0FBRyxDQUFFLENBQUMsZUFDM0I5RSxJQUFBLENBQUMzQix5QkFBeUI7Z0JBQUF3RixRQUFBLEVBQUV6QixDQUFDLENBQUMsMEJBQTBCO2NBQUMsQ0FBNEIsQ0FBQztZQUFBLENBQzVELENBQUMsR0FDM0IsSUFBSSxFQUNQdUosYUFBYSxnQkFDWnpMLEtBQUEsQ0FBQzlCLDBCQUEwQjtjQUN6QjRSLElBQUksRUFBQyxRQUFRO2NBQ2IsZ0JBQWNuVCxpQkFBaUIsQ0FBQ3NQLG1CQUFvQjtjQUNwRHRMLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVE7Z0JBQ2I2SCxjQUFjLENBQUMvTSxNQUFNLENBQUNtVSxpQkFBaUIsQ0FBQztnQkFDeEN2SixxQkFBcUIsQ0FBQyxDQUFDO2NBQ3pCLENBQUU7Y0FDRnFKLE9BQU8sRUFBRTdJLGVBQWUsS0FBSyxVQUFXO2NBQUFsRCxRQUFBLGdCQUV4QzdELElBQUEsQ0FBQ3hFLGVBQWU7Z0JBQUNzSixJQUFJLEVBQUU7Y0FBRyxDQUFFLENBQUMsZUFDN0I5RSxJQUFBLENBQUMzQix5QkFBeUI7Z0JBQUF3RixRQUFBLEVBQUV6QixDQUFDLENBQUMsMkJBQTJCO2NBQUMsQ0FBNEIsQ0FBQztZQUFBLENBQzdELENBQUMsR0FDM0IsSUFBSSxFQUNQeUosYUFBYSxnQkFDWjNMLEtBQUEsQ0FBQzlCLDBCQUEwQjtjQUN6QjRSLElBQUksRUFBQyxRQUFRO2NBQ2JuUCxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUFRO2dCQUNiNkgsY0FBYyxDQUFDL00sTUFBTSxDQUFDb1UsaUJBQWlCLENBQUM7Z0JBQ3hDdkosZ0JBQWdCLENBQUMsQ0FBQztjQUNwQixDQUFFO2NBQ0ZvSixPQUFPLEVBQUU3SSxlQUFlLEtBQUssVUFBVztjQUFBbEQsUUFBQSxnQkFFeEM3RCxJQUFBLENBQUN2RSxhQUFhO2dCQUFDcUosSUFBSSxFQUFFO2NBQUcsQ0FBRSxDQUFDLGVBQzNCOUUsSUFBQSxDQUFDM0IseUJBQXlCO2dCQUFBd0YsUUFBQSxFQUFFekIsQ0FBQyxDQUFDLDJCQUEyQjtjQUFDLENBQTRCLENBQUMsZUFDdkZwQyxJQUFBLENBQUMxQiw0QkFBNEI7Z0JBQUF1RixRQUFBLEVBQUV6QixDQUFDLENBQUMsMkJBQTJCO2NBQUMsQ0FBK0IsQ0FBQztZQUFBLENBQ25FLENBQUMsR0FDM0IsSUFBSTtVQUFBLENBQ2UsQ0FBQyxHQUN4QixJQUFJLGVBQ1JwQyxJQUFBLENBQUN4QixpQ0FBaUM7WUFBQXFGLFFBQUEsZUFDaEM3RCxJQUFBLENBQUN6Qiw4QkFBOEI7Y0FBQXNGLFFBQUEsRUFBRXpCLENBQUMsQ0FBQyxxQkFBcUI7WUFBQyxDQUFpQztVQUFDLENBQzFELENBQUM7UUFBQSxDQUNmLENBQUMsZUFDeEJwQyxJQUFBLENBQUN2QixxQkFBcUI7VUFDcEI0RixHQUFHLEVBQUVtRSxpQkFBa0I7VUFDdkJ5SCxTQUFTLEVBQUU5RyxLQUFLLENBQUMrRyxNQUFNLEdBQUcsQ0FBRTtVQUM1QkMsY0FBYyxFQUFFdEosUUFBUSxHQUFHLE9BQU8sR0FBRyxTQUFVO1VBQy9DdUosb0JBQW9CLEVBQUVuRSxrQkFBa0IsR0FBR0QsbUJBQW1CLEdBQUcsQ0FBRTtVQUFBbkksUUFBQSxFQUVsRWdELFFBQVEsSUFBSSxDQUFDc0MsS0FBSyxDQUFDK0csTUFBTSxnQkFDeEJoUSxLQUFBLENBQUN4QiwwQkFBMEI7WUFBQW1GLFFBQUEsZ0JBQ3pCN0QsSUFBQSxDQUFDckIsdUJBQXVCO2NBQUFrRixRQUFBLGVBQ3RCN0QsSUFBQSxDQUFDM0UsVUFBVSxJQUFFO1lBQUMsQ0FDUyxDQUFDLGVBQzFCNkUsS0FBQSxDQUFDdEIscUJBQXFCO2NBQUFpRixRQUFBLGdCQUNwQjdELElBQUEsQ0FBQ25CLDZCQUE2QjtnQkFBQWdGLFFBQUEsZUFDNUI3RCxJQUFBLENBQUMvRCxTQUFTLElBQUU7Y0FBQyxDQUNnQixDQUFDLGVBQ2hDK0QsSUFBQSxDQUFDbEIsNEJBQTRCO2dCQUFBK0UsUUFBQSxFQUFFekIsQ0FBQyxDQUFDLHFCQUFxQjtjQUFDLENBQStCLENBQUM7WUFBQSxDQUNsRSxDQUFDO1VBQUEsQ0FDRSxDQUFDLEdBQzNCOEcsWUFBWSxnQkFDZGxKLElBQUEsQ0FBQ2pCLHFCQUFxQjtZQUFBOEUsUUFBQSxlQUNwQjdELElBQUEsQ0FBQzVFLG9CQUFvQixJQUFFO1VBQUMsQ0FDSCxDQUFDLEdBQ3RCK04sS0FBSyxDQUFDK0csTUFBTSxnQkFDZGhRLEtBQUEsQ0FBQUUsU0FBQTtZQUFBeUQsUUFBQSxHQUNHc0YsS0FBSyxDQUFDeEQsR0FBRyxDQUFDLFVBQUMvRSxJQUFJLEVBQUVPLEtBQUssRUFBSztjQUMxQixvQkFDRW5CLElBQUEsQ0FBQ1UsZUFBZTtnQkFFZFMsS0FBSyxFQUFFQSxLQUFNO2dCQUNiUCxJQUFJLEVBQUVBLElBQUs7Z0JBQ1hDLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFNkMsUUFBUSxFQUFJO2tCQUNuQixJQUFJd0UsV0FBVyxFQUFFO29CQUNmQyxjQUFjLENBQUMsSUFBSSxDQUFDO2tCQUN0QjtrQkFDQWpDLFVBQVUsQ0FBQ3hDLFFBQVEsQ0FBQztnQkFDdEIsQ0FBRTtnQkFDRjVDLFdBQVcsRUFBRW9ILFdBQVcsS0FBS3RILElBQUksQ0FBQ3FFLEVBQUc7Z0JBQ3JDbEUsV0FBVyxFQUFFa00sZUFBZ0I7Z0JBQzdCak0sWUFBWSxFQUFFa00sZ0JBQWlCO2dCQUMvQmpNLFFBQVEsRUFBRTtrQkFDUjJDLGdCQUFnQixFQUFoQkEsZ0JBQWdCO2tCQUNoQkQsZ0JBQWdCLEVBQWhCQTtnQkFDRixDQUFFO2dCQUNGekMsVUFBVSxFQUFFa0gsWUFBWSxLQUFLeEgsSUFBSSxDQUFDK0IsaUJBQWtCO2dCQUNwRHZCLGFBQWEsRUFBRUE7Y0FBYyxHQWpCeEJSLElBQUksQ0FBQ3FFLEVBa0JYLENBQUM7WUFFTixDQUFDLENBQUMsRUFDRDBFLGtCQUFrQixpQkFDakIzSixJQUFBLENBQUNoQixxQkFBcUI7Y0FBQTZFLFFBQUEsZUFDcEI3RCxJQUFBLENBQUM1RSxvQkFBb0I7Z0JBQUNpVixLQUFLLEVBQUU7Y0FBRSxDQUFFO1lBQUMsQ0FDYixDQUN4QjtVQUFBLENBQ0QsQ0FBQyxnQkFFSG5RLEtBQUEsQ0FBQ2pCLG9CQUFvQjtZQUFBNEUsUUFBQSxnQkFDbkI3RCxJQUFBLENBQUMvRSxnQkFBZ0IsSUFBRSxDQUFDLGVBQ3BCK0UsSUFBQSxDQUFDZCx3QkFBd0I7Y0FBQTJFLFFBQUEsRUFBRXpCLENBQUMsQ0FBQyxxQkFBcUI7WUFBQyxDQUEyQixDQUFDO1VBQUEsQ0FDM0Q7UUFDdkIsQ0FDb0IsQ0FBQyxlQUN4QnBDLElBQUEsQ0FBQ2IscUJBQXFCO1VBQUEwRSxRQUFBLEVBQ25CZ0QsUUFBUSxJQUFJc0MsS0FBSyxDQUFDK0csTUFBTSxnQkFDdkJoUSxLQUFBLENBQUN0QixxQkFBcUI7WUFBQWlGLFFBQUEsZ0JBQ3BCN0QsSUFBQSxDQUFDbkIsNkJBQTZCO2NBQUFnRixRQUFBLGVBQzVCN0QsSUFBQSxDQUFDL0QsU0FBUyxJQUFFO1lBQUMsQ0FDZ0IsQ0FBQyxlQUNoQytELElBQUEsQ0FBQ2xCLDRCQUE0QjtjQUFBK0UsUUFBQSxFQUFFekIsQ0FBQyxDQUFDLHFCQUFxQjtZQUFDLENBQStCLENBQUM7VUFBQSxDQUNsRSxDQUFDLEdBQ3RCO1FBQUksQ0FDYSxDQUFDO01BQUEsQ0FDTCxDQUFDLEdBQ3BCLElBQUksZUFDUnBDLElBQUEsQ0FBQ1osdUJBQXVCO1FBQUNzUSxPQUFPLEVBQUUzSCxNQUFPO1FBQUN1SSxlQUFlLEVBQUUsQ0FBQyxDQUFDMUgsYUFBYztRQUFBL0UsUUFBQSxFQUN4RStFLGFBQWEsZ0JBQUc1SSxJQUFBLENBQUM3RCxjQUFjO1VBQUN5TSxhQUFhLEVBQUVBLGFBQWM7VUFBQ2IsTUFBTSxFQUFFQTtRQUFPLENBQUUsQ0FBQyxHQUFHO01BQUksQ0FDakUsQ0FBQztJQUFBLENBQ1osQ0FBQztFQUFBLENBQ0gsQ0FBQztBQUVyQixDQUFDIiwiaWdub3JlTGlzdCI6W119
719
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJDaGV2cm9uRG91YmxlTGVmdCIsIkhpc3RvcnkiLCJDVUJ1dHRvbiIsIk1lbnVEb3RzIiwiUGVuY2lsIiwiVHJhc2giLCJUb29sdGlwIiwiRW1wdHlIaXN0b3J5SWNvbiIsInVzZVJlc2l6ZUxpc3RlbmVyIiwidXNlQ2hhdHMiLCJTaWRlYmFyQ2hhdHNTa2VsZXRvbiIsIkVycm9yU3RhdGUiLCJNQUlBSWNvbiIsIk1haWFTdG9yZUljb24iLCJNeUFnZW50c05hdkljb24iLCJTa2lsbHNOYXZJY29uIiwiTmV3Q2hhdCIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlVCIsIk9wdGlvbkl0ZW0iLCJFZGl0UXVlc3Rpb25Nb2RhbCIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJFcnJvckljb24iLCJ1c2VVc2VyIiwiRmVlZGJhY2tCdXR0b24iLCJ1c2VHbG9iYWxDb250ZXh0IiwiZmV0Y2hNYWlhIiwiY2FuQWNjZXNzVG9Ta2lsbHMiLCJpc1NraWxsc1BpbG90Q29tcGFueSIsIm1hcENPUkxhbmciLCJmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMiLCJnZXRBZ2VudERpc3BsYXlOYW1lIiwiaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQiLCJBUFBDVUVTX0VWRU5UUyIsIkFQUENVRVNfU0VMRUNUT1JTIiwidHJhY2tBcHBjdWVzRXZlbnQiLCJTZXNzaW9uR2VuZXJhdGluZ0RvdCIsInVzZUlzU2Vzc2lvbkdlbmVyYXRpbmciLCJ1c2VTZXNzaW9uTWV0YSIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VDaGF0c1N0b3JlIiwiU0NMSENXcmFwcGVyIiwiU0NMSENXcmFwcGVyQWdlbnQiLCJTQ0xIQ1dyYXBwZXJBZ2VudFRleHQiLCJTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zIiwiU0NMSENXcmFwcGVyQ29udGVudCIsIlNDTEhDV3JhcHBlclRpdGxlIiwiU0NMSENXcmFwcGVyVGl0bGVSb3ciLCJTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIiwiU0NTV3JhcHBlck5ld0NoYXRJY29uIiwiU0NTV3JhcHBlckFnZW50c05hdkljb24iLCJTQ1NTaWRlYmFyUm9vdCIsIlNDU1NpZGViYXJUb29sYmFyIiwiU0NTU2lkZWJhckJvZHkiLCJTQ1NTaWRlYmFyT3BlblBhbmVsIiwiU0NTU2lkZWJhckFnZW50c0Jsb2NrIiwiU0NTU2lkZWJhckFnZW50c0FjdGlvbnMiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbiIsIlNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3IiwiU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nIiwiU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nUm93IiwiU0NTU2lkZWJhckNoYXRzU2Nyb2xsIiwiU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4iLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcCIsIlNDU1NpZGViYXJFcnJvckJhbm5lciIsIlNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwIiwiU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZSIsIlNDU1NpZGViYXJMb2FkaW5nQXJlYSIsIlNDU1NpZGViYXJMb2FkTW9yZVJvdyIsIlNDU1NpZGViYXJFbXB0eUNoYXRzIiwiU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0IiwiU0NTU2lkZWJhckNoYXRzRm9vdGVyIiwiU0NTU2lkZWJhckZvb3RlckFjdGlvbnMiLCJTQ1NTaWRlYmFyQ29sbGFwc2VkRGl2aWRlciIsImNvdW50U2lkZWJhckFnZW50TmF2QnV0dG9ucyIsImlzQ2hhdExpc3RTY3JvbGxlZFRvQm90dG9tIiwiaXNDaGF0VW5yZWFkSW5kaWNhdG9yIiwicmVzb2x2ZUFnZW50c0h1YlNlY3Rpb24iLCJyZXNvbHZlU2hvd05ld0NoYXRCdXR0b24iLCJyZXNvbHZlU2lkZWJhckNoYXRBZ2VudExhYmVsIiwicmVzb2x2ZVRvZ2dsZUNoYXRNb2RhbElkIiwic2hvdWxkQ2xvc2VNb2RhbE9uT3V0c2lkZUNsaWNrIiwic2hvdWxkVXNlTWFpYUljb25Gb3JDaGF0QWdlbnQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJhY3Rpb25zIiwiZWRpdCIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsImRlbGV0ZSIsIkxpc3RIaXN0b3J5Q2hhdCIsIl9yZWYiLCJjaGF0Iiwib25DbGljayIsImlzTW9kYWxPcGVuIiwib25PcGVuTW9kYWwiLCJvbkNsb3NlTW9kYWwiLCJoYW5kbGVycyIsImlzU2VsZWN0ZWQiLCJpbmRleCIsInRvb2x0aXBaSW5kZXgiLCJ0ZXh0UmVmIiwiYWdlbnRSZWYiLCJkaXNwbGF5VGl0bGUiLCJ0aXRsZSIsImRpc3BsYXlBZ2VudCIsImFnZW50VHlwZSIsImFnZW50IiwiY29udGV4dE5hbWUiLCJwcm9qZWN0TmFtZSIsImNsaWVudE5hbWUiLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJzaG93VG9vbHRpcCIsIl91c2VSZXNpemVMaXN0ZW5lcjIiLCJzaG93VG9vbHRpcEFnZW50IiwiX3VzZVQiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiYWN0aW9uIiwic2V0QWN0aW9uIiwiaXNHZW5lcmF0aW5nIiwic2Vzc2lvbkV4dGVybmFsSWQiLCJzZXNzaW9uTWV0YSIsImlzVW5yZWFkIiwiaXNSZWFkIiwic2lkZWJhckFnZW50TGFiZWwiLCJhZ2VudE5hbWUiLCJtZW51SXRlbXMiLCJsYWJlbCIsIm9uQ2xpY2tJdGVtIiwiY2hhdElkIiwiSWNvbiIsImV2ZW50S2V5IiwicG1BaU1lbnVFZGl0IiwicG1BaU1lbnVEZWxldGUiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdERhdGEiLCJoYW5kbGVVcGRhdGVDaGF0IiwiaGFuZGxlRGVsZXRlQ2hhdCIsImNoaWxkcmVuIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsIiRpbmRleCIsImFyaWFMYWJlbCIsImlzV3JpdGluZyIsImFuaW1hdGVkIiwiekluZGV4IiwicmVmIiwiJHVucmVhZCIsImNvbmNhdCIsIndpZHRoIiwiaGVpZ2h0Iiwic3R5bGUiLCJmb250U2l6ZSIsImVtb2ppIiwiaWNvbk9ubHkiLCJzaXplIiwidmFyaWFudCIsImV2ZW50IiwiaWQiLCJwb3NpdGlvbiIsInRvcCIsInJpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJib3JkZXJSYWRpdXMiLCJib3JkZXIiLCJtaW5XaWR0aCIsIm1hcCIsIl9yZWYyIiwib25DbG9zZSIsImhhbmRsZVNldElzT3Blbk1vZGFsIiwiU2lkZWJhciIsIl9yZWYzIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJvbkdvVG9DaGF0IiwiX3JlZjMkb25FcnJvciIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZVN0YXJ0TmV3Q2hhdCIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZU9wZW5Ta2lsbHMiLCJvbk9wZW5NYWlha2VyQ3JlYXRvciIsInNob3dOZXdDaGF0IiwicmVmZXRjaENoYXRzIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiaGFzRXJyb3IiLCJfcmVmMyRhZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNOYXZBY3RpdmUiLCJfcmVmMyRpc0xlZ2FjeUNvbnRleHQiLCJpc0xlZ2FjeUNvbnRleHRTZXNzaW9uIiwiX3JlZjMkaW5pdGlhbE9wZW4iLCJpbml0aWFsT3BlbiIsIm9uT3BlbkNoYW5nZSIsIl91c2VUMiIsImkxOG4iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNPcGVuTW9kYWwiLCJzZXRJc09wZW5Nb2RhbCIsImFjdGl2ZUNoYXRJZCIsInN0YXRlIiwiY2hhdHNGZXRjaGVkRm9yVXNlclJlZiIsInByZXZBZ2VudElkUmVmIiwidW5kZWZpbmVkIiwicmVzZXRDaGF0c1N0b3JlIiwicmVzZXQiLCJjaGF0c0NvbnRhaW5lclJlZiIsInVzZXIiLCJldmVudEFtcGxpdHVkZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsInNlbGVjdEFnZW50Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInNldFRhc2siLCJfdXNlQ2hhdHMiLCJsb2FkaW5nQ2hhdHMiLCJjaGF0cyIsImRlbGV0ZUNoYXQiLCJ1cGRhdGVDaGF0IiwiZmV0Y2hDaGF0cyIsImxpbWl0IiwiaGFzTW9yZUNoYXRzIiwibG9hZE1vcmVDaGF0cyIsImlzTG9hZGluZ01vcmVDaGF0cyIsInNldFVucmVhZENvdW50Iiwic2V0Q2hhdFJlYWRTdGF0ZSIsInVucmVhZFN1YnNjcmliZWRSZWYiLCIkX3NjIiwiY2hhbm5lbCIsImhhbmRsZVVucmVhZEV2ZW50IiwiX3JlZjQiLCJtb2RlbERhdGEiLCJtb2RlbF9kYXRhIiwidW5yZWFkX2NvdW50Iiwic2Vzc2lvbl9pZCIsImlzX3JlYWQiLCJzdWJzY3JpYmVIYW5kbGVyIiwiY3VycmVudCIsIl8kX3NjJGFjdGlvblR5cGUiLCJfJF9zYyRjaGFubmVsVHlwZSIsInVwZGF0ZUNvbm5lY3Rpb25Nb2RlbCIsIm1vZGVsX2hhc2giLCJhY3Rpb25UeXBlIiwiU1VCU0NSSUJFIiwiY2hhbm5lbFR5cGUiLCJNT0RFTF9DSEFOTkVMIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjYW5DcmVhdGVBZ2VudHMiLCJjcmVhdGUiLCJoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3MiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY2FuVmlld0FnZW50cyIsInZpZXciLCJjYW5WaWV3U2tpbGxzIiwiY29tcGFueV9pZCIsInNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24iLCJhZ2VudE5hdkJ1dHRvbkNvdW50Iiwic2hvd0FnZW50c05hdkJsb2NrIiwibXlBZ2VudHNTaWRlYmFyVHJhY2tlZFJlZiIsIm1haWFTaWRlYmFyTXlBZ2VudHMiLCJfcmVmNSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZU9wZW5Nb2RhbCIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVDbGlja091dHNpZGUiLCJ0YXJnZXQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlVG9nZ2xlU2lkZWJhciIsImFpQ2hhdFNpZGViYXIiLCJoYW5kbGVPcGVuQ3JlYXRlQWdlbnQiLCJfcmVmNiIsIl9jYWxsZWUyIiwicmVzcG9uc2UiLCJkYXRhIiwibWFpYWtlckFnZW50IiwiX3QiLCJfdDIiLCJfY29udGV4dDIiLCJhYnJ1cHQiLCJwYXRoIiwibGFuZ3VhZ2UiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImZpbmQiLCJhZ2VudEl0ZW0iLCJfc2VsZWN0ZWRBZ2VudCRpZCIsInVzZXJJZCIsInVzZXJDaGFuZ2VkIiwiYWdlbnRJZCIsImFnZW50SnVzdEJlY2FtZUF2YWlsYWJsZSIsInNob3VsZEZldGNoIiwib2Zmc2V0IiwiaGFuZGxlU2Nyb2xsIiwiX2NoYXRzQ29udGFpbmVyUmVmJGN1Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiY29udGFpbmVyIiwiaGFuZGxlTmV3Q2hhdCIsImFpU2lkZWJhck5ld0NoYXQiLCJoYW5kbGVSZWZldGNoU2Vzc2lvbiIsImJhY2tncm91bmQiLCJpc0FnZW50c0h1YlNlY3Rpb24iLCJzaG93TmV3Q2hhdEJ1dHRvbiIsInVzZXJDYW5WaWV3QWdlbnRzIiwiQm9vbGVhbiIsIiRpc09wZW4iLCJjb2xvciIsIiRhY3RpdmUiLCJhaUNoYXRNcE9wZW4iLCJhaVNpZGViYXJNeUFnZW50cyIsImFpU2lkZWJhck15U2tpbGxzIiwidHlwZSIsIiRoYXNDaGF0cyIsImxlbmd0aCIsIiRvZmZzZXRWYXJpYW50IiwiJGFnZW50TmF2QnV0dG9uQ291bnQiLCJjb3VudCIsIiRqdXN0aWZ5QmV0d2VlbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL1NpZGViYXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25Eb3VibGVMZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvdWJsZUxlZnQnXG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvSGlzdG9yeSdcbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFBlbmNpbCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BlbmNpbCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5cbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHsgRW1wdHlIaXN0b3J5SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0VtcHR5SGlzdG9yeSdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgdXNlQ2hhdHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0cydcbmltcG9ydCB7IFNpZGViYXJDaGF0c1NrZWxldG9uIH0gZnJvbSAnLi9TaWRlYmFyLnNrZWxldG9uJ1xuaW1wb3J0IHsgRXJyb3JTdGF0ZSwgTUFJQUljb24sIE1haWFTdG9yZUljb24sIE15QWdlbnRzTmF2SWNvbiwgU2tpbGxzTmF2SWNvbiwgTmV3Q2hhdCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBPcHRpb25JdGVtIH0gZnJvbSAnLi4vLi4vYXRvbXMvQ2FyZE1lbnUvQ2FyZE1lbnUnXG5pbXBvcnQgeyBFZGl0UXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9FZGl0UXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IEVycm9ySWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0Vycm9ySWNvbidcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRmVlZGJhY2tCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9GZWVkYmFja0J1dHRvbidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBjYW5BY2Nlc3NUb1NraWxscywgaXNTa2lsbHNQaWxvdENvbXBhbnkgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IGZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucydcbmltcG9ydCB7IGdldEFnZW50RGlzcGxheU5hbWUsIGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IEFQUENVRVNfRVZFTlRTLCBBUFBDVUVTX1NFTEVDVE9SUywgdHJhY2tBcHBjdWVzRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHBjdWVzJ1xuaW1wb3J0IHsgU2Vzc2lvbkdlbmVyYXRpbmdEb3QgfSBmcm9tICcuLi8uLi9hdG9tcy9TZXNzaW9uR2VuZXJhdGluZ0RvdCdcbmltcG9ydCB7IHVzZUlzU2Vzc2lvbkdlbmVyYXRpbmcsIHVzZVNlc3Npb25NZXRhIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvc2Vzc2lvbnMvdXNlU2Vzc2lvbk1ldGEnXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbmltcG9ydCB7IHVzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VDaGF0c1N0b3JlJ1xuaW1wb3J0IHtcbiAgU0NMSENXcmFwcGVyLFxuICBTQ0xIQ1dyYXBwZXJBZ2VudCxcbiAgU0NMSENXcmFwcGVyQWdlbnRUZXh0LFxuICBTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zLFxuICBTQ0xIQ1dyYXBwZXJDb250ZW50LFxuICBTQ0xIQ1dyYXBwZXJUaXRsZSxcbiAgU0NMSENXcmFwcGVyVGl0bGVSb3csXG4gIFNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24sXG4gIFNDU1dyYXBwZXJOZXdDaGF0SWNvbixcbiAgU0NTV3JhcHBlckFnZW50c05hdkljb24sXG59IGZyb20gJy4vU2lkZWJhci5zdHlsZXMnXG5pbXBvcnQge1xuICBTQ1NTaWRlYmFyUm9vdCxcbiAgU0NTU2lkZWJhclRvb2xiYXIsXG4gIFNDU1NpZGViYXJCb2R5LFxuICBTQ1NTaWRlYmFyT3BlblBhbmVsLFxuICBTQ1NTaWRlYmFyQWdlbnRzQmxvY2ssXG4gIFNDU1NpZGViYXJBZ2VudHNBY3Rpb25zLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbixcbiAgU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbCxcbiAgU0NTU2lkZWJhck1haWFrZXJOYXZCYWRnZU5ldyxcbiAgU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nLFxuICBTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmdSb3csXG4gIFNDU1NpZGViYXJDaGF0c1Njcm9sbCxcbiAgU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4sXG4gIFNDU1NpZGViYXJFcnJvclN0YXRlVG9wLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXIsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlLFxuICBTQ1NTaWRlYmFyTG9hZGluZ0FyZWEsXG4gIFNDU1NpZGViYXJMb2FkTW9yZVJvdyxcbiAgU0NTU2lkZWJhckVtcHR5Q2hhdHMsXG4gIFNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dCxcbiAgU0NTU2lkZWJhckNoYXRzRm9vdGVyLFxuICBTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyxcbiAgU0NTU2lkZWJhckNvbGxhcHNlZERpdmlkZXIsXG59IGZyb20gJy4vU2lkZWJhci5sYXlvdXQuc3R5bGVzJ1xuaW1wb3J0IHtcbiAgY291bnRTaWRlYmFyQWdlbnROYXZCdXR0b25zLFxuICBpc0NoYXRMaXN0U2Nyb2xsZWRUb0JvdHRvbSxcbiAgaXNDaGF0VW5yZWFkSW5kaWNhdG9yLFxuICByZXNvbHZlQWdlbnRzSHViU2VjdGlvbixcbiAgcmVzb2x2ZVNob3dOZXdDaGF0QnV0dG9uLFxuICByZXNvbHZlU2lkZWJhckNoYXRBZ2VudExhYmVsLFxuICByZXNvbHZlVG9nZ2xlQ2hhdE1vZGFsSWQsXG4gIHNob3VsZENsb3NlTW9kYWxPbk91dHNpZGVDbGljayxcbiAgc2hvdWxkVXNlTWFpYUljb25Gb3JDaGF0QWdlbnQsXG59IGZyb20gJy4vU2lkZWJhci5oZWxwZXJzJ1xuXG5jb25zdCBhY3Rpb25zID0ge1xuICBlZGl0OiAocHJvcHM6IGFueSkgPT4gPEVkaXRRdWVzdGlvbk1vZGFsIHsuLi5wcm9wc30gLz4sXG4gIGRlbGV0ZTogKHByb3BzOiBhbnkpID0+IDxEZWxldGVRdWVzdGlvbk1vZGFsIHsuLi5wcm9wc30gLz4sXG59XG5cbmNvbnN0IExpc3RIaXN0b3J5Q2hhdCA9ICh7XG4gIGNoYXQsXG4gIG9uQ2xpY2ssXG4gIGlzTW9kYWxPcGVuLFxuICBvbk9wZW5Nb2RhbCxcbiAgb25DbG9zZU1vZGFsLFxuICBoYW5kbGVycyxcbiAgaXNTZWxlY3RlZCxcbiAgaW5kZXgsXG4gIHRvb2x0aXBaSW5kZXgsXG59OiB7XG4gIGNoYXQ6IGFueVxuICBvbkNsaWNrOiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIGlzTW9kYWxPcGVuOiBib29sZWFuXG4gIG9uT3Blbk1vZGFsOiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25DbG9zZU1vZGFsOiAoKSA9PiB2b2lkXG4gIGhhbmRsZXJzOiB7XG4gICAgaGFuZGxlRGVsZXRlQ2hhdDogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICAgIGhhbmRsZVVwZGF0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgfVxuICBpc1NlbGVjdGVkOiBib29sZWFuXG4gIGluZGV4OiBudW1iZXJcbiAgdG9vbHRpcFpJbmRleDogbnVtYmVyXG59KSA9PiB7XG4gIGNvbnN0IHRleHRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGFnZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBkaXNwbGF5VGl0bGUgPSB1c2VNZW1vKCgpID0+IGZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyhjaGF0LnRpdGxlKSwgW2NoYXQudGl0bGVdKVxuICBjb25zdCBkaXNwbGF5QWdlbnQgPSBnZXRBZ2VudERpc3BsYXlOYW1lKGNoYXQuYWdlbnRUeXBlLCBjaGF0LmFnZW50KVxuICBjb25zdCBjb250ZXh0TmFtZSA9IGNoYXQucHJvamVjdE5hbWUgfHwgY2hhdC5jbGllbnROYW1lXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtkaXNwbGF5VGl0bGVdKVxuICBjb25zdCB7IHNob3dUb29sdGlwOiBzaG93VG9vbHRpcEFnZW50IH0gPSB1c2VSZXNpemVMaXN0ZW5lcihhZ2VudFJlZiwgW2NoYXQuYWdlbnRdKVxuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBbYWN0aW9uLCBzZXRBY3Rpb25dID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNHZW5lcmF0aW5nID0gdXNlSXNTZXNzaW9uR2VuZXJhdGluZyhjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICBjb25zdCBzZXNzaW9uTWV0YSA9IHVzZVNlc3Npb25NZXRhKGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gIGNvbnN0IGlzVW5yZWFkID0gaXNDaGF0VW5yZWFkSW5kaWNhdG9yKGNoYXQuaXNSZWFkLCBpc0dlbmVyYXRpbmcpXG4gIGNvbnN0IHNpZGViYXJBZ2VudExhYmVsID0gcmVzb2x2ZVNpZGViYXJDaGF0QWdlbnRMYWJlbCh7XG4gICAgYWdlbnRUeXBlOiBjaGF0LmFnZW50VHlwZSxcbiAgICBhZ2VudE5hbWU6IGNoYXQuYWdlbnQsXG4gICAgcHJvamVjdE5hbWU6IGNoYXQucHJvamVjdE5hbWUsXG4gIH0pXG5cbiAgY29uc3QgbWVudUl0ZW1zID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiB0KCdoaXN0b3J5Lm1lbnUucmVuYW1lJyksXG4gICAgICBvbkNsaWNrSXRlbTogKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHNldEFjdGlvbignZWRpdCcpXG4gICAgICAgIG9uT3Blbk1vZGFsKGNoYXRJZClcbiAgICAgIH0sXG4gICAgICBJY29uOiBQZW5jaWwsXG4gICAgICBldmVudEtleTogRVZFTlRTLnBtQWlNZW51RWRpdCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0KCdoaXN0b3J5Lm1lbnUuZGVsZXRlJyksXG4gICAgICBvbkNsaWNrSXRlbTogKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHNldEFjdGlvbignZGVsZXRlJylcbiAgICAgICAgb25PcGVuTW9kYWwoY2hhdElkKVxuICAgICAgfSxcbiAgICAgIEljb246IFRyYXNoLFxuICAgICAgZXZlbnRLZXk6IEVWRU5UUy5wbUFpTWVudURlbGV0ZSxcbiAgICB9LFxuICBdXG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybUFjdGlvbiA9IChjaGF0RGF0YTogYW55KSA9PiB7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2VkaXQnKSB7XG4gICAgICBoYW5kbGVycy5oYW5kbGVVcGRhdGVDaGF0KGNoYXREYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICBoYW5kbGVycy5oYW5kbGVEZWxldGVDaGF0KGNoYXREYXRhKVxuICAgIH1cbiAgICBzZXRBY3Rpb24obnVsbClcbiAgICBvbkNsb3NlTW9kYWwoKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFNDTEhDV3JhcHBlckNvbnRlbnRcbiAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIG9uQ2xpY2soY2hhdClcbiAgICAgICAgfX1cbiAgICAgICAga2V5PXtgY29udmVyc2F0aW9uLSR7Y2hhdC5zZXNzaW9uRXh0ZXJuYWxJZH1gfVxuICAgICAgICBpc01vZGFsT3Blbj17aXNNb2RhbE9wZW59XG4gICAgICAgIGlzU2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICAgICRpbmRleD17aW5kZXh9XG4gICAgICA+XG4gICAgICAgIDxTQ0xIQ1dyYXBwZXI+XG4gICAgICAgICAgPFNDTEhDV3JhcHBlclRpdGxlUm93PlxuICAgICAgICAgICAge2lzR2VuZXJhdGluZyB8fCBpc1VucmVhZCA/IChcbiAgICAgICAgICAgICAgPFNlc3Npb25HZW5lcmF0aW5nRG90XG4gICAgICAgICAgICAgICAgYXJpYUxhYmVsPXtpc0dlbmVyYXRpbmcgPyB0KCdjb252ZXJzYXRpb25zLmdlbmVyYXRpbmcnKSA6IHQoJ2NvbnZlcnNhdGlvbnMudW5yZWFkTGFiZWwnKX1cbiAgICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzR2VuZXJhdGluZyAmJiBzZXNzaW9uTWV0YT8uaXNXcml0aW5nfVxuICAgICAgICAgICAgICAgIGFuaW1hdGVkPXtpc0dlbmVyYXRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcCA/IGRpc3BsYXlUaXRsZSA6ICcnfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICA8U0NMSENXcmFwcGVyVGl0bGUgcmVmPXt0ZXh0UmVmfSAkdW5yZWFkPXtpc1VucmVhZH0+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXlUaXRsZSB8fCB0KCdjb252ZXJzYXRpb25zLmVtcHR5TGFiZWwnKX1cbiAgICAgICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJUaXRsZT5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8L1NDTEhDV3JhcHBlclRpdGxlUm93PlxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICB0aXRsZT17c2hvd1Rvb2x0aXBBZ2VudCA/IGRpc3BsYXlBZ2VudCArIChjb250ZXh0TmFtZSA/IGAgLSAke2NvbnRleHROYW1lfWAgOiAnJykgOiAnJ31cbiAgICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgICAgIHtzaG91bGRVc2VNYWlhSWNvbkZvckNoYXRBZ2VudChjaGF0LmFnZW50VHlwZSkgPyAoXG4gICAgICAgICAgICAgICAgPE1BSUFJY29uIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBmb250U2l6ZTogJzE0cHgnIH19PntjaGF0LmVtb2ppfTwvc3Bhbj5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8U0NMSENXcmFwcGVyQWdlbnRUZXh0IHJlZj17YWdlbnRSZWZ9PntzaWRlYmFyQWdlbnRMYWJlbH08L1NDTEhDV3JhcHBlckFnZW50VGV4dD5cbiAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1NDTEhDV3JhcHBlcj5cbiAgICAgICAgPFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnM+XG4gICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICBpY29uT25seVxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgb25PcGVuTW9kYWwoY2hhdC5pZClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE1lbnVEb3RzIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgIHtpc01vZGFsT3BlbiAmJiAhYWN0aW9uICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS1tb2RhbC1jb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICB0b3A6ICczMnB4JyxcbiAgICAgICAgICAgICAgICByaWdodDogJzE2cHgnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYmEoMjI0LCAyMjQsIDIyNCwgMSknLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnMTI0cHgnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bWVudUl0ZW1zLm1hcCgoeyBsYWJlbCwgb25DbGlja0l0ZW0sIEljb24sIGV2ZW50S2V5IH0pID0+IChcbiAgICAgICAgICAgICAgICA8T3B0aW9uSXRlbVxuICAgICAgICAgICAgICAgICAga2V5PXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2xpY2tJdGVtKGNoYXQuaWQpfVxuICAgICAgICAgICAgICAgICAgSWNvbj17SWNvbn1cbiAgICAgICAgICAgICAgICAgIGV2ZW50S2V5PXtldmVudEtleX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucz5cbiAgICAgIDwvU0NMSENXcmFwcGVyQ29udGVudD5cbiAgICAgIHshIWFjdGlvbiAmJlxuICAgICAgICBhY3Rpb25zW2FjdGlvbl0oe1xuICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgIG9uQ2xvc2VNb2RhbCgpXG4gICAgICAgICAgICBzZXRBY3Rpb24obnVsbClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoYXQsXG4gICAgICAgICAgaGFuZGxlcnM6IHtcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb24sXG4gICAgICAgICAgICBoYW5kbGVTZXRJc09wZW5Nb2RhbDogb25DbG9zZU1vZGFsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pfVxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBTaWRlYmFyID0gKHtcbiAgb25Hb1RvQ2hhdCxcbiAgb25FcnJvciA9ICgpID0+IG51bGwsXG4gIGhhbmRsZUdvVG9Ib21lLFxuICBoYW5kbGVTdGFydE5ld0NoYXQsXG4gIGhhbmRsZU9wZW5NYXJrZXRwbGFjZSxcbiAgaGFuZGxlT3BlblNraWxscyxcbiAgb25PcGVuTWFpYWtlckNyZWF0b3IsXG4gIHNob3dOZXdDaGF0LFxuICByZWZldGNoQ2hhdHMsXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyxcbiAgaGFzRXJyb3IsXG4gIGFnZW50c05hdkFjdGl2ZSA9IG51bGwsXG4gIGlzTGVnYWN5Q29udGV4dFNlc3Npb24gPSBmYWxzZSxcbiAgaW5pdGlhbE9wZW4gPSBmYWxzZSxcbiAgb25PcGVuQ2hhbmdlLFxufToge1xuICBvbkdvVG9DaGF0OiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBoYW5kbGVHb1RvSG9tZTogKCkgPT4gdm9pZFxuICAvKiogSW5pY2lhIHVuIGNoYXQgbnVldm87IGVuIE1pcyBhZ2VudGVzIC8gTWFpYWtlciAvIE1pcyBza2lsbHMgdXNhIGVsIHByaW1lciBhZ2VudGUgZGUgbGEgbGlzdGEuICovXG4gIGhhbmRsZVN0YXJ0TmV3Q2hhdD86ICgpID0+IHZvaWRcbiAgaGFuZGxlT3Blbk1hcmtldHBsYWNlOiAoKSA9PiB2b2lkXG4gIGhhbmRsZU9wZW5Ta2lsbHM6ICgpID0+IHZvaWRcbiAgLyoqIEFicmUgZWwgY3JlYWRvciBNYWlha2VyIChtaXNtYSBsw7NnaWNhIHF1ZSBlbCBodWIgZGVsIG1vZGFsKS4gKi9cbiAgb25PcGVuTWFpYWtlckNyZWF0b3I/OiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPlxuICBzaG93TmV3Q2hhdDogYm9vbGVhblxuICByZWZldGNoQ2hhdHM6IGJvb2xlYW5cbiAgaGFuZGxlU2V0UmVmZXRjaENoYXRzOiAocmVmZXRjaDogYm9vbGVhbikgPT4gdm9pZFxuICBoYXNFcnJvcjogYm9vbGVhblxuICAvKiogUmVzYWx0YSBNYWlha2VyLCBNaXMgYWdlbnRlcyBvIE1pcyBza2lsbHMgKi9cbiAgYWdlbnRzTmF2QWN0aXZlPzogJ21haWFrZXInIHwgJ215QWdlbnRzJyB8ICdteVNraWxscycgfCBudWxsXG4gIC8qKiBDb252ZXJzYWNpw7NuIGRlIHVuIGNsb25lIGxlZ2FjeSAoYWdlbnRfdHlwZSBjbG9uZSArIGVudGl0eSBwcm9qZWN0L2NsaWVudC90YXNrKTogb2N1bHRhIFwibnVldm8gY2hhdFwiLiAqL1xuICBpc0xlZ2FjeUNvbnRleHRTZXNzaW9uPzogYm9vbGVhblxuICAvKiogRXN0YWRvIGluaWNpYWwgZGVsIHNpZGViYXIgKHJlc3RhdXJhY2nDs24gZGUgc2VzacOzbiB0cmFzIG5hdmVnYWNpw7NuKS4gKi9cbiAgaW5pdGlhbE9wZW4/OiBib29sZWFuXG4gIG9uT3BlbkNoYW5nZT86IChvcGVuOiBib29sZWFuKSA9PiB2b2lkXG59KSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICdvdmVybGF5JylcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGluaXRpYWxPcGVuKVxuICBjb25zdCBbaXNPcGVuTW9kYWwsIHNldElzT3Blbk1vZGFsXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFjdGl2ZUNoYXRJZCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuYWN0aXZlQ2hhdElkKVxuICBjb25zdCBjaGF0c0ZldGNoZWRGb3JVc2VyUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bWJlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHByZXZBZ2VudElkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgcmVzZXRDaGF0c1N0b3JlID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5yZXNldClcbiAgY29uc3QgY2hhdHNDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWdlbnQ6IHNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldFRhc2sgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7XG4gICAgbG9hZGluZ0NoYXRzLFxuICAgIGNoYXRzLFxuICAgIGRlbGV0ZUNoYXQsXG4gICAgdXBkYXRlQ2hhdCxcbiAgICBmZXRjaENoYXRzLFxuICAgIGxpbWl0LFxuICAgIGhhc01vcmVDaGF0cyxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgICBzZXRVbnJlYWRDb3VudCxcbiAgICBzZXRDaGF0UmVhZFN0YXRlLFxuICB9ID0gdXNlQ2hhdHMoe1xuICAgIG9uRXJyb3IsXG4gIH0pXG5cbiAgY29uc3QgdW5yZWFkU3Vic2NyaWJlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdXNlcj8uaWQgfHwgdHlwZW9mICRfc2MgPT09ICd1bmRlZmluZWQnIHx8ICEkX3NjKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBjaGFubmVsID0gYHNlc3Npb25zLnVucmVhZDoke3VzZXIuaWR9YFxuICAgIGNvbnN0IGhhbmRsZVVucmVhZEV2ZW50ID0gKHtcbiAgICAgIG1vZGVsX2RhdGE6IG1vZGVsRGF0YSxcbiAgICB9OiB7XG4gICAgICBtb2RlbF9kYXRhPzogeyB1bnJlYWRfY291bnQ/OiBudW1iZXI7IHNlc3Npb25faWQ/OiBzdHJpbmc7IGlzX3JlYWQ/OiBib29sZWFuIH1cbiAgICB9KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIG1vZGVsRGF0YT8udW5yZWFkX2NvdW50ID09PSAnbnVtYmVyJykge1xuICAgICAgICBzZXRVbnJlYWRDb3VudChtb2RlbERhdGEudW5yZWFkX2NvdW50KVxuICAgICAgfVxuICAgICAgaWYgKG1vZGVsRGF0YT8uc2Vzc2lvbl9pZCAmJiB0eXBlb2YgbW9kZWxEYXRhPy5pc19yZWFkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgc2V0Q2hhdFJlYWRTdGF0ZShtb2RlbERhdGEuc2Vzc2lvbl9pZCwgbW9kZWxEYXRhLmlzX3JlYWQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zYy5zdWJzY3JpYmVIYW5kbGVyKGNoYW5uZWwsIGhhbmRsZVVucmVhZEV2ZW50KVxuXG4gICAgaWYgKCF1bnJlYWRTdWJzY3JpYmVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICRfc2MudXBkYXRlQ29ubmVjdGlvbk1vZGVsKFxuICAgICAgICB7XG4gICAgICAgICAgbW9kZWxfaGFzaDogY2hhbm5lbCxcbiAgICAgICAgICBhY3Rpb246ICRfc2MuYWN0aW9uVHlwZT8uU1VCU0NSSUJFLFxuICAgICAgICB9LFxuICAgICAgICBjaGFubmVsLFxuICAgICAgICB1c2VyLFxuICAgICAgICB1c2VyLFxuICAgICAgICAkX3NjLmNoYW5uZWxUeXBlPy5NT0RFTF9DSEFOTkVMXG4gICAgICApXG4gICAgICB1bnJlYWRTdWJzY3JpYmVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbdXNlciwgc2V0VW5yZWFkQ291bnQsIHNldENoYXRSZWFkU3RhdGVdKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlQWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZVxuICBjb25zdCBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3MgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gIGNvbnN0IGNhblZpZXdBZ2VudHMgPSAhIXVzZXJQZXJtaXNzaW9ucz8udmlldyAmJiBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3NcbiAgY29uc3QgY2FuVmlld1NraWxscyA9IGNhbkFjY2Vzc1RvU2tpbGxzKHVzZXIpICYmIGlzU2tpbGxzUGlsb3RDb21wYW55KHVzZXI/LmNvbXBhbnlfaWQpXG4gIGNvbnN0IHNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPSAhIWNhbkNyZWF0ZUFnZW50cyAmJiBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3NcbiAgY29uc3QgYWdlbnROYXZCdXR0b25Db3VudCA9IGNvdW50U2lkZWJhckFnZW50TmF2QnV0dG9ucyhzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uLCBjYW5WaWV3QWdlbnRzLCBjYW5WaWV3U2tpbGxzKVxuICBjb25zdCBzaG93QWdlbnRzTmF2QmxvY2sgPSBzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIHx8IGNhblZpZXdBZ2VudHMgfHwgY2FuVmlld1NraWxsc1xuICBjb25zdCBteUFnZW50c1NpZGViYXJUcmFja2VkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjYW5WaWV3QWdlbnRzIHx8IG15QWdlbnRzU2lkZWJhclRyYWNrZWRSZWYuY3VycmVudCkgcmV0dXJuXG5cbiAgICBteUFnZW50c1NpZGViYXJUcmFja2VkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgdHJhY2tBcHBjdWVzRXZlbnQoQVBQQ1VFU19FVkVOVFMubWFpYVNpZGViYXJNeUFnZW50cylcbiAgfSwgW2NhblZpZXdBZ2VudHNdKVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUNoYXQgPSBhc3luYyAoY2hhdDogYW55KSA9PiB7XG4gICAgZGVsZXRlQ2hhdChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVXBkYXRlQ2hhdCA9IChjaGF0OiBhbnkpID0+IHtcbiAgICB1cGRhdGVDaGF0KGNoYXQpXG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgIHNldElzT3Blbk1vZGFsKHJlc29sdmVUb2dnbGVDaGF0TW9kYWxJZChpc09wZW5Nb2RhbCwgY2hhdElkKSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoc2hvdWxkQ2xvc2VNb2RhbE9uT3V0c2lkZUNsaWNrKGlzT3Blbk1vZGFsLCBldmVudC50YXJnZXQgYXMgRWxlbWVudCkpIHtcbiAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW2lzT3Blbk1vZGFsXSlcblxuICBjb25zdCBoYW5kbGVUb2dnbGVTaWRlYmFyID0gKCkgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNpZGViYXIsIHsgYWN0aW9uOiBpc09wZW4gPyAnY2xvc2UnIDogJ29wZW4nIH0pXG4gICAgc2V0SXNPcGVuKHByZXYgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9ICFwcmV2XG4gICAgICBvbk9wZW5DaGFuZ2U/LihuZXh0KVxuICAgICAgcmV0dXJuIG5leHRcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3BlbkNyZWF0ZUFnZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChvbk9wZW5NYWlha2VyQ3JlYXRvcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgb25PcGVuTWFpYWtlckNyZWF0b3IoKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIG9uRXJyb3IoKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmVudGl0eT1nbG9iYWwmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICBjb25zdCBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhZ2VudEl0ZW06IHsgdHlwZT86IHN0cmluZzsgZW50aXR5Pzogc3RyaW5nOyBuYW1lPzogc3RyaW5nIH0pID0+XG4gICAgICAgIGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50SXRlbSlcbiAgICAgIClcblxuICAgICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG4gICAgICAvLyBoYW5kbGVHb1RvSG9tZSBwdWVkZSByZXNlbGVjY2lvbmFyIGFnZW50cy5kYXRhWzBdIHNpIGVsIGFnZW50ZSBnbG9iYWwgYXVuIGVzdGEgZW4gbnVsbFxuICAgICAgLy8gKGNsb3N1cmUgc3RhbGUgZGUgbGEgc2VjY2lvbiBcIk1pcyBhZ2VudGVzXCIpLCBwb3IgZXNvIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudCkgdmEgZGVzcHVlcy5cbiAgICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25FcnJvcigpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXVzZXI/LmlkKSByZXR1cm5cblxuICAgIGNvbnN0IHVzZXJJZCA9IHVzZXIuaWRcbiAgICBjb25zdCB1c2VyQ2hhbmdlZCA9IGNoYXRzRmV0Y2hlZEZvclVzZXJSZWYuY3VycmVudCAhPSBudWxsICYmIGNoYXRzRmV0Y2hlZEZvclVzZXJSZWYuY3VycmVudCAhPT0gdXNlcklkXG4gICAgY29uc3QgYWdlbnRJZCA9IHNlbGVjdGVkQWdlbnQ/LmlkID8/IG51bGxcbiAgICBjb25zdCBhZ2VudEp1c3RCZWNhbWVBdmFpbGFibGUgPSBwcmV2QWdlbnRJZFJlZi5jdXJyZW50ID09PSBudWxsICYmIGFnZW50SWQgIT0gbnVsbFxuICAgIHByZXZBZ2VudElkUmVmLmN1cnJlbnQgPSBhZ2VudElkXG5cbiAgICBpZiAodXNlckNoYW5nZWQpIHtcbiAgICAgIHJlc2V0Q2hhdHNTdG9yZSgpXG4gICAgfVxuXG4gICAgY29uc3Qgc2hvdWxkRmV0Y2ggPSBjaGF0c0ZldGNoZWRGb3JVc2VyUmVmLmN1cnJlbnQgIT09IHVzZXJJZCB8fCByZWZldGNoQ2hhdHMgfHwgYWdlbnRKdXN0QmVjYW1lQXZhaWxhYmxlXG5cbiAgICBpZiAoIXNob3VsZEZldGNoKSByZXR1cm5cblxuICAgIGNoYXRzRmV0Y2hlZEZvclVzZXJSZWYuY3VycmVudCA9IHVzZXJJZFxuICAgIC8vIEluaXRpYWwvcmVmcmVzaCBhbHdheXMgc3RhcnRzIGF0IHBhZ2UgMSAobmV2ZXIgcmV1c2UgbG9hZE1vcmUgb2Zmc2V0KS5cbiAgICBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldDogMCB9KVxuICAgIGlmIChyZWZldGNoQ2hhdHMpIHtcbiAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyhmYWxzZSlcbiAgICB9XG4gIH0sIFt1c2VyPy5pZCwgc2VsZWN0ZWRBZ2VudD8uaWQsIHJlZmV0Y2hDaGF0cywgaGFuZGxlU2V0UmVmZXRjaENoYXRzLCBmZXRjaENoYXRzLCBsaW1pdCwgcmVzZXRDaGF0c1N0b3JlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICAgIGlmICghY2hhdHNDb250YWluZXJSZWYuY3VycmVudCB8fCAhaGFzTW9yZUNoYXRzIHx8IGlzTG9hZGluZ01vcmVDaGF0cyB8fCBoYXNFcnJvcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgICBpZiAoaXNDaGF0TGlzdFNjcm9sbGVkVG9Cb3R0b20oc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCkpIHtcbiAgICAgICAgbG9hZE1vcmVDaGF0cygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY2hhdHNDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtoYXNNb3JlQ2hhdHMsIGlzTG9hZGluZ01vcmVDaGF0cywgbG9hZE1vcmVDaGF0cywgaGFzRXJyb3JdKVxuXG4gIGNvbnN0IGhhbmRsZU5ld0NoYXQgPSAoKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck5ld0NoYXQpXG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH1cbiAgICBpZiAoaGFuZGxlU3RhcnROZXdDaGF0KSB7XG4gICAgICBoYW5kbGVTdGFydE5ld0NoYXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gQWwgY3JlYXIvYWN0dWFsaXphciB1bmEgY29udmVyc2FjacOzbiByZWZyZXNjYW1vcyBsYSBsaXN0YSBhdW5xdWUgZWwgc2lkZWJhciBlc3TDqSBjb2xhcHNhZG8uXG4gICAgY29uc3QgaGFuZGxlUmVmZXRjaFNlc3Npb24gPSAoKSA9PiB7XG4gICAgICBpZiAodXNlcj8uaWQpIHtcbiAgICAgICAgY2hhdHNGZXRjaGVkRm9yVXNlclJlZi5jdXJyZW50ID0gdXNlci5pZFxuICAgICAgfVxuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0OiAyMCwgb2Zmc2V0OiAwLCBiYWNrZ3JvdW5kOiB0cnVlIH0pXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3JlZmV0Y2gtc2Vzc2lvbicsIGhhbmRsZVJlZmV0Y2hTZXNzaW9uKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdyZWZldGNoLXNlc3Npb24nLCBoYW5kbGVSZWZldGNoU2Vzc2lvbilcbiAgICB9XG4gIH0sIFtmZXRjaENoYXRzLCB1c2VyPy5pZF0pXG5cbiAgY29uc3QgaXNBZ2VudHNIdWJTZWN0aW9uID0gcmVzb2x2ZUFnZW50c0h1YlNlY3Rpb24oc2hvd05ld0NoYXQsIGFnZW50c05hdkFjdGl2ZSlcblxuICBjb25zdCBzaG93TmV3Q2hhdEJ1dHRvbiA9IHJlc29sdmVTaG93TmV3Q2hhdEJ1dHRvbih7XG4gICAgaXNBZ2VudHNIdWJTZWN0aW9uLFxuICAgIHNob3dOZXdDaGF0LFxuICAgIGhhc0Vycm9yLFxuICAgIGxvYWRpbmdDaGF0cyxcbiAgICBpc0xlZ2FjeUNvbnRleHRTZXNzaW9uLFxuICAgIHVzZXJDYW5WaWV3QWdlbnRzOiBCb29sZWFuKHVzZXJQZXJtaXNzaW9ucz8udmlldyksXG4gICAgc2VsZWN0ZWRBZ2VudCxcbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxTQ1NTaWRlYmFyUm9vdCAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgPFNDU1NpZGViYXJUb29sYmFyICRpc09wZW49e2lzT3Blbn0+XG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXtpc09wZW4gPyB0KCdjb252ZXJzYXRpb25zLmNvbGxhcHNlJykgOiB0KCdoaXN0b3J5LnRvb2x0aXAnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICA8U0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVUb2dnbGVTaWRlYmFyfSBpc09wZW49e2lzT3Blbn0+XG4gICAgICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgICAgICA8Q2hldnJvbkRvdWJsZUxlZnQgY29sb3I9XCJyZ2JhKDEwMiwgMTAyLCAxMDIsIDEpXCIgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPEhpc3RvcnkgY29sb3I9XCJyZ2JhKDEzLCAxMywgMTMsIDEpXCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1NDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAge3Nob3dOZXdDaGF0QnV0dG9uID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm5ld0NoYXQnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgIDxTQ1NXcmFwcGVyTmV3Q2hhdEljb24gb25DbGljaz17aGFuZGxlTmV3Q2hhdH0gYXJpYS1sYWJlbD17dCgnY29udmVyc2F0aW9ucy5uZXdDaGF0Jyl9PlxuICAgICAgICAgICAgICA8TmV3Q2hhdCB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICAgICAgICA8L1NDU1dyYXBwZXJOZXdDaGF0SWNvbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IWlzT3BlbiAmJiBzaG93QWdlbnRzTmF2QmxvY2sgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29sbGFwc2VkRGl2aWRlciAvPlxuICAgICAgICAgICAge3Nob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPyAoXG4gICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm1haWFrZXJOYXYnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ21haWFrZXInfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0TXBPcGVuKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQoKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TWFpYVN0b3JlSWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICA8L1NDU1dyYXBwZXJBZ2VudHNOYXZJY29uPlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtjYW5WaWV3QWdlbnRzID8gKFxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY29udmVyc2F0aW9ucy5teUFnZW50c05hdicpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgIDxTQ1NXcmFwcGVyQWdlbnRzTmF2SWNvblxuICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnfVxuICAgICAgICAgICAgICAgICAgZGF0YS1hcHBjdWVzPXtBUFBDVUVTX1NFTEVDVE9SUy5tYWlhU2lkZWJhck15QWdlbnRzfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlTaWRlYmFyTXlBZ2VudHMpXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZSgpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNeUFnZW50c05hdkljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICB7Y2FuVmlld1NraWxscyA/IChcbiAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubXlTa2lsbHNOYXYnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15U2tpbGxzKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuU2tpbGxzKClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFNraWxsc05hdkljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ1NTaWRlYmFyVG9vbGJhcj5cbiAgICAgIDxTQ1NTaWRlYmFyQm9keSAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgIDxTQ1NTaWRlYmFyT3BlblBhbmVsPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgICAge3Nob3dBZ2VudHNOYXZCbG9jayA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckFnZW50c0FjdGlvbnM+XG4gICAgICAgICAgICAgICAgICB7c2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdE1wT3BlbilcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DcmVhdGVBZ2VudCgpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNYWlhU3RvcmVJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm1haWFrZXJOYXYnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIHtjYW5WaWV3QWdlbnRzID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLWFwcGN1ZXM9e0FQUENVRVNfU0VMRUNUT1JTLm1haWFTaWRlYmFyTXlBZ2VudHN9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15QWdlbnRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNeUFnZW50c05hdkljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+e3QoJ2NvbnZlcnNhdGlvbnMubXlBZ2VudHNOYXYnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIHtjYW5WaWV3U2tpbGxzID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlTaWRlYmFyTXlTa2lsbHMpXG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuU2tpbGxzKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm15U2tpbGxzTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3Pnt0KCdob21lTWVudS5tYWlha2VyLmJhZGdlTmV3Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3PlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmdSb3c+XG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZz57dCgnY29udmVyc2F0aW9ucy50aXRsZScpfTwvU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nPlxuICAgICAgICAgICAgICA8L1NDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZ1Jvdz5cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0Jsb2NrPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDaGF0c1Njcm9sbFxuICAgICAgICAgICAgICByZWY9e2NoYXRzQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAkaGFzQ2hhdHM9e2NoYXRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICRvZmZzZXRWYXJpYW50PXtoYXNFcnJvciA/ICdlcnJvcicgOiAnZGVmYXVsdCd9XG4gICAgICAgICAgICAgICRhZ2VudE5hdkJ1dHRvbkNvdW50PXthZ2VudE5hdkJ1dHRvbkNvdW50fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgIWNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvclN0YXRlIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICApIDogbG9hZGluZ0NoYXRzID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICAgICA8U2lkZWJhckNoYXRzU2tlbGV0b24gLz5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJMb2FkaW5nQXJlYT5cbiAgICAgICAgICAgICAgKSA6IGNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAge2NoYXRzLm1hcCgoY2hhdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8TGlzdEhpc3RvcnlDaGF0XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NoYXQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGF0PXtjaGF0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2hhdERhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uR29Ub0NoYXQoY2hhdERhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2RhbE9wZW49e2lzT3Blbk1vZGFsID09PSBjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25PcGVuTW9kYWw9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2VNb2RhbD17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVVwZGF0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17YWN0aXZlQ2hhdElkID09PSBjaGF0LnNlc3Npb25FeHRlcm5hbElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdNb3JlQ2hhdHMgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckxvYWRNb3JlUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxTaWRlYmFyQ2hhdHNTa2VsZXRvbiBjb3VudD17Mn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTG9hZE1vcmVSb3c+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRW1wdHlDaGF0cz5cbiAgICAgICAgICAgICAgICAgIDxFbXB0eUhpc3RvcnlJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0Pnt0KCdjb252ZXJzYXRpb25zLmVtcHR5Jyl9PC9TQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQ+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRW1wdHlDaGF0cz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckNoYXRzU2Nyb2xsPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDaGF0c0Zvb3Rlcj5cbiAgICAgICAgICAgICAge2hhc0Vycm9yICYmIGNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQ2hhdHNGb290ZXI+XG4gICAgICAgICAgPC9TQ1NTaWRlYmFyT3BlblBhbmVsPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPFNDU1NpZGViYXJGb290ZXJBY3Rpb25zICRpc09wZW49e2lzT3Blbn0gJGp1c3RpZnlCZXR3ZWVuPXshIXNlbGVjdGVkQWdlbnR9PlxuICAgICAgICAgIHtzZWxlY3RlZEFnZW50ID8gPEZlZWRiYWNrQnV0dG9uIHNlbGVjdGVkQWdlbnQ9e3NlbGVjdGVkQWdlbnR9IGlzT3Blbj17aXNPcGVufSAvPiA6IG51bGx9XG4gICAgICAgIDwvU0NTU2lkZWJhckZvb3RlckFjdGlvbnM+XG4gICAgICA8L1NDU1NpZGViYXJCb2R5PlxuICAgIDwvU0NTU2lkZWJhclJvb3Q+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEs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