UNPKG

@iotize/ionic

Version:

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

125 lines 14.9 kB
import { __decorate } from "tslib"; import { Component, Input } from '@angular/core'; import { Observable, Subject } from 'rxjs'; import { 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 "@ionic/angular"; let TapVariableLinearGaugeComponent = class TapVariableLinearGaugeComponent { dataValue = 0; dataPercent = 0; _variable; destroyed = new Subject(); unit; digitsInfo; /** * @deprecated use unit instead */ set units(v) { this.unit = v; } min = 0; max = 100; color = 'primary'; textColor = 'dark'; reversed = false; set value(v) { if (v === undefined || v === null) { v = 0; } if (typeof v === 'string') { v = parseInt(v, 10); if (isNaN(v)) { v = 0; } } if (typeof v !== 'number') { console.warn(`TapVariableLinearGauge: Invalid value type: ${typeof v}`, v); } this.setValue(v); } /** * @deprecated use [value]="..." instead */ set variable(variable) { this._variable = variable; if (variable) { this.inputStream = variable.values; } } /** * @deprecated use [value]="..." instead */ set inputStream(inputs) { inputs.pipe(takeUntil(this.destroyed)).subscribe((value) => { this.setValue(value); }); } setValue(value) { if (this.min === null) { this.min = 0; } if (this.max == null) { this.max = 100; } if (typeof value === 'string') { value = parseInt(value); } if (typeof value !== 'number') { value = this.min; } this.dataValue = value; if (value <= this.min) { this.min = value; this.dataPercent = 0; } else if (value >= this.max) { this.dataPercent = 1; this.max = value; } else { this.dataPercent = (value - this.min) / (this.max - this.min); } } ngOnDestroy() { this.destroyed.next(); } /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapVariableLinearGaugeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: TapVariableLinearGaugeComponent, selector: "tap-variable-linear-gauge", inputs: { unit: "unit", digitsInfo: "digitsInfo", units: "units", min: "min", max: "max", color: "color", textColor: "textColor", reversed: "reversed", value: "value", variable: "variable", inputStream: "inputStream" }, ngImport: i0, template: "<div id=\"divBloc\">\n <ion-label id=\"labelValue\" [color]=\"textColor\"\n >{{ dataValue | number: digitsInfo }}\n <span *ngIf=\"unit\">{{ unit }}</span></ion-label\n >\n <ion-label id=\"labelMin\">\n {{ reversed ? max : min }}\n </ion-label>\n <ion-label id=\"labelMax\">\n {{ reversed ? min : max }}\n </ion-label>\n <ion-progress-bar\n id=\"progressBar\"\n [reversed]=\"reversed\"\n [color]=\"color\"\n [value]=\"dataPercent\"\n ></ion-progress-bar>\n</div>\n", styles: ["#divBloc{width:100%;position:relative;text-align:center;padding:10px 10px 20px}#labelValue{margin:5px;font-size:2em}#labelMin{left:10px;top:20px;position:absolute}#progressBar{box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;border-radius:5px}#labelMax{position:absolute;top:20px;right:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }] }); }; TapVariableLinearGaugeComponent = __decorate([ MonitoringAppGenComponent({ constraints: { isNumber: 'YES', }, }) ], TapVariableLinearGaugeComponent); export { TapVariableLinearGaugeComponent }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapVariableLinearGaugeComponent, decorators: [{ type: Component, args: [{ selector: 'tap-variable-linear-gauge', template: "<div id=\"divBloc\">\n <ion-label id=\"labelValue\" [color]=\"textColor\"\n >{{ dataValue | number: digitsInfo }}\n <span *ngIf=\"unit\">{{ unit }}</span></ion-label\n >\n <ion-label id=\"labelMin\">\n {{ reversed ? max : min }}\n </ion-label>\n <ion-label id=\"labelMax\">\n {{ reversed ? min : max }}\n </ion-label>\n <ion-progress-bar\n id=\"progressBar\"\n [reversed]=\"reversed\"\n [color]=\"color\"\n [value]=\"dataPercent\"\n ></ion-progress-bar>\n</div>\n", styles: ["#divBloc{width:100%;position:relative;text-align:center;padding:10px 10px 20px}#labelValue{margin:5px;font-size:2em}#labelMin{left:10px;top:20px;position:absolute}#progressBar{box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;border-radius:5px}#labelMax{position:absolute;top:20px;right:10px}\n"] }] }], propDecorators: { unit: [{ type: Input }], digitsInfo: [{ type: Input }], units: [{ type: Input }], min: [{ type: Input }], max: [{ type: Input }], color: [{ type: Input }], textColor: [{ type: Input }], reversed: [{ type: Input }], value: [{ type: Input }], variable: [{ type: Input }], inputStream: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXZhcmlhYmxlLWxpbmVhci1nYXVnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvbW9uaXRvcmluZy9zcmMvbGliL3VpLWNvbXBvbmVudHMvdGFwLXZhcmlhYmxlLWxpbmVhci1nYXVnZS90YXAtdmFyaWFibGUtbGluZWFyLWdhdWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9tb25pdG9yaW5nL3NyYy9saWIvdWktY29tcG9uZW50cy90YXAtdmFyaWFibGUtbGluZWFyLWdhdWdlL3RhcC12YXJpYWJsZS1saW5lYXItZ2F1Z2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRTVELE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBRUwseUJBQXlCLEdBQzFCLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFrQjVCLElBQU0sK0JBQStCLEdBQXJDLE1BQU0sK0JBQStCO0lBQzFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDZCxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLFNBQVMsQ0FBeUI7SUFFMUIsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFHeEMsSUFBSSxDQUFVO0lBR2QsVUFBVSxDQUFVO0lBRXBCOztPQUVHO0lBQ0gsSUFBYSxLQUFLLENBQUMsQ0FBUztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBR0QsR0FBRyxHQUFZLENBQUMsQ0FBQztJQUdqQixHQUFHLEdBQVksR0FBRyxDQUFDO0lBR25CLEtBQUssR0FBRyxTQUFTLENBQUM7SUFHbEIsU0FBUyxHQUFHLE1BQU0sQ0FBQztJQUduQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWpCLElBQ0ksS0FBSyxDQUFDLENBQThCO1FBQ3RDLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNSLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFCLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BCLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNSLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsSUFBSSxDQUNWLCtDQUErQyxPQUFPLENBQUMsRUFBRSxFQUN6RCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksUUFBUSxDQUFDLFFBQXlEO1FBQ3BFLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksV0FBVyxDQUFDLE1BQXVCO1FBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQXlDO1FBQ2hELElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUksQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUksQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQzsySEF2R1UsK0JBQStCOytHQUEvQiwrQkFBK0IsNlJDekI1QyxpZkFrQkE7O0FET2EsK0JBQStCO0lBVjNDLHlCQUF5QixDQUFDO1FBQ3pCLFdBQVcsRUFBRTtZQUNYLFFBQVEsRUFBRSxLQUFLO1NBQ2hCO0tBQ0YsQ0FBQztHQU1XLCtCQUErQixDQXdHM0M7OzRGQXhHWSwrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0UsMkJBQTJCOzhCQVlyQyxJQUFJO3NCQURILEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQU1PLEtBQUs7c0JBQWpCLEtBQUs7Z0JBS04sR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJRixLQUFLO3NCQURSLEtBQUs7Z0JBd0JGLFFBQVE7c0JBRFgsS0FBSztnQkFZRixXQUFXO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0VmFyaWFibGUgfSBmcm9tICdAaW90aXplL3RhcC9kYXRhJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEFwcEdlbkZpZWxkLFxuICBNb25pdG9yaW5nQXBwR2VuQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi9tZXRhZGF0YS9kZWNvcmF0b3JzJztcbmltcG9ydCB7XG4gIERJR0lUU19JTkZPX1NDSEVNQSxcbiAgSU9OSUNfQ09MT1JfU0NIRU1BLFxuICBUQVBfVkFSSUFCTEVfU0NIRU1BLFxuICBWQUxVRV9TVFJFQU1fRklFTEQsXG59IGZyb20gJy4uL3NoYXJlZC1zY2hlbWEnO1xuXG5ATW9uaXRvcmluZ0FwcEdlbkNvbXBvbmVudCh7XG4gIGNvbnN0cmFpbnRzOiB7XG4gICAgaXNOdW1iZXI6ICdZRVMnLFxuICB9LFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RhcC12YXJpYWJsZS1saW5lYXItZ2F1Z2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFwLXZhcmlhYmxlLWxpbmVhci1nYXVnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhcC12YXJpYWJsZS1saW5lYXItZ2F1Z2UuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFwVmFyaWFibGVMaW5lYXJHYXVnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGRhdGFWYWx1ZSA9IDA7XG4gIGRhdGFQZXJjZW50ID0gMDtcbiAgX3ZhcmlhYmxlPzogQWJzdHJhY3RWYXJpYWJsZTxhbnk+O1xuXG4gIHByaXZhdGUgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBASW5wdXQoKVxuICB1bml0Pzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGRpZ2l0c0luZm8/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB1bml0IGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCgpIHNldCB1bml0cyh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnVuaXQgPSB2O1xuICB9XG5cbiAgQElucHV0KClcbiAgbWluPzogbnVtYmVyID0gMDtcblxuICBASW5wdXQoKVxuICBtYXg/OiBudW1iZXIgPSAxMDA7XG5cbiAgQElucHV0KClcbiAgY29sb3IgPSAncHJpbWFyeSc7XG5cbiAgQElucHV0KClcbiAgdGV4dENvbG9yID0gJ2RhcmsnO1xuXG4gIEBJbnB1dCgpXG4gIHJldmVyc2VkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkge1xuICAgICAgdiA9IDA7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHYgPSBwYXJzZUludCh2LCAxMCk7XG4gICAgICBpZiAoaXNOYU4odikpIHtcbiAgICAgICAgdiA9IDA7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdiAhPT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFRhcFZhcmlhYmxlTGluZWFyR2F1Z2U6IEludmFsaWQgdmFsdWUgdHlwZTogJHt0eXBlb2Ygdn1gLFxuICAgICAgICB2XG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnNldFZhbHVlKHYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBbdmFsdWVdPVwiLi4uXCIgaW5zdGVhZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHZhcmlhYmxlKHZhcmlhYmxlOiBBYnN0cmFjdFZhcmlhYmxlPG51bWJlciB8IG51bWJlcltdPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3ZhcmlhYmxlID0gdmFyaWFibGU7XG4gICAgaWYgKHZhcmlhYmxlKSB7XG4gICAgICB0aGlzLmlucHV0U3RyZWFtID0gdmFyaWFibGUudmFsdWVzO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgW3ZhbHVlXT1cIi4uLlwiIGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpbnB1dFN0cmVhbShpbnB1dHM6IE9ic2VydmFibGU8YW55Pikge1xuICAgIGlucHV0cy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5taW4gPT09IG51bGwpIHtcbiAgICAgIHRoaXMubWluID0gMDtcbiAgICB9XG4gICAgaWYgKHRoaXMubWF4ID09IG51bGwpIHtcbiAgICAgIHRoaXMubWF4ID0gMTAwO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubWluITtcbiAgICB9XG4gICAgdGhpcy5kYXRhVmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUgPD0gdGhpcy5taW4hKSB7XG4gICAgICB0aGlzLm1pbiA9IHZhbHVlO1xuICAgICAgdGhpcy5kYXRhUGVyY2VudCA9IDA7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSB0aGlzLm1heCkge1xuICAgICAgdGhpcy5kYXRhUGVyY2VudCA9IDE7XG4gICAgICB0aGlzLm1heCA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFQZXJjZW50ID0gKHZhbHVlIC0gdGhpcy5taW4hKSAvICh0aGlzLm1heCAtIHRoaXMubWluISk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICB9XG59XG4iLCI8ZGl2IGlkPVwiZGl2QmxvY1wiPlxuICA8aW9uLWxhYmVsIGlkPVwibGFiZWxWYWx1ZVwiIFtjb2xvcl09XCJ0ZXh0Q29sb3JcIlxuICAgID57eyBkYXRhVmFsdWUgfCBudW1iZXI6IGRpZ2l0c0luZm8gfX1cbiAgICA8c3BhbiAqbmdJZj1cInVuaXRcIj57eyB1bml0IH19PC9zcGFuPjwvaW9uLWxhYmVsXG4gID5cbiAgPGlvbi1sYWJlbCBpZD1cImxhYmVsTWluXCI+XG4gICAge3sgcmV2ZXJzZWQgPyBtYXggOiBtaW4gfX1cbiAgPC9pb24tbGFiZWw+XG4gIDxpb24tbGFiZWwgaWQ9XCJsYWJlbE1heFwiPlxuICAgIHt7IHJldmVyc2VkID8gbWluIDogbWF4IH19XG4gIDwvaW9uLWxhYmVsPlxuICA8aW9uLXByb2dyZXNzLWJhclxuICAgIGlkPVwicHJvZ3Jlc3NCYXJcIlxuICAgIFtyZXZlcnNlZF09XCJyZXZlcnNlZFwiXG4gICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICBbdmFsdWVdPVwiZGF0YVBlcmNlbnRcIlxuICA+PC9pb24tcHJvZ3Jlc3MtYmFyPlxuPC9kaXY+XG4iXX0=