@progressio_resources/gravity-design-system 3.5.0 → 3.5.2
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.
- package/esm2022/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.mjs +2 -1
- package/esm2022/lib/components/gravity-push-notifications/gravity-push-notifications.component.mjs +3 -3
- package/fesm2022/progressio_resources-gravity-design-system.mjs +3 -2
- package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -258,6 +258,7 @@ export class GravityDropdownListComponent {
|
|
|
258
258
|
}
|
|
259
259
|
clearSelection() {
|
|
260
260
|
this.selectedItems = [];
|
|
261
|
+
this.networkConfig = null;
|
|
261
262
|
if (this.multiple) {
|
|
262
263
|
this.selectedItemsResponse.emit(this.selectedItems);
|
|
263
264
|
}
|
|
@@ -508,4 +509,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
508
509
|
type: HostListener,
|
|
509
510
|
args: ['document:click', ['$event']]
|
|
510
511
|
}] } });
|
|
511
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1kcm9wZG93bi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1kcm9wZG93bi1saXN0L2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktZHJvcGRvd24tbGlzdC9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBRTVFLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBK0IsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7QUFRckssTUFBTSxPQUFPLDRCQUE0QjtJQXlCdkMsSUFDSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFLRCxJQUNJLEtBQUssQ0FBQyxXQUF5QztRQUNqRCxJQUFJLFdBQVcsRUFBRTtZQUNmLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBQUEsQ0FBQztJQWFILFlBQW9CLGVBQThDLEVBQVUsS0FBaUI7UUFBekUsb0JBQWUsR0FBZixlQUFl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TTt1QkFBQyxVQUFVO2dCQUdkLEtBQUs7c0JBRFIsU0FBUzt1QkFBQyxhQUFhO2dCQW9UbUIsZUFBZTtzQkFBMUQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtGaWx0ZXJCeVBpcGV9IGZyb20gXCIuL2ZpbHRlci1ieS5waXBlXCI7XG5pbXBvcnQge0dyYXZpdHlJY29uQ29tcG9uZW50fSBmcm9tIFwiLi4vZ3Jhdml0eS1pY29uL2dyYXZpdHktaWNvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7R3Jhdml0eURyb3Bkb3duTWFuYWdlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9ncmF2aXR5LWRyb3Bkb3duLW1hbmFnZXIuc2VydmljZVwiO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2UsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYXZpdHktZHJvcGRvd24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRmlsdGVyQnlQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBHcmF2aXR5RHJvcGRvd25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vIENvbXBvbmVudCBmZWF0dXJlc1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGljb25MZWZ0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpdGVtczogQXJyYXk8YW55PjtcbiAgQElucHV0KCkgcHVibGljIGN5cHJlc3NUYWc6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdXBwb3J0VGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgaGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGNsZWFyYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGN1cnJlbnRMYW5nOiBzdHJpbmcgPSAnZW4nO1xuICBASW5wdXQoKSBwdWJsaWMgaXNDdXJyZW5jeTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaXNSZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tVmFsdWVzOiBBcnJheTxhbnk+IHwgYW55O1xuICBASW5wdXQoKSBwdWJsaWMgY29uZmlnPzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyB9O1xuXG4gIC8vIEFwcGVhcmFuY2Ugc2V0dGluZ3NcbiAgQElucHV0KCkgcHVibGljIGxhYmVsU2l6ZTogJ3NtJyB8ICdtZCcgfCAnbGcnID0gJ3NtJztcbiAgQElucHV0KCkgcHVibGljIHNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgPSAnbWQnO1xuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRUeXBlOiAnZmllbGQnIHwgJ2xhYmVsJyA9ICdmaWVsZCc7XG4gIEBJbnB1dCgpIHB1YmxpYyB3aWR0aDogJ3Nob3J0JyB8ICdtZWRpdW0nIHwgJ2Z1bGwnIHwgJ2ZpdCcgPSAnc2hvcnQnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkcm9wZG93blN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRyb3Bkb3duT3BlbmVkO1xuICB9XG5cbiAgc2V0IGRyb3Bkb3duU3RhdGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gdmFsdWU7XG4gIH1cblxuICBAT3V0cHV0KCkgZHJvcGRvd25TdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgncmVzcG9uc2UnKSBwdWJsaWMgc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlOiBFdmVudEVtaXR0ZXI8YW55W10gfCBhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JylcbiAgc2V0IHdhdGNoKHNlYXJjaElucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+KSB7XG4gICAgaWYgKHNlYXJjaElucHV0KSB7XG4gICAgICBzZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSk7XG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcbiAgcHVibGljIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG4gIHB1YmxpYyBpc29Db25maWc6IHN0cmluZyA9ICdpc28nO1xuXHRwdWJsaWMgbmFtZUNvbmZpZzogc3RyaW5nID0gJ25hbWUnO1xuICBwdWJsaWMgYXZhaWxhYmxlT3B0aW9uczogYW55W10gPSBbXTtcbiAgcHVibGljIGRyb3Bkb3duT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBvcGVuQ2hpbGRyZW5NYXAgPSBuZXcgTWFwPGFueSwgYm9vbGVhbj4oKTtcbiAgcHVibGljIG5ldHdvcmtDb25maWc6IHsgbGFiZWw6IHN0cmluZzsgaXNvOiBzdHJpbmc7IGlkOiBudW1iZXI7IH0gPSBudWxsO1xuXG5cdHByaXZhdGUgZHJvcGRvd25NYW5hZ2VyU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgZHJvcGRvd25TZXJ2aWNlOiBHcmF2aXR5RHJvcGRvd25NYW5hZ2VyU2VydmljZSwgcHJpdmF0ZSBfZXJlZjogRWxlbWVudFJlZikgeyB9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5kcm9wZG93bk1hbmFnZXJTdWJzY3JpcHRpb24gPSB0aGlzLmRyb3Bkb3duU2VydmljZS5kcm9wZG93bk9wZW5lZCQuc3Vic2NyaWJlKG9wZW5lZERyb3Bkb3duID0+IHtcblx0XHRcdGlmIChvcGVuZWREcm9wZG93biAhPT0gdGhpcyAmJiB0aGlzLmRyb3Bkb3duT3BlbmVkKSB7XG5cdFx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuYXZhaWxhYmxlT3B0aW9ucyA9IHRoaXMuaXRlbXM7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2N1c3RvbVZhbHVlcyddKSB7XG4gICAgICBjb25zdCBjaGFuZ2VJdGVtOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzWydjdXN0b21WYWx1ZXMnXTtcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNoYW5nZUl0ZW0/LmN1cnJlbnRWYWx1ZTtcblxuICAgICAgY29uc3QgZmluZE9wdGlvblJlY3Vyc2l2ZWx5ID0gKGl0ZW1zOiBhbnlbXSwgdmFsdWU6IGFueSk6IGFueSB8IG51bGwgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICBjb25zdCBpdGVtVmFsdWUgPSB0aGlzLmNvbmZpZyA/IGl0ZW1bdGhpcy5jb25maWcudmFsdWVdIDogaXRlbTtcbiAgICAgICAgICBpZiAoaXRlbVZhbHVlID09IHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgICAgY29uc3QgZm91bmRDaGlsZCA9IGZpbmRPcHRpb25SZWN1cnNpdmVseShpdGVtLmNoaWxkcmVuLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoZm91bmRDaGlsZCkgcmV0dXJuIGZvdW5kQ2hpbGQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgY3VycmVudFZhbHVlLmZvckVhY2goKHZhbDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBmaW5kT3B0aW9uUmVjdXJzaXZlbHkodGhpcy5pdGVtcywgdmFsKTtcbiAgICAgICAgICBpZiAoZm91bmQgJiYgIXRoaXMuc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhmb3VuZCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGZvdW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50VmFsdWUgIT0gbnVsbCAmJiBjdXJyZW50VmFsdWUgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gZmluZE9wdGlvblJlY3Vyc2l2ZWx5KHRoaXMuaXRlbXMsIGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtmb3VuZF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlSXRlbS5maXJzdENoYW5nZSkge1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0aWYgKHRoaXMuZHJvcGRvd25NYW5hZ2VyU3Vic2NyaXB0aW9uKSB7XG5cdFx0XHR0aGlzLmRyb3Bkb3duTWFuYWdlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRTdGF0dXMoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJ2Rpc2FibGVkJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNSZWFkb25seSkge1xuICAgICAgcmV0dXJuICdyZWFkb25seSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc0Vycm9yKSB7XG4gICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZHJvcGRvd25PcGVuZWQpIHtcbiAgICAgIHJldHVybiAnb3Blbic7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuICdzZWxlY3RlZCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnYWN0aXZlJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNJY29uTGVmdE5ldygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pY29uTGVmdCkge1xuICAgICAgcmV0dXJuIEdyYXZpdHlJY29uQ29tcG9uZW50LmlzTmV3SWNvbih0aGlzLmljb25MZWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuXHRwdWJsaWMgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5uZXR3b3JrQ29uZmlnID0gbnVsbDtcblxuXHRcdGlmICghdGhpcy5pc0Rpc2FibGVkICYmICF0aGlzLmlzUmVhZG9ubHkpIHtcblx0XHRcdGlmICh0aGlzLmRyb3Bkb3duT3BlbmVkKSB7XG5cdFx0XHRcdHRoaXMuZW1pdFNlbGVjdGlvbigpO1xuXHRcdFx0XHR0aGlzLnNlYXJjaFRleHQgPSAnJztcblx0XHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLm9wZW5Ecm9wZG93bigpO1xuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSXRlbXM/LmZvckVhY2goc2VsID0+IHtcblx0XHRcdFx0XHR0aGlzLml0ZW1zPy5mb3JFYWNoKHBhcmVudCA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocGFyZW50LmNoaWxkcmVuPy5pbmNsdWRlcyhzZWwpKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMub3BlbkNoaWxkcmVuTWFwLnNldChwYXJlbnQsIHRydWUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGVtaXRTZWxlY3Rpb24oKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMubXVsdGlwbGUpIHtcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEl0ZW1zWzBdKSB7XG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zWzBdKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2VsZWN0SXRlbShpdGVtVG9BZGQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGlzUGFyZW50ID0gISFpdGVtVG9BZGQuY2hpbGRyZW47XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGl0ZW1Ub0FkZCk7XG5cbiAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoaSA9PlxuICAgICAgICAgICh0aGlzLmNvbmZpZyA/IGlbdGhpcy5jb25maWcudmFsdWVdIDogaSkgIT09XG4gICAgICAgICAgKHRoaXMuY29uZmlnID8gaXRlbVRvQWRkW3RoaXMuY29uZmlnLnZhbHVlXSA6IGl0ZW1Ub0FkZClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaXNQYXJlbnQpIHtcbiAgICAgICAgICBpdGVtVG9BZGQuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKGkgPT4gaSAhPT0gY2hpbGQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChwYXJlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKHBhcmVudC5jaGlsZHJlbj8uaW5jbHVkZXMoaXRlbVRvQWRkKSkge1xuICAgICAgICAgICAgICBjb25zdCBhbnlTZWxlY3RlZCA9IHBhcmVudC5jaGlsZHJlbi5zb21lKGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgICAgICAgICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gcGFyZW50LmNoaWxkcmVuLmV2ZXJ5KGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgICAgICAgICAgIGlmICghYW55U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKGkgPT4gaSAhPT0gcGFyZW50KTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChhbGxTZWxlY3RlZCAmJiAhdGhpcy5jaGVja0lmU2VsZWN0ZWQocGFyZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtVG9BZGQpO1xuXG4gICAgICAgIGlmIChpc1BhcmVudCkge1xuICAgICAgICAgIGl0ZW1Ub0FkZC5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja0lmU2VsZWN0ZWQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2gocGFyZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4/LmluY2x1ZGVzKGl0ZW1Ub0FkZCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW4uZXZlcnkoY2hpbGQgPT4gdGhpcy5jaGVja0lmU2VsZWN0ZWQoY2hpbGQpKTtcbiAgICAgICAgICAgICAgaWYgKGFsbFNlbGVjdGVkICYmICF0aGlzLmNoZWNrSWZTZWxlY3RlZChwYXJlbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2gocGFyZW50KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtpdGVtVG9BZGRdO1xuICAgICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1BhcnRpYWxseVNlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghaXRlbS5jaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuID0gaXRlbS5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gdGhpcy5jaGVja0lmU2VsZWN0ZWQoY2hpbGQpKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRDaGlsZHJlbi5sZW5ndGggPiAwICYmIHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoIDwgaXRlbS5jaGlsZHJlbi5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tJZlNlbGVjdGVkKGl0ZW0/OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBnZXRWYWx1ZSA9IChlbDogYW55KSA9PiB0aGlzLmNvbmZpZyA/IGVsW3RoaXMuY29uZmlnLnZhbHVlXSA6IGVsO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShzZWxlY3RlZCA9PiBnZXRWYWx1ZShzZWxlY3RlZCkgPT09IGdldFZhbHVlKGl0ZW0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuSXRlbXModGhpcy5hdmFpbGFibGVPcHRpb25zKTtcbiAgICByZXR1cm4gZmxhdHRlbi5sZW5ndGggPiAwICYmIGZsYXR0ZW4uZXZlcnkob3B0aW9uID0+XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShzZWxlY3RlZCA9PiBnZXRWYWx1ZShzZWxlY3RlZCkgPT09IGdldFZhbHVlKG9wdGlvbikpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBbGxJdGVtcyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5JdGVtcyh0aGlzLmF2YWlsYWJsZU9wdGlvbnMpO1xuICAgIGNvbnN0IGdldFZhbHVlID0gKGVsOiBhbnkpID0+IHRoaXMuY29uZmlnID8gZWxbdGhpcy5jb25maWcudmFsdWVdIDogZWw7XG5cbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IGZsYXR0ZW4uZXZlcnkob3B0aW9uID0+XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShzZWxlY3RlZCA9PiBnZXRWYWx1ZShzZWxlY3RlZCkgPT09IGdldFZhbHVlKG9wdGlvbikpXG4gICAgKTtcblxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihzZWxlY3RlZCA9PlxuICAgICAgICAhZmxhdHRlbi5zb21lKG9wdGlvbiA9PiBnZXRWYWx1ZShzZWxlY3RlZCkgPT09IGdldFZhbHVlKG9wdGlvbikpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGF0dGVuLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShzZWxlY3RlZCA9PiBnZXRWYWx1ZShzZWxlY3RlZCkgPT09IGdldFZhbHVlKG9wdGlvbikpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2gob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmbGF0dGVuSXRlbXMoaXRlbXM6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgYWNjLnB1c2goaXRlbSk7XG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGFjYy5wdXNoKC4uLnRoaXMuZmxhdHRlbkl0ZW1zKGl0ZW0uY2hpbGRyZW4pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdChudWxsKTtcbiAgICB9XG4gIH1cblxuXHRwdWJsaWMgZmlsdGVySXRlbXMoKTogdm9pZCB7XG5cdFx0Y29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hUZXh0Py50b0xvd2VyQ2FzZSgpO1xuXHRcdHRoaXMub3BlbkNoaWxkcmVuTWFwLmNsZWFyKCk7XG5cblx0XHRpZiAoIXNlYXJjaCkge1xuXHRcdFx0dGhpcy5hdmFpbGFibGVPcHRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLml0ZW1zKSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlsdGVyUmVjdXJzaXZlID0gKGl0ZW1zOiBhbnlbXSk6IGFueVtdID0+IHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IFtdO1xuXG5cdFx0XHRpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuXHRcdFx0XHRjb25zdCBoYXNDaGlsZHJlbiA9ICEhaXRlbS5jaGlsZHJlbj8ubGVuZ3RoO1xuXG5cdFx0XHRcdGNvbnN0IGZpZWxkc1RvU2VhcmNoOiBhbnlbXSA9IFtdO1xuXHRcdFx0XHRpZiAodGhpcy5jb25maWcpIHtcblx0XHRcdFx0XHRmaWVsZHNUb1NlYXJjaC5wdXNoKGl0ZW1bdGhpcy5pc29Db25maWddKTtcblx0XHRcdFx0XHRmaWVsZHNUb1NlYXJjaC5wdXNoKGl0ZW1bdGhpcy5uYW1lQ29uZmlnXSk7XG5cblx0XHRcdFx0XHRpZih0aGlzLmNvbmZpZy5sYWJlbCkge1xuXHRcdFx0XHRcdFx0ZmllbGRzVG9TZWFyY2gucHVzaChpdGVtW3RoaXMuY29uZmlnLmxhYmVsXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgbWF0Y2ggPSBmaWVsZHNUb1NlYXJjaC5zb21lKGZpZWxkID0+XG5cdFx0XHRcdFx0ZmllbGQ/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0bGV0IGZpbHRlcmVkQ2hpbGRyZW46IGFueVtdID0gW107XG5cdFx0XHRcdGlmIChoYXNDaGlsZHJlbikge1xuXHRcdFx0XHRcdGZpbHRlcmVkQ2hpbGRyZW4gPSBmaWx0ZXJSZWN1cnNpdmUoaXRlbS5jaGlsZHJlbik7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBpbmNsdWRlSXRlbSA9IGhhc0NoaWxkcmVuID8gZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwIDogbWF0Y2g7XG5cblx0XHRcdFx0aWYgKGluY2x1ZGVJdGVtKSB7XG5cdFx0XHRcdFx0Y29uc3QgbmV3SXRlbSA9IHsgLi4uaXRlbSB9O1xuXHRcdFx0XHRcdGlmIChmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdG5ld0l0ZW0uY2hpbGRyZW4gPSBmaWx0ZXJlZENoaWxkcmVuO1xuXHRcdFx0XHRcdFx0dGhpcy5vcGVuQ2hpbGRyZW5NYXAuc2V0KG5ld0l0ZW0sIHRydWUpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRkZWxldGUgbmV3SXRlbS5jaGlsZHJlbjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmVzdWx0LnB1c2gobmV3SXRlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH07XG5cblx0XHR0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSBmaWx0ZXJSZWN1cnNpdmUodGhpcy5pdGVtcyk7XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pIG9uRG9jdW1lbnRDbGljaygkZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZXJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKCRldmVudC50YXJnZXQpICYmIHRoaXMuZHJvcGRvd25PcGVuZWQpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXNbMF0pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuXHRwdWJsaWMgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuXHRcdHRoaXMuZHJvcGRvd25PcGVuZWQgPSB0cnVlO1xuXHRcdHRoaXMuZHJvcGRvd25TZXJ2aWNlLm5vdGlmeURyb3Bkb3duT3BlbmVkKHRoaXMpO1xuXHRcdHRoaXMuZHJvcGRvd25TdGF0ZUNoYW5nZS5lbWl0KHRoaXMuZHJvcGRvd25PcGVuZWQpO1xuXHR9XG5cblx0cHVibGljIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG5cdFx0dGhpcy5zZWFyY2hUZXh0ID0gJyc7XG5cdFx0dGhpcy5kcm9wZG93bk9wZW5lZCA9IGZhbHNlO1xuXHRcdHRoaXMuYXZhaWxhYmxlT3B0aW9ucyA9IHRoaXMuaXRlbXM7XG5cdFx0dGhpcy5kcm9wZG93blN0YXRlQ2hhbmdlLmVtaXQodGhpcy5kcm9wZG93bk9wZW5lZCk7XG5cdH1cblxuICBwdWJsaWMgZ2V0Q3VycmVuY3lJY29uU2l6ZShzaXplOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHNpemUpIHtcbiAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgcmV0dXJuICdzbS0xNic7XG4gICAgICBjYXNlICdsZyc6XG4gICAgICAgIHJldHVybiAnbGctMzInO1xuICAgICAgY2FzZSAneGwnOlxuICAgICAgICByZXR1cm4gJ3hsLTQwJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnbWQtMjQnO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRTcGFjaW5nQ2xhc3Moc2l6ZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChzaXplKSB7XG4gICAgICBjYXNlICdzbSc6XG4gICAgICAgIHJldHVybiAnZ3Jhdml0eS1tYXJnaW4tcmlnaHQteHhzJztcbiAgICAgIGNhc2UgJ21kJzpcbiAgICAgICAgcmV0dXJuICdncmF2aXR5LW1hcmdpbi1yaWdodC14cyc7XG4gICAgICBjYXNlICdsZyc6XG4gICAgICAgIHJldHVybiAnZ3Jhdml0eS1tYXJnaW4tcmlnaHQtc20nO1xuICAgICAgY2FzZSAneGwnOlxuICAgICAgICByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LW1kJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TXVsdGlsZXZlbFNwYWNpbmdDbGFzcyhzaXplOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHNpemUpIHtcbiAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgcmV0dXJuICdncmF2aXR5LW1hcmdpbi1yaWdodC1tZCc7XG4gICAgICBjYXNlICdtZCc6XG4gICAgICAgIHJldHVybiAnZ3Jhdml0eS1tYXJnaW4tcmlnaHQtbGcnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRMYWJlbFRleHQoKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmcgPSAnJztcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5sYWJlbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgbGV0IGRpc3BsYXlWYWx1ZSA9IHRoaXMuY29uZmlnID8gaXRlbVt0aGlzLmNvbmZpZy5sYWJlbF0gOiBpdGVtO1xuICAgICAgICBsZXQgc2VwYXJhdG9yID0gaSAhPT0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDEgPyAnLCcgOiAnJztcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgZGlzcGxheVZhbHVlICsgc2VwYXJhdG9yO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgaXNDaGlsZHJlbk9wZW4oaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbkNoaWxkcmVuTWFwLmdldChpdGVtKSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDaGlsZHJlbihpdGVtOiBhbnksIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMub3BlbkNoaWxkcmVuTWFwLmdldChpdGVtKSB8fCBmYWxzZTtcbiAgICB0aGlzLm9wZW5DaGlsZHJlbk1hcC5zZXQoaXRlbSwgIWN1cnJlbnQpO1xuICB9XG5cbiAgcHVibGljIGdldERpc3BsYXlWYWx1ZShjaGlsZDogYW55LCBjb25maWc/OiB7IGxhYmVsOiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gICAgaWYgKGNvbmZpZz8ubGFiZWwgJiYgdHlwZW9mIGNoaWxkID09PSAnb2JqZWN0JyAmJiBjaGlsZCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGNoaWxkW2NvbmZpZy5sYWJlbF0gPz8gJyc7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZCA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBpbnB1dERpc3BsYXlWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGgpIHJldHVybiAnJztcblxuICAgIGNvbnN0IGdldFZhbHVlID0gKGl0ZW06IGFueSkgPT4gdGhpcy5jb25maWcgPyBpdGVtW3RoaXMuY29uZmlnLnZhbHVlXSA6IGl0ZW07XG5cbiAgICBjb25zdCBnZXRMYWJlbCA9IChpdGVtOiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgICAgY29uc3QgYmFzZUxhYmVsID0gdGhpcy5jb25maWcgPyBpdGVtW3RoaXMuY29uZmlnLmxhYmVsXSA6IGl0ZW07XG5cbiAgICAgIGlmICghdGhpcy5tdWx0aXBsZSAmJiBpdGVtLm5ldHdvcms/LmNvZGUgJiYgKGl0ZW0ubmV0d29ya19pZCAhPT0gaXRlbS5jdXJyZW5jeV9pZCB8fCBpdGVtLmNoaWxkcmVuIHx8IGl0ZW0uaXNfRVJDMjApKSB7XG4gICAgICAgIHRoaXMubmV0d29ya0NvbmZpZyA9IHtsYWJlbDogYmFzZUxhYmVsLCBpc286IGl0ZW0ubmV0d29yaz8uY29kZSwgaWQ6IGl0ZW0ubmV0d29ya19pZH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJhc2VMYWJlbDtcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLml0ZW1zPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMubWFwKGdldExhYmVsKS5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIGNvbnN0IGxhYmVsczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgcGFyZW50IG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCBhbGxDaGlsZHJlblNlbGVjdGVkID0gcGFyZW50LmNoaWxkcmVuLmV2ZXJ5KGNoaWxkID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoc2VsID0+IGdldFZhbHVlKHNlbCkgPT09IGdldFZhbHVlKGNoaWxkKSlcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoYWxsQ2hpbGRyZW5TZWxlY3RlZCkge1xuICAgICAgICAgIGxhYmVscy5wdXNoKGdldExhYmVsKHBhcmVudCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgcGFyZW50LmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoc2VsID0+IGdldFZhbHVlKHNlbCkgPT09IGdldFZhbHVlKGNoaWxkKSkpIHtcbiAgICAgICAgICAgICAgbGFiZWxzLnB1c2goZ2V0TGFiZWwoY2hpbGQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoc2VsID0+IGdldFZhbHVlKHNlbCkgPT09IGdldFZhbHVlKHBhcmVudCkpKSB7XG4gICAgICAgIGxhYmVscy5wdXNoKGdldExhYmVsKHBhcmVudCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRydW5jYXRlKGxhYmVscyk7XG4gIH1cblxuICBwcml2YXRlIHRydW5jYXRlKGxhYmVsczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IG1heEl0ZW1zID0gdGhpcy53aWR0aCA9PT0gJ3Nob3J0JyA/IDMgOiB0aGlzLndpZHRoID09PSAnbWVkaXVtJyA/IDYgOiAxMjtcbiAgICBpZiAobGFiZWxzLmxlbmd0aCA8PSBtYXhJdGVtcykgcmV0dXJuIGxhYmVscy5qb2luKCcsICcpO1xuICAgIHJldHVybiBsYWJlbHMuc2xpY2UoMCwgbWF4SXRlbXMpLmpvaW4oJywgJykgKyAnLi4uJztcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICB0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuaXRlbXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2ZW50VHlwaW5nV2hlbkxvY2tlZChldmVudDogS2V5Ym9hcmRFdmVudCwgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICBjb25zdCBpc0xvY2tlZCA9ICF0aGlzLmRyb3Bkb3duT3BlbmVkIHx8ICF0aGlzLml0ZW1zO1xuXG4gICAgaWYgKGlzTG9ja2VkKSB7XG4gICAgICBpZiAoZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSB8fCBldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGV2ZW50LmtleSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cblxuICAgICAgaW5wdXQuYmx1cigpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0VHlwZSA9PT0gJ2ZpZWxkJ1wiPlxuICA8bGFiZWwgY2xhc3M9XCJoci1sYWJlbCBzbS1ib2xkIHt7Z2V0U3RhdHVzKCl9fVwiICpuZ0lmPVwibGFiZWxcIj5cbiAgICB7eyBsYWJlbCB9fSA8c3BhbiAqbmdJZj1cInJlcXVpcmVkIHx8IGhhc0Vycm9yXCI+Kjwvc3Bhbj5cbiAgPC9sYWJlbD5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2IGNsYXNzPVwiZ3Jhdml0eS1pbnB1dC1maWVsZCB7e2lucHV0VHlwZX19LXt7bGFiZWxTaXplfX0ge3tzaXplfX0ge3t3aWR0aH19LXdpZHRoIHt7Z2V0U3RhdHVzKCl9fVwiXG4gICAgIFthdHRyLmRhdGEtY3ldPVwiY3lwcmVzc1RhZ1wiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpO1wiPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dFR5cGUgPT09ICdmaWVsZCdcIj5cbiAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwibGVmdFwiIFtpY29uTmFtZV09XCJpY29uTGVmdFwiIFtpY29uU2l6ZV09XCJpc0ljb25MZWZ0TmV3KCkgPyAnbWQtMTYnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIihpY29uTGVmdCAmJiAhZHJvcGRvd25PcGVuZWQpIHx8IChpY29uTGVmdCAmJiAhaXRlbXMpXCI+PC9ncmF2aXR5LWljb24+XG5cbiAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwic2VhcmNoLWljb25cIiBbaWNvbk5hbWVdPVwiJ3NlYXJjaCdcIiBbaWNvblNpemVdPVwiJ3NtLTEyJ1wiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIihkcm9wZG93bk9wZW5lZCAmJiBpdGVtcylcIj48L2dyYXZpdHktaWNvbj5cblxuICAgIDxkaXYgKm5nSWY9XCIhZHJvcGRvd25PcGVuZWQgJiYgbmV0d29ya0NvbmZpZ1wiIGNsYXNzPVwibmV0d29yay1waWxsXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImhyLWxhYmVsIHt7c2l6ZX19LXJlZ3VsYXJcIj57e25ldHdvcmtDb25maWcubGFiZWx9fTwvc3Bhbj5cbiAgICAgIDxncmF2aXR5LW5ldHdvcmstcGlsbCBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIFtuZXR3b3JrXT1cIntpc286IG5ldHdvcmtDb25maWcuaXNvLCBpZDogbmV0d29ya0NvbmZpZy5pZH1cIj48L2dyYXZpdHktbmV0d29yay1waWxsPlxuICAgIDwvZGl2PlxuXG4gICAgPGlucHV0ICpuZ0lmPVwiIW5ldHdvcmtDb25maWcgfHwgZHJvcGRvd25PcGVuZWRcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICBjbGFzcz1cImhyLWxhYmVsIHt7c2l6ZX19LXJlZ3VsYXIge3tnZXRTdGF0dXMoKX19XCJcbiAgICAgICAgICAgKGZvY3VzKT1cInNlYXJjaFRleHQgPSAnJ1wiIFtjbGFzcy5sb2NrZWRdPVwiIWRyb3Bkb3duT3BlbmVkIHx8ICFpdGVtc1wiXG4gICAgICAgICAgIChrZXlkb3duKT1cInByZXZlbnRUeXBpbmdXaGVuTG9ja2VkKCRldmVudCwgc2VhcmNoSW5wdXQpXCJcbiAgICAgICAgICAgKGlucHV0KT1cImZpbHRlckl0ZW1zKCk7IGRyb3Bkb3duT3BlbmVkID0gdHJ1ZVwiXG4gICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiY3lwcmVzc1RhZyArICdfc2VhcmNoX2lucHV0J1wiXG4gICAgICAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgICAgICBbbmdNb2RlbF09XCIoZHJvcGRvd25PcGVuZWQgJiYgaXRlbXMpID8gc2VhcmNoVGV4dCA6IGlucHV0RGlzcGxheVZhbHVlKClcIlxuICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hUZXh0ID0gJGV2ZW50XCJcbiAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyhkcm9wZG93bk9wZW5lZCAmJiBpdGVtcykgPyAoY3VycmVudExhbmcgPT0gJ2VzJyA/ICdCdXNjYXInIDogJ1NlYXJjaCBpbnB1dCcpIDogKHBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiBsYWJlbCl9fVwiPlxuXG4gICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cInJpZ2h0XCIgW2ljb25OYW1lXT1cImRyb3Bkb3duT3BlbmVkID8gJ2Fycm93LXVwJzogJ2Fycm93LWRvd24nXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uU2l6ZV09XCInbWQtMTYnXCIgKm5nSWY9XCIhaXNSZWFkb25seSAmJiBzZWFyY2hUZXh0Lmxlbmd0aCA9PSAwXCI+PC9ncmF2aXR5LWljb24+XG5cbiAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwicmlnaHRcIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ21kLTE2J1wiICpuZ0lmPVwiZHJvcGRvd25PcGVuZWQgJiYgc2VhcmNoVGV4dC5sZW5ndGggPiAwXCI+PC9ncmF2aXR5LWljb24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dFR5cGUgPT09ICdsYWJlbCdcIj5cbiAgICA8Z3Jhdml0eS1kcm9wZG93bi1sYWJlbCAob25DbGlja0xhYmVsKT1cInRvZ2dsZURyb3Bkb3duKClcIiBbbGFiZWxdPVwiZ2V0TGFiZWxUZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cImxhYmVsU2l6ZVwiIFtpc09wZW5dPVwiZHJvcGRvd25PcGVuZWRcIj5cbiAgICA8L2dyYXZpdHktZHJvcGRvd24tbGFiZWw+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1wYW5lbCB7e2dldFN0YXR1cygpfX1cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKm5nSWY9XCJpdGVtcyAmJiBkcm9wZG93bk9wZW5lZFwiXG4gICAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnICsgJ19wYW5lbCdcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0XCIgKm5nSWY9XCJpbnB1dFR5cGUgPT09ICdsYWJlbCdcIj5cbiAgICAgIDxncmF2aXR5LWljb24gY2xhc3M9XCJzZWFyY2gtaWNvblwiIFtpY29uTmFtZV09XCInc2VhcmNoJ1wiIFtpY29uU2l6ZV09XCInc20tMTInXCI+PC9ncmF2aXR5LWljb24+XG4gICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJoci1sYWJlbCB7e3NpemV9fS1yZWd1bGFyXCIgKGlucHV0KT1cImZpbHRlckl0ZW1zKClcIlxuICAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiY3lwcmVzc1RhZyArICdfc2VhcmNoX2lucHV0J1wiICNzZWFyY2hJbnB1dFxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIHBsYWNlaG9sZGVyPVwie3tjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0J1c2NhcicgOiAnU2VhcmNoIGlucHV0J319XCI+XG4gICAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwicG9pbnRlciByZXNldC1pY29uXCIgKGNsaWNrKT1cInNlYXJjaFRleHQgPSAnJzsgZmlsdGVySXRlbXMoKVwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uU2l6ZV09XCInc20tMTInXCIgKm5nSWY9XCJzZWFyY2hUZXh0Py5sZW5ndGggPiAwXCI+PC9ncmF2aXR5LWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LWFsbFwiICpuZ0lmPVwibXVsdGlwbGUgJiYgYXZhaWxhYmxlT3B0aW9ucy5sZW5ndGggIT0gMFwiPlxuICAgICAgPGdyYXZpdHktY2hlY2tib3ggW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBbGxJdGVtcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrSWZTZWxlY3RlZCgpXCI+PC9ncmF2aXR5LWNoZWNrYm94PlxuICAgICAgPHAgY2xhc3M9XCJoci1sYWJlbCB7e3NpemV9fS1yZWd1bGFyXCI+e3sgY3VycmVudExhbmcgPT0gJ2VzJyA/ICdTZWxlY2Npb25hciB0b2RvJyA6ICdTZWxlY3QgYWxsJyB9fTwvcD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJpdGVtcy1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpdGVtc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhdmFpbGFibGVPcHRpb25zXCJcbiAgICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImlzQ3VycmVuY3kgPyAnY3VycmVuY3lfb3B0aW9uXycgKyBpdGVtLmN1cnJlbmN5X2lkIDogJydcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaHItbGFiZWwgaXRlbSB7e3NpemV9fS1yZWd1bGFyIHBvaW50ZXJcIlxuICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImNoZWNrSWZTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICBbY2xhc3MucGFydGlhbF09XCJpc1BhcnRpYWxseVNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGggPyBtdWx0aXBsZSA/IHNlbGVjdEl0ZW0oaXRlbSkgOiB0b2dnbGVDaGlsZHJlbihpdGVtLCAkZXZlbnQpIDogc2VsZWN0SXRlbShpdGVtKVwiPlxuXG4gICAgICAgICAgICA8Z3Jhdml0eS1jaGVja2JveCAqbmdJZj1cIm11bHRpcGxlXCIgW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCJcbiAgICAgICAgICAgICAgW2lzUGFydGlhbF09XCJpc1BhcnRpYWxseVNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tJZlNlbGVjdGVkKGl0ZW0pXCI+XG4gICAgICAgICAgICA8L2dyYXZpdHktY2hlY2tib3g+XG5cbiAgICAgICAgICAgIDxncmF2aXR5LWN1cnJlbmN5LWRpc3BsYXktdjIgKm5nSWY9XCJpc0N1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cIml0ZW0udHlwZSA9PT0gJ0ZJQVQnID8gJ2ZpYXQtc2hvcnQnIDogJ3Nob3J0LWhyeidcIlxuICAgICAgICAgICAgICAgIFtjdXJyZW5jeV09XCJ7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5X25hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lfaWQ6IGl0ZW0uY3VycmVuY3lfaWQsIGN1cnJlbmN5X2lzbzogaXRlbS5pc28sXG4gICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfaWQ6IGl0ZW0ubmV0d29yaz8uaWQsIG5ldHdvcmtfaXNvOiBpdGVtLm5ldHdvcms/LmNvZGUsXG4gICAgICAgICAgICAgICAgICAgIHBpbGxfdHlwZTogY2hlY2tJZlNlbGVjdGVkKGl0ZW0pID8gJ3NlY29uZGFyeScgOiAncHJpbWFyeSd9XCIgPlxuICAgICAgICAgICAgPC9ncmF2aXR5LWN1cnJlbmN5LWRpc3BsYXktdjI+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNDdXJyZW5jeVwiIFtuZ0NsYXNzXT1cImdldFNwYWNpbmdDbGFzcyhzaXplKVwiPnt7IGdldERpc3BsYXlWYWx1ZShpdGVtLCBjb25maWcpIH19PC9kaXY+XG5cbiAgICAgICAgICAgIDxncmF2aXR5LWljb24gc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0b1wiIChjbGljayk9XCJ0b2dnbGVDaGlsZHJlbihpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImlzQ2hpbGRyZW5PcGVuKGl0ZW0pID8gJ2Fycm93LXVwJyA6ICdhcnJvdy1kb3duJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uU2l6ZV09XCInbWQtMTYnXCIgKm5nSWY9XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGhcIj48L2dyYXZpdHktaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNoaWxkcmVuXCIgKm5nSWY9XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGggJiYgaXNDaGlsZHJlbk9wZW4oaXRlbSlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhyLWxhYmVsIGl0ZW0ge3tzaXplfX0tcmVndWxhciBwb2ludGVyXCIgW25nQ2xhc3NdPVwieydtdWx0aXBsZScgOiBtdWx0aXBsZX1cIlxuICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJjaGVja0lmU2VsZWN0ZWQoY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShjaGlsZClcIj5cbiAgICAgICAgICAgICAgICA8Z3Jhdml0eS1jaGVja2JveCAqbmdJZj1cIm11bHRpcGxlXCIgW25nQ2xhc3NdPVwiZ2V0TXVsdGlsZXZlbFNwYWNpbmdDbGFzcyhzaXplKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tJZlNlbGVjdGVkKGNoaWxkKVwiPjwvZ3Jhdml0eS1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8Z3Jhdml0eS1jdXJyZW5jeSAqbmdJZj1cImlzQ3VycmVuY3lcIiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cImdldEN1cnJlbmN5SWNvblNpemUoc2l6ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW5jeV09XCJ7Y3VycmVuY3lfaWQ6IGNoaWxkLmN1cnJlbmN5X2lkfVwiPjwvZ3Jhdml0eS1jdXJyZW5jeT5cbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImdldFNwYWNpbmdDbGFzcyhzaXplKVwiPnt7IGdldERpc3BsYXlWYWx1ZShjaGlsZCwgY29uZmlnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxncmF2aXR5LW5ldHdvcmstcGlsbCAqbmdJZj1cImlzQ3VycmVuY3lcIiBbdHlwZV09XCJjaGVja0lmU2VsZWN0ZWQoY2hpbGQpID8gJ3NlY29uZGFyeScgOiAncHJpbWFyeSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmV0d29ya109XCJ7IGlzbzogY2hpbGQubmV0d29yaz8uY29kZSwgaWQ6IGNoaWxkLm5ldHdvcms/LmlkIH1cIj48L2dyYXZpdHktbmV0d29yay1waWxsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY29udGFpbmVyXCIgKm5nSWY9XCJhdmFpbGFibGVPcHRpb25zLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoci1sYWJlbCBpdGVtIHt7c2l6ZX19LWJvbGQgbm8tcmVzdWx0c1wiPlxuICAgICAgICAgICAge3sgY3VycmVudExhbmcgPT0gJ2VzJyA/ICdTaW4gcmVzdWx0YWRvcyBlbmNvbnRyYWRvcycgOiAnTm8gcmVzdWx0cyBmb3VuZC4nIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZm9vdGVyXCIgKm5nSWY9XCJzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgJiYgYXZhaWxhYmxlT3B0aW9ucy5sZW5ndGggIT09IDBcIlxuICAgICAgICAgW2NsYXNzLm5vdC1jbGVhcmFibGVdPVwiIWNsZWFyYWJsZVwiPlxuICAgICAgPGdyYXZpdHktbGluayAqbmdJZj1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlbGVjdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZvbnRDbGFzc109XCInaHItbGFiZWwgc20tcmVndWxhcidcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX2NsZWFyJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtsaW5rVGV4dF09XCJjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0xpbXBpYXInIDogJ0NsZWFyIHNlbGVjdGlvbidcIj5cbiAgICAgIDwvZ3Jhdml0eS1saW5rPlxuXG4gICAgICA8Z3Jhdml0eS1saW5rICpuZ0lmPVwiYXZhaWxhYmxlT3B0aW9ucy5sZW5ndGggIT0gMFwiXG4gICAgICAgICAgICAgICAgICAgIFtmb250Q2xhc3NdPVwiJ2hyLWxhYmVsIHNtLWJvbGQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnICsgJ19hcHBseSdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVEcm9wZG93bigpXCJcbiAgICAgICAgICAgICAgICAgICAgW2xpbmtUZXh0XT1cImN1cnJlbnRMYW5nID09ICdlcycgPyAnQXBsaWNhcicgOiAnQXBwbHknXCI+XG4gICAgICA8L2dyYXZpdHktbGluaz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZm9vdGVyIG5vLXJlc3VsdHNcIiAqbmdJZj1cImF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoID09PSAwXCIgW2NsYXNzLm5vdC1jbGVhcmFibGVdPVwiIWNsZWFyYWJsZVwiPlxuICAgICAgPGdyYXZpdHktbGluayAqbmdJZj1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZvbnRDbGFzc109XCInaHItbGFiZWwgc20tcmVndWxhcidcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX2NsZWFyX3NlYXJjaCdcIlxuICAgICAgICAgICAgICAgICAgICBbbGlua1RleHRdPVwiY3VycmVudExhbmcgPT0gJ2VzJyA/ICdMaW1waWFyIGLDunNxdWVkYScgOiAnQ2xlYXIgc2VhcmNoJ1wiPlxuICAgICAgPC9ncmF2aXR5LWxpbms+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxzZWN0aW9uIGNsYXNzPVwiZXh0ZXJuYWwtY29udGVudFwiICpuZ0lmPVwiIWl0ZW1zICYmIGRyb3Bkb3duT3BlbmVkXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dFR5cGUgPT09ICdmaWVsZCdcIj5cbiAgPHAgY2xhc3M9XCJoci1sYWJlbCBzbS1yZWd1bGFyIHN1cHBvcnRpbmctdGV4dCB7e2dldFN0YXR1cygpfX0ge3tzaXplfX1cIiAqbmdJZj1cInN1cHBvcnRUZXh0XCI+XG4gICAge3sgc3VwcG9ydFRleHQgfX1cbiAgPC9wPlxuICA8cCBjbGFzcz1cImhyLWxhYmVsIHNtLXJlZ3VsYXIgc3VwcG9ydGluZy10ZXh0IHt7Z2V0U3RhdHVzKCl9fSB7e3NpemV9fVwiXG4gICAgICpuZ0lmPVwiIXN1cHBvcnRUZXh0ICYmIGdldFN0YXR1cygpID09ICdhY3RpdmUnICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgJiYgcmVxdWlyZWRcIj5cbiAgICB7eyBjdXJyZW50TGFuZyA9PSAnZXMnID8gJ1JlcXVlcmlkbycgOiAnUmVxdWlyZWQnIH19XG4gIDwvcD5cbjwvbmctY29udGFpbmVyPiJdfQ==
|
|
512
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1kcm9wZG93bi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1kcm9wZG93bi1saXN0L2dyYXZpdHktZHJvcGRvd24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktZHJvcGRvd24tbGlzdC9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBRTVFLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBK0IsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7QUFRckssTUFBTSxPQUFPLDRCQUE0QjtJQXlCdkMsSUFDSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFLRCxJQUNJLEtBQUssQ0FBQyxXQUF5QztRQUNqRCxJQUFJLFdBQVcsRUFBRTtZQUNmLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBQUEsQ0FBQztJQWFILFlBQW9CLGVBQThDLEVBQVUsS0FBaUI7UUFBekUsb0JBQWUsR0FBZixlQUFl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c0JBQTVCLE1BQU07Z0JBQ29CLHFCQUFxQjtzQkFBL0MsTUFBTTt1QkFBQyxVQUFVO2dCQUdkLEtBQUs7c0JBRFIsU0FBUzt1QkFBQyxhQUFhO2dCQXFUbUIsZUFBZTtzQkFBMUQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtGaWx0ZXJCeVBpcGV9IGZyb20gXCIuL2ZpbHRlci1ieS5waXBlXCI7XG5pbXBvcnQge0dyYXZpdHlJY29uQ29tcG9uZW50fSBmcm9tIFwiLi4vZ3Jhdml0eS1pY29uL2dyYXZpdHktaWNvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7R3Jhdml0eURyb3Bkb3duTWFuYWdlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9ncmF2aXR5LWRyb3Bkb3duLW1hbmFnZXIuc2VydmljZVwiO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2UsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYXZpdHktZHJvcGRvd24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmF2aXR5LWRyb3Bkb3duLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRmlsdGVyQnlQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBHcmF2aXR5RHJvcGRvd25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vIENvbXBvbmVudCBmZWF0dXJlc1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGljb25MZWZ0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpdGVtczogQXJyYXk8YW55PjtcbiAgQElucHV0KCkgcHVibGljIGN5cHJlc3NUYWc6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdXBwb3J0VGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgaGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGNsZWFyYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGN1cnJlbnRMYW5nOiBzdHJpbmcgPSAnZW4nO1xuICBASW5wdXQoKSBwdWJsaWMgaXNDdXJyZW5jeTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaXNSZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tVmFsdWVzOiBBcnJheTxhbnk+IHwgYW55O1xuICBASW5wdXQoKSBwdWJsaWMgY29uZmlnPzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyB9O1xuXG4gIC8vIEFwcGVhcmFuY2Ugc2V0dGluZ3NcbiAgQElucHV0KCkgcHVibGljIGxhYmVsU2l6ZTogJ3NtJyB8ICdtZCcgfCAnbGcnID0gJ3NtJztcbiAgQElucHV0KCkgcHVibGljIHNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgPSAnbWQnO1xuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRUeXBlOiAnZmllbGQnIHwgJ2xhYmVsJyA9ICdmaWVsZCc7XG4gIEBJbnB1dCgpIHB1YmxpYyB3aWR0aDogJ3Nob3J0JyB8ICdtZWRpdW0nIHwgJ2Z1bGwnIHwgJ2ZpdCcgPSAnc2hvcnQnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkcm9wZG93blN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRyb3Bkb3duT3BlbmVkO1xuICB9XG5cbiAgc2V0IGRyb3Bkb3duU3RhdGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRyb3Bkb3duT3BlbmVkID0gdmFsdWU7XG4gIH1cblxuICBAT3V0cHV0KCkgZHJvcGRvd25TdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgncmVzcG9uc2UnKSBwdWJsaWMgc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlOiBFdmVudEVtaXR0ZXI8YW55W10gfCBhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JylcbiAgc2V0IHdhdGNoKHNlYXJjaElucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+KSB7XG4gICAgaWYgKHNlYXJjaElucHV0KSB7XG4gICAgICBzZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSk7XG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcbiAgcHVibGljIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG4gIHB1YmxpYyBpc29Db25maWc6IHN0cmluZyA9ICdpc28nO1xuXHRwdWJsaWMgbmFtZUNvbmZpZzogc3RyaW5nID0gJ25hbWUnO1xuICBwdWJsaWMgYXZhaWxhYmxlT3B0aW9uczogYW55W10gPSBbXTtcbiAgcHVibGljIGRyb3Bkb3duT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBvcGVuQ2hpbGRyZW5NYXAgPSBuZXcgTWFwPGFueSwgYm9vbGVhbj4oKTtcbiAgcHVibGljIG5ldHdvcmtDb25maWc6IHsgbGFiZWw6IHN0cmluZzsgaXNvOiBzdHJpbmc7IGlkOiBudW1iZXI7IH0gPSBudWxsO1xuXG5cdHByaXZhdGUgZHJvcGRvd25NYW5hZ2VyU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgZHJvcGRvd25TZXJ2aWNlOiBHcmF2aXR5RHJvcGRvd25NYW5hZ2VyU2VydmljZSwgcHJpdmF0ZSBfZXJlZjogRWxlbWVudFJlZikgeyB9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5kcm9wZG93bk1hbmFnZXJTdWJzY3JpcHRpb24gPSB0aGlzLmRyb3Bkb3duU2VydmljZS5kcm9wZG93bk9wZW5lZCQuc3Vic2NyaWJlKG9wZW5lZERyb3Bkb3duID0+IHtcblx0XHRcdGlmIChvcGVuZWREcm9wZG93biAhPT0gdGhpcyAmJiB0aGlzLmRyb3Bkb3duT3BlbmVkKSB7XG5cdFx0XHRcdHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuYXZhaWxhYmxlT3B0aW9ucyA9IHRoaXMuaXRlbXM7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2N1c3RvbVZhbHVlcyddKSB7XG4gICAgICBjb25zdCBjaGFuZ2VJdGVtOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzWydjdXN0b21WYWx1ZXMnXTtcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGNoYW5nZUl0ZW0/LmN1cnJlbnRWYWx1ZTtcblxuICAgICAgY29uc3QgZmluZE9wdGlvblJlY3Vyc2l2ZWx5ID0gKGl0ZW1zOiBhbnlbXSwgdmFsdWU6IGFueSk6IGFueSB8IG51bGwgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICBjb25zdCBpdGVtVmFsdWUgPSB0aGlzLmNvbmZpZyA/IGl0ZW1bdGhpcy5jb25maWcudmFsdWVdIDogaXRlbTtcbiAgICAgICAgICBpZiAoaXRlbVZhbHVlID09IHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgICAgY29uc3QgZm91bmRDaGlsZCA9IGZpbmRPcHRpb25SZWN1cnNpdmVseShpdGVtLmNoaWxkcmVuLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoZm91bmRDaGlsZCkgcmV0dXJuIGZvdW5kQ2hpbGQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgY3VycmVudFZhbHVlLmZvckVhY2goKHZhbDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBmaW5kT3B0aW9uUmVjdXJzaXZlbHkodGhpcy5pdGVtcywgdmFsKTtcbiAgICAgICAgICBpZiAoZm91bmQgJiYgIXRoaXMuc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhmb3VuZCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGZvdW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50VmFsdWUgIT0gbnVsbCAmJiBjdXJyZW50VmFsdWUgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gZmluZE9wdGlvblJlY3Vyc2l2ZWx5KHRoaXMuaXRlbXMsIGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtmb3VuZF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlSXRlbS5maXJzdENoYW5nZSkge1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0aWYgKHRoaXMuZHJvcGRvd25NYW5hZ2VyU3Vic2NyaXB0aW9uKSB7XG5cdFx0XHR0aGlzLmRyb3Bkb3duTWFuYWdlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRTdGF0dXMoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJ2Rpc2FibGVkJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNSZWFkb25seSkge1xuICAgICAgcmV0dXJuICdyZWFkb25seSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc0Vycm9yKSB7XG4gICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZHJvcGRvd25PcGVuZWQpIHtcbiAgICAgIHJldHVybiAnb3Blbic7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuICdzZWxlY3RlZCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnYWN0aXZlJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNJY29uTGVmdE5ldygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pY29uTGVmdCkge1xuICAgICAgcmV0dXJuIEdyYXZpdHlJY29uQ29tcG9uZW50LmlzTmV3SWNvbih0aGlzLmljb25MZWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuXHRwdWJsaWMgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5uZXR3b3JrQ29uZmlnID0gbnVsbDtcblxuXHRcdGlmICghdGhpcy5pc0Rpc2FibGVkICYmICF0aGlzLmlzUmVhZG9ubHkpIHtcblx0XHRcdGlmICh0aGlzLmRyb3Bkb3duT3BlbmVkKSB7XG5cdFx0XHRcdHRoaXMuZW1pdFNlbGVjdGlvbigpO1xuXHRcdFx0XHR0aGlzLnNlYXJjaFRleHQgPSAnJztcblx0XHRcdFx0dGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLm9wZW5Ecm9wZG93bigpO1xuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSXRlbXM/LmZvckVhY2goc2VsID0+IHtcblx0XHRcdFx0XHR0aGlzLml0ZW1zPy5mb3JFYWNoKHBhcmVudCA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocGFyZW50LmNoaWxkcmVuPy5pbmNsdWRlcyhzZWwpKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMub3BlbkNoaWxkcmVuTWFwLnNldChwYXJlbnQsIHRydWUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGVtaXRTZWxlY3Rpb24oKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMubXVsdGlwbGUpIHtcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEl0ZW1zWzBdKSB7XG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zWzBdKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2VsZWN0SXRlbShpdGVtVG9BZGQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGlzUGFyZW50ID0gISFpdGVtVG9BZGQuY2hpbGRyZW47XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGl0ZW1Ub0FkZCk7XG5cbiAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoaSA9PlxuICAgICAgICAgICh0aGlzLmNvbmZpZyA/IGlbdGhpcy5jb25maWcudmFsdWVdIDogaSkgIT09XG4gICAgICAgICAgKHRoaXMuY29uZmlnID8gaXRlbVRvQWRkW3RoaXMuY29uZmlnLnZhbHVlXSA6IGl0ZW1Ub0FkZClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaXNQYXJlbnQpIHtcbiAgICAgICAgICBpdGVtVG9BZGQuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKGkgPT4gaSAhPT0gY2hpbGQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChwYXJlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKHBhcmVudC5jaGlsZHJlbj8uaW5jbHVkZXMoaXRlbVRvQWRkKSkge1xuICAgICAgICAgICAgICBjb25zdCBhbnlTZWxlY3RlZCA9IHBhcmVudC5jaGlsZHJlbi5zb21lKGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgICAgICAgICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gcGFyZW50LmNoaWxkcmVuLmV2ZXJ5KGNoaWxkID0+IHRoaXMuY2hlY2tJZlNlbGVjdGVkKGNoaWxkKSk7XG4gICAgICAgICAgICAgIGlmICghYW55U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKGkgPT4gaSAhPT0gcGFyZW50KTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChhbGxTZWxlY3RlZCAmJiAhdGhpcy5jaGVja0lmU2VsZWN0ZWQocGFyZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtVG9BZGQpO1xuXG4gICAgICAgIGlmIChpc1BhcmVudCkge1xuICAgICAgICAgIGl0ZW1Ub0FkZC5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja0lmU2VsZWN0ZWQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2gocGFyZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4/LmluY2x1ZGVzKGl0ZW1Ub0FkZCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW4uZXZlcnkoY2hpbGQgPT4gdGhpcy5jaGVja0lmU2VsZWN0ZWQoY2hpbGQpKTtcbiAgICAgICAgICAgICAgaWYgKGFsbFNlbGVjdGVkICYmICF0aGlzLmNoZWNrSWZTZWxlY3RlZChwYXJlbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2gocGFyZW50KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtpdGVtVG9BZGRdO1xuICAgICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1BhcnRpYWxseVNlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghaXRlbS5jaGlsZHJlbj8ubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuID0gaXRlbS5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gdGhpcy5jaGVja0lmU2VsZWN0ZWQoY2hpbGQpKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRDaGlsZHJlbi5sZW5ndGggPiAwICYmIHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoIDwgaXRlbS5jaGlsZHJlbi5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tJZlNlbGVjdGVkKGl0ZW0/OiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBnZXRWYWx1ZSA9IChlbDogYW55KSA9PiB0aGlzLmNvbmZpZyA/IGVsW3RoaXMuY29uZmlnLnZhbHVlXSA6IGVsO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShzZWxlY3RlZCA9PiBnZXRWYWx1ZShzZWxlY3RlZCkgPT09IGdldFZhbHVlKGl0ZW0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuSXRlbXModGhpcy5hdmFpbGFibGVPcHRpb25zKTtcbiAgICByZXR1cm4gZmxhdHRlbi5sZW5ndGggPiAwICYmIGZsYXR0ZW4uZXZlcnkob3B0aW9uID0+XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShzZWxlY3RlZCA9PiBnZXRWYWx1ZShzZWxlY3RlZCkgPT09IGdldFZhbHVlKG9wdGlvbikpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBbGxJdGVtcyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5JdGVtcyh0aGlzLmF2YWlsYWJsZU9wdGlvbnMpO1xuICAgIGNvbnN0IGdldFZhbHVlID0gKGVsOiBhbnkpID0+IHRoaXMuY29uZmlnID8gZWxbdGhpcy5jb25maWcudmFsdWVdIDogZWw7XG5cbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IGZsYXR0ZW4uZXZlcnkob3B0aW9uID0+XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShzZWxlY3RlZCA9PiBnZXRWYWx1ZShzZWxlY3RlZCkgPT09IGdldFZhbHVlKG9wdGlvbikpXG4gICAgKTtcblxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihzZWxlY3RlZCA9PlxuICAgICAgICAhZmxhdHRlbi5zb21lKG9wdGlvbiA9PiBnZXRWYWx1ZShzZWxlY3RlZCkgPT09IGdldFZhbHVlKG9wdGlvbikpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGF0dGVuLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShzZWxlY3RlZCA9PiBnZXRWYWx1ZShzZWxlY3RlZCkgPT09IGdldFZhbHVlKG9wdGlvbikpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2gob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmbGF0dGVuSXRlbXMoaXRlbXM6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgYWNjLnB1c2goaXRlbSk7XG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGFjYy5wdXNoKC4uLnRoaXMuZmxhdHRlbkl0ZW1zKGl0ZW0uY2hpbGRyZW4pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXHRcdHRoaXMubmV0d29ya0NvbmZpZyA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNSZXNwb25zZS5lbWl0KG51bGwpO1xuICAgIH1cbiAgfVxuXG5cdHB1YmxpYyBmaWx0ZXJJdGVtcygpOiB2b2lkIHtcblx0XHRjb25zdCBzZWFyY2ggPSB0aGlzLnNlYXJjaFRleHQ/LnRvTG93ZXJDYXNlKCk7XG5cdFx0dGhpcy5vcGVuQ2hpbGRyZW5NYXAuY2xlYXIoKTtcblxuXHRcdGlmICghc2VhcmNoKSB7XG5cdFx0XHR0aGlzLmF2YWlsYWJsZU9wdGlvbnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuaXRlbXMpKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBmaWx0ZXJSZWN1cnNpdmUgPSAoaXRlbXM6IGFueVtdKTogYW55W10gPT4ge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gW107XG5cblx0XHRcdGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG5cdFx0XHRcdGNvbnN0IGhhc0NoaWxkcmVuID0gISFpdGVtLmNoaWxkcmVuPy5sZW5ndGg7XG5cblx0XHRcdFx0Y29uc3QgZmllbGRzVG9TZWFyY2g6IGFueVtdID0gW107XG5cdFx0XHRcdGlmICh0aGlzLmNvbmZpZykge1xuXHRcdFx0XHRcdGZpZWxkc1RvU2VhcmNoLnB1c2goaXRlbVt0aGlzLmlzb0NvbmZpZ10pO1xuXHRcdFx0XHRcdGZpZWxkc1RvU2VhcmNoLnB1c2goaXRlbVt0aGlzLm5hbWVDb25maWddKTtcblxuXHRcdFx0XHRcdGlmKHRoaXMuY29uZmlnLmxhYmVsKSB7XG5cdFx0XHRcdFx0XHRmaWVsZHNUb1NlYXJjaC5wdXNoKGl0ZW1bdGhpcy5jb25maWcubGFiZWxdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBtYXRjaCA9IGZpZWxkc1RvU2VhcmNoLnNvbWUoZmllbGQgPT5cblx0XHRcdFx0XHRmaWVsZD8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaClcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRsZXQgZmlsdGVyZWRDaGlsZHJlbjogYW55W10gPSBbXTtcblx0XHRcdFx0aWYgKGhhc0NoaWxkcmVuKSB7XG5cdFx0XHRcdFx0ZmlsdGVyZWRDaGlsZHJlbiA9IGZpbHRlclJlY3Vyc2l2ZShpdGVtLmNoaWxkcmVuKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGluY2x1ZGVJdGVtID0gaGFzQ2hpbGRyZW4gPyBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDAgOiBtYXRjaDtcblxuXHRcdFx0XHRpZiAoaW5jbHVkZUl0ZW0pIHtcblx0XHRcdFx0XHRjb25zdCBuZXdJdGVtID0geyAuLi5pdGVtIH07XG5cdFx0XHRcdFx0aWYgKGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0bmV3SXRlbS5jaGlsZHJlbiA9IGZpbHRlcmVkQ2hpbGRyZW47XG5cdFx0XHRcdFx0XHR0aGlzLm9wZW5DaGlsZHJlbk1hcC5zZXQobmV3SXRlbSwgdHJ1ZSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGRlbGV0ZSBuZXdJdGVtLmNoaWxkcmVuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXN1bHQucHVzaChuZXdJdGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblxuXHRcdHRoaXMuYXZhaWxhYmxlT3B0aW9ucyA9IGZpbHRlclJlY3Vyc2l2ZSh0aGlzLml0ZW1zKTtcblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSkgb25Eb2N1bWVudENsaWNrKCRldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9lcmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoJGV2ZW50LnRhcmdldCkgJiYgdGhpcy5kcm9wZG93bk9wZW5lZCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zUmVzcG9uc2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtc1swXSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1Jlc3BvbnNlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zWzBdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH1cbiAgfVxuXG5cdHB1YmxpYyBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG5cdFx0dGhpcy5kcm9wZG93bk9wZW5lZCA9IHRydWU7XG5cdFx0dGhpcy5kcm9wZG93blNlcnZpY2Uubm90aWZ5RHJvcGRvd25PcGVuZWQodGhpcyk7XG5cdFx0dGhpcy5kcm9wZG93blN0YXRlQ2hhbmdlLmVtaXQodGhpcy5kcm9wZG93bk9wZW5lZCk7XG5cdH1cblxuXHRwdWJsaWMgY2xvc2VEcm9wZG93bigpOiB2b2lkIHtcblx0XHR0aGlzLnNlYXJjaFRleHQgPSAnJztcblx0XHR0aGlzLmRyb3Bkb3duT3BlbmVkID0gZmFsc2U7XG5cdFx0dGhpcy5hdmFpbGFibGVPcHRpb25zID0gdGhpcy5pdGVtcztcblx0XHR0aGlzLmRyb3Bkb3duU3RhdGVDaGFuZ2UuZW1pdCh0aGlzLmRyb3Bkb3duT3BlbmVkKTtcblx0fVxuXG4gIHB1YmxpYyBnZXRDdXJyZW5jeUljb25TaXplKHNpemU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgY2FzZSAnc20nOlxuICAgICAgICByZXR1cm4gJ3NtLTE2JztcbiAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgcmV0dXJuICdsZy0zMic7XG4gICAgICBjYXNlICd4bCc6XG4gICAgICAgIHJldHVybiAneGwtNDAnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdtZC0yNCc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFNwYWNpbmdDbGFzcyhzaXplOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHNpemUpIHtcbiAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgcmV0dXJuICdncmF2aXR5LW1hcmdpbi1yaWdodC14eHMnO1xuICAgICAgY2FzZSAnbWQnOlxuICAgICAgICByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LXhzJztcbiAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgcmV0dXJuICdncmF2aXR5LW1hcmdpbi1yaWdodC1zbSc7XG4gICAgICBjYXNlICd4bCc6XG4gICAgICAgIHJldHVybiAnZ3Jhdml0eS1tYXJnaW4tcmlnaHQtbWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRNdWx0aWxldmVsU3BhY2luZ0NsYXNzKHNpemU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgY2FzZSAnc20nOlxuICAgICAgICByZXR1cm4gJ2dyYXZpdHktbWFyZ2luLXJpZ2h0LW1kJztcbiAgICAgIGNhc2UgJ21kJzpcbiAgICAgICAgcmV0dXJuICdncmF2aXR5LW1hcmdpbi1yaWdodC1sZyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldExhYmVsVGV4dCgpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9ICcnO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLmxhYmVsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICBsZXQgZGlzcGxheVZhbHVlID0gdGhpcy5jb25maWcgPyBpdGVtW3RoaXMuY29uZmlnLmxhYmVsXSA6IGl0ZW07XG4gICAgICAgIGxldCBzZXBhcmF0b3IgPSBpICE9PSB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMSA/ICcsJyA6ICcnO1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBkaXNwbGF5VmFsdWUgKyBzZXBhcmF0b3I7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBpc0NoaWxkcmVuT3BlbihpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuQ2hpbGRyZW5NYXAuZ2V0KGl0ZW0pID09PSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUNoaWxkcmVuKGl0ZW06IGFueSwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5vcGVuQ2hpbGRyZW5NYXAuZ2V0KGl0ZW0pIHx8IGZhbHNlO1xuICAgIHRoaXMub3BlbkNoaWxkcmVuTWFwLnNldChpdGVtLCAhY3VycmVudCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGlzcGxheVZhbHVlKGNoaWxkOiBhbnksIGNvbmZpZz86IHsgbGFiZWw6IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICBpZiAoY29uZmlnPy5sYWJlbCAmJiB0eXBlb2YgY2hpbGQgPT09ICdvYmplY3QnICYmIGNoaWxkICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY2hpbGRbY29uZmlnLmxhYmVsXSA/PyAnJztcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkID8/ICcnO1xuICB9XG5cbiAgcHVibGljIGlucHV0RGlzcGxheVZhbHVlKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgZ2V0VmFsdWUgPSAoaXRlbTogYW55KSA9PiB0aGlzLmNvbmZpZyA/IGl0ZW1bdGhpcy5jb25maWcudmFsdWVdIDogaXRlbTtcblxuICAgIGNvbnN0IGdldExhYmVsID0gKGl0ZW06IGFueSk6IHN0cmluZyA9PiB7XG4gICAgICBjb25zdCBiYXNlTGFiZWwgPSB0aGlzLmNvbmZpZyA/IGl0ZW1bdGhpcy5jb25maWcubGFiZWxdIDogaXRlbTtcblxuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIGl0ZW0ubmV0d29yaz8uY29kZSAmJiAoaXRlbS5uZXR3b3JrX2lkICE9PSBpdGVtLmN1cnJlbmN5X2lkIHx8IGl0ZW0uY2hpbGRyZW4gfHwgaXRlbS5pc19FUkMyMCkpIHtcbiAgICAgICAgdGhpcy5uZXR3b3JrQ29uZmlnID0ge2xhYmVsOiBiYXNlTGFiZWwsIGlzbzogaXRlbS5uZXR3b3JrPy5jb2RlLCBpZDogaXRlbS5uZXR3b3JrX2lkfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYmFzZUxhYmVsO1xuICAgIH07XG5cbiAgICBpZiAoIXRoaXMuaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5tYXAoZ2V0TGFiZWwpLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBwYXJlbnQgb2YgdGhpcy5pdGVtcykge1xuICAgICAgaWYgKHBhcmVudC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGFsbENoaWxkcmVuU2VsZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW4uZXZlcnkoY2hpbGQgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShzZWwgPT4gZ2V0VmFsdWUoc2VsKSA9PT0gZ2V0VmFsdWUoY2hpbGQpKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChhbGxDaGlsZHJlblNlbGVjdGVkKSB7XG4gICAgICAgICAgbGFiZWxzLnB1c2goZ2V0TGFiZWwocGFyZW50KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBwYXJlbnQuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShzZWwgPT4gZ2V0VmFsdWUoc2VsKSA9PT0gZ2V0VmFsdWUoY2hpbGQpKSkge1xuICAgICAgICAgICAgICBsYWJlbHMucHVzaChnZXRMYWJlbChjaGlsZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShzZWwgPT4gZ2V0VmFsdWUoc2VsKSA9PT0gZ2V0VmFsdWUocGFyZW50KSkpIHtcbiAgICAgICAgbGFiZWxzLnB1c2goZ2V0TGFiZWwocGFyZW50KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHJ1bmNhdGUobGFiZWxzKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJ1bmNhdGUobGFiZWxzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF4SXRlbXMgPSB0aGlzLndpZHRoID09PSAnc2hvcnQnID8gMyA6IHRoaXMud2lkdGggPT09ICdtZWRpdW0nID8gNiA6IDEyO1xuICAgIGlmIChsYWJlbHMubGVuZ3RoIDw9IG1heEl0ZW1zKSByZXR1cm4gbGFiZWxzLmpvaW4oJywgJyk7XG4gICAgcmV0dXJuIGxhYmVscy5zbGljZSgwLCBtYXhJdGVtcykuam9pbignLCAnKSArICcuLi4nO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuYXZhaWxhYmxlT3B0aW9ucyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5pdGVtcykpO1xuICB9XG5cbiAgcHVibGljIHByZXZlbnRUeXBpbmdXaGVuTG9ja2VkKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xuICAgIGNvbnN0IGlzTG9ja2VkID0gIXRoaXMuZHJvcGRvd25PcGVuZWQgfHwgIXRoaXMuaXRlbXM7XG5cbiAgICBpZiAoaXNMb2NrZWQpIHtcbiAgICAgIGlmIChldmVudC5rZXkubGVuZ3RoID09PSAxIHx8IGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScgfHwgZXZlbnQua2V5ID09PSAnRGVsZXRlJykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuXG4gICAgICBpbnB1dC5ibHVyKCk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRUeXBlID09PSAnZmllbGQnXCI+XG4gIDxsYWJlbCBjbGFzcz1cImhyLWxhYmVsIHNtLWJvbGQge3tnZXRTdGF0dXMoKX19XCIgKm5nSWY9XCJsYWJlbFwiPlxuICAgIHt7IGxhYmVsIH19IDxzcGFuICpuZ0lmPVwicmVxdWlyZWQgfHwgaGFzRXJyb3JcIj4qPC9zcGFuPlxuICA8L2xhYmVsPlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgY2xhc3M9XCJncmF2aXR5LWlucHV0LWZpZWxkIHt7aW5wdXRUeXBlfX0te3tsYWJlbFNpemV9fSB7e3NpemV9fSB7e3dpZHRofX0td2lkdGgge3tnZXRTdGF0dXMoKX19XCJcbiAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCk7XCI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0VHlwZSA9PT0gJ2ZpZWxkJ1wiPlxuICAgIDxncmF2aXR5LWljb24gY2xhc3M9XCJsZWZ0XCIgW2ljb25OYW1lXT1cImljb25MZWZ0XCIgW2ljb25TaXplXT1cImlzSWNvbkxlZnROZXcoKSA/ICdtZC0xNicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGljb25MZWZ0ICYmICFkcm9wZG93bk9wZW5lZCkgfHwgKGljb25MZWZ0ICYmICFpdGVtcylcIj48L2dyYXZpdHktaWNvbj5cblxuICAgIDxncmF2aXR5LWljb24gY2xhc3M9XCJzZWFyY2gtaWNvblwiIFtpY29uTmFtZV09XCInc2VhcmNoJ1wiIFtpY29uU2l6ZV09XCInc20tMTInXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGRyb3Bkb3duT3BlbmVkICYmIGl0ZW1zKVwiPjwvZ3Jhdml0eS1pY29uPlxuXG4gICAgPGRpdiAqbmdJZj1cIiFkcm9wZG93bk9wZW5lZCAmJiBuZXR3b3JrQ29uZmlnXCIgY2xhc3M9XCJuZXR3b3JrLXBpbGxcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaHItbGFiZWwge3tzaXplfX0tcmVndWxhclwiPnt7bmV0d29ya0NvbmZpZy5sYWJlbH19PC9zcGFuPlxuICAgICAgPGdyYXZpdHktbmV0d29yay1waWxsIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgW25ldHdvcmtdPVwie2lzbzogbmV0d29ya0NvbmZpZy5pc28sIGlkOiBuZXR3b3JrQ29uZmlnLmlkfVwiPjwvZ3Jhdml0eS1uZXR3b3JrLXBpbGw+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXQgKm5nSWY9XCIhbmV0d29ya0NvbmZpZyB8fCBkcm9wZG93bk9wZW5lZFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgIGNsYXNzPVwiaHItbGFiZWwge3tzaXplfX0tcmVndWxhciB7e2dldFN0YXR1cygpfX1cIlxuICAgICAgICAgICAoZm9jdXMpPVwic2VhcmNoVGV4dCA9ICcnXCIgW2NsYXNzLmxvY2tlZF09XCIhZHJvcGRvd25PcGVuZWQgfHwgIWl0ZW1zXCJcbiAgICAgICAgICAgKGtleWRvd24pPVwicHJldmVudFR5cGluZ1doZW5Mb2NrZWQoJGV2ZW50LCBzZWFyY2hJbnB1dClcIlxuICAgICAgICAgICAoaW5wdXQpPVwiZmlsdGVySXRlbXMoKTsgZHJvcGRvd25PcGVuZWQgPSB0cnVlXCJcbiAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnICsgJ19zZWFyY2hfaW5wdXQnXCJcbiAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgIFtuZ01vZGVsXT1cIihkcm9wZG93bk9wZW5lZCAmJiBpdGVtcykgPyBzZWFyY2hUZXh0IDogaW5wdXREaXNwbGF5VmFsdWUoKVwiXG4gICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaFRleHQgPSAkZXZlbnRcIlxuICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7KGRyb3Bkb3duT3BlbmVkICYmIGl0ZW1zKSA/IChjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0J1c2NhcicgOiAnU2VhcmNoIGlucHV0JykgOiAocGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6IGxhYmVsKX19XCI+XG5cbiAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwicmlnaHRcIiBbaWNvbk5hbWVdPVwiZHJvcGRvd25PcGVuZWQgPyAnYXJyb3ctdXAnOiAnYXJyb3ctZG93bidcIlxuICAgICAgICAgICAgICAgICAgW2ljb25TaXplXT1cIidtZC0xNidcIiAqbmdJZj1cIiFpc1JlYWRvbmx5ICYmIHNlYXJjaFRleHQubGVuZ3RoID09IDBcIj48L2dyYXZpdHktaWNvbj5cblxuICAgIDxncmF2aXR5LWljb24gY2xhc3M9XCJyaWdodFwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uU2l6ZV09XCInbWQtMTYnXCIgKm5nSWY9XCJkcm9wZG93bk9wZW5lZCAmJiBzZWFyY2hUZXh0Lmxlbmd0aCA+IDBcIj48L2dyYXZpdHktaWNvbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0VHlwZSA9PT0gJ2xhYmVsJ1wiPlxuICAgIDxncmF2aXR5LWRyb3Bkb3duLWxhYmVsIChvbkNsaWNrTGFiZWwpPVwidG9nZ2xlRHJvcGRvd24oKVwiIFtsYWJlbF09XCJnZXRMYWJlbFRleHQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwibGFiZWxTaXplXCIgW2lzT3Blbl09XCJkcm9wZG93bk9wZW5lZFwiPlxuICAgIDwvZ3Jhdml0eS1kcm9wZG93bi1sYWJlbD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXBhbmVsIHt7Z2V0U3RhdHVzKCl9fVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAqbmdJZj1cIml0ZW1zICYmIGRyb3Bkb3duT3BlbmVkXCJcbiAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX3BhbmVsJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIiAqbmdJZj1cImlucHV0VHlwZSA9PT0gJ2xhYmVsJ1wiPlxuICAgICAgPGdyYXZpdHktaWNvbiBjbGFzcz1cInNlYXJjaC1pY29uXCIgW2ljb25OYW1lXT1cIidzZWFyY2gnXCIgW2ljb25TaXplXT1cIidzbS0xMidcIj48L2dyYXZpdHktaWNvbj5cbiAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cImhyLWxhYmVsIHt7c2l6ZX19LXJlZ3VsYXJcIiAoaW5wdXQpPVwiZmlsdGVySXRlbXMoKVwiXG4gICAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnICsgJ19zZWFyY2hfaW5wdXQnXCIgI3NlYXJjaElucHV0XG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgcGxhY2Vob2xkZXI9XCJ7e2N1cnJlbnRMYW5nID09ICdlcycgPyAnQnVzY2FyJyA6ICdTZWFyY2ggaW5wdXQnfX1cIj5cbiAgICAgIDxncmF2aXR5LWljb24gY2xhc3M9XCJwb2ludGVyIHJlc2V0LWljb25cIiAoY2xpY2spPVwic2VhcmNoVGV4dCA9ICcnOyBmaWx0ZXJJdGVtcygpXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25TaXplXT1cIidzbS0xMidcIiAqbmdJZj1cInNlYXJjaFRleHQ/Lmxlbmd0aCA+IDBcIj48L2dyYXZpdHktaWNvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtYWxsXCIgKm5nSWY9XCJtdWx0aXBsZSAmJiBhdmFpbGFibGVPcHRpb25zLmxlbmd0aCAhPSAwXCI+XG4gICAgICA8Z3Jhdml0eS1jaGVja2JveCBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbEl0ZW1zKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tJZlNlbGVjdGVkKClcIj48L2dyYXZpdHktY2hlY2tib3g+XG4gICAgICA8cCBjbGFzcz1cImhyLWxhYmVsIHt7c2l6ZX19LXJlZ3VsYXJcIj57eyBjdXJyZW50TGFuZyA9PSAnZXMnID8gJ1NlbGVjY2lvbmFyIHRvZG8nIDogJ1NlbGVjdCBhbGwnIH19PC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIml0ZW1zLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIml0ZW1zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRhaW5lclwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGF2YWlsYWJsZU9wdGlvbnNcIlxuICAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiaXNDdXJyZW5jeSA/ICdjdXJyZW5jeV9vcHRpb25fJyArIGl0ZW0uY3VycmVuY3lfaWQgOiAnJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoci1sYWJlbCBpdGVtIHt7c2l6ZX19LXJlZ3VsYXIgcG9pbnRlclwiXG4gICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiY2hlY2tJZlNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5wYXJ0aWFsXT1cImlzUGFydGlhbGx5U2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aCA/IG11bHRpcGxlID8gc2VsZWN0SXRlbShpdGVtKSA6IHRvZ2dsZUNoaWxkcmVuKGl0ZW0sICRldmVudCkgOiBzZWxlY3RJdGVtKGl0ZW0pXCI+XG5cbiAgICAgICAgICAgIDxncmF2aXR5LWNoZWNrYm94ICpuZ0lmPVwibXVsdGlwbGVcIiBbbmdDbGFzc109XCJnZXRTcGFjaW5nQ2xhc3Moc2l6ZSlcIlxuICAgICAgICAgICAgICBbaXNQYXJ0aWFsXT1cImlzUGFydGlhbGx5U2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjaGVja0lmU2VsZWN0ZWQoaXRlbSlcIj5cbiAgICAgICAgICAgIDwvZ3Jhdml0eS1jaGVja2JveD5cblxuICAgICAgICAgICAgPGdyYXZpdHktY3VycmVuY3ktZGlzcGxheS12MiAqbmdJZj1cImlzQ3VycmVuY3lcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFNwYWNpbmdDbGFzcyhzaXplKVwiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwiaXRlbS50eXBlID09PSAnRklBVCcgPyAnZmlhdC1zaG9ydCcgOiAnc2hvcnQtaHJ6J1wiXG4gICAgICAgICAgICAgICAgW2N1cnJlbmN5XT1cIntcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lfbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeV9pZDogaXRlbS5jdXJyZW5jeV9pZCwgY3VycmVuY3lfaXNvOiBpdGVtLmlzbyxcbiAgICAgICAgICAgICAgICAgICAgbmV0d29ya19pZDogaXRlbS5uZXR3b3JrPy5pZCwgbmV0d29ya19pc286IGl0ZW0ubmV0d29yaz8uY29kZSxcbiAgICAgICAgICAgICAgICAgICAgcGlsbF90eXBlOiBjaGVja0lmU2VsZWN0ZWQoaXRlbSkgPyAnc2Vjb25kYXJ5JyA6ICdwcmltYXJ5J31cIiA+XG4gICAgICAgICAgICA8L2dyYXZpdHktY3VycmVuY3ktZGlzcGxheS12Mj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0N1cnJlbmN5XCIgW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCI+e3sgZ2V0RGlzcGxheVZhbHVlKGl0ZW0sIGNvbmZpZykgfX08L2Rpdj5cblxuICAgICAgICAgICAgPGdyYXZpdHktaWNvbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvXCIgKGNsaWNrKT1cInRvZ2dsZUNoaWxkcmVuKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbk5hbWVdPVwiaXNDaGlsZHJlbk9wZW4oaXRlbSkgPyAnYXJyb3ctdXAnIDogJ2Fycm93LWRvd24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25TaXplXT1cIidtZC0xNidcIiAqbmdJZj1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aFwiPjwvZ3Jhdml0eS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY2hpbGRyZW5cIiAqbmdJZj1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aCAmJiBpc0NoaWxkcmVuT3BlbihpdGVtKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgaXRlbS5jaGlsZHJlblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaHItbGFiZWwgaXRlbSB7e3NpemV9fS1yZWd1bGFyIHBvaW50ZXJcIiBbbmdDbGFzc109XCJ7J211bHRpcGxlJyA6IG11bHRpcGxlfVwiXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImNoZWNrSWZTZWxlY3RlZChjaGlsZClcIlxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGNoaWxkKVwiPlxuICAgICAgICAgICAgICAgIDxncmF2aXR5LWNoZWNrYm94ICpuZ0lmPVwibXVsdGlwbGVcIiBbbmdDbGFzc109XCJnZXRNdWx0aWxldmVsU3BhY2luZ0NsYXNzKHNpemUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjaGVja0lmU2VsZWN0ZWQoY2hpbGQpXCI+PC9ncmF2aXR5LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDxncmF2aXR5LWN1cnJlbmN5ICpuZ0lmPVwiaXNDdXJyZW5jeVwiIFtuZ0NsYXNzXT1cImdldFNwYWNpbmdDbGFzcyhzaXplKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiZ2V0Q3VycmVuY3lJY29uU2l6ZShzaXplKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbmN5XT1cIntjdXJyZW5jeV9pZDogY2hpbGQuY3VycmVuY3lfaWR9XCI+PC9ncmF2aXR5LWN1cnJlbmN5PlxuICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZ2V0U3BhY2luZ0NsYXNzKHNpemUpXCI+e3sgZ2V0RGlzcGxheVZhbHVlKGNoaWxkLCBjb25maWcpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGdyYXZpdHktbmV0d29yay1waWxsICpuZ0lmPVwiaXNDdXJyZW5jeVwiIFt0eXBlXT1cImNoZWNrSWZTZWxlY3RlZChjaGlsZCkgPyAnc2Vjb25kYXJ5JyA6ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXR3b3JrXT1cInsgaXNvOiBjaGlsZC5uZXR3b3JrPy5jb2RlLCBpZDogY2hpbGQubmV0d29yaz8uaWQgfVwiPjwvZ3Jhdml0eS1uZXR3b3JrLXBpbGw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jb250YWluZXJcIiAqbmdJZj1cImF2YWlsYWJsZU9wdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhyLWxhYmVsIGl0ZW0ge3tzaXplfX0tYm9sZCBuby1yZXN1bHRzXCI+XG4gICAgICAgICAgICB7eyBjdXJyZW50TGFuZyA9PSAnZXMnID8gJ1NpbiByZXN1bHRhZG9zIGVuY29udHJhZG9zJyA6ICdObyByZXN1bHRzIGZvdW5kLicgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1mb290ZXJcIiAqbmdJZj1cInNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCAmJiBhdmFpbGFibGVPcHRpb25zLmxlbmd0aCAhPT0gMFwiXG4gICAgICAgICBbY2xhc3Mubm90LWNsZWFyYWJsZV09XCIhY2xlYXJhYmxlXCI+XG4gICAgICA8Z3Jhdml0eS1saW5rICpuZ0lmPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICBbZm9udENsYXNzXT1cIidoci1sYWJlbCBzbS1yZWd1bGFyJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiY3lwcmVzc1RhZyArICdfY2xlYXInXCJcbiAgICAgICAgICAgICAgICAgICAgW2xpbmtUZXh0XT1cImN1cnJlbnRMYW5nID09ICdlcycgPyAnTGltcGlhcicgOiAnQ2xlYXIgc2VsZWN0aW9uJ1wiPlxuICAgICAgPC9ncmF2aXR5LWxpbms+XG5cbiAgICAgIDxncmF2aXR5LWxpbmsgKm5nSWY9XCJhdmFpbGFibGVPcHRpb25zLmxlbmd0aCAhPSAwXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZvbnRDbGFzc109XCInaHItbGFiZWwgc20tYm9sZCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImN5cHJlc3NUYWcgKyAnX2FwcGx5J1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZURyb3Bkb3duKClcIlxuICAgICAgICAgICAgICAgICAgICBbbGlua1RleHRdPVwiY3VycmVudExhbmcgPT0gJ2VzJyA/ICdBcGxpY2FyJyA6ICdBcHBseSdcIj5cbiAgICAgIDwvZ3Jhdml0eS1saW5rPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1mb290ZXIgbm8tcmVzdWx0c1wiICpuZ0lmPVwiYXZhaWxhYmxlT3B0aW9ucy5sZW5ndGggPT09IDBcIiBbY2xhc3Mubm90LWNsZWFyYWJsZV09XCIhY2xlYXJhYmxlXCI+XG4gICAgICA8Z3Jhdml0eS1saW5rICpuZ0lmPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICBbZm9udENsYXNzXT1cIidoci1sYWJlbCBzbS1yZWd1bGFyJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiY3lwcmVzc1RhZyArICdfY2xlYXJfc2VhcmNoJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtsaW5rVGV4dF09XCJjdXJyZW50TGFuZyA9PSAnZXMnID8gJ0xpbXBpYXIgYsO6c3F1ZWRhJyA6ICdDbGVhciBzZWFyY2gnXCI+XG4gICAgICA8L2dyYXZpdHktbGluaz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHNlY3Rpb24gY2xhc3M9XCJleHRlcm5hbC1jb250ZW50XCIgKm5nSWY9XCIhaXRlbXMgJiYgZHJvcGRvd25PcGVuZWRcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3NlY3Rpb24+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0VHlwZSA9PT0gJ2ZpZWxkJ1wiPlxuICA8cCBjbGFzcz1cImhyLWxhYmVsIHNtLXJlZ3VsYXIgc3VwcG9ydGluZy10ZXh0IHt7Z2V0U3RhdHVzKCl9fSB7e3NpemV9fVwiICpuZ0lmPVwic3VwcG9ydFRleHRcIj5cbiAgICB7eyBzdXBwb3J0VGV4dCB9fVxuICA8L3A+XG4gIDxwIGNsYXNzPVwiaHItbGFiZWwgc20tcmVndWxhciBzdXBwb3J0aW5nLXRleHQge3tnZXRTdGF0dXMoKX19IHt7c2l6ZX19XCJcbiAgICAgKm5nSWY9XCIhc3VwcG9ydFRleHQgJiYgZ2V0U3RhdHVzKCkgPT0gJ2FjdGl2ZScgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCAmJiByZXF1aXJlZFwiPlxuICAgIHt7IGN1cnJlbnRMYW5nID09ICdlcycgPyAnUmVxdWVyaWRvJyA6ICdSZXF1aXJlZCcgfX1cbiAgPC9wPlxuPC9uZy1jb250YWluZXI+Il19
|
package/esm2022/lib/components/gravity-push-notifications/gravity-push-notifications.component.mjs
CHANGED
|
@@ -39,11 +39,11 @@ export class GravityPushNotificationsComponent {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityPushNotificationsComponent, deps: [{ token: i1.PushNotificationsService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityPushNotificationsComponent, selector: "gravity-push-notifications", inputs: { userNotifications: "userNotifications" }, outputs: { viewedNotificationsResponse: "viewedNotificationsResponse" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"btn-group notifications-wrapper\" data-cy=\"PUSH_NOTIFICATIONS_wrapper\">\n <div class=\"notifications-toggle pointer\" [class.active]=\"isPanelOpen\" data-cy=\"PUSH_NOTIFICATIONS_toggle\"\n (click)=\"handleToggleNotificationsPanel()\">\n <gravity-icon class=\"bell\" [iconName]=\"'bell'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <span *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\" class=\"circle\"></span>\n </div>\n <div *ngIf=\"isPanelOpen\" class=\"dropdown-menu dropdown-menu-right\" data-cy=\"PUSH_NOTIFICATIONS_panel\">\n <div class=\"panel-header\" data-cy=\"PUSH_NOTIFICATIONS_panel_header\">\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_title\"> Notifications </p>\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_pending_counter\"\n *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\">\n {{pushNotificationsService.pendingNotifications.length}}\n </p>\n </div>\n <div class=\"notifications\" data-cy=\"PUSH_NOTIFICATIONS_item\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0\">\n <p> New </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.pendingNotifications, let index = index\">\n <div class=\"notification pending\" data-cy=\"PUSH_NOTIFICATIONS_new_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('pending-' + index)\"\n id=\"pending-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n <span class=\"pending-notification-circle\"></span>\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.pendingNotifications.length\">\n </ng-container>\n </div>\n <hr *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0 && pushNotificationsService.seenNotifications?.length > 0\">\n <div class=\"notifications\" *ngIf=\"pushNotificationsService.seenNotifications?.length > 0\">\n <p> Old </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.seenNotifications, let index = index\">\n <div class=\"notification\" data-cy=\"PUSH_NOTIFICATIONS_old_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('seen-' + index)\"\n id=\"seen-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyAdditionalText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.seenNotifications.length\">\n </ng-container>\n </div>\n <div class=\"notifications\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length == 0 && pushNotificationsService.seenNotifications?.length == 0\">\n <p class=\"no-notification\"> No new notifications </p>\n </div>\n </div>\n</div>\n", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.notifications-wrapper{--circle-top: 3.25px;--circle-width: 8.67px;--circle-right: 6.13px;--circle-height: 8.67px;--notifications-wrapper-width: 29px;--notifications-wrapper-height: 29px;--notifications-toggle-padding: 6.5px;--circle-border-radius: 6.25rem;--notifications-wrapper-border-radius: 0;--notifications-toggle-border-radius: 6.25rem}.notifications-wrapper{width:var(--notifications-wrapper-width);height:var(--notifications-wrapper-height);border-radius:var(--notifications-wrapper-border-radius)}.notifications-toggle{width:100%;height:100%;display:flex;position:relative;align-items:center;justify-content:center;padding:var(--notifications-toggle-padding);border-radius:var(--notifications-toggle-border-radius)}.notifications-toggle:hover,.notifications-toggle.active{cursor:pointer;background-color:var(--bg-notification-button-hover)}.notifications-toggle:hover .bell,.notifications-toggle.active .bell{--icon-color: var(--on-bg-notification-button-hover)}.notifications-toggle .bell{--icon-color: var(--on-bg-notification-button-active)}.notifications-toggle .circle{position:absolute;top:var(--circle-top);right:var(--circle-right);width:var(--circle-width);height:var(--circle-height);border-radius:var(--circle-border-radius);background-color:var(--bg-notification-badge-button)}.dropdown-menu{z-index:2;position:absolute;
|
|
42
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityPushNotificationsComponent, selector: "gravity-push-notifications", inputs: { userNotifications: "userNotifications" }, outputs: { viewedNotificationsResponse: "viewedNotificationsResponse" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"btn-group notifications-wrapper\" data-cy=\"PUSH_NOTIFICATIONS_wrapper\">\n <div class=\"notifications-toggle pointer\" [class.active]=\"isPanelOpen\" data-cy=\"PUSH_NOTIFICATIONS_toggle\"\n (click)=\"handleToggleNotificationsPanel()\">\n <gravity-icon class=\"bell\" [iconName]=\"'bell'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <span *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\" class=\"circle\"></span>\n </div>\n <div *ngIf=\"isPanelOpen\" class=\"dropdown-menu dropdown-menu-right elevation-sm\" data-cy=\"PUSH_NOTIFICATIONS_panel\">\n <div class=\"panel-header\" data-cy=\"PUSH_NOTIFICATIONS_panel_header\">\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_title\"> Notifications </p>\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_pending_counter\"\n *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\">\n {{pushNotificationsService.pendingNotifications.length}}\n </p>\n </div>\n <div class=\"notifications\" data-cy=\"PUSH_NOTIFICATIONS_item\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0\">\n <p> New </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.pendingNotifications, let index = index\">\n <div class=\"notification pending\" data-cy=\"PUSH_NOTIFICATIONS_new_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('pending-' + index)\"\n id=\"pending-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n <span class=\"pending-notification-circle\"></span>\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.pendingNotifications.length\">\n </ng-container>\n </div>\n <hr *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0 && pushNotificationsService.seenNotifications?.length > 0\">\n <div class=\"notifications\" *ngIf=\"pushNotificationsService.seenNotifications?.length > 0\">\n <p> Old </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.seenNotifications, let index = index\">\n <div class=\"notification\" data-cy=\"PUSH_NOTIFICATIONS_old_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('seen-' + index)\"\n id=\"seen-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyAdditionalText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.seenNotifications.length\">\n </ng-container>\n </div>\n <div class=\"notifications\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length == 0 && pushNotificationsService.seenNotifications?.length == 0\">\n <p class=\"no-notification\"> No new notifications </p>\n </div>\n </div>\n</div>\n", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.notifications-wrapper{--circle-top: 3.25px;--circle-width: 8.67px;--circle-right: 6.13px;--circle-height: 8.67px;--notifications-wrapper-width: 29px;--notifications-wrapper-height: 29px;--notifications-toggle-padding: 6.5px;--circle-border-radius: 6.25rem;--notifications-wrapper-border-radius: 0;--notifications-toggle-border-radius: 6.25rem}.notifications-wrapper{width:var(--notifications-wrapper-width);height:var(--notifications-wrapper-height);border-radius:var(--notifications-wrapper-border-radius)}.notifications-toggle{width:100%;height:100%;display:flex;position:relative;align-items:center;justify-content:center;padding:var(--notifications-toggle-padding);border-radius:var(--notifications-toggle-border-radius)}.notifications-toggle:hover,.notifications-toggle.active{cursor:pointer;background-color:var(--bg-notification-button-hover)}.notifications-toggle:hover .bell,.notifications-toggle.active .bell{--icon-color: var(--on-bg-notification-button-hover)}.notifications-toggle .bell{--icon-color: var(--on-bg-notification-button-active)}.notifications-toggle .circle{position:absolute;top:var(--circle-top);right:var(--circle-right);width:var(--circle-width);height:var(--circle-height);border-radius:var(--circle-border-radius);background-color:var(--bg-notification-badge-button)}.dropdown-menu{z-index:2;position:absolute;top:42px!important;right:-26px!important;border-radius:.9375rem;border:1px solid rgba(0,0,0,.175);background-color:var(--bg-dialog-primary)}@media (min-width: 993px){.dropdown-menu{width:25rem}}@media (max-width: 992px){.dropdown-menu{width:19rem}}.dropdown-menu:before{top:-6px;z-index:1;content:\"\";right:33px;width:12px;height:12px;position:absolute;transform:rotate(45deg);border-left:1px solid rgba(0,0,0,.175);border-top:1px solid rgba(0,0,0,.175);background-color:var(--on-bg-highlight-neutro-primary)}.panel-header{display:flex;padding:1rem 2rem;justify-content:space-between;border-radius:.9375rem .9375rem 0 0;background-color:var(--on-bg-highlight-neutro-primary)}.panel-header p{font-weight:600;letter-spacing:1.023px;color:var(--on-bg-notification-list-primary)}.notifications{padding:.75rem 2rem;color:var(--text-primary)}.notifications .notification:last-of-type{padding-bottom:0}.notification{display:flex;padding-block:1rem;align-items:flex-start}.notification .notification-content{margin-left:1.5rem}.notification .notification-content .title{margin-bottom:.25rem}.notification .notification-content .title span.pending-notification-circle{width:.625rem;height:.625rem;min-width:.625rem;min-height:.625rem;margin-right:.25rem;display:inline-block;border-radius:1.5625rem;background-color:var(--notification-success-highlight-primary)}.notification .notification-content .body{overflow:hidden;text-overflow:ellipsis}@media (min-width: 993px){.notification .notification-content .body{width:18rem}}@media (max-width: 992px){.notification .notification-content .body{width:10rem}}.notification .notification-content .body.white-space-nowrap{white-space:nowrap}hr{margin:0;border-top-color:var(--divider-primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }] }); }
|
|
43
43
|
}
|
|
44
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityPushNotificationsComponent, decorators: [{
|
|
45
45
|
type: Component,
|
|
46
|
-
args: [{ selector: 'gravity-push-notifications', template: "<div class=\"btn-group notifications-wrapper\" data-cy=\"PUSH_NOTIFICATIONS_wrapper\">\n <div class=\"notifications-toggle pointer\" [class.active]=\"isPanelOpen\" data-cy=\"PUSH_NOTIFICATIONS_toggle\"\n (click)=\"handleToggleNotificationsPanel()\">\n <gravity-icon class=\"bell\" [iconName]=\"'bell'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <span *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\" class=\"circle\"></span>\n </div>\n <div *ngIf=\"isPanelOpen\" class=\"dropdown-menu dropdown-menu-right\" data-cy=\"PUSH_NOTIFICATIONS_panel\">\n <div class=\"panel-header\" data-cy=\"PUSH_NOTIFICATIONS_panel_header\">\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_title\"> Notifications </p>\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_pending_counter\"\n *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\">\n {{pushNotificationsService.pendingNotifications.length}}\n </p>\n </div>\n <div class=\"notifications\" data-cy=\"PUSH_NOTIFICATIONS_item\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0\">\n <p> New </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.pendingNotifications, let index = index\">\n <div class=\"notification pending\" data-cy=\"PUSH_NOTIFICATIONS_new_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('pending-' + index)\"\n id=\"pending-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n <span class=\"pending-notification-circle\"></span>\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.pendingNotifications.length\">\n </ng-container>\n </div>\n <hr *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0 && pushNotificationsService.seenNotifications?.length > 0\">\n <div class=\"notifications\" *ngIf=\"pushNotificationsService.seenNotifications?.length > 0\">\n <p> Old </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.seenNotifications, let index = index\">\n <div class=\"notification\" data-cy=\"PUSH_NOTIFICATIONS_old_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('seen-' + index)\"\n id=\"seen-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyAdditionalText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.seenNotifications.length\">\n </ng-container>\n </div>\n <div class=\"notifications\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length == 0 && pushNotificationsService.seenNotifications?.length == 0\">\n <p class=\"no-notification\"> No new notifications </p>\n </div>\n </div>\n</div>\n", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.notifications-wrapper{--circle-top: 3.25px;--circle-width: 8.67px;--circle-right: 6.13px;--circle-height: 8.67px;--notifications-wrapper-width: 29px;--notifications-wrapper-height: 29px;--notifications-toggle-padding: 6.5px;--circle-border-radius: 6.25rem;--notifications-wrapper-border-radius: 0;--notifications-toggle-border-radius: 6.25rem}.notifications-wrapper{width:var(--notifications-wrapper-width);height:var(--notifications-wrapper-height);border-radius:var(--notifications-wrapper-border-radius)}.notifications-toggle{width:100%;height:100%;display:flex;position:relative;align-items:center;justify-content:center;padding:var(--notifications-toggle-padding);border-radius:var(--notifications-toggle-border-radius)}.notifications-toggle:hover,.notifications-toggle.active{cursor:pointer;background-color:var(--bg-notification-button-hover)}.notifications-toggle:hover .bell,.notifications-toggle.active .bell{--icon-color: var(--on-bg-notification-button-hover)}.notifications-toggle .bell{--icon-color: var(--on-bg-notification-button-active)}.notifications-toggle .circle{position:absolute;top:var(--circle-top);right:var(--circle-right);width:var(--circle-width);height:var(--circle-height);border-radius:var(--circle-border-radius);background-color:var(--bg-notification-badge-button)}.dropdown-menu{z-index:2;position:absolute;
|
|
46
|
+
args: [{ selector: 'gravity-push-notifications', template: "<div class=\"btn-group notifications-wrapper\" data-cy=\"PUSH_NOTIFICATIONS_wrapper\">\n <div class=\"notifications-toggle pointer\" [class.active]=\"isPanelOpen\" data-cy=\"PUSH_NOTIFICATIONS_toggle\"\n (click)=\"handleToggleNotificationsPanel()\">\n <gravity-icon class=\"bell\" [iconName]=\"'bell'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <span *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\" class=\"circle\"></span>\n </div>\n <div *ngIf=\"isPanelOpen\" class=\"dropdown-menu dropdown-menu-right elevation-sm\" data-cy=\"PUSH_NOTIFICATIONS_panel\">\n <div class=\"panel-header\" data-cy=\"PUSH_NOTIFICATIONS_panel_header\">\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_title\"> Notifications </p>\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_pending_counter\"\n *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\">\n {{pushNotificationsService.pendingNotifications.length}}\n </p>\n </div>\n <div class=\"notifications\" data-cy=\"PUSH_NOTIFICATIONS_item\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0\">\n <p> New </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.pendingNotifications, let index = index\">\n <div class=\"notification pending\" data-cy=\"PUSH_NOTIFICATIONS_new_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('pending-' + index)\"\n id=\"pending-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n <span class=\"pending-notification-circle\"></span>\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.pendingNotifications.length\">\n </ng-container>\n </div>\n <hr *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0 && pushNotificationsService.seenNotifications?.length > 0\">\n <div class=\"notifications\" *ngIf=\"pushNotificationsService.seenNotifications?.length > 0\">\n <p> Old </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.seenNotifications, let index = index\">\n <div class=\"notification\" data-cy=\"PUSH_NOTIFICATIONS_old_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('seen-' + index)\"\n id=\"seen-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyAdditionalText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.seenNotifications.length\">\n </ng-container>\n </div>\n <div class=\"notifications\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length == 0 && pushNotificationsService.seenNotifications?.length == 0\">\n <p class=\"no-notification\"> No new notifications </p>\n </div>\n </div>\n</div>\n", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.notifications-wrapper{--circle-top: 3.25px;--circle-width: 8.67px;--circle-right: 6.13px;--circle-height: 8.67px;--notifications-wrapper-width: 29px;--notifications-wrapper-height: 29px;--notifications-toggle-padding: 6.5px;--circle-border-radius: 6.25rem;--notifications-wrapper-border-radius: 0;--notifications-toggle-border-radius: 6.25rem}.notifications-wrapper{width:var(--notifications-wrapper-width);height:var(--notifications-wrapper-height);border-radius:var(--notifications-wrapper-border-radius)}.notifications-toggle{width:100%;height:100%;display:flex;position:relative;align-items:center;justify-content:center;padding:var(--notifications-toggle-padding);border-radius:var(--notifications-toggle-border-radius)}.notifications-toggle:hover,.notifications-toggle.active{cursor:pointer;background-color:var(--bg-notification-button-hover)}.notifications-toggle:hover .bell,.notifications-toggle.active .bell{--icon-color: var(--on-bg-notification-button-hover)}.notifications-toggle .bell{--icon-color: var(--on-bg-notification-button-active)}.notifications-toggle .circle{position:absolute;top:var(--circle-top);right:var(--circle-right);width:var(--circle-width);height:var(--circle-height);border-radius:var(--circle-border-radius);background-color:var(--bg-notification-badge-button)}.dropdown-menu{z-index:2;position:absolute;top:42px!important;right:-26px!important;border-radius:.9375rem;border:1px solid rgba(0,0,0,.175);background-color:var(--bg-dialog-primary)}@media (min-width: 993px){.dropdown-menu{width:25rem}}@media (max-width: 992px){.dropdown-menu{width:19rem}}.dropdown-menu:before{top:-6px;z-index:1;content:\"\";right:33px;width:12px;height:12px;position:absolute;transform:rotate(45deg);border-left:1px solid rgba(0,0,0,.175);border-top:1px solid rgba(0,0,0,.175);background-color:var(--on-bg-highlight-neutro-primary)}.panel-header{display:flex;padding:1rem 2rem;justify-content:space-between;border-radius:.9375rem .9375rem 0 0;background-color:var(--on-bg-highlight-neutro-primary)}.panel-header p{font-weight:600;letter-spacing:1.023px;color:var(--on-bg-notification-list-primary)}.notifications{padding:.75rem 2rem;color:var(--text-primary)}.notifications .notification:last-of-type{padding-bottom:0}.notification{display:flex;padding-block:1rem;align-items:flex-start}.notification .notification-content{margin-left:1.5rem}.notification .notification-content .title{margin-bottom:.25rem}.notification .notification-content .title span.pending-notification-circle{width:.625rem;height:.625rem;min-width:.625rem;min-height:.625rem;margin-right:.25rem;display:inline-block;border-radius:1.5625rem;background-color:var(--notification-success-highlight-primary)}.notification .notification-content .body{overflow:hidden;text-overflow:ellipsis}@media (min-width: 993px){.notification .notification-content .body{width:18rem}}@media (max-width: 992px){.notification .notification-content .body{width:10rem}}.notification .notification-content .body.white-space-nowrap{white-space:nowrap}hr{margin:0;border-top-color:var(--divider-primary)}\n"] }]
|
|
47
47
|
}], ctorParameters: function () { return [{ type: i1.PushNotificationsService }, { type: i0.ElementRef }]; }, propDecorators: { userNotifications: [{
|
|
48
48
|
type: Input
|
|
49
49
|
}], viewedNotificationsResponse: [{
|
|
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
52
52
|
type: HostListener,
|
|
53
53
|
args: ['document:click', ['$event']]
|
|
54
54
|
}] } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1wdXNoLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LXB1c2gtbm90aWZpY2F0aW9ucy9ncmF2aXR5LXB1c2gtbm90aWZpY2F0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktcHVzaC1ub3RpZmljYXRpb25zL2dyYXZpdHktcHVzaC1ub3RpZmljYXRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRbEgsTUFBTSxPQUFPLGlDQUFpQztJQUM3QyxJQUFhLGlCQUFpQixDQUFDLEtBQW9DO1FBQ2xFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFRRCxZQUE0Qix3QkFBa0QsRUFDakQsVUFBc0I7UUFEdkIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNqRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBUGxDLGdDQUEyQixHQUFrRCxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFHLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBS21CLENBQUM7SUFFeEQsUUFBUTtRQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTyxXQUFXO1FBQ2xCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sOEJBQThCO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BHLElBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUNoRTtJQUNGLENBQUM7SUFFMkMsT0FBTyxDQUFDLEtBQWlCO1FBQ3BFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTNFLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO2FBQ3RDO1NBQ0Q7SUFDRixDQUFDOytHQTNDVyxpQ0FBaUM7bUdBQWpDLGlDQUFpQyw2UENUOUMsby9IQTZEQTs7NEZEcERhLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDQyw0QkFBNEI7d0lBS3pCLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFLVywyQkFBMkI7c0JBQTNDLE1BQU07Z0JBNkJxQyxPQUFPO3NCQUFsRCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOb3RpZmljYXRpb25WaWV3ZWRTdGF0dXNSZXF1ZXN0LCBVc2VyTm90aWZpY2F0aW9uc30gZnJvbSBcIi4uLy4uL21vZGVsL2dyYXZpdHktcHVzaC1ub3RpZmljYXRpb25zLm1vZGVsXCI7XG5pbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFB1c2hOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9ncmF2aXR5LXB1c2gtbm90aWZpY2F0aW9ucy1zZXJ2aWNlLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnZ3Jhdml0eS1wdXNoLW5vdGlmaWNhdGlvbnMnLFxuXHR0ZW1wbGF0ZVVybDogJy4vZ3Jhdml0eS1wdXNoLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9ncmF2aXR5LXB1c2gtbm90aWZpY2F0aW9ucy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEdyYXZpdHlQdXNoTm90aWZpY2F0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblx0QElucHV0KCkgc2V0IHVzZXJOb3RpZmljYXRpb25zKHZhbHVlOiBVc2VyTm90aWZpY2F0aW9ucyB8IHVuZGVmaW5lZCkge1xuXHRcdHRoaXMuX3VzZXJOb3RpZmljYXRpb25zID0gdmFsdWU7XG5cdFx0dGhpcy5wcm9jZXNzRGF0YSgpO1xuXHR9XG5cblx0QE91dHB1dCgpIHB1YmxpYyB2aWV3ZWROb3RpZmljYXRpb25zUmVzcG9uc2U6IEV2ZW50RW1pdHRlcjxOb3RpZmljYXRpb25WaWV3ZWRTdGF0dXNSZXF1ZXN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXHRwdWJsaWMgaXNQYW5lbE9wZW46IGJvb2xlYW4gPSBmYWxzZTtcblx0cHVibGljIF91c2VyTm90aWZpY2F0aW9uczogVXNlck5vdGlmaWNhdGlvbnMgfCB1bmRlZmluZWQ7XG5cdHB1YmxpYyB2aWV3ZWROb3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25WaWV3ZWRTdGF0dXNSZXF1ZXN0IHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwdXNoTm90aWZpY2F0aW9uc1NlcnZpY2U6IFB1c2hOb3RpZmljYXRpb25zU2VydmljZSxcblx0ICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnByb2Nlc3NEYXRhKCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLnB1c2hOb3RpZmljYXRpb25zU2VydmljZS5jbGVhckxvZ2luTm90aWZpY2F0aW9uKCk7XG5cdH1cblxuXHRwcml2YXRlIHByb2Nlc3NEYXRhKCk6IHZvaWQge1xuXHRcdHRoaXMucHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLmxvYWRVc2VyTm90aWZpY2F0aW9ucyh0aGlzLl91c2VyTm90aWZpY2F0aW9ucyk7XG5cdH1cblxuXHRwdWJsaWMgaGFuZGxlVG9nZ2xlTm90aWZpY2F0aW9uc1BhbmVsKCkge1xuXHRcdHRoaXMuaXNQYW5lbE9wZW4gPSAhdGhpcy5pc1BhbmVsT3Blbjtcblx0XHR0aGlzLnZpZXdlZE5vdGlmaWNhdGlvbnMgPSB0aGlzLnB1c2hOb3RpZmljYXRpb25zU2VydmljZS50b2dnbGVOb3RpZmljYXRpb25zUGFuZWwodGhpcy5pc1BhbmVsT3Blbik7XG5cdFx0aWYodGhpcy52aWV3ZWROb3RpZmljYXRpb25zPy5wdXNoX25vdGlmaWNhdGlvbnM/Lmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMudmlld2VkTm90aWZpY2F0aW9uc1Jlc3BvbnNlLmVtaXQodGhpcy52aWV3ZWROb3RpZmljYXRpb25zKTtcblx0XHR9XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcblx0XHRpZiAodGhpcy5pc1BhbmVsT3Blbikge1xuXHRcdFx0Y29uc3QgY2xpY2tlZEluc2lkZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG5cblx0XHRcdGlmICghY2xpY2tlZEluc2lkZSkge1xuXHRcdFx0XHR0aGlzLmhhbmRsZVRvZ2dsZU5vdGlmaWNhdGlvbnNQYW5lbCgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSIsIjxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbm90aWZpY2F0aW9ucy13cmFwcGVyXCIgZGF0YS1jeT1cIlBVU0hfTk9USUZJQ0FUSU9OU193cmFwcGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zLXRvZ2dsZSBwb2ludGVyXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1BhbmVsT3BlblwiIGRhdGEtY3k9XCJQVVNIX05PVElGSUNBVElPTlNfdG9nZ2xlXCJcbiAgICAgICAoY2xpY2spPVwiaGFuZGxlVG9nZ2xlTm90aWZpY2F0aW9uc1BhbmVsKClcIj5cbiAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwiYmVsbFwiIFtpY29uTmFtZV09XCInYmVsbCdcIiBbaWNvblNpemVdPVwiJ21kLTE2J1wiPjwvZ3Jhdml0eS1pY29uPlxuICAgIDxzcGFuICpuZ0lmPVwicHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnBlbmRpbmdOb3RpZmljYXRpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cImNpcmNsZVwiPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpc1BhbmVsT3BlblwiIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0XCIgZGF0YS1jeT1cIlBVU0hfTk9USUZJQ0FUSU9OU19wYW5lbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkZXJcIiBkYXRhLWN5PVwiUFVTSF9OT1RJRklDQVRJT05TX3BhbmVsX2hlYWRlclwiPlxuICAgICAgPHAgY2xhc3M9XCJoci1ib2R5IG1kLXJlZ3VsYXJcIiBkYXRhLWN5PVwiUFVTSF9OT1RJRklDQVRJT05TX3BhbmVsX3RpdGxlXCI+IE5vdGlmaWNhdGlvbnMgPC9wPlxuICAgICAgPHAgY2xhc3M9XCJoci1ib2R5IG1kLXJlZ3VsYXJcIiBkYXRhLWN5PVwiUFVTSF9OT1RJRklDQVRJT05TX3BhbmVsX3BlbmRpbmdfY291bnRlclwiXG4gICAgICAgICAqbmdJZj1cInB1c2hOb3RpZmljYXRpb25zU2VydmljZS5wZW5kaW5nTm90aWZpY2F0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgIHt7cHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnBlbmRpbmdOb3RpZmljYXRpb25zLmxlbmd0aH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnNcIiBkYXRhLWN5PVwiUFVTSF9OT1RJRklDQVRJT05TX2l0ZW1cIlxuICAgICAgICAqbmdJZj1cInB1c2hOb3RpZmljYXRpb25zU2VydmljZS5wZW5kaW5nTm90aWZpY2F0aW9ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgPHA+IE5ldyA8L3A+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2YgcHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnBlbmRpbmdOb3RpZmljYXRpb25zLCBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uIHBlbmRpbmdcIiBkYXRhLWN5PVwiUFVTSF9OT1RJRklDQVRJT05TX25ld19ub3RpZmljYXRpb25cIlxuICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHB1c2hOb3RpZmljYXRpb25zU2VydmljZS5yZW1vdmVUZXh0T3ZlcmZsb3coJ3BlbmRpbmctJyArIGluZGV4KVwiXG4gICAgICAgICAgICAgaWQ9XCJwZW5kaW5nLXt7aW5kZXh9fVwiPlxuICAgICAgICAgIDxncmF2aXR5LWljb24gKm5nSWY9XCJub3RpZmljYXRpb24uaWNvbk5hbWVcIiBbaWNvbk5hbWVdPVwibm90aWZpY2F0aW9uLmljb25OYW1lXCIgW2hvdmVySWNvbl09XCJmYWxzZVwiIFtpY29uU2l6ZV09XCInbGctMjQnXCI+PC9ncmF2aXR5LWljb24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbi1jb250ZW50XCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImhyLXRpdGxlIHNtLWJvbGQgdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZW5kaW5nLW5vdGlmaWNhdGlvbi1jaXJjbGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgIHt7cHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLmdldE5vdGlmaWNhdGlvbkNvbnRlbnQobm90aWZpY2F0aW9uLnRpdGxlVGV4dCwgbm90aWZpY2F0aW9uLnRpdGxlQWRkaXRpb25hbFRleHQpfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYm9keSBoci1ib2R5IG1kLXJlZ3VsYXIgd2hpdGUtc3BhY2Utbm93cmFwXCIgdGl0bGU9XCJDbGljayB0byBleHBhbmRcIj5cbiAgICAgICAgICAgICAge3twdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24uYm9keVRleHQsIG5vdGlmaWNhdGlvbi5ib2R5QWRkaXRpb25hbFRleHQpfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxociAqbmdJZj1cImluZGV4ICsgMSAhPSBwdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UucGVuZGluZ05vdGlmaWNhdGlvbnMubGVuZ3RoXCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8aHIgKm5nSWY9XCJwdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UucGVuZGluZ05vdGlmaWNhdGlvbnM/Lmxlbmd0aCA+IDAgJiYgcHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnNlZW5Ob3RpZmljYXRpb25zPy5sZW5ndGggPiAwXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnNcIiAqbmdJZj1cInB1c2hOb3RpZmljYXRpb25zU2VydmljZS5zZWVuTm90aWZpY2F0aW9ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgPHA+IE9sZCA8L3A+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2YgcHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnNlZW5Ob3RpZmljYXRpb25zLCBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uXCIgZGF0YS1jeT1cIlBVU0hfTk9USUZJQ0FUSU9OU19vbGRfbm90aWZpY2F0aW9uXCJcbiAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBwdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UucmVtb3ZlVGV4dE92ZXJmbG93KCdzZWVuLScgKyBpbmRleClcIlxuICAgICAgICAgICAgIGlkPVwic2Vlbi17e2luZGV4fX1cIj5cbiAgICAgICAgICA8Z3Jhdml0eS1pY29uICpuZ0lmPVwibm90aWZpY2F0aW9uLmljb25OYW1lXCIgW2ljb25OYW1lXT1cIm5vdGlmaWNhdGlvbi5pY29uTmFtZVwiIFtob3Zlckljb25dPVwiZmFsc2VcIiBbaWNvblNpemVdPVwiJ2xnLTI0J1wiPjwvZ3Jhdml0eS1pY29uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24tY29udGVudFwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJoci10aXRsZSBzbS1ib2xkIHRpdGxlXCI+XG4gICAgICAgICAgICAgIHt7cHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLmdldE5vdGlmaWNhdGlvbkNvbnRlbnQobm90aWZpY2F0aW9uLnRpdGxlVGV4dCwgbm90aWZpY2F0aW9uLnRpdGxlQWRkaXRpb25hbFRleHQpfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYm9keSBoci1ib2R5IG1kLXJlZ3VsYXIgd2hpdGUtc3BhY2Utbm93cmFwXCIgdGl0bGU9XCJDbGljayB0byBleHBhbmRcIj5cbiAgICAgICAgICAgICAge3twdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24uYm9keUFkZGl0aW9uYWxUZXh0LCBub3RpZmljYXRpb24uYm9keUFkZGl0aW9uYWxUZXh0KX19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIgKm5nSWY9XCJpbmRleCArIDEgIT0gcHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnNlZW5Ob3RpZmljYXRpb25zLmxlbmd0aFwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAqbmdJZj1cInB1c2hOb3RpZmljYXRpb25zU2VydmljZS5wZW5kaW5nTm90aWZpY2F0aW9ucz8ubGVuZ3RoID09IDAgJiYgcHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnNlZW5Ob3RpZmljYXRpb25zPy5sZW5ndGggPT0gMFwiPlxuICAgICAgPHAgY2xhc3M9XCJuby1ub3RpZmljYXRpb25cIj4gTm8gbmV3IG5vdGlmaWNhdGlvbnMgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1wdXNoLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LXB1c2gtbm90aWZpY2F0aW9ucy9ncmF2aXR5LXB1c2gtbm90aWZpY2F0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktcHVzaC1ub3RpZmljYXRpb25zL2dyYXZpdHktcHVzaC1ub3RpZmljYXRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRbEgsTUFBTSxPQUFPLGlDQUFpQztJQUM3QyxJQUFhLGlCQUFpQixDQUFDLEtBQW9DO1FBQ2xFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFRRCxZQUE0Qix3QkFBa0QsRUFDakQsVUFBc0I7UUFEdkIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNqRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBUGxDLGdDQUEyQixHQUFrRCxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFHLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBS21CLENBQUM7SUFFeEQsUUFBUTtRQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTyxXQUFXO1FBQ2xCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sOEJBQThCO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BHLElBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUNoRTtJQUNGLENBQUM7SUFFMkMsT0FBTyxDQUFDLEtBQWlCO1FBQ3BFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTNFLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO2FBQ3RDO1NBQ0Q7SUFDRixDQUFDOytHQTNDVyxpQ0FBaUM7bUdBQWpDLGlDQUFpQyw2UENUOUMsa2dJQTZEQTs7NEZEcERhLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDQyw0QkFBNEI7d0lBS3pCLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFLVywyQkFBMkI7c0JBQTNDLE1BQU07Z0JBNkJxQyxPQUFPO3NCQUFsRCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOb3RpZmljYXRpb25WaWV3ZWRTdGF0dXNSZXF1ZXN0LCBVc2VyTm90aWZpY2F0aW9uc30gZnJvbSBcIi4uLy4uL21vZGVsL2dyYXZpdHktcHVzaC1ub3RpZmljYXRpb25zLm1vZGVsXCI7XG5pbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFB1c2hOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9ncmF2aXR5LXB1c2gtbm90aWZpY2F0aW9ucy1zZXJ2aWNlLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnZ3Jhdml0eS1wdXNoLW5vdGlmaWNhdGlvbnMnLFxuXHR0ZW1wbGF0ZVVybDogJy4vZ3Jhdml0eS1wdXNoLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9ncmF2aXR5LXB1c2gtbm90aWZpY2F0aW9ucy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEdyYXZpdHlQdXNoTm90aWZpY2F0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblx0QElucHV0KCkgc2V0IHVzZXJOb3RpZmljYXRpb25zKHZhbHVlOiBVc2VyTm90aWZpY2F0aW9ucyB8IHVuZGVmaW5lZCkge1xuXHRcdHRoaXMuX3VzZXJOb3RpZmljYXRpb25zID0gdmFsdWU7XG5cdFx0dGhpcy5wcm9jZXNzRGF0YSgpO1xuXHR9XG5cblx0QE91dHB1dCgpIHB1YmxpYyB2aWV3ZWROb3RpZmljYXRpb25zUmVzcG9uc2U6IEV2ZW50RW1pdHRlcjxOb3RpZmljYXRpb25WaWV3ZWRTdGF0dXNSZXF1ZXN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXHRwdWJsaWMgaXNQYW5lbE9wZW46IGJvb2xlYW4gPSBmYWxzZTtcblx0cHVibGljIF91c2VyTm90aWZpY2F0aW9uczogVXNlck5vdGlmaWNhdGlvbnMgfCB1bmRlZmluZWQ7XG5cdHB1YmxpYyB2aWV3ZWROb3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25WaWV3ZWRTdGF0dXNSZXF1ZXN0IHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwdXNoTm90aWZpY2F0aW9uc1NlcnZpY2U6IFB1c2hOb3RpZmljYXRpb25zU2VydmljZSxcblx0ICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnByb2Nlc3NEYXRhKCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLnB1c2hOb3RpZmljYXRpb25zU2VydmljZS5jbGVhckxvZ2luTm90aWZpY2F0aW9uKCk7XG5cdH1cblxuXHRwcml2YXRlIHByb2Nlc3NEYXRhKCk6IHZvaWQge1xuXHRcdHRoaXMucHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLmxvYWRVc2VyTm90aWZpY2F0aW9ucyh0aGlzLl91c2VyTm90aWZpY2F0aW9ucyk7XG5cdH1cblxuXHRwdWJsaWMgaGFuZGxlVG9nZ2xlTm90aWZpY2F0aW9uc1BhbmVsKCkge1xuXHRcdHRoaXMuaXNQYW5lbE9wZW4gPSAhdGhpcy5pc1BhbmVsT3Blbjtcblx0XHR0aGlzLnZpZXdlZE5vdGlmaWNhdGlvbnMgPSB0aGlzLnB1c2hOb3RpZmljYXRpb25zU2VydmljZS50b2dnbGVOb3RpZmljYXRpb25zUGFuZWwodGhpcy5pc1BhbmVsT3Blbik7XG5cdFx0aWYodGhpcy52aWV3ZWROb3RpZmljYXRpb25zPy5wdXNoX25vdGlmaWNhdGlvbnM/Lmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMudmlld2VkTm90aWZpY2F0aW9uc1Jlc3BvbnNlLmVtaXQodGhpcy52aWV3ZWROb3RpZmljYXRpb25zKTtcblx0XHR9XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcblx0XHRpZiAodGhpcy5pc1BhbmVsT3Blbikge1xuXHRcdFx0Y29uc3QgY2xpY2tlZEluc2lkZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG5cblx0XHRcdGlmICghY2xpY2tlZEluc2lkZSkge1xuXHRcdFx0XHR0aGlzLmhhbmRsZVRvZ2dsZU5vdGlmaWNhdGlvbnNQYW5lbCgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSIsIjxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbm90aWZpY2F0aW9ucy13cmFwcGVyXCIgZGF0YS1jeT1cIlBVU0hfTk9USUZJQ0FUSU9OU193cmFwcGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zLXRvZ2dsZSBwb2ludGVyXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1BhbmVsT3BlblwiIGRhdGEtY3k9XCJQVVNIX05PVElGSUNBVElPTlNfdG9nZ2xlXCJcbiAgICAgICAoY2xpY2spPVwiaGFuZGxlVG9nZ2xlTm90aWZpY2F0aW9uc1BhbmVsKClcIj5cbiAgICA8Z3Jhdml0eS1pY29uIGNsYXNzPVwiYmVsbFwiIFtpY29uTmFtZV09XCInYmVsbCdcIiBbaWNvblNpemVdPVwiJ21kLTE2J1wiPjwvZ3Jhdml0eS1pY29uPlxuICAgIDxzcGFuICpuZ0lmPVwicHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnBlbmRpbmdOb3RpZmljYXRpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cImNpcmNsZVwiPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpc1BhbmVsT3BlblwiIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0ICBlbGV2YXRpb24tc21cIiBkYXRhLWN5PVwiUFVTSF9OT1RJRklDQVRJT05TX3BhbmVsXCI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRlclwiIGRhdGEtY3k9XCJQVVNIX05PVElGSUNBVElPTlNfcGFuZWxfaGVhZGVyXCI+XG4gICAgICA8cCBjbGFzcz1cImhyLWJvZHkgbWQtcmVndWxhclwiIGRhdGEtY3k9XCJQVVNIX05PVElGSUNBVElPTlNfcGFuZWxfdGl0bGVcIj4gTm90aWZpY2F0aW9ucyA8L3A+XG4gICAgICA8cCBjbGFzcz1cImhyLWJvZHkgbWQtcmVndWxhclwiIGRhdGEtY3k9XCJQVVNIX05PVElGSUNBVElPTlNfcGFuZWxfcGVuZGluZ19jb3VudGVyXCJcbiAgICAgICAgICpuZ0lmPVwicHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnBlbmRpbmdOb3RpZmljYXRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAge3twdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UucGVuZGluZ05vdGlmaWNhdGlvbnMubGVuZ3RofX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uc1wiIGRhdGEtY3k9XCJQVVNIX05PVElGSUNBVElPTlNfaXRlbVwiXG4gICAgICAgICpuZ0lmPVwicHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnBlbmRpbmdOb3RpZmljYXRpb25zPy5sZW5ndGggPiAwXCI+XG4gICAgICA8cD4gTmV3IDwvcD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5vdGlmaWNhdGlvbiBvZiBwdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UucGVuZGluZ05vdGlmaWNhdGlvbnMsIGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24gcGVuZGluZ1wiIGRhdGEtY3k9XCJQVVNIX05PVElGSUNBVElPTlNfbmV3X25vdGlmaWNhdGlvblwiXG4gICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgcHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnJlbW92ZVRleHRPdmVyZmxvdygncGVuZGluZy0nICsgaW5kZXgpXCJcbiAgICAgICAgICAgICBpZD1cInBlbmRpbmcte3tpbmRleH19XCI+XG4gICAgICAgICAgPGdyYXZpdHktaWNvbiAqbmdJZj1cIm5vdGlmaWNhdGlvbi5pY29uTmFtZVwiIFtpY29uTmFtZV09XCJub3RpZmljYXRpb24uaWNvbk5hbWVcIiBbaG92ZXJJY29uXT1cImZhbHNlXCIgW2ljb25TaXplXT1cIidsZy0yNCdcIj48L2dyYXZpdHktaWNvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiaHItdGl0bGUgc20tYm9sZCB0aXRsZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlbmRpbmctbm90aWZpY2F0aW9uLWNpcmNsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAge3twdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24udGl0bGVUZXh0LCBub3RpZmljYXRpb24udGl0bGVBZGRpdGlvbmFsVGV4dCl9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJib2R5IGhyLWJvZHkgbWQtcmVndWxhciB3aGl0ZS1zcGFjZS1ub3dyYXBcIiB0aXRsZT1cIkNsaWNrIHRvIGV4cGFuZFwiPlxuICAgICAgICAgICAgICB7e3B1c2hOb3RpZmljYXRpb25zU2VydmljZS5nZXROb3RpZmljYXRpb25Db250ZW50KG5vdGlmaWNhdGlvbi5ib2R5VGV4dCwgbm90aWZpY2F0aW9uLmJvZHlBZGRpdGlvbmFsVGV4dCl9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyICpuZ0lmPVwiaW5kZXggKyAxICE9IHB1c2hOb3RpZmljYXRpb25zU2VydmljZS5wZW5kaW5nTm90aWZpY2F0aW9ucy5sZW5ndGhcIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxociAqbmdJZj1cInB1c2hOb3RpZmljYXRpb25zU2VydmljZS5wZW5kaW5nTm90aWZpY2F0aW9ucz8ubGVuZ3RoID4gMCAmJiBwdXNoTm90aWZpY2F0aW9uc1NlcnZpY2Uuc2Vlbk5vdGlmaWNhdGlvbnM/Lmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uc1wiICpuZ0lmPVwicHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnNlZW5Ob3RpZmljYXRpb25zPy5sZW5ndGggPiAwXCI+XG4gICAgICA8cD4gT2xkIDwvcD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5vdGlmaWNhdGlvbiBvZiBwdXNoTm90aWZpY2F0aW9uc1NlcnZpY2Uuc2Vlbk5vdGlmaWNhdGlvbnMsIGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25cIiBkYXRhLWN5PVwiUFVTSF9OT1RJRklDQVRJT05TX29sZF9ub3RpZmljYXRpb25cIlxuICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHB1c2hOb3RpZmljYXRpb25zU2VydmljZS5yZW1vdmVUZXh0T3ZlcmZsb3coJ3NlZW4tJyArIGluZGV4KVwiXG4gICAgICAgICAgICAgaWQ9XCJzZWVuLXt7aW5kZXh9fVwiPlxuICAgICAgICAgIDxncmF2aXR5LWljb24gKm5nSWY9XCJub3RpZmljYXRpb24uaWNvbk5hbWVcIiBbaWNvbk5hbWVdPVwibm90aWZpY2F0aW9uLmljb25OYW1lXCIgW2hvdmVySWNvbl09XCJmYWxzZVwiIFtpY29uU2l6ZV09XCInbGctMjQnXCI+PC9ncmF2aXR5LWljb24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbi1jb250ZW50XCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImhyLXRpdGxlIHNtLWJvbGQgdGl0bGVcIj5cbiAgICAgICAgICAgICAge3twdXNoTm90aWZpY2F0aW9uc1NlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24udGl0bGVUZXh0LCBub3RpZmljYXRpb24udGl0bGVBZGRpdGlvbmFsVGV4dCl9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJib2R5IGhyLWJvZHkgbWQtcmVndWxhciB3aGl0ZS1zcGFjZS1ub3dyYXBcIiB0aXRsZT1cIkNsaWNrIHRvIGV4cGFuZFwiPlxuICAgICAgICAgICAgICB7e3B1c2hOb3RpZmljYXRpb25zU2VydmljZS5nZXROb3RpZmljYXRpb25Db250ZW50KG5vdGlmaWNhdGlvbi5ib2R5QWRkaXRpb25hbFRleHQsIG5vdGlmaWNhdGlvbi5ib2R5QWRkaXRpb25hbFRleHQpfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxociAqbmdJZj1cImluZGV4ICsgMSAhPSBwdXNoTm90aWZpY2F0aW9uc1NlcnZpY2Uuc2Vlbk5vdGlmaWNhdGlvbnMubGVuZ3RoXCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uc1wiXG4gICAgICAgICpuZ0lmPVwicHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnBlbmRpbmdOb3RpZmljYXRpb25zPy5sZW5ndGggPT0gMCAmJiBwdXNoTm90aWZpY2F0aW9uc1NlcnZpY2Uuc2Vlbk5vdGlmaWNhdGlvbnM/Lmxlbmd0aCA9PSAwXCI+XG4gICAgICA8cCBjbGFzcz1cIm5vLW5vdGlmaWNhdGlvblwiPiBObyBuZXcgbm90aWZpY2F0aW9ucyA8L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -679,6 +679,7 @@ class GravityDropdownListComponent {
|
|
|
679
679
|
}
|
|
680
680
|
clearSelection() {
|
|
681
681
|
this.selectedItems = [];
|
|
682
|
+
this.networkConfig = null;
|
|
682
683
|
if (this.multiple) {
|
|
683
684
|
this.selectedItemsResponse.emit(this.selectedItems);
|
|
684
685
|
}
|
|
@@ -7337,11 +7338,11 @@ class GravityPushNotificationsComponent {
|
|
|
7337
7338
|
}
|
|
7338
7339
|
}
|
|
7339
7340
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityPushNotificationsComponent, deps: [{ token: PushNotificationsService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7340
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityPushNotificationsComponent, selector: "gravity-push-notifications", inputs: { userNotifications: "userNotifications" }, outputs: { viewedNotificationsResponse: "viewedNotificationsResponse" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"btn-group notifications-wrapper\" data-cy=\"PUSH_NOTIFICATIONS_wrapper\">\n <div class=\"notifications-toggle pointer\" [class.active]=\"isPanelOpen\" data-cy=\"PUSH_NOTIFICATIONS_toggle\"\n (click)=\"handleToggleNotificationsPanel()\">\n <gravity-icon class=\"bell\" [iconName]=\"'bell'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <span *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\" class=\"circle\"></span>\n </div>\n <div *ngIf=\"isPanelOpen\" class=\"dropdown-menu dropdown-menu-right\" data-cy=\"PUSH_NOTIFICATIONS_panel\">\n <div class=\"panel-header\" data-cy=\"PUSH_NOTIFICATIONS_panel_header\">\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_title\"> Notifications </p>\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_pending_counter\"\n *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\">\n {{pushNotificationsService.pendingNotifications.length}}\n </p>\n </div>\n <div class=\"notifications\" data-cy=\"PUSH_NOTIFICATIONS_item\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0\">\n <p> New </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.pendingNotifications, let index = index\">\n <div class=\"notification pending\" data-cy=\"PUSH_NOTIFICATIONS_new_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('pending-' + index)\"\n id=\"pending-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n <span class=\"pending-notification-circle\"></span>\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.pendingNotifications.length\">\n </ng-container>\n </div>\n <hr *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0 && pushNotificationsService.seenNotifications?.length > 0\">\n <div class=\"notifications\" *ngIf=\"pushNotificationsService.seenNotifications?.length > 0\">\n <p> Old </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.seenNotifications, let index = index\">\n <div class=\"notification\" data-cy=\"PUSH_NOTIFICATIONS_old_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('seen-' + index)\"\n id=\"seen-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyAdditionalText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.seenNotifications.length\">\n </ng-container>\n </div>\n <div class=\"notifications\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length == 0 && pushNotificationsService.seenNotifications?.length == 0\">\n <p class=\"no-notification\"> No new notifications </p>\n </div>\n </div>\n</div>\n", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.notifications-wrapper{--circle-top: 3.25px;--circle-width: 8.67px;--circle-right: 6.13px;--circle-height: 8.67px;--notifications-wrapper-width: 29px;--notifications-wrapper-height: 29px;--notifications-toggle-padding: 6.5px;--circle-border-radius: 6.25rem;--notifications-wrapper-border-radius: 0;--notifications-toggle-border-radius: 6.25rem}.notifications-wrapper{width:var(--notifications-wrapper-width);height:var(--notifications-wrapper-height);border-radius:var(--notifications-wrapper-border-radius)}.notifications-toggle{width:100%;height:100%;display:flex;position:relative;align-items:center;justify-content:center;padding:var(--notifications-toggle-padding);border-radius:var(--notifications-toggle-border-radius)}.notifications-toggle:hover,.notifications-toggle.active{cursor:pointer;background-color:var(--bg-notification-button-hover)}.notifications-toggle:hover .bell,.notifications-toggle.active .bell{--icon-color: var(--on-bg-notification-button-hover)}.notifications-toggle .bell{--icon-color: var(--on-bg-notification-button-active)}.notifications-toggle .circle{position:absolute;top:var(--circle-top);right:var(--circle-right);width:var(--circle-width);height:var(--circle-height);border-radius:var(--circle-border-radius);background-color:var(--bg-notification-badge-button)}.dropdown-menu{z-index:2;position:absolute;
|
|
7341
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityPushNotificationsComponent, selector: "gravity-push-notifications", inputs: { userNotifications: "userNotifications" }, outputs: { viewedNotificationsResponse: "viewedNotificationsResponse" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"btn-group notifications-wrapper\" data-cy=\"PUSH_NOTIFICATIONS_wrapper\">\n <div class=\"notifications-toggle pointer\" [class.active]=\"isPanelOpen\" data-cy=\"PUSH_NOTIFICATIONS_toggle\"\n (click)=\"handleToggleNotificationsPanel()\">\n <gravity-icon class=\"bell\" [iconName]=\"'bell'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <span *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\" class=\"circle\"></span>\n </div>\n <div *ngIf=\"isPanelOpen\" class=\"dropdown-menu dropdown-menu-right elevation-sm\" data-cy=\"PUSH_NOTIFICATIONS_panel\">\n <div class=\"panel-header\" data-cy=\"PUSH_NOTIFICATIONS_panel_header\">\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_title\"> Notifications </p>\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_pending_counter\"\n *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\">\n {{pushNotificationsService.pendingNotifications.length}}\n </p>\n </div>\n <div class=\"notifications\" data-cy=\"PUSH_NOTIFICATIONS_item\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0\">\n <p> New </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.pendingNotifications, let index = index\">\n <div class=\"notification pending\" data-cy=\"PUSH_NOTIFICATIONS_new_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('pending-' + index)\"\n id=\"pending-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n <span class=\"pending-notification-circle\"></span>\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.pendingNotifications.length\">\n </ng-container>\n </div>\n <hr *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0 && pushNotificationsService.seenNotifications?.length > 0\">\n <div class=\"notifications\" *ngIf=\"pushNotificationsService.seenNotifications?.length > 0\">\n <p> Old </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.seenNotifications, let index = index\">\n <div class=\"notification\" data-cy=\"PUSH_NOTIFICATIONS_old_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('seen-' + index)\"\n id=\"seen-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyAdditionalText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.seenNotifications.length\">\n </ng-container>\n </div>\n <div class=\"notifications\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length == 0 && pushNotificationsService.seenNotifications?.length == 0\">\n <p class=\"no-notification\"> No new notifications </p>\n </div>\n </div>\n</div>\n", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.notifications-wrapper{--circle-top: 3.25px;--circle-width: 8.67px;--circle-right: 6.13px;--circle-height: 8.67px;--notifications-wrapper-width: 29px;--notifications-wrapper-height: 29px;--notifications-toggle-padding: 6.5px;--circle-border-radius: 6.25rem;--notifications-wrapper-border-radius: 0;--notifications-toggle-border-radius: 6.25rem}.notifications-wrapper{width:var(--notifications-wrapper-width);height:var(--notifications-wrapper-height);border-radius:var(--notifications-wrapper-border-radius)}.notifications-toggle{width:100%;height:100%;display:flex;position:relative;align-items:center;justify-content:center;padding:var(--notifications-toggle-padding);border-radius:var(--notifications-toggle-border-radius)}.notifications-toggle:hover,.notifications-toggle.active{cursor:pointer;background-color:var(--bg-notification-button-hover)}.notifications-toggle:hover .bell,.notifications-toggle.active .bell{--icon-color: var(--on-bg-notification-button-hover)}.notifications-toggle .bell{--icon-color: var(--on-bg-notification-button-active)}.notifications-toggle .circle{position:absolute;top:var(--circle-top);right:var(--circle-right);width:var(--circle-width);height:var(--circle-height);border-radius:var(--circle-border-radius);background-color:var(--bg-notification-badge-button)}.dropdown-menu{z-index:2;position:absolute;top:42px!important;right:-26px!important;border-radius:.9375rem;border:1px solid rgba(0,0,0,.175);background-color:var(--bg-dialog-primary)}@media (min-width: 993px){.dropdown-menu{width:25rem}}@media (max-width: 992px){.dropdown-menu{width:19rem}}.dropdown-menu:before{top:-6px;z-index:1;content:\"\";right:33px;width:12px;height:12px;position:absolute;transform:rotate(45deg);border-left:1px solid rgba(0,0,0,.175);border-top:1px solid rgba(0,0,0,.175);background-color:var(--on-bg-highlight-neutro-primary)}.panel-header{display:flex;padding:1rem 2rem;justify-content:space-between;border-radius:.9375rem .9375rem 0 0;background-color:var(--on-bg-highlight-neutro-primary)}.panel-header p{font-weight:600;letter-spacing:1.023px;color:var(--on-bg-notification-list-primary)}.notifications{padding:.75rem 2rem;color:var(--text-primary)}.notifications .notification:last-of-type{padding-bottom:0}.notification{display:flex;padding-block:1rem;align-items:flex-start}.notification .notification-content{margin-left:1.5rem}.notification .notification-content .title{margin-bottom:.25rem}.notification .notification-content .title span.pending-notification-circle{width:.625rem;height:.625rem;min-width:.625rem;min-height:.625rem;margin-right:.25rem;display:inline-block;border-radius:1.5625rem;background-color:var(--notification-success-highlight-primary)}.notification .notification-content .body{overflow:hidden;text-overflow:ellipsis}@media (min-width: 993px){.notification .notification-content .body{width:18rem}}@media (max-width: 992px){.notification .notification-content .body{width:10rem}}.notification .notification-content .body.white-space-nowrap{white-space:nowrap}hr{margin:0;border-top-color:var(--divider-primary)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }] }); }
|
|
7341
7342
|
}
|
|
7342
7343
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityPushNotificationsComponent, decorators: [{
|
|
7343
7344
|
type: Component,
|
|
7344
|
-
args: [{ selector: 'gravity-push-notifications', template: "<div class=\"btn-group notifications-wrapper\" data-cy=\"PUSH_NOTIFICATIONS_wrapper\">\n <div class=\"notifications-toggle pointer\" [class.active]=\"isPanelOpen\" data-cy=\"PUSH_NOTIFICATIONS_toggle\"\n (click)=\"handleToggleNotificationsPanel()\">\n <gravity-icon class=\"bell\" [iconName]=\"'bell'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <span *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\" class=\"circle\"></span>\n </div>\n <div *ngIf=\"isPanelOpen\" class=\"dropdown-menu dropdown-menu-right\" data-cy=\"PUSH_NOTIFICATIONS_panel\">\n <div class=\"panel-header\" data-cy=\"PUSH_NOTIFICATIONS_panel_header\">\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_title\"> Notifications </p>\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_pending_counter\"\n *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\">\n {{pushNotificationsService.pendingNotifications.length}}\n </p>\n </div>\n <div class=\"notifications\" data-cy=\"PUSH_NOTIFICATIONS_item\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0\">\n <p> New </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.pendingNotifications, let index = index\">\n <div class=\"notification pending\" data-cy=\"PUSH_NOTIFICATIONS_new_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('pending-' + index)\"\n id=\"pending-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n <span class=\"pending-notification-circle\"></span>\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.pendingNotifications.length\">\n </ng-container>\n </div>\n <hr *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0 && pushNotificationsService.seenNotifications?.length > 0\">\n <div class=\"notifications\" *ngIf=\"pushNotificationsService.seenNotifications?.length > 0\">\n <p> Old </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.seenNotifications, let index = index\">\n <div class=\"notification\" data-cy=\"PUSH_NOTIFICATIONS_old_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('seen-' + index)\"\n id=\"seen-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyAdditionalText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.seenNotifications.length\">\n </ng-container>\n </div>\n <div class=\"notifications\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length == 0 && pushNotificationsService.seenNotifications?.length == 0\">\n <p class=\"no-notification\"> No new notifications </p>\n </div>\n </div>\n</div>\n", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.notifications-wrapper{--circle-top: 3.25px;--circle-width: 8.67px;--circle-right: 6.13px;--circle-height: 8.67px;--notifications-wrapper-width: 29px;--notifications-wrapper-height: 29px;--notifications-toggle-padding: 6.5px;--circle-border-radius: 6.25rem;--notifications-wrapper-border-radius: 0;--notifications-toggle-border-radius: 6.25rem}.notifications-wrapper{width:var(--notifications-wrapper-width);height:var(--notifications-wrapper-height);border-radius:var(--notifications-wrapper-border-radius)}.notifications-toggle{width:100%;height:100%;display:flex;position:relative;align-items:center;justify-content:center;padding:var(--notifications-toggle-padding);border-radius:var(--notifications-toggle-border-radius)}.notifications-toggle:hover,.notifications-toggle.active{cursor:pointer;background-color:var(--bg-notification-button-hover)}.notifications-toggle:hover .bell,.notifications-toggle.active .bell{--icon-color: var(--on-bg-notification-button-hover)}.notifications-toggle .bell{--icon-color: var(--on-bg-notification-button-active)}.notifications-toggle .circle{position:absolute;top:var(--circle-top);right:var(--circle-right);width:var(--circle-width);height:var(--circle-height);border-radius:var(--circle-border-radius);background-color:var(--bg-notification-badge-button)}.dropdown-menu{z-index:2;position:absolute;
|
|
7345
|
+
args: [{ selector: 'gravity-push-notifications', template: "<div class=\"btn-group notifications-wrapper\" data-cy=\"PUSH_NOTIFICATIONS_wrapper\">\n <div class=\"notifications-toggle pointer\" [class.active]=\"isPanelOpen\" data-cy=\"PUSH_NOTIFICATIONS_toggle\"\n (click)=\"handleToggleNotificationsPanel()\">\n <gravity-icon class=\"bell\" [iconName]=\"'bell'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <span *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\" class=\"circle\"></span>\n </div>\n <div *ngIf=\"isPanelOpen\" class=\"dropdown-menu dropdown-menu-right elevation-sm\" data-cy=\"PUSH_NOTIFICATIONS_panel\">\n <div class=\"panel-header\" data-cy=\"PUSH_NOTIFICATIONS_panel_header\">\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_title\"> Notifications </p>\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_pending_counter\"\n *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\">\n {{pushNotificationsService.pendingNotifications.length}}\n </p>\n </div>\n <div class=\"notifications\" data-cy=\"PUSH_NOTIFICATIONS_item\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0\">\n <p> New </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.pendingNotifications, let index = index\">\n <div class=\"notification pending\" data-cy=\"PUSH_NOTIFICATIONS_new_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('pending-' + index)\"\n id=\"pending-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n <span class=\"pending-notification-circle\"></span>\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.pendingNotifications.length\">\n </ng-container>\n </div>\n <hr *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0 && pushNotificationsService.seenNotifications?.length > 0\">\n <div class=\"notifications\" *ngIf=\"pushNotificationsService.seenNotifications?.length > 0\">\n <p> Old </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.seenNotifications, let index = index\">\n <div class=\"notification\" data-cy=\"PUSH_NOTIFICATIONS_old_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('seen-' + index)\"\n id=\"seen-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyAdditionalText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.seenNotifications.length\">\n </ng-container>\n </div>\n <div class=\"notifications\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length == 0 && pushNotificationsService.seenNotifications?.length == 0\">\n <p class=\"no-notification\"> No new notifications </p>\n </div>\n </div>\n</div>\n", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.notifications-wrapper{--circle-top: 3.25px;--circle-width: 8.67px;--circle-right: 6.13px;--circle-height: 8.67px;--notifications-wrapper-width: 29px;--notifications-wrapper-height: 29px;--notifications-toggle-padding: 6.5px;--circle-border-radius: 6.25rem;--notifications-wrapper-border-radius: 0;--notifications-toggle-border-radius: 6.25rem}.notifications-wrapper{width:var(--notifications-wrapper-width);height:var(--notifications-wrapper-height);border-radius:var(--notifications-wrapper-border-radius)}.notifications-toggle{width:100%;height:100%;display:flex;position:relative;align-items:center;justify-content:center;padding:var(--notifications-toggle-padding);border-radius:var(--notifications-toggle-border-radius)}.notifications-toggle:hover,.notifications-toggle.active{cursor:pointer;background-color:var(--bg-notification-button-hover)}.notifications-toggle:hover .bell,.notifications-toggle.active .bell{--icon-color: var(--on-bg-notification-button-hover)}.notifications-toggle .bell{--icon-color: var(--on-bg-notification-button-active)}.notifications-toggle .circle{position:absolute;top:var(--circle-top);right:var(--circle-right);width:var(--circle-width);height:var(--circle-height);border-radius:var(--circle-border-radius);background-color:var(--bg-notification-badge-button)}.dropdown-menu{z-index:2;position:absolute;top:42px!important;right:-26px!important;border-radius:.9375rem;border:1px solid rgba(0,0,0,.175);background-color:var(--bg-dialog-primary)}@media (min-width: 993px){.dropdown-menu{width:25rem}}@media (max-width: 992px){.dropdown-menu{width:19rem}}.dropdown-menu:before{top:-6px;z-index:1;content:\"\";right:33px;width:12px;height:12px;position:absolute;transform:rotate(45deg);border-left:1px solid rgba(0,0,0,.175);border-top:1px solid rgba(0,0,0,.175);background-color:var(--on-bg-highlight-neutro-primary)}.panel-header{display:flex;padding:1rem 2rem;justify-content:space-between;border-radius:.9375rem .9375rem 0 0;background-color:var(--on-bg-highlight-neutro-primary)}.panel-header p{font-weight:600;letter-spacing:1.023px;color:var(--on-bg-notification-list-primary)}.notifications{padding:.75rem 2rem;color:var(--text-primary)}.notifications .notification:last-of-type{padding-bottom:0}.notification{display:flex;padding-block:1rem;align-items:flex-start}.notification .notification-content{margin-left:1.5rem}.notification .notification-content .title{margin-bottom:.25rem}.notification .notification-content .title span.pending-notification-circle{width:.625rem;height:.625rem;min-width:.625rem;min-height:.625rem;margin-right:.25rem;display:inline-block;border-radius:1.5625rem;background-color:var(--notification-success-highlight-primary)}.notification .notification-content .body{overflow:hidden;text-overflow:ellipsis}@media (min-width: 993px){.notification .notification-content .body{width:18rem}}@media (max-width: 992px){.notification .notification-content .body{width:10rem}}.notification .notification-content .body.white-space-nowrap{white-space:nowrap}hr{margin:0;border-top-color:var(--divider-primary)}\n"] }]
|
|
7345
7346
|
}], ctorParameters: function () { return [{ type: PushNotificationsService }, { type: i0.ElementRef }]; }, propDecorators: { userNotifications: [{
|
|
7346
7347
|
type: Input
|
|
7347
7348
|
}], viewedNotificationsResponse: [{
|