ngx-bimplus-components 0.0.78 → 0.0.80

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 (207) hide show
  1. package/assets/images/27_Center_Menu.svg +3 -3
  2. package/assets/images/27_Center_Menu_active.svg +3 -3
  3. package/assets/images/27_Center_Menu_opened.svg +14 -14
  4. package/assets/images/6-dots-gray.svg +10 -10
  5. package/assets/images/6_dots_gray.svg +8 -8
  6. package/assets/images/Add_Issue_active.svg +12 -12
  7. package/assets/images/Add_Issue_disabled.svg +12 -12
  8. package/assets/images/Allplan-Cloud-Viewer-Logo.svg +17 -17
  9. package/assets/images/Allplan-Connexis-Logo.svg +8 -8
  10. package/assets/images/Allplan_Bimplus_Logo.svg +14 -14
  11. package/assets/images/Fullscreen_active.svg +6 -6
  12. package/assets/images/Fullscreen_disabled.svg +8 -8
  13. package/assets/images/Hide_active.svg +12 -12
  14. package/assets/images/Hide_disabled.svg +12 -12
  15. package/assets/images/IsolateMenuClipped.svg +19 -19
  16. package/assets/images/IsolateMenuClipped_orange.svg +19 -19
  17. package/assets/images/IsolateMenuHidden.svg +8 -8
  18. package/assets/images/IsolateMenuHidden_orange.svg +8 -8
  19. package/assets/images/IsolateMenuNormal.svg +29 -29
  20. package/assets/images/IsolateMenuNormal_orange.svg +29 -29
  21. package/assets/images/IsolationMenuParams.svg +5 -5
  22. package/assets/images/IsolationMenuParamsOrange.svg +5 -5
  23. package/assets/images/Isolation_active.svg +12 -12
  24. package/assets/images/Isolation_disabled.svg +12 -12
  25. package/assets/images/Markup_active.svg +11 -11
  26. package/assets/images/Markup_disabled.svg +11 -11
  27. package/assets/images/Navigation_Map_active.svg +3 -3
  28. package/assets/images/Navigation_Map_disabled.svg +5 -5
  29. package/assets/images/Project_Navigation_active.svg +10 -10
  30. package/assets/images/Project_Navigation_disabled.svg +10 -10
  31. package/assets/images/Quantity_active.svg +3 -3
  32. package/assets/images/Quantity_disabled.svg +5 -5
  33. package/assets/images/Reset_active.svg +10 -10
  34. package/assets/images/Reset_disabled.svg +10 -10
  35. package/assets/images/Section_active.svg +3 -3
  36. package/assets/images/Section_disabled.svg +5 -5
  37. package/assets/images/Spinner_18_disabled.svg +15 -15
  38. package/assets/images/View_active.svg +4 -4
  39. package/assets/images/View_disabled.svg +6 -6
  40. package/assets/images/bimplus_Components_Account_Settings.svg +14 -14
  41. package/assets/images/bimplus_Components_Autoconverter.svg +14 -14
  42. package/assets/images/bimplus_Components_Autoconverter_Active.svg +14 -14
  43. package/assets/images/bimplus_Components_Autoconverter_Disabled.svg +14 -14
  44. package/assets/images/bimplus_Components_BIM_Explorer.svg +18 -18
  45. package/assets/images/bimplus_Components_BIM_Explorer_Active.svg +18 -18
  46. package/assets/images/bimplus_Components_BIM_Explorer_Disabled.svg +18 -18
  47. package/assets/images/bimplus_Components_Clear_Cache.svg +16 -16
  48. package/assets/images/bimplus_Components_Close.svg +3 -3
  49. package/assets/images/bimplus_Components_Connexis.svg +4 -4
  50. package/assets/images/bimplus_Components_Connexis_Active.svg +4 -4
  51. package/assets/images/bimplus_Components_Connexis_Disabled.svg +4 -4
  52. package/assets/images/bimplus_Components_Desktop_Mode.svg +15 -15
  53. package/assets/images/bimplus_Components_Documents.svg +14 -14
  54. package/assets/images/bimplus_Components_Documents_Active.svg +14 -14
  55. package/assets/images/bimplus_Components_Documents_Disabled.svg +14 -14
  56. package/assets/images/bimplus_Components_Edit_Profile.svg +8 -8
  57. package/assets/images/bimplus_Components_Forum.svg +10 -10
  58. package/assets/images/bimplus_Components_IFC_viewer.svg +9 -9
  59. package/assets/images/bimplus_Components_IFC_viewer_Active.svg +16 -16
  60. package/assets/images/bimplus_Components_IFC_viewer_Disabled.svg +9 -9
  61. package/assets/images/bimplus_Components_ISO.svg +3 -3
  62. package/assets/images/bimplus_Components_ISO_Active.svg +3 -3
  63. package/assets/images/bimplus_Components_ISO_Disabled.svg +3 -3
  64. package/assets/images/bimplus_Components_Info.svg +16 -16
  65. package/assets/images/bimplus_Components_Info_Active.svg +16 -16
  66. package/assets/images/bimplus_Components_Languages.svg +5 -5
  67. package/assets/images/bimplus_Components_Logout.svg +12 -12
  68. package/assets/images/bimplus_Components_Models.svg +3 -3
  69. package/assets/images/bimplus_Components_Models_Active.svg +3 -3
  70. package/assets/images/bimplus_Components_Models_Disabled.svg +3 -3
  71. package/assets/images/bimplus_Components_Notify_Alert.svg +6 -6
  72. package/assets/images/bimplus_Components_Notify_Close.svg +3 -3
  73. package/assets/images/bimplus_Components_Notify_Empty.svg +5 -5
  74. package/assets/images/bimplus_Components_Notify_Main.svg +5 -5
  75. package/assets/images/bimplus_Components_Notify_Tick_Up.svg +3 -3
  76. package/assets/images/bimplus_Components_Projects_Folder.svg +10 -10
  77. package/assets/images/bimplus_Components_Projects_Folder_Active.svg +10 -10
  78. package/assets/images/bimplus_Components_Projects_Folder_Disabled.svg +10 -10
  79. package/assets/images/bimplus_Components_Property_Manager.svg +5 -5
  80. package/assets/images/bimplus_Components_Property_Manager_Active.svg +5 -5
  81. package/assets/images/bimplus_Components_Property_Manager_Disabled.svg +5 -5
  82. package/assets/images/bimplus_Components_Setting_Active.svg +3 -3
  83. package/assets/images/bimplus_Components_Settings.svg +3 -3
  84. package/assets/images/bimplus_Components_Settings_Disabled.svg +3 -3
  85. package/assets/images/bimplus_Components_Shop.svg +13 -13
  86. package/assets/images/bimplus_Components_Shop_Disabled.svg +13 -13
  87. package/assets/images/bimplus_Components_Support.svg +21 -21
  88. package/assets/images/bimplus_Components_Team_Members.svg +4 -4
  89. package/assets/images/bimplus_Components_Team_Members_Active.svg +4 -4
  90. package/assets/images/bimplus_Components_Touch_Mode.svg +16 -16
  91. package/assets/images/bimplus_Components_User_Guide.svg +17 -17
  92. package/assets/images/bimplus_Components_Users.svg +4 -4
  93. package/assets/images/bimplus_Components_Users_Active.svg +4 -4
  94. package/assets/images/bimplus_Components_Users_Disabled.svg +4 -4
  95. package/assets/images/bimplus_Components_Zoom.svg +5 -5
  96. package/assets/images/bimplus_Components_navbar_menu.svg +6 -6
  97. package/assets/images/bimplus_Components_navbar_menu_active.svg +6 -6
  98. package/assets/images/bimplus_Components_navbar_menu_disabled.svg +6 -6
  99. package/assets/images/bimplus_Components_submenu_arrow.svg +4 -4
  100. package/assets/images/bimplus_Remove_Conection.svg +15 -15
  101. package/assets/images/bimplus_WebIcons_Cross.svg +1 -1
  102. package/assets/images/checkbox_off.svg +3 -3
  103. package/assets/images/checkbox_off_disabled.svg +3 -3
  104. package/assets/images/checkbox_off_hovered.svg +3 -3
  105. package/assets/images/checkbox_on.svg +4 -4
  106. package/assets/images/checkbox_on_disabled.svg +4 -4
  107. package/assets/images/checkbox_on_hovered.svg +4 -4
  108. package/assets/images/cm_view_front_black.svg +4 -4
  109. package/assets/images/cm_view_front_orange.svg +4 -4
  110. package/assets/images/cm_view_perspective_black.svg +3 -3
  111. package/assets/images/cm_view_perspective_orange.svg +3 -3
  112. package/assets/images/cm_view_side_black.svg +4 -4
  113. package/assets/images/cm_view_side_orange.svg +4 -4
  114. package/assets/images/cm_view_top_black.svg +4 -4
  115. package/assets/images/cm_view_top_orange.svg +4 -4
  116. package/assets/images/collapsed_18.svg +3 -3
  117. package/assets/images/collapsed_18_small.svg +3 -3
  118. package/assets/images/expanded_18.svg +3 -3
  119. package/assets/images/expanded_18_small.svg +3 -3
  120. package/assets/images/ic_drag.svg +8 -8
  121. package/assets/images/ic_eye_black.svg +5 -5
  122. package/assets/images/ic_eye_orange.svg +5 -5
  123. package/assets/images/ic_make_transparent.svg +4 -4
  124. package/assets/images/ic_make_transparent_active.svg +4 -4
  125. package/assets/images/ic_reset.svg +3 -3
  126. package/assets/images/ic_thin_arrow_left.svg +3 -3
  127. package/assets/images/ic_toggle_off_gray.svg +4 -4
  128. package/assets/images/ic_toggle_on_green.svg +4 -4
  129. package/assets/images/ic_toggle_on_light_green.svg +4 -4
  130. package/assets/images/icon-hide-param-orange.svg +5 -5
  131. package/assets/images/icon-hide-param-white.svg +5 -5
  132. package/assets/images/resize_handle_ne.svg +4 -4
  133. package/assets/images/resize_handle_se.svg +4 -4
  134. package/assets/languages/strings_cs.json +2310 -2310
  135. package/assets/languages/strings_de.json +2310 -2310
  136. package/assets/languages/strings_en.json +2352 -2352
  137. package/assets/languages/strings_es.json +2310 -2310
  138. package/assets/languages/strings_fr.json +2310 -2310
  139. package/assets/languages/strings_it.json +2310 -2310
  140. package/assets/languages/strings_nl.json +796 -796
  141. package/assets/languages/strings_ro.json +2310 -2310
  142. package/assets/languages/strings_ru.json +2310 -2310
  143. package/assets/languages/strings_tr.json +2310 -2310
  144. package/assets/languages/strings_us.json +2263 -2263
  145. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +3 -3
  146. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +1 -1
  147. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +3 -3
  148. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.interface.mjs +1 -1
  149. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.service.mjs +1 -1
  150. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +3 -3
  151. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.interface.mjs +1 -1
  152. package/esm2022/lib/components/bimplus-contact/bimplus-contact.component.mjs +3 -3
  153. package/esm2022/lib/components/bimplus-context-menu/bimplus-context-menu.component.mjs +3 -3
  154. package/esm2022/lib/components/bimplus-context-menu/bimplus-context-menu.interface.mjs +1 -1
  155. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +3 -3
  156. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.mjs +1 -1
  157. package/esm2022/lib/components/bimplus-floating-bar/bimplus-floating-bar.component.mjs +3 -3
  158. package/esm2022/lib/components/bimplus-floating-bar/bimplus-floating-bar.interface.mjs +1 -1
  159. package/esm2022/lib/components/bimplus-floating-bar-body/bimplus-floating-bar-body.component.mjs +3 -3
  160. package/esm2022/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.mjs +3 -3
  161. package/esm2022/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.mjs +3 -3
  162. package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +3 -3
  163. package/esm2022/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.mjs +3 -3
  164. package/esm2022/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.mjs +3 -3
  165. package/esm2022/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.mjs +3 -3
  166. package/esm2022/lib/components/bimplus-language-menu/bimplus-language-menu.component.mjs +3 -3
  167. package/esm2022/lib/components/bimplus-main-menu/bimplus-main-menu.component.mjs +14 -4
  168. package/esm2022/lib/components/bimplus-navbar/bimplus-navbar.component.mjs +3 -3
  169. package/esm2022/lib/components/bimplus-navbar/logo-state.enum.mjs +1 -1
  170. package/esm2022/lib/components/bimplus-notify/bimplus-notify.component.mjs +3 -3
  171. package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +3 -3
  172. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +3 -3
  173. package/esm2022/lib/components/bimplus-object-navigator/filter-criterium/filter-criterium.component.mjs +2 -2
  174. package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +3 -3
  175. package/esm2022/lib/components/bimplus-panel-toolbar/bimplus-panel-toolbar.component.mjs +3 -3
  176. package/esm2022/lib/components/bimplus-project-menu/bimplus-project-menu.component.mjs +3 -3
  177. package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +3 -3
  178. package/esm2022/lib/components/bimplus-sidenav/bimplus-sidenav.component.mjs +3 -3
  179. package/esm2022/lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component.mjs +3 -3
  180. package/esm2022/lib/components/bimplus-storage-info/bimplus-storage-info.component.mjs +3 -3
  181. package/esm2022/lib/components/bimplus-text-message/bimplus-text-message.component.mjs +3 -3
  182. package/esm2022/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.mjs +3 -3
  183. package/esm2022/lib/components/bimplus-tool-hub/svgGenerator.mjs +1 -1
  184. package/esm2022/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.mjs +3 -3
  185. package/esm2022/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.mjs +3 -3
  186. package/esm2022/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component.mjs +3 -3
  187. package/esm2022/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.interface.mjs +1 -1
  188. package/esm2022/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.mjs +3 -3
  189. package/esm2022/lib/components/bimplus-user-menu/bimplus-user-menu.component.mjs +3 -3
  190. package/esm2022/lib/components/bimplus-zoom/bimplus-zoom.component.mjs +3 -3
  191. package/esm2022/lib/components/expansion-panel/expansion-panel.component.mjs +3 -3
  192. package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +3 -3
  193. package/esm2022/lib/components/project-models/project-models.component.mjs +3 -3
  194. package/esm2022/lib/components/project-models/project-models.interface.mjs +1 -1
  195. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +1 -1
  196. package/esm2022/lib/interfaces/bimplus-opacity-properties.interface.mjs +1 -1
  197. package/esm2022/lib/interfaces/bimplus-visibility-properties.interface.mjs +1 -1
  198. package/esm2022/lib/services/layout-manager.service.mjs +1 -1
  199. package/esm2022/lib/types/types.mjs +1 -1
  200. package/esm2022/lib/utils/filterString.mjs +1 -1
  201. package/esm2022/lib/utils/filterStructureFetcher.mjs +1 -1
  202. package/esm2022/lib/utils/utils.mjs +1 -1
  203. package/esm2022/public-api.mjs +1 -1
  204. package/fesm2022/ngx-bimplus-components.mjs +89 -79
  205. package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
  206. package/lib/components/bimplus-main-menu/bimplus-main-menu.component.d.ts +3 -1
  207. package/package.json +2 -1
@@ -199,7 +199,7 @@ export class BimplusObjectNavigatorComponent extends BimplusLocalizedWidgetCompo
199
199
  return filter;
200
200
  }
201
201
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: BimplusObjectNavigatorComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
202
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.10", type: BimplusObjectNavigatorComponent, isStandalone: true, selector: "lib-bimplus-object-navigator", inputs: { hideFilterContextMenu: "hideFilterContextMenu", filterContextMenu: "filterContextMenu", filterTypes: "filterTypes", filters: "filters", api: "api", projectId: "projectId", selectedObjectId: "selectedObjectId", selectedObjects: "selectedObjects", selectionObject: "selectionObject" }, outputs: { filterCriteriaSelectionModeChanged: "filterCriteriaSelectionModeChanged", filterResultObjectSelectionChanged: "filterResultObjectSelectionChanged", filterResultObjectDoubleClicked: "filterResultObjectDoubleClicked", filterResultObjectMouseEntered: "filterResultObjectMouseEntered", filterResultObjectMouseLeft: "filterResultObjectMouseLeft" }, host: { properties: { "class.object-navigator": "this.objNavClassClass" } }, usesInheritance: true, ngImport: i0, template: "<lib-bimplus-sidenav-drawer-content [header]=\"'_Object navigator' | translate\"\r\n [isLoading]=\"isLoadingResults\"\r\n [loadingSpinnerText]=\"'_Loading_Filter_Results' | translate\"\r\n>\r\n <div class=\"object-navigator-content-container\">\r\n @if(filterTypes.length > 0){\r\n <div class=\"description\">\r\n {{\"_Select_an_object_using_Object_Picker\" | translate}}\r\n </div>\r\n <div class=\"object-navigator-filters-type\">\r\n <ng-select data-test=\"object-navigator-filter-types-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilterType\" [clearable]=\"false\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let type of filterTypes\" [value]=\"type\">{{type.name}}</ng-option>\r\n </ng-select>\r\n </div>\r\n <div class=\"object-navigator-filters-name\">\r\n <ng-select class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilter\" [clearable]=\"false\" [disabled]=\"!filters\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let filter of filters\" [value]=\"filter\">{{filter.name}}</ng-option>\r\n </ng-select>\r\n\r\n @if(!hideFilterContextMenu){\r\n <lib-bimplus-context-menu class=\"object-navigator-filters-name-context-menu\"\r\n [items]=\"filterContextMenu\"\r\n *ngIf=\"filterContextMenu?.length\"\r\n >\r\n </lib-bimplus-context-menu>\r\n }\r\n\r\n </div>\r\n\r\n <lib-expansion-panel class=\"object-navigator-filter-criteria-panel\">\r\n <lib-expansion-panel-header>\r\n <span class=\"object-navigator-filter-criteria-header\">\r\n {{\"_Assign_Objects_Selection_Mode\" | translate}} &#40;{{filterCriteria.length}}&#41;\r\n </span>\r\n <lib-expansion-panel-header-actions>\r\n <div class=\"object-navigator-pick-object-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectObjectProperties? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n [title]=\"'_Object_Picker'| translate\"\r\n ></div>\r\n <!-- Commented until functionality will be implemented\r\n <div class=\"object-navigator-select-attributes-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectAttributes? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectAttributes)\"\r\n ></div>-->\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <div class=\"filter-criteria-container\">\r\n @for (criterium of filterCriteria; track criterium; let i = $index) {\r\n <app-filter-criterium\r\n [criterium] = \"criterium\"\r\n [indent]=\"i*0.8\"\r\n (deleteCriterium)=\"deleteFilterCriterium(i)\"\r\n ></app-filter-criterium>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n\r\n <div class=\"object-navigator-apply-button-row\">\r\n <button class=\"primary-button\" [ngClass]=\"filterCriteria.length===0 ? 'disabled' : ''\" (click)=\"applyFilter()\"> {{\"_Apply filter\" | translate}} </button>\r\n </div>\r\n\r\n <div class=\"object-navigator-separator\"></div>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(!selectedObjectId){\r\n <p id=\"NoObjectSelected\">{{ \"_NoObjectSelected\" | translate}}</p>\r\n }@else{\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-criteria-select-object-properties\r\n [api]=\"api\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [(filterCriteria)]=\"filterCriteria\"\r\n [rootObjectId]=\"selectedObjectId\"\r\n (filterCriteriaChange)=\"activateModifiedCustomFilter()\"\r\n >\r\n </lib-criteria-select-object-properties>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n @case(FilterCriteriaSelectionMode.SelectAttributes){\r\n\r\n }\r\n @default{\r\n @if (filterResult) {\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-object-filter-result\r\n [filterResult]=\"filterResult\"\r\n [selectedObjects]=\"selectedObjects\"\r\n (nodeSelectionChanged)=\"handleFilterResultSelectionChanged($event)\"\r\n (nodeDoubleClicked)=\"handleFilterResulObjectDoubleClicked($event)\"\r\n (nodeMouseEntered)=\"handleFilterResulObjectMouseEntered($event)\"\r\n (nodeMouseLeft)=\"handleFilterResulObjectMouseLeft($event)\"\r\n ></lib-object-filter-result>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @else {\r\n <div data-test=\"object-navigator-no-filter-types-message\" class=\"object-navigator-no-filter-types\"> {{\"_No_visible_models_found\" | translate}} </div>\r\n }\r\n </div>\r\n</lib-bimplus-sidenav-drawer-content>\r\n", styles: [".ng-select.ng-select-opened>.ng-select-container{background:#fff;border-color:#b3b3b3 #ccc #d9d9d9}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent #999;border-width:0 5px 5px}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #333}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-disabled>.ng-select-container{background-color:#f9f9f9}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{color:#333;background-color:#fff;border-radius:0;border:1px solid #ccc;min-height:36px;align-items:center}.ng-select .ng-select-container:hover{box-shadow:0 1px #0000000f;background-color:#f5f5f5}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}[dir=rtl] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#999}.ng-select.ng-select-single .ng-select-container{height:36px}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}[dir=rtl] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:#f9f9f9;border:1px solid #e6e6e6}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;color:#333;background-color:#fff1eb;border-radius:2px;margin-right:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid #b8dbff;border-right:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:#000}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}.ng-select .ng-clear-wrapper{color:#999}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:5px 5px 0 0}[dir=rtl] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}[dir=rtl] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#666}.ng-select .ng-arrow-wrapper .ng-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px}.ng-dropdown-panel{background-color:#fff;border:1px solid #ccc;box-shadow:0 1px #0000000f;left:0}.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.ng-dropdown-panel.ng-select-right{left:100%;top:0;border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px}.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-color:#e6e6e6;margin-top:-1px}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-dropdown-panel.ng-select-left{left:-100%;top:0;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:4px}.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid #ccc;padding:5px 7px}.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid #ccc;padding:5px 7px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:#0000008a;cursor:pointer}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5f5f5}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{color:#0000008a;background-color:#fff1eb;font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#fff;color:#000000de;padding:8px 10px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#333;background-color:#fff1eb}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#f5f5f5;color:#333}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#ccc}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}[dir=rtl] .ng-dropdown-panel{direction:rtl;text-align:right}.primary-button{text-transform:uppercase;font: 700 1rem Source Sans Pro,Helvetica,Arial,tahoma,sans-serif;display:inline-block;margin-left:.8rem;height:2.4rem;white-space:nowrap;border-radius:.2rem;vertical-align:middle;font-size:1.2rem;border:solid .2rem #fe5000;color:#fff;background-color:#fe5000;cursor:pointer}.primary-button:hover{border:solid .2rem #eb4b00;color:#fff;background-color:#eb4b00;outline:0}.primary-button.disabled{border:solid .2rem #bababa;color:#fff;background-color:#bababa;cursor:default}:host{display:flex}lib-bimplus-sidenav-drawer-content{width:100%;max-height:100%;display:flex;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container{display:flex;flex-direction:column;width:100%;max-height:100%;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.description{margin-bottom:.8rem;font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-no-filter-types{font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem;display:flex;flex-direction:row}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown{flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-filters-name-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: 2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filter-criteria-panel{flex:0;padding-top:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-apply-button-row{flex:0;display:flex;margin-top:.8rem;margin-bottom:.8rem;justify-content:flex-end}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-separator{flex:0;border-top:solid .078125em #d4d4d4;padding-bottom:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container{position:relative;flex:1;width:100%;display:flex;flex-direction:column}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container>lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}.filter-criteria-container{display:flex;flex-direction:column;width:calc(100% - 2.4rem);padding-left:2.4rem;height:14.4rem}:host(.object-navigator){height:100%;width:100%}.object-navigator-filter-action-buttons{width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-select-attributes-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M14.6 9.1l.1-3c0-2.4-.1-2.7-2.5-2.7l-3 .1c-.4.1-.7.2-1 .5L2.7 9.5c-.6.6-.6 1.6 0 2.2l3.7 3.8c.6.6 1.6.6 2.2 0l5.5-5.5c.3-.2.4-.6.5-.9zm-1.5-2.5c0 .9-.7 1.6-1.6 1.6-.9 0-1.6-.7-1.6-1.6 0-.9.7-1.6 1.6-1.6.9 0 1.6.7 1.6 1.6z\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-select-attributes-button.active{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M14.6 9.1l.1-3c0-2.4-.1-2.7-2.5-2.7l-3 .1c-.4.1-.7.2-1 .5L2.7 9.5c-.6.6-.6 1.6 0 2.2l3.7 3.8c.6.6 1.6.6 2.2 0l5.5-5.5c.3-.2.4-.6.5-.9zm-1.5-2.5c0 .9-.7 1.6-1.6 1.6-.9 0-1.6-.7-1.6-1.6S10.6 5 11.5 5c.9 0 1.6.7 1.6 1.6z\" fill=\"%23fe5000\"/></svg>')}.object-navigator-pick-object-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-pick-object-button.active{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill=\"%23fe5000\"/></svg>')}.object-navigator-filter-criteria-header{display:inline-block;text-transform:uppercase;line-height:2.4rem;font-weight:700;font-size:.9375em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "component", type: FilterCriteriumComponent, selector: "app-filter-criterium", inputs: ["criterium", "indent"], outputs: ["deleteCriterium"] }, { kind: "component", type: ExpansionPanelComponent, selector: "lib-expansion-panel", inputs: ["expanded"] }, { kind: "component", type: ExpansionPanelHeaderComponent, selector: "lib-expansion-panel-header" }, { kind: "component", type: ExpansionPanelHeaderActionsComponent, selector: "lib-expansion-panel-header-actions" }, { kind: "component", type: BimplusSidenavDrawerContentComponent, selector: "lib-bimplus-sidenav-drawer-content", inputs: ["header", "isLoading", "loadingSpinnerText"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: CriteriaSelectObjectPropertiesComponent, selector: "lib-criteria-select-object-properties", inputs: ["api", "rootObjectId", "revision", "filterCriteria"], outputs: ["filterCriteriaChange"] }, { kind: "component", type: BimplusContextMenuComponent, selector: "lib-bimplus-context-menu", inputs: ["showIcons", "triggerTitle", "items", "data"], outputs: ["triggerSelected"] }, { kind: "component", type: ObjectFilterResultComponent, selector: "lib-object-filter-result", inputs: ["filterResult", "selectedObjects"], outputs: ["nodeSelectionChanged", "nodeDoubleClicked", "nodeMouseEntered", "nodeMouseLeft"] }, { kind: "component", type: BimplusScrollableContainerComponent, selector: "lib-bimplus-scrollable-container" }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
202
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.10", type: BimplusObjectNavigatorComponent, isStandalone: true, selector: "lib-bimplus-object-navigator", inputs: { hideFilterContextMenu: "hideFilterContextMenu", filterContextMenu: "filterContextMenu", filterTypes: "filterTypes", filters: "filters", api: "api", projectId: "projectId", selectedObjectId: "selectedObjectId", selectedObjects: "selectedObjects", selectionObject: "selectionObject" }, outputs: { filterCriteriaSelectionModeChanged: "filterCriteriaSelectionModeChanged", filterResultObjectSelectionChanged: "filterResultObjectSelectionChanged", filterResultObjectDoubleClicked: "filterResultObjectDoubleClicked", filterResultObjectMouseEntered: "filterResultObjectMouseEntered", filterResultObjectMouseLeft: "filterResultObjectMouseLeft" }, host: { properties: { "class.object-navigator": "this.objNavClassClass" } }, usesInheritance: true, ngImport: i0, template: "<lib-bimplus-sidenav-drawer-content [header]=\"'_Object navigator' | translate\"\n [isLoading]=\"isLoadingResults\"\n [loadingSpinnerText]=\"'_Loading_Filter_Results' | translate\"\n>\n <div class=\"object-navigator-content-container\">\n @if(filterTypes.length > 0){\n <div class=\"description\">\n {{\"_Select_an_object_using_Object_Picker\" | translate}}\n </div>\n <div class=\"object-navigator-filters-type\">\n <ng-select data-test=\"object-navigator-filter-types-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilterType\" [clearable]=\"false\" [searchable]=\"false\">\n <ng-option *ngFor=\"let type of filterTypes\" [value]=\"type\">{{type.name}}</ng-option>\n </ng-select>\n </div>\n <div class=\"object-navigator-filters-name\">\n <ng-select class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilter\" [clearable]=\"false\" [disabled]=\"!filters\" [searchable]=\"false\">\n <ng-option *ngFor=\"let filter of filters\" [value]=\"filter\">{{filter.name}}</ng-option>\n </ng-select>\n\n @if(!hideFilterContextMenu){\n <lib-bimplus-context-menu class=\"object-navigator-filters-name-context-menu\"\n [items]=\"filterContextMenu\"\n *ngIf=\"filterContextMenu?.length\"\n >\n </lib-bimplus-context-menu>\n }\n\n </div>\n\n <lib-expansion-panel class=\"object-navigator-filter-criteria-panel\">\n <lib-expansion-panel-header>\n <span class=\"object-navigator-filter-criteria-header\">\n {{\"_Assign_Objects_Selection_Mode\" | translate}} &#40;{{filterCriteria.length}}&#41;\n </span>\n <lib-expansion-panel-header-actions>\n <div class=\"object-navigator-pick-object-button\"\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectObjectProperties? 'active' : ''\"\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\n [title]=\"'_Object_Picker'| translate\"\n ></div>\n <!-- Commented until functionality will be implemented\n <div class=\"object-navigator-select-attributes-button\"\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectAttributes? 'active' : ''\"\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectAttributes)\"\n ></div>-->\n </lib-expansion-panel-header-actions>\n </lib-expansion-panel-header>\n\n <div class=\"filter-criteria-container\">\n @for (criterium of filterCriteria; track criterium; let i = $index) {\n <app-filter-criterium\n [criterium] = \"criterium\"\n [indent]=\"i*0.8\"\n (deleteCriterium)=\"deleteFilterCriterium(i)\"\n ></app-filter-criterium>\n }\n </div>\n </lib-expansion-panel>\n\n <div class=\"object-navigator-apply-button-row\">\n <button class=\"primary-button\" [ngClass]=\"filterCriteria.length===0 ? 'disabled' : ''\" (click)=\"applyFilter()\"> {{\"_Apply filter\" | translate}} </button>\n </div>\n\n <div class=\"object-navigator-separator\"></div>\n\n @switch(filterCriteriaSelectionMode$.getValue()){\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\n @if(!selectedObjectId){\n <p id=\"NoObjectSelected\">{{ \"_NoObjectSelected\" | translate}}</p>\n }@else{\n <div class=\"scrollable-content-container\">\n <lib-bimplus-scrollable-container>\n <lib-criteria-select-object-properties\n [api]=\"api\"\n [selectedLanguage]=\"selectedLanguage\"\n [localizedStrings]=\"localizedStrings\"\n [(filterCriteria)]=\"filterCriteria\"\n [rootObjectId]=\"selectedObjectId\"\n (filterCriteriaChange)=\"activateModifiedCustomFilter()\"\n >\n </lib-criteria-select-object-properties>\n </lib-bimplus-scrollable-container>\n </div>\n }\n }\n @case(FilterCriteriaSelectionMode.SelectAttributes){\n\n }\n @default{\n @if (filterResult) {\n <div class=\"scrollable-content-container\">\n <lib-bimplus-scrollable-container>\n <lib-object-filter-result\n [filterResult]=\"filterResult\"\n [selectedObjects]=\"selectedObjects\"\n (nodeSelectionChanged)=\"handleFilterResultSelectionChanged($event)\"\n (nodeDoubleClicked)=\"handleFilterResulObjectDoubleClicked($event)\"\n (nodeMouseEntered)=\"handleFilterResulObjectMouseEntered($event)\"\n (nodeMouseLeft)=\"handleFilterResulObjectMouseLeft($event)\"\n ></lib-object-filter-result>\n </lib-bimplus-scrollable-container>\n </div>\n }\n }\n }\n }\n @else {\n <div data-test=\"object-navigator-no-filter-types-message\" class=\"object-navigator-no-filter-types\"> {{\"_No_visible_models_found\" | translate}} </div>\n }\n </div>\n</lib-bimplus-sidenav-drawer-content>\n", styles: [".ng-select.ng-select-opened>.ng-select-container{background:#fff;border-color:#b3b3b3 #ccc #d9d9d9}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent #999;border-width:0 5px 5px}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #333}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-disabled>.ng-select-container{background-color:#f9f9f9}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{color:#333;background-color:#fff;border-radius:0;border:1px solid #ccc;min-height:36px;align-items:center}.ng-select .ng-select-container:hover{box-shadow:0 1px #0000000f;background-color:#f5f5f5}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}[dir=rtl] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#999}.ng-select.ng-select-single .ng-select-container{height:36px}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}[dir=rtl] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:#f9f9f9;border:1px solid #e6e6e6}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;color:#333;background-color:#fff1eb;border-radius:2px;margin-right:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid #b8dbff;border-right:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:#000}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}.ng-select .ng-clear-wrapper{color:#999}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:5px 5px 0 0}[dir=rtl] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}[dir=rtl] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#666}.ng-select .ng-arrow-wrapper .ng-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px}.ng-dropdown-panel{background-color:#fff;border:1px solid #ccc;box-shadow:0 1px #0000000f;left:0}.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.ng-dropdown-panel.ng-select-right{left:100%;top:0;border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px}.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-color:#e6e6e6;margin-top:-1px}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-dropdown-panel.ng-select-left{left:-100%;top:0;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:4px}.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid #ccc;padding:5px 7px}.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid #ccc;padding:5px 7px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:#0000008a;cursor:pointer}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5f5f5}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{color:#0000008a;background-color:#fff1eb;font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#fff;color:#000000de;padding:8px 10px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#333;background-color:#fff1eb}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#f5f5f5;color:#333}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#ccc}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}[dir=rtl] .ng-dropdown-panel{direction:rtl;text-align:right}.primary-button{text-transform:uppercase;font: 700 1rem Source Sans Pro,Helvetica,Arial,tahoma,sans-serif;display:inline-block;margin-left:.8rem;height:2.4rem;white-space:nowrap;border-radius:.2rem;vertical-align:middle;font-size:1.2rem;border:solid .2rem #fe5000;color:#fff;background-color:#fe5000;cursor:pointer}.primary-button:hover{border:solid .2rem #eb4b00;color:#fff;background-color:#eb4b00;outline:0}.primary-button.disabled{border:solid .2rem #bababa;color:#fff;background-color:#bababa;cursor:default}:host{display:flex}lib-bimplus-sidenav-drawer-content{width:100%;max-height:100%;display:flex;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container{display:flex;flex-direction:column;width:100%;max-height:100%;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.description{margin-bottom:.8rem;font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-no-filter-types{font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem;display:flex;flex-direction:row}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown{flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-filters-name-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: 2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filter-criteria-panel{flex:0;padding-top:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-apply-button-row{flex:0;display:flex;margin-top:.8rem;margin-bottom:.8rem;justify-content:flex-end}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-separator{flex:0;border-top:solid .078125em #d4d4d4;padding-bottom:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container{position:relative;flex:1;width:100%;display:flex;flex-direction:column}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container>lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}.filter-criteria-container{display:flex;flex-direction:column;width:calc(100% - 2.4rem);padding-left:2.4rem;height:14.4rem}:host(.object-navigator){height:100%;width:100%}.object-navigator-filter-action-buttons{width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-select-attributes-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M14.6 9.1l.1-3c0-2.4-.1-2.7-2.5-2.7l-3 .1c-.4.1-.7.2-1 .5L2.7 9.5c-.6.6-.6 1.6 0 2.2l3.7 3.8c.6.6 1.6.6 2.2 0l5.5-5.5c.3-.2.4-.6.5-.9zm-1.5-2.5c0 .9-.7 1.6-1.6 1.6-.9 0-1.6-.7-1.6-1.6 0-.9.7-1.6 1.6-1.6.9 0 1.6.7 1.6 1.6z\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-select-attributes-button.active{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M14.6 9.1l.1-3c0-2.4-.1-2.7-2.5-2.7l-3 .1c-.4.1-.7.2-1 .5L2.7 9.5c-.6.6-.6 1.6 0 2.2l3.7 3.8c.6.6 1.6.6 2.2 0l5.5-5.5c.3-.2.4-.6.5-.9zm-1.5-2.5c0 .9-.7 1.6-1.6 1.6-.9 0-1.6-.7-1.6-1.6S10.6 5 11.5 5c.9 0 1.6.7 1.6 1.6z\" fill=\"%23fe5000\"/></svg>')}.object-navigator-pick-object-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-pick-object-button.active{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill=\"%23fe5000\"/></svg>')}.object-navigator-filter-criteria-header{display:inline-block;text-transform:uppercase;line-height:2.4rem;font-weight:700;font-size:.9375em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "component", type: FilterCriteriumComponent, selector: "app-filter-criterium", inputs: ["criterium", "indent"], outputs: ["deleteCriterium"] }, { kind: "component", type: ExpansionPanelComponent, selector: "lib-expansion-panel", inputs: ["expanded"] }, { kind: "component", type: ExpansionPanelHeaderComponent, selector: "lib-expansion-panel-header" }, { kind: "component", type: ExpansionPanelHeaderActionsComponent, selector: "lib-expansion-panel-header-actions" }, { kind: "component", type: BimplusSidenavDrawerContentComponent, selector: "lib-bimplus-sidenav-drawer-content", inputs: ["header", "isLoading", "loadingSpinnerText"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: CriteriaSelectObjectPropertiesComponent, selector: "lib-criteria-select-object-properties", inputs: ["api", "rootObjectId", "revision", "filterCriteria"], outputs: ["filterCriteriaChange"] }, { kind: "component", type: BimplusContextMenuComponent, selector: "lib-bimplus-context-menu", inputs: ["showIcons", "triggerTitle", "items", "data"], outputs: ["triggerSelected"] }, { kind: "component", type: ObjectFilterResultComponent, selector: "lib-object-filter-result", inputs: ["filterResult", "selectedObjects"], outputs: ["nodeSelectionChanged", "nodeDoubleClicked", "nodeMouseEntered", "nodeMouseLeft"] }, { kind: "component", type: BimplusScrollableContainerComponent, selector: "lib-bimplus-scrollable-container" }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
203
203
  }
204
204
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: BimplusObjectNavigatorComponent, decorators: [{
205
205
  type: Component,
@@ -216,7 +216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
216
216
  BimplusContextMenuComponent,
217
217
  ObjectFilterResultComponent,
218
218
  BimplusScrollableContainerComponent
219
- ], encapsulation: ViewEncapsulation.ShadowDom, template: "<lib-bimplus-sidenav-drawer-content [header]=\"'_Object navigator' | translate\"\r\n [isLoading]=\"isLoadingResults\"\r\n [loadingSpinnerText]=\"'_Loading_Filter_Results' | translate\"\r\n>\r\n <div class=\"object-navigator-content-container\">\r\n @if(filterTypes.length > 0){\r\n <div class=\"description\">\r\n {{\"_Select_an_object_using_Object_Picker\" | translate}}\r\n </div>\r\n <div class=\"object-navigator-filters-type\">\r\n <ng-select data-test=\"object-navigator-filter-types-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilterType\" [clearable]=\"false\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let type of filterTypes\" [value]=\"type\">{{type.name}}</ng-option>\r\n </ng-select>\r\n </div>\r\n <div class=\"object-navigator-filters-name\">\r\n <ng-select class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilter\" [clearable]=\"false\" [disabled]=\"!filters\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let filter of filters\" [value]=\"filter\">{{filter.name}}</ng-option>\r\n </ng-select>\r\n\r\n @if(!hideFilterContextMenu){\r\n <lib-bimplus-context-menu class=\"object-navigator-filters-name-context-menu\"\r\n [items]=\"filterContextMenu\"\r\n *ngIf=\"filterContextMenu?.length\"\r\n >\r\n </lib-bimplus-context-menu>\r\n }\r\n\r\n </div>\r\n\r\n <lib-expansion-panel class=\"object-navigator-filter-criteria-panel\">\r\n <lib-expansion-panel-header>\r\n <span class=\"object-navigator-filter-criteria-header\">\r\n {{\"_Assign_Objects_Selection_Mode\" | translate}} &#40;{{filterCriteria.length}}&#41;\r\n </span>\r\n <lib-expansion-panel-header-actions>\r\n <div class=\"object-navigator-pick-object-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectObjectProperties? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n [title]=\"'_Object_Picker'| translate\"\r\n ></div>\r\n <!-- Commented until functionality will be implemented\r\n <div class=\"object-navigator-select-attributes-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectAttributes? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectAttributes)\"\r\n ></div>-->\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <div class=\"filter-criteria-container\">\r\n @for (criterium of filterCriteria; track criterium; let i = $index) {\r\n <app-filter-criterium\r\n [criterium] = \"criterium\"\r\n [indent]=\"i*0.8\"\r\n (deleteCriterium)=\"deleteFilterCriterium(i)\"\r\n ></app-filter-criterium>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n\r\n <div class=\"object-navigator-apply-button-row\">\r\n <button class=\"primary-button\" [ngClass]=\"filterCriteria.length===0 ? 'disabled' : ''\" (click)=\"applyFilter()\"> {{\"_Apply filter\" | translate}} </button>\r\n </div>\r\n\r\n <div class=\"object-navigator-separator\"></div>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(!selectedObjectId){\r\n <p id=\"NoObjectSelected\">{{ \"_NoObjectSelected\" | translate}}</p>\r\n }@else{\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-criteria-select-object-properties\r\n [api]=\"api\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [(filterCriteria)]=\"filterCriteria\"\r\n [rootObjectId]=\"selectedObjectId\"\r\n (filterCriteriaChange)=\"activateModifiedCustomFilter()\"\r\n >\r\n </lib-criteria-select-object-properties>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n @case(FilterCriteriaSelectionMode.SelectAttributes){\r\n\r\n }\r\n @default{\r\n @if (filterResult) {\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-object-filter-result\r\n [filterResult]=\"filterResult\"\r\n [selectedObjects]=\"selectedObjects\"\r\n (nodeSelectionChanged)=\"handleFilterResultSelectionChanged($event)\"\r\n (nodeDoubleClicked)=\"handleFilterResulObjectDoubleClicked($event)\"\r\n (nodeMouseEntered)=\"handleFilterResulObjectMouseEntered($event)\"\r\n (nodeMouseLeft)=\"handleFilterResulObjectMouseLeft($event)\"\r\n ></lib-object-filter-result>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @else {\r\n <div data-test=\"object-navigator-no-filter-types-message\" class=\"object-navigator-no-filter-types\"> {{\"_No_visible_models_found\" | translate}} </div>\r\n }\r\n </div>\r\n</lib-bimplus-sidenav-drawer-content>\r\n", styles: [".ng-select.ng-select-opened>.ng-select-container{background:#fff;border-color:#b3b3b3 #ccc #d9d9d9}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent #999;border-width:0 5px 5px}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #333}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-disabled>.ng-select-container{background-color:#f9f9f9}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{color:#333;background-color:#fff;border-radius:0;border:1px solid #ccc;min-height:36px;align-items:center}.ng-select .ng-select-container:hover{box-shadow:0 1px #0000000f;background-color:#f5f5f5}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}[dir=rtl] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#999}.ng-select.ng-select-single .ng-select-container{height:36px}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}[dir=rtl] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:#f9f9f9;border:1px solid #e6e6e6}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;color:#333;background-color:#fff1eb;border-radius:2px;margin-right:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid #b8dbff;border-right:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:#000}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}.ng-select .ng-clear-wrapper{color:#999}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:5px 5px 0 0}[dir=rtl] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}[dir=rtl] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#666}.ng-select .ng-arrow-wrapper .ng-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px}.ng-dropdown-panel{background-color:#fff;border:1px solid #ccc;box-shadow:0 1px #0000000f;left:0}.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.ng-dropdown-panel.ng-select-right{left:100%;top:0;border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px}.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-color:#e6e6e6;margin-top:-1px}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-dropdown-panel.ng-select-left{left:-100%;top:0;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:4px}.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid #ccc;padding:5px 7px}.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid #ccc;padding:5px 7px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:#0000008a;cursor:pointer}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5f5f5}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{color:#0000008a;background-color:#fff1eb;font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#fff;color:#000000de;padding:8px 10px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#333;background-color:#fff1eb}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#f5f5f5;color:#333}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#ccc}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}[dir=rtl] .ng-dropdown-panel{direction:rtl;text-align:right}.primary-button{text-transform:uppercase;font: 700 1rem Source Sans Pro,Helvetica,Arial,tahoma,sans-serif;display:inline-block;margin-left:.8rem;height:2.4rem;white-space:nowrap;border-radius:.2rem;vertical-align:middle;font-size:1.2rem;border:solid .2rem #fe5000;color:#fff;background-color:#fe5000;cursor:pointer}.primary-button:hover{border:solid .2rem #eb4b00;color:#fff;background-color:#eb4b00;outline:0}.primary-button.disabled{border:solid .2rem #bababa;color:#fff;background-color:#bababa;cursor:default}:host{display:flex}lib-bimplus-sidenav-drawer-content{width:100%;max-height:100%;display:flex;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container{display:flex;flex-direction:column;width:100%;max-height:100%;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.description{margin-bottom:.8rem;font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-no-filter-types{font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem;display:flex;flex-direction:row}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown{flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-filters-name-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: 2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filter-criteria-panel{flex:0;padding-top:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-apply-button-row{flex:0;display:flex;margin-top:.8rem;margin-bottom:.8rem;justify-content:flex-end}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-separator{flex:0;border-top:solid .078125em #d4d4d4;padding-bottom:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container{position:relative;flex:1;width:100%;display:flex;flex-direction:column}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container>lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}.filter-criteria-container{display:flex;flex-direction:column;width:calc(100% - 2.4rem);padding-left:2.4rem;height:14.4rem}:host(.object-navigator){height:100%;width:100%}.object-navigator-filter-action-buttons{width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-select-attributes-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M14.6 9.1l.1-3c0-2.4-.1-2.7-2.5-2.7l-3 .1c-.4.1-.7.2-1 .5L2.7 9.5c-.6.6-.6 1.6 0 2.2l3.7 3.8c.6.6 1.6.6 2.2 0l5.5-5.5c.3-.2.4-.6.5-.9zm-1.5-2.5c0 .9-.7 1.6-1.6 1.6-.9 0-1.6-.7-1.6-1.6 0-.9.7-1.6 1.6-1.6.9 0 1.6.7 1.6 1.6z\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-select-attributes-button.active{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M14.6 9.1l.1-3c0-2.4-.1-2.7-2.5-2.7l-3 .1c-.4.1-.7.2-1 .5L2.7 9.5c-.6.6-.6 1.6 0 2.2l3.7 3.8c.6.6 1.6.6 2.2 0l5.5-5.5c.3-.2.4-.6.5-.9zm-1.5-2.5c0 .9-.7 1.6-1.6 1.6-.9 0-1.6-.7-1.6-1.6S10.6 5 11.5 5c.9 0 1.6.7 1.6 1.6z\" fill=\"%23fe5000\"/></svg>')}.object-navigator-pick-object-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-pick-object-button.active{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill=\"%23fe5000\"/></svg>')}.object-navigator-filter-criteria-header{display:inline-block;text-transform:uppercase;line-height:2.4rem;font-weight:700;font-size:.9375em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}\n"] }]
219
+ ], encapsulation: ViewEncapsulation.ShadowDom, template: "<lib-bimplus-sidenav-drawer-content [header]=\"'_Object navigator' | translate\"\n [isLoading]=\"isLoadingResults\"\n [loadingSpinnerText]=\"'_Loading_Filter_Results' | translate\"\n>\n <div class=\"object-navigator-content-container\">\n @if(filterTypes.length > 0){\n <div class=\"description\">\n {{\"_Select_an_object_using_Object_Picker\" | translate}}\n </div>\n <div class=\"object-navigator-filters-type\">\n <ng-select data-test=\"object-navigator-filter-types-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilterType\" [clearable]=\"false\" [searchable]=\"false\">\n <ng-option *ngFor=\"let type of filterTypes\" [value]=\"type\">{{type.name}}</ng-option>\n </ng-select>\n </div>\n <div class=\"object-navigator-filters-name\">\n <ng-select class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilter\" [clearable]=\"false\" [disabled]=\"!filters\" [searchable]=\"false\">\n <ng-option *ngFor=\"let filter of filters\" [value]=\"filter\">{{filter.name}}</ng-option>\n </ng-select>\n\n @if(!hideFilterContextMenu){\n <lib-bimplus-context-menu class=\"object-navigator-filters-name-context-menu\"\n [items]=\"filterContextMenu\"\n *ngIf=\"filterContextMenu?.length\"\n >\n </lib-bimplus-context-menu>\n }\n\n </div>\n\n <lib-expansion-panel class=\"object-navigator-filter-criteria-panel\">\n <lib-expansion-panel-header>\n <span class=\"object-navigator-filter-criteria-header\">\n {{\"_Assign_Objects_Selection_Mode\" | translate}} &#40;{{filterCriteria.length}}&#41;\n </span>\n <lib-expansion-panel-header-actions>\n <div class=\"object-navigator-pick-object-button\"\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectObjectProperties? 'active' : ''\"\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\n [title]=\"'_Object_Picker'| translate\"\n ></div>\n <!-- Commented until functionality will be implemented\n <div class=\"object-navigator-select-attributes-button\"\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectAttributes? 'active' : ''\"\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectAttributes)\"\n ></div>-->\n </lib-expansion-panel-header-actions>\n </lib-expansion-panel-header>\n\n <div class=\"filter-criteria-container\">\n @for (criterium of filterCriteria; track criterium; let i = $index) {\n <app-filter-criterium\n [criterium] = \"criterium\"\n [indent]=\"i*0.8\"\n (deleteCriterium)=\"deleteFilterCriterium(i)\"\n ></app-filter-criterium>\n }\n </div>\n </lib-expansion-panel>\n\n <div class=\"object-navigator-apply-button-row\">\n <button class=\"primary-button\" [ngClass]=\"filterCriteria.length===0 ? 'disabled' : ''\" (click)=\"applyFilter()\"> {{\"_Apply filter\" | translate}} </button>\n </div>\n\n <div class=\"object-navigator-separator\"></div>\n\n @switch(filterCriteriaSelectionMode$.getValue()){\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\n @if(!selectedObjectId){\n <p id=\"NoObjectSelected\">{{ \"_NoObjectSelected\" | translate}}</p>\n }@else{\n <div class=\"scrollable-content-container\">\n <lib-bimplus-scrollable-container>\n <lib-criteria-select-object-properties\n [api]=\"api\"\n [selectedLanguage]=\"selectedLanguage\"\n [localizedStrings]=\"localizedStrings\"\n [(filterCriteria)]=\"filterCriteria\"\n [rootObjectId]=\"selectedObjectId\"\n (filterCriteriaChange)=\"activateModifiedCustomFilter()\"\n >\n </lib-criteria-select-object-properties>\n </lib-bimplus-scrollable-container>\n </div>\n }\n }\n @case(FilterCriteriaSelectionMode.SelectAttributes){\n\n }\n @default{\n @if (filterResult) {\n <div class=\"scrollable-content-container\">\n <lib-bimplus-scrollable-container>\n <lib-object-filter-result\n [filterResult]=\"filterResult\"\n [selectedObjects]=\"selectedObjects\"\n (nodeSelectionChanged)=\"handleFilterResultSelectionChanged($event)\"\n (nodeDoubleClicked)=\"handleFilterResulObjectDoubleClicked($event)\"\n (nodeMouseEntered)=\"handleFilterResulObjectMouseEntered($event)\"\n (nodeMouseLeft)=\"handleFilterResulObjectMouseLeft($event)\"\n ></lib-object-filter-result>\n </lib-bimplus-scrollable-container>\n </div>\n }\n }\n }\n }\n @else {\n <div data-test=\"object-navigator-no-filter-types-message\" class=\"object-navigator-no-filter-types\"> {{\"_No_visible_models_found\" | translate}} </div>\n }\n </div>\n</lib-bimplus-sidenav-drawer-content>\n", styles: [".ng-select.ng-select-opened>.ng-select-container{background:#fff;border-color:#b3b3b3 #ccc #d9d9d9}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent #999;border-width:0 5px 5px}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #333}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-disabled>.ng-select-container{background-color:#f9f9f9}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{color:#333;background-color:#fff;border-radius:0;border:1px solid #ccc;min-height:36px;align-items:center}.ng-select .ng-select-container:hover{box-shadow:0 1px #0000000f;background-color:#f5f5f5}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}[dir=rtl] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#999}.ng-select.ng-select-single .ng-select-container{height:36px}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}[dir=rtl] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:#f9f9f9;border:1px solid #e6e6e6}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:.9em;margin-bottom:5px;color:#333;background-color:#fff1eb;border-radius:2px;margin-right:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid #b8dbff;border-right:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:#000}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}[dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}.ng-select .ng-clear-wrapper{color:#999}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:5px 5px 0 0}[dir=rtl] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}[dir=rtl] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#666}.ng-select .ng-arrow-wrapper .ng-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px}.ng-dropdown-panel{background-color:#fff;border:1px solid #ccc;box-shadow:0 1px #0000000f;left:0}.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.ng-dropdown-panel.ng-select-right{left:100%;top:0;border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px}.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-color:#e6e6e6;margin-top:-1px}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-dropdown-panel.ng-select-left{left:-100%;top:0;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:4px}.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid #ccc;padding:5px 7px}.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid #ccc;padding:5px 7px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:#0000008a;cursor:pointer}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5f5f5}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{color:#0000008a;background-color:#fff1eb;font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#fff;color:#000000de;padding:8px 10px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#333;background-color:#fff1eb}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#f5f5f5;color:#333}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#ccc}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}[dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}[dir=rtl] .ng-dropdown-panel{direction:rtl;text-align:right}.primary-button{text-transform:uppercase;font: 700 1rem Source Sans Pro,Helvetica,Arial,tahoma,sans-serif;display:inline-block;margin-left:.8rem;height:2.4rem;white-space:nowrap;border-radius:.2rem;vertical-align:middle;font-size:1.2rem;border:solid .2rem #fe5000;color:#fff;background-color:#fe5000;cursor:pointer}.primary-button:hover{border:solid .2rem #eb4b00;color:#fff;background-color:#eb4b00;outline:0}.primary-button.disabled{border:solid .2rem #bababa;color:#fff;background-color:#bababa;cursor:default}:host{display:flex}lib-bimplus-sidenav-drawer-content{width:100%;max-height:100%;display:flex;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container{display:flex;flex-direction:column;width:100%;max-height:100%;flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.description{margin-bottom:.8rem;font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-no-filter-types{font-size:1.2rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-type>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name{flex:0;margin-top:.1rem;margin-bottom:.1rem;height:2.4rem;display:flex;flex-direction:row}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown{flex:1}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-dropdown .ng-select-container{height:2.4rem;min-height:2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filters-name>.object-navigator-filters-name-context-menu{--context-menu-trigger-width: 2.4rem;--context-menu-trigger-height: 2.4rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-filter-criteria-panel{flex:0;padding-top:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-apply-button-row{flex:0;display:flex;margin-top:.8rem;margin-bottom:.8rem;justify-content:flex-end}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.object-navigator-separator{flex:0;border-top:solid .078125em #d4d4d4;padding-bottom:.8rem}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container{position:relative;flex:1;width:100%;display:flex;flex-direction:column}lib-bimplus-sidenav-drawer-content .object-navigator-content-container>.scrollable-content-container>lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}.filter-criteria-container{display:flex;flex-direction:column;width:calc(100% - 2.4rem);padding-left:2.4rem;height:14.4rem}:host(.object-navigator){height:100%;width:100%}.object-navigator-filter-action-buttons{width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-select-attributes-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M14.6 9.1l.1-3c0-2.4-.1-2.7-2.5-2.7l-3 .1c-.4.1-.7.2-1 .5L2.7 9.5c-.6.6-.6 1.6 0 2.2l3.7 3.8c.6.6 1.6.6 2.2 0l5.5-5.5c.3-.2.4-.6.5-.9zm-1.5-2.5c0 .9-.7 1.6-1.6 1.6-.9 0-1.6-.7-1.6-1.6 0-.9.7-1.6 1.6-1.6.9 0 1.6.7 1.6 1.6z\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-select-attributes-button.active{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M14.6 9.1l.1-3c0-2.4-.1-2.7-2.5-2.7l-3 .1c-.4.1-.7.2-1 .5L2.7 9.5c-.6.6-.6 1.6 0 2.2l3.7 3.8c.6.6 1.6.6 2.2 0l5.5-5.5c.3-.2.4-.6.5-.9zm-1.5-2.5c0 .9-.7 1.6-1.6 1.6-.9 0-1.6-.7-1.6-1.6S10.6 5 11.5 5c.9 0 1.6.7 1.6 1.6z\" fill=\"%23fe5000\"/></svg>')}.object-navigator-pick-object-button{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"%23444\"/></svg>');width:2.4rem;height:2.4rem;display:inline-block;background-position:center center;background-repeat:no-repeat;cursor:pointer;background-size:1.8rem 1.8rem;color:#39aef2;margin-left:.4rem}.object-navigator-pick-object-button.active{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M2.8 12.4c1.2 1.2-1.3 3-.7 3.6.5.5 2.5-1.8 3.6-.7l5.6-5.6-2.9-3s-4.6 4.7-5.6 5.7zM8.4 11L7 9.6l1.4-1.4 1.4 1.4L8.4 11zm4.2-8.4l-2 2-.7-.7-1.5 1.4 4.3 4.3 1.4-1.4-.7-.7 2-2c1.8-1.9-1-4.7-2.8-2.9z\" fill=\"%23fe5000\"/></svg>')}.object-navigator-filter-criteria-header{display:inline-block;text-transform:uppercase;line-height:2.4rem;font-weight:700;font-size:.9375em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:100%}\n"] }]
220
220
  }], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { hideFilterContextMenu: [{
221
221
  type: Input
222
222
  }], filterContextMenu: [{
@@ -249,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
249
249
  }], filterResultObjectMouseLeft: [{
250
250
  type: Output
251
251
  }] } });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwyQkFBMkIsRUFBK0IsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuSSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sNEVBQTRFLENBQUM7QUFDbEksT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDM0csT0FB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NkJBQTZCLHVFQUM3QixvQ0FBb0MsK0VBQ3BDLG9DQUFvQyxxSUFDcEMsZUFBZSw0RkFDZix1Q0FBdUMsb0xBQ3ZDLDJCQUEyQiwySkFDM0IsMkJBQTJCLCtNQUMzQixtQ0FBbUM7OzRGQU01QiwrQkFBK0I7a0JBckIzQyxTQUFTOytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1AsQ0FBRSxZQUFZO3dCQUNuQixXQUFXO3dCQUNYLGNBQWM7d0JBQ2Qsd0JBQXdCO3dCQUN4Qix1QkFBdUI7d0JBQ3ZCLDZCQUE2Qjt3QkFDN0Isb0NBQW9DO3dCQUNwQyxvQ0FBb0M7d0JBQ3BDLGVBQWU7d0JBQ2YsdUNBQXVDO3dCQUN2QywyQkFBMkI7d0JBQzNCLDJCQUEyQjt3QkFDM0IsbUNBQW1DO3FCQUN0QyxpQkFHYyxpQkFBaUIsQ0FBQyxTQUFTO3FGQVcxQyxxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlGLFdBQVc7c0JBRGQsS0FBSztnQkFvQ04sT0FBTztzQkFETixLQUFLO2dCQU1OLEdBQUc7c0JBREYsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBR2lDLGdCQUFnQjtzQkFBdEQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBS3JDLGtDQUFrQztzQkFEakMsTUFBTTtnQkFJUCxnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQVFOLGtDQUFrQztzQkFEakMsTUFBTTtnQkFJUCwrQkFBK0I7c0JBRDlCLE1BQU07Z0JBSVAsOEJBQThCO3NCQUQ3QixNQUFNO2dCQUlQLDJCQUEyQjtzQkFEMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0ICogYXMgV2ViU2RrIGZyb20gJ2JpbXBsdXMtd2Vic2RrJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0ICxmcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLCBGaWx0ZXJDcml0ZXJpdW0sIEZpbHRlclR5cGUsIE1heEZpbHRlckNyaXRlcmlhIH0gZnJvbSAnLi9iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3IuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRmlsdGVyQ3JpdGVyaXVtQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXItY3JpdGVyaXVtL2ZpbHRlci1jcml0ZXJpdW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwYW5zaW9uUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuaW1wb3J0IHsgQmltcGx1c1NpZGVuYXZEcmF3ZXJDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1zaWRlbmF2LWRyYXdlci1jb250ZW50L2JpbXBsdXMtc2lkZW5hdi1kcmF3ZXItY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIvZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFeHBhbnNpb25QYW5lbEhlYWRlckFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuLi9leHBhbnNpb24tcGFuZWwtaGVhZGVyLWFjdGlvbnMvZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1hY3Rpb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDcml0ZXJpYVNlbGVjdE9iamVjdFByb3BlcnRpZXNDb21wb25lbnQgfSBmcm9tICcuL2NyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JqZWN0RmlsdGVyUmVzdWx0Q29tcG9uZW50IH0gZnJvbSAnLi9vYmplY3QtZmlsdGVyLXJlc3VsdC9vYmplY3QtZmlsdGVyLXJlc3VsdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzQ29udGV4dE1lbnVDb21wb25lbnQgfSBmcm9tICAnLi4vYmltcGx1cy1jb250ZXh0LW1lbnUvYmltcGx1cy1jb250ZXh0LW1lbnUuY29tcG9uZW50J1xyXG5pbXBvcnQgeyBCaW1wbHVzQ29udGV4dE1lbnVJdGVtIH0gZnJvbSAnLi4vYmltcGx1cy1jb250ZXh0LW1lbnUvYmltcGx1cy1jb250ZXh0LW1lbnUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRmlsdGVyU3RyaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsdGVyU3RyaW5nJztcclxuaW1wb3J0IHsgRmlsdGVyU3RydWN0dXJlRmV0Y2hlciB9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbHRlclN0cnVjdHVyZUZldGNoZXInO1xyXG5pbXBvcnQgeyBCaW1wbHVzU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXIvYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lci5jb21wb25lbnQnXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3InLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogWyBDb21tb25Nb2R1bGVcclxuICAgICwgRm9ybXNNb2R1bGVcclxuICAgICwgTmdTZWxlY3RNb2R1bGVcclxuICAgICwgRmlsdGVyQ3JpdGVyaXVtQ29tcG9uZW50XHJcbiAgICAsIEV4cGFuc2lvblBhbmVsQ29tcG9uZW50XHJcbiAgICAsIEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50XHJcbiAgICAsIEV4cGFuc2lvblBhbmVsSGVhZGVyQWN0aW9uc0NvbXBvbmVudFxyXG4gICAgLCBCaW1wbHVzU2lkZW5hdkRyYXdlckNvbnRlbnRDb21wb25lbnRcclxuICAgICwgVHJhbnNsYXRlTW9kdWxlXHJcbiAgICAsIENyaXRlcmlhU2VsZWN0T2JqZWN0UHJvcGVydGllc0NvbXBvbmVudFxyXG4gICAgLCBCaW1wbHVzQ29udGV4dE1lbnVDb21wb25lbnRcclxuICAgICwgT2JqZWN0RmlsdGVyUmVzdWx0Q29tcG9uZW50XHJcbiAgICAsIEJpbXBsdXNTY3JvbGxhYmxlQ29udGFpbmVyQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yLmNvbXBvbmVudC5sZXNzJywgXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCaW1wbHVzT2JqZWN0TmF2aWdhdG9yQ29tcG9uZW50IGV4dGVuZHMgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZVNlcnZpY2U6ICBUcmFuc2xhdGVTZXJ2aWNlKXtcclxuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpICBcclxuICB9XHJcbiAgXHJcbiAgLy8gI3JlZ2lvbiBwdWJsaWMgZmllbGRzXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGlkZUZpbHRlckNvbnRleHRNZW51OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVyQ29udGV4dE1lbnU6IEFycmF5PEJpbXBsdXNDb250ZXh0TWVudUl0ZW0+ID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGZpbHRlclR5cGVzKHR5cGVzIDogQXJyYXk8RmlsdGVyVHlwZT4pe1xyXG4gICAgdGhpcy5fZmlsdGVyVHlwZXMgPSB0eXBlcztcclxuICAgIGlmKHRoaXMuX2ZpbHRlclR5cGVzLmxlbmd0aCA+MClcclxuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJUeXBlID0gdGhpcy5fZmlsdGVyVHlwZXNbMF07XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyVHlwZXMoKTpBcnJheTxGaWx0ZXJUeXBlPntcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJUeXBlcztcclxuICB9XHJcblxyXG4gIHNldCBhY3RpdmVGaWx0ZXJUeXBlKHZhbHVlIDogRmlsdGVyVHlwZSB8IG51bGwpe1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJUeXBlU3ViamVjdCQubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlRmlsdGVyVHlwZSgpIDogRmlsdGVyVHlwZSB8IG51bGx7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVGaWx0ZXJUeXBlU3ViamVjdCQuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGFjdGl2ZUZpbHRlclR5cGVTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyVHlwZSB8IG51bGw+IChudWxsKTtcclxuICBhY3RpdmVGaWx0ZXJTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2ViU2RrLk9iamVjdEZpbHRlciB8IG51bGw+IChudWxsKTtcclxuXHJcbiAgc2V0IGFjdGl2ZUZpbHRlcihmaWx0ZXIgOiBXZWJTZGsuT2JqZWN0RmlsdGVyIHwgbnVsbCl7XHJcbiAgICBcclxuICAgIGlmKGZpbHRlciAmJiAhZmlsdGVyLmlkKXsgLy8gU3dpdGNoaW5nIHRvIGN1c3RvbSBmaWx0ZXIgd2lsbCByZXN0b3JlIHRoZSBkZWZhdWx0IGN1c3RvbSBmaWx0ZXJcclxuICAgICAgdGhpcy5fc2V0RGVmYXVsdEN1c3RvbUZpbHRlclN0cmluZyhmaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyU3ViamVjdCQubmV4dChmaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2ZUZpbHRlcigpIDogV2ViU2RrLk9iamVjdEZpbHRlciB8IG51bGx7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVGaWx0ZXJTdWJqZWN0JC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzIDogV2ViU2RrLk9iamVjdEZpbHRlcnNSZXNwb25zZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBmaWx0ZXJDcml0ZXJpYSA6IEZpbHRlckNyaXRlcml1bVtdID0gW11cclxuICBcclxuICBASW5wdXQoKVxyXG4gIGFwaSA6IFdlYlNkay5BcGkgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KClcclxuICBwcm9qZWN0SWQgOiBzdHJpbmcgPSAnJ1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm9iamVjdC1uYXZpZ2F0b3InKSBvYmpOYXZDbGFzc0NsYXNzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlPihGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUuTm9uZSk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZT4oKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3RlZE9iamVjdElkIDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0ZWRPYmplY3RzIDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3Rpb25PYmplY3QgOiBXZWJTZGsuRXhwb3J0T2JqZWN0IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGdldCBmaWx0ZXJSZXN1bHQoKXtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBmaWx0ZXJSZXN1bHRPYmplY3RTZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZmlsdGVyUmVzdWx0T2JqZWN0RG91YmxlQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmaWx0ZXJSZXN1bHRPYmplY3RNb3VzZUVudGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZmlsdGVyUmVzdWx0T2JqZWN0TW91c2VMZWZ0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSA9IEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZTsgLy8gRXhwb3NlIGVudW0gdG8gdGVtcGxhdGVcclxuXHJcbiAgaXNMb2FkaW5nUmVzdWx0cyA9IGZhbHNlO1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIHB1YmxpYyBmaWVsZHNcclxuXHJcbiAgLy8gI3JlZ2lvbiBwcml2YXRlIGZpZWxkc1xyXG4gIHByaXZhdGUgX2ZpbHRlclJlc3VsdCA6IFdlYlNkay5PYmplY3RGaWx0ZXJTdHJ1Y3R1cmVSZXNwb25zZSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2ZpbHRlclR5cGVzIDogQXJyYXk8RmlsdGVyVHlwZT4gPSBbXTtcclxuICAvLyAjZW5kcmVnaW9uIHByaXZhdGUgZmllbGRzXHJcblxyXG4gIC8vICNyZWdpb24gcHVibGljIG1ldGhvZHNcclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGVTdWJqZWN0JC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAodikgPT4ge1xyXG4gICAgICAgIGlmKCF0aGlzLnByb2plY3RJZCB8fCAhdGhpcy5hcGkgfHwgIXYpe1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlciA9IG51bGw7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZEN1cnJlbnRMYXllckZpbHRlcnModGhpcy5wcm9qZWN0SWQsIHYuaWQpPy5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAodmFsdWUpID0+IHsgXHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzID0gW3RoaXMuX2NyZWF0ZURlZmF1bHRDdXN0b21GaWx0ZXIodi5pZCksIC4uLnZhbHVlXTtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlciA9IHRoaXMuZmlsdGVyc1swXTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IGVyciA9PiB7dGhyb3cgbmV3IEVycm9yIChlcnIpfSxcclxuICAgICAgICAgIH1cclxuICAgICAgICApfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJTdWJqZWN0JC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAodikgPT4geyBcclxuICAgICAgICBpZighdilcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEgPSB0aGlzLnBhcnNlRmlsdGVyU3RyaW5nKHYpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHYpID0+IHsgdGhpcy5maWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGVDaGFuZ2VkLmVtaXQodil9XHJcbiAgICB9KVxyXG5cclxuICAgIGlmKCB0aGlzLmZpbHRlclR5cGVzLmxlbmd0aCA+IDApe1xyXG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGUgPSB0aGlzLmZpbHRlclR5cGVzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZEN1cnJlbnRMYXllckZpbHRlcnMocHJvamVjdElkIDogc3RyaW5nLCBsYXllcklkIDogc3RyaW5nKXtcclxuICAgIGlmKCF0aGlzLmFwaSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdEZpbHRlcnMuZ2V0KGxheWVySWQscHJvamVjdElkKSk7XHJcbiAgfVxyXG5cclxuICBwYXJzZUZpbHRlclN0cmluZyhmaWx0ZXIgOiBXZWJTZGsuT2JqZWN0RmlsdGVyKXtcclxuICAgIGNvbnN0IGZpbHRlclN0cmluZyA9IG5ldyBGaWx0ZXJTdHJpbmcoZmlsdGVyLmZpbHRlclN0cmluZywgTWF4RmlsdGVyQ3JpdGVyaWEpO1xyXG4gICAgcmV0dXJuIGZpbHRlclN0cmluZy50b0ZpbHRlckNyaXRlcmlhKGZpbHRlci5yZWFkYWJsZVZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaWx0ZXJDcml0ZXJpdW0oaW5kZXg6IG51bWJlcil7XHJcbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhID0gWy4uLnRoaXMuZmlsdGVyQ3JpdGVyaWFdO1xyXG4gICAgdGhpcy5hY3RpdmF0ZU1vZGlmaWVkQ3VzdG9tRmlsdGVyKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUobW9kZSA6IEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSl7XHJcbiAgICBpZih0aGlzLmZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQuZ2V0VmFsdWUoKSA9PSBtb2RlKXtcclxuICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUkLm5leHQoRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLk5vbmUpO1xyXG4gICAgICByZXR1cm47ICBcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQubmV4dChtb2RlKTtcclxuICB9XHJcblxyXG4gIGFwcGx5RmlsdGVyKCl7XHJcbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQubmV4dChGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUuTm9uZSk7XHJcbiAgICB0aGlzLl9maWx0ZXJSZXN1bHQgPSBudWxsO1xyXG5cclxuICAgIC8vIEN1c3RvbSBmaWx0ZXIgaXMgc2VsZWN0ZWRcclxuICAgIGlmKHRoaXMuYWN0aXZlRmlsdGVyICYmICF0aGlzLmFjdGl2ZUZpbHRlci5pZCl7XHJcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyLmZpbHRlclN0cmluZyA9IG5ldyBGaWx0ZXJTdHJpbmcoKS5mcm9tRmlsdGVyQ3JpdGVyaWEodGhpcy5maWx0ZXJDcml0ZXJpYSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5zZWxlY3Rpb25PYmplY3Qpe1xyXG4gICAgICB0aGlzLl9hcHBseVNlbGVjdGlvbk9iamVjdEZpbHRlcih0aGlzLmFjdGl2ZUZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGaWx0ZXJSZXN1bHRTZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbiA6IHN0cmluZ1tdKXtcclxuICAgIHRoaXMuZmlsdGVyUmVzdWx0T2JqZWN0U2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHNlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGaWx0ZXJSZXN1bE9iamVjdERvdWJsZUNsaWNrZWQoc2VsZWN0aW9uIDogc3RyaW5nKXtcclxuICAgIHRoaXMuZmlsdGVyUmVzdWx0T2JqZWN0RG91YmxlQ2xpY2tlZC5lbWl0KHNlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBcclxuICBoYW5kbGVGaWx0ZXJSZXN1bE9iamVjdE1vdXNlRW50ZXJlZChzZWxlY3Rpb24gOiBzdHJpbmcpe1xyXG4gICAgdGhpcy5maWx0ZXJSZXN1bHRPYmplY3RNb3VzZUVudGVyZWQuZW1pdChzZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmlsdGVyUmVzdWxPYmplY3RNb3VzZUxlZnQoc2VsZWN0aW9uIDogc3RyaW5nKXtcclxuICAgIHRoaXMuZmlsdGVyUmVzdWx0T2JqZWN0TW91c2VMZWZ0LmVtaXQoc2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlTW9kaWZpZWRDdXN0b21GaWx0ZXIoKXtcclxuICAgIC8vIFdoZW4gZXhpc3RpbmcgZmlsdGVyIGlzIGNoYW5nZWQsIEN1c3RvbSBmaWx0ZXIgd2lsbCBiZSBzZWxlY3RlZCBhbmQgZmlsdGVyIHNldHRpbmdzIG5lZWQgdG8gYmUgY2xvbmVkLiBOb3RoaW5nIGlzIGRvbmUgd2hlbiBjdXN0b20gZmlsdGVyIGlzIGFscmVhZHkgYWN0aXZlXHJcbiAgICBpZih0aGlzLmFjdGl2ZUZpbHRlcj8uaWQgJiYgdGhpcy5maWx0ZXJzKXtcclxuXHJcbiAgICAgIC8vIENvcHkgZmlsdGVyIHN0cmluZyBmcm9tIGN1cnJlbnQgY3JpdGVyaWEgc2V0dGluZ3MgdG8gY3VzdG9tIGZpbHRlclxyXG4gICAgICB0aGlzLmZpbHRlcnNbMF0uZmlsdGVyU3RyaW5nID0gbmV3IEZpbHRlclN0cmluZygpLmZyb21GaWx0ZXJDcml0ZXJpYSh0aGlzLmZpbHRlckNyaXRlcmlhKTtcclxuICAgICAgdGhpcy5maWx0ZXJzWzBdLnJlYWRhYmxlVmFsdWVzID0gbmV3IEZpbHRlclN0cmluZygpLmdldFJlYWRhYmxlVmFsdWVzRnJvbUZpbHRlckNyaXRlcmlhKHRoaXMuZmlsdGVyQ3JpdGVyaWEpO1xyXG5cclxuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJTdWJqZWN0JC5uZXh0KHRoaXMuZmlsdGVyc1swXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb24gcHVibGljIG1ldGhvZHNcclxuXHJcbiAgLy8gI3JlZ2lvbiBwcml2YXRlIG1ldGhvZHNcclxuICBwcml2YXRlIF9hcHBseVNlbGVjdGlvbk9iamVjdEZpbHRlcihhY3RpdmVGaWx0ZXIgOiBXZWJTZGsuT2JqZWN0RmlsdGVyIHwgbnVsbCl7XHJcblxyXG4gICAgaWYoIXRoaXMuYXBpIHx8ICF0aGlzLnNlbGVjdGlvbk9iamVjdCB8fCAhYWN0aXZlRmlsdGVyKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0aW9uT2JqZWN0LnNpbmdsZVVzZSA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk9iamVjdC5zZWxlY3Rpb24uc2luZ2xldXNlID0gdHJ1ZTtcclxuICAgIFxyXG4gICAgdGhpcy5pc0xvYWRpbmdSZXN1bHRzID0gdHJ1ZTtcclxuICAgIFxyXG4gICAgRmlsdGVyU3RydWN0dXJlRmV0Y2hlci5mZXRjaE9iamVjdEZpbHRlclN0cnVjdHVyZUZyb21TZWxlY3Rpb24odGhpcy5wcm9qZWN0SWQsIGFjdGl2ZUZpbHRlciwgdGhpcy5zZWxlY3Rpb25PYmplY3QsIHRoaXMuYXBpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZmlsdGVyUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyUmVzdWx0ID0gZmlsdGVyUmVzdWx0O1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldERlZmF1bHRDdXN0b21GaWx0ZXJTdHJpbmcoZmlsdGVyOiBXZWJTZGsuT2JqZWN0RmlsdGVyKXtcclxuICAgIGNvbnN0IHR5cGVBdHRyaWJJZCA9IFwiYTBlOGFlMmMtYzg2OS00ZWMzLTkwMTktMjVkMzcwNGJlNzA3XCI7XHJcbiAgICBmaWx0ZXIuZmlsdGVyU3RyaW5nID0gYFtJXVske3R5cGVBdHRyaWJJZH1dLlZhbHVlYDtcclxuICAgIGZpbHRlci5yZWFkYWJsZVZhbHVlcyA9IHt9O1xyXG4gICAgZmlsdGVyLnJlYWRhYmxlVmFsdWVzW3R5cGVBdHRyaWJJZF0gPSBcIlR5cGVcIjsgLy8gUHJvdmlkZSByZWFkYWJsZSBjcml0ZXJpdW0gbmFtZSBmb3IgdHlwZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlRGVmYXVsdEN1c3RvbUZpbHRlcihkaXNjaXBsaW5lSUQ6IHN0cmluZykgOiBXZWJTZGsuT2JqZWN0RmlsdGVye1xyXG5cclxuICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgbW9kdWxlOiBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxyXG4gICAgICBjYXRlZ29yeTogXCJcIixcclxuICAgICAgZGlzY2lwbGluZUlEOiBkaXNjaXBsaW5lSUQsXHJcbiAgICAgIG5hbWU6IFwiQ3VzdG9tIGZpbHRlclwiLFxyXG4gICAgICBmaWx0ZXJTdHJpbmc6ICBcIlwiLFxyXG4gICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlU29ydEJ5TW9kZWxzOiBmYWxzZSxcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zZXREZWZhdWx0Q3VzdG9tRmlsdGVyU3RyaW5nKGZpbHRlcik7XHJcbiAgICByZXR1cm4gZmlsdGVyO1xyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xyXG5cclxufVxyXG4iLCI8bGliLWJpbXBsdXMtc2lkZW5hdi1kcmF3ZXItY29udGVudCBbaGVhZGVyXT1cIidfT2JqZWN0IG5hdmlnYXRvcicgfCB0cmFuc2xhdGVcIlxyXG4gICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdSZXN1bHRzXCJcclxuICAgIFtsb2FkaW5nU3Bpbm5lclRleHRdPVwiJ19Mb2FkaW5nX0ZpbHRlcl9SZXN1bHRzJyB8IHRyYW5zbGF0ZVwiXHJcbj5cclxuICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWNvbnRlbnQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgQGlmKGZpbHRlclR5cGVzLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgIHt7XCJfU2VsZWN0X2FuX29iamVjdF91c2luZ19PYmplY3RfUGlja2VyXCIgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3ItZmlsdGVycy10eXBlXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctc2VsZWN0IGRhdGEtdGVzdD1cIm9iamVjdC1uYXZpZ2F0b3ItZmlsdGVyLXR5cGVzLWRyb3Bkb3duXCIgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWRyb3Bkb3duXCIgWyhuZ01vZGVsKV09XCJhY3RpdmVGaWx0ZXJUeXBlXCIgW2NsZWFyYWJsZV09XCJmYWxzZVwiIFtzZWFyY2hhYmxlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLW9wdGlvbiAqbmdGb3I9XCJsZXQgdHlwZSBvZiBmaWx0ZXJUeXBlc1wiIFt2YWx1ZV09XCJ0eXBlXCI+e3t0eXBlLm5hbWV9fTwvbmctb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1maWx0ZXJzLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWRyb3Bkb3duXCIgWyhuZ01vZGVsKV09XCJhY3RpdmVGaWx0ZXJcIiAgW2NsZWFyYWJsZV09XCJmYWxzZVwiIFtkaXNhYmxlZF09XCIhZmlsdGVyc1wiIFtzZWFyY2hhYmxlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLW9wdGlvbiAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGZpbHRlcnNcIiBbdmFsdWVdPVwiZmlsdGVyXCI+e3tmaWx0ZXIubmFtZX19PC9uZy1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICBAaWYoIWhpZGVGaWx0ZXJDb250ZXh0TWVudSl7XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpYi1iaW1wbHVzLWNvbnRleHQtbWVudSBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3ItZmlsdGVycy1uYW1lLWNvbnRleHQtbWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImZpbHRlckNvbnRleHRNZW51XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpbHRlckNvbnRleHRNZW51Py5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9saWItYmltcGx1cy1jb250ZXh0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsIGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1maWx0ZXItY3JpdGVyaWEtcGFuZWxcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3ItZmlsdGVyLWNyaXRlcmlhLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e1wiX0Fzc2lnbl9PYmplY3RzX1NlbGVjdGlvbl9Nb2RlXCIgfCB0cmFuc2xhdGV9fSAmIzQwO3t7ZmlsdGVyQ3JpdGVyaWEubGVuZ3RofX0mIzQxO1xyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItYWN0aW9ucz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3ItcGljay1vYmplY3QtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJmaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUkLmdldFZhbHVlKCkgPT09IEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5TZWxlY3RPYmplY3RQcm9wZXJ0aWVzPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0RmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlKEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5TZWxlY3RPYmplY3RQcm9wZXJ0aWVzKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidfT2JqZWN0X1BpY2tlcid8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDb21tZW50ZWQgdW50aWwgZnVuY3Rpb25hbGl0eSB3aWxsIGJlIGltcGxlbWVudGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLXNlbGVjdC1hdHRyaWJ1dGVzLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJC5nZXRWYWx1ZSgpID09PSBGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUuU2VsZWN0QXR0cmlidXRlcz8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZShGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUuU2VsZWN0QXR0cmlidXRlcylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1hY3Rpb25zPlxyXG4gICAgICAgICAgICAgICAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWNyaXRlcmlhLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoY3JpdGVyaXVtIG9mIGZpbHRlckNyaXRlcmlhOyB0cmFjayBjcml0ZXJpdW07IGxldCAgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtZmlsdGVyLWNyaXRlcml1bVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3JpdGVyaXVtXSA9IFwiY3JpdGVyaXVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2luZGVudF09XCJpKjAuOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGVDcml0ZXJpdW0pPVwiZGVsZXRlRmlsdGVyQ3JpdGVyaXVtKGkpXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtZmlsdGVyLWNyaXRlcml1bT5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWw+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1hcHBseS1idXR0b24tcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeS1idXR0b25cIiBbbmdDbGFzc109XCJmaWx0ZXJDcml0ZXJpYS5sZW5ndGg9PT0wID8gJ2Rpc2FibGVkJyA6ICcnXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVyKClcIj4ge3tcIl9BcHBseSBmaWx0ZXJcIiB8IHRyYW5zbGF0ZX19IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLXNlcGFyYXRvclwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgQHN3aXRjaChmaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUkLmdldFZhbHVlKCkpe1xyXG4gICAgICAgICAgICAgICAgQGNhc2UoRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLlNlbGVjdE9iamVjdFByb3BlcnRpZXMpe1xyXG4gICAgICAgICAgICAgICAgICAgIEBpZighc2VsZWN0ZWRPYmplY3RJZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPVwiTm9PYmplY3RTZWxlY3RlZFwiPnt7IFwiX05vT2JqZWN0U2VsZWN0ZWRcIiB8IHRyYW5zbGF0ZX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIH1AZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGFibGUtY29udGVudC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWJpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBpXT1cImFwaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZExhbmd1YWdlXT1cInNlbGVjdGVkTGFuZ3VhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9jYWxpemVkU3RyaW5nc109XCJsb2NhbGl6ZWRTdHJpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhmaWx0ZXJDcml0ZXJpYSldPVwiZmlsdGVyQ3JpdGVyaWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm9vdE9iamVjdElkXT1cInNlbGVjdGVkT2JqZWN0SWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVyQ3JpdGVyaWFDaGFuZ2UpPVwiYWN0aXZhdGVNb2RpZmllZEN1c3RvbUZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLWNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZShGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUuU2VsZWN0QXR0cmlidXRlcyl7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGRlZmF1bHR7XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChmaWx0ZXJSZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGFibGUtY29udGVudC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLW9iamVjdC1maWx0ZXItcmVzdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJSZXN1bHRdPVwiZmlsdGVyUmVzdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkT2JqZWN0c109XCJzZWxlY3RlZE9iamVjdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9kZVNlbGVjdGlvbkNoYW5nZWQpPVwiaGFuZGxlRmlsdGVyUmVzdWx0U2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVEb3VibGVDbGlja2VkKT1cImhhbmRsZUZpbHRlclJlc3VsT2JqZWN0RG91YmxlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVNb3VzZUVudGVyZWQpPVwiaGFuZGxlRmlsdGVyUmVzdWxPYmplY3RNb3VzZUVudGVyZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlTW91c2VMZWZ0KT1cImhhbmRsZUZpbHRlclJlc3VsT2JqZWN0TW91c2VMZWZ0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2xpYi1vYmplY3QtZmlsdGVyLXJlc3VsdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLWJpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxkaXYgZGF0YS10ZXN0PVwib2JqZWN0LW5hdmlnYXRvci1uby1maWx0ZXItdHlwZXMtbWVzc2FnZVwiIGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1uby1maWx0ZXItdHlwZXNcIj4ge3tcIl9Ob192aXNpYmxlX21vZGVsc19mb3VuZFwiIHwgdHJhbnNsYXRlfX0gPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbjwvbGliLWJpbXBsdXMtc2lkZW5hdi1kcmF3ZXItY29udGVudD5cclxuIl19
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwyQkFBMkIsRUFBK0IsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuSSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sNEVBQTRFLENBQUM7QUFDbEksT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDM0csT0FB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NkJBQTZCLHVFQUM3QixvQ0FBb0MsK0VBQ3BDLG9DQUFvQyxxSUFDcEMsZUFBZSw0RkFDZix1Q0FBdUMsb0xBQ3ZDLDJCQUEyQiwySkFDM0IsMkJBQTJCLCtNQUMzQixtQ0FBbUM7OzRGQU01QiwrQkFBK0I7a0JBckIzQyxTQUFTOytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1AsQ0FBRSxZQUFZO3dCQUNuQixXQUFXO3dCQUNYLGNBQWM7d0JBQ2Qsd0JBQXdCO3dCQUN4Qix1QkFBdUI7d0JBQ3ZCLDZCQUE2Qjt3QkFDN0Isb0NBQW9DO3dCQUNwQyxvQ0FBb0M7d0JBQ3BDLGVBQWU7d0JBQ2YsdUNBQXVDO3dCQUN2QywyQkFBMkI7d0JBQzNCLDJCQUEyQjt3QkFDM0IsbUNBQW1DO3FCQUN0QyxpQkFHYyxpQkFBaUIsQ0FBQyxTQUFTO3FGQVcxQyxxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlGLFdBQVc7c0JBRGQsS0FBSztnQkFvQ04sT0FBTztzQkFETixLQUFLO2dCQU1OLEdBQUc7c0JBREYsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBR2lDLGdCQUFnQjtzQkFBdEQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBS3JDLGtDQUFrQztzQkFEakMsTUFBTTtnQkFJUCxnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQVFOLGtDQUFrQztzQkFEakMsTUFBTTtnQkFJUCwrQkFBK0I7c0JBRDlCLE1BQU07Z0JBSVAsOEJBQThCO3NCQUQ3QixNQUFNO2dCQUlQLDJCQUEyQjtzQkFEMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgKiBhcyBXZWJTZGsgZnJvbSAnYmltcGx1cy13ZWJzZGsnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0ICxmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUsIEZpbHRlckNyaXRlcml1bSwgRmlsdGVyVHlwZSwgTWF4RmlsdGVyQ3JpdGVyaWEgfSBmcm9tICcuL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyQ3JpdGVyaXVtQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXItY3JpdGVyaXVtL2ZpbHRlci1jcml0ZXJpdW0uY29tcG9uZW50JztcbmltcG9ydCB7IEV4cGFuc2lvblBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcbmltcG9ydCB7IEJpbXBsdXNTaWRlbmF2RHJhd2VyQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtc2lkZW5hdi1kcmF3ZXItY29udGVudC9iaW1wbHVzLXNpZGVuYXYtZHJhd2VyLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsLWhlYWRlci9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFeHBhbnNpb25QYW5lbEhlYWRlckFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuLi9leHBhbnNpb24tcGFuZWwtaGVhZGVyLWFjdGlvbnMvZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0L2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDcml0ZXJpYVNlbGVjdE9iamVjdFByb3BlcnRpZXNDb21wb25lbnQgfSBmcm9tICcuL2NyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50JztcbmltcG9ydCB7IE9iamVjdEZpbHRlclJlc3VsdENvbXBvbmVudCB9IGZyb20gJy4vb2JqZWN0LWZpbHRlci1yZXN1bHQvb2JqZWN0LWZpbHRlci1yZXN1bHQuY29tcG9uZW50JztcbmltcG9ydCB7IEJpbXBsdXNDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gICcuLi9iaW1wbHVzLWNvbnRleHQtbWVudS9iaW1wbHVzLWNvbnRleHQtbWVudS5jb21wb25lbnQnXG5pbXBvcnQgeyBCaW1wbHVzQ29udGV4dE1lbnVJdGVtIH0gZnJvbSAnLi4vYmltcGx1cy1jb250ZXh0LW1lbnUvYmltcGx1cy1jb250ZXh0LW1lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlclN0cmluZyB9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbHRlclN0cmluZyc7XG5pbXBvcnQgeyBGaWx0ZXJTdHJ1Y3R1cmVGZXRjaGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsdGVyU3RydWN0dXJlRmV0Y2hlcic7XG5pbXBvcnQgeyBCaW1wbHVzU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXIvYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lci5jb21wb25lbnQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbIENvbW1vbk1vZHVsZVxuICAgICwgRm9ybXNNb2R1bGVcbiAgICAsIE5nU2VsZWN0TW9kdWxlXG4gICAgLCBGaWx0ZXJDcml0ZXJpdW1Db21wb25lbnRcbiAgICAsIEV4cGFuc2lvblBhbmVsQ29tcG9uZW50XG4gICAgLCBFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudFxuICAgICwgRXhwYW5zaW9uUGFuZWxIZWFkZXJBY3Rpb25zQ29tcG9uZW50XG4gICAgLCBCaW1wbHVzU2lkZW5hdkRyYXdlckNvbnRlbnRDb21wb25lbnRcbiAgICAsIFRyYW5zbGF0ZU1vZHVsZVxuICAgICwgQ3JpdGVyaWFTZWxlY3RPYmplY3RQcm9wZXJ0aWVzQ29tcG9uZW50XG4gICAgLCBCaW1wbHVzQ29udGV4dE1lbnVDb21wb25lbnRcbiAgICAsIE9iamVjdEZpbHRlclJlc3VsdENvbXBvbmVudFxuICAgICwgQmltcGx1c1Njcm9sbGFibGVDb250YWluZXJDb21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3IuY29tcG9uZW50Lmxlc3MnLCBcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXG59KVxuZXhwb3J0IGNsYXNzIEJpbXBsdXNPYmplY3ROYXZpZ2F0b3JDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBjb25zdHJ1Y3Rvcih0cmFuc2xhdGVTZXJ2aWNlOiAgVHJhbnNsYXRlU2VydmljZSl7XG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSkgIFxuICB9XG4gIFxuICAvLyAjcmVnaW9uIHB1YmxpYyBmaWVsZHNcblxuICBASW5wdXQoKVxuICBoaWRlRmlsdGVyQ29udGV4dE1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBmaWx0ZXJDb250ZXh0TWVudTogQXJyYXk8QmltcGx1c0NvbnRleHRNZW51SXRlbT4gPSBbXTtcblxuICBASW5wdXQoKVxuICBzZXQgZmlsdGVyVHlwZXModHlwZXMgOiBBcnJheTxGaWx0ZXJUeXBlPil7XG4gICAgdGhpcy5fZmlsdGVyVHlwZXMgPSB0eXBlcztcbiAgICBpZih0aGlzLl9maWx0ZXJUeXBlcy5sZW5ndGggPjApXG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGUgPSB0aGlzLl9maWx0ZXJUeXBlc1swXTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJUeXBlcygpOkFycmF5PEZpbHRlclR5cGU+e1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJUeXBlcztcbiAgfVxuXG4gIHNldCBhY3RpdmVGaWx0ZXJUeXBlKHZhbHVlIDogRmlsdGVyVHlwZSB8IG51bGwpe1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyVHlwZVN1YmplY3QkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZUZpbHRlclR5cGUoKSA6IEZpbHRlclR5cGUgfCBudWxse1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUZpbHRlclR5cGVTdWJqZWN0JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgYWN0aXZlRmlsdGVyVHlwZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJUeXBlIHwgbnVsbD4gKG51bGwpO1xuICBhY3RpdmVGaWx0ZXJTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2ViU2RrLk9iamVjdEZpbHRlciB8IG51bGw+IChudWxsKTtcblxuICBzZXQgYWN0aXZlRmlsdGVyKGZpbHRlciA6IFdlYlNkay5PYmplY3RGaWx0ZXIgfCBudWxsKXtcbiAgICBcbiAgICBpZihmaWx0ZXIgJiYgIWZpbHRlci5pZCl7IC8vIFN3aXRjaGluZyB0byBjdXN0b20gZmlsdGVyIHdpbGwgcmVzdG9yZSB0aGUgZGVmYXVsdCBjdXN0b20gZmlsdGVyXG4gICAgICB0aGlzLl9zZXREZWZhdWx0Q3VzdG9tRmlsdGVyU3RyaW5nKGZpbHRlcik7XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJTdWJqZWN0JC5uZXh0KGZpbHRlcik7XG4gIH1cblxuICBnZXQgYWN0aXZlRmlsdGVyKCkgOiBXZWJTZGsuT2JqZWN0RmlsdGVyIHwgbnVsbHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVGaWx0ZXJTdWJqZWN0JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgZmlsdGVycyA6IFdlYlNkay5PYmplY3RGaWx0ZXJzUmVzcG9uc2UgfCBudWxsID0gbnVsbDtcblxuICBmaWx0ZXJDcml0ZXJpYSA6IEZpbHRlckNyaXRlcml1bVtdID0gW11cbiAgXG4gIEBJbnB1dCgpXG4gIGFwaSA6IFdlYlNkay5BcGkgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBwcm9qZWN0SWQgOiBzdHJpbmcgPSAnJ1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub2JqZWN0LW5hdmlnYXRvcicpIG9iak5hdkNsYXNzQ2xhc3M6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZT4oRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLk5vbmUpO1xuXG4gIEBPdXRwdXQoKVxuICBmaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGU+KCk7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0ZWRPYmplY3RJZCA6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkT2JqZWN0cyA6IHN0cmluZ1tdID0gW107XG5cbiAgQElucHV0KClcbiAgc2VsZWN0aW9uT2JqZWN0IDogV2ViU2RrLkV4cG9ydE9iamVjdCB8IG51bGwgPSBudWxsO1xuXG4gIGdldCBmaWx0ZXJSZXN1bHQoKXtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyUmVzdWx0O1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIGZpbHRlclJlc3VsdE9iamVjdFNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIEBPdXRwdXQoKVxuICBmaWx0ZXJSZXN1bHRPYmplY3REb3VibGVDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGZpbHRlclJlc3VsdE9iamVjdE1vdXNlRW50ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICBmaWx0ZXJSZXN1bHRPYmplY3RNb3VzZUxlZnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUgPSBGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGU7IC8vIEV4cG9zZSBlbnVtIHRvIHRlbXBsYXRlXG5cbiAgaXNMb2FkaW5nUmVzdWx0cyA9IGZhbHNlO1xuXG4gIC8vICNlbmRyZWdpb24gcHVibGljIGZpZWxkc1xuXG4gIC8vICNyZWdpb24gcHJpdmF0ZSBmaWVsZHNcbiAgcHJpdmF0ZSBfZmlsdGVyUmVzdWx0IDogV2ViU2RrLk9iamVjdEZpbHRlclN0cnVjdHVyZVJlc3BvbnNlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2ZpbHRlclR5cGVzIDogQXJyYXk8RmlsdGVyVHlwZT4gPSBbXTtcbiAgLy8gI2VuZHJlZ2lvbiBwcml2YXRlIGZpZWxkc1xuXG4gIC8vICNyZWdpb24gcHVibGljIG1ldGhvZHNcbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGVTdWJqZWN0JC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHYpID0+IHtcbiAgICAgICAgaWYoIXRoaXMucHJvamVjdElkIHx8ICF0aGlzLmFwaSB8fCAhdil7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlciA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5sb2FkQ3VycmVudExheWVyRmlsdGVycyh0aGlzLnByb2plY3RJZCwgdi5pZCk/LnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAodmFsdWUpID0+IHsgXG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVycyA9IFt0aGlzLl9jcmVhdGVEZWZhdWx0Q3VzdG9tRmlsdGVyKHYuaWQpLCAuLi52YWx1ZV07XG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZlRmlsdGVyID0gdGhpcy5maWx0ZXJzWzBdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiBlcnIgPT4ge3Rocm93IG5ldyBFcnJvciAoZXJyKX0sXG4gICAgICAgICAgfVxuICAgICAgICApfVxuICAgIH0pO1xuXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJTdWJqZWN0JC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHYpID0+IHsgXG4gICAgICAgIGlmKCF2KVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBcbiAgICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYSA9IHRoaXMucGFyc2VGaWx0ZXJTdHJpbmcodik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh2KSA9PiB7IHRoaXMuZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlQ2hhbmdlZC5lbWl0KHYpfVxuICAgIH0pXG5cbiAgICBpZiggdGhpcy5maWx0ZXJUeXBlcy5sZW5ndGggPiAwKXtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyVHlwZSA9IHRoaXMuZmlsdGVyVHlwZXNbMF07XG4gICAgfVxuICB9XG5cbiAgbG9hZEN1cnJlbnRMYXllckZpbHRlcnMocHJvamVjdElkIDogc3RyaW5nLCBsYXllcklkIDogc3RyaW5nKXtcbiAgICBpZighdGhpcy5hcGkpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RGaWx0ZXJzLmdldChsYXllcklkLHByb2plY3RJZCkpO1xuICB9XG5cbiAgcGFyc2VGaWx0ZXJTdHJpbmcoZmlsdGVyIDogV2ViU2RrLk9iamVjdEZpbHRlcil7XG4gICAgY29uc3QgZmlsdGVyU3RyaW5nID0gbmV3IEZpbHRlclN0cmluZyhmaWx0ZXIuZmlsdGVyU3RyaW5nLCBNYXhGaWx0ZXJDcml0ZXJpYSk7XG4gICAgcmV0dXJuIGZpbHRlclN0cmluZy50b0ZpbHRlckNyaXRlcmlhKGZpbHRlci5yZWFkYWJsZVZhbHVlcyk7XG4gIH1cblxuICBkZWxldGVGaWx0ZXJDcml0ZXJpdW0oaW5kZXg6IG51bWJlcil7XG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEgPSBbLi4udGhpcy5maWx0ZXJDcml0ZXJpYV07XG4gICAgdGhpcy5hY3RpdmF0ZU1vZGlmaWVkQ3VzdG9tRmlsdGVyKCk7XG4gIH1cblxuICBzZXRGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUobW9kZSA6IEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSl7XG4gICAgaWYodGhpcy5maWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUkLmdldFZhbHVlKCkgPT0gbW9kZSl7XG4gICAgICB0aGlzLmZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQubmV4dChGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUuTm9uZSk7XG4gICAgICByZXR1cm47ICBcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQubmV4dChtb2RlKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyKCl7XG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUkLm5leHQoRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLk5vbmUpO1xuICAgIHRoaXMuX2ZpbHRlclJlc3VsdCA9IG51bGw7XG5cbiAgICAvLyBDdXN0b20gZmlsdGVyIGlzIHNlbGVjdGVkXG4gICAgaWYodGhpcy5hY3RpdmVGaWx0ZXIgJiYgIXRoaXMuYWN0aXZlRmlsdGVyLmlkKXtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyLmZpbHRlclN0cmluZyA9IG5ldyBGaWx0ZXJTdHJpbmcoKS5mcm9tRmlsdGVyQ3JpdGVyaWEodGhpcy5maWx0ZXJDcml0ZXJpYSk7XG4gICAgfVxuXG4gICAgaWYodGhpcy5zZWxlY3Rpb25PYmplY3Qpe1xuICAgICAgdGhpcy5fYXBwbHlTZWxlY3Rpb25PYmplY3RGaWx0ZXIodGhpcy5hY3RpdmVGaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUZpbHRlclJlc3VsdFNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0aW9uIDogc3RyaW5nW10pe1xuICAgIHRoaXMuZmlsdGVyUmVzdWx0T2JqZWN0U2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHNlbGVjdGlvbik7XG4gIH1cblxuICBoYW5kbGVGaWx0ZXJSZXN1bE9iamVjdERvdWJsZUNsaWNrZWQoc2VsZWN0aW9uIDogc3RyaW5nKXtcbiAgICB0aGlzLmZpbHRlclJlc3VsdE9iamVjdERvdWJsZUNsaWNrZWQuZW1pdChzZWxlY3Rpb24pO1xuICB9XG5cbiAgXG4gIGhhbmRsZUZpbHRlclJlc3VsT2JqZWN0TW91c2VFbnRlcmVkKHNlbGVjdGlvbiA6IHN0cmluZyl7XG4gICAgdGhpcy5maWx0ZXJSZXN1bHRPYmplY3RNb3VzZUVudGVyZWQuZW1pdChzZWxlY3Rpb24pO1xuICB9XG5cbiAgaGFuZGxlRmlsdGVyUmVzdWxPYmplY3RNb3VzZUxlZnQoc2VsZWN0aW9uIDogc3RyaW5nKXtcbiAgICB0aGlzLmZpbHRlclJlc3VsdE9iamVjdE1vdXNlTGVmdC5lbWl0KHNlbGVjdGlvbik7XG4gIH1cblxuICBhY3RpdmF0ZU1vZGlmaWVkQ3VzdG9tRmlsdGVyKCl7XG4gICAgLy8gV2hlbiBleGlzdGluZyBmaWx0ZXIgaXMgY2hhbmdlZCwgQ3VzdG9tIGZpbHRlciB3aWxsIGJlIHNlbGVjdGVkIGFuZCBmaWx0ZXIgc2V0dGluZ3MgbmVlZCB0byBiZSBjbG9uZWQuIE5vdGhpbmcgaXMgZG9uZSB3aGVuIGN1c3RvbSBmaWx0ZXIgaXMgYWxyZWFkeSBhY3RpdmVcbiAgICBpZih0aGlzLmFjdGl2ZUZpbHRlcj8uaWQgJiYgdGhpcy5maWx0ZXJzKXtcblxuICAgICAgLy8gQ29weSBmaWx0ZXIgc3RyaW5nIGZyb20gY3VycmVudCBjcml0ZXJpYSBzZXR0aW5ncyB0byBjdXN0b20gZmlsdGVyXG4gICAgICB0aGlzLmZpbHRlcnNbMF0uZmlsdGVyU3RyaW5nID0gbmV3IEZpbHRlclN0cmluZygpLmZyb21GaWx0ZXJDcml0ZXJpYSh0aGlzLmZpbHRlckNyaXRlcmlhKTtcbiAgICAgIHRoaXMuZmlsdGVyc1swXS5yZWFkYWJsZVZhbHVlcyA9IG5ldyBGaWx0ZXJTdHJpbmcoKS5nZXRSZWFkYWJsZVZhbHVlc0Zyb21GaWx0ZXJDcml0ZXJpYSh0aGlzLmZpbHRlckNyaXRlcmlhKTtcblxuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJTdWJqZWN0JC5uZXh0KHRoaXMuZmlsdGVyc1swXSk7XG4gICAgfVxuICB9XG4gIC8vICNlbmRyZWdpb24gcHVibGljIG1ldGhvZHNcblxuICAvLyAjcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xuICBwcml2YXRlIF9hcHBseVNlbGVjdGlvbk9iamVjdEZpbHRlcihhY3RpdmVGaWx0ZXIgOiBXZWJTZGsuT2JqZWN0RmlsdGVyIHwgbnVsbCl7XG5cbiAgICBpZighdGhpcy5hcGkgfHwgIXRoaXMuc2VsZWN0aW9uT2JqZWN0IHx8ICFhY3RpdmVGaWx0ZXIpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uT2JqZWN0LnNpbmdsZVVzZSA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3Rpb25PYmplY3Quc2VsZWN0aW9uLnNpbmdsZXVzZSA9IHRydWU7XG4gICAgXG4gICAgdGhpcy5pc0xvYWRpbmdSZXN1bHRzID0gdHJ1ZTtcbiAgICBcbiAgICBGaWx0ZXJTdHJ1Y3R1cmVGZXRjaGVyLmZldGNoT2JqZWN0RmlsdGVyU3RydWN0dXJlRnJvbVNlbGVjdGlvbih0aGlzLnByb2plY3RJZCwgYWN0aXZlRmlsdGVyLCB0aGlzLnNlbGVjdGlvbk9iamVjdCwgdGhpcy5hcGkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZmlsdGVyUmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMuX2ZpbHRlclJlc3VsdCA9IGZpbHRlclJlc3VsdDtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdSZXN1bHRzID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RGVmYXVsdEN1c3RvbUZpbHRlclN0cmluZyhmaWx0ZXI6IFdlYlNkay5PYmplY3RGaWx0ZXIpe1xuICAgIGNvbnN0IHR5cGVBdHRyaWJJZCA9IFwiYTBlOGFlMmMtYzg2OS00ZWMzLTkwMTktMjVkMzcwNGJlNzA3XCI7XG4gICAgZmlsdGVyLmZpbHRlclN0cmluZyA9IGBbSV1bJHt0eXBlQXR0cmliSWR9XS5WYWx1ZWA7XG4gICAgZmlsdGVyLnJlYWRhYmxlVmFsdWVzID0ge307XG4gICAgZmlsdGVyLnJlYWRhYmxlVmFsdWVzW3R5cGVBdHRyaWJJZF0gPSBcIlR5cGVcIjsgLy8gUHJvdmlkZSByZWFkYWJsZSBjcml0ZXJpdW0gbmFtZSBmb3IgdHlwZVxuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRGVmYXVsdEN1c3RvbUZpbHRlcihkaXNjaXBsaW5lSUQ6IHN0cmluZykgOiBXZWJTZGsuT2JqZWN0RmlsdGVye1xuXG4gICAgY29uc3QgZmlsdGVyID0ge1xuICAgICAgbW9kdWxlOiBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgY2F0ZWdvcnk6IFwiXCIsXG4gICAgICBkaXNjaXBsaW5lSUQ6IGRpc2NpcGxpbmVJRCxcbiAgICAgIG5hbWU6IFwiQ3VzdG9tIGZpbHRlclwiLFxuICAgICAgZmlsdGVyU3RyaW5nOiAgXCJcIixcbiAgICAgIGlzRGVmYXVsdDogZmFsc2UsXG4gICAgICBkaXNhYmxlU29ydEJ5TW9kZWxzOiBmYWxzZSxcbiAgICB9XG5cbiAgICB0aGlzLl9zZXREZWZhdWx0Q3VzdG9tRmlsdGVyU3RyaW5nKGZpbHRlcik7XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuICAvLyAjZW5kcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xuXG59XG4iLCI8bGliLWJpbXBsdXMtc2lkZW5hdi1kcmF3ZXItY29udGVudCBbaGVhZGVyXT1cIidfT2JqZWN0IG5hdmlnYXRvcicgfCB0cmFuc2xhdGVcIlxuICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nUmVzdWx0c1wiXG4gICAgW2xvYWRpbmdTcGlubmVyVGV4dF09XCInX0xvYWRpbmdfRmlsdGVyX1Jlc3VsdHMnIHwgdHJhbnNsYXRlXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1jb250ZW50LWNvbnRhaW5lclwiPlxuICAgICAgICBAaWYoZmlsdGVyVHlwZXMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICB7e1wiX1NlbGVjdF9hbl9vYmplY3RfdXNpbmdfT2JqZWN0X1BpY2tlclwiIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3ItZmlsdGVycy10eXBlXCI+XG4gICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBkYXRhLXRlc3Q9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlci10eXBlcy1kcm9wZG93blwiIGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1kcm9wZG93blwiIFsobmdNb2RlbCldPVwiYWN0aXZlRmlsdGVyVHlwZVwiIFtjbGVhcmFibGVdPVwiZmFsc2VcIiBbc2VhcmNoYWJsZV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctb3B0aW9uICpuZ0Zvcj1cImxldCB0eXBlIG9mIGZpbHRlclR5cGVzXCIgW3ZhbHVlXT1cInR5cGVcIj57e3R5cGUubmFtZX19PC9uZy1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlcnMtbmFtZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWRyb3Bkb3duXCIgWyhuZ01vZGVsKV09XCJhY3RpdmVGaWx0ZXJcIiAgW2NsZWFyYWJsZV09XCJmYWxzZVwiIFtkaXNhYmxlZF09XCIhZmlsdGVyc1wiIFtzZWFyY2hhYmxlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1vcHRpb24gKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJzXCIgW3ZhbHVlXT1cImZpbHRlclwiPnt7ZmlsdGVyLm5hbWV9fTwvbmctb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxuXG4gICAgICAgICAgICAgICAgQGlmKCFoaWRlRmlsdGVyQ29udGV4dE1lbnUpe1xuICAgICAgICAgICAgICAgICAgICA8bGliLWJpbXBsdXMtY29udGV4dC1tZW51IGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1maWx0ZXJzLW5hbWUtY29udGV4dC1tZW51XCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImZpbHRlckNvbnRleHRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJDb250ZXh0TWVudT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9saWItYmltcGx1cy1jb250ZXh0LW1lbnU+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGxpYi1leHBhbnNpb24tcGFuZWwgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlci1jcml0ZXJpYS1wYW5lbFwiPlxuICAgICAgICAgICAgICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWZpbHRlci1jcml0ZXJpYS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XCJfQXNzaWduX09iamVjdHNfU2VsZWN0aW9uX01vZGVcIiB8IHRyYW5zbGF0ZX19ICYjNDA7e3tmaWx0ZXJDcml0ZXJpYS5sZW5ndGh9fSYjNDE7XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5hdmlnYXRvci1waWNrLW9iamVjdC1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJmaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUkLmdldFZhbHVlKCkgPT09IEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZS5TZWxlY3RPYmplY3RQcm9wZXJ0aWVzPyAnYWN0aXZlJyA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZShGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUuU2VsZWN0T2JqZWN0UHJvcGVydGllcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ19PYmplY3RfUGlja2VyJ3wgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29tbWVudGVkIHVudGlsIGZ1bmN0aW9uYWxpdHkgd2lsbCBiZSBpbXBsZW1lbnRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1uYXZpZ2F0b3Itc2VsZWN0LWF0dHJpYnV0ZXMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlJC5nZXRWYWx1ZSgpID09PSBGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUuU2VsZWN0QXR0cmlidXRlcz8gJ2FjdGl2ZScgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRGaWx0ZXJDcml0ZXJpYVNlbGVjdGlvbk1vZGUoRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLlNlbGVjdEF0dHJpYnV0ZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj4tLT5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1hY3Rpb25zPlxuICAgICAgICAgICAgICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWNyaXRlcmlhLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGNyaXRlcml1bSBvZiBmaWx0ZXJDcml0ZXJpYTsgdHJhY2sgY3JpdGVyaXVtOyBsZXQgIGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1maWx0ZXItY3JpdGVyaXVtXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3JpdGVyaXVtXSA9IFwiY3JpdGVyaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRlbnRdPVwiaSowLjhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUNyaXRlcml1bSk9XCJkZWxldGVGaWx0ZXJDcml0ZXJpdW0oaSlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtZmlsdGVyLWNyaXRlcml1bT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWw+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLWFwcGx5LWJ1dHRvbi1yb3dcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeS1idXR0b25cIiBbbmdDbGFzc109XCJmaWx0ZXJDcml0ZXJpYS5sZW5ndGg9PT0wID8gJ2Rpc2FibGVkJyA6ICcnXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVyKClcIj4ge3tcIl9BcHBseSBmaWx0ZXJcIiB8IHRyYW5zbGF0ZX19IDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLXNlcGFyYXRvclwiPjwvZGl2PlxuXG4gICAgICAgICAgICBAc3dpdGNoKGZpbHRlckNyaXRlcmlhU2VsZWN0aW9uTW9kZSQuZ2V0VmFsdWUoKSl7XG4gICAgICAgICAgICAgICAgQGNhc2UoRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLlNlbGVjdE9iamVjdFByb3BlcnRpZXMpe1xuICAgICAgICAgICAgICAgICAgICBAaWYoIXNlbGVjdGVkT2JqZWN0SWQpe1xuICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9XCJOb09iamVjdFNlbGVjdGVkXCI+e3sgXCJfTm9PYmplY3RTZWxlY3RlZFwiIHwgdHJhbnNsYXRlfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIH1AZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxhYmxlLWNvbnRlbnQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwaV09XCJhcGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkTGFuZ3VhZ2VdPVwic2VsZWN0ZWRMYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9jYWxpemVkU3RyaW5nc109XCJsb2NhbGl6ZWRTdHJpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZmlsdGVyQ3JpdGVyaWEpXT1cImZpbHRlckNyaXRlcmlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb290T2JqZWN0SWRdPVwic2VsZWN0ZWRPYmplY3RJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVyQ3JpdGVyaWFDaGFuZ2UpPVwiYWN0aXZhdGVNb2RpZmllZEN1c3RvbUZpbHRlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWItY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGNhc2UoRmlsdGVyQ3JpdGVyaWFTZWxlY3Rpb25Nb2RlLlNlbGVjdEF0dHJpYnV0ZXMpe1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBkZWZhdWx0e1xuICAgICAgICAgICAgICAgICAgICBAaWYgKGZpbHRlclJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGFibGUtY29udGVudC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWJpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItb2JqZWN0LWZpbHRlci1yZXN1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJSZXN1bHRdPVwiZmlsdGVyUmVzdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZE9iamVjdHNdPVwic2VsZWN0ZWRPYmplY3RzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlU2VsZWN0aW9uQ2hhbmdlZCk9XCJoYW5kbGVGaWx0ZXJSZXN1bHRTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVEb3VibGVDbGlja2VkKT1cImhhbmRsZUZpbHRlclJlc3VsT2JqZWN0RG91YmxlQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlTW91c2VFbnRlcmVkKT1cImhhbmRsZUZpbHRlclJlc3VsT2JqZWN0TW91c2VFbnRlcmVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVNb3VzZUxlZnQpPVwiaGFuZGxlRmlsdGVyUmVzdWxPYmplY3RNb3VzZUxlZnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2xpYi1vYmplY3QtZmlsdGVyLXJlc3VsdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgPGRpdiBkYXRhLXRlc3Q9XCJvYmplY3QtbmF2aWdhdG9yLW5vLWZpbHRlci10eXBlcy1tZXNzYWdlXCIgY2xhc3M9XCJvYmplY3QtbmF2aWdhdG9yLW5vLWZpbHRlci10eXBlc1wiPiB7e1wiX05vX3Zpc2libGVfbW9kZWxzX2ZvdW5kXCIgfCB0cmFuc2xhdGV9fSA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9saWItYmltcGx1cy1zaWRlbmF2LWRyYXdlci1jb250ZW50PlxuIl19