@aquera/ngx-smart-table 0.0.17-patch-0.6 → 0.0.17-patch-0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/editors/nile-chip-editor.mjs +5 -2
- package/esm2020/lib/renderer/components/st-column-menu/st-column-menu.component.mjs +36 -17
- package/esm2020/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.mjs +34 -27
- package/esm2020/lib/renderer/components/st-table/st-table.component.mjs +5 -5
- package/fesm2015/aquera-ngx-smart-table.mjs +77 -46
- package/fesm2015/aquera-ngx-smart-table.mjs.map +1 -1
- package/fesm2020/aquera-ngx-smart-table.mjs +75 -46
- package/fesm2020/aquera-ngx-smart-table.mjs.map +1 -1
- package/lib/editors/nile-chip-editor.d.ts +1 -0
- package/lib/renderer/components/st-column-menu/st-column-menu.component.d.ts +4 -2
- package/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.d.ts +4 -2
- package/lib/renderer/components/st-table/st-table.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -53,6 +53,7 @@ export class NileChipEditor {
|
|
|
53
53
|
this.acceptsInitialKeypress = false;
|
|
54
54
|
this.eventListeners = [];
|
|
55
55
|
this.trackedValues = [];
|
|
56
|
+
this.hasChangeOccurred = false;
|
|
56
57
|
}
|
|
57
58
|
edit(context) {
|
|
58
59
|
if (!context.container) {
|
|
@@ -205,6 +206,7 @@ export class NileChipEditor {
|
|
|
205
206
|
const detail = e.detail;
|
|
206
207
|
const newValue = Array.isArray(detail?.value) ? [...detail.value] : (this.chip?.value ? [...this.chip.value] : []);
|
|
207
208
|
this.trackedValues = newValue;
|
|
209
|
+
this.hasChangeOccurred = true;
|
|
208
210
|
context.onChange(newValue);
|
|
209
211
|
});
|
|
210
212
|
// Keyboard handling on the chip element
|
|
@@ -273,6 +275,7 @@ export class NileChipEditor {
|
|
|
273
275
|
this.chip = undefined;
|
|
274
276
|
this.cellContainer = undefined;
|
|
275
277
|
this.trackedValues = [];
|
|
278
|
+
this.hasChangeOccurred = false;
|
|
276
279
|
}
|
|
277
280
|
focus() {
|
|
278
281
|
try {
|
|
@@ -281,7 +284,7 @@ export class NileChipEditor {
|
|
|
281
284
|
catch { /* ignore */ }
|
|
282
285
|
}
|
|
283
286
|
getCurrentValue() {
|
|
284
|
-
if (this.
|
|
287
|
+
if (this.hasChangeOccurred) {
|
|
285
288
|
return [...this.trackedValues];
|
|
286
289
|
}
|
|
287
290
|
if (!this.chip)
|
|
@@ -290,4 +293,4 @@ export class NileChipEditor {
|
|
|
290
293
|
return Array.isArray(val) ? [...val] : [];
|
|
291
294
|
}
|
|
292
295
|
}
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlsZS1jaGlwLWVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvZWRpdG9ycy9uaWxlLWNoaXAtZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBc0ZILElBQUksa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0FBQy9CLFNBQVMsZ0JBQWdCO0lBQ3ZCLElBQUksa0JBQWtCO1FBQUUsT0FBTztJQUMvQixrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFFMUIsTUFBTSxPQUFPLEdBQUcseUJBQXlCLENBQUM7SUFDMUMsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUFFLE9BQU87SUFFN0MsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNuQixLQUFLLENBQUMsV0FBVyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qm5CLENBQUM7SUFDRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sY0FBYztJQVN6QixZQUE2QixPQUErQjtRQUEvQixZQUFPLEdBQVAsT0FBTyxDQUF3QjtRQVI1RCwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFLdkIsbUJBQWMsR0FBOEYsRUFBRSxDQUFDO1FBQy9HLGtCQUFhLEdBQWEsRUFBRSxDQUFDO0lBRTBCLENBQUM7SUFFaEUsSUFBSSxDQUFDLE9BQW9DO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUM1RCxPQUFPO1NBQ1I7UUFFRCxnQkFBZ0IsRUFBRSxDQUFDO1FB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QyxFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNoQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXN0b20gZWRpdG9yIHVzaW5nIE5pbGVDaGlwIGZyb20gQGFxdWVyYS9uaWxlLWVsZW1lbnRzXG4gKiBSZW5kZXJzIHRoZSBjaGlwIGlucHV0IGluIGEgZmxvYXRpbmcgcG9wb3ZlciBiZWxvdyB0aGUgY2VsbCB0byBhdm9pZCByb3cgaGVpZ2h0IG1pc21hdGNoLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9uaWxlLmFxdWVyYWxhYnMuY29tLzEuNi4zL2NoaXA/dGhlbWU9ZW50ZXJwcmlzZVxuICovXG5cbmltcG9ydCB7IENlbGxFZGl0b3IsIENlbGxFZGl0b3JDb250ZXh0IH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIENoaXAgb3B0aW9uIGZvciBhdXRvY29tcGxldGUgc3VnZ2VzdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGlwT3B0aW9uIHtcbiAgLyoqIFRoZSBvcHRpb24ncyB2YWx1ZSAqL1xuICB2YWx1ZTogc3RyaW5nO1xuICAvKiogRGlzcGxheSBsYWJlbCBmb3IgdGhlIG9wdGlvbiAoZGVmYXVsdHMgdG8gdmFsdWUgaWYgb21pdHRlZCkgKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBpbnRlcmZhY2UgZm9yIE5pbGVDaGlwRWRpdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmlsZUNoaXBFZGl0b3JPcHRpb25zIHtcbiAgLyoqIEF1dG9jb21wbGV0ZSBzdWdnZXN0aW9uIGxpc3QgKGZ1bGwgc2V0KSAqL1xuICBhdXRvQ29tcGxldGVPcHRpb25zPzogQ2hpcE9wdGlvbltdIHwgc3RyaW5nW107XG5cbiAgLyoqIFBsYWNlaG9sZGVyIHRleHQgc2hvd24gaW5zaWRlIHRoZSBpbnB1dCBhcmVhICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKiBBbGxvdyB1c2VycyB0byB0eXBlIGN1c3RvbSB2YWx1ZXMgbm90IHByZXNlbnQgaW4gdGhlIHN1Z2dlc3Rpb24gbGlzdCAqL1xuICBhY2NlcHRVc2VySW5wdXQ/OiBib29sZWFuO1xuXG4gIC8qKiBQcmV2ZW50IGR1cGxpY2F0ZSBjaGlwIHZhbHVlcyAqL1xuICBub0R1cGxpY2F0ZXM/OiBib29sZWFuO1xuXG4gIC8qKiBEaXNhYmxlIHRoZSBjaGlwIGlucHV0ICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAvKiogTWFrZSB0aGUgY2hpcCBpbnB1dCByZWFkb25seSAqL1xuICByZWFkb25seT86IGJvb2xlYW47XG5cbiAgLyoqIFNob3cgYSBjbGVhci1hbGwgYnV0dG9uICovXG4gIGNsZWFyYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqIFByZXZlbnQgY2hpcCB0YWdzIGZyb20gd3JhcHBpbmcgdG8gbXVsdGlwbGUgbGluZXMgKi9cbiAgbm9XcmFwPzogYm9vbGVhbjtcblxuICAvKiogUmVtb3ZlIHRoZSBhdXRvY29tcGxldGUgZHJvcGRvd24gZW50aXJlbHkgKi9cbiAgbm9BdXRvQ29tcGxldGU/OiBib29sZWFuO1xuXG4gIC8qKiBFbmFibGUgdmlydHVhbCBzY3JvbGxpbmcgaW4gdGhlIHN1Z2dlc3Rpb24gZHJvcGRvd24gKi9cbiAgZW5hYmxlVmlydHVhbFNjcm9sbD86IGJvb2xlYW47XG5cbiAgLyoqIENvbnRyb2wgd2hldGhlciB0aGUgZHJvcGRvd24gb3BlbnMgb24gZm9jdXMg4oCUICd0cnVlJyB8ICdmYWxzZScgfCAnYWx3YXlzJyAqL1xuICBvcGVuRHJvcGRvd25PbkZvY3VzPzogc3RyaW5nO1xuXG4gIC8qKiBTaG93IGxvYWRpbmcgc3Bpbm5lciBpbnNpZGUgdGhlIGRyb3Bkb3duICovXG4gIGxvYWRpbmc/OiBib29sZWFuO1xuXG4gIC8vIFZpc3VhbCBzdGF0ZXNcbiAgLyoqIFdhcm5pbmcgc3RhdGUgc3R5bGluZyAqL1xuICB3YXJuaW5nPzogYm9vbGVhbjtcbiAgLyoqIEVycm9yIHN0YXRlIHN0eWxpbmcgKi9cbiAgZXJyb3I/OiBib29sZWFuO1xuICAvKiogU3VjY2VzcyBzdGF0ZSBzdHlsaW5nICovXG4gIHN1Y2Nlc3M/OiBib29sZWFuO1xuICAvKiogRXJyb3IgbWVzc2FnZSBzaG93biBiZWxvdyB0aGUgaW5wdXQgKi9cbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICAvKiogSGVscCB0ZXh0IHNob3duIGJlbG93IHRoZSBpbnB1dCAqL1xuICBoZWxwVGV4dD86IHN0cmluZztcbiAgLyoqIExhYmVsIHRleHQgZm9yIHRoZSBjaGlwIGlucHV0ICovXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogSW5kZXhlcyBvZiBjaGlwcyB0byBoaWdobGlnaHQgYXMgZXJyb3JzICovXG4gIGVycm9ySW5kZXhlcz86IG51bWJlcltdO1xuXG4gIC8qKiBDdXN0b20gZmlsdGVyIGZ1bmN0aW9uIGZvciBhdXRvY29tcGxldGUgKi9cbiAgZmlsdGVyRnVuY3Rpb24/OiAocXVlcnk6IHN0cmluZywgb3B0aW9uOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgLyoqIEN1c3RvbSByZW5kZXIgZnVuY3Rpb24gZm9yIGRyb3Bkb3duIGl0ZW1zICovXG4gIHJlbmRlckl0ZW1GdW5jdGlvbj86IChvcHRpb246IHN0cmluZykgPT4gc3RyaW5nO1xuXG4gIC8qKiBBdXRvLWZvY3VzIHRoZSBpbnB1dCB3aGVuIGVkaXRvciBvcGVucyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgYXV0b0ZvY3VzPzogYm9vbGVhbjtcblxuICAvKiogTWluaW11bSB3aWR0aCBvZiB0aGUgcG9wb3ZlciBpbiBweCAoZGVmYXVsdDogd2lkdGggb2YgdGhlIGNlbGwpICovXG4gIHBvcG92ZXJNaW5XaWR0aD86IG51bWJlcjtcblxuICAvKiogTWF4aW11bSBoZWlnaHQgb2YgdGhlIHBvcG92ZXIgaW4gcHggYmVmb3JlIGl0IHNjcm9sbHMgKGRlZmF1bHQ6IDIwMCkgKi9cbiAgcG9wb3Zlck1heEhlaWdodD86IG51bWJlcjtcbn1cblxubGV0IGNoaXBTdHlsZXNJbmplY3RlZCA9IGZhbHNlO1xuZnVuY3Rpb24gaW5qZWN0Q2hpcFN0eWxlcygpOiB2b2lkIHtcbiAgaWYgKGNoaXBTdHlsZXNJbmplY3RlZCkgcmV0dXJuO1xuICBjaGlwU3R5bGVzSW5qZWN0ZWQgPSB0cnVlO1xuXG4gIGNvbnN0IHN0eWxlSWQgPSAnbmlsZS1jaGlwLWVkaXRvci1zdHlsZXMnO1xuICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3R5bGVJZCkpIHJldHVybjtcblxuICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLmlkID0gc3R5bGVJZDtcbiAgc3R5bGUudGV4dENvbnRlbnQgPSBgXG4gICAgLnN0LWNoaXAtcG9wb3ZlciB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB6LWluZGV4OiAxMDAwMDtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5pbGUtY29sb3JzLXdoaXRlLWJhc2UsICNmZmYpO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbmlsZS1jb2xvcnMtbmV1dHJhbC0yMDAsICNlMmU4ZjApO1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgICAgcGFkZGluZzogOHB4O1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIG1heC1oZWlnaHQ6IDIwMHB4O1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG4gICAgLnN0LWNoaXAtcG9wb3ZlciBuaWxlLWNoaXAge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIC5zdC1jaGlwLXBvcG92ZXIgbmlsZS1jaGlwOjpwYXJ0KGJhc2UpIHtcbiAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgbWluLWhlaWdodDogMzJweDtcbiAgICB9XG4gICAgLnN0LWNoaXAtcG9wb3ZlciBuaWxlLWNoaXA6OnBhcnQoaW5wdXQpIHtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbmlsZS1mb250LXNpemUtc21hbGwsIDEzcHgpO1xuICAgIH1cbiAgYDtcbiAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5cbi8qKlxuICogQ3VzdG9tIGVkaXRvciB0aGF0IHVzZXMgTmlsZUNoaXAgKHRhZyBpbnB1dCkgY29tcG9uZW50LlxuICogUmVuZGVycyBpbiBhIGZsb2F0aW5nIHBvcG92ZXIgYmVsb3cgdGhlIGNlbGwgdG8gYXZvaWQgZXhwYW5kaW5nIHJvdyBoZWlnaHQuXG4gKlxuICogQ2VsbCB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBgc3RyaW5nW11gIChhcnJheSBvZiB0YWcgc3RyaW5ncykuXG4gKi9cbmV4cG9ydCBjbGFzcyBOaWxlQ2hpcEVkaXRvciBpbXBsZW1lbnRzIENlbGxFZGl0b3I8c3RyaW5nW10+IHtcbiAgYWNjZXB0c0luaXRpYWxLZXlwcmVzcyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY2hpcD86IGFueTtcbiAgcHJpdmF0ZSBwb3BvdmVyPzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgY2VsbENvbnRhaW5lcj86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGV2ZW50TGlzdGVuZXJzOiBBcnJheTx7IGVsZW1lbnQ6IEV2ZW50VGFyZ2V0OyBldmVudDogc3RyaW5nOyBoYW5kbGVyOiBFdmVudExpc3RlbmVyOyBjYXB0dXJlPzogYm9vbGVhbiB9PiA9IFtdO1xuICBwcml2YXRlIHRyYWNrZWRWYWx1ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBvcHRpb25zPzogTmlsZUNoaXBFZGl0b3JPcHRpb25zKSB7fVxuXG4gIGVkaXQoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8c3RyaW5nW10+KTogdm9pZCB7XG4gICAgaWYgKCFjb250ZXh0LmNvbnRhaW5lcikge1xuICAgICAgY29uc29sZS53YXJuKCdOaWxlQ2hpcEVkaXRvciByZXF1aXJlcyBhIGNvbnRhaW5lciBlbGVtZW50Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW5qZWN0Q2hpcFN0eWxlcygpO1xuXG4gICAgdGhpcy5jZWxsQ29udGFpbmVyID0gY29udGV4dC5jb250YWluZXI7XG5cbiAgICAvLyBDcmVhdGUgdGhlIGZsb2F0aW5nIHBvcG92ZXJcbiAgICB0aGlzLnBvcG92ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLnBvcG92ZXIuY2xhc3NOYW1lID0gJ3N0LWNoaXAtcG9wb3Zlcic7XG5cbiAgICAvLyBDcmVhdGUgbmlsZS1jaGlwIGluc2lkZSB0aGUgcG9wb3ZlclxuICAgIHRoaXMuY2hpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25pbGUtY2hpcCcpO1xuICAgIHRoaXMuY2hpcC5jbGFzc05hbWUgPSAnc3QtY2VsbC1lZGl0b3Igc3QtbmlsZS1jaGlwLWVkaXRvcic7XG5cbiAgICB0aGlzLnNldEluaXRpYWxWYWx1ZShjb250ZXh0LnZhbHVlKTtcbiAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuICAgIHRoaXMucG9wb3Zlci5hcHBlbmRDaGlsZCh0aGlzLmNoaXApO1xuXG4gICAgLy8gQXBwbHkgY3VzdG9tIG1heC1oZWlnaHQgaWYgcHJvdmlkZWRcbiAgICBpZiAodGhpcy5vcHRpb25zPy5wb3BvdmVyTWF4SGVpZ2h0KSB7XG4gICAgICB0aGlzLnBvcG92ZXIuc3R5bGUubWF4SGVpZ2h0ID0gYCR7dGhpcy5vcHRpb25zLnBvcG92ZXJNYXhIZWlnaHR9cHhgO1xuICAgIH1cblxuICAgIC8vIEFwcGVuZCBwb3BvdmVyIHRvIGJvZHkgYW5kIHBvc2l0aW9uIGl0XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnBvcG92ZXIpO1xuICAgIHRoaXMucG9zaXRpb25Qb3BvdmVyKCk7XG5cbiAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoY29udGV4dCk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zPy5hdXRvRm9jdXMgIT09IGZhbHNlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdHJ5IHsgdGhpcy5jaGlwPy5mb2N1cygpOyB9IGNhdGNoIHsgLyogaWdub3JlICovIH1cbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25Qb3BvdmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wb3BvdmVyIHx8ICF0aGlzLmNlbGxDb250YWluZXIpIHJldHVybjtcblxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmNlbGxDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgbWluV2lkdGggPSB0aGlzLm9wdGlvbnM/LnBvcG92ZXJNaW5XaWR0aCA/PyByZWN0LndpZHRoO1xuICAgIGNvbnN0IHBvcG92ZXJXaWR0aCA9IE1hdGgubWF4KG1pbldpZHRoLCByZWN0LndpZHRoKTtcblxuICAgIHRoaXMucG9wb3Zlci5zdHlsZS50b3AgPSBgJHtyZWN0LmJvdHRvbSArIDJ9cHhgO1xuICAgIHRoaXMucG9wb3Zlci5zdHlsZS5sZWZ0ID0gYCR7cmVjdC5sZWZ0fXB4YDtcbiAgICB0aGlzLnBvcG92ZXIuc3R5bGUud2lkdGggPSBgJHtwb3BvdmVyV2lkdGh9cHhgO1xuXG4gICAgLy8gQWZ0ZXIgcmVuZGVyaW5nLCBjaGVjayBpZiBpdCBnb2VzIG9mZi1zY3JlZW4gYm90dG9tIGFuZCBmbGlwIGFib3ZlIGlmIG5lZWRlZFxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMucG9wb3ZlcikgcmV0dXJuO1xuICAgICAgY29uc3QgcG9wUmVjdCA9IHRoaXMucG9wb3Zlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGlmIChwb3BSZWN0LmJvdHRvbSA+IHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgICAgICB0aGlzLnBvcG92ZXIuc3R5bGUudG9wID0gYCR7cmVjdC50b3AgLSBwb3BSZWN0LmhlaWdodCAtIDJ9cHhgO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbml0aWFsVmFsdWUodmFsdWU6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNoaXApIHJldHVybjtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMudHJhY2tlZFZhbHVlcyA9IFsuLi52YWx1ZV07XG4gICAgICB0aGlzLmNoaXAudmFsdWUgPSB0aGlzLnRyYWNrZWRWYWx1ZXM7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLnRyYWNrZWRWYWx1ZXMgPSBbdmFsdWVdO1xuICAgICAgdGhpcy5jaGlwLnZhbHVlID0gdGhpcy50cmFja2VkVmFsdWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyYWNrZWRWYWx1ZXMgPSBbXTtcbiAgICAgIHRoaXMuY2hpcC52YWx1ZSA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jaGlwIHx8ICF0aGlzLm9wdGlvbnMpIHJldHVybjtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIpIHtcbiAgICAgIHRoaXMuY2hpcC5wbGFjZWhvbGRlciA9IHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsKSB7XG4gICAgICB0aGlzLmNoaXAubGFiZWwgPSB0aGlzLm9wdGlvbnMubGFiZWw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5oZWxwVGV4dCkge1xuICAgICAgdGhpcy5jaGlwLmhlbHBUZXh0ID0gdGhpcy5vcHRpb25zLmhlbHBUZXh0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlzYWJsZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGlwLmRpc2FibGVkID0gdGhpcy5vcHRpb25zLmRpc2FibGVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucmVhZG9ubHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGlwLnJlYWRvbmx5ID0gdGhpcy5vcHRpb25zLnJlYWRvbmx5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuYWNjZXB0VXNlcklucHV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hpcC5hY2NlcHRVc2VySW5wdXQgPSB0aGlzLm9wdGlvbnMuYWNjZXB0VXNlcklucHV0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMubm9EdXBsaWNhdGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hpcC5ub0R1cGxpY2F0ZXMgPSB0aGlzLm9wdGlvbnMubm9EdXBsaWNhdGVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY2xlYXJhYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hpcC5jbGVhcmFibGUgPSB0aGlzLm9wdGlvbnMuY2xlYXJhYmxlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMubm9XcmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hpcC5ub1dyYXAgPSB0aGlzLm9wdGlvbnMubm9XcmFwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMubm9BdXRvQ29tcGxldGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGlwLm5vQXV0b0NvbXBsZXRlID0gdGhpcy5vcHRpb25zLm5vQXV0b0NvbXBsZXRlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZW5hYmxlVmlydHVhbFNjcm9sbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoaXAuZW5hYmxlVmlydHVhbFNjcm9sbCA9IHRoaXMub3B0aW9ucy5lbmFibGVWaXJ0dWFsU2Nyb2xsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMub3BlbkRyb3Bkb3duT25Gb2N1cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoaXAub3BlbkRyb3Bkb3duT25Gb2N1cyA9IHRoaXMub3B0aW9ucy5vcGVuRHJvcGRvd25PbkZvY3VzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMubG9hZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoaXAubG9hZGluZyA9IHRoaXMub3B0aW9ucy5sb2FkaW5nO1xuICAgIH1cblxuICAgIC8vIFZpc3VhbCBzdGF0ZXNcbiAgICBpZiAodGhpcy5vcHRpb25zLndhcm5pbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGlwLndhcm5pbmcgPSB0aGlzLm9wdGlvbnMud2FybmluZztcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5lcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoaXAuZXJyb3IgPSB0aGlzLm9wdGlvbnMuZXJyb3I7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuc3VjY2VzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoaXAuc3VjY2VzcyA9IHRoaXMub3B0aW9ucy5zdWNjZXNzO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmVycm9yTWVzc2FnZSkge1xuICAgICAgdGhpcy5jaGlwLmVycm9yTWVzc2FnZSA9IHRoaXMub3B0aW9ucy5lcnJvck1lc3NhZ2U7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXJyb3JJbmRleGVzKSB7XG4gICAgICB0aGlzLmNoaXAuZXJyb3JJbmRleGVzID0gdGhpcy5vcHRpb25zLmVycm9ySW5kZXhlcztcbiAgICB9XG5cbiAgICAvLyBBdXRvY29tcGxldGUgb3B0aW9uc1xuICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b0NvbXBsZXRlT3B0aW9ucykge1xuICAgICAgY29uc3Qgb3B0cyA9IHRoaXMub3B0aW9ucy5hdXRvQ29tcGxldGVPcHRpb25zO1xuICAgICAgY29uc3Qgc3RyaW5nT3B0czogc3RyaW5nW10gPSBvcHRzLm1hcChvID0+IHR5cGVvZiBvID09PSAnc3RyaW5nJyA/IG8gOiAoby5sYWJlbCA/PyBvLnZhbHVlKSk7XG4gICAgICB0aGlzLmNoaXAuYXV0b0NvbXBsZXRlT3B0aW9ucyA9IHN0cmluZ09wdHM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5maWx0ZXJGdW5jdGlvbikge1xuICAgICAgdGhpcy5jaGlwLmZpbHRlckZ1bmN0aW9uID0gdGhpcy5vcHRpb25zLmZpbHRlckZ1bmN0aW9uO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucmVuZGVySXRlbUZ1bmN0aW9uKSB7XG4gICAgICB0aGlzLmNoaXAucmVuZGVySXRlbUZ1bmN0aW9uID0gdGhpcy5vcHRpb25zLnJlbmRlckl0ZW1GdW5jdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZExpc3RlbmVyKGVsZW1lbnQ6IEV2ZW50VGFyZ2V0LCBldmVudDogc3RyaW5nLCBoYW5kbGVyOiBFdmVudExpc3RlbmVyLCBjYXB0dXJlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgY2FwdHVyZSk7XG4gICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8c3RyaW5nW10+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNoaXApIHJldHVybjtcblxuICAgIC8vIFRyYWNrIGNoaXAgY2hhbmdlc1xuICAgIHRoaXMuYWRkTGlzdGVuZXIodGhpcy5jaGlwLCAnbmlsZS1jaGlwLWNoYW5nZScsIChlOiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgZGV0YWlsID0gKGUgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbDtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkoZGV0YWlsPy52YWx1ZSkgPyBbLi4uZGV0YWlsLnZhbHVlXSA6ICh0aGlzLmNoaXA/LnZhbHVlID8gWy4uLnRoaXMuY2hpcC52YWx1ZV0gOiBbXSk7XG4gICAgICB0aGlzLnRyYWNrZWRWYWx1ZXMgPSBuZXdWYWx1ZTtcbiAgICAgIGNvbnRleHQub25DaGFuZ2UobmV3VmFsdWUpO1xuICAgIH0pO1xuXG4gICAgLy8gS2V5Ym9hcmQgaGFuZGxpbmcgb24gdGhlIGNoaXAgZWxlbWVudFxuICAgIHRoaXMuYWRkTGlzdGVuZXIodGhpcy5jaGlwLCAna2V5ZG93bicsIChlOiBFdmVudCkgPT4ge1xuICAgICAgY29uc3Qga2V5RXZlbnQgPSBlIGFzIEtleWJvYXJkRXZlbnQ7XG4gICAgICBpZiAoa2V5RXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIGtleUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfSBlbHNlIGlmIChrZXlFdmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGtleUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGtleUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb250ZXh0Lm9uQ2FuY2VsKCk7XG4gICAgICB9IGVsc2UgaWYgKGtleUV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnRleHQub25TYXZlKHRoaXMuZ2V0Q3VycmVudFZhbHVlKCkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gQ2xpY2stb3V0c2lkZTogc2F2ZSB3aGVuIGNsaWNraW5nIGFueXdoZXJlIG91dHNpZGUgdGhlIHBvcG92ZXJcbiAgICBsZXQgc2F2ZVRyaWdnZXJlZCA9IGZhbHNlO1xuICAgIGNvbnN0IG1vdXNlZG93bkhhbmRsZXIgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHNhdmVUcmlnZ2VyZWQpIHJldHVybjtcbiAgICAgIGlmICghdGhpcy5wb3BvdmVyKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IHBhdGggPSBlLmNvbXBvc2VkUGF0aCgpO1xuICAgICAgZm9yIChjb25zdCBlbCBvZiBwYXRoKSB7XG4gICAgICAgIGlmIChlbCA9PT0gdGhpcy5wb3BvdmVyKSByZXR1cm47XG4gICAgICAgIGlmIChlbCA9PT0gdGhpcy5jaGlwKSByZXR1cm47XG4gICAgICAgIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgaWYgKGVsLnRhZ05hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICduaWxlLWNoaXAnKSByZXR1cm47XG4gICAgICAgICAgaWYgKGVsLmNsYXNzTmFtZSAmJiB0eXBlb2YgZWwuY2xhc3NOYW1lID09PSAnc3RyaW5nJyAmJiBlbC5jbGFzc05hbWUuaW5jbHVkZXMoJ25pbGUtY2hpcCcpKSByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2F2ZVRyaWdnZXJlZCA9IHRydWU7XG4gICAgICBjb250ZXh0Lm9uU2F2ZSh0aGlzLmdldEN1cnJlbnRWYWx1ZSgpKTtcbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgbW91c2Vkb3duSGFuZGxlciwgdHJ1ZSk7XG4gICAgKHRoaXMgYXMgYW55KS5fZG9jdW1lbnRNb3VzZWRvd25IYW5kbGVyID0gbW91c2Vkb3duSGFuZGxlcjtcblxuICAgIC8vIFJlcG9zaXRpb24gb24gc2Nyb2xsL3Jlc2l6ZSBzbyBwb3BvdmVyIHN0YXlzIGFsaWduZWQgd2l0aCB0aGUgY2VsbFxuICAgIGNvbnN0IHJlcG9zaXRpb24gPSAoKSA9PiB0aGlzLnBvc2l0aW9uUG9wb3ZlcigpO1xuICAgIHRoaXMuYWRkTGlzdGVuZXIod2luZG93LCAncmVzaXplJywgcmVwb3NpdGlvbik7XG4gICAgdGhpcy5hZGRMaXN0ZW5lcih3aW5kb3csICdzY3JvbGwnLCByZXBvc2l0aW9uLCB0cnVlKTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gUmVtb3ZlIGRvY3VtZW50IG1vdXNlZG93biBoYW5kbGVyXG4gICAgaWYgKCh0aGlzIGFzIGFueSkuX2RvY3VtZW50TW91c2Vkb3duSGFuZGxlcikge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKHRoaXMgYXMgYW55KS5fZG9jdW1lbnRNb3VzZWRvd25IYW5kbGVyLCB0cnVlKTtcbiAgICAgIGRlbGV0ZSAodGhpcyBhcyBhbnkpLl9kb2N1bWVudE1vdXNlZG93bkhhbmRsZXI7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGFsbCB0cmFja2VkIGxpc3RlbmVyc1xuICAgIGZvciAoY29uc3QgeyBlbGVtZW50LCBldmVudCwgaGFuZGxlciwgY2FwdHVyZSB9IG9mIHRoaXMuZXZlbnRMaXN0ZW5lcnMpIHtcbiAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgY2FwdHVyZSk7XG4gICAgfVxuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMgPSBbXTtcblxuICAgIC8vIFJlbW92ZSB0aGUgcG9wb3ZlciBmcm9tIHRoZSBET01cbiAgICBpZiAodGhpcy5wb3BvdmVyKSB7XG4gICAgICB0aGlzLnBvcG92ZXIucmVtb3ZlKCk7XG4gICAgICB0aGlzLnBvcG92ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5jaGlwID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2VsbENvbnRhaW5lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRyYWNrZWRWYWx1ZXMgPSBbXTtcbiAgfVxuXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIHRyeSB7IHRoaXMuY2hpcD8uZm9jdXMoKTsgfSBjYXRjaCB7IC8qIGlnbm9yZSAqLyB9XG4gIH1cblxuICBnZXRDdXJyZW50VmFsdWUoKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLnRyYWNrZWRWYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIFsuLi50aGlzLnRyYWNrZWRWYWx1ZXNdO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY2hpcCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuY2hpcC52YWx1ZTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpID8gWy4uLnZhbF0gOiBbXTtcbiAgfVxufVxuIl19
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlsZS1jaGlwLWVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvZWRpdG9ycy9uaWxlLWNoaXAtZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBc0ZILElBQUksa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0FBQy9CLFNBQVMsZ0JBQWdCO0lBQ3ZCLElBQUksa0JBQWtCO1FBQUUsT0FBTztJQUMvQixrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFFMUIsTUFBTSxPQUFPLEdBQUcseUJBQXlCLENBQUM7SUFDMUMsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUFFLE9BQU87SUFFN0MsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNuQixLQUFLLENBQUMsV0FBVyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qm5CLENBQUM7SUFDRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sY0FBYztJQVV6QixZQUE2QixPQUErQjtRQUEvQixZQUFPLEdBQVAsT0FBTyxDQUF3QjtRQVQ1RCwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFLdkIsbUJBQWMsR0FBOEYsRUFBRSxDQUFDO1FBQy9HLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBQzdCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztJQUU2QixDQUFDO0lBRWhFLElBQUksQ0FBQyxPQUFvQztRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7WUFDNUQsT0FBTztTQUNSO1FBRUQsZ0JBQWdCLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFFdkMsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUUzQyxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLG9DQUFvQyxDQUFDO1FBRTNELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEMsc0NBQXNDO1FBQ3RDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRTtZQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLENBQUM7U0FDckU7UUFFRCx5Q0FBeUM7UUFDekMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsS0FBSyxLQUFLLEVBQUU7WUFDckMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJO29CQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQUU7Z0JBQUMsTUFBTSxFQUFFLFlBQVksRUFBRTtZQUNwRCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDUDtJQUNILENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBRWpELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzdELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxZQUFZLElBQUksQ0FBQztRQUUvQywrRUFBK0U7UUFDL0UscUJBQXFCLENBQUMsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNyRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDO2FBQy9EO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQWU7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUN2QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUN0QzthQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssRUFBRTtZQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUN0QzthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFeEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztTQUNsRDtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDdEM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1NBQzVDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDNUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUM1QztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1NBQzFEO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7U0FDcEQ7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUM5QztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsS0FBSyxTQUFTLEVBQUU7WUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7U0FDeEQ7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEtBQUssU0FBUyxFQUFFO1lBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztTQUNsRTtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsS0FBSyxTQUFTLEVBQUU7WUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1NBQ2xFO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDMUM7UUFFRCxnQkFBZ0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDMUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUN0QztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztTQUNwRDtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7U0FDcEQ7UUFFRCx1QkFBdUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQWEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDN0YsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLENBQUM7U0FDNUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1NBQ3hEO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztTQUNoRTtJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsT0FBb0IsRUFBRSxLQUFhLEVBQUUsT0FBc0IsRUFBRSxPQUFpQjtRQUNoRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQW9DO1FBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFFdkIscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQVEsRUFBRSxFQUFFO1lBQzNELE1BQU0sTUFBTSxHQUFJLENBQWlCLENBQUMsTUFBTSxDQUFDO1lBQ3pDLE1BQU0sUUFBUSxHQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7WUFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5QixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFRLEVBQUUsRUFBRTtZQUNsRCxNQUFNLFFBQVEsR0FBRyxDQUFrQixDQUFDO1lBQ3BDLElBQUksUUFBUSxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUU7Z0JBQzVCLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUM1QjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO2dCQUNwQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3BCO2lCQUFNLElBQUksUUFBUSxDQUFDLEdBQUcsS0FBSyxLQUFLLEVBQUU7Z0JBQ2pDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDMUIsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUMzQixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO2FBQ3hDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxpRUFBaUU7UUFDakUsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFhLEVBQUUsRUFBRTtZQUN6QyxJQUFJLGFBQWE7Z0JBQUUsT0FBTztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTztZQUUxQixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQ3JCLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxPQUFPO29CQUFFLE9BQU87Z0JBQ2hDLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJO29CQUFFLE9BQU87Z0JBQzdCLElBQUksRUFBRSxZQUFZLFdBQVcsRUFBRTtvQkFDN0IsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLFdBQVc7d0JBQUUsT0FBTztvQkFDdEQsSUFBSSxFQUFFLENBQUMsU0FBUyxJQUFJLE9BQU8sRUFBRSxDQUFDLFNBQVMsS0FBSyxRQUFRLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO3dCQUFFLE9BQU87aUJBQ3BHO2FBQ0Y7WUFFRCxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDO1FBRUYsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxJQUFZLENBQUMseUJBQXlCLEdBQUcsZ0JBQWdCLENBQUM7UUFFM0QscUVBQXFFO1FBQ3JFLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsT0FBTztRQUNMLG9DQUFvQztRQUNwQyxJQUFLLElBQVksQ0FBQyx5QkFBeUIsRUFBRTtZQUMzQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFHLElBQVksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6RixPQUFRLElBQVksQ0FBQyx5QkFBeUIsQ0FBQztTQUNoRDtRQUVELCtCQUErQjtRQUMvQixLQUFLLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3RFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFFekIsa0NBQWtDO1FBQ2xDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1NBQzFCO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQUU7UUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFFO0lBQ3BELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDNUIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEN1c3RvbSBlZGl0b3IgdXNpbmcgTmlsZUNoaXAgZnJvbSBAYXF1ZXJhL25pbGUtZWxlbWVudHNcbiAqIFJlbmRlcnMgdGhlIGNoaXAgaW5wdXQgaW4gYSBmbG9hdGluZyBwb3BvdmVyIGJlbG93IHRoZSBjZWxsIHRvIGF2b2lkIHJvdyBoZWlnaHQgbWlzbWF0Y2guXG4gKlxuICogQHNlZSBodHRwczovL25pbGUuYXF1ZXJhbGFicy5jb20vMS42LjMvY2hpcD90aGVtZT1lbnRlcnByaXNlXG4gKi9cblxuaW1wb3J0IHsgQ2VsbEVkaXRvciwgQ2VsbEVkaXRvckNvbnRleHQgfSBmcm9tICcuLi9tb2RlbHMvY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZSc7XG5cbi8qKlxuICogQ2hpcCBvcHRpb24gZm9yIGF1dG9jb21wbGV0ZSBzdWdnZXN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENoaXBPcHRpb24ge1xuICAvKiogVGhlIG9wdGlvbidzIHZhbHVlICovXG4gIHZhbHVlOiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IGxhYmVsIGZvciB0aGUgb3B0aW9uIChkZWZhdWx0cyB0byB2YWx1ZSBpZiBvbWl0dGVkKSAqL1xuICBsYWJlbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGludGVyZmFjZSBmb3IgTmlsZUNoaXBFZGl0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOaWxlQ2hpcEVkaXRvck9wdGlvbnMge1xuICAvKiogQXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdCAoZnVsbCBzZXQpICovXG4gIGF1dG9Db21wbGV0ZU9wdGlvbnM/OiBDaGlwT3B0aW9uW10gfCBzdHJpbmdbXTtcblxuICAvKiogUGxhY2Vob2xkZXIgdGV4dCBzaG93biBpbnNpZGUgdGhlIGlucHV0IGFyZWEgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgLyoqIEFsbG93IHVzZXJzIHRvIHR5cGUgY3VzdG9tIHZhbHVlcyBub3QgcHJlc2VudCBpbiB0aGUgc3VnZ2VzdGlvbiBsaXN0ICovXG4gIGFjY2VwdFVzZXJJbnB1dD86IGJvb2xlYW47XG5cbiAgLyoqIFByZXZlbnQgZHVwbGljYXRlIGNoaXAgdmFsdWVzICovXG4gIG5vRHVwbGljYXRlcz86IGJvb2xlYW47XG5cbiAgLyoqIERpc2FibGUgdGhlIGNoaXAgaW5wdXQgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKiBNYWtlIHRoZSBjaGlwIGlucHV0IHJlYWRvbmx5ICovXG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcblxuICAvKiogU2hvdyBhIGNsZWFyLWFsbCBidXR0b24gKi9cbiAgY2xlYXJhYmxlPzogYm9vbGVhbjtcblxuICAvKiogUHJldmVudCBjaGlwIHRhZ3MgZnJvbSB3cmFwcGluZyB0byBtdWx0aXBsZSBsaW5lcyAqL1xuICBub1dyYXA/OiBib29sZWFuO1xuXG4gIC8qKiBSZW1vdmUgdGhlIGF1dG9jb21wbGV0ZSBkcm9wZG93biBlbnRpcmVseSAqL1xuICBub0F1dG9Db21wbGV0ZT86IGJvb2xlYW47XG5cbiAgLyoqIEVuYWJsZSB2aXJ0dWFsIHNjcm9sbGluZyBpbiB0aGUgc3VnZ2VzdGlvbiBkcm9wZG93biAqL1xuICBlbmFibGVWaXJ0dWFsU2Nyb2xsPzogYm9vbGVhbjtcblxuICAvKiogQ29udHJvbCB3aGV0aGVyIHRoZSBkcm9wZG93biBvcGVucyBvbiBmb2N1cyDigJQgJ3RydWUnIHwgJ2ZhbHNlJyB8ICdhbHdheXMnICovXG4gIG9wZW5Ecm9wZG93bk9uRm9jdXM/OiBzdHJpbmc7XG5cbiAgLyoqIFNob3cgbG9hZGluZyBzcGlubmVyIGluc2lkZSB0aGUgZHJvcGRvd24gKi9cbiAgbG9hZGluZz86IGJvb2xlYW47XG5cbiAgLy8gVmlzdWFsIHN0YXRlc1xuICAvKiogV2FybmluZyBzdGF0ZSBzdHlsaW5nICovXG4gIHdhcm5pbmc/OiBib29sZWFuO1xuICAvKiogRXJyb3Igc3RhdGUgc3R5bGluZyAqL1xuICBlcnJvcj86IGJvb2xlYW47XG4gIC8qKiBTdWNjZXNzIHN0YXRlIHN0eWxpbmcgKi9cbiAgc3VjY2Vzcz86IGJvb2xlYW47XG4gIC8qKiBFcnJvciBtZXNzYWdlIHNob3duIGJlbG93IHRoZSBpbnB1dCAqL1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIC8qKiBIZWxwIHRleHQgc2hvd24gYmVsb3cgdGhlIGlucHV0ICovXG4gIGhlbHBUZXh0Pzogc3RyaW5nO1xuICAvKiogTGFiZWwgdGV4dCBmb3IgdGhlIGNoaXAgaW5wdXQgKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBJbmRleGVzIG9mIGNoaXBzIHRvIGhpZ2hsaWdodCBhcyBlcnJvcnMgKi9cbiAgZXJyb3JJbmRleGVzPzogbnVtYmVyW107XG5cbiAgLyoqIEN1c3RvbSBmaWx0ZXIgZnVuY3Rpb24gZm9yIGF1dG9jb21wbGV0ZSAqL1xuICBmaWx0ZXJGdW5jdGlvbj86IChxdWVyeTogc3RyaW5nLCBvcHRpb246IHN0cmluZykgPT4gYm9vbGVhbjtcblxuICAvKiogQ3VzdG9tIHJlbmRlciBmdW5jdGlvbiBmb3IgZHJvcGRvd24gaXRlbXMgKi9cbiAgcmVuZGVySXRlbUZ1bmN0aW9uPzogKG9wdGlvbjogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbiAgLyoqIEF1dG8tZm9jdXMgdGhlIGlucHV0IHdoZW4gZWRpdG9yIG9wZW5zIChkZWZhdWx0OiB0cnVlKSAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuXG4gIC8qKiBNaW5pbXVtIHdpZHRoIG9mIHRoZSBwb3BvdmVyIGluIHB4IChkZWZhdWx0OiB3aWR0aCBvZiB0aGUgY2VsbCkgKi9cbiAgcG9wb3Zlck1pbldpZHRoPzogbnVtYmVyO1xuXG4gIC8qKiBNYXhpbXVtIGhlaWdodCBvZiB0aGUgcG9wb3ZlciBpbiBweCBiZWZvcmUgaXQgc2Nyb2xscyAoZGVmYXVsdDogMjAwKSAqL1xuICBwb3BvdmVyTWF4SGVpZ2h0PzogbnVtYmVyO1xufVxuXG5sZXQgY2hpcFN0eWxlc0luamVjdGVkID0gZmFsc2U7XG5mdW5jdGlvbiBpbmplY3RDaGlwU3R5bGVzKCk6IHZvaWQge1xuICBpZiAoY2hpcFN0eWxlc0luamVjdGVkKSByZXR1cm47XG4gIGNoaXBTdHlsZXNJbmplY3RlZCA9IHRydWU7XG5cbiAgY29uc3Qgc3R5bGVJZCA9ICduaWxlLWNoaXAtZWRpdG9yLXN0eWxlcyc7XG4gIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzdHlsZUlkKSkgcmV0dXJuO1xuXG4gIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgc3R5bGUuaWQgPSBzdHlsZUlkO1xuICBzdHlsZS50ZXh0Q29udGVudCA9IGBcbiAgICAuc3QtY2hpcC1wb3BvdmVyIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHotaW5kZXg6IDEwMDAwO1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tbmlsZS1jb2xvcnMtd2hpdGUtYmFzZSwgI2ZmZik7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1uaWxlLWNvbG9ycy1uZXV0cmFsLTIwMCwgI2UyZThmMCk7XG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICBwYWRkaW5nOiA4cHg7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgbWF4LWhlaWdodDogMjAwcHg7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbiAgICAuc3QtY2hpcC1wb3BvdmVyIG5pbGUtY2hpcCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgLnN0LWNoaXAtcG9wb3ZlciBuaWxlLWNoaXA6OnBhcnQoYmFzZSkge1xuICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICBtaW4taGVpZ2h0OiAzMnB4O1xuICAgIH1cbiAgICAuc3QtY2hpcC1wb3BvdmVyIG5pbGUtY2hpcDo6cGFydChpbnB1dCkge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1uaWxlLWZvbnQtc2l6ZS1zbWFsbCwgMTNweCk7XG4gICAgfVxuICBgO1xuICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cblxuLyoqXG4gKiBDdXN0b20gZWRpdG9yIHRoYXQgdXNlcyBOaWxlQ2hpcCAodGFnIGlucHV0KSBjb21wb25lbnQuXG4gKiBSZW5kZXJzIGluIGEgZmxvYXRpbmcgcG9wb3ZlciBiZWxvdyB0aGUgY2VsbCB0byBhdm9pZCBleHBhbmRpbmcgcm93IGhlaWdodC5cbiAqXG4gKiBDZWxsIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIGBzdHJpbmdbXWAgKGFycmF5IG9mIHRhZyBzdHJpbmdzKS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5pbGVDaGlwRWRpdG9yIGltcGxlbWVudHMgQ2VsbEVkaXRvcjxzdHJpbmdbXT4ge1xuICBhY2NlcHRzSW5pdGlhbEtleXByZXNzID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBjaGlwPzogYW55O1xuICBwcml2YXRlIHBvcG92ZXI/OiBIVE1MRGl2RWxlbWVudDtcbiAgcHJpdmF0ZSBjZWxsQ29udGFpbmVyPzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgZXZlbnRMaXN0ZW5lcnM6IEFycmF5PHsgZWxlbWVudDogRXZlbnRUYXJnZXQ7IGV2ZW50OiBzdHJpbmc7IGhhbmRsZXI6IEV2ZW50TGlzdGVuZXI7IGNhcHR1cmU/OiBib29sZWFuIH0+ID0gW107XG4gIHByaXZhdGUgdHJhY2tlZFZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBoYXNDaGFuZ2VPY2N1cnJlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucz86IE5pbGVDaGlwRWRpdG9yT3B0aW9ucykge31cblxuICBlZGl0KGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PHN0cmluZ1tdPik6IHZvaWQge1xuICAgIGlmICghY29udGV4dC5jb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybignTmlsZUNoaXBFZGl0b3IgcmVxdWlyZXMgYSBjb250YWluZXIgZWxlbWVudCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGluamVjdENoaXBTdHlsZXMoKTtcblxuICAgIHRoaXMuY2VsbENvbnRhaW5lciA9IGNvbnRleHQuY29udGFpbmVyO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBmbG9hdGluZyBwb3BvdmVyXG4gICAgdGhpcy5wb3BvdmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5wb3BvdmVyLmNsYXNzTmFtZSA9ICdzdC1jaGlwLXBvcG92ZXInO1xuXG4gICAgLy8gQ3JlYXRlIG5pbGUtY2hpcCBpbnNpZGUgdGhlIHBvcG92ZXJcbiAgICB0aGlzLmNoaXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCduaWxlLWNoaXAnKTtcbiAgICB0aGlzLmNoaXAuY2xhc3NOYW1lID0gJ3N0LWNlbGwtZWRpdG9yIHN0LW5pbGUtY2hpcC1lZGl0b3InO1xuXG4gICAgdGhpcy5zZXRJbml0aWFsVmFsdWUoY29udGV4dC52YWx1ZSk7XG4gICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICB0aGlzLnBvcG92ZXIuYXBwZW5kQ2hpbGQodGhpcy5jaGlwKTtcblxuICAgIC8vIEFwcGx5IGN1c3RvbSBtYXgtaGVpZ2h0IGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMub3B0aW9ucz8ucG9wb3Zlck1heEhlaWdodCkge1xuICAgICAgdGhpcy5wb3BvdmVyLnN0eWxlLm1heEhlaWdodCA9IGAke3RoaXMub3B0aW9ucy5wb3BvdmVyTWF4SGVpZ2h0fXB4YDtcbiAgICB9XG5cbiAgICAvLyBBcHBlbmQgcG9wb3ZlciB0byBib2R5IGFuZCBwb3NpdGlvbiBpdFxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5wb3BvdmVyKTtcbiAgICB0aGlzLnBvc2l0aW9uUG9wb3ZlcigpO1xuXG4gICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKGNvbnRleHQpO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uYXV0b0ZvY3VzICE9PSBmYWxzZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRyeSB7IHRoaXMuY2hpcD8uZm9jdXMoKTsgfSBjYXRjaCB7IC8qIGlnbm9yZSAqLyB9XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uUG9wb3ZlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucG9wb3ZlciB8fCAhdGhpcy5jZWxsQ29udGFpbmVyKSByZXR1cm47XG5cbiAgICBjb25zdCByZWN0ID0gdGhpcy5jZWxsQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IG1pbldpZHRoID0gdGhpcy5vcHRpb25zPy5wb3BvdmVyTWluV2lkdGggPz8gcmVjdC53aWR0aDtcbiAgICBjb25zdCBwb3BvdmVyV2lkdGggPSBNYXRoLm1heChtaW5XaWR0aCwgcmVjdC53aWR0aCk7XG5cbiAgICB0aGlzLnBvcG92ZXIuc3R5bGUudG9wID0gYCR7cmVjdC5ib3R0b20gKyAyfXB4YDtcbiAgICB0aGlzLnBvcG92ZXIuc3R5bGUubGVmdCA9IGAke3JlY3QubGVmdH1weGA7XG4gICAgdGhpcy5wb3BvdmVyLnN0eWxlLndpZHRoID0gYCR7cG9wb3ZlcldpZHRofXB4YDtcblxuICAgIC8vIEFmdGVyIHJlbmRlcmluZywgY2hlY2sgaWYgaXQgZ29lcyBvZmYtc2NyZWVuIGJvdHRvbSBhbmQgZmxpcCBhYm92ZSBpZiBuZWVkZWRcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnBvcG92ZXIpIHJldHVybjtcbiAgICAgIGNvbnN0IHBvcFJlY3QgPSB0aGlzLnBvcG92ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAocG9wUmVjdC5ib3R0b20gPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICAgICAgdGhpcy5wb3BvdmVyLnN0eWxlLnRvcCA9IGAke3JlY3QudG9wIC0gcG9wUmVjdC5oZWlnaHQgLSAyfXB4YDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbFZhbHVlKHZhbHVlOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jaGlwKSByZXR1cm47XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aGlzLnRyYWNrZWRWYWx1ZXMgPSBbLi4udmFsdWVdO1xuICAgICAgdGhpcy5jaGlwLnZhbHVlID0gdGhpcy50cmFja2VkVmFsdWVzO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy50cmFja2VkVmFsdWVzID0gW3ZhbHVlXTtcbiAgICAgIHRoaXMuY2hpcC52YWx1ZSA9IHRoaXMudHJhY2tlZFZhbHVlcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmFja2VkVmFsdWVzID0gW107XG4gICAgICB0aGlzLmNoaXAudmFsdWUgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5T3B0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hpcCB8fCAhdGhpcy5vcHRpb25zKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyKSB7XG4gICAgICB0aGlzLmNoaXAucGxhY2Vob2xkZXIgPSB0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbCkge1xuICAgICAgdGhpcy5jaGlwLmxhYmVsID0gdGhpcy5vcHRpb25zLmxhYmVsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVscFRleHQpIHtcbiAgICAgIHRoaXMuY2hpcC5oZWxwVGV4dCA9IHRoaXMub3B0aW9ucy5oZWxwVGV4dDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRpc2FibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hpcC5kaXNhYmxlZCA9IHRoaXMub3B0aW9ucy5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnJlYWRvbmx5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hpcC5yZWFkb25seSA9IHRoaXMub3B0aW9ucy5yZWFkb25seTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmFjY2VwdFVzZXJJbnB1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoaXAuYWNjZXB0VXNlcklucHV0ID0gdGhpcy5vcHRpb25zLmFjY2VwdFVzZXJJbnB1dDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm5vRHVwbGljYXRlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoaXAubm9EdXBsaWNhdGVzID0gdGhpcy5vcHRpb25zLm5vRHVwbGljYXRlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNsZWFyYWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoaXAuY2xlYXJhYmxlID0gdGhpcy5vcHRpb25zLmNsZWFyYWJsZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm5vV3JhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoaXAubm9XcmFwID0gdGhpcy5vcHRpb25zLm5vV3JhcDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm5vQXV0b0NvbXBsZXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hpcC5ub0F1dG9Db21wbGV0ZSA9IHRoaXMub3B0aW9ucy5ub0F1dG9Db21wbGV0ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmVuYWJsZVZpcnR1YWxTY3JvbGwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGlwLmVuYWJsZVZpcnR1YWxTY3JvbGwgPSB0aGlzLm9wdGlvbnMuZW5hYmxlVmlydHVhbFNjcm9sbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm9wZW5Ecm9wZG93bk9uRm9jdXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGlwLm9wZW5Ecm9wZG93bk9uRm9jdXMgPSB0aGlzLm9wdGlvbnMub3BlbkRyb3Bkb3duT25Gb2N1cztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmxvYWRpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGlwLmxvYWRpbmcgPSB0aGlzLm9wdGlvbnMubG9hZGluZztcbiAgICB9XG5cbiAgICAvLyBWaXN1YWwgc3RhdGVzXG4gICAgaWYgKHRoaXMub3B0aW9ucy53YXJuaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hpcC53YXJuaW5nID0gdGhpcy5vcHRpb25zLndhcm5pbmc7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXJyb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGlwLmVycm9yID0gdGhpcy5vcHRpb25zLmVycm9yO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLnN1Y2Nlc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGlwLnN1Y2Nlc3MgPSB0aGlzLm9wdGlvbnMuc3VjY2VzcztcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5lcnJvck1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuY2hpcC5lcnJvck1lc3NhZ2UgPSB0aGlzLm9wdGlvbnMuZXJyb3JNZXNzYWdlO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLmVycm9ySW5kZXhlcykge1xuICAgICAgdGhpcy5jaGlwLmVycm9ySW5kZXhlcyA9IHRoaXMub3B0aW9ucy5lcnJvckluZGV4ZXM7XG4gICAgfVxuXG4gICAgLy8gQXV0b2NvbXBsZXRlIG9wdGlvbnNcbiAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9Db21wbGV0ZU9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IG9wdHMgPSB0aGlzLm9wdGlvbnMuYXV0b0NvbXBsZXRlT3B0aW9ucztcbiAgICAgIGNvbnN0IHN0cmluZ09wdHM6IHN0cmluZ1tdID0gb3B0cy5tYXAobyA9PiB0eXBlb2YgbyA9PT0gJ3N0cmluZycgPyBvIDogKG8ubGFiZWwgPz8gby52YWx1ZSkpO1xuICAgICAgdGhpcy5jaGlwLmF1dG9Db21wbGV0ZU9wdGlvbnMgPSBzdHJpbmdPcHRzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZmlsdGVyRnVuY3Rpb24pIHtcbiAgICAgIHRoaXMuY2hpcC5maWx0ZXJGdW5jdGlvbiA9IHRoaXMub3B0aW9ucy5maWx0ZXJGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnJlbmRlckl0ZW1GdW5jdGlvbikge1xuICAgICAgdGhpcy5jaGlwLnJlbmRlckl0ZW1GdW5jdGlvbiA9IHRoaXMub3B0aW9ucy5yZW5kZXJJdGVtRnVuY3Rpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRMaXN0ZW5lcihlbGVtZW50OiBFdmVudFRhcmdldCwgZXZlbnQ6IHN0cmluZywgaGFuZGxlcjogRXZlbnRMaXN0ZW5lciwgY2FwdHVyZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUpO1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMucHVzaCh7IGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyLCBjYXB0dXJlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEV2ZW50TGlzdGVuZXJzKGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PHN0cmluZ1tdPik6IHZvaWQge1xuICAgIGlmICghdGhpcy5jaGlwKSByZXR1cm47XG5cbiAgICAvLyBUcmFjayBjaGlwIGNoYW5nZXNcbiAgICB0aGlzLmFkZExpc3RlbmVyKHRoaXMuY2hpcCwgJ25pbGUtY2hpcC1jaGFuZ2UnLCAoZTogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGRldGFpbCA9IChlIGFzIEN1c3RvbUV2ZW50KS5kZXRhaWw7XG4gICAgICBjb25zdCBuZXdWYWx1ZTogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KGRldGFpbD8udmFsdWUpID8gWy4uLmRldGFpbC52YWx1ZV0gOiAodGhpcy5jaGlwPy52YWx1ZSA/IFsuLi50aGlzLmNoaXAudmFsdWVdIDogW10pO1xuICAgICAgdGhpcy50cmFja2VkVmFsdWVzID0gbmV3VmFsdWU7XG4gICAgICB0aGlzLmhhc0NoYW5nZU9jY3VycmVkID0gdHJ1ZTtcbiAgICAgIGNvbnRleHQub25DaGFuZ2UobmV3VmFsdWUpO1xuICAgIH0pO1xuXG4gICAgLy8gS2V5Ym9hcmQgaGFuZGxpbmcgb24gdGhlIGNoaXAgZWxlbWVudFxuICAgIHRoaXMuYWRkTGlzdGVuZXIodGhpcy5jaGlwLCAna2V5ZG93bicsIChlOiBFdmVudCkgPT4ge1xuICAgICAgY29uc3Qga2V5RXZlbnQgPSBlIGFzIEtleWJvYXJkRXZlbnQ7XG4gICAgICBpZiAoa2V5RXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIGtleUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfSBlbHNlIGlmIChrZXlFdmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGtleUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGtleUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb250ZXh0Lm9uQ2FuY2VsKCk7XG4gICAgICB9IGVsc2UgaWYgKGtleUV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnRleHQub25TYXZlKHRoaXMuZ2V0Q3VycmVudFZhbHVlKCkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gQ2xpY2stb3V0c2lkZTogc2F2ZSB3aGVuIGNsaWNraW5nIGFueXdoZXJlIG91dHNpZGUgdGhlIHBvcG92ZXJcbiAgICBsZXQgc2F2ZVRyaWdnZXJlZCA9IGZhbHNlO1xuICAgIGNvbnN0IG1vdXNlZG93bkhhbmRsZXIgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHNhdmVUcmlnZ2VyZWQpIHJldHVybjtcbiAgICAgIGlmICghdGhpcy5wb3BvdmVyKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IHBhdGggPSBlLmNvbXBvc2VkUGF0aCgpO1xuICAgICAgZm9yIChjb25zdCBlbCBvZiBwYXRoKSB7XG4gICAgICAgIGlmIChlbCA9PT0gdGhpcy5wb3BvdmVyKSByZXR1cm47XG4gICAgICAgIGlmIChlbCA9PT0gdGhpcy5jaGlwKSByZXR1cm47XG4gICAgICAgIGlmIChlbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgaWYgKGVsLnRhZ05hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICduaWxlLWNoaXAnKSByZXR1cm47XG4gICAgICAgICAgaWYgKGVsLmNsYXNzTmFtZSAmJiB0eXBlb2YgZWwuY2xhc3NOYW1lID09PSAnc3RyaW5nJyAmJiBlbC5jbGFzc05hbWUuaW5jbHVkZXMoJ25pbGUtY2hpcCcpKSByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2F2ZVRyaWdnZXJlZCA9IHRydWU7XG4gICAgICBjb250ZXh0Lm9uU2F2ZSh0aGlzLmdldEN1cnJlbnRWYWx1ZSgpKTtcbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgbW91c2Vkb3duSGFuZGxlciwgdHJ1ZSk7XG4gICAgKHRoaXMgYXMgYW55KS5fZG9jdW1lbnRNb3VzZWRvd25IYW5kbGVyID0gbW91c2Vkb3duSGFuZGxlcjtcblxuICAgIC8vIFJlcG9zaXRpb24gb24gc2Nyb2xsL3Jlc2l6ZSBzbyBwb3BvdmVyIHN0YXlzIGFsaWduZWQgd2l0aCB0aGUgY2VsbFxuICAgIGNvbnN0IHJlcG9zaXRpb24gPSAoKSA9PiB0aGlzLnBvc2l0aW9uUG9wb3ZlcigpO1xuICAgIHRoaXMuYWRkTGlzdGVuZXIod2luZG93LCAncmVzaXplJywgcmVwb3NpdGlvbik7XG4gICAgdGhpcy5hZGRMaXN0ZW5lcih3aW5kb3csICdzY3JvbGwnLCByZXBvc2l0aW9uLCB0cnVlKTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gUmVtb3ZlIGRvY3VtZW50IG1vdXNlZG93biBoYW5kbGVyXG4gICAgaWYgKCh0aGlzIGFzIGFueSkuX2RvY3VtZW50TW91c2Vkb3duSGFuZGxlcikge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKHRoaXMgYXMgYW55KS5fZG9jdW1lbnRNb3VzZWRvd25IYW5kbGVyLCB0cnVlKTtcbiAgICAgIGRlbGV0ZSAodGhpcyBhcyBhbnkpLl9kb2N1bWVudE1vdXNlZG93bkhhbmRsZXI7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGFsbCB0cmFja2VkIGxpc3RlbmVyc1xuICAgIGZvciAoY29uc3QgeyBlbGVtZW50LCBldmVudCwgaGFuZGxlciwgY2FwdHVyZSB9IG9mIHRoaXMuZXZlbnRMaXN0ZW5lcnMpIHtcbiAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgY2FwdHVyZSk7XG4gICAgfVxuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMgPSBbXTtcblxuICAgIC8vIFJlbW92ZSB0aGUgcG9wb3ZlciBmcm9tIHRoZSBET01cbiAgICBpZiAodGhpcy5wb3BvdmVyKSB7XG4gICAgICB0aGlzLnBvcG92ZXIucmVtb3ZlKCk7XG4gICAgICB0aGlzLnBvcG92ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5jaGlwID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2VsbENvbnRhaW5lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRyYWNrZWRWYWx1ZXMgPSBbXTtcbiAgICB0aGlzLmhhc0NoYW5nZU9jY3VycmVkID0gZmFsc2U7XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0cnkgeyB0aGlzLmNoaXA/LmZvY3VzKCk7IH0gY2F0Y2ggeyAvKiBpZ25vcmUgKi8gfVxuICB9XG5cbiAgZ2V0Q3VycmVudFZhbHVlKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VPY2N1cnJlZCkge1xuICAgICAgcmV0dXJuIFsuLi50aGlzLnRyYWNrZWRWYWx1ZXNdO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY2hpcCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuY2hpcC52YWx1ZTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpID8gWy4uLnZhbF0gOiBbXTtcbiAgfVxufVxuIl19
|
|
@@ -10,7 +10,7 @@ export class StColumnMenuDropdownComponent {
|
|
|
10
10
|
*/
|
|
11
11
|
this.isOpen = false;
|
|
12
12
|
/**
|
|
13
|
-
* Position of the dropdown (x, y coordinates)
|
|
13
|
+
* Position of the dropdown (x, y coordinates, triggerTop for flip positioning)
|
|
14
14
|
*/
|
|
15
15
|
this.position = { x: 0, y: 0 };
|
|
16
16
|
/**
|
|
@@ -123,25 +123,41 @@ export class StColumnMenuDropdownComponent {
|
|
|
123
123
|
this.dropdownStyle = {};
|
|
124
124
|
return;
|
|
125
125
|
}
|
|
126
|
-
const viewportWidth = window.innerWidth;
|
|
127
|
-
const viewportHeight = window.innerHeight;
|
|
128
|
-
const dropdownWidth = 280; // Approximate dropdown width
|
|
129
|
-
const dropdownHeight = 300; // Approximate max dropdown height
|
|
130
126
|
let { x, y } = this.position;
|
|
131
|
-
//
|
|
132
|
-
if (x + dropdownWidth > viewportWidth) {
|
|
133
|
-
x = Math.max(10, viewportWidth - dropdownWidth - 10);
|
|
134
|
-
}
|
|
135
|
-
// Adjust vertical position if dropdown would overflow
|
|
136
|
-
if (y + dropdownHeight > viewportHeight) {
|
|
137
|
-
y = Math.max(10, viewportHeight - dropdownHeight - 10);
|
|
138
|
-
}
|
|
127
|
+
// Render at initial position first
|
|
139
128
|
this.dropdownStyle = {
|
|
140
129
|
position: 'fixed',
|
|
141
130
|
left: `${x}px`,
|
|
142
131
|
top: `${y}px`,
|
|
143
|
-
'z-index': 9999
|
|
132
|
+
'z-index': 9999,
|
|
133
|
+
visibility: 'hidden'
|
|
144
134
|
};
|
|
135
|
+
// After rendering, measure actual size and adjust if needed
|
|
136
|
+
requestAnimationFrame(() => {
|
|
137
|
+
const viewportWidth = window.innerWidth;
|
|
138
|
+
const viewportHeight = window.innerHeight;
|
|
139
|
+
const el = this.dropdownPanel?.nativeElement;
|
|
140
|
+
const dropdownWidth = el?.offsetWidth || 280;
|
|
141
|
+
const dropdownHeight = el?.offsetHeight || 200;
|
|
142
|
+
// Adjust horizontal position if dropdown would overflow
|
|
143
|
+
if (x + dropdownWidth > viewportWidth) {
|
|
144
|
+
x = Math.max(10, viewportWidth - dropdownWidth - 10);
|
|
145
|
+
}
|
|
146
|
+
// Adjust vertical position — flip above the trigger if it overflows bottom
|
|
147
|
+
if (y + dropdownHeight > viewportHeight) {
|
|
148
|
+
const triggerTop = this.position.triggerTop ?? this.position.y;
|
|
149
|
+
y = triggerTop - dropdownHeight - 4;
|
|
150
|
+
}
|
|
151
|
+
// Clamp to viewport edges
|
|
152
|
+
x = Math.max(10, x);
|
|
153
|
+
y = Math.max(10, y);
|
|
154
|
+
this.dropdownStyle = {
|
|
155
|
+
position: 'fixed',
|
|
156
|
+
left: `${x}px`,
|
|
157
|
+
top: `${y}px`,
|
|
158
|
+
'z-index': 9999
|
|
159
|
+
};
|
|
160
|
+
});
|
|
145
161
|
}
|
|
146
162
|
/**
|
|
147
163
|
* Check if an action is disabled
|
|
@@ -208,10 +224,10 @@ export class StColumnMenuDropdownComponent {
|
|
|
208
224
|
}
|
|
209
225
|
}
|
|
210
226
|
StColumnMenuDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnMenuDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
211
|
-
StColumnMenuDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StColumnMenuDropdownComponent, selector: "st-column-menu-dropdown", inputs: { isOpen: "isOpen", position: "position", context: "context" }, outputs: { actionClicked: "actionClicked", closed: "closed" }, host: { listeners: { "click": "onBackdropClick($event)" } }, viewQueries: [{ propertyName: "filterPopup", first: true, predicate: ["filterPopup"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"], components: [{ type: i1.StColumnFilterComponent, selector: "st-column-filter", inputs: ["column", "tableState", "columnIndex", "isFirstColumn", "isLastColumn", "isOpen", "filterContext"], outputs: ["closed", "filterApplied", "filterCleared"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
227
|
+
StColumnMenuDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StColumnMenuDropdownComponent, selector: "st-column-menu-dropdown", inputs: { isOpen: "isOpen", position: "position", context: "context" }, outputs: { actionClicked: "actionClicked", closed: "closed" }, host: { listeners: { "click": "onBackdropClick($event)" } }, viewQueries: [{ propertyName: "filterPopup", first: true, predicate: ["filterPopup"], descendants: true }, { propertyName: "dropdownPanel", first: true, predicate: ["dropdownPanel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" #dropdownPanel [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"], components: [{ type: i1.StColumnFilterComponent, selector: "st-column-filter", inputs: ["column", "tableState", "columnIndex", "isFirstColumn", "isLastColumn", "isOpen", "filterContext"], outputs: ["closed", "filterApplied", "filterCleared"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
212
228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnMenuDropdownComponent, decorators: [{
|
|
213
229
|
type: Component,
|
|
214
|
-
args: [{ selector: 'st-column-menu-dropdown', template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"] }]
|
|
230
|
+
args: [{ selector: 'st-column-menu-dropdown', template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" #dropdownPanel [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"] }]
|
|
215
231
|
}], propDecorators: { isOpen: [{
|
|
216
232
|
type: Input
|
|
217
233
|
}], position: [{
|
|
@@ -225,8 +241,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
225
241
|
}], filterPopup: [{
|
|
226
242
|
type: ViewChild,
|
|
227
243
|
args: ['filterPopup']
|
|
244
|
+
}], dropdownPanel: [{
|
|
245
|
+
type: ViewChild,
|
|
246
|
+
args: ['dropdownPanel']
|
|
228
247
|
}], onBackdropClick: [{
|
|
229
248
|
type: HostListener,
|
|
230
249
|
args: ['click', ['$event']]
|
|
231
250
|
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtY29sdW1uLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9yZW5kZXJlci9jb21wb25lbnRzL3N0LWNvbHVtbi1tZW51L3N0LWNvbHVtbi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1jb2x1bW4tbWVudS9zdC1jb2x1bW4tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBNEIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQVN6RCxNQUFNLE9BQU8sNkJBQTZCO0lBTDFDO1FBTUU7O1dBRUc7UUFDTSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBRWpDOztXQUVHO1FBQ00sYUFBUSxHQUE2QixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRTdEOztXQUVHO1FBQ00sWUFBTyxHQUErQixJQUFJLENBQUM7UUFFcEQ7O1dBRUc7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRWhFOztXQUVHO1FBQ08sV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFJNUM7O1dBRUc7UUFDSCxtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFFcEM7O1dBRUc7UUFDSCxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUV4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztLQTRNdEI7SUExTUMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFD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S0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFLRyxNQUFNO3NCQUFmLE1BQU07Z0JBRW1CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFzTHhCLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBJbnB1dCwgVmlld0NoaWxkLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sdW1uQWN0aW9uLCBDb2x1bW5BY3Rpb25Db250ZXh0LCBDb2x1bW5BY3Rpb25FdmVudCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jb2x1bW4tYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLXR5cGVzJztcbmltcG9ydCB7IENlbGxEYXRhVHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jZWxsLXR5cGVzJztcbmltcG9ydCB7IFN0Q29sdW1uRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vc3QtY29sdW1uLWZpbHRlci9zdC1jb2x1bW4tZmlsdGVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0LWNvbHVtbi1tZW51LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0LWNvbHVtbi1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3QtY29sdW1uLW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RDb2x1bW5NZW51RHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZHJvcGRvd24gaXMgb3BlblxuICAgKi9cbiAgQElucHV0KCkgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIGRyb3Bkb3duICh4LCB5IGNvb3JkaW5hdGVzKVxuICAgKi9cbiAgQElucHV0KCkgcG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9IHsgeDogMCwgeTogMCB9O1xuICBcbiAgLyoqXG4gICAqIENvbnRleHQgY29udGFpbmluZyBjb2x1bW4gZGF0YSwgaW5kZXgsIGFuZCBhY3Rpb25zXG4gICAqL1xuICBASW5wdXQoKSBjb250ZXh0OiBDb2x1bW5BY3Rpb25Db250ZXh0IHwgbnVsbCA9IG51bGw7XG4gIFxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFuIGFjdGlvbiBpcyBjbGlja2VkXG4gICAqL1xuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uQWN0aW9uRXZlbnQ+KCk7XG4gIFxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBkcm9wZG93biBzaG91bGQgY2xvc2VcbiAgICovXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIFxuICBAVmlld0NoaWxkKCdmaWx0ZXJQb3B1cCcpIGZpbHRlclBvcHVwPzogU3RDb2x1bW5GaWx0ZXJDb21wb25lbnQ7XG4gIFxuICAvKipcbiAgICogVmlzaWJsZSBhY3Rpb25zIChmaWx0ZXJlZCBieSBoaWRkZW4gcHJvcGVydHkpXG4gICAqL1xuICB2aXNpYmxlQWN0aW9uczogQ29sdW1uQWN0aW9uW10gPSBbXTtcbiAgXG4gIC8qKlxuICAgKiBEcm9wZG93biBwb3NpdGlvbmluZyBzdHlsZVxuICAgKi9cbiAgZHJvcGRvd25TdHlsZTogYW55ID0ge307XG4gIFxuICBpc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29udGV4dCddIHx8IGNoYW5nZXNbJ2lzT3BlbiddKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVBY3Rpb25zKCk7XG4gICAgfVxuICAgIFxuICAgIGlmIChjaGFuZ2VzWydwb3NpdGlvbiddIHx8IGNoYW5nZXNbJ2lzT3BlbiddKSB7XG4gICAgICB0aGlzLnVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBVcGRhdGUgdmlzaWJsZSBhY3Rpb25zIGJhc2VkIG9uIGhpZGRlbiBwcm9wZXJ0eVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmxlQWN0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkge1xuICAgICAgdGhpcy52aXNpYmxlQWN0aW9ucyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLnZpc2libGVBY3Rpb25zID0gdGhpcy5jb250ZXh0LmFjdGlvbnMuZmlsdGVyKGFjdGlvbiA9PiB7XG4gICAgICBpZiAodHlwZW9mIGFjdGlvbi5oaWRkZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICFhY3Rpb24uaGlkZGVuKHRoaXMuY29udGV4dCEuY29sdW1uLCB0aGlzLmNvbnRleHQhLmNvbHVtbkluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhYWN0aW9uLmhpZGRlbjtcbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFjdGlvbiBpcyBjdXJyZW50bHkgYWN0aXZlIChmb3IgY2hlY2ttYXJrcylcbiAgICovXG4gIGlzQWN0aW9uQWN0aXZlKGFjdGlvbjogQ29sdW1uQWN0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHJldHVybiBmYWxzZTtcbiAgICBcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbnRleHQuY29sdW1uO1xuICAgIFxuICAgIC8vIFNvcnQgYWN0aW9uc1xuICAgIGlmIChhY3Rpb24uaWQgPT09ICdzb3J0LWFzYycpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uc29ydERpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5BU0M7XG4gICAgfVxuICAgIGlmIChhY3Rpb24uaWQgPT09ICdzb3J0LWRlc2MnKSB7XG4gICAgICByZXR1cm4gY29sdW1uLnNvcnREaXJlY3Rpb24gPT09IFNvcnREaXJlY3Rpb24uREVTQztcbiAgICB9XG4gICAgXG4gICAgLy8gRmlsdGVyIGFjdGlvblxuICAgIGlmIChhY3Rpb24uaWQgPT09ICdmaWx0ZXInKSB7XG4gICAgICByZXR1cm4gY29sdW1uLmZpbHRlckNvbmZpZz8uZW5hYmxlZCA9PT0gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gUGluIGFjdGlvbnNcbiAgICBpZiAoYWN0aW9uLmlkID09PSAncGluLWxlZnQnKSB7XG4gICAgICByZXR1cm4gY29sdW1uLnN0aWNreSA9PT0gJ2xlZnQnO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uLmlkID09PSAncGluLXJpZ2h0Jykge1xuICAgICAgcmV0dXJuIGNvbHVtbi5zdGlja3kgPT09ICdyaWdodCc7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgZGl2aWRlciBzaG91bGQgYmUgc2hvd24gYWZ0ZXIgYW4gYWN0aW9uXG4gICAqIEdyb3VwcyBidWlsdC1pbiBhY3Rpb25zOiBbc29ydCBncm91cF0gfCBbZmlsdGVyXSB8IFtwaW4gZ3JvdXBdIHwgW21vdmUgZ3JvdXBdIHwgW2N1c3RvbV1cbiAgICovXG4gIHNob3VsZFNob3dEaXZpZGVyQWZ0ZXIoYWN0aW9uOiBDb2x1bW5BY3Rpb24sIGluZGV4OiBudW1iZXIsIGlzTGFzdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc0xhc3QgfHwgIXRoaXMudmlzaWJsZUFjdGlvbnNbaW5kZXggKyAxXSkgcmV0dXJuIGZhbHNlO1xuICAgIFxuICAgIGNvbnN0IGN1cnJlbnRJZCA9IGFjdGlvbi5pZDtcbiAgICBjb25zdCBuZXh0SWQgPSB0aGlzLnZpc2libGVBY3Rpb25zW2luZGV4ICsgMV0uaWQ7XG4gICAgXG4gICAgLy8gRGl2aWRlciBhZnRlciBzb3J0IGdyb3VwXG4gICAgaWYgKFsnc29ydC1hc2MnLCAnc29ydC1kZXNjJywgJ2NsZWFyLXNvcnQnXS5pbmNsdWRlcyhjdXJyZW50SWQpICYmIFxuICAgICAgICAhWydzb3J0LWFzYycsICdzb3J0LWRlc2MnLCAnY2xlYXItc29ydCddLmluY2x1ZGVzKG5leHRJZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBcbiAgICAvLyBEaXZpZGVyIGFmdGVyIGZpbHRlclxuICAgIGlmIChjdXJyZW50SWQgPT09ICdmaWx0ZXInKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gRGl2aWRlciBhZnRlciBwaW4gZ3JvdXBcbiAgICBpZiAoWydwaW4tbGVmdCcsICdwaW4tcmlnaHQnLCAndW5waW4nXS5pbmNsdWRlcyhjdXJyZW50SWQpICYmIFxuICAgICAgICAhWydwaW4tbGVmdCcsICdwaW4tcmlnaHQnLCAndW5waW4nXS5pbmNsdWRlcyhuZXh0SWQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gRGl2aWRlciBhZnRlciBtb3ZlIGdyb3VwIChiZWZvcmUgY3VzdG9tIGFjdGlvbnMpXG4gICAgaWYgKFsnbW92ZS1sZWZ0JywgJ21vdmUtcmlnaHQnXS5pbmNsdWRlcyhjdXJyZW50SWQpICYmIFxuICAgICAgICAhWydtb3ZlLWxlZnQnLCAnbW92ZS1yaWdodCddLmluY2x1ZGVzKG5leHRJZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBVcGRhdGUgZHJvcGRvd24gcG9zaXRpb24gYmFzZWQgb24gYXZhaWxhYmxlIHZpZXdwb3J0IHNwYWNlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5kcm9wZG93blN0eWxlID0ge307XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICBjb25zdCBkcm9wZG93bldpZHRoID0gMjgwOyAvLyBBcHByb3hpbWF0ZSBkcm9wZG93biB3aWR0aFxuICAgIGNvbnN0IGRyb3Bkb3duSGVpZ2h0ID0gMzAwOyAvLyBBcHByb3hpbWF0ZSBtYXggZHJvcGRvd24gaGVpZ2h0XG4gICAgXG4gICAgbGV0IHsgeCwgeSB9ID0gdGhpcy5wb3NpdGlvbjtcbiAgICBcbiAgICAvLyBBZGp1c3QgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiBkcm9wZG93biB3b3VsZCBvdmVyZmxvd1xuICAgIGlmICh4ICsgZHJvcGRvd25XaWR0aCA+IHZpZXdwb3J0V2lkdGgpIHtcbiAgICAgIHggPSBNYXRoLm1heCgxMCwgdmlld3BvcnRXaWR0aCAtIGRyb3Bkb3duV2lkdGggLSAxMCk7XG4gICAgfVxuICAgIFxuICAgIC8vIEFkanVzdCB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBkcm9wZG93biB3b3VsZCBvdmVyZmxvd1xuICAgIGlmICh5ICsgZHJvcGRvd25IZWlnaHQgPiB2aWV3cG9ydEhlaWdodCkge1xuICAgICAgeSA9IE1hdGgubWF4KDEwLCB2aWV3cG9ydEhlaWdodCAtIGRyb3Bkb3duSGVpZ2h0IC0gMTApO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmRyb3Bkb3duU3R5bGUgPSB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgdG9wOiBgJHt5fXB4YCxcbiAgICAgICd6LWluZGV4JzogOTk5OVxuICAgIH07XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhY3Rpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIGlzQWN0aW9uRGlzYWJsZWQoYWN0aW9uOiBDb2x1bW5BY3Rpb24pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkgcmV0dXJuIHRydWU7XG4gICAgXG4gICAgaWYgKHR5cGVvZiBhY3Rpb24uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhY3Rpb24uZGlzYWJsZWQodGhpcy5jb250ZXh0LmNvbHVtbiwgdGhpcy5jb250ZXh0LmNvbHVtbkluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbi5kaXNhYmxlZCB8fCBmYWxzZTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEhhbmRsZSBhY3Rpb24gY2xpY2tcbiAgICovXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBDb2x1bW5BY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCB8fCB0aGlzLmlzQWN0aW9uRGlzYWJsZWQoYWN0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBmaWx0ZXIgYWN0aW9uIC0gb3BlbiBmaWx0ZXIgcG9wdXBcbiAgICBpZiAoYWN0aW9uLmlkID09PSAnZmlsdGVyJykge1xuICAgICAgdGhpcy5pc0ZpbHRlck9wZW4gPSB0cnVlO1xuICAgICAgcmV0dXJuOyAvLyBEb24ndCBlbWl0IG9yIGNsb3NlIG1lbnVcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZXZlbnQ6IENvbHVtbkFjdGlvbkV2ZW50ID0ge1xuICAgICAgYWN0aW9uLFxuICAgICAgY29sdW1uOiB0aGlzLmNvbnRleHQuY29sdW1uLFxuICAgICAgY29sdW1uSW5kZXg6IHRoaXMuY29udGV4dC5jb2x1bW5JbmRleFxuICAgIH07XG4gICAgXG4gICAgdGhpcy5hY3Rpb25DbGlja2VkLmVtaXQoZXZlbnQpO1xuICB9XG4gIFxuICAvKipcbiAgICogQ2xvc2UgZHJvcGRvd24gd2hlbiBjbGlja2luZyBiYWNrZHJvcFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkJhY2tkcm9wQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2Ryb3Bkb3duLWJhY2tkcm9wJykpIHtcbiAgICAgIC8vIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBvbkZpbHRlckNsb3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIC8vIENsb3NlIHRoZSBlbnRpcmUgY29sdW1uIG1lbnUgd2hlbiBmaWx0ZXIgaXMgY2xvc2VkXG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG5cbiAgb25GaWx0ZXJBcHBsaWVkKGV2ZW50OiB7IG9wZXJhdG9yOiBhbnk7IHZhbHVlOiBhbnkgfSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdGaWx0ZXIgYXBwbGllZDonLCBldmVudCk7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICAvLyBDbG9zZSB0aGUgZW50aXJlIGNvbHVtbiBtZW51IHdoZW4gZmlsdGVyIGlzIGFwcGxpZWRcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICBvbkZpbHRlckNsZWFyZWQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0ZpbHRlciBjbGVhcmVkJyk7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICAvLyBDbG9zZSB0aGUgZW50aXJlIGNvbHVtbiBtZW51IHdoZW4gZmlsdGVyIGlzIGNsZWFyZWRcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGlmIG1lbnUgc2hvdWxkIGFsaWduIHRvIHRoZSBsZWZ0IChmb3IgZmlyc3QgZmV3IGNvbHVtbnMpXG4gICAqL1xuICBzaG91bGRBbGlnbkxlZnQoKTogYm9vbGVhbiB7XG4gICAgLy8gQWxpZ24gbGVmdCBmb3IgZmlyc3QgMiBjb2x1bW5zIHRvIHByZXZlbnQgY2xpcHBpbmdcbiAgICByZXR1cm4gKHRoaXMuY29udGV4dD8uY29sdW1uSW5kZXggfHwgMCkgPD0gMTtcbiAgfVxufSIsIjwhLS0gRHJvcGRvd24gY29udGFpbmVyIHdpdGggYmFja2Ryb3AgLS0+XG48ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGFpbmVyXCIgKm5nSWY9XCJpc09wZW4gJiYgY29udGV4dFwiPlxuICA8IS0tIEJhY2tkcm9wIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tYmFja2Ryb3BcIiAoY2xpY2spPVwiY2xvc2VkLmVtaXQoKVwiPjwvZGl2PlxuICBcbiAgPCEtLSBEcm9wZG93biBtZW51IC0tPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLW1lbnUtZHJvcGRvd25cIiBbbmdTdHlsZV09XCJkcm9wZG93blN0eWxlXCI+XG4gICAgPCEtLSBNYWluIG1lbnUgd2l0aCBhY3Rpb25zIC0tPlxuICAgIDxuaWxlLW1lbnUgKm5nSWY9XCIhaXNGaWx0ZXJPcGVuXCI+XG4gICAgICA8IS0tIER5bmFtaWNhbGx5IHJlbmRlciBhbGwgdmlzaWJsZSBhY3Rpb25zIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHZpc2libGVBY3Rpb25zOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgPG5pbGUtbWVudS1pdGVtIFxuICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKGFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpc0FjdGlvbkRpc2FibGVkKGFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNBY3Rpb25BY3RpdmUoYWN0aW9uKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCIgKm5nSWY9XCJpc0FjdGlvbkFjdGl2ZShhY3Rpb24pXCI+4pyTPC9zcGFuPlxuICAgICAgICAgIDxuaWxlLWljb24gc2xvdD1cInByZWZpeFwiICpuZ0lmPVwiYWN0aW9uLmljb24gJiYgIWlzQWN0aW9uQWN0aXZlKGFjdGlvbilcIiBbbmFtZV09XCJhY3Rpb24uaWNvblwiPjwvbmlsZS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0aW9uLWxhYmVsXCI+e3sgYWN0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L25pbGUtbWVudS1pdGVtPlxuICAgICAgICBcbiAgICAgICAgPCEtLSBBZGQgZGl2aWRlciBhZnRlciBhY3Rpb24gZ3JvdXBzIC0tPlxuICAgICAgICA8bmlsZS1kaXZpZGVyICpuZ0lmPVwic2hvdWxkU2hvd0RpdmlkZXJBZnRlcihhY3Rpb24sIGksIGxhc3QpXCI+PC9uaWxlLWRpdmlkZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIFxuICAgICAgPCEtLSBGYWxsYmFjayBpZiBubyBhY3Rpb25zIC0tPlxuICAgICAgPG5pbGUtbWVudS1pdGVtICpuZ0lmPVwidmlzaWJsZUFjdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIE5vIGFjdGlvbnMgYXZhaWxhYmxlXG4gICAgICA8L25pbGUtbWVudS1pdGVtPlxuICAgIDwvbmlsZS1tZW51PlxuICAgIFxuICAgIDwhLS0gRmlsdGVyIHBvcHVwIChjb25kaXRpb25hbGx5IHJlbmRlcmVkKSAtLT5cbiAgICA8c3QtY29sdW1uLWZpbHRlclxuICAgICAgI2ZpbHRlclBvcHVwXG4gICAgICAqbmdJZj1cImlzRmlsdGVyT3BlbiAmJiBjb250ZXh0XCJcbiAgICAgIFtjb2x1bW5dPVwiY29udGV4dC5jb2x1bW5cIlxuICAgICAgW3RhYmxlU3RhdGVdPVwiY29udGV4dC50YWJsZVN0YXRlXCJcbiAgICAgIFtjb2x1bW5JbmRleF09XCJjb250ZXh0LmNvbHVtbkluZGV4XCJcbiAgICAgIFtpc0ZpcnN0Q29sdW1uXT1cImNvbnRleHQuaXNGaXJzdENvbHVtblwiXG4gICAgICBbaXNMYXN0Q29sdW1uXT1cImNvbnRleHQuaXNMYXN0Q29sdW1uXCJcbiAgICAgIFtpc09wZW5dPVwiaXNGaWx0ZXJPcGVuXCJcbiAgICAgIChmaWx0ZXJBcHBsaWVkKT1cIm9uRmlsdGVyQXBwbGllZCgkZXZlbnQpXCJcbiAgICAgIChmaWx0ZXJDbGVhcmVkKT1cIm9uRmlsdGVyQ2xlYXJlZCgpXCJcbiAgICAgIChjbG9zZWQpPVwib25GaWx0ZXJDbG9zZWQoKVwiPlxuICAgIDwvc3QtY29sdW1uLWZpbHRlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtY29sdW1uLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9yZW5kZXJlci9jb21wb25lbnRzL3N0LWNvbHVtbi1tZW51L3N0LWNvbHVtbi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1jb2x1bW4tbWVudS9zdC1jb2x1bW4tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBd0MsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQVN6RCxNQUFNLE9BQU8sNkJBQTZCO0lBTDFDO1FBTUU7O1dBRUc7UUFDTSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBRWpDOztXQUVHO1FBQ00sYUFBUSxHQUFrRCxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRWxGOztXQUVHO1FBQ00sWUFBTyxHQUErQixJQUFJLENBQUM7UUFFcEQ7O1dBRUc7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRWhFOztXQUVHO1FBQ08sV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLNUM7O1dBRUc7UUFDSCxtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFFcEM7O1dBRUc7UUFDSCxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUV4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztLQStOdEI7SUE3TkMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFD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UUFDMUIsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLHFEQUFxRDtRQUNyRCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7OzBIQXJRVSw2QkFBNkI7OEdBQTdCLDZCQUE2QixxZUNYMUMsMDVEQThDQTsyRkRuQ2EsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLHlCQUF5Qjs4QkFRMUIsTUFBTTtzQkFBZCxLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csT0FBTztzQkFBZixLQUFLO2dCQUtJLGFBQWE7c0JBQXRCLE1BQU07Z0JBS0csTUFBTTtzQkFBZixNQUFNO2dCQUVtQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0ksYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQXlNMUIsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2x1bW5BY3Rpb24sIENvbHVtbkFjdGlvbkNvbnRleHQsIENvbHVtbkFjdGlvbkV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NvbHVtbi1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtdHlwZXMnO1xuaW1wb3J0IHsgQ2VsbERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NlbGwtdHlwZXMnO1xuaW1wb3J0IHsgU3RDb2x1bW5GaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9zdC1jb2x1bW4tZmlsdGVyL3N0LWNvbHVtbi1maWx0ZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3QtY29sdW1uLW1lbnUtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc3QtY29sdW1uLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdC1jb2x1bW4tbWVudS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTdENvbHVtbk1lbnVEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkcm9wZG93biBpcyBvcGVuXG4gICAqL1xuICBASW5wdXQoKSBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiB0aGUgZHJvcGRvd24gKHgsIHkgY29vcmRpbmF0ZXMsIHRyaWdnZXJUb3AgZm9yIGZsaXAgcG9zaXRpb25pbmcpXG4gICAqL1xuICBASW5wdXQoKSBwb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgdHJpZ2dlclRvcD86IG51bWJlciB9ID0geyB4OiAwLCB5OiAwIH07XG4gIFxuICAvKipcbiAgICogQ29udGV4dCBjb250YWluaW5nIGNvbHVtbiBkYXRhLCBpbmRleCwgYW5kIGFjdGlvbnNcbiAgICovXG4gIEBJbnB1dCgpIGNvbnRleHQ6IENvbHVtbkFjdGlvbkNvbnRleHQgfCBudWxsID0gbnVsbDtcbiAgXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYW4gYWN0aW9uIGlzIGNsaWNrZWRcbiAgICovXG4gIEBPdXRwdXQoKSBhY3Rpb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDb2x1bW5BY3Rpb25FdmVudD4oKTtcbiAgXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGRyb3Bkb3duIHNob3VsZCBjbG9zZVxuICAgKi9cbiAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlclBvcHVwJykgZmlsdGVyUG9wdXA/OiBTdENvbHVtbkZpbHRlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25QYW5lbCcpIGRyb3Bkb3duUGFuZWw/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgXG4gIC8qKlxuICAgKiBWaXNpYmxlIGFjdGlvbnMgKGZpbHRlcmVkIGJ5IGhpZGRlbiBwcm9wZXJ0eSlcbiAgICovXG4gIHZpc2libGVBY3Rpb25zOiBDb2x1bW5BY3Rpb25bXSA9IFtdO1xuICBcbiAgLyoqXG4gICAqIERyb3Bkb3duIHBvc2l0aW9uaW5nIHN0eWxlXG4gICAqL1xuICBkcm9wZG93blN0eWxlOiBhbnkgPSB7fTtcbiAgXG4gIGlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICBcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb250ZXh0J10gfHwgY2hhbmdlc1snaXNPcGVuJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUFjdGlvbnMoKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGNoYW5nZXNbJ3Bvc2l0aW9uJ10gfHwgY2hhbmdlc1snaXNPcGVuJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIFVwZGF0ZSB2aXNpYmxlIGFjdGlvbnMgYmFzZWQgb24gaGlkZGVuIHByb3BlcnR5XG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVZpc2libGVBY3Rpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLnZpc2libGVBY3Rpb25zID0gW107XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIHRoaXMudmlzaWJsZUFjdGlvbnMgPSB0aGlzLmNvbnRleHQuYWN0aW9ucy5maWx0ZXIoYWN0aW9uID0+IHtcbiAgICAgIGlmICh0eXBlb2YgYWN0aW9uLmhpZGRlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gIWFjdGlvbi5oaWRkZW4odGhpcy5jb250ZXh0IS5jb2x1bW4sIHRoaXMuY29udGV4dCEuY29sdW1uSW5kZXgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuICFhY3Rpb24uaGlkZGVuO1xuICAgIH0pO1xuICB9XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYWN0aW9uIGlzIGN1cnJlbnRseSBhY3RpdmUgKGZvciBjaGVja21hcmtzKVxuICAgKi9cbiAgaXNBY3Rpb25BY3RpdmUoYWN0aW9uOiBDb2x1bW5BY3Rpb24pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkgcmV0dXJuIGZhbHNlO1xuICAgIFxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29udGV4dC5jb2x1bW47XG4gICAgXG4gICAgLy8gU29ydCBhY3Rpb25zXG4gICAgaWYgKGFjdGlvbi5pZCA9PT0gJ3NvcnQtYXNjJykge1xuICAgICAgcmV0dXJuIGNvbHVtbi5zb3J0RGlyZWN0aW9uID09PSBTb3J0RGlyZWN0aW9uLkFTQztcbiAgICB9XG4gICAgaWYgKGFjdGlvbi5pZCA9PT0gJ3NvcnQtZGVzYycpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uc29ydERpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5ERVNDO1xuICAgIH1cbiAgICBcbiAgICAvLyBGaWx0ZXIgYWN0aW9uXG4gICAgaWYgKGFjdGlvbi5pZCA9PT0gJ2ZpbHRlcicpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uZmlsdGVyQ29uZmlnPy5lbmFibGVkID09PSB0cnVlO1xuICAgIH1cbiAgICBcbiAgICAvLyBQaW4gYWN0aW9uc1xuICAgIGlmIChhY3Rpb24uaWQgPT09ICdwaW4tbGVmdCcpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uc3RpY2t5ID09PSAnbGVmdCc7XG4gICAgfVxuICAgIGlmIChhY3Rpb24uaWQgPT09ICdwaW4tcmlnaHQnKSB7XG4gICAgICByZXR1cm4gY29sdW1uLnN0aWNreSA9PT0gJ3JpZ2h0JztcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSBpZiBkaXZpZGVyIHNob3VsZCBiZSBzaG93biBhZnRlciBhbiBhY3Rpb25cbiAgICogR3JvdXBzIGJ1aWx0LWluIGFjdGlvbnM6IFtzb3J0IGdyb3VwXSB8IFtmaWx0ZXJdIHwgW3BpbiBncm91cF0gfCBbbW92ZSBncm91cF0gfCBbY3VzdG9tXVxuICAgKi9cbiAgc2hvdWxkU2hvd0RpdmlkZXJBZnRlcihhY3Rpb246IENvbHVtbkFjdGlvbiwgaW5kZXg6IG51bWJlciwgaXNMYXN0OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzTGFzdCB8fCAhdGhpcy52aXNpYmxlQWN0aW9uc1tpbmRleCArIDFdKSByZXR1cm4gZmFsc2U7XG4gICAgXG4gICAgY29uc3QgY3VycmVudElkID0gYWN0aW9uLmlkO1xuICAgIGNvbnN0IG5leHRJZCA9IHRoaXMudmlzaWJsZUFjdGlvbnNbaW5kZXggKyAxXS5pZDtcbiAgICBcbiAgICAvLyBEaXZpZGVyIGFmdGVyIHNvcnQgZ3JvdXBcbiAgICBpZiAoWydzb3J0LWFzYycsICdzb3J0LWRlc2MnLCAnY2xlYXItc29ydCddLmluY2x1ZGVzKGN1cnJlbnRJZCkgJiYgXG4gICAgICAgICFbJ3NvcnQtYXNjJywgJ3NvcnQtZGVzYycsICdjbGVhci1zb3J0J10uaW5jbHVkZXMobmV4dElkKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIC8vIERpdmlkZXIgYWZ0ZXIgZmlsdGVyXG4gICAgaWYgKGN1cnJlbnRJZCA9PT0gJ2ZpbHRlcicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBcbiAgICAvLyBEaXZpZGVyIGFmdGVyIHBpbiBncm91cFxuICAgIGlmIChbJ3Bpbi1sZWZ0JywgJ3Bpbi1yaWdodCcsICd1bnBpbiddLmluY2x1ZGVzKGN1cnJlbnRJZCkgJiYgXG4gICAgICAgICFbJ3Bpbi1sZWZ0JywgJ3Bpbi1yaWdodCcsICd1bnBpbiddLmluY2x1ZGVzKG5leHRJZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBcbiAgICAvLyBEaXZpZGVyIGFmdGVyIG1vdmUgZ3JvdXAgKGJlZm9yZSBjdXN0b20gYWN0aW9ucylcbiAgICBpZiAoWydtb3ZlLWxlZnQnLCAnbW92ZS1yaWdodCddLmluY2x1ZGVzKGN1cnJlbnRJZCkgJiYgXG4gICAgICAgICFbJ21vdmUtbGVmdCcsICdtb3ZlLXJpZ2h0J10uaW5jbHVkZXMobmV4dElkKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFVwZGF0ZSBkcm9wZG93biBwb3NpdGlvbiBiYXNlZCBvbiBhdmFpbGFibGUgdmlld3BvcnQgc3BhY2VcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLmRyb3Bkb3duU3R5bGUgPSB7fTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgbGV0IHsgeCwgeSB9ID0gdGhpcy5wb3NpdGlvbjtcbiAgICBcbiAgICAvLyBSZW5kZXIgYXQgaW5pdGlhbCBwb3NpdGlvbiBmaXJzdFxuICAgIHRoaXMuZHJvcGRvd25TdHlsZSA9IHtcbiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgbGVmdDogYCR7eH1weGAsXG4gICAgICB0b3A6IGAke3l9cHhgLFxuICAgICAgJ3otaW5kZXgnOiA5OTk5LFxuICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbiAgICB9O1xuICAgIFxuICAgIC8vIEFmdGVyIHJlbmRlcmluZywgbWVhc3VyZSBhY3R1YWwgc2l6ZSBhbmQgYWRqdXN0IGlmIG5lZWRlZFxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgIFxuICAgICAgY29uc3QgZWwgPSB0aGlzLmRyb3Bkb3duUGFuZWw/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBkcm9wZG93bldpZHRoID0gZWw/Lm9mZnNldFdpZHRoIHx8IDI4MDtcbiAgICAgIGNvbnN0IGRyb3Bkb3duSGVpZ2h0ID0gZWw/Lm9mZnNldEhlaWdodCB8fCAyMDA7XG4gICAgICBcbiAgICAgIC8vIEFkanVzdCBob3Jpem9udGFsIHBvc2l0aW9uIGlmIGRyb3Bkb3duIHdvdWxkIG92ZXJmbG93XG4gICAgICBpZiAoeCArIGRyb3Bkb3duV2lkdGggPiB2aWV3cG9ydFdpZHRoKSB7XG4gICAgICAgIHggPSBNYXRoLm1heCgxMCwgdmlld3BvcnRXaWR0aCAtIGRyb3Bkb3duV2lkdGggLSAxMCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIEFkanVzdCB2ZXJ0aWNhbCBwb3NpdGlvbiDigJQgZmxpcCBhYm92ZSB0aGUgdHJpZ2dlciBpZiBpdCBvdmVyZmxvd3MgYm90dG9tXG4gICAgICBpZiAoeSArIGRyb3Bkb3duSGVpZ2h0ID4gdmlld3BvcnRIZWlnaHQpIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlclRvcCA9IHRoaXMucG9zaXRpb24udHJpZ2dlclRvcCA/PyB0aGlzLnBvc2l0aW9uLnk7XG4gICAgICAgIHkgPSB0cmlnZ2VyVG9wIC0gZHJvcGRvd25IZWlnaHQgLSA0O1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDbGFtcCB0byB2aWV3cG9ydCBlZGdlc1xuICAgICAgeCA9IE1hdGgubWF4KDEwLCB4KTtcbiAgICAgIHkgPSBNYXRoLm1heCgxMCwgeSk7XG4gICAgICBcbiAgICAgIHRoaXMuZHJvcGRvd25TdHlsZSA9IHtcbiAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgICB0b3A6IGAke3l9cHhgLFxuICAgICAgICAnei1pbmRleCc6IDk5OTlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhY3Rpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIGlzQWN0aW9uRGlzYWJsZWQoYWN0aW9uOiBDb2x1bW5BY3Rpb24pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkgcmV0dXJuIHRydWU7XG4gICAgXG4gICAgaWYgKHR5cGVvZiBhY3Rpb24uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhY3Rpb24uZGlzYWJsZWQodGhpcy5jb250ZXh0LmNvbHVtbiwgdGhpcy5jb250ZXh0LmNvbHVtbkluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbi5kaXNhYmxlZCB8fCBmYWxzZTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEhhbmRsZSBhY3Rpb24gY2xpY2tcbiAgICovXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBDb2x1bW5BY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCB8fCB0aGlzLmlzQWN0aW9uRGlzYWJsZWQoYWN0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBmaWx0ZXIgYWN0aW9uIC0gb3BlbiBmaWx0ZXIgcG9wdXBcbiAgICBpZiAoYWN0aW9uLmlkID09PSAnZmlsdGVyJykge1xuICAgICAgdGhpcy5pc0ZpbHRlck9wZW4gPSB0cnVlO1xuICAgICAgcmV0dXJuOyAvLyBEb24ndCBlbWl0IG9yIGNsb3NlIG1lbnVcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZXZlbnQ6IENvbHVtbkFjdGlvbkV2ZW50ID0ge1xuICAgICAgYWN0aW9uLFxuICAgICAgY29sdW1uOiB0aGlzLmNvbnRleHQuY29sdW1uLFxuICAgICAgY29sdW1uSW5kZXg6IHRoaXMuY29udGV4dC5jb2x1bW5JbmRleFxuICAgIH07XG4gICAgXG4gICAgdGhpcy5hY3Rpb25DbGlja2VkLmVtaXQoZXZlbnQpO1xuICB9XG4gIFxuICAvKipcbiAgICogQ2xvc2UgZHJvcGRvd24gd2hlbiBjbGlja2luZyBiYWNrZHJvcFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkJhY2tkcm9wQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2Ryb3Bkb3duLWJhY2tkcm9wJykpIHtcbiAgICAgIC8vIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBvbkZpbHRlckNsb3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIC8vIENsb3NlIHRoZSBlbnRpcmUgY29sdW1uIG1lbnUgd2hlbiBmaWx0ZXIgaXMgY2xvc2VkXG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG5cbiAgb25GaWx0ZXJBcHBsaWVkKGV2ZW50OiB7IG9wZXJhdG9yOiBhbnk7IHZhbHVlOiBhbnkgfSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdGaWx0ZXIgYXBwbGllZDonLCBldmVudCk7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICAvLyBDbG9zZSB0aGUgZW50aXJlIGNvbHVtbiBtZW51IHdoZW4gZmlsdGVyIGlzIGFwcGxpZWRcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICBvbkZpbHRlckNsZWFyZWQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0ZpbHRlciBjbGVhcmVkJyk7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICAvLyBDbG9zZSB0aGUgZW50aXJlIGNvbHVtbiBtZW51IHdoZW4gZmlsdGVyIGlzIGNsZWFyZWRcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGlmIG1lbnUgc2hvdWxkIGFsaWduIHRvIHRoZSBsZWZ0IChmb3IgZmlyc3QgZmV3IGNvbHVtbnMpXG4gICAqL1xuICBzaG91bGRBbGlnbkxlZnQoKTogYm9vbGVhbiB7XG4gICAgLy8gQWxpZ24gbGVmdCBmb3IgZmlyc3QgMiBjb2x1bW5zIHRvIHByZXZlbnQgY2xpcHBpbmdcbiAgICByZXR1cm4gKHRoaXMuY29udGV4dD8uY29sdW1uSW5kZXggfHwgMCkgPD0gMTtcbiAgfVxufSIsIjwhLS0gRHJvcGRvd24gY29udGFpbmVyIHdpdGggYmFja2Ryb3AgLS0+XG48ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGFpbmVyXCIgKm5nSWY9XCJpc09wZW4gJiYgY29udGV4dFwiPlxuICA8IS0tIEJhY2tkcm9wIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tYmFja2Ryb3BcIiAoY2xpY2spPVwiY2xvc2VkLmVtaXQoKVwiPjwvZGl2PlxuICBcbiAgPCEtLSBEcm9wZG93biBtZW51IC0tPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLW1lbnUtZHJvcGRvd25cIiAjZHJvcGRvd25QYW5lbCBbbmdTdHlsZV09XCJkcm9wZG93blN0eWxlXCI+XG4gICAgPCEtLSBNYWluIG1lbnUgd2l0aCBhY3Rpb25zIC0tPlxuICAgIDxuaWxlLW1lbnUgKm5nSWY9XCIhaXNGaWx0ZXJPcGVuXCI+XG4gICAgICA8IS0tIER5bmFtaWNhbGx5IHJlbmRlciBhbGwgdmlzaWJsZSBhY3Rpb25zIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHZpc2libGVBY3Rpb25zOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgPG5pbGUtbWVudS1pdGVtIFxuICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKGFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpc0FjdGlvbkRpc2FibGVkKGFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNBY3Rpb25BY3RpdmUoYWN0aW9uKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCIgKm5nSWY9XCJpc0FjdGlvbkFjdGl2ZShhY3Rpb24pXCI+4pyTPC9zcGFuPlxuICAgICAgICAgIDxuaWxlLWljb24gc2xvdD1cInByZWZpeFwiICpuZ0lmPVwiYWN0aW9uLmljb24gJiYgIWlzQWN0aW9uQWN0aXZlKGFjdGlvbilcIiBbbmFtZV09XCJhY3Rpb24uaWNvblwiPjwvbmlsZS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0aW9uLWxhYmVsXCI+e3sgYWN0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L25pbGUtbWVudS1pdGVtPlxuICAgICAgICBcbiAgICAgICAgPCEtLSBBZGQgZGl2aWRlciBhZnRlciBhY3Rpb24gZ3JvdXBzIC0tPlxuICAgICAgICA8bmlsZS1kaXZpZGVyICpuZ0lmPVwic2hvdWxkU2hvd0RpdmlkZXJBZnRlcihhY3Rpb24sIGksIGxhc3QpXCI+PC9uaWxlLWRpdmlkZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIFxuICAgICAgPCEtLSBGYWxsYmFjayBpZiBubyBhY3Rpb25zIC0tPlxuICAgICAgPG5pbGUtbWVudS1pdGVtICpuZ0lmPVwidmlzaWJsZUFjdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIE5vIGFjdGlvbnMgYXZhaWxhYmxlXG4gICAgICA8L25pbGUtbWVudS1pdGVtPlxuICAgIDwvbmlsZS1tZW51PlxuICAgIFxuICAgIDwhLS0gRmlsdGVyIHBvcHVwIChjb25kaXRpb25hbGx5IHJlbmRlcmVkKSAtLT5cbiAgICA8c3QtY29sdW1uLWZpbHRlclxuICAgICAgI2ZpbHRlclBvcHVwXG4gICAgICAqbmdJZj1cImlzRmlsdGVyT3BlbiAmJiBjb250ZXh0XCJcbiAgICAgIFtjb2x1bW5dPVwiY29udGV4dC5jb2x1bW5cIlxuICAgICAgW3RhYmxlU3RhdGVdPVwiY29udGV4dC50YWJsZVN0YXRlXCJcbiAgICAgIFtjb2x1bW5JbmRleF09XCJjb250ZXh0LmNvbHVtbkluZGV4XCJcbiAgICAgIFtpc0ZpcnN0Q29sdW1uXT1cImNvbnRleHQuaXNGaXJzdENvbHVtblwiXG4gICAgICBbaXNMYXN0Q29sdW1uXT1cImNvbnRleHQuaXNMYXN0Q29sdW1uXCJcbiAgICAgIFtpc09wZW5dPVwiaXNGaWx0ZXJPcGVuXCJcbiAgICAgIChmaWx0ZXJBcHBsaWVkKT1cIm9uRmlsdGVyQXBwbGllZCgkZXZlbnQpXCJcbiAgICAgIChmaWx0ZXJDbGVhcmVkKT1cIm9uRmlsdGVyQ2xlYXJlZCgpXCJcbiAgICAgIChjbG9zZWQpPVwib25GaWx0ZXJDbG9zZWQoKVwiPlxuICAgIDwvc3QtY29sdW1uLWZpbHRlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, HostListener, ChangeDetectionStrategy } from '@angular/core';
|
|
1
|
+
import { Component, Input, Output, EventEmitter, HostListener, ChangeDetectionStrategy, ViewChild } from '@angular/core';
|
|
2
2
|
import { TableZIndex } from '../../models/z-index.enum';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
@@ -9,7 +9,7 @@ export class StRowActionsDropdownComponent {
|
|
|
9
9
|
*/
|
|
10
10
|
this.isOpen = false;
|
|
11
11
|
/**
|
|
12
|
-
* Position of the dropdown (x, y coordinates)
|
|
12
|
+
* Position of the dropdown (x, y coordinates, triggerTop for flip positioning)
|
|
13
13
|
*/
|
|
14
14
|
this.position = { x: 0, y: 0 };
|
|
15
15
|
/**
|
|
@@ -64,35 +64,39 @@ export class StRowActionsDropdownComponent {
|
|
|
64
64
|
this.dropdownStyle = {};
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
67
|
-
const DROPDOWN_WIDTH = 200; // Approximate width
|
|
68
|
-
const DROPDOWN_HEIGHT = this.visibleActions.length * 40 + 16; // Approximate height
|
|
69
|
-
const viewportWidth = window.innerWidth;
|
|
70
|
-
const viewportHeight = window.innerHeight;
|
|
71
67
|
let left = this.position.x;
|
|
72
68
|
let top = this.position.y;
|
|
73
|
-
//
|
|
74
|
-
if (left + DROPDOWN_WIDTH > viewportWidth) {
|
|
75
|
-
left = viewportWidth - DROPDOWN_WIDTH - 10;
|
|
76
|
-
}
|
|
77
|
-
// Check if dropdown would overflow bottom edge
|
|
78
|
-
if (top + DROPDOWN_HEIGHT > viewportHeight) {
|
|
79
|
-
// Position above the trigger
|
|
80
|
-
top = this.position.y - DROPDOWN_HEIGHT;
|
|
81
|
-
}
|
|
82
|
-
// Ensure dropdown doesn't go off-screen on the left
|
|
83
|
-
if (left < 10) {
|
|
84
|
-
left = 10;
|
|
85
|
-
}
|
|
86
|
-
// Ensure dropdown doesn't go off-screen on the top
|
|
87
|
-
if (top < 10) {
|
|
88
|
-
top = 10;
|
|
89
|
-
}
|
|
69
|
+
// Render at initial position first (hidden until measured)
|
|
90
70
|
this.dropdownStyle = {
|
|
91
71
|
position: 'fixed',
|
|
92
72
|
left: `${left}px`,
|
|
93
73
|
top: `${top}px`,
|
|
94
|
-
zIndex: TableZIndex.ROW_ACTIONS_DROPDOWN
|
|
74
|
+
zIndex: TableZIndex.ROW_ACTIONS_DROPDOWN,
|
|
75
|
+
visibility: 'hidden'
|
|
95
76
|
};
|
|
77
|
+
// After rendering, measure actual size and adjust position directly on the DOM
|
|
78
|
+
// (OnPush change detection won't pick up property changes inside requestAnimationFrame)
|
|
79
|
+
requestAnimationFrame(() => {
|
|
80
|
+
const el = this.dropdownPanel?.nativeElement;
|
|
81
|
+
if (!el)
|
|
82
|
+
return;
|
|
83
|
+
const viewportWidth = window.innerWidth;
|
|
84
|
+
const viewportHeight = window.innerHeight;
|
|
85
|
+
const dropdownWidth = el.offsetWidth || 200;
|
|
86
|
+
const dropdownHeight = el.offsetHeight || (this.visibleActions.length * 40 + 16);
|
|
87
|
+
if (left + dropdownWidth > viewportWidth) {
|
|
88
|
+
left = viewportWidth - dropdownWidth - 10;
|
|
89
|
+
}
|
|
90
|
+
if (top + dropdownHeight > viewportHeight) {
|
|
91
|
+
const triggerTop = this.position.triggerTop ?? this.position.y;
|
|
92
|
+
top = triggerTop - dropdownHeight - 4;
|
|
93
|
+
}
|
|
94
|
+
left = Math.max(10, left);
|
|
95
|
+
top = Math.max(10, top);
|
|
96
|
+
el.style.left = `${left}px`;
|
|
97
|
+
el.style.top = `${top}px`;
|
|
98
|
+
el.style.visibility = 'visible';
|
|
99
|
+
});
|
|
96
100
|
}
|
|
97
101
|
/**
|
|
98
102
|
* Handle action click
|
|
@@ -146,10 +150,10 @@ export class StRowActionsDropdownComponent {
|
|
|
146
150
|
}
|
|
147
151
|
}
|
|
148
152
|
StRowActionsDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StRowActionsDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
149
|
-
StRowActionsDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StRowActionsDropdownComponent, selector: "st-row-actions-dropdown", inputs: { isOpen: "isOpen", position: "position", context: "context" }, outputs: { actionClicked: "actionClicked", closed: "closed" }, host: { listeners: { "document:keydown.escape": "onEscapeKey($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-overlay\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"dropdown-menu\" [ngStyle]=\"dropdownStyle\">\n <nile-menu *ngIf=\"isOpen\"
|
|
153
|
+
StRowActionsDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StRowActionsDropdownComponent, selector: "st-row-actions-dropdown", inputs: { isOpen: "isOpen", position: "position", context: "context" }, outputs: { actionClicked: "actionClicked", closed: "closed" }, host: { listeners: { "document:keydown.escape": "onEscapeKey($event)" } }, viewQueries: [{ propertyName: "dropdownPanel", first: true, predicate: ["dropdownPanel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-overlay\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"dropdown-menu\" #dropdownPanel [ngStyle]=\"dropdownStyle\">\n <nile-menu *ngIf=\"isOpen\">\n <ng-container *ngFor=\"let action of visibleActions\">\n <nile-menu-item [class.disabled]=\"isActionDisabled(action)\" (click)=\"onActionClick(action)\" class=\"action-label\">\n <nile-icon *ngIf=\"action.icon\" size=\"14\" slot=\"prefix\" [name]=\"action.icon\"></nile-icon>\n {{ action.label }}\n </nile-menu-item>\n </ng-container>\n \n <nile-menu-item *ngIf=\"visibleActions.length === 0\">No actions available</nile-menu-item>\n </nile-menu>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:transparent;pointer-events:auto;z-index:9998}.dropdown-menu{position:fixed;background-color:#fff;box-shadow:0 5px 15px #0000004d,0 0 0 1px #0000001a;overflow:hidden;pointer-events:auto;z-index:9999}.action-icon{display:flex;align-items:center;justify-content:center;font-size:16px;width:20px;flex-shrink:0}.action-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dropdown-empty{padding:16px;text-align:center;color:#a0aec0;font-size:14px;font-style:italic}nile-menu{height:fit-content}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
150
154
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StRowActionsDropdownComponent, decorators: [{
|
|
151
155
|
type: Component,
|
|
152
|
-
args: [{ selector: 'st-row-actions-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-overlay\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"dropdown-menu\" [ngStyle]=\"dropdownStyle\">\n <nile-menu *ngIf=\"isOpen\"
|
|
156
|
+
args: [{ selector: 'st-row-actions-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-overlay\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"dropdown-menu\" #dropdownPanel [ngStyle]=\"dropdownStyle\">\n <nile-menu *ngIf=\"isOpen\">\n <ng-container *ngFor=\"let action of visibleActions\">\n <nile-menu-item [class.disabled]=\"isActionDisabled(action)\" (click)=\"onActionClick(action)\" class=\"action-label\">\n <nile-icon *ngIf=\"action.icon\" size=\"14\" slot=\"prefix\" [name]=\"action.icon\"></nile-icon>\n {{ action.label }}\n </nile-menu-item>\n </ng-container>\n \n <nile-menu-item *ngIf=\"visibleActions.length === 0\">No actions available</nile-menu-item>\n </nile-menu>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:transparent;pointer-events:auto;z-index:9998}.dropdown-menu{position:fixed;background-color:#fff;box-shadow:0 5px 15px #0000004d,0 0 0 1px #0000001a;overflow:hidden;pointer-events:auto;z-index:9999}.action-icon{display:flex;align-items:center;justify-content:center;font-size:16px;width:20px;flex-shrink:0}.action-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dropdown-empty{padding:16px;text-align:center;color:#a0aec0;font-size:14px;font-style:italic}nile-menu{height:fit-content}\n"] }]
|
|
153
157
|
}], propDecorators: { isOpen: [{
|
|
154
158
|
type: Input
|
|
155
159
|
}], position: [{
|
|
@@ -160,8 +164,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
160
164
|
type: Output
|
|
161
165
|
}], closed: [{
|
|
162
166
|
type: Output
|
|
167
|
+
}], dropdownPanel: [{
|
|
168
|
+
type: ViewChild,
|
|
169
|
+
args: ['dropdownPanel']
|
|
163
170
|
}], onEscapeKey: [{
|
|
164
171
|
type: HostListener,
|
|
165
172
|
args: ['document:keydown.escape', ['$event']]
|
|
166
173
|
}] } });
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Qtcm93LWFjdGlvbnMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9yZW5kZXJlci9jb21wb25lbnRzL3N0LXJvdy1hY3Rpb25zLWRyb3Bkb3duL3N0LXJvdy1hY3Rpb25zLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1yb3ctYWN0aW9ucy1kcm9wZG93bi9zdC1yb3ctYWN0aW9ucy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBNEIsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFReEQsTUFBTSxPQUFPLDZCQUE2QjtJQU4xQztRQU9FOztXQUVHO1FBQ00sV0FBTSxHQUFZLEtBQUssQ0FBQztRQUVqQzs7V0FFRztRQUNNLGFBQVEsR0FBNkIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUU3RDs7V0FFRztRQUNNLFlBQU8sR0FBNEIsSUFBSSxDQUFDO1FBRWpEOztXQUVHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUU3RDs7V0FFRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTVDOztXQUVHO1FBQ0gsbUJBQWMsR0FBZ0IsRUFBRSxDQUFDO1FBRWpDOztXQUVHO1FBQ0gsa0JBQWEsR0FBUSxFQUFFLENBQUM7S0FxSXpCO0lBbklDLFdBQVcsQ0FBQyxPQUFzQjtR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QUtJLGFBQWE7c0JBQXRCLE1BQU07Z0JBS0csTUFBTTtzQkFBZixNQUFNO2dCQWlJUCxXQUFXO3NCQURWLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3dBY3Rpb24sIFJvd0FjdGlvbkNvbnRleHQsIFJvd0FjdGlvbkV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jvdy1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFRhYmxlWkluZGV4IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3otaW5kZXguZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0LXJvdy1hY3Rpb25zLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0LXJvdy1hY3Rpb25zLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3Qtcm93LWFjdGlvbnMtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU3RSb3dBY3Rpb25zRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZHJvcGRvd24gaXMgb3BlblxuICAgKi9cbiAgQElucHV0KCkgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIGRyb3Bkb3duICh4LCB5IGNvb3JkaW5hdGVzKVxuICAgKi9cbiAgQElucHV0KCkgcG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9IHsgeDogMCwgeTogMCB9O1xuICBcbiAgLyoqXG4gICAqIENvbnRleHQgY29udGFpbmluZyByb3cgZGF0YSwgaW5kZXgsIGFuZCBhY3Rpb25zXG4gICAqL1xuICBASW5wdXQoKSBjb250ZXh0OiBSb3dBY3Rpb25Db250ZXh0IHwgbnVsbCA9IG51bGw7XG4gIFxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFuIGFjdGlvbiBpcyBjbGlja2VkXG4gICAqL1xuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Um93QWN0aW9uRXZlbnQ+KCk7XG4gIFxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBkcm9wZG93biBzaG91bGQgY2xvc2VcbiAgICovXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIFxuICAvKipcbiAgICogVmlzaWJsZSBhY3Rpb25zIChmaWx0ZXJlZCBieSBoaWRkZW4gcHJvcGVydHkpXG4gICAqL1xuICB2aXNpYmxlQWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgXG4gIC8qKlxuICAgKiBEcm9wZG93biBwb3NpdGlvbmluZyBzdHlsZVxuICAgKi9cbiAgZHJvcGRvd25TdHlsZTogYW55ID0ge307XG4gIFxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbnRleHQnXSB8fCBjaGFuZ2VzWydpc09wZW4nXSkge1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlQWN0aW9ucygpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoY2hhbmdlc1sncG9zaXRpb24nXSB8fCBjaGFuZ2VzWydpc09wZW4nXSkge1xuICAgICAgdGhpcy51cGRhdGVEcm9wZG93blBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogVXBkYXRlIHZpc2libGUgYWN0aW9ucyBiYXNlZCBvbiBoaWRkZW4gcHJvcGVydHlcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVmlzaWJsZUFjdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHtcbiAgICAgIHRoaXMudmlzaWJsZUFjdGlvbnMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdGhpcy52aXNpYmxlQWN0aW9ucyA9IHRoaXMuY29udGV4dC5hY3Rpb25zLmZpbHRlcihhY3Rpb24gPT4ge1xuICAgICAgaWYgKHR5cGVvZiBhY3Rpb24uaGlkZGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAhYWN0aW9uLmhpZGRlbih0aGlzLmNvbnRleHQhLnJvd0RhdGEsIHRoaXMuY29udGV4dCEucm93SW5kZXgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuICFhY3Rpb24uaGlkZGVuO1xuICAgIH0pO1xuICB9XG4gIFxuICAvKipcbiAgICogVXBkYXRlIGRyb3Bkb3duIHBvc2l0aW9uIGJhc2VkIG9uIGF2YWlsYWJsZSB2aWV3cG9ydCBzcGFjZVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVEcm9wZG93blBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuZHJvcGRvd25TdHlsZSA9IHt9O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBEUk9QRE9XTl9XSURUSCA9IDIwMDsgLy8gQXBwcm94aW1hdGUgd2lkdGhcbiAgICBjb25zdCBEUk9QRE9XTl9IRUlHSFQgPSB0aGlzLnZpc2libGVBY3Rpb25zLmxlbmd0aCAqIDQwICsgMTY7IC8vIEFwcHJveGltYXRlIGhlaWdodFxuICAgIFxuICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICBcbiAgICBsZXQgbGVmdCA9IHRoaXMucG9zaXRpb24ueDtcbiAgICBsZXQgdG9wID0gdGhpcy5wb3NpdGlvbi55O1xuICAgIFxuICAgIC8vIENoZWNrIGlmIGRyb3Bkb3duIHdvdWxkIG92ZXJmbG93IHJpZ2h0IGVkZ2VcbiAgICBpZiAobGVmdCArIERST1BET1dOX1dJRFRIID4gdmlld3BvcnRXaWR0aCkge1xuICAgICAgbGVmdCA9IHZpZXdwb3J0V2lkdGggLSBEUk9QRE9XTl9XSURUSCAtIDEwO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBpZiBkcm9wZG93biB3b3VsZCBvdmVyZmxvdyBib3R0b20gZWRnZVxuICAgIGlmICh0b3AgKyBEUk9QRE9XTl9IRUlHSFQgPiB2aWV3cG9ydEhlaWdodCkge1xuICAgICAgLy8gUG9zaXRpb24gYWJvdmUgdGhlIHRyaWdnZXJcbiAgICAgIHRvcCA9IHRoaXMucG9zaXRpb24ueSAtIERST1BET1dOX0hFSUdIVDtcbiAgICB9XG4gICAgXG4gICAgLy8gRW5zdXJlIGRyb3Bkb3duIGRvZXNuJ3QgZ28gb2ZmLXNjcmVlbiBvbiB0aGUgbGVmdFxuICAgIGlmIChsZWZ0IDwgMTApIHtcbiAgICAgIGxlZnQgPSAxMDtcbiAgICB9XG4gICAgXG4gICAgLy8gRW5zdXJlIGRyb3Bkb3duIGRvZXNuJ3QgZ28gb2ZmLXNjcmVlbiBvbiB0aGUgdG9wXG4gICAgaWYgKHRvcCA8IDEwKSB7XG4gICAgICB0b3AgPSAxMDtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5kcm9wZG93blN0eWxlID0ge1xuICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICBsZWZ0OiBgJHtsZWZ0fXB4YCxcbiAgICAgIHRvcDogYCR7dG9wfXB4YCxcbiAgICAgIHpJbmRleDogVGFibGVaSW5kZXguUk9XX0FDVElPTlNfRFJPUERPV05cbiAgICB9O1xuICB9XG4gIFxuICAvKipcbiAgICogSGFuZGxlIGFjdGlvbiBjbGlja1xuICAgKi9cbiAgb25BY3Rpb25DbGljayhhY3Rpb246IFJvd0FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZXh0KSByZXR1cm47XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgYWN0aW9uIGlzIGRpc2FibGVkXG4gICAgaWYgKHRoaXMuaXNBY3Rpb25EaXNhYmxlZChhY3Rpb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGV2ZW50OiBSb3dBY3Rpb25FdmVudCA9IHtcbiAgICAgIGFjdGlvbixcbiAgICAgIHJvd0RhdGE6IHRoaXMuY29udGV4dC5yb3dEYXRhLFxuICAgICAgcm93SW5kZXg6IHRoaXMuY29udGV4dC5yb3dJbmRleFxuICAgIH07XG4gICAgXG4gICAgdGhpcy5hY3Rpb25DbGlja2VkLmVtaXQoZXZlbnQpO1xuICB9XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYWN0aW9uIGlzIGRpc2FibGVkXG4gICAqL1xuICBpc0FjdGlvbkRpc2FibGVkKGFjdGlvbjogUm93QWN0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHJldHVybiB0cnVlO1xuICAgIFxuICAgIGlmICh0eXBlb2YgYWN0aW9uLmRpc2FibGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gYWN0aW9uLmRpc2FibGVkKHRoaXMuY29udGV4dC5yb3dEYXRhLCB0aGlzLmNvbnRleHQucm93SW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gISFhY3Rpb24uZGlzYWJsZWQ7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBIYW5kbGUgb3ZlcmxheSBjbGljayAoY2xvc2UgZHJvcGRvd24pXG4gICAqL1xuICBvbk92ZXJsYXlDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBIYW5kbGUgRVNDIGtleSBwcmVzc1xuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBvbkVzY2FwZUtleShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBQcmV2ZW50IGRyb3Bkb3duIGNsaWNrIGZyb20gY2xvc2luZ1xuICAgKi9cbiAgb25Ecm9wZG93bkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGFpbmVyXCIgKm5nSWY9XCJpc09wZW4gJiYgY29udGV4dFwiPlxuICA8IS0tIEJhY2tkcm9wIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tb3ZlcmxheVwiIChjbGljayk9XCJjbG9zZWQuZW1pdCgpXCI+PC9kaXY+XG4gIFxuICA8IS0tIERyb3Bkb3duIG1lbnUgLS0+XG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgW25nU3R5bGVdPVwiZHJvcGRvd25TdHlsZVwiPlxuICAgIDxuaWxlLW1lbnUgKm5nSWY9XCJpc09wZW5cIiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBbc3R5bGUubGVmdC5weF09XCJkcm9wZG93blN0eWxlLmxlZnRcIiBbc3R5bGUudG9wLnB4XT1cImRyb3Bkb3duU3R5bGUudG9wXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdmlzaWJsZUFjdGlvbnNcIj5cbiAgICAgICAgPG5pbGUtbWVudS1pdGVtIFtjbGFzcy5kaXNhYmxlZF09XCJpc0FjdGlvbkRpc2FibGVkKGFjdGlvbilcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayhhY3Rpb24pXCIgY2xhc3M9XCJhY3Rpb24tbGFiZWxcIj5cbiAgICAgICAgICA8bmlsZS1pY29uICAqbmdJZj1cImFjdGlvbi5pY29uXCIgc2l6ZT1cIjE0XCIgc2xvdD1cInByZWZpeFwiIFtuYW1lXT1cImFjdGlvbi5pY29uXCI+PC9uaWxlLWljb24+XG4gICAgICAgICAge3sgYWN0aW9uLmxhYmVsIH19XG4gICAgICAgIDwvbmlsZS1tZW51LWl0ZW0+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBcbiAgICAgIDxuaWxlLW1lbnUtaXRlbSAqbmdJZj1cInZpc2libGVBY3Rpb25zLmxlbmd0aCA9PT0gMFwiPk5vIGFjdGlvbnMgYXZhaWxhYmxlPC9uaWxlLW1lbnUtaXRlbT5cbiAgICA8L25pbGUtbWVudT5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbiJdfQ==
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Qtcm93LWFjdGlvbnMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9yZW5kZXJlci9jb21wb25lbnRzL3N0LXJvdy1hY3Rpb25zLWRyb3Bkb3duL3N0LXJvdy1hY3Rpb25zLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1yb3ctYWN0aW9ucy1kcm9wZG93bi9zdC1yb3ctYWN0aW9ucy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBNEIsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRS9KLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBUXhELE1BQU0sT0FBTyw2QkFBNkI7SUFOMUM7UUFPRTs7V0FFRztRQUNNLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFakM7O1dBRUc7UUFDTSxhQUFRLEdBQWtELEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFbEY7O1dBRUc7UUFDTSxZQUFPLEdBQTRCLElBQUksQ0FBQztRQUVqRDs7V0FFRztRQUNPLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFN0Q7O1dBRUc7UUFDTyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUk1Qzs7V0FFRztRQUNILG1CQUFjLEdBQWdCLEVBQUUsQ0FBQztRQUVqQzs7V0FFRztRQUNILGtCQUFhLEdBQVEsRUFBRSxDQUFDO0tBd0l6QjtJQXRJQyxXQUFXLENB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Q3RCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxLQUFZO1FBQzFCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDOzswSEEzS1UsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsc1pDVjFDLCt5QkFrQkE7MkZEUmEsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTTs4QkFNdEMsTUFBTTtzQkFBZCxLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csT0FBTztzQkFBZixLQUFLO2dCQUtJLGFBQWE7c0JBQXRCLE1BQU07Z0JBS0csTUFBTTtzQkFBZixNQUFNO2dCQUVxQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBb0kxQixXQUFXO3NCQURWLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvd0FjdGlvbiwgUm93QWN0aW9uQ29udGV4dCwgUm93QWN0aW9uRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcm93LWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVaSW5kZXggfSBmcm9tICcuLi8uLi9tb2RlbHMvei1pbmRleC5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Qtcm93LWFjdGlvbnMtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Qtcm93LWFjdGlvbnMtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdC1yb3ctYWN0aW9ucy1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTdFJvd0FjdGlvbnNEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkcm9wZG93biBpcyBvcGVuXG4gICAqL1xuICBASW5wdXQoKSBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiB0aGUgZHJvcGRvd24gKHgsIHkgY29vcmRpbmF0ZXMsIHRyaWdnZXJUb3AgZm9yIGZsaXAgcG9zaXRpb25pbmcpXG4gICAqL1xuICBASW5wdXQoKSBwb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgdHJpZ2dlclRvcD86IG51bWJlciB9ID0geyB4OiAwLCB5OiAwIH07XG4gIFxuICAvKipcbiAgICogQ29udGV4dCBjb250YWluaW5nIHJvdyBkYXRhLCBpbmRleCwgYW5kIGFjdGlvbnNcbiAgICovXG4gIEBJbnB1dCgpIGNvbnRleHQ6IFJvd0FjdGlvbkNvbnRleHQgfCBudWxsID0gbnVsbDtcbiAgXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYW4gYWN0aW9uIGlzIGNsaWNrZWRcbiAgICovXG4gIEBPdXRwdXQoKSBhY3Rpb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dBY3Rpb25FdmVudD4oKTtcbiAgXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGRyb3Bkb3duIHNob3VsZCBjbG9zZVxuICAgKi9cbiAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duUGFuZWwnKSBkcm9wZG93blBhbmVsPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgLyoqXG4gICAqIFZpc2libGUgYWN0aW9ucyAoZmlsdGVyZWQgYnkgaGlkZGVuIHByb3BlcnR5KVxuICAgKi9cbiAgdmlzaWJsZUFjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIFxuICAvKipcbiAgICogRHJvcGRvd24gcG9zaXRpb25pbmcgc3R5bGVcbiAgICovXG4gIGRyb3Bkb3duU3R5bGU6IGFueSA9IHt9O1xuICBcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb250ZXh0J10gfHwgY2hhbmdlc1snaXNPcGVuJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUFjdGlvbnMoKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGNoYW5nZXNbJ3Bvc2l0aW9uJ10gfHwgY2hhbmdlc1snaXNPcGVuJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIFVwZGF0ZSB2aXNpYmxlIGFjdGlvbnMgYmFzZWQgb24gaGlkZGVuIHByb3BlcnR5XG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVZpc2libGVBY3Rpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aGlzLnZpc2libGVBY3Rpb25zID0gW107XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIHRoaXMudmlzaWJsZUFjdGlvbnMgPSB0aGlzLmNvbnRleHQuYWN0aW9ucy5maWx0ZXIoYWN0aW9uID0+IHtcbiAgICAgIGlmICh0eXBlb2YgYWN0aW9uLmhpZGRlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gIWFjdGlvbi5oaWRkZW4odGhpcy5jb250ZXh0IS5yb3dEYXRhLCB0aGlzLmNvbnRleHQhLnJvd0luZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhYWN0aW9uLmhpZGRlbjtcbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFVwZGF0ZSBkcm9wZG93biBwb3NpdGlvbiBiYXNlZCBvbiBhdmFpbGFibGUgdmlld3BvcnQgc3BhY2VcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLmRyb3Bkb3duU3R5bGUgPSB7fTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgbGV0IGxlZnQgPSB0aGlzLnBvc2l0aW9uLng7XG4gICAgbGV0IHRvcCA9IHRoaXMucG9zaXRpb24ueTtcbiAgICBcbiAgICAvLyBSZW5kZXIgYXQgaW5pdGlhbCBwb3NpdGlvbiBmaXJzdCAoaGlkZGVuIHVudGlsIG1lYXN1cmVkKVxuICAgIHRoaXMuZHJvcGRvd25TdHlsZSA9IHtcbiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgbGVmdDogYCR7bGVmdH1weGAsXG4gICAgICB0b3A6IGAke3RvcH1weGAsXG4gICAgICB6SW5kZXg6IFRhYmxlWkluZGV4LlJPV19BQ1RJT05TX0RST1BET1dOLFxuICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbiAgICB9O1xuICAgIFxuICAgIC8vIEFmdGVyIHJlbmRlcmluZywgbWVhc3VyZSBhY3R1YWwgc2l6ZSBhbmQgYWRqdXN0IHBvc2l0aW9uIGRpcmVjdGx5IG9uIHRoZSBET01cbiAgICAvLyAoT25QdXNoIGNoYW5nZSBkZXRlY3Rpb24gd29uJ3QgcGljayB1cCBwcm9wZXJ0eSBjaGFuZ2VzIGluc2lkZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUpXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5kcm9wZG93blBhbmVsPy5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKCFlbCkgcmV0dXJuO1xuXG4gICAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgIGNvbnN0IGRyb3Bkb3duV2lkdGggPSBlbC5vZmZzZXRXaWR0aCB8fCAyMDA7XG4gICAgICBjb25zdCBkcm9wZG93bkhlaWdodCA9IGVsLm9mZnNldEhlaWdodCB8fCAodGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGggKiA0MCArIDE2KTtcbiAgICAgIFxuICAgICAgaWYgKGxlZnQgKyBkcm9wZG93bldpZHRoID4gdmlld3BvcnRXaWR0aCkge1xuICAgICAgICBsZWZ0ID0gdmlld3BvcnRXaWR0aCAtIGRyb3Bkb3duV2lkdGggLSAxMDtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKHRvcCArIGRyb3Bkb3duSGVpZ2h0ID4gdmlld3BvcnRIZWlnaHQpIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlclRvcCA9IHRoaXMucG9zaXRpb24udHJpZ2dlclRvcCA/PyB0aGlzLnBvc2l0aW9uLnk7XG4gICAgICAgIHRvcCA9IHRyaWdnZXJUb3AgLSBkcm9wZG93bkhlaWdodCAtIDQ7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGxlZnQgPSBNYXRoLm1heCgxMCwgbGVmdCk7XG4gICAgICB0b3AgPSBNYXRoLm1heCgxMCwgdG9wKTtcbiAgICAgIFxuICAgICAgZWwuc3R5bGUubGVmdCA9IGAke2xlZnR9cHhgO1xuICAgICAgZWwuc3R5bGUudG9wID0gYCR7dG9wfXB4YDtcbiAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgfSk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBIYW5kbGUgYWN0aW9uIGNsaWNrXG4gICAqL1xuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogUm93QWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHJldHVybjtcbiAgICBcbiAgICAvLyBDaGVjayBpZiBhY3Rpb24gaXMgZGlzYWJsZWRcbiAgICBpZiAodGhpcy5pc0FjdGlvbkRpc2FibGVkKGFjdGlvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZXZlbnQ6IFJvd0FjdGlvbkV2ZW50ID0ge1xuICAgICAgYWN0aW9uLFxuICAgICAgcm93RGF0YTogdGhpcy5jb250ZXh0LnJvd0RhdGEsXG4gICAgICByb3dJbmRleDogdGhpcy5jb250ZXh0LnJvd0luZGV4XG4gICAgfTtcbiAgICBcbiAgICB0aGlzLmFjdGlvbkNsaWNrZWQuZW1pdChldmVudCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhY3Rpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIGlzQWN0aW9uRGlzYWJsZWQoYWN0aW9uOiBSb3dBY3Rpb24pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkgcmV0dXJuIHRydWU7XG4gICAgXG4gICAgaWYgKHR5cGVvZiBhY3Rpb24uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhY3Rpb24uZGlzYWJsZWQodGhpcy5jb250ZXh0LnJvd0RhdGEsIHRoaXMuY29udGV4dC5yb3dJbmRleCk7XG4gICAgfVxuICAgIHJldHVybiAhIWFjdGlvbi5kaXNhYmxlZDtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEhhbmRsZSBvdmVybGF5IGNsaWNrIChjbG9zZSBkcm9wZG93bilcbiAgICovXG4gIG9uT3ZlcmxheUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEhhbmRsZSBFU0Mga2V5IHByZXNzXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXG4gIG9uRXNjYXBlS2V5KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIFByZXZlbnQgZHJvcGRvd24gY2xpY2sgZnJvbSBjbG9zaW5nXG4gICAqL1xuICBvbkRyb3Bkb3duQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250YWluZXJcIiAqbmdJZj1cImlzT3BlbiAmJiBjb250ZXh0XCI+XG4gIDwhLS0gQmFja2Ryb3AgLS0+XG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1vdmVybGF5XCIgKGNsaWNrKT1cImNsb3NlZC5lbWl0KClcIj48L2Rpdj5cbiAgXG4gIDwhLS0gRHJvcGRvd24gbWVudSAtLT5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiAjZHJvcGRvd25QYW5lbCBbbmdTdHlsZV09XCJkcm9wZG93blN0eWxlXCI+XG4gICAgPG5pbGUtbWVudSAqbmdJZj1cImlzT3BlblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHZpc2libGVBY3Rpb25zXCI+XG4gICAgICAgIDxuaWxlLW1lbnUtaXRlbSBbY2xhc3MuZGlzYWJsZWRdPVwiaXNBY3Rpb25EaXNhYmxlZChhY3Rpb24pXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiIGNsYXNzPVwiYWN0aW9uLWxhYmVsXCI+XG4gICAgICAgICAgPG5pbGUtaWNvbiAqbmdJZj1cImFjdGlvbi5pY29uXCIgc2l6ZT1cIjE0XCIgc2xvdD1cInByZWZpeFwiIFtuYW1lXT1cImFjdGlvbi5pY29uXCI+PC9uaWxlLWljb24+XG4gICAgICAgICAge3sgYWN0aW9uLmxhYmVsIH19XG4gICAgICAgIDwvbmlsZS1tZW51LWl0ZW0+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBcbiAgICAgIDxuaWxlLW1lbnUtaXRlbSAqbmdJZj1cInZpc2libGVBY3Rpb25zLmxlbmd0aCA9PT0gMFwiPk5vIGFjdGlvbnMgYXZhaWxhYmxlPC9uaWxlLW1lbnUtaXRlbT5cbiAgICA8L25pbGUtbWVudT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|