UNPKG

@alfresco/adf-content-services

Version:
136 lines 18.8 kB
/*! * @license * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { Injectable } from '@angular/core'; import { AppConfigService } from '@alfresco/adf-core'; import { BaseQueryBuilderService } from './base-query-builder.service'; import { filter } from 'rxjs/operators'; import { NodesApiService } from '../../common/services/nodes-api.service'; import { AlfrescoApiService } from '../../services/alfresco-api.service'; import * as i0 from "@angular/core"; import * as i1 from "@alfresco/adf-core"; import * as i2 from "../../services/alfresco-api.service"; import * as i3 from "../../common/services/nodes-api.service"; export class SearchHeaderQueryBuilderService extends BaseQueryBuilderService { constructor(appConfig, alfrescoApiService, nodeApiService) { super(appConfig, alfrescoApiService); this.nodeApiService = nodeApiService; this.customSources = ['-trashcan-', '-sharedlinks-', '-sites-', '-mysites-', '-favorites-', '-recent-', '-my-']; this.activeFilters = []; this.updated.pipe(filter((query) => !!query)).subscribe(() => { this.execute(); }); } isFilterServiceActive() { return true; } loadConfiguration() { return this.appConfig.get('search-headers'); } setupCurrentPagination(maxItems, skipCount) { if (!this.paging || (this.paging && this.paging.maxItems !== maxItems) || this.paging.skipCount !== skipCount) { this.paging = { maxItems, skipCount }; this.execute(); } } setActiveFilter(columnActivated, filterValue) { const selectedFilter = this.activeFilters.find((activeFilter) => activeFilter.key === columnActivated); if (!selectedFilter) { this.activeFilters.push({ key: columnActivated, value: filterValue }); } else { selectedFilter.value = filterValue; } } resetActiveFilters() { this.activeFilters = []; } getActiveFilters() { return this.activeFilters; } isNoFilterActive() { return this.activeFilters.length === 0; } removeActiveFilter(columnRemoved) { const filterIndex = this.activeFilters.map((activeFilter) => activeFilter.key).indexOf(columnRemoved); if (filterIndex >= 0) { this.activeFilters.splice(filterIndex, 1); } } setSorting(dataSorting) { this.sorting = []; dataSorting.forEach((columnSorting) => { const fieldValue = this.getSortingFieldFromColumnName(columnSorting.key); if (fieldValue) { const optionAscending = columnSorting.direction.toLocaleLowerCase() === 'asc'; const type = fieldValue === 'score' ? 'SCORE' : 'FIELD'; const currentSort = { key: columnSorting.key, label: 'current', type, field: fieldValue, ascending: optionAscending }; this.sorting.push(currentSort); } }); this.execute(); } getSortingFieldFromColumnName(columnName) { if (this.sortingOptions.length > 0) { const sortOption = this.sortingOptions.find((option) => option.key === columnName); return sortOption ? sortOption.field : ''; } return ''; } getCategoryForColumn(columnKey) { let foundCategory = null; if (this.categories !== null) { foundCategory = this.categories.find((category) => category.columnKey === columnKey); } return foundCategory; } setCurrentRootFolderId(currentFolderId) { const alreadyAddedFilter = this.filterQueries.find((filterQueries) => filterQueries.query.includes(currentFolderId)); if (alreadyAddedFilter !== undefined) { this.filterQueries = []; } this.filterQueries = [ { query: `PARENT:"workspace://SpacesStore/${currentFolderId}"` } ]; this.execute(); } isCustomSourceNode(currentNodeId) { return this.customSources.includes(currentNodeId); } getNodeIdForCustomSource(customSourceId) { return this.nodeApiService.getNode(customSourceId); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SearchHeaderQueryBuilderService, deps: [{ token: i1.AppConfigService }, { token: i2.AlfrescoApiService }, { token: i3.NodesApiService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SearchHeaderQueryBuilderService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SearchHeaderQueryBuilderService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.AppConfigService }, { type: i2.AlfrescoApiService }, { type: i3.NodesApiService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWhlYWRlci1xdWVyeS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3NlYXJjaC9zZXJ2aWNlcy9zZWFyY2gtaGVhZGVyLXF1ZXJ5LWJ1aWxkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLG9CQUFvQixDQUFDO0FBRW5FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR3ZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7O0FBS3pFLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSx1QkFBdUI7SUFLeEUsWUFBWSxTQUEyQixFQUFFLGtCQUFzQyxFQUFVLGNBQStCO1FBQ3BILEtBQUssQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQURnRCxtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFKaEgsa0JBQWEsR0FBRyxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRW5ILGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUsvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7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QUc7WUFDakI7Z0JBQ0ksS0FBSyxFQUFFLG1DQUFtQyxlQUFlLEdBQUc7YUFDL0Q7U0FDSixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxhQUFxQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxjQUFzQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7OEdBdEhRLCtCQUErQjtrSEFBL0IsK0JBQStCLGNBRjVCLE1BQU07OzJGQUVULCtCQUErQjtrQkFIM0MsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UsIERhdGFTb3J0aW5nIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IFNlYXJjaENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvc2VhcmNoLWNvbmZpZ3VyYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhc2VRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLXF1ZXJ5LWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hDYXRlZ29yeSB9IGZyb20gJy4uL21vZGVscy9zZWFyY2gtY2F0ZWdvcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlYXJjaFNvcnRpbmdEZWZpbml0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3NlYXJjaC1zb3J0aW5nLWRlZmluaXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlclNlYXJjaCB9IGZyb20gJy4uL21vZGVscy9maWx0ZXItc2VhcmNoLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOb2Rlc0FwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvbm9kZXMtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxmcmVzY28tYXBpLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEhlYWRlclF1ZXJ5QnVpbGRlclNlcnZpY2UgZXh0ZW5kcyBCYXNlUXVlcnlCdWlsZGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSBjdXN0b21Tb3VyY2VzID0gWyctdHJhc2hjYW4tJywgJy1zaGFyZWRsaW5rcy0nLCAnLXNpdGVzLScsICctbXlzaXRlcy0nLCAnLWZhdm9yaXRlcy0nLCAnLXJlY2VudC0nLCAnLW15LSddO1xuXG4gICAgYWN0aXZlRmlsdGVyczogRmlsdGVyU2VhcmNoW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSwgYWxmcmVzY29BcGlTZXJ2aWNlOiBBbGZyZXNjb0FwaVNlcnZpY2UsIHByaXZhdGUgbm9kZUFwaVNlcnZpY2U6IE5vZGVzQXBpU2VydmljZSkge1xuICAgICAgICBzdXBlcihhcHBDb25maWcsIGFsZnJlc2NvQXBpU2VydmljZSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVkLnBpcGUoZmlsdGVyKChxdWVyeSkgPT4gISFxdWVyeSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRmlsdGVyU2VydmljZUFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgbG9hZENvbmZpZ3VyYXRpb24oKTogU2VhcmNoQ29uZmlndXJhdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcENvbmZpZy5nZXQ8U2VhcmNoQ29uZmlndXJhdGlvbj4oJ3NlYXJjaC1oZWFkZXJzJyk7XG4gICAgfVxuXG4gICAgc2V0dXBDdXJyZW50UGFnaW5hdGlvbihtYXhJdGVtczogbnVtYmVyLCBza2lwQ291bnQ6IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXMucGFnaW5nIHx8ICh0aGlzLnBhZ2luZyAmJiB0aGlzLnBhZ2luZy5tYXhJdGVtcyAhPT0gbWF4SXRlbXMpIHx8IHRoaXMucGFnaW5nLnNraXBDb3VudCAhPT0gc2tpcENvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2luZyA9IHsgbWF4SXRlbXMsIHNraXBDb3VudCB9O1xuICAgICAgICAgICAgdGhpcy5leGVjdXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRBY3RpdmVGaWx0ZXIoY29sdW1uQWN0aXZhdGVkOiBzdHJpbmcsIGZpbHRlclZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXIgPSB0aGlzLmFjdGl2ZUZpbHRlcnMuZmluZCgoYWN0aXZlRmlsdGVyKSA9PiBhY3RpdmVGaWx0ZXIua2V5ID09PSBjb2x1bW5BY3RpdmF0ZWQpO1xuICAgICAgICBpZiAoIXNlbGVjdGVkRmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAga2V5OiBjb2x1bW5BY3RpdmF0ZWQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZpbHRlclZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyLnZhbHVlID0gZmlsdGVyVmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldEFjdGl2ZUZpbHRlcnMoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycyA9IFtdO1xuICAgIH1cblxuICAgIGdldEFjdGl2ZUZpbHRlcnMoKTogRmlsdGVyU2VhcmNoW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVGaWx0ZXJzO1xuICAgIH1cblxuICAgIGlzTm9GaWx0ZXJBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZUZpbHRlcnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHJlbW92ZUFjdGl2ZUZpbHRlcihjb2x1bW5SZW1vdmVkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmlsdGVySW5kZXggPSB0aGlzLmFjdGl2ZUZpbHRlcnMubWFwKChhY3RpdmVGaWx0ZXIpID0+IGFjdGl2ZUZpbHRlci5rZXkpLmluZGV4T2YoY29sdW1uUmVtb3ZlZCk7XG4gICAgICAgIGlmIChmaWx0ZXJJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlcnMuc3BsaWNlKGZpbHRlckluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNvcnRpbmcoZGF0YVNvcnRpbmc6IERhdGFTb3J0aW5nW10pIHtcbiAgICAgICAgdGhpcy5zb3J0aW5nID0gW107XG4gICAgICAgIGRhdGFTb3J0aW5nLmZvckVhY2goKGNvbHVtblNvcnRpbmc6IERhdGFTb3J0aW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5nZXRTb3J0aW5nRmllbGRGcm9tQ29sdW1uTmFtZShjb2x1bW5Tb3J0aW5nLmtleSk7XG4gICAgICAgICAgICBpZiAoZmllbGRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkFzY2VuZGluZyA9IGNvbHVtblNvcnRpbmcuZGlyZWN0aW9uLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09ICdhc2MnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBmaWVsZFZhbHVlID09PSAnc2NvcmUnID8gJ1NDT1JFJyA6ICdGSUVMRCc7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNvcnQ6IFNlYXJjaFNvcnRpbmdEZWZpbml0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtblNvcnRpbmcua2V5LFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2N1cnJlbnQnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogZmllbGRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXNjZW5kaW5nOiBvcHRpb25Bc2NlbmRpbmdcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuc29ydGluZy5wdXNoKGN1cnJlbnRTb3J0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5leGVjdXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTb3J0aW5nRmllbGRGcm9tQ29sdW1uTmFtZShjb2x1bW5OYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuc29ydGluZ09wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3Qgc29ydE9wdGlvbiA9IHRoaXMuc29ydGluZ09wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSBjb2x1bW5OYW1lKTtcbiAgICAgICAgICAgIHJldHVybiBzb3J0T3B0aW9uID8gc29ydE9wdGlvbi5maWVsZCA6ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBnZXRDYXRlZ29yeUZvckNvbHVtbihjb2x1bW5LZXk6IHN0cmluZyk6IFNlYXJjaENhdGVnb3J5IHtcbiAgICAgICAgbGV0IGZvdW5kQ2F0ZWdvcnkgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5jYXRlZ29yaWVzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBmb3VuZENhdGVnb3J5ID0gdGhpcy5jYXRlZ29yaWVzLmZpbmQoKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS5jb2x1bW5LZXkgPT09IGNvbHVtbktleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvdW5kQ2F0ZWdvcnk7XG4gICAgfVxuXG4gICAgc2V0Q3VycmVudFJvb3RGb2xkZXJJZChjdXJyZW50Rm9sZGVySWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhbHJlYWR5QWRkZWRGaWx0ZXIgPSB0aGlzLmZpbHRlclF1ZXJpZXMuZmluZCgoZmlsdGVyUXVlcmllcykgPT4gZmlsdGVyUXVlcmllcy5xdWVyeS5pbmNsdWRlcyhjdXJyZW50Rm9sZGVySWQpKTtcblxuICAgICAgICBpZiAoYWxyZWFkeUFkZGVkRmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyUXVlcmllcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWx0ZXJRdWVyaWVzID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHF1ZXJ5OiBgUEFSRU5UOlwid29ya3NwYWNlOi8vU3BhY2VzU3RvcmUvJHtjdXJyZW50Rm9sZGVySWR9XCJgXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5leGVjdXRlKCk7XG4gICAgfVxuXG4gICAgaXNDdXN0b21Tb3VyY2VOb2RlKGN1cnJlbnROb2RlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21Tb3VyY2VzLmluY2x1ZGVzKGN1cnJlbnROb2RlSWQpO1xuICAgIH1cblxuICAgIGdldE5vZGVJZEZvckN1c3RvbVNvdXJjZShjdXN0b21Tb3VyY2VJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxOb2RlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVBcGlTZXJ2aWNlLmdldE5vZGUoY3VzdG9tU291cmNlSWQpO1xuICAgIH1cbn1cbiJdfQ==