com.phloxui
Version:
PhloxUI Ng2+ Framework
741 lines (740 loc) • 54.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';
import { ToggleSwitch } from '../../../../../component/dataview/input/ToggleSwitch.component';
import { Option } from '../../../../../decorator/Option.decorator';
import { I18N } from '../../../../../decorator/I18N.decorator';
import { NeedFocusService } from '../../../../../service/NeedFocusService.service';
import { EventUtils } from '../../../../../share/utils/EventUtils';
import { DRAG_CHANGE_EVENT, BEFORE_DRAG_CHANGE_EVENT, TOGGLE_CHANGE_EVENT, BEFORE_TOGGLE_CHANGE_EVENT } from '../../../../../share/CustomEventType';
import { MatSlideToggle } from '@angular/material';
var /** @type {?} */ TYPE_NAME = "material-switch";
var MaterialToggleSwitch = /** @class */ (function (_super) {
tslib_1.__extends(MaterialToggleSwitch, _super);
function MaterialToggleSwitch(elementRef, needFocusService) {
var _this = _super.call(this, elementRef, needFocusService) || this;
_this.beforeDragChangeEvent = new EventEmitter();
_this.dragChangeEvent = new EventEmitter();
_this.beforeToggleChangeEvent = new EventEmitter();
_this.toggleChangeEvent = new EventEmitter();
return _this;
}
/**
* @return {?}
*/
MaterialToggleSwitch.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
_super.prototype.ngOnInit.call(this);
$(this.elementRef.nativeElement).find('input.mat-slide-toggle-input').focus(function ($event) {
_this.onFocusing($event);
});
$(this.elementRef.nativeElement).find('input.mat-slide-toggle-input').blur(function ($event) {
_this.onLostFocusing($event);
});
};
/**
* @return {?}
*/
MaterialToggleSwitch.prototype._displayHelp = /**
* @return {?}
*/
function () {
var /** @type {?} */ hasHelp = this.hasHelp();
return hasHelp && this.isShowHelp();
};
/**
* @return {?}
*/
MaterialToggleSwitch.prototype.getLabel = /**
* @return {?}
*/
function () {
return this.label;
};
/**
* @param {?} label
* @return {?}
*/
MaterialToggleSwitch.prototype.setLabel = /**
* @param {?} label
* @return {?}
*/
function (label) {
this.label = label;
};
/**
* @return {?}
*/
MaterialToggleSwitch.prototype.getDescription = /**
* @return {?}
*/
function () {
return this.description;
};
/**
* @param {?} description
* @return {?}
*/
MaterialToggleSwitch.prototype.setDescription = /**
* @param {?} description
* @return {?}
*/
function (description) {
this.description = description;
};
/**
* @return {?}
*/
MaterialToggleSwitch.prototype.getLabelPosition = /**
* @return {?}
*/
function () {
return this.labelPosition;
};
/**
* @param {?} labelPosition
* @return {?}
*/
MaterialToggleSwitch.prototype.setLabelPosition = /**
* @param {?} labelPosition
* @return {?}
*/
function (labelPosition) {
this.labelPosition = labelPosition;
};
/**
* @return {?}
*/
MaterialToggleSwitch.prototype.isDisableRipple = /**
* @return {?}
*/
function () {
return this.disableRipple;
};
/**
* @param {?} disableRipple
* @return {?}
*/
MaterialToggleSwitch.prototype.setDisableRipple = /**
* @param {?} disableRipple
* @return {?}
*/
function (disableRipple) {
this.disableRipple = disableRipple;
};
/**
* @return {?}
*/
MaterialToggleSwitch.prototype.isDisabled = /**
* @return {?}
*/
function () {
return this.disabled;
};
/**
* @param {?} disabled
* @return {?}
*/
MaterialToggleSwitch.prototype.setDisabled = /**
* @param {?} disabled
* @return {?}
*/
function (disabled) {
this.disabled = disabled;
};
/**
* @return {?}
*/
MaterialToggleSwitch.prototype.getDragChangeEvent = /**
* @return {?}
*/
function () {
return this.dragChangeEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialToggleSwitch.prototype.setDragChangeEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.dragChangeEvent = event;
};
/**
* @return {?}
*/
MaterialToggleSwitch.prototype.getBeforeDragChangeEvent = /**
* @return {?}
*/
function () {
return this.beforeDragChangeEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialToggleSwitch.prototype.setBeforeDragChangeEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.beforeDragChangeEvent = event;
};
/**
* @return {?}
*/
MaterialToggleSwitch.prototype.getToggleChangeEvent = /**
* @return {?}
*/
function () {
return this.toggleChangeEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialToggleSwitch.prototype.setToggleChangeEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.toggleChangeEvent = event;
};
/**
* @return {?}
*/
MaterialToggleSwitch.prototype.getBeforeToggleChangeEvent = /**
* @return {?}
*/
function () {
return this.beforeToggleChangeEvent;
};
/**
* @param {?} event
* @return {?}
*/
MaterialToggleSwitch.prototype.setBeforeToggleChangeEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.beforeToggleChangeEvent = event;
};
/**
* @param {?} $event
* @return {?}
*/
MaterialToggleSwitch.prototype.onClick = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
if (this.isReadOnly()) {
$event.preventDefault();
return;
}
if (this.isDisabled()) {
$event.preventDefault();
return;
}
};
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
MaterialToggleSwitch.prototype.onChange = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($event, fireEvent) {
if (this.mcomp.checked != this.getInputValue()) {
this.mcomp.toggle();
}
if (this.isReadOnly()) {
return;
}
if (this.isDisabled()) {
return;
}
this.setInputValue($event.checked, $event, fireEvent);
};
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
MaterialToggleSwitch.prototype.onDragChange = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($event, fireEvent) {
var _this = this;
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeDragChangeEvent', $event, fireEvent, function ($event) {
// doEvent
}, function ($event) {
// emitBeforeEvent
// emitBeforeEvent
_this.emitBeforeDragChangeEvent($event);
}, function ($event, result) {
// emitAfterEvent
// emitAfterEvent
_this.emitDragChangeEvent($event);
}, function ($event) {
// doPrevented
});
};
/**
* @param {?=} $event
* @return {?}
*/
MaterialToggleSwitch.prototype.emitBeforeDragChangeEvent = /**
* @param {?=} $event
* @return {?}
*/
function ($event) {
var /** @type {?} */ eventData = null;
// emit event
var /** @type {?} */ data = eventData;
var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_DRAG_CHANGE_EVENT, this, data, $event);
if (this.beforeDragChangeEvent !== null && this.beforeDragChangeEvent !== undefined) {
this.beforeDragChangeEvent.emit(ev);
}
};
/**
* @param {?=} $event
* @return {?}
*/
MaterialToggleSwitch.prototype.emitDragChangeEvent = /**
* @param {?=} $event
* @return {?}
*/
function ($event) {
var /** @type {?} */ eventData = null;
// emit event
var /** @type {?} */ data = eventData;
var /** @type {?} */ ev = EventUtils.newCustomEvent(DRAG_CHANGE_EVENT, this, data, $event);
if (this.dragChangeEvent !== null && this.dragChangeEvent !== undefined) {
this.dragChangeEvent.emit(ev);
}
};
/**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
MaterialToggleSwitch.prototype.onToggleChange = /**
* @param {?} $event
* @param {?=} fireEvent
* @return {?}
*/
function ($event, fireEvent) {
var _this = this;
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
EventUtils.handleBrowserEvent(this, 'beforeToggleChangeEvent', $event, fireEvent, function ($event) {
// doEvent
}, function ($event) {
// emitBeforeEvent
// emitBeforeEvent
_this.emitBeforeToggleChangeEvent($event);
}, function ($event, result) {
// emitAfterEvent
// emitAfterEvent
_this.emitToggleChangeEvent($event);
}, function ($event) {
// doPrevented
});
};
/**
* @param {?=} $event
* @return {?}
*/
MaterialToggleSwitch.prototype.emitBeforeToggleChangeEvent = /**
* @param {?=} $event
* @return {?}
*/
function ($event) {
var /** @type {?} */ eventData = null;
// emit event
var /** @type {?} */ data = eventData;
var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_TOGGLE_CHANGE_EVENT, this, data, $event);
if (this.beforeToggleChangeEvent !== null && this.beforeToggleChangeEvent !== undefined) {
this.beforeToggleChangeEvent.emit(ev);
}
};
/**
* @param {?=} $event
* @return {?}
*/
MaterialToggleSwitch.prototype.emitToggleChangeEvent = /**
* @param {?=} $event
* @return {?}
*/
function ($event) {
var /** @type {?} */ eventData = null;
// emit event
var /** @type {?} */ data = eventData;
var /** @type {?} */ ev = EventUtils.newCustomEvent(TOGGLE_CHANGE_EVENT, this, data, $event);
if (this.toggleChangeEvent !== null && this.toggleChangeEvent !== undefined) {
this.toggleChangeEvent.emit(ev);
}
};
/**
* @param {?} $event
* @return {?}
*/
MaterialToggleSwitch.prototype.onFocusing = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.needFocusService.setFocusingComponent(this, $event);
};
/**
* @param {?} $event
* @return {?}
*/
MaterialToggleSwitch.prototype.onLostFocusing = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.needFocusService.resetFocusingComponent($event);
};
/**
* @param {?} inputValue
* @param {?} results
* @return {?}
*/
MaterialToggleSwitch.prototype.onValidationEnd = /**
* @param {?} inputValue
* @param {?} results
* @return {?}
*/
function (inputValue, results) {
};
/**
* @param {?} data
* @param {?} inputVal
* @return {?}
*/
MaterialToggleSwitch.prototype.onDataChange = /**
* @param {?} data
* @param {?} inputVal
* @return {?}
*/
function (data, inputVal) {
};
/**
* @param {?} $event
* @return {?}
*/
MaterialToggleSwitch.prototype.doFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
if ($(this.elementRef.nativeElement).find('input.mat-slide-toggle-input:focus').length <= 0) {
$(this.elementRef.nativeElement).find('input.mat-slide-toggle-input').focus();
}
};
/**
* @param {?} $event
* @return {?}
*/
MaterialToggleSwitch.prototype.doLostFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
if ($(this.elementRef.nativeElement).find('input.mat-slide-toggle-input:focus').length > 0) {
$(this.elementRef.nativeElement).find('input.mat-slide-toggle-input').blur();
}
};
MaterialToggleSwitch.TYPE_NAME = TYPE_NAME;
MaterialToggleSwitch.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"material-switch\" [class.readonly]=\"isReadOnly()\">\n <mat-slide-toggle #mcomp [checked]=\"isToggle()\" [disableRipple]=\"isDisableRipple()\" [disabled]=\"isDisabled()\" [labelPosition]=\"getLabelPosition()\" (change)=\"onChange($event)\" (dragChange)=\"onDragChange($event)\" (toggleChange)=\"onToggleChange($event)\">\n {{getLabel() | phx_text}}\n </mat-slide-toggle>\n <div *ngIf=\"isReadOnly()\" class=\"readonly-panel\" (click)=\"onClick($event)\"></div>\n <div class=\"validation\" [style.display]=\"getValidationResultMessage() ? undefined : 'none'\" [class.normal]=\"isNormal() && !isDisabled()\" [class.success]=\"isSuccess() && !isDisabled()\" [class.warning]=\"isWarning() && !isDisabled()\" [class.error]=\"isError() && !isDisabled()\">\n <ng-template [ngIf]=\"getValidationResultMessage()\" [ngIfElse]=\"validation_else\">\n {{getValidationResultMessage() | phx_text}}\n </ng-template>\n <ng-template #validation_else>\n <!-- We've to put whitespace if there is no validation msg to prevent empty dom -->\n <!-- since if validate msg's <div> dom is empty, the component positioning -->\n <!-- will be misplaced. -->\n {{ ' ' }}\n </ng-template>\n </div>\n <div class=\"description\" [style.display]=\"getValidationResultMessage() ? 'none' : undefined\" [class.normal]=\"isNormal() && !isDisabled()\" [class.success]=\"isSuccess() && !isDisabled()\" [class.warning]=\"isWarning() && !isDisabled()\" [class.error]=\"isError() && !isDisabled()\">\n <ng-template [ngIf]=\"getDescription()\" [ngIfElse]=\"description_else\">\n {{ getDescription() | phx_text }}\n </ng-template>\n <ng-template #description_else>\n <!-- We've to put whitespace if there is no description to prevent empty dom -->\n <!-- since if description's <div> dom is empty, the component positioning -->\n <!-- will be misplaced. -->\n {{ ' ' }}\n </ng-template>\n </div>\n <div class=\"help\">\n {{getHelp() | phx_text}}\n </div>\n</div>\n"
},] },
];
/** @nocollapse */
MaterialToggleSwitch.ctorParameters = function () { return [
{ type: ElementRef, },
{ type: NeedFocusService, },
]; };
MaterialToggleSwitch.propDecorators = {
"dataParent": [{ type: Input },],
"ignoreParentData": [{ type: Input },],
"data": [{ type: Input },],
"ignoreParentDisabled": [{ type: Input },],
"delegateHistory": [{ type: Input },],
"onDisabled": [{ type: Input },],
"onEnabled": [{ type: Input },],
"loadingEnabled": [{ type: Input },],
"i18nKey": [{ type: Input },],
"bypass": [{ type: Input, args: ['i18nBypass',] },],
"options": [{ type: Input },],
"disabled": [{ type: Input },],
"field": [{ type: Input },],
"name": [{ type: Input },],
"typeOfData": [{ type: Input },],
"readOnly": [{ type: Input },],
"help": [{ type: Input },],
"label": [{ type: Input },],
"description": [{ type: Input },],
"disableRipple": [{ type: Input },],
"labelPosition": [{ type: Input },],
"loadEvent": [{ type: Output, args: ['phxLoad',] },],
"startValidateEvent": [{ type: Output, args: ['phxStartValidate',] },],
"endValidateEvent": [{ type: Output, args: ['phxEndValidate',] },],
"beforeFocusEvent": [{ type: Output, args: ['phxBeforeFocus',] },],
"focusEvent": [{ type: Output, args: ['phxFocus',] },],
"beforeLostFocusEvent": [{ type: Output, args: ['phxBeforeLostFocus',] },],
"lostFocusEvent": [{ type: Output, args: ['phxLostFocus',] },],
"beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },],
"changeEvent": [{ type: Output, args: ['phxChange',] },],
"beforeDragChangeEvent": [{ type: Output, args: ['phxBeforeDragChange',] },],
"dragChangeEvent": [{ type: Output, args: ['phxDragChange',] },],
"beforeToggleChangeEvent": [{ type: Output, args: ['phxBeforeToggleChange',] },],
"toggleChangeEvent": [{ type: Output, args: ['phxToggleChange',] },],
"mcomp": [{ type: ViewChild, args: ['mcomp',] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialToggleSwitch.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSwitch.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialToggleSwitch.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSwitch.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSwitch.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialToggleSwitch.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialToggleSwitch.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSwitch.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSwitch.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSwitch.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSwitch.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSwitch.prototype, "field", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSwitch.prototype, "name", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSwitch.prototype, "typeOfData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSwitch.prototype, "readOnly", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialToggleSwitch.prototype, "help", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSwitch.prototype, "label", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSwitch.prototype, "description", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSwitch.prototype, "disableRipple", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSwitch.prototype, "labelPosition", void 0);
tslib_1.__decorate([
Option('load'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "loadEvent", void 0);
tslib_1.__decorate([
Option('startValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "startValidateEvent", void 0);
tslib_1.__decorate([
Option('endValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "endValidateEvent", void 0);
tslib_1.__decorate([
Option('beforeFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "beforeFocusEvent", void 0);
tslib_1.__decorate([
Option('focus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "focusEvent", void 0);
tslib_1.__decorate([
Option('beforeLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "beforeLostFocusEvent", void 0);
tslib_1.__decorate([
Option('lostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "lostFocusEvent", void 0);
tslib_1.__decorate([
Option('beforeChange'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "beforeChangeEvent", void 0);
tslib_1.__decorate([
Option('change'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "changeEvent", void 0);
tslib_1.__decorate([
Option('beforeDragChange'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "beforeDragChangeEvent", void 0);
tslib_1.__decorate([
Option('dragChange'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "dragChangeEvent", void 0);
tslib_1.__decorate([
Option('beforeToggleChange'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "beforeToggleChangeEvent", void 0);
tslib_1.__decorate([
Option('toggleChange'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSwitch.prototype, "toggleChangeEvent", void 0);
return MaterialToggleSwitch;
}(ToggleSwitch));
export { MaterialToggleSwitch };
function MaterialToggleSwitch_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
MaterialToggleSwitch.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
MaterialToggleSwitch.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
MaterialToggleSwitch.propDecorators;
/** @type {?} */
MaterialToggleSwitch.TYPE_NAME;
/** @type {?} */
MaterialToggleSwitch.prototype.dataParent;
/** @type {?} */
MaterialToggleSwitch.prototype.ignoreParentData;
/** @type {?} */
MaterialToggleSwitch.prototype.data;
/** @type {?} */
MaterialToggleSwitch.prototype.ignoreParentDisabled;
/** @type {?} */
MaterialToggleSwitch.prototype.delegateHistory;
/** @type {?} */
MaterialToggleSwitch.prototype.onDisabled;
/** @type {?} */
MaterialToggleSwitch.prototype.onEnabled;
/** @type {?} */
MaterialToggleSwitch.prototype.loadingEnabled;
/** @type {?} */
MaterialToggleSwitch.prototype.i18nKey;
/** @type {?} */
MaterialToggleSwitch.prototype.bypass;
/** @type {?} */
MaterialToggleSwitch.prototype.options;
/** @type {?} */
MaterialToggleSwitch.prototype.disabled;
/** @type {?} */
MaterialToggleSwitch.prototype.field;
/** @type {?} */
MaterialToggleSwitch.prototype.name;
/** @type {?} */
MaterialToggleSwitch.prototype.typeOfData;
/** @type {?} */
MaterialToggleSwitch.prototype.readOnly;
/** @type {?} */
MaterialToggleSwitch.prototype.help;
/** @type {?} */
MaterialToggleSwitch.prototype.label;
/** @type {?} */
MaterialToggleSwitch.prototype.description;
/** @type {?} */
MaterialToggleSwitch.prototype.disableRipple;
/** @type {?} */
MaterialToggleSwitch.prototype.labelPosition;
/** @type {?} */
MaterialToggleSwitch.prototype.loadEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.startValidateEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.endValidateEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.beforeFocusEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.focusEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.beforeLostFocusEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.lostFocusEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.beforeChangeEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.changeEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.beforeDragChangeEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.dragChangeEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.beforeToggleChangeEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.toggleChangeEvent;
/** @type {?} */
MaterialToggleSwitch.prototype.mcomp;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxUb2dnbGVTd2l0Y2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvdGhlbWUvbWF0ZXJpYWwvY29tcG9uZW50L2RhdGF2aWV3L2lucHV0L01hdGVyaWFsVG9nZ2xlU3dpdGNoLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFHOUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDcEosT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELHFCQUFNLFNBQVMsR0FBVyxpQkFBaUIsQ0FBQzs7SUFzQ0YsZ0RBQVk7SUEySHBELDhCQUFZLFVBQXNCLEVBQUUsZ0JBQWtDO1FBQXRFLFlBQ0Usa0JBQU0sVUFBVSxFQUFFLGdCQUFnQixDQUFDLFNBTXBDO1FBSkMsS0FBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDckQsS0FBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQy9DLEtBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFBTyxD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S3BCLE1BQU0sRUFBRTs7OztRQUlSLE1BQU0sRUFBRTs7OztRQUlSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLElBQUksRUFBRTtRQUNOLE1BQU0sRUFBRTs7OztRQUlSLElBQUksRUFBRTtRQUNOLE1BQU0sRUFBRTs7OztRQUVSLElBQUksRUFBRTtRQUNOLE1BQU0sRUFBRTs7OztRQUlSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQU1SLE1BQU0sQ0FBQyxNQUFNLENBQUM7MENBQ00sWUFBWTs7O1FBSWhDLE1BQU0sQ0FBQyxlQUFlLENBQUM7MENBQ00sWUFBWTs7O1FBRXpDLE1BQU0sQ0FBQyxhQUFhLENBQUM7MENBQ00sWUFBWTs7O1FBRXZDLE1BQU0sQ0FBQyxhQUFhLENBQUM7MENBQ00sWUFBWTs7O1FBRXZDLE1BQU0sQ0FBQyxPQUFPLENBQUM7MENBQ00sWUFBWTs7O1FBRWpDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQzswQ0FDTSxZQUFZOzs7UUFFM0MsTUFBTSxDQUFDLFdBQVcsQ0FBQzswQ0FDTSxZQUFZOzs7UUFFckMsTUFBTSxDQUFDLGNBQWMsQ0FBQzswQ0FDTSxZQUFZOzs7UUFFeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQzswQ0FDTSxZQUFZOzs7UUFHbEMsTUFBTSxDQUFDLGtCQUFrQixDQUFDOzBDQUNNLFlBQVk7OztRQUU1QyxNQUFNLENBQUMsWUFBWSxDQUFDOzBDQUNNLFlBQVk7OztRQUV0QyxNQUFNLENBQUMsb0JBQW9CLENBQUM7MENBQ00sWUFBWTs7O1FBRTlDLE1BQU0sQ0FBQyxjQUFjLENBQUM7MENBQ00sWUFBWTs7K0JBdkszQztFQWlEMEMsWUFBWTtTQUF6QyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVG9nZ2xlU3dpdGNoIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L2RhdGF2aWV3L2lucHV0L1RvZ2dsZVN3aXRjaC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L21vZGVsL1ZhbGlkYXRpb25SZXN1bHQnO1xyXG5pbXBvcnQgeyBJSGFzRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9JSGFzRGF0YSc7XHJcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvci9PcHRpb24uZGVjb3JhdG9yJztcclxuaW1wb3J0IHsgSTE4TiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvci9JMThOLmRlY29yYXRvcic7XHJcbmltcG9ydCB7IE5lZWRGb2N1c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL05lZWRGb2N1c1NlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEV2ZW50VXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZS91dGlscy9FdmVudFV0aWxzJztcclxuaW1wb3J0IHsgRFJBR19DSEFOR0VfRVZFTlQsIEJFRk9SRV9EUkFHX0NIQU5HRV9FVkVOVCwgVE9HR0xFX0NIQU5HRV9FVkVOVCwgQkVGT1JFX1RPR0dMRV9DSEFOR0VfRVZFTlQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZS9DdXN0b21FdmVudFR5cGUnO1xyXG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcclxuXHJcbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJtYXRlcmlhbC1zd2l0Y2hcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXHJcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcclxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJtYXRlcmlhbC1zd2l0Y2hcIiBbY2xhc3MucmVhZG9ubHldPVwiaXNSZWFkT25seSgpXCI+XHJcbiAgPG1hdC1zbGlkZS10b2dnbGUgI21jb21wIFtjaGVja2VkXT1cImlzVG9nZ2xlKClcIiBbZGlzYWJsZVJpcHBsZV09XCJpc0Rpc2FibGVSaXBwbGUoKVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIiBbbGFiZWxQb3NpdGlvbl09XCJnZXRMYWJlbFBvc2l0aW9uKClcIiAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiAoZHJhZ0NoYW5nZSk9XCJvbkRyYWdDaGFuZ2UoJGV2ZW50KVwiICh0b2dnbGVDaGFuZ2UpPVwib25Ub2dnbGVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAge3tnZXRMYWJlbCgpIHwgcGh4X3RleHR9fVxyXG4gIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICA8ZGl2ICpuZ0lmPVwiaXNSZWFkT25seSgpXCIgY2xhc3M9XCJyZWFkb25seS1wYW5lbFwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIj48L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidmFsaWRhdGlvblwiIFtzdHlsZS5kaXNwbGF5XT1cImdldFZhbGlkYXRpb25SZXN1bHRNZXNzYWdlKCkgPyB1bmRlZmluZWQgOiAnbm9uZSdcIiBbY2xhc3Mubm9ybWFsXT1cImlzTm9ybWFsKCkgJiYgIWlzRGlzYWJsZWQoKVwiIFtjbGFzcy5zdWNjZXNzXT1cImlzU3VjY2VzcygpICYmICFpc0Rpc2FibGVkKClcIiBbY2xhc3Mud2FybmluZ109XCJpc1dhcm5pbmcoKSAmJiAhaXNEaXNhYmxlZCgpXCIgW2NsYXNzLmVycm9yXT1cImlzRXJyb3IoKSAmJiAhaXNEaXNhYmxlZCgpXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiZ2V0VmFsaWRhdGlvblJlc3VsdE1lc3NhZ2UoKVwiIFtuZ0lmRWxzZV09XCJ2YWxpZGF0aW9uX2Vsc2VcIj5cclxuICAgICAge3tnZXRWYWxpZGF0aW9uUmVzdWx0TWVzc2FnZSgpIHwgcGh4X3RleHR9fVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdmFsaWRhdGlvbl9lbHNlPlxyXG4gICAgICA8IS0tIFdlJ3ZlIHRvIHB1dCB3aGl0ZXNwYWNlIGlmIHRoZXJlIGlzIG5vIHZhbGlkYXRpb24gbXNnIHRvIHByZXZlbnQgZW1wdHkgZG9tIC0tPlxyXG4gICAgICA8IS0tIHNpbmNlIGlmIHZhbGlkYXRlIG1zZydzIDxkaXY+IGRvbSBpcyBlbXB0eSwgdGhlIGNvbXBvbmVudCBwb3NpdGlvbmluZyAtLT5cclxuICAgICAgPCEtLSB3aWxsIGJlIG1pc3BsYWNlZC4gLS0+XHJcbiAgICAgIHt7ICcmbmJzcDsnIH19XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiIFtzdHlsZS5kaXNwbGF5XT1cImdldFZhbGlkYXRpb25SZXN1bHRNZXNzYWdlKCkgPyAnbm9uZScgOiB1bmRlZmluZWRcIiBbY2xhc3Mubm9ybWFsXT1cImlzTm9ybWFsKCkgJiYgIWlzRGlzYWJsZWQoKVwiIFtjbGFzcy5zdWNjZXNzXT1cImlzU3VjY2VzcygpICYmICFpc0Rpc2FibGVkKClcIiBbY2xhc3Mud2FybmluZ109XCJpc1dhcm5pbmcoKSAmJiAhaXNEaXNhYmxlZCgpXCIgW2NsYXNzLmVycm9yXT1cImlzRXJyb3IoKSAmJiAhaXNEaXNhYmxlZCgpXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiZ2V0RGVzY3JpcHRpb24oKVwiIFtuZ0lmRWxzZV09XCJkZXNjcmlwdGlvbl9lbHNlXCI+XHJcbiAgICAgIHt7IGdldERlc2NyaXB0aW9uKCkgfCBwaHhfdGV4dCB9fVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZGVzY3JpcHRpb25fZWxzZT5cclxuICAgICAgPCEtLSBXZSd2ZSB0byBwdXQgd2hpdGVzcGFjZSBpZiB0aGVyZSBpcyBubyBkZXNjcmlwdGlvbiB0byBwcmV2ZW50IGVtcHR5IGRvbSAtLT5cclxuICAgICAgPCEtLSBzaW5jZSBpZiBkZXNjcmlwdGlvbidzIDxkaXY+IGRvbSBpcyBlbXB0eSwgdGhlIGNvbXBvbmVudCBwb3NpdGlvbmluZyAtLT5cclxuICAgICAgPCEtLSB3aWxsIGJlIG1pc3BsYWNlZC4gLS0+XHJcbiAgICAgIHt7ICcmbmJzcDsnIH19XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJoZWxwXCI+XHJcbiAgICB7e2dldEhlbHAoKSB8IHBoeF90ZXh0fX1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbmBcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsVG9nZ2xlU3dpdGNoIGV4dGVuZHMgVG9nZ2xlU3dpdGNoIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcclxuXHJcbiAgLy8gUmUtZGVjbGFyZSBmaWVsZCB0byBkZWNsYXJlIG5nIEBJbnB1dC4gXHJcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RIYXNEYXRhXHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGF0YVBhcmVudDogSUhhc0RhdGE7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGF0YTogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBkYXRhOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGVsZWdhdGVIaXN0b3J5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIG9uRGlzYWJsZWQ6IEZ1bmN0aW9uO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIG9uRW5hYmxlZDogRnVuY3Rpb247XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgbG9hZGluZ0VuYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgaTE4bktleTogc3RyaW5nO1xyXG4gIEBJbnB1dCgnaTE4bkJ5cGFzcycpXHJcbiAgQE9wdGlvbignaTE4bkJ5cGFzcycpXHJcbiAgcHJvdGVjdGVkIGJ5cGFzczogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIHByb3RlY3RlZCBvcHRpb25zOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3REYXRhVmlld1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGZpZWxkOiBzdHJpbmc7XHJcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RJbnB1dERhdGFWaWV3XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgbmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIHR5cGVPZkRhdGE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCByZWFkT25seTogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIEBJMThOKClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgaGVscDogYW55O1xyXG4gIC8vIC0tLSBTZWxmXHJcbiAgQElucHV0KClcclxuICBASTE4TigpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGxhYmVsOiBzdHJpbmc7XHJcbiAgQEkxOE4oKVxyXG4gIEBPcHRpb24oKVxyXG4gIEBJbnB1dCgpXHJcbiAgcHJvdGVjdGVkIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGlzYWJsZVJpcHBsZTogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBsYWJlbFBvc2l0aW9uOiBzdHJpbmc7IC8vICdiZWZvcmUnIHwgJ2FmdGVyJ1xyXG5cclxuICAvLyBSZS1kZWNsYXJlIGZpZWxkIHRvIGRlY2xhcmUgbmcgQE91dHB1dC5cclxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdEhhc0RhdGFcclxuICBAT3V0cHV0KCdwaHhMb2FkJylcclxuICBAT3B0aW9uKCdsb2FkJylcclxuICBwcm90ZWN0ZWQgbG9hZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdERhdGFWaWV3XHJcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RJbnB1dERhdGFWaWV3XHJcbiAgQE91dHB1dCgncGh4U3RhcnRWYWxpZGF0ZScpXHJcbiAgQE9wdGlvbignc3RhcnRWYWxpZGF0ZScpXHJcbiAgcHJvdGVjdGVkIHN0YXJ0VmFsaWRhdGVFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgQE91dHB1dCgncGh4RW5kVmFsaWRhdGUnKVxyXG4gIEBPcHRpb24oJ2VuZFZhbGlkYXRlJylcclxuICBwcm90ZWN0ZWQgZW5kVmFsaWRhdGVFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgQE91dHB1dCgncGh4QmVmb3JlRm9jdXMnKVxyXG4gIEBPcHRpb24oJ2JlZm9yZUZvY3VzJylcclxuICBwcm90ZWN0ZWQgYmVmb3JlRm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgQE91dHB1dCgncGh4Rm9jdXMnKVxyXG4gIEBPcHRpb24oJ2ZvY3VzJylcclxuICBwcm90ZWN0ZWQgZm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgQE91dHB1dCgncGh4QmVmb3JlTG9zdEZvY3VzJylcclxuICBAT3B0aW9uKCdiZWZvcmVMb3N0Rm9jdXMnKVxyXG4gIHByb3RlY3RlZCBiZWZvcmVMb3N0Rm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgQE91dHB1dCgncGh4TG9zdEZvY3VzJylcclxuICBAT3B0aW9uKCdsb3N0Rm9jdXMnKVxyXG4gIHByb3RlY3RlZCBsb3N0Rm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgQE91dHB1dCgncGh4QmVmb3JlQ2hhbmdlJylcclxuICBAT3B0aW9uKCdiZWZvcmVDaGFuZ2UnKVxyXG4gIHByb3RlY3RlZCBiZWZvcmVDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgQE91dHB1dCgncGh4Q2hhbmdlJylcclxuICBAT3B0aW9uKCdjaGFuZ2UnKVxyXG4gIHByb3RlY3RlZCBjaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgLy8gLS0tIFNlbGZcclxuICBAT3V0cHV0KCdwaHhCZWZvcmVEcmFnQ2hhbmdlJylcclxuICBAT3B0aW9uKCdiZWZvcmVEcmFnQ2hhbmdlJylcclxuICBwcm90ZWN0ZWQgYmVmb3JlRHJhZ0NoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhEcmFnQ2hhbmdlJylcclxuICBAT3B0aW9uKCdkcmFnQ2hhbmdlJylcclxuICBwcm90ZWN0ZWQgZHJhZ0NoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhCZWZvcmVUb2dnbGVDaGFuZ2UnKVxyXG4gIEBPcHRpb24oJ2JlZm9yZVRvZ2dsZUNoYW5nZScpXHJcbiAgcHJvdGVjdGVkIGJlZm9yZVRvZ2dsZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhUb2dnbGVDaGFuZ2UnKVxyXG4gIEBPcHRpb24oJ3RvZ2dsZUNoYW5nZScpXHJcbiAgcHJvdGVjdGVkIHRvZ2dsZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbWNvbXAnKVxyXG4gIHByaXZhdGUgbWNvbXA6IE1hdFNsaWRlVG9nZ2xlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBuZWVkRm9jdXNTZXJ2aWNlOiBOZWVkRm9jdXNTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihlbGVtZW50UmVmLCBuZWVkRm9jdXNTZXJ2aWNlKTtcclxuXHJcbiAgICB0aGlzLmJlZm9yZURyYWdDaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgdGhpcy5kcmFnQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIHRoaXMuYmVmb3JlVG9nZ2xlQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIHRoaXMudG9nZ2xlQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgJCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuZmluZCgnaW5wdXQubWF0LXNsaWRlLXRvZ2dsZS1pbnB1dCcpLmZvY3VzKCgkZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5vbkZvY3VzaW5nKCRldmVudCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5maW5kKCdpbnB1dC5tYXQtc2xpZGUtdG9nZ2xlLWlucHV0JykuYmx1cigoJGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMub25Mb3N0Rm9jdXNpbmcoJGV2ZW50KTtcclxuICAgIH0pO1xyXG4gIH0gXHJcblxyXG4gIHB1YmxpYyBfZGlzcGxheUhlbHAoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaGFzSGVscCA9IHRoaXMuaGFzSGVscCgpO1xyXG5cclxuICAgIHJldHVybiBoYXNIZWxwICYmIHRoaXMuaXNTaG93SGVscCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldExhYmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYWJlbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRMYWJlbChsYWJlbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RGVzY3JpcHRpb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRlc2NyaXB0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRMYWJlbFBvc2l0aW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYWJlbFBvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldExhYmVsUG9zaXRpb24obGFiZWxQb3NpdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmxhYmVsUG9zaXRpb24gPSBsYWJlbFBvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzRGlzYWJsZVJpcHBsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc2FibGVSaXBwbGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RGlzYWJsZVJpcHBsZShkaXNhYmxlUmlwcGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVSaXBwbGUgPSBkaXNhYmxlUmlwcGxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldERyYWdDaGFuZ2VFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5kcmFnQ2hhbmdlRXZlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RHJhZ0NoYW5nZUV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xyXG4gICAgdGhpcy5kcmFnQ2hhbmdlRXZlbnQgPSBldmVudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRCZWZvcmVEcmFnQ2hhbmdlRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmVmb3JlRHJhZ0NoYW5nZUV2ZW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEJlZm9yZURyYWdDaGFuZ2VFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMuYmVmb3JlRHJhZ0NoYW5nZUV2ZW50ID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VG9nZ2xlQ2hhbmdlRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlQ2hhbmdlRXZlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VG9nZ2xlQ2hhbmdlRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XHJcbiAgICB0aGlzLnRvZ2dsZUNoYW5nZUV2ZW50ID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QmVmb3JlVG9nZ2xlQ2hhbmdlRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmVmb3JlVG9nZ2xlQ2hhbmdlRXZlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0QmVmb3JlVG9nZ2xlQ2hhbmdlRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XHJcbiAgICB0aGlzLmJlZm9yZVRvZ2dsZUNoYW5nZUV2ZW50ID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbGljaygkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1JlYWRPbmx5KCkpIHtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZSgkZXZlbnQ6IGFueSwgZmlyZUV2ZW50PzogYm9vbGVhbikge1xyXG4gICAgaWYodGhpcy5tY29tcC5jaGVja2VkICE9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgpKXtcclxuICAgICAgdGhpcy5tY29tcC50b2dnbGUoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKHRoaXMuaXNSZWFkT25seSgpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5zZXRJbnB1dFZhbHVlKCRldmVudC5jaGVja2VkLCAkZXZlbnQsIGZpcmVFdmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EcmFnQ2hhbmdlKCRldmVudDogYW55LCBmaXJlRXZlbnQ/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoZmlyZUV2ZW50ID09PSBudWxsIHx8IGZpcmVFdmVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGZpcmVFdmVudCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgRXZlbnRVdGlscy5oYW5kbGVCcm93c2VyRXZlbnQodGhpcywgJ2JlZm9yZURyYWdDaGFuZ2VF