@provoly/dashboard 0.21.1 → 0.21.3
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/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +3 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +13 -18
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +2 -2
- package/esm2022/lib/core/components/chips-selector/chips-selector.component.mjs +111 -0
- package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +105 -0
- package/esm2022/lib/core/components/share/share.model.mjs +1 -1
- package/esm2022/lib/core/components/share/share.module.mjs +9 -6
- package/esm2022/lib/core/core.module.mjs +5 -1
- package/esm2022/lib/core/i18n/en.translations.mjs +24 -1
- package/esm2022/lib/core/i18n/fr.translations.mjs +24 -1
- package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
- package/esm2022/lib/core/public-api.mjs +3 -1
- package/esm2022/lib/core/store/config/config.actions.mjs +4 -2
- package/esm2022/lib/core/store/config/config.effects.mjs +9 -2
- package/esm2022/lib/core/store/config/config.reducer.mjs +6 -2
- package/esm2022/lib/core/store/config/config.selectors.mjs +4 -2
- package/esm2022/lib/core/store/config/config.service.mjs +6 -1
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +33 -65
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +4 -5
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +1 -1
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +2 -3
- package/esm2022/lib/dashboard/store/manifest.service.mjs +4 -4
- package/esm2022/presentation/components/presentation.component.mjs +7 -8
- package/esm2022/presentation/i18n/en.translations.mjs +2 -2
- package/esm2022/presentation/i18n/fr.translations.mjs +2 -2
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/components/restitution/restitution.component.mjs +7 -4
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +3 -3
- package/esm2022/restitution/i18n/en.translations.mjs +1 -6
- package/esm2022/restitution/i18n/fr.translations.mjs +1 -6
- package/esm2022/restitution/style/css.component.mjs +2 -2
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +17 -20
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +8 -8
- package/fesm2022/provoly-dashboard-admin.mjs +10 -15
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +10 -11
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +10 -17
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +23 -26
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +974 -743
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/chips-selector/chips-selector.component.d.ts +38 -0
- package/lib/core/components/share/group-share/group-share.component.d.ts +33 -0
- package/lib/core/components/share/share.model.d.ts +5 -0
- package/lib/core/components/share/share.module.d.ts +8 -5
- package/lib/core/core.module.d.ts +24 -23
- package/lib/core/i18n/en.translations.d.ts +23 -0
- package/lib/core/i18n/fr.translations.d.ts +23 -0
- package/lib/core/model/manifest.interface.d.ts +1 -2
- package/lib/core/public-api.d.ts +2 -0
- package/lib/core/store/config/config.actions.d.ts +8 -1
- package/lib/core/store/config/config.effects.d.ts +4 -0
- package/lib/core/store/config/config.reducer.d.ts +2 -0
- package/lib/core/store/config/config.selectors.d.ts +1 -0
- package/lib/core/store/config/config.service.d.ts +2 -0
- package/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.d.ts +10 -23
- package/lib/dashboard/store/dashboard.actions.d.ts +2 -3
- package/lib/dashboard/store/manifest.service.d.ts +2 -3
- package/package.json +31 -31
- package/presentation/components/presentation.component.d.ts +2 -3
- package/presentation/style/_o-pry-presentation.scss +7 -4
- package/restitution/components/restitution/restitution.component.d.ts +1 -0
- package/restitution/i18n/en.translations.d.ts +0 -5
- package/restitution/i18n/fr.translations.d.ts +0 -5
- package/restitution/style/_o-restitution.scss +16 -1
- package/styles/components/_m-presentation-title.scss +1 -0
- package/styles/components/_o-pry-stepper.scss +0 -4
- package/toolbox/components/filter-settings/filter-settings.component.d.ts +1 -1
- package/toolbox/components/save-view/save-view.component.d.ts +3 -3
|
@@ -128,10 +128,15 @@ export class ConfigService {
|
|
|
128
128
|
}));
|
|
129
129
|
}));
|
|
130
130
|
}
|
|
131
|
+
getAccessGroups() {
|
|
132
|
+
return this.store
|
|
133
|
+
.select(ConfigSelectors.refUrl)
|
|
134
|
+
.pipe(mergeMap((url) => this.httpClient.get(encodeURI(`${url}/groups`))));
|
|
135
|
+
}
|
|
131
136
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigService, deps: [{ token: i1.HttpClient }, { token: i2.Store }, { token: i3.PrySnackbarService }, { token: i4.PryI18nService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
132
137
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigService }); }
|
|
133
138
|
}
|
|
134
139
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigService, decorators: [{
|
|
135
140
|
type: Injectable
|
|
136
141
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Store }, { type: i3.PrySnackbarService }, { type: i4.PryI18nService }]; } });
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9zdG9yZS9jb25maWcvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFTckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQztBQUN0QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztBQUczQyxNQUFNLE9BQU8sYUFBYTthQUNqQixTQUFJLEdBQUcsSUFBSSxDQUFDO0lBRW5CLFlBQ1UsVUFBc0IsRUFDdEIsS0FBaUIsRUFDakIsUUFBNEIsRUFDNUIsZ0JBQWdDO1FBSGhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWdCO0lBQ3ZDLENBQUM7SUFFSjs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUs7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Q0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDMUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUN6QjthQUNGLENBQUM7WUFDRixPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3BDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUNyRixNQUFNLFFBQVEsR0FBYTtvQkFDekIsR0FBRyxFQUFFLFVBQVU7b0JBQ2YsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE1BQU0sRUFBRSxhQUFhO29CQUNyQixJQUFJLEVBQUUsV0FBVztvQkFDakIsT0FBTyxFQUFFLGFBQWE7b0JBQ3RCLEtBQUssRUFBRSxRQUFRO2lCQUNoQixDQUFDO2dCQUNGLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0EzSVUsYUFBYTttSEFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIG1hcCwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcnlTbmFja2JhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9pMThuL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBXaWRnZXQgfSBmcm9tICcuLi8uLi9tb2RlbC93aWRnZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IERFRkFVTFRfTkFNRURfUVVFUllfSUQsIEVYUExPUkVfTkFNRURfUVVFUllfSUQgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDb25maWdTZWxlY3RvcnMgfSBmcm9tICcuL2NvbmZpZy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgQmFja2VuZFZlcnNpb24sIEZyb250ZW5kVmVyc2lvbiwgVmVyc2lvbnMgfSBmcm9tICcuL3ZlcnNpb25zLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1Db250ZW50IHtcbiAgZG9tYWluOiBzdHJpbmc7XG4gIG9DbGFzczogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBTWU1CT0xfRE9NQUlOID0gJ3N5bWJvbCc7XG5leHBvcnQgY29uc3QgVEFCTEVfQVRUUl9ET01BSU4gPSAndGFibGVBdHRyJztcbmV4cG9ydCBjb25zdCBUT09MVElQU19ET01BSU4gPSAndG9vbHRpcHMnO1xuZXhwb3J0IGNvbnN0IEZJTFRFUlNfRE9NQUlOID0gJ2ZpbHRlcnMnO1xuZXhwb3J0IGNvbnN0IFRJTEVfQVRUUl9ET01BSU4gPSAndGlsZUF0dHInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZSB7XG4gIHN0YXRpYyB3YXJuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBQcnlTbmFja2JhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgaWNvbnMgcnVsZXMgZm9yIGVhY2ggY2xhc3NcbiAgICovXG4gIGdldEFsbENsYXNzUGFyYW1zKCk6IE9ic2VydmFibGU8UGFyYW1Db250ZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKVxuICAgICAgLnBpcGUobWVyZ2VNYXAoKHVybCkgPT4gdGhpcy5odHRwQ2xpZW50LmdldDxQYXJhbUNvbnRlbnRbXT4oZW5jb2RlVVJJKGAke3VybH0vY3VzdG9tY2xhc3MvYWxsL3BhcmFtYCkpKSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgZGVmaW5pdGlvbnMgZnJvbSBzcGVjaWZpZWQgZG9tYWluXG4gICAqIEBwYXJhbSBkZWZpbml0aW9uc1xuICAgKiBAcGFyYW0gZG9tYWluXG4gICAqL1xuICBzYXZlRGVmaW5pdGlvbnMoZGVmaW5pdGlvbnM6IGFueSwgZG9tYWluOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWRbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICAvLyBMYXVuY2hpbmcgYSByZXF1ZXN0IGZvciBlYWNoIGluZGljYXRlZCBjbGFzcywgaW4gcGFyYWxsZWxcbiAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBPYmplY3Qua2V5cyhkZWZpbml0aW9ucylcbiAgICAgICAgICAuZmlsdGVyKChjbGFzc0lkKSA9PiBjbGFzc0lkICE9PSAnZGVmYXVsdCcpXG4gICAgICAgICAgLm1hcCgoY2xhc3NJZCkgPT5cbiAgICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5wdXQ8dm9pZD4oXG4gICAgICAgICAgICAgIGVuY29kZVVSSShgJHt1cmx9L2N1c3RvbWNsYXNzL2lkLyR7Y2xhc3NJZH0vcGFyYW0vJHtkb21haW59YCksXG4gICAgICAgICAgICAgIGRlZmluaXRpb25zW2NsYXNzSWRdXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKHJlcXVlc3RzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGEgd2lkZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIHdpZGdldFxuICAgKi9cbiAgc2F2ZVdpZGdldCh3aWRnZXQ6IFdpZGdldCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIC4uLndpZGdldCxcbiAgICAgIGRhdGFzb3VyY2U6IHdpZGdldC5kYXRhc291cmNlLmZpbHRlcigoZHMpID0+ICFbREVGQVVMVF9OQU1FRF9RVUVSWV9JRCwgRVhQTE9SRV9OQU1FRF9RVUVSWV9JRF0uaW5jbHVkZXMoZHMpKVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnJlZlVybClcbiAgICAgIC5waXBlKG1lcmdlTWFwKCh1cmwpID0+IHRoaXMuaHR0cENsaWVudC5wb3N0PHZvaWQ+KGVuY29kZVVSSShgJHt1cmx9L3dpZGdldC9jYXRhbG9nYCksIHBhcmFtcykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSB3aWRnZXQgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gaWRcbiAgICovXG4gIGRlbGV0ZVJlc3RpdHV0aW9uKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKVxuICAgICAgLnBpcGUobWVyZ2VNYXAoKHVybCkgPT4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZTx2b2lkPihlbmNvZGVVUkkoYCR7dXJsfS93aWRnZXQvY2F0YWxvZy9pZC8ke2lkfWApKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHdpZGdldHMgZnJvbSBjYXRhbG9nXG4gICAqL1xuICBnZXRBbGxXaWRnZXRzKCk6IE9ic2VydmFibGU8V2lkZ2V0W10+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnJlZlVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHRoaXMuaHR0cENsaWVudC5nZXQ8V2lkZ2V0W10+KGVuY29kZVVSSShgJHt1cmx9L3dpZGdldC9jYXRhbG9nYCkpKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgLy8gQSBjbGllbnQtc2lkZSBvciBuZXR3b3JrIGVycm9yIG9jY3VycmVkXG4gICAgICAgICAgaWYgKENvbmZpZ1NlcnZpY2Uud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQSBmcm9udGVuZCBlcnJvciBvY2N1cnJlZDonLCBlcnJvci5lcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS5tYW5pZmVzdC5nZXQuZXJyb3JGcm9udCcsIHsgbXNnOiBlcnJvci5lcnJvci5tZXNzYWdlIH0pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlIGJhY2tlbmQgcmV0dXJuZWQgYW4gdW5zdWNjZXNzZnVsIHJlc3BvbnNlIGNvZGUuXG4gICAgICAgICAgaWYgKENvbmZpZ1NlcnZpY2Uud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQmFja2VuZCByZXR1cm5lZCBjb2RlICR7ZXJyb3Iuc3RhdHVzfSwgYm9keSB3YXM6ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IuZXJyb3IpfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXJyb3IuY29kZSAhPT0gMjA0KSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS5tYW5pZmVzdC5nZXQuZXJyb3JCYWNrJywge1xuICAgICAgICAgICAgICAgIGNvZGU6IGVycm9yLnN0YXR1c1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVCYWNrZW5kVmVyc2lvbkVycm9yKG9iczogT2JzZXJ2YWJsZTxCYWNrZW5kVmVyc2lvbj4pOiBPYnNlcnZhYmxlPEJhY2tlbmRWZXJzaW9uPiB7XG4gICAgcmV0dXJuIG9icy5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2Yoe30pKSk7XG4gIH1cblxuICBnZXRBbGxWZXJzaW9ucygpOiBPYnNlcnZhYmxlPFZlcnNpb25zPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnJlZlVybCksXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMuZGF0YVVybCksXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVwbGF5VXJsKSxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5leGVjVXJsKSxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy50cmFuc2ZvVXJsKVxuICAgIF0pLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoW3JlZiwgZGF0YSwgcmVwbGF5LCBleGVjLCB0cmFuc2ZvXSkgPT4ge1xuICAgICAgICBjb25zdCBhbGxWZXJzaW9uczogT2JzZXJ2YWJsZTxCYWNrZW5kVmVyc2lvbiB8IEZyb250ZW5kVmVyc2lvbj5bXSA9IFtcbiAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3IodGhpcy5odHRwQ2xpZW50LmdldDxCYWNrZW5kVmVyc2lvbj4oZW5jb2RlVVJJKGAke3JlZn0vYWJvdXQvdmVyc2lvbmApKSksXG4gICAgICAgICAgdGhpcy5oYW5kbGVCYWNrZW5kVmVyc2lvbkVycm9yKHRoaXMuaHR0cENsaWVudC5nZXQ8QmFja2VuZFZlcnNpb24+KGVuY29kZVVSSShgJHtkYXRhfS9hYm91dC92ZXJzaW9uYCkpKSxcbiAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3IodGhpcy5odHRwQ2xpZW50LmdldDxCYWNrZW5kVmVyc2lvbj4oZW5jb2RlVVJJKGAke3JlcGxheX0vYWJvdXQvdmVyc2lvbmApKSksXG4gICAgICAgICAgdGhpcy5oYW5kbGVCYWNrZW5kVmVyc2lvbkVycm9yKHRoaXMuaHR0cENsaWVudC5nZXQ8QmFja2VuZFZlcnNpb24+KGVuY29kZVVSSShgJHtleGVjfS9hYm91dC92ZXJzaW9uYCkpKSxcbiAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3IodGhpcy5odHRwQ2xpZW50LmdldDxCYWNrZW5kVmVyc2lvbj4oZW5jb2RlVVJJKGAke3RyYW5zZm99L2Fib3V0L3ZlcnNpb25gKSkpLFxuICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQ8c3RyaW5nPihlbmNvZGVVUkkoYC9hc3NldHMvcHJ5LnZlcnNpb25gKSkucGlwZShcbiAgICAgICAgICAgIG1hcCgodmVyc2lvbikgPT4gKHZlcnNpb24gPyB7IGxpYlZlcnNpb246IHZlcnNpb24gfSA6IHt9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHt9KSlcbiAgICAgICAgICApXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGFsbFZlcnNpb25zKS5waXBlKFxuICAgICAgICAgIG1hcCgoW3JlZlZlcnNpb24sIGRhdGFWZXJzaW9uLCByZXBsYXlWZXJzaW9uLCBleGVjVmVyc2lvbiwgdHJhbmZvVmVyc2lvbiwgZnJvbnRlbmRdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uczogVmVyc2lvbnMgPSB7XG4gICAgICAgICAgICAgIHJlZjogcmVmVmVyc2lvbixcbiAgICAgICAgICAgICAgZGF0YTogZGF0YVZlcnNpb24sXG4gICAgICAgICAgICAgIHJlcGxheTogcmVwbGF5VmVyc2lvbixcbiAgICAgICAgICAgICAgZXhlYzogZXhlY1ZlcnNpb24sXG4gICAgICAgICAgICAgIHRyYW5zZm86IHRyYW5mb1ZlcnNpb24sXG4gICAgICAgICAgICAgIGZyb250OiBmcm9udGVuZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiB2ZXJzaW9ucztcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9zdG9yZS9jb25maWcvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFVckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQztBQUN0QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztBQUczQyxNQUFNLE9BQU8sYUFBYTthQUNqQixTQUFJLEdBQUcsSUFBSSxDQUFDO0lBRW5CLFlBQ1UsVUFBc0IsRUFDdEIsS0FBaUIsRUFDakIsUUFBNEIsRUFDNUIsZ0JBQWdDO1FBSGhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWdCO0lBQ3ZDLENBQUM7SUFFSjs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUs7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Q0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDMUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUN6QjthQUNGLENBQUM7WUFDRixPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3BDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUNyRixNQUFNLFFBQVEsR0FBYTtvQkFDekIsR0FBRyxFQUFFLFVBQVU7b0JBQ2YsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE1BQU0sRUFBRSxhQUFhO29CQUNyQixJQUFJLEVBQUUsV0FBVztvQkFDakIsT0FBTyxFQUFFLGFBQWE7b0JBQ3RCLEtBQUssRUFBRSxRQUFRO2lCQUNoQixDQUFDO2dCQUNGLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ2QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7YUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQVUsU0FBUyxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDOytHQWpKVSxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBjb21iaW5lTGF0ZXN0LCBmb3JrSm9pbiwgbWFwLCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByeVNuYWNrYmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBQcnlJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldCB9IGZyb20gJy4uLy4uL21vZGVsL3dpZGdldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgREVGQVVMVF9OQU1FRF9RVUVSWV9JRCwgRVhQTE9SRV9OQU1FRF9RVUVSWV9JRCB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2guY29uc3RhbnRzJztcbmltcG9ydCB7IENvbmZpZ1NlbGVjdG9ycyB9IGZyb20gJy4vY29uZmlnLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBCYWNrZW5kVmVyc2lvbiwgRnJvbnRlbmRWZXJzaW9uLCBWZXJzaW9ucyB9IGZyb20gJy4vdmVyc2lvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyb3VwIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9zaGFyZS9zaGFyZS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1Db250ZW50IHtcbiAgZG9tYWluOiBzdHJpbmc7XG4gIG9DbGFzczogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBTWU1CT0xfRE9NQUlOID0gJ3N5bWJvbCc7XG5leHBvcnQgY29uc3QgVEFCTEVfQVRUUl9ET01BSU4gPSAndGFibGVBdHRyJztcbmV4cG9ydCBjb25zdCBUT09MVElQU19ET01BSU4gPSAndG9vbHRpcHMnO1xuZXhwb3J0IGNvbnN0IEZJTFRFUlNfRE9NQUlOID0gJ2ZpbHRlcnMnO1xuZXhwb3J0IGNvbnN0IFRJTEVfQVRUUl9ET01BSU4gPSAndGlsZUF0dHInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZSB7XG4gIHN0YXRpYyB3YXJuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBQcnlTbmFja2JhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgaWNvbnMgcnVsZXMgZm9yIGVhY2ggY2xhc3NcbiAgICovXG4gIGdldEFsbENsYXNzUGFyYW1zKCk6IE9ic2VydmFibGU8UGFyYW1Db250ZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKVxuICAgICAgLnBpcGUobWVyZ2VNYXAoKHVybCkgPT4gdGhpcy5odHRwQ2xpZW50LmdldDxQYXJhbUNvbnRlbnRbXT4oZW5jb2RlVVJJKGAke3VybH0vY3VzdG9tY2xhc3MvYWxsL3BhcmFtYCkpKSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgZGVmaW5pdGlvbnMgZnJvbSBzcGVjaWZpZWQgZG9tYWluXG4gICAqIEBwYXJhbSBkZWZpbml0aW9uc1xuICAgKiBAcGFyYW0gZG9tYWluXG4gICAqL1xuICBzYXZlRGVmaW5pdGlvbnMoZGVmaW5pdGlvbnM6IGFueSwgZG9tYWluOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWRbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICAvLyBMYXVuY2hpbmcgYSByZXF1ZXN0IGZvciBlYWNoIGluZGljYXRlZCBjbGFzcywgaW4gcGFyYWxsZWxcbiAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBPYmplY3Qua2V5cyhkZWZpbml0aW9ucylcbiAgICAgICAgICAuZmlsdGVyKChjbGFzc0lkKSA9PiBjbGFzc0lkICE9PSAnZGVmYXVsdCcpXG4gICAgICAgICAgLm1hcCgoY2xhc3NJZCkgPT5cbiAgICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5wdXQ8dm9pZD4oXG4gICAgICAgICAgICAgIGVuY29kZVVSSShgJHt1cmx9L2N1c3RvbWNsYXNzL2lkLyR7Y2xhc3NJZH0vcGFyYW0vJHtkb21haW59YCksXG4gICAgICAgICAgICAgIGRlZmluaXRpb25zW2NsYXNzSWRdXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKHJlcXVlc3RzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGEgd2lkZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIHdpZGdldFxuICAgKi9cbiAgc2F2ZVdpZGdldCh3aWRnZXQ6IFdpZGdldCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIC4uLndpZGdldCxcbiAgICAgIGRhdGFzb3VyY2U6IHdpZGdldC5kYXRhc291cmNlLmZpbHRlcigoZHMpID0+ICFbREVGQVVMVF9OQU1FRF9RVUVSWV9JRCwgRVhQTE9SRV9OQU1FRF9RVUVSWV9JRF0uaW5jbHVkZXMoZHMpKVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnJlZlVybClcbiAgICAgIC5waXBlKG1lcmdlTWFwKCh1cmwpID0+IHRoaXMuaHR0cENsaWVudC5wb3N0PHZvaWQ+KGVuY29kZVVSSShgJHt1cmx9L3dpZGdldC9jYXRhbG9nYCksIHBhcmFtcykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSB3aWRnZXQgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gaWRcbiAgICovXG4gIGRlbGV0ZVJlc3RpdHV0aW9uKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKVxuICAgICAgLnBpcGUobWVyZ2VNYXAoKHVybCkgPT4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZTx2b2lkPihlbmNvZGVVUkkoYCR7dXJsfS93aWRnZXQvY2F0YWxvZy9pZC8ke2lkfWApKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHdpZGdldHMgZnJvbSBjYXRhbG9nXG4gICAqL1xuICBnZXRBbGxXaWRnZXRzKCk6IE9ic2VydmFibGU8V2lkZ2V0W10+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnJlZlVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHRoaXMuaHR0cENsaWVudC5nZXQ8V2lkZ2V0W10+KGVuY29kZVVSSShgJHt1cmx9L3dpZGdldC9jYXRhbG9nYCkpKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgLy8gQSBjbGllbnQtc2lkZSBvciBuZXR3b3JrIGVycm9yIG9jY3VycmVkXG4gICAgICAgICAgaWYgKENvbmZpZ1NlcnZpY2Uud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQSBmcm9udGVuZCBlcnJvciBvY2N1cnJlZDonLCBlcnJvci5lcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS5tYW5pZmVzdC5nZXQuZXJyb3JGcm9udCcsIHsgbXNnOiBlcnJvci5lcnJvci5tZXNzYWdlIH0pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlIGJhY2tlbmQgcmV0dXJuZWQgYW4gdW5zdWNjZXNzZnVsIHJlc3BvbnNlIGNvZGUuXG4gICAgICAgICAgaWYgKENvbmZpZ1NlcnZpY2Uud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQmFja2VuZCByZXR1cm5lZCBjb2RlICR7ZXJyb3Iuc3RhdHVzfSwgYm9keSB3YXM6ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IuZXJyb3IpfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXJyb3IuY29kZSAhPT0gMjA0KSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS5tYW5pZmVzdC5nZXQuZXJyb3JCYWNrJywge1xuICAgICAgICAgICAgICAgIGNvZGU6IGVycm9yLnN0YXR1c1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVCYWNrZW5kVmVyc2lvbkVycm9yKG9iczogT2JzZXJ2YWJsZTxCYWNrZW5kVmVyc2lvbj4pOiBPYnNlcnZhYmxlPEJhY2tlbmRWZXJzaW9uPiB7XG4gICAgcmV0dXJuIG9icy5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2Yoe30pKSk7XG4gIH1cblxuICBnZXRBbGxWZXJzaW9ucygpOiBPYnNlcnZhYmxlPFZlcnNpb25zPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnJlZlVybCksXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMuZGF0YVVybCksXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVwbGF5VXJsKSxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5leGVjVXJsKSxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy50cmFuc2ZvVXJsKVxuICAgIF0pLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoW3JlZiwgZGF0YSwgcmVwbGF5LCBleGVjLCB0cmFuc2ZvXSkgPT4ge1xuICAgICAgICBjb25zdCBhbGxWZXJzaW9uczogT2JzZXJ2YWJsZTxCYWNrZW5kVmVyc2lvbiB8IEZyb250ZW5kVmVyc2lvbj5bXSA9IFtcbiAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3IodGhpcy5odHRwQ2xpZW50LmdldDxCYWNrZW5kVmVyc2lvbj4oZW5jb2RlVVJJKGAke3JlZn0vYWJvdXQvdmVyc2lvbmApKSksXG4gICAgICAgICAgdGhpcy5oYW5kbGVCYWNrZW5kVmVyc2lvbkVycm9yKHRoaXMuaHR0cENsaWVudC5nZXQ8QmFja2VuZFZlcnNpb24+KGVuY29kZVVSSShgJHtkYXRhfS9hYm91dC92ZXJzaW9uYCkpKSxcbiAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3IodGhpcy5odHRwQ2xpZW50LmdldDxCYWNrZW5kVmVyc2lvbj4oZW5jb2RlVVJJKGAke3JlcGxheX0vYWJvdXQvdmVyc2lvbmApKSksXG4gICAgICAgICAgdGhpcy5oYW5kbGVCYWNrZW5kVmVyc2lvbkVycm9yKHRoaXMuaHR0cENsaWVudC5nZXQ8QmFja2VuZFZlcnNpb24+KGVuY29kZVVSSShgJHtleGVjfS9hYm91dC92ZXJzaW9uYCkpKSxcbiAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3IodGhpcy5odHRwQ2xpZW50LmdldDxCYWNrZW5kVmVyc2lvbj4oZW5jb2RlVVJJKGAke3RyYW5zZm99L2Fib3V0L3ZlcnNpb25gKSkpLFxuICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQ8c3RyaW5nPihlbmNvZGVVUkkoYC9hc3NldHMvcHJ5LnZlcnNpb25gKSkucGlwZShcbiAgICAgICAgICAgIG1hcCgodmVyc2lvbikgPT4gKHZlcnNpb24gPyB7IGxpYlZlcnNpb246IHZlcnNpb24gfSA6IHt9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHt9KSlcbiAgICAgICAgICApXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGFsbFZlcnNpb25zKS5waXBlKFxuICAgICAgICAgIG1hcCgoW3JlZlZlcnNpb24sIGRhdGFWZXJzaW9uLCByZXBsYXlWZXJzaW9uLCBleGVjVmVyc2lvbiwgdHJhbmZvVmVyc2lvbiwgZnJvbnRlbmRdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uczogVmVyc2lvbnMgPSB7XG4gICAgICAgICAgICAgIHJlZjogcmVmVmVyc2lvbixcbiAgICAgICAgICAgICAgZGF0YTogZGF0YVZlcnNpb24sXG4gICAgICAgICAgICAgIHJlcGxheTogcmVwbGF5VmVyc2lvbixcbiAgICAgICAgICAgICAgZXhlYzogZXhlY1ZlcnNpb24sXG4gICAgICAgICAgICAgIHRyYW5zZm86IHRyYW5mb1ZlcnNpb24sXG4gICAgICAgICAgICAgIGZyb250OiBmcm9udGVuZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiB2ZXJzaW9ucztcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0QWNjZXNzR3JvdXBzKCk6IE9ic2VydmFibGU8R3JvdXBbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yZWZVcmwpXG4gICAgICAucGlwZShtZXJnZU1hcCgodXJsKSA9PiB0aGlzLmh0dHBDbGllbnQuZ2V0PEdyb3VwW10+KGVuY29kZVVSSShgJHt1cmx9L2dyb3Vwc2ApKSkpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,43 +1,34 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, combineLatest, map } from 'rxjs';
|
|
3
3
|
import { UNKNOWN_DATASOURCE } from '../../../../core/components/translate-id/translate-id.pipe';
|
|
4
4
|
import { DataSourceSelectors } from '../../../../core/store/data-source/data-source.selectors';
|
|
5
|
-
import {
|
|
6
|
-
import { DatasourceUtils } from '../../../../core/store/data-source/datasource-utils';
|
|
5
|
+
import { ChipsSelectorComponent } from '../../../../core/components/chips-selector/chips-selector.component';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
import * as i1 from "@ngrx/store";
|
|
9
|
-
import * as i2 from "
|
|
10
|
-
import * as i3 from "@angular/
|
|
11
|
-
import * as i4 from "
|
|
12
|
-
import * as i5 from "../../../../core/components/
|
|
8
|
+
import * as i2 from "../../../../core/i18n/i18n.service";
|
|
9
|
+
import * as i3 from "@angular/common";
|
|
10
|
+
import * as i4 from "@angular/forms";
|
|
11
|
+
import * as i5 from "../../../../core/components/icon/icon.component";
|
|
13
12
|
import * as i6 from "../../../../core/i18n/i18n.pipe";
|
|
14
|
-
export class DatasourceSelectorComponent extends
|
|
13
|
+
export class DatasourceSelectorComponent extends ChipsSelectorComponent {
|
|
14
|
+
set usedItems(items) {
|
|
15
|
+
this._usedItems$.next(items);
|
|
16
|
+
}
|
|
15
17
|
set manifest(manifest) {
|
|
16
18
|
this.manifest$.next(manifest);
|
|
17
19
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
constructor(store, cdr) {
|
|
22
|
-
super();
|
|
20
|
+
constructor(store, cdr, i18n) {
|
|
21
|
+
super(cdr, i18n);
|
|
23
22
|
this.store = store;
|
|
24
|
-
this.
|
|
25
|
-
this.cancel = new EventEmitter();
|
|
26
|
-
this.validated = new EventEmitter();
|
|
27
|
-
this.previousTab = new EventEmitter();
|
|
28
|
-
this.nextTab = new EventEmitter();
|
|
29
|
-
this.datasourcesChanged = new EventEmitter();
|
|
23
|
+
this._usedItems$ = new BehaviorSubject([]);
|
|
30
24
|
this.manifest$ = new BehaviorSubject(null);
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
this.idToNameDatasource = {};
|
|
34
|
-
this.allDataSources$ = combineLatest([
|
|
35
|
-
this.manifest$,
|
|
36
|
-
this.store.select(DataSourceSelectors.getDataSourcesSorted)
|
|
37
|
-
]).pipe(map(([manifest, allNamedQueries]) => {
|
|
25
|
+
this.subscriptions.add(combineLatest([this.manifest$, this.store.select(DataSourceSelectors.getDataSourcesSorted)])
|
|
26
|
+
.pipe(map(([manifest, allNamedQueries]) => {
|
|
38
27
|
let dss = [...allNamedQueries];
|
|
39
28
|
if (!!manifest) {
|
|
40
|
-
const manifestNamedQueries = Array.isArray(manifest.datasource)
|
|
29
|
+
const manifestNamedQueries = Array.isArray(manifest.datasource)
|
|
30
|
+
? manifest.datasource
|
|
31
|
+
: [manifest.datasource];
|
|
41
32
|
manifestNamedQueries.forEach((manifestNamedQuery) => {
|
|
42
33
|
const alreadyPresent = !!allNamedQueries.find((nq) => nq.id === manifestNamedQuery);
|
|
43
34
|
if (!alreadyPresent) {
|
|
@@ -46,52 +37,29 @@ export class DatasourceSelectorComponent extends SubscriptionnerDirective {
|
|
|
46
37
|
});
|
|
47
38
|
}
|
|
48
39
|
return dss;
|
|
40
|
+
}))
|
|
41
|
+
.subscribe((datasources) => {
|
|
42
|
+
this.items$.next(datasources);
|
|
49
43
|
}));
|
|
50
|
-
this.subscriptions.add(this.allDataSources$.subscribe((allDs) => allDs.forEach((ds) => (this.idToNameDatasource[ds.id] = ds.name))));
|
|
51
44
|
this.usedDatasources$ = combineLatest([
|
|
52
|
-
this.
|
|
45
|
+
this._usedItems$,
|
|
53
46
|
this.store.select(DataSourceSelectors.getDataSources)
|
|
54
|
-
]).pipe(map(([
|
|
55
|
-
.map((
|
|
47
|
+
]).pipe(map(([usedDatasources, datasources]) => usedDatasources
|
|
48
|
+
.map((usedDatasource) => datasources.find((ds) => ds.id === usedDatasource.id) ?? usedDatasource)
|
|
56
49
|
.map((nq) => (typeof nq !== 'string' ? nq : UNKNOWN_DATASOURCE(nq)))));
|
|
57
|
-
this.usedDatasources$.subscribe((
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
toogleDataSource(id) {
|
|
61
|
-
if (!this.usedDatasourceIds$.getValue().includes(id)) {
|
|
62
|
-
this.usedDatasourceIds$.next([...this.usedDatasourceIds$.getValue(), id]);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
this.usedDatasourceIds$.next(this.usedDatasourceIds$.getValue().filter((dsId) => dsId !== id));
|
|
66
|
-
}
|
|
67
|
-
this.cdr.detectChanges();
|
|
68
|
-
}
|
|
69
|
-
isGeo(ds) {
|
|
70
|
-
return DatasourceUtils.isGeo(ds);
|
|
71
|
-
}
|
|
72
|
-
search($event) {
|
|
73
|
-
this.search$.next($event);
|
|
74
|
-
this.cdr.detectChanges();
|
|
50
|
+
this.subscriptions.add(this.usedDatasources$.subscribe((usedDatasources) => {
|
|
51
|
+
this.usedItems$.next(usedDatasources);
|
|
52
|
+
}));
|
|
75
53
|
}
|
|
76
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatasourceSelectorComponent, deps: [{ token: i1.Store }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatasourceSelectorComponent, selector: "pry-datasource-selector", inputs: {
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatasourceSelectorComponent, deps: [{ token: i1.Store }, { token: i0.ChangeDetectorRef }, { token: i2.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatasourceSelectorComponent, selector: "pry-datasource-selector", inputs: { usedItems: "usedItems", manifest: "manifest" }, usesInheritance: true, ngImport: i0, template: "<div class=\"m-namedqueries-wrapper\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog_namedqueries\">\n <div class=\"o-widget__search\">\n <input\n id=\"catalog-search\"\n (keydown.shift.tab)=\"previousTab.emit()\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.components.searchData' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"search($event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n <div *ngIf=\"((usedItems$ | async) ?? []).length > 0; else noItems\">\n <h4 class=\"a-h4\">{{ translationStringBase + 'selection' | i18n }}</h4>\n <div>\n <ul class=\"o-datasources__list o-datasources__list--selected\">\n <li *ngFor=\"let item of usedItems$ | async\" class=\"o-datasources__item\">\n <button class=\"o-datasources__card -selected\" (click)=\"toggleItemSelection(item)\" type=\"button\">\n <p>\n {{ getItemLabel(item) }}\n </p>\n <pry-icon *ngIf=\"isGeo(item)\" iconSvg=\"globe\"></pry-icon>\n <div class=\"a-btn a-btn--primary a-btn--icon-only\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"17\" [height]=\"17\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ translationStringBase + 'unselectItem' | i18n }}</span>\n </div>\n </button>\n </li>\n </ul>\n </div>\n </div>\n <ng-template #noItems>\n <h4 class=\"a-h4\">{{ translationStringBase + 'noItemSelected' | i18n }}</h4>\n </ng-template>\n <h4 class=\"a-h4\">{{ translationStringBase + 'select' | i18n }}</h4>\n <div class=\"o-datasources__main\">\n <ul class=\"o-datasources__list\">\n <li *ngFor=\"let item of unusedItems$ | async\" class=\"o-datasources__item\">\n <button class=\"o-datasources__card\" (click)=\"toggleItemSelection(item)\">\n <span class=\"u-visually-hidden\">{{ translationStringBase + 'selectItem' | i18n }}</span>\n <p class=\"a-p\">{{ getItemLabel(item) }}</p>\n <pry-icon *ngIf=\"isGeo(item)\" iconSvg=\"globe\"></pry-icon>\n </button>\n </li>\n </ul>\n </div>\n <div *ngIf=\"showActionButtons\" class=\"m-btn-group o-datasources__bottom\">\n <button type=\"button\" (click)=\"cancel.emit()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"button\"\n (click)=\"validated.emit()\"\n #validate\n (keydown.tab)=\"nextTab.emit()\"\n class=\"a-btn a-btn--primary\"\n >\n {{ '@pry.toolbox.manifest.validated' | i18n }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.I18nPipe, name: "i18n" }] }); }
|
|
78
56
|
}
|
|
79
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatasourceSelectorComponent, decorators: [{
|
|
80
58
|
type: Component,
|
|
81
|
-
args: [{ selector: 'pry-datasource-selector', template: "<div class=\"m-namedqueries-wrapper\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog_namedqueries\">\n <div class=\"o-widget__search\">\n <input\n id=\"catalog-search\"\n (keydown.shift.tab)=\"previousTab.emit()\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'
|
|
82
|
-
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
|
59
|
+
args: [{ selector: 'pry-datasource-selector', template: "<div class=\"m-namedqueries-wrapper\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog_namedqueries\">\n <div class=\"o-widget__search\">\n <input\n id=\"catalog-search\"\n (keydown.shift.tab)=\"previousTab.emit()\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.components.searchData' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"search($event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n <div *ngIf=\"((usedItems$ | async) ?? []).length > 0; else noItems\">\n <h4 class=\"a-h4\">{{ translationStringBase + 'selection' | i18n }}</h4>\n <div>\n <ul class=\"o-datasources__list o-datasources__list--selected\">\n <li *ngFor=\"let item of usedItems$ | async\" class=\"o-datasources__item\">\n <button class=\"o-datasources__card -selected\" (click)=\"toggleItemSelection(item)\" type=\"button\">\n <p>\n {{ getItemLabel(item) }}\n </p>\n <pry-icon *ngIf=\"isGeo(item)\" iconSvg=\"globe\"></pry-icon>\n <div class=\"a-btn a-btn--primary a-btn--icon-only\">\n <pry-icon [iconSvg]=\"'close'\" [width]=\"17\" [height]=\"17\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ translationStringBase + 'unselectItem' | i18n }}</span>\n </div>\n </button>\n </li>\n </ul>\n </div>\n </div>\n <ng-template #noItems>\n <h4 class=\"a-h4\">{{ translationStringBase + 'noItemSelected' | i18n }}</h4>\n </ng-template>\n <h4 class=\"a-h4\">{{ translationStringBase + 'select' | i18n }}</h4>\n <div class=\"o-datasources__main\">\n <ul class=\"o-datasources__list\">\n <li *ngFor=\"let item of unusedItems$ | async\" class=\"o-datasources__item\">\n <button class=\"o-datasources__card\" (click)=\"toggleItemSelection(item)\">\n <span class=\"u-visually-hidden\">{{ translationStringBase + 'selectItem' | i18n }}</span>\n <p class=\"a-p\">{{ getItemLabel(item) }}</p>\n <pry-icon *ngIf=\"isGeo(item)\" iconSvg=\"globe\"></pry-icon>\n </button>\n </li>\n </ul>\n </div>\n <div *ngIf=\"showActionButtons\" class=\"m-btn-group o-datasources__bottom\">\n <button type=\"button\" (click)=\"cancel.emit()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"button\"\n (click)=\"validated.emit()\"\n #validate\n (keydown.tab)=\"nextTab.emit()\"\n class=\"a-btn a-btn--primary\"\n >\n {{ '@pry.toolbox.manifest.validated' | i18n }}\n </button>\n </div>\n</div>\n" }]
|
|
60
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i0.ChangeDetectorRef }, { type: i2.PryI18nService }]; }, propDecorators: { usedItems: [{
|
|
83
61
|
type: Input
|
|
84
|
-
}],
|
|
62
|
+
}], manifest: [{
|
|
85
63
|
type: Input
|
|
86
|
-
}], cancel: [{
|
|
87
|
-
type: Output
|
|
88
|
-
}], validated: [{
|
|
89
|
-
type: Output
|
|
90
|
-
}], previousTab: [{
|
|
91
|
-
type: Output
|
|
92
|
-
}], nextTab: [{
|
|
93
|
-
type: Output
|
|
94
|
-
}], datasourcesChanged: [{
|
|
95
|
-
type: Output
|
|
96
64
|
}] } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhc291cmNlLXNlbGVjdG9yL2RhdGFzb3VyY2Utc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL3dpZGdldHMvZGF0YXNvdXJjZS1zZWxlY3Rvci9kYXRhc291cmNlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUdoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMvRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scURBQXFELENBQUM7Ozs7Ozs7O0FBTXRGLE1BQU0sT0FBTywyQkFBNEIsU0FBUSx3QkFBd0I7SUFDdkUsSUFBYSxRQUFRLENBQUMsUUFBK0I7UUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQWEsYUFBYSxDQUFDLGFBQXVCO1FBQ2hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsYUFB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QUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDaEc7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsRUFBd0I7UUFDNUIsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBVztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7K0dBakZVLDJCQUEyQjttR0FBM0IsMkJBQTJCLHlTQ2R4QyxrcEZBOERBOzs0RkRoRGEsMkJBQTJCO2tCQUp2QyxTQUFTOytCQUNFLHlCQUF5Qjs0SEFJdEIsUUFBUTtzQkFBcEIsS0FBSztnQkFJTyxhQUFhO3NCQUF6QixLQUFLO2dCQUlJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVOS05PV05fREFUQVNPVVJDRSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvY29tcG9uZW50cy90cmFuc2xhdGUtaWQvdHJhbnNsYXRlLWlkLnBpcGUnO1xuaW1wb3J0IHsgV2lkZ2V0TWFuaWZlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsL21hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXRhc2V0LCBEYXRhU291cmNlLCBOYW1lZFF1ZXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9kYXRhLXNvdXJjZS9kYXRhLXNvdXJjZS5tb2RlbCc7XG5pbXBvcnQgeyBEYXRhU291cmNlU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9kYXRhLXNvdXJjZS9kYXRhLXNvdXJjZS5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vc3Vic2NyaXB0aW9ubmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXRhc291cmNlVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2RhdGEtc291cmNlL2RhdGFzb3VyY2UtdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktZGF0YXNvdXJjZS1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhc291cmNlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhc291cmNlU2VsZWN0b3JDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBASW5wdXQoKSBzZXQgbWFuaWZlc3QobWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0IHwgbnVsbCkge1xuICAgIHRoaXMubWFuaWZlc3QkLm5leHQobWFuaWZlc3QpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRhdGFzb3VyY2VJZHMoZGF0YXNvdXJjZUlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnVzZWREYXRhc291cmNlSWRzJC5uZXh0KGRhdGFzb3VyY2VJZHMpO1xuICB9XG5cbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHZhbGlkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHByZXZpb3VzVGFiID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbmV4dFRhYiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRhdGFzb3VyY2VzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVNvdXJjZVtdPigpO1xuXG4gIG1hbmlmZXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2lkZ2V0TWFuaWZlc3QgfCBudWxsPihudWxsKTtcbiAgdXNlZERhdGFzb3VyY2VJZHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xuICB1c2VkRGF0YXNvdXJjZXMkOiBPYnNlcnZhYmxlPERhdGFTb3VyY2VbXT47XG4gIGFsbERhdGFTb3VyY2VzJDogT2JzZXJ2YWJsZTxEYXRhU291cmNlW10+O1xuICB1bnVzZWREYXRhc291cmNlcyQ6IE9ic2VydmFibGU8YW55PjtcbiAgc2VhcmNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBpZFRvTmFtZURhdGFzb3VyY2U6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWxsRGF0YVNvdXJjZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm1hbmlmZXN0JCxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZ2V0RGF0YVNvdXJjZXNTb3J0ZWQpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW21hbmlmZXN0LCBhbGxOYW1lZFF1ZXJpZXNdKSA9PiB7XG4gICAgICAgIGxldCBkc3MgPSBbLi4uYWxsTmFtZWRRdWVyaWVzXTtcbiAgICAgICAgaWYgKCEhbWFuaWZlc3QpIHtcbiAgICAgICAgICBjb25zdCBtYW5pZmVzdE5hbWVkUXVlcmllcyA9IEFycmF5LmlzQXJyYXkobWFuaWZlc3QuZGF0YXNvdXJjZSkgPyBtYW5pZmVzdC5kYXRhc291cmNlIDogW21hbmlmZXN0LmRhdGFzb3VyY2VdO1xuICAgICAgICAgIG1hbmlmZXN0TmFtZWRRdWVyaWVzLmZvckVhY2goKG1hbmlmZXN0TmFtZWRRdWVyeSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWxyZWFkeVByZXNlbnQgPSAhIWFsbE5hbWVkUXVlcmllcy5maW5kKChucSkgPT4gbnEuaWQgPT09IG1hbmlmZXN0TmFtZWRRdWVyeSk7XG4gICAgICAgICAgICBpZiAoIWFscmVhZHlQcmVzZW50KSB7XG4gICAgICAgICAgICAgIGRzcy5wdXNoKFVOS05PV05fREFUQVNPVVJDRShtYW5pZmVzdE5hbWVkUXVlcnkgPz8gJycpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZHNzO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmFsbERhdGFTb3VyY2VzJC5zdWJzY3JpYmUoKGFsbERzKSA9PiBhbGxEcy5mb3JFYWNoKChkcykgPT4gKHRoaXMuaWRUb05hbWVEYXRhc291cmNlW2RzLmlkXSA9IGRzLm5hbWUpKSlcbiAgICApO1xuICAgIHRoaXMudXNlZERhdGFzb3VyY2VzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy51c2VkRGF0YXNvdXJjZUlkcyQsXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmdldERhdGFTb3VyY2VzKVxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChbaWRzLCBkYXRhc291cmNlc10pID0+XG4gICAgICAgICAgaWRzXG4gICAgICAgICAgICAubWFwKChpZCkgPT4gZGF0YXNvdXJjZXMuZmluZCgoZHMpID0+IGRzLmlkID09PSBpZCkgPz8gaWQpXG4gICAgICAgICAgICAubWFwKChucSkgPT4gKHR5cGVvZiBucSAhPT0gJ3N0cmluZycgPyBucSA6IFVOS05PV05fREFUQVNPVVJDRShucSkpKSBhcyBOYW1lZFF1ZXJ5W11cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMudXNlZERhdGFzb3VyY2VzJC5zdWJzY3JpYmUoKGRhdGFzb3VyY2VzKSA9PiB0aGlzLmRhdGFzb3VyY2VzQ2hhbmdlZC5lbWl0KGRhdGFzb3VyY2VzKSk7XG4gICAgdGhpcy51bnVzZWREYXRhc291cmNlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmFsbERhdGFTb3VyY2VzJCwgdGhpcy51c2VkRGF0YXNvdXJjZUlkcyQsIHRoaXMuc2VhcmNoJF0pLnBpcGUoXG4gICAgICBtYXAoKFthbGxEc3MsIHVzZWREc0lkcywgc2VhcmNoXSkgPT5cbiAgICAgICAgYWxsRHNzLmZpbHRlcigoZHMpID0+ICF1c2VkRHNJZHMuaW5jbHVkZXMoZHMuaWQpICYmIGRzLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHRvb2dsZURhdGFTb3VyY2UoaWQ6IHN0cmluZykge1xuICAgIGlmICghdGhpcy51c2VkRGF0YXNvdXJjZUlkcyQuZ2V0VmFsdWUoKS5pbmNsdWRlcyhpZCkpIHtcbiAgICAgIHRoaXMudXNlZERhdGFzb3VyY2VJZHMkLm5leHQoWy4uLnRoaXMudXNlZERhdGFzb3VyY2VJZHMkLmdldFZhbHVlKCksIGlkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXNlZERhdGFzb3VyY2VJZHMkLm5leHQodGhpcy51c2VkRGF0YXNvdXJjZUlkcyQuZ2V0VmFsdWUoKS5maWx0ZXIoKGRzSWQpID0+IGRzSWQgIT09IGlkKSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGlzR2VvKGRzOiBOYW1lZFF1ZXJ5IHwgRGF0YXNldCkge1xuICAgIHJldHVybiBEYXRhc291cmNlVXRpbHMuaXNHZW8oZHMpO1xuICB9XG5cbiAgc2VhcmNoKCRldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWFyY2gkLm5leHQoJGV2ZW50KTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtLW5hbWVkcXVlcmllcy13cmFwcGVyXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbW9kYWw9XCJ0cnVlXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nX25hbWVkcXVlcmllc1wiPlxuICA8ZGl2IGNsYXNzPVwiby13aWRnZXRfX3NlYXJjaFwiPlxuICAgIDxpbnB1dFxuICAgICAgaWQ9XCJjYXRhbG9nLXNlYXJjaFwiXG4gICAgICAoa2V5ZG93bi5zaGlmdC50YWIpPVwicHJldmlvdXNUYWIuZW1pdCgpXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInUmVjaGVyY2hleiB1bmUgZG9ubsOpZSdcIlxuICAgICAgW25nTW9kZWxdPVwic2VhcmNoJCB8IGFzeW5jXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic2VhcmNoXCIgW3dpZHRoXT1cIjE3XCIgW2hlaWdodF09XCIxN1wiPjwvcHJ5LWljb24+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiKCh1c2VkRGF0YXNvdXJjZXMkIHwgYXN5bmMpID8/IFtdKS5sZW5ndGggPiAwOyBlbHNlIG5vRGF0YVNvdXJjZVwiPlxuICAgIDxoNCBjbGFzcz1cImEtaDRcIj57eyAnQHByeS5yZXN0aXR1dGlvbi5zZWxlY3Rpb24nIHwgaTE4biB9fTwvaDQ+XG4gICAgPGRpdj5cbiAgICAgIDx1bCBjbGFzcz1cIm8tZGF0YXNvdXJjZXNfX2xpc3Qgby1kYXRhc291cmNlc19fbGlzdC0tc2VsZWN0ZWRcIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkcyBvZiB1c2VkRGF0YXNvdXJjZXMkIHwgYXN5bmNcIiBjbGFzcz1cIm8tZGF0YXNvdXJjZXNfX2l0ZW1cIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiby1kYXRhc291cmNlc19fY2FyZCAtc2VsZWN0ZWRcIiAoY2xpY2spPVwidG9vZ2xlRGF0YVNvdXJjZShkcy5pZClcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAge3sgZHMubmFtZSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHByeS1pY29uICpuZ0lmPVwiaXNHZW8oZHMpXCIgaWNvblN2Zz1cImdsb2JlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeSBhLWJ0bi0taWNvbi1vbmx5XCI+XG4gICAgICAgICAgICAgIDxwcnktaWNvbiBbaWNvblN2Z109XCInY2xvc2UnXCIgW3dpZHRoXT1cIjE3XCIgW2hlaWdodF09XCIxN1wiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5yZXN0aXR1dGlvbi51bnNlbGVjdERhdGFTb3VyY2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjbm9EYXRhU291cmNlPlxuICAgIDxoNCBjbGFzcz1cImEtaDRcIj57eyAnQHByeS5yZXN0aXR1dGlvbi5ub0RhdGFTb3VyY2VTZWxlY3RlZCcgfCBpMThuIH19PC9oND5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LnJlc3RpdHV0aW9uLnNlbGVjdCcgfCBpMThuIH19PC9oND5cbiAgPGRpdiBjbGFzcz1cIm8tZGF0YXNvdXJjZXNfX21haW5cIj5cbiAgICA8dWwgY2xhc3M9XCJvLWRhdGFzb3VyY2VzX19saXN0XCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGRzIG9mIHVudXNlZERhdGFzb3VyY2VzJCB8IGFzeW5jXCIgY2xhc3M9XCJvLWRhdGFzb3VyY2VzX19pdGVtXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJvLWRhdGFzb3VyY2VzX19jYXJkXCIgKGNsaWNrKT1cInRvb2dsZURhdGFTb3VyY2UoZHMuaWQpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnJlc3RpdHV0aW9uLnNlbGVjdERhdGFTb3VyY2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICA8cCBjbGFzcz1cImEtcFwiPnt7IGRzLmlkIHwgdHJhbnNsYXRlSWQgOiB7IHR5cGU6ICdkYXRhc291cmNlJywgb3V0cHV0OiAnbmFtZScgfSB8IGFzeW5jIH19PC9wPlxuICAgICAgICAgIDxwcnktaWNvbiAqbmdJZj1cImlzR2VvKGRzKVwiIGljb25Tdmc9XCJnbG9iZVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwIG8tZGF0YXNvdXJjZXNfX2JvdHRvbVwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjYW5jZWwuZW1pdCgpXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCI+XG4gICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJ2YWxpZGF0ZWQuZW1pdCgpXCJcbiAgICAgICN2YWxpZGF0ZVxuICAgICAgKGtleWRvd24udGFiKT1cIm5leHRUYWIuZW1pdCgpXCJcbiAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgID5cbiAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QudmFsaWRhdGVkJyB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhc291cmNlLXNlbGVjdG9yL2RhdGFzb3VyY2Utc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2NvcmUvY29tcG9uZW50cy9jaGlwcy1zZWxlY3Rvci9jaGlwcy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBRWhHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFFQUFxRSxDQUFDOzs7Ozs7OztBQVM3RyxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsc0JBQXNCO0lBSXJFLElBQXNCLFNBQVMsQ0FBQyxLQUFZO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFhLFFBQVEsQ0FBQyxRQUErQjtRQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBSUQsWUFBb0IsS0FBWSxFQUFFLEdBQXNCLEVBQUUsSUFBb0I7UUFDNUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxJ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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVTktOT1dOX0RBVEFTT1VSQ0UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2NvbXBvbmVudHMvdHJhbnNsYXRlLWlkL3RyYW5zbGF0ZS1pZC5waXBlJztcbmltcG9ydCB7IE5hbWVkUXVlcnkgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2RhdGEtc291cmNlL2RhdGEtc291cmNlLm1vZGVsJztcbmltcG9ydCB7IERhdGFTb3VyY2VTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2RhdGEtc291cmNlL2RhdGEtc291cmNlLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBDaGlwc1NlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9jb21wb25lbnRzL2NoaXBzLXNlbGVjdG9yL2NoaXBzLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRNYW5pZmVzdCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3N1YnNjcmlwdGlvbm5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2kxOG4vaTE4bi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWRhdGFzb3VyY2Utc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4uLy4uLy4uLy4uL2NvcmUvY29tcG9uZW50cy9jaGlwcy1zZWxlY3Rvci9jaGlwcy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0YXNvdXJjZVNlbGVjdG9yQ29tcG9uZW50IGV4dGVuZHMgQ2hpcHNTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIF91c2VkSXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSBhcyBhbnlbXSk7XG4gIHVzZWREYXRhc291cmNlcyQ6IE9ic2VydmFibGU8TmFtZWRRdWVyeVtdPjtcblxuICBASW5wdXQoKSBvdmVycmlkZSBzZXQgdXNlZEl0ZW1zKGl0ZW1zOiBhbnlbXSkge1xuICAgIHRoaXMuX3VzZWRJdGVtcyQubmV4dChpdGVtcyk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgbWFuaWZlc3QobWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0IHwgbnVsbCkge1xuICAgIHRoaXMubWFuaWZlc3QkLm5leHQobWFuaWZlc3QpO1xuICB9XG5cbiAgbWFuaWZlc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxXaWRnZXRNYW5pZmVzdCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLCBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBpMThuOiBQcnlJMThuU2VydmljZSkge1xuICAgIHN1cGVyKGNkciwgaTE4bik7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubWFuaWZlc3QkLCB0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmdldERhdGFTb3VyY2VzU29ydGVkKV0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoW21hbmlmZXN0LCBhbGxOYW1lZFF1ZXJpZXNdKSA9PiB7XG4gICAgICAgICAgICBsZXQgZHNzID0gWy4uLmFsbE5hbWVkUXVlcmllc107XG4gICAgICAgICAgICBpZiAoISFtYW5pZmVzdCkge1xuICAgICAgICAgICAgICBjb25zdCBtYW5pZmVzdE5hbWVkUXVlcmllcyA9IEFycmF5LmlzQXJyYXkobWFuaWZlc3QuZGF0YXNvdXJjZSlcbiAgICAgICAgICAgICAgICA/IG1hbmlmZXN0LmRhdGFzb3VyY2VcbiAgICAgICAgICAgICAgICA6IFttYW5pZmVzdC5kYXRhc291cmNlXTtcbiAgICAgICAgICAgICAgbWFuaWZlc3ROYW1lZFF1ZXJpZXMuZm9yRWFjaCgobWFuaWZlc3ROYW1lZFF1ZXJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxyZWFkeVByZXNlbnQgPSAhIWFsbE5hbWVkUXVlcmllcy5maW5kKChucSkgPT4gbnEuaWQgPT09IG1hbmlmZXN0TmFtZWRRdWVyeSk7XG4gICAgICAgICAgICAgICAgaWYgKCFhbHJlYWR5UHJlc2VudCkge1xuICAgICAgICAgICAgICAgICAgZHNzLnB1c2goVU5LTk9XTl9EQVRBU09VUkNFKG1hbmlmZXN0TmFtZWRRdWVyeSA/PyAnJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZHNzO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YXNvdXJjZXMpID0+IHtcbiAgICAgICAgICB0aGlzLml0ZW1zJC5uZXh0KGRhdGFzb3VyY2VzKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy51c2VkRGF0YXNvdXJjZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLl91c2VkSXRlbXMkLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5nZXREYXRhU291cmNlcylcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAoW3VzZWREYXRhc291cmNlcywgZGF0YXNvdXJjZXNdKSA9PlxuICAgICAgICAgIHVzZWREYXRhc291cmNlc1xuICAgICAgICAgICAgLm1hcCgodXNlZERhdGFzb3VyY2UpID0+IGRhdGFzb3VyY2VzLmZpbmQoKGRzKSA9PiBkcy5pZCA9PT0gdXNlZERhdGFzb3VyY2UuaWQpID8/IHVzZWREYXRhc291cmNlKVxuICAgICAgICAgICAgLm1hcCgobnEpID0+ICh0eXBlb2YgbnEgIT09ICdzdHJpbmcnID8gbnEgOiBVTktOT1dOX0RBVEFTT1VSQ0UobnEpKSkgYXMgTmFtZWRRdWVyeVtdXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnVzZWREYXRhc291cmNlcyQuc3Vic2NyaWJlKCh1c2VkRGF0YXNvdXJjZXMpID0+IHtcbiAgICAgICAgdGhpcy51c2VkSXRlbXMkLm5leHQodXNlZERhdGFzb3VyY2VzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm0tbmFtZWRxdWVyaWVzLXdyYXBwZXJcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1tb2RhbD1cInRydWVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkaWFsb2dfbmFtZWRxdWVyaWVzXCI+XG4gIDxkaXYgY2xhc3M9XCJvLXdpZGdldF9fc2VhcmNoXCI+XG4gICAgPGlucHV0XG4gICAgICBpZD1cImNhdGFsb2ctc2VhcmNoXCJcbiAgICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJwcmV2aW91c1RhYi5lbWl0KClcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidAcHJ5LmNvbXBvbmVudHMuc2VhcmNoRGF0YScgfCBpMThuXCJcbiAgICAgIFtuZ01vZGVsXT1cInNlYXJjaCQgfCBhc3luY1wiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNlYXJjaFwiIFt3aWR0aF09XCIxN1wiIFtoZWlnaHRdPVwiMTdcIj48L3ByeS1pY29uPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIigodXNlZEl0ZW1zJCB8IGFzeW5jKSA/PyBbXSkubGVuZ3RoID4gMDsgZWxzZSBub0l0ZW1zXCI+XG4gICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7IHRyYW5zbGF0aW9uU3RyaW5nQmFzZSArICdzZWxlY3Rpb24nIHwgaTE4biB9fTwvaDQ+XG4gICAgPGRpdj5cbiAgICAgIDx1bCBjbGFzcz1cIm8tZGF0YXNvdXJjZXNfX2xpc3Qgby1kYXRhc291cmNlc19fbGlzdC0tc2VsZWN0ZWRcIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIHVzZWRJdGVtcyQgfCBhc3luY1wiIGNsYXNzPVwiby1kYXRhc291cmNlc19faXRlbVwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJvLWRhdGFzb3VyY2VzX19jYXJkIC1zZWxlY3RlZFwiIChjbGljayk9XCJ0b2dnbGVJdGVtU2VsZWN0aW9uKGl0ZW0pXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIHt7IGdldEl0ZW1MYWJlbChpdGVtKSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHByeS1pY29uICpuZ0lmPVwiaXNHZW8oaXRlbSlcIiBpY29uU3ZnPVwiZ2xvYmVcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IGEtYnRuLS1pY29uLW9ubHlcIj5cbiAgICAgICAgICAgICAgPHByeS1pY29uIFtpY29uU3ZnXT1cIidjbG9zZSdcIiBbd2lkdGhdPVwiMTdcIiBbaGVpZ2h0XT1cIjE3XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7IHRyYW5zbGF0aW9uU3RyaW5nQmFzZSArICd1bnNlbGVjdEl0ZW0nIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjbm9JdGVtcz5cbiAgICA8aDQgY2xhc3M9XCJhLWg0XCI+e3sgdHJhbnNsYXRpb25TdHJpbmdCYXNlICsgJ25vSXRlbVNlbGVjdGVkJyB8IGkxOG4gfX08L2g0PlxuICA8L25nLXRlbXBsYXRlPlxuICA8aDQgY2xhc3M9XCJhLWg0XCI+e3sgdHJhbnNsYXRpb25TdHJpbmdCYXNlICsgJ3NlbGVjdCcgfCBpMThuIH19PC9oND5cbiAgPGRpdiBjbGFzcz1cIm8tZGF0YXNvdXJjZXNfX21haW5cIj5cbiAgICA8dWwgY2xhc3M9XCJvLWRhdGFzb3VyY2VzX19saXN0XCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdW51c2VkSXRlbXMkIHwgYXN5bmNcIiBjbGFzcz1cIm8tZGF0YXNvdXJjZXNfX2l0ZW1cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm8tZGF0YXNvdXJjZXNfX2NhcmRcIiAoY2xpY2spPVwidG9nZ2xlSXRlbVNlbGVjdGlvbihpdGVtKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyB0cmFuc2xhdGlvblN0cmluZ0Jhc2UgKyAnc2VsZWN0SXRlbScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzPVwiYS1wXCI+e3sgZ2V0SXRlbUxhYmVsKGl0ZW0pIH19PC9wPlxuICAgICAgICAgIDxwcnktaWNvbiAqbmdJZj1cImlzR2VvKGl0ZW0pXCIgaWNvblN2Zz1cImdsb2JlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd0FjdGlvbkJ1dHRvbnNcIiBjbGFzcz1cIm0tYnRuLWdyb3VwIG8tZGF0YXNvdXJjZXNfX2JvdHRvbVwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjYW5jZWwuZW1pdCgpXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCI+XG4gICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJ2YWxpZGF0ZWQuZW1pdCgpXCJcbiAgICAgICN2YWxpZGF0ZVxuICAgICAgKGtleWRvd24udGFiKT1cIm5leHRUYWIuZW1pdCgpXCJcbiAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgID5cbiAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QudmFsaWRhdGVkJyB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|