@eui/core 15.4.0 → 15.4.1
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/LICENSE +296 -296
- package/README.md +26 -26
- package/assets/i18n-eui/bg.json +114 -114
- package/assets/i18n-eui/cs.json +114 -114
- package/assets/i18n-eui/da.json +114 -114
- package/assets/i18n-eui/de.json +114 -114
- package/assets/i18n-eui/el.json +114 -114
- package/assets/i18n-eui/en.json +113 -113
- package/assets/i18n-eui/es.json +114 -114
- package/assets/i18n-eui/et.json +114 -114
- package/assets/i18n-eui/fi.json +114 -114
- package/assets/i18n-eui/fr.json +114 -114
- package/assets/i18n-eui/ga.json +114 -114
- package/assets/i18n-eui/hr.json +114 -114
- package/assets/i18n-eui/hu.json +114 -114
- package/assets/i18n-eui/it.json +114 -114
- package/assets/i18n-eui/lt.json +114 -114
- package/assets/i18n-eui/lv.json +114 -114
- package/assets/i18n-eui/mt.json +114 -114
- package/assets/i18n-eui/nl.json +114 -114
- package/assets/i18n-eui/pl.json +114 -114
- package/assets/i18n-eui/pt.json +114 -114
- package/assets/i18n-eui/ro.json +114 -114
- package/assets/i18n-eui/sk.json +114 -114
- package/assets/i18n-eui/sl.json +114 -114
- package/assets/i18n-eui/sv.json +114 -114
- package/docs/classes/RouterMock.html +5 -5
- package/docs/dependencies.html +95 -7
- package/docs/index.html +36 -59
- package/docs/injectables/CoreAppEffects.html +51 -51
- package/docs/js/menu-wc.js +12 -7
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +1211 -1211
- package/docs/overview.html +171 -0
- package/esm2020/eui-core.mjs +4 -4
- package/esm2020/index.mjs +13 -13
- package/esm2020/lib/eui-core.module.mjs +78 -78
- package/esm2020/lib/helpers/date-helpers.mjs +3 -3
- package/esm2020/lib/helpers/dom-helpers.mjs +87 -87
- package/esm2020/lib/helpers/event-helpers.mjs +9 -9
- package/esm2020/lib/helpers/form-helpers.mjs +42 -42
- package/esm2020/lib/helpers/format-helpers.mjs +66 -66
- package/esm2020/lib/helpers/http-helpers.mjs +7 -7
- package/esm2020/lib/helpers/index.mjs +8 -8
- package/esm2020/lib/helpers/utils.mjs +7 -7
- package/esm2020/lib/interceptors/add-lang-param.interceptor.mjs +35 -35
- package/esm2020/lib/interceptors/cache-prevention.interceptor.mjs +21 -21
- package/esm2020/lib/interceptors/cors-security.interceptor.mjs +15 -15
- package/esm2020/lib/interceptors/csrf-prevention.interceptor.mjs +15 -15
- package/esm2020/lib/interceptors/eu-login-session-timeout-handling.interceptor.mjs +72 -72
- package/esm2020/lib/interceptors/index.mjs +8 -8
- package/esm2020/lib/interceptors/openid/index.mjs +4 -4
- package/esm2020/lib/interceptors/openid/openid-connect.interceptor.mjs +149 -149
- package/esm2020/lib/interceptors/openid/openid-connect.service.mjs +56 -56
- package/esm2020/lib/interceptors/openid/openid-connect.service.mock.mjs +8 -8
- package/esm2020/lib/interceptors/ux-request-error-model.interceptor.mjs +31 -31
- package/esm2020/lib/services/app/eui-init-app.mjs +29 -29
- package/esm2020/lib/services/app/eui-pre-init-app.mjs +43 -43
- package/esm2020/lib/services/app/eui-startup.mjs +40 -40
- package/esm2020/lib/services/app/factories/log.mjs +55 -55
- package/esm2020/lib/services/app/index.mjs +2 -2
- package/esm2020/lib/services/config/defaults.mjs +68 -68
- package/esm2020/lib/services/config/tokens.mjs +74 -74
- package/esm2020/lib/services/errors/eui.error.mjs +38 -38
- package/esm2020/lib/services/errors/global-error-handler.mjs +24 -24
- package/esm2020/lib/services/errors/http-error-handler-callback-functions.mjs +17 -17
- package/esm2020/lib/services/errors/http-error-handler.interceptor.mjs +55 -55
- package/esm2020/lib/services/errors/index.mjs +5 -5
- package/esm2020/lib/services/i18n/i18n.loader.mjs +198 -198
- package/esm2020/lib/services/i18n/i18n.resource.mjs +43 -43
- package/esm2020/lib/services/i18n/i18n.service.mjs +228 -228
- package/esm2020/lib/services/i18n/i18n.service.mock.mjs +38 -38
- package/esm2020/lib/services/i18n/index.mjs +6 -6
- package/esm2020/lib/services/index.mjs +19 -19
- package/esm2020/lib/services/locale/index.mjs +3 -3
- package/esm2020/lib/services/locale/locale.service.mjs +232 -232
- package/esm2020/lib/services/locale/locale.service.mock.mjs +43 -43
- package/esm2020/lib/services/log/index.mjs +4 -4
- package/esm2020/lib/services/log/log.module.mjs +38 -38
- package/esm2020/lib/services/log/log.service.mjs +51 -51
- package/esm2020/lib/services/log/log.service.mock.mjs +7 -7
- package/esm2020/lib/services/permission/permission.service.mjs +110 -110
- package/esm2020/lib/services/queue/api-queue.service.mjs +137 -137
- package/esm2020/lib/services/queue/api-queue.service.mock.mjs +23 -23
- package/esm2020/lib/services/queue/index.mjs +3 -3
- package/esm2020/lib/services/storage/async-storage.service.mjs +17 -17
- package/esm2020/lib/services/storage/async-storage.service.mock.mjs +22 -22
- package/esm2020/lib/services/storage/index.mjs +8 -8
- package/esm2020/lib/services/storage/local-forage.service.mjs +93 -93
- package/esm2020/lib/services/storage/local-storage.service.mjs +75 -75
- package/esm2020/lib/services/storage/session-storage.service.mjs +75 -75
- package/esm2020/lib/services/storage/storage.service.mjs +6 -6
- package/esm2020/lib/services/storage/storage.service.mock.mjs +12 -12
- package/esm2020/lib/services/store/actions/app.actions.mjs +74 -74
- package/esm2020/lib/services/store/actions/i18n.actions.mjs +11 -11
- package/esm2020/lib/services/store/actions/index.mjs +6 -6
- package/esm2020/lib/services/store/actions/locale.actions.mjs +11 -11
- package/esm2020/lib/services/store/actions/notifications.actions.mjs +11 -11
- package/esm2020/lib/services/store/actions/user.actions.mjs +39 -39
- package/esm2020/lib/services/store/effects/app.effects.mjs +55 -55
- package/esm2020/lib/services/store/effects/index.mjs +4 -4
- package/esm2020/lib/services/store/index.mjs +6 -6
- package/esm2020/lib/services/store/reducers/app.reducers.mjs +56 -56
- package/esm2020/lib/services/store/reducers/core.reducers.mjs +13 -13
- package/esm2020/lib/services/store/reducers/i18n.reducers.mjs +16 -16
- package/esm2020/lib/services/store/reducers/index.mjs +8 -8
- package/esm2020/lib/services/store/reducers/locale.reducers.mjs +16 -16
- package/esm2020/lib/services/store/reducers/meta.reducers.mjs +89 -89
- package/esm2020/lib/services/store/reducers/notifications.reducers.mjs +13 -13
- package/esm2020/lib/services/store/reducers/user.reducers.mjs +43 -43
- package/esm2020/lib/services/store/store.service.mjs +112 -112
- package/esm2020/lib/services/store/store.service.mock.mjs +22 -22
- package/esm2020/lib/services/user/index.mjs +3 -3
- package/esm2020/lib/services/user/user.service.mjs +64 -64
- package/esm2020/lib/services/user/user.service.mock.mjs +32 -32
- package/esm2020/lib/services/ux-app-shell.service.mjs +690 -690
- package/esm2020/lib/services/ux-dynamic-component/ux-dynamic-component.service.mjs +63 -63
- package/esm2020/lib/services/ux-dynamic-menu/ux-dynamic-menu.service.mjs +66 -66
- package/esm2020/lib/services/ux-error-feedback/ux-error-feedback.service.mjs +99 -99
- package/esm2020/lib/services/ux-error-feedback/ux-error-handler.operator.mjs +16 -16
- package/esm2020/lib/services/ux-timezone.service.mjs +716 -716
- package/fesm2015/eui-core.mjs +4484 -4484
- package/fesm2015/eui-core.mjs.map +1 -1
- package/fesm2020/eui-core.mjs +4538 -4538
- package/fesm2020/eui-core.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/eui-core.module.d.ts +20 -20
- package/lib/helpers/date-helpers.d.ts +2 -2
- package/lib/helpers/dom-helpers.d.ts +26 -26
- package/lib/helpers/event-helpers.d.ts +1 -1
- package/lib/helpers/form-helpers.d.ts +10 -10
- package/lib/helpers/format-helpers.d.ts +12 -12
- package/lib/helpers/http-helpers.d.ts +2 -2
- package/lib/helpers/index.d.ts +7 -7
- package/lib/helpers/utils.d.ts +6 -6
- package/lib/interceptors/add-lang-param.interceptor.d.ts +16 -16
- package/lib/interceptors/cache-prevention.interceptor.d.ts +8 -8
- package/lib/interceptors/cors-security.interceptor.d.ts +8 -8
- package/lib/interceptors/csrf-prevention.interceptor.d.ts +8 -8
- package/lib/interceptors/eu-login-session-timeout-handling.interceptor.d.ts +12 -12
- package/lib/interceptors/index.d.ts +7 -7
- package/lib/interceptors/openid/index.d.ts +3 -3
- package/lib/interceptors/openid/openid-connect.interceptor.d.ts +14 -14
- package/lib/interceptors/openid/openid-connect.service.d.ts +17 -17
- package/lib/interceptors/openid/openid-connect.service.mock.d.ts +5 -5
- package/lib/interceptors/ux-request-error-model.interceptor.d.ts +13 -13
- package/lib/services/app/eui-init-app.d.ts +2 -2
- package/lib/services/app/eui-pre-init-app.d.ts +16 -16
- package/lib/services/app/eui-startup.d.ts +4 -4
- package/lib/services/app/factories/log.d.ts +25 -25
- package/lib/services/app/index.d.ts +1 -1
- package/lib/services/config/defaults.d.ts +11 -11
- package/lib/services/config/tokens.d.ts +19 -19
- package/lib/services/errors/eui.error.d.ts +15 -15
- package/lib/services/errors/global-error-handler.d.ts +10 -10
- package/lib/services/errors/http-error-handler-callback-functions.d.ts +6 -6
- package/lib/services/errors/http-error-handler.interceptor.d.ts +22 -22
- package/lib/services/errors/index.d.ts +4 -4
- package/lib/services/i18n/i18n.loader.d.ts +79 -79
- package/lib/services/i18n/i18n.resource.d.ts +35 -35
- package/lib/services/i18n/i18n.service.d.ts +73 -73
- package/lib/services/i18n/i18n.service.mock.d.ts +19 -19
- package/lib/services/i18n/index.d.ts +4 -4
- package/lib/services/index.d.ts +18 -18
- package/lib/services/locale/index.d.ts +2 -2
- package/lib/services/locale/locale.service.d.ts +68 -68
- package/lib/services/locale/locale.service.mock.d.ts +15 -15
- package/lib/services/log/index.d.ts +3 -3
- package/lib/services/log/log.module.d.ts +15 -15
- package/lib/services/log/log.service.d.ts +27 -27
- package/lib/services/log/log.service.mock.d.ts +4 -4
- package/lib/services/permission/permission.service.d.ts +52 -52
- package/lib/services/queue/api-queue.service.d.ts +76 -76
- package/lib/services/queue/api-queue.service.mock.d.ts +13 -13
- package/lib/services/queue/index.d.ts +2 -2
- package/lib/services/storage/async-storage.service.d.ts +44 -44
- package/lib/services/storage/async-storage.service.mock.d.ts +11 -11
- package/lib/services/storage/index.d.ts +7 -7
- package/lib/services/storage/local-forage.service.d.ts +48 -48
- package/lib/services/storage/local-storage.service.d.ts +34 -34
- package/lib/services/storage/session-storage.service.d.ts +34 -34
- package/lib/services/storage/storage.service.d.ts +28 -28
- package/lib/services/storage/storage.service.mock.d.ts +7 -7
- package/lib/services/store/actions/app.actions.d.ts +82 -82
- package/lib/services/store/actions/i18n.actions.d.ts +11 -11
- package/lib/services/store/actions/index.d.ts +5 -5
- package/lib/services/store/actions/locale.actions.d.ts +11 -11
- package/lib/services/store/actions/notifications.actions.d.ts +10 -10
- package/lib/services/store/actions/user.actions.d.ts +35 -35
- package/lib/services/store/effects/app.effects.d.ts +19 -19
- package/lib/services/store/effects/index.d.ts +3 -3
- package/lib/services/store/index.d.ts +5 -5
- package/lib/services/store/reducers/app.reducers.d.ts +3 -3
- package/lib/services/store/reducers/core.reducers.d.ts +3 -3
- package/lib/services/store/reducers/i18n.reducers.d.ts +3 -3
- package/lib/services/store/reducers/index.d.ts +7 -7
- package/lib/services/store/reducers/locale.reducers.d.ts +3 -3
- package/lib/services/store/reducers/meta.reducers.d.ts +17 -17
- package/lib/services/store/reducers/notifications.reducers.d.ts +3 -3
- package/lib/services/store/reducers/user.reducers.d.ts +3 -3
- package/lib/services/store/store.service.d.ts +43 -43
- package/lib/services/store/store.service.mock.d.ts +12 -12
- package/lib/services/user/index.d.ts +2 -2
- package/lib/services/user/user.service.d.ts +15 -15
- package/lib/services/user/user.service.mock.d.ts +16 -16
- package/lib/services/ux-app-shell.service.d.ts +155 -155
- package/lib/services/ux-dynamic-component/ux-dynamic-component.service.d.ts +36 -36
- package/lib/services/ux-dynamic-menu/ux-dynamic-menu.service.d.ts +14 -14
- package/lib/services/ux-error-feedback/ux-error-feedback.service.d.ts +35 -35
- package/lib/services/ux-error-feedback/ux-error-handler.operator.d.ts +3 -3
- package/lib/services/ux-timezone.service.d.ts +269 -269
- package/package.json +2 -2
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpResponse } from '@angular/common/http';
|
|
3
|
-
import { tap } from 'rxjs/operators';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
// The EuLoginSessionTimeoutHandlingInterceptor assumes that the EU login client is configured with:
|
|
6
|
-
// <redirectionInterceptor>eu.cec.digit.ecas.client.http.ajax.JsonAjaxRedirectionInterceptor</redirectionInterceptor>
|
|
7
|
-
// WARNING: The default EU login client behaviour that provides the JSON-un-parsable login HTML page, is no longer supported!
|
|
8
|
-
export class EuLoginSessionTimeoutHandlingInterceptor {
|
|
9
|
-
intercept(request, next) {
|
|
10
|
-
return next.handle(request).pipe(tap((event) => {
|
|
11
|
-
this.checkRequestSuccessForEULoginSessionTimeout(request, event);
|
|
12
|
-
return event;
|
|
13
|
-
}, (error) => {
|
|
14
|
-
this.checkRequestErrorForEULoginSessionTimeout(request, error);
|
|
15
|
-
}));
|
|
16
|
-
}
|
|
17
|
-
checkRequestSuccessForEULoginSessionTimeout(request, event) {
|
|
18
|
-
if (event instanceof HttpResponse) {
|
|
19
|
-
if (this.isSsoResponse(event.body)) {
|
|
20
|
-
this.reauthenticate(request, event);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
25
|
-
checkRequestErrorForEULoginSessionTimeout(request, response) {
|
|
26
|
-
// intentionally blank; meant for overriding
|
|
27
|
-
}
|
|
28
|
-
isSsoResponse(body) {
|
|
29
|
-
if (body) {
|
|
30
|
-
if (typeof body !== 'string') {
|
|
31
|
-
return (body.success === false &&
|
|
32
|
-
body.status === 'ECAS_AUTHENTICATION_REQUIRED' &&
|
|
33
|
-
body.code === 303 &&
|
|
34
|
-
body.message === 'session expired');
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
const html = body;
|
|
38
|
-
try {
|
|
39
|
-
return ((html.indexOf('<meta name="Keywords" content="EU Login, ECAS, Authentication, Security" />') >= 0 &&
|
|
40
|
-
html.indexOf('<meta name="Description" content="EU Login" />') >= 0) ||
|
|
41
|
-
html.indexOf('<meta name="Description" content="European Commission Authentication Service" />') >= 0 ||
|
|
42
|
-
html.indexOf('<title>Mock Login Form</title>') >= 0 ||
|
|
43
|
-
html.indexOf('<title>Redirecting To ECAS</title>') >= 0 ||
|
|
44
|
-
html === '{ success : false, status : "ECAS_AUTHENTICATION_REQUIRED", code : 303, message : "session expired" }' ||
|
|
45
|
-
// eslint-disable-next-line max-len
|
|
46
|
-
JSON.stringify(JSON.parse(html)) ===
|
|
47
|
-
JSON.stringify({
|
|
48
|
-
success: false,
|
|
49
|
-
status: 'ECAS_AUTHENTICATION_REQUIRED',
|
|
50
|
-
code: 303,
|
|
51
|
-
message: 'session expired',
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
reauthenticate(request, response) {
|
|
64
|
-
document.location.reload();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/** @nocollapse */ EuLoginSessionTimeoutHandlingInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EuLoginSessionTimeoutHandlingInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
68
|
-
/** @nocollapse */ EuLoginSessionTimeoutHandlingInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EuLoginSessionTimeoutHandlingInterceptor });
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EuLoginSessionTimeoutHandlingInterceptor, decorators: [{
|
|
70
|
-
type: Injectable
|
|
71
|
-
}] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpResponse } from '@angular/common/http';
|
|
3
|
+
import { tap } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
// The EuLoginSessionTimeoutHandlingInterceptor assumes that the EU login client is configured with:
|
|
6
|
+
// <redirectionInterceptor>eu.cec.digit.ecas.client.http.ajax.JsonAjaxRedirectionInterceptor</redirectionInterceptor>
|
|
7
|
+
// WARNING: The default EU login client behaviour that provides the JSON-un-parsable login HTML page, is no longer supported!
|
|
8
|
+
export class EuLoginSessionTimeoutHandlingInterceptor {
|
|
9
|
+
intercept(request, next) {
|
|
10
|
+
return next.handle(request).pipe(tap((event) => {
|
|
11
|
+
this.checkRequestSuccessForEULoginSessionTimeout(request, event);
|
|
12
|
+
return event;
|
|
13
|
+
}, (error) => {
|
|
14
|
+
this.checkRequestErrorForEULoginSessionTimeout(request, error);
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
checkRequestSuccessForEULoginSessionTimeout(request, event) {
|
|
18
|
+
if (event instanceof HttpResponse) {
|
|
19
|
+
if (this.isSsoResponse(event.body)) {
|
|
20
|
+
this.reauthenticate(request, event);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
25
|
+
checkRequestErrorForEULoginSessionTimeout(request, response) {
|
|
26
|
+
// intentionally blank; meant for overriding
|
|
27
|
+
}
|
|
28
|
+
isSsoResponse(body) {
|
|
29
|
+
if (body) {
|
|
30
|
+
if (typeof body !== 'string') {
|
|
31
|
+
return (body.success === false &&
|
|
32
|
+
body.status === 'ECAS_AUTHENTICATION_REQUIRED' &&
|
|
33
|
+
body.code === 303 &&
|
|
34
|
+
body.message === 'session expired');
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const html = body;
|
|
38
|
+
try {
|
|
39
|
+
return ((html.indexOf('<meta name="Keywords" content="EU Login, ECAS, Authentication, Security" />') >= 0 &&
|
|
40
|
+
html.indexOf('<meta name="Description" content="EU Login" />') >= 0) ||
|
|
41
|
+
html.indexOf('<meta name="Description" content="European Commission Authentication Service" />') >= 0 ||
|
|
42
|
+
html.indexOf('<title>Mock Login Form</title>') >= 0 ||
|
|
43
|
+
html.indexOf('<title>Redirecting To ECAS</title>') >= 0 ||
|
|
44
|
+
html === '{ success : false, status : "ECAS_AUTHENTICATION_REQUIRED", code : 303, message : "session expired" }' ||
|
|
45
|
+
// eslint-disable-next-line max-len
|
|
46
|
+
JSON.stringify(JSON.parse(html)) ===
|
|
47
|
+
JSON.stringify({
|
|
48
|
+
success: false,
|
|
49
|
+
status: 'ECAS_AUTHENTICATION_REQUIRED',
|
|
50
|
+
code: 303,
|
|
51
|
+
message: 'session expired',
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
reauthenticate(request, response) {
|
|
64
|
+
document.location.reload();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** @nocollapse */ EuLoginSessionTimeoutHandlingInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EuLoginSessionTimeoutHandlingInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
68
|
+
/** @nocollapse */ EuLoginSessionTimeoutHandlingInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EuLoginSessionTimeoutHandlingInterceptor });
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EuLoginSessionTimeoutHandlingInterceptor, decorators: [{
|
|
70
|
+
type: Injectable
|
|
71
|
+
}] });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXUtbG9naW4tc2Vzc2lvbi10aW1lb3V0LWhhbmRsaW5nLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9pbnRlcmNlcHRvcnMvZXUtbG9naW4tc2Vzc2lvbi10aW1lb3V0LWhhbmRsaW5nLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUF3RCxZQUFZLEVBQW9CLE1BQU0sc0JBQXNCLENBQUM7QUFFNUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUVyQyxvR0FBb0c7QUFDcEcscUhBQXFIO0FBQ3JILDZIQUE2SDtBQUU3SCxNQUFNLE9BQU8sd0NBQXdDO0lBQ2pELFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FDQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ04sSUFBSSxDQUFDLDJDQUEyQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqRSxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNOLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUNKLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFUywyQ0FBMkMsQ0FBQyxPQUF5QixFQUFFLEtBQXFCO1FBQ2xHLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQXFCLEtBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDckQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQXFCLEtBQUssQ0FBQyxDQUFDO2FBQzFEO1NBQ0o7SUFDTCxDQUFDO0lBRUQsNkRBQTZEO0lBQ25ELHlDQUF5QyxDQUFDLE9BQXlCLEVBQUUsUUFBMEI7UUFDckcsNENBQTRDO0lBQ2hELENBQUM7SUFFUyxhQUFhLENBQUMsSUFBUztRQUM3QixJQUFJLElBQUksRUFBRTtZQUNOLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUMxQixPQUFPLENBQ0gsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLO29CQUN0QixJQUFJLENBQUMsTUFBTSxLQUFLLDhCQUE4QjtvQkFDOUMsSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHO29CQUNqQixJQUFJLENBQUMsT0FBTyxLQUFLLGlCQUFpQixDQUNyQyxDQUFDO2FBQ0w7aUJBQU07Z0JBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixJQUFJO29CQUNBLE9BQU8sQ0FDSCxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsNkVBQTZFLENBQUMsSUFBSSxDQUFDO3dCQUM3RixJQUFJLENBQUMsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLGtGQUFrRixDQUFDLElBQUksQ0FBQzt3QkFDckcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUM7d0JBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsb0NBQW9DLENBQUMsSUFBSSxDQUFDO3dCQUN2RCxJQUFJLEtBQUssdUdBQXVHO3dCQUNoSCxtQ0FBbUM7d0JBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQ0FDWCxPQUFPLEVBQUUsS0FBSztnQ0FDZCxNQUFNLEVBQUUsOEJBQThCO2dDQUN0QyxJQUFJLEVBQUUsR0FBRztnQ0FDVCxPQUFPLEVBQUUsaUJBQWlCOzZCQUM3QixDQUFDLENBQ1QsQ0FBQztpQkFDTDtnQkFBQyxPQUFPLENBQUMsRUFBRTtvQkFDUixPQUFPLEtBQUssQ0FBQztpQkFDaEI7YUFDSjtTQUNKO2FBQU07WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFUyxjQUFjLENBQUMsT0FBeUIsRUFBRSxRQUEwQjtRQUMxRSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQy9CLENBQUM7O3dKQW5FUSx3Q0FBd0M7NEpBQXhDLHdDQUF3QzsyRkFBeEMsd0NBQXdDO2tCQURwRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UsIEh0dHBSZXNwb25zZUJhc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLy8gVGhlIEV1TG9naW5TZXNzaW9uVGltZW91dEhhbmRsaW5nSW50ZXJjZXB0b3IgYXNzdW1lcyB0aGF0IHRoZSBFVSBsb2dpbiBjbGllbnQgaXMgY29uZmlndXJlZCB3aXRoOlxyXG4vLyA8cmVkaXJlY3Rpb25JbnRlcmNlcHRvcj5ldS5jZWMuZGlnaXQuZWNhcy5jbGllbnQuaHR0cC5hamF4Lkpzb25BamF4UmVkaXJlY3Rpb25JbnRlcmNlcHRvcjwvcmVkaXJlY3Rpb25JbnRlcmNlcHRvcj5cclxuLy8gV0FSTklORzogVGhlIGRlZmF1bHQgRVUgbG9naW4gY2xpZW50IGJlaGF2aW91ciB0aGF0IHByb3ZpZGVzIHRoZSBKU09OLXVuLXBhcnNhYmxlIGxvZ2luIEhUTUwgcGFnZSwgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCFcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRXVMb2dpblNlc3Npb25UaW1lb3V0SGFuZGxpbmdJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcChcclxuICAgICAgICAgICAgICAgIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tSZXF1ZXN0U3VjY2Vzc0ZvckVVTG9naW5TZXNzaW9uVGltZW91dChyZXF1ZXN0LCBldmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50O1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tSZXF1ZXN0RXJyb3JGb3JFVUxvZ2luU2Vzc2lvblRpbWVvdXQocmVxdWVzdCwgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY2hlY2tSZXF1ZXN0U3VjY2Vzc0ZvckVVTG9naW5TZXNzaW9uVGltZW91dChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBldmVudDogSHR0cEV2ZW50PGFueT4pIHtcclxuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTc29SZXNwb25zZSgoPEh0dHBSZXNwb25zZTxhbnk+PmV2ZW50KS5ib2R5KSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWF1dGhlbnRpY2F0ZShyZXF1ZXN0LCA8SHR0cFJlc3BvbnNlPGFueT4+ZXZlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICAgIHByb3RlY3RlZCBjaGVja1JlcXVlc3RFcnJvckZvckVVTG9naW5TZXNzaW9uVGltZW91dChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCByZXNwb25zZTogSHR0cFJlc3BvbnNlQmFzZSkge1xyXG4gICAgICAgIC8vIGludGVudGlvbmFsbHkgYmxhbms7IG1lYW50IGZvciBvdmVycmlkaW5nXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGlzU3NvUmVzcG9uc2UoYm9keTogYW55KSB7XHJcbiAgICAgICAgaWYgKGJvZHkpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBib2R5ICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICBib2R5LnN1Y2Nlc3MgPT09IGZhbHNlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgYm9keS5zdGF0dXMgPT09ICdFQ0FTX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGJvZHkuY29kZSA9PT0gMzAzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgYm9keS5tZXNzYWdlID09PSAnc2Vzc2lvbiBleHBpcmVkJ1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBib2R5O1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHRtbC5pbmRleE9mKCc8bWV0YSBuYW1lPVwiS2V5d29yZHNcIiBjb250ZW50PVwiRVUgTG9naW4sIEVDQVMsIEF1dGhlbnRpY2F0aW9uLCBTZWN1cml0eVwiIC8+JykgPj0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5pbmRleE9mKCc8bWV0YSBuYW1lPVwiRGVzY3JpcHRpb25cIiBjb250ZW50PVwiRVUgTG9naW5cIiAvPicpID49IDApIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuaW5kZXhPZignPG1ldGEgbmFtZT1cIkRlc2NyaXB0aW9uXCIgY29udGVudD1cIkV1cm9wZWFuIENvbW1pc3Npb24gQXV0aGVudGljYXRpb24gU2VydmljZVwiIC8+JykgPj0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmluZGV4T2YoJzx0aXRsZT5Nb2NrIExvZ2luIEZvcm08L3RpdGxlPicpID49IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5pbmRleE9mKCc8dGl0bGU+UmVkaXJlY3RpbmcgVG8gRUNBUzwvdGl0bGU+JykgPj0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sID09PSAneyBzdWNjZXNzIDogZmFsc2UsIHN0YXR1cyA6IFwiRUNBU19BVVRIRU5USUNBVElPTl9SRVFVSVJFRFwiLCBjb2RlIDogMzAzLCBtZXNzYWdlIDogXCJzZXNzaW9uIGV4cGlyZWRcIiB9JyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShKU09OLnBhcnNlKGh0bWwpKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdFQ0FTX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiAzMDMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ3Nlc3Npb24gZXhwaXJlZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhdXRoZW50aWNhdGUocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgcmVzcG9uc2U6IEh0dHBSZXNwb25zZUJhc2UpIHtcclxuICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './add-lang-param.interceptor';
|
|
2
|
-
export * from './cache-prevention.interceptor';
|
|
3
|
-
export * from './cors-security.interceptor';
|
|
4
|
-
export * from './csrf-prevention.interceptor';
|
|
5
|
-
export * from './eu-login-session-timeout-handling.interceptor';
|
|
6
|
-
export * from './ux-request-error-model.interceptor';
|
|
7
|
-
export * from './openid/index';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './add-lang-param.interceptor';
|
|
2
|
+
export * from './cache-prevention.interceptor';
|
|
3
|
+
export * from './cors-security.interceptor';
|
|
4
|
+
export * from './csrf-prevention.interceptor';
|
|
5
|
+
export * from './eu-login-session-timeout-handling.interceptor';
|
|
6
|
+
export * from './ux-request-error-model.interceptor';
|
|
7
|
+
export * from './openid/index';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2ludGVyY2VwdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hZGQtbGFuZy1wYXJhbS5pbnRlcmNlcHRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2FjaGUtcHJldmVudGlvbi5pbnRlcmNlcHRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29ycy1zZWN1cml0eS5pbnRlcmNlcHRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY3NyZi1wcmV2ZW50aW9uLmludGVyY2VwdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi9ldS1sb2dpbi1zZXNzaW9uLXRpbWVvdXQtaGFuZGxpbmcuaW50ZXJjZXB0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL3V4LXJlcXVlc3QtZXJyb3ItbW9kZWwuaW50ZXJjZXB0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL29wZW5pZC9pbmRleCc7XHJcbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './openid-connect.interceptor';
|
|
2
|
-
export * from './openid-connect.service';
|
|
3
|
-
export * from './openid-connect.service.mock';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './openid-connect.interceptor';
|
|
2
|
+
export * from './openid-connect.service';
|
|
3
|
+
export * from './openid-connect.service.mock';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVyY2VwdG9ycy9vcGVuaWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29wZW5pZC1jb25uZWN0LmludGVyY2VwdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi9vcGVuaWQtY29ubmVjdC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9vcGVuaWQtY29ubmVjdC5zZXJ2aWNlLm1vY2snO1xyXG4iXX0=
|
|
@@ -1,149 +1,149 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpErrorResponse, HttpEventType, HttpHeaders, } from '@angular/common/http';
|
|
3
|
-
import { of, Subject, throwError } from 'rxjs';
|
|
4
|
-
import { catchError } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class OpenIdConnectInterceptor {
|
|
7
|
-
constructor() {
|
|
8
|
-
// By default, the original request should at least be retries once in case the cached API Gateway token expires:
|
|
9
|
-
this.defaultMaximumRequestRetries = 1;
|
|
10
|
-
// check if the OpenIdConnect is defined
|
|
11
|
-
if (typeof OpenIdConnect === 'undefined') {
|
|
12
|
-
console.error('Please include the script openid-login.js in your index.html file.', 'For more details, please consult the documentation regarding the Http Interceptors and OpenID Connect configuration.');
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
intercept(request, next, retryCount = 0, retryCallback) {
|
|
16
|
-
if (typeof OpenIdConnect !== 'undefined') {
|
|
17
|
-
let authorizedRequest = retryCallback;
|
|
18
|
-
if (!authorizedRequest) {
|
|
19
|
-
authorizedRequest = new Subject();
|
|
20
|
-
}
|
|
21
|
-
OpenIdConnect.getAuthorizationHeaders(request.urlWithParams, (headers) => {
|
|
22
|
-
let newRequest = request;
|
|
23
|
-
if (headers) {
|
|
24
|
-
let newHeaders = request.headers;
|
|
25
|
-
if (newHeaders) {
|
|
26
|
-
for (const headerName in headers) {
|
|
27
|
-
// eslint-disable-next-line no-prototype-builtins
|
|
28
|
-
if (headers.hasOwnProperty(headerName)) {
|
|
29
|
-
newHeaders = newHeaders.set(headerName, headers[headerName]);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
newHeaders = new HttpHeaders(headers);
|
|
35
|
-
}
|
|
36
|
-
newRequest = request.clone({
|
|
37
|
-
withCredentials: false,
|
|
38
|
-
headers: newHeaders,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
// Don't mix the next line with the line below it.
|
|
42
|
-
// We would get a "Cannot access 'subscription' before initialization" error.
|
|
43
|
-
let subscription = null;
|
|
44
|
-
subscription = next
|
|
45
|
-
.handle(newRequest)
|
|
46
|
-
.pipe(catchError((response) => this.handleErrorResponse(response, request, next, retryCount, authorizedRequest, subscription)))
|
|
47
|
-
.subscribe((httpEvent) => {
|
|
48
|
-
if (httpEvent) {
|
|
49
|
-
authorizedRequest.next(httpEvent);
|
|
50
|
-
if (httpEvent.type === HttpEventType.Response) {
|
|
51
|
-
if (subscription) {
|
|
52
|
-
subscription.unsubscribe();
|
|
53
|
-
}
|
|
54
|
-
authorizedRequest.complete();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
}, (errorResponse) => {
|
|
59
|
-
const errorProperties = {
|
|
60
|
-
error: errorResponse,
|
|
61
|
-
};
|
|
62
|
-
if (errorResponse) {
|
|
63
|
-
errorProperties.status = errorResponse.status;
|
|
64
|
-
errorProperties.statusText = errorResponse.statusText;
|
|
65
|
-
}
|
|
66
|
-
return this.handleErrorResponse(new HttpErrorResponse(errorProperties), request, next, retryCount, authorizedRequest, null);
|
|
67
|
-
});
|
|
68
|
-
return authorizedRequest;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
return next.handle(request);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
handleErrorResponse(response, originalRequest, next, retryCount = 0, retryCallback, subscription) {
|
|
75
|
-
if (response) {
|
|
76
|
-
if (response.error && response.error.error === 'invalid_request') {
|
|
77
|
-
// The ID token is invalid or incorrect; retrieve another one:
|
|
78
|
-
OpenIdConnect.renewIdToken();
|
|
79
|
-
}
|
|
80
|
-
else if (this.apiGatewayTokenExpired(response)) {
|
|
81
|
-
OpenIdConnect.clearCachedApiGatewayAccessToken();
|
|
82
|
-
return this.retryRequest(originalRequest, response, next, retryCount, retryCallback, subscription);
|
|
83
|
-
}
|
|
84
|
-
else if (response.status === 401 || response.status === 403) {
|
|
85
|
-
// The EU Login access token is invalid. (403)
|
|
86
|
-
// The target service is unable to read the access token, for example because the EU Login session ended. (401)
|
|
87
|
-
// Retry in case the access token became invalid too quickly:
|
|
88
|
-
return this.retryRequest(originalRequest, response, next, retryCount, retryCallback, subscription);
|
|
89
|
-
}
|
|
90
|
-
else if (response.status === 0) {
|
|
91
|
-
// One of the access token requests or the original request was not sent.
|
|
92
|
-
// Most likely one of the CORS pre-flight requests failed, or the browser is offline.
|
|
93
|
-
console.warn('The OpenID Connect call may have issues:\n' +
|
|
94
|
-
'* the CORS pre-flight requests for the OpenID Connect access tokens or for the REST call could be failing\n' +
|
|
95
|
-
'* the browser could be currently offline.');
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
if (subscription) {
|
|
99
|
-
subscription.unsubscribe();
|
|
100
|
-
}
|
|
101
|
-
if (retryCallback) {
|
|
102
|
-
retryCallback.error(response);
|
|
103
|
-
retryCallback.complete();
|
|
104
|
-
}
|
|
105
|
-
return throwError(response);
|
|
106
|
-
}
|
|
107
|
-
retryRequest(originalRequest, response, next, retryCount = 0, retryCallback, subscription) {
|
|
108
|
-
if (retryCount < this.maximumRequestRetries()) {
|
|
109
|
-
this.intercept(originalRequest, next, retryCount + 1, retryCallback);
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
console.error('The OpenID Connect call may have issues:\n' +
|
|
113
|
-
'* the client ID could be invalid\n' +
|
|
114
|
-
'* the API Gateway access token could be invalid\n' +
|
|
115
|
-
'* the EU Login access token for the target service could be invalid.');
|
|
116
|
-
if (subscription) {
|
|
117
|
-
subscription.unsubscribe();
|
|
118
|
-
}
|
|
119
|
-
if (retryCallback) {
|
|
120
|
-
retryCallback.error(response);
|
|
121
|
-
retryCallback.complete();
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return of(null);
|
|
125
|
-
}
|
|
126
|
-
apiGatewayTokenExpired(response) {
|
|
127
|
-
if (response && response.status === 401) {
|
|
128
|
-
const message = '' + response.error;
|
|
129
|
-
return message.indexOf('<ams:code>900901</ams:code>') >= 0;
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
maximumRequestRetries() {
|
|
136
|
-
if (OpenIdConnect.config && OpenIdConnect.config.maximumRequestRetries >= 0) {
|
|
137
|
-
return OpenIdConnect.config.maximumRequestRetries;
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
return this.defaultMaximumRequestRetries;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
/** @nocollapse */ OpenIdConnectInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OpenIdConnectInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
145
|
-
/** @nocollapse */ OpenIdConnectInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OpenIdConnectInterceptor });
|
|
146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OpenIdConnectInterceptor, decorators: [{
|
|
147
|
-
type: Injectable
|
|
148
|
-
}], ctorParameters: function () { return []; } });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmlkLWNvbm5lY3QuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVyY2VwdG9ycy9vcGVuaWQvb3BlbmlkLWNvbm5lY3QuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsaUJBQWlCLEVBRWpCLGFBQWEsRUFFYixXQUFXLEdBSWQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFPNUMsTUFBTSxPQUFPLHdCQUF3QjtJQUlqQztRQUhBLGlIQUFpSDtRQUNqSCxpQ0FBNEIsR0FBRyxDQUFDLENBQUM7UUFHN0Isd0NBQXdDO1FBQ3hDLElBQUksT0FBTyxhQUFhLEtBQUssV0FBVyxFQUFFO1lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQ1Qsb0VBQW9FLEVBQ3BFLHNIQUFzSCxDQUN6SCxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUNMLE9BQXlCLEVBQ3pCLElBQWlCLEVBQ2pCLFVBQVUsR0FBRyxDQUFDLEVBQ2QsYUFBdUM7UUFFdkMsSUFBSSxPQUFPLGFBQWEsS0FBSyxXQUFXLEVBQUU7WUFDdEMsSUFBSSxpQkFBaUIsR0FBRyxhQUFhLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUNwQixpQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBa0IsQ0FBQzthQUNyRDtZQUVELGFBQWEsQ0FBQyx1QkFBdUIsQ0FDakMsT0FBTyxDQUFDLGFBQWEsRUFDckIsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDYixJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUM7Z0JBQ3pCLElBQUks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QXNFLENBQzdFLENBQUM7WUFDRixJQUFJLFlBQVksRUFBRTtnQkFDZCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDOUI7WUFDRCxJQUFJLGFBQWEsRUFBRTtnQkFDZixhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QixhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDNUI7U0FDSjtRQUVELE9BQU8sRUFBRSxDQUFpQixJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsc0JBQXNCLENBQUMsUUFBMkI7UUFDeEQsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7WUFDckMsTUFBTSxPQUFPLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDcEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlEO2FBQU07WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFUyxxQkFBcUI7UUFDM0IsSUFBSSxhQUFhLENBQUMsTUFBTSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMscUJBQXFCLElBQUksQ0FBQyxFQUFFO1lBQ3pFLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztTQUNyRDthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUM7U0FDNUM7SUFDTCxDQUFDOzt3SUF0TFEsd0JBQXdCOzRJQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgSHR0cEVycm9yUmVzcG9uc2UsXG4gICAgSHR0cEV2ZW50LFxuICAgIEh0dHBFdmVudFR5cGUsXG4gICAgSHR0cEhhbmRsZXIsXG4gICAgSHR0cEhlYWRlcnMsXG4gICAgSHR0cEludGVyY2VwdG9yLFxuICAgIEh0dHBSZXF1ZXN0LFxuICAgIEh0dHBSZXNwb25zZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLy8gVGhpcyB2YXJpYWJsZSBpcyBkZWNsYXJlZCBpbiB0aGUgamF2YXNjcmlwdCBmaWxlIG9wZW5pZC1sb2dpbi5qc1xuLy8gYW5kIHdpbGwgYmUgaW1wb3J0ZWQgaW4gdGhlIGVVSSBhcHBsaWNhdGlvbnMnIGluZGV4Lmh0bWwgZmlsZSwgd2hlbiBuZWNlc3NhcnkuXG5kZWNsYXJlIGxldCBPcGVuSWRDb25uZWN0OiBhbnk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPcGVuSWRDb25uZWN0SW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICAgIC8vIEJ5IGRlZmF1bHQsIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHNob3VsZCBhdCBsZWFzdCBiZSByZXRyaWVzIG9uY2UgaW4gY2FzZSB0aGUgY2FjaGVkIEFQSSBHYXRld2F5IHRva2VuIGV4cGlyZXM6XG4gICAgZGVmYXVsdE1heGltdW1SZXF1ZXN0UmV0cmllcyA9IDE7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIE9wZW5JZENvbm5lY3QgaXMgZGVmaW5lZFxuICAgICAgICBpZiAodHlwZW9mIE9wZW5JZENvbm5lY3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICdQbGVhc2UgaW5jbHVkZSB0aGUgc2NyaXB0IG9wZW5pZC1sb2dpbi5qcyBpbiB5b3VyIGluZGV4Lmh0bWwgZmlsZS4nLFxuICAgICAgICAgICAgICAgICdGb3IgbW9yZSBkZXRhaWxzLCBwbGVhc2UgY29uc3VsdCB0aGUgZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcgdGhlIEh0dHAgSW50ZXJjZXB0b3JzIGFuZCBPcGVuSUQgQ29ubmVjdCBjb25maWd1cmF0aW9uLidcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnRlcmNlcHQoXG4gICAgICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgICAgIG5leHQ6IEh0dHBIYW5kbGVyLFxuICAgICAgICByZXRyeUNvdW50ID0gMCxcbiAgICAgICAgcmV0cnlDYWxsYmFjaz86IFN1YmplY3Q8SHR0cEV2ZW50PGFueT4+XG4gICAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgICAgICBpZiAodHlwZW9mIE9wZW5JZENvbm5lY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBsZXQgYXV0aG9yaXplZFJlcXVlc3QgPSByZXRyeUNhbGxiYWNrO1xuICAgICAgICAgICAgaWYgKCFhdXRob3JpemVkUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgIGF1dGhvcml6ZWRSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8SHR0cEV2ZW50PGFueT4+KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIE9wZW5JZENvbm5lY3QuZ2V0QXV0aG9yaXphdGlvbkhlYWRlcnMoXG4gICAgICAgICAgICAgICAgcmVxdWVzdC51cmxXaXRoUGFyYW1zLFxuICAgICAgICAgICAgICAgIChoZWFkZXJzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1JlcXVlc3QgPSByZXF1ZXN0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0hlYWRlcnMgPSByZXF1ZXN0LmhlYWRlcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3SGVhZGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaGVhZGVyTmFtZSBpbiBoZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcnMuaGFzT3duUHJvcGVydHkoaGVhZGVyTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0hlYWRlcnMgPSBuZXdIZWFkZXJzLnNldChoZWFkZXJOYW1lLCBoZWFkZXJzW2hlYWRlck5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyhoZWFkZXJzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG5ld0hlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IG1peCB0aGUgbmV4dCBsaW5lIHdpdGggdGhlIGxpbmUgYmVsb3cgaXQuXG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIHdvdWxkIGdldCBhIFwiQ2Fubm90IGFjY2VzcyAnc3Vic2NyaXB0aW9uJyBiZWZvcmUgaW5pdGlhbGl6YXRpb25cIiBlcnJvci5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IG5leHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5oYW5kbGUobmV3UmVxdWVzdClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvclJlc3BvbnNlKHJlc3BvbnNlLCByZXF1ZXN0LCBuZXh0LCByZXRyeUNvdW50LCBhdXRob3JpemVkUmVxdWVzdCwgc3Vic2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGh0dHBFdmVudDogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcml6ZWRSZXF1ZXN0Lm5leHQoaHR0cEV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBFdmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3JpemVkUmVxdWVzdC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyb3JSZXNwb25zZTogWE1MSHR0cFJlcXVlc3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JQcm9wZXJ0aWVzOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUHJvcGVydGllcy5zdGF0dXMgPSBlcnJvclJlc3BvbnNlLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUHJvcGVydGllcy5zdGF0dXNUZXh0ID0gZXJyb3JSZXNwb25zZS5zdGF0dXNUZXh0O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3JSZXNwb25zZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBIdHRwRXJyb3JSZXNwb25zZShlcnJvclByb3BlcnRpZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXRyeUNvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXplZFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuIGF1dGhvcml6ZWRSZXF1ZXN0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhbmRsZUVycm9yUmVzcG9uc2UoXG4gICAgICAgIHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSxcbiAgICAgICAgb3JpZ2luYWxSZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgICAgICBuZXh0OiBIdHRwSGFuZGxlcixcbiAgICAgICAgcmV0cnlDb3VudDogbnVtYmVyID0gMCxcbiAgICAgICAgcmV0cnlDYWxsYmFjazogU3ViamVjdDxIdHRwRXZlbnQ8YW55Pj4sXG4gICAgICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uXG4gICAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5lcnJvciAmJiByZXNwb25zZS5lcnJvci5lcnJvciA9PT0gJ2ludmFsaWRfcmVxdWVzdCcpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgSUQgdG9rZW4gaXMgaW52YWxpZCBvciBpbmNvcnJlY3Q7IHJldHJpZXZlIGFub3RoZXIgb25lOlxuICAgICAgICAgICAgICAgIE9wZW5JZENvbm5lY3QucmVuZXdJZFRva2VuKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBpR2F0ZXdheVRva2VuRXhwaXJlZChyZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICBPcGVuSWRDb25uZWN0LmNsZWFyQ2FjaGVkQXBpR2F0ZXdheUFjY2Vzc1Rva2VuKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0cnlSZXF1ZXN0KG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UsIG5leHQsIHJldHJ5Q291bnQsIHJldHJ5Q2FsbGJhY2ssIHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAxIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIEVVIExvZ2luIGFjY2VzcyB0b2tlbiBpcyBpbnZhbGlkLiAoNDAzKVxuICAgICAgICAgICAgICAgIC8vIFRoZSB0YXJnZXQgc2VydmljZSBpcyB1bmFibGUgdG8gcmVhZCB0aGUgYWNjZXNzIHRva2VuLCBmb3IgZXhhbXBsZSBiZWNhdXNlIHRoZSBFVSBMb2dpbiBzZXNzaW9uIGVuZGVkLiAoNDAxKVxuICAgICAgICAgICAgICAgIC8vIFJldHJ5IGluIGNhc2UgdGhlIGFjY2VzcyB0b2tlbiBiZWNhbWUgaW52YWxpZCB0b28gcXVpY2tseTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXRyeVJlcXVlc3Qob3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSwgbmV4dCwgcmV0cnlDb3VudCwgcmV0cnlDYWxsYmFjaywgc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gT25lIG9mIHRoZSBhY2Nlc3MgdG9rZW4gcmVxdWVzdHMgb3IgdGhlIG9yaWdpbmFsIHJlcXVlc3Qgd2FzIG5vdCBzZW50LlxuICAgICAgICAgICAgICAgIC8vIE1vc3QgbGlrZWx5IG9uZSBvZiB0aGUgQ09SUyBwcmUtZmxpZ2h0IHJlcXVlc3RzIGZhaWxlZCwgb3IgdGhlIGJyb3dzZXIgaXMgb2ZmbGluZS5cbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICdUaGUgT3BlbklEIENvbm5lY3QgY2FsbCBtYXkgaGF2ZSBpc3N1ZXM6XFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnKiB0aGUgQ09SUyBwcmUtZmxpZ2h0IHJlcXVlc3RzIGZvciB0aGUgT3BlbklEIENvbm5lY3QgYWNjZXNzIHRva2VucyBvciBmb3IgdGhlIFJFU1QgY2FsbCBjb3VsZCBiZSBmYWlsaW5nXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnKiB0aGUgYnJvd3NlciBjb3VsZCBiZSBjdXJyZW50bHkgb2ZmbGluZS4nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXRyeUNhbGxiYWNrKSB7XG4gICAgICAgICAgICByZXRyeUNhbGxiYWNrLmVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHJldHJ5Q2FsbGJhY2suY29tcGxldGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmV0cnlSZXF1ZXN0KFxuICAgICAgICBvcmlnaW5hbFJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgICAgIHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSxcbiAgICAgICAgbmV4dDogSHR0cEhhbmRsZXIsXG4gICAgICAgIHJldHJ5Q291bnQ6IG51bWJlciA9IDAsXG4gICAgICAgIHJldHJ5Q2FsbGJhY2s6IFN1YmplY3Q8SHR0cEV2ZW50PGFueT4+LFxuICAgICAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvblxuICAgICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgaWYgKHJldHJ5Q291bnQgPCB0aGlzLm1heGltdW1SZXF1ZXN0UmV0cmllcygpKSB7XG4gICAgICAgICAgICB0aGlzLmludGVyY2VwdChvcmlnaW5hbFJlcXVlc3QsIG5leHQsIHJldHJ5Q291bnQgKyAxLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgJ1RoZSBPcGVuSUQgQ29ubmVjdCBjYWxsIG1heSBoYXZlIGlzc3VlczpcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgJyogdGhlIGNsaWVudCBJRCBjb3VsZCBiZSBpbnZhbGlkXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICcqIHRoZSBBUEkgR2F0ZXdheSBhY2Nlc3MgdG9rZW4gY291bGQgYmUgaW52YWxpZFxcbicgK1xuICAgICAgICAgICAgICAgICAgICAnKiB0aGUgRVUgTG9naW4gYWNjZXNzIHRva2VuIGZvciB0aGUgdGFyZ2V0IHNlcnZpY2UgY291bGQgYmUgaW52YWxpZC4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJldHJ5Q2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrLmVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2Y8SHR0cEV2ZW50PGFueT4+KG51bGwpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhcGlHYXRld2F5VG9rZW5FeHBpcmVkKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2Uuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnJyArIHJlc3BvbnNlLmVycm9yO1xuICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UuaW5kZXhPZignPGFtczpjb2RlPjkwMDkwMTwvYW1zOmNvZGU+JykgPj0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBtYXhpbXVtUmVxdWVzdFJldHJpZXMoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKE9wZW5JZENvbm5lY3QuY29uZmlnICYmIE9wZW5JZENvbm5lY3QuY29uZmlnLm1heGltdW1SZXF1ZXN0UmV0cmllcyA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gT3BlbklkQ29ubmVjdC5jb25maWcubWF4aW11bVJlcXVlc3RSZXRyaWVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdE1heGltdW1SZXF1ZXN0UmV0cmllcztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpErrorResponse, HttpEventType, HttpHeaders, } from '@angular/common/http';
|
|
3
|
+
import { of, Subject, throwError } from 'rxjs';
|
|
4
|
+
import { catchError } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class OpenIdConnectInterceptor {
|
|
7
|
+
constructor() {
|
|
8
|
+
// By default, the original request should at least be retries once in case the cached API Gateway token expires:
|
|
9
|
+
this.defaultMaximumRequestRetries = 1;
|
|
10
|
+
// check if the OpenIdConnect is defined
|
|
11
|
+
if (typeof OpenIdConnect === 'undefined') {
|
|
12
|
+
console.error('Please include the script openid-login.js in your index.html file.', 'For more details, please consult the documentation regarding the Http Interceptors and OpenID Connect configuration.');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
intercept(request, next, retryCount = 0, retryCallback) {
|
|
16
|
+
if (typeof OpenIdConnect !== 'undefined') {
|
|
17
|
+
let authorizedRequest = retryCallback;
|
|
18
|
+
if (!authorizedRequest) {
|
|
19
|
+
authorizedRequest = new Subject();
|
|
20
|
+
}
|
|
21
|
+
OpenIdConnect.getAuthorizationHeaders(request.urlWithParams, (headers) => {
|
|
22
|
+
let newRequest = request;
|
|
23
|
+
if (headers) {
|
|
24
|
+
let newHeaders = request.headers;
|
|
25
|
+
if (newHeaders) {
|
|
26
|
+
for (const headerName in headers) {
|
|
27
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
28
|
+
if (headers.hasOwnProperty(headerName)) {
|
|
29
|
+
newHeaders = newHeaders.set(headerName, headers[headerName]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
newHeaders = new HttpHeaders(headers);
|
|
35
|
+
}
|
|
36
|
+
newRequest = request.clone({
|
|
37
|
+
withCredentials: false,
|
|
38
|
+
headers: newHeaders,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// Don't mix the next line with the line below it.
|
|
42
|
+
// We would get a "Cannot access 'subscription' before initialization" error.
|
|
43
|
+
let subscription = null;
|
|
44
|
+
subscription = next
|
|
45
|
+
.handle(newRequest)
|
|
46
|
+
.pipe(catchError((response) => this.handleErrorResponse(response, request, next, retryCount, authorizedRequest, subscription)))
|
|
47
|
+
.subscribe((httpEvent) => {
|
|
48
|
+
if (httpEvent) {
|
|
49
|
+
authorizedRequest.next(httpEvent);
|
|
50
|
+
if (httpEvent.type === HttpEventType.Response) {
|
|
51
|
+
if (subscription) {
|
|
52
|
+
subscription.unsubscribe();
|
|
53
|
+
}
|
|
54
|
+
authorizedRequest.complete();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}, (errorResponse) => {
|
|
59
|
+
const errorProperties = {
|
|
60
|
+
error: errorResponse,
|
|
61
|
+
};
|
|
62
|
+
if (errorResponse) {
|
|
63
|
+
errorProperties.status = errorResponse.status;
|
|
64
|
+
errorProperties.statusText = errorResponse.statusText;
|
|
65
|
+
}
|
|
66
|
+
return this.handleErrorResponse(new HttpErrorResponse(errorProperties), request, next, retryCount, authorizedRequest, null);
|
|
67
|
+
});
|
|
68
|
+
return authorizedRequest;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
return next.handle(request);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
handleErrorResponse(response, originalRequest, next, retryCount = 0, retryCallback, subscription) {
|
|
75
|
+
if (response) {
|
|
76
|
+
if (response.error && response.error.error === 'invalid_request') {
|
|
77
|
+
// The ID token is invalid or incorrect; retrieve another one:
|
|
78
|
+
OpenIdConnect.renewIdToken();
|
|
79
|
+
}
|
|
80
|
+
else if (this.apiGatewayTokenExpired(response)) {
|
|
81
|
+
OpenIdConnect.clearCachedApiGatewayAccessToken();
|
|
82
|
+
return this.retryRequest(originalRequest, response, next, retryCount, retryCallback, subscription);
|
|
83
|
+
}
|
|
84
|
+
else if (response.status === 401 || response.status === 403) {
|
|
85
|
+
// The EU Login access token is invalid. (403)
|
|
86
|
+
// The target service is unable to read the access token, for example because the EU Login session ended. (401)
|
|
87
|
+
// Retry in case the access token became invalid too quickly:
|
|
88
|
+
return this.retryRequest(originalRequest, response, next, retryCount, retryCallback, subscription);
|
|
89
|
+
}
|
|
90
|
+
else if (response.status === 0) {
|
|
91
|
+
// One of the access token requests or the original request was not sent.
|
|
92
|
+
// Most likely one of the CORS pre-flight requests failed, or the browser is offline.
|
|
93
|
+
console.warn('The OpenID Connect call may have issues:\n' +
|
|
94
|
+
'* the CORS pre-flight requests for the OpenID Connect access tokens or for the REST call could be failing\n' +
|
|
95
|
+
'* the browser could be currently offline.');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (subscription) {
|
|
99
|
+
subscription.unsubscribe();
|
|
100
|
+
}
|
|
101
|
+
if (retryCallback) {
|
|
102
|
+
retryCallback.error(response);
|
|
103
|
+
retryCallback.complete();
|
|
104
|
+
}
|
|
105
|
+
return throwError(response);
|
|
106
|
+
}
|
|
107
|
+
retryRequest(originalRequest, response, next, retryCount = 0, retryCallback, subscription) {
|
|
108
|
+
if (retryCount < this.maximumRequestRetries()) {
|
|
109
|
+
this.intercept(originalRequest, next, retryCount + 1, retryCallback);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
console.error('The OpenID Connect call may have issues:\n' +
|
|
113
|
+
'* the client ID could be invalid\n' +
|
|
114
|
+
'* the API Gateway access token could be invalid\n' +
|
|
115
|
+
'* the EU Login access token for the target service could be invalid.');
|
|
116
|
+
if (subscription) {
|
|
117
|
+
subscription.unsubscribe();
|
|
118
|
+
}
|
|
119
|
+
if (retryCallback) {
|
|
120
|
+
retryCallback.error(response);
|
|
121
|
+
retryCallback.complete();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return of(null);
|
|
125
|
+
}
|
|
126
|
+
apiGatewayTokenExpired(response) {
|
|
127
|
+
if (response && response.status === 401) {
|
|
128
|
+
const message = '' + response.error;
|
|
129
|
+
return message.indexOf('<ams:code>900901</ams:code>') >= 0;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
maximumRequestRetries() {
|
|
136
|
+
if (OpenIdConnect.config && OpenIdConnect.config.maximumRequestRetries >= 0) {
|
|
137
|
+
return OpenIdConnect.config.maximumRequestRetries;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
return this.defaultMaximumRequestRetries;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/** @nocollapse */ OpenIdConnectInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OpenIdConnectInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
145
|
+
/** @nocollapse */ OpenIdConnectInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OpenIdConnectInterceptor });
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OpenIdConnectInterceptor, decorators: [{
|
|
147
|
+
type: Injectable
|
|
148
|
+
}], ctorParameters: function () { return []; } });
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmlkLWNvbm5lY3QuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ludGVyY2VwdG9ycy9vcGVuaWQvb3BlbmlkLWNvbm5lY3QuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsaUJBQWlCLEVBRWpCLGFBQWEsRUFFYixXQUFXLEdBSWQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFPNUMsTUFBTSxPQUFPLHdCQUF3QjtJQUlqQztRQUhBLGlIQUFpSDtRQUNqSCxpQ0FBNEIsR0FBRyxDQUFDLENBQUM7UUFHN0Isd0NBQXdDO1FBQ3hDLElBQUksT0FBTyxhQUFhLEtBQUssV0FBVyxFQUFFO1lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQ1Qsb0VBQW9FLEVBQ3BFLHNIQUFzSCxDQUN6SCxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUNMLE9BQXlCLEVBQ3pCLElBQWlCLEVBQ2pCLFVBQVUsR0FBRyxDQUFDLEVBQ2QsYUFBdUM7UUFFdkMsSUFBSSxPQUFPLGFBQWEsS0FBSyxXQUFXLEVBQUU7WUFDdEMsSUFBSSxpQkFBaUIsR0FBRyxhQUFhLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUNwQixpQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBa0IsQ0FBQzthQUNyRDtZQUVELGFBQWEsQ0FBQyx1QkFBdUIsQ0FDakMsT0FBTyxDQUFDLGFBQWEsRUFDckIsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDYixJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUM7Z0JBQ3pCLElBQUksT0FBTyxFQUFFO29CQUNULElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7b0JBQ2pDLElBQUksVUFBVSxFQUFFO3dCQUNaLEtBQUssTUFBTSxVQUFVLElBQUksT0FBTyxFQUFFOzRCQUM5QixpREFBaUQ7NEJBQ2pELElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQ0FDcEMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDOzZCQUNoRTt5QkFDSjtxQkFDSjt5QkFBTTt3QkFDSCxVQUFVLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3pDO29CQUNELFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO3dCQUN2QixlQUFlLEVBQUUsS0FBSzt3QkFDdEIsT0FBTyxFQUFFLFVBQVU7cUJBQ3RCLENBQUMsQ0FBQztpQkFDTjtnQkFFRCxrREFBa0Q7Z0JBQ2xELDZFQUE2RTtnQkFDN0UsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixZQUFZLEdBQUcsSUFBSTtxQkFDZCxNQUFNLENBQUMsVUFBVSxDQUFDO3FCQUNsQixJQUFJLENBQ0QsVUFBVSxDQUFDLENBQUMsUUFBMkIsRUFBRSxFQUFFLENBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLENBQ2pHLENBQ0o7cUJBQ0EsU0FBUyxDQUFDLENBQUMsU0FBNEIsRUFBRSxFQUFFO29CQUN4QyxJQUFJLFNBQVMsRUFBRTt3QkFDWCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ2xDLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFOzRCQUMzQyxJQUFJLFlBQVksRUFBRTtnQ0FDZCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7NkJBQzlCOzRCQUNELGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO3lCQUNoQztxQkFDSjtnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNYLENBQUMsRUFDRCxDQUFDLGFBQTZCLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxlQUFlLEdBQVE7b0JBQ3pCLEtBQUssRUFBRSxhQUFhO2lCQUN2QixDQUFDO2dCQUNGLElBQUksYUFBYSxFQUFFO29CQUNmLGVBQWUsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztvQkFDOUMsZUFBZSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO2lCQUN6RDtnQkFFRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FDM0IsSUFBSSxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsRUFDdEMsT0FBTyxFQUNQLElBQUksRUFDSixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLElBQUksQ0FDUCxDQUFDO1lBQ04sQ0FBQyxDQUNKLENBQUM7WUFFRixPQUFPLGlCQUFpQixDQUFDO1NBQzVCO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRVMsbUJBQW1CLENBQ3pCLFFBQTJCLEVBQzNCLGVBQWlDLEVBQ2pDLElBQWlCLEVBQ2pCLGFBQXFCLENBQUMsRUFDdEIsYUFBc0MsRUFDdEMsWUFBMEI7UUFFMUIsSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLFFBQVEsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssaUJBQWlCLEVBQUU7Z0JBQzlELDhEQUE4RDtnQkFDOUQsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ2hDO2lCQUFNLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUM5QyxhQUFhLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDdEc7aUJBQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDM0QsOENBQThDO2dCQUM5QywrR0FBK0c7Z0JBQy9HLDZEQUE2RDtnQkFDN0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDdEc7aUJBQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDOUIseUVBQXlFO2dCQUN6RSxxRkFBcUY7Z0JBQ3JGLE9BQU8sQ0FBQyxJQUFJLENBQ1IsNENBQTRDO29CQUN4Qyw2R0FBNkc7b0JBQzdHLDJDQUEyQyxDQUNsRCxDQUFDO2FBQ0w7U0FDSjtRQUVELElBQUksWUFBWSxFQUFFO1lBQ2QsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxhQUFhLEVBQUU7WUFDZixhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlCLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUM1QjtRQUVELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFUyxZQUFZLENBQ2xCLGVBQWlDLEVBQ2pDLFFBQTJCLEVBQzNCLElBQWlCLEVBQ2pCLGFBQXFCLENBQUMsRUFDdEIsYUFBc0MsRUFDdEMsWUFBMEI7UUFFMUIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNILE9BQU8sQ0FBQyxLQUFLLENBQ1QsNENBQTRDO2dCQUN4QyxvQ0FBb0M7Z0JBQ3BDLG1EQUFtRDtnQkFDbkQsc0VBQXNFLENBQzdFLENBQUM7WUFDRixJQUFJLFlBQVksRUFBRTtnQkFDZCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDOUI7WUFDRCxJQUFJLGFBQWEsRUFBRTtnQkFDZixhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QixhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDNUI7U0FDSjtRQUVELE9BQU8sRUFBRSxDQUFpQixJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsc0JBQXNCLENBQUMsUUFBMkI7UUFDeEQsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7WUFDckMsTUFBTSxPQUFPLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDcEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlEO2FBQU07WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFUyxxQkFBcUI7UUFDM0IsSUFBSSxhQUFhLENBQUMsTUFBTSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMscUJBQXFCLElBQUksQ0FBQyxFQUFFO1lBQ3pFLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztTQUNyRDthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUM7U0FDNUM7SUFDTCxDQUFDOzt3SUF0TFEsd0JBQXdCOzRJQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgSHR0cEV2ZW50LFxyXG4gICAgSHR0cEV2ZW50VHlwZSxcclxuICAgIEh0dHBIYW5kbGVyLFxyXG4gICAgSHR0cEhlYWRlcnMsXHJcbiAgICBIdHRwSW50ZXJjZXB0b3IsXHJcbiAgICBIdHRwUmVxdWVzdCxcclxuICAgIEh0dHBSZXNwb25zZSxcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbi8vIFRoaXMgdmFyaWFibGUgaXMgZGVjbGFyZWQgaW4gdGhlIGphdmFzY3JpcHQgZmlsZSBvcGVuaWQtbG9naW4uanNcclxuLy8gYW5kIHdpbGwgYmUgaW1wb3J0ZWQgaW4gdGhlIGVVSSBhcHBsaWNhdGlvbnMnIGluZGV4Lmh0bWwgZmlsZSwgd2hlbiBuZWNlc3NhcnkuXHJcbmRlY2xhcmUgbGV0IE9wZW5JZENvbm5lY3Q6IGFueTtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE9wZW5JZENvbm5lY3RJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgICAvLyBCeSBkZWZhdWx0LCB0aGUgb3JpZ2luYWwgcmVxdWVzdCBzaG91bGQgYXQgbGVhc3QgYmUgcmV0cmllcyBvbmNlIGluIGNhc2UgdGhlIGNhY2hlZCBBUEkgR2F0ZXdheSB0b2tlbiBleHBpcmVzOlxyXG4gICAgZGVmYXVsdE1heGltdW1SZXF1ZXN0UmV0cmllcyA9IDE7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIE9wZW5JZENvbm5lY3QgaXMgZGVmaW5lZFxyXG4gICAgICAgIGlmICh0eXBlb2YgT3BlbklkQ29ubmVjdCA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICdQbGVhc2UgaW5jbHVkZSB0aGUgc2NyaXB0IG9wZW5pZC1sb2dpbi5qcyBpbiB5b3VyIGluZGV4Lmh0bWwgZmlsZS4nLFxyXG4gICAgICAgICAgICAgICAgJ0ZvciBtb3JlIGRldGFpbHMsIHBsZWFzZSBjb25zdWx0IHRoZSBkb2N1bWVudGF0aW9uIHJlZ2FyZGluZyB0aGUgSHR0cCBJbnRlcmNlcHRvcnMgYW5kIE9wZW5JRCBDb25uZWN0IGNvbmZpZ3VyYXRpb24uJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbnRlcmNlcHQoXHJcbiAgICAgICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcclxuICAgICAgICBuZXh0OiBIdHRwSGFuZGxlcixcclxuICAgICAgICByZXRyeUNvdW50ID0gMCxcclxuICAgICAgICByZXRyeUNhbGxiYWNrPzogU3ViamVjdDxIdHRwRXZlbnQ8YW55Pj5cclxuICAgICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgICAgICBpZiAodHlwZW9mIE9wZW5JZENvbm5lY3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGxldCBhdXRob3JpemVkUmVxdWVzdCA9IHJldHJ5Q2FsbGJhY2s7XHJcbiAgICAgICAgICAgIGlmICghYXV0aG9yaXplZFJlcXVlc3QpIHtcclxuICAgICAgICAgICAgICAgIGF1dGhvcml6ZWRSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8SHR0cEV2ZW50PGFueT4+KCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIE9wZW5JZENvbm5lY3QuZ2V0QXV0aG9yaXphdGlvbkhlYWRlcnMoXHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0LnVybFdpdGhQYXJhbXMsXHJcbiAgICAgICAgICAgICAgICAoaGVhZGVyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1JlcXVlc3QgPSByZXF1ZXN0O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdIZWFkZXJzID0gcmVxdWVzdC5oZWFkZXJzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3SGVhZGVycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBoZWFkZXJOYW1lIGluIGhlYWRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcnMuaGFzT3duUHJvcGVydHkoaGVhZGVyTmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SGVhZGVycyA9IG5ld0hlYWRlcnMuc2V0KGhlYWRlck5hbWUsIGhlYWRlcnNbaGVhZGVyTmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoaGVhZGVycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG5ld0hlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgbWl4IHRoZSBuZXh0IGxpbmUgd2l0aCB0aGUgbGluZSBiZWxvdyBpdC5cclxuICAgICAgICAgICAgICAgICAgICAvLyBXZSB3b3VsZCBnZXQgYSBcIkNhbm5vdCBhY2Nlc3MgJ3N1YnNjcmlwdGlvbicgYmVmb3JlIGluaXRpYWxpemF0aW9uXCIgZXJyb3IuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uID0gbmV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuaGFuZGxlKG5ld1JlcXVlc3QpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JSZXNwb25zZShyZXNwb25zZSwgcmVxdWVzdCwgbmV4dCwgcmV0cnlDb3VudCwgYXV0aG9yaXplZFJlcXVlc3QsIHN1YnNjcmlwdGlvbilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChodHRwRXZlbnQ6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cEV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXplZFJlcXVlc3QubmV4dChodHRwRXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChodHRwRXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3JpemVkUmVxdWVzdC5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKGVycm9yUmVzcG9uc2U6IFhNTEh0dHBSZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JQcm9wZXJ0aWVzOiBhbnkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvclJlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JQcm9wZXJ0aWVzLnN0YXR1cyA9IGVycm9yUmVzcG9uc2Uuc3RhdHVzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclByb3BlcnRpZXMuc3RhdHVzVGV4dCA9IGVycm9yUmVzcG9uc2Uuc3RhdHVzVGV4dDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBIdHRwRXJyb3JSZXNwb25zZShlcnJvclByb3BlcnRpZXMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXRyeUNvdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRob3JpemVkUmVxdWVzdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gYXV0aG9yaXplZFJlcXVlc3Q7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXJyb3JSZXNwb25zZShcclxuICAgICAgICByZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UsXHJcbiAgICAgICAgb3JpZ2luYWxSZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gICAgICAgIG5leHQ6IEh0dHBIYW5kbGVyLFxyXG4gICAgICAgIHJldHJ5Q291bnQ6IG51bWJlciA9IDAsXHJcbiAgICAgICAgcmV0cnlDYWxsYmFjazogU3ViamVjdDxIdHRwRXZlbnQ8YW55Pj4sXHJcbiAgICAgICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb25cclxuICAgICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmVycm9yICYmIHJlc3BvbnNlLmVycm9yLmVycm9yID09PSAnaW52YWxpZF9yZXF1ZXN0Jykge1xyXG4gICAgICAgICAgICAgICAgLy8gVGhlIElEIHRva2VuIGlzIGludmFsaWQgb3IgaW5jb3JyZWN0OyByZXRyaWV2ZSBhbm90aGVyIG9uZTpcclxuICAgICAgICAgICAgICAgIE9wZW5JZENvbm5lY3QucmVuZXdJZFRva2VuKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcGlHYXRld2F5VG9rZW5FeHBpcmVkKHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgT3BlbklkQ29ubmVjdC5jbGVhckNhY2hlZEFwaUdhdGV3YXlBY2Nlc3NUb2tlbigpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0cnlSZXF1ZXN0KG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UsIG5leHQsIHJldHJ5Q291bnQsIHJldHJ5Q2FsbGJhY2ssIHN1YnNjcmlwdGlvbik7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDEgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSA0MDMpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRoZSBFVSBMb2dpbiBhY2Nlc3MgdG9rZW4gaXMgaW52YWxpZC4gKDQwMylcclxuICAgICAgICAgICAgICAgIC8vIFRoZSB0YXJnZXQgc2VydmljZSBpcyB1bmFibGUgdG8gcmVhZCB0aGUgYWNjZXNzIHRva2VuLCBmb3IgZXhhbXBsZSBiZWNhdXNlIHRoZSBFVSBMb2dpbiBzZXNzaW9uIGVuZGVkLiAoNDAxKVxyXG4gICAgICAgICAgICAgICAgLy8gUmV0cnkgaW4gY2FzZSB0aGUgYWNjZXNzIHRva2VuIGJlY2FtZSBpbnZhbGlkIHRvbyBxdWlja2x5OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0cnlSZXF1ZXN0KG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UsIG5leHQsIHJldHJ5Q291bnQsIHJldHJ5Q2FsbGJhY2ssIHN1YnNjcmlwdGlvbik7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBPbmUgb2YgdGhlIGFjY2VzcyB0b2tlbiByZXF1ZXN0cyBvciB0aGUgb3JpZ2luYWwgcmVxdWVzdCB3YXMgbm90IHNlbnQuXHJcbiAgICAgICAgICAgICAgICAvLyBNb3N0IGxpa2VseSBvbmUgb2YgdGhlIENPUlMgcHJlLWZsaWdodCByZXF1ZXN0cyBmYWlsZWQsIG9yIHRoZSBicm93c2VyIGlzIG9mZmxpbmUuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgICAgICAgICAgJ1RoZSBPcGVuSUQgQ29ubmVjdCBjYWxsIG1heSBoYXZlIGlzc3VlczpcXG4nICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJyogdGhlIENPUlMgcHJlLWZsaWdodCByZXF1ZXN0cyBmb3IgdGhlIE9wZW5JRCBDb25uZWN0IGFjY2VzcyB0b2tlbnMgb3IgZm9yIHRoZSBSRVNUIGNhbGwgY291bGQgYmUgZmFpbGluZ1xcbicgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnKiB0aGUgYnJvd3NlciBjb3VsZCBiZSBjdXJyZW50bHkgb2ZmbGluZS4nXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmV0cnlDYWxsYmFjaykge1xyXG4gICAgICAgICAgICByZXRyeUNhbGxiYWNrLmVycm9yKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgcmV0cnlDYWxsYmFjay5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IocmVzcG9uc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCByZXRyeVJlcXVlc3QoXHJcbiAgICAgICAgb3JpZ2luYWxSZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gICAgICAgIHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgICAgICBuZXh0OiBIdHRwSGFuZGxlcixcclxuICAgICAgICByZXRyeUNvdW50OiBudW1iZXIgPSAwLFxyXG4gICAgICAgIHJldHJ5Q2FsbGJhY2s6IFN1YmplY3Q8SHR0cEV2ZW50PGFueT4+LFxyXG4gICAgICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uXHJcbiAgICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICAgICAgaWYgKHJldHJ5Q291bnQgPCB0aGlzLm1heGltdW1SZXF1ZXN0UmV0cmllcygpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW50ZXJjZXB0KG9yaWdpbmFsUmVxdWVzdCwgbmV4dCwgcmV0cnlDb3VudCArIDEsIHJldHJ5Q2FsbGJhY2spO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAnVGhlIE9wZW5JRCBDb25uZWN0IGNhbGwgbWF5IGhhdmUgaXNzdWVzOlxcbicgK1xyXG4gICAgICAgICAgICAgICAgICAgICcqIHRoZSBjbGllbnQgSUQgY291bGQgYmUgaW52YWxpZFxcbicgK1xyXG4gICAgICAgICAgICAgICAgICAgICcqIHRoZSBBUEkgR2F0ZXdheSBhY2Nlc3MgdG9rZW4gY291bGQgYmUgaW52YWxpZFxcbicgK1xyXG4gICAgICAgICAgICAgICAgICAgICcqIHRoZSBFVSBMb2dpbiBhY2Nlc3MgdG9rZW4gZm9yIHRoZSB0YXJnZXQgc2VydmljZSBjb3VsZCBiZSBpbnZhbGlkLidcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJldHJ5Q2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIHJldHJ5Q2FsbGJhY2suZXJyb3IocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0cnlDYWxsYmFjay5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gb2Y8SHR0cEV2ZW50PGFueT4+KG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhcGlHYXRld2F5VG9rZW5FeHBpcmVkKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5zdGF0dXMgPT09IDQwMSkge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJycgKyByZXNwb25zZS5lcnJvcjtcclxuICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UuaW5kZXhPZignPGFtczpjb2RlPjkwMDkwMTwvYW1zOmNvZGU+JykgPj0gMDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBtYXhpbXVtUmVxdWVzdFJldHJpZXMoKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoT3BlbklkQ29ubmVjdC5jb25maWcgJiYgT3BlbklkQ29ubmVjdC5jb25maWcubWF4aW11bVJlcXVlc3RSZXRyaWVzID49IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIE9wZW5JZENvbm5lY3QuY29uZmlnLm1heGltdW1SZXF1ZXN0UmV0cmllcztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0TWF4aW11bVJlcXVlc3RSZXRyaWVzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|