@posiwise/shared-components 0.0.103 → 0.0.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/header/header.component.mjs +21 -9
- package/esm2022/lib/privacy-and-tos/privacy-and-tos.component.mjs +45 -11
- package/fesm2022/posiwise-shared-components.mjs +92 -50
- package/fesm2022/posiwise-shared-components.mjs.map +1 -1
- package/lib/header/header.component.d.ts +5 -1
- package/lib/privacy-and-tos/privacy-and-tos.component.d.ts +7 -2
- package/package.json +1 -1
|
@@ -1,22 +1,34 @@
|
|
|
1
1
|
import { Component, Injector, Input } from '@angular/core';
|
|
2
2
|
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
3
|
+
import { AuthService } from '@posiwise/common-services';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@posiwise/
|
|
5
|
-
import * as i2 from "@
|
|
6
|
-
import * as i3 from "@
|
|
5
|
+
import * as i1 from "@posiwise/common-services";
|
|
6
|
+
import * as i2 from "@posiwise/directives";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "@jsverse/transloco";
|
|
7
9
|
export class HeaderComponent extends AppBaseComponent {
|
|
8
|
-
constructor(injector) {
|
|
10
|
+
constructor(injector, authService) {
|
|
9
11
|
super(injector);
|
|
12
|
+
this.authService = authService;
|
|
10
13
|
this.landing = false;
|
|
11
14
|
this.logo = this.appConfig?.company?.logos?.main_contrast?.url;
|
|
15
|
+
this.authService
|
|
16
|
+
.getToken$()
|
|
17
|
+
.pipe()
|
|
18
|
+
.subscribe(res => {
|
|
19
|
+
this.loggedIn = res ? true : false;
|
|
20
|
+
});
|
|
12
21
|
}
|
|
13
|
-
|
|
14
|
-
|
|
22
|
+
navigateToLogin() {
|
|
23
|
+
window.location.href = '/login';
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: HeaderComponent, deps: [{ token: i0.Injector }, { token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: HeaderComponent, selector: "pw-header", inputs: { landing: "landing" }, usesInheritance: true, ngImport: i0, template: "<div class=\"navbar navbar-expand-lg fixed-top-nav fixed-top\"\n [ngClass]=\"{ 'navbar-blue': !landing }\">\n <div class=\"container d-block\">\n <div class=\"row m-0\">\n <div class=\"col-lg-2 float-start\">\n <a href=\"/\">\n <img [src]=\"logo\"\n class=\"header-logo\"\n alt=\"site-logo\" />\n </a>\n <button type=\"button\"\n class=\"navbar-toggle\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#myNavbar\">\n <span class=\"icon-bar\"></span> <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n </div>\n <div class=\"col-lg-10 nav-outer mt-2\">\n <div class=\"collapse navbar-collapse float-end\"\n id=\"myNavbar\">\n <nav class=\"navbar navbar-expand-sm bg-light\">\n <ul class=\"navbar-nav\">\n <li class=\"nav-item contact-button\">\n <a href=\"/\"\n class=\"\">{{ 'Button.Home' | transloco }}</a>\n </li>\n <li *ngIf=\"!loggedIn\" class=\"nav-item login-button\">\n <a class=\"\"\n (click)=\"navigateToLogin()\"> log in</a>\n </li>\n </ul>\n </nav>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.navbar-blue{background-color:var(--first);box-shadow:2px 2px 15px 2px #0000001f;transition:width 2s,height 2s,transform 2s background-color .5s ease;z-index:9999}.fixed-top-nav{display:block!important;height:60px}.navbar-toggle{display:none}.navbar-toggle .icon-bar{color:#fff}.nav-outer{text-align:right}.nav-outer nav{background:none!important;display:inline-block;float:none;width:auto}.nav-outer li a{color:#fff;font-size:18px;margin:0 0 0 30px;text-transform:capitalize}.nav-outer li a:hover{color:#fff;text-decoration:none}.nav-outer li a:focus{color:#fff}.navbar-nav li{display:inline-block}@media screen and (max-width: 1199px){.nav-outer li a{margin:0 10px}}@media screen and (max-width: 991px){.icon-bar{background-color:#fff;border-radius:1px;display:block;height:2px;margin-top:4px;width:22px}.navbar-toggle{background-color:#ffb92b!important;background-image:none;border:1px solid rgb(255,255,255);border-radius:4px;display:block!important;float:right;margin-top:4px;padding:9px 10px;position:relative}.collapse{display:none!important}.collapse.show{display:block!important}.nav-outer nav{background:#ffb92b!important;display:inline-block;float:left;padding:20px;width:100%}.nav-outer li a{margin:0;padding:0 16px}.navbar-expand-sm,.navbar-nav{-webkit-box-direction:inherit;flex-direction:inherit}li.nav-item{float:left;margin-bottom:12px;text-align:left;width:100%}.nav-outer li a{margin:0;padding:0}.navbar-expand-sm{-webkit-box-direction:normal;-webkit-box-orient:horizontal;-webkit-box-pack:start;flex-flow:column nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm,.navbar-nav{-webkit-box-direction:normal;-webkit-box-orient:horizontal;flex-direction:column}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{left:auto;right:0}.nav-outer li a:hover{color:#0a56d3}.contact-button a,.login-button a,.nav-item{background:none;color:#fff!important;font-weight:600}.contact-button a:hover,.login-button a:hover,.nav-item a:hover{color:#0a56d3!important}}@media screen and (max-width: 767px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 575px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 375px){.navbar .container{padding:0!important}}@media (min-width: 641px) and (max-width: 991px){.navbar-toggle{margin-top:6px}}.header-logo{height:45px;width:205px}.login-button a{background-color:var(--second);color:#fff}.login-button a:hover{background-color:#fff;color:var(--second)!important}.fixed-top{position:fixed!important}\n"], dependencies: [{ kind: "directive", type: i2.LazyImgDirective, selector: "img" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] }); }
|
|
15
27
|
}
|
|
16
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
17
29
|
type: Component,
|
|
18
|
-
args: [{ selector: 'pw-header', template: "<div class=\"navbar navbar-expand-lg fixed-top-nav fixed-top\"\n [ngClass]=\"{ 'navbar-blue': !landing }\">\n <div class=\"container d-block\">\n <div class=\"row m-0\">\n <div class=\"col-lg-2 float-start\">\n <a href=\"/\">\n <img [src]=\"logo\"\n class=\"header-logo\"\n alt=\"site-logo\" />\n </a>\n <button type=\"button\"\n class=\"navbar-toggle\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#myNavbar\">\n <span class=\"icon-bar\"></span> <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n </div>\n <div class=\"col-lg-10 nav-outer mt-2\">\n <div class=\"collapse navbar-collapse float-end\"\n id=\"myNavbar\">\n <nav class=\"navbar navbar-expand-sm bg-light\">\n <ul class=\"navbar-nav\">\n <li class=\"nav-item
|
|
19
|
-
}], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { landing: [{
|
|
30
|
+
args: [{ selector: 'pw-header', template: "<div class=\"navbar navbar-expand-lg fixed-top-nav fixed-top\"\n [ngClass]=\"{ 'navbar-blue': !landing }\">\n <div class=\"container d-block\">\n <div class=\"row m-0\">\n <div class=\"col-lg-2 float-start\">\n <a href=\"/\">\n <img [src]=\"logo\"\n class=\"header-logo\"\n alt=\"site-logo\" />\n </a>\n <button type=\"button\"\n class=\"navbar-toggle\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#myNavbar\">\n <span class=\"icon-bar\"></span> <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n </div>\n <div class=\"col-lg-10 nav-outer mt-2\">\n <div class=\"collapse navbar-collapse float-end\"\n id=\"myNavbar\">\n <nav class=\"navbar navbar-expand-sm bg-light\">\n <ul class=\"navbar-nav\">\n <li class=\"nav-item contact-button\">\n <a href=\"/\"\n class=\"\">{{ 'Button.Home' | transloco }}</a>\n </li>\n <li *ngIf=\"!loggedIn\" class=\"nav-item login-button\">\n <a class=\"\"\n (click)=\"navigateToLogin()\"> log in</a>\n </li>\n </ul>\n </nav>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.navbar-blue{background-color:var(--first);box-shadow:2px 2px 15px 2px #0000001f;transition:width 2s,height 2s,transform 2s background-color .5s ease;z-index:9999}.fixed-top-nav{display:block!important;height:60px}.navbar-toggle{display:none}.navbar-toggle .icon-bar{color:#fff}.nav-outer{text-align:right}.nav-outer nav{background:none!important;display:inline-block;float:none;width:auto}.nav-outer li a{color:#fff;font-size:18px;margin:0 0 0 30px;text-transform:capitalize}.nav-outer li a:hover{color:#fff;text-decoration:none}.nav-outer li a:focus{color:#fff}.navbar-nav li{display:inline-block}@media screen and (max-width: 1199px){.nav-outer li a{margin:0 10px}}@media screen and (max-width: 991px){.icon-bar{background-color:#fff;border-radius:1px;display:block;height:2px;margin-top:4px;width:22px}.navbar-toggle{background-color:#ffb92b!important;background-image:none;border:1px solid rgb(255,255,255);border-radius:4px;display:block!important;float:right;margin-top:4px;padding:9px 10px;position:relative}.collapse{display:none!important}.collapse.show{display:block!important}.nav-outer nav{background:#ffb92b!important;display:inline-block;float:left;padding:20px;width:100%}.nav-outer li a{margin:0;padding:0 16px}.navbar-expand-sm,.navbar-nav{-webkit-box-direction:inherit;flex-direction:inherit}li.nav-item{float:left;margin-bottom:12px;text-align:left;width:100%}.nav-outer li a{margin:0;padding:0}.navbar-expand-sm{-webkit-box-direction:normal;-webkit-box-orient:horizontal;-webkit-box-pack:start;flex-flow:column nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm,.navbar-nav{-webkit-box-direction:normal;-webkit-box-orient:horizontal;flex-direction:column}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{left:auto;right:0}.nav-outer li a:hover{color:#0a56d3}.contact-button a,.login-button a,.nav-item{background:none;color:#fff!important;font-weight:600}.contact-button a:hover,.login-button a:hover,.nav-item a:hover{color:#0a56d3!important}}@media screen and (max-width: 767px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 575px){.fixed-top{padding:10px;top:0!important}}@media screen and (max-width: 375px){.navbar .container{padding:0!important}}@media (min-width: 641px) and (max-width: 991px){.navbar-toggle{margin-top:6px}}.header-logo{height:45px;width:205px}.login-button a{background-color:var(--second);color:#fff}.login-button a:hover{background-color:#fff;color:var(--second)!important}.fixed-top{position:fixed!important}\n"] }]
|
|
31
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.AuthService }], propDecorators: { landing: [{
|
|
20
32
|
type: Input
|
|
21
33
|
}] } });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQU94RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxnQkFBZ0I7SUFFakQsWUFDSSxRQUFrQixFQUNWLFdBQXdCO1FBRWhDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUZSLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBVzNCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFNekIsU0FBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsR0FBRyxDQUFDO1FBZHRELElBQUksQ0FBQyxXQUFXO2FBQ1gsU0FBUyxFQUFFO2FBQ1gsSUFBSSxFQUFFO2FBQ04sU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUlELGVBQWU7UUFDWCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7SUFDcEMsQ0FBQzsrR0FuQlEsZUFBZTttR0FBZixlQUFlLHdHQ1Y1QixzMENBc0NBOzs0RkQ1QmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDSSxXQUFXO3VHQW1CWixPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCB7XG4gICAgbG9nZ2VkSW46IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VG9rZW4kKClcbiAgICAgICAgICAgIC5waXBlKClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlZEluID0gcmVzID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbGFuZGluZyA9IGZhbHNlO1xuXG4gICAgbmF2aWdhdGVUb0xvZ2luKCkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvbG9naW4nO1xuICAgIH1cblxuICAgIGxvZ28gPSB0aGlzLmFwcENvbmZpZz8uY29tcGFueT8ubG9nb3M/Lm1haW5fY29udHJhc3Q/LnVybDtcbn1cbiIsIjxkaXYgY2xhc3M9XCJuYXZiYXIgbmF2YmFyLWV4cGFuZC1sZyBmaXhlZC10b3AtbmF2IGZpeGVkLXRvcFwiXG4gIFtuZ0NsYXNzXT1cInsgJ25hdmJhci1ibHVlJzogIWxhbmRpbmcgfVwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIGQtYmxvY2tcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG0tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yIGZsb2F0LXN0YXJ0XCI+XG4gICAgICAgIDxhIGhyZWY9XCIvXCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cImxvZ29cIlxuICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItbG9nb1wiXG4gICAgICAgICAgICBhbHQ9XCJzaXRlLWxvZ29cIiAvPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJuYXZiYXItdG9nZ2xlXCJcbiAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCJcbiAgICAgICAgICBkYXRhLWJzLXRhcmdldD1cIiNteU5hdmJhclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1iYXJcIj48L3NwYW4+IDxzcGFuIGNsYXNzPVwiaWNvbi1iYXJcIj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWJhclwiPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTAgbmF2LW91dGVyIG10LTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbGxhcHNlIG5hdmJhci1jb2xsYXBzZSBmbG9hdC1lbmRcIlxuICAgICAgICAgIGlkPVwibXlOYXZiYXJcIj5cbiAgICAgICAgICA8bmF2IGNsYXNzPVwibmF2YmFyIG5hdmJhci1leHBhbmQtc20gYmctbGlnaHRcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdmJhci1uYXZcIj5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gY29udGFjdC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiL1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIlwiPnt7ICdCdXR0b24uSG9tZScgfCB0cmFuc2xvY28gfX08L2E+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSAqbmdJZj1cIiFsb2dnZWRJblwiIGNsYXNzPVwibmF2LWl0ZW0gbG9naW4tYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Mb2dpbigpXCI+IGxvZyBpbjwvYT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9uYXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -3,21 +3,26 @@ import { Component, Inject, Injector, Input } from '@angular/core';
|
|
|
3
3
|
import { AdminService } from '@posiwise/admin-module-utils';
|
|
4
4
|
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
5
5
|
import { PermissionService } from '@posiwise/common-services';
|
|
6
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@posiwise/admin-module-utils";
|
|
8
|
-
import * as i2 from "@angular/
|
|
9
|
-
import * as i3 from "
|
|
10
|
-
import * as i4 from "
|
|
9
|
+
import * as i2 from "@angular/platform-browser";
|
|
10
|
+
import * as i3 from "primeng/progressspinner";
|
|
11
|
+
import * as i4 from "@angular/common";
|
|
12
|
+
import * as i5 from "@ng-bootstrap/ng-bootstrap";
|
|
13
|
+
import * as i6 from "../header/header.component";
|
|
11
14
|
export class PrivacyAndTosComponent extends AppBaseComponent {
|
|
12
|
-
constructor(adminService, injector, document) {
|
|
15
|
+
constructor(adminService, injector, document, sanitizer) {
|
|
13
16
|
super(injector);
|
|
14
17
|
this.adminService = adminService;
|
|
15
18
|
this.document = document;
|
|
19
|
+
this.sanitizer = sanitizer;
|
|
16
20
|
this.tabId = 'privacy-policy';
|
|
17
21
|
}
|
|
18
22
|
ngOnInit() {
|
|
19
23
|
this.privacyAndTos = this.appConfig?.main_tos_id;
|
|
20
24
|
this.product = this.route.snapshot.queryParamMap.get('product');
|
|
25
|
+
this.isLoaded = false;
|
|
21
26
|
this.route.params.subscribe(data => {
|
|
22
27
|
this.id = data['Id'];
|
|
23
28
|
if (this.id) {
|
|
@@ -57,20 +62,49 @@ export class PrivacyAndTosComponent extends AppBaseComponent {
|
|
|
57
62
|
});
|
|
58
63
|
}
|
|
59
64
|
getTosDetails(id) {
|
|
60
|
-
this.adminService
|
|
61
|
-
|
|
65
|
+
this.adminService
|
|
66
|
+
.getTosDetails(id)
|
|
67
|
+
.subscribe(response => {
|
|
68
|
+
const parser = new DOMParser();
|
|
69
|
+
let privacyData;
|
|
70
|
+
if (response?.privacy) {
|
|
71
|
+
const privacyDoc = parser.parseFromString(response?.privacy, 'text/html');
|
|
72
|
+
// Remove all button elements in privacy
|
|
73
|
+
const privacyButtons = privacyDoc.querySelectorAll('button');
|
|
74
|
+
privacyButtons.forEach(button => button.remove());
|
|
75
|
+
// Sanitize and store privacy HTML
|
|
76
|
+
privacyData = this.sanitizer.bypassSecurityTrustHtml(privacyDoc.body.innerHTML);
|
|
77
|
+
}
|
|
78
|
+
let tosData;
|
|
79
|
+
if (response?.tos) {
|
|
80
|
+
const tosDoc = parser.parseFromString(response?.tos, 'text/html');
|
|
81
|
+
// Remove all button elements in tos
|
|
82
|
+
const tosButtons = tosDoc.querySelectorAll('button');
|
|
83
|
+
tosButtons.forEach(button => button.remove());
|
|
84
|
+
// Sanitize and store tos HTML
|
|
85
|
+
tosData = this.sanitizer.bypassSecurityTrustHtml(tosDoc.body.innerHTML);
|
|
86
|
+
}
|
|
87
|
+
// Assign sanitized data back
|
|
88
|
+
this.data = {
|
|
89
|
+
...response,
|
|
90
|
+
privacy: privacyData,
|
|
91
|
+
tos: tosData
|
|
92
|
+
};
|
|
93
|
+
})
|
|
94
|
+
.add(() => {
|
|
95
|
+
this.isLoaded = true;
|
|
62
96
|
});
|
|
63
97
|
}
|
|
64
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyAndTosComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
65
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PrivacyAndTosComponent, selector: "pw-privacy-and-tos", inputs: { productId: "productId" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isPublic\">\n <pw-header [landing]=\"false\"></pw-header>\n</ng-container>\n\n<div class=\"col-12 d-flex\"\n *ngIf=\"!isPublic\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ productName }}</h3>\n</div>\n\n<div [ngClass]=\"{ 'container pw-tab overflow-hidden': isPublic }\">\n <div [ngClass]=\"{ dashboard: isPublic }\">\n <div [ngClass]=\"{ 'dashboard-body': isPublic }\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <h3 *ngIf=\"isPublic\">{{ product }}</h3>\n <ul ngbNav\n
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyAndTosComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }, { token: DOCUMENT }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PrivacyAndTosComponent, selector: "pw-privacy-and-tos", inputs: { productId: "productId" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isPublic\">\n <pw-header [landing]=\"false\"></pw-header>\n</ng-container>\n\n<div class=\"col-12 d-flex\"\n *ngIf=\"!isPublic\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ productName }}</h3>\n</div>\n\n\n\n\n<div [ngClass]=\"{ 'container pw-tab overflow-hidden': isPublic }\" >\n <div [ngClass]=\"{ dashboard: isPublic }\">\n <div [ngClass]=\"{ 'dashboard-body': isPublic }\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <h3 *ngIf=\"isPublic\">{{ product }}</h3>\n <div>\n\n <ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"tabId\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'privacy-policy'\">\n <a ngbNavLink>Privacy policy</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Privacy policy</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.privacy\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'terms-of-service'\">\n <a ngbNavLink>Terms of Services</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Terms of Services</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.tos\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n </ul>\n </div>\n <div class=\"w-100 text-center p-2 mt-5\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n </div>\n <div [ngbNavOutlet]=\"nav\" *ngIf=\"isLoaded\"></div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep .terms-of-service ul{list-style:disc!important;padding-left:40px!important}\n"], dependencies: [{ kind: "component", type: i3.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i5.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i5.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i5.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i5.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i5.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i5.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i6.HeaderComponent, selector: "pw-header", inputs: ["landing"] }] }); }
|
|
66
100
|
}
|
|
67
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrivacyAndTosComponent, decorators: [{
|
|
68
102
|
type: Component,
|
|
69
|
-
args: [{ selector: 'pw-privacy-and-tos', template: "<ng-container *ngIf=\"isPublic\">\n <pw-header [landing]=\"false\"></pw-header>\n</ng-container>\n\n<div class=\"col-12 d-flex\"\n *ngIf=\"!isPublic\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ productName }}</h3>\n</div>\n\n<div [ngClass]=\"{ 'container pw-tab overflow-hidden': isPublic }\">\n <div [ngClass]=\"{ dashboard: isPublic }\">\n <div [ngClass]=\"{ 'dashboard-body': isPublic }\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <h3 *ngIf=\"isPublic\">{{ product }}</h3>\n <ul ngbNav\n
|
|
103
|
+
args: [{ selector: 'pw-privacy-and-tos', template: "<ng-container *ngIf=\"isPublic\">\n <pw-header [landing]=\"false\"></pw-header>\n</ng-container>\n\n<div class=\"col-12 d-flex\"\n *ngIf=\"!isPublic\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ productName }}</h3>\n</div>\n\n\n\n\n<div [ngClass]=\"{ 'container pw-tab overflow-hidden': isPublic }\" >\n <div [ngClass]=\"{ dashboard: isPublic }\">\n <div [ngClass]=\"{ 'dashboard-body': isPublic }\">\n <div [ngClass]=\"{ 'mt-5': isPublic }\">\n <h3 *ngIf=\"isPublic\">{{ product }}</h3>\n <div>\n\n <ul ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"tabId\"\n class=\"nav-tabs\">\n <li [ngbNavItem]=\"'privacy-policy'\">\n <a ngbNavLink>Privacy policy</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Privacy policy</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.privacy\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n <li [ngbNavItem]=\"'terms-of-service'\">\n <a ngbNavLink>Terms of Services</a>\n <ng-template ngbNavContent>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body pt-1\">\n <div class=\"row\">\n <div class=\"col-12 terms-of-service\">\n <h3>Terms of Services</h3>\n <div class=\"clearfix\"></div>\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"data?.tos\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </li>\n </ul>\n </div>\n <div class=\"w-100 text-center p-2 mt-5\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n </div>\n <div [ngbNavOutlet]=\"nav\" *ngIf=\"isLoaded\"></div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep .terms-of-service ul{list-style:disc!important;padding-left:40px!important}\n"] }]
|
|
70
104
|
}], ctorParameters: () => [{ type: i1.AdminService }, { type: i0.Injector }, { type: Document, decorators: [{
|
|
71
105
|
type: Inject,
|
|
72
106
|
args: [DOCUMENT]
|
|
73
|
-
}] }], propDecorators: { productId: [{
|
|
107
|
+
}] }, { type: i2.DomSanitizer }], propDecorators: { productId: [{
|
|
74
108
|
type: Input
|
|
75
109
|
}] } });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wcml2YWN5LWFuZC10b3MvcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wcml2YWN5LWFuZC10b3MvcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBTzlELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxnQkFBZ0I7SUFxQnhELFlBQ1ksWUFBMEIsRUFDbEMsUUFBa0IsRUFDUSxRQUFrQjtRQUU1QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKUixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUVSLGFBQVEsR0FBUixRQUFRLENBQVU7UUFUaEQsVUFBSyxHQUFHLGdCQUFnQixDQUFDO0lBWXpCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7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QUFDLFFBQVE7eUNBdkJYLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1wcml2YWN5LWFuZC10b3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcml2YWN5LWFuZC10b3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ByaXZhY3ktYW5kLXRvcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByaXZhY3lBbmRUb3NDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBwcm9kdWN0SWQ6IG51bWJlcjtcblxuICAgIGlzUHVibGljOiBib29sZWFuO1xuXG4gICAgaWQ6IHN0cmluZztcblxuICAgIGRhdGE6IG9iamVjdDtcblxuICAgIHVzZXI6IFVzZXI7XG5cbiAgICBzdWJzY3JpYmVkU3Vic2NyaXB0aW9uczogeyBwcm9kdWN0czogeyBpZDogbnVtYmVyIH1bXSB9W107XG5cbiAgICBwcm9kdWN0OiBzdHJpbmc7XG5cbiAgICB0YWJJZCA9ICdwcml2YWN5LXBvbGljeSc7XG5cbiAgICBwcm9kdWN0TmFtZTogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBwcml2YWN5QW5kVG9zOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudFxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMucHJpdmFjeUFuZFRvcyA9IHRoaXMuYXBwQ29uZmlnPy5tYWluX3Rvc19pZDtcbiAgICAgICAgdGhpcy5wcm9kdWN0ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgncHJvZHVjdCcpO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlkID0gZGF0YVsnSWQnXTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSB0aGlzLmlkID09PSAnZGV0YWlscycgPyB0aGlzLnByaXZhY3lBbmRUb3MgOiB0aGlzLmlkO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VG9zRGV0YWlscyhOdW1iZXIoaWQpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHVibGljID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9kdWN0SWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1YnNjcmliZWRQcm9kdWN0KHRoaXMucHJvZHVjdElkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGlkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJJZCA9IGlkWydkYXRhJ10gfHwgJ3ByaXZhY3ktcG9saWN5JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdWJzY3JpYmVkUHJvZHVjdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN1YnNjcmliZWRQcm9kdWN0KGlkPykge1xuICAgICAgICB0aGlzLnVzZXJTdG9yZSgpLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlclN1YnNjcmlwdGlvbnModXNlci5pZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVkU3Vic2NyaXB0aW9ucyA9IHJlc3BvbnNlLnN1YnNjcmlwdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9IGlkIHx8IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkUHJvZHVjdC5pZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVkU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmliZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlZFByb2R1Y3QgPSBzdWJzY3JpYmU/LnByb2R1Y3RzLmZpbmQoeCA9PiB4Py5pZCA9PT0gcHJvZHVjdElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZFByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0cy5wdXNoKHJlcXVpcmVkUHJvZHVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3ROYW1lID0gcHJvZHVjdHNbMF0/Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VG9zRGV0YWlscyhwcm9kdWN0c1swXS5wcm9kdWN0X3ByaXZhY3lfc2VydmljZV9pZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VG9zRGV0YWlscyhpZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlLmdldFRvc0RldGFpbHMoaWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUHVibGljXCI+XG4gIDxwdy1oZWFkZXIgW2xhbmRpbmddPVwiZmFsc2VcIj48L3B3LWhlYWRlcj5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleFwiXG4gICpuZ0lmPVwiIWlzUHVibGljXCI+XG4gIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgIChjbGljayk9XCJiYWNrKClcIlxuICAgIGNsYXNzPVwicHJldmlvdXNcIj48aSBjbGFzcz1cImZhIGZhLWFycm93LWFsdC1jaXJjbGUtbGVmdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gIDxoMyBjbGFzcz1cIm10LTNcIj57eyBwcm9kdWN0TmFtZSB9fTwvaDM+XG48L2Rpdj5cblxuPGRpdiBbbmdDbGFzc109XCJ7ICdjb250YWluZXIgcHctdGFiIG92ZXJmbG93LWhpZGRlbic6IGlzUHVibGljIH1cIj5cbiAgPGRpdiBbbmdDbGFzc109XCJ7IGRhc2hib2FyZDogaXNQdWJsaWMgfVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnZGFzaGJvYXJkLWJvZHknOiBpc1B1YmxpYyB9XCI+XG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ210LTUnOiBpc1B1YmxpYyB9XCI+XG4gICAgICAgIDxoMyAqbmdJZj1cImlzUHVibGljXCI+e3sgcHJvZHVjdCB9fTwvaDM+XG4gICAgICAgIDx1bCBuZ2JOYXZcbiAgICAgICAgICAjbmF2PVwibmdiTmF2XCJcbiAgICAgICAgICBbKGFjdGl2ZUlkKV09XCJ0YWJJZFwiXG4gICAgICAgICAgY2xhc3M9XCJuYXYtdGFic1wiPlxuICAgICAgICAgIDxsaSBbbmdiTmF2SXRlbV09XCIncHJpdmFjeS1wb2xpY3knXCI+XG4gICAgICAgICAgICA8YSBuZ2JOYXZMaW5rPlByaXZhY3kgcG9saWN5PC9hPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgcHctdGFiIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtYm9keSBwdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRlcm1zLW9mLXNlcnZpY2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5Qcml2YWN5IHBvbGljeTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiZGF0YT8ucHJpdmFjeVwiPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPGxpIFtuZ2JOYXZJdGVtXT1cIid0ZXJtcy1vZi1zZXJ2aWNlJ1wiPlxuICAgICAgICAgICAgPGEgbmdiTmF2TGluaz5UZXJtcyBvZiBTZXJ2aWNlczwvYT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHB3LXRhYiBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWJvZHkgcHQtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXJtcy1vZi1zZXJ2aWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDM+VGVybXMgb2YgU2VydmljZXM8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cImRhdGE/LnRvc1wiPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wcml2YWN5LWFuZC10b3MvcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wcml2YWN5LWFuZC10b3MvcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxnQkFBZ0I7SUFzQnhELFlBQ1ksWUFBMEIsRUFDbEMsUUFBa0IsRUFDUSxRQUFrQixFQUNwQyxTQUF1QjtRQUUvQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMUixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUVSLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQVhuQyxVQUFLLEdBQUcsZ0JBQWdCLENBQUM7SUFjekIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO1FBQ2pELElB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QUMsR0FBRyxFQUFFO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDOytHQWpIUSxzQkFBc0Isc0VBeUJuQixRQUFRO21HQXpCWCxzQkFBc0IscUhDZG5DLHMrRkFnRkE7OzRGRGxFYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksb0JBQW9COzswQkE2QnpCLE1BQU07MkJBQUMsUUFBUTtvRUF4QlgsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcHJpdmFjeS1hbmQtdG9zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcml2YWN5LWFuZC10b3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcml2YWN5QW5kVG9zQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgcHJvZHVjdElkOiBudW1iZXI7XG5cbiAgICBpc1B1YmxpYzogYm9vbGVhbjtcblxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBkYXRhOiB7IHByaXZhY3k6ICcnIH07XG5cbiAgICB1c2VyOiBVc2VyO1xuXG4gICAgc3Vic2NyaWJlZFN1YnNjcmlwdGlvbnM6IHsgcHJvZHVjdHM6IHsgaWQ6IG51bWJlciB9W10gfVtdO1xuXG4gICAgcHJvZHVjdDogc3RyaW5nO1xuXG4gICAgdGFiSWQgPSAncHJpdmFjeS1wb2xpY3knO1xuXG4gICAgcHJvZHVjdE5hbWU6IHN0cmluZztcblxuICAgIHByaXZhdGUgcHJpdmFjeUFuZFRvczogbnVtYmVyO1xuICAgIGlzTG9hZGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnByaXZhY3lBbmRUb3MgPSB0aGlzLmFwcENvbmZpZz8ubWFpbl90b3NfaWQ7XG4gICAgICAgIHRoaXMucHJvZHVjdCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3Byb2R1Y3QnKTtcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlkID0gZGF0YVsnSWQnXTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSB0aGlzLmlkID09PSAnZGV0YWlscycgPyB0aGlzLnByaXZhY3lBbmRUb3MgOiB0aGlzLmlkO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VG9zRGV0YWlscyhOdW1iZXIoaWQpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHVibGljID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9kdWN0SWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1YnNjcmliZWRQcm9kdWN0KHRoaXMucHJvZHVjdElkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGlkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJJZCA9IGlkWydkYXRhJ10gfHwgJ3ByaXZhY3ktcG9saWN5JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdWJzY3JpYmVkUHJvZHVjdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN1YnNjcmliZWRQcm9kdWN0KGlkPykge1xuICAgICAgICB0aGlzLnVzZXJTdG9yZSgpLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlclN1YnNjcmlwdGlvbnModXNlci5pZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVkU3Vic2NyaXB0aW9ucyA9IHJlc3BvbnNlLnN1YnNjcmlwdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9IGlkIHx8IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkUHJvZHVjdC5pZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVkU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmliZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlZFByb2R1Y3QgPSBzdWJzY3JpYmU/LnByb2R1Y3RzLmZpbmQoeCA9PiB4Py5pZCA9PT0gcHJvZHVjdElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZFByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0cy5wdXNoKHJlcXVpcmVkUHJvZHVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3ROYW1lID0gcHJvZHVjdHNbMF0/Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VG9zRGV0YWlscyhwcm9kdWN0c1swXS5wcm9kdWN0X3ByaXZhY3lfc2VydmljZV9pZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VG9zRGV0YWlscyhpZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VG9zRGV0YWlscyhpZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcblxuICAgICAgICAgICAgICAgIGxldCBwcml2YWN5RGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2U/LnByaXZhY3kpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJpdmFjeURvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcocmVzcG9uc2U/LnByaXZhY3ksICd0ZXh0L2h0bWwnKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgYWxsIGJ1dHRvbiBlbGVtZW50cyBpbiBwcml2YWN5XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByaXZhY3lCdXR0b25zID0gcHJpdmFjeURvYy5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24nKTtcbiAgICAgICAgICAgICAgICAgICAgcHJpdmFjeUJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gYnV0dG9uLnJlbW92ZSgpKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTYW5pdGl6ZSBhbmQgc3RvcmUgcHJpdmFjeSBIVE1MXG4gICAgICAgICAgICAgICAgICAgIHByaXZhY3lEYXRhID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocHJpdmFjeURvYy5ib2R5LmlubmVySFRNTCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHRvc0RhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy50b3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9zRG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhyZXNwb25zZT8udG9zLCAndGV4dC9odG1sJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGFsbCBidXR0b24gZWxlbWVudHMgaW4gdG9zXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvc0J1dHRvbnMgPSB0b3NEb2MucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uJyk7XG4gICAgICAgICAgICAgICAgICAgIHRvc0J1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gYnV0dG9uLnJlbW92ZSgpKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTYW5pdGl6ZSBhbmQgc3RvcmUgdG9zIEhUTUxcbiAgICAgICAgICAgICAgICAgICAgdG9zRGF0YSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRvc0RvYy5ib2R5LmlubmVySFRNTCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gQXNzaWduIHNhbml0aXplZCBkYXRhIGJhY2tcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBwcml2YWN5OiBwcml2YWN5RGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdG9zOiB0b3NEYXRhXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1B1YmxpY1wiPlxuICA8cHctaGVhZGVyIFtsYW5kaW5nXT1cImZhbHNlXCI+PC9wdy1oZWFkZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXhcIlxuICAqbmdJZj1cIiFpc1B1YmxpY1wiPlxuICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICBjbGFzcz1cInByZXZpb3VzXCI+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuICA8aDMgY2xhc3M9XCJtdC0zXCI+e3sgcHJvZHVjdE5hbWUgfX08L2gzPlxuPC9kaXY+XG5cblxuXG5cbjxkaXYgW25nQ2xhc3NdPVwieyAnY29udGFpbmVyIHB3LXRhYiBvdmVyZmxvdy1oaWRkZW4nOiBpc1B1YmxpYyB9XCIgPlxuICA8ZGl2IFtuZ0NsYXNzXT1cInsgZGFzaGJvYXJkOiBpc1B1YmxpYyB9XCI+XG4gICAgPGRpdiBbbmdDbGFzc109XCJ7ICdkYXNoYm9hcmQtYm9keSc6IGlzUHVibGljIH1cIj5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnbXQtNSc6IGlzUHVibGljIH1cIj5cbiAgICAgICAgPGgzICpuZ0lmPVwiaXNQdWJsaWNcIj57eyBwcm9kdWN0IH19PC9oMz5cbiAgICAgICAgPGRpdj5cblxuICAgICAgICAgIDx1bCBuZ2JOYXZcbiAgICAgICAgICAgICNuYXY9XCJuZ2JOYXZcIlxuICAgICAgICAgICAgWyhhY3RpdmVJZCldPVwidGFiSWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtdGFic1wiPlxuICAgICAgICAgICAgPGxpIFtuZ2JOYXZJdGVtXT1cIidwcml2YWN5LXBvbGljeSdcIj5cbiAgICAgICAgICAgICAgPGEgbmdiTmF2TGluaz5Qcml2YWN5IHBvbGljeTwvYT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBwdy10YWIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtYm9keSBwdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXJtcy1vZi1zZXJ2aWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5Qcml2YWN5IHBvbGljeTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicWwtY29udGFpbmVyIHFsLXNub3cgYm9keS1xdWlsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxbC1lZGl0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZGF0YT8ucHJpdmFjeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBbbmdiTmF2SXRlbV09XCIndGVybXMtb2Ytc2VydmljZSdcIj5cbiAgICAgICAgICAgICAgPGEgbmdiTmF2TGluaz5UZXJtcyBvZiBTZXJ2aWNlczwvYT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBwdy10YWIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtYm9keSBwdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXJtcy1vZi1zZXJ2aWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5UZXJtcyBvZiBTZXJ2aWNlczwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicWwtY29udGFpbmVyIHFsLXNub3cgYm9keS1xdWlsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxbC1lZGl0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZGF0YT8udG9zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgcC0yIG10LTVcIiAqbmdJZj1cIiFpc0xvYWRlZFwiPlxuICAgICAgICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj48L3AtcHJvZ3Jlc3NTcGlubmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiICpuZ0lmPVwiaXNMb2FkZWRcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|