ngx-edu-sharing-ui 10.0.7 → 10.0.9
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/README.md +1 -1
- package/assets/scss/branding.scss +3 -8
- package/assets/scss/material-theme.scss +36 -36
- package/assets/scss/variables-scss.scss +9 -8
- package/assets/scss/variables.scss +5 -0
- package/esm2022/lib/common/edu-sharing-ui-common.module.mjs +20 -4
- package/esm2022/lib/directives/icon.directive.mjs +37 -16
- package/esm2022/lib/index.mjs +7 -1
- package/esm2022/lib/mds-viewer/mds-viewer.component.mjs +154 -0
- package/esm2022/lib/mds-viewer/mds-viewer.service.mjs +18 -0
- package/esm2022/lib/mds-viewer/replace-element-with-div.mjs +47 -0
- package/esm2022/lib/mds-viewer/view-instance.service.mjs +27 -0
- package/esm2022/lib/mds-viewer/widget/mds-widget.component.mjs +349 -0
- package/esm2022/lib/node-entries/node-entries-global-options/node-entries-global-options.component.mjs +2 -2
- package/esm2022/lib/pipes/mds-duration.pipe.mjs +25 -0
- package/esm2022/lib/services/node-helper.service.mjs +59 -18
- package/esm2022/lib/services/options-helper-data.service.mjs +2 -2
- package/esm2022/lib/services/ui.service.mjs +147 -3
- package/esm2022/lib/translations/translation-loader.mjs +1 -3
- package/esm2022/lib/translations/translations.module.mjs +4 -2
- package/esm2022/lib/translations/translations.service.mjs +58 -25
- package/esm2022/lib/types/injection-tokens.mjs +14 -1
- package/esm2022/lib/util/rest-helper.mjs +11 -4
- package/fesm2022/ngx-edu-sharing-ui.mjs +3051 -2204
- package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -1
- package/lib/common/edu-sharing-ui-common.module.d.ts +33 -30
- package/lib/directives/icon.directive.d.ts +4 -2
- package/lib/index.d.ts +6 -0
- package/lib/mds-viewer/mds-viewer.component.d.ts +52 -0
- package/lib/mds-viewer/mds-viewer.service.d.ts +12 -0
- package/lib/mds-viewer/replace-element-with-div.d.ts +8 -0
- package/lib/mds-viewer/view-instance.service.d.ts +20 -0
- package/lib/mds-viewer/widget/mds-widget.component.d.ts +111 -0
- package/lib/pipes/mds-duration.pipe.d.ts +7 -0
- package/lib/services/node-helper.service.d.ts +12 -1
- package/lib/services/ui.service.d.ts +32 -1
- package/lib/translations/translations.service.d.ts +7 -6
- package/lib/types/injection-tokens.d.ts +11 -0
- package/lib/util/rest-helper.d.ts +1 -0
- package/package.json +1 -1
|
@@ -34,8 +34,6 @@ export const TRANSLATION_LIST = [
|
|
|
34
34
|
];
|
|
35
35
|
let TranslationLoader = TranslationLoader_1 = class TranslationLoader {
|
|
36
36
|
static create(http, configService, configuration, assetsBasePath, additionalI18nProvider) {
|
|
37
|
-
console.log('ASSETS_BASE_PATH', assetsBasePath);
|
|
38
|
-
console.log('ADDITIONAL_I18N_PROVIDER', assetsBasePath);
|
|
39
37
|
return new TranslationLoader_1(assetsBasePath, additionalI18nProvider, http, configService, configuration);
|
|
40
38
|
}
|
|
41
39
|
constructor(assetsBasePath, additionalI18nProvider, http, configService, configuration, prefix = (assetsBasePath ?? '') + 'assets/i18n', suffix = '.json') {
|
|
@@ -218,4 +216,4 @@ TranslationLoader = TranslationLoader_1 = __decorate([
|
|
|
218
216
|
__param(1, Inject(ADDITIONAL_I18N_PROVIDER))
|
|
219
217
|
], TranslationLoader);
|
|
220
218
|
export { TranslationLoader };
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb24tbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixRQUFRO0lBQ1IsT0FBTztJQUNQLFNBQVM7SUFDVCxXQUFXO0lBQ1gsUUFBUTtJQUNSLGFBQWE7SUFDYixPQUFPO0lBQ1AsYUFBYTtJQUNiLEtBQUs7SUFDTCxVQUFVO0lBQ1YsVUFBVTtJQUNWLFVBQVU7SUFDVixVQUFVO0lBQ1YsUUFBUTtJQUNSLFVBQVU7Q0FDYixDQUFDO0FBSUssSUFBTSxpQkFBaUIseUJBQXZCLE1BQU0saUJBQWlCO0lBQ25CLEFBQVAsTUFBTSxDQUFDLE1BQU0sQ0FDVCxJQUFnQixFQUNoQixhQUE0QixFQUM1QixhQUF3QyxFQUNGLGNBQXVCLEVBRzdELHNCQUFtRDtRQUVuRCxPQUFP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QUFFLENBQUM7WUFDcEMsSUFBSSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDakMsTUFBTSxDQUFDLEdBQUcsQ0FBZSxFQUN6QixRQUFRLENBQUMsR0FBRyxDQUFlLENBQzlCLENBQUM7WUFDTixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FDSixDQUFBO0FBMU9VO0lBSUYsV0FBQSxRQUFRLEVBQUUsQ0FBQTtJQUFFLFdBQUEsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDcEMsV0FBQSxRQUFRLEVBQUUsQ0FBQTtJQUNWLFdBQUEsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUE7cUNBWXBDO0FBbkJRLGlCQUFpQjtJQXNCckIsV0FBQSxRQUFRLEVBQUUsQ0FBQTtJQUFFLFdBQUEsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDcEMsV0FBQSxRQUFRLEVBQUUsQ0FBQTtJQUNWLFdBQUEsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUE7R0F4QjVCLGlCQUFpQixDQTJPN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBMQU5HVUFHRVMgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCAqIGFzIHJ4anMgZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXQsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBmaXJzdCwgbWFwLCByZWR1Y2UsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9lZHUtc2hhcmluZy11aS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IEFERElUSU9OQUxfSTE4Tl9QUk9WSURFUiwgQVNTRVRTX0JBU0VfUEFUSCB9IGZyb20gJy4uL3R5cGVzL2luamVjdGlvbi10b2tlbnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25Tb3VyY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLXNvdXJjZSc7XG5cbmV4cG9ydCBjb25zdCBUUkFOU0xBVElPTl9MSVNUID0gW1xuICAgICdjb21tb24nLFxuICAgICdhZG1pbicsXG4gICAgJ3JlY3ljbGUnLFxuICAgICd3b3Jrc3BhY2UnLFxuICAgICdzZWFyY2gnLFxuICAgICdjb2xsZWN0aW9ucycsXG4gICAgJ2xvZ2luJyxcbiAgICAncGVybWlzc2lvbnMnLFxuICAgICdvZXInLFxuICAgICdtZXNzYWdlcycsXG4gICAgJ3JlZ2lzdGVyJyxcbiAgICAncHJvZmlsZXMnLFxuICAgICdzZXJ2aWNlcycsXG4gICAgJ3N0cmVhbScsXG4gICAgJ292ZXJyaWRlJyxcbl07XG5cbnR5cGUgRGljdGlvbmFyeSA9IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgRGljdGlvbmFyeSB9O1xuXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25Mb2FkZXIgaW1wbGVtZW50cyBUcmFuc2xhdGVMb2FkZXIge1xuICAgIHN0YXRpYyBjcmVhdGUoXG4gICAgICAgIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24sXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVNTRVRTX0JBU0VfUEFUSCkgYXNzZXRzQmFzZVBhdGg/OiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoQURESVRJT05BTF9JMThOX1BST1ZJREVSKVxuICAgICAgICBhZGRpdGlvbmFsSTE4blByb3ZpZGVyPzogKGxhbmc6IHN0cmluZykgPT4gc3RyaW5nW10sXG4gICAgKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdBU1NFVFNfQkFTRV9QQVRIJywgYXNzZXRzQmFzZVBhdGgpXG4gICAgICAgIGNvbnNvbGUubG9nKCdBRERJVElPTkFMX0kxOE5fUFJPVklERVInLCBhc3NldHNCYXNlUGF0aClcbiAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2xhdGlvbkxvYWRlcihcbiAgICAgICAgICAgIGFzc2V0c0Jhc2VQYXRoLFxuICAgICAgICAgICAgYWRkaXRpb25hbEkxOG5Qcm92aWRlcixcbiAgICAgICAgICAgIGh0dHAsXG4gICAgICAgICAgICBjb25maWdTZXJ2aWNlLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFTU0VUU19CQVNFX1BBVEgpIHByaXZhdGUgYXNzZXRzQmFzZVBhdGg6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChBRERJVElPTkFMX0kxOE5fUFJPVklERVIpXG4gICAgICAgIHByaXZhdGUgYWRkaXRpb25hbEkxOG5Qcm92aWRlcjogKGxhbmc6IHN0cmluZykgPT4gc3RyaW5nW10sXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb246IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24sXG4gICAgICAgIHByaXZhdGUgcHJlZml4OiBzdHJpbmcgPSAoYXNzZXRzQmFzZVBhdGggPz8gJycpICsgJ2Fzc2V0cy9pMThuJyxcbiAgICAgICAgcHJpdmF0ZSBzdWZmaXg6IHN0cmluZyA9ICcuanNvbicsXG4gICAgKSB7fVxuXG4gICAgLy8gSWYgeW91IG5lZWQgdG8gY29uZmlndXJlIHRoaXMsIGRlZmluZSBhbiBpbmplY3RhYmxlIGNvbmZpZ3VyYXRpb24gb2JqZWN0LiBTZWVcbiAgICAvLyBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvZGVwZW5kZW5jeS1pbmplY3Rpb24tcHJvdmlkZXJzI2luamVjdGluZy1hLWNvbmZpZ3VyYXRpb24tb2JqZWN0LlxuICAgIHByaXZhdGUgcmVhZG9ubHkgc291cmNlOiBUcmFuc2xhdGlvblNvdXJjZSA9IFRyYW5zbGF0aW9uU291cmNlLkF1dG87XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSB0aGUgc2VydmVyXG4gICAgICovXG4gICAgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PiB7XG4gICAgICAgIGlmIChsYW5nID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5zZXRMb2NhbGUoTEFOR1VBR0VTW2xhbmddLCBsYW5nKTtcbiAgICAgICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gYmFja2VuZCBjYW4gbm90IGhhbmRsZSBzdWItbGFuZ3VhZ2VzXG4gICAgICAgIGNvbnN0IGxhbmdCYWNrZW5kID0gbGFuZy5zdGFydHNXaXRoKCdkZS0nKSA/ICdkZScgOiBsYW5nO1xuICAgICAgICBpZiAoIUxBTkdVQUdFU1tsYW5nQmFja2VuZF0pIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3Vua25vd24gbG9jYWxlIGZvciBsYW5ndWFnZSAnICsgbGFuZyArICcgLyAnICsgbGFuZ0JhY2tlbmQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5zZXRMb2NhbGUoTEFOR1VBR0VTW2xhbmdCYWNrZW5kXSwgbGFuZyk7XG4gICAgICAgIHJldHVybiByeGpzXG4gICAgICAgICAgICAuZm9ya0pvaW4oe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsVHJhbnNsYXRpb25zOiB0aGlzLmdldE9yaWdpbmFsVHJhbnNsYXRpb25zKGxhbmcpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gZW1wdHkgZGljdGlvbmFyeSBpZiB3ZSBnb3Qgbm90aGluZ1xuICAgICAgICAgICAgICAgICAgICBtYXAoKHRyYW5zbGF0aW9ucykgPT4gdHJhbnNsYXRpb25zIHx8IHt9KSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT3ZlcnJpZGVzOiB0aGlzLmNvbmZpZ1NlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLm9ic2VydmVUcmFuc2xhdGlvbk92ZXJyaWRlcygpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGZpcnN0KCkpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoeyBvcmlnaW5hbFRyYW5zbGF0aW9ucywgdHJhbnNsYXRpb25PdmVycmlkZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIGFsdGVyIHRoZSBvYmplY3QgcmV0dXJuZWQgYnkgYGdldE9yaWdpbmFsVHJhbnNsYXRpb25zYC5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlPdmVycmlkZXMob3JpZ2luYWxUcmFuc2xhdGlvbnMsIHRyYW5zbGF0aW9uT3ZlcnJpZGVzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYWRkaXRpb25hbEkxOG5Qcm92aWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRyYW5zbGF0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmFkZGl0aW9uYWxJMThuUHJvdmlkZXIobGFuZyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnYWRkaXRpb25hbCBpMThuIHByb3ZpZGVkJywgZmlsZXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlcy5tYXAoKGYpID0+IHRoaXMuaHR0cC5nZXQoZikgYXMgT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PiksXG4gICAgICAgICAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBkaWN0aW9uYXJ5IG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9ucyA9IHRoaXMub3ZlcnJpZGVXaXRoT2JqZWN0KHRyYW5zbGF0aW9ucywgZGljdGlvbmFyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGN1c3RvbSBsYW5ndWFnZXMnLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJhbnNsYXRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgodHJhbnNsYXRpb25zKSA9PiB0aGlzLnJlcGxhY2VHZW5kZXJDaGFyYWN0ZXIodHJhbnNsYXRpb25zKSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IsIG9icykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPcmlnaW5hbFRyYW5zbGF0aW9ucyhsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmdldFNvdXJjZSgpKSB7XG4gICAgICAgICAgICBjYXNlICdyZXBvc2l0b3J5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLm9ic2VydmVEZWZhdWx0VHJhbnNsYXRpb25zKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChhcmcpID0+ICFhcmc/LmxvY2FsZSB8fCBhcmcubGFuZ3VhZ2UgPT09IGxhbmcpLFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGFyZykgPT4gYXJnPy5kaWN0Py5waXBlKGZpcnN0KCkpIHx8IG9mKG51bGwpKSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSAnbG9jYWwnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlVHJhbnNsYXRpb25zKHRoaXMuZmV0Y2hUcmFuc2xhdGlvbnMobGFuZykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTb3VyY2UoKTogJ3JlcG9zaXRvcnknIHwgJ2xvY2FsJyB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLmNvbmZpZ3VyYXRpb24ucHJvZHVjdGlvbiAmJiB0aGlzLnNvdXJjZSA9PT0gVHJhbnNsYXRpb25Tb3VyY2UuQXV0bykgfHxcbiAgICAgICAgICAgIHRoaXMuc291cmNlID09PSBUcmFuc2xhdGlvblNvdXJjZS5SZXBvc2l0b3J5XG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICdyZXBvc2l0b3J5JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnbG9jYWwnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBPYnNlcnZhYmxlcyB0aGF0IHdpbGwgZWFjaCBmZXRjaCBhIHRyYW5zbGF0aW9ucyBqc29uXG4gICAgICogZmlsZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZldGNoVHJhbnNsYXRpb25zKGxhbmc6IHN0cmluZyk6IE9ic2VydmFibGU8RGljdGlvbmFyeT5bXSB7XG4gICAgICAgIHJldHVybiBUUkFOU0xBVElPTl9MSVNULm1hcChcbiAgICAgICAgICAgICh0cmFuc2xhdGlvbikgPT4gYCR7dGhpcy5wcmVmaXh9LyR7dHJhbnNsYXRpb259LyR7bGFuZ30ke3RoaXMuc3VmZml4fWAsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5tYXAoKHVybCkgPT4gdGhpcy5odHRwLmdldCh1cmwpIGFzIE9ic2VydmFibGU8RGljdGlvbmFyeT4pXG4gICAgICAgICAgICAubWFwKChvYnMpID0+XG4gICAgICAgICAgICAgICAgb2JzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyB0cmFuc2xhdGlvbiBmaWxlIGZvciBsYW5ndWFnZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsIHRyYW5zbGF0aW9ucyB3aWxsIGJlIG1pc3NpbmcgLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQgbGFuZ3VhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRha2VzIGFuIGFycmF5IGFzIHJldHVybmVkIGJ5IGBmZXRjaFRyYW5zbGF0aW9uc2AgYW5kIGNvbnZlcnRzIGl0IHRvIGFuXG4gICAgICogT2JzZXJ2YWJsZSB0aGF0IHlpZWxkcyBhIHNpbmdsZSBEaWN0aW9uYXJ5IG9iamVjdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIG1lcmdlVHJhbnNsYXRpb25zKHRyYW5zbGF0aW9uczogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PltdKTogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PiB7XG4gICAgICAgIHJldHVybiBjb25jYXQoLi4udHJhbnNsYXRpb25zKS5waXBlKFxuICAgICAgICAgICAgcmVkdWNlKChhY2M6IERpY3Rpb25hcnksIHZhbHVlOiBEaWN0aW9uYXJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjW3Byb3BdID0gdmFsdWVbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIGBvdmVycmlkZXNgIHRvIGB0cmFuc2xhdGlvbnNgIGFuZCByZXR1cm5zIGB0cmFuc2xhdGlvbnNgLlxuICAgICAqXG4gICAgICogRXhhbXBsZTpcbiAgICAgKiAgdHJhbnNsYXRpb25zID0geyBmb286IHsgYmFyOiAnYmFyJyB9IH1cbiAgICAgKiAgb3ZlcnJpZGVzID0geyAnZm9vLmJhcic6ICdiYXonIH1cbiAgICAgKiByZXN1bHRzIGluXG4gICAgICogIHRyYW5zbGF0aW9ucyA9IHsgZm9vOiB7YmFyOiAnYmF6JyB9IH1cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0cmFuc2xhdGlvbnMgTmVzdGVkIHRyYW5zbGF0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIG92ZXJyaWRlcyBGbGF0IG9iamVjdCB3aXRoIGRvdHMgKC4pIGluIGtleXMgaW50ZXJwcmV0ZWQgYXNcbiAgICAgKiBzZXBhcmF0b3JzLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXBwbHlPdmVycmlkZXMoXG4gICAgICAgIHRyYW5zbGF0aW9uczogRGljdGlvbmFyeSxcbiAgICAgICAgb3ZlcnJpZGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICk6IERpY3Rpb25hcnkge1xuICAgICAgICBpZiAob3ZlcnJpZGVzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxzdHJpbmc+KG92ZXJyaWRlcykpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVmID0gdHJhbnNsYXRpb25zO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBrZXkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoTGFzdCA9IHBhdGgucG9wKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWZbaXRlbV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZltpdGVtXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZkl0ZW0gPSByZWZbaXRlbV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVmSXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIG92ZXJyaWRlIGxlYXZlIHdpdGggc3ViIHRyZWU6ICcgKyBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWYgPSByZWZJdGVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZWZbcGF0aExhc3RdID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlcGxhY2VHZW5kZXJDaGFyYWN0ZXIodHJhbnNsYXRpb25zOiBEaWN0aW9uYXJ5LCBwYXRoOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRyYW5zbGF0aW9uc1trZXldID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIC8vIERPIE5PVCBSRU1PVkUgKHJlcXVpcmVkIGZvciBjc3YgbGFuZ3VhZ2UgZHVtcGluZylcbiAgICAgICAgICAgICAgICAvKmNvbnNvbGUubG9nKENzdkhlbHBlci5mcm9tQXJyYXkobnVsbCwgW1tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguY29uY2F0KGtleSkuam9pbignLicpLCB0cmFuc2xhdGlvbnNba2V5XVxuICAgICAgICAgICAgICAgIF1dKSk7Ki9cbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnNba2V5XSA9ICh0cmFuc2xhdGlvbnNba2V5XSBhcyBzdHJpbmcpLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIC97e0dFTkRFUl9TRVBBUkFUT1J9fS9nLFxuICAgICAgICAgICAgICAgICAgICAnKicsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zW2tleV0gPSB0aGlzLnJlcGxhY2VHZW5kZXJDaGFyYWN0ZXIoXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uc1trZXldIGFzIERpY3Rpb25hcnksXG4gICAgICAgICAgICAgICAgICAgIHBhdGguY29uY2F0KGtleSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvdmVycmlkZVdpdGhPYmplY3Qoc291cmNlOiBEaWN0aW9uYXJ5LCBvdmVycmlkZTogRGljdGlvbmFyeSkge1xuICAgICAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICAgICAgc291cmNlID0ge307XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKG92ZXJyaWRlKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvdmVycmlkZVtrZXldID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHNvdXJjZVtrZXldID0gdGhpcy5vdmVycmlkZVdpdGhPYmplY3QoXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZVtrZXldIGFzIERpY3Rpb25hcnksXG4gICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlW2tleV0gYXMgRGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzb3VyY2Vba2V5XSA9IG92ZXJyaWRlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG59XG4iXX0=
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb24tbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixRQUFRO0lBQ1IsT0FBTztJQUNQLFNBQVM7SUFDVCxXQUFXO0lBQ1gsUUFBUTtJQUNSLGFBQWE7SUFDYixPQUFPO0lBQ1AsYUFBYTtJQUNiLEtBQUs7SUFDTCxVQUFVO0lBQ1YsVUFBVTtJQUNWLFVBQVU7SUFDVixVQUFVO0lBQ1YsUUFBUTtJQUNSLFVBQVU7Q0FDYixDQUFDO0FBSUssSUFBTSxpQkFBaUIseUJBQXZCLE1BQU0saUJBQWlCO0lBQ25CLEFBQVAsTUFBTSxDQUFDLE1BQU0sQ0FDVCxJQUFnQixFQUNoQixhQUE0QixFQUM1QixhQUF3QyxFQUNGLGNBQXVCLEVBRzdELHNCQUFtRDtRQUVuRCxPQUFP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LGtCQUFrQixDQUNqQyxNQUFNLENBQUMsR0FBRyxDQUFlLEVBQ3pCLFFBQVEsQ0FBQyxHQUFHLENBQWUsQ0FDOUIsQ0FBQztZQUNOLENBQUM7aUJBQU0sQ0FBQztnQkFDSixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztDQUNKLENBQUE7QUF4T1U7SUFJRixXQUFBLFFBQVEsRUFBRSxDQUFBO0lBQUUsV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUNwQyxXQUFBLFFBQVEsRUFBRSxDQUFBO0lBQ1YsV0FBQSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtxQ0FVcEM7QUFqQlEsaUJBQWlCO0lBb0JyQixXQUFBLFFBQVEsRUFBRSxDQUFBO0lBQUUsV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUNwQyxXQUFBLFFBQVEsRUFBRSxDQUFBO0lBQ1YsV0FBQSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtHQXRCNUIsaUJBQWlCLENBeU83QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UsIExBTkdVQUdFUyB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0ICogYXMgcnhqcyBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIGZpcnN0LCBtYXAsIHJlZHVjZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2VkdS1zaGFyaW5nLXVpLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgQURESVRJT05BTF9JMThOX1BST1ZJREVSLCBBU1NFVFNfQkFTRV9QQVRIIH0gZnJvbSAnLi4vdHlwZXMvaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNvdXJjZSB9IGZyb20gJy4vdHJhbnNsYXRpb24tc291cmNlJztcblxuZXhwb3J0IGNvbnN0IFRSQU5TTEFUSU9OX0xJU1QgPSBbXG4gICAgJ2NvbW1vbicsXG4gICAgJ2FkbWluJyxcbiAgICAncmVjeWNsZScsXG4gICAgJ3dvcmtzcGFjZScsXG4gICAgJ3NlYXJjaCcsXG4gICAgJ2NvbGxlY3Rpb25zJyxcbiAgICAnbG9naW4nLFxuICAgICdwZXJtaXNzaW9ucycsXG4gICAgJ29lcicsXG4gICAgJ21lc3NhZ2VzJyxcbiAgICAncmVnaXN0ZXInLFxuICAgICdwcm9maWxlcycsXG4gICAgJ3NlcnZpY2VzJyxcbiAgICAnc3RyZWFtJyxcbiAgICAnb3ZlcnJpZGUnLFxuXTtcblxudHlwZSBEaWN0aW9uYXJ5ID0geyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBEaWN0aW9uYXJ5IH07XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvbkxvYWRlciBpbXBsZW1lbnRzIFRyYW5zbGF0ZUxvYWRlciB7XG4gICAgc3RhdGljIGNyZWF0ZShcbiAgICAgICAgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICAgICAgY29uZmlndXJhdGlvbjogRWR1U2hhcmluZ1VpQ29uZmlndXJhdGlvbixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChBU1NFVFNfQkFTRV9QQVRIKSBhc3NldHNCYXNlUGF0aD86IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChBRERJVElPTkFMX0kxOE5fUFJPVklERVIpXG4gICAgICAgIGFkZGl0aW9uYWxJMThuUHJvdmlkZXI/OiAobGFuZzogc3RyaW5nKSA9PiBzdHJpbmdbXSxcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2xhdGlvbkxvYWRlcihcbiAgICAgICAgICAgIGFzc2V0c0Jhc2VQYXRoLFxuICAgICAgICAgICAgYWRkaXRpb25hbEkxOG5Qcm92aWRlcixcbiAgICAgICAgICAgIGh0dHAsXG4gICAgICAgICAgICBjb25maWdTZXJ2aWNlLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFTU0VUU19CQVNFX1BBVEgpIHByaXZhdGUgYXNzZXRzQmFzZVBhdGg6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChBRERJVElPTkFMX0kxOE5fUFJPVklERVIpXG4gICAgICAgIHByaXZhdGUgYWRkaXRpb25hbEkxOG5Qcm92aWRlcjogKGxhbmc6IHN0cmluZykgPT4gc3RyaW5nW10sXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb246IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24sXG4gICAgICAgIHByaXZhdGUgcHJlZml4OiBzdHJpbmcgPSAoYXNzZXRzQmFzZVBhdGggPz8gJycpICsgJ2Fzc2V0cy9pMThuJyxcbiAgICAgICAgcHJpdmF0ZSBzdWZmaXg6IHN0cmluZyA9ICcuanNvbicsXG4gICAgKSB7fVxuXG4gICAgLy8gSWYgeW91IG5lZWQgdG8gY29uZmlndXJlIHRoaXMsIGRlZmluZSBhbiBpbmplY3RhYmxlIGNvbmZpZ3VyYXRpb24gb2JqZWN0LiBTZWVcbiAgICAvLyBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvZGVwZW5kZW5jeS1pbmplY3Rpb24tcHJvdmlkZXJzI2luamVjdGluZy1hLWNvbmZpZ3VyYXRpb24tb2JqZWN0LlxuICAgIHByaXZhdGUgcmVhZG9ubHkgc291cmNlOiBUcmFuc2xhdGlvblNvdXJjZSA9IFRyYW5zbGF0aW9uU291cmNlLkF1dG87XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB0cmFuc2xhdGlvbnMgZnJvbSB0aGUgc2VydmVyXG4gICAgICovXG4gICAgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PiB7XG4gICAgICAgIGlmIChsYW5nID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5zZXRMb2NhbGUoTEFOR1VBR0VTW2xhbmddLCBsYW5nKTtcbiAgICAgICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gYmFja2VuZCBjYW4gbm90IGhhbmRsZSBzdWItbGFuZ3VhZ2VzXG4gICAgICAgIGNvbnN0IGxhbmdCYWNrZW5kID0gbGFuZy5zdGFydHNXaXRoKCdkZS0nKSA/ICdkZScgOiBsYW5nO1xuICAgICAgICBpZiAoIUxBTkdVQUdFU1tsYW5nQmFja2VuZF0pIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3Vua25vd24gbG9jYWxlIGZvciBsYW5ndWFnZSAnICsgbGFuZyArICcgLyAnICsgbGFuZ0JhY2tlbmQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5zZXRMb2NhbGUoTEFOR1VBR0VTW2xhbmdCYWNrZW5kXSwgbGFuZyk7XG4gICAgICAgIHJldHVybiByeGpzXG4gICAgICAgICAgICAuZm9ya0pvaW4oe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsVHJhbnNsYXRpb25zOiB0aGlzLmdldE9yaWdpbmFsVHJhbnNsYXRpb25zKGxhbmcpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gZW1wdHkgZGljdGlvbmFyeSBpZiB3ZSBnb3Qgbm90aGluZ1xuICAgICAgICAgICAgICAgICAgICBtYXAoKHRyYW5zbGF0aW9ucykgPT4gdHJhbnNsYXRpb25zIHx8IHt9KSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT3ZlcnJpZGVzOiB0aGlzLmNvbmZpZ1NlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLm9ic2VydmVUcmFuc2xhdGlvbk92ZXJyaWRlcygpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGZpcnN0KCkpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoeyBvcmlnaW5hbFRyYW5zbGF0aW9ucywgdHJhbnNsYXRpb25PdmVycmlkZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIGFsdGVyIHRoZSBvYmplY3QgcmV0dXJuZWQgYnkgYGdldE9yaWdpbmFsVHJhbnNsYXRpb25zYC5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlPdmVycmlkZXMob3JpZ2luYWxUcmFuc2xhdGlvbnMsIHRyYW5zbGF0aW9uT3ZlcnJpZGVzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYWRkaXRpb25hbEkxOG5Qcm92aWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRyYW5zbGF0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmFkZGl0aW9uYWxJMThuUHJvdmlkZXIobGFuZyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnYWRkaXRpb25hbCBpMThuIHByb3ZpZGVkJywgZmlsZXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlcy5tYXAoKGYpID0+IHRoaXMuaHR0cC5nZXQoZikgYXMgT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PiksXG4gICAgICAgICAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBkaWN0aW9uYXJ5IG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9ucyA9IHRoaXMub3ZlcnJpZGVXaXRoT2JqZWN0KHRyYW5zbGF0aW9ucywgZGljdGlvbmFyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGN1c3RvbSBsYW5ndWFnZXMnLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJhbnNsYXRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgodHJhbnNsYXRpb25zKSA9PiB0aGlzLnJlcGxhY2VHZW5kZXJDaGFyYWN0ZXIodHJhbnNsYXRpb25zKSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IsIG9icykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPcmlnaW5hbFRyYW5zbGF0aW9ucyhsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmdldFNvdXJjZSgpKSB7XG4gICAgICAgICAgICBjYXNlICdyZXBvc2l0b3J5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLm9ic2VydmVEZWZhdWx0VHJhbnNsYXRpb25zKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChhcmcpID0+ICFhcmc/LmxvY2FsZSB8fCBhcmcubGFuZ3VhZ2UgPT09IGxhbmcpLFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGFyZykgPT4gYXJnPy5kaWN0Py5waXBlKGZpcnN0KCkpIHx8IG9mKG51bGwpKSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSAnbG9jYWwnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1lcmdlVHJhbnNsYXRpb25zKHRoaXMuZmV0Y2hUcmFuc2xhdGlvbnMobGFuZykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTb3VyY2UoKTogJ3JlcG9zaXRvcnknIHwgJ2xvY2FsJyB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLmNvbmZpZ3VyYXRpb24ucHJvZHVjdGlvbiAmJiB0aGlzLnNvdXJjZSA9PT0gVHJhbnNsYXRpb25Tb3VyY2UuQXV0bykgfHxcbiAgICAgICAgICAgIHRoaXMuc291cmNlID09PSBUcmFuc2xhdGlvblNvdXJjZS5SZXBvc2l0b3J5XG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICdyZXBvc2l0b3J5JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnbG9jYWwnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBPYnNlcnZhYmxlcyB0aGF0IHdpbGwgZWFjaCBmZXRjaCBhIHRyYW5zbGF0aW9ucyBqc29uXG4gICAgICogZmlsZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZldGNoVHJhbnNsYXRpb25zKGxhbmc6IHN0cmluZyk6IE9ic2VydmFibGU8RGljdGlvbmFyeT5bXSB7XG4gICAgICAgIHJldHVybiBUUkFOU0xBVElPTl9MSVNULm1hcChcbiAgICAgICAgICAgICh0cmFuc2xhdGlvbikgPT4gYCR7dGhpcy5wcmVmaXh9LyR7dHJhbnNsYXRpb259LyR7bGFuZ30ke3RoaXMuc3VmZml4fWAsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5tYXAoKHVybCkgPT4gdGhpcy5odHRwLmdldCh1cmwpIGFzIE9ic2VydmFibGU8RGljdGlvbmFyeT4pXG4gICAgICAgICAgICAubWFwKChvYnMpID0+XG4gICAgICAgICAgICAgICAgb2JzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyB0cmFuc2xhdGlvbiBmaWxlIGZvciBsYW5ndWFnZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsIHRyYW5zbGF0aW9ucyB3aWxsIGJlIG1pc3NpbmcgLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQgbGFuZ3VhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRha2VzIGFuIGFycmF5IGFzIHJldHVybmVkIGJ5IGBmZXRjaFRyYW5zbGF0aW9uc2AgYW5kIGNvbnZlcnRzIGl0IHRvIGFuXG4gICAgICogT2JzZXJ2YWJsZSB0aGF0IHlpZWxkcyBhIHNpbmdsZSBEaWN0aW9uYXJ5IG9iamVjdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIG1lcmdlVHJhbnNsYXRpb25zKHRyYW5zbGF0aW9uczogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PltdKTogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PiB7XG4gICAgICAgIHJldHVybiBjb25jYXQoLi4udHJhbnNsYXRpb25zKS5waXBlKFxuICAgICAgICAgICAgcmVkdWNlKChhY2M6IERpY3Rpb25hcnksIHZhbHVlOiBEaWN0aW9uYXJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjW3Byb3BdID0gdmFsdWVbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIGBvdmVycmlkZXNgIHRvIGB0cmFuc2xhdGlvbnNgIGFuZCByZXR1cm5zIGB0cmFuc2xhdGlvbnNgLlxuICAgICAqXG4gICAgICogRXhhbXBsZTpcbiAgICAgKiAgdHJhbnNsYXRpb25zID0geyBmb286IHsgYmFyOiAnYmFyJyB9IH1cbiAgICAgKiAgb3ZlcnJpZGVzID0geyAnZm9vLmJhcic6ICdiYXonIH1cbiAgICAgKiByZXN1bHRzIGluXG4gICAgICogIHRyYW5zbGF0aW9ucyA9IHsgZm9vOiB7YmFyOiAnYmF6JyB9IH1cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0cmFuc2xhdGlvbnMgTmVzdGVkIHRyYW5zbGF0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIG92ZXJyaWRlcyBGbGF0IG9iamVjdCB3aXRoIGRvdHMgKC4pIGluIGtleXMgaW50ZXJwcmV0ZWQgYXNcbiAgICAgKiBzZXBhcmF0b3JzLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXBwbHlPdmVycmlkZXMoXG4gICAgICAgIHRyYW5zbGF0aW9uczogRGljdGlvbmFyeSxcbiAgICAgICAgb3ZlcnJpZGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICk6IERpY3Rpb25hcnkge1xuICAgICAgICBpZiAob3ZlcnJpZGVzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxzdHJpbmc+KG92ZXJyaWRlcykpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVmID0gdHJhbnNsYXRpb25zO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBrZXkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoTGFzdCA9IHBhdGgucG9wKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWZbaXRlbV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZltpdGVtXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZkl0ZW0gPSByZWZbaXRlbV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVmSXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIG92ZXJyaWRlIGxlYXZlIHdpdGggc3ViIHRyZWU6ICcgKyBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWYgPSByZWZJdGVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZWZbcGF0aExhc3RdID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlcGxhY2VHZW5kZXJDaGFyYWN0ZXIodHJhbnNsYXRpb25zOiBEaWN0aW9uYXJ5LCBwYXRoOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRyYW5zbGF0aW9uc1trZXldID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIC8vIERPIE5PVCBSRU1PVkUgKHJlcXVpcmVkIGZvciBjc3YgbGFuZ3VhZ2UgZHVtcGluZylcbiAgICAgICAgICAgICAgICAvKmNvbnNvbGUubG9nKENzdkhlbHBlci5mcm9tQXJyYXkobnVsbCwgW1tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguY29uY2F0KGtleSkuam9pbignLicpLCB0cmFuc2xhdGlvbnNba2V5XVxuICAgICAgICAgICAgICAgIF1dKSk7Ki9cbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnNba2V5XSA9ICh0cmFuc2xhdGlvbnNba2V5XSBhcyBzdHJpbmcpLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIC97e0dFTkRFUl9TRVBBUkFUT1J9fS9nLFxuICAgICAgICAgICAgICAgICAgICAnKicsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zW2tleV0gPSB0aGlzLnJlcGxhY2VHZW5kZXJDaGFyYWN0ZXIoXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uc1trZXldIGFzIERpY3Rpb25hcnksXG4gICAgICAgICAgICAgICAgICAgIHBhdGguY29uY2F0KGtleSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvdmVycmlkZVdpdGhPYmplY3Qoc291cmNlOiBEaWN0aW9uYXJ5LCBvdmVycmlkZTogRGljdGlvbmFyeSkge1xuICAgICAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICAgICAgc291cmNlID0ge307XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKG92ZXJyaWRlKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvdmVycmlkZVtrZXldID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHNvdXJjZVtrZXldID0gdGhpcy5vdmVycmlkZVdpdGhPYmplY3QoXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZVtrZXldIGFzIERpY3Rpb25hcnksXG4gICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlW2tleV0gYXMgRGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzb3VyY2Vba2V5XSA9IG92ZXJyaWRlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -3,7 +3,7 @@ import { NgModule, Optional, SkipSelf } from '@angular/core';
|
|
|
3
3
|
import { MissingTranslationHandler, TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
|
4
4
|
import { ConfigService } from 'ngx-edu-sharing-api';
|
|
5
5
|
import { EduSharingUiConfiguration } from '../edu-sharing-ui-configuration';
|
|
6
|
-
import { ADDITIONAL_I18N_PROVIDER, ASSETS_BASE_PATH } from '../types/injection-tokens';
|
|
6
|
+
import { ADDITIONAL_I18N_PROVIDER, ASSETS_BASE_PATH, I18N_CONFIG } from '../types/injection-tokens';
|
|
7
7
|
import { FallbackTranslationHandler } from './fallback-translation-handler';
|
|
8
8
|
import { TranslationLoader } from './translation-loader';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
@@ -38,6 +38,7 @@ export class TranslationsModule {
|
|
|
38
38
|
HttpClient,
|
|
39
39
|
ConfigService,
|
|
40
40
|
EduSharingUiConfiguration,
|
|
41
|
+
[new Optional(), I18N_CONFIG],
|
|
41
42
|
[new Optional(), ASSETS_BASE_PATH],
|
|
42
43
|
[new Optional(), ADDITIONAL_I18N_PROVIDER],
|
|
43
44
|
],
|
|
@@ -61,6 +62,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
61
62
|
HttpClient,
|
|
62
63
|
ConfigService,
|
|
63
64
|
EduSharingUiConfiguration,
|
|
65
|
+
[new Optional(), I18N_CONFIG],
|
|
64
66
|
[new Optional(), ASSETS_BASE_PATH],
|
|
65
67
|
[new Optional(), ADDITIONAL_I18N_PROVIDER],
|
|
66
68
|
],
|
|
@@ -77,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
77
79
|
}, {
|
|
78
80
|
type: SkipSelf
|
|
79
81
|
}] }] });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvdHJhbnNsYXRpb25zL3RyYW5zbGF0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBdUIsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFFekQ7Ozs7R0FJRztBQXdCSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLE1BQU0sQ0FBQyxPQUFPO1FBQ1YsT0FBTztZQUNILFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFLEVBQUU7U0FDaEIsQ0FBQztJQUNOLENBQUM7SUFFRCxZQUFvQyxZQUFpQztRQUNqRSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FDUix1RUFBdUUsRUFDdkUsWUFBWSxDQUNmLENBQUM7WUFDRjs7Z0JBRUk7UUFDUixDQUFDO0lBQ0wsQ0FBQzsrR0FsQlEsa0JBQWtCO2dIQUFsQixrQkFBa0I7Z0hBQWxCLGtCQUFrQixZQXBCdkIsZUFBZSxDQUFDLE9BQU8sQ0FBQztnQkFDcEIsTUFBTSxFQUFFO29CQUNKLE9BQU8sRUFBRSxlQUFlO29CQUN4QixVQUFVLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtvQkFDcEMsSUFBSSxFQUFFO3dCQUNGLFVBQVU7d0JBQ1YsYUFBYTt3QkFDYix5QkFBeUI7d0JBQ3pCLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUM7d0JBQzdCLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQzt3QkFDbEMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLHdCQUF3QixDQUFDO3FCQUM3QztpQkFDSjtnQkFDRCx5QkFBeUIsRUFBRTtvQkFDdkIsT0FBTyxFQUFFLHlCQUF5QjtvQkFDbEMsUUFBUSxFQUFFLDBCQUEwQjtpQkFDdkM7YUFDSixDQUFDOzs0RkFHRyxrQkFBa0I7a0JBdkI5QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUU7d0JBQ0wsZUFBZSxDQUFDLE9BQU8sQ0FBQzs0QkFDcEIsTUFBTSxFQUFFO2dDQUNKLE9BQU8sRUFBRSxlQUFlO2dDQUN4QixVQUFVLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtnQ0FDcEMsSUFBSSxFQUFFO29DQUNGLFVBQVU7b0NBQ1YsYUFBYTtvQ0FDYix5QkFBeUI7b0NBQ3pCLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUM7b0NBQzdCLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQztvQ0FDbEMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLHdCQUF3QixDQUFDO2lDQUM3Qzs2QkFDSjs0QkFDRCx5QkFBeUIsRUFBRTtnQ0FDdkIsT0FBTyxFQUFFLHlCQUF5QjtnQ0FDbEMsUUFBUSxFQUFFLDBCQUEwQjs2QkFDdkM7eUJBQ0osQ0FBQztxQkFDTDtpQkFDSjs7MEJBU2dCLFFBQVE7OzBCQUFJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlciwgVHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCB7IEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9lZHUtc2hhcmluZy11aS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IEFERElUSU9OQUxfSTE4Tl9QUk9WSURFUiwgQVNTRVRTX0JBU0VfUEFUSCwgSTE4Tl9DT05GSUcgfSBmcm9tICcuLi90eXBlcy9pbmplY3Rpb24tdG9rZW5zJztcbmltcG9ydCB7IEZhbGxiYWNrVHJhbnNsYXRpb25IYW5kbGVyIH0gZnJvbSAnLi9mYWxsYmFjay10cmFuc2xhdGlvbi1oYW5kbGVyJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uTG9hZGVyIH0gZnJvbSAnLi90cmFuc2xhdGlvbi1sb2FkZXInO1xuXG4vKipcbiAqIEltcG9ydCB0aGlzIG1vZHVsZSBvbmNlIGluIHRoZSBhcHAgbW9kdWxlIHRvIHByb3ZpZGUgdGhlIGBUcmFuc2xhdGVTZXJ2aWNlYC5cbiAqXG4gKiBFeHBvcnQgYFRyYW5zbGF0ZU1vZHVsZWAgaW4gdGhlIHNoYXJlZCBtb2R1bGUgdG8gcHJvdmlkZSBkaXJlY3RpdmVzIGFuZCBwaXBlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgICAgICAgbG9hZGVyOiB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogVHJhbnNsYXRlTG9hZGVyLFxuICAgICAgICAgICAgICAgIHVzZUZhY3Rvcnk6IFRyYW5zbGF0aW9uTG9hZGVyLmNyZWF0ZSxcbiAgICAgICAgICAgICAgICBkZXBzOiBbXG4gICAgICAgICAgICAgICAgICAgIEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgICAgICAgIENvbmZpZ1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgIEVkdVNoYXJpbmdVaUNvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIFtuZXcgT3B0aW9uYWwoKSwgSTE4Tl9DT05GSUddLFxuICAgICAgICAgICAgICAgICAgICBbbmV3IE9wdGlvbmFsKCksIEFTU0VUU19CQVNFX1BBVEhdLFxuICAgICAgICAgICAgICAgICAgICBbbmV3IE9wdGlvbmFsKCksIEFERElUSU9OQUxfSTE4Tl9QUk9WSURFUl0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyOiB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogTWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlcixcbiAgICAgICAgICAgICAgICB1c2VDbGFzczogRmFsbGJhY2tUcmFuc2xhdGlvbkhhbmRsZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvbnNNb2R1bGUge1xuICAgIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8VHJhbnNsYXRpb25zTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogVHJhbnNsYXRpb25zTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwYXJlbnRNb2R1bGU/OiBUcmFuc2xhdGlvbnNNb2R1bGUpIHtcbiAgICAgICAgaWYgKHBhcmVudE1vZHVsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICdUcmFuc2xhdGlvbnNNb2R1bGUgaXMgYWxyZWFkeSBsb2FkZWQuIEltcG9ydCBpdCBpbiB0aGUgQXBwTW9kdWxlIG9ubHknLFxuICAgICAgICAgICAgICAgIHBhcmVudE1vZHVsZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvKnRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnVHJhbnNsYXRpb25zTW9kdWxlIGlzIGFscmVhZHkgbG9hZGVkLiBJbXBvcnQgaXQgaW4gdGhlIEFwcE1vZHVsZSBvbmx5JyxcbiAgICAgICAgICAgICk7Ki9cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, from, of as observableOf } from 'rxjs';
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, from, of, of as observableOf } from 'rxjs';
|
|
3
3
|
import { first, map, switchMap, tap } from 'rxjs/operators';
|
|
4
|
-
import { LANGUAGES } from 'ngx-edu-sharing-api';
|
|
4
|
+
import { LANGUAGES, SessionStorageService } from 'ngx-edu-sharing-api';
|
|
5
|
+
import { I18N_CONFIG, I18nConfig } from '../types/injection-tokens';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "ngx-edu-sharing-api";
|
|
7
8
|
import * as i2 from "@angular/router";
|
|
8
9
|
import * as i3 from "@ngx-translate/core";
|
|
9
10
|
import * as i4 from "../services/abstract/app.service";
|
|
11
|
+
import * as i5 from "../types/injection-tokens";
|
|
10
12
|
// 'none' means that only labels should be shown (for dev)
|
|
11
13
|
const DEFAULT_SUPPORTED_LANGUAGES = [
|
|
12
14
|
'de',
|
|
@@ -18,23 +20,33 @@ const DEFAULT_SUPPORTED_LANGUAGES = [
|
|
|
18
20
|
'none',
|
|
19
21
|
];
|
|
20
22
|
export class TranslationsService {
|
|
21
|
-
constructor(config,
|
|
23
|
+
constructor(config, injector,
|
|
24
|
+
// optional, some web components may don't have it!
|
|
25
|
+
route, i18nConfig, translate, ref, appService) {
|
|
22
26
|
this.config = config;
|
|
27
|
+
this.injector = injector;
|
|
23
28
|
this.route = route;
|
|
24
|
-
this.
|
|
29
|
+
this.i18nConfig = i18nConfig;
|
|
25
30
|
this.translate = translate;
|
|
26
|
-
this.sessionStorage = sessionStorage;
|
|
27
31
|
this.ref = ref;
|
|
28
32
|
this.appService = appService;
|
|
29
33
|
this.languageLoaded = new BehaviorSubject(false);
|
|
30
|
-
this.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
if (!this.i18nConfig) {
|
|
35
|
+
this.i18nConfig = new I18nConfig();
|
|
36
|
+
}
|
|
37
|
+
if (this.i18nConfig.obeyUserProfile) {
|
|
38
|
+
this.injector
|
|
39
|
+
.get(SessionStorageService)
|
|
40
|
+
?.observe('language')
|
|
41
|
+
.subscribe((lang) => {
|
|
42
|
+
// language has changed, i.e. user has different preference
|
|
43
|
+
if (this.translate.currentLang && this.translate.currentLang !== lang) {
|
|
44
|
+
this.initialize().subscribe(() => {
|
|
45
|
+
this.ref.tick();
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
38
50
|
}
|
|
39
51
|
/**
|
|
40
52
|
* Determines and configures the language to use and triggers loading of translations with
|
|
@@ -54,13 +66,13 @@ export class TranslationsService {
|
|
|
54
66
|
}
|
|
55
67
|
}), tap((supportedLanguages) => this.translate.addLangs(supportedLanguages)),
|
|
56
68
|
// Select queryParams.locale if set meaningfully
|
|
57
|
-
switchMap((supportedLanguages) => this.route.queryParams.pipe(first(), map((params) => {
|
|
69
|
+
switchMap((supportedLanguages) => (this.route ? this.route.queryParams : of(null)).pipe(first(), map((params) => {
|
|
58
70
|
let selectedLanguage = null;
|
|
59
|
-
if (supportedLanguages.indexOf(params
|
|
60
|
-
selectedLanguage = params
|
|
71
|
+
if (supportedLanguages.indexOf(params?.locale) !== -1) {
|
|
72
|
+
selectedLanguage = params?.locale;
|
|
61
73
|
}
|
|
62
|
-
else if (params
|
|
63
|
-
if (params
|
|
74
|
+
else if (params?.locale) {
|
|
75
|
+
if (params?.locale === 'de') {
|
|
64
76
|
const deVariants = supportedLanguages.filter((l) => l.startsWith('de-'));
|
|
65
77
|
if (deVariants?.length === 1) {
|
|
66
78
|
selectedLanguage = deVariants[0];
|
|
@@ -92,7 +104,19 @@ export class TranslationsService {
|
|
|
92
104
|
});
|
|
93
105
|
}
|
|
94
106
|
else {
|
|
95
|
-
|
|
107
|
+
if (!this.i18nConfig.obeyUserProfile) {
|
|
108
|
+
console.info('obeyUserProfile is disabled, using default language ' +
|
|
109
|
+
supportedLanguages[0]);
|
|
110
|
+
return of({
|
|
111
|
+
supportedLanguages,
|
|
112
|
+
selectedLanguage,
|
|
113
|
+
useStored: false,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
return this.injector
|
|
117
|
+
.get(SessionStorageService)
|
|
118
|
+
.get('language')
|
|
119
|
+
.pipe(map((storageLanguage) => {
|
|
96
120
|
let useStored = false;
|
|
97
121
|
if (supportedLanguages.indexOf(storageLanguage) !== -1) {
|
|
98
122
|
selectedLanguage = storageLanguage;
|
|
@@ -136,8 +160,10 @@ export class TranslationsService {
|
|
|
136
160
|
}),
|
|
137
161
|
// Set fallback language
|
|
138
162
|
tap(({ supportedLanguages, selectedLanguage, useStored }) => {
|
|
139
|
-
if (!useStored) {
|
|
140
|
-
void this.
|
|
163
|
+
if (!useStored && this.i18nConfig.obeyUserProfile) {
|
|
164
|
+
void this.injector
|
|
165
|
+
.get(SessionStorageService)
|
|
166
|
+
.set('language', selectedLanguage);
|
|
141
167
|
}
|
|
142
168
|
if (selectedLanguage === 'none') {
|
|
143
169
|
this.translate.setDefaultLang('none');
|
|
@@ -193,13 +219,20 @@ export class TranslationsService {
|
|
|
193
219
|
getLocale() {
|
|
194
220
|
return this.getISOLanguage().replace('_', '-');
|
|
195
221
|
}
|
|
196
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TranslationsService, deps: [{ token: i1.ConfigService }, { token:
|
|
222
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TranslationsService, deps: [{ token: i1.ConfigService }, { token: i0.Injector }, { token: i2.ActivatedRoute, optional: true }, { token: I18N_CONFIG, optional: true }, { token: i3.TranslateService }, { token: i0.ApplicationRef }, { token: i4.AppService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
197
223
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TranslationsService, providedIn: 'root' }); }
|
|
198
224
|
}
|
|
199
225
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TranslationsService, decorators: [{
|
|
200
226
|
type: Injectable,
|
|
201
227
|
args: [{ providedIn: 'root' }]
|
|
202
|
-
}], ctorParameters: () => [{ type: i1.ConfigService }, { type:
|
|
228
|
+
}], ctorParameters: () => [{ type: i1.ConfigService }, { type: i0.Injector }, { type: i2.ActivatedRoute, decorators: [{
|
|
229
|
+
type: Optional
|
|
230
|
+
}] }, { type: i5.I18nConfig, decorators: [{
|
|
231
|
+
type: Optional
|
|
232
|
+
}, {
|
|
233
|
+
type: Inject,
|
|
234
|
+
args: [I18N_CONFIG]
|
|
235
|
+
}] }, { type: i3.TranslateService }, { type: i0.ApplicationRef }, { type: i4.AppService, decorators: [{
|
|
203
236
|
type: Optional
|
|
204
237
|
}] }] });
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQWMsRUFBRSxJQUFJLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFpQixTQUFTLEVBQXlCLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQUl0RiwwREFBMEQ7QUFDMUQsTUFBTSwyQkFBMkIsR0FBRztJQUNoQyxJQUFJO0lBQ0osYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixNQUFNO0NBQ1QsQ0FBQztBQUdGLE1BQU0sT0FBTyxtQkFBbUI7SUFJNUIsWUFDWSxNQUFxQixFQUNyQixLQUFxQixFQUNyQixPQUE4QixFQUM5QixTQUEyQixFQUMzQixjQUFxQyxFQUNyQyxHQUFtQixFQUNQLFVBQXNCO1FBTmxDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLFFBQUcsR0FBSCxHQUFHLENBQWdCO1FBQ1AsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVR0QyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBV2hELElB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SUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDSCw0REFBNEQ7UUFDNUQsTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDM0IsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFDekMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3BCLENBQUM7SUFDTixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFNBQVM7UUFDTCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7K0dBM01RLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVl6QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb20sIE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBMQU5HVUFHRVMsIFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Fic3RyYWN0L2FwcC5zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQsIHsgTG9jYWxlIH0gZnJvbSAnbW9tZW50JztcblxuLy8gJ25vbmUnIG1lYW5zIHRoYXQgb25seSBsYWJlbHMgc2hvdWxkIGJlIHNob3duIChmb3IgZGV2KVxuY29uc3QgREVGQVVMVF9TVVBQT1JURURfTEFOR1VBR0VTID0gW1xuICAgICdkZScsXG4gICAgJ2RlLWluZm9ybWFsJyxcbiAgICAnZGUtbm8tYmlubmVuLWknLFxuICAgICdlbicsXG4gICAgJ2ZyJyxcbiAgICAnaXQnLFxuICAgICdub25lJyxcbl07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25zU2VydmljZSB7XG4gICAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xuICAgIHByaXZhdGUgbGFuZ3VhZ2VMb2FkZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgc3RvcmFnZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uU3RvcmFnZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgYXBwU2VydmljZTogQXBwU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZT8ub2JzZXJ2ZSgnbGFuZ3VhZ2UnKS5zdWJzY3JpYmUoKGxhbmcpID0+IHtcbiAgICAgICAgICAgIC8vIGxhbmd1YWdlIGhhcyBjaGFuZ2VkLCBpLmUuIHVzZXIgaGFzIGRpZmZlcmVudCBwcmVmZXJlbmNlXG4gICAgICAgICAgICBpZiAodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgJiYgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgIT09IGxhbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemUoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZi50aWNrKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgYW5kIGNvbmZpZ3VyZXMgdGhlIGxhbmd1YWdlIHRvIHVzZSBhbmQgdHJpZ2dlcnMgbG9hZGluZyBvZiB0cmFuc2xhdGlvbnMgd2l0aFxuICAgICAqIG5neC10cmFuc2xhdGUuXG4gICAgICpcbiAgICAgKiBDYWxsIHRoaXMgb25jZSBpbiB0aGUgYXBwIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBpbml0aWFsaXplKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdXBwb3J0ZWRMYW5ndWFnZXMkID0gZnJvbShcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmdldCgnc3VwcG9ydGVkTGFuZ3VhZ2VzJywgREVGQVVMVF9TVVBQT1JURURfTEFOR1VBR0VTKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuYXBwU2VydmljZT8uaXNSdW5uaW5nQXBwKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBwb3J0ZWRMYW5ndWFnZXMkLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChzdXBwb3J0ZWRMYW5ndWFnZXM6IHN0cmluZ1tdKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDb3Jkb3ZhKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gdm9pZCAwKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChzdXBwb3J0ZWRMYW5ndWFnZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdXBwb3J0ZWRMYW5ndWFnZXMuaW5jbHVkZXMoJ25vbmUnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLnB1c2goJ25vbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRhcCgoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBzdHJpbmdbXSkgPT4gdGhpcy50cmFuc2xhdGUuYWRkTGFuZ3Moc3VwcG9ydGVkTGFuZ3VhZ2VzKSksXG4gICAgICAgICAgICAgICAgLy8gU2VsZWN0IHF1ZXJ5UGFyYW1zLmxvY2FsZSBpZiBzZXQgbWVhbmluZ2Z1bGx5XG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChzdXBwb3J0ZWRMYW5ndWFnZXM6IHN0cmluZ1tdKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChwYXJhbXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRMYW5ndWFnZTogc3RyaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkTGFuZ3VhZ2VzLmluZGV4T2YocGFyYW1zLmxvY2FsZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGFuZ3VhZ2UgPSBwYXJhbXMubG9jYWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLmxvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLmxvY2FsZSA9PT0gJ2RlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVWYXJpYW50cyA9IHN1cHBvcnRlZExhbmd1YWdlcy5maWx0ZXIoKGwpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5zdGFydHNXaXRoKCdkZS0nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVWYXJpYW50cz8ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMYW5ndWFnZSA9IGRlVmFyaWFudHNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFVybCByZXF1ZXN0ZWQgbGFuZ3VhZ2UgJHtwYXJhbXMubG9jYWxlfSwgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnV0IGFtYmlndW91cyB2YXJpYW50cyBhcmUgcHJlc2VudDogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgVXJsIHJlcXVlc3RlZCBsYW5ndWFnZSAke3BhcmFtcy5sb2NhbGV9LCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1dCBpdCB3YXMgbm90IGZvdW5kIG9yIGlzIG5vdCBjb25maWd1cmVkIGluIHRoZSBhbGxvd2VkIGxhbmd1YWdlczogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZExhbmd1YWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIC8vIFNlbGVjdCBzdG9yYWdlLmdldCgnbGFuZ3VhZ2UnKSBpZiBzZXQgbWVhbmluZ2Z1bGx5XG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh7IHN1cHBvcnRlZExhbmd1YWdlcywgc2VsZWN0ZWRMYW5ndWFnZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZExhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VTdG9yZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldCgnbGFuZ3VhZ2UnKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoc3RvcmFnZUxhbmd1YWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1c2VTdG9yZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZExhbmd1YWdlcy5pbmRleE9mKHN0b3JhZ2VMYW5ndWFnZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlID0gc3RvcmFnZUxhbmd1YWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlU3RvcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVN0b3JlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAvLyBVc2UgYnJvd3NlciBsYW5ndWFnZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gdGhlIGZpcnN0IHN1cHBvcnRlZFxuICAgICAgICAgICAgICAgIC8vIGxhbmd1YWdlLlxuICAgICAgICAgICAgICAgIG1hcCgoeyBzdXBwb3J0ZWRMYW5ndWFnZXMsIHNlbGVjdGVkTGFuZ3VhZ2UsIHVzZVN0b3JlZCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZExhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZExhbmd1YWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVN0b3JlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3QgYnJvd3NlciBsYW5ndWFnZSBpZiBzZXQgbWVhbmluZ2Z1bGx5XG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXMuaW5kZXhPZih0aGlzLnRyYW5zbGF0ZS5nZXRCcm93c2VyTGFuZygpKSAhPT0gLTFcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZExhbmd1YWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOiB0aGlzLnRyYW5zbGF0ZS5nZXRCcm93c2VyTGFuZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVN0b3JlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3QgZmlyc3Qgc3VwcG9ydGVkIGxhbmd1YWdlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZExhbmd1YWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOiBzdXBwb3J0ZWRMYW5ndWFnZXNbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlU3RvcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC8vIFNldCBmYWxsYmFjayBsYW5ndWFnZVxuICAgICAgICAgICAgICAgIHRhcCgoeyBzdXBwb3J0ZWRMYW5ndWFnZXMsIHNlbGVjdGVkTGFuZ3VhZ2UsIHVzZVN0b3JlZCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdXNlU3RvcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2b2lkIHRoaXMuc3RvcmFnZS5zZXQoJ2xhbmd1YWdlJywgc2VsZWN0ZWRMYW5ndWFnZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkTGFuZ3VhZ2UgPT09ICdub25lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcoJ25vbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZExhbmd1YWdlPy5zdGFydHNXaXRoKCdkZS0nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcoJ2RlJyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZyhzdXBwb3J0ZWRMYW5ndWFnZXNbMF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLy8gQ29uZmlndXJlIGBuZ3gtdHJhbnNsYXRlYCB0byB1c2UgdGhlIGRldGVybWluZWQgbGFuZ3VhZ2UgYW5kIHRyaWdnZXIgbG9hZGluZyBvZlxuICAgICAgICAgICAgICAgIC8vIHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHsgc2VsZWN0ZWRMYW5ndWFnZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdsYW5ndWFnZSB1c2VkOiAnICsgc2VsZWN0ZWRMYW5ndWFnZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2UgPSBzZWxlY3RlZExhbmd1YWdlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUudXNlKHNlbGVjdGVkTGFuZ3VhZ2UpLnBpcGUobWFwKCgpID0+IHZvaWQgMCkpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gTm90aWZ5IGFueW9uZSB3YWl0aW5nIGZvciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkLlxuICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VMb2FkZWQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy53YWl0Rm9ySW5pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdGlhbGl6ZUNvcmRvdmEoc3VwcG9ydGVkTGFuZ3VhZ2VzID0gREVGQVVMVF9TVVBQT1JURURfTEFOR1VBR0VTKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmFkZExhbmdzKHN1cHBvcnRlZExhbmd1YWdlcyk7XG4gICAgICAgIGxldCBsYW5ndWFnZSA9IHN1cHBvcnRlZExhbmd1YWdlc1swXTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcobGFuZ3VhZ2UpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZ3VhZ2UpO1xuICAgICAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmFwcFNlcnZpY2UuZ2V0TGFuZ3VhZ2UoKTtcbiAgICAgICAgaWYgKHN1cHBvcnRlZExhbmd1YWdlcy5pbmRleE9mKGRhdGEpICE9IC0xKSB7XG4gICAgICAgICAgICBsYW5ndWFnZSA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZ3VhZ2UpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxhbmd1YWdlTG9hZGVkLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyB0aGlzLnRyYW5zbGF0ZS5nZXRUcmFuc2xhdGlvbihsYW5ndWFnZSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gfSk7XG4gICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JJbml0KCk7XG4gICAgfVxuXG4gICAgd2FpdEZvckluaXQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlTG9hZGVkLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgobGFuZ3VhZ2VMb2FkZWQpID0+IGxhbmd1YWdlTG9hZGVkKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB2b2lkIDApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBTYW1lIGFzIGB0cmFuc2xhdGUuY3VycmVudExhbmdgLiAqL1xuICAgIGdldExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlO1xuICAgIH1cblxuICAgIGdldElTT0xhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBMQU5HVUFHRVNbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuXG4gICAgZ2V0TG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldElTT0xhbmd1YWdlKCkucmVwbGFjZSgnXycsICctJyk7XG4gICAgfVxufVxuIl19
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLE1BQU0sRUFBRSxVQUFVLEVBQVksUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFFcEUsMERBQTBEO0FBQzFELE1BQU0sMkJBQTJCLEdBQUc7SUFDaEMsSUFBSTtJQUNKLGFBQWE7SUFDYixnQkFBZ0I7SUFDaEIsSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osTUFBTTtDQUNULENBQUM7QUFHRixNQUFNLE9BQU8sbUJBQW1CO0lBSTVCLFlBQ1ksTUFBcUIsRUFDckIsUUFBa0I7SUFDMUIsbURBQW1EO0lBQy9CLEtBQXFCLEVBQ0EsVUFBc0IsRUFDdkQsU0FBMkIsRUFDM0IsR0FBbUIsRUFDUCxVQUFzQjtRQVBsQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFTixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNBLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdkQsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsUUFBRyxHQUFI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Q0FBQyxFQUN6QyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDcEIsQ0FBQztJQUNOLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsV0FBVztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkQsQ0FBQzsrR0FwT1EsbUJBQW1CLHFIQVNKLFdBQVc7bUhBVDFCLG1CQUFtQixjQUROLE1BQU07OzRGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFTekIsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxXQUFXOzswQkFHOUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgb2YgYXMgb2JzZXJ2YWJsZU9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UsIExBTkdVQUdFUywgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWJzdHJhY3QvYXBwLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4Tl9DT05GSUcsIEkxOG5Db25maWcgfSBmcm9tICcuLi90eXBlcy9pbmplY3Rpb24tdG9rZW5zJztcblxuLy8gJ25vbmUnIG1lYW5zIHRoYXQgb25seSBsYWJlbHMgc2hvdWxkIGJlIHNob3duIChmb3IgZGV2KVxuY29uc3QgREVGQVVMVF9TVVBQT1JURURfTEFOR1VBR0VTID0gW1xuICAgICdkZScsXG4gICAgJ2RlLWluZm9ybWFsJyxcbiAgICAnZGUtbm8tYmlubmVuLWknLFxuICAgICdlbicsXG4gICAgJ2ZyJyxcbiAgICAnaXQnLFxuICAgICdub25lJyxcbl07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25zU2VydmljZSB7XG4gICAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xuICAgIHByaXZhdGUgbGFuZ3VhZ2VMb2FkZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIC8vIG9wdGlvbmFsLCBzb21lIHdlYiBjb21wb25lbnRzIG1heSBkb24ndCBoYXZlIGl0IVxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChJMThOX0NPTkZJRykgcHJpdmF0ZSBpMThuQ29uZmlnOiBJMThuQ29uZmlnLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5pMThuQ29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLmkxOG5Db25maWcgPSBuZXcgSTE4bkNvbmZpZygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmkxOG5Db25maWcub2JleVVzZXJQcm9maWxlKSB7XG4gICAgICAgICAgICB0aGlzLmluamVjdG9yXG4gICAgICAgICAgICAgICAgLmdldChTZXNzaW9uU3RvcmFnZVNlcnZpY2UpXG4gICAgICAgICAgICAgICAgPy5vYnNlcnZlKCdsYW5ndWFnZScpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgobGFuZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBsYW5ndWFnZSBoYXMgY2hhbmdlZCwgaS5lLiB1c2VyIGhhcyBkaWZmZXJlbnQgcHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgJiYgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgIT09IGxhbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWYudGljaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgYW5kIGNvbmZpZ3VyZXMgdGhlIGxhbmd1YWdlIHRvIHVzZSBhbmQgdHJpZ2dlcnMgbG9hZGluZyBvZiB0cmFuc2xhdGlvbnMgd2l0aFxuICAgICAqIG5neC10cmFuc2xhdGUuXG4gICAgICpcbiAgICAgKiBDYWxsIHRoaXMgb25jZSBpbiB0aGUgYXBwIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBpbml0aWFsaXplKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdXBwb3J0ZWRMYW5ndWFnZXMkID0gZnJvbShcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmdldCgnc3VwcG9ydGVkTGFuZ3VhZ2VzJywgREVGQVVMVF9TVVBQT1JURURfTEFOR1VBR0VTKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuYXBwU2VydmljZT8uaXNSdW5uaW5nQXBwKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBwb3J0ZWRMYW5ndWFnZXMkLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChzdXBwb3J0ZWRMYW5ndWFnZXM6IHN0cmluZ1tdKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDb3Jkb3ZhKHN1cHBvcnRlZExhbmd1YWdlcyksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gdm9pZCAwKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChzdXBwb3J0ZWRMYW5ndWFnZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdXBwb3J0ZWRMYW5ndWFnZXMuaW5jbHVkZXMoJ25vbmUnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLnB1c2goJ25vbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRhcCgoc3VwcG9ydGVkTGFuZ3VhZ2VzOiBzdHJpbmdbXSkgPT4gdGhpcy50cmFuc2xhdGUuYWRkTGFuZ3Moc3VwcG9ydGVkTGFuZ3VhZ2VzKSksXG4gICAgICAgICAgICAgICAgLy8gU2VsZWN0IHF1ZXJ5UGFyYW1zLmxvY2FsZSBpZiBzZXQgbWVhbmluZ2Z1bGx5XG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChzdXBwb3J0ZWRMYW5ndWFnZXM6IHN0cmluZ1tdKSA9PlxuICAgICAgICAgICAgICAgICAgICAodGhpcy5yb3V0ZSA/IHRoaXMucm91dGUucXVlcnlQYXJhbXMgOiBvZihudWxsKSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZExhbmd1YWdlOiBzdHJpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRMYW5ndWFnZXMuaW5kZXhPZihwYXJhbXM/LmxvY2FsZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGFuZ3VhZ2UgPSBwYXJhbXM/LmxvY2FsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcz8ubG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXM/LmxvY2FsZSA9PT0gJ2RlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVWYXJpYW50cyA9IHN1cHBvcnRlZExhbmd1YWdlcy5maWx0ZXIoKGwpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5zdGFydHNXaXRoKCdkZS0nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVWYXJpYW50cz8ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMYW5ndWFnZSA9IGRlVmFyaWFudHNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFVybCByZXF1ZXN0ZWQgbGFuZ3VhZ2UgJHtwYXJhbXMubG9jYWxlfSwgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnV0IGFtYmlndW91cyB2YXJpYW50cyBhcmUgcHJlc2VudDogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgVXJsIHJlcXVlc3RlZCBsYW5ndWFnZSAke3BhcmFtcy5sb2NhbGV9LCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1dCBpdCB3YXMgbm90IGZvdW5kIG9yIGlzIG5vdCBjb25maWd1cmVkIGluIHRoZSBhbGxvd2VkIGxhbmd1YWdlczogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZExhbmd1YWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIC8vIFNlbGVjdCBzdG9yYWdlLmdldCgnbGFuZ3VhZ2UnKSBpZiBzZXQgbWVhbmluZ2Z1bGx5XG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh7IHN1cHBvcnRlZExhbmd1YWdlcywgc2VsZWN0ZWRMYW5ndWFnZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZExhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VTdG9yZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaTE4bkNvbmZpZy5vYmV5VXNlclByb2ZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvYmV5VXNlclByb2ZpbGUgaXMgZGlzYWJsZWQsIHVzaW5nIGRlZmF1bHQgbGFuZ3VhZ2UgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXNbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRMYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVN0b3JlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbmplY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2xhbmd1YWdlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChzdG9yYWdlTGFuZ3VhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1c2VTdG9yZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRMYW5ndWFnZXMuaW5kZXhPZihzdG9yYWdlTGFuZ3VhZ2UpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGFuZ3VhZ2UgPSBzdG9yYWdlTGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlU3RvcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlU3RvcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC8vIFVzZSBicm93c2VyIGxhbmd1YWdlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byB0aGUgZmlyc3Qgc3VwcG9ydGVkXG4gICAgICAgICAgICAgICAgLy8gbGFuZ3VhZ2UuXG4gICAgICAgICAgICAgICAgbWFwKCh7IHN1cHBvcnRlZExhbmd1YWdlcywgc2VsZWN0ZWRMYW5ndWFnZSwgdXNlU3RvcmVkIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkTGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlU3RvcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdCBicm93c2VyIGxhbmd1YWdlIGlmIHNldCBtZWFuaW5nZnVsbHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZExhbmd1YWdlcy5pbmRleE9mKHRoaXMudHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCkpICE9PSAtMVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGFuZ3VhZ2U6IHRoaXMudHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlU3RvcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdCBmaXJzdCBzdXBwb3J0ZWQgbGFuZ3VhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGFuZ3VhZ2U6IHN1cHBvcnRlZExhbmd1YWdlc1swXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VTdG9yZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLy8gU2V0IGZhbGxiYWNrIGxhbmd1YWdlXG4gICAgICAgICAgICAgICAgdGFwKCh7IHN1cHBvcnRlZExhbmd1YWdlcywgc2VsZWN0ZWRMYW5ndWFnZSwgdXNlU3RvcmVkIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VTdG9yZWQgJiYgdGhpcy5pMThuQ29uZmlnLm9iZXlVc2VyUHJvZmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCB0aGlzLmluamVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldChTZXNzaW9uU3RvcmFnZVNlcnZpY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldCgnbGFuZ3VhZ2UnLCBzZWxlY3RlZExhbmd1YWdlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRMYW5ndWFnZSA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZygnbm9uZScpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTGFuZ3VhZ2U/LnN0YXJ0c1dpdGgoJ2RlLScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZygnZGUnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLnNldERlZmF1bHRMYW5nKHN1cHBvcnRlZExhbmd1YWdlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAvLyBDb25maWd1cmUgYG5neC10cmFuc2xhdGVgIHRvIHVzZSB0aGUgZGV0ZXJtaW5lZCBsYW5ndWFnZSBhbmQgdHJpZ2dlciBsb2FkaW5nIG9mXG4gICAgICAgICAgICAgICAgLy8gdHJhbnNsYXRpb25zLlxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoeyBzZWxlY3RlZExhbmd1YWdlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2xhbmd1YWdlIHVzZWQ6ICcgKyBzZWxlY3RlZExhbmd1YWdlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZSA9IHNlbGVjdGVkTGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS51c2Uoc2VsZWN0ZWRMYW5ndWFnZSkucGlwZShtYXAoKCkgPT4gdm9pZCAwKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBOb3RpZnkgYW55b25lIHdhaXRpbmcgZm9yIHRyYW5zbGF0aW9ucyB0byBiZSBsb2FkZWQuXG4gICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZUxvYWRlZC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JJbml0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0aWFsaXplQ29yZG92YShzdXBwb3J0ZWRMYW5ndWFnZXMgPSBERUZBVUxUX1NVUFBPUlRFRF9MQU5HVUFHRVMpIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuYWRkTGFuZ3Moc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcbiAgICAgICAgbGV0IGxhbmd1YWdlID0gc3VwcG9ydGVkTGFuZ3VhZ2VzWzBdO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZyhsYW5ndWFnZSk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5ndWFnZSk7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuYXBwU2VydmljZS5nZXRMYW5ndWFnZSgpO1xuICAgICAgICBpZiAoc3VwcG9ydGVkTGFuZ3VhZ2VzLmluZGV4T2YoZGF0YSkgIT0gLTEpIHtcbiAgICAgICAgICAgIGxhbmd1YWdlID0gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5ndWFnZSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VMb2FkZWQubmV4dCh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHRoaXMudHJhbnNsYXRlLmdldFRyYW5zbGF0aW9uKGxhbmd1YWdlKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckluaXQoKTtcbiAgICB9XG5cbiAgICB3YWl0Rm9ySW5pdCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VMb2FkZWQucGlwZShcbiAgICAgICAgICAgIGZpcnN0KChsYW5ndWFnZUxvYWRlZCkgPT4gbGFuZ3VhZ2VMb2FkZWQpLFxuICAgICAgICAgICAgbWFwKCgpID0+IHZvaWQgMCksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIFNhbWUgYXMgYHRyYW5zbGF0ZS5jdXJyZW50TGFuZ2AuICovXG4gICAgZ2V0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgZ2V0SVNPTGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIExBTkdVQUdFU1t0aGlzLmxhbmd1YWdlXTtcbiAgICB9XG5cbiAgICBnZXRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SVNPTGFuZ3VhZ2UoKS5yZXBsYWNlKCdfJywgJy0nKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -6,6 +6,19 @@ import { InjectionToken } from '@angular/core';
|
|
|
6
6
|
* is the case when it is embedded as a web component into another website.
|
|
7
7
|
*/
|
|
8
8
|
export const ASSETS_BASE_PATH = new InjectionToken('ASSETS_BASE_PATH');
|
|
9
|
+
export class I18nConfig {
|
|
10
|
+
constructor() {
|
|
11
|
+
/**
|
|
12
|
+
* shall the user profile be read
|
|
13
|
+
* If not set, defaults to true
|
|
14
|
+
*/
|
|
15
|
+
this.obeyUserProfile = true;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* additional configuration options
|
|
20
|
+
*/
|
|
21
|
+
export const I18N_CONFIG = new InjectionToken('I18N_CONFIG');
|
|
9
22
|
/**
|
|
10
23
|
* custom additional uris to fetch language files from
|
|
11
24
|
*
|
|
@@ -15,4 +28,4 @@ export const ASSETS_BASE_PATH = new InjectionToken('ASSETS_BASE_PATH');
|
|
|
15
28
|
*{provide: ADDITIONAL_I18N_PROVIDER, useValue: (lang: string) => { return ['/edu-sharing/assets/i18n/myI18n/' + lang + '.json']}},
|
|
16
29
|
*/
|
|
17
30
|
export const ADDITIONAL_I18N_PROVIDER = new InjectionToken('ADDITIONAL_I18N_PROVIDER');
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0aW9uLXRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvdHlwZXMvaW5qZWN0aW9uLXRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQVMsa0JBQWtCLENBQUMsQ0FBQztBQUUvRSxNQUFNLE9BQU8sVUFBVTtJQUF2QjtRQUNJOzs7V0FHRztRQUNILG9CQUFlLEdBQWEsSUFBSSxDQUFDO0lBQ3JDLENBQUM7Q0FBQTtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFhLGFBQWEsQ0FBQyxDQUFDO0FBQ3pFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FDdEQsMEJBQTBCLENBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgY3VzdG9tIGJhc2UgcGF0aCBmb3IgdGhlIGFzc2V0cyBkaXJlY3RvcnkuXG4gKlxuICogVGhpcyBpcyB1c2VmdWwgd2hlbiB0aGUgYXBwbGljYXRpb24gY2Fubm90IGJlIHNlcnZlZCBmcm9tIHRoZSBiYXNlIEhSRUYgc2V0IGluIGluZGV4Lmh0bWwuIFRoaXNcbiAqIGlzIHRoZSBjYXNlIHdoZW4gaXQgaXMgZW1iZWRkZWQgYXMgYSB3ZWIgY29tcG9uZW50IGludG8gYW5vdGhlciB3ZWJzaXRlLlxuICovXG5leHBvcnQgY29uc3QgQVNTRVRTX0JBU0VfUEFUSCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdBU1NFVFNfQkFTRV9QQVRIJyk7XG5cbmV4cG9ydCBjbGFzcyBJMThuQ29uZmlnIHtcbiAgICAvKipcbiAgICAgKiBzaGFsbCB0aGUgdXNlciBwcm9maWxlIGJlIHJlYWRcbiAgICAgKiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byB0cnVlXG4gICAgICovXG4gICAgb2JleVVzZXJQcm9maWxlPzogYm9vbGVhbiA9IHRydWU7XG59XG5cbi8qKlxuICogYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IEkxOE5fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEkxOG5Db25maWc+KCdJMThOX0NPTkZJRycpO1xuLyoqXG4gKiBjdXN0b20gYWRkaXRpb25hbCB1cmlzIHRvIGZldGNoIGxhbmd1YWdlIGZpbGVzIGZyb21cbiAqXG4gKiBNaWdodCBiZSB1c2VkIGlmIGFkZGl0aW9uYWwgYW5ndWxhciBtb2R1bGVzIHJlcXVpcmUgbGFuZ3VhZ2UgZGF0YVxuICpcbiAqIEV4YW1wbGVcbiAqe3Byb3ZpZGU6IEFERElUSU9OQUxfSTE4Tl9QUk9WSURFUiwgdXNlVmFsdWU6IChsYW5nOiBzdHJpbmcpID0+IHsgcmV0dXJuIFsnL2VkdS1zaGFyaW5nL2Fzc2V0cy9pMThuL215STE4bi8nICsgbGFuZyArICcuanNvbiddfX0sXG4gKi9cbmV4cG9ydCBjb25zdCBBRERJVElPTkFMX0kxOE5fUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48KGxhbmc6IHN0cmluZykgPT4gc3RyaW5nW10+KFxuICAgICdBRERJVElPTkFMX0kxOE5fUFJPVklERVInLFxuKTtcbiJdfQ==
|
|
@@ -27,9 +27,16 @@ export class RestHelper {
|
|
|
27
27
|
return '';
|
|
28
28
|
}
|
|
29
29
|
static getTitleFromProperties(properties) {
|
|
30
|
-
|
|
31
|
-
? properties[RestConstants.LOM_PROP_TITLE]
|
|
32
|
-
: properties[RestConstants.CM_NAME]
|
|
30
|
+
const value = properties[RestConstants.LOM_PROP_TITLE]
|
|
31
|
+
? properties[RestConstants.LOM_PROP_TITLE]
|
|
32
|
+
: properties[RestConstants.CM_NAME];
|
|
33
|
+
if (Array.isArray(value)) {
|
|
34
|
+
return value.join(', ');
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
static hasAccessPermission(node, permission) {
|
|
39
|
+
return node.access && node.access.indexOf(permission) != -1;
|
|
33
40
|
}
|
|
34
41
|
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL3V0aWwvcmVzdC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFRLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7YUFDRixxQkFBZ0IsR0FBRywwQkFBMEIsQ0FBQztJQUN4RCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQVU7UUFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekQsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ00sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFVO1FBQzdCLElBQUksSUFBSSxFQUFFLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDYixPQUFPLElBQUksRUFBRSxJQUFJLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ25CLE9BQU8sVUFBVSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ00sTUFBTSxDQUFDLHNCQUFzQixDQUFDLFVBQWU7UUFDaEQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7WUFDbEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFVLEVBQUUsVUFBa0I7UUFDNUQsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlLCBSZXN0Q29uc3RhbnRzIH0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG4vKipcbiAqIERpZmZlcmVudCBoZWxwZXIgZnVuY3Rpb25zLCBtYXkgYmUgdXNlZCBnbG9iYWxseVxuICovXG5leHBvcnQgY2xhc3MgUmVzdEhlbHBlciB7XG4gICAgcHJvdGVjdGVkIHN0YXRpYyBTUEFDRVNfU1RPUkVfUkVGID0gJ3dvcmtzcGFjZTovL1NwYWNlc1N0b3JlLyc7XG4gICAgcHVibGljIHN0YXRpYyBnZXROYW1lKG5vZGU6IE5vZGUpOiBzdHJpbmcge1xuICAgICAgICBpZiAobm9kZS5uYW1lKSByZXR1cm4gbm9kZS5uYW1lO1xuICAgICAgICBpZiAobm9kZS5wcm9wZXJ0aWVzPy5bUmVzdENvbnN0YW50cy5DTV9OQU1FXSlcbiAgICAgICAgICAgIHJldHVybiBub2RlLnByb3BlcnRpZXNbUmVzdENvbnN0YW50cy5DTV9OQU1FXS5qb2luKCk7XG4gICAgICAgIGlmIChub2RlLnRpdGxlKSByZXR1cm4gbm9kZS50aXRsZTtcbiAgICAgICAgaWYgKG5vZGUucmVmKSByZXR1cm4gbm9kZS5yZWYuaWQ7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldFRpdGxlKG5vZGU6IE5vZGUpOiBzdHJpbmcge1xuICAgICAgICBpZiAobm9kZT8udGl0bGUpIHJldHVybiBub2RlLnRpdGxlO1xuICAgICAgICBpZiAobm9kZT8ubmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGU/Lm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGU/LnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN0SGVscGVyLmdldFRpdGxlRnJvbVByb3BlcnRpZXMobm9kZT8ucHJvcGVydGllcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldFRpdGxlRnJvbVByb3BlcnRpZXMocHJvcGVydGllczogYW55KTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9wZXJ0aWVzW1Jlc3RDb25zdGFudHMuTE9NX1BST1BfVElUTEVdXG4gICAgICAgICAgICA/IHByb3BlcnRpZXNbUmVzdENvbnN0YW50cy5MT01fUFJPUF9USVRMRV1cbiAgICAgICAgICAgIDogcHJvcGVydGllc1tSZXN0Q29uc3RhbnRzLkNNX05BTUVdO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5qb2luKCcsICcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGhhc0FjY2Vzc1Blcm1pc3Npb24obm9kZTogTm9kZSwgcGVybWlzc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBub2RlLmFjY2VzcyAmJiBub2RlLmFjY2Vzcy5pbmRleE9mKHBlcm1pc3Npb24pICE9IC0xO1xuICAgIH1cbn1cbiJdfQ==
|