UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

405 lines (404 loc) 22.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { AbstractI18NApplicable } from '../AbstractI18NApplicable'; import { Option } from '../decorator/Option.decorator'; import { TableCellModel } from './TableCellModel'; var TableRowModel = /** @class */ (function (_super) { tslib_1.__extends(TableRowModel, _super); function TableRowModel(tableModel) { var _this = _super.call(this) || this; _this.tableModel = tableModel; _this.cellModels = []; // Set default values // Set default values _this.editable = false; _this.resizable = false; _this.selectable = false; _this.draggable = false; return _this; } /** * @param {?} options * @return {?} */ TableRowModel.prototype.setOptions = /** * @param {?} options * @return {?} */ function (options) { // Call super.setOptions() to auto resolve @Option fields _super.prototype.setOptions.call(this, options); // Call set component type name to auto resolve compoent type this.setComponentTypeName(this.getComponentTypeName()); }; /** * @return {?} */ TableRowModel.prototype.isEditable = /** * @return {?} */ function () { return this.editable; }; /** * @param {?} editable * @return {?} */ TableRowModel.prototype.setEditable = /** * @param {?} editable * @return {?} */ function (editable) { this.editable = editable; }; /** * @return {?} */ TableRowModel.prototype.isResizable = /** * @return {?} */ function () { return this.resizable; }; /** * @param {?} resizable * @return {?} */ TableRowModel.prototype.setResizable = /** * @param {?} resizable * @return {?} */ function (resizable) { this.resizable = resizable; }; /** * @return {?} */ TableRowModel.prototype.isSelectable = /** * @return {?} */ function () { return this.selectable; }; /** * @param {?} selectable * @return {?} */ TableRowModel.prototype.setSelectable = /** * @param {?} selectable * @return {?} */ function (selectable) { this.selectable = selectable; }; /** * @return {?} */ TableRowModel.prototype.isDraggable = /** * @return {?} */ function () { return this.draggable; }; /** * @param {?} draggable * @return {?} */ TableRowModel.prototype.setDraggable = /** * @param {?} draggable * @return {?} */ function (draggable) { this.draggable = draggable; }; /** * @return {?} */ TableRowModel.prototype.getHeight = /** * @return {?} */ function () { return this.height; }; /** * @param {?} height * @return {?} */ TableRowModel.prototype.setHeight = /** * @param {?} height * @return {?} */ function (height) { this.height = height; }; /** * @return {?} */ TableRowModel.prototype.getTableModel = /** * @return {?} */ function () { return this.tableModel; }; /** * @param {?} typeName * @return {?} */ TableRowModel.prototype.resolveType = /** * @param {?} typeName * @return {?} */ function (typeName) { if (this.tableModel === null && typeof this.tableModel === 'undefined') { return null; } return this.tableModel.resolveType(typeName); }; /** * @return {?} */ TableRowModel.prototype.getComponentTypeName = /** * @return {?} */ function () { return this.componentTypeName; }; /** * @param {?} typeName * @return {?} */ TableRowModel.prototype.setComponentTypeName = /** * @param {?} typeName * @return {?} */ function (typeName) { this.componentTypeName = typeName; this.componentType = this.resolveType(typeName); }; /** * @return {?} */ TableRowModel.prototype.getComponentOptions = /** * @return {?} */ function () { return this.componentOptions; }; /** * @param {?} options * @return {?} */ TableRowModel.prototype.setComponentOptions = /** * @param {?} options * @return {?} */ function (options) { this.componentOptions = options; }; /** * @return {?} */ TableRowModel.prototype.getComponentType = /** * @return {?} */ function () { return this.componentType; }; /** * @return {?} */ TableRowModel.prototype.getCSSClass = /** * @return {?} */ function () { return this.cssClass; }; /** * @param {?} clazz * @return {?} */ TableRowModel.prototype.setCSSClass = /** * @param {?} clazz * @return {?} */ function (clazz) { this.cssClass = clazz; }; /** * @return {?} */ TableRowModel.prototype.getCellModels = /** * @return {?} */ function () { return [].concat(this.cellModels); }; /** * @param {?} index * @return {?} */ TableRowModel.prototype.getCellModelByIndex = /** * @param {?} index * @return {?} */ function (index) { if (typeof index !== 'number') { return null; } if (index < 0 || index >= this.cellModels.length) { return null; } return this.cellModels[index]; }; /** * @param {?} cellModel * @return {?} */ TableRowModel.prototype.getCellModelIndex = /** * @param {?} cellModel * @return {?} */ function (cellModel) { if (cellModel === null || typeof cellModel === 'undefined') { return -1; } return this.cellModels.indexOf(cellModel); }; /** * @return {?} */ TableRowModel.prototype._clear = /** * @return {?} */ function () { this.cellModels = []; }; /** * @param {?} index * @param {?} options * @return {?} */ TableRowModel.prototype._addCellModelAtIndex = /** * @param {?} index * @param {?} options * @return {?} */ function (index, options) { if (typeof index !== 'number') { index = this.cellModels.length; } if (index < 0 || index > this.cellModels.length) { throw new Error('The given "index" is out of bound [len=' + this.cellModels.length + ']'); } var /** @type {?} */ cellModel = new TableCellModel(this); cellModel.setOptions(options); // Insert cellModel into specified "index". this.cellModels.splice(index, 0, cellModel); return cellModel; }; /** * @param {?} options * @return {?} */ TableRowModel.prototype._addCellModel = /** * @param {?} options * @return {?} */ function (options) { return this._addCellModelAtIndex(this.cellModels.length, options); }; /** * @param {?} cellModel * @return {?} */ TableRowModel.prototype._removeCellModel = /** * @param {?} cellModel * @return {?} */ function (cellModel) { var /** @type {?} */ index = this.getCellModelIndex(cellModel); if (index < 0) { return false; } this.cellModels.splice(index, 1); return true; }; /** * @param {?} index * @return {?} */ TableRowModel.prototype._removeCellModelByIndex = /** * @param {?} index * @return {?} */ function (index) { var /** @type {?} */ cellModel = this.getCellModelByIndex(index); if (cellModel === null) { return null; } this.cellModels.splice(index, 1); return cellModel; }; tslib_1.__decorate([ Option('type'), tslib_1.__metadata("design:type", String) ], TableRowModel.prototype, "componentTypeName", void 0); tslib_1.__decorate([ Option('options'), tslib_1.__metadata("design:type", Object) ], TableRowModel.prototype, "componentOptions", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TableRowModel.prototype, "editable", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TableRowModel.prototype, "resizable", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TableRowModel.prototype, "selectable", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], TableRowModel.prototype, "draggable", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], TableRowModel.prototype, "height", void 0); tslib_1.__decorate([ Option('class'), tslib_1.__metadata("design:type", String) ], TableRowModel.prototype, "cssClass", void 0); return TableRowModel; }(AbstractI18NApplicable)); export { TableRowModel }; function TableRowModel_tsickle_Closure_declarations() { /** @type {?} */ TableRowModel.prototype.componentTypeName; /** @type {?} */ TableRowModel.prototype.componentOptions; /** @type {?} */ TableRowModel.prototype.editable; /** @type {?} */ TableRowModel.prototype.resizable; /** @type {?} */ TableRowModel.prototype.selectable; /** @type {?} */ TableRowModel.prototype.draggable; /** @type {?} */ TableRowModel.prototype.height; /** @type {?} */ TableRowModel.prototype.cssClass; /** @type {?} */ TableRowModel.prototype.tableModel; /** @type {?} */ TableRowModel.prototype.componentType; /** @type {?} */ TableRowModel.prototype.cellModels; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVSb3dNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL21vZGVsL1RhYmxlUm93TW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztJQUVmLHlDQUFzQjsyQkF1QnBDLFVBQXNCO29CQUN2QyxpQkFBTztRQUVQLEtBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLEtBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDOztRQUdyQixBQURBLHFCQUFxQjtRQUNyQixLQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixLQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixLQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixLQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzs7Ozs7OztJQUlsQixrQ0FBVTs7OztjQUFDLE9BQVk7O1FBRTVCLGlCQUFNLFVBQVUsWUFBQyxPQUFPLENBQUMsQ0FBQzs7UUFHMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7Ozs7O0lBR2xELGtDQUFVOzs7O1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Ozs7OztJQUdoQixtQ0FBVzs7OztjQUFDLFFBQWlCO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDOzs7OztJQUdwQixtQ0FBVzs7OztRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzs7Ozs7O0lBR2pCLG9DQUFZOzs7O2NBQUMsU0FBa0I7UUFDcEMsSUFBSSxDQUFDLFNB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LHFCQUFJLFNBQVMsR0FBbUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVqQyxNQUFNLENBQUMsU0FBUyxDQUFDOzs7UUFsTWxCLE1BQU0sQ0FBQyxNQUFNLENBQUM7Ozs7UUFFZCxNQUFNLENBQUMsU0FBUyxDQUFDOzs7O1FBRWpCLE1BQU0sRUFBRTs7OztRQUVSLE1BQU0sRUFBRTs7OztRQUVSLE1BQU0sRUFBRTs7OztRQUVSLE1BQU0sRUFBRTs7OztRQUVSLE1BQU0sRUFBRTs7OztRQUVSLE1BQU0sQ0FBQyxPQUFPLENBQUM7Ozt3QkExQmxCO0VBVW1DLHNCQUFzQjtTQUE1QyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEkxOE5BcHBsaWNhYmxlIH0gZnJvbSAnLi4vQWJzdHJhY3RJMThOQXBwbGljYWJsZSc7XG5cbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJy4uL2RlY29yYXRvci9PcHRpb24uZGVjb3JhdG9yJztcbmltcG9ydCB7IEkxOE4gfSBmcm9tICcuLi9kZWNvcmF0b3IvSTE4Ti5kZWNvcmF0b3InO1xuXG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi9UYWJsZU1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ2VsbE1vZGVsIH0gZnJvbSAnLi9UYWJsZUNlbGxNb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZVJvd01vZGVsIGV4dGVuZHMgQWJzdHJhY3RJMThOQXBwbGljYWJsZSB7XG5cbiAgQE9wdGlvbigndHlwZScpXG4gIHByb3RlY3RlZCBjb21wb25lbnRUeXBlTmFtZTogc3RyaW5nO1xuICBAT3B0aW9uKCdvcHRpb25zJylcbiAgcHJvdGVjdGVkIGNvbXBvbmVudE9wdGlvbnM6IGFueTtcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBlZGl0YWJsZTogYm9vbGVhbjtcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCByZXNpemFibGU6IGJvb2xlYW47XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkcmFnZ2FibGU6IGJvb2xlYW47XG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaGVpZ2h0OiBzdHJpbmc7XG4gIEBPcHRpb24oJ2NsYXNzJylcbiAgcHJvdGVjdGVkIGNzc0NsYXNzOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHRhYmxlTW9kZWw6IFRhYmxlTW9kZWw7XG4gIHByb3RlY3RlZCBjb21wb25lbnRUeXBlOiBUeXBlPGFueT47XG4gIHByb3RlY3RlZCBjZWxsTW9kZWxzOiBUYWJsZUNlbGxNb2RlbFtdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih0YWJsZU1vZGVsOiBUYWJsZU1vZGVsKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMudGFibGVNb2RlbCA9IHRhYmxlTW9kZWw7XG4gICAgdGhpcy5jZWxsTW9kZWxzID0gW107XG5cbiAgICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXNcbiAgICB0aGlzLmVkaXRhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5yZXNpemFibGUgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGFibGUgPSBmYWxzZTtcbiAgICB0aGlzLmRyYWdnYWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGVcbiAgcHVibGljIHNldE9wdGlvbnMob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgLy8gQ2FsbCBzdXBlci5zZXRPcHRpb25zKCkgdG8gYXV0byByZXNvbHZlIEBPcHRpb24gZmllbGRzXG4gICAgc3VwZXIuc2V0T3B0aW9ucyhvcHRpb25zKTtcblxuICAgIC8vIENhbGwgc2V0IGNvbXBvbmVudCB0eXBlIG5hbWUgdG8gYXV0byByZXNvbHZlIGNvbXBvZW50IHR5cGVcbiAgICB0aGlzLnNldENvbXBvbmVudFR5cGVOYW1lKHRoaXMuZ2V0Q29tcG9uZW50VHlwZU5hbWUoKSk7XG4gIH1cblxuICBwdWJsaWMgaXNFZGl0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRFZGl0YWJsZShlZGl0YWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZWRpdGFibGUgPSBlZGl0YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBpc1Jlc2l6YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXNpemFibGU7XG4gIH1cblxuICBwdWJsaWMgc2V0UmVzaXphYmxlKHJlc2l6YWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMucmVzaXphYmxlID0gcmVzaXphYmxlO1xuICB9XG5cbiAgcHVibGljIGlzU2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlO1xuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdGFibGUoc2VsZWN0YWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0YWJsZSA9IHNlbGVjdGFibGU7XG4gIH1cblxuICBwdWJsaWMgaXNEcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ2dhYmxlO1xuICB9XG5cbiAgcHVibGljIHNldERyYWdnYWJsZShkcmFnZ2FibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRyYWdnYWJsZSA9IGRyYWdnYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRIZWlnaHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5oZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0SGVpZ2h0KGhlaWdodDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGFibGVNb2RlbCgpOiBUYWJsZU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVUeXBlKHR5cGVOYW1lOiBzdHJpbmcpOiBUeXBlPGFueT4ge1xuICAgIGlmICh0aGlzLnRhYmxlTW9kZWwgPT09IG51bGwgJiYgdHlwZW9mIHRoaXMudGFibGVNb2RlbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRhYmxlTW9kZWwucmVzb2x2ZVR5cGUodHlwZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudFR5cGVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50VHlwZU5hbWU7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29tcG9uZW50VHlwZU5hbWUodHlwZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50VHlwZU5hbWUgPSB0eXBlTmFtZTtcbiAgICB0aGlzLmNvbXBvbmVudFR5cGUgPSB0aGlzLnJlc29sdmVUeXBlKHR5cGVOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb21wb25lbnRPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50T3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb21wb25lbnRPcHRpb25zKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50T3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tcG9uZW50VHlwZSgpOiBUeXBlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q1NTQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jc3NDbGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzZXRDU1NDbGFzcyhjbGF6ejogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jc3NDbGFzcyA9IGNsYXp6O1xuICB9XG5cbiAgcHVibGljIGdldENlbGxNb2RlbHMoKTogVGFibGVDZWxsTW9kZWxbXSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCh0aGlzLmNlbGxNb2RlbHMpO1xuICB9XG5cbiAgcHVibGljIGdldENlbGxNb2RlbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IFRhYmxlQ2VsbE1vZGVsIHtcbiAgICBpZiAodHlwZW9mIGluZGV4ICE9PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5jZWxsTW9kZWxzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2VsbE1vZGVsc1tpbmRleF07XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbE1vZGVsSW5kZXgoY2VsbE1vZGVsOiBUYWJsZUNlbGxNb2RlbCk6IG51bWJlciB7XG4gICAgaWYgKGNlbGxNb2RlbCA9PT0gbnVsbCB8fCB0eXBlb2YgY2VsbE1vZGVsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNlbGxNb2RlbHMuaW5kZXhPZihjZWxsTW9kZWwpO1xuICB9XG5cbiAgcHVibGljIF9jbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNlbGxNb2RlbHMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBfYWRkQ2VsbE1vZGVsQXRJbmRleChpbmRleDogbnVtYmVyLCBvcHRpb25zOiBhbnkpOiBUYWJsZUNlbGxNb2RlbCB7XG4gICAgaWYgKHR5cGVvZiBpbmRleCAhPT0gJ251bWJlcicpIHtcbiAgICAgIGluZGV4ID0gdGhpcy5jZWxsTW9kZWxzLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IHRoaXMuY2VsbE1vZGVscy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGdpdmVuIFwiaW5kZXhcIiBpcyBvdXQgb2YgYm91bmQgW2xlbj0nICsgdGhpcy5jZWxsTW9kZWxzLmxlbmd0aCArICddJyk7XG4gICAgfVxuXG4gICAgbGV0IGNlbGxNb2RlbDogVGFibGVDZWxsTW9kZWwgPSBuZXcgVGFibGVDZWxsTW9kZWwodGhpcyk7XG5cbiAgICBjZWxsTW9kZWwuc2V0T3B0aW9ucyhvcHRpb25zKTtcblxuICAgIC8vIEluc2VydCBjZWxsTW9kZWwgaW50byBzcGVjaWZpZWQgXCJpbmRleFwiLlxuICAgIHRoaXMuY2VsbE1vZGVscy5zcGxpY2UoaW5kZXgsIDAsIGNlbGxNb2RlbCk7XG5cbiAgICByZXR1cm4gY2VsbE1vZGVsO1xuICB9XG5cbiAgcHVibGljIF9hZGRDZWxsTW9kZWwob3B0aW9uczogYW55KTogVGFibGVDZWxsTW9kZWwge1xuICAgIHJldHVybiB0aGlzLl9hZGRDZWxsTW9kZWxBdEluZGV4KHRoaXMuY2VsbE1vZGVscy5sZW5ndGgsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIF9yZW1vdmVDZWxsTW9kZWwoY2VsbE1vZGVsOiBUYWJsZUNlbGxNb2RlbCk6IGJvb2xlYW4ge1xuICAgIGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5nZXRDZWxsTW9kZWxJbmRleChjZWxsTW9kZWwpO1xuXG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuY2VsbE1vZGVscy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgX3JlbW92ZUNlbGxNb2RlbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IFRhYmxlQ2VsbE1vZGVsIHtcbiAgICBsZXQgY2VsbE1vZGVsOiBUYWJsZUNlbGxNb2RlbCA9IHRoaXMuZ2V0Q2VsbE1vZGVsQnlJbmRleChpbmRleCk7XG5cbiAgICBpZiAoY2VsbE1vZGVsID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmNlbGxNb2RlbHMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIHJldHVybiBjZWxsTW9kZWw7XG4gIH1cblxufVxuIl19