barsa-sap-ui 1.0.309 → 1.0.310
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.
|
@@ -220,12 +220,12 @@ export class UiPdfViewerComponent extends DeviceInfoFieldBaseComponent {
|
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
UiPdfViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPdfViewerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
223
|
-
UiPdfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPdfViewerComponent, selector: "bsu-ui-pdf-viewer", providers: [UploadService], viewQueries: [{ propertyName: "_pdfViewerOnDemand", first: true, predicate: ["pdfViewerOnDemand"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\n <fd-toolbar [transparent]=\"true\" [shouldOverflow]=\"true\" *ngIf=\"(disableOrReadonly$ | async) !== true\">\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"id\"\n [name]=\"'pdf_' + id\"\n [placeholder]=\"'AttachFile' | bbbTranslate\"\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\n [accept]=\"validExtension\"\n [(ngModel)]=\"files\"\n [multiple]=\"false\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n [contentDensity]=\"(contentDensity$ | async)!!\"\n ></fd-file-uploader>\n <button\n fd-button\n fd-toolbar-item\n glyph=\"attachment\"\n [fdType]=\"'transparent'\"\n [disabled]=\"!canUpload\"\n (click)=\"uploader.open()\"\n ></button>\n <button\n [disabled]=\"!(canDelete && value)\"\n fd-button\n fd-toolbar-item\n class=\"delete\"\n glyph=\"delete\"\n [fdType]=\"'transparent'\"\n (click)=\"onDelete()\"\n ></button>\n <button\n *ngIf=\"canEdit\"\n fd-toolbar-item\n fd-button\n glyph=\"edit\"\n [fdType]=\"'transparent'\"\n (click)=\"onEdit()\"\n ></button>\n <button\n *ngIf=\"canDownload\"\n fd-toolbar-item\n fd-button\n glyph=\"download\"\n [fdType]=\"'transparent'\"\n (click)=\"onDownload()\"\n ></button>\n\n <button\n *ngIf=\"useWordEditor\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'EditInWord' | bbbTranslate\"\n (click)=\"onEditInWord()\"\n ></button>\n <button\n *ngIf=\"officeOnline\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'OfficeOnline' | bbbTranslate\"\n (click)=\"onOfficeOnline($event)\"\n ></button>\n <button fd-toolbar-item fd-button glyph=\"refresh\" [fdType]=\"'transparent'\" (click)=\"onRefresh()\"></button>\n\n <fd-busy-indicator\n fd-toolbar-item\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\n ></fd-busy-indicator>\n </fd-toolbar>\n <div\n *ngIf=\"isMobile; else browserPdf\"\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\n style=\"height: calc(70vh - 40px); position: relative\"\n >\n <ng2-pdfjs-viewer\n #pdfViewerOnDemand\n [externalWindow]=\"false\"\n [downloadFileName]=\"blobUrl\"\n [openFile]=\"false\"\n [viewBookmark]=\"false\"\n [showSpinner]=\"true\"\n [download]=\"true\"\n ></ng2-pdfjs-viewer>\
|
|
223
|
+
UiPdfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPdfViewerComponent, selector: "bsu-ui-pdf-viewer", providers: [UploadService], viewQueries: [{ propertyName: "_pdfViewerOnDemand", first: true, predicate: ["pdfViewerOnDemand"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\r\n <fd-toolbar [transparent]=\"true\" [shouldOverflow]=\"true\" *ngIf=\"(disableOrReadonly$ | async) !== 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 <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 <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 <button\r\n *ngIf=\"canEdit\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"edit\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onEdit()\"\r\n ></button>\r\n <button\r\n *ngIf=\"canDownload\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"download\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"useWordEditor\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'EditInWord' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n <button\r\n *ngIf=\"officeOnline\"\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 <button fd-toolbar-item fd-button glyph=\"refresh\" [fdType]=\"'transparent'\" (click)=\"onRefresh()\"></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 <div\r\n *ngIf=\"isMobile; else browserPdf\"\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n <ng2-pdfjs-viewer\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 <ng-template #browserPdf>\r\n <object\r\n *ngIf=\"hasPdf; else HatchBackground\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n </ng-template>\r\n\r\n <ng-template #HatchBackground>\r\n <ng-container *ngIf=\"singleControl && value && !value.IsDeleted; else noFile\">\r\n <div style=\"display: flex\">\r\n <img *ngIf=\"singleFileThumbnailUrl\" [src]=\"singleFileThumbnailUrl\" />\r\n <fd-object-identifier>\r\n {{ value.FileName }}\r\n </fd-object-identifier>\r\n </div>\r\n </ng-container>\r\n <ng-template #noFile>\r\n <div class=\"hatchBackground\"></div>\r\n </ng-template>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;min-height:70vh}: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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: i4.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.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: i7.ObjectIdentifierComponent, selector: "fd-object-identifier", inputs: ["description", "bold", "medium"] }, { kind: "component", type: i8.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i8.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i9.PdfJsViewerComponent, selector: "ng2-pdfjs-viewer", inputs: ["viewerId", "viewerFolder", "externalWindow", "showSpinner", "downloadFileName", "openFile", "download", "startDownload", "viewBookmark", "print", "startPrint", "fullScreen", "find", "zoom", "nameddest", "pagemode", "lastPage", "rotatecw", "rotateccw", "cursor", "scroll", "spread", "locale", "useOnlyCssZoom", "errorOverride", "errorAppend", "errorMessage", "diagnosticLogs", "externalWindowOptions", "page", "pdfSrc"], outputs: ["onBeforePrint", "onAfterPrint", "onDocumentLoad", "onPageChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
224
224
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPdfViewerComponent, decorators: [{
|
|
225
225
|
type: Component,
|
|
226
|
-
args: [{ selector: 'bsu-ui-pdf-viewer', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *untilInView=\"el\">\n <fd-toolbar [transparent]=\"true\" [shouldOverflow]=\"true\" *ngIf=\"(disableOrReadonly$ | async) !== true\">\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"id\"\n [name]=\"'pdf_' + id\"\n [placeholder]=\"'AttachFile' | bbbTranslate\"\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\n [accept]=\"validExtension\"\n [(ngModel)]=\"files\"\n [multiple]=\"false\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n [contentDensity]=\"(contentDensity$ | async)!!\"\n ></fd-file-uploader>\n <button\n fd-button\n fd-toolbar-item\n glyph=\"attachment\"\n [fdType]=\"'transparent'\"\n [disabled]=\"!canUpload\"\n (click)=\"uploader.open()\"\n ></button>\n <button\n [disabled]=\"!(canDelete && value)\"\n fd-button\n fd-toolbar-item\n class=\"delete\"\n glyph=\"delete\"\n [fdType]=\"'transparent'\"\n (click)=\"onDelete()\"\n ></button>\n <button\n *ngIf=\"canEdit\"\n fd-toolbar-item\n fd-button\n glyph=\"edit\"\n [fdType]=\"'transparent'\"\n (click)=\"onEdit()\"\n ></button>\n <button\n *ngIf=\"canDownload\"\n fd-toolbar-item\n fd-button\n glyph=\"download\"\n [fdType]=\"'transparent'\"\n (click)=\"onDownload()\"\n ></button>\n\n <button\n *ngIf=\"useWordEditor\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'EditInWord' | bbbTranslate\"\n (click)=\"onEditInWord()\"\n ></button>\n <button\n *ngIf=\"officeOnline\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'OfficeOnline' | bbbTranslate\"\n (click)=\"onOfficeOnline($event)\"\n ></button>\n <button fd-toolbar-item fd-button glyph=\"refresh\" [fdType]=\"'transparent'\" (click)=\"onRefresh()\"></button>\n\n <fd-busy-indicator\n fd-toolbar-item\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\n ></fd-busy-indicator>\n </fd-toolbar>\n <div\n *ngIf=\"isMobile; else browserPdf\"\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\n style=\"height: calc(70vh - 40px); position: relative\"\n >\n <ng2-pdfjs-viewer\n #pdfViewerOnDemand\n [externalWindow]=\"false\"\n [downloadFileName]=\"blobUrl\"\n [openFile]=\"false\"\n [viewBookmark]=\"false\"\n [showSpinner]=\"true\"\n [download]=\"true\"\n ></ng2-pdfjs-viewer>\
|
|
226
|
+
args: [{ selector: 'bsu-ui-pdf-viewer', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *untilInView=\"el\">\r\n <fd-toolbar [transparent]=\"true\" [shouldOverflow]=\"true\" *ngIf=\"(disableOrReadonly$ | async) !== 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 <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 <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 <button\r\n *ngIf=\"canEdit\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"edit\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onEdit()\"\r\n ></button>\r\n <button\r\n *ngIf=\"canDownload\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"download\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"useWordEditor\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'EditInWord' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n <button\r\n *ngIf=\"officeOnline\"\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 <button fd-toolbar-item fd-button glyph=\"refresh\" [fdType]=\"'transparent'\" (click)=\"onRefresh()\"></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 <div\r\n *ngIf=\"isMobile; else browserPdf\"\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n <ng2-pdfjs-viewer\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 <ng-template #browserPdf>\r\n <object\r\n *ngIf=\"hasPdf; else HatchBackground\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n </ng-template>\r\n\r\n <ng-template #HatchBackground>\r\n <ng-container *ngIf=\"singleControl && value && !value.IsDeleted; else noFile\">\r\n <div style=\"display: flex\">\r\n <img *ngIf=\"singleFileThumbnailUrl\" [src]=\"singleFileThumbnailUrl\" />\r\n <fd-object-identifier>\r\n {{ value.FileName }}\r\n </fd-object-identifier>\r\n </div>\r\n </ng-container>\r\n <ng-template #noFile>\r\n <div class=\"hatchBackground\"></div>\r\n </ng-template>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;min-height:70vh}: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"] }]
|
|
227
227
|
}], propDecorators: { _pdfViewerOnDemand: [{
|
|
228
228
|
type: ViewChild,
|
|
229
229
|
args: ['pdfViewerOnDemand']
|
|
230
230
|
}] } });
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1wZGYtdmlld2VyL3VpLXBkZi12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGRmLXZpZXdlci91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQW9DLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFDSCxRQUFRLEVBQ1IsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixPQUFPLEVBQ1AsWUFBWSxFQUNaLE9BQU8sRUFDUCxpQkFBaUIsRUFFcEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7QUFTekUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDRCQUE0QjtJQVB0RTs7UUFtQ0ksY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixZQUFPLEdBQUcsSUFBSSxDQUFDO0tBcVBsQjtJQTdPRyxRQUFRO1FBQ0osSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztRQUMzRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7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ZixrQkFBa0I7c0JBQWpELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcbmltcG9ydCB7XG4gICAgQmFyc2FBcGksXG4gICAgVXBsb2FkU2VydmljZSxcbiAgICBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXG4gICAgaXNJbWFnZSxcbiAgICBnZXRJbWFnZVBhdGgsXG4gICAgZ2V0SWNvbixcbiAgICBnZXRWYWxpZEV4dGVuc2lvbixcbiAgICBJVXBsb2FkaW5nU3RhdGVcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RldmljZS1pbmZvLWZpZWxkLWJhc2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS11aS1wZGYtdmlld2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktcGRmLXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1VwbG9hZFNlcnZpY2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVpUGRmVmlld2VyQ29tcG9uZW50IGV4dGVuZHMgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKCdwZGZWaWV3ZXJPbkRlbWFuZCcpIF9wZGZWaWV3ZXJPbkRlbWFuZDogYW55O1xuICAgIGZpbGVOYW1lOiBzdHJpbmc7XG4gICAgZmFsbGJhY2tMaW5rOiBhbnk7XG4gICAgY2FuTm90UmVuZGVyUGRmOiBib29sZWFuO1xuICAgIHZhbHVlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsO1xuICAgIGhhc1BkZjogYm9vbGVhbjtcbiAgICBwZGZPYmplY3Q6IHtcbiAgICAgICAgYXV0b0VsOiB7XG4gICAgICAgICAgICB0YWc6IHN0cmluZztcbiAgICAgICAgICAgIGRhdGE6IHN0cmluZztcbiAgICAgICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgICAgIHdpZHRoOiBzdHJpbmc7XG4gICAgICAgICAgICBoZWlnaHQ6IHN0cmluZztcbiAgICAgICAgICAgIGh0bWw6IGFueTtcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgdXBsb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPElVcGxvYWRpbmdTdGF0ZT47XG4gICAgZmlsZXM6IEZpbGVbXTtcbiAgICBjb250ZW50RGVuc2l0eSQ6IE9ic2VydmFibGU8Q29udGVudERlbnNpdHk+O1xuICAgIG9mZmljZU9ubGluZTogYW55O1xuICAgIHVzZVdvcmRFZGl0b3I6IGFueTtcbiAgICBoYXNGaWxlTmFtZTogYm9vbGVhbjtcbiAgICBjYW5SZW1vdmU6IGJvb2xlYW47XG4gICAgY2FuVXBsb2FkOiBib29sZWFuO1xuICAgIGNhbkVkaXQ6IGJvb2xlYW47XG4gICAgY2FuRG93bmxvYWQ6IGJvb2xlYW47XG4gICAgY2FuRGVsZXRlID0gdHJ1ZTtcbiAgICBjYW5TYXZlID0gdHJ1ZTtcbiAgICB2YWxpZEV4dGVuc2lvbjogc3RyaW5nO1xuICAgIGZpbGVzVmFsaWRhdGlvbkhlbHBlcjogRmlsZXNWYWxpZGF0aW9uSGVscGVyO1xuICAgIHNpbmdsZUNvbnRyb2w6IGJvb2xlYW47XG4gICAgc2luZ2xlRmlsZVRodW1ibmFpbFVybDogc3RyaW5nO1xuICAgIHBhcmVudEhlaWdodDogbnVtYmVyO1xuICAgIGJsb2JVcmw6IHN0cmluZztcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZGluZ1N0YXRlJCA9IHRoaXMuX3VwbG9hZFNlcnZpY2UudXBsb2FkaW5nU3RhdGUkO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnZhbHVlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZnJlc2gkLnN1YnNjcmliZSgoZnJvbVNlcnZlcjogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaChmcm9tU2VydmVyKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyID0gbmV3IEZpbGVzVmFsaWRhdGlvbkhlbHBlcihcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhGaWxlQ291bnQsXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4RmlsZVNpemVLYixcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhUb3RhbEZpbGVTaXplS2JcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnMoKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgICAgICB0aGlzLnZhbGlkRXh0ZW5zaW9uID0gdGhpcy5jb250ZXh0LnVzZVdvcmRFZGl0b3JcbiAgICAgICAgICAgID8gJy5kb2MsLmRvY3gsYXBwbGljYXRpb24vbXN3b3JkLGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J1xuICAgICAgICAgICAgOiBnZXRWYWxpZEV4dGVuc2lvbih0aGlzLlNldHRpbmcuVmFsaWRFeHRlbnNpb25zKTtcbiAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gdGhpcy5TZXR0aW5nLlZpZXdUeXBlID09PSAnU2luZ2xlRmlsZUNvbnRyb2wnO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCB7IGZvcm1IZWlnaHQgfSA9IGNoYW5nZXM7XG4gICAgICAgIGlmIChmb3JtSGVpZ2h0ICYmICFmb3JtSGVpZ2h0LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uRWRpdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRWRpdCcpO1xuICAgIH1cbiAgICBvblZpZXcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZSA9IHsgY3RybEtleTogZXZlbnQuY3RybEtleSB9O1xuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPT1ZpZXcnLCBlKTtcbiAgICB9XG4gICAgb25Eb3dubG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRG93bmxvYWQnKTtcbiAgICB9XG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXBsb2FkVG9TZXJ2ZXIoZmlsZXMpO1xuICAgIH1cbiAgICBvbkRlbGV0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRGVsZXRlJyk7XG4gICAgfVxuICAgIG9uRWRpdEluV29yZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignT0RFZGl0Jyk7XG4gICAgfVxuICAgIG9uT2ZmaWNlT25saW5lKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGUgPSB7IGN0cmxLZXk6IGV2ZW50LmN0cmxLZXkgfTtcblxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPT0VkaXQnLCBlKTtcbiAgICB9XG4gICAgb25SZWZyZXNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdSZWZyZXNoJyk7XG4gICAgfVxuICAgIERvd25sb2FkRmlsZUlkKGZpbGVJZCwgdmlld0luQnJvd3NlciwgY29udmVydFRvLCBmb3JPY3gsIGlzT2ZmaWNlT25saW5lKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suTWFzayh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkZpbGUuRG93bmxvYWRGaWxlQ29udGVudC5iaW5kKHRoaXMpKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpbGVJZCxcbiAgICAgICAgICAgICAgICBmaWxlVXJsOiBudWxsLFxuICAgICAgICAgICAgICAgIHZpZXdJbkJyb3dzZXIsXG4gICAgICAgICAgICAgICAgY29udmVydFRvLFxuICAgICAgICAgICAgICAgIGlzT2ZmaWNlT25saW5lLFxuICAgICAgICAgICAgICAgIGZvck9jeFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZUlkQ29tcGxldGVkKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGlkZU1hc2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGlkZU1hc2soKTtcbiAgICAgICAgICAgICAgICBhbGVydChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZG93bmxvYWRGaWxlSWRDb21wbGV0ZWQocmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYmxvYiA9IEJhcnNhQXBpLkNvbW1vbi5GaWxlLkI2NHRvQmxvYihyZXNwb25zZS5jb250ZW50LCByZXNwb25zZS5jb250ZW50VHlwZSk7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDtcbiAgICAgICAgdGhpcy5ibG9iVXJsID0gdXJsLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3BkZlZpZXdlck9uRGVtYW5kLnBkZlNyYyA9IHRoaXMuYmxvYlVybDsgLy8gcGRmU3JjIGNhbiBiZSBCbG9iIG9yIFVpbnQ4QXJyYXlcbiAgICAgICAgICAgIHRoaXMuX3BkZlZpZXdlck9uRGVtYW5kLnJlZnJlc2goKTsgLy8gQXNrIHBkZiB2aWV3ZXIgdG8gbG9hZC9yZWZyZXNoIHBkZlxuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWVVcmwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuYmxvYlVybCk7XG4gICAgICAgIHRoaXMuaGFzUGRmID0gdHJ1ZTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF91cGxvYWRUb1NlcnZlcihmaWxlczogRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyLnZhbGlkYXRlRmlsZXMoZmlsZXMpO1xuICAgICAgICB0aGlzLl91cGxvYWRGaWxlKGZpbGVzKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yZWZyZXNoQnV0dG9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnNIZWxwZXIoZmFsc2UpO1xuICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuV2F0ZXJmYWxsKFxuICAgICAgICAgICAgJ0NvbW1vbi5GaWxlLklzQWdlbnRBY3RpdmUnLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC8vIENvbW1vbi5GaWxlQWdlbnQuSXNBZ2VudEFjdGl2ZS5iaW5kKENvbW1vbi5GaWxlQWdlbnQpLFxuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5BZ2VudEhlbHBlci5Jbml0LmJpbmQoQmFyc2FBcGkuQ29tbW9uLkFnZW50SGVscGVyKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFnZW50SXNBY3RpdmUgPSByZXN1bHQgPT09ICdPSyc7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnNIZWxwZXIoYWdlbnRJc0FjdGl2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmVmcmVzaEJ1dHRvbnNIZWxwZXIoaXNBZ2VudEFjdGl2ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVPclJlYWRvbmx5JC5zdWJzY3JpYmUoKGRpc2FibGVPclJlYWRvbmx5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYW5TYXZlID0gdGhpcy5jYW5TYXZlO1xuICAgICAgICAgICAgdGhpcy5jYW5EZWxldGUgPSAhZGlzYWJsZU9yUmVhZG9ubHk7XG4gICAgICAgICAgICBjb25zdCBoYXNWYWx1ZSA9ICFCYXJzYUFwaS5FeHQuaXNFbXB0eSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGVkaXQwID0gY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2FuRWRpdCA9IGVkaXQwICYmIGlzQWdlbnRBY3RpdmU7XG4gICAgICAgICAgICB0aGlzLmNhbkRvd25sb2FkID0gIXRoaXMuU2V0dGluZy5Jc1dvcmRWaWV3ZXIgfHwgKCFpc0FnZW50QWN0aXZlICYmIGVkaXQwKTtcbiAgICAgICAgICAgIHRoaXMuY2FuVXBsb2FkID0gdGhpcy5jYW5Eb3dubG9hZCAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5oYXNGaWxlTmFtZSA9ICF0aGlzLmNvbnRleHQuU2V0dGluZy5Jc1dvcmRWaWV3ZXI7XG4gICAgICAgICAgICB0aGlzLmNhblJlbW92ZSA9IHRoaXMuY2FuRG93bmxvYWQgJiYgY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5vZmZpY2VPbmxpbmUgPSBoYXNWYWx1ZSAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIHRoaXMuY29udGV4dC5PZmZpY2VPbmxpbmU7XG4gICAgICAgICAgICB0aGlzLnVzZVdvcmRFZGl0b3IgPSBoYXNWYWx1ZSAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIHRoaXMuY29udGV4dC51c2VXb3JkRWRpdG9yO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jb21tYW5kQ2xpY2tIYW5kbGVyKGl0ZW1JZCwga2V5Ym9hcmRFdmVudD8pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29tbWFuZElkID0gaXRlbUlkO1xuXG4gICAgICAgIGxldCBmaWxlcyA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChCYXJzYUFwaS5FeHQuaXNBcnJheShmaWxlcykpIHtcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcz8uSWQ7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ0NvbW1hbmRSZXF1ZXN0JywgdGhpcywgY29tbWFuZElkLCBmaWxlSWQsIGtleWJvYXJkRXZlbnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2goZnJvbVNlcnZlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2ZmaWNlT25saW5lID0gZnJvbVNlcnZlciA9PT0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5maWxlTmFtZSA9ICcnO1xuXG4gICAgICAgIGlmIChCYXJzYUFwaS5FeHQuaXNFbXB0eSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWxlcyA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChCYXJzYUFwaS5FeHQuaXNBcnJheShmaWxlcykpIHtcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcy5JZDtcbiAgICAgICAgaWYgKCFmaWxlSWQgfHwgZmlsZXMuSXNEZWxldGVkKSB7XG4gICAgICAgICAgICBpZiAoZmlsZXMuSXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZhbGxiYWNrTGluayA9IGDYp9mF2qnYp9mGINmG2YXYp9uM2LQg2YHYp9uM2YQg2K/YsSDYp9uM2YYg2YXYsdmI2LHar9ixINmI2KzZiNivINmG2K/Yp9ix2K8uXG4gICAgICAgICDYqNix2KfbjCDYqNin2LIg2qnYsdiv2YYg2YHYp9uM2YQg2KfYsiDZhNuM2YbaqSDYstuM2LEg2KfYs9iq2YHYp9iv2Ycg2qnZhtuM2K86ICA8L2JyPiA8YSBocmVmPScke0JhcnNhQXBpLkNvbW1vbi5GaWxlLkNyZWF0ZUF0dGFjaG1lbnRVcmwoXG4gICAgICAgICAgICAgZmlsZUlkLFxuICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICl9Jz7Yr9in2YbZhNmI2K8g2YHYp9uM2YQg2KjYtdmI2LHYqiBwZGY8L2E+ICA8L2JyPiAgPGEgaHJlZj0nJHtCYXJzYUFwaS5Db21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKFxuICAgICAgICAgICAgZmlsZUlkLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApfSc+2K/Yp9mG2YTZiNivINmB2KfbjNmEINio2LXZiNix2Kog2KjYtdmI2LHYqiDYp9i12YTbjDwvYT5gO1xuXG4gICAgICAgIGlmICghQmFyc2FBcGkuRXh0LmlzSUUpIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAvLyAgICAgZmFsbGJhY2tMaW5rOiB0aGlzLmZhbGxiYWNrTGluayxcbiAgICAgICAgICAgIC8vICAgICBwZGZPcGVuUGFyYW1zOiB7XG4gICAgICAgICAgICAvLyAgICAgICAgIHZpZXc6ICdGaXRIJyxcbiAgICAgICAgICAgIC8vICAgICAgICAgc2Nyb2xsYmFyOiAnMCcsXG4gICAgICAgICAgICAvLyAgICAgICAgIHRvb2xiYXI6ICcwJyxcbiAgICAgICAgICAgIC8vICAgICAgICAgc3RhdHVzYmFyOiAnMCcsXG4gICAgICAgICAgICAvLyAgICAgICAgIG1lc3NhZ2VzOiAnMCcsXG4gICAgICAgICAgICAvLyAgICAgICAgIG5hdnBhbmVzOiAnMCdcbiAgICAgICAgICAgIC8vICAgICB9XG4gICAgICAgICAgICAvLyB9O1xuICAgICAgICAgICAgbGV0IGNvbnZlcnRUbyA9IGlzSW1hZ2UoZmlsZXMuVHlwZSkgPyBmaWxlcy5UeXBlIDogJyc7XG4gICAgICAgICAgICBjb252ZXJ0VG8gPSAncGRmLGRvYyxkb2N4LHdvcmQnLmluZGV4T2YoZmlsZXMuVHlwZSkgPiAtMSA/ICdwZGYnIDogY29udmVydFRvO1xuXG4gICAgICAgICAgICBpZiAoIWNvbnZlcnRUbykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlQ29udHJvbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTaW5nbGVDb250cm9sKGZpbGVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNpbmdsZUNvbnRyb2wgPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5Eb3dubG9hZEZpbGVJZChmaWxlSWQsIHRydWUsIGNvbnZlcnRUbywgbnVsbCwgb2ZmaWNlT25saW5lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IHVybCA9IENvbW1vbi5GaWxlLkNyZWF0ZUF0dGFjaG1lbnRVcmwoZmlsZUlkLCBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmNhbk5vdFJlbmRlclBkZiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3VwbG9hZEZpbGUoZmlsZXM6IEZpbGVbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgndW5pY0ZpbGVOYW1lJywgJ3gnICsgQmFyc2FBcGkuQ29tbW9uLlV0aWwuR2V0TmV3TWV0YUd1aWQoKSArICc7OzsnICsgZmlsZS5uYW1lKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWQoZm9ybURhdGEsIHRoaXMuU2V0dGluZy5Db250cm9sRmllbGREZWZJZCkucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZShyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF91cGRhdGVWYWx1ZShyZXM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLlNldHRpbmcuVmlld1R5cGUgIT09ICdMaW5lYXJMaXN0Qm94Jykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTaW5nbGVDb250cm9sKHJlc1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maXJlQ29udGV4dEV2ZW50KCdDaGFuZ2UnLCB0aGlzLmNvbnRleHQsIHJlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTaW5nbGVDb250cm9sKHZhbDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChpc0ltYWdlKHZhbC5UeXBlKSkge1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVGaWxlVGh1bWJuYWlsVXJsID0gZ2V0SW1hZ2VQYXRoKCdJRCcsICcnLCB2YWwuSWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVGaWxlVGh1bWJuYWlsVXJsID0gZ2V0SWNvbih2YWwuVHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBfaGlkZU1hc2soKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suVW5tYXNrKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICp1bnRpbEluVmlldz1cImVsXCI+XG4gICAgPGZkLXRvb2xiYXIgW3RyYW5zcGFyZW50XT1cInRydWVcIiBbc2hvdWxkT3ZlcmZsb3ddPVwidHJ1ZVwiICpuZ0lmPVwiKGRpc2FibGVPclJlYWRvbmx5JCB8IGFzeW5jKSAhPT0gdHJ1ZVwiPlxuICAgICAgICA8ZmQtZmlsZS11cGxvYWRlclxuICAgICAgICAgICAgI3VwbG9hZGVyXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgW25hbWVdPVwiJ3BkZl8nICsgaWRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBdHRhY2hGaWxlJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbYnV0dG9uTGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtidXR0b25BcmlhTGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFthY2NlcHRdPVwidmFsaWRFeHRlbnNpb25cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWxlc1wiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgKHNlbGVjdGVkRmlsZXNDaGFuZ2VkKT1cIm9uRmlsZVNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjb250ZW50RGVuc2l0eV09XCIoY29udGVudERlbnNpdHkkIHwgYXN5bmMpISFcIlxuICAgICAgICA+PC9mZC1maWxlLXVwbG9hZGVyPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgZ2x5cGg9XCJhdHRhY2htZW50XCJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblVwbG9hZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidXBsb2FkZXIub3BlbigpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIShjYW5EZWxldGUgJiYgdmFsdWUpXCJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBjbGFzcz1cImRlbGV0ZVwiXG4gICAgICAgICAgICBnbHlwaD1cImRlbGV0ZVwiXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiY2FuRWRpdFwiXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZ2x5cGg9XCJlZGl0XCJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25FZGl0KClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiY2FuRG93bmxvYWRcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGdseXBoPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkRvd25sb2FkKClcIlxuICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJ1c2VXb3JkRWRpdG9yXCJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBnbHlwaD1cImRvYy1hdHRhY2htZW50XCJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ0VkaXRJbldvcmQnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRJbldvcmQoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJvZmZpY2VPbmxpbmVcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGdseXBoPVwiZG9jLWF0dGFjaG1lbnRcIlxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInT2ZmaWNlT25saW5lJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25PZmZpY2VPbmxpbmUoJGV2ZW50KVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBmZC10b29sYmFyLWl0ZW0gZmQtYnV0dG9uIGdseXBoPVwicmVmcmVzaFwiIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiIChjbGljayk9XCJvblJlZnJlc2goKVwiPjwvYnV0dG9uPlxuXG4gICAgICAgIDxmZC1idXN5LWluZGljYXRvclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBbbG9hZGluZ109XCIodXBsb2FkaW5nU3RhdGUkIHwgYXN5bmMpPy51cGxvYWRpbmcgPT09IHRydWVcIlxuICAgICAgICA+PC9mZC1idXN5LWluZGljYXRvcj5cbiAgICA8L2ZkLXRvb2xiYXI+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImlzTW9iaWxlOyBlbHNlIGJyb3dzZXJQZGZcIlxuICAgICAgICBbc3R5bGUuYm9yZGVyXT1cIiFibG9iVXJsID8gJy4wNjI1cmVtIHNvbGlkIHZhcigtLXNhcEdyb3VwX1RpdGxlQm9yZGVyQ29sb3IpJyA6IG51bGxcIlxuICAgICAgICBzdHlsZT1cImhlaWdodDogY2FsYyg3MHZoIC0gNDBweCk7IHBvc2l0aW9uOiByZWxhdGl2ZVwiXG4gICAgPlxuICAgICAgICA8bmcyLXBkZmpzLXZpZXdlclxuICAgICAgICAgICAgI3BkZlZpZXdlck9uRGVtYW5kXG4gICAgICAgICAgICBbZXh0ZXJuYWxXaW5kb3ddPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Rvd25sb2FkRmlsZU5hbWVdPVwiYmxvYlVybFwiXG4gICAgICAgICAgICBbb3BlbkZpbGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3ZpZXdCb29rbWFya109XCJmYWxzZVwiXG4gICAgICAgICAgICBbc2hvd1NwaW5uZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZG93bmxvYWRdPVwidHJ1ZVwiXG4gICAgICAgID48L25nMi1wZGZqcy12aWV3ZXI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBnbHlwaD1cInBkZi1hdHRhY2htZW50XCJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblVwbG9hZFwiXG4gICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA0OCU7IGxlZnQ6IDQ4JTsgZm9udC1zaXplOiAzMnB4XCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjYnJvd3NlclBkZj5cbiAgICAgICAgPG9iamVjdFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNQZGY7IGVsc2UgSGF0Y2hCYWNrZ3JvdW5kXCJcbiAgICAgICAgICAgIHN0eWxlPVwiZmxleC1ncm93OiAxXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGFdPVwidmFsdWVVcmxcIlxuICAgICAgICAgICAgdHlwZT1cImFwcGxpY2F0aW9uL3BkZlwiXG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJmb3JtSGVpZ2h0IC0gMzAgPiAwID8gZm9ybUhlaWdodCAtIDMwICsgJ3B4JyA6ICcxMDB2aCdcIlxuICAgICAgICAgICAgW2F0dHIuaHRtbF09XCJmYWxsYmFja0xpbmtcIlxuICAgICAgICA+PC9vYmplY3Q+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjSGF0Y2hCYWNrZ3JvdW5kPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2luZ2xlQ29udHJvbCAmJiB2YWx1ZSAmJiAhdmFsdWUuSXNEZWxldGVkOyBlbHNlIG5vRmlsZVwiPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cbiAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwic2luZ2xlRmlsZVRodW1ibmFpbFVybFwiIFtzcmNdPVwic2luZ2xlRmlsZVRodW1ibmFpbFVybFwiIC8+XG4gICAgICAgICAgICAgICAgPGZkLW9iamVjdC1pZGVudGlmaWVyPlxuICAgICAgICAgICAgICAgICAgICB7eyB2YWx1ZS5GaWxlTmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvZmQtb2JqZWN0LWlkZW50aWZpZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9GaWxlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhhdGNoQmFja2dyb3VuZFwiPjwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1wZGYtdmlld2VyL3VpLXBkZi12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGRmLXZpZXdlci91aS1wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQW9DLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFDSCxRQUFRLEVBQ1IsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixPQUFPLEVBQ1AsWUFBWSxFQUNaLE9BQU8sRUFDUCxpQkFBaUIsRUFFcEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7QUFTekUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDRCQUE0QjtJQVB0RTs7UUFtQ0ksY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixZQUFPLEdBQUcsSUFBSSxDQUFDO0tBcVBsQjtJQTdPRyxRQUFRO1FBQ0osSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztRQUMzRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7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ZixrQkFBa0I7c0JBQWpELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcbmltcG9ydCB7XG4gICAgQmFyc2FBcGksXG4gICAgVXBsb2FkU2VydmljZSxcbiAgICBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXG4gICAgaXNJbWFnZSxcbiAgICBnZXRJbWFnZVBhdGgsXG4gICAgZ2V0SWNvbixcbiAgICBnZXRWYWxpZEV4dGVuc2lvbixcbiAgICBJVXBsb2FkaW5nU3RhdGVcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RldmljZS1pbmZvLWZpZWxkLWJhc2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS11aS1wZGYtdmlld2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktcGRmLXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1VwbG9hZFNlcnZpY2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVpUGRmVmlld2VyQ29tcG9uZW50IGV4dGVuZHMgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKCdwZGZWaWV3ZXJPbkRlbWFuZCcpIF9wZGZWaWV3ZXJPbkRlbWFuZDogYW55O1xuICAgIGZpbGVOYW1lOiBzdHJpbmc7XG4gICAgZmFsbGJhY2tMaW5rOiBhbnk7XG4gICAgY2FuTm90UmVuZGVyUGRmOiBib29sZWFuO1xuICAgIHZhbHVlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsO1xuICAgIGhhc1BkZjogYm9vbGVhbjtcbiAgICBwZGZPYmplY3Q6IHtcbiAgICAgICAgYXV0b0VsOiB7XG4gICAgICAgICAgICB0YWc6IHN0cmluZztcbiAgICAgICAgICAgIGRhdGE6IHN0cmluZztcbiAgICAgICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgICAgIHdpZHRoOiBzdHJpbmc7XG4gICAgICAgICAgICBoZWlnaHQ6IHN0cmluZztcbiAgICAgICAgICAgIGh0bWw6IGFueTtcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgdXBsb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPElVcGxvYWRpbmdTdGF0ZT47XG4gICAgZmlsZXM6IEZpbGVbXTtcbiAgICBjb250ZW50RGVuc2l0eSQ6IE9ic2VydmFibGU8Q29udGVudERlbnNpdHk+O1xuICAgIG9mZmljZU9ubGluZTogYW55O1xuICAgIHVzZVdvcmRFZGl0b3I6IGFueTtcbiAgICBoYXNGaWxlTmFtZTogYm9vbGVhbjtcbiAgICBjYW5SZW1vdmU6IGJvb2xlYW47XG4gICAgY2FuVXBsb2FkOiBib29sZWFuO1xuICAgIGNhbkVkaXQ6IGJvb2xlYW47XG4gICAgY2FuRG93bmxvYWQ6IGJvb2xlYW47XG4gICAgY2FuRGVsZXRlID0gdHJ1ZTtcbiAgICBjYW5TYXZlID0gdHJ1ZTtcbiAgICB2YWxpZEV4dGVuc2lvbjogc3RyaW5nO1xuICAgIGZpbGVzVmFsaWRhdGlvbkhlbHBlcjogRmlsZXNWYWxpZGF0aW9uSGVscGVyO1xuICAgIHNpbmdsZUNvbnRyb2w6IGJvb2xlYW47XG4gICAgc2luZ2xlRmlsZVRodW1ibmFpbFVybDogc3RyaW5nO1xuICAgIHBhcmVudEhlaWdodDogbnVtYmVyO1xuICAgIGJsb2JVcmw6IHN0cmluZztcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZGluZ1N0YXRlJCA9IHRoaXMuX3VwbG9hZFNlcnZpY2UudXBsb2FkaW5nU3RhdGUkO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnZhbHVlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZnJlc2gkLnN1YnNjcmliZSgoZnJvbVNlcnZlcjogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaChmcm9tU2VydmVyKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyID0gbmV3IEZpbGVzVmFsaWRhdGlvbkhlbHBlcihcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhGaWxlQ291bnQsXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4RmlsZVNpemVLYixcbiAgICAgICAgICAgIHRoaXMuU2V0dGluZy5NYXhUb3RhbEZpbGVTaXplS2JcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnMoKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgICAgICB0aGlzLnZhbGlkRXh0ZW5zaW9uID0gdGhpcy5jb250ZXh0LnVzZVdvcmRFZGl0b3JcbiAgICAgICAgICAgID8gJy5kb2MsLmRvY3gsYXBwbGljYXRpb24vbXN3b3JkLGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J1xuICAgICAgICAgICAgOiBnZXRWYWxpZEV4dGVuc2lvbih0aGlzLlNldHRpbmcuVmFsaWRFeHRlbnNpb25zKTtcbiAgICAgICAgdGhpcy5zaW5nbGVDb250cm9sID0gdGhpcy5TZXR0aW5nLlZpZXdUeXBlID09PSAnU2luZ2xlRmlsZUNvbnRyb2wnO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCB7IGZvcm1IZWlnaHQgfSA9IGNoYW5nZXM7XG4gICAgICAgIGlmIChmb3JtSGVpZ2h0ICYmICFmb3JtSGVpZ2h0LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uRWRpdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRWRpdCcpO1xuICAgIH1cbiAgICBvblZpZXcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZSA9IHsgY3RybEtleTogZXZlbnQuY3RybEtleSB9O1xuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPT1ZpZXcnLCBlKTtcbiAgICB9XG4gICAgb25Eb3dubG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRG93bmxvYWQnKTtcbiAgICB9XG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXBsb2FkVG9TZXJ2ZXIoZmlsZXMpO1xuICAgIH1cbiAgICBvbkRlbGV0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignRGVsZXRlJyk7XG4gICAgfVxuICAgIG9uRWRpdEluV29yZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tbWFuZENsaWNrSGFuZGxlcignT0RFZGl0Jyk7XG4gICAgfVxuICAgIG9uT2ZmaWNlT25saW5lKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGUgPSB7IGN0cmxLZXk6IGV2ZW50LmN0cmxLZXkgfTtcblxuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdPT0VkaXQnLCBlKTtcbiAgICB9XG4gICAgb25SZWZyZXNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb21tYW5kQ2xpY2tIYW5kbGVyKCdSZWZyZXNoJyk7XG4gICAgfVxuICAgIERvd25sb2FkRmlsZUlkKGZpbGVJZCwgdmlld0luQnJvd3NlciwgY29udmVydFRvLCBmb3JPY3gsIGlzT2ZmaWNlT25saW5lKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suTWFzayh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkZpbGUuRG93bmxvYWRGaWxlQ29udGVudC5iaW5kKHRoaXMpKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpbGVJZCxcbiAgICAgICAgICAgICAgICBmaWxlVXJsOiBudWxsLFxuICAgICAgICAgICAgICAgIHZpZXdJbkJyb3dzZXIsXG4gICAgICAgICAgICAgICAgY29udmVydFRvLFxuICAgICAgICAgICAgICAgIGlzT2ZmaWNlT25saW5lLFxuICAgICAgICAgICAgICAgIGZvck9jeFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZUlkQ29tcGxldGVkKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGlkZU1hc2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGlkZU1hc2soKTtcbiAgICAgICAgICAgICAgICBhbGVydChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZG93bmxvYWRGaWxlSWRDb21wbGV0ZWQocmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYmxvYiA9IEJhcnNhQXBpLkNvbW1vbi5GaWxlLkI2NHRvQmxvYihyZXNwb25zZS5jb250ZW50LCByZXNwb25zZS5jb250ZW50VHlwZSk7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDtcbiAgICAgICAgdGhpcy5ibG9iVXJsID0gdXJsLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3BkZlZpZXdlck9uRGVtYW5kLnBkZlNyYyA9IHRoaXMuYmxvYlVybDsgLy8gcGRmU3JjIGNhbiBiZSBCbG9iIG9yIFVpbnQ4QXJyYXlcbiAgICAgICAgICAgIHRoaXMuX3BkZlZpZXdlck9uRGVtYW5kLnJlZnJlc2goKTsgLy8gQXNrIHBkZiB2aWV3ZXIgdG8gbG9hZC9yZWZyZXNoIHBkZlxuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWVVcmwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuYmxvYlVybCk7XG4gICAgICAgIHRoaXMuaGFzUGRmID0gdHJ1ZTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF91cGxvYWRUb1NlcnZlcihmaWxlczogRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZXNWYWxpZGF0aW9uSGVscGVyLnZhbGlkYXRlRmlsZXMoZmlsZXMpO1xuICAgICAgICB0aGlzLl91cGxvYWRGaWxlKGZpbGVzKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yZWZyZXNoQnV0dG9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnNIZWxwZXIoZmFsc2UpO1xuICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuV2F0ZXJmYWxsKFxuICAgICAgICAgICAgJ0NvbW1vbi5GaWxlLklzQWdlbnRBY3RpdmUnLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC8vIENvbW1vbi5GaWxlQWdlbnQuSXNBZ2VudEFjdGl2ZS5iaW5kKENvbW1vbi5GaWxlQWdlbnQpLFxuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5BZ2VudEhlbHBlci5Jbml0LmJpbmQoQmFyc2FBcGkuQ29tbW9uLkFnZW50SGVscGVyKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFnZW50SXNBY3RpdmUgPSByZXN1bHQgPT09ICdPSyc7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEJ1dHRvbnNIZWxwZXIoYWdlbnRJc0FjdGl2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmVmcmVzaEJ1dHRvbnNIZWxwZXIoaXNBZ2VudEFjdGl2ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVPclJlYWRvbmx5JC5zdWJzY3JpYmUoKGRpc2FibGVPclJlYWRvbmx5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYW5TYXZlID0gdGhpcy5jYW5TYXZlO1xuICAgICAgICAgICAgdGhpcy5jYW5EZWxldGUgPSAhZGlzYWJsZU9yUmVhZG9ubHk7XG4gICAgICAgICAgICBjb25zdCBoYXNWYWx1ZSA9ICFCYXJzYUFwaS5FeHQuaXNFbXB0eSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGVkaXQwID0gY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2FuRWRpdCA9IGVkaXQwICYmIGlzQWdlbnRBY3RpdmU7XG4gICAgICAgICAgICB0aGlzLmNhbkRvd25sb2FkID0gIXRoaXMuU2V0dGluZy5Jc1dvcmRWaWV3ZXIgfHwgKCFpc0FnZW50QWN0aXZlICYmIGVkaXQwKTtcbiAgICAgICAgICAgIHRoaXMuY2FuVXBsb2FkID0gdGhpcy5jYW5Eb3dubG9hZCAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5oYXNGaWxlTmFtZSA9ICF0aGlzLmNvbnRleHQuU2V0dGluZy5Jc1dvcmRWaWV3ZXI7XG4gICAgICAgICAgICB0aGlzLmNhblJlbW92ZSA9IHRoaXMuY2FuRG93bmxvYWQgJiYgY2FuU2F2ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5vZmZpY2VPbmxpbmUgPSBoYXNWYWx1ZSAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIHRoaXMuY29udGV4dC5PZmZpY2VPbmxpbmU7XG4gICAgICAgICAgICB0aGlzLnVzZVdvcmRFZGl0b3IgPSBoYXNWYWx1ZSAmJiBjYW5TYXZlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIHRoaXMuY29udGV4dC51c2VXb3JkRWRpdG9yO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jb21tYW5kQ2xpY2tIYW5kbGVyKGl0ZW1JZCwga2V5Ym9hcmRFdmVudD8pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29tbWFuZElkID0gaXRlbUlkO1xuXG4gICAgICAgIGxldCBmaWxlcyA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChCYXJzYUFwaS5FeHQuaXNBcnJheShmaWxlcykpIHtcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcz8uSWQ7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ0NvbW1hbmRSZXF1ZXN0JywgdGhpcywgY29tbWFuZElkLCBmaWxlSWQsIGtleWJvYXJkRXZlbnQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3JlZnJlc2goZnJvbVNlcnZlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2ZmaWNlT25saW5lID0gZnJvbVNlcnZlciA9PT0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5maWxlTmFtZSA9ICcnO1xuXG4gICAgICAgIGlmIChCYXJzYUFwaS5FeHQuaXNFbXB0eSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWxlcyA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmIChCYXJzYUFwaS5FeHQuaXNBcnJheShmaWxlcykpIHtcbiAgICAgICAgICAgIGZpbGVzID0gZmlsZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlcy5JZDtcbiAgICAgICAgaWYgKCFmaWxlSWQgfHwgZmlsZXMuSXNEZWxldGVkKSB7XG4gICAgICAgICAgICBpZiAoZmlsZXMuSXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNQZGYgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZhbGxiYWNrTGluayA9IGDYp9mF2qnYp9mGINmG2YXYp9uM2LQg2YHYp9uM2YQg2K/YsSDYp9uM2YYg2YXYsdmI2LHar9ixINmI2KzZiNivINmG2K/Yp9ix2K8uXG4gICAgICAgICDYqNix2KfbjCDYqNin2LIg2qnYsdiv2YYg2YHYp9uM2YQg2KfYsiDZhNuM2YbaqSDYstuM2LEg2KfYs9iq2YHYp9iv2Ycg2qnZhtuM2K86ICA8L2JyPiA8YSBocmVmPScke0JhcnNhQXBpLkNvbW1vbi5GaWxlLkNyZWF0ZUF0dGFjaG1lbnRVcmwoXG4gICAgICAgICAgICAgZmlsZUlkLFxuICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICl9Jz7Yr9in2YbZhNmI2K8g2YHYp9uM2YQg2KjYtdmI2LHYqiBwZGY8L2E+ICA8L2JyPiAgPGEgaHJlZj0nJHtCYXJzYUFwaS5Db21tb24uRmlsZS5DcmVhdGVBdHRhY2htZW50VXJsKFxuICAgICAgICAgICAgZmlsZUlkLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApfSc+2K/Yp9mG2YTZiNivINmB2KfbjNmEINio2LXZiNix2Kog2KjYtdmI2LHYqiDYp9i12YTbjDwvYT5gO1xuXG4gICAgICAgIGlmICghQmFyc2FBcGkuRXh0LmlzSUUpIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAvLyAgICAgZmFsbGJhY2tMaW5rOiB0aGlzLmZhbGxiYWNrTGluayxcbiAgICAgICAgICAgIC8vICAgICBwZGZPcGVuUGFyYW1zOiB7XG4gICAgICAgICAgICAvLyAgICAgICAgIHZpZXc6ICdGaXRIJyxcbiAgICAgICAgICAgIC8vICAgICAgICAgc2Nyb2xsYmFyOiAnMCcsXG4gICAgICAgICAgICAvLyAgICAgICAgIHRvb2xiYXI6ICcwJyxcbiAgICAgICAgICAgIC8vICAgICAgICAgc3RhdHVzYmFyOiAnMCcsXG4gICAgICAgICAgICAvLyAgICAgICAgIG1lc3NhZ2VzOiAnMCcsXG4gICAgICAgICAgICAvLyAgICAgICAgIG5hdnBhbmVzOiAnMCdcbiAgICAgICAgICAgIC8vICAgICB9XG4gICAgICAgICAgICAvLyB9O1xuICAgICAgICAgICAgbGV0IGNvbnZlcnRUbyA9IGlzSW1hZ2UoZmlsZXMuVHlwZSkgPyBmaWxlcy5UeXBlIDogJyc7XG4gICAgICAgICAgICBjb252ZXJ0VG8gPSAncGRmLGRvYyxkb2N4LHdvcmQnLmluZGV4T2YoZmlsZXMuVHlwZSkgPiAtMSA/ICdwZGYnIDogY29udmVydFRvO1xuXG4gICAgICAgICAgICBpZiAoIWNvbnZlcnRUbykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlQ29udHJvbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTaW5nbGVDb250cm9sKGZpbGVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNpbmdsZUNvbnRyb2wgPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5Eb3dubG9hZEZpbGVJZChmaWxlSWQsIHRydWUsIGNvbnZlcnRUbywgbnVsbCwgb2ZmaWNlT25saW5lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IHVybCA9IENvbW1vbi5GaWxlLkNyZWF0ZUF0dGFjaG1lbnRVcmwoZmlsZUlkLCBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmNhbk5vdFJlbmRlclBkZiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3VwbG9hZEZpbGUoZmlsZXM6IEZpbGVbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgndW5pY0ZpbGVOYW1lJywgJ3gnICsgQmFyc2FBcGkuQ29tbW9uLlV0aWwuR2V0TmV3TWV0YUd1aWQoKSArICc7OzsnICsgZmlsZS5uYW1lKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWQoZm9ybURhdGEsIHRoaXMuU2V0dGluZy5Db250cm9sRmllbGREZWZJZCkucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZShyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF91cGRhdGVWYWx1ZShyZXM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLlNldHRpbmcuVmlld1R5cGUgIT09ICdMaW5lYXJMaXN0Qm94Jykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTaW5nbGVDb250cm9sKHJlc1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maXJlQ29udGV4dEV2ZW50KCdDaGFuZ2UnLCB0aGlzLmNvbnRleHQsIHJlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTaW5nbGVDb250cm9sKHZhbDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChpc0ltYWdlKHZhbC5UeXBlKSkge1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVGaWxlVGh1bWJuYWlsVXJsID0gZ2V0SW1hZ2VQYXRoKCdJRCcsICcnLCB2YWwuSWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVGaWxlVGh1bWJuYWlsVXJsID0gZ2V0SWNvbih2YWwuVHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBfaGlkZU1hc2soKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suVW5tYXNrKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICp1bnRpbEluVmlldz1cImVsXCI+XHJcbiAgICA8ZmQtdG9vbGJhciBbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiIFtzaG91bGRPdmVyZmxvd109XCJ0cnVlXCIgKm5nSWY9XCIoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpICE9PSB0cnVlXCI+XHJcbiAgICAgICAgPGZkLWZpbGUtdXBsb2FkZXJcclxuICAgICAgICAgICAgI3VwbG9hZGVyXHJcbiAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBbaWRdPVwiaWRcIlxyXG4gICAgICAgICAgICBbbmFtZV09XCIncGRmXycgKyBpZFwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQXR0YWNoRmlsZScgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbYnV0dG9uTGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2J1dHRvbkFyaWFMYWJlbF09XCInQXR0YWNoRmlsZScgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbYWNjZXB0XT1cInZhbGlkRXh0ZW5zaW9uXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWxlc1wiXHJcbiAgICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIChzZWxlY3RlZEZpbGVzQ2hhbmdlZCk9XCJvbkZpbGVTZWxlY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtjb250ZW50RGVuc2l0eV09XCIoY29udGVudERlbnNpdHkkIHwgYXN5bmMpISFcIlxyXG4gICAgICAgID48L2ZkLWZpbGUtdXBsb2FkZXI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGdseXBoPVwiYXR0YWNobWVudFwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuVXBsb2FkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInVwbG9hZGVyLm9wZW4oKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoY2FuRGVsZXRlICYmIHZhbHVlKVwiXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgY2xhc3M9XCJkZWxldGVcIlxyXG4gICAgICAgICAgICBnbHlwaD1cImRlbGV0ZVwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZSgpXCJcclxuICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImNhbkVkaXRcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIGdseXBoPVwiZWRpdFwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXQoKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJjYW5Eb3dubG9hZFwiXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZ2x5cGg9XCJkb3dubG9hZFwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkRvd25sb2FkKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cInVzZVdvcmRFZGl0b3JcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIGdseXBoPVwiZG9jLWF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ0VkaXRJbldvcmQnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdEluV29yZCgpXCJcclxuICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cIm9mZmljZU9ubGluZVwiXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgZ2x5cGg9XCJkb2MtYXR0YWNobWVudFwiXHJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInT2ZmaWNlT25saW5lJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk9mZmljZU9ubGluZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBmZC10b29sYmFyLWl0ZW0gZmQtYnV0dG9uIGdseXBoPVwicmVmcmVzaFwiIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiIChjbGljayk9XCJvblJlZnJlc2goKVwiPjwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIih1cGxvYWRpbmdTdGF0ZSQgfCBhc3luYyk/LnVwbG9hZGluZyA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgPjwvZmQtYnVzeS1pbmRpY2F0b3I+XHJcbiAgICA8L2ZkLXRvb2xiYXI+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJpc01vYmlsZTsgZWxzZSBicm93c2VyUGRmXCJcclxuICAgICAgICBbc3R5bGUuYm9yZGVyXT1cIiFibG9iVXJsID8gJy4wNjI1cmVtIHNvbGlkIHZhcigtLXNhcEdyb3VwX1RpdGxlQm9yZGVyQ29sb3IpJyA6IG51bGxcIlxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDcwdmggLSA0MHB4KTsgcG9zaXRpb246IHJlbGF0aXZlXCJcclxuICAgID5cclxuICAgICAgICA8bmcyLXBkZmpzLXZpZXdlclxyXG4gICAgICAgICAgICAjcGRmVmlld2VyT25EZW1hbmRcclxuICAgICAgICAgICAgW2V4dGVybmFsV2luZG93XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2Rvd25sb2FkRmlsZU5hbWVdPVwiYmxvYlVybFwiXHJcbiAgICAgICAgICAgIFtvcGVuRmlsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFt2aWV3Qm9va21hcmtdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbc2hvd1NwaW5uZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtkb3dubG9hZF09XCJ0cnVlXCJcclxuICAgICAgICA+PC9uZzItcGRmanMtdmlld2VyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Jyb3dzZXJQZGY+XHJcbiAgICAgICAgPG9iamVjdFxyXG4gICAgICAgICAgICAqbmdJZj1cImhhc1BkZjsgZWxzZSBIYXRjaEJhY2tncm91bmRcIlxyXG4gICAgICAgICAgICBzdHlsZT1cImZsZXgtZ3JvdzogMVwiXHJcbiAgICAgICAgICAgIFthdHRyLmRhdGFdPVwidmFsdWVVcmxcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYXBwbGljYXRpb24vcGRmXCJcclxuICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJmb3JtSGVpZ2h0IC0gMzAgPiAwID8gZm9ybUhlaWdodCAtIDMwICsgJ3B4JyA6ICcxMDB2aCdcIlxyXG4gICAgICAgICAgICBbYXR0ci5odG1sXT1cImZhbGxiYWNrTGlua1wiXHJcbiAgICAgICAgPjwvb2JqZWN0PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI0hhdGNoQmFja2dyb3VuZD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2luZ2xlQ29udHJvbCAmJiB2YWx1ZSAmJiAhdmFsdWUuSXNEZWxldGVkOyBlbHNlIG5vRmlsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInNpbmdsZUZpbGVUaHVtYm5haWxVcmxcIiBbc3JjXT1cInNpbmdsZUZpbGVUaHVtYm5haWxVcmxcIiAvPlxyXG4gICAgICAgICAgICAgICAgPGZkLW9iamVjdC1pZGVudGlmaWVyPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHZhbHVlLkZpbGVOYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L2ZkLW9iamVjdC1pZGVudGlmaWVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vRmlsZT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhhdGNoQmFja2dyb3VuZFwiPjwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
|
|
@@ -6827,10 +6827,10 @@ class UiPdfViewerComponent extends DeviceInfoFieldBaseComponent {
|
|
|
6827
6827
|
}
|
|
6828
6828
|
}
|
|
6829
6829
|
UiPdfViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPdfViewerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
6830
|
-
UiPdfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPdfViewerComponent, selector: "bsu-ui-pdf-viewer", providers: [UploadService], viewQueries: [{ propertyName: "_pdfViewerOnDemand", first: true, predicate: ["pdfViewerOnDemand"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\n <fd-toolbar [transparent]=\"true\" [shouldOverflow]=\"true\" *ngIf=\"(disableOrReadonly$ | async) !== true\">\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"id\"\n [name]=\"'pdf_' + id\"\n [placeholder]=\"'AttachFile' | bbbTranslate\"\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\n [accept]=\"validExtension\"\n [(ngModel)]=\"files\"\n [multiple]=\"false\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n [contentDensity]=\"(contentDensity$ | async)!!\"\n ></fd-file-uploader>\n <button\n fd-button\n fd-toolbar-item\n glyph=\"attachment\"\n [fdType]=\"'transparent'\"\n [disabled]=\"!canUpload\"\n (click)=\"uploader.open()\"\n ></button>\n <button\n [disabled]=\"!(canDelete && value)\"\n fd-button\n fd-toolbar-item\n class=\"delete\"\n glyph=\"delete\"\n [fdType]=\"'transparent'\"\n (click)=\"onDelete()\"\n ></button>\n <button\n *ngIf=\"canEdit\"\n fd-toolbar-item\n fd-button\n glyph=\"edit\"\n [fdType]=\"'transparent'\"\n (click)=\"onEdit()\"\n ></button>\n <button\n *ngIf=\"canDownload\"\n fd-toolbar-item\n fd-button\n glyph=\"download\"\n [fdType]=\"'transparent'\"\n (click)=\"onDownload()\"\n ></button>\n\n <button\n *ngIf=\"useWordEditor\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'EditInWord' | bbbTranslate\"\n (click)=\"onEditInWord()\"\n ></button>\n <button\n *ngIf=\"officeOnline\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'OfficeOnline' | bbbTranslate\"\n (click)=\"onOfficeOnline($event)\"\n ></button>\n <button fd-toolbar-item fd-button glyph=\"refresh\" [fdType]=\"'transparent'\" (click)=\"onRefresh()\"></button>\n\n <fd-busy-indicator\n fd-toolbar-item\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\n ></fd-busy-indicator>\n </fd-toolbar>\n <div\n *ngIf=\"isMobile; else browserPdf\"\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\n style=\"height: calc(70vh - 40px); position: relative\"\n >\n <ng2-pdfjs-viewer\n #pdfViewerOnDemand\n [externalWindow]=\"false\"\n [downloadFileName]=\"blobUrl\"\n [openFile]=\"false\"\n [viewBookmark]=\"false\"\n [showSpinner]=\"true\"\n [download]=\"true\"\n ></ng2-pdfjs-viewer>\
|
|
6830
|
+
UiPdfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPdfViewerComponent, selector: "bsu-ui-pdf-viewer", providers: [UploadService], viewQueries: [{ propertyName: "_pdfViewerOnDemand", first: true, predicate: ["pdfViewerOnDemand"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\r\n <fd-toolbar [transparent]=\"true\" [shouldOverflow]=\"true\" *ngIf=\"(disableOrReadonly$ | async) !== 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 <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 <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 <button\r\n *ngIf=\"canEdit\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"edit\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onEdit()\"\r\n ></button>\r\n <button\r\n *ngIf=\"canDownload\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"download\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"useWordEditor\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'EditInWord' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n <button\r\n *ngIf=\"officeOnline\"\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 <button fd-toolbar-item fd-button glyph=\"refresh\" [fdType]=\"'transparent'\" (click)=\"onRefresh()\"></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 <div\r\n *ngIf=\"isMobile; else browserPdf\"\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n <ng2-pdfjs-viewer\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 <ng-template #browserPdf>\r\n <object\r\n *ngIf=\"hasPdf; else HatchBackground\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n </ng-template>\r\n\r\n <ng-template #HatchBackground>\r\n <ng-container *ngIf=\"singleControl && value && !value.IsDeleted; else noFile\">\r\n <div style=\"display: flex\">\r\n <img *ngIf=\"singleFileThumbnailUrl\" [src]=\"singleFileThumbnailUrl\" />\r\n <fd-object-identifier>\r\n {{ value.FileName }}\r\n </fd-object-identifier>\r\n </div>\r\n </ng-container>\r\n <ng-template #noFile>\r\n <div class=\"hatchBackground\"></div>\r\n </ng-template>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;min-height:70vh}: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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "component", type: i4$2.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i3$1.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6$5.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: i7$8.ObjectIdentifierComponent, selector: "fd-object-identifier", inputs: ["description", "bold", "medium"] }, { kind: "component", type: i7$1.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i7$1.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i9$3.PdfJsViewerComponent, selector: "ng2-pdfjs-viewer", inputs: ["viewerId", "viewerFolder", "externalWindow", "showSpinner", "downloadFileName", "openFile", "download", "startDownload", "viewBookmark", "print", "startPrint", "fullScreen", "find", "zoom", "nameddest", "pagemode", "lastPage", "rotatecw", "rotateccw", "cursor", "scroll", "spread", "locale", "useOnlyCssZoom", "errorOverride", "errorAppend", "errorMessage", "diagnosticLogs", "externalWindowOptions", "page", "pdfSrc"], outputs: ["onBeforePrint", "onAfterPrint", "onDocumentLoad", "onPageChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6831
6831
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPdfViewerComponent, decorators: [{
|
|
6832
6832
|
type: Component,
|
|
6833
|
-
args: [{ selector: 'bsu-ui-pdf-viewer', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *untilInView=\"el\">\n <fd-toolbar [transparent]=\"true\" [shouldOverflow]=\"true\" *ngIf=\"(disableOrReadonly$ | async) !== true\">\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"id\"\n [name]=\"'pdf_' + id\"\n [placeholder]=\"'AttachFile' | bbbTranslate\"\n [buttonLabel]=\"'AttachFile' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachFile' | bbbTranslate\"\n [accept]=\"validExtension\"\n [(ngModel)]=\"files\"\n [multiple]=\"false\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n [contentDensity]=\"(contentDensity$ | async)!!\"\n ></fd-file-uploader>\n <button\n fd-button\n fd-toolbar-item\n glyph=\"attachment\"\n [fdType]=\"'transparent'\"\n [disabled]=\"!canUpload\"\n (click)=\"uploader.open()\"\n ></button>\n <button\n [disabled]=\"!(canDelete && value)\"\n fd-button\n fd-toolbar-item\n class=\"delete\"\n glyph=\"delete\"\n [fdType]=\"'transparent'\"\n (click)=\"onDelete()\"\n ></button>\n <button\n *ngIf=\"canEdit\"\n fd-toolbar-item\n fd-button\n glyph=\"edit\"\n [fdType]=\"'transparent'\"\n (click)=\"onEdit()\"\n ></button>\n <button\n *ngIf=\"canDownload\"\n fd-toolbar-item\n fd-button\n glyph=\"download\"\n [fdType]=\"'transparent'\"\n (click)=\"onDownload()\"\n ></button>\n\n <button\n *ngIf=\"useWordEditor\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'EditInWord' | bbbTranslate\"\n (click)=\"onEditInWord()\"\n ></button>\n <button\n *ngIf=\"officeOnline\"\n fd-toolbar-item\n fd-button\n glyph=\"doc-attachment\"\n [fdType]=\"'transparent'\"\n [label]=\"'OfficeOnline' | bbbTranslate\"\n (click)=\"onOfficeOnline($event)\"\n ></button>\n <button fd-toolbar-item fd-button glyph=\"refresh\" [fdType]=\"'transparent'\" (click)=\"onRefresh()\"></button>\n\n <fd-busy-indicator\n fd-toolbar-item\n [loading]=\"(uploadingState$ | async)?.uploading === true\"\n ></fd-busy-indicator>\n </fd-toolbar>\n <div\n *ngIf=\"isMobile; else browserPdf\"\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\n style=\"height: calc(70vh - 40px); position: relative\"\n >\n <ng2-pdfjs-viewer\n #pdfViewerOnDemand\n [externalWindow]=\"false\"\n [downloadFileName]=\"blobUrl\"\n [openFile]=\"false\"\n [viewBookmark]=\"false\"\n [showSpinner]=\"true\"\n [download]=\"true\"\n ></ng2-pdfjs-viewer>\
|
|
6833
|
+
args: [{ selector: 'bsu-ui-pdf-viewer', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *untilInView=\"el\">\r\n <fd-toolbar [transparent]=\"true\" [shouldOverflow]=\"true\" *ngIf=\"(disableOrReadonly$ | async) !== 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 <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 <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 <button\r\n *ngIf=\"canEdit\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"edit\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onEdit()\"\r\n ></button>\r\n <button\r\n *ngIf=\"canDownload\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"download\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onDownload()\"\r\n ></button>\r\n\r\n <button\r\n *ngIf=\"useWordEditor\"\r\n fd-toolbar-item\r\n fd-button\r\n glyph=\"doc-attachment\"\r\n [fdType]=\"'transparent'\"\r\n [label]=\"'EditInWord' | bbbTranslate\"\r\n (click)=\"onEditInWord()\"\r\n ></button>\r\n <button\r\n *ngIf=\"officeOnline\"\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 <button fd-toolbar-item fd-button glyph=\"refresh\" [fdType]=\"'transparent'\" (click)=\"onRefresh()\"></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 <div\r\n *ngIf=\"isMobile; else browserPdf\"\r\n [style.border]=\"!blobUrl ? '.0625rem solid var(--sapGroup_TitleBorderColor)' : null\"\r\n style=\"height: calc(70vh - 40px); position: relative\"\r\n >\r\n <ng2-pdfjs-viewer\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 <ng-template #browserPdf>\r\n <object\r\n *ngIf=\"hasPdf; else HatchBackground\"\r\n style=\"flex-grow: 1\"\r\n [attr.data]=\"valueUrl\"\r\n type=\"application/pdf\"\r\n width=\"100%\"\r\n [style.height]=\"formHeight - 30 > 0 ? formHeight - 30 + 'px' : '100vh'\"\r\n [attr.html]=\"fallbackLink\"\r\n ></object>\r\n </ng-template>\r\n\r\n <ng-template #HatchBackground>\r\n <ng-container *ngIf=\"singleControl && value && !value.IsDeleted; else noFile\">\r\n <div style=\"display: flex\">\r\n <img *ngIf=\"singleFileThumbnailUrl\" [src]=\"singleFileThumbnailUrl\" />\r\n <fd-object-identifier>\r\n {{ value.FileName }}\r\n </fd-object-identifier>\r\n </div>\r\n </ng-container>\r\n <ng-template #noFile>\r\n <div class=\"hatchBackground\"></div>\r\n </ng-template>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;min-height:70vh}: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"] }]
|
|
6834
6834
|
}], propDecorators: { _pdfViewerOnDemand: [{
|
|
6835
6835
|
type: ViewChild,
|
|
6836
6836
|
args: ['pdfViewerOnDemand']
|