@c80/ui 1.0.34 → 1.0.37

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.
@@ -13,4 +13,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
13
13
  }], propDecorators: { cards: [{
14
14
  type: Input
15
15
  }] } });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9zdGF0LWNhcmQvc3RhdC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9zdGF0LWNhcmQvc3RhdC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQVEsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFpQmhFLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsS0FBSyxHQUFjLEVBQUUsQ0FBQzt3R0FEcEIsb0JBQW9COzRGQUFwQixvQkFBb0IscUdDbkJqQyxtakJBY00sc3ZCRENNLFlBQVksK0JBQUUsZ0JBQWdCOzs0RkFJN0Isb0JBQW9CO2tCQVJoQyxTQUFTOytCQUVFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7OEJBS2hDLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSWNvbiwgQzgwSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDYXJkRGVmIHtcclxuICBjb2xvcjogc3RyaW5nOyAvLyBBY2VwdGEgY3VhbHF1aWVyIGNvbG9yIENTU1xyXG4gIGljb246IEljb247XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGNvdW50OiBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdjODAtc3RhdC1jYXJkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEM4MEljb25Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGF0LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N0YXQtY2FyZC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQzgwU3RhdENhcmRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGNhcmRzOiBDYXJkRGVmW10gPSBbXTtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic3RhdHMtc2VjdGlvbiBweS00XCI+XHJcbiAgQGZvciAoY2FyZCBvZiBjYXJkczsgdHJhY2sgY2FyZC50ZXh0KSB7XHJcbiAgPGRpdiBjbGFzcz1cInN0YXQtY2FyZFwiIFtzdHlsZS5ib3JkZXItbGVmdC1jb2xvcl09XCJjYXJkLmNvbG9yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3RhdC1jYXJkLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0YXQtY29udGVudFwiPlxyXG4gICAgICAgIDxjODAtaWNvbiBbaWNvbl09XCJjYXJkLmljb25cIiBbY29sb3JdPVwiJ3NlY29uZGFyeSdcIiBbc2l6ZV09XCIxLjFcIj48L2M4MC1pY29uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LWluZm9cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LW51bWJlclwiPnt7IGNhcmQuY291bnQgfX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LWxhYmVsXCI+e3sgY2FyZC50ZXh0IH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9zdGF0LWNhcmQvc3RhdC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi9zdGF0LWNhcmQvc3RhdC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFrQjFELE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsS0FBSyxHQUFjLEVBQUUsQ0FBQzt3R0FEcEIsb0JBQW9COzRGQUFwQixvQkFBb0IscUdDcEJqQyxtakJBY00sc3ZCREVNLFlBQVksK0JBQUUsZ0JBQWdCOzs0RkFJN0Isb0JBQW9CO2tCQVJoQyxTQUFTOytCQUVFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7OEJBS2hDLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQzgwSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJY29uVHlwZSB9IGZyb20gJy4uL2ljb24vaWNvbi50eXBlcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENhcmREZWYge1xyXG4gIGNvbG9yOiBzdHJpbmc7IC8vIEFjZXB0YSBjdWFscXVpZXIgY29sb3IgQ1NTXHJcbiAgaWNvbjogSWNvblR5cGU7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGNvdW50OiBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdjODAtc3RhdC1jYXJkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEM4MEljb25Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGF0LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N0YXQtY2FyZC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQzgwU3RhdENhcmRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGNhcmRzOiBDYXJkRGVmW10gPSBbXTtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic3RhdHMtc2VjdGlvbiBweS00XCI+XHJcbiAgQGZvciAoY2FyZCBvZiBjYXJkczsgdHJhY2sgY2FyZC50ZXh0KSB7XHJcbiAgPGRpdiBjbGFzcz1cInN0YXQtY2FyZFwiIFtzdHlsZS5ib3JkZXItbGVmdC1jb2xvcl09XCJjYXJkLmNvbG9yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3RhdC1jYXJkLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0YXQtY29udGVudFwiPlxyXG4gICAgICAgIDxjODAtaWNvbiBbaWNvbl09XCJjYXJkLmljb25cIiBbY29sb3JdPVwiJ3NlY29uZGFyeSdcIiBbc2l6ZV09XCIxLjFcIj48L2M4MC1pY29uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LWluZm9cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LW51bWJlclwiPnt7IGNhcmQuY291bnQgfX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LWxhYmVsXCI+e3sgY2FyZC50ZXh0IH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj4iXX0=
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
153
153
  providedIn: 'root'
154
154
  }]
155
155
  }] });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLXZpc2liaWxpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS1jb2x1bW4tdmlzaWJpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUUzRTs7Ozs7OztHQU9HO0FBSUgsTUFBTSxPQUFPLDRCQUE0QjtJQUVwQixhQUFhLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFFbkU7Ozs7Ozs7T0FPRztJQUNILGlCQUFpQixDQUNiLE9BQXlCLEVBQ3pCLElBQVMsRUFDVCxRQUFpQixFQUNqQixPQUFrQjtRQUVsQixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ3hDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FDN0QsQ0FBQztRQUNGLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUNYLE1BQXNCLEVBQ3RCLElBQVMsRUFDVCxtQkFBbUIsR0FBRyxLQUFLO1FBRTNCLG9GQUFvRjtRQUNwRixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDM0IsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELDJGQUEyRjtRQUMzRix1RkFBdUY7UUFDdkYsSUFBSSxNQUFNLENBQUMsc0JBQXNCLEtBQUssSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUks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S0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssWUFBWSxDQUFvQyxHQUFNLEVBQUUsUUFBZ0I7UUFDNUUsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBUSxHQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGNBQWMsQ0FBQyxHQUFRLEVBQUUsUUFBZ0I7UUFDN0MsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMvQyxPQUFPLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzdFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7d0dBbExRLDRCQUE0Qjs0R0FBNUIsNEJBQTRCLGNBRnpCLE1BQU07OzRGQUVULDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEM4MFRhYmxlQ29sRGVmLCBJRCB9IGZyb20gJy4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGFibGVEYXRhQ29udmVydGVyU2VydmljZSB9IGZyb20gJy4vdGFibGUtZGF0YS1jb252ZXJ0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBnZXN0aW9uYXIgbGEgbMOzZ2ljYSBkZSB2aXNpYmlsaWRhZCBkZSBjb2x1bW5hcyBlbiB0YWJsYXMgQzgwXG4gKlxuICogTWFuZWphIGxhcyByZWdsYXMgY29tcGxlamFzIGRlIHZpc2liaWxpZGFkIGJhc2FkYXMgZW46XG4gKiAtIENvbmZpZ3VyYWNpw7NuIGV4cGzDrWNpdGEgKHZpc2libGU6IGZhbHNlKVxuICogLSBPY3VsdGFjacOzbiBhdXRvbcOhdGljYSAoaGlkZUlmQWxsVmFsdWVzQXJlTnVsbClcbiAqIC0gRXN0YWRvIGRlIGNyZWFjacOzbiB5IGVkaWNpw7NuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5WaXNpYmlsaXR5U2VydmljZSB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFDb252ZXJ0ZXIgPSBpbmplY3QoVGFibGVEYXRhQ29udmVydGVyU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiBBY3R1YWxpemEgbGFzIGtleXMgZGUgY29sdW1uYXMgdmlzaWJsZXMgYmFzw6FuZG9zZSBlbiBlbCBlc3RhZG8gYWN0dWFsXG4gICAgICogQHBhcmFtIGNvbHVtbnMgLSBEZWZpbmljaW9uZXMgZGUgY29sdW1uYXNcbiAgICAgKiBAcGFyYW0gZGF0YSAtIERhdG9zIGFjdHVhbGVzIGRlIGxhIHRhYmxhXG4gICAgICogQHBhcmFtIGNyZWF0aW5nIC0gU2kgZXN0w6EgZW4gbW9kbyBjcmVhY2nDs25cbiAgICAgKiBAcGFyYW0gZWRpdGluZyAtIElEIGRlIGZpbGEgZW4gZWRpY2nDs24gKG51bGwgc2kgbm8gaGF5IGVkaWNpw7NuKVxuICAgICAqIEByZXR1cm5zIEFycmF5IGRlIGFjY2Vzc29ycyBkZSBjb2x1bW5hcyB2aXNpYmxlc1xuICAgICAqL1xuICAgIHVwZGF0ZVZpc2libGVLZXlzPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10sXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgY3JlYXRpbmc6IGJvb2xlYW4sXG4gICAgICAgIGVkaXRpbmc6IElEIHwgbnVsbFxuICAgICk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcihjb2wgPT5cbiAgICAgICAgICAgIHRoaXMuaXNDb2x1bW5WaXNpYmxlSW5IZWFkZXIoY29sLCBkYXRhLCBjcmVhdGluZywgZWRpdGluZylcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHZpc2libGVDb2x1bW5zLm1hcChjb2wgPT4gY29sLmFjY2Vzc29yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmEgc2kgdW5hIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZSBiYXPDoW5kb3NlIGVuIHN1IGNvbmZpZ3VyYWNpw7NuIHkgZGF0b3NcbiAgICAgKiBAcGFyYW0gY29sdW1uIC0gTGEgZGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEBwYXJhbSBkYXRhIC0gRGF0b3MgYWN0dWFsZXMgZGUgbGEgdGFibGFcbiAgICAgKiBAcGFyYW0gZm9yY2VTaG93SW5DcmVhdGlvbiAtIFNpIGVzIHRydWUsIGlnbm9yYSBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsICh1c2FkbyBlbiBtb2RvIGNyZWFjacOzbilcbiAgICAgKiBAcmV0dXJucyB0cnVlIHNpIGxhIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICBkYXRhOiBUW10sXG4gICAgICAgIGZvcmNlU2hvd0luQ3JlYXRpb24gPSBmYWxzZVxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBQUklPUklEQUQgMTogU2kgdmlzaWJsZSBlc3TDoSBleHBsw61jaXRhbWVudGUgZXN0YWJsZWNpZG8gZW4gZmFsc2UsIFNJRU1QUkUgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQUklPUklEQUQgMjogU2kgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCBlcyB0cnVlIHkgdG9kb3MgbG9zIHZhbG9yZXMgZXN0w6FuIHZhY8Otb3MsIG9jdWx0YXJcbiAgICAgICAgLy8gRVhDRVBDScOTTjogRW4gbW9kbyBjcmVhY2nDs24sIG1vc3RyYW1vcyBlc3RhcyBjb2x1bW5hcyBwYXJhIHBlcm1pdGlyIGVudHJhZGEgZGUgZGF0b3NcbiAgICAgICAgaWYgKGNvbHVtbi5oaWRlSWZBbGxWYWx1ZXNBcmVOdWxsID09PSB0cnVlICYmICFmb3JjZVNob3dJbkNyZWF0aW9uICYmIHRoaXMuYXJlQWxsQ29sdW1uVmFsdWVzRW1wdHkoY29sdW1uLCBkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUG9yIGRlZmVjdG86IG1vc3RyYXJcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5hIHNpIHVuYSBjb2x1bW5hIGRlYmUgc2VyIHZpc2libGUgZW4gbG9zIGhlYWRlcnNcbiAgICAgKiBAcGFyYW0gY29sdW1uIC0gTGEgZGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEBwYXJhbSBkYXRhIC0gRGF0b3MgYWN0dWFsZXMgZGUgbGEgdGFibGFcbiAgICAgKiBAcGFyYW0gY3JlYXRpbmcgLSBTaSBlc3TDoSBlbiBtb2RvIGNyZWFjacOzblxuICAgICAqIEBwYXJhbSBlZGl0aW5nIC0gSUQgZGUgZmlsYSBlbiBlZGljacOzbiAobnVsbCBzaSBubyBoYXkgZWRpY2nDs24pXG4gICAgICogQHJldHVybnMgdHJ1ZSBzaSBlbCBoZWFkZXIgZGViZSBzZXIgdmlzaWJsZVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZUluSGVhZGVyPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIGNvbHVtbjogQzgwVGFibGVDb2xEZWYsXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgY3JlYXRpbmc6IGJvb2xlYW4sXG4gICAgICAgIGVkaXRpbmc6IElEIHwgbnVsbFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBQUklPUklEQUQgMTogU2kgdmlzaWJsZSBlc3TDoSBleHBsw61jaXRhbWVudGUgZXN0YWJsZWNpZG8gZW4gZmFsc2UsIFNJRU1QUkUgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBlc3RhbW9zIGVuIG1vZG8gY3JlYWNpw7NuLCBtb3N0cmFyIGNvbHVtbmFzIGNvbiBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsXG4gICAgICAgIGlmIChjcmVhdGluZyAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBoYXkgdW5hIGZpbGEgZW4gbW9kbyBlZGljacOzbiB5IGxhIGNvbHVtbmEgdGllbmUgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbFxuICAgICAgICBpZiAoZWRpdGluZyAhPT0gbnVsbCAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgLy8gQnVzY2FyIGxhIGZpbGEgcXVlIHNlIGVzdMOhIGVkaXRhbmRvXG4gICAgICAgICAgICBjb25zdCBlZGl0aW5nUm93ID0gZGF0YS5maW5kKHJvdyA9PiByb3dbJ2lkJ10gPT09IGVkaXRpbmcpO1xuXG4gICAgICAgICAgICBpZiAoZWRpdGluZ1Jvdykge1xuICAgICAgICAgICAgICAgIC8vIFNvbG8gbW9zdHJhciBlbCBoZWFkZXIgc2kgbGEgZmlsYSBlbiBlZGljacOzbiB0aWVuZSB2YWxvciBlbiBlc3RhIGNvbHVtbmFcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUgPSB0aGlzLmdldENlbGxWYWx1ZShlZGl0aW5nUm93LCBjb2x1bW4uYWNjZXNzb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5kYXRhQ29udmVydGVyLmlzVmFsdWVFbXB0eShjZWxsVmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaSBubyBzZSBlbmN1ZW50cmEgbGEgZmlsYSwgbm8gbW9zdHJhciBlbCBoZWFkZXJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIGhpZGVJZkFsbFZhbHVlc0FyZU51bGwgZXMgdHJ1ZSB5IHRvZG9zIGxvcyB2YWxvcmVzIGVzdMOhbiB2YWPDrW9zLCBvY3VsdGFyXG4gICAgICAgIGlmIChjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSAmJiB0aGlzLmFyZUFsbENvbHVtblZhbHVlc0VtcHR5KGNvbHVtbiwgZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBvciBkZWZlY3RvOiBtb3N0cmFyXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluYSBzaSB1bmEgY29sdW1uYSBkZWJlIHNlciB2aXNpYmxlIGVuIHVuYSBmaWxhIGVzcGVjw61maWNhIGNvbnNpZGVyYW5kbyBlbCBtb2RvIGVkaWNpw7NuXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIExhIGRlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcGFyYW0gcm93IC0gTGEgZmlsYSBhY3R1YWxcbiAgICAgKiBAcGFyYW0gZGF0YSAtIERhdG9zIGFjdHVhbGVzIGRlIGxhIHRhYmxhXG4gICAgICogQHBhcmFtIGVkaXRpbmcgLSBJRCBkZSBmaWxhIGVuIGVkaWNpw7NuIChudWxsIHNpIG5vIGhheSBlZGljacOzbilcbiAgICAgKiBAcmV0dXJucyB0cnVlIHNpIGxhIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZSBwYXJhIGVzdGEgZmlsYVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZUZvclJvdzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICByb3c6IFQsXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgZWRpdGluZzogSUQgfCBudWxsXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFBSSU9SSURBRCAxOiBTaSB2aXNpYmxlIGVzdMOhIGV4cGzDrWNpdGFtZW50ZSBlc3RhYmxlY2lkbyBlbiBmYWxzZSwgU0lFTVBSRSBvY3VsdGFyXG4gICAgICAgIGlmIChjb2x1bW4udmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBSSU9SSURBRCAyOiBTaSBlc3RhIGZpbGEgZXNwZWPDrWZpY2EgZXN0w6EgZW4gbW9kbyBlZGljacOzbiB5IGxhIGNvbHVtbmEgdGllbmUgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbFxuICAgICAgICBjb25zdCBpc0VkaXRpbmdUaGlzUm93ID0gZWRpdGluZyA9PT0gcm93WydpZCddO1xuICAgICAgICBpZiAoaXNFZGl0aW5nVGhpc1JvdyAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgLy8gRW4gZWRpY2nDs24sIHNvbG8gbW9zdHJhciBzaSBlc3RhIGZpbGEgZXNwZWPDrWZpY2EgdGllbmUgdmFsb3IgZW4gZXN0YSBjb2x1bW5hXG4gICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUgPSB0aGlzLmdldENlbGxWYWx1ZShyb3csIGNvbHVtbi5hY2Nlc3Nvcik7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuZGF0YUNvbnZlcnRlci5pc1ZhbHVlRW1wdHkoY2VsbFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBSSU9SSURBRCAzOiBTaSBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsIGVzIHRydWUgeSB0b2RvcyBsb3MgdmFsb3JlcyBlc3TDoW4gdmFjw61vcywgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLmhpZGVJZkFsbFZhbHVlc0FyZU51bGwgPT09IHRydWUgJiYgdGhpcy5hcmVBbGxDb2x1bW5WYWx1ZXNFbXB0eShjb2x1bW4sIGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQb3IgZGVmZWN0bzogbW9zdHJhclxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmljYSBzaSB0b2RvcyBsb3MgdmFsb3JlcyBkZSB1bmEgY29sdW1uYSBlc3TDoW4gdmFjw61vcy9udWxvc1xuICAgICAqIEBwYXJhbSBjb2x1bW4gLSBMYSBkZWZpbmljacOzbiBkZSBsYSBjb2x1bW5hXG4gICAgICogQHBhcmFtIGRhdGEgLSBEYXRvcyBhY3R1YWxlcyBkZSBsYSB0YWJsYVxuICAgICAqIEByZXR1cm5zIHRydWUgc2kgdG9kb3MgbG9zIHZhbG9yZXMgZXN0w6FuIHZhY8Otb3NcbiAgICAgKi9cbiAgICBhcmVBbGxDb2x1bW5WYWx1ZXNFbXB0eTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICBkYXRhOiBUW11cbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gU2kgbm8gaGF5IGRhdG9zLCBjb25zaWRlcmFtb3MgbGEgY29sdW1uYSBjb21vIHZhY8OtYVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGEuZXZlcnkocm93ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRDZWxsVmFsdWUocm93LCBjb2x1bW4uYWNjZXNzb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUNvbnZlcnRlci5pc1ZhbHVlRW1wdHkodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIHZhbG9yIGRlIHVuYSBjZWxkYSB1c2FuZG8gZWwgYWNjZXNzb3IsIHNvcG9ydGFuZG8gbm90YWNpw7NuIGRlIHB1bnRvIHBhcmEgcHJvcGllZGFkZXMgYW5pZGFkYXNcbiAgICAgKiBAcGFyYW0gcm93IC0gTGEgZmlsYSBkZSBkYXRvc1xuICAgICAqIEBwYXJhbSBhY2Nlc3NvciAtIEVsIGFjY2Vzc29yIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcmV0dXJucyBFbCB2YWxvciBkZSBsYSBjZWxkYVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2VsbFZhbHVlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ocm93OiBULCBhY2Nlc3Nvcjogc3RyaW5nKTogdW5rbm93biB7XG4gICAgICAgIGlmIChhY2Nlc3Nvci5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGFjY2Vzc29yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHJvdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbYWNjZXNzb3JdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idGllbmUgZWwgdmFsb3IgZGUgdW4gb2JqZXRvIHVzYW5kbyBub3RhY2nDs24gZGUgcHVudG8gKGVqOiAndGFzay5uYW1lJylcbiAgICAgKiBAcGFyYW0gb2JqIC0gT2JqZXRvIGRlbCBjdWFsIG9idGVuZXIgZWwgdmFsb3JcbiAgICAgKiBAcGFyYW0gYWNjZXNzb3IgLSBSdXRhIGRlIGFjY2VzbyB1c2FuZG8gbm90YWNpw7NuIGRlIHB1bnRvXG4gICAgICogQHJldHVybnMgRWwgdmFsb3IgYW5pZGFkbyBvIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TmVzdGVkVmFsdWUob2JqOiBhbnksIGFjY2Vzc29yOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICAgICAgcmV0dXJuIGFjY2Vzc29yLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50LCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50ICYmIHR5cGVvZiBjdXJyZW50ID09PSAnb2JqZWN0JyA/IGN1cnJlbnRba2V5XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfSwgb2JqKTtcbiAgICB9XG59XG4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLXZpc2liaWxpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS1jb2x1bW4tdmlzaWJpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUUzRTs7Ozs7OztHQU9HO0FBSUgsTUFBTSxPQUFPLDRCQUE0QjtJQUVwQixhQUFhLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFFbkU7Ozs7Ozs7T0FPRztJQUNILGlCQUFpQixDQUNiLE9BQXlCLEVBQ3pCLElBQVMsRUFDVCxRQUFpQixFQUNqQixPQUFrQjtRQUVsQixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ3hDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FDN0QsQ0FBQztRQUNGLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUNYLE1BQXNCLEVBQ3RCLElBQVMsRUFDVCxtQkFBbUIsR0FBRyxLQUFLO1FBRTNCLG9GQUFvRjtRQUNwRixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDM0IsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELDJGQUEyRjtRQUMzRix1RkFBdUY7UUFDdkYsSUFBSSxNQUFNLENBQUMsc0JBQXNCLEtBQUssSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUks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S0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssWUFBWSxDQUFvQyxHQUFNLEVBQUUsUUFBZ0I7UUFDNUUsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBUSxHQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGNBQWMsQ0FBQyxHQUE0QixFQUFFLFFBQWdCO1FBQ2pFLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDL0MsT0FBTyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBRSxPQUFtQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDMUcsQ0FBQyxFQUFFLEdBQWMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7d0dBbExRLDRCQUE0Qjs0R0FBNUIsNEJBQTRCLGNBRnpCLE1BQU07OzRGQUVULDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEM4MFRhYmxlQ29sRGVmLCBJRCB9IGZyb20gJy4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGFibGVEYXRhQ29udmVydGVyU2VydmljZSB9IGZyb20gJy4vdGFibGUtZGF0YS1jb252ZXJ0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBnZXN0aW9uYXIgbGEgbMOzZ2ljYSBkZSB2aXNpYmlsaWRhZCBkZSBjb2x1bW5hcyBlbiB0YWJsYXMgQzgwXG4gKlxuICogTWFuZWphIGxhcyByZWdsYXMgY29tcGxlamFzIGRlIHZpc2liaWxpZGFkIGJhc2FkYXMgZW46XG4gKiAtIENvbmZpZ3VyYWNpw7NuIGV4cGzDrWNpdGEgKHZpc2libGU6IGZhbHNlKVxuICogLSBPY3VsdGFjacOzbiBhdXRvbcOhdGljYSAoaGlkZUlmQWxsVmFsdWVzQXJlTnVsbClcbiAqIC0gRXN0YWRvIGRlIGNyZWFjacOzbiB5IGVkaWNpw7NuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5WaXNpYmlsaXR5U2VydmljZSB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFDb252ZXJ0ZXIgPSBpbmplY3QoVGFibGVEYXRhQ29udmVydGVyU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiBBY3R1YWxpemEgbGFzIGtleXMgZGUgY29sdW1uYXMgdmlzaWJsZXMgYmFzw6FuZG9zZSBlbiBlbCBlc3RhZG8gYWN0dWFsXG4gICAgICogQHBhcmFtIGNvbHVtbnMgLSBEZWZpbmljaW9uZXMgZGUgY29sdW1uYXNcbiAgICAgKiBAcGFyYW0gZGF0YSAtIERhdG9zIGFjdHVhbGVzIGRlIGxhIHRhYmxhXG4gICAgICogQHBhcmFtIGNyZWF0aW5nIC0gU2kgZXN0w6EgZW4gbW9kbyBjcmVhY2nDs25cbiAgICAgKiBAcGFyYW0gZWRpdGluZyAtIElEIGRlIGZpbGEgZW4gZWRpY2nDs24gKG51bGwgc2kgbm8gaGF5IGVkaWNpw7NuKVxuICAgICAqIEByZXR1cm5zIEFycmF5IGRlIGFjY2Vzc29ycyBkZSBjb2x1bW5hcyB2aXNpYmxlc1xuICAgICAqL1xuICAgIHVwZGF0ZVZpc2libGVLZXlzPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10sXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgY3JlYXRpbmc6IGJvb2xlYW4sXG4gICAgICAgIGVkaXRpbmc6IElEIHwgbnVsbFxuICAgICk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcihjb2wgPT5cbiAgICAgICAgICAgIHRoaXMuaXNDb2x1bW5WaXNpYmxlSW5IZWFkZXIoY29sLCBkYXRhLCBjcmVhdGluZywgZWRpdGluZylcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHZpc2libGVDb2x1bW5zLm1hcChjb2wgPT4gY29sLmFjY2Vzc29yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmEgc2kgdW5hIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZSBiYXPDoW5kb3NlIGVuIHN1IGNvbmZpZ3VyYWNpw7NuIHkgZGF0b3NcbiAgICAgKiBAcGFyYW0gY29sdW1uIC0gTGEgZGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEBwYXJhbSBkYXRhIC0gRGF0b3MgYWN0dWFsZXMgZGUgbGEgdGFibGFcbiAgICAgKiBAcGFyYW0gZm9yY2VTaG93SW5DcmVhdGlvbiAtIFNpIGVzIHRydWUsIGlnbm9yYSBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsICh1c2FkbyBlbiBtb2RvIGNyZWFjacOzbilcbiAgICAgKiBAcmV0dXJucyB0cnVlIHNpIGxhIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICBkYXRhOiBUW10sXG4gICAgICAgIGZvcmNlU2hvd0luQ3JlYXRpb24gPSBmYWxzZVxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBQUklPUklEQUQgMTogU2kgdmlzaWJsZSBlc3TDoSBleHBsw61jaXRhbWVudGUgZXN0YWJsZWNpZG8gZW4gZmFsc2UsIFNJRU1QUkUgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQUklPUklEQUQgMjogU2kgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCBlcyB0cnVlIHkgdG9kb3MgbG9zIHZhbG9yZXMgZXN0w6FuIHZhY8Otb3MsIG9jdWx0YXJcbiAgICAgICAgLy8gRVhDRVBDScOTTjogRW4gbW9kbyBjcmVhY2nDs24sIG1vc3RyYW1vcyBlc3RhcyBjb2x1bW5hcyBwYXJhIHBlcm1pdGlyIGVudHJhZGEgZGUgZGF0b3NcbiAgICAgICAgaWYgKGNvbHVtbi5oaWRlSWZBbGxWYWx1ZXNBcmVOdWxsID09PSB0cnVlICYmICFmb3JjZVNob3dJbkNyZWF0aW9uICYmIHRoaXMuYXJlQWxsQ29sdW1uVmFsdWVzRW1wdHkoY29sdW1uLCBkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUG9yIGRlZmVjdG86IG1vc3RyYXJcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5hIHNpIHVuYSBjb2x1bW5hIGRlYmUgc2VyIHZpc2libGUgZW4gbG9zIGhlYWRlcnNcbiAgICAgKiBAcGFyYW0gY29sdW1uIC0gTGEgZGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEBwYXJhbSBkYXRhIC0gRGF0b3MgYWN0dWFsZXMgZGUgbGEgdGFibGFcbiAgICAgKiBAcGFyYW0gY3JlYXRpbmcgLSBTaSBlc3TDoSBlbiBtb2RvIGNyZWFjacOzblxuICAgICAqIEBwYXJhbSBlZGl0aW5nIC0gSUQgZGUgZmlsYSBlbiBlZGljacOzbiAobnVsbCBzaSBubyBoYXkgZWRpY2nDs24pXG4gICAgICogQHJldHVybnMgdHJ1ZSBzaSBlbCBoZWFkZXIgZGViZSBzZXIgdmlzaWJsZVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZUluSGVhZGVyPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIGNvbHVtbjogQzgwVGFibGVDb2xEZWYsXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgY3JlYXRpbmc6IGJvb2xlYW4sXG4gICAgICAgIGVkaXRpbmc6IElEIHwgbnVsbFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBQUklPUklEQUQgMTogU2kgdmlzaWJsZSBlc3TDoSBleHBsw61jaXRhbWVudGUgZXN0YWJsZWNpZG8gZW4gZmFsc2UsIFNJRU1QUkUgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBlc3RhbW9zIGVuIG1vZG8gY3JlYWNpw7NuLCBtb3N0cmFyIGNvbHVtbmFzIGNvbiBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsXG4gICAgICAgIGlmIChjcmVhdGluZyAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBoYXkgdW5hIGZpbGEgZW4gbW9kbyBlZGljacOzbiB5IGxhIGNvbHVtbmEgdGllbmUgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbFxuICAgICAgICBpZiAoZWRpdGluZyAhPT0gbnVsbCAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgLy8gQnVzY2FyIGxhIGZpbGEgcXVlIHNlIGVzdMOhIGVkaXRhbmRvXG4gICAgICAgICAgICBjb25zdCBlZGl0aW5nUm93ID0gZGF0YS5maW5kKHJvdyA9PiByb3dbJ2lkJ10gPT09IGVkaXRpbmcpO1xuXG4gICAgICAgICAgICBpZiAoZWRpdGluZ1Jvdykge1xuICAgICAgICAgICAgICAgIC8vIFNvbG8gbW9zdHJhciBlbCBoZWFkZXIgc2kgbGEgZmlsYSBlbiBlZGljacOzbiB0aWVuZSB2YWxvciBlbiBlc3RhIGNvbHVtbmFcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUgPSB0aGlzLmdldENlbGxWYWx1ZShlZGl0aW5nUm93LCBjb2x1bW4uYWNjZXNzb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5kYXRhQ29udmVydGVyLmlzVmFsdWVFbXB0eShjZWxsVmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaSBubyBzZSBlbmN1ZW50cmEgbGEgZmlsYSwgbm8gbW9zdHJhciBlbCBoZWFkZXJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIGhpZGVJZkFsbFZhbHVlc0FyZU51bGwgZXMgdHJ1ZSB5IHRvZG9zIGxvcyB2YWxvcmVzIGVzdMOhbiB2YWPDrW9zLCBvY3VsdGFyXG4gICAgICAgIGlmIChjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSAmJiB0aGlzLmFyZUFsbENvbHVtblZhbHVlc0VtcHR5KGNvbHVtbiwgZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBvciBkZWZlY3RvOiBtb3N0cmFyXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluYSBzaSB1bmEgY29sdW1uYSBkZWJlIHNlciB2aXNpYmxlIGVuIHVuYSBmaWxhIGVzcGVjw61maWNhIGNvbnNpZGVyYW5kbyBlbCBtb2RvIGVkaWNpw7NuXG4gICAgICogQHBhcmFtIGNvbHVtbiAtIExhIGRlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcGFyYW0gcm93IC0gTGEgZmlsYSBhY3R1YWxcbiAgICAgKiBAcGFyYW0gZGF0YSAtIERhdG9zIGFjdHVhbGVzIGRlIGxhIHRhYmxhXG4gICAgICogQHBhcmFtIGVkaXRpbmcgLSBJRCBkZSBmaWxhIGVuIGVkaWNpw7NuIChudWxsIHNpIG5vIGhheSBlZGljacOzbilcbiAgICAgKiBAcmV0dXJucyB0cnVlIHNpIGxhIGNvbHVtbmEgZGViZSBzZXIgdmlzaWJsZSBwYXJhIGVzdGEgZmlsYVxuICAgICAqL1xuICAgIGlzQ29sdW1uVmlzaWJsZUZvclJvdzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICByb3c6IFQsXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgZWRpdGluZzogSUQgfCBudWxsXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFBSSU9SSURBRCAxOiBTaSB2aXNpYmxlIGVzdMOhIGV4cGzDrWNpdGFtZW50ZSBlc3RhYmxlY2lkbyBlbiBmYWxzZSwgU0lFTVBSRSBvY3VsdGFyXG4gICAgICAgIGlmIChjb2x1bW4udmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBSSU9SSURBRCAyOiBTaSBlc3RhIGZpbGEgZXNwZWPDrWZpY2EgZXN0w6EgZW4gbW9kbyBlZGljacOzbiB5IGxhIGNvbHVtbmEgdGllbmUgaGlkZUlmQWxsVmFsdWVzQXJlTnVsbFxuICAgICAgICBjb25zdCBpc0VkaXRpbmdUaGlzUm93ID0gZWRpdGluZyA9PT0gcm93WydpZCddO1xuICAgICAgICBpZiAoaXNFZGl0aW5nVGhpc1JvdyAmJiBjb2x1bW4uaGlkZUlmQWxsVmFsdWVzQXJlTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgLy8gRW4gZWRpY2nDs24sIHNvbG8gbW9zdHJhciBzaSBlc3RhIGZpbGEgZXNwZWPDrWZpY2EgdGllbmUgdmFsb3IgZW4gZXN0YSBjb2x1bW5hXG4gICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUgPSB0aGlzLmdldENlbGxWYWx1ZShyb3csIGNvbHVtbi5hY2Nlc3Nvcik7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuZGF0YUNvbnZlcnRlci5pc1ZhbHVlRW1wdHkoY2VsbFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBSSU9SSURBRCAzOiBTaSBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsIGVzIHRydWUgeSB0b2RvcyBsb3MgdmFsb3JlcyBlc3TDoW4gdmFjw61vcywgb2N1bHRhclxuICAgICAgICBpZiAoY29sdW1uLmhpZGVJZkFsbFZhbHVlc0FyZU51bGwgPT09IHRydWUgJiYgdGhpcy5hcmVBbGxDb2x1bW5WYWx1ZXNFbXB0eShjb2x1bW4sIGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQb3IgZGVmZWN0bzogbW9zdHJhclxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmljYSBzaSB0b2RvcyBsb3MgdmFsb3JlcyBkZSB1bmEgY29sdW1uYSBlc3TDoW4gdmFjw61vcy9udWxvc1xuICAgICAqIEBwYXJhbSBjb2x1bW4gLSBMYSBkZWZpbmljacOzbiBkZSBsYSBjb2x1bW5hXG4gICAgICogQHBhcmFtIGRhdGEgLSBEYXRvcyBhY3R1YWxlcyBkZSBsYSB0YWJsYVxuICAgICAqIEByZXR1cm5zIHRydWUgc2kgdG9kb3MgbG9zIHZhbG9yZXMgZXN0w6FuIHZhY8Otb3NcbiAgICAgKi9cbiAgICBhcmVBbGxDb2x1bW5WYWx1ZXNFbXB0eTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW46IEM4MFRhYmxlQ29sRGVmLFxuICAgICAgICBkYXRhOiBUW11cbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gU2kgbm8gaGF5IGRhdG9zLCBjb25zaWRlcmFtb3MgbGEgY29sdW1uYSBjb21vIHZhY8OtYVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGEuZXZlcnkocm93ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRDZWxsVmFsdWUocm93LCBjb2x1bW4uYWNjZXNzb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUNvbnZlcnRlci5pc1ZhbHVlRW1wdHkodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIHZhbG9yIGRlIHVuYSBjZWxkYSB1c2FuZG8gZWwgYWNjZXNzb3IsIHNvcG9ydGFuZG8gbm90YWNpw7NuIGRlIHB1bnRvIHBhcmEgcHJvcGllZGFkZXMgYW5pZGFkYXNcbiAgICAgKiBAcGFyYW0gcm93IC0gTGEgZmlsYSBkZSBkYXRvc1xuICAgICAqIEBwYXJhbSBhY2Nlc3NvciAtIEVsIGFjY2Vzc29yIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcmV0dXJucyBFbCB2YWxvciBkZSBsYSBjZWxkYVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2VsbFZhbHVlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ocm93OiBULCBhY2Nlc3Nvcjogc3RyaW5nKTogdW5rbm93biB7XG4gICAgICAgIGlmIChhY2Nlc3Nvci5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGFjY2Vzc29yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHJvdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbYWNjZXNzb3JdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idGllbmUgZWwgdmFsb3IgZGUgdW4gb2JqZXRvIHVzYW5kbyBub3RhY2nDs24gZGUgcHVudG8gKGVqOiAndGFzay5uYW1lJylcbiAgICAgKiBAcGFyYW0gb2JqIC0gT2JqZXRvIGRlbCBjdWFsIG9idGVuZXIgZWwgdmFsb3JcbiAgICAgKiBAcGFyYW0gYWNjZXNzb3IgLSBSdXRhIGRlIGFjY2VzbyB1c2FuZG8gbm90YWNpw7NuIGRlIHB1bnRvXG4gICAgICogQHJldHVybnMgRWwgdmFsb3IgYW5pZGFkbyBvIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TmVzdGVkVmFsdWUob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgYWNjZXNzb3I6IHN0cmluZyk6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gYWNjZXNzb3Iuc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQgJiYgdHlwZW9mIGN1cnJlbnQgPT09ICdvYmplY3QnID8gKGN1cnJlbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sIG9iaiBhcyB1bmtub3duKTtcbiAgICB9XG59XG4iXX0=
@@ -14,6 +14,46 @@ import * as i0 from "@angular/core";
14
14
  export class TableCrudStateService {
15
15
  visibilityService = inject(TableColumnVisibilityService);
16
16
  dataConverter = inject(TableDataConverterService);
17
+ /**
18
+ * Filtra columnas visibles y editables
19
+ */
20
+ getEditableColumns(columns, data, includeHiddenIfNull) {
21
+ return columns.filter(col => this.visibilityService.isColumnVisible(col, data, includeHiddenIfNull) && !col.readOnly);
22
+ }
23
+ /**
24
+ * Convierte valores de row según definición de columnas
25
+ */
26
+ convertRowValues(row, columns, data) {
27
+ return columns.reduce((acc, col) => {
28
+ const sampleValue = data.length > 0
29
+ ? this.visibilityService['getCellValue'](data[0], col.accessor)
30
+ : undefined;
31
+ acc[col.accessor] = this.dataConverter.convertCellValue(row[col.accessor], col, sampleValue);
32
+ return acc;
33
+ }, {});
34
+ }
35
+ /**
36
+ * Inicializa row para creación con valores por defecto
37
+ */
38
+ initializeNewRow(columns, data) {
39
+ const row = {};
40
+ for (const col of this.getEditableColumns(columns, data, true)) {
41
+ const defaultValue = col.default === undefined ? '' : col.default;
42
+ row[col.accessor] = defaultValue;
43
+ }
44
+ return row;
45
+ }
46
+ /**
47
+ * Inicializa row para edición con valores actuales
48
+ */
49
+ initializeEditRow(row, columns, data) {
50
+ const edit = {};
51
+ for (const col of this.getEditableColumns(columns, data, true)) {
52
+ const value = this.visibilityService['getCellValue'](row, col.accessor);
53
+ edit[col.accessor] = value;
54
+ }
55
+ return edit;
56
+ }
17
57
  /**
18
58
  * Inicializa el estado CRUD para una nueva tabla
19
59
  * @returns Objeto con signals y métodos para gestión CRUD
@@ -23,135 +63,116 @@ export class TableCrudStateService {
23
63
  const newRow = signal(null);
24
64
  const editing = signal(null);
25
65
  const editRow = signal(null);
26
- const startCreate = (columns, data) => {
66
+ return {
67
+ creating: creating.asReadonly(),
68
+ newRow: newRow.asReadonly(),
69
+ editing: editing.asReadonly(),
70
+ editRow: editRow.asReadonly(),
71
+ startCreate: this.createStartCreateFn(creating, newRow),
72
+ cancelCreate: this.createCancelCreateFn(creating, newRow),
73
+ updateNewRow: this.createUpdateNewRowFn(newRow),
74
+ saveCreate: this.createSaveCreateFn(newRow, creating),
75
+ startEdit: this.createStartEditFn(editing, editRow),
76
+ cancelEdit: this.createCancelEditFn(editing, editRow),
77
+ updateEditRow: this.createUpdateEditRowFn(editRow),
78
+ saveEdit: this.createSaveEditFn(editRow, editing),
79
+ applyInputValues: this.createApplyInputValuesFn(creating, newRow, editing, editRow),
80
+ };
81
+ }
82
+ createStartCreateFn(creating, newRow) {
83
+ return (columns, data) => {
27
84
  creating.set(true);
28
- // Inicializar newRow solo con columnas visibles y no readOnly
29
- // En modo creación, mostramos columnas con hideIfAllValuesAreNull para permitir entrada de datos
30
- const row = {};
31
- columns
32
- .filter((col) => this.visibilityService.isColumnVisible(col, data, true) && !col.readOnly)
33
- .forEach((col) => {
34
- // Si la columna tiene un valor por defecto, usarlo; si no, usar cadena vacía
35
- const defaultValue = col.default !== undefined ? col.default : '';
36
- row[col.accessor] = defaultValue;
37
- });
38
- newRow.set(row);
85
+ newRow.set(this.initializeNewRow(columns, data));
39
86
  };
40
- const cancelCreate = () => {
87
+ }
88
+ createCancelCreateFn(creating, newRow) {
89
+ return () => {
41
90
  creating.set(false);
42
91
  newRow.set(null);
43
92
  };
44
- const updateNewRow = (key, value) => {
93
+ }
94
+ createUpdateNewRowFn(newRow) {
95
+ return (key, value) => {
45
96
  const current = newRow();
46
97
  if (!current)
47
98
  return;
48
99
  newRow.set({ ...current, [key]: value });
49
100
  };
50
- const saveCreate = (columns, data, createEmitter) => {
101
+ }
102
+ createSaveCreateFn(newRow, creating) {
103
+ return (columns, data, createEmitter) => {
51
104
  const row = newRow();
52
105
  if (!row)
53
106
  return;
54
- // Validar campos requeridos antes de crear - solo columnas visibles y no readOnly
55
- // En modo creación, incluimos columnas con hideIfAllValuesAreNull
56
- const visibleColumns = columns.filter((col) => this.visibilityService.isColumnVisible(col, data, true) && !col.readOnly);
57
- const converted = visibleColumns.reduce((acc, col) => {
58
- const sampleValue = data.length > 0
59
- ? this.visibilityService['getCellValue'](data[0], col.accessor)
60
- : undefined;
61
- acc[col.accessor] = this.dataConverter.convertCellValue(row[col.accessor], col, sampleValue);
62
- return acc;
63
- }, {});
107
+ const visibleColumns = this.getEditableColumns(columns, data, true);
108
+ const converted = this.convertRowValues(row, visibleColumns, data);
64
109
  createEmitter.emit({
65
110
  row: converted,
66
111
  done: (success) => {
67
112
  if (success) {
68
- cancelCreate();
113
+ creating.set(false);
114
+ newRow.set(null);
69
115
  }
70
116
  },
71
117
  });
72
118
  };
73
- const startEdit = (row, columns, data) => {
119
+ }
120
+ createStartEditFn(editing, editRow) {
121
+ return (row, columns, data) => {
74
122
  editing.set(row['id']);
75
- const edit = {};
76
- columns
77
- .filter((col) => this.visibilityService.isColumnVisible(col, data, true) && !col.readOnly)
78
- .forEach((col) => {
79
- const value = this.visibilityService['getCellValue'](row, col.accessor);
80
- edit[col.accessor] = value;
81
- });
82
- editRow.set(edit);
123
+ editRow.set(this.initializeEditRow(row, columns, data));
83
124
  };
84
- const cancelEdit = () => {
125
+ }
126
+ createCancelEditFn(editing, editRow) {
127
+ return () => {
85
128
  editing.set(null);
86
129
  editRow.set(null);
87
130
  };
88
- const updateEditRow = (key, value) => {
131
+ }
132
+ createUpdateEditRowFn(editRow) {
133
+ return (key, value) => {
89
134
  const current = editRow();
90
135
  if (!current)
91
136
  return;
92
137
  editRow.set({ ...current, [key]: value });
93
138
  };
94
- const saveEdit = (rowId, columns, data, updateEmitter) => {
139
+ }
140
+ createSaveEditFn(editRow, editing) {
141
+ return (rowId, columns, data, updateEmitter) => {
95
142
  const currentEditRow = editRow();
96
143
  if (!currentEditRow)
97
144
  return;
98
- const visibleColumns = columns.filter((col) => this.visibilityService.isColumnVisible(col, data, true) && !col.readOnly);
99
- const converted = visibleColumns.reduce((acc, col) => {
100
- const sampleValue = data.length > 0
101
- ? this.visibilityService['getCellValue'](data[0], col.accessor)
102
- : undefined;
103
- acc[col.accessor] = this.dataConverter.convertCellValue(currentEditRow[col.accessor], col, sampleValue);
104
- return acc;
105
- }, {});
145
+ const visibleColumns = this.getEditableColumns(columns, data, true);
146
+ const converted = this.convertRowValues(currentEditRow, visibleColumns, data);
106
147
  updateEmitter.emit({
107
148
  id: rowId,
108
149
  changes: converted,
109
150
  done: (success) => {
110
151
  if (success) {
111
- cancelEdit();
152
+ editing.set(null);
153
+ editRow.set(null);
112
154
  }
113
155
  },
114
156
  });
115
157
  };
116
- const applyInputValues = (partialValues) => {
117
- // Solo aplicar valores si estamos en modo creación o edición
118
- if (!creating() && editing() === null) {
158
+ }
159
+ createApplyInputValuesFn(creating, newRow, editing, editRow) {
160
+ return (partialValues) => {
161
+ if (!creating() && editing() === null)
119
162
  return;
120
- }
121
- // Aplicar valores en modo creación
122
163
  if (creating()) {
123
164
  const currentRow = newRow();
124
165
  if (currentRow) {
125
- const updatedRow = { ...currentRow, ...partialValues };
126
- newRow.set(updatedRow);
166
+ newRow.set({ ...currentRow, ...partialValues });
127
167
  }
128
168
  }
129
- // Aplicar valores en modo edición
130
- if (editing() !== null) {
169
+ else {
131
170
  const currentEditRow = editRow();
132
171
  if (currentEditRow) {
133
- const updatedEditRow = { ...currentEditRow, ...partialValues };
134
- editRow.set(updatedEditRow);
172
+ editRow.set({ ...currentEditRow, ...partialValues });
135
173
  }
136
174
  }
137
175
  };
138
- return {
139
- // Signals de solo lectura
140
- creating: creating.asReadonly(),
141
- newRow: newRow.asReadonly(),
142
- editing: editing.asReadonly(),
143
- editRow: editRow.asReadonly(),
144
- // Métodos
145
- startCreate,
146
- cancelCreate,
147
- updateNewRow,
148
- saveCreate,
149
- startEdit,
150
- cancelEdit,
151
- updateEditRow,
152
- saveEdit,
153
- applyInputValues,
154
- };
155
176
  }
156
177
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableCrudStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
157
178
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableCrudStateService, providedIn: 'root' });
@@ -162,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
162
183
  providedIn: 'root'
163
184
  }]
164
185
  }] });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY3J1ZC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLWNydWQtc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUUzRTs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFYixpQkFBaUIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN6RCxhQUFhLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFFbkU7OztPQUdHO0lBQ0gsZUFBZTtRQUNYLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQW9CLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBWSxJQUFJLENBQUMsQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQW9CLElBQUksQ0FBQyxDQUFDO1FBRWhELE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBeUIsRUFBRSxJQUFTLEVBQVEsRUFBRTtZQUMvRCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRW5CLDhEQUE4RDtZQUM5RCxpR0FBaUc7WUFDakcsTUFBTSxHQUFHLEdBQWUsRUFBRSxDQUFDO1lBQzNCLE9BQU87aUJBQ0YsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxJ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b3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBFdmVudEVtaXR0ZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQzgwVGFibGVDb2xEZWYsIElEIH0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtblZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4tdmlzaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlRGF0YUNvbnZlcnRlclNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLWRhdGEtY29udmVydGVyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFNlcnZpY2lvIHBhcmEgZ2VzdGlvbmFyIGVsIGVzdGFkbyBDUlVEIChDcmVhciwgTGVlciwgQWN0dWFsaXphciwgRWxpbWluYXIpIGVuIHRhYmxhcyBDODBcbiAqXG4gKiBNYW5lamE6XG4gKiAtIEVzdGFkbyBkZSBjcmVhY2nDs24geSBlZGljacOzblxuICogLSBHZXN0acOzbiBkZSBkYXRvcyB0ZW1wb3JhbGVzIChuZXdSb3csIGVkaXRSb3cpXG4gKiAtIEFwbGljYWNpw7NuIGRlIHZhbG9yZXMgZGluw6FtaWNvc1xuICogLSBWYWxpZGFjacOzbiB5IGNvbnZlcnNpw7NuIGRlIGRhdG9zIGFudGVzIGRlIGVtaXNpw7NuIGRlIGV2ZW50b3NcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNydWRTdGF0ZVNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aXNpYmlsaXR5U2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblZpc2liaWxpdHlTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFDb252ZXJ0ZXIgPSBpbmplY3QoVGFibGVEYXRhQ29udmVydGVyU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiBJbmljaWFsaXphIGVsIGVzdGFkbyBDUlVEIHBhcmEgdW5hIG51ZXZhIHRhYmxhXG4gICAgICogQHJldHVybnMgT2JqZXRvIGNvbiBzaWduYWxzIHkgbcOpdG9kb3MgcGFyYSBnZXN0acOzbiBDUlVEXG4gICAgICovXG4gICAgY3JlYXRlQ3J1ZFN0YXRlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKSB7XG4gICAgICAgIGNvbnN0IGNyZWF0aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgICAgICAgY29uc3QgbmV3Um93ID0gc2lnbmFsPFBhcnRpYWw8VD4gfCBudWxsPihudWxsKTtcbiAgICAgICAgY29uc3QgZWRpdGluZyA9IHNpZ25hbDxJRCB8IG51bGw+KG51bGwpO1xuICAgICAgICBjb25zdCBlZGl0Um93ID0gc2lnbmFsPFBhcnRpYWw8VD4gfCBudWxsPihudWxsKTtcblxuICAgICAgICBjb25zdCBzdGFydENyZWF0ZSA9IChjb2x1bW5zOiBDODBUYWJsZUNvbERlZltdLCBkYXRhOiBUW10pOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGNyZWF0aW5nLnNldCh0cnVlKTtcblxuICAgICAgICAgICAgLy8gSW5pY2lhbGl6YXIgbmV3Um93IHNvbG8gY29uIGNvbHVtbmFzIHZpc2libGVzIHkgbm8gcmVhZE9ubHlcbiAgICAgICAgICAgIC8vIEVuIG1vZG8gY3JlYWNpw7NuLCBtb3N0cmFtb3MgY29sdW1uYXMgY29uIGhpZGVJZkFsbFZhbHVlc0FyZU51bGwgcGFyYSBwZXJtaXRpciBlbnRyYWRhIGRlIGRhdG9zXG4gICAgICAgICAgICBjb25zdCByb3c6IFBhcnRpYWw8VD4gPSB7fTtcbiAgICAgICAgICAgIGNvbHVtbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChjb2wpID0+IHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuaXNDb2x1bW5WaXNpYmxlKGNvbCwgZGF0YSwgdHJ1ZSkgJiYgIWNvbC5yZWFkT25seSlcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpIGxhIGNvbHVtbmEgdGllbmUgdW4gdmFsb3IgcG9yIGRlZmVjdG8sIHVzYXJsbzsgc2kgbm8sIHVzYXIgY2FkZW5hIHZhY8OtYVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBjb2wuZGVmYXVsdCAhPT0gdW5kZWZpbmVkID8gY29sLmRlZmF1bHQgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgKHJvdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbY29sLmFjY2Vzc29yXSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5ld1Jvdy5zZXQocm93KTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBjYW5jZWxDcmVhdGUgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjcmVhdGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgbmV3Um93LnNldChudWxsKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB1cGRhdGVOZXdSb3cgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gbmV3Um93KCk7XG4gICAgICAgICAgICBpZiAoIWN1cnJlbnQpIHJldHVybjtcbiAgICAgICAgICAgIG5ld1Jvdy5zZXQoeyAuLi5jdXJyZW50LCBba2V5XTogdmFsdWUgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc2F2ZUNyZWF0ZSA9IChcbiAgICAgICAgICAgIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10sXG4gICAgICAgICAgICBkYXRhOiBUW10sXG4gICAgICAgICAgICBjcmVhdGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8eyByb3c6IFBhcnRpYWw8VD47IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+XG4gICAgICAgICk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gbmV3Um93KCk7XG4gICAgICAgICAgICBpZiAoIXJvdykgcmV0dXJuO1xuXG4gICAgICAgICAgICAvLyBWYWxpZGFyIGNhbXBvcyByZXF1ZXJpZG9zIGFudGVzIGRlIGNyZWFyIC0gc29sbyBjb2x1bW5hcyB2aXNpYmxlcyB5IG5vIHJlYWRPbmx5XG4gICAgICAgICAgICAvLyBFbiBtb2RvIGNyZWFjacOzbiwgaW5jbHVpbW9zIGNvbHVtbmFzIGNvbiBoaWRlSWZBbGxWYWx1ZXNBcmVOdWxsXG4gICAgICAgICAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2wpID0+XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5U2VydmljZS5pc0NvbHVtblZpc2libGUoY29sLCBkYXRhLCB0cnVlKSAmJiAhY29sLnJlYWRPbmx5XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBjb252ZXJ0ZWQgPSB2aXNpYmxlQ29sdW1ucy5yZWR1Y2UoKGFjYywgY29sKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2FtcGxlVmFsdWUgPSBkYXRhLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlWydnZXRDZWxsVmFsdWUnXShkYXRhWzBdLCBjb2wuYWNjZXNzb3IpXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGFjY1tjb2wuYWNjZXNzb3JdID0gdGhpcy5kYXRhQ29udmVydGVyLmNvbnZlcnRDZWxsVmFsdWUocm93W2NvbC5hY2Nlc3Nvcl0sIGNvbCwgc2FtcGxlVmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgYXMgUGFydGlhbDxUPjtcblxuICAgICAgICAgICAgY3JlYXRlRW1pdHRlci5lbWl0KHtcbiAgICAgICAgICAgICAgICByb3c6IGNvbnZlcnRlZCxcbiAgICAgICAgICAgICAgICBkb25lOiAoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsQ3JlYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3RhcnRFZGl0ID0gKHJvdzogVCwgY29sdW1uczogQzgwVGFibGVDb2xEZWZbXSwgZGF0YTogVFtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBlZGl0aW5nLnNldChyb3dbJ2lkJ10gYXMgSUQpO1xuXG4gICAgICAgICAgICBjb25zdCBlZGl0OiBQYXJ0aWFsPFQ+ID0ge307XG4gICAgICAgICAgICBjb2x1bW5zXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoY29sKSA9PiB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLmlzQ29sdW1uVmlzaWJsZShjb2wsIGRhdGEsIHRydWUpICYmICFjb2wucmVhZE9ubHkpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmlzaWJpbGl0eVNlcnZpY2VbJ2dldENlbGxWYWx1ZSddKHJvdywgY29sLmFjY2Vzc29yKTtcbiAgICAgICAgICAgICAgICAgICAgKGVkaXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2NvbC5hY2Nlc3Nvcl0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVkaXRSb3cuc2V0KGVkaXQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNhbmNlbEVkaXQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBlZGl0aW5nLnNldChudWxsKTtcbiAgICAgICAgICAgIGVkaXRSb3cuc2V0KG51bGwpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZUVkaXRSb3cgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gZWRpdFJvdygpO1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50KSByZXR1cm47XG4gICAgICAgICAgICBlZGl0Um93LnNldCh7IC4uLmN1cnJlbnQsIFtrZXldOiB2YWx1ZSB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzYXZlRWRpdCA9IChcbiAgICAgICAgICAgIHJvd0lkOiBJRCxcbiAgICAgICAgICAgIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10sXG4gICAgICAgICAgICBkYXRhOiBUW10sXG4gICAgICAgICAgICB1cGRhdGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8eyBpZDogSUQ7IGNoYW5nZXM6IFBhcnRpYWw8VD47IGRvbmU6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQ7IH0+XG4gICAgICAgICk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEVkaXRSb3cgPSBlZGl0Um93KCk7XG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRFZGl0Um93KSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGNvbCkgPT4gdGhpcy52aXNpYmlsaXR5U2VydmljZS5pc0NvbHVtblZpc2libGUoY29sLCBkYXRhLCB0cnVlKSAmJiAhY29sLnJlYWRPbmx5XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBjb252ZXJ0ZWQgPSB2aXNpYmxlQ29sdW1ucy5yZWR1Y2UoKGFjYywgY29sKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2FtcGxlVmFsdWUgPSBkYXRhLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlWydnZXRDZWxsVmFsdWUnXShkYXRhWzBdLCBjb2wuYWNjZXNzb3IpXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGFjY1tjb2wuYWNjZXNzb3JdID0gdGhpcy5kYXRhQ29udmVydGVyLmNvbnZlcnRDZWxsVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFZGl0Um93W2NvbC5hY2Nlc3Nvcl0sXG4gICAgICAgICAgICAgICAgICAgIGNvbCxcbiAgICAgICAgICAgICAgICAgICAgc2FtcGxlVmFsdWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgYXMgUGFydGlhbDxUPjtcblxuICAgICAgICAgICAgdXBkYXRlRW1pdHRlci5lbWl0KHtcbiAgICAgICAgICAgICAgICBpZDogcm93SWQsXG4gICAgICAgICAgICAgICAgY2hhbmdlczogY29udmVydGVkLFxuICAgICAgICAgICAgICAgIGRvbmU6IChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxFZGl0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYXBwbHlJbnB1dFZhbHVlcyA9IChwYXJ0aWFsVmFsdWVzOiBQYXJ0aWFsPFQ+KTogdm9pZCA9PiB7XG4gICAgICAgICAgICAvLyBTb2xvIGFwbGljYXIgdmFsb3JlcyBzaSBlc3RhbW9zIGVuIG1vZG8gY3JlYWNpw7NuIG8gZWRpY2nDs25cbiAgICAgICAgICAgIGlmICghY3JlYXRpbmcoKSAmJiBlZGl0aW5nKCkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFwbGljYXIgdmFsb3JlcyBlbiBtb2RvIGNyZWFjacOzblxuICAgICAgICAgICAgaWYgKGNyZWF0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Um93ID0gbmV3Um93KCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFJvdyA9IHsgLi4uY3VycmVudFJvdywgLi4ucGFydGlhbFZhbHVlcyB9O1xuICAgICAgICAgICAgICAgICAgICBuZXdSb3cuc2V0KHVwZGF0ZWRSb3cpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQXBsaWNhciB2YWxvcmVzIGVuIG1vZG8gZWRpY2nDs25cbiAgICAgICAgICAgIGlmIChlZGl0aW5nKCkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RWRpdFJvdyA9IGVkaXRSb3coKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVkaXRSb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZEVkaXRSb3cgPSB7IC4uLmN1cnJlbnRFZGl0Um93LCAuLi5wYXJ0aWFsVmFsdWVzIH07XG4gICAgICAgICAgICAgICAgICAgIGVkaXRSb3cuc2V0KHVwZGF0ZWRFZGl0Um93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vIFNpZ25hbHMgZGUgc29sbyBsZWN0dXJhXG4gICAgICAgICAgICBjcmVhdGluZzogY3JlYXRpbmcuYXNSZWFkb25seSgpLFxuICAgICAgICAgICAgbmV3Um93OiBuZXdSb3cuYXNSZWFkb25seSgpLFxuICAgICAgICAgICAgZWRpdGluZzogZWRpdGluZy5hc1JlYWRvbmx5KCksXG4gICAgICAgICAgICBlZGl0Um93OiBlZGl0Um93LmFzUmVhZG9ubHkoKSxcblxuICAgICAgICAgICAgLy8gTcOpdG9kb3NcbiAgICAgICAgICAgIHN0YXJ0Q3JlYXRlLFxuICAgICAgICAgICAgY2FuY2VsQ3JlYXRlLFxuICAgICAgICAgICAgdXBkYXRlTmV3Um93LFxuICAgICAgICAgICAgc2F2ZUNyZWF0ZSxcbiAgICAgICAgICAgIHN0YXJ0RWRpdCxcbiAgICAgICAgICAgIGNhbmNlbEVkaXQsXG4gICAgICAgICAgICB1cGRhdGVFZGl0Um93LFxuICAgICAgICAgICAgc2F2ZUVkaXQsXG4gICAgICAgICAgICBhcHBseUlucHV0VmFsdWVzLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY3J1ZC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLWNydWQtc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUUzRTs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFYixpQkFBaUIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN6RCxhQUFhLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFFbkU7O09BRUc7SUFDSyxrQkFBa0IsQ0FDdEIsT0FBeUIsRUFDekIsSUFBUyxFQUNULG1CQUE0QjtRQUU1QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQ2pCLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUNqRyxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQ3BCLEdBQWUsRUFDZixPQUF5QixFQUN6QixJQUFTO1FBRVQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQy9CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxD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QUFPO1lBRTlDLElBQUksUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDYixNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDYixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sY0FBYyxHQUFHLE9BQU8sRUFBRSxDQUFDO2dCQUNqQyxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxjQUFjLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQztJQUNOLENBQUM7d0dBdE9RLHFCQUFxQjs0R0FBckIscUJBQXFCLGNBRmxCLE1BQU07OzRGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIEV2ZW50RW1pdHRlciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDODBUYWJsZUNvbERlZiwgSUQgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLWNvbHVtbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhQ29udmVydGVyU2VydmljZSB9IGZyb20gJy4vdGFibGUtZGF0YS1jb252ZXJ0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBnZXN0aW9uYXIgZWwgZXN0YWRvIENSVUQgKENyZWFyLCBMZWVyLCBBY3R1YWxpemFyLCBFbGltaW5hcikgZW4gdGFibGFzIEM4MFxuICpcbiAqIE1hbmVqYTpcbiAqIC0gRXN0YWRvIGRlIGNyZWFjacOzbiB5IGVkaWNpw7NuXG4gKiAtIEdlc3Rpw7NuIGRlIGRhdG9zIHRlbXBvcmFsZXMgKG5ld1JvdywgZWRpdFJvdylcbiAqIC0gQXBsaWNhY2nDs24gZGUgdmFsb3JlcyBkaW7DoW1pY29zXG4gKiAtIFZhbGlkYWNpw7NuIHkgY29udmVyc2nDs24gZGUgZGF0b3MgYW50ZXMgZGUgZW1pc2nDs24gZGUgZXZlbnRvc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ3J1ZFN0YXRlU2VydmljZSB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpc2liaWxpdHlTZXJ2aWNlID0gaW5qZWN0KFRhYmxlQ29sdW1uVmlzaWJpbGl0eVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0YUNvbnZlcnRlciA9IGluamVjdChUYWJsZURhdGFDb252ZXJ0ZXJTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRyYSBjb2x1bW5hcyB2aXNpYmxlcyB5IGVkaXRhYmxlc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0RWRpdGFibGVDb2x1bW5zPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10sXG4gICAgICAgIGRhdGE6IFRbXSxcbiAgICAgICAgaW5jbHVkZUhpZGRlbklmTnVsbDogYm9vbGVhblxuICAgICk6IEM4MFRhYmxlQ29sRGVmW10ge1xuICAgICAgICByZXR1cm4gY29sdW1ucy5maWx0ZXIoXG4gICAgICAgICAgICBjb2wgPT4gdGhpcy52aXNpYmlsaXR5U2VydmljZS5pc0NvbHVtblZpc2libGUoY29sLCBkYXRhLCBpbmNsdWRlSGlkZGVuSWZOdWxsKSAmJiAhY29sLnJlYWRPbmx5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmllcnRlIHZhbG9yZXMgZGUgcm93IHNlZ8O6biBkZWZpbmljacOzbiBkZSBjb2x1bW5hc1xuICAgICAqL1xuICAgIHByaXZhdGUgY29udmVydFJvd1ZhbHVlczxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICByb3c6IFBhcnRpYWw8VD4sXG4gICAgICAgIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10sXG4gICAgICAgIGRhdGE6IFRbXVxuICAgICk6IFBhcnRpYWw8VD4ge1xuICAgICAgICByZXR1cm4gY29sdW1ucy5yZWR1Y2UoKGFjYywgY29sKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzYW1wbGVWYWx1ZSA9IGRhdGEubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gdGhpcy52aXNpYmlsaXR5U2VydmljZVsnZ2V0Q2VsbFZhbHVlJ10oZGF0YVswXSwgY29sLmFjY2Vzc29yKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgYWNjW2NvbC5hY2Nlc3Nvcl0gPSB0aGlzLmRhdGFDb252ZXJ0ZXIuY29udmVydENlbGxWYWx1ZShyb3dbY29sLmFjY2Vzc29yXSwgY29sLCBzYW1wbGVWYWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgYXMgUGFydGlhbDxUPjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmljaWFsaXphIHJvdyBwYXJhIGNyZWFjacOzbiBjb24gdmFsb3JlcyBwb3IgZGVmZWN0b1xuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdGlhbGl6ZU5ld1JvdzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjb2x1bW5zOiBDODBUYWJsZUNvbERlZltdLFxuICAgICAgICBkYXRhOiBUW11cbiAgICApOiBQYXJ0aWFsPFQ+IHtcbiAgICAgICAgY29uc3Qgcm93OiBQYXJ0aWFsPFQ+ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgY29sIG9mIHRoaXMuZ2V0RWRpdGFibGVDb2x1bW5zKGNvbHVtbnMsIGRhdGEsIHRydWUpKSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBjb2wuZGVmYXVsdCA9PT0gdW5kZWZpbmVkID8gJycgOiBjb2wuZGVmYXVsdDtcbiAgICAgICAgICAgIChyb3cgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2NvbC5hY2Nlc3Nvcl0gPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmljaWFsaXphIHJvdyBwYXJhIGVkaWNpw7NuIGNvbiB2YWxvcmVzIGFjdHVhbGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplRWRpdFJvdzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICByb3c6IFQsXG4gICAgICAgIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10sXG4gICAgICAgIGRhdGE6IFRbXVxuICAgICk6IFBhcnRpYWw8VD4ge1xuICAgICAgICBjb25zdCBlZGl0OiBQYXJ0aWFsPFQ+ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgY29sIG9mIHRoaXMuZ2V0RWRpdGFibGVDb2x1bW5zKGNvbHVtbnMsIGRhdGEsIHRydWUpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmlzaWJpbGl0eVNlcnZpY2VbJ2dldENlbGxWYWx1ZSddKHJvdywgY29sLmFjY2Vzc29yKTtcbiAgICAgICAgICAgIChlZGl0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtjb2wuYWNjZXNzb3JdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVkaXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pY2lhbGl6YSBlbCBlc3RhZG8gQ1JVRCBwYXJhIHVuYSBudWV2YSB0YWJsYVxuICAgICAqIEByZXR1cm5zIE9iamV0byBjb24gc2lnbmFscyB5IG3DqXRvZG9zIHBhcmEgZ2VzdGnDs24gQ1JVRFxuICAgICAqL1xuICAgIGNyZWF0ZUNydWRTdGF0ZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCkge1xuICAgICAgICBjb25zdCBjcmVhdGluZyA9IHNpZ25hbChmYWxzZSk7XG4gICAgICAgIGNvbnN0IG5ld1JvdyA9IHNpZ25hbDxQYXJ0aWFsPFQ+IHwgbnVsbD4obnVsbCk7XG4gICAgICAgIGNvbnN0IGVkaXRpbmcgPSBzaWduYWw8SUQgfCBudWxsPihudWxsKTtcbiAgICAgICAgY29uc3QgZWRpdFJvdyA9IHNpZ25hbDxQYXJ0aWFsPFQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNyZWF0aW5nOiBjcmVhdGluZy5hc1JlYWRvbmx5KCksXG4gICAgICAgICAgICBuZXdSb3c6IG5ld1Jvdy5hc1JlYWRvbmx5KCksXG4gICAgICAgICAgICBlZGl0aW5nOiBlZGl0aW5nLmFzUmVhZG9ubHkoKSxcbiAgICAgICAgICAgIGVkaXRSb3c6IGVkaXRSb3cuYXNSZWFkb25seSgpLFxuICAgICAgICAgICAgc3RhcnRDcmVhdGU6IHRoaXMuY3JlYXRlU3RhcnRDcmVhdGVGbihjcmVhdGluZywgbmV3Um93KSxcbiAgICAgICAgICAgIGNhbmNlbENyZWF0ZTogdGhpcy5jcmVhdGVDYW5jZWxDcmVhdGVGbihjcmVhdGluZywgbmV3Um93KSxcbiAgICAgICAgICAgIHVwZGF0ZU5ld1JvdzogdGhpcy5jcmVhdGVVcGRhdGVOZXdSb3dGbihuZXdSb3cpLFxuICAgICAgICAgICAgc2F2ZUNyZWF0ZTogdGhpcy5jcmVhdGVTYXZlQ3JlYXRlRm4obmV3Um93LCBjcmVhdGluZyksXG4gICAgICAgICAgICBzdGFydEVkaXQ6IHRoaXMuY3JlYXRlU3RhcnRFZGl0Rm4oZWRpdGluZywgZWRpdFJvdyksXG4gICAgICAgICAgICBjYW5jZWxFZGl0OiB0aGlzLmNyZWF0ZUNhbmNlbEVkaXRGbihlZGl0aW5nLCBlZGl0Um93KSxcbiAgICAgICAgICAgIHVwZGF0ZUVkaXRSb3c6IHRoaXMuY3JlYXRlVXBkYXRlRWRpdFJvd0ZuKGVkaXRSb3cpLFxuICAgICAgICAgICAgc2F2ZUVkaXQ6IHRoaXMuY3JlYXRlU2F2ZUVkaXRGbihlZGl0Um93LCBlZGl0aW5nKSxcbiAgICAgICAgICAgIGFwcGx5SW5wdXRWYWx1ZXM6IHRoaXMuY3JlYXRlQXBwbHlJbnB1dFZhbHVlc0ZuKGNyZWF0aW5nLCBuZXdSb3csIGVkaXRpbmcsIGVkaXRSb3cpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU3RhcnRDcmVhdGVGbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjcmVhdGluZzogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPGJvb2xlYW4+PixcbiAgICAgICAgbmV3Um93OiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8UGFydGlhbDxUPiB8IG51bGw+PlxuICAgICkge1xuICAgICAgICByZXR1cm4gKGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10sIGRhdGE6IFRbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgY3JlYXRpbmcuc2V0KHRydWUpO1xuICAgICAgICAgICAgbmV3Um93LnNldCh0aGlzLmluaXRpYWxpemVOZXdSb3coY29sdW1ucywgZGF0YSkpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ2FuY2VsQ3JlYXRlRm48VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgY3JlYXRpbmc6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxib29sZWFuPj4sXG4gICAgICAgIG5ld1JvdzogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPFBhcnRpYWw8VD4gfCBudWxsPj5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGNyZWF0aW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICBuZXdSb3cuc2V0KG51bGwpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVXBkYXRlTmV3Um93Rm48VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgbmV3Um93OiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8UGFydGlhbDxUPiB8IG51bGw+PlxuICAgICkge1xuICAgICAgICByZXR1cm4gKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IG5ld1JvdygpO1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50KSByZXR1cm47XG4gICAgICAgICAgICBuZXdSb3cuc2V0KHsgLi4uY3VycmVudCwgW2tleV06IHZhbHVlIH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU2F2ZUNyZWF0ZUZuPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIG5ld1JvdzogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPFBhcnRpYWw8VD4gfCBudWxsPj4sXG4gICAgICAgIGNyZWF0aW5nOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBjb2x1bW5zOiBDODBUYWJsZUNvbERlZltdLFxuICAgICAgICAgICAgZGF0YTogVFtdLFxuICAgICAgICAgICAgY3JlYXRlRW1pdHRlcjogRXZlbnRFbWl0dGVyPHsgcm93OiBQYXJ0aWFsPFQ+OyBkb25lOiAocmVzdWx0OiBib29sZWFuKSA9PiB2b2lkOyB9PlxuICAgICAgICApOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IG5ld1JvdygpO1xuICAgICAgICAgICAgaWYgKCFyb3cpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSB0aGlzLmdldEVkaXRhYmxlQ29sdW1ucyhjb2x1bW5zLCBkYXRhLCB0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IHRoaXMuY29udmVydFJvd1ZhbHVlcyhyb3csIHZpc2libGVDb2x1bW5zLCBkYXRhKTtcblxuICAgICAgICAgICAgY3JlYXRlRW1pdHRlci5lbWl0KHtcbiAgICAgICAgICAgICAgICByb3c6IGNvbnZlcnRlZCxcbiAgICAgICAgICAgICAgICBkb25lOiAoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Jvdy5zZXQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVTdGFydEVkaXRGbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBlZGl0aW5nOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8SUQgfCBudWxsPj4sXG4gICAgICAgIGVkaXRSb3c6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxQYXJ0aWFsPFQ+IHwgbnVsbD4+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiAocm93OiBULCBjb2x1bW5zOiBDODBUYWJsZUNvbERlZltdLCBkYXRhOiBUW10pOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGVkaXRpbmcuc2V0KHJvd1snaWQnXSBhcyBJRCk7XG4gICAgICAgICAgICBlZGl0Um93LnNldCh0aGlzLmluaXRpYWxpemVFZGl0Um93KHJvdywgY29sdW1ucywgZGF0YSkpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ2FuY2VsRWRpdEZuPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIGVkaXRpbmc6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxJRCB8IG51bGw+PixcbiAgICAgICAgZWRpdFJvdzogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPFBhcnRpYWw8VD4gfCBudWxsPj5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGVkaXRpbmcuc2V0KG51bGwpO1xuICAgICAgICAgICAgZWRpdFJvdy5zZXQobnVsbCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVVcGRhdGVFZGl0Um93Rm48VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgZWRpdFJvdzogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPFBhcnRpYWw8VD4gfCBudWxsPj5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIChrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBlZGl0Um93KCk7XG4gICAgICAgICAgICBpZiAoIWN1cnJlbnQpIHJldHVybjtcbiAgICAgICAgICAgIGVkaXRSb3cuc2V0KHsgLi4uY3VycmVudCwgW2tleV06IHZhbHVlIH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU2F2ZUVkaXRGbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBlZGl0Um93OiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8UGFydGlhbDxUPiB8IG51bGw+PixcbiAgICAgICAgZWRpdGluZzogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPElEIHwgbnVsbD4+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICByb3dJZDogSUQsXG4gICAgICAgICAgICBjb2x1bW5zOiBDODBUYWJsZUNvbERlZltdLFxuICAgICAgICAgICAgZGF0YTogVFtdLFxuICAgICAgICAgICAgdXBkYXRlRW1pdHRlcjogRXZlbnRFbWl0dGVyPHsgaWQ6IElEOyBjaGFuZ2VzOiBQYXJ0aWFsPFQ+OyBkb25lOiAocmVzdWx0OiBib29sZWFuKSA9PiB2b2lkOyB9PlxuICAgICAgICApOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFZGl0Um93ID0gZWRpdFJvdygpO1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50RWRpdFJvdykgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IHRoaXMuZ2V0RWRpdGFibGVDb2x1bW5zKGNvbHVtbnMsIGRhdGEsIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgY29udmVydGVkID0gdGhpcy5jb252ZXJ0Um93VmFsdWVzKGN1cnJlbnRFZGl0Um93LCB2aXNpYmxlQ29sdW1ucywgZGF0YSk7XG5cbiAgICAgICAgICAgIHVwZGF0ZUVtaXR0ZXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgaWQ6IHJvd0lkLFxuICAgICAgICAgICAgICAgIGNoYW5nZXM6IGNvbnZlcnRlZCxcbiAgICAgICAgICAgICAgICBkb25lOiAoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGluZy5zZXQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0Um93LnNldChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUFwcGx5SW5wdXRWYWx1ZXNGbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBjcmVhdGluZzogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPGJvb2xlYW4+PixcbiAgICAgICAgbmV3Um93OiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8UGFydGlhbDxUPiB8IG51bGw+PixcbiAgICAgICAgZWRpdGluZzogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPElEIHwgbnVsbD4+LFxuICAgICAgICBlZGl0Um93OiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8UGFydGlhbDxUPiB8IG51bGw+PlxuICAgICkge1xuICAgICAgICByZXR1cm4gKHBhcnRpYWxWYWx1ZXM6IFBhcnRpYWw8VD4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmICghY3JlYXRpbmcoKSAmJiBlZGl0aW5nKCkgPT09IG51bGwpIHJldHVybjtcblxuICAgICAgICAgICAgaWYgKGNyZWF0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Um93ID0gbmV3Um93KCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Um93LnNldCh7IC4uLmN1cnJlbnRSb3csIC4uLnBhcnRpYWxWYWx1ZXMgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RWRpdFJvdyA9IGVkaXRSb3coKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVkaXRSb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFJvdy5zZXQoeyAuLi5jdXJyZW50RWRpdFJvdywgLi4ucGFydGlhbFZhbHVlcyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
@@ -61,7 +61,7 @@ export class TableDataConverterService {
61
61
  if (trimmed === '')
62
62
  return undefined;
63
63
  const num = Number(trimmed);
64
- return isNaN(num) ? undefined : num;
64
+ return Number.isNaN(num) ? undefined : num;
65
65
  }
66
66
  if (typeof value === 'boolean')
67
67
  return value ? 1 : 0;
@@ -80,7 +80,7 @@ export class TableDataConverterService {
80
80
  if (trimmed === '')
81
81
  return undefined;
82
82
  const num = Number(trimmed);
83
- return isNaN(num) ? undefined : Math.floor(num);
83
+ return Number.isNaN(num) ? undefined : Math.floor(num);
84
84
  }
85
85
  if (typeof value === 'boolean')
86
86
  return value ? 1 : 0;
@@ -119,21 +119,17 @@ export class TableDataConverterService {
119
119
  if (value === null || value === undefined || value === '') {
120
120
  return true;
121
121
  }
122
- // Para números, 0 se considera como valor válido, no vacío
123
- if (typeof value === 'number') {
124
- return false;
125
- }
126
- // Para booleanos, false se considera como valor válido, no vacío
127
- if (typeof value === 'boolean') {
122
+ // Para números y booleanos, siempre son valores válidos
123
+ if (typeof value === 'number' || typeof value === 'boolean') {
128
124
  return false;
129
125
  }
130
126
  // Para arrays vacíos
131
- if (Array.isArray(value) && value.length === 0) {
132
- return true;
127
+ if (Array.isArray(value)) {
128
+ return value.length === 0;
133
129
  }
134
130
  // Para objetos vacíos
135
- if (typeof value === 'object' && value !== null && Object.keys(value).length === 0) {
136
- return true;
131
+ if (typeof value === 'object' && value !== null) {
132
+ return Object.keys(value).length === 0;
137
133
  }
138
134
  return false;
139
135
  }
@@ -146,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
146
142
  providedIn: 'root'
147
143
  }]
148
144
  }] });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1jb252ZXJ0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS1kYXRhLWNvbnZlcnRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLHlCQUF5QjtJQUVsQzs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxLQUFjLEVBQUUsR0FBbUIsRUFBRSxXQUFxQjtRQUN2RSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVTtZQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckMsdURBQXVEO1FBQ3ZELElBQUksV0FBVyxFQUFFLENBQUM7WUFDZCxJQUFJLE9BQU8sV0FBVyxLQUFLLFNBQVM7Z0JBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25FLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUTtnQkFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakUsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRO2dCQUFFLE9B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QUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLEtBQWM7UUFDdkIsd0NBQXdDO1FBQ3hDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN4RCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsMkRBQTJEO1FBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELGlFQUFpRTtRQUNqRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxxQkFBcUI7UUFDckIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pGLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO3dHQTlIUSx5QkFBeUI7NEdBQXpCLHlCQUF5QixjQUZ0QixNQUFNOzs0RkFFVCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQzgwVGFibGVDb2xEZWYgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIGNvbnZlcnNpw7NuIHkgdmFsaWRhY2nDs24gZGUgdGlwb3MgZGUgZGF0b3MgZW4gdGFibGFzIEM4MFxuICpcbiAqIE1hbmVqYSBsYSBjb252ZXJzacOzbiBlbnRyZSBkaWZlcmVudGVzIHRpcG9zIGRlIGRhdG9zIHkgbGEgdmFsaWRhY2nDs24gZGUgdmFsb3JlcyB2YWPDrW9zLlxuICogU29wb3J0YSBsb3MgdGlwb3M6IHN0cmluZywgbnVtYmVyLCBpbnRlZ2VyLCBib29sZWFuLCBwYXNzd29yZCwgZW51bVxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YUNvbnZlcnRlclNlcnZpY2Uge1xuXG4gICAgLyoqXG4gICAgICogQ29udmllcnRlIHVuIHZhbG9yIGRlIGNlbGRhIGJhc8OhbmRvc2UgZW4gZWwgdGlwbyBkZSBjb2x1bW5hIG8gZGF0b3MgZGUgbXVlc3RyYVxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGEgY29udmVydGlyXG4gICAgICogQHBhcmFtIGNvbCAtIERlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcGFyYW0gc2FtcGxlVmFsdWUgLSBWYWxvciBkZSBtdWVzdHJhIHBhcmEgaW5mZXJpciBlbCB0aXBvIChvcGNpb25hbClcbiAgICAgKiBAcmV0dXJucyBWYWxvciBjb252ZXJ0aWRvIGFsIHRpcG8gYXByb3BpYWRvXG4gICAgICovXG4gICAgY29udmVydENlbGxWYWx1ZSh2YWx1ZTogdW5rbm93biwgY29sOiBDODBUYWJsZUNvbERlZiwgc2FtcGxlVmFsdWU/OiB1bmtub3duKTogdW5rbm93biB7XG4gICAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdGhpcy50b0Jvb2xlYW4odmFsdWUpO1xuICAgICAgICBpZiAoY29sLnR5cGUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy50b051bWJlcih2YWx1ZSk7XG4gICAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2ludGVnZXInKSByZXR1cm4gdGhpcy50b0ludGVnZXIodmFsdWUpO1xuICAgICAgICBpZiAoY29sLnR5cGUgPT09ICdzdHJpbmcnIHx8IGNvbC50eXBlID09PSAncGFzc3dvcmQnKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9TdHJpbmdWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgLy8gRmFsbGJhY2s6IHVzYXIgZGF0b3MgZGUgbXVlc3RyYSBzaSBlc3TDoW4gZGlzcG9uaWJsZXNcbiAgICAgICAgaWYgKHNhbXBsZVZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNhbXBsZVZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiB0aGlzLnRvQm9vbGVhbih2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNhbXBsZVZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMudG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzYW1wbGVWYWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB0aGlzLnRvU3RyaW5nVmFsdWUodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZpZXJ0ZSB1biB2YWxvciBhIGJvb2xlYW4gdXNhbmRvIG1lam9yZXMgcHLDoWN0aWNhc1xuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGEgY29udmVydGlyXG4gICAgICogQHJldHVybnMgVmFsb3IgYm9vbGVhbm9cbiAgICAgKi9cbiAgICB0b0Jvb2xlYW4odmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScgfHwgdmFsdWUudHJpbSgpID09PSAnMSc7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdmFsdWUgPT09IDE7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252aWVydGUgdW4gdmFsb3IgYSBudW1iZXIgdXNhbmRvIG1lam9yZXMgcHLDoWN0aWNhc1xuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGEgY29udmVydGlyXG4gICAgICogQHJldHVybnMgTsO6bWVybyBvIHVuZGVmaW5lZCBzaSBubyBlcyB2w6FsaWRvXG4gICAgICovXG4gICAgdG9OdW1iZXIodmFsdWU6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgIGlmICh0cmltbWVkID09PSAnJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcih0cmltbWVkKTtcbiAgICAgICAgICAgIHJldHVybiBpc05hTihudW0pID8gdW5kZWZpbmVkIDogbnVtO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykgcmV0dXJuIHZhbHVlID8gMSA6IDA7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmllcnRlIHVuIHZhbG9yIGEgaW50ZWdlciB1c2FuZG8gbWVqb3JlcyBwcsOhY3RpY2FzXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgYSBjb252ZXJ0aXJcbiAgICAgKiBAcmV0dXJucyBFbnRlcm8gbyB1bmRlZmluZWQgc2kgbm8gZXMgdsOhbGlkb1xuICAgICAqL1xuICAgIHRvSW50ZWdlcih2YWx1ZTogdW5rbm93bik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCB0cmltbWVkID0gdmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgaWYgKHRyaW1tZWQgPT09ICcnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHRyaW1tZWQpO1xuICAgICAgICAgICAgcmV0dXJuIGlzTmFOKG51bSkgPyB1bmRlZmluZWQgOiBNYXRoLmZsb29yKG51bSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdmFsdWUgPyAxIDogMDtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252aWVydGUgdW4gdmFsb3IgYSBzdHJpbmcgdXNhbmRvIG1lam9yZXMgcHLDoWN0aWNhcywgc2llbXByZSBzdHJpbmdpZmljYSBvYmpldG9zXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgYSBjb252ZXJ0aXJcbiAgICAgKiBAcmV0dXJucyBDYWRlbmEgZGUgdGV4dG9cbiAgICAgKi9cbiAgICB0b1N0cmluZ1ZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiAnJztcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpXG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW29iamVjdCBPYmplY3RdJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBQYXJhIGZ1bmNpb25lcywgc8OtbWJvbG9zLCB1bmRlZmluZWQsIGV0Yy4sIGRldm9sdmVyIGNhZGVuYSB2YWPDrWFcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZlcmlmaWNhIHNpIHVuIHZhbG9yIGluZGl2aWR1YWwgZXN0w6EgdmFjw61vL251bG9cbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBWYWxvciBhIHZlcmlmaWNhclxuICAgICAqIEByZXR1cm5zIHRydWUgc2kgZWwgdmFsb3Igc2UgY29uc2lkZXJhIHZhY8Otb1xuICAgICAqL1xuICAgIGlzVmFsdWVFbXB0eSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgICAgICAvLyBDb25zaWRlcmFyIHZhY8OtbzogbnVsbCwgdW5kZWZpbmVkLCAnJ1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGFyYSBuw7ptZXJvcywgMCBzZSBjb25zaWRlcmEgY29tbyB2YWxvciB2w6FsaWRvLCBubyB2YWPDrW9cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBhcmEgYm9vbGVhbm9zLCBmYWxzZSBzZSBjb25zaWRlcmEgY29tbyB2YWxvciB2w6FsaWRvLCBubyB2YWPDrW9cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQYXJhIGFycmF5cyB2YWPDrW9zXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGFyYSBvYmpldG9zIHZhY8Otb3NcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1jb252ZXJ0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc3JjL2xpYi90YWJsZS90YWJsZS1kYXRhLWNvbnZlcnRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLHlCQUF5QjtJQUVsQzs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxLQUFjLEVBQUUsR0FBbUIsRUFBRSxXQUFxQjtRQUN2RSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVTtZQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckMsdURBQXVEO1FBQ3ZELElBQUksV0FBVyxFQUFFLENBQUM7WUFDZCxJQUFJLE9BQU8sV0FBVyxLQUFLLFNBQVM7Z0JBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25FLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUTtnQkFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakUsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRO2dCQUFFLE9B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bUVBQW1FO1FBQ25FLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsS0FBYztRQUN2Qix3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3hELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCx3REFBd0Q7UUFDeEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELHFCQUFxQjtRQUNyQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO3dHQXpIUSx5QkFBeUI7NEdBQXpCLHlCQUF5QixjQUZ0QixNQUFNOzs0RkFFVCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQzgwVGFibGVDb2xEZWYgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIGNvbnZlcnNpw7NuIHkgdmFsaWRhY2nDs24gZGUgdGlwb3MgZGUgZGF0b3MgZW4gdGFibGFzIEM4MFxuICpcbiAqIE1hbmVqYSBsYSBjb252ZXJzacOzbiBlbnRyZSBkaWZlcmVudGVzIHRpcG9zIGRlIGRhdG9zIHkgbGEgdmFsaWRhY2nDs24gZGUgdmFsb3JlcyB2YWPDrW9zLlxuICogU29wb3J0YSBsb3MgdGlwb3M6IHN0cmluZywgbnVtYmVyLCBpbnRlZ2VyLCBib29sZWFuLCBwYXNzd29yZCwgZW51bVxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YUNvbnZlcnRlclNlcnZpY2Uge1xuXG4gICAgLyoqXG4gICAgICogQ29udmllcnRlIHVuIHZhbG9yIGRlIGNlbGRhIGJhc8OhbmRvc2UgZW4gZWwgdGlwbyBkZSBjb2x1bW5hIG8gZGF0b3MgZGUgbXVlc3RyYVxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGEgY29udmVydGlyXG4gICAgICogQHBhcmFtIGNvbCAtIERlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcGFyYW0gc2FtcGxlVmFsdWUgLSBWYWxvciBkZSBtdWVzdHJhIHBhcmEgaW5mZXJpciBlbCB0aXBvIChvcGNpb25hbClcbiAgICAgKiBAcmV0dXJucyBWYWxvciBjb252ZXJ0aWRvIGFsIHRpcG8gYXByb3BpYWRvXG4gICAgICovXG4gICAgY29udmVydENlbGxWYWx1ZSh2YWx1ZTogdW5rbm93biwgY29sOiBDODBUYWJsZUNvbERlZiwgc2FtcGxlVmFsdWU/OiB1bmtub3duKTogdW5rbm93biB7XG4gICAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdGhpcy50b0Jvb2xlYW4odmFsdWUpO1xuICAgICAgICBpZiAoY29sLnR5cGUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy50b051bWJlcih2YWx1ZSk7XG4gICAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2ludGVnZXInKSByZXR1cm4gdGhpcy50b0ludGVnZXIodmFsdWUpO1xuICAgICAgICBpZiAoY29sLnR5cGUgPT09ICdzdHJpbmcnIHx8IGNvbC50eXBlID09PSAncGFzc3dvcmQnKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9TdHJpbmdWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgLy8gRmFsbGJhY2s6IHVzYXIgZGF0b3MgZGUgbXVlc3RyYSBzaSBlc3TDoW4gZGlzcG9uaWJsZXNcbiAgICAgICAgaWYgKHNhbXBsZVZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNhbXBsZVZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiB0aGlzLnRvQm9vbGVhbih2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNhbXBsZVZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMudG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzYW1wbGVWYWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB0aGlzLnRvU3RyaW5nVmFsdWUodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZpZXJ0ZSB1biB2YWxvciBhIGJvb2xlYW4gdXNhbmRvIG1lam9yZXMgcHLDoWN0aWNhc1xuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGEgY29udmVydGlyXG4gICAgICogQHJldHVybnMgVmFsb3IgYm9vbGVhbm9cbiAgICAgKi9cbiAgICB0b0Jvb2xlYW4odmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScgfHwgdmFsdWUudHJpbSgpID09PSAnMSc7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdmFsdWUgPT09IDE7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252aWVydGUgdW4gdmFsb3IgYSBudW1iZXIgdXNhbmRvIG1lam9yZXMgcHLDoWN0aWNhc1xuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGEgY29udmVydGlyXG4gICAgICogQHJldHVybnMgTsO6bWVybyBvIHVuZGVmaW5lZCBzaSBubyBlcyB2w6FsaWRvXG4gICAgICovXG4gICAgdG9OdW1iZXIodmFsdWU6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgIGlmICh0cmltbWVkID09PSAnJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcih0cmltbWVkKTtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNOYU4obnVtKSA/IHVuZGVmaW5lZCA6IG51bTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiB2YWx1ZSA/IDEgOiAwO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZpZXJ0ZSB1biB2YWxvciBhIGludGVnZXIgdXNhbmRvIG1lam9yZXMgcHLDoWN0aWNhc1xuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGEgY29udmVydGlyXG4gICAgICogQHJldHVybnMgRW50ZXJvIG8gdW5kZWZpbmVkIHNpIG5vIGVzIHbDoWxpZG9cbiAgICAgKi9cbiAgICB0b0ludGVnZXIodmFsdWU6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIE1hdGguZmxvb3IodmFsdWUpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgIGlmICh0cmltbWVkID09PSAnJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcih0cmltbWVkKTtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNOYU4obnVtKSA/IHVuZGVmaW5lZCA6IE1hdGguZmxvb3IobnVtKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiB2YWx1ZSA/IDEgOiAwO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZpZXJ0ZSB1biB2YWxvciBhIHN0cmluZyB1c2FuZG8gbWVqb3JlcyBwcsOhY3RpY2FzLCBzaWVtcHJlIHN0cmluZ2lmaWNhIG9iamV0b3NcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBWYWxvciBhIGNvbnZlcnRpclxuICAgICAqIEByZXR1cm5zIENhZGVuYSBkZSB0ZXh0b1xuICAgICAqL1xuICAgIHRvU3RyaW5nVmFsdWUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuICcnO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIHZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJylcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbb2JqZWN0IE9iamVjdF0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFBhcmEgZnVuY2lvbmVzLCBzw61tYm9sb3MsIHVuZGVmaW5lZCwgZXRjLiwgZGV2b2x2ZXIgY2FkZW5hIHZhY8OtYVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmVyaWZpY2Egc2kgdW4gdmFsb3IgaW5kaXZpZHVhbCBlc3TDoSB2YWPDrW8vbnVsb1xuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGEgdmVyaWZpY2FyXG4gICAgICogQHJldHVybnMgdHJ1ZSBzaSBlbCB2YWxvciBzZSBjb25zaWRlcmEgdmFjw61vXG4gICAgICovXG4gICAgaXNWYWx1ZUVtcHR5KHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIENvbnNpZGVyYXIgdmFjw61vOiBudWxsLCB1bmRlZmluZWQsICcnXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQYXJhIG7Dum1lcm9zIHkgYm9vbGVhbm9zLCBzaWVtcHJlIHNvbiB2YWxvcmVzIHbDoWxpZG9zXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQYXJhIGFycmF5cyB2YWPDrW9zXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBhcmEgb2JqZXRvcyB2YWPDrW9zXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=
@@ -94,7 +94,7 @@ export class TableDataUtilsService {
94
94
  if (!col.enum)
95
95
  return [];
96
96
  return Object.entries(col.enum).map(([value, label]) => ({
97
- value: isNaN(Number(value)) ? value : Number(value),
97
+ value: Number.isNaN(Number(value)) ? value : Number(value),
98
98
  label,
99
99
  }));
100
100
  }
@@ -118,7 +118,7 @@ export class TableDataUtilsService {
118
118
  applySorting(items, columns) {
119
119
  const orderedColumns = columns.filter((col) => col.order);
120
120
  if (orderedColumns.length > 0) {
121
- orderedColumns.forEach((col) => {
121
+ for (const col of orderedColumns) {
122
122
  items.sort((a, b) => {
123
123
  const valueA = this.getCellValue(a, col.accessor);
124
124
  const valueB = this.getCellValue(b, col.accessor);
@@ -137,7 +137,7 @@ export class TableDataUtilsService {
137
137
  return 0;
138
138
  }
139
139
  });
140
- });
140
+ }
141
141
  }
142
142
  }
143
143
  /**
@@ -163,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
163
163
  providedIn: 'root'
164
164
  }]
165
165
  }] });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS11dGlscy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLWRhdGEtdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQzs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFOUI7Ozs7O09BS0c7SUFDSCxZQUFZLENBQW9DLEdBQU0sRUFBRSxRQUFnQjtRQUNwRSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFRLEdBQStCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLEdBQVEsRUFBRSxRQUFnQjtRQUNyQyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQy9DLE9BQU8sT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDN0UsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsS0FBYztRQUMxQiw4QkFBOEI7UUFDOUIsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDZCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFDRCxtRkFBbUY7UUFDbkYsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDbEIs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XG5pbXBvcnQgeyBDODBUYWJsZUNvbERlZiB9IGZyb20gJy4vdGFibGUudHlwZXMnO1xuXG4vKipcbiAqIFNlcnZpY2lvIHBhcmEgdXRpbGlkYWRlcyBkZSBtYW5pcHVsYWNpw7NuIGRlIGRhdG9zIGVuIHRhYmxhcyBDODBcbiAqXG4gKiBQcm9wb3JjaW9uYSBtw6l0b2RvcyBwYXJhOlxuICogLSBBY2Nlc28gYSB2YWxvcmVzIGRlIGNlbGRhcyAoaW5jbHV5ZW5kbyBwcm9waWVkYWRlcyBhbmlkYWRhcylcbiAqIC0gRm9ybWF0ZW8gZGUgdmFsb3JlcyBwYXJhIGRpc3BsYXlcbiAqIC0gR2VzdGnDs24gZGUgZW51bXMgeSBjb2xvcmVzXG4gKiAtIE9yZGVuYW1pZW50byBkZSBkYXRvc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YVV0aWxzU2VydmljZSB7XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIHZhbG9yIGRlIHVuYSBjZWxkYSB1c2FuZG8gZWwgYWNjZXNzb3IsIHNvcG9ydGFuZG8gbm90YWNpw7NuIGRlIHB1bnRvIHBhcmEgcHJvcGllZGFkZXMgYW5pZGFkYXNcbiAgICAgKiBAcGFyYW0gcm93IC0gTGEgZmlsYSBkZSBkYXRvc1xuICAgICAqIEBwYXJhbSBhY2Nlc3NvciAtIEVsIGFjY2Vzc29yIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcmV0dXJucyBFbCB2YWxvciBkZSBsYSBjZWxkYVxuICAgICAqL1xuICAgIGdldENlbGxWYWx1ZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHJvdzogVCwgYWNjZXNzb3I6IHN0cmluZyk6IHVua25vd24ge1xuICAgICAgICBpZiAoYWNjZXNzb3IuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBhY2Nlc3Nvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChyb3cgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2FjY2Vzc29yXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIHZhbG9yIGRlIHVuIG9iamV0byB1c2FuZG8gbm90YWNpw7NuIGRlIHB1bnRvIChlajogJ3Rhc2submFtZScpXG4gICAgICogQHBhcmFtIG9iaiAtIE9iamV0byBkZWwgY3VhbCBvYnRlbmVyIGVsIHZhbG9yXG4gICAgICogQHBhcmFtIGFjY2Vzc29yIC0gUnV0YSBkZSBhY2Nlc28gdXNhbmRvIG5vdGFjacOzbiBkZSBwdW50b1xuICAgICAqIEByZXR1cm5zIEVsIHZhbG9yIGFuaWRhZG8gbyB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBnZXROZXN0ZWRWYWx1ZShvYmo6IGFueSwgYWNjZXNzb3I6IHN0cmluZyk6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gYWNjZXNzb3Iuc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQgJiYgdHlwZW9mIGN1cnJlbnQgPT09ICdvYmplY3QnID8gY3VycmVudFtrZXldIDogdW5kZWZpbmVkO1xuICAgICAgICB9LCBvYmopO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldnVlbHZlIGVsIHZhbG9yIGRlIGRpc3BsYXkgcGFyYSB1bmEgY2VsZGEsIG1vc3RyYW5kbyAnLScgcGFyYSB2YWxvcmVzIGZhbHN5IGV4Y2VwdG8gMCwgZmFsc2UgeSBvYmpldG9zL2FycmF5cyB2YWPDrW9zXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgYSBmb3JtYXRlYXJcbiAgICAgKiBAcmV0dXJucyBDYWRlbmEgZm9ybWF0ZWFkYSBwYXJhIGRpc3BsYXlcbiAgICAgKi9cbiAgICBnZXREaXNwbGF5VmFsdWUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICAgICAgICAvLyBTaSBlbCB2YWxvciBlcyAwLCBtb3N0cmFybG9cbiAgICAgICAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gJzAnO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNpIGVsIHZhbG9yIGVzIGZhbHNlLCBkZWJlIHNlciBtYW5lamFkbyBwb3IgbMOzZ2ljYSBib29sZWFuYSBlbiB0ZW1wbGF0ZSwgbm8gYXF1w61cbiAgICAgICAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuICdmYWxzZSc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTWFuZWphciBvYmpldG9zIHkgYXJyYXlzIChpbmNsdXllbmRvIGxvcyB2YWPDrW9zKVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbb2JqZWN0IE9iamVjdF0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFNpIGVsIHZhbG9yIHNvbiBvdHJvcyBmYWxzeSB2YWx1ZXMgKG51bGwsIHVuZGVmaW5lZCwgJycpLCBtb3N0cmFyICctJ1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gJy0nO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1hbmVqYXIgb3Ryb3MgdGlwb3MgZXhwbMOtY2l0YW1lbnRlXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUGFyYSBjdWFscXVpZXIgb3RybyB0aXBvIChmdW5jacOzbiwgc8OtbWJvbG8sIGV0Yy4pLCBkZXZvbHZlciB1biBmYWxsYmFjayBzZWd1cm9cbiAgICAgICAgcmV0dXJuICctJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIHRleHRvIGRlIGRpc3BsYXkgcGFyYSB1biB2YWxvciBlbnVtXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgZGVsIGVudW1cbiAgICAgKiBAcGFyYW0gY29sIC0gRGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEByZXR1cm5zIFRleHRvIGZvcm1hdGVhZG8gZGVsIGVudW1cbiAgICAgKi9cbiAgICBnZXRFbnVtRGlzcGxheVZhbHVlKHZhbHVlOiB1bmtub3duLCBjb2w6IEM4MFRhYmxlQ29sRGVmKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFjb2wuZW51bSB8fCAodmFsdWUgIT09IDAgJiYgIXZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuICctJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWUgPSBjb2wuZW51bVt2YWx1ZSBhcyBzdHJpbmcgfCBudW1iZXJdO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZGlzcGxheVZhbHVlIHx8XG4gICAgICAgICAgICAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgICAgPyBTdHJpbmcodmFsdWUpXG4gICAgICAgICAgICAgICAgOiAnLScpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBsYXMgb3BjaW9uZXMgZGVsIGVudW0gY29tbyBhcnJheSBwYXJhIGRyb3Bkb3ducyBzZWxlY3RcbiAgICAgKiBAcGFyYW0gY29sIC0gRGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEByZXR1cm5zIEFycmF5IGRlIG9wY2lvbmVzIGNvbiB2YWx1ZSB5IGxhYmVsXG4gICAgICovXG4gICAgZ2V0RW51bU9wdGlvbnMoY29sOiBDODBUYWJsZUNvbERlZik6IHsgdmFsdWU6IHN0cmluZyB8IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10ge1xuICAgICAgICBpZiAoIWNvbC5lbnVtKSByZXR1cm4gW107XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhjb2wuZW51bSkubWFwKChbdmFsdWUsIGxhYmVsXSkgPT4gKHtcbiAgICAgICAgICAgIHZhbHVlOiBpc05hTihOdW1iZXIodmFsdWUpKSA/IHZhbHVlIDogTnVtYmVyKHZhbHVlKSxcbiAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCBjb2xvciBDU1MgcGFyYSB1biB2YWxvciBkZSBjZWxkYSBiYXNhZG8gZW4gbGEgY29uZmlndXJhY2nDs24gZGUgY29sb3IgZGUgbGEgY29sdW1uYVxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGRlIGxhIGNlbGRhXG4gICAgICogQHBhcmFtIGNvbCAtIERlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcmV0dXJucyBDb2xvciBDU1MgbyB1bmRlZmluZWQgc2kgbm8gaGF5IGNvbmZpZ3VyYWNpw7NuXG4gICAgICovXG4gICAgZ2V0Q2VsbENvbG9yKHZhbHVlOiB1bmtub3duLCBjb2w6IEM4MFRhYmxlQ29sRGVmKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFjb2wuY29sb3IgfHwgKHZhbHVlICE9PSAwICYmICF2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbC5jb2xvclt2YWx1ZSBhcyBzdHJpbmcgfCBudW1iZXJdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwbGljYSBvcmRlbmFtaWVudG8gYSBsb3MgaXRlbXMgYmFzw6FuZG9zZSBlbiBsYXMgY29sdW1uYXMgY29uIGNvbmZpZ3VyYWNpw7NuIGRlIG9yZGVuXG4gICAgICogQHBhcmFtIGl0ZW1zIC0gQXJyYXkgZGUgaXRlbXMgYSBvcmRlbmFyIChzZSBtb2RpZmljYSBpbi1wbGFjZSlcbiAgICAgKiBAcGFyYW0gY29sdW1ucyAtIERlZmluaWNpb25lcyBkZSBjb2x1bW5hc1xuICAgICAqL1xuICAgIGFwcGx5U29ydGluZzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KGl0ZW1zOiBUW10sIGNvbHVtbnM6IEM4MFRhYmxlQ29sRGVmW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3JkZXJlZENvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigoY29sKSA9PiBjb2wub3JkZXIpO1xuICAgICAgICBpZiAob3JkZXJlZENvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgb3JkZXJlZENvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUEgPSB0aGlzLmdldENlbGxWYWx1ZShhLCBjb2wuYWNjZXNzb3IpIGFzIHN0cmluZyB8IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVCID0gdGhpcy5nZXRDZWxsVmFsdWUoYiwgY29sLmFjY2Vzc29yKSBhcyBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbC5vcmRlciA9PT0gJ0FTQycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZUEgPiB2YWx1ZUIpIHJldHVybiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlQSA8IHZhbHVlQikgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVBIDwgdmFsdWVCKSByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZUEgPiB2YWx1ZUIpIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGEgZWwgbWF4LWhlaWdodCBkZSBsYSB0YWJsYSBiYXNhZG8gZW4gZWwgdGFtYcOxb1xuICAgICAqIEBwYXJhbSBzaXplIC0gVGFtYcOxbyBjb25maWd1cmFkbyAoMCA9IHNpbiBsw61taXRlKVxuICAgICAqIEByZXR1cm5zIFN0cmluZyBDU1MgcGFyYSBtYXgtaGVpZ2h0IG8gdW5kZWZpbmVkIHNpIHNpbiBsw61taXRlXG4gICAgICovXG4gICAgZ2V0VGFibGVNYXhIZWlnaHQoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHNpemUgPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gU2luIGzDrW1pdGUgZGUgYWx0dXJhXG4gICAgICAgIH1cbiAgICAgICAgLy8gQWx0dXJhIGJhc2UgZGUgNDAwcHggKiBzaXplXG4gICAgICAgIGNvbnN0IGJhc2VIZWlnaHQgPSA0MDA7XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IE1hdGgucm91bmQoYmFzZUhlaWdodCAqIHNpemUpO1xuICAgICAgICByZXR1cm4gYCR7bWF4SGVpZ2h0fXB4YDtcbiAgICB9XG59XG4iXX0=
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS11dGlscy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zcmMvbGliL3RhYmxlL3RhYmxlLWRhdGEtdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQzs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFOUI7Ozs7O09BS0c7SUFDSCxZQUFZLENBQW9DLEdBQU0sRUFBRSxRQUFnQjtRQUNwRSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFRLEdBQStCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLEdBQTRCLEVBQUUsUUFBZ0I7UUFDekQsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMvQyxPQUFPLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFFLE9BQW1DLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMxRyxDQUFDLEVBQUUsR0FBYyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsS0FBYztRQUMxQiw4QkFBOEI7UUFDOUIsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDZCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFDRCxtRkFBbUY7UUFDbkYsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFD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aW1wb3J0IHsgQzgwVGFibGVDb2xEZWYgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIHV0aWxpZGFkZXMgZGUgbWFuaXB1bGFjacOzbiBkZSBkYXRvcyBlbiB0YWJsYXMgQzgwXG4gKlxuICogUHJvcG9yY2lvbmEgbcOpdG9kb3MgcGFyYTpcbiAqIC0gQWNjZXNvIGEgdmFsb3JlcyBkZSBjZWxkYXMgKGluY2x1eWVuZG8gcHJvcGllZGFkZXMgYW5pZGFkYXMpXG4gKiAtIEZvcm1hdGVvIGRlIHZhbG9yZXMgcGFyYSBkaXNwbGF5XG4gKiAtIEdlc3Rpw7NuIGRlIGVudW1zIHkgY29sb3Jlc1xuICogLSBPcmRlbmFtaWVudG8gZGUgZGF0b3NcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFVdGlsc1NlcnZpY2Uge1xuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCB2YWxvciBkZSB1bmEgY2VsZGEgdXNhbmRvIGVsIGFjY2Vzc29yLCBzb3BvcnRhbmRvIG5vdGFjacOzbiBkZSBwdW50byBwYXJhIHByb3BpZWRhZGVzIGFuaWRhZGFzXG4gICAgICogQHBhcmFtIHJvdyAtIExhIGZpbGEgZGUgZGF0b3NcbiAgICAgKiBAcGFyYW0gYWNjZXNzb3IgLSBFbCBhY2Nlc3NvciBkZSBsYSBjb2x1bW5hXG4gICAgICogQHJldHVybnMgRWwgdmFsb3IgZGUgbGEgY2VsZGFcbiAgICAgKi9cbiAgICBnZXRDZWxsVmFsdWU8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pihyb3c6IFQsIGFjY2Vzc29yOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICAgICAgaWYgKGFjY2Vzc29yLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgYWNjZXNzb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAocm93IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVthY2Nlc3Nvcl07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCB2YWxvciBkZSB1biBvYmpldG8gdXNhbmRvIG5vdGFjacOzbiBkZSBwdW50byAoZWo6ICd0YXNrLm5hbWUnKVxuICAgICAqIEBwYXJhbSBvYmogLSBPYmpldG8gZGVsIGN1YWwgb2J0ZW5lciBlbCB2YWxvclxuICAgICAqIEBwYXJhbSBhY2Nlc3NvciAtIFJ1dGEgZGUgYWNjZXNvIHVzYW5kbyBub3RhY2nDs24gZGUgcHVudG9cbiAgICAgKiBAcmV0dXJucyBFbCB2YWxvciBhbmlkYWRvIG8gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZ2V0TmVzdGVkVmFsdWUob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgYWNjZXNzb3I6IHN0cmluZyk6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gYWNjZXNzb3Iuc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQgJiYgdHlwZW9mIGN1cnJlbnQgPT09ICdvYmplY3QnID8gKGN1cnJlbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sIG9iaiBhcyB1bmtub3duKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBlbCB2YWxvciBkZSBkaXNwbGF5IHBhcmEgdW5hIGNlbGRhLCBtb3N0cmFuZG8gJy0nIHBhcmEgdmFsb3JlcyBmYWxzeSBleGNlcHRvIDAsIGZhbHNlIHkgb2JqZXRvcy9hcnJheXMgdmFjw61vc1xuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGEgZm9ybWF0ZWFyXG4gICAgICogQHJldHVybnMgQ2FkZW5hIGZvcm1hdGVhZGEgcGFyYSBkaXNwbGF5XG4gICAgICovXG4gICAgZ2V0RGlzcGxheVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICAgICAgLy8gU2kgZWwgdmFsb3IgZXMgMCwgbW9zdHJhcmxvXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICcwJztcbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBlbCB2YWxvciBlcyBmYWxzZSwgZGViZSBzZXIgbWFuZWphZG8gcG9yIGzDs2dpY2EgYm9vbGVhbmEgZW4gdGVtcGxhdGUsIG5vIGFxdcOtXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiAnZmFsc2UnO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1hbmVqYXIgb2JqZXRvcyB5IGFycmF5cyAoaW5jbHV5ZW5kbyBsb3MgdmFjw61vcylcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW29iamVjdCBPYmplY3RdJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBlbCB2YWxvciBzb24gb3Ryb3MgZmFsc3kgdmFsdWVzIChudWxsLCB1bmRlZmluZWQsICcnKSwgbW9zdHJhciAnLSdcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuICctJztcbiAgICAgICAgfVxuICAgICAgICAvLyBNYW5lamFyIG90cm9zIHRpcG9zIGV4cGzDrWNpdGFtZW50ZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFBhcmEgY3VhbHF1aWVyIG90cm8gdGlwbyAoZnVuY2nDs24sIHPDrW1ib2xvLCBldGMuKSwgZGV2b2x2ZXIgdW4gZmFsbGJhY2sgc2VndXJvXG4gICAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCB0ZXh0byBkZSBkaXNwbGF5IHBhcmEgdW4gdmFsb3IgZW51bVxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGRlbCBlbnVtXG4gICAgICogQHBhcmFtIGNvbCAtIERlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcmV0dXJucyBUZXh0byBmb3JtYXRlYWRvIGRlbCBlbnVtXG4gICAgICovXG4gICAgZ2V0RW51bURpc3BsYXlWYWx1ZSh2YWx1ZTogdW5rbm93biwgY29sOiBDODBUYWJsZUNvbERlZik6IHN0cmluZyB7XG4gICAgICAgIGlmICghY29sLmVudW0gfHwgKHZhbHVlICE9PSAwICYmICF2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnLSc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlID0gY29sLmVudW1bdmFsdWUgYXMgc3RyaW5nIHwgbnVtYmVyXTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGRpc3BsYXlWYWx1ZSB8fFxuICAgICAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgID8gU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgICAgIDogJy0nKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idGllbmUgbGFzIG9wY2lvbmVzIGRlbCBlbnVtIGNvbW8gYXJyYXkgcGFyYSBkcm9wZG93bnMgc2VsZWN0XG4gICAgICogQHBhcmFtIGNvbCAtIERlZmluaWNpw7NuIGRlIGxhIGNvbHVtbmFcbiAgICAgKiBAcmV0dXJucyBBcnJheSBkZSBvcGNpb25lcyBjb24gdmFsdWUgeSBsYWJlbFxuICAgICAqL1xuICAgIGdldEVudW1PcHRpb25zKGNvbDogQzgwVGFibGVDb2xEZWYpOiB7IHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfVtdIHtcbiAgICAgICAgaWYgKCFjb2wuZW51bSkgcmV0dXJuIFtdO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY29sLmVudW0pLm1hcCgoW3ZhbHVlLCBsYWJlbF0pID0+ICh7XG4gICAgICAgICAgICB2YWx1ZTogTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpID8gdmFsdWUgOiBOdW1iZXIodmFsdWUpLFxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIGNvbG9yIENTUyBwYXJhIHVuIHZhbG9yIGRlIGNlbGRhIGJhc2FkbyBlbiBsYSBjb25maWd1cmFjacOzbiBkZSBjb2xvciBkZSBsYSBjb2x1bW5hXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVmFsb3IgZGUgbGEgY2VsZGFcbiAgICAgKiBAcGFyYW0gY29sIC0gRGVmaW5pY2nDs24gZGUgbGEgY29sdW1uYVxuICAgICAqIEByZXR1cm5zIENvbG9yIENTUyBvIHVuZGVmaW5lZCBzaSBubyBoYXkgY29uZmlndXJhY2nDs25cbiAgICAgKi9cbiAgICBnZXRDZWxsQ29sb3IodmFsdWU6IHVua25vd24sIGNvbDogQzgwVGFibGVDb2xEZWYpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWNvbC5jb2xvciB8fCAodmFsdWUgIT09IDAgJiYgIXZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sLmNvbG9yW3ZhbHVlIGFzIHN0cmluZyB8IG51bWJlcl07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBsaWNhIG9yZGVuYW1pZW50byBhIGxvcyBpdGVtcyBiYXPDoW5kb3NlIGVuIGxhcyBjb2x1bW5hcyBjb24gY29uZmlndXJhY2nDs24gZGUgb3JkZW5cbiAgICAgKiBAcGFyYW0gaXRlbXMgLSBBcnJheSBkZSBpdGVtcyBhIG9yZGVuYXIgKHNlIG1vZGlmaWNhIGluLXBsYWNlKVxuICAgICAqIEBwYXJhbSBjb2x1bW5zIC0gRGVmaW5pY2lvbmVzIGRlIGNvbHVtbmFzXG4gICAgICovXG4gICAgYXBwbHlTb3J0aW5nPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oaXRlbXM6IFRbXSwgY29sdW1uczogQzgwVGFibGVDb2xEZWZbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcmRlcmVkQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2wpID0+IGNvbC5vcmRlcik7XG4gICAgICAgIGlmIChvcmRlcmVkQ29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBvcmRlcmVkQ29sdW1ucykge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVBID0gdGhpcy5nZXRDZWxsVmFsdWUoYSwgY29sLmFjY2Vzc29yKSBhcyBzdHJpbmcgfCBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlQiA9IHRoaXMuZ2V0Q2VsbFZhbHVlKGIsIGNvbC5hY2Nlc3NvcikgYXMgc3RyaW5nIHwgbnVtYmVyO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2wub3JkZXIgPT09ICdBU0MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVBID4gdmFsdWVCKSByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZUEgPCB2YWx1ZUIpIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlQSA8IHZhbHVlQikgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVBID4gdmFsdWVCKSByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYSBlbCBtYXgtaGVpZ2h0IGRlIGxhIHRhYmxhIGJhc2FkbyBlbiBlbCB0YW1hw7FvXG4gICAgICogQHBhcmFtIHNpemUgLSBUYW1hw7FvIGNvbmZpZ3VyYWRvICgwID0gc2luIGzDrW1pdGUpXG4gICAgICogQHJldHVybnMgU3RyaW5nIENTUyBwYXJhIG1heC1oZWlnaHQgbyB1bmRlZmluZWQgc2kgc2luIGzDrW1pdGVcbiAgICAgKi9cbiAgICBnZXRUYWJsZU1heEhlaWdodChzaXplOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoc2l6ZSA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBTaW4gbMOtbWl0ZSBkZSBhbHR1cmFcbiAgICAgICAgfVxuICAgICAgICAvLyBBbHR1cmEgYmFzZSBkZSA0MDBweCAqIHNpemVcbiAgICAgICAgY29uc3QgYmFzZUhlaWdodCA9IDQwMDtcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5yb3VuZChiYXNlSGVpZ2h0ICogc2l6ZSk7XG4gICAgICAgIHJldHVybiBgJHttYXhIZWlnaHR9cHhgO1xuICAgIH1cbn1cbiJdfQ==