UNPKG

@yoyoboot/l-52abp-ng

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.13.

191 lines 20.2 kB
import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core'; import { DatePickerBase } from '../date-picker-base'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import * as moment from 'moment'; import * as i0 from "@angular/core"; import * as i1 from "ng-zorro-antd/time-picker"; import * as i2 from "@angular/forms"; export class TimePickerComponent extends DatePickerBase { constructor() { super(); /** * 展示的日期格式,见nzFormat特别说明 */ this.nzFormat = 'HH:mm:ss'; /** * 自动获取焦点 */ this.nzAutoFocus = false; /** * 隐藏禁止选择的选项 */ this.nzHideDisabledOptions = false; /** * 小时选项间隔 */ this.nzHourStep = 1; /** * 分钟选项间隔 */ this.nzMinuteStep = 1; /** * 秒选项间隔 */ this.nzSecondStep = 1; /** * 面板是否打开,可双向绑定 */ this.nzOpen = false; /** * 弹出层类名 */ this.nzPopupClassName = ''; /** * 当 [ngModel] 不存在时,可以设置面板打开时默认选中的值 */ this.nzDefaultOpenValue = new Date(); /** * 使用12小时制,为true时format默认为h:mm:ss a */ this.nzUse12Hours = false; /** * 点击确定按钮的回调 */ this.nzOnOk = new EventEmitter(); /** * 时间发生变化的回调 */ this.ngModelChange = new EventEmitter(); /** * 待选日期发生变化的回调 */ this.nzOnCalendarChange = new EventEmitter(); } /** * 点击确定按钮的回调 * @param event 数据 */ onNzOk(event) { if (event && moment.isDate(event[0] && moment.isDate(event[1]))) { this.nzOnOk.emit(event.map(o => { return moment(o); })); } else { this.nzOnOk.emit(undefined); } } /** * 时间发生变化的回调 * @param event 数据 */ onNgModelChangeChange(event) { if (event && moment.isDate(event[0] && moment.isDate(event[1]))) { this.ngModelChange.emit(event.map(o => { return moment(o); })); } else { this.ngModelChange.emit(undefined); } } /** * 待选日期发生变化的回调 * @param event 数据 */ onNzOnCalendarChange(event) { if (event && moment.isDate(event[0] && moment.isDate(event[1]))) { this.nzOnCalendarChange.emit(event.map(o => { return moment(o); })); } else { this.nzOnCalendarChange.emit(undefined); } } registerOnChange(fn) { this.ngModelChange.emit = fn; } registerOnTouched(fn) { } setDisabledState(isDisabled) { this.nzDisabled = isDisabled; } writeValue(obj) { if (obj && moment.isMoment(obj)) { this.value = obj.toDate(); } else { this.value = obj; } } } TimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: TimePickerComponent, selector: "l-time-picker", inputs: { ngModel: "ngModel", nzDisabledTime: "nzDisabledTime", nzFormat: "nzFormat", nzRanges: "nzRanges", nzRenderExtraFooter: "nzRenderExtraFooter", nzShowTime: "nzShowTime", nzPlaceHolder: "nzPlaceHolder", nzAddOn: "nzAddOn", nzAutoFocus: "nzAutoFocus", nzDisabledHours: "nzDisabledHours", nzDisabledMinutes: "nzDisabledMinutes", nzDisabledSeconds: "nzDisabledSeconds", nzHideDisabledOptions: "nzHideDisabledOptions", nzHourStep: "nzHourStep", nzMinuteStep: "nzMinuteStep", nzSecondStep: "nzSecondStep", nzOpen: "nzOpen", nzPopupClassName: "nzPopupClassName", nzDefaultOpenValue: "nzDefaultOpenValue", nzUse12Hours: "nzUse12Hours" }, outputs: { nzOnOk: "nzOnOk", ngModelChange: "ngModelChange", nzOnCalendarChange: "nzOnCalendarChange" }, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true, }, ], usesInheritance: true, ngImport: i0, template: "<nz-time-picker [nzAutoFocus]='nzAutoFocus' [nzDisabled]='nzDisabled' [nzSize]='nzSize' [nzFormat]='nzFormat'\n [nzAddOn]='nzAddOn' [nzDisabledHours]='nzDisabledHours' [nzDisabledMinutes]='nzDisabledMinutes'\n [nzDefaultOpenValue]='nzDefaultOpenValue' [nzDisabledSeconds]='nzDisabledSeconds'\n [nzHideDisabledOptions]='nzHideDisabledOptions' [nzHourStep]='nzHourStep' [nzMinuteStep]='nzMinuteStep'\n [nzSecondStep]='nzSecondStep' [nzOpen]='nzOpen' [nzPopupClassName]='nzPopupClassName'\n [nzUse12Hours]='nzUse12Hours'\n [nzPlaceHolder]='nzPlaceHolder' [(ngModel)]='value'\n (ngModelChange)='onNgModelChangeChange($event)'\n (nzOpenChange)='onNzOnOpenChange($event)'>\n</nz-time-picker>\n", components: [{ type: i1.NzTimePickerComponent, selector: "nz-time-picker", inputs: ["nzId", "nzSize", "nzHourStep", "nzMinuteStep", "nzSecondStep", "nzClearText", "nzNowText", "nzOkText", "nzPopupClassName", "nzPlaceHolder", "nzFormat", "nzOpen", "nzUse12Hours", "nzSuffixIcon", "nzHideDisabledOptions", "nzAllowEmpty", "nzDisabled", "nzAutoFocus", "nzBackdrop", "nzAddOn", "nzDefaultOpenValue", "nzDisabledHours", "nzDisabledMinutes", "nzDisabledSeconds"], outputs: ["nzOpenChange"], exportAs: ["nzTimePicker"] }], directives: [{ type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TimePickerComponent, decorators: [{ type: Component, args: [{ selector: 'l-time-picker', templateUrl: './time-picker.component.html', styles: [], providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true, }, ], }] }], ctorParameters: function () { return []; }, propDecorators: { ngModel: [{ type: Input }], nzDisabledTime: [{ type: Input }], nzFormat: [{ type: Input }], nzRanges: [{ type: Input }], nzRenderExtraFooter: [{ type: Input }], nzShowTime: [{ type: Input }], nzPlaceHolder: [{ type: Input }], nzAddOn: [{ type: Input }], nzAutoFocus: [{ type: Input }], nzDisabledHours: [{ type: Input }], nzDisabledMinutes: [{ type: Input }], nzDisabledSeconds: [{ type: Input }], nzHideDisabledOptions: [{ type: Input }], nzHourStep: [{ type: Input }], nzMinuteStep: [{ type: Input }], nzSecondStep: [{ type: Input }], nzOpen: [{ type: Input }], nzPopupClassName: [{ type: Input }], nzDefaultOpenValue: [{ type: Input }], nzUse12Hours: [{ type: Input }], nzOnOk: [{ type: Output }], ngModelChange: [{ type: Output }], nzOnCalendarChange: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbC01MmFicC1uZy9zcmMvbmctem9ycm8vZGF0ZS1waWNrZXIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbC01MmFicC1uZy9zcmMvbmctem9ycm8vZGF0ZS1waWNrZXIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQzs7OztBQWNqQyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsY0FBYztJQThHckQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQS9GVjs7V0FFRztRQUNNLGFBQVEsR0FBRyxVQUFVLENBQUM7UUEwQi9COztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFhN0I7O1dBRUc7UUFDTSwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDdkM7O1dBRUc7UUFDTSxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCOztXQUVHO1FBQ00saUJBQVksR0FBRyxDQUFDLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUMxQjs7V0FFRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDeEI7O1dBRUc7UUFDTSxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDL0I7O1dBRUc7UUFDTSx1QkFBa0Is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Q0FBQztZQUNsRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsaURDZkgseXlCQVVBOzRGRE9hLG1CQUFtQjtrQkFaL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsV0FBVyxFQUFFLDhCQUE4QjtvQkFDM0MsTUFBTSxFQUFFLEVBQUU7b0JBQ1YsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjswRUFVVSxPQUFPO3NCQUFmLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSztnQkFJRyxlQUFlO3NCQUF2QixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFJRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFJRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBSUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0ksTUFBTTtzQkFBZixNQUFNO2dCQUtHLGFBQWE7c0JBQXRCLE1BQU07Z0JBS0csa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQmFzZSB9IGZyb20gJy4uL2RhdGUtcGlja2VyLWJhc2UnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2wtdGltZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIERhdGVQaWNrZXJCYXNlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKipcbiAgICog5YaF6YOo55So55qE5YC8XG4gICAqL1xuICB2YWx1ZTogRGF0ZTtcblxuICAvKipcbiAgICog5pel5pyfIE1vbWVudFxuICAgKi9cbiAgQElucHV0KCkgbmdNb2RlbDogbW9tZW50Lk1vbWVudDtcblxuICAvKipcbiAgICog5LiN5Y+v6YCJ5oup55qE5pe26Ze0XG4gICAqL1xuICBASW5wdXQoKSBuekRpc2FibGVkVGltZTogKGN1cnJlbnQ6IERhdGUpID0+IHsgbnpEaXNhYmxlZEhvdXJzOyBuekRpc2FibGVkTWludXRlczsgbnpEaXNhYmxlZFNlY29uZHMgfTtcblxuICAvKipcbiAgICog5bGV56S655qE5pel5pyf5qC85byP77yM6KeBbnpGb3JtYXTnibnliKvor7TmmI5cbiAgICovXG4gIEBJbnB1dCgpIG56Rm9ybWF0ID0gJ0hIOm1tOnNzJztcblxuICAvKipcbiAgICog6aKE6K6+5pe26Ze06IyD5Zu05b+r5o236YCJ5oupXG4gICAqL1xuICBASW5wdXQoKSBuelJhbmdlczogeyBba2V5OiBzdHJpbmddOiBEYXRlW10gfSB8IHsgW2tleTogc3RyaW5nXTogKCkgPT4gRGF0ZVtdIH07XG5cbiAgLyoqXG4gICAqIOWcqOmdouadv+S4rea3u+WKoOmineWklueahOmhteiEmlxuICAgKi9cbiAgQElucHV0KCkgbnpSZW5kZXJFeHRyYUZvb3RlcjogVGVtcGxhdGVSZWY8YW55PiB8IHN0cmluZyB8ICgoKSA9PiBUZW1wbGF0ZVJlZjxhbnk+IHwgc3RyaW5nKTtcblxuICAvKipcbiAgICog5aKe5Yqg5pe26Ze06YCJ5oup5Yqf6IO9XG4gICAqL1xuICBASW5wdXQoKSBuelNob3dUaW1lOiBvYmplY3QgfCBib29sZWFuO1xuXG4gIC8qKlxuICAgKiDovpPlhaXmoYbmj5DnpLrmloflrZdcbiAgICovXG4gIEBJbnB1dCgpIG56UGxhY2VIb2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICog6YCJ5oup5qGG5bqV6YOo5pi+56S66Ieq5a6a5LmJ55qE5YaF5a65XG4gICAqL1xuICBASW5wdXQoKSBuekFkZE9uOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgLyoqXG4gICAqIOiHquWKqOiOt+WPlueEpueCuVxuICAgKi9cbiAgQElucHV0KCkgbnpBdXRvRm9jdXMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIOemgeatoumAieaLqemDqOWIhuWwj+aXtumAiemhuVxuICAgKi9cbiAgQElucHV0KCkgbnpEaXNhYmxlZEhvdXJzOiAoKSA9PiBudW1iZXJbXTtcbiAgLyoqXG4gICAqIOemgeatoumAieaLqemDqOWIhuWIhumSn+mAiemhuVxuICAgKi9cbiAgQElucHV0KCkgbnpEaXNhYmxlZE1pbnV0ZXM6IChob3VyOiBudW1iZXIpID0+IG51bWJlcltdO1xuICAvKipcbiAgICog56aB5q2i6YCJ5oup6YOo5YiG56eS6YCJ6aG5XG4gICAqL1xuICBASW5wdXQoKSBuekRpc2FibGVkU2Vjb25kczogKGhvdXI6IG51bWJlciwgbWludXRlOiBudW1iZXIpID0+IG51bWJlcltdO1xuICAvKipcbiAgICog6ZqQ6JeP56aB5q2i6YCJ5oup55qE6YCJ6aG5XG4gICAqL1xuICBASW5wdXQoKSBuekhpZGVEaXNhYmxlZE9wdGlvbnMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIOWwj+aXtumAiemhuemXtOmalFxuICAgKi9cbiAgQElucHV0KCkgbnpIb3VyU3RlcCA9IDE7XG4gIC8qKlxuICAgKiDliIbpkp/pgInpobnpl7TpmpRcbiAgICovXG4gIEBJbnB1dCgpIG56TWludXRlU3RlcCA9IDE7XG4gIC8qKlxuICAgKiBcdOenkumAiemhuemXtOmalFxuICAgKi9cbiAgQElucHV0KCkgbnpTZWNvbmRTdGVwID0gMTtcbiAgLyoqXG4gICAqIOmdouadv+aYr+WQpuaJk+W8gO+8jOWPr+WPjOWQkee7keWumlxuICAgKi9cbiAgQElucHV0KCkgbnpPcGVuID0gZmFsc2U7XG4gIC8qKlxuICAgKiDlvLnlh7rlsYLnsbvlkI1cbiAgICovXG4gIEBJbnB1dCgpIG56UG9wdXBDbGFzc05hbWUgPSAnJztcbiAgLyoqXG4gICAqIOW9kyBbbmdNb2RlbF0g5LiN5a2Y5Zyo5pe277yM5Y+v5Lul6K6+572u6Z2i5p2/5omT5byA5pe26buY6K6k6YCJ5Lit55qE5YC8XG4gICAqL1xuICBASW5wdXQoKSBuekRlZmF1bHRPcGVuVmFsdWUgPSBuZXcgRGF0ZSgpO1xuXG4gIC8qKlxuICAgKiDkvb/nlKgxMuWwj+aXtuWItu+8jOS4unRydWXml7Zmb3JtYXTpu5jorqTkuLpoOm1tOnNzIGFcbiAgICovXG4gIEBJbnB1dCgpIG56VXNlMTJIb3VycyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiDngrnlh7vnoa7lrprmjInpkq7nmoTlm57osINcbiAgICovXG4gIEBPdXRwdXQoKSBuek9uT2sgPSBuZXcgRXZlbnRFbWl0dGVyPG1vbWVudC5Nb21lbnRbXT4oKTtcblxuICAvKipcbiAgICog5pe26Ze05Y+R55Sf5Y+Y5YyW55qE5Zue6LCDXG4gICAqL1xuICBAT3V0cHV0KCkgbmdNb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bW9tZW50Lk1vbWVudFtdPigpO1xuXG4gIC8qKlxuICAgKiDlvoXpgInml6XmnJ/lj5HnlJ/lj5jljJbnmoTlm57osINcbiAgICovXG4gIEBPdXRwdXQoKSBuek9uQ2FsZW5kYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG1vbWVudC5Nb21lbnRbXT4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIOeCueWHu+ehruWumuaMiemSrueahOWbnuiwg1xuICAgKiBAcGFyYW0gZXZlbnQg5pWw5o2uXG4gICAqL1xuICBvbk56T2soZXZlbnQ6IERhdGVbXSkge1xuICAgIGlmIChldmVudCAmJiBtb21lbnQuaXNEYXRlKGV2ZW50WzBdICYmIG1vbWVudC5pc0RhdGUoZXZlbnRbMV0pKSkge1xuICAgICAgdGhpcy5uek9uT2suZW1pdChcbiAgICAgICAgZXZlbnQubWFwKG8gPT4ge1xuICAgICAgICAgIHJldHVybiBtb21lbnQobyk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uek9uT2suZW1pdCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDml7bpl7Tlj5HnlJ/lj5jljJbnmoTlm57osINcbiAgICogQHBhcmFtIGV2ZW50IOaVsOaNrlxuICAgKi9cbiAgb25OZ01vZGVsQ2hhbmdlQ2hhbmdlKGV2ZW50OiBEYXRlW10pIHtcbiAgICBpZiAoZXZlbnQgJiYgbW9tZW50LmlzRGF0ZShldmVudFswXSAmJiBtb21lbnQuaXNEYXRlKGV2ZW50WzFdKSkpIHtcbiAgICAgIHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KFxuICAgICAgICBldmVudC5tYXAobyA9PiB7XG4gICAgICAgICAgcmV0dXJuIG1vbWVudChvKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDlvoXpgInml6XmnJ/lj5HnlJ/lj5jljJbnmoTlm57osINcbiAgICogQHBhcmFtIGV2ZW50IOaVsOaNrlxuICAgKi9cbiAgb25Oek9uQ2FsZW5kYXJDaGFuZ2UoZXZlbnQ6IERhdGVbXSkge1xuICAgIGlmIChldmVudCAmJiBtb21lbnQuaXNEYXRlKGV2ZW50WzBdICYmIG1vbWVudC5pc0RhdGUoZXZlbnRbMV0pKSkge1xuICAgICAgdGhpcy5uek9uQ2FsZW5kYXJDaGFuZ2UuZW1pdChcbiAgICAgICAgZXZlbnQubWFwKG8gPT4ge1xuICAgICAgICAgIHJldHVybiBtb21lbnQobyk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uek9uQ2FsZW5kYXJDaGFuZ2UuZW1pdCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMubmdNb2RlbENoYW5nZS5lbWl0ID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm56RGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIGlmIChvYmogJiYgbW9tZW50LmlzTW9tZW50KG9iaikpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBvYmoudG9EYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBvYmo7XG4gICAgfVxuICB9XG59XG4iLCI8bnotdGltZS1waWNrZXIgW256QXV0b0ZvY3VzXT0nbnpBdXRvRm9jdXMnIFtuekRpc2FibGVkXT0nbnpEaXNhYmxlZCcgW256U2l6ZV09J256U2l6ZScgW256Rm9ybWF0XT0nbnpGb3JtYXQnXG4gICAgICAgICAgICAgICAgW256QWRkT25dPSduekFkZE9uJyBbbnpEaXNhYmxlZEhvdXJzXT0nbnpEaXNhYmxlZEhvdXJzJyBbbnpEaXNhYmxlZE1pbnV0ZXNdPSduekRpc2FibGVkTWludXRlcydcbiAgICAgICAgICAgICAgICBbbnpEZWZhdWx0T3BlblZhbHVlXT0nbnpEZWZhdWx0T3BlblZhbHVlJyBbbnpEaXNhYmxlZFNlY29uZHNdPSduekRpc2FibGVkU2Vjb25kcydcbiAgICAgICAgICAgICAgICBbbnpIaWRlRGlzYWJsZWRPcHRpb25zXT0nbnpIaWRlRGlzYWJsZWRPcHRpb25zJyBbbnpIb3VyU3RlcF09J256SG91clN0ZXAnIFtuek1pbnV0ZVN0ZXBdPSduek1pbnV0ZVN0ZXAnXG4gICAgICAgICAgICAgICAgW256U2Vjb25kU3RlcF09J256U2Vjb25kU3RlcCcgW256T3Blbl09J256T3BlbicgW256UG9wdXBDbGFzc05hbWVdPSduelBvcHVwQ2xhc3NOYW1lJ1xuICAgICAgICAgICAgICAgIFtuelVzZTEySG91cnNdPSduelVzZTEySG91cnMnXG4gICAgICAgICAgICAgICAgW256UGxhY2VIb2xkZXJdPSduelBsYWNlSG9sZGVyJyBbKG5nTW9kZWwpXT0ndmFsdWUnXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPSdvbk5nTW9kZWxDaGFuZ2VDaGFuZ2UoJGV2ZW50KSdcbiAgICAgICAgICAgICAgICAobnpPcGVuQ2hhbmdlKT0nb25Oek9uT3BlbkNoYW5nZSgkZXZlbnQpJz5cbjwvbnotdGltZS1waWNrZXI+XG4iXX0=