@sunbird-cb/tree-hierarchy 0.0.6-cbrelease-4.8.26 → 0.0.8-cbrelease-4.8.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.mjs +22 -3
- package/esm2022/lib/components/term-card/term-card.component.mjs +2 -2
- package/esm2022/lib/components/tree-column-view/tree-column-view.component.mjs +3 -3
- package/esm2022/lib/components/tree-view/tree-view.component.mjs +8 -11
- package/esm2022/lib/services/connector.service.mjs +27 -4
- package/fesm2022/sunbird-cb-tree-hierarchy.mjs +58 -19
- package/fesm2022/sunbird-cb-tree-hierarchy.mjs.map +1 -1
- package/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.d.ts +2 -0
- package/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.d.ts.map +1 -1
- package/lib/components/tree-view/tree-view.component.d.ts.map +1 -1
- package/lib/services/connector.service.d.ts +1 -0
- package/lib/services/connector.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -64,17 +64,27 @@ export class ConnectorService {
|
|
|
64
64
|
}
|
|
65
65
|
let container = treeViewComponent.querySelector('#leader-line-container');
|
|
66
66
|
if (!container) {
|
|
67
|
+
let overflowWrapper = document.createElement('div');
|
|
68
|
+
overflowWrapper.id = 'leader-line-overflow-wrapper';
|
|
69
|
+
overflowWrapper.style.position = 'absolute';
|
|
70
|
+
overflowWrapper.style.top = '80px';
|
|
71
|
+
overflowWrapper.style.bottom = '0';
|
|
72
|
+
overflowWrapper.style.left = '0';
|
|
73
|
+
overflowWrapper.style.right = '0';
|
|
74
|
+
overflowWrapper.style.overflow = 'hidden';
|
|
75
|
+
overflowWrapper.style.pointerEvents = 'none';
|
|
67
76
|
container = document.createElement('div');
|
|
68
77
|
container.id = 'leader-line-container';
|
|
69
78
|
container.style.position = 'absolute';
|
|
70
79
|
container.style.top = '0';
|
|
80
|
+
container.style.bottom = '0';
|
|
71
81
|
container.style.left = '0';
|
|
82
|
+
container.style.right = '0';
|
|
72
83
|
container.style.width = '100%';
|
|
73
84
|
container.style.height = '100%';
|
|
74
85
|
container.style.pointerEvents = 'none';
|
|
75
|
-
container
|
|
76
|
-
|
|
77
|
-
treeViewComponent.appendChild(container);
|
|
86
|
+
overflowWrapper.appendChild(container);
|
|
87
|
+
treeViewComponent.appendChild(overflowWrapper);
|
|
78
88
|
}
|
|
79
89
|
this.elmWrapper = container;
|
|
80
90
|
let sourceElement = source;
|
|
@@ -231,10 +241,23 @@ export class ConnectorService {
|
|
|
231
241
|
}
|
|
232
242
|
this.updateConnectorsMap({});
|
|
233
243
|
}
|
|
244
|
+
repositionAllLines() {
|
|
245
|
+
if (this.connectorMap) {
|
|
246
|
+
Object.values(this.connectorMap).forEach((connector) => {
|
|
247
|
+
if (connector && connector.lines) {
|
|
248
|
+
connector.lines.forEach((item) => {
|
|
249
|
+
if (item.line && typeof item.line.position === 'function') {
|
|
250
|
+
item.line.position();
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
234
257
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConnectorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
235
258
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConnectorService }); }
|
|
236
259
|
}
|
|
237
260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConnectorService, decorators: [{
|
|
238
261
|
type: Injectable
|
|
239
262
|
}], ctorParameters: function () { return []; } });
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9jb25uZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQzs7QUFrQnpCLE1BQU0sT0FBTyxnQkFBZ0I7SUFLM0I7UUFKQSxpQkFBWSxHQUF5QixFQUFFLENBQUM7UUFFeEMsc0JBQWlCLEdBQUcsb0JBQW9CLENBQUM7SUFFMUIsQ0FBQztJQUVoQixTQUFTLENBQUMsTUFBVyxFQUFFLE1BQVcsRUFBRSxVQUFlLGFBQWEsRUFBRSxvQkFBeUIsU0FBUyxFQUFFLG9CQUF5QixTQUFTO1FBQ3RJLE1BQU0sUUFBUSxHQUFRLEVBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxPQUFPLEVBQUMsQ0FBQztRQUNyRCxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixJQUFJLGFBQWEsR0FBbUIsRUFBRSxDQUFDO1lBRXZDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM1RCxhQUFhLENBQUMsSUFBSSxDQUFDO29CQUNqQixNQUFNLEVBQUUsT0FBTztvQkFDZixJQUFJLEVBQUUsUUFBUTtpQkFDZixDQUFDLENBQUM7Z0JBRUgsSUFBRyxpQkFBaUIsRUFBRTtvQkFD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Z0I7bUhBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwcC1jb25zdGFudCc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmludGVyZmFjZSBDb25uZWN0ZWREb3Qge1xuICB0YXJnZXQ6IGFueTtcbiAgbGluZTogYW55O1xufVxuXG5pbnRlcmZhY2UgRDNMaW5lIHtcbiAgc291cmNlOiBhbnk7XG4gIHRhcmdldDogYW55O1xuICBwYXRoOiBhbnk7XG4gIHN2ZzogYW55O1xuICBwb3NpdGlvbjogKCkgPT4gdm9pZDtcbiAgc2hvdzogKGFuaW1hdGlvbj86IHN0cmluZykgPT4gdm9pZDtcbiAgcmVtb3ZlOiAoKSA9PiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29ubmVjdG9yU2VydmljZSB7XG4gIGNvbm5lY3Rvck1hcDoge1trZXk6IHN0cmluZ106IGFueX0gPSB7fTtcbiAgZWxtV3JhcHBlcjogYW55O1xuICBjb250YWluZXJTZWxlY3RvciA9ICcjdHJlZVZpZXdDb250YWluZXInOyAvLyBZb3UgbWlnaHQgbmVlZCB0byBhZGp1c3QgdGhpcyBzZWxlY3RvclxuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBfZHJhd0xpbmUoc291cmNlOiBhbnksIHRhcmdldDogYW55LCBvcHRpb25zOiBhbnkgPSBkZWZhdWx0Q29uZmlnLCBzb3VyY2VDb250YWluZXJJZDogYW55ID0gdW5kZWZpbmVkLCB0YXJnZXRDb250YWluZXJJZDogYW55ID0gdW5kZWZpbmVkKTogYW55IHtcbiAgICBjb25zdCBfb3B0aW9ucyA9IDxhbnk+ey4uLmRlZmF1bHRDb25maWcsIC4uLm9wdGlvbnN9O1xuICAgIF9vcHRpb25zWydkYXNoZWQnXSA9IHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgICBsZXQgY29ubmVjdGVkRG90czogQ29ubmVjdGVkRG90W10gPSBbXTtcbiAgICAgIFxuICAgICAgdGFyZ2V0LmZvckVhY2goKF90YXJnZXQpID0+IHtcbiAgICAgICAgY29uc3QgdGVtcExpbmUgPSB0aGlzLnJlbmRlckxpbmUoc291cmNlLCBfdGFyZ2V0LCBfb3B0aW9ucyk7XG4gICAgICAgIGNvbm5lY3RlZERvdHMucHVzaCh7XG4gICAgICAgICAgdGFyZ2V0OiBfdGFyZ2V0LFxuICAgICAgICAgIGxpbmU6IHRlbXBMaW5lXG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgaWYoc291cmNlQ29udGFpbmVySWQpIHtcbiAgICAgICAgICBjb25zdCBzb3VyY2VDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNvdXJjZUNvbnRhaW5lcklkKTtcbiAgICAgICAgICBpZiAoc291cmNlQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBzb3VyY2VDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRlbXBMaW5lICYmIHRlbXBMaW5lLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgICAgIC8vIEVycm9yIGhhbmRsaW5nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKHRhcmdldENvbnRhaW5lcklkKSB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0Q29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXRDb250YWluZXJJZCk7XG4gICAgICAgICAgaWYgKHRhcmdldENvbnRhaW5lcikge1xuICAgICAgICAgICAgdGFyZ2V0Q29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0ZW1wTGluZSAmJiB0ZW1wTGluZS5wb3NpdGlvbigpO1xuICAgICAgICAgICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBFcnJvciBoYW5kbGluZ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGNvbm5lY3RlZERvdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckxpbmUoc291cmNlLCB0YXJnZXQsIF9vcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckxpbmUoc291cmNlOiBhbnksIHRhcmdldDogYW55LCBvcHRpb25zOiBhbnkpOiBEM0xpbmUge1xuICAgIC8vIEZpbmQgb3IgY3JlYXRlIHRoZSBjb250YWluZXIgZWxlbWVudFxuICAgIGNvbnN0IHRyZWVWaWV3Q29tcG9uZW50OiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY29udGFpbmVyU2VsZWN0b3IpO1xuICAgIGlmICghdHJlZVZpZXdDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICBwYXRoOiBudWxsLFxuICAgICAgICBzdmc6IG51bGwsXG4gICAgICAgIHBvc2l0aW9uOiAoKSA9PiB7fSxcbiAgICAgICAgc2hvdzogKCkgPT4ge30sXG4gICAgICAgIHJlbW92ZTogKCkgPT4ge31cbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBvciBnZXQgY29udGFpbmVyIGZvciB0aGUgU1ZHXG4gICAgbGV0IGNvbnRhaW5lcjogYW55ID0gdHJlZVZpZXdDb21wb25lbnQucXVlcnlTZWxlY3RvcignI2xlYWRlci1saW5lLWNvbnRhaW5lcicpO1xuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGNvbnRhaW5lci5pZCA9ICdsZWFkZXItbGluZS1jb250YWluZXInO1xuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS50b3AgPSAnMCc7XG4gICAgICBjb250YWluZXIuc3R5bGUubGVmdCA9ICcwJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICBjb250YWluZXIuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSAnMTAwMCc7XG4gICAgICBjb250YWluZXIuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgIHRyZWVWaWV3Q29tcG9uZW50LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgfVxuICAgIFxuICAgIC8vIFN0b3JlIGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGFjY2VzcyBpbiBvdGhlciBtZXRob2RzXG4gICAgdGhpcy5lbG1XcmFwcGVyID0gY29udGFpbmVyO1xuICAgIFxuICAgIC8vIEdldCB0aGUgc291cmNlIGFuZCB0YXJnZXQgZWxlbWVudHNcbiAgICBsZXQgc291cmNlRWxlbWVudCA9IHNvdXJjZTtcbiAgICBsZXQgdGFyZ2V0RWxlbWVudDogYW55O1xuICAgIFxuICAgIGlmICh0YXJnZXQudGFyZ2V0VHlwZSA9PT0gJ2lkJykge1xuICAgICAgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldC50YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRFbGVtZW50ID0gdGFyZ2V0LnRhcmdldDtcbiAgICB9XG4gICAgXG4gICAgLy8gRW5zdXJlIGJvdGggZWxlbWVudHMgZXhpc3RcbiAgICBpZiAoIXNvdXJjZUVsZW1lbnQgfHwgIXRhcmdldEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICBwYXRoOiBudWxsLFxuICAgICAgICBzdmc6IG51bGwsXG4gICAgICAgIHBvc2l0aW9uOiAoKSA9PiB7fSxcbiAgICAgICAgc2hvdzogKCkgPT4ge30sXG4gICAgICAgIHJlbW92ZTogKCkgPT4ge31cbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBJRCBmb3IgdGhlIFNWR1xuICAgIGNvbnN0IHN2Z0lkID0gJ2QzLWxpbmUtJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICBcbiAgICAvLyBDcmVhdGUgU1ZHIGVsZW1lbnRcbiAgICBjb25zdCBzdmcgPSBkMy5zZWxlY3QoY29udGFpbmVyKVxuICAgICAgLmFwcGVuZCgnc3ZnJylcbiAgICAgIC5hdHRyKCdpZCcsIHN2Z0lkKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ2xlYWRlci1saW5lJylcbiAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAnYWJzb2x1dGUnKVxuICAgICAgLnN0eWxlKCd0b3AnLCAnMCcpXG4gICAgICAuc3R5bGUoJ2xlZnQnLCAnMCcpXG4gICAgICAuc3R5bGUoJ3dpZHRoJywgJzEwMCUnKVxuICAgICAgLnN0eWxlKCdoZWlnaHQnLCAnMTAwJScpXG4gICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvdmVyZmxvdycsICd2aXNpYmxlJyk7XG4gICAgXG4gICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uc1xuICAgIGNvbnN0IHNvdXJjZVJlY3QgPSBzb3VyY2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgXG4gICAgLy8gRGV0ZXJtaW5lIGVkZ2UgY29ubmVjdGlvbiBwb2ludHMgLSBhbHdheXMgcmlnaHQgdG8gbGVmdFxuICAgIGxldCBzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZO1xuXG4gICAgLy8gU291cmNlIC0gYWx3YXlzIGNvbm5lY3QgZnJvbSB0aGUgcmlnaHQgZWRnZVxuICAgIHNvdXJjZVggPSBzb3VyY2VSZWN0LnJpZ2h0IC0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICAgIHNvdXJjZVkgPSBzb3VyY2VSZWN0LnRvcCArIChzb3VyY2VSZWN0LmhlaWdodCAvIDIpIC0gY29udGFpbmVyUmVjdC50b3A7XG5cbiAgICAvLyBUYXJnZXQgLSBhbHdheXMgY29ubmVjdCB0byB0aGUgbGVmdCBlZGdlXG4gICAgdGFyZ2V0WCA9IHRhcmdldFJlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdDtcbiAgICB0YXJnZXRZID0gdGFyZ2V0UmVjdC50b3AgKyAodGFyZ2V0UmVjdC5oZWlnaHQgLyAyKSAtIGNvbnRhaW5lclJlY3QudG9wO1xuICAgIFxuICAgIC8vIENyZWF0ZSBsaW5lIHdpdGggaW5pdGlhbCBvcGFjaXR5IDEgKHZpc2libGUgaW1tZWRpYXRlbHkpXG4gICAgLy8gSW5zdGVhZCBvZiBhIHN0cmFpZ2h0IGxpbmUsIGNyZWF0ZSBhIGdyaWQgbGluZSB3aXRoIHJpZ2h0IGFuZ2xlc1xuICAgIGNvbnN0IHBhdGg6IGFueSA9IHN2Zy5hcHBlbmQoJ3BhdGgnKVxuICAgICAgLmF0dHIoJ2QnLCBjcmVhdGVHcmlkUGF0aChzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZKSlcbiAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJyMwMDAnKSAvLyBEYXJrZXIgY29sb3IgZm9yIGJldHRlciB2aXNpYmlsaXR5XG4gICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIG9wdGlvbnMuc2l6ZSB8fCAyKVxuICAgICAgLnN0eWxlKCdmaWxsJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvcGFjaXR5JywgMSkgLy8gU3RhcnQgdmlzaWJsZVxuICAgICAgLnN0eWxlKCdzdHJva2UtbGluZWpvaW4nLCAncm91bmQnKSAvLyBSb3VuZCBjb3JuZXJzIGZvciBhIHNtb290aGVyIGxvb2tcbiAgICAgIC5zdHlsZSgnc3Ryb2tlLWRhc2hhcnJheScsIG9wdGlvbnMuZGFzaGVkID8gJzUsNScgOiAnbm9uZScpOyAvLyBBZGQgZGFzaGVkIHN0eWxlIGlmIHNwZWNpZmllZFxuICAgIFxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBncmlkIHBhdGhcbiAgICBmdW5jdGlvbiBjcmVhdGVHcmlkUGF0aCh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG1pZHBvaW50IG9uIHRoZSB4LWF4aXNcbiAgICAgIGNvbnN0IG1pZFggPSB4MSArICh4MiAtIHgxKSAvIDI7XG4gICAgICBcbiAgICAgIC8vIENyZWF0ZSBhIHBhdGggd2l0aCAzIHNlZ21lbnRzIChob3Jpem9udGFsLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbClcbiAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfSBMICR7bWlkWH0gJHt5MX0gTCAke21pZFh9ICR7eTJ9IEwgJHt4Mn0gJHt5Mn1gO1xuICAgIH1cbiAgXG4gICAgLy8gRGVmaW5lIG1hcmtlcnMgKGRpc2sgYXQgc3RhcnQgYW5kIGFycm93IGF0IGVuZClcbiAgICBjb25zdCBkZWZzID0gc3ZnLmFwcGVuZCgnZGVmcycpO1xuICAgIFxuICAgIC8vIEFkZCBzdGFydCBtYXJrZXIgKGRpc2svY2lyY2xlKVxuICAgIGlmIChvcHRpb25zLnN0YXJ0UGx1ZyA9PT0gJ2Rpc2MnIHx8IG9wdGlvbnMuc3RhcnRQbHVnICE9PSBmYWxzZSkge1xuICAgICAgZGVmcy5hcHBlbmQoJ21hcmtlcicpXG4gICAgICAgIC5hdHRyKCdpZCcsIGBzdGFydC1jaXJjbGUtJHtzdmdJZH1gKVxuICAgICAgICAuYXR0cigndmlld0JveCcsICcwIDAgMTAgMTAnKVxuICAgICAgICAuYXR0cigncmVmWCcsIDUpXG4gICAgICAgIC5hdHRyKCdyZWZZJywgNSlcbiAgICAgICAgLmF0dHIoJ21hcmtlcldpZHRoJywgOClcbiAgICAgICAgLmF0dHIoJ21hcmtlckhlaWdodCcsIDgpXG4gICAgICAgIC5hdHRyKCdvcmllbnQnLCAnYXV0bycpXG4gICAgICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgICAgIC5hdHRyKCdjeCcsIDUpXG4gICAgICAgIC5hdHRyKCdjeScsIDUpXG4gICAgICAgIC5hdHRyKCdyJywgNC41KVxuICAgICAgICAuc3R5bGUoJ2ZpbGwnLCBvcHRpb25zLmNvbG9yIHx8ICcjMzMzJyk7XG4gICAgICBcbiAgICAgIHBhdGguYXR0cignbWFya2VyLXN0YXJ0JywgYHVybCgjc3RhcnQtY2lyY2xlLSR7c3ZnSWR9KWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBBZGQgZW5kIG1hcmtlciAoYXJyb3cpXG4gICAgaWYgKG9wdGlvbnMuZW5kUGx1ZyA9PT0gJ2Fycm93JyB8fCBvcHRpb25zLmVuZFBsdWcgIT09IGZhbHNlKSB7XG4gICAgICBkZWZzLmFwcGVuZCgnbWFya2VyJylcbiAgICAgICAgLmF0dHIoJ2lkJywgYGFycm93aGVhZC0ke3N2Z0lkfWApXG4gICAgICAgIC5hdHRyKCd2aWV3Qm94JywgJzAgMCAxMCAxMCcpXG4gICAgICAgIC5hdHRyKCdyZWZYJywgOCkgIFxuICAgICAgICAuYXR0cigncmVmWScsIDUpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJXaWR0aCcsIDkpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJIZWlnaHQnLCA5KVxuICAgICAgICAuYXR0cignb3JpZW50JywgJ2F1dG8nKVxuICAgICAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAgICAgLmF0dHIoJ2QnLCAnTSAwIDAgTCAxMCA1IEwgMCAxMCB6JylcbiAgICAgICAgLnN0eWxlKCdmaWxsJywgb3B0aW9ucy5jb2xvciB8fCAnIzMzMycpO1xuICAgICAgXG4gICAgICBwYXRoLmF0dHIoJ21hcmtlci1lbmQnLCBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCk7XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSB0aGUgRDNMaW5lIG9iamVjdCB3aXRoIEFQSSBzaW1pbGFyIHRvIExlYWRlckxpbmVcbiAgICBjb25zdCBkM0xpbmU6IEQzTGluZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlRWxlbWVudCxcbiAgICAgIHRhcmdldDogdGFyZ2V0RWxlbWVudCxcbiAgICAgIHBhdGg6IHBhdGgsXG4gICAgICBzdmc6IHN2ZyxcbiAgICAgIFxuICAgICAgLy8gUG9zaXRpb24gbWV0aG9kIHRvIHVwZGF0ZSBsaW5lIGNvb3JkaW5hdGVzXG4gICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIEdldCB1cGRhdGVkIHBvc2l0aW9uc1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlUmVjdCA9IHNvdXJjZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRUYXJnZXRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZENvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIFxuICAgICAgICAvLyBTb3VyY2UgLSBhbHdheXMgY29ubmVjdCBmcm9tIHRoZSByaWdodCBlZGdlXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTb3VyY2VYID0gdXBkYXRlZFNvdXJjZVJlY3QucmlnaHQgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC5sZWZ0O1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlWSA9IHVwZGF0ZWRTb3VyY2VSZWN0LnRvcCArICh1cGRhdGVkU291cmNlUmVjdC5oZWlnaHQgLyAyKSAtIHVwZGF0ZWRDb250YWluZXJSZWN0LnRvcDtcbiAgICAgICAgXG4gICAgICAgIC8vIFRhcmdldCAtIGFsd2F5cyBjb25uZWN0IHRvIHRoZSBsZWZ0IGVkZ2VcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFggPSB1cGRhdGVkVGFyZ2V0UmVjdC5sZWZ0IC0gdXBkYXRlZENvbnRhaW5lclJlY3QubGVmdDtcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFkgPSB1cGRhdGVkVGFyZ2V0UmVjdC50b3AgKyAodXBkYXRlZFRhcmdldFJlY3QuaGVpZ2h0IC8gMikgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC50b3A7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgcGF0aCB3aXRoIGdyaWQgcGF0aFxuICAgICAgICBjb25zdCBtaWRYID0gdXBkYXRlZFNvdXJjZVggKyAodXBkYXRlZFRhcmdldFggLSB1cGRhdGVkU291cmNlWCkgLyAyO1xuICAgICAgICBwYXRoLmF0dHIoJ2QnLCBgTSAke3VwZGF0ZWRTb3VyY2VYfSAke3VwZGF0ZWRTb3VyY2VZfSBMICR7bWlkWH0gJHt1cGRhdGVkU291cmNlWX0gTCAke21pZFh9ICR7dXBkYXRlZFRhcmdldFl9IEwgJHt1cGRhdGVkVGFyZ2V0WH0gJHt1cGRhdGVkVGFyZ2V0WX1gKVxuICAgICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5Jywgb3B0aW9ucy5kYXNoZWQgPyAnNSw1JyA6ICdub25lJylcbiAgICAgICAgICAgIC8vIEVuc3VyZSBtYXJrZXJzIGFyZSBwcmVzZXJ2ZWQgZHVyaW5nIHJlcG9zaXRpb25pbmdcbiAgICAgICAgICAgIC5hdHRyKCdtYXJrZXItc3RhcnQnLCBvcHRpb25zLnN0YXJ0UGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNzdGFydC1jaXJjbGUtJHtzdmdJZH0pYCA6IG51bGwpXG4gICAgICAgICAgICAuYXR0cignbWFya2VyLWVuZCcsIG9wdGlvbnMuZW5kUGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCA6IG51bGwpO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gU2hvdyBtZXRob2Qgd2l0aCBhbmltYXRpb24gb3B0aW9uXG4gICAgICBzaG93OiBmdW5jdGlvbihhbmltYXRpb24gPSAnJykge1xuICAgICAgICBpZiAoYW5pbWF0aW9uID09PSAnZHJhdycpIHtcbiAgICAgICAgICAvLyBFbnN1cmUgdGhlIHBhdGggaGFzIGEgbm9kZSBiZWZvcmUgY2FsY3VsYXRpbmcgdG90YWwgbGVuZ3RoXG4gICAgICAgICAgY29uc3QgcGF0aE5vZGUgPSBwYXRoLm5vZGUoKTtcbiAgICAgICAgICBpZiAoIXBhdGhOb2RlKSByZXR1cm47XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3QgdG90YWxMZW5ndGggPSBwYXRoTm9kZS5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICAgIFxuICAgICAgICAgIHBhdGguc3R5bGUoJ29wYWNpdHknLCAxKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNoYXJyYXknLCB0b3RhbExlbmd0aClcbiAgICAgICAgICAgIC5hdHRyKCdzdHJva2UtZGFzaG9mZnNldCcsIHRvdGFsTGVuZ3RoKVxuICAgICAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAgICAgLmR1cmF0aW9uKG9wdGlvbnMuYW5pbU9wdGlvbnM/LmR1cmF0aW9uIHx8IDIwMDApXG4gICAgICAgICAgICAuZWFzZShkMy5lYXNlTGluZWFyKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNob2Zmc2V0JywgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aC5zdHlsZSgnb3BhY2l0eScsIDEpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBSZW1vdmUgbWV0aG9kXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzdmcucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBcbiAgICAvLyBJbW1lZGlhdGVseSBjYWxsIHNob3cgdG8gbWFrZSB0aGUgbGluZSB2aXNpYmxlXG4gICAgZDNMaW5lLnNob3cob3B0aW9ucy5hbmltYXRpb24pO1xuICAgIFxuICAgIHJldHVybiBkM0xpbmU7XG4gIH1cblxuICB1cGRhdGVDb25uZWN0b3JzTWFwKG1hcDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0b3JNYXAgPSBtYXA7XG4gIH1cblxuICBwb3NpdGlvbihsaW5lOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWxpbmUgfHwgIWxpbmUucG9zaXRpb24pIHJldHVybjtcbiAgICBcbiAgICB0aGlzLmVsbVdyYXBwZXIuc3R5bGUudHJhbnNmb3JtID0gJ25vbmUnO1xuICAgIHZhciByZWN0V3JhcHBlciA9IHRoaXMuZWxtV3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAvLyBNb3ZlIHRvIHRoZSBvcmlnaW4gb2YgY29vcmRpbmF0ZXMgYXMgdGhlIGRvY3VtZW50XG4gICAgdGhpcy5lbG1XcmFwcGVyLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoJyArXG4gICAgICAoKHJlY3RXcmFwcGVyLmxlZnQgKyB3aW5kb3cucGFnZVhPZmZzZXQpICogLTEpICsgJ3B4LCAnICtcbiAgICAgICgocmVjdFdyYXBwZXIudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0KSAqIC0xKSArICdweCknO1xuICAgIFxuICAgIGxpbmUucG9zaXRpb24oKTtcbiAgfVxuXG4gIHJlbW92ZUFsbExpbmVzKCk6IHZvaWQge1xuICAgIGlmKHRoaXMuY29ubmVjdG9yTWFwKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbm5lY3Rvck1hcCkge1xuICAgICAgICAvLyBSZW1vdmUgYWxsIG4tMSBsaW5lcyBhbmQga2VlcCBvbmx5IGN1cnJlbnQgc2VsZWN0aW9uLCBhbHNvIGNsZWFyIG4rMSBsaW5lc1xuICAgICAgICBpZih0aGlzLmNvbm5lY3Rvck1hcFtrZXldICYmIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgJiYgdGhpcy5jb25uZWN0b3JNYXBba2V5XS5saW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLmNvbm5lY3Rvck1hcFtrZXldLmxpbmVzO1xuICAgICAgICAgIGxpbmVzLmZvckVhY2goYXN5bmMgKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCBlbGVtZW50LmxpbmUgJiYgZWxlbWVudC5saW5lLnJlbW92ZSgpO1xuICAgICAgICAgICAgICBsaW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgPSBsaW5lcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB0byByZXNldCBjb25uZWN0b3IgbWFwIGFmdGVyIGNsZWFyaW5nIGFsbCB0aGUgbGluZXNcbiAgICB0aGlzLnVwZGF0ZUNvbm5lY3RvcnNNYXAoe30pO1xuICB9XG59Il19
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9jb25uZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQzs7QUFrQnpCLE1BQU0sT0FBTyxnQkFBZ0I7SUFLM0I7UUFKQSxpQkFBWSxHQUF5QixFQUFFLENBQUM7UUFFeEMsc0JBQWlCLEdBQUcsb0JBQW9CLENBQUM7SUFHekMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXLEVBQUUsTUFBVyxFQUFFLFVBQWUsYUFBYSxFQUFFLG9CQUF5QixTQUFTLEVBQUUsb0JBQXlCLFNBQVM7UUFDdEksTUFBTSxRQUFRLEdBQVEsRUFBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFDO1FBQ3JELFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUE7UUFDekIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLElBQUksYUFBYSxHQUFtQixFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzVELGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLE1BQU0sRUFBRSxPQUFPO29CQUNmLElBQUksRUFBRSxRQUFRO2lCQUNmLENBQUMsQ0FBQztnQkFFSCxJQUFHLGlCQUFpQixFQUFFO29CQUNw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QkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwcC1jb25zdGFudCc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmludGVyZmFjZSBDb25uZWN0ZWREb3Qge1xuICB0YXJnZXQ6IGFueTtcbiAgbGluZTogYW55O1xufVxuXG5pbnRlcmZhY2UgRDNMaW5lIHtcbiAgc291cmNlOiBhbnk7XG4gIHRhcmdldDogYW55O1xuICBwYXRoOiBhbnk7XG4gIHN2ZzogYW55O1xuICBwb3NpdGlvbjogKCkgPT4gdm9pZDtcbiAgc2hvdzogKGFuaW1hdGlvbj86IHN0cmluZykgPT4gdm9pZDtcbiAgcmVtb3ZlOiAoKSA9PiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29ubmVjdG9yU2VydmljZSB7XG4gIGNvbm5lY3Rvck1hcDoge1trZXk6IHN0cmluZ106IGFueX0gPSB7fTtcbiAgZWxtV3JhcHBlcjogYW55O1xuICBjb250YWluZXJTZWxlY3RvciA9ICcjdHJlZVZpZXdDb250YWluZXInOyAvLyBZb3UgbWlnaHQgbmVlZCB0byBhZGp1c3QgdGhpcyBzZWxlY3RvclxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgX2RyYXdMaW5lKHNvdXJjZTogYW55LCB0YXJnZXQ6IGFueSwgb3B0aW9uczogYW55ID0gZGVmYXVsdENvbmZpZywgc291cmNlQ29udGFpbmVySWQ6IGFueSA9IHVuZGVmaW5lZCwgdGFyZ2V0Q29udGFpbmVySWQ6IGFueSA9IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgY29uc3QgX29wdGlvbnMgPSA8YW55PnsuLi5kZWZhdWx0Q29uZmlnLCAuLi5vcHRpb25zfTtcbiAgICBfb3B0aW9uc1snZGFzaGVkJ10gPSB0cnVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgbGV0IGNvbm5lY3RlZERvdHM6IENvbm5lY3RlZERvdFtdID0gW107XG4gICAgICB0YXJnZXQuZm9yRWFjaCgoX3RhcmdldCkgPT4ge1xuICAgICAgICBjb25zdCB0ZW1wTGluZSA9IHRoaXMucmVuZGVyTGluZShzb3VyY2UsIF90YXJnZXQsIF9vcHRpb25zKTtcbiAgICAgICAgY29ubmVjdGVkRG90cy5wdXNoKHtcbiAgICAgICAgICB0YXJnZXQ6IF90YXJnZXQsXG4gICAgICAgICAgbGluZTogdGVtcExpbmVcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICBpZihzb3VyY2VDb250YWluZXJJZCkge1xuICAgICAgICAgIGNvbnN0IHNvdXJjZUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc291cmNlQ29udGFpbmVySWQpO1xuICAgICAgICAgIGlmIChzb3VyY2VDb250YWluZXIpIHtcbiAgICAgICAgICAgIHNvdXJjZUNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGVtcExpbmUgJiYgdGVtcExpbmUucG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXJyb3IgaGFuZGxpbmdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAodGFyZ2V0Q29udGFpbmVySWQpIHtcbiAgICAgICAgICBjb25zdCB0YXJnZXRDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldENvbnRhaW5lcklkKTtcbiAgICAgICAgICBpZiAodGFyZ2V0Q29udGFpbmVyKSB7XG4gICAgICAgICAgICB0YXJnZXRDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRlbXBMaW5lICYmIHRlbXBMaW5lLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgICAgIC8vIEVycm9yIGhhbmRsaW5nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29ubmVjdGVkRG90cztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyTGluZShzb3VyY2UsIHRhcmdldCwgX29wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyTGluZShzb3VyY2U6IGFueSwgdGFyZ2V0OiBhbnksIG9wdGlvbnM6IGFueSk6IEQzTGluZSB7XG4gICAgLy8gRmluZCBvciBjcmVhdGUgdGhlIGNvbnRhaW5lciBlbGVtZW50XG4gICAgY29uc3QgdHJlZVZpZXdDb21wb25lbnQ6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb250YWluZXJTZWxlY3Rvcik7XG4gICAgaWYgKCF0cmVlVmlld0NvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgIHBhdGg6IG51bGwsXG4gICAgICAgIHN2ZzogbnVsbCxcbiAgICAgICAgcG9zaXRpb246ICgpID0+IHt9LFxuICAgICAgICBzaG93OiAoKSA9PiB7fSxcbiAgICAgICAgcmVtb3ZlOiAoKSA9PiB7fVxuICAgICAgfTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ3JlYXRlIG9yIGdldCBjb250YWluZXIgZm9yIHRoZSBTVkdcbiAgICBsZXQgY29udGFpbmVyOiBhbnkgPSB0cmVlVmlld0NvbXBvbmVudC5xdWVyeVNlbGVjdG9yKCcjbGVhZGVyLWxpbmUtY29udGFpbmVyJyk7XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIC8vIENyZWF0ZSBhIHdyYXBwZXIgY29udGFpbmVyIHRvIGNvbnRyb2wgdGhlIG92ZXJmbG93IGF0IHRoZSB0b3BcbiAgICAgIGxldCBvdmVyZmxvd1dyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIG92ZXJmbG93V3JhcHBlci5pZCA9ICdsZWFkZXItbGluZS1vdmVyZmxvdy13cmFwcGVyJztcbiAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBvdmVyZmxvd1dyYXBwZXIuc3R5bGUudG9wID0gJzgwcHgnOyAvLyBTYW1lIHRvcCBwb3NpdGlvblxuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLmJvdHRvbSA9ICcwJztcbiAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLnJpZ2h0ID0gJzAnO1xuICAgICAgb3ZlcmZsb3dXcmFwcGVyLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7IC8vIEhpZGUgYW55dGhpbmcgYWJvdmUgdGhpcyBjb250YWluZXJcbiAgICAgIG92ZXJmbG93V3JhcHBlci5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnOyAvLyBBbGxvdyBjbGlja3MgdG8gcGFzcyB0aHJvdWdoXG4gICAgICBcbiAgICAgIC8vIE9yaWdpbmFsIGNvbnRhaW5lciByZW1haW5zIHRoZSBzYW1lIGJ1dCBwb3NpdGlvbmVkIGF0IHRvcDowIHdpdGhpbiB0aGUgd3JhcHBlclxuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBjb250YWluZXIuaWQgPSAnbGVhZGVyLWxpbmUtY29udGFpbmVyJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBjb250YWluZXIuc3R5bGUudG9wID0gJzAnOyAvLyBDaGFuZ2VkIHRvIDAgYXMgaXQncyBub3cgcmVsYXRpdmUgdG8gd3JhcHBlclxuICAgICAgY29udGFpbmVyLnN0eWxlLmJvdHRvbSA9ICcwJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLnJpZ2h0ID0gJzAnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnOyAvLyBBbGxvdyBjbGlja3MgdG8gcGFzcyB0aHJvdWdoXG4gICAgICBvdmVyZmxvd1dyYXBwZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAgIHRyZWVWaWV3Q29tcG9uZW50LmFwcGVuZENoaWxkKG92ZXJmbG93V3JhcHBlcik7XG4gICAgfVxuICAgIFxuICAgIC8vIFN0b3JlIGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGFjY2VzcyBpbiBvdGhlciBtZXRob2RzXG4gICAgdGhpcy5lbG1XcmFwcGVyID0gY29udGFpbmVyO1xuICAgIFxuICAgIC8vIEdldCB0aGUgc291cmNlIGFuZCB0YXJnZXQgZWxlbWVudHNcbiAgICBsZXQgc291cmNlRWxlbWVudCA9IHNvdXJjZTtcbiAgICBsZXQgdGFyZ2V0RWxlbWVudDogYW55O1xuICAgIFxuICAgIGlmICh0YXJnZXQudGFyZ2V0VHlwZSA9PT0gJ2lkJykge1xuICAgICAgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldC50YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRFbGVtZW50ID0gdGFyZ2V0LnRhcmdldDtcbiAgICB9XG4gICAgXG4gICAgLy8gRW5zdXJlIGJvdGggZWxlbWVudHMgZXhpc3RcbiAgICBpZiAoIXNvdXJjZUVsZW1lbnQgfHwgIXRhcmdldEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICBwYXRoOiBudWxsLFxuICAgICAgICBzdmc6IG51bGwsXG4gICAgICAgIHBvc2l0aW9uOiAoKSA9PiB7fSxcbiAgICAgICAgc2hvdzogKCkgPT4ge30sXG4gICAgICAgIHJlbW92ZTogKCkgPT4ge31cbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBJRCBmb3IgdGhlIFNWR1xuICAgIGNvbnN0IHN2Z0lkID0gJ2QzLWxpbmUtJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICBcbiAgICAvLyBDcmVhdGUgU1ZHIGVsZW1lbnRcbiAgICBjb25zdCBzdmcgPSBkMy5zZWxlY3QoY29udGFpbmVyKVxuICAgICAgLmFwcGVuZCgnc3ZnJylcbiAgICAgIC5hdHRyKCdpZCcsIHN2Z0lkKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ2xlYWRlci1saW5lJylcbiAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAnYWJzb2x1dGUnKVxuICAgICAgLnN0eWxlKCd0b3AnLCAnMCcpXG4gICAgICAuc3R5bGUoJ2xlZnQnLCAnMCcpXG4gICAgICAuc3R5bGUoJ3dpZHRoJywgJzEwMCUnKVxuICAgICAgLnN0eWxlKCdoZWlnaHQnLCAnMTAwJScpXG4gICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvdmVyZmxvdycsICd2aXNpYmxlJyk7XG4gICAgXG4gICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uc1xuICAgIGNvbnN0IHNvdXJjZVJlY3QgPSBzb3VyY2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgXG4gICAgLy8gRGV0ZXJtaW5lIGVkZ2UgY29ubmVjdGlvbiBwb2ludHMgLSBhbHdheXMgcmlnaHQgdG8gbGVmdFxuICAgIGxldCBzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZO1xuXG4gICAgLy8gU291cmNlIC0gYWx3YXlzIGNvbm5lY3QgZnJvbSB0aGUgcmlnaHQgZWRnZVxuICAgIHNvdXJjZVggPSBzb3VyY2VSZWN0LnJpZ2h0IC0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICAgIHNvdXJjZVkgPSBzb3VyY2VSZWN0LnRvcCArIChzb3VyY2VSZWN0LmhlaWdodCAvIDIpIC0gY29udGFpbmVyUmVjdC50b3A7XG5cbiAgICAvLyBUYXJnZXQgLSBhbHdheXMgY29ubmVjdCB0byB0aGUgbGVmdCBlZGdlXG4gICAgdGFyZ2V0WCA9IHRhcmdldFJlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdDtcbiAgICB0YXJnZXRZID0gdGFyZ2V0UmVjdC50b3AgKyAodGFyZ2V0UmVjdC5oZWlnaHQgLyAyKSAtIGNvbnRhaW5lclJlY3QudG9wO1xuICAgIFxuICAgIC8vIENyZWF0ZSBsaW5lIHdpdGggaW5pdGlhbCBvcGFjaXR5IDEgKHZpc2libGUgaW1tZWRpYXRlbHkpXG4gICAgLy8gSW5zdGVhZCBvZiBhIHN0cmFpZ2h0IGxpbmUsIGNyZWF0ZSBhIGdyaWQgbGluZSB3aXRoIHJpZ2h0IGFuZ2xlc1xuICAgIGNvbnN0IHBhdGg6IGFueSA9IHN2Zy5hcHBlbmQoJ3BhdGgnKVxuICAgICAgLmF0dHIoJ2QnLCBjcmVhdGVHcmlkUGF0aChzb3VyY2VYLCBzb3VyY2VZLCB0YXJnZXRYLCB0YXJnZXRZKSlcbiAgICAgIC5zdHlsZSgnc3Ryb2tlJywgJyMwMDAnKSAvLyBEYXJrZXIgY29sb3IgZm9yIGJldHRlciB2aXNpYmlsaXR5XG4gICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIG9wdGlvbnMuc2l6ZSB8fCAyKVxuICAgICAgLnN0eWxlKCdmaWxsJywgJ25vbmUnKVxuICAgICAgLnN0eWxlKCdvcGFjaXR5JywgMSkgLy8gU3RhcnQgdmlzaWJsZVxuICAgICAgLnN0eWxlKCdzdHJva2UtbGluZWpvaW4nLCAncm91bmQnKSAvLyBSb3VuZCBjb3JuZXJzIGZvciBhIHNtb290aGVyIGxvb2tcbiAgICAgIC5zdHlsZSgnc3Ryb2tlLWRhc2hhcnJheScsIG9wdGlvbnMuZGFzaGVkID8gJzUsNScgOiAnbm9uZScpOyAvLyBBZGQgZGFzaGVkIHN0eWxlIGlmIHNwZWNpZmllZFxuICAgIFxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBncmlkIHBhdGhcbiAgICBmdW5jdGlvbiBjcmVhdGVHcmlkUGF0aCh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG1pZHBvaW50IG9uIHRoZSB4LWF4aXNcbiAgICAgIGNvbnN0IG1pZFggPSB4MSArICh4MiAtIHgxKSAvIDI7XG4gICAgICBcbiAgICAgIC8vIENyZWF0ZSBhIHBhdGggd2l0aCAzIHNlZ21lbnRzIChob3Jpem9udGFsLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbClcbiAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfSBMICR7bWlkWH0gJHt5MX0gTCAke21pZFh9ICR7eTJ9IEwgJHt4Mn0gJHt5Mn1gO1xuICAgIH1cbiAgXG4gICAgLy8gRGVmaW5lIG1hcmtlcnMgKGRpc2sgYXQgc3RhcnQgYW5kIGFycm93IGF0IGVuZClcbiAgICBjb25zdCBkZWZzID0gc3ZnLmFwcGVuZCgnZGVmcycpO1xuICAgIFxuICAgIC8vIEFkZCBzdGFydCBtYXJrZXIgKGRpc2svY2lyY2xlKVxuICAgIGlmIChvcHRpb25zLnN0YXJ0UGx1ZyA9PT0gJ2Rpc2MnIHx8IG9wdGlvbnMuc3RhcnRQbHVnICE9PSBmYWxzZSkge1xuICAgICAgZGVmcy5hcHBlbmQoJ21hcmtlcicpXG4gICAgICAgIC5hdHRyKCdpZCcsIGBzdGFydC1jaXJjbGUtJHtzdmdJZH1gKVxuICAgICAgICAuYXR0cigndmlld0JveCcsICcwIDAgMTAgMTAnKVxuICAgICAgICAuYXR0cigncmVmWCcsIDUpXG4gICAgICAgIC5hdHRyKCdyZWZZJywgNSlcbiAgICAgICAgLmF0dHIoJ21hcmtlcldpZHRoJywgOClcbiAgICAgICAgLmF0dHIoJ21hcmtlckhlaWdodCcsIDgpXG4gICAgICAgIC5hdHRyKCdvcmllbnQnLCAnYXV0bycpXG4gICAgICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgICAgIC5hdHRyKCdjeCcsIDUpXG4gICAgICAgIC5hdHRyKCdjeScsIDUpXG4gICAgICAgIC5hdHRyKCdyJywgNC41KVxuICAgICAgICAuc3R5bGUoJ2ZpbGwnLCBvcHRpb25zLmNvbG9yIHx8ICcjMzMzJyk7XG4gICAgICBcbiAgICAgIHBhdGguYXR0cignbWFya2VyLXN0YXJ0JywgYHVybCgjc3RhcnQtY2lyY2xlLSR7c3ZnSWR9KWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBBZGQgZW5kIG1hcmtlciAoYXJyb3cpXG4gICAgaWYgKG9wdGlvbnMuZW5kUGx1ZyA9PT0gJ2Fycm93JyB8fCBvcHRpb25zLmVuZFBsdWcgIT09IGZhbHNlKSB7XG4gICAgICBkZWZzLmFwcGVuZCgnbWFya2VyJylcbiAgICAgICAgLmF0dHIoJ2lkJywgYGFycm93aGVhZC0ke3N2Z0lkfWApXG4gICAgICAgIC5hdHRyKCd2aWV3Qm94JywgJzAgMCAxMCAxMCcpXG4gICAgICAgIC5hdHRyKCdyZWZYJywgOCkgIFxuICAgICAgICAuYXR0cigncmVmWScsIDUpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJXaWR0aCcsIDkpXG4gICAgICAgIC5hdHRyKCdtYXJrZXJIZWlnaHQnLCA5KVxuICAgICAgICAuYXR0cignb3JpZW50JywgJ2F1dG8nKVxuICAgICAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAgICAgLmF0dHIoJ2QnLCAnTSAwIDAgTCAxMCA1IEwgMCAxMCB6JylcbiAgICAgICAgLnN0eWxlKCdmaWxsJywgb3B0aW9ucy5jb2xvciB8fCAnIzMzMycpO1xuICAgICAgXG4gICAgICBwYXRoLmF0dHIoJ21hcmtlci1lbmQnLCBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCk7XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSB0aGUgRDNMaW5lIG9iamVjdCB3aXRoIEFQSSBzaW1pbGFyIHRvIExlYWRlckxpbmVcbiAgICBjb25zdCBkM0xpbmU6IEQzTGluZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlRWxlbWVudCxcbiAgICAgIHRhcmdldDogdGFyZ2V0RWxlbWVudCxcbiAgICAgIHBhdGg6IHBhdGgsXG4gICAgICBzdmc6IHN2ZyxcbiAgICAgIFxuICAgICAgLy8gUG9zaXRpb24gbWV0aG9kIHRvIHVwZGF0ZSBsaW5lIGNvb3JkaW5hdGVzXG4gICAgICBwb3NpdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIEdldCB1cGRhdGVkIHBvc2l0aW9uc1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlUmVjdCA9IHNvdXJjZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRUYXJnZXRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZENvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIFxuICAgICAgICAvLyBTb3VyY2UgLSBhbHdheXMgY29ubmVjdCBmcm9tIHRoZSByaWdodCBlZGdlXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTb3VyY2VYID0gdXBkYXRlZFNvdXJjZVJlY3QucmlnaHQgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC5sZWZ0O1xuICAgICAgICBjb25zdCB1cGRhdGVkU291cmNlWSA9IHVwZGF0ZWRTb3VyY2VSZWN0LnRvcCArICh1cGRhdGVkU291cmNlUmVjdC5oZWlnaHQgLyAyKSAtIHVwZGF0ZWRDb250YWluZXJSZWN0LnRvcDtcbiAgICAgICAgXG4gICAgICAgIC8vIFRhcmdldCAtIGFsd2F5cyBjb25uZWN0IHRvIHRoZSBsZWZ0IGVkZ2VcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFggPSB1cGRhdGVkVGFyZ2V0UmVjdC5sZWZ0IC0gdXBkYXRlZENvbnRhaW5lclJlY3QubGVmdDtcbiAgICAgICAgY29uc3QgdXBkYXRlZFRhcmdldFkgPSB1cGRhdGVkVGFyZ2V0UmVjdC50b3AgKyAodXBkYXRlZFRhcmdldFJlY3QuaGVpZ2h0IC8gMikgLSB1cGRhdGVkQ29udGFpbmVyUmVjdC50b3A7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgcGF0aCB3aXRoIGdyaWQgcGF0aFxuICAgICAgICBjb25zdCBtaWRYID0gdXBkYXRlZFNvdXJjZVggKyAodXBkYXRlZFRhcmdldFggLSB1cGRhdGVkU291cmNlWCkgLyAyO1xuICAgICAgICBwYXRoLmF0dHIoJ2QnLCBgTSAke3VwZGF0ZWRTb3VyY2VYfSAke3VwZGF0ZWRTb3VyY2VZfSBMICR7bWlkWH0gJHt1cGRhdGVkU291cmNlWX0gTCAke21pZFh9ICR7dXBkYXRlZFRhcmdldFl9IEwgJHt1cGRhdGVkVGFyZ2V0WH0gJHt1cGRhdGVkVGFyZ2V0WX1gKVxuICAgICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5Jywgb3B0aW9ucy5kYXNoZWQgPyAnNSw1JyA6ICdub25lJylcbiAgICAgICAgICAgIC8vIEVuc3VyZSBtYXJrZXJzIGFyZSBwcmVzZXJ2ZWQgZHVyaW5nIHJlcG9zaXRpb25pbmdcbiAgICAgICAgICAgIC5hdHRyKCdtYXJrZXItc3RhcnQnLCBvcHRpb25zLnN0YXJ0UGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNzdGFydC1jaXJjbGUtJHtzdmdJZH0pYCA6IG51bGwpXG4gICAgICAgICAgICAuYXR0cignbWFya2VyLWVuZCcsIG9wdGlvbnMuZW5kUGx1ZyAhPT0gZmFsc2UgPyBgdXJsKCNhcnJvd2hlYWQtJHtzdmdJZH0pYCA6IG51bGwpO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gU2hvdyBtZXRob2Qgd2l0aCBhbmltYXRpb24gb3B0aW9uXG4gICAgICBzaG93OiBmdW5jdGlvbihhbmltYXRpb24gPSAnJykge1xuICAgICAgICBpZiAoYW5pbWF0aW9uID09PSAnZHJhdycpIHtcbiAgICAgICAgICAvLyBFbnN1cmUgdGhlIHBhdGggaGFzIGEgbm9kZSBiZWZvcmUgY2FsY3VsYXRpbmcgdG90YWwgbGVuZ3RoXG4gICAgICAgICAgY29uc3QgcGF0aE5vZGUgPSBwYXRoLm5vZGUoKTtcbiAgICAgICAgICBpZiAoIXBhdGhOb2RlKSByZXR1cm47XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3QgdG90YWxMZW5ndGggPSBwYXRoTm9kZS5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICAgIFxuICAgICAgICAgIHBhdGguc3R5bGUoJ29wYWNpdHknLCAxKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNoYXJyYXknLCB0b3RhbExlbmd0aClcbiAgICAgICAgICAgIC5hdHRyKCdzdHJva2UtZGFzaG9mZnNldCcsIHRvdGFsTGVuZ3RoKVxuICAgICAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAgICAgLmR1cmF0aW9uKG9wdGlvbnMuYW5pbU9wdGlvbnM/LmR1cmF0aW9uIHx8IDIwMDApXG4gICAgICAgICAgICAuZWFzZShkMy5lYXNlTGluZWFyKVxuICAgICAgICAgICAgLmF0dHIoJ3N0cm9rZS1kYXNob2Zmc2V0JywgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aC5zdHlsZSgnb3BhY2l0eScsIDEpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBSZW1vdmUgbWV0aG9kXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzdmcucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBcbiAgICAvLyBJbW1lZGlhdGVseSBjYWxsIHNob3cgdG8gbWFrZSB0aGUgbGluZSB2aXNpYmxlXG4gICAgZDNMaW5lLnNob3cob3B0aW9ucy5hbmltYXRpb24pO1xuICAgIFxuICAgIHJldHVybiBkM0xpbmU7XG4gIH1cblxuICB1cGRhdGVDb25uZWN0b3JzTWFwKG1hcDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0b3JNYXAgPSBtYXA7XG4gIH1cblxuICBwb3NpdGlvbihsaW5lOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWxpbmUgfHwgIWxpbmUucG9zaXRpb24pIHJldHVybjtcbiAgICBcbiAgICB0aGlzLmVsbVdyYXBwZXIuc3R5bGUudHJhbnNmb3JtID0gJ25vbmUnO1xuICAgIHZhciByZWN0V3JhcHBlciA9IHRoaXMuZWxtV3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAvLyBNb3ZlIHRvIHRoZSBvcmlnaW4gb2YgY29vcmRpbmF0ZXMgYXMgdGhlIGRvY3VtZW50XG4gICAgdGhpcy5lbG1XcmFwcGVyLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoJyArXG4gICAgICAoKHJlY3RXcmFwcGVyLmxlZnQgKyB3aW5kb3cucGFnZVhPZmZzZXQpICogLTEpICsgJ3B4LCAnICtcbiAgICAgICgocmVjdFdyYXBwZXIudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0KSAqIC0xKSArICdweCknO1xuICAgIFxuICAgIGxpbmUucG9zaXRpb24oKTtcbiAgfVxuXG4gIHJlbW92ZUFsbExpbmVzKCk6IHZvaWQge1xuICAgIGlmKHRoaXMuY29ubmVjdG9yTWFwKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbm5lY3Rvck1hcCkge1xuICAgICAgICAvLyBSZW1vdmUgYWxsIG4tMSBsaW5lcyBhbmQga2VlcCBvbmx5IGN1cnJlbnQgc2VsZWN0aW9uLCBhbHNvIGNsZWFyIG4rMSBsaW5lc1xuICAgICAgICBpZih0aGlzLmNvbm5lY3Rvck1hcFtrZXldICYmIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgJiYgdGhpcy5jb25uZWN0b3JNYXBba2V5XS5saW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLmNvbm5lY3Rvck1hcFtrZXldLmxpbmVzO1xuICAgICAgICAgIGxpbmVzLmZvckVhY2goYXN5bmMgKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBhd2FpdCBlbGVtZW50LmxpbmUgJiYgZWxlbWVudC5saW5lLnJlbW92ZSgpO1xuICAgICAgICAgICAgICBsaW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29ubmVjdG9yTWFwW2tleV0ubGluZXMgPSBsaW5lcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB0byByZXNldCBjb25uZWN0b3IgbWFwIGFmdGVyIGNsZWFyaW5nIGFsbCB0aGUgbGluZXNcbiAgICB0aGlzLnVwZGF0ZUNvbm5lY3RvcnNNYXAoe30pO1xuICB9XG5cbiAgcmVwb3NpdGlvbkFsbExpbmVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbm5lY3Rvck1hcCkge1xuICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmNvbm5lY3Rvck1hcCkuZm9yRWFjaCgoY29ubmVjdG9yOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGNvbm5lY3RvciAmJiBjb25uZWN0b3IubGluZXMpIHtcbiAgICAgICAgICBjb25uZWN0b3IubGluZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5saW5lICYmIHR5cGVvZiBpdGVtLmxpbmUucG9zaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgaXRlbS5saW5lLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSJdfQ==
|