UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

102 lines 16.7 kB
import { __decorate, __metadata } from "tslib"; import { DecimalPipe } from '@angular/common'; import { Component, Input, ViewChild, } from '@angular/core'; import { TapValueEditorContainerComponent } from '@iotize/ionic'; import { AbstractVariable } from '@iotize/tap/data'; import { Subject } from 'rxjs'; import { map, shareReplay, takeUntil } from 'rxjs/operators'; import { MonitoringAppGenComponent, } from '../../metadata/decorators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@iotize/ionic"; import * as i3 from "@iotize/app-common"; import * as i4 from "./label-value/label-value.component"; /** * @deprecated not usefull anymore with new dashboard editor */ let TapVariableImageAndValueComponent = class TapVariableImageAndValueComponent { decimalPipe; ctx; _destroyed = new Subject(); _variable; valueToDisplay; image; imageSize = '90px'; valuePosition = 'bottom'; unit = '°C'; imageColor; labelColor; editable = false; set variable(variable) { if (variable !== undefined) { this._variable = variable; this._destroyed.next(); } } valueStyle = { 'font-size': '1.4em', }; digitsInfo; constructor(decimalPipe) { this.decimalPipe = decimalPipe; } ngOnDestroy() { this._destroyed.next(); } ngAfterViewInit() { this.ctx?.valueToDisplay ?.pipe(takeUntil(this._destroyed), map((value) => { return this.digitsInfo ? this.decimalPipe.transform(value, this.digitsInfo) : value; }), shareReplay(1)) .subscribe((v) => { this.valueToDisplay = v; }); } async onEditMode() { if (this.editable) { await this.ctx?.enableEditMode(); } } /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapVariableImageAndValueComponent, deps: [{ token: i1.DecimalPipe }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: TapVariableImageAndValueComponent, selector: "tap-variable-image-and-value", inputs: { image: "image", imageSize: "imageSize", valuePosition: "valuePosition", unit: "unit", imageColor: "imageColor", labelColor: "labelColor", editable: "editable", variable: "variable", valueStyle: "valueStyle", digitsInfo: "digitsInfo" }, viewQueries: [{ propertyName: "ctx", first: true, predicate: ["ctx"], descendants: true }], ngImport: i0, template: "<tap-value-editor-container\n #ctx\n [variable]=\"_variable\"\n [modalEdition]=\"editable\"\n [lines]=\"'none'\"\n [button]=\"editable\"\n (click)=\"onEditMode()\"\n>\n <div class=\"div-icon-and-value\">\n <div class=\"top-label\" *ngIf=\"valuePosition === 'top'\">\n <tap-label-value\n [color]=\"labelColor\"\n [valueStyle]=\"valueStyle\"\n [unit]=\"unit\"\n [value]=\"valueToDisplay\"\n >\n </tap-label-value>\n </div>\n <div class=\"div-icon-and-value-center\">\n <tap-label-value\n *ngIf=\"valuePosition === 'left'\"\n class=\"left-label\"\n [color]=\"labelColor\"\n [valueStyle]=\"valueStyle\"\n [unit]=\"unit\"\n [value]=\"valueToDisplay\"\n >\n </tap-label-value>\n <app-common-icon\n [color]=\"imageColor\"\n [image]=\"image\"\n [imageSize]=\"imageSize\"\n >\n </app-common-icon>\n <tap-label-value\n *ngIf=\"valuePosition === 'right'\"\n class=\"right-label\"\n [color]=\"labelColor\"\n [valueStyle]=\"valueStyle\"\n [unit]=\"unit\"\n [value]=\"valueToDisplay\"\n >\n </tap-label-value>\n </div>\n <div class=\"bottom-label\" *ngIf=\"valuePosition === 'bottom'\">\n <tap-label-value\n [color]=\"labelColor\"\n [valueStyle]=\"valueStyle\"\n [unit]=\"unit\"\n [value]=\"valueToDisplay\"\n >\n </tap-label-value>\n </div>\n </div>\n</tap-value-editor-container>\n", styles: ["div{width:fit-content}.div-icon-and-value{margin:auto;padding:6px}.div-icon-and-value-center{display:flex;align-items:center}.top-label,.bottom-label{margin:auto;text-align:center}ion-label{height:fit-content}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TapValueEditorContainerComponent, selector: "tap-value-editor-container", inputs: ["button", "variable", "inputOptions", "showRefreshButton", "showSubmitButton", "showEditButton", "error", "lines", "modalEdition", "value"], outputs: ["submit", "refresh"] }, { kind: "component", type: i3.IconComponent, selector: "app-common-icon", inputs: ["imageSize", "color", "image"] }, { kind: "component", type: i4.LabelValueComponent, selector: "tap-label-value", inputs: ["unit", "color", "valueStyle", "value"] }] }); }; TapVariableImageAndValueComponent = __decorate([ MonitoringAppGenComponent({ constraints: { isNumber: 'YES', isArray: 'NO', }, }), __metadata("design:paramtypes", [DecimalPipe]) ], TapVariableImageAndValueComponent); export { TapVariableImageAndValueComponent }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapVariableImageAndValueComponent, decorators: [{ type: Component, args: [{ selector: 'tap-variable-image-and-value', template: "<tap-value-editor-container\n #ctx\n [variable]=\"_variable\"\n [modalEdition]=\"editable\"\n [lines]=\"'none'\"\n [button]=\"editable\"\n (click)=\"onEditMode()\"\n>\n <div class=\"div-icon-and-value\">\n <div class=\"top-label\" *ngIf=\"valuePosition === 'top'\">\n <tap-label-value\n [color]=\"labelColor\"\n [valueStyle]=\"valueStyle\"\n [unit]=\"unit\"\n [value]=\"valueToDisplay\"\n >\n </tap-label-value>\n </div>\n <div class=\"div-icon-and-value-center\">\n <tap-label-value\n *ngIf=\"valuePosition === 'left'\"\n class=\"left-label\"\n [color]=\"labelColor\"\n [valueStyle]=\"valueStyle\"\n [unit]=\"unit\"\n [value]=\"valueToDisplay\"\n >\n </tap-label-value>\n <app-common-icon\n [color]=\"imageColor\"\n [image]=\"image\"\n [imageSize]=\"imageSize\"\n >\n </app-common-icon>\n <tap-label-value\n *ngIf=\"valuePosition === 'right'\"\n class=\"right-label\"\n [color]=\"labelColor\"\n [valueStyle]=\"valueStyle\"\n [unit]=\"unit\"\n [value]=\"valueToDisplay\"\n >\n </tap-label-value>\n </div>\n <div class=\"bottom-label\" *ngIf=\"valuePosition === 'bottom'\">\n <tap-label-value\n [color]=\"labelColor\"\n [valueStyle]=\"valueStyle\"\n [unit]=\"unit\"\n [value]=\"valueToDisplay\"\n >\n </tap-label-value>\n </div>\n </div>\n</tap-value-editor-container>\n", styles: ["div{width:fit-content}.div-icon-and-value{margin:auto;padding:6px}.div-icon-and-value-center{display:flex;align-items:center}.top-label,.bottom-label{margin:auto;text-align:center}ion-label{height:fit-content}\n"] }] }], ctorParameters: () => [{ type: i1.DecimalPipe }], propDecorators: { ctx: [{ type: ViewChild, args: ['ctx'] }], image: [{ type: Input }], imageSize: [{ type: Input }], valuePosition: [{ type: Input }], unit: [{ type: Input }], imageColor: [{ type: Input }], labelColor: [{ type: Input }], editable: [{ type: Input }], variable: [{ type: Input }], valueStyle: [{ type: Input }], digitsInfo: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXZhcmlhYmxlLWltYWdlLWFuZC12YWx1ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvbW9uaXRvcmluZy9zcmMvbGliL3VpLWNvbXBvbmVudHMvdGFwLXZhcmlhYmxlLWltYWdlLWFuZC12YWx1ZS90YXAtdmFyaWFibGUtaW1hZ2UtYW5kLXZhbHVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9tb25pdG9yaW5nL3NyYy9saWIvdWktY29tcG9uZW50cy90YXAtdmFyaWFibGUtaW1hZ2UtYW5kLXZhbHVlL3RhcC12YXJpYWJsZS1pbWFnZS1hbmQtdmFsdWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBRUwsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUVMLHlCQUF5QixHQUMxQixNQUFNLDJCQUEyQixDQUFDOzs7Ozs7QUFRbkM7O0dBRUc7QUFZSSxJQUFNLGlDQUFpQyxHQUF2QyxNQUFNLGlDQUFpQztJQStDeEI7SUE1Q0YsR0FBRyxDQUFvQztJQUVqRCxVQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV6QyxTQUFTLENBQTRCO0lBQ3JDLGNBQWMsQ0FBTTtJQUdwQixLQUFLLENBQVU7SUFHZixTQUFTLEdBQVcsTUFBTSxDQUFDO0lBRzNCLGFBQWEsR0FBd0MsUUFBUSxDQUFDO0lBRzlELElBQUksR0FBVyxJQUFJLENBQUM7SUFHcEIsVUFBVSxDQUFVO0lBR3BCLFVBQVUsQ0FBVTtJQUdwQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRTFCLElBQ0ksUUFBUSxDQUFDLFFBQWtDO1FBQzdDLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFHRCxVQUFVLEdBQVE7UUFDaEIsV0FBVyxFQUFFLE9BQU87S0FDckIsQ0FBQztJQUdGLFVBQVUsQ0FBVTtJQUVwQixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFaEQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWM7WUFDdEIsRUFBRSxJQUFJLENBQ0osU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDMUIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQyxVQUFVO2dCQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ3BELENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDWixDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2Y7YUFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDOzJIQXpFVSxpQ0FBaUM7K0dBQWpDLGlDQUFpQyxzWkNyQzlDLDYvQ0F1REE7O0FEbEJhLGlDQUFpQztJQVg3Qyx5QkFBeUIsQ0FBQztRQUN6QixXQUFXLEVBQUU7WUFDWCxRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxJQUFJO1NBQ2Q7S0FDRixDQUFDO3FDQXFEaUMsV0FBVztHQS9DakMsaUNBQWlDLENBMEU3Qzs7NEZBMUVZLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSw4QkFBOEI7Z0ZBT3RCLEdBQUc7c0JBQXBCLFNBQVM7dUJBQUMsS0FBSztnQkFRaEIsS0FBSztzQkFESixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlGLFFBQVE7c0JBRFgsS0FBSztnQkFTTixVQUFVO3NCQURULEtBQUs7Z0JBTU4sVUFBVTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFwVmFsdWVFZGl0b3JDb250YWluZXJDb21wb25lbnQgfSBmcm9tICdAaW90aXplL2lvbmljJztcbmltcG9ydCB7IEFic3RyYWN0VmFyaWFibGUgfSBmcm9tICdAaW90aXplL3RhcC9kYXRhJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXksIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEFwcEdlbkZpZWxkLFxuICBNb25pdG9yaW5nQXBwR2VuQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi9tZXRhZGF0YS9kZWNvcmF0b3JzJztcbmltcG9ydCB7XG4gIERJR0lUU19JTkZPX1NDSEVNQSxcbiAgSUNPTl9PUl9TVkdfU0NIRU1BLFxuICBJT05JQ19DT0xPUl9TQ0hFTUEsXG4gIFRBUF9WQVJJQUJMRV9TQ0hFTUEsXG59IGZyb20gJy4uL3NoYXJlZC1zY2hlbWEnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIG5vdCB1c2VmdWxsIGFueW1vcmUgd2l0aCBuZXcgZGFzaGJvYXJkIGVkaXRvclxuICovXG5ATW9uaXRvcmluZ0FwcEdlbkNvbXBvbmVudCh7XG4gIGNvbnN0cmFpbnRzOiB7XG4gICAgaXNOdW1iZXI6ICdZRVMnLFxuICAgIGlzQXJyYXk6ICdOTycsXG4gIH0sXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFwLXZhcmlhYmxlLWltYWdlLWFuZC12YWx1ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YXAtdmFyaWFibGUtaW1hZ2UtYW5kLXZhbHVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFwLXZhcmlhYmxlLWltYWdlLWFuZC12YWx1ZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYXBWYXJpYWJsZUltYWdlQW5kVmFsdWVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgnY3R4JykgY3R4PzogVGFwVmFsdWVFZGl0b3JDb250YWluZXJDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBfdmFyaWFibGU/OiBBYnN0cmFjdFZhcmlhYmxlPG51bWJlcj47XG4gIHZhbHVlVG9EaXNwbGF5OiBhbnk7XG5cbiAgQElucHV0KClcbiAgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgaW1hZ2VTaXplOiBzdHJpbmcgPSAnOTBweCc7XG5cbiAgQElucHV0KClcbiAgdmFsdWVQb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcgPSAnYm90dG9tJztcblxuICBASW5wdXQoKVxuICB1bml0OiBzdHJpbmcgPSAnwrBDJztcblxuICBASW5wdXQoKVxuICBpbWFnZUNvbG9yPzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsQ29sb3I/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZWRpdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzZXQgdmFyaWFibGUodmFyaWFibGU6IEFic3RyYWN0VmFyaWFibGU8bnVtYmVyPikge1xuICAgIGlmICh2YXJpYWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl92YXJpYWJsZSA9IHZhcmlhYmxlO1xuICAgICAgdGhpcy5fZGVzdHJveWVkLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICB2YWx1ZVN0eWxlOiBhbnkgPSB7XG4gICAgJ2ZvbnQtc2l6ZSc6ICcxLjRlbScsXG4gIH07XG5cbiAgQElucHV0KClcbiAgZGlnaXRzSW5mbz86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSkge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY3R4Py52YWx1ZVRvRGlzcGxheVxuICAgICAgPy5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSxcbiAgICAgICAgbWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRpZ2l0c0luZm9cbiAgICAgICAgICAgID8gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0odmFsdWUsIHRoaXMuZGlnaXRzSW5mbylcbiAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodikgPT4ge1xuICAgICAgICB0aGlzLnZhbHVlVG9EaXNwbGF5ID0gdjtcbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25FZGl0TW9kZSgpIHtcbiAgICBpZiAodGhpcy5lZGl0YWJsZSkge1xuICAgICAgYXdhaXQgdGhpcy5jdHg/LmVuYWJsZUVkaXRNb2RlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8dGFwLXZhbHVlLWVkaXRvci1jb250YWluZXJcbiAgI2N0eFxuICBbdmFyaWFibGVdPVwiX3ZhcmlhYmxlXCJcbiAgW21vZGFsRWRpdGlvbl09XCJlZGl0YWJsZVwiXG4gIFtsaW5lc109XCInbm9uZSdcIlxuICBbYnV0dG9uXT1cImVkaXRhYmxlXCJcbiAgKGNsaWNrKT1cIm9uRWRpdE1vZGUoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJkaXYtaWNvbi1hbmQtdmFsdWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidG9wLWxhYmVsXCIgKm5nSWY9XCJ2YWx1ZVBvc2l0aW9uID09PSAndG9wJ1wiPlxuICAgICAgPHRhcC1sYWJlbC12YWx1ZVxuICAgICAgICBbY29sb3JdPVwibGFiZWxDb2xvclwiXG4gICAgICAgIFt2YWx1ZVN0eWxlXT1cInZhbHVlU3R5bGVcIlxuICAgICAgICBbdW5pdF09XCJ1bml0XCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlVG9EaXNwbGF5XCJcbiAgICAgID5cbiAgICAgIDwvdGFwLWxhYmVsLXZhbHVlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaWNvbi1hbmQtdmFsdWUtY2VudGVyXCI+XG4gICAgICA8dGFwLWxhYmVsLXZhbHVlXG4gICAgICAgICpuZ0lmPVwidmFsdWVQb3NpdGlvbiA9PT0gJ2xlZnQnXCJcbiAgICAgICAgY2xhc3M9XCJsZWZ0LWxhYmVsXCJcbiAgICAgICAgW2NvbG9yXT1cImxhYmVsQ29sb3JcIlxuICAgICAgICBbdmFsdWVTdHlsZV09XCJ2YWx1ZVN0eWxlXCJcbiAgICAgICAgW3VuaXRdPVwidW5pdFwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVRvRGlzcGxheVwiXG4gICAgICA+XG4gICAgICA8L3RhcC1sYWJlbC12YWx1ZT5cbiAgICAgIDxhcHAtY29tbW9uLWljb25cbiAgICAgICAgW2NvbG9yXT1cImltYWdlQ29sb3JcIlxuICAgICAgICBbaW1hZ2VdPVwiaW1hZ2VcIlxuICAgICAgICBbaW1hZ2VTaXplXT1cImltYWdlU2l6ZVwiXG4gICAgICA+XG4gICAgICA8L2FwcC1jb21tb24taWNvbj5cbiAgICAgIDx0YXAtbGFiZWwtdmFsdWVcbiAgICAgICAgKm5nSWY9XCJ2YWx1ZVBvc2l0aW9uID09PSAncmlnaHQnXCJcbiAgICAgICAgY2xhc3M9XCJyaWdodC1sYWJlbFwiXG4gICAgICAgIFtjb2xvcl09XCJsYWJlbENvbG9yXCJcbiAgICAgICAgW3ZhbHVlU3R5bGVdPVwidmFsdWVTdHlsZVwiXG4gICAgICAgIFt1bml0XT1cInVuaXRcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVUb0Rpc3BsYXlcIlxuICAgICAgPlxuICAgICAgPC90YXAtbGFiZWwtdmFsdWU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJvdHRvbS1sYWJlbFwiICpuZ0lmPVwidmFsdWVQb3NpdGlvbiA9PT0gJ2JvdHRvbSdcIj5cbiAgICAgIDx0YXAtbGFiZWwtdmFsdWVcbiAgICAgICAgW2NvbG9yXT1cImxhYmVsQ29sb3JcIlxuICAgICAgICBbdmFsdWVTdHlsZV09XCJ2YWx1ZVN0eWxlXCJcbiAgICAgICAgW3VuaXRdPVwidW5pdFwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVRvRGlzcGxheVwiXG4gICAgICA+XG4gICAgICA8L3RhcC1sYWJlbC12YWx1ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RhcC12YWx1ZS1lZGl0b3ItY29udGFpbmVyPlxuIl19