@sumaris-net/ngx-components 18.18.25 → 18.18.27

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.
@@ -1,5 +1,6 @@
1
1
  import { RxState } from '@rx-angular/state';
2
2
  import { map } from 'rxjs/operators';
3
+ import { select } from '@rx-angular/state/selections';
3
4
  let production = false;
4
5
  export function enableRxStateProdMode() {
5
6
  production = true;
@@ -149,4 +150,31 @@ export function RxStateComputed(dependencies, computeFn, opts) {
149
150
  }
150
151
  };
151
152
  }
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RhdGUuZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3J4LXN0YXRlL3J4LXN0YXRlLmRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUF1QixPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBRXZCLE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUNwQixDQUFDO0FBT0QseUJBQXlCO0FBQ3pCLE1BQU0sY0FBYztJQUNsQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVc7UUFDM0IsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDekQsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDM0QsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxNQUFXLEVBQUUsV0FBZ0I7UUFDeEQsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENB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IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm9qZWN0VmFsdWVSZWR1Y2VyLCBSeFN0YXRlIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvc3RhdGUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5sZXQgcHJvZHVjdGlvbiA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlUnhTdGF0ZVByb2RNb2RlKCkge1xuICBwcm9kdWN0aW9uID0gdHJ1ZTtcbn1cblxuZGVjbGFyZSB0eXBlIENvbnN0cnVjdG9yPFQgPSBhbnk+ID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcblxudHlwZSBPYnNlcnZhYmxlUHJvcGVydHlEZWNvcmF0b3I8VD4gPSA8SyBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IEspID0+IHZvaWQ7XG50eXBlIFN0YXRlUHJvcGVydHlEZWNvcmF0b3I8VD4gPSA8SyBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IEspID0+IHZvaWQ7XG5cbi8vIFV0aWxpdHkgZm9yIGRlY29yYXRvcnNcbmNsYXNzIERlY29yYXRvclV0aWxzIHtcbiAgc3RhdGljIGNhcGl0YWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTWV0aG9kTmFtZShwcmVmaXg6IHN0cmluZywgcHJvcGVydHlLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke3RoaXMuY2FwaXRhbGl6ZShwcm9wZXJ0eUtleSl9YDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVQcm9wZXJ0eU5hbWUocHJlZml4OiBzdHJpbmcsIHByb3BlcnR5S2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHt0aGlzLmNhcGl0YWxpemUocHJvcGVydHlLZXkpfWA7XG4gIH1cblxuICBzdGF0aWMgdmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldDogYW55LCBzdGF0ZU9iamVjdDogYW55KTogdm9pZCB7XG4gICAgaWYgKCFwcm9kdWN0aW9uICYmICFzdGF0ZU9iamVjdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHN0YXRlISBQbGVhc2UgYWRkIGEgUnhTdGF0ZSBpbiBjbGFzczogJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgU1RBVEVfVkFSX05BTUVfS0VZID0gJ19fc3RhdGVOYW1lJztcbmNvbnN0IERFRkFVTFRfU1RBVEVfVkFSX05BTUUgPSAnX3N0YXRlJztcblxuLyoqXG4gKiBEZWNvcmF0b3IgdG8gcmVnaXN0ZXIgdGhlIFJ4U3RhdGUgcHJvcGVydHkgaW4gYSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVSZWdpc3RlcigpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBDb25zdHJ1Y3Rvcjxhbnk+LCBrZXk6IHN0cmluZykge1xuICAgIGlmICh0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZGVmaW5lIG1vcmUgdGhhbiBvbmUgQFJ4U3RhdGVSZWdpc3RlcigpIGluIGNsYXNzIGhpZXJhcmNoeS4gRm91bmQ6ICR7dGFyZ2V0W1NUQVRFX1ZBUl9OQU1FX0tFWV19IGFuZCAke2tleX1gKTtcbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBTVEFURV9WQVJfTkFNRV9LRVksIHtcbiAgICAgIHZhbHVlOiBrZXksXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVjb3JhdG9yIGZvciBSeFN0YXRlIHByb3BlcnRpZXMgd2l0aCBnZXR0ZXIvc2V0dGVyIGFjY2Vzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZVByb3BlcnR5PFQgZXh0ZW5kcyBvYmplY3QgPSBhbnksIEsgZXh0ZW5kcyBrZXlvZiBUID0gYW55LCBWIGV4dGVuZHMgVFtLXSA9IGFueT4oXG4gIHN0YXRlUHJvcGVydHlOYW1lPzogc3RyaW5nIHwgSyxcbiAgcHJvamVjdFZhbHVlUmVkdWNlcj86IFByb2plY3RWYWx1ZVJlZHVjZXI8VCwgSywgVj5cbik6IFN0YXRlUHJvcGVydHlEZWNvcmF0b3I8Vj4ge1xuICByZXR1cm4gZnVuY3Rpb24gPFAgZXh0ZW5kcyBQcm9wZXJ0eUtleT4odGFyZ2V0OiBhbnksIGtleTogUCkge1xuICAgIGNvbnN0IGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgPSAoc3RhdGVQcm9wZXJ0eU5hbWUgYXMgc3RyaW5nKSB8fCAoa2V5IGFzIHN0cmluZyk7XG4gICAgY29uc3Qgc3RhdGVWYXJOYW1lID0gdGFyZ2V0IGluc3RhbmNlb2YgUnhTdGF0ZSA/IG51bGwgOiB0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSB8fCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FO1xuXG4gICAgLy8gRGVmaW5lIHByb3BlcnR5IHdpdGggZ2V0dGVyL3NldHRlclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqZWN0OiBSeFN0YXRlPFQ+ID0gc3RhdGVWYXJOYW1lID8gdGhpc1tzdGF0ZVZhck5hbWVdIDogdGhpcztcbiAgICAgICAgRGVjb3JhdG9yVXRpbHMudmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldCwgc3RhdGVPYmplY3QpO1xuICAgICAgICByZXR1cm4gc3RhdGVPYmplY3QuZ2V0KGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgYXMga2V5b2YgVCk7XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWU6IFYpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmplY3Q6IFJ4U3RhdGU8VD4gPSBzdGF0ZVZhck5hbWUgPyB0aGlzW3N0YXRlVmFyTmFtZV0gOiB0aGlzO1xuICAgICAgICBEZWNvcmF0b3JVdGlscy52YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0LCBzdGF0ZU9iamVjdCk7XG4gICAgICAgIGlmIChwcm9qZWN0VmFsdWVSZWR1Y2VyKSB7XG4gICAgICAgICAgc3RhdGVPYmplY3Quc2V0KGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgYXMga2V5b2YgVCwgKHN0YXRlOiBUKSA9PiBwcm9qZWN0VmFsdWVSZWR1Y2VyKHN0YXRlLCB2YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlT2JqZWN0LnNldCg8UGFydGlhbDxUPj57IFtmaW5hbFN0YXRlUHJvcGVydHlOYW1lIGFzIGtleW9mIFRdOiB2YWx1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBEZXZlbG9wbWVudCBsb2dnaW5nXG4gICAgaWYgKCFwcm9kdWN0aW9uKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBbUnhTdGF0ZVByb3BlcnR5XSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSAtPiBzdGF0ZS4ke2ZpbmFsU3RhdGVQcm9wZXJ0eU5hbWV9YCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIERlY29yYXRvciBmb3IgUnhTdGF0ZSBvYnNlcnZhYmxlIHNlbGVjdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZVNlbGVjdDxUID0gYW55LCBSID0gVFtrZXlvZiBUXT4oXG4gIHN0YXRlUHJvcGVydHlOYW1lPzogc3RyaW5nIHwga2V5b2YgVCB8ICckJyxcbiAgb3B0cz86IHtcbiAgICBzdGF0ZU5hbWU/OiBzdHJpbmc7XG4gIH1cbik6IE9ic2VydmFibGVQcm9wZXJ0eURlY29yYXRvcjxPYnNlcnZhYmxlPFI+PiB7XG4gIHJldHVybiBmdW5jdGlvbiA8UCBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwga2V5OiBQKSB7XG4gICAgLy8gQ29udmVudGlvbiBjaGVja1xuICAgIGlmICghcHJvZHVjdGlvbiAmJiAhKGtleSBhcyBzdHJpbmcpLmVuZHNXaXRoKCckJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtSeFN0YXRlU2VsZWN0XSBDb252ZW50aW9uOiBQcm9wZXJ0eSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSBzaG91bGQgZW5kIHdpdGggJyQnIHRvIGluZGljYXRlIGl0J3MgYW4gT2JzZXJ2YWJsZWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIHN0YXRlIHByb3BlcnR5IG5hbWVcbiAgICBjb25zdCBmaW5hbFN0YXRlUHJvcGVydHlOYW1lID0gKHN0YXRlUHJvcGVydHlOYW1lIGFzIHN0cmluZykgfHwgKGtleSBhcyBzdHJpbmcpLnJlcGxhY2UoL1xcJCQvLCAnJyk7XG5cbiAgICAvLyBEZXRlcm1pbmUgc3RhdGUgb2JqZWN0XG4gICAgY29uc3Qgc3RhdGVWYXJOYW1lID0gdGFyZ2V0IGluc3RhbmNlb2YgUnhTdGF0ZSA/IG51bGwgOiB0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSB8fCBvcHRzPy5zdGF0ZU5hbWUgfHwgREVGQVVMVF9TVEFURV9WQVJfTkFNRTtcblxuICAgIC8vIENyZWF0ZSBjYWNoZSBwcm9wZXJ0eSBuYW1lXG4gICAgY29uc3QgaW50ZXJuYWxQcm9wZXJ0eU5hbWUgPSBgX18ke2tleSBhcyBzdHJpbmd9YDtcblxuICAgIC8vIERlZmluZSBwcm9wZXJ0eSB3aXRoIGdldHRlciBvbmx5XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmplY3QgPSBzdGF0ZVZhck5hbWUgPyB0aGlzW3N0YXRlVmFyTmFtZV0gOiB0aGlzO1xuICAgICAgICBEZWNvcmF0b3JVdGlscy52YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0LCBzdGF0ZU9iamVjdCk7XG5cbiAgICAgICAgaWYgKCF0aGlzW2ludGVybmFsUHJvcGVydHlOYW1lXSkge1xuICAgICAgICAgIGlmIChmaW5hbFN0YXRlUHJvcGVydHlOYW1lID09PSAnJCcpIHtcbiAgICAgICAgICAgIHRoaXNbaW50ZXJuYWxQcm9wZXJ0eU5hbWVdID0gc3RhdGVPYmplY3QuJDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIHRoaXNbaW50ZXJuYWxQcm9wZXJ0eU5hbWVdID0gc3RhdGVPYmplY3Quc2VsZWN0KC4uLnBhdGgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzW2ludGVybmFsUHJvcGVydHlOYW1lXSA9IHN0YXRlT2JqZWN0LnNlbGVjdChmaW5hbFN0YXRlUHJvcGVydHlOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpc1tpbnRlcm5hbFByb3BlcnR5TmFtZV07XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICAvLyBEZXZlbG9wbWVudCBsb2dnaW5nXG4gICAgaWYgKCFwcm9kdWN0aW9uKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBbUnhTdGF0ZVNlbGVjdF0gJHt0YXJnZXQuY29uc3RydWN0b3I/Lm5hbWV9LiR7a2V5IGFzIHN0cmluZ30gLT4gc3RhdGUuc2VsZWN0KCcke2ZpbmFsU3RhdGVQcm9wZXJ0eU5hbWV9JylgKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogVXRpbGl0eSBkZWNvcmF0b3IgdG8gY3JlYXRlIGNvbXB1dGVkIG9ic2VydmFibGVzIGZyb20gc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVDb21wdXRlZDxUID0gYW55LCBLIGV4dGVuZHMga2V5b2YgVCA9IGFueSwgUiA9IGFueT4oXG4gIGRlcGVuZGVuY2llczogS1tdLFxuICBjb21wdXRlRm4/OiAoc2xpY2U6IFBpY2s8VCwgSz4pID0+IFIsXG4gIG9wdHM/OiB7XG4gICAgc3RhdGVOYW1lPzogc3RyaW5nO1xuICAgIGtleUNvbXBhcmVNYXA/OiBhbnk7XG4gIH1cbik6IE9ic2VydmFibGVQcm9wZXJ0eURlY29yYXRvcjxPYnNlcnZhYmxlPFI+PiB7XG4gIHJldHVybiBmdW5jdGlvbiA8UCBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwga2V5OiBQKSB7XG4gICAgLy8gQ29udmVudGlvbiBjaGVja1xuICAgIGlmICghcHJvZHVjdGlvbiAmJiAhKGtleSBhcyBzdHJpbmcpLmVuZHNXaXRoKCckJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtSeFN0YXRlQ29tcHV0ZWRdIENvbnZlbnRpb246IFByb3BlcnR5ICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IHNob3VsZCBlbmQgd2l0aCAnJCcgdG8gaW5kaWNhdGUgaXQncyBhbiBPYnNlcnZhYmxlYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZVZhck5hbWUgPSB0YXJnZXQgaW5zdGFuY2VvZiBSeFN0YXRlID8gbnVsbCA6IHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldIHx8IG9wdHM/LnN0YXRlTmFtZSB8fCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FO1xuICAgIGNvbnN0IGNhY2hlUHJvcGVydHlOYW1lID0gYF9fJHtrZXkgYXMgc3RyaW5nfV9jYWNoZWA7XG5cbiAgICAvLyBEZWZpbmUgcHJvcGVydHkgd2l0aCBnZXR0ZXIgb25seVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqZWN0ID0gc3RhdGVWYXJOYW1lID8gdGhpc1tzdGF0ZVZhck5hbWVdIDogdGhpcztcbiAgICAgICAgRGVjb3JhdG9yVXRpbHMudmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldCwgc3RhdGVPYmplY3QpO1xuXG4gICAgICAgIGlmICghdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZSA9IHN0YXRlT2JqZWN0LnNlbGVjdChkZXBlbmRlbmNpZXMsIG9wdHM/LmtleUNvbXBhcmVNYXApO1xuXG4gICAgICAgICAgaWYgKGNvbXB1dGVGbikge1xuICAgICAgICAgICAgb2JzZXJ2YWJsZSA9IG9ic2VydmFibGUucGlwZShtYXAoY29tcHV0ZUZuKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0gPSBvYnNlcnZhYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXNbY2FjaGVQcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gRGV2ZWxvcG1lbnQgbG9nZ2luZ1xuICAgIGlmICghcHJvZHVjdGlvbikge1xuICAgICAgY29uc29sZS5kZWJ1ZyhcbiAgICAgICAgYFtSeFN0YXRlQ29tcHV0ZWRdICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IC0+IHN0YXRlLnNlbGVjdChbJHtkZXBlbmRlbmNpZXMubWFwKChkKSA9PiBgJyR7ZCBhcyBzdHJpbmd9J2ApLmpvaW4oJywgJyl9XSlgXG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
153
+ /**
154
+ * Decorator for RxState observable as output
155
+ */
156
+ export function RxStateOutput(statePropertyName, opts) {
157
+ return function (target, key) {
158
+ // Convention check
159
+ if (!production && !key.endsWith('Changes')) {
160
+ console.warn(`[RxStateOutput] Convention: Property ${target.constructor?.name}.${key} should end with 'Changes' to indicate it's an Output`);
161
+ }
162
+ // Determine state property name
163
+ const finalStatePropertyName = statePropertyName || String(key).replace(/\$$/, '');
164
+ // Determine state object
165
+ const stateVarName = target instanceof RxState ? null : target[STATE_VAR_NAME_KEY] || opts?.stateName || DEFAULT_STATE_VAR_NAME;
166
+ // Define property with getter only
167
+ const stateObject = stateVarName ? this[stateVarName] : this;
168
+ const observable = finalStatePropertyName === '$' ? stateObject.$ : stateObject.$.pipe(select(finalStatePropertyName));
169
+ Object.defineProperty(target, key, {
170
+ value: observable,
171
+ enumerable: true,
172
+ configurable: false,
173
+ });
174
+ // Development logging
175
+ if (!production) {
176
+ console.debug(`[RxStateOutput] ${target.constructor?.name}.${key} -> state.$.pipe(select('${finalStatePropertyName}'))`);
177
+ }
178
+ };
179
+ }
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RhdGUuZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3J4LXN0YXRlL3J4LXN0YXRlLmRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUF1QixPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXRELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztBQUV2QixNQUFNLFVBQVUscUJBQXFCO0lBQ25DLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFDcEIsQ0FBQztBQU9ELHlCQUF5QjtBQUN6QixNQUFNLGNBQWM7SUFDbEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFXO1FBQzNCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBYyxFQUFFLFdBQW1CO1FBQ3pELE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBYyxFQUFFLFdBQW1CO1FBQzNELE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMscUJBQXFCLENBQUMsTUFBVyxFQUFFLFdBQWdCO1FBQ3hELElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksS0FBSyxD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O1FBQ3RCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxHQUFhLDRCQUE0QixzQkFBc0IsS0FBSyxDQUFDLENBQUM7UUFDckksQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm9qZWN0VmFsdWVSZWR1Y2VyLCBSeFN0YXRlIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvc3RhdGUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSAnQHJ4LWFuZ3VsYXIvc3RhdGUvc2VsZWN0aW9ucyc7XG5cbmxldCBwcm9kdWN0aW9uID0gZmFsc2U7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVSeFN0YXRlUHJvZE1vZGUoKSB7XG4gIHByb2R1Y3Rpb24gPSB0cnVlO1xufVxuXG5kZWNsYXJlIHR5cGUgQ29uc3RydWN0b3I8VCA9IGFueT4gPSBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUO1xuXG50eXBlIE9ic2VydmFibGVQcm9wZXJ0eURlY29yYXRvcjxUPiA9IDxLIGV4dGVuZHMgUHJvcGVydHlLZXk+KHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogSykgPT4gdm9pZDtcbnR5cGUgU3RhdGVQcm9wZXJ0eURlY29yYXRvcjxUPiA9IDxLIGV4dGVuZHMgUHJvcGVydHlLZXk+KHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogSykgPT4gdm9pZDtcblxuLy8gVXRpbGl0eSBmb3IgZGVjb3JhdG9yc1xuY2xhc3MgRGVjb3JhdG9yVXRpbHMge1xuICBzdGF0aWMgY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVNZXRob2ROYW1lKHByZWZpeDogc3RyaW5nLCBwcm9wZXJ0eUtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7cHJlZml4fSR7dGhpcy5jYXBpdGFsaXplKHByb3BlcnR5S2V5KX1gO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVByb3BlcnR5TmFtZShwcmVmaXg6IHN0cmluZywgcHJvcGVydHlLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke3RoaXMuY2FwaXRhbGl6ZShwcm9wZXJ0eUtleSl9YDtcbiAgfVxuXG4gIHN0YXRpYyB2YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0OiBhbnksIHN0YXRlT2JqZWN0OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXByb2R1Y3Rpb24gJiYgIXN0YXRlT2JqZWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3Npbmcgc3RhdGUhIFBsZWFzZSBhZGQgYSBSeFN0YXRlIGluIGNsYXNzOiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfWApO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBTVEFURV9WQVJfTkFNRV9LRVkgPSAnX19zdGF0ZU5hbWUnO1xuY29uc3QgREVGQVVMVF9TVEFURV9WQVJfTkFNRSA9ICdfc3RhdGUnO1xuXG4vKipcbiAqIERlY29yYXRvciB0byByZWdpc3RlciB0aGUgUnhTdGF0ZSBwcm9wZXJ0eSBpbiBhIGNvbXBvbmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZVJlZ2lzdGVyKCk6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IENvbnN0cnVjdG9yPGFueT4sIGtleTogc3RyaW5nKSB7XG4gICAgaWYgKHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBkZWZpbmUgbW9yZSB0aGFuIG9uZSBAUnhTdGF0ZVJlZ2lzdGVyKCkgaW4gY2xhc3MgaGllcmFyY2h5LiBGb3VuZDogJHt0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXX0gYW5kICR7a2V5fWApO1xuICAgIH1cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIFNUQVRFX1ZBUl9OQU1FX0tFWSwge1xuICAgICAgdmFsdWU6IGtleSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBEZWNvcmF0b3IgZm9yIFJ4U3RhdGUgcHJvcGVydGllcyB3aXRoIGdldHRlci9zZXR0ZXIgYWNjZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSeFN0YXRlUHJvcGVydHk8VCBleHRlbmRzIG9iamVjdCA9IGFueSwgSyBleHRlbmRzIGtleW9mIFQgPSBhbnksIFYgZXh0ZW5kcyBUW0tdID0gYW55PihcbiAgc3RhdGVQcm9wZXJ0eU5hbWU/OiBzdHJpbmcgfCBLLFxuICBwcm9qZWN0VmFsdWVSZWR1Y2VyPzogUHJvamVjdFZhbHVlUmVkdWNlcjxULCBLLCBWPlxuKTogU3RhdGVQcm9wZXJ0eURlY29yYXRvcjxWPiB7XG4gIHJldHVybiBmdW5jdGlvbiA8UCBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwga2V5OiBQKSB7XG4gICAgY29uc3QgZmluYWxTdGF0ZVByb3BlcnR5TmFtZSA9IChzdGF0ZVByb3BlcnR5TmFtZSBhcyBzdHJpbmcpIHx8IChrZXkgYXMgc3RyaW5nKTtcbiAgICBjb25zdCBzdGF0ZVZhck5hbWUgPSB0YXJnZXQgaW5zdGFuY2VvZiBSeFN0YXRlID8gbnVsbCA6IHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldIHx8IERFRkFVTFRfU1RBVEVfVkFSX05BTUU7XG5cbiAgICAvLyBEZWZpbmUgcHJvcGVydHkgd2l0aCBnZXR0ZXIvc2V0dGVyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmplY3Q6IFJ4U3RhdGU8VD4gPSBzdGF0ZVZhck5hbWUgPyB0aGlzW3N0YXRlVmFyTmFtZV0gOiB0aGlzO1xuICAgICAgICBEZWNvcmF0b3JVdGlscy52YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0LCBzdGF0ZU9iamVjdCk7XG4gICAgICAgIHJldHVybiBzdGF0ZU9iamVjdC5nZXQoZmluYWxTdGF0ZVByb3BlcnR5TmFtZSBhcyBrZXlvZiBUKTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZTogVikge1xuICAgICAgICBjb25zdCBzdGF0ZU9iamVjdDogUnhTdGF0ZTxUPiA9IHN0YXRlVmFyTmFtZSA/IHRoaXNbc3RhdGVWYXJOYW1lXSA6IHRoaXM7XG4gICAgICAgIERlY29yYXRvclV0aWxzLnZhbGlkYXRlU3RhdGVQcm9wZXJ0eSh0YXJnZXQsIHN0YXRlT2JqZWN0KTtcbiAgICAgICAgaWYgKHByb2plY3RWYWx1ZVJlZHVjZXIpIHtcbiAgICAgICAgICBzdGF0ZU9iamVjdC5zZXQoZmluYWxTdGF0ZVByb3BlcnR5TmFtZSBhcyBrZXlvZiBULCAoc3RhdGU6IFQpID0+IHByb2plY3RWYWx1ZVJlZHVjZXIoc3RhdGUsIHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGVPYmplY3Quc2V0KDxQYXJ0aWFsPFQ+PnsgW2ZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgYXMga2V5b2YgVF06IHZhbHVlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIERldmVsb3BtZW50IGxvZ2dpbmdcbiAgICBpZiAoIXByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtSeFN0YXRlUHJvcGVydHldICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IC0+IHN0YXRlLiR7ZmluYWxTdGF0ZVByb3BlcnR5TmFtZX1gKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogRGVjb3JhdG9yIGZvciBSeFN0YXRlIG9ic2VydmFibGUgc2VsZWN0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSeFN0YXRlU2VsZWN0PFQsIEsxIGV4dGVuZHMga2V5b2YgVCwgUiBleHRlbmRzIFRbSzFdPihcbiAgc3RhdGVQcm9wZXJ0eU5hbWU/OiBzdHJpbmcgfCBLMSB8ICckJyxcbiAgb3B0cz86IHtcbiAgICBzdGF0ZU5hbWU/OiBzdHJpbmc7XG4gIH1cbik6IE9ic2VydmFibGVQcm9wZXJ0eURlY29yYXRvcjxPYnNlcnZhYmxlPFI+PiB7XG4gIHJldHVybiBmdW5jdGlvbiA8UCBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwga2V5OiBQKSB7XG4gICAgLy8gQ29udmVudGlvbiBjaGVja1xuICAgIGlmICghcHJvZHVjdGlvbiAmJiAhKGtleSBhcyBzdHJpbmcpLmVuZHNXaXRoKCckJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtSeFN0YXRlU2VsZWN0XSBDb252ZW50aW9uOiBQcm9wZXJ0eSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSBzaG91bGQgZW5kIHdpdGggJyQnIHRvIGluZGljYXRlIGl0J3MgYW4gT2JzZXJ2YWJsZWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIHN0YXRlIHByb3BlcnR5IG5hbWVcbiAgICBjb25zdCBmaW5hbFN0YXRlUHJvcGVydHlOYW1lID0gKHN0YXRlUHJvcGVydHlOYW1lIGFzIHN0cmluZykgfHwgKGtleSBhcyBzdHJpbmcpLnJlcGxhY2UoL1xcJCQvLCAnJyk7XG5cbiAgICAvLyBEZXRlcm1pbmUgc3RhdGUgb2JqZWN0XG4gICAgY29uc3Qgc3RhdGVWYXJOYW1lID0gdGFyZ2V0IGluc3RhbmNlb2YgUnhTdGF0ZSA/IG51bGwgOiB0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSB8fCBvcHRzPy5zdGF0ZU5hbWUgfHwgREVGQVVMVF9TVEFURV9WQVJfTkFNRTtcblxuICAgIC8vIENyZWF0ZSBjYWNoZSBwcm9wZXJ0eSBuYW1lXG4gICAgY29uc3QgaW50ZXJuYWxQcm9wZXJ0eU5hbWUgPSBgX18ke2tleSBhcyBzdHJpbmd9YDtcblxuICAgIC8vIERlZmluZSBwcm9wZXJ0eSB3aXRoIGdldHRlciBvbmx5XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmplY3QgPSBzdGF0ZVZhck5hbWUgPyB0aGlzW3N0YXRlVmFyTmFtZV0gOiB0aGlzO1xuICAgICAgICBEZWNvcmF0b3JVdGlscy52YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0LCBzdGF0ZU9iamVjdCk7XG5cbiAgICAgICAgaWYgKCF0aGlzW2ludGVybmFsUHJvcGVydHlOYW1lXSkge1xuICAgICAgICAgIGlmIChmaW5hbFN0YXRlUHJvcGVydHlOYW1lID09PSAnJCcpIHtcbiAgICAgICAgICAgIHRoaXNbaW50ZXJuYWxQcm9wZXJ0eU5hbWVdID0gc3RhdGVPYmplY3QuJDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIHRoaXNbaW50ZXJuYWxQcm9wZXJ0eU5hbWVdID0gc3RhdGVPYmplY3Quc2VsZWN0KC4uLnBhdGgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzW2ludGVybmFsUHJvcGVydHlOYW1lXSA9IHN0YXRlT2JqZWN0LnNlbGVjdChmaW5hbFN0YXRlUHJvcGVydHlOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpc1tpbnRlcm5hbFByb3BlcnR5TmFtZV07XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICAvLyBEZXZlbG9wbWVudCBsb2dnaW5nXG4gICAgaWYgKCFwcm9kdWN0aW9uKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBbUnhTdGF0ZVNlbGVjdF0gJHt0YXJnZXQuY29uc3RydWN0b3I/Lm5hbWV9LiR7a2V5IGFzIHN0cmluZ30gLT4gc3RhdGUuc2VsZWN0KCcke2ZpbmFsU3RhdGVQcm9wZXJ0eU5hbWV9JylgKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogVXRpbGl0eSBkZWNvcmF0b3IgdG8gY3JlYXRlIGNvbXB1dGVkIG9ic2VydmFibGVzIGZyb20gc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVDb21wdXRlZDxUID0gYW55LCBLIGV4dGVuZHMga2V5b2YgVCA9IGFueSwgUiA9IGFueT4oXG4gIGRlcGVuZGVuY2llczogS1tdLFxuICBjb21wdXRlRm4/OiAoc2xpY2U6IFBpY2s8VCwgSz4pID0+IFIsXG4gIG9wdHM/OiB7XG4gICAgc3RhdGVOYW1lPzogc3RyaW5nO1xuICAgIGtleUNvbXBhcmVNYXA/OiBhbnk7XG4gIH1cbik6IE9ic2VydmFibGVQcm9wZXJ0eURlY29yYXRvcjxPYnNlcnZhYmxlPFI+PiB7XG4gIHJldHVybiBmdW5jdGlvbiA8UCBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwga2V5OiBQKSB7XG4gICAgLy8gQ29udmVudGlvbiBjaGVja1xuICAgIGlmICghcHJvZHVjdGlvbiAmJiAhKGtleSBhcyBzdHJpbmcpLmVuZHNXaXRoKCckJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtSeFN0YXRlQ29tcHV0ZWRdIENvbnZlbnRpb246IFByb3BlcnR5ICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IHNob3VsZCBlbmQgd2l0aCAnJCcgdG8gaW5kaWNhdGUgaXQncyBhbiBPYnNlcnZhYmxlYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZVZhck5hbWUgPSB0YXJnZXQgaW5zdGFuY2VvZiBSeFN0YXRlID8gbnVsbCA6IHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldIHx8IG9wdHM/LnN0YXRlTmFtZSB8fCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FO1xuICAgIGNvbnN0IGNhY2hlUHJvcGVydHlOYW1lID0gYF9fJHtrZXkgYXMgc3RyaW5nfV9jYWNoZWA7XG5cbiAgICAvLyBEZWZpbmUgcHJvcGVydHkgd2l0aCBnZXR0ZXIgb25seVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqZWN0ID0gc3RhdGVWYXJOYW1lID8gdGhpc1tzdGF0ZVZhck5hbWVdIDogdGhpcztcbiAgICAgICAgRGVjb3JhdG9yVXRpbHMudmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldCwgc3RhdGVPYmplY3QpO1xuXG4gICAgICAgIGlmICghdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZSA9IHN0YXRlT2JqZWN0LnNlbGVjdChkZXBlbmRlbmNpZXMsIG9wdHM/LmtleUNvbXBhcmVNYXApO1xuXG4gICAgICAgICAgaWYgKGNvbXB1dGVGbikge1xuICAgICAgICAgICAgb2JzZXJ2YWJsZSA9IG9ic2VydmFibGUucGlwZShtYXAoY29tcHV0ZUZuKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0gPSBvYnNlcnZhYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXNbY2FjaGVQcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gRGV2ZWxvcG1lbnQgbG9nZ2luZ1xuICAgIGlmICghcHJvZHVjdGlvbikge1xuICAgICAgY29uc29sZS5kZWJ1ZyhcbiAgICAgICAgYFtSeFN0YXRlQ29tcHV0ZWRdICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IC0+IHN0YXRlLnNlbGVjdChbJHtkZXBlbmRlbmNpZXMubWFwKChkKSA9PiBgJyR7ZCBhcyBzdHJpbmd9J2ApLmpvaW4oJywgJyl9XSlgXG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBEZWNvcmF0b3IgZm9yIFJ4U3RhdGUgb2JzZXJ2YWJsZSBhcyBvdXRwdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVPdXRwdXQ8VCwgSzEgZXh0ZW5kcyBrZXlvZiBULCBSIGV4dGVuZHMgVFtLMV0+KFxuICBzdGF0ZVByb3BlcnR5TmFtZT86IHN0cmluZyB8IEsxIHwgJyQnLFxuICBvcHRzPzoge1xuICAgIHN0YXRlTmFtZT86IHN0cmluZztcbiAgfVxuKTogT2JzZXJ2YWJsZVByb3BlcnR5RGVjb3JhdG9yPE9ic2VydmFibGU8Uj4+IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxQIGV4dGVuZHMgUHJvcGVydHlLZXk+KHRhcmdldDogYW55LCBrZXk6IFApIHtcbiAgICAvLyBDb252ZW50aW9uIGNoZWNrXG4gICAgaWYgKCFwcm9kdWN0aW9uICYmICEoa2V5IGFzIHN0cmluZykuZW5kc1dpdGgoJ0NoYW5nZXMnKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW1J4U3RhdGVPdXRwdXRdIENvbnZlbnRpb246IFByb3BlcnR5ICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IHNob3VsZCBlbmQgd2l0aCAnQ2hhbmdlcycgdG8gaW5kaWNhdGUgaXQncyBhbiBPdXRwdXRgXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBzdGF0ZSBwcm9wZXJ0eSBuYW1lXG4gICAgY29uc3QgZmluYWxTdGF0ZVByb3BlcnR5TmFtZSA9IChzdGF0ZVByb3BlcnR5TmFtZSBhcyBzdHJpbmcpIHx8IFN0cmluZyhrZXkpLnJlcGxhY2UoL1xcJCQvLCAnJyk7XG5cbiAgICAvLyBEZXRlcm1pbmUgc3RhdGUgb2JqZWN0XG4gICAgY29uc3Qgc3RhdGVWYXJOYW1lID0gdGFyZ2V0IGluc3RhbmNlb2YgUnhTdGF0ZSA/IG51bGwgOiB0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSB8fCBvcHRzPy5zdGF0ZU5hbWUgfHwgREVGQVVMVF9TVEFURV9WQVJfTkFNRTtcblxuICAgIC8vIERlZmluZSBwcm9wZXJ0eSB3aXRoIGdldHRlciBvbmx5XG4gICAgY29uc3Qgc3RhdGVPYmplY3QgPSBzdGF0ZVZhck5hbWUgPyB0aGlzW3N0YXRlVmFyTmFtZV0gOiB0aGlzO1xuICAgIGNvbnN0IG9ic2VydmFibGUgPSBmaW5hbFN0YXRlUHJvcGVydHlOYW1lID09PSAnJCcgPyBzdGF0ZU9iamVjdC4kIDogc3RhdGVPYmplY3QuJC5waXBlKHNlbGVjdDxULCBLMT4oZmluYWxTdGF0ZVByb3BlcnR5TmFtZSBhcyBLMSkpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgdmFsdWU6IG9ic2VydmFibGUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIC8vIERldmVsb3BtZW50IGxvZ2dpbmdcbiAgICBpZiAoIXByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtSeFN0YXRlT3V0cHV0XSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSAtPiBzdGF0ZS4kLnBpcGUoc2VsZWN0KCcke2ZpbmFsU3RhdGVQcm9wZXJ0eU5hbWV9JykpYCk7XG4gICAgfVxuICB9O1xufVxuIl19