UNPKG

ng-flexmonster

Version:

Angular 4+ Module for Flexmonster Pivot Table & Charts

244 lines (236 loc) 33.9 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('flexmonster'), require('@angular/common')) : typeof define === 'function' && define.amd ? define('ng-flexmonster', ['exports', '@angular/core', 'flexmonster', '@angular/common'], factory) : (factory((global['ng-flexmonster'] = {}),global.ng.core,null,global.ng.common)); }(this, (function (exports,core,Flexmonster,common) { 'use strict'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ var FlexmonsterPivot = /** @class */ (function () { function FlexmonsterPivot(el) { // events this.cellclick = new core.EventEmitter(); this.celldoubleclick = new core.EventEmitter(); this.chartclick = new core.EventEmitter(); this.dataerror = new core.EventEmitter(); this.datafilecancelled = new core.EventEmitter(); this.dataloaded = new core.EventEmitter(); this.datachanged = new core.EventEmitter(); this.fieldslistclose = new core.EventEmitter(); this.fieldslistopen = new core.EventEmitter(); this.filterclose = new core.EventEmitter(); this.filteropen = new core.EventEmitter(); this.drillthroughopen = new core.EventEmitter(); this.exportcomplete = new core.EventEmitter(); this.exportstart = new core.EventEmitter(); this.drillthroughclose = new core.EventEmitter(); this.fullscreen = new core.EventEmitter(); this.loadingdata = new core.EventEmitter(); this.loadinglocalization = new core.EventEmitter(); this.loadingolapstructure = new core.EventEmitter(); this.loadingreportfile = new core.EventEmitter(); this.localizationerror = new core.EventEmitter(); this.localizationloaded = new core.EventEmitter(); this.olapstructureerror = new core.EventEmitter(); this.olapstructureloaded = new core.EventEmitter(); this.openingreportfile = new core.EventEmitter(); this.printcomplete = new core.EventEmitter(); this.printstart = new core.EventEmitter(); this.querycomplete = new core.EventEmitter(); this.queryerror = new core.EventEmitter(); this.ready = new core.EventEmitter(); this.reportchange = new core.EventEmitter(); this.reportcomplete = new core.EventEmitter(); this.reportfilecancelled = new core.EventEmitter(); this.reportfileerror = new core.EventEmitter(); this.runningquery = new core.EventEmitter(); this.unauthorizederror = new core.EventEmitter(); this.update = new core.EventEmitter(); this.beforetoolbarcreated = new core.EventEmitter(); this.beforegriddraw = new core.EventEmitter(); this.aftergriddraw = new core.EventEmitter(); this.afterchartdraw = new core.EventEmitter(); this.root = ( /** @type {?} */(el.nativeElement)); } /** * @return {?} */ FlexmonsterPivot.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; this.flexmonster = new 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: function (cell) { return _this.cellclick.next(cell); }, celldoubleclick: function (cell) { return _this.celldoubleclick.next(cell); }, chartclick: function (event) { return _this.chartclick.next(event); }, datachanged: function (event) { return _this.datachanged.next(event); }, dataerror: function (event) { return _this.dataerror.next(event); }, datafilecancelled: function () { return _this.datafilecancelled.next(); }, dataloaded: function () { return _this.dataloaded.next(); }, fieldslistclose: function () { return _this.fieldslistclose.next(); }, fieldslistopen: function () { return _this.fieldslistopen.next(); }, filterclose: function () { return _this.filterclose.next(); }, filteropen: function (event) { return _this.filteropen.next(event); }, drillthroughopen: function (cell) { return _this.drillthroughopen.next(cell); }, exportcomplete: function () { return _this.exportcomplete.next(); }, exportstart: function () { return _this.exportstart.next(); }, drillthroughclose: function () { return _this.drillthroughclose.next(); }, loadingdata: function () { return _this.loadingdata.next(); }, loadinglocalization: function () { return _this.loadinglocalization.next(); }, loadingolapstructure: function () { return _this.loadingolapstructure.next(); }, loadingreportfile: function () { return _this.loadingreportfile.next(); }, localizationerror: function () { return _this.localizationerror.next(); }, localizationloaded: function () { return _this.localizationloaded.next(); }, olapstructureerror: function (event) { return _this.olapstructureerror.next(event); }, olapstructureloaded: function () { return _this.olapstructureloaded.next(); }, openingreportfile: function () { return _this.openingreportfile.next(); }, printcomplete: function () { return _this.printcomplete.next(); }, printstart: function () { return _this.printstart.next(); }, querycomplete: function () { return _this.querycomplete.next(); }, queryerror: function (event) { return _this.queryerror.next(event); }, ready: function () { return _this.ready.next(_this.flexmonster); }, reportchange: function () { return _this.reportchange.next(); }, reportcomplete: function () { return _this.reportcomplete.next(); }, reportfilecancelled: function () { return _this.reportfilecancelled.next(); }, reportfileerror: function () { return _this.reportfileerror.next(); }, runningquery: function () { return _this.runningquery.next(); }, unauthorizederror: function (done) { return _this.unauthorizederror.next(done); }, update: function () { return _this.update.next(); }, beforetoolbarcreated: function (toolbar) { return _this.beforetoolbarcreated.next(toolbar); }, beforegriddraw: function (event) { return _this.beforegriddraw.next(event); }, aftergriddraw: function (event) { return _this.aftergriddraw.next(event); }, afterchartdraw: function () { return _this.afterchartdraw.next(); } }); }; /** * @return {?} */ FlexmonsterPivot.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.flexmonster) { this.flexmonster.dispose(); this.flexmonster = null; } }; FlexmonsterPivot.decorators = [ { type: core.Component, args: [{ selector: 'fm-pivot', template: '<div style="width:100%;height:100%;"><div class="fm-ng-wrapper"></div></div>' },] }, ]; FlexmonsterPivot.ctorParameters = function () { return [ { type: core.ElementRef } ]; }; FlexmonsterPivot.propDecorators = { toolbar: [{ type: core.Input }], licenseKey: [{ type: core.Input }], licenseFilePath: [{ type: core.Input }], width: [{ type: core.Input }], height: [{ type: core.Input }], componentFolder: [{ type: core.Input }], report: [{ type: core.Input }], shareReportConnection: [{ type: core.Input }], global: [{ type: core.Input }], accessibility: [{ type: core.Input }], customizeAPIRequest: [{ type: core.Input }], customizeCell: [{ type: core.Input }], customizeChartElement: [{ type: core.Input }], customizeContextMenu: [{ type: core.Input }], sortFieldsList: [{ type: core.Input }], cellclick: [{ type: core.Output }], celldoubleclick: [{ type: core.Output }], chartclick: [{ type: core.Output }], dataerror: [{ type: core.Output }], datafilecancelled: [{ type: core.Output }], dataloaded: [{ type: core.Output }], datachanged: [{ type: core.Output }], fieldslistclose: [{ type: core.Output }], fieldslistopen: [{ type: core.Output }], filterclose: [{ type: core.Output }], filteropen: [{ type: core.Output }], drillthroughopen: [{ type: core.Output }], exportcomplete: [{ type: core.Output }], exportstart: [{ type: core.Output }], drillthroughclose: [{ type: core.Output }], fullscreen: [{ type: core.Output }], loadingdata: [{ type: core.Output }], loadinglocalization: [{ type: core.Output }], loadingolapstructure: [{ type: core.Output }], loadingreportfile: [{ type: core.Output }], localizationerror: [{ type: core.Output }], localizationloaded: [{ type: core.Output }], olapstructureerror: [{ type: core.Output }], olapstructureloaded: [{ type: core.Output }], openingreportfile: [{ type: core.Output }], printcomplete: [{ type: core.Output }], printstart: [{ type: core.Output }], querycomplete: [{ type: core.Output }], queryerror: [{ type: core.Output }], ready: [{ type: core.Output }], reportchange: [{ type: core.Output }], reportcomplete: [{ type: core.Output }], reportfilecancelled: [{ type: core.Output }], reportfileerror: [{ type: core.Output }], runningquery: [{ type: core.Output }], unauthorizederror: [{ type: core.Output }], update: [{ type: core.Output }], beforetoolbarcreated: [{ type: core.Output }], beforegriddraw: [{ type: core.Output }], aftergriddraw: [{ type: core.Output }], afterchartdraw: [{ type: core.Output }] }; return FlexmonsterPivot; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ var FlexmonsterPivotModule = /** @class */ (function () { function FlexmonsterPivotModule() { } FlexmonsterPivotModule.decorators = [ { type: core.NgModule, args: [{ imports: [ common.CommonModule ], declarations: [FlexmonsterPivot], exports: [FlexmonsterPivot] },] }, ]; return FlexmonsterPivotModule; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ exports.FlexmonsterPivotModule = FlexmonsterPivotModule; exports.FlexmonsterPivot = FlexmonsterPivot; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZmxleG1vbnN0ZXIudW1kLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZy1mbGV4bW9uc3Rlci9mbGV4bW9uc3Rlci5jb21wb25lbnQudHMiLCJuZzovL25nLWZsZXhtb25zdGVyL2ZsZXhtb25zdGVyLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIEZsZXhtb25zdGVyIGZyb20gJ2ZsZXhtb25zdGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm0tcGl2b3QnLFxyXG4gIHRlbXBsYXRlOiAnPGRpdiBzdHlsZT1cIndpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7XCI+PGRpdiBjbGFzcz1cImZtLW5nLXdyYXBwZXJcIj48L2Rpdj48L2Rpdj4nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbGV4bW9uc3RlclBpdm90IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvLyBwYXJhbXNcclxuICBASW5wdXQoKSB0b29sYmFyOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxpY2Vuc2VLZXk6IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGxpY2Vuc2VGaWxlUGF0aDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgQElucHV0KCkgY29tcG9uZW50Rm9sZGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcmVwb3J0OiBGbGV4bW9uc3Rlci5SZXBvcnQgfCBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hhcmVSZXBvcnRDb25uZWN0aW9uOiBGbGV4bW9uc3Rlci5BUElDbGllbnRPcHRpb25zO1xyXG4gIEBJbnB1dCgpIGdsb2JhbDogRmxleG1vbnN0ZXIuUmVwb3J0O1xyXG4gIEBJbnB1dCgpIGFjY2Vzc2liaWxpdHk6IEZsZXhtb25zdGVyLkFjY2Vzc2liaWxpdHlPcHRpb25zO1xyXG4gIEBJbnB1dCgpIGN1c3RvbWl6ZUFQSVJlcXVlc3Q6IChyZXF1ZXN0OiBPYmplY3QpID0+IE9iamVjdDtcclxuICBASW5wdXQoKSBjdXN0b21pemVDZWxsOiAoY2VsbDogRmxleG1vbnN0ZXIuQ2VsbEJ1aWxkZXIsIGRhdGE6IEZsZXhtb25zdGVyLkNlbGxEYXRhKSA9PiB2b2lkO1xyXG4gIEBJbnB1dCgpIGN1c3RvbWl6ZUNoYXJ0RWxlbWVudDogKGVsZW1lbnQ6IEVsZW1lbnQsIGRhdGE6IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSB8IEZsZXhtb25zdGVyLkNoYXJ0TGVnZW5kSXRlbURhdGEpID0+IHZvaWQ7XHJcbiAgQElucHV0KCkgY3VzdG9taXplQ29udGV4dE1lbnU6IChjZWxsOiBGbGV4bW9uc3Rlci5Db250ZXh0TWVudUl0ZW1bXSwgZGF0YTogRmxleG1vbnN0ZXIuQ2VsbERhdGEgfCBGbGV4bW9uc3Rlci5DaGFydERhdGEsIHZpZXdUeXBlOiBzdHJpbmcpID0+IEZsZXhtb25zdGVyLkNvbnRleHRNZW51SXRlbVtdO1xyXG4gIEBJbnB1dCgpIHNvcnRGaWVsZHNMaXN0OiAoZmlyc3Q6IEZsZXhtb25zdGVyLkZpZWxkc0xpc3RTb3J0aW5nSXRlbSwgc2Vjb25kOiBGbGV4bW9uc3Rlci5GaWVsZHNMaXN0U29ydGluZ0l0ZW0sIGZpZWxkc0xpc3RUeXBlOiBzdHJpbmcpID0+IG51bWJlcjtcclxuXHJcbiAgLy8gZXZlbnRzXHJcbiAgQE91dHB1dCgpIGNlbGxjbGljazogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLkNlbGxEYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2VsbGRvdWJsZWNsaWNrOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuQ2VsbERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjaGFydGNsaWNrOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuQ2hhcnREYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuRXJyb3JFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRhdGFmaWxlY2FuY2VsbGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRhdGFsb2FkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWVsZHNsaXN0Y2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmllbGRzbGlzdG9wZW46IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyY2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyb3BlbjogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRyaWxsdGhyb3VnaG9wZW46IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5DZWxsRGF0YSB8IEZsZXhtb25zdGVyLkNoYXJ0RGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydGNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydHN0YXJ0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRyaWxsdGhyb3VnaGNsb3NlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZ1bGxzY3JlZW46IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbG9hZGluZ2RhdGE6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbG9hZGluZ2xvY2FsaXphdGlvbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5nb2xhcHN0cnVjdHVyZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5ncmVwb3J0ZmlsZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2NhbGl6YXRpb25lcnJvcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2NhbGl6YXRpb25sb2FkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb2xhcHN0cnVjdHVyZWVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuRXJyb3JFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9sYXBzdHJ1Y3R1cmVsb2FkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb3BlbmluZ3JlcG9ydGZpbGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHJpbnRjb21wbGV0ZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwcmludHN0YXJ0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHF1ZXJ5Y29tcGxldGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcXVlcnllcnJvcjogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLkVycm9yRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZWFkeTogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLlBpdm90PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0Y2hhbmdlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlcG9ydGNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlcG9ydGZpbGVjYW5jZWxsZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0ZmlsZWVycm9yOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJ1bm5pbmdxdWVyeTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1bmF1dGhvcml6ZWRlcnJvcjogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLlVuYXV0aG9yaXplZEVycm9ySGFuZGxlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVwZGF0ZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmV0b29sYmFyY3JlYXRlZDogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLlRvb2xiYXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmVncmlkZHJhdzogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyZ3JpZGRyYXc6IEV2ZW50RW1pdHRlcjxPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhZnRlcmNoYXJ0ZHJhdzogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8vIGFwaVxyXG4gIHB1YmxpYyBmbGV4bW9uc3RlcjogRmxleG1vbnN0ZXIuUGl2b3Q7XHJcbiAgLy8gcHJpdmF0ZVxyXG4gIHByaXZhdGUgcm9vdDogSFRNTEVsZW1lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLnJvb3QgPSA8SFRNTEVsZW1lbnQ+ZWwubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5mbGV4bW9uc3RlciA9IG5ldyBGbGV4bW9uc3Rlcih7XHJcbiAgICAgIGNvbnRhaW5lcjogdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZtLW5nLXdyYXBwZXInKVswXSxcclxuICAgICAgY29tcG9uZW50Rm9sZGVyOiB0aGlzLmNvbXBvbmVudEZvbGRlcixcclxuICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXHJcbiAgICAgIHRvb2xiYXI6IHRoaXMudG9vbGJhcixcclxuICAgICAgbGljZW5zZUtleTogdGhpcy5saWNlbnNlS2V5LFxyXG4gICAgICBsaWNlbnNlRmlsZVBhdGg6IHRoaXMubGljZW5zZUZpbGVQYXRoLFxyXG4gICAgICByZXBvcnQ6IHRoaXMucmVwb3J0LFxyXG4gICAgICBnbG9iYWw6IHRoaXMuZ2xvYmFsLFxyXG4gICAgICBhY2Nlc3NpYmlsaXR5OiB0aGlzLmFjY2Vzc2liaWxpdHksXHJcbiAgICAgIHNoYXJlUmVwb3J0Q29ubmVjdGlvbjogdGhpcy5zaGFyZVJlcG9ydENvbm5lY3Rpb24sXHJcbiAgICAgIGN1c3RvbWl6ZUFQSVJlcXVlc3Q6IHRoaXMuY3VzdG9taXplQVBJUmVxdWVzdCxcclxuICAgICAgY3VzdG9taXplQ2VsbDogdGhpcy5jdXN0b21pemVDZWxsLFxyXG4gICAgICBjdXN0b21pemVDaGFydEVsZW1lbnQ6IHRoaXMuY3VzdG9taXplQ2hhcnRFbGVtZW50LFxyXG4gICAgICBjdXN0b21pemVDb250ZXh0TWVudTogdGhpcy5jdXN0b21pemVDb250ZXh0TWVudSxcclxuICAgICAgc29ydEZpZWxkc0xpc3Q6IHRoaXMuc29ydEZpZWxkc0xpc3QsXHJcbiAgICAgIGNlbGxjbGljazogKGNlbGw6IEZsZXhtb25zdGVyLkNlbGxEYXRhKSA9PiB0aGlzLmNlbGxjbGljay5uZXh0KGNlbGwpLFxyXG4gICAgICBjZWxsZG91YmxlY2xpY2s6IChjZWxsOiBGbGV4bW9uc3Rlci5DZWxsRGF0YSkgPT4gdGhpcy5jZWxsZG91YmxlY2xpY2submV4dChjZWxsKSxcclxuICAgICAgY2hhcnRjbGljazogKGV2ZW50OiBGbGV4bW9uc3Rlci5DaGFydERhdGEpID0+IHRoaXMuY2hhcnRjbGljay5uZXh0KGV2ZW50KSxcclxuICAgICAgZGF0YWNoYW5nZWQ6IChldmVudDogT2JqZWN0KSA9PiB0aGlzLmRhdGFjaGFuZ2VkLm5leHQoZXZlbnQpLFxyXG4gICAgICBkYXRhZXJyb3I6IChldmVudDogT2JqZWN0KSA9PiB0aGlzLmRhdGFlcnJvci5uZXh0KGV2ZW50KSxcclxuICAgICAgZGF0YWZpbGVjYW5jZWxsZWQ6ICgpID0+IHRoaXMuZGF0YWZpbGVjYW5jZWxsZWQubmV4dCgpLFxyXG4gICAgICBkYXRhbG9hZGVkOiAoKSA9PiB0aGlzLmRhdGFsb2FkZWQubmV4dCgpLFxyXG4gICAgICBmaWVsZHNsaXN0Y2xvc2U6ICgpID0+IHRoaXMuZmllbGRzbGlzdGNsb3NlLm5leHQoKSxcclxuICAgICAgZmllbGRzbGlzdG9wZW46ICgpID0+IHRoaXMuZmllbGRzbGlzdG9wZW4ubmV4dCgpLFxyXG4gICAgICBmaWx0ZXJjbG9zZTogKCkgPT4gdGhpcy5maWx0ZXJjbG9zZS5uZXh0KCksXHJcbiAgICAgIGZpbHRlcm9wZW46IChldmVudDogT2JqZWN0KSA9PiB0aGlzLmZpbHRlcm9wZW4ubmV4dChldmVudCksXHJcbiAgICAgIGRyaWxsdGhyb3VnaG9wZW46IChjZWxsOiBGbGV4bW9uc3Rlci5DZWxsRGF0YSB8IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSkgPT4gdGhpcy5kcmlsbHRocm91Z2hvcGVuLm5leHQoY2VsbCksXHJcbiAgICAgIGV4cG9ydGNvbXBsZXRlOiAoKSA9PiB0aGlzLmV4cG9ydGNvbXBsZXRlLm5leHQoKSxcclxuICAgICAgZXhwb3J0c3RhcnQ6ICgpID0+IHRoaXMuZXhwb3J0c3RhcnQubmV4dCgpLFxyXG4gICAgICBkcmlsbHRocm91Z2hjbG9zZTogKCkgPT4gdGhpcy5kcmlsbHRocm91Z2hjbG9zZS5uZXh0KCksXHJcbiAgICAgIGxvYWRpbmdkYXRhOiAoKSA9PiB0aGlzLmxvYWRpbmdkYXRhLm5leHQoKSxcclxuICAgICAgbG9hZGluZ2xvY2FsaXphdGlvbjogKCkgPT4gdGhpcy5sb2FkaW5nbG9jYWxpemF0aW9uLm5leHQoKSxcclxuICAgICAgbG9hZGluZ29sYXBzdHJ1Y3R1cmU6ICgpID0+IHRoaXMubG9hZGluZ29sYXBzdHJ1Y3R1cmUubmV4dCgpLFxyXG4gICAgICBsb2FkaW5ncmVwb3J0ZmlsZTogKCkgPT4gdGhpcy5sb2FkaW5ncmVwb3J0ZmlsZS5uZXh0KCksXHJcbiAgICAgIGxvY2FsaXphdGlvbmVycm9yOiAoKSA9PiB0aGlzLmxvY2FsaXphdGlvbmVycm9yLm5leHQoKSxcclxuICAgICAgbG9jYWxpemF0aW9ubG9hZGVkOiAoKSA9PiB0aGlzLmxvY2FsaXphdGlvbmxvYWRlZC5uZXh0KCksXHJcbiAgICAgIG9sYXBzdHJ1Y3R1cmVlcnJvcjogKGV2ZW50OiBGbGV4bW9uc3Rlci5FcnJvckV2ZW50KSA9PiB0aGlzLm9sYXBzdHJ1Y3R1cmVlcnJvci5uZXh0KGV2ZW50KSxcclxuICAgICAgb2xhcHN0cnVjdHVyZWxvYWRlZDogKCkgPT4gdGhpcy5vbGFwc3RydWN0dXJlbG9hZGVkLm5leHQoKSxcclxuICAgICAgb3BlbmluZ3JlcG9ydGZpbGU6ICgpID0+IHRoaXMub3BlbmluZ3JlcG9ydGZpbGUubmV4dCgpLFxyXG4gICAgICBwcmludGNvbXBsZXRlOiAoKSA9PiB0aGlzLnByaW50Y29tcGxldGUubmV4dCgpLFxyXG4gICAgICBwcmludHN0YXJ0OiAoKSA9PiB0aGlzLnByaW50c3RhcnQubmV4dCgpLFxyXG4gICAgICBxdWVyeWNvbXBsZXRlOiAoKSA9PiB0aGlzLnF1ZXJ5Y29tcGxldGUubmV4dCgpLFxyXG4gICAgICBxdWVyeWVycm9yOiAoZXZlbnQ6IEZsZXhtb25zdGVyLkVycm9yRXZlbnQpID0+IHRoaXMucXVlcnllcnJvci5uZXh0KGV2ZW50KSxcclxuICAgICAgcmVhZHk6ICgpID0+IHRoaXMucmVhZHkubmV4dCh0aGlzLmZsZXhtb25zdGVyKSxcclxuICAgICAgcmVwb3J0Y2hhbmdlOiAoKSA9PiB0aGlzLnJlcG9ydGNoYW5nZS5uZXh0KCksXHJcbiAgICAgIHJlcG9ydGNvbXBsZXRlOiAoKSA9PiB0aGlzLnJlcG9ydGNvbXBsZXRlLm5leHQoKSxcclxuICAgICAgcmVwb3J0ZmlsZWNhbmNlbGxlZDogKCkgPT4gdGhpcy5yZXBvcnRmaWxlY2FuY2VsbGVkLm5leHQoKSxcclxuICAgICAgcmVwb3J0ZmlsZWVycm9yOiAoKSA9PiB0aGlzLnJlcG9ydGZpbGVlcnJvci5uZXh0KCksXHJcbiAgICAgIHJ1bm5pbmdxdWVyeTogKCkgPT4gdGhpcy5ydW5uaW5ncXVlcnkubmV4dCgpLFxyXG4gICAgICB1bmF1dGhvcml6ZWRlcnJvcjogKGRvbmU6IEZsZXhtb25zdGVyLlVuYXV0aG9yaXplZEVycm9ySGFuZGxlcikgPT4gdGhpcy51bmF1dGhvcml6ZWRlcnJvci5uZXh0KGRvbmUpLFxyXG4gICAgICB1cGRhdGU6ICgpID0+IHRoaXMudXBkYXRlLm5leHQoKSxcclxuICAgICAgYmVmb3JldG9vbGJhcmNyZWF0ZWQ6ICh0b29sYmFyOiBGbGV4bW9uc3Rlci5Ub29sYmFyKSA9PiB0aGlzLmJlZm9yZXRvb2xiYXJjcmVhdGVkLm5leHQodG9vbGJhciksXHJcbiAgICAgIGJlZm9yZWdyaWRkcmF3OiAoZXZlbnQ6IE9iamVjdCkgPT4gdGhpcy5iZWZvcmVncmlkZHJhdy5uZXh0KGV2ZW50KSxcclxuICAgICAgYWZ0ZXJncmlkZHJhdzogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuYWZ0ZXJncmlkZHJhdy5uZXh0KGV2ZW50KSxcclxuICAgICAgYWZ0ZXJjaGFydGRyYXc6ICgpID0+IHRoaXMuYWZ0ZXJjaGFydGRyYXcubmV4dCgpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICBpZiAodGhpcy5mbGV4bW9uc3Rlcikge1xyXG4gICAgICAgICAgdGhpcy5mbGV4bW9uc3Rlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICB0aGlzLmZsZXhtb25zdGVyID0gbnVsbDtcclxuICAgICAgfVxyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGbGV4bW9uc3RlclBpdm90IH0gZnJvbSAnLi9mbGV4bW9uc3Rlci5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW0ZsZXhtb25zdGVyUGl2b3RdLFxyXG4gIGV4cG9ydHM6IFtGbGV4bW9uc3RlclBpdm90XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmxleG1vbnN0ZXJQaXZvdE1vZHVsZSB7IH1cclxuIl0sIm5hbWVzIjpbIkV2ZW50RW1pdHRlciIsIkNvbXBvbmVudCIsIkVsZW1lbnRSZWYiLCJJbnB1dCIsIk91dHB1dCIsIk5nTW9kdWxlIiwiQ29tbW9uTW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7UUF3RUUsMEJBQVksRUFBYzs7WUE5Q2hCLGNBQVMsR0FBdUMsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQ25FLG9CQUFlLEdBQXVDLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUN6RSxlQUFVLEdBQXdDLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUNyRSxjQUFTLEdBQXlDLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUNyRSxzQkFBaUIsR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQzNELGVBQVUsR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQ3BELGdCQUFXLEdBQXlCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUN2RCxvQkFBZSxHQUF1QixJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDekQsbUJBQWMsR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQ3hELGdCQUFXLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUNyRCxlQUFVLEdBQXlCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUN0RCxxQkFBZ0IsR0FBK0QsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQ2xHLG1CQUFjLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUN4RCxnQkFBVyxHQUF1QixJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDckQsc0JBQWlCLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUMzRCxlQUFVLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUNwRCxnQkFBVyxHQUF1QixJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDckQsd0JBQW1CLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUM3RCx5QkFBb0IsR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQzlELHNCQUFpQixHQUF1QixJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDM0Qsc0JBQWlCLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUMzRCx1QkFBa0IsR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQzVELHVCQUFrQixHQUF5QyxJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDOUUsd0JBQW1CLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUM3RCxzQkFBaUIsR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQzNELGtCQUFhLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUN2RCxlQUFVLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUNwRCxrQkFBYSxHQUF1QixJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDdkQsZUFBVSxHQUF5QyxJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDdEUsVUFBSyxHQUFvQyxJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDNUQsaUJBQVksR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQ3RELG1CQUFjLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUN4RCx3QkFBbUIsR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQzdELG9CQUFlLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUN6RCxpQkFBWSxHQUF1QixJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDdEQsc0JBQWlCLEdBQXVELElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUMzRixXQUFNLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUNoRCx5QkFBb0IsR0FBc0MsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQzdFLG1CQUFjLEdBQXlCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUMxRCxrQkFBYSxHQUF5QixJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDekQsbUJBQWMsR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBT2hFLElBQUksQ0FBQyxJQUFJLHNCQUFnQixFQUFFLENBQUMsYUFBYSxFQUFBLENBQUM7U0FDM0M7Ozs7UUFFRCxtQ0FBUTs7O1lBQVI7Z0JBQUEsaUJBMkRDO2dCQTFEQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDO29CQUNqQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9ELGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtvQkFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7b0JBQ3JDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7b0JBQ2pDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxxQkFBcUI7b0JBQ2pELG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7b0JBQzdDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtvQkFDakMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtvQkFDakQsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtvQkFDL0MsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO29CQUNuQyxTQUFTLEVBQUUsVUFBQyxJQUEwQixJQUFLLE9BQUEsS0FBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUE7b0JBQ3BFLGVBQWUsRUFBRSxVQUFDLElBQTBCLElBQUssT0FBQSxLQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBQTtvQkFDaEYsVUFBVSxFQUFFLFVBQUMsS0FBNEIsSUFBSyxPQUFBLEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFBO29CQUN6RSxXQUFXLEVBQUUsVUFBQyxLQUFhLElBQUssT0FBQSxLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBQTtvQkFDNUQsU0FBUyxFQUFFLFVBQUMsS0FBYSxJQUFLLE9BQUEsS0FBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUE7b0JBQ3hELGlCQUFpQixFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQ3RELFVBQVUsRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBQTtvQkFDeEMsZUFBZSxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFBO29CQUNsRCxjQUFjLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQ2hELFdBQVcsRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBQTtvQkFDMUMsVUFBVSxFQUFFLFVBQUMsS0FBYSxJQUFLLE9BQUEsS0FBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUE7b0JBQzFELGdCQUFnQixFQUFFLFVBQUMsSUFBa0QsSUFBSyxPQUFBLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUE7b0JBQzFHLGNBQWMsRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBQTtvQkFDaEQsV0FBVyxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFBO29CQUMxQyxpQkFBaUIsRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxHQUFBO29CQUN0RCxXQUFXLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQzFDLG1CQUFtQixFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQzFELG9CQUFvQixFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQzVELGlCQUFpQixFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQ3RELGlCQUFpQixFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQ3RELGtCQUFrQixFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQ3hELGtCQUFrQixFQUFFLFVBQUMsS0FBNkIsSUFBSyxPQUFBLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUE7b0JBQzFGLG1CQUFtQixFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQzFELGlCQUFpQixFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQ3RELGFBQWEsRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBQTtvQkFDOUMsVUFBVSxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFBO29CQUN4QyxhQUFhLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQzlDLFVBQVUsRUFBRSxVQUFDLEtBQTZCLElBQUssT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBQTtvQkFDMUUsS0FBSyxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLEdBQUE7b0JBQzlDLFlBQVksRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBQTtvQkFDNUMsY0FBYyxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFBO29CQUNoRCxtQkFBbUIsRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxHQUFBO29CQUMxRCxlQUFlLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUE7b0JBQ2xELFlBQVksRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBQTtvQkFDNUMsaUJBQWlCLEVBQUUsVUFBQyxJQUEwQyxJQUFLLE9BQUEsS0FBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBQTtvQkFDcEcsTUFBTSxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFBO29CQUNoQyxvQkFBb0IsRUFBRSxVQUFDLE9BQTRCLElBQUssT0FBQSxLQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFBO29CQUMvRixjQUFjLEVBQUUsVUFBQyxLQUFhLElBQUssT0FBQSxLQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBQTtvQkFDbEUsYUFBYSxFQUFFLFVBQUMsS0FBYSxJQUFLLE9BQUEsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUE7b0JBQ2hFLGNBQWMsRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBQTtpQkFDakQsQ0FBQyxDQUFDO2FBQ0o7Ozs7UUFFRCxzQ0FBVzs7O1lBQVg7Z0JBQ0ksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztpQkFDM0I7YUFDSjs7b0JBM0lGQyxjQUFTLFNBQUM7d0JBQ1QsUUFBUSxFQUFFLFVBQVU7d0JBQ3BCLFFBQVEsRUFBRSw4RUFBOEU7cUJBQ3pGOzs7O3dCQU5tQkMsZUFBVTs7Ozs4QkFTM0JDLFVBQUs7aUNBQ0xBLFVBQUs7c0NBQ0xBLFVBQUs7NEJBQ0xBLFVBQUs7NkJBQ0xBLFVBQUs7c0NBQ0xBLFVBQUs7NkJBQ0xBLFVBQUs7NENBQ0xBLFVBQUs7NkJBQ0xBLFVBQUs7b0NBQ0xBLFVBQUs7MENBQ0xBLFVBQUs7b0NBQ0xBLFVBQUs7NENBQ0xBLFVBQUs7MkNBQ0xBLFVBQUs7cUNBQ0xBLFVBQUs7Z0NBR0xDLFdBQU07c0NBQ05BLFdBQU07aUNBQ05BLFdBQU07Z0NBQ05BLFdBQU07d0NBQ05BLFdBQU07aUNBQ05BLFdBQU07a0NBQ05BLFdBQU07c0NBQ05BLFdBQU07cUNBQ05BLFdBQU07a0NBQ05BLFdBQU07aUNBQ05BLFdBQU07dUNBQ05BLFdBQU07cUNBQ05BLFdBQU07a0NBQ05BLFdBQU07d0NBQ05BLFdBQU07aUNBQ05BLFdBQU07a0NBQ05BLFdBQU07MENBQ05BLFdBQU07MkNBQ05BLFdBQU07d0NBQ05BLFdBQU07d0NBQ05BLFdBQU07eUNBQ05BLFdBQU07eUNBQ05BLFdBQU07MENBQ05BLFdBQU07d0NBQ05BLFdBQU07b0NBQ05BLFdBQU07aUNBQ05BLFdBQU07b0NBQ05BLFdBQU07aUNBQ05BLFdBQU07NEJBQ05BLFdBQU07bUNBQ05BLFdBQU07cUNBQ05BLFdBQU07MENBQ05BLFdBQU07c0NBQ05BLFdBQU07bUNBQ05BLFdBQU07d0NBQ05BLFdBQU07NkJBQ05BLFdBQU07MkNBQ05BLFdBQU07cUNBQ05BLFdBQU07b0NBQ05BLFdBQU07cUNBQ05BLFdBQU07O1FBNkVULHVCQUFDO0tBQUE7Ozs7OztBQy9JRDtRQUlBO1NBT3VDOztvQkFQdENDLGFBQVEsU0FBQzt3QkFDUixPQUFPLEVBQUU7NEJBQ1BDLG1CQUFZO3lCQUNiO3dCQUNELFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO3dCQUNoQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztxQkFDNUI7O1FBQ3FDLDZCQUFDO0tBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9