UNPKG

ngx-pluto

Version:
355 lines 22.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewEncapsulation, Input, ViewChild, forwardRef, Output, EventEmitter } from "@angular/core"; import * as moment_ from 'moment'; /** @type {?} */ var moment = moment_; import { ComponentPortal } from "@angular/cdk/portal"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; import { NpInput } from "../../input"; import { NpDatePickerService } from "../date-picker.service"; import { NpDatePickerPopup } from "../components/date-picker-popup"; /** * Year picker组件 */ var NpYearPicker = /** @class */ (function () { function NpYearPicker(datePickerService) { this.datePickerService = datePickerService; /** * Placeholder */ this.placeholder = ''; /** * 已选时间 */ this.date = null; /** * 时间展示格式 */ this.format = 'YYYY'; this.onYearChanged = new EventEmitter(); this.onYearClicked = new EventEmitter(); this.isHover = false; this.emitChange = (/** * @param {?} _ * @return {?} */ function (_) { }); } /** * @return {?} */ NpYearPicker.prototype.ngOnInit = /** * @return {?} */ function () { this.overlayRef = this.datePickerService.getOverlayRef(this.yearPickerInput.npInput); }; /** * @param {?} changes * @return {?} */ NpYearPicker.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { }; /** * @return {?} */ NpYearPicker.prototype.onToggleDatePickerPopup = /** * @return {?} */ function () { var _this = this; if (this.isDisabled) { return; } if (this.overlayRef.hasAttached()) { this.closePopup(); return; } this.datePickerPopupRef = this.overlayRef.attach(new ComponentPortal(NpDatePickerPopup)); this.datePickerPopupRef.instance.date = moment(this.date); this.datePickerPopupRef.instance.datePickerType = 'year-picker'; this.datePickerPopupRef.instance.isShowYearsPanel = true; this.subscribeNotifyEvents(); this.overlayRef.backdropClick().subscribe((/** * @return {?} */ function () { _this.closePopup(); })); }; /** * @param {?} data * @return {?} */ NpYearPicker.prototype.onBlur = /** * @param {?} data * @return {?} */ function (data) { if (this.datePickerService.isValid(data.value)) { this.date = moment(data.value, this.format).clone(); } else { // 如果输入日期不合法,默认当前时间 this.date = moment().clone(); } this.syncValue(); this.emitChange(this.date); this.onYearChanged.emit(this.date); }; /** * @return {?} */ NpYearPicker.prototype.onClear = /** * @return {?} */ function () { if (this.isDisabled) { return; } this.date = null; this.syncValue(); this.emitChange(this.date); this.onYearChanged.emit(this.date); }; /** * @return {?} */ NpYearPicker.prototype.onMouseenter = /** * @return {?} */ function () { this.isHover = true; }; /** * @return {?} */ NpYearPicker.prototype.onMouseleave = /** * @return {?} */ function () { this.isHover = false; }; //#region Private methods /**每次this.date改变时,这个方法都必须要调用 */ //#region Private methods /** * 每次this.date改变时,这个方法都必须要调用 * @private * @return {?} */ NpYearPicker.prototype.syncValue = //#region Private methods /** * 每次this.date改变时,这个方法都必须要调用 * @private * @return {?} */ function () { if (this.date && this.datePickerService.isValid(this.date)) { this.value = moment(this.date, this.format).format(this.format); } else { this.value = ''; } }; /** * @private * @return {?} */ NpYearPicker.prototype.closePopup = /** * @private * @return {?} */ function () { if (this.overlayRef.hasAttached) { this.overlayRef.detach(); } }; /** * @private * @return {?} */ NpYearPicker.prototype.subscribeNotifyEvents = /** * @private * @return {?} */ function () { var _this = this; this.datePickerPopupRef.instance.onYearClicked.subscribe((/** * @param {?} res * @return {?} */ function (res) { _this.emitDataAndClosePopup(res.date); })); }; /** * @private * @param {?} date * @return {?} */ NpYearPicker.prototype.emitDataAndClosePopup = /** * @private * @param {?} date * @return {?} */ function (date) { this.date = date; this.syncValue(); this.emitChange(this.date); this.onYearChanged.emit(this.date); this.yearPickerInput.focus(); this.closePopup(); }; //#endregion //#region Implement for ControlValueAccessor //#endregion //#region Implement for ControlValueAccessor /** * @param {?} obj * @return {?} */ NpYearPicker.prototype.writeValue = //#endregion //#region Implement for ControlValueAccessor /** * @param {?} obj * @return {?} */ function (obj) { this.date = obj; this.syncValue(); }; /** * @param {?} fn * @return {?} */ NpYearPicker.prototype.registerOnChange = /** * @param {?} fn * @return {?} */ function (fn) { this.emitChange = fn; }; /** * @param {?} fn * @return {?} */ NpYearPicker.prototype.registerOnTouched = /** * @param {?} fn * @return {?} */ function (fn) { }; NpYearPicker.decorators = [ { type: Component, args: [{ selector: "np-year-picker", template: "<div class=\"np-year-picker-wrapper flex-wrap col-flex\" (mouseenter)=\"onMouseenter()\" (mouseleave)=\"onMouseleave()\">\r\n <i *ngIf=\"!isHover\" class=\"far fa-calendar\"></i>\r\n <i *ngIf=\"isHover\" class=\"fas fa-times-circle\" (click)=\"onClear()\"></i>\r\n <np-input #yearPickerInput [label]=\"label\" [isRequired]=\"isRequired\" [isDisabled]=\"isDisabled\"\r\n [placeholder]=\"placeholder\" [errorMessage]=\"errorMessage\" [(ngModel)]=\"value\" (click)=\"onToggleDatePickerPopup()\"\r\n (onBlur)=\"onBlur($event)\">\r\n </np-input>\r\n</div>\r\n", encapsulation: ViewEncapsulation.None, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ function () { return NpYearPicker; })), multi: true, } ], styles: [".np-year-picker-wrapper{position:relative}.np-year-picker-wrapper>.far.fa-calendar,.np-year-picker-wrapper>.fas.fa-times-circle{position:absolute;right:10px;line-height:34px;font-size:15px;cursor:pointer;z-index:1}.np-year-picker-wrapper .np-input-wrapper .np-input{width:220px}"] }] } ]; /** @nocollapse */ NpYearPicker.ctorParameters = function () { return [ { type: NpDatePickerService } ]; }; NpYearPicker.propDecorators = { label: [{ type: Input }], isRequired: [{ type: Input }], placeholder: [{ type: Input }], errorMessage: [{ type: Input }], isDisabled: [{ type: Input }], date: [{ type: Input }], format: [{ type: Input }], onYearChanged: [{ type: Output }], onYearClicked: [{ type: Output }], yearPickerInput: [{ type: ViewChild, args: ['yearPickerInput',] }] }; return NpYearPicker; }()); export { NpYearPicker }; if (false) { /** * 标签 * @type {?} */ NpYearPicker.prototype.label; /** * 是否必填,true仅在标签前面添加红色*号, false不加 * @type {?} */ NpYearPicker.prototype.isRequired; /** * Placeholder * @type {?} */ NpYearPicker.prototype.placeholder; /** * 校验错误时显示错误信息 * @type {?} */ NpYearPicker.prototype.errorMessage; /** * 是否禁用 * @type {?} */ NpYearPicker.prototype.isDisabled; /** * 已选时间 * @type {?} */ NpYearPicker.prototype.date; /** * 时间展示格式 * @type {?} */ NpYearPicker.prototype.format; /** @type {?} */ NpYearPicker.prototype.onYearChanged; /** @type {?} */ NpYearPicker.prototype.onYearClicked; /** @type {?} */ NpYearPicker.prototype.yearPickerInput; /** @type {?} */ NpYearPicker.prototype.datePickerPopupRef; /** * @type {?} * @private */ NpYearPicker.prototype.overlayRef; /** @type {?} */ NpYearPicker.prototype.isHover; /** * @type {?} * @private */ NpYearPicker.prototype.emitChange; /** * 日期输入框文本值,每当this.date改变时此值会同步改变 * @type {?} */ NpYearPicker.prototype.value; /** * @type {?} * @private */ NpYearPicker.prototype.datePickerService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci1waWNrZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcGx1dG8vIiwic291cmNlcyI6WyJsaWIvZGF0ZS1waWNrZXIveWVhci1waWNrZXIveWVhci1waWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTRCLE1BQU0sRUFBRSxZQUFZLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2pLLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDOztJQUFPLE1BQU0sR0FBRyxPQUFPO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQUtwRTtJQThDRSxzQkFBb0IsaUJBQXNDO1FBQXRDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUI7Ozs7UUF6QmpELGdCQUFXLEdBQVcsRUFBRSxDQUFDOzs7O1FBT3pCLFNBQUksR0FBNEIsSUFBSSxDQUFDOzs7O1FBRXJDLFdBQU0sR0FBVyxNQUFNLENBQUM7UUFFdkIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQU12RCxZQUFPLEdBQVksS0FBSyxDQUFDO1FBRWpCLGVBQVU7Ozs7UUFBRyxVQUFDLENBQU0sSUFBTyxDQUFDLEVBQUM7SUFLeUIsQ0FBQzs7OztJQUUvRCwrQkFBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RixDQUFDOzs7OztJQUVELGtDQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjtJQUNsQyxDQUFDOzs7O0lBRUQsOENBQXVCOzs7SUFBdkI7UUFBQSxpQkFtQkM7UUFsQkMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNoRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUN6RCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVM7OztRQUFDO1lBQ3hDLEtBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRUQsNkJBQU07Ozs7SUFBTixVQUFPLElBQWdDO1FBQ3JDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDckQ7YUFBTTtZQUNMLG1CQUFtQjtZQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzlCO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDOzs7O0lBRUQsOEJBQU87OztJQUFQO1FBQ0UsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQzs7OztJQUVELG1DQUFZOzs7SUFBWjtRQUNFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7Ozs7SUFFRCxtQ0FBWTs7O0lBQVo7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQseUJBQXlCO0lBRXpCLCtCQUErQjs7Ozs7OztJQUN2QixnQ0FBUzs7Ozs7OztJQUFqQjtRQUNFLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pFO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUNqQjtJQUNILENBQUM7Ozs7O0lBRU8saUNBQVU7Ozs7SUFBbEI7UUFDRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO1lBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs7OztJQUVPLDRDQUFxQjs7OztJQUE3QjtRQUFBLGlCQUlDO1FBSEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUzs7OztRQUFDLFVBQUMsR0FBYTtZQUNyRSxLQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7O0lBRU8sNENBQXFCOzs7OztJQUE3QixVQUE4QixJQUFvQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxZQUFZO0lBRVosNENBQTRDOzs7Ozs7O0lBQzVDLGlDQUFVOzs7Ozs7O0lBQVYsVUFBVyxHQUFRO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7OztJQUVELHVDQUFnQjs7OztJQUFoQixVQUFpQixFQUFPO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Ozs7O0lBRUQsd0NBQWlCOzs7O0lBQWpCLFVBQWtCLEVBQU8sSUFBVSxDQUFDOztnQkF2SnJDLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixna0JBQStCO29CQUUvQixhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVOzs7NEJBQUMsY0FBTSxPQUFBLFlBQVksRUFBWixDQUFZLEVBQUM7NEJBQzNDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOztpQkFDRjs7OztnQkFsQlEsbUJBQW1COzs7d0JBdUJ6QixLQUFLOzZCQUVMLEtBQUs7OEJBRUwsS0FBSzsrQkFFTCxLQUFLOzZCQUVMLEtBQUs7dUJBR0wsS0FBSzt5QkFFTCxLQUFLO2dDQUVMLE1BQU07Z0NBQ04sTUFBTTtrQ0FFTixTQUFTLFNBQUMsaUJBQWlCOztJQXNIOUIsbUJBQUM7Q0FBQSxBQXpKRCxJQXlKQztTQTNJWSxZQUFZOzs7Ozs7SUFHdkIsNkJBQXVCOzs7OztJQUV2QixrQ0FBNkI7Ozs7O0lBRTdCLG1DQUFrQzs7Ozs7SUFFbEMsb0NBQThCOzs7OztJQUU5QixrQ0FBNkI7Ozs7O0lBRzdCLDRCQUE4Qzs7Ozs7SUFFOUMsOEJBQWlDOztJQUVqQyxxQ0FBa0Q7O0lBQ2xELHFDQUF1RDs7SUFFdkQsdUNBQXVEOztJQUV2RCwwQ0FBbUQ7Ozs7O0lBQ25ELGtDQUErQjs7SUFDL0IsK0JBQXlCOzs7OztJQUV6QixrQ0FBcUM7Ozs7O0lBR3JDLDZCQUFjOzs7OztJQUVGLHlDQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ29tcG9uZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnOyBjb25zdCBtb21lbnQgPSBtb21lbnRfXHJcbmltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE5wSW5wdXQgfSBmcm9tIFwiLi4vLi4vaW5wdXRcIjtcclxuaW1wb3J0IHsgTnBEYXRlUGlja2VyU2VydmljZSwgWWVhckRhdGEgfSBmcm9tIFwiLi4vZGF0ZS1waWNrZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOcERhdGVQaWNrZXJQb3B1cCB9IGZyb20gXCIuLi9jb21wb25lbnRzL2RhdGUtcGlja2VyLXBvcHVwXCI7XHJcblxyXG4vKipcclxuICogWWVhciBwaWNrZXLnu4Tku7ZcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgbnAteWVhci1waWNrZXJgLFxyXG4gIHRlbXBsYXRlVXJsOiAneWVhci1waWNrZXIuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ3llYXItcGlja2VyLnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnBZZWFyUGlja2VyKSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE5wWWVhclBpY2tlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gIC8qKuagh+etviAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgLyoq5piv5ZCm5b+F5aGr77yMdHJ1ZeS7heWcqOagh+etvuWJjemdoua3u+WKoOe6ouiJsirlj7fvvIwgZmFsc2XkuI3liqAqL1xyXG4gIEBJbnB1dCgpIGlzUmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgLyoqUGxhY2Vob2xkZXIgKi9cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgLyoq5qCh6aqM6ZSZ6K+v5pe25pi+56S66ZSZ6K+v5L+h5oGvICovXHJcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgLyoq5piv5ZCm56aB55SoICovXHJcbiAgQElucHV0KCkgaXNEaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoq5bey6YCJ5pe26Ze0ICovXHJcbiAgQElucHV0KCkgZGF0ZTogbW9tZW50Xy5Nb21lbnQgfCBzdHJpbmcgPSBudWxsO1xyXG4gIC8qKuaXtumXtOWxleekuuagvOW8jyAqL1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogc3RyaW5nID0gJ1lZWVknO1xyXG5cclxuICBAT3V0cHV0KCkgb25ZZWFyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvblllYXJDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxZZWFyRGF0YT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgneWVhclBpY2tlcklucHV0JykgeWVhclBpY2tlcklucHV0OiBOcElucHV0O1xyXG5cclxuICBkYXRlUGlja2VyUG9wdXBSZWY6IENvbXBvbmVudFJlZjxOcERhdGVQaWNrZXJQb3B1cD5cclxuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XHJcbiAgaXNIb3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGVtaXRDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcblxyXG4gIC8qKuaXpeacn+i+k+WFpeahhuaWh+acrOWAvO+8jOavj+W9k3RoaXMuZGF0ZeaUueWPmOaXtuatpOWAvOS8muWQjOatpeaUueWPmCovXHJcbiAgdmFsdWU6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlUGlja2VyU2VydmljZTogTnBEYXRlUGlja2VyU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRPdmVybGF5UmVmKHRoaXMueWVhclBpY2tlcklucHV0Lm5wSW5wdXQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgb25Ub2dnbGVEYXRlUGlja2VyUG9wdXAoKSB7XHJcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcclxuICAgICAgdGhpcy5jbG9zZVBvcHVwKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGVQaWNrZXJQb3B1cFJlZiA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChOcERhdGVQaWNrZXJQb3B1cCkpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyUG9wdXBSZWYuaW5zdGFuY2UuZGF0ZSA9IG1vbWVudCh0aGlzLmRhdGUpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyUG9wdXBSZWYuaW5zdGFuY2UuZGF0ZVBpY2tlclR5cGUgPSAneWVhci1waWNrZXInO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyUG9wdXBSZWYuaW5zdGFuY2UuaXNTaG93WWVhcnNQYW5lbCA9IHRydWU7XHJcbiAgICB0aGlzLnN1YnNjcmliZU5vdGlmeUV2ZW50cygpO1xyXG5cclxuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZVBvcHVwKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihkYXRhOiB7IHZhbHVlOiBhbnksIGV2ZW50OiBhbnkgfSkge1xyXG4gICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWxpZChkYXRhLnZhbHVlKSkge1xyXG4gICAgICB0aGlzLmRhdGUgPSBtb21lbnQoZGF0YS52YWx1ZSwgdGhpcy5mb3JtYXQpLmNsb25lKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDlpoLmnpzovpPlhaXml6XmnJ/kuI3lkIjms5XvvIzpu5jorqTlvZPliY3ml7bpl7RcclxuICAgICAgdGhpcy5kYXRlID0gbW9tZW50KCkuY2xvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN5bmNWYWx1ZSgpO1xyXG4gICAgdGhpcy5lbWl0Q2hhbmdlKHRoaXMuZGF0ZSk7XHJcbiAgICB0aGlzLm9uWWVhckNoYW5nZWQuZW1pdCh0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhcigpIHtcclxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLnN5bmNWYWx1ZSgpO1xyXG4gICAgdGhpcy5lbWl0Q2hhbmdlKHRoaXMuZGF0ZSk7XHJcbiAgICB0aGlzLm9uWWVhckNoYW5nZWQuZW1pdCh0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgb25Nb3VzZWVudGVyKCkge1xyXG4gICAgdGhpcy5pc0hvdmVyID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uTW91c2VsZWF2ZSgpIHtcclxuICAgIHRoaXMuaXNIb3ZlciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFByaXZhdGUgbWV0aG9kc1xyXG5cclxuICAvKirmr4/mrKF0aGlzLmRhdGXmlLnlj5jml7bvvIzov5nkuKrmlrnms5Xpg73lv4XpobvopoHosIPnlKggKi9cclxuICBwcml2YXRlIHN5bmNWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGUgJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1ZhbGlkKHRoaXMuZGF0ZSkpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudCh0aGlzLmRhdGUsIHRoaXMuZm9ybWF0KS5mb3JtYXQodGhpcy5mb3JtYXQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbG9zZVBvcHVwKCkge1xyXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCkge1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZU5vdGlmeUV2ZW50cygpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlclBvcHVwUmVmLmluc3RhbmNlLm9uWWVhckNsaWNrZWQuc3Vic2NyaWJlKChyZXM6IFllYXJEYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuZW1pdERhdGFBbmRDbG9zZVBvcHVwKHJlcy5kYXRlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RGF0YUFuZENsb3NlUG9wdXAoZGF0ZTogbW9tZW50Xy5Nb21lbnQpIHtcclxuICAgIHRoaXMuZGF0ZSA9IGRhdGU7XHJcbiAgICB0aGlzLnN5bmNWYWx1ZSgpO1xyXG4gICAgdGhpcy5lbWl0Q2hhbmdlKHRoaXMuZGF0ZSk7XHJcbiAgICB0aGlzLm9uWWVhckNoYW5nZWQuZW1pdCh0aGlzLmRhdGUpO1xyXG4gICAgdGhpcy55ZWFyUGlja2VySW5wdXQuZm9jdXMoKTtcclxuICAgIHRoaXMuY2xvc2VQb3B1cCgpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIEltcGxlbWVudCBmb3IgQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGUgPSBvYmo7XHJcbiAgICB0aGlzLnN5bmNWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmVtaXRDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHsgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59Il19