UNPKG

@bi8/am-data-table

Version:

ng update @angular/cli --migrate-only --from=1.7.4 ng update @angular/core yarn add ng-packagr yarn add @angular/material yarn add core-js yarn add @angular/flex-layout yarn add lodash yarn add material-design-icons yarn add roboto-fontface yarn

214 lines 23.6 kB
import * as tslib_1 from "tslib"; import { BehaviorSubject } from "rxjs/BehaviorSubject"; import { DataSource } from "@angular/cdk/collections"; import 'rxjs/Rx'; export var Operation; (function (Operation) { Operation[Operation["gt"] = 0] = "gt"; Operation[Operation["lt"] = 1] = "lt"; Operation[Operation["gte"] = 2] = "gte"; Operation[Operation["lte"] = 3] = "lte"; Operation[Operation["eq"] = 4] = "eq"; Operation[Operation["ieq"] = 5] = "ieq"; Operation[Operation["neq"] = 6] = "neq"; Operation[Operation["ineq"] = 7] = "ineq"; Operation[Operation["like"] = 8] = "like"; Operation[Operation["ilike"] = 9] = "ilike"; // case insensitive like })(Operation || (Operation = {})); export var SortOrder; (function (SortOrder) { SortOrder[SortOrder["asc"] = 0] = "asc"; SortOrder[SortOrder["desc"] = 1] = "desc"; // Descending })(SortOrder || (SortOrder = {})); export function SelectionMapper(codeProperty, valueProperty, source$) { return source$.map(function (response) { response.results.forEach(function (item, index) { item.code = item[codeProperty]; item.value = item[valueProperty]; }); return response.results; }); } export function StringSelectionMapper(source$) { return source$.map(function (response) { var values = []; response.results.forEach(function (item, index) { values.push({ code: item, value: item }); }); return values; }); } var FilterCriteriaUtils = /** @class */ (function () { function FilterCriteriaUtils(ctx) { this.ctx = ctx; if (!ctx) { this.ctx = {}; } } FilterCriteriaUtils.prototype.getContext = function () { return this.ctx; }; FilterCriteriaUtils.prototype.applyFilter = function (path, operation, value) { if (!value) { return; } var filter = { path: path, operation: operation, value: value }; if (!this.ctx.criteria) { this.ctx.criteria = []; } this.ctx.criteria.push(filter); return this; }; FilterCriteriaUtils.prototype.format = function () { var e_1, _a; var result = {}; if (this.ctx.size) { result.size = this.ctx.size; } if (this.ctx.page) { result.page = this.ctx.page; } if (this.ctx.inclusive != undefined) { result.inclusive = this.ctx.inclusive; } if (this.ctx.sortField != undefined) { result.sortField = this.ctx.sortField; } switch (this.ctx.sortOrder) { case SortOrder.asc: result.sortOrder = 'asc'; break; case SortOrder.desc: result.sortOrder = 'desc'; break; } if (this.ctx.criteria && this.ctx.criteria.length > 0) { result.criteria = []; try { for (var _b = tslib_1.__values(this.ctx.criteria), _c = _b.next(); !_c.done; _c = _b.next()) { var filter = _c.value; var fc = { value: filter.value, path: filter.path }; switch (filter.operation) { case Operation.eq: fc.operation = '='; break; case Operation.gt: fc.operation = '>'; break; case Operation.gte: fc.operation = '>='; break; case Operation.ilike: fc.operation = 'ilike'; break; case Operation.like: fc.operation = 'like'; break; case Operation.lt: fc.operation = '<'; break; case Operation.lte: fc.operation = '<='; break; case Operation.ieq: fc.operation = ':'; break; case Operation.neq: fc.operation = '!='; break; case Operation.ineq: fc.operation = '!:'; break; } result.criteria.push(fc); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } } return result; }; return FilterCriteriaUtils; }()); export { FilterCriteriaUtils }; var FunctionCriteriaLoader = /** @class */ (function () { function FunctionCriteriaLoader(loadFn) { this.loadFn = loadFn; } FunctionCriteriaLoader.prototype.prepare = function (criteria) { var _this = this; return this.loadFn(criteria).map(function (response) { return _this.processResponse(response); }); }; FunctionCriteriaLoader.prototype.processResponse = function (response) { return { total: response.total, items: response.results }; }; return FunctionCriteriaLoader; }()); export { FunctionCriteriaLoader }; var CriteriaTableDB = /** @class */ (function () { function CriteriaTableDB(loader, paginator) { var _this = this; this.loader = loader; this.paginator = paginator; this.dataSubject = new BehaviorSubject([]); this.items = []; this.lastCtx = {}; this.pageSize = 5; this.pageIndex = 0; this.totalSize = 0; this.dataSource = new CriteriaTableDS(this.dataSubject); this.paginator.page.subscribe(function (event) { _this.pageSize = event.pageSize; _this.pageIndex = event.pageIndex; _this.reload(_this.lastCtx); }); } CriteriaTableDB.prototype.reload = function (ctx) { var _this = this; var criteria = ctx || {}; criteria.page = this.pageIndex; criteria.size = this.pageSize; this.lastCtx = criteria; this.loader.prepare(criteria).subscribe(function (result) { _this.items = result.items; _this.totalSize = result.total; _this.items = result.items; _this.dataSubject.next(result.items); }); }; return CriteriaTableDB; }()); export { CriteriaTableDB }; var CriteriaTableDS = /** @class */ (function (_super) { tslib_1.__extends(CriteriaTableDS, _super); function CriteriaTableDS(subject) { var _this = _super.call(this) || this; _this.subject = subject; return _this; } CriteriaTableDS.prototype.connect = function () { return this.subject.asObservable(); }; CriteriaTableDS.prototype.disconnect = function () { }; return CriteriaTableDS; }(DataSource)); export { CriteriaTableDS }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jcml0ZXJpYS5kcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BiaTgvYW0tZGF0YS10YWJsZS8iLCJzb3VyY2VzIjpbImFwcC9tb2R1bGVzL2FtLWRhdGEtdGFibGUvZ3JpZC1jcml0ZXJpYS5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRCxPQUFPLFNBQVMsQ0FBQztBQUVqQixNQUFNLENBQU4sSUFBWSxTQVdYO0FBWEQsV0FBWSxTQUFTO0lBQ25CLHFDQUFFLENBQUE7SUFDRixxQ0FBRSxDQUFBO0lBQ0YsdUNBQUcsQ0FBQTtJQUNILHVDQUFHLENBQUE7SUFDSCxxQ0FBRSxDQUFBO0lBQ0YsdUNBQUcsQ0FBQTtJQUNILHVDQUFHLENBQUE7SUFDSCx5Q0FBSSxDQUFBO0lBQ0oseUNBQUksQ0FBQTtJQUNKLDJDQUFLLENBQUEsQ0FBRyx3QkFBd0I7QUFDbEMsQ0FBQyxFQVhXLFNBQVMsS0FBVCxTQUFTLFFBV3BCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FHWDtBQUhELFdBQVksU0FBUztJQUNuQix1Q0FBRyxDQUFBO0lBQ0gseUNBQUksQ0FBQSxDQUFHLGFBQWE7QUFDdEIsQ0FBQyxFQUhXLFNBQVMsS0FBVCxTQUFTLFFBR3BCO0FBaUJELE1BQU0sVUFBVSxlQUFlLENBQUMsWUFBb0IsRUFBRSxhQUFxQixFQUFFLE9BQTJCO0lBQ3RHLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFDLFFBQWM7UUFDaEMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJLEVBQUUsS0FBSztZQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsT0FBMkI7SUFDL0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQUMsUUFBYztRQUNoQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFaEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJLEVBQUUsS0FBSztZQUNuQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEO0lBQ0UsNkJBQW9CLEdBQW1CO1FBQW5CLFFBQUcsR0FBSCxHQUFHLENBQWdCO1FBQ3JDLElBQUksQ0FBQyxHQUFHLEVBQUM7WUFDUCxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUVELHdDQUFVLEdBQVY7UUFDRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELHlDQUFXLEdBQVgsVUFBWSxJQUFZLEVBQUUsU0FBb0IsRUFBRSxLQUFVO1FBQ3hELElBQUksQ0FBQyxLQUFLLEVBQUM7WUFDVCxPQUFPO1NBQ1I7UUFFRCxJQUFJLE1BQU0sR0FBbUI7WUFDM0IsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsU0FBUztZQUNwQixLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUM7WUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG9DQUFNLEdBQU47O1FBQ0UsSUFBSSxNQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDakIsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztTQUM3QjtRQUVELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUM7WUFDaEIsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztTQUM3QjtRQUVELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksU0FBUyxFQUFDO1lBQ2xDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7U0FDdkM7UUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLFNBQVMsRUFBQztZQUNsQyxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO1NBQ3ZDO1FBRUQsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBQztZQUN6QixLQUFLLFNBQVMsQ0FBQyxHQUFHO2dCQUNoQixNQUFNLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDekIsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ2pCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO2dCQUMxQixNQUFNO1NBQ1Q7UUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDcEQsTUFBTSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7O2dCQUNyQixLQUFtQixJQUFBLEtBQUEsaUJBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUEsZ0JBQUEsNEJBQUM7b0JBQWhDLElBQUksTUFBTSxXQUFBO29CQUNiLElBQUksRUFBRSxHQUFRO3dCQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSzt3QkFDbkIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO3FCQUNsQixDQUFDO29CQUVGLFFBQVEsTUFBTSxDQUFDLFNBQVMsRUFBQzt3QkFDdkIsS0FBSyxTQUFTLENBQUMsRUFBRTs0QkFDZixFQUFFLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQzs0QkFDbkIsTUFBTTt3QkFDUixLQUFLLFNBQVMsQ0FBQyxFQUFFOzRCQUNmLEVBQUUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDOzRCQUNuQixNQUFNO3dCQUNSLEtBQUssU0FBUyxDQUFDLEdBQUc7NEJBQ2hCLEVBQUUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDOzRCQUNwQixNQUFNO3dCQUNSLEtBQUssU0FBUyxDQUFDLEtBQUs7NEJBQ2xCLEVBQUUsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDOzRCQUN2QixNQUFNO3dCQUNSLEtBQUssU0FBUyxDQUFDLElBQUk7NEJBQ2pCLEVBQUUsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDOzRCQUN0QixNQUFNO3dCQUNSLEtBQUssU0FBUyxDQUFDLEVBQUU7NEJBQ2YsRUFBRSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7NEJBQ25CLE1BQU07d0JBQ1IsS0FBSyxTQUFTLENBQUMsR0FBRzs0QkFDaEIsRUFBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7NEJBQ3BCLE1BQU07d0JBQ1IsS0FBSyxTQUFTLENBQUMsR0FBRzs0QkFDaEIsRUFBRSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7NEJBQ25CLE1BQU07d0JBQ1IsS0FBSyxTQUFTLENBQUMsR0FBRzs0QkFDaEIsRUFBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7NEJBQ3BCLE1BQU07d0JBQ1IsS0FBSyxTQUFTLENBQUMsSUFBSTs0QkFDakIsRUFBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7NEJBQ3BCLE1BQU07cUJBQ1Q7b0JBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzFCOzs7Ozs7Ozs7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDSCwwQkFBQztBQUFELENBQUMsQUF4R0QsSUF3R0M7O0FBZ0JEO0lBQ0UsZ0NBQW1CLE1BQXNCO1FBQXRCLFdBQU0sR0FBTixNQUFNLENBQWdCO0lBQ3pDLENBQUM7SUFFRCx3Q0FBTyxHQUFQLFVBQVEsUUFBYTtRQUFyQixpQkFJQztRQUhDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQyxRQUFjO1lBQzlDLE9BQU8sS0FBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnREFBZSxHQUFmLFVBQWdCLFFBQVE7UUFDdEIsT0FBTztZQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztZQUNyQixLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU87U0FDeEIsQ0FBQTtJQUNILENBQUM7SUFDSCw2QkFBQztBQUFELENBQUMsQUFoQkQsSUFnQkM7O0FBRUQ7SUFVRSx5QkFBb0IsTUFBdUIsRUFDdkIsU0FBdUI7UUFEM0MsaUJBU0M7UUFUbUIsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFDdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQVYzQyxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRTdDLFVBQUssR0FBUSxFQUFFLENBQUM7UUFDaEIsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUVsQixhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFDdEIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUtwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBQyxLQUFLO1lBQ2xDLEtBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUMvQixLQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDakMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0NBQU0sR0FBTixVQUFPLEdBQVM7UUFBaEIsaUJBWUM7UUFYQyxJQUFJLFFBQVEsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ3pCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMvQixRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUM7UUFFeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQUMsTUFBVztZQUNsRCxLQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDMUIsS0FBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQzlCLEtBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUMxQixLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBbENELElBa0NDOztBQUVEO0lBQXFDLDJDQUFpQjtJQUNwRCx5QkFBb0IsT0FBK0I7UUFBbkQsWUFDRSxpQkFBUSxTQUNUO1FBRm1CLGFBQU8sR0FBUCxPQUFPLENBQXdCOztJQUVuRCxDQUFDO0lBRUQsaUNBQU8sR0FBUDtRQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsb0NBQVUsR0FBVjtJQUNBLENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFYRCxDQUFxQyxVQUFVLEdBVzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gXCJyeGpzL0JlaGF2aW9yU3ViamVjdFwiO1xyXG5pbXBvcnQge01hdFBhZ2luYXRvcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsXCI7XHJcbmltcG9ydCB7RGF0YVNvdXJjZX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzL09ic2VydmFibGVcIjtcclxuaW1wb3J0ICdyeGpzL1J4JztcclxuXHJcbmV4cG9ydCBlbnVtIE9wZXJhdGlvbiB7XHJcbiAgZ3QsICAgICAvLyA+IEdyZWF0ZXIgVGhhblxyXG4gIGx0LCAgICAgLy8gPiBMb3dlciBUaGFuXHJcbiAgZ3RlLCAgICAvLyA+PSBHcmVhdGVyIG9yIEVxdWFsXHJcbiAgbHRlLCAgICAvLyA8PSBMb3dlciBvciBFcXVhbFxyXG4gIGVxLCAgICAgLy8gPVxyXG4gIGllcSwgICAgLy8gOiBjYXNlIGluc2Vuc2l0aXZlIGVxdWFsIChjYW4gb25seSBiZSBkb25lIG9uIHN0cmluZ3MpXHJcbiAgbmVxLCAgICAvLyAhPSBub3QgZXF1YWxcclxuICBpbmVxLCAgIC8vICE6IGNhc2UgaW5zZW5zaXRpdmUgbm90IGVxdWFsIChjYW4gb25seSBiZSBkb25lIG9uIHN0cmluZ3MpXHJcbiAgbGlrZSwgICAvLyBsaWtlXHJcbiAgaWxpa2UgICAvLyBjYXNlIGluc2Vuc2l0aXZlIGxpa2VcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU29ydE9yZGVyIHtcclxuICBhc2MsICAgLy8gQXNjZW5kaW5nXHJcbiAgZGVzYyAgIC8vIERlc2NlbmRpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hDb250ZXh0IHtcclxuICBzaXplPzogbnVtYmVyO1xyXG4gIHBhZ2U/OiBudW1iZXI7XHJcbiAgaW5jbHVzaXZlPzogYm9vbGVhbjtcclxuICBzb3J0RmllbGQ/OiBzdHJpbmc7XHJcbiAgc29ydE9yZGVyPzogU29ydE9yZGVyO1xyXG4gIGNyaXRlcmlhPzogRmlsdGVyQ3JpdGVyaWFbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDcml0ZXJpYSB7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIG9wZXJhdGlvbjogT3BlcmF0aW9uO1xyXG4gIHZhbHVlOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBTZWxlY3Rpb25NYXBwZXIoY29kZVByb3BlcnR5OiBzdHJpbmcsIHZhbHVlUHJvcGVydHk6IHN0cmluZywgc291cmNlJDogT2JzZXJ2YWJsZTxPYmplY3Q+KSA6IE9ic2VydmFibGU8T2JqZWN0PiB7XHJcbiAgcmV0dXJuIHNvdXJjZSQubWFwKChyZXNwb25zZSA6IGFueSkgPT4ge1xyXG4gICAgcmVzcG9uc2UucmVzdWx0cy5mb3JFYWNoKChpdGVtLCBpbmRleCk9PntcclxuICAgICAgaXRlbS5jb2RlID0gaXRlbVtjb2RlUHJvcGVydHldO1xyXG4gICAgICBpdGVtLnZhbHVlID0gaXRlbVt2YWx1ZVByb3BlcnR5XTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlLnJlc3VsdHM7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBTdHJpbmdTZWxlY3Rpb25NYXBwZXIoc291cmNlJDogT2JzZXJ2YWJsZTxPYmplY3Q+KSA6IE9ic2VydmFibGU8T2JqZWN0PiB7XHJcbiAgcmV0dXJuIHNvdXJjZSQubWFwKChyZXNwb25zZSA6IGFueSkgPT4ge1xyXG4gICAgbGV0IHZhbHVlcyA9IFtdO1xyXG5cclxuICAgIHJlc3BvbnNlLnJlc3VsdHMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpPT57XHJcbiAgICAgIHZhbHVlcy5wdXNoKHsgY29kZTogaXRlbSwgdmFsdWU6IGl0ZW0gfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB2YWx1ZXM7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJDcml0ZXJpYVV0aWxzIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN0eD86IFNlYXJjaENvbnRleHQpe1xyXG4gICAgaWYgKCFjdHgpe1xyXG4gICAgICB0aGlzLmN0eCA9IHt9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGV4dCgpIDogU2VhcmNoQ29udGV4dCB7XHJcbiAgICByZXR1cm4gdGhpcy5jdHg7XHJcbiAgfVxyXG5cclxuICBhcHBseUZpbHRlcihwYXRoOiBzdHJpbmcsIG9wZXJhdGlvbjogT3BlcmF0aW9uLCB2YWx1ZTogYW55KSA6IEZpbHRlckNyaXRlcmlhVXRpbHMge1xyXG4gICAgaWYgKCF2YWx1ZSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZmlsdGVyOiBGaWx0ZXJDcml0ZXJpYSA9IHtcclxuICAgICAgcGF0aDogcGF0aCxcclxuICAgICAgb3BlcmF0aW9uOiBvcGVyYXRpb24sXHJcbiAgICAgIHZhbHVlOiB2YWx1ZVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY3R4LmNyaXRlcmlhKXtcclxuICAgICAgdGhpcy5jdHguY3JpdGVyaWEgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN0eC5jcml0ZXJpYS5wdXNoKGZpbHRlcik7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGZvcm1hdCgpe1xyXG4gICAgbGV0IHJlc3VsdDogYW55ID0ge307XHJcbiAgICBpZiAodGhpcy5jdHguc2l6ZSkge1xyXG4gICAgICByZXN1bHQuc2l6ZSA9IHRoaXMuY3R4LnNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY3R4LnBhZ2Upe1xyXG4gICAgICByZXN1bHQucGFnZSA9IHRoaXMuY3R4LnBhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY3R4LmluY2x1c2l2ZSAhPSB1bmRlZmluZWQpe1xyXG4gICAgICByZXN1bHQuaW5jbHVzaXZlID0gdGhpcy5jdHguaW5jbHVzaXZlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmN0eC5zb3J0RmllbGQgIT0gdW5kZWZpbmVkKXtcclxuICAgICAgcmVzdWx0LnNvcnRGaWVsZCA9IHRoaXMuY3R4LnNvcnRGaWVsZDtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuY3R4LnNvcnRPcmRlcil7XHJcbiAgICAgIGNhc2UgU29ydE9yZGVyLmFzYzpcclxuICAgICAgICByZXN1bHQuc29ydE9yZGVyID0gJ2FzYyc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU29ydE9yZGVyLmRlc2M6XHJcbiAgICAgICAgcmVzdWx0LnNvcnRPcmRlciA9ICdkZXNjJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jdHguY3JpdGVyaWEgJiYgdGhpcy5jdHguY3JpdGVyaWEubGVuZ3RoID4gMCl7XHJcbiAgICAgIHJlc3VsdC5jcml0ZXJpYSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBmaWx0ZXIgb2YgdGhpcy5jdHguY3JpdGVyaWEpe1xyXG4gICAgICAgIGxldCBmYzogYW55ID0ge1xyXG4gICAgICAgICAgdmFsdWU6IGZpbHRlci52YWx1ZSxcclxuICAgICAgICAgIHBhdGg6IGZpbHRlci5wYXRoXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIub3BlcmF0aW9uKXtcclxuICAgICAgICAgIGNhc2UgT3BlcmF0aW9uLmVxOlxyXG4gICAgICAgICAgICBmYy5vcGVyYXRpb24gPSAnPSc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBPcGVyYXRpb24uZ3Q6XHJcbiAgICAgICAgICAgIGZjLm9wZXJhdGlvbiA9ICc+JztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIE9wZXJhdGlvbi5ndGU6XHJcbiAgICAgICAgICAgIGZjLm9wZXJhdGlvbiA9ICc+PSc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBPcGVyYXRpb24uaWxpa2U6XHJcbiAgICAgICAgICAgIGZjLm9wZXJhdGlvbiA9ICdpbGlrZSc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBPcGVyYXRpb24ubGlrZTpcclxuICAgICAgICAgICAgZmMub3BlcmF0aW9uID0gJ2xpa2UnO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgT3BlcmF0aW9uLmx0OlxyXG4gICAgICAgICAgICBmYy5vcGVyYXRpb24gPSAnPCc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBPcGVyYXRpb24ubHRlOlxyXG4gICAgICAgICAgICBmYy5vcGVyYXRpb24gPSAnPD0nO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgT3BlcmF0aW9uLmllcTpcclxuICAgICAgICAgICAgZmMub3BlcmF0aW9uID0gJzonO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgT3BlcmF0aW9uLm5lcTpcclxuICAgICAgICAgICAgZmMub3BlcmF0aW9uID0gJyE9JztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIE9wZXJhdGlvbi5pbmVxOlxyXG4gICAgICAgICAgICBmYy5vcGVyYXRpb24gPSAnITonO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlc3VsdC5jcml0ZXJpYS5wdXNoKGZjKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDcml0ZXJpYVNlYXJjaFNlcnZpY2Uge1xyXG4gIHNlYXJjaChjcml0ZXJpYTogYW55KSA6IE9ic2VydmFibGU8T2JqZWN0PlxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENyaXRlcmlhTG9hZEZuIHtcclxuICAoY3JpdGVyaWE6IGFueSk6IE9ic2VydmFibGU8T2JqZWN0PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDcml0ZXJpYUxvYWRlciB7XHJcbiAgcHJlcGFyZShjcml0ZXJpYTogYW55KSA6IE9ic2VydmFibGU8T2JqZWN0PjtcclxuICBwcm9jZXNzUmVzcG9uc2UocmVzcG9uc2U6IGFueSkgOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGdW5jdGlvbkNyaXRlcmlhTG9hZGVyIGltcGxlbWVudHMgQ3JpdGVyaWFMb2FkZXIge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsb2FkRm46IENyaXRlcmlhTG9hZEZuKXtcclxuICB9XHJcblxyXG4gIHByZXBhcmUoY3JpdGVyaWE6IGFueSkgOiBPYnNlcnZhYmxlPE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZEZuKGNyaXRlcmlhKS5tYXAoKHJlc3BvbnNlIDogYW55KT0+e1xyXG4gICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUmVzcG9uc2UocmVzcG9uc2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzUmVzcG9uc2UocmVzcG9uc2Upe1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdG90YWw6IHJlc3BvbnNlLnRvdGFsLFxyXG4gICAgICBpdGVtczogcmVzcG9uc2UucmVzdWx0c1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENyaXRlcmlhVGFibGVEQiB7XHJcbiAgZGF0YVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XHJcbiAgZGF0YVNvdXJjZTogQ3JpdGVyaWFUYWJsZURTIHwgbnVsbDtcclxuICBpdGVtczogYW55ID0gW107XHJcbiAgbGFzdEN0eDogYW55ID0ge307XHJcblxyXG4gIHBhZ2VTaXplOiBudW1iZXIgPSA1O1xyXG4gIHBhZ2VJbmRleDogbnVtYmVyID0gMDtcclxuICB0b3RhbFNpemU6IG51bWJlciA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9hZGVyIDogQ3JpdGVyaWFMb2FkZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcil7XHJcblxyXG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IENyaXRlcmlhVGFibGVEUyh0aGlzLmRhdGFTdWJqZWN0KTtcclxuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2Uuc3Vic2NyaWJlKChldmVudCk9PntcclxuICAgICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcclxuICAgICAgdGhpcy5yZWxvYWQodGhpcy5sYXN0Q3R4KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkKGN0eD86IGFueSl7XHJcbiAgICBsZXQgY3JpdGVyaWEgPSBjdHggfHwge307XHJcbiAgICBjcml0ZXJpYS5wYWdlID0gdGhpcy5wYWdlSW5kZXg7XHJcbiAgICBjcml0ZXJpYS5zaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMubGFzdEN0eCA9IGNyaXRlcmlhO1xyXG5cclxuICAgIHRoaXMubG9hZGVyLnByZXBhcmUoY3JpdGVyaWEpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpPT57XHJcbiAgICAgIHRoaXMuaXRlbXMgPSByZXN1bHQuaXRlbXM7XHJcbiAgICAgIHRoaXMudG90YWxTaXplID0gcmVzdWx0LnRvdGFsO1xyXG4gICAgICB0aGlzLml0ZW1zID0gcmVzdWx0Lml0ZW1zO1xyXG4gICAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQocmVzdWx0Lml0ZW1zKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENyaXRlcmlhVGFibGVEUyBleHRlbmRzIERhdGFTb3VyY2U8YW55W10+IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4pIHtcclxuICAgIHN1cGVyICgpO1xyXG4gIH1cclxuXHJcbiAgY29ubmVjdCgpOiBPYnNlcnZhYmxlPGFueVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZGlzY29ubmVjdCgpOiB2b2lkIHtcclxuICB9XHJcbn1cclxuIl19