com.phloxui
Version:
PhloxUI Ng2+ Framework
613 lines (612 loc) • 41.2 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 { I18N, Option } from '../../decorator/decorators';
import { AbstractTableComponent } from './AbstractTableComponent';
var /** @type {?} */ TYPE_NAME = "phx-table-body";
var DefaultTableBody = /** @class */ (function (_super) {
tslib_1.__extends(DefaultTableBody, _super);
function DefaultTableBody(elementRef) {
var _this = _super.call(this, elementRef) || this;
_this.rowDragEvent = new EventEmitter();
_this.rowDragStartEvent = new EventEmitter();
_this.rowDragEndEvent = new EventEmitter();
_this.rowDragEnterEvent = new EventEmitter();
_this.rowDragOverEvent = new EventEmitter();
_this.rowDragLeaveEvent = new EventEmitter();
_this.rowDropEvent = new EventEmitter();
_this.rowDropAcceptedEvent = new EventEmitter();
_this.rowDropRejectedEvent = new EventEmitter();
return _this;
}
// Implement
/**
* @param {?} table
* @return {?}
*/
DefaultTableBody.prototype.doInitialize = /**
* @param {?} table
* @return {?}
*/
function (table) {
};
/**
* @return {?}
*/
DefaultTableBody.prototype.isSelfDataDirty = /**
* @return {?}
*/
function () {
return false;
};
/**
* @return {?}
*/
DefaultTableBody.prototype.selfResetData = /**
* @return {?}
*/
function () {
};
/**
* @param {?} data
* @return {?}
*/
DefaultTableBody.prototype.selfSaveData = /**
* @param {?} data
* @return {?}
*/
function (data) {
};
/**
* @param {?} rows
* @return {?}
*/
DefaultTableBody.prototype.render = /**
* @param {?} rows
* @return {?}
*/
function (rows) {
var _this = this;
return new Promise(function (resolve, reject) {
try {
_this.rows = rows;
resolve();
}
catch (/** @type {?} */ e) {
reject(e);
}
});
};
/**
* @return {?}
*/
DefaultTableBody.prototype.getRowControllers = /**
* @return {?}
*/
function () {
return this.rows;
};
/**
* @return {?}
*/
DefaultTableBody.prototype.getRowDragEvent = /**
* @return {?}
*/
function () {
return this.rowDragEvent;
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.setRowDragEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.rowDragEvent = event;
};
/**
* @return {?}
*/
DefaultTableBody.prototype.getRowDragStartEvent = /**
* @return {?}
*/
function () {
return this.rowDragStartEvent;
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.setRowDragStartEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.rowDragStartEvent = event;
};
/**
* @return {?}
*/
DefaultTableBody.prototype.getRowDragEndEvent = /**
* @return {?}
*/
function () {
return this.rowDragEndEvent;
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.setRowDragEndEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.rowDragEndEvent = event;
};
/**
* @return {?}
*/
DefaultTableBody.prototype.getRowDragEnterEvent = /**
* @return {?}
*/
function () {
return this.rowDragEnterEvent;
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.setRowDragEnterEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.rowDragEnterEvent = event;
};
/**
* @return {?}
*/
DefaultTableBody.prototype.getRowDragOverEvent = /**
* @return {?}
*/
function () {
return this.rowDragOverEvent;
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.setRowDragOverEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.rowDragOverEvent = event;
};
/**
* @return {?}
*/
DefaultTableBody.prototype.getRowDragLeaveEvent = /**
* @return {?}
*/
function () {
return this.rowDragLeaveEvent;
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.setRowDragLeaveEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.rowDragLeaveEvent = event;
};
/**
* @return {?}
*/
DefaultTableBody.prototype.getRowDropEvent = /**
* @return {?}
*/
function () {
return this.rowDropEvent;
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.setRowDropEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.rowDropEvent = event;
};
/**
* @return {?}
*/
DefaultTableBody.prototype.getRowDropAcceptedEvent = /**
* @return {?}
*/
function () {
return this.rowDropAcceptedEvent;
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.setRowDropAcceptedEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.rowDropAcceptedEvent = event;
};
/**
* @return {?}
*/
DefaultTableBody.prototype.getRowDropRejectedEvent = /**
* @return {?}
*/
function () {
return this.rowDropRejectedEvent;
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.setRowDropRejectedEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.rowDropRejectedEvent = event;
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.onDrag = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.rowDragEvent !== null && this.rowDragEvent !== undefined) {
this.rowDragEvent.emit(event);
}
var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent());
if (parent !== null && typeof parent.onDrag === 'function') {
parent.onDrag(event);
}
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.onDragStart = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.rowDragStartEvent !== null && this.rowDragStartEvent !== undefined) {
this.rowDragStartEvent.emit(event);
}
var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent());
if (parent !== null && typeof parent.onDragStart === 'function') {
parent.onDragStart(event);
}
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.onDragEnd = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.rowDragEndEvent !== null && this.rowDragEndEvent !== undefined) {
this.rowDragEndEvent.emit(event);
}
var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent());
if (parent !== null && typeof parent.onDragEnd === 'function') {
parent.onDragEnd(event);
}
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.onDragEnter = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.rowDragEnterEvent !== null && this.rowDragEnterEvent !== undefined) {
this.rowDragEnterEvent.emit(event);
}
var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent());
if (parent !== null && typeof parent.onDragEnter === 'function') {
parent.onDragEnter(event);
}
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.onDragOver = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.rowDragOverEvent !== null && this.rowDragOverEvent !== undefined) {
this.rowDragOverEvent.emit(event);
}
var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent());
if (parent !== null && typeof parent.onDragOver === 'function') {
parent.onDragOver(event);
}
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.onDragLeave = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.rowDragLeaveEvent !== null && this.rowDragLeaveEvent !== undefined) {
this.rowDragLeaveEvent.emit(event);
}
var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent());
if (parent !== null && typeof parent.onDragLeave === 'function') {
parent.onDragLeave(event);
}
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.onDrop = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.rowDropEvent !== null && this.rowDropEvent !== undefined) {
this.rowDropEvent.emit(event);
}
var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent());
if (parent !== null && typeof parent.onDrop === 'function') {
parent.onDrop(event);
}
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.onDropAccepted = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.rowDropAcceptedEvent !== null && this.rowDropAcceptedEvent !== undefined) {
this.rowDropAcceptedEvent.emit(event);
}
var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent());
if (parent !== null && typeof parent.onDropAccepted === 'function') {
parent.onDropAccepted(event);
}
};
/**
* @param {?} event
* @return {?}
*/
DefaultTableBody.prototype.onDropRejected = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (this.rowDropRejectedEvent !== null && this.rowDropRejectedEvent !== undefined) {
this.rowDropRejectedEvent.emit(event);
}
var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent());
if (parent !== null && typeof parent.onDropRejected === 'function') {
parent.onDropRejected(event);
}
};
DefaultTableBody.TYPE_NAME = TYPE_NAME;
DefaultTableBody.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<phx-component-wrapper [type]=\"getTable().getModel().getRowModel().getComponentType()\"\n [options]=\"getTable().getModel().getRowModel().getComponentOptions()\"\n [dataParent]=\"this\"\n [ignoreParentData]=\"true\"\n [handler]=\"row.wrapperHandler\"\n [data]=\"row.data\"\n [class]=\"'phx-table-row' + (getTable().getModel().getRowModel().getCSSClass() ? ' ' + getTable().getModel().getRowModel().getCSSClass() : '')\"\n *ngFor=\"let row of getRowControllers(); let idx = index\">\n</phx-component-wrapper>\n"
},] },
];
/** @nocollapse */
DefaultTableBody.ctorParameters = function () { return [
{ type: ElementRef, },
]; };
DefaultTableBody.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 },],
"help": [{ type: Input },],
"rowDragEvent": [{ type: Output, args: ['phxRowDrag',] },],
"rowDragStartEvent": [{ type: Output, args: ['phxRowDragStart',] },],
"rowDragEndEvent": [{ type: Output, args: ['phxRowDragEnd',] },],
"rowDragEnterEvent": [{ type: Output, args: ['phxRowDragEnter',] },],
"rowDragOverEvent": [{ type: Output, args: ['phxRowDragOver',] },],
"rowDragLeaveEvent": [{ type: Output, args: ['phxRowDragLeave',] },],
"rowDropEvent": [{ type: Output, args: ['phxRowDrop',] },],
"rowDropAcceptedEvent": [{ type: Output, args: ['phxRowDropAccepted',] },],
"rowDropRejectedEvent": [{ type: Output, args: ['phxRowDropRejected',] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], DefaultTableBody.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], DefaultTableBody.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], DefaultTableBody.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], DefaultTableBody.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], DefaultTableBody.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], DefaultTableBody.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], DefaultTableBody.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], DefaultTableBody.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], DefaultTableBody.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], DefaultTableBody.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], DefaultTableBody.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
I18N(),
tslib_1.__metadata("design:type", Object)
], DefaultTableBody.prototype, "help", void 0);
tslib_1.__decorate([
I18N(),
tslib_1.__metadata("design:type", Array)
], DefaultTableBody.prototype, "rows", void 0);
tslib_1.__decorate([
Option('rowDrag'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultTableBody.prototype, "rowDragEvent", void 0);
tslib_1.__decorate([
Option('rowDragStart'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultTableBody.prototype, "rowDragStartEvent", void 0);
tslib_1.__decorate([
Option('rowDragEnd'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultTableBody.prototype, "rowDragEndEvent", void 0);
tslib_1.__decorate([
Option('rowDragEnter'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultTableBody.prototype, "rowDragEnterEvent", void 0);
tslib_1.__decorate([
Option('rowDragOver'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultTableBody.prototype, "rowDragOverEvent", void 0);
tslib_1.__decorate([
Option('rowDragLeave'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultTableBody.prototype, "rowDragLeaveEvent", void 0);
tslib_1.__decorate([
Option('rowDrop'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultTableBody.prototype, "rowDropEvent", void 0);
tslib_1.__decorate([
Option('rowDropAccepted'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultTableBody.prototype, "rowDropAcceptedEvent", void 0);
tslib_1.__decorate([
Option('rowDropRejected'),
tslib_1.__metadata("design:type", EventEmitter)
], DefaultTableBody.prototype, "rowDropRejectedEvent", void 0);
return DefaultTableBody;
}(AbstractTableComponent));
export { DefaultTableBody };
function DefaultTableBody_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
DefaultTableBody.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
DefaultTableBody.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
DefaultTableBody.propDecorators;
/** @type {?} */
DefaultTableBody.TYPE_NAME;
/** @type {?} */
DefaultTableBody.prototype.dataParent;
/** @type {?} */
DefaultTableBody.prototype.ignoreParentData;
/** @type {?} */
DefaultTableBody.prototype.data;
/** @type {?} */
DefaultTableBody.prototype.ignoreParentDisabled;
/** @type {?} */
DefaultTableBody.prototype.delegateHistory;
/** @type {?} */
DefaultTableBody.prototype.onDisabled;
/** @type {?} */
DefaultTableBody.prototype.onEnabled;
/** @type {?} */
DefaultTableBody.prototype.loadingEnabled;
/** @type {?} */
DefaultTableBody.prototype.i18nKey;
/** @type {?} */
DefaultTableBody.prototype.bypass;
/** @type {?} */
DefaultTableBody.prototype.options;
/** @type {?} */
DefaultTableBody.prototype.disabled;
/** @type {?} */
DefaultTableBody.prototype.help;
/** @type {?} */
DefaultTableBody.prototype.rows;
/** @type {?} */
DefaultTableBody.prototype.rowDragEvent;
/** @type {?} */
DefaultTableBody.prototype.rowDragStartEvent;
/** @type {?} */
DefaultTableBody.prototype.rowDragEndEvent;
/** @type {?} */
DefaultTableBody.prototype.rowDragEnterEvent;
/** @type {?} */
DefaultTableBody.prototype.rowDragOverEvent;
/** @type {?} */
DefaultTableBody.prototype.rowDragLeaveEvent;
/** @type {?} */
DefaultTableBody.prototype.rowDropEvent;
/** @type {?} */
DefaultTableBody.prototype.rowDropAcceptedEvent;
/** @type {?} */
DefaultTableBody.prototype.rowDropRejectedEvent;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFRhYmxlQm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvdGFibGUvRGVmYXVsdFRhYmxlQm9keS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBS2xFLHFCQUFNLFNBQVMsR0FBVyxnQkFBZ0IsQ0FBQzs7SUFnQkwsNENBQXNCOzhCQWdGdkMsVUFBc0I7b0JBQ3ZDLGtCQUFNLFVBQVUsQ0FBQztRQUVqQixLQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsS0FBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUMsS0FBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLEtBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNDLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLEtBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxLQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQyxLQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQzs7O0lBR2pELFlBQVk7Ozs7O0lBQ0YsdUNBQVk7Ozs7SUFB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QUFFOzs7O1FBR1IsTUFBTSxFQUFFOzs7O1FBR1IsTUFBTSxFQUFFOzs7O1FBR1IsTUFBTSxFQUFFOzBDQUNhLFFBQVE7OztRQUU3QixNQUFNLEVBQUU7MENBQ1ksUUFBUTs7O1FBRTVCLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sQ0FBQyxZQUFZLENBQUM7Ozs7UUFLcEIsTUFBTSxFQUFFOzs7O1FBSVIsTUFBTSxFQUFFO1FBQ1IsSUFBSSxFQUFFOzs7O1FBR04sSUFBSSxFQUFFOzs7O1FBS04sTUFBTSxDQUFDLFNBQVMsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDbkMsTUFBTSxDQUFDLGNBQWMsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDeEMsTUFBTSxDQUFDLFlBQVksQ0FBQzswQ0FFTSxZQUFZOzs7UUFDdEMsTUFBTSxDQUFDLGNBQWMsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDeEMsTUFBTSxDQUFDLGFBQWEsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDdkMsTUFBTSxDQUFDLGNBQWMsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDeEMsTUFBTSxDQUFDLFNBQVMsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDbkMsTUFBTSxDQUFDLGlCQUFpQixDQUFDOzBDQUVNLFlBQVk7OztRQUMzQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7MENBRU0sWUFBWTs7MkJBeEc5QztFQTBCc0Msc0JBQXNCO1NBQS9DLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEkxOE4sIE9wdGlvbiB9IGZyb20gJy4uLy4uL2RlY29yYXRvci9kZWNvcmF0b3JzJztcblxuaW1wb3J0IHsgSVRhYmxlQm9keSB9IGZyb20gJy4vSVRhYmxlQm9keSc7XG5pbXBvcnQgeyBBYnN0cmFjdFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9BYnN0cmFjdFRhYmxlQ29tcG9uZW50JztcbmltcG9ydCB7IElUYWJsZVJvd0NvbnRyb2xsZXIgfSBmcm9tICcuL0lUYWJsZVJvd0NvbnRyb2xsZXInO1xuaW1wb3J0IHsgUGhsb3hUYWJsZSB9IGZyb20gJy4vUGhsb3hUYWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUhhc0RhdGEgfSBmcm9tICcuLi9JSGFzRGF0YSc7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwaHgtdGFibGUtYm9keVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8cGh4LWNvbXBvbmVudC13cmFwcGVyIFt0eXBlXT1cImdldFRhYmxlKCkuZ2V0TW9kZWwoKS5nZXRSb3dNb2RlbCgpLmdldENvbXBvbmVudFR5cGUoKVwiXG4gICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2V0VGFibGUoKS5nZXRNb2RlbCgpLmdldFJvd01vZGVsKCkuZ2V0Q29tcG9uZW50T3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICBbZGF0YVBhcmVudF09XCJ0aGlzXCJcbiAgICAgICAgICAgICAgICAgICBbaWdub3JlUGFyZW50RGF0YV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICBbaGFuZGxlcl09XCJyb3cud3JhcHBlckhhbmRsZXJcIlxuICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cInJvdy5kYXRhXCJcbiAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3BoeC10YWJsZS1yb3cnICsgKGdldFRhYmxlKCkuZ2V0TW9kZWwoKS5nZXRSb3dNb2RlbCgpLmdldENTU0NsYXNzKCkgPyAnICcgKyBnZXRUYWJsZSgpLmdldE1vZGVsKCkuZ2V0Um93TW9kZWwoKS5nZXRDU1NDbGFzcygpIDogJycpXCJcbiAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm93IG9mIGdldFJvd0NvbnRyb2xsZXJzKCk7IGxldCBpZHggPSBpbmRleFwiPlxuPC9waHgtY29tcG9uZW50LXdyYXBwZXI+XG5gXG59KVxuZXhwb3J0IGNsYXNzIERlZmF1bHRUYWJsZUJvZHkgZXh0ZW5kcyBBYnN0cmFjdFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgSVRhYmxlQm9keSB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcblxuICAvLyBSZS1kZWNsYXJlIGZpZWxkIHRvIGRlY2xhcmUgbmcgQElucHV0LlxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdEhhc0RhdGFcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkYXRhUGFyZW50OiBJSGFzRGF0YTtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBpZ25vcmVQYXJlbnREYXRhOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRhdGE6IGFueTtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBpZ25vcmVQYXJlbnREaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkZWxlZ2F0ZUhpc3Rvcnk6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgb25EaXNhYmxlZDogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgb25FbmFibGVkOiBGdW5jdGlvbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBsb2FkaW5nRW5hYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBpMThuS2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgnaTE4bkJ5cGFzcycpXG4gIEBPcHRpb24oJ2kxOG5CeXBhc3MnKVxuICBwcm90ZWN0ZWQgYnlwYXNzOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgb3B0aW9uczogYW55O1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRpc2FibGVkOiBib29sZWFuO1xuICAvLyAtLS0gQWJzdHJhY3RIYXNEYXRhSGVscFxuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgQEkxOE4oKVxuICBwcm90ZWN0ZWQgaGVscDogYW55O1xuICAvLyAtLS0gc2VsZlxuICBASTE4TigpXG4gIHByb3RlY3RlZCByb3dzOiBJVGFibGVSb3dDb250cm9sbGVyW107XG5cbiAgLy8gUmUtZGVjbGFyZSBmaWVsZCB0byBkZWNsYXJlIG5nIEBPdXRwdXQuXG4gIC8vIC0tLSBzZWxmXG4gIEBPcHRpb24oJ3Jvd0RyYWcnKVxuICBAT3V0cHV0KCdwaHhSb3dEcmFnJylcbiAgcHJvdGVjdGVkIHJvd0RyYWdFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0RyYWdTdGFydCcpXG4gIEBPdXRwdXQoJ3BoeFJvd0RyYWdTdGFydCcpXG4gIHByb3RlY3RlZCByb3dEcmFnU3RhcnRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0RyYWdFbmQnKVxuICBAT3V0cHV0KCdwaHhSb3dEcmFnRW5kJylcbiAgcHJvdGVjdGVkIHJvd0RyYWdFbmRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0RyYWdFbnRlcicpXG4gIEBPdXRwdXQoJ3BoeFJvd0RyYWdFbnRlcicpXG4gIHByb3RlY3RlZCByb3dEcmFnRW50ZXJFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0RyYWdPdmVyJylcbiAgQE91dHB1dCgncGh4Um93RHJhZ092ZXInKVxuICBwcm90ZWN0ZWQgcm93RHJhZ092ZXJFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0RyYWdMZWF2ZScpXG4gIEBPdXRwdXQoJ3BoeFJvd0RyYWdMZWF2ZScpXG4gIHByb3RlY3RlZCByb3dEcmFnTGVhdmVFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0Ryb3AnKVxuICBAT3V0cHV0KCdwaHhSb3dEcm9wJylcbiAgcHJvdGVjdGVkIHJvd0Ryb3BFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0Ryb3BBY2NlcHRlZCcpXG4gIEBPdXRwdXQoJ3BoeFJvd0Ryb3BBY2NlcHRlZCcpXG4gIHByb3RlY3RlZCByb3dEcm9wQWNjZXB0ZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0Ryb3BSZWplY3RlZCcpXG4gIEBPdXRwdXQoJ3BoeFJvd0Ryb3BSZWplY3RlZCcpXG4gIHByb3RlY3RlZCByb3dEcm9wUmVqZWN0ZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmKTtcblxuICAgIHRoaXMucm93RHJhZ0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMucm93RHJhZ1N0YXJ0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5yb3dEcmFnRW5kRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICB0aGlzLnJvd0RyYWdFbnRlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMucm93RHJhZ092ZXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLnJvd0RyYWdMZWF2ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMucm93RHJvcEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMucm93RHJvcEFjY2VwdGVkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5yb3dEcm9wUmVqZWN0ZWRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgfVxuXG4gIC8vIEltcGxlbWVudFxuICBwcm90ZWN0ZWQgZG9Jbml0aWFsaXplKHRhYmxlOiBQaGxveFRhYmxlKTogdm9pZCB7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRcbiAgcHVibGljIGlzU2VsZkRhdGFEaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRcbiAgcHVibGljIHNlbGZSZXNldERhdGEoKTogdm9pZCB7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRcbiAgcHVibGljIHNlbGZTYXZlRGF0YShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIocm93czogSVRhYmxlUm93Q29udHJvbGxlcltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucm93cyA9IHJvd3M7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93Q29udHJvbGxlcnMoKTogSVRhYmxlUm93Q29udHJvbGxlcltdIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzO1xuICB9XG5cbiAgcHVibGljIGdldFJvd0RyYWdFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm93RHJhZ0V2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFJvd0RyYWdFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RyYWdFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIGdldFJvd0RyYWdTdGFydEV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3dEcmFnU3RhcnRFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3dEcmFnU3RhcnRFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RyYWdTdGFydEV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93RHJhZ0VuZEV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3dEcmFnRW5kRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Um93RHJhZ0VuZEV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMucm93RHJhZ0VuZEV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93RHJhZ0VudGVyRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvd0RyYWdFbnRlckV2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFJvd0RyYWdFbnRlckV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMucm93RHJhZ0VudGVyRXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEcmFnT3ZlckV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3dEcmFnT3ZlckV2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFJvd0RyYWdPdmVyRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5yb3dEcmFnT3ZlckV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93RHJhZ0xlYXZlRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvd0RyYWdMZWF2ZUV2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFJvd0RyYWdMZWF2ZUV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMucm93RHJhZ0xlYXZlRXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEcm9wRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvd0Ryb3BFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3dEcm9wRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5yb3dEcm9wRXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEcm9wQWNjZXB0ZWRFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm93RHJvcEFjY2VwdGVkRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Um93RHJvcEFjY2VwdGVkRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5yb3dEcm9wQWNjZXB0ZWRFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIGdldFJvd0Ryb3BSZWplY3RlZEV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3dEcm9wUmVqZWN0ZWRFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3dEcm9wUmVqZWN0ZWRFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnJvd0Ryb3BSZWplY3RlZEV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcmFnZ2FibGVcbiAgcHVibGljIG9uRHJhZyhldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm93RHJhZ0V2ZW50ICE9PSBudWxsICYmIHRoaXMucm93RHJhZ0V2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGxldCBwYXJlbnQ6IGFueSA9IHRoaXMuZ2V0RGF0YVBhcmVudCgpIGFzIGFueTtcbiAgICBpZiAocGFyZW50ICE9PSBudWxsICYmIHR5cGVvZiBwYXJlbnQub25EcmFnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJlbnQub25EcmFnKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcmFnZ2FibGVcbiAgcHVibGljIG9uRHJhZ1N0YXJ0KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcmFnU3RhcnRFdmVudCAhPT0gbnVsbCAmJiB0aGlzLnJvd0RyYWdTdGFydEV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ1N0YXJ0RXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyYWdTdGFydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGFyZW50Lm9uRHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcmFnZ2FibGVcbiAgcHVibGljIG9uRHJhZ0VuZChldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm93RHJhZ0VuZEV2ZW50ICE9PSBudWxsICYmIHRoaXMucm93RHJhZ0VuZEV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ0VuZEV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGxldCBwYXJlbnQ6IGFueSA9IHRoaXMuZ2V0RGF0YVBhcmVudCgpIGFzIGFueTtcbiAgICBpZiAocGFyZW50ICE9PSBudWxsICYmIHR5cGVvZiBwYXJlbnQub25EcmFnRW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJlbnQub25EcmFnRW5kKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJhZ0VudGVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcmFnRW50ZXJFdmVudCAhPT0gbnVsbCAmJiB0aGlzLnJvd0RyYWdFbnRlckV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ0VudGVyRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyYWdFbnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGFyZW50Lm9uRHJhZ0VudGVyKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvd0RyYWdPdmVyRXZlbnQgIT09IG51bGwgJiYgdGhpcy5yb3dEcmFnT3ZlckV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ092ZXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBsZXQgcGFyZW50OiBhbnkgPSB0aGlzLmdldERhdGFQYXJlbnQoKSBhcyBhbnk7XG4gICAgaWYgKHBhcmVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcGFyZW50Lm9uRHJhZ092ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBhcmVudC5vbkRyYWdPdmVyKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcmFnTGVhdmVFdmVudCAhPT0gbnVsbCAmJiB0aGlzLnJvd0RyYWdMZWF2ZUV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ0xlYXZlRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyYWdMZWF2ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGFyZW50Lm9uRHJhZ0xlYXZlKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJvcChldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm93RHJvcEV2ZW50ICE9PSBudWxsICYmIHRoaXMucm93RHJvcEV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJvcEV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGxldCBwYXJlbnQ6IGFueSA9IHRoaXMuZ2V0RGF0YVBhcmVudCgpIGFzIGFueTtcbiAgICBpZiAocGFyZW50ICE9PSBudWxsICYmIHR5cGVvZiBwYXJlbnQub25Ecm9wID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJlbnQub25Ecm9wKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJvcEFjY2VwdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcm9wQWNjZXB0ZWRFdmVudCAhPT0gbnVsbCAmJiB0aGlzLnJvd0Ryb3BBY2NlcHRlZEV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJvcEFjY2VwdGVkRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyb3BBY2NlcHRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGFyZW50Lm9uRHJvcEFjY2VwdGVkKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJvcFJlamVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcm9wUmVqZWN0ZWRFdmVudCAhPT0gbnVsbCAmJiB0aGlzLnJvd0Ryb3BSZWplY3RlZEV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJvcFJlamVjdGVkRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyb3BSZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGFyZW50Lm9uRHJvcFJlamVjdGVkKGV2ZW50KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==