com.phloxui
Version:
PhloxUI Ng2+ Framework
342 lines (341 loc) • 20.8 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 { AbstracFileSelector } from "./AbstracFileSelector";
import { NeedFocusService } from "../../../service/NeedFocusService.service";
import { Option } from '../../../decorator/Option.decorator';
import { I18N } from '../../../decorator/I18N.decorator';
const /** @type {?} */ TYPE_NAME = "phx-file-selector";
export class FileSelector extends AbstracFileSelector {
/**
* @param {?} elementRef
* @param {?} needFocusService
*/
constructor(elementRef, needFocusService) {
super(elementRef, needFocusService);
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
}
/**
* @return {?}
*/
getAllowMultipleSelect() {
return this.allowMultipleSelect;
}
/**
* @param {?} file
* @return {?}
*/
handleFiles(file) {
if (this.isAccept(file.files)) {
this.addFiles(file.files, event);
}
}
/**
* @return {?}
*/
openFileSelector() {
document.getElementById('file').click();
}
/**
* @param {?} inputValue
* @param {?} results
* @return {?}
*/
onValidationEnd(inputValue, results) {
return;
}
/**
* @param {?} data
* @param {?} inputVal
* @return {?}
*/
onDataChange(data, inputVal) {
// throw new Error("Method not implemented.");
}
/**
* @param {?} $event
* @return {?}
*/
doFocus($event) {
// throw new Error("Method not implemented.");
}
/**
* @param {?} $event
* @return {?}
*/
doLostFocus($event) {
// throw new Error("Method not implemented.");
}
/**
* @return {?}
*/
isSelfDataDirty() {
return false;
// throw new Error("Method not implemented.");
}
/**
* @param {?} data
* @return {?}
*/
selfSaveData(data) {
// throw new Error("Method not implemented.");
}
/**
* @return {?}
*/
selfResetData() {
// throw new Error("Method not implemented.");
}
}
FileSelector.TYPE_NAME = TYPE_NAME;
FileSelector.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<input #file type="file" [multiple]="getAllowMultipleSelect()" (change)="handleFiles(file)">
`
},] },
];
/** @nocollapse */
FileSelector.ctorParameters = () => [
{ type: ElementRef, },
{ type: NeedFocusService, },
];
FileSelector.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 },],
"maxFilesize": [{ type: Input },],
"allowMultipleSelect": [{ type: Input },],
"fileTypes": [{ 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',] },],
"beforeSelectEvent": [{ type: Output, args: ['phxBeforeSelect',] },],
"selectEvent": [{ type: Output, args: ['phxSelect',] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], FileSelector.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], FileSelector.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], FileSelector.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], FileSelector.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], FileSelector.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], FileSelector.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], FileSelector.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], FileSelector.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], FileSelector.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], FileSelector.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], FileSelector.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], FileSelector.prototype, "field", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], FileSelector.prototype, "name", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], FileSelector.prototype, "typeOfData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], FileSelector.prototype, "readOnly", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], FileSelector.prototype, "help", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Number)
], FileSelector.prototype, "maxFilesize", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], FileSelector.prototype, "allowMultipleSelect", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Array)
], FileSelector.prototype, "fileTypes", void 0);
tslib_1.__decorate([
Option('load'),
tslib_1.__metadata("design:type", EventEmitter)
], FileSelector.prototype, "loadEvent", void 0);
tslib_1.__decorate([
Option('startValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], FileSelector.prototype, "startValidateEvent", void 0);
tslib_1.__decorate([
Option('endValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], FileSelector.prototype, "endValidateEvent", void 0);
tslib_1.__decorate([
Option('beforeFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], FileSelector.prototype, "beforeFocusEvent", void 0);
tslib_1.__decorate([
Option('focus'),
tslib_1.__metadata("design:type", EventEmitter)
], FileSelector.prototype, "focusEvent", void 0);
tslib_1.__decorate([
Option('beforeLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], FileSelector.prototype, "beforeLostFocusEvent", void 0);
tslib_1.__decorate([
Option('lostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], FileSelector.prototype, "lostFocusEvent", void 0);
tslib_1.__decorate([
Option('beforeChange'),
tslib_1.__metadata("design:type", EventEmitter)
], FileSelector.prototype, "beforeChangeEvent", void 0);
tslib_1.__decorate([
Option('change'),
tslib_1.__metadata("design:type", EventEmitter)
], FileSelector.prototype, "changeEvent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", EventEmitter)
], FileSelector.prototype, "beforeSelectEvent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", EventEmitter)
], FileSelector.prototype, "selectEvent", void 0);
function FileSelector_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
FileSelector.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
FileSelector.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
FileSelector.propDecorators;
/** @type {?} */
FileSelector.TYPE_NAME;
/** @type {?} */
FileSelector.prototype.dataParent;
/** @type {?} */
FileSelector.prototype.ignoreParentData;
/** @type {?} */
FileSelector.prototype.data;
/** @type {?} */
FileSelector.prototype.ignoreParentDisabled;
/** @type {?} */
FileSelector.prototype.delegateHistory;
/** @type {?} */
FileSelector.prototype.onDisabled;
/** @type {?} */
FileSelector.prototype.onEnabled;
/** @type {?} */
FileSelector.prototype.loadingEnabled;
/** @type {?} */
FileSelector.prototype.i18nKey;
/** @type {?} */
FileSelector.prototype.bypass;
/** @type {?} */
FileSelector.prototype.options;
/** @type {?} */
FileSelector.prototype.disabled;
/** @type {?} */
FileSelector.prototype.field;
/** @type {?} */
FileSelector.prototype.name;
/** @type {?} */
FileSelector.prototype.typeOfData;
/** @type {?} */
FileSelector.prototype.readOnly;
/** @type {?} */
FileSelector.prototype.help;
/** @type {?} */
FileSelector.prototype.maxFilesize;
/** @type {?} */
FileSelector.prototype.allowMultipleSelect;
/** @type {?} */
FileSelector.prototype.fileTypes;
/** @type {?} */
FileSelector.prototype.loadEvent;
/** @type {?} */
FileSelector.prototype.startValidateEvent;
/** @type {?} */
FileSelector.prototype.endValidateEvent;
/** @type {?} */
FileSelector.prototype.beforeFocusEvent;
/** @type {?} */
FileSelector.prototype.focusEvent;
/** @type {?} */
FileSelector.prototype.beforeLostFocusEvent;
/** @type {?} */
FileSelector.prototype.lostFocusEvent;
/** @type {?} */
FileSelector.prototype.beforeChangeEvent;
/** @type {?} */
FileSelector.prototype.changeEvent;
/** @type {?} */
FileSelector.prototype.beforeSelectEvent;
/** @type {?} */
FileSelector.prototype.selectEvent;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZVNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9GaWxlU2VsZWN0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFVLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUd6RCx1QkFBTSxTQUFTLEdBQVcsbUJBQW1CLENBQUM7QUFROUMsTUFBTSxtQkFBb0IsU0FBUSxtQkFBbUI7Ozs7O0lBNkduRCxZQUFZLFVBQXNCLEVBQUUsZ0JBQWtDO1FBQ3BFLEtBQUssQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztLQUNyQzs7OztJQUVNLFFBQVE7UUFDYixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Ozs7O0lBR1osc0JBQXNCO1FBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7Ozs7OztJQUc3QixXQUFXLENBQUMsSUFBUztRQUN4QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3BDOzs7OztJQUdFLGdCQUFnQjtRQUNuQixRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDOzs7Ozs7O0lBR2xDLGVBQWUsQ0FBQyxVQUFlLEVBQUUsT0FBMkI7UUFDcEUsTUFBTSxDQUFDO0tBQ1I7Ozs7OztJQUVTLFlBQVksQ0FBQyxJQUFTLEVBQUUsUUFBYTs7S0FFOUM7Ozs7O0lBRVMsT0FBTyxDQUFDLE1BQWE7O0tBRTlCOzs7OztJQUVTLFdBQVcsQ0FBQyxNQUFhOztLQUVsQzs7OztJQUVNLGVBQWU7UUFDcEIsTUFBTSxDQUFDLEtBQUssQ0FBQzs7Ozs7OztJQUlSLFlBQVksQ0FBQyxJQUFTOzs7Ozs7SUFJdEIsYUFBYTs7Ozt5QkFqRHVCLFNBQVM7O1lBakhyRCxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNuQixRQUFRLEVBQUUsU0FBUztnQkFDbkIsUUFBUSxFQUFFO0NBQ1g7YUFDQTs7OztZQWYyQixVQUFVO1lBRTdCLGdCQUFnQjs7OzJCQWtCdEIsS0FBSztpQ0FHTCxLQUFLO3FCQUdMLEtBQUs7cUNBR0wsS0FBSztnQ0FHTCxLQUFLOzJCQUdMLEtBQUs7MEJBR0wsS0FBSzsrQkFHTCxLQUFLO3dCQUdMLEtBQUs7dUJBR0wsS0FBSyxTQUFDLFlBQVk7d0JBR2xCLEtBQUs7eUJBRUwsS0FBSztzQkFJTCxLQUFLO3FCQUlMLEtBQUs7MkJBR0wsS0FBSzt5QkFHTCxLQUFLO3FCQUdMLEtBQUs7NEJBS0wsS0FBSztvQ0FHTCxLQUFLOzBCQUdMLEtBQUs7MEJBTUwsTUFBTSxTQUFDLFNBQVM7bUNBS2hCLE1BQU0sU0FBQyxrQkFBa0I7aUNBR3pCLE1BQU0sU0FBQyxnQkFBZ0I7aUNBR3ZCLE1BQU0sU0FBQyxnQkFBZ0I7MkJBR3ZCLE1BQU0sU0FBQyxVQUFVO3FDQUdqQixNQUFNLFNBQUMsb0JBQW9COytCQUczQixNQUFNLFNBQUMsY0FBYztrQ0FHckIsTUFBTSxTQUFDLGlCQUFpQjs0QkFHeEIsTUFBTSxTQUFDLFdBQVc7a0NBSWxCLE1BQU0sU0FBQyxpQkFBaUI7NEJBR3hCLE1BQU0sU0FBQyxXQUFXOzs7SUFsR2xCLE1BQU0sRUFBRTs7OztJQUdSLE1BQU0sRUFBRTs7OztJQUdSLE1BQU0sRUFBRTs7OztJQUdSLE1BQU0sRUFBRTs7OztJQUdSLE1BQU0sRUFBRTs7OztJQUdSLE1BQU0sRUFBRTtzQ0FDYSxRQUFROzs7SUFFN0IsTUFBTSxFQUFFO3NDQUNZLFFBQVE7OztJQUU1QixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLENBQUMsWUFBWSxDQUFDOzs7O0lBS3BCLE1BQU0sRUFBRTs7OztJQUlSLE1BQU0sRUFBRTs7OztJQUlSLE1BQU0sRUFBRTs7OztJQUdSLE1BQU0sRUFBRTs7OztJQUdSLE1BQU0sRUFBRTs7OztJQUdSLElBQUksRUFBRTtJQUNOLE1BQU0sRUFBRTs7OztJQUlSLE1BQU0sRUFBRTs7OztJQUdSLE1BQU0sRUFBRTs7OztJQUdSLE1BQU0sRUFBRTs7OztJQU1SLE1BQU0sQ0FBQyxNQUFNLENBQUM7c0NBQ00sWUFBWTs7O0lBSWhDLE1BQU0sQ0FBQyxlQUFlLENBQUM7c0NBQ00sWUFBWTs7O0lBRXpDLE1BQU0sQ0FBQyxhQUFhLENBQUM7c0NBQ00sWUFBWTs7O0lBRXZDLE1BQU0sQ0FBQyxhQUFhLENBQUM7c0NBQ00sWUFBWTs7O0lBRXZDLE1BQU0sQ0FBQyxPQUFPLENBQUM7c0NBQ00sWUFBWTs7O0lBRWpDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFM0MsTUFBTSxDQUFDLFdBQVcsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFckMsTUFBTSxDQUFDLGNBQWMsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQztzQ0FDTSxZQUFZOzs7SUFHbEMsTUFBTSxFQUFFO3NDQUNvQixZQUFZOzs7SUFFeEMsTUFBTSxFQUFFO3NDQUNjLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkluaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFic3RyYWNGaWxlU2VsZWN0b3IgfSBmcm9tIFwiLi9BYnN0cmFjRmlsZVNlbGVjdG9yXCI7XG5pbXBvcnQgeyBOZWVkRm9jdXNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvTmVlZEZvY3VzU2VydmljZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSBcIi4uLy4uL21vZGVsL1ZhbGlkYXRpb25SZXN1bHRcIjtcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvci9PcHRpb24uZGVjb3JhdG9yJztcbmltcG9ydCB7IEkxOE4gfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3IvSTE4Ti5kZWNvcmF0b3InO1xuaW1wb3J0IHsgSUhhc0RhdGEgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnQvSUhhc0RhdGEnO1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwicGh4LWZpbGUtc2VsZWN0b3JcIjtcblxuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiBUWVBFX05BTUUsXG4gIHRlbXBsYXRlOiBgPGlucHV0ICNmaWxlIHR5cGU9XCJmaWxlXCIgW211bHRpcGxlXT1cImdldEFsbG93TXVsdGlwbGVTZWxlY3QoKVwiIChjaGFuZ2UpPVwiaGFuZGxlRmlsZXMoZmlsZSlcIj5cclxuYFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlU2VsZWN0b3IgZXh0ZW5kcyBBYnN0cmFjRmlsZVNlbGVjdG9yIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvLyBSZS1kZWNsYXJlIGZpZWxkIHRvIGRlY2xhcmUgbmcgQElucHV0LlxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdEhhc0RhdGFcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkYXRhUGFyZW50OiBJSGFzRGF0YTtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBpZ25vcmVQYXJlbnREYXRhOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRhdGE6IGFueTtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBpZ25vcmVQYXJlbnREaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkZWxlZ2F0ZUhpc3Rvcnk6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgb25EaXNhYmxlZDogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgb25FbmFibGVkOiBGdW5jdGlvbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBsb2FkaW5nRW5hYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBpMThuS2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgnaTE4bkJ5cGFzcycpXG4gIEBPcHRpb24oJ2kxOG5CeXBhc3MnKVxuICBwcm90ZWN0ZWQgYnlwYXNzOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgb3B0aW9uczogYW55O1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRpc2FibGVkOiBib29sZWFuO1xuICAvLyAtLS0gZnJvbSBBYnN0cmFjdERhdGFWaWV3XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZmllbGQ6IHN0cmluZztcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RJbnB1dERhdGFWaWV3XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIHR5cGVPZkRhdGE6IHN0cmluZztcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCByZWFkT25seTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQEkxOE4oKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGhlbHA6IGFueTtcbiAgLy8gLS0tIGZyb20gQWJzdHJhY0ZpbGVTZWxlY3RvclxuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIG1heEZpbGVzaXplOiBudW1iZXI7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgYWxsb3dNdWx0aXBsZVNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBmaWxlVHlwZXM6IHN0cmluZ1tdO1xuXG4gIC8vIFJlLWRlY2xhcmUgZmllbGQgdG8gZGVjbGFyZSBuZyBAT3V0cHV0LlxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdEhhc0RhdGFcbiAgQE91dHB1dCgncGh4TG9hZCcpXG4gIEBPcHRpb24oJ2xvYWQnKVxuICBwcm90ZWN0ZWQgbG9hZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3REYXRhVmlld1xuICAvLyAtLS0gZnJvbSBBYnN0cmFjdElucHV0RGF0YVZpZXdcbiAgQE91dHB1dCgncGh4U3RhcnRWYWxpZGF0ZScpXG4gIEBPcHRpb24oJ3N0YXJ0VmFsaWRhdGUnKVxuICBwcm90ZWN0ZWQgc3RhcnRWYWxpZGF0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4RW5kVmFsaWRhdGUnKVxuICBAT3B0aW9uKCdlbmRWYWxpZGF0ZScpXG4gIHByb3RlY3RlZCBlbmRWYWxpZGF0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4QmVmb3JlRm9jdXMnKVxuICBAT3B0aW9uKCdiZWZvcmVGb2N1cycpXG4gIHByb3RlY3RlZCBiZWZvcmVGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4Rm9jdXMnKVxuICBAT3B0aW9uKCdmb2N1cycpXG4gIHByb3RlY3RlZCBmb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4QmVmb3JlTG9zdEZvY3VzJylcbiAgQE9wdGlvbignYmVmb3JlTG9zdEZvY3VzJylcbiAgcHJvdGVjdGVkIGJlZm9yZUxvc3RGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4TG9zdEZvY3VzJylcbiAgQE9wdGlvbignbG9zdEZvY3VzJylcbiAgcHJvdGVjdGVkIGxvc3RGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4QmVmb3JlQ2hhbmdlJylcbiAgQE9wdGlvbignYmVmb3JlQ2hhbmdlJylcbiAgcHJvdGVjdGVkIGJlZm9yZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4Q2hhbmdlJylcbiAgQE9wdGlvbignY2hhbmdlJylcbiAgcHJvdGVjdGVkIGNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgLy8gLS0tIGZyb20gQWJzdHJhY0ZpbGVTZWxlY3RvclxuICBAT3V0cHV0KCdwaHhCZWZvcmVTZWxlY3QnKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGJlZm9yZVNlbGVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4U2VsZWN0JylcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBzZWxlY3RFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBuZWVkRm9jdXNTZXJ2aWNlOiBOZWVkRm9jdXNTZXJ2aWNlKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZiwgbmVlZEZvY3VzU2VydmljZSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxvd011bHRpcGxlU2VsZWN0KCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuYWxsb3dNdWx0aXBsZVNlbGVjdDtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVGaWxlcyhmaWxlOiBhbnkpIHtcbiAgICAgIGlmICh0aGlzLmlzQWNjZXB0KGZpbGUuZmlsZXMpKSB7XG4gICAgICAgICAgdGhpcy5hZGRGaWxlcyhmaWxlLmZpbGVzLCBldmVudCk7XG4gICAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbkZpbGVTZWxlY3RvcigpIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlJykuY2xpY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblZhbGlkYXRpb25FbmQoaW5wdXRWYWx1ZTogYW55LCByZXN1bHRzOiBWYWxpZGF0aW9uUmVzdWx0W10pOiB2b2lkIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBwcm90ZWN0ZWQgb25EYXRhQ2hhbmdlKGRhdGE6IGFueSwgaW5wdXRWYWw6IGFueSk6IHZvaWQge1xuICAgIC8vIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRvRm9jdXMoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIC8vIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRvTG9zdEZvY3VzKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAvLyB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGZEYXRhRGlydHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICAgIC8vIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICB9XG5cbiAgcHVibGljIHNlbGZTYXZlRGF0YShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICAvLyB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmUmVzZXREYXRhKCk6IHZvaWQge1xuICAgIC8vIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICB9XG5cbn1cbiJdfQ==