cps-ui-kit 17.3.0 → 17.5.0

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.
Files changed (30) hide show
  1. package/README.md +1 -0
  2. package/esm2022/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +30 -12
  3. package/esm2022/lib/components/cps-button/cps-button.component.mjs +2 -2
  4. package/esm2022/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +1 -1
  5. package/esm2022/lib/components/cps-datepicker/cps-datepicker.component.mjs +3 -3
  6. package/esm2022/lib/components/cps-scheduler/cps-scheduler.component.mjs +672 -0
  7. package/esm2022/lib/components/cps-scheduler/cps-scheduler.utils.mjs +604 -0
  8. package/esm2022/lib/components/cps-select/cps-select.component.mjs +2 -2
  9. package/esm2022/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +1 -1
  10. package/esm2022/lib/components/cps-table/cps-table.component.mjs +1 -1
  11. package/esm2022/lib/components/cps-timepicker/cps-timepicker.component.mjs +10 -3
  12. package/esm2022/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +1 -1
  13. package/esm2022/lib/directives/cps-tooltip/cps-tooltip.directive.mjs +1 -1
  14. package/esm2022/lib/services/cps-notification/cps-notification.service.mjs +1 -5
  15. package/esm2022/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +9 -5
  16. package/esm2022/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.mjs +3 -3
  17. package/esm2022/lib/services/cps-notification/utils/cps-notification-config.mjs +1 -1
  18. package/esm2022/public-api.mjs +2 -1
  19. package/fesm2022/cps-ui-kit.mjs +1316 -30
  20. package/fesm2022/cps-ui-kit.mjs.map +1 -1
  21. package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +10 -4
  22. package/lib/components/cps-button/cps-button.component.d.ts +1 -1
  23. package/lib/components/cps-scheduler/cps-scheduler.component.d.ts +146 -0
  24. package/lib/components/cps-scheduler/cps-scheduler.utils.d.ts +1 -0
  25. package/lib/components/cps-select/cps-select.component.d.ts +1 -1
  26. package/lib/components/cps-timepicker/cps-timepicker.component.d.ts +6 -1
  27. package/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.d.ts +1 -6
  28. package/lib/services/cps-notification/utils/cps-notification-config.d.ts +5 -0
  29. package/package.json +1 -1
  30. package/public-api.d.ts +1 -0
@@ -616,4 +616,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
616
616
  type: ViewChild,
617
617
  args: ['boxEl']
618
618
  }] } });
619
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLWJhc2UtdHJlZS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9pbnRlcm5hbC9jcHMtYmFzZS10cmVlLWRyb3Bkb3duL2Nwcy1iYXNlLXRyZWUtZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBSWpFOzs7R0FHRztBQUlILE1BQU0sT0FBTyw0QkFBNEI7SUF5SnZDOzs7T0FHRztJQUNILElBQWEsT0FBTyxDQUFDLE9BQWM7UUFDakMsSUFBSSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUN4QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFRRCxJQUFJLEtBQUssQ0FBQyxLQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FB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XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJlZSB9IGZyb20gJ3ByaW1lbmcvdHJlZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEljb25UeXBlLCBpY29uU2l6ZVR5cGUgfSBmcm9tICcuLi8uLi9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29udmVydFNpemUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9pbnRlcm5hbC9zaXplLXV0aWxzJztcbmltcG9ydCB7IENwc1Rvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvY3BzLXRvb2x0aXAvY3BzLXRvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IENwc01lbnVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jcHMtbWVudS9jcHMtbWVudS5jb21wb25lbnQnO1xuXG4vKipcbiAqIEJhc2VUcmVlRHJvcGRvd25Db21wb25lbnQgaXMgYW4gaW50ZXJuYWwgYmFzZSBjb21wb25lbnQgdG8gc3VwcG9ydCBoaWVyYXJjaGljYWwgZGF0YSBkcm9wZG93bi5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgY2xhc3MgQ3BzQmFzZVRyZWVEcm9wZG93bkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogTGFiZWwgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBCb3R0b20gaGludCB0ZXh0LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGhpbnQgPSAnJztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGlmIG11bHRpcGxlIHZhbHVlcyBjYW4gYmUgc2VsZWN0ZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2lkdGggb2YgdGhlIGNvbXBvbmVudCwgb2YgdHlwZSBudW1iZXIgZGVub3RpbmcgcGl4ZWxzIG9yIHN0cmluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNlbGVjdGluZyBhbiBlbGVtZW50LCBpdCB3aWxsIGFwcGVhciBpbiBhIGZvcm0gb2YgYSBjaGlwLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNoaXBzID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjaGlwcyBjYW4gYmUgZGlyZWN0bHkgcmVtb3ZlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBjbG9zYWJsZUNoaXBzID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBhIGNsZWFyIGljb24gaXMgZGlzcGxheWVkIHRvIGNsZWFyIHRoZSB2YWx1ZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBjbGVhcmFibGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBkcm9wZG93biBzaG91bGQgb3BlbiBvbiBjbGVhci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBvcGVuT25DbGVhciA9IHRydWU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGxhYmVsIGZpZWxkIG9mIGFuIG9wdGlvbi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25MYWJlbCA9ICdsYWJlbCc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGluZm8gZmllbGQgb2YgYW4gb3B0aW9uLCBzaG93cyB0aGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0ZXh0LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbkluZm8gPSAnaW5mbyc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGhpZGluZyBkZXRhaWxzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGhpZGVEZXRhaWxzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCBoYXZlIHBlcnNpc3RlbnQgY2xlYXIgaWNvbi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBwZXJzaXN0ZW50Q2xlYXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogSWNvbiBiZWZvcmUgaW5wdXQgdmFsdWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcHJlZml4SWNvbjogSWNvblR5cGUgPSAnJztcblxuICAvKipcbiAgICogU2l6ZSBvZiBpY29uIGJlZm9yZSBpbnB1dCB2YWx1ZSwgb2YgdHlwZSBudW1iZXIsIHN0cmluZywgJ2ZpbGwnLCAneHNtYWxsJywgJ3NtYWxsJywgJ25vcm1hbCcgb3IgJ2xhcmdlJy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBwcmVmaXhJY29uU2l6ZTogaWNvblNpemVUeXBlID0gJzE4cHgnO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGEgbG9hZGluZyBiYXIgaXMgZGlzcGxheWVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9ubHkgdGhlIGVsZW1lbnRzIHdpdGhpbiBzY3JvbGxhYmxlIGFyZWEgc2hvdWxkIGJlIGFkZGVkIGludG8gdGhlIERPTS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaG93IG1hbnkgYWRkaXRpb25hbCBlbGVtZW50cyB0byBhZGQgdG8gdGhlIERPTSBvdXRzaWRlIG9mIHRoZSB2aWV3LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG51bVRvbGVyYXRlZEl0ZW1zID0gMTA7XG5cbiAgLyoqXG4gICAqIFdoZW4gaXQgaXMgbm90IGFuIGVtcHR5IHN0cmluZywgYW4gaW5mbyBpY29uIGlzIGRpc3BsYXllZCB0byBzaG93IHRleHQgZm9yIG1vcmUgaW5mby5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcCA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbmZvIHRvb2x0aXAgY2xhc3MgZm9yIHN0eWxpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBDbGFzcyA9ICdjcHMtdG9vbHRpcC1jb250ZW50JztcblxuICAvKipcbiAgICogTWF4IHdpZHRoIG9mIGluZm9Ub29sdGlwIG9mIHR5cGUgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBNYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGluZm9Ub29sdGlwIGlzIHBlcnNpc3RlbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBQZXJzaXN0ZW50ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIGluZm9Ub29sdGlwLCBpdCBjYW4gYmUgJ3RvcCcsICdib3R0b20nLCAnbGVmdCcgb3IgJ3JpZ2h0Jy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcFBvc2l0aW9uOiBDcHNUb29sdGlwUG9zaXRpb24gPSAndG9wJztcblxuICAvKipcbiAgICogV2hlbiBzZXQsIGl0IGV4cGFuZHMgYWxsIGRpcmVjdGlvcmllcyBpbml0aWFsbHkuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5pdGlhbEV4cGFuZERpcmVjdG9yaWVzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0LCBpdCBleHBhbmRzIGFsbCBvcHRpb25zIGluaXRpYWxseS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbml0aWFsRXhwYW5kQWxsID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIG9iamVjdHMgdG8gZGlzcGxheSBhcyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2V0IG9wdGlvbnMob3B0aW9uczogYW55W10pIHtcbiAgICBpZiAob3B0aW9ucz8uc29tZSgobykgPT4gby5pbm5lcikpIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl90b0lubmVyT3B0aW9ucyhvcHRpb25zKTtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCk6IFRyZWVOb2RlW10ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCd2YWx1ZScpIF92YWx1ZTogYW55ID0gdW5kZWZpbmVkO1xuXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdmFsdWUgY2hhbmdlLlxuICAgKiBAcGFyYW0ge2FueX0gYW55IC0gdmFsdWUgY2hhbmdlZC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY29tcG9uZW50Q29udGFpbmVyJylcbiAgY29tcG9uZW50Q29udGFpbmVyITogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdvcHRpb25zTWVudScpXG4gIG9wdGlvbnNNZW51ITogQ3BzTWVudUNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCd0cmVlTGlzdCcpIHRyZWVMaXN0ITogVHJlZTtcblxuICBAVmlld0NoaWxkKCdib3hFbCcpXG4gIGJveEVsITogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIF9zdGF0dXNDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgX29wdGlvbnM6IFRyZWVOb2RlW10gPSBbXTtcbiAgb3B0aW9uc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBUcmVlTm9kZT4oKTtcbiAgb3JpZ2luYWxPcHRpb25zTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcblxuICB2aXJ0dWFsTGlzdEhlaWdodCA9IDI0MDtcbiAgdmlydHVhbFNjcm9sbEl0ZW1TaXplID0gNDA7XG5cbiAgZXJyb3IgPSAnJztcbiAgY3Z0V2lkdGggPSAnJztcbiAgaXNPcGVuZWQgPSBmYWxzZTtcbiAgb3B0aW9uRm9jdXNlZCA9IGZhbHNlO1xuICBpc0F1dG9jb21wbGV0ZSA9IGZhbHNlO1xuXG4gIHRyZWVDb250YWluZXJFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHRyZWVTZWxlY3Rpb246IGFueTtcblxuICBib3hXaWR0aCA9IDA7XG4gIHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHVibGljIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgaWYgKGVudHJ5Py50YXJnZXQpIHRoaXMuYm94V2lkdGggPSAoZW50cnkudGFyZ2V0IGFzIGFueSkub2Zmc2V0V2lkdGg7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY3Z0V2lkdGggPSBjb252ZXJ0U2l6ZSh0aGlzLndpZHRoKTtcbiAgICBpZiAoIXRoaXMuX3ZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IFtdO1xuICAgICAgICB0aGlzLnRyZWVTZWxlY3Rpb24gPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmVlU2VsZWN0aW9uID0gdGhpcy5fdmFsdWVUb1RyZWVTZWxlY3Rpb24odGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdHVzQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuY29udHJvbD8uc3RhdHVzQ2hhbmdlcz8uc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLl9jaGVja0Vycm9ycygpO1xuICAgICAgfVxuICAgICkgYXMgU3Vic2NyaXB0aW9uO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX2luaXRDb250YWluZXJDbGlja0xpc3RlbmVyKCk7XG4gICAgdGhpcy5yZWNhbGNWaXJ0dWFsTGlzdEhlaWdodCgpO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmJveEVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3RhdHVzQ2hhbmdlc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMudHJlZUNvbnRhaW5lckVsZW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2xpY2snLFxuICAgICAgdGhpcy5faGFuZGxlT25Db250YWluZXJDbGljay5iaW5kKHRoaXMpXG4gICAgKTtcblxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRDb250YWluZXJDbGlja0xpc3RlbmVyKCkge1xuICAgIHRoaXMudHJlZUNvbnRhaW5lckVsZW1lbnQgPVxuICAgICAgdGhpcy50cmVlTGlzdD8uZWw/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJy5wLXRyZWUtY29udGFpbmVyJyk7XG4gICAgaWYgKHRoaXMudHJlZUNvbnRhaW5lckVsZW1lbnQpIHtcbiAgICAgIHRoaXMudHJlZUNvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgdGhpcy5faGFuZGxlT25Db250YWluZXJDbGljay5iaW5kKHRoaXMpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIGZ1bmN0aW9uIGdldFBhcmVudFdpdGhDbGFzcyhcbiAgICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgICAgIGNsYXNzTmFtZTogc3RyaW5nXG4gICAgKSB7XG4gICAgICBsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBjdXJyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLm9wdGlvbkZvY3VzZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgZWxlbSA9IGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3AtdHJlZW5vZGUtY29udGVudCcpXG4gICAgICA/IGV2ZW50LnRhcmdldFxuICAgICAgOiBnZXRQYXJlbnRXaXRoQ2xhc3MoZXZlbnQudGFyZ2V0LCAncC10cmVlbm9kZS1jb250ZW50Jyk7XG5cbiAgICBpZiAoXG4gICAgICBlbGVtPy5wYXJlbnRFbGVtZW50Py5jbGFzc0xpc3Q/LmNvbnRhaW5zKCdjcHMtdHJlZS1ub2RlLWZ1bGx5LWV4cGFuZGFibGUnKVxuICAgICkge1xuICAgICAgdGhpcy5vbkNsaWNrRnVsbHlFeHBhbmRhYmxlKGVsZW0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25DaGFuZ2UgPSAoZXZlbnQ6IGFueSkgPT4ge307XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSwgaW50ZXJuYWwgPSBmYWxzZSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAoIWludGVybmFsICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnRyZWVTZWxlY3Rpb24gPSB0aGlzLl92YWx1ZVRvVHJlZVNlbGVjdGlvbih0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlLCB0cnVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uU2VsZWN0Tm9kZSgpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMudG9nZ2xlT3B0aW9ucyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja0Z1bGx5RXhwYW5kYWJsZShlbGVtOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IHBhcmVudCA9IGVsZW0ucGFyZW50RWxlbWVudDtcbiAgICBjb25zdCBrZXkgPSB0aGlzLl9nZXRIVE1MRWxlbWVudEtleShwYXJlbnQpO1xuICAgIGlmICgha2V5KSByZXR1cm47XG5cbiAgICBjb25zdCB0cmVlTm9kZSA9IHRoaXMub3B0aW9ucy5maW5kKChvKSA9PiBvLmtleSA9PT0ga2V5KTtcbiAgICBpZiAoIXRyZWVOb2RlKSByZXR1cm47XG5cbiAgICB0cmVlTm9kZS5leHBhbmRlZCA9ICF0cmVlTm9kZS5leHBhbmRlZDtcbiAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX25vZGVUb2dnbGVkKGVsZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SFRNTEVsZW1lbnRLZXkoZWxlbTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIWVsZW0/LmNsYXNzTGlzdCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IFsuLi5lbGVtLmNsYXNzTGlzdF07XG4gICAgY29uc3Qga2V5ID0gY2xhc3NMaXN0LmZpbmQoKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gY2xhc3NOYW1lLnN0YXJ0c1dpdGgoJ2tleS0nKTtcbiAgICB9KTtcbiAgICBpZiAoIWtleSkgcmV0dXJuICcnO1xuICAgIHJldHVybiBrZXkucmVwbGFjZSgna2V5LScsICcnKTtcbiAgfVxuXG4gIHRyZWVTZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbjogYW55KSB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnRyZWVTZWxlY3Rpb25Ub1ZhbHVlKHNlbGVjdGlvbikpO1xuICB9XG5cbiAgcmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKSB7XG4gICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50TGVuID0gdGhpcy50cmVlTGlzdD8uc2VyaWFsaXplZFZhbHVlPy5sZW5ndGggfHwgMDtcbiAgICB0aGlzLnZpcnR1YWxMaXN0SGVpZ2h0ID0gTWF0aC5taW4oXG4gICAgICB0aGlzLnZpcnR1YWxTY3JvbGxJdGVtU2l6ZSAqIGN1cnJlbnRMZW4sXG4gICAgICAyNDBcbiAgICApO1xuICB9XG5cbiAgdG9nZ2xlT3B0aW9ucyhzaG93PzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuaXNPcGVuZWQgPT09IHNob3cpIHJldHVybjtcblxuICAgIGlmICh0eXBlb2Ygc2hvdyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBpZiAoc2hvdykge1xuICAgICAgICB0aGlzLm9wdGlvbnNNZW51LnNob3coe1xuICAgICAgICAgIHRhcmdldDogdGhpcy5ib3hFbC5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zTWVudS5oaWRlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9uc01lbnUudG9nZ2xlKHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzLmJveEVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuaXNPcGVuZWQgPSB0aGlzLm9wdGlvbnNNZW51LmlzVmlzaWJsZSgpO1xuXG4gICAgdGhpcy5vcHRpb25Gb2N1c2VkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuaXNPcGVuZWQgJiYgdGhpcy50cmVlU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLl9leHBhbmRUb05vZGVzKFxuICAgICAgICB0aGlzLm11bHRpcGxlID8gdGhpcy50cmVlU2VsZWN0aW9uIDogW3RoaXMudHJlZVNlbGVjdGlvbl1cbiAgICAgICk7XG4gICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy50cmVlQ29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICcucC1oaWdobGlnaHQnXG4gICAgICAgICkgYXMgYW55O1xuICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICBiZWhhdmlvcjogJ2luc3RhbnQnLFxuICAgICAgICAgICAgYmxvY2s6ICduZWFyZXN0JyxcbiAgICAgICAgICAgIGlubGluZTogJ2NlbnRlcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwgJiYgdGhpcy50cmVlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgbGV0IGtleSA9ICcnO1xuICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50cmVlU2VsZWN0aW9uLmxlbmd0aCA+IDApIGtleSA9IHRoaXMudHJlZVNlbGVjdGlvblswXS5rZXk7XG4gICAgICAgICAgfSBlbHNlIGtleSA9IHRoaXMudHJlZVNlbGVjdGlvbi5rZXk7XG4gICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgY29uc3QgaWR4ID1cbiAgICAgICAgICAgICAgdGhpcy50cmVlTGlzdD8uc2VyaWFsaXplZFZhbHVlPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgLy8gVG9kbzogQWRkIGV4cGxpY2l0IHR5cGVcbiAgICAgICAgICAgICAgICAodjogYW55KSA9PiB2Lm5vZGUua2V5ID09PSBrZXlcbiAgICAgICAgICAgICAgKSB8fCAtMTtcbiAgICAgICAgICAgIGlmIChpZHggPj0gMCkgdGhpcy50cmVlTGlzdC5zY3JvbGxUb1ZpcnR1YWxJbmRleChpZHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKG9wdGlvbjogVHJlZU5vZGUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHJldHVybjtcblxuICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IHRoaXMudHJlZVNlbGVjdGlvbi5maWx0ZXIoXG4gICAgICAodjogVHJlZU5vZGUpID0+ICFpc0VxdWFsKHYsIG9wdGlvbilcbiAgICApO1xuICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy50cmVlU2VsZWN0aW9uVG9WYWx1ZSh0aGlzLnRyZWVTZWxlY3Rpb24pKTtcbiAgfVxuXG4gIGluaXRBcnJvd3NOYXZpZ2F0b24oKSB7XG4gICAgaWYgKCF0aGlzLmlzT3BlbmVkKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMub3B0aW9uRm9jdXNlZCkge1xuICAgICAgY29uc3QgZmlyc3RFbGVtID0gdGhpcy50cmVlQ29udGFpbmVyRWxlbWVudD8ucXVlcnlTZWxlY3RvcignLnAtdHJlZW5vZGUnKTtcblxuICAgICAgaWYgKGZpcnN0RWxlbSkgKGZpcnN0RWxlbSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKTtcbiAgICAgIHRoaXMub3B0aW9uRm9jdXNlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbm9kZVRvZ2dsZWQoZWxlbTogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9wdGlvbnNNZW51LmFsaWduKCk7XG4gICAgfSk7XG5cbiAgICBpZiAoZWxlbT8ucGFyZW50RWxlbWVudCkgKGVsZW0/LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIF9ub2RlVG9nZ2xlZFdpdGhDaGV2cm9uKGVsZW06IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5fbm9kZVRvZ2dsZWQoZWxlbSk7XG4gICAgLy8gZml4IHByaW1lbmcgdHJlZSBldmVudCBzdG9wIHByb3BhZ2F0aW9uXG4gICAgdGhpcy5vcHRpb25zTWVudS5zZWxmQ2xpY2sgPSBmYWxzZTtcbiAgfVxuXG4gIG9uTm9kZUV4cGFuZChldmVudDogYW55KSB7XG4gICAgdGhpcy5fbm9kZVRvZ2dsZWRXaXRoQ2hldnJvbihcbiAgICAgIGV2ZW50Py5vcmlnaW5hbEV2ZW50Py5jdXJyZW50VGFyZ2V0Py5wYXJlbnRFbGVtZW50XG4gICAgKTtcbiAgfVxuXG4gIG9uTm9kZUNvbGxhcHNlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLl9ub2RlVG9nZ2xlZFdpdGhDaGV2cm9uKFxuICAgICAgZXZlbnQ/Lm9yaWdpbmFsRXZlbnQ/LmN1cnJlbnRUYXJnZXQ/LnBhcmVudEVsZW1lbnRcbiAgICApO1xuICB9XG5cbiAgY2xlYXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKFxuICAgICAgKCF0aGlzLm11bHRpcGxlICYmIHRoaXMudHJlZVNlbGVjdGlvbikgfHxcbiAgICAgICh0aGlzLm11bHRpcGxlICYmIHRoaXMudHJlZVNlbGVjdGlvbj8ubGVuZ3RoID4gMClcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLm9wZW5PbkNsZWFyKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlT3B0aW9ucyh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMubXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IHZhbDtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsKTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25Gb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0Vycm9ycygpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmNvbnRyb2w/LmVycm9ycztcblxuICAgIGlmICghdGhpcy5jb250cm9sPy5jb250cm9sPy50b3VjaGVkIHx8ICFlcnJvcnMpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoJ3JlcXVpcmVkJyBpbiBlcnJvcnMpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnRmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVyckFyciA9IE9iamVjdC52YWx1ZXMoZXJyb3JzKTtcbiAgICBpZiAoZXJyQXJyLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZSA9IGVyckFyci5maW5kKChtc2cpID0+IHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnKTtcblxuICAgIHRoaXMuZXJyb3IgPSBtZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJztcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge31cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5jb250cm9sPy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5fY2hlY2tFcnJvcnMoKTtcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIHRoaXMudG9nZ2xlT3B0aW9ucyh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2V4cGFuZFRvTm9kZXMobm9kZXM6IGFueVtdKSB7XG4gICAgZnVuY3Rpb24gZ2V0UGFyZW50S2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIGNvbnN0IGxhc3RTZXBhcmF0b3JJbmRleCA9IGtleS5sYXN0SW5kZXhPZignLScpO1xuICAgICAgaWYgKGxhc3RTZXBhcmF0b3JJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGtleS5zdWJzdHJpbmcoMCwgbGFzdFNlcGFyYXRvckluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBjb25zdCBwYXJlbnROb2RlS2V5ID0gZ2V0UGFyZW50S2V5KG5vZGUua2V5KTtcbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLm9wdGlvbnNNYXAuZ2V0KHBhcmVudE5vZGVLZXkpIHx8IG51bGw7XG5cbiAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9leHBhbmRUb05vZGVzKFtwYXJlbnROb2RlXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF90b0lubmVyT3B0aW9ucyhfb3B0aW9uczogYW55W10pOiBUcmVlTm9kZVtdIHtcbiAgICBjb25zdCBtYXBPcHRpb24gPSAoXG4gICAgICBvOiBhbnksXG4gICAgICBvcHRpb25MYWJlbDogc3RyaW5nLFxuICAgICAgb3B0aW9uSW5mbzogc3RyaW5nLFxuICAgICAga2V5OiBzdHJpbmcsXG4gICAgICBvcmlnaW5hbE9wdGlvbnNNYXA6IGFueVxuICAgICkgPT4ge1xuICAgICAgY29uc3QgaW5uZXIgPSB7XG4gICAgICAgIGlubmVyOiB0cnVlLFxuICAgICAgICBsYWJlbDogb1tvcHRpb25MYWJlbF0sXG4gICAgICAgIGluZm86IG9bb3B0aW9uSW5mb10sXG4gICAgICAgIGtleSxcbiAgICAgICAgc3R5bGVDbGFzczogJ2tleS0nICsga2V5XG4gICAgICB9IGFzIFRyZWVOb2RlO1xuXG4gICAgICBpZiAodGhpcy5pbml0aWFsRXhwYW5kQWxsKSB7XG4gICAgICAgIGlubmVyLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG8uaXNEaXJlY3RvcnkpIHtcbiAgICAgICAgaW5uZXIudHlwZSA9ICdkaXJlY3RvcnknO1xuICAgICAgICBpbm5lci5zZWxlY3RhYmxlID0gZmFsc2U7XG4gICAgICAgIGlubmVyLnN0eWxlQ2xhc3MgKz0gJyBjcHMtdHJlZS1ub2RlLWZ1bGx5LWV4cGFuZGFibGUnO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsRXhwYW5kRGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICBpbm5lci5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvLmNoaWxkcmVuKSB7XG4gICAgICAgIGlubmVyLmNoaWxkcmVuID0gby5jaGlsZHJlbi5tYXAoKGM6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIHJldHVybiBtYXBPcHRpb24oXG4gICAgICAgICAgICBjLFxuICAgICAgICAgICAgb3B0aW9uTGFiZWwsXG4gICAgICAgICAgICBvcHRpb25JbmZvLFxuICAgICAgICAgICAga2V5ICsgJy0nICsgaW5kZXgsXG4gICAgICAgICAgICBvcmlnaW5hbE9wdGlvbnNNYXBcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG9yaWdpbmFsT3B0aW9uc01hcC5zZXQoa2V5LCBvKTtcbiAgICAgIHJldHVybiBpbm5lcjtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzID0gX29wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gbWFwT3B0aW9uKFxuICAgICAgICBvcHRpb24sXG4gICAgICAgIHRoaXMub3B0aW9uTGFiZWwsXG4gICAgICAgIHRoaXMub3B0aW9uSW5mbyxcbiAgICAgICAgJycgKyBpbmRleCxcbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnNNYXBcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbnNNYXAgPSB0aGlzLl9idWlsZE9wdGlvbnNNYXAocmVzKTtcblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcml2YXRlIF9idWlsZE9wdGlvbnNNYXAob3B0aW9uczogYW55W10pOiBNYXA8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCBub2RlTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICBub2RlTWFwLnNldChvcHRpb24ua2V5LCBvcHRpb24pO1xuICAgICAgaWYgKG9wdGlvbi5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVNYXAgPSB0aGlzLl9idWlsZE9wdGlvbnNNYXAob3B0aW9uLmNoaWxkcmVuKTtcbiAgICAgICAgY2hpbGROb2RlTWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IG5vZGVNYXAuc2V0KGtleSwgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGVNYXA7XG4gIH1cblxuICB0cmVlU2VsZWN0aW9uVG9WYWx1ZShzZWxlY3Rpb246IGFueSkge1xuICAgIGlmICghc2VsZWN0aW9uKSByZXR1cm4gdGhpcy5tdWx0aXBsZSA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICByZXR1cm4gc2VsZWN0aW9uLm1hcCgoczogYW55KSA9PiB0aGlzLm9yaWdpbmFsT3B0aW9uc01hcC5nZXQocy5rZXkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWxPcHRpb25zTWFwLmdldChzZWxlY3Rpb24ua2V5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF92YWx1ZVRvVHJlZVNlbGVjdGlvbih2YWx1ZTogYW55KSB7XG4gICAgZnVuY3Rpb24gZ2V0S2V5KHY6IGFueSwgbWFwOiBNYXA8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBtYXAuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChpc0VxdWFsKHYsIHZhbCkpIHtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHRoaXMubXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBjb25zdCByZXMgPSBbXSBhcyBUcmVlTm9kZVtdO1xuICAgICAgdmFsdWUuZm9yRWFjaCgodjogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGdldEtleSh2LCB0aGlzLm9yaWdpbmFsT3B0aW9uc01hcCk7XG4gICAgICAgIGlmIChrZXkpIHJlcy5wdXNoKHRoaXMub3B0aW9uc01hcC5nZXQoa2V5KSBhcyBUcmVlTm9kZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGtleSA9IGdldEtleSh2YWx1ZSwgdGhpcy5vcmlnaW5hbE9wdGlvbnNNYXApO1xuICAgICAgcmV0dXJuIGtleSA/IHRoaXMub3B0aW9uc01hcC5nZXQoa2V5KSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvLyB0aGlzIGlzIGEgZml4IG9mIHByaW1lbmcgY2hhbmdlIGRldGVjdGlvbiBidWcgd2hlbiB2aXJ0dWFsIHNjcm9sbGVyIGlzIGVuYWJsZWRcbiAgdXBkYXRlT3B0aW9ucygpIHtcbiAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCkgcmV0dXJuO1xuICAgIHRoaXMub3B0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnNdO1xuICB9XG59XG4iXX0=
619
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLWJhc2UtdHJlZS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9pbnRlcm5hbC9jcHMtYmFzZS10cmVlLWRyb3Bkb3duL2Nwcy1iYXNlLXRyZWUtZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBSWpFOzs7R0FHRztBQUlILE1BQU0sT0FBTyw0QkFBNEI7SUF5SnZDOzs7T0FHRztJQUNILElBQWEsT0FBTyxDQUFDLE9BQWM7UUFDakMsSUFBSSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUN4QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFRRCxJQUFJLEtBQUssQ0FBQyxLQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBeUNELFlBQzZCLE9BQWtCLEVBQ3RDLEtBQXdCO1FBREosWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUN0QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQS9OakM7OztXQUdHO1FBQ00sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVwQjs7O1dBR0c7UUFDTSxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRW5COzs7V0FHRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7OztXQUdHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQjs7O1dBR0c7UUFDTSxVQUFLLEdBQW9CLE1BQU0sQ0FBQztRQUV6Qzs7O1dBR0c7UUFDTSxVQUFLLEdBQUcsSUFBSSxDQUFDO1FBRXRCOzs7V0FHRztRQUNNLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTlCOzs7V0FHRztRQUNNLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFM0I7OztXQUdHO1FBQ00sZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFNUI7OztXQUdHO1FBQ00sZ0JBQVcsR0FBRyxPQUFPLENBQUM7UUFFL0I7OztXQUdHO1FBQ00sZUFBVSxHQUFHLE1BQU0sQ0FBQztRQUU3Qjs7O1dBR0c7UUFDTSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUU3Qjs7O1dBR0c7UUFDTSxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUVqQzs7O1dBR0c7UUFDTSxlQUFVLEdBQWEsRUFBRSxDQUFDO1FBRW5DOzs7V0FHRztRQUNNLG1CQUFjLEdBQWlCLE1BQU0sQ0FBQztRQUUvQzs7O1dBR0c7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXpCOzs7V0FHRztRQUNNLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRS9COzs7V0FHRztRQUNNLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUVoQzs7O1dBR0c7UUFDTSxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUUxQjs7O1dBR0c7UUFDTSxxQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztRQUVsRDs7O1dBR0c7UUFDTSx3QkFBbUIsR0FBb0IsTUFBTSxDQUFDO1FBRXZEOzs7V0FHRztRQUNNLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUV2Qzs7O1dBR0c7UUFDTSx3QkFBbUIsR0FBdUIsS0FBSyxDQUFDO1FBRXpEOzs7V0FHRztRQUNNLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUUxQzs7O1dBR0c7UUFDTSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFtQmxDOzs7V0FHRztRQUNhLFdBQU0sR0FBUSxTQUFTLENBQUM7UUFXeEM7Ozs7V0FJRztRQUNPLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQWF6QywrQkFBMEIsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0RSxhQUFRLEdBQWUsRUFBRSxDQUFDO1FBQzFCLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUN6Qyx1QkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBRTVDLHNCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUN4QiwwQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFFM0IsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBS3ZCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUE0RmIsZ0VBQWdFO1FBQ2hFLGFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRTlCLGdFQUFnRTtRQUNoRSxjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBekZuQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNuRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3hCLElBQUksS0FBSyxFQUFFLE1BQU07b0JBQUUsSUFBSSxDQUFDLFFBQVEsR0FBSSxLQUFLLENBQUMsTUFBYyxDQUFDLFdBQVcsQ0FBQztZQUN2RSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FDdEUsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FDYyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBRS9DLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxtQkFBbUIsQ0FDNUMsT0FBTyxFQUNQLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ3hDLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTywyQkFBMkI7UUFDakMsSUFBSSxDQUFDLG9CQUFvQjtZQUN2QixJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQ3hDLE9BQU8sRUFDUCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUN4QyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxLQUFVO1FBQ3hDLFNBQVMsa0JBQWtCLENBQ3pCLE9BQTJCLEVBQzNCLFNBQWlCO1lBRWpCLElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQztZQUM3QixPQUFPLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLGNBQWMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQ2pELE9BQU8sY0FBYyxDQUFDO2dCQUN4QixDQUFDO2dCQUNELGNBQWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1lBQ2hELENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUxQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUM7WUFDaEUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ2QsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUUzRCxJQUNFLElBQUksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUMxRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBUUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVUsRUFBRSxRQUFRLEdBQUcsS0FBSztRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsSUFBaUI7UUFDdEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBRWpCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUV0QixRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUN2QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBUztRQUNsQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDL0MsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxTQUFjO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQy9CLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxVQUFVLEVBQ3ZDLEdBQUcsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFjO1FBQzFCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUk7WUFBRSxPQUFPO1FBRXBELElBQUksT0FBTyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtpQkFDakMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7YUFDakMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUU3QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxjQUFjLENBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUMxRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQ3RELGNBQWMsQ0FDUixDQUFDO2dCQUNULElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2IsUUFBUSxDQUFDLGNBQWMsQ0FBQzt3QkFDdEIsUUFBUSxFQUFFLFNBQVM7d0JBQ25CLEtBQUssRUFBRSxTQUFTO3dCQUNoQixNQUFNLEVBQUUsUUFBUTtxQkFDakIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUNsQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUM7NEJBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO29CQUNyRSxDQUFDOzt3QkFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7b0JBQ3BDLElBQUksR0FBRyxFQUFFLENBQUM7d0JBQ1IsTUFBTSxHQUFHLEdBQ1AsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUzt3QkFDdkMsMEJBQTBCO3dCQUMxQixDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUMvQixJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNWLElBQUksR0FBRyxJQUFJLENBQUM7NEJBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDeEQsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFnQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRTNCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzVDLENBQUMsQ0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQ3JDLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTFFLElBQUksU0FBUztnQkFBRyxTQUF5QixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQWlCO1FBQ3BDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLEVBQUUsYUFBYTtZQUFFLENBQUMsSUFBSSxFQUFFLGFBQTZCLENBQUEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRU8sdUJBQXVCLENBQUMsSUFBaUI7UUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFJLENBQUMsdUJBQXVCLENBQzFCLEtBQUssRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsdUJBQXVCLENBQzFCLEtBQUssRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBVTtRQUNkLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUNFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDdEMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUNqRCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBRXBDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNoQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksVUFBVSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUM7WUFDakMsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNoQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxJQUFJLGVBQWUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZ0VBQWdFO0lBQ2hFLGdCQUFnQixDQUFDLFFBQWlCLElBQUcsQ0FBQztJQUV0QyxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBWTtRQUNqQyxTQUFTLFlBQVksQ0FBQyxHQUFXO1lBQy9CLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRCxJQUFJLGtCQUFrQixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBQ0QsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3JCLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDO1lBRTlELElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsUUFBZTtRQUNyQyxNQUFNLFNBQVMsR0FBRyxDQUNoQixDQUFNLEVBQ04sV0FBbUIsRUFDbkIsVUFBa0IsRUFDbEIsR0FBVyxFQUNYLGtCQUF1QixFQUN2QixFQUFFO1lBQ0YsTUFBTSxLQUFLLEdBQUc7Z0JBQ1osS0FBSyxFQUFFLElBQUk7Z0JBQ1gsS0FBSyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUM7Z0JBQ3JCLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUNuQixHQUFHO2dCQUNILFVBQVUsRUFBRSxNQUFNLEdBQUcsR0FBRzthQUNiLENBQUM7WUFFZCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQixLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUN4QixDQUFDO1lBRUQsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2xCLEtBQUssQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO2dCQUN6QixLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDekIsS0FBSyxDQUFDLFVBQVUsSUFBSSxpQ0FBaUMsQ0FBQztnQkFDdEQsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztvQkFDbEMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxLQUFhLEVBQUUsRUFBRTtvQkFDeEQsT0FBTyxTQUFTLENBQ2QsQ0FBQyxFQUNELFdBQVcsRUFDWCxVQUFVLEVBQ1YsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEVBQ2pCLGtCQUFrQixDQUNuQixDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDL0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7UUFFRixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3pDLE9BQU8sU0FBUyxDQUNkLE1BQU0sRUFDTixJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsVUFBVSxFQUNmLEVBQUUsR0FBRyxLQUFLLEVBQ1YsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU3QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFjO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFDdkMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDaEMsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVELFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELG9CQUFvQixDQUFDLFNBQWM7UUFDakMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxLQUFVO1FBQ3RDLFNBQVMsTUFBTSxDQUFDLENBQU0sRUFBRSxHQUFxQjtZQUMzQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNwQixPQUFPLEdBQUcsQ0FBQztnQkFDYixDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVsRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixNQUFNLEdBQUcsR0FBZSxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLEdBQUc7b0JBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQWEsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDbkQsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFRCxpRkFBaUY7SUFDakYsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7OEdBMXBCVSw0QkFBNEI7a0dBQTVCLDRCQUE0Qiw2d0NBRjdCLEVBQUU7OzJGQUVELDRCQUE0QjtrQkFIeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjs7MEJBa09JLElBQUk7OzBCQUFJLFFBQVE7eUVBMU5WLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxJQUFJO3NCQUFaLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsYUFBYTtzQkFBckIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQU1HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQU1HLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFNRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBTUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQU1HLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFNRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBTU8sT0FBTztzQkFBbkIsS0FBSztnQkFpQlUsTUFBTTtzQkFBckIsS0FBSzt1QkFBQyxPQUFPO2dCQWdCSixZQUFZO3NCQUFyQixNQUFNO2dCQUdQLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBSS9CLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhO2dCQUdELFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFHckIsS0FBSztzQkFESixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUcmVlIH0gZnJvbSAncHJpbWVuZy90cmVlJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgSWNvblR5cGUsIGljb25TaXplVHlwZSB9IGZyb20gJy4uLy4uL2Nwcy1pY29uL2Nwcy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb252ZXJ0U2l6ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ludGVybmFsL3NpemUtdXRpbHMnO1xuaW1wb3J0IHsgQ3BzVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9jcHMtdG9vbHRpcC9jcHMtdG9vbHRpcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ3BzTWVudUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Nwcy1tZW51L2Nwcy1tZW51LmNvbXBvbmVudCc7XG5cbi8qKlxuICogQmFzZVRyZWVEcm9wZG93bkNvbXBvbmVudCBpcyBhbiBpbnRlcm5hbCBiYXNlIGNvbXBvbmVudCB0byBzdXBwb3J0IGhpZXJhcmNoaWNhbCBkYXRhIGRyb3Bkb3duLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBDcHNCYXNlVHJlZURyb3Bkb3duQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBMYWJlbCBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIEJvdHRvbSBoaW50IHRleHQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaGludCA9ICcnO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgbXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBzZWxlY3RlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaWR0aCBvZiB0aGUgY29tcG9uZW50LCBvZiB0eXBlIG51bWJlciBkZW5vdGluZyBwaXhlbHMgb3Igc3RyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqIFdoZW4gc2VsZWN0aW5nIGFuIGVsZW1lbnQsIGl0IHdpbGwgYXBwZWFyIGluIGEgZm9ybSBvZiBhIGNoaXAuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY2hpcHMgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNoaXBzIGNhbiBiZSBkaXJlY3RseSByZW1vdmVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNsb3NhYmxlQ2hpcHMgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGEgY2xlYXIgaWNvbiBpcyBkaXNwbGF5ZWQgdG8gY2xlYXIgdGhlIHZhbHVlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGRyb3Bkb3duIHNob3VsZCBvcGVuIG9uIGNsZWFyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG9wZW5PbkNsZWFyID0gdHJ1ZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgbGFiZWwgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbkxhYmVsID0gJ2xhYmVsJztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaW5mbyBmaWVsZCBvZiBhbiBvcHRpb24sIHNob3dzIHRoZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRleHQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uSW5mbyA9ICdpbmZvJztcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaGlkaW5nIGRldGFpbHMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaGlkZURldGFpbHMgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIGhhdmUgcGVyc2lzdGVudCBjbGVhciBpY29uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHBlcnNpc3RlbnRDbGVhciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJY29uIGJlZm9yZSBpbnB1dCB2YWx1ZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBwcmVmaXhJY29uOiBJY29uVHlwZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIGljb24gYmVmb3JlIGlucHV0IHZhbHVlLCBvZiB0eXBlIG51bWJlciwgc3RyaW5nLCAnZmlsbCcsICd4c21hbGwnLCAnc21hbGwnLCAnbm9ybWFsJyBvciAnbGFyZ2UnLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHByZWZpeEljb25TaXplOiBpY29uU2l6ZVR5cGUgPSAnMThweCc7XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgYSBsb2FkaW5nIGJhciBpcyBkaXNwbGF5ZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb25seSB0aGUgZWxlbWVudHMgd2l0aGluIHNjcm9sbGFibGUgYXJlYSBzaG91bGQgYmUgYWRkZWQgaW50byB0aGUgRE9NLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBob3cgbWFueSBhZGRpdGlvbmFsIGVsZW1lbnRzIHRvIGFkZCB0byB0aGUgRE9NIG91dHNpZGUgb2YgdGhlIHZpZXcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbnVtVG9sZXJhdGVkSXRlbXMgPSAxMDtcblxuICAvKipcbiAgICogV2hlbiBpdCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nLCBhbiBpbmZvIGljb24gaXMgZGlzcGxheWVkIHRvIHNob3cgdGV4dCBmb3IgbW9yZSBpbmZvLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwID0gJyc7XG5cbiAgLyoqXG4gICAqIEluZm8gdG9vbHRpcCBjbGFzcyBmb3Igc3R5bGluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcENsYXNzID0gJ2Nwcy10b29sdGlwLWNvbnRlbnQnO1xuXG4gIC8qKlxuICAgKiBNYXggd2lkdGggb2YgaW5mb1Rvb2x0aXAgb2YgdHlwZSBudW1iZXIgZGVub3RpbmcgcGl4ZWxzIG9yIHN0cmluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcE1heFdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgaW5mb1Rvb2x0aXAgaXMgcGVyc2lzdGVudC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcFBlcnNpc3RlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogUG9zaXRpb24gb2YgaW5mb1Rvb2x0aXAsIGl0IGNhbiBiZSAndG9wJywgJ2JvdHRvbScsICdsZWZ0JyBvciAncmlnaHQnLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwUG9zaXRpb246IENwc1Rvb2x0aXBQb3NpdGlvbiA9ICd0b3AnO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCwgaXQgZXhwYW5kcyBhbGwgZGlyZWN0aW9yaWVzIGluaXRpYWxseS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbml0aWFsRXhwYW5kRGlyZWN0b3JpZXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hlbiBzZXQsIGl0IGV4cGFuZHMgYWxsIG9wdGlvbnMgaW5pdGlhbGx5LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluaXRpYWxFeHBhbmRBbGwgPSBmYWxzZTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygb2JqZWN0cyB0byBkaXNwbGF5IGFzIHRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzZXQgb3B0aW9ucyhvcHRpb25zOiBhbnlbXSkge1xuICAgIGlmIChvcHRpb25zPy5zb21lKChvKSA9PiBvLmlubmVyKSkge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX3RvSW5uZXJPcHRpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogVHJlZU5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoJ3ZhbHVlJykgX3ZhbHVlOiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSBvbiB2YWx1ZSBjaGFuZ2UuXG4gICAqIEBwYXJhbSB7YW55fSBhbnkgLSB2YWx1ZSBjaGFuZ2VkLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAVmlld0NoaWxkKCdjb21wb25lbnRDb250YWluZXInKVxuICBjb21wb25lbnRDb250YWluZXIhOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ29wdGlvbnNNZW51JylcbiAgb3B0aW9uc01lbnUhOiBDcHNNZW51Q29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ3RyZWVMaXN0JykgdHJlZUxpc3QhOiBUcmVlO1xuXG4gIEBWaWV3Q2hpbGQoJ2JveEVsJylcbiAgYm94RWwhOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX3N0YXR1c0NoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBfb3B0aW9uczogVHJlZU5vZGVbXSA9IFtdO1xuICBvcHRpb25zTWFwID0gbmV3IE1hcDxzdHJpbmcsIFRyZWVOb2RlPigpO1xuICBvcmlnaW5hbE9wdGlvbnNNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gIHZpcnR1YWxMaXN0SGVpZ2h0ID0gMjQwO1xuICB2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgPSA0MDtcblxuICBlcnJvciA9ICcnO1xuICBjdnRXaWR0aCA9ICcnO1xuICBpc09wZW5lZCA9IGZhbHNlO1xuICBvcHRpb25Gb2N1c2VkID0gZmFsc2U7XG4gIGlzQXV0b2NvbXBsZXRlID0gZmFsc2U7XG5cbiAgdHJlZUNvbnRhaW5lckVsZW1lbnQhOiBIVE1MRWxlbWVudDtcbiAgdHJlZVNlbGVjdGlvbjogYW55O1xuXG4gIGJveFdpZHRoID0gMDtcbiAgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIGNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwdWJsaWMgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICBpZiAoZW50cnk/LnRhcmdldCkgdGhpcy5ib3hXaWR0aCA9IChlbnRyeS50YXJnZXQgYXMgYW55KS5vZmZzZXRXaWR0aDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jdnRXaWR0aCA9IGNvbnZlcnRTaXplKHRoaXMud2lkdGgpO1xuICAgIGlmICghdGhpcy5fdmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gW107XG4gICAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWVTZWxlY3Rpb24gPSB0aGlzLl92YWx1ZVRvVHJlZVNlbGVjdGlvbih0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sPy5zdGF0dXNDaGFuZ2VzPy5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoZWNrRXJyb3JzKCk7XG4gICAgICB9XG4gICAgKSBhcyBTdWJzY3JpcHRpb247XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5faW5pdENvbnRhaW5lckNsaWNrTGlzdGVuZXIoKTtcbiAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuYm94RWwubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy50cmVlQ29udGFpbmVyRWxlbWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjbGljaycsXG4gICAgICB0aGlzLl9oYW5kbGVPbkNvbnRhaW5lckNsaWNrLmJpbmQodGhpcylcbiAgICApO1xuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdENvbnRhaW5lckNsaWNrTGlzdGVuZXIoKSB7XG4gICAgdGhpcy50cmVlQ29udGFpbmVyRWxlbWVudCA9XG4gICAgICB0aGlzLnRyZWVMaXN0Py5lbD8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcignLnAtdHJlZS1jb250YWluZXInKTtcbiAgICBpZiAodGhpcy50cmVlQ29udGFpbmVyRWxlbWVudCkge1xuICAgICAgdGhpcy50cmVlQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnY2xpY2snLFxuICAgICAgICB0aGlzLl9oYW5kbGVPbkNvbnRhaW5lckNsaWNrLmJpbmQodGhpcylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT25Db250YWluZXJDbGljayhldmVudDogYW55KSB7XG4gICAgZnVuY3Rpb24gZ2V0UGFyZW50V2l0aENsYXNzKFxuICAgICAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLFxuICAgICAgY2xhc3NOYW1lOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICB3aGlsZSAoY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9uRm9jdXNlZCA9IHRydWU7XG5cbiAgICBjb25zdCBlbGVtID0gZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygncC10cmVlbm9kZS1jb250ZW50JylcbiAgICAgID8gZXZlbnQudGFyZ2V0XG4gICAgICA6IGdldFBhcmVudFdpdGhDbGFzcyhldmVudC50YXJnZXQsICdwLXRyZWVub2RlLWNvbnRlbnQnKTtcblxuICAgIGlmIChcbiAgICAgIGVsZW0/LnBhcmVudEVsZW1lbnQ/LmNsYXNzTGlzdD8uY29udGFpbnMoJ2Nwcy10cmVlLW5vZGUtZnVsbHktZXhwYW5kYWJsZScpXG4gICAgKSB7XG4gICAgICB0aGlzLm9uQ2xpY2tGdWxseUV4cGFuZGFibGUoZWxlbSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvbkNoYW5nZSA9IChldmVudDogYW55KSA9PiB7fTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55LCBpbnRlcm5hbCA9IGZhbHNlKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIGlmICghaW50ZXJuYWwgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IHRoaXMuX3ZhbHVlVG9UcmVlU2VsZWN0aW9uKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUsIHRydWUpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2VkLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25TZWxlY3ROb2RlKCkge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy50b2dnbGVPcHRpb25zKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvbkNsaWNrRnVsbHlFeHBhbmRhYmxlKGVsZW06IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgcGFyZW50ID0gZWxlbS5wYXJlbnRFbGVtZW50O1xuICAgIGNvbnN0IGtleSA9IHRoaXMuX2dldEhUTUxFbGVtZW50S2V5KHBhcmVudCk7XG4gICAgaWYgKCFrZXkpIHJldHVybjtcblxuICAgIGNvbnN0IHRyZWVOb2RlID0gdGhpcy5vcHRpb25zLmZpbmQoKG8pID0+IG8ua2V5ID09PSBrZXkpO1xuICAgIGlmICghdHJlZU5vZGUpIHJldHVybjtcblxuICAgIHRyZWVOb2RlLmV4cGFuZGVkID0gIXRyZWVOb2RlLmV4cGFuZGVkO1xuICAgIHRoaXMudXBkYXRlT3B0aW9ucygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fbm9kZVRvZ2dsZWQoZWxlbSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRIVE1MRWxlbWVudEtleShlbGVtOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghZWxlbT8uY2xhc3NMaXN0KSByZXR1cm4gJyc7XG4gICAgY29uc3QgY2xhc3NMaXN0ID0gWy4uLmVsZW0uY2xhc3NMaXN0XTtcbiAgICBjb25zdCBrZXkgPSBjbGFzc0xpc3QuZmluZCgoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBjbGFzc05hbWUuc3RhcnRzV2l0aCgna2V5LScpO1xuICAgIH0pO1xuICAgIGlmICgha2V5KSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGtleS5yZXBsYWNlKCdrZXktJywgJycpO1xuICB9XG5cbiAgdHJlZVNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0aW9uOiBhbnkpIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudHJlZVNlbGVjdGlvblRvVmFsdWUoc2VsZWN0aW9uKSk7XG4gIH1cblxuICByZWNhbGNWaXJ0dWFsTGlzdEhlaWdodCgpIHtcbiAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnRMZW4gPSB0aGlzLnRyZWVMaXN0Py5zZXJpYWxpemVkVmFsdWU/Lmxlbmd0aCB8fCAwO1xuICAgIHRoaXMudmlydHVhbExpc3RIZWlnaHQgPSBNYXRoLm1pbihcbiAgICAgIHRoaXMudmlydHVhbFNjcm9sbEl0ZW1TaXplICogY3VycmVudExlbixcbiAgICAgIDI0MFxuICAgICk7XG4gIH1cblxuICB0b2dnbGVPcHRpb25zKHNob3c/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc09wZW5lZCA9PT0gc2hvdykgcmV0dXJuO1xuXG4gICAgaWYgKHR5cGVvZiBzaG93ID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGlmIChzaG93KSB7XG4gICAgICAgIHRoaXMub3B0aW9uc01lbnUuc2hvdyh7XG4gICAgICAgICAgdGFyZ2V0OiB0aGlzLmJveEVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNNZW51LmhpZGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zTWVudS50b2dnbGUoe1xuICAgICAgICB0YXJnZXQ6IHRoaXMuYm94RWwubmF0aXZlRWxlbWVudFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5pc09wZW5lZCA9IHRoaXMub3B0aW9uc01lbnUuaXNWaXNpYmxlKCk7XG5cbiAgICB0aGlzLm9wdGlvbkZvY3VzZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5pc09wZW5lZCAmJiB0aGlzLnRyZWVTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuX2V4cGFuZFRvTm9kZXMoXG4gICAgICAgIHRoaXMubXVsdGlwbGUgPyB0aGlzLnRyZWVTZWxlY3Rpb24gOiBbdGhpcy50cmVlU2VsZWN0aW9uXVxuICAgICAgKTtcbiAgICAgIHRoaXMudXBkYXRlT3B0aW9ucygpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnRyZWVDb250YWluZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgJy5wLWhpZ2hsaWdodCdcbiAgICAgICAgKSBhcyBhbnk7XG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgIHNlbGVjdGVkLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgIGJlaGF2aW9yOiAnaW5zdGFudCcsXG4gICAgICAgICAgICBibG9jazogJ25lYXJlc3QnLFxuICAgICAgICAgICAgaW5saW5lOiAnY2VudGVyJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLnRyZWVTZWxlY3Rpb24pIHtcbiAgICAgICAgICBsZXQga2V5ID0gJyc7XG4gICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVTZWxlY3Rpb24ubGVuZ3RoID4gMCkga2V5ID0gdGhpcy50cmVlU2VsZWN0aW9uWzBdLmtleTtcbiAgICAgICAgICB9IGVsc2Uga2V5ID0gdGhpcy50cmVlU2VsZWN0aW9uLmtleTtcbiAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPVxuICAgICAgICAgICAgICB0aGlzLnRyZWVMaXN0Py5zZXJpYWxpemVkVmFsdWU/LmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAvLyBUb2RvOiBBZGQgZXhwbGljaXQgdHlwZVxuICAgICAgICAgICAgICAgICh2OiBhbnkpID0+IHYubm9kZS5rZXkgPT09IGtleVxuICAgICAgICAgICAgICApIHx8IC0xO1xuICAgICAgICAgICAgaWYgKGlkeCA+PSAwKSB0aGlzLnRyZWVMaXN0LnNjcm9sbFRvVmlydHVhbEluZGV4KGlkeCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZW1vdmUob3B0aW9uOiBUcmVlTm9kZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkgcmV0dXJuO1xuXG4gICAgdGhpcy50cmVlU2VsZWN0aW9uID0gdGhpcy50cmVlU2VsZWN0aW9uLmZpbHRlcihcbiAgICAgICh2OiBUcmVlTm9kZSkgPT4gIWlzRXF1YWwodiwgb3B0aW9uKVxuICAgICk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnRyZWVTZWxlY3Rpb25Ub1ZhbHVlKHRoaXMudHJlZVNlbGVjdGlvbikpO1xuICB9XG5cbiAgaW5pdEFycm93c05hdmlnYXRvbigpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHJldHVybjtcblxuICAgIGlmICghdGhpcy5vcHRpb25Gb2N1c2VkKSB7XG4gICAgICBjb25zdCBmaXJzdEVsZW0gPSB0aGlzLnRyZWVDb250YWluZXJFbGVtZW50Py5xdWVyeVNlbGVjdG9yKCcucC10cmVlbm9kZScpO1xuXG4gICAgICBpZiAoZmlyc3RFbGVtKSAoZmlyc3RFbGVtIGFzIEhUTUxFbGVtZW50KS5mb2N1cygpO1xuICAgICAgdGhpcy5vcHRpb25Gb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9ub2RlVG9nZ2xlZChlbGVtOiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMucmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub3B0aW9uc01lbnUuYWxpZ24oKTtcbiAgICB9KTtcblxuICAgIGlmIChlbGVtPy5wYXJlbnRFbGVtZW50KSAoZWxlbT8ucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX25vZGVUb2dnbGVkV2l0aENoZXZyb24oZWxlbTogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLl9ub2RlVG9nZ2xlZChlbGVtKTtcbiAgICAvLyBmaXggcHJpbWVuZyB0cmVlIGV2ZW50IHN0b3AgcHJvcGFnYXRpb25cbiAgICB0aGlzLm9wdGlvbnNNZW51LnNlbGZDbGljayA9IGZhbHNlO1xuICB9XG5cbiAgb25Ob2RlRXhwYW5kKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLl9ub2RlVG9nZ2xlZFdpdGhDaGV2cm9uKFxuICAgICAgZXZlbnQ/Lm9yaWdpbmFsRXZlbnQ/LmN1cnJlbnRUYXJnZXQ/LnBhcmVudEVsZW1lbnRcbiAgICApO1xuICB9XG5cbiAgb25Ob2RlQ29sbGFwc2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuX25vZGVUb2dnbGVkV2l0aENoZXZyb24oXG4gICAgICBldmVudD8ub3JpZ2luYWxFdmVudD8uY3VycmVudFRhcmdldD8ucGFyZW50RWxlbWVudFxuICAgICk7XG4gIH1cblxuICBjbGVhcihldmVudDogYW55KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoXG4gICAgICAoIXRoaXMubXVsdGlwbGUgJiYgdGhpcy50cmVlU2VsZWN0aW9uKSB8fFxuICAgICAgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy50cmVlU2VsZWN0aW9uPy5sZW5ndGggPiAwKVxuICAgICkge1xuICAgICAgaWYgKHRoaXMub3Blbk9uQ2xlYXIpIHtcbiAgICAgICAgdGhpcy50b2dnbGVPcHRpb25zKHRydWUpO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsID0gdGhpcy5tdWx0aXBsZSA/IFtdIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy50cmVlU2VsZWN0aW9uID0gdmFsO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWwpO1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbkZvY3VzZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrRXJyb3JzKCk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuY29udHJvbD8uZXJyb3JzO1xuXG4gICAgaWYgKCF0aGlzLmNvbnRyb2w/LmNvbnRyb2w/LnRvdWNoZWQgfHwgIWVycm9ycykge1xuICAgICAgdGhpcy5lcnJvciA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgncmVxdWlyZWQnIGluIGVycm9ycykge1xuICAgICAgdGhpcy5lcnJvciA9ICdGaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyQXJyID0gT2JqZWN0LnZhbHVlcyhlcnJvcnMpO1xuICAgIGlmIChlcnJBcnIubGVuZ3RoIDwgMSkge1xuICAgICAgdGhpcy5lcnJvciA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlID0gZXJyQXJyLmZpbmQoKG1zZykgPT4gdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycpO1xuXG4gICAgdGhpcy5lcnJvciA9IG1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKSB7fVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLmNvbnRyb2w/LmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLl9jaGVja0Vycm9ycygpO1xuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgdGhpcy50b2dnbGVPcHRpb25zKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXhwYW5kVG9Ob2Rlcyhub2RlczogYW55W10pIHtcbiAgICBmdW5jdGlvbiBnZXRQYXJlbnRLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgY29uc3QgbGFzdFNlcGFyYXRvckluZGV4ID0ga2V5Lmxhc3RJbmRleE9mKCctJyk7XG4gICAgICBpZiAobGFzdFNlcGFyYXRvckluZGV4ICE9PSAtMSkge1xuICAgICAgICByZXR1cm4ga2V5LnN1YnN0cmluZygwLCBsYXN0U2VwYXJhdG9ySW5kZXgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudE5vZGVLZXkgPSBnZXRQYXJlbnRLZXkobm9kZS5rZXkpO1xuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMub3B0aW9uc01hcC5nZXQocGFyZW50Tm9kZUtleSkgfHwgbnVsbDtcblxuICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2V4cGFuZFRvTm9kZXMoW3BhcmVudE5vZGVdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3RvSW5uZXJPcHRpb25zKF9vcHRpb25zOiBhbnlbXSk6IFRyZWVOb2RlW10ge1xuICAgIGNvbnN0IG1hcE9wdGlvbiA9IChcbiAgICAgIG86IGFueSxcbiAgICAgIG9wdGlvbkxhYmVsOiBzdHJpbmcsXG4gICAgICBvcHRpb25JbmZvOiBzdHJpbmcsXG4gICAgICBrZXk6IHN0cmluZyxcbiAgICAgIG9yaWdpbmFsT3B0aW9uc01hcDogYW55XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBpbm5lciA9IHtcbiAgICAgICAgaW5uZXI6IHRydWUsXG4gICAgICAgIGxhYmVsOiBvW29wdGlvbkxhYmVsXSxcbiAgICAgICAgaW5mbzogb1tvcHRpb25JbmZvXSxcbiAgICAgICAga2V5LFxuICAgICAgICBzdHlsZUNsYXNzOiAna2V5LScgKyBrZXlcbiAgICAgIH0gYXMgVHJlZU5vZGU7XG5cbiAgICAgIGlmICh0aGlzLmluaXRpYWxFeHBhbmRBbGwpIHtcbiAgICAgICAgaW5uZXIuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoby5pc0RpcmVjdG9yeSkge1xuICAgICAgICBpbm5lci50eXBlID0gJ2RpcmVjdG9yeSc7XG4gICAgICAgIGlubmVyLnNlbGVjdGFibGUgPSBmYWxzZTtcbiAgICAgICAgaW5uZXIuc3R5bGVDbGFzcyArPSAnIGNwcy10cmVlLW5vZGUtZnVsbHktZXhwYW5kYWJsZSc7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxFeHBhbmREaXJlY3Rvcmllcykge1xuICAgICAgICAgIGlubmVyLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG8uY2hpbGRyZW4pIHtcbiAgICAgICAgaW5uZXIuY2hpbGRyZW4gPSBvLmNoaWxkcmVuLm1hcCgoYzogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG1hcE9wdGlvbihcbiAgICAgICAgICAgIGMsXG4gICAgICAgICAgICBvcHRpb25MYWJlbCxcbiAgICAgICAgICAgIG9wdGlvbkluZm8sXG4gICAgICAgICAgICBrZXkgKyAnLScgKyBpbmRleCxcbiAgICAgICAgICAgIG9yaWdpbmFsT3B0aW9uc01hcFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgb3JpZ2luYWxPcHRpb25zTWFwLnNldChrZXksIG8pO1xuICAgICAgcmV0dXJuIGlubmVyO1xuICAgIH07XG5cbiAgICBjb25zdCByZXMgPSBfb3B0aW9ucy5tYXAoKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIHJldHVybiBtYXBPcHRpb24oXG4gICAgICAgIG9wdGlvbixcbiAgICAgICAgdGhpcy5vcHRpb25MYWJlbCxcbiAgICAgICAgdGhpcy5vcHRpb25JbmZvLFxuICAgICAgICAnJyArIGluZGV4LFxuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9uc01hcFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRoaXMub3B0aW9uc01hcCA9IHRoaXMuX2J1aWxkT3B0aW9uc01hcChyZXMpO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkT3B0aW9uc01hcChvcHRpb25zOiBhbnlbXSk6IE1hcDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IG5vZGVNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgIG5vZGVNYXAuc2V0KG9wdGlvbi5rZXksIG9wdGlvbik7XG4gICAgICBpZiAob3B0aW9uLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZU1hcCA9IHRoaXMuX2J1aWxkT3B0aW9uc01hcChvcHRpb24uY2hpbGRyZW4pO1xuICAgICAgICBjaGlsZE5vZGVNYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gbm9kZU1hcC5zZXQoa2V5LCB2YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm9kZU1hcDtcbiAgfVxuXG4gIHRyZWVTZWxlY3Rpb25Ub1ZhbHVlKHNlbGVjdGlvbjogYW55KSB7XG4gICAgaWYgKCFzZWxlY3Rpb24pIHJldHVybiB0aGlzLm11bHRpcGxlID8gW10gOiB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiBzZWxlY3Rpb24ubWFwKChzOiBhbnkpID0+IHRoaXMub3JpZ2luYWxPcHRpb25zTWFwLmdldChzLmtleSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5vcmlnaW5hbE9wdGlvbnNNYXAuZ2V0KHNlbGVjdGlvbi5rZXkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlVG9UcmVlU2VsZWN0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICBmdW5jdGlvbiBnZXRLZXkodjogYW55LCBtYXA6IE1hcDxzdHJpbmcsIGFueT4pOiBzdHJpbmcge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIG1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgaWYgKGlzRXF1YWwodiwgdmFsKSkge1xuICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdGhpcy5tdWx0aXBsZSA/IFtdIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGNvbnN0IHJlczogVHJlZU5vZGVbXSA9IFtdO1xuICAgICAgdmFsdWUuZm9yRWFjaCgodjogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGdldEtleSh2LCB0aGlzLm9yaWdpbmFsT3B0aW9uc01hcCk7XG4gICAgICAgIGlmIChrZXkpIHJlcy5wdXNoKHRoaXMub3B0aW9uc01hcC5nZXQoa2V5KSBhcyBUcmVlTm9kZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGtleSA9IGdldEtleSh2YWx1ZSwgdGhpcy5vcmlnaW5hbE9wdGlvbnNNYXApO1xuICAgICAgcmV0dXJuIGtleSA/IHRoaXMub3B0aW9uc01hcC5nZXQoa2V5KSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvLyB0aGlzIGlzIGEgZml4IG9mIHByaW1lbmcgY2hhbmdlIGRldGVjdGlvbiBidWcgd2hlbiB2aXJ0dWFsIHNjcm9sbGVyIGlzIGVuYWJsZWRcbiAgdXBkYXRlT3B0aW9ucygpIHtcbiAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCkgcmV0dXJuO1xuICAgIHRoaXMub3B0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnNdO1xuICB9XG59XG4iXX0=
@@ -254,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
254
254
  type: HostListener,
255
255
  args: ['window:resize', ['$event']]
256
256
  }] } });
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRvb2x0aXAuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2RpcmVjdGl2ZXMvY3BzLXRvb2x0aXAvY3BzLXRvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBSzlEOzs7R0FHRztBQUtILE1BQU0sT0FBTyxtQkFBbUI7SUEyRDlCLGtEQUFrRDtJQUNsRCxZQUFvQixXQUFvQztRQUFwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFyRHhEOzs7V0FHRztRQUNNLHFCQUFnQixHQUFvQixHQUFHLENBQUM7UUFFakQ7OztXQUdHO1FBQ00sc0JBQWlCLEdBQW9CLEdBQUcsQ0FBQztRQUVsRDs7O1dBR0c7UUFDTSxrQkFBYSxHQUFxQixPQUFPLENBQUM7UUFFbkQ7OztXQUdHO1FBQ00sb0JBQWUsR0FBdUIsS0FBSyxDQUFDO1FBRXJEOzs7V0FHRztRQUNNLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUVuQzs7O1dBR0c7UUFDTSxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUVqQzs7O1dBR0c7UUFDTSxvQkFBZSxHQUFvQixNQUFNLENBQUM7UUFFbkQ7OztXQUdHO1FBQ00sd0JBQW1CLEdBQUcscUJBQXFCLENBQUM7UUFhN0MsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBRXhCLElBQUksSUFBSSxDQUFDLGVBQWU7Z0JBQUUsT0FBTztZQUVqQyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGlCQUFp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c0JBQXZCLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQU1HLGVBQWU7c0JBQXZCLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBNkpzQixZQUFZO3NCQUF2QyxZQUFZO3VCQUFDLFlBQVk7Z0JBV0UsWUFBWTtzQkFBdkMsWUFBWTt1QkFBQyxZQUFZO2dCQVdILE9BQU87c0JBQTdCLFlBQVk7dUJBQUMsT0FBTztnQkFXQyxNQUFNO3NCQUEzQixZQUFZO3VCQUFDLE1BQU07Z0JBVUcsT0FBTztzQkFBN0IsWUFBWTt1QkFBQyxPQUFPO2dCQVNyQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBYU4sWUFBWTtzQkFBdEQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbnZlcnRTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5cbmV4cG9ydCB0eXBlIENwc1Rvb2x0aXBQb3NpdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xuZXhwb3J0IHR5cGUgQ3BzVG9vbHRpcE9wZW5PbiA9ICdob3ZlcicgfCAnY2xpY2snIHwgJ2ZvY3VzJztcblxuLyoqXG4gKiBDcHNUb29sdGlwRGlyZWN0aXZlIHByb3ZpZGVzIGFkdmlzb3J5IGluZm9ybWF0aW9uIGZvciBhIHRhcmdldCBlbGVtZW50LlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Nwc1Rvb2x0aXBdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDcHNUb29sdGlwRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRvb2x0aXAgdGV4dCBvciBodG1sIHRvIHNob3cuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCdjcHNUb29sdGlwJykgdG9vbHRpcCE6IHN0cmluZztcblxuICAvKipcbiAgICogRGVsYXkgdG8gc2hvdyB0aGUgdG9vbHRpcCBpbiBtaWxsaXNlY29uZHMsIGl0IGNhbiBiZSBvZiB0eXBlIHN0cmluZyBvciBudW1iZXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcE9wZW5EZWxheTogc3RyaW5nIHwgbnVtYmVyID0gMzAwO1xuXG4gIC8qKlxuICAgKiBEZWxheSB0byBoaWRlIHRoZSB0b29sdGlwIGluIG1pbGxpc2Vjb25kcywgaXQgY2FuIGJlIG9mIHR5cGUgc3RyaW5nIG9yIG51bWJlci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwQ2xvc2VEZWxheTogc3RyaW5nIHwgbnVtYmVyID0gMzAwO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgc2hvdWxkIG9wZW4gb24gaG92ZXIsIGNsaWNrIG9yIGZvY3VzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBPcGVuT246IENwc1Rvb2x0aXBPcGVuT24gPSAnaG92ZXInO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCwgaXQgY2FuIGJlICd0b3AnLCAnYm90dG9tJywgJ2xlZnQnIG9yICdyaWdodCcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBDcHNUb29sdGlwUG9zaXRpb24gPSAndG9wJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHBlcnNpc3RlbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcFBlcnNpc3RlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgdG9vbHRpcCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcERpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE1heCB3aWR0aCBvZiB0aGUgdG9vbHRpcCBvZiB0eXBlIG51bWJlciBkZW5vdGluZyBwaXhlbHMgb3Igc3RyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBNYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuXG4gIC8qKlxuICAgKiBUb29sdGlwIGNvbnRlbnQgY2xhc3MgZm9yIHN0eWxpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcENvbnRlbnRDbGFzcyA9ICdjcHMtdG9vbHRpcC1jb250ZW50JztcblxuICBwcml2YXRlIF9wb3B1cD86IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF9zaG93VGltZW91dD86IGFueTtcbiAgcHJpdmF0ZSBfaGlkZVRpbWVvdXQ/OiBhbnk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY29uc3RydWN0b3JcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveVRvb2x0aXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZVRvb2x0aXAgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuX3BvcHVwKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMuX3BvcHVwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5fY29uc3RydWN0RWxlbWVudCh0aGlzLl9wb3B1cCk7XG5cbiAgICBpZiAodGhpcy50b29sdGlwUGVyc2lzdGVudClcbiAgICAgIHRoaXMuX3BvcHVwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fZGVzdHJveVRvb2x0aXApO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX2Rlc3Ryb3lUb29sdGlwLCB0cnVlKTtcbiAgfTtcblxuICBwcml2YXRlIF9kZXN0cm95VG9vbHRpcCA9IChldmVudDogYW55ID0gdW5kZWZpbmVkKSA9PiB7XG4gICAgY29uc3QgcmVtb3ZlRnJvbURPTSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX3BvcHVwPy5yZW1vdmUoKTtcbiAgICAgIHRoaXMuX3BvcHVwID0gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fZGVzdHJveVRvb2x0aXAsIHRydWUpO1xuICAgIGlmICghdGhpcy5fcG9wdXApIHJldHVybjtcblxuICAgIHRoaXMuX3BvcHVwLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fZGVzdHJveVRvb2x0aXApO1xuXG4gICAgY29uc3Qgbm9BbmltYXRpb24gPSBbJ3Njcm9sbCcsICdyZXNpemUnXS5pbmNsdWRlcyhldmVudD8udHlwZSk7XG5cbiAgICBpZiAobm9BbmltYXRpb24pIHtcbiAgICAgIHJlbW92ZUZyb21ET00oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcG9wdXAgPSB0aGlzLl9wb3B1cCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHBvcHVwLnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICB9KTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHJlbW92ZUZyb21ET00oKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX2NvbnN0cnVjdEVsZW1lbnQocG9wdXA6IEhUTUxEaXZFbGVtZW50KSB7XG4gICAgY29uc3QgcG9wdXBDb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcG9wdXBDb250ZW50LmlubmVySFRNTCA9IHRoaXMudG9vbHRpcCB8fCAnQWRkIHlvdXIgdGV4dCB0byB0aGlzIHRvb2x0aXAnO1xuICAgIHBvcHVwQ29udGVudC5jbGFzc0xpc3QuYWRkKHRoaXMudG9vbHRpcENvbnRlbnRDbGFzcyk7XG4gICAgcG9wdXAuYXBwZW5kQ2hpbGQocG9wdXBDb250ZW50KTtcblxuICAgIHBvcHVwLmNsYXNzTGlzdC5hZGQoJ2Nwcy10b29sdGlwJyk7XG4gICAgcG9wdXAuc3R5bGUubWF4V2lkdGggPSBjb252ZXJ0U2l6ZSh0aGlzLnRvb2x0aXBNYXhXaWR0aCk7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBvcHVwKTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgcG9wdXAuc3R5bGUub3BhY2l0eSA9ICcxJztcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvb3JkcyA9IHRoaXMuX2dldENvb3JkcygpO1xuICAgIGlmICghY29vcmRzKSB7XG4gICAgICB0aGlzLl9kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgZW5vdWdoIHNwYWNlIG9uIHRoZSBzY3JlZW4gZm9yIHRoZSB0b29sdGlwIScpO1xuICAgIH1cblxuICAgIHBvcHVwLnN0eWxlLmxlZnQgPSBjb29yZHMubGVmdC50b1N0cmluZygpICsgJ3B4JztcbiAgICBwb3B1cC5zdHlsZS50b3AgPSBjb29yZHMudG9wLnRvU3RyaW5nKCkgKyAncHgnO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29vcmRzKCk6IHsgbGVmdDogbnVtYmVyOyB0b3A6IG51bWJlciB9IHwgdW5kZWZpbmVkIHtcbiAgICBmdW5jdGlvbiBpc0luc2lkZVNjcmVlbihjb29yZHM6IHsgbGVmdDogbnVtYmVyOyB0b3A6IG51bWJlciB9KTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBjb29yZHMudG9wID49IDAgJiZcbiAgICAgICAgY29vcmRzLmxlZnQgPj0gMCAmJlxuICAgICAgICBjb29yZHMubGVmdCArIHBvcHVwUmVjdC53aWR0aCA8PSB3aW5kb3cuaW5uZXJXaWR0aCAmJlxuICAgICAgICBjb29yZHMudG9wICsgcG9wdXBSZWN0LmhlaWdodCA8PSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHBvc2l0aW9ucyA9IFsndG9wJywgJ2JvdHRvbScsICdsZWZ0JywgJ3JpZ2h0J10gYXMgQ3BzVG9vbHRpcFBvc2l0aW9uW107XG4gICAgcG9zaXRpb25zID0gcG9zaXRpb25zLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gdGhpcy50b29sdGlwUG9zaXRpb24pO1xuICAgIHBvc2l0aW9ucy51bnNoaWZ0KHRoaXMudG9vbHRpcFBvc2l0aW9uKTtcblxuICAgIGNvbnN0IHRhcmdldEVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHRhcmdldEVsUmVjdCA9IHRhcmdldEVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHBvcHVwUmVjdCA9ICh0aGlzLl9wb3B1cCBhcyBIVE1MRGl2RWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBmb3IgKGNvbnN0IHBvcyBvZiBwb3NpdGlvbnMpIHtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHRoaXMuX2dldENvb3Jkc0ZvclBvc2l0aW9uKFxuICAgICAgICBwb3MgYXMgQ3BzVG9vbHRpcFBvc2l0aW9uLFxuICAgICAgICB0YXJnZXRFbCxcbiAgICAgICAgdGFyZ2V0RWxSZWN0LFxuICAgICAgICBwb3B1cFJlY3RcbiAgICAgICk7XG5cbiAgICAgIGlmIChpc0luc2lkZVNjcmVlbihjb29yZHMpKSB7XG4gICAgICAgIHJldHVybiBjb29yZHM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldENvb3Jkc0ZvclBvc2l0aW9uKFxuICAgIHBvc2l0aW9uOiBDcHNUb29sdGlwUG9zaXRpb24sXG4gICAgdGFyZ2V0RWw6IEhUTUxFbGVtZW50LFxuICAgIHRhcmdldEVsUmVjdDogRE9NUmVjdCxcbiAgICBwb3B1cFJlY3Q6IERPTVJlY3RcbiAgKToge1xuICAgIGxlZnQ6IG51bWJlcjtcbiAgICB0b3A6IG51bWJlcjtcbiAgfSB7XG4gICAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsZWZ0OlxuICAgICAgICAgICAgdGFyZ2V0RWxSZWN0LmxlZnQgK1xuICAgICAgICAgICAgd2luZG93LnNjcm9sbFggK1xuICAgICAgICAgICAgKHRhcmdldEVsLm9mZnNldFdpZHRoIC0gcG9wdXBSZWN0LndpZHRoKSAvIDIsXG4gICAgICAgICAgdG9wOiB0YXJnZXRFbFJlY3QuYm90dG9tICsgd2luZG93LnNjcm9sbFkgKyA4XG4gICAgICAgIH07XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsZWZ0OiB0YXJnZXRFbFJlY3QubGVmdCAtIHdpbmRvdy5zY3JvbGxYIC0gcG9wdXBSZWN0LndpZHRoIC0gOCxcbiAgICAgICAgICB0b3A6XG4gICAgICAgICAgICB0YXJnZXRFbFJlY3QudG9wICtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICh0YXJnZXRFbC5vZmZzZXRIZWlnaHQgLSBwb3B1cFJlY3QuaGVpZ2h0KSAvIDJcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsZWZ0OiB0YXJnZXRFbFJlY3QucmlnaHQgKyB3aW5kb3cuc2Nyb2xsWCArIDgsXG4gICAgICAgICAgdG9wOlxuICAgICAgICAgICAgdGFyZ2V0RWxSZWN0LnRvcCArXG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAodGFyZ2V0RWwub2Zmc2V0SGVpZ2h0IC0gcG9wdXBSZWN0LmhlaWdodCkgLyAyXG4gICAgICAgIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6XG4gICAgICAgICAgICB0YXJnZXRFbFJlY3QubGVmdCArXG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWCArXG4gICAgICAgICAgICAodGFyZ2V0RWwub2Zmc2V0V2lkdGggLSBwb3B1cFJlY3Qud2lkdGgpIC8gMixcbiAgICAgICAgICB0b3A6IHRhcmdldEVsUmVjdC50b3AgKyB3aW5kb3cuc2Nyb2xsWSAtIHBvcHVwUmVjdC5oZWlnaHQgLSA4XG4gICAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpIG9uTW91c2VFbnRlcigpIHtcbiAgICBpZiAodGhpcy50b29sdGlwT3Blbk9uID09PSAnaG92ZXInKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXQpO1xuXG4gICAgICB0aGlzLl9zaG93VGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcE9wZW5EZWxheSBhcyBudW1iZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpIG9uTW91c2VMZWF2ZSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXQpO1xuXG4gICAgaWYgKCF0aGlzLnRvb2x0aXBQZXJzaXN0ZW50KSB7XG4gICAgICB0aGlzLl9oaWRlVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lUb29sdGlwLFxuICAgICAgICB0aGlzLnRvb2x0aXBDbG9zZURlbGF5IGFzIG51bWJlclxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpIG9uRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMudG9vbHRpcE9wZW5PbiA9PT0gJ2ZvY3VzJykge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lb3V0KTtcblxuICAgICAgdGhpcy5fc2hvd1RpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgICB0aGlzLl9jcmVhdGVUb29sdGlwLFxuICAgICAgICB0aGlzLnRvb2x0aXBPcGVuRGVsYXkgYXMgbnVtYmVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKSBvbkJsdXIoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dUaW1lb3V0KTtcbiAgICBpZiAoIXRoaXMudG9vbHRpcFBlcnNpc3RlbnQgJiYgdGhpcy50b29sdGlwT3Blbk9uID09PSAnZm9jdXMnKSB7XG4gICAgICB0aGlzLl9oaWRlVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lUb29sdGlwLFxuICAgICAgICB0aGlzLnRvb2x0aXBDbG9zZURlbGF5IGFzIG51bWJlclxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpIG9uQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMudG9vbHRpcE9wZW5PbiA9PT0gJ2NsaWNrJykge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lb3V0KTtcblxuICAgICAgdGhpcy5fc2hvd1RpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX2NyZWF0ZVRvb2x0aXAsIDApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIG9uRG9jdW1lbnRDbGljayh0YXJnZXQ6IGFueSkge1xuICAgIGlmICh0aGlzLnRvb2x0aXBQZXJzaXN0ZW50ICYmIHRoaXMuX3BvcHVwKSB7XG4gICAgICBpZiAoIXRhcmdldD8uaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY2xpY2tlZEluc2lkZSA9IHRoaXMuX2VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKHRhcmdldCk7XG4gICAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveVRvb2x0aXAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSkgb25QYWdlUmVzaXplKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLl9wb3B1cCkgdGhpcy5fZGVzdHJveVRvb2x0aXAoZXZlbnQpO1xuICB9XG59XG4iXX0=
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRvb2x0aXAuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2RpcmVjdGl2ZXMvY3BzLXRvb2x0aXAvY3BzLXRvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBSzlEOzs7R0FHRztBQUtILE1BQU0sT0FBTyxtQkFBbUI7SUEyRDlCLGtEQUFrRDtJQUNsRCxZQUFvQixXQUFvQztRQUFwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFyRHhEOzs7V0FHRztRQUNNLHFCQUFnQixHQUFvQixHQUFHLENBQUM7UUFFakQ7OztXQUdHO1FBQ00sc0JBQWlCLEdBQW9CLEdBQUcsQ0FBQztRQUVsRDs7O1dBR0c7UUFDTSxrQkFBYSxHQUFxQixPQUFPLENBQUM7UUFFbkQ7OztXQUdHO1FBQ00sb0JBQWUsR0FBdUIsS0FBSyxDQUFDO1FBRXJEOzs7V0FHRztRQUNNLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUVuQzs7O1dBR0c7UUFDTSxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUVqQzs7O1dBR0c7UUFDTSxvQkFBZSxHQUFvQixNQUFNLENBQUM7UUFFbkQ7OztXQUdHO1FBQ00sd0JBQW1CLEdBQUcscUJBQXFCLENBQUM7UUFhN0MsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBRXhCLElBQUksSUFBSSxDQUFDLGVBQWU7Z0JBQUUsT0FBTztZQUVqQyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGlCQUFp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c0JBQXZCLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQU1HLGVBQWU7c0JBQXZCLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBNkpzQixZQUFZO3NCQUF2QyxZQUFZO3VCQUFDLFlBQVk7Z0JBV0UsWUFBWTtzQkFBdkMsWUFBWTt1QkFBQyxZQUFZO2dCQVdILE9BQU87c0JBQTdCLFlBQVk7dUJBQUMsT0FBTztnQkFXQyxNQUFNO3NCQUEzQixZQUFZO3VCQUFDLE1BQU07Z0JBVUcsT0FBTztzQkFBN0IsWUFBWTt1QkFBQyxPQUFPO2dCQVNyQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBYU4sWUFBWTtzQkFBdEQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbnZlcnRTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5cbmV4cG9ydCB0eXBlIENwc1Rvb2x0aXBQb3NpdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xuZXhwb3J0IHR5cGUgQ3BzVG9vbHRpcE9wZW5PbiA9ICdob3ZlcicgfCAnY2xpY2snIHwgJ2ZvY3VzJztcblxuLyoqXG4gKiBDcHNUb29sdGlwRGlyZWN0aXZlIHByb3ZpZGVzIGFkdmlzb3J5IGluZm9ybWF0aW9uIGZvciBhIHRhcmdldCBlbGVtZW50LlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Nwc1Rvb2x0aXBdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDcHNUb29sdGlwRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRvb2x0aXAgdGV4dCBvciBodG1sIHRvIHNob3cuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCdjcHNUb29sdGlwJykgdG9vbHRpcCE6IHN0cmluZztcblxuICAvKipcbiAgICogRGVsYXkgdG8gc2hvdyB0aGUgdG9vbHRpcCBpbiBtaWxsaXNlY29uZHMsIGl0IGNhbiBiZSBvZiB0eXBlIHN0cmluZyBvciBudW1iZXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcE9wZW5EZWxheTogc3RyaW5nIHwgbnVtYmVyID0gMzAwO1xuXG4gIC8qKlxuICAgKiBEZWxheSB0byBoaWRlIHRoZSB0b29sdGlwIGluIG1pbGxpc2Vjb25kcywgaXQgY2FuIGJlIG9mIHR5cGUgc3RyaW5nIG9yIG51bWJlci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwQ2xvc2VEZWxheTogc3RyaW5nIHwgbnVtYmVyID0gMzAwO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgc2hvdWxkIG9wZW4gb24gaG92ZXIsIGNsaWNrIG9yIGZvY3VzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBPcGVuT246IENwc1Rvb2x0aXBPcGVuT24gPSAnaG92ZXInO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCwgaXQgY2FuIGJlICd0b3AnLCAnYm90dG9tJywgJ2xlZnQnIG9yICdyaWdodCcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBDcHNUb29sdGlwUG9zaXRpb24gPSAndG9wJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHBlcnNpc3RlbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcFBlcnNpc3RlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgdG9vbHRpcCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcERpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE1heCB3aWR0aCBvZiB0aGUgdG9vbHRpcCBvZiB0eXBlIG51bWJlciBkZW5vdGluZyBwaXhlbHMgb3Igc3RyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBNYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuXG4gIC8qKlxuICAgKiBUb29sdGlwIGNvbnRlbnQgY2xhc3MgZm9yIHN0eWxpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcENvbnRlbnRDbGFzcyA9ICdjcHMtdG9vbHRpcC1jb250ZW50JztcblxuICBwcml2YXRlIF9wb3B1cD86IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF9zaG93VGltZW91dD86IGFueTtcbiAgcHJpdmF0ZSBfaGlkZVRpbWVvdXQ/OiBhbnk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY29uc3RydWN0b3JcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveVRvb2x0aXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZVRvb2x0aXAgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuX3BvcHVwKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMuX3BvcHVwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5fY29uc3RydWN0RWxlbWVudCh0aGlzLl9wb3B1cCk7XG5cbiAgICBpZiAodGhpcy50b29sdGlwUGVyc2lzdGVudClcbiAgICAgIHRoaXMuX3BvcHVwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fZGVzdHJveVRvb2x0aXApO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX2Rlc3Ryb3lUb29sdGlwLCB0cnVlKTtcbiAgfTtcblxuICBwcml2YXRlIF9kZXN0cm95VG9vbHRpcCA9IChldmVudDogYW55ID0gdW5kZWZpbmVkKSA9PiB7XG4gICAgY29uc3QgcmVtb3ZlRnJvbURPTSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX3BvcHVwPy5yZW1vdmUoKTtcbiAgICAgIHRoaXMuX3BvcHVwID0gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fZGVzdHJveVRvb2x0aXAsIHRydWUpO1xuICAgIGlmICghdGhpcy5fcG9wdXApIHJldHVybjtcblxuICAgIHRoaXMuX3BvcHVwLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fZGVzdHJveVRvb2x0aXApO1xuXG4gICAgY29uc3Qgbm9BbmltYXRpb24gPSBbJ3Njcm9sbCcsICdyZXNpemUnXS5pbmNsdWRlcyhldmVudD8udHlwZSk7XG5cbiAgICBpZiAobm9BbmltYXRpb24pIHtcbiAgICAgIHJlbW92ZUZyb21ET00oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcG9wdXA6IEhUTUxEaXZFbGVtZW50ID0gdGhpcy5fcG9wdXA7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICBwb3B1cC5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuICAgICAgfSk7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZW1vdmVGcm9tRE9NKCk7XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9jb25zdHJ1Y3RFbGVtZW50KHBvcHVwOiBIVE1MRGl2RWxlbWVudCkge1xuICAgIGNvbnN0IHBvcHVwQ29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHBvcHVwQ29udGVudC5pbm5lckhUTUwgPSB0aGlzLnRvb2x0aXAgfHwgJ0FkZCB5b3VyIHRleHQgdG8gdGhpcyB0b29sdGlwJztcbiAgICBwb3B1cENvbnRlbnQuY2xhc3NMaXN0LmFkZCh0aGlzLnRvb2x0aXBDb250ZW50Q2xhc3MpO1xuICAgIHBvcHVwLmFwcGVuZENoaWxkKHBvcHVwQ29udGVudCk7XG5cbiAgICBwb3B1cC5jbGFzc0xpc3QuYWRkKCdjcHMtdG9vbHRpcCcpO1xuICAgIHBvcHVwLnN0eWxlLm1heFdpZHRoID0gY29udmVydFNpemUodGhpcy50b29sdGlwTWF4V2lkdGgpO1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwb3B1cCk7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIHBvcHVwLnN0eWxlLm9wYWNpdHkgPSAnMSc7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb29yZHMgPSB0aGlzLl9nZXRDb29yZHMoKTtcbiAgICBpZiAoIWNvb3Jkcykge1xuICAgICAgdGhpcy5fZGVzdHJveVRvb2x0aXAoKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGVub3VnaCBzcGFjZSBvbiB0aGUgc2NyZWVuIGZvciB0aGUgdG9vbHRpcCEnKTtcbiAgICB9XG5cbiAgICBwb3B1cC5zdHlsZS5sZWZ0ID0gY29vcmRzLmxlZnQudG9TdHJpbmcoKSArICdweCc7XG4gICAgcG9wdXAuc3R5bGUudG9wID0gY29vcmRzLnRvcC50b1N0cmluZygpICsgJ3B4JztcbiAgfVxuXG4gIHByaXZhdGUgX2dldENvb3JkcygpOiB7IGxlZnQ6IG51bWJlcjsgdG9wOiBudW1iZXIgfSB8IHVuZGVmaW5lZCB7XG4gICAgZnVuY3Rpb24gaXNJbnNpZGVTY3JlZW4oY29vcmRzOiB7IGxlZnQ6IG51bWJlcjsgdG9wOiBudW1iZXIgfSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgY29vcmRzLnRvcCA+PSAwICYmXG4gICAgICAgIGNvb3Jkcy5sZWZ0ID49IDAgJiZcbiAgICAgICAgY29vcmRzLmxlZnQgKyBwb3B1cFJlY3Qud2lkdGggPD0gd2luZG93LmlubmVyV2lkdGggJiZcbiAgICAgICAgY29vcmRzLnRvcCArIHBvcHVwUmVjdC5oZWlnaHQgPD0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBwb3NpdGlvbnM6IENwc1Rvb2x0aXBQb3NpdGlvbltdID0gWyd0b3AnLCAnYm90dG9tJywgJ2xlZnQnLCAncmlnaHQnXTtcbiAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSB0aGlzLnRvb2x0aXBQb3NpdGlvbik7XG4gICAgcG9zaXRpb25zLnVuc2hpZnQodGhpcy50b29sdGlwUG9zaXRpb24pO1xuXG4gICAgY29uc3QgdGFyZ2V0RWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGFyZ2V0RWxSZWN0ID0gdGFyZ2V0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcG9wdXBSZWN0ID0gKHRoaXMuX3BvcHVwIGFzIEhUTUxEaXZFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGZvciAoY29uc3QgcG9zIG9mIHBvc2l0aW9ucykge1xuICAgICAgY29uc3QgY29vcmRzID0gdGhpcy5fZ2V0Q29vcmRzRm9yUG9zaXRpb24oXG4gICAgICAgIHBvcyBhcyBDcHNUb29sdGlwUG9zaXRpb24sXG4gICAgICAgIHRhcmdldEVsLFxuICAgICAgICB0YXJnZXRFbFJlY3QsXG4gICAgICAgIHBvcHVwUmVjdFxuICAgICAgKTtcblxuICAgICAgaWYgKGlzSW5zaWRlU2NyZWVuKGNvb3JkcykpIHtcbiAgICAgICAgcmV0dXJuIGNvb3JkcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29vcmRzRm9yUG9zaXRpb24oXG4gICAgcG9zaXRpb246IENwc1Rvb2x0aXBQb3NpdGlvbixcbiAgICB0YXJnZXRFbDogSFRNTEVsZW1lbnQsXG4gICAgdGFyZ2V0RWxSZWN0OiBET01SZWN0LFxuICAgIHBvcHVwUmVjdDogRE9NUmVjdFxuICApOiB7XG4gICAgbGVmdDogbnVtYmVyO1xuICAgIHRvcDogbnVtYmVyO1xuICB9IHtcbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6XG4gICAgICAgICAgICB0YXJnZXRFbFJlY3QubGVmdCArXG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWCArXG4gICAgICAgICAgICAodGFyZ2V0RWwub2Zmc2V0V2lkdGggLSBwb3B1cFJlY3Qud2lkdGgpIC8gMixcbiAgICAgICAgICB0b3A6IHRhcmdldEVsUmVjdC5ib3R0b20gKyB3aW5kb3cuc2Nyb2xsWSArIDhcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6IHRhcmdldEVsUmVjdC5sZWZ0IC0gd2luZG93LnNjcm9sbFggLSBwb3B1cFJlY3Qud2lkdGggLSA4LFxuICAgICAgICAgIHRvcDpcbiAgICAgICAgICAgIHRhcmdldEVsUmVjdC50b3AgK1xuICAgICAgICAgICAgd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgKHRhcmdldEVsLm9mZnNldEhlaWdodCAtIHBvcHVwUmVjdC5oZWlnaHQpIC8gMlxuICAgICAgICB9O1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6IHRhcmdldEVsUmVjdC5yaWdodCArIHdpbmRvdy5zY3JvbGxYICsgOCxcbiAgICAgICAgICB0b3A6XG4gICAgICAgICAgICB0YXJnZXRFbFJlY3QudG9wICtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICh0YXJnZXRFbC5vZmZzZXRIZWlnaHQgLSBwb3B1cFJlY3QuaGVpZ2h0KSAvIDJcbiAgICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGVmdDpcbiAgICAgICAgICAgIHRhcmdldEVsUmVjdC5sZWZ0ICtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxYICtcbiAgICAgICAgICAgICh0YXJnZXRFbC5vZmZzZXRXaWR0aCAtIHBvcHVwUmVjdC53aWR0aCkgLyAyLFxuICAgICAgICAgIHRvcDogdGFyZ2V0RWxSZWN0LnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gcG9wdXBSZWN0LmhlaWdodCAtIDhcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJykgb25Nb3VzZUVudGVyKCkge1xuICAgIGlmICh0aGlzLnRvb2x0aXBPcGVuT24gPT09ICdob3ZlcicpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dCk7XG5cbiAgICAgIHRoaXMuX3Nob3dUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcCxcbiAgICAgICAgdGhpcy50b29sdGlwT3BlbkRlbGF5IGFzIG51bWJlclxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJykgb25Nb3VzZUxlYXZlKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9zaG93VGltZW91dCk7XG5cbiAgICBpZiAoIXRoaXMudG9vbHRpcFBlcnNpc3RlbnQpIHtcbiAgICAgIHRoaXMuX2hpZGVUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgdGhpcy5fZGVzdHJveVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcENsb3NlRGVsYXkgYXMgbnVtYmVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJykgb25Gb2N1cygpIHtcbiAgICBpZiAodGhpcy50b29sdGlwT3Blbk9uID09PSAnZm9jdXMnKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXQpO1xuXG4gICAgICB0aGlzLl9zaG93VGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcE9wZW5EZWxheSBhcyBudW1iZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXQpO1xuICAgIGlmICghdGhpcy50b29sdGlwUGVyc2lzdGVudCAmJiB0aGlzLnRvb2x0aXBPcGVuT24gPT09ICdmb2N1cycpIHtcbiAgICAgIHRoaXMuX2hpZGVUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgdGhpcy5fZGVzdHJveVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcENsb3NlRGVsYXkgYXMgbnVtYmVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJykgb25DbGljaygpIHtcbiAgICBpZiAodGhpcy50b29sdGlwT3Blbk9uID09PSAnY2xpY2snKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXQpO1xuXG4gICAgICB0aGlzLl9zaG93VGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5fY3JlYXRlVG9vbHRpcCwgMCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcbiAgb25Eb2N1bWVudENsaWNrKHRhcmdldDogYW55KSB7XG4gICAgaWYgKHRoaXMudG9vbHRpcFBlcnNpc3RlbnQgJiYgdGhpcy5fcG9wdXApIHtcbiAgICAgIGlmICghdGFyZ2V0Py5pc0Nvbm5lY3RlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gdGhpcy5fZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uY29udGFpbnModGFyZ2V0KTtcbiAgICAgIGlmICghY2xpY2tlZEluc2lkZSkge1xuICAgICAgICB0aGlzLl9kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKSBvblBhZ2VSZXNpemUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuX3BvcHVwKSB0aGlzLl9kZXN0cm95VG9vbHRpcChldmVudCk7XG4gIH1cbn1cbiJdfQ==
@@ -85,11 +85,9 @@ export class CpsNotificationService {
85
85
  _appendNotificationToContainer(data, config) {
86
86
  const position = config.position || CpsNotificationPosition.TOPRIGHT;
87
87
  let containerComponentRef = this._containersMap.get(position);
88
- const found = !!containerComponentRef;
89
88
  if (!containerComponentRef) {
90
89
  containerComponentRef = createComponent(CpsNotificationContainerComponent, { environmentInjector: this._appRef.injector });
91
90
  containerComponentRef.setInput('position', position);
92
- containerComponentRef.setInput('maxAmount', config.maxAmount);
93
91
  this._appRef.attachView(containerComponentRef.hostView);
94
92
  const domElem = containerComponentRef.hostView
95
93
  .rootNodes[0];
@@ -99,8 +97,6 @@ export class CpsNotificationService {
99
97
  });
100
98
  this._containersMap.set(position, containerComponentRef);
101
99
  }
102
- if (found && config.maxAmount)
103
- containerComponentRef.setInput('maxAmount', config.maxAmount);
104
100
  containerComponentRef.instance.addNotification(config, data);
105
101
  }
106
102
  _tryRemoveContainer(position) {
@@ -123,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
123
119
  type: Inject,
124
120
  args: [DOCUMENT]
125
121
  }] }] });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLW5vdGlmaWNhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL3NlcnZpY2VzL2Nwcy1ub3RpZmljYXRpb24vY3BzLW5vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBR1YsTUFBTSxFQUVOLGVBQWUsRUFDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCx5QkFBeUIsRUFFekIsdUJBQXVCLEVBQ3hCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUVMLG1CQUFtQixFQUNwQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVGQUF1RixDQUFDOztBQUUxSTs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBTWpDLGtEQUFrRDtJQUNsRCxZQUNVLE9BQXVCLEVBQ0wsUUFBa0I7UUFEcEMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDTCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBUnRDLG1CQUFjLEdBR2xCLElBQUksR0FBRyxFQUFFLENBQUM7SUFNWCxDQUFDO0lBRUo7Ozs7OztPQU1HO0lBQ0ksSUFBSSxDQUNULE9BQWUsRUFDZixPQUFnQixFQUNoQixNQUE4QjtRQUU5QixJQUFJLENBQUMsbUJBQW1CLENBQ3RCLG1CQUFtQixDQUFDLElBQUksRUFDeEIsT0FBTyxFQUNQLE9BQU8sRUFDUCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxPQUFPLENBQ1osT0FBZSxFQUNmLE9BQWdCLEVBQ2hCLE1BQThCO1FBRTlCLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsbUJBQW1CLENBQUMsT0FBTyxFQUMzQixP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QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBDb21wb25lbnRSZWYsXG4gIEluamVjdCxcbiAgQXBwbGljYXRpb25SZWYsXG4gIGNyZWF0ZUNvbXBvbmVudFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENwc05vdGlmaWNhdGlvbkFwcGVhcmFuY2UsXG4gIENwc05vdGlmaWNhdGlvbkNvbmZpZyxcbiAgQ3BzTm90aWZpY2F0aW9uUG9zaXRpb25cbn0gZnJvbSAnLi91dGlscy9jcHMtbm90aWZpY2F0aW9uLWNvbmZpZyc7XG5pbXBvcnQge1xuICBDcHNOb3RpZmljYXRpb25EYXRhLFxuICBDcHNOb3RpZmljYXRpb25UeXBlXG59IGZyb20gJy4vdXRpbHMvaW50ZXJuYWwvY3BzLW5vdGlmaWNhdGlvbi1kYXRhJztcbmltcG9ydCB7IENwc05vdGlmaWNhdGlvbkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJuYWwvY29tcG9uZW50cy9jcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci9jcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQnO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHNob3dpbmcgbm90aWZpY2F0aW9ucy5cbiAqIEBncm91cCBTZXJ2aWNlc1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENwc05vdGlmaWNhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIF9jb250YWluZXJzTWFwOiBNYXA8XG4gICAgQ3BzTm90aWZpY2F0aW9uUG9zaXRpb24sXG4gICAgQ29tcG9uZW50UmVmPENwc05vdGlmaWNhdGlvbkNvbnRhaW5lckNvbXBvbmVudD5cbiAgPiA9IG5ldyBNYXAoKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50XG4gICkge31cblxuICAvKipcbiAgICogU2hvd3MgYSBub3RpZmljYXRpb24gd2l0aCB0eXBlICdpbmZvJy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBOb3RpZmljYXRpb24gbWVzc2FnZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRldGFpbHMgLSBOb3RpZmljYXRpb24gZGV0YWlscy5cbiAgICogQHBhcmFtIHtDcHNOb3RpZmljYXRpb25Db25maWd9IGNvbmZpZyAtIENwc05vdGlmaWNhdGlvbkNvbmZpZyBvYmplY3QuXG4gICAqIEBncm91cCBNZXRob2RcbiAgICovXG4gIHB1YmxpYyBpbmZvKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBkZXRhaWxzPzogc3RyaW5nLFxuICAgIGNvbmZpZz86IENwc05vdGlmaWNhdGlvbkNvbmZpZ1xuICApIHtcbiAgICB0aGlzLl9jcmVhdGVOb3RpZmljYXRpb24oXG4gICAgICBDcHNOb3RpZmljYXRpb25UeXBlLklORk8sXG4gICAgICBtZXNzYWdlLFxuICAgICAgZGV0YWlscyxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgYSBub3RpZmljYXRpb24gd2l0aCB0eXBlICd3YXJuaW5nJy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBOb3RpZmljYXRpb24gbWVzc2FnZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRldGFpbHMgLSBOb3RpZmljYXRpb24gZGV0YWlscy5cbiAgICogQHBhcmFtIHtDcHNOb3RpZmljYXRpb25Db25maWd9IGNvbmZpZyAtIENwc05vdGlmaWNhdGlvbkNvbmZpZyBvYmplY3QuXG4gICAqIEBncm91cCBNZXRob2RcbiAgICovXG4gIHB1YmxpYyB3YXJuaW5nKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBkZXRhaWxzPzogc3RyaW5nLFxuICAgIGNvbmZpZz86IENwc05vdGlmaWNhdGlvbkNvbmZpZ1xuICApIHtcbiAgICB0aGlzLl9jcmVhdGVOb3RpZmljYXRpb24oXG4gICAgICBDcHNOb3RpZmljYXRpb25UeXBlLldBUk5JTkcsXG4gICAgICBtZXNzYWdlLFxuICAgICAgZGV0YWlscyxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgYSBub3RpZmljYXRpb24gd2l0aCB0eXBlICdzdWNjZXNzJy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBOb3RpZmljYXRpb24gbWVzc2FnZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRldGFpbHMgLSBOb3RpZmljYXRpb24gZGV0YWlscy5cbiAgICogQHBhcmFtIHtDcHNOb3RpZmljYXRpb25Db25maWd9IGNvbmZpZyAtIENwc05vdGlmaWNhdGlvbkNvbmZpZyBvYmplY3QuXG4gICAqIEBncm91cCBNZXRob2RcbiAgICovXG4gIHB1YmxpYyBzdWNjZXNzKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBkZXRhaWxzPzogc3RyaW5nLFxuICAgIGNvbmZpZz86IENwc05vdGlmaWNhdGlvbkNvbmZpZ1xuICApIHtcbiAgICB0aGlzLl9jcmVhdGVOb3RpZmljYXRpb24oXG4gICAgICBDcHNOb3RpZmljYXRpb25UeXBlLlNVQ0NFU1MsXG4gICAgICBtZXNzYWdlLFxuICAgICAgZGV0YWlscyxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgYSBub3RpZmljYXRpb24gd2l0aCB0eXBlICdlcnJvcicuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gTm90aWZpY2F0aW9uIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXRhaWxzIC0gTm90aWZpY2F0aW9uIGRldGFpbHMuXG4gICAqIEBwYXJhbSB7Q3BzTm90aWZpY2F0aW9uQ29uZmlnfSBjb25maWcgLSBDcHNOb3RpZmljYXRpb25Db25maWcgb2JqZWN0LlxuICAgKiBAZ3JvdXAgTWV0aG9kXG4gICAqL1xuICBwdWJsaWMgZXJyb3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGRldGFpbHM/OiBzdHJpbmcsXG4gICAgY29uZmlnPzogQ3BzTm90aWZpY2F0aW9uQ29uZmlnXG4gICkge1xuICAgIHRoaXMuX2NyZWF0ZU5vdGlmaWNhdGlvbihcbiAgICAgIENwc05vdGlmaWNhdGlvblR5cGUuRVJST1IsXG4gICAgICBtZXNzYWdlLFxuICAgICAgZGV0YWlscyxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIGFsbCBub3RpZmljYXRpb25zLlxuICAgKiBAZ3JvdXAgTWV0aG9kXG4gICAqL1xuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy5fY29udGFpbmVyc01hcC5mb3JFYWNoKChjb250YWluZXIpID0+IHtcbiAgICAgIHRoaXMuX2FwcFJlZi5kZXRhY2hWaWV3KGNvbnRhaW5lci5ob3N0Vmlldyk7XG4gICAgICBjb250YWluZXIuZGVzdHJveSgpO1xuICAgIH0pO1xuICAgIHRoaXMuX2NvbnRhaW5lcnNNYXAuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZU5vdGlmaWNhdGlvbihcbiAgICB0eXBlOiBDcHNOb3RpZmljYXRpb25UeXBlLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBkZXRhaWxzPzogc3RyaW5nLFxuICAgIGNvbmZpZz86IENwc05vdGlmaWNhdGlvbkNvbmZpZ1xuICApIHtcbiAgICBjb25maWcgPSB0aGlzLl9pbml0Q29uZmlnKGNvbmZpZyk7XG4gICAgY29uc3QgZGF0YTogQ3BzTm90aWZpY2F0aW9uRGF0YSA9IHsgdHlwZSwgbWVzc2FnZSwgZGV0YWlscyB9O1xuXG4gICAgdGhpcy5fYXBwZW5kTm90aWZpY2F0aW9uVG9Db250YWluZXIoZGF0YSwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRDb25maWcoY29uZmlnPzogQ3BzTm90aWZpY2F0aW9uQ29uZmlnKTogQ3BzTm90aWZpY2F0aW9uQ29uZmlnIHtcbiAgICBpZiAoIWNvbmZpZykgY29uZmlnID0ge307XG4gICAgaWYgKCFjb25maWcuYXBwZWFyYW5jZSlcbiAgICAgIGNvbmZpZy5hcHBlYXJhbmNlID0gQ3BzTm90aWZpY2F0aW9uQXBwZWFyYW5jZS5GSUxMRUQ7XG4gICAgaWYgKCFjb25maWcucG9zaXRpb24pIGNvbmZpZy5wb3NpdGlvbiA9IENwc05vdGlmaWNhdGlvblBvc2l0aW9uLlRPUFJJR0hUO1xuICAgIGlmIChjb25maWcudGltZW91dCA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZy50aW1lb3V0ID09PSBudWxsKVxuICAgICAgY29uZmlnLnRpbWVvdXQgPSA1MDAwO1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBwcml2YXRlIF9hcHBlbmROb3RpZmljYXRpb25Ub0NvbnRhaW5lcihcbiAgICBkYXRhOiBDcHNOb3RpZmljYXRpb25EYXRhLFxuICAgIGNvbmZpZzogQ3BzTm90aWZpY2F0aW9uQ29uZmlnXG4gICkge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gY29uZmlnLnBvc2l0aW9uIHx8IENwc05vdGlmaWNhdGlvblBvc2l0aW9uLlRPUFJJR0hUO1xuXG4gICAgbGV0IGNvbnRhaW5lckNvbXBvbmVudFJlZiA9IHRoaXMuX2NvbnRhaW5lcnNNYXAuZ2V0KHBvc2l0aW9uKTtcbiAgICBjb25zdCBmb3VuZCA9ICEhY29udGFpbmVyQ29tcG9uZW50UmVmO1xuXG4gICAgaWYgKCFjb250YWluZXJDb21wb25lbnRSZWYpIHtcbiAgICAgIGNvbnRhaW5lckNvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgQ3BzTm90aWZpY2F0aW9uQ29udGFpbmVyQ29tcG9uZW50LFxuICAgICAgICB7IGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuX2FwcFJlZi5pbmplY3RvciB9XG4gICAgICApO1xuICAgICAgY29udGFpbmVyQ29tcG9uZW50UmVmLnNldElucHV0KCdwb3NpdGlvbicsIHBvc2l0aW9uKTtcbiAgICAgIGNvbnRhaW5lckNvbXBvbmVudFJlZi5zZXRJbnB1dCgnbWF4QW1vdW50JywgY29uZmlnLm1heEFtb3VudCk7XG5cbiAgICAgIHRoaXMuX2FwcFJlZi5hdHRhY2hWaWV3KGNvbnRhaW5lckNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG5cbiAgICAgIGNvbnN0IGRvbUVsZW0gPSAoY29udGFpbmVyQ29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KVxuICAgICAgICAucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuXG4gICAgICBjb250YWluZXJDb21wb25lbnRSZWYuaW5zdGFuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3RyeVJlbW92ZUNvbnRhaW5lcihwb3NpdGlvbik7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fY29udGFpbmVyc01hcC5zZXQocG9zaXRpb24sIGNvbnRhaW5lckNvbXBvbmVudFJlZik7XG4gICAgfVxuXG4gICAgaWYgKGZvdW5kICYmIGNvbmZpZy5tYXhBbW91bnQpXG4gICAgICBjb250YWluZXJDb21wb25lbnRSZWYuc2V0SW5wdXQoJ21heEFtb3VudCcsIGNvbmZpZy5tYXhBbW91bnQpO1xuXG4gICAgY29udGFpbmVyQ29tcG9uZW50UmVmLmluc3RhbmNlLmFkZE5vdGlmaWNhdGlvbihjb25maWcsIGRhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJ5UmVtb3ZlQ29udGFpbmVyKHBvc2l0aW9uOiBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbikge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuX2NvbnRhaW5lcnNNYXAuZ2V0KHBvc2l0aW9uKTtcblxuICAgIGlmICghY29udGFpbmVyPy5pbnN0YW5jZSB8fCBjb250YWluZXIuaW5zdGFuY2Uubm90aWZpY2F0aW9ucy5sZW5ndGggPiAwKVxuICAgICAgcmV0dXJuO1xuXG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcoY29udGFpbmVyLmhvc3RWaWV3KTtcbiAgICAgIGNvbnRhaW5lci5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9jb250YWluZXJzTWFwLmRlbGV0ZShwb3NpdGlvbik7XG4gICAgfVxuICB9XG59XG4iXX0=
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLW5vdGlmaWNhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL3NlcnZpY2VzL2Nwcy1ub3RpZmljYXRpb24vY3BzLW5vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBR1YsTUFBTSxFQUVOLGVBQWUsRUFDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCx5QkFBeUIsRUFFekIsdUJBQXVCLEVBQ3hCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUVMLG1CQUFtQixFQUNwQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVGQUF1RixDQUFDOztBQUUxSTs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBTWpDLGtEQUFrRDtJQUNsRCxZQUNVLE9BQXVCLEVBQ0wsUUFBa0I7UUFEcEMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDTCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBUnRDLG1CQUFjLEdBR2xCLElBQUksR0FBRyxFQUFFLENBQUM7SUFNWCxDQUFDO0lBRUo7Ozs7OztPQU1HO0lBQ0ksSUFBSSxDQUNULE9BQWUsRUFDZixPQUFnQixFQUNoQixNQUE4QjtRQUU5QixJQUFJLENBQUMsbUJBQW1CLENBQ3RCLG1CQUFtQixDQUFDLElBQUksRUFDeEIsT0FBTyxFQUNQLE9BQU8sRUFDUCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxPQUFPLENBQ1osT0FBZSxFQUNmLE9BQWdCLEVBQ2hCLE1BQThCO1FBRTlCLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsbUJBQW1CLENBQUMsT0FBTyxFQUMzQixP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LElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsUUFBaUM7UUFDM0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDckUsT0FBTztRQUVULElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDOzhHQXZLVSxzQkFBc0IsZ0RBU3ZCLFFBQVE7a0hBVFAsc0JBQXNCLGNBRFQsTUFBTTs7MkZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVU3QixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0LFxuICBBcHBsaWNhdGlvblJlZixcbiAgY3JlYXRlQ29tcG9uZW50XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ3BzTm90aWZpY2F0aW9uQXBwZWFyYW5jZSxcbiAgQ3BzTm90aWZpY2F0aW9uQ29uZmlnLFxuICBDcHNOb3RpZmljYXRpb25Qb3NpdGlvblxufSBmcm9tICcuL3V0aWxzL2Nwcy1ub3RpZmljYXRpb24tY29uZmlnJztcbmltcG9ydCB7XG4gIENwc05vdGlmaWNhdGlvbkRhdGEsXG4gIENwc05vdGlmaWNhdGlvblR5cGVcbn0gZnJvbSAnLi91dGlscy9pbnRlcm5hbC9jcHMtbm90aWZpY2F0aW9uLWRhdGEnO1xuaW1wb3J0IHsgQ3BzTm90aWZpY2F0aW9uQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9pbnRlcm5hbC9jb21wb25lbnRzL2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyL2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogU2VydmljZSBmb3Igc2hvd2luZyBub3RpZmljYXRpb25zLlxuICogQGdyb3VwIFNlcnZpY2VzXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQ3BzTm90aWZpY2F0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgX2NvbnRhaW5lcnNNYXA6IE1hcDxcbiAgICBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbixcbiAgICBDb21wb25lbnRSZWY8Q3BzTm90aWZpY2F0aW9uQ29udGFpbmVyQ29tcG9uZW50PlxuICA+ID0gbmV3IE1hcCgpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnRcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBTaG93cyBhIG5vdGlmaWNhdGlvbiB3aXRoIHR5cGUgJ2luZm8nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIE5vdGlmaWNhdGlvbiBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGV0YWlscyAtIE5vdGlmaWNhdGlvbiBkZXRhaWxzLlxuICAgKiBAcGFyYW0ge0Nwc05vdGlmaWNhdGlvbkNvbmZpZ30gY29uZmlnIC0gQ3BzTm90aWZpY2F0aW9uQ29uZmlnIG9iamVjdC5cbiAgICogQGdyb3VwIE1ldGhvZFxuICAgKi9cbiAgcHVibGljIGluZm8oXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGRldGFpbHM/OiBzdHJpbmcsXG4gICAgY29uZmlnPzogQ3BzTm90aWZpY2F0aW9uQ29uZmlnXG4gICkge1xuICAgIHRoaXMuX2NyZWF0ZU5vdGlmaWNhdGlvbihcbiAgICAgIENwc05vdGlmaWNhdGlvblR5cGUuSU5GTyxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBkZXRhaWxzLFxuICAgICAgY29uZmlnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyBhIG5vdGlmaWNhdGlvbiB3aXRoIHR5cGUgJ3dhcm5pbmcnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIE5vdGlmaWNhdGlvbiBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGV0YWlscyAtIE5vdGlmaWNhdGlvbiBkZXRhaWxzLlxuICAgKiBAcGFyYW0ge0Nwc05vdGlmaWNhdGlvbkNvbmZpZ30gY29uZmlnIC0gQ3BzTm90aWZpY2F0aW9uQ29uZmlnIG9iamVjdC5cbiAgICogQGdyb3VwIE1ldGhvZFxuICAgKi9cbiAgcHVibGljIHdhcm5pbmcoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGRldGFpbHM/OiBzdHJpbmcsXG4gICAgY29uZmlnPzogQ3BzTm90aWZpY2F0aW9uQ29uZmlnXG4gICkge1xuICAgIHRoaXMuX2NyZWF0ZU5vdGlmaWNhdGlvbihcbiAgICAgIENwc05vdGlmaWNhdGlvblR5cGUuV0FSTklORyxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBkZXRhaWxzLFxuICAgICAgY29uZmlnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyBhIG5vdGlmaWNhdGlvbiB3aXRoIHR5cGUgJ3N1Y2Nlc3MnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIE5vdGlmaWNhdGlvbiBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGV0YWlscyAtIE5vdGlmaWNhdGlvbiBkZXRhaWxzLlxuICAgKiBAcGFyYW0ge0Nwc05vdGlmaWNhdGlvbkNvbmZpZ30gY29uZmlnIC0gQ3BzTm90aWZpY2F0aW9uQ29uZmlnIG9iamVjdC5cbiAgICogQGdyb3VwIE1ldGhvZFxuICAgKi9cbiAgcHVibGljIHN1Y2Nlc3MoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGRldGFpbHM/OiBzdHJpbmcsXG4gICAgY29uZmlnPzogQ3BzTm90aWZpY2F0aW9uQ29uZmlnXG4gICkge1xuICAgIHRoaXMuX2NyZWF0ZU5vdGlmaWNhdGlvbihcbiAgICAgIENwc05vdGlmaWNhdGlvblR5cGUuU1VDQ0VTUyxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBkZXRhaWxzLFxuICAgICAgY29uZmlnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyBhIG5vdGlmaWNhdGlvbiB3aXRoIHR5cGUgJ2Vycm9yJy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBOb3RpZmljYXRpb24gbWVzc2FnZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRldGFpbHMgLSBOb3RpZmljYXRpb24gZGV0YWlscy5cbiAgICogQHBhcmFtIHtDcHNOb3RpZmljYXRpb25Db25maWd9IGNvbmZpZyAtIENwc05vdGlmaWNhdGlvbkNvbmZpZyBvYmplY3QuXG4gICAqIEBncm91cCBNZXRob2RcbiAgICovXG4gIHB1YmxpYyBlcnJvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgZGV0YWlscz86IHN0cmluZyxcbiAgICBjb25maWc/OiBDcHNOb3RpZmljYXRpb25Db25maWdcbiAgKSB7XG4gICAgdGhpcy5fY3JlYXRlTm90aWZpY2F0aW9uKFxuICAgICAgQ3BzTm90aWZpY2F0aW9uVHlwZS5FUlJPUixcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBkZXRhaWxzLFxuICAgICAgY29uZmlnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIG5vdGlmaWNhdGlvbnMuXG4gICAqIEBncm91cCBNZXRob2RcbiAgICovXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLl9jb250YWluZXJzTWFwLmZvckVhY2goKGNvbnRhaW5lcikgPT4ge1xuICAgICAgdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcoY29udGFpbmVyLmhvc3RWaWV3KTtcbiAgICAgIGNvbnRhaW5lci5kZXN0cm95KCk7XG4gICAgfSk7XG4gICAgdGhpcy5fY29udGFpbmVyc01hcC5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlTm90aWZpY2F0aW9uKFxuICAgIHR5cGU6IENwc05vdGlmaWNhdGlvblR5cGUsXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGRldGFpbHM/OiBzdHJpbmcsXG4gICAgY29uZmlnPzogQ3BzTm90aWZpY2F0aW9uQ29uZmlnXG4gICkge1xuICAgIGNvbmZpZyA9IHRoaXMuX2luaXRDb25maWcoY29uZmlnKTtcbiAgICBjb25zdCBkYXRhOiBDcHNOb3RpZmljYXRpb25EYXRhID0geyB0eXBlLCBtZXNzYWdlLCBkZXRhaWxzIH07XG5cbiAgICB0aGlzLl9hcHBlbmROb3RpZmljYXRpb25Ub0NvbnRhaW5lcihkYXRhLCBjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdENvbmZpZyhjb25maWc/OiBDcHNOb3RpZmljYXRpb25Db25maWcpOiBDcHNOb3RpZmljYXRpb25Db25maWcge1xuICAgIGlmICghY29uZmlnKSBjb25maWcgPSB7fTtcbiAgICBpZiAoIWNvbmZpZy5hcHBlYXJhbmNlKVxuICAgICAgY29uZmlnLmFwcGVhcmFuY2UgPSBDcHNOb3RpZmljYXRpb25BcHBlYXJhbmNlLkZJTExFRDtcbiAgICBpZiAoIWNvbmZpZy5wb3NpdGlvbikgY29uZmlnLnBvc2l0aW9uID0gQ3BzTm90aWZpY2F0aW9uUG9zaXRpb24uVE9QUklHSFQ7XG4gICAgaWYgKGNvbmZpZy50aW1lb3V0ID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnRpbWVvdXQgPT09IG51bGwpXG4gICAgICBjb25maWcudGltZW91dCA9IDUwMDA7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGVuZE5vdGlmaWNhdGlvblRvQ29udGFpbmVyKFxuICAgIGRhdGE6IENwc05vdGlmaWNhdGlvbkRhdGEsXG4gICAgY29uZmlnOiBDcHNOb3RpZmljYXRpb25Db25maWdcbiAgKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBjb25maWcucG9zaXRpb24gfHwgQ3BzTm90aWZpY2F0aW9uUG9zaXRpb24uVE9QUklHSFQ7XG5cbiAgICBsZXQgY29udGFpbmVyQ29tcG9uZW50UmVmID0gdGhpcy5fY29udGFpbmVyc01hcC5nZXQocG9zaXRpb24pO1xuICAgIGlmICghY29udGFpbmVyQ29tcG9uZW50UmVmKSB7XG4gICAgICBjb250YWluZXJDb21wb25lbnRSZWYgPSBjcmVhdGVDb21wb25lbnQoXG4gICAgICAgIENwc05vdGlmaWNhdGlvbkNvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgICAgeyBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLl9hcHBSZWYuaW5qZWN0b3IgfVxuICAgICAgKTtcbiAgICAgIGNvbnRhaW5lckNvbXBvbmVudFJlZi5zZXRJbnB1dCgncG9zaXRpb24nLCBwb3NpdGlvbik7XG5cbiAgICAgIHRoaXMuX2FwcFJlZi5hdHRhY2hWaWV3KGNvbnRhaW5lckNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG5cbiAgICAgIGNvbnN0IGRvbUVsZW0gPSAoY29udGFpbmVyQ29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KVxuICAgICAgICAucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuXG4gICAgICBjb250YWluZXJDb21wb25lbnRSZWYuaW5zdGFuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3RyeVJlbW92ZUNvbnRhaW5lcihwb3NpdGlvbik7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fY29udGFpbmVyc01hcC5zZXQocG9zaXRpb24sIGNvbnRhaW5lckNvbXBvbmVudFJlZik7XG4gICAgfVxuXG4gICAgY29udGFpbmVyQ29tcG9uZW50UmVmLmluc3RhbmNlLmFkZE5vdGlmaWNhdGlvbihjb25maWcsIGRhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJ5UmVtb3ZlQ29udGFpbmVyKHBvc2l0aW9uOiBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbikge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuX2NvbnRhaW5lcnNNYXAuZ2V0KHBvc2l0aW9uKTtcblxuICAgIGlmICghY29udGFpbmVyPy5pbnN0YW5jZSB8fCBjb250YWluZXIuaW5zdGFuY2Uubm90aWZpY2F0aW9ucy5sZW5ndGggPiAwKVxuICAgICAgcmV0dXJuO1xuXG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcoY29udGFpbmVyLmhvc3RWaWV3KTtcbiAgICAgIGNvbnRhaW5lci5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9jb250YWluZXJzTWFwLmRlbGV0ZShwb3NpdGlvbik7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -37,8 +37,14 @@ export class CpsNotificationContainerComponent {
37
37
  this.moveOnTop();
38
38
  }
39
39
  addNotification(config, data) {
40
+ if (!config.allowDuplicates) {
41
+ const duplicate = this.notifications.find((notification) => notification.data.message === data.message &&
42
+ notification.data.details === data.details);
43
+ if (duplicate)
44
+ return;
45
+ }
40
46
  if (this.notifications.length > 0 &&
41
- this.notifications.length === this.maxAmount) {
47
+ this.notifications.length === config.maxAmount) {
42
48
  this.notifications.pop();
43
49
  }
44
50
  this.notifications.unshift({ data, config });
@@ -58,7 +64,7 @@ export class CpsNotificationContainerComponent {
58
64
  }
59
65
  }
60
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CpsNotificationContainerComponent, deps: [{ token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: CpsNotificationContainerComponent, isStandalone: true, selector: "cps-notification-container", inputs: { position: "position", maxAmount: "maxAmount" }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n [ngClass]=\"{\n 'cps-notification-container-mask': true,\n 'cps-notification-container-left':\n position === CpsNotificationPosition.LEFT,\n 'cps-notification-container-right':\n position === CpsNotificationPosition.RIGHT,\n 'cps-notification-container-top': position === CpsNotificationPosition.TOP,\n 'cps-notification-container-bottom':\n position === CpsNotificationPosition.BOTTOM,\n 'cps-notification-container-top-left':\n position === CpsNotificationPosition.TOPLEFT,\n 'cps-notification-container-top-right':\n position === CpsNotificationPosition.TOPRIGHT,\n 'cps-notification-container-bottom-left':\n position === CpsNotificationPosition.BOTTOMLEFT,\n 'cps-notification-container-bottom-right':\n position === CpsNotificationPosition.BOTTOMRIGHT\n }\">\n <div #container class=\"cps-notification-container\" role=\"notification\">\n <div\n #content\n class=\"cps-notification-container-content\"\n [ngStyle]=\"{\n 'align-items': [\n CpsNotificationPosition.RIGHT,\n CpsNotificationPosition.TOPRIGHT,\n CpsNotificationPosition.BOTTOMRIGHT\n ].includes(position)\n ? 'flex-end'\n : 'flex-start'\n }\">\n <cps-toast\n *ngFor=\"let notification of notifications; let i = index\"\n [data]=\"notification.data\"\n [config]=\"notification.config\"\n @notificationAnimation\n (closed)=\"onCloseNotification(i)\">\n </cps-toast>\n </div>\n </div>\n</div>\n", styles: [".cps-notification-container-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.cps-notification-container{box-sizing:border-box;display:flex;flex-direction:column;pointer-events:auto;transform:scale(1);position:relative;border-radius:4px;border:0 none;font-family:Source Sans Pro,sans-serif;font-size:1rem;font-weight:400}.cps-notification-container .cps-notification-container-content{background:transparent;flex-grow:1;gap:12px;display:flex;flex-direction:column-reverse}.cps-notification-container-top .cps-notification-container,.cps-notification-container-bottom .cps-notification-container,.cps-notification-container-left .cps-notification-container,.cps-notification-container-right .cps-notification-container,.cps-notification-container-top-left .cps-notification-container,.cps-notification-container-top-right .cps-notification-container,.cps-notification-container-bottom-left .cps-notification-container,.cps-notification-container-bottom-right .cps-notification-container{margin:.75rem;transform:translateZ(0)}.cps-notification-container-left{justify-content:flex-start}.cps-notification-container-right{justify-content:flex-end}.cps-notification-container-top{align-items:flex-start}.cps-notification-container-top-left{justify-content:flex-start;align-items:flex-start}.cps-notification-container-top-right{justify-content:flex-end;align-items:flex-start}.cps-notification-container-bottom{align-items:flex-end}.cps-notification-container-bottom-left{justify-content:flex-start;align-items:flex-end}.cps-notification-container-bottom-right{justify-content:flex-end;align-items:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: CpsToastComponent, selector: "cps-toast", inputs: ["config", "data"], outputs: ["closed"] }], animations: [
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: CpsNotificationContainerComponent, isStandalone: true, selector: "cps-notification-container", inputs: { position: "position" }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n [ngClass]=\"{\n 'cps-notification-container-mask': true,\n 'cps-notification-container-left':\n position === CpsNotificationPosition.LEFT,\n 'cps-notification-container-right':\n position === CpsNotificationPosition.RIGHT,\n 'cps-notification-container-top': position === CpsNotificationPosition.TOP,\n 'cps-notification-container-bottom':\n position === CpsNotificationPosition.BOTTOM,\n 'cps-notification-container-top-left':\n position === CpsNotificationPosition.TOPLEFT,\n 'cps-notification-container-top-right':\n position === CpsNotificationPosition.TOPRIGHT,\n 'cps-notification-container-bottom-left':\n position === CpsNotificationPosition.BOTTOMLEFT,\n 'cps-notification-container-bottom-right':\n position === CpsNotificationPosition.BOTTOMRIGHT\n }\">\n <div #container class=\"cps-notification-container\" role=\"notification\">\n <div\n #content\n class=\"cps-notification-container-content\"\n [ngStyle]=\"{\n 'align-items': [\n CpsNotificationPosition.RIGHT,\n CpsNotificationPosition.TOPRIGHT,\n CpsNotificationPosition.BOTTOMRIGHT\n ].includes(position)\n ? 'flex-end'\n : 'flex-start'\n }\">\n <cps-toast\n *ngFor=\"let notification of notifications; let i = index\"\n [data]=\"notification.data\"\n [config]=\"notification.config\"\n @notificationAnimation\n (closed)=\"onCloseNotification(i)\">\n </cps-toast>\n </div>\n </div>\n</div>\n", styles: [".cps-notification-container-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.cps-notification-container{box-sizing:border-box;display:flex;flex-direction:column;pointer-events:auto;transform:scale(1);position:relative;border-radius:4px;border:0 none;font-family:Source Sans Pro,sans-serif;font-size:1rem;font-weight:400}.cps-notification-container .cps-notification-container-content{background:transparent;flex-grow:1;gap:12px;display:flex;flex-direction:column-reverse}.cps-notification-container-top .cps-notification-container,.cps-notification-container-bottom .cps-notification-container,.cps-notification-container-left .cps-notification-container,.cps-notification-container-right .cps-notification-container,.cps-notification-container-top-left .cps-notification-container,.cps-notification-container-top-right .cps-notification-container,.cps-notification-container-bottom-left .cps-notification-container,.cps-notification-container-bottom-right .cps-notification-container{margin:.75rem;transform:translateZ(0)}.cps-notification-container-left{justify-content:flex-start}.cps-notification-container-right{justify-content:flex-end}.cps-notification-container-top{align-items:flex-start}.cps-notification-container-top-left{justify-content:flex-start;align-items:flex-start}.cps-notification-container-top-right{justify-content:flex-end;align-items:flex-start}.cps-notification-container-bottom{align-items:flex-end}.cps-notification-container-bottom-left{justify-content:flex-start;align-items:flex-end}.cps-notification-container-bottom-right{justify-content:flex-end;align-items:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: CpsToastComponent, selector: "cps-toast", inputs: ["config", "data"], outputs: ["closed"] }], animations: [
62
68
  trigger('notificationAnimation', [
63
69
  transition(':enter, :leave', [query('@*', animateChild())])
64
70
  ])
@@ -80,12 +86,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
80
86
  ], template: "<div\n [ngClass]=\"{\n 'cps-notification-container-mask': true,\n 'cps-notification-container-left':\n position === CpsNotificationPosition.LEFT,\n 'cps-notification-container-right':\n position === CpsNotificationPosition.RIGHT,\n 'cps-notification-container-top': position === CpsNotificationPosition.TOP,\n 'cps-notification-container-bottom':\n position === CpsNotificationPosition.BOTTOM,\n 'cps-notification-container-top-left':\n position === CpsNotificationPosition.TOPLEFT,\n 'cps-notification-container-top-right':\n position === CpsNotificationPosition.TOPRIGHT,\n 'cps-notification-container-bottom-left':\n position === CpsNotificationPosition.BOTTOMLEFT,\n 'cps-notification-container-bottom-right':\n position === CpsNotificationPosition.BOTTOMRIGHT\n }\">\n <div #container class=\"cps-notification-container\" role=\"notification\">\n <div\n #content\n class=\"cps-notification-container-content\"\n [ngStyle]=\"{\n 'align-items': [\n CpsNotificationPosition.RIGHT,\n CpsNotificationPosition.TOPRIGHT,\n CpsNotificationPosition.BOTTOMRIGHT\n ].includes(position)\n ? 'flex-end'\n : 'flex-start'\n }\">\n <cps-toast\n *ngFor=\"let notification of notifications; let i = index\"\n [data]=\"notification.data\"\n [config]=\"notification.config\"\n @notificationAnimation\n (closed)=\"onCloseNotification(i)\">\n </cps-toast>\n </div>\n </div>\n</div>\n", styles: [".cps-notification-container-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.cps-notification-container{box-sizing:border-box;display:flex;flex-direction:column;pointer-events:auto;transform:scale(1);position:relative;border-radius:4px;border:0 none;font-family:Source Sans Pro,sans-serif;font-size:1rem;font-weight:400}.cps-notification-container .cps-notification-container-content{background:transparent;flex-grow:1;gap:12px;display:flex;flex-direction:column-reverse}.cps-notification-container-top .cps-notification-container,.cps-notification-container-bottom .cps-notification-container,.cps-notification-container-left .cps-notification-container,.cps-notification-container-right .cps-notification-container,.cps-notification-container-top-left .cps-notification-container,.cps-notification-container-top-right .cps-notification-container,.cps-notification-container-bottom-left .cps-notification-container,.cps-notification-container-bottom-right .cps-notification-container{margin:.75rem;transform:translateZ(0)}.cps-notification-container-left{justify-content:flex-start}.cps-notification-container-right{justify-content:flex-end}.cps-notification-container-top{align-items:flex-start}.cps-notification-container-top-left{justify-content:flex-start;align-items:flex-start}.cps-notification-container-top-right{justify-content:flex-end;align-items:flex-start}.cps-notification-container-bottom{align-items:flex-end}.cps-notification-container-bottom-left{justify-content:flex-start;align-items:flex-end}.cps-notification-container-bottom-right{justify-content:flex-end;align-items:flex-end}\n"] }]
81
87
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }, { type: i0.ChangeDetectorRef }], propDecorators: { position: [{
82
88
  type: Input
83
- }], maxAmount: [{
84
- type: Input
85
89
  }], closed: [{
86
90
  type: Output
87
91
  }], container: [{
88
92
  type: ViewChild,
89
93
  args: ['container']
90
94
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL3NlcnZpY2VzL2Nwcy1ub3RpZmljYXRpb24vaW50ZXJuYWwvY29tcG9uZW50cy9jcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci9jcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvc2VydmljZXMvY3BzLW5vdGlmaWNhdGlvbi9pbnRlcm5hbC9jb21wb25lbnRzL2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyL2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFpQixZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3hCLE1BQU0sd0NBQXdDLENBQUM7QUFFaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDL0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDN0csT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7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QixDQUFDLElBQUksY0FDekI7d0JBQ1YsT0FBTyxDQUFDLHVCQUF1QixFQUFFOzRCQUMvQixVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDNUQsQ0FBQztxQkFDSDsrSkFTUSxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0ksTUFBTTtzQkFBZixNQUFNO2dCQUlpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpbWVOR0NvbmZpZywgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgWkluZGV4VXRpbHMgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcbmltcG9ydCB7XG4gIENwc05vdGlmaWNhdGlvbkNvbmZpZyxcbiAgQ3BzTm90aWZpY2F0aW9uUG9zaXRpb25cbn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY3BzLW5vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgQ3BzTm90aWZpY2F0aW9uRGF0YSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ludGVybmFsL2Nwcy1ub3RpZmljYXRpb24tZGF0YSc7XG5pbXBvcnQgeyBDcHNCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL2Nwcy1idXR0b24vY3BzLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzSW5mb0NpcmNsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY3BzLWluZm8tY2lyY2xlL2Nwcy1pbmZvLWNpcmNsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENwc1RvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXRvYXN0L2Nwcy10b2FzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgYW5pbWF0ZUNoaWxkLCBxdWVyeSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG50eXBlIE51bGxhYmxlPFQgPSB2b2lkPiA9IFQgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2hhcmVkTW9kdWxlLFxuICAgIENwc0J1dHRvbkNvbXBvbmVudCxcbiAgICBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50LFxuICAgIENwc0ljb25Db21wb25lbnQsXG4gICAgQ3BzVG9hc3RDb21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ25vdGlmaWNhdGlvbkFuaW1hdGlvbicsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlciwgOmxlYXZlJywgW3F1ZXJ5KCdAKicsIGFuaW1hdGVDaGlsZCgpKV0pXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDcHNOb3RpZmljYXRpb25Db250YWluZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIHRoZSBub3RpZmljYXRpb24gY29udGFpbmVyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHBvc2l0aW9uID0gQ3BzTm90aWZpY2F0aW9uUG9zaXRpb24uVE9QUklHSFQ7XG5cbiAgLyoqXG4gICAqIE1heCBhbW91bnQgb2Ygbm90aWZpY2F0aW9ucyB0byBiZSBkaXNwbGF5ZWQgd2l0aGluIHRoZSBjb250YWluZXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbWF4QW1vdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gbm90aWZpY2F0aW9uIGNsb3NlLlxuICAgKiBAcGFyYW0ge0Nwc05vdGlmaWNhdGlvbkNvbmZpZ30gQ3BzTm90aWZpY2F0aW9uQ29uZmlnIC0gbm90aWZpY2F0aW9uIGNsb3NlZC5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIENwc05vdGlmaWNhdGlvblBvc2l0aW9uID0gQ3BzTm90aWZpY2F0aW9uUG9zaXRpb247XG5cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICB3cmFwcGVyOiBOdWxsYWJsZTxIVE1MRWxlbWVudD47XG5cbiAgbm90aWZpY2F0aW9uczoge1xuICAgIGRhdGE6IENwc05vdGlmaWNhdGlvbkRhdGE7XG4gICAgY29uZmlnOiBDcHNOb3RpZmljYXRpb25Db25maWc7XG4gIH1bXSA9IFtdO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHB1YmxpYyB6b25lOiBOZ1pvbmUsXG4gICAgcHVibGljIHByaW1lTkdDb25maWc6IFByaW1lTkdDb25maWcsXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy53cmFwcGVyID0gKFxuICAgICAgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnRcbiAgICApLnBhcmVudEVsZW1lbnQ7XG4gICAgdGhpcy5tb3ZlT25Ub3AoKTtcbiAgfVxuXG4gIGFkZE5vdGlmaWNhdGlvbihjb25maWc6IENwc05vdGlmaWNhdGlvbkNvbmZpZywgZGF0YTogQ3BzTm90aWZpY2F0aW9uRGF0YSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMubGVuZ3RoID09PSB0aGlzLm1heEFtb3VudFxuICAgICkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnBvcCgpO1xuICAgIH1cbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMudW5zaGlmdCh7IGRhdGEsIGNvbmZpZyB9KTtcbiAgfVxuXG4gIG9uQ2xvc2VOb3RpZmljYXRpb24oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMubm90aWZpY2F0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBtb3ZlT25Ub3AoKSB7XG4gICAgWkluZGV4VXRpbHMuc2V0KFxuICAgICAgJ21vZGFsJyxcbiAgICAgIHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5wcmltZU5HQ29uZmlnLnpJbmRleC5tb2RhbFxuICAgICk7XG4gICAgKHRoaXMud3JhcHBlciBhcyBIVE1MRWxlbWVudCkuc3R5bGUuekluZGV4ID0gU3RyaW5nKFxuICAgICAgcGFyc2VJbnQoXG4gICAgICAgICh0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudCkuc3R5bGUuekluZGV4LFxuICAgICAgICAxMFxuICAgICAgKSAtIDFcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgW25nQ2xhc3NdPVwie1xuICAgICdjcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci1tYXNrJzogdHJ1ZSxcbiAgICAnY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXItbGVmdCc6XG4gICAgICBwb3NpdGlvbiA9PT0gQ3BzTm90aWZpY2F0aW9uUG9zaXRpb24uTEVGVCxcbiAgICAnY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXItcmlnaHQnOlxuICAgICAgcG9zaXRpb24gPT09IENwc05vdGlmaWNhdGlvblBvc2l0aW9uLlJJR0hULFxuICAgICdjcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci10b3AnOiBwb3NpdGlvbiA9PT0gQ3BzTm90aWZpY2F0aW9uUG9zaXRpb24uVE9QLFxuICAgICdjcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci1ib3R0b20nOlxuICAgICAgcG9zaXRpb24gPT09IENwc05vdGlmaWNhdGlvblBvc2l0aW9uLkJPVFRPTSxcbiAgICAnY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXItdG9wLWxlZnQnOlxuICAgICAgcG9zaXRpb24gPT09IENwc05vdGlmaWNhdGlvblBvc2l0aW9uLlRPUExFRlQsXG4gICAgJ2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyLXRvcC1yaWdodCc6XG4gICAgICBwb3NpdGlvbiA9PT0gQ3BzTm90aWZpY2F0aW9uUG9zaXRpb24uVE9QUklHSFQsXG4gICAgJ2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyLWJvdHRvbS1sZWZ0JzpcbiAgICAgIHBvc2l0aW9uID09PSBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbi5CT1RUT01MRUZULFxuICAgICdjcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci1ib3R0b20tcmlnaHQnOlxuICAgICAgcG9zaXRpb24gPT09IENwc05vdGlmaWNhdGlvblBvc2l0aW9uLkJPVFRPTVJJR0hUXG4gIH1cIj5cbiAgPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXJcIiByb2xlPVwibm90aWZpY2F0aW9uXCI+XG4gICAgPGRpdlxuICAgICAgI2NvbnRlbnRcbiAgICAgIGNsYXNzPVwiY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXItY29udGVudFwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICdhbGlnbi1pdGVtcyc6IFtcbiAgICAgICAgICBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbi5SSUdIVCxcbiAgICAgICAgICBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbi5UT1BSSUdIVCxcbiAgICAgICAgICBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbi5CT1RUT01SSUdIVFxuICAgICAgICBdLmluY2x1ZGVzKHBvc2l0aW9uKVxuICAgICAgICAgID8gJ2ZsZXgtZW5kJ1xuICAgICAgICAgIDogJ2ZsZXgtc3RhcnQnXG4gICAgICB9XCI+XG4gICAgICA8Y3BzLXRvYXN0XG4gICAgICAgICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtkYXRhXT1cIm5vdGlmaWNhdGlvbi5kYXRhXCJcbiAgICAgICAgW2NvbmZpZ109XCJub3RpZmljYXRpb24uY29uZmlnXCJcbiAgICAgICAgQG5vdGlmaWNhdGlvbkFuaW1hdGlvblxuICAgICAgICAoY2xvc2VkKT1cIm9uQ2xvc2VOb3RpZmljYXRpb24oaSlcIj5cbiAgICAgIDwvY3BzLXRvYXN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL3NlcnZpY2VzL2Nwcy1ub3RpZmljYXRpb24vaW50ZXJuYWwvY29tcG9uZW50cy9jcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci9jcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvc2VydmljZXMvY3BzLW5vdGlmaWNhdGlvbi9pbnRlcm5hbC9jb21wb25lbnRzL2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyL2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFpQixZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3hCLE1BQU0sd0NBQXdDLENBQUM7QUFFaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDL0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDN0csT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7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QUFDLHVCQUF1QixFQUFFO2dCQUMvQixVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM1RCxDQUFDO1NBQ0g7OzJGQUVVLGlDQUFpQztrQkFwQjdDLFNBQVM7K0JBQ0UsNEJBQTRCLGNBQzFCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3FCQUNsQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCO3dCQUNWLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRTs0QkFDL0IsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7eUJBQzVELENBQUM7cUJBQ0g7K0pBU1EsUUFBUTtzQkFBaEIsS0FBSztnQkFPSSxNQUFNO3NCQUFmLE1BQU07Z0JBSWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmltZU5HQ29uZmlnLCBTaGFyZWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBaSW5kZXhVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ3BzTm90aWZpY2F0aW9uQ29uZmlnLFxuICBDcHNOb3RpZmljYXRpb25Qb3NpdGlvblxufSBmcm9tICcuLi8uLi8uLi91dGlscy9jcHMtbm90aWZpY2F0aW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBDcHNOb3RpZmljYXRpb25EYXRhIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW50ZXJuYWwvY3BzLW5vdGlmaWNhdGlvbi1kYXRhJztcbmltcG9ydCB7IENwc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY3BzLWJ1dHRvbi9jcHMtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jcHMtaW5mby1jaXJjbGUvY3BzLWluZm8tY2lyY2xlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzVG9hc3RDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtdG9hc3QvY3BzLXRvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBhbmltYXRlQ2hpbGQsIHF1ZXJ5LCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbnR5cGUgTnVsbGFibGU8VCA9IHZvaWQ+ID0gVCB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTaGFyZWRNb2R1bGUsXG4gICAgQ3BzQnV0dG9uQ29tcG9uZW50LFxuICAgIENwc0luZm9DaXJjbGVDb21wb25lbnQsXG4gICAgQ3BzSWNvbkNvbXBvbmVudCxcbiAgICBDcHNUb2FzdENvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignbm90aWZpY2F0aW9uQW5pbWF0aW9uJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyLCA6bGVhdmUnLCBbcXVlcnkoJ0AqJywgYW5pbWF0ZUNoaWxkKCkpXSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENwc05vdGlmaWNhdGlvbkNvbnRhaW5lckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIG5vdGlmaWNhdGlvbiBjb250YWluZXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcG9zaXRpb24gPSBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbi5UT1BSSUdIVDtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIG5vdGlmaWNhdGlvbiBjbG9zZS5cbiAgICogQHBhcmFtIHtDcHNOb3RpZmljYXRpb25Db25maWd9IENwc05vdGlmaWNhdGlvbkNvbmZpZyAtIG5vdGlmaWNhdGlvbiBjbG9zZWQuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbiA9IENwc05vdGlmaWNhdGlvblBvc2l0aW9uO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lcjogTnVsbGFibGU8RWxlbWVudFJlZj47XG5cbiAgd3JhcHBlcjogTnVsbGFibGU8SFRNTEVsZW1lbnQ+O1xuXG4gIG5vdGlmaWNhdGlvbnM6IHtcbiAgICBkYXRhOiBDcHNOb3RpZmljYXRpb25EYXRhO1xuICAgIGNvbmZpZzogQ3BzTm90aWZpY2F0aW9uQ29uZmlnO1xuICB9W10gPSBbXTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwdWJsaWMgem9uZTogTmdab25lLFxuICAgIHB1YmxpYyBwcmltZU5HQ29uZmlnOiBQcmltZU5HQ29uZmlnLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMud3JhcHBlciA9IChcbiAgICAgIHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50XG4gICAgKS5wYXJlbnRFbGVtZW50O1xuICAgIHRoaXMubW92ZU9uVG9wKCk7XG4gIH1cblxuICBhZGROb3RpZmljYXRpb24oY29uZmlnOiBDcHNOb3RpZmljYXRpb25Db25maWcsIGRhdGE6IENwc05vdGlmaWNhdGlvbkRhdGEpIHtcbiAgICBpZiAoIWNvbmZpZy5hbGxvd0R1cGxpY2F0ZXMpIHtcbiAgICAgIGNvbnN0IGR1cGxpY2F0ZSA9IHRoaXMubm90aWZpY2F0aW9ucy5maW5kKFxuICAgICAgICAobm90aWZpY2F0aW9uKSA9PlxuICAgICAgICAgIG5vdGlmaWNhdGlvbi5kYXRhLm1lc3NhZ2UgPT09IGRhdGEubWVzc2FnZSAmJlxuICAgICAgICAgIG5vdGlmaWNhdGlvbi5kYXRhLmRldGFpbHMgPT09IGRhdGEuZGV0YWlsc1xuICAgICAgKTtcbiAgICAgIGlmIChkdXBsaWNhdGUpIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5ub3RpZmljYXRpb25zLmxlbmd0aCA9PT0gY29uZmlnLm1heEFtb3VudFxuICAgICkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnBvcCgpO1xuICAgIH1cbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMudW5zaGlmdCh7IGRhdGEsIGNvbmZpZyB9KTtcbiAgfVxuXG4gIG9uQ2xvc2VOb3RpZmljYXRpb24oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMubm90aWZpY2F0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBtb3ZlT25Ub3AoKSB7XG4gICAgWkluZGV4VXRpbHMuc2V0KFxuICAgICAgJ21vZGFsJyxcbiAgICAgIHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5wcmltZU5HQ29uZmlnLnpJbmRleC5tb2RhbFxuICAgICk7XG4gICAgKHRoaXMud3JhcHBlciBhcyBIVE1MRWxlbWVudCkuc3R5bGUuekluZGV4ID0gU3RyaW5nKFxuICAgICAgcGFyc2VJbnQoXG4gICAgICAgICh0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudCkuc3R5bGUuekluZGV4LFxuICAgICAgICAxMFxuICAgICAgKSAtIDFcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgW25nQ2xhc3NdPVwie1xuICAgICdjcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci1tYXNrJzogdHJ1ZSxcbiAgICAnY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXItbGVmdCc6XG4gICAgICBwb3NpdGlvbiA9PT0gQ3BzTm90aWZpY2F0aW9uUG9zaXRpb24uTEVGVCxcbiAgICAnY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXItcmlnaHQnOlxuICAgICAgcG9zaXRpb24gPT09IENwc05vdGlmaWNhdGlvblBvc2l0aW9uLlJJR0hULFxuICAgICdjcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci10b3AnOiBwb3NpdGlvbiA9PT0gQ3BzTm90aWZpY2F0aW9uUG9zaXRpb24uVE9QLFxuICAgICdjcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci1ib3R0b20nOlxuICAgICAgcG9zaXRpb24gPT09IENwc05vdGlmaWNhdGlvblBvc2l0aW9uLkJPVFRPTSxcbiAgICAnY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXItdG9wLWxlZnQnOlxuICAgICAgcG9zaXRpb24gPT09IENwc05vdGlmaWNhdGlvblBvc2l0aW9uLlRPUExFRlQsXG4gICAgJ2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyLXRvcC1yaWdodCc6XG4gICAgICBwb3NpdGlvbiA9PT0gQ3BzTm90aWZpY2F0aW9uUG9zaXRpb24uVE9QUklHSFQsXG4gICAgJ2Nwcy1ub3RpZmljYXRpb24tY29udGFpbmVyLWJvdHRvbS1sZWZ0JzpcbiAgICAgIHBvc2l0aW9uID09PSBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbi5CT1RUT01MRUZULFxuICAgICdjcHMtbm90aWZpY2F0aW9uLWNvbnRhaW5lci1ib3R0b20tcmlnaHQnOlxuICAgICAgcG9zaXRpb24gPT09IENwc05vdGlmaWNhdGlvblBvc2l0aW9uLkJPVFRPTVJJR0hUXG4gIH1cIj5cbiAgPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXJcIiByb2xlPVwibm90aWZpY2F0aW9uXCI+XG4gICAgPGRpdlxuICAgICAgI2NvbnRlbnRcbiAgICAgIGNsYXNzPVwiY3BzLW5vdGlmaWNhdGlvbi1jb250YWluZXItY29udGVudFwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICdhbGlnbi1pdGVtcyc6IFtcbiAgICAgICAgICBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbi5SSUdIVCxcbiAgICAgICAgICBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbi5UT1BSSUdIVCxcbiAgICAgICAgICBDcHNOb3RpZmljYXRpb25Qb3NpdGlvbi5CT1RUT01SSUdIVFxuICAgICAgICBdLmluY2x1ZGVzKHBvc2l0aW9uKVxuICAgICAgICAgID8gJ2ZsZXgtZW5kJ1xuICAgICAgICAgIDogJ2ZsZXgtc3RhcnQnXG4gICAgICB9XCI+XG4gICAgICA8Y3BzLXRvYXN0XG4gICAgICAgICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtkYXRhXT1cIm5vdGlmaWNhdGlvbi5kYXRhXCJcbiAgICAgICAgW2NvbmZpZ109XCJub3RpZmljYXRpb24uY29uZmlnXCJcbiAgICAgICAgQG5vdGlmaWNhdGlvbkFuaW1hdGlvblxuICAgICAgICAoY2xvc2VkKT1cIm9uQ2xvc2VOb3RpZmljYXRpb24oaSlcIj5cbiAgICAgIDwvY3BzLXRvYXN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19