@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
JavaScript
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=