barsa-sap-ui 1.0.456 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (652) hide show
  1. package/{esm2020 → esm2022}/barsa-sap-ui.mjs +4 -4
  2. package/esm2022/lib/apply-conditional-formmatings.directive.mjs +89 -0
  3. package/esm2022/lib/barsa-answer-card/barsa-answer-card.component.mjs +41 -0
  4. package/esm2022/lib/barsa-asp-viewer/barsa-asp-viewer.component.mjs +127 -0
  5. package/{esm2020 → esm2022}/lib/barsa-bar-panel/barsa-bar-panel.component.mjs +23 -23
  6. package/esm2022/lib/barsa-base-panel/barsa-base-layout-panel.component.mjs +29 -0
  7. package/esm2022/lib/barsa-card-layout-panel/barsa-card-layout-panel.component.mjs +24 -0
  8. package/esm2022/lib/barsa-card-row-payam/barsa-card-row-payam.component.mjs +30 -0
  9. package/esm2022/lib/barsa-cartable-form/barsa-cartable-form.component.mjs +41 -0
  10. package/{esm2020 → esm2022}/lib/barsa-cartable-template/barsa-cartable-template.component.mjs +24 -24
  11. package/esm2022/lib/barsa-chat/barsa-chat.component.mjs +260 -0
  12. package/esm2022/lib/barsa-chat/chat.model.mjs +8 -0
  13. package/esm2022/lib/barsa-chat-content/barsa-chat-content.component.mjs +13 -0
  14. package/esm2022/lib/barsa-chat-content-toolbar/barsa-chat-content-toolbar.component.mjs +22 -0
  15. package/esm2022/lib/barsa-chat-list/barsa-chat-list.component.mjs +56 -0
  16. package/esm2022/lib/barsa-chat-message/barsa-chat-message.component.mjs +77 -0
  17. package/esm2022/lib/barsa-chat-thread/barsa-chat-thread.component.mjs +22 -0
  18. package/esm2022/lib/barsa-chat-threads-list/barsa-chat-threads-list.component.mjs +13 -0
  19. package/esm2022/lib/barsa-chat-threads-list-toolbar/barsa-chat-threads-list-toolbar.component.mjs +15 -0
  20. package/esm2022/lib/barsa-chip/barsa-chip.component.mjs +72 -0
  21. package/{esm2020 → esm2022}/lib/barsa-column-indicator/barsa-column-indicator.component.mjs +23 -23
  22. package/{esm2020 → esm2022}/lib/barsa-column-rownumber/barsa-column-rownumber.component.mjs +15 -15
  23. package/esm2022/lib/barsa-custom-inline-edit/barsa-custom-inline-edit.component.mjs +14 -0
  24. package/esm2022/lib/barsa-custom-inline-edit-row/barsa-custom-inline-edit-row.component.mjs +26 -0
  25. package/esm2022/lib/barsa-date-time-picker/barsa-date-time-picker.component.mjs +71 -0
  26. package/esm2022/lib/barsa-dynamic-field/barsa-dynamic-field.component.mjs +41 -0
  27. package/esm2022/lib/barsa-enum-menu-button/barsa-enum-menu-button.component.mjs +61 -0
  28. package/esm2022/lib/barsa-field-key-value/barsa-field-key-value.component.mjs +45 -0
  29. package/esm2022/lib/barsa-form-side-content/barsa-form-side-content.component.mjs +37 -0
  30. package/esm2022/lib/barsa-grid-layout-panel/barsa-grid-layout-panel.component.mjs +27 -0
  31. package/esm2022/lib/barsa-group-cartable/barsa-cartable-group.component.mjs +94 -0
  32. package/esm2022/lib/barsa-horizontal-flex-panel/barsa-horizontal-flex-panel.component.mjs +22 -0
  33. package/esm2022/lib/barsa-linkable-items-panel/barsa-linkable-items-panel.component.mjs +37 -0
  34. package/esm2022/lib/barsa-list-file-linear/barsa-list-file-linear.component.mjs +41 -0
  35. package/esm2022/lib/barsa-list-file-linear-gmail/barsa-list-file-linear-gmail.component.mjs +29 -0
  36. package/esm2022/lib/barsa-list-layout-panel/barsa-list-layout-panel.component.mjs +23 -0
  37. package/esm2022/lib/barsa-monaco-editor/barsa-monaco-editor.component.mjs +83 -0
  38. package/esm2022/lib/barsa-network-offline/barsa-network-offline.component.mjs +53 -0
  39. package/esm2022/lib/barsa-pishnamayesh-payam/barsa-pishnamayesh-payam.component.mjs +159 -0
  40. package/esm2022/lib/barsa-question-answer-comments-section/barsa-question-answer-comments-section.component.mjs +17 -0
  41. package/esm2022/lib/barsa-question-answer-content-actions-section/barsa-question-answer-content-actions-section.component.mjs +30 -0
  42. package/esm2022/lib/barsa-question-answer-creator-time-section/barsa-question-answer-creator-time-section.component.mjs +14 -0
  43. package/esm2022/lib/barsa-question-answer-form/barsa-question-answer-form.component.mjs +34 -0
  44. package/esm2022/lib/barsa-question-answer-form-add-comment/barsa-question-answer-form-add-comment.component.mjs +46 -0
  45. package/esm2022/lib/barsa-question-answer-vote-section/barsa-question-answer-vote-section.component.mjs +79 -0
  46. package/esm2022/lib/barsa-question-post/barsa-question-post.component.mjs +30 -0
  47. package/esm2022/lib/barsa-report-card-flex-view/barsa-report-card-flex-view.component.mjs +31 -0
  48. package/{esm2020 → esm2022}/lib/barsa-report-checkbox-switch-button/barsa-report-checkbox-switch-button.component.mjs +28 -28
  49. package/esm2022/lib/barsa-report-one-of-list/barsa-report-one-of-list.component.mjs +98 -0
  50. package/{esm2020 → esm2022}/lib/barsa-sap-ui-routing.module.mjs +18 -18
  51. package/esm2022/lib/barsa-sap-ui.module.mjs +360 -0
  52. package/esm2022/lib/barsa-search-form/barsa-search-form.component.mjs +29 -0
  53. package/esm2022/lib/barsa-simple-form/barsa-simple-form.component.mjs +168 -0
  54. package/esm2022/lib/barsa-table-column/barsa-table-column.component.mjs +27 -0
  55. package/esm2022/lib/barsa-table-header/barsa-table-header.component.mjs +198 -0
  56. package/esm2022/lib/barsa-table-row/barsa-table-row.component.mjs +61 -0
  57. package/esm2022/lib/barsa-tag-categories/barsa-tag-categories.component.mjs +60 -0
  58. package/esm2022/lib/barsa-tag-chip/barsa-tag-chip.component.mjs +26 -0
  59. package/esm2022/lib/barsa-tags-category-row/barsa-tags-category-row.component.mjs +23 -0
  60. package/esm2022/lib/barsa-text-ellipsis/barsa-text-ellipsis.component.mjs +37 -0
  61. package/esm2022/lib/barsa-tinyemce/barsa-tinyemce.component.mjs +417 -0
  62. package/esm2022/lib/barsa-toolbaritem-search/barsa-toolbaritem-search.component.mjs +36 -0
  63. package/esm2022/lib/barsa-tree-item/barsa-tree-item.component.mjs +129 -0
  64. package/{esm2020 → esm2022}/lib/barsa-tree-item/node-has-one-depth-level.pipe.mjs +19 -19
  65. package/esm2022/lib/barsa-ulv-main/barsa-ulv-main.component.mjs +208 -0
  66. package/esm2022/lib/blob-viewer/blob-viewer.component.mjs +78 -0
  67. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +44 -0
  68. package/{esm2020 → esm2022}/lib/captcha-field/captcha-field.component.mjs +28 -28
  69. package/esm2022/lib/card-item/card-item.component.mjs +76 -0
  70. package/esm2022/lib/card-view-content/card-view-content.component.mjs +46 -0
  71. package/esm2022/lib/col-renderer.directive.mjs +46 -0
  72. package/esm2022/lib/column-matrix-renderer/column-matrix-renderer.component.mjs +56 -0
  73. package/esm2022/lib/column-matrix-renderer/matrix-value.pipe.mjs +60 -0
  74. package/esm2022/lib/column-renderer/column-renderer.component.mjs +85 -0
  75. package/esm2022/lib/constants.mjs +421 -0
  76. package/esm2022/lib/custom-date-time/custom-date-time.component.mjs +41 -0
  77. package/{esm2020 → esm2022}/lib/device-info-field-base.mjs +23 -23
  78. package/{esm2020 → esm2022}/lib/dialog-handler.directive.mjs +28 -28
  79. package/esm2022/lib/download-files.directive.mjs +33 -0
  80. package/esm2022/lib/dynamic-page-size.pipe.mjs +26 -0
  81. package/{esm2020 → esm2022}/lib/file-in-dialog/file-in-dialog.component.mjs +44 -44
  82. package/esm2022/lib/file-viewer/file-viewer.component.mjs +39 -0
  83. package/{esm2020 → esm2022}/lib/file-viewer-content/file-viewer-content.component.mjs +53 -53
  84. package/esm2022/lib/file-viewer-popover/file-viewer-popover.component.mjs +41 -0
  85. package/esm2022/lib/form-dialog/form-dialog.component.mjs +142 -0
  86. package/esm2022/lib/form-dialog-less/form-dialog-less.component.mjs +44 -0
  87. package/esm2022/lib/form-toolbar/form-toolbar.component.mjs +43 -0
  88. package/esm2022/lib/form-toolbar-button/form-toolbar-button.component.mjs +45 -0
  89. package/esm2022/lib/form-wizard/form-wizard.component.mjs +21 -0
  90. package/esm2022/lib/fullscreen-dialog.directive.mjs +59 -0
  91. package/esm2022/lib/fullscreen-files.directive.mjs +42 -0
  92. package/esm2022/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +188 -0
  93. package/esm2022/lib/gantt-dhtml-chart-view/gantt-dhtml-chart-view.component.mjs +203 -0
  94. package/{esm2020 → esm2022}/lib/global-search/global-search.component.mjs +27 -27
  95. package/esm2022/lib/global-search-module/global-search-module.component.mjs +29 -0
  96. package/esm2022/lib/global-search-panel/global-search-panel.component.mjs +25 -0
  97. package/esm2022/lib/header-avatar/header-avatar.component.mjs +18 -0
  98. package/{esm2020 → esm2022}/lib/header-facet-form/header-facet-form.component.mjs +22 -22
  99. package/{esm2020 → esm2022}/lib/header-facet-key-value/header-facet-key-value.component.mjs +31 -31
  100. package/{esm2020 → esm2022}/lib/header-facet-microchart/header-facet-microchart.component.mjs +21 -21
  101. package/{esm2020 → esm2022}/lib/header-facet-plain-text/header-facet-plain-text.component.mjs +28 -28
  102. package/esm2022/lib/header-facet-progress/header-facet-progress.component.mjs +25 -0
  103. package/esm2022/lib/header-facet-rate/header-facet-rate.component.mjs +25 -0
  104. package/esm2022/lib/htree-create-new/htree-create-new.component.mjs +48 -0
  105. package/esm2022/lib/hyperlink/hyperlink.component.mjs +23 -0
  106. package/esm2022/lib/index.mjs +564 -0
  107. package/{esm2020 → esm2022}/lib/inline-save-and-cancel/inline-save-and-cancel.component.mjs +32 -32
  108. package/esm2022/lib/layout-actions/layout-actions.component.mjs +68 -0
  109. package/esm2022/lib/layout-control/layout-control.component.mjs +234 -0
  110. package/esm2022/lib/layout-wizard/layout-wizard.component.mjs +154 -0
  111. package/esm2022/lib/list-item/list-item.component.mjs +34 -0
  112. package/esm2022/lib/ly-empty-space/ly-empty-space.component.mjs +42 -0
  113. package/esm2022/lib/ly-horizontal-layout/ly-horizontal-layout.component.mjs +71 -0
  114. package/esm2022/lib/ly-label/ly-label.component.mjs +34 -0
  115. package/esm2022/lib/ly-layout-container/ly-layout-container.component.mjs +83 -0
  116. package/esm2022/lib/ly-layout-container-of-root/ly-layout-container-of-root.component.mjs +17 -0
  117. package/{esm2020 → esm2022}/lib/ly-layout-field-label/ly-layout-field-label.component.mjs +24 -24
  118. package/esm2022/lib/ly-layout-panel/ly-layout-panel.component.mjs +73 -0
  119. package/esm2022/lib/ly-line/ly-line.component.mjs +56 -0
  120. package/esm2022/lib/ly-simple-label/ly-simple-label.component.mjs +22 -0
  121. package/esm2022/lib/ly-tab-container/ly-tab-container.component.mjs +52 -0
  122. package/esm2022/lib/ly-tab-page/ly-tab-page.component.mjs +44 -0
  123. package/esm2022/lib/ly-vertical-layout/ly-vertical-layout.component.mjs +50 -0
  124. package/esm2022/lib/manage-filters-report/manage-filters-report.component.mjs +43 -0
  125. package/{esm2020 → esm2022}/lib/mask/mask.component.mjs +22 -22
  126. package/esm2022/lib/message-strip/message-strip.component.mjs +28 -0
  127. package/esm2022/lib/models/grid-data-provider.mjs +83 -0
  128. package/esm2022/lib/models/grid-view.mjs +2 -0
  129. package/{esm2020 → esm2022}/lib/models/index.mjs +1 -1
  130. package/esm2022/lib/no-data/no-data.component.mjs +31 -0
  131. package/esm2022/lib/notification-item/notification-item.component.mjs +57 -0
  132. package/esm2022/lib/notification-popup.service.mjs +92 -0
  133. package/{esm2020 → esm2022}/lib/progress-indicator/progress-indicator.component.mjs +18 -18
  134. package/esm2022/lib/report-navigator/report-navigator.component.mjs +63 -0
  135. package/esm2022/lib/report-new-top-form/report-new-top-form.component.mjs +60 -0
  136. package/esm2022/lib/report-search-fields-hidden-settings/report-search-fields-hidden-settings.component.mjs +35 -0
  137. package/esm2022/lib/report-search-fields-manage/report-search-fields-manage.component.mjs +97 -0
  138. package/esm2022/lib/report-search-panel-save/report-search-panel-save.component.mjs +88 -0
  139. package/esm2022/lib/report-tree-base.mjs +408 -0
  140. package/esm2022/lib/report-view-renderer.directive.mjs +366 -0
  141. package/esm2022/lib/responsive-toolbar/responsive-toolbar.component.mjs +50 -0
  142. package/esm2022/lib/responsive-toolbar-renderer/responsive-toolbar-renderer.component.mjs +84 -0
  143. package/esm2022/lib/rich-text-static/rich-text-static.component.mjs +72 -0
  144. package/esm2022/lib/sap-font-class.pipe.mjs +29 -0
  145. package/esm2022/lib/sap-font.pipe.mjs +29 -0
  146. package/esm2022/lib/sap-size.pipe.mjs +27 -0
  147. package/esm2022/lib/sap-ui-report-base.component.mjs +765 -0
  148. package/esm2022/lib/search-panel/search-panel.component.mjs +42 -0
  149. package/{esm2020 → esm2022}/lib/static-text/static-text.component.mjs +15 -15
  150. package/{esm2020 → esm2022}/lib/title/title.component.mjs +15 -15
  151. package/{esm2020 → esm2022}/lib/ui-asp-report-viewer/ui-asp-report-viewer.component.mjs +18 -18
  152. package/esm2022/lib/ui-button/ui-button.component.mjs +31 -0
  153. package/esm2022/lib/ui-calendar/ui-calendar.component.mjs +53 -0
  154. package/esm2022/lib/ui-card-view/ui-card-view.component.mjs +59 -0
  155. package/esm2022/lib/ui-card-view-horizontal-group/ui-card-view-horizontal-group.component.mjs +42 -0
  156. package/esm2022/lib/ui-check-box/ui-check-box.component.mjs +34 -0
  157. package/esm2022/lib/ui-color-ui/ui-color-ui.component.mjs +50 -0
  158. package/esm2022/lib/ui-container-with-button/ui-container-with-button.component.mjs +34 -0
  159. package/esm2022/lib/ui-date-range-ex/ui-date-range-ex.component.mjs +191 -0
  160. package/esm2022/lib/ui-date-time/ui-date-time.component.mjs +149 -0
  161. package/esm2022/lib/ui-editable-grid/ui-editable-grid.component.mjs +110 -0
  162. package/esm2022/lib/ui-exception-form/ui-exception-form.component.mjs +53 -0
  163. package/esm2022/lib/ui-file-linear-list-box/ui-file-linear-list-box.component.mjs +121 -0
  164. package/esm2022/lib/ui-form-panel/ui-form-panel.component.mjs +92 -0
  165. package/{esm2020 → esm2022}/lib/ui-gantt-chart/ui-gantt-chart.component.mjs +32 -32
  166. package/{esm2020 → esm2022}/lib/ui-graph/ui-graph.component.mjs +17 -17
  167. package/{esm2020 → esm2022}/lib/ui-grid/ui-grid.component.mjs +25 -25
  168. package/esm2022/lib/ui-grid-columns/ui-grid-columns.component.mjs +43 -0
  169. package/esm2022/lib/ui-grid-filter-item/ui-grid-filter-item.component.mjs +66 -0
  170. package/esm2022/lib/ui-grid-filter-settings/ui-grid-filter-settings.component.mjs +75 -0
  171. package/esm2022/lib/ui-grid-sort-item/ui-grid-sort-item.component.mjs +58 -0
  172. package/esm2022/lib/ui-grid-sort-setting/ui-grid-sort-setting.component.mjs +155 -0
  173. package/{esm2020 → esm2022}/lib/ui-html-viewer/ui-html-viewer.component.mjs +16 -16
  174. package/{esm2020 → esm2022}/lib/ui-info-bar-panel/ui-info-bar-panel.component.mjs +11 -11
  175. package/{esm2020 → esm2022}/lib/ui-label/ui-label.component.mjs +12 -12
  176. package/esm2022/lib/ui-linear-list-container-with-button/ui-linear-list-container-with-button.component.mjs +349 -0
  177. package/esm2022/lib/ui-list-view/ui-list-view.component.mjs +75 -0
  178. package/esm2022/lib/ui-matrix-view/ui-matrix-view.component.mjs +124 -0
  179. package/esm2022/lib/ui-mo-info-combo-viewer/ui-mo-info-combo-viewer.component.mjs +19 -0
  180. package/{esm2020 → esm2022}/lib/ui-mo-info-general-object-ui/ui-mo-info-general-object-ui.component.mjs +14 -14
  181. package/esm2022/lib/ui-mo-info-sub-form-ui/ui-mo-info-sub-form-ui.component.mjs +55 -0
  182. package/esm2022/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.mjs +430 -0
  183. package/esm2022/lib/ui-monaco-editor/ui-monaco-editor.component.mjs +28 -0
  184. package/esm2022/lib/ui-multi-select-card/ui-multi-select-card.component.mjs +37 -0
  185. package/esm2022/lib/ui-multi-select-checkbox/ui-multi-select-checkbox.component.mjs +59 -0
  186. package/esm2022/lib/ui-multi-select-combo/ui-multi-select-combo.component.mjs +93 -0
  187. package/esm2022/lib/ui-multi-select-radio/ui-multi-select-radio.component.mjs +36 -0
  188. package/esm2022/lib/ui-multi-select-slider/ui-multi-select-slider.component.mjs +56 -0
  189. package/esm2022/lib/ui-multi-select-smile/ui-multi-select-smile.component.mjs +28 -0
  190. package/esm2022/lib/ui-num-decimal-ui/ui-num-decimal-ui.component.mjs +24 -0
  191. package/esm2022/lib/ui-num-int-slider/ui-num-int-slider.component.mjs +27 -0
  192. package/{esm2020 → esm2022}/lib/ui-num-int-ui/ui-num-int-ui.component.mjs +21 -21
  193. package/esm2022/lib/ui-pdf-viewer/ui-pdf-viewer.component.mjs +261 -0
  194. package/esm2022/lib/ui-picture-file/ui-picture-file.component.mjs +98 -0
  195. package/esm2022/lib/ui-pictures-info/ui-pictures-info.component.mjs +223 -0
  196. package/esm2022/lib/ui-radio-group/ui-radio-group.component.mjs +48 -0
  197. package/esm2022/lib/ui-read-only-field/ui-read-only-field.component.mjs +36 -0
  198. package/esm2022/lib/ui-report-container/ui-report-container.component.mjs +46 -0
  199. package/{esm2020 → esm2022}/lib/ui-search-command-info-ui/ui-search-command-info-ui.component.mjs +24 -24
  200. package/esm2022/lib/ui-simple-combo/ui-simple-combo.component.mjs +37 -0
  201. package/{esm2020 → esm2022}/lib/ui-single-picture/ui-single-picture.component.mjs +36 -36
  202. package/esm2022/lib/ui-switch-button/ui-switch-button.component.mjs +20 -0
  203. package/esm2022/lib/ui-table-view/ui-table-view.component.mjs +155 -0
  204. package/esm2022/lib/ui-text-area/ui-text-area.component.mjs +49 -0
  205. package/esm2022/lib/ui-text-field/ui-text-field.component.mjs +52 -0
  206. package/{esm2020 → esm2022}/lib/ui-text-field-auto-complete/ui-text-field-auto-complete.component.mjs +47 -47
  207. package/{esm2020 → esm2022}/lib/ui-time-span/ui-time-span.component.mjs +24 -24
  208. package/esm2022/lib/ui-tinymce/ui-tinymce.component.mjs +53 -0
  209. package/esm2022/lib/ui-tree/ui-tree.component.mjs +92 -0
  210. package/esm2022/lib/ui-tree-view/ui-tree-view.component.mjs +80 -0
  211. package/esm2022/lib/ui-ulv-form-multi-select-ui/ui-ulv-form-multi-select-ui.component.mjs +23 -0
  212. package/esm2022/lib/ui-ulv-main-ui/ui-ulv-main-ui.component.mjs +289 -0
  213. package/esm2022/lib/ui-workflow-panel-ui/ui-workflow-panel-ui.component.mjs +25 -0
  214. package/esm2022/lib/ul-loading-mask-ui/ul-loading-mask-ui.component.mjs +93 -0
  215. package/esm2022/lib/ul-msg-box-adapter/ul-msg-box-adapter.component.mjs +117 -0
  216. package/esm2022/lib/ul-notify-popup/ul-notify-popup.component.mjs +32 -0
  217. package/esm2022/lib/ul-toast-adapter/ul-toast-adapter.component.mjs +48 -0
  218. package/esm2022/lib/ulv-column-settings/ulv-column-settings.component.mjs +60 -0
  219. package/esm2022/lib/ulv-context-menu/ulv-context-menu.component.mjs +87 -0
  220. package/esm2022/lib/ulv-filter-settings/ulv-filter-settings.component.mjs +43 -0
  221. package/esm2022/lib/ulv-form-multi-select/ulv-form-multi-select.component.mjs +184 -0
  222. package/esm2022/lib/ulv-groupby-settings/ulv-groupby-settings.component.mjs +44 -0
  223. package/esm2022/lib/ulv-paging/ulv-paging.component.mjs +84 -0
  224. package/esm2022/lib/ulv-selection/ulv-selection.component.mjs +65 -0
  225. package/esm2022/lib/ulv-settings/ulv-settings.component.mjs +116 -0
  226. package/esm2022/lib/ulv-sort-settings/ulv-sort-settings.component.mjs +44 -0
  227. package/esm2022/lib/ulv-toolbar/ulv-toolbar.component.mjs +115 -0
  228. package/esm2022/lib/upload-file-status.pipe.mjs +28 -0
  229. package/esm2022/lib/util-chat-time-badge.pipe.mjs +18 -0
  230. package/esm2022/lib/util-date-to-hh-mm.pipe.mjs +23 -0
  231. package/{esm2020 → esm2022}/lib/wizard-layout.directive.mjs +103 -103
  232. package/{esm2020 → esm2022}/public-api.mjs +230 -222
  233. package/fesm2022/barsa-sap-ui.mjs +14745 -0
  234. package/fesm2022/barsa-sap-ui.mjs.map +1 -0
  235. package/index.d.ts +5 -5
  236. package/lib/apply-conditional-formmatings.directive.d.ts +25 -25
  237. package/lib/barsa-answer-card/barsa-answer-card.component.d.ts +12 -12
  238. package/lib/barsa-asp-viewer/barsa-asp-viewer.component.d.ts +29 -29
  239. package/lib/barsa-bar-panel/barsa-bar-panel.component.d.ts +9 -9
  240. package/lib/barsa-base-panel/barsa-base-layout-panel.component.d.ts +12 -12
  241. package/lib/barsa-card-layout-panel/barsa-card-layout-panel.component.d.ts +15 -15
  242. package/lib/barsa-card-row-payam/barsa-card-row-payam.component.d.ts +20 -20
  243. package/lib/barsa-cartable-form/barsa-cartable-form.component.d.ts +10 -10
  244. package/lib/barsa-cartable-template/barsa-cartable-template.component.d.ts +14 -14
  245. package/lib/barsa-chat/barsa-chat.component.d.ts +48 -0
  246. package/lib/barsa-chat/chat.model.d.ts +43 -0
  247. package/lib/barsa-chat-content/barsa-chat-content.component.d.ts +5 -0
  248. package/lib/barsa-chat-content-toolbar/barsa-chat-content-toolbar.component.d.ts +9 -0
  249. package/lib/barsa-chat-list/barsa-chat-list.component.d.ts +16 -0
  250. package/lib/barsa-chat-message/barsa-chat-message.component.d.ts +16 -0
  251. package/lib/barsa-chat-thread/barsa-chat-thread.component.d.ts +6 -0
  252. package/lib/barsa-chat-threads-list/barsa-chat-threads-list.component.d.ts +5 -0
  253. package/lib/barsa-chat-threads-list-toolbar/barsa-chat-threads-list-toolbar.component.d.ts +5 -0
  254. package/lib/barsa-chip/barsa-chip.component.d.ts +20 -20
  255. package/lib/barsa-column-indicator/barsa-column-indicator.component.d.ts +11 -11
  256. package/lib/barsa-column-rownumber/barsa-column-rownumber.component.d.ts +8 -8
  257. package/lib/barsa-custom-inline-edit/barsa-custom-inline-edit.component.d.ts +6 -6
  258. package/lib/barsa-custom-inline-edit-row/barsa-custom-inline-edit-row.component.d.ts +10 -10
  259. package/lib/barsa-date-time-picker/barsa-date-time-picker.component.d.ts +18 -18
  260. package/lib/barsa-dynamic-field/barsa-dynamic-field.component.d.ts +16 -16
  261. package/lib/barsa-enum-menu-button/barsa-enum-menu-button.component.d.ts +23 -23
  262. package/lib/barsa-field-key-value/barsa-field-key-value.component.d.ts +26 -26
  263. package/lib/barsa-form-side-content/barsa-form-side-content.component.d.ts +25 -23
  264. package/lib/barsa-grid-layout-panel/barsa-grid-layout-panel.component.d.ts +16 -16
  265. package/lib/barsa-group-cartable/barsa-cartable-group.component.d.ts +26 -26
  266. package/lib/barsa-horizontal-flex-panel/barsa-horizontal-flex-panel.component.d.ts +14 -14
  267. package/lib/barsa-linkable-items-panel/barsa-linkable-items-panel.component.d.ts +12 -12
  268. package/lib/barsa-list-file-linear/barsa-list-file-linear.component.d.ts +17 -17
  269. package/lib/barsa-list-file-linear-gmail/barsa-list-file-linear-gmail.component.d.ts +8 -8
  270. package/lib/barsa-list-layout-panel/barsa-list-layout-panel.component.d.ts +9 -9
  271. package/lib/barsa-monaco-editor/barsa-monaco-editor.component.d.ts +23 -23
  272. package/lib/barsa-network-offline/barsa-network-offline.component.d.ts +14 -14
  273. package/lib/barsa-pishnamayesh-payam/barsa-pishnamayesh-payam.component.d.ts +79 -79
  274. package/lib/barsa-question-answer-comments-section/barsa-question-answer-comments-section.component.d.ts +7 -7
  275. package/lib/barsa-question-answer-content-actions-section/barsa-question-answer-content-actions-section.component.d.ts +13 -13
  276. package/lib/barsa-question-answer-creator-time-section/barsa-question-answer-creator-time-section.component.d.ts +7 -7
  277. package/lib/barsa-question-answer-form/barsa-question-answer-form.component.d.ts +10 -10
  278. package/lib/barsa-question-answer-form-add-comment/barsa-question-answer-form-add-comment.component.d.ts +13 -13
  279. package/lib/barsa-question-answer-vote-section/barsa-question-answer-vote-section.component.d.ts +14 -14
  280. package/lib/barsa-question-post/barsa-question-post.component.d.ts +10 -10
  281. package/lib/barsa-report-card-flex-view/barsa-report-card-flex-view.component.d.ts +9 -9
  282. package/lib/barsa-report-checkbox-switch-button/barsa-report-checkbox-switch-button.component.d.ts +15 -15
  283. package/lib/barsa-report-one-of-list/barsa-report-one-of-list.component.d.ts +31 -31
  284. package/lib/barsa-sap-ui-routing.module.d.ts +7 -7
  285. package/lib/barsa-sap-ui.module.d.ts +245 -234
  286. package/lib/barsa-search-form/barsa-search-form.component.d.ts +8 -8
  287. package/lib/barsa-simple-form/barsa-simple-form.component.d.ts +73 -73
  288. package/lib/barsa-table-column/barsa-table-column.component.d.ts +8 -8
  289. package/lib/barsa-table-header/barsa-table-header.component.d.ts +59 -59
  290. package/lib/barsa-table-row/barsa-table-row.component.d.ts +18 -18
  291. package/lib/barsa-tag-categories/barsa-tag-categories.component.d.ts +11 -11
  292. package/lib/barsa-tag-chip/barsa-tag-chip.component.d.ts +10 -10
  293. package/lib/barsa-tags-category-row/barsa-tags-category-row.component.d.ts +9 -9
  294. package/lib/barsa-text-ellipsis/barsa-text-ellipsis.component.d.ts +18 -18
  295. package/lib/barsa-tinyemce/barsa-tinyemce.component.d.ts +54 -54
  296. package/lib/barsa-toolbaritem-search/barsa-toolbaritem-search.component.d.ts +12 -12
  297. package/lib/barsa-tree-item/barsa-tree-item.component.d.ts +54 -54
  298. package/lib/barsa-tree-item/node-has-one-depth-level.pipe.d.ts +8 -8
  299. package/lib/barsa-ulv-main/barsa-ulv-main.component.d.ts +72 -72
  300. package/lib/blob-viewer/blob-viewer.component.d.ts +24 -24
  301. package/lib/breadcrumb/breadcrumb.component.d.ts +17 -17
  302. package/lib/captcha-field/captcha-field.component.d.ts +10 -10
  303. package/lib/card-item/card-item.component.d.ts +20 -20
  304. package/lib/card-view-content/card-view-content.component.d.ts +14 -14
  305. package/lib/col-renderer.directive.d.ts +10 -10
  306. package/lib/column-matrix-renderer/column-matrix-renderer.component.d.ts +23 -23
  307. package/lib/column-matrix-renderer/matrix-value.pipe.d.ts +8 -8
  308. package/lib/column-renderer/column-renderer.component.d.ts +33 -33
  309. package/lib/constants.d.ts +12 -12
  310. package/lib/custom-date-time/custom-date-time.component.d.ts +26 -26
  311. package/lib/device-info-field-base.d.ts +12 -12
  312. package/lib/dialog-handler.directive.d.ts +12 -12
  313. package/lib/download-files.directive.d.ts +9 -9
  314. package/lib/dynamic-page-size.pipe.d.ts +8 -8
  315. package/lib/file-in-dialog/file-in-dialog.component.d.ts +16 -16
  316. package/lib/file-viewer/file-viewer.component.d.ts +21 -21
  317. package/lib/file-viewer-content/file-viewer-content.component.d.ts +20 -20
  318. package/lib/file-viewer-popover/file-viewer-popover.component.d.ts +17 -17
  319. package/lib/form-dialog/form-dialog.component.d.ts +45 -45
  320. package/lib/form-dialog-less/form-dialog-less.component.d.ts +29 -29
  321. package/lib/form-toolbar/form-toolbar.component.d.ts +14 -14
  322. package/lib/form-toolbar-button/form-toolbar-button.component.d.ts +20 -20
  323. package/lib/form-wizard/form-wizard.component.d.ts +8 -8
  324. package/lib/fullscreen-dialog.directive.d.ts +20 -20
  325. package/lib/fullscreen-files.directive.d.ts +16 -16
  326. package/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.d.ts +76 -76
  327. package/lib/gantt-dhtml-chart-view/gantt-dhtml-chart-view.component.d.ts +18 -18
  328. package/lib/global-search/global-search.component.d.ts +11 -11
  329. package/lib/global-search-module/global-search-module.component.d.ts +18 -18
  330. package/lib/global-search-panel/global-search-panel.component.d.ts +9 -9
  331. package/lib/header-avatar/header-avatar.component.d.ts +8 -8
  332. package/lib/header-facet-form/header-facet-form.component.d.ts +9 -9
  333. package/lib/header-facet-key-value/header-facet-key-value.component.d.ts +11 -11
  334. package/lib/header-facet-microchart/header-facet-microchart.component.d.ts +8 -8
  335. package/lib/header-facet-plain-text/header-facet-plain-text.component.d.ts +11 -11
  336. package/lib/header-facet-progress/header-facet-progress.component.d.ts +11 -11
  337. package/lib/header-facet-rate/header-facet-rate.component.d.ts +11 -11
  338. package/lib/htree-create-new/htree-create-new.component.d.ts +13 -13
  339. package/lib/hyperlink/hyperlink.component.d.ts +7 -7
  340. package/lib/index.d.ts +102 -100
  341. package/lib/inline-save-and-cancel/inline-save-and-cancel.component.d.ts +11 -11
  342. package/lib/layout-actions/layout-actions.component.d.ts +25 -25
  343. package/lib/layout-control/layout-control.component.d.ts +67 -67
  344. package/lib/layout-wizard/layout-wizard.component.d.ts +28 -28
  345. package/lib/list-item/list-item.component.d.ts +14 -14
  346. package/lib/ly-empty-space/ly-empty-space.component.d.ts +13 -13
  347. package/lib/ly-horizontal-layout/ly-horizontal-layout.component.d.ts +23 -23
  348. package/lib/ly-label/ly-label.component.d.ts +16 -16
  349. package/lib/ly-layout-container/ly-layout-container.component.d.ts +26 -26
  350. package/lib/ly-layout-container-of-root/ly-layout-container-of-root.component.d.ts +8 -8
  351. package/lib/ly-layout-field-label/ly-layout-field-label.component.d.ts +13 -13
  352. package/lib/ly-layout-panel/ly-layout-panel.component.d.ts +26 -26
  353. package/lib/ly-line/ly-line.component.d.ts +17 -17
  354. package/lib/ly-simple-label/ly-simple-label.component.d.ts +9 -9
  355. package/lib/ly-tab-container/ly-tab-container.component.d.ts +19 -19
  356. package/lib/ly-tab-page/ly-tab-page.component.d.ts +20 -20
  357. package/lib/ly-vertical-layout/ly-vertical-layout.component.d.ts +19 -19
  358. package/lib/manage-filters-report/manage-filters-report.component.d.ts +24 -24
  359. package/lib/mask/mask.component.d.ts +9 -9
  360. package/lib/message-strip/message-strip.component.d.ts +11 -11
  361. package/lib/models/grid-data-provider.d.ts +22 -22
  362. package/lib/models/grid-view.d.ts +61 -61
  363. package/lib/models/index.d.ts +1 -1
  364. package/lib/no-data/no-data.component.d.ts +11 -9
  365. package/lib/notification-item/notification-item.component.d.ts +43 -43
  366. package/lib/notification-popup.service.d.ts +17 -17
  367. package/lib/progress-indicator/progress-indicator.component.d.ts +8 -8
  368. package/lib/report-navigator/report-navigator.component.d.ts +21 -21
  369. package/lib/report-new-top-form/report-new-top-form.component.d.ts +18 -18
  370. package/lib/report-search-fields-hidden-settings/report-search-fields-hidden-settings.component.d.ts +14 -14
  371. package/lib/report-search-fields-manage/report-search-fields-manage.component.d.ts +20 -20
  372. package/lib/report-search-panel-save/report-search-panel-save.component.d.ts +27 -27
  373. package/lib/report-tree-base.d.ts +62 -62
  374. package/lib/report-view-renderer.directive.d.ts +117 -117
  375. package/lib/responsive-toolbar/responsive-toolbar.component.d.ts +19 -19
  376. package/lib/responsive-toolbar-renderer/responsive-toolbar-renderer.component.d.ts +24 -24
  377. package/lib/rich-text-static/rich-text-static.component.d.ts +28 -28
  378. package/lib/sap-font-class.pipe.d.ts +8 -8
  379. package/lib/sap-font.pipe.d.ts +9 -9
  380. package/lib/sap-size.pipe.d.ts +8 -8
  381. package/lib/sap-ui-report-base.component.d.ts +154 -154
  382. package/lib/search-panel/search-panel.component.d.ts +14 -14
  383. package/lib/static-text/static-text.component.d.ts +7 -7
  384. package/lib/title/title.component.d.ts +7 -7
  385. package/lib/ui-asp-report-viewer/ui-asp-report-viewer.component.d.ts +9 -9
  386. package/lib/ui-button/ui-button.component.d.ts +11 -11
  387. package/lib/ui-calendar/ui-calendar.component.d.ts +19 -19
  388. package/lib/ui-card-view/ui-card-view.component.d.ts +16 -16
  389. package/lib/ui-card-view-horizontal-group/ui-card-view-horizontal-group.component.d.ts +12 -12
  390. package/lib/ui-check-box/ui-check-box.component.d.ts +14 -14
  391. package/lib/ui-color-ui/ui-color-ui.component.d.ts +16 -16
  392. package/lib/ui-container-with-button/ui-container-with-button.component.d.ts +11 -11
  393. package/lib/ui-date-range-ex/ui-date-range-ex.component.d.ts +35 -36
  394. package/lib/ui-date-time/ui-date-time.component.d.ts +39 -40
  395. package/lib/ui-editable-grid/ui-editable-grid.component.d.ts +43 -43
  396. package/lib/ui-exception-form/ui-exception-form.component.d.ts +15 -15
  397. package/lib/ui-file-linear-list-box/ui-file-linear-list-box.component.d.ts +50 -50
  398. package/lib/ui-form-panel/ui-form-panel.component.d.ts +53 -53
  399. package/lib/ui-gantt-chart/ui-gantt-chart.component.d.ts +15 -15
  400. package/lib/ui-graph/ui-graph.component.d.ts +9 -9
  401. package/lib/ui-grid/ui-grid.component.d.ts +12 -12
  402. package/lib/ui-grid-columns/ui-grid-columns.component.d.ts +14 -14
  403. package/lib/ui-grid-filter-item/ui-grid-filter-item.component.d.ts +19 -19
  404. package/lib/ui-grid-filter-settings/ui-grid-filter-settings.component.d.ts +24 -24
  405. package/lib/ui-grid-sort-item/ui-grid-sort-item.component.d.ts +25 -25
  406. package/lib/ui-grid-sort-setting/ui-grid-sort-setting.component.d.ts +28 -28
  407. package/lib/ui-html-viewer/ui-html-viewer.component.d.ts +9 -9
  408. package/lib/ui-info-bar-panel/ui-info-bar-panel.component.d.ts +5 -5
  409. package/lib/ui-label/ui-label.component.d.ts +6 -6
  410. package/lib/ui-linear-list-container-with-button/ui-linear-list-container-with-button.component.d.ts +73 -73
  411. package/lib/ui-list-view/ui-list-view.component.d.ts +29 -29
  412. package/lib/ui-matrix-view/ui-matrix-view.component.d.ts +45 -45
  413. package/lib/ui-mo-info-combo-viewer/ui-mo-info-combo-viewer.component.d.ts +7 -7
  414. package/lib/ui-mo-info-general-object-ui/ui-mo-info-general-object-ui.component.d.ts +6 -6
  415. package/lib/ui-mo-info-sub-form-ui/ui-mo-info-sub-form-ui.component.d.ts +15 -15
  416. package/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.d.ts +90 -90
  417. package/lib/ui-monaco-editor/ui-monaco-editor.component.d.ts +10 -7
  418. package/lib/ui-multi-select-card/ui-multi-select-card.component.d.ts +17 -17
  419. package/lib/ui-multi-select-checkbox/ui-multi-select-checkbox.component.d.ts +19 -19
  420. package/lib/ui-multi-select-combo/ui-multi-select-combo.component.d.ts +27 -27
  421. package/lib/ui-multi-select-radio/ui-multi-select-radio.component.d.ts +17 -17
  422. package/lib/ui-multi-select-slider/ui-multi-select-slider.component.d.ts +24 -24
  423. package/lib/ui-multi-select-smile/ui-multi-select-smile.component.d.ts +23 -23
  424. package/lib/ui-num-decimal-ui/ui-num-decimal-ui.component.d.ts +11 -11
  425. package/lib/ui-num-int-slider/ui-num-int-slider.component.d.ts +18 -18
  426. package/lib/ui-num-int-ui/ui-num-int-ui.component.d.ts +10 -10
  427. package/lib/ui-pdf-viewer/ui-pdf-viewer.component.d.ts +79 -79
  428. package/lib/ui-picture-file/ui-picture-file.component.d.ts +26 -25
  429. package/lib/ui-pictures-info/ui-pictures-info.component.d.ts +80 -69
  430. package/lib/ui-radio-group/ui-radio-group.component.d.ts +20 -20
  431. package/lib/ui-read-only-field/ui-read-only-field.component.d.ts +21 -21
  432. package/lib/ui-report-container/ui-report-container.component.d.ts +17 -17
  433. package/lib/ui-search-command-info-ui/ui-search-command-info-ui.component.d.ts +9 -9
  434. package/lib/ui-simple-combo/ui-simple-combo.component.d.ts +16 -16
  435. package/lib/ui-single-picture/ui-single-picture.component.d.ts +13 -13
  436. package/lib/ui-switch-button/ui-switch-button.component.d.ts +11 -11
  437. package/lib/ui-table-view/ui-table-view.component.d.ts +39 -39
  438. package/lib/ui-text-area/ui-text-area.component.d.ts +23 -23
  439. package/lib/ui-text-field/ui-text-field.component.d.ts +23 -23
  440. package/lib/ui-text-field-auto-complete/ui-text-field-auto-complete.component.d.ts +13 -13
  441. package/lib/ui-time-span/ui-time-span.component.d.ts +10 -10
  442. package/lib/ui-tinymce/ui-tinymce.component.d.ts +22 -22
  443. package/lib/ui-tree/ui-tree.component.d.ts +37 -37
  444. package/lib/ui-tree-view/ui-tree-view.component.d.ts +47 -47
  445. package/lib/ui-ulv-form-multi-select-ui/ui-ulv-form-multi-select-ui.component.d.ts +9 -9
  446. package/lib/ui-ulv-main-ui/ui-ulv-main-ui.component.d.ts +74 -74
  447. package/lib/ui-workflow-panel-ui/ui-workflow-panel-ui.component.d.ts +16 -16
  448. package/lib/ul-loading-mask-ui/ul-loading-mask-ui.component.d.ts +21 -21
  449. package/lib/ul-msg-box-adapter/ul-msg-box-adapter.component.d.ts +48 -48
  450. package/lib/ul-notify-popup/ul-notify-popup.component.d.ts +21 -21
  451. package/lib/ul-toast-adapter/ul-toast-adapter.component.d.ts +13 -13
  452. package/lib/ulv-column-settings/ulv-column-settings.component.d.ts +20 -20
  453. package/lib/ulv-context-menu/ulv-context-menu.component.d.ts +31 -31
  454. package/lib/ulv-filter-settings/ulv-filter-settings.component.d.ts +19 -19
  455. package/lib/ulv-form-multi-select/ulv-form-multi-select.component.d.ts +26 -26
  456. package/lib/ulv-groupby-settings/ulv-groupby-settings.component.d.ts +16 -16
  457. package/lib/ulv-paging/ulv-paging.component.d.ts +28 -28
  458. package/lib/ulv-selection/ulv-selection.component.d.ts +43 -43
  459. package/lib/ulv-settings/ulv-settings.component.d.ts +43 -43
  460. package/lib/ulv-sort-settings/ulv-sort-settings.component.d.ts +16 -16
  461. package/lib/ulv-toolbar/ulv-toolbar.component.d.ts +49 -49
  462. package/lib/upload-file-status.pipe.d.ts +9 -9
  463. package/lib/util-chat-time-badge.pipe.d.ts +7 -0
  464. package/lib/util-date-to-hh-mm.pipe.d.ts +7 -0
  465. package/lib/wizard-layout.directive.d.ts +40 -40
  466. package/package.json +7 -13
  467. package/public-api.d.ts +226 -218
  468. package/esm2020/lib/apply-conditional-formmatings.directive.mjs +0 -89
  469. package/esm2020/lib/barsa-answer-card/barsa-answer-card.component.mjs +0 -41
  470. package/esm2020/lib/barsa-asp-viewer/barsa-asp-viewer.component.mjs +0 -127
  471. package/esm2020/lib/barsa-base-panel/barsa-base-layout-panel.component.mjs +0 -29
  472. package/esm2020/lib/barsa-card-layout-panel/barsa-card-layout-panel.component.mjs +0 -25
  473. package/esm2020/lib/barsa-card-row-payam/barsa-card-row-payam.component.mjs +0 -30
  474. package/esm2020/lib/barsa-cartable-form/barsa-cartable-form.component.mjs +0 -41
  475. package/esm2020/lib/barsa-chip/barsa-chip.component.mjs +0 -72
  476. package/esm2020/lib/barsa-custom-inline-edit/barsa-custom-inline-edit.component.mjs +0 -15
  477. package/esm2020/lib/barsa-custom-inline-edit-row/barsa-custom-inline-edit-row.component.mjs +0 -26
  478. package/esm2020/lib/barsa-date-time-picker/barsa-date-time-picker.component.mjs +0 -71
  479. package/esm2020/lib/barsa-dynamic-field/barsa-dynamic-field.component.mjs +0 -42
  480. package/esm2020/lib/barsa-enum-menu-button/barsa-enum-menu-button.component.mjs +0 -61
  481. package/esm2020/lib/barsa-field-key-value/barsa-field-key-value.component.mjs +0 -45
  482. package/esm2020/lib/barsa-form-side-content/barsa-form-side-content.component.mjs +0 -37
  483. package/esm2020/lib/barsa-grid-layout-panel/barsa-grid-layout-panel.component.mjs +0 -27
  484. package/esm2020/lib/barsa-group-cartable/barsa-cartable-group.component.mjs +0 -94
  485. package/esm2020/lib/barsa-horizontal-flex-panel/barsa-horizontal-flex-panel.component.mjs +0 -22
  486. package/esm2020/lib/barsa-linkable-items-panel/barsa-linkable-items-panel.component.mjs +0 -37
  487. package/esm2020/lib/barsa-list-file-linear/barsa-list-file-linear.component.mjs +0 -41
  488. package/esm2020/lib/barsa-list-file-linear-gmail/barsa-list-file-linear-gmail.component.mjs +0 -29
  489. package/esm2020/lib/barsa-list-layout-panel/barsa-list-layout-panel.component.mjs +0 -23
  490. package/esm2020/lib/barsa-monaco-editor/barsa-monaco-editor.component.mjs +0 -83
  491. package/esm2020/lib/barsa-network-offline/barsa-network-offline.component.mjs +0 -53
  492. package/esm2020/lib/barsa-pishnamayesh-payam/barsa-pishnamayesh-payam.component.mjs +0 -159
  493. package/esm2020/lib/barsa-question-answer-comments-section/barsa-question-answer-comments-section.component.mjs +0 -17
  494. package/esm2020/lib/barsa-question-answer-content-actions-section/barsa-question-answer-content-actions-section.component.mjs +0 -31
  495. package/esm2020/lib/barsa-question-answer-creator-time-section/barsa-question-answer-creator-time-section.component.mjs +0 -14
  496. package/esm2020/lib/barsa-question-answer-form/barsa-question-answer-form.component.mjs +0 -35
  497. package/esm2020/lib/barsa-question-answer-form-add-comment/barsa-question-answer-form-add-comment.component.mjs +0 -47
  498. package/esm2020/lib/barsa-question-answer-vote-section/barsa-question-answer-vote-section.component.mjs +0 -78
  499. package/esm2020/lib/barsa-question-post/barsa-question-post.component.mjs +0 -30
  500. package/esm2020/lib/barsa-report-card-flex-view/barsa-report-card-flex-view.component.mjs +0 -31
  501. package/esm2020/lib/barsa-report-one-of-list/barsa-report-one-of-list.component.mjs +0 -98
  502. package/esm2020/lib/barsa-sap-ui.module.mjs +0 -332
  503. package/esm2020/lib/barsa-search-form/barsa-search-form.component.mjs +0 -29
  504. package/esm2020/lib/barsa-simple-form/barsa-simple-form.component.mjs +0 -168
  505. package/esm2020/lib/barsa-table-column/barsa-table-column.component.mjs +0 -28
  506. package/esm2020/lib/barsa-table-header/barsa-table-header.component.mjs +0 -198
  507. package/esm2020/lib/barsa-table-row/barsa-table-row.component.mjs +0 -61
  508. package/esm2020/lib/barsa-tag-categories/barsa-tag-categories.component.mjs +0 -60
  509. package/esm2020/lib/barsa-tag-chip/barsa-tag-chip.component.mjs +0 -26
  510. package/esm2020/lib/barsa-tags-category-row/barsa-tags-category-row.component.mjs +0 -23
  511. package/esm2020/lib/barsa-text-ellipsis/barsa-text-ellipsis.component.mjs +0 -38
  512. package/esm2020/lib/barsa-tinyemce/barsa-tinyemce.component.mjs +0 -417
  513. package/esm2020/lib/barsa-toolbaritem-search/barsa-toolbaritem-search.component.mjs +0 -36
  514. package/esm2020/lib/barsa-tree-item/barsa-tree-item.component.mjs +0 -130
  515. package/esm2020/lib/barsa-ulv-main/barsa-ulv-main.component.mjs +0 -209
  516. package/esm2020/lib/blob-viewer/blob-viewer.component.mjs +0 -78
  517. package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +0 -45
  518. package/esm2020/lib/card-item/card-item.component.mjs +0 -76
  519. package/esm2020/lib/card-view-content/card-view-content.component.mjs +0 -46
  520. package/esm2020/lib/col-renderer.directive.mjs +0 -46
  521. package/esm2020/lib/column-matrix-renderer/column-matrix-renderer.component.mjs +0 -56
  522. package/esm2020/lib/column-matrix-renderer/matrix-value.pipe.mjs +0 -60
  523. package/esm2020/lib/column-renderer/column-renderer.component.mjs +0 -85
  524. package/esm2020/lib/constants.mjs +0 -421
  525. package/esm2020/lib/custom-date-time/custom-date-time.component.mjs +0 -41
  526. package/esm2020/lib/download-files.directive.mjs +0 -33
  527. package/esm2020/lib/dynamic-page-size.pipe.mjs +0 -26
  528. package/esm2020/lib/file-viewer/file-viewer.component.mjs +0 -47
  529. package/esm2020/lib/file-viewer-popover/file-viewer-popover.component.mjs +0 -41
  530. package/esm2020/lib/form-dialog/form-dialog.component.mjs +0 -143
  531. package/esm2020/lib/form-dialog-less/form-dialog-less.component.mjs +0 -45
  532. package/esm2020/lib/form-toolbar/form-toolbar.component.mjs +0 -42
  533. package/esm2020/lib/form-toolbar-button/form-toolbar-button.component.mjs +0 -46
  534. package/esm2020/lib/form-wizard/form-wizard.component.mjs +0 -21
  535. package/esm2020/lib/fullscreen-dialog.directive.mjs +0 -59
  536. package/esm2020/lib/fullscreen-files.directive.mjs +0 -42
  537. package/esm2020/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +0 -188
  538. package/esm2020/lib/gantt-dhtml-chart-view/gantt-dhtml-chart-view.component.mjs +0 -203
  539. package/esm2020/lib/global-search-module/global-search-module.component.mjs +0 -30
  540. package/esm2020/lib/global-search-panel/global-search-panel.component.mjs +0 -25
  541. package/esm2020/lib/header-avatar/header-avatar.component.mjs +0 -19
  542. package/esm2020/lib/header-facet-progress/header-facet-progress.component.mjs +0 -26
  543. package/esm2020/lib/header-facet-rate/header-facet-rate.component.mjs +0 -26
  544. package/esm2020/lib/htree-create-new/htree-create-new.component.mjs +0 -49
  545. package/esm2020/lib/hyperlink/hyperlink.component.mjs +0 -23
  546. package/esm2020/lib/index.mjs +0 -529
  547. package/esm2020/lib/layout-actions/layout-actions.component.mjs +0 -68
  548. package/esm2020/lib/layout-control/layout-control.component.mjs +0 -234
  549. package/esm2020/lib/layout-wizard/layout-wizard.component.mjs +0 -155
  550. package/esm2020/lib/list-item/list-item.component.mjs +0 -33
  551. package/esm2020/lib/ly-empty-space/ly-empty-space.component.mjs +0 -42
  552. package/esm2020/lib/ly-horizontal-layout/ly-horizontal-layout.component.mjs +0 -71
  553. package/esm2020/lib/ly-label/ly-label.component.mjs +0 -35
  554. package/esm2020/lib/ly-layout-container/ly-layout-container.component.mjs +0 -83
  555. package/esm2020/lib/ly-layout-container-of-root/ly-layout-container-of-root.component.mjs +0 -17
  556. package/esm2020/lib/ly-layout-panel/ly-layout-panel.component.mjs +0 -73
  557. package/esm2020/lib/ly-line/ly-line.component.mjs +0 -56
  558. package/esm2020/lib/ly-simple-label/ly-simple-label.component.mjs +0 -23
  559. package/esm2020/lib/ly-tab-container/ly-tab-container.component.mjs +0 -52
  560. package/esm2020/lib/ly-tab-page/ly-tab-page.component.mjs +0 -44
  561. package/esm2020/lib/ly-vertical-layout/ly-vertical-layout.component.mjs +0 -50
  562. package/esm2020/lib/manage-filters-report/manage-filters-report.component.mjs +0 -45
  563. package/esm2020/lib/message-strip/message-strip.component.mjs +0 -28
  564. package/esm2020/lib/models/grid-data-provider.mjs +0 -83
  565. package/esm2020/lib/models/grid-view.mjs +0 -2
  566. package/esm2020/lib/no-data/no-data.component.mjs +0 -23
  567. package/esm2020/lib/notification-item/notification-item.component.mjs +0 -57
  568. package/esm2020/lib/notification-popup.service.mjs +0 -88
  569. package/esm2020/lib/report-navigator/report-navigator.component.mjs +0 -63
  570. package/esm2020/lib/report-new-top-form/report-new-top-form.component.mjs +0 -60
  571. package/esm2020/lib/report-search-fields-hidden-settings/report-search-fields-hidden-settings.component.mjs +0 -35
  572. package/esm2020/lib/report-search-fields-manage/report-search-fields-manage.component.mjs +0 -98
  573. package/esm2020/lib/report-search-panel-save/report-search-panel-save.component.mjs +0 -90
  574. package/esm2020/lib/report-tree-base.mjs +0 -408
  575. package/esm2020/lib/report-view-renderer.directive.mjs +0 -366
  576. package/esm2020/lib/responsive-toolbar/responsive-toolbar.component.mjs +0 -50
  577. package/esm2020/lib/responsive-toolbar-renderer/responsive-toolbar-renderer.component.mjs +0 -84
  578. package/esm2020/lib/rich-text-static/rich-text-static.component.mjs +0 -72
  579. package/esm2020/lib/sap-font-class.pipe.mjs +0 -29
  580. package/esm2020/lib/sap-font.pipe.mjs +0 -29
  581. package/esm2020/lib/sap-size.pipe.mjs +0 -27
  582. package/esm2020/lib/sap-ui-report-base.component.mjs +0 -766
  583. package/esm2020/lib/search-panel/search-panel.component.mjs +0 -43
  584. package/esm2020/lib/ui-button/ui-button.component.mjs +0 -31
  585. package/esm2020/lib/ui-calendar/ui-calendar.component.mjs +0 -53
  586. package/esm2020/lib/ui-card-view/ui-card-view.component.mjs +0 -60
  587. package/esm2020/lib/ui-card-view-horizontal-group/ui-card-view-horizontal-group.component.mjs +0 -43
  588. package/esm2020/lib/ui-check-box/ui-check-box.component.mjs +0 -34
  589. package/esm2020/lib/ui-color-ui/ui-color-ui.component.mjs +0 -50
  590. package/esm2020/lib/ui-container-with-button/ui-container-with-button.component.mjs +0 -34
  591. package/esm2020/lib/ui-date-range-ex/ui-date-range-ex.component.mjs +0 -194
  592. package/esm2020/lib/ui-date-time/ui-date-time.component.mjs +0 -150
  593. package/esm2020/lib/ui-editable-grid/ui-editable-grid.component.mjs +0 -110
  594. package/esm2020/lib/ui-exception-form/ui-exception-form.component.mjs +0 -53
  595. package/esm2020/lib/ui-file-linear-list-box/ui-file-linear-list-box.component.mjs +0 -121
  596. package/esm2020/lib/ui-form-panel/ui-form-panel.component.mjs +0 -92
  597. package/esm2020/lib/ui-grid-columns/ui-grid-columns.component.mjs +0 -44
  598. package/esm2020/lib/ui-grid-filter-item/ui-grid-filter-item.component.mjs +0 -67
  599. package/esm2020/lib/ui-grid-filter-settings/ui-grid-filter-settings.component.mjs +0 -76
  600. package/esm2020/lib/ui-grid-sort-item/ui-grid-sort-item.component.mjs +0 -59
  601. package/esm2020/lib/ui-grid-sort-setting/ui-grid-sort-setting.component.mjs +0 -156
  602. package/esm2020/lib/ui-linear-list-container-with-button/ui-linear-list-container-with-button.component.mjs +0 -349
  603. package/esm2020/lib/ui-list-view/ui-list-view.component.mjs +0 -75
  604. package/esm2020/lib/ui-matrix-view/ui-matrix-view.component.mjs +0 -125
  605. package/esm2020/lib/ui-mo-info-combo-viewer/ui-mo-info-combo-viewer.component.mjs +0 -19
  606. package/esm2020/lib/ui-mo-info-sub-form-ui/ui-mo-info-sub-form-ui.component.mjs +0 -56
  607. package/esm2020/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.mjs +0 -430
  608. package/esm2020/lib/ui-monaco-editor/ui-monaco-editor.component.mjs +0 -18
  609. package/esm2020/lib/ui-multi-select-card/ui-multi-select-card.component.mjs +0 -37
  610. package/esm2020/lib/ui-multi-select-checkbox/ui-multi-select-checkbox.component.mjs +0 -59
  611. package/esm2020/lib/ui-multi-select-combo/ui-multi-select-combo.component.mjs +0 -93
  612. package/esm2020/lib/ui-multi-select-radio/ui-multi-select-radio.component.mjs +0 -36
  613. package/esm2020/lib/ui-multi-select-slider/ui-multi-select-slider.component.mjs +0 -56
  614. package/esm2020/lib/ui-multi-select-smile/ui-multi-select-smile.component.mjs +0 -28
  615. package/esm2020/lib/ui-num-decimal-ui/ui-num-decimal-ui.component.mjs +0 -24
  616. package/esm2020/lib/ui-num-int-slider/ui-num-int-slider.component.mjs +0 -27
  617. package/esm2020/lib/ui-pdf-viewer/ui-pdf-viewer.component.mjs +0 -262
  618. package/esm2020/lib/ui-picture-file/ui-picture-file.component.mjs +0 -91
  619. package/esm2020/lib/ui-pictures-info/ui-pictures-info.component.mjs +0 -223
  620. package/esm2020/lib/ui-radio-group/ui-radio-group.component.mjs +0 -48
  621. package/esm2020/lib/ui-read-only-field/ui-read-only-field.component.mjs +0 -36
  622. package/esm2020/lib/ui-report-container/ui-report-container.component.mjs +0 -46
  623. package/esm2020/lib/ui-simple-combo/ui-simple-combo.component.mjs +0 -37
  624. package/esm2020/lib/ui-switch-button/ui-switch-button.component.mjs +0 -20
  625. package/esm2020/lib/ui-table-view/ui-table-view.component.mjs +0 -151
  626. package/esm2020/lib/ui-text-area/ui-text-area.component.mjs +0 -49
  627. package/esm2020/lib/ui-text-field/ui-text-field.component.mjs +0 -52
  628. package/esm2020/lib/ui-tinymce/ui-tinymce.component.mjs +0 -53
  629. package/esm2020/lib/ui-tree/ui-tree.component.mjs +0 -92
  630. package/esm2020/lib/ui-tree-view/ui-tree-view.component.mjs +0 -81
  631. package/esm2020/lib/ui-ulv-form-multi-select-ui/ui-ulv-form-multi-select-ui.component.mjs +0 -24
  632. package/esm2020/lib/ui-ulv-main-ui/ui-ulv-main-ui.component.mjs +0 -289
  633. package/esm2020/lib/ui-workflow-panel-ui/ui-workflow-panel-ui.component.mjs +0 -26
  634. package/esm2020/lib/ul-loading-mask-ui/ul-loading-mask-ui.component.mjs +0 -91
  635. package/esm2020/lib/ul-msg-box-adapter/ul-msg-box-adapter.component.mjs +0 -117
  636. package/esm2020/lib/ul-notify-popup/ul-notify-popup.component.mjs +0 -32
  637. package/esm2020/lib/ul-toast-adapter/ul-toast-adapter.component.mjs +0 -44
  638. package/esm2020/lib/ulv-column-settings/ulv-column-settings.component.mjs +0 -60
  639. package/esm2020/lib/ulv-context-menu/ulv-context-menu.component.mjs +0 -87
  640. package/esm2020/lib/ulv-filter-settings/ulv-filter-settings.component.mjs +0 -43
  641. package/esm2020/lib/ulv-form-multi-select/ulv-form-multi-select.component.mjs +0 -185
  642. package/esm2020/lib/ulv-groupby-settings/ulv-groupby-settings.component.mjs +0 -44
  643. package/esm2020/lib/ulv-paging/ulv-paging.component.mjs +0 -84
  644. package/esm2020/lib/ulv-selection/ulv-selection.component.mjs +0 -66
  645. package/esm2020/lib/ulv-settings/ulv-settings.component.mjs +0 -117
  646. package/esm2020/lib/ulv-sort-settings/ulv-sort-settings.component.mjs +0 -44
  647. package/esm2020/lib/ulv-toolbar/ulv-toolbar.component.mjs +0 -115
  648. package/esm2020/lib/upload-file-status.pipe.mjs +0 -28
  649. package/fesm2015/barsa-sap-ui.mjs +0 -14233
  650. package/fesm2015/barsa-sap-ui.mjs.map +0 -1
  651. package/fesm2020/barsa-sap-ui.mjs +0 -14203
  652. package/fesm2020/barsa-sap-ui.mjs.map +0 -1
@@ -0,0 +1,408 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { BehaviorSubject, Subject } from 'rxjs';
3
+ import { debounceTime, map, takeUntil } from 'rxjs/operators';
4
+ import { BarsaApi } from 'barsa-novin-ray-core';
5
+ import { SapUiReportBaseComponent } from './sap-ui-report-base.component';
6
+ import * as i0 from "@angular/core";
7
+ export class ReportTreeBaseComponent extends SapUiReportBaseComponent {
8
+ constructor() {
9
+ super(...arguments);
10
+ this._dragMove = new Subject();
11
+ this._selectedNodeSource = new BehaviorSubject(null);
12
+ this._rootSource = new BehaviorSubject(null);
13
+ }
14
+ get _root() {
15
+ return this._rootSource.getValue();
16
+ }
17
+ ngOnInit() {
18
+ this.selectedNode$ = this._selectedNodeSource.asObservable();
19
+ this.root$ = this._rootSource.asObservable().pipe(takeUntil(this._onDestroy$));
20
+ super.ngOnInit();
21
+ this.rtl$ = this._portalService.rtl$;
22
+ this.contentDensity$ = this._contentDensityService.contentDensity;
23
+ this._rootSource.next(this.context.root);
24
+ this._selectedNodeSource.next(this.context.selNode);
25
+ this.context.on({
26
+ rootChanged: (root) => {
27
+ this._rootSource.next(root);
28
+ },
29
+ selectedNodeChange: (node) => {
30
+ this._selectedNodeSource.next(node);
31
+ }
32
+ });
33
+ this._rootSource
34
+ .pipe(takeUntil(this._onDestroy$), map((root) => {
35
+ if (root) {
36
+ const moList = [];
37
+ const autoOpenLevels = BarsaApi.Common.Util.TryGetValue(this.context, 'Setting.View.TreeAutoOpenLevels', 1);
38
+ this._getAllItemsPerChildren(root, 0, moList, root, autoOpenLevels);
39
+ return moList;
40
+ }
41
+ return [];
42
+ }))
43
+ .subscribe((flatMoDataList) => {
44
+ this.flatMoDataList = flatMoDataList;
45
+ });
46
+ this._resetDropActionTodo();
47
+ this._dragMove
48
+ .asObservable()
49
+ .pipe(takeUntil(this._onDestroy$), debounceTime(50))
50
+ .subscribe((event) => {
51
+ this._doDragMove(event);
52
+ });
53
+ }
54
+ onCreateNew(e) {
55
+ this.context.fireEvent('createNew', e);
56
+ }
57
+ dragMoved(event) {
58
+ this._dragMove.next(event);
59
+ }
60
+ drop(event) {
61
+ this._removeNoDrops();
62
+ this._clearDragInfo();
63
+ const dragAction = this.dropActionTodo.action;
64
+ if (!dragAction) {
65
+ return;
66
+ }
67
+ if (dragAction === 'forbid') {
68
+ ReportTreeBaseComponent._showForbiddenMoveAlert();
69
+ return;
70
+ }
71
+ const draggedItemId = event.item.data;
72
+ const targetItemId = this.dropActionTodo.targetId;
73
+ const draggedItem = this._getNodeById(draggedItemId);
74
+ const targetItem = this._getNodeById(targetItemId);
75
+ const oldParentNodeId = draggedItem.parentNode?.Data?.Id || '$Root';
76
+ const newParentNodeId = targetItem.parentNode?.Data?.Id || '$Root';
77
+ const oldParentNode = draggedItem.parentNode;
78
+ let newParentNode = targetItem.parentNode;
79
+ if (oldParentNode && newParentNode) {
80
+ switch (dragAction) {
81
+ case 'before':
82
+ case 'after': {
83
+ let serverTarget = targetItem;
84
+ if (dragAction === 'after') {
85
+ const targetIndex = this.flatMoDataList.findIndex((c) => c.Data.Id === targetItem.Data.Id);
86
+ if (targetIndex === this.flatMoDataList.length - 1) {
87
+ serverTarget = null;
88
+ }
89
+ else {
90
+ const afterTarget = this.flatMoDataList[targetIndex + 1];
91
+ if (afterTarget.parentNode === targetItem.parentNode) {
92
+ serverTarget = afterTarget;
93
+ }
94
+ else {
95
+ serverTarget = null;
96
+ }
97
+ }
98
+ }
99
+ this._saveToServer(draggedItem.Data.Id, serverTarget, newParentNode);
100
+ this._changeDraggedItemsOrder(draggedItem, targetItem, newParentNode, oldParentNode, oldParentNodeId);
101
+ if (newParentNodeId !== '$Root') {
102
+ const i = this.flatMoDataList.indexOf(draggedItem) -
103
+ this.flatMoDataList.indexOf(targetItem.parentNode);
104
+ newParentNode?.children.splice(i, 0, draggedItem);
105
+ }
106
+ // send new moDataList To server:
107
+ // (draggedItem, draggedItem.parentNode, draggedItem.parentNode.children?.indexOf(draggedItem))
108
+ break;
109
+ }
110
+ case 'inside': {
111
+ newParentNode = targetItem;
112
+ this._saveToServer(draggedItem.Data.Id, null, newParentNode);
113
+ this._moveNodeInsideAnother(draggedItem, targetItem);
114
+ break;
115
+ }
116
+ }
117
+ this.setOneDepthLevel(newParentNode);
118
+ this.setOneDepthLevel(oldParentNode);
119
+ this._clearDragInfo(true);
120
+ }
121
+ }
122
+ _rebindRoot() {
123
+ this._rootSource.next(this._root);
124
+ }
125
+ _saveToServer(draggedId, target, parent) {
126
+ const targetId = target ? target.Data.Id : '0';
127
+ const parentId = parent.Data.Id === '$Root' ? '0' : parent.Data.Id;
128
+ BarsaApi.Bw.RunBlMethod('MoveTreeNode', draggedId, targetId, parentId);
129
+ }
130
+ confirmDialog(selectedNode) {
131
+ this.dialogRef.close(selectedNode);
132
+ }
133
+ dismissDialog() {
134
+ this.dialogRef.dismiss();
135
+ }
136
+ collapseAll() {
137
+ this.context.fireEvent('collapseAll');
138
+ }
139
+ openMoveToDialog(sourceNode, device, dialogTmp) {
140
+ const config = {
141
+ ...this.dialogConfig,
142
+ data: { context: this.context },
143
+ mobile: device === 'mobile',
144
+ minWidth: device === 'mobile' ? 'auto' : this.dialogConfig.minWidth,
145
+ minHeight: device === 'mobile' ? 'auto' : this.dialogConfig.minHeight
146
+ };
147
+ this.dialogRef = this._dialogService.open(dialogTmp, config);
148
+ this.dialogRef.afterClosed.subscribe((destinationNode) => {
149
+ if (!destinationNode) {
150
+ return;
151
+ }
152
+ const canMove = this._canMove(sourceNode, destinationNode);
153
+ if (canMove) {
154
+ this._moveNodeInsideAnother(sourceNode, destinationNode);
155
+ }
156
+ else {
157
+ ReportTreeBaseComponent._showForbiddenMoveAlert();
158
+ }
159
+ this._rootSource.next(this._root);
160
+ });
161
+ }
162
+ selectNodeInMoveDialog(ev) {
163
+ this.dialogSelectedNode = ev.node;
164
+ }
165
+ loadChildren(node) {
166
+ this.context.fireEvent('loadNodeChildren', node);
167
+ }
168
+ /* eslint-disable */
169
+ updateGridSetting() { }
170
+ _selectNode(node) {
171
+ this.context.selNode = node;
172
+ this._selectedNodeSource.next(node);
173
+ this.context.fireEvent('click');
174
+ this.context.fireEvent('selectionchange');
175
+ }
176
+ /* eslint-disable */
177
+ _deselectNode() {
178
+ this.context.selNode = null;
179
+ this._selectedNodeSource.next(null);
180
+ }
181
+ _raiseRowClick(index, mo) {
182
+ this.context.selNode = mo;
183
+ this.context?.fireEvent('dblclick', this.context, index, mo);
184
+ }
185
+ _resetDropActionTodo() {
186
+ this.dropActionTodo = { targetId: null, action: null };
187
+ }
188
+ _getAllItemsPerChildren(item, level, array, parentNode, autoOpenLevels) {
189
+ let newItem = item;
190
+ if (level > 0) {
191
+ item.parentNode = parentNode;
192
+ item.level = level;
193
+ item.isExpand = item.isExpand ?? autoOpenLevels > level;
194
+ item.visibility = item.parentNode.isExpand;
195
+ array.push(newItem);
196
+ }
197
+ else {
198
+ newItem = item;
199
+ newItem.isExpand = true;
200
+ }
201
+ if (item.children) {
202
+ item.children.forEach((child) => this.setOneDepthLevel(child));
203
+ return item.children.map((i) => this._getAllItemsPerChildren(i, level + 1, array, newItem, autoOpenLevels));
204
+ }
205
+ }
206
+ _changeDraggedItemsOrder(draggedItem, targetItem, newParentNode, oldParentNode, oldParentNodeId) {
207
+ this._removeDraggedItemFromMoDataList(draggedItem);
208
+ if (oldParentNodeId !== '$Root') {
209
+ // oldParentNode.children?.remove(draggedItem);
210
+ oldParentNode.children = oldParentNode.children.filter((c) => c.Data.Id !== draggedItem.Data.Id);
211
+ oldParentNode.leaf = !(oldParentNode.children?.length > 0);
212
+ oldParentNode.Data.$HasChildren = !oldParentNode.leaf;
213
+ }
214
+ draggedItem.parentNode = newParentNode;
215
+ this._setLevelForDraggedItems(draggedItem, newParentNode.level || 0);
216
+ const targetIndex = this.flatMoDataList.indexOf(targetItem);
217
+ const index = this.dropActionTodo.action === 'before' ? targetIndex : this._nextIndexInMoDataList(targetItem);
218
+ this._addDraggedItemsToMoDataList(draggedItem, index);
219
+ }
220
+ _addDraggedItemsToMoDataList(node, i) {
221
+ this.flatMoDataList.splice(i, 0, node);
222
+ node?.children?.forEach((child) => {
223
+ i++;
224
+ i = this._addDraggedItemsToMoDataList(child, i);
225
+ });
226
+ return i;
227
+ }
228
+ _removeDraggedItemFromMoDataList(node) {
229
+ node?.children?.forEach((child) => {
230
+ this._removeDraggedItemFromMoDataList(child);
231
+ });
232
+ this.flatMoDataList.remove(node);
233
+ }
234
+ _nextIndexInMoDataList(node) {
235
+ return this.flatMoDataList.indexOf(node) + this._allNestedChildesCount(node) + 1;
236
+ }
237
+ _allNestedChildesCount(node, i = 0) {
238
+ node.children?.forEach((child) => {
239
+ i++;
240
+ if (child.children?.length > 0) {
241
+ i = this._allNestedChildesCount(child, i);
242
+ }
243
+ });
244
+ return i;
245
+ }
246
+ _getNodeById(id) {
247
+ let node;
248
+ for (const mo of this.flatMoDataList) {
249
+ if (mo.Data.Id === id) {
250
+ node = mo;
251
+ }
252
+ }
253
+ return node;
254
+ }
255
+ _setLevelForDraggedItems(node, parentLevel) {
256
+ parentLevel++;
257
+ node.level = parentLevel;
258
+ node?.children?.forEach((child) => {
259
+ this._setLevelForDraggedItems(child, parentLevel);
260
+ });
261
+ }
262
+ _moveNodeInsideAnother(sourceNode, destinationNode) {
263
+ const oldParentNode = sourceNode.parentNode;
264
+ const oldParentNodeId = oldParentNode?.Data?.Id || '$Root';
265
+ this._changeDraggedItemsOrder(sourceNode, destinationNode, destinationNode, oldParentNode, oldParentNodeId);
266
+ this.context.fireEvent('moveNodeInsideAnother', sourceNode, destinationNode);
267
+ }
268
+ _clearDragInfo(dropped = false) {
269
+ if (dropped) {
270
+ this._resetDropActionTodo();
271
+ }
272
+ this.el.nativeElement
273
+ .querySelectorAll('.drop-before')
274
+ .forEach((element) => this._renderer.removeClass(element, 'drop-before'));
275
+ this.el.nativeElement
276
+ .querySelectorAll('.drop-after')
277
+ .forEach((element) => this._renderer.removeClass(element, 'drop-after'));
278
+ this.el.nativeElement
279
+ .querySelectorAll('.drop-inside')
280
+ .forEach((element) => this._renderer.removeClass(element, 'drop-inside'));
281
+ }
282
+ _stopDragging() {
283
+ this._clearDragInfo();
284
+ this._resetDropActionTodo();
285
+ }
286
+ _showDragInfo() {
287
+ this._clearDragInfo();
288
+ if (this.dropActionTodo.targetId) {
289
+ const parent = this._getNodeById(this.dropActionTodo.targetId);
290
+ const newParentId = parent?.parentNode?.Data?.Id || '$Root';
291
+ const targetNodeElement = this.el.nativeElement.querySelector('#node-' + this.dropActionTodo.targetId);
292
+ if (!targetNodeElement) {
293
+ this._resetDropActionTodo();
294
+ return;
295
+ }
296
+ else if (newParentId === '$Root' && this.dropActionTodo.action !== 'inside') {
297
+ const rootContainer = this.el.nativeElement.querySelector('fd-layout-panel');
298
+ this._renderer.addClass(rootContainer, 'drop-inside');
299
+ }
300
+ this._renderer.addClass(targetNodeElement, 'drop-' + this.dropActionTodo?.action);
301
+ }
302
+ }
303
+ _doDragMove(event) {
304
+ const elementFromPoint = document.elementFromPoint(event.pointerPosition.x, event.pointerPosition.y);
305
+ if (!elementFromPoint) {
306
+ this._stopDragging();
307
+ return;
308
+ }
309
+ const targetNodeElement = elementFromPoint.classList.contains('node-item')
310
+ ? elementFromPoint
311
+ : elementFromPoint.closest('.node-item');
312
+ if (!targetNodeElement) {
313
+ this._stopDragging();
314
+ return;
315
+ }
316
+ this.dropActionTodo = {
317
+ targetId: targetNodeElement.getAttribute('data-id')
318
+ };
319
+ const targetRect = targetNodeElement.getBoundingClientRect();
320
+ const oneThird = targetRect.height / 3;
321
+ if (event.pointerPosition.y - targetRect.top < oneThird) {
322
+ // before
323
+ this.dropActionTodo.action = 'before';
324
+ }
325
+ else if (event.pointerPosition.y - targetRect.top > 2 * oneThird) {
326
+ // after
327
+ this.dropActionTodo.action = 'after';
328
+ }
329
+ else {
330
+ // inside
331
+ this.dropActionTodo.action = 'inside';
332
+ }
333
+ this._setNoDropItems(event.source.data);
334
+ this._setNoDropStyle();
335
+ const targetNode = this._getNodeById(this.dropActionTodo.targetId);
336
+ if (targetNode.noDrop) {
337
+ this._stopDragging();
338
+ this.dropActionTodo.action = 'forbid';
339
+ return;
340
+ }
341
+ this._showDragInfo();
342
+ }
343
+ setOneDepthLevel(node) {
344
+ let hasOneDepth = true;
345
+ node.children?.forEach((child) => {
346
+ if (child.Data?.$HasChildren) {
347
+ hasOneDepth = false;
348
+ return;
349
+ }
350
+ });
351
+ node.hasOneDepthLevel = hasOneDepth;
352
+ }
353
+ _removeNoDrops() {
354
+ this.flatMoDataList
355
+ .filter((node) => node.noDrop)
356
+ .forEach((node) => {
357
+ node.noDrop = false;
358
+ const el = this.el.nativeElement.querySelector('#node-' + node.Data.Id);
359
+ if (el) {
360
+ this._renderer.removeClass(el, 'no-drop');
361
+ }
362
+ });
363
+ }
364
+ _setNoDropItems(draggedItemId) {
365
+ const node = this._getNodeById(draggedItemId);
366
+ node.noDrop = true;
367
+ node.children?.forEach((child) => {
368
+ this._setNoDropItems(child.Data.Id);
369
+ });
370
+ }
371
+ _setNoDropStyle() {
372
+ this.flatMoDataList
373
+ .filter((node) => node.noDrop)
374
+ .forEach((node) => {
375
+ const el = this.el.nativeElement.querySelector('#node-' + node.Data.Id);
376
+ if (el) {
377
+ this._renderer.addClass(el, 'no-drop');
378
+ }
379
+ });
380
+ }
381
+ _canMove(sourceNode, destinationNode) {
382
+ let canMove = true;
383
+ if (sourceNode.Data.Id === destinationNode.Data.Id) {
384
+ canMove = false;
385
+ }
386
+ else {
387
+ sourceNode.children?.foreach((child) => {
388
+ canMove = this._canMove(sourceNode, child);
389
+ });
390
+ }
391
+ return canMove;
392
+ }
393
+ /* eslint-disable */
394
+ static _showForbiddenMoveAlert() {
395
+ BarsaApi.Bw.Msg.Error('نمیتوانید آیتم را به زیرشاخه خودش منتقل کنید.');
396
+ }
397
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ReportTreeBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
398
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: ReportTreeBaseComponent, selector: "bsu-report-tree-base", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
399
+ }
400
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ReportTreeBaseComponent, decorators: [{
401
+ type: Component,
402
+ args: [{
403
+ selector: 'bsu-report-tree-base',
404
+ template: '',
405
+ changeDetection: ChangeDetectionStrategy.OnPush
406
+ }]
407
+ }] });
408
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXRyZWUtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3JlcG9ydC10cmVlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5RCxPQUFPLEVBQ0gsUUFBUSxFQUtYLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBUTFFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSx3QkFBaUQ7SUFMOUY7O1FBWUksY0FBUyxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFJckIsd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQXFCLElBQUksQ0FBQyxDQUFDO1FBQ3BFLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQXFCLElBQUksQ0FBQyxDQUFDO0tBcWJ6RTtJQXBiRyxJQUFZLEtBQUs7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUNELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUMvRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWixXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUNELGtCQUFrQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXO2FBQ1gsSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQzNCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1QsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxNQUFNLE1BQU0sR0FBMEIsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQ25ELElBQUksQ0FBQyxPQUFPLEVBQ1osaUNBQWlDLEVBQ2pDLENBQUMsQ0FDSixDQUFDO2dCQUNGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7Z0JBQ3BFLE9BQU8sTUFBTSxDQUFDO1lBQ2xCLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFDUCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUzthQUNULFlBQVksRUFBRTthQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNuRCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFdBQVcsQ0FBQyxDQUFtQjtRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNTLFNBQVMsQ0FBQyxLQUFLO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDUyxJQUFJLENBQUMsS0FBSztRQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDMUIsdUJBQXVCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNsRCxPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksT0FBTyxDQUFDO1FBQ3BFLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxPQUFPLENBQUM7UUFDbkUsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUM3QyxJQUFJLGFBQWEsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO1FBQzFDLElBQUksYUFBYSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2pDLFFBQVEsVUFBVSxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssUUFBUSxDQUFDO2dCQUNkLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDWCxJQUFJLFlBQVksR0FBdUIsVUFBVSxDQUFDO29CQUNsRCxJQUFJLFVBQVUsS0FBSyxPQUFPLEVBQUUsQ0FBQzt3QkFDekIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQzNGLElBQUksV0FBVyxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUNqRCxZQUFZLEdBQUcsSUFBSSxDQUFDO3dCQUN4QixDQUFDOzZCQUFNLENBQUM7NEJBQ0osTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7NEJBQ3pELElBQUksV0FBVyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7Z0NBQ25ELFlBQVksR0FBRyxXQUFXLENBQUM7NEJBQy9CLENBQUM7aUNBQU0sQ0FBQztnQ0FDSixZQUFZLEdBQUcsSUFBSSxDQUFDOzRCQUN4QixDQUFDO3dCQUNMLENBQUM7b0JBQ0wsQ0FBQztvQkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztvQkFDckUsSUFBSSxDQUFDLHdCQUF3QixDQUN6QixXQUFXLEVBQ1gsVUFBVSxFQUNWLGFBQWEsRUFDYixhQUFhLEVBQ2IsZUFBZSxDQUNsQixDQUFDO29CQUNGLElBQUksZUFBZSxLQUFLLE9BQU8sRUFBRSxDQUFDO3dCQUM5QixNQUFNLENBQUMsR0FDSCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7NEJBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDdkQsYUFBYSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDdEQsQ0FBQztvQkFFRCxpQ0FBaUM7b0JBQ2pDLCtGQUErRjtvQkFDL0YsTUFBTTtnQkFDVixDQUFDO2dCQUVELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDWixhQUFhLEdBQUcsVUFBVSxDQUFDO29CQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztvQkFDckQsTUFBTTtnQkFDVixDQUFDO1lBQ0wsQ0FBQztZQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQztJQUNTLFdBQVc7UUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFUyxhQUFhLENBQUMsU0FBaUIsRUFBRSxNQUEwQixFQUFFLE1BQW1CO1FBQ3RGLE1BQU0sUUFBUSxHQUFXLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN2RCxNQUFNLFFBQVEsR0FBVyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0UsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVTLGFBQWEsQ0FBQyxZQUFpQztRQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVMsYUFBYTtRQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFUyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsTUFBYyxFQUFFLFNBQVM7UUFDNUQsTUFBTSxNQUFNLEdBQWlCO1lBQ3pCLEdBQUcsSUFBSSxDQUFDLFlBQVk7WUFDcEIsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDL0IsTUFBTSxFQUFFLE1BQU0sS0FBSyxRQUFRO1lBQzNCLFFBQVEsRUFBRSxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUTtZQUNuRSxTQUFTLEVBQUUsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVM7U0FDeEUsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3JELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDbkIsT0FBTztZQUNYLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUMzRCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDN0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLHVCQUF1QixDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDdEQsQ0FBQztZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyxzQkFBc0IsQ0FBQyxFQUF3QztRQUNyRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUN0QyxDQUFDO0lBRVMsWUFBWSxDQUFDLElBQWlCO1FBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxvQkFBb0I7SUFDVixpQkFBaUIsS0FBVSxDQUFDO0lBRTVCLFdBQVcsQ0FBQyxJQUFpQjtRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxvQkFBb0I7SUFDVixhQUFhO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRU8sdUJBQXVCLENBQzNCLElBQWlCLEVBQ2pCLEtBQWEsRUFDYixLQUE0QixFQUM1QixVQUF1QixFQUN2QixjQUFzQjtRQUV0QixJQUFJLE9BQU8sR0FBUSxJQUFJLENBQUM7UUFDeEIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztZQUN4RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQzNDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2YsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDNUIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ2hILENBQUM7SUFDTCxDQUFDO0lBQ08sd0JBQXdCLENBQzVCLFdBQXdCLEVBQ3hCLFVBQXVCLEVBQ3ZCLGFBQTBCLEVBQzFCLGFBQTBCLEVBQzFCLGVBQWU7UUFFZixJQUFJLENBQUMsZ0NBQWdDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkQsSUFBSSxlQUFlLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDOUIsK0NBQStDO1lBQy9DLGFBQWEsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFakcsYUFBYSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0QsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQzFELENBQUM7UUFDRCxXQUFXLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztRQUN2QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyw0QkFBNEIsQ0FBQyxJQUFpQixFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzlCLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFTyxnQ0FBZ0MsQ0FBQyxJQUFpQjtRQUN0RCxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzlCLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxJQUFpQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVPLHNCQUFzQixDQUFDLElBQWlCLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM3QixDQUFDLEVBQUUsQ0FBQztZQUNKLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLENBQUMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVPLFlBQVksQ0FBQyxFQUFPO1FBQ3hCLElBQUksSUFBSSxDQUFDO1FBQ1QsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNkLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLHdCQUF3QixDQUFDLElBQUksRUFBRSxXQUFXO1FBQzlDLFdBQVcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7UUFDekIsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxlQUFlO1FBQ3RELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDNUMsTUFBTSxlQUFlLEdBQUcsYUFBYSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksT0FBTyxDQUFDO1FBQzNELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDNUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBTyxHQUFHLEtBQUs7UUFDbEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWE7YUFDaEIsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO2FBQ2hDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhO2FBQ2hCLGdCQUFnQixDQUFDLGFBQWEsQ0FBQzthQUMvQixPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYTthQUNoQixnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7YUFDaEMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLGFBQWE7UUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLE9BQU8sQ0FBQztZQUM1RCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2RyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzVCLE9BQU87WUFDWCxDQUFDO2lCQUFNLElBQUksV0FBVyxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDNUUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzdFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBSztRQUNyQixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0saUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDdEUsQ0FBQyxDQUFDLGdCQUFnQjtZQUNsQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDbEIsUUFBUSxFQUFFLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7U0FDdEQsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFdkMsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxHQUFHLFFBQVEsRUFBRSxDQUFDO1lBQ3RELFNBQVM7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDMUMsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDakUsUUFBUTtZQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNKLFNBQVM7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDdEMsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQUk7UUFDekIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDO2dCQUMzQixXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixPQUFPO1lBQ1gsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQztJQUN4QyxDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLENBQUMsY0FBYzthQUNkLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUM3QixPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN4RSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sZUFBZSxDQUFDLGFBQWE7UUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxjQUFjO2FBQ2QsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzdCLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hFLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxRQUFRLENBQUMsVUFBVSxFQUFFLGVBQWU7UUFDeEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqRCxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLENBQUM7YUFBTSxDQUFDO1lBQ0osVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDbkMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFDRCxvQkFBb0I7SUFDWixNQUFNLENBQUMsdUJBQXVCO1FBQ2xDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQzNFLENBQUM7OEdBaGNRLHVCQUF1QjtrR0FBdkIsdUJBQXVCLG1GQUh0QixFQUFFOzsyRkFHSCx1QkFBdUI7a0JBTG5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSwgRGlhbG9nQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBCYXJzYUFwaSxcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nLFxuICAgIFRyZWVOb2RlT2JqLFxuICAgIFJlbGF0aW9uSXRlbVR5cGVcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgU2FwVWlSZXBvcnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9zYXAtdWktcmVwb3J0LWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IERyb3BJbmZvIH0gZnJvbSAnLi91aS10cmVlLXZpZXcvdWktdHJlZS12aWV3LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LXJlcG9ydC10cmVlLWJhc2UnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRUcmVlQmFzZUNvbXBvbmVudCBleHRlbmRzIFNhcFVpUmVwb3J0QmFzZUNvbXBvbmVudDxVaVJlcG9ydFZpZXdCYXNlU2V0dGluZz4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGNvbnRlbnREZW5zaXR5JDogT2JzZXJ2YWJsZTxDb250ZW50RGVuc2l0eT47XG4gICAgcnRsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBkaWFsb2dTZWxlY3RlZE5vZGU7XG4gICAgc2VsZWN0ZWROb2RlJDogT2JzZXJ2YWJsZTxUcmVlTm9kZU9iaiB8IG51bGw+O1xuICAgIHJvb3QkOiBPYnNlcnZhYmxlPFRyZWVOb2RlT2JqIHwgbnVsbD47XG4gICAgZHJvcEFjdGlvblRvZG86IERyb3BJbmZvO1xuICAgIF9kcmFnTW92ZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBmbGF0TW9EYXRhTGlzdDtcbiAgICBkaWFsb2dSZWY7XG5cbiAgICBwcm90ZWN0ZWQgX3NlbGVjdGVkTm9kZVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJlZU5vZGVPYmogfCBudWxsPihudWxsKTtcbiAgICBwcm90ZWN0ZWQgX3Jvb3RTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyZWVOb2RlT2JqIHwgbnVsbD4obnVsbCk7XG4gICAgcHJpdmF0ZSBnZXQgX3Jvb3QoKTogVHJlZU5vZGVPYmogfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3RTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlJCA9IHRoaXMuX3NlbGVjdGVkTm9kZVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5yb290JCA9IHRoaXMuX3Jvb3RTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnJ0bCQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLnJ0bCQ7XG4gICAgICAgIHRoaXMuY29udGVudERlbnNpdHkkID0gdGhpcy5fY29udGVudERlbnNpdHlTZXJ2aWNlLmNvbnRlbnREZW5zaXR5O1xuICAgICAgICB0aGlzLl9yb290U291cmNlLm5leHQodGhpcy5jb250ZXh0LnJvb3QpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZE5vZGVTb3VyY2UubmV4dCh0aGlzLmNvbnRleHQuc2VsTm9kZSk7XG4gICAgICAgIHRoaXMuY29udGV4dC5vbih7XG4gICAgICAgICAgICByb290Q2hhbmdlZDogKHJvb3QpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yb290U291cmNlLm5leHQocm9vdCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0ZWROb2RlQ2hhbmdlOiAobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkTm9kZVNvdXJjZS5uZXh0KG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcm9vdFNvdXJjZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIG1hcCgocm9vdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocm9vdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9MaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG9PcGVuTGV2ZWxzID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTZXR0aW5nLlZpZXcuVHJlZUF1dG9PcGVuTGV2ZWxzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ2V0QWxsSXRlbXNQZXJDaGlsZHJlbihyb290LCAwLCBtb0xpc3QsIHJvb3QsIGF1dG9PcGVuTGV2ZWxzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb0xpc3Q7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChmbGF0TW9EYXRhTGlzdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdE1vRGF0YUxpc3QgPSBmbGF0TW9EYXRhTGlzdDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9yZXNldERyb3BBY3Rpb25Ub2RvKCk7XG4gICAgICAgIHRoaXMuX2RyYWdNb3ZlXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDUwKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZG9EcmFnTW92ZShldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNyZWF0ZU5ldyhlOiBSZWxhdGlvbkl0ZW1UeXBlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ2NyZWF0ZU5ldycsIGUpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZHJhZ01vdmVkKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RyYWdNb3ZlLm5leHQoZXZlbnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZHJvcChldmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVOb0Ryb3BzKCk7XG4gICAgICAgIHRoaXMuX2NsZWFyRHJhZ0luZm8oKTtcbiAgICAgICAgY29uc3QgZHJhZ0FjdGlvbiA9IHRoaXMuZHJvcEFjdGlvblRvZG8uYWN0aW9uO1xuICAgICAgICBpZiAoIWRyYWdBY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZHJhZ0FjdGlvbiA9PT0gJ2ZvcmJpZCcpIHtcbiAgICAgICAgICAgIFJlcG9ydFRyZWVCYXNlQ29tcG9uZW50Ll9zaG93Rm9yYmlkZGVuTW92ZUFsZXJ0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZHJhZ2dlZEl0ZW1JZCA9IGV2ZW50Lml0ZW0uZGF0YTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SXRlbUlkID0gdGhpcy5kcm9wQWN0aW9uVG9kby50YXJnZXRJZDtcbiAgICAgICAgY29uc3QgZHJhZ2dlZEl0ZW0gPSB0aGlzLl9nZXROb2RlQnlJZChkcmFnZ2VkSXRlbUlkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SXRlbSA9IHRoaXMuX2dldE5vZGVCeUlkKHRhcmdldEl0ZW1JZCk7XG4gICAgICAgIGNvbnN0IG9sZFBhcmVudE5vZGVJZCA9IGRyYWdnZWRJdGVtLnBhcmVudE5vZGU/LkRhdGE/LklkIHx8ICckUm9vdCc7XG4gICAgICAgIGNvbnN0IG5ld1BhcmVudE5vZGVJZCA9IHRhcmdldEl0ZW0ucGFyZW50Tm9kZT8uRGF0YT8uSWQgfHwgJyRSb290JztcbiAgICAgICAgY29uc3Qgb2xkUGFyZW50Tm9kZSA9IGRyYWdnZWRJdGVtLnBhcmVudE5vZGU7XG4gICAgICAgIGxldCBuZXdQYXJlbnROb2RlID0gdGFyZ2V0SXRlbS5wYXJlbnROb2RlO1xuICAgICAgICBpZiAob2xkUGFyZW50Tm9kZSAmJiBuZXdQYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGRyYWdBY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdiZWZvcmUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2FmdGVyJzoge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2VydmVyVGFyZ2V0OiBUcmVlTm9kZU9iaiB8IG51bGwgPSB0YXJnZXRJdGVtO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZHJhZ0FjdGlvbiA9PT0gJ2FmdGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSB0aGlzLmZsYXRNb0RhdGFMaXN0LmZpbmRJbmRleCgoYykgPT4gYy5EYXRhLklkID09PSB0YXJnZXRJdGVtLkRhdGEuSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldEluZGV4ID09PSB0aGlzLmZsYXRNb0RhdGFMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJUYXJnZXQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZnRlclRhcmdldCA9IHRoaXMuZmxhdE1vRGF0YUxpc3RbdGFyZ2V0SW5kZXggKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWZ0ZXJUYXJnZXQucGFyZW50Tm9kZSA9PT0gdGFyZ2V0SXRlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclRhcmdldCA9IGFmdGVyVGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclRhcmdldCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVUb1NlcnZlcihkcmFnZ2VkSXRlbS5EYXRhLklkLCBzZXJ2ZXJUYXJnZXQsIG5ld1BhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEcmFnZ2VkSXRlbXNPcmRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnZWRJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BhcmVudE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbGRQYXJlbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2xkUGFyZW50Tm9kZUlkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdQYXJlbnROb2RlSWQgIT09ICckUm9vdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmxhdE1vRGF0YUxpc3QuaW5kZXhPZihkcmFnZ2VkSXRlbSkgLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmxhdE1vRGF0YUxpc3QuaW5kZXhPZih0YXJnZXRJdGVtLnBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFyZW50Tm9kZT8uY2hpbGRyZW4uc3BsaWNlKGksIDAsIGRyYWdnZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIHNlbmQgbmV3IG1vRGF0YUxpc3QgVG8gc2VydmVyOlxuICAgICAgICAgICAgICAgICAgICAvLyAoZHJhZ2dlZEl0ZW0sIGRyYWdnZWRJdGVtLnBhcmVudE5vZGUsIGRyYWdnZWRJdGVtLnBhcmVudE5vZGUuY2hpbGRyZW4/LmluZGV4T2YoZHJhZ2dlZEl0ZW0pKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdpbnNpZGUnOiB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1BhcmVudE5vZGUgPSB0YXJnZXRJdGVtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlVG9TZXJ2ZXIoZHJhZ2dlZEl0ZW0uRGF0YS5JZCwgbnVsbCwgbmV3UGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vdmVOb2RlSW5zaWRlQW5vdGhlcihkcmFnZ2VkSXRlbSwgdGFyZ2V0SXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0T25lRGVwdGhMZXZlbChuZXdQYXJlbnROb2RlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0T25lRGVwdGhMZXZlbChvbGRQYXJlbnROb2RlKTtcbiAgICAgICAgICAgIHRoaXMuX2NsZWFyRHJhZ0luZm8odHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9yZWJpbmRSb290KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yb290U291cmNlLm5leHQodGhpcy5fcm9vdCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9zYXZlVG9TZXJ2ZXIoZHJhZ2dlZElkOiBzdHJpbmcsIHRhcmdldDogVHJlZU5vZGVPYmogfCBudWxsLCBwYXJlbnQ6IFRyZWVOb2RlT2JqKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhcmdldElkOiBzdHJpbmcgPSB0YXJnZXQgPyB0YXJnZXQuRGF0YS5JZCA6ICcwJztcbiAgICAgICAgY29uc3QgcGFyZW50SWQ6IHN0cmluZyA9IHBhcmVudC5EYXRhLklkID09PSAnJFJvb3QnID8gJzAnIDogcGFyZW50LkRhdGEuSWQ7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kKCdNb3ZlVHJlZU5vZGUnLCBkcmFnZ2VkSWQsIHRhcmdldElkLCBwYXJlbnRJZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbmZpcm1EaWFsb2coc2VsZWN0ZWROb2RlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHNlbGVjdGVkTm9kZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRpc21pc3NEaWFsb2coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmRpc21pc3MoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29sbGFwc2VBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ2NvbGxhcHNlQWxsJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9wZW5Nb3ZlVG9EaWFsb2coc291cmNlTm9kZSwgZGV2aWNlOiBzdHJpbmcsIGRpYWxvZ1RtcCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb25maWc6IERpYWxvZ0NvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGlhbG9nQ29uZmlnLFxuICAgICAgICAgICAgZGF0YTogeyBjb250ZXh0OiB0aGlzLmNvbnRleHQgfSxcbiAgICAgICAgICAgIG1vYmlsZTogZGV2aWNlID09PSAnbW9iaWxlJyxcbiAgICAgICAgICAgIG1pbldpZHRoOiBkZXZpY2UgPT09ICdtb2JpbGUnID8gJ2F1dG8nIDogdGhpcy5kaWFsb2dDb25maWcubWluV2lkdGgsXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IGRldmljZSA9PT0gJ21vYmlsZScgPyAnYXV0bycgOiB0aGlzLmRpYWxvZ0NvbmZpZy5taW5IZWlnaHRcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW4oZGlhbG9nVG1wLCBjb25maWcpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZC5zdWJzY3JpYmUoKGRlc3RpbmF0aW9uTm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbk5vZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjYW5Nb3ZlID0gdGhpcy5fY2FuTW92ZShzb3VyY2VOb2RlLCBkZXN0aW5hdGlvbk5vZGUpO1xuICAgICAgICAgICAgaWYgKGNhbk1vdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlTm9kZUluc2lkZUFub3RoZXIoc291cmNlTm9kZSwgZGVzdGluYXRpb25Ob2RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgUmVwb3J0VHJlZUJhc2VDb21wb25lbnQuX3Nob3dGb3JiaWRkZW5Nb3ZlQWxlcnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3Jvb3RTb3VyY2UubmV4dCh0aGlzLl9yb290KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNlbGVjdE5vZGVJbk1vdmVEaWFsb2coZXY6IHsgbm9kZTogVHJlZU5vZGVPYmo7IGluZGV4OiBudW1iZXIgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlbGVjdGVkTm9kZSA9IGV2Lm5vZGU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRDaGlsZHJlbihub2RlOiBUcmVlTm9kZU9iaik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdsb2FkTm9kZUNoaWxkcmVuJywgbm9kZSk7XG4gICAgfVxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUdyaWRTZXR0aW5nKCk6IHZvaWQge31cblxuICAgIHByb3RlY3RlZCBfc2VsZWN0Tm9kZShub2RlOiBUcmVlTm9kZU9iaik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQuc2VsTm9kZSA9IG5vZGU7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkTm9kZVNvdXJjZS5uZXh0KG5vZGUpO1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdjbGljaycpO1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdzZWxlY3Rpb25jaGFuZ2UnKTtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIHByb3RlY3RlZCBfZGVzZWxlY3ROb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQuc2VsTm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkTm9kZVNvdXJjZS5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmFpc2VSb3dDbGljayhpbmRleCwgbW8pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNlbE5vZGUgPSBtbztcbiAgICAgICAgdGhpcy5jb250ZXh0Py5maXJlRXZlbnQoJ2RibGNsaWNrJywgdGhpcy5jb250ZXh0LCBpbmRleCwgbW8pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc2V0RHJvcEFjdGlvblRvZG8oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZHJvcEFjdGlvblRvZG8gPSB7IHRhcmdldElkOiBudWxsLCBhY3Rpb246IG51bGwgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRBbGxJdGVtc1BlckNoaWxkcmVuKFxuICAgICAgICBpdGVtOiBUcmVlTm9kZU9iaixcbiAgICAgICAgbGV2ZWw6IG51bWJlcixcbiAgICAgICAgYXJyYXk6IE1ldGFvYmplY3REYXRhTW9kZWxbXSxcbiAgICAgICAgcGFyZW50Tm9kZTogVHJlZU5vZGVPYmosXG4gICAgICAgIGF1dG9PcGVuTGV2ZWxzOiBudW1iZXJcbiAgICApOiBhbnkge1xuICAgICAgICBsZXQgbmV3SXRlbTogYW55ID0gaXRlbTtcbiAgICAgICAgaWYgKGxldmVsID4gMCkge1xuICAgICAgICAgICAgaXRlbS5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgIGl0ZW0ubGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgICAgIGl0ZW0uaXNFeHBhbmQgPSBpdGVtLmlzRXhwYW5kID8/IGF1dG9PcGVuTGV2ZWxzID4gbGV2ZWw7XG4gICAgICAgICAgICBpdGVtLnZpc2liaWxpdHkgPSBpdGVtLnBhcmVudE5vZGUuaXNFeHBhbmQ7XG4gICAgICAgICAgICBhcnJheS5wdXNoKG5ld0l0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3SXRlbSA9IGl0ZW07XG4gICAgICAgICAgICBuZXdJdGVtLmlzRXhwYW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB0aGlzLnNldE9uZURlcHRoTGV2ZWwoY2hpbGQpKTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLmNoaWxkcmVuLm1hcCgoaSkgPT4gdGhpcy5fZ2V0QWxsSXRlbXNQZXJDaGlsZHJlbihpLCBsZXZlbCArIDEsIGFycmF5LCBuZXdJdGVtLCBhdXRvT3BlbkxldmVscykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX2NoYW5nZURyYWdnZWRJdGVtc09yZGVyKFxuICAgICAgICBkcmFnZ2VkSXRlbTogVHJlZU5vZGVPYmosXG4gICAgICAgIHRhcmdldEl0ZW06IFRyZWVOb2RlT2JqLFxuICAgICAgICBuZXdQYXJlbnROb2RlOiBUcmVlTm9kZU9iaixcbiAgICAgICAgb2xkUGFyZW50Tm9kZTogVHJlZU5vZGVPYmosXG4gICAgICAgIG9sZFBhcmVudE5vZGVJZFxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVEcmFnZ2VkSXRlbUZyb21Nb0RhdGFMaXN0KGRyYWdnZWRJdGVtKTtcbiAgICAgICAgaWYgKG9sZFBhcmVudE5vZGVJZCAhPT0gJyRSb290Jykge1xuICAgICAgICAgICAgLy8gb2xkUGFyZW50Tm9kZS5jaGlsZHJlbj8ucmVtb3ZlKGRyYWdnZWRJdGVtKTtcbiAgICAgICAgICAgIG9sZFBhcmVudE5vZGUuY2hpbGRyZW4gPSBvbGRQYXJlbnROb2RlLmNoaWxkcmVuLmZpbHRlcigoYykgPT4gYy5EYXRhLklkICE9PSBkcmFnZ2VkSXRlbS5EYXRhLklkKTtcblxuICAgICAgICAgICAgb2xkUGFyZW50Tm9kZS5sZWFmID0gIShvbGRQYXJlbnROb2RlLmNoaWxkcmVuPy5sZW5ndGggPiAwKTtcbiAgICAgICAgICAgIG9sZFBhcmVudE5vZGUuRGF0YS4kSGFzQ2hpbGRyZW4gPSAhb2xkUGFyZW50Tm9kZS5sZWFmO1xuICAgICAgICB9XG4gICAgICAgIGRyYWdnZWRJdGVtLnBhcmVudE5vZGUgPSBuZXdQYXJlbnROb2RlO1xuICAgICAgICB0aGlzLl9zZXRMZXZlbEZvckRyYWdnZWRJdGVtcyhkcmFnZ2VkSXRlbSwgbmV3UGFyZW50Tm9kZS5sZXZlbCB8fCAwKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSB0aGlzLmZsYXRNb0RhdGFMaXN0LmluZGV4T2YodGFyZ2V0SXRlbSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kcm9wQWN0aW9uVG9kby5hY3Rpb24gPT09ICdiZWZvcmUnID8gdGFyZ2V0SW5kZXggOiB0aGlzLl9uZXh0SW5kZXhJbk1vRGF0YUxpc3QodGFyZ2V0SXRlbSk7XG4gICAgICAgIHRoaXMuX2FkZERyYWdnZWRJdGVtc1RvTW9EYXRhTGlzdChkcmFnZ2VkSXRlbSwgaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FkZERyYWdnZWRJdGVtc1RvTW9EYXRhTGlzdChub2RlOiBUcmVlTm9kZU9iaiwgaSk6IG51bWJlciB7XG4gICAgICAgIHRoaXMuZmxhdE1vRGF0YUxpc3Quc3BsaWNlKGksIDAsIG5vZGUpO1xuICAgICAgICBub2RlPy5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIGkgPSB0aGlzLl9hZGREcmFnZ2VkSXRlbXNUb01vRGF0YUxpc3QoY2hpbGQsIGkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVtb3ZlRHJhZ2dlZEl0ZW1Gcm9tTW9EYXRhTGlzdChub2RlOiBUcmVlTm9kZU9iaik6IHZvaWQge1xuICAgICAgICBub2RlPy5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZURyYWdnZWRJdGVtRnJvbU1vRGF0YUxpc3QoY2hpbGQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mbGF0TW9EYXRhTGlzdC5yZW1vdmUobm9kZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbmV4dEluZGV4SW5Nb0RhdGFMaXN0KG5vZGU6IFRyZWVOb2RlT2JqKTogQXJyYXk8TWV0YW9iamVjdERhdGFNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mbGF0TW9EYXRhTGlzdC5pbmRleE9mKG5vZGUpICsgdGhpcy5fYWxsTmVzdGVkQ2hpbGRlc0NvdW50KG5vZGUpICsgMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hbGxOZXN0ZWRDaGlsZGVzQ291bnQobm9kZTogVHJlZU5vZGVPYmosIGkgPSAwKTogbnVtYmVyIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIGlmIChjaGlsZC5jaGlsZHJlbj8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGkgPSB0aGlzLl9hbGxOZXN0ZWRDaGlsZGVzQ291bnQoY2hpbGQsIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Tm9kZUJ5SWQoaWQ6IGFueSk6IFRyZWVOb2RlT2JqIHtcbiAgICAgICAgbGV0IG5vZGU7XG4gICAgICAgIGZvciAoY29uc3QgbW8gb2YgdGhpcy5mbGF0TW9EYXRhTGlzdCkge1xuICAgICAgICAgICAgaWYgKG1vLkRhdGEuSWQgPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IG1vO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldExldmVsRm9yRHJhZ2dlZEl0ZW1zKG5vZGUsIHBhcmVudExldmVsKTogdm9pZCB7XG4gICAgICAgIHBhcmVudExldmVsKys7XG4gICAgICAgIG5vZGUubGV2ZWwgPSBwYXJlbnRMZXZlbDtcbiAgICAgICAgbm9kZT8uY2hpbGRyZW4/LmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zZXRMZXZlbEZvckRyYWdnZWRJdGVtcyhjaGlsZCwgcGFyZW50TGV2ZWwpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9tb3ZlTm9kZUluc2lkZUFub3RoZXIoc291cmNlTm9kZSwgZGVzdGluYXRpb25Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9sZFBhcmVudE5vZGUgPSBzb3VyY2VOb2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGNvbnN0IG9sZFBhcmVudE5vZGVJZCA9IG9sZFBhcmVudE5vZGU/LkRhdGE/LklkIHx8ICckUm9vdCc7XG4gICAgICAgIHRoaXMuX2NoYW5nZURyYWdnZWRJdGVtc09yZGVyKHNvdXJjZU5vZGUsIGRlc3RpbmF0aW9uTm9kZSwgZGVzdGluYXRpb25Ob2RlLCBvbGRQYXJlbnROb2RlLCBvbGRQYXJlbnROb2RlSWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdtb3ZlTm9kZUluc2lkZUFub3RoZXInLCBzb3VyY2VOb2RlLCBkZXN0aW5hdGlvbk5vZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NsZWFyRHJhZ0luZm8oZHJvcHBlZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmIChkcm9wcGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNldERyb3BBY3Rpb25Ub2RvKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmRyb3AtYmVmb3JlJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChlbGVtZW50KSA9PiB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCAnZHJvcC1iZWZvcmUnKSk7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wLWFmdGVyJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChlbGVtZW50KSA9PiB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCAnZHJvcC1hZnRlcicpKTtcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmRyb3AtaW5zaWRlJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChlbGVtZW50KSA9PiB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCAnZHJvcC1pbnNpZGUnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3RvcERyYWdnaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jbGVhckRyYWdJbmZvKCk7XG4gICAgICAgIHRoaXMuX3Jlc2V0RHJvcEFjdGlvblRvZG8oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zaG93RHJhZ0luZm8oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NsZWFyRHJhZ0luZm8oKTtcbiAgICAgICAgaWYgKHRoaXMuZHJvcEFjdGlvblRvZG8udGFyZ2V0SWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX2dldE5vZGVCeUlkKHRoaXMuZHJvcEFjdGlvblRvZG8udGFyZ2V0SWQpO1xuICAgICAgICAgICAgY29uc3QgbmV3UGFyZW50SWQgPSBwYXJlbnQ/LnBhcmVudE5vZGU/LkRhdGE/LklkIHx8ICckUm9vdCc7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXROb2RlRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjbm9kZS0nICsgdGhpcy5kcm9wQWN0aW9uVG9kby50YXJnZXRJZCk7XG4gICAgICAgICAgICBpZiAoIXRhcmdldE5vZGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXREcm9wQWN0aW9uVG9kbygpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3UGFyZW50SWQgPT09ICckUm9vdCcgJiYgdGhpcy5kcm9wQWN0aW9uVG9kby5hY3Rpb24gIT09ICdpbnNpZGUnKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm9vdENvbnRhaW5lciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdmZC1sYXlvdXQtcGFuZWwnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyhyb290Q29udGFpbmVyLCAnZHJvcC1pbnNpZGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRhcmdldE5vZGVFbGVtZW50LCAnZHJvcC0nICsgdGhpcy5kcm9wQWN0aW9uVG9kbz8uYWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2RvRHJhZ01vdmUoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudEZyb21Qb2ludCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQucG9pbnRlclBvc2l0aW9uLngsIGV2ZW50LnBvaW50ZXJQb3NpdGlvbi55KTtcblxuICAgICAgICBpZiAoIWVsZW1lbnRGcm9tUG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0b3BEcmFnZ2luZygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGVFbGVtZW50ID0gZWxlbWVudEZyb21Qb2ludC5jbGFzc0xpc3QuY29udGFpbnMoJ25vZGUtaXRlbScpXG4gICAgICAgICAgICA/IGVsZW1lbnRGcm9tUG9pbnRcbiAgICAgICAgICAgIDogZWxlbWVudEZyb21Qb2ludC5jbG9zZXN0KCcubm9kZS1pdGVtJyk7XG4gICAgICAgIGlmICghdGFyZ2V0Tm9kZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0b3BEcmFnZ2luZygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZHJvcEFjdGlvblRvZG8gPSB7XG4gICAgICAgICAgICB0YXJnZXRJZDogdGFyZ2V0Tm9kZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWlkJylcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UmVjdCA9IHRhcmdldE5vZGVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBvbmVUaGlyZCA9IHRhcmdldFJlY3QuaGVpZ2h0IC8gMztcblxuICAgICAgICBpZiAoZXZlbnQucG9pbnRlclBvc2l0aW9uLnkgLSB0YXJnZXRSZWN0LnRvcCA8IG9uZVRoaXJkKSB7XG4gICAgICAgICAgICAvLyBiZWZvcmVcbiAgICAgICAgICAgIHRoaXMuZHJvcEFjdGlvblRvZG8uYWN0aW9uID0gJ2JlZm9yZSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQucG9pbnRlclBvc2l0aW9uLnkgLSB0YXJnZXRSZWN0LnRvcCA+IDIgKiBvbmVUaGlyZCkge1xuICAgICAgICAgICAgLy8gYWZ0ZXJcbiAgICAgICAgICAgIHRoaXMuZHJvcEFjdGlvblRvZG8uYWN0aW9uID0gJ2FmdGVyJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGluc2lkZVxuICAgICAgICAgICAgdGhpcy5kcm9wQWN0aW9uVG9kby5hY3Rpb24gPSAnaW5zaWRlJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXROb0Ryb3BJdGVtcyhldmVudC5zb3VyY2UuZGF0YSk7XG4gICAgICAgIHRoaXMuX3NldE5vRHJvcFN0eWxlKCk7XG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSB0aGlzLl9nZXROb2RlQnlJZCh0aGlzLmRyb3BBY3Rpb25Ub2RvLnRhcmdldElkKTtcbiAgICAgICAgaWYgKHRhcmdldE5vZGUubm9Ecm9wKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9wRHJhZ2dpbmcoKTtcbiAgICAgICAgICAgIHRoaXMuZHJvcEFjdGlvblRvZG8uYWN0aW9uID0gJ2ZvcmJpZCc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2hvd0RyYWdJbmZvKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRPbmVEZXB0aExldmVsKG5vZGUpOiB2b2lkIHtcbiAgICAgICAgbGV0IGhhc09uZURlcHRoID0gdHJ1ZTtcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChjaGlsZC5EYXRhPy4kSGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBoYXNPbmVEZXB0aCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG5vZGUuaGFzT25lRGVwdGhMZXZlbCA9IGhhc09uZURlcHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlbW92ZU5vRHJvcHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmxhdE1vRGF0YUxpc3RcbiAgICAgICAgICAgIC5maWx0ZXIoKG5vZGUpID0+IG5vZGUubm9Ecm9wKVxuICAgICAgICAgICAgLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBub2RlLm5vRHJvcCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyNub2RlLScgKyBub2RlLkRhdGEuSWQpO1xuICAgICAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyhlbCwgJ25vLWRyb3AnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXROb0Ryb3BJdGVtcyhkcmFnZ2VkSXRlbUlkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLl9nZXROb2RlQnlJZChkcmFnZ2VkSXRlbUlkKTtcbiAgICAgICAgbm9kZS5ub0Ryb3AgPSB0cnVlO1xuICAgICAgICBub2RlLmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc2V0Tm9Ecm9wSXRlbXMoY2hpbGQuRGF0YS5JZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldE5vRHJvcFN0eWxlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZsYXRNb0RhdGFMaXN0XG4gICAgICAgICAgICAuZmlsdGVyKChub2RlKSA9PiBub2RlLm5vRHJvcClcbiAgICAgICAgICAgIC5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI25vZGUtJyArIG5vZGUuRGF0YS5JZCk7XG4gICAgICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKGVsLCAnbm8tZHJvcCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Nhbk1vdmUoc291cmNlTm9kZSwgZGVzdGluYXRpb25Ob2RlKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBjYW5Nb3ZlID0gdHJ1ZTtcbiAgICAgICAgaWYgKHNvdXJjZU5vZGUuRGF0YS5JZCA9PT0gZGVzdGluYXRpb25Ob2RlLkRhdGEuSWQpIHtcbiAgICAgICAgICAgIGNhbk1vdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNvdXJjZU5vZGUuY2hpbGRyZW4/LmZvcmVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgY2FuTW92ZSA9IHRoaXMuX2Nhbk1vdmUoc291cmNlTm9kZSwgY2hpbGQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbk1vdmU7XG4gICAgfVxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3Nob3dGb3JiaWRkZW5Nb3ZlQWxlcnQoKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3Lk1zZy5FcnJvcign2YbZhduM2KrZiNin2YbbjNivINii24zYqtmFINix2Kcg2KjZhyDYstuM2LHYtNin2K7ZhyDYrtmI2K/YtCDZhdmG2KrZgtmEINqp2YbbjNivLicpO1xuICAgIH1cbn1cbiJdfQ==