@annalib/anna-cognito-lib 2.2.4 → 2.2.6

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.
@@ -8,13 +8,13 @@ import * as i6 from "./directives/spinner-button/spinner-button.directive";
8
8
  import * as i7 from "./components/version-and-term-policy/version-and-term-policy.component";
9
9
  import * as i8 from "./components/surewaves-year-logo/surewaves-year-logo.component";
10
10
  import * as i9 from "./components/powered-by-logo-template/powered-by-logo-template.component";
11
- import * as i10 from "./components/duo-sso-login/duo-sso-login.component";
11
+ import * as i10 from "./components/sso-login/sso-login.component";
12
12
  import * as i11 from "@angular/forms";
13
13
  import * as i12 from "@angular/router";
14
14
  import * as i13 from "@angular/common";
15
15
  export declare class AnnaCognitoLibModule {
16
16
  constructor();
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<AnnaCognitoLibModule, never>;
18
- static ɵmod: i0.ɵɵNgModuleDeclaration<AnnaCognitoLibModule, [typeof i1.LoginComponent, typeof i2.SetNewPasswordComponent, typeof i3.PasswordMatchingComponent, typeof i4.ForgotPasswordComponent, typeof i5.VerifyAndSetNewPasswordComponent, typeof i6.SpinnerButtonDirective, typeof i7.VersionAndTermPolicyComponent, typeof i8.SurewavesYearLogoComponent, typeof i9.PoweredByLogoTemplateComponent, typeof i10.DuoSsoLoginComponent], [typeof i11.FormsModule, typeof i11.ReactiveFormsModule, typeof i12.RouterModule, typeof i13.CommonModule, typeof i13.NgOptimizedImage], [typeof i1.LoginComponent, typeof i10.DuoSsoLoginComponent, typeof i2.SetNewPasswordComponent, typeof i3.PasswordMatchingComponent, typeof i4.ForgotPasswordComponent, typeof i5.VerifyAndSetNewPasswordComponent, typeof i6.SpinnerButtonDirective, typeof i7.VersionAndTermPolicyComponent, typeof i8.SurewavesYearLogoComponent, typeof i9.PoweredByLogoTemplateComponent, typeof i13.NgOptimizedImage]>;
18
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AnnaCognitoLibModule, [typeof i1.LoginComponent, typeof i2.SetNewPasswordComponent, typeof i3.PasswordMatchingComponent, typeof i4.ForgotPasswordComponent, typeof i5.VerifyAndSetNewPasswordComponent, typeof i6.SpinnerButtonDirective, typeof i7.VersionAndTermPolicyComponent, typeof i8.SurewavesYearLogoComponent, typeof i9.PoweredByLogoTemplateComponent, typeof i10.SsoLoginComponent], [typeof i11.FormsModule, typeof i11.ReactiveFormsModule, typeof i12.RouterModule, typeof i13.CommonModule, typeof i13.NgOptimizedImage], [typeof i1.LoginComponent, typeof i10.SsoLoginComponent, typeof i2.SetNewPasswordComponent, typeof i3.PasswordMatchingComponent, typeof i4.ForgotPasswordComponent, typeof i5.VerifyAndSetNewPasswordComponent, typeof i6.SpinnerButtonDirective, typeof i7.VersionAndTermPolicyComponent, typeof i8.SurewavesYearLogoComponent, typeof i9.PoweredByLogoTemplateComponent, typeof i13.NgOptimizedImage]>;
19
19
  static ɵinj: i0.ɵɵInjectorDeclaration<AnnaCognitoLibModule>;
20
20
  }
@@ -2,14 +2,13 @@ import { IConfigService } from '../../config/config-service.token';
2
2
  import { LoginConstant } from '../../constants/loginConstant';
3
3
  import { AnnaLibAuthService } from '../../services/auth.service';
4
4
  import * as i0 from "@angular/core";
5
- export declare class DuoSsoLoginComponent {
5
+ export declare class SsoLoginComponent {
6
6
  authService: AnnaLibAuthService;
7
7
  consumingProjectConfigService: IConfigService;
8
8
  constants: typeof LoginConstant;
9
9
  constructor(authService: AnnaLibAuthService, consumingProjectConfigService: IConfigService);
10
10
  ngOnInit(): void;
11
11
  signInWithSSO(): void;
12
- signInWithCognito(): void;
13
- static ɵfac: i0.ɵɵFactoryDeclaration<DuoSsoLoginComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<DuoSsoLoginComponent, "anna-cognito-lib-duo-sso-login", never, {}, {}, never, never, false, never>;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<SsoLoginComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<SsoLoginComponent, "anna-cognito-lib-sso-login", never, {}, {}, never, never, false, never>;
15
14
  }
@@ -4,7 +4,7 @@ import { Observable } from 'rxjs';
4
4
  export declare const AUTH_SERVICE_TOKEN: InjectionToken<IAuthService>;
5
5
  export interface IAuthService {
6
6
  isLoggingIn: boolean;
7
- onSuccessfulAuthenticatingUser(result: any): void;
7
+ onSuccessfulAuthenticatingUser(loggedInViaSso: boolean): void;
8
8
  isUsernameAvailable(username: string): Observable<any>;
9
9
  isEmailAvailable(emailId: string, ogId: number): Observable<any>;
10
10
  getUserState(username: string): Observable<any>;
@@ -14,5 +14,4 @@ export interface IAuthService {
14
14
  onPasswordUpdate(userName: string): void;
15
15
  newPasswordSetThenUpdateToBackend(userCode: string): void;
16
16
  signInWithDuo(): void;
17
- signInWithCognito(): void;
18
17
  }
@@ -39,6 +39,7 @@ export declare class LoginConstant {
39
39
  static readonly forgortPasswordPageUrl = "/forgot-password";
40
40
  static readonly verifyAndSetNewPasswordUrl = "/verify-and-set-new-password";
41
41
  static readonly loginPageUrl = "/login";
42
+ static readonly coPilotloginPageUrl = "/co-pilot-login";
42
43
  static readonly welcomeScrreenUrl = "/welcome-screen";
43
44
  static readonly homePageUrl = "/dashboard";
44
45
  static readonly stationSettingUrl = "/station-settings";
@@ -26,13 +26,11 @@ export declare class AnnaLibAuthService {
26
26
  userName: any;
27
27
  accessTokenTimerId: any;
28
28
  forgotPasswordAndGlobalSignoutLoader: boolean;
29
- userPassword: any;
30
29
  constructor(router: Router, aclService: AnnaLibAclService, httpClient: HttpClient, toastr: ToastrService, consumingProjectAuthService: IAuthService, consumingProjectConfigService: IConfigService);
31
30
  ngOnInit(): void;
32
31
  isUserLoggedIn(): Promise<boolean>;
33
32
  sessionTimeout(): void;
34
- computeTokenExpiration(token: any): number;
35
- getCurrentSession(): Promise<any>;
33
+ computeTokenExpiration(idToken: any): number;
36
34
  handleSignIn({ username, password }: SignInInput): Promise<void>;
37
35
  getAllCognitoTokenAndGroups(token: AuthTokens): Promise<void>;
38
36
  refreshAccessToken(): void;
@@ -41,7 +39,6 @@ export declare class AnnaLibAuthService {
41
39
  verifyCode(confirmationCode: string, newPassword: string): Promise<void>;
42
40
  forgotPasswordError(err: any, noOfAttempts: number): string;
43
41
  signInWithDuo(): void;
44
- signInWithCognito(): void;
45
42
  handleSignOut(): Promise<void>;
46
43
  expiryAllExistingCurrentSession(username: string, newPassword: string): void;
47
44
  setUserDetails(): void;
package/package.json CHANGED
@@ -1,13 +1,12 @@
1
1
  {
2
2
  "name": "@annalib/anna-cognito-lib",
3
- "version": "2.2.4",
3
+ "version": "2.2.6",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.2.9",
6
6
  "@angular/core": "^15.2.9",
7
7
  "@mdi/font": "^5.9.55",
8
8
  "@ng-bootstrap/ng-bootstrap": "^14.1.1",
9
9
  "@types/node": "^12.11.1",
10
- "@aws-amplify/ui-angular": "^5.0.2",
11
10
  "aws-amplify": "^6.0.4",
12
11
  "bootstrap": "^5.2.3",
13
12
  "ngx-toastr": "^15.2.2"
package/public-api.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from './lib/anna-cognito-lib.module';
2
2
  export * from './lib/components/login/login.component';
3
- export * from './lib/components/duo-sso-login/duo-sso-login.component';
3
+ export * from './lib/components/sso-login/sso-login.component';
4
4
  export * from './lib/components/forgot-password/forgot-password.component';
5
5
  export * from './lib/components/set-new-password/set-new-password.component';
6
6
  export * from './lib/components/password-matching/password-matching.component';
@@ -1,35 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { CONFIG_SERVICE_TOKEN } from '../../config/config-service.token';
3
- import { LoginConstant } from '../../constants/loginConstant';
4
- import { AnnaLibAuthService } from '../../services/auth.service';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../services/auth.service";
7
- import * as i2 from "@angular/common";
8
- import * as i3 from "../version-and-term-policy/version-and-term-policy.component";
9
- import * as i4 from "../surewaves-year-logo/surewaves-year-logo.component";
10
- import * as i5 from "../powered-by-logo-template/powered-by-logo-template.component";
11
- export class DuoSsoLoginComponent {
12
- constructor(authService, consumingProjectConfigService) {
13
- this.authService = authService;
14
- this.consumingProjectConfigService = consumingProjectConfigService;
15
- }
16
- ngOnInit() {
17
- this.constants = LoginConstant;
18
- }
19
- signInWithSSO() {
20
- this.authService.signInWithDuo();
21
- }
22
- signInWithCognito() {
23
- this.authService.signInWithCognito();
24
- }
25
- }
26
- DuoSsoLoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DuoSsoLoginComponent, deps: [{ token: i1.AnnaLibAuthService }, { token: CONFIG_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
27
- DuoSsoLoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DuoSsoLoginComponent, selector: "anna-cognito-lib-duo-sso-login", ngImport: i0, template: "<div class=\"main\">\n <section *ngIf=\"constants.forgotPassword\">\n <header>\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\n alt=\"Anna Logo\" priority />\n </header>\n <article>\n <p class=\"sub-title\">Login</p>\n <p>Sign in to your account with SSO</p>\n <button class=\"login-btn\" (click)=\"signInWithSSO()\">Login</button>\n <div class=\"dashed-line\"></div>\n <!-- <a tabindex=\"4\" class=\"login-link\" [routerLink]=\"constants.loginPageUrl\">Sign in with username</a> -->\n </article>\n <footer>\n <anna-cognito-lib-powered-by-logo-template>\n </anna-cognito-lib-powered-by-logo-template>\n </footer>\n </section>\n</div>\n\n<div class=\"page-footer\">\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\n</div>", styles: ["@keyframes show{0%{opacity:0}50%{opacity:.5}to{opacity:1}}html{overflow-y:scroll}.main{background-color:#fff;background-size:cover;font-family:Roboto;height:calc(100vh - 50px)}section{top:45%;left:50%;position:absolute;transform:translate(-50%,-50%);width:20.875rem;animation:show .5s 1;-moz-animation:show .5s 1}.container{width:100%;height:100%;overflow:auto}header{height:auto;width:100%;text-align:center}article{margin-top:.9375rem;margin-bottom:.9375rem;border:1px solid #979797;background-color:#f4f4f4;padding:2rem 1.375rem;border-radius:.375rem;box-shadow:0 .125rem .4375rem #0000001a}article .sub-title{color:#6e6e6e;font-family:Roboto;font-size:1.25rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}article #heading{color:#212121;text-align:center;margin-bottom:1.5rem;font-family:Roboto;font-size:1.125rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}p{text-align:center;margin-bottom:1rem}#alert-div{padding:.25rem 0 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3}#alert-div .material-icons{color:#f44336;font-size:1rem;margin-left:.5rem}#alert-div .mdi-info{color:#268bff;font-size:1rem}#alert-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}#info-div{padding:6px 0;margin-bottom:.75rem;border-radius:.25rem;border:1px solid #268bff;background:#e3f0ff}#info-div .mdi-info{color:#268bff;font-size:1rem;margin-left:6px}#info-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}footer{align-items:baseline;color:#6e6e6e;opacity:.9;display:flex;font-family:Ubuntu;font-size:1.25rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;justify-content:center}footer span{font-size:1.5625rem;margin-left:.25rem}input[type=password],input[type=text],input[type=number]{width:100%;height:30px;padding:.75rem 1rem;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}.login-btn{width:100%;height:2.5rem;border:0;color:#fff;background-color:#268bff;border-radius:.375rem;font-size:1rem}.login-btn:hover{background-color:#4099ff;cursor:pointer}.login-btn:disabled{background-color:#ccc;color:#fff;cursor:not-allowed}.input-invalid{border:1px solid #fe3824!important}input[type=password].ng-dirty.ng-invalid,input[type=text].ng-dirty.ng-invalid{border:1px solid #fe3824}input[type=submit]:focus,input[type=password]:focus,input[type=text]:focus,input[type=checkbox]:focus,button:focus{outline:none}input::placeholder{color:#a4a4a4}:host ::ng-deep .verison-and-policy{color:#8bac2a}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }, { kind: "component", type: i3.VersionAndTermPolicyComponent, selector: "anna-cognito-lib-version-and-term-policy" }, { kind: "component", type: i4.SurewavesYearLogoComponent, selector: "anna-cognito-lib-surewaves-year-logo" }, { kind: "component", type: i5.PoweredByLogoTemplateComponent, selector: "anna-cognito-lib-powered-by-logo-template" }] });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DuoSsoLoginComponent, decorators: [{
29
- type: Component,
30
- args: [{ selector: 'anna-cognito-lib-duo-sso-login', template: "<div class=\"main\">\n <section *ngIf=\"constants.forgotPassword\">\n <header>\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\n alt=\"Anna Logo\" priority />\n </header>\n <article>\n <p class=\"sub-title\">Login</p>\n <p>Sign in to your account with SSO</p>\n <button class=\"login-btn\" (click)=\"signInWithSSO()\">Login</button>\n <div class=\"dashed-line\"></div>\n <!-- <a tabindex=\"4\" class=\"login-link\" [routerLink]=\"constants.loginPageUrl\">Sign in with username</a> -->\n </article>\n <footer>\n <anna-cognito-lib-powered-by-logo-template>\n </anna-cognito-lib-powered-by-logo-template>\n </footer>\n </section>\n</div>\n\n<div class=\"page-footer\">\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\n</div>", styles: ["@keyframes show{0%{opacity:0}50%{opacity:.5}to{opacity:1}}html{overflow-y:scroll}.main{background-color:#fff;background-size:cover;font-family:Roboto;height:calc(100vh - 50px)}section{top:45%;left:50%;position:absolute;transform:translate(-50%,-50%);width:20.875rem;animation:show .5s 1;-moz-animation:show .5s 1}.container{width:100%;height:100%;overflow:auto}header{height:auto;width:100%;text-align:center}article{margin-top:.9375rem;margin-bottom:.9375rem;border:1px solid #979797;background-color:#f4f4f4;padding:2rem 1.375rem;border-radius:.375rem;box-shadow:0 .125rem .4375rem #0000001a}article .sub-title{color:#6e6e6e;font-family:Roboto;font-size:1.25rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}article #heading{color:#212121;text-align:center;margin-bottom:1.5rem;font-family:Roboto;font-size:1.125rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}p{text-align:center;margin-bottom:1rem}#alert-div{padding:.25rem 0 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3}#alert-div .material-icons{color:#f44336;font-size:1rem;margin-left:.5rem}#alert-div .mdi-info{color:#268bff;font-size:1rem}#alert-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}#info-div{padding:6px 0;margin-bottom:.75rem;border-radius:.25rem;border:1px solid #268bff;background:#e3f0ff}#info-div .mdi-info{color:#268bff;font-size:1rem;margin-left:6px}#info-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}footer{align-items:baseline;color:#6e6e6e;opacity:.9;display:flex;font-family:Ubuntu;font-size:1.25rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;justify-content:center}footer span{font-size:1.5625rem;margin-left:.25rem}input[type=password],input[type=text],input[type=number]{width:100%;height:30px;padding:.75rem 1rem;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}.login-btn{width:100%;height:2.5rem;border:0;color:#fff;background-color:#268bff;border-radius:.375rem;font-size:1rem}.login-btn:hover{background-color:#4099ff;cursor:pointer}.login-btn:disabled{background-color:#ccc;color:#fff;cursor:not-allowed}.input-invalid{border:1px solid #fe3824!important}input[type=password].ng-dirty.ng-invalid,input[type=text].ng-dirty.ng-invalid{border:1px solid #fe3824}input[type=submit]:focus,input[type=password]:focus,input[type=text]:focus,input[type=checkbox]:focus,button:focus{outline:none}input::placeholder{color:#a4a4a4}:host ::ng-deep .verison-and-policy{color:#8bac2a}\n"] }]
31
- }], ctorParameters: function () { return [{ type: i1.AnnaLibAuthService }, { type: undefined, decorators: [{
32
- type: Inject,
33
- args: [CONFIG_SERVICE_TOKEN]
34
- }] }]; } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVvLXNzby1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvZ25pdG8tbGliL3NyYy9saWIvY29tcG9uZW50cy9kdW8tc3NvLWxvZ2luL2R1by1zc28tbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZHVvLXNzby1sb2dpbi9kdW8tc3NvLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBa0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7QUFPakUsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUNTLFdBQStCLEVBQ0QsNkJBQTZDO1FBRDNFLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUNELGtDQUE2QixHQUE3Qiw2QkFBNkIsQ0FBZ0I7SUFDaEYsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN2QyxDQUFDOztpSEFsQlUsb0JBQW9CLG9EQUtyQixvQkFBb0I7cUdBTG5CLG9CQUFvQixzRUNWakMsMGlDQXVCTTsyRkRiTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsZ0NBQWdDOzswQkFTdkMsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ09ORklHX1NFUlZJQ0VfVE9LRU4sIElDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uZmlnL2NvbmZpZy1zZXJ2aWNlLnRva2VuJztcbmltcG9ydCB7IExvZ2luQ29uc3RhbnQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbG9naW5Db25zdGFudCc7XG5pbXBvcnQgeyBBbm5hTGliQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbm5hLWNvZ25pdG8tbGliLWR1by1zc28tbG9naW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHVvLXNzby1sb2dpbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R1by1zc28tbG9naW4uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEdW9Tc29Mb2dpbkNvbXBvbmVudCB7XG4gIGNvbnN0YW50czogdHlwZW9mIExvZ2luQ29uc3RhbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGhTZXJ2aWNlOiBBbm5hTGliQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChDT05GSUdfU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RDb25maWdTZXJ2aWNlOiBJQ29uZmlnU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uc3RhbnRzID0gTG9naW5Db25zdGFudDtcbiAgfVxuXG4gIHNpZ25JbldpdGhTU08oKSB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5zaWduSW5XaXRoRHVvKCk7XG4gIH1cblxuICBzaWduSW5XaXRoQ29nbml0bygpIHtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnNpZ25JbldpdGhDb2duaXRvKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYWluXCI+XG4gICAgPHNlY3Rpb24gKm5nSWY9XCJjb25zdGFudHMuZm9yZ290UGFzc3dvcmRcIj5cbiAgICAgICAgPGhlYWRlcj5cbiAgICAgICAgICAgIDxpbWcgW25nU3JjXT1cImNvbnN1bWluZ1Byb2plY3RDb25maWdTZXJ2aWNlLmFwcEdlbmVyaWNDb25maWcubG9naW5QYWdlTG9nb0ltZ1VybFwiIHdpZHRoPVwiMTQ1XCIgaGVpZ2h0PVwiNTBcIlxuICAgICAgICAgICAgICAgIGFsdD1cIkFubmEgTG9nb1wiIHByaW9yaXR5IC8+XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwic3ViLXRpdGxlXCI+TG9naW48L3A+XG4gICAgICAgICAgICA8cD5TaWduIGluIHRvIHlvdXIgYWNjb3VudCB3aXRoIFNTTzwvcD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2dpbi1idG5cIiAoY2xpY2spPVwic2lnbkluV2l0aFNTTygpXCI+TG9naW48L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoZWQtbGluZVwiPjwvZGl2PlxuICAgICAgICAgICAgPCEtLSA8YSB0YWJpbmRleD1cIjRcIiBjbGFzcz1cImxvZ2luLWxpbmtcIiBbcm91dGVyTGlua109XCJjb25zdGFudHMubG9naW5QYWdlVXJsXCI+U2lnbiBpbiB3aXRoIHVzZXJuYW1lPC9hPiAtLT5cbiAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICA8Zm9vdGVyPlxuICAgICAgICAgICAgPGFubmEtY29nbml0by1saWItcG93ZXJlZC1ieS1sb2dvLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9hbm5hLWNvZ25pdG8tbGliLXBvd2VyZWQtYnktbG9nby10ZW1wbGF0ZT5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgPC9zZWN0aW9uPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwYWdlLWZvb3RlclwiPlxuICAgIDxhbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+PC9hbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+XG4gICAgPGFubmEtY29nbml0by1saWItdmVyc2lvbi1hbmQtdGVybS1wb2xpY3k+PC9hbm5hLWNvZ25pdG8tbGliLXZlcnNpb24tYW5kLXRlcm0tcG9saWN5PlxuPC9kaXY+Il19