@tiba-spark/client-shared-lib 25.4.1-35 → 25.4.1-41
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/esm2022/libraries/constants/version-constants.mjs +1 -10
- package/esm2022/libraries/enums/http-cancel-blacklist.enum.mjs +10 -8
- package/esm2022/libraries/enums/localization.enum.mjs +2 -1
- package/esm2022/libraries/guards/sub-module-guard.mjs +3 -3
- package/esm2022/libraries/localization/localization.action.mjs +1 -10
- package/esm2022/libraries/localization/localization.module.mjs +1 -4
- package/esm2022/libraries/localization/localization.state.mjs +5 -21
- package/esm2022/libraries/modules/alerts-and-notifications/alerts-and-notifications.actions.mjs +1 -7
- package/esm2022/libraries/modules/alerts-and-notifications/alerts-and-notifications.state.mjs +5 -20
- package/esm2022/libraries/modules/auth/session.actions.mjs +1 -10
- package/esm2022/libraries/modules/auth/session.state.mjs +5 -78
- package/esm2022/libraries/modules/login/login.actions.mjs +1 -9
- package/esm2022/libraries/modules/login/login.module.mjs +4 -4
- package/esm2022/libraries/modules/login/login.state.mjs +5 -24
- package/esm2022/libraries/modules/security/security.actions.mjs +1 -8
- package/esm2022/libraries/modules/security/security.state.mjs +5 -18
- package/esm2022/libraries/modules/smartparks/smartpark.actions.mjs +1 -12
- package/esm2022/libraries/modules/smartparks/smartpark.state.mjs +5 -20
- package/esm2022/libraries/modules/tenant-logo/tenant-logo.actions.mjs +1 -7
- package/esm2022/libraries/modules/tenant-logo/tenant-logo.state.mjs +5 -16
- package/esm2022/libraries/modules/user-settings/user-settings.state.mjs +5 -57
- package/esm2022/libraries/resolvers/index.mjs +1 -4
- package/esm2022/libraries/service-proxy/cloud-service-proxies.mjs +133 -790
- package/esm2022/libraries/service-proxy/identity-service-proxies.mjs +1 -560
- package/esm2022/libraries/service-proxy/service-proxy.module.mjs +4 -8
- package/esm2022/libraries/services/auth-token.service.mjs +68 -9
- package/esm2022/libraries/services/refresh-token.service.mjs +18 -16
- package/esm2022/libraries/services/smartpark.service.mjs +12 -8
- package/esm2022/libraries/services/tenant.service.mjs +7 -27
- package/fesm2022/tiba-spark-client-shared-lib.mjs +1853 -3372
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/constants/version-constants.d.ts +0 -4
- package/libraries/constants/version-constants.d.ts.map +1 -1
- package/libraries/enums/http-cancel-blacklist.enum.d.ts.map +1 -1
- package/libraries/enums/localization.enum.d.ts +2 -1
- package/libraries/enums/localization.enum.d.ts.map +1 -1
- package/libraries/localization/localization.action.d.ts +0 -4
- package/libraries/localization/localization.action.d.ts.map +1 -1
- package/libraries/localization/localization.module.d.ts.map +1 -1
- package/libraries/localization/localization.state.d.ts +2 -4
- package/libraries/localization/localization.state.d.ts.map +1 -1
- package/libraries/modules/alerts-and-notifications/alerts-and-notifications.actions.d.ts +0 -5
- package/libraries/modules/alerts-and-notifications/alerts-and-notifications.actions.d.ts.map +1 -1
- package/libraries/modules/alerts-and-notifications/alerts-and-notifications.state.d.ts +3 -5
- package/libraries/modules/alerts-and-notifications/alerts-and-notifications.state.d.ts.map +1 -1
- package/libraries/modules/auth/session.actions.d.ts +0 -8
- package/libraries/modules/auth/session.actions.d.ts.map +1 -1
- package/libraries/modules/auth/session.state.d.ts +3 -9
- package/libraries/modules/auth/session.state.d.ts.map +1 -1
- package/libraries/modules/login/login.actions.d.ts +0 -7
- package/libraries/modules/login/login.actions.d.ts.map +1 -1
- package/libraries/modules/login/login.module.d.ts +1 -1
- package/libraries/modules/login/login.state.d.ts +3 -5
- package/libraries/modules/login/login.state.d.ts.map +1 -1
- package/libraries/modules/security/security.actions.d.ts +0 -6
- package/libraries/modules/security/security.actions.d.ts.map +1 -1
- package/libraries/modules/security/security.state.d.ts +2 -7
- package/libraries/modules/security/security.state.d.ts.map +1 -1
- package/libraries/modules/smartparks/smartpark.actions.d.ts +0 -6
- package/libraries/modules/smartparks/smartpark.actions.d.ts.map +1 -1
- package/libraries/modules/smartparks/smartpark.state.d.ts +3 -5
- package/libraries/modules/smartparks/smartpark.state.d.ts.map +1 -1
- package/libraries/modules/tenant-logo/tenant-logo.actions.d.ts +0 -5
- package/libraries/modules/tenant-logo/tenant-logo.actions.d.ts.map +1 -1
- package/libraries/modules/tenant-logo/tenant-logo.state.d.ts +3 -5
- package/libraries/modules/tenant-logo/tenant-logo.state.d.ts.map +1 -1
- package/libraries/modules/user-settings/user-settings.state.d.ts +3 -6
- package/libraries/modules/user-settings/user-settings.state.d.ts.map +1 -1
- package/libraries/resolvers/index.d.ts +0 -3
- package/libraries/resolvers/index.d.ts.map +1 -1
- package/libraries/service-proxy/cloud-service-proxies.d.ts +35 -111
- package/libraries/service-proxy/cloud-service-proxies.d.ts.map +1 -1
- package/libraries/service-proxy/identity-service-proxies.d.ts +0 -53
- package/libraries/service-proxy/identity-service-proxies.d.ts.map +1 -1
- package/libraries/service-proxy/service-proxy.module.d.ts.map +1 -1
- package/libraries/services/auth-token.service.d.ts +4 -0
- package/libraries/services/auth-token.service.d.ts.map +1 -1
- package/libraries/services/refresh-token.service.d.ts +3 -4
- package/libraries/services/refresh-token.service.d.ts.map +1 -1
- package/libraries/services/smartpark.service.d.ts +3 -1
- package/libraries/services/smartpark.service.d.ts.map +1 -1
- package/libraries/services/tenant.service.d.ts +3 -6
- package/libraries/services/tenant.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/esm2022/libraries/resolvers/mobile-command-center-module.resolver.mjs +0 -53
- package/esm2022/libraries/resolvers/mobile-config.resolver.mjs +0 -21
- package/esm2022/libraries/resolvers/mobile-version.resolver.mjs +0 -24
- package/libraries/resolvers/mobile-command-center-module.resolver.d.ts +0 -21
- package/libraries/resolvers/mobile-command-center-module.resolver.d.ts.map +0 -1
- package/libraries/resolvers/mobile-config.resolver.d.ts +0 -12
- package/libraries/resolvers/mobile-config.resolver.d.ts.map +0 -1
- package/libraries/resolvers/mobile-version.resolver.d.ts +0 -13
- package/libraries/resolvers/mobile-version.resolver.d.ts.map +0 -1
|
@@ -8,13 +8,12 @@ import { distinctUntilChanged, filter, first, of, switchMap, tap } from 'rxjs';
|
|
|
8
8
|
import { MessageBarPosition } from '../../components/message-bar/message-bar-position.enum';
|
|
9
9
|
import { LOCAL_ENGLISH_LANGUAGE } from '../../constants/global-constants';
|
|
10
10
|
import { ENVIRONMENT, LOGGED_TENANT_KEY, SESSION, TENANT_KEY } from '../../constants/keys-constants';
|
|
11
|
-
import { VERSION_MOBILE_LATEST } from '../../constants/version-constants';
|
|
12
11
|
import { AppType } from '../../enums/app-type.enum';
|
|
13
12
|
import { SingleSignOnProvider, SparkSettingsDto } from '../../service-proxy/cloud-service-proxies';
|
|
14
13
|
import { parseApiErrorMessage } from '../../utils/api-helper.util';
|
|
15
14
|
import { getNavigationRoute } from '../../utils/route.util';
|
|
16
15
|
import { UnloadParkingLotAction } from '../facility/facility.actions';
|
|
17
|
-
import { AuditLogoutAction,
|
|
16
|
+
import { AuditLogoutAction, Authenticate2FAforUser, ClearConflictDetected, HealthAction, InitSessionFromLocalStorageAction, LoadAppConfigurationAction, LoadBackofficeAppConfigurationAction, LoginRequestAction, LogoutAction, LogoutMobileAction, SetConflictDetected, SetStateAction, SetTenantUserAction, SetUserNameAction, TenantClearAction, TenantLoadAction, UpdateAuthTokenAction, UpdateTenantInfoProps, UpdateUserSettingsInSessionAction } from './session.actions';
|
|
18
17
|
import * as i0 from "@angular/core";
|
|
19
18
|
import * as i1 from "../../services/session-storage.service";
|
|
20
19
|
import * as i2 from "../../services/local-storage.service";
|
|
@@ -27,7 +26,6 @@ import * as i8 from "@ngx-translate/core";
|
|
|
27
26
|
import * as i9 from "@azure/msal-angular";
|
|
28
27
|
import * as i10 from "../../services/openid-auth.service";
|
|
29
28
|
import * as i11 from "../../components/message-bar/message-bar.service";
|
|
30
|
-
import * as i12 from "../../service-proxy/identity-service-proxies";
|
|
31
29
|
const defaultSessionState = {
|
|
32
30
|
sparkSessions: {},
|
|
33
31
|
application: { version: null, releaseDate: null, features: {} },
|
|
@@ -35,7 +33,7 @@ const defaultSessionState = {
|
|
|
35
33
|
};
|
|
36
34
|
let SessionState = class SessionState {
|
|
37
35
|
static { SessionState_1 = this; }
|
|
38
|
-
constructor(sessionStorageService, localStorageService, appConfigService, authService, configurationCloudServiceProxy, backofficeCloudServiceProxy, router, httpCancelService, translateService, msalService, usersCloudServiceProxy, openIdAuthService, messageBarService
|
|
36
|
+
constructor(sessionStorageService, localStorageService, appConfigService, authService, configurationCloudServiceProxy, backofficeCloudServiceProxy, router, httpCancelService, translateService, msalService, usersCloudServiceProxy, openIdAuthService, messageBarService) {
|
|
39
37
|
this.sessionStorageService = sessionStorageService;
|
|
40
38
|
this.localStorageService = localStorageService;
|
|
41
39
|
this.appConfigService = appConfigService;
|
|
@@ -49,8 +47,6 @@ let SessionState = class SessionState {
|
|
|
49
47
|
this.usersCloudServiceProxy = usersCloudServiceProxy;
|
|
50
48
|
this.openIdAuthService = openIdAuthService;
|
|
51
49
|
this.messageBarService = messageBarService;
|
|
52
|
-
this.mobileCloudServiceProxy = mobileCloudServiceProxy;
|
|
53
|
-
this.mobileIdentityServiceProxy = mobileIdentityServiceProxy;
|
|
54
50
|
this.isTenantUndefined = (tenant, session) => !tenant || !session;
|
|
55
51
|
this.getSparkSessions = () => JSON.parse(this.localStorageService.getItem(SESSION))?.sparkSessions ?? {};
|
|
56
52
|
this.setSparkSessions = (ctx, sparkSessions) => {
|
|
@@ -193,56 +189,6 @@ let SessionState = class SessionState {
|
|
|
193
189
|
// return this.backofficeServiceProxy.backofficeAuditLogout().pipe(
|
|
194
190
|
// tap(() => { }));
|
|
195
191
|
// }
|
|
196
|
-
AuditLogoutMobileAction(ctx, action) {
|
|
197
|
-
const sparkSessions = this.getSparkSessions();
|
|
198
|
-
const tenantName = sessionStorage.getItem(TENANT_KEY);
|
|
199
|
-
const tenantInfo = ctx.getState().sparkSessions[tenantName]?.tenant;
|
|
200
|
-
if (this.isTenantUndefined(tenantInfo, sparkSessions[tenantName])) {
|
|
201
|
-
return of(null); // Handle the case where tenant or sparkSessions are undefined
|
|
202
|
-
}
|
|
203
|
-
return this.mobileCloudServiceProxy.mobileAuditLogoutV2(VERSION_MOBILE_LATEST).pipe(tap(() => { }));
|
|
204
|
-
}
|
|
205
|
-
onMobileLogoutAction(ctx, { logoutAudit }) {
|
|
206
|
-
const appType = this.appConfigService.getConfig().appType;
|
|
207
|
-
this.httpCancelService.cancelPendingRequests();
|
|
208
|
-
if (appType === AppType.Mobile) {
|
|
209
|
-
ctx.dispatch(new LogoutMobileAction());
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
const path = getNavigationRoute(SessionState_1.tenantInfo(ctx.getState()), appType, ['account', 'login']);
|
|
213
|
-
ctx.dispatch(new Navigate(path));
|
|
214
|
-
}
|
|
215
|
-
if (logoutAudit) {
|
|
216
|
-
ctx.dispatch(new AuditLogoutMobileAction());
|
|
217
|
-
}
|
|
218
|
-
return this.router.events.pipe(// observe all route events
|
|
219
|
-
filter(e => e instanceof NavigationEnd && e.url.includes('/account/login')), // filter only NavigationEnd events
|
|
220
|
-
distinctUntilChanged(), first(), switchMap(() => {
|
|
221
|
-
return this.authService.logout().pipe(tap(() => {
|
|
222
|
-
const sparkSessions = this.getSparkSessions();
|
|
223
|
-
const tenant = sparkSessions[this.sessionStorageService.tenant];
|
|
224
|
-
const ssoEnabled = tenant?.user?.ssoAuthenticated;
|
|
225
|
-
this.translateService.use(LOCAL_ENGLISH_LANGUAGE);
|
|
226
|
-
ctx.dispatch(new TenantClearAction());
|
|
227
|
-
ctx.dispatch(new UnloadParkingLotAction());
|
|
228
|
-
if (ssoEnabled) {
|
|
229
|
-
const tenantName = tenant?.tenant?.tenantName;
|
|
230
|
-
const provider = tenant?.tenant.props?.sso?.provider;
|
|
231
|
-
if (provider == SingleSignOnProvider.Microsoft) {
|
|
232
|
-
if (!ctx.getState().conflictDetected) {
|
|
233
|
-
this.msalService.logoutRedirect({
|
|
234
|
-
postLogoutRedirectUri: `/${tenantName}`
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
else if (provider == SingleSignOnProvider.PingFederate) {
|
|
239
|
-
this.openIdAuthService.signOut();
|
|
240
|
-
}
|
|
241
|
-
//this.silentLogOutMsl(ctx, appType);
|
|
242
|
-
}
|
|
243
|
-
}));
|
|
244
|
-
}));
|
|
245
|
-
}
|
|
246
192
|
onLogout(ctx, { logoutAudit, logoutBackofficeAudit }) {
|
|
247
193
|
const appType = this.appConfigService.getConfig().appType;
|
|
248
194
|
this.httpCancelService.cancelPendingRequests();
|
|
@@ -378,16 +324,6 @@ let SessionState = class SessionState {
|
|
|
378
324
|
}
|
|
379
325
|
}));
|
|
380
326
|
}
|
|
381
|
-
onLoadAppConfigurationMobileAction(ctx) {
|
|
382
|
-
const appConfiguration$ = this.mobileIdentityServiceProxy.mobileGetAppConfiguration(VERSION_MOBILE_LATEST);
|
|
383
|
-
return appConfiguration$.pipe(tap(appConfiguration => {
|
|
384
|
-
const sparkSessions = this.getSparkSessions();
|
|
385
|
-
if (this.sessionStorageService.tenant) {
|
|
386
|
-
sparkSessions[this.sessionStorageService.tenant].appConfiguration = appConfiguration.data;
|
|
387
|
-
this.setSparkSessions(ctx, sparkSessions);
|
|
388
|
-
}
|
|
389
|
-
}));
|
|
390
|
-
}
|
|
391
327
|
setConflictDetected(ctx, action) {
|
|
392
328
|
ctx.patchState({
|
|
393
329
|
conflictDetected: action.error,
|
|
@@ -398,7 +334,7 @@ let SessionState = class SessionState {
|
|
|
398
334
|
conflictDetected: null
|
|
399
335
|
});
|
|
400
336
|
}
|
|
401
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SessionState, deps: [{ token: i1.SessionStorageService }, { token: i2.LocalStorageService }, { token: i3.AppConfigService }, { token: i4.AuthService }, { token: i5.ConfigurationCloudServiceProxy }, { token: i5.BackofficeCloudServiceProxy }, { token: i6.Router }, { token: i7.HttpCancelService }, { token: i8.TranslateService }, { token: i9.MsalService }, { token: i5.UsersCloudServiceProxy }, { token: i10.OpenIdAuthService }, { token: i11.MessageBarService }
|
|
337
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SessionState, deps: [{ token: i1.SessionStorageService }, { token: i2.LocalStorageService }, { token: i3.AppConfigService }, { token: i4.AuthService }, { token: i5.ConfigurationCloudServiceProxy }, { token: i5.BackofficeCloudServiceProxy }, { token: i6.Router }, { token: i7.HttpCancelService }, { token: i8.TranslateService }, { token: i9.MsalService }, { token: i5.UsersCloudServiceProxy }, { token: i10.OpenIdAuthService }, { token: i11.MessageBarService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
402
338
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SessionState }); }
|
|
403
339
|
};
|
|
404
340
|
__decorate([
|
|
@@ -419,12 +355,6 @@ __decorate([
|
|
|
419
355
|
__decorate([
|
|
420
356
|
Action(AuditLogoutAction)
|
|
421
357
|
], SessionState.prototype, "AuditLogoutAction", null);
|
|
422
|
-
__decorate([
|
|
423
|
-
Action(AuditLogoutMobileAction)
|
|
424
|
-
], SessionState.prototype, "AuditLogoutMobileAction", null);
|
|
425
|
-
__decorate([
|
|
426
|
-
Action(MobileLogoutAction)
|
|
427
|
-
], SessionState.prototype, "onMobileLogoutAction", null);
|
|
428
358
|
__decorate([
|
|
429
359
|
Action(LogoutAction)
|
|
430
360
|
], SessionState.prototype, "onLogout", null);
|
|
@@ -455,9 +385,6 @@ __decorate([
|
|
|
455
385
|
__decorate([
|
|
456
386
|
Action(LoadAppConfigurationAction)
|
|
457
387
|
], SessionState.prototype, "onAppConfigurationAction", null);
|
|
458
|
-
__decorate([
|
|
459
|
-
Action(LoadAppConfigurationMobileAction)
|
|
460
|
-
], SessionState.prototype, "onLoadAppConfigurationMobileAction", null);
|
|
461
388
|
__decorate([
|
|
462
389
|
Action(SetConflictDetected)
|
|
463
390
|
], SessionState.prototype, "setConflictDetected", null);
|
|
@@ -512,5 +439,5 @@ SessionState = SessionState_1 = __decorate([
|
|
|
512
439
|
export { SessionState };
|
|
513
440
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SessionState, decorators: [{
|
|
514
441
|
type: Injectable
|
|
515
|
-
}], ctorParameters: () => [{ type: i1.SessionStorageService }, { type: i2.LocalStorageService }, { type: i3.AppConfigService }, { type: i4.AuthService }, { type: i5.ConfigurationCloudServiceProxy }, { type: i5.BackofficeCloudServiceProxy }, { type: i6.Router }, { type: i7.HttpCancelService }, { type: i8.TranslateService }, { type: i9.MsalService }, { type: i5.UsersCloudServiceProxy }, { type: i10.OpenIdAuthService }, { type: i11.MessageBarService }
|
|
516
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvbW9kdWxlcy9hdXRoL3Nlc3Npb24uc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUl4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFnQixNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUU1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEQsT0FBTyxFQUNtRyxvQkFBb0IsRUFDNUgsZ0JBQWdCLEVBQ2pCLE1BQU0sMkNBQTJDLENBQUM7QUFPbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0s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LENBQW9CO1FBQ3hCLElBQUksRUFBRSxTQUFTO1FBQ2YsUUFBUSxFQUFFLG1CQUFtQjtLQUM5QixDQUFDO0dBRVcsWUFBWSxDQTZjeEI7OzRGQTdjWSxZQUFZO2tCQUR4QixVQUFVO2lqQkF1R0YsT0FBTyxNQWFQLHFCQUFxQixNQTJCckIsdUJBQXVCLE1BUXZCLGVBQWUsTUFlZixpQkFBaUIsTUFRakIsaUJBQWlCLE1BeUJqQix1QkFBdUIsTUFZdkIsb0JBQW9CLE1BZ0RwQixRQUFRLE1Bb0VSLGtCQUFrQixNQWFsQixtQkFBbUIsTUFnQm5CLG9CQUFvQixNQVFwQixvQkFBb0IsTUFPcEIsdUJBQXVCLE1BT3ZCLHdCQUF3QixNQVN4QixtQ0FBbUMsTUFpQm5DLGtDQUFrQyxNQVlsQyx3QkFBd0IsTUFZeEIsa0NBQWtDLE1BWWxDLG1CQUFtQixNQU9uQixxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gJ0BhenVyZS9tc2FsLWFuZ3VsYXInO1xuaW1wb3J0IHsgQ2xlYXJDYWNoZVJlcXVlc3QgfSBmcm9tICdAYXp1cmUvbXNhbC1icm93c2VyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRlIH0gZnJvbSAnQG5neHMvcm91dGVyLXBsdWdpbic7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0IH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZmlyc3QsIG9mLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVzc2FnZUJhclBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci1wb3NpdGlvbi5lbnVtJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IExPQ0FMX0VOR0xJU0hfTEFOR1VBR0UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZ2xvYmFsLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCwgTE9HR0VEX1RFTkFOVF9LRVksIFNFU1NJT04sIFRFTkFOVF9LRVkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMva2V5cy1jb25zdGFudHMnO1xuaW1wb3J0IHsgVkVSU0lPTl9NT0JJTEVfTEFURVNUIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3ZlcnNpb24tY29uc3RhbnRzJztcbmltcG9ydCB7IEFwcFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9hcHAtdHlwZS5lbnVtJztcbmltcG9ydCB7IFNwYXJrU2Vzc2lvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc3Bhcmstc2Vzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgQmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LCBDb25maWd1cmF0aW9uQ2xvdWRTZXJ2aWNlUHJveHksIE1vYmlsZUNsb3VkU2VydmljZVByb3h5LCBTZXR0aW5nc0NhdGVnb3J5LCBTaW5nbGVTaWduT25Qcm92aWRlcixcbiAgU3BhcmtTZXR0aW5nc0R0bywgVXNlcnNDbG91ZFNlcnZpY2VQcm94eVxufSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBNb2JpbGVJZGVudGl0eVNlcnZpY2VQcm94eSB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvaWRlbnRpdHktc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cENhbmNlbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwLWNhbmNlbC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3BlbklkQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcGVuaWQtYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBhcnNlQXBpRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpLWhlbHBlci51dGlsJztcbmltcG9ydCB7IFN0cmluZ01hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBnZXROYXZpZ2F0aW9uUm91dGUgfSBmcm9tICcuLi8uLi91dGlscy9yb3V0ZS51dGlsJztcbmltcG9ydCB7IFVubG9hZFBhcmtpbmdMb3RBY3Rpb24gfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckluZm8gfSBmcm9tICcuL21vZGVsJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5mbyB9IGZyb20gJy4vbW9kZWwvYXBwbGljYXRpb24taW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGVuYW50SW5mbyB9IGZyb20gJy4vbW9kZWwvdGVuYW50LWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEF1ZGl0TG9nb3V0QWN0aW9uLCBBdWRpdExvZ291dE1vYmlsZUFjdGlvbiwgQXV0aGVudGljYXRlMkZBZm9yVXNlciwgQ2xlYXJDb25mbGljdERldGVjdGVkLCBIZWFsdGhBY3Rpb24sXG4gIEluaXRTZXNzaW9uRnJvbUxvY2FsU3RvcmFnZUFjdGlvbiwgTG9hZEFwcENvbmZpZ3VyYXRpb25BY3Rpb24sIExvYWRBcHBDb25maWd1cmF0aW9uTW9iaWxlQWN0aW9uLCBMb2FkQmFja29mZmljZUFwcENvbmZpZ3VyYXRpb25BY3Rpb24sXG4gIExvZ2luUmVxdWVzdEFjdGlvbiwgTG9nb3V0QWN0aW9uLCBMb2dvdXRNb2JpbGVBY3Rpb24sIE1vYmlsZUxvZ291dEFjdGlvbiwgU2V0Q29uZmxpY3REZXRlY3RlZCwgU2V0U3RhdGVBY3Rpb24sIFNldFRlbmFudFVzZXJBY3Rpb24sIFNldFVzZXJOYW1lQWN0aW9uLFxuICBUZW5hbnRDbGVhckFjdGlvbiwgVGVuYW50TG9hZEFjdGlvbiwgVXBkYXRlQXV0aFRva2VuQWN0aW9uLCBVcGRhdGVUZW5hbnRJbmZvUHJvcHMsIFVwZGF0ZVVzZXJTZXR0aW5nc0luU2Vzc2lvbkFjdGlvblxufSBmcm9tICcuL3Nlc3Npb24uYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblN0YXRlTW9kZWwge1xuICBzcGFya1Nlc3Npb25zOiBTdHJpbmdNYXA8U3BhcmtTZXNzaW9uPjtcbiAgYXBwbGljYXRpb24/OiBBcHBsaWNhdGlvbkluZm87XG4gIHNlcnZlckVudmlyb25tZW50TW9kZT86IHN0cmluZztcbiAgY29uZmxpY3REZXRlY3RlZD86IEh0dHBFcnJvclJlc3BvbnNlO1xufVxuXG5jb25zdCBkZWZhdWx0U2Vzc2lvblN0YXRlID0ge1xuICBzcGFya1Nlc3Npb25zOiB7fSxcbiAgYXBwbGljYXRpb246IHsgdmVyc2lvbjogbnVsbCwgcmVsZWFzZURhdGU6IG51bGwsIGZlYXR1cmVzOiB7fSB9LFxuICBjb25mbGljdERldGVjdGVkOiBudWxsLFxufTtcblxuQFN0YXRlPFNlc3Npb25TdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICdzZXNzaW9uJyxcbiAgZGVmYXVsdHM6IGRlZmF1bHRTZXNzaW9uU3RhdGUsXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlc3Npb25TdGF0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGxvY2FsU3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvbkNsb3VkU2VydmljZVByb3h5OiBDb25maWd1cmF0aW9uQ2xvdWRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBiYWNrb2ZmaWNlQ2xvdWRTZXJ2aWNlUHJveHk6IEJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgaHR0cENhbmNlbFNlcnZpY2U6IEh0dHBDYW5jZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1zYWxTZXJ2aWNlOiBNc2FsU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJzQ2xvdWRTZXJ2aWNlUHJveHk6IFVzZXJzQ2xvdWRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBvcGVuSWRBdXRoU2VydmljZTogT3BlbklkQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2JpbGVDbG91ZFNlcnZpY2VQcm94eTogTW9iaWxlQ2xvdWRTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBtb2JpbGVJZGVudGl0eVNlcnZpY2VQcm94eTogTW9iaWxlSWRlbnRpdHlTZXJ2aWNlUHJveHkpIHtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgaXNDb25mbGljdERldGVjdGVkKHN0YXRlOiBTZXNzaW9uU3RhdGVNb2RlbCkge1xuICAgIHJldHVybiBzdGF0ZS5jb25mbGljdERldGVjdGVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBpc1VzZXJBdXRoZW50aWNhdGVkV2l0aFNTTyhzdGF0ZTogU2Vzc2lvblN0YXRlTW9kZWwpIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShURU5BTlRfS0VZKTtcbiAgICByZXR1cm4gc3RhdGUuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXT8udXNlcj8uc3NvQXV0aGVudGljYXRlZDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgaXNVc2VyQXV0aGVudGljYXRlZFdpdGgyRkEoc3RhdGU6IFNlc3Npb25TdGF0ZU1vZGVsKSB7XG4gICAgY29uc3QgdGVuYW50TmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVEVOQU5UX0tFWSk7XG4gICAgcmV0dXJuIHN0YXRlLnNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0/LnVzZXIuYXV0aGVudGljYXRlZDJGQTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VydmVyRW52aXJvbm1lbnRNb2RlKHN0YXRlOiBTZXNzaW9uU3RhdGVNb2RlbCkge1xuICAgIHJldHVybiBzdGF0ZS5zZXJ2ZXJFbnZpcm9ubWVudE1vZGU7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHVzZXJJbmZvKHN0YXRlOiBTZXNzaW9uU3RhdGVNb2RlbCk6IFVzZXJJbmZvIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShURU5BTlRfS0VZKTtcbiAgICByZXR1cm4gc3RhdGUuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXT8udXNlcjtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgbG9nZ2VkVXNlckluZm8oc3RhdGU6IFNlc3Npb25TdGF0ZU1vZGVsKTogVXNlckluZm8ge1xuICAgIGNvbnN0IHRlbmFudE5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKExPR0dFRF9URU5BTlRfS0VZKTtcbiAgICByZXR1cm4gc3RhdGUuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXT8udXNlcjtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdGVuYW50SW5mbyhzdGF0ZTogU2Vzc2lvblN0YXRlTW9kZWwpIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShURU5BTlRfS0VZKTtcbiAgICByZXR1cm4gc3RhdGUuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXT8udGVuYW50O1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyB0aGlyZFBhcnR5VG9rZW4oc3RhdGU6IFNlc3Npb25TdGF0ZU1vZGVsKSB7XG4gICAgY29uc3QgdGVuYW50TmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVEVOQU5UX0tFWSk7XG4gICAgcmV0dXJuIHN0YXRlLnNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0/LnRoaXJkUGFydHlUb2tlbjtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgbG9nZ2VkVGVuYW50SW5mbyhzdGF0ZTogU2Vzc2lvblN0YXRlTW9kZWwpIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShMT0dHRURfVEVOQU5UX0tFWSk7XG4gICAgcmV0dXJuIHN0YXRlLnNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0/LnRlbmFudDtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdXNlclNldHRpbmdzKHN0YXRlOiBTZXNzaW9uU3RhdGVNb2RlbCk6IFNwYXJrU2V0dGluZ3NEdG9bXSB7XG4gICAgY29uc3QgdGVuYW50TmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVEVOQU5UX0tFWSk7XG4gICAgcmV0dXJuIHN0YXRlLnNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0/LnVzZXIuc2V0dGluZ3MgYXMgU3BhcmtTZXR0aW5nc0R0b1tdO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBtYXBwZWRVc2VyU2V0dGluZ3Moc3RhdGU6IFNlc3Npb25TdGF0ZU1vZGVsKSB7XG4gICAgY29uc3QgdGVuYW50TmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVEVOQU5UX0tFWSk7XG4gICAgcmV0dXJuIHN0YXRlLnNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0/LnVzZXIuc2V0dGluZ3MucmVkdWNlKChzZXR0aW5nc01hcCwgdXNlclNldHRpbmcpID0+XG4gICAgICBzZXR0aW5nc01hcC5zZXQoXG4gICAgICAgIHVzZXJTZXR0aW5nLmNhdGVnb3J5LFxuICAgICAgICB0eXBlb2YgdXNlclNldHRpbmcuc2V0dGluZ3NKc29uID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gSlNPTi5wYXJzZSh1c2VyU2V0dGluZy5zZXR0aW5nc0pzb24pXG4gICAgICAgICAgOiB1c2VyU2V0dGluZy5zZXR0aW5nc0pzb25cbiAgICAgICksIG5ldyBNYXA8U2V0dGluZ3NDYXRlZ29yeSwgYW55PigpKTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgYXBwQ29uZmlndXJhdGlvbihzdGF0ZTogU2Vzc2lvblN0YXRlTW9kZWwpIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShMT0dHRURfVEVOQU5UX0tFWSk7XG4gICAgcmV0dXJuIHN0YXRlLnNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0/LmFwcENvbmZpZ3VyYXRpb247XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGtlZXBNZUxvZ2dlZEluKHN0YXRlOiBTZXNzaW9uU3RhdGVNb2RlbCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRlbmFudE5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFRFTkFOVF9LRVkpO1xuICAgIHJldHVybiBzdGF0ZS5zcGFya1Nlc3Npb25zW3RlbmFudE5hbWVdPy51c2VyLmtlZXBNZUxvZ2dlZEluID8/IGZhbHNlO1xuICB9XG5cbiAgQEFjdGlvbihMb2dpblJlcXVlc3RBY3Rpb24pXG4gIHB1YmxpYyBvbkxvZ2luKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2dpblJlcXVlc3RBY3Rpb24pIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5sb2dpbihhY3Rpb24pLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IHNwYXJrU2Vzc2lvbiA9PiB7XG4gICAgICAgIHRoaXMuU2V0VGVuYW50VXNlckFjdGlvbihjdHgsIHNwYXJrU2Vzc2lvbik7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGUgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gcGFyc2VBcGlFcnJvck1lc3NhZ2UoZSk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobWVzc2FnZSksIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5TdGF0aWMgfSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihTZXRUZW5hbnRVc2VyQWN0aW9uKVxuICBwdWJsaWMgb25TZXRUZW5hbnRVc2VyQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgeyBzcGFya1Nlc3Npb24gfTogU2V0VGVuYW50VXNlckFjdGlvbikge1xuICAgIHRoaXMuU2V0VGVuYW50VXNlckFjdGlvbihjdHgsIHNwYXJrU2Vzc2lvbik7XG4gIH1cblxuICBwcml2YXRlIFNldFRlbmFudFVzZXJBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCBzcGFya1Nlc3Npb246IFNwYXJrU2Vzc2lvbikge1xuICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICBjb25zdCB7IHVzZXIsIGF1dGhUb2tlbiwgcmVmcmVzaCwgdGhpcmRQYXJ0eVRva2VuIH0gPSBzcGFya1Nlc3Npb247XG4gICAgdXNlci5zZXR0aW5ncyA9IHVzZXIuc2V0dGluZ3MubWFwKHMgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBTcGFya1NldHRpbmdzRHRvKHtcbiAgICAgICAgY2F0ZWdvcnk6IHMuY2F0ZWdvcnksXG4gICAgICAgIHNldHRpbmdzSnNvbjogSlNPTi5wYXJzZShzLnNldHRpbmdzSnNvbilcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKCFzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0pIHtcbiAgICAgIHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XSA9IHsgdXNlciwgYXV0aFRva2VuLCByZWZyZXNoLCB0ZW5hbnQ6IG51bGwsIHRoaXJkUGFydHlUb2tlbiB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0udXNlciA9IHVzZXI7XG4gICAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0uYXV0aFRva2VuID0gYXV0aFRva2VuO1xuICAgICAgc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdLnJlZnJlc2ggPSByZWZyZXNoO1xuICAgICAgc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdLnRoaXJkUGFydHlUb2tlbiA9IHRoaXJkUGFydHlUb2tlbjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFNwYXJrU2Vzc2lvbnMoY3R4LCBzcGFya1Nlc3Npb25zKTtcbiAgfVxuXG4gIEBBY3Rpb24oVXBkYXRlQXV0aFRva2VuQWN0aW9uKVxuICBwdWJsaWMgb25VcGRhdGVBdXRoVG9rZW5BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCBhY3Rpb246IFVwZGF0ZUF1dGhUb2tlbkFjdGlvbikge1xuICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0uYXV0aFRva2VuID0gYWN0aW9uLmF1dGhUb2tlbjtcbiAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0ucmVmcmVzaC5yZWZyZXNoVG9rZW4gPSBhY3Rpb24ucmVmcmVzaFRva2VuO1xuICAgIHRoaXMuc2V0U3BhcmtTZXNzaW9ucyhjdHgsIHNwYXJrU2Vzc2lvbnMpO1xuICB9XG5cbiAgQEFjdGlvbihTZXRTdGF0ZUFjdGlvbilcbiAgcHVibGljIHNldFNlc3Npb25TdGF0ZShjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0U3RhdGVBY3Rpb24pIHtcbiAgICBjb25zdCBzcGFya1Nlc3Npb25zID0gdGhpcy5nZXRTcGFya1Nlc3Npb25zKCk7XG4gICAgc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdLmF1dGhUb2tlbiA9IGFjdGlvbi5hdXRoVG9rZW47XG4gICAgc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdLnJlZnJlc2ggPSBhY3Rpb24ucmVmcmVzaDtcblxuICAgIGNvbnN0IGFwcGxpY2F0aW9uOiBBcHBsaWNhdGlvbkluZm8gPSB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkucGFja2FnZUluZm8udmVyc2lvbixcbiAgICAgIHJlbGVhc2VEYXRlOiBudWxsLFxuICAgICAgZmVhdHVyZXM6IHt9LFxuICAgIH07XG4gICAgY3R4LnBhdGNoU3RhdGUoeyBhcHBsaWNhdGlvbiB9KTtcbiAgICB0aGlzLnNldFNwYXJrU2Vzc2lvbnMoY3R4LCBzcGFya1Nlc3Npb25zKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0VXNlck5hbWVBY3Rpb24pXG4gIHB1YmxpYyBTZXRVc2VyTmFtZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0VXNlck5hbWVBY3Rpb24pIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShURU5BTlRfS0VZKTtcbiAgICBjb25zdCBzcGFya1Nlc3Npb25zID0gdGhpcy5nZXRTcGFya1Nlc3Npb25zKCk7XG4gICAgc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXS51c2VyLmRpc3BsYXlOYW1lID0gYWN0aW9uLnVzZXJOYW1lO1xuICAgIHRoaXMuc2V0U3BhcmtTZXNzaW9ucyhjdHgsIHNwYXJrU2Vzc2lvbnMpO1xuICB9XG5cbiAgQEFjdGlvbihBdWRpdExvZ291dEFjdGlvbilcbiAgcHVibGljIEF1ZGl0TG9nb3V0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgYWN0aW9uOiBBdWRpdExvZ291dEFjdGlvbikge1xuICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShURU5BTlRfS0VZKTtcbiAgICBjb25zdCB0ZW5hbnRJbmZvID0gY3R4LmdldFN0YXRlKCkuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXT8udGVuYW50O1xuICAgIGlmICh0aGlzLmlzVGVuYW50VW5kZWZpbmVkKHRlbmFudEluZm8sIHNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0pKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7IC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0ZW5hbnQgb3Igc3BhcmtTZXNzaW9ucyBhcmUgdW5kZWZpbmVkXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXJzQ2xvdWRTZXJ2aWNlUHJveHkuYXVkaXRMb2dvdXQoKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHsgfSkpO1xuICB9XG5cbiAgLy9UT0RPICwgZW5hYmxlIGJhY2tvZmZpY2UgbG9nb3V0IHdoZW4gLCBCRSBBdWRpdCBmb3IgYmFja29mZmljZSBpcyBpbXBsZW1lbnRlZFxuICAvLyBAQWN0aW9uKEF1ZGl0QmFja29mZmljZUFjdGlvbilcbiAgLy8gcHVibGljIG9uQXVkaXRCYWNrb2ZmaWNlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgYWN0aW9uOiBBdWRpdEJhY2tvZmZpY2VBY3Rpb24pIHtcbiAgLy8gICBjb25zdCBzcGFya1Nlc3Npb25zID0gdGhpcy5nZXRTcGFya1Nlc3Npb25zKCk7XG4gIC8vICAgY29uc3QgdGVuYW50TmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVEVOQU5UX0tFWSk7XG4gIC8vICAgY29uc3QgdGVuYW50SW5mbyA9IGN0eC5nZXRTdGF0ZSgpLnNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0udGVuYW50O1xuICAvLyAgIGlmICh0aGlzLmlzVGVuYW50VW5kZWZpbmVkKHRlbmFudEluZm8sIHNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0pKSB7XG4gIC8vICAgICByZXR1cm4gb2YobnVsbCk7IC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0ZW5hbnQgb3Igc3BhcmtTZXNzaW9ucyBhcmUgdW5kZWZpbmVkXG4gIC8vICAgfVxuICAvLyAgIHJldHVybiB0aGlzLmJhY2tvZmZpY2VTZXJ2aWNlUHJveHkuYmFja29mZmljZUF1ZGl0TG9nb3V0KCkucGlwZShcbiAgLy8gICAgIHRhcCgoKSA9PiB7IH0pKTtcbiAgLy8gfVxuXG4gIEBBY3Rpb24oQXVkaXRMb2dvdXRNb2JpbGVBY3Rpb24pXG4gIHB1YmxpYyBBdWRpdExvZ291dE1vYmlsZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIGFjdGlvbjogQXVkaXRMb2dvdXRNb2JpbGVBY3Rpb24pIHtcbiAgICBjb25zdCBzcGFya1Nlc3Npb25zID0gdGhpcy5nZXRTcGFya1Nlc3Npb25zKCk7XG4gICAgY29uc3QgdGVuYW50TmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVEVOQU5UX0tFWSk7XG4gICAgY29uc3QgdGVuYW50SW5mbyA9IGN0eC5nZXRTdGF0ZSgpLnNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0/LnRlbmFudDtcbiAgICBpZiAodGhpcy5pc1RlbmFudFVuZGVmaW5lZCh0ZW5hbnRJbmZvLCBzcGFya1Nlc3Npb25zW3RlbmFudE5hbWVdKSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpOyAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGVuYW50IG9yIHNwYXJrU2Vzc2lvbnMgYXJlIHVuZGVmaW5lZFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tb2JpbGVDbG91ZFNlcnZpY2VQcm94eS5tb2JpbGVBdWRpdExvZ291dFYyKFZFUlNJT05fTU9CSUxFX0xBVEVTVCkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7IH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTW9iaWxlTG9nb3V0QWN0aW9uKVxuICBwdWJsaWMgb25Nb2JpbGVMb2dvdXRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCB7IGxvZ291dEF1ZGl0IH06IE1vYmlsZUxvZ291dEFjdGlvbikge1xuICAgIGNvbnN0IGFwcFR5cGUgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuYXBwVHlwZTtcbiAgICB0aGlzLmh0dHBDYW5jZWxTZXJ2aWNlLmNhbmNlbFBlbmRpbmdSZXF1ZXN0cygpO1xuXG4gICAgaWYgKGFwcFR5cGUgPT09IEFwcFR5cGUuTW9iaWxlKSB7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IExvZ291dE1vYmlsZUFjdGlvbigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGF0aCA9IGdldE5hdmlnYXRpb25Sb3V0ZShTZXNzaW9uU3RhdGUudGVuYW50SW5mbyhjdHguZ2V0U3RhdGUoKSksIGFwcFR5cGUsIFsnYWNjb3VudCcsICdsb2dpbiddKTtcbiAgICAgIGN0eC5kaXNwYXRjaChuZXcgTmF2aWdhdGUocGF0aCkpO1xuICAgIH1cblxuICAgIGlmIChsb2dvdXRBdWRpdCkge1xuICAgICAgY3R4LmRpc3BhdGNoKG5ldyBBdWRpdExvZ291dE1vYmlsZUFjdGlvbigpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoIC8vIG9ic2VydmUgYWxsIHJvdXRlIGV2ZW50c1xuICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgJiYgZS51cmwuaW5jbHVkZXMoJy9hY2NvdW50L2xvZ2luJykpLCAvLyBmaWx0ZXIgb25seSBOYXZpZ2F0aW9uRW5kIGV2ZW50c1xuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIGZpcnN0KCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5sb2dvdXQoKS5waXBlKFxuICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzcGFya1Nlc3Npb25zID0gdGhpcy5nZXRTcGFya1Nlc3Npb25zKCk7XG4gICAgICAgICAgICBjb25zdCB0ZW5hbnQgPSBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF07XG4gICAgICAgICAgICBjb25zdCBzc29FbmFibGVkID0gdGVuYW50Py51c2VyPy5zc29BdXRoZW50aWNhdGVkO1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShMT0NBTF9FTkdMSVNIX0xBTkdVQUdFKTtcbiAgICAgICAgICAgIGN0eC5kaXNwYXRjaChuZXcgVGVuYW50Q2xlYXJBY3Rpb24oKSk7XG4gICAgICAgICAgICBjdHguZGlzcGF0Y2gobmV3IFVubG9hZFBhcmtpbmdMb3RBY3Rpb24oKSk7XG4gICAgICAgICAgICBpZiAoc3NvRW5hYmxlZCkge1xuICAgICAgICAgICAgICBjb25zdCB0ZW5hbnROYW1lID0gdGVuYW50Py50ZW5hbnQ/LnRlbmFudE5hbWU7XG4gICAgICAgICAgICAgIGNvbnN0IHByb3ZpZGVyID0gdGVuYW50Py50ZW5hbnQucHJvcHM/LnNzbz8ucHJvdmlkZXI7XG4gICAgICAgICAgICAgIGlmIChwcm92aWRlciA9PSBTaW5nbGVTaWduT25Qcm92aWRlci5NaWNyb3NvZnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWN0eC5nZXRTdGF0ZSgpLmNvbmZsaWN0RGV0ZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubXNhbFNlcnZpY2UubG9nb3V0UmVkaXJlY3Qoe1xuICAgICAgICAgICAgICAgICAgICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk6IGAvJHt0ZW5hbnROYW1lfWBcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlIGlmIChwcm92aWRlciA9PSBTaW5nbGVTaWduT25Qcm92aWRlci5QaW5nRmVkZXJhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5JZEF1dGhTZXJ2aWNlLnNpZ25PdXQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvL3RoaXMuc2lsZW50TG9nT3V0TXNsKGN0eCwgYXBwVHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2dvdXRBY3Rpb24pXG4gIHB1YmxpYyBvbkxvZ291dChjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIHsgbG9nb3V0QXVkaXQsIGxvZ291dEJhY2tvZmZpY2VBdWRpdCB9OiBMb2dvdXRBY3Rpb24pIHtcbiAgICBjb25zdCBhcHBUeXBlID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmFwcFR5cGU7XG4gICAgdGhpcy5odHRwQ2FuY2VsU2VydmljZS5jYW5jZWxQZW5kaW5nUmVxdWVzdHMoKTtcblxuICAgIGlmIChhcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZSkge1xuICAgICAgY3R4LmRpc3BhdGNoKG5ldyBMb2dvdXRNb2JpbGVBY3Rpb24oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBhdGggPSBnZXROYXZpZ2F0aW9uUm91dGUoU2Vzc2lvblN0YXRlLnRlbmFudEluZm8oY3R4LmdldFN0YXRlKCkpLCBhcHBUeXBlLCBbJ2FjY291bnQnLCAnbG9naW4nXSk7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IE5hdmlnYXRlKHBhdGgpKTtcbiAgICB9XG5cbiAgICBpZiAobG9nb3V0QXVkaXQpIHtcbiAgICAgIGN0eC5kaXNwYXRjaChuZXcgQXVkaXRMb2dvdXRBY3Rpb24oKSk7XG4gICAgfVxuXG4gICAgLy9UT0RPICwgZW5hYmxlIGJhY2tvZmZpY2UgbG9nb3V0IHdoZW4gLCBCRSBBdWRpdCBmb3IgYmFja29mZmljZSBpcyBpbXBsZW1lbnRlZFxuICAgIC8vIGlmIChsb2dvdXRCYWNrb2ZmaWNlQXVkaXQpIHtcbiAgICAvLyAgIGN0eC5kaXNwYXRjaChuZXcgQXVkaXRCYWNrb2ZmaWNlQWN0aW9uKCkpO1xuICAgIC8vIH1cblxuICAgIHJldHVybiB0aGlzLnJvdXRlci5ldmVudHMucGlwZSggLy8gb2JzZXJ2ZSBhbGwgcm91dGUgZXZlbnRzXG4gICAgICBmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiBlLnVybC5pbmNsdWRlcygnL2FjY291bnQvbG9naW4nKSksIC8vIGZpbHRlciBvbmx5IE5hdmlnYXRpb25FbmQgZXZlbnRzXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgZmlyc3QoKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCgpLnBpcGUoXG4gICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICAgICAgICAgIGNvbnN0IHRlbmFudCA9IHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XTtcbiAgICAgICAgICAgIGNvbnN0IHNzb0VuYWJsZWQgPSB0ZW5hbnQ/LnVzZXI/LnNzb0F1dGhlbnRpY2F0ZWQ7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKExPQ0FMX0VOR0xJU0hfTEFOR1VBR0UpO1xuICAgICAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBUZW5hbnRDbGVhckFjdGlvbigpKTtcbiAgICAgICAgICAgIGN0eC5kaXNwYXRjaChuZXcgVW5sb2FkUGFya2luZ0xvdEFjdGlvbigpKTtcbiAgICAgICAgICAgIGlmIChzc29FbmFibGVkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRlbmFudE5hbWUgPSB0ZW5hbnQ/LnRlbmFudD8udGVuYW50TmFtZTtcbiAgICAgICAgICAgICAgY29uc3QgcHJvdmlkZXIgPSB0ZW5hbnQ/LnRlbmFudC5wcm9wcz8uc3NvPy5wcm92aWRlcjtcbiAgICAgICAgICAgICAgaWYgKHByb3ZpZGVyID09IFNpbmdsZVNpZ25PblByb3ZpZGVyLk1pY3Jvc29mdCkge1xuICAgICAgICAgICAgICAgIGlmICghY3R4LmdldFN0YXRlKCkuY29uZmxpY3REZXRlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5tc2FsU2VydmljZS5sb2dvdXRSZWRpcmVjdCh7XG4gICAgICAgICAgICAgICAgICAgIHBvc3RMb2dvdXRSZWRpcmVjdFVyaTogbG9nb3V0QmFja29mZmljZUF1ZGl0ID8gJy8nIDogYC8ke3RlbmFudE5hbWV9YFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2UgaWYgKHByb3ZpZGVyID09IFNpbmdsZVNpZ25PblByb3ZpZGVyLlBpbmdGZWRlcmF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbklkQXV0aFNlcnZpY2Uuc2lnbk91dCgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vdGhpcy5zaWxlbnRMb2dPdXRNc2woY3R4LCBhcHBUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSk7XG4gICAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGlzVGVuYW50VW5kZWZpbmVkID0gKHRlbmFudDogVGVuYW50SW5mbywgc2Vzc2lvbjogU3BhcmtTZXNzaW9uKSA9PiAhdGVuYW50IHx8ICFzZXNzaW9uO1xuXG4gIHNpbGVudExvZ091dE1zbChjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIGFwcFR5cGU6IEFwcFR5cGUpIHtcbiAgICBjb25zdCBjbGVhckNhY2hlUmVxdWVzdDogQ2xlYXJDYWNoZVJlcXVlc3QgPSB7XG4gICAgICBhY2NvdW50OiB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKClbMF0sXG4gICAgfTtcblxuICAgIHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UuY2xlYXJDYWNoZShjbGVhckNhY2hlUmVxdWVzdCk7XG4gICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcblxuICAgIGNvbnN0IHBhdGggPSBnZXROYXZpZ2F0aW9uUm91dGUoU2Vzc2lvblN0YXRlLnRlbmFudEluZm8oY3R4LmdldFN0YXRlKCkpLCBhcHBUeXBlLCBbJ2FjY291bnQnLCAnbG9naW4nXSk7XG4gICAgY3R4LmRpc3BhdGNoKG5ldyBOYXZpZ2F0ZShwYXRoKSk7XG4gIH1cblxuICBAQWN0aW9uKFRlbmFudExvYWRBY3Rpb24pXG4gIHB1YmxpYyBvblRlbmFudExvYWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCBhY3Rpb246IFRlbmFudExvYWRBY3Rpb24pIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gYWN0aW9uLnRlbmFudD8udGVuYW50TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICBpZiAoIXNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0pIHtcbiAgICAgIHNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0gPSB7IHVzZXI6IG51bGwsIGF1dGhUb2tlbjogbnVsbCwgcmVmcmVzaDogbnVsbCwgdGVuYW50OiBhY3Rpb24udGVuYW50IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0udGVuYW50ID0gYWN0aW9uLnRlbmFudDtcbiAgICB9XG5cbiAgICB0aGlzLnNldFNwYXJrU2Vzc2lvbnMoY3R4LCBzcGFya1Nlc3Npb25zKTtcbiAgfVxuXG4gIEBBY3Rpb24oVGVuYW50Q2xlYXJBY3Rpb24pXG4gIHB1YmxpYyBvblRlbmFudENsZWFyQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgXzogVGVuYW50Q2xlYXJBY3Rpb24pIHtcbiAgICBjb25zdCBzcGFya1Nlc3Npb25zID0gdGhpcy5nZXRTcGFya1Nlc3Npb25zKCk7XG4gICAgY29uc3Qgc3BhcmtTZXNzaW9uID0gc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdO1xuICAgIGlmIChzcGFya1Nlc3Npb24pIHtcbiAgICAgIHNwYXJrU2Vzc2lvbi51c2VyID0gbnVsbDtcbiAgICAgIHNwYXJrU2Vzc2lvbi5yZWZyZXNoID0gbnVsbDtcbiAgICAgIHNwYXJrU2Vzc2lvbi5hdXRoVG9rZW4gPSBudWxsO1xuICAgICAgaWYgKHNwYXJrU2Vzc2lvbi5hcHBDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIHNwYXJrU2Vzc2lvbi5hcHBDb25maWd1cmF0aW9uLmFuYWx5dGljc1Rva2VuID0gJyc7XG4gICAgICAgIHNwYXJrU2Vzc2lvbi5hcHBDb25maWd1cmF0aW9uLmZlZWRiYWNrVG9rZW4gPSAnJztcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3BhcmtTZXNzaW9ucyhjdHgsIHNwYXJrU2Vzc2lvbnMpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oSGVhbHRoQWN0aW9uKVxuICBwdWJsaWMgb25IZWFsdGhBY3Rpb25BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+KSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbkNsb3VkU2VydmljZVByb3h5LmdldEVudigpLnBpcGUodGFwKGVudlJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oRU5WSVJPTk1FTlQsIEpTT04uc3RyaW5naWZ5KGVudlJlc3BvbnNlLmRhdGEuZW52aXJvbm1lbnQpKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VydmVyRW52aXJvbm1lbnRNb2RlOiBlbnZSZXNwb25zZS5kYXRhLmVudmlyb25tZW50IH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oVXBkYXRlVXNlclNldHRpbmdzSW5TZXNzaW9uQWN0aW9uKVxuICBwdWJsaWMgb25VcGRhdGVVc2VyU2V0dGluZ3MoY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCB7IHVzZXJTZXR0aW5ncyB9KSB7XG4gICAgY29uc3Qgc3BhcmtTZXNzaW9ucyA9IHRoaXMuZ2V0U3BhcmtTZXNzaW9ucygpO1xuICAgIHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XS51c2VyLnNldHRpbmdzID0gdXNlclNldHRpbmdzO1xuICAgIHRoaXMuc2V0U3BhcmtTZXNzaW9ucyhjdHgsIHNwYXJrU2Vzc2lvbnMpO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVUZW5hbnRJbmZvUHJvcHMpXG4gIHB1YmxpYyBvblVwZGF0ZVRlbmFudEluZm9Qcm9wcyhjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIHsgcHJvcHMgfSkge1xuICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0udGVuYW50LnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5zZXRTcGFya1Nlc3Npb25zKGN0eCwgc3BhcmtTZXNzaW9ucyk7XG4gIH1cblxuICBAQWN0aW9uKEF1dGhlbnRpY2F0ZTJGQWZvclVzZXIpXG4gIHB1YmxpYyBvbkF1dGhlbnRpY2F0ZTJGQWZvclVzZXIoY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCB7IH0pIHtcbiAgICBjb25zdCBzcGFya1Nlc3Npb25zID0gdGhpcy5nZXRTcGFya1Nlc3Npb25zKCk7XG4gICAgaWYgKHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XT8udXNlcikge1xuICAgICAgc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdLnVzZXIuYXV0aGVudGljYXRlZDJGQSA9IHRydWU7XG4gICAgICB0aGlzLnNldFNwYXJrU2Vzc2lvbnMoY3R4LCBzcGFya1Nlc3Npb25zKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKEluaXRTZXNzaW9uRnJvbUxvY2FsU3RvcmFnZUFjdGlvbilcbiAgcHVibGljIG9uTG9hZFNlc3Npb25Gcm9tTG9jYWxTdG9yYWdlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgXzogSW5pdFNlc3Npb25Gcm9tTG9jYWxTdG9yYWdlQWN0aW9uKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5nZXRJdGVtKFNFU1NJT04pO1xuICAgIGNvbnN0IHNlc3Npb246IHtcbiAgICAgIGFwcGxpY2F0aW9uOiBBcHBsaWNhdGlvbkluZm8sXG4gICAgICBzcGFya1Nlc3Npb25zOiBTdHJpbmdNYXA8U3BhcmtTZXNzaW9uPixcbiAgICB9ID0gZGF0YSA/IEpTT04ucGFyc2UoZGF0YSkgOiBkZWZhdWx0U2Vzc2lvblN0YXRlO1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGFwcGxpY2F0aW9uOiBzZXNzaW9uLmFwcGxpY2F0aW9uLFxuICAgICAgc3BhcmtTZXNzaW9uczogc2Vzc2lvbi5zcGFya1Nlc3Npb25zXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudCkge1xuICAgICAgY29uc3Qgc3BhcmtTZXNzaW9uID0gc2Vzc2lvbi5zcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF07XG4gICAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5zZXRBdXRoU2Vzc2lvbihzcGFya1Nlc3Npb24/LmF1dGhUb2tlbiwgc3BhcmtTZXNzaW9uPy5yZWZyZXNoKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlQXBwQ29uZmlndXJhdGlvbkFjdGlvbilcbiAgcHVibGljIG9uQmFja29mZmljZUFwcENvbmZpZ3VyYXRpb25BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+KSB7XG4gICAgY29uc3QgYXBwQ29uZmlndXJhdGlvbiQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlQXBwQ29uZmlndXJhdGlvbigpO1xuICAgIHJldHVybiBhcHBDb25maWd1cmF0aW9uJC5waXBlKHRhcChhcHBDb25maWd1cmF0aW9uID0+IHtcbiAgICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICAgIGlmICh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnQpIHtcbiAgICAgICAgc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdLmFwcENvbmZpZ3VyYXRpb24gPSBhcHBDb25maWd1cmF0aW9uLmRhdGE7XG4gICAgICAgIHRoaXMuc2V0U3BhcmtTZXNzaW9ucyhjdHgsIHNwYXJrU2Vzc2lvbnMpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEFwcENvbmZpZ3VyYXRpb25BY3Rpb24pXG4gIHB1YmxpYyBvbkFwcENvbmZpZ3VyYXRpb25BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+KSB7XG4gICAgY29uc3QgYXBwQ29uZmlndXJhdGlvbiQgPSB0aGlzLmNvbmZpZ3VyYXRpb25DbG91ZFNlcnZpY2VQcm94eS5nZXRBcHBDb25maWd1cmF0aW9uKCk7XG4gICAgcmV0dXJuIGFwcENvbmZpZ3VyYXRpb24kLnBpcGUodGFwKGFwcENvbmZpZ3VyYXRpb24gPT4ge1xuICAgICAgY29uc3Qgc3BhcmtTZXNzaW9ucyA9IHRoaXMuZ2V0U3BhcmtTZXNzaW9ucygpO1xuICAgICAgaWYgKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudCkge1xuICAgICAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0uYXBwQ29uZmlndXJhdGlvbiA9IGFwcENvbmZpZ3VyYXRpb24uZGF0YTtcbiAgICAgICAgdGhpcy5zZXRTcGFya1Nlc3Npb25zKGN0eCwgc3BhcmtTZXNzaW9ucyk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkQXBwQ29uZmlndXJhdGlvbk1vYmlsZUFjdGlvbilcbiAgcHVibGljIG9uTG9hZEFwcENvbmZpZ3VyYXRpb25Nb2JpbGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+KSB7XG4gICAgY29uc3QgYXBwQ29uZmlndXJhdGlvbiQgPSB0aGlzLm1vYmlsZUlkZW50aXR5U2VydmljZVByb3h5Lm1vYmlsZUdldEFwcENvbmZpZ3VyYXRpb24oVkVSU0lPTl9NT0JJTEVfTEFURVNUKTtcbiAgICByZXR1cm4gYXBwQ29uZmlndXJhdGlvbiQucGlwZSh0YXAoYXBwQ29uZmlndXJhdGlvbiA9PiB7XG4gICAgICBjb25zdCBzcGFya1Nlc3Npb25zID0gdGhpcy5nZXRTcGFya1Nlc3Npb25zKCk7XG4gICAgICBpZiAodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50KSB7XG4gICAgICAgIHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XS5hcHBDb25maWd1cmF0aW9uID0gYXBwQ29uZmlndXJhdGlvbi5kYXRhO1xuICAgICAgICB0aGlzLnNldFNwYXJrU2Vzc2lvbnMoY3R4LCBzcGFya1Nlc3Npb25zKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFNldENvbmZsaWN0RGV0ZWN0ZWQpXG4gIHB1YmxpYyBzZXRDb25mbGljdERldGVjdGVkKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXRDb25mbGljdERldGVjdGVkKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgY29uZmxpY3REZXRlY3RlZDogYWN0aW9uLmVycm9yLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckNvbmZsaWN0RGV0ZWN0ZWQpXG4gIHB1YmxpYyBjbGVhckNvbmZsaWN0RGV0ZWN0ZWQoY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCBfOiBDbGVhckNvbmZsaWN0RGV0ZWN0ZWQpIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBjb25mbGljdERldGVjdGVkOiBudWxsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNwYXJrU2Vzc2lvbnMgPSAoKTogU3RyaW5nTWFwPFNwYXJrU2Vzc2lvbj4gPT4gSlNPTi5wYXJzZSh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShTRVNTSU9OKSk/LnNwYXJrU2Vzc2lvbnMgPz8ge307XG4gIHByaXZhdGUgc2V0U3BhcmtTZXNzaW9ucyA9IChjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIHNwYXJrU2Vzc2lvbnM6IFN0cmluZ01hcDxTcGFya1Nlc3Npb24+KTogdm9pZCA9PiB7XG4gICAgY29uc3QgYXBwbGljYXRpb24gPSBjdHguZ2V0U3RhdGUoKS5hcHBsaWNhdGlvbjtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShTRVNTSU9OLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBhcHBsaWNhdGlvbixcbiAgICAgIHNwYXJrU2Vzc2lvbnM6IHNwYXJrU2Vzc2lvbnNcbiAgICB9KSk7XG4gICAgY3R4LnBhdGNoU3RhdGUoeyBzcGFya1Nlc3Npb25zIH0pO1xuICB9O1xufVxuIl19
|
|
442
|
+
}], ctorParameters: () => [{ type: i1.SessionStorageService }, { type: i2.LocalStorageService }, { type: i3.AppConfigService }, { type: i4.AuthService }, { type: i5.ConfigurationCloudServiceProxy }, { type: i5.BackofficeCloudServiceProxy }, { type: i6.Router }, { type: i7.HttpCancelService }, { type: i8.TranslateService }, { type: i9.MsalService }, { type: i5.UsersCloudServiceProxy }, { type: i10.OpenIdAuthService }, { type: i11.MessageBarService }], propDecorators: { onLogin: [], onSetTenantUserAction: [], onUpdateAuthTokenAction: [], setSessionState: [], SetUserNameAction: [], AuditLogoutAction: [], onLogout: [], onTenantLoadAction: [], onTenantClearAction: [], onHealthActionAction: [], onUpdateUserSettings: [], onUpdateTenantInfoProps: [], onAuthenticate2FAforUser: [], onLoadSessionFromLocalStorageAction: [], onBackofficeAppConfigurationAction: [], onAppConfigurationAction: [], setConflictDetected: [], clearConflictDetected: [] } });
|
|
443
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvbW9kdWxlcy9hdXRoL3Nlc3Npb24uc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUl4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFnQixNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUU1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEQsT0FBTyxFQUMwRSxvQkFBb0IsRUFDbkcsZ0JBQWdCLEVBQ2pCLE1BQU0sMkNBQTJDLENBQUM7QUFNbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFLdEUsT0FBTyxFQUNMLGlCQUFpQixFQUFFLHNCQUFz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QyxNQWlCbkMsa0NBQWtDLE1BWWxDLHdCQUF3QixNQVl4QixtQkFBbUIsTUFPbkIscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcbmltcG9ydCB7IENsZWFyQ2FjaGVSZXF1ZXN0IH0gZnJvbSAnQGF6dXJlL21zYWwtYnJvd3Nlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0ZSB9IGZyb20gJ0BuZ3hzL3JvdXRlci1wbHVnaW4nO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZpcnN0LCBvZiwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXItcG9zaXRpb24uZW51bSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBMT0NBTF9FTkdMSVNIX0xBTkdVQUdFIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xuaW1wb3J0IHsgRU5WSVJPTk1FTlQsIExPR0dFRF9URU5BTlRfS0VZLCBTRVNTSU9OLCBURU5BTlRfS0VZIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2tleXMtY29uc3RhbnRzJztcbmltcG9ydCB7IEFwcFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9hcHAtdHlwZS5lbnVtJztcbmltcG9ydCB7IFNwYXJrU2Vzc2lvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc3Bhcmstc2Vzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgQmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LCBDb25maWd1cmF0aW9uQ2xvdWRTZXJ2aWNlUHJveHksIFNldHRpbmdzQ2F0ZWdvcnksIFNpbmdsZVNpZ25PblByb3ZpZGVyLFxuICBTcGFya1NldHRpbmdzRHRvLCBVc2Vyc0Nsb3VkU2VydmljZVByb3h5XG59IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cENhbmNlbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwLWNhbmNlbC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3BlbklkQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcGVuaWQtYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBhcnNlQXBpRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpLWhlbHBlci51dGlsJztcbmltcG9ydCB7IFN0cmluZ01hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBnZXROYXZpZ2F0aW9uUm91dGUgfSBmcm9tICcuLi8uLi91dGlscy9yb3V0ZS51dGlsJztcbmltcG9ydCB7IFVubG9hZFBhcmtpbmdMb3RBY3Rpb24gfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckluZm8gfSBmcm9tICcuL21vZGVsJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5mbyB9IGZyb20gJy4vbW9kZWwvYXBwbGljYXRpb24taW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGVuYW50SW5mbyB9IGZyb20gJy4vbW9kZWwvdGVuYW50LWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEF1ZGl0TG9nb3V0QWN0aW9uLCBBdXRoZW50aWNhdGUyRkFmb3JVc2VyLCBDbGVhckNvbmZsaWN0RGV0ZWN0ZWQsIEhlYWx0aEFjdGlvbixcbiAgSW5pdFNlc3Npb25Gcm9tTG9jYWxTdG9yYWdlQWN0aW9uLCBMb2FkQXBwQ29uZmlndXJhdGlvbkFjdGlvbiwgTG9hZEJhY2tvZmZpY2VBcHBDb25maWd1cmF0aW9uQWN0aW9uLFxuICBMb2dpblJlcXVlc3RBY3Rpb24sIExvZ291dEFjdGlvbiwgTG9nb3V0TW9iaWxlQWN0aW9uLCBTZXRDb25mbGljdERldGVjdGVkLCBTZXRTdGF0ZUFjdGlvbiwgU2V0VGVuYW50VXNlckFjdGlvbiwgU2V0VXNlck5hbWVBY3Rpb24sXG4gIFRlbmFudENsZWFyQWN0aW9uLCBUZW5hbnRMb2FkQWN0aW9uLCBVcGRhdGVBdXRoVG9rZW5BY3Rpb24sIFVwZGF0ZVRlbmFudEluZm9Qcm9wcywgVXBkYXRlVXNlclNldHRpbmdzSW5TZXNzaW9uQWN0aW9uXG59IGZyb20gJy4vc2Vzc2lvbi5hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uU3RhdGVNb2RlbCB7XG4gIHNwYXJrU2Vzc2lvbnM6IFN0cmluZ01hcDxTcGFya1Nlc3Npb24+O1xuICBhcHBsaWNhdGlvbj86IEFwcGxpY2F0aW9uSW5mbztcbiAgc2VydmVyRW52aXJvbm1lbnRNb2RlPzogc3RyaW5nO1xuICBjb25mbGljdERldGVjdGVkPzogSHR0cEVycm9yUmVzcG9uc2U7XG59XG5cbmNvbnN0IGRlZmF1bHRTZXNzaW9uU3RhdGUgPSB7XG4gIHNwYXJrU2Vzc2lvbnM6IHt9LFxuICBhcHBsaWNhdGlvbjogeyB2ZXJzaW9uOiBudWxsLCByZWxlYXNlRGF0ZTogbnVsbCwgZmVhdHVyZXM6IHt9IH0sXG4gIGNvbmZsaWN0RGV0ZWN0ZWQ6IG51bGwsXG59O1xuXG5AU3RhdGU8U2Vzc2lvblN0YXRlTW9kZWw+KHtcbiAgbmFtZTogJ3Nlc3Npb24nLFxuICBkZWZhdWx0czogZGVmYXVsdFNlc3Npb25TdGF0ZSxcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2Vzc2lvblN0YXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uQ2xvdWRTZXJ2aWNlUHJveHk6IENvbmZpZ3VyYXRpb25DbG91ZFNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eTogQmFja29mZmljZUNsb3VkU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBodHRwQ2FuY2VsU2VydmljZTogSHR0cENhbmNlbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbXNhbFNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlcnNDbG91ZFNlcnZpY2VQcm94eTogVXNlcnNDbG91ZFNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIG9wZW5JZEF1dGhTZXJ2aWNlOiBPcGVuSWRBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VCYXJTZXJ2aWNlOiBNZXNzYWdlQmFyU2VydmljZSkge1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBpc0NvbmZsaWN0RGV0ZWN0ZWQoc3RhdGU6IFNlc3Npb25TdGF0ZU1vZGVsKSB7XG4gICAgcmV0dXJuIHN0YXRlLmNvbmZsaWN0RGV0ZWN0ZWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGlzVXNlckF1dGhlbnRpY2F0ZWRXaXRoU1NPKHN0YXRlOiBTZXNzaW9uU3RhdGVNb2RlbCkge1xuICAgIGNvbnN0IHRlbmFudE5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFRFTkFOVF9LRVkpO1xuICAgIHJldHVybiBzdGF0ZS5zcGFya1Nlc3Npb25zW3RlbmFudE5hbWVdPy51c2VyPy5zc29BdXRoZW50aWNhdGVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBpc1VzZXJBdXRoZW50aWNhdGVkV2l0aDJGQShzdGF0ZTogU2Vzc2lvblN0YXRlTW9kZWwpIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShURU5BTlRfS0VZKTtcbiAgICByZXR1cm4gc3RhdGUuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXT8udXNlci5hdXRoZW50aWNhdGVkMkZBO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZXJ2ZXJFbnZpcm9ubWVudE1vZGUoc3RhdGU6IFNlc3Npb25TdGF0ZU1vZGVsKSB7XG4gICAgcmV0dXJuIHN0YXRlLnNlcnZlckVudmlyb25tZW50TW9kZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdXNlckluZm8oc3RhdGU6IFNlc3Npb25TdGF0ZU1vZGVsKTogVXNlckluZm8ge1xuICAgIGNvbnN0IHRlbmFudE5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFRFTkFOVF9LRVkpO1xuICAgIHJldHVybiBzdGF0ZS5zcGFya1Nlc3Npb25zW3RlbmFudE5hbWVdPy51c2VyO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBsb2dnZWRVc2VySW5mbyhzdGF0ZTogU2Vzc2lvblN0YXRlTW9kZWwpOiBVc2VySW5mbyB7XG4gICAgY29uc3QgdGVuYW50TmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oTE9HR0VEX1RFTkFOVF9LRVkpO1xuICAgIHJldHVybiBzdGF0ZS5zcGFya1Nlc3Npb25zW3RlbmFudE5hbWVdPy51c2VyO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyB0ZW5hbnRJbmZvKHN0YXRlOiBTZXNzaW9uU3RhdGVNb2RlbCkge1xuICAgIGNvbnN0IHRlbmFudE5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFRFTkFOVF9LRVkpO1xuICAgIHJldHVybiBzdGF0ZS5zcGFya1Nlc3Npb25zW3RlbmFudE5hbWVdPy50ZW5hbnQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHRoaXJkUGFydHlUb2tlbihzdGF0ZTogU2Vzc2lvblN0YXRlTW9kZWwpIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShURU5BTlRfS0VZKTtcbiAgICByZXR1cm4gc3RhdGUuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXT8udGhpcmRQYXJ0eVRva2VuO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBsb2dnZWRUZW5hbnRJbmZvKHN0YXRlOiBTZXNzaW9uU3RhdGVNb2RlbCkge1xuICAgIGNvbnN0IHRlbmFudE5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKExPR0dFRF9URU5BTlRfS0VZKTtcbiAgICByZXR1cm4gc3RhdGUuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXT8udGVuYW50O1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyB1c2VyU2V0dGluZ3Moc3RhdGU6IFNlc3Npb25TdGF0ZU1vZGVsKTogU3BhcmtTZXR0aW5nc0R0b1tdIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShURU5BTlRfS0VZKTtcbiAgICByZXR1cm4gc3RhdGUuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXT8udXNlci5zZXR0aW5ncyBhcyBTcGFya1NldHRpbmdzRHRvW107XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIG1hcHBlZFVzZXJTZXR0aW5ncyhzdGF0ZTogU2Vzc2lvblN0YXRlTW9kZWwpIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShURU5BTlRfS0VZKTtcbiAgICByZXR1cm4gc3RhdGUuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXT8udXNlci5zZXR0aW5ncy5yZWR1Y2UoKHNldHRpbmdzTWFwLCB1c2VyU2V0dGluZykgPT5cbiAgICAgIHNldHRpbmdzTWFwLnNldChcbiAgICAgICAgdXNlclNldHRpbmcuY2F0ZWdvcnksXG4gICAgICAgIHR5cGVvZiB1c2VyU2V0dGluZy5zZXR0aW5nc0pzb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyBKU09OLnBhcnNlKHVzZXJTZXR0aW5nLnNldHRpbmdzSnNvbilcbiAgICAgICAgICA6IHVzZXJTZXR0aW5nLnNldHRpbmdzSnNvblxuICAgICAgKSwgbmV3IE1hcDxTZXR0aW5nc0NhdGVnb3J5LCBhbnk+KCkpO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBhcHBDb25maWd1cmF0aW9uKHN0YXRlOiBTZXNzaW9uU3RhdGVNb2RlbCkge1xuICAgIGNvbnN0IHRlbmFudE5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKExPR0dFRF9URU5BTlRfS0VZKTtcbiAgICByZXR1cm4gc3RhdGUuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXT8uYXBwQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMga2VlcE1lTG9nZ2VkSW4oc3RhdGU6IFNlc3Npb25TdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGVuYW50TmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oVEVOQU5UX0tFWSk7XG4gICAgcmV0dXJuIHN0YXRlLnNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0/LnVzZXIua2VlcE1lTG9nZ2VkSW4gPz8gZmFsc2U7XG4gIH1cblxuICBAQWN0aW9uKExvZ2luUmVxdWVzdEFjdGlvbilcbiAgcHVibGljIG9uTG9naW4oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCBhY3Rpb246IExvZ2luUmVxdWVzdEFjdGlvbikge1xuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2luKGFjdGlvbikucGlwZSh0YXAoe1xuICAgICAgbmV4dDogc3BhcmtTZXNzaW9uID0+IHtcbiAgICAgICAgdGhpcy5TZXRUZW5hbnRVc2VyQWN0aW9uKGN0eCwgc3BhcmtTZXNzaW9uKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBwYXJzZUFwaUVycm9yTWVzc2FnZShlKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtZXNzYWdlKSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLlN0YXRpYyB9KTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFNldFRlbmFudFVzZXJBY3Rpb24pXG4gIHB1YmxpYyBvblNldFRlbmFudFVzZXJBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCB7IHNwYXJrU2Vzc2lvbiB9OiBTZXRUZW5hbnRVc2VyQWN0aW9uKSB7XG4gICAgdGhpcy5TZXRUZW5hbnRVc2VyQWN0aW9uKGN0eCwgc3BhcmtTZXNzaW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgU2V0VGVuYW50VXNlckFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIHNwYXJrU2Vzc2lvbjogU3BhcmtTZXNzaW9uKSB7XG4gICAgY29uc3Qgc3BhcmtTZXNzaW9ucyA9IHRoaXMuZ2V0U3BhcmtTZXNzaW9ucygpO1xuICAgIGNvbnN0IHsgdXNlciwgYXV0aFRva2VuLCByZWZyZXNoLCB0aGlyZFBhcnR5VG9rZW4gfSA9IHNwYXJrU2Vzc2lvbjtcbiAgICB1c2VyLnNldHRpbmdzID0gdXNlci5zZXR0aW5ncy5tYXAocyA9PiB7XG4gICAgICByZXR1cm4gbmV3IFNwYXJrU2V0dGluZ3NEdG8oe1xuICAgICAgICBjYXRlZ29yeTogcy5jYXRlZ29yeSxcbiAgICAgICAgc2V0dGluZ3NKc29uOiBKU09OLnBhcnNlKHMuc2V0dGluZ3NKc29uKVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoIXNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XSkge1xuICAgICAgc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdID0geyB1c2VyLCBhdXRoVG9rZW4sIHJlZnJlc2gsIHRlbmFudDogbnVsbCwgdGhpcmRQYXJ0eVRva2VuIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XS51c2VyID0gdXNlcjtcbiAgICAgIHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XS5hdXRoVG9rZW4gPSBhdXRoVG9rZW47XG4gICAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0ucmVmcmVzaCA9IHJlZnJlc2g7XG4gICAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0udGhpcmRQYXJ0eVRva2VuID0gdGhpcmRQYXJ0eVRva2VuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3BhcmtTZXNzaW9ucyhjdHgsIHNwYXJrU2Vzc2lvbnMpO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVBdXRoVG9rZW5BY3Rpb24pXG4gIHB1YmxpYyBvblVwZGF0ZUF1dGhUb2tlbkFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIGFjdGlvbjogVXBkYXRlQXV0aFRva2VuQWN0aW9uKSB7XG4gICAgY29uc3Qgc3BhcmtTZXNzaW9ucyA9IHRoaXMuZ2V0U3BhcmtTZXNzaW9ucygpO1xuICAgIHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XS5hdXRoVG9rZW4gPSBhY3Rpb24uYXV0aFRva2VuO1xuICAgIHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XS5yZWZyZXNoLnJlZnJlc2hUb2tlbiA9IGFjdGlvbi5yZWZyZXNoVG9rZW47XG4gICAgdGhpcy5zZXRTcGFya1Nlc3Npb25zKGN0eCwgc3BhcmtTZXNzaW9ucyk7XG4gIH1cblxuICBAQWN0aW9uKFNldFN0YXRlQWN0aW9uKVxuICBwdWJsaWMgc2V0U2Vzc2lvblN0YXRlKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXRTdGF0ZUFjdGlvbikge1xuICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0uYXV0aFRva2VuID0gYWN0aW9uLmF1dGhUb2tlbjtcbiAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0ucmVmcmVzaCA9IGFjdGlvbi5yZWZyZXNoO1xuXG4gICAgY29uc3QgYXBwbGljYXRpb246IEFwcGxpY2F0aW9uSW5mbyA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5wYWNrYWdlSW5mby52ZXJzaW9uLFxuICAgICAgcmVsZWFzZURhdGU6IG51bGwsXG4gICAgICBmZWF0dXJlczoge30sXG4gICAgfTtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IGFwcGxpY2F0aW9uIH0pO1xuICAgIHRoaXMuc2V0U3BhcmtTZXNzaW9ucyhjdHgsIHNwYXJrU2Vzc2lvbnMpO1xuICB9XG5cbiAgQEFjdGlvbihTZXRVc2VyTmFtZUFjdGlvbilcbiAgcHVibGljIFNldFVzZXJOYW1lQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXRVc2VyTmFtZUFjdGlvbikge1xuICAgIGNvbnN0IHRlbmFudE5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFRFTkFOVF9LRVkpO1xuICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICBzcGFya1Nlc3Npb25zW3RlbmFudE5hbWVdLnVzZXIuZGlzcGxheU5hbWUgPSBhY3Rpb24udXNlck5hbWU7XG4gICAgdGhpcy5zZXRTcGFya1Nlc3Npb25zKGN0eCwgc3BhcmtTZXNzaW9ucyk7XG4gIH1cblxuICBAQWN0aW9uKEF1ZGl0TG9nb3V0QWN0aW9uKVxuICBwdWJsaWMgQXVkaXRMb2dvdXRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCBhY3Rpb246IEF1ZGl0TG9nb3V0QWN0aW9uKSB7XG4gICAgY29uc3Qgc3BhcmtTZXNzaW9ucyA9IHRoaXMuZ2V0U3BhcmtTZXNzaW9ucygpO1xuICAgIGNvbnN0IHRlbmFudE5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFRFTkFOVF9LRVkpO1xuICAgIGNvbnN0IHRlbmFudEluZm8gPSBjdHguZ2V0U3RhdGUoKS5zcGFya1Nlc3Npb25zW3RlbmFudE5hbWVdPy50ZW5hbnQ7XG4gICAgaWYgKHRoaXMuaXNUZW5hbnRVbmRlZmluZWQodGVuYW50SW5mbywgc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXSkpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTsgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRlbmFudCBvciBzcGFya1Nlc3Npb25zIGFyZSB1bmRlZmluZWRcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlcnNDbG91ZFNlcnZpY2VQcm94eS5hdWRpdExvZ291dCgpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4geyB9KSk7XG4gIH1cblxuICAvL1RPRE8gLCBlbmFibGUgYmFja29mZmljZSBsb2dvdXQgd2hlbiAsIEJFIEF1ZGl0IGZvciBiYWNrb2ZmaWNlIGlzIGltcGxlbWVudGVkXG4gIC8vIEBBY3Rpb24oQXVkaXRCYWNrb2ZmaWNlQWN0aW9uKVxuICAvLyBwdWJsaWMgb25BdWRpdEJhY2tvZmZpY2VBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCBhY3Rpb246IEF1ZGl0QmFja29mZmljZUFjdGlvbikge1xuICAvLyAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgLy8gICBjb25zdCB0ZW5hbnROYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShURU5BTlRfS0VZKTtcbiAgLy8gICBjb25zdCB0ZW5hbnRJbmZvID0gY3R4LmdldFN0YXRlKCkuc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXS50ZW5hbnQ7XG4gIC8vICAgaWYgKHRoaXMuaXNUZW5hbnRVbmRlZmluZWQodGVuYW50SW5mbywgc3BhcmtTZXNzaW9uc1t0ZW5hbnROYW1lXSkpIHtcbiAgLy8gICAgIHJldHVybiBvZihudWxsKTsgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRlbmFudCBvciBzcGFya1Nlc3Npb25zIGFyZSB1bmRlZmluZWRcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHRoaXMuYmFja29mZmljZVNlcnZpY2VQcm94eS5iYWNrb2ZmaWNlQXVkaXRMb2dvdXQoKS5waXBlKFxuICAvLyAgICAgdGFwKCgpID0+IHsgfSkpO1xuICAvLyB9XG5cbiAgQEFjdGlvbihMb2dvdXRBY3Rpb24pXG4gIHB1YmxpYyBvbkxvZ291dChjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIHsgbG9nb3V0QXVkaXQsIGxvZ291dEJhY2tvZmZpY2VBdWRpdCB9OiBMb2dvdXRBY3Rpb24pIHtcbiAgICBjb25zdCBhcHBUeXBlID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmFwcFR5cGU7XG4gICAgdGhpcy5odHRwQ2FuY2VsU2VydmljZS5jYW5jZWxQZW5kaW5nUmVxdWVzdHMoKTtcblxuICAgIGlmIChhcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZSkge1xuICAgICAgY3R4LmRpc3BhdGNoKG5ldyBMb2dvdXRNb2JpbGVBY3Rpb24oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBhdGggPSBnZXROYXZpZ2F0aW9uUm91dGUoU2Vzc2lvblN0YXRlLnRlbmFudEluZm8oY3R4LmdldFN0YXRlKCkpLCBhcHBUeXBlLCBbJ2FjY291bnQnLCAnbG9naW4nXSk7XG4gICAgICBjdHguZGlzcGF0Y2gobmV3IE5hdmlnYXRlKHBhdGgpKTtcbiAgICB9XG5cbiAgICBpZiAobG9nb3V0QXVkaXQpIHtcbiAgICAgIGN0eC5kaXNwYXRjaChuZXcgQXVkaXRMb2dvdXRBY3Rpb24oKSk7XG4gICAgfVxuXG4gICAgLy9UT0RPICwgZW5hYmxlIGJhY2tvZmZpY2UgbG9nb3V0IHdoZW4gLCBCRSBBdWRpdCBmb3IgYmFja29mZmljZSBpcyBpbXBsZW1lbnRlZFxuICAgIC8vIGlmIChsb2dvdXRCYWNrb2ZmaWNlQXVkaXQpIHtcbiAgICAvLyAgIGN0eC5kaXNwYXRjaChuZXcgQXVkaXRCYWNrb2ZmaWNlQWN0aW9uKCkpO1xuICAgIC8vIH1cblxuICAgIHJldHVybiB0aGlzLnJvdXRlci5ldmVudHMucGlwZSggLy8gb2JzZXJ2ZSBhbGwgcm91dGUgZXZlbnRzXG4gICAgICBmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiBlLnVybC5pbmNsdWRlcygnL2FjY291bnQvbG9naW4nKSksIC8vIGZpbHRlciBvbmx5IE5hdmlnYXRpb25FbmQgZXZlbnRzXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgZmlyc3QoKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCgpLnBpcGUoXG4gICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICAgICAgICAgIGNvbnN0IHRlbmFudCA9IHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XTtcbiAgICAgICAgICAgIGNvbnN0IHNzb0VuYWJsZWQgPSB0ZW5hbnQ/LnVzZXI/LnNzb0F1dGhlbnRpY2F0ZWQ7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKExPQ0FMX0VOR0xJU0hfTEFOR1VBR0UpO1xuICAgICAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBUZW5hbnRDbGVhckFjdGlvbigpKTtcbiAgICAgICAgICAgIGN0eC5kaXNwYXRjaChuZXcgVW5sb2FkUGFya2luZ0xvdEFjdGlvbigpKTtcbiAgICAgICAgICAgIGlmIChzc29FbmFibGVkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRlbmFudE5hbWUgPSB0ZW5hbnQ/LnRlbmFudD8udGVuYW50TmFtZTtcbiAgICAgICAgICAgICAgY29uc3QgcHJvdmlkZXIgPSB0ZW5hbnQ/LnRlbmFudC5wcm9wcz8uc3NvPy5wcm92aWRlcjtcbiAgICAgICAgICAgICAgaWYgKHByb3ZpZGVyID09IFNpbmdsZVNpZ25PblByb3ZpZGVyLk1pY3Jvc29mdCkge1xuICAgICAgICAgICAgICAgIGlmICghY3R4LmdldFN0YXRlKCkuY29uZmxpY3REZXRlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5tc2FsU2VydmljZS5sb2dvdXRSZWRpcmVjdCh7XG4gICAgICAgICAgICAgICAgICAgIHBvc3RMb2dvdXRSZWRpcmVjdFVyaTogbG9nb3V0QmFja29mZmljZUF1ZGl0ID8gJy8nIDogYC8ke3RlbmFudE5hbWV9YFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2UgaWYgKHByb3ZpZGVyID09IFNpbmdsZVNpZ25PblByb3ZpZGVyLlBpbmdGZWRlcmF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbklkQXV0aFNlcnZpY2Uuc2lnbk91dCgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vdGhpcy5zaWxlbnRMb2dPdXRNc2woY3R4LCBhcHBUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSk7XG4gICAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGlzVGVuYW50VW5kZWZpbmVkID0gKHRlbmFudDogVGVuYW50SW5mbywgc2Vzc2lvbjogU3BhcmtTZXNzaW9uKSA9PiAhdGVuYW50IHx8ICFzZXNzaW9uO1xuXG4gIHNpbGVudExvZ091dE1zbChjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIGFwcFR5cGU6IEFwcFR5cGUpIHtcbiAgICBjb25zdCBjbGVhckNhY2hlUmVxdWVzdDogQ2xlYXJDYWNoZVJlcXVlc3QgPSB7XG4gICAgICBhY2NvdW50OiB0aGlzLm1zYWxTZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKClbMF0sXG4gICAgfTtcblxuICAgIHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UuY2xlYXJDYWNoZShjbGVhckNhY2hlUmVxdWVzdCk7XG4gICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcblxuICAgIGNvbnN0IHBhdGggPSBnZXROYXZpZ2F0aW9uUm91dGUoU2Vzc2lvblN0YXRlLnRlbmFudEluZm8oY3R4LmdldFN0YXRlKCkpLCBhcHBUeXBlLCBbJ2FjY291bnQnLCAnbG9naW4nXSk7XG4gICAgY3R4LmRpc3BhdGNoKG5ldyBOYXZpZ2F0ZShwYXRoKSk7XG4gIH1cblxuICBAQWN0aW9uKFRlbmFudExvYWRBY3Rpb24pXG4gIHB1YmxpYyBvblRlbmFudExvYWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCBhY3Rpb246IFRlbmFudExvYWRBY3Rpb24pIHtcbiAgICBjb25zdCB0ZW5hbnROYW1lID0gYWN0aW9uLnRlbmFudD8udGVuYW50TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICBpZiAoIXNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0pIHtcbiAgICAgIHNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0gPSB7IHVzZXI6IG51bGwsIGF1dGhUb2tlbjogbnVsbCwgcmVmcmVzaDogbnVsbCwgdGVuYW50OiBhY3Rpb24udGVuYW50IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNwYXJrU2Vzc2lvbnNbdGVuYW50TmFtZV0udGVuYW50ID0gYWN0aW9uLnRlbmFudDtcbiAgICB9XG5cbiAgICB0aGlzLnNldFNwYXJrU2Vzc2lvbnMoY3R4LCBzcGFya1Nlc3Npb25zKTtcbiAgfVxuXG4gIEBBY3Rpb24oVGVuYW50Q2xlYXJBY3Rpb24pXG4gIHB1YmxpYyBvblRlbmFudENsZWFyQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgXzogVGVuYW50Q2xlYXJBY3Rpb24pIHtcbiAgICBjb25zdCBzcGFya1Nlc3Npb25zID0gdGhpcy5nZXRTcGFya1Nlc3Npb25zKCk7XG4gICAgY29uc3Qgc3BhcmtTZXNzaW9uID0gc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdO1xuICAgIGlmIChzcGFya1Nlc3Npb24pIHtcbiAgICAgIHNwYXJrU2Vzc2lvbi51c2VyID0gbnVsbDtcbiAgICAgIHNwYXJrU2Vzc2lvbi5yZWZyZXNoID0gbnVsbDtcbiAgICAgIHNwYXJrU2Vzc2lvbi5hdXRoVG9rZW4gPSBudWxsO1xuICAgICAgaWYgKHNwYXJrU2Vzc2lvbi5hcHBDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIHNwYXJrU2Vzc2lvbi5hcHBDb25maWd1cmF0aW9uLmFuYWx5dGljc1Rva2VuID0gJyc7XG4gICAgICAgIHNwYXJrU2Vzc2lvbi5hcHBDb25maWd1cmF0aW9uLmZlZWRiYWNrVG9rZW4gPSAnJztcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3BhcmtTZXNzaW9ucyhjdHgsIHNwYXJrU2Vzc2lvbnMpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oSGVhbHRoQWN0aW9uKVxuICBwdWJsaWMgb25IZWFsdGhBY3Rpb25BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+KSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbkNsb3VkU2VydmljZVByb3h5LmdldEVudigpLnBpcGUodGFwKGVudlJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oRU5WSVJPTk1FTlQsIEpTT04uc3RyaW5naWZ5KGVudlJlc3BvbnNlLmRhdGEuZW52aXJvbm1lbnQpKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VydmVyRW52aXJvbm1lbnRNb2RlOiBlbnZSZXNwb25zZS5kYXRhLmVudmlyb25tZW50IH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oVXBkYXRlVXNlclNldHRpbmdzSW5TZXNzaW9uQWN0aW9uKVxuICBwdWJsaWMgb25VcGRhdGVVc2VyU2V0dGluZ3MoY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCB7IHVzZXJTZXR0aW5ncyB9KSB7XG4gICAgY29uc3Qgc3BhcmtTZXNzaW9ucyA9IHRoaXMuZ2V0U3BhcmtTZXNzaW9ucygpO1xuICAgIHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XS51c2VyLnNldHRpbmdzID0gdXNlclNldHRpbmdzO1xuICAgIHRoaXMuc2V0U3BhcmtTZXNzaW9ucyhjdHgsIHNwYXJrU2Vzc2lvbnMpO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVUZW5hbnRJbmZvUHJvcHMpXG4gIHB1YmxpYyBvblVwZGF0ZVRlbmFudEluZm9Qcm9wcyhjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIHsgcHJvcHMgfSkge1xuICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0udGVuYW50LnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5zZXRTcGFya1Nlc3Npb25zKGN0eCwgc3BhcmtTZXNzaW9ucyk7XG4gIH1cblxuICBAQWN0aW9uKEF1dGhlbnRpY2F0ZTJGQWZvclVzZXIpXG4gIHB1YmxpYyBvbkF1dGhlbnRpY2F0ZTJGQWZvclVzZXIoY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCB7IH0pIHtcbiAgICBjb25zdCBzcGFya1Nlc3Npb25zID0gdGhpcy5nZXRTcGFya1Nlc3Npb25zKCk7XG4gICAgaWYgKHNwYXJrU2Vzc2lvbnNbdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UudGVuYW50XT8udXNlcikge1xuICAgICAgc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdLnVzZXIuYXV0aGVudGljYXRlZDJGQSA9IHRydWU7XG4gICAgICB0aGlzLnNldFNwYXJrU2Vzc2lvbnMoY3R4LCBzcGFya1Nlc3Npb25zKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKEluaXRTZXNzaW9uRnJvbUxvY2FsU3RvcmFnZUFjdGlvbilcbiAgcHVibGljIG9uTG9hZFNlc3Npb25Gcm9tTG9jYWxTdG9yYWdlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgXzogSW5pdFNlc3Npb25Gcm9tTG9jYWxTdG9yYWdlQWN0aW9uKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5nZXRJdGVtKFNFU1NJT04pO1xuICAgIGNvbnN0IHNlc3Npb246IHtcbiAgICAgIGFwcGxpY2F0aW9uOiBBcHBsaWNhdGlvbkluZm8sXG4gICAgICBzcGFya1Nlc3Npb25zOiBTdHJpbmdNYXA8U3BhcmtTZXNzaW9uPixcbiAgICB9ID0gZGF0YSA/IEpTT04ucGFyc2UoZGF0YSkgOiBkZWZhdWx0U2Vzc2lvblN0YXRlO1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGFwcGxpY2F0aW9uOiBzZXNzaW9uLmFwcGxpY2F0aW9uLFxuICAgICAgc3BhcmtTZXNzaW9uczogc2Vzc2lvbi5zcGFya1Nlc3Npb25zXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudCkge1xuICAgICAgY29uc3Qgc3BhcmtTZXNzaW9uID0gc2Vzc2lvbi5zcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF07XG4gICAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5zZXRBdXRoU2Vzc2lvbihzcGFya1Nlc3Npb24/LmF1dGhUb2tlbiwgc3BhcmtTZXNzaW9uPy5yZWZyZXNoKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlQXBwQ29uZmlndXJhdGlvbkFjdGlvbilcbiAgcHVibGljIG9uQmFja29mZmljZUFwcENvbmZpZ3VyYXRpb25BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+KSB7XG4gICAgY29uc3QgYXBwQ29uZmlndXJhdGlvbiQgPSB0aGlzLmJhY2tvZmZpY2VDbG91ZFNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlQXBwQ29uZmlndXJhdGlvbigpO1xuICAgIHJldHVybiBhcHBDb25maWd1cmF0aW9uJC5waXBlKHRhcChhcHBDb25maWd1cmF0aW9uID0+IHtcbiAgICAgIGNvbnN0IHNwYXJrU2Vzc2lvbnMgPSB0aGlzLmdldFNwYXJrU2Vzc2lvbnMoKTtcbiAgICAgIGlmICh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnQpIHtcbiAgICAgICAgc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdLmFwcENvbmZpZ3VyYXRpb24gPSBhcHBDb25maWd1cmF0aW9uLmRhdGE7XG4gICAgICAgIHRoaXMuc2V0U3BhcmtTZXNzaW9ucyhjdHgsIHNwYXJrU2Vzc2lvbnMpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEFwcENvbmZpZ3VyYXRpb25BY3Rpb24pXG4gIHB1YmxpYyBvbkFwcENvbmZpZ3VyYXRpb25BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+KSB7XG4gICAgY29uc3QgYXBwQ29uZmlndXJhdGlvbiQgPSB0aGlzLmNvbmZpZ3VyYXRpb25DbG91ZFNlcnZpY2VQcm94eS5nZXRBcHBDb25maWd1cmF0aW9uKCk7XG4gICAgcmV0dXJuIGFwcENvbmZpZ3VyYXRpb24kLnBpcGUodGFwKGFwcENvbmZpZ3VyYXRpb24gPT4ge1xuICAgICAgY29uc3Qgc3BhcmtTZXNzaW9ucyA9IHRoaXMuZ2V0U3BhcmtTZXNzaW9ucygpO1xuICAgICAgaWYgKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudCkge1xuICAgICAgICBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF0uYXBwQ29uZmlndXJhdGlvbiA9IGFwcENvbmZpZ3VyYXRpb24uZGF0YTtcbiAgICAgICAgdGhpcy5zZXRTcGFya1Nlc3Npb25zKGN0eCwgc3BhcmtTZXNzaW9ucyk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihTZXRDb25mbGljdERldGVjdGVkKVxuICBwdWJsaWMgc2V0Q29uZmxpY3REZXRlY3RlZChjdHg6IFN0YXRlQ29udGV4dDxTZXNzaW9uU3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0Q29uZmxpY3REZXRlY3RlZCkge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGNvbmZsaWN0RGV0ZWN0ZWQ6IGFjdGlvbi5lcnJvcixcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJDb25mbGljdERldGVjdGVkKVxuICBwdWJsaWMgY2xlYXJDb25mbGljdERldGVjdGVkKGN0eDogU3RhdGVDb250ZXh0PFNlc3Npb25TdGF0ZU1vZGVsPiwgXzogQ2xlYXJDb25mbGljdERldGVjdGVkKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgY29uZmxpY3REZXRlY3RlZDogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTcGFya1Nlc3Npb25zID0gKCk6IFN0cmluZ01hcDxTcGFya1Nlc3Npb24+ID0+IEpTT04ucGFyc2UodGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oU0VTU0lPTikpPy5zcGFya1Nlc3Npb25zID8/IHt9O1xuICBwcml2YXRlIHNldFNwYXJrU2Vzc2lvbnMgPSAoY3R4OiBTdGF0ZUNvbnRleHQ8U2Vzc2lvblN0YXRlTW9kZWw+LCBzcGFya1Nlc3Npb25zOiBTdHJpbmdNYXA8U3BhcmtTZXNzaW9uPik6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uID0gY3R4LmdldFN0YXRlKCkuYXBwbGljYXRpb247XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oU0VTU0lPTiwgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgYXBwbGljYXRpb24sXG4gICAgICBzcGFya1Nlc3Npb25zOiBzcGFya1Nlc3Npb25zXG4gICAgfSkpO1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc3BhcmtTZXNzaW9ucyB9KTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -47,14 +47,6 @@ export class AuthenticateMultipleTenantsAction {
|
|
|
47
47
|
this.password = password;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
export class MobileAuthenticateMultipleTenantsAction {
|
|
51
|
-
static { this.type = '[login] MobileAuthenticateMultipleTenants'; }
|
|
52
|
-
constructor(username, password, tenantName = null) {
|
|
53
|
-
this.username = username;
|
|
54
|
-
this.password = password;
|
|
55
|
-
this.tenantName = tenantName;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
50
|
export class Verify2FactorAuthenticationAction {
|
|
59
51
|
static { this.type = '[login] Verify2FactorAuthenticationAction'; }
|
|
60
52
|
constructor(userName, code, setup2Fa = false) {
|
|
@@ -85,4 +77,4 @@ export class BackofficeAutheticateAction {
|
|
|
85
77
|
this.tenantInfo = tenantInfo;
|
|
86
78
|
}
|
|
87
79
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvbW9kdWxlcy9sb2dpbi9sb2dpbi5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBTyxvQkFBb0I7YUFDUixTQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFFdkQsWUFBbUIsS0FBYSxFQUFTLFFBQWdCO1FBQXRDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFRO0lBQ3pELENBQUM7O0FBR0gsTUFBTSxPQUFPLDhCQUE4QjthQUNsQixTQUFJLEdBQUcsa0NBQWtDLENBQUM7SUFFakUsWUFBbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7SUFDaEMsQ0FBQzs7QUFHSCxNQUFNLE9BQU8sNEJBQTRCO2FBQ2hCLFNBQUksR0FBRyw2QkFBNkIsQ0FBQztJQUU1RCxZQUFtQixRQUFrQixFQUFTLFVBQWtCLEVBQVMsYUFBbUM7UUFBekYsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFTLGVBQVUsR0FBVixVQUFVLENBQVE7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7SUFDNUcsQ0FBQzs7QUFHSCxNQUFNLE9BQU8sNkJBQTZCO2FBQ2pCLFNBQUksR0FBRyw4QkFBOEIsQ0FBQztJQUU3RCxZQUFtQixRQUFnQixFQUFTLFFBQWdCO1FBQXpDLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFRO0lBQzVELENBQUM7O0FBR0gsTUFBTSxPQUFPLHdCQUF3QjthQUNaLFNBQUksR0FBRyw0QkFBNEIsQ0FBQztJQUUzRCxZQUFtQixRQUFnQjtRQUFoQixhQUFRLEdBQVIsUUFBUSxDQUFRO0lBQ25DLENBQUM7O0FBR0gsTUFBTSxPQUFPLHVCQUF1QjthQUNYLFNBQUksR0FBRyx1QkFBdUIsQ0FBQztJQUV0RCxZQUFtQixLQUFhLEVBQVMsU0FBNkI7UUFBbkQsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBQ3BFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7O0FBR0gsTUFBTSxPQUFPLGlDQUFpQzthQUNyQixTQUFJLEdBQUcscUNBQXFDLENBQUM7SUFFcEUsWUFBbUIsUUFBZ0IsRUFBUyxRQUFnQjtRQUF6QyxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBUTtJQUM1RCxDQUFDOztBQUdILE1BQU0sT0FBTyxpQ0FBaUM7YUFDckIsU0FBSSxHQUFHLDJDQUEyQyxDQUFDO0lBRTFFLFlBQW1CLFFBQWdCLEVBQVMsSUFBWSxFQUFTLFdBQVcsS0FBSztRQUE5RCxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVE7SUFDakYsQ0FBQzs7QUFHSCxNQUFNLE9BQU8saUJBQWlCO2FBQ0wsU0FBSSxHQUFHLDJCQUEyQixDQUFDO0lBRTFELFlBQW1CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQzNDLENBQUM7O0FBR0gsTUFBTSxPQUFPLHVCQUF1QjthQUNYLFNBQUksR0FBRyxpQ0FBaUMsQ0FBQztJQUNoRSxZQUFtQixLQUFhLEVBQVMsb0JBQTBDLEVBQVMsVUFBc0IsRUFBUyxvQkFBNkIsS0FBSztRQUExSSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFTLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWlCO0lBQzdKLENBQUM7O0FBR0gsTUFBTSxPQUFPLDJCQUEyQjthQUNmLFNBQUksR0FBRyxxQ0FBcUMsQ0FBQztJQUNwRSxZQUFtQixLQUFhLEVBQVMsVUFBc0I7UUFBNUMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFTLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDL0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRmYVNldHVwRHRvIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzXCI7XG5pbXBvcnQgeyBQYXNzd29yZENoYW5nZVR5cGUsIFNpbmdsZVNpZ25PblByb3ZpZGVyIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UtcHJveHkvaWRlbnRpdHktc2VydmljZS1wcm94aWVzXCI7XG5pbXBvcnQgeyBUZW5hbnRJbmZvIH0gZnJvbSBcIi4uL2F1dGgvbW9kZWwvdGVuYW50LWluZm8uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBVc2VySW5mbyB9IGZyb20gXCIuLi9hdXRoL21vZGVsL3VzZXItaW5mby5pbnRlcmZhY2VcIjtcblxuZXhwb3J0IGNsYXNzIEZvcmdvdFBhc3N3b3JkQWN0aW9uIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tsb2dpbl0gRm9yZ290UGFzc3dvcmQnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbWFpbDogc3RyaW5nLCBwdWJsaWMgdGVuYW50SWQ6IG51bWJlcikge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb3Jnb3RQYXNzd29yZFRlbmFudGxlc3NBY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2xvZ2luXSBGb3Jnb3RQYXNzd29yZFRlbmFudGxlc3MnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbWFpbDogc3RyaW5nKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjY291bnRTZXRQYXNzd29yZEluaXRBY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2FjY291bnQtc2V0LXBhc3N3b3JkXSBJbml0JztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdXNlckluZm86IFVzZXJJbmZvLCBwdWJsaWMgdGVuYW50TmFtZTogc3RyaW5nLCBwdWJsaWMgY29tcG9uZW50VHlwZTogKFBhc3N3b3JkQ2hhbmdlVHlwZSkpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWNjb3VudFNldFBhc3N3b3JkRXJyb3JBY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2FjY291bnQtc2V0LXBhc3N3b3JkXSBFcnJvcic7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVycm9yTXNnOiBzdHJpbmcsIHB1YmxpYyB1c2VybmFtZTogc3RyaW5nKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjY291bnRTZXRQYXNzd29yZEFjdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbYWNjb3VudC1zZXQtcGFzc3dvcmRdIFNldCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdGVVc2VyVG9rZW5BY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW3ZhbGlkYXRlLXRva2VuXSBVc2VyJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdG9rZW46IHN0cmluZywgcHVibGljIHRva2VuVHlwZTogUGFzc3dvcmRDaGFuZ2VUeXBlKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnY29uICcsIHRva2VuVHlwZSwgdHlwZW9mIHRva2VuVHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0ZU11bHRpcGxlVGVuYW50c0FjdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbbG9naW5dIEF1dGhlbnRpY2F0ZU11bHRpcGxlVGVuYW50cyc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHVzZXJuYW1lOiBzdHJpbmcsIHB1YmxpYyBwYXNzd29yZDogc3RyaW5nKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZlcmlmeTJGYWN0b3JBdXRoZW50aWNhdGlvbkFjdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbbG9naW5dIFZlcmlmeTJGYWN0b3JBdXRoZW50aWNhdGlvbkFjdGlvbic7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHVzZXJOYW1lOiBzdHJpbmcsIHB1YmxpYyBjb2RlOiBzdHJpbmcsIHB1YmxpYyBzZXR1cDJGYSA9IGZhbHNlKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNldFRGQVNldHVwQWN0aW9uIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tsb2dpbl0gU2V0VEZBU2V0dXBBY3Rpb24nO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZmFTZXR1cER0bzogVGZhU2V0dXBEdG8pIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3BlbklkQXV0aGV0aWNhdGVBY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2xvZ2luXSBPcGVuSWRBdXRoZXRpY2F0ZUFjdGlvbic7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0b2tlbjogc3RyaW5nLCBwdWJsaWMgc2luZ2xlU2lnbk9uUHJvdmlkZXI6IFNpbmdsZVNpZ25PblByb3ZpZGVyLCBwdWJsaWMgdGVuYW50SW5mbzogVGVuYW50SW5mbywgcHVibGljIGlzUGVuZGluZ0FwcHJvdmFsOiBib29sZWFuID0gZmFsc2UpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmFja29mZmljZUF1dGhldGljYXRlQWN0aW9uIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tsb2dpbl0gQmFja29mZmljZUF1dGhldGljYXRlQWN0aW9uJztcbiAgY29uc3RydWN0b3IocHVibGljIHRva2VuOiBzdHJpbmcsIHB1YmxpYyB0ZW5hbnRJbmZvOiBUZW5hbnRJbmZvKSB7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -6,16 +6,16 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
import * as i1 from "@ngxs/store";
|
|
7
7
|
export class LoginModule {
|
|
8
8
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
9
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LoginModule, imports: [i1.ɵ
|
|
10
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginModule, providers: [LoginService], imports: [NgxsModule.
|
|
9
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LoginModule, imports: [i1.ɵNgxsFeatureModule] }); }
|
|
10
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginModule, providers: [LoginService], imports: [NgxsModule.forFeature([LoginState])] }); }
|
|
11
11
|
}
|
|
12
12
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginModule, decorators: [{
|
|
13
13
|
type: NgModule,
|
|
14
14
|
args: [{
|
|
15
15
|
providers: [LoginService],
|
|
16
16
|
imports: [
|
|
17
|
-
NgxsModule.
|
|
17
|
+
NgxsModule.forFeature([LoginState]),
|
|
18
18
|
],
|
|
19
19
|
}]
|
|
20
20
|
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL2xvZ2luL2xvZ2luLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVEzQyxNQUFNLE9BQU8sV0FBVzsrR0FBWCxXQUFXO2dIQUFYLFdBQVc7Z0hBQVgsV0FBVyxhQUxYLENBQUMsWUFBWSxDQUFDLFlBRXZCLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQzs7NEZBRzFCLFdBQVc7a0JBTnZCLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN6QixPQUFPLEVBQUU7d0JBQ1AsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3FCQUNwQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hzTW9kdWxlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2luU3RhdGUgfSBmcm9tICcuL2xvZ2luLnN0YXRlJztcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbTG9naW5TZXJ2aWNlXSxcbiAgaW1wb3J0czogW1xuICAgIE5neHNNb2R1bGUuZm9yRmVhdHVyZShbTG9naW5TdGF0ZV0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbk1vZHVsZSB7XG59XG4iXX0=
|