@libs-ui/components-tabs 0.2.43 → 0.2.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJzL3NyYy9pbnRlcmZhY2VzL3RhYi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRZUEVfQkFER0VfTU9ERSB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWJhZGdlXCI7XG5pbXBvcnQgeyBJQnV0dG9uIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cIjtcbmltcG9ydCB7IElQb3BvdmVyT3ZlcmxheSB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJVGFicyB7XG4gIGhhc0ltYWdlPzogYm9vbGVhbjtcbiAgaGFzQ291bnQ/OiBib29sZWFuO1xuICBoYXNTdGVwPzogYm9vbGVhbjtcblxuICBzdGVwQ29tcGxldGVkPzogbnVtYmVyO1xuICBoYXNCYWNrR3JvdW5kVGFiPzogYm9vbGVhbjtcbiAgaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcD86IGJvb2xlYW47XG4gIGlnbm9yZVNob3dMaW5lQm90dG9tSW5UYWI/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVIZWFkZXI/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUhlYWRlckNlbnRlcj86IHN0cmluZztcbiAgY2xhc3NJbmNsdWRlSGVhZGVyUmlnaHQ/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUl0ZW0/OiBzdHJpbmc7XG4gIG1heFdpZHRoVGV4dExhYmVsSXRlbT86IG51bWJlcjtcblxuICAvLyBkcm9wZG93blJpZ2h0Q29uZmlnPzoge1xuICAvLyAgIGxpc3RWaWV3Q29uZmlnPzogSUxpc3RWaWV3Q29uZmlnSXRlbTtcbiAgLy8gICBsaXN0Vmlld0JhY2tncm91bmRMaXN0Q3VzdG9tPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvLyAgIGxpc3RWaWV3TWF4SXRlbVNob3c/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8vICAgY2xhc3NJbmNsdWRlUG9wdXA/OiBzdHJpbmc7XG4gIC8vICAgcGFkZGluZ0xlZnRJdGVtPzogYm9vbGVhbjtcbiAgLy8gICBjbGlja0V4YWN0bHk/OiBib29sZWFuO1xuICAvLyAgIGdldERhdGE/OiBUWVBFX0ZVTkNUSU9OO1xuICAvLyAgIGdldFZpZXc/OiBUWVBFX0ZVTkNUSU9OO1xuICAvLyAgIGhpZGRlblNob3dEcm9wZG93bj86IGJvb2xlYW47XG4gIC8vIH07XG5cbiAgLy8gaWdub3JlRWRpdERlbGV0ZVRhYkl0ZW0/OiBib29sZWFuO1xuICAvLyBpZ25vcmVCdXR0b25BZGROZXdUYWJJdGVtPzogYm9vbGVhbjtcbiAgLy8gY29uZmlnTGFiZWxOb3RpZmljYXRpb24/OiBJTGFiZWxOb3RpZmljYXRpb25Db25maWc7XG4gIC8vIHNldEtleVNlbGVjdGVkQnlEZWZhdWx0S2V5T3JMYXN0Vmlldz86IGJvb2xlYW47XG5cbiAgdmlld01vcmVJZ25vcmVNYXJnaW5MZWZ0PzogYm9vbGVhbjtcblxuICBpdGVtczogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SVRhYkl0ZW0+Pj47XG59XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUxhYmVsTm90aWZpY2F0aW9uQ29uZmlnIHtcbi8vICAgbGFiZWxWaWV3QWxsVGFiSXRlbTogc3RyaW5nO1xuLy8gICBsYWJlbFJlbW92ZURlZmF1bHQ6IHN0cmluZztcbi8vICAgZGVzY3JpcHRpb25SZW1vdmVEZWZhdWx0OiBzdHJpbmc7XG4vLyAgIGxhYmVsVW5waW46IHN0cmluZztcbi8vICAgZGVzY3JpcHRpb25VbnBpbjogc3RyaW5nO1xuLy8gICBsYWJlbFJlbW92ZTogc3RyaW5nO1xuLy8gICBkZXNjcmlwdGlvblJlbW92ZT86IHN0cmluZztcbi8vICAgbGFiZWxEZWZhdWx0RHJvcGRvd25TZWxlY3RPdGhlckl0ZW06IHN0cmluZztcbi8vICAgcGxhY2Vob2xkZXJTZWFyY2hJbnB1dDogc3RyaW5nO1xuLy8gICBlbXB0eU1lc3NhZ2VJbnZhbGlkOiBzdHJpbmc7XG4vLyAgIGxhYmVsQWRkTmV3VGFiSXRlbT86IHN0cmluZztcbi8vIH1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFiSXRlbSB7XG4gIGtleT86IHN0cmluZztcbiAgY2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICBkaXNhYmxlPzogYm9vbGVhbjtcblxuICBjcmVhdGVkX2J5X3N5c3RlbT86IGJvb2xlYW47XG4gIGNyZWF0ZWRfYnk/OiBzdHJpbmcsXG4gIGlzX2RlZmF1bHQ/OiBib29sZWFuO1xuICBpc19waW4/OiBib29sZWFuO1xuICBvcmRlcj86IG51bWJlcjtcblxuICBsaW5rSW1hZ2U/OiBzdHJpbmc7XG4gIGxpbmtJbWFnZUVycm9yPzogc3RyaW5nO1xuICBjbGFzc0ltYWdlSW5jbHVkZT86IHN0cmluZztcbiAgcG9wb3ZlckltYWdlPzogSVBvcG92ZXJPdmVybGF5O1xuXG4gIGljb25MZWZ0Pzogc3RyaW5nO1xuICBwb3BvdmVySWNvbkxlZnQ/OiBJUG9wb3Zlck92ZXJsYXk7XG5cbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGNsYXNzTGFiZWw/OiBzdHJpbmc7XG5cbiAgcG9wb3Zlcj86IElQb3BvdmVyT3ZlcmxheTtcblxuICBpY29uUmlnaHQ/OiBzdHJpbmc7XG4gIHBvcG92ZXJJY29uUmlnaHQ/OiBJUG9wb3Zlck92ZXJsYXk7XG5cbiAgY291bnQ/OiBudW1iZXI7XG4gIG1vZGVDb3VudD86IFRZUEVfQkFER0VfTU9ERTtcbiAgbWF4Q291bnQ/OiBudW1iZXI7XG4gIGNsYXNzQ2lyY2xlPzogc3RyaW5nO1xuXG4gIHNwZWNpZmljV2lkdGg/OiBudW1iZXI7XG4gIHNwZWNpZmljRGlzcGxheT86IGJvb2xlYW47XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgW3BhcmFtOiBzdHJpbmddOiBhbnk7XG5cbiAgY2xhc3NTdGVwPzogc3RyaW5nO1xuICBjb25maWdCdXR0b25SaWdodD86IElCdXR0b247XG4gIGNvbmZpZ0J1dHRvbkxlZnQ/OiBJQnV0dG9uO1xuXG4gIGhhc1JlZERvdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYkNzc0NvbmZpZyB7XG4gIGZpcnN0OiBzdHJpbmc7XG4gIG90aGVyOiBzdHJpbmc7XG4gIGhlYWRlcj86IHN0cmluZztcbiAgaGVhZGVyQ2VudGVyPzogc3RyaW5nO1xufVxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIElIdHRwUmVxdWVzdFRhYkNvbmZpZyB7XG4vLyAgIGh0dHBSZXF1ZXN0R2V0UGluVGFiSXRlbXM6IElIdHRwUmVxdWVzdENvbmZpZzsgLy8gbOG6pXkgdOG6pXQgY+G6oyB0YWIgxJHGsOG7o2MgZ2hpbVxuLy8gICBodHRwUmVxdWVzdEdldEFsbFRhYkl0ZW1zOiBJSHR0cFJlcXVlc3RDb25maWc7XG4vLyAgIGh0dHBSZXF1ZXN0Q3JlYXRlVGFiSXRlbTogSUh0dHBSZXF1ZXN0Q29uZmlnO1xuLy8gICBodHRwUmVxdWVzdFVwZGF0ZVRhYkl0ZW06IElIdHRwUmVxdWVzdENvbmZpZztcbi8vICAgaHR0cFJlcXVlc3RSZW1vdmVUYWJJdGVtOiBJSHR0cFJlcXVlc3RDb25maWc7XG4vLyB9XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUNoZWNrQmVmb3JlQ2hhbmdlVGFiU2VsZWN0ZWRSZXNwb25zZSB7XG4vLyAgIHN0YXRlOiBib29sZWFuO1xuLy8gICBjdXJyZW50VGFiQ3JlYXRlZEJ5U3lzdGVtOiBib29sZWFuO1xuLy8gICBzYXZlQ2hhbmdlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuLy8gICBhY2NlcHRDaGFuZ2VUYWJXaGVuU2F2ZT86IFByb21pc2U8Ym9vbGVhbj47XG4vLyAgIGlnbm9yZVNob3dEaWFsb2c/OiBib29sZWFuO1xuLy8gfVxuXG4vLyBleHBvcnQgdHlwZSBUWVBFX01PRFVMRSA9ICdzYWxlJyB8ICd0aWNrZXQnIHwgJ2NvbXBhbnknIHwgJ3Byb2R1Y3QtYmFuaycgfCAndGFzaycgfCAncHJvZmlsZSc7XG5leHBvcnQgdHlwZSBUWVBFX1RBQl9NT0RFID0gJ2xlZnQnIHwgJ2NlbnRlcicgfCAnc3BhY2UtYmV0d2VlbicgfCAnY2VudGVyLWhhcy1saW5lJztcblxuZXhwb3J0IGludGVyZmFjZSBJVGFiRnVuY3Rpb25Db250cm9sRXZlbnQge1xuICBhZGRUYWJJdGVtOiAoaXRlbTogV3JpdGFibGVTaWduYWw8SVRhYkl0ZW0+LCBzZWxlY3RlZD86IGJvb2xlYW4sIGFkZEZpcnN0PzogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgY2FsY3VsYXRvclRhYkl0ZW1zRGlzcGxheTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2VsZWN0ZWRUYWJJdGVtOiAoa2V5OiBzdHJpbmcsIHJlc2V0RGlzYWJsZT86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYkl0ZW1FdmVudCB7XG4gIGtleTogc3RyaW5nO1xuICBpdGVtOiBJVGFiSXRlbTtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJzL3NyYy9pbnRlcmZhY2VzL3RhYi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRZUEVfQkFER0VfTU9ERSB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWJhZGdlXCI7XG5pbXBvcnQgeyBJQnV0dG9uIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cIjtcbmltcG9ydCB7IElMaXN0Vmlld0NvbmZpZ0l0ZW0gfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1saXN0XCI7XG5pbXBvcnQgeyBJUG9wb3Zlck92ZXJsYXkgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJVGFicyB7XG4gIGhhc0ltYWdlPzogYm9vbGVhbjtcbiAgaGFzQ291bnQ/OiBib29sZWFuO1xuICBoYXNTdGVwPzogYm9vbGVhbjtcblxuICBzdGVwQ29tcGxldGVkPzogbnVtYmVyO1xuICBoYXNCYWNrR3JvdW5kVGFiPzogYm9vbGVhbjtcbiAgaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcD86IGJvb2xlYW47XG4gIGlnbm9yZVNob3dMaW5lQm90dG9tSW5UYWI/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVIZWFkZXI/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUhlYWRlckNlbnRlcj86IHN0cmluZztcbiAgY2xhc3NJbmNsdWRlSGVhZGVyUmlnaHQ/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUl0ZW0/OiBzdHJpbmc7XG4gIG1heFdpZHRoVGV4dExhYmVsSXRlbT86IG51bWJlcjtcblxuICBhY3Rpb25SaWdodENvbmZpZz86IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBsaXN0Vmlld0NvbmZpZzogV3JpdGFibGVTaWduYWw8SUxpc3RWaWV3Q29uZmlnSXRlbT47XG4gICAgY29uZmlnPzogV3JpdGFibGVTaWduYWw8SVBvcG92ZXJPdmVybGF5PjtcbiAgICBvbmx5U2hvd1doZW5Ib3Zlckl0ZW1BY3RpdmU/OiBib29sZWFuO1xuICAgIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgICBjdXN0b21WaWV3PzogKCkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICB9PjtcbiAgdmlld01vcmVJZ25vcmVNYXJnaW5MZWZ0PzogYm9vbGVhbjtcblxuICBpdGVtczogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SVRhYkl0ZW0+Pj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYkl0ZW0ge1xuICBrZXk/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgZGlzYWJsZT86IGJvb2xlYW47XG5cbiAgY3JlYXRlZF9ieV9zeXN0ZW0/OiBib29sZWFuO1xuICBjcmVhdGVkX2J5Pzogc3RyaW5nLFxuICBpc19kZWZhdWx0PzogYm9vbGVhbjtcbiAgaXNfcGluPzogYm9vbGVhbjtcbiAgb3JkZXI/OiBudW1iZXI7XG5cbiAgbGlua0ltYWdlPzogc3RyaW5nO1xuICBsaW5rSW1hZ2VFcnJvcj86IHN0cmluZztcbiAgY2xhc3NJbWFnZUluY2x1ZGU/OiBzdHJpbmc7XG4gIHBvcG92ZXJJbWFnZT86IElQb3BvdmVyT3ZlcmxheTtcblxuICBpY29uTGVmdD86IHN0cmluZztcbiAgcG9wb3Zlckljb25MZWZ0PzogSVBvcG92ZXJPdmVybGF5O1xuXG4gIGxhYmVsPzogc3RyaW5nO1xuICBjbGFzc0xhYmVsPzogc3RyaW5nO1xuXG4gIHBvcG92ZXI/OiBJUG9wb3Zlck92ZXJsYXk7XG5cbiAgaWNvblJpZ2h0Pzogc3RyaW5nO1xuICBwb3BvdmVySWNvblJpZ2h0PzogSVBvcG92ZXJPdmVybGF5O1xuXG4gIGNvdW50PzogbnVtYmVyO1xuICBtb2RlQ291bnQ/OiBUWVBFX0JBREdFX01PREU7XG4gIG1heENvdW50PzogbnVtYmVyO1xuICBjbGFzc0NpcmNsZT86IHN0cmluZztcblxuICBzcGVjaWZpY1dpZHRoPzogbnVtYmVyO1xuICBzcGVjaWZpY0Rpc3BsYXk/OiBib29sZWFuO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIFtwYXJhbTogc3RyaW5nXTogYW55O1xuXG4gIGNsYXNzU3RlcD86IHN0cmluZztcbiAgY29uZmlnQnV0dG9uUmlnaHQ/OiBJQnV0dG9uO1xuICBjb25maWdCdXR0b25MZWZ0PzogSUJ1dHRvbjtcblxuICBoYXNSZWREb3Q/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJDc3NDb25maWcge1xuICBmaXJzdDogc3RyaW5nO1xuICBvdGhlcjogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIGhlYWRlckNlbnRlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVFlQRV9UQUJfTU9ERSA9ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3NwYWNlLWJldHdlZW4nIHwgJ2NlbnRlci1oYXMtbGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYkZ1bmN0aW9uQ29udHJvbEV2ZW50IHtcbiAgYWRkVGFiSXRlbTogKGl0ZW06IFdyaXRhYmxlU2lnbmFsPElUYWJJdGVtPiwgc2VsZWN0ZWQ/OiBib29sZWFuLCBhZGRGaXJzdD86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gIGNhbGN1bGF0b3JUYWJJdGVtc0Rpc3BsYXk6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHNlbGVjdGVkVGFiSXRlbTogKGtleTogc3RyaW5nLCByZXNldERpc2FibGU/OiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJJdGVtRXZlbnQge1xuICBrZXk6IHN0cmluZztcbiAgaXRlbTogSVRhYkl0ZW07XG59XG4iXX0=
@@ -5,13 +5,16 @@ import { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';
5
5
  import { escapeHtml, uuid } from '@libs-ui/utils';
6
6
  import { TranslateService } from '@ngx-translate/core';
7
7
  import { debounceTime, Subject } from 'rxjs';
8
+ import { LibsUiComponentsListComponent } from '@libs-ui/components-list';
9
+ import { LibsUiPipesCallFunctionInTemplatePipe } from '@libs-ui/pipes-call-function-in-template';
8
10
  import * as i0 from "@angular/core";
9
11
  export class LibsUiComponentsTabsItemComponent {
10
12
  labelComputed = computed(() => escapeHtml(this.translateService.instant(this.item()[this.fieldLabel()])));
13
+ actionShowing = signal(false);
11
14
  mutationObserver = signal(undefined);
12
15
  mutationObserverSubject = new Subject();
13
16
  onDestroy = new Subject();
14
- // private dropdownFunctionControl: IDropdownFunctionControlEvent | undefined;
17
+ popoverFunctionControlEvent = signal(undefined);
15
18
  ignoreCalculatorTab = input.required();
16
19
  step = input.required();
17
20
  mode = input.required();
@@ -26,7 +29,7 @@ export class LibsUiComponentsTabsItemComponent {
26
29
  disableLabel = input();
27
30
  zIndex = input();
28
31
  changeViewTab = input.required();
29
- outSelectAction = output();
32
+ outActionSelected = output();
30
33
  element = inject(ElementRef);
31
34
  translateService = inject(TranslateService);
32
35
  constructor() {
@@ -37,7 +40,7 @@ export class LibsUiComponentsTabsItemComponent {
37
40
  untracked(() => {
38
41
  this.updateSpecificWidth();
39
42
  this.mutationObserver()?.disconnect();
40
- this.mutationObserverSubject.pipe(debounceTime(250)).subscribe(() => this.updateSpecificWidth());
43
+ this.mutationObserverSubject.pipe(debounceTime(10)).subscribe(() => this.updateSpecificWidth());
41
44
  this.mutationObserver.set(new MutationObserver(() => this.mutationObserverSubject.next()));
42
45
  this.mutationObserver()?.observe(this.element.nativeElement, { attributes: true, childList: true, subtree: true });
43
46
  });
@@ -60,15 +63,21 @@ export class LibsUiComponentsTabsItemComponent {
60
63
  event.stopPropagation();
61
64
  event.target.src = this.item().linkImageError;
62
65
  }
63
- handlerSelectAction(event) {
64
- // if (this.tab?.modeSaveView) {
65
- // this.moSelectAction.emit({ item: this.item, action: event.key as string });
66
- // this.dropdownFunctionControl && this.dropdownFunctionControl.resetDropdown();
67
- // }
66
+ handlerSelectedKey(event) {
67
+ if (!event) {
68
+ return;
69
+ }
70
+ this.outActionSelected.emit({ item: this.item(), key: event.key });
71
+ this.popoverFunctionControlEvent()?.removePopoverOverlay();
72
+ }
73
+ handlerPopoverFunctionControlEvent(event) {
74
+ this.popoverFunctionControlEvent.set(event);
75
+ }
76
+ handlerPopoverEvent(event) {
77
+ if (event === 'show' || event === 'remove') {
78
+ this.actionShowing.set(event === 'show');
79
+ }
68
80
  }
69
- // protected handlerDropdownFunctionControl(event: IDropdownFunctionControlEvent) {
70
- // this.dropdownFunctionControl = event;
71
- // }
72
81
  handlerClickButton(event, type) {
73
82
  event.stopPropagation();
74
83
  const action = this.item()[type]?.action;
@@ -82,14 +91,16 @@ export class LibsUiComponentsTabsItemComponent {
82
91
  this.onDestroy.complete();
83
92
  }
84
93
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsTabsItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
85
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsTabsItemComponent, isStandalone: true, selector: "libs_ui-components-tabs-item", inputs: { ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: true, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: true, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: true, transformFunction: null }, cssDefault: { classPropertyName: "cssDefault", publicName: "cssDefault", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, changeViewTab: { classPropertyName: "changeViewTab", publicName: "changeViewTab", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { item: "itemChange", outSelectAction: "outSelectAction" }, ngImport: i0, template: " @if (item(); as item) {\n <div #itemEl\n [attr.key]=\"item[fieldKey()]\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }}\"\n [class.libs-ui-tab-header-center-item-style-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.cursor-pointer]=\"!item.disable && !disable()\">\n @if (tabs().hasImage) {\n <img LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon mo-lib-mr-8px {{ item.iconLeft }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().hasBackGroundTab) {\n <div class=\"libs-ui-tab-header-center-item-step border-none libs-ui-font-h6m\"\n [class.cursor-default]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [class.bg-[#f8f9fa]]=\"item.disable || disable()\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep\"\n [class.text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep\"\n [class.text[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[#f8ff9a]]=\"step() > (tabs().stepCompleted || 0) && tabs().ignoreSelectedBackgroundStep\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"item.disable || disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n class=\"libs-ui-tab-header-center-item-step\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (item.disable || disable()) ? ' libs-ui-disable' : '') \n + (tabs().hasBackGroundTab && (item.disable || disable()) ? ' text-[#cdd0d6] cursor-default' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] mo-lib-border-radius-50em\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n class=\"ml-[8px]\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon libs-ui-icon-tooltip-outline\">\n </i>\n }\n @if (item.iconRight) {\n <i LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (item.count) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"item.classCircle || 'libs-ui-font-h5r'\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n <!-- <mo-libs-shared-components-dropdown *ngIf=\"item.specificDisplay && tab.dropdownRightConfig as config\"\n [class.mo-lib-ml-8px]=\"!config.getView\"\n [class.mo-lib-tab-header-center-item-dropdown]=\"config.hiddenShowDropdown\"\n [attr.active]=\"item[fieldKey] === keySelected\"\n [attr.completed]=\"step <= (tab.stepCompleted || -1)\"\n [class.mo-lib-pointer-events-none]=\"item.disable || disable || item[fieldKey] !== keySelected\"\n [isNgContent]=\"true\"\n [customPopupConfig]=\"{\n widthByParent: false,\n ignoreArrow: true,\n paddingLeftItem:config.paddingLeftItem ?? true,\n classInclude:config.classIncludePopup || 'mo-lib-w-250px',\n position:{\n mode: 'start',\n distance: 0\n }\n }\"\n [tooltipElementRefCustom]=\"config.hiddenShowDropdown !== undefined ? undefined : itemEl\"\n [classWidthDropDown]=\"'d-flex'\"\n [listViewData]=\"config.getData ? (item[fieldKey] | MoLibsSharedPipesCallFunctionInTemplate:config.getData:item:lang) : undefined\"\n [listViewConfig]=\"config.listViewConfig\"\n [listViewBackgroundListCustom]=\"config.listViewBackgroundListCustom\"\n [listViewMaxItemShow]=\"config.listViewMaxItemShow || 5\"\n [ignoreStopPropagationEvent]=\"true\"\n (moSelectKey)=\"handlerSelectAction($event)\"\n (moFunctionsControl)=\"handlerDropdownFunctionControl($event)\">\n <div *ngIf=\"config.getView\"\n [innerHtml]=\"item[fieldKey] | MoLibsSharedPipesCallFunctionInTemplate:config.getView:item:lang \">\n </div>\n <i *ngIf=\"!config.getView\"\n [attr.active]=\"item[fieldKey] === keySelected\"\n [attr.completed]=\"step <= (tab.stepCompleted || -1)\"\n class=\" {{ config.hiddenShowDropdown ? 'mo-svg-font-more-horizontal mo-lib-color-6a7383 mo-lib-color-global-hover' : 'mo-svg-font-chevron-down mo-lib-tab-header-center-item-icon' }} \">\n </i>\n </mo-libs-shared-components-dropdown> -->\n\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item-style-hover:hover:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-dropdown{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #999;color:#999;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-style-hover:hover[active=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-style-hover:hover .libs-ui-tab-header-center-item-dropdown[active=true]{display:flex}\n"], dependencies: [{ kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
94
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsTabsItemComponent, isStandalone: true, selector: "libs_ui-components-tabs-item", inputs: { ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: true, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: true, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: true, transformFunction: null }, cssDefault: { classPropertyName: "cssDefault", publicName: "cssDefault", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, changeViewTab: { classPropertyName: "changeViewTab", publicName: "changeViewTab", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { item: "itemChange", outActionSelected: "outActionSelected" }, ngImport: i0, template: " @if (item(); as item) {\n <div #itemEl\n [attr.key]=\"item[fieldKey()]\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }}\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\"\n [class.cursor-pointer]=\"!item.disable && !disable()\">\n @if (tabs().hasImage) {\n <img LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon mo-lib-mr-8px {{ item.iconLeft }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().hasBackGroundTab) {\n <div class=\"libs-ui-tab-header-center-item-step border-none libs-ui-font-h6m\"\n [class.cursor-default]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [class.bg-[#f8f9fa]]=\"item.disable || disable()\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep\"\n [class.text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep\"\n [class.text[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[#f8ff9a]]=\"step() > (tabs().stepCompleted || 0) && tabs().ignoreSelectedBackgroundStep\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"item.disable || disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n class=\"libs-ui-tab-header-center-item-step\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (item.disable || disable()) ? ' libs-ui-disable' : '') \n + (tabs().hasBackGroundTab && (item.disable || disable()) ? ' text-[#cdd0d6] cursor-default' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] mo-lib-border-radius-50em\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n class=\"ml-[8px]\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon libs-ui-icon-tooltip-outline\">\n </i>\n }\n @if (item.iconRight) {\n <i LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (item.count) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"item.classCircle || 'libs-ui-font-h5r'\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (item.specificDisplay && tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.pointer-events-none]=\"item.disable || disable() || item[fieldKey()] !== keySelected()\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl\"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n <libs_ui-components-list [config]=\"right.listViewConfig()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n </ng-template>\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #999;color:#999;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-hover:hover[active=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"], dependencies: [{ kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }, { kind: "component", type: LibsUiComponentsListComponent, selector: "libs_ui-components-list", inputs: ["hiddenInputSearch", "dropdownTabKeyActive", "keySearch", "itemChangeUnSelect", "paddingLeftItem", "config", "isSearchOnline", "disable", "disableLabel", "labelConfig", "searchConfig", "searchPadding", "dividerClassInclude", "hasDivider", "buttonsOther", "hasButtonUnSelectOption", "clickExactly", "backgroundListCustom", "maxItemShow", "keySelected", "multiKeySelected", "keysDisableItem", "keysHiddenItem", "focusInputSearch", "skipFocusInputWhenKeySearchStoreUndefined", "functionCustomAddDataToStore", "functionGetItemsAutoAddList", "validRequired", "showValidateBottom", "zIndex", "loadingIconSize", "templateRefSearchNoData", "resetKeyWhenSelectAllKeyDropdown", "ignoreClassDisableDefaultWhenUseKeysDisableItem"], outputs: ["outSelectKey", "outSelectMultiKey", "outUnSelectMultiKey", "outClickButtonOther", "outFieldKey", "outChangeView", "outLoading", "outFunctionsControl", "outChangStageFlagMousePopover", "outLoadItemsComplete"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
86
95
  }
87
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsTabsItemComponent, decorators: [{
88
97
  type: Component,
89
98
  args: [{ selector: 'libs_ui-components-tabs-item', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
90
99
  LibsUiComponentsButtonsButtonComponent,
91
100
  LibsUiComponentsPopoverComponent,
92
- LibsUiComponentsBadgeComponent
93
- ], template: " @if (item(); as item) {\n <div #itemEl\n [attr.key]=\"item[fieldKey()]\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }}\"\n [class.libs-ui-tab-header-center-item-style-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.cursor-pointer]=\"!item.disable && !disable()\">\n @if (tabs().hasImage) {\n <img LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon mo-lib-mr-8px {{ item.iconLeft }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().hasBackGroundTab) {\n <div class=\"libs-ui-tab-header-center-item-step border-none libs-ui-font-h6m\"\n [class.cursor-default]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [class.bg-[#f8f9fa]]=\"item.disable || disable()\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep\"\n [class.text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep\"\n [class.text[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[#f8ff9a]]=\"step() > (tabs().stepCompleted || 0) && tabs().ignoreSelectedBackgroundStep\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"item.disable || disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n class=\"libs-ui-tab-header-center-item-step\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (item.disable || disable()) ? ' libs-ui-disable' : '') \n + (tabs().hasBackGroundTab && (item.disable || disable()) ? ' text-[#cdd0d6] cursor-default' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] mo-lib-border-radius-50em\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n class=\"ml-[8px]\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon libs-ui-icon-tooltip-outline\">\n </i>\n }\n @if (item.iconRight) {\n <i LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (item.count) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"item.classCircle || 'libs-ui-font-h5r'\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n <!-- <mo-libs-shared-components-dropdown *ngIf=\"item.specificDisplay && tab.dropdownRightConfig as config\"\n [class.mo-lib-ml-8px]=\"!config.getView\"\n [class.mo-lib-tab-header-center-item-dropdown]=\"config.hiddenShowDropdown\"\n [attr.active]=\"item[fieldKey] === keySelected\"\n [attr.completed]=\"step <= (tab.stepCompleted || -1)\"\n [class.mo-lib-pointer-events-none]=\"item.disable || disable || item[fieldKey] !== keySelected\"\n [isNgContent]=\"true\"\n [customPopupConfig]=\"{\n widthByParent: false,\n ignoreArrow: true,\n paddingLeftItem:config.paddingLeftItem ?? true,\n classInclude:config.classIncludePopup || 'mo-lib-w-250px',\n position:{\n mode: 'start',\n distance: 0\n }\n }\"\n [tooltipElementRefCustom]=\"config.hiddenShowDropdown !== undefined ? undefined : itemEl\"\n [classWidthDropDown]=\"'d-flex'\"\n [listViewData]=\"config.getData ? (item[fieldKey] | MoLibsSharedPipesCallFunctionInTemplate:config.getData:item:lang) : undefined\"\n [listViewConfig]=\"config.listViewConfig\"\n [listViewBackgroundListCustom]=\"config.listViewBackgroundListCustom\"\n [listViewMaxItemShow]=\"config.listViewMaxItemShow || 5\"\n [ignoreStopPropagationEvent]=\"true\"\n (moSelectKey)=\"handlerSelectAction($event)\"\n (moFunctionsControl)=\"handlerDropdownFunctionControl($event)\">\n <div *ngIf=\"config.getView\"\n [innerHtml]=\"item[fieldKey] | MoLibsSharedPipesCallFunctionInTemplate:config.getView:item:lang \">\n </div>\n <i *ngIf=\"!config.getView\"\n [attr.active]=\"item[fieldKey] === keySelected\"\n [attr.completed]=\"step <= (tab.stepCompleted || -1)\"\n class=\" {{ config.hiddenShowDropdown ? 'mo-svg-font-more-horizontal mo-lib-color-6a7383 mo-lib-color-global-hover' : 'mo-svg-font-chevron-down mo-lib-tab-header-center-item-icon' }} \">\n </i>\n </mo-libs-shared-components-dropdown> -->\n\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item-style-hover:hover:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-dropdown{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #999;color:#999;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-style-hover:hover[active=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-style-hover:hover .libs-ui-tab-header-center-item-dropdown[active=true]{display:flex}\n"] }]
101
+ LibsUiComponentsBadgeComponent,
102
+ LibsUiComponentsListComponent,
103
+ LibsUiPipesCallFunctionInTemplatePipe
104
+ ], template: " @if (item(); as item) {\n <div #itemEl\n [attr.key]=\"item[fieldKey()]\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }}\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\"\n [class.cursor-pointer]=\"!item.disable && !disable()\">\n @if (tabs().hasImage) {\n <img LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon mo-lib-mr-8px {{ item.iconLeft }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().hasBackGroundTab) {\n <div class=\"libs-ui-tab-header-center-item-step border-none libs-ui-font-h6m\"\n [class.cursor-default]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [class.bg-[#f8f9fa]]=\"item.disable || disable()\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep\"\n [class.text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep\"\n [class.text[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep\"\n [class.bg-[#f8ff9a]]=\"step() > (tabs().stepCompleted || 0) && tabs().ignoreSelectedBackgroundStep\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"item.disable || disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n class=\"libs-ui-tab-header-center-item-step\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (item.disable || disable()) ? ' libs-ui-disable' : '') \n + (tabs().hasBackGroundTab && (item.disable || disable()) ? ' text-[#cdd0d6] cursor-default' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] mo-lib-border-radius-50em\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n class=\"ml-[8px]\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon libs-ui-icon-tooltip-outline\">\n </i>\n }\n @if (item.iconRight) {\n <i LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\">\n </i>\n }\n @if (item.count) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"item.classCircle || 'libs-ui-font-h5r'\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"item.disable || disable()\"\n [class.pointer-events-none]=\"item.disable || disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (item.specificDisplay && tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.pointer-events-none]=\"item.disable || disable() || item[fieldKey()] !== keySelected()\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl\"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n <libs_ui-components-list [config]=\"right.listViewConfig()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n </ng-template>\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #999;color:#999;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-hover:hover[active=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"] }]
94
105
  }], ctorParameters: () => [] });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvdGFicy9zcmMvaXRlbS9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJzL3NyYy9pdGVtL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFnQjdDLE1BQU0sT0FBTyxpQ0FBaUM7SUFFbEMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUcsZ0JBQWdCLEdBQUcsTUFBTSxDQUErQixTQUFTLENBQUMsQ0FBQztJQUNuRSx1QkFBdUIsR0FB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OEJBQThCOzs0RkFHckIsaUNBQWlDO2tCQWI3QyxTQUFTOytCQUVFLDhCQUE4QixjQUc1QixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1Asc0NBQXNDO3dCQUN0QyxnQ0FBZ0M7d0JBQ2hDLDhCQUE4QjtxQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNCYWRnZUNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYmFkZ2UnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgZXNjYXBlSHRtbCwgdXVpZCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVRhYkl0ZW0sIElUYWJJdGVtRXZlbnQsIElUYWJzLCBUWVBFX1RBQl9NT0RFIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWIuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLXRhYnMtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNCYWRnZUNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNUYWJzSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgbGFiZWxDb21wdXRlZCA9IGNvbXB1dGVkKCgpID0+IGVzY2FwZUh0bWwodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5pdGVtKClbdGhpcy5maWVsZExhYmVsKCldKSkpO1xuXG4gIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlciA9IHNpZ25hbDxNdXRhdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXJTdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vIHByaXZhdGUgZHJvcGRvd25GdW5jdGlvbkNvbnRyb2w6IElEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50IHwgdW5kZWZpbmVkO1xuXG4gIHJlYWRvbmx5IGlnbm9yZUNhbGN1bGF0b3JUYWIgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuICByZWFkb25seSBzdGVwID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuICByZWFkb25seSBtb2RlID0gaW5wdXQucmVxdWlyZWQ8VFlQRV9UQUJfTU9ERT4oKTtcbiAgcmVhZG9ubHkgdGFicyA9IGlucHV0LnJlcXVpcmVkPElUYWJzPigpO1xuICByZWFkb25seSBpdGVtID0gbW9kZWwucmVxdWlyZWQ8SVRhYkl0ZW0+KCk7XG4gIHJlYWRvbmx5IGtleVNlbGVjdGVkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBmaWVsZExhYmVsID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBmaWVsZEtleSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgY3NzRGVmYXVsdCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgc2l6ZSA9IGlucHV0LnJlcXVpcmVkPCdsYW5nZXInIHwgJ21lZGl1bSc+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IGNoYW5nZVZpZXdUYWIgPSBpbnB1dC5yZXF1aXJlZDxTdWJqZWN0PHZvaWQ+PigpO1xuXG4gIHJlYWRvbmx5IG91dFNlbGVjdEFjdGlvbiA9IG91dHB1dDxJVGFiSXRlbUV2ZW50PigpO1xuXG4gIHByaXZhdGUgZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5tb2RlKCkgIT09ICdsZWZ0JyB8fCB0aGlzLmlnbm9yZUNhbGN1bGF0b3JUYWIoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVNwZWNpZmljV2lkdGgoKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyKCk/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyU3ViamVjdC5waXBlKGRlYm91bmNlVGltZSgyNTApKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVTcGVjaWZpY1dpZHRoKCkpO1xuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuc2V0KG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMubXV0YXRpb25PYnNlcnZlclN1YmplY3QubmV4dCgpKSk7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcigpPy5vYnNlcnZlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLml0ZW0oKS5rZXkpIHtcbiAgICAgIHRoaXMuaXRlbS51cGRhdGUoaXRlbSA9PiAoeyAuLi5pdGVtLCBrZXk6IHV1aWQoKSB9KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTcGVjaWZpY1dpZHRoKCkge1xuICAgIGNvbnN0IHByZVNwZWNpZmljV2lkdGggPSB0aGlzLml0ZW0oKS5zcGVjaWZpY1dpZHRoO1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgaWYgKHdpZHRoICYmIHByZVNwZWNpZmljV2lkdGggIT09IHdpZHRoKSB7XG4gICAgICB0aGlzLml0ZW0udXBkYXRlKGl0ZW0gPT4gKHsgLi4uaXRlbSwgc3BlY2lmaWNXaWR0aDogd2lkdGggfSkpO1xuICAgICAgdGhpcy5jaGFuZ2VWaWV3VGFiKCkubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVySW1nRXJyb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgKGV2ZW50IGFzIElFdmVudCkudGFyZ2V0LnNyYyA9IHRoaXMuaXRlbSgpLmxpbmtJbWFnZUVycm9yXG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdEFjdGlvbihldmVudDogeyBrZXk6IHN0cmluZywgaXRlbTogYW55IH0pIHtcbiAgICAvLyBpZiAodGhpcy50YWI/Lm1vZGVTYXZlVmlldykge1xuICAgIC8vICAgdGhpcy5tb1NlbGVjdEFjdGlvbi5lbWl0KHsgaXRlbTogdGhpcy5pdGVtLCBhY3Rpb246IGV2ZW50LmtleSBhcyBzdHJpbmcgfSk7XG4gICAgLy8gICB0aGlzLmRyb3Bkb3duRnVuY3Rpb25Db250cm9sICYmIHRoaXMuZHJvcGRvd25GdW5jdGlvbkNvbnRyb2wucmVzZXREcm9wZG93bigpO1xuICAgIC8vIH1cbiAgfVxuXG4gIC8vIHByb3RlY3RlZCBoYW5kbGVyRHJvcGRvd25GdW5jdGlvbkNvbnRyb2woZXZlbnQ6IElEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gIC8vIHRoaXMuZHJvcGRvd25GdW5jdGlvbkNvbnRyb2wgPSBldmVudDtcbiAgLy8gfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2tCdXR0b24oZXZlbnQ6IEV2ZW50LCB0eXBlOiAnY29uZmlnQnV0dG9uTGVmdCcgfCAnY29uZmlnQnV0dG9uUmlnaHQnKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5pdGVtKClbdHlwZV0/LmFjdGlvbjtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhY3Rpb24odGhpcy5pdGVtKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcigpPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxufVxuIiwiICBAaWYgKGl0ZW0oKTsgYXMgaXRlbSkge1xuICAgIDxkaXYgI2l0ZW1FbFxuICAgICAgW2F0dHIua2V5XT1cIml0ZW1bZmllbGRLZXkoKV1cIlxuICAgICAgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgIXRhYnMoKS5pZ25vcmVTaG93TGluZUJvdHRvbUluVGFiXCJcbiAgICAgIGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtIHt7IGNzc0RlZmF1bHQoKSB9fSB7eyBpdGVtLmNsYXNzSW5jbHVkZSB8fCAnJyB9fVwiXG4gICAgICBbY2xhc3MubGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLXN0eWxlLWhvdmVyXT1cIiF0YWJzKCkuaWdub3JlU2hvd0xpbmVCb3R0b21JblRhYlwiXG4gICAgICBbY2xhc3MuY3Vyc29yLXBvaW50ZXJdPVwiIWl0ZW0uZGlzYWJsZSAmJiAhZGlzYWJsZSgpXCI+XG4gICAgICBAaWYgKHRhYnMoKS5oYXNJbWFnZSkge1xuICAgICAgICA8aW1nIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICAgICAgW2lnbm9yZVNob3dQb3BvdmVyXT1cIiFpdGVtLnBvcG92ZXJJbWFnZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJpdGVtLnBvcG92ZXJJbWFnZVwiXG4gICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgIGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWltYWdlIHt7IGl0ZW0uY2xhc3NJbWFnZUluY2x1ZGUgfHwgJycgfX1cIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW3NyY109XCJpdGVtLmxpbmtJbWFnZVwiXG4gICAgICAgICAgW2F0dHIua2V5XT1cIml0ZW1bZmllbGRLZXkoKV1cIlxuICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVySW1nRXJyb3IoJGV2ZW50KVwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW0uaWNvbkxlZnQpIHtcbiAgICAgICAgPGkgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVcbiAgICAgICAgICBbaWdub3JlU2hvd1BvcG92ZXJdPVwiIWl0ZW0ucG9wb3Zlckljb25MZWZ0XCJcbiAgICAgICAgICBbY29uZmlnXT1cIml0ZW0ucG9wb3Zlckljb25MZWZ0XCJcbiAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbiBtby1saWItbXItOHB4IHt7IGl0ZW0uaWNvbkxlZnQgfX1cIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiPlxuICAgICAgICA8L2k+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW0uaXNfcGluKSB7XG4gICAgICAgIDxpIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWljb24gbXItWzhweF0ge3sgaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSA/ICdsaWJzLXVpLWljb24tcGluLXNvbGlkJyA6ICdsaWJzLXVpLWljb24tcGluLW91dGxpbmUnIH19XCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKClcIj5cbiAgICAgICAgPC9pPlxuICAgICAgfVxuICAgICAgQGlmICh0YWJzKCkuaGFzU3RlcCkge1xuICAgICAgICBAaWYgKHRhYnMoKS5oYXNCYWNrR3JvdW5kVGFiKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1zdGVwIGJvcmRlci1ub25lIGxpYnMtdWktZm9udC1oNm1cIlxuICAgICAgICAgICAgW2NsYXNzLmN1cnNvci1kZWZhdWx0XT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgICBbY2xhc3MuYmctWyNmOGY5ZmFdXT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgICAgW2NsYXNzLmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWRlZmF1bHQpXV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpICYmICF0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcFwiXG4gICAgICAgICAgICBbY2xhc3MudGV4dC1bI2ZmZmZmZl1dPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSAmJiAhdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXBcIlxuICAgICAgICAgICAgW2NsYXNzLmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTIpXV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpICYmIHRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwXCJcbiAgICAgICAgICAgIFtjbGFzcy50ZXh0W3ZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCldXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXBcIlxuICAgICAgICAgICAgW2NsYXNzLmJnLVsjMDBiYzYyXV09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKSAmJiAhdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXBcIlxuICAgICAgICAgICAgW2NsYXNzLmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTIpXV09XCJzdGVwKCkgPiAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgMCkgJiYgIXRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwXCJcbiAgICAgICAgICAgIFtjbGFzcy5iZy1bI2Y4ZmY5YV1dPVwic3RlcCgpID4gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IDApICYmIHRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwXCI+XG4gICAgICAgICAgICBAaWYgKChzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKSkpIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLWljb24tY2hlY2sgdGV4dC1bI2ZmZmZmZl1cIj48L2k+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLnRleHQtWyNjZGQwZDZdXT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKClcIj57eyBzdGVwKCkgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgW2F0dHIuY29tcGxldGVkXT1cInN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpXCJcbiAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgICBbY2xhc3MucG9pbnRlci1ldmVudHMtbm9uZV09XCJpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLXN0ZXBcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHN0ZXAoKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGlmIChpdGVtLmNvbmZpZ0J1dHRvbkxlZnQpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBbdHlwZV09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQudHlwZSB8fCAnYnV0dG9uLWxpbmstdGhpcmQnXCJcbiAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5jbGFzc0luY2x1ZGUgfHwgJydcIlxuICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5jbGFzc0ljb25MZWZ0IHx8JydcIlxuICAgICAgICAgIFtjbGFzc0xhYmVsXT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5jbGFzc0xhYmVsIHx8ICcnXCJcbiAgICAgICAgICBbY2xhc3NJY29uUmlnaHRdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LmNsYXNzSWNvblJpZ2h0IHx8JydcIlxuICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQubGFiZWwgfHwnJ1wiXG4gICAgICAgICAgW3BvcG92ZXJdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LnBvcG92ZXIgfHwge31cIlxuICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyQ2xpY2tCdXR0b24oJGV2ZW50LCAnY29uZmlnQnV0dG9uTGVmdCcpXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbVtmaWVsZExhYmVsKCldKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBmbGV4XCJcbiAgICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwidGFicygpLm1heFdpZHRoVGV4dExhYmVsSXRlbSB8fCAxNjBcIj5cbiAgICAgICAgICA8c3BhbiBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgIFtjb25maWddPVwie3Bvc2l0aW9uOiB7bW9kZTogc3RlcCgpID09PSAxID8gJ3N0YXJ0JyA6ICdjZW50ZXInLCBkaXN0YW5jZTogMH0sIHpJbmRleDogekluZGV4KCl9XCJcbiAgICAgICAgICAgIFthdHRyLnNpemVdPVwic2l6ZSgpXCJcbiAgICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIid3LWZ1bGwgbGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWxhYmVsICcrIChpdGVtLmNsYXNzTGFiZWwgfHwgJ2xpYnMtdWktZm9udC1oNm0nKSArIFxuICAgICAgICAgICAgICAoZGlzYWJsZUxhYmVsKCkgJiYgKGl0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKCkpID8gJyBsaWJzLXVpLWRpc2FibGUnIDogJycpIFxuICAgICAgICAgICAgICArICh0YWJzKCkuaGFzQmFja0dyb3VuZFRhYiAmJiAoaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKSkgPyAnIHRleHQtWyNjZGQwZDZdIGN1cnNvci1kZWZhdWx0JyA6ICcnKVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImxhYmVsQ29tcHV0ZWQoKVwiPjwvc3Bhbj5cbiAgICAgICAgICBAaWYgKGl0ZW0uaGFzUmVkRG90KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtWy02cHhdIHRvcC1bLTJweF0gdy1bNnB4XSBoLVs2cHhdIGJnLVsjZWUyZDQxXSBtby1saWItYm9yZGVyLXJhZGl1cy01MGVtXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtLnBvcG92ZXIpIHtcbiAgICAgICAgPGkgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVcbiAgICAgICAgICBbY29uZmlnXT1cIml0ZW0ucG9wb3ZlclwiXG4gICAgICAgICAgY2xhc3M9XCJtbC1bOHB4XVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICBbY2xhc3MucG9pbnRlci1ldmVudHMtbm9uZV09XCJpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgW2F0dHIuY29tcGxldGVkXT1cInN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpXCJcbiAgICAgICAgICBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uIGxpYnMtdWktaWNvbi10b29sdGlwLW91dGxpbmVcIj5cbiAgICAgICAgPC9pPlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtLmljb25SaWdodCkge1xuICAgICAgICA8aSBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgIFtpZ25vcmVTaG93UG9wb3Zlcl09XCIhaXRlbS5wb3BvdmVySWNvblJpZ2h0XCJcbiAgICAgICAgICBbY29uZmlnXT1cIml0ZW0ucG9wb3Zlckljb25SaWdodFwiXG4gICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWljb24ge3sgaXRlbS5pY29uUmlnaHQgfX1cIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiPlxuICAgICAgICA8L2k+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW0uY291bnQpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1iYWRnZSBbbW9kZV09XCJpdGVtLm1vZGVDb3VudCB8fCAneCsnXCJcbiAgICAgICAgICBbY291bnRdPVwiaXRlbS5jb3VudFwiXG4gICAgICAgICAgW21heENvdW50XT1cIml0ZW0ubWF4Q291bnQgfHwgOTlcIlxuICAgICAgICAgIFtjbGFzc0NpcmNsZV09XCJpdGVtLmNsYXNzQ2lyY2xlIHx8ICdsaWJzLXVpLWZvbnQtaDVyJ1wiXG4gICAgICAgICAgW2FjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKClcIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0KSB7XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b24gW3R5cGVdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC50eXBlIHx8ICdidXR0b24tbGluay10aGlyZCdcIlxuICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5jbGFzc0luY2x1ZGUgfHwgJydcIlxuICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQuY2xhc3NJY29uTGVmdCB8fCcnXCJcbiAgICAgICAgICBbY2xhc3NMYWJlbF09XCJpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0LmNsYXNzTGFiZWwgfHwgJydcIlxuICAgICAgICAgIFtjbGFzc0ljb25SaWdodF09XCJpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0LmNsYXNzSWNvblJpZ2h0IHx8JydcIlxuICAgICAgICAgIFtwb3BvdmVyXT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQucG9wb3ZlciB8fCB7fVwiXG4gICAgICAgICAgW2xhYmVsXT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQubGFiZWwgfHwnJ1wiXG4gICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJDbGlja0J1dHRvbigkZXZlbnQsICdjb25maWdCdXR0b25SaWdodCcpXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS0gPG1vLWxpYnMtc2hhcmVkLWNvbXBvbmVudHMtZHJvcGRvd24gKm5nSWY9XCJpdGVtLnNwZWNpZmljRGlzcGxheSAmJiB0YWIuZHJvcGRvd25SaWdodENvbmZpZyBhcyBjb25maWdcIlxuICAgICAgICBbY2xhc3MubW8tbGliLW1sLThweF09XCIhY29uZmlnLmdldFZpZXdcIlxuICAgICAgICBbY2xhc3MubW8tbGliLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0tZHJvcGRvd25dPVwiY29uZmlnLmhpZGRlblNob3dEcm9wZG93blwiXG4gICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5XSA9PT0ga2V5U2VsZWN0ZWRcIlxuICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCA8PSAodGFiLnN0ZXBDb21wbGV0ZWQgfHwgLTEpXCJcbiAgICAgICAgW2NsYXNzLm1vLWxpYi1wb2ludGVyLWV2ZW50cy1ub25lXT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlIHx8IGl0ZW1bZmllbGRLZXldICE9PSBrZXlTZWxlY3RlZFwiXG4gICAgICAgIFtpc05nQ29udGVudF09XCJ0cnVlXCJcbiAgICAgICAgW2N1c3RvbVBvcHVwQ29uZmlnXT1cIntcbiAgICAgICAgICB3aWR0aEJ5UGFyZW50OiBmYWxzZSxcbiAgICAgICAgICBpZ25vcmVBcnJvdzogdHJ1ZSxcbiAgICAgICAgICBwYWRkaW5nTGVmdEl0ZW06Y29uZmlnLnBhZGRpbmdMZWZ0SXRlbSA/PyB0cnVlLFxuICAgICAgICAgIGNsYXNzSW5jbHVkZTpjb25maWcuY2xhc3NJbmNsdWRlUG9wdXAgfHwgJ21vLWxpYi13LTI1MHB4JyxcbiAgICAgICAgICBwb3NpdGlvbjp7XG4gICAgICAgICAgICBtb2RlOiAnc3RhcnQnLFxuICAgICAgICAgICAgZGlzdGFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH1cIlxuICAgICAgICBbdG9vbHRpcEVsZW1lbnRSZWZDdXN0b21dPVwiY29uZmlnLmhpZGRlblNob3dEcm9wZG93biAhPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaXRlbUVsXCJcbiAgICAgICAgW2NsYXNzV2lkdGhEcm9wRG93bl09XCInZC1mbGV4J1wiXG4gICAgICAgIFtsaXN0Vmlld0RhdGFdPVwiY29uZmlnLmdldERhdGEgPyAoaXRlbVtmaWVsZEtleV0gfCBNb0xpYnNTaGFyZWRQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGU6Y29uZmlnLmdldERhdGE6aXRlbTpsYW5nKSA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFtsaXN0Vmlld0NvbmZpZ109XCJjb25maWcubGlzdFZpZXdDb25maWdcIlxuICAgICAgICBbbGlzdFZpZXdCYWNrZ3JvdW5kTGlzdEN1c3RvbV09XCJjb25maWcubGlzdFZpZXdCYWNrZ3JvdW5kTGlzdEN1c3RvbVwiXG4gICAgICAgIFtsaXN0Vmlld01heEl0ZW1TaG93XT1cImNvbmZpZy5saXN0Vmlld01heEl0ZW1TaG93IHx8IDVcIlxuICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgIChtb1NlbGVjdEtleSk9XCJoYW5kbGVyU2VsZWN0QWN0aW9uKCRldmVudClcIlxuICAgICAgICAobW9GdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJEcm9wZG93bkZ1bmN0aW9uQ29udHJvbCgkZXZlbnQpXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWcuZ2V0Vmlld1wiXG4gICAgICAgICAgW2lubmVySHRtbF09XCJpdGVtW2ZpZWxkS2V5XSB8IE1vTGlic1NoYXJlZFBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZTpjb25maWcuZ2V0VmlldzppdGVtOmxhbmcgXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aSAqbmdJZj1cIiFjb25maWcuZ2V0Vmlld1wiXG4gICAgICAgICAgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXldID09PSBrZXlTZWxlY3RlZFwiXG4gICAgICAgICAgW2F0dHIuY29tcGxldGVkXT1cInN0ZXAgPD0gKHRhYi5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgICAgY2xhc3M9XCIge3sgY29uZmlnLmhpZGRlblNob3dEcm9wZG93biA/ICdtby1zdmctZm9udC1tb3JlLWhvcml6b250YWwgbW8tbGliLWNvbG9yLTZhNzM4MyBtby1saWItY29sb3ItZ2xvYmFsLWhvdmVyJyA6ICdtby1zdmctZm9udC1jaGV2cm9uLWRvd24gbW8tbGliLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbicgfX0gXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIDwvbW8tbGlicy1zaGFyZWQtY29tcG9uZW50cy1kcm9wZG93bj4gLS0+XG5cbiAgICA8L2Rpdj5cbiAgfVxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvdGFicy9zcmMvaXRlbS9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJzL3NyYy9pdGVtL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFnQyxnQ0FBZ0MsRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUVqSSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBb0IsNkJBQTZCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFpQmpHLE1BQU0sT0FBTyxpQ0FBaUM7SUFFbEMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFVB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RSxDQUFDO1lBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVTLGtCQUFrQixDQUFDLEtBQVksRUFBRSxJQUE4QztRQUN2RixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN6QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQWhHVSxpQ0FBaUM7NEZBQWpDLGlDQUFpQyw0N0RDM0I5Qyxxc1VBc0xBLDJnRURsS0ksc0NBQXNDLGloQkFDdEMsZ0NBQWdDLDBkQUNoQyw4QkFBOEIsMk1BQzlCLDZCQUE2QixvL0JBQzdCLHFDQUFxQzs7NEZBRzVCLGlDQUFpQztrQkFmN0MsU0FBUzsrQkFFRSw4QkFBOEIsY0FHNUIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLHNDQUFzQzt3QkFDdEMsZ0NBQWdDO3dCQUNoQyw4QkFBOEI7d0JBQzlCLDZCQUE2Qjt3QkFDN0IscUNBQXFDO3FCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIG1vZGVsLCBPbkRlc3Ryb3ksIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0JhZGdlQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1iYWRnZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCwgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsIFRZUEVfUE9QT1ZFUl9FVkVOVCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCB7IGVzY2FwZUh0bWwsIHV1aWQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElUYWJJdGVtLCBJVGFiSXRlbUV2ZW50LCBJVGFicywgVFlQRV9UQUJfTU9ERSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFiLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJTGlzdERhdGFFbWl0S2V5LCBMaWJzVWlDb21wb25lbnRzTGlzdENvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtbGlzdCc7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtY2FsbC1mdW5jdGlvbi1pbi10ZW1wbGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy10YWJzLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2l0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzQmFkZ2VDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0xpc3RDb21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNUYWJzSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgbGFiZWxDb21wdXRlZCA9IGNvbXB1dGVkKCgpID0+IGVzY2FwZUh0bWwodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5pdGVtKClbdGhpcy5maWVsZExhYmVsKCldKSkpO1xuICBwcm90ZWN0ZWQgYWN0aW9uU2hvd2luZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyID0gc2lnbmFsPE11dGF0aW9uT2JzZXJ2ZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlclN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBwb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQgPSBzaWduYWw8SVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBpZ25vcmVDYWxjdWxhdG9yVGFiID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgc3RlcCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgbW9kZSA9IGlucHV0LnJlcXVpcmVkPFRZUEVfVEFCX01PREU+KCk7XG4gIHJlYWRvbmx5IHRhYnMgPSBpbnB1dC5yZXF1aXJlZDxJVGFicz4oKTtcbiAgcmVhZG9ubHkgaXRlbSA9IG1vZGVsLnJlcXVpcmVkPElUYWJJdGVtPigpO1xuICByZWFkb25seSBrZXlTZWxlY3RlZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgZmllbGRMYWJlbCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgZmllbGRLZXkgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGNzc0RlZmF1bHQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dC5yZXF1aXJlZDwnbGFuZ2VyJyB8ICdtZWRpdW0nPigpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZGlzYWJsZUxhYmVsID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBjaGFuZ2VWaWV3VGFiID0gaW5wdXQucmVxdWlyZWQ8U3ViamVjdDx2b2lkPj4oKTtcblxuICByZWFkb25seSBvdXRBY3Rpb25TZWxlY3RlZCA9IG91dHB1dDxJVGFiSXRlbUV2ZW50PigpO1xuXG4gIHByaXZhdGUgZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5tb2RlKCkgIT09ICdsZWZ0JyB8fCB0aGlzLmlnbm9yZUNhbGN1bGF0b3JUYWIoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVNwZWNpZmljV2lkdGgoKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyKCk/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyU3ViamVjdC5waXBlKGRlYm91bmNlVGltZSgxMCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVNwZWNpZmljV2lkdGgoKSk7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5zZXQobmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5tdXRhdGlvbk9ic2VydmVyU3ViamVjdC5uZXh0KCkpKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyKCk/Lm9ic2VydmUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuaXRlbSgpLmtleSkge1xuICAgICAgdGhpcy5pdGVtLnVwZGF0ZShpdGVtID0+ICh7IC4uLml0ZW0sIGtleTogdXVpZCgpIH0pKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNwZWNpZmljV2lkdGgoKSB7XG4gICAgY29uc3QgcHJlU3BlY2lmaWNXaWR0aCA9IHRoaXMuaXRlbSgpLnNwZWNpZmljV2lkdGg7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICBpZiAod2lkdGggJiYgcHJlU3BlY2lmaWNXaWR0aCAhPT0gd2lkdGgpIHtcbiAgICAgIHRoaXMuaXRlbS51cGRhdGUoaXRlbSA9PiAoeyAuLi5pdGVtLCBzcGVjaWZpY1dpZHRoOiB3aWR0aCB9KSk7XG4gICAgICB0aGlzLmNoYW5nZVZpZXdUYWIoKS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJJbWdFcnJvcihldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAoZXZlbnQgYXMgSUV2ZW50KS50YXJnZXQuc3JjID0gdGhpcy5pdGVtKCkubGlua0ltYWdlRXJyb3JcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyU2VsZWN0ZWRLZXkoZXZlbnQ6IElMaXN0RGF0YUVtaXRLZXkgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub3V0QWN0aW9uU2VsZWN0ZWQuZW1pdCh7IGl0ZW06IHRoaXMuaXRlbSgpLCBrZXk6IGV2ZW50LmtleSBhcyBzdHJpbmcgfSk7XG4gICAgdGhpcy5wb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQoKT8ucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KGV2ZW50OiBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gICAgdGhpcy5wb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQuc2V0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyUG9wb3ZlckV2ZW50KGV2ZW50OiBUWVBFX1BPUE9WRVJfRVZFTlQpIHtcbiAgICBpZiAoZXZlbnQgPT09ICdzaG93JyB8fCBldmVudCA9PT0gJ3JlbW92ZScpIHtcbiAgICAgIHRoaXMuYWN0aW9uU2hvd2luZy5zZXQoZXZlbnQgPT09ICdzaG93Jyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDbGlja0J1dHRvbihldmVudDogRXZlbnQsIHR5cGU6ICdjb25maWdCdXR0b25MZWZ0JyB8ICdjb25maWdCdXR0b25SaWdodCcpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLml0ZW0oKVt0eXBlXT8uYWN0aW9uO1xuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgIGFjdGlvbih0aGlzLml0ZW0oKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyKCk/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxuXG59XG4iLCIgIEBpZiAoaXRlbSgpOyBhcyBpdGVtKSB7XG4gICAgPGRpdiAjaXRlbUVsXG4gICAgICBbYXR0ci5rZXldPVwiaXRlbVtmaWVsZEtleSgpXVwiXG4gICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSAmJiAhdGFicygpLmlnbm9yZVNob3dMaW5lQm90dG9tSW5UYWJcIlxuICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0ge3sgY3NzRGVmYXVsdCgpIH19IHt7IGl0ZW0uY2xhc3NJbmNsdWRlIHx8ICcnIH19XCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taG92ZXJdPVwiIXRhYnMoKS5pZ25vcmVTaG93TGluZUJvdHRvbUluVGFiXCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0tYWN0aW9uLXNob3ddPVwiYWN0aW9uU2hvd2luZygpXCJcbiAgICAgIFtjbGFzcy5jdXJzb3ItcG9pbnRlcl09XCIhaXRlbS5kaXNhYmxlICYmICFkaXNhYmxlKClcIj5cbiAgICAgIEBpZiAodGFicygpLmhhc0ltYWdlKSB7XG4gICAgICAgIDxpbWcgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVcbiAgICAgICAgICBbaWdub3JlU2hvd1BvcG92ZXJdPVwiIWl0ZW0ucG9wb3ZlckltYWdlXCJcbiAgICAgICAgICBbY29uZmlnXT1cIml0ZW0ucG9wb3ZlckltYWdlXCJcbiAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taW1hZ2Uge3sgaXRlbS5jbGFzc0ltYWdlSW5jbHVkZSB8fCAnJyB9fVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICBbY2xhc3MucG9pbnRlci1ldmVudHMtbm9uZV09XCJpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICBbc3JjXT1cIml0ZW0ubGlua0ltYWdlXCJcbiAgICAgICAgICBbYXR0ci5rZXldPVwiaXRlbVtmaWVsZEtleSgpXVwiXG4gICAgICAgICAgKGVycm9yKT1cImhhbmRsZXJJbWdFcnJvcigkZXZlbnQpXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5pY29uTGVmdCkge1xuICAgICAgICA8aSBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgIFtpZ25vcmVTaG93UG9wb3Zlcl09XCIhaXRlbS5wb3BvdmVySWNvbkxlZnRcIlxuICAgICAgICAgIFtjb25maWddPVwiaXRlbS5wb3BvdmVySWNvbkxlZnRcIlxuICAgICAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJ0cnVlXCJcbiAgICAgICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgW2F0dHIuY29tcGxldGVkXT1cInN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpXCJcbiAgICAgICAgICBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uIG1vLWxpYi1tci04cHgge3sgaXRlbS5pY29uTGVmdCB9fVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICBbY2xhc3MucG9pbnRlci1ldmVudHMtbm9uZV09XCJpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5pc19waW4pIHtcbiAgICAgICAgPGkgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbiBtci1bOHB4XSB7eyBpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpID8gJ2xpYnMtdWktaWNvbi1waW4tc29saWQnIDogJ2xpYnMtdWktaWNvbi1waW4tb3V0bGluZScgfX1cIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiPlxuICAgICAgICA8L2k+XG4gICAgICB9XG4gICAgICBAaWYgKHRhYnMoKS5oYXNTdGVwKSB7XG4gICAgICAgIEBpZiAodGFicygpLmhhc0JhY2tHcm91bmRUYWIpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLXN0ZXAgYm9yZGVyLW5vbmUgbGlicy11aS1mb250LWg2bVwiXG4gICAgICAgICAgICBbY2xhc3MuY3Vyc29yLWRlZmF1bHRdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgICBbY2xhc3MucG9pbnRlci1ldmVudHMtbm9uZV09XCJpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICAgIFtjbGFzcy5iZy1bI2Y4ZjlmYV1dPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgICBbY2xhc3MuYmctW3ZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCldXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgIXRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwXCJcbiAgICAgICAgICAgIFtjbGFzcy50ZXh0LVsjZmZmZmZmXV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpICYmICF0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcFwiXG4gICAgICAgICAgICBbY2xhc3MuYmctW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMildXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXBcIlxuICAgICAgICAgICAgW2NsYXNzLnRleHRbdmFyKC0tbGlicy11aS1jb2xvci1kZWZhdWx0KV1dPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSAmJiB0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcFwiXG4gICAgICAgICAgICBbY2xhc3MuYmctWyMwMGJjNjJdXT1cInN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpICYmICF0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcFwiXG4gICAgICAgICAgICBbY2xhc3MuYmctW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMildXT1cInN0ZXAoKSA+ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAwKSAmJiAhdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXBcIlxuICAgICAgICAgICAgW2NsYXNzLmJnLVsjZjhmZjlhXV09XCJzdGVwKCkgPiAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgMCkgJiYgdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXBcIj5cbiAgICAgICAgICAgIEBpZiAoKHN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpKSkge1xuICAgICAgICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktaWNvbi1jaGVjayB0ZXh0LVsjZmZmZmZmXVwiPjwvaT5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MudGV4dC1bI2NkZDBkNl1dPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiPnt7IHN0ZXAoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0tc3RlcFwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgc3RlcCgpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW0uY29uZmlnQnV0dG9uTGVmdCkge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIFt0eXBlXT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC50eXBlIHx8ICdidXR0b24tbGluay10aGlyZCdcIlxuICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LmNsYXNzSW5jbHVkZSB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LmNsYXNzSWNvbkxlZnQgfHwnJ1wiXG4gICAgICAgICAgW2NsYXNzTGFiZWxdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LmNsYXNzTGFiZWwgfHwgJydcIlxuICAgICAgICAgIFtjbGFzc0ljb25SaWdodF09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQuY2xhc3NJY29uUmlnaHQgfHwnJ1wiXG4gICAgICAgICAgW2xhYmVsXT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5sYWJlbCB8fCcnXCJcbiAgICAgICAgICBbcG9wb3Zlcl09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQucG9wb3ZlciB8fCB7fVwiXG4gICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJDbGlja0J1dHRvbigkZXZlbnQsICdjb25maWdCdXR0b25MZWZ0JylcIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtW2ZpZWxkTGFiZWwoKV0pIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXhcIlxuICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aC5weF09XCJ0YWJzKCkubWF4V2lkdGhUZXh0TGFiZWxJdGVtIHx8IDE2MFwiPlxuICAgICAgICAgIDxzcGFuIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJ7cG9zaXRpb246IHttb2RlOiBzdGVwKCkgPT09IDEgPyAnc3RhcnQnIDogJ2NlbnRlcicsIGRpc3RhbmNlOiAwfSwgekluZGV4OiB6SW5kZXgoKX1cIlxuICAgICAgICAgICAgW2F0dHIuc2l6ZV09XCJzaXplKClcIlxuICAgICAgICAgICAgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgW2F0dHIuY29tcGxldGVkXT1cInN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpXCJcbiAgICAgICAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiJ3ctZnVsbCBsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0tbGFiZWwgJysgKGl0ZW0uY2xhc3NMYWJlbCB8fCAnbGlicy11aS1mb250LWg2bScpICsgXG4gICAgICAgICAgICAgIChkaXNhYmxlTGFiZWwoKSAmJiAoaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKSkgPyAnIGxpYnMtdWktZGlzYWJsZScgOiAnJykgXG4gICAgICAgICAgICAgICsgKHRhYnMoKS5oYXNCYWNrR3JvdW5kVGFiICYmIChpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpKSA/ICcgdGV4dC1bI2NkZDBkNl0gY3Vyc29yLWRlZmF1bHQnIDogJycpXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibGFiZWxDb21wdXRlZCgpXCI+PC9zcGFuPlxuICAgICAgICAgIEBpZiAoaXRlbS5oYXNSZWREb3QpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSByaWdodC1bLTZweF0gdG9wLVstMnB4XSB3LVs2cHhdIGgtWzZweF0gYmctWyNlZTJkNDFdIG1vLWxpYi1ib3JkZXItcmFkaXVzLTUwZW1cIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW0ucG9wb3Zlcikge1xuICAgICAgICA8aSBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgIFtjb25maWddPVwiaXRlbS5wb3BvdmVyXCJcbiAgICAgICAgICBjbGFzcz1cIm1sLVs4cHhdXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWljb24gbGlicy11aS1pY29uLXRvb2x0aXAtb3V0bGluZVwiPlxuICAgICAgICA8L2k+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW0uaWNvblJpZ2h0KSB7XG4gICAgICAgIDxpIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICAgICAgW2lnbm9yZVNob3dQb3BvdmVyXT1cIiFpdGVtLnBvcG92ZXJJY29uUmlnaHRcIlxuICAgICAgICAgIFtjb25maWddPVwiaXRlbS5wb3BvdmVySWNvblJpZ2h0XCJcbiAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbiB7eyBpdGVtLmljb25SaWdodCB9fVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgICAgICBbY2xhc3MucG9pbnRlci1ldmVudHMtbm9uZV09XCJpdGVtLmRpc2FibGUgfHwgZGlzYWJsZSgpXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5jb3VudCkge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJhZGdlIFttb2RlXT1cIml0ZW0ubW9kZUNvdW50IHx8ICd4KydcIlxuICAgICAgICAgIFtjb3VudF09XCJpdGVtLmNvdW50XCJcbiAgICAgICAgICBbbWF4Q291bnRdPVwiaXRlbS5tYXhDb3VudCB8fCA5OVwiXG4gICAgICAgICAgW2NsYXNzQ2lyY2xlXT1cIml0ZW0uY2xhc3NDaXJjbGUgfHwgJ2xpYnMtdWktZm9udC1oNXInXCJcbiAgICAgICAgICBbYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwiaXRlbS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW0uY29uZmlnQnV0dG9uUmlnaHQpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBbdHlwZV09XCJpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0LnR5cGUgfHwgJ2J1dHRvbi1saW5rLXRoaXJkJ1wiXG4gICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0LmNsYXNzSW5jbHVkZSB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5jbGFzc0ljb25MZWZ0IHx8JydcIlxuICAgICAgICAgIFtjbGFzc0xhYmVsXT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQuY2xhc3NMYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQuY2xhc3NJY29uUmlnaHQgfHwnJ1wiXG4gICAgICAgICAgW3BvcG92ZXJdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5wb3BvdmVyIHx8IHt9XCJcbiAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5sYWJlbCB8fCcnXCJcbiAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uKCRldmVudCwgJ2NvbmZpZ0J1dHRvblJpZ2h0JylcIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtLnNwZWNpZmljRGlzcGxheSAmJiB0YWJzKCkuYWN0aW9uUmlnaHRDb25maWc/LigpOyBhcyByaWdodCkge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXIgW2NsYXNzXT1cInJpZ2h0LmNsYXNzSW5jbHVkZSB8fCAnbWwtWzhweF0nXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWFjdGlvbl09XCJyaWdodC5vbmx5U2hvd1doZW5Ib3Zlckl0ZW1BY3RpdmVcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cIml0ZW0uZGlzYWJsZSB8fCBkaXNhYmxlKCkgfHwgaXRlbVtmaWVsZEtleSgpXSAhPT0ga2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgW21vZGVdPVwiJ2NsaWNrLXRvZ2dsZSdcIlxuICAgICAgICAgIFtpZ25vcmVIaWRkZW5Qb3BvdmVyQ29udGVudFdoZW5Nb3VzZUxlYXZlXT1cInRydWVcIlxuICAgICAgICAgIFtlbGVtZW50UmVmQ3VzdG9tXT1cInJpZ2h0Lm9ubHlTaG93V2hlbkhvdmVySXRlbUFjdGl2ZSA/IHVuZGVmaW5lZCA6IGl0ZW1FbFwiXG4gICAgICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgICAgICB6SW5kZXg6IHJpZ2h0LmNvbmZpZz8uKCk/LnpJbmRleCB8fCAxMDAwLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiByaWdodC5jb25maWc/LigpPy5tYXhIZWlnaHQgfHwgMjg3LFxuICAgICAgICAgICAgbWF4V2lkdGg6IHJpZ2h0LmNvbmZpZz8uKCk/Lm1heFdpZHRoIHx8IDIwNDgsXG4gICAgICAgICAgICB3aWR0aDogcmlnaHQuY29uZmlnPy4oKT8ud2lkdGggfHwgMjIwLCBcbiAgICAgICAgICAgIGRpcmVjdGlvbjogcmlnaHQuY29uZmlnPy4oKT8uZGlyZWN0aW9uIHx8ICdib3R0b20nLFxuICAgICAgICAgICAgdGVtcGxhdGU6IHJpZ2h0LmNvbmZpZz8uKCk/LnRlbXBsYXRlIHx8IGFjdGlvbkVsLFxuICAgICAgICAgICAgd2hpdGVUaGVtZTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgICAgICAgcG9zaXRpb246IHJpZ2h0LmNvbmZpZz8uKCk/LnBvc2l0aW9uIHx8IHsgbW9kZTogJ3N0YXJ0JywgZGlzdGFuY2U6IDAgfVxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChvdXRFdmVudCk9XCJoYW5kbGVyUG9wb3ZlckV2ZW50KCRldmVudClcIlxuICAgICAgICAgIChvdXRGdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQoJGV2ZW50KVwiPlxuICAgICAgICAgIEBpZiAocmlnaHQuY3VzdG9tVmlldykge1xuICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cIml0ZW1bZmllbGRLZXkoKV0gfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOnJpZ2h0LmN1c3RvbVZpZXc6aXRlbVwiPjwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGkgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwicmlnaHQub25seVNob3dXaGVuSG92ZXJJdGVtQWN0aXZlID8gJ2xpYnMtdWktaWNvbi1tb3JlLXZlcnRpY2FsIHJvdGF0ZS05MCBsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbicgOiAnbGlicy11aS1pY29uLWNoZXZyb24tcmlnaHQgcm90YXRlLTkwIGxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uJ1wiPlxuICAgICAgICAgICAgPC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9saWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNhY3Rpb25FbD5cbiAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWxpc3QgW2NvbmZpZ109XCJyaWdodC5saXN0Vmlld0NvbmZpZygpXCJcbiAgICAgICAgICAgIFttYXhJdGVtU2hvd109XCI1XCJcbiAgICAgICAgICAgIFtoaWRkZW5JbnB1dFNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwYWRkaW5nTGVmdEl0ZW1dPVwidHJ1ZVwiXG4gICAgICAgICAgICAob3V0U2VsZWN0S2V5KT1cImhhbmRsZXJTZWxlY3RlZEtleSgkZXZlbnQpXCIgLz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuIl19