@cuby-ui/core 0.0.469 → 0.0.470

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 (478) hide show
  1. package/README.md +25 -25
  2. package/esm2022/animations/animations.mjs +1 -1
  3. package/esm2022/animations/index.mjs +1 -1
  4. package/esm2022/classes/accessors.mjs +1 -1
  5. package/esm2022/classes/driver.mjs +1 -1
  6. package/esm2022/classes/index.mjs +1 -1
  7. package/esm2022/classes/vehicle.mjs +1 -1
  8. package/esm2022/components/accordion/accordion-item/accordion-item.component.mjs +3 -3
  9. package/esm2022/components/accordion/accordion-item/accordion-item.options.mjs +1 -1
  10. package/esm2022/components/accordion/accordion.component.mjs +3 -3
  11. package/esm2022/components/accordion/accordion.directive.mjs +1 -1
  12. package/esm2022/components/accordion/accordion.module.mjs +1 -1
  13. package/esm2022/components/accordion/index.mjs +1 -1
  14. package/esm2022/components/alert/alert.component.mjs +3 -3
  15. package/esm2022/components/alert/alert.interfaces.mjs +1 -1
  16. package/esm2022/components/alert/alert.module.mjs +1 -1
  17. package/esm2022/components/alert/alert.service.mjs +1 -1
  18. package/esm2022/components/alert/alert.tokens.mjs +1 -1
  19. package/esm2022/components/alert/alert.types.mjs +1 -1
  20. package/esm2022/components/alert/alerts.component.mjs +3 -3
  21. package/esm2022/components/alert/index.mjs +1 -1
  22. package/esm2022/components/alert-hint/alert-hint.component.mjs +3 -3
  23. package/esm2022/components/alert-hint/error-status.mjs +1 -1
  24. package/esm2022/components/alert-hint/index.mjs +1 -1
  25. package/esm2022/components/badge/badge.component.mjs +3 -3
  26. package/esm2022/components/badge/badge.module.mjs +1 -1
  27. package/esm2022/components/badge/badge.options.mjs +1 -1
  28. package/esm2022/components/badge/index.mjs +1 -1
  29. package/esm2022/components/banner/banner.component.mjs +3 -3
  30. package/esm2022/components/banner/banner.module.mjs +1 -1
  31. package/esm2022/components/banner/banner.options.mjs +1 -1
  32. package/esm2022/components/banner/index.mjs +1 -1
  33. package/esm2022/components/breadcrumbs/breadcrumb/breadcrumb.component.mjs +3 -3
  34. package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +3 -3
  35. package/esm2022/components/breadcrumbs/breadcrumbs.module.mjs +1 -1
  36. package/esm2022/components/breadcrumbs/index.mjs +1 -1
  37. package/esm2022/components/button/button.component.mjs +3 -3
  38. package/esm2022/components/button/button.module.mjs +1 -1
  39. package/esm2022/components/button/button.options.mjs +1 -1
  40. package/esm2022/components/button/index.mjs +1 -1
  41. package/esm2022/components/button-group/button-group.component.mjs +3 -3
  42. package/esm2022/components/button-group/button-group.module.mjs +1 -1
  43. package/esm2022/components/button-group/index.mjs +1 -1
  44. package/esm2022/components/card-wrapper/card-wrapper.component.mjs +3 -3
  45. package/esm2022/components/card-wrapper/index.mjs +1 -1
  46. package/esm2022/components/checkbox/checkbox.component.mjs +1 -1
  47. package/esm2022/components/checkbox/checkbox.module.mjs +1 -1
  48. package/esm2022/components/checkbox/index.mjs +1 -1
  49. package/esm2022/components/content-header/content-header.component.mjs +3 -3
  50. package/esm2022/components/content-header/index.mjs +1 -1
  51. package/esm2022/components/content-wrapper/content-wrapper.component.mjs +3 -3
  52. package/esm2022/components/content-wrapper/index.mjs +1 -1
  53. package/esm2022/components/context-menu/context-menu.component.mjs +3 -3
  54. package/esm2022/components/context-menu/context-menu.module.mjs +1 -1
  55. package/esm2022/components/context-menu/index.mjs +1 -1
  56. package/esm2022/components/dialog/dialog-actions/dialog-actions.component.mjs +3 -3
  57. package/esm2022/components/dialog/dialog-header/dialog-header.component.mjs +3 -3
  58. package/esm2022/components/dialog/dialog.component.mjs +3 -3
  59. package/esm2022/components/dialog/dialog.interfaces.mjs +1 -1
  60. package/esm2022/components/dialog/dialog.module.mjs +1 -1
  61. package/esm2022/components/dialog/dialog.service.mjs +1 -1
  62. package/esm2022/components/dialog/dialog.tokens.mjs +1 -1
  63. package/esm2022/components/dialog/dialogs.component.mjs +3 -3
  64. package/esm2022/components/dialog/index.mjs +1 -1
  65. package/esm2022/components/dropdown/dropdown.interfaces.mjs +1 -1
  66. package/esm2022/components/dropdown/index.mjs +1 -1
  67. package/esm2022/components/empty-state/empty-state.component.mjs +3 -3
  68. package/esm2022/components/empty-state/index.mjs +1 -1
  69. package/esm2022/components/file-icon/file-icon.component.mjs +3 -3
  70. package/esm2022/components/file-icon/file-icon.options.mjs +1 -1
  71. package/esm2022/components/file-icon/index.mjs +1 -1
  72. package/esm2022/components/form-field/form-field.component.mjs +3 -3
  73. package/esm2022/components/form-field/form-field.module.mjs +1 -1
  74. package/esm2022/components/form-field/index.mjs +1 -1
  75. package/esm2022/components/ghost-input/ghost-input.component.mjs +1 -1
  76. package/esm2022/components/ghost-input/index.mjs +1 -1
  77. package/esm2022/components/hint/hint.component.mjs +3 -3
  78. package/esm2022/components/hint/hint.module.mjs +1 -1
  79. package/esm2022/components/hint/index.mjs +1 -1
  80. package/esm2022/components/icon-button/icon-button.component.mjs +3 -3
  81. package/esm2022/components/icon-button/icon-button.module.mjs +1 -1
  82. package/esm2022/components/icon-button/index.mjs +1 -1
  83. package/esm2022/components/index.mjs +1 -1
  84. package/esm2022/components/input-number/index.mjs +1 -1
  85. package/esm2022/components/input-number/input-number.component.mjs +3 -3
  86. package/esm2022/components/input-number/input-number.module.mjs +1 -1
  87. package/esm2022/components/input-password/index.mjs +1 -1
  88. package/esm2022/components/input-password/input-password.component.mjs +3 -3
  89. package/esm2022/components/input-password/input-password.module.mjs +1 -1
  90. package/esm2022/components/input-text/index.mjs +1 -1
  91. package/esm2022/components/input-text/input-text.component.mjs +3 -3
  92. package/esm2022/components/input-text/input-text.module.mjs +1 -1
  93. package/esm2022/components/input-time/index.mjs +1 -1
  94. package/esm2022/components/input-time/input-time.component.mjs +3 -3
  95. package/esm2022/components/input-time/input-time.module.mjs +1 -1
  96. package/esm2022/components/input-time/input-time.options.mjs +1 -1
  97. package/esm2022/components/label/index.mjs +1 -1
  98. package/esm2022/components/label/label.component.mjs +3 -3
  99. package/esm2022/components/label/label.module.mjs +1 -1
  100. package/esm2022/components/layout/index.mjs +1 -1
  101. package/esm2022/components/layout/layout.component.mjs +3 -3
  102. package/esm2022/components/letter-box/index.mjs +1 -1
  103. package/esm2022/components/letter-box/letter-box.component.mjs +3 -3
  104. package/esm2022/components/letter-box/letter-box.interfaces.mjs +1 -1
  105. package/esm2022/components/notification/index.mjs +1 -1
  106. package/esm2022/components/notification/notification.component.mjs +3 -3
  107. package/esm2022/components/notification/notification.module.mjs +1 -1
  108. package/esm2022/components/notification/notification.options.mjs +1 -1
  109. package/esm2022/components/options-button/index.mjs +1 -1
  110. package/esm2022/components/options-button/options-button.component.mjs +3 -3
  111. package/esm2022/components/radio/index.mjs +1 -1
  112. package/esm2022/components/radio/radio.component.mjs +1 -1
  113. package/esm2022/components/radio/radio.module.mjs +1 -1
  114. package/esm2022/components/render-dynamic-components/index.mjs +1 -1
  115. package/esm2022/components/render-dynamic-components/render-dynamic-components.component.mjs +3 -3
  116. package/esm2022/components/render-dynamic-components/render-dynamic-components.options.mjs +1 -1
  117. package/esm2022/components/render-dynamic-components/render-dynamic-components.service.mjs +1 -1
  118. package/esm2022/components/root/index.mjs +1 -1
  119. package/esm2022/components/root/root.component.mjs +3 -3
  120. package/esm2022/components/root/root.module.mjs +1 -1
  121. package/esm2022/components/root/root.options.mjs +1 -1
  122. package/esm2022/components/select/index.mjs +1 -1
  123. package/esm2022/components/select/select.component.mjs +3 -3
  124. package/esm2022/components/select/select.module.mjs +1 -1
  125. package/esm2022/components/sidebar/index.mjs +1 -1
  126. package/esm2022/components/sidebar/sidebar-container/index.mjs +1 -1
  127. package/esm2022/components/sidebar/sidebar-container/sidebar-container.component.mjs +3 -3
  128. package/esm2022/components/sidebar/sidebar-header/index.mjs +1 -1
  129. package/esm2022/components/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
  130. package/esm2022/components/sidebar/sidebar-navigation/index.mjs +1 -1
  131. package/esm2022/components/sidebar/sidebar-navigation/sidebar-navigation.component.mjs +3 -3
  132. package/esm2022/components/sidebar/sidebar-navigation-container/index.mjs +1 -1
  133. package/esm2022/components/sidebar/sidebar-navigation-container/sidebar-navigation-container.component.mjs +3 -3
  134. package/esm2022/components/sidebar/sidebar-navigation-item/index.mjs +1 -1
  135. package/esm2022/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.mjs +3 -3
  136. package/esm2022/components/sidebar/sidebar.options.mjs +1 -1
  137. package/esm2022/components/sidebar/sidebar.service.mjs +1 -1
  138. package/esm2022/components/svg/index.mjs +1 -1
  139. package/esm2022/components/svg/svg.component.mjs +3 -3
  140. package/esm2022/components/svg/svg.module.mjs +1 -1
  141. package/esm2022/components/tab/index.mjs +1 -1
  142. package/esm2022/components/tab/tab.component.mjs +1 -1
  143. package/esm2022/components/tabs/components/abstract-tabs/abstract-tabs.component.mjs +3 -3
  144. package/esm2022/components/tabs/components/abstract-tabs/index.mjs +1 -1
  145. package/esm2022/components/tabs/components/index.mjs +1 -1
  146. package/esm2022/components/tabs/index.mjs +1 -1
  147. package/esm2022/components/tabs/services/index.mjs +1 -1
  148. package/esm2022/components/tabs/services/tabs.service.mjs +1 -1
  149. package/esm2022/components/tabs/tabs.component.mjs +3 -3
  150. package/esm2022/components/tabs/tabs.options.mjs +1 -1
  151. package/esm2022/components/tabs/tabs.provider.mjs +1 -1
  152. package/esm2022/components/textarea/index.mjs +1 -1
  153. package/esm2022/components/textarea/textarea.component.mjs +1 -1
  154. package/esm2022/components/textarea/textarea.module.mjs +1 -1
  155. package/esm2022/components/toggle/index.mjs +1 -1
  156. package/esm2022/components/toggle/toggle.component.mjs +1 -1
  157. package/esm2022/components/toggle/toggle.module.mjs +1 -1
  158. package/esm2022/directives/index.mjs +1 -1
  159. package/esm2022/directives/text-field-controller/index.mjs +1 -1
  160. package/esm2022/directives/text-field-controller/text-field-controller.module.mjs +1 -1
  161. package/esm2022/directives/text-field-controller/text-field-controller.provider.mjs +1 -1
  162. package/esm2022/directives/text-field-controller/text-field-icon-left.directive.mjs +1 -1
  163. package/esm2022/directives/text-field-controller/text-field-id.directive.mjs +1 -1
  164. package/esm2022/directives/text-field-controller/text-field-is-error.directive.mjs +1 -1
  165. package/esm2022/directives/text-field-controller/text-field-placeholder.directive.mjs +1 -1
  166. package/esm2022/directives/text-field-controller/text-field-size.directive.mjs +1 -1
  167. package/esm2022/directives/text-field-controller/text-field.controller.mjs +1 -1
  168. package/esm2022/directives/tooltip/index.mjs +1 -1
  169. package/esm2022/directives/tooltip/tooltip-describe.directive.mjs +1 -1
  170. package/esm2022/directives/tooltip/tooltip-driver.directive.mjs +1 -1
  171. package/esm2022/directives/tooltip/tooltip-host.directive.mjs +1 -1
  172. package/esm2022/directives/tooltip/tooltip-hover.directive.mjs +1 -1
  173. package/esm2022/directives/tooltip/tooltip-manual.directive.mjs +1 -1
  174. package/esm2022/directives/tooltip/tooltip-options.directive.mjs +1 -1
  175. package/esm2022/directives/tooltip/tooltip-overflow.directive.mjs +1 -1
  176. package/esm2022/directives/tooltip/tooltip-pointer.directive.mjs +1 -1
  177. package/esm2022/directives/tooltip/tooltip-position.directive.mjs +1 -1
  178. package/esm2022/directives/tooltip/tooltip-unstyled.component.mjs +1 -1
  179. package/esm2022/directives/tooltip/tooltip.component.mjs +13 -13
  180. package/esm2022/directives/tooltip/tooltip.directive.mjs +1 -1
  181. package/esm2022/directives/tooltip/tooltip.mjs +1 -1
  182. package/esm2022/directives/tooltip/tooltip.providers.mjs +1 -1
  183. package/esm2022/directives/tooltip/tooltip.service.mjs +1 -1
  184. package/esm2022/directives/tooltip/tooltips.component.mjs +3 -3
  185. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.component.mjs +3 -3
  186. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.options.mjs +1 -1
  187. package/esm2022/editor/components/marker-modal/marker-modal.component.mjs +3 -3
  188. package/esm2022/editor/components/marker-select/component/select-item/select-option.component.mjs +3 -3
  189. package/esm2022/editor/components/marker-select/marker-select.component.mjs +3 -3
  190. package/esm2022/editor/config/custom-elements.mjs +1 -1
  191. package/esm2022/editor/editor.component.mjs +3 -3
  192. package/esm2022/editor/interfaces/angular-element.mjs +1 -1
  193. package/esm2022/editor/interfaces/custom-element.mjs +1 -1
  194. package/esm2022/editor/interfaces/editor-service.mjs +1 -1
  195. package/esm2022/editor/providers/index.mjs +1 -1
  196. package/esm2022/editor/tools/combined-text-block.tool.mjs +1 -1
  197. package/esm2022/editor/tools/role-marker.tool.mjs +3 -3
  198. package/esm2022/editor/tools/tool-marker.tool.mjs +1 -1
  199. package/esm2022/editor/utils/copy-text-to-clipboard.mjs +1 -1
  200. package/esm2022/editor/utils/create-tools-data.mjs +1 -1
  201. package/esm2022/editor/utils/open-file-in-browser.mjs +1 -1
  202. package/esm2022/editor/utils/set-loading.mjs +1 -1
  203. package/esm2022/editor/utils/url.validator.mjs +1 -1
  204. package/esm2022/editor/widgets/editor-block/editor-block.component.mjs +3 -3
  205. package/esm2022/editor/widgets/editor-modal/editor-modal.component.mjs +3 -3
  206. package/esm2022/editor/widgets/editor-modal/index.mjs +1 -1
  207. package/esm2022/editor/widgets/editor-readonly/editor-readonly.options.mjs +1 -1
  208. package/esm2022/editor/widgets/editor-readonly/editor-resize-observer.directive.mjs +1 -1
  209. package/esm2022/editor/widgets/index.mjs +1 -1
  210. package/esm2022/index.mjs +1 -1
  211. package/esm2022/interceptors/auth.interceptor.mjs +1 -1
  212. package/esm2022/interceptors/error-handler.interceptor.mjs +1 -1
  213. package/esm2022/interceptors/x-ndjson.interceptor.mjs +1 -1
  214. package/esm2022/interfaces/context-menu-item.mjs +1 -1
  215. package/esm2022/interfaces/image.mjs +1 -1
  216. package/esm2022/interfaces/index.mjs +1 -1
  217. package/esm2022/interfaces/option.mjs +1 -1
  218. package/esm2022/providers/auth.options.mjs +1 -1
  219. package/esm2022/providers/auth.provider.mjs +1 -1
  220. package/esm2022/providers/index.mjs +1 -1
  221. package/esm2022/services/auth.service.mjs +1 -1
  222. package/esm2022/services/browser-auth.service.mjs +1 -1
  223. package/esm2022/services/index.mjs +1 -1
  224. package/esm2022/services/loader.options.mjs +1 -1
  225. package/esm2022/services/mobile-auth.service.mjs +1 -1
  226. package/esm2022/services/position.service.mjs +1 -1
  227. package/esm2022/services/theme.options.mjs +1 -1
  228. package/esm2022/services/theme.service.mjs +1 -1
  229. package/esm2022/services/token.options.mjs +1 -1
  230. package/esm2022/services/token.service.mjs +1 -1
  231. package/esm2022/services/visual-viewport.service.mjs +1 -1
  232. package/esm2022/tokens/animations-speed.mjs +1 -1
  233. package/esm2022/tokens/index.mjs +1 -1
  234. package/esm2022/tokens/reduced-motion.mjs +1 -1
  235. package/esm2022/tokens/viewport.mjs +1 -1
  236. package/esm2022/types/appearance.mjs +1 -1
  237. package/esm2022/types/button-theme.mjs +1 -1
  238. package/esm2022/types/hint-type.mjs +1 -1
  239. package/esm2022/types/index.mjs +1 -1
  240. package/esm2022/types/point.mjs +1 -1
  241. package/esm2022/types/portal-item.mjs +1 -1
  242. package/esm2022/types/position.mjs +1 -1
  243. package/esm2022/types/resizing.mjs +1 -1
  244. package/esm2022/types/shape.mjs +1 -1
  245. package/esm2022/types/size.mjs +1 -1
  246. package/esm2022/types/status.mjs +1 -1
  247. package/esm2022/utils/check-fixed-position.mjs +1 -1
  248. package/esm2022/utils/default-validators/create-default-validators.mjs +1 -1
  249. package/esm2022/utils/default-validators/create-default-validators.options.mjs +1 -1
  250. package/esm2022/utils/default-validators/extra-spaces.options.mjs +1 -1
  251. package/esm2022/utils/default-validators/extra-spaces.validators.mjs +1 -1
  252. package/esm2022/utils/default-validators/index.mjs +1 -1
  253. package/esm2022/utils/format/index.mjs +1 -1
  254. package/esm2022/utils/format/remove-spaces.mjs +1 -1
  255. package/esm2022/utils/format/replace.mjs +1 -1
  256. package/esm2022/utils/index.mjs +1 -1
  257. package/esm2022/utils/miscellaneous/index.mjs +1 -1
  258. package/esm2022/utils/miscellaneous/is-obscured.mjs +1 -1
  259. package/esm2022/utils/miscellaneous/override-options.mjs +1 -1
  260. package/esm2022/utils/miscellaneous/to-animation-options.mjs +1 -1
  261. package/esm2022/widgets/assets/constants/index.mjs +1 -1
  262. package/esm2022/widgets/assets/constants/translations.mjs +1 -1
  263. package/esm2022/widgets/assets/index.mjs +1 -1
  264. package/esm2022/widgets/index.mjs +1 -1
  265. package/esm2022/widgets/model/index.mjs +1 -1
  266. package/esm2022/widgets/model/resource-state-service.interface.mjs +1 -1
  267. package/esm2022/widgets/model/resource-state-service.token.mjs +1 -1
  268. package/esm2022/widgets/model/resources-block.options.mjs +1 -1
  269. package/esm2022/widgets/model/subject-modal-service.interface.mjs +1 -1
  270. package/esm2022/widgets/model/subject-modal-service.token.mjs +1 -1
  271. package/esm2022/widgets/model/used-elements-service.interface.mjs +1 -1
  272. package/esm2022/widgets/model/used-elements-service.token.mjs +1 -1
  273. package/esm2022/widgets/model/utility-service.interface.mjs +1 -1
  274. package/esm2022/widgets/model/utility-service.token.mjs +1 -1
  275. package/esm2022/widgets/service/index.mjs +1 -1
  276. package/esm2022/widgets/service/resource-state-base.service.mjs +1 -1
  277. package/esm2022/widgets/service/subject-modal-base.service.mjs +1 -1
  278. package/esm2022/widgets/service/used-elements-base.service.mjs +1 -1
  279. package/esm2022/widgets/service/utility-base.service.mjs +1 -1
  280. package/esm2022/widgets/ui/assignee-role-item/assignee-role-item.component.mjs +3 -3
  281. package/esm2022/widgets/ui/assignee-role-item/index.mjs +1 -1
  282. package/esm2022/widgets/ui/assignee-roles-tabs/assignee-roles-tabs.component.mjs +3 -3
  283. package/esm2022/widgets/ui/assignee-roles-tabs/index.mjs +1 -1
  284. package/esm2022/widgets/ui/categories/categories.component.mjs +3 -3
  285. package/esm2022/widgets/ui/categories/components/categories-list/categories-list.component.mjs +3 -3
  286. package/esm2022/widgets/ui/categories/components/categories-list/index.mjs +1 -1
  287. package/esm2022/widgets/ui/categories/components/category-form/category-form.component.mjs +3 -3
  288. package/esm2022/widgets/ui/categories/components/category-form/index.mjs +1 -1
  289. package/esm2022/widgets/ui/categories/components/category-item/category-item.component.mjs +3 -3
  290. package/esm2022/widgets/ui/categories/components/category-item/index.mjs +1 -1
  291. package/esm2022/widgets/ui/categories/components/create-category-item/create-category-item.component.mjs +3 -3
  292. package/esm2022/widgets/ui/categories/components/create-category-item/index.mjs +1 -1
  293. package/esm2022/widgets/ui/categories/components/index.mjs +1 -1
  294. package/esm2022/widgets/ui/categories/index.mjs +1 -1
  295. package/esm2022/widgets/ui/categories/services/index.mjs +1 -1
  296. package/esm2022/widgets/ui/categories/services/selected-category.service.mjs +1 -1
  297. package/esm2022/widgets/ui/checklist-block/checklist-block.component.mjs +3 -3
  298. package/esm2022/widgets/ui/checklist-block/checklist-block.options.mjs +1 -1
  299. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list/checklist-block-list.component.mjs +3 -3
  300. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list/index.mjs +1 -1
  301. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-card/checklist-block-list-item-action-card.component.mjs +3 -3
  302. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-card/index.mjs +1 -1
  303. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-with-verification/checklist-block-list-item-action-with-verification.component.mjs +3 -3
  304. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-with-verification/index.mjs +1 -1
  305. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-without-verification/checklist-block-list-item-action-without-verification.component.mjs +3 -3
  306. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-action-without-verification/index.mjs +1 -1
  307. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.component.mjs +3 -3
  308. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-container/checklist-block-list-item-container.options.mjs +1 -1
  309. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-container/index.mjs +1 -1
  310. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.component.mjs +3 -3
  311. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation/checklist-block-list-item-evaluation.options.mjs +1 -1
  312. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation/index.mjs +1 -1
  313. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.mjs +3 -3
  314. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.options.mjs +1 -1
  315. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation-criteria/index.mjs +1 -1
  316. package/esm2022/widgets/ui/checklist-block/components/checklist-block-title-control/checklist-block-title-control.component.mjs +3 -3
  317. package/esm2022/widgets/ui/checklist-block/components/checklist-block-title-control/index.mjs +1 -1
  318. package/esm2022/widgets/ui/checklist-block/components/index.mjs +1 -1
  319. package/esm2022/widgets/ui/checklist-block/index.mjs +1 -1
  320. package/esm2022/widgets/ui/checklist-block/services/checklist-block.service.mjs +1 -1
  321. package/esm2022/widgets/ui/checklist-block/services/index.mjs +1 -1
  322. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item/consumable-form-item.component.mjs +3 -3
  323. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item/default-control-delay.mjs +1 -1
  324. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item/index.mjs +1 -1
  325. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item-readonly/consumable-form-item-readonly.component.mjs +3 -3
  326. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item-readonly/index.mjs +1 -1
  327. package/esm2022/widgets/ui/consumable-form/components/index.mjs +1 -1
  328. package/esm2022/widgets/ui/consumable-form/consumable-form.component.mjs +3 -3
  329. package/esm2022/widgets/ui/consumable-form/consumable-form.options.mjs +1 -1
  330. package/esm2022/widgets/ui/consumable-form/index.mjs +1 -1
  331. package/esm2022/widgets/ui/criterion-info/criterion-info.component.mjs +3 -3
  332. package/esm2022/widgets/ui/criterion-info/index.mjs +1 -1
  333. package/esm2022/widgets/ui/criterion-info-form/criterion-info-form.component.mjs +3 -3
  334. package/esm2022/widgets/ui/criterion-info-form/criterion-info-form.options.mjs +1 -1
  335. package/esm2022/widgets/ui/criterion-info-form/index.mjs +1 -1
  336. package/esm2022/widgets/ui/criterion-readonly-info/criterion-readonly-info.component.mjs +3 -3
  337. package/esm2022/widgets/ui/criterion-readonly-info/index.mjs +1 -1
  338. package/esm2022/widgets/ui/delete-modal/delete-modal.component.mjs +3 -3
  339. package/esm2022/widgets/ui/delete-modal/delete-modal.options.mjs +1 -1
  340. package/esm2022/widgets/ui/delete-modal/index.mjs +1 -1
  341. package/esm2022/widgets/ui/framer-preview/framer-preview.component.mjs +3 -3
  342. package/esm2022/widgets/ui/framer-preview/framer-preview.options.mjs +1 -1
  343. package/esm2022/widgets/ui/framer-preview/index.mjs +1 -1
  344. package/esm2022/widgets/ui/general-control-error-hint/general-control-error-hint.component.mjs +3 -3
  345. package/esm2022/widgets/ui/general-control-error-hint/index.mjs +1 -1
  346. package/esm2022/widgets/ui/index.mjs +1 -1
  347. package/esm2022/widgets/ui/inserted/index.mjs +1 -1
  348. package/esm2022/widgets/ui/inserted/inserted.component.mjs +3 -3
  349. package/esm2022/widgets/ui/instruction-info/index.mjs +1 -1
  350. package/esm2022/widgets/ui/instruction-info/instruction-info.component.mjs +3 -3
  351. package/esm2022/widgets/ui/instruction-info-form/index.mjs +1 -1
  352. package/esm2022/widgets/ui/instruction-info-form/instruction-info-form.component.mjs +3 -3
  353. package/esm2022/widgets/ui/instruction-info-form/instruction-info-form.options.mjs +1 -1
  354. package/esm2022/widgets/ui/instruction-readonly-info/index.mjs +1 -1
  355. package/esm2022/widgets/ui/instruction-readonly-info/instruction-readonly-info.component.mjs +3 -3
  356. package/esm2022/widgets/ui/loader/index.mjs +1 -1
  357. package/esm2022/widgets/ui/loader/loader.component.mjs +3 -3
  358. package/esm2022/widgets/ui/modal-criteria-tab/index.mjs +1 -1
  359. package/esm2022/widgets/ui/modal-criteria-tab/modal-criteria-tab.component.mjs +3 -3
  360. package/esm2022/widgets/ui/modal-divided-section/index.mjs +1 -1
  361. package/esm2022/widgets/ui/modal-divided-section/modal-divided-section.component.mjs +3 -3
  362. package/esm2022/widgets/ui/modal-divided-section/modal-divided-section.interfaces.mjs +1 -1
  363. package/esm2022/widgets/ui/modal-header/index.mjs +1 -1
  364. package/esm2022/widgets/ui/modal-header/modal-header.component.mjs +3 -3
  365. package/esm2022/widgets/ui/modal-header-inserted-buttons/index.mjs +1 -1
  366. package/esm2022/widgets/ui/modal-header-inserted-buttons/modal-header-inserted-buttons.component.mjs +3 -3
  367. package/esm2022/widgets/ui/modal-header-tabs/index.mjs +1 -1
  368. package/esm2022/widgets/ui/modal-header-tabs/modal-header-tabs.component.mjs +3 -3
  369. package/esm2022/widgets/ui/modal-info-tab/index.mjs +1 -1
  370. package/esm2022/widgets/ui/modal-info-tab/modal-info-tab.component.mjs +3 -3
  371. package/esm2022/widgets/ui/modal-info-tab/modal-info-tab.options.mjs +1 -1
  372. package/esm2022/widgets/ui/modal-instructions-tab/index.mjs +1 -1
  373. package/esm2022/widgets/ui/modal-instructions-tab/modal-instructions-tab.component.mjs +3 -3
  374. package/esm2022/widgets/ui/modal-operation-part/index.mjs +1 -1
  375. package/esm2022/widgets/ui/modal-operation-part/modal-operation-part.component.mjs +3 -3
  376. package/esm2022/widgets/ui/modal-resources-tab/index.mjs +1 -1
  377. package/esm2022/widgets/ui/modal-resources-tab/modal-resources-tab.component.mjs +3 -3
  378. package/esm2022/widgets/ui/render-dynamic-modal/index.mjs +1 -1
  379. package/esm2022/widgets/ui/render-dynamic-modal/render-dynamic-modal.component.mjs +3 -3
  380. package/esm2022/widgets/ui/render-dynamic-modal/render-dynamic-modal.option.mjs +1 -1
  381. package/esm2022/widgets/ui/resources-block/components/index.mjs +1 -1
  382. package/esm2022/widgets/ui/resources-block/components/resources-block-consumables/index.mjs +1 -1
  383. package/esm2022/widgets/ui/resources-block/components/resources-block-consumables/resources-block-consumables.component.mjs +3 -3
  384. package/esm2022/widgets/ui/resources-block/components/resources-block-consumables/resources-block-consumables.options.mjs +1 -1
  385. package/esm2022/widgets/ui/resources-block/components/resources-block-content/index.mjs +1 -1
  386. package/esm2022/widgets/ui/resources-block/components/resources-block-content/resources-block-content.component.mjs +3 -3
  387. package/esm2022/widgets/ui/resources-block/components/resources-block-part/index.mjs +1 -1
  388. package/esm2022/widgets/ui/resources-block/components/resources-block-part/resources-block-part.component.mjs +3 -3
  389. package/esm2022/widgets/ui/resources-block/components/resources-block-part/resources-block-part.options.mjs +1 -1
  390. package/esm2022/widgets/ui/resources-block/components/resources-block-tabs/index.mjs +1 -1
  391. package/esm2022/widgets/ui/resources-block/components/resources-block-tabs/resources-block-tabs.component.mjs +3 -3
  392. package/esm2022/widgets/ui/resources-block/components/resources-block-tabs/resources-block-tabs.options.mjs +1 -1
  393. package/esm2022/widgets/ui/resources-block/components/resources-block-toolbox/index.mjs +1 -1
  394. package/esm2022/widgets/ui/resources-block/components/resources-block-toolbox/resources-block-toolbox.component.mjs +3 -3
  395. package/esm2022/widgets/ui/resources-block/components/resources-block-toolbox/resources-block-toolbox.options.mjs +1 -1
  396. package/esm2022/widgets/ui/resources-block/components/resources-options/index.mjs +1 -1
  397. package/esm2022/widgets/ui/resources-block/components/resources-options/resources-options.component.mjs +3 -3
  398. package/esm2022/widgets/ui/resources-block/index.mjs +1 -1
  399. package/esm2022/widgets/ui/resources-block/resources-block.component.mjs +3 -3
  400. package/esm2022/widgets/ui/resources-block-tabs/index.mjs +1 -1
  401. package/esm2022/widgets/ui/resources-block-tabs/resources-block-tabs.component.mjs +3 -3
  402. package/esm2022/widgets/ui/resources-block-tabs/resources-block-tabs.options.mjs +1 -1
  403. package/esm2022/widgets/ui/select-modal/components/index.mjs +1 -1
  404. package/esm2022/widgets/ui/select-modal/components/select-modal-folder/index.mjs +1 -1
  405. package/esm2022/widgets/ui/select-modal/components/select-modal-folder/select-modal-folder.component.mjs +3 -3
  406. package/esm2022/widgets/ui/select-modal/components/select-modal-search/index.mjs +1 -1
  407. package/esm2022/widgets/ui/select-modal/components/select-modal-search/select-modal-search.component.mjs +3 -3
  408. package/esm2022/widgets/ui/select-modal/index.mjs +1 -1
  409. package/esm2022/widgets/ui/select-modal/select-modal.component.mjs +3 -3
  410. package/esm2022/widgets/ui/select-modal/select-modal.interfaces.mjs +1 -1
  411. package/esm2022/widgets/ui/select-modal/select-modal.service.mjs +1 -1
  412. package/esm2022/widgets/ui/storage-list/components/index.mjs +1 -1
  413. package/esm2022/widgets/ui/storage-list/components/storage-list-item/index.mjs +1 -1
  414. package/esm2022/widgets/ui/storage-list/components/storage-list-item/storage-list-item.component.mjs +3 -3
  415. package/esm2022/widgets/ui/storage-list/index.mjs +1 -1
  416. package/esm2022/widgets/ui/storage-list/storage-list.component.mjs +3 -3
  417. package/esm2022/widgets/ui/storage-list/storage-list.options.mjs +1 -1
  418. package/esm2022/widgets/ui/toolbox-form/components/index.mjs +1 -1
  419. package/esm2022/widgets/ui/toolbox-form/components/tool-form-readonly/index.mjs +1 -1
  420. package/esm2022/widgets/ui/toolbox-form/components/tool-form-readonly/tool-form-readonly.component.mjs +3 -3
  421. package/esm2022/widgets/ui/toolbox-form/index.mjs +1 -1
  422. package/esm2022/widgets/ui/toolbox-form/tool-form.component.mjs +3 -3
  423. package/esm2022/widgets/ui/toolbox-form/tool-form.options.mjs +1 -1
  424. package/esm2022/widgets/ui/user-action-context-menu/activity-item/activity-item.component.mjs +3 -3
  425. package/esm2022/widgets/ui/user-action-context-menu/activity-item/index.mjs +1 -1
  426. package/esm2022/widgets/ui/user-action-context-menu/company-item/company-item.component.mjs +3 -3
  427. package/esm2022/widgets/ui/user-action-context-menu/company-item/index.mjs +1 -1
  428. package/esm2022/widgets/ui/user-action-context-menu/index.mjs +1 -1
  429. package/esm2022/widgets/ui/user-action-context-menu/services/activity-base.service.mjs +1 -1
  430. package/esm2022/widgets/ui/user-action-context-menu/services/activity.service.mjs +1 -1
  431. package/esm2022/widgets/ui/user-action-context-menu/services/index.mjs +1 -1
  432. package/esm2022/widgets/ui/user-action-context-menu/user-action-context-menu.component.mjs +3 -3
  433. package/esm2022/widgets/ui/user-action-context-menu/user-action-context.option.mjs +1 -1
  434. package/esm2022/widgets/ui/utility-info-readonly/index.mjs +1 -1
  435. package/esm2022/widgets/ui/utility-info-readonly/utility-info-readonly.component.mjs +3 -3
  436. package/esm2022/widgets/ui/utility-info-readonly/utility-info-readonly.options.mjs +1 -1
  437. package/esm2022/widgets/ui/utility-modal/components/criterion-modal-create/criterion-modal-create.component.mjs +3 -3
  438. package/esm2022/widgets/ui/utility-modal/components/criterion-modal-create/index.mjs +1 -1
  439. package/esm2022/widgets/ui/utility-modal/components/index.mjs +1 -1
  440. package/esm2022/widgets/ui/utility-modal/components/instruction-modal-create/index.mjs +1 -1
  441. package/esm2022/widgets/ui/utility-modal/components/instruction-modal-create/instruction-modal-create.component.mjs +3 -3
  442. package/esm2022/widgets/ui/utility-modal/components/readonly-criterion-modal/index.mjs +1 -1
  443. package/esm2022/widgets/ui/utility-modal/components/readonly-criterion-modal/readonly-criterion-modal.component.mjs +3 -3
  444. package/esm2022/widgets/ui/utility-modal/components/readonly-instruction-modal/index.mjs +1 -1
  445. package/esm2022/widgets/ui/utility-modal/components/readonly-instruction-modal/readonly-instruction-modal.component.mjs +3 -3
  446. package/esm2022/widgets/ui/utility-modal/components/readonly-utility-modal/index.mjs +1 -1
  447. package/esm2022/widgets/ui/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.mjs +3 -3
  448. package/esm2022/widgets/ui/utility-modal/components/utility-modal-create/index.mjs +1 -1
  449. package/esm2022/widgets/ui/utility-modal/components/utility-modal-create/utility-modal-create.component.mjs +3 -3
  450. package/esm2022/widgets/ui/utility-modal/index.mjs +1 -1
  451. package/esm2022/widgets/ui/utility-modal/utility-modal.component.mjs +3 -3
  452. package/esm2022/widgets/ui/utility-modal/utility-modal.options.mjs +1 -1
  453. package/esm2022/widgets/ui/utility-readonly-thumbnail/index.mjs +1 -1
  454. package/esm2022/widgets/ui/utility-readonly-thumbnail/utility-readonly-thumbnail.component.mjs +3 -3
  455. package/esm2022/widgets/ui/utility-thumbnail/index.mjs +1 -1
  456. package/esm2022/widgets/ui/utility-thumbnail/utility-thumbnail.component.mjs +3 -3
  457. package/fesm2022/cuby-ui-core.mjs +254 -254
  458. package/fesm2022/cuby-ui-core.mjs.map +1 -1
  459. package/fonts/Inter-Bold.svg +25443 -25443
  460. package/fonts/Inter-Medium.svg +25400 -25400
  461. package/fonts/Inter-Regular.svg +24341 -24341
  462. package/fonts/Inter-SemiBold.svg +25459 -25459
  463. package/fonts/Nunito-ExtraBoldItalic.svg +9508 -9508
  464. package/package.json +4 -4
  465. package/styles/direcive/flex-container.scss +3 -3
  466. package/styles/fonts.scss +69 -69
  467. package/styles/global.scss +10 -10
  468. package/styles/mixins/buttons.scss +13 -13
  469. package/styles/mixins/flex.scss +21 -21
  470. package/styles/mixins/headings.scss +115 -115
  471. package/styles/mixins/inputs.scss +91 -91
  472. package/styles/mixins/lists.scss +41 -41
  473. package/styles/mixins/paddings.scss +35 -35
  474. package/styles/mixins/shadows.scss +42 -42
  475. package/styles/mixins/texts.scss +224 -224
  476. package/styles/theme.scss +427 -427
  477. package/styles/variables/colors.scss +288 -288
  478. package/styles/variables/fonts.scss +2 -2
@@ -376,10 +376,10 @@ export class CuiEditorComponent {
376
376
  this.abortController = new AbortController();
377
377
  }
378
378
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
379
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: CuiEditorComponent, isStandalone: true, selector: "cui-editor", inputs: { editorApiId: { classPropertyName: "editorApiId", publicName: "editorApiId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, requestSize: { classPropertyName: "requestSize", publicName: "requestSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editorEmpty: "editorEmpty" }, providers: [CuiEditorService, CuiJTextApiService], viewQueries: [{ propertyName: "editorRef", first: true, predicate: ["editor"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\r\n #editor\r\n [id]=\"editorId\"\r\n data-editor\r\n [class._readonly]=\"config().readOnly\"\r\n></div>\r\n", styles: [":host{--textColor: var(--cui-base-900);--menuBackground: var(--cui-base-0);--menuBorder: var(--cui-base-200);--menuItemHover: var(--cui-base-10);--menuItemBackground: var(cui-base-900);--menuIconBackground: var(--cui-base-50);--menuIconHover: var(--cui-base-10);font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font)}:host ::ng-deep .ce-popover{--color-background: var(--menuBackground);--color-text-primary: var(--textColor);--color-border: var(--menuBorder);--color-border-icon: var(--menuBorder);--color-background-item: var(--menuItemBackground);--color-background-item-hover: var(--menuItemHover)}:host ::ng-deep .ce-popover__search{background:var(--menuIconBackground)}:host ::ng-deep .ce-popover .ce-popover-item__icon{background:var(--menuIconBackground)}:host ::ng-deep .ce-conversion-toolbar{background-color:var(--menuBackground);border-color:var(--menuBorder)}:host ::ng-deep .ce-conversion-toolbar__tools{padding:0 6px 6px}:host ::ng-deep .ce-conversion-tool{padding:3px;border-radius:6px}:host ::ng-deep .ce-conversion-tool__icon{border:1px solid var(--menuBorder);background-color:var(--menuIconBackground);box-shadow:none}:host ::ng-deep .ce-conversion-tool:hover{background-color:var(--menuItemHover)}:host ::ng-deep .ce-conversion-tool:hover .ce-conversion-tool__icon{border-color:var(--menuIconHover)}:host ::ng-deep .combined-text-block{padding:.4em 0;line-height:1.6em;outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part{outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child,:host ::ng-deep .combined-text-block .combined-text-block-part._selected{display:list-item}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child::marker,:host ::ng-deep .combined-text-block .combined-text-block-part._selected::marker{content:\"\"}:host ::ng-deep .image-tool__image{border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}:host ::ng-deep .image-tool__image-preloader{background-color:var(--cui-base-200)}:host ::ng-deep .image-tool__image-preloader:after{border:1px solid var(--cui-base-200);border-top:1px solid var(--cui-blue-600)}:host ::ng-deep .cdx-button{border-radius:8px;border:1px solid var(--cui-base-200);color:var(--textColor);background-color:var(--cui-base-10);box-shadow:none}:host ::ng-deep .ce-inline-toolbar{border-color:var(--cui-base-100);color:var(--textColor);background-color:var(--cui-base-0)}:host ::ng-deep .ce-inline-toolbar__dropdown:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-inline-tool:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{color:var(--cui-base-500)}:host ::ng-deep .ce-toolbar__plus:hover,:host ::ng-deep .ce-toolbar__settings-btn:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__actions{right:100%}:host ::ng-deep .ce-toolbar__content{max-width:none}@media (max-width: 650px){:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{border-color:var(--menuBorder);background-color:var(--menuBackground)}:host ::ng-deep .ce-toolbar__actions{inset:0 auto auto 0}}:host ::ng-deep .ce-block--selected .ce-block__content{background-color:var(--cui-base-200)}:host ::ng-deep .ce-block__content{max-width:100%}:host ::ng-deep .ce-block:only-of-type .combined-text-block[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active);position:absolute;color:var(--cui-base-400)}:host ::ng-deep [data-editor]{padding-right:4px;width:100%;height:100%;min-height:200px;overflow:hidden auto;scrollbar-gutter:stable}:host ::ng-deep [data-editor] .codex-editor{margin-left:60px}:host ::ng-deep [data-editor] .codex-editor--narrow .ce-popover{right:auto}:host ::ng-deep [data-editor] .codex-editor__redactor{margin-right:auto;padding-bottom:260px!important}@media (max-width: 650px){:host ::ng-deep [data-editor] .codex-editor{margin-left:0}}:host ::ng-deep [data-editor]._readonly{min-height:auto}:host ::ng-deep [data-editor]._readonly .codex-editor{margin:auto}:host ::ng-deep [data-editor]._readonly .codex-editor__redactor{padding-bottom:0!important}:host ::ng-deep [data-editor]._readonly .combined-text-block{padding:0}:host ::ng-deep [data-editor] [data-item-name=move-up],:host ::ng-deep [data-editor] [data-item-name=move-down],:host ::ng-deep [data-editor] [data-tool=paragraph]{display:none}:host ::ng-deep [data-editor] *::selection{background:var(--cui-base-200)}:host ::ng-deep [data-editor] a{color:var(--cui-light-blue-600)}:host ::ng-deep .marker{cursor:pointer;text-decoration:underline;color:var(--cui-light-blue-600);background-color:transparent}:host ::ng-deep .tool-marker,:host ::ng-deep .role-marker{margin:0 5px}:host ::ng-deep .tool-marker{color:#e97c00}:host ::ng-deep .role-marker{color:#8803f1}.form{height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
379
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: CuiEditorComponent, isStandalone: true, selector: "cui-editor", inputs: { editorApiId: { classPropertyName: "editorApiId", publicName: "editorApiId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, requestSize: { classPropertyName: "requestSize", publicName: "requestSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editorEmpty: "editorEmpty" }, providers: [CuiEditorService, CuiJTextApiService], viewQueries: [{ propertyName: "editorRef", first: true, predicate: ["editor"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #editor\n [id]=\"editorId\"\n data-editor\n [class._readonly]=\"config().readOnly\"\n></div>\n", styles: [":host{--textColor: var(--cui-base-900);--menuBackground: var(--cui-base-0);--menuBorder: var(--cui-base-200);--menuItemHover: var(--cui-base-10);--menuItemBackground: var(cui-base-900);--menuIconBackground: var(--cui-base-50);--menuIconHover: var(--cui-base-10);font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font)}:host ::ng-deep .ce-popover{--color-background: var(--menuBackground);--color-text-primary: var(--textColor);--color-border: var(--menuBorder);--color-border-icon: var(--menuBorder);--color-background-item: var(--menuItemBackground);--color-background-item-hover: var(--menuItemHover)}:host ::ng-deep .ce-popover__search{background:var(--menuIconBackground)}:host ::ng-deep .ce-popover .ce-popover-item__icon{background:var(--menuIconBackground)}:host ::ng-deep .ce-conversion-toolbar{background-color:var(--menuBackground);border-color:var(--menuBorder)}:host ::ng-deep .ce-conversion-toolbar__tools{padding:0 6px 6px}:host ::ng-deep .ce-conversion-tool{padding:3px;border-radius:6px}:host ::ng-deep .ce-conversion-tool__icon{border:1px solid var(--menuBorder);background-color:var(--menuIconBackground);box-shadow:none}:host ::ng-deep .ce-conversion-tool:hover{background-color:var(--menuItemHover)}:host ::ng-deep .ce-conversion-tool:hover .ce-conversion-tool__icon{border-color:var(--menuIconHover)}:host ::ng-deep .combined-text-block{padding:.4em 0;line-height:1.6em;outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part{outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child,:host ::ng-deep .combined-text-block .combined-text-block-part._selected{display:list-item}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child::marker,:host ::ng-deep .combined-text-block .combined-text-block-part._selected::marker{content:\"\"}:host ::ng-deep .image-tool__image{border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}:host ::ng-deep .image-tool__image-preloader{background-color:var(--cui-base-200)}:host ::ng-deep .image-tool__image-preloader:after{border:1px solid var(--cui-base-200);border-top:1px solid var(--cui-blue-600)}:host ::ng-deep .cdx-button{border-radius:8px;border:1px solid var(--cui-base-200);color:var(--textColor);background-color:var(--cui-base-10);box-shadow:none}:host ::ng-deep .ce-inline-toolbar{border-color:var(--cui-base-100);color:var(--textColor);background-color:var(--cui-base-0)}:host ::ng-deep .ce-inline-toolbar__dropdown:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-inline-tool:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{color:var(--cui-base-500)}:host ::ng-deep .ce-toolbar__plus:hover,:host ::ng-deep .ce-toolbar__settings-btn:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__actions{right:100%}:host ::ng-deep .ce-toolbar__content{max-width:none}@media (max-width: 650px){:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{border-color:var(--menuBorder);background-color:var(--menuBackground)}:host ::ng-deep .ce-toolbar__actions{inset:0 auto auto 0}}:host ::ng-deep .ce-block--selected .ce-block__content{background-color:var(--cui-base-200)}:host ::ng-deep .ce-block__content{max-width:100%}:host ::ng-deep .ce-block:only-of-type .combined-text-block[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active);position:absolute;color:var(--cui-base-400)}:host ::ng-deep [data-editor]{padding-right:4px;width:100%;height:100%;min-height:200px;overflow:hidden auto;scrollbar-gutter:stable}:host ::ng-deep [data-editor] .codex-editor{margin-left:60px}:host ::ng-deep [data-editor] .codex-editor--narrow .ce-popover{right:auto}:host ::ng-deep [data-editor] .codex-editor__redactor{margin-right:auto;padding-bottom:260px!important}@media (max-width: 650px){:host ::ng-deep [data-editor] .codex-editor{margin-left:0}}:host ::ng-deep [data-editor]._readonly{min-height:auto}:host ::ng-deep [data-editor]._readonly .codex-editor{margin:auto}:host ::ng-deep [data-editor]._readonly .codex-editor__redactor{padding-bottom:0!important}:host ::ng-deep [data-editor]._readonly .combined-text-block{padding:0}:host ::ng-deep [data-editor] [data-item-name=move-up],:host ::ng-deep [data-editor] [data-item-name=move-down],:host ::ng-deep [data-editor] [data-tool=paragraph]{display:none}:host ::ng-deep [data-editor] *::selection{background:var(--cui-base-200)}:host ::ng-deep [data-editor] a{color:var(--cui-light-blue-600)}:host ::ng-deep .marker{cursor:pointer;text-decoration:underline;color:var(--cui-light-blue-600);background-color:transparent}:host ::ng-deep .tool-marker,:host ::ng-deep .role-marker{margin:0 5px}:host ::ng-deep .tool-marker{color:#e97c00}:host ::ng-deep .role-marker{color:#8803f1}.form{height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
380
380
  }
381
381
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiEditorComponent, decorators: [{
382
382
  type: Component,
383
- args: [{ selector: 'cui-editor', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [CuiEditorService, CuiJTextApiService], template: "<div\r\n #editor\r\n [id]=\"editorId\"\r\n data-editor\r\n [class._readonly]=\"config().readOnly\"\r\n></div>\r\n", styles: [":host{--textColor: var(--cui-base-900);--menuBackground: var(--cui-base-0);--menuBorder: var(--cui-base-200);--menuItemHover: var(--cui-base-10);--menuItemBackground: var(cui-base-900);--menuIconBackground: var(--cui-base-50);--menuIconHover: var(--cui-base-10);font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font)}:host ::ng-deep .ce-popover{--color-background: var(--menuBackground);--color-text-primary: var(--textColor);--color-border: var(--menuBorder);--color-border-icon: var(--menuBorder);--color-background-item: var(--menuItemBackground);--color-background-item-hover: var(--menuItemHover)}:host ::ng-deep .ce-popover__search{background:var(--menuIconBackground)}:host ::ng-deep .ce-popover .ce-popover-item__icon{background:var(--menuIconBackground)}:host ::ng-deep .ce-conversion-toolbar{background-color:var(--menuBackground);border-color:var(--menuBorder)}:host ::ng-deep .ce-conversion-toolbar__tools{padding:0 6px 6px}:host ::ng-deep .ce-conversion-tool{padding:3px;border-radius:6px}:host ::ng-deep .ce-conversion-tool__icon{border:1px solid var(--menuBorder);background-color:var(--menuIconBackground);box-shadow:none}:host ::ng-deep .ce-conversion-tool:hover{background-color:var(--menuItemHover)}:host ::ng-deep .ce-conversion-tool:hover .ce-conversion-tool__icon{border-color:var(--menuIconHover)}:host ::ng-deep .combined-text-block{padding:.4em 0;line-height:1.6em;outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part{outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child,:host ::ng-deep .combined-text-block .combined-text-block-part._selected{display:list-item}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child::marker,:host ::ng-deep .combined-text-block .combined-text-block-part._selected::marker{content:\"\"}:host ::ng-deep .image-tool__image{border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}:host ::ng-deep .image-tool__image-preloader{background-color:var(--cui-base-200)}:host ::ng-deep .image-tool__image-preloader:after{border:1px solid var(--cui-base-200);border-top:1px solid var(--cui-blue-600)}:host ::ng-deep .cdx-button{border-radius:8px;border:1px solid var(--cui-base-200);color:var(--textColor);background-color:var(--cui-base-10);box-shadow:none}:host ::ng-deep .ce-inline-toolbar{border-color:var(--cui-base-100);color:var(--textColor);background-color:var(--cui-base-0)}:host ::ng-deep .ce-inline-toolbar__dropdown:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-inline-tool:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{color:var(--cui-base-500)}:host ::ng-deep .ce-toolbar__plus:hover,:host ::ng-deep .ce-toolbar__settings-btn:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__actions{right:100%}:host ::ng-deep .ce-toolbar__content{max-width:none}@media (max-width: 650px){:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{border-color:var(--menuBorder);background-color:var(--menuBackground)}:host ::ng-deep .ce-toolbar__actions{inset:0 auto auto 0}}:host ::ng-deep .ce-block--selected .ce-block__content{background-color:var(--cui-base-200)}:host ::ng-deep .ce-block__content{max-width:100%}:host ::ng-deep .ce-block:only-of-type .combined-text-block[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active);position:absolute;color:var(--cui-base-400)}:host ::ng-deep [data-editor]{padding-right:4px;width:100%;height:100%;min-height:200px;overflow:hidden auto;scrollbar-gutter:stable}:host ::ng-deep [data-editor] .codex-editor{margin-left:60px}:host ::ng-deep [data-editor] .codex-editor--narrow .ce-popover{right:auto}:host ::ng-deep [data-editor] .codex-editor__redactor{margin-right:auto;padding-bottom:260px!important}@media (max-width: 650px){:host ::ng-deep [data-editor] .codex-editor{margin-left:0}}:host ::ng-deep [data-editor]._readonly{min-height:auto}:host ::ng-deep [data-editor]._readonly .codex-editor{margin:auto}:host ::ng-deep [data-editor]._readonly .codex-editor__redactor{padding-bottom:0!important}:host ::ng-deep [data-editor]._readonly .combined-text-block{padding:0}:host ::ng-deep [data-editor] [data-item-name=move-up],:host ::ng-deep [data-editor] [data-item-name=move-down],:host ::ng-deep [data-editor] [data-tool=paragraph]{display:none}:host ::ng-deep [data-editor] *::selection{background:var(--cui-base-200)}:host ::ng-deep [data-editor] a{color:var(--cui-light-blue-600)}:host ::ng-deep .marker{cursor:pointer;text-decoration:underline;color:var(--cui-light-blue-600);background-color:transparent}:host ::ng-deep .tool-marker,:host ::ng-deep .role-marker{margin:0 5px}:host ::ng-deep .tool-marker{color:#e97c00}:host ::ng-deep .role-marker{color:#8803f1}.form{height:100%}\n"] }]
383
+ args: [{ selector: 'cui-editor', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [CuiEditorService, CuiJTextApiService], template: "<div\n #editor\n [id]=\"editorId\"\n data-editor\n [class._readonly]=\"config().readOnly\"\n></div>\n", styles: [":host{--textColor: var(--cui-base-900);--menuBackground: var(--cui-base-0);--menuBorder: var(--cui-base-200);--menuItemHover: var(--cui-base-10);--menuItemBackground: var(cui-base-900);--menuIconBackground: var(--cui-base-50);--menuIconHover: var(--cui-base-10);font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font)}:host ::ng-deep .ce-popover{--color-background: var(--menuBackground);--color-text-primary: var(--textColor);--color-border: var(--menuBorder);--color-border-icon: var(--menuBorder);--color-background-item: var(--menuItemBackground);--color-background-item-hover: var(--menuItemHover)}:host ::ng-deep .ce-popover__search{background:var(--menuIconBackground)}:host ::ng-deep .ce-popover .ce-popover-item__icon{background:var(--menuIconBackground)}:host ::ng-deep .ce-conversion-toolbar{background-color:var(--menuBackground);border-color:var(--menuBorder)}:host ::ng-deep .ce-conversion-toolbar__tools{padding:0 6px 6px}:host ::ng-deep .ce-conversion-tool{padding:3px;border-radius:6px}:host ::ng-deep .ce-conversion-tool__icon{border:1px solid var(--menuBorder);background-color:var(--menuIconBackground);box-shadow:none}:host ::ng-deep .ce-conversion-tool:hover{background-color:var(--menuItemHover)}:host ::ng-deep .ce-conversion-tool:hover .ce-conversion-tool__icon{border-color:var(--menuIconHover)}:host ::ng-deep .combined-text-block{padding:.4em 0;line-height:1.6em;outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part{outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child,:host ::ng-deep .combined-text-block .combined-text-block-part._selected{display:list-item}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child::marker,:host ::ng-deep .combined-text-block .combined-text-block-part._selected::marker{content:\"\"}:host ::ng-deep .image-tool__image{border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}:host ::ng-deep .image-tool__image-preloader{background-color:var(--cui-base-200)}:host ::ng-deep .image-tool__image-preloader:after{border:1px solid var(--cui-base-200);border-top:1px solid var(--cui-blue-600)}:host ::ng-deep .cdx-button{border-radius:8px;border:1px solid var(--cui-base-200);color:var(--textColor);background-color:var(--cui-base-10);box-shadow:none}:host ::ng-deep .ce-inline-toolbar{border-color:var(--cui-base-100);color:var(--textColor);background-color:var(--cui-base-0)}:host ::ng-deep .ce-inline-toolbar__dropdown:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-inline-tool:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{color:var(--cui-base-500)}:host ::ng-deep .ce-toolbar__plus:hover,:host ::ng-deep .ce-toolbar__settings-btn:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__actions{right:100%}:host ::ng-deep .ce-toolbar__content{max-width:none}@media (max-width: 650px){:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{border-color:var(--menuBorder);background-color:var(--menuBackground)}:host ::ng-deep .ce-toolbar__actions{inset:0 auto auto 0}}:host ::ng-deep .ce-block--selected .ce-block__content{background-color:var(--cui-base-200)}:host ::ng-deep .ce-block__content{max-width:100%}:host ::ng-deep .ce-block:only-of-type .combined-text-block[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active);position:absolute;color:var(--cui-base-400)}:host ::ng-deep [data-editor]{padding-right:4px;width:100%;height:100%;min-height:200px;overflow:hidden auto;scrollbar-gutter:stable}:host ::ng-deep [data-editor] .codex-editor{margin-left:60px}:host ::ng-deep [data-editor] .codex-editor--narrow .ce-popover{right:auto}:host ::ng-deep [data-editor] .codex-editor__redactor{margin-right:auto;padding-bottom:260px!important}@media (max-width: 650px){:host ::ng-deep [data-editor] .codex-editor{margin-left:0}}:host ::ng-deep [data-editor]._readonly{min-height:auto}:host ::ng-deep [data-editor]._readonly .codex-editor{margin:auto}:host ::ng-deep [data-editor]._readonly .codex-editor__redactor{padding-bottom:0!important}:host ::ng-deep [data-editor]._readonly .combined-text-block{padding:0}:host ::ng-deep [data-editor] [data-item-name=move-up],:host ::ng-deep [data-editor] [data-item-name=move-down],:host ::ng-deep [data-editor] [data-tool=paragraph]{display:none}:host ::ng-deep [data-editor] *::selection{background:var(--cui-base-200)}:host ::ng-deep [data-editor] a{color:var(--cui-light-blue-600)}:host ::ng-deep .marker{cursor:pointer;text-decoration:underline;color:var(--cui-light-blue-600);background-color:transparent}:host ::ng-deep .tool-marker,:host ::ng-deep .role-marker{margin:0 5px}:host ::ng-deep .tool-marker{color:#e97c00}:host ::ng-deep .role-marker{color:#8803f1}.form{height:100%}\n"] }]
384
384
  }], ctorParameters: () => [] });
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUMsT0FBTyxRQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFFMUMsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxHQUFHLEVBQ0gsT0FBTyxFQUNQLFNBQVMsRUFDVCxHQUFHLEVBQ0gsWUFBWSxFQUNaLEtBQUssRUFDTCxPQUFPLEVBQ1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQVksa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBVzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBVWpFLE1BQU0sT0FBTyxrQkFBa0I7SUE2QzNC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QztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUNqRCxDQUFDOytHQXRnQlEsa0JBQWtCO21HQUFsQixrQkFBa0IsNGZBRmhCLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsK0lDdkRyRCwrSEFNQTs7NEZEbURhLGtCQUFrQjtrQkFSOUIsU0FBUzsrQkFDSSxZQUFZLGNBQ1YsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBjb21wdXRlZCxcclxuICAgIERlc3Ryb3lSZWYsXHJcbiAgICBlZmZlY3QsXHJcbiAgICBpbmplY3QsXHJcbiAgICBpbnB1dCxcclxuICAgIG91dHB1dCxcclxuICAgIHZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB0eXBlIHsgQ3VpTnVsbGFibGUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5pbXBvcnQgeyBDdWlJZFNlcnZpY2UgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5pbXBvcnQgdHlwZSB7IEFQSSwgQmxvY2tNdXRhdGlvbkV2ZW50LCBPdXRwdXREYXRhIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcclxuaW1wb3J0IEVkaXRvckpTIGZyb20gJ0BlZGl0b3Jqcy9lZGl0b3Jqcyc7XHJcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgICBjb25jYXRNYXAsXHJcbiAgICBkZWxheSxcclxuICAgIGZpbmFsaXplLFxyXG4gICAgZnJvbUV2ZW50LFxyXG4gICAgbWFwLFxyXG4gICAgU3ViamVjdCxcclxuICAgIHRha2VXaGlsZSxcclxuICAgIHRhcCxcclxuICAgIHRocm90dGxlVGltZSxcclxuICAgIHRpbWVyLFxyXG4gICAgdG9BcnJheVxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDdWlCbG9jaywgQ3VpSlRleHRBcGlTZXJ2aWNlIH0gZnJvbSAnQGN1YnktdWkvYXBpJztcclxuXHJcbmltcG9ydCB7IGdldEVkaXRvckNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcclxuaW1wb3J0IHsgQ09NQklORURfVEVYVF9CTE9DS19OQU1FLCBDT01CSU5FRF9URVhUX0JMT0NLX1BBUlQsIERFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi9jb25zdGFudHMvZWRpdG9yLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IHNldEVkaXRvckV2ZW50cyB9IGZyb20gJy4vZXZlbnRzL3NldC1lZGl0b3ItZXZlbnRzJztcclxuaW1wb3J0IHR5cGUge1xyXG4gICAgQ3VpQmxvY2tEYXRhLFxyXG4gICAgQ3VpQmxvY2tzUmVxdWVzdERhdGEsXHJcbiAgICBDdWlDb21iaW5lZEJsb2NrQWRkaW5nRXZlbnQsXHJcbiAgICBDdWlDb21iaW5lZEJsb2NrVG9vbERhdGEsXHJcbiAgICBDdWlDb21iaW5lZFBhcnRCbG9jayxcclxuICAgIEN1aUVkaXRvckNvbmZpZyxcclxuICAgIEN1aUV2ZW50QWN0aW9uRGF0YSxcclxuICAgIEN1aUZ1bGxCbG9ja0RhdGFcclxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDdWlFZGl0b3JTZXJ2aWNlLCBFdmVudEFjdGlvbnMgfSBmcm9tICcuL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgcmVjYWxjdWxhdGVJbmRleGVzIH0gZnJvbSAnLi91dGlscy9yZWNhbGN1bGF0ZS1pbmRleGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjdWktZWRpdG9yJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtDdWlFZGl0b3JTZXJ2aWNlLCBDdWlKVGV4dEFwaVNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWlFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95ID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdWlJZFNlcnZpY2UgPSBpbmplY3QoQ3VpSWRTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWRpdG9yU2VydmljZSA9IGluamVjdChDdWlFZGl0b3JTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgalRleHRTZXJ2aWNlID0gaW5qZWN0KEN1aUpUZXh0QXBpU2VydmljZSk7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBQT09MSU5HX0RFTEFZID0gMTAwO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBFTEVNRU5UX1NQQUNFX1RPX0JPVFRPTSA9IDE1MDtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgU0NST0xMX1RIUk9UVExFX1RJTUUgPSAyMDA7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbXB0eVF1ZXVlID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBwcml2YXRlIHBvb2xpbmdTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIHNjcm9sbFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlOiBib29sZWFuW10gPSBbXTtcclxuICAgIHByaXZhdGUgaXNGaXJzdCA9IHRydWU7XHJcbiAgICBwcml2YXRlIGlzQ2hhbmdpbmcgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgaXNTa2lwID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGlzUmVxdWVzdGVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGlzRGVzdHJveWVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGJsb2NrSWRzTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICAgIHByaXZhdGUgY29tYmluZWRCbG9ja3MgPSBuZXcgTWFwKCk7XHJcbiAgICBwcml2YXRlIGluZGV4ID0gMDtcclxuICAgIHByaXZhdGUgcGFnZSA9IDA7XHJcbiAgICBwcml2YXRlIGFkZGVkQmxvY2tzOiBDdWlCbG9ja0RhdGFbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVkQmxvY2tzOiBDdWlCbG9ja1tdID0gW107XHJcbiAgICBwcml2YXRlIHJlbW92ZWRCbG9ja3NJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBwcml2YXRlIGNoYW5nZXNRdWV1ZTogQmxvY2tNdXRhdGlvbkV2ZW50W11bXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVkaXRvcklkID0gdGhpcy5jdWlJZFNlcnZpY2UuZ2VuZXJhdGUoKTtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzUmVhZG9ubHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpPy5yZWFkT25seSk7XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVkaXRvclJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ2VkaXRvcicpO1xyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSBlZGl0b3JBcGlJZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcclxuICAgIHB1YmxpYyByZWFkb25seSBjb25maWcgPSBpbnB1dDxDdWlFZGl0b3JDb25maWc+KERFRkFVTFRfQ09ORklHKTtcclxuICAgIHB1YmxpYyByZWFkb25seSByZXF1ZXN0U2l6ZSA9IGlucHV0PG51bWJlcj4oNDApO1xyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSBlZGl0b3JFbXB0eSA9IG91dHB1dDxib29sZWFuPigpO1xyXG5cclxuICAgIHB1YmxpYyBlZGl0b3IhOiBFZGl0b3JKUztcclxuICAgIHB1YmxpYyBlZGl0b3JFbGVtZW50ITogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0RWRpdG9yRWZmZWN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNEZXN0cm95ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmRlc3Ryb3lFZGl0b3IoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uU2Nyb2xsRXZlbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBvdmVyYWxsSGVpZ2h0ID0gZWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLkVMRU1FTlRfU1BBQ0VfVE9fQk9UVE9NO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSBlbGVtZW50LnNjcm9sbFRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgICAgICBpZiAoY3VycmVudEhlaWdodCA8IG92ZXJhbGxIZWlnaHQgfHwgdGhpcy5pc1JlcXVlc3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzUmVxdWVzdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucmVxdWVzdFNpemUoKTtcclxuICAgICAgICBsZXQgYmxvY2tzQ291bnQgPSAwO1xyXG5cclxuICAgICAgICB0aGlzLmdldEJsb2Nrcyh0aGlzLnBhZ2UsIHNpemUpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFwKChibG9ja3MpID0+IChibG9ja3NDb3VudCA9IGJsb2Nrcy5sZW5ndGgpKSxcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVxdWVzdGVkID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChibG9ja3NDb3VudCA+PSBzaXplKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5wYWdlKys7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvbkVkaXRvckNoYW5nZShfOiBBUEksIGV2ZW50OiBCbG9ja011dGF0aW9uRXZlbnQgfCBCbG9ja011dGF0aW9uRXZlbnRbXSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkoKSB8fCB0aGlzLmlzRGVzdHJveWVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShldmVudCkpIHtcclxuICAgICAgICAgICAgZXZlbnQgPSBbZXZlbnRdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVjYWxjdWxhdGVJbmRleGVzKHRoaXMuZWRpdG9yLmJsb2Nrcyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzQ2hhbmdpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VzUXVldWUudW5zaGlmdChldmVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnN0YXJ0Q2hhbmdlcyhldmVudCk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JFbXB0eS5lbWl0KHRoaXMuY2hlY2tJc0VtcHR5KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25BZGRlZENvbWJpbmVkQmxvY2soZGF0YTogQ3VpQ29tYmluZWRCbG9ja0FkZGluZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzU2tpcENvbWJpbmVkQmxvY2tPbkNoYW5nZS5wb3AoKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGJsb2Nrc1dpdGhvdXRJZCA9IGRhdGEuYmxvY2tzLm1hcCgoYmxvY2spID0+ICh7XHJcbiAgICAgICAgICAgIGJsb2NrOiB7IC4uLmJsb2NrLCBpZDogdW5kZWZpbmVkIH0sXHJcbiAgICAgICAgICAgIGlkOiBibG9jay5pZCFcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkZWRCbG9ja3MucHVzaCguLi5ibG9ja3NXaXRob3V0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25VcGRhdGVkQ29tYmluZWRCbG9jayh1cGRhdGVkQmxvY2tzOiBDdWlCbG9ja1tdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF1cGRhdGVkQmxvY2tzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZWRCbG9ja3MucHVzaCguLi51cGRhdGVkQmxvY2tzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uUmVtb3ZlZENvbWJpbmVkQmxvY2soYmxvY2tJZHM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFibG9ja0lkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yZW1vdmVkQmxvY2tzSWRzLnB1c2goLi4uYmxvY2tJZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdEVkaXRvckVmZmVjdCgpOiB2b2lkIHtcclxuICAgICAgICBlZmZlY3QoXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvckFwaUlkKCkgfHwgdGhpcy5jb25maWcoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdEVkaXRvckNoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRFZGl0b3JDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMualRleHRTZXJ2aWNlLmFkZE9wdGlvbnModGhpcy5jb25maWcoKT8ucmVxdWVzdE9wdGlvbnMpO1xyXG5cclxuICAgICAgICB0aGlzLmVkaXRvciA9IHRoaXMuaW5pdEVkaXRvcih0aGlzLmVkaXRvcklkKTtcclxuICAgICAgICB0aGlzLmVkaXRvci5pc1JlYWR5LnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmVkaXRvckVsZW1lbnQgPSB0aGlzLmVkaXRvclJlZigpLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmluaXRFZGl0b3JFdmVudHModGhpcy5lZGl0b3JFbGVtZW50KTtcclxuICAgICAgICAgICAgdGhpcy5pbml0U2Nyb2xsT2JzZXJ2ZXIoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFBvb2xpbmcodGhpcy5yZXF1ZXN0U2l6ZSgpKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRMaXN0ZW5lcnNPbkN1c3RvbUJsb2NrQ2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdEVkaXRvcihpZDogc3RyaW5nKTogRWRpdG9ySlMge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZGVzdHJveUVkaXRvcigpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gbmV3IEVkaXRvckpTKHtcclxuICAgICAgICAgICAgLi4uZ2V0RWRpdG9yQ29uZmlnKGlkLCBjb25maWcpLFxyXG4gICAgICAgICAgICBvbkNoYW5nZTogdGhpcy5vbkVkaXRvckNoYW5nZS5iaW5kKHRoaXMpXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvcjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRTY3JvbGxPYnNlcnZlcigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5jb25maWcoKT8uZWxlbWVudCA/PyB0aGlzLmVkaXRvckVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsT2JzZXJ2ZXIgPSBmcm9tRXZlbnQoZWxlbWVudCwgJ3Njcm9sbCcpO1xyXG5cclxuICAgICAgICB0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbiA9IHNjcm9sbE9ic2VydmVyXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveSksXHJcbiAgICAgICAgICAgICAgICB0aHJvdHRsZVRpbWUodGhpcy5TQ1JPTExfVEhST1RUTEVfVElNRSwgdW5kZWZpbmVkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVhZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB0cmFpbGluZzogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5vblNjcm9sbEV2ZW50KGVsZW1lbnQpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRFZGl0b3JFdmVudHMoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCByZWFkT25seSA9IHRoaXMuaXNSZWFkb25seSgpO1xyXG5cclxuICAgICAgICBpZiAocmVhZE9ubHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0RWRpdG9yRXZlbnRzKGVsZW1lbnQsIHRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGFydFBvb2xpbmcoc2l6ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMuY29uZmlnKCk/LmVsZW1lbnQgPz8gdGhpcy5lZGl0b3JFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IHdpdGhvdXRQcmVsb2FkID0gdGhpcy5jb25maWcoKT8ud2l0aG91dFByZWxvYWQ7XHJcblxyXG4gICAgICAgIHRoaXMucG9vbGluZ1N1YnNjcmlwdGlvbiA9IHRpbWVyKDAsIHRoaXMuUE9PTElOR19ERUxBWSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBjb25jYXRNYXAoKCkgPT4gdGhpcy5nZXRCbG9ja3ModGhpcy5wYWdlLCBzaXplKS5waXBlKGRlbGF5KHRoaXMuUE9PTElOR19ERUxBWSkpKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnBhZ2UrKyksXHJcbiAgICAgICAgICAgICAgICB0YWtlV2hpbGUoXHJcbiAgICAgICAgICAgICAgICAgICAgKGJsb2NrcykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIXdpdGhvdXRQcmVsb2FkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbEVsZW1lbnQuc2Nyb2xsSGVpZ2h0IDw9IHNjcm9sbEVsZW1lbnQuY2xpZW50SGVpZ2h0ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrcy5sZW5ndGggPj0gc2l6ZVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXJ0QmxvY2soKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGVzdHJveUVkaXRvcigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xyXG4gICAgICAgIHRoaXMucmVzZXREYXRhKCk7XHJcbiAgICAgICAgLy8gVE9ETzog0LIg0YDQsNC90LTQvtC8INC60LXQudGB0LDRhSDQv9Cw0LTQsNC10YIg0L7RiNC40LHQutCwINC10YHQu9C4INGD0LHRgNCw0YLRjCDQv9GA0L7QstC10YDQutGDINC90LAg0LLRi9C30L7QsiBkZXN0cm95XHJcbiAgICAgICAgdGhpcy5lZGl0b3I/LmRlc3Ryb3k/LigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0TGlzdGVuZXJzT25DdXN0b21CbG9ja0NoYW5nZXMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNldExpc3RlbmVyc09uQ3VzdG9tQmxvY2tDaGFuZ2VzKHRoaXMuZWRpdG9yLCB7XHJcbiAgICAgICAgICAgIHJlbW92ZWRDYWxsYmFjazogdGhpcy5vblJlbW92ZWRDb21iaW5lZEJsb2NrLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHVwZGF0ZWRDYWxsYmFjazogdGhpcy5vblVwZGF0ZWRDb21iaW5lZEJsb2NrLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGFkZGVkQ2FsbGJhY2s6IHRoaXMub25BZGRlZENvbWJpbmVkQmxvY2suYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgc3RhcnRDaGFuZ2VzKGV2ZW50OiBCbG9ja011dGF0aW9uRXZlbnRbXSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzU2tpcCB8fCB0aGlzLmlzQ2hhbmdpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1NraXAgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNDaGFuZ2luZyA9IHRydWU7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvck91dHB1dCA9IGF3YWl0IHRoaXMuZWRpdG9yLnNhdmUoKTtcclxuICAgICAgICAgICAgY29uc3QgZXZlbnRzID0gZXZlbnQuZmlsdGVyKChkYXRhKSA9PiBkYXRhLmRldGFpbC50YXJnZXQubmFtZSAhPT0gQ09NQklORURfVEVYVF9CTE9DS19OQU1FKTtcclxuICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gdGhpcy5lZGl0b3JTZXJ2aWNlLnNvcnRFdmVudHNCeVR5cGVzKGV2ZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgYWRkQmxvY2tzJCwgYWRkZWRCbG9ja3MgfSA9IHRoaXMuY29sbGVjdEFkZGVkQmxvY2tzUmVxdWVzdChibG9ja3MsIGVkaXRvck91dHB1dCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFkZGVkQmxvY2tzID0gW107XHJcblxyXG4gICAgICAgICAgICBhZGRCbG9ja3MkXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICB0YXAoKGJsb2NrSWRzKSA9PiB0aGlzLnNldEJsb2NrSWRzVG9NYXAoYmxvY2tJZHMsIGFkZGVkQmxvY2tzKSksXHJcbiAgICAgICAgICAgICAgICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuY29sbGVjdFVwZGF0ZWRCbG9ja3NSZXF1ZXN0KGJsb2NrcywgZWRpdG9yT3V0cHV0KSksXHJcbiAgICAgICAgICAgICAgICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuY29sbGVjdFJlbW92ZWRCbG9ja3NSZXF1ZXN0KGJsb2NrcykpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5zdGFydE5leHRDaGFuZ2UoKSxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4gdGhpcy5zdGFydE5leHRDaGFuZ2UoKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhcnROZXh0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNDaGFuZ2luZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICBjb25zdCBuZXh0RXZlbnRzID0gdGhpcy5jaGFuZ2VzUXVldWUucG9wKCk7XHJcblxyXG4gICAgICAgIGlmIChuZXh0RXZlbnRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDaGFuZ2VzKG5leHRFdmVudHMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbXB0eVF1ZXVlLm5leHQobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjb2xsZWN0QWRkZWRCbG9ja3NSZXF1ZXN0KGJsb2NrczogQ3VpRXZlbnRBY3Rpb25EYXRhLCBlZGl0b3JPdXRwdXQ6IE91dHB1dERhdGEpOiBDdWlCbG9ja3NSZXF1ZXN0RGF0YSB7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdEJsb2Nrc1dpdGhJbmRleCA9IGJsb2Nrc1tFdmVudEFjdGlvbnMuYWRkXS5tYXAoKGFkZGVkQmxvY2spID0+XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5nZXRGdWxsQmxvY2tEYXRhKGFkZGVkQmxvY2ssIGVkaXRvck91dHB1dClcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGNvbWJpbmVkQmxvY2tzV2l0aEluZGV4ID0gdGhpcy5hZGRlZEJsb2Nrcy5tYXAoKGJsb2NrKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVkaXRvckVsZW1lbnQucXVlcnlTZWxlY3RvcihgW2RhdGEtaWQ9XCIke2Jsb2NrLmlkfVwiXWApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IE51bWJlcihlbGVtZW50Py5kYXRhc2V0WydpbmRleCddKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmJsb2NrLCBpbmRleCB9O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBhZGRlZEJsb2NrcyA9IFsuLi5kZWZhdWx0QmxvY2tzV2l0aEluZGV4LCAuLi5jb21iaW5lZEJsb2Nrc1dpdGhJbmRleF0uc29ydChcclxuICAgICAgICAgICAgKGZpcnN0LCBzZWNvbmQpID0+IGZpcnN0LmluZGV4IC0gc2Vjb25kLmluZGV4XHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhZGRCbG9ja3MkID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmNvbGxlY3RBZGRlZEJsb2Nrc1JlcXVlc3QodGhpcy5lZGl0b3JBcGlJZCgpLCBhZGRlZEJsb2Nrcyk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGFkZGVkQmxvY2tzLFxyXG4gICAgICAgICAgICBhZGRCbG9ja3MkXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbGxlY3RVcGRhdGVkQmxvY2tzUmVxdWVzdChibG9ja3M6IEN1aUV2ZW50QWN0aW9uRGF0YSwgZWRpdG9yT3V0cHV0OiBPdXRwdXREYXRhKTogT2JzZXJ2YWJsZTxDdWlCbG9ja1tdPiB7XHJcbiAgICAgICAgYmxvY2tzW0V2ZW50QWN0aW9ucy51cGRhdGVdLmZvckVhY2goKHVwZGF0ZUJsb2NrKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgaWQsIGJsb2NrIH0gPSB0aGlzLmVkaXRvclNlcnZpY2UuZ2V0RnVsbEJsb2NrRGF0YSh1cGRhdGVCbG9jaywgZWRpdG9yT3V0cHV0KTtcclxuICAgICAgICAgICAgYmxvY2suaWQgPSBpZDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZEJsb2Nrcy5wdXNoKGJsb2NrKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgdXBkYXRlQmxvY2tzJCA9IHRoaXMuZWRpdG9yU2VydmljZS5jb2xsZWN0VXBkYXRlZEJsb2Nrc1JlcXVlc3QodGhpcy51cGRhdGVkQmxvY2tzLCB0aGlzLmJsb2NrSWRzTWFwKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVkQmxvY2tzID0gW107XHJcblxyXG4gICAgICAgIHJldHVybiB1cGRhdGVCbG9ja3MkO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY29sbGVjdFJlbW92ZWRCbG9ja3NSZXF1ZXN0KGJsb2NrczogQ3VpRXZlbnRBY3Rpb25EYXRhKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgYmxvY2tzW0V2ZW50QWN0aW9ucy5yZW1vdmVdLmZvckVhY2goKGJsb2NrKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlkID0gYmxvY2suZGV0YWlsLnRhcmdldC5pZDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlZEJsb2Nrc0lkcy5wdXNoKGlkKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVtb3ZlQmxvY2tzJCA9IHRoaXMuZWRpdG9yU2VydmljZS5jb2xsZWN0UmVtb3ZlZEJsb2Nrc1JlcXVlc3QoXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yQXBpSWQoKSxcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVkQmxvY2tzSWRzLFxyXG4gICAgICAgICAgICB0aGlzLmJsb2NrSWRzTWFwXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJlbW92ZWRCbG9ja3NJZHMgPSBbXTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlbW92ZUJsb2NrcyQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRCbG9ja3MocGFnZSA9IDAsIHNpemUgPSA0MCk6IE9ic2VydmFibGU8Q3VpQmxvY2tbXT4ge1xyXG4gICAgICAgIGxldCBjb21iaW5lZEJsb2NrOiBDdWlOdWxsYWJsZTxDdWlCbG9jaz47XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmpUZXh0U2VydmljZS5nZXRCbG9ja3ModGhpcy5lZGl0b3JBcGlJZCgpLCBwYWdlLCBzaXplKS5waXBlKFxyXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95KSxcclxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbWJpbmVkQmxvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tYmluZWRCbG9jayA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmVjYWxjdWxhdGVJbmRleGVzKHRoaXMuZWRpdG9yLmJsb2Nrcyk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBtYXAoKGJsb2NrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYmxvY2sudHlwZSA9PT0gQ09NQklORURfVEVYVF9CTE9DS19QQVJUKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tEYXRhID0gYmxvY2suZGF0YSBhcyB7IHBhcmVudElkOiBzdHJpbmcgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbWJpbmVkQmxvY2sgJiYgYmxvY2tEYXRhLnBhcmVudElkISAhPT0gY29tYmluZWRCbG9jaz8uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRDb21iaW5lZEJsb2NrKGNvbWJpbmVkQmxvY2spO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lZEJsb2NrID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkQmxvY2sgPSB0aGlzLnNldENvbWJpbmVkQmxvY2soYmxvY2spO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbWJpbmVkQmxvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jayk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tYmluZWRCbG9jayA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRCbG9jayhibG9jayk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0b0FycmF5KClcclxuICAgICAgICApIGFzIHVua25vd24gYXMgT2JzZXJ2YWJsZTxDdWlCbG9ja1tdPjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZEJsb2NrKGJsb2NrOiBDdWlCbG9jayk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0eXBlb2YgYmxvY2sudHlwZSAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5ibG9ja0lkc01hcC5zZXQoYmxvY2suaWQhLCBibG9jay5pZCEpO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0KGJsb2NrKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jazogQ3VpQmxvY2spOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzU2tpcENvbWJpbmVkQmxvY2tPbkNoYW5nZS5wdXNoKHRydWUpO1xyXG4gICAgICAgIGNvbnN0IGJsb2NrID0gdGhpcy5lZGl0b3IuYmxvY2tzLmdldEJ5SWQoY29tYmluZWRCbG9jay5pZCB8fCAnJyk7XHJcblxyXG4gICAgICAgIGlmIChibG9jaykge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRvci5ibG9ja3MudXBkYXRlKGJsb2NrLmlkLCBjb21iaW5lZEJsb2NrLmRhdGEgYXMgQ3VpQ29tYmluZWRQYXJ0QmxvY2spO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pbnNlcnQoY29tYmluZWRCbG9jayk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbnNlcnQoYmxvY2s6IEN1aUJsb2NrKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jaGVja0ZpcnN0KGJsb2NrKTtcclxuICAgICAgICB0aGlzLmluZGV4Kys7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0ZpcnN0KGJsb2NrOiBDdWlCbG9jayk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0ZpcnN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTa2lwID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5lZGl0b3IuYmxvY2tzLmluc2VydChibG9jay50eXBlLCBibG9jay5kYXRhLCB7fSwgdGhpcy5pbmRleCwgZmFsc2UsIGZhbHNlLCBibG9jay5pZCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUT0RPOiDQtdGB0YLRjCDQstCw0YDQuNC6INGH0YLQviDRh9GC0L4g0YLQviDQv9C+0LnQtNC10YIg0L3QtSDRgtCw0LpcclxuICAgICAgICB0aGlzLmVkaXRvci5ibG9ja3MucmVuZGVyKHsgYmxvY2tzOiBbYmxvY2tdIH0pLnRoZW4oKCkgPT4gKHRoaXMuaXNTa2lwID0gZmFsc2UpKTtcclxuICAgICAgICB0aGlzLmlzRmlyc3QgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldENvbWJpbmVkQmxvY2soYmxvY2s6IEN1aUJsb2NrKTogQ3VpQmxvY2sge1xyXG4gICAgICAgIGNvbnN0IGNvbWJpbmVkQmxvY2tEYXRhID0gYmxvY2suZGF0YSBhcyB7IHBhcmVudElkOiBzdHJpbmcgfTtcclxuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmNvbWJpbmVkQmxvY2tzLmdldChjb21iaW5lZEJsb2NrRGF0YS5wYXJlbnRJZCk7XHJcblxyXG4gICAgICAgIHRoaXMuYmxvY2tJZHNNYXAuc2V0KGJsb2NrLmlkISwgYmxvY2suaWQhKTtcclxuXHJcbiAgICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnREYXRhID0gcGFyZW50LmRhdGEgYXMgeyB0ZXh0QmxvY2tzOiBDdWlCbG9ja1tdIH07XHJcbiAgICAgICAgICAgIHBhcmVudERhdGEudGV4dEJsb2Nrcy5wdXNoKGJsb2NrKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwYXJlbnRPYmplY3Q6IEN1aUJsb2NrID0ge1xyXG4gICAgICAgICAgICBpZDogY29tYmluZWRCbG9ja0RhdGEucGFyZW50SWQsXHJcbiAgICAgICAgICAgIHR5cGU6IENPTUJJTkVEX1RFWFRfQkxPQ0tfTkFNRSxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgaWQ6IGNvbWJpbmVkQmxvY2tEYXRhLnBhcmVudElkLFxyXG4gICAgICAgICAgICAgICAgdGV4dEJsb2NrczogW2Jsb2NrXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jb21iaW5lZEJsb2Nrcy5zZXQoY29tYmluZWRCbG9ja0RhdGEucGFyZW50SWQsIHBhcmVudE9iamVjdCk7XHJcblxyXG4gICAgICAgIHJldHVybiBwYXJlbnRPYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRCbG9ja0lkc1RvTWFwKGJsb2NrSWRzOiBzdHJpbmdbXSwgYWRkZWRCbG9ja3M6IEN1aUZ1bGxCbG9ja0RhdGFbXSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghYmxvY2tJZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFkZGVkQmxvY2tzLmZvckVhY2goKGJsb2NrRGF0YSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja0lkc01hcC5zZXQoYmxvY2tEYXRhLmlkLCBibG9ja0lkc1tpbmRleF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0U3RhcnRCbG9jaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5ibG9ja0lkc01hcC5zaXplKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXMoKTtcclxuICAgICAgICAgICAgdGhpcy5lZGl0b3JFbXB0eS5lbWl0KHRoaXMuY2hlY2tJc0VtcHR5KCkpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNSZWFkb25seSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLnJlbmRlcih7IGJsb2NrczogW10gfSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2V0U3RhcnRCbG9jayhcclxuICAgICAgICAgICAgdGhpcy5lZGl0b3JBcGlJZCgpLFxyXG4gICAgICAgICAgICBhc3luYyAoYmxvY2s6IEN1aUJsb2NrPEN1aUNvbWJpbmVkQmxvY2tUb29sRGF0YT4sIGlkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tJZHNNYXAuc2V0KGlkLCBpZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzU2tpcENvbWJpbmVkQmxvY2tPbkNoYW5nZS5wdXNoKHRydWUpO1xyXG5cclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZWRpdG9yLnJlbmRlcih7IGJsb2NrczogW2Jsb2NrXSB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICByZWNhbGN1bGF0ZUluZGV4ZXModGhpcy5lZGl0b3IuYmxvY2tzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRGb2N1cygpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29uZmlnKCk/LmF1dG9mb2N1cykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVkaXRvci5jYXJldC5mb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tJc0VtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IE1JTl9CTE9DS1NfQ09VTlQgPSAxO1xyXG4gICAgICAgIGNvbnN0IFJFREFDVE9SX1NFTEVDVE9SID0gJy5jb2RleC1lZGl0b3JfX3JlZGFjdG9yJztcclxuICAgICAgICBjb25zdCByZWRhY3RvciA9IHRoaXMuZWRpdG9yRWxlbWVudC5xdWVyeVNlbGVjdG9yKFJFREFDVE9SX1NFTEVDVE9SKTtcclxuICAgICAgICBjb25zdCBibG9ja3NDb3VudCA9IHJlZGFjdG9yPy5jaGlsZEVsZW1lbnRDb3VudCA/PyAwO1xyXG5cclxuICAgICAgICByZXR1cm4gYmxvY2tzQ291bnQgPD0gTUlOX0JMT0NLU19DT1VOVCAmJiAhcmVkYWN0b3I/LnRleHRDb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVzZXREYXRhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMucG9vbGluZ1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmlzU2tpcENvbWJpbmVkQmxvY2tPbkNoYW5nZSA9IFtdO1xyXG4gICAgICAgIHRoaXMuaXNGaXJzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0NoYW5naW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NraXAgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzUmVxdWVzdGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ibG9ja0lkc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgICAgICAgdGhpcy5jb21iaW5lZEJsb2NrcyA9IG5ldyBNYXAoKTtcclxuICAgICAgICB0aGlzLmluZGV4ID0gMDtcclxuICAgICAgICB0aGlzLnBhZ2UgPSAwO1xyXG4gICAgICAgIHRoaXMuYWRkZWRCbG9ja3MgPSBbXTtcclxuICAgICAgICB0aGlzLnVwZGF0ZWRCbG9ja3MgPSBbXTtcclxuICAgICAgICB0aGlzLnJlbW92ZWRCbG9ja3NJZHMgPSBbXTtcclxuICAgICAgICB0aGlzLmNoYW5nZXNRdWV1ZSA9IFtdO1xyXG4gICAgICAgIHRoaXMuYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAgICNlZGl0b3JcclxuICAgIFtpZF09XCJlZGl0b3JJZFwiXHJcbiAgICBkYXRhLWVkaXRvclxyXG4gICAgW2NsYXNzLl9yZWFkb25seV09XCJjb25maWcoKS5yZWFkT25seVwiXHJcbj48L2Rpdj5cclxuIl19
385
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUMsT0FBTyxRQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFFMUMsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxHQUFHLEVBQ0gsT0FBTyxFQUNQLFNBQVMsRUFDVCxHQUFHLEVBQ0gsWUFBWSxFQUNaLEtBQUssRUFDTCxPQUFPLEVBQ1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQVksa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBVzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBVWpFLE1BQU0sT0FBTyxrQkFBa0I7SUE2QzNC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QztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUNqRCxDQUFDOytHQXRnQlEsa0JBQWtCO21HQUFsQixrQkFBa0IsNGZBRmhCLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsK0lDdkRyRCxtSEFNQTs7NEZEbURhLGtCQUFrQjtrQkFSOUIsU0FBUzsrQkFDSSxZQUFZLGNBQ1YsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRGVzdHJveVJlZixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICB2aWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgdHlwZSB7IEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB7IEN1aUlkU2VydmljZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQgdHlwZSB7IEFQSSwgQmxvY2tNdXRhdGlvbkV2ZW50LCBPdXRwdXREYXRhIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcbmltcG9ydCBFZGl0b3JKUyBmcm9tICdAZWRpdG9yanMvZWRpdG9yanMnO1xuaW1wb3J0IHR5cGUgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgY29uY2F0TWFwLFxuICAgIGRlbGF5LFxuICAgIGZpbmFsaXplLFxuICAgIGZyb21FdmVudCxcbiAgICBtYXAsXG4gICAgU3ViamVjdCxcbiAgICB0YWtlV2hpbGUsXG4gICAgdGFwLFxuICAgIHRocm90dGxlVGltZSxcbiAgICB0aW1lcixcbiAgICB0b0FycmF5XG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ3VpQmxvY2ssIEN1aUpUZXh0QXBpU2VydmljZSB9IGZyb20gJ0BjdWJ5LXVpL2FwaSc7XG5cbmltcG9ydCB7IGdldEVkaXRvckNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IENPTUJJTkVEX1RFWFRfQkxPQ0tfTkFNRSwgQ09NQklORURfVEVYVF9CTE9DS19QQVJULCBERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4vY29uc3RhbnRzL2VkaXRvci5jb25zdGFudHMnO1xuaW1wb3J0IHsgc2V0RWRpdG9yRXZlbnRzIH0gZnJvbSAnLi9ldmVudHMvc2V0LWVkaXRvci1ldmVudHMnO1xuaW1wb3J0IHR5cGUge1xuICAgIEN1aUJsb2NrRGF0YSxcbiAgICBDdWlCbG9ja3NSZXF1ZXN0RGF0YSxcbiAgICBDdWlDb21iaW5lZEJsb2NrQWRkaW5nRXZlbnQsXG4gICAgQ3VpQ29tYmluZWRCbG9ja1Rvb2xEYXRhLFxuICAgIEN1aUNvbWJpbmVkUGFydEJsb2NrLFxuICAgIEN1aUVkaXRvckNvbmZpZyxcbiAgICBDdWlFdmVudEFjdGlvbkRhdGEsXG4gICAgQ3VpRnVsbEJsb2NrRGF0YVxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ3VpRWRpdG9yU2VydmljZSwgRXZlbnRBY3Rpb25zIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyByZWNhbGN1bGF0ZUluZGV4ZXMgfSBmcm9tICcuL3V0aWxzL3JlY2FsY3VsYXRlLWluZGV4ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1lZGl0b3InLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbQ3VpRWRpdG9yU2VydmljZSwgQ3VpSlRleHRBcGlTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBDdWlFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aUlkU2VydmljZSA9IGluamVjdChDdWlJZFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWRpdG9yU2VydmljZSA9IGluamVjdChDdWlFZGl0b3JTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGpUZXh0U2VydmljZSA9IGluamVjdChDdWlKVGV4dEFwaVNlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBQT09MSU5HX0RFTEFZID0gMTAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgRUxFTUVOVF9TUEFDRV9UT19CT1RUT00gPSAxNTA7XG4gICAgcHJpdmF0ZSByZWFkb25seSBTQ1JPTExfVEhST1RUTEVfVElNRSA9IDIwMDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZW1wdHlRdWV1ZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcml2YXRlIHBvb2xpbmdTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBzY3JvbGxTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBpc1NraXBDb21iaW5lZEJsb2NrT25DaGFuZ2U6IGJvb2xlYW5bXSA9IFtdO1xuICAgIHByaXZhdGUgaXNGaXJzdCA9IHRydWU7XG4gICAgcHJpdmF0ZSBpc0NoYW5naW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc1NraXAgPSBmYWxzZTtcbiAgICBwcml2YXRlIGlzUmVxdWVzdGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgYmxvY2tJZHNNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIHByaXZhdGUgY29tYmluZWRCbG9ja3MgPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBpbmRleCA9IDA7XG4gICAgcHJpdmF0ZSBwYWdlID0gMDtcbiAgICBwcml2YXRlIGFkZGVkQmxvY2tzOiBDdWlCbG9ja0RhdGFbXSA9IFtdO1xuICAgIHByaXZhdGUgdXBkYXRlZEJsb2NrczogQ3VpQmxvY2tbXSA9IFtdO1xuICAgIHByaXZhdGUgcmVtb3ZlZEJsb2Nrc0lkczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIGNoYW5nZXNRdWV1ZTogQmxvY2tNdXRhdGlvbkV2ZW50W11bXSA9IFtdO1xuICAgIHByaXZhdGUgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVkaXRvcklkID0gdGhpcy5jdWlJZFNlcnZpY2UuZ2VuZXJhdGUoKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNSZWFkb25seSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCk/LnJlYWRPbmx5KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBlZGl0b3JSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdlZGl0b3InKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBlZGl0b3JBcGlJZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQ8Q3VpRWRpdG9yQ29uZmlnPihERUZBVUxUX0NPTkZJRyk7XG4gICAgcHVibGljIHJlYWRvbmx5IHJlcXVlc3RTaXplID0gaW5wdXQ8bnVtYmVyPig0MCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZWRpdG9yRW1wdHkgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcblxuICAgIHB1YmxpYyBlZGl0b3IhOiBFZGl0b3JKUztcbiAgICBwdWJsaWMgZWRpdG9yRWxlbWVudCE6IEhUTUxFbGVtZW50O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaW5pdEVkaXRvckVmZmVjdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5kZXN0cm95RWRpdG9yKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNjcm9sbEV2ZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG92ZXJhbGxIZWlnaHQgPSBlbGVtZW50LnNjcm9sbEhlaWdodCAtIHRoaXMuRUxFTUVOVF9TUEFDRV9UT19CT1RUT007XG4gICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSBlbGVtZW50LnNjcm9sbFRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgIGlmIChjdXJyZW50SGVpZ2h0IDwgb3ZlcmFsbEhlaWdodCB8fCB0aGlzLmlzUmVxdWVzdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzUmVxdWVzdGVkID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5yZXF1ZXN0U2l6ZSgpO1xuICAgICAgICBsZXQgYmxvY2tzQ291bnQgPSAwO1xuXG4gICAgICAgIHRoaXMuZ2V0QmxvY2tzKHRoaXMucGFnZSwgc2l6ZSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoYmxvY2tzKSA9PiAoYmxvY2tzQ291bnQgPSBibG9ja3MubGVuZ3RoKSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVxdWVzdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2Nrc0NvdW50ID49IHNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLnBhZ2UrKztcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRWRpdG9yQ2hhbmdlKF86IEFQSSwgZXZlbnQ6IEJsb2NrTXV0YXRpb25FdmVudCB8IEJsb2NrTXV0YXRpb25FdmVudFtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkoKSB8fCB0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICAgICAgICBldmVudCA9IFtldmVudF07XG4gICAgICAgIH1cblxuICAgICAgICByZWNhbGN1bGF0ZUluZGV4ZXModGhpcy5lZGl0b3IuYmxvY2tzKTtcblxuICAgICAgICBpZiAodGhpcy5pc0NoYW5naW5nKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZXNRdWV1ZS51bnNoaWZ0KGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhcnRDaGFuZ2VzKGV2ZW50KTtcbiAgICAgICAgdGhpcy5lZGl0b3JFbXB0eS5lbWl0KHRoaXMuY2hlY2tJc0VtcHR5KCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25BZGRlZENvbWJpbmVkQmxvY2soZGF0YTogQ3VpQ29tYmluZWRCbG9ja0FkZGluZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzU2tpcENvbWJpbmVkQmxvY2tPbkNoYW5nZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlLnBvcCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBibG9ja3NXaXRob3V0SWQgPSBkYXRhLmJsb2Nrcy5tYXAoKGJsb2NrKSA9PiAoe1xuICAgICAgICAgICAgYmxvY2s6IHsgLi4uYmxvY2ssIGlkOiB1bmRlZmluZWQgfSxcbiAgICAgICAgICAgIGlkOiBibG9jay5pZCFcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHRoaXMuYWRkZWRCbG9ja3MucHVzaCguLi5ibG9ja3NXaXRob3V0SWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25VcGRhdGVkQ29tYmluZWRCbG9jayh1cGRhdGVkQmxvY2tzOiBDdWlCbG9ja1tdKTogdm9pZCB7XG4gICAgICAgIGlmICghdXBkYXRlZEJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlZEJsb2Nrcy5wdXNoKC4uLnVwZGF0ZWRCbG9ja3MpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25SZW1vdmVkQ29tYmluZWRCbG9jayhibG9ja0lkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFibG9ja0lkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVtb3ZlZEJsb2Nrc0lkcy5wdXNoKC4uLmJsb2NrSWRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRFZGl0b3JFZmZlY3QoKTogdm9pZCB7XG4gICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lZGl0b3JBcGlJZCgpIHx8IHRoaXMuY29uZmlnKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0RWRpdG9yQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRFZGl0b3JDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmpUZXh0U2VydmljZS5hZGRPcHRpb25zKHRoaXMuY29uZmlnKCk/LnJlcXVlc3RPcHRpb25zKTtcblxuICAgICAgICB0aGlzLmVkaXRvciA9IHRoaXMuaW5pdEVkaXRvcih0aGlzLmVkaXRvcklkKTtcbiAgICAgICAgdGhpcy5lZGl0b3IuaXNSZWFkeS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmVkaXRvckVsZW1lbnQgPSB0aGlzLmVkaXRvclJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdEVkaXRvckV2ZW50cyh0aGlzLmVkaXRvckVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5pbml0U2Nyb2xsT2JzZXJ2ZXIoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRQb29saW5nKHRoaXMucmVxdWVzdFNpemUoKSk7XG4gICAgICAgICAgICB0aGlzLnNldExpc3RlbmVyc09uQ3VzdG9tQmxvY2tDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEVkaXRvcihpZDogc3RyaW5nKTogRWRpdG9ySlMge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuXG4gICAgICAgIHRoaXMuZGVzdHJveUVkaXRvcigpO1xuICAgICAgICB0aGlzLmVkaXRvciA9IG5ldyBFZGl0b3JKUyh7XG4gICAgICAgICAgICAuLi5nZXRFZGl0b3JDb25maWcoaWQsIGNvbmZpZyksXG4gICAgICAgICAgICBvbkNoYW5nZTogdGhpcy5vbkVkaXRvckNoYW5nZS5iaW5kKHRoaXMpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTY3JvbGxPYnNlcnZlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuY29uZmlnKCk/LmVsZW1lbnQgPz8gdGhpcy5lZGl0b3JFbGVtZW50O1xuICAgICAgICBjb25zdCBzY3JvbGxPYnNlcnZlciA9IGZyb21FdmVudChlbGVtZW50LCAnc2Nyb2xsJyk7XG5cbiAgICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24gPSBzY3JvbGxPYnNlcnZlclxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveSksXG4gICAgICAgICAgICAgICAgdGhyb3R0bGVUaW1lKHRoaXMuU0NST0xMX1RIUk9UVExFX1RJTUUsIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgICAgICBsZWFkaW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB0cmFpbGluZzogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLm9uU2Nyb2xsRXZlbnQoZWxlbWVudCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RWRpdG9yRXZlbnRzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlYWRPbmx5ID0gdGhpcy5pc1JlYWRvbmx5KCk7XG5cbiAgICAgICAgaWYgKHJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRFZGl0b3JFdmVudHMoZWxlbWVudCwgdGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0UG9vbGluZyhzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMuY29uZmlnKCk/LmVsZW1lbnQgPz8gdGhpcy5lZGl0b3JFbGVtZW50O1xuICAgICAgICBjb25zdCB3aXRob3V0UHJlbG9hZCA9IHRoaXMuY29uZmlnKCk/LndpdGhvdXRQcmVsb2FkO1xuXG4gICAgICAgIHRoaXMucG9vbGluZ1N1YnNjcmlwdGlvbiA9IHRpbWVyKDAsIHRoaXMuUE9PTElOR19ERUxBWSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGNvbmNhdE1hcCgoKSA9PiB0aGlzLmdldEJsb2Nrcyh0aGlzLnBhZ2UsIHNpemUpLnBpcGUoZGVsYXkodGhpcy5QT09MSU5HX0RFTEFZKSkpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnBhZ2UrKyksXG4gICAgICAgICAgICAgICAgdGFrZVdoaWxlKFxuICAgICAgICAgICAgICAgICAgICAoYmxvY2tzKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgIXdpdGhvdXRQcmVsb2FkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxFbGVtZW50LnNjcm9sbEhlaWdodCA8PSBzY3JvbGxFbGVtZW50LmNsaWVudEhlaWdodCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tzLmxlbmd0aCA+PSBzaXplXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXJ0QmxvY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveUVkaXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgICAgdGhpcy5yZXNldERhdGEoKTtcbiAgICAgICAgLy8gVE9ETzog0LIg0YDQsNC90LTQvtC8INC60LXQudGB0LDRhSDQv9Cw0LTQsNC10YIg0L7RiNC40LHQutCwINC10YHQu9C4INGD0LHRgNCw0YLRjCDQv9GA0L7QstC10YDQutGDINC90LAg0LLRi9C30L7QsiBkZXN0cm95XG4gICAgICAgIHRoaXMuZWRpdG9yPy5kZXN0cm95Py4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExpc3RlbmVyc09uQ3VzdG9tQmxvY2tDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2V0TGlzdGVuZXJzT25DdXN0b21CbG9ja0NoYW5nZXModGhpcy5lZGl0b3IsIHtcbiAgICAgICAgICAgIHJlbW92ZWRDYWxsYmFjazogdGhpcy5vblJlbW92ZWRDb21iaW5lZEJsb2NrLmJpbmQodGhpcyksXG4gICAgICAgICAgICB1cGRhdGVkQ2FsbGJhY2s6IHRoaXMub25VcGRhdGVkQ29tYmluZWRCbG9jay5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgYWRkZWRDYWxsYmFjazogdGhpcy5vbkFkZGVkQ29tYmluZWRCbG9jay5iaW5kKHRoaXMpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc3RhcnRDaGFuZ2VzKGV2ZW50OiBCbG9ja011dGF0aW9uRXZlbnRbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc1NraXAgfHwgdGhpcy5pc0NoYW5naW5nKSB7XG4gICAgICAgICAgICB0aGlzLmlzU2tpcCA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzQ2hhbmdpbmcgPSB0cnVlO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBlZGl0b3JPdXRwdXQgPSBhd2FpdCB0aGlzLmVkaXRvci5zYXZlKCk7XG4gICAgICAgICAgICBjb25zdCBldmVudHMgPSBldmVudC5maWx0ZXIoKGRhdGEpID0+IGRhdGEuZGV0YWlsLnRhcmdldC5uYW1lICE9PSBDT01CSU5FRF9URVhUX0JMT0NLX05BTUUpO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gdGhpcy5lZGl0b3JTZXJ2aWNlLnNvcnRFdmVudHNCeVR5cGVzKGV2ZW50cyk7XG4gICAgICAgICAgICBjb25zdCB7IGFkZEJsb2NrcyQsIGFkZGVkQmxvY2tzIH0gPSB0aGlzLmNvbGxlY3RBZGRlZEJsb2Nrc1JlcXVlc3QoYmxvY2tzLCBlZGl0b3JPdXRwdXQpO1xuXG4gICAgICAgICAgICB0aGlzLmFkZGVkQmxvY2tzID0gW107XG5cbiAgICAgICAgICAgIGFkZEJsb2NrcyRcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFwKChibG9ja0lkcykgPT4gdGhpcy5zZXRCbG9ja0lkc1RvTWFwKGJsb2NrSWRzLCBhZGRlZEJsb2NrcykpLFxuICAgICAgICAgICAgICAgICAgICBjb25jYXRNYXAoKCkgPT4gdGhpcy5jb2xsZWN0VXBkYXRlZEJsb2Nrc1JlcXVlc3QoYmxvY2tzLCBlZGl0b3JPdXRwdXQpKSxcbiAgICAgICAgICAgICAgICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuY29sbGVjdFJlbW92ZWRCbG9ja3NSZXF1ZXN0KGJsb2NrcykpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5zdGFydE5leHRDaGFuZ2UoKSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMuc3RhcnROZXh0Q2hhbmdlKClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydE5leHRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNDaGFuZ2luZyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5leHRFdmVudHMgPSB0aGlzLmNoYW5nZXNRdWV1ZS5wb3AoKTtcblxuICAgICAgICBpZiAobmV4dEV2ZW50cykge1xuICAgICAgICAgICAgdGhpcy5zdGFydENoYW5nZXMobmV4dEV2ZW50cyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVtcHR5UXVldWUubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbGxlY3RBZGRlZEJsb2Nrc1JlcXVlc3QoYmxvY2tzOiBDdWlFdmVudEFjdGlvbkRhdGEsIGVkaXRvck91dHB1dDogT3V0cHV0RGF0YSk6IEN1aUJsb2Nrc1JlcXVlc3REYXRhIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdEJsb2Nrc1dpdGhJbmRleCA9IGJsb2Nrc1tFdmVudEFjdGlvbnMuYWRkXS5tYXAoKGFkZGVkQmxvY2spID0+XG4gICAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZ2V0RnVsbEJsb2NrRGF0YShhZGRlZEJsb2NrLCBlZGl0b3JPdXRwdXQpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNvbWJpbmVkQmxvY2tzV2l0aEluZGV4ID0gdGhpcy5hZGRlZEJsb2Nrcy5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lZGl0b3JFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWlkPVwiJHtibG9jay5pZH1cIl1gKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gTnVtYmVyKGVsZW1lbnQ/LmRhdGFzZXRbJ2luZGV4J10pO1xuXG4gICAgICAgICAgICByZXR1cm4geyAuLi5ibG9jaywgaW5kZXggfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYWRkZWRCbG9ja3MgPSBbLi4uZGVmYXVsdEJsb2Nrc1dpdGhJbmRleCwgLi4uY29tYmluZWRCbG9ja3NXaXRoSW5kZXhdLnNvcnQoXG4gICAgICAgICAgICAoZmlyc3QsIHNlY29uZCkgPT4gZmlyc3QuaW5kZXggLSBzZWNvbmQuaW5kZXhcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWRkQmxvY2tzJCA9IHRoaXMuZWRpdG9yU2VydmljZS5jb2xsZWN0QWRkZWRCbG9ja3NSZXF1ZXN0KHRoaXMuZWRpdG9yQXBpSWQoKSwgYWRkZWRCbG9ja3MpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhZGRlZEJsb2NrcyxcbiAgICAgICAgICAgIGFkZEJsb2NrcyRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbGxlY3RVcGRhdGVkQmxvY2tzUmVxdWVzdChibG9ja3M6IEN1aUV2ZW50QWN0aW9uRGF0YSwgZWRpdG9yT3V0cHV0OiBPdXRwdXREYXRhKTogT2JzZXJ2YWJsZTxDdWlCbG9ja1tdPiB7XG4gICAgICAgIGJsb2Nrc1tFdmVudEFjdGlvbnMudXBkYXRlXS5mb3JFYWNoKCh1cGRhdGVCbG9jaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBpZCwgYmxvY2sgfSA9IHRoaXMuZWRpdG9yU2VydmljZS5nZXRGdWxsQmxvY2tEYXRhKHVwZGF0ZUJsb2NrLCBlZGl0b3JPdXRwdXQpO1xuICAgICAgICAgICAgYmxvY2suaWQgPSBpZDtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVkQmxvY2tzLnB1c2goYmxvY2spO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB1cGRhdGVCbG9ja3MkID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmNvbGxlY3RVcGRhdGVkQmxvY2tzUmVxdWVzdCh0aGlzLnVwZGF0ZWRCbG9ja3MsIHRoaXMuYmxvY2tJZHNNYXApO1xuXG4gICAgICAgIHRoaXMudXBkYXRlZEJsb2NrcyA9IFtdO1xuXG4gICAgICAgIHJldHVybiB1cGRhdGVCbG9ja3MkO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29sbGVjdFJlbW92ZWRCbG9ja3NSZXF1ZXN0KGJsb2NrczogQ3VpRXZlbnRBY3Rpb25EYXRhKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGJsb2Nrc1tFdmVudEFjdGlvbnMucmVtb3ZlXS5mb3JFYWNoKChibG9jaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBibG9jay5kZXRhaWwudGFyZ2V0LmlkO1xuXG4gICAgICAgICAgICB0aGlzLnJlbW92ZWRCbG9ja3NJZHMucHVzaChpZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlbW92ZUJsb2NrcyQgPSB0aGlzLmVkaXRvclNlcnZpY2UuY29sbGVjdFJlbW92ZWRCbG9ja3NSZXF1ZXN0KFxuICAgICAgICAgICAgdGhpcy5lZGl0b3JBcGlJZCgpLFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVkQmxvY2tzSWRzLFxuICAgICAgICAgICAgdGhpcy5ibG9ja0lkc01hcFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbW92ZWRCbG9ja3NJZHMgPSBbXTtcblxuICAgICAgICByZXR1cm4gcmVtb3ZlQmxvY2tzJDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJsb2NrcyhwYWdlID0gMCwgc2l6ZSA9IDQwKTogT2JzZXJ2YWJsZTxDdWlCbG9ja1tdPiB7XG4gICAgICAgIGxldCBjb21iaW5lZEJsb2NrOiBDdWlOdWxsYWJsZTxDdWlCbG9jaz47XG5cbiAgICAgICAgcmV0dXJuIHRoaXMualRleHRTZXJ2aWNlLmdldEJsb2Nrcyh0aGlzLmVkaXRvckFwaUlkKCksIHBhZ2UsIHNpemUpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95KSxcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29tYmluZWRCbG9jaykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkQmxvY2sgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlY2FsY3VsYXRlSW5kZXhlcyh0aGlzLmVkaXRvci5ibG9ja3MpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKGJsb2NrKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGJsb2NrLnR5cGUgPT09IENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja0RhdGEgPSBibG9jay5kYXRhIGFzIHsgcGFyZW50SWQ6IHN0cmluZyB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21iaW5lZEJsb2NrICYmIGJsb2NrRGF0YS5wYXJlbnRJZCEgIT09IGNvbWJpbmVkQmxvY2s/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jayk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lZEJsb2NrID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkQmxvY2sgPSB0aGlzLnNldENvbWJpbmVkQmxvY2soYmxvY2spO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tYmluZWRCbG9jaykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENvbWJpbmVkQmxvY2soY29tYmluZWRCbG9jayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkQmxvY2sgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQmxvY2soYmxvY2spO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0b0FycmF5KClcbiAgICAgICAgKSBhcyB1bmtub3duIGFzIE9ic2VydmFibGU8Q3VpQmxvY2tbXT47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRCbG9jayhibG9jazogQ3VpQmxvY2spOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBibG9jay50eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ibG9ja0lkc01hcC5zZXQoYmxvY2suaWQhLCBibG9jay5pZCEpO1xuICAgICAgICB0aGlzLmluc2VydChibG9jayk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRDb21iaW5lZEJsb2NrKGNvbWJpbmVkQmxvY2s6IEN1aUJsb2NrKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTa2lwQ29tYmluZWRCbG9ja09uQ2hhbmdlLnB1c2godHJ1ZSk7XG4gICAgICAgIGNvbnN0IGJsb2NrID0gdGhpcy5lZGl0b3IuYmxvY2tzLmdldEJ5SWQoY29tYmluZWRCbG9jay5pZCB8fCAnJyk7XG5cbiAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5ibG9ja3MudXBkYXRlKGJsb2NrLmlkLCBjb21iaW5lZEJsb2NrLmRhdGEgYXMgQ3VpQ29tYmluZWRQYXJ0QmxvY2spO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluc2VydChjb21iaW5lZEJsb2NrKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluc2VydChibG9jazogQ3VpQmxvY2spOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0ZpcnN0KGJsb2NrKTtcbiAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tGaXJzdChibG9jazogQ3VpQmxvY2spOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRmlyc3QpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTa2lwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLmJsb2Nrcy5pbnNlcnQoYmxvY2sudHlwZSwgYmxvY2suZGF0YSwge30sIHRoaXMuaW5kZXgsIGZhbHNlLCBmYWxzZSwgYmxvY2suaWQpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiDQtdGB0YLRjCDQstCw0YDQuNC6INGH0YLQviDRh9GC0L4g0YLQviDQv9C+0LnQtNC10YIg0L3QtSDRgtCw0LpcbiAgICAgICAgdGhpcy5lZGl0b3IuYmxvY2tzLnJlbmRlcih7IGJsb2NrczogW2Jsb2NrXSB9KS50aGVuKCgpID0+ICh0aGlzLmlzU2tpcCA9IGZhbHNlKSk7XG4gICAgICAgIHRoaXMuaXNGaXJzdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29tYmluZWRCbG9jayhibG9jazogQ3VpQmxvY2spOiBDdWlCbG9jayB7XG4gICAgICAgIGNvbnN0IGNvbWJpbmVkQmxvY2tEYXRhID0gYmxvY2suZGF0YSBhcyB7IHBhcmVudElkOiBzdHJpbmcgfTtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5jb21iaW5lZEJsb2Nrcy5nZXQoY29tYmluZWRCbG9ja0RhdGEucGFyZW50SWQpO1xuXG4gICAgICAgIHRoaXMuYmxvY2tJZHNNYXAuc2V0KGJsb2NrLmlkISwgYmxvY2suaWQhKTtcblxuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnREYXRhID0gcGFyZW50LmRhdGEgYXMgeyB0ZXh0QmxvY2tzOiBDdWlCbG9ja1tdIH07XG4gICAgICAgICAgICBwYXJlbnREYXRhLnRleHRCbG9ja3MucHVzaChibG9jayk7XG5cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRPYmplY3Q6IEN1aUJsb2NrID0ge1xuICAgICAgICAgICAgaWQ6IGNvbWJpbmVkQmxvY2tEYXRhLnBhcmVudElkLFxuICAgICAgICAgICAgdHlwZTogQ09NQklORURfVEVYVF9CTE9DS19OQU1FLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGlkOiBjb21iaW5lZEJsb2NrRGF0YS5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgICB0ZXh0QmxvY2tzOiBbYmxvY2tdXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jb21iaW5lZEJsb2Nrcy5zZXQoY29tYmluZWRCbG9ja0RhdGEucGFyZW50SWQsIHBhcmVudE9iamVjdCk7XG5cbiAgICAgICAgcmV0dXJuIHBhcmVudE9iamVjdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEJsb2NrSWRzVG9NYXAoYmxvY2tJZHM6IHN0cmluZ1tdLCBhZGRlZEJsb2NrczogQ3VpRnVsbEJsb2NrRGF0YVtdKTogdm9pZCB7XG4gICAgICAgIGlmICghYmxvY2tJZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhZGRlZEJsb2Nrcy5mb3JFYWNoKChibG9ja0RhdGEsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJsb2NrSWRzTWFwLnNldChibG9ja0RhdGEuaWQsIGJsb2NrSWRzW2luZGV4XSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U3RhcnRCbG9jaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYmxvY2tJZHNNYXAuc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRGb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JFbXB0eS5lbWl0KHRoaXMuY2hlY2tJc0VtcHR5KCkpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1JlYWRvbmx5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLnJlbmRlcih7IGJsb2NrczogW10gfSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zZXRTdGFydEJsb2NrKFxuICAgICAgICAgICAgdGhpcy5lZGl0b3JBcGlJZCgpLFxuICAgICAgICAgICAgYXN5bmMgKGJsb2NrOiBDdWlCbG9jazxDdWlDb21iaW5lZEJsb2NrVG9vbERhdGE+LCBpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja0lkc01hcC5zZXQoaWQsIGlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzU2tpcENvbWJpbmVkQmxvY2tPbkNoYW5nZS5wdXNoKHRydWUpO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5lZGl0b3IucmVuZGVyKHsgYmxvY2tzOiBbYmxvY2tdIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb2N1cygpO1xuICAgICAgICAgICAgICAgIHJlY2FsY3VsYXRlSW5kZXhlcyh0aGlzLmVkaXRvci5ibG9ja3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Rm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcoKT8uYXV0b2ZvY3VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVkaXRvci5jYXJldC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tJc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBNSU5fQkxPQ0tTX0NPVU5UID0gMTtcbiAgICAgICAgY29uc3QgUkVEQUNUT1JfU0VMRUNUT1IgPSAnLmNvZGV4LWVkaXRvcl9fcmVkYWN0b3InO1xuICAgICAgICBjb25zdCByZWRhY3RvciA9IHRoaXMuZWRpdG9yRWxlbWVudC5xdWVyeVNlbGVjdG9yKFJFREFDVE9SX1NFTEVDVE9SKTtcbiAgICAgICAgY29uc3QgYmxvY2tzQ291bnQgPSByZWRhY3Rvcj8uY2hpbGRFbGVtZW50Q291bnQgPz8gMDtcblxuICAgICAgICByZXR1cm4gYmxvY2tzQ291bnQgPD0gTUlOX0JMT0NLU19DT1VOVCAmJiAhcmVkYWN0b3I/LnRleHRDb250ZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXREYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5wb29saW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmlzU2tpcENvbWJpbmVkQmxvY2tPbkNoYW5nZSA9IFtdO1xuICAgICAgICB0aGlzLmlzRmlyc3QgPSB0cnVlO1xuICAgICAgICB0aGlzLmlzQ2hhbmdpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1NraXAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JlcXVlc3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJsb2NrSWRzTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICAgICAgdGhpcy5jb21iaW5lZEJsb2NrcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgICAgIHRoaXMucGFnZSA9IDA7XG4gICAgICAgIHRoaXMuYWRkZWRCbG9ja3MgPSBbXTtcbiAgICAgICAgdGhpcy51cGRhdGVkQmxvY2tzID0gW107XG4gICAgICAgIHRoaXMucmVtb3ZlZEJsb2Nrc0lkcyA9IFtdO1xuICAgICAgICB0aGlzLmNoYW5nZXNRdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLmFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgI2VkaXRvclxuICAgIFtpZF09XCJlZGl0b3JJZFwiXG4gICAgZGF0YS1lZGl0b3JcbiAgICBbY2xhc3MuX3JlYWRvbmx5XT1cImNvbmZpZygpLnJlYWRPbmx5XCJcbj48L2Rpdj5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9lZGl0b3IvaW50ZXJmYWNlcy9hbmd1bGFyLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTmdFbGVtZW50LCBXaXRoUHJvcGVydGllcyB9IGZyb20gJ0Bhbmd1bGFyL2VsZW1lbnRzJztcclxuXHJcbmV4cG9ydCB0eXBlIEN1aUFuZ3VsYXJFbGVtZW50PFQ+ID0gTmdFbGVtZW50ICYgV2l0aFByb3BlcnRpZXM8VD47XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9lZGl0b3IvaW50ZXJmYWNlcy9hbmd1bGFyLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTmdFbGVtZW50LCBXaXRoUHJvcGVydGllcyB9IGZyb20gJ0Bhbmd1bGFyL2VsZW1lbnRzJztcblxuZXhwb3J0IHR5cGUgQ3VpQW5ndWxhckVsZW1lbnQ8VD4gPSBOZ0VsZW1lbnQgJiBXaXRoUHJvcGVydGllczxUPjtcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9pbnRlcmZhY2VzL2N1c3RvbS1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VpQ3VzdG9tRWxlbWVudCB7XHJcbiAgICByZWFkb25seSBzZWxlY3Rvcjogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgY29tcG9uZW50OiBUeXBlPHVua25vd24+O1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9pbnRlcmZhY2VzL2N1c3RvbS1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBDdWlDdXN0b21FbGVtZW50IHtcbiAgICByZWFkb25seSBzZWxlY3Rvcjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGNvbXBvbmVudDogVHlwZTx1bmtub3duPjtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9pbnRlcmZhY2VzL2VkaXRvci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdWlUb29scyB9IGZyb20gJy4vdG9vbHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFZGl0b3JEYXRhIHtcclxuICAgIHJlYWRvbmx5IHRvb2xzOiBDdWlUb29scztcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9pbnRlcmZhY2VzL2VkaXRvci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdWlUb29scyB9IGZyb20gJy4vdG9vbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRvckRhdGEge1xuICAgIHJlYWRvbmx5IHRvb2xzOiBDdWlUb29scztcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export * from './editor.provider';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9wcm92aWRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZWRpdG9yLnByb3ZpZGVyJztcclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9wcm92aWRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZWRpdG9yLnByb3ZpZGVyJztcbiJdfQ==
@@ -377,4 +377,4 @@ export class CuiCombinedTextBlockTool {
377
377
  return config.placeholder ?? DEFAULT_PLACEHOLDER;
378
378
  }
379
379
  }
380
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZWQtdGV4dC1ibG9jay50b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9lZGl0b3IvdG9vbHMvY29tYmluZWQtdGV4dC1ibG9jay50b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQzVCLGdCQUFnQixFQUNuQixNQUFNLGNBQWMsQ0FBQztBQU90QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVyRSxNQUFNLE9BQU8sd0JBQXdCO0lBb0JqQyxZQUFZLE9BQWdCO1FBbkJYLFFBQUcsR0FBRyxNQUFNLENBQUM7UUFDYixrQkFBYSxHQUFHLEdBQUcsQ0FBQztRQUNwQiw4QkFBeUIsR0FBRyxDQUFDLENBQUM7UUFDOUIsK0JBQTBCLEdBQUcsbUJBQW1CLENBQUM7UUFFMUQsbUJBQWMsR0FBRztZQUNyQixPQUFPLEVBQUUsSUFBSTtZQUNiLFNBQVMsRUFBRSxJQUFJO1lBQ2YsYUFBYSxFQUFFLElBQUk7U0FDdEIsQ0FBQztRQVFNLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBMkpwQix3QkFBbUIsR0FBRyxDQUFDLElBQVksRUFBdUIsRUFBRTtZQUNoRSxJQUFJLFNBQVMsR0FBK0MsSUFBSSxDQUFDO1lBRWpFLE9BQU8sR0FBRyxFQUFFO2dCQUNSLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ1osWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM1QixDQUFDO2dCQUVELFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFD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RUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFTyxjQUFjLENBQUMsTUFBa0I7UUFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsT0FBTyxNQUFNLENBQUMsbUJBQW1CLElBQUksNEJBQTRCLENBQUM7UUFDdEUsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLFdBQVcsSUFBSSxtQkFBbUIsQ0FBQztJQUNyRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcclxuaW1wb3J0IHR5cGUgeyBBUEksIEJsb2NrVG9vbCwgQmxvY2tUb29sQ29uc3RydWN0b3JPcHRpb25zLCBUb29sQ29uZmlnIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBDT01CSU5FRF9URVhUX0JMT0NLLFxyXG4gICAgQ09NQklORURfVEVYVF9CTE9DS19BRERFRCxcclxuICAgIENPTUJJTkVEX1RFWFRfQkxPQ0tfTkFNRSxcclxuICAgIENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCxcclxuICAgIENPTUJJTkVEX1RFWFRfQkxPQ0tfUkVNT1ZFRCxcclxuICAgIENPTUJJTkVEX1RFWFRfQkxPQ0tfVVBEQVRFRCxcclxuICAgIERFRkFVTFRfUExBQ0VIT0xERVIsXHJcbiAgICBERUZBVUxUX1JFQURPTkxZX1BMQUNFSE9MREVSLFxyXG4gICAgU1BMSVRfTUFYX0xFTkdUSFxyXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB0eXBlIHtcclxuICAgIEN1aUNvbWJpbmVkQmxvY2tUb29sRGF0YSxcclxuICAgIEN1aUNvbWJpbmVkUGFydEJsb2NrLFxyXG4gICAgQ3VpTXV0YXRpb25BY3Rpb25zLFxyXG4gICAgQ3VpTXV0YXRpb25DYWxsYmFja1xyXG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyByZWNhbGN1bGF0ZUluZGV4ZXMsIHNwbGl0SFRNTCwgZ2VuZXJhdGVJZCB9IGZyb20gJy4uL3V0aWxzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBDdWlDb21iaW5lZFRleHRCbG9ja1Rvb2wgaW1wbGVtZW50cyBCbG9ja1Rvb2wge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBUQUcgPSAnc3Bhbic7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IERFQk9VTkNFX1RJTUUgPSAzNTA7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1BWF9DSElMRF9DT1VOVF9GT1JfRU1QVFkgPSAxO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBQTEFDRUhPTERFUl9BVFRSSUJVVEVfTkFNRSA9ICdwbGFjZWhvbGRlckFjdGl2ZSc7XHJcblxyXG4gICAgcHJpdmF0ZSBtdXRhdGlvbkNvbmZpZyA9IHtcclxuICAgICAgICBzdWJ0cmVlOiB0cnVlLFxyXG4gICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcclxuICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXHJcbiAgICB9O1xyXG4gICAgcHJpdmF0ZSBhcGk6IEFQSTtcclxuICAgIHByaXZhdGUgZGF0YTogQ3VpQ29tYmluZWRCbG9ja1Rvb2xEYXRhO1xyXG4gICAgcHJpdmF0ZSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSB3cmFwcGVyPzogSFRNTEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIG9ic2VydmVyPzogTXV0YXRpb25PYnNlcnZlcjtcclxuICAgIHByaXZhdGUgbGFzdEJsb2NrRWxlbWVudD86IEhUTUxFbGVtZW50O1xyXG4gICAgcHJpdmF0ZSByZWFkT25seT86IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIGNoYW5nZXMgPSBuZXcgTWFwKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogdW5rbm93bikge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSBvcHRpb25zIGFzIEJsb2NrVG9vbENvbnN0cnVjdG9yT3B0aW9ucztcclxuICAgICAgICBjb25zdCBkYXRhID0gYm9keS5kYXRhO1xyXG5cclxuICAgICAgICB0aGlzLnJlYWRPbmx5ID0gYm9keS5yZWFkT25seTtcclxuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5nZXRQbGFjZWhvbGRlcihib2R5LmNvbmZpZyk7XHJcbiAgICAgICAgdGhpcy5hcGkgPSBib2R5LmFwaTtcclxuICAgICAgICB0aGlzLmRhdGEgPSB7XHJcbiAgICAgICAgICAgIGlkOiBkYXRhLmlkIHx8IGdlbmVyYXRlSWQoKSxcclxuICAgICAgICAgICAgdGV4dEJsb2NrczogZGF0YS50ZXh0QmxvY2tzIHx8IFtdXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jb252ZXJ0RGVmYXVsdERhdGFUb0N1c3RvbShkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldCBpc0lubGluZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXQgaXNSZWFkT25seVN1cHBvcnRlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldCBlbmFibGVMaW5lQnJlYWtzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldCB0b29sYm94KCk6IHsgaWNvbjogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGljb246ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj48cGF0aCBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNOCA5VjcuMkM4IDcuMDg5NTQgOC4wODk1NCA3IDguMiA3TDEyIDdNMTYgOVY3LjJDMTYgNy4wODk1NCAxNS45MTA1IDcgMTUuOCA3TDEyIDdNMTIgN0wxMiAxN00xMiAxN0gxME0xMiAxN0gxNFwiPjwvcGF0aD48L3N2Zz4nLFxyXG4gICAgICAgICAgICB0aXRsZTogJ1RleHQnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldCBwYXN0ZUNvbmZpZygpOiBvYmplY3Qge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRhZ3M6IFsnUCddXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25QYXN0ZShldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ3RhZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdGV4dCA9IGV2ZW50LmRldGFpbC5kYXRhLnRleHRDb250ZW50O1xyXG5cclxuICAgICAgICB0aGlzLmRhdGEudGV4dEJsb2Nrcy5zcGxpY2UodGhpcy5kYXRhLnRleHRCbG9ja3MubGVuZ3RoIC0gMSwgMSwgdGhpcy5nZXRCbG9ja1BhcnRPYmplY3QoZ2VuZXJhdGVJZCgpLCB0ZXh0KSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGUodGhpcy5kYXRhLnRleHRCbG9ja3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW5kZXIoKTogSFRNTEVsZW1lbnQge1xyXG4gICAgICAgIHRoaXMud3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIHRoaXMud3JhcHBlci5jbGFzc0xpc3QuYWRkKENPTUJJTkVEX1RFWFRfQkxPQ0spO1xyXG4gICAgICAgIHRoaXMud3JhcHBlci5kYXRhc2V0W3RoaXMuUExBQ0VIT0xERVJfQVRUUklCVVRFX05BTUVdID0gdGhpcy5hcGkuaTE4bi50KHRoaXMucGxhY2Vob2xkZXIpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMucmVhZE9ubHkpIHtcclxuICAgICAgICAgICAgdGhpcy53cmFwcGVyLmNvbnRlbnRFZGl0YWJsZSA9ICd0cnVlJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5kYXRhLnRleHRCbG9ja3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YS50ZXh0QmxvY2tzLnB1c2godGhpcy5nZXRCbG9ja1BhcnRPYmplY3QoZ2VuZXJhdGVJZCgpLCAnJykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGUodGhpcy5kYXRhLnRleHRCbG9ja3MpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tJc0VkaXRvckVtcHR5KCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5yZWFkT25seSkge1xyXG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9IHRoaXMuZ2V0TXV0YXRpb25DYWxsYmFjayh0aGlzLkRFQk9VTkNFX1RJTUUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMub25NdXRhdGlvbkV2ZW50LmJpbmQodGhpcywgY2FsbGJhY2spKTtcclxuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMud3JhcHBlciwgdGhpcy5tdXRhdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy53cmFwcGVyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtZXJnZShibG9ja3NEYXRhOiBDdWlDb21iaW5lZFBhcnRCbG9ja1tdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLndyYXBwZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGJsb2Nrc1RleHRDb250ZW50ID0gJyc7XHJcbiAgICAgICAgdGhpcy5kYXRhLnRleHRCbG9ja3MgPSBbXTtcclxuXHJcbiAgICAgICAgYmxvY2tzRGF0YS5mb3JFYWNoKChibG9jaykgPT4ge1xyXG4gICAgICAgICAgICBibG9ja3NUZXh0Q29udGVudCArPSBibG9jay5kYXRhLnRleHQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53cmFwcGVyLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMud3JhcHBlci5jaGlsZE5vZGVzLml0ZW0oaSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIShub2RlIGluc3RhbmNlb2YgSFRNTFNwYW5FbGVtZW50KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpLS07XHJcbiAgICAgICAgICAgIGJsb2Nrc1RleHRDb250ZW50ID0gbm9kZS5pbm5lckhUTUwgKyBibG9ja3NUZXh0Q29udGVudDtcclxuICAgICAgICAgICAgbm9kZS5yZW1vdmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gYmxvY2tzVGV4dENvbnRlbnQubGVuZ3RoIDwgU1BMSVRfTUFYX0xFTkdUSCA/IFtibG9ja3NUZXh0Q29udGVudF0gOiBzcGxpdEhUTUwoYmxvY2tzVGV4dENvbnRlbnQpO1xyXG5cclxuICAgICAgICBwYXJ0cy5mb3JFYWNoKChwYXJ0OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYmxvY2tPYmplY3QgPSB0aGlzLmdldEJsb2NrUGFydE9iamVjdChnZW5lcmF0ZUlkKCksIHBhcnQpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kYXRhLnRleHRCbG9ja3MucHVzaChibG9ja09iamVjdCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlKHRoaXMuZGF0YS50ZXh0QmxvY2tzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2F2ZShibG9ja0NvbnRlbnQ6IEhUTUxFbGVtZW50KTogQ3VpQ29tYmluZWRQYXJ0QmxvY2tbXSB7XHJcbiAgICAgICAgY29uc3QgdGV4dEJsb2NrczogQ3VpQ29tYmluZWRQYXJ0QmxvY2tbXSA9IFtdO1xyXG5cclxuICAgICAgICBibG9ja0NvbnRlbnQucXVlcnlTZWxlY3RvckFsbCh0aGlzLlRBRykuZm9yRWFjaCgoc3BhbjogSFRNTEVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgdGV4dEJsb2Nrcy5wdXNoKHRoaXMuZ2V0QmxvY2tQYXJ0T2JqZWN0KHNwYW4uZGF0YXNldFsnaWQnXSEsIHNwYW4uaW5uZXJIVE1MKSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0ZXh0QmxvY2tzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuXHJcbiAgICAgICAgY29uc3QgYmxvY2tJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLnRleHRCbG9ja3MuZm9yRWFjaCgoYmxvY2s6IEN1aUNvbWJpbmVkUGFydEJsb2NrKSA9PiB7XHJcbiAgICAgICAgICAgIGJsb2NrSWRzLmFkZChibG9jay5pZCB8fCAnJyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucmVtb3ZlQmxvY2tzKGJsb2NrSWRzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uTXV0YXRpb25FdmVudChjYWxsYmFjazogKG11dGF0aW9uTGlzdDogTXV0YXRpb25SZWNvcmRbXSkgPT4gdm9pZCwgbXV0YXRpb25MaXN0OiBNdXRhdGlvblJlY29yZFtdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKG11dGF0aW9uTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbXV0YXRpb25MaXN0LmZvckVhY2goKG11dGF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChtdXRhdGlvbi5yZW1vdmVkTm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZXMuc2V0KGdlbmVyYXRlSWQoKSwgbXV0YXRpb24pO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VzLnNldChtdXRhdGlvbi50YXJnZXQsIG11dGF0aW9uKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY2FsbGJhY2sobXV0YXRpb25MaXN0KTtcclxuICAgICAgICB0aGlzLmNoZWNrSXNFZGl0b3JFbXB0eSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TXV0YXRpb25DYWxsYmFjayA9ICh3YWl0OiBudW1iZXIpOiBDdWlNdXRhdGlvbkNhbGxiYWNrID0+IHtcclxuICAgICAgICBsZXQgdGltZW91dElkOiBDdWlOdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0Pj4gPSBudWxsO1xyXG5cclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGltZW91dElkKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLmhhbmRsZU11dGF0aW9ucygpLCB3YWl0KTtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZU11dGF0aW9ucygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBtdXRhdGlvbnNMaXN0ID0gWy4uLnRoaXMuY2hhbmdlcy52YWx1ZXMoKV07XHJcbiAgICAgICAgY29uc3QgeyB1cGRhdGVkRWxlbWVudHMsIHJlbW92ZWRFbGVtZW50c0lkcyB9ID0gdGhpcy5nZXRNdXRhdGlvbkFjdGlvbnMobXV0YXRpb25zTGlzdCk7XHJcbiAgICAgICAgY29uc3Qgc3BsaXRlZFBhcnRzOiBIVE1MRWxlbWVudFtdID0gW107XHJcblxyXG4gICAgICAgIHVwZGF0ZWRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50Q29udGVudDogc3RyaW5nID0gZWxlbWVudC5pbm5lckhUTUw7XHJcblxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudENvbnRlbnQubGVuZ3RoIDwgU1BMSVRfTUFYX0xFTkdUSCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHNwbGl0SFRNTChlbGVtZW50Q29udGVudCk7XHJcblxyXG4gICAgICAgICAgICBwYXJ0cy5mb3JFYWNoKChwYXJ0OiBzdHJpbmcsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tJZCA9IGdlbmVyYXRlSWQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gdGhpcy5jcmVhdGVCbG9jayhibG9ja0lkLCBwYXJ0KTtcclxuXHJcbiAgICAgICAgICAgICAgICBzcGxpdGVkUGFydHMucHVzaCh0ZXh0RWxlbWVudCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBwYXJ0c1swXTtcclxuICAgICAgICAgICAgZWxlbWVudC5hZnRlciguLi5zcGxpdGVkUGFydHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmFkZEJsb2NrcyhzcGxpdGVkUGFydHMsIHVwZGF0ZWRFbGVtZW50cyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVCbG9ja3ModXBkYXRlZEVsZW1lbnRzKTtcclxuICAgICAgICB0aGlzLnJlbW92ZUJsb2NrcyhyZW1vdmVkRWxlbWVudHNJZHMpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlcy5jbGVhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TmV4dEluZGV4KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmVjYWxjdWxhdGVJbmRleGVzKHRoaXMuYXBpLmJsb2Nrcyk7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmFwaS5ibG9ja3MuZ2V0Q3VycmVudEJsb2NrSW5kZXgoKTtcclxuICAgICAgICBjb25zdCBibG9jayA9IHRoaXMuYXBpLmJsb2Nrcy5nZXRCbG9ja0J5SW5kZXgoaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGRhdGFJbmRleCA9IE51bWJlcihibG9jaz8uaG9sZGVyLmRhdGFzZXRbJ2luZGV4J10pO1xyXG5cclxuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24/LnJhbmdlQ291bnQgPyBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKSA6IG51bGw7XHJcbiAgICAgICAgY29uc3QgY2FyZXRQb3NpdGlvbiA9IHJhbmdlPy5zdGFydE9mZnNldCA/PyAxO1xyXG5cclxuICAgICAgICBsZXQgbmV4dEJsb2NrSW5kZXggPSBkYXRhSW5kZXg7XHJcblxyXG4gICAgICAgIGlmIChjYXJldFBvc2l0aW9uICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ29udGFpbmVyID0gYmxvY2s/LmhvbGRlci5xdWVyeVNlbGVjdG9yKCcuJyArIENPTUJJTkVEX1RFWFRfQkxPQ0spIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbkNvdW50ID0gYmxvY2tDb250YWluZXI/LmNoaWxkcmVuPy5sZW5ndGggPyBibG9ja0NvbnRhaW5lcj8uY2hpbGRyZW4/Lmxlbmd0aCAtIDEgOiAwO1xyXG5cclxuICAgICAgICAgICAgbmV4dEJsb2NrSW5kZXggPSBkYXRhSW5kZXggKyBjaGlsZHJlbkNvdW50ICsgMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbmV4dEJsb2NrSW5kZXgpIHtcclxuICAgICAgICAgICAgbmV4dEJsb2NrSW5kZXggfHw9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbmV4dEJsb2NrSW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRCbG9ja1BhcnRPYmplY3QoYmxvY2tJZDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBDdWlDb21iaW5lZFBhcnRCbG9jayB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGJsb2NrSWQsXHJcbiAgICAgICAgICAgIHR5cGU6IENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgdGV4dCxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiB0aGlzLmRhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICBwYXJlbnRUeXBlOiBDT01CSU5FRF9URVhUX0JMT0NLX05BTUVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRNdXRhdGlvbkFjdGlvbnMobXV0YXRpb25MaXN0OiBNdXRhdGlvblJlY29yZFtdKTogQ3VpTXV0YXRpb25BY3Rpb25zIHtcclxuICAgICAgICBjb25zdCB1cGRhdGVkRWxlbWVudHMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xyXG4gICAgICAgIGNvbnN0IHJlbW92ZWRFbGVtZW50c0lkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gICAgICAgIGNvbnN0IGNoYW5nZWRPdXRzaWRlRWxlbWVudHM6IE5vZGVbXSA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmxhc3RCbG9ja0VsZW1lbnQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIG11dGF0aW9uTGlzdC5mb3JFYWNoKChtdXRhdGlvbjogTXV0YXRpb25SZWNvcmQpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVVcGRhdGVkQmxvY2tzKG11dGF0aW9uLCB1cGRhdGVkRWxlbWVudHMsIGNoYW5nZWRPdXRzaWRlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlbW92ZWRCbG9ja3MobXV0YXRpb24sIHJlbW92ZWRFbGVtZW50c0lkcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmxhc3RCbG9ja0VsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgbGFzdEJsb2NrRWxlbWVudCA9IHRoaXMubGFzdEJsb2NrRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIGxhc3RCbG9ja0VsZW1lbnQuYXBwZW5kKC4uLmNoYW5nZWRPdXRzaWRlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICB0aGlzLnNldENhcmV0VG9CbG9ja3NFbmQobGFzdEJsb2NrRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB1cGRhdGVkRWxlbWVudHMsXHJcbiAgICAgICAgICAgIHJlbW92ZWRFbGVtZW50c0lkc1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRDYXJldFRvQmxvY2tzRW5kKGJsb2NrOiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XHJcblxyXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KGJsb2NrLCBibG9jay5jaGlsZE5vZGVzLmxlbmd0aCk7XHJcbiAgICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcclxuICAgICAgICBzZWxlY3Rpb24/LmFkZFJhbmdlKHJhbmdlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZVVwZGF0ZWRCbG9ja3MoXHJcbiAgICAgICAgbXV0YXRpb246IE11dGF0aW9uUmVjb3JkLFxyXG4gICAgICAgIHVwZGF0ZWRFbGVtZW50czogU2V0PEhUTUxFbGVtZW50PixcclxuICAgICAgICBvdXRzaWRlQ2hhbmdlczogTm9kZVtdXHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBsZXQgZWxlbWVudCA9IG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKG11dGF0aW9uLnRhcmdldC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcclxuICAgICAgICAgICAgZWxlbWVudCA9IG11dGF0aW9uLnRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgc3BhbiA9IGVsZW1lbnQ/LmNsb3Nlc3QoJy4nICsgQ09NQklORURfVEVYVF9CTE9DS19QQVJUKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKHNwYW4pIHtcclxuICAgICAgICAgICAgdXBkYXRlZEVsZW1lbnRzLmFkZChzcGFuKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlc091dHNpZGVCbG9jayhlbGVtZW50LCBvdXRzaWRlQ2hhbmdlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VzT3V0c2lkZUJsb2NrKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvdXRzaWRlQ2hhbmdlczogTm9kZVtdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFlbGVtZW50IHx8IHRoaXMubGFzdEJsb2NrRWxlbWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbGVtZW50LmNoaWxkTm9kZXMuZm9yRWFjaCgoYmxvY2spID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYmxvY2tFbGVtZW50ID0gYmxvY2sgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgICAgICAgICBpZiAoYmxvY2tFbGVtZW50LmNsYXNzTGlzdD8uY29udGFpbnMoQ09NQklORURfVEVYVF9CTE9DS19QQVJUKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0QmxvY2tFbGVtZW50ID0gYmxvY2tFbGVtZW50O1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3V0c2lkZUNoYW5nZXMucHVzaChibG9jayk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRCbG9ja3Moc3BsaWNlZFBhcnRzOiBIVE1MRWxlbWVudFtdLCB1cGRhdGVkRWxlbWVudHM6IFNldDxIVE1MRWxlbWVudD4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXNwbGljZWRQYXJ0cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgYWRkZWRCbG9ja3M6IEN1aUNvbWJpbmVkUGFydEJsb2NrW10gPSBzcGxpY2VkUGFydHMubWFwKChibG9jaykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBibG9ja0lkID0gYmxvY2suZGF0YXNldFsnaWQnXTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpZDogYmxvY2tJZCxcclxuICAgICAgICAgICAgICAgIHR5cGU6IENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBibG9jay5pbm5lckhUTUwsXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHRoaXMuZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRUeXBlOiBDT01CSU5FRF9URVhUX0JMT0NLX05BTUVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNFbGVtZW50ID0gdXBkYXRlZEVsZW1lbnRzLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcclxuICAgICAgICBjb25zdCBpZCA9IHByZXZpb3VzRWxlbWVudD8uZGF0YXNldFsnaWQnXTtcclxuICAgICAgICBjb25zdCBpbmRleCA9IE51bWJlcihwcmV2aW91c0VsZW1lbnQ/LmRhdGFzZXRbJ2luZGV4J10pICsgMTtcclxuICAgICAgICBjb25zdCBibG9ja0luZGV4ID0gdGhpcy5kYXRhLnRleHRCbG9ja3MuZmluZEluZGV4KChibG9jaykgPT4gYmxvY2suaWQgPT09IGlkKTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLnRleHRCbG9ja3Muc3BsaWNlKGJsb2NrSW5kZXgsIDAsIC4uLmFkZGVkQmxvY2tzKTtcclxuICAgICAgICB0aGlzLmFwaS5ldmVudHMuZW1pdChDT01CSU5FRF9URVhUX0JMT0NLX0FEREVELCB7XHJcbiAgICAgICAgICAgIGluZGV4LFxyXG4gICAgICAgICAgICBibG9ja0luZGV4LFxyXG4gICAgICAgICAgICBibG9ja3M6IGFkZGVkQmxvY2tzLFxyXG4gICAgICAgICAgICBkYXRhOiB0aGlzLmRhdGEudGV4dEJsb2Nrc1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlQmxvY2tzKHVwZGF0ZWRFbGVtZW50czogU2V0PEhUTUxFbGVtZW50Pik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdXBkYXRlZEVsZW1lbnRzLnNpemUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXBkYXRlZEJsb2NrcyA9IFsuLi51cGRhdGVkRWxlbWVudHMudmFsdWVzKCldLm1hcCgoYmxvY2spID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGlkOiBibG9jay5kYXRhc2V0WydpZCddLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogQ09NQklORURfVEVYVF9CTE9DS19QQVJULFxyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGJsb2NrLmlubmVySFRNTCxcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogdGhpcy5kYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudFR5cGU6IENPTUJJTkVEX1RFWFRfQkxPQ0tfTkFNRVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmFwaS5ldmVudHMuZW1pdChDT01CSU5FRF9URVhUX0JMT0NLX1VQREFURUQsIHVwZGF0ZWRCbG9ja3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlUmVtb3ZlZEJsb2NrcyhtdXRhdGlvbjogTXV0YXRpb25SZWNvcmQsIHJlbW92ZWRFbGVtZW50c0lkczogU2V0PHN0cmluZz4pOiB2b2lkIHtcclxuICAgICAgICBpZiAobXV0YXRpb24ucmVtb3ZlZE5vZGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBtdXRhdGlvbi5yZW1vdmVkTm9kZXMuZm9yRWFjaCgobm9kZTogTm9kZSk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIShub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSWQgPSAobm9kZSBhcyBIVE1MRWxlbWVudCkuZGF0YXNldFsnaWQnXTtcclxuXHJcbiAgICAgICAgICAgIGlmICghYmxvY2tJZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZW1vdmVkRWxlbWVudHNJZHMuYWRkKGJsb2NrSWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlQmxvY2tzKGlkczogU2V0PHN0cmluZz4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWlkcy5zaXplKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJlbW92ZWRFbGVtZW50SWRzID0gWy4uLmlkcy52YWx1ZXMoKV07XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YS50ZXh0QmxvY2tzID0gdGhpcy5kYXRhLnRleHRCbG9ja3MuZmlsdGVyKChibG9jaykgPT4gIWlkcy5oYXMoYmxvY2suaWQgfHwgJycpKTtcclxuICAgICAgICB0aGlzLmFwaS5ldmVudHMuZW1pdChDT01CSU5FRF9URVhUX0JMT0NLX1JFTU9WRUQsIHJlbW92ZWRFbGVtZW50SWRzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZShibG9ja3M6IEN1aUNvbWJpbmVkUGFydEJsb2NrW10pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWJsb2Nrcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYmxvY2tzLmZvckVhY2goKGJsb2NrOiBDdWlDb21iaW5lZFBhcnRCbG9jaykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0ZXh0RWxlbWVudCA9IHRoaXMuY3JlYXRlQmxvY2soYmxvY2suaWQgfHwgZ2VuZXJhdGVJZCgpLCBibG9jay5kYXRhLnRleHQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLndyYXBwZXIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMud3JhcHBlci5xdWVyeVNlbGVjdG9yKCcuJyArIENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud3JhcHBlci5hcHBlbmQodGV4dEVsZW1lbnQpO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy53cmFwcGVyLnJlcGxhY2VDaGlsZHJlbih0ZXh0RWxlbWVudCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFwaS5ldmVudHMuZW1pdChDT01CSU5FRF9URVhUX0JMT0NLX0FEREVELCB7XHJcbiAgICAgICAgICAgICAgICBibG9ja3NcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVCbG9jayhpZDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XHJcbiAgICAgICAgY29uc3QgdGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuVEFHKTtcclxuICAgICAgICB0ZXh0RWxlbWVudC5jbGFzc0xpc3QuYWRkKENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCk7XHJcbiAgICAgICAgdGV4dEVsZW1lbnQuaW5uZXJIVE1MID0gdGV4dDtcclxuICAgICAgICB0ZXh0RWxlbWVudC5kYXRhc2V0WydpZCddID0gaWQ7XHJcblxyXG4gICAgICAgIHJldHVybiB0ZXh0RWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbnZlcnREZWZhdWx0RGF0YVRvQ3VzdG9tKGRhdGE6IHsgdGV4dDogc3RyaW5nIH0pOiB2b2lkIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEudGV4dEJsb2NrcyA9IGRhdGEubWFwKChibG9jaykgPT4ge1xyXG4gICAgICAgICAgICAgICAgYmxvY2suaWQgPSBnZW5lcmF0ZUlkKCk7XHJcbiAgICAgICAgICAgICAgICBibG9jay5kYXRhLnBhcmVudElkID0gdGhpcy5kYXRhLmlkO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBibG9jaztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWRhdGEudGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGRhdGEudGV4dCk7XHJcbiAgICAgICAgbGV0IGVsZW1lbnRDb250ZW50ID0gJyc7XHJcblxyXG4gICAgICAgIGZyYWdtZW50LmNoaWxkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRDb250ZW50ICs9IG5vZGUudGV4dENvbnRlbnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbGVtZW50Q29udGVudCArPSAobm9kZSBhcyBIVE1MRWxlbWVudCkuaW5uZXJIVE1MO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJ0cyA9IGVsZW1lbnRDb250ZW50Lmxlbmd0aCA8IFNQTElUX01BWF9MRU5HVEggPyBbZWxlbWVudENvbnRlbnRdIDogc3BsaXRIVE1MKGVsZW1lbnRDb250ZW50KTtcclxuXHJcbiAgICAgICAgcGFydHMuZm9yRWFjaCgocGFydDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrT2JqZWN0ID0gdGhpcy5nZXRCbG9ja1BhcnRPYmplY3QoZ2VuZXJhdGVJZCgpLCBwYXJ0KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGF0YS50ZXh0QmxvY2tzLnB1c2goYmxvY2tPYmplY3QpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tJc0VkaXRvckVtcHR5KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy53cmFwcGVyIHx8IHRoaXMud3JhcHBlci5jaGlsZHJlbi5sZW5ndGggPiB0aGlzLk1BWF9DSElMRF9DT1VOVF9GT1JfRU1QVFkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMud3JhcHBlci5jaGlsZHJlbi5pdGVtKDApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IGlzSXRlbUVtcHR5ID0gIWl0ZW0udGV4dENvbnRlbnQ/Lmxlbmd0aDtcclxuXHJcbiAgICAgICAgdGhpcy53cmFwcGVyLmRhdGFzZXRbJ2VtcHR5J10gPSBgJHtpc0l0ZW1FbXB0eX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0UGxhY2Vob2xkZXIoY29uZmlnOiBUb29sQ29uZmlnKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLnJlYWRvbmx5UGxhY2Vob2xkZXIgPz8gREVGQVVMVF9SRUFET05MWV9QTEFDRUhPTERFUjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjb25maWcucGxhY2Vob2xkZXIgPz8gREVGQVVMVF9QTEFDRUhPTERFUjtcclxuICAgIH1cclxufVxyXG4iXX0=
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZWQtdGV4dC1ibG9jay50b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9lZGl0b3IvdG9vbHMvY29tYmluZWQtdGV4dC1ibG9jay50b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQzVCLGdCQUFnQixFQUNuQixNQUFNLGNBQWMsQ0FBQztBQU90QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVyRSxNQUFNLE9BQU8sd0JBQXdCO0lBb0JqQyxZQUFZLE9BQWdCO1FBbkJYLFFBQUcsR0FBRyxNQUFNLENBQUM7UUFDYixrQkFBYSxHQUFHLEdBQUcsQ0FBQztRQUNwQiw4QkFBeUIsR0FBRyxDQUFDLENBQUM7UUFDOUIsK0JBQTBCLEdBQUcsbUJBQW1CLENBQUM7UUFFMUQsbUJBQWMsR0FBRztZQUNyQixPQUFPLEVBQUUsSUFBSTtZQUNiLFNBQVMsRUFBRSxJQUFJO1lBQ2YsYUFBYSxFQUFFLElBQUk7U0FDdEIsQ0FBQztRQVFNLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBMkpwQix3QkFBbUIsR0FBRyxDQUFDLElBQVksRUFBdUIsRUFBRTtZQUNoRSxJQUFJLFNBQVMsR0FBK0MsSUFBSSxDQUFDO1lBRWpFLE9BQU8sR0FBRyxFQUFFO2dCQUNSLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ1osWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM1QixDQUFDO2dCQUVELFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFD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RUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFTyxjQUFjLENBQUMsTUFBa0I7UUFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsT0FBTyxNQUFNLENBQUMsbUJBQW1CLElBQUksNEJBQTRCLENBQUM7UUFDdEUsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLFdBQVcsSUFBSSxtQkFBbUIsQ0FBQztJQUNyRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB0eXBlIHsgQVBJLCBCbG9ja1Rvb2wsIEJsb2NrVG9vbENvbnN0cnVjdG9yT3B0aW9ucywgVG9vbENvbmZpZyB9IGZyb20gJ0BlZGl0b3Jqcy9lZGl0b3Jqcyc7XG5cbmltcG9ydCB7XG4gICAgQ09NQklORURfVEVYVF9CTE9DSyxcbiAgICBDT01CSU5FRF9URVhUX0JMT0NLX0FEREVELFxuICAgIENPTUJJTkVEX1RFWFRfQkxPQ0tfTkFNRSxcbiAgICBDT01CSU5FRF9URVhUX0JMT0NLX1BBUlQsXG4gICAgQ09NQklORURfVEVYVF9CTE9DS19SRU1PVkVELFxuICAgIENPTUJJTkVEX1RFWFRfQkxPQ0tfVVBEQVRFRCxcbiAgICBERUZBVUxUX1BMQUNFSE9MREVSLFxuICAgIERFRkFVTFRfUkVBRE9OTFlfUExBQ0VIT0xERVIsXG4gICAgU1BMSVRfTUFYX0xFTkdUSFxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1xuICAgIEN1aUNvbWJpbmVkQmxvY2tUb29sRGF0YSxcbiAgICBDdWlDb21iaW5lZFBhcnRCbG9jayxcbiAgICBDdWlNdXRhdGlvbkFjdGlvbnMsXG4gICAgQ3VpTXV0YXRpb25DYWxsYmFja1xufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IHJlY2FsY3VsYXRlSW5kZXhlcywgc3BsaXRIVE1MLCBnZW5lcmF0ZUlkIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQ3VpQ29tYmluZWRUZXh0QmxvY2tUb29sIGltcGxlbWVudHMgQmxvY2tUb29sIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IFRBRyA9ICdzcGFuJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IERFQk9VTkNFX1RJTUUgPSAzNTA7XG4gICAgcHJpdmF0ZSByZWFkb25seSBNQVhfQ0hJTERfQ09VTlRfRk9SX0VNUFRZID0gMTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IFBMQUNFSE9MREVSX0FUVFJJQlVURV9OQU1FID0gJ3BsYWNlaG9sZGVyQWN0aXZlJztcblxuICAgIHByaXZhdGUgbXV0YXRpb25Db25maWcgPSB7XG4gICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZVxuICAgIH07XG4gICAgcHJpdmF0ZSBhcGk6IEFQSTtcbiAgICBwcml2YXRlIGRhdGE6IEN1aUNvbWJpbmVkQmxvY2tUb29sRGF0YTtcbiAgICBwcml2YXRlIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB3cmFwcGVyPzogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBvYnNlcnZlcj86IE11dGF0aW9uT2JzZXJ2ZXI7XG4gICAgcHJpdmF0ZSBsYXN0QmxvY2tFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSByZWFkT25seT86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBjaGFuZ2VzID0gbmV3IE1hcCgpO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogdW5rbm93bikge1xuICAgICAgICBjb25zdCBib2R5ID0gb3B0aW9ucyBhcyBCbG9ja1Rvb2xDb25zdHJ1Y3Rvck9wdGlvbnM7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBib2R5LmRhdGE7XG5cbiAgICAgICAgdGhpcy5yZWFkT25seSA9IGJvZHkucmVhZE9ubHk7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmdldFBsYWNlaG9sZGVyKGJvZHkuY29uZmlnKTtcbiAgICAgICAgdGhpcy5hcGkgPSBib2R5LmFwaTtcbiAgICAgICAgdGhpcy5kYXRhID0ge1xuICAgICAgICAgICAgaWQ6IGRhdGEuaWQgfHwgZ2VuZXJhdGVJZCgpLFxuICAgICAgICAgICAgdGV4dEJsb2NrczogZGF0YS50ZXh0QmxvY2tzIHx8IFtdXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jb252ZXJ0RGVmYXVsdERhdGFUb0N1c3RvbShkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCBpc0lubGluZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IGlzUmVhZE9ubHlTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IGVuYWJsZUxpbmVCcmVha3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCB0b29sYm94KCk6IHsgaWNvbjogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWNvbjogJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPjxwYXRoIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk04IDlWNy4yQzggNy4wODk1NCA4LjA4OTU0IDcgOC4yIDdMMTIgN00xNiA5VjcuMkMxNiA3LjA4OTU0IDE1LjkxMDUgNyAxNS44IDdMMTIgN00xMiA3TDEyIDE3TTEyIDE3SDEwTTEyIDE3SDE0XCI+PC9wYXRoPjwvc3ZnPicsXG4gICAgICAgICAgICB0aXRsZTogJ1RleHQnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgcGFzdGVDb25maWcoKTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhZ3M6IFsnUCddXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIG9uUGFzdGUoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC50eXBlICE9PSAndGFnJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGV4dCA9IGV2ZW50LmRldGFpbC5kYXRhLnRleHRDb250ZW50O1xuXG4gICAgICAgIHRoaXMuZGF0YS50ZXh0QmxvY2tzLnNwbGljZSh0aGlzLmRhdGEudGV4dEJsb2Nrcy5sZW5ndGggLSAxLCAxLCB0aGlzLmdldEJsb2NrUGFydE9iamVjdChnZW5lcmF0ZUlkKCksIHRleHQpKTtcbiAgICAgICAgdGhpcy51cGRhdGUodGhpcy5kYXRhLnRleHRCbG9ja3MpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXIoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICB0aGlzLndyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy53cmFwcGVyLmNsYXNzTGlzdC5hZGQoQ09NQklORURfVEVYVF9CTE9DSyk7XG4gICAgICAgIHRoaXMud3JhcHBlci5kYXRhc2V0W3RoaXMuUExBQ0VIT0xERVJfQVRUUklCVVRFX05BTUVdID0gdGhpcy5hcGkuaTE4bi50KHRoaXMucGxhY2Vob2xkZXIpO1xuXG4gICAgICAgIGlmICghdGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgdGhpcy53cmFwcGVyLmNvbnRlbnRFZGl0YWJsZSA9ICd0cnVlJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5kYXRhLnRleHRCbG9ja3MubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEudGV4dEJsb2Nrcy5wdXNoKHRoaXMuZ2V0QmxvY2tQYXJ0T2JqZWN0KGdlbmVyYXRlSWQoKSwgJycpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlKHRoaXMuZGF0YS50ZXh0QmxvY2tzKTtcbiAgICAgICAgdGhpcy5jaGVja0lzRWRpdG9yRW1wdHkoKTtcblxuICAgICAgICBpZiAoIXRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5nZXRNdXRhdGlvbkNhbGxiYWNrKHRoaXMuREVCT1VOQ0VfVElNRSk7XG5cbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLm9uTXV0YXRpb25FdmVudC5iaW5kKHRoaXMsIGNhbGxiYWNrKSk7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy53cmFwcGVyLCB0aGlzLm11dGF0aW9uQ29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLndyYXBwZXI7XG4gICAgfVxuXG4gICAgcHVibGljIG1lcmdlKGJsb2Nrc0RhdGE6IEN1aUNvbWJpbmVkUGFydEJsb2NrW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLndyYXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBibG9ja3NUZXh0Q29udGVudCA9ICcnO1xuICAgICAgICB0aGlzLmRhdGEudGV4dEJsb2NrcyA9IFtdO1xuXG4gICAgICAgIGJsb2Nrc0RhdGEuZm9yRWFjaCgoYmxvY2spID0+IHtcbiAgICAgICAgICAgIGJsb2Nrc1RleHRDb250ZW50ICs9IGJsb2NrLmRhdGEudGV4dDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndyYXBwZXIuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMud3JhcHBlci5jaGlsZE5vZGVzLml0ZW0oaSk7XG5cbiAgICAgICAgICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiBIVE1MU3BhbkVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpLS07XG4gICAgICAgICAgICBibG9ja3NUZXh0Q29udGVudCA9IG5vZGUuaW5uZXJIVE1MICsgYmxvY2tzVGV4dENvbnRlbnQ7XG4gICAgICAgICAgICBub2RlLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFydHMgPSBibG9ja3NUZXh0Q29udGVudC5sZW5ndGggPCBTUExJVF9NQVhfTEVOR1RIID8gW2Jsb2Nrc1RleHRDb250ZW50XSA6IHNwbGl0SFRNTChibG9ja3NUZXh0Q29udGVudCk7XG5cbiAgICAgICAgcGFydHMuZm9yRWFjaCgocGFydDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9ja09iamVjdCA9IHRoaXMuZ2V0QmxvY2tQYXJ0T2JqZWN0KGdlbmVyYXRlSWQoKSwgcGFydCk7XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YS50ZXh0QmxvY2tzLnB1c2goYmxvY2tPYmplY3QpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnVwZGF0ZSh0aGlzLmRhdGEudGV4dEJsb2Nrcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNhdmUoYmxvY2tDb250ZW50OiBIVE1MRWxlbWVudCk6IEN1aUNvbWJpbmVkUGFydEJsb2NrW10ge1xuICAgICAgICBjb25zdCB0ZXh0QmxvY2tzOiBDdWlDb21iaW5lZFBhcnRCbG9ja1tdID0gW107XG5cbiAgICAgICAgYmxvY2tDb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5UQUcpLmZvckVhY2goKHNwYW46IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICB0ZXh0QmxvY2tzLnB1c2godGhpcy5nZXRCbG9ja1BhcnRPYmplY3Qoc3Bhbi5kYXRhc2V0WydpZCddISwgc3Bhbi5pbm5lckhUTUwpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRleHRCbG9ja3M7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcblxuICAgICAgICBjb25zdCBibG9ja0lkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgIHRoaXMuZGF0YS50ZXh0QmxvY2tzLmZvckVhY2goKGJsb2NrOiBDdWlDb21iaW5lZFBhcnRCbG9jaykgPT4ge1xuICAgICAgICAgICAgYmxvY2tJZHMuYWRkKGJsb2NrLmlkIHx8ICcnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZW1vdmVCbG9ja3MoYmxvY2tJZHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25NdXRhdGlvbkV2ZW50KGNhbGxiYWNrOiAobXV0YXRpb25MaXN0OiBNdXRhdGlvblJlY29yZFtdKSA9PiB2b2lkLCBtdXRhdGlvbkxpc3Q6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKG11dGF0aW9uTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG11dGF0aW9uTGlzdC5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKG11dGF0aW9uLnJlbW92ZWROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZXMuc2V0KGdlbmVyYXRlSWQoKSwgbXV0YXRpb24pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZXMuc2V0KG11dGF0aW9uLnRhcmdldCwgbXV0YXRpb24pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjYWxsYmFjayhtdXRhdGlvbkxpc3QpO1xuICAgICAgICB0aGlzLmNoZWNrSXNFZGl0b3JFbXB0eSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TXV0YXRpb25DYWxsYmFjayA9ICh3YWl0OiBudW1iZXIpOiBDdWlNdXRhdGlvbkNhbGxiYWNrID0+IHtcbiAgICAgICAgbGV0IHRpbWVvdXRJZDogQ3VpTnVsbGFibGU8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4+ID0gbnVsbDtcblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRpbWVvdXRJZCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaGFuZGxlTXV0YXRpb25zKCksIHdhaXQpO1xuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBwcml2YXRlIGhhbmRsZU11dGF0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbXV0YXRpb25zTGlzdCA9IFsuLi50aGlzLmNoYW5nZXMudmFsdWVzKCldO1xuICAgICAgICBjb25zdCB7IHVwZGF0ZWRFbGVtZW50cywgcmVtb3ZlZEVsZW1lbnRzSWRzIH0gPSB0aGlzLmdldE11dGF0aW9uQWN0aW9ucyhtdXRhdGlvbnNMaXN0KTtcbiAgICAgICAgY29uc3Qgc3BsaXRlZFBhcnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgICAgICAgdXBkYXRlZEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50Q29udGVudDogc3RyaW5nID0gZWxlbWVudC5pbm5lckhUTUw7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50Q29udGVudC5sZW5ndGggPCBTUExJVF9NQVhfTEVOR1RIKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHNwbGl0SFRNTChlbGVtZW50Q29udGVudCk7XG5cbiAgICAgICAgICAgIHBhcnRzLmZvckVhY2goKHBhcnQ6IHN0cmluZywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrSWQgPSBnZW5lcmF0ZUlkKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUJsb2NrKGJsb2NrSWQsIHBhcnQpO1xuXG4gICAgICAgICAgICAgICAgc3BsaXRlZFBhcnRzLnB1c2godGV4dEVsZW1lbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gcGFydHNbMF07XG4gICAgICAgICAgICBlbGVtZW50LmFmdGVyKC4uLnNwbGl0ZWRQYXJ0cyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWRkQmxvY2tzKHNwbGl0ZWRQYXJ0cywgdXBkYXRlZEVsZW1lbnRzKTtcbiAgICAgICAgdGhpcy51cGRhdGVCbG9ja3ModXBkYXRlZEVsZW1lbnRzKTtcbiAgICAgICAgdGhpcy5yZW1vdmVCbG9ja3MocmVtb3ZlZEVsZW1lbnRzSWRzKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROZXh0SW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmVjYWxjdWxhdGVJbmRleGVzKHRoaXMuYXBpLmJsb2Nrcyk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCk7XG4gICAgICAgIGNvbnN0IGJsb2NrID0gdGhpcy5hcGkuYmxvY2tzLmdldEJsb2NrQnlJbmRleChpbmRleCk7XG4gICAgICAgIGNvbnN0IGRhdGFJbmRleCA9IE51bWJlcihibG9jaz8uaG9sZGVyLmRhdGFzZXRbJ2luZGV4J10pO1xuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24/LnJhbmdlQ291bnQgPyBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGNhcmV0UG9zaXRpb24gPSByYW5nZT8uc3RhcnRPZmZzZXQgPz8gMTtcblxuICAgICAgICBsZXQgbmV4dEJsb2NrSW5kZXggPSBkYXRhSW5kZXg7XG5cbiAgICAgICAgaWYgKGNhcmV0UG9zaXRpb24gIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ29udGFpbmVyID0gYmxvY2s/LmhvbGRlci5xdWVyeVNlbGVjdG9yKCcuJyArIENPTUJJTkVEX1RFWFRfQkxPQ0spIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW5Db3VudCA9IGJsb2NrQ29udGFpbmVyPy5jaGlsZHJlbj8ubGVuZ3RoID8gYmxvY2tDb250YWluZXI/LmNoaWxkcmVuPy5sZW5ndGggLSAxIDogMDtcblxuICAgICAgICAgICAgbmV4dEJsb2NrSW5kZXggPSBkYXRhSW5kZXggKyBjaGlsZHJlbkNvdW50ICsgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbmV4dEJsb2NrSW5kZXgpIHtcbiAgICAgICAgICAgIG5leHRCbG9ja0luZGV4IHx8PSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHRCbG9ja0luZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QmxvY2tQYXJ0T2JqZWN0KGJsb2NrSWQ6IHN0cmluZywgdGV4dDogc3RyaW5nKTogQ3VpQ29tYmluZWRQYXJ0QmxvY2sge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IGJsb2NrSWQsXG4gICAgICAgICAgICB0eXBlOiBDT01CSU5FRF9URVhUX0JMT0NLX1BBUlQsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogdGhpcy5kYXRhLmlkLFxuICAgICAgICAgICAgICAgIHBhcmVudFR5cGU6IENPTUJJTkVEX1RFWFRfQkxPQ0tfTkFNRVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TXV0YXRpb25BY3Rpb25zKG11dGF0aW9uTGlzdDogTXV0YXRpb25SZWNvcmRbXSk6IEN1aU11dGF0aW9uQWN0aW9ucyB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRFbGVtZW50cyA9IG5ldyBTZXQ8SFRNTEVsZW1lbnQ+KCk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRFbGVtZW50c0lkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBjb25zdCBjaGFuZ2VkT3V0c2lkZUVsZW1lbnRzOiBOb2RlW10gPSBbXTtcblxuICAgICAgICB0aGlzLmxhc3RCbG9ja0VsZW1lbnQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgbXV0YXRpb25MaXN0LmZvckVhY2goKG11dGF0aW9uOiBNdXRhdGlvblJlY29yZCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVVcGRhdGVkQmxvY2tzKG11dGF0aW9uLCB1cGRhdGVkRWxlbWVudHMsIGNoYW5nZWRPdXRzaWRlRWxlbWVudHMpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVSZW1vdmVkQmxvY2tzKG11dGF0aW9uLCByZW1vdmVkRWxlbWVudHNJZHMpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5sYXN0QmxvY2tFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0QmxvY2tFbGVtZW50ID0gdGhpcy5sYXN0QmxvY2tFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgICAgICBsYXN0QmxvY2tFbGVtZW50LmFwcGVuZCguLi5jaGFuZ2VkT3V0c2lkZUVsZW1lbnRzKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXRUb0Jsb2Nrc0VuZChsYXN0QmxvY2tFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1cGRhdGVkRWxlbWVudHMsXG4gICAgICAgICAgICByZW1vdmVkRWxlbWVudHNJZHNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENhcmV0VG9CbG9ja3NFbmQoYmxvY2s6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KGJsb2NrLCBibG9jay5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UocmFuZ2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlVXBkYXRlZEJsb2NrcyhcbiAgICAgICAgbXV0YXRpb246IE11dGF0aW9uUmVjb3JkLFxuICAgICAgICB1cGRhdGVkRWxlbWVudHM6IFNldDxIVE1MRWxlbWVudD4sXG4gICAgICAgIG91dHNpZGVDaGFuZ2VzOiBOb2RlW11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgbGV0IGVsZW1lbnQgPSBtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKG11dGF0aW9uLnRhcmdldC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBtdXRhdGlvbi50YXJnZXQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNwYW4gPSBlbGVtZW50Py5jbG9zZXN0KCcuJyArIENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCkgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKHNwYW4pIHtcbiAgICAgICAgICAgIHVwZGF0ZWRFbGVtZW50cy5hZGQoc3Bhbik7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlc091dHNpZGVCbG9jayhlbGVtZW50LCBvdXRzaWRlQ2hhbmdlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VzT3V0c2lkZUJsb2NrKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvdXRzaWRlQ2hhbmdlczogTm9kZVtdKTogdm9pZCB7XG4gICAgICAgIGlmICghZWxlbWVudCB8fCB0aGlzLmxhc3RCbG9ja0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnQuY2hpbGROb2Rlcy5mb3JFYWNoKChibG9jaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tFbGVtZW50ID0gYmxvY2sgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChibG9ja0VsZW1lbnQuY2xhc3NMaXN0Py5jb250YWlucyhDT01CSU5FRF9URVhUX0JMT0NLX1BBUlQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0QmxvY2tFbGVtZW50ID0gYmxvY2tFbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvdXRzaWRlQ2hhbmdlcy5wdXNoKGJsb2NrKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRCbG9ja3Moc3BsaWNlZFBhcnRzOiBIVE1MRWxlbWVudFtdLCB1cGRhdGVkRWxlbWVudHM6IFNldDxIVE1MRWxlbWVudD4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFzcGxpY2VkUGFydHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhZGRlZEJsb2NrczogQ3VpQ29tYmluZWRQYXJ0QmxvY2tbXSA9IHNwbGljZWRQYXJ0cy5tYXAoKGJsb2NrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9ja0lkID0gYmxvY2suZGF0YXNldFsnaWQnXTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogYmxvY2tJZCxcbiAgICAgICAgICAgICAgICB0eXBlOiBDT01CSU5FRF9URVhUX0JMT0NLX1BBUlQsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBibG9jay5pbm5lckhUTUwsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB0aGlzLmRhdGEuaWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudFR5cGU6IENPTUJJTkVEX1RFWFRfQkxPQ0tfTkFNRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHByZXZpb3VzRWxlbWVudCA9IHVwZGF0ZWRFbGVtZW50cy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICAgIGNvbnN0IGlkID0gcHJldmlvdXNFbGVtZW50Py5kYXRhc2V0WydpZCddO1xuICAgICAgICBjb25zdCBpbmRleCA9IE51bWJlcihwcmV2aW91c0VsZW1lbnQ/LmRhdGFzZXRbJ2luZGV4J10pICsgMTtcbiAgICAgICAgY29uc3QgYmxvY2tJbmRleCA9IHRoaXMuZGF0YS50ZXh0QmxvY2tzLmZpbmRJbmRleCgoYmxvY2spID0+IGJsb2NrLmlkID09PSBpZCk7XG5cbiAgICAgICAgdGhpcy5kYXRhLnRleHRCbG9ja3Muc3BsaWNlKGJsb2NrSW5kZXgsIDAsIC4uLmFkZGVkQmxvY2tzKTtcbiAgICAgICAgdGhpcy5hcGkuZXZlbnRzLmVtaXQoQ09NQklORURfVEVYVF9CTE9DS19BRERFRCwge1xuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBibG9ja0luZGV4LFxuICAgICAgICAgICAgYmxvY2tzOiBhZGRlZEJsb2NrcyxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YS50ZXh0QmxvY2tzXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQmxvY2tzKHVwZGF0ZWRFbGVtZW50czogU2V0PEhUTUxFbGVtZW50Pik6IHZvaWQge1xuICAgICAgICBpZiAoIXVwZGF0ZWRFbGVtZW50cy5zaXplKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVkQmxvY2tzID0gWy4uLnVwZGF0ZWRFbGVtZW50cy52YWx1ZXMoKV0ubWFwKChibG9jaykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogYmxvY2suZGF0YXNldFsnaWQnXSxcbiAgICAgICAgICAgICAgICB0eXBlOiBDT01CSU5FRF9URVhUX0JMT0NLX1BBUlQsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBibG9jay5pbm5lckhUTUwsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB0aGlzLmRhdGEuaWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudFR5cGU6IENPTUJJTkVEX1RFWFRfQkxPQ0tfTkFNRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYXBpLmV2ZW50cy5lbWl0KENPTUJJTkVEX1RFWFRfQkxPQ0tfVVBEQVRFRCwgdXBkYXRlZEJsb2Nrcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSZW1vdmVkQmxvY2tzKG11dGF0aW9uOiBNdXRhdGlvblJlY29yZCwgcmVtb3ZlZEVsZW1lbnRzSWRzOiBTZXQ8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICBpZiAobXV0YXRpb24ucmVtb3ZlZE5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbXV0YXRpb24ucmVtb3ZlZE5vZGVzLmZvckVhY2goKG5vZGU6IE5vZGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSWQgPSAobm9kZSBhcyBIVE1MRWxlbWVudCkuZGF0YXNldFsnaWQnXTtcblxuICAgICAgICAgICAgaWYgKCFibG9ja0lkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZW1vdmVkRWxlbWVudHNJZHMuYWRkKGJsb2NrSWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUJsb2NrcyhpZHM6IFNldDxzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIGlmICghaWRzLnNpemUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlbW92ZWRFbGVtZW50SWRzID0gWy4uLmlkcy52YWx1ZXMoKV07XG5cbiAgICAgICAgdGhpcy5kYXRhLnRleHRCbG9ja3MgPSB0aGlzLmRhdGEudGV4dEJsb2Nrcy5maWx0ZXIoKGJsb2NrKSA9PiAhaWRzLmhhcyhibG9jay5pZCB8fCAnJykpO1xuICAgICAgICB0aGlzLmFwaS5ldmVudHMuZW1pdChDT01CSU5FRF9URVhUX0JMT0NLX1JFTU9WRUQsIHJlbW92ZWRFbGVtZW50SWRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZShibG9ja3M6IEN1aUNvbWJpbmVkUGFydEJsb2NrW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFibG9ja3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBibG9ja3MuZm9yRWFjaCgoYmxvY2s6IEN1aUNvbWJpbmVkUGFydEJsb2NrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0RWxlbWVudCA9IHRoaXMuY3JlYXRlQmxvY2soYmxvY2suaWQgfHwgZ2VuZXJhdGVJZCgpLCBibG9jay5kYXRhLnRleHQpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMud3JhcHBlcikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMud3JhcHBlci5xdWVyeVNlbGVjdG9yKCcuJyArIENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXIuYXBwZW5kKHRleHRFbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy53cmFwcGVyLnJlcGxhY2VDaGlsZHJlbih0ZXh0RWxlbWVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hcGkuZXZlbnRzLmVtaXQoQ09NQklORURfVEVYVF9CTE9DS19BRERFRCwge1xuICAgICAgICAgICAgICAgIGJsb2Nrc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQmxvY2soaWQ6IHN0cmluZywgdGV4dDogc3RyaW5nKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5UQUcpO1xuICAgICAgICB0ZXh0RWxlbWVudC5jbGFzc0xpc3QuYWRkKENPTUJJTkVEX1RFWFRfQkxPQ0tfUEFSVCk7XG4gICAgICAgIHRleHRFbGVtZW50LmlubmVySFRNTCA9IHRleHQ7XG4gICAgICAgIHRleHRFbGVtZW50LmRhdGFzZXRbJ2lkJ10gPSBpZDtcblxuICAgICAgICByZXR1cm4gdGV4dEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb252ZXJ0RGVmYXVsdERhdGFUb0N1c3RvbShkYXRhOiB7IHRleHQ6IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEudGV4dEJsb2NrcyA9IGRhdGEubWFwKChibG9jaykgPT4ge1xuICAgICAgICAgICAgICAgIGJsb2NrLmlkID0gZ2VuZXJhdGVJZCgpO1xuICAgICAgICAgICAgICAgIGJsb2NrLmRhdGEucGFyZW50SWQgPSB0aGlzLmRhdGEuaWQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYmxvY2s7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZGF0YS50ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGRhdGEudGV4dCk7XG4gICAgICAgIGxldCBlbGVtZW50Q29udGVudCA9ICcnO1xuXG4gICAgICAgIGZyYWdtZW50LmNoaWxkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudENvbnRlbnQgKz0gbm9kZS50ZXh0Q29udGVudDtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWxlbWVudENvbnRlbnQgKz0gKG5vZGUgYXMgSFRNTEVsZW1lbnQpLmlubmVySFRNTDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcGFydHMgPSBlbGVtZW50Q29udGVudC5sZW5ndGggPCBTUExJVF9NQVhfTEVOR1RIID8gW2VsZW1lbnRDb250ZW50XSA6IHNwbGl0SFRNTChlbGVtZW50Q29udGVudCk7XG5cbiAgICAgICAgcGFydHMuZm9yRWFjaCgocGFydDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9ja09iamVjdCA9IHRoaXMuZ2V0QmxvY2tQYXJ0T2JqZWN0KGdlbmVyYXRlSWQoKSwgcGFydCk7XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YS50ZXh0QmxvY2tzLnB1c2goYmxvY2tPYmplY3QpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrSXNFZGl0b3JFbXB0eSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLndyYXBwZXIgfHwgdGhpcy53cmFwcGVyLmNoaWxkcmVuLmxlbmd0aCA+IHRoaXMuTUFYX0NISUxEX0NPVU5UX0ZPUl9FTVBUWSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMud3JhcHBlci5jaGlsZHJlbi5pdGVtKDApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBpc0l0ZW1FbXB0eSA9ICFpdGVtLnRleHRDb250ZW50Py5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy53cmFwcGVyLmRhdGFzZXRbJ2VtcHR5J10gPSBgJHtpc0l0ZW1FbXB0eX1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGxhY2Vob2xkZXIoY29uZmlnOiBUb29sQ29uZmlnKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25maWcucmVhZG9ubHlQbGFjZWhvbGRlciA/PyBERUZBVUxUX1JFQURPTkxZX1BMQUNFSE9MREVSO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZy5wbGFjZWhvbGRlciA/PyBERUZBVUxUX1BMQUNFSE9MREVSO1xuICAgIH1cbn1cbiJdfQ==
@@ -7,11 +7,11 @@ export class CuiRoleMarker extends CuiCustomMarkerTool {
7
7
  render() {
8
8
  super.render();
9
9
  /* eslint-disable */
10
- this.button.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="-3 -3 24 24" fill="none">
11
- <path d="M13.3335 17.5V15.8333C13.3335 14.9493 12.9823 14.1014 12.3572 13.4763C11.7321 12.8512 10.8842 12.5 10.0002 12.5H4.16683C3.28277 12.5 2.43493 12.8512 1.80981 13.4763C1.18469 14.1014 0.833496 14.9493 0.833496 15.8333V17.5M16.6668 6.66667V11.6667M19.1668 9.16667H14.1668M10.4168 5.83333C10.4168 7.67428 8.92445 9.16667 7.0835 9.16667C5.24255 9.16667 3.75016 7.67428 3.75016 5.83333C3.75016 3.99238 5.24255 2.5 7.0835 2.5C8.92445 2.5 10.4168 3.99238 10.4168 5.83333Z" stroke="#595E6A" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
10
+ this.button.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="-3 -3 24 24" fill="none">
11
+ <path d="M13.3335 17.5V15.8333C13.3335 14.9493 12.9823 14.1014 12.3572 13.4763C11.7321 12.8512 10.8842 12.5 10.0002 12.5H4.16683C3.28277 12.5 2.43493 12.8512 1.80981 13.4763C1.18469 14.1014 0.833496 14.9493 0.833496 15.8333V17.5M16.6668 6.66667V11.6667M19.1668 9.16667H14.1668M10.4168 5.83333C10.4168 7.67428 8.92445 9.16667 7.0835 9.16667C5.24255 9.16667 3.75016 7.67428 3.75016 5.83333C3.75016 3.99238 5.24255 2.5 7.0835 2.5C8.92445 2.5 10.4168 3.99238 10.4168 5.83333Z" stroke="#595E6A" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
12
12
  </svg>`;
13
13
  /* eslint-enable */
14
14
  return this.button;
15
15
  }
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1tYXJrZXIudG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL3Rvb2xzL3JvbGUtbWFya2VyLnRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxtQkFBbUI7SUFHbEQsWUFBWSxJQUFrQztRQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFIWSxVQUFLLEdBQUcsYUFBYSxDQUFDO0lBSWxELENBQUM7SUFFZSxNQUFNO1FBQ2xCLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVmLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRzs7ZUFFakIsQ0FBQztRQUNSLG1CQUFtQjtRQUVuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJbmxpbmVUb29sQ29uc3RydWN0b3JPcHRpb25zIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcclxuXHJcbmltcG9ydCB7IEN1aUN1c3RvbU1hcmtlclRvb2wgfSBmcm9tICcuL2N1c3RvbS1tYXJrZXIudG9vbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgQ3VpUm9sZU1hcmtlciBleHRlbmRzIEN1aUN1c3RvbU1hcmtlclRvb2wge1xyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IENMQVNTID0gJ3JvbGUtbWFya2VyJztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBJbmxpbmVUb29sQ29uc3RydWN0b3JPcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG92ZXJyaWRlIHJlbmRlcigpOiBIVE1MQnV0dG9uRWxlbWVudCB7XHJcbiAgICAgICAgc3VwZXIucmVuZGVyKCk7XHJcblxyXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAgICAgdGhpcy5idXR0b24uaW5uZXJIVE1MID0gYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCItMyAtMyAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMzMzNSAxNy41VjE1LjgzMzNDMTMuMzMzNSAxNC45NDkzIDEyLjk4MjMgMTQuMTAxNCAxMi4zNTcyIDEzLjQ3NjNDMTEuNzMyMSAxMi44NTEyIDEwLjg4NDIgMTIuNSAxMC4wMDAyIDEyLjVINC4xNjY4M0MzLjI4Mjc3IDEyLjUgMi40MzQ5MyAxMi44NTEyIDEuODA5ODEgMTMuNDc2M0MxLjE4NDY5IDE0LjEwMTQgMC44MzM0OTYgMTQuOTQ5MyAwLjgzMzQ5NiAxNS44MzMzVjE3LjVNMTYuNjY2OCA2LjY2NjY3VjExLjY2NjdNMTkuMTY2OCA5LjE2NjY3SDE0LjE2NjhNMTAuNDE2OCA1LjgzMzMzQzEwLjQxNjggNy42NzQyOCA4LjkyNDQ1IDkuMTY2NjcgNy4wODM1IDkuMTY2NjdDNS4yNDI1NSA5LjE2NjY3IDMuNzUwMTYgNy42NzQyOCAzLjc1MDE2IDUuODMzMzNDMy43NTAxNiAzLjk5MjM4IDUuMjQyNTUgMi41IDcuMDgzNSAyLjVDOC45MjQ0NSAyLjUgMTAuNDE2OCAzLjk5MjM4IDEwLjQxNjggNS44MzMzM1pcIiBzdHJva2U9XCIjNTk1RTZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgIDwvc3ZnPmA7XHJcbiAgICAgICAgLyogZXNsaW50LWVuYWJsZSAqL1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5idXR0b247XHJcbiAgICB9XHJcbn1cclxuIl19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1tYXJrZXIudG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL3Rvb2xzL3JvbGUtbWFya2VyLnRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxtQkFBbUI7SUFHbEQsWUFBWSxJQUFrQztRQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFIWSxVQUFLLEdBQUcsYUFBYSxDQUFDO0lBSWxELENBQUM7SUFFZSxNQUFNO1FBQ2xCLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVmLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRzs7ZUFFakIsQ0FBQztRQUNSLG1CQUFtQjtRQUVuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJbmxpbmVUb29sQ29uc3RydWN0b3JPcHRpb25zIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcblxuaW1wb3J0IHsgQ3VpQ3VzdG9tTWFya2VyVG9vbCB9IGZyb20gJy4vY3VzdG9tLW1hcmtlci50b29sJztcblxuZXhwb3J0IGNsYXNzIEN1aVJvbGVNYXJrZXIgZXh0ZW5kcyBDdWlDdXN0b21NYXJrZXJUb29sIHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgQ0xBU1MgPSAncm9sZS1tYXJrZXInO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogSW5saW5lVG9vbENvbnN0cnVjdG9yT3B0aW9ucykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVuZGVyKCk6IEhUTUxCdXR0b25FbGVtZW50IHtcbiAgICAgICAgc3VwZXIucmVuZGVyKCk7XG5cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAgICAgdGhpcy5idXR0b24uaW5uZXJIVE1MID0gYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCItMyAtMyAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzUgMTcuNVYxNS44MzMzQzEzLjMzMzUgMTQuOTQ5MyAxMi45ODIzIDE0LjEwMTQgMTIuMzU3MiAxMy40NzYzQzExLjczMjEgMTIuODUxMiAxMC44ODQyIDEyLjUgMTAuMDAwMiAxMi41SDQuMTY2ODNDMy4yODI3NyAxMi41IDIuNDM0OTMgMTIuODUxMiAxLjgwOTgxIDEzLjQ3NjNDMS4xODQ2OSAxNC4xMDE0IDAuODMzNDk2IDE0Ljk0OTMgMC44MzM0OTYgMTUuODMzM1YxNy41TTE2LjY2NjggNi42NjY2N1YxMS42NjY3TTE5LjE2NjggOS4xNjY2N0gxNC4xNjY4TTEwLjQxNjggNS44MzMzM0MxMC40MTY4IDcuNjc0MjggOC45MjQ0NSA5LjE2NjY3IDcuMDgzNSA5LjE2NjY3QzUuMjQyNTUgOS4xNjY2NyAzLjc1MDE2IDcuNjc0MjggMy43NTAxNiA1LjgzMzMzQzMuNzUwMTYgMy45OTIzOCA1LjI0MjU1IDIuNSA3LjA4MzUgMi41QzguOTI0NDUgMi41IDEwLjQxNjggMy45OTIzOCAxMC40MTY4IDUuODMzMzNaXCIgc3Ryb2tlPVwiIzU5NUU2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgPC9zdmc+YDtcbiAgICAgICAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG4gICAgICAgIHJldHVybiB0aGlzLmJ1dHRvbjtcbiAgICB9XG59XG4iXX0=
@@ -11,4 +11,4 @@ export class CuiToolMarker extends CuiCustomMarkerTool {
11
11
  return this.button;
12
12
  }
13
13
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1tYXJrZXIudG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL3Rvb2xzL3Rvb2wtbWFya2VyLnRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxtQkFBbUI7SUFHbEQsWUFBWSxJQUFrQztRQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFIWSxVQUFLLEdBQUcsYUFBYSxDQUFDO0lBSWxELENBQUM7SUFFZSxNQUFNO1FBQ2xCLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVmLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztZQUNqQix1MERBQXUwRCxDQUFDO1FBRTUwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJbmxpbmVUb29sQ29uc3RydWN0b3JPcHRpb25zIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcclxuXHJcbmltcG9ydCB7IEN1aUN1c3RvbU1hcmtlclRvb2wgfSBmcm9tICcuL2N1c3RvbS1tYXJrZXIudG9vbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgQ3VpVG9vbE1hcmtlciBleHRlbmRzIEN1aUN1c3RvbU1hcmtlclRvb2wge1xyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IENMQVNTID0gJ3Rvb2wtbWFya2VyJztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBJbmxpbmVUb29sQ29uc3RydWN0b3JPcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG92ZXJyaWRlIHJlbmRlcigpOiBIVE1MQnV0dG9uRWxlbWVudCB7XHJcbiAgICAgICAgc3VwZXIucmVuZGVyKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYnV0dG9uLmlubmVySFRNTCA9XHJcbiAgICAgICAgICAgICc8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCItMiAtMyAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxnIGlkPVwidGVjaG5vbG9naWVzLXRvb2xzXCI+PHBhdGggaWQ9XCJWZWN0b3JcIiBkPVwiTTE2LjM1ODEgMTUuMzk2NkwxNi4zNTgxIDExLjQ3MjlDMTYuMzU4MSAxMS40MTU4IDE2LjM0NjkgMTEuMzU5MiAxNi4zMjUgMTEuMzA2NEMxNi4zMDMxIDExLjI1MzYgMTYuMjcxMSAxMS4yMDU2IDE2LjIzMDcgMTEuMTY1MkMxNi4xOTAzIDExLjEyNDggMTYuMTQyMyAxMS4wOTI4IDE2LjA4OTUgMTEuMDcwOUMxNi4wMzY4IDExLjA0OTEgMTUuOTgwMiAxMS4wMzc4IDE1LjkyMyAxMS4wMzc4SDEzLjI1NzRMMTMuMjU5MyAxMS4wMzcyQzEzLjIwMDcgMTEuMDM0OCAxMy4xNDIyIDExLjA0NDMgMTMuMDg3NCAxMS4wNjUxQzEzLjAzMjYgMTEuMDg1OSAxMi45ODI1IDExLjExNzYgMTIuOTQwMiAxMS4xNTgyQzEyLjg5OCAxMS4xOTg5IDEyLjg2NDMgMTEuMjQ3NiAxMi44NDE0IDExLjMwMTZDMTIuODE4NCAxMS4zNTU2IDEyLjgwNjYgMTEuNDEzNiAxMi44MDY3IDExLjQ3MjNMMTIuODA2NyAxNS4zOTcyTTE0LjU4NCAxMS4wMzM0VjUuODMzNE0xNi4zNTgyIDE1LjEwMjJMMTYuMzU4MiAxNy4wNjQ3QzE2LjM1ODMgMTcuMTIzNCAxNi4zNDY1IDE3LjE4MTQgMTYuMzIzNSAxNy4yMzU0QzE2LjMwMDYgMTcuMjg5MyAxNi4yNjY5IDE3LjMzODEgMTYuMjI0NyAxNy4zNzg3QzE2LjE4MjQgMTcuNDE5NCAxNi4xMzIzIDE3LjQ1MTEgMTYuMDc3NSAxNy40NzE5QzE2LjAyMjcgMTcuNDkyNyAxNS45NjQyIDE3LjUwMjIgMTUuOTA1NiAxNy40OTk4TDE1LjkwNzUgMTcuNDk5MkgxMy4yNDE5QzEzLjE4NDcgMTcuNDk5MiAxMy4xMjgyIDE3LjQ4NzkgMTMuMDc1NCAxNy40NjZDMTMuMDIyNiAxNy40NDQyIDEyLjk3NDYgMTcuNDEyMSAxMi45MzQyIDE3LjM3MTdDMTIuODkzOCAxNy4zMzEzIDEyLjg2MTggMTcuMjgzNCAxMi44Mzk5IDE3LjIzMDZDMTIuODE4IDE3LjE3NzggMTIuODA2OCAxNy4xMjEyIDEyLjgwNjggMTcuMDY0MUwxMi44MDY4IDE1LjEwMjJNNS41OTYzNiA5Ljg4NzE5TDUuNTk2MzYgMTUuOTI4NEM1LjU5NjI3IDE2LjA4NzIgNS42Mjc0OCAxNi4yNDQ1IDUuNjg4MjEgMTYuMzkxMkM1Ljc0ODk1IDE2LjUzNzkgNS44MzggMTYuNjcxMyA1Ljk1MDMgMTYuNzgzNkM2LjA2MjU5IDE2Ljg5NTkgNi4xOTU5MSAxNi45ODQ5IDYuMzQyNjUgMTcuMDQ1NkM2LjQ4OTM4IDE3LjEwNjQgNi42NDY2NSAxNy4xMzc2IDYuODA1NDUgMTcuMTM3NUM3LjEyNTg5IDE3LjEzNzUgNy40MzMxOCAxNy4wMTAxIDcuNjU5NzYgMTYuNzgzNkM3Ljg4NjM0IDE2LjU1NyA4LjAxMzY1IDE2LjI0OTcgOC4wMTM3IDE1LjkyOTNMOC4wMTI4NCA5Ljg4NzE5QzkuMjkzMjkgOS4zMjc5MyAxMC40Mjk4IDguMDUwNDcgMTAuNDI5OCA2LjU2MzY3QzEwLjQzMDIgNS4wNzcyOSA5LjIyMTk0IDMuNTQyNjQgOC4wMTI4NCAzLjI0MUw4LjAxMzI3IDUuODM5MDdMNi44MDQ2IDcuMjg4N0w1LjU5NjM2IDUuODM4NjRMNS41OTYzNiAzLjI0MUM0LjM4NzY5IDMuNTQzMDYgMy4xNzkwMiA1LjA3NzI5IDMuMTc5MDIgNi41NjQxQzMuMTc5NDQgOC4wNTA0OCA0LjMxNTkxIDkuMzI3OTMgNS41OTYzNiA5Ljg4NzE5Wk0xNC45OTE2IDUuNTY1NDVMMTQuMTI1MyA1LjU2NTQ1TDEzLjI1ODkgNC42OTkwOUwxMy42OTIxIDIuNTMzMkwxNS40MjQ4IDIuNTMzMkwxNS44NTggNC42OTkwOUwxNC45OTE2IDUuNTY1NDVaXCIgc3Ryb2tlPVwiIzU5NUU2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L2c+PC9zdmc+JztcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYnV0dG9uO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1tYXJrZXIudG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL3Rvb2xzL3Rvb2wtbWFya2VyLnRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxtQkFBbUI7SUFHbEQsWUFBWSxJQUFrQztRQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFIWSxVQUFLLEdBQUcsYUFBYSxDQUFDO0lBSWxELENBQUM7SUFFZSxNQUFNO1FBQ2xCLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVmLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztZQUNqQix1MERBQXUwRCxDQUFDO1FBRTUwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJbmxpbmVUb29sQ29uc3RydWN0b3JPcHRpb25zIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcblxuaW1wb3J0IHsgQ3VpQ3VzdG9tTWFya2VyVG9vbCB9IGZyb20gJy4vY3VzdG9tLW1hcmtlci50b29sJztcblxuZXhwb3J0IGNsYXNzIEN1aVRvb2xNYXJrZXIgZXh0ZW5kcyBDdWlDdXN0b21NYXJrZXJUb29sIHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgQ0xBU1MgPSAndG9vbC1tYXJrZXInO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogSW5saW5lVG9vbENvbnN0cnVjdG9yT3B0aW9ucykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVuZGVyKCk6IEhUTUxCdXR0b25FbGVtZW50IHtcbiAgICAgICAgc3VwZXIucmVuZGVyKCk7XG5cbiAgICAgICAgdGhpcy5idXR0b24uaW5uZXJIVE1MID1cbiAgICAgICAgICAgICc8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCItMiAtMyAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxnIGlkPVwidGVjaG5vbG9naWVzLXRvb2xzXCI+PHBhdGggaWQ9XCJWZWN0b3JcIiBkPVwiTTE2LjM1ODEgMTUuMzk2NkwxNi4zNTgxIDExLjQ3MjlDMTYuMzU4MSAxMS40MTU4IDE2LjM0NjkgMTEuMzU5MiAxNi4zMjUgMTEuMzA2NEMxNi4zMDMxIDExLjI1MzYgMTYuMjcxMSAxMS4yMDU2IDE2LjIzMDcgMTEuMTY1MkMxNi4xOTAzIDExLjEyNDggMTYuMTQyMyAxMS4wOTI4IDE2LjA4OTUgMTEuMDcwOUMxNi4wMzY4IDExLjA0OTEgMTUuOTgwMiAxMS4wMzc4IDE1LjkyMyAxMS4wMzc4SDEzLjI1NzRMMTMuMjU5MyAxMS4wMzcyQzEzLjIwMDcgMTEuMDM0OCAxMy4xNDIyIDExLjA0NDMgMTMuMDg3NCAxMS4wNjUxQzEzLjAzMjYgMTEuMDg1OSAxMi45ODI1IDExLjExNzYgMTIuOTQwMiAxMS4xNTgyQzEyLjg5OCAxMS4xOTg5IDEyLjg2NDMgMTEuMjQ3NiAxMi44NDE0IDExLjMwMTZDMTIuODE4NCAxMS4zNTU2IDEyLjgwNjYgMTEuNDEzNiAxMi44MDY3IDExLjQ3MjNMMTIuODA2NyAxNS4zOTcyTTE0LjU4NCAxMS4wMzM0VjUuODMzNE0xNi4zNTgyIDE1LjEwMjJMMTYuMzU4MiAxNy4wNjQ3QzE2LjM1ODMgMTcuMTIzNCAxNi4zNDY1IDE3LjE4MTQgMTYuMzIzNSAxNy4yMzU0QzE2LjMwMDYgMTcuMjg5MyAxNi4yNjY5IDE3LjMzODEgMTYuMjI0NyAxNy4zNzg3QzE2LjE4MjQgMTcuNDE5NCAxNi4xMzIzIDE3LjQ1MTEgMTYuMDc3NSAxNy40NzE5QzE2LjAyMjcgMTcuNDkyNyAxNS45NjQyIDE3LjUwMjIgMTUuOTA1NiAxNy40OTk4TDE1LjkwNzUgMTcuNDk5MkgxMy4yNDE5QzEzLjE4NDcgMTcuNDk5MiAxMy4xMjgyIDE3LjQ4NzkgMTMuMDc1NCAxNy40NjZDMTMuMDIyNiAxNy40NDQyIDEyLjk3NDYgMTcuNDEyMSAxMi45MzQyIDE3LjM3MTdDMTIuODkzOCAxNy4zMzEzIDEyLjg2MTggMTcuMjgzNCAxMi44Mzk5IDE3LjIzMDZDMTIuODE4IDE3LjE3NzggMTIuODA2OCAxNy4xMjEyIDEyLjgwNjggMTcuMDY0MUwxMi44MDY4IDE1LjEwMjJNNS41OTYzNiA5Ljg4NzE5TDUuNTk2MzYgMTUuOTI4NEM1LjU5NjI3IDE2LjA4NzIgNS42Mjc0OCAxNi4yNDQ1IDUuNjg4MjEgMTYuMzkxMkM1Ljc0ODk1IDE2LjUzNzkgNS44MzggMTYuNjcxMyA1Ljk1MDMgMTYuNzgzNkM2LjA2MjU5IDE2Ljg5NTkgNi4xOTU5MSAxNi45ODQ5IDYuMzQyNjUgMTcuMDQ1NkM2LjQ4OTM4IDE3LjEwNjQgNi42NDY2NSAxNy4xMzc2IDYuODA1NDUgMTcuMTM3NUM3LjEyNTg5IDE3LjEzNzUgNy40MzMxOCAxNy4wMTAxIDcuNjU5NzYgMTYuNzgzNkM3Ljg4NjM0IDE2LjU1NyA4LjAxMzY1IDE2LjI0OTcgOC4wMTM3IDE1LjkyOTNMOC4wMTI4NCA5Ljg4NzE5QzkuMjkzMjkgOS4zMjc5MyAxMC40Mjk4IDguMDUwNDcgMTAuNDI5OCA2LjU2MzY3QzEwLjQzMDIgNS4wNzcyOSA5LjIyMTk0IDMuNTQyNjQgOC4wMTI4NCAzLjI0MUw4LjAxMzI3IDUuODM5MDdMNi44MDQ2IDcuMjg4N0w1LjU5NjM2IDUuODM4NjRMNS41OTYzNiAzLjI0MUM0LjM4NzY5IDMuNTQzMDYgMy4xNzkwMiA1LjA3NzI5IDMuMTc5MDIgNi41NjQxQzMuMTc5NDQgOC4wNTA0OCA0LjMxNTkxIDkuMzI3OTMgNS41OTYzNiA5Ljg4NzE5Wk0xNC45OTE2IDUuNTY1NDVMMTQuMTI1MyA1LjU2NTQ1TDEzLjI1ODkgNC42OTkwOUwxMy42OTIxIDIuNTMzMkwxNS40MjQ4IDIuNTMzMkwxNS44NTggNC42OTkwOUwxNC45OTE2IDUuNTY1NDVaXCIgc3Ryb2tlPVwiIzU5NUU2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L2c+PC9zdmc+JztcblxuICAgICAgICByZXR1cm4gdGhpcy5idXR0b247XG4gICAgfVxufVxuIl19
@@ -14,4 +14,4 @@ function copyTextToClipboardFallback(text) {
14
14
  document.execCommand('copy');
15
15
  document.body.removeChild(textarea);
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS10ZXh0LXRvLWNsaXBib2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL3V0aWxzL2NvcHktdGV4dC10by1jbGlwYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQVk7SUFDNUMsSUFBSSxNQUFNLEVBQUUsU0FBUyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLFNBQVMsMkJBQTJCLENBQUMsSUFBWTtJQUM3QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXBELFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4QyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFbEIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNvcHlUZXh0VG9DbGlwYm9hcmQodGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAod2luZG93Py5uYXZpZ2F0b3IuY2xpcGJvYXJkICYmIHdpbmRvdy5pc1NlY3VyZUNvbnRleHQpIHtcclxuICAgICAgICB3aW5kb3cubmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29weVRleHRUb0NsaXBib2FyZEZhbGxiYWNrKHRleHQpO1xyXG59XHJcblxyXG4vLyBUT0RPOiBSZW1vdmUgd2hlbiBzd2l0Y2ggdG8gaHR0cHNcclxuZnVuY3Rpb24gY29weVRleHRUb0NsaXBib2FyZEZhbGxiYWNrKHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdGV4dGFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xyXG5cclxuICAgIHRleHRhcmVhLnZhbHVlID0gdGV4dDtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dGFyZWEpO1xyXG4gICAgdGV4dGFyZWEuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xyXG4gICAgdGV4dGFyZWEuc2VsZWN0KCk7XHJcblxyXG4gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dGFyZWEpO1xyXG59XHJcbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS10ZXh0LXRvLWNsaXBib2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL3V0aWxzL2NvcHktdGV4dC10by1jbGlwYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQVk7SUFDNUMsSUFBSSxNQUFNLEVBQUUsU0FBUyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLFNBQVMsMkJBQTJCLENBQUMsSUFBWTtJQUM3QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXBELFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4QyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFbEIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNvcHlUZXh0VG9DbGlwYm9hcmQodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHdpbmRvdz8ubmF2aWdhdG9yLmNsaXBib2FyZCAmJiB3aW5kb3cuaXNTZWN1cmVDb250ZXh0KSB7XG4gICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgICB9XG5cbiAgICBjb3B5VGV4dFRvQ2xpcGJvYXJkRmFsbGJhY2sodGV4dCk7XG59XG5cbi8vIFRPRE86IFJlbW92ZSB3aGVuIHN3aXRjaCB0byBodHRwc1xuZnVuY3Rpb24gY29weVRleHRUb0NsaXBib2FyZEZhbGxiYWNrKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcblxuICAgIHRleHRhcmVhLnZhbHVlID0gdGV4dDtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRhcmVhKTtcbiAgICB0ZXh0YXJlYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgdGV4dGFyZWEuc2VsZWN0KCk7XG5cbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dGFyZWEpO1xufVxuIl19
@@ -53,4 +53,4 @@ export function createEditorTools(config, resourceUrl) {
53
53
  ...(tools ?? {})
54
54
  };
55
55
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRvb2xzLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci91dGlscy9jcmVhdGUtdG9vbHMtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUFrQyxFQUFFLFdBQW9CO0lBQ3RGLE1BQU0sUUFBUSxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDbkUsTUFBTSxLQUFLLEdBQUcsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUV2RCxPQUFPO1FBQ0gsTUFBTSxFQUFFO1lBQ0osS0FBSyxFQUFFLGFBQWE7WUFDcEIsTUFBTSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixZQUFZLEVBQUUsQ0FBQzthQUNsQjtZQUNELEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDL0I7UUFDRCxJQUFJLEVBQUU7WUFDRixLQUFLLEVBQUUsV0FBVztZQUNsQixhQUFhLEVBQUUsSUFBSTtZQUNuQixNQUFNLEVBQUU7Z0JBQ0osWUFBWSxFQUFFLFdBQVc7YUFDNUI7WUFDRCxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzdCO1FBQ0QsUUFBUSxFQUFFO1lBQ04sS0FBSyxFQUFFLGVBQWU7WUFDdEIsTUFBTSxFQUFFO2dCQUNKLFFBQVE7Z0JBQ1IsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLElBQUksRUFBRSxVQUFVO2dCQUNoQixXQUFXLEVBQUUsaUJBQWlCO2FBQ2pDO1lBQ0QsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNqQztRQUNELEtBQUssRUFBRTtZQUNILEtBQUssRUFBRSxZQUFZO1lBQ25CLE1BQU0sRUFBRTtnQkFDSixRQUFRO2dCQUNSLEtBQUssRUFBRSxVQUFVO2dCQUNqQixJQUFJLEVBQUUsVUFBVTthQUNuQjtZQUNELEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDOUI7UUFDRCxLQUFLLEVBQUU7WUFDSCxLQUFLLEVBQUUsWUFBWTtZQUNuQixNQUFNLEVBQUU7Z0JBQ0osUUFBUTtnQkFDUixLQUFLLEVBQUUsVUFBVTtnQkFDakIsSUFBSSxFQUFFLFVBQVU7YUFDbkI7WUFDRCxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzlCO1FBQ0QsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7S0FDbkIsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEN1aVRvb2xzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEN1aUF0dGFjaGVzVG9vbCwgQ3VpSGVhZGVyVG9vbCwgQ3VpSW1hZ2VUb29sLCBDdWlMaXN0VG9vbCwgQ3VpVmlkZW9Ub29sIH0gZnJvbSAnLi4vdG9vbHMnO1xyXG5pbXBvcnQgeyBvcGVuRmlsZUluQnJvd3NlciB9IGZyb20gJy4vb3Blbi1maWxlLWluLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBzZXRMb2FkaW5nIH0gZnJvbSAnLi9zZXQtbG9hZGluZyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWRpdG9yVG9vbHMocmVzb3VyY2VVcmw6IHN0cmluZyk6IEN1aVRvb2xzO1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWRpdG9yVG9vbHMoY29uZmlnOiBQYXJ0aWFsPEN1aVRvb2xzPiwgcmVzb3VyY2VVcmw/OiBzdHJpbmcpOiBDdWlUb29scztcclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVkaXRvclRvb2xzKGNvbmZpZzogUGFydGlhbDxDdWlUb29scz4gfCBzdHJpbmcsIHJlc291cmNlVXJsPzogc3RyaW5nKTogQ3VpVG9vbHMge1xyXG4gICAgY29uc3QgZW5kcG9pbnQgPSB0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJyA/IGNvbmZpZyA6IHJlc291cmNlVXJsO1xyXG4gICAgY29uc3QgdG9vbHMgPSB0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJyA/IGNvbmZpZyA6IHt9O1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgIGNsYXNzOiBDdWlIZWFkZXJUb29sLFxyXG4gICAgICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgICAgIGxldmVsczogWzIsIDMsIDRdLFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdExldmVsOiAyXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC4uLih0b29scz8uWydoZWFkZXInXSA/PyB7fSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxpc3Q6IHtcclxuICAgICAgICAgICAgY2xhc3M6IEN1aUxpc3RUb29sLFxyXG4gICAgICAgICAgICBpbmxpbmVUb29sYmFyOiB0cnVlLFxyXG4gICAgICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRTdHlsZTogJ3Vub3JkZXJlZCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLi4uKHRvb2xzPy5bJ2xpc3QnXSA/PyB7fSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGF0dGFjaGVzOiB7XHJcbiAgICAgICAgICAgIGNsYXNzOiBDdWlBdHRhY2hlc1Rvb2wsXHJcbiAgICAgICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3Jlc291cmNlJyxcclxuICAgICAgICAgICAgICAgIHR5cGVzOiAnLnBkZiwuZG9jLC5kb2N4JyxcclxuICAgICAgICAgICAgICAgIGxvYWQ6IHNldExvYWRpbmcsXHJcbiAgICAgICAgICAgICAgICBmaWxlQ2xpY2tlZDogb3BlbkZpbGVJbkJyb3dzZXJcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLi4uKHRvb2xzPy5bJ2F0dGFjaGVzJ10gPz8ge30pXHJcbiAgICAgICAgfSxcclxuICAgICAgICB2aWRlbzoge1xyXG4gICAgICAgICAgICBjbGFzczogQ3VpVmlkZW9Ub29sLFxyXG4gICAgICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyZXNvdXJjZScsXHJcbiAgICAgICAgICAgICAgICBsb2FkOiBzZXRMb2FkaW5nXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC4uLih0b29scz8uWyd2aWRlbyddID8/IHt9KVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaW1hZ2U6IHtcclxuICAgICAgICAgICAgY2xhc3M6IEN1aUltYWdlVG9vbCxcclxuICAgICAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAncmVzb3VyY2UnLFxyXG4gICAgICAgICAgICAgICAgbG9hZDogc2V0TG9hZGluZ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAuLi4odG9vbHM/LlsnaW1hZ2UnXSA/PyB7fSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLih0b29scyA/PyB7fSlcclxuICAgIH07XHJcbn1cclxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRvb2xzLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci91dGlscy9jcmVhdGUtdG9vbHMtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUFrQyxFQUFFLFdBQW9CO0lBQ3RGLE1BQU0sUUFBUSxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDbkUsTUFBTSxLQUFLLEdBQUcsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUV2RCxPQUFPO1FBQ0gsTUFBTSxFQUFFO1lBQ0osS0FBSyxFQUFFLGFBQWE7WUFDcEIsTUFBTSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixZQUFZLEVBQUUsQ0FBQzthQUNsQjtZQUNELEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDL0I7UUFDRCxJQUFJLEVBQUU7WUFDRixLQUFLLEVBQUUsV0FBVztZQUNsQixhQUFhLEVBQUUsSUFBSTtZQUNuQixNQUFNLEVBQUU7Z0JBQ0osWUFBWSxFQUFFLFdBQVc7YUFDNUI7WUFDRCxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzdCO1FBQ0QsUUFBUSxFQUFFO1lBQ04sS0FBSyxFQUFFLGVBQWU7WUFDdEIsTUFBTSxFQUFFO2dCQUNKLFFBQVE7Z0JBQ1IsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLElBQUksRUFBRSxVQUFVO2dCQUNoQixXQUFXLEVBQUUsaUJBQWlCO2FBQ2pDO1lBQ0QsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNqQztRQUNELEtBQUssRUFBRTtZQUNILEtBQUssRUFBRSxZQUFZO1lBQ25CLE1BQU0sRUFBRTtnQkFDSixRQUFRO2dCQUNSLEtBQUssRUFBRSxVQUFVO2dCQUNqQixJQUFJLEVBQUUsVUFBVTthQUNuQjtZQUNELEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDOUI7UUFDRCxLQUFLLEVBQUU7WUFDSCxLQUFLLEVBQUUsWUFBWTtZQUNuQixNQUFNLEVBQUU7Z0JBQ0osUUFBUTtnQkFDUixLQUFLLEVBQUUsVUFBVTtnQkFDakIsSUFBSSxFQUFFLFVBQVU7YUFDbkI7WUFDRCxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzlCO1FBQ0QsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7S0FDbkIsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEN1aVRvb2xzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDdWlBdHRhY2hlc1Rvb2wsIEN1aUhlYWRlclRvb2wsIEN1aUltYWdlVG9vbCwgQ3VpTGlzdFRvb2wsIEN1aVZpZGVvVG9vbCB9IGZyb20gJy4uL3Rvb2xzJztcbmltcG9ydCB7IG9wZW5GaWxlSW5Ccm93c2VyIH0gZnJvbSAnLi9vcGVuLWZpbGUtaW4tYnJvd3Nlcic7XG5pbXBvcnQgeyBzZXRMb2FkaW5nIH0gZnJvbSAnLi9zZXQtbG9hZGluZyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0b3JUb29scyhyZXNvdXJjZVVybDogc3RyaW5nKTogQ3VpVG9vbHM7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWRpdG9yVG9vbHMoY29uZmlnOiBQYXJ0aWFsPEN1aVRvb2xzPiwgcmVzb3VyY2VVcmw/OiBzdHJpbmcpOiBDdWlUb29scztcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0b3JUb29scyhjb25maWc6IFBhcnRpYWw8Q3VpVG9vbHM+IHwgc3RyaW5nLCByZXNvdXJjZVVybD86IHN0cmluZyk6IEN1aVRvb2xzIHtcbiAgICBjb25zdCBlbmRwb2ludCA9IHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnID8gY29uZmlnIDogcmVzb3VyY2VVcmw7XG4gICAgY29uc3QgdG9vbHMgPSB0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJyA/IGNvbmZpZyA6IHt9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgaGVhZGVyOiB7XG4gICAgICAgICAgICBjbGFzczogQ3VpSGVhZGVyVG9vbCxcbiAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgIGxldmVsczogWzIsIDMsIDRdLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRMZXZlbDogMlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLih0b29scz8uWydoZWFkZXInXSA/PyB7fSlcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDoge1xuICAgICAgICAgICAgY2xhc3M6IEN1aUxpc3RUb29sLFxuICAgICAgICAgICAgaW5saW5lVG9vbGJhcjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRTdHlsZTogJ3Vub3JkZXJlZCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi4odG9vbHM/LlsnbGlzdCddID8/IHt9KVxuICAgICAgICB9LFxuICAgICAgICBhdHRhY2hlczoge1xuICAgICAgICAgICAgY2xhc3M6IEN1aUF0dGFjaGVzVG9vbCxcbiAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGZpZWxkOiAncmVzb3VyY2UnLFxuICAgICAgICAgICAgICAgIHR5cGVzOiAnLnBkZiwuZG9jLC5kb2N4JyxcbiAgICAgICAgICAgICAgICBsb2FkOiBzZXRMb2FkaW5nLFxuICAgICAgICAgICAgICAgIGZpbGVDbGlja2VkOiBvcGVuRmlsZUluQnJvd3NlclxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLih0b29scz8uWydhdHRhY2hlcyddID8/IHt9KVxuICAgICAgICB9LFxuICAgICAgICB2aWRlbzoge1xuICAgICAgICAgICAgY2xhc3M6IEN1aVZpZGVvVG9vbCxcbiAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGZpZWxkOiAncmVzb3VyY2UnLFxuICAgICAgICAgICAgICAgIGxvYWQ6IHNldExvYWRpbmdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi4odG9vbHM/LlsndmlkZW8nXSA/PyB7fSlcbiAgICAgICAgfSxcbiAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgIGNsYXNzOiBDdWlJbWFnZVRvb2wsXG4gICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3Jlc291cmNlJyxcbiAgICAgICAgICAgICAgICBsb2FkOiBzZXRMb2FkaW5nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4uKHRvb2xzPy5bJ2ltYWdlJ10gPz8ge30pXG4gICAgICAgIH0sXG4gICAgICAgIC4uLih0b29scyA/PyB7fSlcbiAgICB9O1xufVxuIl19