@c8y/ngx-components 1021.22.81 → 1021.22.86

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.
@@ -1 +1 @@
1
- {"version":3,"file":"supports-branding.service.d.ts","sourceRoot":"","sources":["../../../branding/shared/supports-branding.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;;AAGlC,qBACa,uBAAwB,YAAW,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAG9E,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,IAAI,CAAgB;gBACR,QAAQ,EAAE,eAAe;IAoB7C,GAAG,IAAI,UAAU,CAAC,aAAa,GAAG,aAAa,EAAE,CAAC;IAWlD,WAAW,IAAI,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;yCAlClF,uBAAuB;6CAAvB,uBAAuB;CAqCnC"}
1
+ {"version":3,"file":"supports-branding.service.d.ts","sourceRoot":"","sources":["../../../branding/shared/supports-branding.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;;AAGlC,qBACa,uBAAwB,YAAW,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAG9E,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,IAAI,CAAgB;gBACR,QAAQ,EAAE,eAAe;IAuB7C,GAAG,IAAI,UAAU,CAAC,aAAa,GAAG,aAAa,EAAE,CAAC;IAWlD,WAAW,IAAI,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;yCArClF,uBAAuB;6CAAvB,uBAAuB;CAwCnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"login.component.d.ts","sourceRoot":"","sources":["../../../core/login/login.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,YAAY,EAAyB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAqB,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;;AAE7D,qBAKa,cAAe,YAAW,MAAM,EAAE,SAAS;IAiB7C,YAAY,EAAE,YAAY;IACjC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,iCAAiC;IAClC,EAAE,EAAE,eAAe;IApB5B,WAAW,EAAE,UAAU,CAAmB;IAC1C,WAAW,oBAAc;IAEzB,QAAQ,UAAS;IAER,IAAI,EAAE,MAAM,CAAC;IAEtB,WAAW,EAAE,YAAY,CAAM;IAC/B,eAAe,EAAE,0BAA0B,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAM;IAC1E,aAAa,UAAS;IACtB,OAAO,CAAC,WAAW,CAAW;IAE9B;;OAEG;gBAEM,YAAY,EAAE,YAAY,EACzB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,EACnB,iCAAiC,EAAE,iCAAiC,EACrE,EAAE,EAAE,eAAe;IAG5B,QAAQ;IAgBR,WAAW,IAAI,IAAI;IAKnB,mBAAmB,CAAC,KAAK,EAAE;QACzB,IAAI,EAAE,UAAU,CAAC;QACjB,WAAW,CAAC,EAAE,YAAY,CAAC;QAC3B,eAAe,CAAC,EAAE,0BAA0B,GAAG;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;KACvE;IAMkC,OAAO,CAAC,KAAK,EAAE,aAAa;IAM/D,KAAK;YAMS,kBAAkB;IAuBhC,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,SAAS;yCA1HN,cAAc;2CAAd,cAAc;CA4I1B"}
1
+ {"version":3,"file":"login.component.d.ts","sourceRoot":"","sources":["../../../core/login/login.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,YAAY,EAAyB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAqB,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;;AAE7D,qBAKa,cAAe,YAAW,MAAM,EAAE,SAAS;IAiB7C,YAAY,EAAE,YAAY;IACjC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,iCAAiC;IAClC,EAAE,EAAE,eAAe;IApB5B,WAAW,EAAE,UAAU,CAAmB;IAC1C,WAAW,oBAAc;IAEzB,QAAQ,UAAS;IAER,IAAI,EAAE,MAAM,CAAC;IAEtB,WAAW,EAAE,YAAY,CAAM;IAC/B,eAAe,EAAE,0BAA0B,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAM;IAC1E,aAAa,UAAS;IACtB,OAAO,CAAC,WAAW,CAAW;IAE9B;;OAEG;gBAEM,YAAY,EAAE,YAAY,EACzB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,EACnB,iCAAiC,EAAE,iCAAiC,EACrE,EAAE,EAAE,eAAe;IAG5B,QAAQ;IAgBR,WAAW,IAAI,IAAI;IAKnB,mBAAmB,CAAC,KAAK,EAAE;QACzB,IAAI,EAAE,UAAU,CAAC;QACjB,WAAW,CAAC,EAAE,YAAY,CAAC;QAC3B,eAAe,CAAC,EAAE,0BAA0B,GAAG;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;KACvE;IAMkC,OAAO,CAAC,KAAK,EAAE,aAAa;IAM/D,KAAK;YAMS,kBAAkB;IAwBhC,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,SAAS;yCA3HN,cAAc;2CAAd,cAAc;CA6I1B"}
@@ -185,6 +185,7 @@ export declare class LoginService {
185
185
  verifyAppAccess(): Promise<void>;
186
186
  redirectToDomain(domain: any): void;
187
187
  showSsoError(error: any): void;
188
+ clearCookies(): Promise<IFetchResponse>;
188
189
  /**
189
190
  * Sets the tenant to the client and updates the credentials on the
190
191
  * auth strategy.
@@ -1 +1 @@
1
- {"version":3,"file":"login.service.d.ts","sourceRoot":"","sources":["../../../core/login/login.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.service.d.ts","sourceRoot":"","sources":["../../../core/login/login.service.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import { OptionsService } from '../../common';
2
+ import { ThemeSwitcherService } from '../../ui-settings/theme-switcher.service';
2
3
  import { Observable } from 'rxjs';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class NavigatorBottomService {
5
6
  private options;
7
+ private themeService;
6
8
  readonly navigatorLogoVariable = "navigator-platform-logo";
7
9
  readonly navigatorLogoHeightVariable = "navigator-platform-logo-height";
8
- constructor(options: OptionsService);
10
+ constructor(options: OptionsService, themeService: ThemeSwitcherService);
9
11
  hasHidePoweredSet(): Observable<boolean>;
10
12
  hasCustomNavigatorLogoSet(): Observable<boolean>;
11
13
  shouldShowBottomDrawer(): Observable<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"navigator-bottom.service.d.ts","sourceRoot":"","sources":["../../../../core/navigator/navigator-bottom/navigator-bottom.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAiB,UAAU,EAAM,MAAM,MAAM,CAAC;;AAGrD,qBAGa,sBAAsB;IAGrB,OAAO,CAAC,OAAO;IAF3B,QAAQ,CAAC,qBAAqB,6BAA6B;IAC3D,QAAQ,CAAC,2BAA2B,oCAAoC;gBACpD,OAAO,EAAE,cAAc;IAE3C,iBAAiB,IAAI,UAAU,CAAC,OAAO,CAAC;IAIxC,yBAAyB,IAAI,UAAU,CAAC,OAAO,CAAC;IAehD,sBAAsB,IAAI,UAAU,CAAC,OAAO,CAAC;IAI7C,0BAA0B,IAAI,UAAU,CAAC,OAAO,CAAC;yCA5BtC,sBAAsB;6CAAtB,sBAAsB;CAiClC"}
1
+ {"version":3,"file":"navigator-bottom.service.d.ts","sourceRoot":"","sources":["../../../../core/navigator/navigator-bottom/navigator-bottom.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAiB,UAAU,EAAM,MAAM,MAAM,CAAC;;AAGrD,qBAGa,sBAAsB;IAI/B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;IAJtB,QAAQ,CAAC,qBAAqB,6BAA6B;IAC3D,QAAQ,CAAC,2BAA2B,oCAAoC;gBAE9D,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,oBAAoB;IAG5C,iBAAiB,IAAI,UAAU,CAAC,OAAO,CAAC;IAIxC,yBAAyB,IAAI,UAAU,CAAC,OAAO,CAAC;IAqBhD,sBAAsB,IAAI,UAAU,CAAC,OAAO,CAAC;IAI7C,0BAA0B,IAAI,UAAU,CAAC,OAAO,CAAC;yCArCtC,sBAAsB;6CAAtB,sBAAsB;CA0ClC"}
@@ -13,10 +13,13 @@ export class SupportsBrandingService {
13
13
  this.node = new NavigatorNode({
14
14
  featureId: 'branding-editor',
15
15
  label: 'Branding',
16
- path: 'branding-editor',
16
+ // will be redirected to the branding-editor route
17
+ // TODO: change back to branding-editor when angular JS implementation is removed (1022.0.0)
18
+ path: 'branding',
17
19
  icon: 'palette',
18
20
  parent: 'Settings',
19
- routerLinkExact: false
21
+ routerLinkExact: false,
22
+ preventDuplicates: true
20
23
  });
21
24
  }
22
25
  get() {
@@ -37,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
37
40
  type: Injectable,
38
41
  args: [{ providedIn: 'root' }]
39
42
  }], ctorParameters: () => [{ type: i1.AppStateService }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydHMtYnJhbmRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2JyYW5kaW5nL3NoYXJlZC9zdXBwb3J0cy1icmFuZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBb0IsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR2xELE1BQU0sT0FBTyx1QkFBdUI7SUFHbEMsWUFBb0IsUUFBeUI7UUFBekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDM0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUMzRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDVCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxrQkFBa0IsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssWUFBWSxDQUNqRixDQUFDO1lBQ0YsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxpQkFBaUI7WUFDNUIsS0FBSyxFQUFFLFVBQVU7WUFDakIsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLGVBQWUsRUFBRSxLQUFLO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUNoQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDZCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztZQUNuQixDQUFDO1lBQ0QsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDOzhHQXBDVSx1QkFBdUI7a0hBQXZCLHVCQUF1QixjQURWLE1BQU07OzJGQUNuQix1QkFBdUI7a0JBRG5DLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlLCBFeHRlbnNpb25GYWN0b3J5LCBOYXZpZ2F0b3JOb2RlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFN1cHBvcnRzQnJhbmRpbmdTZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIEV4dGVuc2lvbkZhY3Rvcnk8TmF2aWdhdG9yTm9kZT4ge1xuICBwcml2YXRlIHN1cHBvcnRzQnJhbmRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwcml2YXRlIG5vZGU6IE5hdmlnYXRvck5vZGU7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSkge1xuICAgIHRoaXMuc3VwcG9ydHNCcmFuZGluZyQgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRBcHBzT2ZVc2VyLnBpcGUoXG4gICAgICBtYXAoYXBwcyA9PiB7XG4gICAgICAgIGNvbnN0IGJyYW5kaW5nRmVhdHVyZUFwcCA9IGFwcHMuZmluZChcbiAgICAgICAgICBhcHAgPT4gYXBwLm5hbWUgPT09ICdmZWF0dXJlLWJyYW5kaW5nJyAmJiBhcHAub3duZXI/LnRlbmFudD8uaWQgPT09ICdtYW5hZ2VtZW50J1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gISFicmFuZGluZ0ZlYXR1cmVBcHA7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgICB0aGlzLm5vZGUgPSBuZXcgTmF2aWdhdG9yTm9kZSh7XG4gICAgICBmZWF0dXJlSWQ6ICdicmFuZGluZy1lZGl0b3InLFxuICAgICAgbGFiZWw6ICdCcmFuZGluZycsXG4gICAgICBwYXRoOiAnYnJhbmRpbmctZWRpdG9yJyxcbiAgICAgIGljb246ICdwYWxldHRlJyxcbiAgICAgIHBhcmVudDogJ1NldHRpbmdzJyxcbiAgICAgIHJvdXRlckxpbmtFeGFjdDogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIGdldCgpOiBPYnNlcnZhYmxlPE5hdmlnYXRvck5vZGUgfCBOYXZpZ2F0b3JOb2RlW10+IHtcbiAgICByZXR1cm4gdGhpcy5zdXBwb3J0c0JyYW5kaW5nJC5waXBlKFxuICAgICAgbWFwKHN1cHBvcnRlZCA9PiB7XG4gICAgICAgIGlmIChzdXBwb3J0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGNhbkFjdGl2YXRlKCk6IGJvb2xlYW4gfCBVcmxUcmVlIHwgT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgcmV0dXJuIHRoaXMuc3VwcG9ydHNCcmFuZGluZyQ7XG4gIH1cbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydHMtYnJhbmRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2JyYW5kaW5nL3NoYXJlZC9zdXBwb3J0cy1icmFuZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBb0IsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR2xELE1BQU0sT0FBTyx1QkFBdUI7SUFHbEMsWUFBb0IsUUFBeUI7UUFBekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDM0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUMzRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDVCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxrQkFBa0IsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssWUFBWSxDQUNqRixDQUFDO1lBQ0YsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxpQkFBaUI7WUFDNUIsS0FBSyxFQUFFLFVBQVU7WUFDakIsa0RBQWtEO1lBQ2xELDRGQUE0RjtZQUM1RixJQUFJLEVBQUUsVUFBVTtZQUNoQixJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLGlCQUFpQixFQUFFLElBQUk7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ2hDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNkLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ25CLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7OEdBdkNVLHVCQUF1QjtrSEFBdkIsdUJBQXVCLGNBRFYsTUFBTTs7MkZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UsIEV4dGVuc2lvbkZhY3RvcnksIE5hdmlnYXRvck5vZGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3VwcG9ydHNCcmFuZGluZ1NlcnZpY2UgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgRXh0ZW5zaW9uRmFjdG9yeTxOYXZpZ2F0b3JOb2RlPiB7XG4gIHByaXZhdGUgc3VwcG9ydHNCcmFuZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHByaXZhdGUgbm9kZTogTmF2aWdhdG9yTm9kZTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlKSB7XG4gICAgdGhpcy5zdXBwb3J0c0JyYW5kaW5nJCA9IHRoaXMuYXBwU3RhdGUuY3VycmVudEFwcHNPZlVzZXIucGlwZShcbiAgICAgIG1hcChhcHBzID0+IHtcbiAgICAgICAgY29uc3QgYnJhbmRpbmdGZWF0dXJlQXBwID0gYXBwcy5maW5kKFxuICAgICAgICAgIGFwcCA9PiBhcHAubmFtZSA9PT0gJ2ZlYXR1cmUtYnJhbmRpbmcnICYmIGFwcC5vd25lcj8udGVuYW50Py5pZCA9PT0gJ21hbmFnZW1lbnQnXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiAhIWJyYW5kaW5nRmVhdHVyZUFwcDtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICAgIHRoaXMubm9kZSA9IG5ldyBOYXZpZ2F0b3JOb2RlKHtcbiAgICAgIGZlYXR1cmVJZDogJ2JyYW5kaW5nLWVkaXRvcicsXG4gICAgICBsYWJlbDogJ0JyYW5kaW5nJyxcbiAgICAgIC8vIHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0aGUgYnJhbmRpbmctZWRpdG9yIHJvdXRlXG4gICAgICAvLyBUT0RPOiBjaGFuZ2UgYmFjayB0byBicmFuZGluZy1lZGl0b3Igd2hlbiBhbmd1bGFyIEpTIGltcGxlbWVudGF0aW9uIGlzIHJlbW92ZWQgKDEwMjIuMC4wKVxuICAgICAgcGF0aDogJ2JyYW5kaW5nJyxcbiAgICAgIGljb246ICdwYWxldHRlJyxcbiAgICAgIHBhcmVudDogJ1NldHRpbmdzJyxcbiAgICAgIHJvdXRlckxpbmtFeGFjdDogZmFsc2UsXG4gICAgICBwcmV2ZW50RHVwbGljYXRlczogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0KCk6IE9ic2VydmFibGU8TmF2aWdhdG9yTm9kZSB8IE5hdmlnYXRvck5vZGVbXT4ge1xuICAgIHJldHVybiB0aGlzLnN1cHBvcnRzQnJhbmRpbmckLnBpcGUoXG4gICAgICBtYXAoc3VwcG9ydGVkID0+IHtcbiAgICAgICAgaWYgKHN1cHBvcnRlZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm5vZGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY2FuQWN0aXZhdGUoKTogYm9vbGVhbiB8IFVybFRyZWUgfCBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHtcbiAgICByZXR1cm4gdGhpcy5zdXBwb3J0c0JyYW5kaW5nJDtcbiAgfVxufVxuIl19
@@ -82,6 +82,7 @@ export class LoginComponent {
82
82
  await this.loginService.login();
83
83
  }
84
84
  catch (e) {
85
+ await this.loginService.clearCookies();
85
86
  const preferredLoginOptionType = this.loginService.loginMode.type;
86
87
  if (preferredLoginOptionType === TenantLoginOptionType.OAUTH2) {
87
88
  this.loginService.redirectToOauth();
@@ -158,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
158
159
  type: HostListener,
159
160
  args: ['keyup', ['$event']]
160
161
  }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUU1RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPN0QsTUFBTSxPQUFPLGNBQWM7SUFhekI7O09BRUc7SUFDSCxZQUNTLFlBQTBCLEVBQ3pCLE9BQXVCLEVBQ3ZCLEtBQW1CLEVBQ25CLGlDQUFvRSxFQUNyRSxFQUFtQjtRQUpuQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFDckUsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFwQjVCLGdCQUFXLEdBQWUsVUFBVSxDQUFDLElBQUksQ0FBQztRQUMxQyxnQkFBVyxHQUFHLFVBQVUs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VSxjQUFjO2tHQUFkLGNBQWMsZ0lDaEIzQixvbEZBaUZBOzsyRkRqRWEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXO3VOQVVaLElBQUk7c0JBQVosS0FBSztnQkFpRDZCLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUNyZWRlbnRpYWxzLCBUZW5hbnRMb2dpbk9wdGlvblR5cGUgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2luVmlld3MsIFNzb0RhdGEsIFNzb0Vycm9yIH0gZnJvbSAnLi9sb2dpbi5tb2RlbCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuL2dldHRleHQnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlIH0gZnJvbSAnLi9jcmVkZW50aWFscy1mcm9tLXF1ZXJ5LXBhcmFtcy5zZXJ2aWNlJztcbmltcG9ydCB7IENyZWRlbnRpYWxzQ29tcG9uZW50UGFyYW1zIH0gZnJvbSAnLi9jcmVkZW50aWFscy1jb21wb25lbnQtcGFyYW1zJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxvZ2luJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY3VycmVudFZpZXc6IExvZ2luVmlld3MgPSBMb2dpblZpZXdzLk5vbmU7XG4gIExPR0lOX1ZJRVdTID0gTG9naW5WaWV3cztcblxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICBjcmVkZW50aWFsczogSUNyZWRlbnRpYWxzID0ge307XG4gIGxvZ2luVmlld1BhcmFtczogQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIGRpc3BsYXlBbGVydHMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBUT0tFTl9QQVJBTSA9ICd0b2tlbic7XG5cbiAgLyoqXG4gICAqIEp1c3QgREkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2U6IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZSxcbiAgICBwdWJsaWMgdWk6IEFwcFN0YXRlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFBhcmFtQW5kQ2xlYXIodGhpcy5UT0tFTl9QQVJBTSk7XG4gICAgY29uc3Qgc3NvRGF0YSA9IHRoaXMuZ2V0U3NvRGF0YSgpO1xuICAgIGlmIChzc29EYXRhKSB7XG4gICAgICB0aGlzLmhhbmRsZVNzbyhzc29EYXRhKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5TZXJ2aWNlLmlzRmlyc3RMb2dpbikge1xuICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICB0aGlzLmxvZ2luQXV0b21hdGljYWxseSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcmVkZW50aWFscy50b2tlbiA9IHRva2VuO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubG9naW5TZXJ2aWNlLmlzRmlyc3RMb2dpbiA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gbWFrZSBzdXJlIHRoYXQgd2UgZG8gbm90IGhhdmUgYW55IHF1ZXJ5UGFyYW1ldGVycyByZWxhdGVkIHRvIGNyZWRlbnRpYWxzIGFmdGVyIGxvZ2dpbmcgaW4gb3IgZXZlbiBpZiB3ZSB3ZXJlIGFscmVhZHkgbG9nZ2VkIGluLlxuICAgIHRoaXMuY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlLnJlbW92ZUNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zKCk7XG4gIH1cblxuICBoYW5kbGVMb2dpblRlbXBsYXRlKGV2ZW50OiB7XG4gICAgdmlldzogTG9naW5WaWV3cztcbiAgICBjcmVkZW50aWFscz86IElDcmVkZW50aWFscztcbiAgICBsb2dpblZpZXdQYXJhbXM/OiBDcmVkZW50aWFsc0NvbXBvbmVudFBhcmFtcyB8IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIH0pIHtcbiAgICB0aGlzLmN1cnJlbnRWaWV3ID0gZXZlbnQudmlldztcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gZXZlbnQuY3JlZGVudGlhbHMgfHwge307XG4gICAgdGhpcy5sb2dpblZpZXdQYXJhbXMgPSBldmVudC5sb2dpblZpZXdQYXJhbXMgfHwge307XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pIG9ua2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLmxvZ2luU2VydmljZS5jbGVhbk1lc3NhZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcbiAgICB0aGlzLnNldFZpZXcoKTtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5jbGVhbk1lc3NhZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvZ2luQXV0b21hdGljYWxseSgpIHtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5hdXRvbWF0aWNMb2dpbkluUHJvZ3Jlc3MkLm5leHQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubG9naW5TZXJ2aWNlLmxvZ2luKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID0gdGhpcy5sb2dpblNlcnZpY2UubG9naW5Nb2RlLnR5cGU7XG4gICAgICBpZiAocHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyKSB7XG4gICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlZGlyZWN0VG9PYXV0aCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMICYmXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLnByb3RvY29sICE9PSAnaHR0cHM6J1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdDdXJyZW50IGxvZ2luIG1vZGUgb25seSBzdXBwb3J0cyBIVFRQUy4nKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZS5yZXMgJiYgZS5yZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sb2dpblNlcnZpY2UuYXV0b21hdGljTG9naW5JblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmlldygpIHtcbiAgICBpZiAodGhpcy5jcmVkZW50aWFscyAmJiB0aGlzLmNyZWRlbnRpYWxzLnRva2VuKSB7XG4gICAgICB0aGlzLmhhbmRsZUxvZ2luVGVtcGxhdGUoeyB2aWV3OiBMb2dpblZpZXdzLkNoYW5nZVBhc3N3b3JkLCBjcmVkZW50aWFsczogdGhpcy5jcmVkZW50aWFscyB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5TZXJ2aWNlLnNob3dUZW5hbnRTZXR1cCgpKSB7XG4gICAgICB0aGlzLmhhbmRsZUxvZ2luVGVtcGxhdGUoeyB2aWV3OiBMb2dpblZpZXdzLlRlbmFudElkU2V0dXAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlTG9naW5UZW1wbGF0ZSh7IHZpZXc6IExvZ2luVmlld3MuQ3JlZGVudGlhbHMgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbUFuZENsZWFyKHBhcmFtTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwYXJhbVZhbHVlID0gdGhpcy5vcHRpb25zLmdldDxzdHJpbmc+KHBhcmFtTmFtZSk7XG4gICAgaWYgKHBhcmFtVmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5zZXQocGFyYW1OYW1lLCB1bmRlZmluZWQpOyAvLyBvbmx5IHVzZSBvbmNlXG4gICAgfVxuICAgIHJldHVybiBwYXJhbVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTc29EYXRhKCk6IFNzb0RhdGEgfCBTc29FcnJvciB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignY29kZScpO1xuICAgIGNvbnN0IHNlc3Npb25TdGF0ZSA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignc2Vzc2lvbl9zdGF0ZScpO1xuICAgIGlmIChjb2RlKSB7XG4gICAgICByZXR1cm4geyBzZXNzaW9uU3RhdGUsIGNvZGUgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzc29FcnJvciA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignZXJyb3InKTtcbiAgICBjb25zdCBzc29FcnJvckRlc2NyaXB0aW9uID0gdGhpcy5nZXRQYXJhbUFuZENsZWFyKCdlcnJvcl9kZXNjcmlwdGlvbicpO1xuICAgIGlmIChzc29FcnJvciAmJiBzc29FcnJvckRlc2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm4geyBzc29FcnJvciwgc3NvRXJyb3JEZXNjcmlwdGlvbiB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3NvKHNzb0RhdGE6IFNzb0RhdGEgfCBTc29FcnJvcikge1xuICAgIGlmICgnc3NvRXJyb3InIGluIHNzb0RhdGEpIHtcbiAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnNob3dTc29FcnJvcihcbiAgICAgICAgZGVjb2RlVVJJQ29tcG9uZW50KHNzb0RhdGEuc3NvRXJyb3JEZXNjcmlwdGlvbikucmVwbGFjZSgvXFwrL2csICclMjAnKVxuICAgICAgKTtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcbiAgICAgICAgLmxvZ2luQnlTc28oc3NvRGF0YSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5sb2dpblNlcnZpY2UubG9naW4oKSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICBpZiAoZS5yZXM/LnN0YXR1cykge1xuICAgICAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibG9hZGluZyBjYXJkIGZhZGVJblVwIGFuaW1hdGVkIGVsZXZhdGlvbi1sZ1wiXG4gICpuZ0lmPVwiY3VycmVudFZpZXcgIT09IExPR0lOX1ZJRVdTLk5vbmVcIlxuICBbbmdTd2l0Y2hdPVwiY3VycmVudFZpZXdcIlxuPlxuICA8bWFpbiBjbGFzcz1cImNhcmQtYmxvY2sgcC1iLTBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1haW5sb2dvXCI+PC9zcGFuPlxuXG4gICAgPGM4eS1jcmVkZW50aWFsc1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNyZWRlbnRpYWxzXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtsb2dpblZpZXdQYXJhbXNdPVwibG9naW5WaWV3UGFyYW1zXCJcbiAgICA+PC9jOHktY3JlZGVudGlhbHM+XG4gICAgPGM4eS1yZWNvdmVyLXBhc3N3b3JkXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuUmVjb3ZlclBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktcmVjb3Zlci1wYXNzd29yZD5cbiAgICA8Yzh5LWNoYW5nZS1wYXNzd29yZFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNoYW5nZVBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LWNoYW5nZS1wYXNzd29yZD5cbiAgICA8Yzh5LXRvdHAtYXV0aFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLlRvdHBDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW3ZpZXddPVwiY3VycmVudFZpZXdcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktdG90cC1hdXRoPlxuICAgIDxjOHktdG90cC1hdXRoXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuVG90cFNldHVwXCJcbiAgICAgIChvbkNhbmNlbCk9XCJyZXNldCgpXCJcbiAgICAgIFt2aWV3XT1cImN1cnJlbnRWaWV3XCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LXRvdHAtYXV0aD5cbiAgICA8Yzh5LXNtcy1jaGFsbGVuZ2VcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5TbXNDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktc21zLWNoYWxsZW5nZT5cblxuICAgIDxjOHktcHJvdmlkZS1waG9uZS1udW1iZXJcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5Qcm92aWRlUGhvbmVOdW1iZXJcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgKG9uQ2hhbmdlVmlldyk9XCJoYW5kbGVMb2dpblRlbXBsYXRlKCRldmVudClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktcHJvdmlkZS1waG9uZS1udW1iZXI+XG4gICAgPGM4eS10ZW5hbnQtaWQtc2V0dXBcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5UZW5hbnRJZFNldHVwXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktdGVuYW50LWlkLXNldHVwPlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLXQtOFwiXG4gICAgICAqbmdJZj1cIiEhKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGlua1wiXG4gICAgPlxuICAgICAgPGRpdiAqbmdJZj1cIiEhKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGluay5sZW5ndGg7IGVsc2Ugc2luZ2xlRXh0cmFMaW5rXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJzbWFsbCBkLWJsb2NrIG0tdC04XCJcbiAgICAgICAgICB0aXRsZT1cInt7IGxpbmsubGFiZWwgfX1cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBsaW5rIG9mICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmtcIlxuICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUV4dHJhTGluaz5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cInNtYWxsXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIFtocmVmXT1cIih1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxjOHktYWxlcnQtb3V0bGV0IHBvc2l0aW9uPVwic3RhdGljXCI+PC9jOHktYWxlcnQtb3V0bGV0PlxuICA8L21haW4+XG48L2Rpdj5cbiJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUU1RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPN0QsTUFBTSxPQUFPLGNBQWM7SUFhekI7O09BRUc7SUFDSCxZQUNTLFlBQTBCLEVBQ3pCLE9BQXVCLEVBQ3ZCLEtBQW1CLEVBQ25CLGlDQUFvRSxFQUNyRSxFQUFtQjtRQUpuQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFDckUsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFwQjVCLGdCQUFXLEdBQWUsVUFBVSxDQUFDLElBQUksQ0FBQztRQUMxQyxnQkFBVyxHQUFHLFVBQVUs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O1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQzs4R0E1SVUsY0FBYztrR0FBZCxjQUFjLGdJQ2hCM0Isb2xGQWlGQTs7MkZEakVhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsV0FBVzt1TkFVWixJQUFJO3NCQUFaLEtBQUs7Z0JBaUQ2QixPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDcmVkZW50aWFscywgVGVuYW50TG9naW5PcHRpb25UeXBlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblZpZXdzLCBTc29EYXRhLCBTc29FcnJvciB9IGZyb20gJy4vbG9naW4ubW9kZWwnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZSB9IGZyb20gJy4vY3JlZGVudGlhbHMtZnJvbS1xdWVyeS1wYXJhbXMuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVkZW50aWFsc0NvbXBvbmVudFBhcmFtcyB9IGZyb20gJy4vY3JlZGVudGlhbHMtY29tcG9uZW50LXBhcmFtcyc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1sb2dpbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGN1cnJlbnRWaWV3OiBMb2dpblZpZXdzID0gTG9naW5WaWV3cy5Ob25lO1xuICBMT0dJTl9WSUVXUyA9IExvZ2luVmlld3M7XG5cbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgY3JlZGVudGlhbHM6IElDcmVkZW50aWFscyA9IHt9O1xuICBsb2dpblZpZXdQYXJhbXM6IENyZWRlbnRpYWxzQ29tcG9uZW50UGFyYW1zIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICBkaXNwbGF5QWxlcnRzID0gZmFsc2U7XG4gIHByaXZhdGUgVE9LRU5fUEFSQU0gPSAndG9rZW4nO1xuXG4gIC8qKlxuICAgKiBKdXN0IERJLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGxvZ2luU2VydmljZTogTG9naW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlOiBDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2UsXG4gICAgcHVibGljIHVpOiBBcHBTdGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRQYXJhbUFuZENsZWFyKHRoaXMuVE9LRU5fUEFSQU0pO1xuICAgIGNvbnN0IHNzb0RhdGEgPSB0aGlzLmdldFNzb0RhdGEoKTtcbiAgICBpZiAoc3NvRGF0YSkge1xuICAgICAgdGhpcy5oYW5kbGVTc28oc3NvRGF0YSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxvZ2luU2VydmljZS5pc0ZpcnN0TG9naW4pIHtcbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgdGhpcy5sb2dpbkF1dG9tYXRpY2FsbHkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3JlZGVudGlhbHMudG9rZW4gPSB0b2tlbjtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxvZ2luU2VydmljZS5pc0ZpcnN0TG9naW4gPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHdlIGRvIG5vdCBoYXZlIGFueSBxdWVyeVBhcmFtZXRlcnMgcmVsYXRlZCB0byBjcmVkZW50aWFscyBhZnRlciBsb2dnaW5nIGluIG9yIGV2ZW4gaWYgd2Ugd2VyZSBhbHJlYWR5IGxvZ2dlZCBpbi5cbiAgICB0aGlzLmNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZS5yZW1vdmVDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcygpO1xuICB9XG5cbiAgaGFuZGxlTG9naW5UZW1wbGF0ZShldmVudDoge1xuICAgIHZpZXc6IExvZ2luVmlld3M7XG4gICAgY3JlZGVudGlhbHM/OiBJQ3JlZGVudGlhbHM7XG4gICAgbG9naW5WaWV3UGFyYW1zPzogQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICB9KSB7XG4gICAgdGhpcy5jdXJyZW50VmlldyA9IGV2ZW50LnZpZXc7XG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGV2ZW50LmNyZWRlbnRpYWxzIHx8IHt9O1xuICAgIHRoaXMubG9naW5WaWV3UGFyYW1zID0gZXZlbnQubG9naW5WaWV3UGFyYW1zIHx8IHt9O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKSBvbmtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5sb2dpblNlcnZpY2UuY2xlYW5NZXNzYWdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XG4gICAgdGhpcy5zZXRWaWV3KCk7XG4gICAgdGhpcy5sb2dpblNlcnZpY2UuY2xlYW5NZXNzYWdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2dpbkF1dG9tYXRpY2FsbHkoKSB7XG4gICAgdGhpcy5sb2dpblNlcnZpY2UuYXV0b21hdGljTG9naW5JblByb2dyZXNzJC5uZXh0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2luU2VydmljZS5sb2dpbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9naW5TZXJ2aWNlLmNsZWFyQ29va2llcygpO1xuICAgICAgY29uc3QgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID0gdGhpcy5sb2dpblNlcnZpY2UubG9naW5Nb2RlLnR5cGU7XG4gICAgICBpZiAocHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyKSB7XG4gICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlZGlyZWN0VG9PYXV0aCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMICYmXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLnByb3RvY29sICE9PSAnaHR0cHM6J1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdDdXJyZW50IGxvZ2luIG1vZGUgb25seSBzdXBwb3J0cyBIVFRQUy4nKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZS5yZXMgJiYgZS5yZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sb2dpblNlcnZpY2UuYXV0b21hdGljTG9naW5JblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmlldygpIHtcbiAgICBpZiAodGhpcy5jcmVkZW50aWFscyAmJiB0aGlzLmNyZWRlbnRpYWxzLnRva2VuKSB7XG4gICAgICB0aGlzLmhhbmRsZUxvZ2luVGVtcGxhdGUoeyB2aWV3OiBMb2dpblZpZXdzLkNoYW5nZVBhc3N3b3JkLCBjcmVkZW50aWFsczogdGhpcy5jcmVkZW50aWFscyB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5TZXJ2aWNlLnNob3dUZW5hbnRTZXR1cCgpKSB7XG4gICAgICB0aGlzLmhhbmRsZUxvZ2luVGVtcGxhdGUoeyB2aWV3OiBMb2dpblZpZXdzLlRlbmFudElkU2V0dXAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlTG9naW5UZW1wbGF0ZSh7IHZpZXc6IExvZ2luVmlld3MuQ3JlZGVudGlhbHMgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbUFuZENsZWFyKHBhcmFtTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwYXJhbVZhbHVlID0gdGhpcy5vcHRpb25zLmdldDxzdHJpbmc+KHBhcmFtTmFtZSk7XG4gICAgaWYgKHBhcmFtVmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5zZXQocGFyYW1OYW1lLCB1bmRlZmluZWQpOyAvLyBvbmx5IHVzZSBvbmNlXG4gICAgfVxuICAgIHJldHVybiBwYXJhbVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTc29EYXRhKCk6IFNzb0RhdGEgfCBTc29FcnJvciB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignY29kZScpO1xuICAgIGNvbnN0IHNlc3Npb25TdGF0ZSA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignc2Vzc2lvbl9zdGF0ZScpO1xuICAgIGlmIChjb2RlKSB7XG4gICAgICByZXR1cm4geyBzZXNzaW9uU3RhdGUsIGNvZGUgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzc29FcnJvciA9IHRoaXMuZ2V0UGFyYW1BbmRDbGVhcignZXJyb3InKTtcbiAgICBjb25zdCBzc29FcnJvckRlc2NyaXB0aW9uID0gdGhpcy5nZXRQYXJhbUFuZENsZWFyKCdlcnJvcl9kZXNjcmlwdGlvbicpO1xuICAgIGlmIChzc29FcnJvciAmJiBzc29FcnJvckRlc2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm4geyBzc29FcnJvciwgc3NvRXJyb3JEZXNjcmlwdGlvbiB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3NvKHNzb0RhdGE6IFNzb0RhdGEgfCBTc29FcnJvcikge1xuICAgIGlmICgnc3NvRXJyb3InIGluIHNzb0RhdGEpIHtcbiAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnNob3dTc29FcnJvcihcbiAgICAgICAgZGVjb2RlVVJJQ29tcG9uZW50KHNzb0RhdGEuc3NvRXJyb3JEZXNjcmlwdGlvbikucmVwbGFjZSgvXFwrL2csICclMjAnKVxuICAgICAgKTtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dpblNlcnZpY2VcbiAgICAgICAgLmxvZ2luQnlTc28oc3NvRGF0YSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5sb2dpblNlcnZpY2UubG9naW4oKSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICBpZiAoZS5yZXM/LnN0YXR1cykge1xuICAgICAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibG9hZGluZyBjYXJkIGZhZGVJblVwIGFuaW1hdGVkIGVsZXZhdGlvbi1sZ1wiXG4gICpuZ0lmPVwiY3VycmVudFZpZXcgIT09IExPR0lOX1ZJRVdTLk5vbmVcIlxuICBbbmdTd2l0Y2hdPVwiY3VycmVudFZpZXdcIlxuPlxuICA8bWFpbiBjbGFzcz1cImNhcmQtYmxvY2sgcC1iLTBcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1haW5sb2dvXCI+PC9zcGFuPlxuXG4gICAgPGM4eS1jcmVkZW50aWFsc1xuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNyZWRlbnRpYWxzXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtsb2dpblZpZXdQYXJhbXNdPVwibG9naW5WaWV3UGFyYW1zXCJcbiAgICA+PC9jOHktY3JlZGVudGlhbHM+XG4gICAgPGM4eS1yZWNvdmVyLXBhc3N3b3JkXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuUmVjb3ZlclBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktcmVjb3Zlci1wYXNzd29yZD5cbiAgICA8Yzh5LWNoYW5nZS1wYXNzd29yZFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLkNoYW5nZVBhc3N3b3JkXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LWNoYW5nZS1wYXNzd29yZD5cbiAgICA8Yzh5LXRvdHAtYXV0aFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLlRvdHBDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW3ZpZXddPVwiY3VycmVudFZpZXdcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktdG90cC1hdXRoPlxuICAgIDxjOHktdG90cC1hdXRoXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuVG90cFNldHVwXCJcbiAgICAgIChvbkNhbmNlbCk9XCJyZXNldCgpXCJcbiAgICAgIFt2aWV3XT1cImN1cnJlbnRWaWV3XCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LXRvdHAtYXV0aD5cbiAgICA8Yzh5LXNtcy1jaGFsbGVuZ2VcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5TbXNDaGFsbGVuZ2VcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktc21zLWNoYWxsZW5nZT5cblxuICAgIDxjOHktcHJvdmlkZS1waG9uZS1udW1iZXJcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5Qcm92aWRlUGhvbmVOdW1iZXJcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgKG9uQ2hhbmdlVmlldyk9XCJoYW5kbGVMb2dpblRlbXBsYXRlKCRldmVudClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktcHJvdmlkZS1waG9uZS1udW1iZXI+XG4gICAgPGM4eS10ZW5hbnQtaWQtc2V0dXBcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5UZW5hbnRJZFNldHVwXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICA+PC9jOHktdGVuYW50LWlkLXNldHVwPlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLXQtOFwiXG4gICAgICAqbmdJZj1cIiEhKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGlua1wiXG4gICAgPlxuICAgICAgPGRpdiAqbmdJZj1cIiEhKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGluay5sZW5ndGg7IGVsc2Ugc2luZ2xlRXh0cmFMaW5rXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJzbWFsbCBkLWJsb2NrIG0tdC04XCJcbiAgICAgICAgICB0aXRsZT1cInt7IGxpbmsubGFiZWwgfX1cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBsaW5rIG9mICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmtcIlxuICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUV4dHJhTGluaz5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cInNtYWxsXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIFtocmVmXT1cIih1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxjOHktYWxlcnQtb3V0bGV0IHBvc2l0aW9uPVwic3RhdGljXCI+PC9jOHktYWxlcnQtb3V0bGV0PlxuICA8L21haW4+XG48L2Rpdj5cbiJdfQ==
@@ -471,6 +471,10 @@ export class LoginService {
471
471
  : gettext('SSO login failed. Contact the administrator.');
472
472
  this.modalService.acknowledge(gettext('Login error'), body, Status.DANGER, gettext('OK'));
473
473
  }
474
+ async clearCookies() {
475
+ // clear cookies but avoid redirect on logout
476
+ return await this.cookieAuth.logout({ redirect: 'manual' });
477
+ }
474
478
  /**
475
479
  * Sets the tenant to the client and updates the credentials on the
476
480
  * auth strategy.
@@ -618,4 +622,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
618
622
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.FetchClient }, { type: i1.BasicAuth }, { type: i1.CookieAuth }, { type: i2.AppStateService }, { type: i1.UserService }, { type: i1.TenantService }, { type: i1.Realtime }, { type: i3.AlertService }, { type: i4.ApiService }, { type: i5.TenantUiService }, { type: i1.TenantLoginOptionsService }, { type: i6.TranslateService }, { type: i7.ModalService }, { type: i8.LocationStrategy, decorators: [{
619
623
  type: Optional
620
624
  }] }] });
621
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vbG9naW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsNEJBQTRCLEVBQzVCLFdBQVcsRUFLWCxRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLGFBQWEsRUFDYixXQUFXLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7QUFHaEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQStE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QU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDbkUsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs4R0FqcUJVLFlBQVk7a0hBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFEeEIsVUFBVTs7MEJBK0VOLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJhc2ljQXV0aCxcbiAgQ29va2llQXV0aCxcbiAgQmVhcmVyQXV0aEZyb21TZXNzaW9uU3RvcmFnZSxcbiAgRmV0Y2hDbGllbnQsXG4gIElBdXRoZW50aWNhdGlvbixcbiAgSUNyZWRlbnRpYWxzLFxuICBJRmV0Y2hSZXNwb25zZSxcbiAgSVRlbmFudExvZ2luT3B0aW9uLFxuICBSZWFsdGltZSxcbiAgVGVuYW50TG9naW5PcHRpb25zU2VydmljZSxcbiAgVGVuYW50U2VydmljZSxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBUZW5hbnRVaVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdGVuYW50LXVpLnNlcnZpY2UnO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBFTVBUWSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9jYXRpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBnZXQsIGlzU3RyaW5nLCBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vY29tbW9uL3N0YXR1cy5tb2RlbCc7XG5pbXBvcnQgeyBTc29EYXRhIH0gZnJvbSAnLi9sb2dpbi5tb2RlbCc7XG5cbi8qKlxuICogU2VydmljZSB0byBtYW5hZ2UgdGhlIGxvZ2luLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTG9naW5TZXJ2aWNlIHtcbiAgcmVtZW1iZXJNZSA9IGZhbHNlO1xuICBUT0tFTl9LRVkgPSAnX3RjeTgnO1xuICBURkFUT0tFTl9LRVkgPSAnVEZBVG9rZW4nO1xuICBsb2dpbk1vZGU6IElUZW5hbnRMb2dpbk9wdGlvbjtcbiAgbWFuYWdlbWVudExvZ2luTW9kZTogSVRlbmFudExvZ2luT3B0aW9uO1xuICBvYXV0aE9wdGlvbnM6IElUZW5hbnRMb2dpbk9wdGlvbjtcbiAgaXNGaXJzdExvZ2luID0gdHJ1ZTtcbiAgR1JFRU5fTUlOX0xFTkdUSF9ERUZBVUxUID0gODtcbiAgYXV0b21hdGljTG9naW5JblByb2dyZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlOm1heC1saW5lLWxlbmd0aFxuICBFUlJPUl9NRVNTQUdFUyA9IHtcbiAgICBtaW5sZW5ndGg6IGdldHRleHQoJ1Bhc3N3b3JkIG11c3QgaGF2ZSBhdCBsZWFzdCA4IGNoYXJhY3RlcnMgYW5kIG5vIG1vcmUgdGhhbiAzMi4nKSxcbiAgICBwYXNzd29yZF9taXNzbWF0Y2g6IGdldHRleHQoJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2guJyksXG4gICAgbWF4bGVuZ3RoOiBnZXR0ZXh0KCdQYXNzd29yZCBtdXN0IGhhdmUgYXQgbGVhc3QgOCBjaGFyYWN0ZXJzIGFuZCBubyBtb3JlIHRoYW4gMzIuJyksXG4gICAgcGFzc3dvcmRfc3RyZW5ndGg6IGdldHRleHQoXG4gICAgICAnWW91ciBwYXNzd29yZCBpcyBub3Qgc3Ryb25nIGVub3VnaC4gUGxlYXNlIGluY2x1ZGUgbnVtYmVycywgbG93ZXIgYW5kIHVwcGVyIGNhc2UgY2hhcmFjdGVycydcbiAgICApLFxuICAgIHJlbW90ZV9lcnJvcjogZ2V0dGV4dCgnU2VydmVyIGVycm9yIG9jY3VycmVkLicpLFxuICAgIGVtYWlsOiBnZXR0ZXh0KCdJbnZhbGlkIGVtYWlsIGFkZHJlc3MuJyksXG4gICAgcGFzc3dvcmRfY2hhbmdlOiBnZXR0ZXh0KCdZb3VyIHBhc3N3b3JkIGlzIGV4cGlyZWQuIFBsZWFzZSBzZXQgYSBuZXcgcGFzc3dvcmQuJyksXG4gICAgcGFzc3dvcmRfcmVzZXRfdG9rZW5fZXhwaXJlZDogZ2V0dGV4dChcbiAgICAgICdQYXNzd29yZCByZXNldCBsaW5rIGV4cGlyZWQuIFBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGFkZHJlc3MgdG8gcmVjZWl2ZSBhIG5ldyBvbmUuJ1xuICAgICksXG4gICAgdGZhX3Bpbl9pbnZhbGlkOiBnZXR0ZXh0KCdUaGUgY29kZSB5b3UgZW50ZXJlZCBpcyBpbnZhbGlkLiBQbGVhc2UgdHJ5IGFnYWluLicpLFxuICAgIHBhdHRlcm5fbmV3UGFzc3dvcmQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgZ2V0dGV4dChcbiAgICAgICAgJ1Bhc3N3b3JkIG11c3QgaGF2ZSBhdCBsZWFzdCA4IGNoYXJhY3RlcnMgYW5kIG5vIG1vcmUgdGhhbiAzMiBhbmQgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzIGFuZCBmb2xsb3dpbmcgc3ltYm9sczoge3sgc3ltYm9scyB9fSdcbiAgICAgICksXG4gICAgICB7IHN5bWJvbHM6ICdgfiFAIyQlXiYqKClffCstPT87OlxcJ1wiLC48Pnt9W11cXFxcLycgfVxuICAgICksXG4gICAgaW50ZXJuYXRpb25hbFBob25lTnVtYmVyOiBnZXR0ZXh0KFxuICAgICAgJ011c3QgYmUgYSB2YWxpZCBwaG9uZSBudW1iZXIgKG9ubHkgZGlnaXRzLCBzcGFjZXMsIHNsYXNoZXMgKFwiL1wiKSwgZGFzaGVzIChcIi1cIiksIGFuZCBwbHVzIChcIitcIikgYWxsb3dlZCwgZm9yIGV4YW1wbGU6ICs0OSA5IDg3NiA1NDMgMjEwKS4nXG4gICAgKSxcbiAgICBwaG9uZV9udW1iZXJfZXJyb3I6IGdldHRleHQoJ0NvdWxkIG5vdCB1cGRhdGUgcGhvbmUgbnVtYmVyLicpLFxuICAgIHBpbkFscmVhZHlTZW50OiBnZXR0ZXh0KFxuICAgICAgJ1RoZSB2ZXJpZmljYXRpb24gY29kZSB3YXMgYWxyZWFkeSBzZW50LiBGb3IgYSBuZXcgdmVyaWZpY2F0aW9uIGNvZGUsIHBsZWFzZSBjbGljayBvbiB0aGUgbGluayBhYm92ZS4nXG4gICAgKSxcbiAgICBwYXNzd29yZENvbmZpcm06IGdldHRleHQoJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2guJyksXG4gICAgdGZhRXhwaXJlZDogZ2V0dGV4dCgnVHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiB0b2tlbiBleHBpcmVkLicpXG4gIH07XG4gIC8vIHRzbGludDplbmFibGU6bWF4LWxpbmUtbGVuZ3RoXG5cbiAgcHJpdmF0ZSBTVUNDRVNTX01FU1NBR0VTID0ge1xuICAgIHBhc3N3b3JkX2NoYW5nZWQ6IGdldHRleHQoJ1Bhc3N3b3JkIGNoYW5nZWQuIFlvdSBjYW4gbm93IGxvZyBpbiB1c2luZyBuZXcgcGFzc3dvcmQuJyksXG4gICAgcGFzc3dvcmRfcmVzZXRfcmVxdWVzdGVkOiBnZXR0ZXh0KFxuICAgICAgJ1Bhc3N3b3JkIHJlc2V0IHJlcXVlc3QgaGFzIGJlZW4gc2VudC4gUGxlYXNlIGNoZWNrIHlvdXIgZW1haWwuJ1xuICAgICksXG4gICAgcmVzZW5kX3NtczogZ2V0dGV4dCgnVmVyaWZpY2F0aW9uIGNvZGUgU01TIHJlc2VudC4nKSxcbiAgICBzZW5kX3NtczogZ2V0dGV4dCgnVmVyaWZpY2F0aW9uIGNvZGUgU01TIHNlbnQuJylcbiAgfTtcblxuICBwcml2YXRlIHBhc3N3b3JkU3RyZW5ndGhTZXR0aW5nID0ge1xuICAgIGVuZm9yY2VQYXNzd29yZFN0cmVuZ3RoOiBmYWxzZSxcbiAgICBncmVlbk1pbkxlbmd0aDogdGhpcy5HUkVFTl9NSU5fTEVOR1RIX0RFRkFVTFQsXG4gICAgcGFzc3dvcmRTdHJlbmd0aFZhbGlkaXR5OiBmYWxzZVxuICB9O1xuXG4gIHByaXZhdGUgbG9jYWxob3N0UmVnRXhwID0gbmV3IFJlZ0V4cCgnbG9jYWxob3N0Jyk7XG4gIHByaXZhdGUgbG9jYWxob3N0SXBSZWdFeHAgPSBuZXcgUmVnRXhwKCcxMjcuMC4wLjEnKTtcbiAgcHJpdmF0ZSBzaG93VGVuYW50UmVnRXhwID0gbmV3IFJlZ0V4cCgnc2hvd1RlbmFudCcpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgY2xpZW50OiBGZXRjaENsaWVudCxcbiAgICBwcml2YXRlIGJhc2ljQXV0aDogQmFzaWNBdXRoLFxuICAgIHByaXZhdGUgY29va2llQXV0aDogQ29va2llQXV0aCxcbiAgICBwcml2YXRlIHVpOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudDogVGVuYW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWx0aW1lOiBSZWFsdGltZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcGk6IEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZW5hbnRVaVNlcnZpY2U6IFRlbmFudFVpU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2U6IFRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb25TdHJhdGVneVxuICApIHtcbiAgICB0aGlzLmF1dG9Mb2dvdXQoKTtcbiAgICB0aGlzLmluaXRMb2dpbk9wdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogQHJldHVybiBUaGUgdGVuYW50IG5hbWUuXG4gICAqL1xuICBnZXRUZW5hbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnRlbmFudDtcbiAgfVxuXG4gIGluaXRMb2dpbk9wdGlvbnMoKSB7XG4gICAgY29uc3QgbG9naW5PcHRpb25zID0gdGhpcy51aS5zdGF0ZS5sb2dpbk9wdGlvbnMgfHwgW107XG4gICAgdGhpcy5sb2dpbk1vZGUgPSB0aGlzLnRlbmFudFVpU2VydmljZS5nZXRQcmVmZXJyZWRMb2dpbk9wdGlvbihsb2dpbk9wdGlvbnMpO1xuICAgIHRoaXMub2F1dGhPcHRpb25zID1cbiAgICAgIHRoaXMudGVuYW50VWlTZXJ2aWNlLmdldE9hdXRoMk9wdGlvbihsb2dpbk9wdGlvbnMpIHx8ICh7fSBhcyBJVGVuYW50TG9naW5PcHRpb24pO1xuICB9XG5cbiAgcmVkaXJlY3RUb09hdXRoKCkge1xuICAgIGNvbnN0IHsgaW5pdFJlcXVlc3QsIGZsb3dDb250cm9sbGVkQnlVSSB9ID0gdGhpcy5vYXV0aE9wdGlvbnM7XG4gICAgY29uc3QgZnVsbFBhdGggPSBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufSR7d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfWA7XG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSBlbmNvZGVVUklDb21wb25lbnQoZnVsbFBhdGgpO1xuICAgIGNvbnN0IG9yaWdpblVyaVBhcmFtID0gYCR7aW5pdFJlcXVlc3QuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/J31vcmlnaW5Vcmk9JHtyZWRpcmVjdFVybH1gO1xuICAgIGNvbnN0IHVybE9iamVjdCA9IG5ldyBVUkwoaW5pdFJlcXVlc3QpO1xuXG4gICAgaWYgKGZsb3dDb250cm9sbGVkQnlVSSkge1xuICAgICAgdGhpcy5jbGllbnRcbiAgICAgICAgLmZldGNoKGAvdGVuYW50L29hdXRoJHt1cmxPYmplY3Quc2VhcmNofSR7b3JpZ2luVXJpUGFyYW19YClcbiAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlRXJyb3JTdGF0dXNDb2RlcyhyZXMpKVxuICAgICAgICAudGhlbihyZXMgPT4gcmVzLmpzb24oKSlcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiAod2luZG93LmxvY2F0aW9uLmhyZWYgPSByZXMucmVkaXJlY3RUbykpXG4gICAgICAgIC5jYXRjaChleCA9PiB0aGlzLnNob3dTc29FcnJvcihleCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke2luaXRSZXF1ZXN0fSR7b3JpZ2luVXJpUGFyYW19YDtcbiAgICB9XG4gIH1cblxuICBsb2dpbkJ5U3NvKHsgY29kZSwgc2Vzc2lvblN0YXRlIH06IFNzb0RhdGEpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBBY2NlcHQ6ICd0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sJ1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IHVybCA9IGAvdGVuYW50L29hdXRoP2NvZGU9JHtlbmNvZGVVUklDb21wb25lbnQoY29kZSl9YDtcbiAgICBpZiAoc2Vzc2lvblN0YXRlKSB7XG4gICAgICB1cmwgKz0gYCZzZXNzaW9uX3N0YXRlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNlc3Npb25TdGF0ZSl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jbGllbnRcbiAgICAgIC5mZXRjaCh1cmwsIHBhcmFtcylcbiAgICAgIC50aGVuKHJlcyA9PiB0aGlzLmhhbmRsZUVycm9yU3RhdHVzQ29kZXMocmVzKSlcbiAgICAgIC5jYXRjaChleCA9PiB7XG4gICAgICAgIHRoaXMuc2hvd1Nzb0Vycm9yKGV4KTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGF1dG9Mb2dvdXQoKSB7XG4gICAgY29uc3QgZXJyb3JQYXR0ZXJuID0gL2ludmFsaWRcXHNjcmVkZW50aWFscy4qcGluLipnZW5lcmF0ZS9pO1xuICAgIGNvbnN0IGlzVGZhRXhwaXJlZCA9IGRhdGEgPT5cbiAgICAgIGRhdGEgJiYgdHlwZW9mIGRhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgZXJyb3JQYXR0ZXJuLnRlc3QoZGF0YS5tZXNzYWdlKTtcbiAgICB0aGlzLnVpLmN1cnJlbnRVc2VyXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHUgPT5cbiAgICAgICAgICB1ID8gdGhpcy5hcGkuaG9va1Jlc3BvbnNlKCh7IHJlc3BvbnNlIH0pID0+IHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAxKSA6IEVNUFRZXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKGFwaUNhbGw6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB7IHJlc3BvbnNlIH0gPSBhcGlDYWxsO1xuICAgICAgICBsZXQgd2lsbExvZ291dCA9IGZhbHNlO1xuICAgICAgICBpZiAoaXNUZmFFeHBpcmVkKHJlc3BvbnNlLmRhdGEpKSB7XG4gICAgICAgICAgd2lsbExvZ291dCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZXNwb25zZS5qc29uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuY2xvbmUoKS5qc29uKCk7XG4gICAgICAgICAgICBpZiAoaXNUZmFFeHBpcmVkKGRhdGEpKSB7XG4gICAgICAgICAgICAgIHdpbGxMb2dvdXQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod2lsbExvZ291dCkge1xuICAgICAgICAgIHRoaXMubG9nb3V0KGZhbHNlKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYWxlcnQuZGFuZ2VyKHRoaXMuRVJST1JfTUVTU0FHRVMudGZhRXhwaXJlZCksIDUwMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG1pbmltYWwgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBhIHBhc3N3b3JkIHNob3VsZCBoYXZlIHRvIGJlIGNvbnNpZGVyZWQgYSDigJxncmVlbuKAnSBzdHJvbmcgb25lLlxuICAgKiBAcmV0dXJuIFRoZSBtaW4gbGVuZ3RoIGZvciBwYXNzd29yZCBvciBkZWZhdWx0IHZhbHVlLlxuICAgKi9cbiAgYXN5bmMgZ2V0R3JlZW5NaW5MZW5ndGgoKSB7XG4gICAgY29uc3QgeyBncmVlbk1pbkxlbmd0aCB9ID0gKGF3YWl0IHRoaXMuZ2V0QmFzaWNBdXRoTG9naW5PcHRpb24oKSkgfHwgeyBncmVlbk1pbkxlbmd0aDogbnVsbCB9O1xuICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aFNldHRpbmcuZ3JlZW5NaW5MZW5ndGggPSBncmVlbk1pbkxlbmd0aCB8fCB0aGlzLkdSRUVOX01JTl9MRU5HVEhfREVGQVVMVDtcbiAgICByZXR1cm4gdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5ncmVlbk1pbkxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcGFzc3dvcmQgc3RyZW5ndGggaXMgZW5mb3JjZWQgZm9yIHN5c3RlbVxuICAgKiBieSByZXRyaWV2aW5nIHZhbHVlIG9mIGBlbmZvcmNlU3RyZW5ndGhgIHByb3BlcnR5IGZyb20gbG9naW5PcHRpb25zIHJlc3BvbnNlXG4gICAqIEBwYXJhbSByZWZyZXNoIGJvb2xlYW4gdXNlZCB0byByZWZyZXNoIHRoZSBhcHAgc3RhdGUgd2hlcmUgcmVzdWx0IG9mIGxvZ2luT3B0aW9ucyByZXNwb25zZSBpcyBzdG9yZWQuXG4gICAqIElmIGZhbHNlLCBpdCB0YWtlcyB2YWx1ZSBmcm9tIG1lbW9yeSxcbiAgICogaWYgdHJ1ZSwgaXQgcmVmcmVzaCB0aGUgYXBwIHN0YXRlIHZhbHVlIGFuZCB0aGVuIHJldHJpdmVzIGRhdGEuXG4gICAqIEByZXR1cm4gYm9vbGVhbiB2YWx1ZSwgdHJ1ZSBpZiBlbmZvcmNlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgYXN5bmMgZ2V0RW5mb3JjZVBhc3N3b3JkU3RyZW5ndGgocmVmcmVzaD8pIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCYXNpY0F1dGhMb2dpbk9wdGlvbihyZWZyZXNoKS50aGVuKGxvZ2luT3B0aW9uID0+IHtcbiAgICAgIGNvbnN0IGVuZm9yY2VQYXNzd29yZFN0cmVuZ3RoID0gZ2V0KGxvZ2luT3B0aW9uLCAnZW5mb3JjZVN0cmVuZ3RoJyk7XG4gICAgICBpZiAoaXNTdHJpbmcoZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGgpKSB7XG4gICAgICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aFNldHRpbmcuZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGggPVxuICAgICAgICAgIGVuZm9yY2VQYXNzd29yZFN0cmVuZ3RoID09PSAndHJ1ZScgPyB0cnVlIDogZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhc3N3b3JkU3RyZW5ndGhTZXR0aW5nLmVuZm9yY2VQYXNzd29yZFN0cmVuZ3RoID0gISFlbmZvcmNlUGFzc3dvcmRTdHJlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnBhc3N3b3JkU3RyZW5ndGhTZXR0aW5nLmVuZm9yY2VQYXNzd29yZFN0cmVuZ3RoO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBwYXNzd29yZCBzdHJlbmd0aCBpcyBlbmZvcmNlZCBmb3IgcGFydGljdWxhciB0ZW5hbnRcbiAgICogYnkgcmV0cmlldmluZyB2YWx1ZSBvZiBgc3RyZW5ndGhWYWxpZGl0eWAgcHJvcGVydHkgZnJvbSBsb2dpbk9wdGlvbnMgcmVzcG9uc2VcbiAgICogQHBhcmFtIHJlZnJlc2ggYm9vbGVhbiB1c2VkIHRvIHJlZnJlc2ggdGhlIGFwcCBzdGF0ZSB3aGVyZSByZXN1bHQgb2YgbG9naW5PcHRpb25zIHJlc3BvbnNlIGlzIHN0b3JlZC5cbiAgICogSWYgZmFsc2UsIGl0IHRha2VzIHZhbHVlIGZyb20gbWVtb3J5LFxuICAgKiBpZiB0cnVlLCBpdCByZWZyZXNoIHRoZSBhcHAgc3RhdGUgdmFsdWUgYW5kIHRoZW4gcmV0cml2ZXMgZGF0YS5cbiAgICogQHJldHVybiBib29sZWFuIHZhbHVlLCB0cnVlIGlmIGVuZm9yY2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBhc3luYyBnZXRQYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHkocmVmcmVzaD8pIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCYXNpY0F1dGhMb2dpbk9wdGlvbihyZWZyZXNoKS50aGVuKGxvZ2luT3B0aW9uID0+IHtcbiAgICAgIGNvbnN0IHN0cmVuZ3RoVmFsaWRpdHkgPSBnZXQobG9naW5PcHRpb24sICdzdHJlbmd0aFZhbGlkaXR5Jyk7XG4gICAgICBpZiAoaXNTdHJpbmcoc3RyZW5ndGhWYWxpZGl0eSkpIHtcbiAgICAgICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5wYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHkgPVxuICAgICAgICAgIHN0cmVuZ3RoVmFsaWRpdHkgPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aFNldHRpbmcucGFzc3dvcmRTdHJlbmd0aFZhbGlkaXR5ID0gISFzdHJlbmd0aFZhbGlkaXR5O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucGFzc3dvcmRTdHJlbmd0aFNldHRpbmcucGFzc3dvcmRTdHJlbmd0aFZhbGlkaXR5O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGRldGVybWluZXMgaWYgZW5mb3JjZWQgc3RyZW5ndGggY2hlY2tzIHNob3VsZCBiZSBlbmFibGVkIGZvciBjdXJyZW50IHRlbmFudFxuICAgKiBiYXNlZCBvbiBwcm9wZXJ0aWVzIHJldHJpZXZlZCBmcm9tIGxvZ2luT3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0aW9ucyBvYmplY3QgY29udGFpbmluZyBzcGVjaWZpYyBvcHRpb25zOlxuICAgKiAgICAtIHtyZWZyZXNoOiB0cnVlfSAtIHJlZnJlc2hlcyB2YWx1ZXMgb2YgYXBwIHN0YXRlIGFuZCByZXR1cm5zIGZyZXNoIHZhbHVlcyBhcyByZXN1bHQgb2YgY2FsbFxuICAgKiBAcmV0dXJuIGJvb2xlYW4gdmFsdWUsIHRydWUgaWYgc3RyZW5ndGggaXMgZW5mb3JjZWQgZm9yIHRlbmFudCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgYXN5bmMgZ2V0UGFzc3dvcmRTdHJlbmd0aEVuZm9yY2VkKG9wdGlvbnM/KSB7XG4gICAgY29uc3QgcmVmcmVzaCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5yZWZyZXNoO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmdldEVuZm9yY2VQYXNzd29yZFN0cmVuZ3RoKHJlZnJlc2gpLFxuICAgICAgdGhpcy5nZXRQYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHkocmVmcmVzaClcbiAgICBdKS50aGVuKHZhbHVlcyA9PiB7XG4gICAgICBjb25zdCBbZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGgsIHBhc3N3b3JkU3RyZW5ndGhWYWxpZGl0eV0gPSB2YWx1ZXM7XG4gICAgICByZXR1cm4gZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGggfHwgcGFzc3dvcmRTdHJlbmd0aFZhbGlkaXR5O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgYmFja2VuZCBlcnJvcnMuXG4gICAqL1xuICBjbGVhbk1lc3NhZ2VzKCkge1xuICAgIHRoaXMuYWxlcnQuY2xlYXJBbGwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IHN1Y2Nlc3MgbWVzc2FnZVxuICAgKiBAcGFyYW0gc3VjY2Vzc0tleSBUaGUga2V5IG9mIHRoZSBzdWNjZXNzIG1lc3NhZ2UgYXMgdXNlZCBpbiBTVUNDRVNTX01FU1NBR0VTXG4gICAqL1xuICBhZGRTdWNjZXNzTWVzc2FnZShzdWNjZXNzS2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdWNjZXNzTWVzc2FnZSA9IHRoaXMuU1VDQ0VTU19NRVNTQUdFU1tzdWNjZXNzS2V5XTtcbiAgICBpZiAoc3VjY2Vzc01lc3NhZ2UpIHtcbiAgICAgIHRoaXMuYWxlcnQuYWRkKHtcbiAgICAgICAgdGV4dDogc3VjY2Vzc01lc3NhZ2UsXG4gICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgdGltZW91dDogMFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgc3RyYXRlZ3kuIERlZmF1bHRzIHRvIGNvb2tpZSwgaWYgYSB0b2tlblxuICAgKiBpcyBmb3VuZCBpbiBsb2NhbCBvciBzZXNzaW9uIHN0b3JhZ2Ugd2Ugc3dpdGNoIHRvIGJhc2ljIGF1dGguXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGF1dGggc3RyYXRlZ3kuXG4gICAqL1xuICBnZXRBdXRoU3RyYXRlZ3koKTogSUF1dGhlbnRpY2F0aW9uIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXV0aFN0cmF0ZWd5ID0gbmV3IEJlYXJlckF1dGhGcm9tU2Vzc2lvblN0b3JhZ2UoKTtcbiAgICAgIGNvbnNvbGUubG9nKGBVc2luZyBCZWFyZXJBdXRoRnJvbVNlc3Npb25TdG9yYWdlYCk7XG4gICAgICByZXR1cm4gYXV0aFN0cmF0ZWd5O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gICAgbGV0IGF1dGhTdHJhdGVneTogSUF1dGhlbnRpY2F0aW9uID0gdGhpcy5jb29raWVBdXRoO1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRTdG9yZWRUb2tlbigpO1xuICAgIGNvbnN0IHRmYSA9IHRoaXMuZ2V0U3RvcmVkVGZhVG9rZW4oKTtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIGF1dGhTdHJhdGVneSA9IHRoaXMuYmFzaWNBdXRoO1xuICAgICAgdGhpcy5zZXRDcmVkZW50aWFscyh7IHRva2VuLCB0ZmEgfSwgdGhpcy5iYXNpY0F1dGgpO1xuICAgIH1cbiAgICByZXR1cm4gYXV0aFN0cmF0ZWd5O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcmNlcyB0aGUgdXNlIG9mIGJhc2ljIGF1dGggYXMgc3RyYXRlZ3kgd2l0aCB0aGlzIGNyZWRlbnRpYWxzLlxuICAgKiBAcGFyYW0gY3JlZGVudGlhbHMgVGhlIGNyZWRlbnRpYWxzIHRvIHVzZS5cbiAgICovXG4gIHVzZUJhc2ljQXV0aChjcmVkZW50aWFsczogSUNyZWRlbnRpYWxzKSB7XG4gICAgdGhpcy5zZXRDcmVkZW50aWFscyhjcmVkZW50aWFscywgdGhpcy5iYXNpY0F1dGgpO1xuICAgIHJldHVybiB0aGlzLmJhc2ljQXV0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmllcyB0byBsb2dpbiBhIHVzZXIgd2l0aCB0aGUgZ2l2ZW4gY3JlZGVudGlhbHMuXG4gICAqIElmIHN1Y2Nlc3NmdWwsIHRoZSBjdXJyZW50IHRlbmFudCBhbmQgdXNlciBpcyBzZXQuIElmIG5vdCBhbiBlcnJvclxuICAgKiBpcyB0aHJvd24uIEl0IGFsc28gdmVyaWZpZXMgaWYgdGhlIHVzZXIgaXMgYWxsb3dlZCB0byBvcGVuIHRoZVxuICAgKiBjdXJyZW50IGFwcC5cbiAgICogQHBhcmFtIGF1dGggVGhlIGF1dGhlbnRpY2F0aW9uIHN0cmF0ZWd5IHVzZWQuXG4gICAqIEBwYXJhbSBjcmVkZW50aWFscyBUaGUgY3JlZGVudGlhbHMgdG8gdHJ5IHRvIGxvZ2luLlxuICAgKi9cbiAgYXN5bmMgbG9naW4oYXV0aDogSUF1dGhlbnRpY2F0aW9uID0gdGhpcy5nZXRBdXRoU3RyYXRlZ3koKSwgY3JlZGVudGlhbHM/OiBJQ3JlZGVudGlhbHMpIHtcbiAgICB0aGlzLmNsaWVudC5zZXRBdXRoKGF1dGgpO1xuXG4gICAgY29uc3QgdGVuYW50UmVzID0gYXdhaXQgdGhpcy50ZW5hbnQuY3VycmVudCh7IHdpdGhQYXJlbnQ6IHRydWUgfSk7XG4gICAgY29uc3QgdGVuYW50ID0gdGVuYW50UmVzLmRhdGE7XG5cbiAgICBpZiAoY3JlZGVudGlhbHMpIHtcbiAgICAgIGNyZWRlbnRpYWxzLnRlbmFudCA9IHRlbmFudC5uYW1lO1xuICAgIH1cblxuICAgIGlmIChhd2FpdCB0aGlzLnN3aXRjaExvZ2luTW9kZShjcmVkZW50aWFscykpIHtcbiAgICAgIGF1dGggPSB0aGlzLmNvb2tpZUF1dGg7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlclJlcyA9IGF3YWl0IHRoaXMudXNlci5jdXJyZW50KCk7XG4gICAgY29uc3QgdXNlciA9IHVzZXJSZXMuZGF0YTtcbiAgICBhd2FpdCB0aGlzLnZlcmlmeUFwcEFjY2VzcygpO1xuXG4gICAgY29uc3Qgc3VwcG9ydFVzZXJOYW1lID0gdGhpcy5nZXRTdXBwb3J0VXNlck5hbWUoY3JlZGVudGlhbHMpO1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5zZXRDcmVkZW50aWFscyhcbiAgICAgIHtcbiAgICAgICAgdGVuYW50OiB0ZW5hbnQubmFtZSxcbiAgICAgICAgdXNlcjogKHN1cHBvcnRVc2VyTmFtZSA/IGAke3N1cHBvcnRVc2VyTmFtZX0kYCA6ICcnKSArIHVzZXIudXNlck5hbWVcbiAgICAgIH0sXG4gICAgICBhdXRoXG4gICAgKTtcblxuICAgIGlmICh0b2tlbikge1xuICAgICAgdGhpcy5zdG9yZUJhc2ljQXV0aFRva2VuKHRva2VuKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmF1dGhGdWxmaWxsZWQodGVuYW50LCB1c2VyLCBzdXBwb3J0VXNlck5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIHRlbmFudCwgdXNlciBhbmQgc3VwcG9ydCB1c2VyIGluZm8gdG8gdGhlIGFwcCBzdGF0ZS5cbiAgICogQHBhcmFtIHRlbmFudCBUaGUgY3VycmVudCB0ZW5hbnQgb2JqZWN0LlxuICAgKiBAcGFyYW0gdXNlciBUaGUgY3VycmVudCB1c2VyIG9iamVjdC5cbiAgICogQHBhcmFtIHN1cHBvcnRVc2VyTmFtZSBUaGUgY3VycmVudCBzdXBwb3J0IHVzZXIgbmFtZS5cbiAgICovXG4gIGFzeW5jIGF1dGhGdWxmaWxsZWQodGVuYW50PywgdXNlcj8sIHN1cHBvcnRVc2VyTmFtZT8pIHtcbiAgICBpZiAoIXRlbmFudCkge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLnRlbmFudC5jdXJyZW50KHsgd2l0aFBhcmVudDogdHJ1ZSB9KTtcbiAgICAgIHRlbmFudCA9IGRhdGE7XG4gICAgICB0aGlzLmNsaWVudC50ZW5hbnQgPSB0ZW5hbnQubmFtZTtcbiAgICB9XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy51c2VyLmN1cnJlbnQoKTtcbiAgICAgIHVzZXIgPSBkYXRhO1xuICAgIH1cblxuICAgIGlmICghc3VwcG9ydFVzZXJOYW1lKSB7XG4gICAgICBzdXBwb3J0VXNlck5hbWUgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMudWkuc2V0VXNlcih7IHVzZXIsIHN1cHBvcnRVc2VyTmFtZSB9KTtcbiAgICB0aGlzLnVpLmN1cnJlbnRUZW5hbnQubmV4dCh0ZW5hbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN3aXRjaCB0aGUgbG9naW4gbW9kZSB0byBDb29raWVBdXRoIGlmIHRoZVxuICAgKiB1c2VyIGhhcyBjb25maWd1cmVkIHRvIHVzZSBpdCBpbiBsb2dpbk9wdGlvbnMuXG4gICAqIEBwYXJhbSBjcmVkZW50aWFscyBUaGUgY3JlZGVudGlhbHMgZm9yIHRoYXQgbG9naW5cbiAgICovXG4gIGFzeW5jIHN3aXRjaExvZ2luTW9kZShjcmVkZW50aWFscz86IElDcmVkZW50aWFscykge1xuICAgIGNvbnN0IGlzUGFzc3dvcmRHcmFudExvZ2luID0gYXdhaXQgdGhpcy5pc1Bhc3N3b3JkR3JhbnRMb2dpbihjcmVkZW50aWFscyk7XG4gICAgaWYgKGlzUGFzc3dvcmRHcmFudExvZ2luICYmIGNyZWRlbnRpYWxzKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlT2F1dGhUb2tlbihjcmVkZW50aWFscyk7XG4gICAgICBpZiAoIShyZXMgYXMgUmVzcG9uc2UpLm9rKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICAgICAgdGhyb3cgeyByZXMsIGRhdGEgfTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICB0aHJvdyBleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5jbGllbnQuc2V0QXV0aCh0aGlzLmNvb2tpZUF1dGgpO1xuICAgICAgdGhpcy5jbGVhbkxvY2FsU3RvcmFnZSgpO1xuICAgICAgdGhpcy5iYXNpY0F1dGgubG9nb3V0KCk7XG4gICAgfVxuICAgIHJldHVybiBpc1Bhc3N3b3JkR3JhbnRMb2dpbjtcbiAgfVxuXG4gIGFzeW5jIGdlbmVyYXRlT2F1dGhUb2tlbihjcmVkZW50aWFscz86IElDcmVkZW50aWFscykge1xuICAgIGlmICgoYXdhaXQgdGhpcy5pc1Bhc3N3b3JkR3JhbnRMb2dpbihjcmVkZW50aWFscykpICYmIGNyZWRlbnRpYWxzKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgZ3JhbnRfdHlwZTogJ1BBU1NXT1JEJyxcbiAgICAgICAgdXNlcm5hbWU6IGNyZWRlbnRpYWxzLnVzZXIsXG4gICAgICAgIHBhc3N3b3JkOiBjcmVkZW50aWFscy5wYXNzd29yZCxcbiAgICAgICAgdGZhX2NvZGU6IGNyZWRlbnRpYWxzLnRmYVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYXdhaXQgbmV3IEZldGNoQ2xpZW50KCkuZmV0Y2godGhpcy5nZXRVcmxGb3JPYXV0aChjcmVkZW50aWFscyksIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IHBhcmFtcy50b1N0cmluZygpLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaXNQYXNzd29yZEdyYW50TG9naW4oY3JlZGVudGlhbHM/OiBJQ3JlZGVudGlhbHMpIHtcbiAgICBsZXQgbG9naW5Nb2RlID0gdGhpcy5sb2dpbk1vZGU7XG5cbiAgICBpZiAodGhpcy5pc1N1cHBvcnRVc2VyKGNyZWRlbnRpYWxzKSkge1xuICAgICAgaWYgKCF0aGlzLm1hbmFnZW1lbnRMb2dpbk1vZGUpIHtcbiAgICAgICAgdGhpcy5tYW5hZ2VtZW50TG9naW5Nb2RlID0gYXdhaXQgdGhpcy5nZXRNYW5hZ2VtZW50TG9naW5Nb2RlKCk7XG4gICAgICB9XG4gICAgICBsb2dpbk1vZGUgPSB0aGlzLm1hbmFnZW1lbnRMb2dpbk1vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGVuYW50VWlTZXJ2aWNlLmlzT2F1dGhJbnRlcm5hbChsb2dpbk1vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHRoZSBwcm92aWRlZCBjcmVkZW50aWFscyB1c2UgYSBzdXBwb3J0IHVzZXIgdG8gbG9nIGluIG9yIG5vdC5cbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIENyZWRlbnRpYWxzIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHVzZXIgaXMgYSBzdXBwb3J0IHVzZXIuXG4gICAqL1xuICBpc1N1cHBvcnRVc2VyKGNyZWRlbnRpYWxzPzogSUNyZWRlbnRpYWxzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzICYmIGNyZWRlbnRpYWxzLnVzZXIuaW5jbHVkZXMoJyQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiB0aGUgdGVuYW50IGlucHV0IGZpZWxkIHNob3VsZCBiZSBzaG93blxuICAgKiBvciBub3QuXG4gICAqIEByZXR1cm5zIElmIHRydWUsIHNob3cgdGhlIHRlbmFudCBpbnB1dC5cbiAgICovXG4gIHNob3dUZW5hbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnVpLnN0YXRlLmxvZ2luT3B0aW9ucyB8fCB0aGlzLmlzTG9jYWwoKSB8fCB0aGlzLmlzU2hvd1RlbmFudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHRoZSB0ZW5hbnQgc2V0dXAgc2hvdWxkIGJlIHNob3duXG4gICAqIG9yIG5vdC5cbiAgICogQHJldHVybnMgSWYgdHJ1ZSwgc2hvdyB0aGUgdGVuYW50IGlucHV0LlxuICAgKi9cbiAgc2hvd1RlbmFudFNldHVwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy51aS5zdGF0ZS5sb2dpbk9wdGlvbnMgJiYgIXRoaXMuaXNMb2NhbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgdGhlIHVzZXIgb3V0XG4gICAqIEBwYXJhbSByZWxvYWQgSWYgc2V0IHRvIGZhbHNlLCB0aGUgcGFnZSB3aWxsIG5vdCByZWxvYWRcbiAgICovXG4gIGFzeW5jIGxvZ291dChyZWxvYWQgPSB0cnVlKSB7XG4gICAgbGV0IHJlc0RhdGEgPSBudWxsO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBbLCBjb29raWVSZXNdID0gYXdhaXQgdGhpcy5yZXNldCgpO1xuICAgICAgcmVzRGF0YSA9IGF3YWl0IGNvb2tpZVJlcy5qc29uKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnQucmVtb3ZlTGFzdERhbmdlcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAocmVzRGF0YSAmJiByZXNEYXRhLnVybCkge1xuICAgICAgICB0aGlzLnJlZGlyZWN0KHJlc0RhdGEudXJsKTtcbiAgICAgIH0gZWxzZSBpZiAocmVsb2FkKSB7XG4gICAgICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKHt9LCAnJywgJycsICcnKTtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIHN0b3JlZCBhdXRoLWRhdGFcbiAgICovXG4gIGFzeW5jIHJlc2V0KCkge1xuICAgIHRoaXMuY2xlYW5Mb2NhbFN0b3JhZ2UoKTtcbiAgICB0aGlzLmNsZWFuU2Vzc2lvblN0b3JhZ2UoKTtcbiAgICB0aGlzLnJlYWx0aW1lLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLnVpLmN1cnJlbnRVc2VyLm5leHQobnVsbCk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFt0aGlzLmJhc2ljQXV0aC5sb2dvdXQoKSwgdGhpcy5jb29raWVBdXRoLmxvZ291dCgpXSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgdGhlIFRGQSB0b2tlbiB0byBsb2NhbCBvciBzZXNzaW9uIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSB0ZmFUb2tlbiBUaGUgdGZhIHRva2VuIHRvIHNhdmUuXG4gICAqIEBwYXJhbSBzdG9yYWdlIFRoZSBzdG9yYWdlIHRvIHVzZSAobG9jYWwgb3Igc2Vzc2lvbikuXG4gICAqL1xuICBzYXZlVEZBVG9rZW4odGZhVG9rZW46IHN0cmluZywgc3RvcmFnZTogU3RvcmFnZSkge1xuICAgIHN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlRGQVRPS0VOX0tFWSwgdGZhVG9rZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgdGhlIG1hbmlmZXN0IC0+IG9uIDQwMSB1c2VyIGhhcyBubyBhY2Nlc3MgdG8gdGhhdCBhcHBsaWNhdGlvblxuICAgKiBhbmQgd2UgdGhyb3cgdGhlIGVycm9yIHVwIHRvIHRoZSBsb2dpbiBmb3JtLlxuICAgKi9cbiAgYXN5bmMgdmVyaWZ5QXBwQWNjZXNzKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnVpLmxvYWRNYW5pZmVzdCgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoIShleC5yZXMgJiYgZXgucmVzLnN0YXR1cyA9PT0gNDA0ICYmIHRoaXMuaXNMb2NhbCgpKSkge1xuICAgICAgICB0aHJvdyBleDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZWRpcmVjdFRvRG9tYWluKGRvbWFpbikge1xuICAgIGNvbnN0IG9yaWdpblVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIGNvbnN0IHJlZGlyZWN0VXJsID0gb3JpZ2luVXJsLmhyZWYucmVwbGFjZShvcmlnaW5VcmwuaG9zdG5hbWUsIGRvbWFpbik7XG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSByZWRpcmVjdFVybDtcbiAgfVxuXG4gIHNob3dTc29FcnJvcihlcnJvcik6IHZvaWQge1xuICAgIGNvbnN0IGJvZHkgPSBlcnJvclxuICAgICAgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgICAgJzxwPjxzdHJvbmc+VGhlIGZvbGxvd2luZyBlcnJvciB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgZXh0ZXJuYWwgYXV0aGVudGljYXRpb24gc2VydmljZTo8L3N0cm9uZz48L3A+PHA+PGNvZGU+e3sgZXJyb3IgfX08L2NvZGU+PC9wPi4nXG4gICAgICAgICAgKSxcbiAgICAgICAgICB7IGVycm9yIH1cbiAgICAgICAgKVxuICAgICAgOiBnZXR0ZXh0KCdTU08gbG9naW4gZmFpbGVkLiBDb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpO1xuXG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuYWNrbm93bGVkZ2UoZ2V0dGV4dCgnTG9naW4gZXJyb3InKSwgYm9keSwgU3RhdHVzLkRBTkdFUiwgZ2V0dGV4dCgnT0snKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdGVuYW50IHRvIHRoZSBjbGllbnQgYW5kIHVwZGF0ZXMgdGhlIGNyZWRlbnRpYWxzIG9uIHRoZVxuICAgKiBhdXRoIHN0cmF0ZWd5LlxuICAgKiBAcGFyYW0gY3JlZGVudGlhbHMgVGhlIG5hbWUgb2YgdGhlIHRlbmFudC5cbiAgICogQHBhcmFtIGF1dGhTdHJhdGVneSBUaGUgYXV0aGVudGljYXRpb24gc3RyYXRlZ3kgdXNlZC5cbiAgICogQHJldHVybiBSZXR1cm5zIHRoZSB0b2tlbiBpZiBiYXNpYyBhdXRoLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXRDcmVkZW50aWFscyhjcmVkZW50aWFsczogSUNyZWRlbnRpYWxzLCBhdXRoU3RyYXRlZ3k6IElBdXRoZW50aWNhdGlvbikge1xuICAgIGlmIChjcmVkZW50aWFscy50ZW5hbnQpIHtcbiAgICAgIHRoaXMuY2xpZW50LnRlbmFudCA9IGNyZWRlbnRpYWxzLnRlbmFudDtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgYSB0b2tlbiBpcyBhbHJlYWR5IHNldCAoY2FzZSBmb3Igc3VwcG9ydCB1c2VyIGxvZ2luKVxuICAgIC8vIGlmIHllcyAtPiB3ZSBqdXN0IG5lZWQgdG8gdXBkYXRlIHRoZSB1c2VyLCBhbmQgcmV1c2UgdGhlIHRva2VuXG4gICAgLy8gb2YgdGhlIHN1cHBvcnQgdXNlci5cbiAgICAvLyBUaGVyZWZvcmUgd2UgbmVlZCB0byBwYXNzIHVzZXIgYW5kIHRlbmFudCwgdG8gZ2V0XG4gICAgLy8ganVzdCB0aGUgc3RvcmVkIHRva2VuIGFuZCBub3RoaW5nIGVsc2UgKHNlZSBCYXNpY0F1dGgudHM6MzEpLlxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5iYXNpY0F1dGgudXBkYXRlQ3JlZGVudGlhbHMoe1xuICAgICAgdGVuYW50OiBjcmVkZW50aWFscy50ZW5hbnQsXG4gICAgICB1c2VyOiBjcmVkZW50aWFscy51c2VyXG4gICAgfSk7XG4gICAgY29uc3QgbmV3Q3JlZGVudGlhbHMgPSB7IHRva2VuLCAuLi5jcmVkZW50aWFscyB9O1xuXG4gICAgcmV0dXJuIGF1dGhTdHJhdGVneS51cGRhdGVDcmVkZW50aWFscyhuZXdDcmVkZW50aWFscyk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgdGhlIGN1cnJlbnQgdXNlciBpcyBhIGRldmVsb3BlciBvciBub3QuXG4gICAqIFJ1bm5pbmcgb24gbG9jYWxob3N0IG1lYW5zIGRldmVsb3BtZW50IG1vZGUuXG4gICAqL1xuICBwcml2YXRlIGlzTG9jYWwoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaG9zdG5hbWUgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG4gICAgcmV0dXJuIHRoaXMubG9jYWxob3N0SXBSZWdFeHAudGVzdChob3N0bmFtZSkgfHwgdGhpcy5sb2NhbGhvc3RSZWdFeHAudGVzdChob3N0bmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgdG9rZW4gdG8gbG9jYWwgb3Igc2Vzc2lvbiBzdG9yYWdlLlxuICAgKiBAcGFyYW0gdG9rZW4gVGhlIHRva2VuIHRvIHNhdmUuXG4gICAqIEBwYXJhbSBzdG9yYWdlIFRoZSBzdG9yYWdlIHRvIHVzZSAobG9jYWwgb3Igc2Vzc2lvbikuXG4gICAqL1xuICBwcml2YXRlIHNhdmVUb2tlbih0b2tlbjogc3RyaW5nLCBzdG9yYWdlOiBTdG9yYWdlKSB7XG4gICAgc3RvcmFnZS5zZXRJdGVtKHRoaXMuVE9LRU5fS0VZLCB0b2tlbik7XG4gIH1cblxuICBwcml2YXRlIHN0b3JlQmFzaWNBdXRoVG9rZW4odG9rZW46IHN0cmluZykge1xuICAgIHRoaXMuc2F2ZVRva2VuKHRva2VuLCBzZXNzaW9uU3RvcmFnZSk7XG4gICAgaWYgKHRoaXMucmVtZW1iZXJNZSkge1xuICAgICAgdGhpcy5zYXZlVG9rZW4odG9rZW4sIGxvY2FsU3RvcmFnZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbkxvY2FsU3RvcmFnZSgpIHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRPS0VOX0tFWSk7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5URkFUT0tFTl9LRVkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblNlc3Npb25TdG9yYWdlKCkge1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5UT0tFTl9LRVkpO1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5URkFUT0tFTl9LRVkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Nob3dUZW5hbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1RlbmFudFJlZ0V4cC50ZXN0KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3QodXJsOiBzdHJpbmcpIHtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QmFzaWNBdXRoTG9naW5PcHRpb24ocmVmcmVzaD8pOiBQcm9taXNlPElUZW5hbnRMb2dpbk9wdGlvbj4ge1xuICAgIGlmIChyZWZyZXNoKSB7XG4gICAgICBhd2FpdCB0aGlzLnVpLnJlZnJlc2hMb2dpbk9wdGlvbnMoKTtcbiAgICB9XG4gICAgY29uc3QgbG9naW5PcHRpb25zID0gdGhpcy51aS5zdGF0ZS5sb2dpbk9wdGlvbnMgfHwgW107XG4gICAgY29uc3QgYmFzaWNBdXRoTG9naW5PcHRpb24gPSBsb2dpbk9wdGlvbnMuZmluZCgoeyB0eXBlIH0pID0+IHR5cGUgPT09ICdCQVNJQycpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoYmFzaWNBdXRoTG9naW5PcHRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgc3VwcG9ydCB1c2VyIG5hbWUgZnJvbSBjcmVkZW50aWFscy5cbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIENyZWRlbnRpYWxzIG9iamVjdCAoZGVmYXVsdHMgdG8gdGhlIHN0b3JlZCBvbmUpLlxuICAgKiBAcmV0dXJucyBTdXBwb3J0IHVzZXIgbmFtZS5cbiAgICovXG4gIHByaXZhdGUgZ2V0U3VwcG9ydFVzZXJOYW1lKGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHMgPSB0aGlzLmdldFN0b3JlZENyZWRlbnRpYWxzKCkpOiBzdHJpbmcge1xuICAgIGlmICghY3JlZGVudGlhbHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzdXBwb3J0VXNlck5hbWUgPSBjcmVkZW50aWFscy51c2VyLm1hdGNoKC9eKC4rXFwvKT8oKC4rKVxcJCk/KC4rKT8kLylbM107XG4gICAgcmV0dXJuIHN1cHBvcnRVc2VyTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGNyZWRlbnRpYWxzIG9iamVjdCBmcm9tIHRoZSBzdG9yZWQgdG9rZW4uXG4gICAqIEByZXR1cm5zIENyZWRlbnRpYWxzIG9iamVjdC5cbiAgICovXG4gIHByaXZhdGUgZ2V0U3RvcmVkQ3JlZGVudGlhbHMoKTogSUNyZWRlbnRpYWxzIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0U3RvcmVkVG9rZW4oKTtcbiAgICBpZiAoIXRva2VuKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGVjb2RlVG9rZW4odG9rZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgc3RvcmVkIHRva2VuIGZyb20gbG9jYWwgc3RvcmFnZSBvciBzZXNzaW9uIHN0b3JhZ2UuXG4gICAqIEByZXR1cm5zIFN0b3JlZCB0b2tlbi5cbiAgICovXG4gIHByaXZhdGUgZ2V0U3RvcmVkVG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5UT0tFTl9LRVkpIHx8IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5UT0tFTl9LRVkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgc3RvcmVkIFRGQSB0b2tlbiBmcm9tIGxvY2FsIHN0b3JhZ2Ugb3Igc2Vzc2lvbiBzdG9yYWdlLlxuICAgKiBAcmV0dXJucyBTdG9yZWQgVEZBIHRva2VuLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdG9yZWRUZmFUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRGQVRPS0VOX0tFWSkgfHwgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRGQVRPS0VOX0tFWSk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyB0b2tlbiB0byBjcmVkZW50aWFscyBvYmplY3QuXG4gICAqIEBwYXJhbSB0b2tlbiBUb2tlbiB0byBkZWNvZGUuXG4gICAqIEByZXR1cm5zIENyZWRlbnRpYWxzIG9iamVjdC5cbiAgICovXG4gIHByaXZhdGUgZGVjb2RlVG9rZW4odG9rZW46IHN0cmluZyk6IElDcmVkZW50aWFscyB7XG4gICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUod2luZG93LmF0b2IodG9rZW4pKSk7XG4gICAgY29uc3Qgc3BsaXQgPSBkZWNvZGVkLm1hdGNoKC8oKFteL10qKVxcLyk/KFteLzpdKyk6KC4rKS8pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRlbmFudDogc3BsaXRbMl0sXG4gICAgICB1c2VyOiBzcGxpdFszXSxcbiAgICAgIHBhc3N3b3JkOiBzcGxpdFs0XVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFVybEZvck9hdXRoKGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHMpIHtcbiAgICBpZiAoaXNFbXB0eShjcmVkZW50aWFscy50ZW5hbnQpICYmIHRoaXMubG9naW5Nb2RlLmluaXRSZXF1ZXN0KSB7XG4gICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHRoaXMubG9naW5Nb2RlLmluaXRSZXF1ZXN0LnNwbGl0KCc/JykucG9wKCkpO1xuICAgICAgY3JlZGVudGlhbHMudGVuYW50ID0gdXJsUGFyYW1zLmdldCgndGVuYW50X2lkJyk7XG4gICAgfVxuICAgIHJldHVybiAhaXNFbXB0eShjcmVkZW50aWFscy50ZW5hbnQpXG4gICAgICA/IGB0ZW5hbnQvb2F1dGg/dGVuYW50X2lkPSR7Y3JlZGVudGlhbHMudGVuYW50fWBcbiAgICAgIDogYHRlbmFudC9vYXV0aGA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE1hbmFnZW1lbnRMb2dpbk1vZGUoKSB7XG4gICAgY29uc3QgbWFuYWdlbWVudExvZ2luT3B0aW9ucyA9IChhd2FpdCB0aGlzLnRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UubGlzdEZvck1hbmFnZW1lbnQoKSkuZGF0YTtcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRVaVNlcnZpY2UuZ2V0UHJlZmVycmVkTG9naW5PcHRpb24obWFuYWdlbWVudExvZ2luT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZUVycm9yU3RhdHVzQ29kZXMocmVzcG9uc2U6IElGZXRjaFJlc3BvbnNlKTogUHJvbWlzZTxJRmV0Y2hSZXNwb25zZT4ge1xuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPj0gNDAwKSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgY29uc3QgZXJyb3IgPSBkYXRhLm1lc3NhZ2UgfHwgZGF0YS5lcnJvcl9kZXNjcmlwdGlvbiB8fCBkYXRhLmVycm9yO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxufVxuIl19
625
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vbG9naW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsNEJBQTRCLEVBQzVCLFdBQVcsRUFLWCxRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLGFBQWEsRUFDYixXQUFXLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7QUFHaEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQStE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QixDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVPLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxRQUF3QjtRQUMzRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNuRSxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzhHQXRxQlUsWUFBWTtrSEFBWixZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixVQUFVOzswQkErRU4sUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmFzaWNBdXRoLFxuICBDb29raWVBdXRoLFxuICBCZWFyZXJBdXRoRnJvbVNlc3Npb25TdG9yYWdlLFxuICBGZXRjaENsaWVudCxcbiAgSUF1dGhlbnRpY2F0aW9uLFxuICBJQ3JlZGVudGlhbHMsXG4gIElGZXRjaFJlc3BvbnNlLFxuICBJVGVuYW50TG9naW5PcHRpb24sXG4gIFJlYWx0aW1lLFxuICBUZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLFxuICBUZW5hbnRTZXJ2aWNlLFxuICBVc2VyU2VydmljZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuL2dldHRleHQnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXBpJztcbmltcG9ydCB7IFRlbmFudFVpU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi90ZW5hbnQtdWkuc2VydmljZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGdldCwgaXNTdHJpbmcsIGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vbW9kYWwvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuLi9jb21tb24vc3RhdHVzLm1vZGVsJztcbmltcG9ydCB7IFNzb0RhdGEgfSBmcm9tICcuL2xvZ2luLm1vZGVsJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRvIG1hbmFnZSB0aGUgbG9naW4uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb2dpblNlcnZpY2Uge1xuICByZW1lbWJlck1lID0gZmFsc2U7XG4gIFRPS0VOX0tFWSA9ICdfdGN5OCc7XG4gIFRGQVRPS0VOX0tFWSA9ICdURkFUb2tlbic7XG4gIGxvZ2luTW9kZTogSVRlbmFudExvZ2luT3B0aW9uO1xuICBtYW5hZ2VtZW50TG9naW5Nb2RlOiBJVGVuYW50TG9naW5PcHRpb247XG4gIG9hdXRoT3B0aW9uczogSVRlbmFudExvZ2luT3B0aW9uO1xuICBpc0ZpcnN0TG9naW4gPSB0cnVlO1xuICBHUkVFTl9NSU5fTEVOR1RIX0RFRkFVTFQgPSA4O1xuICBhdXRvbWF0aWNMb2dpbkluUHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgLy8gdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoXG4gIEVSUk9SX01FU1NBR0VTID0ge1xuICAgIG1pbmxlbmd0aDogZ2V0dGV4dCgnUGFzc3dvcmQgbXVzdCBoYXZlIGF0IGxlYXN0IDggY2hhcmFjdGVycyBhbmQgbm8gbW9yZSB0aGFuIDMyLicpLFxuICAgIHBhc3N3b3JkX21pc3NtYXRjaDogZ2V0dGV4dCgnUGFzc3dvcmRzIGRvIG5vdCBtYXRjaC4nKSxcbiAgICBtYXhsZW5ndGg6IGdldHRleHQoJ1Bhc3N3b3JkIG11c3QgaGF2ZSBhdCBsZWFzdCA4IGNoYXJhY3RlcnMgYW5kIG5vIG1vcmUgdGhhbiAzMi4nKSxcbiAgICBwYXNzd29yZF9zdHJlbmd0aDogZ2V0dGV4dChcbiAgICAgICdZb3VyIHBhc3N3b3JkIGlzIG5vdCBzdHJvbmcgZW5vdWdoLiBQbGVhc2UgaW5jbHVkZSBudW1iZXJzLCBsb3dlciBhbmQgdXBwZXIgY2FzZSBjaGFyYWN0ZXJzJ1xuICAgICksXG4gICAgcmVtb3RlX2Vycm9yOiBnZXR0ZXh0KCdTZXJ2ZXIgZXJyb3Igb2NjdXJyZWQuJyksXG4gICAgZW1haWw6IGdldHRleHQoJ0ludmFsaWQgZW1haWwgYWRkcmVzcy4nKSxcbiAgICBwYXNzd29yZF9jaGFuZ2U6IGdldHRleHQoJ1lvdXIgcGFzc3dvcmQgaXMgZXhwaXJlZC4gUGxlYXNlIHNldCBhIG5ldyBwYXNzd29yZC4nKSxcbiAgICBwYXNzd29yZF9yZXNldF90b2tlbl9leHBpcmVkOiBnZXR0ZXh0KFxuICAgICAgJ1Bhc3N3b3JkIHJlc2V0IGxpbmsgZXhwaXJlZC4gUGxlYXNlIGVudGVyIHlvdXIgZW1haWwgYWRkcmVzcyB0byByZWNlaXZlIGEgbmV3IG9uZS4nXG4gICAgKSxcbiAgICB0ZmFfcGluX2ludmFsaWQ6IGdldHRleHQoJ1RoZSBjb2RlIHlvdSBlbnRlcmVkIGlzIGludmFsaWQuIFBsZWFzZSB0cnkgYWdhaW4uJyksXG4gICAgcGF0dGVybl9uZXdQYXNzd29yZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICBnZXR0ZXh0KFxuICAgICAgICAnUGFzc3dvcmQgbXVzdCBoYXZlIGF0IGxlYXN0IDggY2hhcmFjdGVycyBhbmQgbm8gbW9yZSB0aGFuIDMyIGFuZCBjYW4gb25seSBjb250YWluIGxldHRlcnMsIG51bWJlcnMgYW5kIGZvbGxvd2luZyBzeW1ib2xzOiB7eyBzeW1ib2xzIH19J1xuICAgICAgKSxcbiAgICAgIHsgc3ltYm9sczogJ2B+IUAjJCVeJiooKV98Ky09Pzs6XFwnXCIsLjw+e31bXVxcXFwvJyB9XG4gICAgKSxcbiAgICBpbnRlcm5hdGlvbmFsUGhvbmVOdW1iZXI6IGdldHRleHQoXG4gICAgICAnTXVzdCBiZSBhIHZhbGlkIHBob25lIG51bWJlciAob25seSBkaWdpdHMsIHNwYWNlcywgc2xhc2hlcyAoXCIvXCIpLCBkYXNoZXMgKFwiLVwiKSwgYW5kIHBsdXMgKFwiK1wiKSBhbGxvd2VkLCBmb3IgZXhhbXBsZTogKzQ5IDkgODc2IDU0MyAyMTApLidcbiAgICApLFxuICAgIHBob25lX251bWJlcl9lcnJvcjogZ2V0dGV4dCgnQ291bGQgbm90IHVwZGF0ZSBwaG9uZSBudW1iZXIuJyksXG4gICAgcGluQWxyZWFkeVNlbnQ6IGdldHRleHQoXG4gICAgICAnVGhlIHZlcmlmaWNhdGlvbiBjb2RlIHdhcyBhbHJlYWR5IHNlbnQuIEZvciBhIG5ldyB2ZXJpZmljYXRpb24gY29kZSwgcGxlYXNlIGNsaWNrIG9uIHRoZSBsaW5rIGFib3ZlLidcbiAgICApLFxuICAgIHBhc3N3b3JkQ29uZmlybTogZ2V0dGV4dCgnUGFzc3dvcmRzIGRvIG5vdCBtYXRjaC4nKSxcbiAgICB0ZmFFeHBpcmVkOiBnZXR0ZXh0KCdUd28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uIHRva2VuIGV4cGlyZWQuJylcbiAgfTtcbiAgLy8gdHNsaW50OmVuYWJsZTptYXgtbGluZS1sZW5ndGhcblxuICBwcml2YXRlIFNVQ0NFU1NfTUVTU0FHRVMgPSB7XG4gICAgcGFzc3dvcmRfY2hhbmdlZDogZ2V0dGV4dCgnUGFzc3dvcmQgY2hhbmdlZC4gWW91IGNhbiBub3cgbG9nIGluIHVzaW5nIG5ldyBwYXNzd29yZC4nKSxcbiAgICBwYXNzd29yZF9yZXNldF9yZXF1ZXN0ZWQ6IGdldHRleHQoXG4gICAgICAnUGFzc3dvcmQgcmVzZXQgcmVxdWVzdCBoYXMgYmVlbiBzZW50LiBQbGVhc2UgY2hlY2sgeW91ciBlbWFpbC4nXG4gICAgKSxcbiAgICByZXNlbmRfc21zOiBnZXR0ZXh0KCdWZXJpZmljYXRpb24gY29kZSBTTVMgcmVzZW50LicpLFxuICAgIHNlbmRfc21zOiBnZXR0ZXh0KCdWZXJpZmljYXRpb24gY29kZSBTTVMgc2VudC4nKVxuICB9O1xuXG4gIHByaXZhdGUgcGFzc3dvcmRTdHJlbmd0aFNldHRpbmcgPSB7XG4gICAgZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGg6IGZhbHNlLFxuICAgIGdyZWVuTWluTGVuZ3RoOiB0aGlzLkdSRUVOX01JTl9MRU5HVEhfREVGQVVMVCxcbiAgICBwYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHk6IGZhbHNlXG4gIH07XG5cbiAgcHJpdmF0ZSBsb2NhbGhvc3RSZWdFeHAgPSBuZXcgUmVnRXhwKCdsb2NhbGhvc3QnKTtcbiAgcHJpdmF0ZSBsb2NhbGhvc3RJcFJlZ0V4cCA9IG5ldyBSZWdFeHAoJzEyNy4wLjAuMScpO1xuICBwcml2YXRlIHNob3dUZW5hbnRSZWdFeHAgPSBuZXcgUmVnRXhwKCdzaG93VGVuYW50Jyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBjbGllbnQ6IEZldGNoQ2xpZW50LFxuICAgIHByaXZhdGUgYmFzaWNBdXRoOiBCYXNpY0F1dGgsXG4gICAgcHJpdmF0ZSBjb29raWVBdXRoOiBDb29raWVBdXRoLFxuICAgIHByaXZhdGUgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXI6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVuYW50OiBUZW5hbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhbHRpbWU6IFJlYWx0aW1lLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGFwaTogQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudFVpU2VydmljZTogVGVuYW50VWlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVuYW50TG9naW5PcHRpb25zU2VydmljZTogVGVuYW50TG9naW5PcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvblN0cmF0ZWd5XG4gICkge1xuICAgIHRoaXMuYXV0b0xvZ291dCgpO1xuICAgIHRoaXMuaW5pdExvZ2luT3B0aW9ucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdGVuYW50LlxuICAgKiBAcmV0dXJuIFRoZSB0ZW5hbnQgbmFtZS5cbiAgICovXG4gIGdldFRlbmFudCgpIHtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQudGVuYW50O1xuICB9XG5cbiAgaW5pdExvZ2luT3B0aW9ucygpIHtcbiAgICBjb25zdCBsb2dpbk9wdGlvbnMgPSB0aGlzLnVpLnN0YXRlLmxvZ2luT3B0aW9ucyB8fCBbXTtcbiAgICB0aGlzLmxvZ2luTW9kZSA9IHRoaXMudGVuYW50VWlTZXJ2aWNlLmdldFByZWZlcnJlZExvZ2luT3B0aW9uKGxvZ2luT3B0aW9ucyk7XG4gICAgdGhpcy5vYXV0aE9wdGlvbnMgPVxuICAgICAgdGhpcy50ZW5hbnRVaVNlcnZpY2UuZ2V0T2F1dGgyT3B0aW9uKGxvZ2luT3B0aW9ucykgfHwgKHt9IGFzIElUZW5hbnRMb2dpbk9wdGlvbik7XG4gIH1cblxuICByZWRpcmVjdFRvT2F1dGgoKSB7XG4gICAgY29uc3QgeyBpbml0UmVxdWVzdCwgZmxvd0NvbnRyb2xsZWRCeVVJIH0gPSB0aGlzLm9hdXRoT3B0aW9ucztcbiAgICBjb25zdCBmdWxsUGF0aCA9IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59JHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9YDtcbiAgICBjb25zdCByZWRpcmVjdFVybCA9IGVuY29kZVVSSUNvbXBvbmVudChmdWxsUGF0aCk7XG4gICAgY29uc3Qgb3JpZ2luVXJpUGFyYW0gPSBgJHtpbml0UmVxdWVzdC5pbmNsdWRlcygnPycpID8gJyYnIDogJz8nfW9yaWdpblVyaT0ke3JlZGlyZWN0VXJsfWA7XG4gICAgY29uc3QgdXJsT2JqZWN0ID0gbmV3IFVSTChpbml0UmVxdWVzdCk7XG5cbiAgICBpZiAoZmxvd0NvbnRyb2xsZWRCeVVJKSB7XG4gICAgICB0aGlzLmNsaWVudFxuICAgICAgICAuZmV0Y2goYC90ZW5hbnQvb2F1dGgke3VybE9iamVjdC5zZWFyY2h9JHtvcmlnaW5VcmlQYXJhbX1gKVxuICAgICAgICAudGhlbihyZXMgPT4gdGhpcy5oYW5kbGVFcnJvclN0YXR1c0NvZGVzKHJlcykpXG4gICAgICAgIC50aGVuKHJlcyA9PiByZXMuanNvbigpKVxuICAgICAgICAudGhlbigocmVzOiBhbnkpID0+ICh3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlcy5yZWRpcmVjdFRvKSlcbiAgICAgICAgLmNhdGNoKGV4ID0+IHRoaXMuc2hvd1Nzb0Vycm9yKGV4KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7aW5pdFJlcXVlc3R9JHtvcmlnaW5VcmlQYXJhbX1gO1xuICAgIH1cbiAgfVxuXG4gIGxvZ2luQnlTc28oeyBjb2RlLCBzZXNzaW9uU3RhdGUgfTogU3NvRGF0YSkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEFjY2VwdDogJ3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwnXG4gICAgICB9XG4gICAgfTtcbiAgICBsZXQgdXJsID0gYC90ZW5hbnQvb2F1dGg/Y29kZT0ke2VuY29kZVVSSUNvbXBvbmVudChjb2RlKX1gO1xuICAgIGlmIChzZXNzaW9uU3RhdGUpIHtcbiAgICAgIHVybCArPSBgJnNlc3Npb25fc3RhdGU9JHtlbmNvZGVVUklDb21wb25lbnQoc2Vzc2lvblN0YXRlKX1gO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNsaWVudFxuICAgICAgLmZldGNoKHVybCwgcGFyYW1zKVxuICAgICAgLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlRXJyb3JTdGF0dXNDb2RlcyhyZXMpKVxuICAgICAgLmNhdGNoKGV4ID0+IHtcbiAgICAgICAgdGhpcy5zaG93U3NvRXJyb3IoZXgpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYXV0b0xvZ291dCgpIHtcbiAgICBjb25zdCBlcnJvclBhdHRlcm4gPSAvaW52YWxpZFxcc2NyZWRlbnRpYWxzLipwaW4uKmdlbmVyYXRlL2k7XG4gICAgY29uc3QgaXNUZmFFeHBpcmVkID0gZGF0YSA9PlxuICAgICAgZGF0YSAmJiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJyAmJiBlcnJvclBhdHRlcm4udGVzdChkYXRhLm1lc3NhZ2UpO1xuICAgIHRoaXMudWkuY3VycmVudFVzZXJcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAodSA9PlxuICAgICAgICAgIHUgPyB0aGlzLmFwaS5ob29rUmVzcG9uc2UoKHsgcmVzcG9uc2UgfSkgPT4gcmVzcG9uc2Uuc3RhdHVzID09PSA0MDEpIDogRU1QVFlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoYXBpQ2FsbDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcmVzcG9uc2UgfSA9IGFwaUNhbGw7XG4gICAgICAgIGxldCB3aWxsTG9nb3V0ID0gZmFsc2U7XG4gICAgICAgIGlmIChpc1RmYUV4cGlyZWQocmVzcG9uc2UuZGF0YSkpIHtcbiAgICAgICAgICB3aWxsTG9nb3V0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlLmpzb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5jbG9uZSgpLmpzb24oKTtcbiAgICAgICAgICAgIGlmIChpc1RmYUV4cGlyZWQoZGF0YSkpIHtcbiAgICAgICAgICAgICAgd2lsbExvZ291dCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3aWxsTG9nb3V0KSB7XG4gICAgICAgICAgdGhpcy5sb2dvdXQoZmFsc2UpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hbGVydC5kYW5nZXIodGhpcy5FUlJPUl9NRVNTQUdFUy50ZmFFeHBpcmVkKSwgNTAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbWluaW1hbCBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IGEgcGFzc3dvcmQgc2hvdWxkIGhhdmUgdG8gYmUgY29uc2lkZXJlZCBhIOKAnGdyZWVu4oCdIHN0cm9uZyBvbmUuXG4gICAqIEByZXR1cm4gVGhlIG1pbiBsZW5ndGggZm9yIHBhc3N3b3JkIG9yIGRlZmF1bHQgdmFsdWUuXG4gICAqL1xuICBhc3luYyBnZXRHcmVlbk1pbkxlbmd0aCgpIHtcbiAgICBjb25zdCB7IGdyZWVuTWluTGVuZ3RoIH0gPSAoYXdhaXQgdGhpcy5nZXRCYXNpY0F1dGhMb2dpbk9wdGlvbigpKSB8fCB7IGdyZWVuTWluTGVuZ3RoOiBudWxsIH07XG4gICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5ncmVlbk1pbkxlbmd0aCA9IGdyZWVuTWluTGVuZ3RoIHx8IHRoaXMuR1JFRU5fTUlOX0xFTkdUSF9ERUZBVUxUO1xuICAgIHJldHVybiB0aGlzLnBhc3N3b3JkU3RyZW5ndGhTZXR0aW5nLmdyZWVuTWluTGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBwYXNzd29yZCBzdHJlbmd0aCBpcyBlbmZvcmNlZCBmb3Igc3lzdGVtXG4gICAqIGJ5IHJldHJpZXZpbmcgdmFsdWUgb2YgYGVuZm9yY2VTdHJlbmd0aGAgcHJvcGVydHkgZnJvbSBsb2dpbk9wdGlvbnMgcmVzcG9uc2VcbiAgICogQHBhcmFtIHJlZnJlc2ggYm9vbGVhbiB1c2VkIHRvIHJlZnJlc2ggdGhlIGFwcCBzdGF0ZSB3aGVyZSByZXN1bHQgb2YgbG9naW5PcHRpb25zIHJlc3BvbnNlIGlzIHN0b3JlZC5cbiAgICogSWYgZmFsc2UsIGl0IHRha2VzIHZhbHVlIGZyb20gbWVtb3J5LFxuICAgKiBpZiB0cnVlLCBpdCByZWZyZXNoIHRoZSBhcHAgc3RhdGUgdmFsdWUgYW5kIHRoZW4gcmV0cml2ZXMgZGF0YS5cbiAgICogQHJldHVybiBib29sZWFuIHZhbHVlLCB0cnVlIGlmIGVuZm9yY2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBhc3luYyBnZXRFbmZvcmNlUGFzc3dvcmRTdHJlbmd0aChyZWZyZXNoPykge1xuICAgIHJldHVybiB0aGlzLmdldEJhc2ljQXV0aExvZ2luT3B0aW9uKHJlZnJlc2gpLnRoZW4obG9naW5PcHRpb24gPT4ge1xuICAgICAgY29uc3QgZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGggPSBnZXQobG9naW5PcHRpb24sICdlbmZvcmNlU3RyZW5ndGgnKTtcbiAgICAgIGlmIChpc1N0cmluZyhlbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCkpIHtcbiAgICAgICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5lbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCA9XG4gICAgICAgICAgZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGggPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aFNldHRpbmcuZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGggPSAhIWVuZm9yY2VQYXNzd29yZFN0cmVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucGFzc3dvcmRTdHJlbmd0aFNldHRpbmcuZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGg7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHBhc3N3b3JkIHN0cmVuZ3RoIGlzIGVuZm9yY2VkIGZvciBwYXJ0aWN1bGFyIHRlbmFudFxuICAgKiBieSByZXRyaWV2aW5nIHZhbHVlIG9mIGBzdHJlbmd0aFZhbGlkaXR5YCBwcm9wZXJ0eSBmcm9tIGxvZ2luT3B0aW9ucyByZXNwb25zZVxuICAgKiBAcGFyYW0gcmVmcmVzaCBib29sZWFuIHVzZWQgdG8gcmVmcmVzaCB0aGUgYXBwIHN0YXRlIHdoZXJlIHJlc3VsdCBvZiBsb2dpbk9wdGlvbnMgcmVzcG9uc2UgaXMgc3RvcmVkLlxuICAgKiBJZiBmYWxzZSwgaXQgdGFrZXMgdmFsdWUgZnJvbSBtZW1vcnksXG4gICAqIGlmIHRydWUsIGl0IHJlZnJlc2ggdGhlIGFwcCBzdGF0ZSB2YWx1ZSBhbmQgdGhlbiByZXRyaXZlcyBkYXRhLlxuICAgKiBAcmV0dXJuIGJvb2xlYW4gdmFsdWUsIHRydWUgaWYgZW5mb3JjZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGFzeW5jIGdldFBhc3N3b3JkU3RyZW5ndGhWYWxpZGl0eShyZWZyZXNoPykge1xuICAgIHJldHVybiB0aGlzLmdldEJhc2ljQXV0aExvZ2luT3B0aW9uKHJlZnJlc2gpLnRoZW4obG9naW5PcHRpb24gPT4ge1xuICAgICAgY29uc3Qgc3RyZW5ndGhWYWxpZGl0eSA9IGdldChsb2dpbk9wdGlvbiwgJ3N0cmVuZ3RoVmFsaWRpdHknKTtcbiAgICAgIGlmIChpc1N0cmluZyhzdHJlbmd0aFZhbGlkaXR5KSkge1xuICAgICAgICB0aGlzLnBhc3N3b3JkU3RyZW5ndGhTZXR0aW5nLnBhc3N3b3JkU3RyZW5ndGhWYWxpZGl0eSA9XG4gICAgICAgICAgc3RyZW5ndGhWYWxpZGl0eSA9PT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5wYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHkgPSAhIXN0cmVuZ3RoVmFsaWRpdHk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5wYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBlbmZvcmNlZCBzdHJlbmd0aCBjaGVja3Mgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIGN1cnJlbnQgdGVuYW50XG4gICAqIGJhc2VkIG9uIHByb3BlcnRpZXMgcmV0cmlldmVkIGZyb20gbG9naW5PcHRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zIG9iamVjdCBjb250YWluaW5nIHNwZWNpZmljIG9wdGlvbnM6XG4gICAqICAgIC0ge3JlZnJlc2g6IHRydWV9IC0gcmVmcmVzaGVzIHZhbHVlcyBvZiBhcHAgc3RhdGUgYW5kIHJldHVybnMgZnJlc2ggdmFsdWVzIGFzIHJlc3VsdCBvZiBjYWxsXG4gICAqIEByZXR1cm4gYm9vbGVhbiB2YWx1ZSwgdHJ1ZSBpZiBzdHJlbmd0aCBpcyBlbmZvcmNlZCBmb3IgdGVuYW50LCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBhc3luYyBnZXRQYXNzd29yZFN0cmVuZ3RoRW5mb3JjZWQob3B0aW9ucz8pIHtcbiAgICBjb25zdCByZWZyZXNoID0gb3B0aW9ucyAmJiBvcHRpb25zLnJlZnJlc2g7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuZ2V0RW5mb3JjZVBhc3N3b3JkU3RyZW5ndGgocmVmcmVzaCksXG4gICAgICB0aGlzLmdldFBhc3N3b3JkU3RyZW5ndGhWYWxpZGl0eShyZWZyZXNoKVxuICAgIF0pLnRoZW4odmFsdWVzID0+IHtcbiAgICAgIGNvbnN0IFtlbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCwgcGFzc3dvcmRTdHJlbmd0aFZhbGlkaXR5XSA9IHZhbHVlcztcbiAgICAgIHJldHVybiBlbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCB8fCBwYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIGFsbCBiYWNrZW5kIGVycm9ycy5cbiAgICovXG4gIGNsZWFuTWVzc2FnZXMoKSB7XG4gICAgdGhpcy5hbGVydC5jbGVhckFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgc3VjY2VzcyBtZXNzYWdlXG4gICAqIEBwYXJhbSBzdWNjZXNzS2V5IFRoZSBrZXkgb2YgdGhlIHN1Y2Nlc3MgbWVzc2FnZSBhcyB1c2VkIGluIFNVQ0NFU1NfTUVTU0FHRVNcbiAgICovXG4gIGFkZFN1Y2Nlc3NNZXNzYWdlKHN1Y2Nlc3NLZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gdGhpcy5TVUNDRVNTX01FU1NBR0VTW3N1Y2Nlc3NLZXldO1xuICAgIGlmIChzdWNjZXNzTWVzc2FnZSkge1xuICAgICAgdGhpcy5hbGVydC5hZGQoe1xuICAgICAgICB0ZXh0OiBzdWNjZXNzTWVzc2FnZSxcbiAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB0aW1lb3V0OiAwXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBzdHJhdGVneS4gRGVmYXVsdHMgdG8gY29va2llLCBpZiBhIHRva2VuXG4gICAqIGlzIGZvdW5kIGluIGxvY2FsIG9yIHNlc3Npb24gc3RvcmFnZSB3ZSBzd2l0Y2ggdG8gYmFzaWMgYXV0aC5cbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYXV0aCBzdHJhdGVneS5cbiAgICovXG4gIGdldEF1dGhTdHJhdGVneSgpOiBJQXV0aGVudGljYXRpb24ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhdXRoU3RyYXRlZ3kgPSBuZXcgQmVhcmVyQXV0aEZyb21TZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgY29uc29sZS5sb2coYFVzaW5nIEJlYXJlckF1dGhGcm9tU2Vzc2lvblN0b3JhZ2VgKTtcbiAgICAgIHJldHVybiBhdXRoU3RyYXRlZ3k7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICBsZXQgYXV0aFN0cmF0ZWd5OiBJQXV0aGVudGljYXRpb24gPSB0aGlzLmNvb2tpZUF1dGg7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFN0b3JlZFRva2VuKCk7XG4gICAgY29uc3QgdGZhID0gdGhpcy5nZXRTdG9yZWRUZmFUb2tlbigpO1xuICAgIGlmICh0b2tlbikge1xuICAgICAgYXV0aFN0cmF0ZWd5ID0gdGhpcy5iYXNpY0F1dGg7XG4gICAgICB0aGlzLnNldENyZWRlbnRpYWxzKHsgdG9rZW4sIHRmYSB9LCB0aGlzLmJhc2ljQXV0aCk7XG4gICAgfVxuICAgIHJldHVybiBhdXRoU3RyYXRlZ3k7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VzIHRoZSB1c2Ugb2YgYmFzaWMgYXV0aCBhcyBzdHJhdGVneSB3aXRoIHRoaXMgY3JlZGVudGlhbHMuXG4gICAqIEBwYXJhbSBjcmVkZW50aWFscyBUaGUgY3JlZGVudGlhbHMgdG8gdXNlLlxuICAgKi9cbiAgdXNlQmFzaWNBdXRoKGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHMpIHtcbiAgICB0aGlzLnNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzLCB0aGlzLmJhc2ljQXV0aCk7XG4gICAgcmV0dXJuIHRoaXMuYmFzaWNBdXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWVzIHRvIGxvZ2luIGEgdXNlciB3aXRoIHRoZSBnaXZlbiBjcmVkZW50aWFscy5cbiAgICogSWYgc3VjY2Vzc2Z1bCwgdGhlIGN1cnJlbnQgdGVuYW50IGFuZCB1c2VyIGlzIHNldC4gSWYgbm90IGFuIGVycm9yXG4gICAqIGlzIHRocm93bi4gSXQgYWxzbyB2ZXJpZmllcyBpZiB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIG9wZW4gdGhlXG4gICAqIGN1cnJlbnQgYXBwLlxuICAgKiBAcGFyYW0gYXV0aCBUaGUgYXV0aGVudGljYXRpb24gc3RyYXRlZ3kgdXNlZC5cbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIFRoZSBjcmVkZW50aWFscyB0byB0cnkgdG8gbG9naW4uXG4gICAqL1xuICBhc3luYyBsb2dpbihhdXRoOiBJQXV0aGVudGljYXRpb24gPSB0aGlzLmdldEF1dGhTdHJhdGVneSgpLCBjcmVkZW50aWFscz86IElDcmVkZW50aWFscykge1xuICAgIHRoaXMuY2xpZW50LnNldEF1dGgoYXV0aCk7XG5cbiAgICBjb25zdCB0ZW5hbnRSZXMgPSBhd2FpdCB0aGlzLnRlbmFudC5jdXJyZW50KHsgd2l0aFBhcmVudDogdHJ1ZSB9KTtcbiAgICBjb25zdCB0ZW5hbnQgPSB0ZW5hbnRSZXMuZGF0YTtcblxuICAgIGlmIChjcmVkZW50aWFscykge1xuICAgICAgY3JlZGVudGlhbHMudGVuYW50ID0gdGVuYW50Lm5hbWU7XG4gICAgfVxuXG4gICAgaWYgKGF3YWl0IHRoaXMuc3dpdGNoTG9naW5Nb2RlKGNyZWRlbnRpYWxzKSkge1xuICAgICAgYXV0aCA9IHRoaXMuY29va2llQXV0aDtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyUmVzID0gYXdhaXQgdGhpcy51c2VyLmN1cnJlbnQoKTtcbiAgICBjb25zdCB1c2VyID0gdXNlclJlcy5kYXRhO1xuICAgIGF3YWl0IHRoaXMudmVyaWZ5QXBwQWNjZXNzKCk7XG5cbiAgICBjb25zdCBzdXBwb3J0VXNlck5hbWUgPSB0aGlzLmdldFN1cHBvcnRVc2VyTmFtZShjcmVkZW50aWFscyk7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnNldENyZWRlbnRpYWxzKFxuICAgICAge1xuICAgICAgICB0ZW5hbnQ6IHRlbmFudC5uYW1lLFxuICAgICAgICB1c2VyOiAoc3VwcG9ydFVzZXJOYW1lID8gYCR7c3VwcG9ydFVzZXJOYW1lfSRgIDogJycpICsgdXNlci51c2VyTmFtZVxuICAgICAgfSxcbiAgICAgIGF1dGhcbiAgICApO1xuXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0aGlzLnN0b3JlQmFzaWNBdXRoVG9rZW4odG9rZW4pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuYXV0aEZ1bGZpbGxlZCh0ZW5hbnQsIHVzZXIsIHN1cHBvcnRVc2VyTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgdGVuYW50LCB1c2VyIGFuZCBzdXBwb3J0IHVzZXIgaW5mbyB0byB0aGUgYXBwIHN0YXRlLlxuICAgKiBAcGFyYW0gdGVuYW50IFRoZSBjdXJyZW50IHRlbmFudCBvYmplY3QuXG4gICAqIEBwYXJhbSB1c2VyIFRoZSBjdXJyZW50IHVzZXIgb2JqZWN0LlxuICAgKiBAcGFyYW0gc3VwcG9ydFVzZXJOYW1lIFRoZSBjdXJyZW50IHN1cHBvcnQgdXNlciBuYW1lLlxuICAgKi9cbiAgYXN5bmMgYXV0aEZ1bGZpbGxlZCh0ZW5hbnQ/LCB1c2VyPywgc3VwcG9ydFVzZXJOYW1lPykge1xuICAgIGlmICghdGVuYW50KSB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMudGVuYW50LmN1cnJlbnQoeyB3aXRoUGFyZW50OiB0cnVlIH0pO1xuICAgICAgdGVuYW50ID0gZGF0YTtcbiAgICAgIHRoaXMuY2xpZW50LnRlbmFudCA9IHRlbmFudC5uYW1lO1xuICAgIH1cblxuICAgIGlmICghdXNlcikge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLnVzZXIuY3VycmVudCgpO1xuICAgICAgdXNlciA9IGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKCFzdXBwb3J0VXNlck5hbWUpIHtcbiAgICAgIHN1cHBvcnRVc2VyTmFtZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy51aS5zZXRVc2VyKHsgdXNlciwgc3VwcG9ydFVzZXJOYW1lIH0pO1xuICAgIHRoaXMudWkuY3VycmVudFRlbmFudC5uZXh0KHRlbmFudCk7XG4gIH1cblxuICAvKipcbiAgICogU3dpdGNoIHRoZSBsb2dpbiBtb2RlIHRvIENvb2tpZUF1dGggaWYgdGhlXG4gICAqIHVzZXIgaGFzIGNvbmZpZ3VyZWQgdG8gdXNlIGl0IGluIGxvZ2luT3B0aW9ucy5cbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIFRoZSBjcmVkZW50aWFscyBmb3IgdGhhdCBsb2dpblxuICAgKi9cbiAgYXN5bmMgc3dpdGNoTG9naW5Nb2RlKGNyZWRlbnRpYWxzPzogSUNyZWRlbnRpYWxzKSB7XG4gICAgY29uc3QgaXNQYXNzd29yZEdyYW50TG9naW4gPSBhd2FpdCB0aGlzLmlzUGFzc3dvcmRHcmFudExvZ2luKGNyZWRlbnRpYWxzKTtcbiAgICBpZiAoaXNQYXNzd29yZEdyYW50TG9naW4gJiYgY3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVPYXV0aFRva2VuKGNyZWRlbnRpYWxzKTtcbiAgICAgIGlmICghKHJlcyBhcyBSZXNwb25zZSkub2spIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgICAgICB0aHJvdyB7IHJlcywgZGF0YSB9O1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgIHRocm93IGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmNsaWVudC5zZXRBdXRoKHRoaXMuY29va2llQXV0aCk7XG4gICAgICB0aGlzLmNsZWFuTG9jYWxTdG9yYWdlKCk7XG4gICAgICB0aGlzLmJhc2ljQXV0aC5sb2dvdXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzUGFzc3dvcmRHcmFudExvZ2luO1xuICB9XG5cbiAgYXN5bmMgZ2VuZXJhdGVPYXV0aFRva2VuKGNyZWRlbnRpYWxzPzogSUNyZWRlbnRpYWxzKSB7XG4gICAgaWYgKChhd2FpdCB0aGlzLmlzUGFzc3dvcmRHcmFudExvZ2luKGNyZWRlbnRpYWxzKSkgJiYgY3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgICBncmFudF90eXBlOiAnUEFTU1dPUkQnLFxuICAgICAgICB1c2VybmFtZTogY3JlZGVudGlhbHMudXNlcixcbiAgICAgICAgcGFzc3dvcmQ6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgICAgICB0ZmFfY29kZTogY3JlZGVudGlhbHMudGZhXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhd2FpdCBuZXcgRmV0Y2hDbGllbnQoKS5mZXRjaCh0aGlzLmdldFVybEZvck9hdXRoKGNyZWRlbnRpYWxzKSwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogcGFyYW1zLnRvU3RyaW5nKCksXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04J1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpc1Bhc3N3b3JkR3JhbnRMb2dpbihjcmVkZW50aWFscz86IElDcmVkZW50aWFscykge1xuICAgIGxldCBsb2dpbk1vZGUgPSB0aGlzLmxvZ2luTW9kZTtcblxuICAgIGlmICh0aGlzLmlzU3VwcG9ydFVzZXIoY3JlZGVudGlhbHMpKSB7XG4gICAgICBpZiAoIXRoaXMubWFuYWdlbWVudExvZ2luTW9kZSkge1xuICAgICAgICB0aGlzLm1hbmFnZW1lbnRMb2dpbk1vZGUgPSBhd2FpdCB0aGlzLmdldE1hbmFnZW1lbnRMb2dpbk1vZGUoKTtcbiAgICAgIH1cbiAgICAgIGxvZ2luTW9kZSA9IHRoaXMubWFuYWdlbWVudExvZ2luTW9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZW5hbnRVaVNlcnZpY2UuaXNPYXV0aEludGVybmFsKGxvZ2luTW9kZSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgdGhlIHByb3ZpZGVkIGNyZWRlbnRpYWxzIHVzZSBhIHN1cHBvcnQgdXNlciB0byBsb2cgaW4gb3Igbm90LlxuICAgKiBAcGFyYW0gY3JlZGVudGlhbHMgQ3JlZGVudGlhbHMgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgdXNlciBpcyBhIHN1cHBvcnQgdXNlci5cbiAgICovXG4gIGlzU3VwcG9ydFVzZXIoY3JlZGVudGlhbHM/OiBJQ3JlZGVudGlhbHMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY3JlZGVudGlhbHMgJiYgY3JlZGVudGlhbHMudXNlci5pbmNsdWRlcygnJCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHRoZSB0ZW5hbnQgaW5wdXQgZmllbGQgc2hvdWxkIGJlIHNob3duXG4gICAqIG9yIG5vdC5cbiAgICogQHJldHVybnMgSWYgdHJ1ZSwgc2hvdyB0aGUgdGVuYW50IGlucHV0LlxuICAgKi9cbiAgc2hvd1RlbmFudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudWkuc3RhdGUubG9naW5PcHRpb25zIHx8IHRoaXMuaXNMb2NhbCgpIHx8IHRoaXMuaXNTaG93VGVuYW50KCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgdGhlIHRlbmFudCBzZXR1cCBzaG91bGQgYmUgc2hvd25cbiAgICogb3Igbm90LlxuICAgKiBAcmV0dXJucyBJZiB0cnVlLCBzaG93IHRoZSB0ZW5hbnQgaW5wdXQuXG4gICAqL1xuICBzaG93VGVuYW50U2V0dXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnVpLnN0YXRlLmxvZ2luT3B0aW9ucyAmJiAhdGhpcy5pc0xvY2FsKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyB0aGUgdXNlciBvdXRcbiAgICogQHBhcmFtIHJlbG9hZCBJZiBzZXQgdG8gZmFsc2UsIHRoZSBwYWdlIHdpbGwgbm90IHJlbG9hZFxuICAgKi9cbiAgYXN5bmMgbG9nb3V0KHJlbG9hZCA9IHRydWUpIHtcbiAgICBsZXQgcmVzRGF0YSA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFssIGNvb2tpZVJlc10gPSBhd2FpdCB0aGlzLnJlc2V0KCk7XG4gICAgICByZXNEYXRhID0gYXdhaXQgY29va2llUmVzLmpzb24oKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydC5yZW1vdmVMYXN0RGFuZ2VyKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyZXNEYXRhICYmIHJlc0RhdGEudXJsKSB7XG4gICAgICAgIHRoaXMucmVkaXJlY3QocmVzRGF0YS51cmwpO1xuICAgICAgfSBlbHNlIGlmIChyZWxvYWQpIHtcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoe30sICcnLCAnJywgJycpO1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgc3RvcmVkIGF1dGgtZGF0YVxuICAgKi9cbiAgYXN5bmMgcmVzZXQoKSB7XG4gICAgdGhpcy5jbGVhbkxvY2FsU3RvcmFnZSgpO1xuICAgIHRoaXMuY2xlYW5TZXNzaW9uU3RvcmFnZSgpO1xuICAgIHRoaXMucmVhbHRpbWUuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMudWkuY3VycmVudFVzZXIubmV4dChudWxsKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3RoaXMuYmFzaWNBdXRoLmxvZ291dCgpLCB0aGlzLmNvb2tpZUF1dGgubG9nb3V0KCldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgVEZBIHRva2VuIHRvIGxvY2FsIG9yIHNlc3Npb24gc3RvcmFnZS5cbiAgICogQHBhcmFtIHRmYVRva2VuIFRoZSB0ZmEgdG9rZW4gdG8gc2F2ZS5cbiAgICogQHBhcmFtIHN0b3JhZ2UgVGhlIHN0b3JhZ2UgdG8gdXNlIChsb2NhbCBvciBzZXNzaW9uKS5cbiAgICovXG4gIHNhdmVURkFUb2tlbih0ZmFUb2tlbjogc3RyaW5nLCBzdG9yYWdlOiBTdG9yYWdlKSB7XG4gICAgc3RvcmFnZS5zZXRJdGVtKHRoaXMuVEZBVE9LRU5fS0VZLCB0ZmFUb2tlbik7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCB0aGUgbWFuaWZlc3QgLT4gb24gNDAxIHVzZXIgaGFzIG5vIGFjY2VzcyB0byB0aGF0IGFwcGxpY2F0aW9uXG4gICAqIGFuZCB3ZSB0aHJvdyB0aGUgZXJyb3IgdXAgdG8gdGhlIGxvZ2luIGZvcm0uXG4gICAqL1xuICBhc3luYyB2ZXJpZnlBcHBBY2Nlc3MoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudWkubG9hZE1hbmlmZXN0KCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmICghKGV4LnJlcyAmJiBleC5yZXMuc3RhdHVzID09PSA0MDQgJiYgdGhpcy5pc0xvY2FsKCkpKSB7XG4gICAgICAgIHRocm93IGV4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlZGlyZWN0VG9Eb21haW4oZG9tYWluKSB7XG4gICAgY29uc3Qgb3JpZ2luVXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSBvcmlnaW5VcmwuaHJlZi5yZXBsYWNlKG9yaWdpblVybC5ob3N0bmFtZSwgZG9tYWluKTtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlZGlyZWN0VXJsO1xuICB9XG5cbiAgc2hvd1Nzb0Vycm9yKGVycm9yKTogdm9pZCB7XG4gICAgY29uc3QgYm9keSA9IGVycm9yXG4gICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgIGdldHRleHQoXG4gICAgICAgICAgICAnPHA+PHN0cm9uZz5UaGUgZm9sbG93aW5nIGVycm9yIHdhcyByZXR1cm5lZCBmcm9tIHRoZSBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBzZXJ2aWNlOjwvc3Ryb25nPjwvcD48cD48Y29kZT57eyBlcnJvciB9fTwvY29kZT48L3A+LidcbiAgICAgICAgICApLFxuICAgICAgICAgIHsgZXJyb3IgfVxuICAgICAgICApXG4gICAgICA6IGdldHRleHQoJ1NTTyBsb2dpbiBmYWlsZWQuIENvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyk7XG5cbiAgICB0aGlzLm1vZGFsU2VydmljZS5hY2tub3dsZWRnZShnZXR0ZXh0KCdMb2dpbiBlcnJvcicpLCBib2R5LCBTdGF0dXMuREFOR0VSLCBnZXR0ZXh0KCdPSycpKTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyQ29va2llcygpIHtcbiAgICAvLyBjbGVhciBjb29raWVzIGJ1dCBhdm9pZCByZWRpcmVjdCBvbiBsb2dvdXRcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb29raWVBdXRoLmxvZ291dCh7IHJlZGlyZWN0OiAnbWFudWFsJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0ZW5hbnQgdG8gdGhlIGNsaWVudCBhbmQgdXBkYXRlcyB0aGUgY3JlZGVudGlhbHMgb24gdGhlXG4gICAqIGF1dGggc3RyYXRlZ3kuXG4gICAqIEBwYXJhbSBjcmVkZW50aWFscyBUaGUgbmFtZSBvZiB0aGUgdGVuYW50LlxuICAgKiBAcGFyYW0gYXV0aFN0cmF0ZWd5IFRoZSBhdXRoZW50aWNhdGlvbiBzdHJhdGVneSB1c2VkLlxuICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHRva2VuIGlmIGJhc2ljIGF1dGgsIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gICAqL1xuICBwcml2YXRlIHNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHMsIGF1dGhTdHJhdGVneTogSUF1dGhlbnRpY2F0aW9uKSB7XG4gICAgaWYgKGNyZWRlbnRpYWxzLnRlbmFudCkge1xuICAgICAgdGhpcy5jbGllbnQudGVuYW50ID0gY3JlZGVudGlhbHMudGVuYW50O1xuICAgIH1cbiAgICAvLyBDaGVjayBpZiBhIHRva2VuIGlzIGFscmVhZHkgc2V0IChjYXNlIGZvciBzdXBwb3J0IHVzZXIgbG9naW4pXG4gICAgLy8gaWYgeWVzIC0+IHdlIGp1c3QgbmVlZCB0byB1cGRhdGUgdGhlIHVzZXIsIGFuZCByZXVzZSB0aGUgdG9rZW5cbiAgICAvLyBvZiB0aGUgc3VwcG9ydCB1c2VyLlxuICAgIC8vIFRoZXJlZm9yZSB3ZSBuZWVkIHRvIHBhc3MgdXNlciBhbmQgdGVuYW50LCB0byBnZXRcbiAgICAvLyBqdXN0IHRoZSBzdG9yZWQgdG9rZW4gYW5kIG5vdGhpbmcgZWxzZSAoc2VlIEJhc2ljQXV0aC50czozMSkuXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmJhc2ljQXV0aC51cGRhdGVDcmVkZW50aWFscyh7XG4gICAgICB0ZW5hbnQ6IGNyZWRlbnRpYWxzLnRlbmFudCxcbiAgICAgIHVzZXI6IGNyZWRlbnRpYWxzLnVzZXJcbiAgICB9KTtcbiAgICBjb25zdCBuZXdDcmVkZW50aWFscyA9IHsgdG9rZW4sIC4uLmNyZWRlbnRpYWxzIH07XG5cbiAgICByZXR1cm4gYXV0aFN0cmF0ZWd5LnVwZGF0ZUNyZWRlbnRpYWxzKG5ld0NyZWRlbnRpYWxzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiB0aGUgY3VycmVudCB1c2VyIGlzIGEgZGV2ZWxvcGVyIG9yIG5vdC5cbiAgICogUnVubmluZyBvbiBsb2NhbGhvc3QgbWVhbnMgZGV2ZWxvcG1lbnQgbW9kZS5cbiAgICovXG4gIHByaXZhdGUgaXNMb2NhbCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBob3N0bmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbiAgICByZXR1cm4gdGhpcy5sb2NhbGhvc3RJcFJlZ0V4cC50ZXN0KGhvc3RuYW1lKSB8fCB0aGlzLmxvY2FsaG9zdFJlZ0V4cC50ZXN0KGhvc3RuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSB0b2tlbiB0byBsb2NhbCBvciBzZXNzaW9uIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSB0b2tlbiBUaGUgdG9rZW4gdG8gc2F2ZS5cbiAgICogQHBhcmFtIHN0b3JhZ2UgVGhlIHN0b3JhZ2UgdG8gdXNlIChsb2NhbCBvciBzZXNzaW9uKS5cbiAgICovXG4gIHByaXZhdGUgc2F2ZVRva2VuKHRva2VuOiBzdHJpbmcsIHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgICBzdG9yYWdlLnNldEl0ZW0odGhpcy5UT0tFTl9LRVksIHRva2VuKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcmVCYXNpY0F1dGhUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zYXZlVG9rZW4odG9rZW4sIHNlc3Npb25TdG9yYWdlKTtcbiAgICBpZiAodGhpcy5yZW1lbWJlck1lKSB7XG4gICAgICB0aGlzLnNhdmVUb2tlbih0b2tlbiwgbG9jYWxTdG9yYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFuTG9jYWxTdG9yYWdlKCkge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuVE9LRU5fS0VZKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRGQVRPS0VOX0tFWSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuU2Vzc2lvblN0b3JhZ2UoKSB7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRPS0VOX0tFWSk7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRGQVRPS0VOX0tFWSk7XG4gIH1cblxuICBwcml2YXRlIGlzU2hvd1RlbmFudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93VGVuYW50UmVnRXhwLnRlc3Qod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWRpcmVjdCh1cmw6IHN0cmluZykge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRCYXNpY0F1dGhMb2dpbk9wdGlvbihyZWZyZXNoPyk6IFByb21pc2U8SVRlbmFudExvZ2luT3B0aW9uPiB7XG4gICAgaWYgKHJlZnJlc2gpIHtcbiAgICAgIGF3YWl0IHRoaXMudWkucmVmcmVzaExvZ2luT3B0aW9ucygpO1xuICAgIH1cbiAgICBjb25zdCBsb2dpbk9wdGlvbnMgPSB0aGlzLnVpLnN0YXRlLmxvZ2luT3B0aW9ucyB8fCBbXTtcbiAgICBjb25zdCBiYXNpY0F1dGhMb2dpbk9wdGlvbiA9IGxvZ2luT3B0aW9ucy5maW5kKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gJ0JBU0lDJyk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShiYXNpY0F1dGhMb2dpbk9wdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzdXBwb3J0IHVzZXIgbmFtZSBmcm9tIGNyZWRlbnRpYWxzLlxuICAgKiBAcGFyYW0gY3JlZGVudGlhbHMgQ3JlZGVudGlhbHMgb2JqZWN0IChkZWZhdWx0cyB0byB0aGUgc3RvcmVkIG9uZSkuXG4gICAqIEByZXR1cm5zIFN1cHBvcnQgdXNlciBuYW1lLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdXBwb3J0VXNlck5hbWUoY3JlZGVudGlhbHM6IElDcmVkZW50aWFscyA9IHRoaXMuZ2V0U3RvcmVkQ3JlZGVudGlhbHMoKSk6IHN0cmluZyB7XG4gICAgaWYgKCFjcmVkZW50aWFscykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHN1cHBvcnRVc2VyTmFtZSA9IGNyZWRlbnRpYWxzLnVzZXIubWF0Y2goL14oLitcXC8pPygoLispXFwkKT8oLispPyQvKVszXTtcbiAgICByZXR1cm4gc3VwcG9ydFVzZXJOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY3JlZGVudGlhbHMgb2JqZWN0IGZyb20gdGhlIHN0b3JlZCB0b2tlbi5cbiAgICogQHJldHVybnMgQ3JlZGVudGlhbHMgb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdG9yZWRDcmVkZW50aWFscygpOiBJQ3JlZGVudGlhbHMge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRTdG9yZWRUb2tlbigpO1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kZWNvZGVUb2tlbih0b2tlbik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzdG9yZWQgdG9rZW4gZnJvbSBsb2NhbCBzdG9yYWdlIG9yIHNlc3Npb24gc3RvcmFnZS5cbiAgICogQHJldHVybnMgU3RvcmVkIHRva2VuLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdG9yZWRUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRPS0VOX0tFWSkgfHwgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRPS0VOX0tFWSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzdG9yZWQgVEZBIHRva2VuIGZyb20gbG9jYWwgc3RvcmFnZSBvciBzZXNzaW9uIHN0b3JhZ2UuXG4gICAqIEByZXR1cm5zIFN0b3JlZCBURkEgdG9rZW4uXG4gICAqL1xuICBwcml2YXRlIGdldFN0b3JlZFRmYVRva2VuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuVEZBVE9LRU5fS0VZKSB8fCBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuVEZBVE9LRU5fS0VZKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIHRva2VuIHRvIGNyZWRlbnRpYWxzIG9iamVjdC5cbiAgICogQHBhcmFtIHRva2VuIFRva2VuIHRvIGRlY29kZS5cbiAgICogQHJldHVybnMgQ3JlZGVudGlhbHMgb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBkZWNvZGVUb2tlbih0b2tlbjogc3RyaW5nKTogSUNyZWRlbnRpYWxzIHtcbiAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZSh3aW5kb3cuYXRvYih0b2tlbikpKTtcbiAgICBjb25zdCBzcGxpdCA9IGRlY29kZWQubWF0Y2goLygoW14vXSopXFwvKT8oW14vOl0rKTooLispLyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGVuYW50OiBzcGxpdFsyXSxcbiAgICAgIHVzZXI6IHNwbGl0WzNdLFxuICAgICAgcGFzc3dvcmQ6IHNwbGl0WzRdXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VXJsRm9yT2F1dGgoY3JlZGVudGlhbHM6IElDcmVkZW50aWFscykge1xuICAgIGlmIChpc0VtcHR5KGNyZWRlbnRpYWxzLnRlbmFudCkgJiYgdGhpcy5sb2dpbk1vZGUuaW5pdFJlcXVlc3QpIHtcbiAgICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXModGhpcy5sb2dpbk1vZGUuaW5pdFJlcXVlc3Quc3BsaXQoJz8nKS5wb3AoKSk7XG4gICAgICBjcmVkZW50aWFscy50ZW5hbnQgPSB1cmxQYXJhbXMuZ2V0KCd0ZW5hbnRfaWQnKTtcbiAgICB9XG4gICAgcmV0dXJuICFpc0VtcHR5KGNyZWRlbnRpYWxzLnRlbmFudClcbiAgICAgID8gYHRlbmFudC9vYXV0aD90ZW5hbnRfaWQ9JHtjcmVkZW50aWFscy50ZW5hbnR9YFxuICAgICAgOiBgdGVuYW50L29hdXRoYDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0TWFuYWdlbWVudExvZ2luTW9kZSgpIHtcbiAgICBjb25zdCBtYW5hZ2VtZW50TG9naW5PcHRpb25zID0gKGF3YWl0IHRoaXMudGVuYW50TG9naW5PcHRpb25zU2VydmljZS5saXN0Rm9yTWFuYWdlbWVudCgpKS5kYXRhO1xuICAgIHJldHVybiB0aGlzLnRlbmFudFVpU2VydmljZS5nZXRQcmVmZXJyZWRMb2dpbk9wdGlvbihtYW5hZ2VtZW50TG9naW5PcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlRXJyb3JTdGF0dXNDb2RlcyhyZXNwb25zZTogSUZldGNoUmVzcG9uc2UpOiBQcm9taXNlPElGZXRjaFJlc3BvbnNlPiB7XG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICBjb25zdCBlcnJvciA9IGRhdGEubWVzc2FnZSB8fCBkYXRhLmVycm9yX2Rlc2NyaXB0aW9uIHx8IGRhdGEuZXJyb3I7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG59XG4iXX0=
@@ -1,12 +1,15 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { OptionsService } from '../../common';
3
+ import { ThemeSwitcherService } from '../../ui-settings/theme-switcher.service';
3
4
  import { combineLatest, of } from 'rxjs';
4
5
  import { map } from 'rxjs/operators';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../../common";
8
+ import * as i2 from "../../ui-settings/theme-switcher.service";
7
9
  export class NavigatorBottomService {
8
- constructor(options) {
10
+ constructor(options, themeService) {
9
11
  this.options = options;
12
+ this.themeService = themeService;
10
13
  this.navigatorLogoVariable = 'navigator-platform-logo';
11
14
  this.navigatorLogoHeightVariable = 'navigator-platform-logo-height';
12
15
  }
@@ -14,11 +17,15 @@ export class NavigatorBottomService {
14
17
  return this.options.get$('hidePowered').pipe(map(hidePowered => !!hidePowered));
15
18
  }
16
19
  hasCustomNavigatorLogoSet() {
17
- return this.options.get$('brandingCSSVars').pipe(map(vars => {
20
+ return combineLatest([
21
+ this.options.get$('brandingCSSVars'),
22
+ this.themeService.currentlyAppliedTheme$
23
+ ]).pipe(map(([vars, theme]) => {
18
24
  if (!vars || typeof vars !== 'object') {
19
25
  return false;
20
26
  }
21
- if (typeof vars[this.navigatorLogoVariable] === 'string') {
27
+ const variableToLookFor = theme === 'dark' ? `dark-${this.navigatorLogoVariable}` : this.navigatorLogoVariable;
28
+ if (typeof vars[variableToLookFor] === 'string') {
22
29
  return true;
23
30
  }
24
31
  return false;
@@ -30,7 +37,7 @@ export class NavigatorBottomService {
30
37
  shouldShowDefaultPoweredBy() {
31
38
  return combineLatest([this.hasHidePoweredSet(), this.hasCustomNavigatorLogoSet()]).pipe(map(([hidePowered, hasCustomLogo]) => !hidePowered && !hasCustomLogo));
32
39
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavigatorBottomService, deps: [{ token: i1.OptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavigatorBottomService, deps: [{ token: i1.OptionsService }, { token: i2.ThemeSwitcherService }], target: i0.ɵɵFactoryTarget.Injectable }); }
34
41
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavigatorBottomService, providedIn: 'root' }); }
35
42
  }
36
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavigatorBottomService, decorators: [{
@@ -38,5 +45,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
38
45
  args: [{
39
46
  providedIn: 'root'
40
47
  }]
41
- }], ctorParameters: () => [{ type: i1.OptionsService }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLWJvdHRvbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9uYXZpZ2F0b3IvbmF2aWdhdG9yLWJvdHRvbS9uYXZpZ2F0b3ItYm90dG9tLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBS3JDLE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFBb0IsT0FBdUI7UUFBdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFGbEMsMEJBQXFCLEdBQUcseUJBQXlCLENBQUM7UUFDbEQsZ0NBQTJCLEdBQUcsZ0NBQWdDLENBQUM7SUFDMUIsQ0FBQztJQUUvQyxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQzlDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3pELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixPQUFPLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3JGLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUN0RSxDQUFDO0lBQ0osQ0FBQzs4R0FoQ1Usc0JBQXNCO2tIQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRvckJvdHRvbVNlcnZpY2Uge1xuICByZWFkb25seSBuYXZpZ2F0b3JMb2dvVmFyaWFibGUgPSAnbmF2aWdhdG9yLXBsYXRmb3JtLWxvZ28nO1xuICByZWFkb25seSBuYXZpZ2F0b3JMb2dvSGVpZ2h0VmFyaWFibGUgPSAnbmF2aWdhdG9yLXBsYXRmb3JtLWxvZ28taGVpZ2h0JztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZSkge31cblxuICBoYXNIaWRlUG93ZXJlZFNldCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCQoJ2hpZGVQb3dlcmVkJykucGlwZShtYXAoaGlkZVBvd2VyZWQgPT4gISFoaWRlUG93ZXJlZCkpO1xuICB9XG5cbiAgaGFzQ3VzdG9tTmF2aWdhdG9yTG9nb1NldCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCQoJ2JyYW5kaW5nQ1NTVmFycycpLnBpcGUoXG4gICAgICBtYXAodmFycyA9PiB7XG4gICAgICAgIGlmICghdmFycyB8fCB0eXBlb2YgdmFycyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHZhcnNbdGhpcy5uYXZpZ2F0b3JMb2dvVmFyaWFibGVdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNob3VsZFNob3dCb3R0b21EcmF3ZXIoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG9mKHRydWUpO1xuICB9XG5cbiAgc2hvdWxkU2hvd0RlZmF1bHRQb3dlcmVkQnkoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuaGFzSGlkZVBvd2VyZWRTZXQoKSwgdGhpcy5oYXNDdXN0b21OYXZpZ2F0b3JMb2dvU2V0KCldKS5waXBlKFxuICAgICAgbWFwKChbaGlkZVBvd2VyZWQsIGhhc0N1c3RvbUxvZ29dKSA9PiAhaGlkZVBvd2VyZWQgJiYgIWhhc0N1c3RvbUxvZ28pXG4gICAgKTtcbiAgfVxufVxuIl19
48
+ }], ctorParameters: () => [{ type: i1.OptionsService }, { type: i2.ThemeSwitcherService }] });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLWJvdHRvbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9uYXZpZ2F0b3IvbmF2aWdhdG9yLWJvdHRvbS9uYXZpZ2F0b3ItYm90dG9tLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUtyQyxNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLFlBQ1UsT0FBdUIsRUFDdkIsWUFBa0M7UUFEbEMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBSm5DLDBCQUFxQixHQUFHLHlCQUF5QixDQUFDO1FBQ2xELGdDQUEyQixHQUFHLGdDQUFnQyxDQUFDO0lBSXJFLENBQUM7SUFFSixpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLE9BQU8sYUFBYSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCO1NBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN0QyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLGlCQUFpQixHQUNyQixLQUFLLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFFdkYsSUFBSSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNoRCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsT0FBTyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNyRixHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FDdEUsQ0FBQztJQUNKLENBQUM7OEdBekNVLHNCQUFzQjtrSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBUaGVtZVN3aXRjaGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3VpLXNldHRpbmdzL3RoZW1lLXN3aXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdG9yQm90dG9tU2VydmljZSB7XG4gIHJlYWRvbmx5IG5hdmlnYXRvckxvZ29WYXJpYWJsZSA9ICduYXZpZ2F0b3ItcGxhdGZvcm0tbG9nbyc7XG4gIHJlYWRvbmx5IG5hdmlnYXRvckxvZ29IZWlnaHRWYXJpYWJsZSA9ICduYXZpZ2F0b3ItcGxhdGZvcm0tbG9nby1oZWlnaHQnO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBUaGVtZVN3aXRjaGVyU2VydmljZVxuICApIHt9XG5cbiAgaGFzSGlkZVBvd2VyZWRTZXQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQkKCdoaWRlUG93ZXJlZCcpLnBpcGUobWFwKGhpZGVQb3dlcmVkID0+ICEhaGlkZVBvd2VyZWQpKTtcbiAgfVxuXG4gIGhhc0N1c3RvbU5hdmlnYXRvckxvZ29TZXQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5vcHRpb25zLmdldCQoJ2JyYW5kaW5nQ1NTVmFycycpLFxuICAgICAgdGhpcy50aGVtZVNlcnZpY2UuY3VycmVudGx5QXBwbGllZFRoZW1lJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFt2YXJzLCB0aGVtZV0pID0+IHtcbiAgICAgICAgaWYgKCF2YXJzIHx8IHR5cGVvZiB2YXJzICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlVG9Mb29rRm9yID1cbiAgICAgICAgICB0aGVtZSA9PT0gJ2RhcmsnID8gYGRhcmstJHt0aGlzLm5hdmlnYXRvckxvZ29WYXJpYWJsZX1gIDogdGhpcy5uYXZpZ2F0b3JMb2dvVmFyaWFibGU7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YXJzW3ZhcmlhYmxlVG9Mb29rRm9yXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzaG91bGRTaG93Qm90dG9tRHJhd2VyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBvZih0cnVlKTtcbiAgfVxuXG4gIHNob3VsZFNob3dEZWZhdWx0UG93ZXJlZEJ5KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmhhc0hpZGVQb3dlcmVkU2V0KCksIHRoaXMuaGFzQ3VzdG9tTmF2aWdhdG9yTG9nb1NldCgpXSkucGlwZShcbiAgICAgIG1hcCgoW2hpZGVQb3dlcmVkLCBoYXNDdXN0b21Mb2dvXSkgPT4gIWhpZGVQb3dlcmVkICYmICFoYXNDdXN0b21Mb2dvKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -18,10 +18,13 @@ class SupportsBrandingService {
18
18
  this.node = new NavigatorNode({
19
19
  featureId: 'branding-editor',
20
20
  label: 'Branding',
21
- path: 'branding-editor',
21
+ // will be redirected to the branding-editor route
22
+ // TODO: change back to branding-editor when angular JS implementation is removed (1022.0.0)
23
+ path: 'branding',
22
24
  icon: 'palette',
23
25
  parent: 'Settings',
24
- routerLinkExact: false
26
+ routerLinkExact: false,
27
+ preventDuplicates: true
25
28
  });
26
29
  }
27
30
  get() {