@sumaris-net/ngx-components 18.22.21 → 18.22.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -316,14 +316,13 @@ export class InMemoryEntitiesService extends StartableObservableService {
316
316
  // if filter is DataFilter instance, use its test function
317
317
  const filterFn = this._filterFnFactory && this._filterFnFactory(_filter);
318
318
  if (filterFn) {
319
- const filteredData = [];
320
- data.forEach((value) => {
321
- if (filterFn(value))
322
- filteredData.push(value);
323
- else
324
- hiddenData.push(value);
325
- });
326
- return filteredData;
319
+ return data.reduce((res, value) => {
320
+ if (filterFn(value)) {
321
+ return res.concat(value);
322
+ }
323
+ hiddenData.push(value);
324
+ return res;
325
+ }, []);
327
326
  }
328
327
  // default, no filter
329
328
  return data;
@@ -360,4 +359,4 @@ export class InMemoryEntitiesService extends StartableObservableService {
360
359
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InMemoryEntitiesService, decorators: [{
361
360
  type: Directive
362
361
  }], ctorParameters: () => [{ type: undefined }, { type: undefined }, { type: undefined }] });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWVudGl0eS1zZXJ2aWNlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvc2VydmljZXMvbWVtb3J5LWVudGl0eS1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUc5RSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQVcsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQWVsRixXQUFXO0FBRVgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyx1QkFPWCxTQUFRLDBCQUFvQztJQXNDaEM7SUFDQTtJQXBDWixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRU4sV0FBVyxHQUFRLElBQUksQ0FBQztJQUV2QixZQUFZLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDbkQsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRW5ELGlCQUFpQixDQUE0QjtJQUMvQyxPQUFPLENBQXFFO0lBQzVFLE9BQU8sQ0FBb0M7SUFDM0MsU0FBUyxDQUFvQztJQUM3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SUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSx5Q0FBeUM7Z0JBQ3hHLFNBQVMsRUFBRSxLQUFLLEVBQUUsMkJBQTJCO2dCQUM3QyxHQUFHLElBQUk7YUFDUixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVTLFlBQVk7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFUyxXQUFXO1FBQ25CLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQzt3R0FsYVUsdUJBQXVCOzRGQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRm5DLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05pbCwgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucywgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLCBJRW50aXRpZXNTZXJ2aWNlLCBMb2FkUmVzdWx0IH0gZnJvbSAnLi9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW50aXR5VXRpbHMsIElFbnRpdHkgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBFbnRpdHlGaWx0ZXIsIEVudGl0eUZpbHRlclV0aWxzIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgZmlyc3RGYWxzZVByb21pc2UsIFdhaXRGb3JPcHRpb25zIH0gZnJvbSAnLi4vb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgU3RhcnRhYmxlT2JzZXJ2YWJsZVNlcnZpY2UgfSBmcm9tICcuL3N0YXJ0YWJsZS1vYnNlcnZhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgRmlsdGVyRm4sIEZpbHRlckZuRmFjdG9yeSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBJbk1lbW9yeUVudGl0aWVzU2VydmljZU9wdGlvbnM8VCwgRj4ge1xuICBvblNvcnQ/OiAoZGF0YTogVFtdLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uKSA9PiBUW107XG4gIG9uTG9hZD86IChkYXRhOiBUW10pID0+IFRbXSB8IFByb21pc2U8VFtdPjtcbiAgb25TYXZlPzogKGRhdGE6IFRbXSkgPT4gVFtdIHwgUHJvbWlzZTxUW10+O1xuICBlcXVhbHM/OiAoZDE6IFQsIGQyOiBUKSA9PiBib29sZWFuO1xuXG4gIGZpbHRlckZuRmFjdG9yeT86IEZpbHRlckZuRmFjdG9yeTxULCBGPjtcbiAgZmlsdGVyRm4/OiBGaWx0ZXJGbjxUPjtcblxuICBzb3J0QnlSZXBsYWNlbWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8vIEBkeW5hbWljXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIEluTWVtb3J5RW50aXRpZXNTZXJ2aWNlPFxuICAgIFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPixcbiAgICBGID0gYW55LFxuICAgIElEID0gbnVtYmVyLFxuICAgIE8gZXh0ZW5kcyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMgPSBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMsXG4gICAgU08gZXh0ZW5kcyBJbk1lbW9yeUVudGl0aWVzU2VydmljZU9wdGlvbnM8VCwgRj4gPSBJbk1lbW9yeUVudGl0aWVzU2VydmljZU9wdGlvbnM8VCwgRj5cbiAgPlxuICBleHRlbmRzIFN0YXJ0YWJsZU9ic2VydmFibGVTZXJ2aWNlPFRbXSwgVFtdPlxuICBpbXBsZW1lbnRzIElFbnRpdGllc1NlcnZpY2U8VCwgRiwgTz4sIE9uRGVzdHJveVxue1xuICBkZWJ1ZyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2hpZGRlbkRhdGE6IFRbXSA9IG51bGw7XG5cbiAgcmVhZG9ubHkgZGlydHlTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNhdmluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgc29ydEJ5UmVwbGFjZW1lbnQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHByaXZhdGUgX3NvcnRGbjogKGRhdGE6IFRbXSwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbikgPT4gVFtdO1xuICBwcml2YXRlIF9vbkxvYWQ6IChkYXRhOiBUW10pID0+IFRbXSB8IFByb21pc2U8VFtdPjtcbiAgcHJpdmF0ZSBfb25TYXZlRm46IChkYXRhOiBUW10pID0+IFRbXSB8IFByb21pc2U8VFtdPjtcbiAgcHJpdmF0ZSBfZXF1YWxzRm46IChkMTogVCwgZDI6IFQpID0+IGJvb2xlYW47XG4gIHByaXZhdGUgX2ZpbHRlckZuRmFjdG9yeTogRmlsdGVyRm5GYWN0b3J5PFQsIEY+O1xuXG4gIGdldCBkZWZhdWx0RmV0Y2hQb2xpY3koKTogJ2NhY2hlLW9ubHknIHtcbiAgICByZXR1cm4gJ2NhY2hlLW9ubHknO1xuICB9XG5cbiAgc2V0IHZhbHVlKGRhdGE6IFRbXSkge1xuICAgIHRoaXMuc2V0VmFsdWUoZGF0YSk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU3ViamVjdC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IHNhdmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpcnR5U3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBkYXRhVHlwZTogbmV3ICgpID0+IFQsXG4gICAgcHJvdGVjdGVkIGZpbHRlclR5cGU6IG5ldyAoKSA9PiBGLFxuICAgIG9wdGlvbnM/OiBTT1xuICApIHtcbiAgICBzdXBlcihudWxsKTtcbiAgICB0aGlzLl9zdGFydEJ5UmVhZHlGdW5jdGlvbiA9IGZhbHNlOyAvLyBOZWVkIHNldFZhbHVlKCkgdG8gYmUgY2FsbGVkLCB0byBzdGFydCB0aGUgc2VydmljZVxuICAgIHRoaXMuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmVzIGFuZCBzZXRzIG9wdGlvbnMgZm9yIHRoZSBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtTT30gb3B0aW9ucyAtIEFuIG9iamVjdCBjb250YWluaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzdWNoIGFzIGBvblNvcnRgLCBgb25Mb2FkYCwgYG9uU2F2ZWAsIGBlcXVhbHNgLCBgZmlsdGVyRm5GYWN0b3J5YCwgYW5kIGBzb3J0QnlSZXBsYWNlbWVudGAuXG4gICAqIEByZXR1cm4ge3ZvaWR9IFRoaXMgbWV0aG9kIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLlxuICAgKi9cbiAgc2V0T3B0aW9ucyhvcHRpb25zOiBTTykge1xuICAgIHRoaXMuX3NvcnRGbiA9IG9wdGlvbnM/Lm9uU29ydCA/PyB0aGlzLl9zb3J0Rm4gPz8gdGhpcy5zb3J0O1xuICAgIHRoaXMuX29uTG9hZCA9IG9wdGlvbnM/Lm9uTG9hZCA/PyB0aGlzLl9vbkxvYWQ7XG4gICAgdGhpcy5fb25TYXZlRm4gPSBvcHRpb25zPy5vblNhdmUgPz8gdGhpcy5fb25TYXZlRm47XG4gICAgdGhpcy5fZXF1YWxzRm4gPSBvcHRpb25zPy5lcXVhbHMgPz8gdGhpcy5fZXF1YWxzRm47XG4gICAgdGhpcy5fZmlsdGVyRm5GYWN0b3J5ID1cbiAgICAgIG9wdGlvbnM/LmZpbHRlckZuRmFjdG9yeSA/PyB0aGlzLl9maWx0ZXJGbkZhY3RvcnkgPz8gKChmKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZikgYXMgRjtcbiAgICAgICAgaWYgKGZpbHRlciBpbnN0YW5jZW9mIEVudGl0eUZpbHRlcikge1xuICAgICAgICAgIHJldHVybiBmaWx0ZXIuYXNGaWx0ZXJGbigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9KVxuICAgIHRoaXMuc29ydEJ5UmVwbGFjZW1lbnQgPSB7XG4gICAgICAuLi50aGlzLnNvcnRCeVJlcGxhY2VtZW50LFxuICAgICAgLi4ub3B0aW9ucz8uc29ydEJ5UmVwbGFjZW1lbnQsXG4gICAgfTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydChkYXRhPzogVFtdKTogUHJvbWlzZTxUW10+IHtcbiAgICBpZiAoIWRhdGEpIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBkYXRhLCB0byBzdGFydCB0aGlzIHNlcnZpY2UnKTtcbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW21lbW9yeS1kYXRhLXNlcnZpY2VdIFN0YXJ0aW5nLi4uJyk7XG4gICAgdGhpcy5faGlkZGVuRGF0YSA9IFtdO1xuICAgIHRoaXMubWFya0FzU2F2ZWQoKTtcbiAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoJ1ttZW1vcnktZGF0YS1zZXJ2aWNlXSBTdG9wcGluZy4uLicpO1xuICAgIHRoaXMuX2hpZGRlbkRhdGEgPSBudWxsO1xuICAgIHRoaXMubWFya0FzU2F2ZWQoKTtcbiAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0b3AoKTtcbiAgfVxuXG4gIHNldFZhbHVlKGRhdGE6IFRbXSkge1xuICAgIC8vIElmIHNlcnZpY2UgYWxyZWFkeSBzdGFydGVkXG4gICAgaWYgKHRoaXMuc3RhcnRlZCkge1xuICAgICAgLy8gVXBkYXRlIHRoZSBkYXRhLCBpZiBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy5kYXRhU3ViamVjdC52YWx1ZSAhPT0gZGF0YSkge1xuICAgICAgICB0aGlzLl9oaWRkZW5EYXRhID0gW107XG4gICAgICAgIHRoaXMuZGF0YVN1YmplY3QubmV4dChkYXRhKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVzZXQgZGlydHkgYW5kIHNhdmluZyBzdGF0ZVxuICAgICAgLy8gKEZpeCBPYnNCaW8gaXNzdWUgb24gc2FtcGxlcyB0YWJsZSA6IHN0aWxsIGRpcnR5IGFmdGVyIHNldHRpbmcgdGhlIHNhbWUgdmFsdWUgYWdhaW4pXG4gICAgICB0aGlzLm1hcmtBc1NhdmVkKCk7XG4gICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgfVxuICAgIC8vIElmIHNlcnZpY2Ugbm90IHN0YXJ0ZWQgeWV0LCB0aGVuIHN0YXJ0IGl0LCB1c2luZyBnaXZlbiBkYXRhXG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0KGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRBbGwoXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgc2l6ZTogbnVtYmVyLFxuICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbixcbiAgICBmaWx0ZXI/OiBGLFxuICAgIG9wdHM/OiBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucyAmIHsgdXBkYXRlSGlkZGVuRGF0YT86IGJvb2xlYW4gfVxuICApOiBQcm9taXNlPExvYWRSZXN1bHQ8VD4+IHtcbiAgICBvZmZzZXQgPSBvZmZzZXQgPj0gMCA/IG9mZnNldCA6IDA7XG4gICAgc2l6ZSA9IHNpemUgPj0gMCA/IHNpemUgOiAtMTtcblxuICAgIGNvbnN0IG9yaWdpbmFsRGF0YSA9IHRoaXMuZGF0YVN1YmplY3QudmFsdWU7XG4gICAgaWYgKGlzTmlsKG9yaWdpbmFsRGF0YSkpIHtcbiAgICAgIGNvbnNvbGUud2FybignW21lbW9yeS1kYXRhLXNlcnZpY2VdIENhbm5vdCBsb2FkIGFsbDogbm8gdmFsdWUgc2V0LiBXaWxsIHJldHVybiBlbXB0eSByZXN1bHQnKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gV2FpdCBzZXJ2aWNlIGlzIHJlYWR5XG4gICAgICBhd2FpdCB0aGlzLnJlYWR5KCk7XG5cbiAgICAgIC8vIFdhaXQgd2hpbGUgYnVzeSAoZS5nLiB3aGVuIHNhdmluZywgb3IgZGVsZXRpbmcpXG4gICAgICBhd2FpdCB0aGlzLndhaXRJZGxlKHsgc3RvcEVycm9yOiBmYWxzZSAvKmF2b2lkIGVycm9yIHdoZW4gc3RvcHBlZCovIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gU2hvdWxkIGJlIGEgc3RvcCBlcnJvcjogbG9nIGFuZCBjb250aW51ZVxuICAgICAgaWYgKCF0aGlzLnN0b3BwZWQpIGNvbnNvbGUuZXJyb3IoJ1VuZXhwZWN0ZWQgZXJyb3IsIHdoaWxlIHdhaXRpbmcgOicsIGVycik7XG4gICAgfVxuXG4gICAgLy8gTWFrZSBzdXJlIHNlcnZpY2UgaXMgbm90IHN0b3BwZWRcbiAgICBpZiAodGhpcy5zdG9wcGVkKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZXhjbHVkZWREYXRhQnlGaWx0ZXI6IFRbXSA9IFtdO1xuICAgIGxldCBleGNsdWRlZERhdGFCeVBhZ2luYXRpb246IFRbXTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoaXNFbXB0eUFycmF5KG9yaWdpbmFsRGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIHsgZGF0YTogW10sIHRvdGFsOiAwIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IHNvcnRcbiAgICAgIGxldCBkYXRhID0gdGhpcy5fc29ydEZuKG9yaWdpbmFsRGF0YSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uKTtcblxuICAgICAgaWYgKHRoaXMuX29uTG9hZCkge1xuICAgICAgICBkYXRhID0gYXdhaXQgdGhpcy5fb25Mb2FkKGRhdGEpO1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBseSBmaWx0ZXIgKHdpbGwgdXBkYXRlIGhpZGRlbkRhdGEpXG4gICAgICBkYXRhID0gdGhpcy5maWx0ZXIoZGF0YSwgZmlsdGVyLCBleGNsdWRlZERhdGFCeUZpbHRlcik7XG5cbiAgICAgIC8vIENvbXB1dGUgdGhlIHRvdGFsIGxlbmd0aFxuICAgICAgY29uc3QgdG90YWwgPSBkYXRhLmxlbmd0aDtcblxuICAgICAgLy8gSWYgcGFnZSBzaXplPTAgKGUuZy4gb25seSBuZWVkIHRvdGFsKVxuICAgICAgaWYgKHNpemUgPT09IDApIHtcbiAgICAgICAgZXhjbHVkZWREYXRhQnlQYWdpbmF0aW9uID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIHsgZGF0YTogW10sIHRvdGFsIH07XG4gICAgICB9XG5cbiAgICAgIC8vIFNsaWNlIGluIGEgcGFnZSAodXNpbmcgb2Zmc2V0IGFuZCBzaXplKVxuICAgICAgaWYgKG9mZnNldCA+IDApIHtcbiAgICAgICAgLy8gT2Zmc2V0IGFmdGVyIHRoZSBlbmQ6IG5vIHJlc3VsdFxuICAgICAgICBpZiAob2Zmc2V0ID49IGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgZXhjbHVkZWREYXRhQnlQYWdpbmF0aW9uID0gZGF0YTtcbiAgICAgICAgICBkYXRhID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXhjbHVkZWREYXRhQnlQYWdpbmF0aW9uID1cbiAgICAgICAgICAgIHNpemUgPiAwICYmIG9mZnNldCArIHNpemUgPCBkYXRhLmxlbmd0aFxuICAgICAgICAgICAgICA/IC8vIFNsaWNlIHVzaW5nIGxpbWl0IHRvIHNpemVcbiAgICAgICAgICAgICAgICBkYXRhLnNsaWNlKDAsIG9mZnNldCkuY29uY2F0KGRhdGEuc2xpY2Uob2Zmc2V0ICsgc2l6ZSkpXG4gICAgICAgICAgICAgIDogLy8gU2xpY2Ugd2l0aG91dCBsaW1pdFxuICAgICAgICAgICAgICAgIGRhdGEuc2xpY2UoMCwgb2Zmc2V0KTtcblxuICAgICAgICAgIGRhdGEgPVxuICAgICAgICAgICAgc2l6ZSA+IDAgJiYgb2Zmc2V0ICsgc2l6ZSA8IGRhdGEubGVuZ3RoXG4gICAgICAgICAgICAgID8gLy8gU2xpY2UgdXNpbmcgbGltaXQgdG8gc2l6ZVxuICAgICAgICAgICAgICAgIGRhdGEuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzaXplKVxuICAgICAgICAgICAgICA6IC8vIFNsaWNlIHdpdGhvdXQgbGltaXRcbiAgICAgICAgICAgICAgICBkYXRhLnNsaWNlKG9mZnNldCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQXBwbHkgYSBsaW1pdFxuICAgICAgZWxzZSBpZiAoc2l6ZSA+IDApIHtcbiAgICAgICAgZXhjbHVkZWREYXRhQnlQYWdpbmF0aW9uID0gZGF0YS5zbGljZShzaXplKTtcbiAgICAgICAgZGF0YSA9IGRhdGEuc2xpY2UoMCwgc2l6ZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIE5vIGxpbWl0OlxuICAgICAgZWxzZSBpZiAoc2l6ZSA9PT0gLTEpIHtcbiAgICAgICAgLy8gS2VlcCBhbGwgZGF0YVxuICAgICAgfVxuXG4gICAgICAvLyAvIVxcIElmIGFscmVhZHkgb2JzZXJ2ZWQsIHRoZW4gYWx3YXlzIGNyZWF0ZSBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGFycmF5XG4gICAgICAvLyBCZWNhdXNlIGRhdGFzb3VyY2Ugd2lsbCBvbmx5IHVwZGF0ZSBpZiB0aGUgYXJyYXkgY2hhbmdlZFxuICAgICAgaWYgKGRhdGEgPT09IG9yaWdpbmFsRGF0YSkge1xuICAgICAgICBkYXRhID0gZGF0YS5zbGljZSgpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXM6IExvYWRSZXN1bHQ8VD4gPSB7IGRhdGEsIHRvdGFsIH07XG5cbiAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSBzaXplID4gMCA/IChvZmZzZXQgfHwgMCkgKyBzaXplIDogdG90YWw7XG4gICAgICBpZiAobmV4dE9mZnNldCA8IHRvdGFsKSB7XG4gICAgICAgIHJlcy5mZXRjaE1vcmUgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5sb2FkQWxsKG5leHRPZmZzZXQsIHNpemUsIHNvcnRCeSwgc29ydERpcmVjdGlvbiwgZmlsdGVyLCB7IC4uLm9wdHMsIHVwZGF0ZUhpZGRlbkRhdGE6IGZhbHNlIH0pO1xuICAgICAgICAgIC8vIFVwZGF0ZSBoaWRkZW4gZGF0YSAocmVtb3ZlIG5ldyBmZXRjaGVkIGl0ZW0pXG4gICAgICAgICAgaWYgKHJlcy5kYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2hpZGRlbkRhdGEgPSB0aGlzLl9oaWRkZW5EYXRhPy5maWx0ZXIoKGl0ZW0pID0+ICFyZXMuZGF0YS5pbmNsdWRlcyhpdGVtKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIFJlbWVtYmVyIGhpZGRlbiBkYXRhXG4gICAgICBpZiAob3B0cz8udXBkYXRlSGlkZGVuRGF0YSAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5faGlkZGVuRGF0YSA9ICFleGNsdWRlZERhdGFCeVBhZ2luYXRpb24gPyBleGNsdWRlZERhdGFCeUZpbHRlciA6IGV4Y2x1ZGVkRGF0YUJ5RmlsdGVyLmNvbmNhdCguLi5leGNsdWRlZERhdGFCeVBhZ2luYXRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLCBzaXplOiBudW1iZXIsIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sIGZpbHRlckRhdGE/OiBGLCBvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PFQ+PiB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0ID49IDAgPyBvZmZzZXQgOiAwO1xuICAgIHNpemUgPSBzaXplID49IDAgPyBzaXplIDogLTE7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhU3ViamVjdC5waXBlKFxuICAgICAgLy8gV2FybiBpZiB3YWl0aW5nIHZhbHVlIHRvIGJlIHNldFxuICAgICAgdGFwKChkYXRhKSA9PiB0aGlzLmRlYnVnICYmICFkYXRhICYmIGNvbnNvbGUuZGVidWcoJ1ttZW1vcnktZGF0YS1zZXJ2aWNlXSBXYWl0aW5nIHZhbHVlIHRvIGJlIHNldC4uLicpKSxcbiAgICAgIGZpbHRlcihpc05vdE5pbCksXG4gICAgICBtZXJnZU1hcCgoXykgPT4gdGhpcy5sb2FkQWxsKG9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXJEYXRhLCBvcHRpb25zKSksXG4gICAgICBmaWx0ZXIoaXNOb3ROaWwpLCAvLyBTa2lwIG5vIHJlc3VsdCAoZS5nLiB3aGVuIHN0b3BwZWQpXG4gICAgICB0YWtlVW50aWwodGhpcy5zdG9wU3ViamVjdClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUFsbChkYXRhOiBUW10sIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPFRbXT4ge1xuICAgIGlmICghdGhpcy5kYXRhU3ViamVjdC52YWx1ZSkgdGhyb3cgbmV3IEVycm9yKCdbbWVtb3J5LXNlcnZpY2VdIENvdWxkIG5vdCBzYXZlLCBiZWNhdXNlIHZhbHVlIG5vdCBzZXQnKTtcblxuICAgIHRoaXMubWFya0FzU2F2aW5nKCk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gUmVzdG9yZSBoaWRkZW4gZGF0YVxuICAgICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLl9oaWRkZW5EYXRhKSkgZGF0YSA9IGRhdGEuY29uY2F0KC4uLnRoaXMuX2hpZGRlbkRhdGEpO1xuXG4gICAgICBpZiAodGhpcy5fb25TYXZlRm4pIHtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5fb25TYXZlRm4oZGF0YSk7XG4gICAgICAgIGRhdGEgPSByZXMgaW5zdGFuY2VvZiBQcm9taXNlID8gYXdhaXQgcmVzIDogcmVzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQoZGF0YSk7XG4gICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5tYXJrQXNTYXZlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUFsbChkYXRhVG9SZW1vdmU6IFRbXSwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgbGV0IGRhdGEgPSB0aGlzLmRhdGFTdWJqZWN0LnZhbHVlO1xuICAgIGlmICghZGF0YSkgdGhyb3cgbmV3IEVycm9yKCdbbWVtb3J5LXNlcnZpY2VdIENvdWxkIG5vdCBkZWxldGUsIGJlY2F1c2UgdmFsdWUgbm90IHNldCcpO1xuXG4gICAgdGhpcy5tYXJrQXNTYXZpbmcoKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBSZW1vdmUgZGVsZXRlZCBpdGVtLCBmcm9tIGRhdGFcbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gZGF0YS5maWx0ZXIoKGVudGl0eSkgPT4ge1xuICAgICAgICBjb25zdCByZW1vdmVkID0gZGF0YVRvUmVtb3ZlLmZpbmRJbmRleCgoZW50aXR5VG9SZW1vdmUpID0+IHRoaXMuZXF1YWxzKGVudGl0eVRvUmVtb3ZlLCBlbnRpdHkpKSAhPT0gLTE7XG4gICAgICAgIHJldHVybiAhcmVtb3ZlZDtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZGVsZXRlQ291bnQgPSBkYXRhLmxlbmd0aCAtIHVwZGF0ZWREYXRhLmxlbmd0aDtcbiAgICAgIGlmIChkZWxldGVDb3VudCA+IDApIHtcbiAgICAgICAgZGF0YSA9IHVwZGF0ZWREYXRhO1xuICAgICAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQoZGF0YSk7XG4gICAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5tYXJrQXNTYXZlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHNvcnQoZGF0YTogVFtdLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uKTogVFtdIHtcbiAgICAvLyBNYWtlIHN1cmUgdG8gZmlsbCBzb3J0QnkgQkVGT1JFIGNoZWNraW5nIGluIHRoZSByZXBsYWNlbWVudCBtYXBcbiAgICBzb3J0QnkgPSBzb3J0QnkgfHwgJ2lkJztcbiAgICAvLyBSZXBsYWNlIHNvcnRCeSwgdXNpbmcgdGhlIHJlcGxhY2VtZW50IG1hcFxuICAgIHNvcnRCeSA9IHRoaXMuc29ydEJ5UmVwbGFjZW1lbnRbc29ydEJ5XSB8fCBzb3J0Qnk7XG5cbiAgICAvLyBFeGVjdXRlIHRoZSBzb3J0XG4gICAgcmV0dXJuIEVudGl0eVV0aWxzLnNvcnQoZGF0YSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uKTtcbiAgfVxuXG4gIGFzRmlsdGVyKHNvdXJjZTogUGFydGlhbDxGPik6IEYge1xuICAgIHJldHVybiBFbnRpdHlGaWx0ZXJVdGlscy5mcm9tT2JqZWN0KHNvdXJjZSwgdGhpcy5maWx0ZXJUeXBlKTtcbiAgfVxuXG4gIGFkZFNvcnRCeVJlcGxhY2VtZW50KHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMuc29ydEJ5UmVwbGFjZW1lbnRbc291cmNlXSA9IHRhcmdldDtcbiAgfVxuXG4gIGVxdWFscyhkMTogVCwgZDI6IFQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fZXF1YWxzRm4pIHJldHVybiB0aGlzLl9lcXVhbHNGbihkMSwgZDIpO1xuICAgIHJldHVybiBkMSAmJiBkMS5lcXVhbHMgPyBkMS5lcXVhbHMoZDIpIDogRW50aXR5VXRpbHMuZXF1YWxzKGQxLCBkMiwgJ2lkJyk7XG4gIH1cblxuICAvKipcbiAgICogQ291bnQgZGF0YSBzdG9yZWQgYnkgdGhlIHNlcnZpY2UgKHdpdGhvdXQgaGlkZGVuIGRhdGEpLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgLy8gZ2V0IHZpc2libGVDb3VudCgpOiBudW1iZXIge1xuICAvLyAgIHJldHVybiAodGhpcy5kYXRhU3ViamVjdC52YWx1ZT8ubGVuZ3RoIHx8IDApO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIENvdW50IGRhdGEgc3RvcmVkIGJ5IHRoZSBzZXJ2aWNlICh3aXRob3V0IGhpZGRlbiBkYXRhKS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSB2aXNpYmxlQ291bnQgLSBXaWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvblxuICAgKi9cbiAgZ2V0IGNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUNvdW50O1xuICB9XG5cbiAgZ2V0IHRvdGFsQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQ291bnQgKyB0aGlzLmhpZGRlbkNvdW50O1xuICB9XG5cbiAgZ2V0IHZpc2libGVDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdWJqZWN0LnZhbHVlPy5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIGdldCBoaWRkZW5Db3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9oaWRkZW5EYXRhPy5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIGFzeW5jIHdhaXRJZGxlKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucykge1xuICAgIGF3YWl0IHRoaXMud2FpdFdoaWxlU2F2aW5nKG9wdHMpO1xuICB9XG5cbiAgbWFya0FzRGlydHkoKSB7XG4gICAgaWYgKCF0aGlzLmRpcnR5U3ViamVjdC52YWx1ZSkge1xuICAgICAgdGhpcy5kaXJ0eVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBtYXJrQXNQcmlzdGluZSgpIHtcbiAgICBpZiAodGhpcy5kaXJ0eVN1YmplY3QudmFsdWUpIHtcbiAgICAgIHRoaXMuZGlydHlTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGZpbHRlcihkYXRhOiBUW10sIF9maWx0ZXI6IEYsIGhpZGRlbkRhdGE6IFRbXSk6IFRbXSB7XG4gICAgLy8gaWYgZmlsdGVyIGlzIERhdGFGaWx0ZXIgaW5zdGFuY2UsIHVzZSBpdHMgdGVzdCBmdW5jdGlvblxuICAgIGNvbnN0IGZpbHRlckZuID0gdGhpcy5fZmlsdGVyRm5GYWN0b3J5ICYmIHRoaXMuX2ZpbHRlckZuRmFjdG9yeShfZmlsdGVyKTtcbiAgICBpZiAoZmlsdGVyRm4pIHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IFtdO1xuXG4gICAgICBkYXRhLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChmaWx0ZXJGbih2YWx1ZSkpIGZpbHRlcmVkRGF0YS5wdXNoKHZhbHVlKTtcbiAgICAgICAgZWxzZSBoaWRkZW5EYXRhLnB1c2godmFsdWUpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBmaWx0ZXJlZERhdGE7XG4gICAgfVxuXG4gICAgLy8gZGVmYXVsdCwgbm8gZmlsdGVyXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29ubmVjdCgpOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU3ViamVjdC5waXBlKFxuICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgIGRhdGEgPSBkYXRhIHx8IFtdO1xuICAgICAgICBjb25zdCB0b3RhbCA9IGRhdGEubGVuZ3RoO1xuICAgICAgICByZXR1cm4geyBkYXRhLCB0b3RhbCB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHdhaXRXaGlsZVNhdmluZyhvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5zYXZpbmcpIHtcbiAgICAgIHJldHVybiBmaXJzdEZhbHNlUHJvbWlzZSh0aGlzLnNhdmluZ1N1YmplY3QsIHtcbiAgICAgICAgc3RvcDogb3B0cz8uc3RvcCB8fCBtZXJnZSh0aGlzLnN0b3BTdWJqZWN0LCB0aGlzLmRhdGFTdWJqZWN0KSwgLy8gU3RvcCBpZiBkZXN0cm95ZWQgb3IgbmV3IGRhdGEgUmVjZWl2ZWRcbiAgICAgICAgc3RvcEVycm9yOiBmYWxzZSwgLy8gQXZvaWQgZXJyb3Igd2hlbiBzdG9wcGVkXG4gICAgICAgIC4uLm9wdHMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0FzU2F2aW5nKCkge1xuICAgIGlmICghdGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlKSB7XG4gICAgICB0aGlzLnNhdmluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0FzU2F2ZWQoKSB7XG4gICAgaWYgKHRoaXMuc2F2aW5nU3ViamVjdC52YWx1ZSkge1xuICAgICAgdGhpcy5zYXZpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cbiAgfVxufVxuIl19
362
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWVudGl0eS1zZXJ2aWNlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvc2VydmljZXMvbWVtb3J5LWVudGl0eS1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUc5RSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQVcsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQWVsRixXQUFXO0FBRVgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyx1QkFPWCxTQUFRLDBCQUFvQztJQXNDaEM7SUFDQTtJQXBDWixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRU4sV0FBVyxHQUFRLElBQUksQ0FBQztJQUV2QixZQUFZLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDbkQsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRW5ELGlCQUFpQixDQUE0QjtJQUMvQyxPQUFPLENBQXFFO0lBQzVFLE9BQU8sQ0FBb0M7SUFDM0MsU0FBUyxDQUFvQztJQUM3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SUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLHlDQUF5QztnQkFDeEcsU0FBUyxFQUFFLEtBQUssRUFBRSwyQkFBMkI7Z0JBQzdDLEdBQUcsSUFBSTthQUNSLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVTLFdBQVc7UUFDbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO3dHQWphVSx1QkFBdUI7NEZBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFGbkMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0VtcHR5QXJyYXksIGlzTmlsLCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zLCBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMsIElFbnRpdGllc1NlcnZpY2UsIExvYWRSZXN1bHQgfSBmcm9tICcuL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlVdGlscywgSUVudGl0eSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEVudGl0eUZpbHRlciwgRW50aXR5RmlsdGVyVXRpbHMgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2ZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBmaXJzdEZhbHNlUHJvbWlzZSwgV2FpdEZvck9wdGlvbnMgfSBmcm9tICcuLi9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBTdGFydGFibGVPYnNlcnZhYmxlU2VydmljZSB9IGZyb20gJy4vc3RhcnRhYmxlLW9ic2VydmFibGUtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBGaWx0ZXJGbiwgRmlsdGVyRm5GYWN0b3J5IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluTWVtb3J5RW50aXRpZXNTZXJ2aWNlT3B0aW9uczxULCBGPiB7XG4gIG9uU29ydD86IChkYXRhOiBUW10sIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24pID0+IFRbXTtcbiAgb25Mb2FkPzogKGRhdGE6IFRbXSkgPT4gVFtdIHwgUHJvbWlzZTxUW10+O1xuICBvblNhdmU/OiAoZGF0YTogVFtdKSA9PiBUW10gfCBQcm9taXNlPFRbXT47XG4gIGVxdWFscz86IChkMTogVCwgZDI6IFQpID0+IGJvb2xlYW47XG5cbiAgZmlsdGVyRm5GYWN0b3J5PzogRmlsdGVyRm5GYWN0b3J5PFQsIEY+O1xuICBmaWx0ZXJGbj86IEZpbHRlckZuPFQ+O1xuXG4gIHNvcnRCeVJlcGxhY2VtZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgSW5NZW1vcnlFbnRpdGllc1NlcnZpY2U8XG4gICAgVCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+LFxuICAgIEYgPSBhbnksXG4gICAgSUQgPSBudW1iZXIsXG4gICAgTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgICBTTyBleHRlbmRzIEluTWVtb3J5RW50aXRpZXNTZXJ2aWNlT3B0aW9uczxULCBGPiA9IEluTWVtb3J5RW50aXRpZXNTZXJ2aWNlT3B0aW9uczxULCBGPlxuICA+XG4gIGV4dGVuZHMgU3RhcnRhYmxlT2JzZXJ2YWJsZVNlcnZpY2U8VFtdLCBUW10+XG4gIGltcGxlbWVudHMgSUVudGl0aWVzU2VydmljZTxULCBGLCBPPiwgT25EZXN0cm95XG57XG4gIGRlYnVnID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaGlkZGVuRGF0YTogVFtdID0gbnVsbDtcblxuICByZWFkb25seSBkaXJ0eVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2F2aW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBzb3J0QnlSZXBsYWNlbWVudDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHJpdmF0ZSBfc29ydEZuOiAoZGF0YTogVFtdLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uKSA9PiBUW107XG4gIHByaXZhdGUgX29uTG9hZDogKGRhdGE6IFRbXSkgPT4gVFtdIHwgUHJvbWlzZTxUW10+O1xuICBwcml2YXRlIF9vblNhdmVGbjogKGRhdGE6IFRbXSkgPT4gVFtdIHwgUHJvbWlzZTxUW10+O1xuICBwcml2YXRlIF9lcXVhbHNGbjogKGQxOiBULCBkMjogVCkgPT4gYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZmlsdGVyRm5GYWN0b3J5OiBGaWx0ZXJGbkZhY3Rvcnk8VCwgRj47XG5cbiAgZ2V0IGRlZmF1bHRGZXRjaFBvbGljeSgpOiAnY2FjaGUtb25seScge1xuICAgIHJldHVybiAnY2FjaGUtb25seSc7XG4gIH1cblxuICBzZXQgdmFsdWUoZGF0YTogVFtdKSB7XG4gICAgdGhpcy5zZXRWYWx1ZShkYXRhKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdWJqZWN0LmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgc2F2aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNhdmluZ1N1YmplY3QudmFsdWU7XG4gIH1cblxuICBnZXQgZGlydHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlydHlTdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGRhdGFUeXBlOiBuZXcgKCkgPT4gVCxcbiAgICBwcm90ZWN0ZWQgZmlsdGVyVHlwZTogbmV3ICgpID0+IEYsXG4gICAgb3B0aW9ucz86IFNPXG4gICkge1xuICAgIHN1cGVyKG51bGwpO1xuICAgIHRoaXMuX3N0YXJ0QnlSZWFkeUZ1bmN0aW9uID0gZmFsc2U7IC8vIE5lZWQgc2V0VmFsdWUoKSB0byBiZSBjYWxsZWQsIHRvIHN0YXJ0IHRoZSBzZXJ2aWNlXG4gICAgdGhpcy5zZXRPcHRpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgYW5kIHNldHMgb3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1NPfSBvcHRpb25zIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgY29uZmlndXJhdGlvbiBvcHRpb25zIHN1Y2ggYXMgYG9uU29ydGAsIGBvbkxvYWRgLCBgb25TYXZlYCwgYGVxdWFsc2AsIGBmaWx0ZXJGbkZhY3RvcnlgLCBhbmQgYHNvcnRCeVJlcGxhY2VtZW50YC5cbiAgICogQHJldHVybiB7dm9pZH0gVGhpcyBtZXRob2QgZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuXG4gICAqL1xuICBzZXRPcHRpb25zKG9wdGlvbnM6IFNPKSB7XG4gICAgdGhpcy5fc29ydEZuID0gb3B0aW9ucz8ub25Tb3J0ID8/IHRoaXMuX3NvcnRGbiA/PyB0aGlzLnNvcnQ7XG4gICAgdGhpcy5fb25Mb2FkID0gb3B0aW9ucz8ub25Mb2FkID8/IHRoaXMuX29uTG9hZDtcbiAgICB0aGlzLl9vblNhdmVGbiA9IG9wdGlvbnM/Lm9uU2F2ZSA/PyB0aGlzLl9vblNhdmVGbjtcbiAgICB0aGlzLl9lcXVhbHNGbiA9IG9wdGlvbnM/LmVxdWFscyA/PyB0aGlzLl9lcXVhbHNGbjtcbiAgICB0aGlzLl9maWx0ZXJGbkZhY3RvcnkgPVxuICAgICAgb3B0aW9ucz8uZmlsdGVyRm5GYWN0b3J5ID8/IHRoaXMuX2ZpbHRlckZuRmFjdG9yeSA/PyAoKGYpID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmKSBhcyBGO1xuICAgICAgICBpZiAoZmlsdGVyIGluc3RhbmNlb2YgRW50aXR5RmlsdGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGZpbHRlci5hc0ZpbHRlckZuKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0pXG4gICAgdGhpcy5zb3J0QnlSZXBsYWNlbWVudCA9IHtcbiAgICAgIC4uLnRoaXMuc29ydEJ5UmVwbGFjZW1lbnQsXG4gICAgICAuLi5vcHRpb25zPy5zb3J0QnlSZXBsYWNlbWVudCxcbiAgICB9O1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KGRhdGE/OiBUW10pOiBQcm9taXNlPFRbXT4ge1xuICAgIGlmICghZGF0YSkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIGRhdGEsIHRvIHN0YXJ0IHRoaXMgc2VydmljZScpO1xuICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKCdbbWVtb3J5LWRhdGEtc2VydmljZV0gU3RhcnRpbmcuLi4nKTtcbiAgICB0aGlzLl9oaWRkZW5EYXRhID0gW107XG4gICAgdGhpcy5tYXJrQXNTYXZlZCgpO1xuICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBuZ09uU3RvcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW21lbW9yeS1kYXRhLXNlcnZpY2VdIFN0b3BwaW5nLi4uJyk7XG4gICAgdGhpcy5faGlkZGVuRGF0YSA9IG51bGw7XG4gICAgdGhpcy5tYXJrQXNTYXZlZCgpO1xuICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RvcCgpO1xuICB9XG5cbiAgc2V0VmFsdWUoZGF0YTogVFtdKSB7XG4gICAgLy8gSWYgc2VydmljZSBhbHJlYWR5IHN0YXJ0ZWRcbiAgICBpZiAodGhpcy5zdGFydGVkKSB7XG4gICAgICAvLyBVcGRhdGUgdGhlIGRhdGEsIGlmIGNoYW5nZWRcbiAgICAgIGlmICh0aGlzLmRhdGFTdWJqZWN0LnZhbHVlICE9PSBkYXRhKSB7XG4gICAgICAgIHRoaXMuX2hpZGRlbkRhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5kYXRhU3ViamVjdC5uZXh0KGRhdGEpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXNldCBkaXJ0eSBhbmQgc2F2aW5nIHN0YXRlXG4gICAgICAvLyAoRml4IE9ic0JpbyBpc3N1ZSBvbiBzYW1wbGVzIHRhYmxlIDogc3RpbGwgZGlydHkgYWZ0ZXIgc2V0dGluZyB0aGUgc2FtZSB2YWx1ZSBhZ2FpbilcbiAgICAgIHRoaXMubWFya0FzU2F2ZWQoKTtcbiAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICB9XG4gICAgLy8gSWYgc2VydmljZSBub3Qgc3RhcnRlZCB5ZXQsIHRoZW4gc3RhcnQgaXQsIHVzaW5nIGdpdmVuIGRhdGFcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnQoZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZEFsbChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBzaXplOiBudW1iZXIsXG4gICAgc29ydEJ5Pzogc3RyaW5nLFxuICAgIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLFxuICAgIGZpbHRlcj86IEYsXG4gICAgb3B0cz86IEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zICYgeyB1cGRhdGVIaWRkZW5EYXRhPzogYm9vbGVhbiB9XG4gICk6IFByb21pc2U8TG9hZFJlc3VsdDxUPj4ge1xuICAgIG9mZnNldCA9IG9mZnNldCA+PSAwID8gb2Zmc2V0IDogMDtcbiAgICBzaXplID0gc2l6ZSA+PSAwID8gc2l6ZSA6IC0xO1xuXG4gICAgY29uc3Qgb3JpZ2luYWxEYXRhID0gdGhpcy5kYXRhU3ViamVjdC52YWx1ZTtcbiAgICBpZiAoaXNOaWwob3JpZ2luYWxEYXRhKSkge1xuICAgICAgY29uc29sZS53YXJuKCdbbWVtb3J5LWRhdGEtc2VydmljZV0gQ2Fubm90IGxvYWQgYWxsOiBubyB2YWx1ZSBzZXQuIFdpbGwgcmV0dXJuIGVtcHR5IHJlc3VsdCcpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBXYWl0IHNlcnZpY2UgaXMgcmVhZHlcbiAgICAgIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgICAgLy8gV2FpdCB3aGlsZSBidXN5IChlLmcuIHdoZW4gc2F2aW5nLCBvciBkZWxldGluZylcbiAgICAgIGF3YWl0IHRoaXMud2FpdElkbGUoeyBzdG9wRXJyb3I6IGZhbHNlIC8qYXZvaWQgZXJyb3Igd2hlbiBzdG9wcGVkKi8gfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBTaG91bGQgYmUgYSBzdG9wIGVycm9yOiBsb2cgYW5kIGNvbnRpbnVlXG4gICAgICBpZiAoIXRoaXMuc3RvcHBlZCkgY29uc29sZS5lcnJvcignVW5leHBlY3RlZCBlcnJvciwgd2hpbGUgd2FpdGluZyA6JywgZXJyKTtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgc2VydmljZSBpcyBub3Qgc3RvcHBlZFxuICAgIGlmICh0aGlzLnN0b3BwZWQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBleGNsdWRlZERhdGFCeUZpbHRlcjogVFtdID0gW107XG4gICAgbGV0IGV4Y2x1ZGVkRGF0YUJ5UGFnaW5hdGlvbjogVFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChpc0VtcHR5QXJyYXkob3JpZ2luYWxEYXRhKSkge1xuICAgICAgICByZXR1cm4geyBkYXRhOiBbXSwgdG90YWw6IDAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gQXBwbHkgc29ydFxuICAgICAgbGV0IGRhdGEgPSB0aGlzLl9zb3J0Rm4ob3JpZ2luYWxEYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgICBpZiAodGhpcy5fb25Mb2FkKSB7XG4gICAgICAgIGRhdGEgPSBhd2FpdCB0aGlzLl9vbkxvYWQoZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IGZpbHRlciAod2lsbCB1cGRhdGUgaGlkZGVuRGF0YSlcbiAgICAgIGRhdGEgPSB0aGlzLmZpbHRlcihkYXRhLCBmaWx0ZXIsIGV4Y2x1ZGVkRGF0YUJ5RmlsdGVyKTtcblxuICAgICAgLy8gQ29tcHV0ZSB0aGUgdG90YWwgbGVuZ3RoXG4gICAgICBjb25zdCB0b3RhbCA9IGRhdGEubGVuZ3RoO1xuXG4gICAgICAvLyBJZiBwYWdlIHNpemU9MCAoZS5nLiBvbmx5IG5lZWQgdG90YWwpXG4gICAgICBpZiAoc2l6ZSA9PT0gMCkge1xuICAgICAgICBleGNsdWRlZERhdGFCeVBhZ2luYXRpb24gPSBkYXRhO1xuICAgICAgICByZXR1cm4geyBkYXRhOiBbXSwgdG90YWwgfTtcbiAgICAgIH1cblxuICAgICAgLy8gU2xpY2UgaW4gYSBwYWdlICh1c2luZyBvZmZzZXQgYW5kIHNpemUpXG4gICAgICBpZiAob2Zmc2V0ID4gMCkge1xuICAgICAgICAvLyBPZmZzZXQgYWZ0ZXIgdGhlIGVuZDogbm8gcmVzdWx0XG4gICAgICAgIGlmIChvZmZzZXQgPj0gZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICBleGNsdWRlZERhdGFCeVBhZ2luYXRpb24gPSBkYXRhO1xuICAgICAgICAgIGRhdGEgPSBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBleGNsdWRlZERhdGFCeVBhZ2luYXRpb24gPVxuICAgICAgICAgICAgc2l6ZSA+IDAgJiYgb2Zmc2V0ICsgc2l6ZSA8IGRhdGEubGVuZ3RoXG4gICAgICAgICAgICAgID8gLy8gU2xpY2UgdXNpbmcgbGltaXQgdG8gc2l6ZVxuICAgICAgICAgICAgICAgIGRhdGEuc2xpY2UoMCwgb2Zmc2V0KS5jb25jYXQoZGF0YS5zbGljZShvZmZzZXQgKyBzaXplKSlcbiAgICAgICAgICAgICAgOiAvLyBTbGljZSB3aXRob3V0IGxpbWl0XG4gICAgICAgICAgICAgICAgZGF0YS5zbGljZSgwLCBvZmZzZXQpO1xuXG4gICAgICAgICAgZGF0YSA9XG4gICAgICAgICAgICBzaXplID4gMCAmJiBvZmZzZXQgKyBzaXplIDwgZGF0YS5sZW5ndGhcbiAgICAgICAgICAgICAgPyAvLyBTbGljZSB1c2luZyBsaW1pdCB0byBzaXplXG4gICAgICAgICAgICAgICAgZGF0YS5zbGljZShvZmZzZXQsIG9mZnNldCArIHNpemUpXG4gICAgICAgICAgICAgIDogLy8gU2xpY2Ugd2l0aG91dCBsaW1pdFxuICAgICAgICAgICAgICAgIGRhdGEuc2xpY2Uob2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBcHBseSBhIGxpbWl0XG4gICAgICBlbHNlIGlmIChzaXplID4gMCkge1xuICAgICAgICBleGNsdWRlZERhdGFCeVBhZ2luYXRpb24gPSBkYXRhLnNsaWNlKHNpemUpO1xuICAgICAgICBkYXRhID0gZGF0YS5zbGljZSgwLCBzaXplKTtcbiAgICAgIH1cblxuICAgICAgLy8gTm8gbGltaXQ6XG4gICAgICBlbHNlIGlmIChzaXplID09PSAtMSkge1xuICAgICAgICAvLyBLZWVwIGFsbCBkYXRhXG4gICAgICB9XG5cbiAgICAgIC8vIC8hXFwgSWYgYWxyZWFkeSBvYnNlcnZlZCwgdGhlbiBhbHdheXMgY3JlYXRlIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgYXJyYXlcbiAgICAgIC8vIEJlY2F1c2UgZGF0YXNvdXJjZSB3aWxsIG9ubHkgdXBkYXRlIGlmIHRoZSBhcnJheSBjaGFuZ2VkXG4gICAgICBpZiAoZGF0YSA9PT0gb3JpZ2luYWxEYXRhKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlczogTG9hZFJlc3VsdDxUPiA9IHsgZGF0YSwgdG90YWwgfTtcblxuICAgICAgY29uc3QgbmV4dE9mZnNldCA9IHNpemUgPiAwID8gKG9mZnNldCB8fCAwKSArIHNpemUgOiB0b3RhbDtcbiAgICAgIGlmIChuZXh0T2Zmc2V0IDwgdG90YWwpIHtcbiAgICAgICAgcmVzLmZldGNoTW9yZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmxvYWRBbGwobmV4dE9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsIHsgLi4ub3B0cywgdXBkYXRlSGlkZGVuRGF0YTogZmFsc2UgfSk7XG4gICAgICAgICAgLy8gVXBkYXRlIGhpZGRlbiBkYXRhIChyZW1vdmUgbmV3IGZldGNoZWQgaXRlbSlcbiAgICAgICAgICBpZiAocmVzLmRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5faGlkZGVuRGF0YSA9IHRoaXMuX2hpZGRlbkRhdGE/LmZpbHRlcigoaXRlbSkgPT4gIXJlcy5kYXRhLmluY2x1ZGVzKGl0ZW0pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gUmVtZW1iZXIgaGlkZGVuIGRhdGFcbiAgICAgIGlmIChvcHRzPy51cGRhdGVIaWRkZW5EYXRhICE9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLl9oaWRkZW5EYXRhID0gIWV4Y2x1ZGVkRGF0YUJ5UGFnaW5hdGlvbiA/IGV4Y2x1ZGVkRGF0YUJ5RmlsdGVyIDogZXhjbHVkZWREYXRhQnlGaWx0ZXIuY29uY2F0KC4uLmV4Y2x1ZGVkRGF0YUJ5UGFnaW5hdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgd2F0Y2hBbGwob2Zmc2V0OiBudW1iZXIsIHNpemU6IG51bWJlciwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbiwgZmlsdGVyRGF0YT86IEYsIG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcbiAgICBvZmZzZXQgPSBvZmZzZXQgPj0gMCA/IG9mZnNldCA6IDA7XG4gICAgc2l6ZSA9IHNpemUgPj0gMCA/IHNpemUgOiAtMTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTdWJqZWN0LnBpcGUoXG4gICAgICAvLyBXYXJuIGlmIHdhaXRpbmcgdmFsdWUgdG8gYmUgc2V0XG4gICAgICB0YXAoKGRhdGEpID0+IHRoaXMuZGVidWcgJiYgIWRhdGEgJiYgY29uc29sZS5kZWJ1ZygnW21lbW9yeS1kYXRhLXNlcnZpY2VdIFdhaXRpbmcgdmFsdWUgdG8gYmUgc2V0Li4uJykpLFxuICAgICAgZmlsdGVyKGlzTm90TmlsKSxcbiAgICAgIG1lcmdlTWFwKChfKSA9PiB0aGlzLmxvYWRBbGwob2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIGZpbHRlckRhdGEsIG9wdGlvbnMpKSxcbiAgICAgIGZpbHRlcihpc05vdE5pbCksIC8vIFNraXAgbm8gcmVzdWx0IChlLmcuIHdoZW4gc3RvcHBlZClcbiAgICAgIHRha2VVbnRpbCh0aGlzLnN0b3BTdWJqZWN0KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzYXZlQWxsKGRhdGE6IFRbXSwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8VFtdPiB7XG4gICAgaWYgKCF0aGlzLmRhdGFTdWJqZWN0LnZhbHVlKSB0aHJvdyBuZXcgRXJyb3IoJ1ttZW1vcnktc2VydmljZV0gQ291bGQgbm90IHNhdmUsIGJlY2F1c2UgdmFsdWUgbm90IHNldCcpO1xuXG4gICAgdGhpcy5tYXJrQXNTYXZpbmcoKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBSZXN0b3JlIGhpZGRlbiBkYXRhXG4gICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMuX2hpZGRlbkRhdGEpKSBkYXRhID0gZGF0YS5jb25jYXQoLi4udGhpcy5faGlkZGVuRGF0YSk7XG5cbiAgICAgIGlmICh0aGlzLl9vblNhdmVGbikge1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLl9vblNhdmVGbihkYXRhKTtcbiAgICAgICAgZGF0YSA9IHJlcyBpbnN0YW5jZW9mIFByb21pc2UgPyBhd2FpdCByZXMgOiByZXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGF0YVN1YmplY3QubmV4dChkYXRhKTtcbiAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm1hcmtBc1NhdmVkKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlQWxsKGRhdGFUb1JlbW92ZTogVFtdLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuZGF0YVN1YmplY3QudmFsdWU7XG4gICAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ1ttZW1vcnktc2VydmljZV0gQ291bGQgbm90IGRlbGV0ZSwgYmVjYXVzZSB2YWx1ZSBub3Qgc2V0Jyk7XG5cbiAgICB0aGlzLm1hcmtBc1NhdmluZygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFJlbW92ZSBkZWxldGVkIGl0ZW0sIGZyb20gZGF0YVxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBkYXRhLmZpbHRlcigoZW50aXR5KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbW92ZWQgPSBkYXRhVG9SZW1vdmUuZmluZEluZGV4KChlbnRpdHlUb1JlbW92ZSkgPT4gdGhpcy5lcXVhbHMoZW50aXR5VG9SZW1vdmUsIGVudGl0eSkpICE9PSAtMTtcbiAgICAgICAgcmV0dXJuICFyZW1vdmVkO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBkZWxldGVDb3VudCA9IGRhdGEubGVuZ3RoIC0gdXBkYXRlZERhdGEubGVuZ3RoO1xuICAgICAgaWYgKGRlbGV0ZUNvdW50ID4gMCkge1xuICAgICAgICBkYXRhID0gdXBkYXRlZERhdGE7XG4gICAgICAgIHRoaXMuZGF0YVN1YmplY3QubmV4dChkYXRhKTtcbiAgICAgICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm1hcmtBc1NhdmVkKCk7XG4gICAgfVxuICB9XG5cbiAgc29ydChkYXRhOiBUW10sIHNvcnRCeT86IHN0cmluZywgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24pOiBUW10ge1xuICAgIC8vIE1ha2Ugc3VyZSB0byBmaWxsIHNvcnRCeSBCRUZPUkUgY2hlY2tpbmcgaW4gdGhlIHJlcGxhY2VtZW50IG1hcFxuICAgIHNvcnRCeSA9IHNvcnRCeSB8fCAnaWQnO1xuICAgIC8vIFJlcGxhY2Ugc29ydEJ5LCB1c2luZyB0aGUgcmVwbGFjZW1lbnQgbWFwXG4gICAgc29ydEJ5ID0gdGhpcy5zb3J0QnlSZXBsYWNlbWVudFtzb3J0QnldIHx8IHNvcnRCeTtcblxuICAgIC8vIEV4ZWN1dGUgdGhlIHNvcnRcbiAgICByZXR1cm4gRW50aXR5VXRpbHMuc29ydChkYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pO1xuICB9XG5cbiAgYXNGaWx0ZXIoc291cmNlOiBQYXJ0aWFsPEY+KTogRiB7XG4gICAgcmV0dXJuIEVudGl0eUZpbHRlclV0aWxzLmZyb21PYmplY3Qoc291cmNlLCB0aGlzLmZpbHRlclR5cGUpO1xuICB9XG5cbiAgYWRkU29ydEJ5UmVwbGFjZW1lbnQoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5zb3J0QnlSZXBsYWNlbWVudFtzb3VyY2VdID0gdGFyZ2V0O1xuICB9XG5cbiAgZXF1YWxzKGQxOiBULCBkMjogVCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9lcXVhbHNGbikgcmV0dXJuIHRoaXMuX2VxdWFsc0ZuKGQxLCBkMik7XG4gICAgcmV0dXJuIGQxICYmIGQxLmVxdWFscyA/IGQxLmVxdWFscyhkMikgOiBFbnRpdHlVdGlscy5lcXVhbHMoZDEsIGQyLCAnaWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudCBkYXRhIHN0b3JlZCBieSB0aGUgc2VydmljZSAod2l0aG91dCBoaWRkZW4gZGF0YSkuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICAvLyBnZXQgdmlzaWJsZUNvdW50KCk6IG51bWJlciB7XG4gIC8vICAgcmV0dXJuICh0aGlzLmRhdGFTdWJqZWN0LnZhbHVlPy5sZW5ndGggfHwgMCk7XG4gIC8vIH1cblxuICAvKipcbiAgICogQ291bnQgZGF0YSBzdG9yZWQgYnkgdGhlIHNlcnZpY2UgKHdpdGhvdXQgaGlkZGVuIGRhdGEpLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIHZpc2libGVDb3VudCAtIFdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uXG4gICAqL1xuICBnZXQgY291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQ291bnQ7XG4gIH1cblxuICBnZXQgdG90YWxDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVDb3VudCArIHRoaXMuaGlkZGVuQ291bnQ7XG4gIH1cblxuICBnZXQgdmlzaWJsZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN1YmplY3QudmFsdWU/Lmxlbmd0aCA/PyAwO1xuICB9XG5cbiAgZ2V0IGhpZGRlbkNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGRlbkRhdGE/Lmxlbmd0aCA/PyAwO1xuICB9XG5cbiAgYXN5bmMgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKSB7XG4gICAgYXdhaXQgdGhpcy53YWl0V2hpbGVTYXZpbmcob3B0cyk7XG4gIH1cblxuICBtYXJrQXNEaXJ0eSgpIHtcbiAgICBpZiAoIXRoaXMuZGlydHlTdWJqZWN0LnZhbHVlKSB7XG4gICAgICB0aGlzLmRpcnR5U3ViamVjdC5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG1hcmtBc1ByaXN0aW5lKCkge1xuICAgIGlmICh0aGlzLmRpcnR5U3ViamVjdC52YWx1ZSkge1xuICAgICAgdGhpcy5kaXJ0eVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgZmlsdGVyKGRhdGE6IFRbXSwgX2ZpbHRlcjogRiwgaGlkZGVuRGF0YTogVFtdKTogVFtdIHtcbiAgICAvLyBpZiBmaWx0ZXIgaXMgRGF0YUZpbHRlciBpbnN0YW5jZSwgdXNlIGl0cyB0ZXN0IGZ1bmN0aW9uXG4gICAgY29uc3QgZmlsdGVyRm4gPSB0aGlzLl9maWx0ZXJGbkZhY3RvcnkgJiYgdGhpcy5fZmlsdGVyRm5GYWN0b3J5KF9maWx0ZXIpO1xuICAgIGlmIChmaWx0ZXJGbikge1xuICAgICAgcmV0dXJuIGRhdGEucmVkdWNlKChyZXMsIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChmaWx0ZXJGbih2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gcmVzLmNvbmNhdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaGlkZGVuRGF0YS5wdXNoKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0sIFtdKTtcbiAgICB9XG5cbiAgICAvLyBkZWZhdWx0LCBubyBmaWx0ZXJcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25uZWN0KCk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxUPj4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdWJqZWN0LnBpcGUoXG4gICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgZGF0YSA9IGRhdGEgfHwgW107XG4gICAgICAgIGNvbnN0IHRvdGFsID0gZGF0YS5sZW5ndGg7XG4gICAgICAgIHJldHVybiB7IGRhdGEsIHRvdGFsIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgd2FpdFdoaWxlU2F2aW5nKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnNhdmluZykge1xuICAgICAgcmV0dXJuIGZpcnN0RmFsc2VQcm9taXNlKHRoaXMuc2F2aW5nU3ViamVjdCwge1xuICAgICAgICBzdG9wOiBvcHRzPy5zdG9wIHx8IG1lcmdlKHRoaXMuc3RvcFN1YmplY3QsIHRoaXMuZGF0YVN1YmplY3QpLCAvLyBTdG9wIGlmIGRlc3Ryb3llZCBvciBuZXcgZGF0YSBSZWNlaXZlZFxuICAgICAgICBzdG9wRXJyb3I6IGZhbHNlLCAvLyBBdm9pZCBlcnJvciB3aGVuIHN0b3BwZWRcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrQXNTYXZpbmcoKSB7XG4gICAgaWYgKCF0aGlzLnNhdmluZ1N1YmplY3QudmFsdWUpIHtcbiAgICAgIHRoaXMuc2F2aW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrQXNTYXZlZCgpIHtcbiAgICBpZiAodGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlKSB7XG4gICAgICB0aGlzLnNhdmluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -27,13 +27,14 @@ export class FormErrorTranslator {
27
27
  return (errors &&
28
28
  Object.keys(errors).reduce((res, path) => {
29
29
  const childControl = control.get(path);
30
- const childErrors = errors[path];
30
+ let childErrors = errors[path];
31
31
  // Should be a control map of errors
32
32
  if (childControl) {
33
33
  // Try to convert the control path
34
34
  const i18nPath = this.translateFormPath(path, opts);
35
35
  // OK, we have a field name: use it
36
- const columnErrors = Object.keys({ ...childErrors, ...childControl.errors }).map((errorKey) => this.translateError(errorKey, childControl.errors[errorKey]));
36
+ childErrors = { ...childErrors, ...childControl.errors };
37
+ const columnErrors = Object.keys(childErrors).map((errorKey) => this.translateError(errorKey, childErrors[errorKey]));
37
38
  if (isEmptyArray(columnErrors))
38
39
  return res;
39
40
  // Add separator
@@ -112,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
112
113
  type: Inject,
113
114
  args: [APP_FORM_ERROR_I18N_KEYS]
114
115
  }] }] });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci1hZGFwdGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvdmFsaWRhdG9yL2Zvcm0tZXJyb3ItYWRhcHRlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFLaEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQW9CLGtCQUFrQixDQUFDLENBQUM7QUFrQmxHLE1BQU0sT0FBTyxtQkFBbUI7SUFJcEI7SUFDQTtJQUpPLGFBQWEsQ0FBb0I7SUFFbEQsWUFDVSxTQUEyQixFQUMzQixnQkFBeUMsRUFDSCxhQUFnQztRQUZ0RSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBR2pELElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlO1lBQ25DLEdBQUcsYUFBYTtTQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQXdCLEVBQUUsSUFBZ0M7UUFDNUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFNUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNuRCxNQUFNLFNBQVMsR0FBRyxDQUFD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QUUsQ0FBQztRQUMzRixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCLEVBQUUsWUFBa0I7UUFDakQsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7WUFDNUIsbUVBQW1FO1lBQ25FLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVsRSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDaEUsSUFBSSxPQUFPLEtBQUssV0FBVztZQUFFLE9BQU8sV0FBVyxDQUFDO1FBRWhELCtDQUErQztRQUMvQyxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuRCxJQUFJLFlBQVksS0FBSyxXQUFXO2dCQUFFLE9BQU8sV0FBVyxDQUFDO1FBQ3ZELENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsT0FBTyxDQUFDLEtBQUssQ0FDWCxvREFBb0QsUUFBUSxnRkFBZ0YsQ0FDN0ksQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7d0dBN0dVLG1CQUFtQix5RkFNUix3QkFBd0I7NEdBTm5DLG1CQUFtQixjQUROLE1BQU07OzRGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFPN0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGFuZ2VDYXNlVG9VbmRlcnNjb3JlLCBpc0VtcHR5QXJyYXksIGlzTmlsIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBcHBGb3JtVXRpbHMgfSBmcm9tICcuLi8uLi9jb3JlL2Zvcm0vZm9ybS51dGlscyc7XG5pbXBvcnQgeyBTaGFyZWRWYWxpZGF0b3JzIH0gZnJvbSAnLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IE9iamVjdE1hcCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEZvcm1FcnJvcnMgfSBmcm9tICcuLi9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS1jb250ZXh0LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgQVBQX0ZPUk1fRVJST1JfSTE4Tl9LRVlTID0gbmV3IEluamVjdGlvblRva2VuPE9iamVjdE1hcDxzdHJpbmc+PignYXBwRm9ybUVycm9yS2V5cycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtUGF0aFRyYW5zbGF0b3JPcHRpb25zIHtcbiAgaTE4blByZWZpeD86IHN0cmluZztcbiAgaTE4blN1ZmZpeD86IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVBhdGhUcmFuc2xhdG9yPE8gZXh0ZW5kcyBJRm9ybVBhdGhUcmFuc2xhdG9yT3B0aW9ucyA9IElGb3JtUGF0aFRyYW5zbGF0b3JPcHRpb25zPiB7XG4gIHRyYW5zbGF0ZUZvcm1QYXRoOiAocGF0aDogc3RyaW5nLCBvcHRzPzogTykgPT4gc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FcnJvclRyYW5zbGF0ZU9wdGlvbnMgZXh0ZW5kcyBJRm9ybVBhdGhUcmFuc2xhdG9yT3B0aW9ucyB7XG4gIHBhdGhUcmFuc2xhdG9yPzogSUZvcm1QYXRoVHJhbnNsYXRvcjtcbiAgc2VwYXJhdG9yPzogc3RyaW5nO1xuICByZWN1cnNpdmU/OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEZvcm1FcnJvclRyYW5zbGF0b3IgaW1wbGVtZW50cyBJRm9ybVBhdGhUcmFuc2xhdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvckkxOG5LZXlzOiBPYmplY3RNYXA8c3RyaW5nPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZUNvbnRleHQ6IFRyYW5zbGF0ZUNvbnRleHRTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0ZPUk1fRVJST1JfSTE4Tl9LRVlTKSBlcnJvckkxOG5LZXlzOiBPYmplY3RNYXA8c3RyaW5nPlxuICApIHtcbiAgICB0aGlzLmVycm9ySTE4bktleXMgPSB7XG4gICAgICAuLi5TaGFyZWRWYWxpZGF0b3JzLkkxOE5fRVJST1JfS0VZUyxcbiAgICAgIC4uLmVycm9ySTE4bktleXMsXG4gICAgfTtcbiAgfVxuXG4gIHRyYW5zbGF0ZUZvcm1FcnJvcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBvcHRzPzogRm9ybUVycm9yVHJhbnNsYXRlT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgaWYgKCFjb250cm9sIHx8ICFjb250cm9sLmludmFsaWQpIHJldHVybiAnJztcblxuICAgIGNvbnN0IHNlcGFyYXRvciA9IChvcHRzICYmIG9wdHMuc2VwYXJhdG9yKSB8fCAnLCAnO1xuICAgIGNvbnN0IHJlY3Vyc2l2ZSA9ICFvcHRzIHx8IG9wdHMucmVjdXJzaXZlICE9PSBmYWxzZTtcbiAgICBjb25zdCBlcnJvcnMgPSBBcHBGb3JtVXRpbHMuZ2V0Rm9ybUVycm9ycyhjb250cm9sLCB7IHJlY3Vyc2l2ZSB9KTtcbiAgICByZXR1cm4gKFxuICAgICAgZXJyb3JzICYmXG4gICAgICBPYmplY3Qua2V5cyhlcnJvcnMpLnJlZHVjZSgocmVzLCBwYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkQ29udHJvbCA9IGNvbnRyb2wuZ2V0KHBhdGgpO1xuICAgICAgICBjb25zdCBjaGlsZEVycm9ycyA9IGVycm9yc1twYXRoXTtcbiAgICAgICAgLy8gU2hvdWxkIGJlIGEgY29udHJvbCBtYXAgb2YgZXJyb3JzXG4gICAgICAgIGlmIChjaGlsZENvbnRyb2wpIHtcbiAgICAgICAgICAvLyBUcnkgdG8gY29udmVydCB0aGUgY29udHJvbCBwYXRoXG4gICAgICAgICAgY29uc3QgaTE4blBhdGggPSB0aGlzLnRyYW5zbGF0ZUZvcm1QYXRoKHBhdGgsIG9wdHMpO1xuXG4gICAgICAgICAgLy8gT0ssIHdlIGhhdmUgYSBmaWVsZCBuYW1lOiB1c2UgaXRcbiAgICAgICAgICBjb25zdCBjb2x1bW5FcnJvcnMgPSBPYmplY3Qua2V5cyh7IC4uLmNoaWxkRXJyb3JzLCAuLi5jaGlsZENvbnRyb2wuZXJyb3JzIH0pLm1hcCgoZXJyb3JLZXkpID0+XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZUVycm9yKGVycm9yS2V5LCBjaGlsZENvbnRyb2wuZXJyb3JzW2Vycm9yS2V5XSlcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChpc0VtcHR5QXJyYXkoY29sdW1uRXJyb3JzKSkgcmV0dXJuIHJlcztcbiAgICAgICAgICAvLyBBZGQgc2VwYXJhdG9yXG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGgpIHJlcyArPSBzZXBhcmF0b3I7XG4gICAgICAgICAgcmV0dXJuIHJlcyArIGkxOG5QYXRoICsgJzogJyArIGNvbHVtbkVycm9ycy5qb2luKHNlcGFyYXRvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPciB0cnkgYXMgZ2xvYmFsIGZvcm0gZXJyb3JcbiAgICAgICAgY29uc3QgZm9ybUVycm9yID0gdGhpcy50cmFuc2xhdGVFcnJvcihwYXRoLCBlcnJvcnNbcGF0aF0pO1xuICAgICAgICBpZiAoaXNOaWwoZm9ybUVycm9yKSkgcmV0dXJuIHJlcztcbiAgICAgICAgcmV0dXJuIHJlcyArIChyZXMubGVuZ3RoID8gc2VwYXJhdG9yIDogJycpICsgZm9ybUVycm9yO1xuICAgICAgfSwgJycpXG4gICAgKTtcbiAgfVxuXG4gIHRyYW5zbGF0ZUVycm9ycyhlcnJvcnM6IEZvcm1FcnJvcnMsIG9wdHM/OiBGb3JtRXJyb3JUcmFuc2xhdGVPcHRpb25zKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZXBhcmF0b3IgPSAob3B0cyAmJiBvcHRzLnNlcGFyYXRvcikgfHwgJywgJztcbiAgICByZXR1cm4gKFxuICAgICAgZXJyb3JzICYmXG4gICAgICBPYmplY3Qua2V5cyhlcnJvcnMpLnJlZHVjZSgocmVzLCBwYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGhFcnJvcnMgPSBlcnJvcnNbcGF0aF07XG4gICAgICAgIC8vIFNob3VsZCBiZSBhIGNvbnRyb2wgbWFwIG9mIGVycm9yc1xuXG4gICAgICAgIGlmICh0eXBlb2YgcGF0aEVycm9ycyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkocGF0aEVycm9ycykpIHtcbiAgICAgICAgICAvLyBUcnkgdG8gY29udmVydCB0aGUgY29udHJvbCBwYXRoXG4gICAgICAgICAgY29uc3QgaTE4blBhdGggPSB0aGlzLnRyYW5zbGF0ZUZvcm1QYXRoKHBhdGgsIG9wdHMpO1xuXG4gICAgICAgICAgLy8gT0ssIHdlIGhhdmUgYSBmaWVsZCBuYW1lOiB1c2UgaXRcbiAgICAgICAgICBjb25zdCBjb2x1bW5FcnJvcnMgPSBPYmplY3Qua2V5cyhwYXRoRXJyb3JzKS5tYXAoKGVycm9yS2V5KSA9PiB0aGlzLnRyYW5zbGF0ZUVycm9yKGVycm9yS2V5LCBwYXRoRXJyb3JzW2Vycm9yS2V5XSkpO1xuICAgICAgICAgIGlmIChpc0VtcHR5QXJyYXkoY29sdW1uRXJyb3JzKSkgcmV0dXJuIHJlcztcbiAgICAgICAgICAvLyBBZGQgc2VwYXJhdG9yXG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGgpIHJlcyArPSBzZXBhcmF0b3I7XG4gICAgICAgICAgcmV0dXJuIHJlcyArIGkxOG5QYXRoICsgJzogJyArIGNvbHVtbkVycm9ycy5qb2luKHNlcGFyYXRvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPciB0cnkgYXMgZ2xvYmFsIGZvcm0gZXJyb3JcbiAgICAgICAgY29uc3QgZm9ybUVycm9yID0gdGhpcy50cmFuc2xhdGVFcnJvcihwYXRoLCBwYXRoRXJyb3JzKTtcbiAgICAgICAgaWYgKGlzTmlsKGZvcm1FcnJvcikpIHJldHVybiByZXM7XG4gICAgICAgIHJldHVybiByZXMgKyAocmVzLmxlbmd0aCA/IHNlcGFyYXRvciA6ICcnKSArIGZvcm1FcnJvcjtcbiAgICAgIH0sICcnKVxuICAgICk7XG4gIH1cblxuICB0cmFuc2xhdGVGb3JtUGF0aChwYXRoOiBzdHJpbmcsIG9wdHM/OiBGb3JtRXJyb3JUcmFuc2xhdGVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAvLyBEZWxlZ2F0ZSB0byBhIHBhdGggdHJhbnNsYXRvciwgaWYgYW55XG4gICAgaWYgKG9wdHM/LnBhdGhUcmFuc2xhdG9yICYmIG9wdHMucGF0aFRyYW5zbGF0b3IgIT09IHRoaXMpIHtcbiAgICAgIHJldHVybiBvcHRzLnBhdGhUcmFuc2xhdG9yLnRyYW5zbGF0ZUZvcm1QYXRoKHBhdGgsIHsgLi4ub3B0cywgcGF0aFRyYW5zbGF0b3I6IG51bGwgLyphdm9pZCByZWN1cnNpdmUgY2FsbCovIH0pO1xuICAgIH1cblxuICAgIC8vIERlZmF1bHQgdHJhbnNsYXRpb25cbiAgICBjb25zdCBmaWVsZE5hbWUgPSBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcbiAgICBjb25zdCBpMThuS2V5ID0gKG9wdHM/LmkxOG5QcmVmaXggfHwgJycpICsgY2hhbmdlQ2FzZVRvVW5kZXJzY29yZShmaWVsZE5hbWUpLnRvVXBwZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlQ29udGV4dC5pbnN0YW50KGkxOG5LZXksIG9wdHM/LmkxOG5TdWZmaXgpO1xuICB9XG5cbiAgdHJhbnNsYXRlRXJyb3IoZXJyb3JLZXk6IHN0cmluZywgZXJyb3JDb250ZW50PzogYW55KSB7XG4gICAgY29uc3QgaTE4bktleSA9XG4gICAgICB0aGlzLmVycm9ySTE4bktleXNbZXJyb3JLZXldIHx8XG4gICAgICAvLyBUcnkgdG8gZ2VuZXJhdGUgYSBzdGFuZGFyZCBlcnJvciBrZXksIGxpa2UgJ0VSUk9SLkZJRUxEX3h4eF94eHgnXG4gICAgICAnRVJST1IuRklFTERfJyArIGNoYW5nZUNhc2VUb1VuZGVyc2NvcmUoZXJyb3JLZXkpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICBsZXQgaTE4bk1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGkxOG5LZXksIGVycm9yQ29udGVudCk7XG4gICAgaWYgKGkxOG5LZXkgIT09IGkxOG5NZXNzYWdlKSByZXR1cm4gaTE4bk1lc3NhZ2U7XG5cbiAgICAvLyBUcnkgdG8gdXNlIHRoZSBlcnJvciBjb250ZW50LCBhcyBhbiBpMThuIGtleVxuICAgIGlmICh0eXBlb2YgZXJyb3JDb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgaTE4bk1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGVycm9yQ29udGVudCk7XG4gICAgICBpZiAoZXJyb3JDb250ZW50ICE9PSBpMThuTWVzc2FnZSkgcmV0dXJuIGkxOG5NZXNzYWdlO1xuICAgIH1cblxuICAgIC8vIE5vdCB0cmFuc2xhdGVkOiBzaG93IGVycm9yXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBbZm9ybS1lcnJvci1hZGFwdGVyXSBDYW5ub3QgdHJhbnNsYXRlIGVycm9yIGtleSAnJHtlcnJvcktleX0nLiBQbGVhc2UgYWRkIG1vcmUgZm9ybUVycm9yc0tleSBpbnRvIEFQUF9GT1JNX0VSUk9SX0kxOE5fS0VZUyBpbmplY3Rpb24gdG9rZW5gXG4gICAgKTtcblxuICAgIHJldHVybiBlcnJvcktleTtcbiAgfVxufVxuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci1hZGFwdGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvdmFsaWRhdG9yL2Zvcm0tZXJyb3ItYWRhcHRlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFLaEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQW9CLGtCQUFrQixDQUFDLENBQUM7QUFrQmxHLE1BQU0sT0FBTyxtQkFBbUI7SUFJcEI7SUFDQTtJQUpPLGFBQWEsQ0FBb0I7SUFFbEQsWUFDVSxTQUEyQixFQUMzQixnQkFBeUMsRUFDSCxhQUFnQztRQUZ0RSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBR2pELElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlO1lBQ25DLEdBQUcsYUFBYTtTQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQXdCLEVBQUUsSUFBZ0M7UUFDNUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFNUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNuRCxNQUFNLFNBQVMsR0FBRyxDQUFD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Q0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNGLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxjQUFjLENBQUMsUUFBZ0IsRUFBRSxZQUFrQjtRQUNqRCxNQUFNLE9BQU8sR0FDWCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztZQUM1QixtRUFBbUU7WUFDbkUsY0FBYyxHQUFHLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWxFLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNoRSxJQUFJLE9BQU8sS0FBSyxXQUFXO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFFaEQsK0NBQStDO1FBQy9DLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25ELElBQUksWUFBWSxLQUFLLFdBQVc7Z0JBQUUsT0FBTyxXQUFXLENBQUM7UUFDdkQsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixPQUFPLENBQUMsS0FBSyxDQUNYLG9EQUFvRCxRQUFRLGdGQUFnRixDQUM3SSxDQUFDO1FBRUYsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzt3R0E5R1UsbUJBQW1CLHlGQU1SLHdCQUF3Qjs0R0FObkMsbUJBQW1CLGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQU83QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNoYW5nZUNhc2VUb1VuZGVyc2NvcmUsIGlzRW1wdHlBcnJheSwgaXNOaWwgfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFwcEZvcm1VdGlscyB9IGZyb20gJy4uLy4uL2NvcmUvZm9ybS9mb3JtLnV0aWxzJztcbmltcG9ydCB7IFNoYXJlZFZhbGlkYXRvcnMgfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgT2JqZWN0TWFwIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRm9ybUVycm9ycyB9IGZyb20gJy4uL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRlLWNvbnRleHQuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBBUFBfRk9STV9FUlJPUl9JMThOX0tFWVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JqZWN0TWFwPHN0cmluZz4+KCdhcHBGb3JtRXJyb3JLZXlzJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1QYXRoVHJhbnNsYXRvck9wdGlvbnMge1xuICBpMThuUHJlZml4Pzogc3RyaW5nO1xuICBpMThuU3VmZml4Pzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIElGb3JtUGF0aFRyYW5zbGF0b3I8TyBleHRlbmRzIElGb3JtUGF0aFRyYW5zbGF0b3JPcHRpb25zID0gSUZvcm1QYXRoVHJhbnNsYXRvck9wdGlvbnM+IHtcbiAgdHJhbnNsYXRlRm9ybVBhdGg6IChwYXRoOiBzdHJpbmcsIG9wdHM/OiBPKSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVycm9yVHJhbnNsYXRlT3B0aW9ucyBleHRlbmRzIElGb3JtUGF0aFRyYW5zbGF0b3JPcHRpb25zIHtcbiAgcGF0aFRyYW5zbGF0b3I/OiBJRm9ybVBhdGhUcmFuc2xhdG9yO1xuICBzZXBhcmF0b3I/OiBzdHJpbmc7XG4gIHJlY3Vyc2l2ZT86IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRm9ybUVycm9yVHJhbnNsYXRvciBpbXBsZW1lbnRzIElGb3JtUGF0aFRyYW5zbGF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGVycm9ySTE4bktleXM6IE9iamVjdE1hcDxzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlQ29udGV4dDogVHJhbnNsYXRlQ29udGV4dFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUFBfRk9STV9FUlJPUl9JMThOX0tFWVMpIGVycm9ySTE4bktleXM6IE9iamVjdE1hcDxzdHJpbmc+XG4gICkge1xuICAgIHRoaXMuZXJyb3JJMThuS2V5cyA9IHtcbiAgICAgIC4uLlNoYXJlZFZhbGlkYXRvcnMuSTE4Tl9FUlJPUl9LRVlTLFxuICAgICAgLi4uZXJyb3JJMThuS2V5cyxcbiAgICB9O1xuICB9XG5cbiAgdHJhbnNsYXRlRm9ybUVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdHM/OiBGb3JtRXJyb3JUcmFuc2xhdGVPcHRpb25zKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbnRyb2wgfHwgIWNvbnRyb2wuaW52YWxpZCkgcmV0dXJuICcnO1xuXG4gICAgY29uc3Qgc2VwYXJhdG9yID0gKG9wdHMgJiYgb3B0cy5zZXBhcmF0b3IpIHx8ICcsICc7XG4gICAgY29uc3QgcmVjdXJzaXZlID0gIW9wdHMgfHwgb3B0cy5yZWN1cnNpdmUgIT09IGZhbHNlO1xuICAgIGNvbnN0IGVycm9ycyA9IEFwcEZvcm1VdGlscy5nZXRGb3JtRXJyb3JzKGNvbnRyb2wsIHsgcmVjdXJzaXZlIH0pO1xuICAgIHJldHVybiAoXG4gICAgICBlcnJvcnMgJiZcbiAgICAgIE9iamVjdC5rZXlzKGVycm9ycykucmVkdWNlKChyZXMsIHBhdGgpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGRDb250cm9sID0gY29udHJvbC5nZXQocGF0aCk7XG4gICAgICAgIGxldCBjaGlsZEVycm9ycyA9IGVycm9yc1twYXRoXTtcbiAgICAgICAgLy8gU2hvdWxkIGJlIGEgY29udHJvbCBtYXAgb2YgZXJyb3JzXG4gICAgICAgIGlmIChjaGlsZENvbnRyb2wpIHtcbiAgICAgICAgICAvLyBUcnkgdG8gY29udmVydCB0aGUgY29udHJvbCBwYXRoXG4gICAgICAgICAgY29uc3QgaTE4blBhdGggPSB0aGlzLnRyYW5zbGF0ZUZvcm1QYXRoKHBhdGgsIG9wdHMpO1xuXG4gICAgICAgICAgLy8gT0ssIHdlIGhhdmUgYSBmaWVsZCBuYW1lOiB1c2UgaXRcbiAgICAgICAgICBjaGlsZEVycm9ycyA9IHsgLi4uY2hpbGRFcnJvcnMsIC4uLmNoaWxkQ29udHJvbC5lcnJvcnMgfVxuICAgICAgICAgIGNvbnN0IGNvbHVtbkVycm9ycyA9IE9iamVjdC5rZXlzKGNoaWxkRXJyb3JzKS5tYXAoKGVycm9yS2V5KSA9PlxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVFcnJvcihlcnJvcktleSwgY2hpbGRFcnJvcnNbZXJyb3JLZXldKVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGlzRW1wdHlBcnJheShjb2x1bW5FcnJvcnMpKSByZXR1cm4gcmVzO1xuICAgICAgICAgIC8vIEFkZCBzZXBhcmF0b3JcbiAgICAgICAgICBpZiAocmVzLmxlbmd0aCkgcmVzICs9IHNlcGFyYXRvcjtcbiAgICAgICAgICByZXR1cm4gcmVzICsgaTE4blBhdGggKyAnOiAnICsgY29sdW1uRXJyb3JzLmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9yIHRyeSBhcyBnbG9iYWwgZm9ybSBlcnJvclxuICAgICAgICBjb25zdCBmb3JtRXJyb3IgPSB0aGlzLnRyYW5zbGF0ZUVycm9yKHBhdGgsIGVycm9yc1twYXRoXSk7XG4gICAgICAgIGlmIChpc05pbChmb3JtRXJyb3IpKSByZXR1cm4gcmVzO1xuICAgICAgICByZXR1cm4gcmVzICsgKHJlcy5sZW5ndGggPyBzZXBhcmF0b3IgOiAnJykgKyBmb3JtRXJyb3I7XG4gICAgICB9LCAnJylcbiAgICApO1xuICB9XG5cbiAgdHJhbnNsYXRlRXJyb3JzKGVycm9yczogRm9ybUVycm9ycywgb3B0cz86IEZvcm1FcnJvclRyYW5zbGF0ZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IChvcHRzICYmIG9wdHMuc2VwYXJhdG9yKSB8fCAnLCAnO1xuICAgIHJldHVybiAoXG4gICAgICBlcnJvcnMgJiZcbiAgICAgIE9iamVjdC5rZXlzKGVycm9ycykucmVkdWNlKChyZXMsIHBhdGgpID0+IHtcbiAgICAgICAgY29uc3QgcGF0aEVycm9ycyA9IGVycm9yc1twYXRoXTtcbiAgICAgICAgLy8gU2hvdWxkIGJlIGEgY29udHJvbCBtYXAgb2YgZXJyb3JzXG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoRXJyb3JzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShwYXRoRXJyb3JzKSkge1xuICAgICAgICAgIC8vIFRyeSB0byBjb252ZXJ0IHRoZSBjb250cm9sIHBhdGhcbiAgICAgICAgICBjb25zdCBpMThuUGF0aCA9IHRoaXMudHJhbnNsYXRlRm9ybVBhdGgocGF0aCwgb3B0cyk7XG5cbiAgICAgICAgICAvLyBPSywgd2UgaGF2ZSBhIGZpZWxkIG5hbWU6IHVzZSBpdFxuICAgICAgICAgIGNvbnN0IGNvbHVtbkVycm9ycyA9IE9iamVjdC5rZXlzKHBhdGhFcnJvcnMpLm1hcCgoZXJyb3JLZXkpID0+IHRoaXMudHJhbnNsYXRlRXJyb3IoZXJyb3JLZXksIHBhdGhFcnJvcnNbZXJyb3JLZXldKSk7XG4gICAgICAgICAgaWYgKGlzRW1wdHlBcnJheShjb2x1bW5FcnJvcnMpKSByZXR1cm4gcmVzO1xuICAgICAgICAgIC8vIEFkZCBzZXBhcmF0b3JcbiAgICAgICAgICBpZiAocmVzLmxlbmd0aCkgcmVzICs9IHNlcGFyYXRvcjtcbiAgICAgICAgICByZXR1cm4gcmVzICsgaTE4blBhdGggKyAnOiAnICsgY29sdW1uRXJyb3JzLmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9yIHRyeSBhcyBnbG9iYWwgZm9ybSBlcnJvclxuICAgICAgICBjb25zdCBmb3JtRXJyb3IgPSB0aGlzLnRyYW5zbGF0ZUVycm9yKHBhdGgsIHBhdGhFcnJvcnMpO1xuICAgICAgICBpZiAoaXNOaWwoZm9ybUVycm9yKSkgcmV0dXJuIHJlcztcbiAgICAgICAgcmV0dXJuIHJlcyArIChyZXMubGVuZ3RoID8gc2VwYXJhdG9yIDogJycpICsgZm9ybUVycm9yO1xuICAgICAgfSwgJycpXG4gICAgKTtcbiAgfVxuXG4gIHRyYW5zbGF0ZUZvcm1QYXRoKHBhdGg6IHN0cmluZywgb3B0cz86IEZvcm1FcnJvclRyYW5zbGF0ZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgIC8vIERlbGVnYXRlIHRvIGEgcGF0aCB0cmFuc2xhdG9yLCBpZiBhbnlcbiAgICBpZiAob3B0cz8ucGF0aFRyYW5zbGF0b3IgJiYgb3B0cy5wYXRoVHJhbnNsYXRvciAhPT0gdGhpcykge1xuICAgICAgcmV0dXJuIG9wdHMucGF0aFRyYW5zbGF0b3IudHJhbnNsYXRlRm9ybVBhdGgocGF0aCwgeyAuLi5vcHRzLCBwYXRoVHJhbnNsYXRvcjogbnVsbCAvKmF2b2lkIHJlY3Vyc2l2ZSBjYWxsKi8gfSk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCB0cmFuc2xhdGlvblxuICAgIGNvbnN0IGZpZWxkTmFtZSA9IHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoJy4nKSArIDEpO1xuICAgIGNvbnN0IGkxOG5LZXkgPSAob3B0cz8uaTE4blByZWZpeCB8fCAnJykgKyBjaGFuZ2VDYXNlVG9VbmRlcnNjb3JlKGZpZWxkTmFtZSkudG9VcHBlckNhc2UoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVDb250ZXh0Lmluc3RhbnQoaTE4bktleSwgb3B0cz8uaTE4blN1ZmZpeCk7XG4gIH1cblxuICB0cmFuc2xhdGVFcnJvcihlcnJvcktleTogc3RyaW5nLCBlcnJvckNvbnRlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBpMThuS2V5ID1cbiAgICAgIHRoaXMuZXJyb3JJMThuS2V5c1tlcnJvcktleV0gfHxcbiAgICAgIC8vIFRyeSB0byBnZW5lcmF0ZSBhIHN0YW5kYXJkIGVycm9yIGtleSwgbGlrZSAnRVJST1IuRklFTERfeHh4X3h4eCdcbiAgICAgICdFUlJPUi5GSUVMRF8nICsgY2hhbmdlQ2FzZVRvVW5kZXJzY29yZShlcnJvcktleSkudG9VcHBlckNhc2UoKTtcblxuICAgIGxldCBpMThuTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoaTE4bktleSwgZXJyb3JDb250ZW50KTtcbiAgICBpZiAoaTE4bktleSAhPT0gaTE4bk1lc3NhZ2UpIHJldHVybiBpMThuTWVzc2FnZTtcblxuICAgIC8vIFRyeSB0byB1c2UgdGhlIGVycm9yIGNvbnRlbnQsIGFzIGFuIGkxOG4ga2V5XG4gICAgaWYgKHR5cGVvZiBlcnJvckNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpMThuTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZXJyb3JDb250ZW50KTtcbiAgICAgIGlmIChlcnJvckNvbnRlbnQgIT09IGkxOG5NZXNzYWdlKSByZXR1cm4gaTE4bk1lc3NhZ2U7XG4gICAgfVxuXG4gICAgLy8gTm90IHRyYW5zbGF0ZWQ6IHNob3cgZXJyb3JcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYFtmb3JtLWVycm9yLWFkYXB0ZXJdIENhbm5vdCB0cmFuc2xhdGUgZXJyb3Iga2V5ICcke2Vycm9yS2V5fScuIFBsZWFzZSBhZGQgbW9yZSBmb3JtRXJyb3JzS2V5IGludG8gQVBQX0ZPUk1fRVJST1JfSTE4Tl9LRVlTIGluamVjdGlvbiB0b2tlbmBcbiAgICApO1xuXG4gICAgcmV0dXJuIGVycm9yS2V5O1xuICB9XG59XG4iXX0=
@@ -4711,13 +4711,14 @@ class FormErrorTranslator {
4711
4711
  return (errors &&
4712
4712
  Object.keys(errors).reduce((res, path) => {
4713
4713
  const childControl = control.get(path);
4714
- const childErrors = errors[path];
4714
+ let childErrors = errors[path];
4715
4715
  // Should be a control map of errors
4716
4716
  if (childControl) {
4717
4717
  // Try to convert the control path
4718
4718
  const i18nPath = this.translateFormPath(path, opts);
4719
4719
  // OK, we have a field name: use it
4720
- const columnErrors = Object.keys({ ...childErrors, ...childControl.errors }).map((errorKey) => this.translateError(errorKey, childControl.errors[errorKey]));
4720
+ childErrors = { ...childErrors, ...childControl.errors };
4721
+ const columnErrors = Object.keys(childErrors).map((errorKey) => this.translateError(errorKey, childErrors[errorKey]));
4721
4722
  if (isEmptyArray(columnErrors))
4722
4723
  return res;
4723
4724
  // Add separator
@@ -28711,14 +28712,13 @@ class InMemoryEntitiesService extends StartableObservableService {
28711
28712
  // if filter is DataFilter instance, use its test function
28712
28713
  const filterFn = this._filterFnFactory && this._filterFnFactory(_filter);
28713
28714
  if (filterFn) {
28714
- const filteredData = [];
28715
- data.forEach((value) => {
28716
- if (filterFn(value))
28717
- filteredData.push(value);
28718
- else
28719
- hiddenData.push(value);
28720
- });
28721
- return filteredData;
28715
+ return data.reduce((res, value) => {
28716
+ if (filterFn(value)) {
28717
+ return res.concat(value);
28718
+ }
28719
+ hiddenData.push(value);
28720
+ return res;
28721
+ }, []);
28722
28722
  }
28723
28723
  // default, no filter
28724
28724
  return data;
@@ -38397,10 +38397,10 @@ class AppTable {
38397
38397
  .subscribe(() => this.markAsDirty()));
38398
38398
  // Call datasource refresh, on each refresh events
38399
38399
  this.registerSubscription(this.onRefresh
38400
- .pipe(startWith((this.autoLoad ? {} : 'skip')), switchMap((event) => {
38400
+ .pipe(startWith(this.autoLoad ? {} : { skip: true }), switchMap((opts) => {
38401
38401
  this.markAsPristine();
38402
38402
  this.selection.clear();
38403
- if (event === 'skip') {
38403
+ if (opts?.skip) {
38404
38404
  return of(undefined);
38405
38405
  }
38406
38406
  if (!this._dataSource) {
@@ -38410,16 +38410,14 @@ class AppTable {
38410
38410
  }
38411
38411
  if (this.debug)
38412
38412
  console.debug('[table] Calling dataSource.watchAll()...');
38413
- return this._dataSource
38414
- .watchAll(this.pageOffset, this.pageSize, this.sortActive, this.sortDirection, this._filter)
38415
- .pipe(takeUntil(this.onRefresh));
38416
- }), catchError((err) => {
38417
- if (this.debug)
38418
- console.error(err);
38419
- this.setError((err && err.message) || err);
38420
- return of(undefined); // Continue
38413
+ return this._dataSource.watchAll(this.pageOffset, this.pageSize, this.sortActive, this.sortDirection, this._filter).pipe(takeUntil(this.onRefresh), catchError((err) => {
38414
+ if (this.debug)
38415
+ console.error(err);
38416
+ this.setError((err && err.message) || err);
38417
+ return of(undefined); // Continue
38418
+ }), tap$1((res) => this.updateView(res, opts)));
38421
38419
  }))
38422
- .subscribe((res) => this.updateView(res)));
38420
+ .subscribe());
38423
38421
  // Listen dataSource loading events
38424
38422
  if (this._dataSource)
38425
38423
  this.listenDataSourceLoading(this._dataSource);
@@ -39046,8 +39044,8 @@ class AppTable {
39046
39044
  trackByFn(index, row) {
39047
39045
  return row.id;
39048
39046
  }
39049
- doRefresh(event) {
39050
- this.emitRefresh(event);
39047
+ doRefresh(event, opts) {
39048
+ this.emitRefresh(opts);
39051
39049
  // When target wait for a complete (e.g. IonRefresher)
39052
39050
  if (event?.target && event.target.complete) {
39053
39051
  setTimeout(async () => {
@@ -39532,10 +39530,10 @@ class AppTable {
39532
39530
  async savePageSettings(value, propertyName, opts) {
39533
39531
  await this.settings.savePageSetting(this.settingsId, value, propertyName, opts);
39534
39532
  }
39535
- emitRefresh(value) {
39533
+ emitRefresh(opts) {
39536
39534
  // Emit onRefresh if not closed (can happen if component is destroyed to early)
39537
39535
  if (!!this.onRefresh && !this.onRefresh.closed) {
39538
- this.onRefresh.emit(value);
39536
+ this.onRefresh.emit(opts);
39539
39537
  }
39540
39538
  }
39541
39539
  /**
@@ -39612,7 +39610,7 @@ class AppTable {
39612
39610
  // Refresh on any sort or paginator events
39613
39611
  .subscribe((value) => {
39614
39612
  this.onSort.emit(value);
39615
- this.emitRefresh(value);
39613
+ this.emitRefresh();
39616
39614
  }));
39617
39615
  // If the user changes the sort order, reset back to the first page.
39618
39616
  if (this.sort && this.paginator) {
@@ -40355,9 +40353,9 @@ class AppPropertiesTable extends AppInMemoryTable {
40355
40353
  applyFilterAndClosePanel(event) {
40356
40354
  const filter = this.filterForm.value;
40357
40355
  this.setFilter(filter, { emitEvent: false });
40358
- this.emitRefresh(event);
40359
- if (this.filterExpansionPanel && this.filterPanelFloating)
40360
- this.filterExpansionPanel.close();
40356
+ this.emitRefresh();
40357
+ if (this.filterPanelFloating)
40358
+ this.filterExpansionPanel?.close();
40361
40359
  }
40362
40360
  resetProperty(event, row) {
40363
40361
  event?.preventDefault();
@@ -41244,10 +41242,10 @@ class AppAsyncTable {
41244
41242
  .subscribe(() => this.markAsDirty()));
41245
41243
  // Call datasource refresh, on each refresh events
41246
41244
  this.registerSubscription(this.onRefresh
41247
- .pipe(startWith((this.autoLoad ? {} : 'skip')), switchMap((event) => {
41248
- this.dirtySubject.next(false);
41245
+ .pipe(startWith(this.autoLoad ? {} : { skip: true }), switchMap((opts) => {
41246
+ this.markAsPristine();
41249
41247
  this.selection.clear();
41250
- if (event === 'skip') {
41248
+ if (opts?.skip) {
41251
41249
  return of(undefined);
41252
41250
  }
41253
41251
  if (!this._dataSource) {
@@ -41257,14 +41255,14 @@ class AppAsyncTable {
41257
41255
  }
41258
41256
  if (this.debug)
41259
41257
  console.debug('[table] Calling dataSource.watchAll()...');
41260
- return this._dataSource.watchAll(this.pageOffset, this.pageSize, this.sortActive, this.sortDirection, this._filter);
41261
- }), catchError((err) => {
41262
- if (this.debug)
41263
- console.error(err);
41264
- this.setError((err && err.message) || err);
41265
- return of(undefined); // Continue
41258
+ return this._dataSource.watchAll(this.pageOffset, this.pageSize, this.sortActive, this.sortDirection, this._filter).pipe(takeUntil(this.onRefresh), catchError((err) => {
41259
+ if (this.debug)
41260
+ console.error(err);
41261
+ this.setError((err && err.message) || err);
41262
+ return of(undefined); // Continue
41263
+ }), tap$1((res) => this.updateView(res, opts)));
41266
41264
  }))
41267
- .subscribe((res) => this.updateView(res)));
41265
+ .subscribe());
41268
41266
  // Listen dataSource loading events
41269
41267
  if (this._dataSource)
41270
41268
  this.listenDatasourceLoading(this._dataSource);
@@ -41874,8 +41872,8 @@ class AppAsyncTable {
41874
41872
  trackByFn(index, row) {
41875
41873
  return row.id;
41876
41874
  }
41877
- doRefresh(event) {
41878
- this.emitRefresh(event);
41875
+ doRefresh(event, opts) {
41876
+ this.emitRefresh(opts);
41879
41877
  // When target wait for a complete (e.g. IonRefresher)
41880
41878
  if (event?.target && event.target.complete) {
41881
41879
  setTimeout(async () => {
@@ -42356,10 +42354,10 @@ class AppAsyncTable {
42356
42354
  async savePageSettings(value, propertyName, opts) {
42357
42355
  await this.settings.savePageSetting(this.settingsId, value, propertyName, opts);
42358
42356
  }
42359
- emitRefresh(value) {
42357
+ emitRefresh(opts) {
42360
42358
  // Emit onRefresh if not closed (can happen if component is destroyed to early)
42361
- if (!!this.onRefresh && !this.onRefresh.closed) {
42362
- this.onRefresh.emit(value);
42359
+ if (this.onRefresh && !this.onRefresh.closed) {
42360
+ this.onRefresh.emit(opts);
42363
42361
  }
42364
42362
  }
42365
42363
  /**
@@ -42436,7 +42434,7 @@ class AppAsyncTable {
42436
42434
  // Refresh on any sort or paginator events
42437
42435
  .subscribe((value) => {
42438
42436
  this.onSort.emit(value);
42439
- this.emitRefresh(value);
42437
+ this.emitRefresh();
42440
42438
  }));
42441
42439
  // If the user changes the sort order, reset back to the first page.
42442
42440
  if (this.sort && this.paginator) {
@@ -46979,7 +46977,7 @@ class UsersPage extends AppTable {
46979
46977
  this.restoreFilterOrLoad();
46980
46978
  }
46981
46979
  applyFilterAndClosePanel(event) {
46982
- this.emitRefresh(event);
46980
+ this.emitRefresh();
46983
46981
  this.filterExpansionPanel.close();
46984
46982
  }
46985
46983
  resetFilter(event) {
@@ -50281,14 +50279,12 @@ class Table2TestPage extends AppTable {
50281
50279
  }
50282
50280
  applyFilterAndClosePanel(event) {
50283
50281
  this.defaultPageSize = DEFAULT_PAGE_SIZE;
50284
- this.emitRefresh(event);
50285
- this.filterExpansionPanel.close();
50286
- if (this.filterExpansionPanel && this.filterPanelFloating)
50287
- this.filterExpansionPanel.close();
50282
+ this.emitRefresh();
50283
+ if (this.filterPanelFloating)
50284
+ this.filterExpansionPanel?.close();
50288
50285
  }
50289
50286
  closeFilterPanel() {
50290
- if (this.filterExpansionPanel)
50291
- this.filterExpansionPanel.close();
50287
+ this.filterExpansionPanel?.close();
50292
50288
  if (!this.filterPanelFloating) {
50293
50289
  this.filterPanelFloating = true;
50294
50290
  this.markForCheck();
@@ -50537,13 +50533,12 @@ class TableTestPage extends AppTable {
50537
50533
  applyFilterAndClosePanel(event) {
50538
50534
  const filter = this.filterForm.value;
50539
50535
  this.setFilter(filter, { emitEvent: false });
50540
- this.emitRefresh(event);
50541
- if (this.filterExpansionPanel && this.filterPanelFloating)
50542
- this.filterExpansionPanel.close();
50536
+ this.emitRefresh();
50537
+ if (this.filterPanelFloating)
50538
+ this.filterExpansionPanel?.close();
50543
50539
  }
50544
50540
  closeFilterPanel() {
50545
- if (this.filterExpansionPanel)
50546
- this.filterExpansionPanel.close();
50541
+ this.filterExpansionPanel?.close();
50547
50542
  if (!this.filterPanelFloating) {
50548
50543
  this.filterPanelFloating = true;
50549
50544
  this.markForCheck();