novo-elements 10.10.0-next.2 → 10.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -147,7 +147,9 @@ export class NovoPickerElement {
|
|
|
147
147
|
this.onModelChange(this._value);
|
|
148
148
|
if (wipeTerm) {
|
|
149
149
|
this.term = '';
|
|
150
|
-
this.popup
|
|
150
|
+
if (this.popup?.instance) {
|
|
151
|
+
this.popup.instance.customTextValue = null;
|
|
152
|
+
}
|
|
151
153
|
this.hideResults();
|
|
152
154
|
}
|
|
153
155
|
this.ref.markForCheck();
|
|
@@ -420,4 +422,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
420
422
|
type: ViewChild,
|
|
421
423
|
args: ['input', { static: true }]
|
|
422
424
|
}] } });
|
|
423
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvcGlja2VyL1BpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFPLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdFLDREQUE0RDtBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQUV0RSxzREFBc0Q7QUFDdEQsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFFbEM7Ozs7O0dBS0c7QUF1Q0gsTUFBTSxPQUFPLGlCQUFpQjtJQThDNUIsd0VBQXdFO0lBQ3hFLElBQ0ksa0JBQWtCLENBQUMsQ0FBVTtRQUMvQixJQUFJLENBQUMsbUJBQW1CLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUE4QkQsWUFBbUIsT0FBbUIsRUFBVSxjQUE4QixFQUFVLEdBQXNCO1FBQTNGLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXhFOUcsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFFOUIsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUMxQixhQUFhO1FBRWIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFJOUIsYUFBYTtRQUViLHVCQUFrQixHQUFXLE9BQU8sQ0FBQztRQUlyQyw4QkFBOEI7UUFFOUIsU0FBSSxHQUFXLE1BQU0sQ0FBQztRQUN0Qiw4Q0FBOEM7UUFFOUMsMEJBQXFCLEdBQVksSUFBSSxDQUFDO1FBTXRDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQU0xQix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFZNUIsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRTdDLHNCQUFzQjtRQUV0QixZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEQsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9DLFVBQUssR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU5QyxTQUFJLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFN0MsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9DLFFBQUcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU81QyxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBSWxCLGtCQUFhLEdBQWEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ25DLG1CQUFjLEdBQWEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRTZFLENBQUM7SUFFbEgsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLG1FQUFtRSxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUNELElBQUksMEJBQTBCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQ3pLLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksYUFBYSxDQUFDO1FBQ3JFLDBGQUEwRjtRQUMxRixpRUFBaUU7UUFDakUsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsMEJBQTBCLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDMUksYUFBYSxDQUFDLFNBQVMsQ0FDckIsQ0FBQyxLQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQ3ZELENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUMvQixDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUM3SSxnQkFBZ0IsQ0FBQyxTQUFTLENBQ3hCLENBQUMsS0FBb0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUN0RCxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFxQztRQUM1RCxJQUFJLHVJQUE0RCxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFNLEtBQXVCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNySCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUUsS0FBSyxDQUFDLE1BQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBQ3BELENBQUM7SUFFTyxJQUFJLENBQUMsSUFBYTtRQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUM1QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQyxJQUFJLEtBQUssQ0FBQyxHQUFHLDhCQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyx3QkFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztnQkFDcEYsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLEdBQUcsZ0NBQWdCLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsR0FBRyxvQ0FBa0IsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxHQUFHLDRCQUFjLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2hILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFCLENBQUM7Z0JBQ0QsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsb0NBQWtCLElBQUksS0FBSyxDQUFDLEdBQUcsOEJBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM5SCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLEdBQUcsOEJBQWUsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksS0FBSyxDQUFDLEdBQUcsd0JBQVksRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQVE7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzNDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLEtBQUs7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsZ0dBQWdHO0lBQ2hHLFdBQVcsQ0FBQyxJQUFVO1FBQ3BCLGlCQUFpQjtRQUNqQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLGlEQUFpRDtZQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM3QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDdkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUN2RSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELDJJQUEySTtJQUMzSSxxSUFBcUk7SUFDckksV0FBVyxDQUFDLEdBQVM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELDJGQUEyRjtJQUMzRixlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtJQUNmLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELElBQUksS0FBSyxDQUFDLFFBQVE7UUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQU0sSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQzFELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0VBQWdFO0lBQ2hFLFNBQVMsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1lBQzlFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzdDLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLENBQUM7aUJBQU0sSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDMUIsQ0FBQztpQkFBTSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyRCxDQUFDO2lCQUFNLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQzt3QkFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDekUsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO29CQUNwQixDQUFDO29CQUNELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUMxQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBWTtRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBWTtRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBaUI7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQztJQUN0QyxDQUFDOytHQWhWVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixtdUJBcENqQixDQUFDLHFCQUFxQixDQUFDLHlHQXNDSixnQkFBZ0IsdUVBc0VuQyw0QkFBNEIsNkpBM0c3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVDs7NEZBSVUsaUJBQWlCO2tCQXRDN0IsU0FBUzsrQkFDRSxhQUFhLGFBQ1osQ0FBQyxxQkFBcUIsQ0FBQyxZQUN4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVCxpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJOzRJQUtyQyxPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTlELE1BQU07c0JBREwsS0FBSztnQkFHTixXQUFXO3NCQURWLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUdOLGFBQWE7c0JBRFosS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBR04sZUFBZTtzQkFEZCxLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBR04sS0FBSztzQkFESixLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBS0Ysa0JBQWtCO3NCQURyQixLQUFLO2dCQWFOLE9BQU87c0JBRE4sTUFBTTtnQkFHUCxNQUFNO3NCQURMLE1BQU07Z0JBR1AsS0FBSztzQkFESixNQUFNO2dCQUdQLElBQUk7c0JBREgsTUFBTTtnQkFHUCxNQUFNO3NCQURMLE1BQU07Z0JBR1AsR0FBRztzQkFERixNQUFNO2dCQUlBLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2xELEtBQUs7c0JBRFgsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRVdGlscyB9IGZyb20gJ25vdm8tZWxlbWVudHMvc2VydmljZXMnO1xuaW1wb3J0IHsgSGVscGVycywgS2V5LCBub3RpZnkgfSBmcm9tICdub3ZvLWVsZW1lbnRzL3V0aWxzJztcbmltcG9ydCB7IE5vdm9PdmVybGF5VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NvbW1vbic7XG4vLyBpbXBvcnQgeyBOb3ZvQ29udHJvbENvbmZpZyB9IGZyb20gJy4uL2Zvcm0vRm9ybUNvbnRyb2xzJztcbmltcG9ydCB7IFBpY2tlclJlc3VsdHMgfSBmcm9tICcuL2V4dHJhcy9waWNrZXItcmVzdWx0cy9QaWNrZXJSZXN1bHRzJztcblxuLy8gVmFsdWUgYWNjZXNzb3IgZm9yIHRoZSBjb21wb25lbnQgKHN1cHBvcnRzIG5nTW9kZWwpXG5jb25zdCBQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOb3ZvUGlja2VyRWxlbWVudCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuY29uc3QgREVGQVVMVF9ERUJPVU5DRV9USU1FID0gMjUwO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGNsYXNzIGlzIHRoZSBkaXJlY3RpdmUgZGVmaW5pdGlvbiBvZiB0aGUgUGlja2VyLiBJZiB5b3UgYWRkIGFuIGF0dHJpYnV0ZSBvZiBgcGlja2VyYCB0byBhbiBpbnB1dCxcbiAqIGl0IHdpbGwgY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBwaWNrZXIgd2hpY2ggd3JhcHMgdGhlIGlucHV0IGluIGFsbCBvZiB0aGUgcGlja2VyIEhUTUwgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdHkuXG4gKiBQaWNrZXIgc2hvdWxkIGJlIGFkZGVkIGFzIGEgdHdvLXdheSBib3VuZCBuZ01vZGVsIGluc3RhbmNlIGBbKHBpY2tlcildPVwiXCJgIGluIG9yZGVyIHRvIGhhdmUgdGhlIHBpY2tlciBvcHRpb25zXG4gKiBkeW5hbWljYWxseSBwb3B1bGF0ZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm92by1waWNrZXInLFxuICBwcm92aWRlcnM6IFtQSUNLRVJfVkFMVUVfQUNDRVNTT1JdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpIGNsYXNzPVwiYmhpLW1vcmVcIiAqbmdJZj1cImNvbmZpZz8uZW50aXR5SWNvbiAmJiAhX3ZhbHVlXCI+PC9pPlxuICAgIDxpIGNsYXNzPVwiYmhpLXt7IGNvbmZpZz8uZW50aXR5SWNvbiB9fSBlbnRpdHktaWNvbiB7eyBjb25maWc/LmVudGl0eUljb24gfX1cIiAqbmdJZj1cImNvbmZpZz8uZW50aXR5SWNvbiAmJiBfdmFsdWVcIj48L2k+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cInBpY2tlci1pbnB1dFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInRlcm1cIlxuICAgICAgW2NsYXNzLmVudGl0eS1waWNrZXJdPVwiY29uZmlnPy5lbnRpdHlJY29uXCJcbiAgICAgIFtjbGFzcy5lbnRpdHktc2VsZWN0ZWRdPVwiY29uZmlnPy5lbnRpdHlJY29uICYmIF92YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGVja1Rlcm0oJGV2ZW50KVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAjaW5wdXRcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlUGlja2VySW5wdXRcIlxuICAgIC8+XG4gICAgPGkgY2xhc3M9XCJiaGktc2VhcmNoXCIgKm5nSWY9XCIoIV92YWx1ZSB8fCBjbGVhclZhbHVlT25TZWxlY3QpICYmICFkaXNhYmxlUGlja2VySW5wdXRcIj48L2k+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwiYmhpLXRpbWVzXCJcbiAgICAgIFtjbGFzcy5lbnRpdHktc2VsZWN0ZWRdPVwiY29uZmlnPy5lbnRpdHlJY29uICYmIF92YWx1ZVwiXG4gICAgICAqbmdJZj1cIl92YWx1ZSAmJiAhY2xlYXJWYWx1ZU9uU2VsZWN0ICYmICFkaXNhYmxlUGlja2VySW5wdXRcIlxuICAgICAgKGNsaWNrKT1cImNsZWFyVmFsdWUodHJ1ZSlcIlxuICAgID48L2k+XG4gICAgPG5vdm8tb3ZlcmxheS10ZW1wbGF0ZSBjbGFzcz1cInBpY2tlci1yZXN1bHRzLWNvbnRhaW5lclwiIFtwYXJlbnRdPVwiZWxlbWVudFwiIFt3aWR0aF09XCJ3aWR0aFwiIFttaW5XaWR0aF09XCJtaW5XaWR0aFwiIHBvc2l0aW9uPVwiYWJvdmUtYmVsb3dcIiAoY2xvc2luZyk9XCJvbk92ZXJsYXlDbG9zZWQoKVwiPlxuICAgICAgPHNwYW4gI3Jlc3VsdHM+PC9zcGFuPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbm92by1vdmVybGF5LXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9QaWNrZXIuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBOb3ZvUGlja2VyRWxlbWVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIENvbnRhaW5lciBmb3IgdGhlIHJlc3VsdHNcbiAgQFZpZXdDaGlsZCgncmVzdWx0cycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHJlc3VsdHM6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGNsZWFyVmFsdWVPblNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgY2xvc2VPblNlbGVjdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkOiBBcnJheTxhbnk+ID0gW107XG4gIC8vIERlcHJlY2F0ZWRcbiAgQElucHV0KClcbiAgYXBwZW5kVG9Cb2R5OiBib29sZWFuID0gZmFsc2U7XG4gIC8vIERlcHJlY2F0ZWRcbiAgQElucHV0KClcbiAgcGFyZW50U2Nyb2xsU2VsZWN0b3I6IHN0cmluZztcbiAgLy8gRGVwcmVjYXRlZFxuICBASW5wdXQoKVxuICBwYXJlbnRTY3JvbGxBY3Rpb246IHN0cmluZyA9ICdjbG9zZSc7XG4gIC8vIEN1c3RvbSBjbGFzcyBmb3IgdGhlIGRyb3Bkb3duIGNvbnRhaW5lclxuICBASW5wdXQoKVxuICBjb250YWluZXJDbGFzczogc3RyaW5nO1xuICAvLyBTaWRlIHRoZSBkcm9wZG93biB3aWxsIG9wZW5cbiAgQElucHV0KClcbiAgc2lkZTogc3RyaW5nID0gJ2xlZnQnO1xuICAvLyBBdXRvc2VsZWN0cyB0aGUgZmlyc3Qgb3B0aW9uIGluIHRoZSByZXN1bHRzXG4gIEBJbnB1dCgpXG4gIGF1dG9TZWxlY3RGaXJzdE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQElucHV0KClcbiAgbWF4bGVuZ3RoOiBudW1iZXI7XG4gIEBJbnB1dCgpXG4gIGFsbG93Q3VzdG9tVmFsdWVzID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHdpZHRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG1pbldpZHRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGFsbG93VGFiTmF2aWdhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIERpc2FibGUgZnJvbSB0eXBpbmcgaW50byB0aGUgcGlja2VyIChyZXN1bHQgdGVtcGxhdGUgZG9lcyBldmVyeXRoaW5nKVxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZVBpY2tlcklucHV0KHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gIH1cblxuICBnZXQgZGlzYWJsZVBpY2tlcklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQ7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlUGlja2VySW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBFbWl0dGVyIGZvciBzZWxlY3RzXG4gIEBPdXRwdXQoKVxuICBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBmb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHR5cGluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICB0YWI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoTm92b092ZXJsYXlUZW1wbGF0ZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGNvbnRhaW5lcjogTm92b092ZXJsYXlUZW1wbGF0ZUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgaW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgdGVybTogc3RyaW5nID0gJyc7XG4gIHJlc3VsdHNDb21wb25lbnQ6IGFueTtcbiAgcG9wdXA6IENvbXBvbmVudFJlZjxhbnk+O1xuICBfdmFsdWU6IGFueTtcbiAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcbiAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgY29tcG9uZW50VXRpbHM6IENvbXBvbmVudFV0aWxzLCBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMub3ZlcnJpZGVFbGVtZW50KSB7XG4gICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLm92ZXJyaWRlRWxlbWVudDtcbiAgICB9XG4gICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5KSB7XG4gICAgICBub3RpZnkoYCdhcHBlbmRUb0JvZHknIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFBsZWFzZSByZW1vdmUgdGhpcyBhdHRyaWJ1dGUuYCk7XG4gICAgfVxuICAgIGxldCBkZWJvdW5jZVRpbWVJbk1pbGxpU2Vjb25kcyA9IE51bWJlci5pc05hTihOdW1iZXIodGhpcy5jb25maWc/LmRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSkgPyBERUZBVUxUX0RFQk9VTkNFX1RJTUUgOiBOdW1iZXIodGhpcy5jb25maWc/LmRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKTtcbiAgICAvLyBDdXN0b20gcmVzdWx0cyB0ZW1wbGF0ZVxuICAgIHRoaXMucmVzdWx0c0NvbXBvbmVudCA9IHRoaXMuY29uZmlnLnJlc3VsdHNUZW1wbGF0ZSB8fCBQaWNrZXJSZXN1bHRzO1xuICAgIC8vIEdldCBhbGwgZGlzdGluY3Qga2V5IHVwIGV2ZW50cyBmcm9tIHRoZSBpbnB1dCBhbmQgb25seSBmaXJlIGlmIGxvbmcgZW5vdWdoIGFuZCBkaXN0aW5jdFxuICAgIC8vIGxldCBpbnB1dCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgY29uc3QgcGFzdGVPYnNlcnZlciA9IGZyb21FdmVudCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICdwYXN0ZScpLnBpcGUoZGVib3VuY2VUaW1lKGRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgcGFzdGVPYnNlcnZlci5zdWJzY3JpYmUoXG4gICAgICAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB0aGlzLm9uRGVib3VuY2VkS2V5dXAoZXZlbnQpLFxuICAgICAgKGVycikgPT4gdGhpcy5oaWRlUmVzdWx0cyhlcnIpLFxuICAgICk7XG4gICAgY29uc3Qga2V5Ym9hcmRPYnNlcnZlciA9IGZyb21FdmVudCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpLnBpcGUoZGVib3VuY2VUaW1lKGRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAga2V5Ym9hcmRPYnNlcnZlci5zdWJzY3JpYmUoXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMub25EZWJvdW5jZWRLZXl1cChldmVudCksXG4gICAgICAoZXJyKSA9PiB0aGlzLmhpZGVSZXN1bHRzKGVyciksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25EZWJvdW5jZWRLZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCB8IENsaXBib2FyZEV2ZW50KSB7XG4gICAgaWYgKFtLZXkuRXNjYXBlLCBLZXkuQXJyb3dEb3duLCBLZXkuQXJyb3dVcCwgS2V5LkVudGVyLCBLZXkuVGFiXS5zb21lKChrZXkpID0+IGtleSA9PT0gKGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaG93KChldmVudC50YXJnZXQgYXMgYW55KS52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMuY29udGFpbmVyLm9wZW5QYW5lbCgpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXIuY2xvc2VQYW5lbCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYW5lbE9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyICYmIHRoaXMuY29udGFpbmVyLnBhbmVsT3BlbjtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdyh0ZXJtPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuUGFuZWwoKTtcbiAgICAvLyBTaG93IHRoZSByZXN1bHRzIGluc2lkZVxuICAgIHRoaXMuc2hvd1Jlc3VsdHModGVybSk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlUGlja2VySW5wdXQpIHtcbiAgICAgIEhlbHBlcnMuc3dhbGxvd0V2ZW50KGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMucGFuZWxPcGVuICYmICF0aGlzLmRpc2FibGVQaWNrZXJJbnB1dCkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS2V5LkVzY2FwZSB8fCAoZXZlbnQua2V5ID09PSBLZXkuVGFiICYmICF0aGlzLmFsbG93VGFiTmF2aWdhdGlvbikpIHtcbiAgICAgICAgdGhpcy5oaWRlUmVzdWx0cygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5rZXkgPT09IEtleS5BcnJvd1VwKSB7XG4gICAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UucHJldkFjdGl2ZU1hdGNoKCk7XG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5rZXkgPT09IEtleS5BcnJvd0Rvd24pIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5uZXh0QWN0aXZlTWF0Y2goKTtcbiAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS2V5LkVudGVyKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU1hdGNoID0gdGhpcy5wb3B1cC5pbnN0YW5jZS5hY3RpdmVNYXRjaDtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbGVjdGVkKSA9PiBhY3RpdmVNYXRjaCAmJiBhY3RpdmVNYXRjaC52YWx1ZSAmJiBzZWxlY3RlZC52YWx1ZSA9PT0gYWN0aXZlTWF0Y2gudmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5zZWxlY3RBY3RpdmVNYXRjaCgpO1xuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKChldmVudC5rZXkgPT09IEtleS5CYWNrc3BhY2UgfHwgZXZlbnQua2V5ID09PSBLZXkuRGVsZXRlKSAmJiAhSGVscGVycy5pc0VtcHR5KHRoaXMuX3ZhbHVlKSAmJiAodGhpcy5fdmFsdWUgPT09IHRoaXMudGVybSkpIHtcbiAgICAgICAgdGhpcy5jbGVhclZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBLZXkuRGVsZXRlICYmIEhlbHBlcnMuaXNCbGFuayh0aGlzLl92YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5jbGVhclZhbHVlKHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFsbG93VGFiTmF2aWdhdGlvbiAmJiBldmVudC5rZXkgPT09IEtleS5UYWIpIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgICAgdGhpcy50YWIuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyVmFsdWUod2lwZVRlcm0pIHtcbiAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLl92YWx1ZSk7XG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyB2YWx1ZTogdGhpcy5fdmFsdWUsIHJhd1ZhbHVlOiB7IGxhYmVsOiAnJywgdmFsdWU6IHRoaXMuX3ZhbHVlIH0gfSk7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcblxuICAgIGlmICh3aXBlVGVybSkge1xuICAgICAgdGhpcy50ZXJtID0gJyc7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmN1c3RvbVRleHRWYWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLmhpZGVSZXN1bHRzKCk7XG4gICAgfVxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBXaGVuIHRoZSBpbnB1dCdzIGZvY3VzIGV2ZW50IGlzIGNhbGxlZCB0aGlzIG1ldGhvZCBjYWxscyB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGlzcGxheXMgdGhlXG4gICAqIHJlc3VsdHMuXG4gICAqL1xuICBvbkZvY3VzKGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnBhbmVsT3Blbikge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICAgIHRoaXMuZm9jdXMuZW1pdChldmVudCk7XG4gIH1cblxuICAvLyBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSByZXN1bHRzIChjYWxsZWQgcG9wdXApIGFuZCBhZGRzIGFsbCB0aGUgYmluZGluZ3MgdG8gdGhhdCBpbnN0YW5jZS5cbiAgc2hvd1Jlc3VsdHModGVybT86IGFueSkge1xuICAgIC8vIFVwZGF0ZSBNYXRjaGVzXG4gICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBsaXN0IG9yIGNyZWF0ZSB0aGUgRE9NIGVsZW1lbnRcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnRlcm0gPSB0aGlzLnRlcm07XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UuYXV0b1NlbGVjdEZpcnN0T3B0aW9uID0gdGhpcy5hdXRvU2VsZWN0Rmlyc3RPcHRpb247XG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3B1cCA9IHRoaXMuY29tcG9uZW50VXRpbHMuYXBwZW5kKHRoaXMucmVzdWx0c0NvbXBvbmVudCwgdGhpcy5yZXN1bHRzKTtcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UucGFyZW50ID0gdGhpcztcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnRlcm0gPSB0aGlzLnRlcm07XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UuYXV0b1NlbGVjdEZpcnN0T3B0aW9uID0gdGhpcy5hdXRvU2VsZWN0Rmlyc3RPcHRpb247XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLm92ZXJsYXkgPSB0aGlzLmNvbnRhaW5lci5vdmVybGF5UmVmO1xuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gVGVsbHMgdGhlIG92ZXJsYXkgY29tcG9uZW50IHRvIGhpZGUgdGhlIHBpY2tlciByZXN1bHRzIGZyb20gdGhlIERPTSB3aXRob3V0IGRlbGV0aW5nIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgcG9wdXAgaW5zdGFuY2UgY3JlYXRlZCBpblxuICAvLyBzaG93UmVzdWx0cy4gVGhlIHBvcHVwIGluc3RhbmNlIHdpbGwgcmVtYWluIGluIG1lbW9yeSBmcm9tIHRoZSBmaXJzdCB0aW1lIHRoZSByZXN1bHRzIGFyZSBzaG93biB1bnRpbCB0aGlzIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gIGhpZGVSZXN1bHRzKGVycj86IGFueSkge1xuICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLy8gQ2xlYW5zIHVwIGxpc3RlbmVycyBmb3IgdGhlIHBvcHVwIC0gd2lsbCBnZXQgZXhlY3V0ZWQgbm8gbWF0dGVyIGhvdyB0aGUgcG9wdXAgaXMgY2xvc2VkLlxuICBvbk92ZXJsYXlDbG9zZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucG9wdXAgJiYgdGhpcy5wb3B1cC5pbnN0YW5jZSAmJiB0aGlzLnBvcHVwLmluc3RhbmNlLmNsZWFuVXApIHtcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UuY2xlYW5VcCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGdldCBhY2Nlc3NvclxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgLy8gc2V0IGFjY2Vzc29yIGluY2x1ZGluZyBjYWxsIHRoZSBvbmNoYW5nZSBjYWxsYmFja1xuICBzZXQgdmFsdWUoc2VsZWN0ZWQpIHtcbiAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICB0aGlzLnRlcm0gPSAnJztcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZC52YWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMudGVybSA9IHRoaXMuY2xlYXJWYWx1ZU9uU2VsZWN0ID8gJycgOiBzZWxlY3RlZC5sYWJlbDtcbiAgICAgIHRoaXMuX3ZhbHVlID0gc2VsZWN0ZWQudmFsdWU7XG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdCh7IHZhbHVlOiBzZWxlY3RlZC52YWx1ZSwgcmF3VmFsdWU6IHsgbGFiZWw6IHRoaXMudGVybSwgdmFsdWU6IHNlbGVjdGVkLnZhbHVlIH0gfSk7XG4gICAgICB0aGlzLnNlbGVjdC5lbWl0KHNlbGVjdGVkKTtcbiAgICAgIHRoaXMub25Nb2RlbENoYW5nZShzZWxlY3RlZC52YWx1ZSk7XG4gICAgICBpZiAodGhpcy5wb3B1cCkge1xuICAgICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZXJtID0gdGhpcy5jbGVhclZhbHVlT25TZWxlY3QgPyAnJyA6IHNlbGVjdGVkLmxhYmVsO1xuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyB2YWx1ZTogc2VsZWN0ZWQudmFsdWUsIHJhd1ZhbHVlOiB7IGxhYmVsOiB0aGlzLnRlcm0sIHZhbHVlOiB0aGlzLl92YWx1ZSB9IH0pO1xuICAgICAgdGhpcy5zZWxlY3QuZW1pdChzZWxlY3RlZCk7XG4gICAgfVxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLy8gTWFrZXMgc3VyZSB0byBjbGVhciB0aGUgbW9kZWwgaWYgdGhlIHVzZXIgY2xlYXJzIHRoZSB0ZXh0IGJveFxuICBjaGVja1Rlcm0oZXZlbnQpIHtcbiAgICB0aGlzLnR5cGluZy5lbWl0KGV2ZW50KTtcbiAgICBpZiAodGhpcy5hbGxvd0N1c3RvbVZhbHVlcykge1xuICAgICAgaWYgKHRoaXMudGVybSkge1xuICAgICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmN1c3RvbVRleHRWYWx1ZSA9IHsgbGFiZWw6IHRoaXMudGVybSwgdmFsdWU6IHRoaXMudGVybSB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmN1c3RvbVRleHRWYWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgoIWV2ZW50IHx8ICFldmVudC5sZW5ndGgpICYmICFIZWxwZXJzLmlzRW1wdHkodGhpcy5fdmFsdWUpKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIFNldCB0b3VjaGVkIG9uIGJsdXJcbiAgb25Ub3VjaGVkKGV2ZW50PzogRXZlbnQpIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgdGhpcy5ibHVyLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuY2xlYXJWYWx1ZU9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnRlcm0gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIXRoaXMuY29uZmlnLnVzZUdldExhYmVscykge1xuICAgICAgICB0aGlzLnRlcm0gPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUubGFiZWwpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdmFsdWUubGFiZWw7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLmZpcnN0TmFtZSkge1xuICAgICAgICB0aGlzLnRlcm0gPSBgJHt2YWx1ZS5maXJzdE5hbWV9ICR7dmFsdWUubGFzdE5hbWV9YDtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUubmFtZSkge1xuICAgICAgICB0aGlzLnRlcm0gPSB2YWx1ZS5uYW1lO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5jb25maWcuZ2V0TGFiZWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmdldExhYmVscyh2YWx1ZSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgdGhpcy50ZXJtID0gcmVzdWx0Lmxlbmd0aCA/IHJlc3VsdFswXS5sYWJlbCB8fCAnJyA6IHJlc3VsdC5sYWJlbCB8fCAnJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50ZXJtID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUudGl0bGUpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdmFsdWUudGl0bGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRlcm0gPSB2YWx1ZSB8fCAnJztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzYWJsZVBpY2tlcklucHV0ID0gZGlzYWJsZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
425
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvcGlja2VyL1BpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFPLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdFLDREQUE0RDtBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQUV0RSxzREFBc0Q7QUFDdEQsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFFbEM7Ozs7O0dBS0c7QUF1Q0gsTUFBTSxPQUFPLGlCQUFpQjtJQThDNUIs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cnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRVdGlscyB9IGZyb20gJ25vdm8tZWxlbWVudHMvc2VydmljZXMnO1xuaW1wb3J0IHsgSGVscGVycywgS2V5LCBub3RpZnkgfSBmcm9tICdub3ZvLWVsZW1lbnRzL3V0aWxzJztcbmltcG9ydCB7IE5vdm9PdmVybGF5VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NvbW1vbic7XG4vLyBpbXBvcnQgeyBOb3ZvQ29udHJvbENvbmZpZyB9IGZyb20gJy4uL2Zvcm0vRm9ybUNvbnRyb2xzJztcbmltcG9ydCB7IFBpY2tlclJlc3VsdHMgfSBmcm9tICcuL2V4dHJhcy9waWNrZXItcmVzdWx0cy9QaWNrZXJSZXN1bHRzJztcblxuLy8gVmFsdWUgYWNjZXNzb3IgZm9yIHRoZSBjb21wb25lbnQgKHN1cHBvcnRzIG5nTW9kZWwpXG5jb25zdCBQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOb3ZvUGlja2VyRWxlbWVudCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuY29uc3QgREVGQVVMVF9ERUJPVU5DRV9USU1FID0gMjUwO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGNsYXNzIGlzIHRoZSBkaXJlY3RpdmUgZGVmaW5pdGlvbiBvZiB0aGUgUGlja2VyLiBJZiB5b3UgYWRkIGFuIGF0dHJpYnV0ZSBvZiBgcGlja2VyYCB0byBhbiBpbnB1dCxcbiAqIGl0IHdpbGwgY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBwaWNrZXIgd2hpY2ggd3JhcHMgdGhlIGlucHV0IGluIGFsbCBvZiB0aGUgcGlja2VyIEhUTUwgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdHkuXG4gKiBQaWNrZXIgc2hvdWxkIGJlIGFkZGVkIGFzIGEgdHdvLXdheSBib3VuZCBuZ01vZGVsIGluc3RhbmNlIGBbKHBpY2tlcildPVwiXCJgIGluIG9yZGVyIHRvIGhhdmUgdGhlIHBpY2tlciBvcHRpb25zXG4gKiBkeW5hbWljYWxseSBwb3B1bGF0ZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm92by1waWNrZXInLFxuICBwcm92aWRlcnM6IFtQSUNLRVJfVkFMVUVfQUNDRVNTT1JdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpIGNsYXNzPVwiYmhpLW1vcmVcIiAqbmdJZj1cImNvbmZpZz8uZW50aXR5SWNvbiAmJiAhX3ZhbHVlXCI+PC9pPlxuICAgIDxpIGNsYXNzPVwiYmhpLXt7IGNvbmZpZz8uZW50aXR5SWNvbiB9fSBlbnRpdHktaWNvbiB7eyBjb25maWc/LmVudGl0eUljb24gfX1cIiAqbmdJZj1cImNvbmZpZz8uZW50aXR5SWNvbiAmJiBfdmFsdWVcIj48L2k+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cInBpY2tlci1pbnB1dFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInRlcm1cIlxuICAgICAgW2NsYXNzLmVudGl0eS1waWNrZXJdPVwiY29uZmlnPy5lbnRpdHlJY29uXCJcbiAgICAgIFtjbGFzcy5lbnRpdHktc2VsZWN0ZWRdPVwiY29uZmlnPy5lbnRpdHlJY29uICYmIF92YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGVja1Rlcm0oJGV2ZW50KVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAjaW5wdXRcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlUGlja2VySW5wdXRcIlxuICAgIC8+XG4gICAgPGkgY2xhc3M9XCJiaGktc2VhcmNoXCIgKm5nSWY9XCIoIV92YWx1ZSB8fCBjbGVhclZhbHVlT25TZWxlY3QpICYmICFkaXNhYmxlUGlja2VySW5wdXRcIj48L2k+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwiYmhpLXRpbWVzXCJcbiAgICAgIFtjbGFzcy5lbnRpdHktc2VsZWN0ZWRdPVwiY29uZmlnPy5lbnRpdHlJY29uICYmIF92YWx1ZVwiXG4gICAgICAqbmdJZj1cIl92YWx1ZSAmJiAhY2xlYXJWYWx1ZU9uU2VsZWN0ICYmICFkaXNhYmxlUGlja2VySW5wdXRcIlxuICAgICAgKGNsaWNrKT1cImNsZWFyVmFsdWUodHJ1ZSlcIlxuICAgID48L2k+XG4gICAgPG5vdm8tb3ZlcmxheS10ZW1wbGF0ZSBjbGFzcz1cInBpY2tlci1yZXN1bHRzLWNvbnRhaW5lclwiIFtwYXJlbnRdPVwiZWxlbWVudFwiIFt3aWR0aF09XCJ3aWR0aFwiIFttaW5XaWR0aF09XCJtaW5XaWR0aFwiIHBvc2l0aW9uPVwiYWJvdmUtYmVsb3dcIiAoY2xvc2luZyk9XCJvbk92ZXJsYXlDbG9zZWQoKVwiPlxuICAgICAgPHNwYW4gI3Jlc3VsdHM+PC9zcGFuPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbm92by1vdmVybGF5LXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9QaWNrZXIuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBOb3ZvUGlja2VyRWxlbWVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIENvbnRhaW5lciBmb3IgdGhlIHJlc3VsdHNcbiAgQFZpZXdDaGlsZCgncmVzdWx0cycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHJlc3VsdHM6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGNsZWFyVmFsdWVPblNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgY2xvc2VPblNlbGVjdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkOiBBcnJheTxhbnk+ID0gW107XG4gIC8vIERlcHJlY2F0ZWRcbiAgQElucHV0KClcbiAgYXBwZW5kVG9Cb2R5OiBib29sZWFuID0gZmFsc2U7XG4gIC8vIERlcHJlY2F0ZWRcbiAgQElucHV0KClcbiAgcGFyZW50U2Nyb2xsU2VsZWN0b3I6IHN0cmluZztcbiAgLy8gRGVwcmVjYXRlZFxuICBASW5wdXQoKVxuICBwYXJlbnRTY3JvbGxBY3Rpb246IHN0cmluZyA9ICdjbG9zZSc7XG4gIC8vIEN1c3RvbSBjbGFzcyBmb3IgdGhlIGRyb3Bkb3duIGNvbnRhaW5lclxuICBASW5wdXQoKVxuICBjb250YWluZXJDbGFzczogc3RyaW5nO1xuICAvLyBTaWRlIHRoZSBkcm9wZG93biB3aWxsIG9wZW5cbiAgQElucHV0KClcbiAgc2lkZTogc3RyaW5nID0gJ2xlZnQnO1xuICAvLyBBdXRvc2VsZWN0cyB0aGUgZmlyc3Qgb3B0aW9uIGluIHRoZSByZXN1bHRzXG4gIEBJbnB1dCgpXG4gIGF1dG9TZWxlY3RGaXJzdE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQElucHV0KClcbiAgbWF4bGVuZ3RoOiBudW1iZXI7XG4gIEBJbnB1dCgpXG4gIGFsbG93Q3VzdG9tVmFsdWVzID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHdpZHRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG1pbldpZHRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGFsbG93VGFiTmF2aWdhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIERpc2FibGUgZnJvbSB0eXBpbmcgaW50byB0aGUgcGlja2VyIChyZXN1bHQgdGVtcGxhdGUgZG9lcyBldmVyeXRoaW5nKVxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZVBpY2tlcklucHV0KHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gIH1cblxuICBnZXQgZGlzYWJsZVBpY2tlcklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQ7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlUGlja2VySW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBFbWl0dGVyIGZvciBzZWxlY3RzXG4gIEBPdXRwdXQoKVxuICBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBmb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHR5cGluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICB0YWI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoTm92b092ZXJsYXlUZW1wbGF0ZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGNvbnRhaW5lcjogTm92b092ZXJsYXlUZW1wbGF0ZUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgaW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgdGVybTogc3RyaW5nID0gJyc7XG4gIHJlc3VsdHNDb21wb25lbnQ6IGFueTtcbiAgcG9wdXA6IENvbXBvbmVudFJlZjxhbnk+O1xuICBfdmFsdWU6IGFueTtcbiAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcbiAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgY29tcG9uZW50VXRpbHM6IENvbXBvbmVudFV0aWxzLCBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMub3ZlcnJpZGVFbGVtZW50KSB7XG4gICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLm92ZXJyaWRlRWxlbWVudDtcbiAgICB9XG4gICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5KSB7XG4gICAgICBub3RpZnkoYCdhcHBlbmRUb0JvZHknIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFBsZWFzZSByZW1vdmUgdGhpcyBhdHRyaWJ1dGUuYCk7XG4gICAgfVxuICAgIGxldCBkZWJvdW5jZVRpbWVJbk1pbGxpU2Vjb25kcyA9IE51bWJlci5pc05hTihOdW1iZXIodGhpcy5jb25maWc/LmRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSkgPyBERUZBVUxUX0RFQk9VTkNFX1RJTUUgOiBOdW1iZXIodGhpcy5jb25maWc/LmRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKTtcbiAgICAvLyBDdXN0b20gcmVzdWx0cyB0ZW1wbGF0ZVxuICAgIHRoaXMucmVzdWx0c0NvbXBvbmVudCA9IHRoaXMuY29uZmlnLnJlc3VsdHNUZW1wbGF0ZSB8fCBQaWNrZXJSZXN1bHRzO1xuICAgIC8vIEdldCBhbGwgZGlzdGluY3Qga2V5IHVwIGV2ZW50cyBmcm9tIHRoZSBpbnB1dCBhbmQgb25seSBmaXJlIGlmIGxvbmcgZW5vdWdoIGFuZCBkaXN0aW5jdFxuICAgIC8vIGxldCBpbnB1dCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgY29uc3QgcGFzdGVPYnNlcnZlciA9IGZyb21FdmVudCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICdwYXN0ZScpLnBpcGUoZGVib3VuY2VUaW1lKGRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgcGFzdGVPYnNlcnZlci5zdWJzY3JpYmUoXG4gICAgICAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB0aGlzLm9uRGVib3VuY2VkS2V5dXAoZXZlbnQpLFxuICAgICAgKGVycikgPT4gdGhpcy5oaWRlUmVzdWx0cyhlcnIpLFxuICAgICk7XG4gICAgY29uc3Qga2V5Ym9hcmRPYnNlcnZlciA9IGZyb21FdmVudCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpLnBpcGUoZGVib3VuY2VUaW1lKGRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAga2V5Ym9hcmRPYnNlcnZlci5zdWJzY3JpYmUoXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMub25EZWJvdW5jZWRLZXl1cChldmVudCksXG4gICAgICAoZXJyKSA9PiB0aGlzLmhpZGVSZXN1bHRzKGVyciksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25EZWJvdW5jZWRLZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCB8IENsaXBib2FyZEV2ZW50KSB7XG4gICAgaWYgKFtLZXkuRXNjYXBlLCBLZXkuQXJyb3dEb3duLCBLZXkuQXJyb3dVcCwgS2V5LkVudGVyLCBLZXkuVGFiXS5zb21lKChrZXkpID0+IGtleSA9PT0gKGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaG93KChldmVudC50YXJnZXQgYXMgYW55KS52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMuY29udGFpbmVyLm9wZW5QYW5lbCgpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXIuY2xvc2VQYW5lbCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYW5lbE9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyICYmIHRoaXMuY29udGFpbmVyLnBhbmVsT3BlbjtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdyh0ZXJtPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuUGFuZWwoKTtcbiAgICAvLyBTaG93IHRoZSByZXN1bHRzIGluc2lkZVxuICAgIHRoaXMuc2hvd1Jlc3VsdHModGVybSk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlUGlja2VySW5wdXQpIHtcbiAgICAgIEhlbHBlcnMuc3dhbGxvd0V2ZW50KGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMucGFuZWxPcGVuICYmICF0aGlzLmRpc2FibGVQaWNrZXJJbnB1dCkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS2V5LkVzY2FwZSB8fCAoZXZlbnQua2V5ID09PSBLZXkuVGFiICYmICF0aGlzLmFsbG93VGFiTmF2aWdhdGlvbikpIHtcbiAgICAgICAgdGhpcy5oaWRlUmVzdWx0cygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5rZXkgPT09IEtleS5BcnJvd1VwKSB7XG4gICAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UucHJldkFjdGl2ZU1hdGNoKCk7XG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5rZXkgPT09IEtleS5BcnJvd0Rvd24pIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5uZXh0QWN0aXZlTWF0Y2goKTtcbiAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS2V5LkVudGVyKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU1hdGNoID0gdGhpcy5wb3B1cC5pbnN0YW5jZS5hY3RpdmVNYXRjaDtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbGVjdGVkKSA9PiBhY3RpdmVNYXRjaCAmJiBhY3RpdmVNYXRjaC52YWx1ZSAmJiBzZWxlY3RlZC52YWx1ZSA9PT0gYWN0aXZlTWF0Y2gudmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5zZWxlY3RBY3RpdmVNYXRjaCgpO1xuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKChldmVudC5rZXkgPT09IEtleS5CYWNrc3BhY2UgfHwgZXZlbnQua2V5ID09PSBLZXkuRGVsZXRlKSAmJiAhSGVscGVycy5pc0VtcHR5KHRoaXMuX3ZhbHVlKSAmJiAodGhpcy5fdmFsdWUgPT09IHRoaXMudGVybSkpIHtcbiAgICAgICAgdGhpcy5jbGVhclZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBLZXkuRGVsZXRlICYmIEhlbHBlcnMuaXNCbGFuayh0aGlzLl92YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5jbGVhclZhbHVlKHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFsbG93VGFiTmF2aWdhdGlvbiAmJiBldmVudC5rZXkgPT09IEtleS5UYWIpIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgICAgdGhpcy50YWIuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyVmFsdWUod2lwZVRlcm0pIHtcbiAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLl92YWx1ZSk7XG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyB2YWx1ZTogdGhpcy5fdmFsdWUsIHJhd1ZhbHVlOiB7IGxhYmVsOiAnJywgdmFsdWU6IHRoaXMuX3ZhbHVlIH0gfSk7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcblxuICAgIGlmICh3aXBlVGVybSkge1xuICAgICAgdGhpcy50ZXJtID0gJyc7XG4gICAgICBpZiAodGhpcy5wb3B1cD8uaW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5jdXN0b21UZXh0VmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgICAgdGhpcy5oaWRlUmVzdWx0cygpO1xuICAgIH1cbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gV2hlbiB0aGUgaW5wdXQncyBmb2N1cyBldmVudCBpcyBjYWxsZWQgdGhpcyBtZXRob2QgY2FsbHMgdGhlIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRpc3BsYXlzIHRoZVxuICAgKiByZXN1bHRzLlxuICAgKi9cbiAgb25Gb2N1cyhldmVudCkge1xuICAgIGlmICghdGhpcy5wYW5lbE9wZW4pIHtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH1cbiAgICB0aGlzLmZvY3VzLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgLy8gQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgcmVzdWx0cyAoY2FsbGVkIHBvcHVwKSBhbmQgYWRkcyBhbGwgdGhlIGJpbmRpbmdzIHRvIHRoYXQgaW5zdGFuY2UuXG4gIHNob3dSZXN1bHRzKHRlcm0/OiBhbnkpIHtcbiAgICAvLyBVcGRhdGUgTWF0Y2hlc1xuICAgIGlmICh0aGlzLnBvcHVwKSB7XG4gICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgbGlzdCBvciBjcmVhdGUgdGhlIERPTSBlbGVtZW50XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS50ZXJtID0gdGhpcy50ZXJtO1xuICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmF1dG9TZWxlY3RGaXJzdE9wdGlvbiA9IHRoaXMuYXV0b1NlbGVjdEZpcnN0T3B0aW9uO1xuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9wdXAgPSB0aGlzLmNvbXBvbmVudFV0aWxzLmFwcGVuZCh0aGlzLnJlc3VsdHNDb21wb25lbnQsIHRoaXMucmVzdWx0cyk7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnBhcmVudCA9IHRoaXM7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS50ZXJtID0gdGhpcy50ZXJtO1xuICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmF1dG9TZWxlY3RGaXJzdE9wdGlvbiA9IHRoaXMuYXV0b1NlbGVjdEZpcnN0T3B0aW9uO1xuICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5vdmVybGF5ID0gdGhpcy5jb250YWluZXIub3ZlcmxheVJlZjtcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRlbGxzIHRoZSBvdmVybGF5IGNvbXBvbmVudCB0byBoaWRlIHRoZSBwaWNrZXIgcmVzdWx0cyBmcm9tIHRoZSBET00gd2l0aG91dCBkZWxldGluZyB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHBvcHVwIGluc3RhbmNlIGNyZWF0ZWQgaW5cbiAgLy8gc2hvd1Jlc3VsdHMuIFRoZSBwb3B1cCBpbnN0YW5jZSB3aWxsIHJlbWFpbiBpbiBtZW1vcnkgZnJvbSB0aGUgZmlyc3QgdGltZSB0aGUgcmVzdWx0cyBhcmUgc2hvd24gdW50aWwgdGhpcyBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxuICBoaWRlUmVzdWx0cyhlcnI/OiBhbnkpIHtcbiAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIENsZWFucyB1cCBsaXN0ZW5lcnMgZm9yIHRoZSBwb3B1cCAtIHdpbGwgZ2V0IGV4ZWN1dGVkIG5vIG1hdHRlciBob3cgdGhlIHBvcHVwIGlzIGNsb3NlZC5cbiAgb25PdmVybGF5Q2xvc2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBvcHVwICYmIHRoaXMucG9wdXAuaW5zdGFuY2UgJiYgdGhpcy5wb3B1cC5pbnN0YW5jZS5jbGVhblVwKSB7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmNsZWFuVXAoKTtcbiAgICB9XG4gIH1cblxuICAvLyBnZXQgYWNjZXNzb3JcbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8vIHNldCBhY2Nlc3NvciBpbmNsdWRpbmcgY2FsbCB0aGUgb25jaGFuZ2UgY2FsbGJhY2tcbiAgc2V0IHZhbHVlKHNlbGVjdGVkKSB7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgdGhpcy50ZXJtID0gJyc7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQudmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLnRlcm0gPSB0aGlzLmNsZWFyVmFsdWVPblNlbGVjdCA/ICcnIDogc2VsZWN0ZWQubGFiZWw7XG4gICAgICB0aGlzLl92YWx1ZSA9IHNlbGVjdGVkLnZhbHVlO1xuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyB2YWx1ZTogc2VsZWN0ZWQudmFsdWUsIHJhd1ZhbHVlOiB7IGxhYmVsOiB0aGlzLnRlcm0sIHZhbHVlOiBzZWxlY3RlZC52YWx1ZSB9IH0pO1xuICAgICAgdGhpcy5zZWxlY3QuZW1pdChzZWxlY3RlZCk7XG4gICAgICB0aGlzLm9uTW9kZWxDaGFuZ2Uoc2VsZWN0ZWQudmFsdWUpO1xuICAgICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGVybSA9IHRoaXMuY2xlYXJWYWx1ZU9uU2VsZWN0ID8gJycgOiBzZWxlY3RlZC5sYWJlbDtcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KHsgdmFsdWU6IHNlbGVjdGVkLnZhbHVlLCByYXdWYWx1ZTogeyBsYWJlbDogdGhpcy50ZXJtLCB2YWx1ZTogdGhpcy5fdmFsdWUgfSB9KTtcbiAgICAgIHRoaXMuc2VsZWN0LmVtaXQoc2VsZWN0ZWQpO1xuICAgIH1cbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIE1ha2VzIHN1cmUgdG8gY2xlYXIgdGhlIG1vZGVsIGlmIHRoZSB1c2VyIGNsZWFycyB0aGUgdGV4dCBib3hcbiAgY2hlY2tUZXJtKGV2ZW50KSB7XG4gICAgdGhpcy50eXBpbmcuZW1pdChldmVudCk7XG4gICAgaWYgKHRoaXMuYWxsb3dDdXN0b21WYWx1ZXMpIHtcbiAgICAgIGlmICh0aGlzLnRlcm0pIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5jdXN0b21UZXh0VmFsdWUgPSB7IGxhYmVsOiB0aGlzLnRlcm0sIHZhbHVlOiB0aGlzLnRlcm0gfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5jdXN0b21UZXh0VmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoKCFldmVudCB8fCAhZXZlbnQubGVuZ3RoKSAmJiAhSGVscGVycy5pc0VtcHR5KHRoaXMuX3ZhbHVlKSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyBTZXQgdG91Y2hlZCBvbiBibHVyXG4gIG9uVG91Y2hlZChldmVudD86IEV2ZW50KSB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIHRoaXMuYmx1ci5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLmNsZWFyVmFsdWVPblNlbGVjdCkge1xuICAgICAgdGhpcy50ZXJtID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICF0aGlzLmNvbmZpZy51c2VHZXRMYWJlbHMpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLmxhYmVsKSB7XG4gICAgICAgIHRoaXMudGVybSA9IHZhbHVlLmxhYmVsO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSAmJiB2YWx1ZS5maXJzdE5hbWUpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gYCR7dmFsdWUuZmlyc3ROYW1lfSAke3ZhbHVlLmxhc3ROYW1lfWA7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLm5hbWUpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdmFsdWUubmFtZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuY29uZmlnLmdldExhYmVscyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLmNvbmZpZy5nZXRMYWJlbHModmFsdWUpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgIHRoaXMudGVybSA9IHJlc3VsdC5sZW5ndGggPyByZXN1bHRbMF0ubGFiZWwgfHwgJycgOiByZXN1bHQubGFiZWwgfHwgJyc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGVybSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLnRpdGxlKSB7XG4gICAgICAgIHRoaXMudGVybSA9IHZhbHVlLnRpdGxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdmFsdWUgfHwgJyc7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVQaWNrZXJJbnB1dCA9IGRpc2FibGVkO1xuICB9XG59XG4iXX0=
|
|
@@ -2016,7 +2016,9 @@ class NovoPickerElement {
|
|
|
2016
2016
|
this.onModelChange(this._value);
|
|
2017
2017
|
if (wipeTerm) {
|
|
2018
2018
|
this.term = '';
|
|
2019
|
-
this.popup
|
|
2019
|
+
if (this.popup?.instance) {
|
|
2020
|
+
this.popup.instance.customTextValue = null;
|
|
2021
|
+
}
|
|
2020
2022
|
this.hideResults();
|
|
2021
2023
|
}
|
|
2022
2024
|
this.ref.markForCheck();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novo-elements-elements-picker.mjs","sources":["../../../projects/novo-elements/src/elements/picker/extras/base-picker-results/BasePickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/checklist-picker-results/ChecklistPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/distributionlist-picker-results/DistributionListPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/entity-picker-results/EntityPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/grouped-multi-picker-results/GroupedMultiPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/mixed-multi-picker-results/MixedMultiPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/picker-results/PickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/skills-picker-results/SkillsSpecialtyPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/workers-comp-codes-picker-results/WorkersCompCodesPickerResults.ts","../../../projects/novo-elements/src/elements/picker/Picker.ts","../../../projects/novo-elements/src/elements/picker/Picker.module.ts","../../../projects/novo-elements/src/elements/picker/novo-elements-elements-picker.ts"],"sourcesContent":["// NG2\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { ChangeDetectorRef, Directive, ElementRef, Input } from '@angular/core';\n// Vendor\nimport { from, Observable } from 'rxjs';\n// APP\nimport { Helpers } from 'novo-elements/utils';\n// import { NovoControlConfig } from 'novo-elements/elements/form'; // actual type of the config property on this is any\n\n/**\n * @description This is the actual list of matches that gets injected into the DOM. It's also the piece that can be\n * overwritten if custom list options are needed.\n */\n@Directive()\nexport class BasePickerResults {\n _term: string = '';\n selected: Array<any> = [];\n hasError: boolean = false;\n isLoading: boolean = false;\n isStatic: boolean = true;\n _config: any;\n activeMatch: any;\n parent: any;\n element: ElementRef;\n ref: ChangeDetectorRef;\n page: number = 0;\n lastPage: boolean = false;\n autoSelectFirstOption: boolean = true;\n overlay: OverlayRef;\n optionsFunctionHasChanged: boolean = false;\n private selectingMatches: boolean = false;\n private scrollHandler: any;\n _matches: Array<any> = [];\n customTextValue: any = null;\n\n @Input()\n set matches(m: Array<any>) {\n this._matches = m;\n }\n\n get matches() {\n return this.customTextValue ? [...this._matches, this.customTextValue] : this._matches;\n }\n\n constructor(element: ElementRef, ref: ChangeDetectorRef) {\n this.element = element;\n this.ref = ref;\n this.scrollHandler = this.onScrollDown.bind(this);\n }\n\n cleanUp(): void {\n const element: Element = this.getListElement();\n if (element && element.hasAttribute('scrollListener')) {\n element.removeAttribute('scrollListener');\n element.removeEventListener('scroll', this.scrollHandler);\n }\n }\n\n onScrollDown(event: WheelEvent) {\n const element: any = event.target;\n if (element) {\n const offset = element.offsetHeight + element.scrollTop;\n const bottom = element.scrollHeight - 300;\n if (offset >= bottom) {\n event.stopPropagation();\n if (!this.lastPage && !this.isLoading) {\n this.processSearch();\n }\n }\n }\n }\n\n @Input()\n set term(value) {\n if (this.shouldSearch(value)) {\n this._term = value;\n this.page = 0;\n this.optionsFunctionHasChanged = false;\n this.matches = [];\n this.processSearch(true);\n } else {\n this.addScrollListener();\n }\n }\n\n get term() {\n return this._term;\n }\n\n set config(value: any) {\n if (this.config && this.config.options !== value.options) {\n this.optionsFunctionHasChanged = true; // reset page so that new options call is used to search\n }\n this._config = value;\n }\n\n get config(): any {\n return this._config;\n }\n\n shouldSearch(value: unknown): boolean {\n const termHasChanged = value !== this._term;\n const optionsNotYetCalled = this.page === 0;\n\n return termHasChanged || optionsNotYetCalled || this.optionsFunctionHasChanged;\n }\n\n addScrollListener(): void {\n if (this.config.enableInfiniteScroll) {\n const element: Element = this.getListElement();\n if (element && !element.hasAttribute('scrollListener')) {\n element.setAttribute('scrollListener', 'true');\n element.addEventListener('scroll', this.scrollHandler);\n }\n }\n }\n\n processSearch(shouldReset?: boolean) {\n this.hasError = false;\n this.isLoading = true;\n this.ref.markForCheck();\n this.search(this.term).subscribe(\n (results: any) => {\n if (shouldReset) {\n this.matches = [];\n }\n if (this.isStatic) {\n this.matches = this.filterData(results);\n } else {\n this.matches = this.matches.concat(results);\n this.lastPage = results && !results.length;\n }\n if (this.matches.length > 0 && this.autoSelectFirstOption && !this.selectingMatches) {\n this.nextActiveMatch();\n }\n this.isLoading = false;\n this.ref.markForCheck();\n setTimeout(() => {\n this.overlay.updatePosition();\n this.addScrollListener();\n }); // @bkimball: This was added for Dylan Schulte, 9.18.2017 4:14PM EST, you're welcome!\n },\n (err) => {\n this.hasError = this.term && this.term.length !== 0;\n this.isLoading = false;\n this.lastPage = true;\n if (this.term && this.term.length !== 0) {\n console.error(err); // tslint:disable-lineno\n }\n this.ref.markForCheck();\n },\n );\n }\n\n search(term, mode?): Observable<any> {\n const options = this.config.options;\n return from(\n new Promise((resolve, reject) => {\n // Check if there is match data\n if (options) {\n // Resolve the data\n if (Array.isArray(options)) {\n this.isStatic = true;\n // Arrays are returned immediately\n resolve(this.structureArray(options));\n } else if (this.shouldCallOptionsFunction(term)) {\n if (\n (options.hasOwnProperty('reject') && options.hasOwnProperty('resolve')) ||\n Object.getPrototypeOf(options).hasOwnProperty('then')\n ) {\n this.isStatic = false;\n // Promises (ES6 or Deferred) are resolved whenever they resolve\n options.then(this.structureArray.bind(this)).then(resolve, reject);\n } else if (typeof options === 'function') {\n this.isStatic = false;\n // Promises (ES6 or Deferred) are resolved whenever they resolve\n options(term, ++this.page)\n .then(this.structureArray.bind(this))\n .then(resolve, reject);\n } else {\n // All other kinds of data are rejected\n reject('The data provided is not an array or a promise');\n throw new Error('The data provided is not an array or a promise');\n }\n } else {\n if (this.config.defaultOptions) {\n this.isStatic = false;\n if (typeof this.config.defaultOptions === 'function') {\n const defaultOptions = this.config.defaultOptions(term, ++this.page);\n if (Object.getPrototypeOf(defaultOptions).hasOwnProperty('then')) {\n defaultOptions.then(this.structureArray.bind(this)).then(resolve, reject);\n } else {\n resolve(this.structureArray(defaultOptions));\n }\n } else {\n resolve(this.structureArray(this.config.defaultOptions));\n }\n } else {\n // No search term gets rejected\n reject('No search term');\n }\n }\n } else {\n // No data gets rejected\n reject('error');\n }\n }),\n );\n }\n\n shouldCallOptionsFunction(term: string): boolean {\n if (this.config && 'minSearchLength' in this.config && Number.isInteger(this.config.minSearchLength)) {\n return typeof term === 'string' && term.length >= this.config.minSearchLength;\n } else {\n return !!(term && term.length);\n }\n }\n\n /**\n * @param collection - the data once getData resolves it\n *\n * @description This function structures an array of nodes into an array of objects with a\n * 'name' field by default.\n */\n structureArray(collection: any): any {\n const dataArray = collection.data ? collection.data : collection;\n if (dataArray && (typeof dataArray[0] === 'string' || typeof dataArray[0] === 'number')) {\n return collection.map((item) => {\n return {\n value: item,\n label: item,\n };\n });\n }\n return dataArray.map((data) => {\n let value = this.config.field ? data[this.config.field] : data.value || data;\n if (this.config.valueFormat) {\n value = Helpers.interpolate(this.config.valueFormat, data);\n }\n const label = this.config.format ? Helpers.interpolate(this.config.format, data) : data.label || String(value);\n return { value, label, data };\n });\n }\n\n /**\n * @param matches - Collection of objects=\n *\n * @description This function loops through the picker options and creates a filtered list of objects that contain\n * the newSearch.\n */\n filterData(matches): Array<any> {\n if (this.term && matches) {\n return matches.filter((match) => {\n return ~String(match.label).toLowerCase().indexOf(this.term.toLowerCase());\n });\n }\n // Show no recent results template\n return matches;\n }\n\n /**\n * @description This function is called when the user presses the enter key to call the selectMatch method.\n */\n selectActiveMatch() {\n this.selectMatch();\n }\n\n /**\n * @description This function sets activeMatch to the match before the current node.\n */\n prevActiveMatch() {\n const index = this.matches.indexOf(this.activeMatch);\n this.activeMatch = this.matches[index - 1 < 0 ? this.matches.length - 1 : index - 1];\n this.scrollToActive();\n this.ref.markForCheck();\n }\n\n /**\n * @description This function sets activeMatch to the match after the current node.\n */\n nextActiveMatch() {\n const index = this.matches.indexOf(this.activeMatch);\n this.activeMatch = this.matches[index + 1 > this.matches.length - 1 ? 0 : index + 1];\n this.scrollToActive();\n this.ref.markForCheck();\n }\n\n getListElement() {\n return this.element.nativeElement;\n }\n\n getChildrenOfListElement() {\n let children = [];\n if (this.getListElement()) {\n children = this.getListElement().children;\n }\n return children;\n }\n\n scrollToActive() {\n const list = this.getListElement();\n const items = this.getChildrenOfListElement();\n const index = this.matches.indexOf(this.activeMatch);\n const item = items[index];\n if (item) {\n list.scrollTop = item.offsetTop;\n }\n }\n\n /**\n * @description\n */\n selectActive(match) {\n this.activeMatch = match;\n }\n\n /**\n * @description\n */\n isActive(match) {\n return this.activeMatch === match;\n }\n\n /**\n * @description\n */\n selectMatch(event?: any, item?: any) {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n const selected = this.activeMatch;\n if (selected && this.parent) {\n this.parent.value = selected;\n this.selectingMatches = true;\n if (this.parent.closeOnSelect) {\n this.parent.hideResults();\n }\n this.selectingMatches = false;\n }\n this.ref.markForCheck();\n return false;\n }\n\n /**\n * @description This function captures the whole query string and replace it with the string that will be used to\n * match.\n */\n escapeRegexp(queryToEscape) {\n // Ex: if the capture is \"a\" the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n }\n\n /**\n * @deprecated use highlight pipe\n */\n highlight(match, query) {\n // Replaces the capture string with a the same string inside of a \"strong\" tag\n return query ? match.replace(new RegExp(this.escapeRegexp(query.trim()), 'gi'), '<strong>$&</strong>') : match;\n }\n\n preselected(match) {\n let selected = this.selected;\n if (this.config && this.config.selected) {\n selected = [...this.selected, ...this.config.selected];\n }\n if (this.config && this.config.preselected) {\n const preselectedFunc: Function = this.config.preselected;\n return (\n selected.findIndex((item) => {\n return preselectedFunc(match, item);\n }) !== -1\n );\n }\n return (\n selected.findIndex((item) => {\n let isPreselected = false;\n if (item && item.value && match && match.value) {\n if (item.value.id && match.value.id) {\n isPreselected = item.value.id === match.value.id;\n } else if (item.value instanceof Object && item.value.hasOwnProperty('value')) {\n isPreselected = item.value.value === match.value;\n } else {\n isPreselected = item.value === match.value;\n }\n }\n return isPreselected;\n }) !== -1\n );\n }\n}\n","// NG2\nimport { ChangeDetectorRef, Component, ElementRef } from '@angular/core';\n// Vendor\nimport { from, Observable } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\n// APP\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n/**\n * @description This is the actual list of matches that gets injected into the DOM.\n */\n@Component({\n selector: 'checklist-picker-results',\n host: {\n class: 'active picker-results',\n },\n template: `\n <novo-loading theme=\"line\" *ngIf=\"isLoading && !matches.length\"></novo-loading>\n <ul *ngIf=\"matches.length > 0\">\n <span *ngFor=\"let section of matches; let i = index\">\n <li class=\"header caption\" *ngIf=\"section.data.length > 0\">{{ section.label || section.type }}</li>\n <li\n *ngFor=\"let match of section.data; let i = index\"\n [ngClass]=\"{ checked: match.checked }\"\n (click)=\"selectMatch($event, match)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n >\n <label>\n <i\n [ngClass]=\"{\n 'bhi-checkbox-empty': !match.checked,\n 'bhi-checkbox-filled': match.checked,\n 'bhi-checkbox-indeterminate': match.indeterminate\n }\"\n ></i>\n {{ match.label }}\n </label>\n </li>\n </span>\n </ul>\n <p class=\"picker-error\" *ngIf=\"hasError\">{{ labels.pickerError }}</p>\n <p class=\"picker-null-results\" *ngIf=\"!isLoading && !matches.length && !hasError && term !== ''\">{{ labels.pickerEmpty }}</p>\n `,\n})\nexport class ChecklistPickerResults extends BasePickerResults {\n filteredMatches: any;\n\n constructor(element: ElementRef, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n search(): Observable<any> {\n const options = this.config.options;\n // only set this the first time\n return from(\n new Promise((resolve, reject) => {\n // Check if there is match data\n if (options) {\n // Resolve the data\n if (Array.isArray(options)) {\n this.isStatic = true;\n // Arrays are returned immediately\n resolve(options);\n } else {\n // All other kinds of data are rejected\n reject('The data provided is not an array or a promise');\n throw new Error('The data provided is not an array or a promise');\n }\n } else {\n // No data gets rejected\n reject('error');\n }\n }),\n );\n }\n\n /**\n * @param matches - Collection of objects=\n *\n * @description This function loops through the picker options and creates a filtered list of objects that contain\n * the newSearch.\n */\n filterData(matches): any {\n if (this.term && matches) {\n this.filteredMatches = matches.map((section) => {\n const items = section.originalData.filter((match) => {\n return ~String(match.label).toLowerCase().indexOf(this.term.toLowerCase());\n });\n section.data = items;\n return section;\n }, this);\n return this.filteredMatches;\n } else if (this.term === '') {\n matches.forEach((section) => {\n section.data = section.originalData;\n });\n return matches;\n }\n // Show no recent results template\n return matches;\n }\n\n selectMatch(event, item) {\n Helpers.swallowEvent(event);\n if (item.indeterminate) {\n item.indeterminate = false;\n item.checked = true;\n } else {\n item.checked = !item.checked;\n }\n\n const selected = this.activeMatch;\n if (selected) {\n this.parent.value = selected;\n }\n this.ref.markForCheck();\n return false;\n }\n}\n","// NG2\nimport { ChangeDetectorRef, Component, ElementRef, HostBinding } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NovoLabelService } from 'novo-elements/services';\n// Vendor\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n@Component({\n selector: 'distribution-list-picker-results',\n template: `\n <section class=\"picker-loading\" *ngIf=\"isLoading && !matches?.length\">\n <novo-loading theme=\"line\"></novo-loading>\n </section>\n <novo-list direction=\"vertical\" *ngIf=\"matches?.length > 0 && !hasError\">\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match)\"\n >\n <item-header>\n <item-title>\n <span [innerHtml]=\"sanitizeHTML(match.label)\"></span>\n </item-title>\n </item-header>\n <item-content direction=\"horizontal\">\n <p>\n <span class=\"label\">{{ labels.distributionListOwner }}: </span><span>{{ match?.data?.owner?.name }}</span>\n </p>\n <p>\n <span class=\"label\">{{ labels.dateAdded }}: </span\n ><span>{{ labels.formatDateWithFormat(match?.data?.dateAdded, { year: 'numeric', month: 'numeric', day: 'numeric' }) }}</span>\n </p>\n </item-content>\n </novo-list-item>\n <novo-loading theme=\"line\" *ngIf=\"isLoading && matches?.length > 0\"></novo-loading>\n </novo-list>\n `,\n})\nexport class DistributionListPickerResults extends BasePickerResults {\n @HostBinding('class.active')\n active: boolean = true;\n @HostBinding('hidden')\n get isHidden(): boolean {\n return this.matches.length === 0;\n }\n\n constructor(element: ElementRef, private sanitizer: DomSanitizer, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n this.sanitizer = sanitizer;\n }\n\n getListElement(): any {\n return this.element.nativeElement.querySelector('novo-list');\n }\n\n sanitizeHTML(html: any): any {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n@Component({\n selector: 'entity-picker-result',\n template: `\n <novo-list-item *ngIf=\"match.data\" (click)=\"select.next(match.data)\">\n <novo-item-header>\n <novo-item-avatar [icon]=\"getIconForResult(match.data)\"></novo-item-avatar>\n <novo-item-title> <span [innerHtml]=\"getNameForResult(match.data) | highlight:term\"></span> </novo-item-title>\n </novo-item-header>\n <novo-item-content direction=\"horizontal\">\n <!-- COMPANY 1 -->\n <novo-text smaller class=\"company\" *ngIf=\"match.data.companyName || match.data?.clientCorporation?.name\">\n <i class=\"bhi-company company\"></i>\n <span [innerHtml]=\"match.data.companyName || match.data?.clientCorporation?.name | highlight:term\"></span>\n </novo-text>\n <!-- CLIENT CONTACT -->\n <novo-text smaller class=\"contact\" *ngIf=\"match.data?.clientContact?.firstName\">\n <i class=\"bhi-person contact person\"></i>\n <span [innerHtml]=\"match.data.clientContact.firstName + ' ' + match.data.clientContact.lastName | highlight:term\"></span>\n </novo-text>\n <!-- CANDIDATE -->\n <novo-text smaller class=\"candidate\" *ngIf=\"match.data.candidate && match.data.searchEntity === 'Placement'\">\n <i class=\"bhi-candidate candidate\"></i>\n <span [innerHtml]=\"match.data.candidate.firstName + ' ' + match.data.candidate.lastName | highlight:term\"></span>\n </novo-text>\n <!-- START & END DATE -->\n <novo-text smaller class=\"start-date\" *ngIf=\"match.data.dateBegin && match.data.searchEntity === 'Placement'\">\n <i class=\"bhi-calendar\"></i>\n <span [innerHtml]=\"renderTimestamp(match.data.dateBegin) + ' - ' + renderTimestamp(match.data.dateEnd)\"></span>\n </novo-text>\n <!-- START Date -->\n <novo-text smaller class=\"start-date\" *ngIf=\"match.data.startTime && match.data.searchEntity === 'JobShift'\">\n <i class=\"bhi-calendar\"></i>\n <span [innerHtml]=\"renderTimestamp(match.data.startTime)\"></span>\n </novo-text>\n <!-- START & END TIME -->\n <novo-text smaller class=\"start-time\" *ngIf=\"match.data.startTime && match.data.searchEntity === 'JobShift'\">\n <i class=\"bhi-clock\"></i>\n <span [innerHtml]=\"renderTimeNoOffset(match.data.startTime) + ' - ' + renderTimeNoOffset(match.data.endTime)\"></span>\n </novo-text>\n <!-- JOBORDER -->\n <novo-text smaller class=\"job\" *ngIf=\"match.data.jobOrder && match.data.searchEntity === 'JobShift'\">\n <i class=\"bhi-job job\"></i>\n <span [innerHtml]=\"match.data.jobOrder.title | highlight:term\"></span>\n </novo-text>\n <!-- OPENINGS -->\n <novo-text smaller class=\"openings\" *ngIf=\"match.data.openings && match.data.searchEntity === 'JobShift'\">\n <i class=\"bhi-candidate\"></i>\n <span>{{ match.data.numAssigned }} / {{ match.data.openings }}</span>\n </novo-text>\n <!-- EMAIL -->\n <novo-text smaller class=\"email\" *ngIf=\"match.data.email\">\n <i class=\"bhi-email\"></i> <span [innerHtml]=\"match.data.email | highlight:term\"></span>\n </novo-text>\n <!-- PHONE -->\n <novo-text smaller class=\"phone\" *ngIf=\"match.data.phone\">\n <i class=\"bhi-phone\"></i> <span [innerHtml]=\"match.data.phone | highlight:term\"></span>\n </novo-text>\n <!-- ADDRESS -->\n <novo-text smaller class=\"location\" *ngIf=\"match.data.address && (match.data.address.city || match.data.address.state)\">\n <i class=\"bhi-location\"></i> <span *ngIf=\"match.data.address.city\" [innerHtml]=\"highlight(match.data.address.city, term)\"></span>\n <span *ngIf=\"match.data.address.city && match.data.address.state\">, </span>\n <span *ngIf=\"match.data.address.state\" [innerHtml]=\"match.data.address.state | highlight:term\"></span>\n </novo-text>\n <!-- STATUS -->\n <novo-text smaller class=\"status\" *ngIf=\"match.data.status\">\n <i class=\"bhi-info\"></i> <span [innerHtml]=\"match.data.status | highlight:term\"></span>\n </novo-text>\n <!-- OWNER -->\n <novo-text smaller class=\"owner\" *ngIf=\"match.data.owner && match.data.owner.name && match.data.searchEntity === 'Candidate'\">\n <i class=\"bhi-person\"></i> <span [innerHtml]=\"match.data.owner.name | highlight:term\"></span>\n </novo-text>\n <!-- PRIMARY DEPARTMENT -->\n <novo-text\n smaller\n class=\"primary-department\"\n *ngIf=\"match.data.primaryDepartment && match.data.primaryDepartment.name && match.data.searchEntity === 'CorporateUser'\"\n >\n <i class=\"bhi-department\"></i> <span [innerHtml]=\"match.data.primaryDepartment.name | highlight:term\"></span>\n </novo-text>\n <!-- OCCUPATION -->\n <novo-text smaller class=\"occupation\" *ngIf=\"match.data.occupation && match.data.searchEntity === 'CorporateUser'\">\n <i class=\"bhi-occupation\"></i> <span [innerHtml]=\"match.data.occupation | highlight:term\"></span>\n </novo-text>\n </novo-item-content>\n </novo-list-item>\n `,\n styleUrls: ['../picker-results/PickerResult.scss'],\n})\nexport class EntityPickerResult {\n @Input() match: any;\n @Input() term: any;\n @Output() select: EventEmitter<any> = new EventEmitter();\n\n constructor(public labels: NovoLabelService) {}\n\n /**\n * @description This function captures the whole query string and replace it with the string that will be used to\n * match.\n */\n escapeRegexp(queryToEscape) {\n // Ex: if the capture is \"a\" the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n }\n\n /**\n * @deprecated use highlight pipe\n */\n highlight(match, query) {\n // Replaces the capture string with a the same string inside of a \"strong\" tag\n return query && match ? match.replace(new RegExp(this.escapeRegexp(query.trim()), 'gi'), '<strong>$&</strong>') : match;\n }\n\n getIconForResult(result?: any): string {\n if (result) {\n switch (result.searchEntity) {\n case 'ClientContact':\n return 'person contact';\n case 'ClientCorporation':\n return 'company';\n case 'Opportunity':\n return 'opportunity';\n case 'Candidate':\n return 'candidate';\n case 'Lead':\n return 'lead';\n case 'JobOrder':\n return 'job';\n case 'Placement':\n return 'star placement';\n case 'CorporateUser':\n return 'user';\n case 'CorporationDepartment':\n return 'department';\n case 'JobShift':\n return 'timetable contract';\n default:\n return '';\n }\n }\n return '';\n }\n\n renderTimestamp(date?: any) {\n let timestamp = '';\n if (date) {\n timestamp = this.labels.formatDateWithFormat(date, { year: 'numeric', month: 'numeric', day: 'numeric' });\n }\n return timestamp;\n }\n\n renderTime(dateStr?: string) {\n let timestamp = '';\n if (dateStr) {\n timestamp = this.labels.formatTime(new Date(dateStr));\n }\n return timestamp;\n }\n\n renderTimeNoOffset(dateStr?: string) {\n let timestamp = '';\n if (dateStr) {\n dateStr = dateStr.slice(0, 19);\n timestamp = this.labels.formatTime(dateStr);\n }\n return timestamp;\n }\n\n getNameForResult(result?: any) {\n if (result) {\n switch (result.searchEntity) {\n case 'Lead':\n case 'CorporateUser':\n case 'ClientContact':\n case 'Candidate':\n case 'Person':\n if ('firstName' in result) {\n return `${result.firstName} ${result.lastName}`.trim();\n }\n return `${result.name || ''}`.trim();\n case 'ClientCorporation':\n return `${result.name || ''}`.trim();\n case 'Opportunity':\n case 'JobOrder':\n case 'BillingProfile':\n case 'InvoiceTerm':\n return `${result.id} | ${result.title || ''}`.trim();\n case 'Placement':\n let label = `${result.id}`;\n if (result.candidate || result.jobOrder) {\n if (result.candidate && result.jobOrder) {\n label = `${label} | ${result.candidate.firstName} ${result.candidate.lastName} - ${result.jobOrder.title}`.trim();\n } else if (result.jobOrder) {\n label = `${label} | ${result.jobOrder.title}`.trim();\n } else {\n label = `${label} | ${result.candidate.firstName} ${result.candidate.lastName}`.trim();\n }\n }\n return label;\n case 'JobShift':\n return `${result.jobOrder?.title} @ ${result.jobOrder?.clientCorporation?.name || ''}`.trim();\n default:\n return `${result.name || result.label || ''}`.trim();\n }\n }\n return '';\n }\n}\n\n@Component({\n selector: 'entity-picker-results',\n template: `\n <novo-list *ngIf=\"matches.length > 0\" direction=\"vertical\">\n <entity-picker-result\n *ngFor=\"let match of matches\"\n [match]=\"match\"\n [term]=\"term\"\n [ngClass]=\"{ active: match === activeMatch }\"\n (click)=\"selectMatch($event, match)\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match)\"\n >\n </entity-picker-result>\n <novo-loading theme=\"line\" *ngIf=\"isLoading && matches.length > 0\"></novo-loading>\n </novo-list>\n <div class=\"picker-error\" *ngIf=\"hasError\">{{ labels.pickerError }}</div>\n <div class=\"picker-null-results\" *ngIf=\"hasNonErrorMessage && term !== ''\">{{ labels.pickerEmpty }}</div>\n <div class=\"picker-null-results\" *ngIf=\"hasNonErrorMessage && term === ''\">{{ labels.pickerTextFieldEmpty }}</div>\n `,\n styleUrls: ['../picker-results/PickerResults.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'novo-entity-picker-results',\n },\n})\nexport class EntityPickerResults extends BasePickerResults {\n @Output() select: EventEmitter<any> = new EventEmitter();\n\n constructor(element: ElementRef, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n get hasNonErrorMessage() {\n return !this.isLoading && !this.matches.length && !this.hasError;\n }\n\n getListElement() {\n return this.element.nativeElement.querySelector('novo-list');\n }\n\n selectMatch(event?: any, item?: any) {\n this.select.next(item);\n return super.selectMatch(event, item);\n }\n}\n","import { ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { NovoListElement } from 'novo-elements/elements/list';\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n@Component({\n selector: 'grouped-multi-picker-results',\n template: `\n <div class=\"grouped-multi-picker-groups\">\n <novo-list direction=\"vertical\">\n <novo-list-item\n *ngIf=\"config.displayAll\"\n (click)=\"selectCategory({ value: 'all', label: 'all' })\"\n [class.active]=\"selectedCategory?.value === 'all'\"\n data-automation-id=\"display-all\"\n [class.disabled]=\"isLoading\"\n >\n <item-content>\n <span data-automation-id=\"label\">{{ labels.all }}</span>\n </item-content>\n <item-end>\n <i class=\"bhi-next\"></i>\n </item-end>\n </novo-list-item>\n <novo-list-item\n *ngFor=\"let category of categories\"\n (click)=\"selectCategory(category)\"\n [class.active]=\"selectedCategory?.value === category.value\"\n [attr.data-automation-id]=\"category.label\"\n [class.disabled]=\"isLoading\"\n >\n <item-content>\n <i *ngIf=\"category.iconClass\" [class]=\"category.iconClass\"></i>\n <span data-automation-id=\"label\">{{ category.label }}</span>\n </item-content>\n <item-end>\n <i class=\"bhi-next\"></i>\n </item-end>\n </novo-list-item>\n </novo-list>\n <footer\n class=\"grouped-multi-picker-groups-footer\"\n *ngIf=\"customFilterEnabled\"\n data-automation-id=\"footer\"\n [class.disabled]=\"isLoading\"\n >\n <novo-switch [(ngModel)]=\"customFilterValue\" (onChange)=\"fireCustomFilter($event)\" data-automation-id=\"switch\"></novo-switch>\n <label data-automation-id=\"label\">{{ customFilterLabel }}</label>\n </footer>\n </div>\n <div class=\"grouped-multi-picker-matches\">\n <div class=\"grouped-multi-picker-input-container\" [hidden]=\"!selectedCategory\" data-automation-id=\"input-container\">\n <input autofocus #input [(ngModel)]=\"searchTerm\" [disabled]=\"isLoading\" data-automation-id=\"input\" [placeholder]=\"placeholder\" />\n <i class=\"bhi-search\" *ngIf=\"!searchTerm\" [class.disabled]=\"isLoading\" data-automation-id=\"seach-icon\"></i>\n <i\n class=\"bhi-times\"\n *ngIf=\"searchTerm\"\n (click)=\"clearSearchTerm($event)\"\n [class.disabled]=\"isLoading\"\n data-automation-id=\"remove-icon\"\n ></i>\n </div>\n <div class=\"grouped-multi-picker-list-container\">\n <novo-list direction=\"vertical\" #list>\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match) || isLoading\"\n [attr.data-automation-id]=\"match.label\"\n >\n <item-content>\n <span>{{ match.label }}</span>\n </item-content>\n </novo-list-item>\n </novo-list>\n <div\n class=\"grouped-multi-picker-no-results\"\n *ngIf=\"matches.length === 0 && !isLoading && selectedCategory\"\n data-automation-id=\"empty-message\"\n >\n {{ labels.groupedMultiPickerEmpty }}\n </div>\n <div\n class=\"grouped-multi-picker-no-category\"\n *ngIf=\"matches.length === 0 && !isLoading && !selectedCategory\"\n data-automation-id=\"select-category-message\"\n >\n {{ labels.groupedMultiPickerSelectCategory }}\n </div>\n <div class=\"grouped-multi-picker-loading\" *ngIf=\"isLoading\" data-automation-id=\"loading-message\">\n <novo-loading theme=\"line\"></novo-loading>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./GroupedMultiPickerResults.scss'],\n})\nexport class GroupedMultiPickerResults extends BasePickerResults implements OnInit, OnDestroy {\n @ViewChild('input', { static: true })\n private inputElement: ElementRef;\n @ViewChild('list')\n private listElement: NovoListElement;\n\n public selectedCategory: { value: string; label: string };\n public searchTerm: string;\n public customFilterEnabled: boolean = false;\n public customFilterLabel: string;\n public placeholder: string = '';\n\n private keyboardSubscription: Subscription;\n private internalMap: Map<string, { value: string; label: string; items: { value: string; label: string }[] }> = new Map<\n string,\n { value: string; label: string; items: { value: string; label: string }[] }\n >();\n public customFilterValue: any;\n\n set term(value) {\n // Display all only will work for static categories\n if (this.config.displayAll && this.config.getItemsForCategoryAsync) {\n throw new Error(\n '[GroupedMultiPickerResults] - you can only have `displayAll` with a static `categoryMap`. Not available with `getItemsForCategoryAsync`',\n );\n }\n // Custom filter\n if (this.config.customFilter) {\n this.customFilterEnabled = true;\n this.customFilterLabel = this.config.customFilter.label;\n this.customFilterValue = !!this.config.customFilter.defaultFilterValue;\n this.ref.markForCheck();\n if (!this.customFilterLabel || !this.config.customFilter.matchFunction) {\n throw new Error('[GroupedMultiPickerResults] - custom filter/matchFunction set no label was provided!');\n }\n } else {\n this.customFilterEnabled = false;\n }\n // Configure ALL\n if (this.config.displayAll && !this.selectedCategory) {\n this.setAllCategory();\n }\n // Placeholder\n if (this.config.placeholder) {\n this.placeholder = this.config.placeholder;\n }\n // Focus\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n });\n }\n\n get categories() {\n if (this.config.categories || this.config.categoryMap) {\n return (\n this.config.categories ||\n Array.from(this.config.categoryMap.values()).filter((category: { value: string }) => {\n return category.value !== 'all';\n })\n );\n }\n return [];\n }\n\n constructor(element: ElementRef, private renderer: Renderer2, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n public ngOnInit() {\n // Subscribe to keyboard events and debounce\n this.keyboardSubscription = fromEvent(this.inputElement.nativeElement, 'keyup')\n .pipe(debounceTime(350), distinctUntilChanged())\n .subscribe((event: KeyboardEvent) => {\n this.searchTerm = (event.target as HTMLInputElement).value;\n this.matches = this.filterData();\n this.ref.markForCheck();\n });\n }\n\n public ngOnDestroy() {\n // Cleanup\n this.keyboardSubscription.unsubscribe();\n }\n\n public setAllCategory() {\n // If we have display all, set the all categories up\n if (this.config.displayAll) {\n this.selectedCategory = { value: 'all', label: 'all' };\n const allItems = [];\n Array.from(this.config.categoryMap.values())\n .filter((category: { value: string }) => {\n return category.value !== 'all';\n })\n .forEach((v: { value: string; label: string; items: any[] }) => allItems.push(...v.items));\n this.matches = this.filter(allItems);\n this.config.categoryMap.set('all', { value: 'all', label: 'All', items: allItems });\n this.ref.markForCheck();\n }\n }\n\n public selectCategory(category: { value: string; label: string }): void {\n // Scroll to top\n this.renderer.setProperty(this.listElement.element.nativeElement, 'scrollTop', 0);\n // Set focus\n this.inputElement.nativeElement.focus();\n // Find new items\n const key: string = category.value;\n this.selectedCategory = category;\n // Clear\n this.matches = [];\n this.ref.markForCheck();\n // New matches\n this.getNewMatches(category, key);\n }\n\n public clearSearchTerm(event: MouseEvent) {\n Helpers.swallowEvent(event);\n this.searchTerm = '';\n this.selectCategory({ value: this.selectedCategory.value, label: this.selectedCategory.label });\n this.ref.markForCheck();\n }\n\n public selectMatch(event?: MouseEvent, item?: { value: string; label: string }): boolean {\n // Set focus\n this.inputElement.nativeElement.focus();\n return super.selectMatch(event);\n }\n\n public fireCustomFilter(value: boolean) {\n this.customFilterValue = value;\n // Clear cache map\n this.internalMap.clear();\n // Only fire if we have a selected category\n if (this.selectCategory) {\n // Find new items\n const key: string = this.selectedCategory.value;\n // Get new matches\n this.getNewMatches(this.selectedCategory, key);\n this.ref.markForCheck();\n }\n // Focus\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n });\n }\n\n filterData(): { value: string; label: string }[] {\n if (this.selectedCategory) {\n if (this.config.categoryMap) {\n return this.filter(this.config.categoryMap.get(this.selectedCategory.value).items);\n } else {\n return this.filter(this.internalMap.get(this.selectedCategory.value).items);\n }\n }\n return [];\n }\n\n private getNewMatches(category: { value: string; label: string }, key: string): void {\n // Get new matches\n if (this.config.categoryMap) {\n this.matches = this.filter(this.config.categoryMap.get(key).items);\n this.ref.markForCheck();\n } else {\n if (!this.config.getItemsForCategoryAsync) {\n throw new Error(\n 'The \"config\" for the Chips must include a function \"getItemsForCategoryAsync(categoryKey: string)\" to retrieve the items by category. Or if you have static data provide a \"categoryMap\"',\n );\n }\n if (!this.internalMap.get(key)) {\n this.isLoading = true;\n this.config.getItemsForCategoryAsync(key, this.customFilterValue).then((items: { value: string; label: string }[]) => {\n this.internalMap.set(key, { value: category.value, label: category.label, items });\n this.matches = this.filter(items, true);\n this.isLoading = false;\n this.ref.markForCheck();\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n });\n });\n } else {\n this.matches = this.filter(this.internalMap.get(key).items);\n this.ref.markForCheck();\n }\n }\n }\n\n private filter(\n array: { value: string; label: string; filterValue?: any }[],\n ignoreCustomFilter: boolean = false,\n ): { value: string; label: string }[] {\n let matches: { value: string; label: string; filterValue?: any }[] = array;\n if (this.searchTerm && this.searchTerm.length !== 0 && this.selectedCategory) {\n matches = matches.filter((match) => {\n const searchTerm = this.searchTerm.toLowerCase();\n return match.label.toLowerCase().indexOf(searchTerm) > -1 || match.value.toLowerCase().indexOf(searchTerm) > -1;\n });\n }\n if (this.customFilterEnabled && this.config.customFilter.matchFunction && !ignoreCustomFilter) {\n matches = matches.filter((match) => this.config.customFilter.matchFunction(match, this.customFilterValue));\n }\n return matches;\n }\n}\n","import { ChangeDetectorRef, Component, ElementRef, OnDestroy, Renderer2, ViewChild } from '@angular/core';\nimport { fromEvent, Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { NovoListElement } from 'novo-elements/elements/list';\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\nexport interface IMixedMultiPickerOption {\n value: string;\n label: string;\n secondaryOptions?: {\n value: string;\n label: string;\n filterValue?: any;\n }[];\n getSecondaryOptionsAsync?(): Promise<{ value: string; label: string }[]>;\n // TODO: Refactor to prevent the need for a behaviorSubject to allow primaryOption's secondaryOptions to be cleared\n // Currently secondaryOptions cannot be cleared via FieldInteraction API and must use a behavior subject - this includes modifyPickerConfig\n clearSecondaryOptions?: Subject<any>;\n showSearchOnSecondaryOptions?: boolean;\n}\n\n@Component({\n selector: 'mixed-multi-picker-results',\n template: ` <div class=\"mixed-multi-picker-groups\">\n <novo-list direction=\"vertical\">\n <novo-list-item\n *ngFor=\"let option of options\"\n (click)=\"selectPrimaryOption(option, $event)\"\n [class.active]=\"selectedPrimaryOption?.value === option.value\"\n [attr.data-automation-id]=\"option.label\"\n [class.disabled]=\"isLoading\"\n >\n <item-content>\n <i *ngIf=\"option.iconClass\" [class]=\"option.iconClass\"></i>\n <span data-automation-id=\"label\">{{ option.label }}</span>\n </item-content>\n <item-end *ngIf=\"optionHasSecondaryOptions(option)\">\n <i class=\"bhi-next\"></i>\n </item-end>\n </novo-list-item>\n </novo-list>\n </div>\n <div class=\"mixed-multi-picker-matches\" [hidden]=\"!optionHasSecondaryOptions(selectedPrimaryOption)\">\n <div\n class=\"mixed-multi-picker-input-container\"\n [hidden]=\"!shouldShowSearchBox(selectedPrimaryOption)\"\n data-automation-id=\"input-container\"\n >\n <input autofocus #input [(ngModel)]=\"searchTerm\" [disabled]=\"isLoading\" data-automation-id=\"input\" [placeholder]=\"placeholder\" />\n <i class=\"bhi-search\" *ngIf=\"!searchTerm\" [class.disabled]=\"isLoading\" data-automation-id=\"seach-icon\"></i>\n <i\n class=\"bhi-times\"\n *ngIf=\"searchTerm\"\n (click)=\"clearSearchTerm($event)\"\n [class.disabled]=\"isLoading\"\n data-automation-id=\"remove-icon\"\n ></i>\n </div>\n <div class=\"mixed-multi-picker-list-container\">\n <novo-list direction=\"vertical\" #list>\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match) || isLoading\"\n [attr.data-automation-id]=\"match.label\"\n >\n <item-content>\n <span>{{ match.label }}</span>\n </item-content>\n </novo-list-item>\n </novo-list>\n <div\n class=\"mixed-multi-picker-no-results\"\n *ngIf=\"matches.length === 0 && !isLoading && selectedPrimaryOption\"\n data-automation-id=\"empty-message\"\n >\n {{ config.emptyOptionsLabel ? config.emptyOptionsLabel : labels.groupedMultiPickerEmpty }}\n </div>\n <div class=\"mixed-multi-picker-loading\" *ngIf=\"isLoading\" data-automation-id=\"loading-message\">\n <novo-loading theme=\"line\"></novo-loading>\n </div>\n </div>\n </div>`,\n styleUrls: ['./MixedMultiPickerResults.scss'],\n})\nexport class MixedMultiPickerResults extends BasePickerResults implements OnDestroy {\n @ViewChild('input', { static: true })\n private inputElement: ElementRef;\n @ViewChild('list')\n private listElement: NovoListElement;\n\n public selectedPrimaryOption: IMixedMultiPickerOption;\n public searchTerm: string;\n public placeholder: string = '';\n public emptyOptionsLabel: string = '';\n\n private keyboardSubscription: Subscription;\n\n private internalMap: Map<string, { value: string; label: string; items: { value: string; label: string }[] }> = new Map<\n string,\n { value: string; label: string; items: { value: string; label: string }[] }\n >();\n\n set term(value) {\n if (this.config.placeholder) {\n this.placeholder = this.config.placeholder;\n }\n // Focus\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n });\n }\n\n get options() {\n return this.config.options || [];\n }\n\n constructor(element: ElementRef, private renderer: Renderer2, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n public ngOnDestroy() {\n // Cleanup\n if (this.keyboardSubscription) {\n this.keyboardSubscription.unsubscribe();\n }\n if (this.config.options) {\n this.config.options.forEach((option) => {\n if (option.clearSecondaryOptions) {\n option.clearSecondaryOptions.unsubscribe();\n }\n });\n }\n }\n\n public selectPrimaryOption(primaryOption: IMixedMultiPickerOption, event?: MouseEvent): void {\n if (this.keyboardSubscription) {\n this.keyboardSubscription.unsubscribe();\n }\n // Scroll to top\n this.renderer.setProperty(this.listElement.element.nativeElement, 'scrollTop', 0);\n // Set focus\n this.inputElement.nativeElement.focus();\n // Find new items\n const key: string = primaryOption.value;\n this.selectedPrimaryOption = primaryOption;\n // Clear\n this.matches = [];\n this.ref.markForCheck();\n // New matches\n if (this.optionHasSecondaryOptions(primaryOption)) {\n // Subscribe to keyboard events and debounce\n this.keyboardSubscription = fromEvent(this.inputElement.nativeElement, 'keyup')\n .pipe(debounceTime(350), distinctUntilChanged())\n .subscribe((keyEvent: KeyboardEvent) => {\n this.searchTerm = (keyEvent.target as HTMLInputElement).value;\n this.matches = this.filterData();\n this.ref.markForCheck();\n });\n this.getNewMatches(primaryOption);\n } else {\n this.selectActive(primaryOption);\n this.selectMatch(event);\n }\n }\n\n public selectMatch(event?: MouseEvent): boolean {\n // Set focus\n this.inputElement.nativeElement.focus();\n return super.selectMatch(event);\n }\n\n public clearSearchTerm(event: MouseEvent) {\n Helpers.swallowEvent(event);\n this.searchTerm = '';\n this.selectPrimaryOption({ value: this.selectedPrimaryOption.value, label: this.selectedPrimaryOption.label });\n this.ref.markForCheck();\n }\n\n public optionHasSecondaryOptions(primaryOption: IMixedMultiPickerOption) {\n return !!(primaryOption && (primaryOption.secondaryOptions || primaryOption.getSecondaryOptionsAsync));\n }\n\n public shouldShowSearchBox(primaryOption: IMixedMultiPickerOption) {\n return !!(primaryOption && primaryOption.showSearchOnSecondaryOptions);\n }\n\n public clearPrimaryOption(primaryOption: IMixedMultiPickerOption) {\n if (this.internalMap.get(primaryOption.value)) {\n if (primaryOption.value === this.selectedPrimaryOption?.value) {\n this.activeMatch = null;\n this.matches = [];\n this.selectedPrimaryOption = null;\n }\n this.internalMap.delete(primaryOption.value);\n this.ref.markForCheck();\n }\n }\n\n filterData(): { value: string; label: string }[] {\n if (this.selectedPrimaryOption) {\n if (this.selectedPrimaryOption.secondaryOptions) {\n return this.filter(this.selectedPrimaryOption.secondaryOptions);\n } else {\n return this.filter(this.internalMap.get(this.selectedPrimaryOption.value).items);\n }\n }\n return [];\n }\n\n private filter(array: { value: string; label: string; filterValue?: any }[]): { value: string; label: string }[] {\n let matches: { value: string; label: string; filterValue?: any }[] = array;\n if (this.searchTerm && this.searchTerm.length !== 0 && this.selectedPrimaryOption) {\n matches = matches.filter((match) => {\n const searchTerm = this.searchTerm.toLowerCase();\n return match.label.toLowerCase().indexOf(searchTerm) > -1 || match.value.toLowerCase().indexOf(searchTerm) > -1;\n });\n }\n return matches;\n }\n\n private getNewMatches(primaryOption: IMixedMultiPickerOption): void {\n // Get new matches\n if (primaryOption.secondaryOptions) {\n this.matches = this.filter(primaryOption.secondaryOptions);\n this.ref.markForCheck();\n } else {\n if (!primaryOption.getSecondaryOptionsAsync) {\n throw new Error('An option needs to have either an array of secondaryOptions or a function getSecondaryOptionsAsync');\n }\n if (!this.internalMap.get(primaryOption.value)) {\n this.isLoading = true;\n primaryOption.getSecondaryOptionsAsync().then((items: { value: string; label: string }[]) => {\n this.internalMap.set(primaryOption.value, { value: primaryOption.value, label: primaryOption.label, items });\n this.matches = this.filter(items);\n this.isLoading = false;\n this.ref.markForCheck();\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n });\n });\n if (primaryOption.clearSecondaryOptions) {\n primaryOption.clearSecondaryOptions.subscribe(() => {\n this.clearPrimaryOption(primaryOption);\n });\n }\n } else {\n this.matches = this.filter(this.internalMap.get(primaryOption.value).items);\n this.ref.markForCheck();\n }\n }\n }\n}\n","// NG2\nimport { ChangeDetectorRef, Component, ElementRef, ViewEncapsulation } from '@angular/core';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n@Component({\n selector: 'picker-results',\n host: {\n class: 'active',\n },\n template: `\n <novo-list *ngIf=\"matches.length > 0\" direction=\"vertical\">\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match)\"\n data-automation-id=\"picker-result-list-item\"\n >\n <item-content> <span [innerHtml]=\"match.label | highlight:term\"></span> </item-content>\n </novo-list-item>\n <novo-loading *ngIf=\"isLoading && matches.length > 0\" theme=\"line\"></novo-loading>\n </novo-list>\n <div class=\"picker-loader\" *ngIf=\"isLoading && matches.length === 0\"><novo-loading theme=\"line\"></novo-loading></div>\n <p class=\"picker-error\" *ngIf=\"hasError\">{{ labels.pickerError }}</p>\n <p class=\"picker-null-results\" *ngIf=\"hasNonErrorMessage\">{{ getEmptyMessage() }}</p>\n `,\n styleUrls: ['./PickerResults.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PickerResults extends BasePickerResults {\n constructor(element: ElementRef, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n get hasNonErrorMessage() {\n return !this.isLoading && !this.matches.length && !this.hasError;\n }\n\n getEmptyMessage() {\n if (this.shouldShowMessageForZeroLengthSearch()) {\n // this property comes from Field Interactions\n return this.config.emptyPickerMessage;\n } else {\n return this.term === '' ? this.labels.pickerTextFieldEmpty : this.labels.pickerEmpty;\n }\n }\n\n shouldShowMessageForZeroLengthSearch() {\n return this.config && this.config.minSearchLength === 0 && this.term === '' && this.config.emptyPickerMessage;\n }\n\n getListElement() {\n return this.element.nativeElement.querySelector('novo-list');\n }\n}\n","// NG2\nimport { ChangeDetectorRef, Component, ElementRef, HostBinding } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\n// App\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n@Component({\n selector: 'skill-specialty-picker-results',\n template: `\n <section class=\"picker-loading\" *ngIf=\"isLoading && !matches?.length\"><novo-loading theme=\"line\"></novo-loading></section>\n <novo-list *ngIf=\"matches.length > 0\" direction=\"vertical\">\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match)\"\n >\n <item-content>\n <h6><span [innerHtml]=\"match.label | highlight:term\"></span></h6>\n <div class=\"category\">\n <i class=\"bhi-category-tags\"></i\n ><span [innerHtml]=\"match.data.categories || match.data.parentCategory.name | highlight:term\"></span>\n </div>\n </item-content>\n </novo-list-item>\n <novo-list-item *ngIf=\"limitedTo\"\n ><div>{{ labels.showingXofXResults(limit, total) }}</div></novo-list-item\n >\n <novo-loading theme=\"line\" *ngIf=\"isLoading && matches.length > 0\"></novo-loading>\n </novo-list>\n <p class=\"picker-error\" *ngIf=\"hasError\">{{ labels.pickerError }}</p>\n <p class=\"picker-null\" *ngIf=\"!isLoading && !matches.length && !hasError\">{{ labels.pickerEmpty }}</p>\n `,\n styleUrls: ['./SkillsSpecialtyPickerResults.scss'],\n})\nexport class SkillsSpecialtyPickerResults extends BasePickerResults {\n @HostBinding('class.active')\n active: boolean = true;\n limitedTo: boolean = false;\n limit: number = 200;\n total: number;\n\n constructor(public element: ElementRef, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n getListElement(): any {\n return this.element.nativeElement.querySelector('novo-list');\n }\n\n /**\n * @name structureArray\n * @param collection - the data once getData resolves it\n *\n * @description This function structures an array of nodes into an array of objects with a\n * 'name' field by default.\n */\n structureArray(collection: any): any {\n let data = collection;\n if (collection.hasOwnProperty('data')) {\n this.limitedTo = collection.limitedTo200;\n this.total = collection.total;\n data = collection.data;\n } else if (data.length > this.limit) {\n this.limitedTo = true;\n this.total = data.length;\n data = data.slice(0, this.limit);\n }\n return super.structureArray(data);\n }\n}\n","// NG2\nimport { ChangeDetectorRef, Component, ElementRef, HostBinding } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NovoLabelService } from 'novo-elements/services';\n// Vendor\nimport {PickerResults} from '../picker-results';\n\n@Component({\n selector: 'workers-comp-codes-picker-results',\n host: {\n class: 'active',\n },\n template: `\n <section class=\"picker-loading\" *ngIf=\"isLoading && !matches?.length\">\n <novo-loading theme=\"line\"></novo-loading>\n </section>\n <novo-list direction=\"vertical\" *ngIf=\"matches?.length > 0 && !hasError\">\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match)\"\n >\n <item-header>\n <item-title>\n <span [innerHtml]=\"sanitizeHTML(match?.data?.compensation?.code, match?.data?.compensation?.name)\"></span>\n </item-title>\n </item-header>\n <item-content direction=\"horizontal\">\n <p>\n <span class=\"label\">{{ labels.state }}: </span><span>{{ match?.data?.compensation?.state }}</span>\n </p>\n <p>\n <span class=\"label\">{{ labels.rate }}: </span><span>{{ labels.formatCurrency(match?.data?.rate) }}</span>\n </p>\n </item-content>\n <item-content direction=\"horizontal\">\n <p>\n <span class=\"label\">{{ labels.startDate }}: </span\n ><span>{{ labels.formatDateWithFormat(match?.data?.startDate, { year: 'numeric', month: 'numeric', day: 'numeric' }) }}</span>\n </p>\n <p>\n <span class=\"label\">{{ labels.endDate }}: </span\n ><span>{{ labels.formatDateWithFormat(match?.data?.endDate, { year: 'numeric', month: 'numeric', day: 'numeric' }) }}</span>\n </p>\n </item-content>\n </novo-list-item>\n <novo-loading theme=\"line\" *ngIf=\"isLoading && matches?.length > 0\"></novo-loading>\n </novo-list>\n <div class=\"picker-loader\" *ngIf=\"isLoading && matches.length === 0\"><novo-loading theme=\"line\"></novo-loading></div>\n <p class=\"picker-error\" *ngIf=\"hasError\">{{ labels.pickerError }}</p>\n <p class=\"picker-null-results\" *ngIf=\"hasNonErrorMessage\">{{ getEmptyMessage() }}</p>\n `,\n})\nexport class WorkersCompCodesPickerResults extends PickerResults {\n\n constructor(element: ElementRef, private sanitizer: DomSanitizer, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, labels, ref);\n }\n\n sanitizeHTML(compCode: string, name: string) {\n return this.sanitizer.bypassSecurityTrustHtml(`${compCode} | ${name}`);\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { ComponentUtils } from 'novo-elements/services';\nimport { Helpers, Key, notify } from 'novo-elements/utils';\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\n// import { NovoControlConfig } from '../form/FormControls';\nimport { PickerResults } from './extras/picker-results/PickerResults';\n\n// Value accessor for the component (supports ngModel)\nconst PICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoPickerElement),\n multi: true,\n};\n\nconst DEFAULT_DEBOUNCE_TIME = 250;\n\n/**\n * @description This class is the directive definition of the Picker. If you add an attribute of `picker` to an input,\n * it will create an instance of the picker which wraps the input in all of the picker HTML elements and functionality.\n * Picker should be added as a two-way bound ngModel instance `[(picker)]=\"\"` in order to have the picker options\n * dynamically populate.\n */\n@Component({\n selector: 'novo-picker',\n providers: [PICKER_VALUE_ACCESSOR],\n template: `\n <i class=\"bhi-more\" *ngIf=\"config?.entityIcon && !_value\"></i>\n <i class=\"bhi-{{ config?.entityIcon }} entity-icon {{ config?.entityIcon }}\" *ngIf=\"config?.entityIcon && _value\"></i>\n <input\n type=\"text\"\n class=\"picker-input\"\n [(ngModel)]=\"term\"\n [class.entity-picker]=\"config?.entityIcon\"\n [class.entity-selected]=\"config?.entityIcon && _value\"\n (ngModelChange)=\"checkTerm($event)\"\n [placeholder]=\"placeholder\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"onFocus($event)\"\n (click)=\"onFocus($event)\"\n (blur)=\"onTouched($event)\"\n [maxlength]=\"maxlength\"\n autocomplete=\"off\"\n #input\n [disabled]=\"disablePickerInput\"\n />\n <i class=\"bhi-search\" *ngIf=\"(!_value || clearValueOnSelect) && !disablePickerInput\"></i>\n <i\n class=\"bhi-times\"\n [class.entity-selected]=\"config?.entityIcon && _value\"\n *ngIf=\"_value && !clearValueOnSelect && !disablePickerInput\"\n (click)=\"clearValue(true)\"\n ></i>\n <novo-overlay-template class=\"picker-results-container\" [parent]=\"element\" [width]=\"width\" [minWidth]=\"minWidth\" position=\"above-below\" (closing)=\"onOverlayClosed()\">\n <span #results></span>\n <ng-content></ng-content>\n </novo-overlay-template>\n `,\n styleUrls: ['./Picker.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NovoPickerElement implements OnInit {\n // Container for the results\n @ViewChild('results', { read: ViewContainerRef, static: true })\n results: ViewContainerRef;\n\n @Input()\n config: any;\n @Input()\n placeholder: string;\n @Input()\n clearValueOnSelect: boolean;\n @Input()\n closeOnSelect: boolean = true;\n @Input()\n selected: Array<any> = [];\n // Deprecated\n @Input()\n appendToBody: boolean = false;\n // Deprecated\n @Input()\n parentScrollSelector: string;\n // Deprecated\n @Input()\n parentScrollAction: string = 'close';\n // Custom class for the dropdown container\n @Input()\n containerClass: string;\n // Side the dropdown will open\n @Input()\n side: string = 'left';\n // Autoselects the first option in the results\n @Input()\n autoSelectFirstOption: boolean = true;\n @Input()\n overrideElement: ElementRef;\n @Input()\n maxlength: number;\n @Input()\n allowCustomValues = false;\n @Input()\n width: string;\n @Input()\n minWidth: string;\n @Input()\n allowTabNavigation: boolean = false;\n\n // Disable from typing into the picker (result template does everything)\n @Input()\n set disablePickerInput(v: boolean) {\n this._disablePickerInput = coerceBooleanProperty(v);\n }\n\n get disablePickerInput() {\n return this._disablePickerInput;\n }\n\n private _disablePickerInput: boolean = false;\n\n // Emitter for selects\n @Output()\n changed: EventEmitter<any> = new EventEmitter();\n @Output()\n select: EventEmitter<any> = new EventEmitter();\n @Output()\n focus: EventEmitter<any> = new EventEmitter();\n @Output()\n blur: EventEmitter<any> = new EventEmitter();\n @Output()\n typing: EventEmitter<any> = new EventEmitter();\n @Output()\n tab: EventEmitter<any> = new EventEmitter();\n\n @ViewChild(NovoOverlayTemplateComponent, { static: true })\n public container: NovoOverlayTemplateComponent;\n @ViewChild('input', { static: true })\n public input: ElementRef;\n\n term: string = '';\n resultsComponent: any;\n popup: ComponentRef<any>;\n _value: any;\n onModelChange: Function = () => {};\n onModelTouched: Function = () => {};\n\n constructor(public element: ElementRef, private componentUtils: ComponentUtils, private ref: ChangeDetectorRef) {}\n\n ngOnInit() {\n if (this.overrideElement) {\n this.element = this.overrideElement;\n }\n if (this.appendToBody) {\n notify(`'appendToBody' has been deprecated. Please remove this attribute.`);\n }\n let debounceTimeInMilliSeconds = Number.isNaN(Number(this.config?.debounceTimeInMilliSeconds)) ? DEFAULT_DEBOUNCE_TIME : Number(this.config?.debounceTimeInMilliSeconds);\n // Custom results template\n this.resultsComponent = this.config.resultsTemplate || PickerResults;\n // Get all distinct key up events from the input and only fire if long enough and distinct\n // let input = this.element.nativeElement.querySelector('input');\n const pasteObserver = fromEvent(this.input.nativeElement, 'paste').pipe(debounceTime(debounceTimeInMilliSeconds), distinctUntilChanged());\n pasteObserver.subscribe(\n (event: ClipboardEvent) => this.onDebouncedKeyup(event),\n (err) => this.hideResults(err),\n );\n const keyboardObserver = fromEvent(this.input.nativeElement, 'keyup').pipe(debounceTime(debounceTimeInMilliSeconds), distinctUntilChanged());\n keyboardObserver.subscribe(\n (event: KeyboardEvent) => this.onDebouncedKeyup(event),\n (err) => this.hideResults(err),\n );\n }\n\n private onDebouncedKeyup(event: KeyboardEvent | ClipboardEvent) {\n if ([Key.Escape, Key.ArrowDown, Key.ArrowUp, Key.Enter, Key.Tab].some((key) => key === (event as KeyboardEvent).key)) {\n return;\n }\n this.show((event.target as any).value);\n }\n\n public openPanel(): void {\n this.container.openPanel();\n }\n\n public closePanel(): void {\n this.container.closePanel();\n }\n\n public get panelOpen(): boolean {\n return this.container && this.container.panelOpen;\n }\n\n private show(term?: string): void {\n this.openPanel();\n // Show the results inside\n this.showResults(term);\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (this.disablePickerInput) {\n Helpers.swallowEvent(event);\n return;\n }\n if (this.panelOpen && !this.disablePickerInput) {\n if (event.key === Key.Escape || (event.key === Key.Tab && !this.allowTabNavigation)) {\n this.hideResults();\n return;\n }\n\n if (event.key === Key.ArrowUp) {\n this.popup.instance.prevActiveMatch();\n this.ref.markForCheck();\n return;\n }\n\n if (event.key === Key.ArrowDown) {\n this.popup.instance.nextActiveMatch();\n this.ref.markForCheck();\n return;\n }\n\n if (event.key === Key.Enter) {\n const activeMatch = this.popup.instance.activeMatch;\n if (!this.selected.find((selected) => activeMatch && activeMatch.value && selected.value === activeMatch.value)) {\n this.popup.instance.selectActiveMatch();\n this.ref.markForCheck();\n }\n return;\n }\n\n if ((event.key === Key.Backspace || event.key === Key.Delete) && !Helpers.isEmpty(this._value) && (this._value === this.term)) {\n this.clearValue(false);\n this.closePanel();\n }\n if (event.key === Key.Delete && Helpers.isBlank(this._value)) {\n this.clearValue(true);\n }\n }\n\n if (this.allowTabNavigation && event.key === Key.Tab) {\n this.closePanel();\n this.tab.emit();\n }\n }\n\n clearValue(wipeTerm) {\n this._value = null;\n this.select.emit(this._value);\n this.changed.emit({ value: this._value, rawValue: { label: '', value: this._value } });\n this.onModelChange(this._value);\n\n if (wipeTerm) {\n this.term = '';\n this.popup.instance.customTextValue = null;\n this.hideResults();\n }\n this.ref.markForCheck();\n }\n\n /**\n * @description When the input's focus event is called this method calls the debounced function that displays the\n * results.\n */\n onFocus(event) {\n if (!this.panelOpen) {\n this.show();\n }\n this.focus.emit(event);\n }\n\n // Creates an instance of the results (called popup) and adds all the bindings to that instance.\n showResults(term?: any) {\n // Update Matches\n if (this.popup) {\n // Update existing list or create the DOM element\n this.popup.instance.config = this.config;\n this.popup.instance.term = this.term;\n this.popup.instance.selected = this.selected;\n this.popup.instance.autoSelectFirstOption = this.autoSelectFirstOption;\n this.ref.markForCheck();\n } else {\n this.popup = this.componentUtils.append(this.resultsComponent, this.results);\n this.popup.instance.parent = this;\n this.popup.instance.config = this.config;\n this.popup.instance.term = this.term;\n this.popup.instance.selected = this.selected;\n this.popup.instance.autoSelectFirstOption = this.autoSelectFirstOption;\n this.popup.instance.overlay = this.container.overlayRef;\n this.ref.markForCheck();\n }\n }\n\n // Tells the overlay component to hide the picker results from the DOM without deleting the dynamically allocated popup instance created in\n // showResults. The popup instance will remain in memory from the first time the results are shown until this component is destroyed.\n hideResults(err?: any) {\n this.closePanel();\n this.ref.markForCheck();\n }\n\n // Cleans up listeners for the popup - will get executed no matter how the popup is closed.\n onOverlayClosed(): void {\n if (this.popup && this.popup.instance && this.popup.instance.cleanUp) {\n this.popup.instance.cleanUp();\n }\n }\n\n // get accessor\n get value() {\n return this._value;\n }\n\n // set accessor including call the onchange callback\n set value(selected) {\n if (!selected) {\n this.term = '';\n this._value = null;\n this.onModelChange(this._value);\n } else if (selected.value !== this._value) {\n this.term = this.clearValueOnSelect ? '' : selected.label;\n this._value = selected.value;\n this.changed.emit({ value: selected.value, rawValue: { label: this.term, value: selected.value } });\n this.select.emit(selected);\n this.onModelChange(selected.value);\n if (this.popup) {\n this.popup.instance.selected = this.selected;\n }\n } else {\n this.term = this.clearValueOnSelect ? '' : selected.label;\n this.changed.emit({ value: selected.value, rawValue: { label: this.term, value: this._value } });\n this.select.emit(selected);\n }\n this.ref.markForCheck();\n }\n\n // Makes sure to clear the model if the user clears the text box\n checkTerm(event) {\n this.typing.emit(event);\n if (this.allowCustomValues) {\n if (this.term) {\n this.popup.instance.customTextValue = { label: this.term, value: this.term }\n } else {\n this.popup.instance.customTextValue = null;\n }\n }\n if ((!event || !event.length) && !Helpers.isEmpty(this._value)) {\n this._value = null;\n this.onModelChange(this._value);\n }\n this.ref.markForCheck();\n }\n\n // Set touched on blur\n onTouched(event?: Event) {\n this.onModelTouched();\n this.blur.emit(event);\n }\n\n // From ControlValueAccessor interface\n writeValue(value: any) {\n if (this.clearValueOnSelect) {\n this.term = '';\n } else {\n if (typeof value === 'string' && !this.config.useGetLabels) {\n this.term = value;\n } else if (value && value.label) {\n this.term = value.label;\n } else if (value && value.firstName) {\n this.term = `${value.firstName} ${value.lastName}`;\n } else if (value && value.name) {\n this.term = value.name;\n } else if (typeof this.config.getLabels === 'function') {\n this.config.getLabels(value).then((result) => {\n if (result) {\n this.term = result.length ? result[0].label || '' : result.label || '';\n } else {\n this.term = value;\n }\n this.ref.markForCheck();\n });\n } else if (value && value.title) {\n this.term = value.title;\n } else {\n this.term = value || '';\n }\n }\n this._value = value;\n this.ref.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this._disablePickerInput = disabled;\n }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// APP\nimport { NovoPipesModule } from 'novo-elements/pipes';\nimport { NovoCommonModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoListModule } from 'novo-elements/elements/list';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoSwitchModule } from 'novo-elements/elements/switch';\nimport { ChecklistPickerResults } from './extras/checklist-picker-results/ChecklistPickerResults';\nimport { DistributionListPickerResults } from './extras/distributionlist-picker-results/DistributionListPickerResults';\nimport { EntityPickerResult, EntityPickerResults } from './extras/entity-picker-results/EntityPickerResults';\nimport { GroupedMultiPickerResults } from './extras/grouped-multi-picker-results/GroupedMultiPickerResults';\nimport { MixedMultiPickerResults } from './extras/mixed-multi-picker-results/MixedMultiPickerResults';\nimport { PickerResults } from './extras/picker-results/PickerResults';\nimport { SkillsSpecialtyPickerResults } from './extras/skills-picker-results/SkillsSpecialtyPickerResults';\nimport { WorkersCompCodesPickerResults } from './extras/workers-comp-codes-picker-results/WorkersCompCodesPickerResults';\nimport { NovoPickerElement } from './Picker';\n\n@NgModule({\n imports: [CommonModule, NovoPipesModule, FormsModule, NovoCommonModule, NovoLoadingModule, NovoListModule, NovoOverlayModule, NovoSwitchModule],\n declarations: [\n NovoPickerElement,\n PickerResults,\n EntityPickerResult,\n EntityPickerResults,\n ChecklistPickerResults,\n GroupedMultiPickerResults,\n MixedMultiPickerResults,\n DistributionListPickerResults,\n WorkersCompCodesPickerResults,\n SkillsSpecialtyPickerResults,\n ],\n exports: [\n NovoPickerElement,\n PickerResults,\n EntityPickerResult,\n EntityPickerResults,\n ChecklistPickerResults,\n GroupedMultiPickerResults,\n MixedMultiPickerResults,\n DistributionListPickerResults,\n WorkersCompCodesPickerResults,\n SkillsSpecialtyPickerResults,\n ],\n})\nexport class NovoPickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i1","i2","i3","i5","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"novo-elements-elements-picker.mjs","sources":["../../../projects/novo-elements/src/elements/picker/extras/base-picker-results/BasePickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/checklist-picker-results/ChecklistPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/distributionlist-picker-results/DistributionListPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/entity-picker-results/EntityPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/grouped-multi-picker-results/GroupedMultiPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/mixed-multi-picker-results/MixedMultiPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/picker-results/PickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/skills-picker-results/SkillsSpecialtyPickerResults.ts","../../../projects/novo-elements/src/elements/picker/extras/workers-comp-codes-picker-results/WorkersCompCodesPickerResults.ts","../../../projects/novo-elements/src/elements/picker/Picker.ts","../../../projects/novo-elements/src/elements/picker/Picker.module.ts","../../../projects/novo-elements/src/elements/picker/novo-elements-elements-picker.ts"],"sourcesContent":["// NG2\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { ChangeDetectorRef, Directive, ElementRef, Input } from '@angular/core';\n// Vendor\nimport { from, Observable } from 'rxjs';\n// APP\nimport { Helpers } from 'novo-elements/utils';\n// import { NovoControlConfig } from 'novo-elements/elements/form'; // actual type of the config property on this is any\n\n/**\n * @description This is the actual list of matches that gets injected into the DOM. It's also the piece that can be\n * overwritten if custom list options are needed.\n */\n@Directive()\nexport class BasePickerResults {\n _term: string = '';\n selected: Array<any> = [];\n hasError: boolean = false;\n isLoading: boolean = false;\n isStatic: boolean = true;\n _config: any;\n activeMatch: any;\n parent: any;\n element: ElementRef;\n ref: ChangeDetectorRef;\n page: number = 0;\n lastPage: boolean = false;\n autoSelectFirstOption: boolean = true;\n overlay: OverlayRef;\n optionsFunctionHasChanged: boolean = false;\n private selectingMatches: boolean = false;\n private scrollHandler: any;\n _matches: Array<any> = [];\n customTextValue: any = null;\n\n @Input()\n set matches(m: Array<any>) {\n this._matches = m;\n }\n\n get matches() {\n return this.customTextValue ? [...this._matches, this.customTextValue] : this._matches;\n }\n\n constructor(element: ElementRef, ref: ChangeDetectorRef) {\n this.element = element;\n this.ref = ref;\n this.scrollHandler = this.onScrollDown.bind(this);\n }\n\n cleanUp(): void {\n const element: Element = this.getListElement();\n if (element && element.hasAttribute('scrollListener')) {\n element.removeAttribute('scrollListener');\n element.removeEventListener('scroll', this.scrollHandler);\n }\n }\n\n onScrollDown(event: WheelEvent) {\n const element: any = event.target;\n if (element) {\n const offset = element.offsetHeight + element.scrollTop;\n const bottom = element.scrollHeight - 300;\n if (offset >= bottom) {\n event.stopPropagation();\n if (!this.lastPage && !this.isLoading) {\n this.processSearch();\n }\n }\n }\n }\n\n @Input()\n set term(value) {\n if (this.shouldSearch(value)) {\n this._term = value;\n this.page = 0;\n this.optionsFunctionHasChanged = false;\n this.matches = [];\n this.processSearch(true);\n } else {\n this.addScrollListener();\n }\n }\n\n get term() {\n return this._term;\n }\n\n set config(value: any) {\n if (this.config && this.config.options !== value.options) {\n this.optionsFunctionHasChanged = true; // reset page so that new options call is used to search\n }\n this._config = value;\n }\n\n get config(): any {\n return this._config;\n }\n\n shouldSearch(value: unknown): boolean {\n const termHasChanged = value !== this._term;\n const optionsNotYetCalled = this.page === 0;\n\n return termHasChanged || optionsNotYetCalled || this.optionsFunctionHasChanged;\n }\n\n addScrollListener(): void {\n if (this.config.enableInfiniteScroll) {\n const element: Element = this.getListElement();\n if (element && !element.hasAttribute('scrollListener')) {\n element.setAttribute('scrollListener', 'true');\n element.addEventListener('scroll', this.scrollHandler);\n }\n }\n }\n\n processSearch(shouldReset?: boolean) {\n this.hasError = false;\n this.isLoading = true;\n this.ref.markForCheck();\n this.search(this.term).subscribe(\n (results: any) => {\n if (shouldReset) {\n this.matches = [];\n }\n if (this.isStatic) {\n this.matches = this.filterData(results);\n } else {\n this.matches = this.matches.concat(results);\n this.lastPage = results && !results.length;\n }\n if (this.matches.length > 0 && this.autoSelectFirstOption && !this.selectingMatches) {\n this.nextActiveMatch();\n }\n this.isLoading = false;\n this.ref.markForCheck();\n setTimeout(() => {\n this.overlay.updatePosition();\n this.addScrollListener();\n }); // @bkimball: This was added for Dylan Schulte, 9.18.2017 4:14PM EST, you're welcome!\n },\n (err) => {\n this.hasError = this.term && this.term.length !== 0;\n this.isLoading = false;\n this.lastPage = true;\n if (this.term && this.term.length !== 0) {\n console.error(err); // tslint:disable-lineno\n }\n this.ref.markForCheck();\n },\n );\n }\n\n search(term, mode?): Observable<any> {\n const options = this.config.options;\n return from(\n new Promise((resolve, reject) => {\n // Check if there is match data\n if (options) {\n // Resolve the data\n if (Array.isArray(options)) {\n this.isStatic = true;\n // Arrays are returned immediately\n resolve(this.structureArray(options));\n } else if (this.shouldCallOptionsFunction(term)) {\n if (\n (options.hasOwnProperty('reject') && options.hasOwnProperty('resolve')) ||\n Object.getPrototypeOf(options).hasOwnProperty('then')\n ) {\n this.isStatic = false;\n // Promises (ES6 or Deferred) are resolved whenever they resolve\n options.then(this.structureArray.bind(this)).then(resolve, reject);\n } else if (typeof options === 'function') {\n this.isStatic = false;\n // Promises (ES6 or Deferred) are resolved whenever they resolve\n options(term, ++this.page)\n .then(this.structureArray.bind(this))\n .then(resolve, reject);\n } else {\n // All other kinds of data are rejected\n reject('The data provided is not an array or a promise');\n throw new Error('The data provided is not an array or a promise');\n }\n } else {\n if (this.config.defaultOptions) {\n this.isStatic = false;\n if (typeof this.config.defaultOptions === 'function') {\n const defaultOptions = this.config.defaultOptions(term, ++this.page);\n if (Object.getPrototypeOf(defaultOptions).hasOwnProperty('then')) {\n defaultOptions.then(this.structureArray.bind(this)).then(resolve, reject);\n } else {\n resolve(this.structureArray(defaultOptions));\n }\n } else {\n resolve(this.structureArray(this.config.defaultOptions));\n }\n } else {\n // No search term gets rejected\n reject('No search term');\n }\n }\n } else {\n // No data gets rejected\n reject('error');\n }\n }),\n );\n }\n\n shouldCallOptionsFunction(term: string): boolean {\n if (this.config && 'minSearchLength' in this.config && Number.isInteger(this.config.minSearchLength)) {\n return typeof term === 'string' && term.length >= this.config.minSearchLength;\n } else {\n return !!(term && term.length);\n }\n }\n\n /**\n * @param collection - the data once getData resolves it\n *\n * @description This function structures an array of nodes into an array of objects with a\n * 'name' field by default.\n */\n structureArray(collection: any): any {\n const dataArray = collection.data ? collection.data : collection;\n if (dataArray && (typeof dataArray[0] === 'string' || typeof dataArray[0] === 'number')) {\n return collection.map((item) => {\n return {\n value: item,\n label: item,\n };\n });\n }\n return dataArray.map((data) => {\n let value = this.config.field ? data[this.config.field] : data.value || data;\n if (this.config.valueFormat) {\n value = Helpers.interpolate(this.config.valueFormat, data);\n }\n const label = this.config.format ? Helpers.interpolate(this.config.format, data) : data.label || String(value);\n return { value, label, data };\n });\n }\n\n /**\n * @param matches - Collection of objects=\n *\n * @description This function loops through the picker options and creates a filtered list of objects that contain\n * the newSearch.\n */\n filterData(matches): Array<any> {\n if (this.term && matches) {\n return matches.filter((match) => {\n return ~String(match.label).toLowerCase().indexOf(this.term.toLowerCase());\n });\n }\n // Show no recent results template\n return matches;\n }\n\n /**\n * @description This function is called when the user presses the enter key to call the selectMatch method.\n */\n selectActiveMatch() {\n this.selectMatch();\n }\n\n /**\n * @description This function sets activeMatch to the match before the current node.\n */\n prevActiveMatch() {\n const index = this.matches.indexOf(this.activeMatch);\n this.activeMatch = this.matches[index - 1 < 0 ? this.matches.length - 1 : index - 1];\n this.scrollToActive();\n this.ref.markForCheck();\n }\n\n /**\n * @description This function sets activeMatch to the match after the current node.\n */\n nextActiveMatch() {\n const index = this.matches.indexOf(this.activeMatch);\n this.activeMatch = this.matches[index + 1 > this.matches.length - 1 ? 0 : index + 1];\n this.scrollToActive();\n this.ref.markForCheck();\n }\n\n getListElement() {\n return this.element.nativeElement;\n }\n\n getChildrenOfListElement() {\n let children = [];\n if (this.getListElement()) {\n children = this.getListElement().children;\n }\n return children;\n }\n\n scrollToActive() {\n const list = this.getListElement();\n const items = this.getChildrenOfListElement();\n const index = this.matches.indexOf(this.activeMatch);\n const item = items[index];\n if (item) {\n list.scrollTop = item.offsetTop;\n }\n }\n\n /**\n * @description\n */\n selectActive(match) {\n this.activeMatch = match;\n }\n\n /**\n * @description\n */\n isActive(match) {\n return this.activeMatch === match;\n }\n\n /**\n * @description\n */\n selectMatch(event?: any, item?: any) {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n const selected = this.activeMatch;\n if (selected && this.parent) {\n this.parent.value = selected;\n this.selectingMatches = true;\n if (this.parent.closeOnSelect) {\n this.parent.hideResults();\n }\n this.selectingMatches = false;\n }\n this.ref.markForCheck();\n return false;\n }\n\n /**\n * @description This function captures the whole query string and replace it with the string that will be used to\n * match.\n */\n escapeRegexp(queryToEscape) {\n // Ex: if the capture is \"a\" the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n }\n\n /**\n * @deprecated use highlight pipe\n */\n highlight(match, query) {\n // Replaces the capture string with a the same string inside of a \"strong\" tag\n return query ? match.replace(new RegExp(this.escapeRegexp(query.trim()), 'gi'), '<strong>$&</strong>') : match;\n }\n\n preselected(match) {\n let selected = this.selected;\n if (this.config && this.config.selected) {\n selected = [...this.selected, ...this.config.selected];\n }\n if (this.config && this.config.preselected) {\n const preselectedFunc: Function = this.config.preselected;\n return (\n selected.findIndex((item) => {\n return preselectedFunc(match, item);\n }) !== -1\n );\n }\n return (\n selected.findIndex((item) => {\n let isPreselected = false;\n if (item && item.value && match && match.value) {\n if (item.value.id && match.value.id) {\n isPreselected = item.value.id === match.value.id;\n } else if (item.value instanceof Object && item.value.hasOwnProperty('value')) {\n isPreselected = item.value.value === match.value;\n } else {\n isPreselected = item.value === match.value;\n }\n }\n return isPreselected;\n }) !== -1\n );\n }\n}\n","// NG2\nimport { ChangeDetectorRef, Component, ElementRef } from '@angular/core';\n// Vendor\nimport { from, Observable } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\n// APP\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n/**\n * @description This is the actual list of matches that gets injected into the DOM.\n */\n@Component({\n selector: 'checklist-picker-results',\n host: {\n class: 'active picker-results',\n },\n template: `\n <novo-loading theme=\"line\" *ngIf=\"isLoading && !matches.length\"></novo-loading>\n <ul *ngIf=\"matches.length > 0\">\n <span *ngFor=\"let section of matches; let i = index\">\n <li class=\"header caption\" *ngIf=\"section.data.length > 0\">{{ section.label || section.type }}</li>\n <li\n *ngFor=\"let match of section.data; let i = index\"\n [ngClass]=\"{ checked: match.checked }\"\n (click)=\"selectMatch($event, match)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n >\n <label>\n <i\n [ngClass]=\"{\n 'bhi-checkbox-empty': !match.checked,\n 'bhi-checkbox-filled': match.checked,\n 'bhi-checkbox-indeterminate': match.indeterminate\n }\"\n ></i>\n {{ match.label }}\n </label>\n </li>\n </span>\n </ul>\n <p class=\"picker-error\" *ngIf=\"hasError\">{{ labels.pickerError }}</p>\n <p class=\"picker-null-results\" *ngIf=\"!isLoading && !matches.length && !hasError && term !== ''\">{{ labels.pickerEmpty }}</p>\n `,\n})\nexport class ChecklistPickerResults extends BasePickerResults {\n filteredMatches: any;\n\n constructor(element: ElementRef, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n search(): Observable<any> {\n const options = this.config.options;\n // only set this the first time\n return from(\n new Promise((resolve, reject) => {\n // Check if there is match data\n if (options) {\n // Resolve the data\n if (Array.isArray(options)) {\n this.isStatic = true;\n // Arrays are returned immediately\n resolve(options);\n } else {\n // All other kinds of data are rejected\n reject('The data provided is not an array or a promise');\n throw new Error('The data provided is not an array or a promise');\n }\n } else {\n // No data gets rejected\n reject('error');\n }\n }),\n );\n }\n\n /**\n * @param matches - Collection of objects=\n *\n * @description This function loops through the picker options and creates a filtered list of objects that contain\n * the newSearch.\n */\n filterData(matches): any {\n if (this.term && matches) {\n this.filteredMatches = matches.map((section) => {\n const items = section.originalData.filter((match) => {\n return ~String(match.label).toLowerCase().indexOf(this.term.toLowerCase());\n });\n section.data = items;\n return section;\n }, this);\n return this.filteredMatches;\n } else if (this.term === '') {\n matches.forEach((section) => {\n section.data = section.originalData;\n });\n return matches;\n }\n // Show no recent results template\n return matches;\n }\n\n selectMatch(event, item) {\n Helpers.swallowEvent(event);\n if (item.indeterminate) {\n item.indeterminate = false;\n item.checked = true;\n } else {\n item.checked = !item.checked;\n }\n\n const selected = this.activeMatch;\n if (selected) {\n this.parent.value = selected;\n }\n this.ref.markForCheck();\n return false;\n }\n}\n","// NG2\nimport { ChangeDetectorRef, Component, ElementRef, HostBinding } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NovoLabelService } from 'novo-elements/services';\n// Vendor\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n@Component({\n selector: 'distribution-list-picker-results',\n template: `\n <section class=\"picker-loading\" *ngIf=\"isLoading && !matches?.length\">\n <novo-loading theme=\"line\"></novo-loading>\n </section>\n <novo-list direction=\"vertical\" *ngIf=\"matches?.length > 0 && !hasError\">\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match)\"\n >\n <item-header>\n <item-title>\n <span [innerHtml]=\"sanitizeHTML(match.label)\"></span>\n </item-title>\n </item-header>\n <item-content direction=\"horizontal\">\n <p>\n <span class=\"label\">{{ labels.distributionListOwner }}: </span><span>{{ match?.data?.owner?.name }}</span>\n </p>\n <p>\n <span class=\"label\">{{ labels.dateAdded }}: </span\n ><span>{{ labels.formatDateWithFormat(match?.data?.dateAdded, { year: 'numeric', month: 'numeric', day: 'numeric' }) }}</span>\n </p>\n </item-content>\n </novo-list-item>\n <novo-loading theme=\"line\" *ngIf=\"isLoading && matches?.length > 0\"></novo-loading>\n </novo-list>\n `,\n})\nexport class DistributionListPickerResults extends BasePickerResults {\n @HostBinding('class.active')\n active: boolean = true;\n @HostBinding('hidden')\n get isHidden(): boolean {\n return this.matches.length === 0;\n }\n\n constructor(element: ElementRef, private sanitizer: DomSanitizer, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n this.sanitizer = sanitizer;\n }\n\n getListElement(): any {\n return this.element.nativeElement.querySelector('novo-list');\n }\n\n sanitizeHTML(html: any): any {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n@Component({\n selector: 'entity-picker-result',\n template: `\n <novo-list-item *ngIf=\"match.data\" (click)=\"select.next(match.data)\">\n <novo-item-header>\n <novo-item-avatar [icon]=\"getIconForResult(match.data)\"></novo-item-avatar>\n <novo-item-title> <span [innerHtml]=\"getNameForResult(match.data) | highlight:term\"></span> </novo-item-title>\n </novo-item-header>\n <novo-item-content direction=\"horizontal\">\n <!-- COMPANY 1 -->\n <novo-text smaller class=\"company\" *ngIf=\"match.data.companyName || match.data?.clientCorporation?.name\">\n <i class=\"bhi-company company\"></i>\n <span [innerHtml]=\"match.data.companyName || match.data?.clientCorporation?.name | highlight:term\"></span>\n </novo-text>\n <!-- CLIENT CONTACT -->\n <novo-text smaller class=\"contact\" *ngIf=\"match.data?.clientContact?.firstName\">\n <i class=\"bhi-person contact person\"></i>\n <span [innerHtml]=\"match.data.clientContact.firstName + ' ' + match.data.clientContact.lastName | highlight:term\"></span>\n </novo-text>\n <!-- CANDIDATE -->\n <novo-text smaller class=\"candidate\" *ngIf=\"match.data.candidate && match.data.searchEntity === 'Placement'\">\n <i class=\"bhi-candidate candidate\"></i>\n <span [innerHtml]=\"match.data.candidate.firstName + ' ' + match.data.candidate.lastName | highlight:term\"></span>\n </novo-text>\n <!-- START & END DATE -->\n <novo-text smaller class=\"start-date\" *ngIf=\"match.data.dateBegin && match.data.searchEntity === 'Placement'\">\n <i class=\"bhi-calendar\"></i>\n <span [innerHtml]=\"renderTimestamp(match.data.dateBegin) + ' - ' + renderTimestamp(match.data.dateEnd)\"></span>\n </novo-text>\n <!-- START Date -->\n <novo-text smaller class=\"start-date\" *ngIf=\"match.data.startTime && match.data.searchEntity === 'JobShift'\">\n <i class=\"bhi-calendar\"></i>\n <span [innerHtml]=\"renderTimestamp(match.data.startTime)\"></span>\n </novo-text>\n <!-- START & END TIME -->\n <novo-text smaller class=\"start-time\" *ngIf=\"match.data.startTime && match.data.searchEntity === 'JobShift'\">\n <i class=\"bhi-clock\"></i>\n <span [innerHtml]=\"renderTimeNoOffset(match.data.startTime) + ' - ' + renderTimeNoOffset(match.data.endTime)\"></span>\n </novo-text>\n <!-- JOBORDER -->\n <novo-text smaller class=\"job\" *ngIf=\"match.data.jobOrder && match.data.searchEntity === 'JobShift'\">\n <i class=\"bhi-job job\"></i>\n <span [innerHtml]=\"match.data.jobOrder.title | highlight:term\"></span>\n </novo-text>\n <!-- OPENINGS -->\n <novo-text smaller class=\"openings\" *ngIf=\"match.data.openings && match.data.searchEntity === 'JobShift'\">\n <i class=\"bhi-candidate\"></i>\n <span>{{ match.data.numAssigned }} / {{ match.data.openings }}</span>\n </novo-text>\n <!-- EMAIL -->\n <novo-text smaller class=\"email\" *ngIf=\"match.data.email\">\n <i class=\"bhi-email\"></i> <span [innerHtml]=\"match.data.email | highlight:term\"></span>\n </novo-text>\n <!-- PHONE -->\n <novo-text smaller class=\"phone\" *ngIf=\"match.data.phone\">\n <i class=\"bhi-phone\"></i> <span [innerHtml]=\"match.data.phone | highlight:term\"></span>\n </novo-text>\n <!-- ADDRESS -->\n <novo-text smaller class=\"location\" *ngIf=\"match.data.address && (match.data.address.city || match.data.address.state)\">\n <i class=\"bhi-location\"></i> <span *ngIf=\"match.data.address.city\" [innerHtml]=\"highlight(match.data.address.city, term)\"></span>\n <span *ngIf=\"match.data.address.city && match.data.address.state\">, </span>\n <span *ngIf=\"match.data.address.state\" [innerHtml]=\"match.data.address.state | highlight:term\"></span>\n </novo-text>\n <!-- STATUS -->\n <novo-text smaller class=\"status\" *ngIf=\"match.data.status\">\n <i class=\"bhi-info\"></i> <span [innerHtml]=\"match.data.status | highlight:term\"></span>\n </novo-text>\n <!-- OWNER -->\n <novo-text smaller class=\"owner\" *ngIf=\"match.data.owner && match.data.owner.name && match.data.searchEntity === 'Candidate'\">\n <i class=\"bhi-person\"></i> <span [innerHtml]=\"match.data.owner.name | highlight:term\"></span>\n </novo-text>\n <!-- PRIMARY DEPARTMENT -->\n <novo-text\n smaller\n class=\"primary-department\"\n *ngIf=\"match.data.primaryDepartment && match.data.primaryDepartment.name && match.data.searchEntity === 'CorporateUser'\"\n >\n <i class=\"bhi-department\"></i> <span [innerHtml]=\"match.data.primaryDepartment.name | highlight:term\"></span>\n </novo-text>\n <!-- OCCUPATION -->\n <novo-text smaller class=\"occupation\" *ngIf=\"match.data.occupation && match.data.searchEntity === 'CorporateUser'\">\n <i class=\"bhi-occupation\"></i> <span [innerHtml]=\"match.data.occupation | highlight:term\"></span>\n </novo-text>\n </novo-item-content>\n </novo-list-item>\n `,\n styleUrls: ['../picker-results/PickerResult.scss'],\n})\nexport class EntityPickerResult {\n @Input() match: any;\n @Input() term: any;\n @Output() select: EventEmitter<any> = new EventEmitter();\n\n constructor(public labels: NovoLabelService) {}\n\n /**\n * @description This function captures the whole query string and replace it with the string that will be used to\n * match.\n */\n escapeRegexp(queryToEscape) {\n // Ex: if the capture is \"a\" the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n }\n\n /**\n * @deprecated use highlight pipe\n */\n highlight(match, query) {\n // Replaces the capture string with a the same string inside of a \"strong\" tag\n return query && match ? match.replace(new RegExp(this.escapeRegexp(query.trim()), 'gi'), '<strong>$&</strong>') : match;\n }\n\n getIconForResult(result?: any): string {\n if (result) {\n switch (result.searchEntity) {\n case 'ClientContact':\n return 'person contact';\n case 'ClientCorporation':\n return 'company';\n case 'Opportunity':\n return 'opportunity';\n case 'Candidate':\n return 'candidate';\n case 'Lead':\n return 'lead';\n case 'JobOrder':\n return 'job';\n case 'Placement':\n return 'star placement';\n case 'CorporateUser':\n return 'user';\n case 'CorporationDepartment':\n return 'department';\n case 'JobShift':\n return 'timetable contract';\n default:\n return '';\n }\n }\n return '';\n }\n\n renderTimestamp(date?: any) {\n let timestamp = '';\n if (date) {\n timestamp = this.labels.formatDateWithFormat(date, { year: 'numeric', month: 'numeric', day: 'numeric' });\n }\n return timestamp;\n }\n\n renderTime(dateStr?: string) {\n let timestamp = '';\n if (dateStr) {\n timestamp = this.labels.formatTime(new Date(dateStr));\n }\n return timestamp;\n }\n\n renderTimeNoOffset(dateStr?: string) {\n let timestamp = '';\n if (dateStr) {\n dateStr = dateStr.slice(0, 19);\n timestamp = this.labels.formatTime(dateStr);\n }\n return timestamp;\n }\n\n getNameForResult(result?: any) {\n if (result) {\n switch (result.searchEntity) {\n case 'Lead':\n case 'CorporateUser':\n case 'ClientContact':\n case 'Candidate':\n case 'Person':\n if ('firstName' in result) {\n return `${result.firstName} ${result.lastName}`.trim();\n }\n return `${result.name || ''}`.trim();\n case 'ClientCorporation':\n return `${result.name || ''}`.trim();\n case 'Opportunity':\n case 'JobOrder':\n case 'BillingProfile':\n case 'InvoiceTerm':\n return `${result.id} | ${result.title || ''}`.trim();\n case 'Placement':\n let label = `${result.id}`;\n if (result.candidate || result.jobOrder) {\n if (result.candidate && result.jobOrder) {\n label = `${label} | ${result.candidate.firstName} ${result.candidate.lastName} - ${result.jobOrder.title}`.trim();\n } else if (result.jobOrder) {\n label = `${label} | ${result.jobOrder.title}`.trim();\n } else {\n label = `${label} | ${result.candidate.firstName} ${result.candidate.lastName}`.trim();\n }\n }\n return label;\n case 'JobShift':\n return `${result.jobOrder?.title} @ ${result.jobOrder?.clientCorporation?.name || ''}`.trim();\n default:\n return `${result.name || result.label || ''}`.trim();\n }\n }\n return '';\n }\n}\n\n@Component({\n selector: 'entity-picker-results',\n template: `\n <novo-list *ngIf=\"matches.length > 0\" direction=\"vertical\">\n <entity-picker-result\n *ngFor=\"let match of matches\"\n [match]=\"match\"\n [term]=\"term\"\n [ngClass]=\"{ active: match === activeMatch }\"\n (click)=\"selectMatch($event, match)\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match)\"\n >\n </entity-picker-result>\n <novo-loading theme=\"line\" *ngIf=\"isLoading && matches.length > 0\"></novo-loading>\n </novo-list>\n <div class=\"picker-error\" *ngIf=\"hasError\">{{ labels.pickerError }}</div>\n <div class=\"picker-null-results\" *ngIf=\"hasNonErrorMessage && term !== ''\">{{ labels.pickerEmpty }}</div>\n <div class=\"picker-null-results\" *ngIf=\"hasNonErrorMessage && term === ''\">{{ labels.pickerTextFieldEmpty }}</div>\n `,\n styleUrls: ['../picker-results/PickerResults.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'novo-entity-picker-results',\n },\n})\nexport class EntityPickerResults extends BasePickerResults {\n @Output() select: EventEmitter<any> = new EventEmitter();\n\n constructor(element: ElementRef, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n get hasNonErrorMessage() {\n return !this.isLoading && !this.matches.length && !this.hasError;\n }\n\n getListElement() {\n return this.element.nativeElement.querySelector('novo-list');\n }\n\n selectMatch(event?: any, item?: any) {\n this.select.next(item);\n return super.selectMatch(event, item);\n }\n}\n","import { ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { NovoListElement } from 'novo-elements/elements/list';\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n@Component({\n selector: 'grouped-multi-picker-results',\n template: `\n <div class=\"grouped-multi-picker-groups\">\n <novo-list direction=\"vertical\">\n <novo-list-item\n *ngIf=\"config.displayAll\"\n (click)=\"selectCategory({ value: 'all', label: 'all' })\"\n [class.active]=\"selectedCategory?.value === 'all'\"\n data-automation-id=\"display-all\"\n [class.disabled]=\"isLoading\"\n >\n <item-content>\n <span data-automation-id=\"label\">{{ labels.all }}</span>\n </item-content>\n <item-end>\n <i class=\"bhi-next\"></i>\n </item-end>\n </novo-list-item>\n <novo-list-item\n *ngFor=\"let category of categories\"\n (click)=\"selectCategory(category)\"\n [class.active]=\"selectedCategory?.value === category.value\"\n [attr.data-automation-id]=\"category.label\"\n [class.disabled]=\"isLoading\"\n >\n <item-content>\n <i *ngIf=\"category.iconClass\" [class]=\"category.iconClass\"></i>\n <span data-automation-id=\"label\">{{ category.label }}</span>\n </item-content>\n <item-end>\n <i class=\"bhi-next\"></i>\n </item-end>\n </novo-list-item>\n </novo-list>\n <footer\n class=\"grouped-multi-picker-groups-footer\"\n *ngIf=\"customFilterEnabled\"\n data-automation-id=\"footer\"\n [class.disabled]=\"isLoading\"\n >\n <novo-switch [(ngModel)]=\"customFilterValue\" (onChange)=\"fireCustomFilter($event)\" data-automation-id=\"switch\"></novo-switch>\n <label data-automation-id=\"label\">{{ customFilterLabel }}</label>\n </footer>\n </div>\n <div class=\"grouped-multi-picker-matches\">\n <div class=\"grouped-multi-picker-input-container\" [hidden]=\"!selectedCategory\" data-automation-id=\"input-container\">\n <input autofocus #input [(ngModel)]=\"searchTerm\" [disabled]=\"isLoading\" data-automation-id=\"input\" [placeholder]=\"placeholder\" />\n <i class=\"bhi-search\" *ngIf=\"!searchTerm\" [class.disabled]=\"isLoading\" data-automation-id=\"seach-icon\"></i>\n <i\n class=\"bhi-times\"\n *ngIf=\"searchTerm\"\n (click)=\"clearSearchTerm($event)\"\n [class.disabled]=\"isLoading\"\n data-automation-id=\"remove-icon\"\n ></i>\n </div>\n <div class=\"grouped-multi-picker-list-container\">\n <novo-list direction=\"vertical\" #list>\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match) || isLoading\"\n [attr.data-automation-id]=\"match.label\"\n >\n <item-content>\n <span>{{ match.label }}</span>\n </item-content>\n </novo-list-item>\n </novo-list>\n <div\n class=\"grouped-multi-picker-no-results\"\n *ngIf=\"matches.length === 0 && !isLoading && selectedCategory\"\n data-automation-id=\"empty-message\"\n >\n {{ labels.groupedMultiPickerEmpty }}\n </div>\n <div\n class=\"grouped-multi-picker-no-category\"\n *ngIf=\"matches.length === 0 && !isLoading && !selectedCategory\"\n data-automation-id=\"select-category-message\"\n >\n {{ labels.groupedMultiPickerSelectCategory }}\n </div>\n <div class=\"grouped-multi-picker-loading\" *ngIf=\"isLoading\" data-automation-id=\"loading-message\">\n <novo-loading theme=\"line\"></novo-loading>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./GroupedMultiPickerResults.scss'],\n})\nexport class GroupedMultiPickerResults extends BasePickerResults implements OnInit, OnDestroy {\n @ViewChild('input', { static: true })\n private inputElement: ElementRef;\n @ViewChild('list')\n private listElement: NovoListElement;\n\n public selectedCategory: { value: string; label: string };\n public searchTerm: string;\n public customFilterEnabled: boolean = false;\n public customFilterLabel: string;\n public placeholder: string = '';\n\n private keyboardSubscription: Subscription;\n private internalMap: Map<string, { value: string; label: string; items: { value: string; label: string }[] }> = new Map<\n string,\n { value: string; label: string; items: { value: string; label: string }[] }\n >();\n public customFilterValue: any;\n\n set term(value) {\n // Display all only will work for static categories\n if (this.config.displayAll && this.config.getItemsForCategoryAsync) {\n throw new Error(\n '[GroupedMultiPickerResults] - you can only have `displayAll` with a static `categoryMap`. Not available with `getItemsForCategoryAsync`',\n );\n }\n // Custom filter\n if (this.config.customFilter) {\n this.customFilterEnabled = true;\n this.customFilterLabel = this.config.customFilter.label;\n this.customFilterValue = !!this.config.customFilter.defaultFilterValue;\n this.ref.markForCheck();\n if (!this.customFilterLabel || !this.config.customFilter.matchFunction) {\n throw new Error('[GroupedMultiPickerResults] - custom filter/matchFunction set no label was provided!');\n }\n } else {\n this.customFilterEnabled = false;\n }\n // Configure ALL\n if (this.config.displayAll && !this.selectedCategory) {\n this.setAllCategory();\n }\n // Placeholder\n if (this.config.placeholder) {\n this.placeholder = this.config.placeholder;\n }\n // Focus\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n });\n }\n\n get categories() {\n if (this.config.categories || this.config.categoryMap) {\n return (\n this.config.categories ||\n Array.from(this.config.categoryMap.values()).filter((category: { value: string }) => {\n return category.value !== 'all';\n })\n );\n }\n return [];\n }\n\n constructor(element: ElementRef, private renderer: Renderer2, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n public ngOnInit() {\n // Subscribe to keyboard events and debounce\n this.keyboardSubscription = fromEvent(this.inputElement.nativeElement, 'keyup')\n .pipe(debounceTime(350), distinctUntilChanged())\n .subscribe((event: KeyboardEvent) => {\n this.searchTerm = (event.target as HTMLInputElement).value;\n this.matches = this.filterData();\n this.ref.markForCheck();\n });\n }\n\n public ngOnDestroy() {\n // Cleanup\n this.keyboardSubscription.unsubscribe();\n }\n\n public setAllCategory() {\n // If we have display all, set the all categories up\n if (this.config.displayAll) {\n this.selectedCategory = { value: 'all', label: 'all' };\n const allItems = [];\n Array.from(this.config.categoryMap.values())\n .filter((category: { value: string }) => {\n return category.value !== 'all';\n })\n .forEach((v: { value: string; label: string; items: any[] }) => allItems.push(...v.items));\n this.matches = this.filter(allItems);\n this.config.categoryMap.set('all', { value: 'all', label: 'All', items: allItems });\n this.ref.markForCheck();\n }\n }\n\n public selectCategory(category: { value: string; label: string }): void {\n // Scroll to top\n this.renderer.setProperty(this.listElement.element.nativeElement, 'scrollTop', 0);\n // Set focus\n this.inputElement.nativeElement.focus();\n // Find new items\n const key: string = category.value;\n this.selectedCategory = category;\n // Clear\n this.matches = [];\n this.ref.markForCheck();\n // New matches\n this.getNewMatches(category, key);\n }\n\n public clearSearchTerm(event: MouseEvent) {\n Helpers.swallowEvent(event);\n this.searchTerm = '';\n this.selectCategory({ value: this.selectedCategory.value, label: this.selectedCategory.label });\n this.ref.markForCheck();\n }\n\n public selectMatch(event?: MouseEvent, item?: { value: string; label: string }): boolean {\n // Set focus\n this.inputElement.nativeElement.focus();\n return super.selectMatch(event);\n }\n\n public fireCustomFilter(value: boolean) {\n this.customFilterValue = value;\n // Clear cache map\n this.internalMap.clear();\n // Only fire if we have a selected category\n if (this.selectCategory) {\n // Find new items\n const key: string = this.selectedCategory.value;\n // Get new matches\n this.getNewMatches(this.selectedCategory, key);\n this.ref.markForCheck();\n }\n // Focus\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n });\n }\n\n filterData(): { value: string; label: string }[] {\n if (this.selectedCategory) {\n if (this.config.categoryMap) {\n return this.filter(this.config.categoryMap.get(this.selectedCategory.value).items);\n } else {\n return this.filter(this.internalMap.get(this.selectedCategory.value).items);\n }\n }\n return [];\n }\n\n private getNewMatches(category: { value: string; label: string }, key: string): void {\n // Get new matches\n if (this.config.categoryMap) {\n this.matches = this.filter(this.config.categoryMap.get(key).items);\n this.ref.markForCheck();\n } else {\n if (!this.config.getItemsForCategoryAsync) {\n throw new Error(\n 'The \"config\" for the Chips must include a function \"getItemsForCategoryAsync(categoryKey: string)\" to retrieve the items by category. Or if you have static data provide a \"categoryMap\"',\n );\n }\n if (!this.internalMap.get(key)) {\n this.isLoading = true;\n this.config.getItemsForCategoryAsync(key, this.customFilterValue).then((items: { value: string; label: string }[]) => {\n this.internalMap.set(key, { value: category.value, label: category.label, items });\n this.matches = this.filter(items, true);\n this.isLoading = false;\n this.ref.markForCheck();\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n });\n });\n } else {\n this.matches = this.filter(this.internalMap.get(key).items);\n this.ref.markForCheck();\n }\n }\n }\n\n private filter(\n array: { value: string; label: string; filterValue?: any }[],\n ignoreCustomFilter: boolean = false,\n ): { value: string; label: string }[] {\n let matches: { value: string; label: string; filterValue?: any }[] = array;\n if (this.searchTerm && this.searchTerm.length !== 0 && this.selectedCategory) {\n matches = matches.filter((match) => {\n const searchTerm = this.searchTerm.toLowerCase();\n return match.label.toLowerCase().indexOf(searchTerm) > -1 || match.value.toLowerCase().indexOf(searchTerm) > -1;\n });\n }\n if (this.customFilterEnabled && this.config.customFilter.matchFunction && !ignoreCustomFilter) {\n matches = matches.filter((match) => this.config.customFilter.matchFunction(match, this.customFilterValue));\n }\n return matches;\n }\n}\n","import { ChangeDetectorRef, Component, ElementRef, OnDestroy, Renderer2, ViewChild } from '@angular/core';\nimport { fromEvent, Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { NovoListElement } from 'novo-elements/elements/list';\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\nexport interface IMixedMultiPickerOption {\n value: string;\n label: string;\n secondaryOptions?: {\n value: string;\n label: string;\n filterValue?: any;\n }[];\n getSecondaryOptionsAsync?(): Promise<{ value: string; label: string }[]>;\n // TODO: Refactor to prevent the need for a behaviorSubject to allow primaryOption's secondaryOptions to be cleared\n // Currently secondaryOptions cannot be cleared via FieldInteraction API and must use a behavior subject - this includes modifyPickerConfig\n clearSecondaryOptions?: Subject<any>;\n showSearchOnSecondaryOptions?: boolean;\n}\n\n@Component({\n selector: 'mixed-multi-picker-results',\n template: ` <div class=\"mixed-multi-picker-groups\">\n <novo-list direction=\"vertical\">\n <novo-list-item\n *ngFor=\"let option of options\"\n (click)=\"selectPrimaryOption(option, $event)\"\n [class.active]=\"selectedPrimaryOption?.value === option.value\"\n [attr.data-automation-id]=\"option.label\"\n [class.disabled]=\"isLoading\"\n >\n <item-content>\n <i *ngIf=\"option.iconClass\" [class]=\"option.iconClass\"></i>\n <span data-automation-id=\"label\">{{ option.label }}</span>\n </item-content>\n <item-end *ngIf=\"optionHasSecondaryOptions(option)\">\n <i class=\"bhi-next\"></i>\n </item-end>\n </novo-list-item>\n </novo-list>\n </div>\n <div class=\"mixed-multi-picker-matches\" [hidden]=\"!optionHasSecondaryOptions(selectedPrimaryOption)\">\n <div\n class=\"mixed-multi-picker-input-container\"\n [hidden]=\"!shouldShowSearchBox(selectedPrimaryOption)\"\n data-automation-id=\"input-container\"\n >\n <input autofocus #input [(ngModel)]=\"searchTerm\" [disabled]=\"isLoading\" data-automation-id=\"input\" [placeholder]=\"placeholder\" />\n <i class=\"bhi-search\" *ngIf=\"!searchTerm\" [class.disabled]=\"isLoading\" data-automation-id=\"seach-icon\"></i>\n <i\n class=\"bhi-times\"\n *ngIf=\"searchTerm\"\n (click)=\"clearSearchTerm($event)\"\n [class.disabled]=\"isLoading\"\n data-automation-id=\"remove-icon\"\n ></i>\n </div>\n <div class=\"mixed-multi-picker-list-container\">\n <novo-list direction=\"vertical\" #list>\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match) || isLoading\"\n [attr.data-automation-id]=\"match.label\"\n >\n <item-content>\n <span>{{ match.label }}</span>\n </item-content>\n </novo-list-item>\n </novo-list>\n <div\n class=\"mixed-multi-picker-no-results\"\n *ngIf=\"matches.length === 0 && !isLoading && selectedPrimaryOption\"\n data-automation-id=\"empty-message\"\n >\n {{ config.emptyOptionsLabel ? config.emptyOptionsLabel : labels.groupedMultiPickerEmpty }}\n </div>\n <div class=\"mixed-multi-picker-loading\" *ngIf=\"isLoading\" data-automation-id=\"loading-message\">\n <novo-loading theme=\"line\"></novo-loading>\n </div>\n </div>\n </div>`,\n styleUrls: ['./MixedMultiPickerResults.scss'],\n})\nexport class MixedMultiPickerResults extends BasePickerResults implements OnDestroy {\n @ViewChild('input', { static: true })\n private inputElement: ElementRef;\n @ViewChild('list')\n private listElement: NovoListElement;\n\n public selectedPrimaryOption: IMixedMultiPickerOption;\n public searchTerm: string;\n public placeholder: string = '';\n public emptyOptionsLabel: string = '';\n\n private keyboardSubscription: Subscription;\n\n private internalMap: Map<string, { value: string; label: string; items: { value: string; label: string }[] }> = new Map<\n string,\n { value: string; label: string; items: { value: string; label: string }[] }\n >();\n\n set term(value) {\n if (this.config.placeholder) {\n this.placeholder = this.config.placeholder;\n }\n // Focus\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n });\n }\n\n get options() {\n return this.config.options || [];\n }\n\n constructor(element: ElementRef, private renderer: Renderer2, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n public ngOnDestroy() {\n // Cleanup\n if (this.keyboardSubscription) {\n this.keyboardSubscription.unsubscribe();\n }\n if (this.config.options) {\n this.config.options.forEach((option) => {\n if (option.clearSecondaryOptions) {\n option.clearSecondaryOptions.unsubscribe();\n }\n });\n }\n }\n\n public selectPrimaryOption(primaryOption: IMixedMultiPickerOption, event?: MouseEvent): void {\n if (this.keyboardSubscription) {\n this.keyboardSubscription.unsubscribe();\n }\n // Scroll to top\n this.renderer.setProperty(this.listElement.element.nativeElement, 'scrollTop', 0);\n // Set focus\n this.inputElement.nativeElement.focus();\n // Find new items\n const key: string = primaryOption.value;\n this.selectedPrimaryOption = primaryOption;\n // Clear\n this.matches = [];\n this.ref.markForCheck();\n // New matches\n if (this.optionHasSecondaryOptions(primaryOption)) {\n // Subscribe to keyboard events and debounce\n this.keyboardSubscription = fromEvent(this.inputElement.nativeElement, 'keyup')\n .pipe(debounceTime(350), distinctUntilChanged())\n .subscribe((keyEvent: KeyboardEvent) => {\n this.searchTerm = (keyEvent.target as HTMLInputElement).value;\n this.matches = this.filterData();\n this.ref.markForCheck();\n });\n this.getNewMatches(primaryOption);\n } else {\n this.selectActive(primaryOption);\n this.selectMatch(event);\n }\n }\n\n public selectMatch(event?: MouseEvent): boolean {\n // Set focus\n this.inputElement.nativeElement.focus();\n return super.selectMatch(event);\n }\n\n public clearSearchTerm(event: MouseEvent) {\n Helpers.swallowEvent(event);\n this.searchTerm = '';\n this.selectPrimaryOption({ value: this.selectedPrimaryOption.value, label: this.selectedPrimaryOption.label });\n this.ref.markForCheck();\n }\n\n public optionHasSecondaryOptions(primaryOption: IMixedMultiPickerOption) {\n return !!(primaryOption && (primaryOption.secondaryOptions || primaryOption.getSecondaryOptionsAsync));\n }\n\n public shouldShowSearchBox(primaryOption: IMixedMultiPickerOption) {\n return !!(primaryOption && primaryOption.showSearchOnSecondaryOptions);\n }\n\n public clearPrimaryOption(primaryOption: IMixedMultiPickerOption) {\n if (this.internalMap.get(primaryOption.value)) {\n if (primaryOption.value === this.selectedPrimaryOption?.value) {\n this.activeMatch = null;\n this.matches = [];\n this.selectedPrimaryOption = null;\n }\n this.internalMap.delete(primaryOption.value);\n this.ref.markForCheck();\n }\n }\n\n filterData(): { value: string; label: string }[] {\n if (this.selectedPrimaryOption) {\n if (this.selectedPrimaryOption.secondaryOptions) {\n return this.filter(this.selectedPrimaryOption.secondaryOptions);\n } else {\n return this.filter(this.internalMap.get(this.selectedPrimaryOption.value).items);\n }\n }\n return [];\n }\n\n private filter(array: { value: string; label: string; filterValue?: any }[]): { value: string; label: string }[] {\n let matches: { value: string; label: string; filterValue?: any }[] = array;\n if (this.searchTerm && this.searchTerm.length !== 0 && this.selectedPrimaryOption) {\n matches = matches.filter((match) => {\n const searchTerm = this.searchTerm.toLowerCase();\n return match.label.toLowerCase().indexOf(searchTerm) > -1 || match.value.toLowerCase().indexOf(searchTerm) > -1;\n });\n }\n return matches;\n }\n\n private getNewMatches(primaryOption: IMixedMultiPickerOption): void {\n // Get new matches\n if (primaryOption.secondaryOptions) {\n this.matches = this.filter(primaryOption.secondaryOptions);\n this.ref.markForCheck();\n } else {\n if (!primaryOption.getSecondaryOptionsAsync) {\n throw new Error('An option needs to have either an array of secondaryOptions or a function getSecondaryOptionsAsync');\n }\n if (!this.internalMap.get(primaryOption.value)) {\n this.isLoading = true;\n primaryOption.getSecondaryOptionsAsync().then((items: { value: string; label: string }[]) => {\n this.internalMap.set(primaryOption.value, { value: primaryOption.value, label: primaryOption.label, items });\n this.matches = this.filter(items);\n this.isLoading = false;\n this.ref.markForCheck();\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n });\n });\n if (primaryOption.clearSecondaryOptions) {\n primaryOption.clearSecondaryOptions.subscribe(() => {\n this.clearPrimaryOption(primaryOption);\n });\n }\n } else {\n this.matches = this.filter(this.internalMap.get(primaryOption.value).items);\n this.ref.markForCheck();\n }\n }\n }\n}\n","// NG2\nimport { ChangeDetectorRef, Component, ElementRef, ViewEncapsulation } from '@angular/core';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n@Component({\n selector: 'picker-results',\n host: {\n class: 'active',\n },\n template: `\n <novo-list *ngIf=\"matches.length > 0\" direction=\"vertical\">\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match)\"\n data-automation-id=\"picker-result-list-item\"\n >\n <item-content> <span [innerHtml]=\"match.label | highlight:term\"></span> </item-content>\n </novo-list-item>\n <novo-loading *ngIf=\"isLoading && matches.length > 0\" theme=\"line\"></novo-loading>\n </novo-list>\n <div class=\"picker-loader\" *ngIf=\"isLoading && matches.length === 0\"><novo-loading theme=\"line\"></novo-loading></div>\n <p class=\"picker-error\" *ngIf=\"hasError\">{{ labels.pickerError }}</p>\n <p class=\"picker-null-results\" *ngIf=\"hasNonErrorMessage\">{{ getEmptyMessage() }}</p>\n `,\n styleUrls: ['./PickerResults.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PickerResults extends BasePickerResults {\n constructor(element: ElementRef, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n get hasNonErrorMessage() {\n return !this.isLoading && !this.matches.length && !this.hasError;\n }\n\n getEmptyMessage() {\n if (this.shouldShowMessageForZeroLengthSearch()) {\n // this property comes from Field Interactions\n return this.config.emptyPickerMessage;\n } else {\n return this.term === '' ? this.labels.pickerTextFieldEmpty : this.labels.pickerEmpty;\n }\n }\n\n shouldShowMessageForZeroLengthSearch() {\n return this.config && this.config.minSearchLength === 0 && this.term === '' && this.config.emptyPickerMessage;\n }\n\n getListElement() {\n return this.element.nativeElement.querySelector('novo-list');\n }\n}\n","// NG2\nimport { ChangeDetectorRef, Component, ElementRef, HostBinding } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\n// App\nimport { BasePickerResults } from '../base-picker-results/BasePickerResults';\n\n@Component({\n selector: 'skill-specialty-picker-results',\n template: `\n <section class=\"picker-loading\" *ngIf=\"isLoading && !matches?.length\"><novo-loading theme=\"line\"></novo-loading></section>\n <novo-list *ngIf=\"matches.length > 0\" direction=\"vertical\">\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match)\"\n >\n <item-content>\n <h6><span [innerHtml]=\"match.label | highlight:term\"></span></h6>\n <div class=\"category\">\n <i class=\"bhi-category-tags\"></i\n ><span [innerHtml]=\"match.data.categories || match.data.parentCategory.name | highlight:term\"></span>\n </div>\n </item-content>\n </novo-list-item>\n <novo-list-item *ngIf=\"limitedTo\"\n ><div>{{ labels.showingXofXResults(limit, total) }}</div></novo-list-item\n >\n <novo-loading theme=\"line\" *ngIf=\"isLoading && matches.length > 0\"></novo-loading>\n </novo-list>\n <p class=\"picker-error\" *ngIf=\"hasError\">{{ labels.pickerError }}</p>\n <p class=\"picker-null\" *ngIf=\"!isLoading && !matches.length && !hasError\">{{ labels.pickerEmpty }}</p>\n `,\n styleUrls: ['./SkillsSpecialtyPickerResults.scss'],\n})\nexport class SkillsSpecialtyPickerResults extends BasePickerResults {\n @HostBinding('class.active')\n active: boolean = true;\n limitedTo: boolean = false;\n limit: number = 200;\n total: number;\n\n constructor(public element: ElementRef, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, ref);\n }\n\n getListElement(): any {\n return this.element.nativeElement.querySelector('novo-list');\n }\n\n /**\n * @name structureArray\n * @param collection - the data once getData resolves it\n *\n * @description This function structures an array of nodes into an array of objects with a\n * 'name' field by default.\n */\n structureArray(collection: any): any {\n let data = collection;\n if (collection.hasOwnProperty('data')) {\n this.limitedTo = collection.limitedTo200;\n this.total = collection.total;\n data = collection.data;\n } else if (data.length > this.limit) {\n this.limitedTo = true;\n this.total = data.length;\n data = data.slice(0, this.limit);\n }\n return super.structureArray(data);\n }\n}\n","// NG2\nimport { ChangeDetectorRef, Component, ElementRef, HostBinding } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NovoLabelService } from 'novo-elements/services';\n// Vendor\nimport {PickerResults} from '../picker-results';\n\n@Component({\n selector: 'workers-comp-codes-picker-results',\n host: {\n class: 'active',\n },\n template: `\n <section class=\"picker-loading\" *ngIf=\"isLoading && !matches?.length\">\n <novo-loading theme=\"line\"></novo-loading>\n </section>\n <novo-list direction=\"vertical\" *ngIf=\"matches?.length > 0 && !hasError\">\n <novo-list-item\n *ngFor=\"let match of matches\"\n (click)=\"selectMatch($event)\"\n [class.active]=\"match === activeMatch\"\n (mouseenter)=\"selectActive(match)\"\n [class.disabled]=\"preselected(match)\"\n >\n <item-header>\n <item-title>\n <span [innerHtml]=\"sanitizeHTML(match?.data?.compensation?.code, match?.data?.compensation?.name)\"></span>\n </item-title>\n </item-header>\n <item-content direction=\"horizontal\">\n <p>\n <span class=\"label\">{{ labels.state }}: </span><span>{{ match?.data?.compensation?.state }}</span>\n </p>\n <p>\n <span class=\"label\">{{ labels.rate }}: </span><span>{{ labels.formatCurrency(match?.data?.rate) }}</span>\n </p>\n </item-content>\n <item-content direction=\"horizontal\">\n <p>\n <span class=\"label\">{{ labels.startDate }}: </span\n ><span>{{ labels.formatDateWithFormat(match?.data?.startDate, { year: 'numeric', month: 'numeric', day: 'numeric' }) }}</span>\n </p>\n <p>\n <span class=\"label\">{{ labels.endDate }}: </span\n ><span>{{ labels.formatDateWithFormat(match?.data?.endDate, { year: 'numeric', month: 'numeric', day: 'numeric' }) }}</span>\n </p>\n </item-content>\n </novo-list-item>\n <novo-loading theme=\"line\" *ngIf=\"isLoading && matches?.length > 0\"></novo-loading>\n </novo-list>\n <div class=\"picker-loader\" *ngIf=\"isLoading && matches.length === 0\"><novo-loading theme=\"line\"></novo-loading></div>\n <p class=\"picker-error\" *ngIf=\"hasError\">{{ labels.pickerError }}</p>\n <p class=\"picker-null-results\" *ngIf=\"hasNonErrorMessage\">{{ getEmptyMessage() }}</p>\n `,\n})\nexport class WorkersCompCodesPickerResults extends PickerResults {\n\n constructor(element: ElementRef, private sanitizer: DomSanitizer, public labels: NovoLabelService, ref: ChangeDetectorRef) {\n super(element, labels, ref);\n }\n\n sanitizeHTML(compCode: string, name: string) {\n return this.sanitizer.bypassSecurityTrustHtml(`${compCode} | ${name}`);\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { ComponentUtils } from 'novo-elements/services';\nimport { Helpers, Key, notify } from 'novo-elements/utils';\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\n// import { NovoControlConfig } from '../form/FormControls';\nimport { PickerResults } from './extras/picker-results/PickerResults';\n\n// Value accessor for the component (supports ngModel)\nconst PICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NovoPickerElement),\n multi: true,\n};\n\nconst DEFAULT_DEBOUNCE_TIME = 250;\n\n/**\n * @description This class is the directive definition of the Picker. If you add an attribute of `picker` to an input,\n * it will create an instance of the picker which wraps the input in all of the picker HTML elements and functionality.\n * Picker should be added as a two-way bound ngModel instance `[(picker)]=\"\"` in order to have the picker options\n * dynamically populate.\n */\n@Component({\n selector: 'novo-picker',\n providers: [PICKER_VALUE_ACCESSOR],\n template: `\n <i class=\"bhi-more\" *ngIf=\"config?.entityIcon && !_value\"></i>\n <i class=\"bhi-{{ config?.entityIcon }} entity-icon {{ config?.entityIcon }}\" *ngIf=\"config?.entityIcon && _value\"></i>\n <input\n type=\"text\"\n class=\"picker-input\"\n [(ngModel)]=\"term\"\n [class.entity-picker]=\"config?.entityIcon\"\n [class.entity-selected]=\"config?.entityIcon && _value\"\n (ngModelChange)=\"checkTerm($event)\"\n [placeholder]=\"placeholder\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"onFocus($event)\"\n (click)=\"onFocus($event)\"\n (blur)=\"onTouched($event)\"\n [maxlength]=\"maxlength\"\n autocomplete=\"off\"\n #input\n [disabled]=\"disablePickerInput\"\n />\n <i class=\"bhi-search\" *ngIf=\"(!_value || clearValueOnSelect) && !disablePickerInput\"></i>\n <i\n class=\"bhi-times\"\n [class.entity-selected]=\"config?.entityIcon && _value\"\n *ngIf=\"_value && !clearValueOnSelect && !disablePickerInput\"\n (click)=\"clearValue(true)\"\n ></i>\n <novo-overlay-template class=\"picker-results-container\" [parent]=\"element\" [width]=\"width\" [minWidth]=\"minWidth\" position=\"above-below\" (closing)=\"onOverlayClosed()\">\n <span #results></span>\n <ng-content></ng-content>\n </novo-overlay-template>\n `,\n styleUrls: ['./Picker.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NovoPickerElement implements OnInit {\n // Container for the results\n @ViewChild('results', { read: ViewContainerRef, static: true })\n results: ViewContainerRef;\n\n @Input()\n config: any;\n @Input()\n placeholder: string;\n @Input()\n clearValueOnSelect: boolean;\n @Input()\n closeOnSelect: boolean = true;\n @Input()\n selected: Array<any> = [];\n // Deprecated\n @Input()\n appendToBody: boolean = false;\n // Deprecated\n @Input()\n parentScrollSelector: string;\n // Deprecated\n @Input()\n parentScrollAction: string = 'close';\n // Custom class for the dropdown container\n @Input()\n containerClass: string;\n // Side the dropdown will open\n @Input()\n side: string = 'left';\n // Autoselects the first option in the results\n @Input()\n autoSelectFirstOption: boolean = true;\n @Input()\n overrideElement: ElementRef;\n @Input()\n maxlength: number;\n @Input()\n allowCustomValues = false;\n @Input()\n width: string;\n @Input()\n minWidth: string;\n @Input()\n allowTabNavigation: boolean = false;\n\n // Disable from typing into the picker (result template does everything)\n @Input()\n set disablePickerInput(v: boolean) {\n this._disablePickerInput = coerceBooleanProperty(v);\n }\n\n get disablePickerInput() {\n return this._disablePickerInput;\n }\n\n private _disablePickerInput: boolean = false;\n\n // Emitter for selects\n @Output()\n changed: EventEmitter<any> = new EventEmitter();\n @Output()\n select: EventEmitter<any> = new EventEmitter();\n @Output()\n focus: EventEmitter<any> = new EventEmitter();\n @Output()\n blur: EventEmitter<any> = new EventEmitter();\n @Output()\n typing: EventEmitter<any> = new EventEmitter();\n @Output()\n tab: EventEmitter<any> = new EventEmitter();\n\n @ViewChild(NovoOverlayTemplateComponent, { static: true })\n public container: NovoOverlayTemplateComponent;\n @ViewChild('input', { static: true })\n public input: ElementRef;\n\n term: string = '';\n resultsComponent: any;\n popup: ComponentRef<any>;\n _value: any;\n onModelChange: Function = () => {};\n onModelTouched: Function = () => {};\n\n constructor(public element: ElementRef, private componentUtils: ComponentUtils, private ref: ChangeDetectorRef) {}\n\n ngOnInit() {\n if (this.overrideElement) {\n this.element = this.overrideElement;\n }\n if (this.appendToBody) {\n notify(`'appendToBody' has been deprecated. Please remove this attribute.`);\n }\n let debounceTimeInMilliSeconds = Number.isNaN(Number(this.config?.debounceTimeInMilliSeconds)) ? DEFAULT_DEBOUNCE_TIME : Number(this.config?.debounceTimeInMilliSeconds);\n // Custom results template\n this.resultsComponent = this.config.resultsTemplate || PickerResults;\n // Get all distinct key up events from the input and only fire if long enough and distinct\n // let input = this.element.nativeElement.querySelector('input');\n const pasteObserver = fromEvent(this.input.nativeElement, 'paste').pipe(debounceTime(debounceTimeInMilliSeconds), distinctUntilChanged());\n pasteObserver.subscribe(\n (event: ClipboardEvent) => this.onDebouncedKeyup(event),\n (err) => this.hideResults(err),\n );\n const keyboardObserver = fromEvent(this.input.nativeElement, 'keyup').pipe(debounceTime(debounceTimeInMilliSeconds), distinctUntilChanged());\n keyboardObserver.subscribe(\n (event: KeyboardEvent) => this.onDebouncedKeyup(event),\n (err) => this.hideResults(err),\n );\n }\n\n private onDebouncedKeyup(event: KeyboardEvent | ClipboardEvent) {\n if ([Key.Escape, Key.ArrowDown, Key.ArrowUp, Key.Enter, Key.Tab].some((key) => key === (event as KeyboardEvent).key)) {\n return;\n }\n this.show((event.target as any).value);\n }\n\n public openPanel(): void {\n this.container.openPanel();\n }\n\n public closePanel(): void {\n this.container.closePanel();\n }\n\n public get panelOpen(): boolean {\n return this.container && this.container.panelOpen;\n }\n\n private show(term?: string): void {\n this.openPanel();\n // Show the results inside\n this.showResults(term);\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (this.disablePickerInput) {\n Helpers.swallowEvent(event);\n return;\n }\n if (this.panelOpen && !this.disablePickerInput) {\n if (event.key === Key.Escape || (event.key === Key.Tab && !this.allowTabNavigation)) {\n this.hideResults();\n return;\n }\n\n if (event.key === Key.ArrowUp) {\n this.popup.instance.prevActiveMatch();\n this.ref.markForCheck();\n return;\n }\n\n if (event.key === Key.ArrowDown) {\n this.popup.instance.nextActiveMatch();\n this.ref.markForCheck();\n return;\n }\n\n if (event.key === Key.Enter) {\n const activeMatch = this.popup.instance.activeMatch;\n if (!this.selected.find((selected) => activeMatch && activeMatch.value && selected.value === activeMatch.value)) {\n this.popup.instance.selectActiveMatch();\n this.ref.markForCheck();\n }\n return;\n }\n\n if ((event.key === Key.Backspace || event.key === Key.Delete) && !Helpers.isEmpty(this._value) && (this._value === this.term)) {\n this.clearValue(false);\n this.closePanel();\n }\n if (event.key === Key.Delete && Helpers.isBlank(this._value)) {\n this.clearValue(true);\n }\n }\n\n if (this.allowTabNavigation && event.key === Key.Tab) {\n this.closePanel();\n this.tab.emit();\n }\n }\n\n clearValue(wipeTerm) {\n this._value = null;\n this.select.emit(this._value);\n this.changed.emit({ value: this._value, rawValue: { label: '', value: this._value } });\n this.onModelChange(this._value);\n\n if (wipeTerm) {\n this.term = '';\n if (this.popup?.instance) {\n this.popup.instance.customTextValue = null;\n }\n this.hideResults();\n }\n this.ref.markForCheck();\n }\n\n /**\n * @description When the input's focus event is called this method calls the debounced function that displays the\n * results.\n */\n onFocus(event) {\n if (!this.panelOpen) {\n this.show();\n }\n this.focus.emit(event);\n }\n\n // Creates an instance of the results (called popup) and adds all the bindings to that instance.\n showResults(term?: any) {\n // Update Matches\n if (this.popup) {\n // Update existing list or create the DOM element\n this.popup.instance.config = this.config;\n this.popup.instance.term = this.term;\n this.popup.instance.selected = this.selected;\n this.popup.instance.autoSelectFirstOption = this.autoSelectFirstOption;\n this.ref.markForCheck();\n } else {\n this.popup = this.componentUtils.append(this.resultsComponent, this.results);\n this.popup.instance.parent = this;\n this.popup.instance.config = this.config;\n this.popup.instance.term = this.term;\n this.popup.instance.selected = this.selected;\n this.popup.instance.autoSelectFirstOption = this.autoSelectFirstOption;\n this.popup.instance.overlay = this.container.overlayRef;\n this.ref.markForCheck();\n }\n }\n\n // Tells the overlay component to hide the picker results from the DOM without deleting the dynamically allocated popup instance created in\n // showResults. The popup instance will remain in memory from the first time the results are shown until this component is destroyed.\n hideResults(err?: any) {\n this.closePanel();\n this.ref.markForCheck();\n }\n\n // Cleans up listeners for the popup - will get executed no matter how the popup is closed.\n onOverlayClosed(): void {\n if (this.popup && this.popup.instance && this.popup.instance.cleanUp) {\n this.popup.instance.cleanUp();\n }\n }\n\n // get accessor\n get value() {\n return this._value;\n }\n\n // set accessor including call the onchange callback\n set value(selected) {\n if (!selected) {\n this.term = '';\n this._value = null;\n this.onModelChange(this._value);\n } else if (selected.value !== this._value) {\n this.term = this.clearValueOnSelect ? '' : selected.label;\n this._value = selected.value;\n this.changed.emit({ value: selected.value, rawValue: { label: this.term, value: selected.value } });\n this.select.emit(selected);\n this.onModelChange(selected.value);\n if (this.popup) {\n this.popup.instance.selected = this.selected;\n }\n } else {\n this.term = this.clearValueOnSelect ? '' : selected.label;\n this.changed.emit({ value: selected.value, rawValue: { label: this.term, value: this._value } });\n this.select.emit(selected);\n }\n this.ref.markForCheck();\n }\n\n // Makes sure to clear the model if the user clears the text box\n checkTerm(event) {\n this.typing.emit(event);\n if (this.allowCustomValues) {\n if (this.term) {\n this.popup.instance.customTextValue = { label: this.term, value: this.term }\n } else {\n this.popup.instance.customTextValue = null;\n }\n }\n if ((!event || !event.length) && !Helpers.isEmpty(this._value)) {\n this._value = null;\n this.onModelChange(this._value);\n }\n this.ref.markForCheck();\n }\n\n // Set touched on blur\n onTouched(event?: Event) {\n this.onModelTouched();\n this.blur.emit(event);\n }\n\n // From ControlValueAccessor interface\n writeValue(value: any) {\n if (this.clearValueOnSelect) {\n this.term = '';\n } else {\n if (typeof value === 'string' && !this.config.useGetLabels) {\n this.term = value;\n } else if (value && value.label) {\n this.term = value.label;\n } else if (value && value.firstName) {\n this.term = `${value.firstName} ${value.lastName}`;\n } else if (value && value.name) {\n this.term = value.name;\n } else if (typeof this.config.getLabels === 'function') {\n this.config.getLabels(value).then((result) => {\n if (result) {\n this.term = result.length ? result[0].label || '' : result.label || '';\n } else {\n this.term = value;\n }\n this.ref.markForCheck();\n });\n } else if (value && value.title) {\n this.term = value.title;\n } else {\n this.term = value || '';\n }\n }\n this._value = value;\n this.ref.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this._disablePickerInput = disabled;\n }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// APP\nimport { NovoPipesModule } from 'novo-elements/pipes';\nimport { NovoCommonModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoListModule } from 'novo-elements/elements/list';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoSwitchModule } from 'novo-elements/elements/switch';\nimport { ChecklistPickerResults } from './extras/checklist-picker-results/ChecklistPickerResults';\nimport { DistributionListPickerResults } from './extras/distributionlist-picker-results/DistributionListPickerResults';\nimport { EntityPickerResult, EntityPickerResults } from './extras/entity-picker-results/EntityPickerResults';\nimport { GroupedMultiPickerResults } from './extras/grouped-multi-picker-results/GroupedMultiPickerResults';\nimport { MixedMultiPickerResults } from './extras/mixed-multi-picker-results/MixedMultiPickerResults';\nimport { PickerResults } from './extras/picker-results/PickerResults';\nimport { SkillsSpecialtyPickerResults } from './extras/skills-picker-results/SkillsSpecialtyPickerResults';\nimport { WorkersCompCodesPickerResults } from './extras/workers-comp-codes-picker-results/WorkersCompCodesPickerResults';\nimport { NovoPickerElement } from './Picker';\n\n@NgModule({\n imports: [CommonModule, NovoPipesModule, FormsModule, NovoCommonModule, NovoLoadingModule, NovoListModule, NovoOverlayModule, NovoSwitchModule],\n declarations: [\n NovoPickerElement,\n PickerResults,\n EntityPickerResult,\n EntityPickerResults,\n ChecklistPickerResults,\n GroupedMultiPickerResults,\n MixedMultiPickerResults,\n DistributionListPickerResults,\n WorkersCompCodesPickerResults,\n SkillsSpecialtyPickerResults,\n ],\n exports: [\n NovoPickerElement,\n PickerResults,\n EntityPickerResult,\n EntityPickerResults,\n ChecklistPickerResults,\n GroupedMultiPickerResults,\n MixedMultiPickerResults,\n DistributionListPickerResults,\n WorkersCompCodesPickerResults,\n SkillsSpecialtyPickerResults,\n ],\n})\nexport class NovoPickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i1","i2","i3","i5","i6"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOA;AAEA;;;AAGG;MAEU,iBAAiB,CAAA;IAqB5B,IACI,OAAO,CAAC,CAAa,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KACnB;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;KACxF;IAED,WAAY,CAAA,OAAmB,EAAE,GAAsB,EAAA;QA7BvD,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAQ,CAAA,QAAA,GAAe,EAAE,CAAC;QAC1B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAQ,CAAA,QAAA,GAAY,IAAI,CAAC;QAMzB,IAAI,CAAA,IAAA,GAAW,CAAC,CAAC;QACjB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAqB,CAAA,qBAAA,GAAY,IAAI,CAAC;QAEtC,IAAyB,CAAA,yBAAA,GAAY,KAAK,CAAC;QACnC,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAE1C,IAAQ,CAAA,QAAA,GAAe,EAAE,CAAC;QAC1B,IAAe,CAAA,eAAA,GAAQ,IAAI,CAAC;AAY1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnD;IAED,OAAO,GAAA;AACL,QAAA,MAAM,OAAO,GAAY,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE;AACrD,YAAA,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAC1C,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SAC3D;KACF;AAED,IAAA,YAAY,CAAC,KAAiB,EAAA;AAC5B,QAAA,MAAM,OAAO,GAAQ,KAAK,CAAC,MAAM,CAAC;QAClC,IAAI,OAAO,EAAE;YACX,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;AACxD,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1C,YAAA,IAAI,MAAM,IAAI,MAAM,EAAE;gBACpB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBACrC,IAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;aACF;SACF;KACF;IAED,IACI,IAAI,CAAC,KAAK,EAAA;AACZ,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACd,YAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;AACvC,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC1B;aAAM;YACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;KACF;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,IAAI,MAAM,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE;AACxD,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;SACvC;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,MAAM,cAAc,GAAG,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;AAC5C,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;AAE5C,QAAA,OAAO,cAAc,IAAI,mBAAmB,IAAI,IAAI,CAAC,yBAAyB,CAAC;KAChF;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;AACpC,YAAA,MAAM,OAAO,GAAY,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE;AACtD,gBAAA,OAAO,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;gBAC/C,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;aACxD;SACF;KACF;AAED,IAAA,aAAa,CAAC,WAAqB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAC9B,CAAC,OAAY,KAAI;YACf,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;aACnB;AACD,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aACzC;iBAAM;gBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;aAC5C;AACD,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBACnF,IAAI,CAAC,eAAe,EAAE,CAAC;aACxB;AACD,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACxB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B,CAAC,CAAC;AACL,SAAC,EACD,CAAC,GAAG,KAAI;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,YAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACpB;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1B,SAAC,CACF,CAAC;KACH;IAED,MAAM,CAAC,IAAI,EAAE,IAAK,EAAA;AAChB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACpC,OAAO,IAAI,CACT,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;;YAE9B,IAAI,OAAO,EAAE;;AAEX,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1B,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;;oBAErB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;iBACvC;AAAM,qBAAA,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE;AAC/C,oBAAA,IACE,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC;wBACtE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EACrD;AACA,wBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;;AAEtB,wBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;qBACpE;AAAM,yBAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AACxC,wBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;;AAEtB,wBAAA,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;6BACvB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,6BAAA,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;qBAC1B;yBAAM;;wBAEL,MAAM,CAAC,gDAAgD,CAAC,CAAC;AACzD,wBAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;qBACnE;iBACF;qBAAM;AACL,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC9B,wBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;wBACtB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,UAAU,EAAE;AACpD,4BAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,4BAAA,IAAI,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;AAChE,gCAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;6BAC3E;iCAAM;gCACL,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;6BAC9C;yBACF;6BAAM;AACL,4BAAA,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;yBAC1D;qBACF;yBAAM;;wBAEL,MAAM,CAAC,gBAAgB,CAAC,CAAC;qBAC1B;iBACF;aACF;iBAAM;;gBAEL,MAAM,CAAC,OAAO,CAAC,CAAC;aACjB;SACF,CAAC,CACH,CAAC;KACH;AAED,IAAA,yBAAyB,CAAC,IAAY,EAAA;QACpC,IAAI,IAAI,CAAC,MAAM,IAAI,iBAAiB,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;AACpG,YAAA,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;SAC/E;aAAM;YACL,OAAO,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;SAChC;KACF;AAED;;;;;AAKG;AACH,IAAA,cAAc,CAAC,UAAe,EAAA;AAC5B,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC;QACjE,IAAI,SAAS,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE;AACvF,YAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;gBAC7B,OAAO;AACL,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,KAAK,EAAE,IAAI;iBACZ,CAAC;AACJ,aAAC,CAAC,CAAC;SACJ;AACD,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;AAC7E,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC3B,gBAAA,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;aAC5D;AACD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/G,YAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAChC,SAAC,CAAC,CAAC;KACJ;AAED;;;;;AAKG;AACH,IAAA,UAAU,CAAC,OAAO,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;AACxB,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;gBAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7E,aAAC,CAAC,CAAC;SACJ;;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;AAEG;IACH,iBAAiB,GAAA;QACf,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;AAED;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;KACnC;IAED,wBAAwB,GAAA;QACtB,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC;SAC3C;AACD,QAAA,OAAO,QAAQ,CAAC;KACjB;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACrD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SACjC;KACF;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAK,EAAA;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;AAED;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC;KACnC;AAED;;AAEG;IACH,WAAW,CAAC,KAAW,EAAE,IAAU,EAAA;QACjC,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;AAClC,QAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC7B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC7B,gBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;aAC3B;AACD,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC/B;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACxB,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,aAAa,EAAA;;QAExB,OAAO,aAAa,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;KAChE;AAED;;AAEG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,EAAA;;AAEpB,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,qBAAqB,CAAC,GAAG,KAAK,CAAC;KAChH;AAED,IAAA,WAAW,CAAC,KAAK,EAAA;AACf,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvC,YAAA,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACxD;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC1C,YAAA,MAAM,eAAe,GAAa,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC1D,QACE,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC1B,gBAAA,OAAO,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,aAAC,CAAC,KAAK,CAAC,CAAC,EACT;SACH;QACD,QACE,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YAC1B,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9C,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE;AACnC,oBAAA,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;iBAClD;AAAM,qBAAA,IAAI,IAAI,CAAC,KAAK,YAAY,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;oBAC7E,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;iBAClD;qBAAM;oBACL,aAAa,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;iBAC5C;aACF;AACD,YAAA,OAAO,aAAa,CAAC;AACvB,SAAC,CAAC,KAAK,CAAC,CAAC,EACT;KACH;+GAxXU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAjB,iBAAiB,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;+GAuBJ,OAAO,EAAA,CAAA;sBADV,KAAK;gBAsCF,IAAI,EAAA,CAAA;sBADP,KAAK;;;ACxER;AASA;;AAEG;AAmCG,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AAG3D,IAAA,WAAA,CAAY,OAAmB,EAAS,MAAwB,EAAE,GAAsB,EAAA;AACtF,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QADkB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;KAE/D;IAED,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;QAEpC,OAAO,IAAI,CACT,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;;YAE9B,IAAI,OAAO,EAAE;;AAEX,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1B,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;;oBAErB,OAAO,CAAC,OAAO,CAAC,CAAC;iBAClB;qBAAM;;oBAEL,MAAM,CAAC,gDAAgD,CAAC,CAAC;AACzD,oBAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;iBACnE;aACF;iBAAM;;gBAEL,MAAM,CAAC,OAAO,CAAC,CAAC;aACjB;SACF,CAAC,CACH,CAAC;KACH;AAED;;;;;AAKG;AACH,IAAA,UAAU,CAAC,OAAO,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;gBAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;oBAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7E,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;AACrB,gBAAA,OAAO,OAAO,CAAC;aAChB,EAAE,IAAI,CAAC,CAAC;YACT,OAAO,IAAI,CAAC,eAAe,CAAC;SAC7B;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE;AAC3B,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAC1B,gBAAA,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;AACtC,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,OAAO,CAAC;SAChB;;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;IAED,WAAW,CAAC,KAAK,EAAE,IAAI,EAAA;AACrB,QAAA,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;aAAM;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;SAC9B;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;SAC9B;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACxB,QAAA,OAAO,KAAK,CAAC;KACd;+GAzEU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EA7BvB,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAlClC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT,EAAA,CAAA;AACF,iBAAA,CAAA;;;AC7CD;AAwCM,MAAO,6BAA8B,SAAQ,iBAAiB,CAAA;AAGlE,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;KAClC;AAED,IAAA,WAAA,CAAY,OAAmB,EAAU,SAAuB,EAAS,MAAwB,EAAE,GAAsB,EAAA;AACvH,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QADmB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;QAAS,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;QANjG,IAAM,CAAA,MAAA,GAAY,IAAI,CAAC;AAQrB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;KAC9D;AAED,IAAA,YAAY,CAAC,IAAS,EAAA;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;KACrD;+GAnBU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EA/B9B,QAAA,EAAA,kCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAjCzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA;AACF,iBAAA,CAAA;2KAGC,MAAM,EAAA,CAAA;sBADL,WAAW;uBAAC,cAAc,CAAA;gBAGvB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,QAAQ,CAAA;;;MCiDV,kBAAkB,CAAA;AAK7B,IAAA,WAAA,CAAmB,MAAwB,EAAA;QAAxB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;AAFjC,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;KAEV;AAE/C;;;AAGG;AACH,IAAA,YAAY,CAAC,aAAa,EAAA;;QAExB,OAAO,aAAa,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;KAChE;AAED;;AAEG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,EAAA;;AAEpB,QAAA,OAAO,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,qBAAqB,CAAC,GAAG,KAAK,CAAC;KACzH;AAED,IAAA,gBAAgB,CAAC,MAAY,EAAA;QAC3B,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,MAAM,CAAC,YAAY;AACzB,gBAAA,KAAK,eAAe;AAClB,oBAAA,OAAO,gBAAgB,CAAC;AAC1B,gBAAA,KAAK,mBAAmB;AACtB,oBAAA,OAAO,SAAS,CAAC;AACnB,gBAAA,KAAK,aAAa;AAChB,oBAAA,OAAO,aAAa,CAAC;AACvB,gBAAA,KAAK,WAAW;AACd,oBAAA,OAAO,WAAW,CAAC;AACrB,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,MAAM,CAAC;AAChB,gBAAA,KAAK,UAAU;AACb,oBAAA,OAAO,KAAK,CAAC;AACf,gBAAA,KAAK,WAAW;AACd,oBAAA,OAAO,gBAAgB,CAAC;AAC1B,gBAAA,KAAK,eAAe;AAClB,oBAAA,OAAO,MAAM,CAAC;AAChB,gBAAA,KAAK,uBAAuB;AAC1B,oBAAA,OAAO,YAAY,CAAC;AACtB,gBAAA,KAAK,UAAU;AACb,oBAAA,OAAO,oBAAoB,CAAC;AAC9B,gBAAA;AACE,oBAAA,OAAO,EAAE,CAAC;aACb;SACF;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,eAAe,CAAC,IAAU,EAAA;QACxB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,IAAI,EAAE;YACR,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3G;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAED,IAAA,UAAU,CAAC,OAAgB,EAAA;QACzB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,OAAO,EAAE;AACX,YAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SACvD;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAED,IAAA,kBAAkB,CAAC,OAAgB,EAAA;QACjC,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,OAAO,EAAE;YACX,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC7C;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAED,IAAA,gBAAgB,CAAC,MAAY,EAAA;QAC3B,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,MAAM,CAAC,YAAY;AACzB,gBAAA,KAAK,MAAM,CAAC;AACZ,gBAAA,KAAK,eAAe,CAAC;AACrB,gBAAA,KAAK,eAAe,CAAC;AACrB,gBAAA,KAAK,WAAW,CAAC;AACjB,gBAAA,KAAK,QAAQ;AACX,oBAAA,IAAI,WAAW,IAAI,MAAM,EAAE;AACzB,wBAAA,OAAO,CAAG,EAAA,MAAM,CAAC,SAAS,CAAI,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAE,CAAA,CAAC,IAAI,EAAE,CAAC;qBACxD;oBACD,OAAO,CAAA,EAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAE,CAAA,CAAC,IAAI,EAAE,CAAC;AACvC,gBAAA,KAAK,mBAAmB;oBACtB,OAAO,CAAA,EAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAE,CAAA,CAAC,IAAI,EAAE,CAAC;AACvC,gBAAA,KAAK,aAAa,CAAC;AACnB,gBAAA,KAAK,UAAU,CAAC;AAChB,gBAAA,KAAK,gBAAgB,CAAC;AACtB,gBAAA,KAAK,aAAa;AAChB,oBAAA,OAAO,CAAG,EAAA,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA,CAAE,CAAC,IAAI,EAAE,CAAC;AACvD,gBAAA,KAAK,WAAW;AACd,oBAAA,IAAI,KAAK,GAAG,CAAA,EAAG,MAAM,CAAC,EAAE,EAAE,CAAC;oBAC3B,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE;wBACvC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE;4BACvC,KAAK,GAAG,CAAG,EAAA,KAAK,CAAM,GAAA,EAAA,MAAM,CAAC,SAAS,CAAC,SAAS,CAAA,CAAA,EAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAM,GAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAA,CAAC,IAAI,EAAE,CAAC;yBACnH;AAAM,6BAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AAC1B,4BAAA,KAAK,GAAG,CAAA,EAAG,KAAK,CAAA,GAAA,EAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAA,CAAE,CAAC,IAAI,EAAE,CAAC;yBACtD;6BAAM;AACL,4BAAA,KAAK,GAAG,CAAG,EAAA,KAAK,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;yBACxF;qBACF;AACD,oBAAA,OAAO,KAAK,CAAC;AACf,gBAAA,KAAK,UAAU;oBACb,OAAO,CAAA,EAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAA,GAAA,EAAM,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAChG,gBAAA;AACE,oBAAA,OAAO,CAAG,EAAA,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA,CAAE,CAAC,IAAI,EAAE,CAAC;aACxD;SACF;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GArHU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAtFnB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmFT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAxF9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EACtB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmFT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2GAAA,CAAA,EAAA,CAAA;qFAIQ,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACI,MAAM,EAAA,CAAA;sBAAf,MAAM;;AA+IH,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;AAGxD,IAAA,WAAA,CAAY,OAAmB,EAAS,MAAwB,EAAE,GAAsB,EAAA;AACtF,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QADkB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;AAFtD,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;KAIxD;AAED,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;KAClE;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;KAC9D;IAED,WAAW,CAAC,KAAW,EAAE,IAAU,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACvC;+GAlBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAxBpB,QAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6sdAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA3IU,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAkJlB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA1B/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EACvB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;GAiBT,EAEc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,4BAA4B;AACpC,qBAAA,EAAA,MAAA,EAAA,CAAA,6sdAAA,CAAA,EAAA,CAAA;8IAGS,MAAM,EAAA,CAAA;sBAAf,MAAM;;;ACzIH,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;IAmB9D,IAAI,IAAI,CAAC,KAAK,EAAA;;AAEZ,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE;AAClE,YAAA,MAAM,IAAI,KAAK,CACb,yIAAyI,CAC1I,CAAC;SACH;;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;AACxD,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC;AACvE,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE;AACtE,gBAAA,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;aACzG;SACF;aAAM;AACL,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;SAClC;;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACpD,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SAC5C;;QAED,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1C,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACrD,YAAA,QACE,IAAI,CAAC,MAAM,CAAC,UAAU;AACtB,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAA2B,KAAI;AAClF,oBAAA,OAAO,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC;iBACjC,CAAC,EACF;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,WAAA,CAAY,OAAmB,EAAU,QAAmB,EAAS,MAAwB,EAAE,GAAsB,EAAA;AACnH,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QADmB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAS,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;QAxDtF,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;QAErC,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AAGxB,QAAA,IAAA,CAAA,WAAW,GAA6F,IAAI,GAAG,EAGpH,CAAC;KAkDH;IAEM,QAAQ,GAAA;;AAEb,QAAA,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;aAC5E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC;AAC/C,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;YAClC,IAAI,CAAC,UAAU,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;AAC3D,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1B,SAAC,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;;AAEhB,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;KACzC;IAEM,cAAc,GAAA;;AAEnB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AACzC,iBAAA,MAAM,CAAC,CAAC,QAA2B,KAAI;AACtC,gBAAA,OAAO,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC;AAClC,aAAC,CAAC;AACD,iBAAA,OAAO,CAAC,CAAC,CAAiD,KAAK,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACpF,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB;KACF;AAEM,IAAA,cAAc,CAAC,QAA0C,EAAA;;AAE9D,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;;AAElF,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;;AAExC,QAAA,MAAM,GAAG,GAAW,QAAQ,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;;AAEjC,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;;AAExB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;KACnC;AAEM,IAAA,eAAe,CAAC,KAAiB,EAAA;AACtC,QAAA,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;AAChG,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;IAEM,WAAW,CAAC,KAAkB,EAAE,IAAuC,EAAA;;AAE5E,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACxC,QAAA,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACjC;AAEM,IAAA,gBAAgB,CAAC,KAAc,EAAA;AACpC,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;;AAE/B,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;;AAEzB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;;AAEvB,YAAA,MAAM,GAAG,GAAW,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;;YAEhD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB;;QAED,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1C,SAAC,CAAC,CAAC;KACJ;IAED,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;aACpF;iBAAM;AACL,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;aAC7E;SACF;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAEO,aAAa,CAAC,QAA0C,EAAE,GAAW,EAAA;;AAE3E,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE;AACzC,gBAAA,MAAM,IAAI,KAAK,CACb,0LAA0L,CAC3L,CAAC;aACH;YACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,KAAyC,KAAI;oBACnH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;oBACnF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACxC,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;oBACxB,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1C,qBAAC,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;aACJ;iBAAM;AACL,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5D,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;aACzB;SACF;KACF;AAEO,IAAA,MAAM,CACZ,KAA4D,EAC5D,kBAAA,GAA8B,KAAK,EAAA;QAEnC,IAAI,OAAO,GAA0D,KAAK,CAAC;AAC3E,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;gBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACjD,gBAAA,OAAO,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAClH,aAAC,CAAC,CAAC;SACJ;AACD,QAAA,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,IAAI,CAAC,kBAAkB,EAAE;YAC7F,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;SAC5G;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;+GAzMU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EA5F1B,QAAA,EAAA,8BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0zGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA9FrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAC9B,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0zGAAA,CAAA,EAAA,CAAA;sKAKO,YAAY,EAAA,CAAA;sBADnB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAG5B,WAAW,EAAA,CAAA;sBADlB,SAAS;uBAAC,MAAM,CAAA;;;AChBb,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;IAkB5D,IAAI,IAAI,CAAC,KAAK,EAAA;AACZ,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SAC5C;;QAED,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1C,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;KAClC;AAED,IAAA,WAAA,CAAY,OAAmB,EAAU,QAAmB,EAAS,MAAwB,EAAE,GAAsB,EAAA;AACnH,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QADmB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAS,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;QAxBtF,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QACzB,IAAiB,CAAA,iBAAA,GAAW,EAAE,CAAC;AAI9B,QAAA,IAAA,CAAA,WAAW,GAA6F,IAAI,GAAG,EAGpH,CAAC;KAkBH;IAEM,WAAW,GAAA;;AAEhB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;SACzC;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACrC,gBAAA,IAAI,MAAM,CAAC,qBAAqB,EAAE;AAChC,oBAAA,MAAM,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;iBAC5C;AACH,aAAC,CAAC,CAAC;SACJ;KACF;IAEM,mBAAmB,CAAC,aAAsC,EAAE,KAAkB,EAAA;AACnF,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;SACzC;;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;;AAElF,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;;AAExC,QAAA,MAAM,GAAG,GAAW,aAAa,CAAC,KAAK,CAAC;AACxC,QAAA,IAAI,CAAC,qBAAqB,GAAG,aAAa,CAAC;;AAE3C,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;;AAExB,QAAA,IAAI,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE;;AAEjD,YAAA,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;iBAC5E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC;AAC/C,iBAAA,SAAS,CAAC,CAAC,QAAuB,KAAI;gBACrC,IAAI,CAAC,UAAU,GAAI,QAAQ,CAAC,MAA2B,CAAC,KAAK,CAAC;AAC9D,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACjC,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1B,aAAC,CAAC,CAAC;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;SACnC;aAAM;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACzB;KACF;AAEM,IAAA,WAAW,CAAC,KAAkB,EAAA;;AAEnC,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACxC,QAAA,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACjC;AAEM,IAAA,eAAe,CAAC,KAAiB,EAAA;AACtC,QAAA,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/G,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;AAEM,IAAA,yBAAyB,CAAC,aAAsC,EAAA;AACrE,QAAA,OAAO,CAAC,EAAE,aAAa,KAAK,aAAa,CAAC,gBAAgB,IAAI,aAAa,CAAC,wBAAwB,CAAC,CAAC,CAAC;KACxG;AAEM,IAAA,mBAAmB,CAAC,aAAsC,EAAA;QAC/D,OAAO,CAAC,EAAE,aAAa,IAAI,aAAa,CAAC,4BAA4B,CAAC,CAAC;KACxE;AAEM,IAAA,kBAAkB,CAAC,aAAsC,EAAA;QAC9D,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC7C,IAAI,aAAa,CAAC,KAAK,KAAK,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE;AAC7D,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,gBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;aACnC;YACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;gBAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;aACjE;iBAAM;AACL,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;aAClF;SACF;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAEO,IAAA,MAAM,CAAC,KAA4D,EAAA;QACzE,IAAI,OAAO,GAA0D,KAAK,CAAC;AAC3E,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACjF,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;gBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACjD,gBAAA,OAAO,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAClH,aAAC,CAAC,CAAC;SACJ;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAEO,IAAA,aAAa,CAAC,aAAsC,EAAA;;AAE1D,QAAA,IAAI,aAAa,CAAC,gBAAgB,EAAE;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB;aAAM;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,wBAAwB,EAAE;AAC3C,gBAAA,MAAM,IAAI,KAAK,CAAC,oGAAoG,CAAC,CAAC;aACvH;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC9C,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,aAAa,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAyC,KAAI;oBAC1F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC7G,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;oBACxB,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1C,qBAAC,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,aAAa,CAAC,qBAAqB,EAAE;AACvC,oBAAA,aAAa,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAK;AACjD,wBAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AACzC,qBAAC,CAAC,CAAC;iBACJ;aACF;iBAAM;gBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5E,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;aACzB;SACF;KACF;+GAtKU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAhExB,QAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DD,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2vHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAlEnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAC5B,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DD,UAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2vHAAA,CAAA,EAAA,CAAA;sKAKD,YAAY,EAAA,CAAA;sBADnB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAG5B,WAAW,EAAA,CAAA;sBADlB,SAAS;uBAAC,MAAM,CAAA;;;AC5FnB;AAgCM,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AAClD,IAAA,WAAA,CAAY,OAAmB,EAAS,MAAwB,EAAE,GAAsB,EAAA;AACtF,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QADkB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;KAE/D;AAED,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;KAClE;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,oCAAoC,EAAE,EAAE;;AAE/C,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;SACvC;aAAM;YACL,OAAO,IAAI,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SACtF;KACF;IAED,oCAAoC,GAAA;QAClC,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;KAC/G;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;KAC9D;+GAxBU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EArBd,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6sdAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAIU,aAAa,EAAA,UAAA,EAAA,CAAA;kBA1BzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EACpB,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,QAAQ;qBAChB,EACS,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;GAiBT,EAEc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,6sdAAA,CAAA,EAAA,CAAA;;;AC9BvC;AAoCM,MAAO,4BAA6B,SAAQ,iBAAiB,CAAA;AAOjE,IAAA,WAAA,CAAmB,OAAmB,EAAS,MAAwB,EAAE,GAAsB,EAAA;AAC7F,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QADH,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QAAS,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;QALvE,IAAM,CAAA,MAAA,GAAY,IAAI,CAAC;QACvB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAW,GAAG,CAAC;KAKnB;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;KAC9D;AAED;;;;;;AAMG;AACH,IAAA,cAAc,CAAC,UAAe,EAAA;QAC5B,IAAI,IAAI,GAAG,UAAU,CAAC;AACtB,QAAA,IAAI,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC;AACzC,YAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;SACxB;aAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAClC;AACD,QAAA,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KACnC;+GAlCU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EA5B7B,QAAA,EAAA,gCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qiCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA9BxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,EAChC,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qiCAAA,CAAA,EAAA,CAAA;8IAKD,MAAM,EAAA,CAAA;sBADL,WAAW;uBAAC,cAAc,CAAA;;;ACrC7B;AAuDM,MAAO,6BAA8B,SAAQ,aAAa,CAAA;AAE9D,IAAA,WAAA,CAAY,OAAmB,EAAU,SAAuB,EAAS,MAAwB,EAAE,GAAsB,EAAA;AACvH,QAAA,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QADW,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;QAAS,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;KAEhG;IAED,YAAY,CAAC,QAAgB,EAAE,IAAY,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAG,EAAA,QAAQ,CAAM,GAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;KACxE;+GARU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EA3C9B,QAAA,EAAA,mCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAhDzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,QAAQ;AAChB,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCT,EAAA,CAAA;AACF,iBAAA,CAAA;;;AC9BD;AACA,MAAM,qBAAqB,GAAG;AAC5B,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC;;;;;AAKG;MAuCU,iBAAiB,CAAA;;IA+C5B,IACI,kBAAkB,CAAC,CAAU,EAAA;AAC/B,QAAA,IAAI,CAAC,mBAAmB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;KACrD;AAED,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACjC;AA8BD,IAAA,WAAA,CAAmB,OAAmB,EAAU,cAA8B,EAAU,GAAsB,EAAA;QAA3F,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QAAU,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAAU,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAxE9G,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;QAE9B,IAAQ,CAAA,QAAA,GAAe,EAAE,CAAC;;QAG1B,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;;QAM9B,IAAkB,CAAA,kBAAA,GAAW,OAAO,CAAC;;QAMrC,IAAI,CAAA,IAAA,GAAW,MAAM,CAAC;;QAGtB,IAAqB,CAAA,qBAAA,GAAY,IAAI,CAAC;QAMtC,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAM1B,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;QAY5B,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;;AAI7C,QAAA,IAAA,CAAA,OAAO,GAAsB,IAAI,YAAY,EAAE,CAAC;AAEhD,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;AAE/C,QAAA,IAAA,CAAA,KAAK,GAAsB,IAAI,YAAY,EAAE,CAAC;AAE9C,QAAA,IAAA,CAAA,IAAI,GAAsB,IAAI,YAAY,EAAE,CAAC;AAE7C,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;AAE/C,QAAA,IAAA,CAAA,GAAG,GAAsB,IAAI,YAAY,EAAE,CAAC;QAO5C,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;AAIlB,QAAA,IAAA,CAAA,aAAa,GAAa,MAAK,GAAG,CAAC;AACnC,QAAA,IAAA,CAAA,cAAc,GAAa,MAAK,GAAG,CAAC;KAE8E;IAElH,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;SACrC;AACD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,CAAC,CAAmE,iEAAA,CAAA,CAAC,CAAC;SAC7E;AACD,QAAA,IAAI,0BAA0B,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,GAAG,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;;QAEzK,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,aAAa,CAAC;;;QAGrE,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC1I,aAAa,CAAC,SAAS,CACrB,CAAC,KAAqB,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EACvD,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAC/B,CAAC;QACF,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC7I,gBAAgB,CAAC,SAAS,CACxB,CAAC,KAAoB,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EACtD,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAC/B,CAAC;KACH;AAEO,IAAA,gBAAgB,CAAC,KAAqC,EAAA;AAC5D,QAAA,IAAI,uIAA4D,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAM,KAAuB,CAAC,GAAG,CAAC,EAAE;YACpH,OAAO;SACR;QACD,IAAI,CAAC,IAAI,CAAE,KAAK,CAAC,MAAc,CAAC,KAAK,CAAC,CAAC;KACxC;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;KAC5B;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;KAC7B;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;KACnD;AAEO,IAAA,IAAI,CAAC,IAAa,EAAA;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;;AAEjB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACxB;AAED,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO;SACR;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC9C,YAAA,IAAI,KAAK,CAAC,GAAG,KAAe,QAAA,sBAAK,KAAK,CAAC,GAAG,KAAA,KAAA,kBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;gBACnF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,OAAO;aACR;AAED,YAAA,IAAI,KAAK,CAAC,GAAG,KAAA,SAAA,oBAAkB;AAC7B,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;AACtC,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBACxB,OAAO;aACR;AAED,YAAA,IAAI,KAAK,CAAC,GAAG,KAAA,WAAA,sBAAoB;AAC/B,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;AACtC,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBACxB,OAAO;aACR;AAED,YAAA,IAAI,KAAK,CAAC,GAAG,KAAA,OAAA,kBAAgB;gBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW,IAAI,WAAW,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE;AAC/G,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;AACxC,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;iBACzB;gBACD,OAAO;aACR;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,wCAAsB,KAAK,CAAC,GAAG,KAAe,QAAA,sBAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;AAC7H,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvB,IAAI,CAAC,UAAU,EAAE,CAAC;aACnB;AACD,YAAA,IAAI,KAAK,CAAC,GAAG,KAAA,QAAA,qBAAmB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC5D,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACvB;SACF;QAED,IAAI,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC,GAAG,KAAY,KAAA,gBAAE;YACpD,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACjB;KACF;AAED,IAAA,UAAU,CAAC,QAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;gBACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;aAC5C;YACD,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;AAED;;;AAGG;AACH,IAAA,OAAO,CAAC,KAAK,EAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxB;;AAGD,IAAA,WAAW,CAAC,IAAU,EAAA;;AAEpB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;;YAEd,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACvE,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB;aAAM;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7E,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACvE,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AACxD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB;KACF;;;AAID,IAAA,WAAW,CAAC,GAAS,EAAA;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;;IAGD,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE;AACpE,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;SAC/B;KACF;;AAGD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;IAGD,IAAI,KAAK,CAAC,QAAQ,EAAA;QAChB,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACjC;aAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC1D,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpG,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;aAC9C;SACF;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC1D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjG,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC5B;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;;AAGD,IAAA,SAAS,CAAC,KAAK,EAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;aAC7E;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;aAC5C;SACF;QACD,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC9D,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACjC;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;;AAGD,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACvB;;AAGD,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SAChB;aAAM;AACL,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC1D,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;aACnB;AAAM,iBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;aACzB;AAAM,iBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE;AACnC,gBAAA,IAAI,CAAC,IAAI,GAAG,CAAA,EAAG,KAAK,CAAC,SAAS,CAAA,CAAA,EAAI,KAAK,CAAC,QAAQ,CAAA,CAAE,CAAC;aACpD;AAAM,iBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE;AAC9B,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;aACxB;iBAAM,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;AACtD,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;oBAC3C,IAAI,MAAM,EAAE;wBACV,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;qBACxE;yBAAM;AACL,wBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;qBACnB;AACD,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1B,iBAAC,CAAC,CAAC;aACJ;AAAM,iBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;aACzB;iBAAM;AACL,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;aACzB;SACF;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;AAED,IAAA,gBAAgB,CAAC,EAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;AAED,IAAA,iBAAiB,CAAC,EAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC1B;AAED,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;KACrC;+GAlVU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAjB,iBAAiB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EApCjB,CAAC,qBAAqB,CAAC,yGAsCJ,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAsEnC,4BAA4B,EA3G7B,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+yKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,eAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAIU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAtC7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EACZ,SAAA,EAAA,CAAC,qBAAqB,CAAC,EACxB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BT,EAEc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,+yKAAA,CAAA,EAAA,CAAA;4IAKrC,OAAO,EAAA,CAAA;sBADN,SAAS;uBAAC,SAAS,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAI9D,MAAM,EAAA,CAAA;sBADL,KAAK;gBAGN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAGN,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAGN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAGN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAIN,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAIN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,qBAAqB,EAAA,CAAA;sBADpB,KAAK;gBAGN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAGN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAGN,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAGN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAGN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAGN,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAKF,kBAAkB,EAAA,CAAA;sBADrB,KAAK;gBAaN,OAAO,EAAA,CAAA;sBADN,MAAM;gBAGP,MAAM,EAAA,CAAA;sBADL,MAAM;gBAGP,KAAK,EAAA,CAAA;sBADJ,MAAM;gBAGP,IAAI,EAAA,CAAA;sBADH,MAAM;gBAGP,MAAM,EAAA,CAAA;sBADL,MAAM;gBAGP,GAAG,EAAA,CAAA;sBADF,MAAM;gBAIA,SAAS,EAAA,CAAA;sBADf,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAGlD,KAAK,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ACvJtC;MA+Ca,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAxBzB,iBAAiB;YACjB,aAAa;YACb,kBAAkB;YAClB,mBAAmB;YACnB,sBAAsB;YACtB,yBAAyB;YACzB,uBAAuB;YACvB,6BAA6B;YAC7B,6BAA6B;AAC7B,YAAA,4BAA4B,aAXpB,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,aAc5I,iBAAiB;YACjB,aAAa;YACb,kBAAkB;YAClB,mBAAmB;YACnB,sBAAsB;YACtB,yBAAyB;YACzB,uBAAuB;YACvB,6BAA6B;YAC7B,6BAA6B;YAC7B,4BAA4B,CAAA,EAAA,CAAA,CAAA,EAAA;AAGnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EA1BjB,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA0BnI,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA3B5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;AAC/I,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;wBACjB,aAAa;wBACb,kBAAkB;wBAClB,mBAAmB;wBACnB,sBAAsB;wBACtB,yBAAyB;wBACzB,uBAAuB;wBACvB,6BAA6B;wBAC7B,6BAA6B;wBAC7B,4BAA4B;AAC7B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,aAAa;wBACb,kBAAkB;wBAClB,mBAAmB;wBACnB,sBAAsB;wBACtB,yBAAyB;wBACzB,uBAAuB;wBACvB,6BAA6B;wBAC7B,6BAA6B;wBAC7B,4BAA4B;AAC7B,qBAAA;AACF,iBAAA,CAAA;;;AC9CD;;AAEG;;;;"}
|