@linid-dm/directory-manager-client-core
Version:
Core package by providing a set of angular components for the Directory Manager app.
172 lines • 22.4 kB
JavaScript
import { __decorate } from "tslib";
/**
* Copyright (C) 2020-2024 Linagora
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version, provided you comply with the Additional Terms applicable for
* LinID Directory Manager software by LINAGORA pursuant to Section 7 of the GNU
* Affero General Public License, subsections (b), (c), and (e), pursuant to
* which these Appropriate Legal Notices must notably (i) retain the display of
* the "LinID™" trademark/logo at the top of the interface window, the display
* of the “You are using the Open Source and free version of LinID™, powered by
* Linagora © 2009–2013. Contribute to LinID R&D by subscribing to an Enterprise
* offer!” infobox and in the e-mails sent with the Program, notice appended to
* any type of outbound messages (e.g. e-mail and meeting requests) as well as
* in the LinID Directory Manager user interface, (ii) retain all hypertext
* links between LinID Directory Manager and https://linid.org/, as well as
* between LINAGORA and LINAGORA.com, and (iii) refrain from infringing LINAGORA
* intellectual property rights over its trademarks and commercial brands. Other
* Additional Terms apply, see <http://www.linagora.com/licenses/> for more
* details.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License and
* its applicable Additional Terms for LinID Directory Manager along with this
* program. If not, see <http://www.gnu.org/licenses/> for the GNU Affero
* General Public License version 3 and <http://www.linagora.com/licenses/> for
* the Additional Terms applicable to the LinID Directory Manager software.
*/
import { Injectable } from '@angular/core';
import { Action, Selector, State } from '@ngxs/store';
import { tap } from 'rxjs';
import { emptyJsTable, mergeInto, toJsTable, } from '../../helpers/jstable.helper';
import * as Error from '../error/error.actions';
import * as ExternalLinks from '../external-links/external-links.actions';
import * as Header from '../header/header.actions';
import * as Home from '../home/home.actions';
import * as LogoutDialog from '../logout-dialog/logout-dialog.actions';
import * as Ui from '../ui/ui.actions';
import * as User from '../user/user.actions';
import * as Configs from './configs.actions';
import * as i0 from "@angular/core";
import * as i1 from "../../services/configs.service";
import * as i2 from "@ngxs/store";
export function initConfigStateDefaultValues() {
return {
...emptyJsTable(),
isFetchingConfigs: false,
isFetchingConfigsError: false,
isFetchingConfigsSuccess: false,
};
}
let ConfigsState = class ConfigsState {
constructor(_configService, _store$) {
this._configService = _configService;
this._store$ = _store$;
}
static isFetchingConfigs(state) {
return state.isFetchingConfigs;
}
static isFetchingConfigsSuccess(state) {
return state.isFetchingConfigsSuccess;
}
static isFetchingConfigsError(state) {
return state.isFetchingConfigsError;
}
static getConfigsById(state) {
return state.byId;
}
static getConfigsAllIds(state) {
return state.allIds;
}
static getConfigsJsTable(state) {
return {
byId: state.byId,
allIds: state.allIds,
};
}
fetchConfigs(ctx) {
ctx.setState({
...ctx.getState(),
isFetchingConfigs: true,
isFetchingConfigsSuccess: false,
isFetchingConfigsError: false,
});
return this._configService.getConfigs().pipe(tap((config) => {
let actions = [];
if (!!config.externalLinks) {
const externalLinksConfig = config.externalLinks;
delete config.externalLinks;
actions.push(new ExternalLinks.SetExternalLinksConfig(externalLinksConfig));
}
const currentUserConfig = config.currentUser;
delete config.currentUser;
const homepageConfig = config.home;
delete config.home;
const headerConfig = config.header;
delete config.header;
const logoutDialogConfig = config.logoutDialog;
delete config.logoutDialog;
const genericErrorMessages = config.genericErrorMessages;
delete config.genericErrorMessages;
const genericAccessibility = config.genericAccessibility;
delete config.genericAccessibility;
actions.push(new User.SetCurrentUserConfig(currentUserConfig), new Home.SetHomepageConfig(homepageConfig), new Header.SetHeaderConfig(headerConfig), new LogoutDialog.SetLogoutDialogConfig(logoutDialogConfig), new Error.SetGenericErrorMessages(genericErrorMessages), new Ui.SetGenericAccessibility(genericAccessibility), new Configs.FetchConfigsSuccess({
configs: toJsTable(config),
}));
this._store$.dispatch(actions);
}));
}
fetchConfigsSuccess(ctx, action) {
ctx.setState({
...ctx.getState(),
...mergeInto({ ...ctx.getState() }, action.payload.configs),
isFetchingConfigs: false,
isFetchingConfigsSuccess: true,
});
}
fetchConfigsError(ctx) {
ctx.setState({
...ctx.getState(),
...emptyJsTable(),
isFetchingConfigs: false,
isFetchingConfigsError: true,
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ConfigsState, deps: [{ token: i1.ConfigsService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ConfigsState }); }
};
__decorate([
Action(Configs.FetchConfigs)
], ConfigsState.prototype, "fetchConfigs", null);
__decorate([
Action(Configs.FetchConfigsSuccess)
], ConfigsState.prototype, "fetchConfigsSuccess", null);
__decorate([
Action(Configs.FetchConfigsError)
], ConfigsState.prototype, "fetchConfigsError", null);
__decorate([
Selector()
], ConfigsState, "isFetchingConfigs", null);
__decorate([
Selector()
], ConfigsState, "isFetchingConfigsSuccess", null);
__decorate([
Selector()
], ConfigsState, "isFetchingConfigsError", null);
__decorate([
Selector()
], ConfigsState, "getConfigsById", null);
__decorate([
Selector()
], ConfigsState, "getConfigsAllIds", null);
__decorate([
Selector()
], ConfigsState, "getConfigsJsTable", null);
ConfigsState = __decorate([
State({
name: 'configs',
defaults: initConfigStateDefaultValues(),
})
], ConfigsState);
export { ConfigsState };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ConfigsState, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.ConfigsService }, { type: i2.Store }], propDecorators: { fetchConfigs: [], fetchConfigsSuccess: [], fetchConfigsError: [] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlncy5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xpYnMvY2xpZW50LWNvcmUvc3JjL2xpYi9zaGFyZWQvc3RhdGVzL2NvbmZpZ3MvY29uZmlncy5zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUVMLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sOEJBQThCLENBQUM7QUFhdEMsT0FBTyxLQUFLLEtBQUssTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssYUFBYSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sS0FBSyxNQUFNLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxLQUFLLElBQUksTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEtBQUssWUFBWSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxLQUFLLElBQUksTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEtBQUssT0FBTyxNQUFNLG1CQUFtQixDQUFDOzs7O0FBUTdDLE1BQU0sVUFBVSw0QkFBNEI7SUFDMUMsT0FBTztRQUNMLEdBQUcsWUFBWSxFQUFXO1FBQzFCLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsc0JBQXNCLEVBQUUsS0FBSztRQUM3Qix3QkFBd0IsRUFBRSxLQUFLO0tBQ2hDLENBQUM7QUFDSixDQUFDO0FBT00sSUFB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O2tEQUdWO0FBR007SUFETixRQUFRLEVBQUU7Z0RBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTt3Q0FLVjtBQUdNO0lBRE4sUUFBUSxFQUFFOzBDQUdWO0FBR007SUFETixRQUFRLEVBQUU7MkNBTVY7QUF0Q1UsWUFBWTtJQUx4QixLQUFLLENBQW9CO1FBQ3hCLElBQUksRUFBRSxTQUFTO1FBQ2YsUUFBUSxFQUFFLDRCQUE0QixFQUFFO0tBQ3pDLENBQUM7R0FFVyxZQUFZLENBK0d4Qjs7MkZBL0dZLFlBQVk7a0JBRHhCLFVBQVU7dUdBMENULFlBQVksTUFpRFosbUJBQW1CLE1BYW5CLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjQgTGluYWdvcmFcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlclxuICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueVxuICogbGF0ZXIgdmVyc2lvbiwgcHJvdmlkZWQgeW91IGNvbXBseSB3aXRoIHRoZSBBZGRpdGlvbmFsIFRlcm1zIGFwcGxpY2FibGUgZm9yXG4gKiBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBzb2Z0d2FyZSBieSBMSU5BR09SQSBwdXJzdWFudCB0byBTZWN0aW9uIDcgb2YgdGhlIEdOVVxuICogQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHN1YnNlY3Rpb25zIChiKSwgKGMpLCBhbmQgKGUpLCBwdXJzdWFudCB0b1xuICogd2hpY2ggdGhlc2UgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyBtdXN0IG5vdGFibHkgKGkpIHJldGFpbiB0aGUgZGlzcGxheSBvZlxuICogdGhlIFwiTGluSUTihKJcIiB0cmFkZW1hcmsvbG9nbyBhdCB0aGUgdG9wIG9mIHRoZSBpbnRlcmZhY2Ugd2luZG93LCB0aGUgZGlzcGxheVxuICogb2YgdGhlIOKAnFlvdSBhcmUgdXNpbmcgdGhlIE9wZW4gU291cmNlIGFuZCBmcmVlIHZlcnNpb24gb2YgTGluSUTihKIsIHBvd2VyZWQgYnlcbiAqIExpbmFnb3JhIMKpIDIwMDnigJMyMDEzLiBDb250cmlidXRlIHRvIExpbklEIFImRCBieSBzdWJzY3JpYmluZyB0byBhbiBFbnRlcnByaXNlXG4gKiBvZmZlciHigJ0gaW5mb2JveCBhbmQgaW4gdGhlIGUtbWFpbHMgc2VudCB3aXRoIHRoZSBQcm9ncmFtLCBub3RpY2UgYXBwZW5kZWQgdG9cbiAqIGFueSB0eXBlIG9mIG91dGJvdW5kIG1lc3NhZ2VzIChlLmcuIGUtbWFpbCBhbmQgbWVldGluZyByZXF1ZXN0cykgYXMgd2VsbCBhc1xuICogaW4gdGhlIExpbklEIERpcmVjdG9yeSBNYW5hZ2VyIHVzZXIgaW50ZXJmYWNlLCAoaWkpIHJldGFpbiBhbGwgaHlwZXJ0ZXh0XG4gKiBsaW5rcyBiZXR3ZWVuIExpbklEIERpcmVjdG9yeSBNYW5hZ2VyIGFuZCBodHRwczovL2xpbmlkLm9yZy8sIGFzIHdlbGwgYXNcbiAqIGJldHdlZW4gTElOQUdPUkEgYW5kIExJTkFHT1JBLmNvbSwgYW5kIChpaWkpIHJlZnJhaW4gZnJvbSBpbmZyaW5naW5nIExJTkFHT1JBXG4gKiBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG92ZXIgaXRzIHRyYWRlbWFya3MgYW5kIGNvbW1lcmNpYWwgYnJhbmRzLiBPdGhlclxuICogQWRkaXRpb25hbCBUZXJtcyBhcHBseSwgc2VlIDxodHRwOi8vd3d3LmxpbmFnb3JhLmNvbS9saWNlbnNlcy8+IGZvciBtb3JlXG4gKiBkZXRhaWxzLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1NcbiAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmVcbiAqIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZFxuICogaXRzIGFwcGxpY2FibGUgQWRkaXRpb25hbCBUZXJtcyBmb3IgTGluSUQgRGlyZWN0b3J5IE1hbmFnZXIgYWxvbmcgd2l0aCB0aGlzXG4gKiBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4gZm9yIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhbmQgPGh0dHA6Ly93d3cubGluYWdvcmEuY29tL2xpY2Vuc2VzLz4gZm9yXG4gKiB0aGUgQWRkaXRpb25hbCBUZXJtcyBhcHBsaWNhYmxlIHRvIHRoZSBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBzb2Z0d2FyZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgSnNUYWJsZSxcbiAgZW1wdHlKc1RhYmxlLFxuICBtZXJnZUludG8sXG4gIHRvSnNUYWJsZSxcbn0gZnJvbSAnLi4vLi4vaGVscGVycy9qc3RhYmxlLmhlbHBlcic7XG5pbXBvcnQge1xuICBJQ29uZmlnLFxuICBJQ29uZmlncyxcbiAgSUN1cnJlbnRVc2VyQ29uZmlnLFxuICBJRXh0ZXJuYWxMaW5rc0NvbmZpZyxcbiAgSUdlbmVyaWNBY2Nlc3NpYmlsaXR5Q29uZmlnLFxuICBJR2VuZXJpY0Vycm9yTWVzc2FnZXNDb25maWcsXG4gIElIZWFkZXJDb25maWcsXG4gIElIb21lcGFnZUNvbmZpZyxcbiAgSUxvZ291dERpYWxvZ0NvbmZpZyxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25maWdzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb25maWdzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZ3Muc2VydmljZSc7XG5pbXBvcnQgKiBhcyBFcnJvciBmcm9tICcuLi9lcnJvci9lcnJvci5hY3Rpb25zJztcbmltcG9ydCAqIGFzIEV4dGVybmFsTGlua3MgZnJvbSAnLi4vZXh0ZXJuYWwtbGlua3MvZXh0ZXJuYWwtbGlua3MuYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBIZWFkZXIgZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5hY3Rpb25zJztcbmltcG9ydCAqIGFzIEhvbWUgZnJvbSAnLi4vaG9tZS9ob21lLmFjdGlvbnMnO1xuaW1wb3J0ICogYXMgTG9nb3V0RGlhbG9nIGZyb20gJy4uL2xvZ291dC1kaWFsb2cvbG9nb3V0LWRpYWxvZy5hY3Rpb25zJztcbmltcG9ydCAqIGFzIFVpIGZyb20gJy4uL3VpL3VpLmFjdGlvbnMnO1xuaW1wb3J0ICogYXMgVXNlciBmcm9tICcuLi91c2VyL3VzZXIuYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBDb25maWdzIGZyb20gJy4vY29uZmlncy5hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdzU3RhdGVNb2RlbCBleHRlbmRzIEpzVGFibGU8SUNvbmZpZz4ge1xuICBpc0ZldGNoaW5nQ29uZmlnczogYm9vbGVhbjtcbiAgaXNGZXRjaGluZ0NvbmZpZ3NFcnJvcjogYm9vbGVhbjtcbiAgaXNGZXRjaGluZ0NvbmZpZ3NTdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdENvbmZpZ1N0YXRlRGVmYXVsdFZhbHVlcygpOiBDb25maWdzU3RhdGVNb2RlbCB7XG4gIHJldHVybiB7XG4gICAgLi4uZW1wdHlKc1RhYmxlPElDb25maWc+KCksXG4gICAgaXNGZXRjaGluZ0NvbmZpZ3M6IGZhbHNlLFxuICAgIGlzRmV0Y2hpbmdDb25maWdzRXJyb3I6IGZhbHNlLFxuICAgIGlzRmV0Y2hpbmdDb25maWdzU3VjY2VzczogZmFsc2UsXG4gIH07XG59XG5cbkBTdGF0ZTxDb25maWdzU3RhdGVNb2RlbD4oe1xuICBuYW1lOiAnY29uZmlncycsXG4gIGRlZmF1bHRzOiBpbml0Q29uZmlnU3RhdGVEZWZhdWx0VmFsdWVzKCksXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3NTdGF0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NvbmZpZ1NlcnZpY2U6IENvbmZpZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3N0b3JlJDogU3RvcmVcbiAgKSB7fVxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgaXNGZXRjaGluZ0NvbmZpZ3Moc3RhdGU6IENvbmZpZ3NTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmlzRmV0Y2hpbmdDb25maWdzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGlzRmV0Y2hpbmdDb25maWdzU3VjY2VzcyhzdGF0ZTogQ29uZmlnc1N0YXRlTW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUuaXNGZXRjaGluZ0NvbmZpZ3NTdWNjZXNzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGlzRmV0Y2hpbmdDb25maWdzRXJyb3Ioc3RhdGU6IENvbmZpZ3NTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmlzRmV0Y2hpbmdDb25maWdzRXJyb3I7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0Q29uZmlnc0J5SWQoc3RhdGU6IENvbmZpZ3NTdGF0ZU1vZGVsKToge1xuICAgIHJlYWRvbmx5IFtpZDogc3RyaW5nXTogSUNvbmZpZztcbiAgfSB7XG4gICAgcmV0dXJuIHN0YXRlLmJ5SWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0Q29uZmlnc0FsbElkcyhzdGF0ZTogQ29uZmlnc1N0YXRlTW9kZWwpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHN0YXRlLmFsbElkcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRDb25maWdzSnNUYWJsZShzdGF0ZTogQ29uZmlnc1N0YXRlTW9kZWwpOiBKc1RhYmxlPElDb25maWc+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYnlJZDogc3RhdGUuYnlJZCxcbiAgICAgIGFsbElkczogc3RhdGUuYWxsSWRzLFxuICAgIH07XG4gIH1cblxuICBAQWN0aW9uKENvbmZpZ3MuRmV0Y2hDb25maWdzKVxuICBmZXRjaENvbmZpZ3MoY3R4OiBTdGF0ZUNvbnRleHQ8Q29uZmlnc1N0YXRlTW9kZWw+KTogYW55IHtcbiAgICBjdHguc2V0U3RhdGUoe1xuICAgICAgLi4uY3R4LmdldFN0YXRlKCksXG4gICAgICBpc0ZldGNoaW5nQ29uZmlnczogdHJ1ZSxcbiAgICAgIGlzRmV0Y2hpbmdDb25maWdzU3VjY2VzczogZmFsc2UsXG4gICAgICBpc0ZldGNoaW5nQ29uZmlnc0Vycm9yOiBmYWxzZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnU2VydmljZS5nZXRDb25maWdzKCkucGlwZShcbiAgICAgIHRhcCgoY29uZmlnOiBJQ29uZmlncykgPT4ge1xuICAgICAgICBsZXQgYWN0aW9uczogYW55W10gPSBbXTtcbiAgICAgICAgaWYgKCEhY29uZmlnLmV4dGVybmFsTGlua3MpIHtcbiAgICAgICAgICBjb25zdCBleHRlcm5hbExpbmtzQ29uZmlnOiBJRXh0ZXJuYWxMaW5rc0NvbmZpZyA9XG4gICAgICAgICAgICBjb25maWcuZXh0ZXJuYWxMaW5rcztcbiAgICAgICAgICBkZWxldGUgY29uZmlnLmV4dGVybmFsTGlua3M7XG4gICAgICAgICAgYWN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgbmV3IEV4dGVybmFsTGlua3MuU2V0RXh0ZXJuYWxMaW5rc0NvbmZpZyhleHRlcm5hbExpbmtzQ29uZmlnKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudFVzZXJDb25maWc6IElDdXJyZW50VXNlckNvbmZpZyA9IGNvbmZpZy5jdXJyZW50VXNlcjtcbiAgICAgICAgZGVsZXRlIGNvbmZpZy5jdXJyZW50VXNlcjtcbiAgICAgICAgY29uc3QgaG9tZXBhZ2VDb25maWc6IElIb21lcGFnZUNvbmZpZyA9IGNvbmZpZy5ob21lO1xuICAgICAgICBkZWxldGUgY29uZmlnLmhvbWU7XG4gICAgICAgIGNvbnN0IGhlYWRlckNvbmZpZzogSUhlYWRlckNvbmZpZyA9IGNvbmZpZy5oZWFkZXI7XG4gICAgICAgIGRlbGV0ZSBjb25maWcuaGVhZGVyO1xuICAgICAgICBjb25zdCBsb2dvdXREaWFsb2dDb25maWc6IElMb2dvdXREaWFsb2dDb25maWcgPSBjb25maWcubG9nb3V0RGlhbG9nO1xuICAgICAgICBkZWxldGUgY29uZmlnLmxvZ291dERpYWxvZztcbiAgICAgICAgY29uc3QgZ2VuZXJpY0Vycm9yTWVzc2FnZXM6IElHZW5lcmljRXJyb3JNZXNzYWdlc0NvbmZpZyA9XG4gICAgICAgICAgY29uZmlnLmdlbmVyaWNFcnJvck1lc3NhZ2VzO1xuICAgICAgICBkZWxldGUgY29uZmlnLmdlbmVyaWNFcnJvck1lc3NhZ2VzO1xuICAgICAgICBjb25zdCBnZW5lcmljQWNjZXNzaWJpbGl0eTogSUdlbmVyaWNBY2Nlc3NpYmlsaXR5Q29uZmlnID1cbiAgICAgICAgICBjb25maWcuZ2VuZXJpY0FjY2Vzc2liaWxpdHk7XG4gICAgICAgIGRlbGV0ZSBjb25maWcuZ2VuZXJpY0FjY2Vzc2liaWxpdHk7XG4gICAgICAgIGFjdGlvbnMucHVzaChcbiAgICAgICAgICBuZXcgVXNlci5TZXRDdXJyZW50VXNlckNvbmZpZyhjdXJyZW50VXNlckNvbmZpZyksXG4gICAgICAgICAgbmV3IEhvbWUuU2V0SG9tZXBhZ2VDb25maWcoaG9tZXBhZ2VDb25maWcpLFxuICAgICAgICAgIG5ldyBIZWFkZXIuU2V0SGVhZGVyQ29uZmlnKGhlYWRlckNvbmZpZyksXG4gICAgICAgICAgbmV3IExvZ291dERpYWxvZy5TZXRMb2dvdXREaWFsb2dDb25maWcobG9nb3V0RGlhbG9nQ29uZmlnKSxcbiAgICAgICAgICBuZXcgRXJyb3IuU2V0R2VuZXJpY0Vycm9yTWVzc2FnZXMoZ2VuZXJpY0Vycm9yTWVzc2FnZXMpLFxuICAgICAgICAgIG5ldyBVaS5TZXRHZW5lcmljQWNjZXNzaWJpbGl0eShnZW5lcmljQWNjZXNzaWJpbGl0eSksXG4gICAgICAgICAgbmV3IENvbmZpZ3MuRmV0Y2hDb25maWdzU3VjY2Vzcyh7XG4gICAgICAgICAgICBjb25maWdzOiB0b0pzVGFibGU8SUNvbmZpZz4oY29uZmlnIGFzIHsgW2lkOiBzdHJpbmddOiBJQ29uZmlnIH0pLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3N0b3JlJC5kaXNwYXRjaChhY3Rpb25zKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ29uZmlncy5GZXRjaENvbmZpZ3NTdWNjZXNzKVxuICBmZXRjaENvbmZpZ3NTdWNjZXNzKFxuICAgIGN0eDogU3RhdGVDb250ZXh0PENvbmZpZ3NTdGF0ZU1vZGVsPixcbiAgICBhY3Rpb246IENvbmZpZ3MuRmV0Y2hDb25maWdzU3VjY2Vzc1xuICApOiB2b2lkIHtcbiAgICBjdHguc2V0U3RhdGUoe1xuICAgICAgLi4uY3R4LmdldFN0YXRlKCksXG4gICAgICAuLi5tZXJnZUludG8oeyAuLi5jdHguZ2V0U3RhdGUoKSB9LCBhY3Rpb24ucGF5bG9hZC5jb25maWdzKSxcbiAgICAgIGlzRmV0Y2hpbmdDb25maWdzOiBmYWxzZSxcbiAgICAgIGlzRmV0Y2hpbmdDb25maWdzU3VjY2VzczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ29uZmlncy5GZXRjaENvbmZpZ3NFcnJvcilcbiAgZmV0Y2hDb25maWdzRXJyb3IoY3R4OiBTdGF0ZUNvbnRleHQ8Q29uZmlnc1N0YXRlTW9kZWw+KTogdm9pZCB7XG4gICAgY3R4LnNldFN0YXRlKHtcbiAgICAgIC4uLmN0eC5nZXRTdGF0ZSgpLFxuICAgICAgLi4uZW1wdHlKc1RhYmxlPElDb25maWc+KCksXG4gICAgICBpc0ZldGNoaW5nQ29uZmlnczogZmFsc2UsXG4gICAgICBpc0ZldGNoaW5nQ29uZmlnc0Vycm9yOiB0cnVlLFxuICAgIH0pO1xuICB9XG59XG4iXX0=