barsa-sap-ui 2.2.68 → 2.2.70
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/file-viewer-content/file-viewer-content.component.mjs +24 -15
- package/esm2022/lib/ui-card-view-horizontal-group/ui-card-view-horizontal-group.component.mjs +3 -3
- package/esm2022/lib/ui-pdf-viewer/ui-pdf-viewer.component.mjs +7 -6
- package/fesm2022/barsa-sap-ui.mjs +34 -24
- package/fesm2022/barsa-sap-ui.mjs.map +1 -1
- package/lib/barsa-sap-ui.module.d.ts +1 -1
- package/lib/file-viewer-content/file-viewer-content.component.d.ts +7 -6
- package/lib/index.d.ts +1 -2
- package/package.json +1 -1
|
@@ -1,27 +1,36 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
|
2
|
-
import { BaseComponent, getIcon, isImage } from 'barsa-novin-ray-core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output, signal } from '@angular/core';
|
|
2
|
+
import { BaseComponent, getIcon, isImage, PictureFieldSourcePipe } from 'barsa-novin-ray-core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "
|
|
5
|
-
import * as i2 from "
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "barsa-novin-ray-core";
|
|
6
6
|
import * as i3 from "@fundamental-ngx/core/card";
|
|
7
7
|
import * as i4 from "@fundamental-ngx/core/illustrated-message";
|
|
8
8
|
import * as i5 from "../mask/mask.component";
|
|
9
9
|
import * as i6 from "../blob-viewer/blob-viewer.component";
|
|
10
10
|
export class FileViewerContentComponent extends BaseComponent {
|
|
11
|
-
constructor(
|
|
12
|
-
super();
|
|
13
|
-
this._picFieldSrc = _picFieldSrc;
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
14
13
|
this.cantView = new EventEmitter();
|
|
15
14
|
this._height = null;
|
|
16
|
-
this.hideContent = false;
|
|
15
|
+
this.hideContent = signal(false);
|
|
17
16
|
this.sceneConfig = {
|
|
18
17
|
scene: { url: 'assets/images/sapIllus-Scene-NoMail.svg', id: 'sapIllus-Scene-NoMail-1' },
|
|
19
18
|
dialog: { url: 'assets/images/sapIllus-Dialog-NoMail.svg', id: 'sapIllus-Dialog-NoMail' }
|
|
20
19
|
};
|
|
20
|
+
this._picFieldSrc = inject(PictureFieldSourcePipe);
|
|
21
21
|
}
|
|
22
22
|
ngOnInit() {
|
|
23
23
|
super.ngOnInit();
|
|
24
|
-
|
|
24
|
+
this._prepare(this.file);
|
|
25
|
+
}
|
|
26
|
+
ngOnChanges(changes) {
|
|
27
|
+
super.ngOnChanges(changes);
|
|
28
|
+
const { file } = changes;
|
|
29
|
+
if (file && !file.firstChange) {
|
|
30
|
+
this._prepare(file.currentValue);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
_prepare(file) {
|
|
25
34
|
const spl = file.FileName?.split('.');
|
|
26
35
|
const ext = spl ? spl[spl.length - 1] : '';
|
|
27
36
|
const isImg = isImage(ext);
|
|
@@ -31,18 +40,18 @@ export class FileViewerContentComponent extends BaseComponent {
|
|
|
31
40
|
(file.isImage = true);
|
|
32
41
|
!isImg && (file.thumbnailUrl = getIcon(ext || file.Type));
|
|
33
42
|
if (!isImg && ['webm', 'mp4', 'x-wav', 'x-ms-wma', 'm4a', 'txt', 'pdf', 'jfif'].indexOf(this.file.Type) < 0) {
|
|
34
|
-
this.hideContent
|
|
43
|
+
this.hideContent.set(true);
|
|
35
44
|
// this._height = '0px';
|
|
36
45
|
this.cantView.emit();
|
|
37
46
|
}
|
|
38
47
|
}
|
|
39
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileViewerContentComponent, deps:
|
|
40
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FileViewerContentComponent, selector: "bsu-file-viewer-content", inputs: { fillWidth: "fillWidth", imageOnly: "imageOnly", isImageGallery: "isImageGallery", cardMode: "cardMode", showFooter: "showFooter", showContent: "showContent", width: "width", deviceSize: "deviceSize", cardContentHeight: "cardContentHeight", file: "file" }, outputs: { cantView: "cantView" }, host: { properties: { "style.height": "this._height" } }, usesInheritance: true, ngImport: i0, template: "<ng-container\r\n *ngTemplateOutlet=\"cardMode ? cardTpl : file.isImage || imageOnly ? showImage : blobViewer\"\r\n></ng-container>\r\n\r\n<ng-template #showImage>\r\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\">\r\n <div class=\"pics\">\r\n <bsu-mask></bsu-mask>\r\n <img imgLazy [imgLazy]=\"file.mediaUrl\" [src]=\"file.mediaUrl\" [style.width]=\"width\" />\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #blobViewer>\r\n @if(!hideContent){\r\n <bsu-blob-viewer\r\n [file]=\"file\"\r\n [style.width]=\"width\"\r\n fillEmptySpace\r\n [disable]=\"deviceSize !== 's'\"\r\n [decrement]=\"'25px'\"\r\n ></bsu-blob-viewer>\r\n }@else{ }\r\n</ng-template>\r\n<ng-template #cardTpl>\r\n <fd-card class=\"media\" [class.hideContent]=\"hideContent\">\r\n <fd-card-content style=\"text-align: center; padding: 0\" [style.height]=\"cardContentHeight\">\r\n @if(hideContent && file){\r\n <figure fd-illustrated-message type=\"dialog\" [svgConfig]=\"sceneConfig\" svgAriaLabel=\"Illustration label\">\r\n <figcaption fd-illustrated-message-figcaption>\r\n <h3 fd-illustrated-message-title>{{ 'Unable To Load File' | bbbTranslate }}</h3>\r\n </figcaption>\r\n </figure>\r\n } @else{\r\n <ng-container\r\n *ngTemplateOutlet=\"!showContent ? thumbnailTpl : file.isImage || imageOnly ? showImage : blobViewer\"\r\n ></ng-container>\r\n }\r\n </fd-card-content>\r\n </fd-card>\r\n</ng-template>\r\n<ng-template #thumbnailTpl>\r\n <img imgLazy [imgLazy]=\"file.thumbnailUrl\" [src]=\"file.thumbnailUrl\" [style.width]=\"width\" />\r\n</ng-template>\r\n", styles: [":host{display:block;min-height:100%}fd-card.hideContent{box-shadow:none}\n"], dependencies: [{ kind: "directive", type:
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileViewerContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
49
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FileViewerContentComponent, selector: "bsu-file-viewer-content", inputs: { fillWidth: "fillWidth", imageOnly: "imageOnly", isImageGallery: "isImageGallery", cardMode: "cardMode", showFooter: "showFooter", showContent: "showContent", width: "width", deviceSize: "deviceSize", cardContentHeight: "cardContentHeight", file: "file" }, outputs: { cantView: "cantView" }, host: { properties: { "style.height": "this._height" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container\r\n *ngTemplateOutlet=\"cardMode ? cardTpl : file.isImage || imageOnly ? showImage : blobViewer\"\r\n></ng-container>\r\n\r\n<ng-template #showImage>\r\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\">\r\n <div class=\"pics\">\r\n <bsu-mask></bsu-mask>\r\n <img imgLazy [imgLazy]=\"file.mediaUrl\" [src]=\"file.mediaUrl\" [style.width]=\"width\" />\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #blobViewer>\r\n @if(!hideContent()){\r\n <bsu-blob-viewer\r\n [file]=\"file\"\r\n [style.width]=\"width\"\r\n fillEmptySpace\r\n [disable]=\"deviceSize !== 's'\"\r\n [decrement]=\"'25px'\"\r\n ></bsu-blob-viewer>\r\n }@else{ }\r\n</ng-template>\r\n<ng-template #cardTpl>\r\n <fd-card class=\"media\" [class.hideContent]=\"hideContent()\">\r\n <fd-card-content style=\"text-align: center; padding: 0\" [style.height]=\"cardContentHeight\">\r\n @if(hideContent() && file){\r\n <figure fd-illustrated-message type=\"dialog\" [svgConfig]=\"sceneConfig\" svgAriaLabel=\"Illustration label\">\r\n <figcaption fd-illustrated-message-figcaption>\r\n <h3 fd-illustrated-message-title>{{ 'Unable To Load File' | bbbTranslate }}</h3>\r\n </figcaption>\r\n </figure>\r\n } @else{\r\n <ng-container\r\n *ngTemplateOutlet=\"!showContent ? thumbnailTpl : file.isImage || imageOnly ? showImage : blobViewer\"\r\n ></ng-container>\r\n }\r\n </fd-card-content>\r\n </fd-card>\r\n</ng-template>\r\n<ng-template #thumbnailTpl>\r\n <img imgLazy [imgLazy]=\"file.thumbnailUrl\" [src]=\"file.thumbnailUrl\" [style.width]=\"width\" />\r\n</ng-template>\r\n", styles: [":host{display:block;min-height:100%}fd-card.hideContent{box-shadow:none}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "directive", type: i2.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i3.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i3.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i4.IllustratedMessageComponent, selector: "[fd-illustrated-message]", inputs: ["type", "svgConfig", "svgAriaLabel", "noSvg", "id", "class"] }, { kind: "component", type: i4.IllustratedMessageFigcaptionComponent, selector: "[fd-illustrated-message-figcaption]" }, { kind: "directive", type: i4.IllustratedMessageTitleDirective, selector: "[fd-illustrated-message-title]" }, { kind: "component", type: i5.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i6.BlobViewerComponent, selector: "bsu-blob-viewer", inputs: ["file"] }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41
50
|
}
|
|
42
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileViewerContentComponent, decorators: [{
|
|
43
52
|
type: Component,
|
|
44
|
-
args: [{ selector: 'bsu-file-viewer-content', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container\r\n *ngTemplateOutlet=\"cardMode ? cardTpl : file.isImage || imageOnly ? showImage : blobViewer\"\r\n></ng-container>\r\n\r\n<ng-template #showImage>\r\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\">\r\n <div class=\"pics\">\r\n <bsu-mask></bsu-mask>\r\n <img imgLazy [imgLazy]=\"file.mediaUrl\" [src]=\"file.mediaUrl\" [style.width]=\"width\" />\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #blobViewer>\r\n @if(!hideContent){\r\n <bsu-blob-viewer\r\n [file]=\"file\"\r\n [style.width]=\"width\"\r\n fillEmptySpace\r\n [disable]=\"deviceSize !== 's'\"\r\n [decrement]=\"'25px'\"\r\n ></bsu-blob-viewer>\r\n }@else{ }\r\n</ng-template>\r\n<ng-template #cardTpl>\r\n <fd-card class=\"media\" [class.hideContent]=\"hideContent\">\r\n <fd-card-content style=\"text-align: center; padding: 0\" [style.height]=\"cardContentHeight\">\r\n @if(hideContent && file){\r\n <figure fd-illustrated-message type=\"dialog\" [svgConfig]=\"sceneConfig\" svgAriaLabel=\"Illustration label\">\r\n <figcaption fd-illustrated-message-figcaption>\r\n <h3 fd-illustrated-message-title>{{ 'Unable To Load File' | bbbTranslate }}</h3>\r\n </figcaption>\r\n </figure>\r\n } @else{\r\n <ng-container\r\n *ngTemplateOutlet=\"!showContent ? thumbnailTpl : file.isImage || imageOnly ? showImage : blobViewer\"\r\n ></ng-container>\r\n }\r\n </fd-card-content>\r\n </fd-card>\r\n</ng-template>\r\n<ng-template #thumbnailTpl>\r\n <img imgLazy [imgLazy]=\"file.thumbnailUrl\" [src]=\"file.thumbnailUrl\" [style.width]=\"width\" />\r\n</ng-template>\r\n", styles: [":host{display:block;min-height:100%}fd-card.hideContent{box-shadow:none}\n"] }]
|
|
45
|
-
}],
|
|
53
|
+
args: [{ selector: 'bsu-file-viewer-content', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container\r\n *ngTemplateOutlet=\"cardMode ? cardTpl : file.isImage || imageOnly ? showImage : blobViewer\"\r\n></ng-container>\r\n\r\n<ng-template #showImage>\r\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\">\r\n <div class=\"pics\">\r\n <bsu-mask></bsu-mask>\r\n <img imgLazy [imgLazy]=\"file.mediaUrl\" [src]=\"file.mediaUrl\" [style.width]=\"width\" />\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #blobViewer>\r\n @if(!hideContent()){\r\n <bsu-blob-viewer\r\n [file]=\"file\"\r\n [style.width]=\"width\"\r\n fillEmptySpace\r\n [disable]=\"deviceSize !== 's'\"\r\n [decrement]=\"'25px'\"\r\n ></bsu-blob-viewer>\r\n }@else{ }\r\n</ng-template>\r\n<ng-template #cardTpl>\r\n <fd-card class=\"media\" [class.hideContent]=\"hideContent()\">\r\n <fd-card-content style=\"text-align: center; padding: 0\" [style.height]=\"cardContentHeight\">\r\n @if(hideContent() && file){\r\n <figure fd-illustrated-message type=\"dialog\" [svgConfig]=\"sceneConfig\" svgAriaLabel=\"Illustration label\">\r\n <figcaption fd-illustrated-message-figcaption>\r\n <h3 fd-illustrated-message-title>{{ 'Unable To Load File' | bbbTranslate }}</h3>\r\n </figcaption>\r\n </figure>\r\n } @else{\r\n <ng-container\r\n *ngTemplateOutlet=\"!showContent ? thumbnailTpl : file.isImage || imageOnly ? showImage : blobViewer\"\r\n ></ng-container>\r\n }\r\n </fd-card-content>\r\n </fd-card>\r\n</ng-template>\r\n<ng-template #thumbnailTpl>\r\n <img imgLazy [imgLazy]=\"file.thumbnailUrl\" [src]=\"file.thumbnailUrl\" [style.width]=\"width\" />\r\n</ng-template>\r\n", styles: [":host{display:block;min-height:100%}fd-card.hideContent{box-shadow:none}\n"] }]
|
|
54
|
+
}], propDecorators: { fillWidth: [{
|
|
46
55
|
type: Input
|
|
47
56
|
}], imageOnly: [{
|
|
48
57
|
type: Input
|
|
@@ -68,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
68
77
|
type: HostBinding,
|
|
69
78
|
args: ['style.height']
|
|
70
79
|
}] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS12aWV3ZXItY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi9maWxlLXZpZXdlci1jb250ZW50L2ZpbGUtdmlld2VyLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZmlsZS12aWV3ZXItY29udGVudC9maWxlLXZpZXdlci1jb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFDSCxhQUFhLEVBR2IsT0FBTyxFQUNQLE9BQU8sRUFFVixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQVM5QixNQUFNLE9BQU8sMEJBQTJCLFNBQVEsYUFBYTtJQWtCekQsWUFBb0IsWUFBb0M7UUFDcEQsS0FBSyxFQUFFLENBQUM7UUFEUSxpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFQOUMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDWCxZQUFPLEdBQWtCLElBQUksQ0FBQztRQUMzRCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixnQkFBVyxHQUFHO1lBQ1YsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLHlDQUF5QyxFQUFFLEVBQUUsRUFBRSx5QkFBeUIsRUFBRTtZQUN4RixNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsMENBQTBDLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixFQUFFO1NBQzVGLENBQUM7SUFHRixDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsS0FBSztZQUNELENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FDNUMsSUFBSSxDQUFDLEVBQUUsRUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNyRCxJQUFJLEVBQ0osRUFBRSxFQUNGLEdBQUcsRUFDSCxHQUFHLENBQ04sQ0FBQztZQUNGLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FDeEMsSUFBSSxDQUFDLEVBQUUsRUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUN4RCxFQUFFLEVBQ0YsRUFBRSxFQUNGLENBQUMsRUFDRCxDQUFDLENBQ0osQ0FBQztZQUNGLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDTCxDQUFDOytHQXBEUSwwQkFBMEI7bUdBQTFCLDBCQUEwQiw2YkNqQnZDLGl5REEyQ0E7OzRGRDFCYSwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0kseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUs7MkZBR1IsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNzQixPQUFPO3NCQUFuQyxXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEJhc2VDb21wb25lbnQsXHJcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXHJcbiAgICBGaWxlQXR0YWNobWVudEluZm8sXHJcbiAgICBnZXRJY29uLFxyXG4gICAgaXNJbWFnZSxcclxuICAgIFBpY3R1cmVGaWVsZFNvdXJjZVBpcGVcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LWZpbGUtdmlld2VyLWNvbnRlbnQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdmlld2VyLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS12aWV3ZXItY29udGVudC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZVZpZXdlckNvbnRlbnRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIGZpbGxXaWR0aDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGltYWdlT25seTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzSW1hZ2VHYWxsZXJ5OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY2FyZE1vZGU6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzaG93Rm9vdGVyOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgc2hvd0NvbnRlbnQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSB3aWR0aDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xyXG4gICAgQElucHV0KCkgY2FyZENvbnRlbnRIZWlnaHQ6IHN0cmluZyB8IG51bGw7XHJcbiAgICBASW5wdXQoKSBmaWxlOiBGaWxlQXR0YWNobWVudEluZm87XHJcbiAgICBAT3V0cHV0KCkgY2FudFZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpIF9oZWlnaHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgaGlkZUNvbnRlbnQgPSBmYWxzZTtcclxuICAgIHNjZW5lQ29uZmlnID0ge1xyXG4gICAgICAgIHNjZW5lOiB7IHVybDogJ2Fzc2V0cy9pbWFnZXMvc2FwSWxsdXMtU2NlbmUtTm9NYWlsLnN2ZycsIGlkOiAnc2FwSWxsdXMtU2NlbmUtTm9NYWlsLTEnIH0sXHJcbiAgICAgICAgZGlhbG9nOiB7IHVybDogJ2Fzc2V0cy9pbWFnZXMvc2FwSWxsdXMtRGlhbG9nLU5vTWFpbC5zdmcnLCBpZDogJ3NhcElsbHVzLURpYWxvZy1Ob01haWwnIH1cclxuICAgIH07XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9waWNGaWVsZFNyYzogUGljdHVyZUZpZWxkU291cmNlUGlwZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5maWxlO1xyXG4gICAgICAgIGNvbnN0IHNwbCA9IGZpbGUuRmlsZU5hbWU/LnNwbGl0KCcuJyk7XHJcbiAgICAgICAgY29uc3QgZXh0ID0gc3BsID8gc3BsW3NwbC5sZW5ndGggLSAxXSA6ICcnO1xyXG4gICAgICAgIGNvbnN0IGlzSW1nID0gaXNJbWFnZShleHQpO1xyXG4gICAgICAgIGlzSW1nICYmXHJcbiAgICAgICAgICAgIChmaWxlLnRodW1ibmFpbFVybCA9IHRoaXMuX3BpY0ZpZWxkU3JjLnRyYW5zZm9ybShcclxuICAgICAgICAgICAgICAgIGZpbGUuSWQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW1hZ2VHYWxsZXJ5ID8gJ0JhcnNhUGljdHVyZS5UaHVtYm5haWwnIDogJ0lEJyxcclxuICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgICAgIDEyMCxcclxuICAgICAgICAgICAgICAgIDEyMFxyXG4gICAgICAgICAgICApKSAmJlxyXG4gICAgICAgICAgICAoZmlsZS5tZWRpYVVybCA9IHRoaXMuX3BpY0ZpZWxkU3JjLnRyYW5zZm9ybShcclxuICAgICAgICAgICAgICAgIGZpbGUuSWQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW1hZ2VHYWxsZXJ5ID8gJ0JhcnNhUGljdHVyZS5GdWxsJyA6ICdBdHRhY2htZW50JyxcclxuICAgICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICAgICAgJycsXHJcbiAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgICAgMFxyXG4gICAgICAgICAgICApKSAmJlxyXG4gICAgICAgICAgICAoZmlsZS5pc0ltYWdlID0gdHJ1ZSk7XHJcbiAgICAgICAgIWlzSW1nICYmIChmaWxlLnRodW1ibmFpbFVybCA9IGdldEljb24oZXh0IHx8IGZpbGUuVHlwZSkpO1xyXG4gICAgICAgIGlmICghaXNJbWcgJiYgWyd3ZWJtJywgJ21wNCcsICd4LXdhdicsICd4LW1zLXdtYScsICdtNGEnLCAndHh0JywgJ3BkZicsICdqZmlmJ10uaW5kZXhPZih0aGlzLmZpbGUuVHlwZSkgPCAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9oZWlnaHQgPSAnMHB4JztcclxuICAgICAgICAgICAgdGhpcy5jYW50Vmlldy5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXJcclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZE1vZGUgPyBjYXJkVHBsIDogZmlsZS5pc0ltYWdlIHx8IGltYWdlT25seSA/IHNob3dJbWFnZSA6IGJsb2JWaWV3ZXJcIlxyXG4+PC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nob3dJbWFnZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gYmlnLWltZ3MtYm94XCIgW2NsYXNzLmZpbGwtd2lkdGhdPVwiZmlsbFdpZHRoXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBpY3NcIj5cclxuICAgICAgICAgICAgPGJzdS1tYXNrPjwvYnN1LW1hc2s+XHJcbiAgICAgICAgICAgIDxpbWcgaW1nTGF6eSBbaW1nTGF6eV09XCJmaWxlLm1lZGlhVXJsXCIgW3NyY109XCJmaWxlLm1lZGlhVXJsXCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2Jsb2JWaWV3ZXI+XHJcbiAgICBAaWYoIWhpZGVDb250ZW50KXtcclxuICAgIDxic3UtYmxvYi12aWV3ZXJcclxuICAgICAgICBbZmlsZV09XCJmaWxlXCJcclxuICAgICAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxyXG4gICAgICAgIGZpbGxFbXB0eVNwYWNlXHJcbiAgICAgICAgW2Rpc2FibGVdPVwiZGV2aWNlU2l6ZSAhPT0gJ3MnXCJcclxuICAgICAgICBbZGVjcmVtZW50XT1cIicyNXB4J1wiXHJcbiAgICA+PC9ic3UtYmxvYi12aWV3ZXI+XHJcbiAgICB9QGVsc2V7IH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNjYXJkVHBsPlxyXG4gICAgPGZkLWNhcmQgY2xhc3M9XCJtZWRpYVwiIFtjbGFzcy5oaWRlQ29udGVudF09XCJoaWRlQ29udGVudFwiPlxyXG4gICAgICAgIDxmZC1jYXJkLWNvbnRlbnQgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDBcIiBbc3R5bGUuaGVpZ2h0XT1cImNhcmRDb250ZW50SGVpZ2h0XCI+XHJcbiAgICAgICAgICAgIEBpZihoaWRlQ29udGVudCAmJiBmaWxlKXtcclxuICAgICAgICAgICAgPGZpZ3VyZSBmZC1pbGx1c3RyYXRlZC1tZXNzYWdlIHR5cGU9XCJkaWFsb2dcIiBbc3ZnQ29uZmlnXT1cInNjZW5lQ29uZmlnXCIgc3ZnQXJpYUxhYmVsPVwiSWxsdXN0cmF0aW9uIGxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmlnY2FwdGlvbiBmZC1pbGx1c3RyYXRlZC1tZXNzYWdlLWZpZ2NhcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGZkLWlsbHVzdHJhdGVkLW1lc3NhZ2UtdGl0bGU+e3sgJ1VuYWJsZSBUbyBMb2FkIEZpbGUnIHwgYmJiVHJhbnNsYXRlIH19PC9oMz5cclxuICAgICAgICAgICAgICAgIDwvZmlnY2FwdGlvbj5cclxuICAgICAgICAgICAgPC9maWd1cmU+XHJcbiAgICAgICAgICAgIH0gQGVsc2V7XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiIXNob3dDb250ZW50ID8gdGh1bWJuYWlsVHBsIDogZmlsZS5pc0ltYWdlIHx8IGltYWdlT25seSA/IHNob3dJbWFnZSA6IGJsb2JWaWV3ZXJcIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2ZkLWNhcmQtY29udGVudD5cclxuICAgIDwvZmQtY2FyZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0aHVtYm5haWxUcGw+XHJcbiAgICA8aW1nIGltZ0xhenkgW2ltZ0xhenldPVwiZmlsZS50aHVtYm5haWxVcmxcIiBbc3JjXT1cImZpbGUudGh1bWJuYWlsVXJsXCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgLz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS12aWV3ZXItY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi9maWxlLXZpZXdlci1jb250ZW50L2ZpbGUtdmlld2VyLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZmlsZS12aWV3ZXItY29udGVudC9maWxlLXZpZXdlci1jb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxhQUFhLEVBR2IsT0FBTyxFQUNQLE9BQU8sRUFDUCxzQkFBc0IsRUFDekIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7QUFTOUIsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGFBQWE7SUFQN0Q7O1FBa0JjLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ1gsWUFBTyxHQUFrQixJQUFJLENBQUM7UUFDM0QsZ0JBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsZ0JBQVcsR0FBRztZQUNWLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSx5Q0FBeUMsRUFBRSxFQUFFLEVBQUUseUJBQXlCLEVBQUU7WUFDeEYsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLDBDQUEwQyxFQUFFLEVBQUUsRUFBRSx3QkFBd0IsRUFBRTtTQUM1RixDQUFDO1FBQ00saUJBQVksR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztLQXlDekQ7SUF4Q0csUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNq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YW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBpbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEJhc2VDb21wb25lbnQsXHJcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXHJcbiAgICBGaWxlQXR0YWNobWVudEluZm8sXHJcbiAgICBnZXRJY29uLFxyXG4gICAgaXNJbWFnZSxcclxuICAgIFBpY3R1cmVGaWVsZFNvdXJjZVBpcGVcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LWZpbGUtdmlld2VyLWNvbnRlbnQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdmlld2VyLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS12aWV3ZXItY29udGVudC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZVZpZXdlckNvbnRlbnRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIGZpbGxXaWR0aDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGltYWdlT25seTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzSW1hZ2VHYWxsZXJ5OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY2FyZE1vZGU6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzaG93Rm9vdGVyOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgc2hvd0NvbnRlbnQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSB3aWR0aDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xyXG4gICAgQElucHV0KCkgY2FyZENvbnRlbnRIZWlnaHQ6IHN0cmluZyB8IG51bGw7XHJcbiAgICBASW5wdXQoKSBmaWxlOiBGaWxlQXR0YWNobWVudEluZm87XHJcbiAgICBAT3V0cHV0KCkgY2FudFZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpIF9oZWlnaHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgaGlkZUNvbnRlbnQgPSBzaWduYWwoZmFsc2UpO1xyXG4gICAgc2NlbmVDb25maWcgPSB7XHJcbiAgICAgICAgc2NlbmU6IHsgdXJsOiAnYXNzZXRzL2ltYWdlcy9zYXBJbGx1cy1TY2VuZS1Ob01haWwuc3ZnJywgaWQ6ICdzYXBJbGx1cy1TY2VuZS1Ob01haWwtMScgfSxcclxuICAgICAgICBkaWFsb2c6IHsgdXJsOiAnYXNzZXRzL2ltYWdlcy9zYXBJbGx1cy1EaWFsb2ctTm9NYWlsLnN2ZycsIGlkOiAnc2FwSWxsdXMtRGlhbG9nLU5vTWFpbCcgfVxyXG4gICAgfTtcclxuICAgIHByaXZhdGUgX3BpY0ZpZWxkU3JjID0gaW5qZWN0KFBpY3R1cmVGaWVsZFNvdXJjZVBpcGUpO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlKHRoaXMuZmlsZSk7XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyBmaWxlIH0gPSBjaGFuZ2VzO1xyXG4gICAgICAgIGlmIChmaWxlICYmICFmaWxlLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmUoZmlsZS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX3ByZXBhcmUoZmlsZTogRmlsZUF0dGFjaG1lbnRJbmZvKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3BsID0gZmlsZS5GaWxlTmFtZT8uc3BsaXQoJy4nKTtcclxuICAgICAgICBjb25zdCBleHQgPSBzcGwgPyBzcGxbc3BsLmxlbmd0aCAtIDFdIDogJyc7XHJcbiAgICAgICAgY29uc3QgaXNJbWcgPSBpc0ltYWdlKGV4dCk7XHJcbiAgICAgICAgaXNJbWcgJiZcclxuICAgICAgICAgICAgKGZpbGUudGh1bWJuYWlsVXJsID0gdGhpcy5fcGljRmllbGRTcmMudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgZmlsZS5JZCxcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNJbWFnZUdhbGxlcnkgPyAnQmFyc2FQaWN0dXJlLlRodW1ibmFpbCcgOiAnSUQnLFxyXG4gICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICAgICAgMTIwLFxyXG4gICAgICAgICAgICAgICAgMTIwXHJcbiAgICAgICAgICAgICkpICYmXHJcbiAgICAgICAgICAgIChmaWxlLm1lZGlhVXJsID0gdGhpcy5fcGljRmllbGRTcmMudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgZmlsZS5JZCxcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNJbWFnZUdhbGxlcnkgPyAnQmFyc2FQaWN0dXJlLkZ1bGwnIDogJ0F0dGFjaG1lbnQnLFxyXG4gICAgICAgICAgICAgICAgJycsXHJcbiAgICAgICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAwXHJcbiAgICAgICAgICAgICkpICYmXHJcbiAgICAgICAgICAgIChmaWxlLmlzSW1hZ2UgPSB0cnVlKTtcclxuICAgICAgICAhaXNJbWcgJiYgKGZpbGUudGh1bWJuYWlsVXJsID0gZ2V0SWNvbihleHQgfHwgZmlsZS5UeXBlKSk7XHJcbiAgICAgICAgaWYgKCFpc0ltZyAmJiBbJ3dlYm0nLCAnbXA0JywgJ3gtd2F2JywgJ3gtbXMtd21hJywgJ200YScsICd0eHQnLCAncGRmJywgJ2pmaWYnXS5pbmRleE9mKHRoaXMuZmlsZS5UeXBlKSA8IDApIHtcclxuICAgICAgICAgICAgdGhpcy5oaWRlQ29udGVudC5zZXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuX2hlaWdodCA9ICcwcHgnO1xyXG4gICAgICAgICAgICB0aGlzLmNhbnRWaWV3LmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lclxyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJkTW9kZSA/IGNhcmRUcGwgOiBmaWxlLmlzSW1hZ2UgfHwgaW1hZ2VPbmx5ID8gc2hvd0ltYWdlIDogYmxvYlZpZXdlclwiXHJcbj48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2hvd0ltYWdlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBiaWctaW1ncy1ib3hcIiBbY2xhc3MuZmlsbC13aWR0aF09XCJmaWxsV2lkdGhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGljc1wiPlxyXG4gICAgICAgICAgICA8YnN1LW1hc2s+PC9ic3UtbWFzaz5cclxuICAgICAgICAgICAgPGltZyBpbWdMYXp5IFtpbWdMYXp5XT1cImZpbGUubWVkaWFVcmxcIiBbc3JjXT1cImZpbGUubWVkaWFVcmxcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjYmxvYlZpZXdlcj5cclxuICAgIEBpZighaGlkZUNvbnRlbnQoKSl7XHJcbiAgICA8YnN1LWJsb2Itdmlld2VyXHJcbiAgICAgICAgW2ZpbGVdPVwiZmlsZVwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cIndpZHRoXCJcclxuICAgICAgICBmaWxsRW1wdHlTcGFjZVxyXG4gICAgICAgIFtkaXNhYmxlXT1cImRldmljZVNpemUgIT09ICdzJ1wiXHJcbiAgICAgICAgW2RlY3JlbWVudF09XCInMjVweCdcIlxyXG4gICAgPjwvYnN1LWJsb2Itdmlld2VyPlxyXG4gICAgfUBlbHNleyB9XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjY2FyZFRwbD5cclxuICAgIDxmZC1jYXJkIGNsYXNzPVwibWVkaWFcIiBbY2xhc3MuaGlkZUNvbnRlbnRdPVwiaGlkZUNvbnRlbnQoKVwiPlxyXG4gICAgICAgIDxmZC1jYXJkLWNvbnRlbnQgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDBcIiBbc3R5bGUuaGVpZ2h0XT1cImNhcmRDb250ZW50SGVpZ2h0XCI+XHJcbiAgICAgICAgICAgIEBpZihoaWRlQ29udGVudCgpICYmIGZpbGUpe1xyXG4gICAgICAgICAgICA8ZmlndXJlIGZkLWlsbHVzdHJhdGVkLW1lc3NhZ2UgdHlwZT1cImRpYWxvZ1wiIFtzdmdDb25maWddPVwic2NlbmVDb25maWdcIiBzdmdBcmlhTGFiZWw9XCJJbGx1c3RyYXRpb24gbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxmaWdjYXB0aW9uIGZkLWlsbHVzdHJhdGVkLW1lc3NhZ2UtZmlnY2FwdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgZmQtaWxsdXN0cmF0ZWQtbWVzc2FnZS10aXRsZT57eyAnVW5hYmxlIFRvIExvYWQgRmlsZScgfCBiYmJUcmFuc2xhdGUgfX08L2gzPlxyXG4gICAgICAgICAgICAgICAgPC9maWdjYXB0aW9uPlxyXG4gICAgICAgICAgICA8L2ZpZ3VyZT5cclxuICAgICAgICAgICAgfSBAZWxzZXtcclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCIhc2hvd0NvbnRlbnQgPyB0aHVtYm5haWxUcGwgOiBmaWxlLmlzSW1hZ2UgfHwgaW1hZ2VPbmx5ID8gc2hvd0ltYWdlIDogYmxvYlZpZXdlclwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZmQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9mZC1jYXJkPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3RodW1ibmFpbFRwbD5cclxuICAgIDxpbWcgaW1nTGF6eSBbaW1nTGF6eV09XCJmaWxlLnRodW1ibmFpbFVybFwiIFtzcmNdPVwiZmlsZS50aHVtYm5haWxVcmxcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiAvPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
package/esm2022/lib/ui-card-view-horizontal-group/ui-card-view-horizontal-group.component.mjs
CHANGED
|
@@ -30,13 +30,13 @@ export class UiCardViewHorizontalGroupComponent extends UiCardViewComponent {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiCardViewHorizontalGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiCardViewHorizontalGroupComponent, selector: "bsu-ui-card-view-horizontal-group", viewQueries: [{ propertyName: "dynamicPage", first: true, predicate: DynamicPageComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-dynamic-page [size]=\"deviceSize | dynamicPageSize\">\r\n @if (moDataList?.length) {\r\n <fdp-icon-tab-bar [expandOverflowText]=\"'More' | bbbTranslate\" [stackContent]=\"true\">\r\n @for ( tab of moDataList | groupBy: groupby[0].Name | reverse: isFirefox; track _trackByRow(index, tab); let\r\n index = $index) {\r\n <fdp-icon-tab-bar-tab [label]=\"tab.key | bbbTranslate\" [title]=\"tab.key | bbbTranslate\" [id]=\"'h_' + index\">\r\n <fd-dynamic-page-content>\r\n <h4 fd-title [id]=\"'h_' + index + '_h'\">{{ tab.key | bbbTranslate }}</h4>\r\n <bsu-card-view-content\r\n [moDataList]=\"tab.value\"\r\n [groupby]=\"[]\"\r\n [title]=\"tab.key\"\r\n [setting]=\"cardSetting\"\r\n [editMode]=\"inlineEditMode\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (action)=\"onAction($event)\"\r\n ></bsu-card-view-content>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n }\r\n </fdp-icon-tab-bar>\r\n } @else {\r\n <fd-dynamic-page-content>\r\n <bsu-no-data [simple]=\"true\"></bsu-no-data>\r\n </fd-dynamic-page-content>\r\n }\r\n</fd-dynamic-page>\r\n", styles: [":host ::ng-deep .fd-container.card-list{padding:0!important}:host ::ng-deep .footer-spacer{display:none!important}\n"], dependencies: [{ kind: "component", type: i1.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i1.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i2.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i3.IconTabBarComponent, selector: "fdp-icon-tab-bar", inputs: ["stackContent", "iconTabType", "tabsConfig", "densityMode", "iconTabFont", "enableTabReordering", "showTotalTab", "multiClick", "layoutMode", "iconTabBackground", "iconTabSize", "colorAssociations", "maxContentHeight"], outputs: ["tabsConfigChange", "densityModeChange", "iconTabSelected", "iconTabReordered", "closeTab"] }, { kind: "component", type: i3.IconTabBarTabComponent, selector: "fdp-icon-tab-bar-tab", inputs: ["label", "color", "icon", "iconFont", "counter", "active", "badge", "closable", "id"] }, { kind: "component", type: i4.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "component", type: i5.CardViewContentComponent, selector: "bsu-card-view-content" }, { kind: "pipe", type: i6.GroupByPipe, name: "groupBy" }, { kind: "pipe", type: i6.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i6.ReversePipe, name: "reverse" }, { kind: "pipe", type: i7.DynamicPageSizePipe, name: "dynamicPageSize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiCardViewHorizontalGroupComponent, selector: "bsu-ui-card-view-horizontal-group", viewQueries: [{ propertyName: "dynamicPage", first: true, predicate: DynamicPageComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-dynamic-page [size]=\"deviceSize | dynamicPageSize\">\r\n <fd-dynamic-page-header\r\n [class.simple-title]=\"true\"\r\n [title]=\"''\"\r\n [class.p-b0]=\"true\"\r\n [class.hide-title]=\"true\"\r\n [class.no-toolbar-items]=\"true\"\r\n >\r\n </fd-dynamic-page-header>\r\n <fd-dynamic-page-subheader style=\"display: none\"> </fd-dynamic-page-subheader>\r\n\r\n @if (moDataList?.length) {\r\n <fdp-icon-tab-bar [expandOverflowText]=\"'More' | bbbTranslate\" [stackContent]=\"true\">\r\n @for ( tab of moDataList | groupBy: groupby[0].Name | reverse: isFirefox; track _trackByRow(index, tab); let\r\n index = $index) {\r\n <fdp-icon-tab-bar-tab [label]=\"tab.key | bbbTranslate\" [title]=\"tab.key | bbbTranslate\" [id]=\"'h_' + index\">\r\n <fd-dynamic-page-content>\r\n <h4 fd-title [id]=\"'h_' + index + '_h'\">{{ tab.key | bbbTranslate }}</h4>\r\n <bsu-card-view-content\r\n [moDataList]=\"tab.value\"\r\n [groupby]=\"[]\"\r\n [title]=\"tab.key\"\r\n [setting]=\"cardSetting\"\r\n [editMode]=\"inlineEditMode\"\r\n [rtl]=\"rtl\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (action)=\"onAction($event)\"\r\n ></bsu-card-view-content>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n }\r\n </fdp-icon-tab-bar>\r\n } @else {\r\n <fd-dynamic-page-content>\r\n <bsu-no-data [simple]=\"true\"></bsu-no-data>\r\n </fd-dynamic-page-content>\r\n }\r\n</fd-dynamic-page>\r\n", styles: [":host ::ng-deep .fd-container.card-list{padding:0!important}:host ::ng-deep .footer-spacer{display:none!important}\n"], dependencies: [{ kind: "component", type: i1.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i1.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i1.DynamicPageSubheaderComponent, selector: "fd-dynamic-page-subheader", inputs: ["collapsible", "pinnable", "collapsed", "expandLabel", "collapseLabel", "id", "headerAriaLabel", "pinAriaLabel", "unpinAriaLabel"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i2.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i3.IconTabBarComponent, selector: "fdp-icon-tab-bar", inputs: ["stackContent", "iconTabType", "tabsConfig", "densityMode", "iconTabFont", "enableTabReordering", "showTotalTab", "multiClick", "layoutMode", "iconTabBackground", "iconTabSize", "colorAssociations", "maxContentHeight"], outputs: ["tabsConfigChange", "densityModeChange", "iconTabSelected", "iconTabReordered", "closeTab"] }, { kind: "component", type: i3.IconTabBarTabComponent, selector: "fdp-icon-tab-bar-tab", inputs: ["label", "color", "icon", "iconFont", "counter", "active", "badge", "closable", "id"] }, { kind: "component", type: i4.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "component", type: i5.CardViewContentComponent, selector: "bsu-card-view-content" }, { kind: "pipe", type: i6.GroupByPipe, name: "groupBy" }, { kind: "pipe", type: i6.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i6.ReversePipe, name: "reverse" }, { kind: "pipe", type: i7.DynamicPageSizePipe, name: "dynamicPageSize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34
34
|
}
|
|
35
35
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiCardViewHorizontalGroupComponent, decorators: [{
|
|
36
36
|
type: Component,
|
|
37
|
-
args: [{ selector: 'bsu-ui-card-view-horizontal-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-dynamic-page [size]=\"deviceSize | dynamicPageSize\">\r\n @if (moDataList?.length) {\r\n <fdp-icon-tab-bar [expandOverflowText]=\"'More' | bbbTranslate\" [stackContent]=\"true\">\r\n @for ( tab of moDataList | groupBy: groupby[0].Name | reverse: isFirefox; track _trackByRow(index, tab); let\r\n index = $index) {\r\n <fdp-icon-tab-bar-tab [label]=\"tab.key | bbbTranslate\" [title]=\"tab.key | bbbTranslate\" [id]=\"'h_' + index\">\r\n <fd-dynamic-page-content>\r\n <h4 fd-title [id]=\"'h_' + index + '_h'\">{{ tab.key | bbbTranslate }}</h4>\r\n <bsu-card-view-content\r\n [moDataList]=\"tab.value\"\r\n [groupby]=\"[]\"\r\n [title]=\"tab.key\"\r\n [setting]=\"cardSetting\"\r\n [editMode]=\"inlineEditMode\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (action)=\"onAction($event)\"\r\n ></bsu-card-view-content>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n }\r\n </fdp-icon-tab-bar>\r\n } @else {\r\n <fd-dynamic-page-content>\r\n <bsu-no-data [simple]=\"true\"></bsu-no-data>\r\n </fd-dynamic-page-content>\r\n }\r\n</fd-dynamic-page>\r\n", styles: [":host ::ng-deep .fd-container.card-list{padding:0!important}:host ::ng-deep .footer-spacer{display:none!important}\n"] }]
|
|
37
|
+
args: [{ selector: 'bsu-ui-card-view-horizontal-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-dynamic-page [size]=\"deviceSize | dynamicPageSize\">\r\n <fd-dynamic-page-header\r\n [class.simple-title]=\"true\"\r\n [title]=\"''\"\r\n [class.p-b0]=\"true\"\r\n [class.hide-title]=\"true\"\r\n [class.no-toolbar-items]=\"true\"\r\n >\r\n </fd-dynamic-page-header>\r\n <fd-dynamic-page-subheader style=\"display: none\"> </fd-dynamic-page-subheader>\r\n\r\n @if (moDataList?.length) {\r\n <fdp-icon-tab-bar [expandOverflowText]=\"'More' | bbbTranslate\" [stackContent]=\"true\">\r\n @for ( tab of moDataList | groupBy: groupby[0].Name | reverse: isFirefox; track _trackByRow(index, tab); let\r\n index = $index) {\r\n <fdp-icon-tab-bar-tab [label]=\"tab.key | bbbTranslate\" [title]=\"tab.key | bbbTranslate\" [id]=\"'h_' + index\">\r\n <fd-dynamic-page-content>\r\n <h4 fd-title [id]=\"'h_' + index + '_h'\">{{ tab.key | bbbTranslate }}</h4>\r\n <bsu-card-view-content\r\n [moDataList]=\"tab.value\"\r\n [groupby]=\"[]\"\r\n [title]=\"tab.key\"\r\n [setting]=\"cardSetting\"\r\n [editMode]=\"inlineEditMode\"\r\n [rtl]=\"rtl\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (action)=\"onAction($event)\"\r\n ></bsu-card-view-content>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n }\r\n </fdp-icon-tab-bar>\r\n } @else {\r\n <fd-dynamic-page-content>\r\n <bsu-no-data [simple]=\"true\"></bsu-no-data>\r\n </fd-dynamic-page-content>\r\n }\r\n</fd-dynamic-page>\r\n", styles: [":host ::ng-deep .fd-container.card-list{padding:0!important}:host ::ng-deep .footer-spacer{display:none!important}\n"] }]
|
|
38
38
|
}], propDecorators: { dynamicPage: [{
|
|
39
39
|
type: ViewChild,
|
|
40
40
|
args: [DynamicPageComponent, { static: true }]
|
|
41
41
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAvdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAvdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7O0FBU2pELE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxtQkFBbUI7SUFQM0U7O1FBU0ksY0FBUyxHQUFHLEtBQUssQ0FBQztLQWVyQjtJQWRHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDcEMsSUFBSSxlQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEQsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7K0dBaEJRLGtDQUFrQzttR0FBbEMsa0NBQWtDLHNIQUNoQyxvQkFBb0IsMEdDYm5DLHdnRkFvREE7OzRGRHhDYSxrQ0FBa0M7a0JBUDlDLFNBQVM7K0JBQ0ksbUNBQW1DLG1CQUc1Qix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUs7OEJBR2tDLFdBQVc7c0JBQTdELFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NoaWxkLCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeW5hbWljUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcbmltcG9ydCB7IFVpQ2FyZFZpZXdDb21wb25lbnQgfSBmcm9tICcuLi91aS1jYXJkLXZpZXcvdWktY2FyZC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGlzRmlyZWZveCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VpLWNhcmQtdmlldy1ob3Jpem9udGFsLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VpLWNhcmQtdmlldy1ob3Jpem9udGFsLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUNhcmRWaWV3SG9yaXpvbnRhbEdyb3VwQ29tcG9uZW50IGV4dGVuZHMgVWlDYXJkVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBWaWV3Q2hpbGQoRHluYW1pY1BhZ2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGR5bmFtaWNQYWdlOiBEeW5hbWljUGFnZUNvbXBvbmVudDtcclxuICAgIGlzRmlyZWZveCA9IGZhbHNlO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmlzRmlyZWZveCA9IGlzRmlyZWZveCgpO1xyXG4gICAgICAgIHRoaXMuX3Vsdk1haW5TZXJ2aWNlLmhpZGVTZWFyY2hwYW5lbCQuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHluYW1pY1BhZ2UucmVmcmVzaFNpemUoKSk7XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyBoaWRlU2VhcmNocGFuZWwgfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgaWYgKGhpZGVTZWFyY2hwYW5lbCAmJiAhaGlkZVNlYXJjaHBhbmVsLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5keW5hbWljUGFnZS5yZWZyZXNoU2l6ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGZkLWR5bmFtaWMtcGFnZSBbc2l6ZV09XCJkZXZpY2VTaXplIHwgZHluYW1pY1BhZ2VTaXplXCI+XHJcbiAgICA8ZmQtZHluYW1pYy1wYWdlLWhlYWRlclxyXG4gICAgICAgIFtjbGFzcy5zaW1wbGUtdGl0bGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3RpdGxlXT1cIicnXCJcclxuICAgICAgICBbY2xhc3MucC1iMF09XCJ0cnVlXCJcclxuICAgICAgICBbY2xhc3MuaGlkZS10aXRsZV09XCJ0cnVlXCJcclxuICAgICAgICBbY2xhc3Mubm8tdG9vbGJhci1pdGVtc109XCJ0cnVlXCJcclxuICAgID5cclxuICAgIDwvZmQtZHluYW1pYy1wYWdlLWhlYWRlcj5cclxuICAgIDxmZC1keW5hbWljLXBhZ2Utc3ViaGVhZGVyIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPiA8L2ZkLWR5bmFtaWMtcGFnZS1zdWJoZWFkZXI+XHJcblxyXG4gICAgQGlmIChtb0RhdGFMaXN0Py5sZW5ndGgpIHtcclxuICAgIDxmZHAtaWNvbi10YWItYmFyIFtleHBhbmRPdmVyZmxvd1RleHRdPVwiJ01vcmUnIHwgYmJiVHJhbnNsYXRlXCIgW3N0YWNrQ29udGVudF09XCJ0cnVlXCI+XHJcbiAgICAgICAgQGZvciAoIHRhYiBvZiBtb0RhdGFMaXN0IHwgZ3JvdXBCeTogZ3JvdXBieVswXS5OYW1lIHwgcmV2ZXJzZTogaXNGaXJlZm94OyB0cmFjayBfdHJhY2tCeVJvdyhpbmRleCwgdGFiKTsgbGV0XHJcbiAgICAgICAgaW5kZXggPSAkaW5kZXgpIHtcclxuICAgICAgICA8ZmRwLWljb24tdGFiLWJhci10YWIgW2xhYmVsXT1cInRhYi5rZXkgfCBiYmJUcmFuc2xhdGVcIiBbdGl0bGVdPVwidGFiLmtleSB8IGJiYlRyYW5zbGF0ZVwiIFtpZF09XCInaF8nICsgaW5kZXhcIj5cclxuICAgICAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPGg0IGZkLXRpdGxlIFtpZF09XCInaF8nICsgaW5kZXggKyAnX2gnXCI+e3sgdGFiLmtleSB8IGJiYlRyYW5zbGF0ZSB9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICA8YnN1LWNhcmQtdmlldy1jb250ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgW21vRGF0YUxpc3RdPVwidGFiLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbZ3JvdXBieV09XCJbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInRhYi5rZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzZXR0aW5nXT1cImNhcmRTZXR0aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICBbZWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtydGxdPVwicnRsXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGV0YWlsc0NvbHVtbnNdPVwiZGV0YWlsc0NvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjYW5WaWV3XT1cImNhblZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuYXZpZ2F0aW9uQXJyb3ddPVwibmF2aWdhdGlvbkFycm93XCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNDaGVja0xpc3RdPVwiaXNDaGVja0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyb3dDaGVjayk9XCJvblJvd0NoZWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh1bHZDb21tYW5kKT1cIm9uVWx2Q29tbWFuZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoZWRpdEZvcm1QYW5lbFNhdmUpPVwib25FZGl0Rm9ybVBhbmVsU2F2ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoZWRpdEZvcm1QYW5lbENhbmNlbCk9XCJvbkVkaXRGb3JtUGFuZWxDYW5jZWwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGFjdGlvbik9XCJvbkFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgID48L2JzdS1jYXJkLXZpZXctY29udGVudD5cclxuICAgICAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtY29udGVudD5cclxuICAgICAgICA8L2ZkcC1pY29uLXRhYi1iYXItdGFiPlxyXG4gICAgICAgIH1cclxuICAgIDwvZmRwLWljb24tdGFiLWJhcj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgPGZkLWR5bmFtaWMtcGFnZS1jb250ZW50PlxyXG4gICAgICAgIDxic3Utbm8tZGF0YSBbc2ltcGxlXT1cInRydWVcIj48L2JzdS1uby1kYXRhPlxyXG4gICAgPC9mZC1keW5hbWljLXBhZ2UtY29udGVudD5cclxuICAgIH1cclxuPC9mZC1keW5hbWljLXBhZ2U+XHJcbiJdfQ==
|
|
@@ -14,8 +14,8 @@ import * as i7 from "@fundamental-ngx/core/file-uploader";
|
|
|
14
14
|
import * as i8 from "@fundamental-ngx/core/dialog";
|
|
15
15
|
import * as i9 from "@fundamental-ngx/cdk/utils";
|
|
16
16
|
import * as i10 from "@fundamental-ngx/core/title";
|
|
17
|
-
import * as i11 from "@fundamental-ngx/core/
|
|
18
|
-
import * as i12 from "
|
|
17
|
+
import * as i11 from "@fundamental-ngx/core/toolbar";
|
|
18
|
+
import * as i12 from "../file-viewer-content/file-viewer-content.component";
|
|
19
19
|
import * as i13 from "../blob-viewer/blob-viewer.component";
|
|
20
20
|
import * as i14 from "../contentDensity.directive";
|
|
21
21
|
export class UiPdfViewerComponent extends DeviceInfoFieldBaseComponent {
|
|
@@ -135,6 +135,7 @@ export class UiPdfViewerComponent extends DeviceInfoFieldBaseComponent {
|
|
|
135
135
|
this.hasPdf = true;
|
|
136
136
|
}
|
|
137
137
|
_uploadToServer(files) {
|
|
138
|
+
this.hasPdf = false;
|
|
138
139
|
this.filesValidationHelper.validateFiles(files);
|
|
139
140
|
this._uploadFile(files).pipe(takeUntil(this._onDestroy$)).subscribe();
|
|
140
141
|
}
|
|
@@ -206,7 +207,7 @@ export class UiPdfViewerComponent extends DeviceInfoFieldBaseComponent {
|
|
|
206
207
|
// };
|
|
207
208
|
let convertTo = isImage(files.Type) ? files.Type : '';
|
|
208
209
|
convertTo = 'pdf,doc,docx,word'.indexOf(files.Type) > -1 ? 'pdf' : convertTo;
|
|
209
|
-
if (
|
|
210
|
+
if (convertTo !== 'pdf') {
|
|
210
211
|
this.singleControl = true;
|
|
211
212
|
this.updateSingleControl(files);
|
|
212
213
|
return;
|
|
@@ -252,11 +253,11 @@ export class UiPdfViewerComponent extends DeviceInfoFieldBaseComponent {
|
|
|
252
253
|
BarsaApi.Ul.LoadingMask.Mask(this._el.nativeElement);
|
|
253
254
|
}
|
|
254
255
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiPdfViewerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
255
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiPdfViewerComponent, selector: "bsu-ui-pdf-viewer", host: { properties: { "style.min-height": "this._minheight" } }, providers: [UploadService], viewQueries: [{ propertyName: "_pdfViewerOnDemand", first: true, predicate: ["pdfViewerOnDemand"], descendants: true }, { propertyName: "_dialogTpl", first: true, predicate: ["dialogTpl"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\r\n @switch (parameters?.ShowMode) { @case ('2') {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\r\n </div>\r\n } @default {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </div>\r\n } }\r\n</ng-container>\r\n\r\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\r\n @if ((disableOrReadonly$ | async) !== true) {\r\n <fd-toolbar [class.dialogMode]=\"dialogMode\" [transparent]=\"true\" [shouldOverflow]=\"true\">\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"id\"\r\n [name]=\"'pdf_' + id\"\r\n [placeholder]=\"'AttachFile' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\r\n [accept]=\"validExtension\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n ></fd-file-uploader>\r\n @if (!parameters?.HideDelete) {\r\n <button\r\n [disabled]=\"!(canDelete && value)\"\r\n fd-button\r\n fd-toolbar-item\r\n class=\"delete\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n } @if (!parameters?.HideAttach) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n [disabled]=\"!canUpload\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n } @if (canEdit) {\r\n <button fd-toolbar-item fd-button glyph=\"edit\" [fdType]=\"'transparent'\" (click)=\"onEdit()\"></button>\r\n } @if (useWordEditor) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'Edit' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n } @if (officeOnline) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'OfficeOnline' | bbbTranslate\"\r\n (click)=\"onOfficeOnline($event)\"\r\n ></button>\r\n } @if (dialogMode) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"'show'\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\r\n (click)=\"onOpenPreviewInDialog()\"\r\n bodyClick\r\n ></button>\r\n } @if (canDownload) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [glyph]=\"'download'\"\r\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n bodyClick\r\n ></button>\r\n } @if (!parameters?.HideRefresh) {\r\n <button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"dialogMode ? null : 'refresh'\"\r\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n bodyClick\r\n (click)=\"onRefresh()\"\r\n ></button>\r\n }\r\n <fd-busy-indicator\r\n fd-toolbar-item\r\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\r\n ></fd-busy-indicator>\r\n </fd-toolbar>\r\n }\r\n</ng-template>\r\n<ng-template #preview>\r\n @if (isMobile) {\r\n <div\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n @if(value){\r\n <bsu-blob-viewer [file]=\"value\" [style.width]=\"width\" [decrement]=\"'25px'\"></bsu-blob-viewer>\r\n }\r\n <!-- <ng2-pdfjs-viewer\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n #pdfViewerOnDemand\r\n [externalWindow]=\"false\"\r\n [downloadFileName]=\"blobUrl\"\r\n [openFile]=\"false\"\r\n [viewBookmark]=\"false\"\r\n [showSpinner]=\"true\"\r\n [download]=\"true\"\r\n ></ng2-pdfjs-viewer> -->\r\n </div>\r\n } @else { @if (hasPdf) {\r\n <object\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n [disable]=\"inlineEdit\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"inlineEdit ? 'auto' : formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n } @else { @if (singleControl && value && !value.IsDeleted) {\r\n <div style=\"display: flex\">\r\n @if (singleFileThumbnailUrl) {\r\n <img [src]=\"singleFileThumbnailUrl\" />\r\n }\r\n <fd-object-identifier>\r\n {{ value.FileName }}\r\n </fd-object-identifier>\r\n </div>\r\n } @else {\r\n <div\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n class=\"hatchBackground\"\r\n [disable]=\"inlineEdit\"\r\n [class.tw-h-4]=\"inlineEdit\"\r\n ></div>\r\n } } }\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTpl>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" class=\"vertical\">\r\n <fd-dialog-header>\r\n <ng-template fdkTemplate=\"header\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <h3 fd-title>edit in word</h3>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onDialogClose()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column}:host fd-toolbar.dialogMode ::ng-deep .fd-toolbar{border-bottom:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}:host ::ng-deep .fd-file-uploader input{display:none}.single-control{height:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "directive", type: i3.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "directive", type: i3.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "directive", type: i4.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i4.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i4.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i8.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i8.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i9.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i10.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i11.ObjectIdentifierComponent, selector: "fd-object-identifier", inputs: ["description", "bold", "medium"] }, { kind: "component", type: i12.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i12.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i13.BlobViewerComponent, selector: "bsu-blob-viewer", inputs: ["file"] }, { kind: "directive", type: i14.ContentDensityDirective, selector: "[contentDensity]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
256
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiPdfViewerComponent, selector: "bsu-ui-pdf-viewer", host: { properties: { "style.min-height": "this._minheight" } }, providers: [UploadService], viewQueries: [{ propertyName: "_pdfViewerOnDemand", first: true, predicate: ["pdfViewerOnDemand"], descendants: true }, { propertyName: "_dialogTpl", first: true, predicate: ["dialogTpl"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\r\n @switch (parameters?.ShowMode) { @case ('2') {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\r\n </div>\r\n } @default {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </div>\r\n } }\r\n</ng-container>\r\n\r\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\r\n @if ((disableOrReadonly$ | async) !== true) {\r\n <fd-toolbar [class.dialogMode]=\"dialogMode\" [transparent]=\"true\" [shouldOverflow]=\"true\">\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"id\"\r\n [name]=\"'pdf_' + id\"\r\n [placeholder]=\"'AttachFile' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\r\n [accept]=\"validExtension\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n ></fd-file-uploader>\r\n @if (!parameters?.HideDelete) {\r\n <button\r\n [disabled]=\"!(canDelete && value)\"\r\n fd-button\r\n fd-toolbar-item\r\n class=\"delete\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n } @if (!parameters?.HideAttach) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n [disabled]=\"!canUpload\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n } @if (canEdit) {\r\n <button fd-toolbar-item fd-button glyph=\"edit\" [fdType]=\"'transparent'\" (click)=\"onEdit()\"></button>\r\n } @if (useWordEditor) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'Edit' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n } @if (officeOnline) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'OfficeOnline' | bbbTranslate\"\r\n (click)=\"onOfficeOnline($event)\"\r\n ></button>\r\n } @if (dialogMode) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"'show'\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\r\n (click)=\"onOpenPreviewInDialog()\"\r\n bodyClick\r\n ></button>\r\n } @if (canDownload) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [glyph]=\"'download'\"\r\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n bodyClick\r\n ></button>\r\n } @if (!parameters?.HideRefresh) {\r\n <button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"dialogMode ? null : 'refresh'\"\r\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n bodyClick\r\n (click)=\"onRefresh()\"\r\n ></button>\r\n }\r\n <fd-busy-indicator\r\n fd-toolbar-item\r\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\r\n ></fd-busy-indicator>\r\n </fd-toolbar>\r\n }\r\n</ng-template>\r\n<ng-template #preview>\r\n @if (isMobile) {\r\n <div\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n @if(value){\r\n <bsu-blob-viewer [file]=\"value\" [style.width]=\"width\" [decrement]=\"'25px'\"></bsu-blob-viewer>\r\n }\r\n <!-- <ng2-pdfjs-viewer\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n #pdfViewerOnDemand\r\n [externalWindow]=\"false\"\r\n [downloadFileName]=\"blobUrl\"\r\n [openFile]=\"false\"\r\n [viewBookmark]=\"false\"\r\n [showSpinner]=\"true\"\r\n [download]=\"true\"\r\n ></ng2-pdfjs-viewer> -->\r\n </div>\r\n } @else { @if (hasPdf) {\r\n <object\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n [disable]=\"inlineEdit\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"inlineEdit ? 'auto' : formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n } @else { @if (singleControl && value && !value.IsDeleted) {\r\n <div class=\"tw-flex tw-justify-center\">\r\n @if (singleFileThumbnailUrl) {\r\n <bsu-file-viewer-content\r\n [attr.title]=\"value.FileName\" \r\n [file]=\"value\"\r\n [imageOnly]=\"true\"\r\n [fillWidth]=\"true\"\r\n [isImageGallery]=\"false\"\r\n ></bsu-file-viewer-content>\r\n <!-- <img [src]=\"singleFileThumbnailUrl\" /> -->\r\n }\r\n </div>\r\n } @else {\r\n <div\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n class=\"hatchBackground\"\r\n [disable]=\"inlineEdit\"\r\n [class.tw-h-4]=\"inlineEdit\"\r\n ></div>\r\n } } }\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTpl>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" class=\"vertical\">\r\n <fd-dialog-header>\r\n <ng-template fdkTemplate=\"header\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <h3 fd-title>edit in word</h3>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onDialogClose()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column}:host fd-toolbar.dialogMode ::ng-deep .fd-toolbar{border-bottom:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}:host ::ng-deep .fd-file-uploader input{display:none}.single-control{height:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "directive", type: i3.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "directive", type: i3.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "directive", type: i4.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i4.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i4.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i8.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i8.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i9.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i10.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i11.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i11.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i12.FileViewerContentComponent, selector: "bsu-file-viewer-content", inputs: ["fillWidth", "imageOnly", "isImageGallery", "cardMode", "showFooter", "showContent", "width", "deviceSize", "cardContentHeight", "file"], outputs: ["cantView"] }, { kind: "component", type: i13.BlobViewerComponent, selector: "bsu-blob-viewer", inputs: ["file"] }, { kind: "directive", type: i14.ContentDensityDirective, selector: "[contentDensity]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
256
257
|
}
|
|
257
258
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiPdfViewerComponent, decorators: [{
|
|
258
259
|
type: Component,
|
|
259
|
-
args: [{ selector: 'bsu-ui-pdf-viewer', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container *untilInView=\"el\">\r\n @switch (parameters?.ShowMode) { @case ('2') {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\r\n </div>\r\n } @default {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </div>\r\n } }\r\n</ng-container>\r\n\r\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\r\n @if ((disableOrReadonly$ | async) !== true) {\r\n <fd-toolbar [class.dialogMode]=\"dialogMode\" [transparent]=\"true\" [shouldOverflow]=\"true\">\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"id\"\r\n [name]=\"'pdf_' + id\"\r\n [placeholder]=\"'AttachFile' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\r\n [accept]=\"validExtension\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n ></fd-file-uploader>\r\n @if (!parameters?.HideDelete) {\r\n <button\r\n [disabled]=\"!(canDelete && value)\"\r\n fd-button\r\n fd-toolbar-item\r\n class=\"delete\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n } @if (!parameters?.HideAttach) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n [disabled]=\"!canUpload\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n } @if (canEdit) {\r\n <button fd-toolbar-item fd-button glyph=\"edit\" [fdType]=\"'transparent'\" (click)=\"onEdit()\"></button>\r\n } @if (useWordEditor) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'Edit' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n } @if (officeOnline) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'OfficeOnline' | bbbTranslate\"\r\n (click)=\"onOfficeOnline($event)\"\r\n ></button>\r\n } @if (dialogMode) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"'show'\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\r\n (click)=\"onOpenPreviewInDialog()\"\r\n bodyClick\r\n ></button>\r\n } @if (canDownload) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [glyph]=\"'download'\"\r\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n bodyClick\r\n ></button>\r\n } @if (!parameters?.HideRefresh) {\r\n <button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"dialogMode ? null : 'refresh'\"\r\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n bodyClick\r\n (click)=\"onRefresh()\"\r\n ></button>\r\n }\r\n <fd-busy-indicator\r\n fd-toolbar-item\r\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\r\n ></fd-busy-indicator>\r\n </fd-toolbar>\r\n }\r\n</ng-template>\r\n<ng-template #preview>\r\n @if (isMobile) {\r\n <div\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n @if(value){\r\n <bsu-blob-viewer [file]=\"value\" [style.width]=\"width\" [decrement]=\"'25px'\"></bsu-blob-viewer>\r\n }\r\n <!-- <ng2-pdfjs-viewer\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n #pdfViewerOnDemand\r\n [externalWindow]=\"false\"\r\n [downloadFileName]=\"blobUrl\"\r\n [openFile]=\"false\"\r\n [viewBookmark]=\"false\"\r\n [showSpinner]=\"true\"\r\n [download]=\"true\"\r\n ></ng2-pdfjs-viewer> -->\r\n </div>\r\n } @else { @if (hasPdf) {\r\n <object\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n [disable]=\"inlineEdit\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"inlineEdit ? 'auto' : formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n } @else { @if (singleControl && value && !value.IsDeleted) {\r\n <div
|
|
260
|
+
args: [{ selector: 'bsu-ui-pdf-viewer', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container *untilInView=\"el\">\r\n @switch (parameters?.ShowMode) { @case ('2') {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar; context: { dialogMode: true }\"></ng-container>\r\n </div>\r\n } @default {\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"toolbar\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </div>\r\n } }\r\n</ng-container>\r\n\r\n<ng-template #toolbar let-dialogMode=\"dialogMode\">\r\n @if ((disableOrReadonly$ | async) !== true) {\r\n <fd-toolbar [class.dialogMode]=\"dialogMode\" [transparent]=\"true\" [shouldOverflow]=\"true\">\r\n <fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n fd-toolbar-item\r\n [id]=\"id\"\r\n [name]=\"'pdf_' + id\"\r\n [placeholder]=\"'AttachFile' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\r\n [accept]=\"validExtension\"\r\n [(ngModel)]=\"files\"\r\n [multiple]=\"false\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n ></fd-file-uploader>\r\n @if (!parameters?.HideDelete) {\r\n <button\r\n [disabled]=\"!(canDelete && value)\"\r\n fd-button\r\n fd-toolbar-item\r\n class=\"delete\"\r\n glyph=\"delete\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDelete()\"\r\n ></button>\r\n } @if (!parameters?.HideAttach) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"attachment\"\r\n [fdType]=\"'transparent'\"\r\n [disabled]=\"!canUpload\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n } @if (canEdit) {\r\n <button fd-toolbar-item fd-button glyph=\"edit\" [fdType]=\"'transparent'\" (click)=\"onEdit()\"></button>\r\n } @if (useWordEditor) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'Edit' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n } @if (officeOnline) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'OfficeOnline' | bbbTranslate\"\r\n (click)=\"onOfficeOnline($event)\"\r\n ></button>\r\n } @if (dialogMode) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"'show'\"\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"!dialogMode ? '' : ('View' | bbbTranslate)\"\r\n (click)=\"onOpenPreviewInDialog()\"\r\n bodyClick\r\n ></button>\r\n } @if (canDownload) {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n [glyph]=\"'download'\"\r\n [label]=\"!dialogMode ? '' : ('Download' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n bodyClick\r\n ></button>\r\n } @if (!parameters?.HideRefresh) {\r\n <button\r\n [attr.fdOverflowPriority]=\"'low'\"\r\n fd-toolbar-item\r\n fd-button\r\n [glyph]=\"dialogMode ? null : 'refresh'\"\r\n [label]=\"!dialogMode ? '' : ('Refresh' | bbbTranslate)\"\r\n [fdType]=\"'transparent'\"\r\n bodyClick\r\n (click)=\"onRefresh()\"\r\n ></button>\r\n }\r\n <fd-busy-indicator\r\n fd-toolbar-item\r\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\r\n ></fd-busy-indicator>\r\n </fd-toolbar>\r\n }\r\n</ng-template>\r\n<ng-template #preview>\r\n @if (isMobile) {\r\n <div\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n @if(value){\r\n <bsu-blob-viewer [file]=\"value\" [style.width]=\"width\" [decrement]=\"'25px'\"></bsu-blob-viewer>\r\n }\r\n <!-- <ng2-pdfjs-viewer\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n #pdfViewerOnDemand\r\n [externalWindow]=\"false\"\r\n [downloadFileName]=\"blobUrl\"\r\n [openFile]=\"false\"\r\n [viewBookmark]=\"false\"\r\n [showSpinner]=\"true\"\r\n [download]=\"true\"\r\n ></ng2-pdfjs-viewer> -->\r\n </div>\r\n } @else { @if (hasPdf) {\r\n <object\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n [disable]=\"inlineEdit\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"inlineEdit ? 'auto' : formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n } @else { @if (singleControl && value && !value.IsDeleted) {\r\n <div class=\"tw-flex tw-justify-center\">\r\n @if (singleFileThumbnailUrl) {\r\n <bsu-file-viewer-content\r\n [attr.title]=\"value.FileName\" \r\n [file]=\"value\"\r\n [imageOnly]=\"true\"\r\n [fillWidth]=\"true\"\r\n [isImageGallery]=\"false\"\r\n ></bsu-file-viewer-content>\r\n <!-- <img [src]=\"singleFileThumbnailUrl\" /> -->\r\n }\r\n </div>\r\n } @else {\r\n <div\r\n fillEmptySpace\r\n [containerDom]=\"formContainer\"\r\n [dontUseTopBound]=\"true\"\r\n class=\"hatchBackground\"\r\n [disable]=\"inlineEdit\"\r\n [class.tw-h-4]=\"inlineEdit\"\r\n ></div>\r\n } } }\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTpl>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" class=\"vertical\">\r\n <fd-dialog-header>\r\n <ng-template fdkTemplate=\"header\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <h3 fd-title>edit in word</h3>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"onDialogClose()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n <fd-dialog-body>\r\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column}:host fd-toolbar.dialogMode ::ng-deep .fd-toolbar{border-bottom:none}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}:host ::ng-deep .fd-file-uploader input{display:none}.single-control{height:50px}\n"] }]
|
|
260
261
|
}], propDecorators: { _pdfViewerOnDemand: [{
|
|
261
262
|
type: ViewChild,
|
|
262
263
|
args: ['pdfViewerOnDemand']
|
|
@@ -267,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
267
268
|
type: HostBinding,
|
|
268
269
|
args: ['style.min-height']
|
|
269
270
|
}] } });
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1wZGYtdmlld2VyL3VpLXBkZi12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGRmLXZpZXdlci91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFLWCxTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFrQixhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsUUFBUSxFQUNSLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsT0FBTyxFQUNQLFlBQVksRUFDWixPQUFPLEVBQ1AsaUJBQWlCLEVBR3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVekUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDRCQUE0QjtJQVJ0RTs7UUFXcUMsZUFBVSxHQUFrQixNQUFNLENBQUM7UUEyQnBFLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsWUFBTyxHQUFHLElBQUksQ0FBQztRQVFmLG1CQUFjLEdBQWtCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQXVRekQ7SUF0UUcsUUFBUTtRQUNKLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUM7UUFDM0QsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pC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QU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsR0FBUTtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNMLENBQUM7SUFDTyxTQUFTO1FBQ2IsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNPLEtBQUs7UUFDVCxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6RCxDQUFDOytHQTdTUSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw2R0FKbEIsQ0FBQyxhQUFhLENBQUMseVJDaEM5Qix5M05BMExBOzs0RkR0SmEsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNJLG1CQUFtQixhQUdsQixDQUFDLGFBQWEsQ0FBQyxtQkFDVCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUs7OEJBR2Usa0JBQWtCO3NCQUFqRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDTixVQUFVO3NCQUFqQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1csVUFBVTtzQkFBMUMsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uSW5pdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIGluamVjdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29udGVudERlbnNpdHksIERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgQmFyc2FBcGksXHJcbiAgICBVcGxvYWRTZXJ2aWNlLFxyXG4gICAgRmlsZXNWYWxpZGF0aW9uSGVscGVyLFxyXG4gICAgaXNJbWFnZSxcclxuICAgIGdldEltYWdlUGF0aCxcclxuICAgIGdldEljb24sXHJcbiAgICBnZXRWYWxpZEV4dGVuc2lvbixcclxuICAgIElVcGxvYWRpbmdTdGF0ZSxcclxuICAgIE1ldGFvYmplY3REYXRhTW9kZWxcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IERldmljZUluZm9GaWVsZEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9kZXZpY2UtaW5mby1maWVsZC1iYXNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktcGRmLXZpZXdlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtVcGxvYWRTZXJ2aWNlXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpUGRmVmlld2VyQ29tcG9uZW50IGV4dGVuZHMgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBWaWV3Q2hpbGQoJ3BkZlZpZXdlck9uRGVtYW5kJykgX3BkZlZpZXdlck9uRGVtYW5kOiBhbnk7XHJcbiAgICBAVmlld0NoaWxkKCdkaWFsb2dUcGwnKSBfZGlhbG9nVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4taGVpZ2h0JykgX21pbmhlaWdodDogc3RyaW5nIHwgbnVsbCA9ICc3MHZoJztcclxuICAgIGZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgICBmYWxsYmFja0xpbms6IGFueTtcclxuICAgIGNhbk5vdFJlbmRlclBkZjogYm9vbGVhbjtcclxuICAgIHZhbHVlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsO1xyXG4gICAgaGFzUGRmOiBib29sZWFuO1xyXG4gICAgcGRmT2JqZWN0OiB7XHJcbiAgICAgICAgYXV0b0VsOiB7XHJcbiAgICAgICAgICAgIHRhZzogc3RyaW5nO1xyXG4gICAgICAgICAgICBkYXRhOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHR5cGU6IHN0cmluZztcclxuICAgICAgICAgICAgd2lkdGg6IHN0cmluZztcclxuICAgICAgICAgICAgaGVpZ2h0OiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGh0bWw6IGFueTtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuXHJcbiAgICB1cGxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8SVVwbG9hZGluZ1N0YXRlPjtcclxuICAgIGZpbGVzOiBGaWxlW107XHJcbiAgICBjb250ZW50RGVuc2l0eSQ6IE9ic2VydmFibGU8Q29udGVudERlbnNpdHk+O1xyXG4gICAgb2ZmaWNlT25saW5lOiBhbnk7XHJcbiAgICB1c2VXb3JkRWRpdG9yOiBhbnk7XHJcbiAgICBoYXNGaWxlTmFtZTogYm9vbGVhbjtcclxuICAgIGNhblJlbW92ZTogYm9vbGVhbjtcclxuICAgIGNhblVwbG9hZDogYm9vbGVhbjtcclxuICAgIGNhbkVkaXQ6IGJvb2xlYW47XHJcbiAgICBjYW5Eb3dubG9hZDogYm9vbGVhbjtcclxuICAgIGNhbkRlbGV0ZSA9IHRydWU7XHJcbiAgICBjYW5TYXZlID0gdHJ1ZTtcclxuICAgIHZhbGlkRXh0ZW5zaW9uOiBzdHJpbmc7XHJcbiAgICBmaWxlc1ZhbGlkYXRpb25IZWxwZXI6IEZpbGVzVmFsaWRhdGlvbkhlbHBlcjtcclxuICAgIHNpbmdsZUNvbnRyb2w6IGJvb2xlYW47XHJcbiAgICBzaW5nbGVGaWxlVGh1bWJuYWlsVXJsOiBzdHJpbmc7XHJcbiAgICBwYXJlbnRIZWlnaHQ6IG51bWJlcjtcclxuICAgIGJsb2JVcmw6IHN0cmluZztcclxuICAgIHBhcmFtZXRlcmVzOiBVaVBkZlZpZXdlclNldHRpbmc7XHJcbiAgICBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXBsb2FkaW5nU3RhdGUkID0gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWRpbmdTdGF0ZSQ7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMucGFyYW1ldGVycz8uU2hvd01vZGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5oZWlnaHQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX21pbmhlaWdodCA9IHRoaXMuaW5saW5lRWRpdCA/ICdhdXRvJyA6IHRoaXMuX21pbmhlaWdodDtcclxuICAgICAgICB0aGlzLnZhbHVlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCQuc3Vic2NyaWJlKChmcm9tU2VydmVyOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2goZnJvbVNlcnZlcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5maWxlc1ZhbGlkYXRpb25IZWxwZXIgPSBuZXcgRmlsZXNWYWxpZGF0aW9uSGVscGVyKFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4RmlsZUNvdW50LFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4RmlsZVNpemVLYixcclxuICAgICAgICAgICAgdGhpcy5TZXR0aW5nLk1heFRvdGFsRmlsZVNpemVLYlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnMoKTtcclxuICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XHJcbiAgICAgICAgdGhpcy52YWxpZEV4dGVuc2lvbiA9IHRoaXMuY29udGV4dC51c2VXb3JkRWRpdG9yXHJcbiAgICAgICAgICAgID8gJy5kb2MsLmRvY3gsYXBwbGljYXRpb24vbXN3b3JkLGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J1xyXG4gICAgICAgICAgICA6IGdldFZhbGlkRXh0ZW5zaW9uKHRoaXMuU2V0dGluZy5WYWxpZEV4dGVuc2lvbnMpO1xyXG4gICAgICAgIHRoaXMuc2luZ2xlQ29udHJvbCA9IHRoaXMuU2V0dGluZy5WaWV3VHlwZSA9PT0gJ1NpbmdsZUZpbGVDb250cm9sJztcclxuICAgIH1cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBjb25zdCB7IGZvcm1IZWlnaHQgfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgaWYgKGZvcm1IZWlnaHQgJiYgIWZvcm1IZWlnaHQuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkVkaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRWRpdCcpO1xyXG4gICAgfVxyXG4gICAgb25WaWV3KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZSA9IHsgY3RybEtleTogZXZlbnQuY3RybEtleSB9O1xyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ09PVmlldycsIGUpO1xyXG4gICAgfVxyXG4gICAgb25Eb3dubG9hZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdEb3dubG9hZCcpO1xyXG4gICAgfVxyXG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl91cGxvYWRUb1NlcnZlcihmaWxlcyk7XHJcbiAgICB9XHJcbiAgICBvbkRlbGV0ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdEZWxldGUnKTtcclxuICAgIH1cclxuICAgIG9uRWRpdEluV29yZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPREVkaXQnKTtcclxuICAgIH1cclxuICAgIG9uT2ZmaWNlT25saW5lKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZSA9IHsgY3RybEtleTogZXZlbnQuY3RybEtleSB9O1xyXG5cclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPT0VkaXQnLCBlKTtcclxuICAgIH1cclxuICAgIG9uUmVmcmVzaCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdSZWZyZXNoJyk7XHJcbiAgICB9XHJcbiAgICBEb3dubG9hZEZpbGVJZChmaWxlSWQsIHZpZXdJbkJyb3dzZXIsIGNvbnZlcnRUbywgZm9yT2N4LCBpc09mZmljZU9ubGluZSk6IHZvaWQge1xyXG4gICAgICAgIC8vIGlmICghaXNGaXJlZm94KCkpIHtcclxuICAgICAgICAvLyAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLl9tYXNrKCk7XHJcbiAgICAgICAgLy8gICAgIH0sIDApO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkZpbGUuRG93bmxvYWRGaWxlQ29udGVudC5iaW5kKHRoaXMpKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgICAgICAgICBmaWxlVXJsOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgdmlld0luQnJvd3NlcixcclxuICAgICAgICAgICAgICAgIGNvbnZlcnRUbyxcclxuICAgICAgICAgICAgICAgIGlzT2ZmaWNlT25saW5lLFxyXG4gICAgICAgICAgICAgICAgZm9yT2N4XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2NlZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kb3dubG9hZEZpbGVJZENvbXBsZXRlZChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5faGlkZU1hc2soKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLl9oaWRlTWFzaygpO1xyXG4gICAgICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgb25PcGVuUHJldmlld0luRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLl9kaWFsb2dUcGwsIHtcclxuICAgICAgICAgICAgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIG1vYmlsZTogdHJ1ZSxcclxuICAgICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtYXAnLFxyXG4gICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnk6ICdjaG9vc2UgbG9jYXRpb24nLFxyXG4gICAgICAgICAgICBmb2N1c1RyYXBwZWQ6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIG9uRGlhbG9nQ2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2Rvd25sb2FkRmlsZUlkQ29tcGxldGVkKHJlc3BvbnNlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYmxvYiA9IEJhcnNhQXBpLkNvbW1vbi5GaWxlLkI2NHRvQmxvYihyZXNwb25zZS5jb250ZW50LCByZXNwb25zZS5jb250ZW50VHlwZSk7XHJcbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMO1xyXG4gICAgICAgIHRoaXMuYmxvYlVybCA9IHVybC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5fcGRmVmlld2VyT25EZW1hbmQucGRmU3JjID0gdGhpcy5ibG9iVXJsOyAvLyBwZGZTcmMgY2FuIGJlIEJsb2Igb3IgVWludDhBcnJheVxyXG4gICAgICAgICAgICAvLyB0aGlzLl9wZGZWaWV3ZXJPbkRlbWFuZC5yZWZyZXNoKCk7IC8vIEFzayBwZGYgdmlld2VyIHRvIGxvYWQvcmVmcmVzaCBwZGZcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52YWx1ZVVybCA9IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5ibG9iVXJsKTtcclxuICAgICAgICB0aGlzLmhhc1BkZiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3VwbG9hZFRvU2VydmVyKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpbGVzVmFsaWRhdGlvbkhlbHBlci52YWxpZGF0ZUZpbGVzKGZpbGVzKTtcclxuICAgICAgICB0aGlzLl91cGxvYWRGaWxlKGZpbGVzKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9yZWZyZXNoQnV0dG9ucygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uc0hlbHBlcihmYWxzZSk7XHJcbiAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFzeW5jLldhdGVyZmFsbChcclxuICAgICAgICAgICAgJ0NvbW1vbi5GaWxlLklzQWdlbnRBY3RpdmUnLFxyXG4gICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAvLyBDb21tb24uRmlsZUFnZW50LklzQWdlbnRBY3RpdmUuYmluZChDb21tb24uRmlsZUFnZW50KSxcclxuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5BZ2VudEhlbHBlci5Jbml0LmJpbmQoQmFyc2FBcGkuQ29tbW9uLkFnZW50SGVscGVyKVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAoZXJyLCByZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFnZW50SXNBY3RpdmUgPSByZXN1bHQgPT09ICdPSyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uc0hlbHBlcihhZ2VudElzQWN0aXZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2hCdXR0b25zSGVscGVyKGlzQWdlbnRBY3RpdmUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVPclJlYWRvbmx5JC5zdWJzY3JpYmUoKGRpc2FibGVPclJlYWRvbmx5KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhblNhdmUgPSB0aGlzLmNhblNhdmU7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuRGVsZXRlID0gIWRpc2FibGVPclJlYWRvbmx5O1xyXG4gICAgICAgICAgICBjb25zdCBoYXNWYWx1ZSA9ICFCYXJzYUFwaS5FeHQuaXNFbXB0eSh0aGlzLnZhbHVlKTtcclxuICAgICAgICAgICAgY29uc3QgZWRpdDAgPSBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNhbkVkaXQgPSBlZGl0MCAmJiBpc0FnZW50QWN0aXZlO1xyXG4gICAgICAgICAgICB0aGlzLmNhbkRvd25sb2FkID0gIXRoaXMuU2V0dGluZy5Jc1dvcmRWaWV3ZXIgfHwgKCFpc0FnZW50QWN0aXZlICYmIGVkaXQwKTtcclxuICAgICAgICAgICAgdGhpcy5jYW5VcGxvYWQgPSB0aGlzLmNhbkRvd25sb2FkICYmIGNhblNhdmUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzRmlsZU5hbWUgPSAhdGhpcy5jb250ZXh0LlNldHRpbmcuSXNXb3JkVmlld2VyO1xyXG4gICAgICAgICAgICB0aGlzLmNhblJlbW92ZSA9IHRoaXMuY2FuRG93bmxvYWQgJiYgY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMub2ZmaWNlT25saW5lID0gaGFzVmFsdWUgJiYgY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZSAmJiB0aGlzLmNvbnRleHQuT2ZmaWNlT25saW5lO1xyXG4gICAgICAgICAgICB0aGlzLnVzZVdvcmRFZGl0b3IgPSBoYXNWYWx1ZSAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIHRoaXMuY29udGV4dC51c2VXb3JkRWRpdG9yO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9jb21tYW5kQ2xpY2tIYW5kbGVyKGl0ZW1JZCwga2V5Ym9hcmRFdmVudD8pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb21tYW5kSWQgPSBpdGVtSWQ7XHJcblxyXG4gICAgICAgIGxldCBmaWxlcyA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgaWYgKEJhcnNhQXBpLkV4dC5pc0FycmF5KGZpbGVzKSkge1xyXG4gICAgICAgICAgICBmaWxlcyA9IGZpbGVzWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmlsZUlkID0gZmlsZXM/LklkO1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ0NvbW1hbmRSZXF1ZXN0JywgdGhpcywgY29tbWFuZElkLCBmaWxlSWQsIGtleWJvYXJkRXZlbnQpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9yZWZyZXNoKGZyb21TZXJ2ZXI/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgb2ZmaWNlT25saW5lID0gZnJvbVNlcnZlciA9PT0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuZmlsZU5hbWUgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKEJhcnNhQXBpLkV4dC5pc0VtcHR5KHRoaXMudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzUGRmID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmaWxlcyA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgaWYgKEJhcnNhQXBpLkV4dC5pc0FycmF5KGZpbGVzKSkge1xyXG4gICAgICAgICAgICBmaWxlcyA9IGZpbGVzWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmlsZUlkID0gZmlsZXMuSWQ7XHJcbiAgICAgICAgaWYgKCFmaWxlSWQgfHwgZmlsZXMuSXNEZWxldGVkKSB7XHJcbiAgICAgICAgICAgIGlmIChmaWxlcy5Jc0RlbGV0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzUGRmID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZhbGxiYWNrTGluayA9IGDYp9mF2qnYp9mGINmG2YXYp9uM2LQg2YHYp9uM2YQg2K/YsSDYp9uM2YYg2YXYsdmI2LHar9ixINmI2KzZiNivINmG2K/Yp9ix2K8uXHJcbiAgICAgICAgINio2LHYp9uMINio2KfYsiDaqdix2K/ZhiDZgdin24zZhCDYp9iyINmE24zZhtqpINiy24zYsSDYp9iz2KrZgdin2K/ZhyDaqdmG24zYrzogIDwvYnI+IDxhIGhyZWY9JyR7QmFyc2FBcGkuQ29tbW9uLkZpbGUuQ3JlYXRlQXR0YWNobWVudFVybChcclxuICAgICAgICAgICAgIGZpbGVJZCxcclxuICAgICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICApfSc+2K/Yp9mG2YTZiNivINmB2KfbjNmEINio2LXZiNix2KogcGRmPC9hPiAgPC9icj4gIDxhIGhyZWY9JyR7QmFyc2FBcGkuQ29tbW9uLkZpbGUuQ3JlYXRlQXR0YWNobWVudFVybChcclxuICAgICAgICAgICAgZmlsZUlkLFxyXG4gICAgICAgICAgICBmYWxzZSxcclxuICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICApfSc+2K/Yp9mG2YTZiNivINmB2KfbjNmEINio2LXZiNix2Kog2KjYtdmI2LHYqiDYp9i12YTbjDwvYT5gO1xyXG5cclxuICAgICAgICBpZiAoIUJhcnNhQXBpLkV4dC5pc0lFKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIC8vICAgICBmYWxsYmFja0xpbms6IHRoaXMuZmFsbGJhY2tMaW5rLFxyXG4gICAgICAgICAgICAvLyAgICAgcGRmT3BlblBhcmFtczoge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIHZpZXc6ICdGaXRIJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICBzY3JvbGxiYXI6ICcwJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICB0b29sYmFyOiAnMCcsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgc3RhdHVzYmFyOiAnMCcsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgbWVzc2FnZXM6ICcwJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICBuYXZwYW5lczogJzAnXHJcbiAgICAgICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgICAgIC8vIH07XHJcbiAgICAgICAgICAgIGxldCBjb252ZXJ0VG8gPSBpc0ltYWdlKGZpbGVzLlR5cGUpID8gZmlsZXMuVHlwZSA6ICcnO1xyXG4gICAgICAgICAgICBjb252ZXJ0VG8gPSAncGRmLGRvYyxkb2N4LHdvcmQnLmluZGV4T2YoZmlsZXMuVHlwZSkgPiAtMSA/ICdwZGYnIDogY29udmVydFRvO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFjb252ZXJ0VG8pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlQ29udHJvbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNpbmdsZUNvbnRyb2woZmlsZXMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlQ29udHJvbCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5Eb3dubG9hZEZpbGVJZChmaWxlSWQsIHRydWUsIGNvbnZlcnRUbywgbnVsbCwgb2ZmaWNlT25saW5lKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBjb25zdCB1cmwgPSBDb21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKGZpbGVJZCwgZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmNhbk5vdFJlbmRlclBkZiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfdXBsb2FkRmlsZShmaWxlczogRmlsZVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGUpID0+IHtcclxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCd1bmljRmlsZU5hbWUnLCAneCcgKyBCYXJzYUFwaS5Db21tb24uVXRpbC5HZXROZXdNZXRhR3VpZCgpICsgJzs7OycgKyBmaWxlLm5hbWUpO1xyXG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwbG9hZFNlcnZpY2UudXBsb2FkKGZvcm1EYXRhLCB0aGlzLlNldHRpbmcuQ29udHJvbEZpZWxkRGVmSWQpLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVmFsdWUocmVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfdXBkYXRlVmFsdWUocmVzOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLlNldHRpbmcuVmlld1R5cGUgIT09ICdMaW5lYXJMaXN0Qm94Jykge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNpbmdsZUNvbnRyb2wocmVzWzBdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maXJlQ29udGV4dEV2ZW50KCdDaGFuZ2UnLCB0aGlzLmNvbnRleHQsIHJlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVTaW5nbGVDb250cm9sKHZhbDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGlzSW1hZ2UodmFsLlR5cGUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlRmlsZVRodW1ibmFpbFVybCA9IGdldEltYWdlUGF0aCgnSUQnLCAnJywgdmFsLklkKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNpbmdsZUZpbGVUaHVtYm5haWxVcmwgPSBnZXRJY29uKHZhbC5UeXBlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9oaWRlTWFzaygpOiB2b2lkIHtcclxuICAgICAgICBCYXJzYUFwaS5VbC5Mb2FkaW5nTWFzay5Vbm1hc2sodGhpcy5fZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9tYXNrKCk6IHZvaWQge1xyXG4gICAgICAgIEJhcnNhQXBpLlVsLkxvYWRpbmdNYXNrLk1hc2sodGhpcy5fZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBVaVBkZlZpZXdlclNldHRpbmcgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcclxuICAgIFNob3dNb2RlOiBzdHJpbmc7IC8vIDI9IGJ1dHRvbm1vZGUgMT1kZWZhdWx0XHJcbiAgICBIaWRlRGVsZXRlOiBib29sZWFuO1xyXG4gICAgSGlkZUF0dGFjaDogYm9vbGVhbjtcclxuICAgIEhpZGVSZWZyZXNoOiBib29sZWFuO1xyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKnVudGlsSW5WaWV3PVwiZWxcIj5cclxuICAgIEBzd2l0Y2ggKHBhcmFtZXRlcnM/LlNob3dNb2RlKSB7IEBjYXNlICgnMicpIHtcclxuICAgIDxkaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXI7IGNvbnRleHQ6IHsgZGlhbG9nTW9kZTogdHJ1ZSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIH0gQGRlZmF1bHQge1xyXG4gICAgPGRpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmV2aWV3XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIH0gfVxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdG9vbGJhciBsZXQtZGlhbG9nTW9kZT1cImRpYWxvZ01vZGVcIj5cclxuICAgIEBpZiAoKGRpc2FibGVPclJlYWRvbmx5JCB8IGFzeW5jKSAhPT0gdHJ1ZSkge1xyXG4gICAgPGZkLXRvb2xiYXIgW2NsYXNzLmRpYWxvZ01vZGVdPVwiZGlhbG9nTW9kZVwiIFt0cmFuc3BhcmVudF09XCJ0cnVlXCIgW3Nob3VsZE92ZXJmbG93XT1cInRydWVcIj5cclxuICAgICAgICA8ZmQtZmlsZS11cGxvYWRlclxyXG4gICAgICAgICAgICAjdXBsb2FkZXJcclxuICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCJcclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgICAgICAgIFtuYW1lXT1cIidwZGZfJyArIGlkXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBdHRhY2hGaWxlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFtidXR0b25MYWJlbF09XCInQXR0YWNoRmlsZScgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbYnV0dG9uQXJpYUxhYmVsXT1cIidBdHRhY2hGaWxlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFthY2NlcHRdPVwidmFsaWRFeHRlbnNpb25cIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbGVzXCJcclxuICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgKHNlbGVjdGVkRmlsZXNDaGFuZ2VkKT1cIm9uRmlsZVNlbGVjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cIihjb250ZW50RGVuc2l0eSQgfCBhc3luYykhIVwiXHJcbiAgICAgICAgPjwvZmQtZmlsZS11cGxvYWRlcj5cclxuICAgICAgICBAaWYgKCFwYXJhbWV0ZXJzPy5IaWRlRGVsZXRlKSB7XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIShjYW5EZWxldGUgJiYgdmFsdWUpXCJcclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBjbGFzcz1cImRlbGV0ZVwiXHJcbiAgICAgICAgICAgIGdseXBoPVwiZGVsZXRlXCJcclxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICB9IEBpZiAoIXBhcmFtZXRlcnM/LkhpZGVBdHRhY2gpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZ2x5cGg9XCJhdHRhY2htZW50XCJcclxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5VcGxvYWRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidXBsb2FkZXIub3BlbigpXCJcclxuICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgfSBAaWYgKGNhbkVkaXQpIHtcclxuICAgICAgICA8YnV0dG9uIGZkLXRvb2xiYXItaXRlbSBmZC1idXR0b24gZ2x5cGg9XCJlZGl0XCIgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCIgKGNsaWNrKT1cIm9uRWRpdCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgfSBAaWYgKHVzZVdvcmRFZGl0b3IpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZ2x5cGg9XCJkb2MtYXR0YWNobWVudFwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInRWRpdCcgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25FZGl0SW5Xb3JkKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICB9IEBpZiAob2ZmaWNlT25saW5lKSB7XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIGdseXBoPVwiZG9jLWF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ09mZmljZU9ubGluZScgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25PZmZpY2VPbmxpbmUoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH0gQGlmIChkaWFsb2dNb2RlKSB7XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIFtnbHlwaF09XCInc2hvdydcIlxyXG4gICAgICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2xvdydcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiIWRpYWxvZ01vZGUgPyAnJyA6ICgnVmlldycgfCBiYmJUcmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uT3BlblByZXZpZXdJbkRpYWxvZygpXCJcclxuICAgICAgICAgICAgYm9keUNsaWNrXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH0gQGlmIChjYW5Eb3dubG9hZCkge1xyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2xvdydcIlxyXG4gICAgICAgICAgICBbZ2x5cGhdPVwiJ2Rvd25sb2FkJ1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCIhZGlhbG9nTW9kZSA/ICcnIDogKCdEb3dubG9hZCcgfCBiYmJUcmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRG93bmxvYWQoKVwiXHJcbiAgICAgICAgICAgIGJvZHlDbGlja1xyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICB9IEBpZiAoIXBhcmFtZXRlcnM/LkhpZGVSZWZyZXNoKSB7XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2xvdydcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIFtnbHlwaF09XCJkaWFsb2dNb2RlID8gbnVsbCA6ICdyZWZyZXNoJ1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCIhZGlhbG9nTW9kZSA/ICcnIDogKCdSZWZyZXNoJyB8IGJiYlRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICBib2R5Q2xpY2tcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVmcmVzaCgpXCJcclxuICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxmZC1idXN5LWluZGljYXRvclxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgW2xvYWRpbmddPVwiKHVwbG9hZGluZ1N0YXRlJCB8IGFzeW5jKT8udXBsb2FkaW5nID09PSB0cnVlXCJcclxuICAgICAgICA+PC9mZC1idXN5LWluZGljYXRvcj5cclxuICAgIDwvZmQtdG9vbGJhcj5cclxuICAgIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNwcmV2aWV3PlxyXG4gICAgQGlmIChpc01vYmlsZSkge1xyXG4gICAgPGRpdlxyXG4gICAgICAgIFtzdHlsZS5ib3JkZXJdPVwiIWJsb2JVcmwgPyAnLjA2MjVyZW0gc29saWQgdmFyKC0tc2FwR3JvdXBfVGl0bGVCb3JkZXJDb2xvciknIDogbnVsbFwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoNzB2aCAtIDQwcHgpOyBwb3NpdGlvbjogcmVsYXRpdmVcIlxyXG4gICAgPlxyXG4gICAgICAgIEBpZih2YWx1ZSl7XHJcbiAgICAgICAgPGJzdS1ibG9iLXZpZXdlciBbZmlsZV09XCJ2YWx1ZVwiIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiIFtkZWNyZW1lbnRdPVwiJzI1cHgnXCI+PC9ic3UtYmxvYi12aWV3ZXI+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDwhLS0gPG5nMi1wZGZqcy12aWV3ZXJcclxuICAgICAgICAgICAgZmlsbEVtcHR5U3BhY2VcclxuICAgICAgICAgICAgW2NvbnRhaW5lckRvbV09XCJmb3JtQ29udGFpbmVyXCJcclxuICAgICAgICAgICAgW2RvbnRVc2VUb3BCb3VuZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgI3BkZlZpZXdlck9uRGVtYW5kXHJcbiAgICAgICAgICAgIFtleHRlcm5hbFdpbmRvd109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtkb3dubG9hZEZpbGVOYW1lXT1cImJsb2JVcmxcIlxyXG4gICAgICAgICAgICBbb3BlbkZpbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbdmlld0Jvb2ttYXJrXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW3Nob3dTcGlubmVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbZG93bmxvYWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgPjwvbmcyLXBkZmpzLXZpZXdlcj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIH0gQGVsc2UgeyBAaWYgKGhhc1BkZikge1xyXG4gICAgPG9iamVjdFxyXG4gICAgICAgIGZpbGxFbXB0eVNwYWNlXHJcbiAgICAgICAgW2NvbnRhaW5lckRvbV09XCJmb3JtQ29udGFpbmVyXCJcclxuICAgICAgICBbZG9udFVzZVRvcEJvdW5kXT1cInRydWVcIlxyXG4gICAgICAgIFtkaXNhYmxlXT1cImlubGluZUVkaXRcIlxyXG4gICAgICAgIHN0eWxlPVwiZmxleC1ncm93OiAxXCJcclxuICAgICAgICBbYXR0ci5kYXRhXT1cInZhbHVlVXJsXCJcclxuICAgICAgICB0eXBlPVwiYXBwbGljYXRpb24vcGRmXCJcclxuICAgICAgICB3aWR0aD1cIjEwMCVcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiaW5saW5lRWRpdCA/ICdhdXRvJyA6IGZvcm1IZWlnaHQgLSAzMCA+IDAgPyBmb3JtSGVpZ2h0IC0gMzAgKyAncHgnIDogJzEwMHZoJ1wiXHJcbiAgICAgICAgW2F0dHIuaHRtbF09XCJmYWxsYmFja0xpbmtcIlxyXG4gICAgPjwvb2JqZWN0PlxyXG4gICAgfSBAZWxzZSB7IEBpZiAoc2luZ2xlQ29udHJvbCAmJiB2YWx1ZSAmJiAhdmFsdWUuSXNEZWxldGVkKSB7XHJcbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleFwiPlxyXG4gICAgICAgIEBpZiAoc2luZ2xlRmlsZVRodW1ibmFpbFVybCkge1xyXG4gICAgICAgIDxpbWcgW3NyY109XCJzaW5nbGVGaWxlVGh1bWJuYWlsVXJsXCIgLz5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGZkLW9iamVjdC1pZGVudGlmaWVyPlxyXG4gICAgICAgICAgICB7eyB2YWx1ZS5GaWxlTmFtZSB9fVxyXG4gICAgICAgIDwvZmQtb2JqZWN0LWlkZW50aWZpZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgPGRpdlxyXG4gICAgICAgIGZpbGxFbXB0eVNwYWNlXHJcbiAgICAgICAgW2NvbnRhaW5lckRvbV09XCJmb3JtQ29udGFpbmVyXCJcclxuICAgICAgICBbZG9udFVzZVRvcEJvdW5kXT1cInRydWVcIlxyXG4gICAgICAgIGNsYXNzPVwiaGF0Y2hCYWNrZ3JvdW5kXCJcclxuICAgICAgICBbZGlzYWJsZV09XCJpbmxpbmVFZGl0XCJcclxuICAgICAgICBbY2xhc3MudHctaC00XT1cImlubGluZUVkaXRcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgfSB9IH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjZGlhbG9nVHBsPlxyXG4gICAgPGZkLWRpYWxvZyBbZGlhbG9nQ29uZmlnXT1cImRpYWxvZ0NvbmZpZ1wiIFtkaWFsb2dSZWZdPVwiZGlhbG9nXCIgY2xhc3M9XCJ2ZXJ0aWNhbFwiPlxyXG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgZmQtdGl0bGU+ZWRpdCBpbiB3b3JkPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhciBhcmlhTGFiZWw9XCJjbG9zZVwiIGdseXBoPVwiZGVjbGluZVwiIChjbGljayk9XCJvbkRpYWxvZ0Nsb3NlKClcIj48L2ZkLWJ1dHRvbi1iYXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XHJcbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJldmlld1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XHJcbiAgICA8L2ZkLWRpYWxvZz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1wZGYtdmlld2VyL3VpLXBkZi12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGRmLXZpZXdlci91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFLWCxTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFrQixhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsUUFBUSxFQUNSLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsT0FBTyxFQUNQLFlBQVksRUFDWixPQUFPLEVBQ1AsaUJBQWlCLEVBR3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVekUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDRCQUE0QjtJQVJ0RTs7UUFXcUMsZUFBVSxHQUFrQixNQUFNLENBQUM7UUEyQnBFLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsWUFBTyxHQUFHLElBQUksQ0FBQztRQVFmLG1CQUFjLEdBQWtCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQXdRekQ7SUF2UUcsUUFBUTtRQUNKLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUM7UUFDM0QsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNoQyxLQUFLLEdBQUc7Z0JBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLE1BQU07UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQW1CLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUkscUJBQXFCLENBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FDbEMsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7WUFDNUMsQ0FBQyxDQUFDLHVHQUF1RztZQUN6RyxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLG1CQUFtQixDQUFDO0lBQ3ZFLENBQUM7SUFDRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQy9CLElBQUksVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBaUI7UUFDcEIsTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELFVBQVU7UUFDTixJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELGVBQWUsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELFFBQVE7UUFDSixJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELFlBQVk7UUFDUixJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFpQjtRQUM1QixNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsU0FBUztRQUNMLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsY0FBYyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxjQUFjO1FBQ25FLHNCQUFzQjtRQUN0Qix5QkFBeUI7UUFDekIsd0JBQXdCO1FBQ3hCLGFBQWE7UUFDYixJQUFJO1FBRUosUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUMvQztZQUNJLE1BQU07WUFDTixPQUFPLEVBQUUsSUFBSTtZQUNiLGFBQWE7WUFDYixTQUFTO1lBQ1QsY0FBYztZQUNkLE1BQU07U0FDVCxFQUNELENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDVCxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMxQixxQkFBcUI7Z0JBQ3JCLHdCQUF3QjtnQkFDeEIsTUFBTTtZQUNWLENBQUM7UUFDTCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNOLHFCQUFxQjtZQUNyQix3QkFBd0I7WUFDeEIsTUFBTTtZQUNOLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQixDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFDRCxxQkFBcUI7UUFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN0QyxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJO1lBQ1osY0FBYyxFQUFFLEtBQUs7WUFDckIsZUFBZSxFQUFFLGlCQUFpQjtZQUNsQyxZQUFZLEVBQUUsSUFBSTtTQUNyQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsYUFBYTtRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUNTLHdCQUF3QixDQUFDLFFBQVE7UUFDdkMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIscUZBQXFGO1lBQ3JGLDJFQUEyRTtRQUMvRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBQ1MsZUFBZSxDQUFDLEtBQWE7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUUsQ0FBQztJQUVTLGVBQWU7UUFDckIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDM0IsMkJBQTJCLEVBQzNCO1lBQ0kseURBQXlEO1lBQ3pELFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7U0FDckUsRUFDRCxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNaLE1BQU0sYUFBYSxHQUFHLE1BQU0sS0FBSyxJQUFJLENBQUM7WUFDdEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUNTLHFCQUFxQixDQUFDLGFBQWE7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsaUJBQWlCLENBQUM7WUFDcEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxJQUFJLGlCQUFpQixLQUFLLElBQUksQ0FBQztZQUNwRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssSUFBSSxhQUFhLENBQUM7WUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLE9BQU8sSUFBSSxpQkFBaUIsS0FBSyxJQUFJLENBQUM7WUFDM0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUN0RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksT0FBTyxJQUFJLGlCQUFpQixLQUFLLElBQUksQ0FBQztZQUUzRSxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsSUFBSSxPQUFPLElBQUksaUJBQWlCLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQ25HLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxJQUFJLE9BQU8sSUFBSSxpQkFBaUIsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDekcsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ1Msb0JBQW9CLENBQUMsTUFBTSxFQUFFLGFBQWM7UUFDakQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBRXpCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkIsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUNTLFFBQVEsQ0FBQyxVQUFvQjtRQUNuQyxNQUFNLFlBQVksR0FBRyxVQUFVLEtBQUssS0FBSyxDQUFDO1FBRTFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBRW5CLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdCLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDO1lBQ0QsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHO3dFQUM0QyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FDbkcsTUFBTSxFQUNOLEtBQUssRUFDTCxJQUFJLENBQ1AsZ0RBQWdELFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUN0RixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssQ0FDUixvQ0FBb0MsQ0FBQztRQUV0QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixvQkFBb0I7WUFDcEIsdUNBQXVDO1lBQ3ZDLHVCQUF1QjtZQUN2Qix3QkFBd0I7WUFDeEIsMEJBQTBCO1lBQzFCLHdCQUF3QjtZQUN4QiwwQkFBMEI7WUFDMUIseUJBQXlCO1lBQ3pCLHdCQUF3QjtZQUN4QixRQUFRO1lBQ1IsS0FBSztZQUNMLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxTQUFTLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFFN0UsSUFBSSxTQUFTLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLE9BQU87WUFDWCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFFM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDckUsQ0FBQzthQUFNLENBQUM7WUFDSiw4REFBOEQ7WUFDOUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDaEMsQ0FBQztJQUNMLENBQUM7SUFFUyxXQUFXLENBQUMsS0FBYTtRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQixRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQzVFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRVMsWUFBWSxDQUFDLEdBQVU7UUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxlQUFlLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsR0FBUTtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNMLENBQUM7SUFDTyxTQUFTO1FBQ2IsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNPLEtBQUs7UUFDVCxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6RCxDQUFDOytHQTlTUSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw2R0FKbEIsQ0FBQyxhQUFhLENBQUMseVJDaEM5Qixpa09BOExBOzs0RkQxSmEsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNJLG1CQUFtQixhQUdsQixDQUFDLGFBQWEsQ0FBQyxtQkFDVCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUs7OEJBR2Usa0JBQWtCO3NCQUFqRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDTixVQUFVO3NCQUFqQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1csVUFBVTtzQkFBMUMsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uSW5pdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIGluamVjdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29udGVudERlbnNpdHksIERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgQmFyc2FBcGksXHJcbiAgICBVcGxvYWRTZXJ2aWNlLFxyXG4gICAgRmlsZXNWYWxpZGF0aW9uSGVscGVyLFxyXG4gICAgaXNJbWFnZSxcclxuICAgIGdldEltYWdlUGF0aCxcclxuICAgIGdldEljb24sXHJcbiAgICBnZXRWYWxpZEV4dGVuc2lvbixcclxuICAgIElVcGxvYWRpbmdTdGF0ZSxcclxuICAgIE1ldGFvYmplY3REYXRhTW9kZWxcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IERldmljZUluZm9GaWVsZEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9kZXZpY2UtaW5mby1maWVsZC1iYXNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktcGRmLXZpZXdlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtVcGxvYWRTZXJ2aWNlXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpUGRmVmlld2VyQ29tcG9uZW50IGV4dGVuZHMgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBWaWV3Q2hpbGQoJ3BkZlZpZXdlck9uRGVtYW5kJykgX3BkZlZpZXdlck9uRGVtYW5kOiBhbnk7XHJcbiAgICBAVmlld0NoaWxkKCdkaWFsb2dUcGwnKSBfZGlhbG9nVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4taGVpZ2h0JykgX21pbmhlaWdodDogc3RyaW5nIHwgbnVsbCA9ICc3MHZoJztcclxuICAgIGZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgICBmYWxsYmFja0xpbms6IGFueTtcclxuICAgIGNhbk5vdFJlbmRlclBkZjogYm9vbGVhbjtcclxuICAgIHZhbHVlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsO1xyXG4gICAgaGFzUGRmOiBib29sZWFuO1xyXG4gICAgcGRmT2JqZWN0OiB7XHJcbiAgICAgICAgYXV0b0VsOiB7XHJcbiAgICAgICAgICAgIHRhZzogc3RyaW5nO1xyXG4gICAgICAgICAgICBkYXRhOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHR5cGU6IHN0cmluZztcclxuICAgICAgICAgICAgd2lkdGg6IHN0cmluZztcclxuICAgICAgICAgICAgaGVpZ2h0OiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGh0bWw6IGFueTtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuXHJcbiAgICB1cGxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8SVVwbG9hZGluZ1N0YXRlPjtcclxuICAgIGZpbGVzOiBGaWxlW107XHJcbiAgICBjb250ZW50RGVuc2l0eSQ6IE9ic2VydmFibGU8Q29udGVudERlbnNpdHk+O1xyXG4gICAgb2ZmaWNlT25saW5lOiBhbnk7XHJcbiAgICB1c2VXb3JkRWRpdG9yOiBhbnk7XHJcbiAgICBoYXNGaWxlTmFtZTogYm9vbGVhbjtcclxuICAgIGNhblJlbW92ZTogYm9vbGVhbjtcclxuICAgIGNhblVwbG9hZDogYm9vbGVhbjtcclxuICAgIGNhbkVkaXQ6IGJvb2xlYW47XHJcbiAgICBjYW5Eb3dubG9hZDogYm9vbGVhbjtcclxuICAgIGNhbkRlbGV0ZSA9IHRydWU7XHJcbiAgICBjYW5TYXZlID0gdHJ1ZTtcclxuICAgIHZhbGlkRXh0ZW5zaW9uOiBzdHJpbmc7XHJcbiAgICBmaWxlc1ZhbGlkYXRpb25IZWxwZXI6IEZpbGVzVmFsaWRhdGlvbkhlbHBlcjtcclxuICAgIHNpbmdsZUNvbnRyb2w6IGJvb2xlYW47XHJcbiAgICBzaW5nbGVGaWxlVGh1bWJuYWlsVXJsOiBzdHJpbmc7XHJcbiAgICBwYXJlbnRIZWlnaHQ6IG51bWJlcjtcclxuICAgIGJsb2JVcmw6IHN0cmluZztcclxuICAgIHBhcmFtZXRlcmVzOiBVaVBkZlZpZXdlclNldHRpbmc7XHJcbiAgICBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXBsb2FkaW5nU3RhdGUkID0gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWRpbmdTdGF0ZSQ7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMucGFyYW1ldGVycz8uU2hvd01vZGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5oZWlnaHQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX21pbmhlaWdodCA9IHRoaXMuaW5saW5lRWRpdCA/ICdhdXRvJyA6IHRoaXMuX21pbmhlaWdodDtcclxuICAgICAgICB0aGlzLnZhbHVlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCQuc3Vic2NyaWJlKChmcm9tU2VydmVyOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2goZnJvbVNlcnZlcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5maWxlc1ZhbGlkYXRpb25IZWxwZXIgPSBuZXcgRmlsZXNWYWxpZGF0aW9uSGVscGVyKFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4RmlsZUNvdW50LFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4RmlsZVNpemVLYixcclxuICAgICAgICAgICAgdGhpcy5TZXR0aW5nLk1heFRvdGFsRmlsZVNpemVLYlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnMoKTtcclxuICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XHJcbiAgICAgICAgdGhpcy52YWxpZEV4dGVuc2lvbiA9IHRoaXMuY29udGV4dC51c2VXb3JkRWRpdG9yXHJcbiAgICAgICAgICAgID8gJy5kb2MsLmRvY3gsYXBwbGljYXRpb24vbXN3b3JkLGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J1xyXG4gICAgICAgICAgICA6IGdldFZhbGlkRXh0ZW5zaW9uKHRoaXMuU2V0dGluZy5WYWxpZEV4dGVuc2lvbnMpO1xyXG4gICAgICAgIHRoaXMuc2luZ2xlQ29udHJvbCA9IHRoaXMuU2V0dGluZy5WaWV3VHlwZSA9PT0gJ1NpbmdsZUZpbGVDb250cm9sJztcclxuICAgIH1cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBjb25zdCB7IGZvcm1IZWlnaHQgfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgaWYgKGZvcm1IZWlnaHQgJiYgIWZvcm1IZWlnaHQuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkVkaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRWRpdCcpO1xyXG4gICAgfVxyXG4gICAgb25WaWV3KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZSA9IHsgY3RybEtleTogZXZlbnQuY3RybEtleSB9O1xyXG4gICAgICAgIHRoaXMuX2NvbW1hbmRDbGlja0hhbmRsZXIoJ09PVmlldycsIGUpO1xyXG4gICAgfVxyXG4gICAgb25Eb3dubG9hZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdEb3dubG9hZCcpO1xyXG4gICAgfVxyXG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl91cGxvYWRUb1NlcnZlcihmaWxlcyk7XHJcbiAgICB9XHJcbiAgICBvbkRlbGV0ZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdEZWxldGUnKTtcclxuICAgIH1cclxuICAgIG9uRWRpdEluV29yZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPREVkaXQnKTtcclxuICAgIH1cclxuICAgIG9uT2ZmaWNlT25saW5lKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZSA9IHsgY3RybEtleTogZXZlbnQuY3RybEtleSB9O1xyXG5cclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPT0VkaXQnLCBlKTtcclxuICAgIH1cclxuICAgIG9uUmVmcmVzaCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdSZWZyZXNoJyk7XHJcbiAgICB9XHJcbiAgICBEb3dubG9hZEZpbGVJZChmaWxlSWQsIHZpZXdJbkJyb3dzZXIsIGNvbnZlcnRUbywgZm9yT2N4LCBpc09mZmljZU9ubGluZSk6IHZvaWQge1xyXG4gICAgICAgIC8vIGlmICghaXNGaXJlZm94KCkpIHtcclxuICAgICAgICAvLyAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLl9tYXNrKCk7XHJcbiAgICAgICAgLy8gICAgIH0sIDApO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkZpbGUuRG93bmxvYWRGaWxlQ29udGVudC5iaW5kKHRoaXMpKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgICAgICAgICBmaWxlVXJsOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgdmlld0luQnJvd3NlcixcclxuICAgICAgICAgICAgICAgIGNvbnZlcnRUbyxcclxuICAgICAgICAgICAgICAgIGlzT2ZmaWNlT25saW5lLFxyXG4gICAgICAgICAgICAgICAgZm9yT2N4XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2NlZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kb3dubG9hZEZpbGVJZENvbXBsZXRlZChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5faGlkZU1hc2soKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLl9oaWRlTWFzaygpO1xyXG4gICAgICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgb25PcGVuUHJldmlld0luRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLl9kaWFsb2dUcGwsIHtcclxuICAgICAgICAgICAgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIG1vYmlsZTogdHJ1ZSxcclxuICAgICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtYXAnLFxyXG4gICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnk6ICdjaG9vc2UgbG9jYXRpb24nLFxyXG4gICAgICAgICAgICBmb2N1c1RyYXBwZWQ6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIG9uRGlhbG9nQ2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2Rvd25sb2FkRmlsZUlkQ29tcGxldGVkKHJlc3BvbnNlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYmxvYiA9IEJhcnNhQXBpLkNvbW1vbi5GaWxlLkI2NHRvQmxvYihyZXNwb25zZS5jb250ZW50LCByZXNwb25zZS5jb250ZW50VHlwZSk7XHJcbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMO1xyXG4gICAgICAgIHRoaXMuYmxvYlVybCA9IHVybC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5fcGRmVmlld2VyT25EZW1hbmQucGRmU3JjID0gdGhpcy5ibG9iVXJsOyAvLyBwZGZTcmMgY2FuIGJlIEJsb2Igb3IgVWludDhBcnJheVxyXG4gICAgICAgICAgICAvLyB0aGlzLl9wZGZWaWV3ZXJPbkRlbWFuZC5yZWZyZXNoKCk7IC8vIEFzayBwZGYgdmlld2VyIHRvIGxvYWQvcmVmcmVzaCBwZGZcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52YWx1ZVVybCA9IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy5ibG9iVXJsKTtcclxuICAgICAgICB0aGlzLmhhc1BkZiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3VwbG9hZFRvU2VydmVyKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhhc1BkZiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyLnZhbGlkYXRlRmlsZXMoZmlsZXMpO1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZEZpbGUoZmlsZXMpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2hCdXR0b25zKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25zSGVscGVyKGZhbHNlKTtcclxuICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuV2F0ZXJmYWxsKFxyXG4gICAgICAgICAgICAnQ29tbW9uLkZpbGUuSXNBZ2VudEFjdGl2ZScsXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIC8vIENvbW1vbi5GaWxlQWdlbnQuSXNBZ2VudEFjdGl2ZS5iaW5kKENvbW1vbi5GaWxlQWdlbnQpLFxyXG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFnZW50SGVscGVyLkluaXQuYmluZChCYXJzYUFwaS5Db21tb24uQWdlbnRIZWxwZXIpXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWdlbnRJc0FjdGl2ZSA9IHJlc3VsdCA9PT0gJ09LJztcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25zSGVscGVyKGFnZW50SXNBY3RpdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfcmVmcmVzaEJ1dHRvbnNIZWxwZXIoaXNBZ2VudEFjdGl2ZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZU9yUmVhZG9ubHkkLnN1YnNjcmliZSgoZGlzYWJsZU9yUmVhZG9ubHkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2FuU2F2ZSA9IHRoaXMuY2FuU2F2ZTtcclxuICAgICAgICAgICAgdGhpcy5jYW5EZWxldGUgPSAhZGlzYWJsZU9yUmVhZG9ubHk7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc1ZhbHVlID0gIUJhcnNhQXBpLkV4dC5pc0VtcHR5KHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCBlZGl0MCA9IGNhblNhdmUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuRWRpdCA9IGVkaXQwICYmIGlzQWdlbnRBY3RpdmU7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuRG93bmxvYWQgPSAhdGhpcy5TZXR0aW5nLklzV29yZFZpZXdlciB8fCAoIWlzQWdlbnRBY3RpdmUgJiYgZWRpdDApO1xyXG4gICAgICAgICAgICB0aGlzLmNhblVwbG9hZCA9IHRoaXMuY2FuRG93bmxvYWQgJiYgY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5oYXNGaWxlTmFtZSA9ICF0aGlzLmNvbnRleHQuU2V0dGluZy5Jc1dvcmRWaWV3ZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuUmVtb3ZlID0gdGhpcy5jYW5Eb3dubG9hZCAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vZmZpY2VPbmxpbmUgPSBoYXNWYWx1ZSAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIHRoaXMuY29udGV4dC5PZmZpY2VPbmxpbmU7XHJcbiAgICAgICAgICAgIHRoaXMudXNlV29yZEVkaXRvciA9IGhhc1ZhbHVlICYmIGNhblNhdmUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWUgJiYgdGhpcy5jb250ZXh0LnVzZVdvcmRFZGl0b3I7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2NvbW1hbmRDbGlja0hhbmRsZXIoaXRlbUlkLCBrZXlib2FyZEV2ZW50Pyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbW1hbmRJZCA9IGl0ZW1JZDtcclxuXHJcbiAgICAgICAgbGV0IGZpbGVzID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzQXJyYXkoZmlsZXMpKSB7XHJcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcz8uSWQ7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnQ29tbWFuZFJlcXVlc3QnLCB0aGlzLCBjb21tYW5kSWQsIGZpbGVJZCwga2V5Ym9hcmRFdmVudCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2goZnJvbVNlcnZlcj86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBvZmZpY2VPbmxpbmUgPSBmcm9tU2VydmVyID09PSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzRW1wdHkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGZpbGVzID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAoQmFyc2FBcGkuRXh0LmlzQXJyYXkoZmlsZXMpKSB7XHJcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcy5JZDtcclxuICAgICAgICBpZiAoIWZpbGVJZCB8fCBmaWxlcy5Jc0RlbGV0ZWQpIHtcclxuICAgICAgICAgICAgaWYgKGZpbGVzLklzRGVsZXRlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmFsbGJhY2tMaW5rID0gYNin2YXaqdin2YYg2YbZhdin24zYtCDZgdin24zZhCDYr9ixINin24zZhiDZhdix2YjYsdqv2LEg2YjYrNmI2K8g2YbYr9in2LHYry5cclxuICAgICAgICAg2KjYsdin24wg2KjYp9iyINqp2LHYr9mGINmB2KfbjNmEINin2LIg2YTbjNmG2qkg2LLbjNixINin2LPYqtmB2KfYr9mHINqp2YbbjNivOiAgPC9icj4gPGEgaHJlZj0nJHtCYXJzYUFwaS5Db21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKFxyXG4gICAgICAgICAgICAgZmlsZUlkLFxyXG4gICAgICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICl9Jz7Yr9in2YbZhNmI2K8g2YHYp9uM2YQg2KjYtdmI2LHYqiBwZGY8L2E+ICA8L2JyPiAgPGEgaHJlZj0nJHtCYXJzYUFwaS5Db21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKFxyXG4gICAgICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICl9Jz7Yr9in2YbZhNmI2K8g2YHYp9uM2YQg2KjYtdmI2LHYqiDYqNi12YjYsdiqINin2LXZhNuMPC9hPmA7XHJcblxyXG4gICAgICAgIGlmICghQmFyc2FBcGkuRXh0LmlzSUUpIHtcclxuICAgICAgICAgICAgLy8gY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgLy8gICAgIGZhbGxiYWNrTGluazogdGhpcy5mYWxsYmFja0xpbmssXHJcbiAgICAgICAgICAgIC8vICAgICBwZGZPcGVuUGFyYW1zOiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgdmlldzogJ0ZpdEgnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHNjcm9sbGJhcjogJzAnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHRvb2xiYXI6ICcwJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICBzdGF0dXNiYXI6ICcwJyxcclxuICAgICAgICAgICAgLy8gICAgICAgICBtZXNzYWdlczogJzAnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIG5hdnBhbmVzOiAnMCdcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfTtcclxuICAgICAgICAgICAgbGV0IGNvbnZlcnRUbyA9IGlzSW1hZ2UoZmlsZXMuVHlwZSkgPyBmaWxlcy5UeXBlIDogJyc7XHJcbiAgICAgICAgICAgIGNvbnZlcnRUbyA9ICdwZGYsZG9jLGRvY3gsd29yZCcuaW5kZXhPZihmaWxlcy5UeXBlKSA+IC0xID8gJ3BkZicgOiBjb252ZXJ0VG87XHJcblxyXG4gICAgICAgICAgICBpZiAoY29udmVydFRvICE9PSAncGRmJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2luZ2xlQ29udHJvbChmaWxlcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICB0aGlzLkRvd25sb2FkRmlsZUlkKGZpbGVJZCwgdHJ1ZSwgY29udmVydFRvLCBudWxsLCBvZmZpY2VPbmxpbmUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHVybCA9IENvbW1vbi5GaWxlLkNyZWF0ZUF0dGFjaG1lbnRVcmwoZmlsZUlkLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuTm90UmVuZGVyUGRmID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGxvYWRGaWxlKGZpbGVzOiBGaWxlW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VuaWNGaWxlTmFtZScsICd4JyArIEJhcnNhQXBpLkNvbW1vbi5VdGlsLkdldE5ld01ldGFHdWlkKCkgKyAnOzs7JyArIGZpbGUubmFtZSk7XHJcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWQoZm9ybURhdGEsIHRoaXMuU2V0dGluZy5Db250cm9sRmllbGREZWZJZCkucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGRhdGVWYWx1ZShyZXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuU2V0dGluZy5WaWV3VHlwZSAhPT0gJ0xpbmVhckxpc3RCb3gnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2luZ2xlQ29udHJvbChyZXNbMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpcmVDb250ZXh0RXZlbnQoJ0NoYW5nZScsIHRoaXMuY29udGV4dCwgcmVzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZVNpbmdsZUNvbnRyb2wodmFsOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaXNJbWFnZSh2YWwuVHlwZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5zaW5nbGVGaWxlVGh1bWJuYWlsVXJsID0gZ2V0SW1hZ2VQYXRoKCdJRCcsICcnLCB2YWwuSWQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlRmlsZVRodW1ibmFpbFVybCA9IGdldEljb24odmFsLlR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX2hpZGVNYXNrKCk6IHZvaWQge1xyXG4gICAgICAgIEJhcnNhQXBpLlVsLkxvYWRpbmdNYXNrLlVubWFzayh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX21hc2soKTogdm9pZCB7XHJcbiAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suTWFzayh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxufVxyXG5cclxuaW50ZXJmYWNlIFVpUGRmVmlld2VyU2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xyXG4gICAgU2hvd01vZGU6IHN0cmluZzsgLy8gMj0gYnV0dG9ubW9kZSAxPWRlZmF1bHRcclxuICAgIEhpZGVEZWxldGU6IGJvb2xlYW47XHJcbiAgICBIaWRlQXR0YWNoOiBib29sZWFuO1xyXG4gICAgSGlkZVJlZnJlc2g6IGJvb2xlYW47XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqdW50aWxJblZpZXc9XCJlbFwiPlxyXG4gICAgQHN3aXRjaCAocGFyYW1ldGVycz8uU2hvd01vZGUpIHsgQGNhc2UgKCcyJykge1xyXG4gICAgPGRpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhcjsgY29udGV4dDogeyBkaWFsb2dNb2RlOiB0cnVlIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgfSBAZGVmYXVsdCB7XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpZXdcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgfSB9XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0b29sYmFyIGxldC1kaWFsb2dNb2RlPVwiZGlhbG9nTW9kZVwiPlxyXG4gICAgQGlmICgoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpICE9PSB0cnVlKSB7XHJcbiAgICA8ZmQtdG9vbGJhciBbY2xhc3MuZGlhbG9nTW9kZV09XCJkaWFsb2dNb2RlXCIgW3RyYW5zcGFyZW50XT1cInRydWVcIiBbc2hvdWxkT3ZlcmZsb3ddPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxmZC1maWxlLXVwbG9hZGVyXHJcbiAgICAgICAgICAgICN1cGxvYWRlclxyXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgW2lkXT1cImlkXCJcclxuICAgICAgICAgICAgW25hbWVdPVwiJ3BkZl8nICsgaWRcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2J1dHRvbkxhYmVsXT1cIidBdHRhY2hGaWxlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFtidXR0b25BcmlhTGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2FjY2VwdF09XCJ2YWxpZEV4dGVuc2lvblwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsZXNcIlxyXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAoc2VsZWN0ZWRGaWxlc0NoYW5nZWQpPVwib25GaWxlU2VsZWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICBbY29udGVudERlbnNpdHldPVwiKGNvbnRlbnREZW5zaXR5JCB8IGFzeW5jKSEhXCJcclxuICAgICAgICA+PC9mZC1maWxlLXVwbG9hZGVyPlxyXG4gICAgICAgIEBpZiAoIXBhcmFtZXRlcnM/LkhpZGVEZWxldGUpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKGNhbkRlbGV0ZSAmJiB2YWx1ZSlcIlxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlXCJcclxuICAgICAgICAgICAgZ2x5cGg9XCJkZWxldGVcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH0gQGlmICghcGFyYW1ldGVycz8uSGlkZUF0dGFjaCkge1xyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBnbHlwaD1cImF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblVwbG9hZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGxvYWRlci5vcGVuKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICB9IEBpZiAoY2FuRWRpdCkge1xyXG4gICAgICAgIDxidXR0b24gZmQtdG9vbGJhci1pdGVtIGZkLWJ1dHRvbiBnbHlwaD1cImVkaXRcIiBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIiAoY2xpY2spPVwib25FZGl0KClcIj48L2J1dHRvbj5cclxuICAgICAgICB9IEBpZiAodXNlV29yZEVkaXRvcikge1xyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBnbHlwaD1cImRvYy1hdHRhY2htZW50XCJcclxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidFZGl0JyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRJbldvcmQoKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH0gQGlmIChvZmZpY2VPbmxpbmUpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZ2x5cGg9XCJkb2MtYXR0YWNobWVudFwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInT2ZmaWNlT25saW5lJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk9mZmljZU9ubGluZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgfSBAaWYgKGRpYWxvZ01vZGUpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgW2dseXBoXT1cIidzaG93J1wiXHJcbiAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCIhZGlhbG9nTW9kZSA/ICcnIDogKCdWaWV3JyB8IGJiYlRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25PcGVuUHJldmlld0luRGlhbG9nKClcIlxyXG4gICAgICAgICAgICBib2R5Q2xpY2tcclxuICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgfSBAaWYgKGNhbkRvd25sb2FkKSB7XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXHJcbiAgICAgICAgICAgIFtnbHlwaF09XCInZG93bmxvYWQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIiFkaWFsb2dNb2RlID8gJycgOiAoJ0Rvd25sb2FkJyB8IGJiYlRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Eb3dubG9hZCgpXCJcclxuICAgICAgICAgICAgYm9keUNsaWNrXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH0gQGlmICghcGFyYW1ldGVycz8uSGlkZVJlZnJlc2gpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgW2dseXBoXT1cImRpYWxvZ01vZGUgPyBudWxsIDogJ3JlZnJlc2gnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIiFkaWFsb2dNb2RlID8gJycgOiAoJ1JlZnJlc2gnIHwgYmJiVHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIGJvZHlDbGlja1xyXG4gICAgICAgICAgICAoY2xpY2spPVwib25SZWZyZXNoKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBbbG9hZGluZ109XCIodXBsb2FkaW5nU3RhdGUkIHwgYXN5bmMpPy51cGxvYWRpbmcgPT09IHRydWVcIlxyXG4gICAgICAgID48L2ZkLWJ1c3ktaW5kaWNhdG9yPlxyXG4gICAgPC9mZC10b29sYmFyPlxyXG4gICAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3ByZXZpZXc+XHJcbiAgICBAaWYgKGlzTW9iaWxlKSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgW3N0eWxlLmJvcmRlcl09XCIhYmxvYlVybCA/ICcuMDYyNXJlbSBzb2xpZCB2YXIoLS1zYXBHcm91cF9UaXRsZUJvcmRlckNvbG9yKScgOiBudWxsXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogY2FsYyg3MHZoIC0gNDBweCk7IHBvc2l0aW9uOiByZWxhdGl2ZVwiXHJcbiAgICA+XHJcbiAgICAgICAgQGlmKHZhbHVlKXtcclxuICAgICAgICA8YnN1LWJsb2Itdmlld2VyIFtmaWxlXT1cInZhbHVlXCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgW2RlY3JlbWVudF09XCInMjVweCdcIj48L2JzdS1ibG9iLXZpZXdlcj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPCEtLSA8bmcyLXBkZmpzLXZpZXdlclxyXG4gICAgICAgICAgICBmaWxsRW1wdHlTcGFjZVxyXG4gICAgICAgICAgICBbY29udGFpbmVyRG9tXT1cImZvcm1Db250YWluZXJcIlxyXG4gICAgICAgICAgICBbZG9udFVzZVRvcEJvdW5kXT1cInRydWVcIlxyXG4gICAgICAgICAgICAjcGRmVmlld2VyT25EZW1hbmRcclxuICAgICAgICAgICAgW2V4dGVybmFsV2luZG93XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2Rvd25sb2FkRmlsZU5hbWVdPVwiYmxvYlVybFwiXHJcbiAgICAgICAgICAgIFtvcGVuRmlsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFt2aWV3Qm9va21hcmtdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbc2hvd1NwaW5uZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtkb3dubG9hZF09XCJ0cnVlXCJcclxuICAgICAgICA+PC9uZzItcGRmanMtdmlld2VyPiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgfSBAZWxzZSB7IEBpZiAoaGFzUGRmKSB7XHJcbiAgICA8b2JqZWN0XHJcbiAgICAgICAgZmlsbEVtcHR5U3BhY2VcclxuICAgICAgICBbY29udGFpbmVyRG9tXT1cImZvcm1Db250YWluZXJcIlxyXG4gICAgICAgIFtkb250VXNlVG9wQm91bmRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2Rpc2FibGVdPVwiaW5saW5lRWRpdFwiXHJcbiAgICAgICAgc3R5bGU9XCJmbGV4LWdyb3c6IDFcIlxyXG4gICAgICAgIFthdHRyLmRhdGFdPVwidmFsdWVVcmxcIlxyXG4gICAgICAgIHR5cGU9XCJhcHBsaWNhdGlvbi9wZGZcIlxyXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJpbmxpbmVFZGl0ID8gJ2F1dG8nIDogZm9ybUhlaWdodCAtIDMwID4gMCA/IGZvcm1IZWlnaHQgLSAzMCArICdweCcgOiAnMTAwdmgnXCJcclxuICAgICAgICBbYXR0ci5odG1sXT1cImZhbGxiYWNrTGlua1wiXHJcbiAgICA+PC9vYmplY3Q+XHJcbiAgICB9IEBlbHNlIHsgQGlmIChzaW5nbGVDb250cm9sICYmIHZhbHVlICYmICF2YWx1ZS5Jc0RlbGV0ZWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4IHR3LWp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgQGlmIChzaW5nbGVGaWxlVGh1bWJuYWlsVXJsKSB7XHJcbiAgICAgICAgICAgIDxic3UtZmlsZS12aWV3ZXItY29udGVudFxyXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJ2YWx1ZS5GaWxlTmFtZVwiICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFtmaWxlXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgW2ltYWdlT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2ZpbGxXaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2lzSW1hZ2VHYWxsZXJ5XT1cImZhbHNlXCJcclxuICAgICAgICA+PC9ic3UtZmlsZS12aWV3ZXItY29udGVudD5cclxuICAgICAgICA8IS0tIDxpbWcgW3NyY109XCJzaW5nbGVGaWxlVGh1bWJuYWlsVXJsXCIgLz4gLS0+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDxkaXZcclxuICAgICAgICBmaWxsRW1wdHlTcGFjZVxyXG4gICAgICAgIFtjb250YWluZXJEb21dPVwiZm9ybUNvbnRhaW5lclwiXHJcbiAgICAgICAgW2RvbnRVc2VUb3BCb3VuZF09XCJ0cnVlXCJcclxuICAgICAgICBjbGFzcz1cImhhdGNoQmFja2dyb3VuZFwiXHJcbiAgICAgICAgW2Rpc2FibGVdPVwiaW5saW5lRWRpdFwiXHJcbiAgICAgICAgW2NsYXNzLnR3LWgtNF09XCJpbmxpbmVFZGl0XCJcclxuICAgID48L2Rpdj5cclxuICAgIH0gfSB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgbGV0LWRpYWxvZyBsZXQtZGlhbG9nQ29uZmlnPVwiZGlhbG9nQ29uZmlnXCIgI2RpYWxvZ1RwbD5cclxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiIGNsYXNzPVwidmVydGljYWxcIj5cclxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGZkLXRpdGxlPmVkaXQgaW4gd29yZDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXIgYXJpYUxhYmVsPVwiY2xvc2VcIiBnbHlwaD1cImRlY2xpbmVcIiAoY2xpY2spPVwib25EaWFsb2dDbG9zZSgpXCI+PC9mZC1idXR0b24tYmFyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxyXG4gICAgICAgIDxmZC1kaWFsb2ctYm9keT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZpZXdcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2ZkLWRpYWxvZy1ib2R5PlxyXG4gICAgPC9mZC1kaWFsb2c+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|