UNPKG

@alfresco/adf-content-services

Version:
99 lines 17.2 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 { BasicPropertiesService } from './basic-properties.service'; import { of, iif, Subject } from 'rxjs'; import { PropertyGroupTranslatorService } from './property-groups-translator.service'; import { ContentMetadataConfigFactory } from './config/content-metadata-config.factory'; import { PropertyDescriptorsService } from './property-descriptors.service'; import { map, switchMap } from 'rxjs/operators'; import { ContentTypePropertiesService } from './content-type-property.service'; import * as i0 from "@angular/core"; import * as i1 from "./basic-properties.service"; import * as i2 from "./config/content-metadata-config.factory"; import * as i3 from "./property-groups-translator.service"; import * as i4 from "./property-descriptors.service"; import * as i5 from "./content-type-property.service"; export class ContentMetadataService { constructor(basicPropertiesService, contentMetadataConfigFactory, propertyGroupTranslatorService, propertyDescriptorsService, contentTypePropertyService) { this.basicPropertiesService = basicPropertiesService; this.contentMetadataConfigFactory = contentMetadataConfigFactory; this.propertyGroupTranslatorService = propertyGroupTranslatorService; this.propertyDescriptorsService = propertyDescriptorsService; this.contentTypePropertyService = contentTypePropertyService; this.error = new Subject(); } getBasicProperties(node) { return of(this.basicPropertiesService.getProperties(node)); } getContentTypeProperty(node) { return this.contentTypePropertyService.getContentTypeCardItem(node); } openConfirmDialog(changedProperties) { return this.contentTypePropertyService.openContentTypeDialogConfirm(changedProperties.nodeType); } getGroupedProperties(node, preset = 'default') { let groupedProperties = of([]); if (node.aspectNames) { let contentMetadataConfig; if (typeof preset === 'string') { contentMetadataConfig = this.contentMetadataConfigFactory.get(preset); } else { contentMetadataConfig = this.contentMetadataConfigFactory.createConfig(preset); } const groupNames = node.aspectNames.concat(node.nodeType).filter((groupName) => contentMetadataConfig.isGroupAllowed(groupName)); if (groupNames.length > 0) { groupedProperties = this.propertyDescriptorsService.load(groupNames).pipe(switchMap((groups) => iif(() => contentMetadataConfig.isIncludeAllEnabled(), of(contentMetadataConfig.appendAllPreset(groups).concat(contentMetadataConfig.reorganiseByConfig(groups))), of(contentMetadataConfig.reorganiseByConfig(groups)))), map((groups) => contentMetadataConfig.filterExcludedPreset(groups)), map((groups) => this.filterEmptyPreset(groups)), map((groups) => this.setTitleToNameIfNotSet(groups)), map((groups) => this.propertyGroupTranslatorService.translateToCardViewGroups(groups, node.properties, node.definition))); } } return groupedProperties; } setTitleToNameIfNotSet(propertyGroups) { const propertyGroupsTitles = []; propertyGroups.map((propertyGroup) => { const title = propertyGroup.title; const name = propertyGroup.name; if (title) { if (propertyGroupsTitles.includes(title)) { propertyGroup.title = name ? `${title} (${name})` : title; } else { propertyGroup.title = title; } propertyGroupsTitles.push(title); } else { propertyGroup.title = name; propertyGroupsTitles.push(name); } }); return propertyGroups; } filterEmptyPreset(propertyGroups) { return propertyGroups.filter((props) => props.properties.length); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ContentMetadataService, deps: [{ token: i1.BasicPropertiesService }, { token: i2.ContentMetadataConfigFactory }, { token: i3.PropertyGroupTranslatorService }, { token: i4.PropertyDescriptorsService }, { token: i5.ContentTypePropertiesService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ContentMetadataService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ContentMetadataService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.BasicPropertiesService }, { type: i2.ContentMetadataConfigFactory }, { type: i3.PropertyGroupTranslatorService }, { type: i4.PropertyDescriptorsService }, { type: i5.ContentTypePropertiesService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1tZXRhZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jb250ZW50LW1ldGFkYXRhL3NlcnZpY2VzL2NvbnRlbnQtbWV0YWRhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUd0RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7O0FBSS9FLE1BQU0sT0FBTyxzQkFBc0I7SUFHL0IsWUFDWSxzQkFBOEMsRUFDOUMsNEJBQTBELEVBQzFELDhCQUE4RCxFQUM5RCwwQkFBc0QsRUFDdEQsMEJBQXdEO1FBSnhELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUE4QjtRQUMxRCxtQ0FBOEIsR0FBOUIsOEJBQThCLENBQWdDO1FBQzlELCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE4QjtRQVBwRSxVQUFLLEdBQUcsSUFBSSxPQUFPLEVBQTJD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QUFhLENBQUMsSUFBSSxDQUFDO1lBQ2hDLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1IsSUFBSSxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQzlELENBQUM7cUJBQU0sQ0FBQztvQkFDSixhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDaEMsQ0FBQztnQkFDRCxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLGNBQXdDO1FBQ3RELE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRSxDQUFDOzhHQTlFUSxzQkFBc0I7a0hBQXRCLHNCQUFzQixjQUZuQixNQUFNOzsyRkFFVCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBCYXNpY1Byb3BlcnRpZXNTZXJ2aWNlIH0gZnJvbSAnLi9iYXNpYy1wcm9wZXJ0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIGlpZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvcGVydHlHcm91cFRyYW5zbGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi9wcm9wZXJ0eS1ncm91cHMtdHJhbnNsYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IENhcmRWaWV3SXRlbSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDYXJkVmlld0dyb3VwLCBPcmdhbmlzZWRQcm9wZXJ0eUdyb3VwLCBQcmVzZXRDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbnRlbnQtbWV0YWRhdGEuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb250ZW50TWV0YWRhdGFDb25maWdGYWN0b3J5IH0gZnJvbSAnLi9jb25maWcvY29udGVudC1tZXRhZGF0YS1jb25maWcuZmFjdG9yeSc7XG5pbXBvcnQgeyBQcm9wZXJ0eURlc2NyaXB0b3JzU2VydmljZSB9IGZyb20gJy4vcHJvcGVydHktZGVzY3JpcHRvcnMuc2VydmljZSc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRlbnRUeXBlUHJvcGVydGllc1NlcnZpY2UgfSBmcm9tICcuL2NvbnRlbnQtdHlwZS1wcm9wZXJ0eS5zZXJ2aWNlJztcbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudE1ldGFkYXRhU2VydmljZSB7XG4gICAgZXJyb3IgPSBuZXcgU3ViamVjdDx7IHN0YXR1c0NvZGU6IG51bWJlcjsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBiYXNpY1Byb3BlcnRpZXNTZXJ2aWNlOiBCYXNpY1Byb3BlcnRpZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnRNZXRhZGF0YUNvbmZpZ0ZhY3Rvcnk6IENvbnRlbnRNZXRhZGF0YUNvbmZpZ0ZhY3RvcnksXG4gICAgICAgIHByaXZhdGUgcHJvcGVydHlHcm91cFRyYW5zbGF0b3JTZXJ2aWNlOiBQcm9wZXJ0eUdyb3VwVHJhbnNsYXRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcHJvcGVydHlEZXNjcmlwdG9yc1NlcnZpY2U6IFByb3BlcnR5RGVzY3JpcHRvcnNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnRUeXBlUHJvcGVydHlTZXJ2aWNlOiBDb250ZW50VHlwZVByb3BlcnRpZXNTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgZ2V0QmFzaWNQcm9wZXJ0aWVzKG5vZGU6IE5vZGUpOiBPYnNlcnZhYmxlPENhcmRWaWV3SXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBvZih0aGlzLmJhc2ljUHJvcGVydGllc1NlcnZpY2UuZ2V0UHJvcGVydGllcyhub2RlKSk7XG4gICAgfVxuXG4gICAgZ2V0Q29udGVudFR5cGVQcm9wZXJ0eShub2RlOiBOb2RlKTogT2JzZXJ2YWJsZTxDYXJkVmlld0l0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50VHlwZVByb3BlcnR5U2VydmljZS5nZXRDb250ZW50VHlwZUNhcmRJdGVtKG5vZGUpO1xuICAgIH1cblxuICAgIG9wZW5Db25maXJtRGlhbG9nKGNoYW5nZWRQcm9wZXJ0aWVzKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFR5cGVQcm9wZXJ0eVNlcnZpY2Uub3BlbkNvbnRlbnRUeXBlRGlhbG9nQ29uZmlybShjaGFuZ2VkUHJvcGVydGllcy5ub2RlVHlwZSk7XG4gICAgfVxuXG4gICAgZ2V0R3JvdXBlZFByb3BlcnRpZXMobm9kZTogTm9kZSwgcHJlc2V0OiBzdHJpbmcgfCBQcmVzZXRDb25maWcgPSAnZGVmYXVsdCcpOiBPYnNlcnZhYmxlPENhcmRWaWV3R3JvdXBbXT4ge1xuICAgICAgICBsZXQgZ3JvdXBlZFByb3BlcnRpZXMgPSBvZihbXSk7XG5cbiAgICAgICAgaWYgKG5vZGUuYXNwZWN0TmFtZXMpIHtcbiAgICAgICAgICAgIGxldCBjb250ZW50TWV0YWRhdGFDb25maWc7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByZXNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50TWV0YWRhdGFDb25maWcgPSB0aGlzLmNvbnRlbnRNZXRhZGF0YUNvbmZpZ0ZhY3RvcnkuZ2V0KHByZXNldCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRNZXRhZGF0YUNvbmZpZyA9IHRoaXMuY29udGVudE1ldGFkYXRhQ29uZmlnRmFjdG9yeS5jcmVhdGVDb25maWcocHJlc2V0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZ3JvdXBOYW1lcyA9IG5vZGUuYXNwZWN0TmFtZXMuY29uY2F0KG5vZGUubm9kZVR5cGUpLmZpbHRlcigoZ3JvdXBOYW1lKSA9PiBjb250ZW50TWV0YWRhdGFDb25maWcuaXNHcm91cEFsbG93ZWQoZ3JvdXBOYW1lKSk7XG5cbiAgICAgICAgICAgIGlmIChncm91cE5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBncm91cGVkUHJvcGVydGllcyA9IHRoaXMucHJvcGVydHlEZXNjcmlwdG9yc1NlcnZpY2UubG9hZChncm91cE5hbWVzKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGdyb3VwcykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlpZihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiBjb250ZW50TWV0YWRhdGFDb25maWcuaXNJbmNsdWRlQWxsRW5hYmxlZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mKGNvbnRlbnRNZXRhZGF0YUNvbmZpZy5hcHBlbmRBbGxQcmVzZXQoZ3JvdXBzKS5jb25jYXQoY29udGVudE1ldGFkYXRhQ29uZmlnLnJlb3JnYW5pc2VCeUNvbmZpZyhncm91cHMpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YoY29udGVudE1ldGFkYXRhQ29uZmlnLnJlb3JnYW5pc2VCeUNvbmZpZyhncm91cHMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGdyb3VwcykgPT4gY29udGVudE1ldGFkYXRhQ29uZmlnLmZpbHRlckV4Y2x1ZGVkUHJlc2V0KGdyb3VwcykpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGdyb3VwcykgPT4gdGhpcy5maWx0ZXJFbXB0eVByZXNldChncm91cHMpKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChncm91cHMpID0+IHRoaXMuc2V0VGl0bGVUb05hbWVJZk5vdFNldChncm91cHMpKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChncm91cHMpID0+IHRoaXMucHJvcGVydHlHcm91cFRyYW5zbGF0b3JTZXJ2aWNlLnRyYW5zbGF0ZVRvQ2FyZFZpZXdHcm91cHMoZ3JvdXBzLCBub2RlLnByb3BlcnRpZXMsIG5vZGUuZGVmaW5pdGlvbikpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBncm91cGVkUHJvcGVydGllcztcbiAgICB9XG5cbiAgICBzZXRUaXRsZVRvTmFtZUlmTm90U2V0KHByb3BlcnR5R3JvdXBzOiBPcmdhbmlzZWRQcm9wZXJ0eUdyb3VwW10pOiBPcmdhbmlzZWRQcm9wZXJ0eUdyb3VwW10ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eUdyb3Vwc1RpdGxlcyA9IFtdO1xuICAgICAgICBwcm9wZXJ0eUdyb3Vwcy5tYXAoKHByb3BlcnR5R3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gcHJvcGVydHlHcm91cC50aXRsZTtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBwcm9wZXJ0eUdyb3VwLm5hbWU7XG4gICAgICAgICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlHcm91cHNUaXRsZXMuaW5jbHVkZXModGl0bGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5R3JvdXAudGl0bGUgPSBuYW1lID8gYCR7dGl0bGV9ICgke25hbWV9KWAgOiB0aXRsZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUdyb3VwLnRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHByb3BlcnR5R3JvdXBzVGl0bGVzLnB1c2godGl0bGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUdyb3VwLnRpdGxlID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUdyb3Vwc1RpdGxlcy5wdXNoKG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHByb3BlcnR5R3JvdXBzO1xuICAgIH1cblxuICAgIGZpbHRlckVtcHR5UHJlc2V0KHByb3BlcnR5R3JvdXBzOiBPcmdhbmlzZWRQcm9wZXJ0eUdyb3VwW10pOiBPcmdhbmlzZWRQcm9wZXJ0eUdyb3VwW10ge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlHcm91cHMuZmlsdGVyKChwcm9wcykgPT4gcHJvcHMucHJvcGVydGllcy5sZW5ndGgpO1xuICAgIH1cbn1cbiJdfQ==