UNPKG

sb-element

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.0.1. It is a component library constructed around the SCSS library [Sb-Theming](https://github.com/SeverinBuchser/SbTheming) and supports [Angular Schematics]

125 lines 17.9 kB
import { Component, Input } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { Color, mixinClassName, mixinColor, mixinDisable, mixinFocus, mixinSize, Size } from '../../../core'; import * as i0 from "@angular/core"; import * as i1 from "../../../core"; import * as i2 from "../../../icon/icon/icon.component"; import * as i3 from "../input-core/input-core.component"; import * as i4 from "@angular/common"; import * as i5 from "@angular/forms"; const SbDoubleInputCore = mixinDisable(mixinFocus(mixinSize(mixinColor(mixinClassName(class { constructor(_elementRef, _themeService) { this._elementRef = _elementRef; this._themeService = _themeService; } }, 'sb-input'), Color.PRIMARY), Size.MEDIUM))); export class SbDoubleInput { constructor(first, second) { if (first) { this.first = first; } if (second) { this.second = second; } } static equals(inputOne, inputTwo) { return inputOne.first == inputTwo.first && inputOne.second == inputTwo.second; } } export class SbDoubleInputComponent extends SbDoubleInputCore { constructor(elementRef, themeService) { super(elementRef, themeService); this.firstPlaceholder = ''; this.secondPlaceholder = ''; this.delimiter = ':'; this._type = 'text'; this.spellcheck = false; this.prefixIcon = ''; this.suffixIcon = ''; this.onChange = () => { }; this.onTouch = () => { }; this.innerFirstValue = undefined; this.innerSecondValue = undefined; } set type(type) { if (type != 'double') { this._type = type; } } get type() { return this._type; } set firstValue(firstValue) { let value = new SbDoubleInput(firstValue, this.innerSecondValue); this.writeValue(value); this.onChange(value); } get firstValue() { if (this.innerFirstValue) { return this.innerFirstValue; } else return ''; } set secondValue(secondValue) { let value = new SbDoubleInput(this.innerFirstValue, secondValue); this.writeValue(value); this.onChange(value); } get secondValue() { if (this.innerSecondValue) { return this.innerSecondValue; } else return ''; } writeValue(value) { if (value && !this.disabled) { if (value.first) { this.innerFirstValue = value.first; } if (value.second) { this.innerSecondValue = value.second; } } } registerOnChange(fn) { this.onChange = fn; } registerOnTouched(fn) { this.onTouch = fn; } onBlur() { this.onTouch(); } } SbDoubleInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: SbDoubleInputComponent, deps: [{ token: i0.ElementRef }, { token: i1.SbThemeService }], target: i0.ɵɵFactoryTarget.Component }); SbDoubleInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: SbDoubleInputComponent, selector: "sb-input[type=double]", inputs: { size: "size", color: "color", disabled: "disabled", firstPlaceholder: "firstPlaceholder", secondPlaceholder: "secondPlaceholder", delimiter: "delimiter", type: "type", spellcheck: "spellcheck", prefixIcon: "prefixIcon", suffixIcon: "suffixIcon" }, outputs: { focus: "focus", blur: "blur" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SbDoubleInputComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"className + '__border'\"></div>\n<sb-icon\n *ngIf=\"prefixIcon\"\n [ngClass]=\"className + '__prefix'\"\n [icon]=\"prefixIcon\"\n size=\"s\">\n</sb-icon>\n<sb-input-core\n [size]=\"size\"\n [color]=\"color\"\n [placeholder]=\"firstPlaceholder\"\n [type]=\"type\"\n [(ngModel)]=\"firstValue\"\n [spellcheck]=\"spellcheck\"\n (blur)=\"setFocusedState(false)\"\n (focus)=\"setFocusedState(true)\"\n [disabled]=\"disabled\">\n</sb-input-core>\n<div [ngClass]=\"className + '__delimiter'\">\n {{ delimiter }}\n</div>\n<sb-input-core\n [size]=\"size\"\n [color]=\"color\"\n [placeholder]=\"secondPlaceholder\"\n [type]=\"type\"\n [(ngModel)]=\"secondValue\"\n [spellcheck]=\"spellcheck\"\n (blur)=\"setFocusedState(false)\"\n (focus)=\"setFocusedState(true)\"\n [disabled]=\"disabled\">\n</sb-input-core>\n<sb-icon\n *ngIf=\"suffixIcon\"\n [ngClass]=\"className + '__suffix'\"\n [icon]=\"suffixIcon\"\n size=\"s\">\n</sb-icon>\n", components: [{ type: i2.SbIconComponent, selector: "sb-icon", inputs: ["size", "color", "icon", "isOutline"] }, { type: i3.SbInputCoreComponent, selector: "sb-input-core", inputs: ["size", "color", "disabled", "placeholder", "type", "spellcheck"], outputs: ["focus", "blur"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: SbDoubleInputComponent, decorators: [{ type: Component, args: [{ selector: 'sb-input[type=double]', inputs: [ 'size', 'color', 'disabled' ], outputs: [ 'focus', 'blur' ], providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SbDoubleInputComponent, multi: true }], template: "<div [ngClass]=\"className + '__border'\"></div>\n<sb-icon\n *ngIf=\"prefixIcon\"\n [ngClass]=\"className + '__prefix'\"\n [icon]=\"prefixIcon\"\n size=\"s\">\n</sb-icon>\n<sb-input-core\n [size]=\"size\"\n [color]=\"color\"\n [placeholder]=\"firstPlaceholder\"\n [type]=\"type\"\n [(ngModel)]=\"firstValue\"\n [spellcheck]=\"spellcheck\"\n (blur)=\"setFocusedState(false)\"\n (focus)=\"setFocusedState(true)\"\n [disabled]=\"disabled\">\n</sb-input-core>\n<div [ngClass]=\"className + '__delimiter'\">\n {{ delimiter }}\n</div>\n<sb-input-core\n [size]=\"size\"\n [color]=\"color\"\n [placeholder]=\"secondPlaceholder\"\n [type]=\"type\"\n [(ngModel)]=\"secondValue\"\n [spellcheck]=\"spellcheck\"\n (blur)=\"setFocusedState(false)\"\n (focus)=\"setFocusedState(true)\"\n [disabled]=\"disabled\">\n</sb-input-core>\n<sb-icon\n *ngIf=\"suffixIcon\"\n [ngClass]=\"className + '__suffix'\"\n [icon]=\"suffixIcon\"\n size=\"s\">\n</sb-icon>\n" }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.SbThemeService }]; }, propDecorators: { firstPlaceholder: [{ type: Input }], secondPlaceholder: [{ type: Input }], delimiter: [{ type: Input }], type: [{ type: Input }], spellcheck: [{ type: Input }], prefixIcon: [{ type: Input }], suffixIcon: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG91YmxlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NiLWVsZW1lbnQvc3JjL2xpYi9mb3Jtcy9pbnB1dC9kb3VibGUtaW5wdXQvZG91YmxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NiLWVsZW1lbnQvc3JjL2xpYi9mb3Jtcy9pbnB1dC9kb3VibGUtaW5wdXQvZG91YmxlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFrQixNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQUU3SCxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FDcEMsVUFBVSxDQUNSLFNBQVMsQ0FDUCxVQUFVLENBQ1IsY0FBYyxDQUNaO0lBQ0UsWUFDUyxXQUF1QixFQUN2QixhQUE2QjtRQUQ3QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7SUFBRyxDQUFDO0NBQzNDLEVBQUUsVUFBVSxDQUNkLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FDakIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUNmLENBQ0YsQ0FDRixDQUFDO0FBRUYsTUFBTSxPQUFPLGFBQWE7SUFNeEIsWUFBWSxLQUFTLEVBQUUsTUFBVTtRQUMvQixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLE1B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QUksQ0FBQyxPQUFPLEVBQUUsQ0FBQSxDQUFDLENBQUM7O21IQS9FaEMsc0JBQXNCO3VHQUF0QixzQkFBc0IsNlZBTnRCLENBQUM7WUFDVixPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxzQkFBc0I7WUFDbkMsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLGlEQ3hESix3OEJBc0NBOzJGRG9CYSxzQkFBc0I7a0JBbEJsQyxTQUFTOytCQUNFLHVCQUF1QixVQUV6Qjt3QkFDTixNQUFNO3dCQUNOLE9BQU87d0JBQ1AsVUFBVTtxQkFDWCxXQUNRO3dCQUNQLE9BQU87d0JBQ1AsTUFBTTtxQkFDUCxhQUNVLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyx3QkFBd0I7NEJBQ25DLEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7OEhBS0ssZ0JBQWdCO3NCQUR0QixLQUFLO2dCQUlDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBS0YsSUFBSTtzQkFEUCxLQUFLO2dCQVdDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFHQyxVQUFVO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29sb3IsIG1peGluQ2xhc3NOYW1lLCBtaXhpbkNvbG9yLCBtaXhpbkRpc2FibGUsIG1peGluRm9jdXMsIG1peGluU2l6ZSwgU2l6ZSwgU2JUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlJztcblxuY29uc3QgU2JEb3VibGVJbnB1dENvcmUgPSBtaXhpbkRpc2FibGUoXG4gIG1peGluRm9jdXMoXG4gICAgbWl4aW5TaXplKFxuICAgICAgbWl4aW5Db2xvcihcbiAgICAgICAgbWl4aW5DbGFzc05hbWUoXG4gICAgICAgICAgY2xhc3Mge1xuICAgICAgICAgICAgY29uc3RydWN0b3IoXG4gICAgICAgICAgICAgIHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgcHVibGljIF90aGVtZVNlcnZpY2U6IFNiVGhlbWVTZXJ2aWNlKSB7fVxuICAgICAgICAgIH0sICdzYi1pbnB1dCdcbiAgICAgICAgKSwgQ29sb3IuUFJJTUFSWVxuICAgICAgKSwgU2l6ZS5NRURJVU1cbiAgICApXG4gIClcbik7XG5cbmV4cG9ydCBjbGFzcyBTYkRvdWJsZUlucHV0PFQ+IHtcbiAgcHVibGljIGZpcnN0PzogVDtcbiAgcHVibGljIHNlY29uZD86IFQ7XG5cbiAgY29uc3RydWN0b3IoKTtcbiAgY29uc3RydWN0b3IoZmlyc3Q6IFQgfCB1bmRlZmluZWQsIHNlY29uZDogVCB8IHVuZGVmaW5lZCk7XG4gIGNvbnN0cnVjdG9yKGZpcnN0PzogVCwgc2Vjb25kPzogVCkge1xuICAgIGlmIChmaXJzdCkge1xuICAgICAgdGhpcy5maXJzdCA9IGZpcnN0O1xuICAgIH1cbiAgICBpZiAoc2Vjb25kKSB7XG4gICAgICB0aGlzLnNlY29uZCA9IHNlY29uZDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVxdWFsczxUPihpbnB1dE9uZTogU2JEb3VibGVJbnB1dDxUPiwgaW5wdXRUd286IFNiRG91YmxlSW5wdXQ8VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaW5wdXRPbmUuZmlyc3QgPT0gaW5wdXRUd28uZmlyc3QgJiYgaW5wdXRPbmUuc2Vjb25kID09IGlucHV0VHdvLnNlY29uZDtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYi1pbnB1dFt0eXBlPWRvdWJsZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZG91YmxlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgaW5wdXRzOiBbXG4gICAgJ3NpemUnLFxuICAgICdjb2xvcicsXG4gICAgJ2Rpc2FibGVkJ1xuICBdLFxuICBvdXRwdXRzOiBbXG4gICAgJ2ZvY3VzJyxcbiAgICAnYmx1cidcbiAgXSxcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBTYkRvdWJsZUlucHV0Q29tcG9uZW50LFxuICAgIG11bHRpOiB0cnVlXG4gIH1dXG59KVxuZXhwb3J0IGNsYXNzIFNiRG91YmxlSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBTYkRvdWJsZUlucHV0Q29yZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmlyc3RQbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNlY29uZFBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGVsaW1pdGVyOiBzdHJpbmcgPSAnOic7XG5cbiAgcHVibGljIF90eXBlOiBzdHJpbmcgPSAndGV4dCc7XG4gIEBJbnB1dCgpXG4gIHNldCB0eXBlKHR5cGU6IHN0cmluZykge1xuICAgIGlmICh0eXBlICE9ICdkb3VibGUnKSB7XG4gICAgICB0aGlzLl90eXBlID0gdHlwZTtcbiAgICB9XG4gIH1cbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzcGVsbGNoZWNrOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHByZWZpeEljb246IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3VmZml4SWNvbjogc3RyaW5nID0gJyc7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgcHJpdmF0ZSBpbm5lckZpcnN0VmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpbm5lclNlY29uZFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgc2V0IGZpcnN0VmFsdWUoZmlyc3RWYWx1ZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlID0gbmV3IFNiRG91YmxlSW5wdXQoZmlyc3RWYWx1ZSwgdGhpcy5pbm5lclNlY29uZFZhbHVlKTtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICB9XG4gIGdldCBmaXJzdFZhbHVlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaW5uZXJGaXJzdFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbm5lckZpcnN0VmFsdWU7XG4gICAgfSBlbHNlIHJldHVybiAnJztcbiAgfVxuXG4gIHNldCBzZWNvbmRWYWx1ZShzZWNvbmRWYWx1ZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlID0gbmV3IFNiRG91YmxlSW5wdXQodGhpcy5pbm5lckZpcnN0VmFsdWUsIHNlY29uZFZhbHVlKTtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNlY29uZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaW5uZXJTZWNvbmRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5uZXJTZWNvbmRWYWx1ZTtcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICB0aGVtZVNlcnZpY2U6IFNiVGhlbWVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYsIHRoZW1lU2VydmljZSk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogU2JEb3VibGVJbnB1dDxzdHJpbmc+KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBpZiAodmFsdWUuZmlyc3QpIHtcbiAgICAgICAgdGhpcy5pbm5lckZpcnN0VmFsdWUgPSB2YWx1ZS5maXJzdDtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZS5zZWNvbmQpIHtcbiAgICAgICAgdGhpcy5pbm5lclNlY29uZFZhbHVlID0gdmFsdWUuc2Vjb25kO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuIH1cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHsgdGhpcy5vblRvdWNoID0gZm4gfVxuICBwcm90ZWN0ZWQgb25CbHVyKCk6IHZvaWQgeyB0aGlzLm9uVG91Y2goKSB9XG5cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwiY2xhc3NOYW1lICsgJ19fYm9yZGVyJ1wiPjwvZGl2PlxuPHNiLWljb25cbiAgKm5nSWY9XCJwcmVmaXhJY29uXCJcbiAgW25nQ2xhc3NdPVwiY2xhc3NOYW1lICsgJ19fcHJlZml4J1wiXG4gIFtpY29uXT1cInByZWZpeEljb25cIlxuICBzaXplPVwic1wiPlxuPC9zYi1pY29uPlxuPHNiLWlucHV0LWNvcmVcbiAgW3NpemVdPVwic2l6ZVwiXG4gIFtjb2xvcl09XCJjb2xvclwiXG4gIFtwbGFjZWhvbGRlcl09XCJmaXJzdFBsYWNlaG9sZGVyXCJcbiAgW3R5cGVdPVwidHlwZVwiXG4gIFsobmdNb2RlbCldPVwiZmlyc3RWYWx1ZVwiXG4gIFtzcGVsbGNoZWNrXT1cInNwZWxsY2hlY2tcIlxuICAoYmx1cik9XCJzZXRGb2N1c2VkU3RhdGUoZmFsc2UpXCJcbiAgKGZvY3VzKT1cInNldEZvY3VzZWRTdGF0ZSh0cnVlKVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuPC9zYi1pbnB1dC1jb3JlPlxuPGRpdiBbbmdDbGFzc109XCJjbGFzc05hbWUgKyAnX19kZWxpbWl0ZXInXCI+XG4gIHt7IGRlbGltaXRlciB9fVxuPC9kaXY+XG48c2ItaW5wdXQtY29yZVxuICBbc2l6ZV09XCJzaXplXCJcbiAgW2NvbG9yXT1cImNvbG9yXCJcbiAgW3BsYWNlaG9sZGVyXT1cInNlY29uZFBsYWNlaG9sZGVyXCJcbiAgW3R5cGVdPVwidHlwZVwiXG4gIFsobmdNb2RlbCldPVwic2Vjb25kVmFsdWVcIlxuICBbc3BlbGxjaGVja109XCJzcGVsbGNoZWNrXCJcbiAgKGJsdXIpPVwic2V0Rm9jdXNlZFN0YXRlKGZhbHNlKVwiXG4gIChmb2N1cyk9XCJzZXRGb2N1c2VkU3RhdGUodHJ1ZSlcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbjwvc2ItaW5wdXQtY29yZT5cbjxzYi1pY29uXG4gICpuZ0lmPVwic3VmZml4SWNvblwiXG4gIFtuZ0NsYXNzXT1cImNsYXNzTmFtZSArICdfX3N1ZmZpeCdcIlxuICBbaWNvbl09XCJzdWZmaXhJY29uXCJcbiAgc2l6ZT1cInNcIj5cbjwvc2ItaWNvbj5cbiJdfQ==