@alfresco/adf-content-services 8.1.0-16120632321 → 8.1.0-16121703802
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.
- package/bundles/assets/adf-content-services/i18n/en.json +1 -3
- package/esm2022/adf-content-services.mjs +5 -0
- package/esm2022/lib/agent/index.mjs +18 -0
- package/esm2022/lib/agent/public-api.mjs +18 -0
- package/esm2022/lib/agent/services/agent.service.mjs +60 -0
- package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +27 -0
- package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +42 -0
- package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +77 -0
- package/esm2022/lib/api-factories/index.mjs +18 -0
- package/esm2022/lib/api-factories/public-api.mjs +19 -0
- package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +18 -0
- package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +77 -0
- package/esm2022/lib/aspect-list/aspect-list.component.mjs +139 -0
- package/esm2022/lib/aspect-list/aspect-list.module.mjs +35 -0
- package/esm2022/lib/aspect-list/index.mjs +18 -0
- package/esm2022/lib/aspect-list/public-api.mjs +24 -0
- package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +83 -0
- package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +86 -0
- package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +52 -0
- package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +26 -0
- package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +42 -0
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +166 -0
- package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +35 -0
- package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +65 -0
- package/esm2022/lib/breadcrumb/index.mjs +18 -0
- package/esm2022/lib/breadcrumb/public-api.mjs +20 -0
- package/esm2022/lib/category/categories-management/categories-management-mode.mjs +22 -0
- package/esm2022/lib/category/categories-management/categories-management.component.mjs +308 -0
- package/esm2022/lib/category/category.module.mjs +33 -0
- package/esm2022/lib/category/index.mjs +18 -0
- package/esm2022/lib/category/models/category-node.interface.mjs +18 -0
- package/esm2022/lib/category/public-api.mjs +23 -0
- package/esm2022/lib/category/services/category-tree-datasource.service.mjs +80 -0
- package/esm2022/lib/category/services/category.service.mjs +159 -0
- package/esm2022/lib/common/events/file.event.mjs +46 -0
- package/esm2022/lib/common/index.mjs +18 -0
- package/esm2022/lib/common/interfaces/saved-search.interface.mjs +18 -0
- package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +18 -0
- package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +37 -0
- package/esm2022/lib/common/models/allowable-operations.enum.mjs +30 -0
- package/esm2022/lib/common/models/ecm-company.model.mjs +19 -0
- package/esm2022/lib/common/models/ecm-user.model.mjs +45 -0
- package/esm2022/lib/common/models/file.model.mjs +53 -0
- package/esm2022/lib/common/models/node-metadata.model.mjs +23 -0
- package/esm2022/lib/common/models/permissions.enum.mjs +32 -0
- package/esm2022/lib/common/public-api.mjs +37 -0
- package/esm2022/lib/common/services/card-view-content-update.service.mjs +55 -0
- package/esm2022/lib/common/services/content.service.mjs +180 -0
- package/esm2022/lib/common/services/discovery-api.service.mjs +79 -0
- package/esm2022/lib/common/services/favorites-api.service.mjs +84 -0
- package/esm2022/lib/common/services/nodes-api.service.mjs +251 -0
- package/esm2022/lib/common/services/people-content.service.mjs +138 -0
- package/esm2022/lib/common/services/rendition.service.mjs +270 -0
- package/esm2022/lib/common/services/saved-searches.service.mjs +206 -0
- package/esm2022/lib/common/services/sites.service.mjs +243 -0
- package/esm2022/lib/common/services/upload.service.mjs +391 -0
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +54 -0
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +490 -0
- package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +128 -0
- package/esm2022/lib/content-metadata/content-metadata.module.mjs +36 -0
- package/esm2022/lib/content-metadata/index.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +28 -0
- package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +18 -0
- package/esm2022/lib/content-metadata/public-api.mjs +31 -0
- package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +107 -0
- package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +106 -0
- package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +76 -0
- package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +40 -0
- package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +108 -0
- package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +33 -0
- package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +99 -0
- package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +134 -0
- package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +52 -0
- package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +169 -0
- package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +256 -0
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +617 -0
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +66 -0
- package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +18 -0
- package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +205 -0
- package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +50 -0
- package/esm2022/lib/content-node-selector/index.mjs +18 -0
- package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +48 -0
- package/esm2022/lib/content-node-selector/public-api.mjs +25 -0
- package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +168 -0
- package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +287 -0
- package/esm2022/lib/content-node-share/content-node-share.directive.mjs +102 -0
- package/esm2022/lib/content-node-share/content-node-share.module.mjs +35 -0
- package/esm2022/lib/content-node-share/content-node-share.settings.mjs +18 -0
- package/esm2022/lib/content-node-share/index.mjs +18 -0
- package/esm2022/lib/content-node-share/public-api.mjs +22 -0
- package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +83 -0
- package/esm2022/lib/content-type/content-type-dialog.component.mjs +57 -0
- package/esm2022/lib/content-type/content-type-metadata.interface.mjs +18 -0
- package/esm2022/lib/content-type/content-type.service.mjs +52 -0
- package/esm2022/lib/content-type/index.mjs +20 -0
- package/esm2022/lib/content.module.mjs +277 -0
- package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +51 -0
- package/esm2022/lib/dialogs/dialog.module.mjs +52 -0
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +111 -0
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +38 -0
- package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +66 -0
- package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +44 -0
- package/esm2022/lib/dialogs/folder/folder.dialog.mjs +146 -0
- package/esm2022/lib/dialogs/index.mjs +18 -0
- package/esm2022/lib/dialogs/library/library.dialog.mjs +224 -0
- package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +115 -0
- package/esm2022/lib/dialogs/public-api.mjs +25 -0
- package/esm2022/lib/directives/auto-focus.directive.mjs +38 -0
- package/esm2022/lib/directives/check-allowable-operation.directive.mjs +126 -0
- package/esm2022/lib/directives/content-directive.module.mjs +75 -0
- package/esm2022/lib/directives/index.mjs +18 -0
- package/esm2022/lib/directives/library-favorite.directive.mjs +119 -0
- package/esm2022/lib/directives/library-membership.directive.mjs +202 -0
- package/esm2022/lib/directives/node-counter.directive.mjs +59 -0
- package/esm2022/lib/directives/node-delete.directive.mjs +177 -0
- package/esm2022/lib/directives/node-download.directive.mjs +138 -0
- package/esm2022/lib/directives/node-favorite.directive.mjs +193 -0
- package/esm2022/lib/directives/node-lock.directive.mjs +57 -0
- package/esm2022/lib/directives/node-restore.directive.mjs +218 -0
- package/esm2022/lib/directives/public-api.mjs +28 -0
- package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +60 -0
- package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +196 -0
- package/esm2022/lib/document-list/components/document-list.component.mjs +965 -0
- package/esm2022/lib/document-list/components/document-list.token.mjs +21 -0
- package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +42 -0
- package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +107 -0
- package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +131 -0
- package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +91 -0
- package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +86 -0
- package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +118 -0
- package/esm2022/lib/document-list/components/node.event.mjs +30 -0
- package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +83 -0
- package/esm2022/lib/document-list/data/image-resolver.model.mjs +18 -0
- package/esm2022/lib/document-list/data/row-filter.model.mjs +18 -0
- package/esm2022/lib/document-list/data/share-data-row.model.mjs +102 -0
- package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +258 -0
- package/esm2022/lib/document-list/document-list.module.mjs +75 -0
- package/esm2022/lib/document-list/index.mjs +18 -0
- package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +18 -0
- package/esm2022/lib/document-list/models/content-action.model.mjs +59 -0
- package/esm2022/lib/document-list/models/document-folder.model.mjs +23 -0
- package/esm2022/lib/document-list/models/node-action.enum.mjs +27 -0
- package/esm2022/lib/document-list/models/permissions-style.model.mjs +27 -0
- package/esm2022/lib/document-list/models/permissions.model.mjs +26 -0
- package/esm2022/lib/document-list/models/preset.model.mjs +257 -0
- package/esm2022/lib/document-list/public-api.mjs +47 -0
- package/esm2022/lib/document-list/services/custom-resources.service.mjs +378 -0
- package/esm2022/lib/document-list/services/document-actions.service.mjs +142 -0
- package/esm2022/lib/document-list/services/document-list.service.mjs +175 -0
- package/esm2022/lib/document-list/services/folder-actions.service.mjs +137 -0
- package/esm2022/lib/document-list/services/lock.service.mjs +72 -0
- package/esm2022/lib/document-list/services/node-actions.service.mjs +122 -0
- package/esm2022/lib/group/index.mjs +18 -0
- package/esm2022/lib/group/public-api.mjs +18 -0
- package/esm2022/lib/group/services/group.service.mjs +84 -0
- package/esm2022/lib/infinite-scroll-datasource/index.mjs +18 -0
- package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +69 -0
- package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +18 -0
- package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +18 -0
- package/esm2022/lib/interfaces/index.mjs +18 -0
- package/esm2022/lib/interfaces/library-entity.interface.mjs +18 -0
- package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +18 -0
- package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +18 -0
- package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +18 -0
- package/esm2022/lib/interfaces/public-api.mjs +23 -0
- package/esm2022/lib/interfaces/restore-message-model.interface.mjs +19 -0
- package/esm2022/lib/legal-hold/index.mjs +18 -0
- package/esm2022/lib/legal-hold/public-api.mjs +18 -0
- package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +136 -0
- package/esm2022/lib/material.module.mjs +183 -0
- package/esm2022/lib/mock/alfresco-api.service.mock.mjs +43 -0
- package/esm2022/lib/mock/date-range-search-filter.mock.mjs +65 -0
- package/esm2022/lib/mock/document-library.model.mock.mjs +84 -0
- package/esm2022/lib/mock/document-list.component.mock.mjs +364 -0
- package/esm2022/lib/mock/index.mjs +18 -0
- package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +161 -0
- package/esm2022/lib/mock/public-api.mjs +27 -0
- package/esm2022/lib/mock/search-filter-mock.mjs +637 -0
- package/esm2022/lib/mock/search-query.mock.mjs +40 -0
- package/esm2022/lib/mock/search.component.mock.mjs +165 -0
- package/esm2022/lib/mock/search.service.mock.mjs +61 -0
- package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +281 -0
- package/esm2022/lib/new-version-uploader/index.mjs +18 -0
- package/esm2022/lib/new-version-uploader/models/index.mjs +18 -0
- package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +24 -0
- package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +74 -0
- package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +33 -0
- package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +103 -0
- package/esm2022/lib/new-version-uploader/public-api.mjs +21 -0
- package/esm2022/lib/node-comments/index.mjs +18 -0
- package/esm2022/lib/node-comments/node-comments.component.mjs +50 -0
- package/esm2022/lib/node-comments/node-comments.module.mjs +33 -0
- package/esm2022/lib/node-comments/public-api.mjs +20 -0
- package/esm2022/lib/node-comments/services/node-comments.service.mjs +85 -0
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +18 -0
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +123 -0
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +102 -0
- package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +69 -0
- package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +45 -0
- package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +67 -0
- package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +56 -0
- package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +102 -0
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +87 -0
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +219 -0
- package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +134 -0
- package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +88 -0
- package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +82 -0
- package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +111 -0
- package/esm2022/lib/permission-manager/index.mjs +18 -0
- package/esm2022/lib/permission-manager/models/member.model.mjs +59 -0
- package/esm2022/lib/permission-manager/models/permission.model.mjs +29 -0
- package/esm2022/lib/permission-manager/models/role.model.mjs +18 -0
- package/esm2022/lib/permission-manager/permission-manager.module.mjs +84 -0
- package/esm2022/lib/permission-manager/public-api.mjs +36 -0
- package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +78 -0
- package/esm2022/lib/permission-manager/services/node-permission.service.mjs +299 -0
- package/esm2022/lib/pipes/content-pipe.module.mjs +37 -0
- package/esm2022/lib/pipes/index.mjs +18 -0
- package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +69 -0
- package/esm2022/lib/pipes/public-api.mjs +19 -0
- package/esm2022/lib/prediction/index.mjs +18 -0
- package/esm2022/lib/prediction/public-api.mjs +18 -0
- package/esm2022/lib/prediction/services/index.mjs +18 -0
- package/esm2022/lib/prediction/services/prediction.service.mjs +57 -0
- package/esm2022/lib/search/components/empty-search-result.component.mjs +27 -0
- package/esm2022/lib/search/components/index.mjs +43 -0
- package/esm2022/lib/search/components/reset-search.directive.mjs +41 -0
- package/esm2022/lib/search/components/search-check-list/index.mjs +18 -0
- package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +158 -0
- package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +18 -0
- package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +169 -0
- package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +46 -0
- package/esm2022/lib/search/components/search-control.component.mjs +180 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +22 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +23 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +23 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +196 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +18 -0
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +201 -0
- package/esm2022/lib/search/components/search-datetime-range/index.mjs +18 -0
- package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +223 -0
- package/esm2022/lib/search/components/search-facet-field/index.mjs +18 -0
- package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +132 -0
- package/esm2022/lib/search/components/search-filter/index.mjs +19 -0
- package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +45 -0
- package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +80 -0
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +18 -0
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +154 -0
- package/esm2022/lib/search/components/search-filter-chips/index.mjs +23 -0
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +104 -0
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +109 -0
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +129 -0
- package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +63 -0
- package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +43 -0
- package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +109 -0
- package/esm2022/lib/search/components/search-filter-container/index.mjs +18 -0
- package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +122 -0
- package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +19 -0
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +36 -0
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +63 -0
- package/esm2022/lib/search/components/search-form/index.mjs +18 -0
- package/esm2022/lib/search/components/search-form/search-form.component.mjs +52 -0
- package/esm2022/lib/search/components/search-input/index.mjs +18 -0
- package/esm2022/lib/search/components/search-input/search-input.component.mjs +108 -0
- package/esm2022/lib/search/components/search-logical-filter/index.mjs +18 -0
- package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +163 -0
- package/esm2022/lib/search/components/search-number-range/index.mjs +18 -0
- package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +154 -0
- package/esm2022/lib/search/components/search-panel/index.mjs +18 -0
- package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +44 -0
- package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +18 -0
- package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +23 -0
- package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +26 -0
- package/esm2022/lib/search/components/search-properties/index.mjs +22 -0
- package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +244 -0
- package/esm2022/lib/search/components/search-properties/search-properties.mjs +18 -0
- package/esm2022/lib/search/components/search-radio/index.mjs +18 -0
- package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +145 -0
- package/esm2022/lib/search/components/search-slider/index.mjs +18 -0
- package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +119 -0
- package/esm2022/lib/search/components/search-sorting-picker/index.mjs +18 -0
- package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +77 -0
- package/esm2022/lib/search/components/search-text/index.mjs +18 -0
- package/esm2022/lib/search/components/search-text/search-text.component.mjs +134 -0
- package/esm2022/lib/search/components/search-widget-container/index.mjs +18 -0
- package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +113 -0
- package/esm2022/lib/search/components/search.component.mjs +152 -0
- package/esm2022/lib/search/forms/index.mjs +19 -0
- package/esm2022/lib/search/forms/live-error-state-matcher.mjs +23 -0
- package/esm2022/lib/search/forms/search-term-validator.mjs +26 -0
- package/esm2022/lib/search/index.mjs +18 -0
- package/esm2022/lib/search/mocks/index.mjs +18 -0
- package/esm2022/lib/search/mocks/search.service.mock.mjs +56 -0
- package/esm2022/lib/search/models/autocomplete-option.interface.mjs +22 -0
- package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +18 -0
- package/esm2022/lib/search/models/facet-field.interface.mjs +29 -0
- package/esm2022/lib/search/models/facet-query.interface.mjs +18 -0
- package/esm2022/lib/search/models/facet-widget.interface.mjs +18 -0
- package/esm2022/lib/search/models/filter-query.interface.mjs +18 -0
- package/esm2022/lib/search/models/filter-search.interface.mjs +18 -0
- package/esm2022/lib/search/models/index.mjs +34 -0
- package/esm2022/lib/search/models/response-facet-query-list.model.mjs +31 -0
- package/esm2022/lib/search/models/search-category.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-configuration.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-filter-list.model.mjs +148 -0
- package/esm2022/lib/search/models/search-form.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-range.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-widget-settings.interface.mjs +18 -0
- package/esm2022/lib/search/models/search-widget.interface.mjs +18 -0
- package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +18 -0
- package/esm2022/lib/search/public-api.mjs +24 -0
- package/esm2022/lib/search/search-configuration.token.mjs +19 -0
- package/esm2022/lib/search/search.module.mjs +192 -0
- package/esm2022/lib/search/services/base-query-builder.service.mjs +509 -0
- package/esm2022/lib/search/services/index.mjs +24 -0
- package/esm2022/lib/search/services/search-configuration.service.mjs +50 -0
- package/esm2022/lib/search/services/search-facet-filters.service.mjs +374 -0
- package/esm2022/lib/search/services/search-filter.service.mjs +56 -0
- package/esm2022/lib/search/services/search-header-query-builder.service.mjs +136 -0
- package/esm2022/lib/search/services/search-query-builder.service.mjs +48 -0
- package/esm2022/lib/search/services/search.service.mjs +89 -0
- package/esm2022/lib/search-ai/index.mjs +18 -0
- package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +18 -0
- package/esm2022/lib/search-ai/public-api.mjs +19 -0
- package/esm2022/lib/search-ai/services/search-ai.service.mjs +103 -0
- package/esm2022/lib/security/index.mjs +18 -0
- package/esm2022/lib/security/public-api.mjs +18 -0
- package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +18 -0
- package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +18 -0
- package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +274 -0
- package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +43 -0
- package/esm2022/lib/services/alfresco-api.interface.mjs +18 -0
- package/esm2022/lib/services/alfresco-api.service.mjs +120 -0
- package/esm2022/lib/services/index.mjs +18 -0
- package/esm2022/lib/services/public-api.mjs +18 -0
- package/esm2022/lib/tag/index.mjs +18 -0
- package/esm2022/lib/tag/public-api.mjs +24 -0
- package/esm2022/lib/tag/services/tag.service.mjs +171 -0
- package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +114 -0
- package/esm2022/lib/tag/tag-list/tag-list.component.mjs +98 -0
- package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +80 -0
- package/esm2022/lib/tag/tag.module.mjs +37 -0
- package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +27 -0
- package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +370 -0
- package/esm2022/lib/testing/content.testing.module.mjs +56 -0
- package/esm2022/lib/tree/components/tree.component.mjs +312 -0
- package/esm2022/lib/tree/index.mjs +18 -0
- package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +18 -0
- package/esm2022/lib/tree/models/tree-node.interface.mjs +22 -0
- package/esm2022/lib/tree/models/tree-response.interface.mjs +18 -0
- package/esm2022/lib/tree/public-api.mjs +23 -0
- package/esm2022/lib/tree/services/tree.service.mjs +134 -0
- package/esm2022/lib/tree/tree.module.mjs +33 -0
- package/esm2022/lib/tree-view/components/tree-view.component.mjs +75 -0
- package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +99 -0
- package/esm2022/lib/tree-view/index.mjs +18 -0
- package/esm2022/lib/tree-view/models/tree-view.model.mjs +28 -0
- package/esm2022/lib/tree-view/public-api.mjs +22 -0
- package/esm2022/lib/tree-view/services/tree-view.service.mjs +38 -0
- package/esm2022/lib/tree-view/tree-view.module.mjs +33 -0
- package/esm2022/lib/upload/components/base-upload/upload-base.mjs +176 -0
- package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +190 -0
- package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +92 -0
- package/esm2022/lib/upload/components/file-uploading-list.component.mjs +124 -0
- package/esm2022/lib/upload/components/upload-button.component.mjs +133 -0
- package/esm2022/lib/upload/components/upload-drag-area.component.mjs +112 -0
- package/esm2022/lib/upload/components/upload-files.event.mjs +41 -0
- package/esm2022/lib/upload/components/upload-version-button.component.mjs +54 -0
- package/esm2022/lib/upload/directives/file-draggable.directive.mjs +154 -0
- package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +75 -0
- package/esm2022/lib/upload/index.mjs +18 -0
- package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +39 -0
- package/esm2022/lib/upload/public-api.mjs +29 -0
- package/esm2022/lib/upload/upload.module.mjs +72 -0
- package/esm2022/lib/version-compatibility/index.mjs +18 -0
- package/esm2022/lib/version-compatibility/public-api.mjs +20 -0
- package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +26 -0
- package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +53 -0
- package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +33 -0
- package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +76 -0
- package/esm2022/lib/version-manager/content-version.service.mjs +53 -0
- package/esm2022/lib/version-manager/index.mjs +18 -0
- package/esm2022/lib/version-manager/public-api.mjs +23 -0
- package/esm2022/lib/version-manager/version-comparison.component.mjs +42 -0
- package/esm2022/lib/version-manager/version-list.component.mjs +215 -0
- package/esm2022/lib/version-manager/version-manager.component.mjs +145 -0
- package/esm2022/lib/version-manager/version-manager.module.mjs +48 -0
- package/esm2022/lib/version-manager/version-upload.component.mjs +154 -0
- package/esm2022/lib/viewer/alfresco-viewer.module.mjs +33 -0
- package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +408 -0
- package/esm2022/lib/viewer/index.mjs +18 -0
- package/esm2022/lib/viewer/public-api.mjs +19 -0
- package/esm2022/public-api.mjs +56 -0
- package/fesm2022/adf-content-services.mjs +790 -831
- package/fesm2022/adf-content-services.mjs.map +1 -1
- package/lib/aspect-list/aspect-list.component.d.ts +0 -4
- package/lib/aspect-list/public-api.d.ts +0 -1
- package/lib/aspect-list/services/aspect-list.service.d.ts +4 -6
- package/lib/category/categories-management/categories-management.component.d.ts +0 -4
- package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
- package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
- package/package.json +5 -3
- package/lib/aspect-list/interfaces/custom-aspect-paging.interface.d.ts +0 -21
|
@@ -0,0 +1,617 @@
|
|
|
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 { Component, DestroyRef, EventEmitter, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
18
|
+
import { CustomEmptyContentTemplateDirective, DataColumnComponent, DataColumnListComponent, HighlightDirective, InfinitePaginationComponent, ShowHeaderMode, ToolbarComponent, ToolbarTitleComponent, UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core';
|
|
19
|
+
import { NodesApiService, SitesService, UploadService } from '../../common';
|
|
20
|
+
import { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';
|
|
21
|
+
import { Pagination, SiteEntry, SitePaging } from '@alfresco/js-api';
|
|
22
|
+
import { DocumentListComponent } from '../../document-list/components/document-list.component';
|
|
23
|
+
import { CustomResourcesService } from '../../document-list/services/custom-resources.service';
|
|
24
|
+
import { debounceTime } from 'rxjs/operators';
|
|
25
|
+
import { ContentNodeSelectorPanelService } from './content-node-selector-panel.service';
|
|
26
|
+
import { CommonModule } from '@angular/common';
|
|
27
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
28
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
29
|
+
import { MatInputModule } from '@angular/material/input';
|
|
30
|
+
import { AutoFocusDirective } from '../../directives/auto-focus.directive';
|
|
31
|
+
import { NodeCounterDirective } from '../../directives/node-counter.directive';
|
|
32
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
33
|
+
import { DropdownSitesComponent } from '../site-dropdown/sites-dropdown.component';
|
|
34
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
35
|
+
import { NameLocationCellComponent } from '../name-location-cell/name-location-cell.component';
|
|
36
|
+
import { DropdownBreadcrumbComponent } from '../../breadcrumb/dropdown-breadcrumb.component';
|
|
37
|
+
import { SearchQueryBuilderService } from '../../search/services/search-query-builder.service';
|
|
38
|
+
import { SearchPanelComponent } from '../../search/components/search-panel/search-panel.component';
|
|
39
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
40
|
+
import * as i0 from "@angular/core";
|
|
41
|
+
import * as i1 from "../../document-list/services/custom-resources.service";
|
|
42
|
+
import * as i2 from "../../search/services/search-query-builder.service";
|
|
43
|
+
import * as i3 from "@alfresco/adf-core";
|
|
44
|
+
import * as i4 from "../../common";
|
|
45
|
+
import * as i5 from "./content-node-selector-panel.service";
|
|
46
|
+
import * as i6 from "@angular/common";
|
|
47
|
+
import * as i7 from "@angular/material/form-field";
|
|
48
|
+
import * as i8 from "@angular/material/input";
|
|
49
|
+
import * as i9 from "@angular/forms";
|
|
50
|
+
import * as i10 from "@angular/material/icon";
|
|
51
|
+
import * as i11 from "@angular/material/button";
|
|
52
|
+
export const defaultValidation = () => true;
|
|
53
|
+
export class ContentNodeSelectorPanelComponent {
|
|
54
|
+
/**
|
|
55
|
+
* Custom row filter function. See the
|
|
56
|
+
* [Row Filter Model](row-filter.model.md) page
|
|
57
|
+
* for more information.
|
|
58
|
+
*/
|
|
59
|
+
set rowFilter(rowFilter) {
|
|
60
|
+
this.createRowFilter(rowFilter);
|
|
61
|
+
}
|
|
62
|
+
get rowFilter() {
|
|
63
|
+
return this._rowFilter;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Custom list of site content componentIds.
|
|
67
|
+
* Used to filter out the corresponding items from the displayed nodes
|
|
68
|
+
*/
|
|
69
|
+
set excludeSiteContent(excludeSiteContent) {
|
|
70
|
+
this._excludeSiteContent = excludeSiteContent;
|
|
71
|
+
this.createRowFilter(this._rowFilter);
|
|
72
|
+
}
|
|
73
|
+
get excludeSiteContent() {
|
|
74
|
+
return this._excludeSiteContent;
|
|
75
|
+
}
|
|
76
|
+
/** Toggle search input rendering */
|
|
77
|
+
set showSearch(value) {
|
|
78
|
+
if (value !== undefined && value !== null) {
|
|
79
|
+
this.showSearchField = value;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
get showSearch() {
|
|
83
|
+
return this.showSearchField;
|
|
84
|
+
}
|
|
85
|
+
/** Toggle sites list dropdown rendering */
|
|
86
|
+
set showDropdownSiteList(value) {
|
|
87
|
+
if (value !== undefined && value !== null) {
|
|
88
|
+
this.showSiteList = value;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
get showDropdownSiteList() {
|
|
92
|
+
return this.showSiteList;
|
|
93
|
+
}
|
|
94
|
+
/** Shows the files and folders in the search result */
|
|
95
|
+
set showFilesInResult(value) {
|
|
96
|
+
if (value !== undefined && value !== null) {
|
|
97
|
+
const showFilesQuery = `TYPE:'cm:folder'${value ? ` OR TYPE:'cm:content'` : ''}`;
|
|
98
|
+
this.queryBuilderService.addFilterQuery(showFilesQuery);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/** Shows the node counter in the breadcrumb */
|
|
102
|
+
set showNodeCounter(value) {
|
|
103
|
+
this.showCounter = value ?? false;
|
|
104
|
+
}
|
|
105
|
+
get showNodeCounter() {
|
|
106
|
+
return this.showCounter;
|
|
107
|
+
}
|
|
108
|
+
constructor(customResourcesService, queryBuilderService, userPreferencesService, nodesApiService, uploadService, sitesService, contentNodeSelectorPanelService) {
|
|
109
|
+
this.customResourcesService = customResourcesService;
|
|
110
|
+
this.queryBuilderService = queryBuilderService;
|
|
111
|
+
this.userPreferencesService = userPreferencesService;
|
|
112
|
+
this.nodesApiService = nodesApiService;
|
|
113
|
+
this.uploadService = uploadService;
|
|
114
|
+
this.sitesService = sitesService;
|
|
115
|
+
this.contentNodeSelectorPanelService = contentNodeSelectorPanelService;
|
|
116
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
117
|
+
this.DEFAULT_PAGINATION = new Pagination({
|
|
118
|
+
maxItems: 25,
|
|
119
|
+
skipCount: 0
|
|
120
|
+
});
|
|
121
|
+
this.disableActionFolderList = ['-mysites-'];
|
|
122
|
+
this.showSiteList = true;
|
|
123
|
+
this.showSearchField = true;
|
|
124
|
+
this.showCounter = false;
|
|
125
|
+
this._emptyList = true;
|
|
126
|
+
/** If true will restrict the search and breadcrumbs to the currentFolderId */
|
|
127
|
+
this.restrictRootToCurrentFolderId = false;
|
|
128
|
+
/** Node ID of the folder currently listed. */
|
|
129
|
+
this.currentFolderId = null;
|
|
130
|
+
/**
|
|
131
|
+
* Hide the "My Files" option added to the site list by default.
|
|
132
|
+
* See the [Sites Dropdown component](sites-dropdown.component.md)
|
|
133
|
+
* for more information.
|
|
134
|
+
*/
|
|
135
|
+
this.dropdownHideMyFiles = false;
|
|
136
|
+
/**
|
|
137
|
+
* Custom site for site dropdown. This is the same as the `siteList`.
|
|
138
|
+
* property of the Sites Dropdown component (see its doc page
|
|
139
|
+
* for more information).
|
|
140
|
+
*/
|
|
141
|
+
this.dropdownSiteList = null;
|
|
142
|
+
this._rowFilter = defaultValidation;
|
|
143
|
+
this._excludeSiteContent = [];
|
|
144
|
+
/**
|
|
145
|
+
* Custom image resolver function. See the
|
|
146
|
+
* [Image Resolver Model](image-resolver.model.md) page
|
|
147
|
+
* for more information.
|
|
148
|
+
*/
|
|
149
|
+
this.imageResolver = null;
|
|
150
|
+
/** Number of items shown per page in the list. */
|
|
151
|
+
this.pageSize = this.DEFAULT_PAGINATION.maxItems;
|
|
152
|
+
/** Define the selection mode for document list. The allowed values are single or multiple */
|
|
153
|
+
this.selectionMode = 'single';
|
|
154
|
+
/**
|
|
155
|
+
* Function used to decide if the selected node has permission to be selected.
|
|
156
|
+
* Default value is a function that always returns true.
|
|
157
|
+
*/
|
|
158
|
+
this.isSelectionValid = defaultValidation;
|
|
159
|
+
/** Emitted when the user has chosen an item. */
|
|
160
|
+
this.select = new EventEmitter();
|
|
161
|
+
/** Emitted when the navigation changes. */
|
|
162
|
+
this.navigationChange = new EventEmitter();
|
|
163
|
+
/** Emitted when the select site changes. */
|
|
164
|
+
this.siteChange = new EventEmitter();
|
|
165
|
+
/** Emitted when search is running. */
|
|
166
|
+
this.showingSearch = new EventEmitter();
|
|
167
|
+
/** Emitted when current folder loaded. */
|
|
168
|
+
this.currentFolder = new EventEmitter();
|
|
169
|
+
/** Emitted when folder loaded. */
|
|
170
|
+
this.folderLoaded = new EventEmitter();
|
|
171
|
+
this.nodePaging = null;
|
|
172
|
+
this.searchTerm = '';
|
|
173
|
+
this.showingSearchResults = false;
|
|
174
|
+
this.loadingSearchResults = false;
|
|
175
|
+
this.inDialog = false;
|
|
176
|
+
this._chosenNode = null;
|
|
177
|
+
this.selectionWithoutValidation = null;
|
|
178
|
+
this.folderIdToShow = null;
|
|
179
|
+
this.breadcrumbFolderTitle = null;
|
|
180
|
+
this.startSiteGuid = null;
|
|
181
|
+
this.hasValidQuery = false;
|
|
182
|
+
this.showHeader = ShowHeaderMode.Never;
|
|
183
|
+
this.infiniteScroll = false;
|
|
184
|
+
this.debounceSearch = 200;
|
|
185
|
+
this.searchInput = new UntypedFormControl();
|
|
186
|
+
this.preselectedNodes = [];
|
|
187
|
+
this.currentUploadBatch = [];
|
|
188
|
+
this.sorting = ['createdAt', 'desc'];
|
|
189
|
+
this.searchPanelExpanded = false;
|
|
190
|
+
this.destroyRef = inject(DestroyRef);
|
|
191
|
+
}
|
|
192
|
+
set chosenNode(value) {
|
|
193
|
+
this._chosenNode = value;
|
|
194
|
+
this.select.next(value);
|
|
195
|
+
}
|
|
196
|
+
get chosenNode() {
|
|
197
|
+
return this._chosenNode;
|
|
198
|
+
}
|
|
199
|
+
get emptyList() {
|
|
200
|
+
return this._emptyList;
|
|
201
|
+
}
|
|
202
|
+
getSelectedCount() {
|
|
203
|
+
return this.chosenNode?.length || 0;
|
|
204
|
+
}
|
|
205
|
+
ngOnInit() {
|
|
206
|
+
this.searchInput.valueChanges
|
|
207
|
+
.pipe(debounceTime(this.debounceSearch), takeUntilDestroyed(this.destroyRef))
|
|
208
|
+
.subscribe((searchValue) => {
|
|
209
|
+
this.searchTerm = searchValue;
|
|
210
|
+
this.queryBuilderService.userQuery = searchValue.length > 0 ? `${searchValue}*` : searchValue;
|
|
211
|
+
this.queryBuilderService.update();
|
|
212
|
+
});
|
|
213
|
+
this.queryBuilderService.updated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((searchRequest) => {
|
|
214
|
+
if (searchRequest) {
|
|
215
|
+
this.hasValidQuery = true;
|
|
216
|
+
this.prepareDialogForNewSearch(searchRequest);
|
|
217
|
+
this.queryBuilderService.execute(false, searchRequest);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
this.hasValidQuery = false;
|
|
221
|
+
this.resetFolderToShow();
|
|
222
|
+
this.clearSearch();
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
this.queryBuilderService.executed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((results) => {
|
|
226
|
+
if (this.hasValidQuery) {
|
|
227
|
+
this.showSearchResults(results);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
this.userPreferencesService
|
|
231
|
+
.select(UserPreferenceValues.PaginationSize)
|
|
232
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
233
|
+
.subscribe((pagSize) => (this.pageSize = pagSize));
|
|
234
|
+
this.target = this.documentList;
|
|
235
|
+
this.folderIdToShow = this.currentFolderId;
|
|
236
|
+
if (this.currentFolderId) {
|
|
237
|
+
if (this.restrictRootToCurrentFolderId) {
|
|
238
|
+
this.breadcrumbRootId = this.currentFolderId;
|
|
239
|
+
this.siteId = this.currentFolderId;
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
this.getStartSite();
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
this.breadcrumbTransform = this.breadcrumbTransform ? this.breadcrumbTransform : null;
|
|
246
|
+
this.isSelectionValid = this.isSelectionValid ? this.isSelectionValid : defaultValidation;
|
|
247
|
+
this.onFileUploadEvent();
|
|
248
|
+
this.onFileUploadDeletedEvent();
|
|
249
|
+
this.resetPagination();
|
|
250
|
+
this.setSearchScopeToNodes();
|
|
251
|
+
this.documentList.$folderNode.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((currentNode) => {
|
|
252
|
+
this.currentFolder.emit(currentNode);
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
toggleSearchPanel() {
|
|
256
|
+
this.searchPanelExpanded = !this.searchPanelExpanded;
|
|
257
|
+
}
|
|
258
|
+
hasCustomModels() {
|
|
259
|
+
return this.contentNodeSelectorPanelService?.customModels?.length > 0;
|
|
260
|
+
}
|
|
261
|
+
onFileUploadEvent() {
|
|
262
|
+
this.uploadService.fileUploadComplete
|
|
263
|
+
.pipe(debounceTime(500), takeUntilDestroyed(this.destroyRef))
|
|
264
|
+
.subscribe((fileUploadEvent) => {
|
|
265
|
+
this.currentUploadBatch.push(fileUploadEvent.data);
|
|
266
|
+
if (!this.uploadService.isUploading()) {
|
|
267
|
+
this.preselectedNodes = this.getPreselectNodesBasedOnSelectionMode();
|
|
268
|
+
this.currentUploadBatch = [];
|
|
269
|
+
this.documentList.reloadWithoutResettingSelection();
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
onFileUploadDeletedEvent() {
|
|
274
|
+
this.uploadService.fileUploadDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((deletedFileEvent) => {
|
|
275
|
+
this.documentList.unselectRowFromNodeId(deletedFileEvent.file.data.entry.id);
|
|
276
|
+
this.documentList.reloadWithoutResettingSelection();
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
getStartSite() {
|
|
280
|
+
this.nodesApiService.getNode(this.currentFolderId).subscribe((startNodeEntry) => {
|
|
281
|
+
this.startSiteGuid = this.sitesService.getSiteNameFromNodePath(startNodeEntry);
|
|
282
|
+
if (this.startSiteGuid) {
|
|
283
|
+
this.sitesService.getSite(this.startSiteGuid).subscribe((startSiteEntry) => {
|
|
284
|
+
if (startSiteEntry instanceof SiteEntry) {
|
|
285
|
+
this.siteChange.emit(startSiteEntry.entry.title);
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
createRowFilter(filter) {
|
|
292
|
+
if (!filter) {
|
|
293
|
+
filter = () => true;
|
|
294
|
+
}
|
|
295
|
+
this._rowFilter = (value, index, array) => filter(value, index, array) && !this.isExcludedSiteContent(value);
|
|
296
|
+
}
|
|
297
|
+
isExcludedSiteContent(row) {
|
|
298
|
+
const entry = row.node.entry;
|
|
299
|
+
if (this._excludeSiteContent?.length && entry?.properties?.['st:componentId']) {
|
|
300
|
+
const excludedItem = this._excludeSiteContent.find((id) => entry.properties['st:componentId'] === id);
|
|
301
|
+
return !!excludedItem;
|
|
302
|
+
}
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Updates the site attribute and starts a new search
|
|
307
|
+
*
|
|
308
|
+
* @param chosenSite SiteEntry to search within
|
|
309
|
+
*/
|
|
310
|
+
siteChanged(chosenSite) {
|
|
311
|
+
this.siteId = chosenSite.entry.guid;
|
|
312
|
+
this.setTitleIfCustomSite(chosenSite);
|
|
313
|
+
this.siteChange.emit(chosenSite.entry.title);
|
|
314
|
+
this.queryBuilderService.update();
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Get current breadcrumb folder node
|
|
318
|
+
*
|
|
319
|
+
* @returns the actually selected|entered folder node or null in case of searching for the breadcrumb
|
|
320
|
+
*/
|
|
321
|
+
get breadcrumbFolderNode() {
|
|
322
|
+
let folderNode;
|
|
323
|
+
if (this.showingSearchResults && this.selectionWithoutValidation?.length) {
|
|
324
|
+
folderNode = this.selectionWithoutValidation[0];
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
folderNode = this.documentList.folderNode;
|
|
328
|
+
}
|
|
329
|
+
return folderNode;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Prepares the dialog for a new search
|
|
333
|
+
*
|
|
334
|
+
* @param searchRequest request options
|
|
335
|
+
*/
|
|
336
|
+
prepareDialogForNewSearch(searchRequest) {
|
|
337
|
+
this.target = searchRequest ? null : this.documentList;
|
|
338
|
+
if (this.target) {
|
|
339
|
+
this.infinitePaginationComponent.reset();
|
|
340
|
+
}
|
|
341
|
+
this.folderIdToShow = null;
|
|
342
|
+
this.preselectedNodes = [];
|
|
343
|
+
this.loadingSearchResults = true;
|
|
344
|
+
this.addCorrespondingNodeIdsQuery();
|
|
345
|
+
this.resetChosenNode();
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Clear the search input and reset to last folder node in which search was performed
|
|
349
|
+
*/
|
|
350
|
+
clear() {
|
|
351
|
+
this.searchTerm = '';
|
|
352
|
+
this.queryBuilderService.userQuery = '';
|
|
353
|
+
this.queryBuilderService.update();
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Resets the folder to be shown with the site selection or the initial landing folder
|
|
357
|
+
*/
|
|
358
|
+
resetFolderToShow() {
|
|
359
|
+
this.folderIdToShow = this.siteId || this.currentFolderId;
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Clear the search input and search related data
|
|
363
|
+
*/
|
|
364
|
+
clearSearch() {
|
|
365
|
+
this.searchTerm = '';
|
|
366
|
+
this.nodePaging = null;
|
|
367
|
+
this.resetPagination();
|
|
368
|
+
this.resetChosenNode();
|
|
369
|
+
this.showingSearchResults = false;
|
|
370
|
+
this.showingSearch.emit(this.showingSearchResults);
|
|
371
|
+
}
|
|
372
|
+
addCorrespondingNodeIdsQuery() {
|
|
373
|
+
let extraParentFiltering = '';
|
|
374
|
+
if (this.customResourcesService.hasCorrespondingNodeIds(this.siteId)) {
|
|
375
|
+
this.customResourcesService.getCorrespondingNodeIds(this.siteId).subscribe((nodeIds) => {
|
|
376
|
+
if (nodeIds?.length) {
|
|
377
|
+
nodeIds
|
|
378
|
+
.filter((id) => id !== this.siteId)
|
|
379
|
+
.forEach((extraId) => {
|
|
380
|
+
extraParentFiltering += ` OR ANCESTOR:'workspace://SpacesStore/${extraId}'`;
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
const parentFiltering = this.siteId ? `ANCESTOR:'workspace://SpacesStore/${this.siteId}'${extraParentFiltering}` : '';
|
|
384
|
+
this.queryBuilderService.addFilterQuery(parentFiltering);
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
const parentFiltering = this.siteId ? `ANCESTOR:'workspace://SpacesStore/${this.siteId}'` : '';
|
|
389
|
+
this.queryBuilderService.addFilterQuery(parentFiltering);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
setSearchScopeToNodes() {
|
|
393
|
+
const scope = {
|
|
394
|
+
locations: 'nodes'
|
|
395
|
+
};
|
|
396
|
+
this.queryBuilderService.setScope(scope);
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Show the results of the search
|
|
400
|
+
*
|
|
401
|
+
* @param results Search results
|
|
402
|
+
*/
|
|
403
|
+
showSearchResults(results) {
|
|
404
|
+
this.showingSearchResults = true;
|
|
405
|
+
this.loadingSearchResults = false;
|
|
406
|
+
this.showingSearch.emit(this.showingSearchResults);
|
|
407
|
+
this.nodePaging = results;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Sets showingSearchResults state to be able to differentiate between search results or folder results
|
|
411
|
+
*
|
|
412
|
+
* @param $event node event
|
|
413
|
+
*/
|
|
414
|
+
onFolderChange($event) {
|
|
415
|
+
this.folderIdToShow = $event.value.id;
|
|
416
|
+
this.showingSearchResults = false;
|
|
417
|
+
this.infiniteScroll = false;
|
|
418
|
+
this.breadcrumbFolderTitle = null;
|
|
419
|
+
this.preselectedNodes = [];
|
|
420
|
+
this.clearSearch();
|
|
421
|
+
this.navigationChange.emit($event);
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Attempts to set the currently loaded node
|
|
425
|
+
*
|
|
426
|
+
* @param nodePaging pagination model
|
|
427
|
+
*/
|
|
428
|
+
onFolderLoaded(nodePaging) {
|
|
429
|
+
setTimeout(() => {
|
|
430
|
+
this._emptyList = !this.documentList.data.getRows().length;
|
|
431
|
+
});
|
|
432
|
+
this.updatePaginationAfterRowFilter(nodePaging);
|
|
433
|
+
if (!this.showingSearchResults) {
|
|
434
|
+
this.attemptNodeSelection(this.documentList.folderNode);
|
|
435
|
+
}
|
|
436
|
+
this.folderLoaded.emit();
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Updates pagination.hasMoreItems to false after filtering only folders during 'COPY' and 'MOVE' action
|
|
440
|
+
*
|
|
441
|
+
* @param nodePaging pagination model
|
|
442
|
+
*/
|
|
443
|
+
updatePaginationAfterRowFilter(nodePaging) {
|
|
444
|
+
if (this.documentList.data.getRows().length < nodePaging.list.pagination.maxItems) {
|
|
445
|
+
nodePaging.list.pagination.hasMoreItems = false;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Returns whether breadcrumb has to be shown or not
|
|
450
|
+
*
|
|
451
|
+
* @returns `true` if needs to show the breadcrumb, otherwise `false`
|
|
452
|
+
*/
|
|
453
|
+
showBreadcrumbs() {
|
|
454
|
+
return !this.showingSearchResults || this.chosenNode;
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Loads the next batch of search results
|
|
458
|
+
*
|
|
459
|
+
* @param pagination Pagination object
|
|
460
|
+
*/
|
|
461
|
+
getNextPageOfSearch(pagination) {
|
|
462
|
+
this.infiniteScroll = true;
|
|
463
|
+
this.queryBuilderService.paging.maxItems = pagination.maxItems;
|
|
464
|
+
this.queryBuilderService.paging.skipCount = pagination.skipCount;
|
|
465
|
+
if (this.searchTerm.length > 0) {
|
|
466
|
+
this.queryBuilderService.update();
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Selects node as chosen if it has the right permission, clears the selection otherwise
|
|
471
|
+
*
|
|
472
|
+
* @param entry node entry
|
|
473
|
+
*/
|
|
474
|
+
attemptNodeSelection(entry) {
|
|
475
|
+
if (entry && this.isSelectionValid(entry) && !this.isActionDisabledForFolder(this.documentList.currentFolderId)) {
|
|
476
|
+
this.chosenNode = [entry];
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
isActionDisabledForFolder(folderId) {
|
|
480
|
+
return this.disableActionFolderList.includes(folderId);
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Clears the chosen node
|
|
484
|
+
*/
|
|
485
|
+
resetChosenNode() {
|
|
486
|
+
this.chosenNode = null;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* It filters and emit the selection coming from the document list
|
|
490
|
+
*
|
|
491
|
+
* @param nodesEntries selected nodes
|
|
492
|
+
*/
|
|
493
|
+
onCurrentSelection(nodesEntries) {
|
|
494
|
+
const validNodesEntity = nodesEntries.filter((node) => this.isSelectionValid(node.entry));
|
|
495
|
+
this.chosenNode = validNodesEntity.map((node) => node.entry);
|
|
496
|
+
this.selectionWithoutValidation = nodesEntries.map((node) => node.entry);
|
|
497
|
+
}
|
|
498
|
+
setTitleIfCustomSite(site) {
|
|
499
|
+
if (this.customResourcesService.isCustomSource(site.entry.guid)) {
|
|
500
|
+
this.breadcrumbFolderTitle = site.entry.title;
|
|
501
|
+
if (this.documentList.folderNode.path.elements) {
|
|
502
|
+
this.breadcrumbFolderNode.name = site.entry.title;
|
|
503
|
+
this.documentList.folderNode.path.elements = null;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
else {
|
|
507
|
+
this.breadcrumbFolderTitle = null;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
hasPreselectNodes() {
|
|
511
|
+
return this.preselectedNodes?.length > 0;
|
|
512
|
+
}
|
|
513
|
+
isSingleSelectionMode() {
|
|
514
|
+
return this.selectionMode === 'single';
|
|
515
|
+
}
|
|
516
|
+
getPreselectNodesBasedOnSelectionMode() {
|
|
517
|
+
let selectedNodes = [];
|
|
518
|
+
if (this.currentUploadBatch?.length) {
|
|
519
|
+
if (this.isSingleSelectionMode()) {
|
|
520
|
+
selectedNodes = [this.currentUploadBatch[this.currentUploadBatch.length - 1]];
|
|
521
|
+
}
|
|
522
|
+
else {
|
|
523
|
+
selectedNodes = this.currentUploadBatch;
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
return selectedNodes;
|
|
527
|
+
}
|
|
528
|
+
resetPagination() {
|
|
529
|
+
this.queryBuilderService.paging = {
|
|
530
|
+
maxItems: this.pageSize,
|
|
531
|
+
skipCount: this.DEFAULT_PAGINATION.skipCount
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentNodeSelectorPanelComponent, deps: [{ token: i1.CustomResourcesService }, { token: i2.SearchQueryBuilderService }, { token: i3.UserPreferencesService }, { token: i4.NodesApiService }, { token: i4.UploadService }, { token: i4.SitesService }, { token: i5.ContentNodeSelectorPanelService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
535
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ContentNodeSelectorPanelComponent, isStandalone: true, selector: "adf-content-node-selector-panel", inputs: { restrictRootToCurrentFolderId: "restrictRootToCurrentFolderId", currentFolderId: "currentFolderId", dropdownHideMyFiles: "dropdownHideMyFiles", dropdownSiteList: "dropdownSiteList", where: "where", rowFilter: "rowFilter", excludeSiteContent: "excludeSiteContent", imageResolver: "imageResolver", pageSize: "pageSize", selectionMode: "selectionMode", isSelectionValid: "isSelectionValid", breadcrumbTransform: "breadcrumbTransform", showSearch: "showSearch", showDropdownSiteList: "showDropdownSiteList", showFilesInResult: "showFilesInResult", showNodeCounter: "showNodeCounter" }, outputs: { select: "select", navigationChange: "navigationChange", siteChange: "siteChange", showingSearch: "showingSearch", currentFolder: "currentFolder", folderLoaded: "folderLoaded" }, host: { classAttribute: "adf-content-node-selector-panel" }, providers: [SearchQueryBuilderService], viewQueries: [{ propertyName: "documentList", first: true, predicate: ["documentList"], descendants: true, static: true }, { propertyName: "highlighter", first: true, predicate: HighlightDirective, descendants: true, static: true }, { propertyName: "infinitePaginationComponent", first: true, predicate: InfinitePaginationComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"adf-content-node-selector-content\">\n <mat-form-field floatPlaceholder=\"never\"\n appearance=\"fill\"\n class=\"adf-content-node-selector-content-input\"\n subscriptSizing=\"dynamic\"\n *ngIf=\"showSearch\">\n <mat-label>{{ 'NODE_SELECTOR.SEARCH' | translate }}</mat-label>\n <input matInput\n id=\"searchInput\"\n [formControl]=\"searchInput\"\n type=\"text\"\n [value]=\"searchTerm\"\n adf-auto-focus\n data-automation-id=\"content-node-selector-search-input\">\n\n <mat-icon *ngIf=\"searchTerm.length > 0\"\n matSuffix (click)=\"clear()\"\n class=\"adf-content-node-selector-content-input-icon\"\n data-automation-id=\"content-node-selector-search-clear\">clear\n </mat-icon>\n\n <mat-icon *ngIf=\"searchTerm.length === 0\"\n matSuffix\n class=\"adf-content-node-selector-content-input-icon\"\n data-automation-id=\"content-node-selector-search-icon\">search\n </mat-icon>\n\n </mat-form-field>\n <adf-sites-dropdown\n *ngIf=\"showDropdownSiteList\"\n class=\"full-width\"\n (change)=\"siteChanged($event)\"\n [placeholder]=\"'NODE_SELECTOR.SELECT_LIBRARY'\"\n [hideMyFiles]=\"dropdownHideMyFiles\"\n [siteList]=\"dropdownSiteList\"\n [value]=\"startSiteGuid\"\n data-automation-id=\"content-node-selector-sites-combo\" />\n <button *ngIf=\"hasCustomModels()\"\n data-automation-id=\"adf-toggle-search-panel-button\"\n mat-icon-button\n (click)=\"toggleSearchPanel()\">\n <mat-icon>filter_list</mat-icon>\n {{ 'SEARCH.SEARCH_HEADER.TITLE' | translate }}\n </button>\n <div class=\"adf-content-node-selector-search-panel-container\">\n <adf-search-panel *ngIf=\"searchPanelExpanded\" />\n <div class=\"adf-content-node-selector-document-list-container\">\n <adf-toolbar>\n <adf-toolbar-title>\n <ng-container *ngIf=\"!showBreadcrumbs()\">\n <h2 class=\"adf-search-results-label\">{{ 'NODE_SELECTOR.SEARCH_RESULTS' | translate }}</h2>\n </ng-container>\n <adf-dropdown-breadcrumb *ngIf=\"showBreadcrumbs()\"\n class=\"adf-content-node-selector-content-breadcrumb\"\n (navigate)=\"clearSearch()\"\n [target]=\"documentList\"\n [rootId]=\"breadcrumbRootId\"\n [transform]=\"breadcrumbTransform\"\n [folderNode]=\"breadcrumbFolderNode\"\n [root]=\"breadcrumbFolderTitle\"\n data-automation-id=\"content-node-selector-content-breadcrumb\" />\n <ng-container *ngIf=\"showNodeCounter\" [adf-node-counter]=\"getSelectedCount()\" />\n </adf-toolbar-title>\n </adf-toolbar>\n\n <div\n class=\"adf-content-node-selector-content-list\"\n [class.adf-content-node-selector-content-list-searchLayout]=\"showingSearchResults\"\n data-automation-id=\"content-node-selector-content-list\">\n <adf-document-list\n #documentList\n [adf-highlight]=\"searchTerm\"\n adf-highlight-selector=\".adf-name-location-cell-name\"\n [showHeader]=\"showHeader\"\n [node]=\"nodePaging\"\n [preselectNodes]=\"preselectedNodes\"\n [maxItems]=\"pageSize\"\n [rowFilter]=\"_rowFilter\"\n [imageResolver]=\"imageResolver\"\n [currentFolderId]=\"folderIdToShow\"\n [selectionMode]=\"selectionMode\"\n [contextMenuActions]=\"false\"\n [contentActions]=\"false\"\n [allowDropFiles]=\"false\"\n [sorting]=\"sorting\"\n sortingMode=\"server\"\n [where]=\"where\"\n (folderChange)=\"onFolderChange($event)\"\n (ready)=\"onFolderLoaded($event)\"\n (nodeSelected)=\"onCurrentSelection($event)\"\n [class.adf-content-node-selector-content-list-empty]=\"emptyList\"\n data-automation-id=\"content-node-selector-document-list\">\n\n <adf-custom-empty-content-template>\n <div aria-live=\"polite\">{{ 'NODE_SELECTOR.NO_RESULTS' | translate }}</div>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <data-column key=\"$thumbnail\" type=\"image\" />\n <data-column key=\"name\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.NAME\" class=\"adf-full-width adf-ellipsis-cell\">\n <ng-template let-context>\n <adf-name-location-cell [row]=\"context.row\" />\n </ng-template>\n </data-column>\n <data-column key=\"modifiedAt\" type=\"date\" title=\"ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_ON\" format=\"timeAgo\" class=\"adf-content-selector-modified-cell\" />\n <data-column key=\"createdByUser.displayName\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.CREATED_BY\" class=\"adf-content-selector-modifier-cell\" />\n <data-column key=\"visibility\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.STATUS\" class=\"adf-content-selector-visibility-cell\" />\n </data-columns>\n\n </adf-document-list>\n\n <adf-infinite-pagination\n [target]=\"target\"\n [loading]=\"loadingSearchResults\"\n (loadMore)=\"getNextPageOfSearch($event)\"\n data-automation-id=\"content-node-selector-search-pagination\">\n {{ 'ADF-DOCUMENT-LIST.LAYOUT.LOAD_MORE' | translate }}\n </adf-infinite-pagination>\n </div>\n </div>\n </div>\n</div>\n", styles: ["h2.adf-search-results-label{flex:1;font-weight:600;font-size:var(--theme-body-1-font-size);font-style:normal;font-stretch:normal;line-height:1.43;letter-spacing:-.2px;color:var(--adf-theme-foreground-text-color-087)}.mdc-dialog .mat-mdc-dialog-surface:is(div){padding-bottom:0}.adf-content-node-selector-panel .adf-toolbar .adf-toolbar-container.adf-toolbar-container-row{max-height:48px;border-bottom-width:0;font-size:var(--theme-body-1-font-size);height:auto}.adf-content-node-selector-search-panel-container{display:flex}.adf-content-node-selector-document-list-container{margin-top:16px;width:100%}.adf-content-node-selector-content{padding-top:0}.adf-content-node-selector-content .mat-mdc-input-element:focus::placeholder{color:var(--theme-primary-color)}.adf-content-node-selector-content .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex{align-items:center}.adf-content-node-selector-content .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding-bottom:0}.adf-content-node-selector-content .adf-sites-dropdown-form-field label.mat-mdc-floating-label{top:32px}.adf-content-node-selector-content .mat-mdc-form-field-subscript-wrapper{height:16px}.adf-content-node-selector-content-input{width:100%;margin-bottom:8px}.adf-content-node-selector-content-input .adf-content-node-selector-content-input-icon{color:var(--adf-theme-foreground-icon-color-054);cursor:pointer;padding:0 0 8px;width:1em;height:1em;font-size:20px}.adf-content-node-selector-content-input .adf-content-node-selector-content-input-icon:hover{color:var(--adf-theme-foreground-base-color)}.adf-content-node-selector-content-input .mat-mdc-form-field-subscript-wrapper{display:none}.adf-content-node-selector-content .adf-site-dropdown-container{display:block}.adf-content-node-selector-content .adf-site-dropdown-container .adf-sites-dropdown-form-field{width:100%}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger{outline:none}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger .adf-dropdown-breadcrumb-icon{color:var(--adf-theme-foreground-base-color-045)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger .adf-dropdown-breadcrumb-icon:hover{color:var(--adf-theme-foreground-base-color-065)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger:focus .adf-dropdown-breadcrumb-icon{color:var(--theme-primary-color)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-item-chevron{color:var(--adf-theme-foreground-base-color-045)}.adf-content-node-selector-content-list,.adf-content-node-selector-list{height:40vh;overflow:auto;border:1px solid var(--adf-theme-foreground-text-color-007);border-top:0;position:relative}.adf-content-node-selector-content-list-empty+adf-infinite-pagination,.adf-content-node-selector-list-empty+adf-infinite-pagination{position:absolute;bottom:0;width:100%}.adf-content-node-selector-content-list .adf-highlight,.adf-content-node-selector-list .adf-highlight{color:var(--theme-primary-color)}.adf-content-node-selector-content-list .adf-datatable-list,.adf-content-node-selector-list .adf-datatable-list{border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-name-location-cell-location,.adf-content-node-selector-list .adf-datatable-list .adf-name-location-cell-location{display:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-selected,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-selected{height:100%;width:100%}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-selected>svg,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-selected>svg{fill:var(--theme-primary-color)}.adf-content-node-selector-content-list .adf-datatable-list .adf-no-content-container.adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-no-content-container.adf-datatable-cell{text-align:center;border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell--image,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell--image{min-width:35px;width:35px;max-width:40px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell:nth-child(2),.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell:nth-child(2){flex:1 0 95px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell .adf-no-content-container.adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell .adf-no-content-container.adf-datatable-cell{text-align:center;border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell{flex:0 1 auto;min-width:1px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell .adf-datatable-cell-value,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell .adf-datatable-cell-value{padding:0}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row{min-height:40px}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row{padding-top:15px}}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:first-child .adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:first-child .adf-datatable-cell{border-top:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:last-child .adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:last-child .adf-datatable-cell{border-bottom:none}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row{min-height:65px}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row{padding-top:15px}}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row .adf-name-location-cell-name,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row .adf-name-location-cell-name{padding:5px 10px 2px}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modified-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modified-cell,.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modifier-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modifier-cell,.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-visibility-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-visibility-cell{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: AutoFocusDirective, selector: "[adf-auto-focus]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: DropdownSitesComponent, selector: "adf-sites-dropdown", inputs: ["hideMyFiles", "siteList", "value", "placeholder", "relations"], outputs: ["change", "error"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "component", type: ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: DropdownBreadcrumbComponent, selector: "adf-dropdown-breadcrumb" }, { kind: "directive", type: NodeCounterDirective, selector: "[adf-node-counter]", inputs: ["adf-node-counter"] }, { kind: "component", type: DocumentListComponent, selector: "adf-document-list", inputs: ["includeFields", "where", "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", "columnsPresetKey", "setColumnsVisibility", "setColumnsWidths", "setColumnsOrder", "maxColumnsVisible", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover", "displayDragAndDropHint"], outputs: ["nodeClick", "nodeDblClick", "folderChange", "preview", "ready", "error", "nodeSelected", "filterSelection", "columnsWidthChanged", "columnsVisibilityChanged", "columnsOrderChanged", "selectedItemsCountChanged"] }, { kind: "directive", type: HighlightDirective, selector: "[adf-highlight]", inputs: ["adf-highlight-selector", "adf-highlight", "adf-highlight-class"] }, { kind: "component", type: DataColumnListComponent, selector: "data-columns" }, { kind: "component", type: DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "resizable", "isHidden", "title", "subtitle", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey", "order", "currencyConfig", "decimalConfig", "dateConfig"] }, { kind: "component", type: NameLocationCellComponent, selector: "adf-name-location-cell", inputs: ["row"] }, { kind: "component", type: InfinitePaginationComponent, selector: "adf-infinite-pagination", inputs: ["target", "pageSize", "loading"], outputs: ["loadMore"] }, { kind: "directive", type: CustomEmptyContentTemplateDirective, selector: "adf-custom-empty-content-template, empty-folder-content" }, { kind: "component", type: SearchPanelComponent, selector: "adf-search-panel" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
536
|
+
}
|
|
537
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentNodeSelectorPanelComponent, decorators: [{
|
|
538
|
+
type: Component,
|
|
539
|
+
args: [{ selector: 'adf-content-node-selector-panel', standalone: true, imports: [
|
|
540
|
+
CommonModule,
|
|
541
|
+
MatFormFieldModule,
|
|
542
|
+
TranslatePipe,
|
|
543
|
+
MatInputModule,
|
|
544
|
+
ReactiveFormsModule,
|
|
545
|
+
AutoFocusDirective,
|
|
546
|
+
MatIconModule,
|
|
547
|
+
DropdownSitesComponent,
|
|
548
|
+
MatButtonModule,
|
|
549
|
+
ToolbarTitleComponent,
|
|
550
|
+
ToolbarComponent,
|
|
551
|
+
DropdownBreadcrumbComponent,
|
|
552
|
+
NodeCounterDirective,
|
|
553
|
+
DocumentListComponent,
|
|
554
|
+
HighlightDirective,
|
|
555
|
+
DataColumnListComponent,
|
|
556
|
+
DataColumnComponent,
|
|
557
|
+
NameLocationCellComponent,
|
|
558
|
+
InfinitePaginationComponent,
|
|
559
|
+
CustomEmptyContentTemplateDirective,
|
|
560
|
+
SearchPanelComponent
|
|
561
|
+
], encapsulation: ViewEncapsulation.None, host: { class: 'adf-content-node-selector-panel' }, providers: [SearchQueryBuilderService], template: "<div class=\"adf-content-node-selector-content\">\n <mat-form-field floatPlaceholder=\"never\"\n appearance=\"fill\"\n class=\"adf-content-node-selector-content-input\"\n subscriptSizing=\"dynamic\"\n *ngIf=\"showSearch\">\n <mat-label>{{ 'NODE_SELECTOR.SEARCH' | translate }}</mat-label>\n <input matInput\n id=\"searchInput\"\n [formControl]=\"searchInput\"\n type=\"text\"\n [value]=\"searchTerm\"\n adf-auto-focus\n data-automation-id=\"content-node-selector-search-input\">\n\n <mat-icon *ngIf=\"searchTerm.length > 0\"\n matSuffix (click)=\"clear()\"\n class=\"adf-content-node-selector-content-input-icon\"\n data-automation-id=\"content-node-selector-search-clear\">clear\n </mat-icon>\n\n <mat-icon *ngIf=\"searchTerm.length === 0\"\n matSuffix\n class=\"adf-content-node-selector-content-input-icon\"\n data-automation-id=\"content-node-selector-search-icon\">search\n </mat-icon>\n\n </mat-form-field>\n <adf-sites-dropdown\n *ngIf=\"showDropdownSiteList\"\n class=\"full-width\"\n (change)=\"siteChanged($event)\"\n [placeholder]=\"'NODE_SELECTOR.SELECT_LIBRARY'\"\n [hideMyFiles]=\"dropdownHideMyFiles\"\n [siteList]=\"dropdownSiteList\"\n [value]=\"startSiteGuid\"\n data-automation-id=\"content-node-selector-sites-combo\" />\n <button *ngIf=\"hasCustomModels()\"\n data-automation-id=\"adf-toggle-search-panel-button\"\n mat-icon-button\n (click)=\"toggleSearchPanel()\">\n <mat-icon>filter_list</mat-icon>\n {{ 'SEARCH.SEARCH_HEADER.TITLE' | translate }}\n </button>\n <div class=\"adf-content-node-selector-search-panel-container\">\n <adf-search-panel *ngIf=\"searchPanelExpanded\" />\n <div class=\"adf-content-node-selector-document-list-container\">\n <adf-toolbar>\n <adf-toolbar-title>\n <ng-container *ngIf=\"!showBreadcrumbs()\">\n <h2 class=\"adf-search-results-label\">{{ 'NODE_SELECTOR.SEARCH_RESULTS' | translate }}</h2>\n </ng-container>\n <adf-dropdown-breadcrumb *ngIf=\"showBreadcrumbs()\"\n class=\"adf-content-node-selector-content-breadcrumb\"\n (navigate)=\"clearSearch()\"\n [target]=\"documentList\"\n [rootId]=\"breadcrumbRootId\"\n [transform]=\"breadcrumbTransform\"\n [folderNode]=\"breadcrumbFolderNode\"\n [root]=\"breadcrumbFolderTitle\"\n data-automation-id=\"content-node-selector-content-breadcrumb\" />\n <ng-container *ngIf=\"showNodeCounter\" [adf-node-counter]=\"getSelectedCount()\" />\n </adf-toolbar-title>\n </adf-toolbar>\n\n <div\n class=\"adf-content-node-selector-content-list\"\n [class.adf-content-node-selector-content-list-searchLayout]=\"showingSearchResults\"\n data-automation-id=\"content-node-selector-content-list\">\n <adf-document-list\n #documentList\n [adf-highlight]=\"searchTerm\"\n adf-highlight-selector=\".adf-name-location-cell-name\"\n [showHeader]=\"showHeader\"\n [node]=\"nodePaging\"\n [preselectNodes]=\"preselectedNodes\"\n [maxItems]=\"pageSize\"\n [rowFilter]=\"_rowFilter\"\n [imageResolver]=\"imageResolver\"\n [currentFolderId]=\"folderIdToShow\"\n [selectionMode]=\"selectionMode\"\n [contextMenuActions]=\"false\"\n [contentActions]=\"false\"\n [allowDropFiles]=\"false\"\n [sorting]=\"sorting\"\n sortingMode=\"server\"\n [where]=\"where\"\n (folderChange)=\"onFolderChange($event)\"\n (ready)=\"onFolderLoaded($event)\"\n (nodeSelected)=\"onCurrentSelection($event)\"\n [class.adf-content-node-selector-content-list-empty]=\"emptyList\"\n data-automation-id=\"content-node-selector-document-list\">\n\n <adf-custom-empty-content-template>\n <div aria-live=\"polite\">{{ 'NODE_SELECTOR.NO_RESULTS' | translate }}</div>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <data-column key=\"$thumbnail\" type=\"image\" />\n <data-column key=\"name\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.NAME\" class=\"adf-full-width adf-ellipsis-cell\">\n <ng-template let-context>\n <adf-name-location-cell [row]=\"context.row\" />\n </ng-template>\n </data-column>\n <data-column key=\"modifiedAt\" type=\"date\" title=\"ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_ON\" format=\"timeAgo\" class=\"adf-content-selector-modified-cell\" />\n <data-column key=\"createdByUser.displayName\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.CREATED_BY\" class=\"adf-content-selector-modifier-cell\" />\n <data-column key=\"visibility\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.STATUS\" class=\"adf-content-selector-visibility-cell\" />\n </data-columns>\n\n </adf-document-list>\n\n <adf-infinite-pagination\n [target]=\"target\"\n [loading]=\"loadingSearchResults\"\n (loadMore)=\"getNextPageOfSearch($event)\"\n data-automation-id=\"content-node-selector-search-pagination\">\n {{ 'ADF-DOCUMENT-LIST.LAYOUT.LOAD_MORE' | translate }}\n </adf-infinite-pagination>\n </div>\n </div>\n </div>\n</div>\n", styles: ["h2.adf-search-results-label{flex:1;font-weight:600;font-size:var(--theme-body-1-font-size);font-style:normal;font-stretch:normal;line-height:1.43;letter-spacing:-.2px;color:var(--adf-theme-foreground-text-color-087)}.mdc-dialog .mat-mdc-dialog-surface:is(div){padding-bottom:0}.adf-content-node-selector-panel .adf-toolbar .adf-toolbar-container.adf-toolbar-container-row{max-height:48px;border-bottom-width:0;font-size:var(--theme-body-1-font-size);height:auto}.adf-content-node-selector-search-panel-container{display:flex}.adf-content-node-selector-document-list-container{margin-top:16px;width:100%}.adf-content-node-selector-content{padding-top:0}.adf-content-node-selector-content .mat-mdc-input-element:focus::placeholder{color:var(--theme-primary-color)}.adf-content-node-selector-content .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex{align-items:center}.adf-content-node-selector-content .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding-bottom:0}.adf-content-node-selector-content .adf-sites-dropdown-form-field label.mat-mdc-floating-label{top:32px}.adf-content-node-selector-content .mat-mdc-form-field-subscript-wrapper{height:16px}.adf-content-node-selector-content-input{width:100%;margin-bottom:8px}.adf-content-node-selector-content-input .adf-content-node-selector-content-input-icon{color:var(--adf-theme-foreground-icon-color-054);cursor:pointer;padding:0 0 8px;width:1em;height:1em;font-size:20px}.adf-content-node-selector-content-input .adf-content-node-selector-content-input-icon:hover{color:var(--adf-theme-foreground-base-color)}.adf-content-node-selector-content-input .mat-mdc-form-field-subscript-wrapper{display:none}.adf-content-node-selector-content .adf-site-dropdown-container{display:block}.adf-content-node-selector-content .adf-site-dropdown-container .adf-sites-dropdown-form-field{width:100%}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger{outline:none}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger .adf-dropdown-breadcrumb-icon{color:var(--adf-theme-foreground-base-color-045)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger .adf-dropdown-breadcrumb-icon:hover{color:var(--adf-theme-foreground-base-color-065)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger:focus .adf-dropdown-breadcrumb-icon{color:var(--theme-primary-color)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-item-chevron{color:var(--adf-theme-foreground-base-color-045)}.adf-content-node-selector-content-list,.adf-content-node-selector-list{height:40vh;overflow:auto;border:1px solid var(--adf-theme-foreground-text-color-007);border-top:0;position:relative}.adf-content-node-selector-content-list-empty+adf-infinite-pagination,.adf-content-node-selector-list-empty+adf-infinite-pagination{position:absolute;bottom:0;width:100%}.adf-content-node-selector-content-list .adf-highlight,.adf-content-node-selector-list .adf-highlight{color:var(--theme-primary-color)}.adf-content-node-selector-content-list .adf-datatable-list,.adf-content-node-selector-list .adf-datatable-list{border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-name-location-cell-location,.adf-content-node-selector-list .adf-datatable-list .adf-name-location-cell-location{display:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-selected,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-selected{height:100%;width:100%}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-selected>svg,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-selected>svg{fill:var(--theme-primary-color)}.adf-content-node-selector-content-list .adf-datatable-list .adf-no-content-container.adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-no-content-container.adf-datatable-cell{text-align:center;border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell--image,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell--image{min-width:35px;width:35px;max-width:40px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell:nth-child(2),.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell:nth-child(2){flex:1 0 95px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell .adf-no-content-container.adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell .adf-no-content-container.adf-datatable-cell{text-align:center;border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell{flex:0 1 auto;min-width:1px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell .adf-datatable-cell-value,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell .adf-datatable-cell-value{padding:0}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row{min-height:40px}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row{padding-top:15px}}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:first-child .adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:first-child .adf-datatable-cell{border-top:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:last-child .adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:last-child .adf-datatable-cell{border-bottom:none}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row{min-height:65px}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row{padding-top:15px}}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row .adf-name-location-cell-name,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row .adf-name-location-cell-name{padding:5px 10px 2px}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modified-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modified-cell,.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modifier-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modifier-cell,.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-visibility-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-visibility-cell{display:none}\n"] }]
|
|
562
|
+
}], ctorParameters: () => [{ type: i1.CustomResourcesService }, { type: i2.SearchQueryBuilderService }, { type: i3.UserPreferencesService }, { type: i4.NodesApiService }, { type: i4.UploadService }, { type: i4.SitesService }, { type: i5.ContentNodeSelectorPanelService }], propDecorators: { restrictRootToCurrentFolderId: [{
|
|
563
|
+
type: Input
|
|
564
|
+
}], currentFolderId: [{
|
|
565
|
+
type: Input,
|
|
566
|
+
args: [{ required: true }]
|
|
567
|
+
}], dropdownHideMyFiles: [{
|
|
568
|
+
type: Input
|
|
569
|
+
}], dropdownSiteList: [{
|
|
570
|
+
type: Input
|
|
571
|
+
}], where: [{
|
|
572
|
+
type: Input
|
|
573
|
+
}], rowFilter: [{
|
|
574
|
+
type: Input
|
|
575
|
+
}], excludeSiteContent: [{
|
|
576
|
+
type: Input
|
|
577
|
+
}], imageResolver: [{
|
|
578
|
+
type: Input
|
|
579
|
+
}], pageSize: [{
|
|
580
|
+
type: Input
|
|
581
|
+
}], selectionMode: [{
|
|
582
|
+
type: Input
|
|
583
|
+
}], isSelectionValid: [{
|
|
584
|
+
type: Input
|
|
585
|
+
}], breadcrumbTransform: [{
|
|
586
|
+
type: Input
|
|
587
|
+
}], showSearch: [{
|
|
588
|
+
type: Input
|
|
589
|
+
}], showDropdownSiteList: [{
|
|
590
|
+
type: Input
|
|
591
|
+
}], showFilesInResult: [{
|
|
592
|
+
type: Input
|
|
593
|
+
}], showNodeCounter: [{
|
|
594
|
+
type: Input
|
|
595
|
+
}], select: [{
|
|
596
|
+
type: Output
|
|
597
|
+
}], navigationChange: [{
|
|
598
|
+
type: Output
|
|
599
|
+
}], siteChange: [{
|
|
600
|
+
type: Output
|
|
601
|
+
}], showingSearch: [{
|
|
602
|
+
type: Output
|
|
603
|
+
}], currentFolder: [{
|
|
604
|
+
type: Output
|
|
605
|
+
}], folderLoaded: [{
|
|
606
|
+
type: Output
|
|
607
|
+
}], documentList: [{
|
|
608
|
+
type: ViewChild,
|
|
609
|
+
args: ['documentList', { static: true }]
|
|
610
|
+
}], highlighter: [{
|
|
611
|
+
type: ViewChild,
|
|
612
|
+
args: [HighlightDirective, { static: true }]
|
|
613
|
+
}], infinitePaginationComponent: [{
|
|
614
|
+
type: ViewChild,
|
|
615
|
+
args: [InfinitePaginationComponent, { static: true }]
|
|
616
|
+
}] } });
|
|
617
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1ub2RlLXNlbGVjdG9yLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvY29udGVudC1ub2RlLXNlbGVjdG9yL2NvbnRlbnQtbm9kZS1zZWxlY3Rvci1wYW5lbC9jb250ZW50LW5vZGUtc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jb250ZW50LW5vZGUtc2VsZWN0b3IvY29udGVudC1ub2RlLXNlbGVjdG9yLXBhbmVsL2NvbnRlbnQtbm9kZS1zZWxlY3Rvci1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFDSCxtQ0FBbUMsRUFDbkMsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUV2QixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBRTNCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDdkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQWtELGVBQWUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBK0IsVUFBVSxFQUErQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0gsT0FBTyxFQUFFLHFC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QURaLEtBQUs7Z0JBUU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBVU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtGLFVBQVU7c0JBRGIsS0FBSztnQkFhRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBYUYsaUJBQWlCO3NCQURwQixLQUFLO2dCQVVGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBV04sTUFBTTtzQkFETCxNQUFNO2dCQUtQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLFVBQVU7c0JBRFQsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFJUCxZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJM0MsV0FBVztzQkFEVixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFtQi9DLDJCQUEyQjtzQkFEMUIsU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEYXRhQ29sdW1uQ29tcG9uZW50LFxuICAgIERhdGFDb2x1bW5MaXN0Q29tcG9uZW50LFxuICAgIERhdGFTb3J0aW5nLFxuICAgIEhpZ2hsaWdodERpcmVjdGl2ZSxcbiAgICBJbmZpbml0ZVBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgUGFnaW5hdGVkQ29tcG9uZW50LFxuICAgIFNob3dIZWFkZXJNb2RlLFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgVG9vbGJhclRpdGxlQ29tcG9uZW50LFxuICAgIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgVXNlclByZWZlcmVuY2VWYWx1ZXNcbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wbGV0ZUV2ZW50LCBGaWxlVXBsb2FkRGVsZXRlRXZlbnQsIE5vZGVzQXBpU2VydmljZSwgU2l0ZXNTZXJ2aWNlLCBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5vZGUsIE5vZGVFbnRyeSwgTm9kZVBhZ2luZywgUGFnaW5hdGlvbiwgUmVxdWVzdFNjb3BlLCBTZWFyY2hSZXF1ZXN0LCBTaXRlRW50cnksIFNpdGVQYWdpbmcgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IERvY3VtZW50TGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RvY3VtZW50LWxpc3QvY29tcG9uZW50cy9kb2N1bWVudC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb3dGaWx0ZXIgfSBmcm9tICcuLi8uLi9kb2N1bWVudC1saXN0L2RhdGEvcm93LWZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBJbWFnZVJlc29sdmVyIH0gZnJvbSAnLi4vLi4vZG9jdW1lbnQtbGlzdC9kYXRhL2ltYWdlLXJlc29sdmVyLm1vZGVsJztcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kb2N1bWVudC1saXN0L3NlcnZpY2VzL2N1c3RvbS1yZXNvdXJjZXMuc2VydmljZSc7XG5pbXBvcnQgeyBTaGFyZURhdGFSb3cgfSBmcm9tICcuLi8uLi9kb2N1bWVudC1saXN0L2RhdGEvc2hhcmUtZGF0YS1yb3cubW9kZWwnO1xuaW1wb3J0IHsgTm9kZUVudHJ5RXZlbnQgfSBmcm9tICcuLi8uLi9kb2N1bWVudC1saXN0L2NvbXBvbmVudHMvbm9kZS5ldmVudCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb250ZW50Tm9kZVNlbGVjdG9yUGFuZWxTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZW50LW5vZGUtc2VsZWN0b3ItcGFuZWwuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEF1dG9Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYXV0by1mb2N1cy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTm9kZUNvdW50ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL25vZGUtY291bnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgRHJvcGRvd25TaXRlc0NvbXBvbmVudCB9IGZyb20gJy4uL3NpdGUtZHJvcGRvd24vc2l0ZXMtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBOYW1lTG9jYXRpb25DZWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vbmFtZS1sb2NhdGlvbi1jZWxsL25hbWUtbG9jYXRpb24tY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJvcGRvd25CcmVhZGNydW1iQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYnJlYWRjcnVtYi9kcm9wZG93bi1icmVhZGNydW1iLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlcnZpY2VzL3NlYXJjaC1xdWVyeS1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zZWFyY2gvY29tcG9uZW50cy9zZWFyY2gtcGFuZWwvc2VhcmNoLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25GdW5jdGlvbiA9IChlbnRyeTogTm9kZSkgPT4gYm9vbGVhbjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRWYWxpZGF0aW9uID0gKCkgPT4gdHJ1ZTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLXBhbmVsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBBdXRvRm9jdXNEaXJlY3RpdmUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIERyb3Bkb3duU2l0ZXNDb21wb25lbnQsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgVG9vbGJhclRpdGxlQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBEcm9wZG93bkJyZWFkY3J1bWJDb21wb25lbnQsXG4gICAgICAgIE5vZGVDb3VudGVyRGlyZWN0aXZlLFxuICAgICAgICBEb2N1bWVudExpc3RDb21wb25lbnQsXG4gICAgICAgIEhpZ2hsaWdodERpcmVjdGl2ZSxcbiAgICAgICAgRGF0YUNvbHVtbkxpc3RDb21wb25lbnQsXG4gICAgICAgIERhdGFDb2x1bW5Db21wb25lbnQsXG4gICAgICAgIE5hbWVMb2NhdGlvbkNlbGxDb21wb25lbnQsXG4gICAgICAgIEluZmluaXRlUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICAgICAgQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIFNlYXJjaFBhbmVsQ29tcG9uZW50XG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1ub2RlLXNlbGVjdG9yLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb250ZW50LW5vZGUtc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLXBhbmVsJyB9LFxuICAgIHByb3ZpZGVyczogW1NlYXJjaFF1ZXJ5QnVpbGRlclNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnROb2RlU2VsZWN0b3JQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIERFRkFVTFRfUEFHSU5BVElPTjogUGFnaW5hdGlvbiA9IG5ldyBQYWdpbmF0aW9uKHtcbiAgICAgICAgbWF4SXRlbXM6IDI1LFxuICAgICAgICBza2lwQ291bnQ6IDBcbiAgICB9KTtcblxuICAgIHJlYWRvbmx5IGRpc2FibGVBY3Rpb25Gb2xkZXJMaXN0ID0gWyctbXlzaXRlcy0nXTtcblxuICAgIHByaXZhdGUgc2hvd1NpdGVMaXN0ID0gdHJ1ZTtcbiAgICBwcml2YXRlIHNob3dTZWFyY2hGaWVsZCA9IHRydWU7XG4gICAgcHJpdmF0ZSBzaG93Q291bnRlciA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2VtcHR5TGlzdCA9IHRydWU7XG5cbiAgICAvKiogSWYgdHJ1ZSB3aWxsIHJlc3RyaWN0IHRoZSBzZWFyY2ggYW5kIGJyZWFkY3J1bWJzIHRvIHRoZSBjdXJyZW50Rm9sZGVySWQgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlc3RyaWN0Um9vdFRvQ3VycmVudEZvbGRlcklkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogTm9kZSBJRCBvZiB0aGUgZm9sZGVyIGN1cnJlbnRseSBsaXN0ZWQuICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBjdXJyZW50Rm9sZGVySWQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBIaWRlIHRoZSBcIk15IEZpbGVzXCIgb3B0aW9uIGFkZGVkIHRvIHRoZSBzaXRlIGxpc3QgYnkgZGVmYXVsdC5cbiAgICAgKiBTZWUgdGhlIFtTaXRlcyBEcm9wZG93biBjb21wb25lbnRdKHNpdGVzLWRyb3Bkb3duLmNvbXBvbmVudC5tZClcbiAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRyb3Bkb3duSGlkZU15RmlsZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBzaXRlIGZvciBzaXRlIGRyb3Bkb3duLiBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBgc2l0ZUxpc3RgLlxuICAgICAqIHByb3BlcnR5IG9mIHRoZSBTaXRlcyBEcm9wZG93biBjb21wb25lbnQgKHNlZSBpdHMgZG9jIHBhZ2VcbiAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbikuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkcm9wZG93blNpdGVMaXN0OiBTaXRlUGFnaW5nID0gbnVsbDtcblxuICAgIF9yb3dGaWx0ZXI6IFJvd0ZpbHRlciA9IGRlZmF1bHRWYWxpZGF0aW9uO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tICp3aGVyZSogZmlsdGVyIGZ1bmN0aW9uLiBTZWUgdGhlXG4gICAgICogRG9jdW1lbnQgTGlzdCBjb21wb25lbnRcbiAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHdoZXJlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gcm93IGZpbHRlciBmdW5jdGlvbi4gU2VlIHRoZVxuICAgICAqIFtSb3cgRmlsdGVyIE1vZGVsXShyb3ctZmlsdGVyLm1vZGVsLm1kKSBwYWdlXG4gICAgICogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcm93RmlsdGVyKHJvd0ZpbHRlcjogUm93RmlsdGVyKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlUm93RmlsdGVyKHJvd0ZpbHRlcik7XG4gICAgfVxuXG4gICAgZ2V0IHJvd0ZpbHRlcigpOiBSb3dGaWx0ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93RmlsdGVyO1xuICAgIH1cblxuICAgIF9leGNsdWRlU2l0ZUNvbnRlbnQ6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbGlzdCBvZiBzaXRlIGNvbnRlbnQgY29tcG9uZW50SWRzLlxuICAgICAqIFVzZWQgdG8gZmlsdGVyIG91dCB0aGUgY29ycmVzcG9uZGluZyBpdGVtcyBmcm9tIHRoZSBkaXNwbGF5ZWQgbm9kZXNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBleGNsdWRlU2l0ZUNvbnRlbnQoZXhjbHVkZVNpdGVDb250ZW50OiBzdHJpbmdbXSkge1xuICAgICAgICB0aGlzLl9leGNsdWRlU2l0ZUNvbnRlbnQgPSBleGNsdWRlU2l0ZUNvbnRlbnQ7XG4gICAgICAgIHRoaXMuY3JlYXRlUm93RmlsdGVyKHRoaXMuX3Jvd0ZpbHRlcik7XG4gICAgfVxuXG4gICAgZ2V0IGV4Y2x1ZGVTaXRlQ29udGVudCgpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leGNsdWRlU2l0ZUNvbnRlbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGltYWdlIHJlc29sdmVyIGZ1bmN0aW9uLiBTZWUgdGhlXG4gICAgICogW0ltYWdlIFJlc29sdmVyIE1vZGVsXShpbWFnZS1yZXNvbHZlci5tb2RlbC5tZCkgcGFnZVxuICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW1hZ2VSZXNvbHZlcjogSW1hZ2VSZXNvbHZlciA9IG51bGw7XG5cbiAgICAvKiogTnVtYmVyIG9mIGl0ZW1zIHNob3duIHBlciBwYWdlIGluIHRoZSBsaXN0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFnZVNpemU6IG51bWJlciA9IHRoaXMuREVGQVVMVF9QQUdJTkFUSU9OLm1heEl0ZW1zO1xuXG4gICAgLyoqIERlZmluZSB0aGUgc2VsZWN0aW9uIG1vZGUgZm9yIGRvY3VtZW50IGxpc3QuIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmUgc2luZ2xlIG9yIG11bHRpcGxlICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb25Nb2RlOiAnc2luZ2xlJyB8ICdtdWx0aXBsZScgPSAnc2luZ2xlJztcblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gZGVjaWRlIGlmIHRoZSBzZWxlY3RlZCBub2RlIGhhcyBwZXJtaXNzaW9uIHRvIGJlIHNlbGVjdGVkLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYSBmdW5jdGlvbiB0aGF0IGFsd2F5cyByZXR1cm5zIHRydWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc1NlbGVjdGlvblZhbGlkOiBWYWxpZGF0aW9uRnVuY3Rpb24gPSBkZWZhdWx0VmFsaWRhdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybWF0aW9uIHRvIGJlIHBlcmZvcm1lZCBvbiB0aGUgY2hvc2VuL2ZvbGRlciBub2RlIGJlZm9yZSBidWlsZGluZyB0aGVcbiAgICAgKiBicmVhZGNydW1iIFVJLiBDYW4gYmUgdXNlZnVsIHdoZW4gY3VzdG9tIGZvcm1hdHRpbmcgaXMgbmVlZGVkIGZvciB0aGUgYnJlYWRjcnVtYi5cbiAgICAgKiBZb3UgY2FuIGNoYW5nZSB0aGUgcGF0aCBlbGVtZW50cyBmcm9tIHRoZSBub2RlIHRoYXQgYXJlIHVzZWQgdG8gYnVpbGQgdGhlXG4gICAgICogYnJlYWRjcnVtYiB1c2luZyB0aGlzIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYnJlYWRjcnVtYlRyYW5zZm9ybTogKG5vZGUpID0+IGFueTtcblxuICAgIC8qKiBUb2dnbGUgc2VhcmNoIGlucHV0IHJlbmRlcmluZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNob3dTZWFyY2godmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1NlYXJjaEZpZWxkID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgc2hvd1NlYXJjaCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1NlYXJjaEZpZWxkO1xuICAgIH1cblxuICAgIC8qKiBUb2dnbGUgc2l0ZXMgbGlzdCBkcm9wZG93biByZW5kZXJpbmcgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzaG93RHJvcGRvd25TaXRlTGlzdCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zaG93U2l0ZUxpc3QgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBzaG93RHJvcGRvd25TaXRlTGlzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1NpdGVMaXN0O1xuICAgIH1cblxuICAgIC8qKiBTaG93cyB0aGUgZmlsZXMgYW5kIGZvbGRlcnMgaW4gdGhlIHNlYXJjaCByZXN1bHQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzaG93RmlsZXNJblJlc3VsdCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3Qgc2hvd0ZpbGVzUXVlcnkgPSBgVFlQRTonY206Zm9sZGVyJyR7dmFsdWUgPyBgIE9SIFRZUEU6J2NtOmNvbnRlbnQnYCA6ICcnfWA7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuYWRkRmlsdGVyUXVlcnkoc2hvd0ZpbGVzUXVlcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNob3dzIHRoZSBub2RlIGNvdW50ZXIgaW4gdGhlIGJyZWFkY3J1bWIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzaG93Tm9kZUNvdW50ZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zaG93Q291bnRlciA9IHZhbHVlID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBzaG93Tm9kZUNvdW50ZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dDb3VudGVyO1xuICAgIH1cblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgaGFzIGNob3NlbiBhbiBpdGVtLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8Tm9kZVtdPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgbmF2aWdhdGlvbiBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG5hdmlnYXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGVFbnRyeUV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0IHNpdGUgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzaXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHNlYXJjaCBpcyBydW5uaW5nLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNob3dpbmdTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGN1cnJlbnQgZm9sZGVyIGxvYWRlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjdXJyZW50Rm9sZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxOb2RlPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBmb2xkZXIgbG9hZGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvbGRlckxvYWRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2RvY3VtZW50TGlzdCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgZG9jdW1lbnRMaXN0OiBEb2N1bWVudExpc3RDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKEhpZ2hsaWdodERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBoaWdobGlnaHRlcjogSGlnaGxpZ2h0RGlyZWN0aXZlO1xuXG4gICAgbm9kZVBhZ2luZzogTm9kZVBhZ2luZyB8IG51bGwgPSBudWxsO1xuICAgIHNpdGVJZDogbnVsbCB8IHN0cmluZztcbiAgICBicmVhZGNydW1iUm9vdElkOiBudWxsIHwgc3RyaW5nO1xuICAgIHNlYXJjaFRlcm06IHN0cmluZyA9ICcnO1xuICAgIHNob3dpbmdTZWFyY2hSZXN1bHRzOiBib29sZWFuID0gZmFsc2U7XG4gICAgbG9hZGluZ1NlYXJjaFJlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpbkRpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIF9jaG9zZW5Ob2RlOiBOb2RlW10gPSBudWxsO1xuICAgIHNlbGVjdGlvbldpdGhvdXRWYWxpZGF0aW9uOiBOb2RlW10gPSBudWxsO1xuICAgIGZvbGRlcklkVG9TaG93OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBicmVhZGNydW1iRm9sZGVyVGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHN0YXJ0U2l0ZUd1aWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIGhhc1ZhbGlkUXVlcnk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBzaG93SGVhZGVyID0gU2hvd0hlYWRlck1vZGUuTmV2ZXI7XG5cbiAgICBAVmlld0NoaWxkKEluZmluaXRlUGFnaW5hdGlvbkNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBpbmZpbml0ZVBhZ2luYXRpb25Db21wb25lbnQ6IEluZmluaXRlUGFnaW5hdGlvbkNvbXBvbmVudDtcblxuICAgIGluZmluaXRlU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG4gICAgZGVib3VuY2VTZWFyY2g6IG51bWJlciA9IDIwMDtcbiAgICBzZWFyY2hJbnB1dDogVW50eXBlZEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuXG4gICAgdGFyZ2V0OiBQYWdpbmF0ZWRDb21wb25lbnQ7XG4gICAgcHJlc2VsZWN0ZWROb2RlczogTm9kZUVudHJ5W10gPSBbXTtcbiAgICBjdXJyZW50VXBsb2FkQmF0Y2g6IE5vZGVFbnRyeVtdID0gW107XG5cbiAgICBzb3J0aW5nOiBzdHJpbmdbXSB8IERhdGFTb3J0aW5nID0gWydjcmVhdGVkQXQnLCAnZGVzYyddO1xuXG4gICAgc2VhcmNoUGFuZWxFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY3VzdG9tUmVzb3VyY2VzU2VydmljZTogQ3VzdG9tUmVzb3VyY2VzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBxdWVyeUJ1aWxkZXJTZXJ2aWNlOiBTZWFyY2hRdWVyeUJ1aWxkZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbm9kZXNBcGlTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzaXRlc1NlcnZpY2U6IFNpdGVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50Tm9kZVNlbGVjdG9yUGFuZWxTZXJ2aWNlOiBDb250ZW50Tm9kZVNlbGVjdG9yUGFuZWxTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgc2V0IGNob3Nlbk5vZGUodmFsdWU6IE5vZGVbXSkge1xuICAgICAgICB0aGlzLl9jaG9zZW5Ob2RlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2VsZWN0Lm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBjaG9zZW5Ob2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hvc2VuTm9kZTtcbiAgICB9XG5cbiAgICBnZXQgZW1wdHlMaXN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW1wdHlMaXN0O1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hvc2VuTm9kZT8ubGVuZ3RoIHx8IDA7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVNlYXJjaCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VhcmNoVmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoVGVybSA9IHNlYXJjaFZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS51c2VyUXVlcnkgPSBzZWFyY2hWYWx1ZS5sZW5ndGggPiAwID8gYCR7c2VhcmNoVmFsdWV9KmAgOiBzZWFyY2hWYWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UudXBkYXRlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UudXBkYXRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHNlYXJjaFJlcXVlc3QpID0+IHtcbiAgICAgICAgICAgIGlmIChzZWFyY2hSZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNWYWxpZFF1ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmVEaWFsb2dGb3JOZXdTZWFyY2goc2VhcmNoUmVxdWVzdCk7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLmV4ZWN1dGUoZmFsc2UsIHNlYXJjaFJlcXVlc3QpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc1ZhbGlkUXVlcnkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Rm9sZGVyVG9TaG93KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclNlYXJjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuZXhlY3V0ZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChyZXN1bHRzOiBOb2RlUGFnaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNWYWxpZFF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93U2VhcmNoUmVzdWx0cyhyZXN1bHRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlXG4gICAgICAgICAgICAuc2VsZWN0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLlBhZ2luYXRpb25TaXplKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChwYWdTaXplKSA9PiAodGhpcy5wYWdlU2l6ZSA9IHBhZ1NpemUpKTtcblxuICAgICAgICB0aGlzLnRhcmdldCA9IHRoaXMuZG9jdW1lbnRMaXN0O1xuICAgICAgICB0aGlzLmZvbGRlcklkVG9TaG93ID0gdGhpcy5jdXJyZW50Rm9sZGVySWQ7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGb2xkZXJJZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVzdHJpY3RSb290VG9DdXJyZW50Rm9sZGVySWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJSb290SWQgPSB0aGlzLmN1cnJlbnRGb2xkZXJJZDtcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCA9IHRoaXMuY3VycmVudEZvbGRlcklkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN0YXJ0U2l0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5icmVhZGNydW1iVHJhbnNmb3JtID0gdGhpcy5icmVhZGNydW1iVHJhbnNmb3JtID8gdGhpcy5icmVhZGNydW1iVHJhbnNmb3JtIDogbnVsbDtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGlvblZhbGlkID0gdGhpcy5pc1NlbGVjdGlvblZhbGlkID8gdGhpcy5pc1NlbGVjdGlvblZhbGlkIDogZGVmYXVsdFZhbGlkYXRpb247XG4gICAgICAgIHRoaXMub25GaWxlVXBsb2FkRXZlbnQoKTtcbiAgICAgICAgdGhpcy5vbkZpbGVVcGxvYWREZWxldGVkRXZlbnQoKTtcbiAgICAgICAgdGhpcy5yZXNldFBhZ2luYXRpb24oKTtcbiAgICAgICAgdGhpcy5zZXRTZWFyY2hTY29wZVRvTm9kZXMoKTtcblxuICAgICAgICB0aGlzLmRvY3VtZW50TGlzdC4kZm9sZGVyTm9kZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGN1cnJlbnROb2RlOiBOb2RlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGb2xkZXIuZW1pdChjdXJyZW50Tm9kZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZVNlYXJjaFBhbmVsKCkge1xuICAgICAgICB0aGlzLnNlYXJjaFBhbmVsRXhwYW5kZWQgPSAhdGhpcy5zZWFyY2hQYW5lbEV4cGFuZGVkO1xuICAgIH1cblxuICAgIGhhc0N1c3RvbU1vZGVscygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudE5vZGVTZWxlY3RvclBhbmVsU2VydmljZT8uY3VzdG9tTW9kZWxzPy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25GaWxlVXBsb2FkRXZlbnQoKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkQ29tcGxldGVcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGZpbGVVcGxvYWRFdmVudDogRmlsZVVwbG9hZENvbXBsZXRlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRVcGxvYWRCYXRjaC5wdXNoKGZpbGVVcGxvYWRFdmVudC5kYXRhKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudXBsb2FkU2VydmljZS5pc1VwbG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2VsZWN0ZWROb2RlcyA9IHRoaXMuZ2V0UHJlc2VsZWN0Tm9kZXNCYXNlZE9uU2VsZWN0aW9uTW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRVcGxvYWRCYXRjaCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50TGlzdC5yZWxvYWRXaXRob3V0UmVzZXR0aW5nU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkZpbGVVcGxvYWREZWxldGVkRXZlbnQoKSB7XG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkRGVsZXRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGRlbGV0ZWRGaWxlRXZlbnQ6IEZpbGVVcGxvYWREZWxldGVFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudExpc3QudW5zZWxlY3RSb3dGcm9tTm9kZUlkKGRlbGV0ZWRGaWxlRXZlbnQuZmlsZS5kYXRhLmVudHJ5LmlkKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0LnJlbG9hZFdpdGhvdXRSZXNldHRpbmdTZWxlY3Rpb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdGFydFNpdGUoKSB7XG4gICAgICAgIHRoaXMubm9kZXNBcGlTZXJ2aWNlLmdldE5vZGUodGhpcy5jdXJyZW50Rm9sZGVySWQpLnN1YnNjcmliZSgoc3RhcnROb2RlRW50cnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRTaXRlR3VpZCA9IHRoaXMuc2l0ZXNTZXJ2aWNlLmdldFNpdGVOYW1lRnJvbU5vZGVQYXRoKHN0YXJ0Tm9kZUVudHJ5KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0U2l0ZUd1aWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVzU2VydmljZS5nZXRTaXRlKHRoaXMuc3RhcnRTaXRlR3VpZCkuc3Vic2NyaWJlKChzdGFydFNpdGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRTaXRlRW50cnkgaW5zdGFuY2VvZiBTaXRlRW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUNoYW5nZS5lbWl0KHN0YXJ0U2l0ZUVudHJ5LmVudHJ5LnRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVJvd0ZpbHRlcihmaWx0ZXI/OiBSb3dGaWx0ZXIpIHtcbiAgICAgICAgaWYgKCFmaWx0ZXIpIHtcbiAgICAgICAgICAgIGZpbHRlciA9ICgpID0+IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcm93RmlsdGVyID0gKHZhbHVlOiBTaGFyZURhdGFSb3csIGluZGV4OiBudW1iZXIsIGFycmF5OiBTaGFyZURhdGFSb3dbXSkgPT5cbiAgICAgICAgICAgIGZpbHRlcih2YWx1ZSwgaW5kZXgsIGFycmF5KSAmJiAhdGhpcy5pc0V4Y2x1ZGVkU2l0ZUNvbnRlbnQodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNFeGNsdWRlZFNpdGVDb250ZW50KHJvdzogU2hhcmVEYXRhUm93KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcm93Lm5vZGUuZW50cnk7XG4gICAgICAgIGlmICh0aGlzLl9leGNsdWRlU2l0ZUNvbnRlbnQ/Lmxlbmd0aCAmJiBlbnRyeT8ucHJvcGVydGllcz8uWydzdDpjb21wb25lbnRJZCddKSB7XG4gICAgICAgICAgICBjb25zdCBleGNsdWRlZEl0ZW0gPSB0aGlzLl9leGNsdWRlU2l0ZUNvbnRlbnQuZmluZCgoaWQ6IHN0cmluZykgPT4gZW50cnkucHJvcGVydGllc1snc3Q6Y29tcG9uZW50SWQnXSA9PT0gaWQpO1xuICAgICAgICAgICAgcmV0dXJuICEhZXhjbHVkZWRJdGVtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBzaXRlIGF0dHJpYnV0ZSBhbmQgc3RhcnRzIGEgbmV3IHNlYXJjaFxuICAgICAqXG4gICAgICogQHBhcmFtIGNob3NlblNpdGUgU2l0ZUVudHJ5IHRvIHNlYXJjaCB3aXRoaW5cbiAgICAgKi9cbiAgICBzaXRlQ2hhbmdlZChjaG9zZW5TaXRlOiBTaXRlRW50cnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaXRlSWQgPSBjaG9zZW5TaXRlLmVudHJ5Lmd1aWQ7XG4gICAgICAgIHRoaXMuc2V0VGl0bGVJZkN1c3RvbVNpdGUoY2hvc2VuU2l0ZSk7XG4gICAgICAgIHRoaXMuc2l0ZUNoYW5nZS5lbWl0KGNob3NlblNpdGUuZW50cnkudGl0bGUpO1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGN1cnJlbnQgYnJlYWRjcnVtYiBmb2xkZXIgbm9kZVxuICAgICAqXG4gICAgICogQHJldHVybnMgdGhlIGFjdHVhbGx5IHNlbGVjdGVkfGVudGVyZWQgZm9sZGVyIG5vZGUgb3IgbnVsbCBpbiBjYXNlIG9mIHNlYXJjaGluZyBmb3IgdGhlIGJyZWFkY3J1bWJcbiAgICAgKi9cbiAgICBnZXQgYnJlYWRjcnVtYkZvbGRlck5vZGUoKTogTm9kZSB8IG51bGwge1xuICAgICAgICBsZXQgZm9sZGVyTm9kZTogTm9kZTtcblxuICAgICAgICBpZiAodGhpcy5zaG93aW5nU2VhcmNoUmVzdWx0cyAmJiB0aGlzLnNlbGVjdGlvbldpdGhvdXRWYWxpZGF0aW9uPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvbGRlck5vZGUgPSB0aGlzLnNlbGVjdGlvbldpdGhvdXRWYWxpZGF0aW9uWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9sZGVyTm9kZSA9IHRoaXMuZG9jdW1lbnRMaXN0LmZvbGRlck5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9sZGVyTm9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmVwYXJlcyB0aGUgZGlhbG9nIGZvciBhIG5ldyBzZWFyY2hcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWFyY2hSZXF1ZXN0IHJlcXVlc3Qgb3B0aW9uc1xuICAgICAqL1xuICAgIHByZXBhcmVEaWFsb2dGb3JOZXdTZWFyY2goc2VhcmNoUmVxdWVzdDogU2VhcmNoUmVxdWVzdCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhcmdldCA9IHNlYXJjaFJlcXVlc3QgPyBudWxsIDogdGhpcy5kb2N1bWVudExpc3Q7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgdGhpcy5pbmZpbml0ZVBhZ2luYXRpb25Db21wb25lbnQucmVzZXQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvbGRlcklkVG9TaG93ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmVzZWxlY3RlZE5vZGVzID0gW107XG4gICAgICAgIHRoaXMubG9hZGluZ1NlYXJjaFJlc3VsdHMgPSB0cnVlO1xuICAgICAgICB0aGlzLmFkZENvcnJlc3BvbmRpbmdOb2RlSWRzUXVlcnkoKTtcbiAgICAgICAgdGhpcy5yZXNldENob3Nlbk5vZGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciB0aGUgc2VhcmNoIGlucHV0IGFuZCByZXNldCB0byBsYXN0IGZvbGRlciBub2RlIGluIHdoaWNoIHNlYXJjaCB3YXMgcGVyZm9ybWVkXG4gICAgICovXG4gICAgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UudXNlclF1ZXJ5ID0gJyc7XG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS51cGRhdGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldHMgdGhlIGZvbGRlciB0byBiZSBzaG93biB3aXRoIHRoZSBzaXRlIHNlbGVjdGlvbiBvciB0aGUgaW5pdGlhbCBsYW5kaW5nIGZvbGRlclxuICAgICAqL1xuICAgIHJlc2V0Rm9sZGVyVG9TaG93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvbGRlcklkVG9TaG93ID0gdGhpcy5zaXRlSWQgfHwgdGhpcy5jdXJyZW50Rm9sZGVySWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgdGhlIHNlYXJjaCBpbnB1dCBhbmQgc2VhcmNoIHJlbGF0ZWQgZGF0YVxuICAgICAqL1xuICAgIGNsZWFyU2VhcmNoKCkge1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm0gPSAnJztcbiAgICAgICAgdGhpcy5ub2RlUGFnaW5nID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZXNldFBhZ2luYXRpb24oKTtcbiAgICAgICAgdGhpcy5yZXNldENob3Nlbk5vZGUoKTtcbiAgICAgICAgdGhpcy5zaG93aW5nU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dpbmdTZWFyY2guZW1pdCh0aGlzLnNob3dpbmdTZWFyY2hSZXN1bHRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZENvcnJlc3BvbmRpbmdOb2RlSWRzUXVlcnkoKSB7XG4gICAgICAgIGxldCBleHRyYVBhcmVudEZpbHRlcmluZyA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVJlc291cmNlc1NlcnZpY2UuaGFzQ29ycmVzcG9uZGluZ05vZGVJZHModGhpcy5zaXRlSWQpKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbVJlc291cmNlc1NlcnZpY2UuZ2V0Q29ycmVzcG9uZGluZ05vZGVJZHModGhpcy5zaXRlSWQpLnN1YnNjcmliZSgobm9kZUlkcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChub2RlSWRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZUlkc1xuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaWQpID0+IGlkICE9PSB0aGlzLnNpdGVJZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChleHRyYUlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFQYXJlbnRGaWx0ZXJpbmcgKz0gYCBPUiBBTkNFU1RPUjond29ya3NwYWNlOi8vU3BhY2VzU3RvcmUvJHtleHRyYUlkfSdgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudEZpbHRlcmluZyA9IHRoaXMuc2l0ZUlkID8gYEFOQ0VTVE9SOid3b3Jrc3BhY2U6Ly9TcGFjZXNTdG9yZS8ke3RoaXMuc2l0ZUlkfScke2V4dHJhUGFyZW50RmlsdGVyaW5nfWAgOiAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuYWRkRmlsdGVyUXVlcnkocGFyZW50RmlsdGVyaW5nKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50RmlsdGVyaW5nID0gdGhpcy5zaXRlSWQgPyBgQU5DRVNUT1I6J3dvcmtzcGFjZTovL1NwYWNlc1N0b3JlLyR7dGhpcy5zaXRlSWR9J2AgOiAnJztcbiAgICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5hZGRGaWx0ZXJRdWVyeShwYXJlbnRGaWx0ZXJpbmcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZWFyY2hTY29wZVRvTm9kZXMoKSB7XG4gICAgICAgIGNvbnN0IHNjb3BlOiBSZXF1ZXN0U2NvcGUgPSB7XG4gICAgICAgICAgICBsb2NhdGlvbnM6ICdub2RlcydcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLnNldFNjb3BlKHNjb3BlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRoZSByZXN1bHRzIG9mIHRoZSBzZWFyY2hcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXN1bHRzIFNlYXJjaCByZXN1bHRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBzaG93U2VhcmNoUmVzdWx0cyhyZXN1bHRzOiBOb2RlUGFnaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd2luZ1NlYXJjaFJlc3VsdHMgPSB0cnVlO1xuICAgICAgICB0aGlzLmxvYWRpbmdTZWFyY2hSZXN1bHRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd2luZ1NlYXJjaC5lbWl0KHRoaXMuc2hvd2luZ1NlYXJjaFJlc3VsdHMpO1xuXG4gICAgICAgIHRoaXMubm9kZVBhZ2luZyA9IHJlc3VsdHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBzaG93aW5nU2VhcmNoUmVzdWx0cyBzdGF0ZSB0byBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBzZWFyY2ggcmVzdWx0cyBvciBmb2xkZXIgcmVzdWx0c1xuICAgICAqXG4gICAgICogQHBhcmFtICRldmVudCBub2RlIGV2ZW50XG4gICAgICovXG4gICAgb25Gb2xkZXJDaGFuZ2UoJGV2ZW50OiBOb2RlRW50cnlFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvbGRlcklkVG9TaG93ID0gJGV2ZW50LnZhbHVlLmlkO1xuICAgICAgICB0aGlzLnNob3dpbmdTZWFyY2hSZXN1bHRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5icmVhZGNydW1iRm9sZGVyVGl0bGUgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXNlbGVjdGVkTm9kZXMgPSBbXTtcbiAgICAgICAgdGhpcy5jbGVhclNlYXJjaCgpO1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25DaGFuZ2UuZW1pdCgkZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF0dGVtcHRzIHRvIHNldCB0aGUgY3VycmVudGx5IGxvYWRlZCBub2RlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbm9kZVBhZ2luZyBwYWdpbmF0aW9uIG1vZGVsXG4gICAgICovXG4gICAgb25Gb2xkZXJMb2FkZWQobm9kZVBhZ2luZzogTm9kZVBhZ2luZyk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2VtcHR5TGlzdCA9ICF0aGlzLmRvY3VtZW50TGlzdC5kYXRhLmdldFJvd3MoKS5sZW5ndGg7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb25BZnRlclJvd0ZpbHRlcihub2RlUGFnaW5nKTtcbiAgICAgICAgaWYgKCF0aGlzLnNob3dpbmdTZWFyY2hSZXN1bHRzKSB7XG4gICAgICAgICAgICB0aGlzLmF0dGVtcHROb2RlU2VsZWN0aW9uKHRoaXMuZG9jdW1lbnRMaXN0LmZvbGRlck5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9sZGVyTG9hZGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHBhZ2luYXRpb24uaGFzTW9yZUl0ZW1zIHRvIGZhbHNlIGFmdGVyIGZpbHRlcmluZyBvbmx5IGZvbGRlcnMgZHVyaW5nICdDT1BZJyBhbmQgJ01PVkUnIGFjdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIG5vZGVQYWdpbmcgcGFnaW5hdGlvbiBtb2RlbFxuICAgICAqL1xuICAgIHVwZGF0ZVBhZ2luYXRpb25BZnRlclJvd0ZpbHRlcihub2RlUGFnaW5nOiBOb2RlUGFnaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50TGlzdC5kYXRhLmdldFJvd3MoKS5sZW5ndGggPCBub2RlUGFnaW5nLmxpc3QucGFnaW5hdGlvbi5tYXhJdGVtcykge1xuICAgICAgICAgICAgbm9kZVBhZ2luZy5saXN0LnBhZ2luYXRpb24uaGFzTW9yZUl0ZW1zID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgYnJlYWRjcnVtYiBoYXMgdG8gYmUgc2hvd24gb3Igbm90XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgbmVlZHMgdG8gc2hvdyB0aGUgYnJlYWRjcnVtYiwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBzaG93QnJlYWRjcnVtYnMoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5zaG93aW5nU2VhcmNoUmVzdWx0cyB8fCB0aGlzLmNob3Nlbk5vZGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZHMgdGhlIG5leHQgYmF0Y2ggb2Ygc2VhcmNoIHJlc3VsdHNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYWdpbmF0aW9uIFBhZ2luYXRpb24gb2JqZWN0XG4gICAgICovXG4gICAgZ2V0TmV4dFBhZ2VPZlNlYXJjaChwYWdpbmF0aW9uOiBQYWdpbmF0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGwgPSB0cnVlO1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UucGFnaW5nLm1heEl0ZW1zID0gcGFnaW5hdGlvbi5tYXhJdGVtcztcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLnBhZ2luZy5za2lwQ291bnQgPSBwYWdpbmF0aW9uLnNraXBDb3VudDtcblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXJtLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS51cGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgbm9kZSBhcyBjaG9zZW4gaWYgaXQgaGFzIHRoZSByaWdodCBwZXJtaXNzaW9uLCBjbGVhcnMgdGhlIHNlbGVjdGlvbiBvdGhlcndpc2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbnRyeSBub2RlIGVudHJ5XG4gICAgICovXG4gICAgcHJpdmF0ZSBhdHRlbXB0Tm9kZVNlbGVjdGlvbihlbnRyeTogTm9kZSk6IHZvaWQge1xuICAgICAgICBpZiAoZW50cnkgJiYgdGhpcy5pc1NlbGVjdGlvblZhbGlkKGVudHJ5KSAmJiAhdGhpcy5pc0FjdGlvbkRpc2FibGVkRm9yRm9sZGVyKHRoaXMuZG9jdW1lbnRMaXN0LmN1cnJlbnRGb2xkZXJJZCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hvc2VuTm9kZSA9IFtlbnRyeV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aW9uRGlzYWJsZWRGb3JGb2xkZXIoZm9sZGVySWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlQWN0aW9uRm9sZGVyTGlzdC5pbmNsdWRlcyhmb2xkZXJJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHRoZSBjaG9zZW4gbm9kZVxuICAgICAqL1xuICAgIHJlc2V0Q2hvc2VuTm9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaG9zZW5Ob2RlID0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdCBmaWx0ZXJzIGFuZCBlbWl0IHRoZSBzZWxlY3Rpb24gY29taW5nIGZyb20gdGhlIGRvY3VtZW50IGxpc3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBub2Rlc0VudHJpZXMgc2VsZWN0ZWQgbm9kZXNcbiAgICAgKi9cbiAgICBvbkN1cnJlbnRTZWxlY3Rpb24obm9kZXNFbnRyaWVzOiBOb2RlRW50cnlbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZE5vZGVzRW50aXR5ID0gbm9kZXNFbnRyaWVzLmZpbHRlcigobm9kZSkgPT4gdGhpcy5pc1NlbGVjdGlvblZhbGlkKG5vZGUuZW50cnkpKTtcbiAgICAgICAgdGhpcy5jaG9zZW5Ob2RlID0gdmFsaWROb2Rlc0VudGl0eS5tYXAoKG5vZGUpID0+IG5vZGUuZW50cnkpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbldpdGhvdXRWYWxpZGF0aW9uID0gbm9kZXNFbnRyaWVzLm1hcCgobm9kZSkgPT4gbm9kZS5lbnRyeSk7XG4gICAgfVxuXG4gICAgc2V0VGl0bGVJZkN1c3RvbVNpdGUoc2l0ZTogU2l0ZUVudHJ5KSB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVJlc291cmNlc1NlcnZpY2UuaXNDdXN0b21Tb3VyY2Uoc2l0ZS5lbnRyeS5ndWlkKSkge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iRm9sZGVyVGl0bGUgPSBzaXRlLmVudHJ5LnRpdGxlO1xuICAgICAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRMaXN0LmZvbGRlck5vZGUucGF0aC5lbGVtZW50cykge1xuICAgICAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYkZvbGRlck5vZGUubmFtZSA9IHNpdGUuZW50cnkudGl0bGU7XG4gICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudExpc3QuZm9sZGVyTm9kZS5wYXRoLmVsZW1lbnRzID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYkZvbGRlclRpdGxlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhc1ByZXNlbGVjdE5vZGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVzZWxlY3RlZE5vZGVzPy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGlzU2luZ2xlU2VsZWN0aW9uTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZSc7XG4gICAgfVxuXG4gICAgZ2V0UHJlc2VsZWN0Tm9kZXNCYXNlZE9uU2VsZWN0aW9uTW9kZSgpOiBOb2RlRW50cnlbXSB7XG4gICAgICAgIGxldCBzZWxlY3RlZE5vZGVzOiBOb2RlRW50cnlbXSA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRVcGxvYWRCYXRjaD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkTm9kZXMgPSBbdGhpcy5jdXJyZW50VXBsb2FkQmF0Y2hbdGhpcy5jdXJyZW50VXBsb2FkQmF0Y2gubGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZE5vZGVzID0gdGhpcy5jdXJyZW50VXBsb2FkQmF0Y2g7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWROb2RlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0UGFnaW5hdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLnBhZ2luZyA9IHtcbiAgICAgICAgICAgIG1heEl0ZW1zOiB0aGlzLnBhZ2VTaXplLFxuICAgICAgICAgICAgc2tpcENvdW50OiB0aGlzLkRFRkFVTFRfUEFHSU5BVElPTi5za2lwQ291bnRcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLWNvbnRlbnQtbm9kZS1zZWxlY3Rvci1jb250ZW50XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGZsb2F0UGxhY2Vob2xkZXI9XCJuZXZlclwiXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJmaWxsXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLWNvbnRlbnQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93U2VhcmNoXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+e3sgJ05PREVfU0VMRUNUT1IuU0VBUkNIJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgICAgICAgIGlkPVwic2VhcmNoSW5wdXRcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaElucHV0XCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgIGFkZi1hdXRvLWZvY3VzXG4gICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJjb250ZW50LW5vZGUtc2VsZWN0b3Itc2VhcmNoLWlucHV0XCI+XG5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2VhcmNoVGVybS5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgIG1hdFN1ZmZpeCAoY2xpY2spPVwiY2xlYXIoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItY29udGVudC1pbnB1dC1pY29uXCJcbiAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbnRlbnQtbm9kZS1zZWxlY3Rvci1zZWFyY2gtY2xlYXJcIj5jbGVhclxuICAgICAgICA8L21hdC1pY29uPlxuXG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNlYXJjaFRlcm0ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLWNvbnRlbnQtaW5wdXQtaWNvblwiXG4gICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJjb250ZW50LW5vZGUtc2VsZWN0b3Itc2VhcmNoLWljb25cIj5zZWFyY2hcbiAgICAgICAgPC9tYXQtaWNvbj5cblxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGFkZi1zaXRlcy1kcm9wZG93blxuICAgICAgICAqbmdJZj1cInNob3dEcm9wZG93blNpdGVMaXN0XCJcbiAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoXCJcbiAgICAgICAgKGNoYW5nZSk9XCJzaXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidOT0RFX1NFTEVDVE9SLlNFTEVDVF9MSUJSQVJZJ1wiXG4gICAgICAgIFtoaWRlTXlGaWxlc109XCJkcm9wZG93bkhpZGVNeUZpbGVzXCJcbiAgICAgICAgW3NpdGVMaXN0XT1cImRyb3Bkb3duU2l0ZUxpc3RcIlxuICAgICAgICBbdmFsdWVdPVwic3RhcnRTaXRlR3VpZFwiXG4gICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbnRlbnQtbm9kZS1zZWxlY3Rvci1zaXRlcy1jb21ib1wiIC8+XG4gICAgPGJ1dHRvbiAqbmdJZj1cImhhc0N1c3RvbU1vZGVscygpXCJcbiAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvZ2dsZS1zZWFyY2gtcGFuZWwtYnV0dG9uXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWFyY2hQYW5lbCgpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+XG4gICAgICAgIHt7ICdTRUFSQ0guU0VBUkNIX0hFQURFUi5USVRMRScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLWNvbnRlbnQtbm9kZS1zZWxlY3Rvci1zZWFyY2gtcGFuZWwtY29udGFpbmVyXCI+XG4gICAgICAgIDxhZGYtc2VhcmNoLXBhbmVsICpuZ0lmPVwic2VhcmNoUGFuZWxFeHBhbmRlZFwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLWRvY3VtZW50LWxpc3QtY29udGFpbmVyXCI+XG4gICAgPGFkZi10b29sYmFyPlxuICAgICAgICA8YWRmLXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dCcmVhZGNydW1icygpXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiYWRmLXNlYXJjaC1yZXN1bHRzLWxhYmVsXCI+e3sgJ05PREVfU0VMRUNUT1IuU0VBUkNIX1JFU1VMVFMnIHwgdHJhbnNsYXRlIH19PC9oMj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGFkZi1kcm9wZG93bi1icmVhZGNydW1iICpuZ0lmPVwic2hvd0JyZWFkY3J1bWJzKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWNvbnRlbnQtbm9kZS1zZWxlY3Rvci1jb250ZW50LWJyZWFkY3J1bWJcIlxuICAgICAgICAgICAgICAgIChuYXZpZ2F0ZSk9XCJjbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cImRvY3VtZW50TGlzdFwiXG4gICAgICAgICAgICAgICAgW3Jvb3RJZF09XCJicmVhZGNydW1iUm9vdElkXCJcbiAgICAgICAgICAgICAgICBbdHJhbnNmb3JtXT1cImJyZWFkY3J1bWJUcmFuc2Zvcm1cIlxuICAgICAgICAgICAgICAgIFtmb2xkZXJOb2RlXT1cImJyZWFkY3J1bWJGb2xkZXJOb2RlXCJcbiAgICAgICAgICAgICAgICBbcm9vdF09XCJicmVhZGNydW1iRm9sZGVyVGl0bGVcIlxuICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbnRlbnQtbm9kZS1zZWxlY3Rvci1jb250ZW50LWJyZWFkY3J1bWJcIiAvPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOb2RlQ291bnRlclwiIFthZGYtbm9kZS1jb3VudGVyXT1cImdldFNlbGVjdGVkQ291bnQoKVwiIC8+XG4gICAgICAgIDwvYWRmLXRvb2xiYXItdGl0bGU+XG4gICAgPC9hZGYtdG9vbGJhcj5cblxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLWNvbnRlbnQtbGlzdFwiXG4gICAgICAgIFtjbGFzcy5hZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLWNvbnRlbnQtbGlzdC1zZWFyY2hMYXlvdXRdPVwic2hvd2luZ1NlYXJjaFJlc3VsdHNcIlxuICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJjb250ZW50LW5vZGUtc2VsZWN0b3ItY29udGVudC1saXN0XCI+XG4gICAgICAgIDxhZGYtZG9jdW1lbnQtbGlzdFxuICAgICAgICAgICAgI2RvY3VtZW50TGlzdFxuICAgICAgICAgICAgW2FkZi1oaWdobGlnaHRdPVwic2VhcmNoVGVybVwiXG4gICAgICAgICAgICBhZGYtaGlnaGxpZ2h0LXNlbGVjdG9yPVwiLmFkZi1uYW1lLWxvY2F0aW9uLWNlbGwtbmFtZVwiXG4gICAgICAgICAgICBbc2hvd0hlYWRlcl09XCJzaG93SGVhZGVyXCJcbiAgICAgICAgICAgIFtub2RlXT1cIm5vZGVQYWdpbmdcIlxuICAgICAgICAgICAgW3ByZXNlbGVjdE5vZGVzXT1cInByZXNlbGVjdGVkTm9kZXNcIlxuICAgICAgICAgICAgW21heEl0ZW1zXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgIFtyb3dGaWx0ZXJdPVwiX3Jvd0ZpbHRlclwiXG4gICAgICAgICAgICBbaW1hZ2VSZXNvbHZlcl09XCJpbWFnZVJlc29sdmVyXCJcbiAgICAgICAgICAgIFtjdXJyZW50Rm9sZGVySWRdPVwiZm9sZGVySWRUb1Nob3dcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZVwiXG4gICAgICAgICAgICBbY29udGV4dE1lbnVBY3Rpb25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtjb250ZW50QWN0aW9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICBbYWxsb3dEcm9wRmlsZXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3NvcnRpbmddPVwic29ydGluZ1wiXG4gICAgICAgICAgICBzb3J0aW5nTW9kZT1cInNlcnZlclwiXG4gICAgICAgICAgICBbd2hlcmVdPVwid2hlcmVcIlxuICAgICAgICAgICAgKGZvbGRlckNoYW5nZSk9XCJvbkZvbGRlckNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChyZWFkeSk9XCJvbkZvbGRlckxvYWRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChub2RlU2VsZWN0ZWQpPVwib25DdXJyZW50U2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgW2NsYXNzLmFkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItY29udGVudC1saXN0LWVtcHR5XT1cImVtcHR5TGlzdFwiXG4gICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJjb250ZW50LW5vZGUtc2VsZWN0b3ItZG9jdW1lbnQtbGlzdFwiPlxuXG4gICAgICAgICAgICA8YWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxkaXYgYXJpYS1saXZlPVwicG9saXRlXCI+e3sgJ05PREVfU0VMRUNUT1IuTk9fUkVTVUxUUycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvYWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8ZGF0YS1jb2x1bW5zPlxuICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtbiBrZXk9XCIkdGh1bWJuYWlsXCIgdHlwZT1cImltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICA8ZGF0YS1jb2x1bW4ga2V5PVwibmFtZVwiIHR5cGU9XCJ0ZXh0XCIgdGl0bGU9XCJBREYtRE9DVU1FTlQtTElTVC5MQVlPVVQuTkFNRVwiIGNsYXNzPVwiYWRmLWZ1bGwtd2lkdGggYWRmLWVsbGlwc2lzLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1jb250ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1uYW1lLWxvY2F0aW9uLWNlbGwgW3Jvd109XCJjb250ZXh0LnJvd1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kYXRhLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZGF0YS1jb2x1bW4ga2V5PVwibW9kaWZpZWRBdFwiIHR5cGU9XCJkYXRlXCIgdGl0bGU9XCJBREYtRE9DVU1FTlQtTElTVC5MQVlPVVQuTU9ESUZJRURfT05cIiBmb3JtYXQ9XCJ0aW1lQWdvXCIgY2xhc3M9XCJhZGYtY29udGVudC1zZWxlY3Rvci1tb2RpZmllZC1jZWxsXCIgLz5cbiAgICAgICAgICAgICAgICA8ZGF0YS1jb2x1bW4ga2V5PVwiY3JlYXRlZEJ5VXNlci5kaXNwbGF5TmFtZVwiIHR5cGU9XCJ0ZXh0XCIgdGl0bGU9XCJBREYtRE9DVU1FTlQtTElTVC5MQVlPVVQuQ1JFQVRFRF9CWVwiIGNsYXNzPVwiYWRmLWNvbnRlbnQtc2VsZWN0b3ItbW9kaWZpZXItY2VsbFwiIC8+XG4gICAgICAgICAgICAgICAgPGRhdGEtY29sdW1uIGtleT1cInZpc2liaWxpdHlcIiB0eXBlPVwidGV4dFwiIHRpdGxlPVwiQURGLURPQ1VNRU5ULUxJU1QuTEFZT1VULlNUQVRVU1wiIGNsYXNzPVwiYWRmLWNvbnRlbnQtc2VsZWN0b3ItdmlzaWJpbGl0eS1jZWxsXCIgLz5cbiAgICAgICAgICAgIDwvZGF0YS1jb2x1bW5zPlxuXG4gICAgICAgIDwvYWRmLWRvY3VtZW50LWxpc3Q+XG5cbiAgICAgICAgPGFkZi1pbmZpbml0ZS1wYWdpbmF0aW9uXG4gICAgICAgICAgICBbdGFyZ2V0XT1cInRhcmdldFwiXG4gICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nU2VhcmNoUmVzdWx0c1wiXG4gICAgICAgICAgICAobG9hZE1vcmUpPVwiZ2V0TmV4dFBhZ2VPZlNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbnRlbnQtbm9kZS1zZWxlY3Rvci1zZWFyY2gtcGFnaW5hdGlvblwiPlxuICAgICAgICAgICAge3sgJ0FERi1ET0NVTUVOVC1MSVNULkxBWU9VVC5MT0FEX01PUkUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYWRmLWluZmluaXRlLXBhZ2luYXRpb24+XG4gICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|