@alfresco/aca-content 4.0.0-4895233349

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 (264) hide show
  1. package/README.md +24 -0
  2. package/about/about.component.d.ts +45 -0
  3. package/about/aca-about.module.d.ts +39 -0
  4. package/about/dev-mode.tokens.d.ts +25 -0
  5. package/about/index.d.ts +5 -0
  6. package/about/package-json.token.d.ts +25 -0
  7. package/about/public-api.d.ts +27 -0
  8. package/assets/app.extensions.json +2626 -0
  9. package/assets/i18n/ar.json +660 -0
  10. package/assets/i18n/cs.json +660 -0
  11. package/assets/i18n/da.json +660 -0
  12. package/assets/i18n/de.json +660 -0
  13. package/assets/i18n/en.json +660 -0
  14. package/assets/i18n/es.json +660 -0
  15. package/assets/i18n/fi.json +660 -0
  16. package/assets/i18n/fr.json +660 -0
  17. package/assets/i18n/it.json +660 -0
  18. package/assets/i18n/ja.json +660 -0
  19. package/assets/i18n/nb.json +660 -0
  20. package/assets/i18n/nl.json +660 -0
  21. package/assets/i18n/pl.json +660 -0
  22. package/assets/i18n/pt-BR.json +660 -0
  23. package/assets/i18n/ru.json +660 -0
  24. package/assets/i18n/sv.json +660 -0
  25. package/assets/i18n/zh-CN.json +660 -0
  26. package/assets/images/Wallpaper-BG-generic.svg +39 -0
  27. package/assets/images/adf-move-file-24px.svg +1 -0
  28. package/assets/images/baseline-library_books-24px.svg +2 -0
  29. package/assets/images/baseline-lock-24px.svg +1 -0
  30. package/assets/images/join-library.svg +32 -0
  31. package/esm2020/about/about.component.mjs +77 -0
  32. package/esm2020/about/aca-about.module.mjs +67 -0
  33. package/esm2020/about/alfresco-aca-content-about.mjs +5 -0
  34. package/esm2020/about/dev-mode.tokens.mjs +26 -0
  35. package/esm2020/about/package-json.token.mjs +26 -0
  36. package/esm2020/about/public-api.mjs +28 -0
  37. package/esm2020/alfresco-aca-content.mjs +5 -0
  38. package/esm2020/lib/aca-content.module.mjs +365 -0
  39. package/esm2020/lib/aca-content.routes.mjs +581 -0
  40. package/esm2020/lib/components/common/common.module.mjs +67 -0
  41. package/esm2020/lib/components/common/language-picker/language-picker.component.mjs +57 -0
  42. package/esm2020/lib/components/common/location-link/location-link.component.mjs +177 -0
  43. package/esm2020/lib/components/common/logout/logout.component.mjs +60 -0
  44. package/esm2020/lib/components/common/toggle-shared/toggle-shared.component.mjs +65 -0
  45. package/esm2020/lib/components/common/user-info/user-info.component.mjs +86 -0
  46. package/esm2020/lib/components/context-menu/context-menu-item.component.mjs +58 -0
  47. package/esm2020/lib/components/context-menu/context-menu-outside-event.directive.mjs +65 -0
  48. package/esm2020/lib/components/context-menu/context-menu-overlay.mjs +32 -0
  49. package/esm2020/lib/components/context-menu/context-menu.component.mjs +102 -0
  50. package/esm2020/lib/components/context-menu/context-menu.module.mjs +76 -0
  51. package/esm2020/lib/components/context-menu/context-menu.service.mjs +103 -0
  52. package/esm2020/lib/components/context-menu/direction.token.mjs +29 -0
  53. package/esm2020/lib/components/context-menu/interfaces.mjs +25 -0
  54. package/esm2020/lib/components/create-menu/create-menu.component.mjs +73 -0
  55. package/esm2020/lib/components/create-menu/create-menu.module.mjs +44 -0
  56. package/esm2020/lib/components/details/details.component.mjs +99 -0
  57. package/esm2020/lib/components/dl-custom-components/document-list-custom-components.module.mjs +49 -0
  58. package/esm2020/lib/components/dl-custom-components/name-column/name-column.component.mjs +90 -0
  59. package/esm2020/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +31 -0
  60. package/esm2020/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +51 -0
  61. package/esm2020/lib/components/favorite-libraries/favorite-libraries.component.mjs +113 -0
  62. package/esm2020/lib/components/favorites/favorites.component.mjs +98 -0
  63. package/esm2020/lib/components/files/files.component.mjs +312 -0
  64. package/esm2020/lib/components/home/home.component.mjs +49 -0
  65. package/esm2020/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +56 -0
  66. package/esm2020/lib/components/info-drawer/info.drawer.module.mjs +92 -0
  67. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +143 -0
  68. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +42 -0
  69. package/esm2020/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +88 -0
  70. package/esm2020/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +95 -0
  71. package/esm2020/lib/components/libraries/libraries.component.mjs +70 -0
  72. package/esm2020/lib/components/node-version/node-version-form.component.mjs +70 -0
  73. package/esm2020/lib/components/node-version/node-version.module.mjs +78 -0
  74. package/esm2020/lib/components/recent-files/recent-files.component.mjs +81 -0
  75. package/esm2020/lib/components/search/search-action-menu/search-action-menu.component.mjs +59 -0
  76. package/esm2020/lib/components/search/search-input/search-input.component.mjs +275 -0
  77. package/esm2020/lib/components/search/search-input-control/search-input-control.component.mjs +87 -0
  78. package/esm2020/lib/components/search/search-input.module.mjs +47 -0
  79. package/esm2020/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +91 -0
  80. package/esm2020/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +142 -0
  81. package/esm2020/lib/components/search/search-navigation.service.mjs +60 -0
  82. package/esm2020/lib/components/search/search-results/search-results.component.mjs +221 -0
  83. package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +101 -0
  84. package/esm2020/lib/components/search/search-results.module.mjs +88 -0
  85. package/esm2020/lib/components/shared-files/shared-files.component.mjs +78 -0
  86. package/esm2020/lib/components/shared-link-view/shared-link-view.component.mjs +81 -0
  87. package/esm2020/lib/components/shared-link-view/shared-link-view.module.mjs +69 -0
  88. package/esm2020/lib/components/sidenav/components/button-menu.component.mjs +57 -0
  89. package/esm2020/lib/components/sidenav/components/expand-menu.component.mjs +53 -0
  90. package/esm2020/lib/components/sidenav/components/sidenav-header.component.mjs +74 -0
  91. package/esm2020/lib/components/sidenav/directives/action.directive.mjs +74 -0
  92. package/esm2020/lib/components/sidenav/directives/active-link.directive.mjs +92 -0
  93. package/esm2020/lib/components/sidenav/directives/expansion-panel.directive.mjs +101 -0
  94. package/esm2020/lib/components/sidenav/directives/menu-panel.directive.mjs +98 -0
  95. package/esm2020/lib/components/sidenav/sidenav.component.mjs +83 -0
  96. package/esm2020/lib/components/sidenav/sidenav.module.mjs +84 -0
  97. package/esm2020/lib/components/toolbar/document-display-mode/document-display-mode.component.mjs +84 -0
  98. package/esm2020/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +150 -0
  99. package/esm2020/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +79 -0
  100. package/esm2020/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +101 -0
  101. package/esm2020/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +75 -0
  102. package/esm2020/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +98 -0
  103. package/esm2020/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.mjs +80 -0
  104. package/esm2020/lib/components/toolbar/toolbar.module.mjs +88 -0
  105. package/esm2020/lib/components/toolbar/view-node/view-node.component.mjs +109 -0
  106. package/esm2020/lib/components/trashcan/trashcan.component.mjs +63 -0
  107. package/esm2020/lib/components/trashcan/trashcan.module.mjs +74 -0
  108. package/esm2020/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +50 -0
  109. package/esm2020/lib/components/view-profile/view-profile.component.mjs +174 -0
  110. package/esm2020/lib/components/view-profile/view-profile.guard.mjs +47 -0
  111. package/esm2020/lib/components/view-profile/view-profile.module.mjs +42 -0
  112. package/esm2020/lib/dialogs/node-template/create-from-template.dialog.mjs +119 -0
  113. package/esm2020/lib/directives/directives.module.mjs +42 -0
  114. package/esm2020/lib/directives/document-list.directive.mjs +141 -0
  115. package/esm2020/lib/extensions/core.extensions.module.mjs +64 -0
  116. package/esm2020/lib/material.module.mjs +57 -0
  117. package/esm2020/lib/services/content-management.service.mjs +870 -0
  118. package/esm2020/lib/services/content-service-extension.service.mjs +63 -0
  119. package/esm2020/lib/services/content-url.service.mjs +72 -0
  120. package/esm2020/lib/services/node-actions.service.mjs +600 -0
  121. package/esm2020/lib/services/node-template.service.mjs +149 -0
  122. package/esm2020/lib/store/app-store.module.mjs +95 -0
  123. package/esm2020/lib/store/effects/app.effects.mjs +61 -0
  124. package/esm2020/lib/store/effects/contextmenu.effects.mjs +55 -0
  125. package/esm2020/lib/store/effects/download.effects.mjs +159 -0
  126. package/esm2020/lib/store/effects/favorite.effects.mjs +76 -0
  127. package/esm2020/lib/store/effects/library.effects.mjs +111 -0
  128. package/esm2020/lib/store/effects/node.effects.mjs +309 -0
  129. package/esm2020/lib/store/effects/search.effects.mjs +60 -0
  130. package/esm2020/lib/store/effects/template.effects.mjs +121 -0
  131. package/esm2020/lib/store/effects/upload.effects.mjs +169 -0
  132. package/esm2020/lib/store/effects/viewer.effects.mjs +175 -0
  133. package/esm2020/lib/store/effects.mjs +35 -0
  134. package/esm2020/lib/store/initial-state.mjs +62 -0
  135. package/esm2020/lib/store/reducers/app.reducer.mjs +211 -0
  136. package/esm2020/public-api.mjs +32 -0
  137. package/fesm2015/alfresco-aca-content-about.mjs +216 -0
  138. package/fesm2015/alfresco-aca-content-about.mjs.map +1 -0
  139. package/fesm2015/alfresco-aca-content.mjs +9771 -0
  140. package/fesm2015/alfresco-aca-content.mjs.map +1 -0
  141. package/fesm2020/alfresco-aca-content-about.mjs +214 -0
  142. package/fesm2020/alfresco-aca-content-about.mjs.map +1 -0
  143. package/fesm2020/alfresco-aca-content.mjs +9915 -0
  144. package/fesm2020/alfresco-aca-content.mjs.map +1 -0
  145. package/index.d.ts +5 -0
  146. package/lib/aca-content.module.d.ts +47 -0
  147. package/lib/aca-content.routes.d.ts +27 -0
  148. package/lib/components/common/common.module.d.ts +17 -0
  149. package/lib/components/common/language-picker/language-picker.component.d.ts +5 -0
  150. package/lib/components/common/location-link/location-link.component.d.ts +48 -0
  151. package/lib/components/common/logout/logout.component.d.ts +10 -0
  152. package/lib/components/common/toggle-shared/toggle-shared.component.d.ts +43 -0
  153. package/lib/components/common/user-info/user-info.component.d.ts +44 -0
  154. package/lib/components/context-menu/context-menu-item.component.d.ts +13 -0
  155. package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +35 -0
  156. package/lib/components/context-menu/context-menu-overlay.d.ts +29 -0
  157. package/lib/components/context-menu/context-menu.component.d.ts +48 -0
  158. package/lib/components/context-menu/context-menu.module.d.ts +18 -0
  159. package/lib/components/context-menu/context-menu.service.d.ts +43 -0
  160. package/lib/components/context-menu/direction.token.d.ts +25 -0
  161. package/lib/components/context-menu/interfaces.d.ts +30 -0
  162. package/lib/components/create-menu/create-menu.component.d.ts +42 -0
  163. package/lib/components/create-menu/create-menu.module.d.ts +10 -0
  164. package/lib/components/details/details.component.d.ts +46 -0
  165. package/lib/components/dl-custom-components/document-list-custom-components.module.d.ts +14 -0
  166. package/lib/components/dl-custom-components/name-column/name-column.component.d.ts +41 -0
  167. package/lib/components/dl-custom-components/tags-column/tags-column.component.d.ts +35 -0
  168. package/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.d.ts +17 -0
  169. package/lib/components/favorite-libraries/favorite-libraries.component.d.ts +54 -0
  170. package/lib/components/favorites/favorites.component.d.ts +49 -0
  171. package/lib/components/files/files.component.d.ts +55 -0
  172. package/lib/components/home/home.component.d.ts +36 -0
  173. package/lib/components/info-drawer/comments-tab/comments-tab.component.d.ts +11 -0
  174. package/lib/components/info-drawer/info.drawer.module.d.ts +19 -0
  175. package/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.d.ts +64 -0
  176. package/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.d.ts +7 -0
  177. package/lib/components/info-drawer/metadata-tab/metadata-tab.component.d.ts +49 -0
  178. package/lib/components/info-drawer/versions-tab/versions-tab.component.d.ts +35 -0
  179. package/lib/components/libraries/libraries.component.d.ts +44 -0
  180. package/lib/components/node-version/node-version-form.component.d.ts +46 -0
  181. package/lib/components/node-version/node-version.module.d.ts +16 -0
  182. package/lib/components/recent-files/recent-files.component.d.ts +48 -0
  183. package/lib/components/search/search-action-menu/search-action-menu.component.d.ts +38 -0
  184. package/lib/components/search/search-input/search-input.component.d.ts +85 -0
  185. package/lib/components/search/search-input-control/search-input-control.component.d.ts +50 -0
  186. package/lib/components/search/search-input.module.d.ts +12 -0
  187. package/lib/components/search/search-libraries-results/search-libraries-query-builder.service.d.ts +56 -0
  188. package/lib/components/search/search-libraries-results/search-libraries-results.component.d.ts +58 -0
  189. package/lib/components/search/search-navigation.service.d.ts +13 -0
  190. package/lib/components/search/search-results/search-results.component.d.ts +69 -0
  191. package/lib/components/search/search-results-row/search-results-row.component.d.ts +50 -0
  192. package/lib/components/search/search-results.module.d.ts +21 -0
  193. package/lib/components/shared-files/shared-files.component.d.ts +47 -0
  194. package/lib/components/shared-link-view/shared-link-view.component.d.ts +47 -0
  195. package/lib/components/shared-link-view/shared-link-view.module.d.ts +15 -0
  196. package/lib/components/sidenav/components/button-menu.component.d.ts +37 -0
  197. package/lib/components/sidenav/components/expand-menu.component.d.ts +35 -0
  198. package/lib/components/sidenav/components/sidenav-header.component.d.ts +48 -0
  199. package/lib/components/sidenav/directives/action.directive.d.ts +14 -0
  200. package/lib/components/sidenav/directives/active-link.directive.d.ts +45 -0
  201. package/lib/components/sidenav/directives/expansion-panel.directive.d.ts +44 -0
  202. package/lib/components/sidenav/directives/menu-panel.directive.d.ts +42 -0
  203. package/lib/components/sidenav/sidenav.component.d.ts +50 -0
  204. package/lib/components/sidenav/sidenav.module.d.ts +19 -0
  205. package/lib/components/toolbar/document-display-mode/document-display-mode.component.d.ts +13 -0
  206. package/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.d.ts +47 -0
  207. package/lib/components/toolbar/toggle-favorite/toggle-favorite.component.d.ts +42 -0
  208. package/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.d.ts +42 -0
  209. package/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.d.ts +11 -0
  210. package/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.d.ts +41 -0
  211. package/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.d.ts +10 -0
  212. package/lib/components/toolbar/toolbar.module.d.ts +20 -0
  213. package/lib/components/toolbar/view-node/view-node.component.d.ts +19 -0
  214. package/lib/components/trashcan/trashcan.component.d.ts +42 -0
  215. package/lib/components/trashcan/trashcan.module.d.ts +16 -0
  216. package/lib/components/upload-files-dialog/upload-files-dialog.component.d.ts +37 -0
  217. package/lib/components/view-profile/view-profile.component.d.ts +59 -0
  218. package/lib/components/view-profile/view-profile.guard.d.ts +12 -0
  219. package/lib/components/view-profile/view-profile.module.d.ts +9 -0
  220. package/lib/dialogs/node-template/create-from-template.dialog.d.ts +49 -0
  221. package/lib/directives/directives.module.d.ts +9 -0
  222. package/lib/directives/document-list.directive.d.ts +56 -0
  223. package/lib/extensions/core.extensions.module.d.ts +14 -0
  224. package/lib/material.module.d.ts +14 -0
  225. package/lib/services/content-management.service.d.ts +100 -0
  226. package/lib/services/content-service-extension.service.d.ts +11 -0
  227. package/lib/services/content-url.service.d.ts +17 -0
  228. package/lib/services/node-actions.service.d.ts +93 -0
  229. package/lib/services/node-template.service.d.ts +34 -0
  230. package/lib/store/app-store.module.d.ts +10 -0
  231. package/lib/store/effects/app.effects.d.ts +41 -0
  232. package/lib/store/effects/contextmenu.effects.d.ts +12 -0
  233. package/lib/store/effects/download.effects.d.ts +49 -0
  234. package/lib/store/effects/favorite.effects.d.ts +38 -0
  235. package/lib/store/effects/library.effects.d.ts +43 -0
  236. package/lib/store/effects/node.effects.d.ts +56 -0
  237. package/lib/store/effects/search.effects.d.ts +37 -0
  238. package/lib/store/effects/template.effects.d.ts +54 -0
  239. package/lib/store/effects/upload.effects.d.ts +52 -0
  240. package/lib/store/effects/viewer.effects.d.ts +55 -0
  241. package/lib/store/effects.d.ts +34 -0
  242. package/lib/store/initial-state.d.ts +26 -0
  243. package/lib/store/reducers/app.reducer.d.ts +26 -0
  244. package/package.json +47 -0
  245. package/public-api.d.ts +28 -0
  246. package/ui/application.scss +53 -0
  247. package/ui/colors.scss +96 -0
  248. package/ui/custom-theme.scss +34 -0
  249. package/ui/dynamic-theme/custom-background-color.scss +14 -0
  250. package/ui/dynamic-theme/custom-palette-creator.scss +132 -0
  251. package/ui/dynamic-theme/custom-text-color.scss +8 -0
  252. package/ui/dynamic-theme/custom-theme-palettes.scss +33 -0
  253. package/ui/dynamic-theme/custom-theme.scss.tpl +72 -0
  254. package/ui/dynamic-theme/index.scss +1 -0
  255. package/ui/dynamic-theme/theme-configuration.scss.tpl +14 -0
  256. package/ui/dynamic-theme/typography.scss +94 -0
  257. package/ui/mixins.scss +26 -0
  258. package/ui/overrides/adf-about.theme.scss +38 -0
  259. package/ui/overrides/adf-pagination.theme.scss +46 -0
  260. package/ui/overrides/adf-style-fixes.theme.scss +18 -0
  261. package/ui/overrides/ay11.scss +232 -0
  262. package/ui/theme.scss +55 -0
  263. package/ui/variables/font-family.scss +1 -0
  264. package/ui/variables/variables.scss +92 -0
@@ -0,0 +1,312 @@
1
+ /*!
2
+ * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
3
+ *
4
+ * Alfresco Example Content Application
5
+ *
6
+ * This file is part of the Alfresco Example Content Application.
7
+ * If the software was purchased under a paid Alfresco license, the terms of
8
+ * the paid license agreement will prevail. Otherwise, the software is
9
+ * provided under the following open source license terms:
10
+ *
11
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
+ * it under the terms of the GNU Lesser General Public License as published by
13
+ * the Free Software Foundation, either version 3 of the License, or
14
+ * (at your option) any later version.
15
+ *
16
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
+ */
24
+ import { ShowHeaderMode } from '@alfresco/adf-core';
25
+ import { Component } from '@angular/core';
26
+ import { ActivatedRoute, Router } from '@angular/router';
27
+ import { Store } from '@ngrx/store';
28
+ import { ContentManagementService } from '../../services/content-management.service';
29
+ import { NodeActionsService } from '../../services/node-actions.service';
30
+ import { AcaFileAutoDownloadService, AppExtensionService, ContentApiService, PageComponent } from '@alfresco/aca-shared';
31
+ import { SetCurrentFolderAction, isAdmin, UploadFileVersionAction, showLoaderSelector } from '@alfresco/aca-shared/store';
32
+ import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
33
+ import { debounceTime, takeUntil } from 'rxjs/operators';
34
+ import { UploadService } from '@alfresco/adf-content-services';
35
+ import * as i0 from "@angular/core";
36
+ import * as i1 from "@angular/router";
37
+ import * as i2 from "@alfresco/aca-shared";
38
+ import * as i3 from "@ngrx/store";
39
+ import * as i4 from "../../services/node-actions.service";
40
+ import * as i5 from "@alfresco/adf-content-services";
41
+ import * as i6 from "../../services/content-management.service";
42
+ import * as i7 from "@angular/cdk/layout";
43
+ import * as i8 from "@angular/common";
44
+ import * as i9 from "@angular/material/progress-spinner";
45
+ import * as i10 from "@alfresco/adf-core";
46
+ import * as i11 from "@alfresco/adf-extensions";
47
+ import * as i12 from "../../directives/document-list.directive";
48
+ import * as i13 from "@ngx-translate/core";
49
+ export class FilesComponent extends PageComponent {
50
+ constructor(router, route, contentApi, store, nodeActionsService, uploadService, content, extensions, breakpointObserver, fileAutoDownloadService) {
51
+ super(store, extensions, content, fileAutoDownloadService);
52
+ this.router = router;
53
+ this.route = route;
54
+ this.contentApi = contentApi;
55
+ this.nodeActionsService = nodeActionsService;
56
+ this.uploadService = uploadService;
57
+ this.breakpointObserver = breakpointObserver;
58
+ this.isValidPath = true;
59
+ this.isSmallScreen = false;
60
+ this.isAdmin = false;
61
+ this.queryParams = null;
62
+ this.columns = [];
63
+ }
64
+ ngOnInit() {
65
+ super.ngOnInit();
66
+ const { route, nodeActionsService, uploadService } = this;
67
+ const { data } = route.snapshot;
68
+ this.title = data.title;
69
+ this.showLoader$ = this.store.select(showLoaderSelector);
70
+ route.queryParamMap.subscribe((queryMap) => {
71
+ this.queryParams = queryMap.params;
72
+ });
73
+ route.params.subscribe(({ folderId }) => {
74
+ const nodeId = folderId || data.defaultNodeId;
75
+ this.contentApi.getNode(nodeId).subscribe((node) => {
76
+ this.isValidPath = true;
77
+ if (node.entry && node.entry.isFolder) {
78
+ this.updateCurrentNode(node.entry);
79
+ }
80
+ else {
81
+ this.router.navigate(['/personal-files', node.entry.parentId], {
82
+ replaceUrl: true
83
+ });
84
+ }
85
+ }, () => (this.isValidPath = false));
86
+ });
87
+ this.subscriptions = this.subscriptions.concat([
88
+ nodeActionsService.contentCopied.subscribe((nodes) => this.onContentCopied(nodes)),
89
+ uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe((file) => this.onFileUploadedEvent(file)),
90
+ uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe((file) => this.onFileUploadedEvent(file)),
91
+ this.breakpointObserver.observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape]).subscribe((result) => {
92
+ this.isSmallScreen = result.matches;
93
+ })
94
+ ]);
95
+ this.store
96
+ .select(isAdmin)
97
+ .pipe(takeUntil(this.onDestroy$))
98
+ .subscribe((value) => {
99
+ this.isAdmin = value;
100
+ });
101
+ this.columns = this.extensions.documentListPresets.files || [];
102
+ }
103
+ ngOnDestroy() {
104
+ this.store.dispatch(new SetCurrentFolderAction(null));
105
+ super.ngOnDestroy();
106
+ }
107
+ navigate(nodeId = null) {
108
+ const currentNodeId = this.route.snapshot.paramMap.get('folderId');
109
+ const urlWithoutParams = decodeURIComponent(this.router.url).split('?')[0];
110
+ const urlToNavigate = this.getUrlToNavigate(urlWithoutParams, currentNodeId, nodeId);
111
+ this.router.navigate(urlToNavigate);
112
+ }
113
+ getUrlToNavigate(currentURL, currentNodeId, nextNodeId) {
114
+ return currentNodeId ? this.getNextNodeUrlToNavigate(currentURL, currentNodeId, nextNodeId) : this.appendNextNodeIdToUrl(currentURL, nextNodeId);
115
+ }
116
+ getNextNodeUrlToNavigate(currentURL, currentNodeId, nextNodeId) {
117
+ const urlToNavigate = nextNodeId && !this.isRootNode(nextNodeId)
118
+ ? this.replaceCurrentNodeIdWithNextNodeId(currentURL, currentNodeId, nextNodeId)
119
+ : this.removeNodeIdFromUrl(currentURL, currentNodeId);
120
+ urlToNavigate.shift();
121
+ return urlToNavigate;
122
+ }
123
+ replaceCurrentNodeIdWithNextNodeId(currentURL, currentNodeId, nextNodeId) {
124
+ const nextNodeUrlToNavigate = currentURL.split('/');
125
+ const index = nextNodeUrlToNavigate.indexOf(currentNodeId);
126
+ if (index > 0) {
127
+ nextNodeUrlToNavigate[index] = nextNodeId;
128
+ }
129
+ return nextNodeUrlToNavigate;
130
+ }
131
+ removeNodeIdFromUrl(currentURL, currentNodeId) {
132
+ const rootUrl = currentURL.replace(currentNodeId, '').split('/');
133
+ rootUrl.pop();
134
+ return rootUrl;
135
+ }
136
+ appendNextNodeIdToUrl(currentURL, nodeId) {
137
+ const navigateToNodeUrl = currentURL.split('/');
138
+ if (nodeId && !this.isRootNode(nodeId)) {
139
+ navigateToNodeUrl.push(nodeId);
140
+ }
141
+ navigateToNodeUrl.shift();
142
+ return navigateToNodeUrl;
143
+ }
144
+ onUploadNewVersion(ev) {
145
+ this.store.dispatch(new UploadFileVersionAction(ev));
146
+ }
147
+ navigateTo(node) {
148
+ if (node && node.entry) {
149
+ this.selectedNode = node;
150
+ const { isFolder } = node.entry;
151
+ if (isFolder) {
152
+ let id;
153
+ if (node.entry.nodeType === 'app:folderlink') {
154
+ id = node.entry.properties['cm:destination'];
155
+ }
156
+ else {
157
+ id = node.entry.id;
158
+ }
159
+ this.documentList.resetNewFolderPagination();
160
+ this.navigate(id);
161
+ return;
162
+ }
163
+ this.showPreview(node, { location: this.router.url });
164
+ }
165
+ }
166
+ handleNodeClick(event) {
167
+ this.navigateTo(event.detail?.node);
168
+ }
169
+ onBreadcrumbNavigate(route) {
170
+ this.documentList.resetNewFolderPagination();
171
+ // todo: review this approach once 5.2.3 is out
172
+ if (this.nodePath && this.nodePath.length > 2) {
173
+ if (this.nodePath[1].name === 'Sites' && this.nodePath[2].id === route.id) {
174
+ return this.navigate(this.nodePath[3].id);
175
+ }
176
+ }
177
+ this.navigate(route.id);
178
+ }
179
+ onFileUploadedEvent(event) {
180
+ const node = event.file.data;
181
+ // check root and child nodes
182
+ if (node && node.entry && node.entry.parentId === this.getParentNodeId()) {
183
+ this.reload(this.selectedNode);
184
+ return;
185
+ }
186
+ // check the child nodes to show dropped folder
187
+ if (event && event.file.options.parentId === this.getParentNodeId()) {
188
+ this.displayFolderParent(event.file.options.path, 0);
189
+ return;
190
+ }
191
+ if (event && event.file.options.parentId) {
192
+ if (this.nodePath) {
193
+ const correspondingNodePath = this.nodePath.find((pathItem) => pathItem.id === event.file.options.parentId);
194
+ // check if the current folder has the 'trigger-upload-folder' as one of its parents
195
+ if (correspondingNodePath) {
196
+ const correspondingIndex = this.nodePath.length - this.nodePath.indexOf(correspondingNodePath);
197
+ this.displayFolderParent(event.file.options.path, correspondingIndex);
198
+ }
199
+ }
200
+ }
201
+ }
202
+ displayFolderParent(filePath = '', index) {
203
+ const parentName = filePath.split('/')[index];
204
+ const currentFoldersDisplayed = this.documentList.data.getRows() || [];
205
+ const alreadyDisplayedParentFolder = currentFoldersDisplayed.find((row) => row.node.entry.isFolder && row.node.entry.name === parentName);
206
+ if (alreadyDisplayedParentFolder) {
207
+ return;
208
+ }
209
+ this.reload(this.selectedNode);
210
+ }
211
+ onContentCopied(nodes) {
212
+ const newNode = nodes.find((node) => node && node.entry && node.entry.parentId === this.getParentNodeId());
213
+ if (newNode) {
214
+ this.reload(this.selectedNode);
215
+ }
216
+ }
217
+ // todo: review this approach once 5.2.3 is out
218
+ async updateCurrentNode(node) {
219
+ this.nodePath = null;
220
+ if (node && node.path && node.path.elements) {
221
+ const elements = node.path.elements;
222
+ this.nodePath = elements.map((pathElement) => Object.assign({}, pathElement));
223
+ if (elements.length > 1) {
224
+ if (elements[1].name === 'User Homes') {
225
+ if (!this.isAdmin) {
226
+ elements.splice(0, 2);
227
+ }
228
+ }
229
+ else if (elements[1].name === 'Sites') {
230
+ await this.normalizeSitePath(node);
231
+ }
232
+ }
233
+ }
234
+ this.node = node;
235
+ this.store.dispatch(new SetCurrentFolderAction(node));
236
+ }
237
+ // todo: review this approach once 5.2.3 is out
238
+ async normalizeSitePath(node) {
239
+ const elements = node.path.elements;
240
+ // remove 'Sites'
241
+ elements.splice(1, 1);
242
+ if (this.isSiteContainer(node)) {
243
+ // rename 'documentLibrary' entry to the target site display name
244
+ // clicking on the breadcrumb entry loads the site content
245
+ const parentNode = await this.contentApi.getNodeInfo(node.parentId).toPromise();
246
+ node.name = parentNode.properties['cm:title'] || parentNode.name;
247
+ // remove the site entry
248
+ elements.splice(1, 1);
249
+ }
250
+ else {
251
+ // remove 'documentLibrary' in the middle of the path
252
+ const docLib = elements.findIndex((el) => el.name === 'documentLibrary');
253
+ if (docLib > -1) {
254
+ const siteFragment = elements[docLib - 1];
255
+ const siteNode = await this.contentApi.getNodeInfo(siteFragment.id).toPromise();
256
+ // apply Site Name to the parent fragment
257
+ siteFragment.name = siteNode.properties['cm:title'] || siteNode.name;
258
+ elements.splice(docLib, 1);
259
+ }
260
+ }
261
+ }
262
+ isSiteContainer(node) {
263
+ if (node && node.aspectNames && node.aspectNames.length > 0) {
264
+ return node.aspectNames.indexOf('st:siteContainer') >= 0;
265
+ }
266
+ return false;
267
+ }
268
+ isRootNode(nodeId) {
269
+ if (this.node && this.node.path && this.node.path.elements && this.node.path.elements.length > 0) {
270
+ return this.node.path.elements[0].id === nodeId;
271
+ }
272
+ return false;
273
+ }
274
+ onFilterSelected(activeFilters) {
275
+ if (activeFilters.length) {
276
+ this.showHeader = ShowHeaderMode.Always;
277
+ this.navigateToFilter(activeFilters);
278
+ }
279
+ else {
280
+ this.router.navigate(['.'], { relativeTo: this.route });
281
+ this.showHeader = ShowHeaderMode.Data;
282
+ this.onAllFilterCleared();
283
+ }
284
+ }
285
+ navigateToFilter(activeFilters) {
286
+ const objectFromMap = {};
287
+ activeFilters.forEach((filter) => {
288
+ let paramValue;
289
+ if (filter.value && filter.value.from && filter.value.to) {
290
+ paramValue = `${filter.value.from}||${filter.value.to}`;
291
+ }
292
+ else {
293
+ paramValue = filter.value;
294
+ }
295
+ objectFromMap[filter.key] = paramValue;
296
+ });
297
+ this.router.navigate([], { relativeTo: this.route, queryParams: objectFromMap });
298
+ }
299
+ isFilterHeaderActive() {
300
+ return this.showHeader === ShowHeaderMode.Always;
301
+ }
302
+ onError() {
303
+ this.isValidPath = false;
304
+ }
305
+ }
306
+ FilesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FilesComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.ContentApiService }, { token: i3.Store }, { token: i4.NodeActionsService }, { token: i5.UploadService }, { token: i6.ContentManagementService }, { token: i2.AppExtensionService }, { token: i7.BreakpointObserver }, { token: i2.AcaFileAutoDownloadService }], target: i0.ɵɵFactoryTarget.Component });
307
+ FilesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: FilesComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<aca-page-layout [hasError]=\"!isValidPath\">\n <aca-page-layout-header>\n <adf-breadcrumb [root]=\"title\" [folderNode]=\"node\" [maxItems]=\"isSmallScreen ? 1 : 0\" (navigate)=\"onBreadcrumbNavigate($event)\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-error>\n <aca-generic-error></aca-generic-error>\n </aca-page-layout-error>\n\n <aca-page-layout-content>\n <div class=\"main-content\" *ngIf=\"!(showLoader$ | async)\">\n <adf-upload-drag-area [rootFolderId]=\"node?.id\" [disabled]=\"!canUpload\" (updateFileVersion)=\"onUploadNewVersion($event)\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n selectionMode=\"multiple\"\n [currentFolderId]=\"node?.id\"\n [loading]=\"true\"\n [showHeader]=\"showHeader\"\n [node]=\"nodeResult\"\n [allowDropFiles]=\"true\"\n [navigate]=\"false\"\n [sorting]=\"['name', 'ASC']\"\n [imageResolver]=\"imageResolver\"\n [headerFilters]=\"true\"\n [filterValue]=\"queryParams\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n (sorting-changed)=\"onSortingChanged($event)\"\n (filterSelection)=\"onFilterSelected($event)\"\n (error)=\"onError()\"\n >\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n\n <adf-custom-empty-content-template *ngIf=\"isFilterHeaderActive()\">\n <ng-container>\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_FILTER_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </adf-upload-drag-area>\n </div>\n\n <mat-progress-spinner *ngIf=\"showLoader$ | async\"\n id=\"adf-document-list-loading\"\n class=\"adf-document-list-loading-margin\"\n [color]=\"'primary'\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n\n <div class=\"sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n", dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DocumentListComponent, selector: "adf-document-list", inputs: ["includeFields", "where", "display", "permissionsStyle", "locationFormat", "navigate", "showHeader", "navigationMode", "thumbnails", "selectionMode", "multiselect", "contentActions", "contentActionsPosition", "contextMenuActions", "emptyFolderImageUrl", "allowDropFiles", "sorting", "additionalSorting", "sortingMode", "rowStyle", "rowStyleClass", "loading", "_rowFilter", "rowFilter", "imageResolver", "stickyHeader", "headerFilters", "filterValue", "currentFolderId", "preselectNodes", "node", "maxItems"], outputs: ["nodeClick", "nodeDblClick", "folderChange", "preview", "ready", "error", "nodeSelected", "filterSelection"] }, { kind: "component", type: i5.UploadDragAreaComponent, selector: "adf-upload-drag-area" }, { kind: "component", type: i5.BreadcrumbComponent, selector: "adf-breadcrumb", inputs: ["folderNode", "root", "rootId", "target", "transform", "maxItems", "readOnly"], outputs: ["navigate"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.PaginationComponent, selector: "adf-pagination", inputs: ["target", "supportedPageSizes", "pagination"], outputs: ["change", "changePageNumber", "changePageSize", "nextPage", "prevPage"] }, { kind: "component", type: i10.ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "directive", type: i10.CustomEmptyContentTemplateDirective, selector: "adf-custom-empty-content-template, empty-folder-content" }, { kind: "component", type: i10.DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "isHidden", "title", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey"] }, { kind: "component", type: i10.DataColumnListComponent, selector: "data-columns" }, { kind: "component", type: i11.DynamicColumnComponent, selector: "adf-dynamic-column", inputs: ["id", "context"] }, { kind: "directive", type: i2.ContextActionsDirective, selector: "[acaContextActions]", inputs: ["acaContextEnable"], exportAs: ["acaContextActions"] }, { kind: "component", type: i2.GenericErrorComponent, selector: "aca-generic-error", inputs: ["text"] }, { kind: "component", type: i2.PageLayoutContentComponent, selector: "aca-page-layout-content", inputs: ["scrollable"] }, { kind: "component", type: i2.PageLayoutErrorComponent, selector: "aca-page-layout-error" }, { kind: "component", type: i2.PageLayoutHeaderComponent, selector: "aca-page-layout-header" }, { kind: "component", type: i2.PageLayoutComponent, selector: "aca-page-layout", inputs: ["hasError"] }, { kind: "directive", type: i12.DocumentListDirective, selector: "[acaDocumentList]" }, { kind: "directive", type: i2.PaginationDirective, selector: "[acaPagination]" }, { kind: "component", type: i2.InfoDrawerComponent, selector: "aca-info-drawer", inputs: ["nodeId", "node"] }, { kind: "component", type: i2.ToolbarActionComponent, selector: "aca-toolbar-action", inputs: ["data", "type", "color", "actionRef"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }] });
308
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: FilesComponent, decorators: [{
309
+ type: Component,
310
+ args: [{ template: "<aca-page-layout [hasError]=\"!isValidPath\">\n <aca-page-layout-header>\n <adf-breadcrumb [root]=\"title\" [folderNode]=\"node\" [maxItems]=\"isSmallScreen ? 1 : 0\" (navigate)=\"onBreadcrumbNavigate($event)\"> </adf-breadcrumb>\n\n <adf-toolbar class=\"adf-toolbar--inline\">\n <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"entry\"></aca-toolbar-action>\n </ng-container>\n </adf-toolbar>\n </aca-page-layout-header>\n\n <aca-page-layout-error>\n <aca-generic-error></aca-generic-error>\n </aca-page-layout-error>\n\n <aca-page-layout-content>\n <div class=\"main-content\" *ngIf=\"!(showLoader$ | async)\">\n <adf-upload-drag-area [rootFolderId]=\"node?.id\" [disabled]=\"!canUpload\" (updateFileVersion)=\"onUploadNewVersion($event)\">\n <adf-document-list\n #documentList\n acaDocumentList\n acaContextActions\n [display]=\"documentDisplayMode$ | async\"\n selectionMode=\"multiple\"\n [currentFolderId]=\"node?.id\"\n [loading]=\"true\"\n [showHeader]=\"showHeader\"\n [node]=\"nodeResult\"\n [allowDropFiles]=\"true\"\n [navigate]=\"false\"\n [sorting]=\"['name', 'ASC']\"\n [imageResolver]=\"imageResolver\"\n [headerFilters]=\"true\"\n [filterValue]=\"queryParams\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n (sorting-changed)=\"onSortingChanged($event)\"\n (filterSelection)=\"onFilterSelected($event)\"\n (error)=\"onError()\"\n >\n <data-columns>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n <ng-template let-context>\n <adf-dynamic-column [id]=\"column.template\" [context]=\"context\"> </adf-dynamic-column>\n </ng-template>\n </data-column>\n </ng-container>\n\n <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n <data-column\n [key]=\"column.key\"\n [title]=\"column.title\"\n [type]=\"column.type\"\n [format]=\"column.format\"\n [class]=\"column.class\"\n [sortable]=\"column.sortable\"\n [sortingKey]=\"column.sortingKey || column.key\"\n >\n </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n\n <adf-custom-empty-content-template *ngIf=\"isFilterHeaderActive()\">\n <ng-container>\n <div class=\"empty-search__block\" aria-live=\"polite\">\n <p class=\"empty-search__text\">\n {{ 'APP.BROWSE.SEARCH.NO_FILTER_RESULTS' | translate }}\n </p>\n </div>\n </ng-container>\n </adf-custom-empty-content-template>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </adf-upload-drag-area>\n </div>\n\n <mat-progress-spinner *ngIf=\"showLoader$ | async\"\n id=\"adf-document-list-loading\"\n class=\"adf-document-list-loading-margin\"\n [color]=\"'primary'\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n\n <div class=\"sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </aca-page-layout-content>\n</aca-page-layout>\n" }]
311
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ContentApiService }, { type: i3.Store }, { type: i4.NodeActionsService }, { type: i5.UploadService }, { type: i6.ContentManagementService }, { type: i2.AppExtensionService }, { type: i7.BreakpointObserver }, { type: i2.AcaFileAutoDownloadService }]; } });
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzL2ZpbGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9maWxlcy9maWxlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQVksdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQThCLGFBQWEsRUFBbUIsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBTzVH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LENBQUM7YUFDekQ7aUJBQU07Z0JBQ0wsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDM0I7WUFDRCxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLGNBQWMsQ0FBQyxNQUFNLENBQUM7SUFDbkQsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDOzsyR0E3VFUsY0FBYzsrRkFBZCxjQUFjLDJFQzFDM0IseWtJQW9HQTsyRkQxRGEsY0FBYztrQkFIMUIsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBTaG93SGVhZGVyTW9kZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBNaW5pbWFsTm9kZUVudGl0eSwgTWluaW1hbE5vZGVFbnRyeUVudGl0eSwgUGF0aEVsZW1lbnQsIFBhdGhFbGVtZW50RW50aXR5IH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDb250ZW50TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZW50LW1hbmFnZW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlQWN0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub2RlLWFjdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBBY2FGaWxlQXV0b0Rvd25sb2FkU2VydmljZSwgQXBwRXh0ZW5zaW9uU2VydmljZSwgQ29udGVudEFwaVNlcnZpY2UsIFBhZ2VDb21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQgeyBTZXRDdXJyZW50Rm9sZGVyQWN0aW9uLCBpc0FkbWluLCBBcHBTdG9yZSwgVXBsb2FkRmlsZVZlcnNpb25BY3Rpb24sIHNob3dMb2FkZXJTZWxlY3RvciB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRmlsdGVyU2VhcmNoLCBTaGFyZURhdGFSb3csIFVwbG9hZFNlcnZpY2UsIEZpbGVVcGxvYWRFdmVudCB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBEb2N1bWVudExpc3RQcmVzZXRSZWYgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlc0NvbXBvbmVudCBleHRlbmRzIFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGlzVmFsaWRQYXRoID0gdHJ1ZTtcbiAgaXNTbWFsbFNjcmVlbiA9IGZhbHNlO1xuICBpc0FkbWluID0gZmFsc2U7XG4gIHNlbGVjdGVkTm9kZTogTWluaW1hbE5vZGVFbnRpdHk7XG4gIHF1ZXJ5UGFyYW1zID0gbnVsbDtcblxuICBzaG93TG9hZGVyJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHJpdmF0ZSBub2RlUGF0aDogUGF0aEVsZW1lbnRbXTtcblxuICBjb2x1bW5zOiBEb2N1bWVudExpc3RQcmVzZXRSZWZbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjb250ZW50QXBpOiBDb250ZW50QXBpU2VydmljZSxcbiAgICBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgbm9kZUFjdGlvbnNTZXJ2aWNlOiBOb2RlQWN0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlLFxuICAgIGNvbnRlbnQ6IENvbnRlbnRNYW5hZ2VtZW50U2VydmljZSxcbiAgICBleHRlbnNpb25zOiBBcHBFeHRlbnNpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgZmlsZUF1dG9Eb3dubG9hZFNlcnZpY2U6IEFjYUZpbGVBdXRvRG93bmxvYWRTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHN0b3JlLCBleHRlbnNpb25zLCBjb250ZW50LCBmaWxlQXV0b0Rvd25sb2FkU2VydmljZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgY29uc3QgeyByb3V0ZSwgbm9kZUFjdGlvbnNTZXJ2aWNlLCB1cGxvYWRTZXJ2aWNlIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gcm91dGUuc25hcHNob3Q7XG5cbiAgICB0aGlzLnRpdGxlID0gZGF0YS50aXRsZTtcblxuICAgIHRoaXMuc2hvd0xvYWRlciQgPSB0aGlzLnN0b3JlLnNlbGVjdChzaG93TG9hZGVyU2VsZWN0b3IpO1xuICAgIHJvdXRlLnF1ZXJ5UGFyYW1NYXAuc3Vic2NyaWJlKChxdWVyeU1hcDogUGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gcXVlcnlNYXAucGFyYW1zO1xuICAgIH0pO1xuXG4gICAgcm91dGUucGFyYW1zLnN1YnNjcmliZSgoeyBmb2xkZXJJZCB9OiBQYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IG5vZGVJZCA9IGZvbGRlcklkIHx8IGRhdGEuZGVmYXVsdE5vZGVJZDtcblxuICAgICAgdGhpcy5jb250ZW50QXBpLmdldE5vZGUobm9kZUlkKS5zdWJzY3JpYmUoXG4gICAgICAgIChub2RlKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1ZhbGlkUGF0aCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAobm9kZS5lbnRyeSAmJiBub2RlLmVudHJ5LmlzRm9sZGVyKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUN1cnJlbnROb2RlKG5vZGUuZW50cnkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wZXJzb25hbC1maWxlcycsIG5vZGUuZW50cnkucGFyZW50SWRdLCB7XG4gICAgICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4gKHRoaXMuaXNWYWxpZFBhdGggPSBmYWxzZSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB0aGlzLnN1YnNjcmlwdGlvbnMuY29uY2F0KFtcbiAgICAgIG5vZGVBY3Rpb25zU2VydmljZS5jb250ZW50Q29waWVkLnN1YnNjcmliZSgobm9kZXMpID0+IHRoaXMub25Db250ZW50Q29waWVkKG5vZGVzKSksXG4gICAgICB1cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWRDb21wbGV0ZS5waXBlKGRlYm91bmNlVGltZSgzMDApKS5zdWJzY3JpYmUoKGZpbGUpID0+IHRoaXMub25GaWxlVXBsb2FkZWRFdmVudChmaWxlKSksXG4gICAgICB1cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWREZWxldGVkLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoZmlsZSkgPT4gdGhpcy5vbkZpbGVVcGxvYWRlZEV2ZW50KGZpbGUpKSxcblxuICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbQnJlYWtwb2ludHMuSGFuZHNldFBvcnRyYWl0LCBCcmVha3BvaW50cy5IYW5kc2V0TGFuZHNjYXBlXSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgdGhpcy5pc1NtYWxsU2NyZWVuID0gcmVzdWx0Lm1hdGNoZXM7XG4gICAgICB9KVxuICAgIF0pO1xuXG4gICAgdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChpc0FkbWluKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmlzQWRtaW4gPSB2YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5leHRlbnNpb25zLmRvY3VtZW50TGlzdFByZXNldHMuZmlsZXMgfHwgW107XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRDdXJyZW50Rm9sZGVyQWN0aW9uKG51bGwpKTtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgbmF2aWdhdGUobm9kZUlkOiBzdHJpbmcgPSBudWxsKSB7XG4gICAgY29uc3QgY3VycmVudE5vZGVJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdmb2xkZXJJZCcpO1xuICAgIGNvbnN0IHVybFdpdGhvdXRQYXJhbXMgPSBkZWNvZGVVUklDb21wb25lbnQodGhpcy5yb3V0ZXIudXJsKS5zcGxpdCgnPycpWzBdO1xuICAgIGNvbnN0IHVybFRvTmF2aWdhdGU6IHN0cmluZ1tdID0gdGhpcy5nZXRVcmxUb05hdmlnYXRlKHVybFdpdGhvdXRQYXJhbXMsIGN1cnJlbnROb2RlSWQsIG5vZGVJZCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUodXJsVG9OYXZpZ2F0ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFVybFRvTmF2aWdhdGUoY3VycmVudFVSTDogc3RyaW5nLCBjdXJyZW50Tm9kZUlkOiBzdHJpbmcsIG5leHROb2RlSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gY3VycmVudE5vZGVJZCA/IHRoaXMuZ2V0TmV4dE5vZGVVcmxUb05hdmlnYXRlKGN1cnJlbnRVUkwsIGN1cnJlbnROb2RlSWQsIG5leHROb2RlSWQpIDogdGhpcy5hcHBlbmROZXh0Tm9kZUlkVG9VcmwoY3VycmVudFVSTCwgbmV4dE5vZGVJZCk7XG4gIH1cblxuICBwcml2YXRlIGdldE5leHROb2RlVXJsVG9OYXZpZ2F0ZShjdXJyZW50VVJMOiBzdHJpbmcsIGN1cnJlbnROb2RlSWQ6IHN0cmluZywgbmV4dE5vZGVJZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHVybFRvTmF2aWdhdGU6IHN0cmluZ1tdID1cbiAgICAgIG5leHROb2RlSWQgJiYgIXRoaXMuaXNSb290Tm9kZShuZXh0Tm9kZUlkKVxuICAgICAgICA/IHRoaXMucmVwbGFjZUN1cnJlbnROb2RlSWRXaXRoTmV4dE5vZGVJZChjdXJyZW50VVJMLCBjdXJyZW50Tm9kZUlkLCBuZXh0Tm9kZUlkKVxuICAgICAgICA6IHRoaXMucmVtb3ZlTm9kZUlkRnJvbVVybChjdXJyZW50VVJMLCBjdXJyZW50Tm9kZUlkKTtcbiAgICB1cmxUb05hdmlnYXRlLnNoaWZ0KCk7XG4gICAgcmV0dXJuIHVybFRvTmF2aWdhdGU7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VDdXJyZW50Tm9kZUlkV2l0aE5leHROb2RlSWQoY3VycmVudFVSTDogc3RyaW5nLCBjdXJyZW50Tm9kZUlkOiBzdHJpbmcsIG5leHROb2RlSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBuZXh0Tm9kZVVybFRvTmF2aWdhdGUgPSBjdXJyZW50VVJMLnNwbGl0KCcvJyk7XG4gICAgY29uc3QgaW5kZXggPSBuZXh0Tm9kZVVybFRvTmF2aWdhdGUuaW5kZXhPZihjdXJyZW50Tm9kZUlkKTtcbiAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICBuZXh0Tm9kZVVybFRvTmF2aWdhdGVbaW5kZXhdID0gbmV4dE5vZGVJZDtcbiAgICB9XG4gICAgcmV0dXJuIG5leHROb2RlVXJsVG9OYXZpZ2F0ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTm9kZUlkRnJvbVVybChjdXJyZW50VVJMOiBzdHJpbmcsIGN1cnJlbnROb2RlSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByb290VXJsOiBzdHJpbmdbXSA9IGN1cnJlbnRVUkwucmVwbGFjZShjdXJyZW50Tm9kZUlkLCAnJykuc3BsaXQoJy8nKTtcbiAgICByb290VXJsLnBvcCgpO1xuICAgIHJldHVybiByb290VXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBlbmROZXh0Tm9kZUlkVG9VcmwoY3VycmVudFVSTDogc3RyaW5nLCBub2RlSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBuYXZpZ2F0ZVRvTm9kZVVybCA9IGN1cnJlbnRVUkwuc3BsaXQoJy8nKTtcbiAgICBpZiAobm9kZUlkICYmICF0aGlzLmlzUm9vdE5vZGUobm9kZUlkKSkge1xuICAgICAgbmF2aWdhdGVUb05vZGVVcmwucHVzaChub2RlSWQpO1xuICAgIH1cbiAgICBuYXZpZ2F0ZVRvTm9kZVVybC5zaGlmdCgpO1xuICAgIHJldHVybiBuYXZpZ2F0ZVRvTm9kZVVybDtcbiAgfVxuXG4gIG9uVXBsb2FkTmV3VmVyc2lvbihldjogQ3VzdG9tRXZlbnQpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcGxvYWRGaWxlVmVyc2lvbkFjdGlvbihldikpO1xuICB9XG5cbiAgbmF2aWdhdGVUbyhub2RlOiBNaW5pbWFsTm9kZUVudGl0eSkge1xuICAgIGlmIChub2RlICYmIG5vZGUuZW50cnkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbm9kZTtcbiAgICAgIGNvbnN0IHsgaXNGb2xkZXIgfSA9IG5vZGUuZW50cnk7XG5cbiAgICAgIGlmIChpc0ZvbGRlcikge1xuICAgICAgICBsZXQgaWQ6IHN0cmluZztcblxuICAgICAgICBpZiAobm9kZS5lbnRyeS5ub2RlVHlwZSA9PT0gJ2FwcDpmb2xkZXJsaW5rJykge1xuICAgICAgICAgIGlkID0gbm9kZS5lbnRyeS5wcm9wZXJ0aWVzWydjbTpkZXN0aW5hdGlvbiddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlkID0gbm9kZS5lbnRyeS5pZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0LnJlc2V0TmV3Rm9sZGVyUGFnaW5hdGlvbigpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlKGlkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNob3dQcmV2aWV3KG5vZGUsIHsgbG9jYXRpb246IHRoaXMucm91dGVyLnVybCB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVOb2RlQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvKChldmVudCBhcyBDdXN0b21FdmVudCkuZGV0YWlsPy5ub2RlKTtcbiAgfVxuXG4gIG9uQnJlYWRjcnVtYk5hdmlnYXRlKHJvdXRlOiBQYXRoRWxlbWVudEVudGl0eSkge1xuICAgIHRoaXMuZG9jdW1lbnRMaXN0LnJlc2V0TmV3Rm9sZGVyUGFnaW5hdGlvbigpO1xuXG4gICAgLy8gdG9kbzogcmV2aWV3IHRoaXMgYXBwcm9hY2ggb25jZSA1LjIuMyBpcyBvdXRcbiAgICBpZiAodGhpcy5ub2RlUGF0aCAmJiB0aGlzLm5vZGVQYXRoLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICh0aGlzLm5vZGVQYXRoWzFdLm5hbWUgPT09ICdTaXRlcycgJiYgdGhpcy5ub2RlUGF0aFsyXS5pZCA9PT0gcm91dGUuaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGUodGhpcy5ub2RlUGF0aFszXS5pZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubmF2aWdhdGUocm91dGUuaWQpO1xuICB9XG5cbiAgb25GaWxlVXBsb2FkZWRFdmVudChldmVudDogRmlsZVVwbG9hZEV2ZW50KSB7XG4gICAgY29uc3Qgbm9kZTogTWluaW1hbE5vZGVFbnRpdHkgPSBldmVudC5maWxlLmRhdGE7XG5cbiAgICAvLyBjaGVjayByb290IGFuZCBjaGlsZCBub2Rlc1xuICAgIGlmIChub2RlICYmIG5vZGUuZW50cnkgJiYgbm9kZS5lbnRyeS5wYXJlbnRJZCA9PT0gdGhpcy5nZXRQYXJlbnROb2RlSWQoKSkge1xuICAgICAgdGhpcy5yZWxvYWQodGhpcy5zZWxlY3RlZE5vZGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIHRoZSBjaGlsZCBub2RlcyB0byBzaG93IGRyb3BwZWQgZm9sZGVyXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmZpbGUub3B0aW9ucy5wYXJlbnRJZCA9PT0gdGhpcy5nZXRQYXJlbnROb2RlSWQoKSkge1xuICAgICAgdGhpcy5kaXNwbGF5Rm9sZGVyUGFyZW50KGV2ZW50LmZpbGUub3B0aW9ucy5wYXRoLCAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuZmlsZS5vcHRpb25zLnBhcmVudElkKSB7XG4gICAgICBpZiAodGhpcy5ub2RlUGF0aCkge1xuICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nTm9kZVBhdGggPSB0aGlzLm5vZGVQYXRoLmZpbmQoKHBhdGhJdGVtKSA9PiBwYXRoSXRlbS5pZCA9PT0gZXZlbnQuZmlsZS5vcHRpb25zLnBhcmVudElkKTtcblxuICAgICAgICAvLyBjaGVjayBpZiB0aGUgY3VycmVudCBmb2xkZXIgaGFzIHRoZSAndHJpZ2dlci11cGxvYWQtZm9sZGVyJyBhcyBvbmUgb2YgaXRzIHBhcmVudHNcbiAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdOb2RlUGF0aCkge1xuICAgICAgICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdJbmRleCA9IHRoaXMubm9kZVBhdGgubGVuZ3RoIC0gdGhpcy5ub2RlUGF0aC5pbmRleE9mKGNvcnJlc3BvbmRpbmdOb2RlUGF0aCk7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5Rm9sZGVyUGFyZW50KGV2ZW50LmZpbGUub3B0aW9ucy5wYXRoLCBjb3JyZXNwb25kaW5nSW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGlzcGxheUZvbGRlclBhcmVudChmaWxlUGF0aCA9ICcnLCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFyZW50TmFtZSA9IGZpbGVQYXRoLnNwbGl0KCcvJylbaW5kZXhdO1xuICAgIGNvbnN0IGN1cnJlbnRGb2xkZXJzRGlzcGxheWVkID0gKHRoaXMuZG9jdW1lbnRMaXN0LmRhdGEuZ2V0Um93cygpIGFzIFNoYXJlRGF0YVJvd1tdKSB8fCBbXTtcblxuICAgIGNvbnN0IGFscmVhZHlEaXNwbGF5ZWRQYXJlbnRGb2xkZXIgPSBjdXJyZW50Rm9sZGVyc0Rpc3BsYXllZC5maW5kKChyb3cpID0+IHJvdy5ub2RlLmVudHJ5LmlzRm9sZGVyICYmIHJvdy5ub2RlLmVudHJ5Lm5hbWUgPT09IHBhcmVudE5hbWUpO1xuXG4gICAgaWYgKGFscmVhZHlEaXNwbGF5ZWRQYXJlbnRGb2xkZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yZWxvYWQodGhpcy5zZWxlY3RlZE5vZGUpO1xuICB9XG5cbiAgb25Db250ZW50Q29waWVkKG5vZGVzOiBNaW5pbWFsTm9kZUVudGl0eVtdKSB7XG4gICAgY29uc3QgbmV3Tm9kZSA9IG5vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGUgJiYgbm9kZS5lbnRyeSAmJiBub2RlLmVudHJ5LnBhcmVudElkID09PSB0aGlzLmdldFBhcmVudE5vZGVJZCgpKTtcbiAgICBpZiAobmV3Tm9kZSkge1xuICAgICAgdGhpcy5yZWxvYWQodGhpcy5zZWxlY3RlZE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRvZG86IHJldmlldyB0aGlzIGFwcHJvYWNoIG9uY2UgNS4yLjMgaXMgb3V0XG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlQ3VycmVudE5vZGUobm9kZTogTWluaW1hbE5vZGVFbnRyeUVudGl0eSkge1xuICAgIHRoaXMubm9kZVBhdGggPSBudWxsO1xuXG4gICAgaWYgKG5vZGUgJiYgbm9kZS5wYXRoICYmIG5vZGUucGF0aC5lbGVtZW50cykge1xuICAgICAgY29uc3QgZWxlbWVudHMgPSBub2RlLnBhdGguZWxlbWVudHM7XG5cbiAgICAgIHRoaXMubm9kZVBhdGggPSBlbGVtZW50cy5tYXAoKHBhdGhFbGVtZW50KSA9PiBPYmplY3QuYXNzaWduKHt9LCBwYXRoRWxlbWVudCkpO1xuXG4gICAgICBpZiAoZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBpZiAoZWxlbWVudHNbMV0ubmFtZSA9PT0gJ1VzZXIgSG9tZXMnKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmlzQWRtaW4pIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnNwbGljZSgwLCAyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNbMV0ubmFtZSA9PT0gJ1NpdGVzJykge1xuICAgICAgICAgIGF3YWl0IHRoaXMubm9ybWFsaXplU2l0ZVBhdGgobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldEN1cnJlbnRGb2xkZXJBY3Rpb24obm9kZSkpO1xuICB9XG5cbiAgLy8gdG9kbzogcmV2aWV3IHRoaXMgYXBwcm9hY2ggb25jZSA1LjIuMyBpcyBvdXRcbiAgcHJpdmF0ZSBhc3luYyBub3JtYWxpemVTaXRlUGF0aChub2RlOiBNaW5pbWFsTm9kZUVudHJ5RW50aXR5KSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSBub2RlLnBhdGguZWxlbWVudHM7XG5cbiAgICAvLyByZW1vdmUgJ1NpdGVzJ1xuICAgIGVsZW1lbnRzLnNwbGljZSgxLCAxKTtcblxuICAgIGlmICh0aGlzLmlzU2l0ZUNvbnRhaW5lcihub2RlKSkge1xuICAgICAgLy8gcmVuYW1lICdkb2N1bWVudExpYnJhcnknIGVudHJ5IHRvIHRoZSB0YXJnZXQgc2l0ZSBkaXNwbGF5IG5hbWVcbiAgICAgIC8vIGNsaWNraW5nIG9uIHRoZSBicmVhZGNydW1iIGVudHJ5IGxvYWRzIHRoZSBzaXRlIGNvbnRlbnRcbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGkuZ2V0Tm9kZUluZm8obm9kZS5wYXJlbnRJZCkudG9Qcm9taXNlKCk7XG4gICAgICBub2RlLm5hbWUgPSBwYXJlbnROb2RlLnByb3BlcnRpZXNbJ2NtOnRpdGxlJ10gfHwgcGFyZW50Tm9kZS5uYW1lO1xuXG4gICAgICAvLyByZW1vdmUgdGhlIHNpdGUgZW50cnlcbiAgICAgIGVsZW1lbnRzLnNwbGljZSgxLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmVtb3ZlICdkb2N1bWVudExpYnJhcnknIGluIHRoZSBtaWRkbGUgb2YgdGhlIHBhdGhcbiAgICAgIGNvbnN0IGRvY0xpYiA9IGVsZW1lbnRzLmZpbmRJbmRleCgoZWwpID0+IGVsLm5hbWUgPT09ICdkb2N1bWVudExpYnJhcnknKTtcbiAgICAgIGlmIChkb2NMaWIgPiAtMSkge1xuICAgICAgICBjb25zdCBzaXRlRnJhZ21lbnQgPSBlbGVtZW50c1tkb2NMaWIgLSAxXTtcbiAgICAgICAgY29uc3Qgc2l0ZU5vZGUgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGkuZ2V0Tm9kZUluZm8oc2l0ZUZyYWdtZW50LmlkKS50b1Byb21pc2UoKTtcblxuICAgICAgICAvLyBhcHBseSBTaXRlIE5hbWUgdG8gdGhlIHBhcmVudCBmcmFnbWVudFxuICAgICAgICBzaXRlRnJhZ21lbnQubmFtZSA9IHNpdGVOb2RlLnByb3BlcnRpZXNbJ2NtOnRpdGxlJ10gfHwgc2l0ZU5vZGUubmFtZTtcbiAgICAgICAgZWxlbWVudHMuc3BsaWNlKGRvY0xpYiwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNTaXRlQ29udGFpbmVyKG5vZGU6IE1pbmltYWxOb2RlRW50cnlFbnRpdHkpOiBib29sZWFuIHtcbiAgICBpZiAobm9kZSAmJiBub2RlLmFzcGVjdE5hbWVzICYmIG5vZGUuYXNwZWN0TmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIG5vZGUuYXNwZWN0TmFtZXMuaW5kZXhPZignc3Q6c2l0ZUNvbnRhaW5lcicpID49IDA7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlzUm9vdE5vZGUobm9kZUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5ub2RlICYmIHRoaXMubm9kZS5wYXRoICYmIHRoaXMubm9kZS5wYXRoLmVsZW1lbnRzICYmIHRoaXMubm9kZS5wYXRoLmVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUucGF0aC5lbGVtZW50c1swXS5pZCA9PT0gbm9kZUlkO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBvbkZpbHRlclNlbGVjdGVkKGFjdGl2ZUZpbHRlcnM6IEZpbHRlclNlYXJjaFtdKSB7XG4gICAgaWYgKGFjdGl2ZUZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNob3dIZWFkZXIgPSBTaG93SGVhZGVyTW9kZS5BbHdheXM7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9GaWx0ZXIoYWN0aXZlRmlsdGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICB0aGlzLnNob3dIZWFkZXIgPSBTaG93SGVhZGVyTW9kZS5EYXRhO1xuICAgICAgdGhpcy5vbkFsbEZpbHRlckNsZWFyZWQoKTtcbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvRmlsdGVyKGFjdGl2ZUZpbHRlcnM6IEZpbHRlclNlYXJjaFtdKSB7XG4gICAgY29uc3Qgb2JqZWN0RnJvbU1hcCA9IHt9O1xuICAgIGFjdGl2ZUZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBGaWx0ZXJTZWFyY2gpID0+IHtcbiAgICAgIGxldCBwYXJhbVZhbHVlO1xuICAgICAgaWYgKGZpbHRlci52YWx1ZSAmJiBmaWx0ZXIudmFsdWUuZnJvbSAmJiBmaWx0ZXIudmFsdWUudG8pIHtcbiAgICAgICAgcGFyYW1WYWx1ZSA9IGAke2ZpbHRlci52YWx1ZS5mcm9tfXx8JHtmaWx0ZXIudmFsdWUudG99YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmFtVmFsdWUgPSBmaWx0ZXIudmFsdWU7XG4gICAgICB9XG4gICAgICBvYmplY3RGcm9tTWFwW2ZpbHRlci5rZXldID0gcGFyYW1WYWx1ZTtcbiAgICB9KTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHF1ZXJ5UGFyYW1zOiBvYmplY3RGcm9tTWFwIH0pO1xuICB9XG5cbiAgaXNGaWx0ZXJIZWFkZXJBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0hlYWRlciA9PT0gU2hvd0hlYWRlck1vZGUuQWx3YXlzO1xuICB9XG5cbiAgb25FcnJvcigpIHtcbiAgICB0aGlzLmlzVmFsaWRQYXRoID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxhY2EtcGFnZS1sYXlvdXQgW2hhc0Vycm9yXT1cIiFpc1ZhbGlkUGF0aFwiPlxuICA8YWNhLXBhZ2UtbGF5b3V0LWhlYWRlcj5cbiAgICA8YWRmLWJyZWFkY3J1bWIgW3Jvb3RdPVwidGl0bGVcIiBbZm9sZGVyTm9kZV09XCJub2RlXCIgW21heEl0ZW1zXT1cImlzU21hbGxTY3JlZW4gPyAxIDogMFwiIChuYXZpZ2F0ZSk9XCJvbkJyZWFkY3J1bWJOYXZpZ2F0ZSgkZXZlbnQpXCI+IDwvYWRmLWJyZWFkY3J1bWI+XG5cbiAgICA8YWRmLXRvb2xiYXIgY2xhc3M9XCJhZGYtdG9vbGJhci0taW5saW5lXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBhY3Rpb25zOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uSWRcIj5cbiAgICAgICAgPGFjYS10b29sYmFyLWFjdGlvbiBbYWN0aW9uUmVmXT1cImVudHJ5XCI+PC9hY2EtdG9vbGJhci1hY3Rpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FkZi10b29sYmFyPlxuICA8L2FjYS1wYWdlLWxheW91dC1oZWFkZXI+XG5cbiAgPGFjYS1wYWdlLWxheW91dC1lcnJvcj5cbiAgICA8YWNhLWdlbmVyaWMtZXJyb3I+PC9hY2EtZ2VuZXJpYy1lcnJvcj5cbiAgPC9hY2EtcGFnZS1sYXlvdXQtZXJyb3I+XG5cbiAgPGFjYS1wYWdlLWxheW91dC1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIiAqbmdJZj1cIiEoc2hvd0xvYWRlciQgfCBhc3luYylcIj5cbiAgICAgIDxhZGYtdXBsb2FkLWRyYWctYXJlYSBbcm9vdEZvbGRlcklkXT1cIm5vZGU/LmlkXCIgW2Rpc2FibGVkXT1cIiFjYW5VcGxvYWRcIiAodXBkYXRlRmlsZVZlcnNpb24pPVwib25VcGxvYWROZXdWZXJzaW9uKCRldmVudClcIj5cbiAgICAgICAgPGFkZi1kb2N1bWVudC1saXN0XG4gICAgICAgICAgI2RvY3VtZW50TGlzdFxuICAgICAgICAgIGFjYURvY3VtZW50TGlzdFxuICAgICAgICAgIGFjYUNvbnRleHRBY3Rpb25zXG4gICAgICAgICAgW2Rpc3BsYXldPVwiZG9jdW1lbnREaXNwbGF5TW9kZSQgfCBhc3luY1wiXG4gICAgICAgICAgc2VsZWN0aW9uTW9kZT1cIm11bHRpcGxlXCJcbiAgICAgICAgICBbY3VycmVudEZvbGRlcklkXT1cIm5vZGU/LmlkXCJcbiAgICAgICAgICBbbG9hZGluZ109XCJ0cnVlXCJcbiAgICAgICAgICBbc2hvd0hlYWRlcl09XCJzaG93SGVhZGVyXCJcbiAgICAgICAgICBbbm9kZV09XCJub2RlUmVzdWx0XCJcbiAgICAgICAgICBbYWxsb3dEcm9wRmlsZXNdPVwidHJ1ZVwiXG4gICAgICAgICAgW25hdmlnYXRlXT1cImZhbHNlXCJcbiAgICAgICAgICBbc29ydGluZ109XCJbJ25hbWUnLCAnQVNDJ11cIlxuICAgICAgICAgIFtpbWFnZVJlc29sdmVyXT1cImltYWdlUmVzb2x2ZXJcIlxuICAgICAgICAgIFtoZWFkZXJGaWx0ZXJzXT1cInRydWVcIlxuICAgICAgICAgIFtmaWx0ZXJWYWx1ZV09XCJxdWVyeVBhcmFtc1wiXG4gICAgICAgICAgKG5vZGUtZGJsY2xpY2spPVwiaGFuZGxlTm9kZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgIChuYW1lLWNsaWNrKT1cImhhbmRsZU5vZGVDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAoc29ydGluZy1jaGFuZ2VkKT1cIm9uU29ydGluZ0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGZpbHRlclNlbGVjdGlvbik9XCJvbkZpbHRlclNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIChlcnJvcik9XCJvbkVycm9yKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRhdGEtY29sdW1ucz5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5Q29sdW1uSWRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50ZW1wbGF0ZSAmJiAhKGNvbHVtbi5kZXNrdG9wT25seSAmJiBpc1NtYWxsU2NyZWVuKVwiPlxuICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtblxuICAgICAgICAgICAgICAgICAgW2tleV09XCJjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2x1bW4udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCJjb2x1bW4uZm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgW3NvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICAgICAgICAgICAgICBbc29ydGluZ0tleV09XCJjb2x1bW4uc29ydGluZ0tleSB8fCBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWNvbnRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtZHluYW1pYy1jb2x1bW4gW2lkXT1cImNvbHVtbi50ZW1wbGF0ZVwiIFtjb250ZXh0XT1cImNvbnRleHRcIj4gPC9hZGYtZHluYW1pYy1jb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGF0YS1jb2x1bW4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uLnRlbXBsYXRlICYmICEoY29sdW1uLmRlc2t0b3BPbmx5ICYmIGlzU21hbGxTY3JlZW4pXCI+XG4gICAgICAgICAgICAgICAgPGRhdGEtY29sdW1uXG4gICAgICAgICAgICAgICAgICBba2V5XT1cImNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbHVtbi50aXRsZVwiXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cImNvbHVtbi5mb3JtYXRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtbi5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgIFtzb3J0aW5nS2V5XT1cImNvbHVtbi5zb3J0aW5nS2V5IHx8IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGF0YS1jb2x1bW5zPlxuXG4gICAgICAgICAgPGFkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZSAqbmdJZj1cImlzRmlsdGVySGVhZGVyQWN0aXZlKClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zZWFyY2hfX2Jsb2NrXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlbXB0eS1zZWFyY2hfX3RleHRcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdBUFAuQlJPV1NFLlNFQVJDSC5OT19GSUxURVJfUkVTVUxUUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9hZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgIDwvYWRmLWRvY3VtZW50LWxpc3Q+XG5cbiAgICAgICAgPGFkZi1wYWdpbmF0aW9uIGFjYVBhZ2luYXRpb24gW3RhcmdldF09XCJkb2N1bWVudExpc3RcIj4gPC9hZGYtcGFnaW5hdGlvbj5cbiAgICAgIDwvYWRmLXVwbG9hZC1kcmFnLWFyZWE+XG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgKm5nSWY9XCJzaG93TG9hZGVyJCB8IGFzeW5jXCJcbiAgICAgIGlkPVwiYWRmLWRvY3VtZW50LWxpc3QtbG9hZGluZ1wiXG4gICAgICBjbGFzcz1cImFkZi1kb2N1bWVudC1saXN0LWxvYWRpbmctbWFyZ2luXCJcbiAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgW21vZGVdPVwiJ2luZGV0ZXJtaW5hdGUnXCI+XG4gICAgPC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyXCIgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCI+XG4gICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5sYXN0XCI+PC9hY2EtaW5mby1kcmF3ZXI+XG4gICAgPC9kaXY+XG4gIDwvYWNhLXBhZ2UtbGF5b3V0LWNvbnRlbnQ+XG48L2FjYS1wYWdlLWxheW91dD5cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ /*!
2
+ * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
3
+ *
4
+ * Alfresco Example Content Application
5
+ *
6
+ * This file is part of the Alfresco Example Content Application.
7
+ * If the software was purchased under a paid Alfresco license, the terms of
8
+ * the paid license agreement will prevail. Otherwise, the software is
9
+ * provided under the following open source license terms:
10
+ *
11
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
+ * it under the terms of the GNU Lesser General Public License as published by
13
+ * the Free Software Foundation, either version 3 of the License, or
14
+ * (at your option) any later version.
15
+ *
16
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
+ */
24
+ import { Component } from '@angular/core';
25
+ import { Router } from '@angular/router';
26
+ import { AppConfigService } from '@alfresco/adf-core';
27
+ import * as i0 from "@angular/core";
28
+ import * as i1 from "@alfresco/adf-core";
29
+ import * as i2 from "@angular/router";
30
+ export class HomeComponent {
31
+ constructor(appConfig, router) {
32
+ this.appConfig = appConfig;
33
+ this.router = router;
34
+ this.DEFAULT_LANDING_PAGE = '/personal-files';
35
+ }
36
+ ngOnInit() {
37
+ const landingPage = this.appConfig.get('landingPage', this.DEFAULT_LANDING_PAGE);
38
+ this.router.navigateByUrl(landingPage);
39
+ }
40
+ }
41
+ HomeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: HomeComponent, deps: [{ token: i1.AppConfigService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
42
+ HomeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: HomeComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: HomeComponent, decorators: [{
44
+ type: Component,
45
+ args: [{
46
+ template: ''
47
+ }]
48
+ }], ctorParameters: function () { return [{ type: i1.AppConfigService }, { type: i2.Router }]; } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvaG9tZS9ob21lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBS3RELE1BQU0sT0FBTyxhQUFhO0lBR3hCLFlBQW9CLFNBQTJCLEVBQVUsTUFBYztRQUFuRCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFGOUQseUJBQW9CLEdBQUcsaUJBQWlCLENBQUM7SUFFd0IsQ0FBQztJQUUzRSxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OzBHQVJVLGFBQWE7OEZBQWIsYUFBYSxvREFGZCxFQUFFOzJGQUVELGFBQWE7a0JBSHpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBIb21lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcmVhZG9ubHkgREVGQVVMVF9MQU5ESU5HX1BBR0UgPSAnL3BlcnNvbmFsLWZpbGVzJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBsYW5kaW5nUGFnZSA9IHRoaXMuYXBwQ29uZmlnLmdldCgnbGFuZGluZ1BhZ2UnLCB0aGlzLkRFRkFVTFRfTEFORElOR19QQUdFKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGxhbmRpbmdQYWdlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,56 @@
1
+ /*!
2
+ * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
3
+ *
4
+ * Alfresco Example Content Application
5
+ *
6
+ * This file is part of the Alfresco Example Content Application.
7
+ * If the software was purchased under a paid Alfresco license, the terms of
8
+ * the paid license agreement will prevail. Otherwise, the software is
9
+ * provided under the following open source license terms:
10
+ *
11
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
+ * it under the terms of the GNU Lesser General Public License as published by
13
+ * the Free Software Foundation, either version 3 of the License, or
14
+ * (at your option) any later version.
15
+ *
16
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
+ */
24
+ import { Component, Input } from '@angular/core';
25
+ import { MinimalNodeEntryEntity } from '@alfresco/js-api';
26
+ import { NodePermissionService, isLocked } from '@alfresco/aca-shared';
27
+ import * as i0 from "@angular/core";
28
+ import * as i1 from "@alfresco/aca-shared";
29
+ import * as i2 from "@angular/material/card";
30
+ import * as i3 from "@alfresco/adf-content-services";
31
+ export class CommentsTabComponent {
32
+ constructor(permission) {
33
+ this.permission = permission;
34
+ }
35
+ get canUpdateNode() {
36
+ if (!this.node) {
37
+ return false;
38
+ }
39
+ if (this.node.isFolder || (this.node.isFile && !isLocked({ entry: this.node }))) {
40
+ return this.permission.check(this.node, ['update']);
41
+ }
42
+ return false;
43
+ }
44
+ }
45
+ CommentsTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CommentsTabComponent, deps: [{ token: i1.NodePermissionService }], target: i0.ɵɵFactoryTarget.Component });
46
+ CommentsTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: CommentsTabComponent, selector: "app-comments-tab", inputs: { node: "node" }, ngImport: i0, template: `<mat-card><adf-node-comments [readOnly]="!canUpdateNode" [nodeId]="node?.id"></adf-node-comments></mat-card>`, isInline: true, dependencies: [{ kind: "component", type: i2.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i3.NodeCommentsComponent, selector: "adf-node-comments", inputs: ["nodeId", "readOnly"] }] });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CommentsTabComponent, decorators: [{
48
+ type: Component,
49
+ args: [{
50
+ selector: 'app-comments-tab',
51
+ template: `<mat-card><adf-node-comments [readOnly]="!canUpdateNode" [nodeId]="node?.id"></adf-node-comments></mat-card>`
52
+ }]
53
+ }], ctorParameters: function () { return [{ type: i1.NodePermissionService }]; }, propDecorators: { node: [{
54
+ type: Input
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudHMtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9pbmZvLWRyYXdlci9jb21tZW50cy10YWIvY29tbWVudHMtdGFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFNdkUsTUFBTSxPQUFPLG9CQUFvQjtJQUkvQixZQUFvQixVQUFpQztRQUFqQyxlQUFVLEdBQVYsVUFBVSxDQUF1QjtJQUFHLENBQUM7SUFFekQsSUFBSSxhQUFhO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDL0UsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUNyRDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7aUhBZlUsb0JBQW9CO3FHQUFwQixvQkFBb0Isa0ZBRnJCLDhHQUE4RzsyRkFFN0csb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRSw4R0FBOEc7aUJBQ3pIOzRHQUdDLElBQUk7c0JBREgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNaW5pbWFsTm9kZUVudHJ5RW50aXR5IH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBOb2RlUGVybWlzc2lvblNlcnZpY2UsIGlzTG9ja2VkIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29tbWVudHMtdGFiJyxcbiAgdGVtcGxhdGU6IGA8bWF0LWNhcmQ+PGFkZi1ub2RlLWNvbW1lbnRzIFtyZWFkT25seV09XCIhY2FuVXBkYXRlTm9kZVwiIFtub2RlSWRdPVwibm9kZT8uaWRcIj48L2FkZi1ub2RlLWNvbW1lbnRzPjwvbWF0LWNhcmQ+YFxufSlcbmV4cG9ydCBjbGFzcyBDb21tZW50c1RhYkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIG5vZGU6IE1pbmltYWxOb2RlRW50cnlFbnRpdHk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwZXJtaXNzaW9uOiBOb2RlUGVybWlzc2lvblNlcnZpY2UpIHt9XG5cbiAgZ2V0IGNhblVwZGF0ZU5vZGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLm5vZGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ub2RlLmlzRm9sZGVyIHx8ICh0aGlzLm5vZGUuaXNGaWxlICYmICFpc0xvY2tlZCh7IGVudHJ5OiB0aGlzLm5vZGUgfSkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uLmNoZWNrKHRoaXMubm9kZSwgWyd1cGRhdGUnXSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19