angular-auth-oidc-client
Version:
Angular Lib for OpenID Connect & OAuth2
48 lines • 17.1 kB
JavaScript
import { Injectable, inject } from '@angular/core';
import { concatMap } from 'rxjs/operators';
import { CodeFlowCallbackHandlerService } from './callback-handling/code-flow-callback-handler.service';
import { HistoryJwtKeysCallbackHandlerService } from './callback-handling/history-jwt-keys-callback-handler.service';
import { ImplicitFlowCallbackHandlerService } from './callback-handling/implicit-flow-callback-handler.service';
import { RefreshSessionCallbackHandlerService } from './callback-handling/refresh-session-callback-handler.service';
import { RefreshTokenCallbackHandlerService } from './callback-handling/refresh-token-callback-handler.service';
import { StateValidationCallbackHandlerService } from './callback-handling/state-validation-callback-handler.service';
import { UserCallbackHandlerService } from './callback-handling/user-callback-handler.service';
import * as i0 from "@angular/core";
export class FlowsService {
constructor() {
this.codeFlowCallbackHandlerService = inject(CodeFlowCallbackHandlerService);
this.implicitFlowCallbackHandlerService = inject(ImplicitFlowCallbackHandlerService);
this.historyJwtKeysCallbackHandlerService = inject(HistoryJwtKeysCallbackHandlerService);
this.userHandlerService = inject(UserCallbackHandlerService);
this.stateValidationCallbackHandlerService = inject(StateValidationCallbackHandlerService);
this.refreshSessionCallbackHandlerService = inject(RefreshSessionCallbackHandlerService);
this.refreshTokenCallbackHandlerService = inject(RefreshTokenCallbackHandlerService);
}
processCodeFlowCallback(urlToCheck, config, allConfigs) {
return this.codeFlowCallbackHandlerService
.codeFlowCallback(urlToCheck, config)
.pipe(concatMap((callbackContext) => this.codeFlowCallbackHandlerService.codeFlowCodeRequest(callbackContext, config)), concatMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext, config, allConfigs)), concatMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext, config, allConfigs)), concatMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext, config, allConfigs)));
}
processSilentRenewCodeFlowCallback(firstContext, config, allConfigs) {
return this.codeFlowCallbackHandlerService
.codeFlowCodeRequest(firstContext, config)
.pipe(concatMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext, config, allConfigs)), concatMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext, config, allConfigs)), concatMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext, config, allConfigs)));
}
processImplicitFlowCallback(config, allConfigs, hash) {
return this.implicitFlowCallbackHandlerService
.implicitFlowCallback(config, allConfigs, hash)
.pipe(concatMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext, config, allConfigs)), concatMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext, config, allConfigs)), concatMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext, config, allConfigs)));
}
processRefreshToken(config, allConfigs, customParamsRefresh) {
return this.refreshSessionCallbackHandlerService
.refreshSessionWithRefreshTokens(config)
.pipe(concatMap((callbackContext) => this.refreshTokenCallbackHandlerService.refreshTokensRequestTokens(callbackContext, config, customParamsRefresh)), concatMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext, config, allConfigs)), concatMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext, config, allConfigs)), concatMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext, config, allConfigs)));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FlowsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FlowsService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FlowsService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvbGliL2Zsb3dzL2Zsb3dzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3JILE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2hILE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3BILE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2hILE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3RILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOztBQUcvRixNQUFNLE9BQU8sWUFBWTtJQUR6QjtRQUVtQixtQ0FBOEIsR0FBRyxNQUFNLENBQ3RELDhCQUE4QixDQUMvQixDQUFDO1FBRWUsdUNBQWtDLEdBQUcsTUFBTSxDQUMxRCxrQ0FBa0MsQ0FDbkMsQ0FBQztRQUVlLHlDQUFvQyxHQUFHLE1BQU0sQ0FDNUQsb0NBQW9DLENBQ3JDLENBQUM7UUFFZSx1QkFBa0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUV4RCwwQ0FBcUMsR0FBRyxNQUFNLENBQzdELHFDQUFxQyxDQUN0QyxDQUFDO1FBRWUseUNBQW9DLEdBQUcsTUFBTSxDQUM1RCxvQ0FBb0MsQ0FDckMsQ0FBQztRQUVlLHVDQUFrQyxHQUFH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QUNGLEVBQ0QsU0FBUyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FDNUIsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLDhCQUE4QixDQUN0RSxlQUFlLEVBQ2YsTUFBTSxFQUNOLFVBQVUsQ0FDWCxDQUNGLEVBQ0QsU0FBUyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FDNUIsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLHVCQUF1QixDQUNoRSxlQUFlLEVBQ2YsTUFBTSxFQUNOLFVBQVUsQ0FDWCxDQUNGLEVBQ0QsU0FBUyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FDbEMsZUFBZSxFQUNmLE1BQU0sRUFDTixVQUFVLENBQ1gsQ0FDRixDQUNGLENBQUM7SUFDTixDQUFDOzhHQXRLVSxZQUFZO2tIQUFaLFlBQVksY0FEQyxNQUFNOzsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9wZW5JZENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9jb25maWcvb3BlbmlkLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgQ2FsbGJhY2tDb250ZXh0IH0gZnJvbSAnLi9jYWxsYmFjay1jb250ZXh0JztcbmltcG9ydCB7IENvZGVGbG93Q2FsbGJhY2tIYW5kbGVyU2VydmljZSB9IGZyb20gJy4vY2FsbGJhY2staGFuZGxpbmcvY29kZS1mbG93LWNhbGxiYWNrLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBIaXN0b3J5Snd0S2V5c0NhbGxiYWNrSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2NhbGxiYWNrLWhhbmRsaW5nL2hpc3Rvcnktand0LWtleXMtY2FsbGJhY2staGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEltcGxpY2l0Rmxvd0NhbGxiYWNrSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2NhbGxiYWNrLWhhbmRsaW5nL2ltcGxpY2l0LWZsb3ctY2FsbGJhY2staGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZnJlc2hTZXNzaW9uQ2FsbGJhY2tIYW5kbGVyU2VydmljZSB9IGZyb20gJy4vY2FsbGJhY2staGFuZGxpbmcvcmVmcmVzaC1zZXNzaW9uLWNhbGxiYWNrLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZWZyZXNoVG9rZW5DYWxsYmFja0hhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jYWxsYmFjay1oYW5kbGluZy9yZWZyZXNoLXRva2VuLWNhbGxiYWNrLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0ZVZhbGlkYXRpb25DYWxsYmFja0hhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jYWxsYmFjay1oYW5kbGluZy9zdGF0ZS12YWxpZGF0aW9uLWNhbGxiYWNrLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyQ2FsbGJhY2tIYW5kbGVyU2VydmljZSB9IGZyb20gJy4vY2FsbGJhY2staGFuZGxpbmcvdXNlci1jYWxsYmFjay1oYW5kbGVyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEZsb3dzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29kZUZsb3dDYWxsYmFja0hhbmRsZXJTZXJ2aWNlID0gaW5qZWN0KFxuICAgIENvZGVGbG93Q2FsbGJhY2tIYW5kbGVyU2VydmljZVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW1wbGljaXRGbG93Q2FsbGJhY2tIYW5kbGVyU2VydmljZSA9IGluamVjdChcbiAgICBJbXBsaWNpdEZsb3dDYWxsYmFja0hhbmRsZXJTZXJ2aWNlXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBoaXN0b3J5Snd0S2V5c0NhbGxiYWNrSGFuZGxlclNlcnZpY2UgPSBpbmplY3QoXG4gICAgSGlzdG9yeUp3dEtleXNDYWxsYmFja0hhbmRsZXJTZXJ2aWNlXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB1c2VySGFuZGxlclNlcnZpY2UgPSBpbmplY3QoVXNlckNhbGxiYWNrSGFuZGxlclNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGVWYWxpZGF0aW9uQ2FsbGJhY2tIYW5kbGVyU2VydmljZSA9IGluamVjdChcbiAgICBTdGF0ZVZhbGlkYXRpb25DYWxsYmFja0hhbmRsZXJTZXJ2aWNlXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoU2Vzc2lvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UgPSBpbmplY3QoXG4gICAgUmVmcmVzaFNlc3Npb25DYWxsYmFja0hhbmRsZXJTZXJ2aWNlXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoVG9rZW5DYWxsYmFja0hhbmRsZXJTZXJ2aWNlID0gaW5qZWN0KFxuICAgIFJlZnJlc2hUb2tlbkNhbGxiYWNrSGFuZGxlclNlcnZpY2VcbiAgKTtcblxuICBwcm9jZXNzQ29kZUZsb3dDYWxsYmFjayhcbiAgICB1cmxUb0NoZWNrOiBzdHJpbmcsXG4gICAgY29uZmlnOiBPcGVuSWRDb25maWd1cmF0aW9uLFxuICAgIGFsbENvbmZpZ3M6IE9wZW5JZENvbmZpZ3VyYXRpb25bXVxuICApOiBPYnNlcnZhYmxlPENhbGxiYWNrQ29udGV4dD4ge1xuICAgIHJldHVybiB0aGlzLmNvZGVGbG93Q2FsbGJhY2tIYW5kbGVyU2VydmljZVxuICAgICAgLmNvZGVGbG93Q2FsbGJhY2sodXJsVG9DaGVjaywgY29uZmlnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PlxuICAgICAgICAgIHRoaXMuY29kZUZsb3dDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLmNvZGVGbG93Q29kZVJlcXVlc3QoXG4gICAgICAgICAgICBjYWxsYmFja0NvbnRleHQsXG4gICAgICAgICAgICBjb25maWdcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNvbmNhdE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PlxuICAgICAgICAgIHRoaXMuaGlzdG9yeUp3dEtleXNDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLmNhbGxiYWNrSGlzdG9yeUFuZFJlc2V0Snd0S2V5cyhcbiAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGFsbENvbmZpZ3NcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNvbmNhdE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PlxuICAgICAgICAgIHRoaXMuc3RhdGVWYWxpZGF0aW9uQ2FsbGJhY2tIYW5kbGVyU2VydmljZS5jYWxsYmFja1N0YXRlVmFsaWRhdGlvbihcbiAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGFsbENvbmZpZ3NcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNvbmNhdE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PlxuICAgICAgICAgIHRoaXMudXNlckhhbmRsZXJTZXJ2aWNlLmNhbGxiYWNrVXNlcihcbiAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGFsbENvbmZpZ3NcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICBwcm9jZXNzU2lsZW50UmVuZXdDb2RlRmxvd0NhbGxiYWNrKFxuICAgIGZpcnN0Q29udGV4dDogQ2FsbGJhY2tDb250ZXh0LFxuICAgIGNvbmZpZzogT3BlbklkQ29uZmlndXJhdGlvbixcbiAgICBhbGxDb25maWdzOiBPcGVuSWRDb25maWd1cmF0aW9uW11cbiAgKTogT2JzZXJ2YWJsZTxDYWxsYmFja0NvbnRleHQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb2RlRmxvd0NhbGxiYWNrSGFuZGxlclNlcnZpY2VcbiAgICAgIC5jb2RlRmxvd0NvZGVSZXF1ZXN0KGZpcnN0Q29udGV4dCwgY29uZmlnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PlxuICAgICAgICAgIHRoaXMuaGlzdG9yeUp3dEtleXNDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLmNhbGxiYWNrSGlzdG9yeUFuZFJlc2V0Snd0S2V5cyhcbiAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGFsbENvbmZpZ3NcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNvbmNhdE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PlxuICAgICAgICAgIHRoaXMuc3RhdGVWYWxpZGF0aW9uQ2FsbGJhY2tIYW5kbGVyU2VydmljZS5jYWxsYmFja1N0YXRlVmFsaWRhdGlvbihcbiAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGFsbENvbmZpZ3NcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNvbmNhdE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PlxuICAgICAgICAgIHRoaXMudXNlckhhbmRsZXJTZXJ2aWNlLmNhbGxiYWNrVXNlcihcbiAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGFsbENvbmZpZ3NcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICBwcm9jZXNzSW1wbGljaXRGbG93Q2FsbGJhY2soXG4gICAgY29uZmlnOiBPcGVuSWRDb25maWd1cmF0aW9uLFxuICAgIGFsbENvbmZpZ3M6IE9wZW5JZENvbmZpZ3VyYXRpb25bXSxcbiAgICBoYXNoPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8Q2FsbGJhY2tDb250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuaW1wbGljaXRGbG93Q2FsbGJhY2tIYW5kbGVyU2VydmljZVxuICAgICAgLmltcGxpY2l0Rmxvd0NhbGxiYWNrKGNvbmZpZywgYWxsQ29uZmlncywgaGFzaClcbiAgICAgIC5waXBlKFxuICAgICAgICBjb25jYXRNYXAoKGNhbGxiYWNrQ29udGV4dCkgPT5cbiAgICAgICAgICB0aGlzLmhpc3RvcnlKd3RLZXlzQ2FsbGJhY2tIYW5kbGVyU2VydmljZS5jYWxsYmFja0hpc3RvcnlBbmRSZXNldEp3dEtleXMoXG4gICAgICAgICAgICBjYWxsYmFja0NvbnRleHQsXG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICBhbGxDb25maWdzXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjb25jYXRNYXAoKGNhbGxiYWNrQ29udGV4dCkgPT5cbiAgICAgICAgICB0aGlzLnN0YXRlVmFsaWRhdGlvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UuY2FsbGJhY2tTdGF0ZVZhbGlkYXRpb24oXG4gICAgICAgICAgICBjYWxsYmFja0NvbnRleHQsXG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICBhbGxDb25maWdzXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjb25jYXRNYXAoKGNhbGxiYWNrQ29udGV4dCkgPT5cbiAgICAgICAgICB0aGlzLnVzZXJIYW5kbGVyU2VydmljZS5jYWxsYmFja1VzZXIoXG4gICAgICAgICAgICBjYWxsYmFja0NvbnRleHQsXG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICBhbGxDb25maWdzXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgcHJvY2Vzc1JlZnJlc2hUb2tlbihcbiAgICBjb25maWc6IE9wZW5JZENvbmZpZ3VyYXRpb24sXG4gICAgYWxsQ29uZmlnczogT3BlbklkQ29uZmlndXJhdGlvbltdLFxuICAgIGN1c3RvbVBhcmFtc1JlZnJlc2g/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfVxuICApOiBPYnNlcnZhYmxlPENhbGxiYWNrQ29udGV4dD4ge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTZXNzaW9uQ2FsbGJhY2tIYW5kbGVyU2VydmljZVxuICAgICAgLnJlZnJlc2hTZXNzaW9uV2l0aFJlZnJlc2hUb2tlbnMoY29uZmlnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PlxuICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuQ2FsbGJhY2tIYW5kbGVyU2VydmljZS5yZWZyZXNoVG9rZW5zUmVxdWVzdFRva2VucyhcbiAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGN1c3RvbVBhcmFtc1JlZnJlc2hcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNvbmNhdE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PlxuICAgICAgICAgIHRoaXMuaGlzdG9yeUp3dEtleXNDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLmNhbGxiYWNrSGlzdG9yeUFuZFJlc2V0Snd0S2V5cyhcbiAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGFsbENvbmZpZ3NcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNvbmNhdE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PlxuICAgICAgICAgIHRoaXMuc3RhdGVWYWxpZGF0aW9uQ2FsbGJhY2tIYW5kbGVyU2VydmljZS5jYWxsYmFja1N0YXRlVmFsaWRhdGlvbihcbiAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGFsbENvbmZpZ3NcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNvbmNhdE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PlxuICAgICAgICAgIHRoaXMudXNlckhhbmRsZXJTZXJ2aWNlLmNhbGxiYWNrVXNlcihcbiAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGFsbENvbmZpZ3NcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==