@aquera/ngx-smart-table 0.0.2-alpha → 0.0.5-alpha

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.
@@ -3,4 +3,4 @@
3
3
  * These interfaces define pluggable strategies for formatting, validation, and editing
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdHJhdGVneSBpbnRlcmZhY2VzIGZvciBjZWxsIGJlaGF2aW9yXG4gKiBUaGVzZSBpbnRlcmZhY2VzIGRlZmluZSBwbHVnZ2FibGUgc3RyYXRlZ2llcyBmb3IgZm9ybWF0dGluZywgdmFsaWRhdGlvbiwgYW5kIGVkaXRpbmdcbiAqL1xuXG5pbXBvcnQgeyBWYWxpZGF0aW9uUmVzdWx0LCBDZWxsRXZlbnQgfSBmcm9tICcuL2NlbGwtdHlwZXMnO1xuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgZm9ybWF0dGluZyBjZWxsIHZhbHVlcyBmb3IgZGlzcGxheVxuICogRm9ybWF0dGVycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxGb3JtYXR0ZXI8VCA9IGFueT4ge1xuICAvKipcbiAgICogRm9ybWF0cyBhIHZhbHVlIGZvciBkaXNwbGF5XG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIEZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICovXG4gIGZvcm1hdCh2YWx1ZTogVCk6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgbWV0aG9kIHRvIGZvcm1hdCB2YWx1ZSB3aXRoIGFkZGl0aW9uYWwgY29udGV4dFxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGZvcm1hdFxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZW50aXJlIHJvdyBkYXRhXG4gICAqIEBwYXJhbSBjb2x1bW5LZXkgVGhlIGNvbHVtbiBrZXlcbiAgICogQHJldHVybnMgRm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgZm9ybWF0V2l0aENvbnRleHQ/KHZhbHVlOiBULCByb3dEYXRhOiBhbnksIGNvbHVtbktleTogc3RyaW5nKTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgdmFsaWRhdGluZyBjZWxsIHZhbHVlc1xuICogVmFsaWRhdG9ycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxWYWxpZGF0b3I8VCA9IGFueT4ge1xuICAvKipcbiAgICogVmFsaWRhdGVzIGEgY2VsbCB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIFZhbGlkYXRpb24gcmVzdWx0IHdpdGggc3VjY2VzcyBmbGFnIGFuZCBvcHRpb25hbCBlcnJvciBtZXNzYWdlc1xuICAgKi9cbiAgdmFsaWRhdGUodmFsdWU6IFQpOiBWYWxpZGF0aW9uUmVzdWx0O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRob2QgdG8gdmFsaWRhdGUgd2l0aCBhZGRpdGlvbmFsIGNvbnRleHRcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZW50aXJlIHJvdyBkYXRhXG4gICAqIEBwYXJhbSBjb2x1bW5LZXkgVGhlIGNvbHVtbiBrZXlcbiAgICogQHJldHVybnMgVmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIHZhbGlkYXRlV2l0aENvbnRleHQ/KHZhbHVlOiBULCByb3dEYXRhOiBhbnksIGNvbHVtbktleTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZXJyb3IgbWVzc2FnZSB0ZW1wbGF0ZVxuICAgKi9cbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVkaXRvciBjb250ZXh0IHByb3ZpZGVkIHRvIGNlbGwgZWRpdG9yc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxFZGl0b3JDb250ZXh0PFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIEN1cnJlbnQgY2VsbCB2YWx1ZVxuICAgKi9cbiAgdmFsdWU6IFQ7XG5cbiAgLyoqXG4gICAqIFJvdyBkYXRhIGNvbnRleHRcbiAgICovXG4gIHJvd0RhdGE/OiBhbnk7XG5cbiAgLyoqXG4gICAqIENvbHVtbiBrZXlcbiAgICovXG4gIGNvbHVtbktleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSb3cgaW5kZXhcbiAgICovXG4gIHJvd0luZGV4PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIHZhbHVlIGNoYW5nZXNcbiAgICovXG4gIG9uQ2hhbmdlOiAobmV3VmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIHNhdmUgdGhlIGVkaXRlZCB2YWx1ZVxuICAgKi9cbiAgb25TYXZlOiAobmV3VmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGNhbmNlbCBlZGl0aW5nXG4gICAqL1xuICBvbkNhbmNlbDogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGVsZW1lbnQgZm9yIHRoZSBlZGl0b3JcbiAgICovXG4gIGNvbnRhaW5lcj86IEhUTUxFbGVtZW50O1xufVxuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgaGFuZGxpbmcgaW5saW5lIGNlbGwgZWRpdGluZ1xuICogRWRpdG9ycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxFZGl0b3I8VCA9IGFueT4ge1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBhbmQgcmVuZGVyIHRoZSBlZGl0b3JcbiAgICogQHBhcmFtIGNvbnRleHQgRWRpdG9yIGNvbnRleHQgd2l0aCB2YWx1ZSwgY2FsbGJhY2tzLCBhbmQgY29udGFpbmVyXG4gICAqL1xuICBlZGl0KGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PFQ+KTogdm9pZDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgY2xlYW51cCB3aGVuIGVkaXRvciBpcyBkZXN0cm95ZWRcbiAgICovXG4gIGRlc3Ryb3k/KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1ldGhvZCB0byBmb2N1cyB0aGUgZWRpdG9yXG4gICAqL1xuICBmb2N1cz8oKTogdm9pZDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgbWV0aG9kIHRvIGdldCBjdXJyZW50IGVkaXRvciB2YWx1ZSB3aXRob3V0IHNhdmluZ1xuICAgKi9cbiAgZ2V0Q3VycmVudFZhbHVlPygpOiBUO1xufVxuXG4vKipcbiAqIFBhcnNlciBpbnRlcmZhY2UgZm9yIGNvbnZlcnRpbmcgdXNlciBpbnB1dCB0byB0eXBlZCB2YWx1ZXNcbiAqIFVzZWQgYnkgZWRpdG9ycyB0byBjb252ZXJ0IHN0cmluZyBpbnB1dCB0byBwcm9wZXIgZGF0YSB0eXBlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxQYXJzZXI8VCA9IGFueT4ge1xuICAvKipcbiAgICogUGFyc2UgdXNlciBpbnB1dCB0byB0eXBlZCB2YWx1ZVxuICAgKiBAcGFyYW0gaW5wdXQgVXNlciBpbnB1dCAodXN1YWxseSBzdHJpbmcpXG4gICAqIEByZXR1cm5zIFBhcnNlZCB0eXBlZCB2YWx1ZVxuICAgKi9cbiAgcGFyc2UoaW5wdXQ6IGFueSk6IFQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1ldGhvZCB0byBjaGVjayBpZiBpbnB1dCBjYW4gYmUgcGFyc2VkXG4gICAqIEBwYXJhbSBpbnB1dCBVc2VyIGlucHV0XG4gICAqIEByZXR1cm5zIFRydWUgaWYgaW5wdXQgY2FuIGJlIHBhcnNlZFxuICAgKi9cbiAgY2FuUGFyc2U/KGlucHV0OiBhbnkpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbXBvc2l0ZSB2YWxpZGF0b3IgdGhhdCBjaGFpbnMgbXVsdGlwbGUgdmFsaWRhdG9yc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvc2l0ZVZhbGlkYXRvcjxUID0gYW55PiBleHRlbmRzIENlbGxWYWxpZGF0b3I8VD4ge1xuICAvKipcbiAgICogQWRkIGEgdmFsaWRhdG9yIHRvIHRoZSBjaGFpblxuICAgKi9cbiAgYWRkVmFsaWRhdG9yKHZhbGlkYXRvcjogQ2VsbFZhbGlkYXRvcjxUPik6IHRoaXM7XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgdmFsaWRhdG9ycyBpbiB0aGUgY2hhaW5cbiAgICovXG4gIGdldFZhbGlkYXRvcnMoKTogQ2VsbFZhbGlkYXRvcjxUPltdO1xufVxuXG4vKipcbiAqIEV2ZW50IGhhbmRsZXIgdHlwZXMgZm9yIGNlbGwgbGlmZWN5Y2xlIGV2ZW50c1xuICovXG5leHBvcnQgdHlwZSBDZWxsRXZlbnRIYW5kbGVyPFQgPSBhbnk+ID0gKGV2ZW50OiBDZWxsRXZlbnQ8VD4pID0+IHZvaWQ7XG5cbi8qKlxuICogQ2VsbCBsaWZlY3ljbGUgaG9va3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZWxsTGlmZWN5Y2xlSG9va3M8VCA9IGFueT4ge1xuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBlZGl0aW5nIHN0YXJ0c1xuICAgKi9cbiAgYmVmb3JlRWRpdD86IENlbGxFdmVudEhhbmRsZXI8VD47XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGVkaXQgbW9kZSBpcyBlbnRlcmVkXG4gICAqL1xuICBvbkVkaXQ/OiBDZWxsRXZlbnRIYW5kbGVyPFQ+O1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZWRpdCBtb2RlIGlzIGV4aXRlZFxuICAgKi9cbiAgYWZ0ZXJFZGl0PzogQ2VsbEV2ZW50SGFuZGxlcjxUPjtcblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSB2YWx1ZSBpcyBzYXZlZFxuICAgKi9cbiAgYmVmb3JlU2F2ZT86IENlbGxFdmVudEhhbmRsZXI8VD47XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciB2YWx1ZSBpcyBzYXZlZFxuICAgKi9cbiAgb25TYXZlPzogQ2VsbEV2ZW50SGFuZGxlcjxUPjtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gZWRpdCBpcyBjYW5jZWxsZWRcbiAgICovXG4gIG9uQ2FuY2VsPzogQ2VsbEV2ZW50SGFuZGxlcjxUPjtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgb25WYWxpZGF0aW9uRXJyb3I/OiBDZWxsRXZlbnRIYW5kbGVyPFQ+O1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBjZWxsIHZhbHVlIGNoYW5nZXNcbiAgICovXG4gIG9uQ2hhbmdlPzogQ2VsbEV2ZW50SGFuZGxlcjxUPjtcbn1cblxuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdHJhdGVneSBpbnRlcmZhY2VzIGZvciBjZWxsIGJlaGF2aW9yXG4gKiBUaGVzZSBpbnRlcmZhY2VzIGRlZmluZSBwbHVnZ2FibGUgc3RyYXRlZ2llcyBmb3IgZm9ybWF0dGluZywgdmFsaWRhdGlvbiwgYW5kIGVkaXRpbmdcbiAqL1xuXG5pbXBvcnQgeyBWYWxpZGF0aW9uUmVzdWx0LCBDZWxsRXZlbnQgfSBmcm9tICcuL2NlbGwtdHlwZXMnO1xuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgZm9ybWF0dGluZyBjZWxsIHZhbHVlcyBmb3IgZGlzcGxheVxuICogRm9ybWF0dGVycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxGb3JtYXR0ZXI8VCA9IGFueT4ge1xuICAvKipcbiAgICogRm9ybWF0cyBhIHZhbHVlIGZvciBkaXNwbGF5XG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIEZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICovXG4gIGZvcm1hdCh2YWx1ZTogVCk6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgbWV0aG9kIHRvIGZvcm1hdCB2YWx1ZSB3aXRoIGFkZGl0aW9uYWwgY29udGV4dFxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGZvcm1hdFxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZW50aXJlIHJvdyBkYXRhXG4gICAqIEBwYXJhbSBjb2x1bW5LZXkgVGhlIGNvbHVtbiBrZXlcbiAgICogQHJldHVybnMgRm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgZm9ybWF0V2l0aENvbnRleHQ/KHZhbHVlOiBULCByb3dEYXRhOiBhbnksIGNvbHVtbktleTogc3RyaW5nKTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgdmFsaWRhdGluZyBjZWxsIHZhbHVlc1xuICogVmFsaWRhdG9ycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxWYWxpZGF0b3I8VCA9IGFueT4ge1xuICAvKipcbiAgICogVmFsaWRhdGVzIGEgY2VsbCB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIFZhbGlkYXRpb24gcmVzdWx0IHdpdGggc3VjY2VzcyBmbGFnIGFuZCBvcHRpb25hbCBlcnJvciBtZXNzYWdlc1xuICAgKi9cbiAgdmFsaWRhdGUodmFsdWU6IFQpOiBWYWxpZGF0aW9uUmVzdWx0O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRob2QgdG8gdmFsaWRhdGUgd2l0aCBhZGRpdGlvbmFsIGNvbnRleHRcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZW50aXJlIHJvdyBkYXRhXG4gICAqIEBwYXJhbSBjb2x1bW5LZXkgVGhlIGNvbHVtbiBrZXlcbiAgICogQHJldHVybnMgVmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIHZhbGlkYXRlV2l0aENvbnRleHQ/KHZhbHVlOiBULCByb3dEYXRhOiBhbnksIGNvbHVtbktleTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZXJyb3IgbWVzc2FnZSB0ZW1wbGF0ZVxuICAgKi9cbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVkaXRvciBjb250ZXh0IHByb3ZpZGVkIHRvIGNlbGwgZWRpdG9yc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxFZGl0b3JDb250ZXh0PFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIEN1cnJlbnQgY2VsbCB2YWx1ZVxuICAgKi9cbiAgdmFsdWU6IFQ7XG5cbiAgLyoqXG4gICAqIFJvdyBkYXRhIGNvbnRleHRcbiAgICovXG4gIHJvd0RhdGE/OiBhbnk7XG5cbiAgLyoqXG4gICAqIENvbHVtbiBrZXlcbiAgICovXG4gIGNvbHVtbktleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSb3cgaW5kZXhcbiAgICovXG4gIHJvd0luZGV4PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIHZhbHVlIGNoYW5nZXNcbiAgICovXG4gIG9uQ2hhbmdlOiAobmV3VmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIHNhdmUgdGhlIGVkaXRlZCB2YWx1ZVxuICAgKi9cbiAgb25TYXZlOiAobmV3VmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGNhbmNlbCBlZGl0aW5nXG4gICAqL1xuICBvbkNhbmNlbDogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGVsZW1lbnQgZm9yIHRoZSBlZGl0b3JcbiAgICovXG4gIGNvbnRhaW5lcj86IEhUTUxFbGVtZW50O1xufVxuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgaGFuZGxpbmcgaW5saW5lIGNlbGwgZWRpdGluZ1xuICogRWRpdG9ycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxFZGl0b3I8VCA9IGFueT4ge1xuICAvKipcbiAgICogV2hldGhlciB0aGlzIGVkaXRvciBzaG91bGQgcmVjZWl2ZSB0aGUgaW5pdGlhbCBrZXlwcmVzcyBjaGFyYWN0ZXJcbiAgICogd2hlbiBzdGFydGluZyBlZGl0IG1vZGUgdmlhIGtleWJvYXJkLlxuICAgKiAtIHRydWUgKGRlZmF1bHQpOiBJbml0aWFsIGtleXByZXNzIGNoYXJhY3RlciBiZWNvbWVzIHRoZSBzdGFydGluZyB2YWx1ZVxuICAgKiAtIGZhbHNlOiBJbml0aWFsIGtleXByZXNzIGp1c3QgdHJpZ2dlcnMgZWRpdCBtb2RlLCBjaGFyYWN0ZXIgaXMgaWdub3JlZFxuICAgKi9cbiAgYWNjZXB0c0luaXRpYWxLZXlwcmVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgYW5kIHJlbmRlciB0aGUgZWRpdG9yXG4gICAqIEBwYXJhbSBjb250ZXh0IEVkaXRvciBjb250ZXh0IHdpdGggdmFsdWUsIGNhbGxiYWNrcywgYW5kIGNvbnRhaW5lclxuICAgKi9cbiAgZWRpdChjb250ZXh0OiBDZWxsRWRpdG9yQ29udGV4dDxUPik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNsZWFudXAgd2hlbiBlZGl0b3IgaXMgZGVzdHJveWVkXG4gICAqL1xuICBkZXN0cm95PygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRob2QgdG8gZm9jdXMgdGhlIGVkaXRvclxuICAgKi9cbiAgZm9jdXM/KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1ldGhvZCB0byBnZXQgY3VycmVudCBlZGl0b3IgdmFsdWUgd2l0aG91dCBzYXZpbmdcbiAgICovXG4gIGdldEN1cnJlbnRWYWx1ZT8oKTogVDtcbn1cblxuLyoqXG4gKiBQYXJzZXIgaW50ZXJmYWNlIGZvciBjb252ZXJ0aW5nIHVzZXIgaW5wdXQgdG8gdHlwZWQgdmFsdWVzXG4gKiBVc2VkIGJ5IGVkaXRvcnMgdG8gY29udmVydCBzdHJpbmcgaW5wdXQgdG8gcHJvcGVyIGRhdGEgdHlwZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZWxsUGFyc2VyPFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIFBhcnNlIHVzZXIgaW5wdXQgdG8gdHlwZWQgdmFsdWVcbiAgICogQHBhcmFtIGlucHV0IFVzZXIgaW5wdXQgKHVzdWFsbHkgc3RyaW5nKVxuICAgKiBAcmV0dXJucyBQYXJzZWQgdHlwZWQgdmFsdWVcbiAgICovXG4gIHBhcnNlKGlucHV0OiBhbnkpOiBUO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRob2QgdG8gY2hlY2sgaWYgaW5wdXQgY2FuIGJlIHBhcnNlZFxuICAgKiBAcGFyYW0gaW5wdXQgVXNlciBpbnB1dFxuICAgKiBAcmV0dXJucyBUcnVlIGlmIGlucHV0IGNhbiBiZSBwYXJzZWRcbiAgICovXG4gIGNhblBhcnNlPyhpbnB1dDogYW55KTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb21wb3NpdGUgdmFsaWRhdG9yIHRoYXQgY2hhaW5zIG11bHRpcGxlIHZhbGlkYXRvcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb3NpdGVWYWxpZGF0b3I8VCA9IGFueT4gZXh0ZW5kcyBDZWxsVmFsaWRhdG9yPFQ+IHtcbiAgLyoqXG4gICAqIEFkZCBhIHZhbGlkYXRvciB0byB0aGUgY2hhaW5cbiAgICovXG4gIGFkZFZhbGlkYXRvcih2YWxpZGF0b3I6IENlbGxWYWxpZGF0b3I8VD4pOiB0aGlzO1xuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHZhbGlkYXRvcnMgaW4gdGhlIGNoYWluXG4gICAqL1xuICBnZXRWYWxpZGF0b3JzKCk6IENlbGxWYWxpZGF0b3I8VD5bXTtcbn1cblxuLyoqXG4gKiBFdmVudCBoYW5kbGVyIHR5cGVzIGZvciBjZWxsIGxpZmVjeWNsZSBldmVudHNcbiAqL1xuZXhwb3J0IHR5cGUgQ2VsbEV2ZW50SGFuZGxlcjxUID0gYW55PiA9IChldmVudDogQ2VsbEV2ZW50PFQ+KSA9PiB2b2lkO1xuXG4vKipcbiAqIENlbGwgbGlmZWN5Y2xlIGhvb2tzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbExpZmVjeWNsZUhvb2tzPFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgZWRpdGluZyBzdGFydHNcbiAgICovXG4gIGJlZm9yZUVkaXQ/OiBDZWxsRXZlbnRIYW5kbGVyPFQ+O1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBlZGl0IG1vZGUgaXMgZW50ZXJlZFxuICAgKi9cbiAgb25FZGl0PzogQ2VsbEV2ZW50SGFuZGxlcjxUPjtcblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGVkaXQgbW9kZSBpcyBleGl0ZWRcbiAgICovXG4gIGFmdGVyRWRpdD86IENlbGxFdmVudEhhbmRsZXI8VD47XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgdmFsdWUgaXMgc2F2ZWRcbiAgICovXG4gIGJlZm9yZVNhdmU/OiBDZWxsRXZlbnRIYW5kbGVyPFQ+O1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgdmFsdWUgaXMgc2F2ZWRcbiAgICovXG4gIG9uU2F2ZT86IENlbGxFdmVudEhhbmRsZXI8VD47XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGVkaXQgaXMgY2FuY2VsbGVkXG4gICAqL1xuICBvbkNhbmNlbD86IENlbGxFdmVudEhhbmRsZXI8VD47XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHZhbGlkYXRpb24gZmFpbHNcbiAgICovXG4gIG9uVmFsaWRhdGlvbkVycm9yPzogQ2VsbEV2ZW50SGFuZGxlcjxUPjtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gY2VsbCB2YWx1ZSBjaGFuZ2VzXG4gICAqL1xuICBvbkNoYW5nZT86IENlbGxFdmVudEhhbmRsZXI8VD47XG59XG5cbiJdfQ==
@@ -155,12 +155,18 @@ export class StCellComponent {
155
155
  startEditWithKey(key) {
156
156
  const canStart = this.cell.startEdit();
157
157
  if (canStart) {
158
- // Replace current value with the key
159
- this.cell.setValue(key, false);
160
158
  const column = this.cell.getColumnConfig();
159
+ const editor = column.editor;
160
+ // Only set initial keypress value if editor accepts it
161
+ // Default to true for backward compatibility with existing editors
162
+ const acceptsKeypress = editor?.acceptsInitialKeypress !== false;
163
+ if (acceptsKeypress) {
164
+ // Replace current value with the key
165
+ this.cell.setValue(key, false);
166
+ }
161
167
  const editEvent = {
162
168
  cell: this.cell,
163
- value: key,
169
+ value: acceptsKeypress ? key : this.cell.getValue(),
164
170
  rowData: this.cell.getRowData(),
165
171
  columnKey: column.key,
166
172
  rowIndex: this.cell.getRowIndex(),
@@ -357,10 +363,10 @@ export class StCellComponent {
357
363
  }
358
364
  }
359
365
  StCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
360
- StCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StCellComponent, selector: "st-cell", inputs: { cell: "cell", editMode: "editMode", tableState: "tableState", tableConfig: "tableConfig", columnIndex: "columnIndex" }, outputs: { cellChange: "cellChange", cellEdit: "cellEdit", cellSave: "cellSave", cellCancel: "cellCancel", cellSaveAndNavigate: "cellSaveAndNavigate" }, host: { listeners: { "keydown": "onCellKeyDown($event)" } }, viewQueries: [{ propertyName: "editorContainer", first: true, predicate: ["editorContainer"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"st-cell\" \n [ngClass]=\"{\n 'editing': cell.isEditing(),\n 'dirty': cell.isDirty(),\n 'invalid': !cell.isValid(),\n 'readonly': !isEditable\n }\"\n (click)=\"onCellClick()\" \n (dblclick)=\"onCellDoubleClick()\">\n\n <!-- Display Mode with Template Support -->\n <ng-container *ngIf=\"!cell.isEditing()\">\n <!-- Custom Template -->\n <ng-container *ngIf=\"hasCellTemplate\">\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: templateContext\"></ng-container>\n </ng-container>\n\n <!-- Default Text Rendering -->\n <span *ngIf=\"!hasCellTemplate\" class=\"cell-display\">\n {{ cell.render() }}\n </span>\n </ng-container>\n\n <!-- Edit Mode -->\n <div *ngIf=\"cell.isEditing()\" class=\"cell-editor\" #editorContainer>\n </div>\n</div>", styles: [".st-cell{position:relative;cursor:pointer;transition:background-color .2s;min-height:28px;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;box-sizing:border-box}.st-cell.invalid{border-left:2px solid #e53e3e}.st-cell.readonly{cursor:default}.cell-display{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;align-content:center;width:100%;height:100%;padding-left:4px;font-size:12px;font-weight:300;letter-spacing:.2px;line-height:14px}.cell-editor{display:flex;height:100%;width:100%}.cell-editor input,.cell-editor select,.cell-editor textarea{width:100%;border:none;outline:none;font:inherit;padding:0;background:transparent;color:inherit}.cell-editor input[type=number]{text-align:inherit}.cell-error{position:absolute;right:4px;top:50%;transform:translateY(-50%);color:#e53e3e;font-weight:700;cursor:help;font-size:14px}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
366
+ StCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StCellComponent, selector: "st-cell", inputs: { cell: "cell", editMode: "editMode", tableState: "tableState", tableConfig: "tableConfig", columnIndex: "columnIndex" }, outputs: { cellChange: "cellChange", cellEdit: "cellEdit", cellSave: "cellSave", cellCancel: "cellCancel", cellSaveAndNavigate: "cellSaveAndNavigate" }, host: { listeners: { "keydown": "onCellKeyDown($event)" } }, viewQueries: [{ propertyName: "editorContainer", first: true, predicate: ["editorContainer"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"st-cell\" \n [ngClass]=\"{\n 'editing': cell.isEditing(),\n 'dirty': cell.isDirty(),\n 'invalid': !cell.isValid(),\n 'readonly': !isEditable\n }\"\n (click)=\"onCellClick()\" \n (dblclick)=\"onCellDoubleClick()\">\n\n <!-- Display Mode with Template Support -->\n <ng-container *ngIf=\"!cell.isEditing()\">\n <!-- Custom Template -->\n <ng-container *ngIf=\"hasCellTemplate\">\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: templateContext\"></ng-container>\n </ng-container>\n\n <!-- Default Text Rendering -->\n <span *ngIf=\"!hasCellTemplate\" class=\"cell-display\">\n {{ cell.render() }}\n </span>\n </ng-container>\n\n <!-- Edit Mode -->\n <div *ngIf=\"cell.isEditing()\" class=\"cell-editor\" #editorContainer>\n </div>\n</div>", styles: [".st-cell{position:relative;cursor:pointer;transition:background-color .2s;min-height:28px;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;box-sizing:border-box}.st-cell.invalid{border-left:2px solid #e53e3e}.st-cell.readonly{cursor:default}.cell-display{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;align-content:center;width:100%;height:100%;padding-left:8px;padding-right:8px;font-size:12px;font-weight:300;letter-spacing:.2px;line-height:14px}.cell-editor{display:flex;height:100%;width:100%}.cell-editor input,.cell-editor select,.cell-editor textarea{width:100%;border:none;outline:none;font:inherit;padding:0;background:transparent;color:inherit}.cell-editor input[type=number]{text-align:inherit}.cell-error{position:absolute;right:4px;top:50%;transform:translateY(-50%);color:#e53e3e;font-weight:700;cursor:help;font-size:14px}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
361
367
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StCellComponent, decorators: [{
362
368
  type: Component,
363
- args: [{ selector: 'st-cell', template: "<div class=\"st-cell\" \n [ngClass]=\"{\n 'editing': cell.isEditing(),\n 'dirty': cell.isDirty(),\n 'invalid': !cell.isValid(),\n 'readonly': !isEditable\n }\"\n (click)=\"onCellClick()\" \n (dblclick)=\"onCellDoubleClick()\">\n\n <!-- Display Mode with Template Support -->\n <ng-container *ngIf=\"!cell.isEditing()\">\n <!-- Custom Template -->\n <ng-container *ngIf=\"hasCellTemplate\">\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: templateContext\"></ng-container>\n </ng-container>\n\n <!-- Default Text Rendering -->\n <span *ngIf=\"!hasCellTemplate\" class=\"cell-display\">\n {{ cell.render() }}\n </span>\n </ng-container>\n\n <!-- Edit Mode -->\n <div *ngIf=\"cell.isEditing()\" class=\"cell-editor\" #editorContainer>\n </div>\n</div>", styles: [".st-cell{position:relative;cursor:pointer;transition:background-color .2s;min-height:28px;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;box-sizing:border-box}.st-cell.invalid{border-left:2px solid #e53e3e}.st-cell.readonly{cursor:default}.cell-display{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;align-content:center;width:100%;height:100%;padding-left:4px;font-size:12px;font-weight:300;letter-spacing:.2px;line-height:14px}.cell-editor{display:flex;height:100%;width:100%}.cell-editor input,.cell-editor select,.cell-editor textarea{width:100%;border:none;outline:none;font:inherit;padding:0;background:transparent;color:inherit}.cell-editor input[type=number]{text-align:inherit}.cell-error{position:absolute;right:4px;top:50%;transform:translateY(-50%);color:#e53e3e;font-weight:700;cursor:help;font-size:14px}\n"] }]
369
+ args: [{ selector: 'st-cell', template: "<div class=\"st-cell\" \n [ngClass]=\"{\n 'editing': cell.isEditing(),\n 'dirty': cell.isDirty(),\n 'invalid': !cell.isValid(),\n 'readonly': !isEditable\n }\"\n (click)=\"onCellClick()\" \n (dblclick)=\"onCellDoubleClick()\">\n\n <!-- Display Mode with Template Support -->\n <ng-container *ngIf=\"!cell.isEditing()\">\n <!-- Custom Template -->\n <ng-container *ngIf=\"hasCellTemplate\">\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: templateContext\"></ng-container>\n </ng-container>\n\n <!-- Default Text Rendering -->\n <span *ngIf=\"!hasCellTemplate\" class=\"cell-display\">\n {{ cell.render() }}\n </span>\n </ng-container>\n\n <!-- Edit Mode -->\n <div *ngIf=\"cell.isEditing()\" class=\"cell-editor\" #editorContainer>\n </div>\n</div>", styles: [".st-cell{position:relative;cursor:pointer;transition:background-color .2s;min-height:28px;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;box-sizing:border-box}.st-cell.invalid{border-left:2px solid #e53e3e}.st-cell.readonly{cursor:default}.cell-display{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;align-content:center;width:100%;height:100%;padding-left:8px;padding-right:8px;font-size:12px;font-weight:300;letter-spacing:.2px;line-height:14px}.cell-editor{display:flex;height:100%;width:100%}.cell-editor input,.cell-editor select,.cell-editor textarea{width:100%;border:none;outline:none;font:inherit;padding:0;background:transparent;color:inherit}.cell-editor input[type=number]{text-align:inherit}.cell-error{position:absolute;right:4px;top:50%;transform:translateY(-50%);color:#e53e3e;font-weight:700;cursor:help;font-size:14px}\n"] }]
364
370
  }], ctorParameters: function () { return []; }, propDecorators: { cell: [{
365
371
  type: Input
366
372
  }], editMode: [{
@@ -388,4 +394,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
388
394
  type: HostListener,
389
395
  args: ['keydown', ['$event']]
390
396
  }] } });
391
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL3JlbmRlcmVyL2NvbXBvbmVudHMvc3QtY2VsbC9zdC1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1jZWxsL3N0LWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBOEIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNKLE9BQU8sRUFBa0UsUUFBUSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFTMUosTUFBTSxPQUFPLGVBQWU7SUFtQjFCO1FBakJTLGFBQVEsR0FBYSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBS25DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNqRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDN0MsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQzdDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNqRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBMEQsQ0FBQztJQVN4RyxDQUFDO0lBRUosUUFBUTtRQUNOLHdDQUF3QztRQUN4Qyw2RUFBNkU7UUFDN0UsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ3JELElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxRQUFR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QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBUZW1wbGF0ZVJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZWxsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NlbGwuY2xhc3MnO1xuaW1wb3J0IHsgQ2VsbEVkaXRvckNvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDZWxsRWRpdEV2ZW50LCBDZWxsU2F2ZUV2ZW50LCBDZWxsQ2hhbmdlRXZlbnQsIENlbGxDYW5jZWxFdmVudCwgRWRpdE1vZGUsIE5hdmlnYXRpb25LZXksIE5hdmlnYXRpb25EaXJlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY2VsbC10eXBlcyc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLXN0YXRlLmNsYXNzJztcbmltcG9ydCB7IFRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RhYmxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdC1jZWxsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0LWNlbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdC1jZWxsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFN0Q2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY2VsbCE6IENlbGw8YW55PjtcbiAgQElucHV0KCkgZWRpdE1vZGU6IEVkaXRNb2RlID0gRWRpdE1vZGUuQ0xJQ0s7XG4gIEBJbnB1dCgpIHRhYmxlU3RhdGU/OiBUYWJsZVN0YXRlO1xuICBASW5wdXQoKSB0YWJsZUNvbmZpZz86IFRhYmxlQ29uZmlnO1xuICBASW5wdXQoKSBjb2x1bW5JbmRleD86IG51bWJlcjtcbiAgXG4gIEBPdXRwdXQoKSBjZWxsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsQ2hhbmdlRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjZWxsRWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbEVkaXRFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNlbGxTYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsU2F2ZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2VsbENhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENhbmNlbEV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2VsbFNhdmVBbmROYXZpZ2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8e2V2ZW50OiBLZXlib2FyZEV2ZW50LCBkaXJlY3Rpb246IE5hdmlnYXRpb25EaXJlY3Rpb259PigpO1xuICBcbiAgQFZpZXdDaGlsZCgnZWRpdG9yQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGVkaXRvckNvbnRhaW5lcj86IEVsZW1lbnRSZWY7XG4gIFxuICBwcml2YXRlIGVkaXRvckNsZWFudXA/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgZWRpdGluZ1Bvc2l0aW9uU3Vic2NyaXB0aW9uPzogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gU3Vic2NyaWJlIHRvIGVkaXRpbmcgcG9zaXRpb24gY2hhbmdlc1xuICAgIC8vIFdoZW4gYW5vdGhlciBjZWxsIHN0YXJ0cyBlZGl0aW5nLCBzYXZlIHRoaXMgY2VsbCBpZiBpdCdzIGN1cnJlbnRseSBlZGl0aW5nXG4gICAgaWYgKHRoaXMudGFibGVTdGF0ZSAmJiB0aGlzLmNvbHVtbkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZWRpdGluZ1Bvc2l0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy50YWJsZVN0YXRlLmVkaXRpbmdDZWxsUG9zaXRpb24kLnN1YnNjcmliZShwb3NpdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gdGhpcy5jZWxsLmdldFJvd0luZGV4KCk7XG4gICAgICAgIFxuICAgICAgICAvLyBJZiB0aGlzIGNlbGwgaXMgY3VycmVudGx5IGVkaXRpbmdcbiAgICAgICAgaWYgKHRoaXMuY2VsbC5pc0VkaXRpbmcoKSAmJiByb3dJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gQW5kIHRoZSBuZXcgZWRpdGluZyBwb3NpdGlvbiBpcyBhIGRpZmZlcmVudCBjZWxsXG4gICAgICAgICAgaWYgKHBvc2l0aW9uICYmIFxuICAgICAgICAgICAgICAocG9zaXRpb24ucm93SW5kZXggIT09IHJvd0luZGV4IHx8IHBvc2l0aW9uLmNvbHVtbkluZGV4ICE9PSB0aGlzLmNvbHVtbkluZGV4KSkge1xuICAgICAgICAgICAgLy8gRm9yY2Ugc2F2ZSB0aGlzIGNlbGxcbiAgICAgICAgICAgIHRoaXMuc2F2ZUVkaXQodGhpcy5jZWxsLmdldFZhbHVlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIElmIGNlbGwgaXMgYWxyZWFkeSBpbiBlZGl0aW5nIG1vZGUsIHJlbmRlciB0aGUgZWRpdG9yXG4gICAgaWYgKHRoaXMuY2VsbC5pc0VkaXRpbmcoKSAmJiB0aGlzLmVkaXRvckNvbnRhaW5lcikge1xuICAgICAgdGhpcy5yZW5kZXJFZGl0b3IoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXBFZGl0b3IoKTtcbiAgICBcbiAgICAvLyBVbnN1YnNjcmliZSBmcm9tIGVkaXRpbmcgcG9zaXRpb24gY2hhbmdlc1xuICAgIGlmICh0aGlzLmVkaXRpbmdQb3NpdGlvblN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5lZGl0aW5nUG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNFZGl0YWJsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgcmV0dXJuIGNvbmZpZy5lZGl0YWJsZSA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCB2YWxpZGF0aW9uRXJyb3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBSZWFkIHZhbGlkYXRpb24gc3RhdGUgd2l0aG91dCB0cmlnZ2VyaW5nIHZhbGlkYXRpb25cbiAgICAvLyBUaGlzIHByZXZlbnRzIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuY2VsbC5nZXRTdGF0ZSgpO1xuICAgIFxuICAgIGlmIChzdGF0ZS5lcnJvcikge1xuICAgICAgcmV0dXJuIHN0YXRlLmVycm9yO1xuICAgIH1cbiAgICBcbiAgICBpZiAoc3RhdGUuZXJyb3JzICYmIEFycmF5LmlzQXJyYXkoc3RhdGUuZXJyb3JzKSAmJiBzdGF0ZS5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHN0YXRlLmVycm9ycy5qb2luKCcsICcpO1xuICAgIH1cbiAgICBcbiAgICAvLyBPbmx5IHJldHVybiBnZW5lcmljIG1lc3NhZ2UgaWYgY2VsbCBpcyBtYXJrZWQgYXMgaW52YWxpZFxuICAgIGlmICghdGhpcy5jZWxsLmlzVmFsaWQoKSkge1xuICAgICAgcmV0dXJuICdJbnZhbGlkIHZhbHVlJztcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBoYXNDZWxsVGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jZWxsLmdldENvbHVtbkNvbmZpZygpO1xuICAgIHJldHVybiAhIWNvbmZpZy5jZWxsVGVtcGxhdGU7XG4gIH1cblxuICBnZXQgY2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jZWxsLmdldENvbHVtbkNvbmZpZygpLmNlbGxUZW1wbGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHRlbXBsYXRlQ29udGV4dCgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAkaW1wbGljaXQ6IHRoaXMuY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgY2VsbDogdGhpcy5jZWxsLFxuICAgICAgcm93RGF0YTogdGhpcy5jZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgIHJvd0luZGV4OiB0aGlzLmNlbGwuZ2V0Um93SW5kZXgoKVxuICAgIH07XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25DZWxsS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8vIE9ubHkgaGFuZGxlIGlmIHRoaXMgY2VsbCBpcyBmb2N1c2VkXG4gICAgaWYgKCF0aGlzLmNlbGwuaXNGb2N1c2VkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gVXNlIE5hdmlnYXRpb25LZXkgZW51bSBmb3IgdHlwZS1zYWZlIGtleSBjaGVja2luZ1xuICAgIHN3aXRjaCAoZXZlbnQua2V5IGFzIE5hdmlnYXRpb25LZXkpIHtcbiAgICAgIGNhc2UgTmF2aWdhdGlvbktleS5FTlRFUjpcbiAgICAgICAgaWYgKHRoaXMuY2VsbC5pc0VkaXRpbmcoKSkge1xuICAgICAgICAgIC8vIFNhdmUgYW5kIGxldCBuYXZpZ2F0aW9uIGhhcHBlblxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5zYXZlRWRpdCh0aGlzLmNlbGwuZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgLy8gRW1pdCBldmVudCB0byB0cmlnZ2VyIG5hdmlnYXRpb24gZG93blxuICAgICAgICAgIHRoaXMuY2VsbFNhdmVBbmROYXZpZ2F0ZS5lbWl0KHsgZXZlbnQsIGRpcmVjdGlvbjogTmF2aWdhdGlvbkRpcmVjdGlvbi5ET1dOIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG5vdCBlZGl0aW5nLCBsZXQgZGlyZWN0aXZlIGhhbmRsZSBuYXZpZ2F0aW9uXG4gICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgIGNhc2UgTmF2aWdhdGlvbktleS5UQUI6XG4gICAgICAgIGlmICh0aGlzLmNlbGwuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICAvLyBTYXZlIGFuZCBsZXQgbmF2aWdhdGlvbiBoYXBwZW5cbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuc2F2ZUVkaXQodGhpcy5jZWxsLmdldFZhbHVlKCkpO1xuICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGV2ZW50LnNoaWZ0S2V5ID8gTmF2aWdhdGlvbkRpcmVjdGlvbi5MRUZUIDogTmF2aWdhdGlvbkRpcmVjdGlvbi5SSUdIVDtcbiAgICAgICAgICB0aGlzLmNlbGxTYXZlQW5kTmF2aWdhdGUuZW1pdCh7IGV2ZW50LCBkaXJlY3Rpb24gfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgbm90IGVkaXRpbmcsIGxldCBkaXJlY3RpdmUgaGFuZGxlIG5hdmlnYXRpb25cbiAgICAgICAgYnJlYWs7XG4gICAgICAgIFxuICAgICAgY2FzZSBOYXZpZ2F0aW9uS2V5LkVTQ0FQRTpcbiAgICAgICAgaWYgKHRoaXMuY2VsbC5pc0VkaXRpbmcoKSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICAgICAgLy8gU3RheSBmb2N1c2VkIG9uIHNhbWUgY2VsbCAobm8gbmF2aWdhdGlvbilcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBDaGVjayBmb3IgYWxwaGFudW1lcmljIGtleXMgd2hlbiBmb2N1c2VkIGJ1dCBub3QgZWRpdGluZ1xuICAgICAgICBpZiAoIXRoaXMuY2VsbC5pc0VkaXRpbmcoKSAmJiB0aGlzLmlzQWxwaGFudW1lcmljS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGlmICh0aGlzLmNhbkVkaXRWaWFLZXlib2FyZCgpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAvLyBTdGFydCBlZGl0aW5nIHdpdGggdGhlIHByZXNzZWQga2V5IGFzIGluaXRpYWwgdmFsdWVcbiAgICAgICAgICAgIHRoaXMuc3RhcnRFZGl0V2l0aEtleShldmVudC5rZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBFbnRlciBrZXkgY2FuIHRyaWdnZXIgZWRpdGluZ1xuICAgKiBVc2luZyBFZGl0TW9kZSBlbnVtIHZhbHVlc1xuICAgKi9cbiAgcHJpdmF0ZSBjYW5FZGl0VmlhRW50ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFZGl0YWJsZSAmJiBcbiAgICAgICAgICAgKHRoaXMuZWRpdE1vZGUgPT09IEVkaXRNb2RlLkVOVEVSIHx8IHRoaXMuZWRpdE1vZGUgPT09IEVkaXRNb2RlLkNMSUNLKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENoZWNrIGlmIGtleWJvYXJkIGNhbiB0cmlnZ2VyIGVkaXRpbmcgKGZvciBhbHBoYW51bWVyaWMgYW5kIGRvdWJsZS1jbGljaylcbiAgICovXG4gIHByaXZhdGUgY2FuRWRpdFZpYUtleWJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRWRpdGFibGUgJiYgXG4gICAgICAgICAgICh0aGlzLmVkaXRNb2RlID09PSBFZGl0TW9kZS5FTlRFUiB8fCB0aGlzLmVkaXRNb2RlID09PSBFZGl0TW9kZS5DTElDSyk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGtleSBpcyBhbHBoYW51bWVyaWMgKHNpbmdsZSBjaGFyYWN0ZXIpXG4gICAqL1xuICBwcml2YXRlIGlzQWxwaGFudW1lcmljS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgLy8gU2luZ2xlIGNoYXJhY3RlciBrZXlzIChsZXR0ZXJzLCBudW1iZXJzLCBzeW1ib2xzKVxuICAgIHJldHVybiBldmVudC5rZXkubGVuZ3RoID09PSAxICYmICFldmVudC5jdHJsS2V5ICYmICFldmVudC5tZXRhS2V5ICYmICFldmVudC5hbHRLZXk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTdGFydCBlZGl0aW5nIHdpdGggYSBzcGVjaWZpYyBrZXkgYXMgdGhlIGluaXRpYWwgdmFsdWVcbiAgICovXG4gIHByaXZhdGUgc3RhcnRFZGl0V2l0aEtleShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNhblN0YXJ0ID0gdGhpcy5jZWxsLnN0YXJ0RWRpdCgpO1xuICAgIGlmIChjYW5TdGFydCkge1xuICAgICAgLy8gUmVwbGFjZSBjdXJyZW50IHZhbHVlIHdpdGggdGhlIGtleVxuICAgICAgdGhpcy5jZWxsLnNldFZhbHVlKGtleSwgZmFsc2UpO1xuICAgICAgXG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgICBjb25zdCBlZGl0RXZlbnQ6IENlbGxFZGl0RXZlbnQgPSB7XG4gICAgICAgIGNlbGw6IHRoaXMuY2VsbCxcbiAgICAgICAgdmFsdWU6IGtleSxcbiAgICAgICAgcm93RGF0YTogdGhpcy5jZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgICAgY29sdW1uS2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICByb3dJbmRleDogdGhpcy5jZWxsLmdldFJvd0luZGV4KCksXG4gICAgICAgIGNlbGxTdGF0ZTogdGhpcy5jZWxsLmdldFN0YXRlKClcbiAgICAgIH07XG4gICAgICB0aGlzLmNlbGxFZGl0LmVtaXQoZWRpdEV2ZW50KTtcbiAgICAgIFxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyRWRpdG9yKCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBvbkNlbGxDbGljaygpOiB2b2lkIHtcbiAgICAvLyBTaW5nbGUgY2xpY2sgbm93IG9ubHkgZm9jdXNlcywgZG9lc24ndCBzdGFydCBlZGl0aW5nXG4gICAgLy8gRm9jdXMgaXMgaGFuZGxlZCBieSBwYXJlbnQgc3QtdGFibGUgY29tcG9uZW50XG4gIH1cblxuICBvbkNlbGxEb3VibGVDbGljaygpOiB2b2lkIHtcbiAgICAvLyBEb3VibGUtY2xpY2sgc3RhcnRzIGVkaXRpbmcgcmVnYXJkbGVzcyBvZiBFZGl0TW9kZSAoRXhjZWwtbGlrZSBiZWhhdmlvcilcbiAgICBpZiAodGhpcy5pc0VkaXRhYmxlICYmICF0aGlzLmNlbGwuaXNFZGl0aW5nKCkpIHtcbiAgICAgIHRoaXMuc3RhcnRFZGl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydEVkaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY2FuU3RhcnQgPSB0aGlzLmNlbGwuc3RhcnRFZGl0KCk7XG4gICAgaWYgKGNhblN0YXJ0KSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgICBcbiAgICAgIC8vIE5vdGlmeSBUYWJsZVN0YXRlIHRoYXQgdGhpcyBjZWxsIGlzIG5vdyBlZGl0aW5nXG4gICAgICBpZiAodGhpcy50YWJsZVN0YXRlICYmIHRoaXMuY29sdW1uSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpO1xuICAgICAgICBpZiAocm93SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMudGFibGVTdGF0ZS5zZXRFZGl0aW5nQ2VsbChyb3dJbmRleCwgdGhpcy5jb2x1bW5JbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3QgZWRpdEV2ZW50OiBDZWxsRWRpdEV2ZW50ID0ge1xuICAgICAgICBjZWxsOiB0aGlzLmNlbGwsXG4gICAgICAgIHZhbHVlOiB0aGlzLmNlbGwuZ2V0VmFsdWUoKSxcbiAgICAgICAgcm93RGF0YTogdGhpcy5jZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgICAgY29sdW1uS2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICByb3dJbmRleDogdGhpcy5jZWxsLmdldFJvd0luZGV4KCksXG4gICAgICAgIGNlbGxTdGF0ZTogdGhpcy5jZWxsLmdldFN0YXRlKClcbiAgICAgIH07XG4gICAgICB0aGlzLmNlbGxFZGl0LmVtaXQoZWRpdEV2ZW50KTtcbiAgICAgIFxuICAgICAgLy8gV2FpdCBmb3IgQW5ndWxhciB0byByZW5kZXIgdGhlIGVkaXRvciBjb250YWluZXJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlckVkaXRvcigpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJFZGl0b3IoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVkaXRvckNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKTtcbiAgICBjb25zdCBlZGl0b3IgPSBjb2x1bW4uZWRpdG9yO1xuICAgIFxuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05vIGVkaXRvciBjb25maWd1cmVkIGZvciBjb2x1bW46JywgY29sdW1uLmtleSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNlbGwuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmVkaXRvckNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgIFxuICAgIC8vIENyZWF0ZSBlZGl0b3IgY29udGV4dFxuICAgIGNvbnN0IGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PGFueT4gPSB7XG4gICAgICB2YWx1ZSxcbiAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICBjb2x1bW5LZXk6IGNvbHVtbi5rZXksXG4gICAgICByb3dJbmRleDogdGhpcy5jZWxsLmdldFJvd0luZGV4KCksXG4gICAgICBvbkNoYW5nZTogKG5ld1ZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgLy8gVHJpZ2dlciBlYWdlciB2YWxpZGF0aW9uIGlmIGVuYWJsZWRcbiAgICAgICAgaWYgKHRoaXMudGFibGVDb25maWc/LnZhbGlkYXRpb24/Lm1vZGUgPT09ICdlYWdlcicpIHtcbiAgICAgICAgICAvLyBVcGRhdGUgY2VsbCB2YWx1ZSB0ZW1wb3JhcmlseSBmb3IgdmFsaWRhdGlvblxuICAgICAgICAgIHRoaXMuY2VsbC5zZXRWYWx1ZShuZXdWYWx1ZSwgdHJ1ZSk7IC8vIHNraXAgdmFsaWRhdGlvbiB0byBhdm9pZCBkb3VibGUgdmFsaWRhdGlvblxuICAgICAgICAgIHRoaXMudHJpZ2dlckVhZ2VyVmFsaWRhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb25TYXZlOiAobmV3VmFsdWU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNhdmVFZGl0KG5ld1ZhbHVlKTtcbiAgICAgIH0sXG4gICAgICBvbkNhbmNlbDogKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbmNlbEVkaXQoKTtcbiAgICAgIH0sXG4gICAgICBjb250YWluZXJcbiAgICB9O1xuICAgIFxuICAgIC8vIENhbGwgZWRpdG9yJ3MgZWRpdCBtZXRob2RcbiAgICBlZGl0b3IuZWRpdChjb250ZXh0KTtcbiAgICBcbiAgICAvLyBTdG9yZSBjbGVhbnVwIGNhbGxiYWNrXG4gICAgdGhpcy5lZGl0b3JDbGVhbnVwID0gKCkgPT4ge1xuICAgICAgaWYgKGVkaXRvci5kZXN0cm95KSB7XG4gICAgICAgIGVkaXRvci5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgICAvLyBDbGVhciBjb250YWluZXJcbiAgICAgIHdoaWxlIChjb250YWluZXIuZmlyc3RDaGlsZCkge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNhdmVFZGl0KG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy5jZWxsLmdldFZhbHVlKCk7XG4gICAgY29uc3Qgd2FzVmFsaWQgPSB0aGlzLmNlbGwuaXNWYWxpZCgpO1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmNlbGwuc2F2ZUVkaXQobmV3VmFsdWUpO1xuICAgIFxuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgICBjb25zdCBjZWxsU3RhdGUgPSB0aGlzLmNlbGwuZ2V0U3RhdGUoKTtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLmNlbGwuaXNWYWxpZCgpO1xuICAgICAgXG4gICAgICAvLyBOb3RpZnkgVGFibGVTdGF0ZSB0aGF0IGVkaXRpbmcgZW5kZWRcbiAgICAgIGlmICh0aGlzLnRhYmxlU3RhdGUpIHtcbiAgICAgICAgdGhpcy50YWJsZVN0YXRlLmNsZWFyRWRpdGluZ0NlbGwoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIFVwZGF0ZSB2YWxpZGF0aW9uIHN0YXRlIChsYXp5IG1vZGUgLSBvbiBzYXZlKVxuICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb25TdGF0ZSgpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBFbWl0IHNhdmUgZXZlbnRcbiAgICAgIGNvbnN0IHNhdmVFdmVudDogQ2VsbFNhdmVFdmVudCA9IHtcbiAgICAgICAgY2VsbDogdGhpcy5jZWxsLFxuICAgICAgICBuZXdWYWx1ZTogbmV3VmFsdWUsXG4gICAgICAgIHByZXZpb3VzVmFsdWU6IHByZXZpb3VzVmFsdWUsXG4gICAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgICBpc1ZhbGlkOiBpc1ZhbGlkLFxuICAgICAgICB2YWxpZGF0aW9uRXJyb3JzOiBjZWxsU3RhdGUuZXJyb3IgPyBbY2VsbFN0YXRlLmVycm9yXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgY2VsbFN0YXRlOiBjZWxsU3RhdGVcbiAgICAgIH07XG4gICAgICB0aGlzLmNlbGxTYXZlLmVtaXQoc2F2ZUV2ZW50KTtcbiAgICAgIFxuICAgICAgLy8gRW1pdCBjaGFuZ2UgZXZlbnRcbiAgICAgIGNvbnN0IGNoYW5nZUV2ZW50OiBDZWxsQ2hhbmdlRXZlbnQgPSB7XG4gICAgICAgIGNlbGw6IHRoaXMuY2VsbCxcbiAgICAgICAgb2xkVmFsdWU6IHByZXZpb3VzVmFsdWUsXG4gICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgcm93RGF0YTogdGhpcy5jZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgICAgY29sdW1uS2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICByb3dJbmRleDogdGhpcy5jZWxsLmdldFJvd0luZGV4KCksXG4gICAgICAgIHdhc1ZhbGlkOiB3YXNWYWxpZCxcbiAgICAgICAgaXNWYWxpZDogaXNWYWxpZCxcbiAgICAgICAgY2VsbFN0YXRlOiBjZWxsU3RhdGVcbiAgICAgIH07XG4gICAgICB0aGlzLmNlbGxDaGFuZ2UuZW1pdChjaGFuZ2VFdmVudCk7XG4gICAgICBcbiAgICAgIHRoaXMuY2xlYW51cEVkaXRvcigpO1xuICAgIH1cbiAgICAvLyBJZiB2YWxpZGF0aW9uIGZhaWxzLCBrZWVwIGVkaXRpbmcgbW9kZVxuICB9XG4gIFxuICAvKipcbiAgICogVXBkYXRlIHZhbGlkYXRpb24gc3RhdGUgaW4gVGFibGVTdGF0ZVxuICAgKiBDYWxsZWQgb24gc2F2ZSAobGF6eSBtb2RlKSBvciBvbiBjaGFuZ2UgKGVhZ2VyIG1vZGUpXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVZhbGlkYXRpb25TdGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFibGVTdGF0ZSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKTtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jZWxsLmlzVmFsaWQoKTtcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuY2VsbC5nZXRTdGF0ZSgpLmVycm9yO1xuICAgIGNvbnN0IHJvd0luZGV4ID0gdGhpcy5jZWxsLmdldFJvd0luZGV4KCk7XG4gICAgXG4gICAgLy8gT25seSB1cGRhdGUgaWYgcm93SW5kZXggaXMgZGVmaW5lZFxuICAgIGlmIChyb3dJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgXG4gICAgdGhpcy50YWJsZVN0YXRlLnVwZGF0ZUNlbGxWYWxpZGF0aW9uKFxuICAgICAgcm93SW5kZXgsXG4gICAgICBjb2x1bW4ua2V5LFxuICAgICAgaXNWYWxpZCxcbiAgICAgIGVycm9yXG4gICAgKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFRyaWdnZXIgZWFnZXIgdmFsaWRhdGlvbiAob24gZXZlcnkgY2hhbmdlKVxuICAgKi9cbiAgcHJpdmF0ZSB0cmlnZ2VyRWFnZXJWYWxpZGF0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50YWJsZVN0YXRlIHx8ICF0aGlzLnRhYmxlQ29uZmlnKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgdmFsaWRhdGlvbk1vZGUgPSB0aGlzLnRhYmxlQ29uZmlnLnZhbGlkYXRpb24/Lm1vZGUgfHwgJ2xhenknO1xuICAgIGlmICh2YWxpZGF0aW9uTW9kZSAhPT0gJ2VhZ2VyJykgcmV0dXJuO1xuICAgIFxuICAgIC8vIFJlLXZhbGlkYXRlIHRoZSBjZWxsXG4gICAgdGhpcy5jZWxsLnZhbGlkYXRlKCk7XG4gICAgXG4gICAgLy8gVXBkYXRlIHZhbGlkYXRpb24gc3RhdGVcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb25TdGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5jZWxFZGl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKTtcbiAgICBjb25zdCBjZWxsU3RhdGUgPSB0aGlzLmNlbGwuZ2V0U3RhdGUoKTtcbiAgICBcbiAgICAvLyBOb3RpZnkgVGFibGVTdGF0ZSB0aGF0IGVkaXRpbmcgZW5kZWRcbiAgICBpZiAodGhpcy50YWJsZVN0YXRlKSB7XG4gICAgICB0aGlzLnRhYmxlU3RhdGUuY2xlYXJFZGl0aW5nQ2VsbCgpO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBjYW5jZWxFdmVudDogQ2VsbENhbmNlbEV2ZW50ID0ge1xuICAgICAgY2VsbDogdGhpcy5jZWxsLFxuICAgICAgdmFsdWU6IHRoaXMuY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgcHJldmlvdXNWYWx1ZTogY2VsbFN0YXRlLnByZXZpb3VzVmFsdWUsXG4gICAgICByb3dEYXRhOiB0aGlzLmNlbGwuZ2V0Um93RGF0YSgpLFxuICAgICAgY29sdW1uS2V5OiBjb2x1bW4ua2V5LFxuICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgY2VsbFN0YXRlOiBjZWxsU3RhdGVcbiAgICB9O1xuICAgIFxuICAgIHRoaXMuY2VsbC5jYW5jZWxFZGl0KCk7XG4gICAgdGhpcy5jZWxsQ2FuY2VsLmVtaXQoY2FuY2VsRXZlbnQpO1xuICAgIHRoaXMuY2xlYW51cEVkaXRvcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwRWRpdG9yKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRvckNsZWFudXApIHtcbiAgICAgIHRoaXMuZWRpdG9yQ2xlYW51cCgpO1xuICAgICAgdGhpcy5lZGl0b3JDbGVhbnVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInN0LWNlbGxcIiBcbiAgW25nQ2xhc3NdPVwie1xuICAgICdlZGl0aW5nJzogY2VsbC5pc0VkaXRpbmcoKSxcbiAgICAnZGlydHknOiBjZWxsLmlzRGlydHkoKSxcbiAgICAnaW52YWxpZCc6ICFjZWxsLmlzVmFsaWQoKSxcbiAgICAncmVhZG9ubHknOiAhaXNFZGl0YWJsZVxuICB9XCJcbiAgKGNsaWNrKT1cIm9uQ2VsbENsaWNrKClcIiBcbiAgKGRibGNsaWNrKT1cIm9uQ2VsbERvdWJsZUNsaWNrKClcIj5cblxuICA8IS0tIERpc3BsYXkgTW9kZSB3aXRoIFRlbXBsYXRlIFN1cHBvcnQgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2VsbC5pc0VkaXRpbmcoKVwiPlxuICAgIDwhLS0gQ3VzdG9tIFRlbXBsYXRlIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNDZWxsVGVtcGxhdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHRlbXBsYXRlQ29udGV4dFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBEZWZhdWx0IFRleHQgUmVuZGVyaW5nIC0tPlxuICAgIDxzcGFuICpuZ0lmPVwiIWhhc0NlbGxUZW1wbGF0ZVwiIGNsYXNzPVwiY2VsbC1kaXNwbGF5XCI+XG4gICAgICB7eyBjZWxsLnJlbmRlcigpIH19XG4gICAgPC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIEVkaXQgTW9kZSAtLT5cbiAgPGRpdiAqbmdJZj1cImNlbGwuaXNFZGl0aW5nKClcIiBjbGFzcz1cImNlbGwtZWRpdG9yXCIgI2VkaXRvckNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
397
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL3JlbmRlcmVyL2NvbXBvbmVudHMvc3QtY2VsbC9zdC1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1jZWxsL3N0LWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBOEIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNKLE9BQU8sRUFBa0UsUUFBUSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFTMUosTUFBTSxPQUFPLGVBQWU7SUFtQjFCO1FBakJTLGFBQVEsR0FBYSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBS25DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNqRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDN0MsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQzdDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNqRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBMEQsQ0FBQztJQVN4RyxDQUFDO0lBRUosUUFBUTtRQUNOLHdDQUF3QztRQUN4Qyw2RUFBNkU7UUFDN0UsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ3JELElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxRQUFR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Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUU2QyxlQUFlO3NCQUFsRSxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkEwRmxELGFBQWE7c0JBRFosWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgVGVtcGxhdGVSZWYsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJy4uLy4uL21vZGVscy9jZWxsLmNsYXNzJztcbmltcG9ydCB7IENlbGxFZGl0b3JDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2VsbEVkaXRFdmVudCwgQ2VsbFNhdmVFdmVudCwgQ2VsbENoYW5nZUV2ZW50LCBDZWxsQ2FuY2VsRXZlbnQsIEVkaXRNb2RlLCBOYXZpZ2F0aW9uS2V5LCBOYXZpZ2F0aW9uRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NlbGwtdHlwZXMnO1xuaW1wb3J0IHsgVGFibGVTdGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBUYWJsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90YWJsZS1jb25maWcuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3QtY2VsbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdC1jZWxsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3QtY2VsbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTdENlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGNlbGwhOiBDZWxsPGFueT47XG4gIEBJbnB1dCgpIGVkaXRNb2RlOiBFZGl0TW9kZSA9IEVkaXRNb2RlLkNMSUNLO1xuICBASW5wdXQoKSB0YWJsZVN0YXRlPzogVGFibGVTdGF0ZTtcbiAgQElucHV0KCkgdGFibGVDb25maWc/OiBUYWJsZUNvbmZpZztcbiAgQElucHV0KCkgY29sdW1uSW5kZXg/OiBudW1iZXI7XG4gIFxuICBAT3V0cHV0KCkgY2VsbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENoYW5nZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2VsbEVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPENlbGxFZGl0RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjZWxsU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbFNhdmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNlbGxDYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPENlbGxDYW5jZWxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNlbGxTYXZlQW5kTmF2aWdhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHtldmVudDogS2V5Ym9hcmRFdmVudCwgZGlyZWN0aW9uOiBOYXZpZ2F0aW9uRGlyZWN0aW9ufT4oKTtcbiAgXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvckNvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBlZGl0b3JDb250YWluZXI/OiBFbGVtZW50UmVmO1xuICBcbiAgcHJpdmF0ZSBlZGl0b3JDbGVhbnVwPzogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIGVkaXRpbmdQb3NpdGlvblN1YnNjcmlwdGlvbj86IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIFN1YnNjcmliZSB0byBlZGl0aW5nIHBvc2l0aW9uIGNoYW5nZXNcbiAgICAvLyBXaGVuIGFub3RoZXIgY2VsbCBzdGFydHMgZWRpdGluZywgc2F2ZSB0aGlzIGNlbGwgaWYgaXQncyBjdXJyZW50bHkgZWRpdGluZ1xuICAgIGlmICh0aGlzLnRhYmxlU3RhdGUgJiYgdGhpcy5jb2x1bW5JbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmVkaXRpbmdQb3NpdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMudGFibGVTdGF0ZS5lZGl0aW5nQ2VsbFBvc2l0aW9uJC5zdWJzY3JpYmUocG9zaXRpb24gPT4ge1xuICAgICAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpO1xuICAgICAgICBcbiAgICAgICAgLy8gSWYgdGhpcyBjZWxsIGlzIGN1cnJlbnRseSBlZGl0aW5nXG4gICAgICAgIGlmICh0aGlzLmNlbGwuaXNFZGl0aW5nKCkgJiYgcm93SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIEFuZCB0aGUgbmV3IGVkaXRpbmcgcG9zaXRpb24gaXMgYSBkaWZmZXJlbnQgY2VsbFxuICAgICAgICAgIGlmIChwb3NpdGlvbiAmJiBcbiAgICAgICAgICAgICAgKHBvc2l0aW9uLnJvd0luZGV4ICE9PSByb3dJbmRleCB8fCBwb3NpdGlvbi5jb2x1bW5JbmRleCAhPT0gdGhpcy5jb2x1bW5JbmRleCkpIHtcbiAgICAgICAgICAgIC8vIEZvcmNlIHNhdmUgdGhpcyBjZWxsXG4gICAgICAgICAgICB0aGlzLnNhdmVFZGl0KHRoaXMuY2VsbC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBJZiBjZWxsIGlzIGFscmVhZHkgaW4gZWRpdGluZyBtb2RlLCByZW5kZXIgdGhlIGVkaXRvclxuICAgIGlmICh0aGlzLmNlbGwuaXNFZGl0aW5nKCkgJiYgdGhpcy5lZGl0b3JDb250YWluZXIpIHtcbiAgICAgIHRoaXMucmVuZGVyRWRpdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwRWRpdG9yKCk7XG4gICAgXG4gICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBlZGl0aW5nIHBvc2l0aW9uIGNoYW5nZXNcbiAgICBpZiAodGhpcy5lZGl0aW5nUG9zaXRpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZWRpdGluZ1Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzRWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jZWxsLmdldENvbHVtbkNvbmZpZygpO1xuICAgIHJldHVybiBjb25maWcuZWRpdGFibGUgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgdmFsaWRhdGlvbkVycm9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gUmVhZCB2YWxpZGF0aW9uIHN0YXRlIHdpdGhvdXQgdHJpZ2dlcmluZyB2YWxpZGF0aW9uXG4gICAgLy8gVGhpcyBwcmV2ZW50cyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmNlbGwuZ2V0U3RhdGUoKTtcbiAgICBcbiAgICBpZiAoc3RhdGUuZXJyb3IpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5lcnJvcjtcbiAgICB9XG4gICAgXG4gICAgaWYgKHN0YXRlLmVycm9ycyAmJiBBcnJheS5pc0FycmF5KHN0YXRlLmVycm9ycykgJiYgc3RhdGUuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBzdGF0ZS5lcnJvcnMuam9pbignLCAnKTtcbiAgICB9XG4gICAgXG4gICAgLy8gT25seSByZXR1cm4gZ2VuZXJpYyBtZXNzYWdlIGlmIGNlbGwgaXMgbWFya2VkIGFzIGludmFsaWRcbiAgICBpZiAoIXRoaXMuY2VsbC5pc1ZhbGlkKCkpIHtcbiAgICAgIHJldHVybiAnSW52YWxpZCB2YWx1ZSc7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgaGFzQ2VsbFRlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKTtcbiAgICByZXR1cm4gISFjb25maWcuY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgZ2V0IGNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKS5jZWxsVGVtcGxhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCB0ZW1wbGF0ZUNvbnRleHQoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgJGltcGxpY2l0OiB0aGlzLmNlbGwuZ2V0VmFsdWUoKSxcbiAgICAgIGNlbGw6IHRoaXMuY2VsbCxcbiAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICByb3dJbmRleDogdGhpcy5jZWxsLmdldFJvd0luZGV4KClcbiAgICB9O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uQ2VsbEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBPbmx5IGhhbmRsZSBpZiB0aGlzIGNlbGwgaXMgZm9jdXNlZFxuICAgIGlmICghdGhpcy5jZWxsLmlzRm9jdXNlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIFVzZSBOYXZpZ2F0aW9uS2V5IGVudW0gZm9yIHR5cGUtc2FmZSBrZXkgY2hlY2tpbmdcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSBhcyBOYXZpZ2F0aW9uS2V5KSB7XG4gICAgICBjYXNlIE5hdmlnYXRpb25LZXkuRU5URVI6XG4gICAgICAgIGlmICh0aGlzLmNlbGwuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICAvLyBTYXZlIGFuZCBsZXQgbmF2aWdhdGlvbiBoYXBwZW5cbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuc2F2ZUVkaXQodGhpcy5jZWxsLmdldFZhbHVlKCkpO1xuICAgICAgICAgIC8vIEVtaXQgZXZlbnQgdG8gdHJpZ2dlciBuYXZpZ2F0aW9uIGRvd25cbiAgICAgICAgICB0aGlzLmNlbGxTYXZlQW5kTmF2aWdhdGUuZW1pdCh7IGV2ZW50LCBkaXJlY3Rpb246IE5hdmlnYXRpb25EaXJlY3Rpb24uRE9XTiB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBub3QgZWRpdGluZywgbGV0IGRpcmVjdGl2ZSBoYW5kbGUgbmF2aWdhdGlvblxuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICBjYXNlIE5hdmlnYXRpb25LZXkuVEFCOlxuICAgICAgICBpZiAodGhpcy5jZWxsLmlzRWRpdGluZygpKSB7XG4gICAgICAgICAgLy8gU2F2ZSBhbmQgbGV0IG5hdmlnYXRpb24gaGFwcGVuXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0aGlzLnNhdmVFZGl0KHRoaXMuY2VsbC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBldmVudC5zaGlmdEtleSA/IE5hdmlnYXRpb25EaXJlY3Rpb24uTEVGVCA6IE5hdmlnYXRpb25EaXJlY3Rpb24uUklHSFQ7XG4gICAgICAgICAgdGhpcy5jZWxsU2F2ZUFuZE5hdmlnYXRlLmVtaXQoeyBldmVudCwgZGlyZWN0aW9uIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG5vdCBlZGl0aW5nLCBsZXQgZGlyZWN0aXZlIGhhbmRsZSBuYXZpZ2F0aW9uXG4gICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgIGNhc2UgTmF2aWdhdGlvbktleS5FU0NBUEU6XG4gICAgICAgIGlmICh0aGlzLmNlbGwuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgICAgIC8vIFN0YXkgZm9jdXNlZCBvbiBzYW1lIGNlbGwgKG5vIG5hdmlnYXRpb24pXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICAgIFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGFscGhhbnVtZXJpYyBrZXlzIHdoZW4gZm9jdXNlZCBidXQgbm90IGVkaXRpbmdcbiAgICAgICAgaWYgKCF0aGlzLmNlbGwuaXNFZGl0aW5nKCkgJiYgdGhpcy5pc0FscGhhbnVtZXJpY0tleShldmVudCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5jYW5FZGl0VmlhS2V5Ym9hcmQoKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgLy8gU3RhcnQgZWRpdGluZyB3aXRoIHRoZSBwcmVzc2VkIGtleSBhcyBpbml0aWFsIHZhbHVlXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RWRpdFdpdGhLZXkoZXZlbnQua2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgRW50ZXIga2V5IGNhbiB0cmlnZ2VyIGVkaXRpbmdcbiAgICogVXNpbmcgRWRpdE1vZGUgZW51bSB2YWx1ZXNcbiAgICovXG4gIHByaXZhdGUgY2FuRWRpdFZpYUVudGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRWRpdGFibGUgJiYgXG4gICAgICAgICAgICh0aGlzLmVkaXRNb2RlID09PSBFZGl0TW9kZS5FTlRFUiB8fCB0aGlzLmVkaXRNb2RlID09PSBFZGl0TW9kZS5DTElDSyk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBrZXlib2FyZCBjYW4gdHJpZ2dlciBlZGl0aW5nIChmb3IgYWxwaGFudW1lcmljIGFuZCBkb3VibGUtY2xpY2spXG4gICAqL1xuICBwcml2YXRlIGNhbkVkaXRWaWFLZXlib2FyZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VkaXRhYmxlICYmIFxuICAgICAgICAgICAodGhpcy5lZGl0TW9kZSA9PT0gRWRpdE1vZGUuRU5URVIgfHwgdGhpcy5lZGl0TW9kZSA9PT0gRWRpdE1vZGUuQ0xJQ0spO1xuICB9XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBrZXkgaXMgYWxwaGFudW1lcmljIChzaW5nbGUgY2hhcmFjdGVyKVxuICAgKi9cbiAgcHJpdmF0ZSBpc0FscGhhbnVtZXJpY0tleShldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIC8vIFNpbmdsZSBjaGFyYWN0ZXIga2V5cyAobGV0dGVycywgbnVtYmVycywgc3ltYm9scylcbiAgICByZXR1cm4gZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuYWx0S2V5O1xuICB9XG4gIFxuICAvKipcbiAgICogU3RhcnQgZWRpdGluZyB3aXRoIGEgc3BlY2lmaWMga2V5IGFzIHRoZSBpbml0aWFsIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHN0YXJ0RWRpdFdpdGhLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjYW5TdGFydCA9IHRoaXMuY2VsbC5zdGFydEVkaXQoKTtcbiAgICBpZiAoY2FuU3RhcnQpIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKTtcbiAgICAgIGNvbnN0IGVkaXRvciA9IGNvbHVtbi5lZGl0b3I7XG4gICAgICBcbiAgICAgIC8vIE9ubHkgc2V0IGluaXRpYWwga2V5cHJlc3MgdmFsdWUgaWYgZWRpdG9yIGFjY2VwdHMgaXRcbiAgICAgIC8vIERlZmF1bHQgdG8gdHJ1ZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGVkaXRvcnNcbiAgICAgIGNvbnN0IGFjY2VwdHNLZXlwcmVzcyA9IGVkaXRvcj8uYWNjZXB0c0luaXRpYWxLZXlwcmVzcyAhPT0gZmFsc2U7XG4gICAgICBcbiAgICAgIGlmIChhY2NlcHRzS2V5cHJlc3MpIHtcbiAgICAgICAgLy8gUmVwbGFjZSBjdXJyZW50IHZhbHVlIHdpdGggdGhlIGtleVxuICAgICAgICB0aGlzLmNlbGwuc2V0VmFsdWUoa2V5LCBmYWxzZSk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGVkaXRFdmVudDogQ2VsbEVkaXRFdmVudCA9IHtcbiAgICAgICAgY2VsbDogdGhpcy5jZWxsLFxuICAgICAgICB2YWx1ZTogYWNjZXB0c0tleXByZXNzID8ga2V5IDogdGhpcy5jZWxsLmdldFZhbHVlKCksXG4gICAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgICBjZWxsU3RhdGU6IHRoaXMuY2VsbC5nZXRTdGF0ZSgpXG4gICAgICB9O1xuICAgICAgdGhpcy5jZWxsRWRpdC5lbWl0KGVkaXRFdmVudCk7XG4gICAgICBcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlckVkaXRvcigpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgb25DZWxsQ2xpY2soKTogdm9pZCB7XG4gICAgLy8gU2luZ2xlIGNsaWNrIG5vdyBvbmx5IGZvY3VzZXMsIGRvZXNuJ3Qgc3RhcnQgZWRpdGluZ1xuICAgIC8vIEZvY3VzIGlzIGhhbmRsZWQgYnkgcGFyZW50IHN0LXRhYmxlIGNvbXBvbmVudFxuICB9XG5cbiAgb25DZWxsRG91YmxlQ2xpY2soKTogdm9pZCB7XG4gICAgLy8gRG91YmxlLWNsaWNrIHN0YXJ0cyBlZGl0aW5nIHJlZ2FyZGxlc3Mgb2YgRWRpdE1vZGUgKEV4Y2VsLWxpa2UgYmVoYXZpb3IpXG4gICAgaWYgKHRoaXMuaXNFZGl0YWJsZSAmJiAhdGhpcy5jZWxsLmlzRWRpdGluZygpKSB7XG4gICAgICB0aGlzLnN0YXJ0RWRpdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRFZGl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNhblN0YXJ0ID0gdGhpcy5jZWxsLnN0YXJ0RWRpdCgpO1xuICAgIGlmIChjYW5TdGFydCkge1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jZWxsLmdldENvbHVtbkNvbmZpZygpO1xuICAgICAgXG4gICAgICAvLyBOb3RpZnkgVGFibGVTdGF0ZSB0aGF0IHRoaXMgY2VsbCBpcyBub3cgZWRpdGluZ1xuICAgICAgaWYgKHRoaXMudGFibGVTdGF0ZSAmJiB0aGlzLmNvbHVtbkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSB0aGlzLmNlbGwuZ2V0Um93SW5kZXgoKTtcbiAgICAgICAgaWYgKHJvd0luZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlU3RhdGUuc2V0RWRpdGluZ0NlbGwocm93SW5kZXgsIHRoaXMuY29sdW1uSW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGVkaXRFdmVudDogQ2VsbEVkaXRFdmVudCA9IHtcbiAgICAgICAgY2VsbDogdGhpcy5jZWxsLFxuICAgICAgICB2YWx1ZTogdGhpcy5jZWxsLmdldFZhbHVlKCksXG4gICAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgICBjZWxsU3RhdGU6IHRoaXMuY2VsbC5nZXRTdGF0ZSgpXG4gICAgICB9O1xuICAgICAgdGhpcy5jZWxsRWRpdC5lbWl0KGVkaXRFdmVudCk7XG4gICAgICBcbiAgICAgIC8vIFdhaXQgZm9yIEFuZ3VsYXIgdG8gcmVuZGVyIHRoZSBlZGl0b3IgY29udGFpbmVyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJFZGl0b3IoKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRWRpdG9yKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5lZGl0b3JDb250YWluZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgY29uc3QgZWRpdG9yID0gY29sdW1uLmVkaXRvcjtcbiAgICBcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgY29uc29sZS53YXJuKCdObyBlZGl0b3IgY29uZmlndXJlZCBmb3IgY29sdW1uOicsIGNvbHVtbi5rZXkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jZWxsLmdldFZhbHVlKCk7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5lZGl0b3JDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBcbiAgICAvLyBDcmVhdGUgZWRpdG9yIGNvbnRleHRcbiAgICBjb25zdCBjb250ZXh0OiBDZWxsRWRpdG9yQ29udGV4dDxhbnk+ID0ge1xuICAgICAgdmFsdWUsXG4gICAgICByb3dEYXRhOiB0aGlzLmNlbGwuZ2V0Um93RGF0YSgpLFxuICAgICAgY29sdW1uS2V5OiBjb2x1bW4ua2V5LFxuICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgb25DaGFuZ2U6IChuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgICAgIC8vIFRyaWdnZXIgZWFnZXIgdmFsaWRhdGlvbiBpZiBlbmFibGVkXG4gICAgICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnPy52YWxpZGF0aW9uPy5tb2RlID09PSAnZWFnZXInKSB7XG4gICAgICAgICAgLy8gVXBkYXRlIGNlbGwgdmFsdWUgdGVtcG9yYXJpbHkgZm9yIHZhbGlkYXRpb25cbiAgICAgICAgICB0aGlzLmNlbGwuc2V0VmFsdWUobmV3VmFsdWUsIHRydWUpOyAvLyBza2lwIHZhbGlkYXRpb24gdG8gYXZvaWQgZG91YmxlIHZhbGlkYXRpb25cbiAgICAgICAgICB0aGlzLnRyaWdnZXJFYWdlclZhbGlkYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uU2F2ZTogKG5ld1ZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zYXZlRWRpdChuZXdWYWx1ZSk7XG4gICAgICB9LFxuICAgICAgb25DYW5jZWw6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICB9LFxuICAgICAgY29udGFpbmVyXG4gICAgfTtcbiAgICBcbiAgICAvLyBDYWxsIGVkaXRvcidzIGVkaXQgbWV0aG9kXG4gICAgZWRpdG9yLmVkaXQoY29udGV4dCk7XG4gICAgXG4gICAgLy8gU3RvcmUgY2xlYW51cCBjYWxsYmFja1xuICAgIHRoaXMuZWRpdG9yQ2xlYW51cCA9ICgpID0+IHtcbiAgICAgIGlmIChlZGl0b3IuZGVzdHJveSkge1xuICAgICAgICBlZGl0b3IuZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgLy8gQ2xlYXIgY29udGFpbmVyXG4gICAgICB3aGlsZSAoY29udGFpbmVyLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5maXJzdENoaWxkKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlRWRpdChuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRoaXMuY2VsbC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHdhc1ZhbGlkID0gdGhpcy5jZWxsLmlzVmFsaWQoKTtcbiAgICBjb25zdCBzdWNjZXNzID0gdGhpcy5jZWxsLnNhdmVFZGl0KG5ld1ZhbHVlKTtcbiAgICBcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jZWxsLmdldENvbHVtbkNvbmZpZygpO1xuICAgICAgY29uc3QgY2VsbFN0YXRlID0gdGhpcy5jZWxsLmdldFN0YXRlKCk7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jZWxsLmlzVmFsaWQoKTtcbiAgICAgIFxuICAgICAgLy8gTm90aWZ5IFRhYmxlU3RhdGUgdGhhdCBlZGl0aW5nIGVuZGVkXG4gICAgICBpZiAodGhpcy50YWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMudGFibGVTdGF0ZS5jbGVhckVkaXRpbmdDZWxsKCk7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgdmFsaWRhdGlvbiBzdGF0ZSAobGF6eSBtb2RlIC0gb24gc2F2ZSlcbiAgICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uU3RhdGUoKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gRW1pdCBzYXZlIGV2ZW50XG4gICAgICBjb25zdCBzYXZlRXZlbnQ6IENlbGxTYXZlRXZlbnQgPSB7XG4gICAgICAgIGNlbGw6IHRoaXMuY2VsbCxcbiAgICAgICAgbmV3VmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgICBwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlLFxuICAgICAgICByb3dEYXRhOiB0aGlzLmNlbGwuZ2V0Um93RGF0YSgpLFxuICAgICAgICBjb2x1bW5LZXk6IGNvbHVtbi5rZXksXG4gICAgICAgIHJvd0luZGV4OiB0aGlzLmNlbGwuZ2V0Um93SW5kZXgoKSxcbiAgICAgICAgaXNWYWxpZDogaXNWYWxpZCxcbiAgICAgICAgdmFsaWRhdGlvbkVycm9yczogY2VsbFN0YXRlLmVycm9yID8gW2NlbGxTdGF0ZS5lcnJvcl0gOiB1bmRlZmluZWQsXG4gICAgICAgIGNlbGxTdGF0ZTogY2VsbFN0YXRlXG4gICAgICB9O1xuICAgICAgdGhpcy5jZWxsU2F2ZS5lbWl0KHNhdmVFdmVudCk7XG4gICAgICBcbiAgICAgIC8vIEVtaXQgY2hhbmdlIGV2ZW50XG4gICAgICBjb25zdCBjaGFuZ2VFdmVudDogQ2VsbENoYW5nZUV2ZW50ID0ge1xuICAgICAgICBjZWxsOiB0aGlzLmNlbGwsXG4gICAgICAgIG9sZFZhbHVlOiBwcmV2aW91c1ZhbHVlLFxuICAgICAgICBuZXdWYWx1ZTogbmV3VmFsdWUsXG4gICAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgICB3YXNWYWxpZDogd2FzVmFsaWQsXG4gICAgICAgIGlzVmFsaWQ6IGlzVmFsaWQsXG4gICAgICAgIGNlbGxTdGF0ZTogY2VsbFN0YXRlXG4gICAgICB9O1xuICAgICAgdGhpcy5jZWxsQ2hhbmdlLmVtaXQoY2hhbmdlRXZlbnQpO1xuICAgICAgXG4gICAgICB0aGlzLmNsZWFudXBFZGl0b3IoKTtcbiAgICB9XG4gICAgLy8gSWYgdmFsaWRhdGlvbiBmYWlscywga2VlcCBlZGl0aW5nIG1vZGVcbiAgfVxuICBcbiAgLyoqXG4gICAqIFVwZGF0ZSB2YWxpZGF0aW9uIHN0YXRlIGluIFRhYmxlU3RhdGVcbiAgICogQ2FsbGVkIG9uIHNhdmUgKGxhenkgbW9kZSkgb3Igb24gY2hhbmdlIChlYWdlciBtb2RlKVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVWYWxpZGF0aW9uU3RhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhYmxlU3RhdGUpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMuY2VsbC5pc1ZhbGlkKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmNlbGwuZ2V0U3RhdGUoKS5lcnJvcjtcbiAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpO1xuICAgIFxuICAgIC8vIE9ubHkgdXBkYXRlIGlmIHJvd0luZGV4IGlzIGRlZmluZWRcbiAgICBpZiAocm93SW5kZXggPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIFxuICAgIHRoaXMudGFibGVTdGF0ZS51cGRhdGVDZWxsVmFsaWRhdGlvbihcbiAgICAgIHJvd0luZGV4LFxuICAgICAgY29sdW1uLmtleSxcbiAgICAgIGlzVmFsaWQsXG4gICAgICBlcnJvclxuICAgICk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBUcmlnZ2VyIGVhZ2VyIHZhbGlkYXRpb24gKG9uIGV2ZXJ5IGNoYW5nZSlcbiAgICovXG4gIHByaXZhdGUgdHJpZ2dlckVhZ2VyVmFsaWRhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFibGVTdGF0ZSB8fCAhdGhpcy50YWJsZUNvbmZpZykgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IHZhbGlkYXRpb25Nb2RlID0gdGhpcy50YWJsZUNvbmZpZy52YWxpZGF0aW9uPy5tb2RlIHx8ICdsYXp5JztcbiAgICBpZiAodmFsaWRhdGlvbk1vZGUgIT09ICdlYWdlcicpIHJldHVybjtcbiAgICBcbiAgICAvLyBSZS12YWxpZGF0ZSB0aGUgY2VsbFxuICAgIHRoaXMuY2VsbC52YWxpZGF0ZSgpO1xuICAgIFxuICAgIC8vIFVwZGF0ZSB2YWxpZGF0aW9uIHN0YXRlXG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uU3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuY2VsRWRpdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgY29uc3QgY2VsbFN0YXRlID0gdGhpcy5jZWxsLmdldFN0YXRlKCk7XG4gICAgXG4gICAgLy8gTm90aWZ5IFRhYmxlU3RhdGUgdGhhdCBlZGl0aW5nIGVuZGVkXG4gICAgaWYgKHRoaXMudGFibGVTdGF0ZSkge1xuICAgICAgdGhpcy50YWJsZVN0YXRlLmNsZWFyRWRpdGluZ0NlbGwoKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgY2FuY2VsRXZlbnQ6IENlbGxDYW5jZWxFdmVudCA9IHtcbiAgICAgIGNlbGw6IHRoaXMuY2VsbCxcbiAgICAgIHZhbHVlOiB0aGlzLmNlbGwuZ2V0VmFsdWUoKSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IGNlbGxTdGF0ZS5wcmV2aW91c1ZhbHVlLFxuICAgICAgcm93RGF0YTogdGhpcy5jZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgIHJvd0luZGV4OiB0aGlzLmNlbGwuZ2V0Um93SW5kZXgoKSxcbiAgICAgIGNlbGxTdGF0ZTogY2VsbFN0YXRlXG4gICAgfTtcbiAgICBcbiAgICB0aGlzLmNlbGwuY2FuY2VsRWRpdCgpO1xuICAgIHRoaXMuY2VsbENhbmNlbC5lbWl0KGNhbmNlbEV2ZW50KTtcbiAgICB0aGlzLmNsZWFudXBFZGl0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW51cEVkaXRvcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0b3JDbGVhbnVwKSB7XG4gICAgICB0aGlzLmVkaXRvckNsZWFudXAoKTtcbiAgICAgIHRoaXMuZWRpdG9yQ2xlYW51cCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdC1jZWxsXCIgXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnZWRpdGluZyc6IGNlbGwuaXNFZGl0aW5nKCksXG4gICAgJ2RpcnR5JzogY2VsbC5pc0RpcnR5KCksXG4gICAgJ2ludmFsaWQnOiAhY2VsbC5pc1ZhbGlkKCksXG4gICAgJ3JlYWRvbmx5JzogIWlzRWRpdGFibGVcbiAgfVwiXG4gIChjbGljayk9XCJvbkNlbGxDbGljaygpXCIgXG4gIChkYmxjbGljayk9XCJvbkNlbGxEb3VibGVDbGljaygpXCI+XG5cbiAgPCEtLSBEaXNwbGF5IE1vZGUgd2l0aCBUZW1wbGF0ZSBTdXBwb3J0IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNlbGwuaXNFZGl0aW5nKClcIj5cbiAgICA8IS0tIEN1c3RvbSBUZW1wbGF0ZSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQ2VsbFRlbXBsYXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VsbFRlbXBsYXRlOyBjb250ZXh0OiB0ZW1wbGF0ZUNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRGVmYXVsdCBUZXh0IFJlbmRlcmluZyAtLT5cbiAgICA8c3BhbiAqbmdJZj1cIiFoYXNDZWxsVGVtcGxhdGVcIiBjbGFzcz1cImNlbGwtZGlzcGxheVwiPlxuICAgICAge3sgY2VsbC5yZW5kZXIoKSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBFZGl0IE1vZGUgLS0+XG4gIDxkaXYgKm5nSWY9XCJjZWxsLmlzRWRpdGluZygpXCIgY2xhc3M9XCJjZWxsLWVkaXRvclwiICNlZGl0b3JDb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+Il19
@@ -208,10 +208,10 @@ export class StColumnMenuDropdownComponent {
208
208
  }
209
209
  }
210
210
  StColumnMenuDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnMenuDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
211
- StColumnMenuDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StColumnMenuDropdownComponent, selector: "st-column-menu-dropdown", inputs: { isOpen: "isOpen", position: "position", context: "context" }, outputs: { actionClicked: "actionClicked", closed: "closed" }, host: { listeners: { "click": "onBackdropClick($event)" } }, viewQueries: [{ propertyName: "filterPopup", first: true, predicate: ["filterPopup"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#0000004d;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"], components: [{ type: i1.StColumnFilterComponent, selector: "st-column-filter", inputs: ["column", "tableState", "columnIndex", "isFirstColumn", "isLastColumn", "isOpen", "filterContext"], outputs: ["closed", "filterApplied", "filterCleared"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
211
+ StColumnMenuDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StColumnMenuDropdownComponent, selector: "st-column-menu-dropdown", inputs: { isOpen: "isOpen", position: "position", context: "context" }, outputs: { actionClicked: "actionClicked", closed: "closed" }, host: { listeners: { "click": "onBackdropClick($event)" } }, viewQueries: [{ propertyName: "filterPopup", first: true, predicate: ["filterPopup"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"], components: [{ type: i1.StColumnFilterComponent, selector: "st-column-filter", inputs: ["column", "tableState", "columnIndex", "isFirstColumn", "isLastColumn", "isOpen", "filterContext"], outputs: ["closed", "filterApplied", "filterCleared"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
212
212
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnMenuDropdownComponent, decorators: [{
213
213
  type: Component,
214
- args: [{ selector: 'st-column-menu-dropdown', template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#0000004d;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"] }]
214
+ args: [{ selector: 'st-column-menu-dropdown', template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"] }]
215
215
  }], propDecorators: { isOpen: [{
216
216
  type: Input
217
217
  }], position: [{
@@ -127,10 +127,10 @@ export class StHeaderComponent {
127
127
  }
128
128
  }
129
129
  StHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
130
- StHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StHeaderComponent, selector: "st-header", inputs: { column: "column", columnIndex: "columnIndex", isFirstColumn: "isFirstColumn", isLastColumn: "isLastColumn", tableState: "tableState", enableSorting: "enableSorting", enableFiltering: "enableFiltering" }, outputs: { sortToggle: "sortToggle", filterChange: "filterChange", columnMoved: "columnMoved", menuClick: "menuClick" }, ngImport: i0, template: "<div class=\"st-header\" [class.sortable]=\"isSortable()\" [class.sorted]=\"isSorted()\" [attr.aria-sort]=\"getAriaSort()\">\n <div class=\"header-content\">\n <span class=\"header-text\">{{ column.header || column.key }}</span>\n <button *ngIf=\"isMenuEnabled()\" \n class=\"column-menu-trigger\" \n (click)=\"onMenuClick($event)\"\n type=\"button\" \n aria-label=\"Column actions\">\n <nile-icon name=\"options\"></nile-icon>\n </button>\n </div>\n</div>", styles: [".st-header{position:relative;text-align:left;background-color:#fff;padding-left:2px}.st-header.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s}.st-header.resizing{-webkit-user-select:none;user-select:none;cursor:col-resize}.st-header.align-center{text-align:center}.st-header.align-center .header-content{justify-content:center}.st-header.align-right{text-align:right}.st-header.align-right .header-content{justify-content:flex-end}.st-header .header-content{display:flex;align-items:center;gap:8px}.st-header .header-text{flex:1;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:14px}.st-header .column-menu-trigger{background:none;border:none;padding:4px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center}.st-header .column-menu-trigger nile-icon{font-size:16px;pointer-events:none}.st-header .resize-handle{position:absolute;top:0;right:0;bottom:0;width:8px;cursor:col-resize;z-index:10}.st-header .resize-handle:after{content:\"\";position:absolute;top:50%;right:3px;transform:translateY(-50%);width:2px;height:20px;background-color:#cbd5e0;opacity:0;transition:opacity .2s}.st-header .resize-handle:hover:after,.st-header .resize-handle:active:after{opacity:1}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
130
+ StHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StHeaderComponent, selector: "st-header", inputs: { column: "column", columnIndex: "columnIndex", isFirstColumn: "isFirstColumn", isLastColumn: "isLastColumn", tableState: "tableState", enableSorting: "enableSorting", enableFiltering: "enableFiltering" }, outputs: { sortToggle: "sortToggle", filterChange: "filterChange", columnMoved: "columnMoved", menuClick: "menuClick" }, ngImport: i0, template: "<div class=\"st-header\" [class.sortable]=\"isSortable()\" [class.sorted]=\"isSorted()\" [attr.aria-sort]=\"getAriaSort()\">\n <div class=\"header-content\">\n <span class=\"header-text\">{{ column.header || column.key }}</span>\n <button *ngIf=\"isMenuEnabled()\" \n class=\"column-menu-trigger\" \n (click)=\"onMenuClick($event)\"\n type=\"button\" \n aria-label=\"Column actions\">\n <nile-icon name=\"options\"></nile-icon>\n </button>\n </div>\n</div>", styles: [".st-header{position:relative;text-align:left;background-color:#fff;padding-left:8px}.st-header.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s}.st-header.resizing{-webkit-user-select:none;user-select:none;cursor:col-resize}.st-header.align-center{text-align:center}.st-header.align-center .header-content{justify-content:center}.st-header.align-right{text-align:right}.st-header.align-right .header-content{justify-content:flex-end}.st-header .header-content{display:flex;align-items:center;gap:8px}.st-header .header-text{flex:1;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:14px}.st-header .column-menu-trigger{background:none;border:none;padding:4px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center}.st-header .column-menu-trigger nile-icon{font-size:16px;pointer-events:none}.st-header .resize-handle{position:absolute;top:0;right:0;bottom:0;width:8px;cursor:col-resize;z-index:10}.st-header .resize-handle:after{content:\"\";position:absolute;top:50%;right:3px;transform:translateY(-50%);width:2px;height:20px;background-color:#cbd5e0;opacity:0;transition:opacity .2s}.st-header .resize-handle:hover:after,.st-header .resize-handle:active:after{opacity:1}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
131
131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StHeaderComponent, decorators: [{
132
132
  type: Component,
133
- args: [{ selector: 'st-header', template: "<div class=\"st-header\" [class.sortable]=\"isSortable()\" [class.sorted]=\"isSorted()\" [attr.aria-sort]=\"getAriaSort()\">\n <div class=\"header-content\">\n <span class=\"header-text\">{{ column.header || column.key }}</span>\n <button *ngIf=\"isMenuEnabled()\" \n class=\"column-menu-trigger\" \n (click)=\"onMenuClick($event)\"\n type=\"button\" \n aria-label=\"Column actions\">\n <nile-icon name=\"options\"></nile-icon>\n </button>\n </div>\n</div>", styles: [".st-header{position:relative;text-align:left;background-color:#fff;padding-left:2px}.st-header.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s}.st-header.resizing{-webkit-user-select:none;user-select:none;cursor:col-resize}.st-header.align-center{text-align:center}.st-header.align-center .header-content{justify-content:center}.st-header.align-right{text-align:right}.st-header.align-right .header-content{justify-content:flex-end}.st-header .header-content{display:flex;align-items:center;gap:8px}.st-header .header-text{flex:1;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:14px}.st-header .column-menu-trigger{background:none;border:none;padding:4px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center}.st-header .column-menu-trigger nile-icon{font-size:16px;pointer-events:none}.st-header .resize-handle{position:absolute;top:0;right:0;bottom:0;width:8px;cursor:col-resize;z-index:10}.st-header .resize-handle:after{content:\"\";position:absolute;top:50%;right:3px;transform:translateY(-50%);width:2px;height:20px;background-color:#cbd5e0;opacity:0;transition:opacity .2s}.st-header .resize-handle:hover:after,.st-header .resize-handle:active:after{opacity:1}\n"] }]
133
+ args: [{ selector: 'st-header', template: "<div class=\"st-header\" [class.sortable]=\"isSortable()\" [class.sorted]=\"isSorted()\" [attr.aria-sort]=\"getAriaSort()\">\n <div class=\"header-content\">\n <span class=\"header-text\">{{ column.header || column.key }}</span>\n <button *ngIf=\"isMenuEnabled()\" \n class=\"column-menu-trigger\" \n (click)=\"onMenuClick($event)\"\n type=\"button\" \n aria-label=\"Column actions\">\n <nile-icon name=\"options\"></nile-icon>\n </button>\n </div>\n</div>", styles: [".st-header{position:relative;text-align:left;background-color:#fff;padding-left:8px}.st-header.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s}.st-header.resizing{-webkit-user-select:none;user-select:none;cursor:col-resize}.st-header.align-center{text-align:center}.st-header.align-center .header-content{justify-content:center}.st-header.align-right{text-align:right}.st-header.align-right .header-content{justify-content:flex-end}.st-header .header-content{display:flex;align-items:center;gap:8px}.st-header .header-text{flex:1;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:14px}.st-header .column-menu-trigger{background:none;border:none;padding:4px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center}.st-header .column-menu-trigger nile-icon{font-size:16px;pointer-events:none}.st-header .resize-handle{position:absolute;top:0;right:0;bottom:0;width:8px;cursor:col-resize;z-index:10}.st-header .resize-handle:after{content:\"\";position:absolute;top:50%;right:3px;transform:translateY(-50%);width:2px;height:20px;background-color:#cbd5e0;opacity:0;transition:opacity .2s}.st-header .resize-handle:hover:after,.st-header .resize-handle:active:after{opacity:1}\n"] }]
134
134
  }], propDecorators: { column: [{
135
135
  type: Input
136
136
  }], columnIndex: [{