ctt-puro 0.70.41 → 0.70.43
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/components/puro-iframe/puro-iframe.component.mjs +37 -15
- package/esm2022/lib/components/puro-vertical-info/puro-vertical-info.component.mjs +3 -3
- package/esm2022/lib/services/mapper/mapper.service.mjs +3 -3
- package/fesm2022/ctt-puro.mjs +40 -18
- package/fesm2022/ctt-puro.mjs.map +1 -1
- package/lib/components/puro-iframe/puro-iframe.component.d.ts +6 -4
- package/package.json +1 -1
|
@@ -3,9 +3,8 @@ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/platform-browser";
|
|
5
5
|
export class PuroIframeComponent {
|
|
6
|
-
constructor(sanitizer
|
|
6
|
+
constructor(sanitizer) {
|
|
7
7
|
this.sanitizer = sanitizer;
|
|
8
|
-
this.cdr = cdr;
|
|
9
8
|
this.safeUrl = null;
|
|
10
9
|
this.isFourvenues = false;
|
|
11
10
|
this.fourvenuesContainerId = 'fourvenues-iframe';
|
|
@@ -15,37 +14,60 @@ export class PuroIframeComponent {
|
|
|
15
14
|
return;
|
|
16
15
|
this.isFourvenues = this.frameUrl.includes('fourvenues');
|
|
17
16
|
if (!this.isFourvenues) {
|
|
17
|
+
this.cleanupFourvenues();
|
|
18
18
|
this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.frameUrl);
|
|
19
|
+
return;
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
this.safeUrl = null;
|
|
22
|
+
this.loadFourvenuesScript();
|
|
23
|
+
}
|
|
24
|
+
ngOnDestroy() {
|
|
25
|
+
this.cleanupFourvenues();
|
|
23
26
|
}
|
|
24
27
|
loadFourvenuesScript() {
|
|
25
|
-
if (typeof window === 'undefined')
|
|
26
|
-
return;
|
|
27
|
-
// evitar duplicados
|
|
28
|
-
if (document.getElementById('fv-script'))
|
|
28
|
+
if (typeof window === 'undefined' || !this.frameUrl)
|
|
29
29
|
return;
|
|
30
|
+
this.cleanupFourvenues();
|
|
31
|
+
const container = document.getElementById(this.fourvenuesContainerId);
|
|
32
|
+
if (container) {
|
|
33
|
+
container.innerHTML = '';
|
|
34
|
+
}
|
|
30
35
|
const script = document.createElement('script');
|
|
31
36
|
script.id = 'fv-script';
|
|
32
37
|
script.src = this.frameUrl;
|
|
33
38
|
script.async = true;
|
|
34
39
|
document.body.appendChild(script);
|
|
35
|
-
|
|
40
|
+
this.messageListener = (event) => {
|
|
36
41
|
const data = event.data;
|
|
37
42
|
if (data?.key === 'toTop') {
|
|
38
|
-
return;
|
|
43
|
+
return;
|
|
39
44
|
}
|
|
40
|
-
}
|
|
45
|
+
};
|
|
46
|
+
window.addEventListener('message', this.messageListener);
|
|
47
|
+
}
|
|
48
|
+
cleanupFourvenues() {
|
|
49
|
+
if (typeof window === 'undefined')
|
|
50
|
+
return;
|
|
51
|
+
const oldScript = document.getElementById('fv-script');
|
|
52
|
+
if (oldScript) {
|
|
53
|
+
oldScript.remove();
|
|
54
|
+
}
|
|
55
|
+
const container = document.getElementById(this.fourvenuesContainerId);
|
|
56
|
+
if (container) {
|
|
57
|
+
container.innerHTML = '';
|
|
58
|
+
}
|
|
59
|
+
if (this.messageListener) {
|
|
60
|
+
window.removeEventListener('message', this.messageListener);
|
|
61
|
+
this.messageListener = undefined;
|
|
62
|
+
}
|
|
41
63
|
}
|
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroIframeComponent, deps: [{ token: i1.DomSanitizer }
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroIframeComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
65
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroIframeComponent, isStandalone: true, selector: "lib-puro-iframe", inputs: { frameUrl: "frameUrl" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"iframe-container generalMargin\">\n @if (isFourvenues) {\n <div [id]=\"fourvenuesContainerId\"></div>\n } @else if (safeUrl) {\n <iframe [src]=\"safeUrl\" frameborder=\"0\" allowfullscreen></iframe>\n }\n</div>\n", styles: [".iframe-container{display:flex;align-items:center;justify-content:center;overflow:hidden}.iframe-container iframe{width:100vw;height:140vh;border:none;scrollbar-width:none;-ms-overflow-style:none}.iframe-container iframe::-webkit-scrollbar{display:none}.s-list-exp .container{padding:0!important}@media (max-width: 1024px){.generalMargin{padding-inline:2rem!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
44
66
|
}
|
|
45
67
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroIframeComponent, decorators: [{
|
|
46
68
|
type: Component,
|
|
47
69
|
args: [{ selector: 'lib-puro-iframe', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"iframe-container generalMargin\">\n @if (isFourvenues) {\n <div [id]=\"fourvenuesContainerId\"></div>\n } @else if (safeUrl) {\n <iframe [src]=\"safeUrl\" frameborder=\"0\" allowfullscreen></iframe>\n }\n</div>\n", styles: [".iframe-container{display:flex;align-items:center;justify-content:center;overflow:hidden}.iframe-container iframe{width:100vw;height:140vh;border:none;scrollbar-width:none;-ms-overflow-style:none}.iframe-container iframe::-webkit-scrollbar{display:none}.s-list-exp .container{padding:0!important}@media (max-width: 1024px){.generalMargin{padding-inline:2rem!important}}\n"] }]
|
|
48
|
-
}], ctorParameters: () => [{ type: i1.DomSanitizer }
|
|
70
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { frameUrl: [{
|
|
49
71
|
type: Input
|
|
50
72
|
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1pZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pZnJhbWUvcHVyby1pZnJhbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pZnJhbWUvcHVyby1pZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FHUixNQUFNLGVBQWUsQ0FBQzs7O0FBV3ZCLE1BQU0sT0FBTyxtQkFBbUI7SUFTNUIsWUFBNkIsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQU5wRCxZQUFPLEdBQTJCLElBQUksQ0FBQztRQUN2QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQiwwQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztJQUlXLENBQUM7SUFFeEQsV0FBVztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQ3hELElBQUksQ0FBQyxRQUFRLENBQ2hCLENBQUM7WUFDRixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFNUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RSxJQUFJLFNBQVMsRUFBRTtZQUNYLFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQzVCO1FBRUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsRUFBRSxHQUFHLFdBQVcsQ0FBQztRQUN4QixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDM0IsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtZQUMzQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBRXhCLElBQUksSUFBSSxFQUFFLEdBQUcsS0FBSyxPQUFPLEVBQUU7Z0JBQ3ZCLE9BQU87YUFDVjtRQUNMLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxpQkFBaUI7UUFDckIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXO1lBQUUsT0FBTztRQUUxQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksU0FBUyxFQUFFO1lBQ1gsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3RCO1FBRUQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RSxJQUFJLFNBQVMsRUFBRTtZQUNYLFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQzsrR0E3RVEsbUJBQW1CO21HQUFuQixtQkFBbUIsa0lDbEJoQywwUEFPQSw0YURNYyxZQUFZOzs0RkFLYixtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0ksaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLG1CQUdOLHVCQUF1QixDQUFDLE1BQU07aUZBR3RDLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1wdXJvLWlmcmFtZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1pZnJhbWUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWlmcmFtZS5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9JZnJhbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZnJhbWVVcmw/OiBzdHJpbmc7XG5cbiAgICBzYWZlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsID0gbnVsbDtcbiAgICBpc0ZvdXJ2ZW51ZXMgPSBmYWxzZTtcbiAgICBmb3VydmVudWVzQ29udGFpbmVySWQgPSAnZm91cnZlbnVlcy1pZnJhbWUnO1xuXG4gICAgcHJpdmF0ZSBtZXNzYWdlTGlzdGVuZXI/OiAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4gdm9pZDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZyYW1lVXJsKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5pc0ZvdXJ2ZW51ZXMgPSB0aGlzLmZyYW1lVXJsLmluY2x1ZGVzKCdmb3VydmVudWVzJyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzRm91cnZlbnVlcykge1xuICAgICAgICAgICAgdGhpcy5jbGVhbnVwRm91cnZlbnVlcygpO1xuICAgICAgICAgICAgdGhpcy5zYWZlVXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKFxuICAgICAgICAgICAgICAgIHRoaXMuZnJhbWVVcmxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNhZmVVcmwgPSBudWxsO1xuICAgICAgICB0aGlzLmxvYWRGb3VydmVudWVzU2NyaXB0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYW51cEZvdXJ2ZW51ZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRGb3VydmVudWVzU2NyaXB0KCk6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgIXRoaXMuZnJhbWVVcmwpIHJldHVybjtcblxuICAgICAgICB0aGlzLmNsZWFudXBGb3VydmVudWVzKCk7XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5mb3VydmVudWVzQ29udGFpbmVySWQpO1xuICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgc2NyaXB0LmlkID0gJ2Z2LXNjcmlwdCc7XG4gICAgICAgIHNjcmlwdC5zcmMgPSB0aGlzLmZyYW1lVXJsO1xuICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xuXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcblxuICAgICAgICB0aGlzLm1lc3NhZ2VMaXN0ZW5lciA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gZXZlbnQuZGF0YTtcblxuICAgICAgICAgICAgaWYgKGRhdGE/LmtleSA9PT0gJ3RvVG9wJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMubWVzc2FnZUxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFudXBGb3VydmVudWVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcblxuICAgICAgICBjb25zdCBvbGRTY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnYtc2NyaXB0Jyk7XG4gICAgICAgIGlmIChvbGRTY3JpcHQpIHtcbiAgICAgICAgICAgIG9sZFNjcmlwdC5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuZm91cnZlbnVlc0NvbnRhaW5lcklkKTtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMubWVzc2FnZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlmcmFtZS1jb250YWluZXIgZ2VuZXJhbE1hcmdpblwiPlxuICAgIEBpZiAoaXNGb3VydmVudWVzKSB7XG4gICAgICAgIDxkaXYgW2lkXT1cImZvdXJ2ZW51ZXNDb250YWluZXJJZFwiPjwvZGl2PlxuICAgIH0gQGVsc2UgaWYgKHNhZmVVcmwpIHtcbiAgICAgICAgPGlmcmFtZSBbc3JjXT1cInNhZmVVcmxcIiBmcmFtZWJvcmRlcj1cIjBcIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+XG4gICAgfVxuPC9kaXY+XG4iXX0=
|
|
@@ -16,7 +16,7 @@ export class PuroVerticalInfoComponent {
|
|
|
16
16
|
return window.location.href;
|
|
17
17
|
}
|
|
18
18
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroVerticalInfoComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroVerticalInfoComponent, isStandalone: true, selector: "lib-puro-vertical-info", inputs: { pretitle: "pretitle", tag: "tag", title: "title", subtitle: "subtitle", price: "price", from: "from", to: "to", discount: "discount", currency: "currency", img: "img", socialTitle: "socialTitle", contactTitle: "contactTitle", extraTitle: "extraTitle", extraDescription: "extraDescription", fileTitle: "fileTitle", location: "location", intro: "intro", infoList: "infoList", imgList: "imgList", ndInfoList: "ndInfoList", infoButton: "infoButton", contactLinks: "contactLinks", buttonBook: "buttonBook", buttonGuests: "buttonGuests", pdfLink: "pdfLink", buttonSubscribe: "buttonSubscribe", buttonBack: "buttonBack", socialMedia: "socialMedia", hotelName: "hotelName" }, outputs: { btnBookClick: "btnBookClick" }, ngImport: i0, template: "<section class=\"vertical-info generalMargin\">\n <div class=\"vertical-info__left\">\n <div class=\"vertical-info__content\">\n <div class=\"vertical-info__main\">\n @if (pretitle) {\n <p class=\"vertical-info__pretitle\">{{ pretitle }}</p>\n }\n @if (buttonBack) {\n <a\n [href]=\"buttonBack.url\"\n class=\"btn btn__primary--outline vertical-info__btn-back\"\n [attr.aria-label]=\"buttonBack.label\"\n >{{ buttonBack.label }}</a\n >\n }\n <div>\n @if (tag) {\n <span class=\"vertical-info__tag\">{{ tag }}</span>\n }\n @if (title) {\n <h2 class=\"vertical-info__title\">{{ title }}</h2>\n }\n @if (subtitle) {\n <div\n class=\"vertical-info__subtitle\"\n [innerHTML]=\"subtitle\"\n ></div>\n }\n </div>\n <!-- TODO: add discount -->\n <div class=\"vertical-info__boxes\">\n <div class=\"vertical-info__box\">\n @if (from) {\n <p class=\"vertical-info__from\">\n {{ from }}\n </p>\n }\n @if (price) {\n <div class=\"vertical-info__price-row\">\n <p class=\"vertical-info__price\">\n {{ price.value }}{{ currency || '\u20AC' }}\n </p>\n <p class=\"vertical-info__pp\">\n {{ price.label }}\n </p>\n </div>\n } @else {\n @if (discount) {\n <p class=\"vertical-info__price\">\n {{ discount }}%\n </p>\n }\n }\n </div>\n @if (buttonSubscribe) {\n <a\n [href]=\"buttonSubscribe.url\"\n class=\"vertical-info__btn btn btn__primary--outline\"\n [attr.aria-label]=\"buttonSubscribe.label\"\n >\n {{ buttonSubscribe.label }}\n </a>\n }\n </div>\n @if (intro) {\n <div class=\"vertical-info__data\">\n @for (item of intro; track $index) {\n <div>\n @if (item.title) {\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n }\n @if (item.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n }\n </div>\n }\n </div>\n }\n @if (contactTitle && contactLinks) {\n <div\n class=\"vertical-info__additional vertical-info__additional--contact\"\n >\n <p class=\"vertical-info__small-title\">\n {{ contactTitle }}\n </p>\n\n <div class=\"vertical-info__links\">\n @for (link of contactLinks; track $index) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </div>\n </div>\n }\n @if (socialTitle) {\n <div class=\"vertical-info__social\">\n <p class=\"vertical-info__small-title\">\n {{ socialTitle }}\n </p>\n <div class=\"vertical-info__media\">\n @for (social of socialMedia; track $index) {\n <a\n [href]=\"social.url\"\n linkType=\"external\"\n [attr.aria-label]=\"social.name\"\n >\n <img\n [src]=\"social.icon\"\n [alt]=\"social.name\"\n data-no-zoom\n />\n </a>\n }\n </div>\n </div>\n }\n @if (pdfLink && pdfLink.url) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n @if (fileTitle) {\n <p class=\"vertical-info__small-title\">\n {{ fileTitle }}\n </p>\n }\n </div>\n\n <a\n [href]=\"pdfLink.url\"\n linkType=\"external\"\n class=\"btn__link\"\n [attr.aria-label]=\"pdfLink.label\"\n >{{ pdfLink.label }}</a\n >\n }\n @if (buttonGuests) {\n <a\n [href]=\"buttonGuests.url\"\n class=\"btn btn__primary--outline vertical-info__btn-full\"\n [attr.aria-label]=\"buttonGuests.label\"\n >{{ buttonGuests.label }}</a\n >\n }\n @if (buttonBook) {\n @if (buttonBook.linkType == 'component_link') {\n <a\n (click)=\"btnBookClick.emit(hotelName)\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n @if (buttonBook.linkType != 'component_link') {\n <a\n [href]=\"buttonBook.url\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n }\n </div>\n\n @if (img) {\n <img\n class=\"vertical-info__image\"\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"431\"\n height=\"531\"\n loading=\"lazy\"\n />\n }\n </div>\n\n <div class=\"vertical-info__right\">\n @if (infoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ infoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of infoList.items; track $index) {\n <li>{{ item }}</li>\n }\n </ul>\n </div>\n }\n @if (imgList && imgList.items && imgList.items.length > 0) {\n <div class=\"vertical-info__schedule\">\n <p class=\"vertical-info__title\">{{ imgList.title }}</p>\n <ul class=\"vertical-info__img-list\">\n @for (item of imgList.items; track $index) {\n <li>\n @if (item.image) {\n <img\n class=\"vertical-info__performance-img\"\n [src]=\"item.image.src\"\n [alt]=\"item.image.alt\"\n width=\"77\"\n height=\"77\"\n loading=\"lazy\"\n />\n }\n <div>\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n </div>\n </li>\n }\n </ul>\n </div>\n }\n @if (ndInfoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ ndInfoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"ndInfoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of ndInfoList.items; track $index) {\n <li>\n {{ item.title || item.name }}\n <span class=\"vertical-info__price\"\n >{{ item.price\n }}{{ item.currency || '\u20AC' }}</span\n >\n </li>\n }\n </ul>\n </div>\n }\n @if (infoButton) {\n <div class=\"vertical-info__book\">\n @if (infoButton.title) {\n <p class=\"vertical-info__title\">\n {{ infoButton.title }}\n </p>\n }\n @if (infoButton.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoButton.description\"\n ></div>\n }\n @if (infoButton.button) {\n <button\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"infoButton.button.label\"\n >\n {{ infoButton.button.label }}\n </button>\n }\n </div>\n }\n <div class=\"vertical-info__separator\"></div>\n @if (extraTitle && extraDescription) {\n <div class=\"vertical-info__additional\">\n <p class=\"vertical-info__small-title\">{{ extraTitle }}</p>\n\n <div>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"extraDescription\"\n ></div>\n </div>\n </div>\n }\n <!-- @if (location) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n <p class=\"vertical-info__small-title\">\n {{ location.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"location.description\"\n ></div>\n </div>\n\n @if (location.button) {\n <a\n [href]=\"location.button.url\"\n [linkType]=\"location.button.linkType\"\n class=\"btn btn__primary--outline vertical-info__btn-map\"\n [attr.aria-label]=\"location.button.label\"\n >{{ location.button.label }}</a\n >\n }\n } -->\n </div>\n </div>\n</section>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[src]" }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroVerticalInfoComponent, isStandalone: true, selector: "lib-puro-vertical-info", inputs: { pretitle: "pretitle", tag: "tag", title: "title", subtitle: "subtitle", price: "price", from: "from", to: "to", discount: "discount", currency: "currency", img: "img", socialTitle: "socialTitle", contactTitle: "contactTitle", extraTitle: "extraTitle", extraDescription: "extraDescription", fileTitle: "fileTitle", location: "location", intro: "intro", infoList: "infoList", imgList: "imgList", ndInfoList: "ndInfoList", infoButton: "infoButton", contactLinks: "contactLinks", buttonBook: "buttonBook", buttonGuests: "buttonGuests", pdfLink: "pdfLink", buttonSubscribe: "buttonSubscribe", buttonBack: "buttonBack", socialMedia: "socialMedia", hotelName: "hotelName" }, outputs: { btnBookClick: "btnBookClick" }, ngImport: i0, template: "<section class=\"vertical-info generalMargin\">\n <div class=\"vertical-info__left\">\n <div class=\"vertical-info__content\">\n <div class=\"vertical-info__main\">\n @if (pretitle) {\n <p class=\"vertical-info__pretitle\">{{ pretitle }}</p>\n }\n @if (buttonBack) {\n <a\n [href]=\"buttonBack.url\"\n class=\"btn btn__primary--outline vertical-info__btn-back\"\n [attr.aria-label]=\"buttonBack.label\"\n >{{ buttonBack.label }}</a\n >\n }\n <div>\n @if (tag) {\n <span class=\"vertical-info__tag\">{{ tag }}</span>\n }\n @if (title) {\n <h2 class=\"vertical-info__title\">{{ title }}</h2>\n }\n @if (subtitle) {\n <div\n class=\"vertical-info__subtitle\"\n [innerHTML]=\"subtitle\"\n ></div>\n }\n </div>\n <!-- TODO: add discount -->\n <div class=\"vertical-info__boxes\">\n <div class=\"vertical-info__box\">\n @if (from) {\n <p class=\"vertical-info__from\">\n {{ from }}\n </p>\n }\n @if (price) {\n <div class=\"vertical-info__price-row\">\n <p class=\"vertical-info__price\">\n {{ price.value }}{{ currency || '\u20AC' }}\n </p>\n <p class=\"vertical-info__pp\">\n {{ price.label }}\n </p>\n </div>\n } @else {\n @if (discount) {\n <p class=\"vertical-info__price\">\n {{ discount }}%\n </p>\n }\n }\n </div>\n @if (buttonSubscribe) {\n <a\n [href]=\"buttonSubscribe.url\"\n class=\"vertical-info__btn btn btn__primary--outline\"\n [attr.aria-label]=\"buttonSubscribe.label\"\n >\n {{ buttonSubscribe.label }}\n </a>\n }\n </div>\n @if (intro) {\n <div class=\"vertical-info__data\">\n @for (item of intro; track $index) {\n <div>\n @if (item.title) {\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n }\n @if (item.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n }\n </div>\n }\n </div>\n }\n @if (contactTitle && contactLinks) {\n <div\n class=\"vertical-info__additional vertical-info__additional--contact\"\n >\n <p class=\"vertical-info__small-title\">\n {{ contactTitle }}\n </p>\n\n <div class=\"vertical-info__links\">\n @for (link of contactLinks; track $index) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </div>\n </div>\n }\n @if (socialMedia && socialMedia.length > 0) {\n <div class=\"vertical-info__social\">\n @if(socialTitle){\n <p class=\"vertical-info__small-title\">\n {{ socialTitle }}\n </p>\n }\n <div class=\"vertical-info__media\">\n @for (social of socialMedia; track $index) {\n <a\n [href]=\"social.url\"\n linkType=\"external\"\n [attr.aria-label]=\"social.name\"\n >\n <img\n [src]=\"social.icon\"\n [alt]=\"social.name\"\n data-no-zoom\n />\n </a>\n }\n </div>\n </div>\n }\n @if (pdfLink && pdfLink.url) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n @if (fileTitle) {\n <p class=\"vertical-info__small-title\">\n {{ fileTitle }}\n </p>\n }\n </div>\n\n <a\n [href]=\"pdfLink.url\"\n linkType=\"external\"\n class=\"btn__link\"\n [attr.aria-label]=\"pdfLink.label\"\n >{{ pdfLink.label }}</a\n >\n }\n @if (buttonGuests) {\n <a\n [href]=\"buttonGuests.url\"\n class=\"btn btn__primary--outline vertical-info__btn-full\"\n [attr.aria-label]=\"buttonGuests.label\"\n >{{ buttonGuests.label }}</a\n >\n }\n @if (buttonBook) {\n @if (buttonBook.linkType == 'component_link') {\n <a\n (click)=\"btnBookClick.emit(hotelName)\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n @if (buttonBook.linkType != 'component_link') {\n <a\n [href]=\"buttonBook.url\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n }\n </div>\n\n @if (img) {\n <img\n class=\"vertical-info__image\"\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"431\"\n height=\"531\"\n loading=\"lazy\"\n />\n }\n </div>\n\n <div class=\"vertical-info__right\">\n @if (infoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ infoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of infoList.items; track $index) {\n <li>{{ item }}</li>\n }\n </ul>\n </div>\n }\n @if (imgList && imgList.items && imgList.items.length > 0) {\n <div class=\"vertical-info__schedule\">\n <p class=\"vertical-info__title\">{{ imgList.title }}</p>\n <ul class=\"vertical-info__img-list\">\n @for (item of imgList.items; track $index) {\n <li>\n @if (item.image) {\n <img\n class=\"vertical-info__performance-img\"\n [src]=\"item.image.src\"\n [alt]=\"item.image.alt\"\n width=\"77\"\n height=\"77\"\n loading=\"lazy\"\n />\n }\n <div>\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n </div>\n </li>\n }\n </ul>\n </div>\n }\n @if (ndInfoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ ndInfoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"ndInfoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of ndInfoList.items; track $index) {\n <li>\n {{ item.title || item.name }}\n <span class=\"vertical-info__price\"\n >{{ item.price\n }}{{ item.currency || '\u20AC' }}</span\n >\n </li>\n }\n </ul>\n </div>\n }\n @if (infoButton) {\n <div class=\"vertical-info__book\">\n @if (infoButton.title) {\n <p class=\"vertical-info__title\">\n {{ infoButton.title }}\n </p>\n }\n @if (infoButton.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoButton.description\"\n ></div>\n }\n @if (infoButton.button) {\n <button\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"infoButton.button.label\"\n >\n {{ infoButton.button.label }}\n </button>\n }\n </div>\n }\n <div class=\"vertical-info__separator\"></div>\n @if (extraTitle && extraDescription) {\n <div class=\"vertical-info__additional\">\n <p class=\"vertical-info__small-title\">{{ extraTitle }}</p>\n\n <div>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"extraDescription\"\n ></div>\n </div>\n </div>\n }\n <!-- @if (location) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n <p class=\"vertical-info__small-title\">\n {{ location.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"location.description\"\n ></div>\n </div>\n\n @if (location.button) {\n <a\n [href]=\"location.button.url\"\n [linkType]=\"location.button.linkType\"\n class=\"btn btn__primary--outline vertical-info__btn-map\"\n [attr.aria-label]=\"location.button.label\"\n >{{ location.button.label }}</a\n >\n }\n } -->\n </div>\n </div>\n</section>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[src]" }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
20
|
}
|
|
21
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroVerticalInfoComponent, decorators: [{
|
|
22
22
|
type: Component,
|
|
@@ -24,7 +24,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
24
24
|
CommonModule,
|
|
25
25
|
AutoImageZoomWrapperDirective,
|
|
26
26
|
PuroLinkTypeDirective,
|
|
27
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"vertical-info generalMargin\">\n <div class=\"vertical-info__left\">\n <div class=\"vertical-info__content\">\n <div class=\"vertical-info__main\">\n @if (pretitle) {\n <p class=\"vertical-info__pretitle\">{{ pretitle }}</p>\n }\n @if (buttonBack) {\n <a\n [href]=\"buttonBack.url\"\n class=\"btn btn__primary--outline vertical-info__btn-back\"\n [attr.aria-label]=\"buttonBack.label\"\n >{{ buttonBack.label }}</a\n >\n }\n <div>\n @if (tag) {\n <span class=\"vertical-info__tag\">{{ tag }}</span>\n }\n @if (title) {\n <h2 class=\"vertical-info__title\">{{ title }}</h2>\n }\n @if (subtitle) {\n <div\n class=\"vertical-info__subtitle\"\n [innerHTML]=\"subtitle\"\n ></div>\n }\n </div>\n <!-- TODO: add discount -->\n <div class=\"vertical-info__boxes\">\n <div class=\"vertical-info__box\">\n @if (from) {\n <p class=\"vertical-info__from\">\n {{ from }}\n </p>\n }\n @if (price) {\n <div class=\"vertical-info__price-row\">\n <p class=\"vertical-info__price\">\n {{ price.value }}{{ currency || '\u20AC' }}\n </p>\n <p class=\"vertical-info__pp\">\n {{ price.label }}\n </p>\n </div>\n } @else {\n @if (discount) {\n <p class=\"vertical-info__price\">\n {{ discount }}%\n </p>\n }\n }\n </div>\n @if (buttonSubscribe) {\n <a\n [href]=\"buttonSubscribe.url\"\n class=\"vertical-info__btn btn btn__primary--outline\"\n [attr.aria-label]=\"buttonSubscribe.label\"\n >\n {{ buttonSubscribe.label }}\n </a>\n }\n </div>\n @if (intro) {\n <div class=\"vertical-info__data\">\n @for (item of intro; track $index) {\n <div>\n @if (item.title) {\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n }\n @if (item.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n }\n </div>\n }\n </div>\n }\n @if (contactTitle && contactLinks) {\n <div\n class=\"vertical-info__additional vertical-info__additional--contact\"\n >\n <p class=\"vertical-info__small-title\">\n {{ contactTitle }}\n </p>\n\n <div class=\"vertical-info__links\">\n @for (link of contactLinks; track $index) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </div>\n </div>\n }\n @if (socialTitle) {\n <div class=\"vertical-info__social\">\n <p class=\"vertical-info__small-title\">\n {{ socialTitle }}\n </p>\n <div class=\"vertical-info__media\">\n @for (social of socialMedia; track $index) {\n <a\n [href]=\"social.url\"\n linkType=\"external\"\n [attr.aria-label]=\"social.name\"\n >\n <img\n [src]=\"social.icon\"\n [alt]=\"social.name\"\n data-no-zoom\n />\n </a>\n }\n </div>\n </div>\n }\n @if (pdfLink && pdfLink.url) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n @if (fileTitle) {\n <p class=\"vertical-info__small-title\">\n {{ fileTitle }}\n </p>\n }\n </div>\n\n <a\n [href]=\"pdfLink.url\"\n linkType=\"external\"\n class=\"btn__link\"\n [attr.aria-label]=\"pdfLink.label\"\n >{{ pdfLink.label }}</a\n >\n }\n @if (buttonGuests) {\n <a\n [href]=\"buttonGuests.url\"\n class=\"btn btn__primary--outline vertical-info__btn-full\"\n [attr.aria-label]=\"buttonGuests.label\"\n >{{ buttonGuests.label }}</a\n >\n }\n @if (buttonBook) {\n @if (buttonBook.linkType == 'component_link') {\n <a\n (click)=\"btnBookClick.emit(hotelName)\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n @if (buttonBook.linkType != 'component_link') {\n <a\n [href]=\"buttonBook.url\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n }\n </div>\n\n @if (img) {\n <img\n class=\"vertical-info__image\"\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"431\"\n height=\"531\"\n loading=\"lazy\"\n />\n }\n </div>\n\n <div class=\"vertical-info__right\">\n @if (infoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ infoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of infoList.items; track $index) {\n <li>{{ item }}</li>\n }\n </ul>\n </div>\n }\n @if (imgList && imgList.items && imgList.items.length > 0) {\n <div class=\"vertical-info__schedule\">\n <p class=\"vertical-info__title\">{{ imgList.title }}</p>\n <ul class=\"vertical-info__img-list\">\n @for (item of imgList.items; track $index) {\n <li>\n @if (item.image) {\n <img\n class=\"vertical-info__performance-img\"\n [src]=\"item.image.src\"\n [alt]=\"item.image.alt\"\n width=\"77\"\n height=\"77\"\n loading=\"lazy\"\n />\n }\n <div>\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n </div>\n </li>\n }\n </ul>\n </div>\n }\n @if (ndInfoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ ndInfoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"ndInfoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of ndInfoList.items; track $index) {\n <li>\n {{ item.title || item.name }}\n <span class=\"vertical-info__price\"\n >{{ item.price\n }}{{ item.currency || '\u20AC' }}</span\n >\n </li>\n }\n </ul>\n </div>\n }\n @if (infoButton) {\n <div class=\"vertical-info__book\">\n @if (infoButton.title) {\n <p class=\"vertical-info__title\">\n {{ infoButton.title }}\n </p>\n }\n @if (infoButton.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoButton.description\"\n ></div>\n }\n @if (infoButton.button) {\n <button\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"infoButton.button.label\"\n >\n {{ infoButton.button.label }}\n </button>\n }\n </div>\n }\n <div class=\"vertical-info__separator\"></div>\n @if (extraTitle && extraDescription) {\n <div class=\"vertical-info__additional\">\n <p class=\"vertical-info__small-title\">{{ extraTitle }}</p>\n\n <div>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"extraDescription\"\n ></div>\n </div>\n </div>\n }\n <!-- @if (location) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n <p class=\"vertical-info__small-title\">\n {{ location.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"location.description\"\n ></div>\n </div>\n\n @if (location.button) {\n <a\n [href]=\"location.button.url\"\n [linkType]=\"location.button.linkType\"\n class=\"btn btn__primary--outline vertical-info__btn-map\"\n [attr.aria-label]=\"location.button.label\"\n >{{ location.button.label }}</a\n >\n }\n } -->\n </div>\n </div>\n</section>\n" }]
|
|
27
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"vertical-info generalMargin\">\n <div class=\"vertical-info__left\">\n <div class=\"vertical-info__content\">\n <div class=\"vertical-info__main\">\n @if (pretitle) {\n <p class=\"vertical-info__pretitle\">{{ pretitle }}</p>\n }\n @if (buttonBack) {\n <a\n [href]=\"buttonBack.url\"\n class=\"btn btn__primary--outline vertical-info__btn-back\"\n [attr.aria-label]=\"buttonBack.label\"\n >{{ buttonBack.label }}</a\n >\n }\n <div>\n @if (tag) {\n <span class=\"vertical-info__tag\">{{ tag }}</span>\n }\n @if (title) {\n <h2 class=\"vertical-info__title\">{{ title }}</h2>\n }\n @if (subtitle) {\n <div\n class=\"vertical-info__subtitle\"\n [innerHTML]=\"subtitle\"\n ></div>\n }\n </div>\n <!-- TODO: add discount -->\n <div class=\"vertical-info__boxes\">\n <div class=\"vertical-info__box\">\n @if (from) {\n <p class=\"vertical-info__from\">\n {{ from }}\n </p>\n }\n @if (price) {\n <div class=\"vertical-info__price-row\">\n <p class=\"vertical-info__price\">\n {{ price.value }}{{ currency || '\u20AC' }}\n </p>\n <p class=\"vertical-info__pp\">\n {{ price.label }}\n </p>\n </div>\n } @else {\n @if (discount) {\n <p class=\"vertical-info__price\">\n {{ discount }}%\n </p>\n }\n }\n </div>\n @if (buttonSubscribe) {\n <a\n [href]=\"buttonSubscribe.url\"\n class=\"vertical-info__btn btn btn__primary--outline\"\n [attr.aria-label]=\"buttonSubscribe.label\"\n >\n {{ buttonSubscribe.label }}\n </a>\n }\n </div>\n @if (intro) {\n <div class=\"vertical-info__data\">\n @for (item of intro; track $index) {\n <div>\n @if (item.title) {\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n }\n @if (item.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n }\n </div>\n }\n </div>\n }\n @if (contactTitle && contactLinks) {\n <div\n class=\"vertical-info__additional vertical-info__additional--contact\"\n >\n <p class=\"vertical-info__small-title\">\n {{ contactTitle }}\n </p>\n\n <div class=\"vertical-info__links\">\n @for (link of contactLinks; track $index) {\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n }\n </div>\n </div>\n }\n @if (socialMedia && socialMedia.length > 0) {\n <div class=\"vertical-info__social\">\n @if(socialTitle){\n <p class=\"vertical-info__small-title\">\n {{ socialTitle }}\n </p>\n }\n <div class=\"vertical-info__media\">\n @for (social of socialMedia; track $index) {\n <a\n [href]=\"social.url\"\n linkType=\"external\"\n [attr.aria-label]=\"social.name\"\n >\n <img\n [src]=\"social.icon\"\n [alt]=\"social.name\"\n data-no-zoom\n />\n </a>\n }\n </div>\n </div>\n }\n @if (pdfLink && pdfLink.url) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n @if (fileTitle) {\n <p class=\"vertical-info__small-title\">\n {{ fileTitle }}\n </p>\n }\n </div>\n\n <a\n [href]=\"pdfLink.url\"\n linkType=\"external\"\n class=\"btn__link\"\n [attr.aria-label]=\"pdfLink.label\"\n >{{ pdfLink.label }}</a\n >\n }\n @if (buttonGuests) {\n <a\n [href]=\"buttonGuests.url\"\n class=\"btn btn__primary--outline vertical-info__btn-full\"\n [attr.aria-label]=\"buttonGuests.label\"\n >{{ buttonGuests.label }}</a\n >\n }\n @if (buttonBook) {\n @if (buttonBook.linkType == 'component_link') {\n <a\n (click)=\"btnBookClick.emit(hotelName)\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n @if (buttonBook.linkType != 'component_link') {\n <a\n [href]=\"buttonBook.url\"\n class=\"btn btn__primary vertical-info__btn-full\"\n [attr.aria-label]=\"buttonBook.label\"\n >{{ buttonBook.label }}</a\n >\n }\n }\n </div>\n\n @if (img) {\n <img\n class=\"vertical-info__image\"\n [src]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"431\"\n height=\"531\"\n loading=\"lazy\"\n />\n }\n </div>\n\n <div class=\"vertical-info__right\">\n @if (infoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ infoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of infoList.items; track $index) {\n <li>{{ item }}</li>\n }\n </ul>\n </div>\n }\n @if (imgList && imgList.items && imgList.items.length > 0) {\n <div class=\"vertical-info__schedule\">\n <p class=\"vertical-info__title\">{{ imgList.title }}</p>\n <ul class=\"vertical-info__img-list\">\n @for (item of imgList.items; track $index) {\n <li>\n @if (item.image) {\n <img\n class=\"vertical-info__performance-img\"\n [src]=\"item.image.src\"\n [alt]=\"item.image.alt\"\n width=\"77\"\n height=\"77\"\n loading=\"lazy\"\n />\n }\n <div>\n <p class=\"vertical-info__small-title\">\n {{ item.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"item.description\"\n ></div>\n </div>\n </li>\n }\n </ul>\n </div>\n }\n @if (ndInfoList) {\n <div class=\"vertical-info__info-description\">\n <p class=\"vertical-info__title\">{{ ndInfoList.title }}</p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"ndInfoList.description\"\n ></div>\n <ul class=\"vertical-info__list\">\n @for (item of ndInfoList.items; track $index) {\n <li>\n {{ item.title || item.name }}\n <span class=\"vertical-info__price\"\n >{{ item.price\n }}{{ item.currency || '\u20AC' }}</span\n >\n </li>\n }\n </ul>\n </div>\n }\n @if (infoButton) {\n <div class=\"vertical-info__book\">\n @if (infoButton.title) {\n <p class=\"vertical-info__title\">\n {{ infoButton.title }}\n </p>\n }\n @if (infoButton.description) {\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"infoButton.description\"\n ></div>\n }\n @if (infoButton.button) {\n <button\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"infoButton.button.label\"\n >\n {{ infoButton.button.label }}\n </button>\n }\n </div>\n }\n <div class=\"vertical-info__separator\"></div>\n @if (extraTitle && extraDescription) {\n <div class=\"vertical-info__additional\">\n <p class=\"vertical-info__small-title\">{{ extraTitle }}</p>\n\n <div>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"extraDescription\"\n ></div>\n </div>\n </div>\n }\n <!-- @if (location) {\n <div\n class=\"vertical-info__additional vertical-info__additional--location\"\n >\n <p class=\"vertical-info__small-title\">\n {{ location.title }}\n </p>\n <div\n class=\"vertical-info__description\"\n [innerHTML]=\"location.description\"\n ></div>\n </div>\n\n @if (location.button) {\n <a\n [href]=\"location.button.url\"\n [linkType]=\"location.button.linkType\"\n class=\"btn btn__primary--outline vertical-info__btn-map\"\n [attr.aria-label]=\"location.button.label\"\n >{{ location.button.label }}</a\n >\n }\n } -->\n </div>\n </div>\n</section>\n" }]
|
|
28
28
|
}], ctorParameters: () => [{ type: Object, decorators: [{
|
|
29
29
|
type: Inject,
|
|
30
30
|
args: [PLATFORM_ID]
|
|
@@ -89,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
89
89
|
}], btnBookClick: [{
|
|
90
90
|
type: Output
|
|
91
91
|
}] } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby12ZXJ0aWNhbC1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tdmVydGljYWwtaW5mby9wdXJvLXZlcnRpY2FsLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby12ZXJ0aWNhbC1pbmZvL3B1cm8tdmVydGljYWwtaW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLHFCQUFxQixHQUN4QixNQUFNLGtCQUFrQixDQUFDOztBQWUxQixNQUFNLE9BQU8seUJBQXlCO0lBaUNsQyxZQUF5QyxVQUFrQjtRQUFsQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRmpELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVrQixDQUFDO0lBRS9ELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDbkQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDOytHQTFDUSx5QkFBeUIsa0JBaUNkLFdBQVc7bUdBakN0Qix5QkFBeUIsbXlCQzVCdEMsMjdhQXVUQSx5RERuU1EsWUFBWSwrQkFDWiw2QkFBNkIscURBQzdCLHFCQUFxQjs7NEZBTWhCLHlCQUF5QjtrQkFackMsU0FBUzsrQkFDSSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osNkJBQTZCO3dCQUM3QixxQkFBcUI7cUJBQ3hCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFtQ2xDLE1BQU07MkJBQUMsV0FBVzt5Q0FoQ3RCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQXV0b0ltYWdlWm9vbVdyYXBwZXJEaXJlY3RpdmUsXG4gICAgUHVyb0xpbmtUeXBlRGlyZWN0aXZlLFxufSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFB1cm9CdXR0b25JLCBQdXJvSW1hZ2VJIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tdmVydGljYWwtaW5mbycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQXV0b0ltYWdlWm9vbVdyYXBwZXJEaXJlY3RpdmUsXG4gICAgICAgIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wdXJvLXZlcnRpY2FsLWluZm8uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLXZlcnRpY2FsLWluZm8uY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvVmVydGljYWxJbmZvQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBwcmV0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSB0YWc/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHJpY2U/OiBQdXJvUHJpY2VJdGVtSTtcbiAgICBASW5wdXQoKSBmcm9tPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRvPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRpc2NvdW50PzogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGN1cnJlbmN5Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGltZz86IFB1cm9JbWFnZUk7XG4gICAgQElucHV0KCkgc29jaWFsVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29udGFjdFRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGV4dHJhVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZXh0cmFEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBASW5wdXQoKSBmaWxlVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbG9jYXRpb24/OiBQdXJvVmVydGljYWxJbmZvTG9jYXRpb247XG4gICAgQElucHV0KCkgaW50cm8/OiBQdXJvVmVydGljYWxJbmZvSW50cm9bXTtcbiAgICBASW5wdXQoKSBpbmZvTGlzdD86IFB1cm9WZXJ0aWNhbEluZm9MaXN0O1xuICAgIEBJbnB1dCgpIGltZ0xpc3Q/OiBQdXJvVmVydGljYWxJbmZvSW1hZ2VMaXN0O1xuICAgIEBJbnB1dCgpIG5kSW5mb0xpc3Q/OiBQdXJvVmVydGljYWxJbmZvTmRMaXN0O1xuICAgIEBJbnB1dCgpIGluZm9CdXR0b24/OiBQdXJvVmVydGljYWxJbmZvV2l0aEJ1dHRvbjtcbiAgICBASW5wdXQoKSBjb250YWN0TGlua3M/OiBQdXJvQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIGJ1dHRvbkJvb2s/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBidXR0b25HdWVzdHM/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBwZGZMaW5rPzogUHVyb0J1dHRvbkk7XG4gICAgQElucHV0KCkgYnV0dG9uU3Vic2NyaWJlPzogUHVyb0J1dHRvbkk7XG4gICAgQElucHV0KCkgYnV0dG9uQmFjaz86IFB1cm9CdXR0b25JO1xuICAgIEBJbnB1dCgpIHNvY2lhbE1lZGlhPzogUHVyb1ZlcnRpY2FsSW5mb1NvY2lhbE1lZGlhSXRlbVtdO1xuICAgIEBJbnB1dCgpIGhvdGVsTmFtZT86IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBidG5Cb29rQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCkge31cblxuICAgIGdldCBzaGFyZVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGl0bGUgPz8gJyc7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gJyc7XG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0xvY2F0aW9uIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBidXR0b24/OiBQdXJvQnV0dG9uSTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ludHJvIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0xpc3Qge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGl0ZW1zPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ltYWdlTGlzdCB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgaXRlbXM/OiBQdXJvVmVydGljYWxJbmZvSW1hZ2VbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ltYWdlIHtcbiAgICBpbWFnZT86IFB1cm9JbWFnZUk7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb05kTGlzdCB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgaXRlbXM/OiBQdXJvVmVydGljYWxJbmZvTmRbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb05kIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHByaWNlPzogbnVtYmVyO1xuICAgIGN1cnJlbmN5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9WZXJ0aWNhbEluZm9XaXRoQnV0dG9uIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBidXR0b24/OiBQdXJvQnV0dG9uSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvVmVydGljYWxJbmZvU29jaWFsTWVkaWFJdGVtIHtcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9QcmljZUl0ZW1Je1xuICAgIHZhbHVlPzogbnVtYmVyO1xuICAgIGxhYmVsPzogc3RyaW5nO1xufSIsIjxzZWN0aW9uIGNsYXNzPVwidmVydGljYWwtaW5mbyBnZW5lcmFsTWFyZ2luXCI+XG4gICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2xlZnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19tYWluXCI+XG4gICAgICAgICAgICAgICAgQGlmIChwcmV0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3ByZXRpdGxlXCI+e3sgcHJldGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uQmFjaykge1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiYnV0dG9uQmFjay51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5LS1vdXRsaW5lIHZlcnRpY2FsLWluZm9fX2J0bi1iYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uQmFjay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgYnV0dG9uQmFjay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3RhZ1wiPnt7IHRhZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX190aXRsZVwiPnt7IHRpdGxlIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHN1YnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJzdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIFRPRE86IGFkZCBkaXNjb3VudCAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fYm94ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19mcm9tXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZyb20gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByaWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3ByaWNlLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3ByaWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcmljZS52YWx1ZSB9fXt7IGN1cnJlbmN5IHx8ICfigqwnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19wcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJpY2UubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkaXNjb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3ByaWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkaXNjb3VudCB9fSVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uU3Vic2NyaWJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImJ1dHRvblN1YnNjcmliZS51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fYnRuIGJ0biBidG5fX3ByaW1hcnktLW91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uU3Vic2NyaWJlLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBidXR0b25TdWJzY3JpYmUubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIEBpZiAoaW50cm8pIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2RhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaW50cm87IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zbWFsbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGNvbnRhY3RUaXRsZSAmJiBjb250YWN0TGlua3MpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsIHZlcnRpY2FsLWluZm9fX2FkZGl0aW9uYWwtLWNvbnRhY3RcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NtYWxsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29udGFjdFRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19saW5rc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGxpbmsgb2YgY29udGFjdExpbmtzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJsaW5rLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGluay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgbGluay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHNvY2lhbFRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zb2NpYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fc21hbGwtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzb2NpYWxUaXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX21lZGlhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc29jaWFsIG9mIHNvY2lhbE1lZGlhOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cInNvY2lhbC51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU9XCJleHRlcm5hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNvY2lhbC5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwic29jaWFsLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwic29jaWFsLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbm8tem9vbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChwZGZMaW5rICYmIHBkZkxpbmsudXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fYWRkaXRpb25hbCB2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsLS1sb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsZVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zbWFsbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWxlVGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJwZGZMaW5rLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZT1cImV4dGVybmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicGRmTGluay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgcGRmTGluay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uR3Vlc3RzKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b25HdWVzdHMudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeS0tb3V0bGluZSB2ZXJ0aWNhbC1pbmZvX19idG4tZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbkd1ZXN0cy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgYnV0dG9uR3Vlc3RzLmxhYmVsIH19PC9hXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChidXR0b25Cb29rKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uQm9vay5saW5rVHlwZSA9PSAnY29tcG9uZW50X2xpbmsnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJidG5Cb29rQ2xpY2suZW1pdChob3RlbE5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnkgdmVydGljYWwtaW5mb19fYnRuLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uQm9vay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGJ1dHRvbkJvb2subGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGJ1dHRvbkJvb2subGlua1R5cGUgIT0gJ2NvbXBvbmVudF9saW5rJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b25Cb29rLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IHZlcnRpY2FsLWluZm9fX2J0bi1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbkJvb2subGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBidXR0b25Cb29rLmxhYmVsIH19PC9hXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgQGlmIChpbWcpIHtcbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19faW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltZy5zcmNcIlxuICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImltZy5hbHRcIlxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjQzMVwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjUzMVwiXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fcmlnaHRcIj5cbiAgICAgICAgICAgIEBpZiAoaW5mb0xpc3QpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19faW5mby1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3RpdGxlXCI+e3sgaW5mb0xpc3QudGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJpbmZvTGlzdC5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidmVydGljYWwtaW5mb19fbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpbmZvTGlzdC5pdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPnt7IGl0ZW0gfX08L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChpbWdMaXN0ICYmIGltZ0xpc3QuaXRlbXMgJiYgaW1nTGlzdC5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NjaGVkdWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fdGl0bGVcIj57eyBpbWdMaXN0LnRpdGxlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19pbWctbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpbWdMaXN0Lml0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5pbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fcGVyZm9ybWFuY2UtaW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uaW1hZ2Uuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uaW1hZ2UuYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjc3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zbWFsbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChuZEluZm9MaXN0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2luZm8tZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX190aXRsZVwiPnt7IG5kSW5mb0xpc3QudGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJuZEluZm9MaXN0LmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIG5kSW5mb0xpc3QuaXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB8fCBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19wcmljZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgaXRlbS5wcmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX17eyBpdGVtLmN1cnJlbmN5IHx8ICfigqwnIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChpbmZvQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2Jvb2tcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpbmZvQnV0dG9uLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaW5mb0J1dHRvbi50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaW5mb0J1dHRvbi5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaW5mb0J1dHRvbi5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpbmZvQnV0dG9uLmJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeS0tb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpbmZvQnV0dG9uLmJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaW5mb0J1dHRvbi5idXR0b24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fc2VwYXJhdG9yXCI+PC9kaXY+XG4gICAgICAgICAgICBAaWYgKGV4dHJhVGl0bGUgJiYgZXh0cmFEZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fc21hbGwtdGl0bGVcIj57eyBleHRyYVRpdGxlIH19PC9wPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJleHRyYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8IS0tIEBpZiAobG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fYWRkaXRpb25hbCB2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsLS1sb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NtYWxsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2NhdGlvbi50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJsb2NhdGlvbi5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIEBpZiAobG9jYXRpb24uYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJsb2NhdGlvbi5idXR0b24udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJsb2NhdGlvbi5idXR0b24ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5LS1vdXRsaW5lIHZlcnRpY2FsLWluZm9fX2J0bi1tYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsb2NhdGlvbi5idXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGxvY2F0aW9uLmJ1dHRvbi5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby12ZXJ0aWNhbC1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9jb21wb25lbnRzL3B1cm8tdmVydGljYWwtaW5mby9wdXJvLXZlcnRpY2FsLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby12ZXJ0aWNhbC1pbmZvL3B1cm8tdmVydGljYWwtaW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLHFCQUFxQixHQUN4QixNQUFNLGtCQUFrQixDQUFDOztBQWUxQixNQUFNLE9BQU8seUJBQXlCO0lBaUNsQyxZQUF5QyxVQUFrQjtRQUFsQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRmpELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVrQixDQUFDO0lBRS9ELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDbkQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDOytHQTFDUSx5QkFBeUIsa0JBaUNkLFdBQVc7bUdBakN0Qix5QkFBeUIsbXlCQzVCdEMsdWliQXlUQSx5RERyU1EsWUFBWSwrQkFDWiw2QkFBNkIscURBQzdCLHFCQUFxQjs7NEZBTWhCLHlCQUF5QjtrQkFackMsU0FBUzsrQkFDSSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osNkJBQTZCO3dCQUM3QixxQkFBcUI7cUJBQ3hCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFtQ2xDLE1BQU07MkJBQUMsV0FBVzt5Q0FoQ3RCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQXV0b0ltYWdlWm9vbVdyYXBwZXJEaXJlY3RpdmUsXG4gICAgUHVyb0xpbmtUeXBlRGlyZWN0aXZlLFxufSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFB1cm9CdXR0b25JLCBQdXJvSW1hZ2VJIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tdmVydGljYWwtaW5mbycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQXV0b0ltYWdlWm9vbVdyYXBwZXJEaXJlY3RpdmUsXG4gICAgICAgIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wdXJvLXZlcnRpY2FsLWluZm8uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLXZlcnRpY2FsLWluZm8uY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvVmVydGljYWxJbmZvQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBwcmV0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSB0YWc/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHJpY2U/OiBQdXJvUHJpY2VJdGVtSTtcbiAgICBASW5wdXQoKSBmcm9tPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRvPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRpc2NvdW50PzogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGN1cnJlbmN5Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGltZz86IFB1cm9JbWFnZUk7XG4gICAgQElucHV0KCkgc29jaWFsVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29udGFjdFRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGV4dHJhVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZXh0cmFEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBASW5wdXQoKSBmaWxlVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbG9jYXRpb24/OiBQdXJvVmVydGljYWxJbmZvTG9jYXRpb247XG4gICAgQElucHV0KCkgaW50cm8/OiBQdXJvVmVydGljYWxJbmZvSW50cm9bXTtcbiAgICBASW5wdXQoKSBpbmZvTGlzdD86IFB1cm9WZXJ0aWNhbEluZm9MaXN0O1xuICAgIEBJbnB1dCgpIGltZ0xpc3Q/OiBQdXJvVmVydGljYWxJbmZvSW1hZ2VMaXN0O1xuICAgIEBJbnB1dCgpIG5kSW5mb0xpc3Q/OiBQdXJvVmVydGljYWxJbmZvTmRMaXN0O1xuICAgIEBJbnB1dCgpIGluZm9CdXR0b24/OiBQdXJvVmVydGljYWxJbmZvV2l0aEJ1dHRvbjtcbiAgICBASW5wdXQoKSBjb250YWN0TGlua3M/OiBQdXJvQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIGJ1dHRvbkJvb2s/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBidXR0b25HdWVzdHM/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBwZGZMaW5rPzogUHVyb0J1dHRvbkk7XG4gICAgQElucHV0KCkgYnV0dG9uU3Vic2NyaWJlPzogUHVyb0J1dHRvbkk7XG4gICAgQElucHV0KCkgYnV0dG9uQmFjaz86IFB1cm9CdXR0b25JO1xuICAgIEBJbnB1dCgpIHNvY2lhbE1lZGlhPzogUHVyb1ZlcnRpY2FsSW5mb1NvY2lhbE1lZGlhSXRlbVtdO1xuICAgIEBJbnB1dCgpIGhvdGVsTmFtZT86IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBidG5Cb29rQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCkge31cblxuICAgIGdldCBzaGFyZVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGl0bGUgPz8gJyc7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gJyc7XG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0xvY2F0aW9uIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBidXR0b24/OiBQdXJvQnV0dG9uSTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ludHJvIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0xpc3Qge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGl0ZW1zPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ltYWdlTGlzdCB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgaXRlbXM/OiBQdXJvVmVydGljYWxJbmZvSW1hZ2VbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb0ltYWdlIHtcbiAgICBpbWFnZT86IFB1cm9JbWFnZUk7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb05kTGlzdCB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgaXRlbXM/OiBQdXJvVmVydGljYWxJbmZvTmRbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHVyb1ZlcnRpY2FsSW5mb05kIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHByaWNlPzogbnVtYmVyO1xuICAgIGN1cnJlbmN5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9WZXJ0aWNhbEluZm9XaXRoQnV0dG9uIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBidXR0b24/OiBQdXJvQnV0dG9uSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvVmVydGljYWxJbmZvU29jaWFsTWVkaWFJdGVtIHtcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9QcmljZUl0ZW1Je1xuICAgIHZhbHVlPzogbnVtYmVyO1xuICAgIGxhYmVsPzogc3RyaW5nO1xufSIsIjxzZWN0aW9uIGNsYXNzPVwidmVydGljYWwtaW5mbyBnZW5lcmFsTWFyZ2luXCI+XG4gICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2xlZnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19tYWluXCI+XG4gICAgICAgICAgICAgICAgQGlmIChwcmV0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3ByZXRpdGxlXCI+e3sgcHJldGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uQmFjaykge1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiYnV0dG9uQmFjay51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5LS1vdXRsaW5lIHZlcnRpY2FsLWluZm9fX2J0bi1iYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uQmFjay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgYnV0dG9uQmFjay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3RhZ1wiPnt7IHRhZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX190aXRsZVwiPnt7IHRpdGxlIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHN1YnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJzdWJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIFRPRE86IGFkZCBkaXNjb3VudCAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fYm94ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19mcm9tXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZyb20gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByaWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3ByaWNlLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3ByaWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcmljZS52YWx1ZSB9fXt7IGN1cnJlbmN5IHx8ICfigqwnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19wcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJpY2UubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkaXNjb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3ByaWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkaXNjb3VudCB9fSVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uU3Vic2NyaWJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImJ1dHRvblN1YnNjcmliZS51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fYnRuIGJ0biBidG5fX3ByaW1hcnktLW91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uU3Vic2NyaWJlLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBidXR0b25TdWJzY3JpYmUubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIEBpZiAoaW50cm8pIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2RhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaW50cm87IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zbWFsbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGNvbnRhY3RUaXRsZSAmJiBjb250YWN0TGlua3MpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsIHZlcnRpY2FsLWluZm9fX2FkZGl0aW9uYWwtLWNvbnRhY3RcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NtYWxsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29udGFjdFRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19saW5rc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGxpbmsgb2YgY29udGFjdExpbmtzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJsaW5rLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGluay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgbGluay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHNvY2lhbE1lZGlhICYmIHNvY2lhbE1lZGlhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NvY2lhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHNvY2lhbFRpdGxlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NtYWxsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNvY2lhbFRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX21lZGlhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc29jaWFsIG9mIHNvY2lhbE1lZGlhOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cInNvY2lhbC51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU9XCJleHRlcm5hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNvY2lhbC5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwic29jaWFsLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwic29jaWFsLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbm8tem9vbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChwZGZMaW5rICYmIHBkZkxpbmsudXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fYWRkaXRpb25hbCB2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsLS1sb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsZVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zbWFsbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWxlVGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJwZGZMaW5rLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZT1cImV4dGVybmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicGRmTGluay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgcGRmTGluay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uR3Vlc3RzKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b25HdWVzdHMudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeS0tb3V0bGluZSB2ZXJ0aWNhbC1pbmZvX19idG4tZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbkd1ZXN0cy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgYnV0dG9uR3Vlc3RzLmxhYmVsIH19PC9hXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChidXR0b25Cb29rKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYnV0dG9uQm9vay5saW5rVHlwZSA9PSAnY29tcG9uZW50X2xpbmsnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJidG5Cb29rQ2xpY2suZW1pdChob3RlbE5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnkgdmVydGljYWwtaW5mb19fYnRuLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uQm9vay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGJ1dHRvbkJvb2subGFiZWwgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGJ1dHRvbkJvb2subGlua1R5cGUgIT0gJ2NvbXBvbmVudF9saW5rJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b25Cb29rLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IHZlcnRpY2FsLWluZm9fX2J0bi1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbkJvb2subGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBidXR0b25Cb29rLmxhYmVsIH19PC9hXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgQGlmIChpbWcpIHtcbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19faW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltZy5zcmNcIlxuICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImltZy5hbHRcIlxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjQzMVwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjUzMVwiXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fcmlnaHRcIj5cbiAgICAgICAgICAgIEBpZiAoaW5mb0xpc3QpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19faW5mby1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3RpdGxlXCI+e3sgaW5mb0xpc3QudGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJpbmZvTGlzdC5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidmVydGljYWwtaW5mb19fbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpbmZvTGlzdC5pdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPnt7IGl0ZW0gfX08L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChpbWdMaXN0ICYmIGltZ0xpc3QuaXRlbXMgJiYgaW1nTGlzdC5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NjaGVkdWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fdGl0bGVcIj57eyBpbWdMaXN0LnRpdGxlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19pbWctbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpbWdMaXN0Lml0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5pbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fcGVyZm9ybWFuY2UtaW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uaW1hZ2Uuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uaW1hZ2UuYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjc3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI3N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19zbWFsbC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChuZEluZm9MaXN0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2luZm8tZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX190aXRsZVwiPnt7IG5kSW5mb0xpc3QudGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJuZEluZm9MaXN0LmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIG5kSW5mb0xpc3QuaXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB8fCBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19wcmljZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgaXRlbS5wcmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX17eyBpdGVtLmN1cnJlbmN5IHx8ICfigqwnIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChpbmZvQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWluZm9fX2Jvb2tcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpbmZvQnV0dG9uLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaW5mb0J1dHRvbi50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaW5mb0J1dHRvbi5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaW5mb0J1dHRvbi5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpbmZvQnV0dG9uLmJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeS0tb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpbmZvQnV0dG9uLmJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaW5mb0J1dHRvbi5idXR0b24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtaW5mb19fc2VwYXJhdG9yXCI+PC9kaXY+XG4gICAgICAgICAgICBAaWYgKGV4dHJhVGl0bGUgJiYgZXh0cmFEZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidmVydGljYWwtaW5mb19fc21hbGwtdGl0bGVcIj57eyBleHRyYVRpdGxlIH19PC9wPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1pbmZvX19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJleHRyYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8IS0tIEBpZiAobG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fYWRkaXRpb25hbCB2ZXJ0aWNhbC1pbmZvX19hZGRpdGlvbmFsLS1sb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZlcnRpY2FsLWluZm9fX3NtYWxsLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2NhdGlvbi50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtaW5mb19fZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJsb2NhdGlvbi5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIEBpZiAobG9jYXRpb24uYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJsb2NhdGlvbi5idXR0b24udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJsb2NhdGlvbi5idXR0b24ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5LS1vdXRsaW5lIHZlcnRpY2FsLWluZm9fX2J0bi1tYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsb2NhdGlvbi5idXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGxvY2F0aW9uLmJ1dHRvbi5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
|