@alfresco/adf-content-services 8.1.0-16024576091 → 8.1.0-16047635687

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 (408) hide show
  1. package/fesm2022/adf-content-services.mjs +746 -761
  2. package/fesm2022/adf-content-services.mjs.map +1 -1
  3. package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
  4. package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
  5. package/package.json +3 -5
  6. package/esm2022/adf-content-services.mjs +0 -5
  7. package/esm2022/lib/agent/index.mjs +0 -18
  8. package/esm2022/lib/agent/public-api.mjs +0 -18
  9. package/esm2022/lib/agent/services/agent.service.mjs +0 -60
  10. package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +0 -27
  11. package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +0 -42
  12. package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +0 -77
  13. package/esm2022/lib/api-factories/index.mjs +0 -18
  14. package/esm2022/lib/api-factories/public-api.mjs +0 -19
  15. package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +0 -18
  16. package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +0 -77
  17. package/esm2022/lib/aspect-list/aspect-list.component.mjs +0 -139
  18. package/esm2022/lib/aspect-list/aspect-list.module.mjs +0 -35
  19. package/esm2022/lib/aspect-list/index.mjs +0 -18
  20. package/esm2022/lib/aspect-list/public-api.mjs +0 -24
  21. package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +0 -83
  22. package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +0 -86
  23. package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +0 -52
  24. package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +0 -26
  25. package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +0 -42
  26. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -166
  27. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -35
  28. package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +0 -65
  29. package/esm2022/lib/breadcrumb/index.mjs +0 -18
  30. package/esm2022/lib/breadcrumb/public-api.mjs +0 -20
  31. package/esm2022/lib/category/categories-management/categories-management-mode.mjs +0 -22
  32. package/esm2022/lib/category/categories-management/categories-management.component.mjs +0 -308
  33. package/esm2022/lib/category/category.module.mjs +0 -33
  34. package/esm2022/lib/category/index.mjs +0 -18
  35. package/esm2022/lib/category/models/category-node.interface.mjs +0 -18
  36. package/esm2022/lib/category/public-api.mjs +0 -23
  37. package/esm2022/lib/category/services/category-tree-datasource.service.mjs +0 -80
  38. package/esm2022/lib/category/services/category.service.mjs +0 -159
  39. package/esm2022/lib/common/events/file.event.mjs +0 -46
  40. package/esm2022/lib/common/index.mjs +0 -18
  41. package/esm2022/lib/common/interfaces/saved-search.interface.mjs +0 -18
  42. package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +0 -18
  43. package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +0 -37
  44. package/esm2022/lib/common/models/allowable-operations.enum.mjs +0 -30
  45. package/esm2022/lib/common/models/ecm-company.model.mjs +0 -19
  46. package/esm2022/lib/common/models/ecm-user.model.mjs +0 -45
  47. package/esm2022/lib/common/models/file.model.mjs +0 -53
  48. package/esm2022/lib/common/models/node-metadata.model.mjs +0 -23
  49. package/esm2022/lib/common/models/permissions.enum.mjs +0 -32
  50. package/esm2022/lib/common/public-api.mjs +0 -37
  51. package/esm2022/lib/common/services/card-view-content-update.service.mjs +0 -55
  52. package/esm2022/lib/common/services/content.service.mjs +0 -180
  53. package/esm2022/lib/common/services/discovery-api.service.mjs +0 -79
  54. package/esm2022/lib/common/services/favorites-api.service.mjs +0 -84
  55. package/esm2022/lib/common/services/nodes-api.service.mjs +0 -251
  56. package/esm2022/lib/common/services/people-content.service.mjs +0 -138
  57. package/esm2022/lib/common/services/rendition.service.mjs +0 -270
  58. package/esm2022/lib/common/services/saved-searches.service.mjs +0 -206
  59. package/esm2022/lib/common/services/sites.service.mjs +0 -243
  60. package/esm2022/lib/common/services/upload.service.mjs +0 -391
  61. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +0 -54
  62. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +0 -490
  63. package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +0 -128
  64. package/esm2022/lib/content-metadata/content-metadata.module.mjs +0 -36
  65. package/esm2022/lib/content-metadata/index.mjs +0 -18
  66. package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +0 -18
  67. package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +0 -18
  68. package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +0 -18
  69. package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +0 -18
  70. package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +0 -18
  71. package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +0 -28
  72. package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +0 -18
  73. package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +0 -18
  74. package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +0 -18
  75. package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +0 -18
  76. package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +0 -18
  77. package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +0 -18
  78. package/esm2022/lib/content-metadata/public-api.mjs +0 -31
  79. package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +0 -107
  80. package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +0 -106
  81. package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +0 -76
  82. package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +0 -40
  83. package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +0 -108
  84. package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +0 -33
  85. package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +0 -99
  86. package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +0 -134
  87. package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +0 -52
  88. package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +0 -169
  89. package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +0 -256
  90. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +0 -617
  91. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +0 -66
  92. package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +0 -18
  93. package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +0 -205
  94. package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +0 -50
  95. package/esm2022/lib/content-node-selector/index.mjs +0 -18
  96. package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +0 -48
  97. package/esm2022/lib/content-node-selector/public-api.mjs +0 -25
  98. package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +0 -168
  99. package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +0 -287
  100. package/esm2022/lib/content-node-share/content-node-share.directive.mjs +0 -102
  101. package/esm2022/lib/content-node-share/content-node-share.module.mjs +0 -35
  102. package/esm2022/lib/content-node-share/content-node-share.settings.mjs +0 -18
  103. package/esm2022/lib/content-node-share/index.mjs +0 -18
  104. package/esm2022/lib/content-node-share/public-api.mjs +0 -22
  105. package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +0 -83
  106. package/esm2022/lib/content-type/content-type-dialog.component.mjs +0 -57
  107. package/esm2022/lib/content-type/content-type-metadata.interface.mjs +0 -18
  108. package/esm2022/lib/content-type/content-type.service.mjs +0 -52
  109. package/esm2022/lib/content-type/index.mjs +0 -20
  110. package/esm2022/lib/content.module.mjs +0 -277
  111. package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +0 -51
  112. package/esm2022/lib/dialogs/dialog.module.mjs +0 -52
  113. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +0 -111
  114. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +0 -38
  115. package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +0 -66
  116. package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +0 -44
  117. package/esm2022/lib/dialogs/folder/folder.dialog.mjs +0 -146
  118. package/esm2022/lib/dialogs/index.mjs +0 -18
  119. package/esm2022/lib/dialogs/library/library.dialog.mjs +0 -224
  120. package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +0 -115
  121. package/esm2022/lib/dialogs/public-api.mjs +0 -25
  122. package/esm2022/lib/directives/auto-focus.directive.mjs +0 -38
  123. package/esm2022/lib/directives/check-allowable-operation.directive.mjs +0 -126
  124. package/esm2022/lib/directives/content-directive.module.mjs +0 -75
  125. package/esm2022/lib/directives/index.mjs +0 -18
  126. package/esm2022/lib/directives/library-favorite.directive.mjs +0 -119
  127. package/esm2022/lib/directives/library-membership.directive.mjs +0 -202
  128. package/esm2022/lib/directives/node-counter.directive.mjs +0 -59
  129. package/esm2022/lib/directives/node-delete.directive.mjs +0 -177
  130. package/esm2022/lib/directives/node-download.directive.mjs +0 -138
  131. package/esm2022/lib/directives/node-favorite.directive.mjs +0 -193
  132. package/esm2022/lib/directives/node-lock.directive.mjs +0 -57
  133. package/esm2022/lib/directives/node-restore.directive.mjs +0 -218
  134. package/esm2022/lib/directives/public-api.mjs +0 -28
  135. package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +0 -60
  136. package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +0 -196
  137. package/esm2022/lib/document-list/components/document-list.component.mjs +0 -963
  138. package/esm2022/lib/document-list/components/document-list.token.mjs +0 -21
  139. package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +0 -42
  140. package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +0 -107
  141. package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +0 -131
  142. package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +0 -91
  143. package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +0 -86
  144. package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +0 -118
  145. package/esm2022/lib/document-list/components/node.event.mjs +0 -30
  146. package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +0 -83
  147. package/esm2022/lib/document-list/data/image-resolver.model.mjs +0 -18
  148. package/esm2022/lib/document-list/data/row-filter.model.mjs +0 -18
  149. package/esm2022/lib/document-list/data/share-data-row.model.mjs +0 -102
  150. package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +0 -258
  151. package/esm2022/lib/document-list/document-list.module.mjs +0 -75
  152. package/esm2022/lib/document-list/index.mjs +0 -18
  153. package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +0 -18
  154. package/esm2022/lib/document-list/models/content-action.model.mjs +0 -59
  155. package/esm2022/lib/document-list/models/document-folder.model.mjs +0 -23
  156. package/esm2022/lib/document-list/models/node-action.enum.mjs +0 -27
  157. package/esm2022/lib/document-list/models/permissions-style.model.mjs +0 -27
  158. package/esm2022/lib/document-list/models/permissions.model.mjs +0 -26
  159. package/esm2022/lib/document-list/models/preset.model.mjs +0 -257
  160. package/esm2022/lib/document-list/public-api.mjs +0 -47
  161. package/esm2022/lib/document-list/services/custom-resources.service.mjs +0 -378
  162. package/esm2022/lib/document-list/services/document-actions.service.mjs +0 -142
  163. package/esm2022/lib/document-list/services/document-list.service.mjs +0 -175
  164. package/esm2022/lib/document-list/services/folder-actions.service.mjs +0 -137
  165. package/esm2022/lib/document-list/services/lock.service.mjs +0 -72
  166. package/esm2022/lib/document-list/services/node-actions.service.mjs +0 -122
  167. package/esm2022/lib/group/index.mjs +0 -18
  168. package/esm2022/lib/group/public-api.mjs +0 -18
  169. package/esm2022/lib/group/services/group.service.mjs +0 -84
  170. package/esm2022/lib/infinite-scroll-datasource/index.mjs +0 -18
  171. package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +0 -69
  172. package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +0 -18
  173. package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +0 -18
  174. package/esm2022/lib/interfaces/index.mjs +0 -18
  175. package/esm2022/lib/interfaces/library-entity.interface.mjs +0 -18
  176. package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +0 -18
  177. package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +0 -18
  178. package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +0 -18
  179. package/esm2022/lib/interfaces/public-api.mjs +0 -23
  180. package/esm2022/lib/interfaces/restore-message-model.interface.mjs +0 -19
  181. package/esm2022/lib/legal-hold/index.mjs +0 -18
  182. package/esm2022/lib/legal-hold/public-api.mjs +0 -18
  183. package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +0 -136
  184. package/esm2022/lib/material.module.mjs +0 -183
  185. package/esm2022/lib/mock/alfresco-api.service.mock.mjs +0 -43
  186. package/esm2022/lib/mock/date-range-search-filter.mock.mjs +0 -65
  187. package/esm2022/lib/mock/document-library.model.mock.mjs +0 -84
  188. package/esm2022/lib/mock/document-list.component.mock.mjs +0 -364
  189. package/esm2022/lib/mock/index.mjs +0 -18
  190. package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +0 -161
  191. package/esm2022/lib/mock/public-api.mjs +0 -27
  192. package/esm2022/lib/mock/search-filter-mock.mjs +0 -637
  193. package/esm2022/lib/mock/search-query.mock.mjs +0 -40
  194. package/esm2022/lib/mock/search.component.mock.mjs +0 -165
  195. package/esm2022/lib/mock/search.service.mock.mjs +0 -61
  196. package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +0 -281
  197. package/esm2022/lib/new-version-uploader/index.mjs +0 -18
  198. package/esm2022/lib/new-version-uploader/models/index.mjs +0 -18
  199. package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +0 -24
  200. package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +0 -74
  201. package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +0 -33
  202. package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +0 -103
  203. package/esm2022/lib/new-version-uploader/public-api.mjs +0 -21
  204. package/esm2022/lib/node-comments/index.mjs +0 -18
  205. package/esm2022/lib/node-comments/node-comments.component.mjs +0 -50
  206. package/esm2022/lib/node-comments/node-comments.module.mjs +0 -33
  207. package/esm2022/lib/node-comments/public-api.mjs +0 -20
  208. package/esm2022/lib/node-comments/services/node-comments.service.mjs +0 -85
  209. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +0 -18
  210. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +0 -123
  211. package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +0 -102
  212. package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +0 -69
  213. package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +0 -45
  214. package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +0 -67
  215. package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +0 -56
  216. package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +0 -102
  217. package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +0 -87
  218. package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +0 -219
  219. package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +0 -134
  220. package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +0 -88
  221. package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +0 -82
  222. package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +0 -111
  223. package/esm2022/lib/permission-manager/index.mjs +0 -18
  224. package/esm2022/lib/permission-manager/models/member.model.mjs +0 -59
  225. package/esm2022/lib/permission-manager/models/permission.model.mjs +0 -29
  226. package/esm2022/lib/permission-manager/models/role.model.mjs +0 -18
  227. package/esm2022/lib/permission-manager/permission-manager.module.mjs +0 -84
  228. package/esm2022/lib/permission-manager/public-api.mjs +0 -36
  229. package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +0 -78
  230. package/esm2022/lib/permission-manager/services/node-permission.service.mjs +0 -299
  231. package/esm2022/lib/pipes/content-pipe.module.mjs +0 -37
  232. package/esm2022/lib/pipes/index.mjs +0 -18
  233. package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +0 -69
  234. package/esm2022/lib/pipes/public-api.mjs +0 -19
  235. package/esm2022/lib/prediction/index.mjs +0 -18
  236. package/esm2022/lib/prediction/public-api.mjs +0 -18
  237. package/esm2022/lib/prediction/services/index.mjs +0 -18
  238. package/esm2022/lib/prediction/services/prediction.service.mjs +0 -57
  239. package/esm2022/lib/search/components/empty-search-result.component.mjs +0 -27
  240. package/esm2022/lib/search/components/index.mjs +0 -43
  241. package/esm2022/lib/search/components/reset-search.directive.mjs +0 -41
  242. package/esm2022/lib/search/components/search-check-list/index.mjs +0 -18
  243. package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +0 -158
  244. package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +0 -18
  245. package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +0 -169
  246. package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +0 -46
  247. package/esm2022/lib/search/components/search-control.component.mjs +0 -180
  248. package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +0 -22
  249. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +0 -23
  250. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +0 -23
  251. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +0 -196
  252. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +0 -18
  253. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +0 -201
  254. package/esm2022/lib/search/components/search-datetime-range/index.mjs +0 -18
  255. package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +0 -223
  256. package/esm2022/lib/search/components/search-facet-field/index.mjs +0 -18
  257. package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +0 -132
  258. package/esm2022/lib/search/components/search-filter/index.mjs +0 -19
  259. package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +0 -45
  260. package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +0 -80
  261. package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +0 -18
  262. package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +0 -154
  263. package/esm2022/lib/search/components/search-filter-chips/index.mjs +0 -23
  264. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +0 -104
  265. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +0 -109
  266. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +0 -129
  267. package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +0 -63
  268. package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +0 -43
  269. package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +0 -109
  270. package/esm2022/lib/search/components/search-filter-container/index.mjs +0 -18
  271. package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +0 -122
  272. package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +0 -19
  273. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +0 -36
  274. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +0 -63
  275. package/esm2022/lib/search/components/search-form/index.mjs +0 -18
  276. package/esm2022/lib/search/components/search-form/search-form.component.mjs +0 -52
  277. package/esm2022/lib/search/components/search-input/index.mjs +0 -18
  278. package/esm2022/lib/search/components/search-input/search-input.component.mjs +0 -108
  279. package/esm2022/lib/search/components/search-logical-filter/index.mjs +0 -18
  280. package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +0 -163
  281. package/esm2022/lib/search/components/search-number-range/index.mjs +0 -18
  282. package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +0 -154
  283. package/esm2022/lib/search/components/search-panel/index.mjs +0 -18
  284. package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +0 -44
  285. package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +0 -18
  286. package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +0 -23
  287. package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +0 -26
  288. package/esm2022/lib/search/components/search-properties/index.mjs +0 -22
  289. package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +0 -244
  290. package/esm2022/lib/search/components/search-properties/search-properties.mjs +0 -18
  291. package/esm2022/lib/search/components/search-radio/index.mjs +0 -18
  292. package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +0 -145
  293. package/esm2022/lib/search/components/search-slider/index.mjs +0 -18
  294. package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +0 -119
  295. package/esm2022/lib/search/components/search-sorting-picker/index.mjs +0 -18
  296. package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +0 -77
  297. package/esm2022/lib/search/components/search-text/index.mjs +0 -18
  298. package/esm2022/lib/search/components/search-text/search-text.component.mjs +0 -134
  299. package/esm2022/lib/search/components/search-widget-container/index.mjs +0 -18
  300. package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +0 -113
  301. package/esm2022/lib/search/components/search.component.mjs +0 -152
  302. package/esm2022/lib/search/forms/index.mjs +0 -19
  303. package/esm2022/lib/search/forms/live-error-state-matcher.mjs +0 -23
  304. package/esm2022/lib/search/forms/search-term-validator.mjs +0 -26
  305. package/esm2022/lib/search/index.mjs +0 -18
  306. package/esm2022/lib/search/mocks/index.mjs +0 -18
  307. package/esm2022/lib/search/mocks/search.service.mock.mjs +0 -56
  308. package/esm2022/lib/search/models/autocomplete-option.interface.mjs +0 -22
  309. package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +0 -18
  310. package/esm2022/lib/search/models/facet-field.interface.mjs +0 -29
  311. package/esm2022/lib/search/models/facet-query.interface.mjs +0 -18
  312. package/esm2022/lib/search/models/facet-widget.interface.mjs +0 -18
  313. package/esm2022/lib/search/models/filter-query.interface.mjs +0 -18
  314. package/esm2022/lib/search/models/filter-search.interface.mjs +0 -18
  315. package/esm2022/lib/search/models/index.mjs +0 -34
  316. package/esm2022/lib/search/models/response-facet-query-list.model.mjs +0 -31
  317. package/esm2022/lib/search/models/search-category.interface.mjs +0 -18
  318. package/esm2022/lib/search/models/search-configuration.interface.mjs +0 -18
  319. package/esm2022/lib/search/models/search-filter-list.model.mjs +0 -148
  320. package/esm2022/lib/search/models/search-form.interface.mjs +0 -18
  321. package/esm2022/lib/search/models/search-range.interface.mjs +0 -18
  322. package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +0 -18
  323. package/esm2022/lib/search/models/search-widget-settings.interface.mjs +0 -18
  324. package/esm2022/lib/search/models/search-widget.interface.mjs +0 -18
  325. package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +0 -18
  326. package/esm2022/lib/search/public-api.mjs +0 -24
  327. package/esm2022/lib/search/search-configuration.token.mjs +0 -19
  328. package/esm2022/lib/search/search.module.mjs +0 -192
  329. package/esm2022/lib/search/services/base-query-builder.service.mjs +0 -509
  330. package/esm2022/lib/search/services/index.mjs +0 -24
  331. package/esm2022/lib/search/services/search-configuration.service.mjs +0 -50
  332. package/esm2022/lib/search/services/search-facet-filters.service.mjs +0 -374
  333. package/esm2022/lib/search/services/search-filter.service.mjs +0 -56
  334. package/esm2022/lib/search/services/search-header-query-builder.service.mjs +0 -136
  335. package/esm2022/lib/search/services/search-query-builder.service.mjs +0 -48
  336. package/esm2022/lib/search/services/search.service.mjs +0 -89
  337. package/esm2022/lib/search-ai/index.mjs +0 -18
  338. package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +0 -18
  339. package/esm2022/lib/search-ai/public-api.mjs +0 -19
  340. package/esm2022/lib/search-ai/services/search-ai.service.mjs +0 -103
  341. package/esm2022/lib/security/index.mjs +0 -18
  342. package/esm2022/lib/security/public-api.mjs +0 -18
  343. package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +0 -18
  344. package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +0 -18
  345. package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +0 -274
  346. package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +0 -43
  347. package/esm2022/lib/services/alfresco-api.interface.mjs +0 -18
  348. package/esm2022/lib/services/alfresco-api.service.mjs +0 -120
  349. package/esm2022/lib/services/index.mjs +0 -18
  350. package/esm2022/lib/services/public-api.mjs +0 -18
  351. package/esm2022/lib/tag/index.mjs +0 -18
  352. package/esm2022/lib/tag/public-api.mjs +0 -24
  353. package/esm2022/lib/tag/services/tag.service.mjs +0 -171
  354. package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +0 -114
  355. package/esm2022/lib/tag/tag-list/tag-list.component.mjs +0 -98
  356. package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +0 -80
  357. package/esm2022/lib/tag/tag.module.mjs +0 -37
  358. package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +0 -27
  359. package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +0 -370
  360. package/esm2022/lib/testing/content.testing.module.mjs +0 -56
  361. package/esm2022/lib/tree/components/tree.component.mjs +0 -312
  362. package/esm2022/lib/tree/index.mjs +0 -18
  363. package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +0 -18
  364. package/esm2022/lib/tree/models/tree-node.interface.mjs +0 -22
  365. package/esm2022/lib/tree/models/tree-response.interface.mjs +0 -18
  366. package/esm2022/lib/tree/public-api.mjs +0 -23
  367. package/esm2022/lib/tree/services/tree.service.mjs +0 -134
  368. package/esm2022/lib/tree/tree.module.mjs +0 -33
  369. package/esm2022/lib/tree-view/components/tree-view.component.mjs +0 -75
  370. package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +0 -99
  371. package/esm2022/lib/tree-view/index.mjs +0 -18
  372. package/esm2022/lib/tree-view/models/tree-view.model.mjs +0 -28
  373. package/esm2022/lib/tree-view/public-api.mjs +0 -22
  374. package/esm2022/lib/tree-view/services/tree-view.service.mjs +0 -38
  375. package/esm2022/lib/tree-view/tree-view.module.mjs +0 -33
  376. package/esm2022/lib/upload/components/base-upload/upload-base.mjs +0 -176
  377. package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +0 -190
  378. package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +0 -92
  379. package/esm2022/lib/upload/components/file-uploading-list.component.mjs +0 -124
  380. package/esm2022/lib/upload/components/upload-button.component.mjs +0 -133
  381. package/esm2022/lib/upload/components/upload-drag-area.component.mjs +0 -112
  382. package/esm2022/lib/upload/components/upload-files.event.mjs +0 -41
  383. package/esm2022/lib/upload/components/upload-version-button.component.mjs +0 -54
  384. package/esm2022/lib/upload/directives/file-draggable.directive.mjs +0 -154
  385. package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +0 -75
  386. package/esm2022/lib/upload/index.mjs +0 -18
  387. package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +0 -39
  388. package/esm2022/lib/upload/public-api.mjs +0 -29
  389. package/esm2022/lib/upload/upload.module.mjs +0 -72
  390. package/esm2022/lib/version-compatibility/index.mjs +0 -18
  391. package/esm2022/lib/version-compatibility/public-api.mjs +0 -20
  392. package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +0 -26
  393. package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +0 -53
  394. package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +0 -33
  395. package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +0 -76
  396. package/esm2022/lib/version-manager/content-version.service.mjs +0 -53
  397. package/esm2022/lib/version-manager/index.mjs +0 -18
  398. package/esm2022/lib/version-manager/public-api.mjs +0 -23
  399. package/esm2022/lib/version-manager/version-comparison.component.mjs +0 -42
  400. package/esm2022/lib/version-manager/version-list.component.mjs +0 -215
  401. package/esm2022/lib/version-manager/version-manager.component.mjs +0 -145
  402. package/esm2022/lib/version-manager/version-manager.module.mjs +0 -48
  403. package/esm2022/lib/version-manager/version-upload.component.mjs +0 -154
  404. package/esm2022/lib/viewer/alfresco-viewer.module.mjs +0 -33
  405. package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +0 -408
  406. package/esm2022/lib/viewer/index.mjs +0 -18
  407. package/esm2022/lib/viewer/public-api.mjs +0 -19
  408. package/esm2022/public-api.mjs +0 -56
@@ -1,256 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { MatDialog } from '@angular/material/dialog';
18
- import { EventEmitter, Injectable, Output } from '@angular/core';
19
- import { ThumbnailService, TranslationService } from '@alfresco/adf-core';
20
- import { Subject, throwError } from 'rxjs';
21
- import { AllowableOperationsEnum } from '../common/models/allowable-operations.enum';
22
- import { ContentService } from '../common/services/content.service';
23
- import { DocumentListService } from '../document-list/services/document-list.service';
24
- import { ContentNodeSelectorComponent } from './content-node-selector.component';
25
- import { NodeAction } from '../document-list/models/node-action.enum';
26
- import { NodeLockDialogComponent } from '../dialogs/node-lock/node-lock.dialog';
27
- import { switchMap } from 'rxjs/operators';
28
- import { SitesService } from '../common/services/sites.service';
29
- import * as i0 from "@angular/core";
30
- import * as i1 from "@angular/material/dialog";
31
- import * as i2 from "../common/services/content.service";
32
- import * as i3 from "../document-list/services/document-list.service";
33
- import * as i4 from "../common/services/sites.service";
34
- import * as i5 from "@alfresco/adf-core";
35
- // eslint-disable-next-line @angular-eslint/directive-class-suffix
36
- export class ContentNodeDialogService {
37
- static { this.nonDocumentSiteContent = ['blog', 'calendar', 'dataLists', 'discussions', 'links', 'wiki']; }
38
- constructor(dialog, contentService, documentListService, siteService, translation, thumbnailService) {
39
- this.dialog = dialog;
40
- this.contentService = contentService;
41
- this.documentListService = documentListService;
42
- this.siteService = siteService;
43
- this.translation = translation;
44
- this.thumbnailService = thumbnailService;
45
- /** Emitted when an error occurs. */
46
- this.error = new EventEmitter();
47
- }
48
- /**
49
- * Opens a file browser at a chosen folder location.
50
- * shows files and folders in the dialog search result.
51
- *
52
- * @param folderNodeId ID of the folder to use
53
- * @returns Information about the selected file(s)
54
- */
55
- openFileBrowseDialogByFolderId(folderNodeId) {
56
- return this.documentListService
57
- .getFolderNode(folderNodeId)
58
- .pipe(switchMap((nodeEntry) => this.openUploadFileDialog(NodeAction.CHOOSE, nodeEntry.entry, true)));
59
- }
60
- /**
61
- * Opens a lock node dialog.
62
- *
63
- * @param contentEntry Node to lock
64
- * @returns Error/status message (if any)
65
- */
66
- openLockNodeDialog(contentEntry) {
67
- const observable = new Subject();
68
- if (this.contentService.hasAllowableOperations(contentEntry, AllowableOperationsEnum.LOCK)) {
69
- this.dialog.open(NodeLockDialogComponent, {
70
- data: {
71
- node: contentEntry,
72
- onError: (error) => {
73
- this.error.emit(error);
74
- observable.error(error);
75
- }
76
- },
77
- width: '400px'
78
- });
79
- }
80
- else {
81
- observable.error('OPERATION.FAIL.NODE.NO_PERMISSION');
82
- }
83
- return observable;
84
- }
85
- /**
86
- * Opens a file browser at a chosen site location.
87
- * shows files and folders in the dialog search result.
88
- *
89
- * @returns Information about the selected file(s)
90
- */
91
- openFileBrowseDialogBySite() {
92
- return this.siteService
93
- .getSites()
94
- .pipe(switchMap((response) => this.openFileBrowseDialogByFolderId(response.list.entries[0].entry.guid)));
95
- }
96
- /**
97
- * Opens a file browser at a default myFile location.
98
- * shows files and folders in the dialog search result.
99
- *
100
- * @returns Information about the selected file(s)
101
- */
102
- openFileBrowseDialogByDefaultLocation() {
103
- return this.openFileBrowseDialogByFolderId('-my-');
104
- }
105
- /**
106
- * Opens a folder browser at a chosen site location.
107
- *
108
- * @returns Information about the selected folder(s)
109
- */
110
- openFolderBrowseDialogBySite() {
111
- return this.openFolderBrowseDialogByFolderId('-my-');
112
- }
113
- /**
114
- * Opens a folder browser at a chosen folder location.
115
- *
116
- * @param folderNodeId ID of the folder to use
117
- * @returns Information about the selected folder(s)
118
- */
119
- openFolderBrowseDialogByFolderId(folderNodeId) {
120
- return this.documentListService
121
- .getFolderNode(folderNodeId)
122
- .pipe(switchMap((node) => this.openUploadFolderDialog(NodeAction.CHOOSE, node.entry)));
123
- }
124
- /**
125
- * Opens a dialog to copy or move an item to a new location.
126
- *
127
- * @param action Name of the action (eg, "Copy" or "Move") to show in the title
128
- * @param contentEntry Item to be copied or moved
129
- * @param permission Permission for the operation
130
- * @param excludeSiteContent The site content that should be filtered out
131
- * @returns Information about files that were copied/moved
132
- */
133
- openCopyMoveDialog(action, contentEntry, permission, excludeSiteContent) {
134
- if (this.contentService.hasAllowableOperations(contentEntry, permission)) {
135
- const select = new Subject();
136
- const data = {
137
- title: this.getTitleTranslation(action, contentEntry.name),
138
- actionName: action,
139
- selectionMode: 'single',
140
- currentFolderId: contentEntry.parentId,
141
- imageResolver: this.imageResolver.bind(this),
142
- where: '(isFolder=true)',
143
- isSelectionValid: this.isCopyMoveSelectionValid.bind(this),
144
- excludeSiteContent: excludeSiteContent || ContentNodeDialogService.nonDocumentSiteContent,
145
- select
146
- };
147
- const dialogRef = this.openContentNodeDialog(data, 'adf-content-node-selector-dialog', '630px');
148
- dialogRef.afterClosed().subscribe({ next: () => select.complete() });
149
- return select;
150
- }
151
- else {
152
- const errors = new Error(JSON.stringify({ error: { statusCode: 403 } }));
153
- return throwError(errors);
154
- }
155
- }
156
- /**
157
- * Gets the translation of the dialog title.
158
- *
159
- * @param action Name of the action to display in the dialog title
160
- * @param name Name of the item on which the action is being performed
161
- * @returns Translated version of the title
162
- */
163
- getTitleTranslation(action, name) {
164
- return this.translation.instant(`NODE_SELECTOR.${action.toUpperCase()}_ITEM`, { name });
165
- }
166
- /**
167
- * Opens a dialog to choose folders to upload.
168
- *
169
- * @param action Name of the action to show in the title
170
- * @param contentEntry Item to upload
171
- * @returns Information about the chosen folder(s)
172
- */
173
- openUploadFolderDialog(action, contentEntry) {
174
- const select = new Subject();
175
- const data = {
176
- title: this.getTitleTranslation(action, this.translation.instant('DROPDOWN.MY_FILES_OPTION')),
177
- actionName: action,
178
- selectionMode: 'single',
179
- currentFolderId: contentEntry.id,
180
- imageResolver: this.imageResolver.bind(this),
181
- isSelectionValid: this.hasAllowableOperationsOnNodeFolder.bind(this),
182
- where: '(isFolder=true)',
183
- select
184
- };
185
- const dialogRef = this.openContentNodeDialog(data, 'adf-content-node-selector-dialog', '630px');
186
- dialogRef.afterClosed().subscribe({ next: () => select.complete() });
187
- return select;
188
- }
189
- /**
190
- * Opens a dialog to choose a file to upload.
191
- *
192
- * @param action Name of the action to show in the title
193
- * @param contentEntry Item to upload
194
- * @param showFilesInResult Show files in dialog search result
195
- * @returns Information about the chosen file(s)
196
- */
197
- openUploadFileDialog(action, contentEntry, showFilesInResult = false) {
198
- const select = new Subject();
199
- const data = {
200
- title: this.getTitleTranslation(action, this.translation.instant('DROPDOWN.MY_FILES_OPTION')),
201
- actionName: action,
202
- selectionMode: 'single',
203
- currentFolderId: contentEntry.id,
204
- imageResolver: this.imageResolver.bind(this),
205
- isSelectionValid: (entry) => entry.isFile,
206
- select,
207
- showFilesInResult
208
- };
209
- const dialogRef = this.openContentNodeDialog(data, 'adf-content-node-selector-dialog', '630px');
210
- dialogRef.afterClosed().subscribe({ next: () => select.complete() });
211
- return select;
212
- }
213
- openContentNodeDialog(data, panelClass, width) {
214
- return this.dialog.open(ContentNodeSelectorComponent, {
215
- data,
216
- panelClass,
217
- width,
218
- disableClose: true
219
- });
220
- }
221
- imageResolver(row) {
222
- const entry = row.node.entry;
223
- if (!this.contentService.hasAllowableOperations(entry, 'create')) {
224
- if (this.isNodeFolder(entry)) {
225
- return this.thumbnailService.getMimeTypeIcon('disable/folder');
226
- }
227
- }
228
- return null;
229
- }
230
- hasAllowableOperationsOnNodeFolder(entry) {
231
- return this.isNodeFolder(entry) && this.contentService.hasAllowableOperations(entry, 'create');
232
- }
233
- isNodeFolder(entry) {
234
- return entry.isFolder;
235
- }
236
- isCopyMoveSelectionValid(entry) {
237
- return this.hasEntityCreatePermission(entry) && !this.isSite(entry);
238
- }
239
- hasEntityCreatePermission(entry) {
240
- return this.contentService.hasAllowableOperations(entry, 'create');
241
- }
242
- isSite(entry) {
243
- return !!entry.guid || entry.nodeType === 'st:site' || entry.nodeType === 'st:sites';
244
- }
245
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentNodeDialogService, deps: [{ token: i1.MatDialog }, { token: i2.ContentService }, { token: i3.DocumentListService }, { token: i4.SitesService }, { token: i5.TranslationService }, { token: i5.ThumbnailService }], target: i0.ɵɵFactoryTarget.Injectable }); }
246
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentNodeDialogService, providedIn: 'root' }); }
247
- }
248
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentNodeDialogService, decorators: [{
249
- type: Injectable,
250
- args: [{
251
- providedIn: 'root'
252
- }]
253
- }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.ContentService }, { type: i3.DocumentListService }, { type: i4.SitesService }, { type: i5.TranslationService }, { type: i5.ThumbnailService }], propDecorators: { error: [{
254
- type: Output
255
- }] } });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1ub2RlLWRpYWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jb250ZW50LW5vZGUtc2VsZWN0b3IvY29udGVudC1ub2RlLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7OztBQUtoRSxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLHdCQUF3QjthQUMxQiwyQkFBc0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEFBQXBFLENBQXFFO0lBTWxHLFlBQ1ksTUFBaUIsRUFDakIsY0FBOEIsRUFDOUIsbUJBQXdDLEVBQ3hDLFdBQXlCLEVBQ3pCLFdBQStCLEVBQy9CLGdCQUFrQztRQUxsQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGdCQUFXLEdBQVgsV0FBVyxDQUFjO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBVjlDLG9DQUFvQztRQUVwQyxVQUFLLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFTaEQsQ0FBQztJQUVKOzs7Ozs7T0FNRztJQUNILDhCQUE4QixDQUFDLFlBQW9CO1FBQy9DLE9BQU8sSUFBSSxDQUFDLG1CQUFtQjthQUMxQixhQUFhLENBQUMsWUFBWSxDQUFDO2FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4SCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxrQkFBa0IsQ0FBQyxZQUFrQjtRQUN4QyxNQUFNLFVBQVUsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDekYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7Z0JBQ3RDLElBQUksRUFBRTtvQkFDRixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3ZCLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzVCLENBQUM7aUJBQ0o7Z0JBQ0QsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDSixVQUFVLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDBCQUEwQjtRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ2xCLFFBQVEsRUFBRTthQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3SCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxxQ0FBcUM7UUFDakMsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw0QkFBNEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZ0NBQWdDLENBQUMsWUFBb0I7UUFDakQsT0FBTyxJQUFJLENBQUMsbUJBQW1CO2FBQzFCLGFBQWEsQ0FBQyxZQUFZLENBQUM7YUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQWUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxrQkFBa0IsQ0FBQyxNQUFrQixFQUFFLFlBQWtCLEVBQUUsVUFBbUIsRUFBRSxrQkFBNkI7UUFDekcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7WUFFckMsTUFBTSxJQUFJLEdBQXFDO2dCQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUMxRCxVQUFVLEVBQUUsTUFBTTtnQkFDbEIsYUFBYSxFQUFFLFFBQVE7Z0JBQ3ZCLGVBQWUsRUFBRSxZQUFZLENBQUMsUUFBUTtnQkFDdEMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDNUMsS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQzFELGtCQUFrQixFQUFFLGtCQUFrQixJQUFJLHdCQUF3QixDQUFDLHNCQUFzQjtnQkFDekYsTUFBTTthQUNULENBQUM7WUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLGtDQUFrQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVyRSxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsSUFBWTtRQUM1QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGlCQUFpQixNQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHNCQUFzQixDQUFDLE1BQWtCLEVBQUUsWUFBa0I7UUFDekQsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUVyQyxNQUFNLElBQUksR0FBcUM7WUFDM0MsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUM3RixVQUFVLEVBQUUsTUFBTTtZQUNsQixhQUFhLEVBQUUsUUFBUTtZQUN2QixlQUFlLEVBQUUsWUFBWSxDQUFDLEVBQUU7WUFDaEMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM1QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsa0NBQWtDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNwRSxLQUFLLEVBQUUsaUJBQWlCO1lBQ3hCLE1BQU07U0FDVCxDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxrQ0FBa0MsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckUsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxvQkFBb0IsQ0FBQyxNQUFrQixFQUFFLFlBQWtCLEVBQUUsaUJBQWlCLEdBQUcsS0FBSztRQUNsRixNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXJDLE1BQU0sSUFBSSxHQUFxQztZQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQzdGLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCLGVBQWUsRUFBRSxZQUFZLENBQUMsRUFBRTtZQUNoQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzVDLGdCQUFnQixFQUFFLENBQUMsS0FBVyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUMvQyxNQUFNO1lBQ04saUJBQWlCO1NBQ3BCLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLGtDQUFrQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVyRSxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8scUJBQXFCLENBQ3pCLElBQXNDLEVBQ3RDLFVBQWtCLEVBQ2xCLEtBQWE7UUFFYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQ2xELElBQUk7WUFDSixVQUFVO1lBQ1YsS0FBSztZQUNMLFlBQVksRUFBRSxJQUFJO1NBQ3JCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxhQUFhLENBQUMsR0FBaUI7UUFDbkMsTUFBTSxLQUFLLEdBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDL0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ25FLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLGtDQUFrQyxDQUFDLEtBQVc7UUFDbEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBVztRQUM1QixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDMUIsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEtBQVc7UUFDeEMsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxLQUFXO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFLO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7SUFDekYsQ0FBQzsrR0FsUFEsd0JBQXdCO21IQUF4Qix3QkFBd0IsY0FIckIsTUFBTTs7NEZBR1Qsd0JBQXdCO2tCQUpwQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjt3T0FPRyxLQUFLO3NCQURKLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHVtYm5haWxTZXJ2aWNlLCBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2hhcmVEYXRhUm93IH0gZnJvbSAnLi4vZG9jdW1lbnQtbGlzdC9kYXRhL3NoYXJlLWRhdGEtcm93Lm1vZGVsJztcbmltcG9ydCB7IEFsbG93YWJsZU9wZXJhdGlvbnNFbnVtIH0gZnJvbSAnLi4vY29tbW9uL21vZGVscy9hbGxvd2FibGUtb3BlcmF0aW9ucy5lbnVtJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3NlcnZpY2VzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlLCBOb2RlRW50cnksIFNpdGVQYWdpbmcgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IERvY3VtZW50TGlzdFNlcnZpY2UgfSBmcm9tICcuLi9kb2N1bWVudC1saXN0L3NlcnZpY2VzL2RvY3VtZW50LWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZW50LW5vZGUtc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnREYXRhIH0gZnJvbSAnLi9jb250ZW50LW5vZGUtc2VsZWN0b3IuY29tcG9uZW50LWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IE5vZGVBY3Rpb24gfSBmcm9tICcuLi9kb2N1bWVudC1saXN0L21vZGVscy9ub2RlLWFjdGlvbi5lbnVtJztcbmltcG9ydCB7IE5vZGVMb2NrRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9ncy9ub2RlLWxvY2svbm9kZS1sb2NrLmRpYWxvZyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTaXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vc2VydmljZXMvc2l0ZXMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBDb250ZW50Tm9kZURpYWxvZ1NlcnZpY2Uge1xuICAgIHN0YXRpYyBub25Eb2N1bWVudFNpdGVDb250ZW50ID0gWydibG9nJywgJ2NhbGVuZGFyJywgJ2RhdGFMaXN0cycsICdkaXNjdXNzaW9ucycsICdsaW5rcycsICd3aWtpJ107XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3Vycy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkb2N1bWVudExpc3RTZXJ2aWNlOiBEb2N1bWVudExpc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNpdGVTZXJ2aWNlOiBTaXRlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0aHVtYm5haWxTZXJ2aWNlOiBUaHVtYm5haWxTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBmaWxlIGJyb3dzZXIgYXQgYSBjaG9zZW4gZm9sZGVyIGxvY2F0aW9uLlxuICAgICAqIHNob3dzIGZpbGVzIGFuZCBmb2xkZXJzIGluIHRoZSBkaWFsb2cgc2VhcmNoIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb2xkZXJOb2RlSWQgSUQgb2YgdGhlIGZvbGRlciB0byB1c2VcbiAgICAgKiBAcmV0dXJucyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VsZWN0ZWQgZmlsZShzKVxuICAgICAqL1xuICAgIG9wZW5GaWxlQnJvd3NlRGlhbG9nQnlGb2xkZXJJZChmb2xkZXJOb2RlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Tm9kZVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50TGlzdFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRGb2xkZXJOb2RlKGZvbGRlck5vZGVJZClcbiAgICAgICAgICAgIC5waXBlKHN3aXRjaE1hcCgobm9kZUVudHJ5OiBOb2RlRW50cnkpID0+IHRoaXMub3BlblVwbG9hZEZpbGVEaWFsb2coTm9kZUFjdGlvbi5DSE9PU0UsIG5vZGVFbnRyeS5lbnRyeSwgdHJ1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIGxvY2sgbm9kZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGVudEVudHJ5IE5vZGUgdG8gbG9ja1xuICAgICAqIEByZXR1cm5zIEVycm9yL3N0YXR1cyBtZXNzYWdlIChpZiBhbnkpXG4gICAgICovXG4gICAgcHVibGljIG9wZW5Mb2NrTm9kZURpYWxvZyhjb250ZW50RW50cnk6IE5vZGUpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgICAgICBjb25zdCBvYnNlcnZhYmxlOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhjb250ZW50RW50cnksIEFsbG93YWJsZU9wZXJhdGlvbnNFbnVtLkxPQ0spKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5vZGVMb2NrRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBub2RlOiBjb250ZW50RW50cnksXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmFibGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzQwMHB4J1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYnNlcnZhYmxlLmVycm9yKCdPUEVSQVRJT04uRkFJTC5OT0RFLk5PX1BFUk1JU1NJT04nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgZmlsZSBicm93c2VyIGF0IGEgY2hvc2VuIHNpdGUgbG9jYXRpb24uXG4gICAgICogc2hvd3MgZmlsZXMgYW5kIGZvbGRlcnMgaW4gdGhlIGRpYWxvZyBzZWFyY2ggcmVzdWx0LlxuICAgICAqXG4gICAgICogQHJldHVybnMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlbGVjdGVkIGZpbGUocylcbiAgICAgKi9cbiAgICBvcGVuRmlsZUJyb3dzZURpYWxvZ0J5U2l0ZSgpOiBPYnNlcnZhYmxlPE5vZGVbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaXRlU2VydmljZVxuICAgICAgICAgICAgLmdldFNpdGVzKClcbiAgICAgICAgICAgIC5waXBlKHN3aXRjaE1hcCgocmVzcG9uc2U6IFNpdGVQYWdpbmcpID0+IHRoaXMub3BlbkZpbGVCcm93c2VEaWFsb2dCeUZvbGRlcklkKHJlc3BvbnNlLmxpc3QuZW50cmllc1swXS5lbnRyeS5ndWlkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgZmlsZSBicm93c2VyIGF0IGEgZGVmYXVsdCBteUZpbGUgbG9jYXRpb24uXG4gICAgICogc2hvd3MgZmlsZXMgYW5kIGZvbGRlcnMgaW4gdGhlIGRpYWxvZyBzZWFyY2ggcmVzdWx0LlxuICAgICAqXG4gICAgICogQHJldHVybnMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlbGVjdGVkIGZpbGUocylcbiAgICAgKi9cbiAgICBvcGVuRmlsZUJyb3dzZURpYWxvZ0J5RGVmYXVsdExvY2F0aW9uKCk6IE9ic2VydmFibGU8Tm9kZVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5GaWxlQnJvd3NlRGlhbG9nQnlGb2xkZXJJZCgnLW15LScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgZm9sZGVyIGJyb3dzZXIgYXQgYSBjaG9zZW4gc2l0ZSBsb2NhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEluZm9ybWF0aW9uIGFib3V0IHRoZSBzZWxlY3RlZCBmb2xkZXIocylcbiAgICAgKi9cbiAgICBvcGVuRm9sZGVyQnJvd3NlRGlhbG9nQnlTaXRlKCk6IE9ic2VydmFibGU8Tm9kZVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5Gb2xkZXJCcm93c2VEaWFsb2dCeUZvbGRlcklkKCctbXktJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBmb2xkZXIgYnJvd3NlciBhdCBhIGNob3NlbiBmb2xkZXIgbG9jYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9sZGVyTm9kZUlkIElEIG9mIHRoZSBmb2xkZXIgdG8gdXNlXG4gICAgICogQHJldHVybnMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlbGVjdGVkIGZvbGRlcihzKVxuICAgICAqL1xuICAgIG9wZW5Gb2xkZXJCcm93c2VEaWFsb2dCeUZvbGRlcklkKGZvbGRlck5vZGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxOb2RlW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZVxuICAgICAgICAgICAgLmdldEZvbGRlck5vZGUoZm9sZGVyTm9kZUlkKVxuICAgICAgICAgICAgLnBpcGUoc3dpdGNoTWFwKChub2RlOiBOb2RlRW50cnkpID0+IHRoaXMub3BlblVwbG9hZEZvbGRlckRpYWxvZyhOb2RlQWN0aW9uLkNIT09TRSwgbm9kZS5lbnRyeSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIGRpYWxvZyB0byBjb3B5IG9yIG1vdmUgYW4gaXRlbSB0byBhIG5ldyBsb2NhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhY3Rpb24gTmFtZSBvZiB0aGUgYWN0aW9uIChlZywgXCJDb3B5XCIgb3IgXCJNb3ZlXCIpIHRvIHNob3cgaW4gdGhlIHRpdGxlXG4gICAgICogQHBhcmFtIGNvbnRlbnRFbnRyeSBJdGVtIHRvIGJlIGNvcGllZCBvciBtb3ZlZFxuICAgICAqIEBwYXJhbSBwZXJtaXNzaW9uIFBlcm1pc3Npb24gZm9yIHRoZSBvcGVyYXRpb25cbiAgICAgKiBAcGFyYW0gZXhjbHVkZVNpdGVDb250ZW50IFRoZSBzaXRlIGNvbnRlbnQgdGhhdCBzaG91bGQgYmUgZmlsdGVyZWQgb3V0XG4gICAgICogQHJldHVybnMgSW5mb3JtYXRpb24gYWJvdXQgZmlsZXMgdGhhdCB3ZXJlIGNvcGllZC9tb3ZlZFxuICAgICAqL1xuICAgIG9wZW5Db3B5TW92ZURpYWxvZyhhY3Rpb246IE5vZGVBY3Rpb24sIGNvbnRlbnRFbnRyeTogTm9kZSwgcGVybWlzc2lvbj86IHN0cmluZywgZXhjbHVkZVNpdGVDb250ZW50Pzogc3RyaW5nW10pOiBPYnNlcnZhYmxlPE5vZGVbXT4ge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50U2VydmljZS5oYXNBbGxvd2FibGVPcGVyYXRpb25zKGNvbnRlbnRFbnRyeSwgcGVybWlzc2lvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdCA9IG5ldyBTdWJqZWN0PE5vZGVbXT4oKTtcblxuICAgICAgICAgICAgY29uc3QgZGF0YTogQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudERhdGEgPSB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuZ2V0VGl0bGVUcmFuc2xhdGlvbihhY3Rpb24sIGNvbnRlbnRFbnRyeS5uYW1lKSxcbiAgICAgICAgICAgICAgICBhY3Rpb25OYW1lOiBhY3Rpb24sXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uTW9kZTogJ3NpbmdsZScsXG4gICAgICAgICAgICAgICAgY3VycmVudEZvbGRlcklkOiBjb250ZW50RW50cnkucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgaW1hZ2VSZXNvbHZlcjogdGhpcy5pbWFnZVJlc29sdmVyLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgd2hlcmU6ICcoaXNGb2xkZXI9dHJ1ZSknLFxuICAgICAgICAgICAgICAgIGlzU2VsZWN0aW9uVmFsaWQ6IHRoaXMuaXNDb3B5TW92ZVNlbGVjdGlvblZhbGlkLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgZXhjbHVkZVNpdGVDb250ZW50OiBleGNsdWRlU2l0ZUNvbnRlbnQgfHwgQ29udGVudE5vZGVEaWFsb2dTZXJ2aWNlLm5vbkRvY3VtZW50U2l0ZUNvbnRlbnQsXG4gICAgICAgICAgICAgICAgc2VsZWN0XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLm9wZW5Db250ZW50Tm9kZURpYWxvZyhkYXRhLCAnYWRmLWNvbnRlbnQtbm9kZS1zZWxlY3Rvci1kaWFsb2cnLCAnNjMwcHgnKTtcbiAgICAgICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSh7IG5leHQ6ICgpID0+IHNlbGVjdC5jb21wbGV0ZSgpIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IHsgc3RhdHVzQ29kZTogNDAzIH0gfSkpO1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHRyYW5zbGF0aW9uIG9mIHRoZSBkaWFsb2cgdGl0bGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWN0aW9uIE5hbWUgb2YgdGhlIGFjdGlvbiB0byBkaXNwbGF5IGluIHRoZSBkaWFsb2cgdGl0bGVcbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBpdGVtIG9uIHdoaWNoIHRoZSBhY3Rpb24gaXMgYmVpbmcgcGVyZm9ybWVkXG4gICAgICogQHJldHVybnMgVHJhbnNsYXRlZCB2ZXJzaW9uIG9mIHRoZSB0aXRsZVxuICAgICAqL1xuICAgIGdldFRpdGxlVHJhbnNsYXRpb24oYWN0aW9uOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLmluc3RhbnQoYE5PREVfU0VMRUNUT1IuJHthY3Rpb24udG9VcHBlckNhc2UoKX1fSVRFTWAsIHsgbmFtZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIGRpYWxvZyB0byBjaG9vc2UgZm9sZGVycyB0byB1cGxvYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWN0aW9uIE5hbWUgb2YgdGhlIGFjdGlvbiB0byBzaG93IGluIHRoZSB0aXRsZVxuICAgICAqIEBwYXJhbSBjb250ZW50RW50cnkgIEl0ZW0gdG8gdXBsb2FkXG4gICAgICogQHJldHVybnMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIGNob3NlbiBmb2xkZXIocylcbiAgICAgKi9cbiAgICBvcGVuVXBsb2FkRm9sZGVyRGlhbG9nKGFjdGlvbjogTm9kZUFjdGlvbiwgY29udGVudEVudHJ5OiBOb2RlKTogT2JzZXJ2YWJsZTxOb2RlW10+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ID0gbmV3IFN1YmplY3Q8Tm9kZVtdPigpO1xuXG4gICAgICAgIGNvbnN0IGRhdGE6IENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnREYXRhID0ge1xuICAgICAgICAgICAgdGl0bGU6IHRoaXMuZ2V0VGl0bGVUcmFuc2xhdGlvbihhY3Rpb24sIHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnRFJPUERPV04uTVlfRklMRVNfT1BUSU9OJykpLFxuICAgICAgICAgICAgYWN0aW9uTmFtZTogYWN0aW9uLFxuICAgICAgICAgICAgc2VsZWN0aW9uTW9kZTogJ3NpbmdsZScsXG4gICAgICAgICAgICBjdXJyZW50Rm9sZGVySWQ6IGNvbnRlbnRFbnRyeS5pZCxcbiAgICAgICAgICAgIGltYWdlUmVzb2x2ZXI6IHRoaXMuaW1hZ2VSZXNvbHZlci5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgaXNTZWxlY3Rpb25WYWxpZDogdGhpcy5oYXNBbGxvd2FibGVPcGVyYXRpb25zT25Ob2RlRm9sZGVyLmJpbmQodGhpcyksXG4gICAgICAgICAgICB3aGVyZTogJyhpc0ZvbGRlcj10cnVlKScsXG4gICAgICAgICAgICBzZWxlY3RcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLm9wZW5Db250ZW50Tm9kZURpYWxvZyhkYXRhLCAnYWRmLWNvbnRlbnQtbm9kZS1zZWxlY3Rvci1kaWFsb2cnLCAnNjMwcHgnKTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHsgbmV4dDogKCkgPT4gc2VsZWN0LmNvbXBsZXRlKCkgfSk7XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIGRpYWxvZyB0byBjaG9vc2UgYSBmaWxlIHRvIHVwbG9hZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhY3Rpb24gTmFtZSBvZiB0aGUgYWN0aW9uIHRvIHNob3cgaW4gdGhlIHRpdGxlXG4gICAgICogQHBhcmFtIGNvbnRlbnRFbnRyeSBJdGVtIHRvIHVwbG9hZFxuICAgICAqIEBwYXJhbSBzaG93RmlsZXNJblJlc3VsdCBTaG93IGZpbGVzIGluIGRpYWxvZyBzZWFyY2ggcmVzdWx0XG4gICAgICogQHJldHVybnMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIGNob3NlbiBmaWxlKHMpXG4gICAgICovXG4gICAgb3BlblVwbG9hZEZpbGVEaWFsb2coYWN0aW9uOiBOb2RlQWN0aW9uLCBjb250ZW50RW50cnk6IE5vZGUsIHNob3dGaWxlc0luUmVzdWx0ID0gZmFsc2UpOiBPYnNlcnZhYmxlPE5vZGVbXT4ge1xuICAgICAgICBjb25zdCBzZWxlY3QgPSBuZXcgU3ViamVjdDxOb2RlW10+KCk7XG5cbiAgICAgICAgY29uc3QgZGF0YTogQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudERhdGEgPSB7XG4gICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRUaXRsZVRyYW5zbGF0aW9uKGFjdGlvbiwgdGhpcy50cmFuc2xhdGlvbi5pbnN0YW50KCdEUk9QRE9XTi5NWV9GSUxFU19PUFRJT04nKSksXG4gICAgICAgICAgICBhY3Rpb25OYW1lOiBhY3Rpb24sXG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlOiAnc2luZ2xlJyxcbiAgICAgICAgICAgIGN1cnJlbnRGb2xkZXJJZDogY29udGVudEVudHJ5LmlkLFxuICAgICAgICAgICAgaW1hZ2VSZXNvbHZlcjogdGhpcy5pbWFnZVJlc29sdmVyLmJpbmQodGhpcyksXG4gICAgICAgICAgICBpc1NlbGVjdGlvblZhbGlkOiAoZW50cnk6IE5vZGUpID0+IGVudHJ5LmlzRmlsZSxcbiAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgIHNob3dGaWxlc0luUmVzdWx0XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5vcGVuQ29udGVudE5vZGVEaWFsb2coZGF0YSwgJ2FkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItZGlhbG9nJywgJzYzMHB4Jyk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSh7IG5leHQ6ICgpID0+IHNlbGVjdC5jb21wbGV0ZSgpIH0pO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3Q7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuQ29udGVudE5vZGVEaWFsb2coXG4gICAgICAgIGRhdGE6IENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnREYXRhLFxuICAgICAgICBwYW5lbENsYXNzOiBzdHJpbmcsXG4gICAgICAgIHdpZHRoOiBzdHJpbmdcbiAgICApOiBNYXREaWFsb2dSZWY8Q29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2cub3BlbihDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFuZWxDbGFzcyxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW1hZ2VSZXNvbHZlcihyb3c6IFNoYXJlRGF0YVJvdyk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBjb25zdCBlbnRyeTogTm9kZSA9IHJvdy5ub2RlLmVudHJ5O1xuICAgICAgICBpZiAoIXRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhlbnRyeSwgJ2NyZWF0ZScpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc05vZGVGb2xkZXIoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh1bWJuYWlsU2VydmljZS5nZXRNaW1lVHlwZUljb24oJ2Rpc2FibGUvZm9sZGVyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0FsbG93YWJsZU9wZXJhdGlvbnNPbk5vZGVGb2xkZXIoZW50cnk6IE5vZGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNOb2RlRm9sZGVyKGVudHJ5KSAmJiB0aGlzLmNvbnRlbnRTZXJ2aWNlLmhhc0FsbG93YWJsZU9wZXJhdGlvbnMoZW50cnksICdjcmVhdGUnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTm9kZUZvbGRlcihlbnRyeTogTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZW50cnkuaXNGb2xkZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0NvcHlNb3ZlU2VsZWN0aW9uVmFsaWQoZW50cnk6IE5vZGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzRW50aXR5Q3JlYXRlUGVybWlzc2lvbihlbnRyeSkgJiYgIXRoaXMuaXNTaXRlKGVudHJ5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0VudGl0eUNyZWF0ZVBlcm1pc3Npb24oZW50cnk6IE5vZGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhlbnRyeSwgJ2NyZWF0ZScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTaXRlKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAhIWVudHJ5Lmd1aWQgfHwgZW50cnkubm9kZVR5cGUgPT09ICdzdDpzaXRlJyB8fCBlbnRyeS5ub2RlVHlwZSA9PT0gJ3N0OnNpdGVzJztcbiAgICB9XG59XG4iXX0=