ngx-bimplus-components 0.0.149-28792-3 → 0.0.150

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 (174) hide show
  1. package/assets/languages/strings_cs.json +72 -24
  2. package/assets/languages/strings_de.json +15 -4
  3. package/assets/languages/strings_en.json +5 -5
  4. package/assets/languages/strings_es.json +54 -6
  5. package/assets/languages/strings_fr.json +50 -6
  6. package/assets/languages/strings_it.json +50 -2
  7. package/assets/languages/strings_nl.json +796 -796
  8. package/assets/languages/strings_ro.json +55 -7
  9. package/assets/languages/strings_ru.json +93 -45
  10. package/assets/languages/strings_tr.json +50 -2
  11. package/assets/languages/strings_us.json +44 -8
  12. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +7 -20
  13. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +2 -5
  14. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +7 -7
  15. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.interface.mjs +1 -1
  16. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.service.mjs +4 -4
  17. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +5 -5
  18. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.interface.mjs +1 -1
  19. package/esm2022/lib/components/bimplus-contact/bimplus-contact.component.mjs +5 -5
  20. package/esm2022/lib/components/bimplus-context-menu/bimplus-context-menu.component.mjs +3 -3
  21. package/esm2022/lib/components/bimplus-context-menu/bimplus-context-menu.interface.mjs +1 -1
  22. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +5 -5
  23. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.mjs +1 -1
  24. package/esm2022/lib/components/bimplus-floating-bar/bimplus-floating-bar.component.mjs +5 -5
  25. package/esm2022/lib/components/bimplus-floating-bar/bimplus-floating-bar.interface.mjs +1 -1
  26. package/esm2022/lib/components/bimplus-floating-bar-body/bimplus-floating-bar-body.component.mjs +5 -5
  27. package/esm2022/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.mjs +5 -5
  28. package/esm2022/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.mjs +3 -3
  29. package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +4 -4
  30. package/esm2022/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.mjs +3 -3
  31. package/esm2022/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.mjs +4 -4
  32. package/esm2022/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.mjs +3 -3
  33. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.mjs +4 -4
  34. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service.mjs +3 -3
  35. package/esm2022/lib/components/bimplus-language-menu/bimplus-language-menu.component.mjs +3 -3
  36. package/esm2022/lib/components/bimplus-localized-widget/bimplus-localized-widget.component.mjs +3 -3
  37. package/esm2022/lib/components/bimplus-main-menu/bimplus-main-menu.component.mjs +3 -3
  38. package/esm2022/lib/components/bimplus-navbar/bimplus-navbar.component.mjs +3 -3
  39. package/esm2022/lib/components/bimplus-notify/bimplus-notify.component.mjs +5 -5
  40. package/esm2022/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.mjs +5 -5
  41. package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +6 -5
  42. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +5 -5
  43. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.mjs +1 -1
  44. package/esm2022/lib/components/bimplus-object-navigator/filter-criterium/filter-criterium.component.mjs +3 -3
  45. package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +5 -5
  46. package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.component.mjs +5 -5
  47. package/esm2022/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.mjs +3 -3
  48. package/esm2022/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.mjs +7 -10
  49. package/esm2022/lib/components/bimplus-panel-toolbar/bimplus-panel-toolbar.component.mjs +5 -5
  50. package/esm2022/lib/components/bimplus-project-menu/bimplus-project-menu.component.mjs +3 -3
  51. package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +5 -5
  52. package/esm2022/lib/components/bimplus-sidenav/bimplus-sidenav.component.mjs +3 -3
  53. package/esm2022/lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component.mjs +3 -3
  54. package/esm2022/lib/components/bimplus-storage-info/bimplus-storage-info.component.mjs +3 -3
  55. package/esm2022/lib/components/bimplus-text-message/bimplus-text-message.component.mjs +3 -3
  56. package/esm2022/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.mjs +3 -3
  57. package/esm2022/lib/components/bimplus-tool-hub/svgGenerator.mjs +1 -1
  58. package/esm2022/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.mjs +3 -3
  59. package/esm2022/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.mjs +3 -3
  60. package/esm2022/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component.mjs +5 -5
  61. package/esm2022/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.interface.mjs +1 -1
  62. package/esm2022/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.mjs +5 -5
  63. package/esm2022/lib/components/bimplus-user-menu/bimplus-user-menu.component.mjs +3 -3
  64. package/esm2022/lib/components/bimplus-zoom/bimplus-zoom.component.mjs +5 -5
  65. package/esm2022/lib/components/expansion-panel/expansion-panel.component.mjs +3 -3
  66. package/esm2022/lib/components/expansion-panel-header/expansion-panel-header.component.mjs +3 -3
  67. package/esm2022/lib/components/expansion-panel-header-actions/expansion-panel-header-actions.component.mjs +3 -3
  68. package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +3 -3
  69. package/esm2022/lib/components/object-properties-header/object-properties-header.component.mjs +6 -21
  70. package/esm2022/lib/components/object-properties-header/object-properties-header.interface.mjs +1 -1
  71. package/esm2022/lib/components/project-models/project-models.component.mjs +3 -3
  72. package/esm2022/lib/components/project-models/project-models.interface.mjs +1 -1
  73. package/esm2022/lib/components/resizable-panel/resizable-panel.component.mjs +5 -5
  74. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +4 -4
  75. package/esm2022/lib/directives/component-draggable/componentsDraggable.directive.mjs +3 -3
  76. package/esm2022/lib/directives/draggable.directive.mjs +3 -3
  77. package/esm2022/lib/directives/resizable.directive.mjs +4 -4
  78. package/esm2022/lib/directives/x-draggable.directive.mjs +3 -3
  79. package/esm2022/lib/interfaces/bimplus-opacity-properties.interface.mjs +1 -1
  80. package/esm2022/lib/interfaces/bimplus-visibility-properties.interface.mjs +1 -1
  81. package/esm2022/lib/ngx-bimplus-components.component.mjs +3 -3
  82. package/esm2022/lib/ngx-bimplus-components.service.mjs +3 -3
  83. package/esm2022/lib/pipes/pxsuffix.pipe.mjs +3 -3
  84. package/esm2022/lib/services/cursors.service.mjs +3 -3
  85. package/esm2022/lib/services/language-strings.service.mjs +3 -3
  86. package/esm2022/lib/services/layout-manager.service.mjs +3 -3
  87. package/esm2022/lib/services/local-storage.service.mjs +4 -4
  88. package/esm2022/lib/services/resize-observer.service.mjs +4 -4
  89. package/esm2022/lib/types/types.mjs +1 -1
  90. package/esm2022/lib/utils/filterString.mjs +1 -1
  91. package/esm2022/lib/utils/filterStructureFetcher.mjs +1 -1
  92. package/esm2022/lib/utils/utils.mjs +1 -1
  93. package/esm2022/public-api.mjs +1 -17
  94. package/fesm2022/ngx-bimplus-components.mjs +248 -2315
  95. package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
  96. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.d.ts +3 -9
  97. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.d.ts +0 -5
  98. package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +1 -1
  99. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.d.ts +7 -7
  100. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.d.ts +3 -3
  101. package/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.d.ts +0 -3
  102. package/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.d.ts +1 -1
  103. package/lib/components/object-properties-header/object-properties-header.component.d.ts +3 -5
  104. package/lib/components/object-properties-header/object-properties-header.interface.d.ts +0 -1
  105. package/package.json +5 -12
  106. package/public-api.d.ts +0 -16
  107. package/assets/images/default/Attachment_18_gray.svg +0 -1
  108. package/assets/images/default/Attachment_18_maincolor.svg +0 -3
  109. package/assets/images/default/Attachmentlink_18_gray.svg +0 -7
  110. package/assets/images/default/Attachmentlink_18_maincolor.svg +0 -7
  111. package/assets/images/default/Comments_18_gray.svg +0 -1
  112. package/assets/images/default/Comments_18_maincolor.svg +0 -4
  113. package/assets/images/default/Links_18_gray.svg +0 -1
  114. package/assets/images/default/Links_18_maincolor.svg +0 -4
  115. package/assets/images/default/ic_models.svg +0 -3
  116. package/assets/images/default/ic_models_maincolor.svg +0 -3
  117. package/assets/images/default/icn_grid_attachments.png +0 -0
  118. package/assets/images/default/icn_grid_hyperlinks.png +0 -0
  119. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.component.mjs +0 -69
  120. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.interface.mjs +0 -34
  121. package/esm2022/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.mjs +0 -82
  122. package/esm2022/lib/components/bimplus-attachments/services/bimplus-attachments.service.mjs +0 -49
  123. package/esm2022/lib/components/bimplus-comment/bimplus-comment.component.mjs +0 -68
  124. package/esm2022/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.mjs +0 -58
  125. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.mjs +0 -242
  126. package/esm2022/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.mjs +0 -2
  127. package/esm2022/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.mjs +0 -73
  128. package/esm2022/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.mjs +0 -75
  129. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.mjs +0 -38
  130. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.mjs +0 -10
  131. package/esm2022/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.mjs +0 -89
  132. package/esm2022/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.mjs +0 -33
  133. package/esm2022/lib/components/bimplus-textarea/autoResizeTextarea.directive.mjs +0 -83
  134. package/esm2022/lib/components/bimplus-textarea/bimplus-textarea.component.mjs +0 -122
  135. package/esm2022/lib/components/links-to-documents/links-to-documents.component.interface.mjs +0 -2
  136. package/esm2022/lib/components/links-to-documents/links-to-documents.component.mjs +0 -337
  137. package/esm2022/lib/components/object-hyperlinks/object-hyperlinks.component.mjs +0 -141
  138. package/esm2022/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.mjs +0 -36
  139. package/esm2022/lib/components/object-properties/object-properties.component.mjs +0 -261
  140. package/esm2022/lib/components/object-properties/object-properties.interface.mjs +0 -2
  141. package/esm2022/lib/components/object-properties-group/object-properties-group.component.mjs +0 -40
  142. package/esm2022/lib/components/object-properties-group/object-property-value/object-property-value.component.mjs +0 -55
  143. package/esm2022/lib/pipes/bit-converter.pipe.mjs +0 -46
  144. package/esm2022/lib/pipes/get-attribute-value.pipe.mjs +0 -110
  145. package/esm2022/lib/pipes/round.pipe.mjs +0 -20
  146. package/esm2022/lib/utils/objectProperties.mjs +0 -9
  147. package/lib/components/bimplus-attachments/bimplus-attachments.component.d.ts +0 -25
  148. package/lib/components/bimplus-attachments/bimplus-attachments.interface.d.ts +0 -19
  149. package/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.d.ts +0 -26
  150. package/lib/components/bimplus-attachments/services/bimplus-attachments.service.d.ts +0 -12
  151. package/lib/components/bimplus-comment/bimplus-comment.component.d.ts +0 -34
  152. package/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.d.ts +0 -17
  153. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.d.ts +0 -51
  154. package/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.d.ts +0 -11
  155. package/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.d.ts +0 -28
  156. package/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.d.ts +0 -23
  157. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.d.ts +0 -16
  158. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.d.ts +0 -18
  159. package/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.d.ts +0 -36
  160. package/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.d.ts +0 -15
  161. package/lib/components/bimplus-textarea/autoResizeTextarea.directive.d.ts +0 -24
  162. package/lib/components/bimplus-textarea/bimplus-textarea.component.d.ts +0 -42
  163. package/lib/components/links-to-documents/links-to-documents.component.d.ts +0 -55
  164. package/lib/components/links-to-documents/links-to-documents.component.interface.d.ts +0 -11
  165. package/lib/components/object-hyperlinks/object-hyperlinks.component.d.ts +0 -32
  166. package/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.d.ts +0 -15
  167. package/lib/components/object-properties/object-properties.component.d.ts +0 -45
  168. package/lib/components/object-properties/object-properties.interface.d.ts +0 -21
  169. package/lib/components/object-properties-group/object-properties-group.component.d.ts +0 -11
  170. package/lib/components/object-properties-group/object-property-value/object-property-value.component.d.ts +0 -14
  171. package/lib/pipes/bit-converter.pipe.d.ts +0 -17
  172. package/lib/pipes/get-attribute-value.pipe.d.ts +0 -23
  173. package/lib/pipes/round.pipe.d.ts +0 -7
  174. package/lib/utils/objectProperties.d.ts +0 -2
@@ -90,10 +90,10 @@ export class BimplusContextMenuComponent {
90
90
  fireEvent(this, "triggerSelected");
91
91
  event.stopPropagation();
92
92
  }
93
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: BimplusContextMenuComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: BimplusContextMenuComponent, isStandalone: true, selector: "lib-bimplus-context-menu", inputs: { showIcons: ["showIcons", "showIcons", booleanAttribute], triggerTitle: "triggerTitle", itemsValue: ["items", "itemsValue"], data: "data" }, outputs: { triggerSelected: "triggerSelected" }, ngImport: i0, template: "<div class=\"basic-context-menu\" libClickOutside (clickOutside)=\"_clickOutside()\">\r\n <div class=\"context-menu-trigger\" \r\n (click)=\"_toggleDropdown($event)\"\r\n (keypress)=\"_toggleDropdown($event)\"\r\n title=\"{{triggerTitle}}\"\r\n data-test=\"context-menu\"\r\n >\r\n @if (_showDropdown()) {\r\n <ul\r\n class=\"basic-context-menu__list\"\r\n data-test=\"basic-context-menu__list\"\r\n [ngStyle]=\"{\r\n 'top.px': _position().posY\r\n , 'left.px': _position().posX\r\n }\"\r\n >\r\n @for(item of items(); track item) {\r\n @if (item.id !== 'separator') {\r\n <li \r\n class=\"basic-context-menu__item\"\r\n data-test=\"basic-context-menu__item\"\r\n [class.basic-context-menu__item--disabled]=\"_disabled(item)\"\r\n (click)=\"_actionClick(item)\"\r\n (keypress)=\"_actionClick(item)\"\r\n >\r\n @if (showIcons) {\r\n <div class=\"basic-context-menu__item__icon\" data-test=\"basic-context-menu__item__icon\" [style.background-image]=\"'url(' + item.icon + ')'\">\r\n </div>\r\n }\r\n <div class=\"basic-context-menu__item__label\" data-test=\"basic-context-menu__item__label\" title=\"{{item.tooltip ? item.tooltip : item.title}}\">\r\n {{item.title}}\r\n </div>\r\n </li>\r\n } @else {\r\n <div class=\"basic-context-menu__item__separator\" data-test=\"basic-context-menu__item__separator\"></div>\r\n }\r\n }\r\n </ul>\r\n }\r\n</div>\r\n", styles: [".text-selected{color:var(--text-highlight-text-color-enabled)}.ui-icon22px{width:2.2rem;height:2.2rem;display:inline-block;float:right;border-radius:.4rem;background-position:center center;background-repeat:no-repeat;cursor:pointer}.ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat}.touch-ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat;width:3.2rem;height:3.2rem}.ui-icon-sidemenu-important{width:2.4rem!important;height:2.4rem!important;background-size:1.8rem 1.8rem!important;background-position:center center;background-repeat:no-repeat}.no-transition{-moz-transition:none;-webkit-transition:none;-o-transition:color 0 ease-in;transition:none}.ml-1{margin-left:1rem}.mr-1{margin-right:1rem}.h-full{height:100%}.fixed{position:fixed}.basic-context-menu{display:block;font-family:var(--context-menu-font-family, \"Source Sans Pro\", Helvetica, Arial, tahoma, sans-serif);font-size:var(--context-menu-font-size, 1.4rem)}.basic-context-menu>.context-menu-trigger{min-width:var(--context-menu-trigger-width, 2.5rem);max-width:var(--context-menu-trigger-width, 2.5rem);min-height:var(--context-menu-trigger-height, 2.5rem);max-height:var(--context-menu-trigger-height, 2.5rem);background-repeat:no-repeat;background-position:center;background-image:url('data:image/svg+xml,<svg width=\"4\" height=\"18\" viewBox=\"0 0 4 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<g clip-path=\"url(%23clip0_38_5518)\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 2C4 2.53043 3.78929 3.03914 3.41421 3.41421C3.03914 3.78929 2.53043 4 2 4C1.46957 4 0.960859 3.78929 0.585786 3.41421C0.210714 3.03914 0 2.53043 0 2C0 1.46957 0.210714 0.960859 0.585786 0.585786C0.960859 0.210714 1.46957 0 2 0C2.53043 0 3.03914 0.210714 3.41421 0.585786C3.78929 0.960859 4 1.46957 4 2ZM4 9C4 9.53043 3.78929 10.0391 3.41421 10.4142C3.03914 10.7893 2.53043 11 2 11C1.46957 11 0.960859 10.7893 0.585786 10.4142C0.210714 10.0391 0 9.53043 0 9C0 8.46957 0.210714 7.96086 0.585786 7.58579C0.960859 7.21071 1.46957 7 2 7C2.53043 7 3.03914 7.21071 3.41421 7.58579C3.78929 7.96086 4 8.46957 4 9ZM2 18C2.53043 18 3.03914 17.7893 3.41421 17.4142C3.78929 17.0391 4 16.5304 4 16C4 15.4696 3.78929 14.9609 3.41421 14.5858C3.03914 14.2107 2.53043 14 2 14C1.46957 14 0.960859 14.2107 0.585786 14.5858C0.210714 14.9609 0 15.4696 0 16C0 16.5304 0.210714 17.0391 0.585786 17.4142C0.960859 17.7893 1.46957 18 2 18Z\" fill=\"%2346494D\"/>%0D%0A</g>%0D%0A<defs>%0D%0A<clipPath id=\"clip0_38_5518\">%0D%0A<rect width=\"4\" height=\"18\" fill=\"white\"/>%0D%0A</clipPath>%0D%0A</defs>%0D%0A</svg>%0D%0A');background-color:var(--context-menu-trigger-bkg-color, transparent)}.basic-context-menu>.context-menu-trigger:hover{background-image:url('data:image/svg+xml,<svg width=\"4\" height=\"18\" viewBox=\"0 0 4 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<g clip-path=\"url(%23clip0_38_5520)\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 2C4 2.53043 3.78929 3.03914 3.41421 3.41421C3.03914 3.78929 2.53043 4 2 4C1.46957 4 0.960859 3.78929 0.585786 3.41421C0.210714 3.03914 0 2.53043 0 2C0 1.46957 0.210714 0.960859 0.585786 0.585786C0.960859 0.210714 1.46957 0 2 0C2.53043 0 3.03914 0.210714 3.41421 0.585786C3.78929 0.960859 4 1.46957 4 2ZM4 9C4 9.53043 3.78929 10.0391 3.41421 10.4142C3.03914 10.7893 2.53043 11 2 11C1.46957 11 0.960859 10.7893 0.585786 10.4142C0.210714 10.0391 0 9.53043 0 9C0 8.46957 0.210714 7.96086 0.585786 7.58579C0.960859 7.21071 1.46957 7 2 7C2.53043 7 3.03914 7.21071 3.41421 7.58579C3.78929 7.96086 4 8.46957 4 9ZM2 18C2.53043 18 3.03914 17.7893 3.41421 17.4142C3.78929 17.0391 4 16.5304 4 16C4 15.4696 3.78929 14.9609 3.41421 14.5858C3.03914 14.2107 2.53043 14 2 14C1.46957 14 0.960859 14.2107 0.585786 14.5858C0.210714 14.9609 0 15.4696 0 16C0 16.5304 0.210714 17.0391 0.585786 17.4142C0.960859 17.7893 1.46957 18 2 18Z\" fill=\"%230066CC\"/>%0D%0A</g>%0D%0A<defs>%0D%0A<clipPath id=\"clip0_38_5520\">%0D%0A<rect width=\"4\" height=\"18\" fill=\"white\"/>%0D%0A</clipPath>%0D%0A</defs>%0D%0A</svg>%0D%0A')}.basic-context-menu>.basic-context-menu__list{z-index:1;margin:0;position:fixed;top:-2000;left:-2000;translate:var(--context-menu-translate-x, 0) var(--context-menu-translate-y, 0);border:thin solid var(--context-menu-list-border-color-enabled);border-top-width:0;padding-top:.8rem;padding-bottom:.8rem;padding-left:0;padding-right:0;border-bottom-left-radius:var(--context-menu-border-radius, .6rem);border-bottom-right-radius:var(--context-menu-border-radius, .6rem);border-top-left-radius:var(--context-menu-border-radius, .6rem);border-top-right-radius:var(--context-menu-border-radius, .6rem);-webkit-box-shadow:0 .2rem .6rem var(--context-menu-list-box-shadow-color-enabled);-moz-box-shadow:0 .2rem .6rem var(--context-menu-list-box-shadow-color-enabled);box-shadow:0 .2rem .6rem var(--context-menu-list-box-shadow-color-enabled);width:fit-content;min-width:var(--context-menu-min-width, 10rem);max-width:var(--context-menu-max-width, 30rem);background-color:var(--context-menu-list-background-color)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item{display:flex;flex-direction:row;cursor:pointer;line-height:var(--context-menu-item-line-height, 3.2rem);list-style-type:none;padding-left:1.2rem;padding-right:2.1rem}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item>.basic-context-menu__item__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:var(--context-menu-font-weight, 700);color:var(--context-menu-item-label-text-color-enabled)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item>.basic-context-menu__item__icon{height:var(--context-menu-item-line-height, 3.2rem);width:var(--context-menu-item-line-height, 3.2rem);min-width:var(--context-menu-item-line-height, 3.2rem);background-repeat:no-repeat;background-size:var(--context-menu-item-icon-size, 1.8rem);margin-right:.6rem;background-position:center;background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<g clip-path=\"url(%23clip0_38_5048)\">%0D%0A<path d=\"M9 0C4 0 0 4 0 9C0 14 4 18 9 18C14 18 18 14 18 9C18 4 14 0 9 0ZM8 4H10V6H8V4ZM11 14H7V13H8V8H7V7H10V13H11V14Z\" fill=\"%230066CC\"/>%0D%0A</g>%0D%0A<defs>%0D%0A<clipPath id=\"clip0_38_5048\">%0D%0A<rect width=\"18\" height=\"18\" fill=\"white\"/>%0D%0A</clipPath>%0D%0A</defs>%0D%0A</svg>%0D%0A')}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item:hover{background-color:var(--context-menu-item-background-color-hovered)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item__separator{border-top:solid .2rem var(--context-menu-item-seperator-border-color-enabled)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item--disabled{background-color:transparent;cursor:default}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item--disabled>*{opacity:var(--context-menu-item-disabled-opacity, .3)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item--disabled:hover{cursor:default;background-color:var(--context-menu-item-background-color-disabled)}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[libClickOutside]", outputs: ["clickOutside"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusContextMenuComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BimplusContextMenuComponent, isStandalone: true, selector: "lib-bimplus-context-menu", inputs: { showIcons: ["showIcons", "showIcons", booleanAttribute], triggerTitle: "triggerTitle", itemsValue: ["items", "itemsValue"], data: "data" }, outputs: { triggerSelected: "triggerSelected" }, ngImport: i0, template: "<div class=\"basic-context-menu\" libClickOutside (clickOutside)=\"_clickOutside()\">\r\n <div class=\"context-menu-trigger\" \r\n (click)=\"_toggleDropdown($event)\"\r\n (keypress)=\"_toggleDropdown($event)\"\r\n title=\"{{triggerTitle}}\"\r\n data-test=\"context-menu\"\r\n >\r\n @if (_showDropdown()) {\r\n <ul\r\n class=\"basic-context-menu__list\"\r\n data-test=\"basic-context-menu__list\"\r\n [ngStyle]=\"{\r\n 'top.px': _position().posY\r\n , 'left.px': _position().posX\r\n }\"\r\n >\r\n @for(item of items(); track item) {\r\n @if (item.id !== 'separator') {\r\n <li \r\n class=\"basic-context-menu__item\"\r\n data-test=\"basic-context-menu__item\"\r\n [class.basic-context-menu__item--disabled]=\"_disabled(item)\"\r\n (click)=\"_actionClick(item)\"\r\n (keypress)=\"_actionClick(item)\"\r\n >\r\n @if (showIcons) {\r\n <div class=\"basic-context-menu__item__icon\" data-test=\"basic-context-menu__item__icon\" [style.background-image]=\"'url(' + item.icon + ')'\">\r\n </div>\r\n }\r\n <div class=\"basic-context-menu__item__label\" data-test=\"basic-context-menu__item__label\" title=\"{{item.tooltip ? item.tooltip : item.title}}\">\r\n {{item.title}}\r\n </div>\r\n </li>\r\n } @else {\r\n <div class=\"basic-context-menu__item__separator\" data-test=\"basic-context-menu__item__separator\"></div>\r\n }\r\n }\r\n </ul>\r\n }\r\n</div>\r\n", styles: [".text-selected{color:var(--text-highlight-text-color-enabled)}.ui-icon22px{width:2.2rem;height:2.2rem;display:inline-block;float:right;border-radius:.4rem;background-position:center center;background-repeat:no-repeat;cursor:pointer}.ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat}.touch-ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat;width:3.2rem;height:3.2rem}.ui-icon-sidemenu-important{width:2.4rem!important;height:2.4rem!important;background-size:1.8rem 1.8rem!important;background-position:center center;background-repeat:no-repeat}.no-transition{-moz-transition:none;-webkit-transition:none;-o-transition:color 0 ease-in;transition:none}.ml-1{margin-left:1rem}.mr-1{margin-right:1rem}.h-full{height:100%}.fixed{position:fixed}.basic-context-menu{display:block;font-family:var(--context-menu-font-family, \"Source Sans Pro\", Helvetica, Arial, tahoma, sans-serif);font-size:var(--context-menu-font-size, 1.4rem)}.basic-context-menu>.context-menu-trigger{min-width:var(--context-menu-trigger-width, 2.5rem);max-width:var(--context-menu-trigger-width, 2.5rem);min-height:var(--context-menu-trigger-height, 2.5rem);max-height:var(--context-menu-trigger-height, 2.5rem);background-repeat:no-repeat;background-position:center;background-image:url('data:image/svg+xml,<svg width=\"4\" height=\"18\" viewBox=\"0 0 4 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<g clip-path=\"url(%23clip0_38_5518)\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 2C4 2.53043 3.78929 3.03914 3.41421 3.41421C3.03914 3.78929 2.53043 4 2 4C1.46957 4 0.960859 3.78929 0.585786 3.41421C0.210714 3.03914 0 2.53043 0 2C0 1.46957 0.210714 0.960859 0.585786 0.585786C0.960859 0.210714 1.46957 0 2 0C2.53043 0 3.03914 0.210714 3.41421 0.585786C3.78929 0.960859 4 1.46957 4 2ZM4 9C4 9.53043 3.78929 10.0391 3.41421 10.4142C3.03914 10.7893 2.53043 11 2 11C1.46957 11 0.960859 10.7893 0.585786 10.4142C0.210714 10.0391 0 9.53043 0 9C0 8.46957 0.210714 7.96086 0.585786 7.58579C0.960859 7.21071 1.46957 7 2 7C2.53043 7 3.03914 7.21071 3.41421 7.58579C3.78929 7.96086 4 8.46957 4 9ZM2 18C2.53043 18 3.03914 17.7893 3.41421 17.4142C3.78929 17.0391 4 16.5304 4 16C4 15.4696 3.78929 14.9609 3.41421 14.5858C3.03914 14.2107 2.53043 14 2 14C1.46957 14 0.960859 14.2107 0.585786 14.5858C0.210714 14.9609 0 15.4696 0 16C0 16.5304 0.210714 17.0391 0.585786 17.4142C0.960859 17.7893 1.46957 18 2 18Z\" fill=\"%2346494D\"/>%0D%0A</g>%0D%0A<defs>%0D%0A<clipPath id=\"clip0_38_5518\">%0D%0A<rect width=\"4\" height=\"18\" fill=\"white\"/>%0D%0A</clipPath>%0D%0A</defs>%0D%0A</svg>%0D%0A');background-color:var(--context-menu-trigger-bkg-color, transparent)}.basic-context-menu>.context-menu-trigger:hover{background-image:url('data:image/svg+xml,<svg width=\"4\" height=\"18\" viewBox=\"0 0 4 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<g clip-path=\"url(%23clip0_38_5520)\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 2C4 2.53043 3.78929 3.03914 3.41421 3.41421C3.03914 3.78929 2.53043 4 2 4C1.46957 4 0.960859 3.78929 0.585786 3.41421C0.210714 3.03914 0 2.53043 0 2C0 1.46957 0.210714 0.960859 0.585786 0.585786C0.960859 0.210714 1.46957 0 2 0C2.53043 0 3.03914 0.210714 3.41421 0.585786C3.78929 0.960859 4 1.46957 4 2ZM4 9C4 9.53043 3.78929 10.0391 3.41421 10.4142C3.03914 10.7893 2.53043 11 2 11C1.46957 11 0.960859 10.7893 0.585786 10.4142C0.210714 10.0391 0 9.53043 0 9C0 8.46957 0.210714 7.96086 0.585786 7.58579C0.960859 7.21071 1.46957 7 2 7C2.53043 7 3.03914 7.21071 3.41421 7.58579C3.78929 7.96086 4 8.46957 4 9ZM2 18C2.53043 18 3.03914 17.7893 3.41421 17.4142C3.78929 17.0391 4 16.5304 4 16C4 15.4696 3.78929 14.9609 3.41421 14.5858C3.03914 14.2107 2.53043 14 2 14C1.46957 14 0.960859 14.2107 0.585786 14.5858C0.210714 14.9609 0 15.4696 0 16C0 16.5304 0.210714 17.0391 0.585786 17.4142C0.960859 17.7893 1.46957 18 2 18Z\" fill=\"%230066CC\"/>%0D%0A</g>%0D%0A<defs>%0D%0A<clipPath id=\"clip0_38_5520\">%0D%0A<rect width=\"4\" height=\"18\" fill=\"white\"/>%0D%0A</clipPath>%0D%0A</defs>%0D%0A</svg>%0D%0A')}.basic-context-menu>.basic-context-menu__list{z-index:1;margin:0;position:fixed;top:-2000;left:-2000;translate:var(--context-menu-translate-x, 0) var(--context-menu-translate-y, 0);border:thin solid var(--context-menu-list-border-color-enabled);border-top-width:0;padding-top:.8rem;padding-bottom:.8rem;padding-left:0;padding-right:0;border-bottom-left-radius:var(--context-menu-border-radius, .6rem);border-bottom-right-radius:var(--context-menu-border-radius, .6rem);border-top-left-radius:var(--context-menu-border-radius, .6rem);border-top-right-radius:var(--context-menu-border-radius, .6rem);-webkit-box-shadow:0 .2rem .6rem var(--context-menu-list-box-shadow-color-enabled);-moz-box-shadow:0 .2rem .6rem var(--context-menu-list-box-shadow-color-enabled);box-shadow:0 .2rem .6rem var(--context-menu-list-box-shadow-color-enabled);width:fit-content;min-width:var(--context-menu-min-width, 10rem);max-width:var(--context-menu-max-width, 30rem);background-color:var(--context-menu-list-background-color)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item{display:flex;flex-direction:row;cursor:pointer;line-height:var(--context-menu-item-line-height, 3.2rem);list-style-type:none;padding-left:1.2rem;padding-right:2.1rem}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item>.basic-context-menu__item__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:var(--context-menu-font-weight, 700);color:var(--context-menu-item-label-text-color-enabled)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item>.basic-context-menu__item__icon{height:var(--context-menu-item-line-height, 3.2rem);width:var(--context-menu-item-line-height, 3.2rem);min-width:var(--context-menu-item-line-height, 3.2rem);background-repeat:no-repeat;background-size:var(--context-menu-item-icon-size, 1.8rem);margin-right:.6rem;background-position:center;background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<g clip-path=\"url(%23clip0_38_5048)\">%0D%0A<path d=\"M9 0C4 0 0 4 0 9C0 14 4 18 9 18C14 18 18 14 18 9C18 4 14 0 9 0ZM8 4H10V6H8V4ZM11 14H7V13H8V8H7V7H10V13H11V14Z\" fill=\"%230066CC\"/>%0D%0A</g>%0D%0A<defs>%0D%0A<clipPath id=\"clip0_38_5048\">%0D%0A<rect width=\"18\" height=\"18\" fill=\"white\"/>%0D%0A</clipPath>%0D%0A</defs>%0D%0A</svg>%0D%0A')}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item:hover{background-color:var(--context-menu-item-background-color-hovered)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item__separator{border-top:solid .2rem var(--context-menu-item-seperator-border-color-enabled)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item--disabled{background-color:transparent;cursor:default}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item--disabled>*{opacity:var(--context-menu-item-disabled-opacity, .3)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item--disabled:hover{cursor:default;background-color:var(--context-menu-item-background-color-disabled)}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[libClickOutside]", outputs: ["clickOutside"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
95
95
  }
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: BimplusContextMenuComponent, decorators: [{
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusContextMenuComponent, decorators: [{
97
97
  type: Component,
98
98
  args: [{ selector: 'lib-bimplus-context-menu', standalone: true, imports: [NgFor, NgIf, NgStyle, ClickOutsideDirective], encapsulation: ViewEncapsulation.ShadowDom, template: "<div class=\"basic-context-menu\" libClickOutside (clickOutside)=\"_clickOutside()\">\r\n <div class=\"context-menu-trigger\" \r\n (click)=\"_toggleDropdown($event)\"\r\n (keypress)=\"_toggleDropdown($event)\"\r\n title=\"{{triggerTitle}}\"\r\n data-test=\"context-menu\"\r\n >\r\n @if (_showDropdown()) {\r\n <ul\r\n class=\"basic-context-menu__list\"\r\n data-test=\"basic-context-menu__list\"\r\n [ngStyle]=\"{\r\n 'top.px': _position().posY\r\n , 'left.px': _position().posX\r\n }\"\r\n >\r\n @for(item of items(); track item) {\r\n @if (item.id !== 'separator') {\r\n <li \r\n class=\"basic-context-menu__item\"\r\n data-test=\"basic-context-menu__item\"\r\n [class.basic-context-menu__item--disabled]=\"_disabled(item)\"\r\n (click)=\"_actionClick(item)\"\r\n (keypress)=\"_actionClick(item)\"\r\n >\r\n @if (showIcons) {\r\n <div class=\"basic-context-menu__item__icon\" data-test=\"basic-context-menu__item__icon\" [style.background-image]=\"'url(' + item.icon + ')'\">\r\n </div>\r\n }\r\n <div class=\"basic-context-menu__item__label\" data-test=\"basic-context-menu__item__label\" title=\"{{item.tooltip ? item.tooltip : item.title}}\">\r\n {{item.title}}\r\n </div>\r\n </li>\r\n } @else {\r\n <div class=\"basic-context-menu__item__separator\" data-test=\"basic-context-menu__item__separator\"></div>\r\n }\r\n }\r\n </ul>\r\n }\r\n</div>\r\n", styles: [".text-selected{color:var(--text-highlight-text-color-enabled)}.ui-icon22px{width:2.2rem;height:2.2rem;display:inline-block;float:right;border-radius:.4rem;background-position:center center;background-repeat:no-repeat;cursor:pointer}.ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat}.touch-ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat;width:3.2rem;height:3.2rem}.ui-icon-sidemenu-important{width:2.4rem!important;height:2.4rem!important;background-size:1.8rem 1.8rem!important;background-position:center center;background-repeat:no-repeat}.no-transition{-moz-transition:none;-webkit-transition:none;-o-transition:color 0 ease-in;transition:none}.ml-1{margin-left:1rem}.mr-1{margin-right:1rem}.h-full{height:100%}.fixed{position:fixed}.basic-context-menu{display:block;font-family:var(--context-menu-font-family, \"Source Sans Pro\", Helvetica, Arial, tahoma, sans-serif);font-size:var(--context-menu-font-size, 1.4rem)}.basic-context-menu>.context-menu-trigger{min-width:var(--context-menu-trigger-width, 2.5rem);max-width:var(--context-menu-trigger-width, 2.5rem);min-height:var(--context-menu-trigger-height, 2.5rem);max-height:var(--context-menu-trigger-height, 2.5rem);background-repeat:no-repeat;background-position:center;background-image:url('data:image/svg+xml,<svg width=\"4\" height=\"18\" viewBox=\"0 0 4 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<g clip-path=\"url(%23clip0_38_5518)\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 2C4 2.53043 3.78929 3.03914 3.41421 3.41421C3.03914 3.78929 2.53043 4 2 4C1.46957 4 0.960859 3.78929 0.585786 3.41421C0.210714 3.03914 0 2.53043 0 2C0 1.46957 0.210714 0.960859 0.585786 0.585786C0.960859 0.210714 1.46957 0 2 0C2.53043 0 3.03914 0.210714 3.41421 0.585786C3.78929 0.960859 4 1.46957 4 2ZM4 9C4 9.53043 3.78929 10.0391 3.41421 10.4142C3.03914 10.7893 2.53043 11 2 11C1.46957 11 0.960859 10.7893 0.585786 10.4142C0.210714 10.0391 0 9.53043 0 9C0 8.46957 0.210714 7.96086 0.585786 7.58579C0.960859 7.21071 1.46957 7 2 7C2.53043 7 3.03914 7.21071 3.41421 7.58579C3.78929 7.96086 4 8.46957 4 9ZM2 18C2.53043 18 3.03914 17.7893 3.41421 17.4142C3.78929 17.0391 4 16.5304 4 16C4 15.4696 3.78929 14.9609 3.41421 14.5858C3.03914 14.2107 2.53043 14 2 14C1.46957 14 0.960859 14.2107 0.585786 14.5858C0.210714 14.9609 0 15.4696 0 16C0 16.5304 0.210714 17.0391 0.585786 17.4142C0.960859 17.7893 1.46957 18 2 18Z\" fill=\"%2346494D\"/>%0D%0A</g>%0D%0A<defs>%0D%0A<clipPath id=\"clip0_38_5518\">%0D%0A<rect width=\"4\" height=\"18\" fill=\"white\"/>%0D%0A</clipPath>%0D%0A</defs>%0D%0A</svg>%0D%0A');background-color:var(--context-menu-trigger-bkg-color, transparent)}.basic-context-menu>.context-menu-trigger:hover{background-image:url('data:image/svg+xml,<svg width=\"4\" height=\"18\" viewBox=\"0 0 4 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<g clip-path=\"url(%23clip0_38_5520)\">%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 2C4 2.53043 3.78929 3.03914 3.41421 3.41421C3.03914 3.78929 2.53043 4 2 4C1.46957 4 0.960859 3.78929 0.585786 3.41421C0.210714 3.03914 0 2.53043 0 2C0 1.46957 0.210714 0.960859 0.585786 0.585786C0.960859 0.210714 1.46957 0 2 0C2.53043 0 3.03914 0.210714 3.41421 0.585786C3.78929 0.960859 4 1.46957 4 2ZM4 9C4 9.53043 3.78929 10.0391 3.41421 10.4142C3.03914 10.7893 2.53043 11 2 11C1.46957 11 0.960859 10.7893 0.585786 10.4142C0.210714 10.0391 0 9.53043 0 9C0 8.46957 0.210714 7.96086 0.585786 7.58579C0.960859 7.21071 1.46957 7 2 7C2.53043 7 3.03914 7.21071 3.41421 7.58579C3.78929 7.96086 4 8.46957 4 9ZM2 18C2.53043 18 3.03914 17.7893 3.41421 17.4142C3.78929 17.0391 4 16.5304 4 16C4 15.4696 3.78929 14.9609 3.41421 14.5858C3.03914 14.2107 2.53043 14 2 14C1.46957 14 0.960859 14.2107 0.585786 14.5858C0.210714 14.9609 0 15.4696 0 16C0 16.5304 0.210714 17.0391 0.585786 17.4142C0.960859 17.7893 1.46957 18 2 18Z\" fill=\"%230066CC\"/>%0D%0A</g>%0D%0A<defs>%0D%0A<clipPath id=\"clip0_38_5520\">%0D%0A<rect width=\"4\" height=\"18\" fill=\"white\"/>%0D%0A</clipPath>%0D%0A</defs>%0D%0A</svg>%0D%0A')}.basic-context-menu>.basic-context-menu__list{z-index:1;margin:0;position:fixed;top:-2000;left:-2000;translate:var(--context-menu-translate-x, 0) var(--context-menu-translate-y, 0);border:thin solid var(--context-menu-list-border-color-enabled);border-top-width:0;padding-top:.8rem;padding-bottom:.8rem;padding-left:0;padding-right:0;border-bottom-left-radius:var(--context-menu-border-radius, .6rem);border-bottom-right-radius:var(--context-menu-border-radius, .6rem);border-top-left-radius:var(--context-menu-border-radius, .6rem);border-top-right-radius:var(--context-menu-border-radius, .6rem);-webkit-box-shadow:0 .2rem .6rem var(--context-menu-list-box-shadow-color-enabled);-moz-box-shadow:0 .2rem .6rem var(--context-menu-list-box-shadow-color-enabled);box-shadow:0 .2rem .6rem var(--context-menu-list-box-shadow-color-enabled);width:fit-content;min-width:var(--context-menu-min-width, 10rem);max-width:var(--context-menu-max-width, 30rem);background-color:var(--context-menu-list-background-color)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item{display:flex;flex-direction:row;cursor:pointer;line-height:var(--context-menu-item-line-height, 3.2rem);list-style-type:none;padding-left:1.2rem;padding-right:2.1rem}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item>.basic-context-menu__item__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:var(--context-menu-font-weight, 700);color:var(--context-menu-item-label-text-color-enabled)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item>.basic-context-menu__item__icon{height:var(--context-menu-item-line-height, 3.2rem);width:var(--context-menu-item-line-height, 3.2rem);min-width:var(--context-menu-item-line-height, 3.2rem);background-repeat:no-repeat;background-size:var(--context-menu-item-icon-size, 1.8rem);margin-right:.6rem;background-position:center;background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<g clip-path=\"url(%23clip0_38_5048)\">%0D%0A<path d=\"M9 0C4 0 0 4 0 9C0 14 4 18 9 18C14 18 18 14 18 9C18 4 14 0 9 0ZM8 4H10V6H8V4ZM11 14H7V13H8V8H7V7H10V13H11V14Z\" fill=\"%230066CC\"/>%0D%0A</g>%0D%0A<defs>%0D%0A<clipPath id=\"clip0_38_5048\">%0D%0A<rect width=\"18\" height=\"18\" fill=\"white\"/>%0D%0A</clipPath>%0D%0A</defs>%0D%0A</svg>%0D%0A')}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item:hover{background-color:var(--context-menu-item-background-color-hovered)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item__separator{border-top:solid .2rem var(--context-menu-item-seperator-border-color-enabled)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item--disabled{background-color:transparent;cursor:default}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item--disabled>*{opacity:var(--context-menu-item-disabled-opacity, .3)}.basic-context-menu>.basic-context-menu__list>.basic-context-menu__item--disabled:hover{cursor:default;background-color:var(--context-menu-item-background-color-disabled)}\n"] }]
99
99
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { triggerSelected: [{
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1jb250ZXh0LW1lbnUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1jb250ZXh0LW1lbnUvYmltcGx1cy1jb250ZXh0LW1lbnUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEJpbXBsdXNDb250ZXh0TWVudUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBpY29uQ2xhc3M/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IChkYXRhOiBvYmplY3QgfCB1bmRlZmluZWQpID0+IGJvb2xlYW47IC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGJvb2xlYW5cbiAgYWN0aW9uPzogKGRhdGE6IG9iamVjdCB8IHVuZGVmaW5lZCkgPT4gdm9pZDsgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHZvaWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaW1wbHVzQ29udGV4dE1lbnVQb3NpdGlvbiB7XG4gIHBvc1g6IG51bWJlcjtcbiAgcG9zWTogbnVtYmVyXG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1jb250ZXh0LW1lbnUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1jb250ZXh0LW1lbnUvYmltcGx1cy1jb250ZXh0LW1lbnUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEJpbXBsdXNDb250ZXh0TWVudUl0ZW0ge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgaWNvbkNsYXNzPzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgdG9vbHRpcD86IHN0cmluZztcclxuICBkaXNhYmxlZD86IChkYXRhOiBvYmplY3QgfCB1bmRlZmluZWQpID0+IGJvb2xlYW47IC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGJvb2xlYW5cclxuICBhY3Rpb24/OiAoZGF0YTogb2JqZWN0IHwgdW5kZWZpbmVkKSA9PiB2b2lkOyAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgdm9pZFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJpbXBsdXNDb250ZXh0TWVudVBvc2l0aW9uIHtcclxuICBwb3NYOiBudW1iZXI7XHJcbiAgcG9zWTogbnVtYmVyXHJcbn0iXX0=
@@ -277,10 +277,10 @@ export class BimplusFlatTreeComponent {
277
277
  }
278
278
  return this._selectionList?.isSelected(node);
279
279
  }
280
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: BimplusFlatTreeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
281
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: BimplusFlatTreeComponent, isStandalone: true, selector: "lib-bimplus-flat-tree", inputs: { treeDataStringified: "treeDataStringified", treeTitleValue: ["treeTitle", "treeTitleValue"], paddingIndent: "paddingIndent", multiSelect: ["multiSelect", "multiSelect", booleanAttribute], oneLevelMultiSelect: ["oneLevelMultiSelect", "oneLevelMultiSelect", booleanAttribute], showFoldersIcons: ["showFoldersIcons", "showFoldersIcons", booleanAttribute], showObjectsIcons: ["showObjectsIcons", "showObjectsIcons", booleanAttribute], enableSelect: ["enableSelect", "enableSelect", booleanAttribute], enableParentHighlighting: ["enableParentHighlighting", "enableParentHighlighting", booleanAttribute], enableDragAndDrop: ["enableDragAndDrop", "enableDragAndDrop", booleanAttribute], dataTestPrefix: "dataTestPrefix", contextMenus: "contextMenus", treeData: "treeData", customNodeTemplateValue: ["customNodeTemplate", "customNodeTemplateValue"] }, outputs: { selectedNodes: "selectedNodes" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tree-container\">\r\n @if (treeTitle(); as treeTitle) {\r\n <div class=\"tree-title\">{{treeTitle}}</div>\r\n }\r\n <cdk-tree [dataSource]=\"_dataSource\" [treeControl]=\"_treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <cdk-tree-node\r\n [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"object-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n <button mat-icon-button disabled>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon object-icon\" *ngIf=\"showObjectsIcons\">\r\n </div>\r\n <span\r\n class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.objectContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.objectContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <cdk-tree-node [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node;when: _isExpendable\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"folder-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\"\r\n >\r\n <div\r\n class=\"icon expand-collapse-icon\"\r\n [class.expand-more-icon]=\"_hasChildren(node) && !_treeControl.isExpanded(node)\"\r\n [class.collapse-icon]=\"_hasChildren(node) && _treeControl.isExpanded(node)\"\r\n >\r\n </div>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon folder-icon\" *ngIf=\"showFoldersIcons\">\r\n </div>\r\n <span class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [class.selected-all-descendants-nodes]=\"_descendantsAllSelected(node) && _isSelected(node) && enableParentHighlighting\"\r\n [class.selected-partially-descendants-nodes]=\"_descendantsPartiallySelected(node) && enableParentHighlighting\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div class=\"node-label\">\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.folderContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.folderContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n </cdk-tree>\r\n</div>\r\n", styles: [".text-selected{color:var(--text-highlight-text-color-enabled)}.ui-icon22px{width:2.2rem;height:2.2rem;display:inline-block;float:right;border-radius:.4rem;background-position:center center;background-repeat:no-repeat;cursor:pointer}.ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat}.touch-ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat;width:3.2rem;height:3.2rem}.ui-icon-sidemenu-important{width:2.4rem!important;height:2.4rem!important;background-size:1.8rem 1.8rem!important;background-position:center center;background-repeat:no-repeat}.tree-container{background-color:var(--flat-tree-background-color, var(--flat-tree-container-background-color-enabled));width:calc(100% - 2 * var(--flat-tree-node-indent, 1rem));padding:var(--flat-tree-node-indent, 1rem);font-family:var(--flat-tree-font-family, \"Source Sans Pro\", Helvetica, Arial, tahoma, sans-serif);font-size:var(--flat-tree-font-size, 1.3rem);font-weight:var(--flat-tree-font-weight, 700);color:var(--flat-tree-container-text-color-enabled)}.tree-container>.tree-title{background-color:transparent;font-size:var(--flat-tree-title-font-size, 1.6rem);margin-bottom:1rem}.cdk-tree{background-color:transparent;width:100%}.cdk-tree>.cdk-tree-node{--mat-icon-button-touch-target-display: none;background-color:transparent;display:flex;align-items:center;cursor:pointer;line-height:var(--flat-tree-node-line-height, 2.4rem)}.cdk-tree>.cdk-tree-node.folder-node{font-weight:var(--flat-tree-folder-font-weight, 700)}.cdk-tree>.cdk-tree-node.object-node{font-weight:var(--flat-tree-object-font-weight, 400)}.cdk-tree>.cdk-tree-node>span.node-label{overflow:hidden;flex:1}.cdk-tree>.cdk-tree-node>span.node-label>div.node-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cdk-tree>.cdk-tree-node lib-bimplus-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: var(--flat-tree-node-line-height, 2.4rem);--context-menu-trigger-bkg-color: transparent;--context-menu-translate-x: 1rem}.cdk-tree>.cdk-tree-node:not(.selected-node):not(:hover) lib-bimplus-context-menu{display:none}.cdk-tree-node.dragable-node:hover{background-color:var(--flat-tree-draggable-node-background-color-hovered);background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"11\" y=\"2\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"2\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"11\" y=\"8\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"8\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"11\" y=\"14\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"14\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:var(--flat-tree-node-icon-size, 1.8rem);background-position:left center}.mat-mdc-icon-button{padding:.2rem;width:var(--flat-tree-node-line-height, 2.4rem);height:var(--flat-tree-node-line-height, 2.4rem)}.selected-node{color:var(--flat-tree-selected-node-text-color-enabled);font-weight:var(--flat-tree-selected-node-font-weight, 700)!important}.selected-all-descendants-nodes{color:var(--flat-tree-selected-node-text-color-enabled)}.selected-partially-descendants-nodes{color:var(--flat-tree-partially-selected-nodes-text-color-enabled)}.custom-drag-placeholder{height:0px}.icon{width:var(--flat-tree-node-icon-size, 1.8rem);height:var(--flat-tree-node-icon-size, 1.8rem);margin-right:.4rem;background-position:center;background-size:var(--flat-tree-node-icon-size, 1.8rem)}.icon.folder-icon{background:var(--flat-tree-folder-icon, url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0D%0A<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0D%0A<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0D%0A%09 viewBox=\"0 0 20 20\" style=\"enable-background:new 0 0 20 20;\" xml:space=\"preserve\">%0D%0A<style type=\"text/css\">%0D%0A%09.st0{fill:%23444444;}%0D%0A<\\/style>%0D%0A<path class=\"st0\" d=\"M17,7V5V4V1h-6L8,3H0v16h2h15l3-12H17z M8,5h0.6l0.5-0.3L11.6,3H15v1v1v2H3l-1,4V5H8z M15.4,17H2.6l2-8H15h2%0D%0A%09h0.4L15.4,17z\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-folder-icon-size, 1.6rem);background-position:center}.icon.object-icon{background:var(--flat-tree-object-icon, url('data:image/svg+xml,<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M6 9H10V7H6V9Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M6 4V6H14V4H6Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M6 12H10V10H6V12Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M17 1H3V19H13L17 15V1ZM13 15V17H5V3H15V15H13Z\" fill=\"%2346494D\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-object-icon-size, 1.6rem);background-position:center}.icon.expand-collapse-icon.expand-more-icon{background:var(--flat-tree-node-expand-icon, url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M7.81235 5.64988C7.48497 5.38797 7 5.62106 7 6.04031L7 11.9597C7 12.3789 7.48497 12.612 7.81235 12.3501L11.512 9.39043C11.7622 9.19027 11.7622 8.80973 11.512 8.60957L7.81235 5.64988Z\" fill=\"%23ADADAD\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-expand-collapse-icon-size, 1.8rem);background-position:center}.icon.expand-collapse-icon.collapse-icon{background:var(--flat-tree-node-collapse-icon, url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M12.3501 7.81235C12.612 7.48497 12.3789 7 11.9597 7H6.04031C5.62106 7 5.38797 7.48497 5.64988 7.81235L8.60957 11.512C8.80973 11.7622 9.19027 11.7622 9.39043 11.512L12.3501 7.81235Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-expand-collapse-icon-size, 1.8rem);background-position:center}\n"], dependencies: [{ kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i1.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: CdkTreeModule }, { kind: "component", type: i3.CdkTree, selector: "cdk-tree", inputs: ["dataSource", "treeControl", "levelAccessor", "childrenAccessor", "trackBy", "expansionKey"], exportAs: ["cdkTree"] }, { kind: "directive", type: i3.CdkTreeNode, selector: "cdk-tree-node", inputs: ["role", "isExpandable", "isExpanded", "isDisabled", "cdkTreeNodeTypeaheadLabel"], outputs: ["activation", "expandedChange"], exportAs: ["cdkTreeNode"] }, { kind: "component", type: BimplusContextMenuComponent, selector: "lib-bimplus-context-menu", inputs: ["showIcons", "triggerTitle", "items", "data"], outputs: ["triggerSelected"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
280
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusFlatTreeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
281
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BimplusFlatTreeComponent, isStandalone: true, selector: "lib-bimplus-flat-tree", inputs: { treeDataStringified: "treeDataStringified", treeTitleValue: ["treeTitle", "treeTitleValue"], paddingIndent: "paddingIndent", multiSelect: ["multiSelect", "multiSelect", booleanAttribute], oneLevelMultiSelect: ["oneLevelMultiSelect", "oneLevelMultiSelect", booleanAttribute], showFoldersIcons: ["showFoldersIcons", "showFoldersIcons", booleanAttribute], showObjectsIcons: ["showObjectsIcons", "showObjectsIcons", booleanAttribute], enableSelect: ["enableSelect", "enableSelect", booleanAttribute], enableParentHighlighting: ["enableParentHighlighting", "enableParentHighlighting", booleanAttribute], enableDragAndDrop: ["enableDragAndDrop", "enableDragAndDrop", booleanAttribute], dataTestPrefix: "dataTestPrefix", contextMenus: "contextMenus", treeData: "treeData", customNodeTemplateValue: ["customNodeTemplate", "customNodeTemplateValue"] }, outputs: { selectedNodes: "selectedNodes" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tree-container\">\r\n @if (treeTitle(); as treeTitle) {\r\n <div class=\"tree-title\">{{treeTitle}}</div>\r\n }\r\n <cdk-tree [dataSource]=\"_dataSource\" [treeControl]=\"_treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <cdk-tree-node\r\n [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"object-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n <button mat-icon-button disabled>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon object-icon\" *ngIf=\"showObjectsIcons\">\r\n </div>\r\n <span\r\n class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.objectContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.objectContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <cdk-tree-node [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node;when: _isExpendable\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"folder-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\"\r\n >\r\n <div\r\n class=\"icon expand-collapse-icon\"\r\n [class.expand-more-icon]=\"_hasChildren(node) && !_treeControl.isExpanded(node)\"\r\n [class.collapse-icon]=\"_hasChildren(node) && _treeControl.isExpanded(node)\"\r\n >\r\n </div>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon folder-icon\" *ngIf=\"showFoldersIcons\">\r\n </div>\r\n <span class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [class.selected-all-descendants-nodes]=\"_descendantsAllSelected(node) && _isSelected(node) && enableParentHighlighting\"\r\n [class.selected-partially-descendants-nodes]=\"_descendantsPartiallySelected(node) && enableParentHighlighting\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div class=\"node-label\">\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.folderContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.folderContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n </cdk-tree>\r\n</div>\r\n", styles: [".text-selected{color:var(--text-highlight-text-color-enabled)}.ui-icon22px{width:2.2rem;height:2.2rem;display:inline-block;float:right;border-radius:.4rem;background-position:center center;background-repeat:no-repeat;cursor:pointer}.ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat}.touch-ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat;width:3.2rem;height:3.2rem}.ui-icon-sidemenu-important{width:2.4rem!important;height:2.4rem!important;background-size:1.8rem 1.8rem!important;background-position:center center;background-repeat:no-repeat}.tree-container{background-color:var(--flat-tree-container-background-color-enabled);width:calc(100% - 2 * var(--flat-tree-node-indent, 1rem));padding:var(--flat-tree-node-indent, 1rem);font-family:var(--flat-tree-font-family, \"Source Sans Pro\", Helvetica, Arial, tahoma, sans-serif);font-size:var(--flat-tree-font-size, 1.3rem);font-weight:var(--flat-tree-font-weight, 700);color:var(--flat-tree-container-text-color-enabled)}.tree-container>.tree-title{background-color:transparent;font-size:var(--flat-tree-title-font-size, 1.6rem);margin-bottom:1rem}.cdk-tree{background-color:transparent;width:100%}.cdk-tree>.cdk-tree-node{--mat-icon-button-touch-target-display: none;background-color:transparent;display:flex;align-items:center;cursor:pointer;line-height:var(--flat-tree-node-line-height, 2.4rem)}.cdk-tree>.cdk-tree-node.folder-node{font-weight:var(--flat-tree-folder-font-weight, 700)}.cdk-tree>.cdk-tree-node.object-node{font-weight:var(--flat-tree-object-font-weight, 400)}.cdk-tree>.cdk-tree-node>span.node-label{overflow:hidden;flex:1}.cdk-tree>.cdk-tree-node>span.node-label>div.node-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cdk-tree>.cdk-tree-node lib-bimplus-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: var(--flat-tree-node-line-height, 2.4rem);--context-menu-trigger-bkg-color: transparent;--context-menu-translate-x: 1rem}.cdk-tree>.cdk-tree-node:not(.selected-node):not(:hover) lib-bimplus-context-menu{display:none}.cdk-tree-node.dragable-node:hover{background-color:var(--flat-tree-draggable-node-background-color-hovered);background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"11\" y=\"2\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"2\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"11\" y=\"8\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"8\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"11\" y=\"14\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"14\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:var(--flat-tree-node-icon-size, 1.8rem);background-position:left center}.mat-mdc-icon-button{padding:.2rem;width:var(--flat-tree-node-line-height, 2.4rem);height:var(--flat-tree-node-line-height, 2.4rem)}.selected-node{color:var(--flat-tree-selected-node-text-color-enabled);font-weight:var(--flat-tree-selected-node-font-weight, 700)!important}.selected-all-descendants-nodes{color:var(--flat-tree-selected-node-text-color-enabled)}.selected-partially-descendants-nodes{color:var(--flat-tree-partially-selected-nodes-text-color-enabled)}.custom-drag-placeholder{height:0px}.icon{width:var(--flat-tree-node-icon-size, 1.8rem);height:var(--flat-tree-node-icon-size, 1.8rem);margin-right:.4rem;background-position:center;background-size:var(--flat-tree-node-icon-size, 1.8rem)}.icon.folder-icon{background:var(--flat-tree-folder-icon, url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0D%0A<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0D%0A<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0D%0A%09 viewBox=\"0 0 20 20\" style=\"enable-background:new 0 0 20 20;\" xml:space=\"preserve\">%0D%0A<style type=\"text/css\">%0D%0A%09.st0{fill:%23444444;}%0D%0A<\\/style>%0D%0A<path class=\"st0\" d=\"M17,7V5V4V1h-6L8,3H0v16h2h15l3-12H17z M8,5h0.6l0.5-0.3L11.6,3H15v1v1v2H3l-1,4V5H8z M15.4,17H2.6l2-8H15h2%0D%0A%09h0.4L15.4,17z\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-folder-icon-size, 1.6rem);background-position:center}.icon.object-icon{background:var(--flat-tree-object-icon, url('data:image/svg+xml,<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M6 9H10V7H6V9Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M6 4V6H14V4H6Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M6 12H10V10H6V12Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M17 1H3V19H13L17 15V1ZM13 15V17H5V3H15V15H13Z\" fill=\"%2346494D\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-object-icon-size, 1.6rem);background-position:center}.icon.expand-collapse-icon.expand-more-icon{background:var(--flat-tree-node-expand-icon, url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M7.81235 5.64988C7.48497 5.38797 7 5.62106 7 6.04031L7 11.9597C7 12.3789 7.48497 12.612 7.81235 12.3501L11.512 9.39043C11.7622 9.19027 11.7622 8.80973 11.512 8.60957L7.81235 5.64988Z\" fill=\"%23ADADAD\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-expand-collapse-icon-size, 1.8rem);background-position:center}.icon.expand-collapse-icon.collapse-icon{background:var(--flat-tree-node-collapse-icon, url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M12.3501 7.81235C12.612 7.48497 12.3789 7 11.9597 7H6.04031C5.62106 7 5.38797 7.48497 5.64988 7.81235L8.60957 11.512C8.80973 11.7622 9.19027 11.7622 9.39043 11.512L12.3501 7.81235Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-expand-collapse-icon-size, 1.8rem);background-position:center}\n"], dependencies: [{ kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i1.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: CdkTreeModule }, { kind: "component", type: i3.CdkTree, selector: "cdk-tree", inputs: ["dataSource", "treeControl", "levelAccessor", "childrenAccessor", "trackBy", "expansionKey"], exportAs: ["cdkTree"] }, { kind: "directive", type: i3.CdkTreeNode, selector: "cdk-tree-node", inputs: ["role", "isExpandable", "isExpanded", "isDisabled", "cdkTreeNodeTypeaheadLabel"], outputs: ["activation", "expandedChange"], exportAs: ["cdkTreeNode"] }, { kind: "component", type: BimplusContextMenuComponent, selector: "lib-bimplus-context-menu", inputs: ["showIcons", "triggerTitle", "items", "data"], outputs: ["triggerSelected"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
282
282
  }
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: BimplusFlatTreeComponent, decorators: [{
283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusFlatTreeComponent, decorators: [{
284
284
  type: Component,
285
285
  args: [{ selector: 'lib-bimplus-flat-tree', standalone: true, imports: [MatTreeModule,
286
286
  MatButtonModule,
@@ -288,7 +288,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
288
288
  CdkTreeModule,
289
289
  BimplusContextMenuComponent,
290
290
  CommonModule
291
- ], template: "<div class=\"tree-container\">\r\n @if (treeTitle(); as treeTitle) {\r\n <div class=\"tree-title\">{{treeTitle}}</div>\r\n }\r\n <cdk-tree [dataSource]=\"_dataSource\" [treeControl]=\"_treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <cdk-tree-node\r\n [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"object-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n <button mat-icon-button disabled>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon object-icon\" *ngIf=\"showObjectsIcons\">\r\n </div>\r\n <span\r\n class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.objectContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.objectContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <cdk-tree-node [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node;when: _isExpendable\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"folder-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\"\r\n >\r\n <div\r\n class=\"icon expand-collapse-icon\"\r\n [class.expand-more-icon]=\"_hasChildren(node) && !_treeControl.isExpanded(node)\"\r\n [class.collapse-icon]=\"_hasChildren(node) && _treeControl.isExpanded(node)\"\r\n >\r\n </div>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon folder-icon\" *ngIf=\"showFoldersIcons\">\r\n </div>\r\n <span class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [class.selected-all-descendants-nodes]=\"_descendantsAllSelected(node) && _isSelected(node) && enableParentHighlighting\"\r\n [class.selected-partially-descendants-nodes]=\"_descendantsPartiallySelected(node) && enableParentHighlighting\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div class=\"node-label\">\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.folderContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.folderContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n </cdk-tree>\r\n</div>\r\n", styles: [".text-selected{color:var(--text-highlight-text-color-enabled)}.ui-icon22px{width:2.2rem;height:2.2rem;display:inline-block;float:right;border-radius:.4rem;background-position:center center;background-repeat:no-repeat;cursor:pointer}.ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat}.touch-ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat;width:3.2rem;height:3.2rem}.ui-icon-sidemenu-important{width:2.4rem!important;height:2.4rem!important;background-size:1.8rem 1.8rem!important;background-position:center center;background-repeat:no-repeat}.tree-container{background-color:var(--flat-tree-background-color, var(--flat-tree-container-background-color-enabled));width:calc(100% - 2 * var(--flat-tree-node-indent, 1rem));padding:var(--flat-tree-node-indent, 1rem);font-family:var(--flat-tree-font-family, \"Source Sans Pro\", Helvetica, Arial, tahoma, sans-serif);font-size:var(--flat-tree-font-size, 1.3rem);font-weight:var(--flat-tree-font-weight, 700);color:var(--flat-tree-container-text-color-enabled)}.tree-container>.tree-title{background-color:transparent;font-size:var(--flat-tree-title-font-size, 1.6rem);margin-bottom:1rem}.cdk-tree{background-color:transparent;width:100%}.cdk-tree>.cdk-tree-node{--mat-icon-button-touch-target-display: none;background-color:transparent;display:flex;align-items:center;cursor:pointer;line-height:var(--flat-tree-node-line-height, 2.4rem)}.cdk-tree>.cdk-tree-node.folder-node{font-weight:var(--flat-tree-folder-font-weight, 700)}.cdk-tree>.cdk-tree-node.object-node{font-weight:var(--flat-tree-object-font-weight, 400)}.cdk-tree>.cdk-tree-node>span.node-label{overflow:hidden;flex:1}.cdk-tree>.cdk-tree-node>span.node-label>div.node-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cdk-tree>.cdk-tree-node lib-bimplus-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: var(--flat-tree-node-line-height, 2.4rem);--context-menu-trigger-bkg-color: transparent;--context-menu-translate-x: 1rem}.cdk-tree>.cdk-tree-node:not(.selected-node):not(:hover) lib-bimplus-context-menu{display:none}.cdk-tree-node.dragable-node:hover{background-color:var(--flat-tree-draggable-node-background-color-hovered);background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"11\" y=\"2\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"2\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"11\" y=\"8\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"8\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"11\" y=\"14\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"14\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:var(--flat-tree-node-icon-size, 1.8rem);background-position:left center}.mat-mdc-icon-button{padding:.2rem;width:var(--flat-tree-node-line-height, 2.4rem);height:var(--flat-tree-node-line-height, 2.4rem)}.selected-node{color:var(--flat-tree-selected-node-text-color-enabled);font-weight:var(--flat-tree-selected-node-font-weight, 700)!important}.selected-all-descendants-nodes{color:var(--flat-tree-selected-node-text-color-enabled)}.selected-partially-descendants-nodes{color:var(--flat-tree-partially-selected-nodes-text-color-enabled)}.custom-drag-placeholder{height:0px}.icon{width:var(--flat-tree-node-icon-size, 1.8rem);height:var(--flat-tree-node-icon-size, 1.8rem);margin-right:.4rem;background-position:center;background-size:var(--flat-tree-node-icon-size, 1.8rem)}.icon.folder-icon{background:var(--flat-tree-folder-icon, url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0D%0A<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0D%0A<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0D%0A%09 viewBox=\"0 0 20 20\" style=\"enable-background:new 0 0 20 20;\" xml:space=\"preserve\">%0D%0A<style type=\"text/css\">%0D%0A%09.st0{fill:%23444444;}%0D%0A<\\/style>%0D%0A<path class=\"st0\" d=\"M17,7V5V4V1h-6L8,3H0v16h2h15l3-12H17z M8,5h0.6l0.5-0.3L11.6,3H15v1v1v2H3l-1,4V5H8z M15.4,17H2.6l2-8H15h2%0D%0A%09h0.4L15.4,17z\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-folder-icon-size, 1.6rem);background-position:center}.icon.object-icon{background:var(--flat-tree-object-icon, url('data:image/svg+xml,<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M6 9H10V7H6V9Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M6 4V6H14V4H6Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M6 12H10V10H6V12Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M17 1H3V19H13L17 15V1ZM13 15V17H5V3H15V15H13Z\" fill=\"%2346494D\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-object-icon-size, 1.6rem);background-position:center}.icon.expand-collapse-icon.expand-more-icon{background:var(--flat-tree-node-expand-icon, url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M7.81235 5.64988C7.48497 5.38797 7 5.62106 7 6.04031L7 11.9597C7 12.3789 7.48497 12.612 7.81235 12.3501L11.512 9.39043C11.7622 9.19027 11.7622 8.80973 11.512 8.60957L7.81235 5.64988Z\" fill=\"%23ADADAD\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-expand-collapse-icon-size, 1.8rem);background-position:center}.icon.expand-collapse-icon.collapse-icon{background:var(--flat-tree-node-collapse-icon, url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M12.3501 7.81235C12.612 7.48497 12.3789 7 11.9597 7H6.04031C5.62106 7 5.38797 7.48497 5.64988 7.81235L8.60957 11.512C8.80973 11.7622 9.19027 11.7622 9.39043 11.512L12.3501 7.81235Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-expand-collapse-icon-size, 1.8rem);background-position:center}\n"] }]
291
+ ], template: "<div class=\"tree-container\">\r\n @if (treeTitle(); as treeTitle) {\r\n <div class=\"tree-title\">{{treeTitle}}</div>\r\n }\r\n <cdk-tree [dataSource]=\"_dataSource\" [treeControl]=\"_treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <cdk-tree-node\r\n [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"object-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n <button mat-icon-button disabled>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon object-icon\" *ngIf=\"showObjectsIcons\">\r\n </div>\r\n <span\r\n class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.objectContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.objectContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <cdk-tree-node [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node;when: _isExpendable\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"folder-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\"\r\n >\r\n <div\r\n class=\"icon expand-collapse-icon\"\r\n [class.expand-more-icon]=\"_hasChildren(node) && !_treeControl.isExpanded(node)\"\r\n [class.collapse-icon]=\"_hasChildren(node) && _treeControl.isExpanded(node)\"\r\n >\r\n </div>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon folder-icon\" *ngIf=\"showFoldersIcons\">\r\n </div>\r\n <span class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [class.selected-all-descendants-nodes]=\"_descendantsAllSelected(node) && _isSelected(node) && enableParentHighlighting\"\r\n [class.selected-partially-descendants-nodes]=\"_descendantsPartiallySelected(node) && enableParentHighlighting\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div class=\"node-label\">\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.folderContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.folderContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n </cdk-tree>\r\n</div>\r\n", styles: [".text-selected{color:var(--text-highlight-text-color-enabled)}.ui-icon22px{width:2.2rem;height:2.2rem;display:inline-block;float:right;border-radius:.4rem;background-position:center center;background-repeat:no-repeat;cursor:pointer}.ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat}.touch-ui-icon-sidemenu{width:2.4rem;height:2.4rem;background-size:1.8rem 1.8rem;background-position:center center;background-repeat:no-repeat;width:3.2rem;height:3.2rem}.ui-icon-sidemenu-important{width:2.4rem!important;height:2.4rem!important;background-size:1.8rem 1.8rem!important;background-position:center center;background-repeat:no-repeat}.tree-container{background-color:var(--flat-tree-container-background-color-enabled);width:calc(100% - 2 * var(--flat-tree-node-indent, 1rem));padding:var(--flat-tree-node-indent, 1rem);font-family:var(--flat-tree-font-family, \"Source Sans Pro\", Helvetica, Arial, tahoma, sans-serif);font-size:var(--flat-tree-font-size, 1.3rem);font-weight:var(--flat-tree-font-weight, 700);color:var(--flat-tree-container-text-color-enabled)}.tree-container>.tree-title{background-color:transparent;font-size:var(--flat-tree-title-font-size, 1.6rem);margin-bottom:1rem}.cdk-tree{background-color:transparent;width:100%}.cdk-tree>.cdk-tree-node{--mat-icon-button-touch-target-display: none;background-color:transparent;display:flex;align-items:center;cursor:pointer;line-height:var(--flat-tree-node-line-height, 2.4rem)}.cdk-tree>.cdk-tree-node.folder-node{font-weight:var(--flat-tree-folder-font-weight, 700)}.cdk-tree>.cdk-tree-node.object-node{font-weight:var(--flat-tree-object-font-weight, 400)}.cdk-tree>.cdk-tree-node>span.node-label{overflow:hidden;flex:1}.cdk-tree>.cdk-tree-node>span.node-label>div.node-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cdk-tree>.cdk-tree-node lib-bimplus-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: var(--flat-tree-node-line-height, 2.4rem);--context-menu-trigger-bkg-color: transparent;--context-menu-translate-x: 1rem}.cdk-tree>.cdk-tree-node:not(.selected-node):not(:hover) lib-bimplus-context-menu{display:none}.cdk-tree-node.dragable-node:hover{background-color:var(--flat-tree-draggable-node-background-color-hovered);background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"11\" y=\"2\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"2\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"11\" y=\"8\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"8\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"11\" y=\"14\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A<rect x=\"6\" y=\"14\" width=\"2\" height=\"2\" fill=\"%237B7B7B\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;background-size:var(--flat-tree-node-icon-size, 1.8rem);background-position:left center}.mat-mdc-icon-button{padding:.2rem;width:var(--flat-tree-node-line-height, 2.4rem);height:var(--flat-tree-node-line-height, 2.4rem)}.selected-node{color:var(--flat-tree-selected-node-text-color-enabled);font-weight:var(--flat-tree-selected-node-font-weight, 700)!important}.selected-all-descendants-nodes{color:var(--flat-tree-selected-node-text-color-enabled)}.selected-partially-descendants-nodes{color:var(--flat-tree-partially-selected-nodes-text-color-enabled)}.custom-drag-placeholder{height:0px}.icon{width:var(--flat-tree-node-icon-size, 1.8rem);height:var(--flat-tree-node-icon-size, 1.8rem);margin-right:.4rem;background-position:center;background-size:var(--flat-tree-node-icon-size, 1.8rem)}.icon.folder-icon{background:var(--flat-tree-folder-icon, url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0D%0A<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0D%0A<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0D%0A%09 viewBox=\"0 0 20 20\" style=\"enable-background:new 0 0 20 20;\" xml:space=\"preserve\">%0D%0A<style type=\"text/css\">%0D%0A%09.st0{fill:%23444444;}%0D%0A<\\/style>%0D%0A<path class=\"st0\" d=\"M17,7V5V4V1h-6L8,3H0v16h2h15l3-12H17z M8,5h0.6l0.5-0.3L11.6,3H15v1v1v2H3l-1,4V5H8z M15.4,17H2.6l2-8H15h2%0D%0A%09h0.4L15.4,17z\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-folder-icon-size, 1.6rem);background-position:center}.icon.object-icon{background:var(--flat-tree-object-icon, url('data:image/svg+xml,<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M6 9H10V7H6V9Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M6 4V6H14V4H6Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M6 12H10V10H6V12Z\" fill=\"%2346494D\"/>%0D%0A<path d=\"M17 1H3V19H13L17 15V1ZM13 15V17H5V3H15V15H13Z\" fill=\"%2346494D\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-object-icon-size, 1.6rem);background-position:center}.icon.expand-collapse-icon.expand-more-icon{background:var(--flat-tree-node-expand-icon, url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M7.81235 5.64988C7.48497 5.38797 7 5.62106 7 6.04031L7 11.9597C7 12.3789 7.48497 12.612 7.81235 12.3501L11.512 9.39043C11.7622 9.19027 11.7622 8.80973 11.512 8.60957L7.81235 5.64988Z\" fill=\"%23ADADAD\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-expand-collapse-icon-size, 1.8rem);background-position:center}.icon.expand-collapse-icon.collapse-icon{background:var(--flat-tree-node-collapse-icon, url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M12.3501 7.81235C12.612 7.48497 12.3789 7 11.9597 7H6.04031C5.62106 7 5.38797 7.48497 5.64988 7.81235L8.60957 11.512C8.80973 11.7622 9.19027 11.7622 9.39043 11.512L12.3501 7.81235Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat);background-size:var(--flat-tree-expand-collapse-icon-size, 1.8rem);background-position:center}\n"] }]
292
292
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { treeDataStringified: [{
293
293
  type: Input
294
294
  }], treeTitleValue: [{
@@ -329,4 +329,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
329
329
  }], selectedNodes: [{
330
330
  type: Output
331
331
  }] } });
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1mbGF0LXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFNBQVMsRUFBVSxLQUFLLEVBQTJCLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNKLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxjQUFjLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFOUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU8sd0RBQXdELENBQUM7Ozs7OztBQXFCdEcsTUFBTSxPQUFPLHdCQUF3QjtJQUVuQyw0RUFBNEU7SUFDNUUsb0RBQW9EO0lBQ3BELElBQW1DLGNBQWMsQ0FBQyxLQUFh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QUFLLEVBQUUsb0JBQW9CLEVBQUU7Z0JBSzVCLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlLCBib29sZWFuQXR0cmlidXRlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVGVtcGxhdGVSZWYsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSwgTWF0VHJlZUZsYXR0ZW5lciwgTWF0VHJlZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgQ2RrVHJlZU1vZHVsZSwgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBmaXJlRXZlbnQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IFRyZWVOb2RlLCBGbGF0Tm9kZSwgRmxhdFRyZWVDb250ZXh0TWVudXMgfSBmcm9tICcuL2JpbXBsdXMtZmxhdC10cmVlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEJpbXBsdXNDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gICcuLi9iaW1wbHVzLWNvbnRleHQtbWVudS9iaW1wbHVzLWNvbnRleHQtbWVudS5jb21wb25lbnQnO1xyXG5cclxuaW50ZXJmYWNlIEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudEF0dHJpYnV0ZSAge1xyXG4gIFtrZXk6IHN0cmluZ106IHVua25vd247IC8vIEFkZCBpbmRleCBzaWduYXR1cmUgYWxsb3dpbmcgc3RyaW5nIGluZGV4aW5nXHJcbiAgIC8vT3RoZXIgcHJvcGVydGllcyBhbmQgbWV0aG9kcy4uLlxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iaW1wbHVzLWZsYXQtdHJlZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTWF0VHJlZU1vZHVsZVxyXG4gICAgLCBNYXRCdXR0b25Nb2R1bGVcclxuICAgICwgTWF0SWNvbk1vZHVsZVxyXG4gICAgLCBDZGtUcmVlTW9kdWxlXHJcbiAgICAsIEJpbXBsdXNDb250ZXh0TWVudUNvbXBvbmVudFxyXG4gICAgLCBDb21tb25Nb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iaW1wbHVzLWZsYXQtdHJlZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JpbXBsdXMtZmxhdC10cmVlLmNvbXBvbmVudC5sZXNzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2Vze1xyXG4gIEBJbnB1dCgpIHRyZWVEYXRhU3RyaW5naWZpZWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIC8qKiBUT0RPIHJlbW92ZSBASW5wdXQgb25jZSBzaWduYWwgaW5wdXRzIHJlbGVhc2UgZnJvbSBkZXZlbG9wZXIgcHJldmlldy4gKi9cclxuICAvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lICovXHJcbiAgQElucHV0KHsgYWxpYXM6ICd0cmVlVGl0bGUnIH0pIHNldCB0cmVlVGl0bGVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRyZWVUaXRsZS5zZXQodmFsdWUpO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJlZVRpdGxlID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICBASW5wdXQoKSBwYWRkaW5nSW5kZW50IDogc3RyaW5nID0gXCIyLjhyZW1cIlxyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBtdWx0aVNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBvbmVMZXZlbE11bHRpU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dGb2xkZXJzSWNvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd09iamVjdHNJY29uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBlbmFibGVTZWxlY3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBlbmFibGVQYXJlbnRIaWdobGlnaHRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBlbmFibGVEcmFnQW5kRHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRhdGFUZXN0UHJlZml4IDogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBjb250ZXh0TWVudXM6IEZsYXRUcmVlQ29udGV4dE1lbnVzIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XHJcblxyXG4gIGdldCB0cmVlRGF0YSgpIDogQXJyYXk8VHJlZU5vZGU+e1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2UuZGF0YTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCB0cmVlRGF0YShkYXRhOiBBcnJheTxUcmVlTm9kZT4pIHtcclxuICAgIHRoaXMudHJlZURhdGFTdHJpbmdpZmllZCA9IG51bGw7XHJcbiAgICB0aGlzLl9kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xyXG4gIH1cclxuICBcclxuICAvKiogVE9ETyByZW1vdmUgQElucHV0IG9uY2Ugc2lnbmFsIGlucHV0cyByZWxlYXNlIGZyb20gZGV2ZWxvcGVyIHByZXZpZXcuICovXHJcbiAgQElucHV0KHsgYWxpYXM6ICdjdXN0b21Ob2RlVGVtcGxhdGUnIH0pIHNldCBjdXN0b21Ob2RlVGVtcGxhdGVWYWx1ZSh2YWx1ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsKSB7XHJcbiAgICB0aGlzLmN1c3RvbU5vZGVUZW1wbGF0ZS5zZXQodmFsdWUpO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VzdG9tTm9kZVRlbXBsYXRlID0gc2lnbmFsPFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbD4obnVsbCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZE5vZGVzID0gbmV3IEV2ZW50RW1pdHRlcjxGbGF0Tm9kZVtdPigpO1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3Rpb25MaXN0OiBTZWxlY3Rpb25Nb2RlbDxGbGF0Tm9kZT4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAoZWxlbWVudCBhcyB1bmtub3duIGFzIEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudEF0dHJpYnV0ZSlbJ2dldF9ub2RlJ10gPSB0aGlzLmdldF9ub2RlLmJpbmQodGhpcyk7XHJcbiAgICAgIChlbGVtZW50IGFzIHVua25vd24gYXMgQmltcGx1c0ZsYXRUcmVlQ29tcG9uZW50QXR0cmlidXRlKVsnc2VsZWN0X25vZGUnXSA9IHRoaXMuc2VsZWN0X25vZGUuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zZWxlY3Rpb25MaXN0ID0gbmV3IFNlbGVjdGlvbk1vZGVsPEZsYXROb2RlPih0aGlzLm11bHRpU2VsZWN0IHx8IHRoaXMub25lTGV2ZWxNdWx0aVNlbGVjdCk7XHJcbiAgICBpZih0aGlzLnRyZWVEYXRhU3RyaW5naWZpZWQpe1xyXG4gICAgICB0aGlzLl9zZXROZXdEYXRhKHRoaXMudHJlZURhdGFTdHJpbmdpZmllZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmRUcmVlKCl7XHJcbiAgICB0aGlzLl90cmVlQ29udHJvbC5leHBhbmRBbGwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldE5vZGUoaWQ6IHN0cmluZywgbm9kZXM6IEFycmF5PFRyZWVOb2RlPik6IFRyZWVOb2RlIHwgbnVsbCB7XHJcbiAgICBmb3IoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG4gICAgICBpZihub2RlLmlkID09PSBpZCkge1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICBjb25zdCBfbm9kZTogVHJlZU5vZGUgfCBudWxsID0gdGhpcy5fZ2V0Tm9kZShpZCwgbm9kZS5jaGlsZHJlbik7XHJcbiAgICAgICAgaWYoX25vZGUpIHtcclxuICAgICAgICAgIHJldHVybiBfbm9kZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldF9ub2RlKGlkOiB7IGlkOiBzdHJpbmcgfSB8IHN0cmluZywgZ2V0RE9NRWxlbWVudDogYm9vbGVhbiA9IGZhbHNlKTogVHJlZU5vZGUgfCBFbGVtZW50IHwgbnVsbCB7XHJcbiAgICBpZih0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9nZXROb2RlKGlkLCB0aGlzLl9kYXRhU291cmNlLmRhdGEpO1xyXG4gICAgfVxyXG4gICAgaWYoZ2V0RE9NRWxlbWVudCkge1xyXG4gICAgICBjb25zdCBfZWxlbWVudDogRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBbbm9kZS1pZD0nJHtpZC5pZH0nXWApO1xyXG4gICAgICByZXR1cm4gX2VsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0Tm9kZShpZC5pZCwgdGhpcy5fZGF0YVNvdXJjZS5kYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3Rfbm9kZShpZDogc3RyaW5nLCBza2lwRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuX3RyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKG4gPT4gbi5pZCA9PT0gaWQpO1xyXG4gICAgaWYoIW5vZGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCF0aGlzLl9zZWxlY3Rpb25MaXN0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLm9uZUxldmVsTXVsdGlTZWxlY3QgJiYgdGhpcy5fc2VsZWN0aW9uTGlzdC5zZWxlY3RlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmKHRoaXMuX3NlbGVjdGlvbkxpc3Quc2VsZWN0ZWRbMF0ucGFyZW50ICE9PSBub2RlLnBhcmVudCkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbkxpc3QuY2xlYXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuX3NlbGVjdGlvbkxpc3QuaXNTZWxlY3RlZChub2RlKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fc2VsZWN0aW9uTGlzdC5zZWxlY3Qobm9kZSk7XHJcbiAgICBpZighdGhpcy5tdWx0aVNlbGVjdCAmJiAhdGhpcy5vbmVMZXZlbE11bHRpU2VsZWN0ICYmICFza2lwRXZlbnQpIHtcclxuICAgICAgZmlyZUV2ZW50KHRoaXMsIFwic2VsZWN0ZWROb2Rlc1wiLCB0aGlzLl9zZWxlY3Rpb25MaXN0LnNlbGVjdGVkICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZighdGhpcy5vbmVMZXZlbE11bHRpU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMuX3RvZ2dsZURlc2NlbmRhbnRzTm9kZXMobm9kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5lbmFibGVQYXJlbnRIaWdobGlnaHRpbmcpIHtcclxuICAgICAgdGhpcy5fdXBkYXRlUGFyZW50U2VsZWN0aW9ucyhub2RlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZighc2tpcEV2ZW50KXtcclxuICAgICAgZmlyZUV2ZW50KHRoaXMsIFwic2VsZWN0ZWROb2Rlc1wiLCB0aGlzLl9zZWxlY3Rpb25MaXN0LnNlbGVjdGVkICk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlc2V0X3NlbGVjdGlvbigpe1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uTGlzdD8uY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmRfbm9kZShpZCA6IHN0cmluZyl7XHJcbiAgICBjb25zdCBub2RlID0gdGhpcy5fdHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQobiA9PiBuLmlkID09PSBpZCk7XHJcbiAgICBpZighbm9kZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzX2V4cGFuZGVkKGlkIDogc3RyaW5nKXtcclxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLl90cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChuID0+IG4uaWQgPT09IGlkKTtcclxuICAgIGlmKCFub2RlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fdHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc19zZWxlY3RlZChpZCA6IHN0cmluZyl7XHJcbiAgICBpZighdGhpcy5fc2VsZWN0aW9uTGlzdClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLl90cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChuID0+IG4uaWQgPT09IGlkKTtcclxuICAgIGlmKCFub2RlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTGlzdD8uaXNTZWxlY3RlZChub2RlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE5ld0RhdGEodHJlZURhdGFTdHJpbmdpZmllZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBfdHJlZV9kYXRhID0gSlNPTi5wYXJzZSh0cmVlRGF0YVN0cmluZ2lmaWVkKTtcclxuICAgIHRoaXMuX2RhdGFTb3VyY2UuZGF0YSA9IF90cmVlX2RhdGEgPz8gW107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGFuZ2VkVHJlZURhdGEoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpIHtcclxuICAgIHRoaXMuX3NldE5ld0RhdGEoY2hhbmdlLmN1cnJlbnRWYWx1ZSlcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW3Byb3BLZXk6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9KTogdm9pZCB7XHJcbiAgICBpZihjaGFuZ2VzWydtdWx0aVNlbGVjdCddIHx8IGNoYW5nZXNbJ29uZUxldmVsTXVsdGlTZWxlY3QnXSkge1xyXG4gICAgICB0aGlzLl9zZWxlY3Rpb25MaXN0ID0gbmV3IFNlbGVjdGlvbk1vZGVsPEZsYXROb2RlPih0aGlzLm11bHRpU2VsZWN0IHx8IHRoaXMub25lTGV2ZWxNdWx0aVNlbGVjdCk7XHJcbiAgICB9XHJcbiAgICBpZihjaGFuZ2VzWyd0cmVlRGF0YVN0cmluZ2lmaWVkJ10pIHtcclxuICAgICAgdGhpcy5fY2hhbmdlZFRyZWVEYXRhKGNoYW5nZXNbJ3RyZWVEYXRhU3RyaW5naWZpZWQnXSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyYW5zZm9ybWVyID0gKG5vZGU6IFRyZWVOb2RlLCBsZXZlbDogbnVtYmVyKTogRmxhdE5vZGUgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZXhwYW5kYWJsZTogbm9kZS5jaGlsZHJlbiAhPT0gdW5kZWZpbmVkLFxyXG4gICAgICBjaGlsZHJlbl9jb3VudDogbm9kZS5jaGlsZHJlbj8ubGVuZ3RoLFxyXG4gICAgICBuYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgIGlkOiBub2RlLmlkLFxyXG4gICAgICBsZXZlbDogbGV2ZWwsXHJcbiAgICAgIHBhcmVudDogbm9kZS5wYXJlbnQsXHJcbiAgICAgIG5vZGVUeXBlOiBub2RlLm5vZGVUeXBlXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIHByb3RlY3RlZCBfdHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEZsYXROb2RlPihcclxuICAgIG5vZGUgPT4gbm9kZS5sZXZlbCxcclxuICAgIG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlLFxyXG4gICk7XHJcblxyXG4gIHByb3RlY3RlZCBfdHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxyXG4gICAgdGhpcy5fdHJhbnNmb3JtZXIsXHJcbiAgICBub2RlID0+IG5vZGUubGV2ZWwsXHJcbiAgICBub2RlID0+IG5vZGUuZXhwYW5kYWJsZSxcclxuICAgIG5vZGUgPT4gbm9kZS5jaGlsZHJlblxyXG4gICk7XHJcblxyXG4gIHByb3RlY3RlZCBfZGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UodGhpcy5fdHJlZUNvbnRyb2wsIHRoaXMuX3RyZWVGbGF0dGVuZXIpO1xyXG4gIHByb3RlY3RlZCBfaXNFeHBlbmRhYmxlID0gKF86IG51bWJlciwgbm9kZTogRmxhdE5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuICBwcm90ZWN0ZWQgX2lzQ3VzdG9tTm9kZVR5cGUobm9kZTogRmxhdE5vZGUpOiBib29sZWFue1xyXG4gICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgIT0gdW5kZWZpbmVkICYmIG5vZGUubm9kZVR5cGUgIT0gXCJcIjtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFzQ2hpbGRyZW4obm9kZTogRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgIGlmKCFub2RlLmV4cGFuZGFibGUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYobm9kZS5jaGlsZHJlbl9jb3VudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vZGUuY2hpbGRyZW5fY291bnQgPiAwXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2Rlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZTogRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgIGlmKCF0aGlzLl9zZWxlY3Rpb25MaXN0KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBfc2VsZWN0aW9uTGlzdDogU2VsZWN0aW9uTW9kZWw8RmxhdE5vZGU+ID0gdGhpcy5fc2VsZWN0aW9uTGlzdDtcclxuXHJcbiAgICBjb25zdCBfZGVzY2VuZGFudHMgPSB0aGlzLl90cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKTtcclxuICAgIGlmKF9kZXNjZW5kYW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBfZGVzY0FsbFNlbGVjdGVkID0gX2Rlc2NlbmRhbnRzLmxlbmd0aCA+IDAgJiYgX2Rlc2NlbmRhbnRzLmV2ZXJ5KChjaGlsZCkgPT4ge1xyXG4gICAgICByZXR1cm4gX3NlbGVjdGlvbkxpc3QuaXNTZWxlY3RlZChjaGlsZCk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBfZGVzY0FsbFNlbGVjdGVkO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9kZXNjZW5kYW50c1BhcnRpYWxseVNlbGVjdGVkKG5vZGU6IEZsYXROb2RlKTogYm9vbGVhbiB7XHJcbiAgICBpZighdGhpcy5fc2VsZWN0aW9uTGlzdCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBfc2VsZWN0aW9uTGlzdDogU2VsZWN0aW9uTW9kZWw8RmxhdE5vZGU+ID0gdGhpcy5fc2VsZWN0aW9uTGlzdDtcclxuXHJcbiAgICBjb25zdCBfZGVzY2VuZGFudHMgPSB0aGlzLl90cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKTtcclxuICAgIGNvbnN0IF9yZXN1bHQgPSBfZGVzY2VuZGFudHMuc29tZSgoY2hpbGQpID0+IHtcclxuICAgICAgcmV0dXJuIF9zZWxlY3Rpb25MaXN0LmlzU2VsZWN0ZWQoY2hpbGQpXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBfcmVzdWx0ICYmICF0aGlzLl9kZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdG9nZ2xlRGVzY2VuZGFudHNOb2Rlcyhub2RlOiBGbGF0Tm9kZSkge1xyXG4gICAgaWYoIXRoaXMuX3NlbGVjdGlvbkxpc3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IF9pc05vZGVTZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGlvbkxpc3QuaXNTZWxlY3RlZChub2RlKTtcclxuICAgIGlmKF9pc05vZGVTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLl9zZWxlY3Rpb25MaXN0LnNlbGVjdCguLi50aGlzLl90cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fc2VsZWN0aW9uTGlzdC5kZXNlbGVjdCguLi50aGlzLl90cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVQYXJlbnRTZWxlY3Rpb25zKG5vZGU6IEZsYXROb2RlKSB7XHJcbiAgICBpZighdGhpcy5fc2VsZWN0aW9uTGlzdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IF9wYXJlbnRJZCA9IG5vZGUucGFyZW50O1xyXG4gICAgbGV0IF9wYXJlbnROb2RlID0gdGhpcy5fdHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQobiA9PiBuLmlkID09PSBfcGFyZW50SWQpXHJcbiAgICB3aGlsZShfcGFyZW50Tm9kZSkge1xyXG4gICAgICBpZih0aGlzLl9kZXNjZW5kYW50c0FsbFNlbGVjdGVkKF9wYXJlbnROb2RlKSkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbkxpc3Quc2VsZWN0KF9wYXJlbnROb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbkxpc3QuZGVzZWxlY3QoX3BhcmVudE5vZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIF9wYXJlbnRJZCA9IF9wYXJlbnROb2RlLnBhcmVudDtcclxuICAgICAgX3BhcmVudE5vZGUgPSB0aGlzLl90cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChuID0+IG4uaWQgPT09IF9wYXJlbnRJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX3RvZ2dsZU5vZGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBGbGF0Tm9kZSkge1xyXG4gICAgaWYoIW5vZGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCF0aGlzLmVuYWJsZVNlbGVjdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIXRoaXMuX3NlbGVjdGlvbkxpc3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIGV2ZW50IGlzIGEgTW91c2VFdmVudCBiZWZvcmUgYWNjZXNzaW5nIGN0cmxLZXlcclxuICAgIGNvbnN0IGlzTW91c2VFdmVudCA9IGV2ZW50ICE9IG51bGwgJiYgZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50O1xyXG4gICAgaWYgKGlzTW91c2VFdmVudCAmJiAhZXZlbnQ/LmN0cmxLZXkpIHtcclxuICAgICAgdGhpcy5fc2VsZWN0aW9uTGlzdC5jbGVhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMub25lTGV2ZWxNdWx0aVNlbGVjdCAmJiB0aGlzLl9zZWxlY3Rpb25MaXN0LnNlbGVjdGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYodGhpcy5fc2VsZWN0aW9uTGlzdC5zZWxlY3RlZFswXS5wYXJlbnQgIT09IG5vZGUucGFyZW50KSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uTGlzdC5jbGVhcigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fc2VsZWN0aW9uTGlzdC50b2dnbGUobm9kZSk7XHJcbiAgICBpZighdGhpcy5tdWx0aVNlbGVjdCAmJiAhdGhpcy5vbmVMZXZlbE11bHRpU2VsZWN0KSB7XHJcbiAgICAgIGZpcmVFdmVudCh0aGlzLCBcInNlbGVjdGVkTm9kZXNcIiwgdGhpcy5fc2VsZWN0aW9uTGlzdC5zZWxlY3RlZCApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIXRoaXMub25lTGV2ZWxNdWx0aVNlbGVjdCkge1xyXG4gICAgICB0aGlzLl90b2dnbGVEZXNjZW5kYW50c05vZGVzKG5vZGUpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZih0aGlzLmVuYWJsZVBhcmVudEhpZ2hsaWdodGluZykge1xyXG4gICAgICB0aGlzLl91cGRhdGVQYXJlbnRTZWxlY3Rpb25zKG5vZGUpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBmaXJlRXZlbnQodGhpcywgXCJzZWxlY3RlZE5vZGVzXCIsIHRoaXMuX3NlbGVjdGlvbkxpc3Quc2VsZWN0ZWQgKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaXNTZWxlY3RlZChub2RlOiBGbGF0Tm9kZSk6IGJvb2xlYW57XHJcbiAgICBpZighdGhpcy5fc2VsZWN0aW9uTGlzdCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTGlzdD8uaXNTZWxlY3RlZChub2RlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRyZWUtY29udGFpbmVyXCI+XHJcbiAgQGlmICh0cmVlVGl0bGUoKTsgYXMgdHJlZVRpdGxlKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJlZS10aXRsZVwiPnt7dHJlZVRpdGxlfX08L2Rpdj5cclxuICB9XHJcbiAgPGNkay10cmVlIFtkYXRhU291cmNlXT1cIl9kYXRhU291cmNlXCIgW3RyZWVDb250cm9sXT1cIl90cmVlQ29udHJvbFwiPlxyXG4gICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XHJcbiAgICA8Y2RrLXRyZWUtbm9kZVxyXG4gICAgICBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cInBhZGRpbmdJbmRlbnRcIlxyXG4gICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiXHJcbiAgICAgIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICAoY2xpY2spPVwiX3RvZ2dsZU5vZGUoJGV2ZW50LCBub2RlKVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJfdG9nZ2xlTm9kZSgkZXZlbnQsIG5vZGUpXCJcclxuICAgICAgY2xhc3M9XCJvYmplY3Qtbm9kZVwiXHJcbiAgICAgIFtjbGFzcy5kcmFnYWJsZS1ub2RlXT1cImVuYWJsZURyYWdBbmREcm9wICYmIG5vZGUubGV2ZWwgPiAwXCJcclxuICAgICAgW2NsYXNzLnNlbGVjdGVkLW5vZGVdPVwiX2lzU2VsZWN0ZWQobm9kZSlcIlxyXG4gICAgICBbYXR0ci5kYXRhLXRlc3RdPVwiZGF0YVRlc3RQcmVmaXggKyBub2RlLmlkXCJcclxuICAgICAgW3RpdGxlXT1cIm5vZGUubmFtZVwiXHJcbiAgICAgIFthdHRyLm5vZGUtaWRdPVwibm9kZS5pZFwiXHJcbiAgICA+XHJcbiAgICAgIDwhLS0gdXNlIGEgZGlzYWJsZWQgYnV0dG9uIHRvIHByb3ZpZGUgcGFkZGluZyBmb3IgdHJlZSBsZWFmIC0tPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlZD5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIEBpZiAoY3VzdG9tTm9kZVRlbXBsYXRlKCkgJiYgX2lzQ3VzdG9tTm9kZVR5cGUobm9kZSkpIHtcclxuICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTm9kZVRlbXBsYXRlKClcIiBcclxuICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bm9kZTpub2RlfVwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICB9QGVsc2V7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImljb24gb2JqZWN0LWljb25cIiAqbmdJZj1cInNob3dPYmplY3RzSWNvbnNcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJub2RlLWxhYmVsXCJcclxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1ub2RlXT1cIl9pc1NlbGVjdGVkKG5vZGUpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRyYWctcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAge3tub2RlLm5hbWV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICAgIDxsaWItYmltcGx1cy1jb250ZXh0LW1lbnVcclxuICAgICAgICBbaXRlbXNdPVwiY29udGV4dE1lbnVzPy5vYmplY3RDb250ZXh0TWVudWl0ZW1zXCJcclxuICAgICAgICBbZGF0YV09XCJub2RlXCJcclxuICAgICAgICAqbmdJZj1cImNvbnRleHRNZW51cz8ub2JqZWN0Q29udGV4dE1lbnVpdGVtcz8ubGVuZ3RoXCJcclxuICAgICAgICAodHJpZ2dlclNlbGVjdGVkKT1cIl90b2dnbGVOb2RlKCRldmVudCwgbm9kZSlcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbGliLWJpbXBsdXMtY29udGV4dC1tZW51PlxyXG4gICAgPC9jZGstdHJlZS1ub2RlPlxyXG4gICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGV4cGFuZGFibGUgbm9kZXMgLS0+XHJcbiAgICA8Y2RrLXRyZWUtbm9kZSBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cInBhZGRpbmdJbmRlbnRcIlxyXG4gICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTt3aGVuOiBfaXNFeHBlbmRhYmxlXCJcclxuICAgICAgbWF0VHJlZU5vZGVQYWRkaW5nXHJcbiAgICAgIChjbGljayk9XCJfdG9nZ2xlTm9kZSgkZXZlbnQsIG5vZGUpXCJcclxuICAgICAgKGtleXByZXNzKT1cIl90b2dnbGVOb2RlKCRldmVudCwgbm9kZSlcIlxyXG4gICAgICBjbGFzcz1cImZvbGRlci1ub2RlXCJcclxuICAgICAgW2NsYXNzLmRyYWdhYmxlLW5vZGVdPVwiZW5hYmxlRHJhZ0FuZERyb3AgJiYgbm9kZS5sZXZlbCA+IDBcIlxyXG4gICAgICBbY2xhc3Muc2VsZWN0ZWQtbm9kZV09XCJfaXNTZWxlY3RlZChub2RlKVwiXHJcbiAgICAgIFthdHRyLmRhdGEtdGVzdF09XCJkYXRhVGVzdFByZWZpeCArIG5vZGUuaWRcIlxyXG4gICAgICBbdGl0bGVdPVwibm9kZS5uYW1lXCJcclxuICAgICAgW2F0dHIubm9kZS1pZF09XCJub2RlLmlkXCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIG1hdFRyZWVOb2RlVG9nZ2xlXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInVG9nZ2xlICcgKyBub2RlLm5hbWVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJpY29uIGV4cGFuZC1jb2xsYXBzZS1pY29uXCJcclxuICAgICAgICAgIFtjbGFzcy5leHBhbmQtbW9yZS1pY29uXT1cIl9oYXNDaGlsZHJlbihub2RlKSAmJiAhX3RyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIlxyXG4gICAgICAgICAgW2NsYXNzLmNvbGxhcHNlLWljb25dPVwiX2hhc0NoaWxkcmVuKG5vZGUpICYmIF90cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICBAaWYgKGN1c3RvbU5vZGVUZW1wbGF0ZSgpICYmIF9pc0N1c3RvbU5vZGVUeXBlKG5vZGUpKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBcclxuICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU5vZGVUZW1wbGF0ZSgpXCIgXHJcbiAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie25vZGU6bm9kZX1cIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgfUBlbHNle1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGZvbGRlci1pY29uXCIgKm5nSWY9XCJzaG93Rm9sZGVyc0ljb25zXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJub2RlLWxhYmVsXCJcclxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1ub2RlXT1cIl9pc1NlbGVjdGVkKG5vZGUpXCJcclxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1hbGwtZGVzY2VuZGFudHMtbm9kZXNdPVwiX2Rlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSkgJiYgX2lzU2VsZWN0ZWQobm9kZSkgJiYgZW5hYmxlUGFyZW50SGlnaGxpZ2h0aW5nXCJcclxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1wYXJ0aWFsbHktZGVzY2VuZGFudHMtbm9kZXNdPVwiX2Rlc2NlbmRhbnRzUGFydGlhbGx5U2VsZWN0ZWQobm9kZSkgJiYgZW5hYmxlUGFyZW50SGlnaGxpZ2h0aW5nXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRyYWctcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGUtbGFiZWxcIj5cclxuICAgICAgICAgICAge3tub2RlLm5hbWV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICAgIDxsaWItYmltcGx1cy1jb250ZXh0LW1lbnVcclxuICAgICAgICBbaXRlbXNdPVwiY29udGV4dE1lbnVzPy5mb2xkZXJDb250ZXh0TWVudWl0ZW1zXCJcclxuICAgICAgICBbZGF0YV09XCJub2RlXCJcclxuICAgICAgICAqbmdJZj1cImNvbnRleHRNZW51cz8uZm9sZGVyQ29udGV4dE1lbnVpdGVtcz8ubGVuZ3RoXCJcclxuICAgICAgICAodHJpZ2dlclNlbGVjdGVkKT1cIl90b2dnbGVOb2RlKCRldmVudCwgbm9kZSlcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbGliLWJpbXBsdXMtY29udGV4dC1tZW51PlxyXG4gICAgPC9jZGstdHJlZS1ub2RlPlxyXG4gIDwvY2RrLXRyZWU+XHJcbjwvZGl2PlxyXG4iXX0=
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1mbGF0LXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFNBQVMsRUFBVSxLQUFLLEVBQTJCLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNKLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxjQUFjLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFOUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU8sd0RBQXdELENBQUM7Ozs7OztBQXFCdEcsTUFBTSxPQUFPLHdCQUF3QjtJQUVuQyw0RUFBNEU7SUFDNUUsb0RBQW9EO0lBQ3BELElBQW1DLGNBQWMsQ0FBQyxLQUFh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QUFLLEVBQUUsb0JBQW9CLEVBQUU7Z0JBSzVCLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlLCBib29sZWFuQXR0cmlidXRlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVGVtcGxhdGVSZWYsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSwgTWF0VHJlZUZsYXR0ZW5lciwgTWF0VHJlZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgQ2RrVHJlZU1vZHVsZSwgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBmaXJlRXZlbnQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IFRyZWVOb2RlLCBGbGF0Tm9kZSwgRmxhdFRyZWVDb250ZXh0TWVudXMgfSBmcm9tICcuL2JpbXBsdXMtZmxhdC10cmVlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEJpbXBsdXNDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gICcuLi9iaW1wbHVzLWNvbnRleHQtbWVudS9iaW1wbHVzLWNvbnRleHQtbWVudS5jb21wb25lbnQnO1xyXG5cclxuaW50ZXJmYWNlIEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudEF0dHJpYnV0ZSAge1xyXG4gIFtrZXk6IHN0cmluZ106IHVua25vd247IC8vIEFkZCBpbmRleCBzaWduYXR1cmUgYWxsb3dpbmcgc3RyaW5nIGluZGV4aW5nXHJcbiAgIC8vT3RoZXIgcHJvcGVydGllcyBhbmQgbWV0aG9kcy4uLlxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iaW1wbHVzLWZsYXQtdHJlZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTWF0VHJlZU1vZHVsZVxyXG4gICAgLCBNYXRCdXR0b25Nb2R1bGVcclxuICAgICwgTWF0SWNvbk1vZHVsZVxyXG4gICAgLCBDZGtUcmVlTW9kdWxlXHJcbiAgICAsIEJpbXBsdXNDb250ZXh0TWVudUNvbXBvbmVudFxyXG4gICAgLCBDb21tb25Nb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iaW1wbHVzLWZsYXQtdHJlZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JpbXBsdXMtZmxhdC10cmVlLmNvbXBvbmVudC5sZXNzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2Vze1xyXG4gIEBJbnB1dCgpIHRyZWVEYXRhU3RyaW5naWZpZWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIC8qKiBUT0RPIHJlbW92ZSBASW5wdXQgb25jZSBzaWduYWwgaW5wdXRzIHJlbGVhc2UgZnJvbSBkZXZlbG9wZXIgcHJldmlldy4gKi9cclxuICAvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lICovXHJcbiAgQElucHV0KHsgYWxpYXM6ICd0cmVlVGl0bGUnIH0pIHNldCB0cmVlVGl0bGVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRyZWVUaXRsZS5zZXQodmFsdWUpO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJlZVRpdGxlID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICBASW5wdXQoKSBwYWRkaW5nSW5kZW50IDogc3RyaW5nID0gXCIyLjhyZW1cIlxyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBtdWx0aVNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBvbmVMZXZlbE11bHRpU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dGb2xkZXJzSWNvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd09iamVjdHNJY29uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBlbmFibGVTZWxlY3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBlbmFibGVQYXJlbnRIaWdobGlnaHRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBlbmFibGVEcmFnQW5kRHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRhdGFUZXN0UHJlZml4IDogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBjb250ZXh0TWVudXM6IEZsYXRUcmVlQ29udGV4dE1lbnVzIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XHJcblxyXG4gIGdldCB0cmVlRGF0YSgpIDogQXJyYXk8VHJlZU5vZGU+e1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2UuZGF0YTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCB0cmVlRGF0YShkYXRhOiBBcnJheTxUcmVlTm9kZT4pIHtcclxuICAgIHRoaXMudHJlZURhdGFTdHJpbmdpZmllZCA9IG51bGw7XHJcbiAgICB0aGlzLl9kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xyXG4gIH1cclxuICBcclxuICAvKiogVE9ETyByZW1vdmUgQElucHV0IG9uY2Ugc2lnbmFsIGlucHV0cyByZWxlYXNlIGZyb20gZGV2ZWxvcGVyIHByZXZpZXcuICovXHJcbiAgQElucHV0KHsgYWxpYXM6ICdjdXN0b21Ob2RlVGVtcGxhdGUnIH0pIHNldCBjdXN0b21Ob2RlVGVtcGxhdGVWYWx1ZSh2YWx1ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsKSB7XHJcbiAgICB0aGlzLmN1c3RvbU5vZGVUZW1wbGF0ZS5zZXQodmFsdWUpO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VzdG9tTm9kZVRlbXBsYXRlID0gc2lnbmFsPFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbD4obnVsbCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZE5vZGVzID0gbmV3IEV2ZW50RW1pdHRlcjxGbGF0Tm9kZVtdPigpO1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3Rpb25MaXN0OiBTZWxlY3Rpb25Nb2RlbDxGbGF0Tm9kZT4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAoZWxlbWVudCBhcyB1bmtub3duIGFzIEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudEF0dHJpYnV0ZSlbJ2dldF9ub2RlJ10gPSB0aGlzLmdldF9ub2RlLmJpbmQodGhpcyk7XHJcbiAgICAgIChlbGVtZW50IGFzIHVua25vd24gYXMgQmltcGx1c0ZsYXRUcmVlQ29tcG9uZW50QXR0cmlidXRlKVsnc2VsZWN0X25vZGUnXSA9IHRoaXMuc2VsZWN0X25vZGUuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zZWxlY3Rpb25MaXN0ID0gbmV3IFNlbGVjdGlvbk1vZGVsPEZsYXROb2RlPih0aGlzLm11bHRpU2VsZWN0IHx8IHRoaXMub25lTGV2ZWxNdWx0aVNlbGVjdCk7XHJcbiAgICBpZih0aGlzLnRyZWVEYXRhU3RyaW5naWZpZWQpe1xyXG4gICAgICB0aGlzLl9zZXROZXdEYXRhKHRoaXMudHJlZURhdGFTdHJpbmdpZmllZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmRUcmVlKCl7XHJcbiAgICB0aGlzLl90cmVlQ29udHJvbC5leHBhbmRBbGwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldE5vZGUoaWQ6IHN0cmluZywgbm9kZXM6IEFycmF5PFRyZWVOb2RlPik6IFRyZWVOb2RlIHwgbnVsbCB7XHJcbiAgICBmb3IoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG4gICAgICBpZihub2RlLmlkID09PSBpZCkge1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICBjb25zdCBfbm9kZTogVHJlZU5vZGUgfCBudWxsID0gdGhpcy5fZ2V0Tm9kZShpZCwgbm9kZS5jaGlsZHJlbik7XHJcbiAgICAgICAgaWYoX25vZGUpIHtcclxuICAgICAgICAgIHJldHVybiBfbm9kZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldF9ub2RlKGlkOiB7IGlkOiBzdHJpbmcgfSB8IHN0cmluZywgZ2V0RE9NRWxlbWVudDogYm9vbGVhbiA9IGZhbHNlKTogVHJlZU5vZGUgfCBFbGVtZW50IHwgbnVsbCB7XHJcbiAgICBpZih0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9nZXROb2RlKGlkLCB0aGlzLl9kYXRhU291cmNlLmRhdGEpO1xyXG4gICAgfVxyXG4gICAgaWYoZ2V0RE9NRWxlbWVudCkge1xyXG4gICAgICBjb25zdCBfZWxlbWVudDogRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBbbm9kZS1pZD0nJHtpZC5pZH0nXWApO1xyXG4gICAgICByZXR1cm4gX2VsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0Tm9kZShpZC5pZCwgdGhpcy5fZGF0YVNvdXJjZS5kYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3Rfbm9kZShpZDogc3RyaW5nLCBza2lwRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuX3RyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKG4gPT4gbi5pZCA9PT0gaWQpO1xyXG4gICAgaWYoIW5vZGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCF0aGlzLl9zZWxlY3Rpb25MaXN0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLm9uZUxldmVsTXVsdGlTZWxlY3QgJiYgdGhpcy5fc2VsZWN0aW9uTGlzdC5zZWxlY3RlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmKHRoaXMuX3NlbGVjdGlvbkxpc3Quc2VsZWN0ZWRbMF0ucGFyZW50ICE9PSBub2RlLnBhcmVudCkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbkxpc3QuY2xlYXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuX3NlbGVjdGlvbkxpc3QuaXNTZWxlY3RlZChub2RlKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fc2VsZWN0aW9uTGlzdC5zZWxlY3Qobm9kZSk7XHJcbiAgICBpZighdGhpcy5tdWx0aVNlbGVjdCAmJiAhdGhpcy5vbmVMZXZlbE11bHRpU2VsZWN0ICYmICFza2lwRXZlbnQpIHtcclxuICAgICAgZmlyZUV2ZW50KHRoaXMsIFwic2VsZWN0ZWROb2Rlc1wiLCB0aGlzLl9zZWxlY3Rpb25MaXN0LnNlbGVjdGVkICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZighdGhpcy5vbmVMZXZlbE11bHRpU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMuX3RvZ2dsZURlc2NlbmRhbnRzTm9kZXMobm9kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5lbmFibGVQYXJlbnRIaWdobGlnaHRpbmcpIHtcclxuICAgICAgdGhpcy5fdXBkYXRlUGFyZW50U2VsZWN0aW9ucyhub2RlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZighc2tpcEV2ZW50KXtcclxuICAgICAgZmlyZUV2ZW50KHRoaXMsIFwic2VsZWN0ZWROb2Rlc1wiLCB0aGlzLl9zZWxlY3Rpb25MaXN0LnNlbGVjdGVkICk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlc2V0X3NlbGVjdGlvbigpe1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uTGlzdD8uY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmRfbm9kZShpZCA6IHN0cmluZyl7XHJcbiAgICBjb25zdCBub2RlID0gdGhpcy5fdHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQobiA9PiBuLmlkID09PSBpZCk7XHJcbiAgICBpZighbm9kZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzX2V4cGFuZGVkKGlkIDogc3RyaW5nKXtcclxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLl90cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChuID0+IG4uaWQgPT09IGlkKTtcclxuICAgIGlmKCFub2RlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fdHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc19zZWxlY3RlZChpZCA6IHN0cmluZyl7XHJcbiAgICBpZighdGhpcy5fc2VsZWN0aW9uTGlzdClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLl90cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChuID0+IG4uaWQgPT09IGlkKTtcclxuICAgIGlmKCFub2RlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTGlzdD8uaXNTZWxlY3RlZChub2RlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE5ld0RhdGEodHJlZURhdGFTdHJpbmdpZmllZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBfdHJlZV9kYXRhID0gSlNPTi5wYXJzZSh0cmVlRGF0YVN0cmluZ2lmaWVkKTtcclxuICAgIHRoaXMuX2RhdGFTb3VyY2UuZGF0YSA9IF90cmVlX2RhdGEgPz8gW107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGFuZ2VkVHJlZURhdGEoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpIHtcclxuICAgIHRoaXMuX3NldE5ld0RhdGEoY2hhbmdlLmN1cnJlbnRWYWx1ZSlcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW3Byb3BLZXk6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9KTogdm9pZCB7XHJcbiAgICBpZihjaGFuZ2VzWydtdWx0aVNlbGVjdCddIHx8IGNoYW5nZXNbJ29uZUxldmVsTXVsdGlTZWxlY3QnXSkge1xyXG4gICAgICB0aGlzLl9zZWxlY3Rpb25MaXN0ID0gbmV3IFNlbGVjdGlvbk1vZGVsPEZsYXROb2RlPih0aGlzLm11bHRpU2VsZWN0IHx8IHRoaXMub25lTGV2ZWxNdWx0aVNlbGVjdCk7XHJcbiAgICB9XHJcbiAgICBpZihjaGFuZ2VzWyd0cmVlRGF0YVN0cmluZ2lmaWVkJ10pIHtcclxuICAgICAgdGhpcy5fY2hhbmdlZFRyZWVEYXRhKGNoYW5nZXNbJ3RyZWVEYXRhU3RyaW5naWZpZWQnXSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyYW5zZm9ybWVyID0gKG5vZGU6IFRyZWVOb2RlLCBsZXZlbDogbnVtYmVyKTogRmxhdE5vZGUgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZXhwYW5kYWJsZTogbm9kZS5jaGlsZHJlbiAhPT0gdW5kZWZpbmVkLFxyXG4gICAgICBjaGlsZHJlbl9jb3VudDogbm9kZS5jaGlsZHJlbj8ubGVuZ3RoLFxyXG4gICAgICBuYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgIGlkOiBub2RlLmlkLFxyXG4gICAgICBsZXZlbDogbGV2ZWwsXHJcbiAgICAgIHBhcmVudDogbm9kZS5wYXJlbnQsXHJcbiAgICAgIG5vZGVUeXBlOiBub2RlLm5vZGVUeXBlXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIHByb3RlY3RlZCBfdHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEZsYXROb2RlPihcclxuICAgIG5vZGUgPT4gbm9kZS5sZXZlbCxcclxuICAgIG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlLFxyXG4gICk7XHJcblxyXG4gIHByb3RlY3RlZCBfdHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxyXG4gICAgdGhpcy5fdHJhbnNmb3JtZXIsXHJcbiAgICBub2RlID0+IG5vZGUubGV2ZWwsXHJcbiAgICBub2RlID0+IG5vZGUuZXhwYW5kYWJsZSxcclxuICAgIG5vZGUgPT4gbm9kZS5jaGlsZHJlblxyXG4gICk7XHJcblxyXG4gIHByb3RlY3RlZCBfZGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UodGhpcy5fdHJlZUNvbnRyb2wsIHRoaXMuX3RyZWVGbGF0dGVuZXIpO1xyXG4gIHByb3RlY3RlZCBfaXNFeHBlbmRhYmxlID0gKF86IG51bWJlciwgbm9kZTogRmxhdE5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuICBwcm90ZWN0ZWQgX2lzQ3VzdG9tTm9kZVR5cGUobm9kZTogRmxhdE5vZGUpOiBib29sZWFue1xyXG4gICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgIT0gdW5kZWZpbmVkICYmIG5vZGUubm9kZVR5cGUgIT0gXCJcIjtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaGFzQ2hpbGRyZW4obm9kZTogRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgIGlmKCFub2RlLmV4cGFuZGFibGUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYobm9kZS5jaGlsZHJlbl9jb3VudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vZGUuY2hpbGRyZW5fY291bnQgPiAwXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2Rlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZTogRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgIGlmKCF0aGlzLl9zZWxlY3Rpb25MaXN0KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBfc2VsZWN0aW9uTGlzdDogU2VsZWN0aW9uTW9kZWw8RmxhdE5vZGU+ID0gdGhpcy5fc2VsZWN0aW9uTGlzdDtcclxuXHJcbiAgICBjb25zdCBfZGVzY2VuZGFudHMgPSB0aGlzLl90cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKTtcclxuICAgIGlmKF9kZXNjZW5kYW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBfZGVzY0FsbFNlbGVjdGVkID0gX2Rlc2NlbmRhbnRzLmxlbmd0aCA+IDAgJiYgX2Rlc2NlbmRhbnRzLmV2ZXJ5KChjaGlsZCkgPT4ge1xyXG4gICAgICByZXR1cm4gX3NlbGVjdGlvbkxpc3QuaXNTZWxlY3RlZChjaGlsZCk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBfZGVzY0FsbFNlbGVjdGVkO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9kZXNjZW5kYW50c1BhcnRpYWxseVNlbGVjdGVkKG5vZGU6IEZsYXROb2RlKTogYm9vbGVhbiB7XHJcbiAgICBpZighdGhpcy5fc2VsZWN0aW9uTGlzdCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBfc2VsZWN0aW9uTGlzdDogU2VsZWN0aW9uTW9kZWw8RmxhdE5vZGU+ID0gdGhpcy5fc2VsZWN0aW9uTGlzdDtcclxuXHJcbiAgICBjb25zdCBfZGVzY2VuZGFudHMgPSB0aGlzLl90cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKTtcclxuICAgIGNvbnN0IF9yZXN1bHQgPSBfZGVzY2VuZGFudHMuc29tZSgoY2hpbGQpID0+IHtcclxuICAgICAgcmV0dXJuIF9zZWxlY3Rpb25MaXN0LmlzU2VsZWN0ZWQoY2hpbGQpXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBfcmVzdWx0ICYmICF0aGlzLl9kZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdG9nZ2xlRGVzY2VuZGFudHNOb2Rlcyhub2RlOiBGbGF0Tm9kZSkge1xyXG4gICAgaWYoIXRoaXMuX3NlbGVjdGlvbkxpc3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IF9pc05vZGVTZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGlvbkxpc3QuaXNTZWxlY3RlZChub2RlKTtcclxuICAgIGlmKF9pc05vZGVTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLl9zZWxlY3Rpb25MaXN0LnNlbGVjdCguLi50aGlzLl90cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fc2VsZWN0aW9uTGlzdC5kZXNlbGVjdCguLi50aGlzLl90cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVQYXJlbnRTZWxlY3Rpb25zKG5vZGU6IEZsYXROb2RlKSB7XHJcbiAgICBpZighdGhpcy5fc2VsZWN0aW9uTGlzdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IF9wYXJlbnRJZCA9IG5vZGUucGFyZW50O1xyXG4gICAgbGV0IF9wYXJlbnROb2RlID0gdGhpcy5fdHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQobiA9PiBuLmlkID09PSBfcGFyZW50SWQpXHJcbiAgICB3aGlsZShfcGFyZW50Tm9kZSkge1xyXG4gICAgICBpZih0aGlzLl9kZXNjZW5kYW50c0FsbFNlbGVjdGVkKF9wYXJlbnROb2RlKSkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbkxpc3Quc2VsZWN0KF9wYXJlbnROb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbkxpc3QuZGVzZWxlY3QoX3BhcmVudE5vZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIF9wYXJlbnRJZCA9IF9wYXJlbnROb2RlLnBhcmVudDtcclxuICAgICAgX3BhcmVudE5vZGUgPSB0aGlzLl90cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChuID0+IG4uaWQgPT09IF9wYXJlbnRJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX3RvZ2dsZU5vZGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBGbGF0Tm9kZSkge1xyXG4gICAgaWYoIW5vZGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCF0aGlzLmVuYWJsZVNlbGVjdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIXRoaXMuX3NlbGVjdGlvbkxpc3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIGV2ZW50IGlzIGEgTW91c2VFdmVudCBiZWZvcmUgYWNjZXNzaW5nIGN0cmxLZXlcclxuICAgIGNvbnN0IGlzTW91c2VFdmVudCA9IGV2ZW50ICE9IG51bGwgJiYgZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50O1xyXG4gICAgaWYgKGlzTW91c2VFdmVudCAmJiAhZXZlbnQ/LmN0cmxLZXkpIHtcclxuICAgICAgdGhpcy5fc2VsZWN0aW9uTGlzdC5jbGVhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMub25lTGV2ZWxNdWx0aVNlbGVjdCAmJiB0aGlzLl9zZWxlY3Rpb25MaXN0LnNlbGVjdGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYodGhpcy5fc2VsZWN0aW9uTGlzdC5zZWxlY3RlZFswXS5wYXJlbnQgIT09IG5vZGUucGFyZW50KSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uTGlzdC5jbGVhcigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fc2VsZWN0aW9uTGlzdC50b2dnbGUobm9kZSk7XHJcbiAgICBpZighdGhpcy5tdWx0aVNlbGVjdCAmJiAhdGhpcy5vbmVMZXZlbE11bHRpU2VsZWN0KSB7XHJcbiAgICAgIGZpcmVFdmVudCh0aGlzLCBcInNlbGVjdGVkTm9kZXNcIiwgdGhpcy5fc2VsZWN0aW9uTGlzdC5zZWxlY3RlZCApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIXRoaXMub25lTGV2ZWxNdWx0aVNlbGVjdCkge1xyXG4gICAgICB0aGlzLl90b2dnbGVEZXNjZW5kYW50c05vZGVzKG5vZGUpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZih0aGlzLmVuYWJsZVBhcmVudEhpZ2hsaWdodGluZykge1xyXG4gICAgICB0aGlzLl91cGRhdGVQYXJlbnRTZWxlY3Rpb25zKG5vZGUpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBmaXJlRXZlbnQodGhpcywgXCJzZWxlY3RlZE5vZGVzXCIsIHRoaXMuX3NlbGVjdGlvbkxpc3Quc2VsZWN0ZWQgKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaXNTZWxlY3RlZChub2RlOiBGbGF0Tm9kZSk6IGJvb2xlYW57XHJcbiAgICBpZighdGhpcy5fc2VsZWN0aW9uTGlzdCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTGlzdD8uaXNTZWxlY3RlZChub2RlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRyZWUtY29udGFpbmVyXCI+XHJcbiAgQGlmICh0cmVlVGl0bGUoKTsgYXMgdHJlZVRpdGxlKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJlZS10aXRsZVwiPnt7dHJlZVRpdGxlfX08L2Rpdj5cclxuICB9XHJcbiAgPGNkay10cmVlIFtkYXRhU291cmNlXT1cIl9kYXRhU291cmNlXCIgW3RyZWVDb250cm9sXT1cIl90cmVlQ29udHJvbFwiPlxyXG4gICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XHJcbiAgICA8Y2RrLXRyZWUtbm9kZVxyXG4gICAgICBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cInBhZGRpbmdJbmRlbnRcIlxyXG4gICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiXHJcbiAgICAgIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICAoY2xpY2spPVwiX3RvZ2dsZU5vZGUoJGV2ZW50LCBub2RlKVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJfdG9nZ2xlTm9kZSgkZXZlbnQsIG5vZGUpXCJcclxuICAgICAgY2xhc3M9XCJvYmplY3Qtbm9kZVwiXHJcbiAgICAgIFtjbGFzcy5kcmFnYWJsZS1ub2RlXT1cImVuYWJsZURyYWdBbmREcm9wICYmIG5vZGUubGV2ZWwgPiAwXCJcclxuICAgICAgW2NsYXNzLnNlbGVjdGVkLW5vZGVdPVwiX2lzU2VsZWN0ZWQobm9kZSlcIlxyXG4gICAgICBbYXR0ci5kYXRhLXRlc3RdPVwiZGF0YVRlc3RQcmVmaXggKyBub2RlLmlkXCJcclxuICAgICAgW3RpdGxlXT1cIm5vZGUubmFtZVwiXHJcbiAgICAgIFthdHRyLm5vZGUtaWRdPVwibm9kZS5pZFwiXHJcbiAgICA+XHJcbiAgICAgIDwhLS0gdXNlIGEgZGlzYWJsZWQgYnV0dG9uIHRvIHByb3ZpZGUgcGFkZGluZyBmb3IgdHJlZSBsZWFmIC0tPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlZD5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIEBpZiAoY3VzdG9tTm9kZVRlbXBsYXRlKCkgJiYgX2lzQ3VzdG9tTm9kZVR5cGUobm9kZSkpIHtcclxuICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTm9kZVRlbXBsYXRlKClcIiBcclxuICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bm9kZTpub2RlfVwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICB9QGVsc2V7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImljb24gb2JqZWN0LWljb25cIiAqbmdJZj1cInNob3dPYmplY3RzSWNvbnNcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJub2RlLWxhYmVsXCJcclxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1ub2RlXT1cIl9pc1NlbGVjdGVkKG5vZGUpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRyYWctcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAge3tub2RlLm5hbWV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICAgIDxsaWItYmltcGx1cy1jb250ZXh0LW1lbnVcclxuICAgICAgICBbaXRlbXNdPVwiY29udGV4dE1lbnVzPy5vYmplY3RDb250ZXh0TWVudWl0ZW1zXCJcclxuICAgICAgICBbZGF0YV09XCJub2RlXCJcclxuICAgICAgICAqbmdJZj1cImNvbnRleHRNZW51cz8ub2JqZWN0Q29udGV4dE1lbnVpdGVtcz8ubGVuZ3RoXCJcclxuICAgICAgICAodHJpZ2dlclNlbGVjdGVkKT1cIl90b2dnbGVOb2RlKCRldmVudCwgbm9kZSlcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbGliLWJpbXBsdXMtY29udGV4dC1tZW51PlxyXG4gICAgPC9jZGstdHJlZS1ub2RlPlxyXG4gICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGV4cGFuZGFibGUgbm9kZXMgLS0+XHJcbiAgICA8Y2RrLXRyZWUtbm9kZSBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cInBhZGRpbmdJbmRlbnRcIlxyXG4gICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTt3aGVuOiBfaXNFeHBlbmRhYmxlXCJcclxuICAgICAgbWF0VHJlZU5vZGVQYWRkaW5nXHJcbiAgICAgIChjbGljayk9XCJfdG9nZ2xlTm9kZSgkZXZlbnQsIG5vZGUpXCJcclxuICAgICAgKGtleXByZXNzKT1cIl90b2dnbGVOb2RlKCRldmVudCwgbm9kZSlcIlxyXG4gICAgICBjbGFzcz1cImZvbGRlci1ub2RlXCJcclxuICAgICAgW2NsYXNzLmRyYWdhYmxlLW5vZGVdPVwiZW5hYmxlRHJhZ0FuZERyb3AgJiYgbm9kZS5sZXZlbCA+IDBcIlxyXG4gICAgICBbY2xhc3Muc2VsZWN0ZWQtbm9kZV09XCJfaXNTZWxlY3RlZChub2RlKVwiXHJcbiAgICAgIFthdHRyLmRhdGEtdGVzdF09XCJkYXRhVGVzdFByZWZpeCArIG5vZGUuaWRcIlxyXG4gICAgICBbdGl0bGVdPVwibm9kZS5uYW1lXCJcclxuICAgICAgW2F0dHIubm9kZS1pZF09XCJub2RlLmlkXCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIG1hdFRyZWVOb2RlVG9nZ2xlXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInVG9nZ2xlICcgKyBub2RlLm5hbWVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJpY29uIGV4cGFuZC1jb2xsYXBzZS1pY29uXCJcclxuICAgICAgICAgIFtjbGFzcy5leHBhbmQtbW9yZS1pY29uXT1cIl9oYXNDaGlsZHJlbihub2RlKSAmJiAhX3RyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIlxyXG4gICAgICAgICAgW2NsYXNzLmNvbGxhcHNlLWljb25dPVwiX2hhc0NoaWxkcmVuKG5vZGUpICYmIF90cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICBAaWYgKGN1c3RvbU5vZGVUZW1wbGF0ZSgpICYmIF9pc0N1c3RvbU5vZGVUeXBlKG5vZGUpKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBcclxuICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU5vZGVUZW1wbGF0ZSgpXCIgXHJcbiAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie25vZGU6bm9kZX1cIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgfUBlbHNle1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGZvbGRlci1pY29uXCIgKm5nSWY9XCJzaG93Rm9sZGVyc0ljb25zXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJub2RlLWxhYmVsXCJcclxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1ub2RlXT1cIl9pc1NlbGVjdGVkKG5vZGUpXCJcclxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1hbGwtZGVzY2VuZGFudHMtbm9kZXNdPVwiX2Rlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSkgJiYgX2lzU2VsZWN0ZWQobm9kZSkgJiYgZW5hYmxlUGFyZW50SGlnaGxpZ2h0aW5nXCJcclxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1wYXJ0aWFsbHktZGVzY2VuZGFudHMtbm9kZXNdPVwiX2Rlc2NlbmRhbnRzUGFydGlhbGx5U2VsZWN0ZWQobm9kZSkgJiYgZW5hYmxlUGFyZW50SGlnaGxpZ2h0aW5nXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRyYWctcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGUtbGFiZWxcIj5cclxuICAgICAgICAgICAge3tub2RlLm5hbWV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICAgIDxsaWItYmltcGx1cy1jb250ZXh0LW1lbnVcclxuICAgICAgICBbaXRlbXNdPVwiY29udGV4dE1lbnVzPy5mb2xkZXJDb250ZXh0TWVudWl0ZW1zXCJcclxuICAgICAgICBbZGF0YV09XCJub2RlXCJcclxuICAgICAgICAqbmdJZj1cImNvbnRleHRNZW51cz8uZm9sZGVyQ29udGV4dE1lbnVpdGVtcz8ubGVuZ3RoXCJcclxuICAgICAgICAodHJpZ2dlclNlbGVjdGVkKT1cIl90b2dnbGVOb2RlKCRldmVudCwgbm9kZSlcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbGliLWJpbXBsdXMtY29udGV4dC1tZW51PlxyXG4gICAgPC9jZGstdHJlZS1ub2RlPlxyXG4gIDwvY2RrLXRyZWU+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1mbGF0LXRyZWUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaW1wbHVzQ29udGV4dE1lbnVJdGVtIH0gZnJvbSAgJy4uL2JpbXBsdXMtY29udGV4dC1tZW51L2JpbXBsdXMtY29udGV4dC1tZW51LmludGVyZmFjZSdcblxuZXhwb3J0IGludGVyZmFjZSBUcmVlTm9kZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgY2hpbGRyZW4/OiBBcnJheTxUcmVlTm9kZT47XG4gIGlkOiBzdHJpbmc7XG4gIHBhcmVudD86IHN0cmluZztcbiAgbm9kZVR5cGU/OiBzdHJpbmc7XG59XG5cbi8vIEZsYXQgbm9kZSB3aXRoIGV4cGFuZGFibGUgYW5kIGxldmVsIGluZm9ybWF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIEZsYXROb2RlIHtcbiAgZXhwYW5kYWJsZTogYm9vbGVhbjtcbiAgY2hpbGRyZW5fY291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgbmFtZTogc3RyaW5nO1xuICBsZXZlbDogbnVtYmVyO1xuICBpZDogc3RyaW5nO1xuICBwYXJlbnQ/OiBzdHJpbmc7XG4gIG5vZGVUeXBlPzogc3RyaW5nO1xufVxuXG4vLyBGbGF0IHRyZWUgY29udGV4dCBtZW51c1xuZXhwb3J0IGludGVyZmFjZSBGbGF0VHJlZUNvbnRleHRNZW51cyB7XG4gIG9iamVjdENvbnRleHRNZW51aXRlbXM/OiBBcnJheTxCaW1wbHVzQ29udGV4dE1lbnVJdGVtPjtcbiAgZm9sZGVyQ29udGV4dE1lbnVpdGVtcz86IEFycmF5PEJpbXBsdXNDb250ZXh0TWVudUl0ZW0+O1xufSJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1mbGF0LXRyZWUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaW1wbHVzQ29udGV4dE1lbnVJdGVtIH0gZnJvbSAgJy4uL2JpbXBsdXMtY29udGV4dC1tZW51L2JpbXBsdXMtY29udGV4dC1tZW51LmludGVyZmFjZSdcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJlZU5vZGUge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjaGlsZHJlbj86IEFycmF5PFRyZWVOb2RlPjtcclxuICBpZDogc3RyaW5nO1xyXG4gIHBhcmVudD86IHN0cmluZztcclxuICBub2RlVHlwZT86IHN0cmluZztcclxufVxyXG5cclxuLy8gRmxhdCBub2RlIHdpdGggZXhwYW5kYWJsZSBhbmQgbGV2ZWwgaW5mb3JtYXRpb25cclxuZXhwb3J0IGludGVyZmFjZSBGbGF0Tm9kZSB7XHJcbiAgZXhwYW5kYWJsZTogYm9vbGVhbjtcclxuICBjaGlsZHJlbl9jb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBsZXZlbDogbnVtYmVyO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgcGFyZW50Pzogc3RyaW5nO1xyXG4gIG5vZGVUeXBlPzogc3RyaW5nO1xyXG59XHJcblxyXG4vLyBGbGF0IHRyZWUgY29udGV4dCBtZW51c1xyXG5leHBvcnQgaW50ZXJmYWNlIEZsYXRUcmVlQ29udGV4dE1lbnVzIHtcclxuICBvYmplY3RDb250ZXh0TWVudWl0ZW1zPzogQXJyYXk8QmltcGx1c0NvbnRleHRNZW51SXRlbT47XHJcbiAgZm9sZGVyQ29udGV4dE1lbnVpdGVtcz86IEFycmF5PEJpbXBsdXNDb250ZXh0TWVudUl0ZW0+O1xyXG59Il19