@mintplayer/ng-bootstrap 15.26.2 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1245) hide show
  1. package/accordion/src/accordion/accordion.component.d.ts +1 -1
  2. package/accordion/src/accordion-tab/accordion-tab.component.d.ts +1 -1
  3. package/alert/src/alert/alert.component.d.ts +1 -1
  4. package/badge/src/badge.component.d.ts +1 -1
  5. package/button-type/src/button-type/button-type.directive.d.ts +1 -1
  6. package/calendar/src/calendar.component.d.ts +1 -1
  7. package/card/src/card/card.component.d.ts +1 -1
  8. package/card/src/card-header/card-header.component.d.ts +1 -1
  9. package/carousel/src/carousel/carousel.component.d.ts +1 -1
  10. package/code-snippet/src/code-snippet.component.d.ts +1 -1
  11. package/copy/src/copy.directive.d.ts +1 -1
  12. package/datatable/src/datatable/datatable.component.d.ts +1 -1
  13. package/datatable/src/datatable-column/datatable-column.directive.d.ts +1 -1
  14. package/datepicker/src/datepicker.component.d.ts +1 -1
  15. package/dock/src/dock/dock.component.d.ts +1 -1
  16. package/dock/src/dock-pane-renderer/dock-pane-renderer.component.d.ts +1 -1
  17. package/dock/src/dock-panel/dock-panel.component.d.ts +1 -1
  18. package/dock/src/dock-panel-header/dock-panel-header.component.d.ts +2 -0
  19. package/dropdown/src/dropdown/dropdown.directive.d.ts +1 -1
  20. package/dropdown-menu/src/dropdown-item/dropdown-item.component.d.ts +1 -1
  21. package/dropdown-menu/src/dropdown-menu/dropdown-menu.component.d.ts +1 -1
  22. package/esm2022/accordion/src/accordion/accordion.component.mjs +27 -0
  23. package/esm2022/accordion/src/accordion-tab/accordion-tab.component.mjs +69 -0
  24. package/esm2022/accordion/src/accordion-tab-header/accordion-tab-header.component.mjs +22 -0
  25. package/esm2022/accordion/src/accordion.module.mjs +39 -0
  26. package/esm2022/alert/src/alert/alert.component.mjs +42 -0
  27. package/esm2022/alert/src/alert-close/alert-close.component.mjs +21 -0
  28. package/esm2022/alert/src/alert.module.mjs +28 -0
  29. package/esm2022/badge/src/badge.component.mjs +31 -0
  30. package/esm2022/badge/src/badge.module.mjs +19 -0
  31. package/esm2022/breadcrumb/src/breadcrumb/breadcrumb.component.mjs +14 -0
  32. package/esm2022/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.mjs +19 -0
  33. package/esm2022/breadcrumb/src/breadcrumb.module.mjs +20 -0
  34. package/esm2022/button-group/src/button-group/button-group.component.mjs +14 -0
  35. package/esm2022/button-group/src/button-group.module.mjs +19 -0
  36. package/esm2022/button-type/src/button-type/button-type.directive.mjs +31 -0
  37. package/esm2022/button-type/src/button-type/button-type.module.mjs +25 -0
  38. package/esm2022/calendar/src/calendar.component.mjs +112 -0
  39. package/esm2022/calendar/src/calendar.module.mjs +40 -0
  40. package/esm2022/calendar-month/src/pipes/month-name/month-name.module.mjs +25 -0
  41. package/esm2022/calendar-month/src/pipes/month-name/month-name.pipe.mjs +22 -0
  42. package/esm2022/calendar-month/src/pipes/weekday-name/weekday-name.module.mjs +25 -0
  43. package/esm2022/calendar-month/src/pipes/weekday-name/weekday-name.pipe.mjs +17 -0
  44. package/esm2022/calendar-month/src/service/calendar-month.service.mjs +95 -0
  45. package/esm2022/card/src/card/card.component.mjs +17 -0
  46. package/esm2022/card/src/card-header/card-header.component.mjs +17 -0
  47. package/esm2022/card/src/card.module.mjs +28 -0
  48. package/esm2022/carousel/src/carousel/carousel.component.mjs +138 -0
  49. package/esm2022/carousel/src/carousel-image/carousel-image.directive.mjs +25 -0
  50. package/esm2022/carousel/src/carousel.module.mjs +38 -0
  51. package/esm2022/close/src/close.component.mjs +22 -0
  52. package/esm2022/close/src/close.module.mjs +19 -0
  53. package/esm2022/code-snippet/src/code-snippet.component.mjs +35 -0
  54. package/esm2022/code-snippet/src/code-snippet.module.mjs +37 -0
  55. package/esm2022/context-menu/src/context-menu.directive.mjs +85 -0
  56. package/esm2022/context-menu/src/context-menu.module.mjs +35 -0
  57. package/esm2022/copy/src/copy.directive.mjs +46 -0
  58. package/esm2022/copy/src/copy.module.mjs +25 -0
  59. package/esm2022/datatable/src/datatable/datatable.component.mjs +58 -0
  60. package/esm2022/datatable/src/datatable-column/datatable-column.directive.mjs +20 -0
  61. package/esm2022/datatable/src/datatable.module.mjs +47 -0
  62. package/esm2022/datatable/src/row-template/row-template.directive.mjs +20 -0
  63. package/esm2022/datepicker/src/datepicker.component.mjs +50 -0
  64. package/esm2022/datepicker/src/datepicker.module.mjs +41 -0
  65. package/esm2022/dock/src/dock/dock.component.mjs +94 -0
  66. package/esm2022/dock/src/dock-pane-renderer/dock-pane-renderer.component.mjs +61 -0
  67. package/esm2022/dock/src/dock-panel/dock-panel.component.mjs +28 -0
  68. package/esm2022/dock/src/dock-panel-header/dock-panel-header.component.mjs +278 -0
  69. package/esm2022/dock/src/dock.module.mjs +64 -0
  70. package/esm2022/dock/src/services/dock/dock.service.mjs +57 -0
  71. package/esm2022/dropdown/src/dropdown/dropdown.directive.mjs +69 -0
  72. package/esm2022/dropdown/src/dropdown-menu/dropdown-menu.directive.mjs +115 -0
  73. package/esm2022/dropdown/src/dropdown-toggle/dropdown-toggle.directive.mjs +32 -0
  74. package/esm2022/dropdown/src/dropdown.module.mjs +44 -0
  75. package/esm2022/dropdown-divider/src/dropdown-divider.directive.mjs +20 -0
  76. package/esm2022/dropdown-divider/src/dropdown-divider.module.mjs +19 -0
  77. package/esm2022/dropdown-menu/src/dropdown-item/dropdown-item.component.mjs +20 -0
  78. package/esm2022/dropdown-menu/src/dropdown-menu/dropdown-menu.component.mjs +43 -0
  79. package/esm2022/dropdown-menu/src/dropdown-menu.module.mjs +27 -0
  80. package/esm2022/enhanced-paste/src/directive/enhanced-paste.directive.mjs +59 -0
  81. package/esm2022/enhanced-paste/src/enhanced-paste.module.mjs +25 -0
  82. package/esm2022/enum/src/service/enum.service.mjs +32 -0
  83. package/esm2022/file-upload/src/component/file-upload.component.mjs +90 -0
  84. package/esm2022/file-upload/src/directive/file-upload-template.directive.mjs +19 -0
  85. package/esm2022/file-upload/src/file-upload.module.mjs +51 -0
  86. package/esm2022/file-upload/src/pipes/format-bytes/format-bytes.pipe.mjs +24 -0
  87. package/esm2022/floating-labels/src/floating-labels/floating-label/floating-label.component.mjs +21 -0
  88. package/esm2022/floating-labels/src/floating-labels/floating-labels.module.mjs +19 -0
  89. package/esm2022/for/src/for.directive.mjs +39 -0
  90. package/esm2022/for/src/for.module.mjs +25 -0
  91. package/esm2022/form/src/form/form.component.mjs +21 -0
  92. package/esm2022/form/src/form-control/form-control.directive.mjs +20 -0
  93. package/esm2022/form/src/form-group/form-group.directive.mjs +20 -0
  94. package/esm2022/form/src/form.module.mjs +21 -0
  95. package/esm2022/grid/src/component/grid.component.mjs +33 -0
  96. package/esm2022/grid/src/directives/col-form-label/col-form-label.directive.mjs +20 -0
  97. package/esm2022/grid/src/directives/column/column.directive.mjs +57 -0
  98. package/esm2022/grid/src/directives/row/row.directive.mjs +20 -0
  99. package/esm2022/grid/src/grid.module.mjs +22 -0
  100. package/esm2022/has-overlay/src/has-overlay/has-overlay.component.mjs +12 -0
  101. package/esm2022/has-overlay/src/has-overlay/has-overlay.module.mjs +19 -0
  102. package/esm2022/icon/src/icon.component.mjs +35 -0
  103. package/esm2022/icon/src/icon.module.mjs +19 -0
  104. package/esm2022/input-group/src/input-group/input-group.component.mjs +12 -0
  105. package/esm2022/input-group/src/input-group.module.mjs +19 -0
  106. package/esm2022/instance-of/src/directives/instanceof-case.directive.mjs +48 -0
  107. package/esm2022/instance-of/src/directives/instanceof-default.directive.mjs +31 -0
  108. package/esm2022/instance-of/src/directives/instanceof.directive.mjs +63 -0
  109. package/esm2022/instance-of/src/instance-of.module.mjs +38 -0
  110. package/esm2022/instance-of/src/pipes/instance-of.pipe.mjs +18 -0
  111. package/esm2022/lazy-loading/src/lazy-load/lazy-load.directive.mjs +33 -0
  112. package/esm2022/lazy-loading/src/lazy-loading.module.mjs +25 -0
  113. package/esm2022/let/directive/let.directive.mjs +39 -0
  114. package/esm2022/let/let.module.mjs +25 -0
  115. package/esm2022/lib/pipes/font-color/font-color.module.mjs +25 -0
  116. package/esm2022/lib/pipes/font-color/font-color.pipe.mjs +27 -0
  117. package/esm2022/lib/pipes/in-list/in-list.module.mjs +25 -0
  118. package/esm2022/lib/pipes/in-list/in-list.pipe.mjs +17 -0
  119. package/esm2022/lib/pipes/uc-first/uc-first.module.mjs +25 -0
  120. package/esm2022/lib/pipes/uc-first/uc-first.pipe.mjs +17 -0
  121. package/esm2022/list-group/src/list-group/list-group.component.mjs +20 -0
  122. package/esm2022/list-group/src/list-group-item/list-group-item.component.mjs +18 -0
  123. package/esm2022/list-group/src/list-group.module.mjs +28 -0
  124. package/esm2022/markdown/src/bold/bold.pipe.mjs +31 -0
  125. package/esm2022/markdown/src/italic/italic.pipe.mjs +31 -0
  126. package/esm2022/markdown/src/markdown.module.mjs +40 -0
  127. package/esm2022/markdown/src/strikethrough/strikethrough.pipe.mjs +31 -0
  128. package/esm2022/markdown/src/underline/underline.pipe.mjs +31 -0
  129. package/esm2022/modal/src/components/modal/modal.component.mjs +22 -0
  130. package/esm2022/modal/src/components/modal-host/modal-host.component.mjs +84 -0
  131. package/esm2022/modal/src/directives/modal/modal.directive.mjs +19 -0
  132. package/esm2022/modal/src/directives/modal-body/modal-body.directive.mjs +20 -0
  133. package/esm2022/modal/src/directives/modal-close/modal-close.directive.mjs +25 -0
  134. package/esm2022/modal/src/directives/modal-footer/modal-footer.directive.mjs +20 -0
  135. package/esm2022/modal/src/directives/modal-header/modal-header.directive.mjs +20 -0
  136. package/esm2022/modal/src/modal.module.mjs +76 -0
  137. package/esm2022/multiselect/src/component/multiselect.component.mjs +46 -0
  138. package/esm2022/multiselect/src/directives/button-template/button-template.directive.mjs +19 -0
  139. package/esm2022/multiselect/src/directives/footer-template/footer-template.directive.mjs +19 -0
  140. package/esm2022/multiselect/src/directives/header-template/header-template.directive.mjs +19 -0
  141. package/esm2022/multiselect/src/multiselect.module.mjs +64 -0
  142. package/esm2022/navbar/src/dropdown-toggle/dropdown-toggle.directive.mjs +39 -0
  143. package/esm2022/navbar/src/expand-button/expand-button.directive.mjs +19 -0
  144. package/esm2022/navbar/src/nav-link/nav-link.directive.mjs +35 -0
  145. package/esm2022/navbar/src/navbar/navbar.component.mjs +142 -0
  146. package/esm2022/navbar/src/navbar-brand/navbar-brand.component.mjs +21 -0
  147. package/esm2022/navbar/src/navbar-content/navbar-content.directive.mjs +73 -0
  148. package/esm2022/navbar/src/navbar-dropdown/navbar-dropdown.component.mjs +144 -0
  149. package/esm2022/navbar/src/navbar-item/navbar-item.component.mjs +105 -0
  150. package/esm2022/navbar/src/navbar-nav/navbar-nav.component.mjs +70 -0
  151. package/esm2022/navbar/src/navbar-toggler/navbar-toggler.component.mjs +48 -0
  152. package/esm2022/navbar/src/navbar.module.mjs +92 -0
  153. package/esm2022/navigation-lock/src/directive/navigation-lock.directive.mjs +95 -0
  154. package/esm2022/navigation-lock/src/guard/navigation-lock.guard.mjs +23 -0
  155. package/esm2022/navigation-lock/src/navigation-lock.module.mjs +29 -0
  156. package/esm2022/no-noscript/src/no-noscript/no-noscript.directive.mjs +28 -0
  157. package/esm2022/no-noscript/src/no-noscript.module.mjs +19 -0
  158. package/esm2022/offcanvas/src/components/offcanvas/offcanvas.component.mjs +112 -0
  159. package/esm2022/offcanvas/src/components/offcanvas-body/offcanvas-body.component.mjs +19 -0
  160. package/esm2022/offcanvas/src/components/offcanvas-header/offcanvas-header.component.mjs +15 -0
  161. package/esm2022/offcanvas/src/components/offcanvas-host/offcanvas-host.component.mjs +144 -0
  162. package/esm2022/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.mjs +25 -0
  163. package/esm2022/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.mjs +19 -0
  164. package/esm2022/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.mjs +72 -0
  165. package/esm2022/offcanvas/src/offcanvas.module.mjs +76 -0
  166. package/esm2022/ordinal-number/src/ordinal-number/ordinal-number.pipe.mjs +30 -0
  167. package/esm2022/ordinal-number/src/ordinal-number.module.mjs +25 -0
  168. package/esm2022/pagination/src/component/pagination/pagination.component.mjs +202 -0
  169. package/esm2022/pagination/src/pagination.module.mjs +25 -0
  170. package/esm2022/placeholder/src/placeholder/placeholder.component.mjs +27 -0
  171. package/esm2022/placeholder/src/placeholder-field/placeholder-field.directive.mjs +47 -0
  172. package/esm2022/placeholder/src/placeholder.module.mjs +20 -0
  173. package/esm2022/popover/src/component/popover.component.mjs +58 -0
  174. package/esm2022/popover/src/directives/popover/popover.directive.mjs +133 -0
  175. package/esm2022/popover/src/directives/popover-body/popover-body.directive.mjs +20 -0
  176. package/esm2022/popover/src/directives/popover-header/popover-header.directive.mjs +20 -0
  177. package/esm2022/popover/src/popover.module.mjs +37 -0
  178. package/esm2022/progress-bar/src/progress/progress.component.mjs +32 -0
  179. package/esm2022/progress-bar/src/progress-bar/progress-bar.component.mjs +122 -0
  180. package/esm2022/progress-bar/src/progress-bar.module.mjs +30 -0
  181. package/esm2022/range/src/component/range.component.mjs +26 -0
  182. package/esm2022/range/src/range.module.mjs +20 -0
  183. package/esm2022/range/src/value-accessor/range-value-accessor.mjs +63 -0
  184. package/esm2022/rating/src/component/rating.component.mjs +76 -0
  185. package/esm2022/rating/src/rating.module.mjs +25 -0
  186. package/esm2022/resizable/src/resizable/resizable.component.mjs +99 -0
  187. package/esm2022/resizable/src/resizable.module.mjs +30 -0
  188. package/esm2022/resizable/src/resize-glyph/resize-glyph.directive.mjs +220 -0
  189. package/esm2022/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs +86 -0
  190. package/esm2022/scheduler/src/components/scheduler/scheduler.component.mjs +540 -0
  191. package/esm2022/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs +17 -0
  192. package/esm2022/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs +21 -0
  193. package/esm2022/scheduler/src/pipes/date-offset/date-offset.pipe.mjs +21 -0
  194. package/esm2022/scheduler/src/pipes/day-of-week/day-of-week.pipe.mjs +23 -0
  195. package/esm2022/scheduler/src/scheduler.module.mjs +46 -0
  196. package/esm2022/scheduler/src/services/timeline/timeline.service.mjs +66 -0
  197. package/esm2022/scrollspy/src/component/scrollspy.component.mjs +91 -0
  198. package/esm2022/scrollspy/src/directives/scrollspy.directive.mjs +17 -0
  199. package/esm2022/scrollspy/src/scrollspy.module.mjs +30 -0
  200. package/esm2022/scrollspy/src/services/scroll-offset/scroll-offset.service.mjs +32 -0
  201. package/esm2022/select/src/component/select.component.mjs +86 -0
  202. package/esm2022/select/src/select.module.mjs +32 -0
  203. package/esm2022/select/src/value-accessors/select-value-accessor.mjs +169 -0
  204. package/esm2022/select2/src/component/select2.component.mjs +86 -0
  205. package/esm2022/select2/src/directive/item-template.directive.mjs +20 -0
  206. package/esm2022/select2/src/select2.module.mjs +50 -0
  207. package/esm2022/snackbar/src/component/snackbar.component.mjs +37 -0
  208. package/esm2022/snackbar/src/directives/snackbar-close/snackbar-close.directive.mjs +28 -0
  209. package/esm2022/snackbar/src/service/snackbar.service.mjs +46 -0
  210. package/esm2022/snackbar/src/snackbar.module.mjs +44 -0
  211. package/esm2022/spinner/src/spinner.component.mjs +44 -0
  212. package/esm2022/spinner/src/spinner.module.mjs +19 -0
  213. package/esm2022/splitter/src/element-at/element-at.pipe.mjs +22 -0
  214. package/esm2022/splitter/src/split-panel/split-panel.component.mjs +19 -0
  215. package/esm2022/splitter/src/splitter/splitter.component.mjs +207 -0
  216. package/esm2022/splitter/src/splitter.module.mjs +24 -0
  217. package/esm2022/tab-control/src/tab-control/tab-control.component.mjs +133 -0
  218. package/esm2022/tab-control/src/tab-control.module.mjs +47 -0
  219. package/esm2022/tab-control/src/tab-page/tab-page.component.mjs +31 -0
  220. package/esm2022/tab-control/src/tab-page-header/tab-page-header.directive.mjs +17 -0
  221. package/esm2022/table/src/component/table.component.mjs +48 -0
  222. package/esm2022/table/src/table.module.mjs +19 -0
  223. package/esm2022/timepicker/src/timepicker.component.mjs +118 -0
  224. package/esm2022/timepicker/src/timepicker.module.mjs +61 -0
  225. package/esm2022/toast/src/components/toast/toast.component.mjs +17 -0
  226. package/esm2022/toast/src/components/toast-body/toast-body.component.mjs +21 -0
  227. package/esm2022/toast/src/components/toast-container/toast-container.component.mjs +24 -0
  228. package/esm2022/toast/src/components/toast-header/toast-header.component.mjs +18 -0
  229. package/esm2022/toast/src/directives/toast-close/toast-close.directive.mjs +33 -0
  230. package/esm2022/toast/src/pipes/add-properties.pipe.mjs +18 -0
  231. package/esm2022/toast/src/services/toast/toast.service.mjs +57 -0
  232. package/esm2022/toast/src/toast.module.mjs +78 -0
  233. package/esm2022/toggle-button/src/component/toggle-button.component.mjs +159 -0
  234. package/esm2022/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.mjs +20 -0
  235. package/esm2022/toggle-button/src/toggle-button.module.mjs +35 -0
  236. package/esm2022/toggle-button/src/value-accessor/toggle-button-value-accessor.mjs +109 -0
  237. package/esm2022/tooltip/src/component/tooltip.component.mjs +39 -0
  238. package/esm2022/tooltip/src/directive/tooltip.directive.mjs +110 -0
  239. package/esm2022/tooltip/src/tooltip.module.mjs +36 -0
  240. package/esm2022/treeview/src/treeview/treeview.component.mjs +47 -0
  241. package/esm2022/treeview/src/treeview-item/treeview-item.component.mjs +28 -0
  242. package/esm2022/treeview/src/treeview.module.mjs +22 -0
  243. package/esm2022/typeahead/src/typeahead.component.mjs +83 -0
  244. package/esm2022/typeahead/src/typeahead.module.mjs +49 -0
  245. package/esm2022/user-agent/src/directive/user-agent.directive.mjs +99 -0
  246. package/esm2022/user-agent/src/user-agent.module.mjs +25 -0
  247. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs +144 -0
  248. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -0
  249. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs +87 -0
  250. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs.map +1 -0
  251. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs +52 -0
  252. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs.map +1 -0
  253. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs +51 -0
  254. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -0
  255. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs +35 -0
  256. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs.map +1 -0
  257. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs +58 -0
  258. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs.map +1 -0
  259. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs +175 -0
  260. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -0
  261. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +153 -0
  262. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -0
  263. package/fesm2022/mintplayer-ng-bootstrap-card.mjs +60 -0
  264. package/fesm2022/mintplayer-ng-bootstrap-card.mjs.map +1 -0
  265. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs +194 -0
  266. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs.map +1 -0
  267. package/fesm2022/mintplayer-ng-bootstrap-close.mjs +43 -0
  268. package/fesm2022/mintplayer-ng-bootstrap-close.mjs.map +1 -0
  269. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +73 -0
  270. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -0
  271. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs +121 -0
  272. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -0
  273. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs +72 -0
  274. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs.map +1 -0
  275. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs +172 -0
  276. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs.map +1 -0
  277. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs +93 -0
  278. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -0
  279. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +598 -0
  280. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -0
  281. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs +41 -0
  282. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -0
  283. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +87 -0
  284. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -0
  285. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +243 -0
  286. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -0
  287. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs +85 -0
  288. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -0
  289. package/fesm2022/mintplayer-ng-bootstrap-enum.mjs +38 -0
  290. package/fesm2022/mintplayer-ng-bootstrap-enum.mjs.map +1 -0
  291. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +175 -0
  292. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -0
  293. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs +41 -0
  294. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -0
  295. package/fesm2022/mintplayer-ng-bootstrap-for.mjs +66 -0
  296. package/fesm2022/mintplayer-ng-bootstrap-for.mjs.map +1 -0
  297. package/fesm2022/mintplayer-ng-bootstrap-form.mjs +76 -0
  298. package/fesm2022/mintplayer-ng-bootstrap-form.mjs.map +1 -0
  299. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs +141 -0
  300. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs.map +1 -0
  301. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs +33 -0
  302. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -0
  303. package/fesm2022/mintplayer-ng-bootstrap-icon.mjs +56 -0
  304. package/fesm2022/mintplayer-ng-bootstrap-icon.mjs.map +1 -0
  305. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs +33 -0
  306. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs.map +1 -0
  307. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs +218 -0
  308. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs.map +1 -0
  309. package/fesm2022/mintplayer-ng-bootstrap-lazy-loading.mjs +60 -0
  310. package/fesm2022/mintplayer-ng-bootstrap-lazy-loading.mjs.map +1 -0
  311. package/fesm2022/mintplayer-ng-bootstrap-let.mjs +66 -0
  312. package/fesm2022/mintplayer-ng-bootstrap-let.mjs.map +1 -0
  313. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs +63 -0
  314. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs.map +1 -0
  315. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs +147 -0
  316. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs.map +1 -0
  317. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +259 -0
  318. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -0
  319. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +151 -0
  320. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -0
  321. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +724 -0
  322. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -0
  323. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs +145 -0
  324. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -0
  325. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs +48 -0
  326. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -0
  327. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs +452 -0
  328. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -0
  329. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs +56 -0
  330. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -0
  331. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs +229 -0
  332. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs.map +1 -0
  333. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs +89 -0
  334. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -0
  335. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs +256 -0
  336. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs.map +1 -0
  337. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs +182 -0
  338. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -0
  339. package/fesm2022/mintplayer-ng-bootstrap-range.mjs +105 -0
  340. package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -0
  341. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs +103 -0
  342. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs.map +1 -0
  343. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +346 -0
  344. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -0
  345. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs +813 -0
  346. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -0
  347. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +161 -0
  348. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -0
  349. package/fesm2022/mintplayer-ng-bootstrap-select.mjs +282 -0
  350. package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -0
  351. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +152 -0
  352. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -0
  353. package/fesm2022/mintplayer-ng-bootstrap-snackbar.mjs +144 -0
  354. package/fesm2022/mintplayer-ng-bootstrap-snackbar.mjs.map +1 -0
  355. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs +65 -0
  356. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs.map +1 -0
  357. package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs +268 -0
  358. package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs.map +1 -0
  359. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +214 -0
  360. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -0
  361. package/fesm2022/mintplayer-ng-bootstrap-table.mjs +69 -0
  362. package/fesm2022/mintplayer-ng-bootstrap-table.mjs.map +1 -0
  363. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +181 -0
  364. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -0
  365. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +236 -0
  366. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -0
  367. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +313 -0
  368. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -0
  369. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs +181 -0
  370. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -0
  371. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs +91 -0
  372. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs.map +1 -0
  373. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +134 -0
  374. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -0
  375. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs +125 -0
  376. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -0
  377. package/fesm2022/mintplayer-ng-bootstrap.mjs +144 -0
  378. package/fesm2022/mintplayer-ng-bootstrap.mjs.map +1 -0
  379. package/file-upload/src/component/file-upload.component.d.ts +1 -1
  380. package/for/src/for.directive.d.ts +1 -1
  381. package/grid/src/component/grid.component.d.ts +1 -1
  382. package/grid/src/directives/column/column.directive.d.ts +1 -1
  383. package/icon/src/icon.component.d.ts +1 -1
  384. package/instance-of/src/directives/instanceof-case.directive.d.ts +1 -1
  385. package/instance-of/src/directives/instanceof.directive.d.ts +1 -1
  386. package/lazy-loading/src/lazy-load/lazy-load.directive.d.ts +1 -1
  387. package/let/directive/let.directive.d.ts +1 -1
  388. package/modal/src/components/modal-host/modal-host.component.d.ts +1 -1
  389. package/multiselect/src/component/multiselect.component.d.ts +1 -1
  390. package/navbar/src/navbar/navbar.component.d.ts +1 -1
  391. package/navbar/src/navbar-brand/navbar-brand.component.d.ts +1 -1
  392. package/navbar/src/navbar-content/navbar-content.directive.d.ts +1 -1
  393. package/navbar/src/navbar-dropdown/navbar-dropdown.component.d.ts +1 -1
  394. package/navbar/src/navbar-nav/navbar-nav.component.d.ts +1 -1
  395. package/navbar/src/navbar-toggler/navbar-toggler.component.d.ts +1 -1
  396. package/navigation-lock/src/directive/navigation-lock.directive.d.ts +1 -1
  397. package/offcanvas/src/components/offcanvas/offcanvas.component.d.ts +1 -1
  398. package/offcanvas/src/components/offcanvas-body/offcanvas-body.component.d.ts +1 -1
  399. package/offcanvas/src/components/offcanvas-host/offcanvas-host.component.d.ts +1 -1
  400. package/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.d.ts +1 -1
  401. package/package.json +218 -353
  402. package/pagination/src/component/pagination/pagination.component.d.ts +1 -1
  403. package/placeholder/src/placeholder/placeholder.component.d.ts +1 -1
  404. package/popover/src/component/popover.component.d.ts +1 -1
  405. package/popover/src/directives/popover/popover.directive.d.ts +1 -1
  406. package/progress-bar/src/progress/progress.component.d.ts +1 -1
  407. package/progress-bar/src/progress-bar/progress-bar.component.d.ts +1 -1
  408. package/range/src/component/range.component.d.ts +1 -1
  409. package/rating/src/component/rating.component.d.ts +1 -1
  410. package/resizable/src/resizable/resizable.component.d.ts +1 -1
  411. package/resizable/src/resize-glyph/resize-glyph.directive.d.ts +1 -1
  412. package/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.d.ts +1 -1
  413. package/scheduler/src/components/scheduler/scheduler.component.d.ts +1 -1
  414. package/select/src/component/select.component.d.ts +1 -1
  415. package/select/src/value-accessors/select-value-accessor.d.ts +2 -2
  416. package/select2/src/component/select2.component.d.ts +1 -1
  417. package/snackbar/src/directives/snackbar-close/snackbar-close.directive.d.ts +1 -1
  418. package/spinner/src/spinner.component.d.ts +1 -1
  419. package/splitter/src/splitter/splitter.component.d.ts +1 -1
  420. package/tab-control/src/tab-control/tab-control.component.d.ts +1 -1
  421. package/tab-control/src/tab-page/tab-page.component.d.ts +1 -1
  422. package/table/src/component/table.component.d.ts +1 -1
  423. package/timepicker/src/timepicker.component.d.ts +1 -1
  424. package/toast/src/components/toast/toast.component.d.ts +1 -1
  425. package/toast/src/directives/toast-close/toast-close.directive.d.ts +1 -1
  426. package/toggle-button/src/component/toggle-button.component.d.ts +1 -1
  427. package/tooltip/src/component/tooltip.component.d.ts +1 -1
  428. package/tooltip/src/directive/tooltip.directive.d.ts +1 -1
  429. package/treeview/src/treeview/treeview.component.d.ts +1 -1
  430. package/typeahead/src/typeahead.component.d.ts +1 -1
  431. package/esm2020/accordion/src/accordion/accordion.component.mjs +0 -26
  432. package/esm2020/accordion/src/accordion-tab/accordion-tab.component.mjs +0 -68
  433. package/esm2020/accordion/src/accordion-tab-header/accordion-tab-header.component.mjs +0 -21
  434. package/esm2020/accordion/src/accordion.module.mjs +0 -38
  435. package/esm2020/alert/src/alert/alert.component.mjs +0 -41
  436. package/esm2020/alert/src/alert-close/alert-close.component.mjs +0 -20
  437. package/esm2020/alert/src/alert.module.mjs +0 -27
  438. package/esm2020/badge/src/badge.component.mjs +0 -30
  439. package/esm2020/badge/src/badge.module.mjs +0 -18
  440. package/esm2020/breadcrumb/src/breadcrumb/breadcrumb.component.mjs +0 -13
  441. package/esm2020/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.mjs +0 -18
  442. package/esm2020/breadcrumb/src/breadcrumb.module.mjs +0 -19
  443. package/esm2020/button-group/src/button-group/button-group.component.mjs +0 -13
  444. package/esm2020/button-group/src/button-group.module.mjs +0 -18
  445. package/esm2020/button-type/src/button-type/button-type.directive.mjs +0 -30
  446. package/esm2020/button-type/src/button-type/button-type.module.mjs +0 -24
  447. package/esm2020/calendar/src/calendar.component.mjs +0 -111
  448. package/esm2020/calendar/src/calendar.module.mjs +0 -39
  449. package/esm2020/calendar-month/src/pipes/month-name/month-name.module.mjs +0 -24
  450. package/esm2020/calendar-month/src/pipes/month-name/month-name.pipe.mjs +0 -21
  451. package/esm2020/calendar-month/src/pipes/weekday-name/weekday-name.module.mjs +0 -24
  452. package/esm2020/calendar-month/src/pipes/weekday-name/weekday-name.pipe.mjs +0 -16
  453. package/esm2020/calendar-month/src/service/calendar-month.service.mjs +0 -94
  454. package/esm2020/card/src/card/card.component.mjs +0 -16
  455. package/esm2020/card/src/card-header/card-header.component.mjs +0 -16
  456. package/esm2020/card/src/card.module.mjs +0 -27
  457. package/esm2020/carousel/src/carousel/carousel.component.mjs +0 -137
  458. package/esm2020/carousel/src/carousel-image/carousel-image.directive.mjs +0 -24
  459. package/esm2020/carousel/src/carousel.module.mjs +0 -37
  460. package/esm2020/close/src/close.component.mjs +0 -21
  461. package/esm2020/close/src/close.module.mjs +0 -18
  462. package/esm2020/code-snippet/src/code-snippet.component.mjs +0 -34
  463. package/esm2020/code-snippet/src/code-snippet.module.mjs +0 -36
  464. package/esm2020/context-menu/src/context-menu.directive.mjs +0 -84
  465. package/esm2020/context-menu/src/context-menu.module.mjs +0 -34
  466. package/esm2020/copy/src/copy.directive.mjs +0 -45
  467. package/esm2020/copy/src/copy.module.mjs +0 -24
  468. package/esm2020/datatable/src/datatable/datatable.component.mjs +0 -57
  469. package/esm2020/datatable/src/datatable-column/datatable-column.directive.mjs +0 -19
  470. package/esm2020/datatable/src/datatable.module.mjs +0 -46
  471. package/esm2020/datatable/src/row-template/row-template.directive.mjs +0 -19
  472. package/esm2020/datepicker/src/datepicker.component.mjs +0 -49
  473. package/esm2020/datepicker/src/datepicker.module.mjs +0 -40
  474. package/esm2020/dock/src/dock/dock.component.mjs +0 -92
  475. package/esm2020/dock/src/dock-pane-renderer/dock-pane-renderer.component.mjs +0 -60
  476. package/esm2020/dock/src/dock-panel/dock-panel.component.mjs +0 -27
  477. package/esm2020/dock/src/dock-panel-header/dock-panel-header.component.mjs +0 -270
  478. package/esm2020/dock/src/dock.module.mjs +0 -63
  479. package/esm2020/dock/src/services/dock/dock.service.mjs +0 -56
  480. package/esm2020/dropdown/src/dropdown/dropdown.directive.mjs +0 -68
  481. package/esm2020/dropdown/src/dropdown-menu/dropdown-menu.directive.mjs +0 -114
  482. package/esm2020/dropdown/src/dropdown-toggle/dropdown-toggle.directive.mjs +0 -31
  483. package/esm2020/dropdown/src/dropdown.module.mjs +0 -43
  484. package/esm2020/dropdown-divider/src/dropdown-divider.directive.mjs +0 -19
  485. package/esm2020/dropdown-divider/src/dropdown-divider.module.mjs +0 -18
  486. package/esm2020/dropdown-menu/src/dropdown-item/dropdown-item.component.mjs +0 -19
  487. package/esm2020/dropdown-menu/src/dropdown-menu/dropdown-menu.component.mjs +0 -42
  488. package/esm2020/dropdown-menu/src/dropdown-menu.module.mjs +0 -26
  489. package/esm2020/enhanced-paste/src/directive/enhanced-paste.directive.mjs +0 -58
  490. package/esm2020/enhanced-paste/src/enhanced-paste.module.mjs +0 -24
  491. package/esm2020/enum/src/service/enum.service.mjs +0 -31
  492. package/esm2020/file-upload/src/component/file-upload.component.mjs +0 -89
  493. package/esm2020/file-upload/src/directive/file-upload-template.directive.mjs +0 -18
  494. package/esm2020/file-upload/src/file-upload.module.mjs +0 -50
  495. package/esm2020/file-upload/src/pipes/format-bytes/format-bytes.pipe.mjs +0 -23
  496. package/esm2020/floating-labels/src/floating-labels/floating-label/floating-label.component.mjs +0 -20
  497. package/esm2020/floating-labels/src/floating-labels/floating-labels.module.mjs +0 -18
  498. package/esm2020/for/src/for.directive.mjs +0 -38
  499. package/esm2020/for/src/for.module.mjs +0 -24
  500. package/esm2020/form/src/form/form.component.mjs +0 -20
  501. package/esm2020/form/src/form-control/form-control.directive.mjs +0 -19
  502. package/esm2020/form/src/form-group/form-group.directive.mjs +0 -19
  503. package/esm2020/form/src/form.module.mjs +0 -20
  504. package/esm2020/grid/src/component/grid.component.mjs +0 -32
  505. package/esm2020/grid/src/directives/col-form-label/col-form-label.directive.mjs +0 -19
  506. package/esm2020/grid/src/directives/column/column.directive.mjs +0 -56
  507. package/esm2020/grid/src/directives/row/row.directive.mjs +0 -19
  508. package/esm2020/grid/src/grid.module.mjs +0 -21
  509. package/esm2020/has-overlay/src/has-overlay/has-overlay.component.mjs +0 -11
  510. package/esm2020/has-overlay/src/has-overlay/has-overlay.module.mjs +0 -18
  511. package/esm2020/icon/src/icon.component.mjs +0 -34
  512. package/esm2020/icon/src/icon.module.mjs +0 -18
  513. package/esm2020/input-group/src/input-group/input-group.component.mjs +0 -11
  514. package/esm2020/input-group/src/input-group.module.mjs +0 -18
  515. package/esm2020/instance-of/src/directives/instanceof-case.directive.mjs +0 -47
  516. package/esm2020/instance-of/src/directives/instanceof-default.directive.mjs +0 -30
  517. package/esm2020/instance-of/src/directives/instanceof.directive.mjs +0 -62
  518. package/esm2020/instance-of/src/instance-of.module.mjs +0 -37
  519. package/esm2020/instance-of/src/pipes/instance-of.pipe.mjs +0 -17
  520. package/esm2020/lazy-loading/src/lazy-load/lazy-load.directive.mjs +0 -32
  521. package/esm2020/lazy-loading/src/lazy-loading.module.mjs +0 -24
  522. package/esm2020/let/directive/let.directive.mjs +0 -38
  523. package/esm2020/let/let.module.mjs +0 -24
  524. package/esm2020/lib/pipes/font-color/font-color.module.mjs +0 -24
  525. package/esm2020/lib/pipes/font-color/font-color.pipe.mjs +0 -26
  526. package/esm2020/lib/pipes/in-list/in-list.module.mjs +0 -24
  527. package/esm2020/lib/pipes/in-list/in-list.pipe.mjs +0 -16
  528. package/esm2020/lib/pipes/uc-first/uc-first.module.mjs +0 -24
  529. package/esm2020/lib/pipes/uc-first/uc-first.pipe.mjs +0 -16
  530. package/esm2020/list-group/src/list-group/list-group.component.mjs +0 -19
  531. package/esm2020/list-group/src/list-group-item/list-group-item.component.mjs +0 -17
  532. package/esm2020/list-group/src/list-group.module.mjs +0 -27
  533. package/esm2020/markdown/src/bold/bold.pipe.mjs +0 -30
  534. package/esm2020/markdown/src/italic/italic.pipe.mjs +0 -30
  535. package/esm2020/markdown/src/markdown.module.mjs +0 -39
  536. package/esm2020/markdown/src/strikethrough/strikethrough.pipe.mjs +0 -30
  537. package/esm2020/markdown/src/underline/underline.pipe.mjs +0 -30
  538. package/esm2020/modal/src/components/modal/modal.component.mjs +0 -21
  539. package/esm2020/modal/src/components/modal-host/modal-host.component.mjs +0 -83
  540. package/esm2020/modal/src/directives/modal/modal.directive.mjs +0 -18
  541. package/esm2020/modal/src/directives/modal-body/modal-body.directive.mjs +0 -19
  542. package/esm2020/modal/src/directives/modal-close/modal-close.directive.mjs +0 -24
  543. package/esm2020/modal/src/directives/modal-footer/modal-footer.directive.mjs +0 -19
  544. package/esm2020/modal/src/directives/modal-header/modal-header.directive.mjs +0 -19
  545. package/esm2020/modal/src/modal.module.mjs +0 -75
  546. package/esm2020/multiselect/src/component/multiselect.component.mjs +0 -45
  547. package/esm2020/multiselect/src/directives/button-template/button-template.directive.mjs +0 -18
  548. package/esm2020/multiselect/src/directives/footer-template/footer-template.directive.mjs +0 -18
  549. package/esm2020/multiselect/src/directives/header-template/header-template.directive.mjs +0 -18
  550. package/esm2020/multiselect/src/multiselect.module.mjs +0 -63
  551. package/esm2020/navbar/src/dropdown-toggle/dropdown-toggle.directive.mjs +0 -38
  552. package/esm2020/navbar/src/expand-button/expand-button.directive.mjs +0 -18
  553. package/esm2020/navbar/src/nav-link/nav-link.directive.mjs +0 -34
  554. package/esm2020/navbar/src/navbar/navbar.component.mjs +0 -141
  555. package/esm2020/navbar/src/navbar-brand/navbar-brand.component.mjs +0 -20
  556. package/esm2020/navbar/src/navbar-content/navbar-content.directive.mjs +0 -72
  557. package/esm2020/navbar/src/navbar-dropdown/navbar-dropdown.component.mjs +0 -143
  558. package/esm2020/navbar/src/navbar-item/navbar-item.component.mjs +0 -104
  559. package/esm2020/navbar/src/navbar-nav/navbar-nav.component.mjs +0 -69
  560. package/esm2020/navbar/src/navbar-toggler/navbar-toggler.component.mjs +0 -47
  561. package/esm2020/navbar/src/navbar.module.mjs +0 -91
  562. package/esm2020/navigation-lock/src/directive/navigation-lock.directive.mjs +0 -94
  563. package/esm2020/navigation-lock/src/guard/navigation-lock.guard.mjs +0 -22
  564. package/esm2020/navigation-lock/src/navigation-lock.module.mjs +0 -28
  565. package/esm2020/no-noscript/src/no-noscript/no-noscript.directive.mjs +0 -27
  566. package/esm2020/no-noscript/src/no-noscript.module.mjs +0 -18
  567. package/esm2020/offcanvas/src/components/offcanvas/offcanvas.component.mjs +0 -111
  568. package/esm2020/offcanvas/src/components/offcanvas-body/offcanvas-body.component.mjs +0 -18
  569. package/esm2020/offcanvas/src/components/offcanvas-header/offcanvas-header.component.mjs +0 -14
  570. package/esm2020/offcanvas/src/components/offcanvas-host/offcanvas-host.component.mjs +0 -143
  571. package/esm2020/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.mjs +0 -24
  572. package/esm2020/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.mjs +0 -18
  573. package/esm2020/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.mjs +0 -71
  574. package/esm2020/offcanvas/src/offcanvas.module.mjs +0 -75
  575. package/esm2020/ordinal-number/src/ordinal-number/ordinal-number.pipe.mjs +0 -29
  576. package/esm2020/ordinal-number/src/ordinal-number.module.mjs +0 -24
  577. package/esm2020/pagination/src/component/pagination/pagination.component.mjs +0 -201
  578. package/esm2020/pagination/src/pagination.module.mjs +0 -24
  579. package/esm2020/placeholder/src/placeholder/placeholder.component.mjs +0 -26
  580. package/esm2020/placeholder/src/placeholder-field/placeholder-field.directive.mjs +0 -46
  581. package/esm2020/placeholder/src/placeholder.module.mjs +0 -19
  582. package/esm2020/popover/src/component/popover.component.mjs +0 -57
  583. package/esm2020/popover/src/directives/popover/popover.directive.mjs +0 -132
  584. package/esm2020/popover/src/directives/popover-body/popover-body.directive.mjs +0 -19
  585. package/esm2020/popover/src/directives/popover-header/popover-header.directive.mjs +0 -19
  586. package/esm2020/popover/src/popover.module.mjs +0 -36
  587. package/esm2020/progress-bar/src/progress/progress.component.mjs +0 -31
  588. package/esm2020/progress-bar/src/progress-bar/progress-bar.component.mjs +0 -121
  589. package/esm2020/progress-bar/src/progress-bar.module.mjs +0 -29
  590. package/esm2020/range/src/component/range.component.mjs +0 -25
  591. package/esm2020/range/src/range.module.mjs +0 -19
  592. package/esm2020/range/src/value-accessor/range-value-accessor.mjs +0 -62
  593. package/esm2020/rating/src/component/rating.component.mjs +0 -75
  594. package/esm2020/rating/src/rating.module.mjs +0 -24
  595. package/esm2020/resizable/src/resizable/resizable.component.mjs +0 -98
  596. package/esm2020/resizable/src/resizable.module.mjs +0 -29
  597. package/esm2020/resizable/src/resize-glyph/resize-glyph.directive.mjs +0 -219
  598. package/esm2020/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs +0 -85
  599. package/esm2020/scheduler/src/components/scheduler/scheduler.component.mjs +0 -539
  600. package/esm2020/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs +0 -16
  601. package/esm2020/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs +0 -20
  602. package/esm2020/scheduler/src/pipes/date-offset/date-offset.pipe.mjs +0 -20
  603. package/esm2020/scheduler/src/pipes/day-of-week/day-of-week.pipe.mjs +0 -22
  604. package/esm2020/scheduler/src/scheduler.module.mjs +0 -45
  605. package/esm2020/scheduler/src/services/timeline/timeline.service.mjs +0 -65
  606. package/esm2020/scrollspy/src/component/scrollspy.component.mjs +0 -90
  607. package/esm2020/scrollspy/src/directives/scrollspy.directive.mjs +0 -16
  608. package/esm2020/scrollspy/src/scrollspy.module.mjs +0 -29
  609. package/esm2020/scrollspy/src/services/scroll-offset/scroll-offset.service.mjs +0 -31
  610. package/esm2020/select/src/component/select.component.mjs +0 -85
  611. package/esm2020/select/src/select.module.mjs +0 -31
  612. package/esm2020/select/src/value-accessors/select-value-accessor.mjs +0 -167
  613. package/esm2020/select2/src/component/select2.component.mjs +0 -85
  614. package/esm2020/select2/src/directive/item-template.directive.mjs +0 -19
  615. package/esm2020/select2/src/select2.module.mjs +0 -49
  616. package/esm2020/snackbar/src/component/snackbar.component.mjs +0 -36
  617. package/esm2020/snackbar/src/directives/snackbar-close/snackbar-close.directive.mjs +0 -27
  618. package/esm2020/snackbar/src/service/snackbar.service.mjs +0 -45
  619. package/esm2020/snackbar/src/snackbar.module.mjs +0 -43
  620. package/esm2020/spinner/src/spinner.component.mjs +0 -43
  621. package/esm2020/spinner/src/spinner.module.mjs +0 -18
  622. package/esm2020/splitter/src/element-at/element-at.pipe.mjs +0 -21
  623. package/esm2020/splitter/src/split-panel/split-panel.component.mjs +0 -18
  624. package/esm2020/splitter/src/splitter/splitter.component.mjs +0 -206
  625. package/esm2020/splitter/src/splitter.module.mjs +0 -23
  626. package/esm2020/tab-control/src/tab-control/tab-control.component.mjs +0 -132
  627. package/esm2020/tab-control/src/tab-control.module.mjs +0 -46
  628. package/esm2020/tab-control/src/tab-page/tab-page.component.mjs +0 -30
  629. package/esm2020/tab-control/src/tab-page-header/tab-page-header.directive.mjs +0 -16
  630. package/esm2020/table/src/component/table.component.mjs +0 -47
  631. package/esm2020/table/src/table.module.mjs +0 -18
  632. package/esm2020/timepicker/src/timepicker.component.mjs +0 -117
  633. package/esm2020/timepicker/src/timepicker.module.mjs +0 -60
  634. package/esm2020/toast/src/components/toast/toast.component.mjs +0 -16
  635. package/esm2020/toast/src/components/toast-body/toast-body.component.mjs +0 -20
  636. package/esm2020/toast/src/components/toast-container/toast-container.component.mjs +0 -23
  637. package/esm2020/toast/src/components/toast-header/toast-header.component.mjs +0 -17
  638. package/esm2020/toast/src/directives/toast-close/toast-close.directive.mjs +0 -32
  639. package/esm2020/toast/src/pipes/add-properties.pipe.mjs +0 -17
  640. package/esm2020/toast/src/services/toast/toast.service.mjs +0 -56
  641. package/esm2020/toast/src/toast.module.mjs +0 -77
  642. package/esm2020/toggle-button/src/component/toggle-button.component.mjs +0 -158
  643. package/esm2020/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.mjs +0 -19
  644. package/esm2020/toggle-button/src/toggle-button.module.mjs +0 -34
  645. package/esm2020/toggle-button/src/value-accessor/toggle-button-value-accessor.mjs +0 -108
  646. package/esm2020/tooltip/src/component/tooltip.component.mjs +0 -38
  647. package/esm2020/tooltip/src/directive/tooltip.directive.mjs +0 -109
  648. package/esm2020/tooltip/src/tooltip.module.mjs +0 -35
  649. package/esm2020/treeview/src/treeview/treeview.component.mjs +0 -46
  650. package/esm2020/treeview/src/treeview-item/treeview-item.component.mjs +0 -27
  651. package/esm2020/treeview/src/treeview.module.mjs +0 -21
  652. package/esm2020/typeahead/src/typeahead.component.mjs +0 -82
  653. package/esm2020/typeahead/src/typeahead.module.mjs +0 -48
  654. package/esm2020/user-agent/src/directive/user-agent.directive.mjs +0 -98
  655. package/esm2020/user-agent/src/user-agent.module.mjs +0 -24
  656. package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs +0 -144
  657. package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs.map +0 -1
  658. package/fesm2015/mintplayer-ng-bootstrap-alert.mjs +0 -87
  659. package/fesm2015/mintplayer-ng-bootstrap-alert.mjs.map +0 -1
  660. package/fesm2015/mintplayer-ng-bootstrap-badge.mjs +0 -52
  661. package/fesm2015/mintplayer-ng-bootstrap-badge.mjs.map +0 -1
  662. package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs +0 -51
  663. package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs.map +0 -1
  664. package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs +0 -35
  665. package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs.map +0 -1
  666. package/fesm2015/mintplayer-ng-bootstrap-button-type.mjs +0 -58
  667. package/fesm2015/mintplayer-ng-bootstrap-button-type.mjs.map +0 -1
  668. package/fesm2015/mintplayer-ng-bootstrap-calendar-month.mjs +0 -178
  669. package/fesm2015/mintplayer-ng-bootstrap-calendar-month.mjs.map +0 -1
  670. package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs +0 -153
  671. package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs.map +0 -1
  672. package/fesm2015/mintplayer-ng-bootstrap-card.mjs +0 -60
  673. package/fesm2015/mintplayer-ng-bootstrap-card.mjs.map +0 -1
  674. package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs +0 -196
  675. package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs.map +0 -1
  676. package/fesm2015/mintplayer-ng-bootstrap-close.mjs +0 -43
  677. package/fesm2015/mintplayer-ng-bootstrap-close.mjs.map +0 -1
  678. package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs +0 -73
  679. package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs.map +0 -1
  680. package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs +0 -123
  681. package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs.map +0 -1
  682. package/fesm2015/mintplayer-ng-bootstrap-copy.mjs +0 -75
  683. package/fesm2015/mintplayer-ng-bootstrap-copy.mjs.map +0 -1
  684. package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs +0 -171
  685. package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs.map +0 -1
  686. package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs +0 -93
  687. package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs.map +0 -1
  688. package/fesm2015/mintplayer-ng-bootstrap-dock.mjs +0 -593
  689. package/fesm2015/mintplayer-ng-bootstrap-dock.mjs.map +0 -1
  690. package/fesm2015/mintplayer-ng-bootstrap-dropdown-divider.mjs +0 -41
  691. package/fesm2015/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +0 -1
  692. package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs +0 -89
  693. package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +0 -1
  694. package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs +0 -248
  695. package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs.map +0 -1
  696. package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs +0 -85
  697. package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +0 -1
  698. package/fesm2015/mintplayer-ng-bootstrap-enum.mjs +0 -38
  699. package/fesm2015/mintplayer-ng-bootstrap-enum.mjs.map +0 -1
  700. package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs +0 -175
  701. package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs.map +0 -1
  702. package/fesm2015/mintplayer-ng-bootstrap-floating-labels.mjs +0 -43
  703. package/fesm2015/mintplayer-ng-bootstrap-floating-labels.mjs.map +0 -1
  704. package/fesm2015/mintplayer-ng-bootstrap-for.mjs +0 -66
  705. package/fesm2015/mintplayer-ng-bootstrap-for.mjs.map +0 -1
  706. package/fesm2015/mintplayer-ng-bootstrap-form.mjs +0 -76
  707. package/fesm2015/mintplayer-ng-bootstrap-form.mjs.map +0 -1
  708. package/fesm2015/mintplayer-ng-bootstrap-grid.mjs +0 -141
  709. package/fesm2015/mintplayer-ng-bootstrap-grid.mjs.map +0 -1
  710. package/fesm2015/mintplayer-ng-bootstrap-has-overlay.mjs +0 -33
  711. package/fesm2015/mintplayer-ng-bootstrap-has-overlay.mjs.map +0 -1
  712. package/fesm2015/mintplayer-ng-bootstrap-icon.mjs +0 -56
  713. package/fesm2015/mintplayer-ng-bootstrap-icon.mjs.map +0 -1
  714. package/fesm2015/mintplayer-ng-bootstrap-input-group.mjs +0 -33
  715. package/fesm2015/mintplayer-ng-bootstrap-input-group.mjs.map +0 -1
  716. package/fesm2015/mintplayer-ng-bootstrap-instance-of.mjs +0 -222
  717. package/fesm2015/mintplayer-ng-bootstrap-instance-of.mjs.map +0 -1
  718. package/fesm2015/mintplayer-ng-bootstrap-lazy-loading.mjs +0 -60
  719. package/fesm2015/mintplayer-ng-bootstrap-lazy-loading.mjs.map +0 -1
  720. package/fesm2015/mintplayer-ng-bootstrap-let.mjs +0 -66
  721. package/fesm2015/mintplayer-ng-bootstrap-let.mjs.map +0 -1
  722. package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs +0 -63
  723. package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs.map +0 -1
  724. package/fesm2015/mintplayer-ng-bootstrap-markdown.mjs +0 -147
  725. package/fesm2015/mintplayer-ng-bootstrap-markdown.mjs.map +0 -1
  726. package/fesm2015/mintplayer-ng-bootstrap-modal.mjs +0 -263
  727. package/fesm2015/mintplayer-ng-bootstrap-modal.mjs.map +0 -1
  728. package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs +0 -151
  729. package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs.map +0 -1
  730. package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs +0 -735
  731. package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs.map +0 -1
  732. package/fesm2015/mintplayer-ng-bootstrap-navigation-lock.mjs +0 -148
  733. package/fesm2015/mintplayer-ng-bootstrap-navigation-lock.mjs.map +0 -1
  734. package/fesm2015/mintplayer-ng-bootstrap-no-noscript.mjs +0 -50
  735. package/fesm2015/mintplayer-ng-bootstrap-no-noscript.mjs.map +0 -1
  736. package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs +0 -456
  737. package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs.map +0 -1
  738. package/fesm2015/mintplayer-ng-bootstrap-ordinal-number.mjs +0 -56
  739. package/fesm2015/mintplayer-ng-bootstrap-ordinal-number.mjs.map +0 -1
  740. package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs +0 -229
  741. package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs.map +0 -1
  742. package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs +0 -89
  743. package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs.map +0 -1
  744. package/fesm2015/mintplayer-ng-bootstrap-popover.mjs +0 -261
  745. package/fesm2015/mintplayer-ng-bootstrap-popover.mjs.map +0 -1
  746. package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs +0 -182
  747. package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs.map +0 -1
  748. package/fesm2015/mintplayer-ng-bootstrap-range.mjs +0 -105
  749. package/fesm2015/mintplayer-ng-bootstrap-range.mjs.map +0 -1
  750. package/fesm2015/mintplayer-ng-bootstrap-rating.mjs +0 -103
  751. package/fesm2015/mintplayer-ng-bootstrap-rating.mjs.map +0 -1
  752. package/fesm2015/mintplayer-ng-bootstrap-resizable.mjs +0 -338
  753. package/fesm2015/mintplayer-ng-bootstrap-resizable.mjs.map +0 -1
  754. package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs +0 -813
  755. package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs.map +0 -1
  756. package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs +0 -166
  757. package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs.map +0 -1
  758. package/fesm2015/mintplayer-ng-bootstrap-select.mjs +0 -284
  759. package/fesm2015/mintplayer-ng-bootstrap-select.mjs.map +0 -1
  760. package/fesm2015/mintplayer-ng-bootstrap-select2.mjs +0 -152
  761. package/fesm2015/mintplayer-ng-bootstrap-select2.mjs.map +0 -1
  762. package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs +0 -147
  763. package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs.map +0 -1
  764. package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs +0 -65
  765. package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs.map +0 -1
  766. package/fesm2015/mintplayer-ng-bootstrap-splitter.mjs +0 -268
  767. package/fesm2015/mintplayer-ng-bootstrap-splitter.mjs.map +0 -1
  768. package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs +0 -214
  769. package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs.map +0 -1
  770. package/fesm2015/mintplayer-ng-bootstrap-table.mjs +0 -69
  771. package/fesm2015/mintplayer-ng-bootstrap-table.mjs.map +0 -1
  772. package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs +0 -181
  773. package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs.map +0 -1
  774. package/fesm2015/mintplayer-ng-bootstrap-toast.mjs +0 -238
  775. package/fesm2015/mintplayer-ng-bootstrap-toast.mjs.map +0 -1
  776. package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs +0 -313
  777. package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs.map +0 -1
  778. package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs +0 -185
  779. package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs.map +0 -1
  780. package/fesm2015/mintplayer-ng-bootstrap-treeview.mjs +0 -93
  781. package/fesm2015/mintplayer-ng-bootstrap-treeview.mjs.map +0 -1
  782. package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs +0 -134
  783. package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs.map +0 -1
  784. package/fesm2015/mintplayer-ng-bootstrap-user-agent.mjs +0 -127
  785. package/fesm2015/mintplayer-ng-bootstrap-user-agent.mjs.map +0 -1
  786. package/fesm2015/mintplayer-ng-bootstrap.mjs +0 -144
  787. package/fesm2015/mintplayer-ng-bootstrap.mjs.map +0 -1
  788. package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs +0 -144
  789. package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs.map +0 -1
  790. package/fesm2020/mintplayer-ng-bootstrap-alert.mjs +0 -87
  791. package/fesm2020/mintplayer-ng-bootstrap-alert.mjs.map +0 -1
  792. package/fesm2020/mintplayer-ng-bootstrap-badge.mjs +0 -52
  793. package/fesm2020/mintplayer-ng-bootstrap-badge.mjs.map +0 -1
  794. package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs +0 -51
  795. package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs.map +0 -1
  796. package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs +0 -35
  797. package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs.map +0 -1
  798. package/fesm2020/mintplayer-ng-bootstrap-button-type.mjs +0 -58
  799. package/fesm2020/mintplayer-ng-bootstrap-button-type.mjs.map +0 -1
  800. package/fesm2020/mintplayer-ng-bootstrap-calendar-month.mjs +0 -175
  801. package/fesm2020/mintplayer-ng-bootstrap-calendar-month.mjs.map +0 -1
  802. package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs +0 -153
  803. package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs.map +0 -1
  804. package/fesm2020/mintplayer-ng-bootstrap-card.mjs +0 -60
  805. package/fesm2020/mintplayer-ng-bootstrap-card.mjs.map +0 -1
  806. package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs +0 -194
  807. package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs.map +0 -1
  808. package/fesm2020/mintplayer-ng-bootstrap-close.mjs +0 -43
  809. package/fesm2020/mintplayer-ng-bootstrap-close.mjs.map +0 -1
  810. package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs +0 -73
  811. package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs.map +0 -1
  812. package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs +0 -121
  813. package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs.map +0 -1
  814. package/fesm2020/mintplayer-ng-bootstrap-copy.mjs +0 -72
  815. package/fesm2020/mintplayer-ng-bootstrap-copy.mjs.map +0 -1
  816. package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs +0 -172
  817. package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs.map +0 -1
  818. package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs +0 -93
  819. package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs.map +0 -1
  820. package/fesm2020/mintplayer-ng-bootstrap-dock.mjs +0 -590
  821. package/fesm2020/mintplayer-ng-bootstrap-dock.mjs.map +0 -1
  822. package/fesm2020/mintplayer-ng-bootstrap-dropdown-divider.mjs +0 -41
  823. package/fesm2020/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +0 -1
  824. package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs +0 -87
  825. package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +0 -1
  826. package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs +0 -243
  827. package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs.map +0 -1
  828. package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs +0 -85
  829. package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +0 -1
  830. package/fesm2020/mintplayer-ng-bootstrap-enum.mjs +0 -38
  831. package/fesm2020/mintplayer-ng-bootstrap-enum.mjs.map +0 -1
  832. package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs +0 -175
  833. package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs.map +0 -1
  834. package/fesm2020/mintplayer-ng-bootstrap-floating-labels.mjs +0 -41
  835. package/fesm2020/mintplayer-ng-bootstrap-floating-labels.mjs.map +0 -1
  836. package/fesm2020/mintplayer-ng-bootstrap-for.mjs +0 -66
  837. package/fesm2020/mintplayer-ng-bootstrap-for.mjs.map +0 -1
  838. package/fesm2020/mintplayer-ng-bootstrap-form.mjs +0 -76
  839. package/fesm2020/mintplayer-ng-bootstrap-form.mjs.map +0 -1
  840. package/fesm2020/mintplayer-ng-bootstrap-grid.mjs +0 -141
  841. package/fesm2020/mintplayer-ng-bootstrap-grid.mjs.map +0 -1
  842. package/fesm2020/mintplayer-ng-bootstrap-has-overlay.mjs +0 -33
  843. package/fesm2020/mintplayer-ng-bootstrap-has-overlay.mjs.map +0 -1
  844. package/fesm2020/mintplayer-ng-bootstrap-icon.mjs +0 -56
  845. package/fesm2020/mintplayer-ng-bootstrap-icon.mjs.map +0 -1
  846. package/fesm2020/mintplayer-ng-bootstrap-input-group.mjs +0 -33
  847. package/fesm2020/mintplayer-ng-bootstrap-input-group.mjs.map +0 -1
  848. package/fesm2020/mintplayer-ng-bootstrap-instance-of.mjs +0 -218
  849. package/fesm2020/mintplayer-ng-bootstrap-instance-of.mjs.map +0 -1
  850. package/fesm2020/mintplayer-ng-bootstrap-lazy-loading.mjs +0 -60
  851. package/fesm2020/mintplayer-ng-bootstrap-lazy-loading.mjs.map +0 -1
  852. package/fesm2020/mintplayer-ng-bootstrap-let.mjs +0 -66
  853. package/fesm2020/mintplayer-ng-bootstrap-let.mjs.map +0 -1
  854. package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs +0 -63
  855. package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs.map +0 -1
  856. package/fesm2020/mintplayer-ng-bootstrap-markdown.mjs +0 -147
  857. package/fesm2020/mintplayer-ng-bootstrap-markdown.mjs.map +0 -1
  858. package/fesm2020/mintplayer-ng-bootstrap-modal.mjs +0 -259
  859. package/fesm2020/mintplayer-ng-bootstrap-modal.mjs.map +0 -1
  860. package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs +0 -151
  861. package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs.map +0 -1
  862. package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs +0 -724
  863. package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs.map +0 -1
  864. package/fesm2020/mintplayer-ng-bootstrap-navigation-lock.mjs +0 -145
  865. package/fesm2020/mintplayer-ng-bootstrap-navigation-lock.mjs.map +0 -1
  866. package/fesm2020/mintplayer-ng-bootstrap-no-noscript.mjs +0 -48
  867. package/fesm2020/mintplayer-ng-bootstrap-no-noscript.mjs.map +0 -1
  868. package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs +0 -452
  869. package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs.map +0 -1
  870. package/fesm2020/mintplayer-ng-bootstrap-ordinal-number.mjs +0 -56
  871. package/fesm2020/mintplayer-ng-bootstrap-ordinal-number.mjs.map +0 -1
  872. package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs +0 -229
  873. package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs.map +0 -1
  874. package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs +0 -89
  875. package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs.map +0 -1
  876. package/fesm2020/mintplayer-ng-bootstrap-popover.mjs +0 -256
  877. package/fesm2020/mintplayer-ng-bootstrap-popover.mjs.map +0 -1
  878. package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs +0 -182
  879. package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs.map +0 -1
  880. package/fesm2020/mintplayer-ng-bootstrap-range.mjs +0 -105
  881. package/fesm2020/mintplayer-ng-bootstrap-range.mjs.map +0 -1
  882. package/fesm2020/mintplayer-ng-bootstrap-rating.mjs +0 -103
  883. package/fesm2020/mintplayer-ng-bootstrap-rating.mjs.map +0 -1
  884. package/fesm2020/mintplayer-ng-bootstrap-resizable.mjs +0 -346
  885. package/fesm2020/mintplayer-ng-bootstrap-resizable.mjs.map +0 -1
  886. package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs +0 -813
  887. package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs.map +0 -1
  888. package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs +0 -161
  889. package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs.map +0 -1
  890. package/fesm2020/mintplayer-ng-bootstrap-select.mjs +0 -282
  891. package/fesm2020/mintplayer-ng-bootstrap-select.mjs.map +0 -1
  892. package/fesm2020/mintplayer-ng-bootstrap-select2.mjs +0 -152
  893. package/fesm2020/mintplayer-ng-bootstrap-select2.mjs.map +0 -1
  894. package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs +0 -144
  895. package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs.map +0 -1
  896. package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs +0 -65
  897. package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs.map +0 -1
  898. package/fesm2020/mintplayer-ng-bootstrap-splitter.mjs +0 -268
  899. package/fesm2020/mintplayer-ng-bootstrap-splitter.mjs.map +0 -1
  900. package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs +0 -214
  901. package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs.map +0 -1
  902. package/fesm2020/mintplayer-ng-bootstrap-table.mjs +0 -69
  903. package/fesm2020/mintplayer-ng-bootstrap-table.mjs.map +0 -1
  904. package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs +0 -181
  905. package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs.map +0 -1
  906. package/fesm2020/mintplayer-ng-bootstrap-toast.mjs +0 -236
  907. package/fesm2020/mintplayer-ng-bootstrap-toast.mjs.map +0 -1
  908. package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs +0 -313
  909. package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs.map +0 -1
  910. package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs +0 -181
  911. package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs.map +0 -1
  912. package/fesm2020/mintplayer-ng-bootstrap-treeview.mjs +0 -91
  913. package/fesm2020/mintplayer-ng-bootstrap-treeview.mjs.map +0 -1
  914. package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs +0 -134
  915. package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs.map +0 -1
  916. package/fesm2020/mintplayer-ng-bootstrap-user-agent.mjs +0 -125
  917. package/fesm2020/mintplayer-ng-bootstrap-user-agent.mjs.map +0 -1
  918. package/fesm2020/mintplayer-ng-bootstrap.mjs +0 -144
  919. package/fesm2020/mintplayer-ng-bootstrap.mjs.map +0 -1
  920. /package/{esm2020 → esm2022}/accordion/index.mjs +0 -0
  921. /package/{esm2020 → esm2022}/accordion/mintplayer-ng-bootstrap-accordion.mjs +0 -0
  922. /package/{esm2020 → esm2022}/accordion/src/index.mjs +0 -0
  923. /package/{esm2020 → esm2022}/alert/index.mjs +0 -0
  924. /package/{esm2020 → esm2022}/alert/mintplayer-ng-bootstrap-alert.mjs +0 -0
  925. /package/{esm2020 → esm2022}/alert/src/index.mjs +0 -0
  926. /package/{esm2020 → esm2022}/badge/index.mjs +0 -0
  927. /package/{esm2020 → esm2022}/badge/mintplayer-ng-bootstrap-badge.mjs +0 -0
  928. /package/{esm2020 → esm2022}/badge/src/index.mjs +0 -0
  929. /package/{esm2020 → esm2022}/breadcrumb/index.mjs +0 -0
  930. /package/{esm2020 → esm2022}/breadcrumb/mintplayer-ng-bootstrap-breadcrumb.mjs +0 -0
  931. /package/{esm2020 → esm2022}/breadcrumb/src/index.mjs +0 -0
  932. /package/{esm2020 → esm2022}/button-group/index.mjs +0 -0
  933. /package/{esm2020 → esm2022}/button-group/mintplayer-ng-bootstrap-button-group.mjs +0 -0
  934. /package/{esm2020 → esm2022}/button-group/src/index.mjs +0 -0
  935. /package/{esm2020 → esm2022}/button-type/index.mjs +0 -0
  936. /package/{esm2020 → esm2022}/button-type/mintplayer-ng-bootstrap-button-type.mjs +0 -0
  937. /package/{esm2020 → esm2022}/button-type/src/index.mjs +0 -0
  938. /package/{esm2020 → esm2022}/calendar/index.mjs +0 -0
  939. /package/{esm2020 → esm2022}/calendar/mintplayer-ng-bootstrap-calendar.mjs +0 -0
  940. /package/{esm2020 → esm2022}/calendar/src/index.mjs +0 -0
  941. /package/{esm2020 → esm2022}/calendar-month/index.mjs +0 -0
  942. /package/{esm2020 → esm2022}/calendar-month/mintplayer-ng-bootstrap-calendar-month.mjs +0 -0
  943. /package/{esm2020 → esm2022}/calendar-month/src/index.mjs +0 -0
  944. /package/{esm2020 → esm2022}/calendar-month/src/interfaces/date-day-of-month.mjs +0 -0
  945. /package/{esm2020 → esm2022}/calendar-month/src/interfaces/first-and-last-date.mjs +0 -0
  946. /package/{esm2020 → esm2022}/calendar-month/src/interfaces/index.mjs +0 -0
  947. /package/{esm2020 → esm2022}/calendar-month/src/interfaces/week.mjs +0 -0
  948. /package/{esm2020 → esm2022}/calendar-month/src/interfaces/weekday.mjs +0 -0
  949. /package/{esm2020 → esm2022}/calendar-month/src/pipes/index.mjs +0 -0
  950. /package/{esm2020 → esm2022}/calendar-month/src/pipes/month-name/index.mjs +0 -0
  951. /package/{esm2020 → esm2022}/calendar-month/src/pipes/weekday-name/index.mjs +0 -0
  952. /package/{esm2020 → esm2022}/card/index.mjs +0 -0
  953. /package/{esm2020 → esm2022}/card/mintplayer-ng-bootstrap-card.mjs +0 -0
  954. /package/{esm2020 → esm2022}/card/src/index.mjs +0 -0
  955. /package/{esm2020 → esm2022}/carousel/index.mjs +0 -0
  956. /package/{esm2020 → esm2022}/carousel/mintplayer-ng-bootstrap-carousel.mjs +0 -0
  957. /package/{esm2020 → esm2022}/carousel/src/index.mjs +0 -0
  958. /package/{esm2020 → esm2022}/close/index.mjs +0 -0
  959. /package/{esm2020 → esm2022}/close/mintplayer-ng-bootstrap-close.mjs +0 -0
  960. /package/{esm2020 → esm2022}/close/src/index.mjs +0 -0
  961. /package/{esm2020 → esm2022}/code-snippet/index.mjs +0 -0
  962. /package/{esm2020 → esm2022}/code-snippet/mintplayer-ng-bootstrap-code-snippet.mjs +0 -0
  963. /package/{esm2020 → esm2022}/code-snippet/src/index.mjs +0 -0
  964. /package/{esm2020 → esm2022}/context-menu/index.mjs +0 -0
  965. /package/{esm2020 → esm2022}/context-menu/mintplayer-ng-bootstrap-context-menu.mjs +0 -0
  966. /package/{esm2020 → esm2022}/context-menu/src/index.mjs +0 -0
  967. /package/{esm2020 → esm2022}/copy/index.mjs +0 -0
  968. /package/{esm2020 → esm2022}/copy/mintplayer-ng-bootstrap-copy.mjs +0 -0
  969. /package/{esm2020 → esm2022}/copy/src/index.mjs +0 -0
  970. /package/{esm2020 → esm2022}/datatable/index.mjs +0 -0
  971. /package/{esm2020 → esm2022}/datatable/mintplayer-ng-bootstrap-datatable.mjs +0 -0
  972. /package/{esm2020 → esm2022}/datatable/src/datatable-column/datatable-column-metadata.mjs +0 -0
  973. /package/{esm2020 → esm2022}/datatable/src/datatable-column/index.mjs +0 -0
  974. /package/{esm2020 → esm2022}/datatable/src/datatable-settings.mjs +0 -0
  975. /package/{esm2020 → esm2022}/datatable/src/index.mjs +0 -0
  976. /package/{esm2020 → esm2022}/datepicker/index.mjs +0 -0
  977. /package/{esm2020 → esm2022}/datepicker/mintplayer-ng-bootstrap-datepicker.mjs +0 -0
  978. /package/{esm2020 → esm2022}/datepicker/src/index.mjs +0 -0
  979. /package/{esm2020 → esm2022}/dock/index.mjs +0 -0
  980. /package/{esm2020 → esm2022}/dock/mintplayer-ng-bootstrap-dock.mjs +0 -0
  981. /package/{esm2020 → esm2022}/dock/src/enums/index.mjs +0 -0
  982. /package/{esm2020 → esm2022}/dock/src/enums/pane-type.enum.mjs +0 -0
  983. /package/{esm2020 → esm2022}/dock/src/index.mjs +0 -0
  984. /package/{esm2020 → esm2022}/dock/src/interfaces/dock-layout.mjs +0 -0
  985. /package/{esm2020 → esm2022}/dock/src/interfaces/drag-operation.mjs +0 -0
  986. /package/{esm2020 → esm2022}/dock/src/interfaces/index.mjs +0 -0
  987. /package/{esm2020 → esm2022}/dock/src/interfaces/point.mjs +0 -0
  988. /package/{esm2020 → esm2022}/dock/src/interfaces/remove-from-pane-result.mjs +0 -0
  989. /package/{esm2020 → esm2022}/dock/src/interfaces/size.mjs +0 -0
  990. /package/{esm2020 → esm2022}/dock/src/panes/content-pane.mjs +0 -0
  991. /package/{esm2020 → esm2022}/dock/src/panes/dock-pane.mjs +0 -0
  992. /package/{esm2020 → esm2022}/dock/src/panes/document-host-pane.mjs +0 -0
  993. /package/{esm2020 → esm2022}/dock/src/panes/floating-pane.mjs +0 -0
  994. /package/{esm2020 → esm2022}/dock/src/panes/index.mjs +0 -0
  995. /package/{esm2020 → esm2022}/dock/src/panes/split-pane.mjs +0 -0
  996. /package/{esm2020 → esm2022}/dock/src/panes/tab-group-pane.mjs +0 -0
  997. /package/{esm2020 → esm2022}/dock/src/services/index.mjs +0 -0
  998. /package/{esm2020 → esm2022}/dock/src/types/split-pane-orientation.type.mjs +0 -0
  999. /package/{esm2020 → esm2022}/dropdown/index.mjs +0 -0
  1000. /package/{esm2020 → esm2022}/dropdown/mintplayer-ng-bootstrap-dropdown.mjs +0 -0
  1001. /package/{esm2020 → esm2022}/dropdown/src/index.mjs +0 -0
  1002. /package/{esm2020 → esm2022}/dropdown-divider/index.mjs +0 -0
  1003. /package/{esm2020 → esm2022}/dropdown-divider/mintplayer-ng-bootstrap-dropdown-divider.mjs +0 -0
  1004. /package/{esm2020 → esm2022}/dropdown-divider/src/index.mjs +0 -0
  1005. /package/{esm2020 → esm2022}/dropdown-menu/index.mjs +0 -0
  1006. /package/{esm2020 → esm2022}/dropdown-menu/mintplayer-ng-bootstrap-dropdown-menu.mjs +0 -0
  1007. /package/{esm2020 → esm2022}/dropdown-menu/src/index.mjs +0 -0
  1008. /package/{esm2020 → esm2022}/enhanced-paste/index.mjs +0 -0
  1009. /package/{esm2020 → esm2022}/enhanced-paste/mintplayer-ng-bootstrap-enhanced-paste.mjs +0 -0
  1010. /package/{esm2020 → esm2022}/enhanced-paste/src/index.mjs +0 -0
  1011. /package/{esm2020 → esm2022}/enhanced-paste/src/interfaces/number-overflow.mjs +0 -0
  1012. /package/{esm2020 → esm2022}/enum/index.mjs +0 -0
  1013. /package/{esm2020 → esm2022}/enum/mintplayer-ng-bootstrap-enum.mjs +0 -0
  1014. /package/{esm2020 → esm2022}/enum/src/index.mjs +0 -0
  1015. /package/{esm2020 → esm2022}/enum/src/interfaces/enum-item.mjs +0 -0
  1016. /package/{esm2020 → esm2022}/enum/src/interfaces/index.mjs +0 -0
  1017. /package/{esm2020 → esm2022}/file-upload/index.mjs +0 -0
  1018. /package/{esm2020 → esm2022}/file-upload/mintplayer-ng-bootstrap-file-upload.mjs +0 -0
  1019. /package/{esm2020 → esm2022}/file-upload/src/file-upload.mjs +0 -0
  1020. /package/{esm2020 → esm2022}/file-upload/src/index.mjs +0 -0
  1021. /package/{esm2020 → esm2022}/file-upload/src/pipes/index.mjs +0 -0
  1022. /package/{esm2020 → esm2022}/floating-labels/index.mjs +0 -0
  1023. /package/{esm2020 → esm2022}/floating-labels/mintplayer-ng-bootstrap-floating-labels.mjs +0 -0
  1024. /package/{esm2020 → esm2022}/floating-labels/src/index.mjs +0 -0
  1025. /package/{esm2020 → esm2022}/for/index.mjs +0 -0
  1026. /package/{esm2020 → esm2022}/for/mintplayer-ng-bootstrap-for.mjs +0 -0
  1027. /package/{esm2020 → esm2022}/for/src/index.mjs +0 -0
  1028. /package/{esm2020 → esm2022}/form/index.mjs +0 -0
  1029. /package/{esm2020 → esm2022}/form/mintplayer-ng-bootstrap-form.mjs +0 -0
  1030. /package/{esm2020 → esm2022}/form/src/index.mjs +0 -0
  1031. /package/{esm2020 → esm2022}/grid/index.mjs +0 -0
  1032. /package/{esm2020 → esm2022}/grid/mintplayer-ng-bootstrap-grid.mjs +0 -0
  1033. /package/{esm2020 → esm2022}/grid/src/directives/index.mjs +0 -0
  1034. /package/{esm2020 → esm2022}/grid/src/index.mjs +0 -0
  1035. /package/{esm2020 → esm2022}/grid/src/interfaces/column-definition.mjs +0 -0
  1036. /package/{esm2020 → esm2022}/grid/src/interfaces/index.mjs +0 -0
  1037. /package/{esm2020 → esm2022}/has-overlay/index.mjs +0 -0
  1038. /package/{esm2020 → esm2022}/has-overlay/mintplayer-ng-bootstrap-has-overlay.mjs +0 -0
  1039. /package/{esm2020 → esm2022}/has-overlay/src/index.mjs +0 -0
  1040. /package/{esm2020 → esm2022}/icon/index.mjs +0 -0
  1041. /package/{esm2020 → esm2022}/icon/mintplayer-ng-bootstrap-icon.mjs +0 -0
  1042. /package/{esm2020 → esm2022}/index.mjs +0 -0
  1043. /package/{esm2020 → esm2022}/input-group/index.mjs +0 -0
  1044. /package/{esm2020 → esm2022}/input-group/mintplayer-ng-bootstrap-input-group.mjs +0 -0
  1045. /package/{esm2020 → esm2022}/input-group/src/index.mjs +0 -0
  1046. /package/{esm2020 → esm2022}/instance-of/index.mjs +0 -0
  1047. /package/{esm2020 → esm2022}/instance-of/mintplayer-ng-bootstrap-instance-of.mjs +0 -0
  1048. /package/{esm2020 → esm2022}/instance-of/src/directives/index.mjs +0 -0
  1049. /package/{esm2020 → esm2022}/instance-of/src/directives/switch-view.mjs +0 -0
  1050. /package/{esm2020 → esm2022}/instance-of/src/index.mjs +0 -0
  1051. /package/{esm2020 → esm2022}/instance-of/src/interfaces/index.mjs +0 -0
  1052. /package/{esm2020 → esm2022}/instance-of/src/interfaces/instance-of-context.mjs +0 -0
  1053. /package/{esm2020 → esm2022}/instance-of/src/pipes/index.mjs +0 -0
  1054. /package/{esm2020 → esm2022}/instance-of/src/types/abstract.type.mjs +0 -0
  1055. /package/{esm2020 → esm2022}/instance-of/src/types/index.mjs +0 -0
  1056. /package/{esm2020 → esm2022}/lazy-loading/index.mjs +0 -0
  1057. /package/{esm2020 → esm2022}/lazy-loading/mintplayer-ng-bootstrap-lazy-loading.mjs +0 -0
  1058. /package/{esm2020 → esm2022}/lazy-loading/src/index.mjs +0 -0
  1059. /package/{esm2020 → esm2022}/let/index.mjs +0 -0
  1060. /package/{esm2020 → esm2022}/let/interfaces/index.mjs +0 -0
  1061. /package/{esm2020 → esm2022}/let/interfaces/let-context.mjs +0 -0
  1062. /package/{esm2020 → esm2022}/let/mintplayer-ng-bootstrap-let.mjs +0 -0
  1063. /package/{esm2020 → esm2022}/lib/enums/color.enum.mjs +0 -0
  1064. /package/{esm2020 → esm2022}/lib/enums/index.mjs +0 -0
  1065. /package/{esm2020 → esm2022}/lib/pipes/font-color/index.mjs +0 -0
  1066. /package/{esm2020 → esm2022}/lib/pipes/in-list/index.mjs +0 -0
  1067. /package/{esm2020 → esm2022}/lib/pipes/index.mjs +0 -0
  1068. /package/{esm2020 → esm2022}/lib/pipes/uc-first/index.mjs +0 -0
  1069. /package/{esm2020 → esm2022}/lib/providers/development.provider.mjs +0 -0
  1070. /package/{esm2020 → esm2022}/lib/providers/index.mjs +0 -0
  1071. /package/{esm2020 → esm2022}/lib/types/breakpoint.mjs +0 -0
  1072. /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
  1073. /package/{esm2020 → esm2022}/lib/types/position.mjs +0 -0
  1074. /package/{esm2020 → esm2022}/lib/types/size.mjs +0 -0
  1075. /package/{esm2020 → esm2022}/lib/types/view-state.type.mjs +0 -0
  1076. /package/{esm2020 → esm2022}/list-group/index.mjs +0 -0
  1077. /package/{esm2020 → esm2022}/list-group/mintplayer-ng-bootstrap-list-group.mjs +0 -0
  1078. /package/{esm2020 → esm2022}/list-group/src/index.mjs +0 -0
  1079. /package/{esm2020 → esm2022}/markdown/index.mjs +0 -0
  1080. /package/{esm2020 → esm2022}/markdown/mintplayer-ng-bootstrap-markdown.mjs +0 -0
  1081. /package/{esm2020 → esm2022}/mintplayer-ng-bootstrap.mjs +0 -0
  1082. /package/{esm2020 → esm2022}/modal/index.mjs +0 -0
  1083. /package/{esm2020 → esm2022}/modal/mintplayer-ng-bootstrap-modal.mjs +0 -0
  1084. /package/{esm2020 → esm2022}/modal/src/components/index.mjs +0 -0
  1085. /package/{esm2020 → esm2022}/modal/src/directives/index.mjs +0 -0
  1086. /package/{esm2020 → esm2022}/modal/src/index.mjs +0 -0
  1087. /package/{esm2020 → esm2022}/modal/src/providers/modal-content.provider.mjs +0 -0
  1088. /package/{esm2020 → esm2022}/modal/src/providers/portal-factory.provider.mjs +0 -0
  1089. /package/{esm2020 → esm2022}/multiselect/index.mjs +0 -0
  1090. /package/{esm2020 → esm2022}/multiselect/mintplayer-ng-bootstrap-multiselect.mjs +0 -0
  1091. /package/{esm2020 → esm2022}/multiselect/src/directives/index.mjs +0 -0
  1092. /package/{esm2020 → esm2022}/multiselect/src/index.mjs +0 -0
  1093. /package/{esm2020 → esm2022}/navbar/index.mjs +0 -0
  1094. /package/{esm2020 → esm2022}/navbar/mintplayer-ng-bootstrap-navbar.mjs +0 -0
  1095. /package/{esm2020 → esm2022}/navbar/src/index.mjs +0 -0
  1096. /package/{esm2020 → esm2022}/navigation-lock/index.mjs +0 -0
  1097. /package/{esm2020 → esm2022}/navigation-lock/mintplayer-ng-bootstrap-navigation-lock.mjs +0 -0
  1098. /package/{esm2020 → esm2022}/navigation-lock/src/index.mjs +0 -0
  1099. /package/{esm2020 → esm2022}/navigation-lock/src/interface/has-navigation-lock.mjs +0 -0
  1100. /package/{esm2020 → esm2022}/no-noscript/index.mjs +0 -0
  1101. /package/{esm2020 → esm2022}/no-noscript/mintplayer-ng-bootstrap-no-noscript.mjs +0 -0
  1102. /package/{esm2020 → esm2022}/no-noscript/src/index.mjs +0 -0
  1103. /package/{esm2020 → esm2022}/offcanvas/index.mjs +0 -0
  1104. /package/{esm2020 → esm2022}/offcanvas/mintplayer-ng-bootstrap-offcanvas.mjs +0 -0
  1105. /package/{esm2020 → esm2022}/offcanvas/src/components/index.mjs +0 -0
  1106. /package/{esm2020 → esm2022}/offcanvas/src/directives/index.mjs +0 -0
  1107. /package/{esm2020 → esm2022}/offcanvas/src/index.mjs +0 -0
  1108. /package/{esm2020 → esm2022}/offcanvas/src/providers/offcanvas-content.provider.mjs +0 -0
  1109. /package/{esm2020 → esm2022}/offcanvas/src/providers/portal-factory.provider.mjs +0 -0
  1110. /package/{esm2020 → esm2022}/ordinal-number/index.mjs +0 -0
  1111. /package/{esm2020 → esm2022}/ordinal-number/mintplayer-ng-bootstrap-ordinal-number.mjs +0 -0
  1112. /package/{esm2020 → esm2022}/ordinal-number/src/index.mjs +0 -0
  1113. /package/{esm2020 → esm2022}/pagination/index.mjs +0 -0
  1114. /package/{esm2020 → esm2022}/pagination/mintplayer-ng-bootstrap-pagination.mjs +0 -0
  1115. /package/{esm2020 → esm2022}/pagination/src/component/index.mjs +0 -0
  1116. /package/{esm2020 → esm2022}/pagination/src/index.mjs +0 -0
  1117. /package/{esm2020 → esm2022}/pagination/src/interfaces/index.mjs +0 -0
  1118. /package/{esm2020 → esm2022}/pagination/src/interfaces/page-with-selection.mjs +0 -0
  1119. /package/{esm2020 → esm2022}/pagination/src/types/index.mjs +0 -0
  1120. /package/{esm2020 → esm2022}/pagination/src/types/page-number.type.mjs +0 -0
  1121. /package/{esm2020 → esm2022}/placeholder/index.mjs +0 -0
  1122. /package/{esm2020 → esm2022}/placeholder/mintplayer-ng-bootstrap-placeholder.mjs +0 -0
  1123. /package/{esm2020 → esm2022}/placeholder/src/index.mjs +0 -0
  1124. /package/{esm2020 → esm2022}/popover/index.mjs +0 -0
  1125. /package/{esm2020 → esm2022}/popover/mintplayer-ng-bootstrap-popover.mjs +0 -0
  1126. /package/{esm2020 → esm2022}/popover/src/directives/index.mjs +0 -0
  1127. /package/{esm2020 → esm2022}/popover/src/index.mjs +0 -0
  1128. /package/{esm2020 → esm2022}/popover/src/providers/popover-content.provider.mjs +0 -0
  1129. /package/{esm2020 → esm2022}/popover/src/providers/portal-factory.provider.mjs +0 -0
  1130. /package/{esm2020 → esm2022}/progress-bar/index.mjs +0 -0
  1131. /package/{esm2020 → esm2022}/progress-bar/mintplayer-ng-bootstrap-progress-bar.mjs +0 -0
  1132. /package/{esm2020 → esm2022}/progress-bar/src/index.mjs +0 -0
  1133. /package/{esm2020 → esm2022}/range/index.mjs +0 -0
  1134. /package/{esm2020 → esm2022}/range/mintplayer-ng-bootstrap-range.mjs +0 -0
  1135. /package/{esm2020 → esm2022}/range/src/index.mjs +0 -0
  1136. /package/{esm2020 → esm2022}/rating/index.mjs +0 -0
  1137. /package/{esm2020 → esm2022}/rating/mintplayer-ng-bootstrap-rating.mjs +0 -0
  1138. /package/{esm2020 → esm2022}/rating/src/index.mjs +0 -0
  1139. /package/{esm2020 → esm2022}/resizable/index.mjs +0 -0
  1140. /package/{esm2020 → esm2022}/resizable/mintplayer-ng-bootstrap-resizable.mjs +0 -0
  1141. /package/{esm2020 → esm2022}/resizable/src/index.mjs +0 -0
  1142. /package/{esm2020 → esm2022}/resizable/src/interfaces/index.mjs +0 -0
  1143. /package/{esm2020 → esm2022}/resizable/src/interfaces/pointer-data.mjs +0 -0
  1144. /package/{esm2020 → esm2022}/resizable/src/interfaces/preset-position.mjs +0 -0
  1145. /package/{esm2020 → esm2022}/resizable/src/interfaces/resize-action.mjs +0 -0
  1146. /package/{esm2020 → esm2022}/resizable/src/providers/index.mjs +0 -0
  1147. /package/{esm2020 → esm2022}/resizable/src/providers/resizable.provider.mjs +0 -0
  1148. /package/{esm2020 → esm2022}/resizable/src/types/index.mjs +0 -0
  1149. /package/{esm2020 → esm2022}/resizable/src/types/positioning.mjs +0 -0
  1150. /package/{esm2020 → esm2022}/scheduler/index.mjs +0 -0
  1151. /package/{esm2020 → esm2022}/scheduler/mintplayer-ng-bootstrap-scheduler.mjs +0 -0
  1152. /package/{esm2020 → esm2022}/scheduler/src/components/index.mjs +0 -0
  1153. /package/{esm2020 → esm2022}/scheduler/src/constants/available-scales.mjs +0 -0
  1154. /package/{esm2020 → esm2022}/scheduler/src/constants/index.mjs +0 -0
  1155. /package/{esm2020 → esm2022}/scheduler/src/enums/drag-operation.mjs +0 -0
  1156. /package/{esm2020 → esm2022}/scheduler/src/enums/index.mjs +0 -0
  1157. /package/{esm2020 → esm2022}/scheduler/src/enums/scheduler-mode.mjs +0 -0
  1158. /package/{esm2020 → esm2022}/scheduler/src/index.mjs +0 -0
  1159. /package/{esm2020 → esm2022}/scheduler/src/interfaces/drag-operation.mjs +0 -0
  1160. /package/{esm2020 → esm2022}/scheduler/src/interfaces/index.mjs +0 -0
  1161. /package/{esm2020 → esm2022}/scheduler/src/interfaces/preview-event.mjs +0 -0
  1162. /package/{esm2020 → esm2022}/scheduler/src/interfaces/resource-group.mjs +0 -0
  1163. /package/{esm2020 → esm2022}/scheduler/src/interfaces/resource-or-group.mjs +0 -0
  1164. /package/{esm2020 → esm2022}/scheduler/src/interfaces/resource.mjs +0 -0
  1165. /package/{esm2020 → esm2022}/scheduler/src/interfaces/scheduler-event-part.mjs +0 -0
  1166. /package/{esm2020 → esm2022}/scheduler/src/interfaces/scheduler-event-with-parts.mjs +0 -0
  1167. /package/{esm2020 → esm2022}/scheduler/src/interfaces/scheduler-event.mjs +0 -0
  1168. /package/{esm2020 → esm2022}/scheduler/src/interfaces/scheduler-schale.mjs +0 -0
  1169. /package/{esm2020 → esm2022}/scheduler/src/interfaces/scheduler-stamp-with-slots.mjs +0 -0
  1170. /package/{esm2020 → esm2022}/scheduler/src/interfaces/time-slot.mjs +0 -0
  1171. /package/{esm2020 → esm2022}/scheduler/src/interfaces/timeline-options.mjs +0 -0
  1172. /package/{esm2020 → esm2022}/scheduler/src/interfaces/timeline-track.mjs +0 -0
  1173. /package/{esm2020 → esm2022}/scheduler/src/interfaces/week-options.mjs +0 -0
  1174. /package/{esm2020 → esm2022}/scrollspy/index.mjs +0 -0
  1175. /package/{esm2020 → esm2022}/scrollspy/mintplayer-ng-bootstrap-scrollspy.mjs +0 -0
  1176. /package/{esm2020 → esm2022}/scrollspy/src/index.mjs +0 -0
  1177. /package/{esm2020 → esm2022}/scrollspy/src/services/index.mjs +0 -0
  1178. /package/{esm2020 → esm2022}/select/index.mjs +0 -0
  1179. /package/{esm2020 → esm2022}/select/mintplayer-ng-bootstrap-select.mjs +0 -0
  1180. /package/{esm2020 → esm2022}/select/src/index.mjs +0 -0
  1181. /package/{esm2020 → esm2022}/select/src/types/index.mjs +0 -0
  1182. /package/{esm2020 → esm2022}/select/src/types/select-size.mjs +0 -0
  1183. /package/{esm2020 → esm2022}/select/src/value-accessors/index.mjs +0 -0
  1184. /package/{esm2020 → esm2022}/select2/index.mjs +0 -0
  1185. /package/{esm2020 → esm2022}/select2/mintplayer-ng-bootstrap-select2.mjs +0 -0
  1186. /package/{esm2020 → esm2022}/select2/src/index.mjs +0 -0
  1187. /package/{esm2020 → esm2022}/snackbar/index.mjs +0 -0
  1188. /package/{esm2020 → esm2022}/snackbar/mintplayer-ng-bootstrap-snackbar.mjs +0 -0
  1189. /package/{esm2020 → esm2022}/snackbar/src/directives/index.mjs +0 -0
  1190. /package/{esm2020 → esm2022}/snackbar/src/index.mjs +0 -0
  1191. /package/{esm2020 → esm2022}/snackbar/src/interfaces/index.mjs +0 -0
  1192. /package/{esm2020 → esm2022}/snackbar/src/interfaces/snackbar-animation-meta.mjs +0 -0
  1193. /package/{esm2020 → esm2022}/snackbar/src/providers/snackbar-content.provider.mjs +0 -0
  1194. /package/{esm2020 → esm2022}/spinner/index.mjs +0 -0
  1195. /package/{esm2020 → esm2022}/spinner/mintplayer-ng-bootstrap-spinner.mjs +0 -0
  1196. /package/{esm2020 → esm2022}/spinner/src/index.mjs +0 -0
  1197. /package/{esm2020 → esm2022}/splitter/index.mjs +0 -0
  1198. /package/{esm2020 → esm2022}/splitter/mintplayer-ng-bootstrap-splitter.mjs +0 -0
  1199. /package/{esm2020 → esm2022}/splitter/src/index.mjs +0 -0
  1200. /package/{esm2020 → esm2022}/splitter/src/interfaces/drag-operation.mjs +0 -0
  1201. /package/{esm2020 → esm2022}/splitter/src/interfaces/point.mjs +0 -0
  1202. /package/{esm2020 → esm2022}/splitter/src/types/direction.type.mjs +0 -0
  1203. /package/{esm2020 → esm2022}/splitter/src/types/index.mjs +0 -0
  1204. /package/{esm2020 → esm2022}/tab-control/index.mjs +0 -0
  1205. /package/{esm2020 → esm2022}/tab-control/mintplayer-ng-bootstrap-tab-control.mjs +0 -0
  1206. /package/{esm2020 → esm2022}/tab-control/src/index.mjs +0 -0
  1207. /package/{esm2020 → esm2022}/tab-control/src/tabs-position.mjs +0 -0
  1208. /package/{esm2020 → esm2022}/table/index.mjs +0 -0
  1209. /package/{esm2020 → esm2022}/table/mintplayer-ng-bootstrap-table.mjs +0 -0
  1210. /package/{esm2020 → esm2022}/table/src/index.mjs +0 -0
  1211. /package/{esm2020 → esm2022}/timepicker/index.mjs +0 -0
  1212. /package/{esm2020 → esm2022}/timepicker/mintplayer-ng-bootstrap-timepicker.mjs +0 -0
  1213. /package/{esm2020 → esm2022}/timepicker/src/index.mjs +0 -0
  1214. /package/{esm2020 → esm2022}/toast/index.mjs +0 -0
  1215. /package/{esm2020 → esm2022}/toast/mintplayer-ng-bootstrap-toast.mjs +0 -0
  1216. /package/{esm2020 → esm2022}/toast/src/components/index.mjs +0 -0
  1217. /package/{esm2020 → esm2022}/toast/src/directives/index.mjs +0 -0
  1218. /package/{esm2020 → esm2022}/toast/src/index.mjs +0 -0
  1219. /package/{esm2020 → esm2022}/toast/src/providers/portal-factory.provider.mjs +0 -0
  1220. /package/{esm2020 → esm2022}/toast/src/services/index.mjs +0 -0
  1221. /package/{esm2020 → esm2022}/toggle-button/index.mjs +0 -0
  1222. /package/{esm2020 → esm2022}/toggle-button/mintplayer-ng-bootstrap-toggle-button.mjs +0 -0
  1223. /package/{esm2020 → esm2022}/toggle-button/src/directives/index.mjs +0 -0
  1224. /package/{esm2020 → esm2022}/toggle-button/src/index.mjs +0 -0
  1225. /package/{esm2020 → esm2022}/toggle-button/src/types/check-style.mjs +0 -0
  1226. /package/{esm2020 → esm2022}/toggle-button/src/types/index.mjs +0 -0
  1227. /package/{esm2020 → esm2022}/tooltip/index.mjs +0 -0
  1228. /package/{esm2020 → esm2022}/tooltip/mintplayer-ng-bootstrap-tooltip.mjs +0 -0
  1229. /package/{esm2020 → esm2022}/tooltip/src/index.mjs +0 -0
  1230. /package/{esm2020 → esm2022}/tooltip/src/providers/tooltip-content.provider.mjs +0 -0
  1231. /package/{esm2020 → esm2022}/treeview/index.mjs +0 -0
  1232. /package/{esm2020 → esm2022}/treeview/mintplayer-ng-bootstrap-treeview.mjs +0 -0
  1233. /package/{esm2020 → esm2022}/treeview/src/index.mjs +0 -0
  1234. /package/{esm2020 → esm2022}/typeahead/index.mjs +0 -0
  1235. /package/{esm2020 → esm2022}/typeahead/mintplayer-ng-bootstrap-typeahead.mjs +0 -0
  1236. /package/{esm2020 → esm2022}/typeahead/src/index.mjs +0 -0
  1237. /package/{esm2020 → esm2022}/user-agent/index.mjs +0 -0
  1238. /package/{esm2020 → esm2022}/user-agent/mintplayer-ng-bootstrap-user-agent.mjs +0 -0
  1239. /package/{esm2020 → esm2022}/user-agent/src/directive/index.mjs +0 -0
  1240. /package/{esm2020 → esm2022}/user-agent/src/index.mjs +0 -0
  1241. /package/{esm2020 → esm2022}/user-agent/src/interfaces/index.mjs +0 -0
  1242. /package/{esm2020 → esm2022}/user-agent/src/interfaces/user-agent.mjs +0 -0
  1243. /package/{esm2020 → esm2022}/user-agent/src/types/index.mjs +0 -0
  1244. /package/{esm2020 → esm2022}/user-agent/src/types/operating-system.type.mjs +0 -0
  1245. /package/{esm2020 → esm2022}/user-agent/src/types/webbrowser.type.mjs +0 -0
@@ -0,0 +1,540 @@
1
+ import { Component, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest, filter, map, Subject, take, takeUntil } from 'rxjs';
3
+ import { BsCalendarMonthService } from '@mintplayer/ng-bootstrap/calendar-month';
4
+ import { ESchedulerMode } from '../../enums/scheduler-mode';
5
+ import { EDragOperation } from '../../enums/drag-operation';
6
+ import { BsTimelineService } from '../../services/timeline/timeline.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@mintplayer/ng-bootstrap/calendar-month";
9
+ import * as i2 from "../../services/timeline/timeline.service";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@mintplayer/ng-bootstrap/icon";
12
+ import * as i5 from "../resource-group-presenter/resource-group-presenter.component";
13
+ import * as i6 from "../../pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe";
14
+ import * as i7 from "../../pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe";
15
+ import * as i8 from "../../pipes/day-of-week/day-of-week.pipe";
16
+ class BsSchedulerComponent {
17
+ constructor(calendarMonthService, timelineService) {
18
+ this.calendarMonthService = calendarMonthService;
19
+ this.timelineService = timelineService;
20
+ this.resources$ = new BehaviorSubject([]);
21
+ this.weekOptions$ = new BehaviorSubject({ unitHeight: 30 });
22
+ this.timelineOptions$ = new BehaviorSubject({ unitWidth: 50 });
23
+ this.previewEvent$ = new BehaviorSubject(null);
24
+ this.timeSlotDuration$ = new BehaviorSubject(1800);
25
+ this.timeSlots$ = new BehaviorSubject([]);
26
+ this.mouseState$ = new BehaviorSubject(false);
27
+ this.hoveredTimeSlot$ = new BehaviorSubject(null);
28
+ this.hoveredEvent$ = new BehaviorSubject(null);
29
+ this.destroyed$ = new Subject();
30
+ this.resourceGroupPresenterCounter = 1;
31
+ //#region Mode
32
+ this.modes = ESchedulerMode;
33
+ this.mode$ = new BehaviorSubject(ESchedulerMode.week);
34
+ this.modeChange = new EventEmitter();
35
+ //#endregion
36
+ // //#region Scale
37
+ // scale$ = new BehaviorSubject<SchedulerScale>(availableScales[4]);
38
+ // @Output() public scaleChange = new EventEmitter<SchedulerScale>();
39
+ // public get scale() {
40
+ // return this.scale$.value;
41
+ // }
42
+ // @Input() public set scale(value: SchedulerScale) {
43
+ // this.scale$.next(value);
44
+ // }
45
+ // //#endregion
46
+ //#region WeekOptions
47
+ this.weekOptionsChange = new EventEmitter();
48
+ //#endregion
49
+ //#region TimelineOptions
50
+ this.timelineOptionsChange = new EventEmitter();
51
+ //#endregion
52
+ //#region maxInnerHeight
53
+ this.maxInnerHeight = null;
54
+ this.operation = null;
55
+ this.dragStartTimeslot = null;
56
+ const monday = this.calendarMonthService.getMondayBefore(new Date());
57
+ this.currentWeekOrMonth$ = new BehaviorSubject(monday);
58
+ this.shownDays$ = combineLatest([this.currentWeekOrMonth$, this.mode$])
59
+ .pipe(map(([currentDay, mode]) => {
60
+ currentDay.setHours(0);
61
+ currentDay.setMinutes(0);
62
+ currentDay.setSeconds(0);
63
+ currentDay.setMilliseconds(0);
64
+ switch (mode) {
65
+ case ESchedulerMode.week: {
66
+ return Array.from(Array(7).keys()).map((x) => this.addDays(currentDay, x));
67
+ }
68
+ case ESchedulerMode.timeline: {
69
+ const firstDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), 1);
70
+ const daysOfMonth = new Date(currentDay.getFullYear(), currentDay.getMonth() + 1, 0).getDate();
71
+ return Array.from(Array(daysOfMonth).keys()).map((x) => this.addDays(firstDay, x));
72
+ }
73
+ }
74
+ }));
75
+ this.daysOfWeekWithTimestamps$ = this.shownDays$
76
+ .pipe(map((shownDays) => ({ start: shownDays[0].getTime(), end: shownDays[shownDays.length - 1].getTime() + 24 * 60 * 60 * 1000 })));
77
+ this.events$ = this.resources$
78
+ .pipe(map((resourcesOrGroups) => resourcesOrGroups.map(resOrGroup => this.getResourcesForGroup(resOrGroup))))
79
+ .pipe(map(jaggedResources => jaggedResources.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
80
+ .pipe(map(resources => resources.map(res => res.events)))
81
+ .pipe(map(jaggedEvents => jaggedEvents.reduce((flat, toFlatten) => flat.concat(toFlatten), [])));
82
+ // groups.reduce((flat, toFlatten) => flat.concat(toFlatten.children), [])
83
+ this.eventParts$ = this.events$.pipe(map((events) => events.map((ev) => this.timelineService.splitInParts(ev))));
84
+ this.eventPartsForThisWeek$ = combineLatest([
85
+ this.daysOfWeekWithTimestamps$,
86
+ this.eventParts$
87
+ .pipe(map(eventParts => eventParts.map(evp => evp.parts)))
88
+ .pipe(map(jaggedParts => jaggedParts.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
89
+ ])
90
+ .pipe(map(([startAndEnd, eventParts]) => {
91
+ return eventParts.filter(eventPart => {
92
+ return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
93
+ });
94
+ }));
95
+ this.previewEventParts$ = this.previewEvent$.pipe(map((event) => {
96
+ if (event) {
97
+ return this.timelineService.splitInParts(event);
98
+ }
99
+ else {
100
+ return null;
101
+ }
102
+ }));
103
+ this.previewEventPartsForThisWeek$ = combineLatest([this.daysOfWeekWithTimestamps$, this.previewEventParts$])
104
+ .pipe(map(([startAndEnd, previewEventParts]) => {
105
+ if (previewEventParts) {
106
+ return previewEventParts.parts.filter(eventPart => {
107
+ return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
108
+ });
109
+ }
110
+ else {
111
+ return [];
112
+ }
113
+ }));
114
+ this.timelinedEventPartsForThisWeek$ = this.eventPartsForThisWeek$
115
+ .pipe(map(eventParts => {
116
+ // We'll only use the events for this week
117
+ const events = eventParts.map(ep => ep.event)
118
+ .filter((e, i, list) => list.indexOf(e) === i)
119
+ .filter((e) => !!e)
120
+ .map((e) => e);
121
+ const timeline = this.timelineService.getTimeline(events);
122
+ const result = timeline.map(track => track.events.map(ev => ({ event: ev, index: track.index })))
123
+ .reduce((flat, toFlatten) => flat.concat(toFlatten), [])
124
+ .map((evi) => eventParts.filter(p => p.event === evi.event).map(p => ({ part: p, index: evi.index })))
125
+ .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
126
+ return {
127
+ total: timeline.length,
128
+ parts: result
129
+ };
130
+ }));
131
+ combineLatest([this.mode$, this.shownDays$, this.timeSlotDuration$])
132
+ .pipe(filter(([mode, shownDays, duration]) => mode !== null))
133
+ .pipe(map(([mode, shownDays, duration]) => {
134
+ switch (mode) {
135
+ case ESchedulerMode.week: {
136
+ const timeSlotsPerDay = Math.floor((60 * 60 * 24) / duration);
137
+ return Array.from(Array(timeSlotsPerDay).keys()).map((index) => {
138
+ const timeslotForMonday = this.createTimeslot(shownDays[0], index, duration);
139
+ return {
140
+ slots: shownDays.map((day) => {
141
+ const start = new Date(day);
142
+ start.setHours(timeslotForMonday.start.getHours());
143
+ start.setMinutes(timeslotForMonday.start.getMinutes());
144
+ start.setSeconds(timeslotForMonday.start.getSeconds());
145
+ start.setMilliseconds(timeslotForMonday.start.getMilliseconds());
146
+ const end = new Date(day);
147
+ end.setHours(timeslotForMonday.end.getHours());
148
+ end.setMinutes(timeslotForMonday.end.getMinutes());
149
+ end.setSeconds(timeslotForMonday.end.getSeconds());
150
+ end.setMilliseconds(timeslotForMonday.end.getMilliseconds());
151
+ end.setDate(end.getDate() + timeslotForMonday.end.getDate() - timeslotForMonday.start.getDate());
152
+ return { start, end };
153
+ }),
154
+ stamp: timeslotForMonday.start
155
+ };
156
+ });
157
+ }
158
+ case ESchedulerMode.timeline: {
159
+ const totalTimeslots = (24 * 60 * 60) / duration;
160
+ return shownDays.map((day) => {
161
+ return {
162
+ slots: Array.from(Array(totalTimeslots).keys())
163
+ .map((index) => {
164
+ return this.createTimeslot(day, index, duration);
165
+ }),
166
+ stamp: day
167
+ };
168
+ });
169
+ }
170
+ default: {
171
+ throw 'Unknown value for Mode: ' + mode;
172
+ }
173
+ }
174
+ }))
175
+ .subscribe((timeslots) => {
176
+ // For performance reasons, we're not using an observable here, but persist the timeslots in a BehaviorSubject.
177
+ this.timeSlots$.next(timeslots);
178
+ });
179
+ this.weekOptions$
180
+ .pipe(takeUntil(this.destroyed$))
181
+ .subscribe((weekOptions) => {
182
+ this.weekOptionsChange.emit(weekOptions);
183
+ });
184
+ this.timelineOptions$
185
+ .pipe(takeUntil(this.destroyed$))
186
+ .subscribe((timelineOptions) => {
187
+ this.timelineOptionsChange.emit(timelineOptions);
188
+ });
189
+ // combineLatest([this.mode$, this.scale$])
190
+ // .pipe(filter(([mode, scale]) => mode === ESchedulerMode.timeline))
191
+ }
192
+ createTimeslot(date, index, duration) {
193
+ const timeSlotStart = new Date(date);
194
+ timeSlotStart.setTime(+timeSlotStart.getTime() + index * duration * 1000);
195
+ const timeSlotEnd = new Date(timeSlotStart);
196
+ timeSlotEnd.setTime(+timeSlotEnd.getTime() + duration * 1000);
197
+ return { start: timeSlotStart, end: timeSlotEnd };
198
+ }
199
+ getResourcesForGroup(resourceOrGroup) {
200
+ if ('children' in resourceOrGroup) {
201
+ return resourceOrGroup.children
202
+ .map((child) => this.getResourcesForGroup(child))
203
+ .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
204
+ }
205
+ else {
206
+ return [resourceOrGroup];
207
+ }
208
+ }
209
+ get mode() {
210
+ return this.mode$.value;
211
+ }
212
+ set mode(value) {
213
+ this.mode$.next(value);
214
+ }
215
+ get weekOptions() {
216
+ return this.weekOptions$.value;
217
+ }
218
+ set weekOptions(value) {
219
+ this.weekOptions$.next(value);
220
+ }
221
+ get timelineOptions() {
222
+ return this.timelineOptions$.value;
223
+ }
224
+ set timelineOptions(value) {
225
+ this.timelineOptions$.next(value);
226
+ }
227
+ //#endregion
228
+ //#region Resources
229
+ get resources() {
230
+ return this.resources$.value;
231
+ }
232
+ set resources(value) {
233
+ this.resources$.next(value);
234
+ }
235
+ //#endregion
236
+ addDays(date, days) {
237
+ const result = new Date(date);
238
+ result.setDate(result.getDate() + days);
239
+ return result;
240
+ }
241
+ onPreviousWeekOrMonth() {
242
+ this.onChangeWeekOrMonth(false);
243
+ }
244
+ onNextWeekOrMonth() {
245
+ this.onChangeWeekOrMonth(true);
246
+ }
247
+ onChangeWeekOrMonth(next) {
248
+ combineLatest([this.currentWeekOrMonth$, this.mode$])
249
+ .pipe(map(([currentWeekOrMonth, mode]) => {
250
+ switch (mode) {
251
+ case ESchedulerMode.week: {
252
+ return this.addDays(currentWeekOrMonth, (next ? 7 : -7));
253
+ }
254
+ case ESchedulerMode.timeline: {
255
+ return new Date(currentWeekOrMonth.getFullYear(), currentWeekOrMonth.getMonth() + (next ? 1 : -1), 1);
256
+ }
257
+ }
258
+ }), take(1))
259
+ .subscribe((w) => this.currentWeekOrMonth$.next(w));
260
+ }
261
+ onHoverEvent(ev) {
262
+ this.hoveredEvent$.next(ev);
263
+ }
264
+ onLeaveEvent(ev) {
265
+ this.hoveredEvent$.next(null);
266
+ }
267
+ onCreateEvent(ev, slot) {
268
+ ev.preventDefault();
269
+ this.mouseState$.next(true);
270
+ this.dragStartTimeslot = slot;
271
+ this.operation = {
272
+ operation: EDragOperation.createEvent,
273
+ event: {
274
+ start: slot.start,
275
+ end: slot.end,
276
+ color: '#F00',
277
+ description: 'Test event',
278
+ },
279
+ meta: null,
280
+ };
281
+ this.previewEvent$.next({ start: slot.start, end: slot.end });
282
+ }
283
+ randomColor() {
284
+ const brightness = 128;
285
+ return '#' + this.randomChannel(brightness) + this.randomChannel(brightness) + this.randomChannel(brightness);
286
+ }
287
+ randomChannel(brightness) {
288
+ const r = 255 - brightness;
289
+ const n = 0 | ((Math.random() * r) + brightness);
290
+ const s = n.toString(16);
291
+ return (s.length == 1) ? '0' + s : s;
292
+ }
293
+ onStartDragEvent(eventPart, ev) {
294
+ ev.preventDefault();
295
+ this.hoveredTimeSlot$.pipe(take(1)).subscribe((hoveredTimeSlot) => {
296
+ if (eventPart.event) {
297
+ this.dragStartTimeslot = hoveredTimeSlot;
298
+ this.operation = {
299
+ operation: EDragOperation.moveEvent,
300
+ event: eventPart.event,
301
+ meta: null,
302
+ };
303
+ this.previewEvent$.next({ start: eventPart.event.start, end: eventPart.event.end });
304
+ }
305
+ });
306
+ }
307
+ onStartResizeEvent(event, position) {
308
+ if (event) {
309
+ switch (position) {
310
+ case 'top':
311
+ {
312
+ this.operation = {
313
+ operation: EDragOperation.resizeEvent,
314
+ event: event,
315
+ meta: { position },
316
+ };
317
+ this.previewEvent$.next({ start: event.start, end: event.end });
318
+ }
319
+ break;
320
+ case 'bottom':
321
+ {
322
+ this.operation = {
323
+ operation: EDragOperation.resizeEvent,
324
+ event: event,
325
+ meta: { position },
326
+ };
327
+ this.previewEvent$.next({ start: event.start, end: event.end });
328
+ }
329
+ break;
330
+ }
331
+ }
332
+ }
333
+ //#region hoveredTimeslot$
334
+ getHoveredTimeslot(ev, timeSlots) {
335
+ const hoveredSlots = this.timeSlotElements.filter((el) => {
336
+ const rct = el.nativeElement.getBoundingClientRect();
337
+ if (rct.left <= ev.x && ev.x <= rct.right && rct.top <= ev.y && ev.y <= rct.bottom) {
338
+ return true;
339
+ }
340
+ else {
341
+ return false;
342
+ }
343
+ });
344
+ if (!hoveredSlots || hoveredSlots.length === 0) {
345
+ return null;
346
+ }
347
+ const slotElement = hoveredSlots[0].nativeElement;
348
+ const strRow = slotElement.getAttribute('data-row');
349
+ if (!strRow) {
350
+ return null;
351
+ }
352
+ const row = parseInt(strRow);
353
+ const strColumn = slotElement.getAttribute('data-column');
354
+ if (!strColumn) {
355
+ return null;
356
+ }
357
+ const column = parseInt(strColumn);
358
+ const slot = timeSlots[row].slots[column];
359
+ return slot;
360
+ }
361
+ onMousemove(ev) {
362
+ this.timeSlots$.pipe(take(1)).subscribe((timeSlots) => {
363
+ const hovered = this.getHoveredTimeslot(ev, timeSlots);
364
+ this.hoveredTimeSlot$.next(hovered);
365
+ if (this.operation) {
366
+ switch (this.operation.operation) {
367
+ case EDragOperation.createEvent:
368
+ {
369
+ if (this.operation.event && this.dragStartTimeslot && hovered && (this.operation.event.end.getTime() != hovered.end.getTime())) {
370
+ if (this.dragStartTimeslot.start.getTime() === hovered.start.getTime()) {
371
+ // 1 slot
372
+ }
373
+ else if (this.dragStartTimeslot.start.getTime() < hovered.start.getTime()) {
374
+ // Drag down
375
+ this.previewEvent$
376
+ .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
377
+ .pipe(map((ev) => {
378
+ if (ev && this.dragStartTimeslot) {
379
+ ev.start = this.dragStartTimeslot.start;
380
+ ev.end = hovered.end;
381
+ }
382
+ return ev;
383
+ }))
384
+ .pipe(take(1))
385
+ .subscribe((ev) => this.previewEvent$.next(ev));
386
+ }
387
+ else if (this.dragStartTimeslot.start.getTime() > hovered.start.getTime()) {
388
+ // Drag up
389
+ this.previewEvent$
390
+ .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
391
+ .pipe(map((ev) => {
392
+ if (ev && this.dragStartTimeslot) {
393
+ ev.start = hovered.start;
394
+ ev.end = this.dragStartTimeslot.end;
395
+ }
396
+ return ev;
397
+ }))
398
+ .pipe(take(1))
399
+ .subscribe((ev) => this.previewEvent$.next(ev));
400
+ }
401
+ }
402
+ }
403
+ break;
404
+ case EDragOperation.moveEvent:
405
+ {
406
+ if (hovered && this.dragStartTimeslot) {
407
+ this.previewEvent$
408
+ .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
409
+ .pipe(map((ev) => {
410
+ if (ev && this.dragStartTimeslot) {
411
+ const result = {
412
+ start: new Date(ev.start.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime()),
413
+ end: new Date(ev.end.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime())
414
+ };
415
+ this.dragStartTimeslot = hovered;
416
+ return result;
417
+ }
418
+ else {
419
+ return ev;
420
+ }
421
+ }))
422
+ .pipe(take(1))
423
+ .subscribe(ev => this.previewEvent$.next(ev));
424
+ }
425
+ }
426
+ break;
427
+ case EDragOperation.resizeEvent:
428
+ {
429
+ if (hovered) {
430
+ this.previewEvent$
431
+ .pipe(filter((ev) => !!ev))
432
+ .pipe(map((ev) => {
433
+ if (ev && this.operation && this.operation.event) {
434
+ if (this.operation.meta.position === 'top') {
435
+ ev.start = hovered.start;
436
+ ev.end = this.operation.event.end;
437
+ }
438
+ else if (this.operation.meta.position === 'bottom') {
439
+ ev.start = this.operation.event.start;
440
+ ev.end = hovered.end;
441
+ }
442
+ }
443
+ return ev;
444
+ }))
445
+ .pipe(take(1))
446
+ .subscribe((ev) => this.previewEvent$.next(ev));
447
+ }
448
+ }
449
+ break;
450
+ }
451
+ }
452
+ });
453
+ }
454
+ //#endregion
455
+ onMouseUp(ev) {
456
+ if (this.operation) {
457
+ switch (this.operation.operation) {
458
+ case EDragOperation.createEvent:
459
+ {
460
+ combineLatest([this.previewEvent$])
461
+ .pipe(take(1))
462
+ .subscribe(([previewEvent]) => {
463
+ if (previewEvent) {
464
+ this.operation = null;
465
+ this.dragStartTimeslot = null;
466
+ this.resources$.next([
467
+ ...this.resources$.value,
468
+ {
469
+ description: 'New resource group',
470
+ events: [{
471
+ start: previewEvent.start,
472
+ end: previewEvent.end,
473
+ color: this.randomColor(),
474
+ description: 'New event'
475
+ }]
476
+ }
477
+ ]);
478
+ this.previewEvent$.next(null);
479
+ }
480
+ });
481
+ }
482
+ break;
483
+ case EDragOperation.moveEvent:
484
+ case EDragOperation.resizeEvent:
485
+ {
486
+ this.previewEvent$
487
+ .pipe(filter((ev) => !!ev))
488
+ .pipe(take(1))
489
+ .subscribe((previewEvent) => {
490
+ if (this.operation && this.operation.event && previewEvent) {
491
+ this.operation.event.start = previewEvent.start;
492
+ this.operation.event.end = previewEvent.end;
493
+ this.operation = null;
494
+ this.dragStartTimeslot = null;
495
+ this.resources$.next(this.resources$.value);
496
+ this.previewEvent$.next(null);
497
+ }
498
+ });
499
+ }
500
+ break;
501
+ }
502
+ }
503
+ }
504
+ ngOnDestroy() {
505
+ this.destroyed$.next(true);
506
+ }
507
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BsSchedulerComponent, deps: [{ token: i1.BsCalendarMonthService }, { token: i2.BsTimelineService }], target: i0.ɵɵFactoryTarget.Component }); }
508
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: BsSchedulerComponent, selector: "bs-scheduler", inputs: { mode: "mode", weekOptions: "weekOptions", timelineOptions: "timelineOptions", maxInnerHeight: "maxInnerHeight", resources: "resources" }, outputs: { modeChange: "modeChange", weekOptionsChange: "weekOptionsChange", timelineOptionsChange: "timelineOptionsChange" }, host: { listeners: { "document:mousemove": "onMousemove($event)", "document:mouseup": "onMouseUp($event)" } }, viewQueries: [{ propertyName: "timeSlotElements", predicate: ["slot"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\n *ngIf=\"(mode$ | async) === modes.week\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\n <!-- Timeslots -->\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n </div>\n\n <!-- Events -->\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n\n <div class=\"event-resize top\"\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n <div class=\"event-border\"></div>\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n <div class=\"event-resize bottom\"\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <tr>\n <td></td>\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n </tr>\n <tr>\n <td></td>\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\n <ng-container *ngFor=\"let day of timeSlots\">\n <td *ngFor=\"let slot of day.slots\">\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n </ng-container>\n </table>\n </div>\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.BsIconComponent, selector: "bs-icon", inputs: ["icon"] }, { kind: "component", type: i5.ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i6.BsSecondsTimespanPipe, name: "bsSecondsTimespan" }, { kind: "pipe", type: i7.BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" }, { kind: "pipe", type: i8.DayOfWeekPipe, name: "dayOfWeek" }] }); }
509
+ }
510
+ export { BsSchedulerComponent };
511
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BsSchedulerComponent, decorators: [{
512
+ type: Component,
513
+ args: [{ selector: 'bs-scheduler', template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\n *ngIf=\"(mode$ | async) === modes.week\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\n <!-- Timeslots -->\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n </div>\n\n <!-- Events -->\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n\n <div class=\"event-resize top\"\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n <div class=\"event-border\"></div>\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n <div class=\"event-resize bottom\"\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <tr>\n <td></td>\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n </tr>\n <tr>\n <td></td>\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\n <ng-container *ngFor=\"let day of timeSlots\">\n <td *ngFor=\"let slot of day.slots\">\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n </ng-container>\n </table>\n </div>\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"] }]
514
+ }], ctorParameters: function () { return [{ type: i1.BsCalendarMonthService }, { type: i2.BsTimelineService }]; }, propDecorators: { timeSlotElements: [{
515
+ type: ViewChildren,
516
+ args: ['slot']
517
+ }], modeChange: [{
518
+ type: Output
519
+ }], mode: [{
520
+ type: Input
521
+ }], weekOptionsChange: [{
522
+ type: Output
523
+ }], weekOptions: [{
524
+ type: Input
525
+ }], timelineOptionsChange: [{
526
+ type: Output
527
+ }], timelineOptions: [{
528
+ type: Input
529
+ }], maxInnerHeight: [{
530
+ type: Input
531
+ }], resources: [{
532
+ type: Input
533
+ }], onMousemove: [{
534
+ type: HostListener,
535
+ args: ['document:mousemove', ['$event']]
536
+ }], onMouseUp: [{
537
+ type: HostListener,
538
+ args: ['document:mouseup', ['$event']]
539
+ }] } });
540
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9jb21wb25lbnRzL3NjaGVkdWxlci9zY2hlZHVsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zY2hlZHVsZXIvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGVyL3NjaGVkdWxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU81RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7OztBQU83RSxNQUthLG9CQUFvQjtJQUMvQixZQUFvQixvQkFBNEMsRUFBVSxlQUFrQztRQUF4Rix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXdCO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBNko1RyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQStCLEVBQUUsQ0FBQyxDQUFDO1FBS25FLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQWMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUUzRSxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQU8vRCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUN0RCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQTRCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEQscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQWtCLElBQUksQ0FBQyxDQUFDO1FBQzlELGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQXdCLElBQUksQ0FBQyxDQUFDO1FBQ2pFLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzNCLGtDQUE2QixHQUFHLENBQUMsQ0FBQztRQXVCbEMsY0FBYztRQUNkLFVBQUssR0FBRyxjQUFjLENBQUM7UUFDdkIsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFpQixjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBT2pFLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsb0VBQW9FO1FBQ3BFLHFFQUFxRTtRQUNyRSx1QkFBdUI7UUFDdkIsOEJBQThCO1FBQzlCLElBQUk7UUFDSixxREFBcUQ7UUFDckQsNkJBQTZCO1FBQzdCLElBQUk7UUFDSixlQUFlO1FBQ2YscUJBQXFCO1FBQ0osc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQU9yRSxZQUFZO1FBQ1oseUJBQXlCO1FBQ1IsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFPN0UsWUFBWTtRQUNaLHdCQUF3QjtRQUNSLG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQWdEckQsY0FBUyxHQUF5QixJQUFJLENBQUM7UUFDdkMsc0JBQWlCLEdBQW9CLElBQUksQ0FBQztRQWpTeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFPLE1BQU0sQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNwRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUMvQixVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLFFBQVEsSUFBSSxFQUFFO2dCQUNaLEtBQUssY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN4QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM1RTtnQkFDRCxLQUFLLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDOUUsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQy9GLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3BGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxVQUFVO2FBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2SSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVO2FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1RyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNyRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakcsMEVBQTBFO1FBQzVFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUM1RSxDQUFDO1FBRUYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGFBQWEsQ0FBQztZQUMxQyxJQUFJLENBQUMseUJBQXlCO1lBQzlCLElBQUksQ0FBQyxXQUFXO2lCQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ3pELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2hHLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRTtZQUN0QyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdHLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVOLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDL0MsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWixJQUFJLEtBQUssRUFBRTtnQkFDVCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQ2hEO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLDZCQUE2QixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQzthQUMxRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxFQUFFO1lBQzdDLElBQUksaUJBQWlCLEVBQUU7Z0JBQ3JCLE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDaEQsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdHLENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsT0FBTyxFQUFFLENBQUM7YUFDWDtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQjthQUMvRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JCLDBDQUEwQztZQUMxQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM3QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2xCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTFELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUM5RixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDdkQsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3JHLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFM0QsT0FBTztnQkFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3RCLEtBQUssRUFBRSxNQUFNO2FBQ2QsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDakUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO2FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxRQUFRLElBQUksRUFBRTtnQkFDWixLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDeEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7b0JBQzlELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDN0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBRTdFLE9BQWdDOzRCQUM5QixLQUFLLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dDQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQ0FDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQ0FDbkQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQ0FDdkQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQ0FDdkQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztnQ0FFakUsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQzFCLEdBQUcsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0NBQy9DLEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0NBQ25ELEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0NBQ25ELEdBQUcsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7Z0NBQzdELEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQ0FFakcsT0FBaUIsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7NEJBQ2xDLENBQUMsQ0FBQzs0QkFDRixLQUFLLEVBQUUsaUJBQWlCLENBQUMsS0FBSzt5QkFDL0IsQ0FBQztvQkFDSixDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxLQUFLLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztvQkFDakQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7d0JBQzNCLE9BQWdDOzRCQUM5QixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7aUNBQzVDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dDQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDOzRCQUNuRCxDQUFDLENBQUM7NEJBQ0osS0FBSyxFQUFFLEdBQUc7eUJBQ1gsQ0FBQTtvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxPQUFPLENBQUMsQ0FBQztvQkFDUCxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQztpQkFDekM7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0YsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDdkIsK0dBQStHO1lBQy9HLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVk7YUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDaEMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxnQkFBZ0I7YUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDaEMsU0FBUyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVMLDJDQUEyQztRQUMzQyx1RUFBdUU7SUFFekUsQ0FBQztJQTJCRCxjQUFjLENBQUMsSUFBVSxFQUFFLEtBQWEsRUFBRSxRQUFnQjtRQUN4RCxNQUFNLGFBQWEsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDMUUsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFOUQsT0FBaUIsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsZUFBeUM7UUFDNUQsSUFBSSxVQUFVLElBQUksZUFBZSxFQUFFO1lBQ2pDLE9BQU8sZUFBZSxDQUFDLFFBQVE7aUJBQzVCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoRCxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDTCxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBTUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBb0IsSUFBSSxDQUFDLEtBQXFCO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFjRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBb0IsV0FBVyxDQUFDLEtBQWtCO1FBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFJRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFvQixlQUFlLENBQUMsS0FBc0I7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBSUQsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBb0IsU0FBUyxDQUFDLEtBQW1DO1FBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRCxZQUFZO0lBRUosT0FBTyxDQUFDLElBQVUsRUFBRSxJQUFZO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQWE7UUFDdkMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLFFBQVEsSUFBSSxFQUFFO2dCQUNaLEtBQUssY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMxRDtnQkFDRCxLQUFLLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUIsT0FBTyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN2RzthQUNGO1FBQ0gsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1gsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUF5QjtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWSxDQUFDLEVBQXlCO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFJRCxhQUFhLENBQUMsRUFBYyxFQUFFLElBQWM7UUFDMUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLFNBQVMsRUFBRSxjQUFjLENBQUMsV0FBVztZQUNyQyxLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsV0FBVyxFQUFFLFlBQVk7YUFDMUI7WUFDRCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUN2QixPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBQ0QsYUFBYSxDQUFDLFVBQWtCO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBQyxVQUFVLENBQUM7UUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUE2QixFQUFFLEVBQWM7UUFDNUQsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDaEUsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO2dCQUNuQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsZUFBZSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHO29CQUNmLFNBQVMsRUFBRSxjQUFjLENBQUMsU0FBUztvQkFDbkMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO29CQUN0QixJQUFJLEVBQUUsSUFBSTtpQkFDWCxDQUFDO2dCQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDckY7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUE0QixFQUFFLFFBQTBCO1FBQ3pFLElBQUksS0FBSyxFQUFFO1lBQ1QsUUFBUSxRQUFRLEVBQUU7Z0JBQ2hCLEtBQUssS0FBSztvQkFBRTt3QkFDVixJQUFJLENBQUMsU0FBUyxHQUFHOzRCQUNmLFNBQVMsRUFBRSxjQUFjLENBQUMsV0FBVzs0QkFDckMsS0FBSyxFQUFFLEtBQUs7NEJBQ1osSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFO3lCQUNuQixDQUFBO3dCQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO3FCQUNqRTtvQkFBQyxNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFBRTt3QkFDYixJQUFJLENBQUMsU0FBUyxHQUFHOzRCQUNmLFNBQVMsRUFBRSxjQUFjLENBQUMsV0FBVzs0QkFDckMsS0FBSyxFQUFFLEtBQUs7NEJBQ1osSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFO3lCQUNuQixDQUFBO3dCQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO3FCQUNqRTtvQkFBQyxNQUFNO2FBQ1Q7U0FDRjtJQUNILENBQUM7SUFFRCwwQkFBMEI7SUFDbEIsa0JBQWtCLENBQUMsRUFBYyxFQUFFLFNBQW9DO1FBQzdFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN2RCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDckQsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xGLE9BQU8sSUFBSSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM5QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUVsRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdCLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbkMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHRCxXQUFXLENBQUMsRUFBYztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFcEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO29CQUNoQyxLQUFLLGNBQWMsQ0FBQyxXQUFXO3dCQUFFOzRCQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO2dDQUM5SCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQ0FDdEUsU0FBUztpQ0FDVjtxQ0FBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQ0FDM0UsWUFBWTtvQ0FDWixJQUFJLENBQUMsYUFBYTt5Q0FDZixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzt5Q0FDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO3dDQUNmLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTs0Q0FDaEMsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDOzRDQUN4QyxFQUFFLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7eUNBQ3RCO3dDQUNELE9BQU8sRUFBRSxDQUFDO29DQUNaLENBQUMsQ0FBQyxDQUFDO3lDQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7eUNBQ2IsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lDQUNuRDtxQ0FBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQ0FDM0UsVUFBVTtvQ0FDVixJQUFJLENBQUMsYUFBYTt5Q0FDZixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzt5Q0FDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO3dDQUNmLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTs0Q0FDaEMsRUFBRSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDOzRDQUN6QixFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7eUNBQ3JDO3dDQUNELE9BQU8sRUFBRSxDQUFDO29DQUNaLENBQUMsQ0FBQyxDQUFDO3lDQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7eUNBQ2IsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lDQUNuRDs2QkFDRjt5QkFDRjt3QkFBQyxNQUFNO29CQUNSLEtBQUssY0FBYyxDQUFDLFNBQVM7d0JBQUU7NEJBQzdCLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQ0FDckMsSUFBSSxDQUFDLGFBQWE7cUNBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7cUNBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQ0FDZixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7d0NBQ2hDLE1BQU0sTUFBTSxHQUFrQjs0Q0FDNUIsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRDQUN0RyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7eUNBQ25HLENBQUM7d0NBRUYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQzt3Q0FFakMsT0FBTyxNQUFNLENBQUM7cUNBQ2Y7eUNBQU07d0NBQ0wsT0FBTyxFQUFFLENBQUM7cUNBQ1g7Z0NBQ0gsQ0FBQyxDQUFDLENBQUM7cUNBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQ0FDYixTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzZCQUNqRDt5QkFDRjt3QkFBQyxNQUFNO29CQUNSLEtBQUssY0FBYyxDQUFDLFdBQVc7d0JBQUU7NEJBQy9CLElBQUksT0FBTyxFQUFFO2dDQUNYLElBQUksQ0FBQyxhQUFhO3FDQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQ0FDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO29DQUNmLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7d0NBQ2hELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRTs0Q0FDMUMsRUFBRSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDOzRDQUN6QixFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzt5Q0FDbkM7NkNBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFOzRDQUNwRCxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzs0Q0FDdEMsRUFBRSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO3lDQUN0QjtxQ0FDRjtvQ0FDRCxPQUFPLEVBQUUsQ0FBQztnQ0FDWixDQUFDLENBQUMsQ0FBQztxQ0FDRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FDQUNiLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs2QkFDbkQ7eUJBQ0Y7d0JBQUMsTUFBTTtpQkFDVDthQUNGO1FBRUgsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsWUFBWTtJQUdaLFNBQVMsQ0FBQyxFQUFjO1FBQ3RCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO2dCQUNoQyxLQUFLLGNBQWMsQ0FBQyxXQUFXO29CQUFFO3dCQUMvQixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7NkJBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFOzRCQUM1QixJQUFJLFlBQVksRUFBRTtnQ0FDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0NBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0NBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO29DQUNuQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSztvQ0FDZDt3Q0FDUixXQUFXLEVBQUUsb0JBQW9CO3dDQUNqQyxNQUFNLEVBQUUsQ0FBQztnREFDUCxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUs7Z0RBQ3pCLEdBQUcsRUFBRSxZQUFZLENBQUMsR0FBRztnREFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0RBQ3pCLFdBQVcsRUFBRSxXQUFXOzZDQUN6QixDQUFDO3FDQUNIO2lDQUNGLENBQUMsQ0FBQztnQ0FDSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs2QkFDL0I7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7cUJBQ047b0JBQUMsTUFBTTtnQkFDUixLQUFLLGNBQWMsQ0FBQyxTQUFTLENBQUM7Z0JBQzlCLEtBQUssY0FBYyxDQUFDLFdBQVc7b0JBQUU7d0JBQy9CLElBQUksQ0FBQyxhQUFhOzZCQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs2QkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs2QkFDYixTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTs0QkFDMUIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLFlBQVksRUFBRTtnQ0FDMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7Z0NBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDO2dDQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQ0FDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQ0FDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7NkJBQy9CO3dCQUNILENBQUMsQ0FBQyxDQUFDO3FCQUNOO29CQUFDLE1BQU07YUFDVDtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQWxoQlUsb0JBQW9CO2tHQUFwQixvQkFBb0IsbWhCQ3ZCakMsNjBPQTRHTTs7U0RyRk8sb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsY0FBYzs2SUF5TEYsZ0JBQWdCO3NCQUFyQyxZQUFZO3VCQUFDLE1BQU07Z0JBd0JILFVBQVU7c0JBQTFCLE1BQU07Z0JBSWEsSUFBSTtzQkFBdkIsS0FBSztnQkFlVyxpQkFBaUI7c0JBQWpDLE1BQU07Z0JBSWEsV0FBVztzQkFBOUIsS0FBSztnQkFLVyxxQkFBcUI7c0JBQXJDLE1BQU07Z0JBSWEsZUFBZTtzQkFBbEMsS0FBSztnQkFLVSxjQUFjO3NCQUE3QixLQUFLO2dCQU1jLFNBQVM7c0JBQTVCLEtBQUs7Z0JBZ0pOLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkEyRjlDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnNDYWxlbmRhck1vbnRoU2VydmljZSB9IGZyb20gJ0BtaW50cGxheWVyL25nLWJvb3RzdHJhcC9jYWxlbmRhci1tb250aCc7XG5pbXBvcnQgeyBFU2NoZWR1bGVyTW9kZSB9IGZyb20gJy4uLy4uL2VudW1zL3NjaGVkdWxlci1tb2RlJztcbmltcG9ydCB7IEVEcmFnT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvZHJhZy1vcGVyYXRpb24nO1xuaW1wb3J0IHsgRHJhZ09wZXJhdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZHJhZy1vcGVyYXRpb24nO1xuaW1wb3J0IHsgUHJldmlld0V2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wcmV2aWV3LWV2ZW50JztcbmltcG9ydCB7IFNjaGVkdWxlckV2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnRQYXJ0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQtcGFydCc7XG5pbXBvcnQgeyBTY2hlZHVsZXJFdmVudFdpdGhQYXJ0cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLWV2ZW50LXdpdGgtcGFydHMnO1xuaW1wb3J0IHsgVGltZVNsb3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3RpbWUtc2xvdCc7XG5pbXBvcnQgeyBCc1RpbWVsaW5lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpbWVsaW5lL3RpbWVsaW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVzb3VyY2UtZ3JvdXAnO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Jlc291cmNlJztcbmltcG9ydCB7IFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItc3RhbXAtd2l0aC1zbG90cyc7XG5pbXBvcnQgeyBXZWVrT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2Vlay1vcHRpb25zJztcbmltcG9ydCB7IFRpbWVsaW5lT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGltZWxpbmUtb3B0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLXNjaGVkdWxlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2hlZHVsZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY2hlZHVsZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnNTY2hlZHVsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhbGVuZGFyTW9udGhTZXJ2aWNlOiBCc0NhbGVuZGFyTW9udGhTZXJ2aWNlLCBwcml2YXRlIHRpbWVsaW5lU2VydmljZTogQnNUaW1lbGluZVNlcnZpY2UpIHtcbiAgICBjb25zdCBtb25kYXkgPSB0aGlzLmNhbGVuZGFyTW9udGhTZXJ2aWNlLmdldE1vbmRheUJlZm9yZShuZXcgRGF0ZSgpKTtcbiAgICB0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KG1vbmRheSk7XG5cbiAgICB0aGlzLnNob3duRGF5cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQsIHRoaXMubW9kZSRdKVxuICAgICAgLnBpcGUobWFwKChbY3VycmVudERheSwgbW9kZV0pID0+IHtcbiAgICAgICAgY3VycmVudERheS5zZXRIb3VycygwKTtcbiAgICAgICAgY3VycmVudERheS5zZXRNaW51dGVzKDApO1xuICAgICAgICBjdXJyZW50RGF5LnNldFNlY29uZHMoMCk7XG4gICAgICAgIGN1cnJlbnREYXkuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKEFycmF5KDcpLmtleXMoKSkubWFwKCh4KSA9PiB0aGlzLmFkZERheXMoY3VycmVudERheSwgeCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKGN1cnJlbnREYXkuZ2V0RnVsbFllYXIoKSwgY3VycmVudERheS5nZXRNb250aCgpLCAxKTtcbiAgICAgICAgICAgIGNvbnN0IGRheXNPZk1vbnRoID0gbmV3IERhdGUoY3VycmVudERheS5nZXRGdWxsWWVhcigpLCBjdXJyZW50RGF5LmdldE1vbnRoKCkgKyAxLCAwKS5nZXREYXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShBcnJheShkYXlzT2ZNb250aCkua2V5cygpKS5tYXAoKHgpID0+IHRoaXMuYWRkRGF5cyhmaXJzdERheSwgeCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5kYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkID0gdGhpcy5zaG93bkRheXMkXG4gICAgICAucGlwZShtYXAoKHNob3duRGF5cykgPT4gKHsgc3RhcnQ6IHNob3duRGF5c1swXS5nZXRUaW1lKCksIGVuZDogc2hvd25EYXlzW3Nob3duRGF5cy5sZW5ndGggLSAxXS5nZXRUaW1lKCkgKyAyNCAqIDYwICogNjAgKiAxMDAwIH0pKSk7XG4gICAgXG4gICAgdGhpcy5ldmVudHMkID0gdGhpcy5yZXNvdXJjZXMkXG4gICAgICAucGlwZShtYXAoKHJlc291cmNlc09yR3JvdXBzKSA9PiByZXNvdXJjZXNPckdyb3Vwcy5tYXAocmVzT3JHcm91cCA9PiB0aGlzLmdldFJlc291cmNlc0Zvckdyb3VwKHJlc09yR3JvdXApKSkpXG4gICAgICAucGlwZShtYXAoamFnZ2VkUmVzb3VyY2VzID0+IGphZ2dlZFJlc291cmNlcy5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pKSlcbiAgICAgIC5waXBlKG1hcChyZXNvdXJjZXMgPT4gcmVzb3VyY2VzLm1hcChyZXMgPT4gcmVzLmV2ZW50cykpKVxuICAgICAgLnBpcGUobWFwKGphZ2dlZEV2ZW50cyA9PiBqYWdnZWRFdmVudHMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKSkpO1xuXG4gICAgICAvLyBncm91cHMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbi5jaGlsZHJlbiksIFtdKVxuICAgIHRoaXMuZXZlbnRQYXJ0cyQgPSB0aGlzLmV2ZW50cyQucGlwZShcbiAgICAgIG1hcCgoZXZlbnRzKSA9PiAgZXZlbnRzLm1hcCgoZXYpID0+IHRoaXMudGltZWxpbmVTZXJ2aWNlLnNwbGl0SW5QYXJ0cyhldikpKVxuICAgICk7XG5cbiAgICB0aGlzLmV2ZW50UGFydHNGb3JUaGlzV2VlayQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJCxcbiAgICAgIHRoaXMuZXZlbnRQYXJ0cyRcbiAgICAgICAgLnBpcGUobWFwKGV2ZW50UGFydHMgPT4gZXZlbnRQYXJ0cy5tYXAoZXZwID0+IGV2cC5wYXJ0cykpKVxuICAgICAgICAucGlwZShtYXAoamFnZ2VkUGFydHMgPT4gIGphZ2dlZFBhcnRzLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSkpKVxuICAgICAgXSlcbiAgICAgIC5waXBlKG1hcCgoW3N0YXJ0QW5kRW5kLCBldmVudFBhcnRzXSkgPT4ge1xuICAgICAgICByZXR1cm4gZXZlbnRQYXJ0cy5maWx0ZXIoZXZlbnRQYXJ0ID0+IHtcbiAgICAgICAgICByZXR1cm4gISgoZXZlbnRQYXJ0LmVuZC5nZXRUaW1lKCkgPD0gc3RhcnRBbmRFbmQuc3RhcnQpIHx8IChldmVudFBhcnQuc3RhcnQuZ2V0VGltZSgpID49IHN0YXJ0QW5kRW5kLmVuZCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pKTtcblxuICAgIHRoaXMucHJldmlld0V2ZW50UGFydHMkID0gdGhpcy5wcmV2aWV3RXZlbnQkLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRpbWVsaW5lU2VydmljZS5zcGxpdEluUGFydHMoZXZlbnQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnByZXZpZXdFdmVudFBhcnRzRm9yVGhpc1dlZWskID0gY29tYmluZUxhdGVzdChbdGhpcy5kYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkLCB0aGlzLnByZXZpZXdFdmVudFBhcnRzJF0pXG4gICAgICAucGlwZShtYXAoKFtzdGFydEFuZEVuZCwgcHJldmlld0V2ZW50UGFydHNdKSA9PiB7XG4gICAgICAgIGlmIChwcmV2aWV3RXZlbnRQYXJ0cykge1xuICAgICAgICAgIHJldHVybiBwcmV2aWV3RXZlbnRQYXJ0cy5wYXJ0cy5maWx0ZXIoZXZlbnRQYXJ0ID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhKChldmVudFBhcnQuZW5kLmdldFRpbWUoKSA8PSBzdGFydEFuZEVuZC5zdGFydCkgfHwgKGV2ZW50UGFydC5zdGFydC5nZXRUaW1lKCkgPj0gc3RhcnRBbmRFbmQuZW5kKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnRpbWVsaW5lZEV2ZW50UGFydHNGb3JUaGlzV2VlayQgPSB0aGlzLmV2ZW50UGFydHNGb3JUaGlzV2VlayRcbiAgICAgIC5waXBlKG1hcChldmVudFBhcnRzID0+IHtcbiAgICAgICAgLy8gV2UnbGwgb25seSB1c2UgdGhlIGV2ZW50cyBmb3IgdGhpcyB3ZWVrXG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IGV2ZW50UGFydHMubWFwKGVwID0+IGVwLmV2ZW50KVxuICAgICAgICAgIC5maWx0ZXIoKGUsIGksIGxpc3QpID0+IGxpc3QuaW5kZXhPZihlKSA9PT0gaSlcbiAgICAgICAgICAuZmlsdGVyKChlKSA9PiAhIWUpXG4gICAgICAgICAgLm1hcCgoZSkgPT4gPFNjaGVkdWxlckV2ZW50PmUpO1xuICAgICAgICBjb25zdCB0aW1lbGluZSA9IHRoaXMudGltZWxpbmVTZXJ2aWNlLmdldFRpbWVsaW5lKGV2ZW50cyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGltZWxpbmUubWFwKHRyYWNrID0+IHRyYWNrLmV2ZW50cy5tYXAoZXYgPT4gKHsgZXZlbnQ6IGV2LCBpbmRleDogdHJhY2suaW5kZXggfSkpKVxuICAgICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pXG4gICAgICAgICAgLm1hcCgoZXZpKSA9PiBldmVudFBhcnRzLmZpbHRlcihwID0+IHAuZXZlbnQgPT09IGV2aS5ldmVudCkubWFwKHAgPT4gKHsgcGFydDogcCwgaW5kZXg6IGV2aS5pbmRleCB9KSkpXG4gICAgICAgICAgLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0b3RhbDogdGltZWxpbmUubGVuZ3RoLFxuICAgICAgICAgIHBhcnRzOiByZXN1bHRcbiAgICAgICAgfTtcbiAgICAgIH0pKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubW9kZSQsIHRoaXMuc2hvd25EYXlzJCwgdGhpcy50aW1lU2xvdER1cmF0aW9uJF0pXG4gICAgICAucGlwZShmaWx0ZXIoKFttb2RlLCBzaG93bkRheXMsIGR1cmF0aW9uXSkgPT4gbW9kZSAhPT0gbnVsbCkpXG4gICAgICAucGlwZShtYXAoKFttb2RlLCBzaG93bkRheXMsIGR1cmF0aW9uXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVTbG90c1BlckRheSA9IE1hdGguZmxvb3IoKDYwICogNjAgKiAyNCkgLyBkdXJhdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShBcnJheSh0aW1lU2xvdHNQZXJEYXkpLmtleXMoKSkubWFwKChpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB0aW1lc2xvdEZvck1vbmRheSA9IHRoaXMuY3JlYXRlVGltZXNsb3Qoc2hvd25EYXlzWzBdLCBpbmRleCwgZHVyYXRpb24pO1xuXG4gICAgICAgICAgICAgIHJldHVybiA8U2NoZWR1bGVyU3RhbXBXaXRoU2xvdHM+e1xuICAgICAgICAgICAgICAgIHNsb3RzOiBzaG93bkRheXMubWFwKChkYXkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoZGF5KTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldEhvdXJzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldEhvdXJzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0TWludXRlcyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0U2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRTZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0TWlsbGlzZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgIFxuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gbmV3IERhdGUoZGF5KTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRIb3Vycyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0SG91cnMoKSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0TWludXRlcyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0TWludXRlcygpKTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRTZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXRTZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldE1pbGxpc2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldERhdGUoZW5kLmdldERhdGUoKSArIHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXREYXRlKCkgLSB0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXREYXRlKCkpO1xuICAgICAgXG4gICAgICAgICAgICAgICAgICByZXR1cm4gPFRpbWVTbG90Pnsgc3RhcnQsIGVuZCB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YW1wOiB0aW1lc2xvdEZvck1vbmRheS5zdGFydFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUudGltZWxpbmU6IHtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsVGltZXNsb3RzID0gKDI0ICogNjAgKiA2MCkgLyBkdXJhdGlvbjtcbiAgICAgICAgICAgIHJldHVybiBzaG93bkRheXMubWFwKChkYXkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIDxTY2hlZHVsZXJTdGFtcFdpdGhTbG90cz57XG4gICAgICAgICAgICAgICAgc2xvdHM6IEFycmF5LmZyb20oQXJyYXkodG90YWxUaW1lc2xvdHMpLmtleXMoKSlcbiAgICAgICAgICAgICAgICAgIC5tYXAoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRpbWVzbG90KGRheSwgaW5kZXgsIGR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YW1wOiBkYXlcbiAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0aHJvdyAnVW5rbm93biB2YWx1ZSBmb3IgTW9kZTogJyArIG1vZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSlcbiAgICAgIC5zdWJzY3JpYmUoKHRpbWVzbG90cykgPT4ge1xuICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgd2UncmUgbm90IHVzaW5nIGFuIG9ic2VydmFibGUgaGVyZSwgYnV0IHBlcnNpc3QgdGhlIHRpbWVzbG90cyBpbiBhIEJlaGF2aW9yU3ViamVjdC5cbiAgICAgICAgdGhpcy50aW1lU2xvdHMkLm5leHQodGltZXNsb3RzKTtcbiAgICAgIH0pO1xuICAgIFxuICAgICAgdGhpcy53ZWVrT3B0aW9ucyRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgod2Vla09wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy53ZWVrT3B0aW9uc0NoYW5nZS5lbWl0KHdlZWtPcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIHRoaXMudGltZWxpbmVPcHRpb25zJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKCh0aW1lbGluZU9wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy50aW1lbGluZU9wdGlvbnNDaGFuZ2UuZW1pdCh0aW1lbGluZU9wdGlvbnMpO1xuICAgICAgfSk7XG5cbiAgICAvLyBjb21iaW5lTGF0ZXN0KFt0aGlzLm1vZGUkLCB0aGlzLnNjYWxlJF0pXG4gICAgLy8gICAucGlwZShmaWx0ZXIoKFttb2RlLCBzY2FsZV0pID0+IG1vZGUgPT09IEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lKSlcblxuICB9XG5cbiAgcmVzb3VyY2VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8KFJlc291cmNlIHwgUmVzb3VyY2VHcm91cClbXT4oW10pO1xuICBldmVudHMkOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50W10+O1xuICBldmVudFBhcnRzJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFdpdGhQYXJ0c1tdPjtcbiAgZXZlbnRQYXJ0c0ZvclRoaXNXZWVrJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFBhcnRbXT47XG4gIHRpbWVsaW5lZEV2ZW50UGFydHNGb3JUaGlzV2VlayQ6IE9ic2VydmFibGU8eyB0b3RhbDogbnVtYmVyLCBwYXJ0czogeyBwYXJ0OiBTY2hlZHVsZXJFdmVudFBhcnQsIGluZGV4OiBudW1iZXJ9W10gfT47XG4gIHdlZWtPcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2Vla09wdGlvbnM+KHsgdW5pdEhlaWdodDogMzAgfSk7XG4gIHRpbWVsaW5lT3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpbWVsaW5lT3B0aW9ucz4oeyB1bml0V2lkdGg6IDUwIH0pO1xuICBcbiAgcHJldmlld0V2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHJldmlld0V2ZW50IHwgbnVsbD4obnVsbCk7XG4gIHByZXZpZXdFdmVudFBhcnRzJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFdpdGhQYXJ0cyB8IG51bGw+O1xuICBwcmV2aWV3RXZlbnRQYXJ0c0ZvclRoaXNXZWVrJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFBhcnRbXT47XG4gIFxuICBjdXJyZW50V2Vla09yTW9udGgkOiBCZWhhdmlvclN1YmplY3Q8RGF0ZT47XG4gIHNob3duRGF5cyQ6IE9ic2VydmFibGU8RGF0ZVtdPjtcbiAgZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJDogT2JzZXJ2YWJsZTx7c3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXJ9PjtcbiAgdGltZVNsb3REdXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMTgwMCk7XG4gIHRpbWVTbG90cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzW10+KFtdKTtcbiAgbW91c2VTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaG92ZXJlZFRpbWVTbG90JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGltZVNsb3QgfCBudWxsPihudWxsKTtcbiAgaG92ZXJlZEV2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2NoZWR1bGVyRXZlbnQgfCBudWxsPihudWxsKTtcbiAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XG4gIHJlc291cmNlR3JvdXBQcmVzZW50ZXJDb3VudGVyID0gMTtcblxuICBAVmlld0NoaWxkcmVuKCdzbG90JykgdGltZVNsb3RFbGVtZW50cyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj47XG5cbiAgY3JlYXRlVGltZXNsb3QoZGF0ZTogRGF0ZSwgaW5kZXg6IG51bWJlciwgZHVyYXRpb246IG51bWJlcikge1xuICAgIGNvbnN0IHRpbWVTbG90U3RhcnQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICB0aW1lU2xvdFN0YXJ0LnNldFRpbWUoK3RpbWVTbG90U3RhcnQuZ2V0VGltZSgpICsgaW5kZXggKiBkdXJhdGlvbiAqIDEwMDApO1xuICAgIGNvbnN0IHRpbWVTbG90RW5kID0gbmV3IERhdGUodGltZVNsb3RTdGFydCk7XG4gICAgdGltZVNsb3RFbmQuc2V0VGltZSgrdGltZVNsb3RFbmQuZ2V0VGltZSgpICsgZHVyYXRpb24gKiAxMDAwKTtcblxuICAgIHJldHVybiA8VGltZVNsb3Q+eyBzdGFydDogdGltZVNsb3RTdGFydCwgZW5kOiB0aW1lU2xvdEVuZCB9O1xuICB9XG5cbiAgZ2V0UmVzb3VyY2VzRm9yR3JvdXAocmVzb3VyY2VPckdyb3VwOiBSZXNvdXJjZSB8IFJlc291cmNlR3JvdXApIDogUmVzb3VyY2VbXSB7XG4gICAgaWYgKCdjaGlsZHJlbicgaW4gcmVzb3VyY2VPckdyb3VwKSB7XG4gICAgICByZXR1cm4gcmVzb3VyY2VPckdyb3VwLmNoaWxkcmVuXG4gICAgICAgIC5tYXAoKGNoaWxkKSA9PiB0aGlzLmdldFJlc291cmNlc0Zvckdyb3VwKGNoaWxkKSlcbiAgICAgICAgLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbcmVzb3VyY2VPckdyb3VwXTtcbiAgICB9XG4gIH1cblxuICAvLyNyZWdpb24gTW9kZVxuICBtb2RlcyA9IEVTY2hlZHVsZXJNb2RlO1xuICBtb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RVNjaGVkdWxlck1vZGU+KEVTY2hlZHVsZXJNb2RlLndlZWspO1xuICBAT3V0cHV0KCkgcHVibGljIG1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEVTY2hlZHVsZXJNb2RlPigpO1xuICBwdWJsaWMgZ2V0IG1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBtb2RlKHZhbHVlOiBFU2NoZWR1bGVyTW9kZSkge1xuICAgIHRoaXMubW9kZSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vIC8vI3JlZ2lvbiBTY2FsZVxuICAvLyBzY2FsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjaGVkdWxlclNjYWxlPihhdmFpbGFibGVTY2FsZXNbNF0pO1xuICAvLyBAT3V0cHV0KCkgcHVibGljIHNjYWxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTY2hlZHVsZXJTY2FsZT4oKTtcbiAgLy8gcHVibGljIGdldCBzY2FsZSgpIHtcbiAgLy8gICByZXR1cm4gdGhpcy5zY2FsZSQudmFsdWU7XG4gIC8vIH1cbiAgLy8gQElucHV0KCkgcHVibGljIHNldCBzY2FsZSh2YWx1ZTogU2NoZWR1bGVyU2NhbGUpIHtcbiAgLy8gICB0aGlzLnNjYWxlJC5uZXh0KHZhbHVlKTtcbiAgLy8gfVxuICAvLyAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFdlZWtPcHRpb25zXG4gIEBPdXRwdXQoKSBwdWJsaWMgd2Vla09wdGlvbnNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFdlZWtPcHRpb25zPigpO1xuICBwdWJsaWMgZ2V0IHdlZWtPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLndlZWtPcHRpb25zJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHdlZWtPcHRpb25zKHZhbHVlOiBXZWVrT3B0aW9ucykge1xuICAgIHRoaXMud2Vla09wdGlvbnMkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICAvLyNyZWdpb24gVGltZWxpbmVPcHRpb25zXG4gIEBPdXRwdXQoKSBwdWJsaWMgdGltZWxpbmVPcHRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaW1lbGluZU9wdGlvbnM+KCk7XG4gIHB1YmxpYyBnZXQgdGltZWxpbmVPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRpbWVsaW5lT3B0aW9ucyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCB0aW1lbGluZU9wdGlvbnModmFsdWU6IFRpbWVsaW5lT3B0aW9ucykge1xuICAgIHRoaXMudGltZWxpbmVPcHRpb25zJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIG1heElubmVySGVpZ2h0XG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhJbm5lckhlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIC8vI2VuZHJlZ2lvblxuICAvLyNyZWdpb24gUmVzb3VyY2VzXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlcyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCByZXNvdXJjZXModmFsdWU6IChSZXNvdXJjZSB8IFJlc291cmNlR3JvdXApW10pIHtcbiAgICB0aGlzLnJlc291cmNlcyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJpdmF0ZSBhZGREYXlzKGRhdGU6IERhdGUsIGRheXM6IG51bWJlcikge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIHJlc3VsdC5zZXREYXRlKHJlc3VsdC5nZXREYXRlKCkgKyBkYXlzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgb25QcmV2aW91c1dlZWtPck1vbnRoKCkge1xuICAgIHRoaXMub25DaGFuZ2VXZWVrT3JNb250aChmYWxzZSk7XG4gIH1cblxuICBvbk5leHRXZWVrT3JNb250aCgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlV2Vla09yTW9udGgodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlV2Vla09yTW9udGgobmV4dDogYm9vbGVhbikge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudFdlZWtPck1vbnRoJCwgdGhpcy5tb2RlJF0pXG4gICAgICAucGlwZShtYXAoKFtjdXJyZW50V2Vla09yTW9udGgsIG1vZGVdKSA9PiB7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUud2Vlazoge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkRGF5cyhjdXJyZW50V2Vla09yTW9udGgsIChuZXh0ID8gNyA6IC03KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUudGltZWxpbmU6IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShjdXJyZW50V2Vla09yTW9udGguZ2V0RnVsbFllYXIoKSwgY3VycmVudFdlZWtPck1vbnRoLmdldE1vbnRoKCkgKyAobmV4dCA/IDEgOiAtMSksIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksIHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCh3KSA9PiB0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQubmV4dCh3KSk7XG4gIH1cblxuICBvbkhvdmVyRXZlbnQoZXY6IFNjaGVkdWxlckV2ZW50IHwgbnVsbCkge1xuICAgIHRoaXMuaG92ZXJlZEV2ZW50JC5uZXh0KGV2KTtcbiAgfVxuXG4gIG9uTGVhdmVFdmVudChldjogU2NoZWR1bGVyRXZlbnQgfCBudWxsKSB7XG4gICAgdGhpcy5ob3ZlcmVkRXZlbnQkLm5leHQobnVsbCk7XG4gIH1cblxuICBvcGVyYXRpb246IERyYWdPcGVyYXRpb24gfCBudWxsID0gbnVsbDtcbiAgZHJhZ1N0YXJ0VGltZXNsb3Q6IFRpbWVTbG90IHwgbnVsbCA9IG51bGw7XG4gIG9uQ3JlYXRlRXZlbnQoZXY6IE1vdXNlRXZlbnQsIHNsb3Q6IFRpbWVTbG90KSB7XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm1vdXNlU3RhdGUkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IHNsb3Q7XG4gICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLmNyZWF0ZUV2ZW50LFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgc3RhcnQ6IHNsb3Quc3RhcnQsXG4gICAgICAgIGVuZDogc2xvdC5lbmQsXG4gICAgICAgIGNvbG9yOiAnI0YwMCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGVzdCBldmVudCcsXG4gICAgICB9LFxuICAgICAgbWV0YTogbnVsbCxcbiAgICB9O1xuICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IHNsb3Quc3RhcnQsIGVuZDogc2xvdC5lbmQgfSk7XG4gIH1cblxuICByYW5kb21Db2xvcigpIHtcbiAgICBjb25zdCBicmlnaHRuZXNzID0gMTI4O1xuICAgIHJldHVybiAnIycgKyB0aGlzLnJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzcykgKyB0aGlzLnJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzcykgKyB0aGlzLnJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzcyk7XG4gIH1cbiAgcmFuZG9tQ2hhbm5lbChicmlnaHRuZXNzOiBudW1iZXIpe1xuICAgIGNvbnN0IHIgPSAyNTUtYnJpZ2h0bmVzcztcbiAgICBjb25zdCBuID0gMHwoKE1hdGgucmFuZG9tKCkgKiByKSArIGJyaWdodG5lc3MpO1xuICAgIGNvbnN0IHMgPSBuLnRvU3RyaW5nKDE2KTtcbiAgICByZXR1cm4gKHMubGVuZ3RoPT0xKSA/ICcwJytzIDogcztcbiAgfVxuXG4gIG9uU3RhcnREcmFnRXZlbnQoZXZlbnRQYXJ0OiBTY2hlZHVsZXJFdmVudFBhcnQsIGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmhvdmVyZWRUaW1lU2xvdCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGhvdmVyZWRUaW1lU2xvdCkgPT4ge1xuICAgICAgaWYgKGV2ZW50UGFydC5ldmVudCkge1xuICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gaG92ZXJlZFRpbWVTbG90O1xuICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IHtcbiAgICAgICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLm1vdmVFdmVudCxcbiAgICAgICAgICBldmVudDogZXZlbnRQYXJ0LmV2ZW50LFxuICAgICAgICAgIG1ldGE6IG51bGwsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IGV2ZW50UGFydC5ldmVudC5zdGFydCwgZW5kOiBldmVudFBhcnQuZXZlbnQuZW5kIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25TdGFydFJlc2l6ZUV2ZW50KGV2ZW50OiBTY2hlZHVsZXJFdmVudCB8IG51bGwsIHBvc2l0aW9uOiAndG9wJyB8ICdib3R0b20nKSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6IHtcbiAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQsXG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBtZXRhOiB7IHBvc2l0aW9uIH0sXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IGV2ZW50LnN0YXJ0LCBlbmQ6IGV2ZW50LmVuZCB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgICAgY2FzZSAnYm90dG9tJzoge1xuICAgICAgICAgIHRoaXMub3BlcmF0aW9uID0ge1xuICAgICAgICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5yZXNpemVFdmVudCxcbiAgICAgICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIG1ldGE6IHsgcG9zaXRpb24gfSxcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQoeyBzdGFydDogZXZlbnQuc3RhcnQsIGVuZDogZXZlbnQuZW5kIH0pO1xuICAgICAgICB9IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vI3JlZ2lvbiBob3ZlcmVkVGltZXNsb3QkXG4gIHByaXZhdGUgZ2V0SG92ZXJlZFRpbWVzbG90KGV2OiBNb3VzZUV2ZW50LCB0aW1lU2xvdHM6IFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzW10pIHtcbiAgICBjb25zdCBob3ZlcmVkU2xvdHMgPSB0aGlzLnRpbWVTbG90RWxlbWVudHMuZmlsdGVyKChlbCkgPT4ge1xuICAgICAgY29uc3QgcmN0ID0gZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGlmIChyY3QubGVmdCA8PSBldi54ICYmIGV2LnggPD0gcmN0LnJpZ2h0ICYmIHJjdC50b3AgPD0gZXYueSAmJiBldi55IDw9IHJjdC5ib3R0b20pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIWhvdmVyZWRTbG90cyB8fCBob3ZlcmVkU2xvdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzbG90RWxlbWVudCA9IGhvdmVyZWRTbG90c1swXS5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3Qgc3RyUm93ID0gc2xvdEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXJvdycpO1xuICAgIGlmICghc3RyUm93KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgcm93ID0gcGFyc2VJbnQoc3RyUm93KTtcblxuICAgIGNvbnN0IHN0ckNvbHVtbiA9IHNsb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1jb2x1bW4nKTtcbiAgICBpZiAoIXN0ckNvbHVtbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGNvbHVtbiA9IHBhcnNlSW50KHN0ckNvbHVtbik7XG5cbiAgICBjb25zdCBzbG90ID0gdGltZVNsb3RzW3Jvd10uc2xvdHNbY29sdW1uXTtcbiAgICByZXR1cm4gc2xvdDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gIG9uTW91c2Vtb3ZlKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy50aW1lU2xvdHMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCh0aW1lU2xvdHMpID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWQgPSB0aGlzLmdldEhvdmVyZWRUaW1lc2xvdChldiwgdGltZVNsb3RzKTtcbiAgICAgIHRoaXMuaG92ZXJlZFRpbWVTbG90JC5uZXh0KGhvdmVyZWQpO1xuXG4gICAgICBpZiAodGhpcy5vcGVyYXRpb24pIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdGlvbi5vcGVyYXRpb24pIHtcbiAgICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLmNyZWF0ZUV2ZW50OiB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24uZXZlbnQgJiYgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCAmJiBob3ZlcmVkICYmICh0aGlzLm9wZXJhdGlvbi5ldmVudC5lbmQuZ2V0VGltZSgpICE9IGhvdmVyZWQuZW5kLmdldFRpbWUoKSkpIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpID09PSBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgIC8vIDEgc2xvdFxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpIDwgaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBEcmFnIGRvd25cbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYgJiYgISF0aGlzLmRyYWdTdGFydFRpbWVzbG90KSlcbiAgICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuZW5kID0gaG92ZXJlZC5lbmQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXYpID0+IHRoaXMucHJldmlld0V2ZW50JC5uZXh0KGV2KSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcmFnU3RhcnRUaW1lc2xvdC5zdGFydC5nZXRUaW1lKCkgPiBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgIC8vIERyYWcgdXBcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYgJiYgISF0aGlzLmRyYWdTdGFydFRpbWVzbG90KSlcbiAgICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IGhvdmVyZWQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuZW5kID0gdGhpcy5kcmFnU3RhcnRUaW1lc2xvdC5lbmQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXYpID0+IHRoaXMucHJldmlld0V2ZW50JC5uZXh0KGV2KSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ubW92ZUV2ZW50OiB7XG4gICAgICAgICAgICBpZiAoaG92ZXJlZCAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JFxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYgJiYgISF0aGlzLmRyYWdTdGFydFRpbWVzbG90KSlcbiAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZXYgJiYgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSAgPFByZXZpZXdFdmVudD57XG4gICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKGV2LnN0YXJ0LmdldFRpbWUoKSArIGhvdmVyZWQuc3RhcnQuZ2V0VGltZSgpIC0gdGhpcy5kcmFnU3RhcnRUaW1lc2xvdC5zdGFydC5nZXRUaW1lKCkpLFxuICAgICAgICAgICAgICAgICAgICAgIGVuZDogbmV3IERhdGUoZXYuZW5kLmdldFRpbWUoKSArIGhvdmVyZWQuc3RhcnQuZ2V0VGltZSgpIC0gdGhpcy5kcmFnU3RhcnRUaW1lc2xvdC5zdGFydC5nZXRUaW1lKCkpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gaG92ZXJlZDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldiA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5yZXNpemVFdmVudDoge1xuICAgICAgICAgICAgaWYgKGhvdmVyZWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlsdGVyKChldikgPT4gISFldikpXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKChldikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMub3BlcmF0aW9uICYmIHRoaXMub3BlcmF0aW9uLmV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wZXJhdGlvbi5tZXRhLnBvc2l0aW9uID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgICAgICAgIGV2LnN0YXJ0ID0gaG92ZXJlZC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICBldi5lbmQgPSB0aGlzLm9wZXJhdGlvbi5ldmVudC5lbmQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcGVyYXRpb24ubWV0YS5wb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IHRoaXMub3BlcmF0aW9uLmV2ZW50LnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IGhvdmVyZWQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZXY7XG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldikgPT4gdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQoZXYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9KTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZVVwKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMub3BlcmF0aW9uLm9wZXJhdGlvbikge1xuICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLmNyZWF0ZUV2ZW50OiB7XG4gICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5wcmV2aWV3RXZlbnQkXSlcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbcHJldmlld0V2ZW50XSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocHJldmlld0V2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24gPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb3VyY2VzJC5uZXh0KFtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMucmVzb3VyY2VzJC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgIDxSZXNvdXJjZT57XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IHJlc291cmNlIGdyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzOiBbe1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBwcmV2aWV3RXZlbnQuc3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgZW5kOiBwcmV2aWV3RXZlbnQuZW5kLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB0aGlzLnJhbmRvbUNvbG9yKCksXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdOZXcgZXZlbnQnXG4gICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGJyZWFrO1xuICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLm1vdmVFdmVudDpcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5yZXNpemVFdmVudDoge1xuICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JFxuICAgICAgICAgICAgLnBpcGUoZmlsdGVyKChldikgPT4gISFldikpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocHJldmlld0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9wZXJhdGlvbiAmJiB0aGlzLm9wZXJhdGlvbi5ldmVudCAmJiBwcmV2aWV3RXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvbi5ldmVudC5zdGFydCA9IHByZXZpZXdFdmVudC5zdGFydDtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvbi5ldmVudC5lbmQgPSBwcmV2aWV3RXZlbnQuZW5kO1xuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc291cmNlcyQubmV4dCh0aGlzLnJlc291cmNlcyQudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCh0cnVlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiB3LTEwMCBvdmVyZmxvdy15LWF1dG8gbWItMCB3ZWVrLXNjaGVkdWxlXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwibnVsbFwiXG4gICAgKm5nSWY9XCIobW9kZSQgfCBhc3luYykgPT09IG1vZGVzLndlZWtcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNhbGVuZGFyLWxlZnQganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGZsZXgtc3RhcnRcIiAoY2xpY2spPVwib25QcmV2aW91c1dlZWtPck1vbnRoKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJzLWljb24gW2ljb25dPVwiJ2NoZXZyb24tbGVmdCdcIiBjbGFzcz1cInB4LTBcIj48L2JzLWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBmbGV4LWVuZFwiIChjbGljayk9XCJvbk5leHRXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLXJpZ2h0J1wiIGNsYXNzPVwicHgtMFwiPjwvYnMtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGNhbGVuZGFyLWhlYWQtY2VsbFwiICpuZ0Zvcj1cImxldCBkYXkgb2YgKHNob3duRGF5cyQgfCBhc3luYylcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2sgY29sLWZvcm0tbGFiZWwgdGV4dC1jZW50ZXIgdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGF5IHwgZGF0ZTogJ2RkLU1NJyB9fTwvc3Bhbj48c3BhbiBjbGFzcz1cImQtbm9uZSBkLWxnLWlubGluZS1ibG9ja1wiPi17eyBkYXkgfCBkYXRlOiAneXl5eScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5XCIgW3N0eWxlLmhlaWdodC5weF09XCJtYXhJbm5lckhlaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIiAqbmdJZj1cIih0aW1lU2xvdHMkIHwgYXN5bmMpIGFzIHJvd1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih3ZWVrT3B0aW9ucyQgfCBhc3luYykgYXMgd2Vla09wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8IS0tIFRpbWVzbG90cyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0aW1lc2xvdHMgb2Ygcm93OyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgcC0wIHRpbWVzbG90XCIgW3N0eWxlLmhlaWdodC5weF09XCJ3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsIGNhbGVuZGFyLWxlZnQgYWxpZ24tdG9wIHB4LTIgcHktMFwiPnt7IHRpbWVzbG90cy5zbG90c1swXS5zdGFydCB8IGRhdGU6ICdISDptbTpzcycgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwgZmxleC1ncm93LTFcIiAqbmdGb3I9XCJsZXQgc2xvdCBvZiB0aW1lc2xvdHMuc2xvdHM7IGxldCBqID0gaW5kZXhcIiAjc2xvdCAobW91c2Vkb3duKT1cIm9uQ3JlYXRlRXZlbnQoJGV2ZW50LCBzbG90KVwiIFthdHRyLmRhdGEtcm93XT1cImlcIiBbYXR0ci5kYXRhLWNvbHVtbl09XCJqXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEV2ZW50cyAtLT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHRpbWVTbG90RHVyYXRpb24kIHwgYXN5bmMpIGFzIHRpbWVTbG90RHVyYXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0aW1lbGluZWRFdmVudFBhcnRzRm9yVGhpc1dlZWskIHwgYXN5bmMpIGFzIHBhcnREYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBldmVudFBhcnQgb2YgcGFydERhdGEucGFydHNcIiBjbGFzcz1cImV2ZW50IHAtMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCIoZXZlbnRQYXJ0LnBhcnQgfCBic1NlY29uZHNUb2RheU9mZnNldCkgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoZXZlbnRQYXJ0LnBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnRdPVwiJ2NhbGMoOTBweCArICgoMTAwJSAtIDkwcHgpIC8gNyAqICcgKyAoKGV2ZW50UGFydC5wYXJ0IHwgZGF5T2ZXZWVrKSAtIDEpICsgJykpJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1pbm5lclwiIFtjbGFzcy5ob3Zlcl09XCIoaG92ZXJlZEV2ZW50JCB8IGFzeW5jKSA9PT0gZXZlbnRQYXJ0LnBhcnQuZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiJ2NhbGMoMTAwJSAvICcgKyBwYXJ0RGF0YS50b3RhbCArICcpJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKGV2ZW50UGFydC5wYXJ0IHwgYnNTZWNvbmRzVGltZXNwYW4pIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubWFyZ2luLWxlZnRdPVwiJ2NhbGMoMTAwJSAvICcgKyBwYXJ0RGF0YS50b3RhbCArICcgKiAnICsgZXZlbnRQYXJ0LmluZGV4ICsgJyknXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXJlc2l6ZSB0b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJldmVudFBhcnQucGFydC5zdGFydCA9PT0gZXZlbnRQYXJ0LnBhcnQuZXZlbnQ/LnN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25TdGFydFJlc2l6ZUV2ZW50KGV2ZW50UGFydC5wYXJ0LmV2ZW50LCAndG9wJylcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWJvcmRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtd3JhcHBlclwiICpuZ0lmPVwiZXZlbnRQYXJ0LnBhcnQuZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0RHJhZ0V2ZW50KGV2ZW50UGFydC5wYXJ0LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uSG92ZXJFdmVudChldmVudFBhcnQucGFydC5ldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25MZWF2ZUV2ZW50KGV2ZW50UGFydC5wYXJ0LmV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWJnXCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZXZlbnRQYXJ0LnBhcnQuZXZlbnQuY29sb3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1sYWJlbFwiPnt7IGV2ZW50UGFydC5wYXJ0LmV2ZW50LmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcmVzaXplIGJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImV2ZW50UGFydC5wYXJ0LmVuZCA9PT0gZXZlbnRQYXJ0LnBhcnQuZXZlbnQ/LmVuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRSZXNpemVFdmVudChldmVudFBhcnQucGFydC5ldmVudCwgJ2JvdHRvbScpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIocHJldmlld0V2ZW50UGFydHNGb3JUaGlzV2VlayQgfCBhc3luYykgYXMgcHJldmlld1BhcnREYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBldmVudFBhcnQgb2YgcHJldmlld1BhcnREYXRhXCIgY2xhc3M9XCJldmVudCBwcmV2aWV3IHAtMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCIoZXZlbnRQYXJ0IHwgYnNTZWNvbmRzVG9kYXlPZmZzZXQpIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKGV2ZW50UGFydCB8IGJzU2Vjb25kc1RpbWVzcGFuKSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdF09XCInY2FsYyg5MHB4ICsgKCgxMDAlIC0gOTBweCkgLyA3ICogJyArICgoZXZlbnRQYXJ0IHwgZGF5T2ZXZWVrKSAtIDEpICsgJykpJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1pbm5lciB3LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKGV2ZW50UGFydCB8IGJzU2Vjb25kc1RpbWVzcGFuKSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4tMTAwIG92ZXJmbG93LXktYXV0byBtYi0wIGJnLXdoaXRlIHRpbWVsaW5lXCIgKm5nSWY9XCIobW9kZSQgfCBhc3luYykgPT09IG1vZGVzLnRpbWVsaW5lXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWQgZC1mbGV4XCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZmxleC1zdGFydFwiIChjbGljayk9XCJvblByZXZpb3VzV2Vla09yTW9udGgoKVwiPlxuICAgICAgICAgICAgPGJzLWljb24gW2ljb25dPVwiJ2NoZXZyb24tbGVmdCdcIiBjbGFzcz1cInB4LTBcIj48L2JzLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgaDMgcHktMiBtYi0wIHRleHQtY2VudGVyXCI+e3sgY3VycmVudFdlZWtPck1vbnRoJCB8IGFzeW5jIHwgZGF0ZTogJ01NTU0geXl5eScgfX08L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBmbGV4LXN0YXJ0XCIgKGNsaWNrKT1cIm9uTmV4dFdlZWtPck1vbnRoKClcIj5cbiAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLXJpZ2h0J1wiIGNsYXNzPVwicHgtMFwiPjwvYnMtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHkgdGFibGUtcmVzcG9uc2l2ZSBvdmVyZmxvdy14LWF1dG9cIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgbWItMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0aW1lU2xvdHMkIHwgYXN5bmMpIGFzIHRpbWVTbG90c1wiPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgZGF5IG9mIHRpbWVTbG90c1wiIFthdHRyLmNvbHNwYW5dPVwiZGF5LnNsb3RzLmxlbmd0aFwiIGNsYXNzPVwidGV4dC1jZW50ZXIgcHgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwb3NpdGlvbi1zdGlja3kgZGF5LWxhYmVsXCI+e3sgZGF5LnN0YW1wIHwgZGF0ZTogJ2QgRUUnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0aW1lbGluZU9wdGlvbnMkIHwgYXN5bmMpIGFzIHRpbWVsaW5lT3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF5IG9mIHRpbWVTbG90c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgc2xvdCBvZiBkYXkuc2xvdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIHAtMCB0ZXh0LWNlbnRlclwiIFtzdHlsZS53aWR0aC5weF09XCJ0aW1lbGluZU9wdGlvbnMudW5pdFdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzbG90LnN0YXJ0IHwgZGF0ZTogJ0hIOm1tJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDxicy1yZXNvdXJjZS1ncm91cC1wcmVzZW50ZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIChyZXNvdXJjZXMkIHwgYXN5bmMpXCIgW3Jlc291cmNlR3JvdXBdPVwiZ3JvdXBcIiBbdGltZVNsb3RzXT1cInRpbWVTbG90c1wiPjwvYnMtcmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=