UNPKG

ngx-flexmonster

Version:

Angular 12+ Module for Flexmonster Pivot Table & Charts

240 lines 33.8 kB
import { Component, Input, Output, EventEmitter } from '@angular/core'; import * as Flexmonster from 'flexmonster'; import * as i0 from "@angular/core"; const _ = Flexmonster; // Bundle the import for Angular compatibility. DO NOT REMOVE THIS LINE! export class FlexmonsterPivot { constructor(el) { // events this.cellclick = new EventEmitter(); this.celldoubleclick = new EventEmitter(); this.chartclick = new EventEmitter(); this.dataerror = new EventEmitter(); this.datafilecancelled = new EventEmitter(); this.dataloaded = new EventEmitter(); this.datachanged = new EventEmitter(); this.fieldslistclose = new EventEmitter(); this.fieldslistopen = new EventEmitter(); this.filterclose = new EventEmitter(); this.filteropen = new EventEmitter(); this.drillthroughopen = new EventEmitter(); this.exportcomplete = new EventEmitter(); this.exportstart = new EventEmitter(); this.drillthroughclose = new EventEmitter(); this.fullscreen = new EventEmitter(); this.loadingdata = new EventEmitter(); this.loadinglocalization = new EventEmitter(); this.loadingolapstructure = new EventEmitter(); this.loadingreportfile = new EventEmitter(); this.localizationerror = new EventEmitter(); this.localizationloaded = new EventEmitter(); this.olapstructureerror = new EventEmitter(); this.olapstructureloaded = new EventEmitter(); this.openingreportfile = new EventEmitter(); this.printcomplete = new EventEmitter(); this.printstart = new EventEmitter(); this.querycomplete = new EventEmitter(); this.queryerror = new EventEmitter(); this.ready = new EventEmitter(); this.reportchange = new EventEmitter(); this.reportcomplete = new EventEmitter(); this.reportfilecancelled = new EventEmitter(); this.reportfileerror = new EventEmitter(); this.runningquery = new EventEmitter(); this.unauthorizederror = new EventEmitter(); this.update = new EventEmitter(); this.beforetoolbarcreated = new EventEmitter(); this.beforegriddraw = new EventEmitter(); this.aftergriddraw = new EventEmitter(); this.afterchartdraw = new EventEmitter(); this.root = el.nativeElement; } ngOnInit() { this.flexmonster = new window.Flexmonster({ container: this.root.getElementsByClassName('fm-ng-wrapper')[0], componentFolder: this.componentFolder, width: this.width, height: this.height, toolbar: this.toolbar, licenseKey: this.licenseKey, licenseFilePath: this.licenseFilePath, report: this.report, global: this.global, accessibility: this.accessibility, shareReportConnection: this.shareReportConnection, customizeAPIRequest: this.customizeAPIRequest, customizeCell: this.customizeCell, customizeChartElement: this.customizeChartElement, customizeContextMenu: this.customizeContextMenu, sortFieldsList: this.sortFieldsList, cellclick: (cell) => this.cellclick.next(cell), celldoubleclick: (cell) => this.celldoubleclick.next(cell), chartclick: (event) => this.chartclick.next(event), datachanged: (event) => this.datachanged.next(event), dataerror: (event) => this.dataerror.next(event), datafilecancelled: () => this.datafilecancelled.next(), dataloaded: () => this.dataloaded.next(), fieldslistclose: () => this.fieldslistclose.next(), fieldslistopen: () => this.fieldslistopen.next(), filterclose: () => this.filterclose.next(), filteropen: (event) => this.filteropen.next(event), drillthroughopen: (cell) => this.drillthroughopen.next(cell), exportcomplete: () => this.exportcomplete.next(), exportstart: () => this.exportstart.next(), drillthroughclose: () => this.drillthroughclose.next(), loadingdata: () => this.loadingdata.next(), loadinglocalization: () => this.loadinglocalization.next(), loadingolapstructure: () => this.loadingolapstructure.next(), loadingreportfile: () => this.loadingreportfile.next(), localizationerror: () => this.localizationerror.next(), localizationloaded: () => this.localizationloaded.next(), olapstructureerror: (event) => this.olapstructureerror.next(event), olapstructureloaded: () => this.olapstructureloaded.next(), openingreportfile: () => this.openingreportfile.next(), printcomplete: () => this.printcomplete.next(), printstart: () => this.printstart.next(), querycomplete: () => this.querycomplete.next(), queryerror: (event) => this.queryerror.next(event), ready: () => this.ready.next(this.flexmonster), reportchange: () => this.reportchange.next(), reportcomplete: () => this.reportcomplete.next(), reportfilecancelled: () => this.reportfilecancelled.next(), reportfileerror: () => this.reportfileerror.next(), runningquery: () => this.runningquery.next(), unauthorizederror: (done) => this.unauthorizederror.next(done), update: () => this.update.next(), beforetoolbarcreated: (toolbar) => this.beforetoolbarcreated.next(toolbar), beforegriddraw: (event) => this.beforegriddraw.next(event), aftergriddraw: (event) => this.aftergriddraw.next(event), afterchartdraw: () => this.afterchartdraw.next() }); } ngOnDestroy() { if (this.flexmonster) { this.flexmonster.dispose(); this.flexmonster = null; } } } FlexmonsterPivot.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FlexmonsterPivot, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); FlexmonsterPivot.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FlexmonsterPivot, selector: "fm-pivot", inputs: { toolbar: "toolbar", licenseKey: "licenseKey", licenseFilePath: "licenseFilePath", width: "width", height: "height", componentFolder: "componentFolder", report: "report", shareReportConnection: "shareReportConnection", global: "global", accessibility: "accessibility", customizeAPIRequest: "customizeAPIRequest", customizeCell: "customizeCell", customizeChartElement: "customizeChartElement", customizeContextMenu: "customizeContextMenu", sortFieldsList: "sortFieldsList" }, outputs: { cellclick: "cellclick", celldoubleclick: "celldoubleclick", chartclick: "chartclick", dataerror: "dataerror", datafilecancelled: "datafilecancelled", dataloaded: "dataloaded", datachanged: "datachanged", fieldslistclose: "fieldslistclose", fieldslistopen: "fieldslistopen", filterclose: "filterclose", filteropen: "filteropen", drillthroughopen: "drillthroughopen", exportcomplete: "exportcomplete", exportstart: "exportstart", drillthroughclose: "drillthroughclose", fullscreen: "fullscreen", loadingdata: "loadingdata", loadinglocalization: "loadinglocalization", loadingolapstructure: "loadingolapstructure", loadingreportfile: "loadingreportfile", localizationerror: "localizationerror", localizationloaded: "localizationloaded", olapstructureerror: "olapstructureerror", olapstructureloaded: "olapstructureloaded", openingreportfile: "openingreportfile", printcomplete: "printcomplete", printstart: "printstart", querycomplete: "querycomplete", queryerror: "queryerror", ready: "ready", reportchange: "reportchange", reportcomplete: "reportcomplete", reportfilecancelled: "reportfilecancelled", reportfileerror: "reportfileerror", runningquery: "runningquery", unauthorizederror: "unauthorizederror", update: "update", beforetoolbarcreated: "beforetoolbarcreated", beforegriddraw: "beforegriddraw", aftergriddraw: "aftergriddraw", afterchartdraw: "afterchartdraw" }, ngImport: i0, template: '<div style="width:100%;height:100%;"><div class="fm-ng-wrapper"></div></div>', isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FlexmonsterPivot, decorators: [{ type: Component, args: [{ selector: 'fm-pivot', template: '<div style="width:100%;height:100%;"><div class="fm-ng-wrapper"></div></div>', //providers: [FlexmonsterPivotService] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { toolbar: [{ type: Input }], licenseKey: [{ type: Input }], licenseFilePath: [{ type: Input }], width: [{ type: Input }], height: [{ type: Input }], componentFolder: [{ type: Input }], report: [{ type: Input }], shareReportConnection: [{ type: Input }], global: [{ type: Input }], accessibility: [{ type: Input }], customizeAPIRequest: [{ type: Input }], customizeCell: [{ type: Input }], customizeChartElement: [{ type: Input }], customizeContextMenu: [{ type: Input }], sortFieldsList: [{ type: Input }], cellclick: [{ type: Output }], celldoubleclick: [{ type: Output }], chartclick: [{ type: Output }], dataerror: [{ type: Output }], datafilecancelled: [{ type: Output }], dataloaded: [{ type: Output }], datachanged: [{ type: Output }], fieldslistclose: [{ type: Output }], fieldslistopen: [{ type: Output }], filterclose: [{ type: Output }], filteropen: [{ type: Output }], drillthroughopen: [{ type: Output }], exportcomplete: [{ type: Output }], exportstart: [{ type: Output }], drillthroughclose: [{ type: Output }], fullscreen: [{ type: Output }], loadingdata: [{ type: Output }], loadinglocalization: [{ type: Output }], loadingolapstructure: [{ type: Output }], loadingreportfile: [{ type: Output }], localizationerror: [{ type: Output }], localizationloaded: [{ type: Output }], olapstructureerror: [{ type: Output }], olapstructureloaded: [{ type: Output }], openingreportfile: [{ type: Output }], printcomplete: [{ type: Output }], printstart: [{ type: Output }], querycomplete: [{ type: Output }], queryerror: [{ type: Output }], ready: [{ type: Output }], reportchange: [{ type: Output }], reportcomplete: [{ type: Output }], reportfilecancelled: [{ type: Output }], reportfileerror: [{ type: Output }], runningquery: [{ type: Output }], unauthorizederror: [{ type: Output }], update: [{ type: Output }], beforetoolbarcreated: [{ type: Output }], beforegriddraw: [{ type: Output }], aftergriddraw: [{ type: Output }], afterchartdraw: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZsZXhtb25zdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mbGV4bW9uc3Rlci9zcmMvbGliL25neC1mbGV4bW9uc3Rlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYSxNQUFPLGVBQWUsQ0FBQztBQUMvRixPQUFPLEtBQUssV0FBVyxNQUFNLGFBQWEsQ0FBQzs7QUFDM0MsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMseUVBQXlFO0FBT2hHLE1BQU0sT0FBTyxnQkFBZ0I7SUFpRTNCLFlBQVksRUFBYztRQS9DMUIsU0FBUztRQUNDLGNBQVMsR0FBdUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRSxvQkFBZSxHQUF1QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3pFLGVBQVUsR0FBd0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyRSxjQUFTLEdBQXlDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckUsc0JBQWlCLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0QsZUFBVSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BELGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkQsb0JBQWUsR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6RCxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3RELHFCQUFnQixHQUErRCxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xHLG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEQsZ0JBQVcsR0FBdUIsSUFBSSxZQUFZLEVB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QU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBGbGV4bW9uc3RlciBmcm9tICdmbGV4bW9uc3Rlcic7XHJcbmNvbnN0IF8gPSBGbGV4bW9uc3RlcjsgLy8gQnVuZGxlIHRoZSBpbXBvcnQgZm9yIEFuZ3VsYXIgY29tcGF0aWJpbGl0eS4gRE8gTk9UIFJFTU9WRSBUSElTIExJTkUhIFxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmbS1waXZvdCcsXHJcbiAgdGVtcGxhdGU6ICc8ZGl2IHN0eWxlPVwid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtcIj48ZGl2IGNsYXNzPVwiZm0tbmctd3JhcHBlclwiPjwvZGl2PjwvZGl2PicsXHJcbiAgLy9wcm92aWRlcnM6IFtGbGV4bW9uc3RlclBpdm90U2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZsZXhtb25zdGVyUGl2b3QgaW1wbGVtZW50cyBPbkRlc3Ryb3kgeyAvLyBpbXBsZW1lbnRzIE9uSW5pdFxyXG4gIC8vIHBhcmFtc1xyXG4gIEBJbnB1dCgpIHRvb2xiYXI6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbGljZW5zZUtleTogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgQElucHV0KCkgbGljZW5zZUZpbGVQYXRoOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKSBjb21wb25lbnRGb2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSByZXBvcnQ6IEZsZXhtb25zdGVyLlJlcG9ydCB8IHN0cmluZztcclxuICBASW5wdXQoKSBzaGFyZVJlcG9ydENvbm5lY3Rpb246IEZsZXhtb25zdGVyLkFQSUNsaWVudE9wdGlvbnM7XHJcbiAgQElucHV0KCkgZ2xvYmFsOiBGbGV4bW9uc3Rlci5SZXBvcnQ7XHJcbiAgQElucHV0KCkgYWNjZXNzaWJpbGl0eTogRmxleG1vbnN0ZXIuQWNjZXNzaWJpbGl0eU9wdGlvbnM7XHJcbiAgQElucHV0KCkgY3VzdG9taXplQVBJUmVxdWVzdDogKHJlcXVlc3Q6IE9iamVjdCkgPT4gT2JqZWN0O1xyXG4gIEBJbnB1dCgpIGN1c3RvbWl6ZUNlbGw6IChjZWxsOiBGbGV4bW9uc3Rlci5DZWxsQnVpbGRlciwgZGF0YTogRmxleG1vbnN0ZXIuQ2VsbERhdGEpID0+IHZvaWQ7XHJcbiAgQElucHV0KCkgY3VzdG9taXplQ2hhcnRFbGVtZW50OiAoZWxlbWVudDogRWxlbWVudCwgZGF0YTogRmxleG1vbnN0ZXIuQ2hhcnREYXRhIHwgRmxleG1vbnN0ZXIuQ2hhcnRMZWdlbmRJdGVtRGF0YSkgPT4gdm9pZDtcclxuICBASW5wdXQoKSBjdXN0b21pemVDb250ZXh0TWVudTogKGNlbGw6IEZsZXhtb25zdGVyLkNvbnRleHRNZW51SXRlbVtdLCBkYXRhOiBGbGV4bW9uc3Rlci5DZWxsRGF0YSB8IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSwgdmlld1R5cGU6IHN0cmluZykgPT4gRmxleG1vbnN0ZXIuQ29udGV4dE1lbnVJdGVtW107XHJcbiAgQElucHV0KCkgc29ydEZpZWxkc0xpc3Q6IChmaXJzdDogRmxleG1vbnN0ZXIuRmllbGRzTGlzdFNvcnRpbmdJdGVtLCBzZWNvbmQ6IEZsZXhtb25zdGVyLkZpZWxkc0xpc3RTb3J0aW5nSXRlbSwgZmllbGRzTGlzdFR5cGU6IHN0cmluZykgPT4gbnVtYmVyO1xyXG5cclxuICAvLyBldmVudHNcclxuICBAT3V0cHV0KCkgY2VsbGNsaWNrOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuQ2VsbERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjZWxsZG91YmxlY2xpY2s6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5DZWxsRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNoYXJ0Y2xpY2s6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5DaGFydERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhZXJyb3I6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5FcnJvckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWZpbGVjYW5jZWxsZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhY2hhbmdlZDogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpZWxkc2xpc3RjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWVsZHNsaXN0b3BlbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJvcGVuOiBFdmVudEVtaXR0ZXI8T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZHJpbGx0aHJvdWdob3BlbjogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLkNlbGxEYXRhIHwgRmxleG1vbnN0ZXIuQ2hhcnREYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0Y29tcGxldGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0c3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZHJpbGx0aHJvdWdoY2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZnVsbHNjcmVlbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5nZGF0YTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5nbG9jYWxpemF0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvYWRpbmdvbGFwc3RydWN0dXJlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvYWRpbmdyZXBvcnRmaWxlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvY2FsaXphdGlvbmVycm9yOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvY2FsaXphdGlvbmxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbGFwc3RydWN0dXJlZXJyb3I6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5FcnJvckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb2xhcHN0cnVjdHVyZWxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuaW5ncmVwb3J0ZmlsZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwcmludGNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHByaW50c3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcXVlcnljb21wbGV0ZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBxdWVyeWVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuRXJyb3JFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlYWR5OiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuUGl2b3Q+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZXBvcnRjaGFuZ2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0Y29tcGxldGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0ZmlsZWNhbmNlbGxlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZXBvcnRmaWxlZXJyb3I6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcnVubmluZ3F1ZXJ5OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVuYXV0aG9yaXplZGVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuVW5hdXRob3JpemVkRXJyb3JIYW5kbGVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdXBkYXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZXRvb2xiYXJjcmVhdGVkOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuVG9vbGJhcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZWdyaWRkcmF3OiBFdmVudEVtaXR0ZXI8T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJncmlkZHJhdzogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyY2hhcnRkcmF3OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLy8gYXBpXHJcbiAgcHVibGljIGZsZXhtb25zdGVyOiBGbGV4bW9uc3Rlci5QaXZvdDtcclxuICAvLyBwcml2YXRlXHJcbiAgcHJpdmF0ZSByb290OiBIVE1MRWxlbWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMucm9vdCA9IDxIVE1MRWxlbWVudD5lbC5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmZsZXhtb25zdGVyID0gbmV3IHdpbmRvdy5GbGV4bW9uc3Rlcih7XHJcbiAgICAgIGNvbnRhaW5lcjogdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZtLW5nLXdyYXBwZXInKVswXSxcclxuICAgICAgY29tcG9uZW50Rm9sZGVyOiB0aGlzLmNvbXBvbmVudEZvbGRlcixcclxuICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXHJcbiAgICAgIHRvb2xiYXI6IHRoaXMudG9vbGJhcixcclxuICAgICAgbGljZW5zZUtleTogdGhpcy5saWNlbnNlS2V5IGFzIHN0cmluZyxcclxuICAgICAgbGljZW5zZUZpbGVQYXRoOiB0aGlzLmxpY2Vuc2VGaWxlUGF0aCxcclxuICAgICAgcmVwb3J0OiB0aGlzLnJlcG9ydCxcclxuICAgICAgZ2xvYmFsOiB0aGlzLmdsb2JhbCxcclxuICAgICAgYWNjZXNzaWJpbGl0eTogdGhpcy5hY2Nlc3NpYmlsaXR5LFxyXG4gICAgICBzaGFyZVJlcG9ydENvbm5lY3Rpb246IHRoaXMuc2hhcmVSZXBvcnRDb25uZWN0aW9uLFxyXG4gICAgICBjdXN0b21pemVBUElSZXF1ZXN0OiB0aGlzLmN1c3RvbWl6ZUFQSVJlcXVlc3QsXHJcbiAgICAgIGN1c3RvbWl6ZUNlbGw6IHRoaXMuY3VzdG9taXplQ2VsbCxcclxuICAgICAgY3VzdG9taXplQ2hhcnRFbGVtZW50OiB0aGlzLmN1c3RvbWl6ZUNoYXJ0RWxlbWVudCxcclxuICAgICAgY3VzdG9taXplQ29udGV4dE1lbnU6IHRoaXMuY3VzdG9taXplQ29udGV4dE1lbnUsXHJcbiAgICAgIHNvcnRGaWVsZHNMaXN0OiB0aGlzLnNvcnRGaWVsZHNMaXN0LFxyXG4gICAgICBjZWxsY2xpY2s6IChjZWxsOiBGbGV4bW9uc3Rlci5DZWxsRGF0YSkgPT4gdGhpcy5jZWxsY2xpY2submV4dChjZWxsKSxcclxuICAgICAgY2VsbGRvdWJsZWNsaWNrOiAoY2VsbDogRmxleG1vbnN0ZXIuQ2VsbERhdGEpID0+IHRoaXMuY2VsbGRvdWJsZWNsaWNrLm5leHQoY2VsbCksXHJcbiAgICAgIGNoYXJ0Y2xpY2s6IChldmVudDogRmxleG1vbnN0ZXIuQ2hhcnREYXRhKSA9PiB0aGlzLmNoYXJ0Y2xpY2submV4dChldmVudCksXHJcbiAgICAgIGRhdGFjaGFuZ2VkOiAoZXZlbnQ6IE9iamVjdCkgPT4gdGhpcy5kYXRhY2hhbmdlZC5uZXh0KGV2ZW50KSxcclxuICAgICAgZGF0YWVycm9yOiAoZXZlbnQ6IEZsZXhtb25zdGVyLkVycm9yRXZlbnQgfCB1bmRlZmluZWQpID0+IHRoaXMuZGF0YWVycm9yLm5leHQoZXZlbnQhKSxcclxuICAgICAgZGF0YWZpbGVjYW5jZWxsZWQ6ICgpID0+IHRoaXMuZGF0YWZpbGVjYW5jZWxsZWQubmV4dCgpLFxyXG4gICAgICBkYXRhbG9hZGVkOiAoKSA9PiB0aGlzLmRhdGFsb2FkZWQubmV4dCgpLFxyXG4gICAgICBmaWVsZHNsaXN0Y2xvc2U6ICgpID0+IHRoaXMuZmllbGRzbGlzdGNsb3NlLm5leHQoKSxcclxuICAgICAgZmllbGRzbGlzdG9wZW46ICgpID0+IHRoaXMuZmllbGRzbGlzdG9wZW4ubmV4dCgpLFxyXG4gICAgICBmaWx0ZXJjbG9zZTogKCkgPT4gdGhpcy5maWx0ZXJjbG9zZS5uZXh0KCksXHJcbiAgICAgIGZpbHRlcm9wZW46IChldmVudDogT2JqZWN0KSA9PiB0aGlzLmZpbHRlcm9wZW4ubmV4dChldmVudCksXHJcbiAgICAgIGRyaWxsdGhyb3VnaG9wZW46IChjZWxsOiBGbGV4bW9uc3Rlci5DZWxsRGF0YSB8IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSkgPT4gdGhpcy5kcmlsbHRocm91Z2hvcGVuLm5leHQoY2VsbCksXHJcbiAgICAgIGV4cG9ydGNvbXBsZXRlOiAoKSA9PiB0aGlzLmV4cG9ydGNvbXBsZXRlLm5leHQoKSxcclxuICAgICAgZXhwb3J0c3RhcnQ6ICgpID0+IHRoaXMuZXhwb3J0c3RhcnQubmV4dCgpLFxyXG4gICAgICBkcmlsbHRocm91Z2hjbG9zZTogKCkgPT4gdGhpcy5kcmlsbHRocm91Z2hjbG9zZS5uZXh0KCksXHJcbiAgICAgIGxvYWRpbmdkYXRhOiAoKSA9PiB0aGlzLmxvYWRpbmdkYXRhLm5leHQoKSxcclxuICAgICAgbG9hZGluZ2xvY2FsaXphdGlvbjogKCkgPT4gdGhpcy5sb2FkaW5nbG9jYWxpemF0aW9uLm5leHQoKSxcclxuICAgICAgbG9hZGluZ29sYXBzdHJ1Y3R1cmU6ICgpID0+IHRoaXMubG9hZGluZ29sYXBzdHJ1Y3R1cmUubmV4dCgpLFxyXG4gICAgICBsb2FkaW5ncmVwb3J0ZmlsZTogKCkgPT4gdGhpcy5sb2FkaW5ncmVwb3J0ZmlsZS5uZXh0KCksXHJcbiAgICAgIGxvY2FsaXphdGlvbmVycm9yOiAoKSA9PiB0aGlzLmxvY2FsaXphdGlvbmVycm9yLm5leHQoKSxcclxuICAgICAgbG9jYWxpemF0aW9ubG9hZGVkOiAoKSA9PiB0aGlzLmxvY2FsaXphdGlvbmxvYWRlZC5uZXh0KCksXHJcbiAgICAgIG9sYXBzdHJ1Y3R1cmVlcnJvcjogKGV2ZW50OiBGbGV4bW9uc3Rlci5FcnJvckV2ZW50ICB8IHVuZGVmaW5lZCkgPT4gdGhpcy5vbGFwc3RydWN0dXJlZXJyb3IubmV4dChldmVudCEpLFxyXG4gICAgICBvbGFwc3RydWN0dXJlbG9hZGVkOiAoKSA9PiB0aGlzLm9sYXBzdHJ1Y3R1cmVsb2FkZWQubmV4dCgpLFxyXG4gICAgICBvcGVuaW5ncmVwb3J0ZmlsZTogKCkgPT4gdGhpcy5vcGVuaW5ncmVwb3J0ZmlsZS5uZXh0KCksXHJcbiAgICAgIHByaW50Y29tcGxldGU6ICgpID0+IHRoaXMucHJpbnRjb21wbGV0ZS5uZXh0KCksXHJcbiAgICAgIHByaW50c3RhcnQ6ICgpID0+IHRoaXMucHJpbnRzdGFydC5uZXh0KCksXHJcbiAgICAgIHF1ZXJ5Y29tcGxldGU6ICgpID0+IHRoaXMucXVlcnljb21wbGV0ZS5uZXh0KCksXHJcbiAgICAgIHF1ZXJ5ZXJyb3I6IChldmVudDogRmxleG1vbnN0ZXIuRXJyb3JFdmVudCAgfCB1bmRlZmluZWQpID0+IHRoaXMucXVlcnllcnJvci5uZXh0KGV2ZW50ISksXHJcbiAgICAgIHJlYWR5OiAoKSA9PiB0aGlzLnJlYWR5Lm5leHQodGhpcy5mbGV4bW9uc3RlciksXHJcbiAgICAgIHJlcG9ydGNoYW5nZTogKCkgPT4gdGhpcy5yZXBvcnRjaGFuZ2UubmV4dCgpLFxyXG4gICAgICByZXBvcnRjb21wbGV0ZTogKCkgPT4gdGhpcy5yZXBvcnRjb21wbGV0ZS5uZXh0KCksXHJcbiAgICAgIHJlcG9ydGZpbGVjYW5jZWxsZWQ6ICgpID0+IHRoaXMucmVwb3J0ZmlsZWNhbmNlbGxlZC5uZXh0KCksXHJcbiAgICAgIHJlcG9ydGZpbGVlcnJvcjogKCkgPT4gdGhpcy5yZXBvcnRmaWxlZXJyb3IubmV4dCgpLFxyXG4gICAgICBydW5uaW5ncXVlcnk6ICgpID0+IHRoaXMucnVubmluZ3F1ZXJ5Lm5leHQoKSxcclxuICAgICAgdW5hdXRob3JpemVkZXJyb3I6IChkb25lOiBGbGV4bW9uc3Rlci5VbmF1dGhvcml6ZWRFcnJvckhhbmRsZXIpID0+IHRoaXMudW5hdXRob3JpemVkZXJyb3IubmV4dChkb25lKSxcclxuICAgICAgdXBkYXRlOiAoKSA9PiB0aGlzLnVwZGF0ZS5uZXh0KCksXHJcbiAgICAgIGJlZm9yZXRvb2xiYXJjcmVhdGVkOiAodG9vbGJhcjogRmxleG1vbnN0ZXIuVG9vbGJhcikgPT4gdGhpcy5iZWZvcmV0b29sYmFyY3JlYXRlZC5uZXh0KHRvb2xiYXIpLFxyXG4gICAgICBiZWZvcmVncmlkZHJhdzogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuYmVmb3JlZ3JpZGRyYXcubmV4dChldmVudCksXHJcbiAgICAgIGFmdGVyZ3JpZGRyYXc6IChldmVudDogT2JqZWN0KSA9PiB0aGlzLmFmdGVyZ3JpZGRyYXcubmV4dChldmVudCksXHJcbiAgICAgIGFmdGVyY2hhcnRkcmF3OiAoKSA9PiB0aGlzLmFmdGVyY2hhcnRkcmF3Lm5leHQoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMuZmxleG1vbnN0ZXIpIHtcclxuICAgICAgICAgIHRoaXMuZmxleG1vbnN0ZXIuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgdGhpcy5mbGV4bW9uc3RlciA9IG51bGw7XHJcbiAgICAgIH1cclxuICB9XHJcbn1cclxuIl19