ngx-rendering-service-lib 0.0.66868 → 0.0.66870
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/module/pdf/pdf.component.mjs +8 -6
- package/esm2022/lib/render.component.mjs +1 -2
- package/esm2022/lib/rendering.module.mjs +2 -2
- package/fesm2022/ngx-rendering-service-lib.mjs +5 -4
- package/fesm2022/ngx-rendering-service-lib.mjs.map +1 -1
- package/lib/module/pdf/pdf.component.d.ts +2 -2
- package/package.json +1 -1
|
@@ -3,8 +3,8 @@ import { RenderingModule } from '../../rendering.module';
|
|
|
3
3
|
import { MatIconModule } from '@angular/material/icon';
|
|
4
4
|
import { MatButtonModule } from '@angular/material/button';
|
|
5
5
|
import { RENDERING_SERVICE_LIB_CONFIG } from '../../../rendering-service-lib-configuration';
|
|
6
|
-
import { NgxExtendedPdfViewerComponent, NgxExtendedPdfViewerModule, pdfDefaultOptions } from
|
|
7
|
-
import { NodesRightMode } from
|
|
6
|
+
import { NgxExtendedPdfViewerComponent, NgxExtendedPdfViewerModule, pdfDefaultOptions } from 'ngx-extended-pdf-viewer';
|
|
7
|
+
import { NodesRightMode } from 'ngx-edu-sharing-ui';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "ngx-rendering-service-api";
|
|
10
10
|
import * as i2 from "ngx-edu-sharing-ui";
|
|
@@ -17,7 +17,9 @@ export class PdfComponent {
|
|
|
17
17
|
this.nodeHelper = nodeHelper;
|
|
18
18
|
this.configuration = configuration;
|
|
19
19
|
this.restrictedView = false;
|
|
20
|
-
|
|
20
|
+
if (configuration && configuration.assetsUrl) {
|
|
21
|
+
pdfDefaultOptions.assetsFolder = (configuration?.assetsUrl || '') + '/ngx-extended-pdf-viewer';
|
|
22
|
+
}
|
|
21
23
|
}
|
|
22
24
|
ngOnChanges(changes) {
|
|
23
25
|
if (this.nodeHelper.getNodesRight([this.node], 'DownloadContent', NodesRightMode.Effective)) {
|
|
@@ -72,7 +74,7 @@ export class PdfComponent {
|
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
76
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PdfComponent, deps: [{ token: i1.AssetControllerService }, { token: i2.NodeHelperService }, { token: RENDERING_SERVICE_LIB_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: PdfComponent, isStandalone: true, selector: "rs-module-pdf", inputs: { data: "data", node: "node" }, host: { listeners: { "window:keydown.control.s": "handleShortCutEvents($event)", "window:keydown.F12": "handleShortCutEvents($event)", "window:contextmenu": "handleContextMenu($event)" } }, viewQueries: [{ propertyName: "pdfViewer", first: true, predicate: NgxExtendedPdfViewerComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'100vh'\"\n [showSecondaryToolbarButton]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.pdf-wrapper{width:100%;height:100%}@media print{.hide-all *{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i4.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "forceFullReloadOfJavaScriptCode", "showTextEditor", "showStampEditor", "showDrawEditor", "showHighlightEditor", "logLevel", "relativeCoordsOptions", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }] }); }
|
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: PdfComponent, isStandalone: true, selector: "rs-module-pdf", inputs: { data: "data", node: "node" }, host: { listeners: { "window:keydown.control.s": "handleShortCutEvents($event)", "window:keydown.F12": "handleShortCutEvents($event)", "window:contextmenu": "handleContextMenu($event)" } }, viewQueries: [{ propertyName: "pdfViewer", first: true, predicate: NgxExtendedPdfViewerComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [sidebarVisible]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'100vh'\"\n [showSecondaryToolbarButton]=\"false\"\n [showStampEditor]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.pdf-wrapper{width:100%;height:100%}@media print{.hide-all *{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i4.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "forceFullReloadOfJavaScriptCode", "showTextEditor", "showStampEditor", "showDrawEditor", "showHighlightEditor", "logLevel", "relativeCoordsOptions", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }] }); }
|
|
76
78
|
}
|
|
77
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PdfComponent, decorators: [{
|
|
78
80
|
type: Component,
|
|
@@ -81,7 +83,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
81
83
|
MatButtonModule,
|
|
82
84
|
MatIconModule,
|
|
83
85
|
NgxExtendedPdfViewerModule
|
|
84
|
-
], template: "<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'100vh'\"\n [showSecondaryToolbarButton]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.pdf-wrapper{width:100%;height:100%}@media print{.hide-all *{display:none!important}}\n"] }]
|
|
86
|
+
], template: "<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [sidebarVisible]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'100vh'\"\n [showSecondaryToolbarButton]=\"false\"\n [showStampEditor]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.pdf-wrapper{width:100%;height:100%}@media print{.hide-all *{display:none!important}}\n"] }]
|
|
85
87
|
}], ctorParameters: () => [{ type: i1.AssetControllerService }, { type: i2.NodeHelperService }, { type: i5.RenderingServiceLibConfiguration, decorators: [{
|
|
86
88
|
type: Optional
|
|
87
89
|
}, {
|
|
@@ -104,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
104
106
|
type: HostListener,
|
|
105
107
|
args: ['window:contextmenu', ['$event']]
|
|
106
108
|
}] } });
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxlL3BkZi9wZGYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvcGRmL3BkZi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFFUixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3ZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFHekQsT0FBTyxFQUNMLDRCQUE0QixFQUU3QixNQUFNLDhDQUE4QyxDQUFDO0FBQ3RELE9BQU8sRUFBQyw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JILE9BQU8sRUFBb0IsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFjckUsTUFBTSxPQUFPLFlBQVk7SUFPdkIsWUFDVSxzQkFBOEMsRUFDOUMsVUFBNkIsRUFDb0IsYUFBK0M7UUFGaEcsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUNvQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0M7UUFOMUcsbUJBQWMsR0FBWSxLQUFLLENBQUE7UUFRN0IsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdDLGlCQUFpQixDQUFDLFlBQVksR0FBRyxDQUFDLGFBQWEsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDLEdBQUcsMEJBQTBCLENBQUE7UUFDaEcsQ0FBQztJQUNI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cUJBQzNCOzswQkFjRSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLDRCQUE0Qjt5Q0FUUixTQUFTO3NCQUFsRCxTQUFTO3VCQUFDLDZCQUE2QjtnQkFDL0IsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFnRE4sb0JBQW9CO3NCQUZuQixZQUFZO3VCQUFDLDBCQUEwQixFQUFHLENBQUMsUUFBUSxDQUFDOztzQkFDcEQsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRyxDQUFDLFFBQVEsQ0FBQztnQkFhL0MsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JlbmRlcmluZ01vZHVsZX0gZnJvbSAnLi4vLi4vcmVuZGVyaW5nLm1vZHVsZSc7XG5pbXBvcnQge1JlbmRlck1vZHVsZX0gZnJvbSAnLi4vUmVuZGVyTW9kdWxlJztcbmltcG9ydCB7Tm9kZX0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge1JlbmRlckRhdGF9IGZyb20gJy4uLy4uL2R0by9SZW5kZXJEYXRhJztcbmltcG9ydCB7QXNzZXRDb250cm9sbGVyU2VydmljZSwgR2V0QXNzZXQkUGFyYW1zfSBmcm9tICduZ3gtcmVuZGVyaW5nLXNlcnZpY2UtYXBpJztcbmltcG9ydCB7XG4gIFJFTkRFUklOR19TRVJWSUNFX0xJQl9DT05GSUcsXG4gIFJlbmRlcmluZ1NlcnZpY2VMaWJDb25maWd1cmF0aW9uXG59IGZyb20gJy4uLy4uLy4uL3JlbmRlcmluZy1zZXJ2aWNlLWxpYi1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7Tmd4RXh0ZW5kZWRQZGZWaWV3ZXJDb21wb25lbnQsIE5neEV4dGVuZGVkUGRmVmlld2VyTW9kdWxlLCBwZGZEZWZhdWx0T3B0aW9uc30gZnJvbSAnbmd4LWV4dGVuZGVkLXBkZi12aWV3ZXInO1xuaW1wb3J0IHtOb2RlSGVscGVyU2VydmljZSwgTm9kZXNSaWdodE1vZGV9IGZyb20gJ25neC1lZHUtc2hhcmluZy11aSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JzLW1vZHVsZS1wZGYnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUmVuZGVyaW5nTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE5neEV4dGVuZGVkUGRmVmlld2VyTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wZGYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcGRmLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBQZGZDb21wb25lbnQgaW1wbGVtZW50cyBSZW5kZXJNb2R1bGUsIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoTmd4RXh0ZW5kZWRQZGZWaWV3ZXJDb21wb25lbnQpIHBkZlZpZXdlciE6IE5neEV4dGVuZGVkUGRmVmlld2VyQ29tcG9uZW50O1xuICBASW5wdXQoKSBkYXRhOiBSZW5kZXJEYXRhIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIG5vZGU6IE5vZGUgfCB1bmRlZmluZWRcbiAgcmVzdHJpY3RlZFZpZXc6IGJvb2xlYW4gPSBmYWxzZVxuICBmaWxlRGF0YTogVWludDhBcnJheSB8IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFzc2V0Q29udHJvbGxlclNlcnZpY2U6IEFzc2V0Q29udHJvbGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub2RlSGVscGVyOiBOb2RlSGVscGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFJFTkRFUklOR19TRVJWSUNFX0xJQl9DT05GSUcpIHB1YmxpYyBjb25maWd1cmF0aW9uOiBSZW5kZXJpbmdTZXJ2aWNlTGliQ29uZmlndXJhdGlvbixcbiAgKSB7XG4gICAgaWYgKGNvbmZpZ3VyYXRpb24gJiYgY29uZmlndXJhdGlvbi5hc3NldHNVcmwpIHtcbiAgICAgIHBkZkRlZmF1bHRPcHRpb25zLmFzc2V0c0ZvbGRlciA9IChjb25maWd1cmF0aW9uPy5hc3NldHNVcmwgfHwgJycpICsgJy9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlcidcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMubm9kZUhlbHBlci5nZXROb2Rlc1JpZ2h0KFt0aGlzLm5vZGUhXSwgJ0Rvd25sb2FkQ29udGVudCcsIE5vZGVzUmlnaHRNb2RlLkVmZmVjdGl2ZSkpIHtcbiAgICAgIHRoaXMuZmlsZURhdGEgPSB0aGlzLmRhdGE/Lml0ZW1zPy5bMF0/LmxpbmsgPz8gJydcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXN0cmljdGVkVmlldyA9IHRydWVcbiAgICAgIHRoaXMuZG93bmxvYWRGaWxlKClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkRmlsZSgpIHtcbiAgICBpZiAodGhpcy5kYXRhPy5pdGVtcyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZGF0YS5pdGVtc1swXS5saW5rID09PSAnJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodGhpcy5kYXRhLml0ZW1zWzBdLmxpbmspXG4gICAgY29uc3QgYXNzZXRQYXJhbXMgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgnYXNzZXRQYXJhbXMnKVxuICAgIGlmIChhc3NldFBhcmFtcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHBhcmFtczogR2V0QXNzZXQkUGFyYW1zID0ge1xuICAgICAgYXNzZXRQYXJhbXM6IGFzc2V0UGFyYW1zXG4gICAgfVxuICAgIHRoaXMuYXNzZXRDb250cm9sbGVyU2VydmljZS5nZXRBc3NldCRSZXNwb25zZShwYXJhbXMpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykgIT09ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCByZXNwb25zZS5ib2R5LmFycmF5QnVmZmVyKCk7XG4gICAgICAgICAgdGhpcy5maWxlRGF0YSA9IG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKTtcbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uY29udHJvbC5zJywgIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLkYxMicsICBbJyRldmVudCddKVxuICBoYW5kbGVTaG9ydEN1dEV2ZW50cyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLnJlc3RyaWN0ZWRWaWV3KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbikge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpjb250ZXh0bWVudScsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUNvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMucmVzdHJpY3RlZFZpZXcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAoZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKSB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwicGRmLXdyYXBwZXJcIlxuICBbY2xhc3MuaGlkZS1hbGxdPVwicmVzdHJpY3RlZFZpZXdcIlxuICAqbmdJZj1cImZpbGVEYXRhICE9PSB1bmRlZmluZWRcIlxuPlxuICA8bmd4LWV4dGVuZGVkLXBkZi12aWV3ZXJcbiAgICBbc3JjXT1cImZpbGVEYXRhXCJcbiAgICBbc2hvd1ByaW50QnV0dG9uXT1cIiFyZXN0cmljdGVkVmlld1wiXG4gICAgW3Nob3dEb3dubG9hZEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgW3Nob3dPcGVuRmlsZUJ1dHRvbl09XCJmYWxzZVwiXG4gICAgW3RleHRMYXllcl09XCIhcmVzdHJpY3RlZFZpZXdcIlxuICAgIFtlbmFibGVQcmludF09XCIhcmVzdHJpY3RlZFZpZXdcIlxuICAgIFtzaG93Qm9va01vZGVCdXR0b25dPVwiZmFsc2VcIlxuICAgIFtzaG93RmluZEhpZ2hsaWdodEFsbF09XCJmYWxzZVwiXG4gICAgW3Nob3dEcmF3RWRpdG9yXT1cImZhbHNlXCJcbiAgICBbc2lkZWJhclZpc2libGVdPVwiZmFsc2VcIlxuICAgIFtzaG93SGlnaGxpZ2h0RWRpdG9yXT1cImZhbHNlXCJcbiAgICBbc2hvd1RleHRFZGl0b3JdPVwiZmFsc2VcIlxuICAgIFtoZWlnaHRdPVwiJzEwMHZoJ1wiXG4gICAgW3Nob3dTZWNvbmRhcnlUb29sYmFyQnV0dG9uXT1cImZhbHNlXCJcbiAgICBbc2hvd1N0YW1wRWRpdG9yXT1cImZhbHNlXCJcbiAgPlxuICA8L25neC1leHRlbmRlZC1wZGYtdmlld2VyPlxuPC9kaXY+XG4iXX0=
|
|
@@ -101,7 +101,6 @@ export class RenderComponent {
|
|
|
101
101
|
}
|
|
102
102
|
async ngOnInit() {
|
|
103
103
|
if (this.assetUrl !== '') {
|
|
104
|
-
console.info('setting assetUrl to: ' + this.assetUrl + '');
|
|
105
104
|
this.configuration.assetsUrl = this.assetUrl;
|
|
106
105
|
}
|
|
107
106
|
if (!this.activateServiceWorker) {
|
|
@@ -278,4 +277,4 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.2.6", ng
|
|
|
278
277
|
}], assetUrl: [{
|
|
279
278
|
type: Input
|
|
280
279
|
}] } }) });
|
|
281
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcmVuZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9saWIvcmVuZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFRbkQsT0FBTyxFQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU1RyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsbUJBQW1CLEVBQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU1wRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFPdEMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQsT0FBTyxFQUFDLDRCQUE0QixFQUFtQyxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7OztBQTZCdEgsTUFBTSxPQUFPLGVBQWU7SUFhMUIsWUFDVSx1QkFBdUQsRUFDdkQsd0JBQWtELEVBQ2xELGlCQUFvQyxFQUNwQyxnQkFBa0MsRUFDZSxhQUErQztRQUpoRyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWdDO1FBQ3ZELDZCQUF3QixHQUF4Qix3QkFB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Ozs4QkFzQkUsUUFBUTs7OEJBQUksTUFBTTsrQkFBQyw0QkFBNEI7NkNBakJ6QyxPQUFPOzBCQUFmLEtBQUs7b0JBQ0csSUFBSTswQkFBWixLQUFLO29CQUNHLGdCQUFnQjswQkFBeEIsS0FBSztvQkFDRyxxQkFBcUI7MEJBQTdCLEtBQUs7b0JBQ0csUUFBUTswQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3B0aW9uYWwsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSZW5kZXJpbmdNb2R1bGV9IGZyb20gJy4vcmVuZGVyaW5nLm1vZHVsZSc7XG5pbXBvcnQge1xuICBKb2JJbmZvQ29udHJvbGxlclNlcnZpY2UsXG4gIEpvYkluZm9SZXBseSxcbiAgUmVuZGVyQ29udHJvbGxlcldyYXBwZXJTZXJ2aWNlLFxuICBSZW5kZXJEYXRhUmVxdWVzdFdpdGhUb2tlbixcbiAgUmVuZGVyRGF0YVJlc3BvbnNlXG59IGZyb20gJ25neC1yZW5kZXJpbmctc2VydmljZS1hcGknO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZmlyc3RWYWx1ZUZyb20sIGludGVydmFsLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ltYWdlQ29tcG9uZW50fSBmcm9tICcuL21vZHVsZS9pbWFnZS9pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHtSZW5kZXJpbmdBcGlNb2R1bGV9IGZyb20gJy4vcmVuZGVyaW5nLWFwaS5tb2R1bGUnO1xuaW1wb3J0IHtWaWRlb0NvbXBvbmVudH0gZnJvbSAnLi9tb2R1bGUvdmlkZW8vdmlkZW8uY29tcG9uZW50JztcbmltcG9ydCB7TWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7RWR1U2hhcmluZ0FwaU1vZHVsZSwgTm9kZX0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG5pbXBvcnQge01hdFByb2dyZXNzQmFyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHtBc3NldFN0YXRlSXRlbSwgUmVuZGVyRGF0YX0gZnJvbSAnLi9kdG8vUmVuZGVyRGF0YSc7XG5pbXBvcnQge1BkZkNvbXBvbmVudH0gZnJvbSAnLi9tb2R1bGUvcGRmL3BkZi5jb21wb25lbnQnO1xuaW1wb3J0IHtVcmxDb21wb25lbnR9IGZyb20gJy4vbW9kdWxlL3VybC91cmwuY29tcG9uZW50JztcbmltcG9ydCB7RWR1SHRtbENvbXBvbmVudH0gZnJvbSAnLi9tb2R1bGUvZWR1aHRtbC9lZHVIdG1sLmNvbXBvbmVudCc7XG5pbXBvcnQge01vZHVsZUluZm9TZXJ2aWNlfSBmcm9tICcuLi9tb2R1bGUtaW5mby5zZXJ2aWNlJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BsYXRmb3JtTG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0RlZmF1bHRDb21wb25lbnR9IGZyb20gJy4vbW9kdWxlL2RlZmF1bHQvZGVmYXVsdC5jb21wb25lbnQnO1xuaW1wb3J0IHtGcm9udGVuZE1vZHVsZUNvbmZpZ30gZnJvbSAnLi9kdG8vRnJvbnRlbmRNb2R1bGVDb25maWcnO1xuaW1wb3J0IHtBdWRpb0NvbXBvbmVudH0gZnJvbSAnLi9tb2R1bGUvYXVkaW8vYXVkaW8uY29tcG9uZW50JztcbmltcG9ydCB7QmluZGVyQ29tcG9uZW50fSBmcm9tICcuL21vZHVsZS9iaW5kZXIvYmluZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0RkYkNvbXBvbmVudH0gZnJvbSAnLi9tb2R1bGUvZGRiL2RkYi5jb21wb25lbnQnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RWR1U2hhcmluZ1VpTW9kdWxlfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctdWknO1xuaW1wb3J0IHtFcnJvckNvbXBvbmVudH0gZnJvbSAnLi9tb2R1bGUvZXJyb3IvZXJyb3IuY29tcG9uZW50JztcbmltcG9ydCB7UkVOREVSSU5HX1NFUlZJQ0VfTElCX0NPTkZJRywgUmVuZGVyaW5nU2VydmljZUxpYkNvbmZpZ3VyYXRpb259IGZyb20gJy4uL3JlbmRlcmluZy1zZXJ2aWNlLWxpYi1jb25maWd1cmF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnMtcm9vdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZW5kZXJpbmdBcGlNb2R1bGUsXG4gICAgUmVuZGVyaW5nTW9kdWxlLFxuICAgIEltYWdlQ29tcG9uZW50LFxuICAgIFZpZGVvQ29tcG9uZW50LFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBQZGZDb21wb25lbnQsXG4gICAgVXJsQ29tcG9uZW50LFxuICAgIEVkdUh0bWxDb21wb25lbnQsXG4gICAgRGVmYXVsdENvbXBvbmVudCxcbiAgICBBdWRpb0NvbXBvbmVudCxcbiAgICBCaW5kZXJDb21wb25lbnQsXG4gICAgRGRiQ29tcG9uZW50LFxuICAgIEVkdVNoYXJpbmdBcGlNb2R1bGUsXG4gICAgRWR1U2hhcmluZ1VpTW9kdWxlLFxuICAgIEVycm9yQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBUcmFuc2xhdGVTZXJ2aWNlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZW5kZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcmVuZGVyLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBSZW5kZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHJlcXVlc3Q6IFJlbmRlckRhdGFSZXF1ZXN0V2l0aFRva2VuIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBub2RlOiBOb2RlIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZXJ2aWNlV29ya2VyVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGFjdGl2YXRlU2VydmljZVdvcmtlcjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGFzc2V0VXJsOiBzdHJpbmcgPSAnJztcbiAgc2VydmljZVdvcmtlclJlYWR5ID0gZmFsc2U7XG4gIGxvYWREYXRhID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVuZGVyRGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlbmRlckRhdGEgfCBudWxsPihudWxsKTtcbiAgZmluaXNoZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBzb21lQnV0Tm90QWxsRmluaXNoZWQgPSBuZXcgU3ViamVjdDxCb29sZWFuPigpXG4gIHByb2dyZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBtb2R1bGU6IHN0cmluZywgcHJvZ3Jlc3M/OiBudW1iZXIgfSB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyQ29udHJvbGxlclNlcnZpY2U6IFJlbmRlckNvbnRyb2xsZXJXcmFwcGVyU2VydmljZSxcbiAgICBwcml2YXRlIGpvYkluZm9Db250cm9sbGVyU2VydmljZTogSm9iSW5mb0NvbnRyb2xsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kdWxlSW5mb1NlcnZpY2U6IE1vZHVsZUluZm9TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvbixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFJFTkRFUklOR19TRVJWSUNFX0xJQl9DT05GSUcpIHB1YmxpYyBjb25maWd1cmF0aW9uOiBSZW5kZXJpbmdTZXJ2aWNlTGliQ29uZmlndXJhdGlvbixcbiAgKSB7XG4gICAgdGhpcy5sb2FkRGF0YS5waXBlKFxuICAgICAgZmlsdGVyKCgpID0+IHRoaXMubm9kZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VydmljZVdvcmtlclJlYWR5KSxcbiAgICAgIGRlYm91bmNlVGltZSgxMCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAvLyBzdWJzY3JpYmUgZXJyb3IgaGFuZGxpbmdcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tNb2R1bGUoKVxuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBhc3luYyAoZnJvbnRlbmRNb2R1bGUpID0+IHtcbiAgICAgICAgLy8gTm8gZnVydGhlciBjYWxscyB0byByczIgbmVjZXNzYXJ5IGlmIHdlIGhhdmUgYSBmcm9udGVuZCBvbmx5IG1vZHVsZVxuICAgICAgICBpZiAoZnJvbnRlbmRNb2R1bGUgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBSZW5kZXJEYXRhID0ge1xuICAgICAgICAgICAgbW9kdWxlOiBmcm9udGVuZE1vZHVsZS5tb2R1bGUsXG4gICAgICAgICAgICBmcm9udGVuZE1vZHVsZUNvbmZpZzogZnJvbnRlbmRNb2R1bGVcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZW5kZXJEYXRhJC5uZXh0KGRhdGEpXG4gICAgICAgICAgdGhpcy5maW5pc2hlZC5uZXh0KClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyUmVzcG9uc2VEYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yZW5kZXJDb250cm9sbGVyU2VydmljZS5nZXRSZW5kZXJEYXRhVG9rZW4odGhpcy5yZXF1ZXN0ISEpKVxuICAgICAgICAgICAgLy8gQ2FzZSAxOiBubyBqb2IgcmV0dXJuZWQgPT4gbm8gcG9sbGluZyBuZWVkZWRcbiAgICAgICAgICAgIGlmIChyZW5kZXJSZXNwb25zZURhdGEuam9iSWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZW5kZXJpbmdSZXNwb25zZVdpdGhvdXRKb2IocmVuZGVyUmVzcG9uc2VEYXRhKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyQubmV4dCh7bW9kdWxlOiByZW5kZXJSZXNwb25zZURhdGEubW9kdWxlID8/ICcnfSk7XG4gICAgICAgICAgICAgIGludGVydmFsKDUwMCkucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5maW5pc2hlZCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuam9iSW5mb0NvbnRyb2xsZXJTZXJ2aWNlLmdldEpvYkluZm8oe2pvYklkOiByZW5kZXJSZXNwb25zZURhdGEuam9iSWQhIX0pLnBpcGUoKSksXG4gICAgICAgICAgICAgICkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiBhc3luYyAoam9iSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gU29tZSwgYnV0IG5vdCBhbGwsIGpvYnMgYXJlIGluIGEgZmluYWwgc3RhdHVzICh0aGlzIG1lYW5zIHNvbWUgYXJlIHN0aWxsIFFVRVVFRCBvciBQUk9DRVNTSU5HKVxuICAgICAgICAgICAgICAgICAgaWYgKGpvYkluZm8uam9icy5zb21lKGogPT4gai5zdGF0dXMgPT09ICdGSU5JU0hFRCcpICYmIGpvYkluZm8uc3RhdHVzICE9PSAnRklOSVNIRUQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlSm9iSW5mb1dpdGhTdWJKb2JzSW5Qcm9ncmVzcyhyZW5kZXJSZXNwb25zZURhdGEsIGpvYkluZm8pXG4gICAgICAgICAgICAgICAgICAgIC8vIG1haW4gam9iIGZpbmlzaGVkIG9yIHBhcnRpYWxseSBmYWlsZWRcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoam9iSW5mby5zdGF0dXMgPT09ICdGSU5JU0hFRCcgfHwgam9iSW5mby5zdGF0dXMgPT09ICdQQVJUSUFMTFlfRkFJTEVEJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUZpbmlzaGVkT3JQYXJ0aWFsSm9iSW5mbyhyZW5kZXJSZXNwb25zZURhdGEsIGpvYkluZm8pXG4gICAgICAgICAgICAgICAgICAgIC8vIE1haW4gam9iIGZhaWxlZCA9PiBubyBtb2R1bGUgYnV0IGVycm9yIHBhZ2VcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoam9iSW5mby5zdGF0dXMgPT09ICdGQUlMRUQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRmFpbGVkTWFpbkpvYihqb2JJbmZvKVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm8gZmluaXNoZWQgam9icyAtPiBzaG93IGVpdGhlciBvbmUgcHJvZ3Jlc3MgYmFyIHdpdGggcmFjZSBsZWFkZXIgKHByb2dyZXNzIDAtMTAwKVxuICAgICAgICAgICAgICAgICAgICAvLyBvciBxdWV1ZSBwb3NpdGlvbiAocHJvZ3Jlc3MgKC1pbmYsLTFdKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU1haW5Kb2JXaXRoTm9TdWJKb2JJbkZpbmFsU3RhdHVzKGpvYkluZm8pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBcGlFcnJvcihlcnJvcilcbiAgICAgICAgICAgICAgICB9fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQXBpRXJyb3IoZXJyb3IpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUFwaUVycm9yKGVycm9yKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQXBpRXJyb3IoZXJyb3I6IGFueSkge1xuICAgIGNvbnN0IHB1YmxpY01lc3NhZ2UgPSBlcnJvci5lcnJvci51c2VyTWVzc2FnZSA/PyAnR0VORVJJQ19FUlJPUl9NRVNTQUdFJ1xuICAgIGNvbnN0IGRhdGE6IFJlbmRlckRhdGEgPSB7XG4gICAgICBtb2R1bGU6ICdFUlJPUicsXG4gICAgICBwdWJsaWNFcnJvck1lc3NhZ2U6IHB1YmxpY01lc3NhZ2VcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJEYXRhJC5uZXh0KGRhdGEpXG4gICAgdGhpcy5maW5pc2hlZC5uZXh0KClcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmFzc2V0VXJsICE9PSAnJykge1xuICAgICAgY29uc29sZS5pbmZvKCdzZXR0aW5nIGFzc2V0VXJsIHRvOiAnICsgdGhpcy5hc3NldFVybCArICcnKTtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5hc3NldHNVcmwgPSB0aGlzLmFzc2V0VXJsO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYWN0aXZhdGVTZXJ2aWNlV29ya2VyKSB7XG4gICAgICB0aGlzLnNlcnZpY2VXb3JrZXJSZWFkeSA9IHRydWU7XG4gICAgICB0aGlzLmxvYWREYXRhLm5leHQoKTtcbiAgICB9XG4gICAgLy8gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGlvbnNTZXJ2aWNlLmluaXRpYWxpemUoKSlcbiAgICBpZiAoJ3NlcnZpY2VXb3JrZXInIGluIG5hdmlnYXRvcikge1xuICAgICAgY29uc3QgcmVnID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9ucygpO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocmVnPy5tYXAoKHI6IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pID0+IHIudW5yZWdpc3RlcigpKSk7XG4gICAgICBjb25zdCBzZXJ2aWNlV29ya2VyVXJsID0gdGhpcy5zZXJ2aWNlV29ya2VyVXJsID8/ICh0aGlzLnBsYXRmb3JtTG9jYXRpb24uZ2V0QmFzZUhyZWZGcm9tRE9NKCkgKyAnZWR1LXNlcnZpY2Utd29ya2VyLmpzJyk7XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuc2VydmljZVdvcmtlclVybCA/ICcvJyA6IHRoaXMucGxhdGZvcm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKTtcbiAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKHNlcnZpY2VXb3JrZXJVcmwsIHtcbiAgICAgICAgc2NvcGU6IHNjb3BlXG4gICAgICB9KTtcbiAgICAgIGlmIChyZWdpc3RyYXRpb24ud2FpdGluZykge1xuICAgICAgICByZWdpc3RyYXRpb24ud2FpdGluZy5wb3N0TWVzc2FnZSh7dHlwZTogJ1NLSVBfV0FJVElORyd9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VydmljZVdvcmtlclJlYWR5ID0gdHJ1ZTtcbiAgICAgIHRoaXMubG9hZERhdGEubmV4dCgpO1xuICAgICAgcmVnaXN0cmF0aW9uLm9udXBkYXRlZm91bmQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1dvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nO1xuICAgICAgICBpZiAobmV3V29ya2VyKSB7XG4gICAgICAgICAgbmV3V29ya2VyLm9uc3RhdGVjaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAobmV3V29ya2VyLnN0YXRlID09PSAnaW5zdGFsbGVkJykge1xuICAgICAgICAgICAgICBpZiAobmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuY29udHJvbGxlcikge1xuICAgICAgICAgICAgICAgIG5ld1dvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogJ1NLSVBfV0FJVElORyd9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdjb250cm9sbGVyY2hhbmdlJywgKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmluZm8oJ1NlcnZpY2UgV29ya2VyIGNvbnRyb2xsaW5nIHRoaXMgcGFnZS4nKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignU2VydmljZSB3b3JrZXIgQVBJIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhfOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5sb2FkRGF0YS5uZXh0KCk7XG4gIH1cblxuICBhc3luYyBjaGVja01vZHVsZSgpOiBQcm9taXNlPEZyb250ZW5kTW9kdWxlQ29uZmlnIHwgbnVsbD4ge1xuICAgIGlmICghYXdhaXQgdGhpcy5tb2R1bGVJbmZvU2VydmljZS5pc0F2YWlsYWJsZUJhY2tlbmRPYmplY3QodGhpcy5ub2RlKSkge1xuICAgICAgaWYgKHRoaXMubm9kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUluZm9TZXJ2aWNlLmdldEZyb250ZW5kTW9kdWxlU2V0dGluZyh0aGlzLm5vZGUpXG4gICAgICB9XG4gICAgICByZXR1cm4ge21vZHVsZTogJ2RlZmF1bHQnLCB1cmxNb2R1bGVDb25maWc6IG51bGx9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlUmVuZGVyaW5nUmVzcG9uc2VXaXRob3V0Sm9iKHJlbmRlckRhdGFSZXNwb25zZTogUmVuZGVyRGF0YVJlc3BvbnNlKSB7XG4gICAgY29uc3QgaXRlbXMgPSByZW5kZXJEYXRhUmVzcG9uc2Uub2JqZWN0TGlua3M/Lm1hcChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGFzc2V0SXRlbTogQXNzZXRTdGF0ZUl0ZW0gPSB7XG4gICAgICAgIGxpbms6IGl0ZW0ubGluayxcbiAgICAgICAgcHJvZ3Jlc3M6IDEwMCxcbiAgICAgICAgaGVpZ2h0OiBpdGVtLmhlaWdodCxcbiAgICAgICAgd2lkdGg6IGl0ZW0ud2lkdGgsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB1bmRlZmluZWQsXG4gICAgICAgIHN0YXR1czogJ0ZJTklTSEVEJ1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFzc2V0SXRlbVxuICAgIH0pXG4gICAgY29uc3QgZGF0YTogUmVuZGVyRGF0YSA9IHtcbiAgICAgIG1vZHVsZTogcmVuZGVyRGF0YVJlc3BvbnNlLm1vZHVsZSA/PyAnJyxcbiAgICAgIGl0ZW1zOiBpdGVtc1xuICAgIH1cbiAgICByZW5kZXJEYXRhUmVzcG9uc2Uub2JqZWN0TGlua3MgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJlbmRlckRhdGEkLm5leHQoZGF0YSk7XG4gICAgdGhpcy5maW5pc2hlZC5uZXh0KCk7XG4gIH1cblxuICBoYW5kbGVKb2JJbmZvV2l0aFN1YkpvYnNJblByb2dyZXNzKHJlbmRlckRhdGFSZXNwb25zZTogUmVuZGVyRGF0YVJlc3BvbnNlLCBqb2JJbmZvOiBKb2JJbmZvUmVwbHkpIHtcbiAgICBjb25zdCBpdGVtcyA9IGpvYkluZm8uam9icy5tYXAoc3ViSm9iID0+IHtcbiAgICAgIGNvbnN0IGFzc2V0SXRlbTogQXNzZXRTdGF0ZUl0ZW0gPSB7XG4gICAgICAgIGxpbms6IHN1YkpvYi5vYmplY3RMaW5rPy5saW5rID8/ICcnLFxuICAgICAgICBwcm9ncmVzczogc3ViSm9iLnN0YXR1cyAhPT0gJ1FVRVVFRCcgPyBzdWJKb2IucHJvZ3Jlc3MgOiAtKHN1YkpvYi5wcm9ncmVzcyArIDEpLFxuICAgICAgICBoZWlnaHQ6IHN1YkpvYi5vYmplY3RMaW5rPy5oZWlnaHQgPz8gc3ViSm9iLnF1YWxpdHksXG4gICAgICAgIHdpZHRoOiBzdWJKb2Iub2JqZWN0TGluaz8ud2lkdGggPz8gMCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHN1YkpvYi5hZGRpdGlvbmFsRGF0YSxcbiAgICAgICAgc3RhdHVzOiBzdWJKb2Iuc3RhdHVzLFxuICAgICAgfVxuICAgICAgcmV0dXJuIGFzc2V0SXRlbVxuICAgIH0pXG4gICAgY29uc3QgZGF0YTogUmVuZGVyRGF0YSA9IHtcbiAgICAgIG1vZHVsZTogcmVuZGVyRGF0YVJlc3BvbnNlLm1vZHVsZSA/PyAnJyxcbiAgICAgIGl0ZW1zOiBpdGVtc1xuICAgIH1cbiAgICB0aGlzLnJlbmRlckRhdGEkLm5leHQoZGF0YSlcbiAgICB0aGlzLnNvbWVCdXROb3RBbGxGaW5pc2hlZC5uZXh0KHRydWUpXG4gIH1cblxuICBoYW5kbGVGaW5pc2hlZE9yUGFydGlhbEpvYkluZm8ocmVuZGVyRGF0YVJlc3BvbnNlOiBSZW5kZXJEYXRhUmVzcG9uc2UsIGpvYkluZm86IEpvYkluZm9SZXBseSkge1xuICAgIGNvbnN0IGl0ZW1zID0gam9iSW5mby5qb2JzLm1hcChzdWJKb2IgPT4ge1xuICAgICAgY29uc3QgYXNzZXRJdGVtOiBBc3NldFN0YXRlSXRlbSA9IHtcbiAgICAgICAgbGluazogc3ViSm9iLm9iamVjdExpbms/LmxpbmsgPz8gJycsXG4gICAgICAgIHByb2dyZXNzOiBzdWJKb2IucHJvZ3Jlc3MsXG4gICAgICAgIGhlaWdodDogc3ViSm9iLm9iamVjdExpbms/LmhlaWdodCA/PyBzdWJKb2IucXVhbGl0eSxcbiAgICAgICAgd2lkdGg6IHN1YkpvYi5vYmplY3RMaW5rPy53aWR0aCA/PyAwLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YTogc3ViSm9iLmFkZGl0aW9uYWxEYXRhLFxuICAgICAgICBwdWJsaWNFcnJvck1lc3NhZ2U6IHN1YkpvYi5wdWJsaWNFcnJvck1lc3NhZ2UsXG4gICAgICAgIHN0YXR1czpzdWJKb2Iuc3RhdHVzLFxuICAgICAgfVxuICAgICAgcmV0dXJuIGFzc2V0SXRlbVxuICAgIH0pXG4gICAgY29uc3QgZGF0YTogUmVuZGVyRGF0YSA9IHtcbiAgICAgIG1vZHVsZTogcmVuZGVyRGF0YVJlc3BvbnNlLm1vZHVsZSA/PyAnJyxcbiAgICAgIGl0ZW1zOiBpdGVtc1xuICAgIH1cbiAgICB0aGlzLnJlbmRlckRhdGEkLm5leHQoZGF0YSlcbiAgICB0aGlzLmZpbmlzaGVkLm5leHQoKVxuICB9XG5cbiAgaGFuZGxlRmFpbGVkTWFpbkpvYihqb2JJbmZvOiBKb2JJbmZvUmVwbHkpIHtcbiAgICBjb25zdCBkYXRhOiBSZW5kZXJEYXRhID0ge1xuICAgICAgbW9kdWxlOiAnRVJST1InLFxuICAgICAgcHVibGljRXJyb3JNZXNzYWdlOiBqb2JJbmZvLnVzZXJNZXNzYWdlID8/ICdHRU5FUklDX0VSUk9SX01FU1NBR0UnXG4gICAgfVxuICAgIHRoaXMucmVuZGVyRGF0YSQubmV4dChkYXRhKVxuICAgIHRoaXMuZmluaXNoZWQubmV4dCgpXG4gIH1cblxuICBoYW5kbGVNYWluSm9iV2l0aE5vU3ViSm9iSW5GaW5hbFN0YXR1cyhqb2JJbmZvOiBKb2JJbmZvUmVwbHkpIHtcbiAgICBsZXQgcHJvZ3Jlc3MgPSAwXG4gICAgaWYgKGpvYkluZm8uam9icy5zb21lKGogPT4gai5zdGF0dXMgPT09ICdQUk9DRVNTSU5HJykpIHtcbiAgICAgIHByb2dyZXNzID0gTWF0aC5tYXgoLi4uam9iSW5mby5qb2JzLm1hcChqID0+IGoucHJvZ3Jlc3MpKVxuICAgIH0gZWxzZSBpZiAoam9iSW5mby5qb2JzLnNvbWUoaiA9PiBqLnN0YXR1cyA9PT0gJ1FVRVVFRCcpKSB7XG4gICAgICBwcm9ncmVzcyA9IC0oTWF0aC5taW4oLi4uam9iSW5mby5qb2JzLm1hcChqID0+IGoucHJvZ3Jlc3MgKyAxKSkpXG4gICAgfVxuICAgIHRoaXMucHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgbW9kdWxlOiBqb2JJbmZvLm1vZHVsZSA/PyAnJyxcbiAgICAgIHByb2dyZXNzOiBwcm9ncmVzc1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kdWxlIG1vZHVsZS17eyhyZW5kZXJEYXRhJCB8IGFzeW5jKT8ubW9kdWxlfX1cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlbmRlckRhdGEkIHwgYXN5bmMgYXMgZGF0YVwiPlxuICAgIEBkZWZlciAod2hlbiBkYXRhPy5tb2R1bGUgPT09ICdJTUFHRScpe1xuICAgICAgPHJzLW1vZHVsZS1pbWFnZSBbZGF0YV09XCJkYXRhXCIgW25vZGVdPVwibm9kZVwiPjwvcnMtbW9kdWxlLWltYWdlPlxuICAgIH0gQGxvYWRpbmcge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgQGRlZmVyICh3aGVuIGRhdGE/Lm1vZHVsZSA9PT0gJ1ZJREVPJyl7XG4gICAgICA8cnMtbW9kdWxlLXZpZGVvIFtkYXRhXT1cImRhdGFcIiBbbm9kZV09XCJub2RlXCI+PC9ycy1tb2R1bGUtdmlkZW8+XG4gICAgfSBAbG9hZGluZyB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1wiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICBAZGVmZXIgKHdoZW4gZGF0YT8ubW9kdWxlID09PSAnUERGJyB8fCBkYXRhPy5tb2R1bGUgPT09ICdET0NVTUVOVCcpIHtcbiAgICAgIDxycy1tb2R1bGUtcGRmIFtkYXRhXT1cImRhdGFcIiBbbm9kZV09XCJub2RlXCI+PC9ycy1tb2R1bGUtcGRmPlxuICAgIH0gQGxvYWRpbmcge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgQGRlZmVyICh3aGVuIGRhdGE/Lm1vZHVsZSA9PT0gJ0VEVUhUTUwnIHx8IGRhdGE/Lm1vZHVsZSA9PT0gJ0g1UCcgfHwgZGF0YT8ubW9kdWxlID09PSAnSlVQWVRFUicgfHwgZGF0YS5tb2R1bGUgPT09ICdTUFJFQURTSEVFVCcpIHtcbiAgICAgIDxycy1tb2R1bGUtZWR1LWh0bWwgW2RhdGFdPVwiZGF0YVwiIFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1lZHUtaHRtbD5cbiAgICB9IEBsb2FkaW5nIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBkZWZlciAod2hlbiBkYXRhPy5tb2R1bGUgPT09ICdBVURJTycpe1xuICAgICAgPHJzLW1vZHVsZS1hdWRpbyBbZGF0YV09XCJkYXRhXCIgW25vZGVdPVwibm9kZVwiPjwvcnMtbW9kdWxlLWF1ZGlvPlxuICAgIH0gQGxvYWRpbmcge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgQGRlZmVyICh3aGVuIGRhdGE/Lm1vZHVsZSA9PT0gJ0JJTkRFUicpe1xuICAgICAgPHJzLW1vZHVsZS1iaW5kZXIgW2RhdGFdPVwiZGF0YVwiIFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1iaW5kZXI+XG4gICAgfSBAbG9hZGluZyB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1wiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICBAZGVmZXIgKHdoZW4gZGF0YT8ubW9kdWxlID09PSAnRERCJyl7XG4gICAgICA8cnMtbW9kdWxlLWRkYiBbZGF0YV09XCJkYXRhXCIgW25vZGVdPVwibm9kZVwiPjwvcnMtbW9kdWxlLWRkYj5cbiAgICB9IEBsb2FkaW5nIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLm1vZHVsZSA9PT0gJ2RlZmF1bHQnXCI+XG4gICAgICBAZGVmZXIgKHdoZW4gZGF0YS5tb2R1bGUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICA8cnMtbW9kdWxlLWRlZmF1bHQgW25vZGVdPVwibm9kZVwiPjwvcnMtbW9kdWxlLWRlZmF1bHQ+XG4gICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEubW9kdWxlID09PSAndXJsJ1wiPlxuICAgICAgQGRlZmVyICh3aGVuIGRhdGEubW9kdWxlID09PSAndXJsJykge1xuICAgICAgICA8cnMtbW9kdWxlLXVybCBbbm9kZV09XCJub2RlXCIgW2RhdGFdPVwiZGF0YVwiPjwvcnMtbW9kdWxlLXVybD5cbiAgICAgIH1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5tb2R1bGUgPT09ICdFUlJPUidcIj5cbiAgICAgIEBkZWZlciAod2hlbiBkYXRhLm1vZHVsZSA9PT0gJ0VSUk9SJykge1xuICAgICAgICA8cnMtbW9kdWxlLWVycm9yIFtub2RlXT1cIm5vZGVcIiBbZGF0YV09XCJkYXRhXCI+PC9ycy1tb2R1bGUtZXJyb3I+XG4gICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiICpuZ0lmPVwiKHJlbmRlckRhdGEkIHwgYXN5bmMpID09PSBudWxsO1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9ncmVzcyQgfCBhc3luYyBhcyBwcm9ncmVzc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiWydWSURFTycsICdBVURJTyddLmluY2x1ZGVzKHByb2dyZXNzLm1vZHVsZSkgPyAnYmFyJyA6ICdzcGlubmVyJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYmFyJ1wiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIocHJvZ3Jlc3MucHJvZ3Jlc3MgPz8gMCkgPCAwXCI+UXVldWUgcG9zaXRpb246IHt7LShwcm9ncmVzcy5wcm9ncmVzcyA/PyAwKX19PC9kaXY+XG4gICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgW3ZhbHVlXT1cIihwcm9ncmVzcy5wcm9ncmVzcyA/PyAwKVwiICpuZ0lmPVwiKHByb2dyZXNzLnByb2dyZXNzID8/IDApID49IDBcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3Bpbm5lcidcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHByb2dyZXNzLnByb2dyZXNzID8/IDApIDwgMFwiPlF1ZXVlIHBvc2l0aW9uOiB7ey0ocHJvZ3Jlc3MucHJvZ3Jlc3MgPz8gMCl9PC9kaXY+XG4gICAgICAgICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCI1MFwiICpuZ0lmPVwiKHByb2dyZXNzLnByb2dyZXNzID8/IDApID49IDBcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgIDxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcmVuZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9saWIvcmVuZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFRbkQsT0FBTyxFQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU1RyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsbUJBQW1CLEVBQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU1wRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFPdEMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQsT0FBTyxFQUFDLDRCQUE0QixFQUFtQyxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7OztBQTZCdEgsTUFBTSxPQUFPLGVBQWU7SUFhMUIsWUFDVSx1QkFBdUQsRUFDdkQsd0JBQWtELEVBQ2xELGlCQUFvQyxFQUNwQyxnQkFBa0MsRUFDZSxhQUErQztRQUpoRyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWdDO1FBQ3ZELDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2Usa0JBQWEsR0FBYixhQUFhLENBQWtDO1FBZGpHLDBCQUFxQixHQUFZLElBQUksQ0FBQztRQUN0QyxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMvQixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFvQixJQUFJLENBQUMsQ0FBQztRQUMzRCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMvQiwwQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFBO1FBQzlDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBK0MsSUFBSSxDQUFDLENBQUM7UUFTbEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFDaEUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUNoQixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsMkJBQTJCO1lBQzNCLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQzNCLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxDQUFDO1lBQ1YsSUFBSSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRTtnQkFDN0Isc0VBQXNFO2dCQUN0RSxJQUFJLGNBQWMsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxJQUFJLEdBQWU7d0JBQ3ZCLE1BQU0sRUFBRSxjQUFjLENBQUMsTUFBTTt3QkFDN0Isb0JBQW9CLEVBQUUsY0FBYztxQkFDckMsQ0FBQTtvQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtvQkFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtnQkFDdEIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQzt3QkFDSCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBUyxDQUFDLENBQUMsQ0FBQTt3QkFDaEgsK0NBQStDO3dCQUMvQyxJQUFJLGtCQUFrQixDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQzs0QkFDdEMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLGtCQUFrQixDQUFDLENBQUE7d0JBQzVELENBQUM7NkJBQU0sQ0FBQzs0QkFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFDLENBQUMsQ0FBQzs0QkFDL0QsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDaEIsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsRUFBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsS0FBTyxFQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUN0RyxDQUFDLFNBQVMsQ0FBQztnQ0FDVixJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO29DQUN0QixpR0FBaUc7b0NBQ2pHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7d0NBQ3JGLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQTt3Q0FDcEUsd0NBQXdDO29DQUMxQyxDQUFDO3lDQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxVQUFVLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxrQkFBa0IsRUFBRSxDQUFDO3dDQUNsRixJQUFJLENBQUMsOEJBQThCLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUE7d0NBQ2hFLDhDQUE4QztvQ0FDaEQsQ0FBQzt5Q0FBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7d0NBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQ0FDbkMsQ0FBQzt5Q0FBTSxDQUFDO3dDQUNOLHFGQUFxRjt3Q0FDckYseUNBQXlDO3dDQUN6QyxJQUFJLENBQUMsc0NBQXNDLENBQUMsT0FBTyxDQUFDLENBQUE7b0NBQ3RELENBQUM7Z0NBQ0gsQ0FBQztnQ0FDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0NBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQ0FDNUIsQ0FBQzs2QkFBQyxDQUFDLENBQUM7d0JBQ1IsQ0FBQztvQkFDSCxDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtvQkFDNUIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDNUIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSx1QkFBdUIsQ0FBQTtRQUN4RSxNQUFNLElBQUksR0FBZTtZQUN2QixNQUFNLEVBQUUsT0FBTztZQUNmLGtCQUFrQixFQUFFLGFBQWE7U0FDbEMsQ0FBQTtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztRQUNELDhEQUE4RDtRQUM5RCxJQUFJLGVBQWUsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNqQyxNQUFNLEdBQUcsR0FBRyxNQUFNLFNBQVMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQTRCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3pILE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN2RixNQUFNLFlBQVksR0FBRyxNQUFNLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFO2dCQUM1RSxLQUFLLEVBQUUsS0FBSzthQUNiLENBQUMsQ0FBQztZQUNILElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN6QixZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFDLElBQUksRUFBRSxjQUFjLEVBQUMsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsWUFBWSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7Z0JBQ2hDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUM7Z0JBQzFDLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ2QsU0FBUyxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7d0JBQzdCLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUUsQ0FBQzs0QkFDcEMsSUFBSSxTQUFTLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dDQUN2QyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUMsSUFBSSxFQUFFLGNBQWMsRUFBQyxDQUFDLENBQUM7NEJBQ2hELENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUMsQ0FBQztZQUNGLFNBQVMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO2dCQUNoRSxPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBZ0I7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVc7UUFDZixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbkUsQ0FBQztZQUNELE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUMsQ0FBQTtRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFFRCxpQ0FBaUMsQ0FBQyxrQkFBc0M7UUFDdEUsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2RCxNQUFNLFNBQVMsR0FBbUI7Z0JBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixRQUFRLEVBQUUsR0FBRztnQkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsY0FBYyxFQUFFLFNBQVM7Z0JBQ3pCLE1BQU0sRUFBRSxVQUFVO2FBQ25CLENBQUE7WUFDRCxPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDLENBQUMsQ0FBQTtRQUNGLE1BQU0sSUFBSSxHQUFlO1lBQ3ZCLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLElBQUksRUFBRTtZQUN2QyxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUE7UUFDRCxrQkFBa0IsQ0FBQyxXQUFXLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGtDQUFrQyxDQUFDLGtCQUFzQyxFQUFFLE9BQXFCO1FBQzlGLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sU0FBUyxHQUFtQjtnQkFDaEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQ25DLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUMvRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU87Z0JBQ25ELEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLEtBQUssSUFBSSxDQUFDO2dCQUNwQyxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWM7Z0JBQ3JDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTthQUN0QixDQUFBO1lBQ0QsT0FBTyxTQUFTLENBQUE7UUFDbEIsQ0FBQyxDQUFDLENBQUE7UUFDRixNQUFNLElBQUksR0FBZTtZQUN2QixNQUFNLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFDdkMsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQsOEJBQThCLENBQUMsa0JBQXNDLEVBQUUsT0FBcUI7UUFDMUYsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEMsTUFBTSxTQUFTLEdBQW1CO2dCQUNoQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDbkMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2dCQUN6QixNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU87Z0JBQ25ELEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLEtBQUssSUFBSSxDQUFDO2dCQUNwQyxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWM7Z0JBQ3JDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7Z0JBQzdDLE1BQU0sRUFBQyxNQUFNLENBQUMsTUFBTTthQUNyQixDQUFBO1lBQ0QsT0FBTyxTQUFTLENBQUE7UUFDbEIsQ0FBQyxDQUFDLENBQUE7UUFDRixNQUFNLElBQUksR0FBZTtZQUN2QixNQUFNLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFDdkMsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBcUI7UUFDdkMsTUFBTSxJQUFJLEdBQWU7WUFDdkIsTUFBTSxFQUFFLE9BQU87WUFDZixrQkFBa0IsRUFBRSxPQUFPLENBQUMsV0FBVyxJQUFJLHVCQUF1QjtTQUNuRSxDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0lBRUQsc0NBQXNDLENBQUMsT0FBcUI7UUFDMUQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFBO1FBQ2hCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDdEQsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQzNELENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3pELFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbEUsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFDNUIsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FwT1UsZUFBZSx5S0FrQkosNEJBQTRCO2tHQWxCdkMsZUFBZSxnTkFOZjtZQUNULGdCQUFnQjtTQUNqQiwrQ0N4REgsc3hHQTJFQSwwVkR0Q0ksa0JBQWtCLDhCQUNsQixlQUFlLDBoQkFHZix3QkFBd0Isa09BQ3hCLG9CQUFvQix3TkFRcEIsbUJBQW1CLDhCQUNuQixrQkFBa0I7O2dHQVNULGVBQWU7c0JBM0IzQixTQUFTO21DQUNFLFNBQVMsY0FDUCxJQUFJLFdBQ1A7NEJBQ1Asa0JBQWtCOzRCQUNsQixlQUFlOzRCQUNmLGNBQWM7NEJBQ2QsY0FBYzs0QkFDZCx3QkFBd0I7NEJBQ3hCLG9CQUFvQjs0QkFDcEIsWUFBWTs0QkFDWixZQUFZOzRCQUNaLGdCQUFnQjs0QkFDaEIsZ0JBQWdCOzRCQUNoQixjQUFjOzRCQUNkLGVBQWU7NEJBQ2YsWUFBWTs0QkFDWixtQkFBbUI7NEJBQ25CLGtCQUFrQjs0QkFDbEIsY0FBYzt5QkFDZixhQUNVOzRCQUNULGdCQUFnQjt5QkFDakI7OzhCQXNCRSxRQUFROzs4QkFBSSxNQUFNOytCQUFDLDRCQUE0Qjs2Q0FqQnpDLE9BQU87MEJBQWYsS0FBSztvQkFDRyxJQUFJOzBCQUFaLEtBQUs7b0JBQ0csZ0JBQWdCOzBCQUF4QixLQUFLO29CQUNHLHFCQUFxQjswQkFBN0IsS0FBSztvQkFDRyxRQUFROzBCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPcHRpb25hbCwgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JlbmRlcmluZ01vZHVsZX0gZnJvbSAnLi9yZW5kZXJpbmcubW9kdWxlJztcbmltcG9ydCB7XG4gIEpvYkluZm9Db250cm9sbGVyU2VydmljZSxcbiAgSm9iSW5mb1JlcGx5LFxuICBSZW5kZXJDb250cm9sbGVyV3JhcHBlclNlcnZpY2UsXG4gIFJlbmRlckRhdGFSZXF1ZXN0V2l0aFRva2VuLFxuICBSZW5kZXJEYXRhUmVzcG9uc2Vcbn0gZnJvbSAnbmd4LXJlbmRlcmluZy1zZXJ2aWNlLWFwaSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZGVib3VuY2VUaW1lLCBmaXJzdFZhbHVlRnJvbSwgaW50ZXJ2YWwsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzJztcbmltcG9ydCB7SW1hZ2VDb21wb25lbnR9IGZyb20gJy4vbW9kdWxlL2ltYWdlL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQge1JlbmRlcmluZ0FwaU1vZHVsZX0gZnJvbSAnLi9yZW5kZXJpbmctYXBpLm1vZHVsZSc7XG5pbXBvcnQge1ZpZGVvQ29tcG9uZW50fSBmcm9tICcuL21vZHVsZS92aWRlby92aWRlby5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHtFZHVTaGFyaW5nQXBpTW9kdWxlLCBOb2RlfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCB7TWF0UHJvZ3Jlc3NCYXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQge0Fzc2V0U3RhdGVJdGVtLCBSZW5kZXJEYXRhfSBmcm9tICcuL2R0by9SZW5kZXJEYXRhJztcbmltcG9ydCB7UGRmQ29tcG9uZW50fSBmcm9tICcuL21vZHVsZS9wZGYvcGRmLmNvbXBvbmVudCc7XG5pbXBvcnQge1VybENvbXBvbmVudH0gZnJvbSAnLi9tb2R1bGUvdXJsL3VybC5jb21wb25lbnQnO1xuaW1wb3J0IHtFZHVIdG1sQ29tcG9uZW50fSBmcm9tICcuL21vZHVsZS9lZHVodG1sL2VkdUh0bWwuY29tcG9uZW50JztcbmltcG9ydCB7TW9kdWxlSW5mb1NlcnZpY2V9IGZyb20gJy4uL21vZHVsZS1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UGxhdGZvcm1Mb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RGVmYXVsdENvbXBvbmVudH0gZnJvbSAnLi9tb2R1bGUvZGVmYXVsdC9kZWZhdWx0LmNvbXBvbmVudCc7XG5pbXBvcnQge0Zyb250ZW5kTW9kdWxlQ29uZmlnfSBmcm9tICcuL2R0by9Gcm9udGVuZE1vZHVsZUNvbmZpZyc7XG5pbXBvcnQge0F1ZGlvQ29tcG9uZW50fSBmcm9tICcuL21vZHVsZS9hdWRpby9hdWRpby5jb21wb25lbnQnO1xuaW1wb3J0IHtCaW5kZXJDb21wb25lbnR9IGZyb20gJy4vbW9kdWxlL2JpbmRlci9iaW5kZXIuY29tcG9uZW50JztcbmltcG9ydCB7RGRiQ29tcG9uZW50fSBmcm9tICcuL21vZHVsZS9kZGIvZGRiLmNvbXBvbmVudCc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtFZHVTaGFyaW5nVWlNb2R1bGV9IGZyb20gJ25neC1lZHUtc2hhcmluZy11aSc7XG5pbXBvcnQge0Vycm9yQ29tcG9uZW50fSBmcm9tICcuL21vZHVsZS9lcnJvci9lcnJvci5jb21wb25lbnQnO1xuaW1wb3J0IHtSRU5ERVJJTkdfU0VSVklDRV9MSUJfQ09ORklHLCBSZW5kZXJpbmdTZXJ2aWNlTGliQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vcmVuZGVyaW5nLXNlcnZpY2UtbGliLWNvbmZpZ3VyYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycy1yb290JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJlbmRlcmluZ0FwaU1vZHVsZSxcbiAgICBSZW5kZXJpbmdNb2R1bGUsXG4gICAgSW1hZ2VDb21wb25lbnQsXG4gICAgVmlkZW9Db21wb25lbnQsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIFBkZkNvbXBvbmVudCxcbiAgICBVcmxDb21wb25lbnQsXG4gICAgRWR1SHRtbENvbXBvbmVudCxcbiAgICBEZWZhdWx0Q29tcG9uZW50LFxuICAgIEF1ZGlvQ29tcG9uZW50LFxuICAgIEJpbmRlckNvbXBvbmVudCxcbiAgICBEZGJDb21wb25lbnQsXG4gICAgRWR1U2hhcmluZ0FwaU1vZHVsZSxcbiAgICBFZHVTaGFyaW5nVWlNb2R1bGUsXG4gICAgRXJyb3JDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIFRyYW5zbGF0ZVNlcnZpY2VcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlbmRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9yZW5kZXIuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFJlbmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgQElucHV0KCkgcmVxdWVzdDogUmVuZGVyRGF0YVJlcXVlc3RXaXRoVG9rZW4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG5vZGU6IE5vZGUgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNlcnZpY2VXb3JrZXJVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYWN0aXZhdGVTZXJ2aWNlV29ya2VyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgYXNzZXRVcmw6IHN0cmluZyA9ICcnO1xuICBzZXJ2aWNlV29ya2VyUmVhZHkgPSBmYWxzZTtcbiAgbG9hZERhdGEgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZW5kZXJEYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVuZGVyRGF0YSB8IG51bGw+KG51bGwpO1xuICBmaW5pc2hlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHNvbWVCdXROb3RBbGxGaW5pc2hlZCA9IG5ldyBTdWJqZWN0PEJvb2xlYW4+KClcbiAgcHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IG1vZHVsZTogc3RyaW5nLCBwcm9ncmVzcz86IG51bWJlciB9IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJDb250cm9sbGVyU2VydmljZTogUmVuZGVyQ29udHJvbGxlcldyYXBwZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgam9iSW5mb0NvbnRyb2xsZXJTZXJ2aWNlOiBKb2JJbmZvQ29udHJvbGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2R1bGVJbmZvU2VydmljZTogTW9kdWxlSW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybUxvY2F0aW9uOiBQbGF0Zm9ybUxvY2F0aW9uLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUkVOREVSSU5HX1NFUlZJQ0VfTElCX0NPTkZJRykgcHVibGljIGNvbmZpZ3VyYXRpb246IFJlbmRlcmluZ1NlcnZpY2VMaWJDb25maWd1cmF0aW9uLFxuICApIHtcbiAgICB0aGlzLmxvYWREYXRhLnBpcGUoXG4gICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5ub2RlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zZXJ2aWNlV29ya2VyUmVhZHkpLFxuICAgICAgZGVib3VuY2VUaW1lKDEwKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIC8vIHN1YnNjcmliZSBlcnJvciBoYW5kbGluZ1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja01vZHVsZSgpXG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IGFzeW5jIChmcm9udGVuZE1vZHVsZSkgPT4ge1xuICAgICAgICAvLyBObyBmdXJ0aGVyIGNhbGxzIHRvIHJzMiBuZWNlc3NhcnkgaWYgd2UgaGF2ZSBhIGZyb250ZW5kIG9ubHkgbW9kdWxlXG4gICAgICAgIGlmIChmcm9udGVuZE1vZHVsZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IGRhdGE6IFJlbmRlckRhdGEgPSB7XG4gICAgICAgICAgICBtb2R1bGU6IGZyb250ZW5kTW9kdWxlLm1vZHVsZSxcbiAgICAgICAgICAgIGZyb250ZW5kTW9kdWxlQ29uZmlnOiBmcm9udGVuZE1vZHVsZVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnJlbmRlckRhdGEkLm5leHQoZGF0YSlcbiAgICAgICAgICB0aGlzLmZpbmlzaGVkLm5leHQoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZW5kZXJSZXNwb25zZURhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJlbmRlckNvbnRyb2xsZXJTZXJ2aWNlLmdldFJlbmRlckRhdGFUb2tlbih0aGlzLnJlcXVlc3QhISkpXG4gICAgICAgICAgICAvLyBDYXNlIDE6IG5vIGpvYiByZXR1cm5lZCA9PiBubyBwb2xsaW5nIG5lZWRlZFxuICAgICAgICAgICAgaWYgKHJlbmRlclJlc3BvbnNlRGF0YS5qb2JJZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICB0aGlzLmhhbmRsZVJlbmRlcmluZ1Jlc3BvbnNlV2l0aG91dEpvYihyZW5kZXJSZXNwb25zZURhdGEpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzJC5uZXh0KHttb2R1bGU6IHJlbmRlclJlc3BvbnNlRGF0YS5tb2R1bGUgPz8gJyd9KTtcbiAgICAgICAgICAgICAgaW50ZXJ2YWwoNTAwKS5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmZpbmlzaGVkKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5qb2JJbmZvQ29udHJvbGxlclNlcnZpY2UuZ2V0Sm9iSW5mbyh7am9iSWQ6IHJlbmRlclJlc3BvbnNlRGF0YS5qb2JJZCEhfSkucGlwZSgpKSxcbiAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IGFzeW5jIChqb2JJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBTb21lLCBidXQgbm90IGFsbCwgam9icyBhcmUgaW4gYSBmaW5hbCBzdGF0dXMgKHRoaXMgbWVhbnMgc29tZSBhcmUgc3RpbGwgUVVFVUVEIG9yIFBST0NFU1NJTkcpXG4gICAgICAgICAgICAgICAgICBpZiAoam9iSW5mby5qb2JzLnNvbWUoaiA9PiBqLnN0YXR1cyA9PT0gJ0ZJTklTSEVEJykgJiYgam9iSW5mby5zdGF0dXMgIT09ICdGSU5JU0hFRCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVKb2JJbmZvV2l0aFN1YkpvYnNJblByb2dyZXNzKHJlbmRlclJlc3BvbnNlRGF0YSwgam9iSW5mbylcbiAgICAgICAgICAgICAgICAgICAgLy8gbWFpbiBqb2IgZmluaXNoZWQgb3IgcGFydGlhbGx5IGZhaWxlZFxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqb2JJbmZvLnN0YXR1cyA9PT0gJ0ZJTklTSEVEJyB8fCBqb2JJbmZvLnN0YXR1cyA9PT0gJ1BBUlRJQUxMWV9GQUlMRUQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRmluaXNoZWRPclBhcnRpYWxKb2JJbmZvKHJlbmRlclJlc3BvbnNlRGF0YSwgam9iSW5mbylcbiAgICAgICAgICAgICAgICAgICAgLy8gTWFpbiBqb2IgZmFpbGVkID0+IG5vIG1vZHVsZSBidXQgZXJyb3IgcGFnZVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqb2JJbmZvLnN0YXR1cyA9PT0gJ0ZBSUxFRCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVGYWlsZWRNYWluSm9iKGpvYkluZm8pXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBubyBmaW5pc2hlZCBqb2JzIC0+IHNob3cgZWl0aGVyIG9uZSBwcm9ncmVzcyBiYXIgd2l0aCByYWNlIGxlYWRlciAocHJvZ3Jlc3MgMC0xMDApXG4gICAgICAgICAgICAgICAgICAgIC8vIG9yIHF1ZXVlIHBvc2l0aW9uIChwcm9ncmVzcyAoLWluZiwtMV0pXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlTWFpbkpvYldpdGhOb1N1YkpvYkluRmluYWxTdGF0dXMoam9iSW5mbylcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUFwaUVycm9yKGVycm9yKVxuICAgICAgICAgICAgICAgIH19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVBcGlFcnJvcihlcnJvcilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlQXBpRXJyb3IoZXJyb3IpXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVBcGlFcnJvcihlcnJvcjogYW55KSB7XG4gICAgY29uc3QgcHVibGljTWVzc2FnZSA9IGVycm9yLmVycm9yLnVzZXJNZXNzYWdlID8/ICdHRU5FUklDX0VSUk9SX01FU1NBR0UnXG4gICAgY29uc3QgZGF0YTogUmVuZGVyRGF0YSA9IHtcbiAgICAgIG1vZHVsZTogJ0VSUk9SJyxcbiAgICAgIHB1YmxpY0Vycm9yTWVzc2FnZTogcHVibGljTWVzc2FnZVxuICAgIH1cbiAgICB0aGlzLnJlbmRlckRhdGEkLm5leHQoZGF0YSlcbiAgICB0aGlzLmZpbmlzaGVkLm5leHQoKVxuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYXNzZXRVcmwgIT09ICcnKSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uYXNzZXRzVXJsID0gdGhpcy5hc3NldFVybDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmFjdGl2YXRlU2VydmljZVdvcmtlcikge1xuICAgICAgdGhpcy5zZXJ2aWNlV29ya2VyUmVhZHkgPSB0cnVlO1xuICAgICAgdGhpcy5sb2FkRGF0YS5uZXh0KCk7XG4gICAgfVxuICAgIC8vIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMudHJhbnNsYXRpb25zU2VydmljZS5pbml0aWFsaXplKCkpXG4gICAgaWYgKCdzZXJ2aWNlV29ya2VyJyBpbiBuYXZpZ2F0b3IpIHtcbiAgICAgIGNvbnN0IHJlZyA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbnMoKTtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHJlZz8ubWFwKChyOiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKSA9PiByLnVucmVnaXN0ZXIoKSkpO1xuICAgICAgY29uc3Qgc2VydmljZVdvcmtlclVybCA9IHRoaXMuc2VydmljZVdvcmtlclVybCA/PyAodGhpcy5wbGF0Zm9ybUxvY2F0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpICsgJ2VkdS1zZXJ2aWNlLXdvcmtlci5qcycpO1xuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLnNlcnZpY2VXb3JrZXJVcmwgPyAnLycgOiB0aGlzLnBsYXRmb3JtTG9jYXRpb24uZ2V0QmFzZUhyZWZGcm9tRE9NKCk7XG4gICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcihzZXJ2aWNlV29ya2VyVXJsLCB7XG4gICAgICAgIHNjb3BlOiBzY29wZVxuICAgICAgfSk7XG4gICAgICBpZiAocmVnaXN0cmF0aW9uLndhaXRpbmcpIHtcbiAgICAgICAgcmVnaXN0cmF0aW9uLndhaXRpbmcucG9zdE1lc3NhZ2Uoe3R5cGU6ICdTS0lQX1dBSVRJTkcnfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlcnZpY2VXb3JrZXJSZWFkeSA9IHRydWU7XG4gICAgICB0aGlzLmxvYWREYXRhLm5leHQoKTtcbiAgICAgIHJlZ2lzdHJhdGlvbi5vbnVwZGF0ZWZvdW5kID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZztcbiAgICAgICAgaWYgKG5ld1dvcmtlcikge1xuICAgICAgICAgIG5ld1dvcmtlci5vbnN0YXRlY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKG5ld1dvcmtlci5zdGF0ZSA9PT0gJ2luc3RhbGxlZCcpIHtcbiAgICAgICAgICAgICAgaWYgKG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgICBuZXdXb3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdTS0lQX1dBSVRJTkcnfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignY29udHJvbGxlcmNoYW5nZScsICgpID0+IHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdTZXJ2aWNlIFdvcmtlciBjb250cm9sbGluZyB0aGlzIHBhZ2UuJyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1NlcnZpY2Ugd29ya2VyIEFQSSBub3QgYXZhaWxhYmxlJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoXzogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMubG9hZERhdGEubmV4dCgpO1xuICB9XG5cbiAgYXN5bmMgY2hlY2tNb2R1bGUoKTogUHJvbWlzZTxGcm9udGVuZE1vZHVsZUNvbmZpZyB8IG51bGw+IHtcbiAgICBpZiAoIWF3YWl0IHRoaXMubW9kdWxlSW5mb1NlcnZpY2UuaXNBdmFpbGFibGVCYWNrZW5kT2JqZWN0KHRoaXMubm9kZSkpIHtcbiAgICAgIGlmICh0aGlzLm5vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVJbmZvU2VydmljZS5nZXRGcm9udGVuZE1vZHVsZVNldHRpbmcodGhpcy5ub2RlKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHttb2R1bGU6ICdkZWZhdWx0JywgdXJsTW9kdWxlQ29uZmlnOiBudWxsfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVJlbmRlcmluZ1Jlc3BvbnNlV2l0aG91dEpvYihyZW5kZXJEYXRhUmVzcG9uc2U6IFJlbmRlckRhdGFSZXNwb25zZSkge1xuICAgIGNvbnN0IGl0ZW1zID0gcmVuZGVyRGF0YVJlc3BvbnNlLm9iamVjdExpbmtzPy5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBhc3NldEl0ZW06IEFzc2V0U3RhdGVJdGVtID0ge1xuICAgICAgICBsaW5rOiBpdGVtLmxpbmssXG4gICAgICAgIHByb2dyZXNzOiAxMDAsXG4gICAgICAgIGhlaWdodDogaXRlbS5oZWlnaHQsXG4gICAgICAgIHdpZHRoOiBpdGVtLndpZHRoLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YTogdW5kZWZpbmVkLFxuICAgICAgICBzdGF0dXM6ICdGSU5JU0hFRCdcbiAgICAgIH1cbiAgICAgIHJldHVybiBhc3NldEl0ZW1cbiAgICB9KVxuICAgIGNvbnN0IGRhdGE6IFJlbmRlckRhdGEgPSB7XG4gICAgICBtb2R1bGU6IHJlbmRlckRhdGFSZXNwb25zZS5tb2R1bGUgPz8gJycsXG4gICAgICBpdGVtczogaXRlbXNcbiAgICB9XG4gICAgcmVuZGVyRGF0YVJlc3BvbnNlLm9iamVjdExpbmtzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5yZW5kZXJEYXRhJC5uZXh0KGRhdGEpO1xuICAgIHRoaXMuZmluaXNoZWQubmV4dCgpO1xuICB9XG5cbiAgaGFuZGxlSm9iSW5mb1dpdGhTdWJKb2JzSW5Qcm9ncmVzcyhyZW5kZXJEYXRhUmVzcG9uc2U6IFJlbmRlckRhdGFSZXNwb25zZSwgam9iSW5mbzogSm9iSW5mb1JlcGx5KSB7XG4gICAgY29uc3QgaXRlbXMgPSBqb2JJbmZvLmpvYnMubWFwKHN1YkpvYiA9PiB7XG4gICAgICBjb25zdCBhc3NldEl0ZW06IEFzc2V0U3RhdGVJdGVtID0ge1xuICAgICAgICBsaW5rOiBzdWJKb2Iub2JqZWN0TGluaz8ubGluayA/PyAnJyxcbiAgICAgICAgcHJvZ3Jlc3M6IHN1YkpvYi5zdGF0dXMgIT09ICdRVUVVRUQnID8gc3ViSm9iLnByb2dyZXNzIDogLShzdWJKb2IucHJvZ3Jlc3MgKyAxKSxcbiAgICAgICAgaGVpZ2h0OiBzdWJKb2Iub2JqZWN0TGluaz8uaGVpZ2h0ID8/IHN1YkpvYi5xdWFsaXR5LFxuICAgICAgICB3aWR0aDogc3ViSm9iLm9iamVjdExpbms/LndpZHRoID8/IDAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiBzdWJKb2IuYWRkaXRpb25hbERhdGEsXG4gICAgICAgIHN0YXR1czogc3ViSm9iLnN0YXR1cyxcbiAgICAgIH1cbiAgICAgIHJldHVybiBhc3NldEl0ZW1cbiAgICB9KVxuICAgIGNvbnN0IGRhdGE6IFJlbmRlckRhdGEgPSB7XG4gICAgICBtb2R1bGU6IHJlbmRlckRhdGFSZXNwb25zZS5tb2R1bGUgPz8gJycsXG4gICAgICBpdGVtczogaXRlbXNcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJEYXRhJC5uZXh0KGRhdGEpXG4gICAgdGhpcy5zb21lQnV0Tm90QWxsRmluaXNoZWQubmV4dCh0cnVlKVxuICB9XG5cbiAgaGFuZGxlRmluaXNoZWRPclBhcnRpYWxKb2JJbmZvKHJlbmRlckRhdGFSZXNwb25zZTogUmVuZGVyRGF0YVJlc3BvbnNlLCBqb2JJbmZvOiBKb2JJbmZvUmVwbHkpIHtcbiAgICBjb25zdCBpdGVtcyA9IGpvYkluZm8uam9icy5tYXAoc3ViSm9iID0+IHtcbiAgICAgIGNvbnN0IGFzc2V0SXRlbTogQXNzZXRTdGF0ZUl0ZW0gPSB7XG4gICAgICAgIGxpbms6IHN1YkpvYi5vYmplY3RMaW5rPy5saW5rID8/ICcnLFxuICAgICAgICBwcm9ncmVzczogc3ViSm9iLnByb2dyZXNzLFxuICAgICAgICBoZWlnaHQ6IHN1YkpvYi5vYmplY3RMaW5rPy5oZWlnaHQgPz8gc3ViSm9iLnF1YWxpdHksXG4gICAgICAgIHdpZHRoOiBzdWJKb2Iub2JqZWN0TGluaz8ud2lkdGggPz8gMCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHN1YkpvYi5hZGRpdGlvbmFsRGF0YSxcbiAgICAgICAgcHVibGljRXJyb3JNZXNzYWdlOiBzdWJKb2IucHVibGljRXJyb3JNZXNzYWdlLFxuICAgICAgICBzdGF0dXM6c3ViSm9iLnN0YXR1cyxcbiAgICAgIH1cbiAgICAgIHJldHVybiBhc3NldEl0ZW1cbiAgICB9KVxuICAgIGNvbnN0IGRhdGE6IFJlbmRlckRhdGEgPSB7XG4gICAgICBtb2R1bGU6IHJlbmRlckRhdGFSZXNwb25zZS5tb2R1bGUgPz8gJycsXG4gICAgICBpdGVtczogaXRlbXNcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJEYXRhJC5uZXh0KGRhdGEpXG4gICAgdGhpcy5maW5pc2hlZC5uZXh0KClcbiAgfVxuXG4gIGhhbmRsZUZhaWxlZE1haW5Kb2Ioam9iSW5mbzogSm9iSW5mb1JlcGx5KSB7XG4gICAgY29uc3QgZGF0YTogUmVuZGVyRGF0YSA9IHtcbiAgICAgIG1vZHVsZTogJ0VSUk9SJyxcbiAgICAgIHB1YmxpY0Vycm9yTWVzc2FnZTogam9iSW5mby51c2VyTWVzc2FnZSA/PyAnR0VORVJJQ19FUlJPUl9NRVNTQUdFJ1xuICAgIH1cbiAgICB0aGlzLnJlbmRlckRhdGEkLm5leHQoZGF0YSlcbiAgICB0aGlzLmZpbmlzaGVkLm5leHQoKVxuICB9XG5cbiAgaGFuZGxlTWFpbkpvYldpdGhOb1N1YkpvYkluRmluYWxTdGF0dXMoam9iSW5mbzogSm9iSW5mb1JlcGx5KSB7XG4gICAgbGV0IHByb2dyZXNzID0gMFxuICAgIGlmIChqb2JJbmZvLmpvYnMuc29tZShqID0+IGouc3RhdHVzID09PSAnUFJPQ0VTU0lORycpKSB7XG4gICAgICBwcm9ncmVzcyA9IE1hdGgubWF4KC4uLmpvYkluZm8uam9icy5tYXAoaiA9PiBqLnByb2dyZXNzKSlcbiAgICB9IGVsc2UgaWYgKGpvYkluZm8uam9icy5zb21lKGogPT4gai5zdGF0dXMgPT09ICdRVUVVRUQnKSkge1xuICAgICAgcHJvZ3Jlc3MgPSAtKE1hdGgubWluKC4uLmpvYkluZm8uam9icy5tYXAoaiA9PiBqLnByb2dyZXNzICsgMSkpKVxuICAgIH1cbiAgICB0aGlzLnByb2dyZXNzJC5uZXh0KHtcbiAgICAgIG1vZHVsZTogam9iSW5mby5tb2R1bGUgPz8gJycsXG4gICAgICBwcm9ncmVzczogcHJvZ3Jlc3NcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZHVsZSBtb2R1bGUte3socmVuZGVyRGF0YSQgfCBhc3luYyk/Lm1vZHVsZX19XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZW5kZXJEYXRhJCB8IGFzeW5jIGFzIGRhdGFcIj5cbiAgICBAZGVmZXIgKHdoZW4gZGF0YT8ubW9kdWxlID09PSAnSU1BR0UnKXtcbiAgICAgIDxycy1tb2R1bGUtaW1hZ2UgW2RhdGFdPVwiZGF0YVwiIFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1pbWFnZT5cbiAgICB9IEBsb2FkaW5nIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBkZWZlciAod2hlbiBkYXRhPy5tb2R1bGUgPT09ICdWSURFTycpe1xuICAgICAgPHJzLW1vZHVsZS12aWRlbyBbZGF0YV09XCJkYXRhXCIgW25vZGVdPVwibm9kZVwiPjwvcnMtbW9kdWxlLXZpZGVvPlxuICAgIH0gQGxvYWRpbmcge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgQGRlZmVyICh3aGVuIGRhdGE/Lm1vZHVsZSA9PT0gJ1BERicgfHwgZGF0YT8ubW9kdWxlID09PSAnRE9DVU1FTlQnKSB7XG4gICAgICA8cnMtbW9kdWxlLXBkZiBbZGF0YV09XCJkYXRhXCIgW25vZGVdPVwibm9kZVwiPjwvcnMtbW9kdWxlLXBkZj5cbiAgICB9IEBsb2FkaW5nIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBkZWZlciAod2hlbiBkYXRhPy5tb2R1bGUgPT09ICdFRFVIVE1MJyB8fCBkYXRhPy5tb2R1bGUgPT09ICdINVAnIHx8IGRhdGE/Lm1vZHVsZSA9PT0gJ0pVUFlURVInIHx8IGRhdGEubW9kdWxlID09PSAnU1BSRUFEU0hFRVQnKSB7XG4gICAgICA8cnMtbW9kdWxlLWVkdS1odG1sIFtkYXRhXT1cImRhdGFcIiBbbm9kZV09XCJub2RlXCI+PC9ycy1tb2R1bGUtZWR1LWh0bWw+XG4gICAgfSBAbG9hZGluZyB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1wiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICBAZGVmZXIgKHdoZW4gZGF0YT8ubW9kdWxlID09PSAnQVVESU8nKXtcbiAgICAgIDxycy1tb2R1bGUtYXVkaW8gW2RhdGFdPVwiZGF0YVwiIFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1hdWRpbz5cbiAgICB9IEBsb2FkaW5nIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBkZWZlciAod2hlbiBkYXRhPy5tb2R1bGUgPT09ICdCSU5ERVInKXtcbiAgICAgIDxycy1tb2R1bGUtYmluZGVyIFtkYXRhXT1cImRhdGFcIiBbbm9kZV09XCJub2RlXCI+PC9ycy1tb2R1bGUtYmluZGVyPlxuICAgIH0gQGxvYWRpbmcge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgQGRlZmVyICh3aGVuIGRhdGE/Lm1vZHVsZSA9PT0gJ0REQicpe1xuICAgICAgPHJzLW1vZHVsZS1kZGIgW2RhdGFdPVwiZGF0YVwiIFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1kZGI+XG4gICAgfSBAbG9hZGluZyB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1wiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5tb2R1bGUgPT09ICdkZWZhdWx0J1wiPlxuICAgICAgQGRlZmVyICh3aGVuIGRhdGEubW9kdWxlID09PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgPHJzLW1vZHVsZS1kZWZhdWx0IFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1kZWZhdWx0PlxuICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLm1vZHVsZSA9PT0gJ3VybCdcIj5cbiAgICAgIEBkZWZlciAod2hlbiBkYXRhLm1vZHVsZSA9PT0gJ3VybCcpIHtcbiAgICAgICAgPHJzLW1vZHVsZS11cmwgW25vZGVdPVwibm9kZVwiIFtkYXRhXT1cImRhdGFcIj48L3JzLW1vZHVsZS11cmw+XG4gICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEubW9kdWxlID09PSAnRVJST1InXCI+XG4gICAgICBAZGVmZXIgKHdoZW4gZGF0YS5tb2R1bGUgPT09ICdFUlJPUicpIHtcbiAgICAgICAgPHJzLW1vZHVsZS1lcnJvciBbbm9kZV09XCJub2RlXCIgW2RhdGFdPVwiZGF0YVwiPjwvcnMtbW9kdWxlLWVycm9yPlxuICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiAqbmdJZj1cIihyZW5kZXJEYXRhJCB8IGFzeW5jKSA9PT0gbnVsbDtcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvZ3Jlc3MkIHwgYXN5bmMgYXMgcHJvZ3Jlc3NcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIlsnVklERU8nLCAnQVVESU8nXS5pbmNsdWRlcyhwcm9ncmVzcy5tb2R1bGUpID8gJ2JhcicgOiAnc3Bpbm5lcidcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2JhcidcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHByb2dyZXNzLnByb2dyZXNzID8/IDApIDwgMFwiPlF1ZXVlIHBvc2l0aW9uOiB7ey0ocHJvZ3Jlc3MucHJvZ3Jlc3MgPz8gMCl9fTwvZGl2PlxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIFt2YWx1ZV09XCIocHJvZ3Jlc3MucHJvZ3Jlc3MgPz8gMClcIiAqbmdJZj1cIihwcm9ncmVzcy5wcm9ncmVzcyA/PyAwKSA+PSAwXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NwaW5uZXInXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIihwcm9ncmVzcy5wcm9ncmVzcyA/PyAwKSA8IDBcIj5RdWV1ZSBwb3NpdGlvbjoge3stKHByb2dyZXNzLnByb2dyZXNzID8/IDApfTwvZGl2PlxuICAgICAgICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiNTBcIiAqbmdJZj1cIihwcm9ncmVzcy5wcm9ncmVzcyA/PyAwKSA+PSAwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj5cbiAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { AssetLinkPipe } from './asset-link.pipe';
|
|
4
|
-
import { EduSharingApiModule } from
|
|
4
|
+
import { EduSharingApiModule } from 'ngx-edu-sharing-api';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "ngx-edu-sharing-api";
|
|
7
7
|
export class RenderingModule {
|
|
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
27
27
|
]
|
|
28
28
|
}]
|
|
29
29
|
}] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyaW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcmVuZGVyaW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scUJBQXFCLENBQUM7OztBQWV4RCxNQUFNLE9BQU8sZUFBZTs4R0FBZixlQUFlOytHQUFmLGVBQWUsaUJBUHhCLGFBQWEsYUFKYixZQUFZLHFDQU9aLFlBQVk7WUFDWixhQUFhOytHQUdKLGVBQWUsWUFYeEIsWUFBWTtZQUNaLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxFQU03QixZQUFZOzsyRkFJSCxlQUFlO2tCQWIzQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQixDQUFDLE9BQU8sRUFBRTtxQkFDOUI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTtxQkFDZDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Fzc2V0TGlua1BpcGV9IGZyb20gJy4vYXNzZXQtbGluay5waXBlJztcbmltcG9ydCB7RWR1U2hhcmluZ0FwaU1vZHVsZX0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRWR1U2hhcmluZ0FwaU1vZHVsZS5mb3JSb290KClcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQXNzZXRMaW5rUGlwZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBc3NldExpbmtQaXBlLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJlbmRlcmluZ01vZHVsZSB7fVxuIl19
|
|
@@ -224,7 +224,9 @@ class PdfComponent {
|
|
|
224
224
|
this.nodeHelper = nodeHelper;
|
|
225
225
|
this.configuration = configuration;
|
|
226
226
|
this.restrictedView = false;
|
|
227
|
-
|
|
227
|
+
if (configuration && configuration.assetsUrl) {
|
|
228
|
+
pdfDefaultOptions.assetsFolder = (configuration?.assetsUrl || '') + '/ngx-extended-pdf-viewer';
|
|
229
|
+
}
|
|
228
230
|
}
|
|
229
231
|
ngOnChanges(changes) {
|
|
230
232
|
if (this.nodeHelper.getNodesRight([this.node], 'DownloadContent', NodesRightMode.Effective)) {
|
|
@@ -279,7 +281,7 @@ class PdfComponent {
|
|
|
279
281
|
}
|
|
280
282
|
}
|
|
281
283
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PdfComponent, deps: [{ token: i1$1.AssetControllerService }, { token: i2.NodeHelperService }, { token: RENDERING_SERVICE_LIB_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
282
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: PdfComponent, isStandalone: true, selector: "rs-module-pdf", inputs: { data: "data", node: "node" }, host: { listeners: { "window:keydown.control.s": "handleShortCutEvents($event)", "window:keydown.F12": "handleShortCutEvents($event)", "window:contextmenu": "handleContextMenu($event)" } }, viewQueries: [{ propertyName: "pdfViewer", first: true, predicate: NgxExtendedPdfViewerComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'100vh'\"\n [showSecondaryToolbarButton]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.pdf-wrapper{width:100%;height:100%}@media print{.hide-all *{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i4$1.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "forceFullReloadOfJavaScriptCode", "showTextEditor", "showStampEditor", "showDrawEditor", "showHighlightEditor", "logLevel", "relativeCoordsOptions", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }] }); }
|
|
284
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: PdfComponent, isStandalone: true, selector: "rs-module-pdf", inputs: { data: "data", node: "node" }, host: { listeners: { "window:keydown.control.s": "handleShortCutEvents($event)", "window:keydown.F12": "handleShortCutEvents($event)", "window:contextmenu": "handleContextMenu($event)" } }, viewQueries: [{ propertyName: "pdfViewer", first: true, predicate: NgxExtendedPdfViewerComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [sidebarVisible]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'100vh'\"\n [showSecondaryToolbarButton]=\"false\"\n [showStampEditor]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.pdf-wrapper{width:100%;height:100%}@media print{.hide-all *{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i4$1.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "forceFullReloadOfJavaScriptCode", "showTextEditor", "showStampEditor", "showDrawEditor", "showHighlightEditor", "logLevel", "relativeCoordsOptions", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }] }); }
|
|
283
285
|
}
|
|
284
286
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PdfComponent, decorators: [{
|
|
285
287
|
type: Component,
|
|
@@ -288,7 +290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
288
290
|
MatButtonModule,
|
|
289
291
|
MatIconModule,
|
|
290
292
|
NgxExtendedPdfViewerModule
|
|
291
|
-
], template: "<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'100vh'\"\n [showSecondaryToolbarButton]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.pdf-wrapper{width:100%;height:100%}@media print{.hide-all *{display:none!important}}\n"] }]
|
|
293
|
+
], template: "<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [sidebarVisible]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'100vh'\"\n [showSecondaryToolbarButton]=\"false\"\n [showStampEditor]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.pdf-wrapper{width:100%;height:100%}@media print{.hide-all *{display:none!important}}\n"] }]
|
|
292
294
|
}], ctorParameters: () => [{ type: i1$1.AssetControllerService }, { type: i2.NodeHelperService }, { type: RenderingServiceLibConfiguration, decorators: [{
|
|
293
295
|
type: Optional
|
|
294
296
|
}, {
|
|
@@ -758,7 +760,6 @@ class RenderComponent {
|
|
|
758
760
|
}
|
|
759
761
|
async ngOnInit() {
|
|
760
762
|
if (this.assetUrl !== '') {
|
|
761
|
-
console.info('setting assetUrl to: ' + this.assetUrl + '');
|
|
762
763
|
this.configuration.assetsUrl = this.assetUrl;
|
|
763
764
|
}
|
|
764
765
|
if (!this.activateServiceWorker) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-rendering-service-lib.mjs","sources":["../../src/lib/asset-link.pipe.ts","../../src/lib/rendering.module.ts","../../src/lib/module/image/image.component.ts","../../src/lib/module/image/image.component.html","../../src/lib/module/video/video.component.ts","../../src/lib/module/video/video.component.html","../../src/rendering-service-lib-configuration.ts","../../src/lib/module/pdf/pdf.component.ts","../../src/lib/module/pdf/pdf.component.html","../../src/lib/dto/FrontendModuleConfig.ts","../../src/lib/module/url/url.component.ts","../../src/lib/module/url/url.component.html","../../src/lib/module/eduhtml/eduHtml.component.ts","../../src/lib/module/eduhtml/eduHtml.component.html","../../src/lib/rendering-api.module.ts","../../src/module-info.service.ts","../../src/lib/render.component.ts","../../src/lib/render.component.html","../../src/rendering-service-lib.module.ts","../../src/index.ts","../../src/ngx-rendering-service-lib.ts"],"sourcesContent":["import {Injector, Pipe, PipeTransform} from '@angular/core';\nimport {RSApiConfiguration} from 'ngx-rendering-service-api';\n\n/**\n * this pipe transforms any reported asset data uri from the rendering to the uri that is currently configured for the backend\n * this is required in case the rendering service is behind a proxy, i.e. in dev mode\n */\n@Pipe({ name: 'rsAssetLink' })\nexport class AssetLinkPipe implements PipeTransform {\n constructor(\n private injector: Injector,\n ) {\n }\n\n transform(value: string | undefined) {\n if(value) {\n const str = value.split('/public');\n str[0] = this.injector.get(RSApiConfiguration).rootUrl;\n return str.join('/public');\n }\n return value;\n }\n\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AssetLinkPipe} from './asset-link.pipe';\nimport {EduSharingApiModule} from \"ngx-edu-sharing-api\";\n\n@NgModule({\n imports: [\n CommonModule,\n EduSharingApiModule.forRoot()\n ],\n declarations: [\n AssetLinkPipe,\n ],\n exports: [\n CommonModule,\n AssetLinkPipe,\n ]\n})\nexport class RenderingModule {}\n","import {AfterViewInit, Component, ElementRef, HostListener, Input, signal} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatButtonModule} from '@angular/material/button';\nimport {RenderData, AssetStateItem} from '../../dto/RenderData';\n\n@Component({\n selector: 'rs-module-image',\n standalone: true,\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n ],\n templateUrl: './image.component.html',\n styleUrl: './image.component.scss'\n})\nexport class ImageComponent implements RenderModule, AfterViewInit {\n @Input() data: RenderData | undefined;\n @Input() node: Node | undefined;\n activeObject = signal<AssetStateItem | undefined>(undefined);\n constructor(public element: ElementRef) { }\n ngAfterViewInit(): void {\n this.loadOptimalSize();\n }\n\n @HostListener('document:fullscreenchange')\n private loadOptimalSize() {\n const size = this.element.nativeElement.getBoundingClientRect();\n const allFinishedItems = this.data?.items?.filter(item => item.link !== '')\n const matchingItem = allFinishedItems?.sort((a, b) => {\n // sort by the image size closest to the viewport\n return Math.abs(a.width - size.width) > Math.abs(b.width - size.width) ? 1 : -1;\n })[0]\n this.activeObject.set(matchingItem);\n }\n\n toggleFullscreen() {\n if(document.fullscreenElement) {\n void document.exitFullscreen();\n } else {\n this.element.nativeElement.requestFullscreen();\n }\n }\n}\n","<div class=\"image-wrapper\"\n *ngIf=\"activeObject()\"\n>\n <img\n #image\n [src]=\"activeObject()?.link | rsAssetLink\"\n [alt]=\"node?.title || node?.name || ''\"\n >\n <button mat-icon-button (click)=\"toggleFullscreen()\"><mat-icon>fullscreen</mat-icon></button>\n</div>\n","import {AfterViewInit, Component, ElementRef, Input, signal, ViewChild} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatIconButton} from '@angular/material/button';\nimport {FormsModule} from '@angular/forms';\nimport {RenderData, AssetStateItem} from '../../dto/RenderData';\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from '@angular/material/menu';\nimport {EduSharingUiModule} from 'ngx-edu-sharing-ui';\n\n@Component({\n selector: 'rs-module-video',\n standalone: true,\n imports: [\n RenderingModule,\n MatIcon,\n MatIconButton,\n FormsModule,\n MatMenu,\n MatMenuTrigger,\n MatMenuItem,\n EduSharingUiModule\n ],\n templateUrl: './video.component.html',\n styleUrl: './video.component.scss'\n})\nexport class VideoComponent implements RenderModule, AfterViewInit{\n @Input() data: RenderData | undefined;\n @Input() node: Node | undefined;\n @ViewChild('video') videoRef: ElementRef<HTMLVideoElement> | undefined\n activeObject = signal<AssetStateItem | undefined>(undefined);\n hasMultipleResolutions: Boolean = true\n\n get filteredItems(): AssetStateItem[] {\n return this.data?.items?.filter(item => item.status !== 'FAILED') || [];\n }\n\n ngAfterViewInit(): void {\n this.hasMultipleResolutions = (this.data?.items?.length ?? 1) > 1\n const downlink: number = (navigator as any).connection?.downlink;\n let optimalResolution = 720;\n if(downlink < 2) {\n optimalResolution = 240;\n }\n if(downlink > 6) {\n optimalResolution = 1080;\n }\n const allFinishedItems = this.data?.items?.filter(item => item.link !== '')\n this.activeObject.set(allFinishedItems?.sort((a, b) => {\n // sort by the image size closest to the viewport\n return Math.abs(a.width - optimalResolution) > Math.abs(b.width - optimalResolution) ? 1 : -1;\n })[0]);\n }\n\n switchResolution(item: AssetStateItem) {\n this.activeObject.set(item)\n const currentTime = this.videoRef?.nativeElement.currentTime\n this.videoRef?.nativeElement.load()\n if (currentTime !== undefined) {\n this.videoRef!.nativeElement.currentTime = currentTime\n }\n }\n\n protected readonly JSON = JSON;\n}\n","<div class=\"video-wrapper\" *ngIf=\"activeObject()\">\n <video\n controls\n #video\n >\n <source [src]=\"activeObject()?.link | rsAssetLink\" />\n </video>\n <button *ngIf=\"hasMultipleResolutions\"\n mat-icon-button\n [matMenuTriggerFor]=\"resolutionMenu\"\n >\n <mat-icon>settings</mat-icon>\n </button>\n <mat-menu\n #resolutionMenu=\"matMenu\"\n xPosition=\"before\"\n >\n <button\n mat-menu-item\n *ngFor=\"let item of filteredItems\"\n [disabled]=\"item.link === ''\"\n (click)=\"item.height !== activeObject()?.height && switchResolution(item)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"item.link !== '' ? ready : loading\"\n [ngTemplateOutletContext]=\"{item:item}\"\n >\n </ng-container>\n </button>\n\n </mat-menu>\n</div>\n\n<ng-template #ready let-item='item'>\n <div style=\"display: flex; justify-content: space-between\">\n <mat-icon *ngIf=\"item.height === activeObject()?.height\">\n done\n </mat-icon>\n <div *ngIf=\"item.height !== activeObject()?.height\"></div>\n <div>\n {{item.height}}p\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading let-item='item'>\n <div style=\"display: flex; justify-content: space-between\">\n <div>\n <ng-container *ngIf=\"item.status === 'PROCESSING'; else queue\">\n {{ 'RENDERING.CONVERTING' | translate }}: {{ item.progress }}%\n </ng-container>\n <ng-template #queue>\n {{ 'RENDERING.QUEUED' | translate }}: {{ item.progress }}\n </ng-template>\n </div>\n <div style=\"padding-left: .5em\">\n {{item.height}}p\n </div>\n </div>\n</ng-template>\n","import {Injectable, InjectionToken, Provider} from '@angular/core';\n\nexport const RENDERING_SERVICE_LIB_CONFIG = new InjectionToken<RenderingServiceLibConfiguration>(\n 'RENDERING_SERVICE_LIB_CONFIG',\n);\n@Injectable({\n providedIn: 'root',\n})\nexport class RenderingServiceLibConfiguration {\n /**\n * the assets url\n * this is important for modules that require to fetch external javascript, i.e. ng2-pdfjs-viewer\n */\n assetsUrl: string | null = null;\n static create(params: RenderingServiceLibConfigurationParams = {}): RenderingServiceLibConfiguration {\n return { ...new RenderingServiceLibConfiguration(), ...params };\n }\n}\n\nexport type RenderingServiceLibConfigurationParams = Partial<RenderingServiceLibConfiguration>;\n\nexport function getConfigProvider(params?: RenderingServiceLibConfigurationParams): Provider[] {\n return [\n // Provide the params given to `forRoot()`. These can be overridden by the application by\n // providing `EDU_SHARING_API_CONFIG` itself.\n {\n provide: RENDERING_SERVICE_LIB_CONFIG,\n useValue: params,\n }\n ];\n}\n","import {\n Component,\n HostListener,\n Inject,\n Input,\n OnChanges,\n Optional,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatButtonModule} from '@angular/material/button';\nimport {RenderData} from '../../dto/RenderData';\nimport {AssetControllerService, GetAsset$Params} from 'ngx-rendering-service-api';\nimport {\n RENDERING_SERVICE_LIB_CONFIG,\n RenderingServiceLibConfiguration\n} from '../../../rendering-service-lib-configuration';\nimport {NgxExtendedPdfViewerComponent, NgxExtendedPdfViewerModule, pdfDefaultOptions} from \"ngx-extended-pdf-viewer\";\nimport {NodeHelperService, NodesRightMode} from \"ngx-edu-sharing-ui\";\n\n@Component({\n selector: 'rs-module-pdf',\n standalone: true,\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n NgxExtendedPdfViewerModule\n ],\n templateUrl: './pdf.component.html',\n styleUrl: './pdf.component.scss'\n})\nexport class PdfComponent implements RenderModule, OnChanges {\n @ViewChild(NgxExtendedPdfViewerComponent) pdfViewer!: NgxExtendedPdfViewerComponent;\n @Input() data: RenderData | undefined\n @Input() node: Node | undefined\n restrictedView: boolean = false\n fileData: Uint8Array | string | undefined;\n\n constructor(\n private assetControllerService: AssetControllerService,\n private nodeHelper: NodeHelperService,\n @Optional() @Inject(RENDERING_SERVICE_LIB_CONFIG) public configuration: RenderingServiceLibConfiguration,\n ) {\n pdfDefaultOptions.assetsFolder = (configuration.assetsUrl || '') + '/ngx-extended-pdf-viewer'\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.nodeHelper.getNodesRight([this.node!], 'DownloadContent', NodesRightMode.Effective)) {\n this.fileData = this.data?.items?.[0]?.link ?? ''\n } else {\n this.restrictedView = true\n this.downloadFile()\n }\n }\n\n private downloadFile() {\n if (this.data?.items === undefined || this.data.items[0].link === '') {\n return\n }\n const url = new URL(this.data.items[0].link)\n const assetParams = url.searchParams.get('assetParams')\n if (assetParams === null) {\n return\n }\n const params: GetAsset$Params = {\n assetParams: assetParams\n }\n this.assetControllerService.getAsset$Response(params)\n .subscribe(async (response) => {\n if (response.headers.get('content-type') !== 'application/octet-stream') {\n return\n }\n const arrayBuffer = await response.body.arrayBuffer();\n this.fileData = new Uint8Array(arrayBuffer);\n }\n )\n }\n\n @HostListener('window:keydown.control.s', ['$event'])\n @HostListener('window:keydown.F12', ['$event'])\n handleShortCutEvents(event: KeyboardEvent) {\n if (this.restrictedView) {\n event.preventDefault();\n if (event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n } else {\n event.stopPropagation();\n }\n }\n }\n\n @HostListener('window:contextmenu', ['$event'])\n handleContextMenu(event: MouseEvent) {\n if (this.restrictedView) {\n event.preventDefault();\n if (event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n } else {\n event.stopPropagation();\n }\n }\n }\n}\n","<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'100vh'\"\n [showSecondaryToolbarButton]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n","\nexport type FrontendModuleConfig = {\n module: string,\n urlModuleConfig: UrlModuleConfig | null\n}\n\nexport type UrlModuleConfig = {\n embedding: UrlEmbeddings,\n externalId: string\n}\n\nexport enum UrlEmbeddings {\n YOUTUBE,\n VIMEO,\n VIDEO,\n AUDIO,\n IMAGE,\n LTI13TOOL,\n H5P,\n PREZI,\n LEARNINGAPPS\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatButtonModule} from '@angular/material/button';\nimport {YouTubePlayer} from '@angular/youtube-player';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\nimport {NgOptimizedImage} from '@angular/common';\nimport {RenderData} from '../../dto/RenderData';\nimport {UrlEmbeddings} from '../../dto/FrontendModuleConfig';\nimport {EduSharingUiModule} from 'ngx-edu-sharing-ui';\n\n@Component({\n selector: 'rs-module-url',\n standalone: true,\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n YouTubePlayer,\n NgOptimizedImage,\n EduSharingUiModule,\n ],\n templateUrl: './url.component.html',\n styleUrl: './url.component.scss'\n})\nexport class UrlComponent implements RenderModule, OnInit {\n @Input() data: RenderData | undefined;\n @Input() node: Node | undefined;\n gdpr: any[] | undefined = undefined\n gdprOk: boolean = true\n embedding?: UrlEmbeddings\n externalId?: string\n sanitizedUrl: SafeResourceUrl | null = null\n url: string = ''\n\n constructor(private sanitizer: DomSanitizer) {\n }\n\n ngOnInit() {\n this.embedding = this.data?.frontendModuleConfig?.urlModuleConfig?.embedding\n this.externalId = this.data?.frontendModuleConfig?.urlModuleConfig?.externalId\n this.url = this.node?.properties?.['ccm:wwwurl']?.[0] || ''\n if (this.embedding === UrlEmbeddings.VIMEO) {\n this.sanitizedUrl = this.getVimeoUri()\n } else if (this.embedding === UrlEmbeddings.PREZI) {\n this.sanitizedUrl = this.getPreziUrl()\n } else if (this.embedding === UrlEmbeddings.LEARNINGAPPS) {\n this.sanitizedUrl = this.getLearningAppsUrl()\n }\n }\n\n isProtected(): boolean {\n return this.gdpr === undefined;\n }\n\n consentToGdprWarning() {\n this.gdprOk = true\n }\n\n getVimeoUri(): SafeResourceUrl {\n let url = '//player.vimeo.com/video/' + this.externalId\n return this.sanitizer.bypassSecurityTrustResourceUrl(url)\n }\n\n getPreziUrl(): SafeResourceUrl {\n const preziUrl = this.url.slice(-1) === '/' ? this.url.substring(0, this.url.length - 1) : this.url\n return this.sanitizer.bypassSecurityTrustResourceUrl(preziUrl)\n }\n\n getLearningAppsUrl(): SafeResourceUrl {\n const learningAppsUrl = this.url.replace('https://learningapps.org/', 'https://learningapps.org/view')\n return this.sanitizer.bypassSecurityTrustResourceUrl(learningAppsUrl)\n }\n\n protected readonly UrlEmbeddings = UrlEmbeddings;\n}\n","<div class=\"url-wrapper\">\n <div *ngIf=\"gdprOk\">\n <ng-container *ngIf=\"embedding === UrlEmbeddings.YOUTUBE && externalId !== ''\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n ></youtube-player>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\"></iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.AUDIO && url !== ''\" >\n <div class=\"audio-wrapper\">\n <video\n controls\n style=\"max-width: 100%\"\n [src]=\"url\"\n poster=\"assets/img/audio.svg\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.IMAGE && url !== ''\">\n <div class=\"image-wrapper\">\n <img\n [ngSrc]=\"url\"\n [alt]=\"node?.title ?? 'Edu-Sharing image'\"\n [title]=\"node?.title ?? 'Edu-Sharing image'\"\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIDEO && url !== ''\">\n <div class=\"video-wrapper\">\n <video\n controls\n [src]=\"url\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(embedding === UrlEmbeddings.PREZI || embedding === UrlEmbeddings.LEARNINGAPPS) && url !== ''\">\n <iframe class=\"eduUrlFrame\" [src]=sanitizedUrl allowfullscreen=\"\" allow=\"autoplay; fullscreen\" ></iframe>\n </ng-container>\n\n </div>\n <div *ngIf=\"!gdprOk\">\n {{ 'RENDERING.GDPR.GDPR_DIALOG' | translate }}\n <button mat-button (click)=\"consentToGdprWarning()\">{{'RENDERING.GDPR.GDPR_CONTINUE' | translate}}</button>\n </div>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatButtonModule} from '@angular/material/button';\nimport {RenderData} from '../../dto/RenderData';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\n\n@Component({\n selector: 'rs-module-edu-html',\n standalone: true,\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n ],\n templateUrl: './eduHtml.component.html',\n styleUrl: './eduHtml.component.scss'\n})\nexport class EduHtmlComponent implements RenderModule, OnInit {\n @Input() data: RenderData | undefined\n @Input() node: Node | undefined\n sanitizedUrl: SafeResourceUrl = new class implements SafeResourceUrl {\n }\n\n constructor(private sanitizer: DomSanitizer) {\n }\n\n ngOnInit() {\n if (this.data?.items !== undefined && this.data.items[0].link) {\n this.sanitizedUrl = this.getSafeUri()\n }\n }\n\n getSafeUri() {\n if (this.data?.items !== undefined && this.data.items[0].link) {\n const uri = new URL(this.data.items[0].link)\n /**\n if (uri.hostname.includes('nip.io')) {\n uri.hostname = 'localhost'\n }\n */\n return this.sanitizer.bypassSecurityTrustResourceUrl(uri.toString())\n }\n return new class implements SafeResourceUrl {\n }\n }\n}\n","<div class=\"eduHtml-wrapper\" *ngIf=\"data?.items !== undefined\">\n <iframe class=\"frame\" [src]=\"sanitizedUrl\"></iframe>\n</div>\n","import {NgModule} from '@angular/core';\n\n@NgModule({\n imports: []\n})\nexport class RenderingApiModule {}\n","import {Injectable} from '@angular/core';\nimport {ModuleInfoControllerService} from 'ngx-rendering-service-api';\nimport {firstValueFrom} from 'rxjs';\nimport {Node, RestConstants} from 'ngx-edu-sharing-api';\nimport {FrontendModuleConfig, UrlEmbeddings, UrlModuleConfig} from './lib/dto/FrontendModuleConfig';\n\n@Injectable({providedIn: 'root'})\nexport class ModuleInfoService {\n\n private availableMediaTypes: String[] = []\n private availableMimeTypes: String[] = []\n private availableMimeTypePrefixes: String[] = []\n private availableReplicationSources: String[] = []\n private availableResourceTypes: String[] = []\n private availableRemoteRepositories: String[] = []\n\n constructor(\n private service: ModuleInfoControllerService\n ) {}\n\n async isAvailableBackendObject(node: Node| undefined): Promise<boolean> {\n if (!this.isInitialized()) {\n const result = await firstValueFrom(this.service.getModulesInfo({repoId: node?.ref.repo ?? ''}))\n result.forEach(info => {\n if (info.typeMapping.type !== undefined && info.typeMapping.type !== null) {\n this.availableMediaTypes.push(info.typeMapping.type)\n } else if (info.typeMapping.remoteRepositoryType !== undefined && info.typeMapping.remoteRepositoryType !== null) {\n this.availableRemoteRepositories.push(info.typeMapping.remoteRepositoryType)\n } else if(info.typeMapping.resourceType !== undefined && info.typeMapping.resourceType !== null) {\n this.availableResourceTypes.push(info.typeMapping.resourceType)\n } else if(info.typeMapping.replicationSource !== undefined && info.typeMapping.replicationSource !== null) {\n this.availableReplicationSources.push(info.typeMapping.replicationSource)\n } else if (info.typeMapping.mimeTypeSuffix !== undefined\n && info.typeMapping.mimeTypeSuffix !== null\n && info.typeMapping.mimeTypePrefix !== undefined\n && info.typeMapping.mimeTypePrefix !== null\n ) {\n this.availableMimeTypes.push(`${info.typeMapping.mimeTypePrefix}/${info.typeMapping.mimeTypeSuffix}`)\n } else if (info.typeMapping.mimeTypePrefix !== undefined && info.typeMapping.mimeTypePrefix !== null) {\n this.availableMimeTypePrefixes.push(info.typeMapping.mimeTypePrefix)\n }\n })\n }\n const mimeTypePrefix = (node?.mimetype ?? '').split('/', 2)[0]\n return this.availableMediaTypes.includes(node?.mediatype ?? '') ||\n this.availableRemoteRepositories.includes(node?.remote?.repository?.repositoryType ?? '') ||\n this.availableReplicationSources.includes(node?.properties?.[RestConstants.CCM_PROP_REPLICATIONSOURCE]?.[0]?? '') ||\n this.availableResourceTypes.includes(node?.properties?.[RestConstants.CCM_PROP_CCRESSOURCETYPE]?.[0]?? '') ||\n this.availableMimeTypes.includes(node?.mimetype ?? '') ||\n this.availableMimeTypePrefixes.includes(mimeTypePrefix)\n }\n\n private isInitialized(): boolean {\n return this.availableMediaTypes.length\n + this.availableMimeTypes.length\n + this.availableMimeTypePrefixes.length\n + this.availableReplicationSources.length\n + this.availableResourceTypes.length\n + this.availableRemoteRepositories.length !== 0\n }\n\n getFrontendModuleSetting(node: Node): FrontendModuleConfig {\n const urlModuleConfig = this.checkUrlModule(node)\n if (urlModuleConfig !== null) {\n return urlModuleConfig\n }\n return {\n module: 'default',\n urlModuleConfig: null\n }\n }\n\n checkUrlModule(node: Node): FrontendModuleConfig | null {\n const url = node.properties?.['ccm:wwwurl']?.[0] || ''\n const checkLearningApps = (): UrlModuleConfig | null => {\n if (node.remote?.repository?.repositoryType?.toLowerCase() === 'learningapps') {\n return {\n embedding: UrlEmbeddings.LEARNINGAPPS,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function checkYouTube\n */\n const checkYouTube = (): UrlModuleConfig | null => {\n if (node.remote?.repository?.repositoryType?.toLowerCase() === 'youtube') {\n return {\n embedding: UrlEmbeddings.YOUTUBE,\n externalId: node.remote?.id ?? ''\n }\n }\n if (url.includes('youtu.be') ) {\n const split = url.split('/')\n return {\n embedding: UrlEmbeddings.YOUTUBE,\n externalId: split[split.length - 1]\n }\n }\n if (url.includes('.youtube.com/watch?')) {\n const urlObject = new URL(url)\n return {\n embedding: UrlEmbeddings.YOUTUBE,\n externalId: urlObject.searchParams.get('v') ?? ''\n }\n }\n return null\n }\n /**\n * Function checkVimeo\n */\n const checkVimeo = (): UrlModuleConfig | null => {\n if (url.includes('vimeo.com')) {\n const split = url.split('/')\n return {\n embedding: UrlEmbeddings.VIMEO,\n externalId: split[split.length - 1]\n }\n }\n return null\n }\n const checkGenericVideo = (): UrlModuleConfig | null => {\n if (url.length > 0 && ['mp4', 'webm'].includes(url.split('.').pop() ?? '')) {\n return {\n embedding: UrlEmbeddings.VIDEO,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function checkAudio\n */\n const checkAudio = (): UrlModuleConfig | null => {\n if (url.length > 0 && node.mimetype?.startsWith('audio')) {\n return {\n embedding: UrlEmbeddings.AUDIO,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function checkLti13ToolObject\n */\n const checkLti13ToolObject = (): UrlModuleConfig | null => {\n if (node.aspects?.includes('ccm:ltitool_node')) {\n return {\n embedding: UrlEmbeddings.LTI13TOOL,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function checkImage\n */\n const checkImage = (): UrlModuleConfig | null => {\n if (node.properties?.['ccm:remoterepositorytype']?.[0] === 'DDB') {\n return null\n }\n if (node.mediatype === 'file-image') {\n return {\n embedding: UrlEmbeddings.IMAGE,\n externalId: ''\n }\n }\n const mimeTypeSplit = node.mimetype?.split('/') ?? []\n if (mimeTypeSplit.length === 2 && ['png', 'jpg', 'jpeg', 'gif'].includes(mimeTypeSplit[1])) {\n return {\n embedding: UrlEmbeddings.IMAGE,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function detectH5P\n */\n const detectH5P = (): UrlModuleConfig | null => {\n if (url.length > 0 && url.includes('h5p.org/h5p/embed')) {\n return {\n embedding: UrlEmbeddings.H5P,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function detectPrezi\n */\n const detectPrezi = (): UrlModuleConfig | null => {\n if (url.length > 0 &&\n (url.includes('prezi.com/view/') || url.includes('prezi.com/embed/') || url.includes('prezi.com/p/embed'))\n ) {\n return {\n embedding: UrlEmbeddings.PREZI,\n externalId: ''\n }\n }\n return null\n }\n\n /**\n * embedding if applicable to node\n */\n const embedding =\n checkLearningApps()\n ?? checkYouTube()\n ?? checkVimeo()\n ?? checkGenericVideo()\n ?? checkAudio()\n ?? checkImage()\n ?? checkLti13ToolObject()\n ?? detectH5P()\n ?? detectPrezi()\n\n if (embedding !== null) {\n return {\n module: 'url',\n urlModuleConfig: embedding\n }\n }\n return null\n }\n}\n","import {Component, Inject, Input, OnChanges, OnInit, Optional, SimpleChanges} from '@angular/core';\nimport {RenderingModule} from './rendering.module';\nimport {\n JobInfoControllerService,\n JobInfoReply,\n RenderControllerWrapperService,\n RenderDataRequestWithToken,\n RenderDataResponse\n} from 'ngx-rendering-service-api';\nimport {BehaviorSubject, debounceTime, firstValueFrom, interval, Subject, switchMap, takeUntil} from 'rxjs';\nimport {ImageComponent} from './module/image/image.component';\nimport {RenderingApiModule} from './rendering-api.module';\nimport {VideoComponent} from './module/video/video.component';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {EduSharingApiModule, Node} from 'ngx-edu-sharing-api';\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\nimport {AssetStateItem, RenderData} from './dto/RenderData';\nimport {PdfComponent} from './module/pdf/pdf.component';\nimport {UrlComponent} from './module/url/url.component';\nimport {EduHtmlComponent} from './module/eduhtml/eduHtml.component';\nimport {ModuleInfoService} from '../module-info.service';\nimport {filter} from 'rxjs/operators';\nimport {PlatformLocation} from '@angular/common';\nimport {DefaultComponent} from './module/default/default.component';\nimport {FrontendModuleConfig} from './dto/FrontendModuleConfig';\nimport {AudioComponent} from './module/audio/audio.component';\nimport {BinderComponent} from './module/binder/binder.component';\nimport {DdbComponent} from './module/ddb/ddb.component';\nimport {TranslateService} from '@ngx-translate/core';\nimport {EduSharingUiModule} from 'ngx-edu-sharing-ui';\nimport {ErrorComponent} from './module/error/error.component';\nimport {RENDERING_SERVICE_LIB_CONFIG, RenderingServiceLibConfiguration} from '../rendering-service-lib-configuration';\n\n@Component({\n selector: 'rs-root',\n standalone: true,\n imports: [\n RenderingApiModule,\n RenderingModule,\n ImageComponent,\n VideoComponent,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n PdfComponent,\n UrlComponent,\n EduHtmlComponent,\n DefaultComponent,\n AudioComponent,\n BinderComponent,\n DdbComponent,\n EduSharingApiModule,\n EduSharingUiModule,\n ErrorComponent,\n ],\n providers: [\n TranslateService\n ],\n templateUrl: './render.component.html',\n styleUrl: './render.component.scss'\n})\nexport class RenderComponent implements OnChanges, OnInit {\n @Input() request: RenderDataRequestWithToken | undefined;\n @Input() node: Node | undefined;\n @Input() serviceWorkerUrl: string | undefined;\n @Input() activateServiceWorker: boolean = true;\n @Input() assetUrl: string = '';\n serviceWorkerReady = false;\n loadData = new Subject<void>();\n renderData$ = new BehaviorSubject<RenderData | null>(null);\n finished = new Subject<void>();\n someButNotAllFinished = new Subject<Boolean>()\n progress$ = new BehaviorSubject<{ module: string, progress?: number } | null>(null);\n\n constructor(\n private renderControllerService: RenderControllerWrapperService,\n private jobInfoControllerService: JobInfoControllerService,\n private moduleInfoService: ModuleInfoService,\n private platformLocation: PlatformLocation,\n @Optional() @Inject(RENDERING_SERVICE_LIB_CONFIG) public configuration: RenderingServiceLibConfiguration,\n ) {\n this.loadData.pipe(\n filter(() => this.node !== undefined && this.serviceWorkerReady),\n debounceTime(10),\n switchMap(() => {\n // subscribe error handling\n return this.checkModule()\n })\n ).subscribe({\n next: async (frontendModule) => {\n // No further calls to rs2 necessary if we have a frontend only module\n if (frontendModule !== null) {\n const data: RenderData = {\n module: frontendModule.module,\n frontendModuleConfig: frontendModule\n }\n this.renderData$.next(data)\n this.finished.next()\n } else {\n try {\n const renderResponseData = await firstValueFrom(this.renderControllerService.getRenderDataToken(this.request!!))\n // Case 1: no job returned => no polling needed\n if (renderResponseData.jobId === null) {\n this.handleRenderingResponseWithoutJob(renderResponseData)\n } else {\n this.progress$.next({module: renderResponseData.module ?? ''});\n interval(500).pipe(\n takeUntil(this.finished),\n switchMap(() => this.jobInfoControllerService.getJobInfo({jobId: renderResponseData.jobId!!}).pipe()),\n ).subscribe({\n next: async (jobInfo) => {\n // Some, but not all, jobs are in a final status (this means some are still QUEUED or PROCESSING)\n if (jobInfo.jobs.some(j => j.status === 'FINISHED') && jobInfo.status !== 'FINISHED') {\n this.handleJobInfoWithSubJobsInProgress(renderResponseData, jobInfo)\n // main job finished or partially failed\n } else if (jobInfo.status === 'FINISHED' || jobInfo.status === 'PARTIALLY_FAILED') {\n this.handleFinishedOrPartialJobInfo(renderResponseData, jobInfo)\n // Main job failed => no module but error page\n } else if (jobInfo.status === 'FAILED') {\n this.handleFailedMainJob(jobInfo)\n } else {\n // no finished jobs -> show either one progress bar with race leader (progress 0-100)\n // or queue position (progress (-inf,-1])\n this.handleMainJobWithNoSubJobInFinalStatus(jobInfo)\n }\n },\n error: error => {\n this.handleApiError(error)\n }});\n }\n } catch (error) {\n this.handleApiError(error)\n }\n }\n },\n error: (error) => {\n this.handleApiError(error)\n }\n });\n }\n\n handleApiError(error: any) {\n const publicMessage = error.error.userMessage ?? 'GENERIC_ERROR_MESSAGE'\n const data: RenderData = {\n module: 'ERROR',\n publicErrorMessage: publicMessage\n }\n this.renderData$.next(data)\n this.finished.next()\n }\n\n async ngOnInit() {\n if (this.assetUrl !== '') {\n console.info('setting assetUrl to: ' + this.assetUrl + '');\n this.configuration.assetsUrl = this.assetUrl;\n }\n if (!this.activateServiceWorker) {\n this.serviceWorkerReady = true;\n this.loadData.next();\n }\n // await firstValueFrom(this.translationsService.initialize())\n if ('serviceWorker' in navigator) {\n const reg = await navigator.serviceWorker.getRegistrations();\n await Promise.all(reg?.map((r: ServiceWorkerRegistration) => r.unregister()));\n const serviceWorkerUrl = this.serviceWorkerUrl ?? (this.platformLocation.getBaseHrefFromDOM() + 'edu-service-worker.js');\n const scope = this.serviceWorkerUrl ? '/' : this.platformLocation.getBaseHrefFromDOM();\n const registration = await navigator.serviceWorker.register(serviceWorkerUrl, {\n scope: scope\n });\n if (registration.waiting) {\n registration.waiting.postMessage({type: 'SKIP_WAITING'});\n }\n this.serviceWorkerReady = true;\n this.loadData.next();\n registration.onupdatefound = () => {\n const newWorker = registration.installing;\n if (newWorker) {\n newWorker.onstatechange = () => {\n if (newWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n newWorker.postMessage({type: 'SKIP_WAITING'});\n }\n }\n };\n }\n };\n navigator.serviceWorker.addEventListener('controllerchange', () => {\n console.info('Service Worker controlling this page.');\n });\n } else {\n console.warn('Service worker API not available');\n }\n }\n\n async ngOnChanges(_: SimpleChanges) {\n this.loadData.next();\n }\n\n async checkModule(): Promise<FrontendModuleConfig | null> {\n if (!await this.moduleInfoService.isAvailableBackendObject(this.node)) {\n if (this.node !== undefined) {\n return this.moduleInfoService.getFrontendModuleSetting(this.node)\n }\n return {module: 'default', urlModuleConfig: null}\n } else {\n return null\n }\n }\n\n handleRenderingResponseWithoutJob(renderDataResponse: RenderDataResponse) {\n const items = renderDataResponse.objectLinks?.map(item => {\n const assetItem: AssetStateItem = {\n link: item.link,\n progress: 100,\n height: item.height,\n width: item.width,\n additionalData: undefined,\n status: 'FINISHED'\n }\n return assetItem\n })\n const data: RenderData = {\n module: renderDataResponse.module ?? '',\n items: items\n }\n renderDataResponse.objectLinks !== undefined && this.renderData$.next(data);\n this.finished.next();\n }\n\n handleJobInfoWithSubJobsInProgress(renderDataResponse: RenderDataResponse, jobInfo: JobInfoReply) {\n const items = jobInfo.jobs.map(subJob => {\n const assetItem: AssetStateItem = {\n link: subJob.objectLink?.link ?? '',\n progress: subJob.status !== 'QUEUED' ? subJob.progress : -(subJob.progress + 1),\n height: subJob.objectLink?.height ?? subJob.quality,\n width: subJob.objectLink?.width ?? 0,\n additionalData: subJob.additionalData,\n status: subJob.status,\n }\n return assetItem\n })\n const data: RenderData = {\n module: renderDataResponse.module ?? '',\n items: items\n }\n this.renderData$.next(data)\n this.someButNotAllFinished.next(true)\n }\n\n handleFinishedOrPartialJobInfo(renderDataResponse: RenderDataResponse, jobInfo: JobInfoReply) {\n const items = jobInfo.jobs.map(subJob => {\n const assetItem: AssetStateItem = {\n link: subJob.objectLink?.link ?? '',\n progress: subJob.progress,\n height: subJob.objectLink?.height ?? subJob.quality,\n width: subJob.objectLink?.width ?? 0,\n additionalData: subJob.additionalData,\n publicErrorMessage: subJob.publicErrorMessage,\n status:subJob.status,\n }\n return assetItem\n })\n const data: RenderData = {\n module: renderDataResponse.module ?? '',\n items: items\n }\n this.renderData$.next(data)\n this.finished.next()\n }\n\n handleFailedMainJob(jobInfo: JobInfoReply) {\n const data: RenderData = {\n module: 'ERROR',\n publicErrorMessage: jobInfo.userMessage ?? 'GENERIC_ERROR_MESSAGE'\n }\n this.renderData$.next(data)\n this.finished.next()\n }\n\n handleMainJobWithNoSubJobInFinalStatus(jobInfo: JobInfoReply) {\n let progress = 0\n if (jobInfo.jobs.some(j => j.status === 'PROCESSING')) {\n progress = Math.max(...jobInfo.jobs.map(j => j.progress))\n } else if (jobInfo.jobs.some(j => j.status === 'QUEUED')) {\n progress = -(Math.min(...jobInfo.jobs.map(j => j.progress + 1)))\n }\n this.progress$.next({\n module: jobInfo.module ?? '',\n progress: progress\n });\n }\n}\n","<div class=\"module module-{{(renderData$ | async)?.module}}\">\n <ng-container *ngIf=\"renderData$ | async as data\">\n @defer (when data?.module === 'IMAGE'){\n <rs-module-image [data]=\"data\" [node]=\"node\"></rs-module-image>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'VIDEO'){\n <rs-module-video [data]=\"data\" [node]=\"node\"></rs-module-video>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'PDF' || data?.module === 'DOCUMENT') {\n <rs-module-pdf [data]=\"data\" [node]=\"node\"></rs-module-pdf>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'EDUHTML' || data?.module === 'H5P' || data?.module === 'JUPYTER' || data.module === 'SPREADSHEET') {\n <rs-module-edu-html [data]=\"data\" [node]=\"node\"></rs-module-edu-html>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'AUDIO'){\n <rs-module-audio [data]=\"data\" [node]=\"node\"></rs-module-audio>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'BINDER'){\n <rs-module-binder [data]=\"data\" [node]=\"node\"></rs-module-binder>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'DDB'){\n <rs-module-ddb [data]=\"data\" [node]=\"node\"></rs-module-ddb>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n <ng-container *ngIf=\"data.module === 'default'\">\n @defer (when data.module === 'default') {\n <rs-module-default [node]=\"node\"></rs-module-default>\n }\n </ng-container>\n <ng-container *ngIf=\"data.module === 'url'\">\n @defer (when data.module === 'url') {\n <rs-module-url [node]=\"node\" [data]=\"data\"></rs-module-url>\n }\n </ng-container>\n <ng-container *ngIf=\"data.module === 'ERROR'\">\n @defer (when data.module === 'ERROR') {\n <rs-module-error [node]=\"node\" [data]=\"data\"></rs-module-error>\n }\n </ng-container>\n </ng-container>\n\n <div class=\"progress\" *ngIf=\"(renderData$ | async) === null;\">\n <ng-container *ngIf=\"progress$ | async as progress\">\n <ng-container [ngSwitch]=\"['VIDEO', 'AUDIO'].includes(progress.module) ? 'bar' : 'spinner'\">\n <ng-container *ngSwitchCase=\"'bar'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">Queue position: {{-(progress.progress ?? 0)}}</div>\n <mat-progress-bar [value]=\"(progress.progress ?? 0)\" *ngIf=\"(progress.progress ?? 0) >= 0\"></mat-progress-bar>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spinner'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">Queue position: {{-(progress.progress ?? 0)}</div>\n <mat-spinner [diameter]=\"50\" *ngIf=\"(progress.progress ?? 0) >= 0\"></mat-spinner>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loading>\n <div class=\"progress\">\n <mat-spinner></mat-spinner>\n </div>\n</ng-template>\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {RenderComponent} from './lib/render.component';\nimport {CommonModule} from '@angular/common';\nimport {EduSharingUiConfigurationParams} from 'ngx-edu-sharing-ui/lib/edu-sharing-ui-configuration';\nimport {getConfigProvider, RenderingServiceLibConfigurationParams} from './rendering-service-lib-configuration';\n\n@NgModule({\n declarations: [],\n imports: [\n RenderComponent,\n CommonModule,\n ],\n exports: [\n CommonModule,\n RenderComponent,\n ],\n})\nexport class RenderingServiceLibModule {\n public static forRoot(\n params: RenderingServiceLibConfigurationParams\n): ModuleWithProviders<RenderingServiceLibModule> {\n return {\n ngModule: RenderingServiceLibModule,\n providers: [getConfigProvider(params)]\n };\n }\n}\n","/*\n * Public API Surface of edu-sharing-ui\n */\n\nexport * from './lib/rendering.module';\nexport * from './lib/module/image/image.component';\nexport * from './lib/module/video/video.component';\nexport * from './lib/module/pdf/pdf.component';\nexport * from './lib/module/url/url.component';\nexport * from './lib/module/eduhtml/eduHtml.component';\nexport * from './lib/render.component';\nexport * from './lib/asset-link.pipe';\nexport * from './rendering-service-lib.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.AssetLinkPipe","i3","i4","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-rendering-service-lib.mjs","sources":["../../src/lib/asset-link.pipe.ts","../../src/lib/rendering.module.ts","../../src/lib/module/image/image.component.ts","../../src/lib/module/image/image.component.html","../../src/lib/module/video/video.component.ts","../../src/lib/module/video/video.component.html","../../src/rendering-service-lib-configuration.ts","../../src/lib/module/pdf/pdf.component.ts","../../src/lib/module/pdf/pdf.component.html","../../src/lib/dto/FrontendModuleConfig.ts","../../src/lib/module/url/url.component.ts","../../src/lib/module/url/url.component.html","../../src/lib/module/eduhtml/eduHtml.component.ts","../../src/lib/module/eduhtml/eduHtml.component.html","../../src/lib/rendering-api.module.ts","../../src/module-info.service.ts","../../src/lib/render.component.ts","../../src/lib/render.component.html","../../src/rendering-service-lib.module.ts","../../src/index.ts","../../src/ngx-rendering-service-lib.ts"],"sourcesContent":["import {Injector, Pipe, PipeTransform} from '@angular/core';\nimport {RSApiConfiguration} from 'ngx-rendering-service-api';\n\n/**\n * this pipe transforms any reported asset data uri from the rendering to the uri that is currently configured for the backend\n * this is required in case the rendering service is behind a proxy, i.e. in dev mode\n */\n@Pipe({ name: 'rsAssetLink' })\nexport class AssetLinkPipe implements PipeTransform {\n constructor(\n private injector: Injector,\n ) {\n }\n\n transform(value: string | undefined) {\n if(value) {\n const str = value.split('/public');\n str[0] = this.injector.get(RSApiConfiguration).rootUrl;\n return str.join('/public');\n }\n return value;\n }\n\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AssetLinkPipe} from './asset-link.pipe';\nimport {EduSharingApiModule} from 'ngx-edu-sharing-api';\n\n@NgModule({\n imports: [\n CommonModule,\n EduSharingApiModule.forRoot()\n ],\n declarations: [\n AssetLinkPipe,\n ],\n exports: [\n CommonModule,\n AssetLinkPipe,\n ]\n})\nexport class RenderingModule {}\n","import {AfterViewInit, Component, ElementRef, HostListener, Input, signal} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatButtonModule} from '@angular/material/button';\nimport {RenderData, AssetStateItem} from '../../dto/RenderData';\n\n@Component({\n selector: 'rs-module-image',\n standalone: true,\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n ],\n templateUrl: './image.component.html',\n styleUrl: './image.component.scss'\n})\nexport class ImageComponent implements RenderModule, AfterViewInit {\n @Input() data: RenderData | undefined;\n @Input() node: Node | undefined;\n activeObject = signal<AssetStateItem | undefined>(undefined);\n constructor(public element: ElementRef) { }\n ngAfterViewInit(): void {\n this.loadOptimalSize();\n }\n\n @HostListener('document:fullscreenchange')\n private loadOptimalSize() {\n const size = this.element.nativeElement.getBoundingClientRect();\n const allFinishedItems = this.data?.items?.filter(item => item.link !== '')\n const matchingItem = allFinishedItems?.sort((a, b) => {\n // sort by the image size closest to the viewport\n return Math.abs(a.width - size.width) > Math.abs(b.width - size.width) ? 1 : -1;\n })[0]\n this.activeObject.set(matchingItem);\n }\n\n toggleFullscreen() {\n if(document.fullscreenElement) {\n void document.exitFullscreen();\n } else {\n this.element.nativeElement.requestFullscreen();\n }\n }\n}\n","<div class=\"image-wrapper\"\n *ngIf=\"activeObject()\"\n>\n <img\n #image\n [src]=\"activeObject()?.link | rsAssetLink\"\n [alt]=\"node?.title || node?.name || ''\"\n >\n <button mat-icon-button (click)=\"toggleFullscreen()\"><mat-icon>fullscreen</mat-icon></button>\n</div>\n","import {AfterViewInit, Component, ElementRef, Input, signal, ViewChild} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatIconButton} from '@angular/material/button';\nimport {FormsModule} from '@angular/forms';\nimport {RenderData, AssetStateItem} from '../../dto/RenderData';\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from '@angular/material/menu';\nimport {EduSharingUiModule} from 'ngx-edu-sharing-ui';\n\n@Component({\n selector: 'rs-module-video',\n standalone: true,\n imports: [\n RenderingModule,\n MatIcon,\n MatIconButton,\n FormsModule,\n MatMenu,\n MatMenuTrigger,\n MatMenuItem,\n EduSharingUiModule\n ],\n templateUrl: './video.component.html',\n styleUrl: './video.component.scss'\n})\nexport class VideoComponent implements RenderModule, AfterViewInit{\n @Input() data: RenderData | undefined;\n @Input() node: Node | undefined;\n @ViewChild('video') videoRef: ElementRef<HTMLVideoElement> | undefined\n activeObject = signal<AssetStateItem | undefined>(undefined);\n hasMultipleResolutions: Boolean = true\n\n get filteredItems(): AssetStateItem[] {\n return this.data?.items?.filter(item => item.status !== 'FAILED') || [];\n }\n\n ngAfterViewInit(): void {\n this.hasMultipleResolutions = (this.data?.items?.length ?? 1) > 1\n const downlink: number = (navigator as any).connection?.downlink;\n let optimalResolution = 720;\n if(downlink < 2) {\n optimalResolution = 240;\n }\n if(downlink > 6) {\n optimalResolution = 1080;\n }\n const allFinishedItems = this.data?.items?.filter(item => item.link !== '')\n this.activeObject.set(allFinishedItems?.sort((a, b) => {\n // sort by the image size closest to the viewport\n return Math.abs(a.width - optimalResolution) > Math.abs(b.width - optimalResolution) ? 1 : -1;\n })[0]);\n }\n\n switchResolution(item: AssetStateItem) {\n this.activeObject.set(item)\n const currentTime = this.videoRef?.nativeElement.currentTime\n this.videoRef?.nativeElement.load()\n if (currentTime !== undefined) {\n this.videoRef!.nativeElement.currentTime = currentTime\n }\n }\n\n protected readonly JSON = JSON;\n}\n","<div class=\"video-wrapper\" *ngIf=\"activeObject()\">\n <video\n controls\n #video\n >\n <source [src]=\"activeObject()?.link | rsAssetLink\" />\n </video>\n <button *ngIf=\"hasMultipleResolutions\"\n mat-icon-button\n [matMenuTriggerFor]=\"resolutionMenu\"\n >\n <mat-icon>settings</mat-icon>\n </button>\n <mat-menu\n #resolutionMenu=\"matMenu\"\n xPosition=\"before\"\n >\n <button\n mat-menu-item\n *ngFor=\"let item of filteredItems\"\n [disabled]=\"item.link === ''\"\n (click)=\"item.height !== activeObject()?.height && switchResolution(item)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"item.link !== '' ? ready : loading\"\n [ngTemplateOutletContext]=\"{item:item}\"\n >\n </ng-container>\n </button>\n\n </mat-menu>\n</div>\n\n<ng-template #ready let-item='item'>\n <div style=\"display: flex; justify-content: space-between\">\n <mat-icon *ngIf=\"item.height === activeObject()?.height\">\n done\n </mat-icon>\n <div *ngIf=\"item.height !== activeObject()?.height\"></div>\n <div>\n {{item.height}}p\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading let-item='item'>\n <div style=\"display: flex; justify-content: space-between\">\n <div>\n <ng-container *ngIf=\"item.status === 'PROCESSING'; else queue\">\n {{ 'RENDERING.CONVERTING' | translate }}: {{ item.progress }}%\n </ng-container>\n <ng-template #queue>\n {{ 'RENDERING.QUEUED' | translate }}: {{ item.progress }}\n </ng-template>\n </div>\n <div style=\"padding-left: .5em\">\n {{item.height}}p\n </div>\n </div>\n</ng-template>\n","import {Injectable, InjectionToken, Provider} from '@angular/core';\n\nexport const RENDERING_SERVICE_LIB_CONFIG = new InjectionToken<RenderingServiceLibConfiguration>(\n 'RENDERING_SERVICE_LIB_CONFIG',\n);\n@Injectable({\n providedIn: 'root',\n})\nexport class RenderingServiceLibConfiguration {\n /**\n * the assets url\n * this is important for modules that require to fetch external javascript, i.e. ng2-pdfjs-viewer\n */\n assetsUrl: string | null = null;\n static create(params: RenderingServiceLibConfigurationParams = {}): RenderingServiceLibConfiguration {\n return { ...new RenderingServiceLibConfiguration(), ...params };\n }\n}\n\nexport type RenderingServiceLibConfigurationParams = Partial<RenderingServiceLibConfiguration>;\n\nexport function getConfigProvider(params?: RenderingServiceLibConfigurationParams): Provider[] {\n return [\n // Provide the params given to `forRoot()`. These can be overridden by the application by\n // providing `EDU_SHARING_API_CONFIG` itself.\n {\n provide: RENDERING_SERVICE_LIB_CONFIG,\n useValue: params,\n }\n ];\n}\n","import {\n Component,\n HostListener,\n Inject,\n Input,\n OnChanges,\n Optional,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatButtonModule} from '@angular/material/button';\nimport {RenderData} from '../../dto/RenderData';\nimport {AssetControllerService, GetAsset$Params} from 'ngx-rendering-service-api';\nimport {\n RENDERING_SERVICE_LIB_CONFIG,\n RenderingServiceLibConfiguration\n} from '../../../rendering-service-lib-configuration';\nimport {NgxExtendedPdfViewerComponent, NgxExtendedPdfViewerModule, pdfDefaultOptions} from 'ngx-extended-pdf-viewer';\nimport {NodeHelperService, NodesRightMode} from 'ngx-edu-sharing-ui';\n\n@Component({\n selector: 'rs-module-pdf',\n standalone: true,\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n NgxExtendedPdfViewerModule\n ],\n templateUrl: './pdf.component.html',\n styleUrl: './pdf.component.scss'\n})\nexport class PdfComponent implements RenderModule, OnChanges {\n @ViewChild(NgxExtendedPdfViewerComponent) pdfViewer!: NgxExtendedPdfViewerComponent;\n @Input() data: RenderData | undefined\n @Input() node: Node | undefined\n restrictedView: boolean = false\n fileData: Uint8Array | string | undefined;\n\n constructor(\n private assetControllerService: AssetControllerService,\n private nodeHelper: NodeHelperService,\n @Optional() @Inject(RENDERING_SERVICE_LIB_CONFIG) public configuration: RenderingServiceLibConfiguration,\n ) {\n if (configuration && configuration.assetsUrl) {\n pdfDefaultOptions.assetsFolder = (configuration?.assetsUrl || '') + '/ngx-extended-pdf-viewer'\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.nodeHelper.getNodesRight([this.node!], 'DownloadContent', NodesRightMode.Effective)) {\n this.fileData = this.data?.items?.[0]?.link ?? ''\n } else {\n this.restrictedView = true\n this.downloadFile()\n }\n }\n\n private downloadFile() {\n if (this.data?.items === undefined || this.data.items[0].link === '') {\n return\n }\n const url = new URL(this.data.items[0].link)\n const assetParams = url.searchParams.get('assetParams')\n if (assetParams === null) {\n return\n }\n const params: GetAsset$Params = {\n assetParams: assetParams\n }\n this.assetControllerService.getAsset$Response(params)\n .subscribe(async (response) => {\n if (response.headers.get('content-type') !== 'application/octet-stream') {\n return\n }\n const arrayBuffer = await response.body.arrayBuffer();\n this.fileData = new Uint8Array(arrayBuffer);\n }\n )\n }\n\n @HostListener('window:keydown.control.s', ['$event'])\n @HostListener('window:keydown.F12', ['$event'])\n handleShortCutEvents(event: KeyboardEvent) {\n if (this.restrictedView) {\n event.preventDefault();\n if (event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n } else {\n event.stopPropagation();\n }\n }\n }\n\n @HostListener('window:contextmenu', ['$event'])\n handleContextMenu(event: MouseEvent) {\n if (this.restrictedView) {\n event.preventDefault();\n if (event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n } else {\n event.stopPropagation();\n }\n }\n }\n}\n","<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [sidebarVisible]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'100vh'\"\n [showSecondaryToolbarButton]=\"false\"\n [showStampEditor]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n","\nexport type FrontendModuleConfig = {\n module: string,\n urlModuleConfig: UrlModuleConfig | null\n}\n\nexport type UrlModuleConfig = {\n embedding: UrlEmbeddings,\n externalId: string\n}\n\nexport enum UrlEmbeddings {\n YOUTUBE,\n VIMEO,\n VIDEO,\n AUDIO,\n IMAGE,\n LTI13TOOL,\n H5P,\n PREZI,\n LEARNINGAPPS\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatButtonModule} from '@angular/material/button';\nimport {YouTubePlayer} from '@angular/youtube-player';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\nimport {NgOptimizedImage} from '@angular/common';\nimport {RenderData} from '../../dto/RenderData';\nimport {UrlEmbeddings} from '../../dto/FrontendModuleConfig';\nimport {EduSharingUiModule} from 'ngx-edu-sharing-ui';\n\n@Component({\n selector: 'rs-module-url',\n standalone: true,\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n YouTubePlayer,\n NgOptimizedImage,\n EduSharingUiModule,\n ],\n templateUrl: './url.component.html',\n styleUrl: './url.component.scss'\n})\nexport class UrlComponent implements RenderModule, OnInit {\n @Input() data: RenderData | undefined;\n @Input() node: Node | undefined;\n gdpr: any[] | undefined = undefined\n gdprOk: boolean = true\n embedding?: UrlEmbeddings\n externalId?: string\n sanitizedUrl: SafeResourceUrl | null = null\n url: string = ''\n\n constructor(private sanitizer: DomSanitizer) {\n }\n\n ngOnInit() {\n this.embedding = this.data?.frontendModuleConfig?.urlModuleConfig?.embedding\n this.externalId = this.data?.frontendModuleConfig?.urlModuleConfig?.externalId\n this.url = this.node?.properties?.['ccm:wwwurl']?.[0] || ''\n if (this.embedding === UrlEmbeddings.VIMEO) {\n this.sanitizedUrl = this.getVimeoUri()\n } else if (this.embedding === UrlEmbeddings.PREZI) {\n this.sanitizedUrl = this.getPreziUrl()\n } else if (this.embedding === UrlEmbeddings.LEARNINGAPPS) {\n this.sanitizedUrl = this.getLearningAppsUrl()\n }\n }\n\n isProtected(): boolean {\n return this.gdpr === undefined;\n }\n\n consentToGdprWarning() {\n this.gdprOk = true\n }\n\n getVimeoUri(): SafeResourceUrl {\n let url = '//player.vimeo.com/video/' + this.externalId\n return this.sanitizer.bypassSecurityTrustResourceUrl(url)\n }\n\n getPreziUrl(): SafeResourceUrl {\n const preziUrl = this.url.slice(-1) === '/' ? this.url.substring(0, this.url.length - 1) : this.url\n return this.sanitizer.bypassSecurityTrustResourceUrl(preziUrl)\n }\n\n getLearningAppsUrl(): SafeResourceUrl {\n const learningAppsUrl = this.url.replace('https://learningapps.org/', 'https://learningapps.org/view')\n return this.sanitizer.bypassSecurityTrustResourceUrl(learningAppsUrl)\n }\n\n protected readonly UrlEmbeddings = UrlEmbeddings;\n}\n","<div class=\"url-wrapper\">\n <div *ngIf=\"gdprOk\">\n <ng-container *ngIf=\"embedding === UrlEmbeddings.YOUTUBE && externalId !== ''\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n ></youtube-player>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\"></iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.AUDIO && url !== ''\" >\n <div class=\"audio-wrapper\">\n <video\n controls\n style=\"max-width: 100%\"\n [src]=\"url\"\n poster=\"assets/img/audio.svg\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.IMAGE && url !== ''\">\n <div class=\"image-wrapper\">\n <img\n [ngSrc]=\"url\"\n [alt]=\"node?.title ?? 'Edu-Sharing image'\"\n [title]=\"node?.title ?? 'Edu-Sharing image'\"\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIDEO && url !== ''\">\n <div class=\"video-wrapper\">\n <video\n controls\n [src]=\"url\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(embedding === UrlEmbeddings.PREZI || embedding === UrlEmbeddings.LEARNINGAPPS) && url !== ''\">\n <iframe class=\"eduUrlFrame\" [src]=sanitizedUrl allowfullscreen=\"\" allow=\"autoplay; fullscreen\" ></iframe>\n </ng-container>\n\n </div>\n <div *ngIf=\"!gdprOk\">\n {{ 'RENDERING.GDPR.GDPR_DIALOG' | translate }}\n <button mat-button (click)=\"consentToGdprWarning()\">{{'RENDERING.GDPR.GDPR_CONTINUE' | translate}}</button>\n </div>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatButtonModule} from '@angular/material/button';\nimport {RenderData} from '../../dto/RenderData';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\n\n@Component({\n selector: 'rs-module-edu-html',\n standalone: true,\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n ],\n templateUrl: './eduHtml.component.html',\n styleUrl: './eduHtml.component.scss'\n})\nexport class EduHtmlComponent implements RenderModule, OnInit {\n @Input() data: RenderData | undefined\n @Input() node: Node | undefined\n sanitizedUrl: SafeResourceUrl = new class implements SafeResourceUrl {\n }\n\n constructor(private sanitizer: DomSanitizer) {\n }\n\n ngOnInit() {\n if (this.data?.items !== undefined && this.data.items[0].link) {\n this.sanitizedUrl = this.getSafeUri()\n }\n }\n\n getSafeUri() {\n if (this.data?.items !== undefined && this.data.items[0].link) {\n const uri = new URL(this.data.items[0].link)\n /**\n if (uri.hostname.includes('nip.io')) {\n uri.hostname = 'localhost'\n }\n */\n return this.sanitizer.bypassSecurityTrustResourceUrl(uri.toString())\n }\n return new class implements SafeResourceUrl {\n }\n }\n}\n","<div class=\"eduHtml-wrapper\" *ngIf=\"data?.items !== undefined\">\n <iframe class=\"frame\" [src]=\"sanitizedUrl\"></iframe>\n</div>\n","import {NgModule} from '@angular/core';\n\n@NgModule({\n imports: []\n})\nexport class RenderingApiModule {}\n","import {Injectable} from '@angular/core';\nimport {ModuleInfoControllerService} from 'ngx-rendering-service-api';\nimport {firstValueFrom} from 'rxjs';\nimport {Node, RestConstants} from 'ngx-edu-sharing-api';\nimport {FrontendModuleConfig, UrlEmbeddings, UrlModuleConfig} from './lib/dto/FrontendModuleConfig';\n\n@Injectable({providedIn: 'root'})\nexport class ModuleInfoService {\n\n private availableMediaTypes: String[] = []\n private availableMimeTypes: String[] = []\n private availableMimeTypePrefixes: String[] = []\n private availableReplicationSources: String[] = []\n private availableResourceTypes: String[] = []\n private availableRemoteRepositories: String[] = []\n\n constructor(\n private service: ModuleInfoControllerService\n ) {}\n\n async isAvailableBackendObject(node: Node| undefined): Promise<boolean> {\n if (!this.isInitialized()) {\n const result = await firstValueFrom(this.service.getModulesInfo({repoId: node?.ref.repo ?? ''}))\n result.forEach(info => {\n if (info.typeMapping.type !== undefined && info.typeMapping.type !== null) {\n this.availableMediaTypes.push(info.typeMapping.type)\n } else if (info.typeMapping.remoteRepositoryType !== undefined && info.typeMapping.remoteRepositoryType !== null) {\n this.availableRemoteRepositories.push(info.typeMapping.remoteRepositoryType)\n } else if(info.typeMapping.resourceType !== undefined && info.typeMapping.resourceType !== null) {\n this.availableResourceTypes.push(info.typeMapping.resourceType)\n } else if(info.typeMapping.replicationSource !== undefined && info.typeMapping.replicationSource !== null) {\n this.availableReplicationSources.push(info.typeMapping.replicationSource)\n } else if (info.typeMapping.mimeTypeSuffix !== undefined\n && info.typeMapping.mimeTypeSuffix !== null\n && info.typeMapping.mimeTypePrefix !== undefined\n && info.typeMapping.mimeTypePrefix !== null\n ) {\n this.availableMimeTypes.push(`${info.typeMapping.mimeTypePrefix}/${info.typeMapping.mimeTypeSuffix}`)\n } else if (info.typeMapping.mimeTypePrefix !== undefined && info.typeMapping.mimeTypePrefix !== null) {\n this.availableMimeTypePrefixes.push(info.typeMapping.mimeTypePrefix)\n }\n })\n }\n const mimeTypePrefix = (node?.mimetype ?? '').split('/', 2)[0]\n return this.availableMediaTypes.includes(node?.mediatype ?? '') ||\n this.availableRemoteRepositories.includes(node?.remote?.repository?.repositoryType ?? '') ||\n this.availableReplicationSources.includes(node?.properties?.[RestConstants.CCM_PROP_REPLICATIONSOURCE]?.[0]?? '') ||\n this.availableResourceTypes.includes(node?.properties?.[RestConstants.CCM_PROP_CCRESSOURCETYPE]?.[0]?? '') ||\n this.availableMimeTypes.includes(node?.mimetype ?? '') ||\n this.availableMimeTypePrefixes.includes(mimeTypePrefix)\n }\n\n private isInitialized(): boolean {\n return this.availableMediaTypes.length\n + this.availableMimeTypes.length\n + this.availableMimeTypePrefixes.length\n + this.availableReplicationSources.length\n + this.availableResourceTypes.length\n + this.availableRemoteRepositories.length !== 0\n }\n\n getFrontendModuleSetting(node: Node): FrontendModuleConfig {\n const urlModuleConfig = this.checkUrlModule(node)\n if (urlModuleConfig !== null) {\n return urlModuleConfig\n }\n return {\n module: 'default',\n urlModuleConfig: null\n }\n }\n\n checkUrlModule(node: Node): FrontendModuleConfig | null {\n const url = node.properties?.['ccm:wwwurl']?.[0] || ''\n const checkLearningApps = (): UrlModuleConfig | null => {\n if (node.remote?.repository?.repositoryType?.toLowerCase() === 'learningapps') {\n return {\n embedding: UrlEmbeddings.LEARNINGAPPS,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function checkYouTube\n */\n const checkYouTube = (): UrlModuleConfig | null => {\n if (node.remote?.repository?.repositoryType?.toLowerCase() === 'youtube') {\n return {\n embedding: UrlEmbeddings.YOUTUBE,\n externalId: node.remote?.id ?? ''\n }\n }\n if (url.includes('youtu.be') ) {\n const split = url.split('/')\n return {\n embedding: UrlEmbeddings.YOUTUBE,\n externalId: split[split.length - 1]\n }\n }\n if (url.includes('.youtube.com/watch?')) {\n const urlObject = new URL(url)\n return {\n embedding: UrlEmbeddings.YOUTUBE,\n externalId: urlObject.searchParams.get('v') ?? ''\n }\n }\n return null\n }\n /**\n * Function checkVimeo\n */\n const checkVimeo = (): UrlModuleConfig | null => {\n if (url.includes('vimeo.com')) {\n const split = url.split('/')\n return {\n embedding: UrlEmbeddings.VIMEO,\n externalId: split[split.length - 1]\n }\n }\n return null\n }\n const checkGenericVideo = (): UrlModuleConfig | null => {\n if (url.length > 0 && ['mp4', 'webm'].includes(url.split('.').pop() ?? '')) {\n return {\n embedding: UrlEmbeddings.VIDEO,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function checkAudio\n */\n const checkAudio = (): UrlModuleConfig | null => {\n if (url.length > 0 && node.mimetype?.startsWith('audio')) {\n return {\n embedding: UrlEmbeddings.AUDIO,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function checkLti13ToolObject\n */\n const checkLti13ToolObject = (): UrlModuleConfig | null => {\n if (node.aspects?.includes('ccm:ltitool_node')) {\n return {\n embedding: UrlEmbeddings.LTI13TOOL,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function checkImage\n */\n const checkImage = (): UrlModuleConfig | null => {\n if (node.properties?.['ccm:remoterepositorytype']?.[0] === 'DDB') {\n return null\n }\n if (node.mediatype === 'file-image') {\n return {\n embedding: UrlEmbeddings.IMAGE,\n externalId: ''\n }\n }\n const mimeTypeSplit = node.mimetype?.split('/') ?? []\n if (mimeTypeSplit.length === 2 && ['png', 'jpg', 'jpeg', 'gif'].includes(mimeTypeSplit[1])) {\n return {\n embedding: UrlEmbeddings.IMAGE,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function detectH5P\n */\n const detectH5P = (): UrlModuleConfig | null => {\n if (url.length > 0 && url.includes('h5p.org/h5p/embed')) {\n return {\n embedding: UrlEmbeddings.H5P,\n externalId: ''\n }\n }\n return null\n }\n /**\n * Function detectPrezi\n */\n const detectPrezi = (): UrlModuleConfig | null => {\n if (url.length > 0 &&\n (url.includes('prezi.com/view/') || url.includes('prezi.com/embed/') || url.includes('prezi.com/p/embed'))\n ) {\n return {\n embedding: UrlEmbeddings.PREZI,\n externalId: ''\n }\n }\n return null\n }\n\n /**\n * embedding if applicable to node\n */\n const embedding =\n checkLearningApps()\n ?? checkYouTube()\n ?? checkVimeo()\n ?? checkGenericVideo()\n ?? checkAudio()\n ?? checkImage()\n ?? checkLti13ToolObject()\n ?? detectH5P()\n ?? detectPrezi()\n\n if (embedding !== null) {\n return {\n module: 'url',\n urlModuleConfig: embedding\n }\n }\n return null\n }\n}\n","import {Component, Inject, Input, OnChanges, OnInit, Optional, SimpleChanges} from '@angular/core';\nimport {RenderingModule} from './rendering.module';\nimport {\n JobInfoControllerService,\n JobInfoReply,\n RenderControllerWrapperService,\n RenderDataRequestWithToken,\n RenderDataResponse\n} from 'ngx-rendering-service-api';\nimport {BehaviorSubject, debounceTime, firstValueFrom, interval, Subject, switchMap, takeUntil} from 'rxjs';\nimport {ImageComponent} from './module/image/image.component';\nimport {RenderingApiModule} from './rendering-api.module';\nimport {VideoComponent} from './module/video/video.component';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {EduSharingApiModule, Node} from 'ngx-edu-sharing-api';\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\nimport {AssetStateItem, RenderData} from './dto/RenderData';\nimport {PdfComponent} from './module/pdf/pdf.component';\nimport {UrlComponent} from './module/url/url.component';\nimport {EduHtmlComponent} from './module/eduhtml/eduHtml.component';\nimport {ModuleInfoService} from '../module-info.service';\nimport {filter} from 'rxjs/operators';\nimport {PlatformLocation} from '@angular/common';\nimport {DefaultComponent} from './module/default/default.component';\nimport {FrontendModuleConfig} from './dto/FrontendModuleConfig';\nimport {AudioComponent} from './module/audio/audio.component';\nimport {BinderComponent} from './module/binder/binder.component';\nimport {DdbComponent} from './module/ddb/ddb.component';\nimport {TranslateService} from '@ngx-translate/core';\nimport {EduSharingUiModule} from 'ngx-edu-sharing-ui';\nimport {ErrorComponent} from './module/error/error.component';\nimport {RENDERING_SERVICE_LIB_CONFIG, RenderingServiceLibConfiguration} from '../rendering-service-lib-configuration';\n\n@Component({\n selector: 'rs-root',\n standalone: true,\n imports: [\n RenderingApiModule,\n RenderingModule,\n ImageComponent,\n VideoComponent,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n PdfComponent,\n UrlComponent,\n EduHtmlComponent,\n DefaultComponent,\n AudioComponent,\n BinderComponent,\n DdbComponent,\n EduSharingApiModule,\n EduSharingUiModule,\n ErrorComponent,\n ],\n providers: [\n TranslateService\n ],\n templateUrl: './render.component.html',\n styleUrl: './render.component.scss'\n})\nexport class RenderComponent implements OnChanges, OnInit {\n @Input() request: RenderDataRequestWithToken | undefined;\n @Input() node: Node | undefined;\n @Input() serviceWorkerUrl: string | undefined;\n @Input() activateServiceWorker: boolean = true;\n @Input() assetUrl: string = '';\n serviceWorkerReady = false;\n loadData = new Subject<void>();\n renderData$ = new BehaviorSubject<RenderData | null>(null);\n finished = new Subject<void>();\n someButNotAllFinished = new Subject<Boolean>()\n progress$ = new BehaviorSubject<{ module: string, progress?: number } | null>(null);\n\n constructor(\n private renderControllerService: RenderControllerWrapperService,\n private jobInfoControllerService: JobInfoControllerService,\n private moduleInfoService: ModuleInfoService,\n private platformLocation: PlatformLocation,\n @Optional() @Inject(RENDERING_SERVICE_LIB_CONFIG) public configuration: RenderingServiceLibConfiguration,\n ) {\n this.loadData.pipe(\n filter(() => this.node !== undefined && this.serviceWorkerReady),\n debounceTime(10),\n switchMap(() => {\n // subscribe error handling\n return this.checkModule()\n })\n ).subscribe({\n next: async (frontendModule) => {\n // No further calls to rs2 necessary if we have a frontend only module\n if (frontendModule !== null) {\n const data: RenderData = {\n module: frontendModule.module,\n frontendModuleConfig: frontendModule\n }\n this.renderData$.next(data)\n this.finished.next()\n } else {\n try {\n const renderResponseData = await firstValueFrom(this.renderControllerService.getRenderDataToken(this.request!!))\n // Case 1: no job returned => no polling needed\n if (renderResponseData.jobId === null) {\n this.handleRenderingResponseWithoutJob(renderResponseData)\n } else {\n this.progress$.next({module: renderResponseData.module ?? ''});\n interval(500).pipe(\n takeUntil(this.finished),\n switchMap(() => this.jobInfoControllerService.getJobInfo({jobId: renderResponseData.jobId!!}).pipe()),\n ).subscribe({\n next: async (jobInfo) => {\n // Some, but not all, jobs are in a final status (this means some are still QUEUED or PROCESSING)\n if (jobInfo.jobs.some(j => j.status === 'FINISHED') && jobInfo.status !== 'FINISHED') {\n this.handleJobInfoWithSubJobsInProgress(renderResponseData, jobInfo)\n // main job finished or partially failed\n } else if (jobInfo.status === 'FINISHED' || jobInfo.status === 'PARTIALLY_FAILED') {\n this.handleFinishedOrPartialJobInfo(renderResponseData, jobInfo)\n // Main job failed => no module but error page\n } else if (jobInfo.status === 'FAILED') {\n this.handleFailedMainJob(jobInfo)\n } else {\n // no finished jobs -> show either one progress bar with race leader (progress 0-100)\n // or queue position (progress (-inf,-1])\n this.handleMainJobWithNoSubJobInFinalStatus(jobInfo)\n }\n },\n error: error => {\n this.handleApiError(error)\n }});\n }\n } catch (error) {\n this.handleApiError(error)\n }\n }\n },\n error: (error) => {\n this.handleApiError(error)\n }\n });\n }\n\n handleApiError(error: any) {\n const publicMessage = error.error.userMessage ?? 'GENERIC_ERROR_MESSAGE'\n const data: RenderData = {\n module: 'ERROR',\n publicErrorMessage: publicMessage\n }\n this.renderData$.next(data)\n this.finished.next()\n }\n\n async ngOnInit() {\n if (this.assetUrl !== '') {\n this.configuration.assetsUrl = this.assetUrl;\n }\n if (!this.activateServiceWorker) {\n this.serviceWorkerReady = true;\n this.loadData.next();\n }\n // await firstValueFrom(this.translationsService.initialize())\n if ('serviceWorker' in navigator) {\n const reg = await navigator.serviceWorker.getRegistrations();\n await Promise.all(reg?.map((r: ServiceWorkerRegistration) => r.unregister()));\n const serviceWorkerUrl = this.serviceWorkerUrl ?? (this.platformLocation.getBaseHrefFromDOM() + 'edu-service-worker.js');\n const scope = this.serviceWorkerUrl ? '/' : this.platformLocation.getBaseHrefFromDOM();\n const registration = await navigator.serviceWorker.register(serviceWorkerUrl, {\n scope: scope\n });\n if (registration.waiting) {\n registration.waiting.postMessage({type: 'SKIP_WAITING'});\n }\n this.serviceWorkerReady = true;\n this.loadData.next();\n registration.onupdatefound = () => {\n const newWorker = registration.installing;\n if (newWorker) {\n newWorker.onstatechange = () => {\n if (newWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n newWorker.postMessage({type: 'SKIP_WAITING'});\n }\n }\n };\n }\n };\n navigator.serviceWorker.addEventListener('controllerchange', () => {\n console.info('Service Worker controlling this page.');\n });\n } else {\n console.warn('Service worker API not available');\n }\n }\n\n async ngOnChanges(_: SimpleChanges) {\n this.loadData.next();\n }\n\n async checkModule(): Promise<FrontendModuleConfig | null> {\n if (!await this.moduleInfoService.isAvailableBackendObject(this.node)) {\n if (this.node !== undefined) {\n return this.moduleInfoService.getFrontendModuleSetting(this.node)\n }\n return {module: 'default', urlModuleConfig: null}\n } else {\n return null\n }\n }\n\n handleRenderingResponseWithoutJob(renderDataResponse: RenderDataResponse) {\n const items = renderDataResponse.objectLinks?.map(item => {\n const assetItem: AssetStateItem = {\n link: item.link,\n progress: 100,\n height: item.height,\n width: item.width,\n additionalData: undefined,\n status: 'FINISHED'\n }\n return assetItem\n })\n const data: RenderData = {\n module: renderDataResponse.module ?? '',\n items: items\n }\n renderDataResponse.objectLinks !== undefined && this.renderData$.next(data);\n this.finished.next();\n }\n\n handleJobInfoWithSubJobsInProgress(renderDataResponse: RenderDataResponse, jobInfo: JobInfoReply) {\n const items = jobInfo.jobs.map(subJob => {\n const assetItem: AssetStateItem = {\n link: subJob.objectLink?.link ?? '',\n progress: subJob.status !== 'QUEUED' ? subJob.progress : -(subJob.progress + 1),\n height: subJob.objectLink?.height ?? subJob.quality,\n width: subJob.objectLink?.width ?? 0,\n additionalData: subJob.additionalData,\n status: subJob.status,\n }\n return assetItem\n })\n const data: RenderData = {\n module: renderDataResponse.module ?? '',\n items: items\n }\n this.renderData$.next(data)\n this.someButNotAllFinished.next(true)\n }\n\n handleFinishedOrPartialJobInfo(renderDataResponse: RenderDataResponse, jobInfo: JobInfoReply) {\n const items = jobInfo.jobs.map(subJob => {\n const assetItem: AssetStateItem = {\n link: subJob.objectLink?.link ?? '',\n progress: subJob.progress,\n height: subJob.objectLink?.height ?? subJob.quality,\n width: subJob.objectLink?.width ?? 0,\n additionalData: subJob.additionalData,\n publicErrorMessage: subJob.publicErrorMessage,\n status:subJob.status,\n }\n return assetItem\n })\n const data: RenderData = {\n module: renderDataResponse.module ?? '',\n items: items\n }\n this.renderData$.next(data)\n this.finished.next()\n }\n\n handleFailedMainJob(jobInfo: JobInfoReply) {\n const data: RenderData = {\n module: 'ERROR',\n publicErrorMessage: jobInfo.userMessage ?? 'GENERIC_ERROR_MESSAGE'\n }\n this.renderData$.next(data)\n this.finished.next()\n }\n\n handleMainJobWithNoSubJobInFinalStatus(jobInfo: JobInfoReply) {\n let progress = 0\n if (jobInfo.jobs.some(j => j.status === 'PROCESSING')) {\n progress = Math.max(...jobInfo.jobs.map(j => j.progress))\n } else if (jobInfo.jobs.some(j => j.status === 'QUEUED')) {\n progress = -(Math.min(...jobInfo.jobs.map(j => j.progress + 1)))\n }\n this.progress$.next({\n module: jobInfo.module ?? '',\n progress: progress\n });\n }\n}\n","<div class=\"module module-{{(renderData$ | async)?.module}}\">\n <ng-container *ngIf=\"renderData$ | async as data\">\n @defer (when data?.module === 'IMAGE'){\n <rs-module-image [data]=\"data\" [node]=\"node\"></rs-module-image>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'VIDEO'){\n <rs-module-video [data]=\"data\" [node]=\"node\"></rs-module-video>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'PDF' || data?.module === 'DOCUMENT') {\n <rs-module-pdf [data]=\"data\" [node]=\"node\"></rs-module-pdf>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'EDUHTML' || data?.module === 'H5P' || data?.module === 'JUPYTER' || data.module === 'SPREADSHEET') {\n <rs-module-edu-html [data]=\"data\" [node]=\"node\"></rs-module-edu-html>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'AUDIO'){\n <rs-module-audio [data]=\"data\" [node]=\"node\"></rs-module-audio>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'BINDER'){\n <rs-module-binder [data]=\"data\" [node]=\"node\"></rs-module-binder>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'DDB'){\n <rs-module-ddb [data]=\"data\" [node]=\"node\"></rs-module-ddb>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n <ng-container *ngIf=\"data.module === 'default'\">\n @defer (when data.module === 'default') {\n <rs-module-default [node]=\"node\"></rs-module-default>\n }\n </ng-container>\n <ng-container *ngIf=\"data.module === 'url'\">\n @defer (when data.module === 'url') {\n <rs-module-url [node]=\"node\" [data]=\"data\"></rs-module-url>\n }\n </ng-container>\n <ng-container *ngIf=\"data.module === 'ERROR'\">\n @defer (when data.module === 'ERROR') {\n <rs-module-error [node]=\"node\" [data]=\"data\"></rs-module-error>\n }\n </ng-container>\n </ng-container>\n\n <div class=\"progress\" *ngIf=\"(renderData$ | async) === null;\">\n <ng-container *ngIf=\"progress$ | async as progress\">\n <ng-container [ngSwitch]=\"['VIDEO', 'AUDIO'].includes(progress.module) ? 'bar' : 'spinner'\">\n <ng-container *ngSwitchCase=\"'bar'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">Queue position: {{-(progress.progress ?? 0)}}</div>\n <mat-progress-bar [value]=\"(progress.progress ?? 0)\" *ngIf=\"(progress.progress ?? 0) >= 0\"></mat-progress-bar>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spinner'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">Queue position: {{-(progress.progress ?? 0)}</div>\n <mat-spinner [diameter]=\"50\" *ngIf=\"(progress.progress ?? 0) >= 0\"></mat-spinner>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loading>\n <div class=\"progress\">\n <mat-spinner></mat-spinner>\n </div>\n</ng-template>\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {RenderComponent} from './lib/render.component';\nimport {CommonModule} from '@angular/common';\nimport {EduSharingUiConfigurationParams} from 'ngx-edu-sharing-ui/lib/edu-sharing-ui-configuration';\nimport {getConfigProvider, RenderingServiceLibConfigurationParams} from './rendering-service-lib-configuration';\n\n@NgModule({\n declarations: [],\n imports: [\n RenderComponent,\n CommonModule,\n ],\n exports: [\n CommonModule,\n RenderComponent,\n ],\n})\nexport class RenderingServiceLibModule {\n public static forRoot(\n params: RenderingServiceLibConfigurationParams\n): ModuleWithProviders<RenderingServiceLibModule> {\n return {\n ngModule: RenderingServiceLibModule,\n providers: [getConfigProvider(params)]\n };\n }\n}\n","/*\n * Public API Surface of edu-sharing-ui\n */\n\nexport * from './lib/rendering.module';\nexport * from './lib/module/image/image.component';\nexport * from './lib/module/video/video.component';\nexport * from './lib/module/pdf/pdf.component';\nexport * from './lib/module/url/url.component';\nexport * from './lib/module/eduhtml/eduHtml.component';\nexport * from './lib/render.component';\nexport * from './lib/asset-link.pipe';\nexport * from './rendering-service-lib.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.AssetLinkPipe","i3","i4","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;;AAGG;MAEU,aAAa,CAAA;AACxB,IAAA,WAAA,CACU,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAE3B;AAED,IAAA,SAAS,CAAC,KAAyB,EAAA;QACjC,IAAG,KAAK,EAAE;YACR,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACnC,YAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC;AACvD,YAAA,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC5B;AACD,QAAA,OAAO,KAAK,CAAC;KACd;8GAbU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAb,aAAa,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,IAAI;mBAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;;;MCWhB,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAPxB,YAAA,EAAA,CAAA,aAAa,CAJb,EAAA,OAAA,EAAA,CAAA,YAAY,qCAOZ,YAAY;YACZ,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;AAGJ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAXxB,YAAY;AACZ,YAAA,mBAAmB,CAAC,OAAO,EAAE,EAM7B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIH,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB,CAAC,OAAO,EAAE;AAC9B,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,aAAa;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;AACd,qBAAA;AACF,iBAAA,CAAA;;;MCEY,cAAc,CAAA;AAIzB,IAAA,WAAA,CAAmB,OAAmB,EAAA;QAAnB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AADtC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAA6B,SAAS,CAAC,CAAC;KAClB;IAC3C,eAAe,GAAA;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAGO,eAAe,GAAA;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;QAC3E,MAAM,YAAY,GAAG,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;;AAEnD,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClF,SAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACL,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KACrC;IAED,gBAAgB,GAAA;AACd,QAAA,IAAG,QAAQ,CAAC,iBAAiB,EAAE;AAC7B,YAAA,KAAK,QAAQ,CAAC,cAAc,EAAE,CAAC;SAChC;aAAM;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;SAChD;KACF;8GA1BU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,8LCnB3B,oSAUA,EAAA,MAAA,EAAA,CAAA,4NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEI,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,6IACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKJ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAX1B,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,eAAe;wBACf,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,oSAAA,EAAA,MAAA,EAAA,CAAA,4NAAA,CAAA,EAAA,CAAA;+EAKQ,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAQE,eAAe,EAAA,CAAA;sBADtB,YAAY;uBAAC,2BAA2B,CAAA;;;;;;;;MED9B,cAAc,CAAA;AAhB3B,IAAA,WAAA,GAAA;AAoBE,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAA6B,SAAS,CAAC,CAAC;QAC7D,IAAsB,CAAA,sBAAA,GAAY,IAAI,CAAA;QAgCnB,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;AAChC,KAAA;AA/BC,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;KACzE;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;AACjE,QAAA,MAAM,QAAQ,GAAY,SAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC;QACjE,IAAI,iBAAiB,GAAG,GAAG,CAAC;AAC5B,QAAA,IAAG,QAAQ,GAAG,CAAC,EAAE;YACb,iBAAiB,GAAG,GAAG,CAAC;SAC3B;AACD,QAAA,IAAG,QAAQ,GAAG,CAAC,EAAE;YACf,iBAAiB,GAAG,IAAI,CAAC;SAC1B;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;AAC3E,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;;AAEpD,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,iBAAiB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAChG,SAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACR;AAED,IAAA,gBAAgB,CAAC,IAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAA;AAC5D,QAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,CAAA;AACnC,QAAA,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,IAAI,CAAC,QAAS,CAAC,aAAa,CAAC,WAAW,GAAG,WAAW,CAAA;SACvD;KACF;8GAnCU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,sNC3B3B,qpDA4DA,EAAA,MAAA,EAAA,CAAA,0LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7CI,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,OAAO,EACP,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,EACb,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,+BACX,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,cAAc,EACd,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,WAAW,qIACX,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKT,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhB1B,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,OAAO;wBACP,aAAa;wBACb,WAAW;wBACX,OAAO;wBACP,cAAc;wBACd,WAAW;wBACX,kBAAkB;AACnB,qBAAA,EAAA,QAAA,EAAA,qpDAAA,EAAA,MAAA,EAAA,CAAA,0LAAA,CAAA,EAAA,CAAA;8BAKQ,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACc,QAAQ,EAAA,CAAA;sBAA3B,SAAS;uBAAC,OAAO,CAAA;;;;;;;;AE5Bb,MAAM,4BAA4B,GAAG,IAAI,cAAc,CAC5D,8BAA8B,CAC/B,CAAC;MAIW,gCAAgC,CAAA;AAH7C,IAAA,WAAA,GAAA;AAIE;;;AAGG;QACH,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC;AAIjC,KAAA;AAHC,IAAA,OAAO,MAAM,CAAC,MAAA,GAAiD,EAAE,EAAA;QAC/D,OAAO,EAAE,GAAG,IAAI,gCAAgC,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC;KACjE;8GARU,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,cAF/B,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAH5C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;AAcK,SAAU,iBAAiB,CAAC,MAA+C,EAAA;IAC/E,OAAO;;;AAGL,QAAA;AACE,YAAA,OAAO,EAAE,4BAA4B;AACrC,YAAA,QAAQ,EAAE,MAAM;AACjB,SAAA;KACF,CAAC;AACJ;;MCMa,YAAY,CAAA;AAOvB,IAAA,WAAA,CACU,sBAA8C,EAC9C,UAA6B,EACoB,aAA+C,EAAA;QAFhG,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QAC9C,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QACoB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkC;QAN1G,IAAc,CAAA,cAAA,GAAY,KAAK,CAAA;AAQ7B,QAAA,IAAI,aAAa,IAAI,aAAa,CAAC,SAAS,EAAE;AAC5C,YAAA,iBAAiB,CAAC,YAAY,GAAG,CAAC,aAAa,EAAE,SAAS,IAAI,EAAE,IAAI,0BAA0B,CAAA;SAC/F;KACF;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,EAAE,iBAAiB,EAAE,cAAc,CAAC,SAAS,CAAC,EAAE;AAC5F,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAA;SAClD;aAAM;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAA;SACpB;KACF;IAEO,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE;YACpE,OAAM;SACP;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AACvD,QAAA,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,OAAM;SACP;AACD,QAAA,MAAM,MAAM,GAAoB;AAC9B,YAAA,WAAW,EAAE,WAAW;SACzB,CAAA;AACD,QAAA,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAClD,aAAA,SAAS,CAAC,OAAO,QAAQ,KAAI;YAC1B,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,0BAA0B,EAAE;gBACvE,OAAM;aACP;YACD,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;AAC9C,SAAC,CACF,CAAA;KACJ;AAID,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,IAAI,KAAK,CAAC,wBAAwB,EAAE;gBAClC,KAAK,CAAC,wBAAwB,EAAE,CAAC;aAClC;iBAAM;gBACL,KAAK,CAAC,eAAe,EAAE,CAAC;aACzB;SACF;KACF;AAGD,IAAA,iBAAiB,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,IAAI,KAAK,CAAC,wBAAwB,EAAE;gBAClC,KAAK,CAAC,wBAAwB,EAAE,CAAC;aAClC;iBAAM;gBACL,KAAK,CAAC,eAAe,EAAE,CAAC;aACzB;SACF;KACF;AAxEU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,2FAUD,4BAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAVvC,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,0BAAA,EAAA,8BAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACZ,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrC1C,msBAwBA,EAAA,MAAA,EAAA,CAAA,4JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDII,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,0BAA0B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,iCAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,KAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKjB,YAAY,EAAA,UAAA,EAAA,CAAA;kBAZxB,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,0BAA0B;AAC3B,qBAAA,EAAA,QAAA,EAAA,msBAAA,EAAA,MAAA,EAAA,CAAA,4JAAA,CAAA,EAAA,CAAA;;0BAcE,QAAQ;;0BAAI,MAAM;2BAAC,4BAA4B,CAAA;yCATR,SAAS,EAAA,CAAA;sBAAlD,SAAS;uBAAC,6BAA6B,CAAA;gBAC/B,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAgDN,oBAAoB,EAAA,CAAA;sBAFnB,YAAY;uBAAC,0BAA0B,EAAG,CAAC,QAAQ,CAAC,CAAA;;sBACpD,YAAY;uBAAC,oBAAoB,EAAG,CAAC,QAAQ,CAAC,CAAA;gBAa/C,iBAAiB,EAAA,CAAA;sBADhB,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;;;;;;AEvFhD,IAAY,aAUX,CAAA;AAVD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,aAAA,CAAA,aAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACT,IAAA,aAAA,CAAA,aAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,aAAA,CAAA,aAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AACd,CAAC,EAVW,aAAa,KAAb,aAAa,GAUxB,EAAA,CAAA,CAAA;;MCMY,YAAY,CAAA;AAUvB,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;QAP3C,IAAI,CAAA,IAAA,GAAsB,SAAS,CAAA;QACnC,IAAM,CAAA,MAAA,GAAY,IAAI,CAAA;QAGtB,IAAY,CAAA,YAAA,GAA2B,IAAI,CAAA;QAC3C,IAAG,CAAA,GAAA,GAAW,EAAE,CAAA;QAyCG,IAAa,CAAA,aAAA,GAAG,aAAa,CAAC;KAtChD;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,oBAAoB,EAAE,eAAe,EAAE,SAAS,CAAA;AAC5E,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,oBAAoB,EAAE,eAAe,EAAE,UAAU,CAAA;AAC9E,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3D,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC,KAAK,EAAE;AAC1C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;SACvC;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC,KAAK,EAAE;AACjD,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;SACvC;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC,YAAY,EAAE;AACxD,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;SAC9C;KACF;IAED,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;KAChC;IAED,oBAAoB,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;KACpB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,GAAG,GAAG,2BAA2B,GAAG,IAAI,CAAC,UAAU,CAAA;QACvD,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAA;KAC1D;IAED,WAAW,GAAA;AACT,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAA;QACnG,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAA;KAC/D;IAED,kBAAkB,GAAA;AAChB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,2BAA2B,EAAE,+BAA+B,CAAC,CAAA;QACtG,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAA;KACtE;8GA/CU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EC3BzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,syDAkDA,EDjCI,MAAA,EAAA,CAAA,8NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,EACb,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,+OAChB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKT,YAAY,EAAA,UAAA,EAAA,CAAA;kBAdxB,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,gBAAgB;wBAChB,kBAAkB;AACnB,qBAAA,EAAA,QAAA,EAAA,syDAAA,EAAA,MAAA,EAAA,CAAA,8NAAA,CAAA,EAAA,CAAA;mFAKQ,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;;;;;;METK,gBAAgB,CAAA;AAM3B,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;AAH3C,QAAA,IAAA,CAAA,YAAY,GAAoB,IAAI,MAAA;SACnC,CAAA;KAGA;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC7D,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;SACtC;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC7D,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAC5C;;;;AAII;YACJ,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;SACrE;AACD,QAAA,OAAO,IAAI,MAAA;SACV,CAAA;KACF;8GA3BU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,sHCpB7B,2IAGA,EAAA,MAAA,EAAA,CAAA,uIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDUI,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,8BACf,aAAa,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKJ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,eAAe;wBACf,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,2IAAA,EAAA,MAAA,EAAA,CAAA,uIAAA,CAAA,EAAA,CAAA;mFAKQ,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;;;;;;MEjBK,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;+GAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAA;;;MCGY,iBAAiB,CAAA;AAS5B,IAAA,WAAA,CACU,OAAoC,EAAA;QAApC,IAAO,CAAA,OAAA,GAAP,OAAO,CAA6B;QARtC,IAAmB,CAAA,mBAAA,GAAa,EAAE,CAAA;QAClC,IAAkB,CAAA,kBAAA,GAAa,EAAE,CAAA;QACjC,IAAyB,CAAA,yBAAA,GAAa,EAAE,CAAA;QACxC,IAA2B,CAAA,2BAAA,GAAa,EAAE,CAAA;QAC1C,IAAsB,CAAA,sBAAA,GAAa,EAAE,CAAA;QACrC,IAA2B,CAAA,2BAAA,GAAa,EAAE,CAAA;KAI9C;IAEJ,MAAM,wBAAwB,CAAC,IAAqB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,EAAC,CAAC,CAAC,CAAA;AAChG,YAAA,MAAM,CAAC,OAAO,CAAC,IAAI,IAAG;AACpB,gBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE;oBACzE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;iBACrD;AAAM,qBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,oBAAoB,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,oBAAoB,KAAK,IAAI,EAAE;oBAChH,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAA;iBAC7E;AAAM,qBAAA,IAAG,IAAI,CAAC,WAAW,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,KAAK,IAAI,EAAE;oBAC/F,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;iBAChE;AAAM,qBAAA,IAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,KAAK,IAAI,EAAE;oBACzG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAA;iBAC1E;AAAM,qBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,SAAS;AACjD,uBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,IAAI;AACxC,uBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,SAAS;AAC7C,uBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,IAAI,EAC7C;AACA,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAC,cAAc,CAAA,CAAE,CAAC,CAAA;iBACtG;AAAM,qBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,KAAK,IAAI,EAAE;oBACpG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;iBACrE;AACH,aAAC,CAAC,CAAA;SACH;AACD,QAAA,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;AAC7D,YAAA,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC;YACzF,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,IAAG,EAAE,CAAC;YACjH,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,IAAG,EAAE,CAAC;YAC1G,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;KAC1D;IAEO,aAAa,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM;cAClC,IAAI,CAAC,kBAAkB,CAAC,MAAM;cAC9B,IAAI,CAAC,yBAAyB,CAAC,MAAM;cACrC,IAAI,CAAC,2BAA2B,CAAC,MAAM;cACvC,IAAI,CAAC,sBAAsB,CAAC,MAAM;AAClC,cAAA,IAAI,CAAC,2BAA2B,CAAC,MAAM,KAAK,CAAC,CAAA;KAClD;AAED,IAAA,wBAAwB,CAAC,IAAU,EAAA;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;AACjD,QAAA,IAAI,eAAe,KAAK,IAAI,EAAE;AAC5B,YAAA,OAAO,eAAe,CAAA;SACvB;QACD,OAAO;AACL,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,eAAe,EAAE,IAAI;SACtB,CAAA;KACF;AAED,IAAA,cAAc,CAAC,IAAU,EAAA;AACvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACtD,MAAM,iBAAiB,GAAG,MAA6B;AACrD,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE;gBAC7E,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,YAAY;AACrC,oBAAA,UAAU,EAAE,EAAE;iBACf,CAAA;aACF;AACD,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAA;AACD;;AAEG;QACH,MAAM,YAAY,GAAG,MAA6B;AAChD,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE;gBACxE,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,OAAO;AAChC,oBAAA,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE;iBAClC,CAAA;aACF;AACD,YAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAG;gBAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC5B,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,OAAO;oBAChC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;iBACpC,CAAA;aACF;AACD,YAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;AACvC,gBAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;gBAC9B,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,OAAO;oBAChC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;iBAClD,CAAA;aACF;AACD,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAA;AACD;;AAEG;QACH,MAAM,UAAU,GAAG,MAA6B;AAC9C,YAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC5B,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,KAAK;oBAC9B,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;iBACpC,CAAA;aACF;AACD,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAA;QACD,MAAM,iBAAiB,GAAG,MAA6B;YACrD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;gBAC1E,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,KAAK;AAC9B,oBAAA,UAAU,EAAE,EAAE;iBACf,CAAA;aACF;AACD,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAA;AACD;;AAEG;QACH,MAAM,UAAU,GAAG,MAA6B;AAC9C,YAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE;gBACxD,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,KAAK;AAC9B,oBAAA,UAAU,EAAE,EAAE;iBACf,CAAA;aACF;AACD,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAA;AACD;;AAEG;QACH,MAAM,oBAAoB,GAAG,MAA6B;YACxD,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBAC9C,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,SAAS;AAClC,oBAAA,UAAU,EAAE,EAAE;iBACf,CAAA;aACF;AACD,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAA;AACD;;AAEG;QACH,MAAM,UAAU,GAAG,MAA8B;AAC/C,YAAA,IAAI,IAAI,CAAC,UAAU,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE;AAChE,gBAAA,OAAO,IAAI,CAAA;aACZ;AACD,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,EAAE;gBACnC,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,KAAK;AAC9B,oBAAA,UAAU,EAAE,EAAE;iBACf,CAAA;aACF;AACD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;YACrD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC1F,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,KAAK;AAC9B,oBAAA,UAAU,EAAE,EAAE;iBACf,CAAA;aACF;AACD,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAA;AACD;;AAEG;QACH,MAAM,SAAS,GAAG,MAA6B;AAC7C,YAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;gBACvD,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,GAAG;AAC5B,oBAAA,UAAU,EAAE,EAAE;iBACf,CAAA;aACF;AACD,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAA;AACD;;AAEG;QACH,MAAM,WAAW,GAAG,MAA6B;AAC/C,YAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;iBACf,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAC1G;gBACA,OAAO;oBACL,SAAS,EAAE,aAAa,CAAC,KAAK;AAC9B,oBAAA,UAAU,EAAE,EAAE;iBACf,CAAA;aACF;AACD,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAA;AAED;;AAEG;QACH,MAAM,SAAS,GACb,iBAAiB,EAAE;AACd,eAAA,YAAY,EAAE;AACd,eAAA,UAAU,EAAE;AACZ,eAAA,iBAAiB,EAAE;AACnB,eAAA,UAAU,EAAE;AACZ,eAAA,UAAU,EAAE;AACZ,eAAA,oBAAoB,EAAE;AACtB,eAAA,SAAS,EAAE;AACX,eAAA,WAAW,EAAE,CAAA;AAEpB,QAAA,IAAI,SAAS,KAAK,IAAI,EAAE;YACtB,OAAO;AACL,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,eAAe,EAAE,SAAS;aAC3B,CAAA;SACF;AACD,QAAA,OAAO,IAAI,CAAA;KACZ;8GA1NU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADL,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAClB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;MCsDnB,eAAe,CAAA;IAa1B,WACU,CAAA,uBAAuD,EACvD,wBAAkD,EAClD,iBAAoC,EACpC,gBAAkC,EACe,aAA+C,EAAA;QAJhG,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAgC;QACvD,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;QAClD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QACe,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkC;QAdjG,IAAqB,CAAA,qBAAA,GAAY,IAAI,CAAC;QACtC,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QAC/B,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC/B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAAW,CAAA;AAC9C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAA+C,IAAI,CAAC,CAAC;AASlF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAChE,YAAY,CAAC,EAAE,CAAC,EAChB,SAAS,CAAC,MAAK;;AAEb,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;AAC3B,SAAC,CAAC,CACH,CAAC,SAAS,CAAC;AACV,YAAA,IAAI,EAAE,OAAO,cAAc,KAAI;;AAE7B,gBAAA,IAAI,cAAc,KAAK,IAAI,EAAE;AAC3B,oBAAA,MAAM,IAAI,GAAe;wBACvB,MAAM,EAAE,cAAc,CAAC,MAAM;AAC7B,wBAAA,oBAAoB,EAAE,cAAc;qBACrC,CAAA;AACD,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;iBACrB;qBAAM;AACL,oBAAA,IAAI;AACF,wBAAA,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAS,CAAC,CAAC,CAAA;;AAEhH,wBAAA,IAAI,kBAAkB,CAAC,KAAK,KAAK,IAAI,EAAE;AACrC,4BAAA,IAAI,CAAC,iCAAiC,CAAC,kBAAkB,CAAC,CAAA;yBAC3D;6BAAM;AACL,4BAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,IAAI,EAAE,EAAC,CAAC,CAAC;AAC/D,4BAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAChB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,SAAS,CAAC,MAAM,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,EAAC,KAAK,EAAE,kBAAkB,CAAC,KAAO,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CACtG,CAAC,SAAS,CAAC;AACV,gCAAA,IAAI,EAAE,OAAO,OAAO,KAAI;;oCAEtB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;AACpF,wCAAA,IAAI,CAAC,kCAAkC,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;;qCAErE;AAAM,yCAAA,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,kBAAkB,EAAE;AACjF,wCAAA,IAAI,CAAC,8BAA8B,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;;qCAEjE;AAAM,yCAAA,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;AACtC,wCAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;qCAClC;yCAAM;;;AAGL,wCAAA,IAAI,CAAC,sCAAsC,CAAC,OAAO,CAAC,CAAA;qCACrD;iCACF;gCACD,KAAK,EAAE,KAAK,IAAG;AACb,oCAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;iCAC3B;AAAC,6BAAA,CAAC,CAAC;yBACP;qBACF;oBAAC,OAAO,KAAK,EAAE;AACd,wBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;qBAC3B;iBACF;aACF;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;aAC3B;AACF,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,cAAc,CAAC,KAAU,EAAA;QACvB,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,uBAAuB,CAAA;AACxE,QAAA,MAAM,IAAI,GAAe;AACvB,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,kBAAkB,EAAE,aAAa;SAClC,CAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;KACrB;AAED,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,EAAE;YACxB,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC9C;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC/B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;AAED,QAAA,IAAI,eAAe,IAAI,SAAS,EAAE;YAChC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;AAC7D,YAAA,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAA4B,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC9E,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,uBAAuB,CAAC,CAAC;AACzH,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;YACvF,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AAC5E,gBAAA,KAAK,EAAE,KAAK;AACb,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,YAAY,CAAC,OAAO,EAAE;gBACxB,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,IAAI,EAAE,cAAc,EAAC,CAAC,CAAC;aAC1D;AACD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,YAAA,YAAY,CAAC,aAAa,GAAG,MAAK;AAChC,gBAAA,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC;gBAC1C,IAAI,SAAS,EAAE;AACb,oBAAA,SAAS,CAAC,aAAa,GAAG,MAAK;AAC7B,wBAAA,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,EAAE;AACnC,4BAAA,IAAI,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE;gCACtC,SAAS,CAAC,WAAW,CAAC,EAAC,IAAI,EAAE,cAAc,EAAC,CAAC,CAAC;6BAC/C;yBACF;AACH,qBAAC,CAAC;iBACH;AACH,aAAC,CAAC;YACF,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,MAAK;AAChE,gBAAA,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;AACxD,aAAC,CAAC,CAAC;SACJ;aAAM;AACH,YAAA,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;SACpD;KACF;IAED,MAAM,WAAW,CAAC,CAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;AAED,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrE,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aAClE;YACD,OAAO,EAAC,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAC,CAAA;SAClD;aAAM;AACL,YAAA,OAAO,IAAI,CAAA;SACZ;KACF;AAED,IAAA,iCAAiC,CAAC,kBAAsC,EAAA;QACtE,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAG;AACvD,YAAA,MAAM,SAAS,GAAmB;gBAChC,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,QAAQ,EAAE,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,cAAc,EAAE,SAAS;AACzB,gBAAA,MAAM,EAAE,UAAU;aACnB,CAAA;AACD,YAAA,OAAO,SAAS,CAAA;AAClB,SAAC,CAAC,CAAA;AACF,QAAA,MAAM,IAAI,GAAe;AACvB,YAAA,MAAM,EAAE,kBAAkB,CAAC,MAAM,IAAI,EAAE;AACvC,YAAA,KAAK,EAAE,KAAK;SACb,CAAA;AACD,QAAA,kBAAkB,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;IAED,kCAAkC,CAAC,kBAAsC,EAAE,OAAqB,EAAA;QAC9F,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAG;AACtC,YAAA,MAAM,SAAS,GAAmB;AAChC,gBAAA,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE;gBACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAC/E,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,MAAM,CAAC,OAAO;AACnD,gBAAA,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC;gBACpC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAA;AACD,YAAA,OAAO,SAAS,CAAA;AAClB,SAAC,CAAC,CAAA;AACF,QAAA,MAAM,IAAI,GAAe;AACvB,YAAA,MAAM,EAAE,kBAAkB,CAAC,MAAM,IAAI,EAAE;AACvC,YAAA,KAAK,EAAE,KAAK;SACb,CAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACtC;IAED,8BAA8B,CAAC,kBAAsC,EAAE,OAAqB,EAAA;QAC1F,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAG;AACtC,YAAA,MAAM,SAAS,GAAmB;AAChC,gBAAA,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE;gBACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,MAAM,CAAC,OAAO;AACnD,gBAAA,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC;gBACpC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,MAAM,EAAC,MAAM,CAAC,MAAM;aACrB,CAAA;AACD,YAAA,OAAO,SAAS,CAAA;AAClB,SAAC,CAAC,CAAA;AACF,QAAA,MAAM,IAAI,GAAe;AACvB,YAAA,MAAM,EAAE,kBAAkB,CAAC,MAAM,IAAI,EAAE;AACvC,YAAA,KAAK,EAAE,KAAK;SACb,CAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;KACrB;AAED,IAAA,mBAAmB,CAAC,OAAqB,EAAA;AACvC,QAAA,MAAM,IAAI,GAAe;AACvB,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,kBAAkB,EAAE,OAAO,CAAC,WAAW,IAAI,uBAAuB;SACnE,CAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;KACrB;AAED,IAAA,sCAAsC,CAAC,OAAqB,EAAA;QAC1D,IAAI,QAAQ,GAAG,CAAC,CAAA;AAChB,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,EAAE;YACrD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;SAC1D;AAAM,aAAA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,EAAE;YACxD,QAAQ,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;SACjE;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAClB,YAAA,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;AAC5B,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA,CAAC,CAAC;KACJ;AApOU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,0KAkBJ,4BAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAlBvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EANf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA;YACT,gBAAgB;AACjB,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxDH,sxGA2EA,EAAA,MAAA,EAAA,CAAA,mSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtCI,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGf,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAQpB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,MAAA,CAAA,+DAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,+DAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,6DAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,MAAA,CAAA,iEAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,MAAA,CAAA,OAAA,0DAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,OAAA,2DAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,eAAA,CAAA,CAAA,EAAA,MAAA,CAAA,OAAA,wDAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,MAAA,CAAA,OAAA,4DAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,MAAA,CAAA,6DAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,MAAA,CAAA,OAAA,0DAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,cAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;gGAST,eAAe,EAAA,mBAAA,EAAA,MAAA,CAAA,+DAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,cAAA,CAAA,EAAA,+DAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,cAAA,CAAA,EAAA,6DAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,YAAA,CAAA,EAAA,iEAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,0DAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,cAAA,CAAA,EAAA,OAAA,2DAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,eAAA,CAAA,EAAA,OAAA,wDAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,YAAA,CAAA,EAAA,OAAA,4DAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,gBAAA,CAAA,EAAA,6DAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,YAAA,CAAA,EAAA,OAAA,0DAAA,CAAA,CAAA,IAAA,CAAA,CAAA,IAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,MAAA,EAAA,UAAA,EAAA,CAAA;sBA3B3B,SAAS;mCACE,SAAS,EAAA,UAAA,EACP,IAAI,EACP,OAAA,EAAA;4BACP,kBAAkB;4BAClB,eAAe;4BACf,cAAc;4BACd,cAAc;4BACd,wBAAwB;4BACxB,oBAAoB;4BACpB,YAAY;4BACZ,YAAY;4BACZ,gBAAgB;4BAChB,gBAAgB;4BAChB,cAAc;4BACd,eAAe;4BACf,YAAY;4BACZ,mBAAmB;4BACnB,kBAAkB;4BAClB,cAAc;yBACf,EACU,SAAA,EAAA;4BACT,gBAAgB;AACjB,yBAAA,EAAA,QAAA,EAAA,sxGAAA,EAAA,MAAA,EAAA,CAAA,mSAAA,CAAA,EAAA,CAAA;;8BAsBE,QAAQ;;8BAAI,MAAM;+BAAC,4BAA4B,CAAA;6CAjBzC,OAAO,EAAA,CAAA;0BAAf,KAAK;oBACG,IAAI,EAAA,CAAA;0BAAZ,KAAK;oBACG,gBAAgB,EAAA,CAAA;0BAAxB,KAAK;oBACG,qBAAqB,EAAA,CAAA;0BAA7B,KAAK;oBACG,QAAQ,EAAA,CAAA;0BAAhB,KAAK;;;MEhDK,yBAAyB,CAAA;IAC7B,OAAO,OAAO,CACnB,MAA8C,EAAA;QAE9C,OAAO;AACL,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,SAAS,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;SACvC,CAAC;KACH;8GARU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YARlC,eAAe;AACf,YAAA,YAAY,aAGZ,YAAY;YACZ,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;AAGN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YARlC,eAAe;AACf,YAAA,YAAY,EAGZ,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIH,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAXrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe;AAChB,qBAAA;AACF,iBAAA,CAAA;;;AChBD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
@@ -4,8 +4,8 @@ import { Node } from 'ngx-edu-sharing-api';
|
|
|
4
4
|
import { RenderData } from '../../dto/RenderData';
|
|
5
5
|
import { AssetControllerService } from 'ngx-rendering-service-api';
|
|
6
6
|
import { RenderingServiceLibConfiguration } from '../../../rendering-service-lib-configuration';
|
|
7
|
-
import { NgxExtendedPdfViewerComponent } from
|
|
8
|
-
import { NodeHelperService } from
|
|
7
|
+
import { NgxExtendedPdfViewerComponent } from 'ngx-extended-pdf-viewer';
|
|
8
|
+
import { NodeHelperService } from 'ngx-edu-sharing-ui';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export declare class PdfComponent implements RenderModule, OnChanges {
|
|
11
11
|
private assetControllerService;
|