com.phloxui
Version:
PhloxUI Ng2+ Framework
703 lines (702 loc) • 56.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, Output, EventEmitter } from '@angular/core';
import { Option } from '../../../../../decorator/Option.decorator';
import { SimpleRadioButtons } from '../../../../../component/dataview/input/SimpleRadioButtons.component';
import { EventUtils } from '../../../../../share/utils/EventUtils';
import { CLICK_EVENT, BEFORE_CLICK_EVENT } from '../../../../../share/CustomEventType';
import { NeedFocusService } from '../../../../../service/NeedFocusService.service';
import { I18N } from '../../../../../decorator/I18N.decorator';
import { FormControl } from '@angular/forms';
import { MatRadioButton } from '@angular/material';
var /** @type {?} */ TYPE_NAME = "material-radio-buttons";
var /** @type {?} */ DEFAULT_LABEL_POSITION = 'after';
var MaterialRadioButtons = /** @class */ (function (_super) {
tslib_1.__extends(MaterialRadioButtons, _super);
function MaterialRadioButtons(elementRef, needFocusService) {
var _this = _super.call(this, elementRef, needFocusService) || this;
_this.beforeClickEvent = new EventEmitter();
_this.clickEvent = new EventEmitter();
_this.beforeFocusEvent = new EventEmitter();
_this.focusEvent = new EventEmitter();
_this.beforeLostFocusEvent = new EventEmitter();
_this.lostFocusEvent = new EventEmitter();
_this.beforeChangeEvent = new EventEmitter();
_this.changeEvent = new EventEmitter();
_this.formControl = new FormControl();
_this.labelPosition = DEFAULT_LABEL_POSITION;
_this.disabled = false;
_this.disableRipple = false;
_this.vertical = false;
return _this;
}
/**
* @param {?} changes
* @return {?}
*/
MaterialRadioButtons.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
var _this = this;
setTimeout(function () {
_this.initEventHandlers();
}, 20);
};
/**
* @return {?}
*/
MaterialRadioButtons.prototype.initEventHandlers = /**
* @return {?}
*/
function () {
var _this = this;
$(this.elementRef.nativeElement).find('input.mat-radio-input').focus(function ($event) {
_this.onFocusing($event);
});
$(this.elementRef.nativeElement).find('input.mat-radio-input').blur(function ($event) {
_this.onLostFocusing($event);
});
};
/**
* @return {?}
*/
MaterialRadioButtons.prototype.getValue = /**
* @return {?}
*/
function () {
return this.value;
};
/**
* @param {?} value
* @return {?}
*/
MaterialRadioButtons.prototype.setValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.value = value;
};
/**
* @return {?}
*/
MaterialRadioButtons.prototype.isDisable = /**
* @return {?}
*/
function () {
return this.disabled;
};
/**
* @param {?} disable
* @return {?}
*/
MaterialRadioButtons.prototype.setDisable = /**
* @param {?} disable
* @return {?}
*/
function (disable) {
this.disabled = disable;
};
/**
* @return {?}
*/
MaterialRadioButtons.prototype.isDisableRipple = /**
* @return {?}
*/
function () {
return this.disableRipple;
};
/**
* @param {?} disableRipple
* @return {?}
*/
MaterialRadioButtons.prototype.setDisableRipple = /**
* @param {?} disableRipple
* @return {?}
*/
function (disableRipple) {
this.disableRipple = disableRipple;
};
/**
* @return {?}
*/
MaterialRadioButtons.prototype.getLabelPosition = /**
* @return {?}
*/
function () {
return this.labelPosition;
};
/**
* @param {?} position
* @return {?}
*/
MaterialRadioButtons.prototype.setLabelPosition = /**
* @param {?} position
* @return {?}
*/
function (position) {
if (position === "before") {
this.labelPosition = "before";
}
else {
this.labelPosition = "after";
}
};
/**
* @param {?} index
* @param {?=} $event
* @param {?=} fireEvent
* @return {?}
*/
MaterialRadioButtons.prototype.onRadioClicked = /**
* @param {?} index
* @param {?=} $event
* @param {?=} fireEvent
* @return {?}
*/
function (index, $event, fireEvent) {
var _this = this;
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
$event.preventDefault();
if (this.isReadOnly()) {
return;
}
if (this.isDisabled()) {
return;
}
var /** @type {?} */ oldIndex = this.getSelectedIndex();
var /** @type {?} */ newIndex = index;
EventUtils.handleBrowserEvent(this, 'beforeClickEvent', $event, fireEvent, function ($event) {
// doEvent
// doEvent
_this.setSelectedIndex(newIndex, $event);
}, function ($event) {
// emitBeforeEvent
// emitBeforeEvent
_this.emitBeforeClickEvent(oldIndex, newIndex, $event);
}, function ($event, result) {
// emitAfterEvent
// emitAfterEvent
_this.emitClickEvent(oldIndex, newIndex, $event);
}, function ($event) {
// doPrevented
});
};
/**
* @param {?} selectedItems
* @param {?=} $event
* @param {?=} fireEvent
* @param {?=} fireChangeEvent
* @return {?}
*/
MaterialRadioButtons.prototype._setRadioSelectedItems = /**
* @param {?} selectedItems
* @param {?=} $event
* @param {?=} fireEvent
* @param {?=} fireChangeEvent
* @return {?}
*/
function (selectedItems, $event, fireEvent, fireChangeEvent) {
this.setSelectedItems(selectedItems, $event, fireEvent, fireChangeEvent);
};
// use for preventEvent of FormControl
/**
* @param {?} selectedItems
* @param {?=} $event
* @param {?=} fireEvent
* @param {?=} fireChangeEvent
* @return {?}
*/
MaterialRadioButtons.prototype.setSelectedItems = /**
* @param {?} selectedItems
* @param {?=} $event
* @param {?=} fireEvent
* @param {?=} fireChangeEvent
* @return {?}
*/
function (selectedItems, $event, fireEvent, fireChangeEvent) {
var _this = this;
if (selectedItems === null || selectedItems === undefined || !Array.isArray(selectedItems)) {
selectedItems = [];
}
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
var /** @type {?} */ sItems = [];
var /** @type {?} */ newIndices = [];
try {
for (var selectedItems_1 = tslib_1.__values(selectedItems), selectedItems_1_1 = selectedItems_1.next(); !selectedItems_1_1.done; selectedItems_1_1 = selectedItems_1.next()) {
var item = selectedItems_1_1.value;
var /** @type {?} */ idx = this.getItemIndex(item);
if (idx >= 0) {
newIndices.push(idx);
sItems.push(item);
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (selectedItems_1_1 && !selectedItems_1_1.done && (_a = selectedItems_1.return)) _a.call(selectedItems_1);
}
finally { if (e_1) throw e_1.error; }
}
// Only allow "item" which actually exists.
selectedItems = sItems;
var /** @type {?} */ oldIndex = this.getSelectedIndexes();
EventUtils.handleBrowserEvent(this, 'beforeSelectEvent', $event, fireEvent, function ($event) {
// doEvent
// doEvent
_this._setSelectedItemsSaveData(selectedItems, true, $event, fireChangeEvent);
}, function ($event) {
// emitBeforeEvent
// emitBeforeEvent
_this.emitBeforeSelectEvent(oldIndex, newIndices, $event);
}, function ($event, result) {
// emitAfterEvent
// emitAfterEvent
_this.emitSelectEvent(oldIndex, newIndices, $event);
}, function ($event) {
// doPrevented
// doPrevented
_this.formControl.setValue(_this.getSelectedData());
});
var e_1, _a;
};
/**
* @param {?} oldIndex
* @param {?} newIndex
* @param {?=} $event
* @return {?}
*/
MaterialRadioButtons.prototype.emitBeforeClickEvent = /**
* @param {?} oldIndex
* @param {?} newIndex
* @param {?=} $event
* @return {?}
*/
function (oldIndex, newIndex, $event) {
var /** @type {?} */ eventData = {
oldIndex: oldIndex,
oldItem: this.getItemAtIndex(oldIndex),
index: newIndex,
item: this.getItemAtIndex(newIndex)
};
// emit event
var /** @type {?} */ data = eventData;
var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_CLICK_EVENT, this, data, $event);
if (this.beforeClickEvent !== null && this.beforeClickEvent !== undefined) {
this.beforeClickEvent.emit(ev);
}
};
/**
* @param {?} oldIndex
* @param {?} newIndex
* @param {?=} $event
* @return {?}
*/
MaterialRadioButtons.prototype.emitClickEvent = /**
* @param {?} oldIndex
* @param {?} newIndex
* @param {?=} $event
* @return {?}
*/
function (oldIndex, newIndex, $event) {
var /** @type {?} */ eventData = {
oldIndex: oldIndex,
oldItem: this.getItemAtIndex(oldIndex),
index: newIndex,
item: this.getItemAtIndex(newIndex)
};
// emit event
var /** @type {?} */ data = eventData;
var /** @type {?} */ ev = EventUtils.newCustomEvent(CLICK_EVENT, this, data, $event);
if (this.clickEvent !== null && this.clickEvent !== undefined) {
this.clickEvent.emit(ev);
}
};
/**
* @param {?} $event
* @return {?}
*/
MaterialRadioButtons.prototype.onChanged = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
};
/**
* @param {?} $event
* @return {?}
*/
MaterialRadioButtons.prototype.onFocusing = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.needFocusService.setFocusingComponent(this, $event);
};
/**
* @param {?} $event
* @return {?}
*/
MaterialRadioButtons.prototype.onLostFocusing = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
this.needFocusService.resetFocusingComponent($event);
};
/**
* @param {?} $event
* @return {?}
*/
MaterialRadioButtons.prototype.doFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
if ($(this.elementRef.nativeElement).find('input.mat-radio-input:focus').length <= 0) {
$(this.elementRef.nativeElement).find('input.mat-radio-input').focus();
}
};
/**
* @param {?} $event
* @return {?}
*/
MaterialRadioButtons.prototype.doLostFocus = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
if ($(this.elementRef.nativeElement).find('input.mat-radio-input:focus').length > 0) {
$(this.elementRef.nativeElement).find('input.mat-radio-input').blur();
}
};
/**
* @return {?}
*/
MaterialRadioButtons.prototype.isVertical = /**
* @return {?}
*/
function () {
return this.vertical;
};
/**
* @param {?} vertical
* @return {?}
*/
MaterialRadioButtons.prototype.setVertical = /**
* @param {?} vertical
* @return {?}
*/
function (vertical) {
this.vertical = vertical;
};
MaterialRadioButtons.TYPE_NAME = TYPE_NAME;
MaterialRadioButtons.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"material-input material-radio-buttons\">\n <mat-radio-group #mcomp [formControl]=\"formControl\" [phxDisableControl]=\"isDisable()\" [labelPosition]=\"getLabelPosition()\" [value]=\"getValue()\">\n <mat-radio-button *ngFor=\"let item of getItems(); let i = index;\" [class.vertical]=\"isVertical()\" [disableRipple]=\"isDisableRipple()\" [checked]=\"getSelectedIndex()===i\" [value]=\"item.getValue()\" (click)=\"onRadioClicked(i, $event)\" (change)=\"_setRadioSelectedItems(item, $event)\">{{ item.label }}</mat-radio-button>\n </mat-radio-group>\n\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 */
MaterialRadioButtons.ctorParameters = function () { return [
{ type: ElementRef, },
{ type: NeedFocusService, },
]; };
MaterialRadioButtons.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 },],
"dataComparator": [{ type: Input, args: ['comparator',] },],
"items": [{ type: Input },],
"description": [{ type: Input },],
"value": [{ type: Input },],
"labelPosition": [{ type: Input },],
"disableRipple": [{ type: Input },],
"selected": [{ type: Input },],
"vertical": [{ type: Input, args: ['vertical',] },],
"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',] },],
"beforeSelectEvent": [{ type: Output, args: ['phxBeforeSelect',] },],
"selectEvent": [{ type: Output, args: ['phxSelect',] },],
"beforeClickEvent": [{ type: Output, args: ['phxBeforeClick',] },],
"clickEvent": [{ type: Output, args: ['phxClick',] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialRadioButtons.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialRadioButtons.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialRadioButtons.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialRadioButtons.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialRadioButtons.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialRadioButtons.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialRadioButtons.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialRadioButtons.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialRadioButtons.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], MaterialRadioButtons.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialRadioButtons.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialRadioButtons.prototype, "field", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialRadioButtons.prototype, "name", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialRadioButtons.prototype, "typeOfData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialRadioButtons.prototype, "readOnly", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialRadioButtons.prototype, "help", void 0);
tslib_1.__decorate([
Option('comparator'),
tslib_1.__metadata("design:type", Object)
], MaterialRadioButtons.prototype, "dataComparator", void 0);
tslib_1.__decorate([
Option(),
I18N(),
tslib_1.__metadata("design:type", Array)
], MaterialRadioButtons.prototype, "items", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", String)
], MaterialRadioButtons.prototype, "description", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialRadioButtons.prototype, "value", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialRadioButtons.prototype, "labelPosition", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialRadioButtons.prototype, "disableRipple", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", MatRadioButton)
], MaterialRadioButtons.prototype, "selected", void 0);
tslib_1.__decorate([
Option('vertical'),
tslib_1.__metadata("design:type", Boolean)
], MaterialRadioButtons.prototype, "vertical", void 0);
tslib_1.__decorate([
Option('load'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "loadEvent", void 0);
tslib_1.__decorate([
Option('startValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "startValidateEvent", void 0);
tslib_1.__decorate([
Option('endValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "endValidateEvent", void 0);
tslib_1.__decorate([
Option('beforeFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "beforeFocusEvent", void 0);
tslib_1.__decorate([
Option('focus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "focusEvent", void 0);
tslib_1.__decorate([
Option('beforeLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "beforeLostFocusEvent", void 0);
tslib_1.__decorate([
Option('lostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "lostFocusEvent", void 0);
tslib_1.__decorate([
Option('beforeChange'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "beforeChangeEvent", void 0);
tslib_1.__decorate([
Option('change'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "changeEvent", void 0);
tslib_1.__decorate([
Option('beforeSelect'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "beforeSelectEvent", void 0);
tslib_1.__decorate([
Option('select'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "selectEvent", void 0);
tslib_1.__decorate([
Option('beforeClick'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "beforeClickEvent", void 0);
tslib_1.__decorate([
Option('click'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialRadioButtons.prototype, "clickEvent", void 0);
return MaterialRadioButtons;
}(SimpleRadioButtons));
export { MaterialRadioButtons };
function MaterialRadioButtons_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
MaterialRadioButtons.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
MaterialRadioButtons.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
MaterialRadioButtons.propDecorators;
/** @type {?} */
MaterialRadioButtons.TYPE_NAME;
/** @type {?} */
MaterialRadioButtons.prototype.dataParent;
/** @type {?} */
MaterialRadioButtons.prototype.ignoreParentData;
/** @type {?} */
MaterialRadioButtons.prototype.data;
/** @type {?} */
MaterialRadioButtons.prototype.ignoreParentDisabled;
/** @type {?} */
MaterialRadioButtons.prototype.delegateHistory;
/** @type {?} */
MaterialRadioButtons.prototype.onDisabled;
/** @type {?} */
MaterialRadioButtons.prototype.onEnabled;
/** @type {?} */
MaterialRadioButtons.prototype.loadingEnabled;
/** @type {?} */
MaterialRadioButtons.prototype.i18nKey;
/** @type {?} */
MaterialRadioButtons.prototype.bypass;
/** @type {?} */
MaterialRadioButtons.prototype.options;
/** @type {?} */
MaterialRadioButtons.prototype.disabled;
/** @type {?} */
MaterialRadioButtons.prototype.field;
/** @type {?} */
MaterialRadioButtons.prototype.name;
/** @type {?} */
MaterialRadioButtons.prototype.typeOfData;
/** @type {?} */
MaterialRadioButtons.prototype.readOnly;
/** @type {?} */
MaterialRadioButtons.prototype.help;
/** @type {?} */
MaterialRadioButtons.prototype.dataComparator;
/** @type {?} */
MaterialRadioButtons.prototype.items;
/** @type {?} */
MaterialRadioButtons.prototype.description;
/** @type {?} */
MaterialRadioButtons.prototype.value;
/** @type {?} */
MaterialRadioButtons.prototype.labelPosition;
/** @type {?} */
MaterialRadioButtons.prototype.disableRipple;
/** @type {?} */
MaterialRadioButtons.prototype.selected;
/** @type {?} */
MaterialRadioButtons.prototype.vertical;
/** @type {?} */
MaterialRadioButtons.prototype.formControl;
/** @type {?} */
MaterialRadioButtons.prototype.loadEvent;
/** @type {?} */
MaterialRadioButtons.prototype.startValidateEvent;
/** @type {?} */
MaterialRadioButtons.prototype.endValidateEvent;
/** @type {?} */
MaterialRadioButtons.prototype.beforeFocusEvent;
/** @type {?} */
MaterialRadioButtons.prototype.focusEvent;
/** @type {?} */
MaterialRadioButtons.prototype.beforeLostFocusEvent;
/** @type {?} */
MaterialRadioButtons.prototype.lostFocusEvent;
/** @type {?} */
MaterialRadioButtons.prototype.beforeChangeEvent;
/** @type {?} */
MaterialRadioButtons.prototype.changeEvent;
/** @type {?} */
MaterialRadioButtons.prototype.beforeSelectEvent;
/** @type {?} */
MaterialRadioButtons.prototype.selectEvent;
/** @type {?} */
MaterialRadioButtons.prototype.beforeClickEvent;
/** @type {?} */
MaterialRadioButtons.prototype.clickEvent;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxSYWRpb0J1dHRvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvdGhlbWUvbWF0ZXJpYWwvY29tcG9uZW50L2RhdGF2aWV3L2lucHV0L01hdGVyaWFsUmFkaW9CdXR0b25zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDMUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUluRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxxQkFBTSxTQUFTLEdBQVcsd0JBQXdCLENBQUM7QUFDbkQscUJBQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDOztJQXNDRyxnREFBa0I7SUE2STFELDhCQUFZLFVBQXNCLEVBQUUsZ0JBQWtDO1FBQXRFLFlBQ0Usa0JBQU0sVUFBVSxFQUFFLGdCQUFnQixDQUFDLFNBZ0JwQztRQWRDLEtBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNDLEtBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FB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LENBQUM7MENBQ00sWUFBWTs7O1FBRXJDLE1BQU0sQ0FBQyxjQUFjLENBQUM7MENBQ00sWUFBWTs7O1FBRXhDLE1BQU0sQ0FBQyxRQUFRLENBQUM7MENBQ00sWUFBWTs7O1FBSWxDLE1BQU0sQ0FBQyxjQUFjLENBQUM7MENBQ00sWUFBWTs7O1FBRXhDLE1BQU0sQ0FBQyxRQUFRLENBQUM7MENBQ00sWUFBWTs7O1FBS2xDLE1BQU0sQ0FBQyxhQUFhLENBQUM7MENBQ00sWUFBWTs7O1FBRXZDLE1BQU0sQ0FBQyxPQUFPLENBQUM7MENBQ00sWUFBWTs7K0JBaE1wQztFQXFEMEMsa0JBQWtCO1NBQS9DLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xyXG5pbXBvcnQgeyBTaW1wbGVSYWRpb0J1dHRvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21wb25lbnQvZGF0YXZpZXcvaW5wdXQvU2ltcGxlUmFkaW9CdXR0b25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV2ZW50VXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZS91dGlscy9FdmVudFV0aWxzJztcclxuaW1wb3J0IHsgQ0xJQ0tfRVZFTlQsIEJFRk9SRV9DTElDS19FVkVOVCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlL0N1c3RvbUV2ZW50VHlwZSdcclxuaW1wb3J0IHsgTmVlZEZvY3VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2UvTmVlZEZvY3VzU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGVmYXVsdFNlbGVjdEl0ZW1Nb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9tb2RlbC9EZWZhdWx0U2VsZWN0SXRlbU1vZGVsJztcclxuaW1wb3J0IHsgSUhhc0RhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21wb25lbnQvSUhhc0RhdGEnO1xyXG5pbXBvcnQgeyBJRGF0YUNvbXBhcmF0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21wb25lbnQvSURhdGFDb21wYXJhdG9yJztcclxuaW1wb3J0IHsgSTE4TiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvci9JMThOLmRlY29yYXRvcic7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJU2VsZWN0SXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBNYXRSYWRpb0J1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcclxuXHJcbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJtYXRlcmlhbC1yYWRpby1idXR0b25zXCI7XHJcbmNvbnN0IERFRkFVTFRfTEFCRUxfUE9TSVRJT04gPSAnYWZ0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcclxuICBzZWxlY3RvcjogVFlQRV9OQU1FLFxyXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cIm1hdGVyaWFsLWlucHV0IG1hdGVyaWFsLXJhZGlvLWJ1dHRvbnNcIj5cclxuICAgIDxtYXQtcmFkaW8tZ3JvdXAgI21jb21wIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIFtwaHhEaXNhYmxlQ29udHJvbF09XCJpc0Rpc2FibGUoKVwiIFtsYWJlbFBvc2l0aW9uXT1cImdldExhYmVsUG9zaXRpb24oKVwiIFt2YWx1ZV09XCJnZXRWYWx1ZSgpXCI+XHJcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgbGV0IGkgPSBpbmRleDtcIiBbY2xhc3MudmVydGljYWxdPVwiaXNWZXJ0aWNhbCgpXCIgW2Rpc2FibGVSaXBwbGVdPVwiaXNEaXNhYmxlUmlwcGxlKClcIiBbY2hlY2tlZF09XCJnZXRTZWxlY3RlZEluZGV4KCk9PT1pXCIgW3ZhbHVlXT1cIml0ZW0uZ2V0VmFsdWUoKVwiIChjbGljayk9XCJvblJhZGlvQ2xpY2tlZChpLCAkZXZlbnQpXCIgKGNoYW5nZSk9XCJfc2V0UmFkaW9TZWxlY3RlZEl0ZW1zKGl0ZW0sICRldmVudClcIj57eyBpdGVtLmxhYmVsIH19PC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInZhbGlkYXRpb25cIiBbc3R5bGUuZGlzcGxheV09XCJnZXRWYWxpZGF0aW9uUmVzdWx0TWVzc2FnZSgpID8gdW5kZWZpbmVkIDogJ25vbmUnXCIgW2NsYXNzLm5vcm1hbF09XCJpc05vcm1hbCgpICYmICFpc0Rpc2FibGVkKClcIiBbY2xhc3Muc3VjY2Vzc109XCJpc1N1Y2Nlc3MoKSAmJiAhaXNEaXNhYmxlZCgpXCIgW2NsYXNzLndhcm5pbmddPVwiaXNXYXJuaW5nKCkgJiYgIWlzRGlzYWJsZWQoKVwiIFtjbGFzcy5lcnJvcl09XCJpc0Vycm9yKCkgJiYgIWlzRGlzYWJsZWQoKVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRWYWxpZGF0aW9uUmVzdWx0TWVzc2FnZSgpXCIgW25nSWZFbHNlXT1cInZhbGlkYXRpb25fZWxzZVwiPlxyXG4gICAgICAgICAgICB7e2dldFZhbGlkYXRpb25SZXN1bHRNZXNzYWdlKCkgfCBwaHhfdGV4dH19XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3ZhbGlkYXRpb25fZWxzZT5cclxuICAgICAgICAgICAgPCEtLSBXZSd2ZSB0byBwdXQgd2hpdGVzcGFjZSBpZiB0aGVyZSBpcyBubyB2YWxpZGF0aW9uIG1zZyB0byBwcmV2ZW50IGVtcHR5IGRvbSAtLT5cclxuICAgICAgICAgICAgPCEtLSBzaW5jZSBpZiB2YWxpZGF0ZSBtc2cncyA8ZGl2PiBkb20gaXMgZW1wdHksIHRoZSBjb21wb25lbnQgcG9zaXRpb25pbmcgLS0+XHJcbiAgICAgICAgICAgIDwhLS0gd2lsbCBiZSBtaXNwbGFjZWQuIC0tPlxyXG4gICAgICAgICAgICB7eyAnJm5ic3A7JyB9fVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiIFtzdHlsZS5kaXNwbGF5XT1cImdldFZhbGlkYXRpb25SZXN1bHRNZXNzYWdlKCkgPyAnbm9uZScgOiB1bmRlZmluZWRcIiBbY2xhc3Mubm9ybWFsXT1cImlzTm9ybWFsKCkgJiYgIWlzRGlzYWJsZWQoKVwiIFtjbGFzcy5zdWNjZXNzXT1cImlzU3VjY2VzcygpICYmICFpc0Rpc2FibGVkKClcIiBbY2xhc3Mud2FybmluZ109XCJpc1dhcm5pbmcoKSAmJiAhaXNEaXNhYmxlZCgpXCIgW2NsYXNzLmVycm9yXT1cImlzRXJyb3IoKSAmJiAhaXNEaXNhYmxlZCgpXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldERlc2NyaXB0aW9uKClcIiBbbmdJZkVsc2VdPVwiZGVzY3JpcHRpb25fZWxzZVwiPlxyXG4gICAgICAgICAgICB7eyBnZXREZXNjcmlwdGlvbigpIHwgcGh4X3RleHQgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVzY3JpcHRpb25fZWxzZT5cclxuICAgICAgICAgICAgPCEtLSBXZSd2ZSB0byBwdXQgd2hpdGVzcGFjZSBpZiB0aGVyZSBpcyBubyBkZXNjcmlwdGlvbiB0byBwcmV2ZW50IGVtcHR5IGRvbSAtLT5cclxuICAgICAgICAgICAgPCEtLSBzaW5jZSBpZiBkZXNjcmlwdGlvbidzIDxkaXY+IGRvbSBpcyBlbXB0eSwgdGhlIGNvbXBvbmVudCBwb3NpdGlvbmluZyAtLT5cclxuICAgICAgICAgICAgPCEtLSB3aWxsIGJlIG1pc3BsYWNlZC4gLS0+XHJcbiAgICAgICAgICAgIHt7ICcmbmJzcDsnIH19XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImhlbHBcIj5cclxuICAgICAgICB7e2dldEhlbHAoKSB8IHBoeF90ZXh0fX1cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsUmFkaW9CdXR0b25zIGV4dGVuZHMgU2ltcGxlUmFkaW9CdXR0b25zIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcclxuIFxyXG4gIC8vIFJlLWRlY2xhcmUgZmllbGQgdG8gZGVjbGFyZSBuZyBASW5wdXQuXHJcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RIYXNEYXRhXHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGF0YVBhcmVudDogSUhhc0RhdGE7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGF0YTogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBkYXRhOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGVsZWdhdGVIaXN0b3J5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIG9uRGlzYWJsZWQ6IEZ1bmN0aW9uO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIG9uRW5hYmxlZDogRnVuY3Rpb247XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgbG9hZGluZ0VuYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgaTE4bktleTogc3RyaW5nO1xyXG4gIEBJbnB1dCgnaTE4bkJ5cGFzcycpXHJcbiAgQE9wdGlvbignaTE4bkJ5cGFzcycpXHJcbiAgcHJvdGVjdGVkIGJ5cGFzczogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIHByb3RlY3RlZCBvcHRpb25zOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3REYXRhVmlld1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGZpZWxkOiBzdHJpbmc7XHJcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RJbnB1dERhdGFWaWV3XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgbmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIHR5cGVPZkRhdGE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCByZWFkT25seTogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIEBJMThOKClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgaGVscDogYW55O1xyXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0U2VsZWN0SXRlbXNcclxuICBASW5wdXQoJ2NvbXBhcmF0b3InKVxyXG4gIEBPcHRpb24oJ2NvbXBhcmF0b3InKVxyXG4gIHByb3RlY3RlZCBkYXRhQ29tcGFyYXRvcjogSURhdGFDb21wYXJhdG9yPGFueT47XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBASTE4TigpXHJcbiAgcHJvdGVjdGVkIGl0ZW1zOiBEZWZhdWx0U2VsZWN0SXRlbU1vZGVsW107XHJcblxyXG4gIC8vIC0tLSBmcm9tIFNlbGZcclxuICBASTE4TigpXHJcbiAgQE9wdGlvbigpXHJcbiAgQElucHV0KClcclxuICBwcm90ZWN0ZWQgZGVzY3JpcHRpb246IHN0cmluZztcclxuICBASTE4TigpXHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgdmFsdWU6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBsYWJlbFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcic7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGlzYWJsZVJpcHBsZTogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBzZWxlY3RlZDogTWF0UmFkaW9CdXR0b247XHJcbiAgQElucHV0KCd2ZXJ0aWNhbCcpXHJcbiAgQE9wdGlvbigndmVydGljYWwnKVxyXG4gIHByb3RlY3RlZCB2ZXJ0aWNhbDogYm9vbGVhbjtcclxuXHJcbiAgcHVibGljIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcclxuXHJcbiAgLy8gUmUtZGVjbGFyZSBmaWVsZCB0byBkZWNsYXJlIG5nIEBPdXRwdXQuXHJcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RIYXNEYXRhXHJcbiAgQE91dHB1dCgncGh4TG9hZCcpXHJcbiAgQE9wdGlvbignbG9hZCcpXHJcbiAgcHJvdGVjdGVkIGxvYWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3REYXRhVmlld1xyXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SW5wdXREYXRhVmlld1xyXG4gIEBPdXRwdXQoJ3BoeFN0YXJ0VmFsaWRhdGUnKVxyXG4gIEBPcHRpb24oJ3N0YXJ0VmFsaWRhdGUnKVxyXG4gIHByb3RlY3RlZCBzdGFydFZhbGlkYXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPdXRwdXQoJ3BoeEVuZFZhbGlkYXRlJylcclxuICBAT3B0aW9uKCdlbmRWYWxpZGF0ZScpXHJcbiAgcHJvdGVjdGVkIGVuZFZhbGlkYXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUZvY3VzJylcclxuICBAT3B0aW9uKCdiZWZvcmVGb2N1cycpXHJcbiAgcHJvdGVjdGVkIGJlZm9yZUZvY3VzRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPdXRwdXQoJ3BoeEZvY3VzJylcclxuICBAT3B0aW9uKCdmb2N1cycpXHJcbiAgcHJvdGVjdGVkIGZvY3VzRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUxvc3RGb2N1cycpXHJcbiAgQE9wdGlvbignYmVmb3JlTG9zdEZvY3VzJylcclxuICBwcm90ZWN0ZWQgYmVmb3JlTG9zdEZvY3VzRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPdXRwdXQoJ3BoeExvc3RGb2N1cycpXHJcbiAgQE9wdGlvbignbG9zdEZvY3VzJylcclxuICBwcm90ZWN0ZWQgbG9zdEZvY3VzRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUNoYW5nZScpXHJcbiAgQE9wdGlvbignYmVmb3JlQ2hhbmdlJylcclxuICBwcm90ZWN0ZWQgYmVmb3JlQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPdXRwdXQoJ3BoeENoYW5nZScpXHJcbiAgQE9wdGlvbignY2hhbmdlJylcclxuICBwcm90ZWN0ZWQgY2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0U2VsZWN0SXRlbXNcclxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdFNlbGVjdE9uZUl0ZW1cclxuICBAT3V0cHV0KCdwaHhCZWZvcmVTZWxlY3QnKVxyXG4gIEBPcHRpb24oJ2JlZm9yZVNlbGVjdCcpXHJcbiAgcHJvdGVjdGVkIGJlZm9yZVNlbGVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhTZWxlY3QnKVxyXG4gIEBPcHRpb24oJ3NlbGVjdCcpXHJcbiAgcHJvdGVjdGVkIHNlbGVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgLy8gLS0tIGZyb20gU2VsZlxyXG5cclxuICBAT3V0cHV0KCdwaHhCZWZvcmVDbGljaycpXHJcbiAgQE9wdGlvbignYmVmb3JlQ2xpY2snKVxyXG4gIHByb3RlY3RlZCBiZWZvcmVDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhDbGljaycpXHJcbiAgQE9wdGlvbignY2xpY2snKVxyXG4gIHByb3RlY3RlZCBjbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgbmVlZEZvY3VzU2VydmljZTogTmVlZEZvY3VzU2VydmljZSkge1xyXG4gICAgc3VwZXIoZWxlbWVudFJlZiwgbmVlZEZvY3VzU2VydmljZSk7XHJcblxyXG4gICAgdGhpcy5iZWZvcmVDbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgdGhpcy5jbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgdGhpcy5iZWZvcmVGb2N1c0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgdGhpcy5mb2N1c0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgdGhpcy5iZWZvcmVMb3N0Rm9jdXNFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIHRoaXMubG9zdEZvY3VzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICB0aGlzLmJlZm9yZUNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgdGhpcy5jaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgICB0aGlzLmxhYmVsUG9zaXRpb24gPSBERUZBVUxUX0xBQkVMX1BPU0lUSU9OO1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaXNhYmxlUmlwcGxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnZlcnRpY2FsID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICB0aGlzLmluaXRFdmVudEhhbmRsZXJzKCk7XHJcbiAgICB9LDIwKVxyXG4gIH0gXHJcblxyXG4gIHByaXZhdGUgaW5pdEV2ZW50SGFuZGxlcnMoKTogdm9pZCB7XHJcbiAgICAkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5maW5kKCdpbnB1dC5tYXQtcmFkaW8taW5wdXQnKS5mb2N1cygoJGV2ZW50KT0+e1xyXG4gICAgICB0aGlzLm9uRm9jdXNpbmcoJGV2ZW50KTtcclxuICAgIH0pO1xyXG5cclxuICAgICQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJ2lucHV0Lm1hdC1yYWRpby1pbnB1dCcpLmJsdXIoKCRldmVudCk9PntcclxuICAgICAgdGhpcy5vbkxvc3RGb2N1c2luZygkZXZlbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VmFsdWUoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc0Rpc2FibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREaXNhYmxlKGRpc2FibGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzRGlzYWJsZVJpcHBsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc2FibGVSaXBwbGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RGlzYWJsZVJpcHBsZShkaXNhYmxlUmlwcGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVSaXBwbGUgPSBkaXNhYmxlUmlwcGxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldExhYmVsUG9zaXRpb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmxhYmVsUG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0TGFiZWxQb3NpdGlvbihwb3NpdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZi