@schneideress/dashboardframework 0.0.250 → 0.0.252
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/bundles/schneideress-dashboardframework.umd.js +40 -27
- package/bundles/schneideress-dashboardframework.umd.js.map +1 -1
- package/bundles/schneideress-dashboardframework.umd.min.js +2 -2
- package/bundles/schneideress-dashboardframework.umd.min.js.map +1 -1
- package/esm2015/lib/ra-dashboard-area/ra.dashboard.area.js +19 -16
- package/esm2015/lib/ra-widget-container/ra.widget.container.component.js +10 -7
- package/esm2015/lib/ra.base.dashboard.template.js +3 -6
- package/esm2015/lib/ra.dashboard.responsive.service.js +12 -2
- package/esm5/lib/ra-dashboard-area/ra.dashboard.area.js +19 -16
- package/esm5/lib/ra-widget-container/ra.widget.container.component.js +10 -7
- package/esm5/lib/ra.base.dashboard.template.js +3 -6
- package/esm5/lib/ra.dashboard.responsive.service.js +12 -2
- package/fesm2015/schneideress-dashboardframework.js +40 -27
- package/fesm2015/schneideress-dashboardframework.js.map +1 -1
- package/fesm5/schneideress-dashboardframework.js +40 -27
- package/fesm5/schneideress-dashboardframework.js.map +1 -1
- package/lib/ra.base.dashboard.template.d.ts +2 -2
- package/lib/ra.dashboard.responsive.service.d.ts +1 -1
- package/package.json +1 -1
- package/schneideress-dashboardframework.metadata.json +1 -1
|
@@ -60,7 +60,7 @@ let RADashboardResponsiveService = class RADashboardResponsiveService {
|
|
|
60
60
|
check = true;
|
|
61
61
|
return check;
|
|
62
62
|
}
|
|
63
|
-
getGridsterConfig(isWidgetMgmnt) {
|
|
63
|
+
getGridsterConfig(isWidgetMgmnt, resize, canMove) {
|
|
64
64
|
let config = GridsterConfigDefaultSettings;
|
|
65
65
|
config.minCols = this.currentResInfo.maxCols;
|
|
66
66
|
config.maxCols = this.currentResInfo.maxCols;
|
|
@@ -82,6 +82,13 @@ let RADashboardResponsiveService = class RADashboardResponsiveService {
|
|
|
82
82
|
config.swap = true;
|
|
83
83
|
config.draggable.enabled = true;
|
|
84
84
|
}
|
|
85
|
+
if (!resize) {
|
|
86
|
+
config.resizable.enabled = false;
|
|
87
|
+
config.swap = false;
|
|
88
|
+
}
|
|
89
|
+
if (!canMove) {
|
|
90
|
+
config.draggable.enabled = false;
|
|
91
|
+
}
|
|
85
92
|
return config;
|
|
86
93
|
}
|
|
87
94
|
/**To map IwidgetInfo object to gridsterItem */
|
|
@@ -89,6 +96,9 @@ let RADashboardResponsiveService = class RADashboardResponsiveService {
|
|
|
89
96
|
if (widget.widgetSettings) {
|
|
90
97
|
widget.settings = JSON.parse(widget.widgetSettings);
|
|
91
98
|
}
|
|
99
|
+
if (widget.templateSettings) {
|
|
100
|
+
widget.templateSettings = JSON.parse(widget.templateSettings);
|
|
101
|
+
}
|
|
92
102
|
let gridsterItem = {
|
|
93
103
|
cols: this.getWidth(widget.width),
|
|
94
104
|
rows: this.getHeight(widget.height),
|
|
@@ -137,4 +147,4 @@ RADashboardResponsiveService = tslib_1.__decorate([
|
|
|
137
147
|
tslib_1.__metadata("design:paramtypes", [])
|
|
138
148
|
], RADashboardResponsiveService);
|
|
139
149
|
export { RADashboardResponsiveService };
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEuZGFzaGJvYXJkLnJlc3BvbnNpdmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzY2huZWlkZXJlc3MvZGFzaGJvYXJkZnJhbWV3b3JrLyIsInNvdXJjZXMiOlsibGliL3JhLmRhc2hib2FyZC5yZXNwb25zaXZlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLL0IsSUFBYSw0QkFBNEIsR0FBekMsTUFBYSw0QkFBNEI7SUFtQnZDO1FBbEJPLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBRzFCLFlBQU8sR0FBRztZQUNoQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtZQUNyRCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtZQUN4RCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtZQUN6RDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxHQUFHLEVBQUUsVUFBVTtnQkFDZixPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWM7YUFDN0I7U0FD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QyxPQUFPLEVBQUU7Z0JBQzlDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7YUFDaEM7U0FDRjtJQUNILENBQUM7SUFDTyxTQUFTLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDakIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUM3RCxDQUFDO1lBQ0YsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPO2dCQUN0QyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7U0FDeEM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YsQ0FBQTs7QUF4SlksNEJBQTRCO0lBRHhDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQzs7R0FDdEIsNEJBQTRCLENBd0p4QztTQXhKWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgR3JpZHN0ZXJDb25maWcsIEdyaWRzdGVySXRlbSB9IGZyb20gXCIuLi9ncmlkc3RlclwiO1xyXG5pbXBvcnQgeyBHcmlkc3RlckNvbmZpZ0RlZmF1bHRTZXR0aW5ncyB9IGZyb20gXCIuL3JhLmdyaWRzdGVyLmNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmRlY2xhcmUgdmFyIHdpbmRvdzogYW55O1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxyXG5leHBvcnQgY2xhc3MgUkFEYXNoYm9hcmRSZXNwb25zaXZlU2VydmljZSB7XHJcbiAgcHVibGljIHJlc2l6ZWQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHB1YmxpYyBtYXhDb2xzRGVza3RvcDogbnVtYmVyID0gODtcclxuICBwcml2YXRlIHNjcmVlbldpZHRoQWRqdXN0ZWQ6IGFueTtcclxuICBwcml2YXRlIHNjcmVlbldpZHRoOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSByZXNJbmZvID0gW1xyXG4gICAgeyBpZDogMSwgc3RhcnQ6IDAsIGVuZDogNzY3LCBtaW5Db2xzOiAxLCBtYXhDb2xzOiAxIH0sXHJcbiAgICB7IGlkOiAyLCBzdGFydDogNzY4LCBlbmQ6IDEwMjQsIG1pbkNvbHM6IDEsIG1heENvbHM6IDIgfSxcclxuICAgIHsgaWQ6IDMsIHN0YXJ0OiAxMDI1LCBlbmQ6IDEzNjYsIG1pbkNvbHM6IDEsIG1heENvbHM6IDYgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IDQsXHJcbiAgICAgIHN0YXJ0OiAxMzY3LFxyXG4gICAgICBlbmQ6IDk5OTk5OTk5OTksXHJcbiAgICAgIG1pbkNvbHM6IDEsXHJcbiAgICAgIG1heENvbHM6IHRoaXMubWF4Q29sc0Rlc2t0b3AsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgcHJpdmF0ZSBjdXJyZW50UmVzSW5mbzogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc2V0U2NyZWVuV2lkdGgoKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsICgpID0+IHtcclxuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xyXG4gICAgICBpZiAodGhpcy5zY3JlZW5XaWR0aEFkanVzdGVkKSBjbGVhclRpbWVvdXQodGhpcy5zY3JlZW5XaWR0aEFkanVzdGVkKTtcclxuICAgICAgdGhpcy5zY3JlZW5XaWR0aEFkanVzdGVkID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29udGV4dC5zZXRTY3JlZW5XaWR0aCgpO1xyXG4gICAgICB9LCA1MDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFNjcmVlbldpZHRoKCkge1xyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5vdXRlcldpZHRoO1xyXG4gICAgaWYgKHRoaXMuSXNEZXNrdG9wVmlldykge1xyXG4gICAgICB0aGlzLmN1cnJlbnRSZXNJbmZvID0gdGhpcy5yZXNJbmZvWzNdO1xyXG4gICAgICB0aGlzLnJlc2l6ZWQubmV4dCh0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCByZXNJbmZvID0gdGhpcy5yZXNJbmZvLmZpbHRlcigoaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBpdGVtLmVuZCA+PSB0aGlzLnNjcmVlbldpZHRoICYmIGl0ZW0uc3RhcnQgPD0gdGhpcy5zY3JlZW5XaWR0aDtcclxuICAgICAgfSlbMF07XHJcbiAgICAgIGlmICghdGhpcy5jdXJyZW50UmVzSW5mbyB8fCB0aGlzLmN1cnJlbnRSZXNJbmZvLmlkICE9IHJlc0luZm8uaWQpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRSZXNJbmZvID0gcmVzSW5mbztcclxuICAgICAgICB0aGlzLnJlc2l6ZWQubmV4dCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IElzRGVza3RvcFZpZXcoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgYWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgd2luZG93Lm9wZXJhO1xyXG4gICAgaWYgKFxyXG4gICAgICAvKGFuZHJvaWR8YmJcXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVxcL3xibGFja2JlcnJ5fGJsYXplcnxjb21wYWx8ZWxhaW5lfGZlbm5lY3xoaXB0b3B8aWVtb2JpbGV8aXAoaG9uZXxvZCl8aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXFwvfHBsdWNrZXJ8cG9ja2V0fHBzcHxzZXJpZXMoNHw2KTB8c3ltYmlhbnx0cmVvfHVwXFwuKGJyb3dzZXJ8bGluayl8dm9kYWZvbmV8d2FwfHdpbmRvd3MgY2V8eGRhfHhpaW5vL2kudGVzdChcclxuICAgICAgICBhZ2VudFxyXG4gICAgICApIHx8XHJcbiAgICAgIC8xMjA3fDYzMTB8NjU5MHwzZ3NvfDR0aHB8NTBbMS02XWl8Nzcwc3w4MDJzfGEgd2F8YWJhY3xhYyhlcnxvb3xzXFwtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFxcLW18ciB8cyApfGF2YW58YmUoY2t8bGx8bnEpfGJpKGxifHJkKXxibChhY3xheil8YnIoZXx2KXd8YnVtYnxid1xcLShufHUpfGM1NVxcL3xjYXBpfGNjd2F8Y2RtXFwtfGNlbGx8Y2h0bXxjbGRjfGNtZFxcLXxjbyhtcHxuZCl8Y3Jhd3xkYShpdHxsbHxuZyl8ZGJ0ZXxkY1xcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XFwtZCl8ZWwoNDl8YWkpfGVtKGwyfHVsKXxlcihpY3xrMCl8ZXNsOHxleihbNC03XTB8b3N8d2F8emUpfGZldGN8Zmx5KFxcLXxfKXxnMSB1fGc1NjB8Z2VuZXxnZlxcLTV8Z1xcLW1vfGdvKFxcLnd8b2QpfGdyKGFkfHVuKXxoYWllfGhjaXR8aGRcXC0obXxwfHQpfGhlaVxcLXxoaShwdHx0YSl8aHAoIGl8aXApfGhzXFwtY3xodChjKFxcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcXC0oMjB8Z298bWEpfGkyMzB8aWFjKCB8XFwtfFxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcXC8pfGtsb258a3B0IHxrd2NcXC18a3lvKGN8ayl8bGUobm98eGkpfGxnKCBnfFxcLyhrfGx8dSl8NTB8NTR8XFwtW2Etd10pfGxpYnd8bHlueHxtMVxcLXd8bTNnYXxtNTBcXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXFwtY3J8bWUocmN8cmkpfG1pKG84fG9hfHRzKXxtbWVmfG1vKDAxfDAyfGJpfGRlfGRvfHQoXFwtfCB8b3x2KXx6eil8bXQoNTB8cDF8diApfG13YnB8bXl3YXxuMTBbMC0yXXxuMjBbMi0zXXxuMzAoMHwyKXxuNTAoMHwyfDUpfG43KDAoMHwxKXwxMCl8bmUoKGN8bSlcXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFxcLShbMS04XXxjKSl8cGhpbHxwaXJlfHBsKGF5fHVjKXxwblxcLTJ8cG8oY2t8cnR8c2UpfHByb3h8cHNpb3xwdFxcLWd8cWFcXC1hfHFjKDA3fDEyfDIxfDMyfDYwfFxcLVsyLTddfGlcXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XFwvfHNhKGdlfG1hfG1tfG1zfG55fHZhKXxzYygwMXxoXFwtfG9vfHBcXC0pfHNka1xcL3xzZShjKFxcLXwwfDEpfDQ3fG1jfG5kfHJpKXxzZ2hcXC18c2hhcnxzaWUoXFwtfG0pfHNrXFwtMHxzbCg0NXxpZCl8c20oYWx8YXJ8YjN8aXR8dDUpfHNvKGZ0fG55KXxzcCgwMXxoXFwtfHZcXC18diApfHN5KDAxfG1iKXx0MigxOHw1MCl8dDYoMDB8MTB8MTgpfHRhKGd0fGxrKXx0Y2xcXC18dGRnXFwtfHRlbChpfG0pfHRpbVxcLXx0XFwtbW98dG8ocGx8c2gpfHRzKDcwfG1cXC18bTN8bTUpfHR4XFwtOXx1cChcXC5ifGcxfHNpKXx1dHN0fHY0MDB8djc1MHx2ZXJpfHZpKHJnfHRlKXx2ayg0MHw1WzAtM118XFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcXC18ICl8d2ViY3x3aGl0fHdpKGcgfG5jfG53KXx3bWxifHdvbnV8eDcwMHx5YXNcXC18eW91cnx6ZXRvfHp0ZVxcLS9pLnRlc3QoXHJcbiAgICAgICAgYWdlbnQuc3Vic3RyaW5nKDAsIDQpXHJcbiAgICAgIClcclxuICAgIClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IElzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNoZWNrID0gZmFsc2U7XHJcbiAgICBsZXQgYWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgd2luZG93Lm9wZXJhO1xyXG4gICAgaWYgKFxyXG4gICAgICAvKGFuZHJvaWR8YmJcXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVxcL3xibGFja2JlcnJ5fGJsYXplcnxjb21wYWx8ZWxhaW5lfGZlbm5lY3xoaXB0b3B8aWVtb2JpbGV8aXAoaG9uZXxvZCl8aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXFwvfHBsdWNrZXJ8cG9ja2V0fHBzcHxzZXJpZXMoNHw2KTB8c3ltYmlhbnx0cmVvfHVwXFwuKGJyb3dzZXJ8bGluayl8dm9kYWZvbmV8d2FwfHdpbmRvd3MgY2V8eGRhfHhpaW5vL2kudGVzdChcclxuICAgICAgICBhZ2VudFxyXG4gICAgICApIHx8XHJcbiAgICAgIC8xMjA3fDYzMTB8NjU5MHwzZ3NvfDR0aHB8NTBbMS02XWl8Nzcwc3w4MDJzfGEgd2F8YWJhY3xhYyhlcnxvb3xzXFwtKXxhaShrb3xybil8YWwoYXZ8Y2F8Y28pfGFtb2l8YW4oZXh8bnl8eXcpfGFwdHV8YXIoY2h8Z28pfGFzKHRlfHVzKXxhdHR3fGF1KGRpfFxcLW18ciB8cyApfGF2YW58YmUoY2t8bGx8bnEpfGJpKGxifHJkKXxibChhY3xheil8YnIoZXx2KXd8YnVtYnxid1xcLShufHUpfGM1NVxcL3xjYXBpfGNjd2F8Y2RtXFwtfGNlbGx8Y2h0bXxjbGRjfGNtZFxcLXxjbyhtcHxuZCl8Y3Jhd3xkYShpdHxsbHxuZyl8ZGJ0ZXxkY1xcLXN8ZGV2aXxkaWNhfGRtb2J8ZG8oY3xwKW98ZHMoMTJ8XFwtZCl8ZWwoNDl8YWkpfGVtKGwyfHVsKXxlcihpY3xrMCl8ZXNsOHxleihbNC03XTB8b3N8d2F8emUpfGZldGN8Zmx5KFxcLXxfKXxnMSB1fGc1NjB8Z2VuZXxnZlxcLTV8Z1xcLW1vfGdvKFxcLnd8b2QpfGdyKGFkfHVuKXxoYWllfGhjaXR8aGRcXC0obXxwfHQpfGhlaVxcLXxoaShwdHx0YSl8aHAoIGl8aXApfGhzXFwtY3xodChjKFxcLXwgfF98YXxnfHB8c3x0KXx0cCl8aHUoYXd8dGMpfGlcXC0oMjB8Z298bWEpfGkyMzB8aWFjKCB8XFwtfFxcLyl8aWJyb3xpZGVhfGlnMDF8aWtvbXxpbTFrfGlubm98aXBhcXxpcmlzfGphKHR8dilhfGpicm98amVtdXxqaWdzfGtkZGl8a2VqaXxrZ3QoIHxcXC8pfGtsb258a3B0IHxrd2NcXC18a3lvKGN8ayl8bGUobm98eGkpfGxnKCBnfFxcLyhrfGx8dSl8NTB8NTR8XFwtW2Etd10pfGxpYnd8bHlueHxtMVxcLXd8bTNnYXxtNTBcXC98bWEodGV8dWl8eG8pfG1jKDAxfDIxfGNhKXxtXFwtY3J8bWUocmN8cmkpfG1pKG84fG9hfHRzKXxtbWVmfG1vKDAxfDAyfGJpfGRlfGRvfHQoXFwtfCB8b3x2KXx6eil8bXQoNTB8cDF8diApfG13YnB8bXl3YXxuMTBbMC0yXXxuMjBbMi0zXXxuMzAoMHwyKXxuNTAoMHwyfDUpfG43KDAoMHwxKXwxMCl8bmUoKGN8bSlcXC18b258dGZ8d2Z8d2d8d3QpfG5vayg2fGkpfG56cGh8bzJpbXxvcCh0aXx3dil8b3Jhbnxvd2cxfHA4MDB8cGFuKGF8ZHx0KXxwZHhnfHBnKDEzfFxcLShbMS04XXxjKSl8cGhpbHxwaXJlfHBsKGF5fHVjKXxwblxcLTJ8cG8oY2t8cnR8c2UpfHByb3h8cHNpb3xwdFxcLWd8cWFcXC1hfHFjKDA3fDEyfDIxfDMyfDYwfFxcLVsyLTddfGlcXC0pfHF0ZWt8cjM4MHxyNjAwfHJha3N8cmltOXxybyh2ZXx6byl8czU1XFwvfHNhKGdlfG1hfG1tfG1zfG55fHZhKXxzYygwMXxoXFwtfG9vfHBcXC0pfHNka1xcL3xzZShjKFxcLXwwfDEpfDQ3fG1jfG5kfHJpKXxzZ2hcXC18c2hhcnxzaWUoXFwtfG0pfHNrXFwtMHxzbCg0NXxpZCl8c20oYWx8YXJ8YjN8aXR8dDUpfHNvKGZ0fG55KXxzcCgwMXxoXFwtfHZcXC18diApfHN5KDAxfG1iKXx0MigxOHw1MCl8dDYoMDB8MTB8MTgpfHRhKGd0fGxrKXx0Y2xcXC18dGRnXFwtfHRlbChpfG0pfHRpbVxcLXx0XFwtbW98dG8ocGx8c2gpfHRzKDcwfG1cXC18bTN8bTUpfHR4XFwtOXx1cChcXC5ifGcxfHNpKXx1dHN0fHY0MDB8djc1MHx2ZXJpfHZpKHJnfHRlKXx2ayg0MHw1WzAtM118XFwtdil8dm00MHx2b2RhfHZ1bGN8dngoNTJ8NTN8NjB8NjF8NzB8ODB8ODF8ODN8ODV8OTgpfHczYyhcXC18ICl8d2ViY3x3aGl0fHdpKGcgfG5jfG53KXx3bWxifHdvbnV8eDcwMHx5YXNcXC18eW91cnx6ZXRvfHp0ZVxcLS9pLnRlc3QoXHJcbiAgICAgICAgYWdlbnQuc3Vic3RyaW5nKDAsIDQpXHJcbiAgICAgIClcclxuICAgIClcclxuICAgICAgY2hlY2sgPSB0cnVlO1xyXG4gICAgcmV0dXJuIGNoZWNrO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEdyaWRzdGVyQ29uZmlnKGlzV2lkZ2V0TWdtbnQ6IGJvb2xlYW4pOiBHcmlkc3RlckNvbmZpZyB7XHJcbiAgICBsZXQgY29uZmlnOiBHcmlkc3RlckNvbmZpZyA9IEdyaWRzdGVyQ29uZmlnRGVmYXVsdFNldHRpbmdzO1xyXG5cclxuICAgIGNvbmZpZy5taW5Db2xzID0gdGhpcy5jdXJyZW50UmVzSW5mby5tYXhDb2xzO1xyXG4gICAgY29uZmlnLm1heENvbHMgPSB0aGlzLmN1cnJlbnRSZXNJbmZvLm1heENvbHM7XHJcbiAgICBjb25maWcubWluUm93cyA9IHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scztcclxuICAgIGNvbmZpZy5tYXhJdGVtQ29scyA9IHRoaXMuY3VycmVudFJlc0luZm8ubWF4Q29scztcclxuICAgIGNvbmZpZy5taW5JdGVtQ29scyA9IHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scztcclxuICAgIGNvbmZpZy5taW5JdGVtUm93cyA9IHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scztcclxuICAgIGNvbmZpZy5taW5JdGVtQXJlYSA9XHJcbiAgICAgIHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scyAqIHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scztcclxuICAgIGNvbmZpZy5kZWZhdWx0SXRlbUNvbHMgPSB0aGlzLmN1cnJlbnRSZXNJbmZvLm1pbkNvbHM7XHJcbiAgICBjb25maWcuZGVmYXVsdEl0ZW1Sb3dzID0gdGhpcy5jdXJyZW50UmVzSW5mby5taW5Db2xzO1xyXG5cclxuICAgIGlmICghdGhpcy5Jc0Rlc2t0b3BWaWV3IHx8ICFpc1dpZGdldE1nbW50KSB7XHJcbiAgICAgIGNvbmZpZy5yZXNpemFibGUuZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICBjb25maWcuc3dhcCA9IGZhbHNlO1xyXG4gICAgICBjb25maWcuZHJhZ2dhYmxlLmVuYWJsZWQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbmZpZy5yZXNpemFibGUuZW5hYmxlZCA9IHRydWU7XHJcbiAgICAgIGNvbmZpZy5zd2FwID0gdHJ1ZTtcclxuICAgICAgY29uZmlnLmRyYWdnYWJsZS5lbmFibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb25maWc7XHJcbiAgfVxyXG5cclxuICAvKipUbyBtYXAgSXdpZGdldEluZm8gb2JqZWN0IHRvIGdyaWRzdGVySXRlbSAqL1xyXG4gIHB1YmxpYyBnZXRHcmlkc3Rlckl0ZW0od2lkZ2V0OiBhbnkpIHtcclxuICAgIGlmICh3aWRnZXQud2lkZ2V0U2V0dGluZ3MpIHtcclxuICAgICAgd2lkZ2V0LnNldHRpbmdzID0gSlNPTi5wYXJzZSh3aWRnZXQud2lkZ2V0U2V0dGluZ3MpO1xyXG4gICAgfVxyXG4gICAgbGV0IGdyaWRzdGVySXRlbSA9IDxHcmlkc3Rlckl0ZW0+e1xyXG4gICAgICBjb2xzOiB0aGlzLmdldFdpZHRoKHdpZGdldC53aWR0aCksXHJcbiAgICAgIHJvd3M6IHRoaXMuZ2V0SGVpZ2h0KHdpZGdldC5oZWlnaHQpLFxyXG4gICAgICB4OiB0aGlzLklzRGVza3RvcFZpZXcgPyB3aWRnZXQucG9zaXRpb25feCA6IDAsXHJcbiAgICAgIHk6IHRoaXMuSXNEZXNrdG9wVmlldyA/IHdpZGdldC5wb3NpdGlvbl95IDogMCxcclxuICAgICAgd2lkZ2V0SW5mbzogd2lkZ2V0LFxyXG4gICAgICBtaW5JdGVtUm93czogdGhpcy5nZXRNaW5JdGVtUm93cyh3aWRnZXQpLFxyXG4gICAgICBtaW5JdGVtQ29sczogdGhpcy5nZXRNaW5JdGVtQ29scyh3aWRnZXQpLFxyXG4gICAgfTtcclxuICAgIHJldHVybiBncmlkc3Rlckl0ZW07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFdpZHRoKHdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgaWYgKCF0aGlzLklzRGVza3RvcFZpZXcpIHtcclxuICAgICAgd2lkdGggPSBNYXRoLmZsb29yKFxyXG4gICAgICAgICh3aWR0aCAvIHRoaXMubWF4Q29sc0Rlc2t0b3ApICogdGhpcy5jdXJyZW50UmVzSW5mby5tYXhDb2xzXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh3aWR0aCA8IHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scylcclxuICAgICAgICB3aWR0aCA9IHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scztcclxuICAgIH1cclxuICAgIHJldHVybiB3aWR0aDtcclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRNaW5JdGVtUm93cyh3aWRnZXQ6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5Jc0Rlc2t0b3BWaWV3KSB7XHJcbiAgICAgIGlmICh3aWRnZXQuc2V0dGluZ3MgJiYgd2lkZ2V0LnNldHRpbmdzLm1pblJvd3MpIHtcclxuICAgICAgICByZXR1cm4gd2lkZ2V0LnNldHRpbmdzLm1pblJvd3M7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRNaW5JdGVtQ29scyh3aWRnZXQ6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5Jc0Rlc2t0b3BWaWV3KSB7XHJcbiAgICAgIGlmICh3aWRnZXQuc2V0dGluZ3MgJiYgd2lkZ2V0LnNldHRpbmdzLm1pbkNvbHMpIHtcclxuICAgICAgICByZXR1cm4gd2lkZ2V0LnNldHRpbmdzLm1pbkNvbHM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRIZWlnaHQoaGVpZ2h0OiBudW1iZXIpIHtcclxuICAgIGlmICghdGhpcy5Jc0Rlc2t0b3BWaWV3KSB7XHJcbiAgICAgIGhlaWdodCA9IE1hdGguZmxvb3IoXHJcbiAgICAgICAgKGhlaWdodCAvIHRoaXMubWF4Q29sc0Rlc2t0b3ApICogdGhpcy5jdXJyZW50UmVzSW5mby5tYXhDb2xzXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChoZWlnaHQgPCB0aGlzLmN1cnJlbnRSZXNJbmZvLm1pbkNvbHMpXHJcbiAgICAgICAgaGVpZ2h0ID0gdGhpcy5jdXJyZW50UmVzSW5mby5taW5Db2xzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhlaWdodDtcclxuICB9XHJcbn1cclxuIl19
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEuZGFzaGJvYXJkLnJlc3BvbnNpdmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzY2huZWlkZXJlc3MvZGFzaGJvYXJkZnJhbWV3b3JrLyIsInNvdXJjZXMiOlsibGliL3JhLmRhc2hib2FyZC5yZXNwb25zaXZlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLL0IsSUFBYSw0QkFBNEIsR0FBekMsTUFBYSw0QkFBNEI7SUFtQnZDO1FBbEJPLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBRzFCLFlBQU8sR0FBRztZQUNoQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtZQUNyRCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtZQUN4RCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtZQUN6RDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxHQUFHLEVBQUUsVUFBVTtnQkFDZixPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWM7YUFDN0I7U0FDRixDQUFDO1FBSUEsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQ3JDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxtQkFBbUI7Z0JBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN6QyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6QjthQUFNO1lBQ0wsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDekMsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3hFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTtnQkFDaEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDckI7U0FDRjtJQUNILENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDcEUsSUFDRSwwVEFBMFQsQ0FBQyxJQUFJLENBQzdULEtBQUssQ0FDTjtZQUNELHlrREFBeWtELENBQUMsSUFBSSxDQUM1a0QsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3RCO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3BFLElBQ0UsMFRBQTBULENBQUMsSUFBSSxDQUM3VCxLQUFLLENBQ047WUFDRCx5a0RBQXlrRCxDQUFDLElBQUksQ0FDNWtELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUN0QjtZQUVELEtBQUssR0FBRyxJQUFJLENBQUM7UUFDZixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxhQUFzQixFQUFFLE1BQWUsRUFBRSxPQUFnQjtRQUNoRixJQUFJLE1BQU0sR0FBbUIsNkJBQTZCLENBQUM7UUFFM0QsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUM3QyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDN0MsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUNqRCxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDakQsTUFBTSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDNUQsTUFBTSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUNyRCxNQUFNLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBRXJELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3pDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNqQyxNQUFNLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUNwQixNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDbEM7YUFBTTtZQUNMLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNoQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNuQixNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUNsQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQ0FBK0M7SUFDeEMsZUFBZSxDQUFDLE1BQVc7UUFDaEMsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDckQ7UUFDRCxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzQixNQUFNLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvRDtRQUNELElBQUksWUFBWSxHQUFpQjtZQUMvQixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDbkMsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsVUFBVSxFQUFFLE1BQU07WUFDbEIsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQ3hDLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztTQUN6QyxDQUFDO1FBQ0YsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNoQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQzVELENBQUM7WUFDRixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87Z0JBQ3JDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztTQUN2QztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNPLGNBQWMsQ0FBQyxNQUFXO1FBQ2hDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7Z0JBQzlDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7YUFDaEM7U0FDRjtJQUNILENBQUM7SUFDTyxjQUFjLENBQUMsTUFBVztRQUNoQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUM5QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2FBQ2hDO1NBQ0Y7SUFDSCxDQUFDO0lBQ08sU0FBUyxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQ2pCLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDN0QsQ0FBQztZQUNGLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTztnQkFDdEMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGLENBQUE7O0FBbEtZLDRCQUE0QjtJQUR4QyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7O0dBQ3RCLDRCQUE0QixDQWtLeEM7U0FsS1ksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEdyaWRzdGVyQ29uZmlnLCBHcmlkc3Rlckl0ZW0gfSBmcm9tIFwiLi4vZ3JpZHN0ZXJcIjtcclxuaW1wb3J0IHsgR3JpZHN0ZXJDb25maWdEZWZhdWx0U2V0dGluZ3MgfSBmcm9tIFwiLi9yYS5ncmlkc3Rlci5jb25maWdcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5kZWNsYXJlIHZhciB3aW5kb3c6IGFueTtcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcclxuZXhwb3J0IGNsYXNzIFJBRGFzaGJvYXJkUmVzcG9uc2l2ZVNlcnZpY2Uge1xyXG4gIHB1YmxpYyByZXNpemVkID0gbmV3IFN1YmplY3QoKTtcclxuICBwdWJsaWMgbWF4Q29sc0Rlc2t0b3A6IG51bWJlciA9IDg7XHJcbiAgcHJpdmF0ZSBzY3JlZW5XaWR0aEFkanVzdGVkOiBhbnk7XHJcbiAgcHJpdmF0ZSBzY3JlZW5XaWR0aDogbnVtYmVyO1xyXG4gIHByaXZhdGUgcmVzSW5mbyA9IFtcclxuICAgIHsgaWQ6IDEsIHN0YXJ0OiAwLCBlbmQ6IDc2NywgbWluQ29sczogMSwgbWF4Q29sczogMSB9LFxyXG4gICAgeyBpZDogMiwgc3RhcnQ6IDc2OCwgZW5kOiAxMDI0LCBtaW5Db2xzOiAxLCBtYXhDb2xzOiAyIH0sXHJcbiAgICB7IGlkOiAzLCBzdGFydDogMTAyNSwgZW5kOiAxMzY2LCBtaW5Db2xzOiAxLCBtYXhDb2xzOiA2IH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiA0LFxyXG4gICAgICBzdGFydDogMTM2NyxcclxuICAgICAgZW5kOiA5OTk5OTk5OTk5LFxyXG4gICAgICBtaW5Db2xzOiAxLFxyXG4gICAgICBtYXhDb2xzOiB0aGlzLm1heENvbHNEZXNrdG9wLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIHByaXZhdGUgY3VycmVudFJlc0luZm86IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnNldFNjcmVlbldpZHRoKCk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCAoKSA9PiB7XHJcbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcclxuICAgICAgaWYgKHRoaXMuc2NyZWVuV2lkdGhBZGp1c3RlZCkgY2xlYXJUaW1lb3V0KHRoaXMuc2NyZWVuV2lkdGhBZGp1c3RlZCk7XHJcbiAgICAgIHRoaXMuc2NyZWVuV2lkdGhBZGp1c3RlZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnRleHQuc2V0U2NyZWVuV2lkdGgoKTtcclxuICAgICAgfSwgNTAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTY3JlZW5XaWR0aCgpIHtcclxuICAgIHRoaXMuc2NyZWVuV2lkdGggPSB3aW5kb3cub3V0ZXJXaWR0aDtcclxuICAgIGlmICh0aGlzLklzRGVza3RvcFZpZXcpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UmVzSW5mbyA9IHRoaXMucmVzSW5mb1szXTtcclxuICAgICAgdGhpcy5yZXNpemVkLm5leHQodHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcmVzSW5mbyA9IHRoaXMucmVzSW5mby5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgICByZXR1cm4gaXRlbS5lbmQgPj0gdGhpcy5zY3JlZW5XaWR0aCAmJiBpdGVtLnN0YXJ0IDw9IHRoaXMuc2NyZWVuV2lkdGg7XHJcbiAgICAgIH0pWzBdO1xyXG4gICAgICBpZiAoIXRoaXMuY3VycmVudFJlc0luZm8gfHwgdGhpcy5jdXJyZW50UmVzSW5mby5pZCAhPSByZXNJbmZvLmlkKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UmVzSW5mbyA9IHJlc0luZm87XHJcbiAgICAgICAgdGhpcy5yZXNpemVkLm5leHQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBJc0Rlc2t0b3BWaWV3KCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCBuYXZpZ2F0b3IudmVuZG9yIHx8IHdpbmRvdy5vcGVyYTtcclxuICAgIGlmIChcclxuICAgICAgLyhhbmRyb2lkfGJiXFxkK3xtZWVnbykuK21vYmlsZXxhdmFudGdvfGJhZGFcXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlyaXN8a2luZGxlfGxnZSB8bWFlbW98bWlkcHxtbXB8bW9iaWxlLitmaXJlZm94fG5ldGZyb250fG9wZXJhIG0ob2J8aW4paXxwYWxtKCBvcyk/fHBob25lfHAoaXhpfHJlKVxcL3xwbHVja2VyfHBvY2tldHxwc3B8c2VyaWVzKDR8NikwfHN5bWJpYW58dHJlb3x1cFxcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIGNlfHhkYXx4aWluby9pLnRlc3QoXHJcbiAgICAgICAgYWdlbnRcclxuICAgICAgKSB8fFxyXG4gICAgICAvMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1xcLSl8YWkoa298cm4pfGFsKGF2fGNhfGNvKXxhbW9pfGFuKGV4fG55fHl3KXxhcHR1fGFyKGNofGdvKXxhcyh0ZXx1cyl8YXR0d3xhdShkaXxcXC1tfHIgfHMgKXxhdmFufGJlKGNrfGxsfG5xKXxiaShsYnxyZCl8YmwoYWN8YXopfGJyKGV8dil3fGJ1bWJ8YndcXC0obnx1KXxjNTVcXC98Y2FwaXxjY3dhfGNkbVxcLXxjZWxsfGNodG18Y2xkY3xjbWRcXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcXC1zfGRldml8ZGljYXxkbW9ifGRvKGN8cClvfGRzKDEyfFxcLWQpfGVsKDQ5fGFpKXxlbShsMnx1bCl8ZXIoaWN8azApfGVzbDh8ZXooWzQtN10wfG9zfHdhfHplKXxmZXRjfGZseShcXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcXC01fGdcXC1tb3xnbyhcXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXFwtKG18cHx0KXxoZWlcXC18aGkocHR8dGEpfGhwKCBpfGlwKXxoc1xcLWN8aHQoYyhcXC18IHxffGF8Z3xwfHN8dCl8dHApfGh1KGF3fHRjKXxpXFwtKDIwfGdvfG1hKXxpMjMwfGlhYyggfFxcLXxcXC8pfGlicm98aWRlYXxpZzAxfGlrb218aW0xa3xpbm5vfGlwYXF8aXJpc3xqYSh0fHYpYXxqYnJvfGplbXV8amlnc3xrZGRpfGtlaml8a2d0KCB8XFwvKXxrbG9ufGtwdCB8a3djXFwtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcXC8oa3xsfHUpfDUwfDU0fFxcLVthLXddKXxsaWJ3fGx5bnh8bTFcXC13fG0zZ2F8bTUwXFwvfG1hKHRlfHVpfHhvKXxtYygwMXwyMXxjYSl8bVxcLWNyfG1lKHJjfHJpKXxtaShvOHxvYXx0cyl8bW1lZnxtbygwMXwwMnxiaXxkZXxkb3x0KFxcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXFwtfG9ufHRmfHdmfHdnfHd0KXxub2soNnxpKXxuenBofG8yaW18b3AodGl8d3YpfG9yYW58b3dnMXxwODAwfHBhbihhfGR8dCl8cGR4Z3xwZygxM3xcXC0oWzEtOF18YykpfHBoaWx8cGlyZXxwbChheXx1Yyl8cG5cXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcXC1nfHFhXFwtYXxxYygwN3wxMnwyMXwzMnw2MHxcXC1bMi03XXxpXFwtKXxxdGVrfHIzODB8cjYwMHxyYWtzfHJpbTl8cm8odmV8em8pfHM1NVxcL3xzYShnZXxtYXxtbXxtc3xueXx2YSl8c2MoMDF8aFxcLXxvb3xwXFwtKXxzZGtcXC98c2UoYyhcXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXFwtfHNoYXJ8c2llKFxcLXxtKXxza1xcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFxcLXx2XFwtfHYgKXxzeSgwMXxtYil8dDIoMTh8NTApfHQ2KDAwfDEwfDE4KXx0YShndHxsayl8dGNsXFwtfHRkZ1xcLXx0ZWwoaXxtKXx0aW1cXC18dFxcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXFwtfG0zfG01KXx0eFxcLTl8dXAoXFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFxcLXYpfHZtNDB8dm9kYXx2dWxjfHZ4KDUyfDUzfDYwfDYxfDcwfDgwfDgxfDgzfDg1fDk4KXx3M2MoXFwtfCApfHdlYmN8d2hpdHx3aShnIHxuY3xudyl8d21sYnx3b251fHg3MDB8eWFzXFwtfHlvdXJ8emV0b3x6dGVcXC0vaS50ZXN0KFxyXG4gICAgICAgIGFnZW50LnN1YnN0cmluZygwLCA0KVxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBJc01vYmlsZSgpOiBib29sZWFuIHtcclxuICAgIGxldCBjaGVjayA9IGZhbHNlO1xyXG4gICAgbGV0IGFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCBuYXZpZ2F0b3IudmVuZG9yIHx8IHdpbmRvdy5vcGVyYTtcclxuICAgIGlmIChcclxuICAgICAgLyhhbmRyb2lkfGJiXFxkK3xtZWVnbykuK21vYmlsZXxhdmFudGdvfGJhZGFcXC98YmxhY2tiZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfGlyaXN8a2luZGxlfGxnZSB8bWFlbW98bWlkcHxtbXB8bW9iaWxlLitmaXJlZm94fG5ldGZyb250fG9wZXJhIG0ob2J8aW4paXxwYWxtKCBvcyk/fHBob25lfHAoaXhpfHJlKVxcL3xwbHVja2VyfHBvY2tldHxwc3B8c2VyaWVzKDR8NikwfHN5bWJpYW58dHJlb3x1cFxcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIGNlfHhkYXx4aWluby9pLnRlc3QoXHJcbiAgICAgICAgYWdlbnRcclxuICAgICAgKSB8fFxyXG4gICAgICAvMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1xcLSl8YWkoa298cm4pfGFsKGF2fGNhfGNvKXxhbW9pfGFuKGV4fG55fHl3KXxhcHR1fGFyKGNofGdvKXxhcyh0ZXx1cyl8YXR0d3xhdShkaXxcXC1tfHIgfHMgKXxhdmFufGJlKGNrfGxsfG5xKXxiaShsYnxyZCl8YmwoYWN8YXopfGJyKGV8dil3fGJ1bWJ8YndcXC0obnx1KXxjNTVcXC98Y2FwaXxjY3dhfGNkbVxcLXxjZWxsfGNodG18Y2xkY3xjbWRcXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcXC1zfGRldml8ZGljYXxkbW9ifGRvKGN8cClvfGRzKDEyfFxcLWQpfGVsKDQ5fGFpKXxlbShsMnx1bCl8ZXIoaWN8azApfGVzbDh8ZXooWzQtN10wfG9zfHdhfHplKXxmZXRjfGZseShcXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcXC01fGdcXC1tb3xnbyhcXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXFwtKG18cHx0KXxoZWlcXC18aGkocHR8dGEpfGhwKCBpfGlwKXxoc1xcLWN8aHQoYyhcXC18IHxffGF8Z3xwfHN8dCl8dHApfGh1KGF3fHRjKXxpXFwtKDIwfGdvfG1hKXxpMjMwfGlhYyggfFxcLXxcXC8pfGlicm98aWRlYXxpZzAxfGlrb218aW0xa3xpbm5vfGlwYXF8aXJpc3xqYSh0fHYpYXxqYnJvfGplbXV8amlnc3xrZGRpfGtlaml8a2d0KCB8XFwvKXxrbG9ufGtwdCB8a3djXFwtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcXC8oa3xsfHUpfDUwfDU0fFxcLVthLXddKXxsaWJ3fGx5bnh8bTFcXC13fG0zZ2F8bTUwXFwvfG1hKHRlfHVpfHhvKXxtYygwMXwyMXxjYSl8bVxcLWNyfG1lKHJjfHJpKXxtaShvOHxvYXx0cyl8bW1lZnxtbygwMXwwMnxiaXxkZXxkb3x0KFxcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXFwtfG9ufHRmfHdmfHdnfHd0KXxub2soNnxpKXxuenBofG8yaW18b3AodGl8d3YpfG9yYW58b3dnMXxwODAwfHBhbihhfGR8dCl8cGR4Z3xwZygxM3xcXC0oWzEtOF18YykpfHBoaWx8cGlyZXxwbChheXx1Yyl8cG5cXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcXC1nfHFhXFwtYXxxYygwN3wxMnwyMXwzMnw2MHxcXC1bMi03XXxpXFwtKXxxdGVrfHIzODB8cjYwMHxyYWtzfHJpbTl8cm8odmV8em8pfHM1NVxcL3xzYShnZXxtYXxtbXxtc3xueXx2YSl8c2MoMDF8aFxcLXxvb3xwXFwtKXxzZGtcXC98c2UoYyhcXC18MHwxKXw0N3xtY3xuZHxyaSl8c2doXFwtfHNoYXJ8c2llKFxcLXxtKXxza1xcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFxcLXx2XFwtfHYgKXxzeSgwMXxtYil8dDIoMTh8NTApfHQ2KDAwfDEwfDE4KXx0YShndHxsayl8dGNsXFwtfHRkZ1xcLXx0ZWwoaXxtKXx0aW1cXC18dFxcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXFwtfG0zfG01KXx0eFxcLTl8dXAoXFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFxcLXYpfHZtNDB8dm9kYXx2dWxjfHZ4KDUyfDUzfDYwfDYxfDcwfDgwfDgxfDgzfDg1fDk4KXx3M2MoXFwtfCApfHdlYmN8d2hpdHx3aShnIHxuY3xudyl8d21sYnx3b251fHg3MDB8eWFzXFwtfHlvdXJ8emV0b3x6dGVcXC0vaS50ZXN0KFxyXG4gICAgICAgIGFnZW50LnN1YnN0cmluZygwLCA0KVxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAgIGNoZWNrID0gdHJ1ZTtcclxuICAgIHJldHVybiBjaGVjaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRHcmlkc3RlckNvbmZpZyhpc1dpZGdldE1nbW50OiBib29sZWFuLCByZXNpemU6IGJvb2xlYW4sIGNhbk1vdmU6IGJvb2xlYW4pOiBHcmlkc3RlckNvbmZpZyB7XHJcbiAgICBsZXQgY29uZmlnOiBHcmlkc3RlckNvbmZpZyA9IEdyaWRzdGVyQ29uZmlnRGVmYXVsdFNldHRpbmdzO1xyXG5cclxuICAgIGNvbmZpZy5taW5Db2xzID0gdGhpcy5jdXJyZW50UmVzSW5mby5tYXhDb2xzO1xyXG4gICAgY29uZmlnLm1heENvbHMgPSB0aGlzLmN1cnJlbnRSZXNJbmZvLm1heENvbHM7XHJcbiAgICBjb25maWcubWluUm93cyA9IHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scztcclxuICAgIGNvbmZpZy5tYXhJdGVtQ29scyA9IHRoaXMuY3VycmVudFJlc0luZm8ubWF4Q29scztcclxuICAgIGNvbmZpZy5taW5JdGVtQ29scyA9IHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scztcclxuICAgIGNvbmZpZy5taW5JdGVtUm93cyA9IHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scztcclxuICAgIGNvbmZpZy5taW5JdGVtQXJlYSA9XHJcbiAgICAgIHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scyAqIHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scztcclxuICAgIGNvbmZpZy5kZWZhdWx0SXRlbUNvbHMgPSB0aGlzLmN1cnJlbnRSZXNJbmZvLm1pbkNvbHM7XHJcbiAgICBjb25maWcuZGVmYXVsdEl0ZW1Sb3dzID0gdGhpcy5jdXJyZW50UmVzSW5mby5taW5Db2xzO1xyXG5cclxuICAgIGlmICghdGhpcy5Jc0Rlc2t0b3BWaWV3IHx8ICFpc1dpZGdldE1nbW50KSB7XHJcbiAgICAgIGNvbmZpZy5yZXNpemFibGUuZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICBjb25maWcuc3dhcCA9IGZhbHNlO1xyXG4gICAgICBjb25maWcuZHJhZ2dhYmxlLmVuYWJsZWQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbmZpZy5yZXNpemFibGUuZW5hYmxlZCA9IHRydWU7XHJcbiAgICAgIGNvbmZpZy5zd2FwID0gdHJ1ZTtcclxuICAgICAgY29uZmlnLmRyYWdnYWJsZS5lbmFibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICghcmVzaXplKSB7XHJcbiAgICAgIGNvbmZpZy5yZXNpemFibGUuZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICBjb25maWcuc3dhcCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjYW5Nb3ZlKSB7XHJcbiAgICAgIGNvbmZpZy5kcmFnZ2FibGUuZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbmZpZztcclxuICB9XHJcblxyXG4gIC8qKlRvIG1hcCBJd2lkZ2V0SW5mbyBvYmplY3QgdG8gZ3JpZHN0ZXJJdGVtICovXHJcbiAgcHVibGljIGdldEdyaWRzdGVySXRlbSh3aWRnZXQ6IGFueSkge1xyXG4gICAgaWYgKHdpZGdldC53aWRnZXRTZXR0aW5ncykge1xyXG4gICAgICB3aWRnZXQuc2V0dGluZ3MgPSBKU09OLnBhcnNlKHdpZGdldC53aWRnZXRTZXR0aW5ncyk7XHJcbiAgICB9XHJcbiAgICBpZiAod2lkZ2V0LnRlbXBsYXRlU2V0dGluZ3MpIHtcclxuICAgICAgd2lkZ2V0LnRlbXBsYXRlU2V0dGluZ3MgPSBKU09OLnBhcnNlKHdpZGdldC50ZW1wbGF0ZVNldHRpbmdzKTtcclxuICAgIH1cclxuICAgIGxldCBncmlkc3Rlckl0ZW0gPSA8R3JpZHN0ZXJJdGVtPntcclxuICAgICAgY29sczogdGhpcy5nZXRXaWR0aCh3aWRnZXQud2lkdGgpLFxyXG4gICAgICByb3dzOiB0aGlzLmdldEhlaWdodCh3aWRnZXQuaGVpZ2h0KSxcclxuICAgICAgeDogdGhpcy5Jc0Rlc2t0b3BWaWV3ID8gd2lkZ2V0LnBvc2l0aW9uX3ggOiAwLFxyXG4gICAgICB5OiB0aGlzLklzRGVza3RvcFZpZXcgPyB3aWRnZXQucG9zaXRpb25feSA6IDAsXHJcbiAgICAgIHdpZGdldEluZm86IHdpZGdldCxcclxuICAgICAgbWluSXRlbVJvd3M6IHRoaXMuZ2V0TWluSXRlbVJvd3Mod2lkZ2V0KSxcclxuICAgICAgbWluSXRlbUNvbHM6IHRoaXMuZ2V0TWluSXRlbUNvbHMod2lkZ2V0KSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gZ3JpZHN0ZXJJdGVtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRXaWR0aCh3aWR0aDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGlmICghdGhpcy5Jc0Rlc2t0b3BWaWV3KSB7XHJcbiAgICAgIHdpZHRoID0gTWF0aC5mbG9vcihcclxuICAgICAgICAod2lkdGggLyB0aGlzLm1heENvbHNEZXNrdG9wKSAqIHRoaXMuY3VycmVudFJlc0luZm8ubWF4Q29sc1xyXG4gICAgICApO1xyXG4gICAgICBpZiAod2lkdGggPCB0aGlzLmN1cnJlbnRSZXNJbmZvLm1pbkNvbHMpXHJcbiAgICAgICAgd2lkdGggPSB0aGlzLmN1cnJlbnRSZXNJbmZvLm1pbkNvbHM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gd2lkdGg7XHJcbiAgfVxyXG4gIHByaXZhdGUgZ2V0TWluSXRlbVJvd3Mod2lkZ2V0OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuSXNEZXNrdG9wVmlldykge1xyXG4gICAgICBpZiAod2lkZ2V0LnNldHRpbmdzICYmIHdpZGdldC5zZXR0aW5ncy5taW5Sb3dzKSB7XHJcbiAgICAgICAgcmV0dXJuIHdpZGdldC5zZXR0aW5ncy5taW5Sb3dzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgZ2V0TWluSXRlbUNvbHMod2lkZ2V0OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuSXNEZXNrdG9wVmlldykge1xyXG4gICAgICBpZiAod2lkZ2V0LnNldHRpbmdzICYmIHdpZGdldC5zZXR0aW5ncy5taW5Db2xzKSB7XHJcbiAgICAgICAgcmV0dXJuIHdpZGdldC5zZXR0aW5ncy5taW5Db2xzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgZ2V0SGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XHJcbiAgICBpZiAoIXRoaXMuSXNEZXNrdG9wVmlldykge1xyXG4gICAgICBoZWlnaHQgPSBNYXRoLmZsb29yKFxyXG4gICAgICAgIChoZWlnaHQgLyB0aGlzLm1heENvbHNEZXNrdG9wKSAqIHRoaXMuY3VycmVudFJlc0luZm8ubWF4Q29sc1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoaGVpZ2h0IDwgdGhpcy5jdXJyZW50UmVzSW5mby5taW5Db2xzKVxyXG4gICAgICAgIGhlaWdodCA9IHRoaXMuY3VycmVudFJlc0luZm8ubWluQ29scztcclxuICAgIH1cclxuICAgIHJldHVybiBoZWlnaHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -71,6 +71,7 @@ var RADashboardArea = /** @class */ (function () {
|
|
|
71
71
|
this.isWidgetLoaded = true;
|
|
72
72
|
this.loadWidgets(this.userDashboardId, this.areaKey);
|
|
73
73
|
}
|
|
74
|
+
this.initiateGridsterConfig();
|
|
74
75
|
if (changes.raDashboardEventBus && changes.raDashboardEventBus.currentValue != changes.raDashboardEventBus.previousValue) {
|
|
75
76
|
this.inititateEventBusSubscritions();
|
|
76
77
|
}
|
|
@@ -78,21 +79,23 @@ var RADashboardArea = /** @class */ (function () {
|
|
|
78
79
|
/**To set GridsterConfig */
|
|
79
80
|
RADashboardArea.prototype.initiateGridsterConfig = function () {
|
|
80
81
|
var _this = this;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
};
|
|
88
|
-
this.options.itemChangeCallback = function (item) {
|
|
89
|
-
if (_this.responsiveService.IsDesktopView) {
|
|
90
|
-
if (item.widgetInfo && item.widgetInfo.widgetInstanceId) {
|
|
91
|
-
_this.updateWidgetPosition(item.widgetInfo.widgetInstanceId);
|
|
82
|
+
if (this.dashboardInfo) {
|
|
83
|
+
/**To override default configuration values to the gridster control */
|
|
84
|
+
this.options = this.responsiveService.getGridsterConfig(this.isWidgetMgmnt, this.dashboardInfo.templateConfig.widget.canResize, this.dashboardInfo.templateConfig.widget.canMove);
|
|
85
|
+
this.options.initCallback = function (gridster) {
|
|
86
|
+
if (_this.options.api) {
|
|
87
|
+
_this.gridcellHeight = _this.options.api.getCurrentRowHeight();
|
|
92
88
|
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
|
|
89
|
+
};
|
|
90
|
+
this.options.itemChangeCallback = function (item) {
|
|
91
|
+
if (_this.responsiveService.IsDesktopView) {
|
|
92
|
+
if (item.widgetInfo && item.widgetInfo.widgetInstanceId) {
|
|
93
|
+
_this.updateWidgetPosition(item.widgetInfo.widgetInstanceId);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
_this.setAreaHeight();
|
|
97
|
+
};
|
|
98
|
+
}
|
|
96
99
|
};
|
|
97
100
|
/** To initiate eventbus subsctiptions */
|
|
98
101
|
RADashboardArea.prototype.inititateEventBusSubscritions = function () {
|
|
@@ -487,7 +490,7 @@ var RADashboardArea = /** @class */ (function () {
|
|
|
487
490
|
Component({
|
|
488
491
|
selector: 'ra-dashboard-area',
|
|
489
492
|
template: "<div #gridWrapper class=\"wrap gridster gridster-mobile\" [ngStyle]=\"{'height': userWidgets.length > 0 ? (gridheight + 'px') : 'unset'}\">\r\n <!-- <div #gridWrapper class=\"wrap gridster\"> -->\r\n <gridster [options]=\"options\" style=\"height:100%;\" *ngIf=\"userWidgets.length > 0\">\r\n <gridster-item [item]=\"item\" *ngFor=\"let item of widgetList\">\r\n <ra-widget-container [dashboard-info]=\"dashboardInfo\" [app-config]=\"appConfig\" [event-bus]=\"raDashboardEventBus\"\r\n (widgetDeleted)=\"deleteWidget($event)\" [data]=\"item\" [global-filter]=\"globalFilter\"\r\n [grid-cell-height]=\"gridcellHeight\" *ngIf=\"gridcellHeight && gridcellHeight > 0\" [widget-width]=\"item.cols\"\r\n [widget-height]=\"item.rows\" [widget-instance-id]=\"item.widgetInstanceId\" [dom-resized]=\"domResized\"\r\n (updateAppliedFilters)=\"updateAppliedFilters($event)\">\r\n </ra-widget-container>\r\n </gridster-item>\r\n </gridster>\r\n\r\n <div class=\"empty-padding kiosk-hide\" *ngIf=\"showEmptyDashboard\">\r\n <div class=\"empty-wrapper\">\r\n <div></div>\r\n <div class=\"m-1 empty-prefix\">\r\n <i class=\"fal fa-edit edit-icon\"></i>\r\n <span class=\"empty-title\">{{'dashboard.emptydashboard'|translate}}</span>\r\n </div>\r\n <div class=\"empty-content light\">\r\n <div>\r\n <div class=\"col-sm-12 empty-msg\">\r\n {{'dashboard.emptydashboardmessage'|translate}} <br />\r\n {{'dashboard.emptydashboardmessage2'|translate}}\r\n </div>\r\n <button *ngIf=\"isWidgetMgmnt\" class=\"btn btnLib btn-sm m-1 dashboard-button light\" (click)=\"addNewWidget()\">\r\n <i class=\"fal fa-plus m-1\"></i>{{'dashboard.addawidgets'|translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <notifier-container></notifier-container>\r\n</div>",
|
|
490
|
-
styles: ["gridster{width:inherit;resize:height;display:flex;background-color:#fff;overflow-y:hidden!important}.dvheader{width:100%;height:35px;background:#000;color:#fff;padding:7px 3px 5px 6px;text-transform:uppercase}gridster-item{box-sizing:border-box;z-index:1;position:absolute;overflow:hidden;transition:.3s;display:none;background:#fff;-webkit-user-select:text;-moz-user-select:text;user-select:text;box-shadow:0 1px 10px rgba(0,0,0,.05)}gridster-item:hover{box-shadow:0 1px 10px rgba(0,0,0,.15)}@media screen and (max-width:685px){.gridster-mobile{height:auto!important;margin-bottom:50px!important}}@media screen and (max-width:350px){.gridster-mobile{min-height:330px!important;margin-bottom:0!important}}.empty-padding{padding:40px 20px 20px;background-color:#
|
|
493
|
+
styles: ["gridster{width:inherit;resize:height;display:flex;background-color:#fff;overflow-y:hidden!important}.dvheader{width:100%;height:35px;background:#000;color:#fff;padding:7px 3px 5px 6px;text-transform:uppercase}gridster-item{box-sizing:border-box;z-index:1;position:absolute;overflow:hidden;transition:.3s;display:none;background:#fff;-webkit-user-select:text;-moz-user-select:text;user-select:text;box-shadow:0 1px 10px rgba(0,0,0,.05)}gridster-item:hover{box-shadow:0 1px 10px rgba(0,0,0,.15)}@media screen and (max-width:685px){.gridster-mobile{height:auto!important;margin-bottom:50px!important}}@media screen and (max-width:350px){.gridster-mobile{min-height:330px!important;margin-bottom:0!important}}.empty-padding{padding:40px 20px 20px;background-color:#fff;display:flex;justify-content:center;align-content:center}.empty-wrapper{display:flex;background-color:#fff;border-radius:8px;min-height:125px;width:72%}.empty-prefix{color:#32ad3c;font-size:18px;display:flex;align-items:center;padding:10px 30px;min-width:-webkit-max-content;min-width:max-content;min-width:-moz-max-content}.empty-content{color:#333;border-left:1px solid #a9afb1;width:100%;display:flex;align-items:center;padding:15px 30px 10px 40px}.empty-msg{padding:0 0 5px;font-size:16px}.dashboard-button{padding:5px 10px 5px 5px!important}.btnLib{background-color:#ededed;color:#333!important}.btn-group-sm>.btn,.btn-sm{padding:5px 20px 5px 5px}.edit-icon{color:#32ad3c;font-size:24px;margin-right:15px}.empty-title{margin-top:10px}@media screen and (max-width:600px){.empty-padding{padding:10px;background-color:#fff;width:100%;display:block}.empty-wrapper{display:flex;background-color:#fff;border-radius:8px;min-height:125px;width:100%}.empty-prefix{color:#32ad3c;font-size:16px;display:flex;height:40px;padding:6px 10px 8px}.empty-content{color:#333;display:flex;padding:5px 10px 10px;margin-top:44px;margin-left:-185px;border-left:none}.empty-msg{padding:12px 10px 10px 5px;font-size:14px;border-top:1px solid #a9afb1}.edit-icon{color:#32ad3c;font-size:20px;margin-right:6px}.empty-title{margin-top:6px}}"]
|
|
491
494
|
}),
|
|
492
495
|
tslib_1.__metadata("design:paramtypes", [RaDashboardService,
|
|
493
496
|
NgZone,
|
|
@@ -500,4 +503,4 @@ var RADashboardArea = /** @class */ (function () {
|
|
|
500
503
|
return RADashboardArea;
|
|
501
504
|
}());
|
|
502
505
|
export { RADashboardArea };
|
|
503
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEuZGFzaGJvYXJkLmFyZWEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2NobmVpZGVyZXNzL2Rhc2hib2FyZGZyYW1ld29yay8iLCJzb3VyY2VzIjpbImxpYi9yYS1kYXNoYm9hcmQtYXJlYS9yYS5kYXNoYm9hcmQuYXJlYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pLLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBUWxGO0lBaUNFLHlCQUFvQixnQkFBb0MsRUFDOUMsTUFBYyxFQUNkLFVBQThCLEVBQzlCLGdCQUFvQyxFQUNwQyxRQUF5QixFQUN6QixpQkFBK0MsRUFDL0MsaUJBQXNDO1FBTjVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFDOUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFDcEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsc0JB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aUI7SUFDWDtRQUF2QixLQUFLLENBQUMsZUFBZSxDQUFDOzt5REFBbUI7SUFDdEI7UUFBbkIsS0FBSyxDQUFDLFdBQVcsQ0FBQzswQ0FBc0IsbUJBQW1CO2dFQUFDO0lBQ3JDO1FBQXZCLEtBQUssQ0FBQyxlQUFlLENBQUM7O3lEQUEwQjtJQUMxQjtRQUF0QixLQUFLLENBQUMsY0FBYyxDQUFDOzt3REFBeUI7SUFDMUI7UUFBcEIsS0FBSyxDQUFDLFlBQVksQ0FBQzs7c0RBQXVCO0lBQ2xCO1FBQXhCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQzs7MERBQThCO0lBQzVDO1FBQVQsTUFBTSxFQUFFOztnRUFBMEM7SUFFTjtRQUE1QyxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDOzBDQUFjLFVBQVU7d0RBQUM7SUEvQjFELGVBQWU7UUFMM0IsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLG1CQUFtQjtZQUM3Qix5NERBQXVDOztTQUV4QyxDQUFDO2lEQWtDc0Msa0JBQWtCO1lBQ3RDLE1BQU07WUFDRixrQkFBa0I7WUFDWixrQkFBa0I7WUFDMUIsZUFBZTtZQUNOLDRCQUE0QjtZQUM1QixtQkFBbUI7T0F2Q3JDLGVBQWUsQ0FxZTNCO0lBQUQsc0JBQUM7Q0FBQSxBQXJlRCxJQXFlQztTQXJlWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIE9uSW5pdCwgQ29tcG9uZW50LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE5nWm9uZSwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEdyaWRzdGVyQ29uZmlnLCBHcmlkc3Rlckl0ZW0gfSBmcm9tICcuLi8uLi9ncmlkc3Rlci9pbmRleCc7XHJcbmltcG9ydCB7IFJhRGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4uL3JhLmRhc2hib2FyZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUkFEYXNoYm9hcmRFdmVudEJ1cyB9IGZyb20gJy4uL3JhLmRhc2hiYXJkLmV2ZW50LmJ1cyc7XHJcbmltcG9ydCB7IFJBRXZlbnQgfSBmcm9tICcuLi9yYS5ldmVudC5lbnVtJztcclxuaW1wb3J0IHsgSVdpZGdldEluZm8sIElBcHBDb25maWcsIElCdWxrQWN0aW9uIH0gZnJvbSAnQHNjaG5laWRlcmVzcy93aWRnZXRmcmFtZXdvcmsnO1xyXG5pbXBvcnQgeyBOZ3hVaUxvYWRlclNlcnZpY2UgfSBmcm9tICduZ3gtdWktbG9hZGVyJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1ub3RpZmllcic7XHJcbmltcG9ydCB7IFJBVHJhbnNsYXRlU2VydmljZSwgUkFQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0BzY2huZWlkZXJlc3MvcmEtY29tbW9uJztcclxuaW1wb3J0IHsgUkFEYXNoYm9hcmRSZXNwb25zaXZlU2VydmljZSB9IGZyb20gJy4uL3JhLmRhc2hib2FyZC5yZXNwb25zaXZlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRGFzaGJvYXJkSW5mbyB9IGZyb20gJ0BzY2huZWlkZXJlc3Mvd2lkZ2V0ZnJhbWV3b3JrJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmEtZGFzaGJvYXJkLWFyZWEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yYS5kYXNoYm9hcmQuYXJlYS5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yYS5kYXNoYm9hcmQuYXJlYS5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUkFEYXNoYm9hcmRBcmVhIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyB3aWRnZXRMaXN0ID0gQXJyYXk8R3JpZHN0ZXJJdGVtPigpO1xyXG4gIHB1YmxpYyBvcHRpb25zOiBHcmlkc3RlckNvbmZpZztcclxuICBwdWJsaWMgZ3JpZGhlaWdodDogbnVtYmVyID0gMzAwO1xyXG4gIHB1YmxpYyBncmlkY2VsbEhlaWdodDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgdXNlcldpZGdldHM6IGFueVtdID0gW107XHJcbiAgcHVibGljIFBBTVdpZGdldHM6IGFueSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGNvbmlmZ0FkZENsaWNrOiBhbnk7XHJcbiAgcHJpdmF0ZSByZWFycmFuZ2VXaWRnZXRDbGljazogYW55O1xyXG4gIHByaXZhdGUgd2lkZ2V0RGVsZXRlRXZlbnQ6IGFueTtcclxuICBwcml2YXRlIHdpZGdldEFkZEV2ZW50OiBhbnk7XHJcbiAgcHJpdmF0ZSB3aWRnZXRMaWJyYXJ5RG9uZUNsaWNrOiBhbnk7XHJcbiAgcHJpdmF0ZSBpc1dpZGdldExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkb21SZXNpemVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dFbXB0eURhc2hib2FyZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc1dpZGdldE1nbW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGxhc3RWaWV3VHlwZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBidWxrQWN0aW9uRGF0YTpJQnVsa0FjdGlvbjtcclxuXHJcbiAgQElucHV0KCd1c2VyLWRhc2hib2FyZC1pZCcpIHVzZXJEYXNoYm9hcmRJZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgnYXJlYS1rZXknKSBhcmVhS2V5OiBzdHJpbmc7XHJcbiAgQElucHV0KCdnbG9iYWwtZmlsdGVyJykgZ2xvYmFsRmlsdGVyOiBhbnk7XHJcbiAgQElucHV0KCdldmVudC1idXMnKSByYURhc2hib2FyZEV2ZW50QnVzOiBSQURhc2hib2FyZEV2ZW50QnVzO1xyXG4gIEBJbnB1dCgnd2lkZ2V0LWhlaWdodCcpIHdpZGdldEhlaWdodDogbnVtYmVyID0gMjtcclxuICBASW5wdXQoJ3dpZGdldC13aWR0aCcpIHdpZGdldFdpZHRoOiBudW1iZXIgPSA0O1xyXG4gIEBJbnB1dCgnYXBwLWNvbmZpZycpIGFwcENvbmZpZzogSUFwcENvbmZpZztcclxuICBASW5wdXQoJ2Rhc2hib2FyZC1pbmZvJykgZGFzaGJvYXJkSW5mbzogSURhc2hib2FyZEluZm9cclxuICBAT3V0cHV0KCkgaGlkZURhc2hib2FyZEJhbm5lciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZ3JpZFdyYXBwZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgZ3JpZFdyYXBwZXI6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGFzaGJvYXJkU2VydmljZTogUmFEYXNoYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgbmd4U2VydmljZTogTmd4VWlMb2FkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBSQVRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWVyOiBOb3RpZmllclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3BvbnNpdmVTZXJ2aWNlOiBSQURhc2hib2FyZFJlc3BvbnNpdmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uU2VydmljZTogUkFQZXJtaXNzaW9uU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzV2lkZ2V0TWdtbnQgPSB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24oJ3JhLndpZGdldG1hbmFnZW1lbnQnKTtcclxuICAgIHRoaXMuaW5pdGlhdGVHcmlkc3RlckNvbmZpZygpO1xyXG4gICAgdGhpcy5sYXN0Vmlld1R5cGUgPSB0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLklzRGVza3RvcFZpZXcgPyAnZGVza3RvcCcgOiAnbW9iaWxlJztcclxuICAgIHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UucmVzaXplZC5zdWJzY3JpYmUoKGlzRGVza3RvcCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5sYXN0Vmlld1R5cGUgIT0gKGlzRGVza3RvcCA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnKSB8fCAhaXNEZXNrdG9wKSB7XHJcbiAgICAgICAgdGhpcy5sYXN0Vmlld1R5cGUgPSAoaXNEZXNrdG9wID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScpO1xyXG4gICAgICAgIHRoaXMud2lkZ2V0TGlzdCA9IFtdO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pbml0aWF0ZUdyaWRzdGVyQ29uZmlnKCk7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuYXBpLm9wdGlvbnNDaGFuZ2VkKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy51c2VyV2lkZ2V0cykge1xyXG4gICAgICAgICAgICB0aGlzLndpZGdldExpc3QgPSB0aGlzLm1hcE9iamVjdExpc3RUb0dyaWRzdGVySXRlbUxpc3QodGhpcy51c2VyV2lkZ2V0cyk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0QXJlYUhlaWdodCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRXaWRnZXRzKHRoaXMudXNlckRhc2hib2FyZElkLCB0aGlzLmFyZWFLZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kb21SZXNpemVkID0gIXRoaXMuZG9tUmVzaXplZDtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5zdWJzY3JpYmUoUkFFdmVudC5CdWxrQWN0aW9uQ2xpY2spLnN1YnNjcmliZSgoZGF0YTogSUJ1bGtBY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5idWxrQWN0aW9uRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpOyAvLyBUbyBjcmVhdGUgYSBuZXcgcmVmZXJlbmNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuZ3JpZGNlbGxIZWlnaHQgPSB0aGlzLm9wdGlvbnMuYXBpLmdldEN1cnJlbnRSb3dIZWlnaHQoKTtcclxuICAgICAgICAgIHRoaXMuZG9tUmVzaXplZCA9ICF0aGlzLmRvbVJlc2l6ZWQ7XHJcbiAgICAgICAgICB0aGlzLnNldEFyZWFIZWlnaHQoKTtcclxuICAgICAgICB9LCAxMDApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNXaWRnZXRNZ21udCA9IHRoaXMucGVybWlzc2lvblNlcnZpY2UuaGFzUGVybWlzc2lvbigncmEud2lkZ2V0bWFuYWdlbWVudCcpO1xyXG4gICAgaWYgKHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cyAmJiB0aGlzLmFwcENvbmZpZyAmJiAhdGhpcy5pc1dpZGdldExvYWRlZCkge1xyXG4gICAgICB0aGlzLmlzV2lkZ2V0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5sb2FkV2lkZ2V0cyh0aGlzLnVzZXJEYXNoYm9hcmRJZCwgdGhpcy5hcmVhS2V5KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlcy5yYURhc2hib2FyZEV2ZW50QnVzICYmIGNoYW5nZXMucmFEYXNoYm9hcmRFdmVudEJ1cy5jdXJyZW50VmFsdWUgIT0gY2hhbmdlcy5yYURhc2hib2FyZEV2ZW50QnVzLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgdGhpcy5pbml0aXRhdGVFdmVudEJ1c1N1YnNjcml0aW9ucygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqVG8gc2V0IEdyaWRzdGVyQ29uZmlnICovXHJcbiAgcHVibGljIGluaXRpYXRlR3JpZHN0ZXJDb25maWcoKSB7XHJcbiAgICAvKipUbyBvdmVycmlkZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdmFsdWVzIHRvIHRoZSBncmlkc3RlciBjb250cm9sICovXHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLmdldEdyaWRzdGVyQ29uZmlnKHRoaXMuaXNXaWRnZXRNZ21udCk7XHJcbiAgICB0aGlzLm9wdGlvbnMuaW5pdENhbGxiYWNrID0gKGdyaWRzdGVyOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcGkpIHtcclxuICAgICAgICB0aGlzLmdyaWRjZWxsSGVpZ2h0ID0gdGhpcy5vcHRpb25zLmFwaS5nZXRDdXJyZW50Um93SGVpZ2h0KCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLm9wdGlvbnMuaXRlbUNoYW5nZUNhbGxiYWNrID0gKGl0ZW06IEdyaWRzdGVySXRlbSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5yZXNwb25zaXZlU2VydmljZS5Jc0Rlc2t0b3BWaWV3KSB7XHJcbiAgICAgICAgaWYgKGl0ZW0ud2lkZ2V0SW5mbyAmJiBpdGVtLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCkge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVXaWRnZXRQb3NpdGlvbihpdGVtLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0QXJlYUhlaWdodCgpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKiBUbyBpbml0aWF0ZSBldmVudGJ1cyBzdWJzY3RpcHRpb25zICovXHJcbiAgaW5pdGl0YXRlRXZlbnRCdXNTdWJzY3JpdGlvbnMoKSB7XHJcbiAgICB0aGlzLndpZGdldERlbGV0ZUV2ZW50ID0gdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnN1YnNjcmliZShSQUV2ZW50LldpZGdldERlbGV0ZSkuc3Vic2NyaWJlKChpbnN0YW5jZUlkKSA9PiB7XHJcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kZWxldGVXaWRnZXQoaW5zdGFuY2VJZCwgdHJ1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy53aWRnZXRBZGRFdmVudCA9IHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5zdWJzY3JpYmUoUkFFdmVudC5BZGRXaWRnZXQpLnN1YnNjcmliZSgod2lkZ2V0SW5mbykgPT4ge1xyXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29weVdpZGdldCh3aWRnZXRJbmZvKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNvbmlmZ0FkZENsaWNrID0gdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnN1YnNjcmliZShSQUV2ZW50LkNvbmZpZ0FkZENsaWNrKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmFkZFdpZGdldChlKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlYXJyYW5nZVdpZGdldENsaWNrID0gdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnN1YnNjcmliZShSQUV2ZW50LlJlYXJyYW5nZUNsaWNrZWQpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVhcnJhbmdlV2lkZ2V0cygpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMud2lkZ2V0TGlicmFyeURvbmVDbGljayA9IHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5zdWJzY3JpYmUoUkFFdmVudC53aWRnZXRMaWJyYXJ5RG9uZUNsaWNrKS5zdWJzY3JpYmUoKHdpZGdldExpc3QpID0+IHtcclxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICBpZiAod2lkZ2V0TGlzdCkge1xyXG4gICAgICAgICAgdGhpcy5hZGRXaWRnZXRMaXN0VG9Hcmlkc3Rlcih3aWRnZXRMaXN0LCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0ZW1wIGZpeC0gcmVjdXJzaXZlIG1ldGhvZCB0byBpdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgaXRlbXNcclxuICAgKiBhbmQgYWRkIHRoZW0gdG8gZ3JpZHN0ZXIgaW4gdGhlIGdpdmVuIG9yZGVyXHJcbiAgICogQHBhcmFtIHdpZGdldExpc3QgIC1saXN0IG9mIHdpZGdldHNcclxuICAgKiBAcGFyYW0gaW5kZXggLWluZGV4IG9mIHRoZSBjdXJyZW50IHZhbHVlIHRvIGJlIGFkZGVkXHJcbiAgICovXHJcbiAgYWRkV2lkZ2V0TGlzdFRvR3JpZHN0ZXIod2lkZ2V0TGlzdDogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBsZXQgYXJlYUNvbnRleHQgPSB0aGlzO1xyXG4gICAgbGV0IGluZGV4VmFsID0gaW5kZXggKyAxO1xyXG4gICAgaWYgKGluZGV4ID4gd2lkZ2V0TGlzdC5sZW5ndGggLSAxKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKGluZGV4ID09IDApIHtcclxuICAgICAgICBhcmVhQ29udGV4dC5hZGRXaWRnZXQod2lkZ2V0TGlzdFtpbmRleF0pO1xyXG4gICAgICAgIGFyZWFDb250ZXh0LmFkZFdpZGdldExpc3RUb0dyaWRzdGVyKHdpZGdldExpc3QsIGluZGV4VmFsKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGFyZWFDb250ZXh0LmFkZFdpZGdldCh3aWRnZXRMaXN0W2luZGV4XSk7XHJcbiAgICAgICAgICBhcmVhQ29udGV4dC5hZGRXaWRnZXRMaXN0VG9Hcmlkc3Rlcih3aWRnZXRMaXN0LCBpbmRleFZhbCk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uaWZnQWRkQ2xpY2spXHJcbiAgICAgIHRoaXMuY29uaWZnQWRkQ2xpY2sudW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBpZiAodGhpcy53aWRnZXRBZGRFdmVudClcclxuICAgICAgdGhpcy53aWRnZXRBZGRFdmVudC51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLndpZGdldERlbGV0ZUV2ZW50KVxyXG4gICAgICB0aGlzLndpZGdldERlbGV0ZUV2ZW50LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMud2lkZ2V0TGlicmFyeURvbmVDbGljaylcclxuICAgICAgdGhpcy53aWRnZXRMaWJyYXJ5RG9uZUNsaWNrLnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucmVhcnJhbmdlV2lkZ2V0Q2xpY2spXHJcbiAgICAgIHRoaXMucmVhcnJhbmdlV2lkZ2V0Q2xpY2sudW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipUbyB1cGRhdGUgcG9zaXRpb24vZGltZW50aW9uIG9mIGFsbCB3aWRnZXRzIGluIHRoZSBhcmVhICovXHJcbiAgdXBkYXRlV2lkZ2V0cygpIHtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS51cGRhdGVXaWRnZXRzKHRoaXMuZm9ybWF0V2lkZ2V0RGF0YUZvclBvc2l0aW9uRGV0YWlscyh0aGlzLm1hcEdyaWRzdGVyTGlzdFRvT2JqZWN0KHRoaXMud2lkZ2V0TGlzdCkpLFxyXG4gICAgICB0aGlzLmFwcENvbmZpZykuc3Vic2NyaWJlKHdpZGdldHMgPT4ge1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqVG8gdXBkYXRlIHdpZGdldCBkaW1lbnNpb25zICovXHJcbiAgdXBkYXRlV2lkZ2V0UG9zaXRpb24od2lkZ2V0SW5zdGFuY2VJZDogbnVtYmVyKSB7XHJcblxyXG4gICAgbGV0IHdpZGdldEZpbHRlcmVkTGlzdCA9IFtdO1xyXG4gICAgbGV0IHdpZGdldCA9IHRoaXMud2lkZ2V0TGlzdC5maWx0ZXIoZmlsdGVyZWQgPT4gZmlsdGVyZWQud2lkZ2V0SW5mbyAmJiBmaWx0ZXJlZC53aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQgPT0gd2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHdpZGdldEZpbHRlcmVkTGlzdC5wdXNoKHdpZGdldFswXSk7XHJcbiAgICAgIGxldCB3aWRnZXRMaXN0ID0gdGhpcy5tYXBHcmlkc3Rlckxpc3RUb09iamVjdCh3aWRnZXRGaWx0ZXJlZExpc3QpO1xyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UudXBkYXRlV2lkZ2V0cyh0aGlzLmZvcm1hdFdpZGdldERhdGFGb3JQb3NpdGlvbkRldGFpbHMod2lkZ2V0TGlzdCksIHRoaXMuYXBwQ29uZmlnKS5zdWJzY3JpYmUod2lkZ2V0cyA9PiB7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipUbyByZXN0cmljdCByZXF1ZXN0IHBheWxvYWQgdG8gYmUgb2YgbWluIHNpemUgKHBvc2l0aW9uICYgc2l6ZSBkZXRhaWxzKSAqL1xyXG4gIGZvcm1hdFdpZGdldERhdGFGb3JQb3NpdGlvbkRldGFpbHMod2lkZ2V0SXRlbUxpc3Q6IElXaWRnZXRJbmZvW10pIHtcclxuICAgIGxldCBpdGVtTGlzdDogYW55ID0gW107XHJcbiAgICB3aWRnZXRJdGVtTGlzdC5mb3JFYWNoKGZ1bmN0aW9uICh3aWRnZXRJdGVtKSB7XHJcbiAgICAgIGxldCBpdGVtID0ge30gYXMgSVdpZGdldEluZm87XHJcbiAgICAgIGl0ZW0ud2lkZ2V0SW5zdGFuY2VJZCA9IHdpZGdldEl0ZW0ud2lkZ2V0SW5zdGFuY2VJZDtcclxuICAgICAgaXRlbS5wb3NpdGlvbl94ID0gd2lkZ2V0SXRlbS5wb3NpdGlvbl94O1xyXG4gICAgICBpdGVtLnBvc2l0aW9uX3kgPSB3aWRnZXRJdGVtLnBvc2l0aW9uX3k7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSB3aWRnZXRJdGVtLndpZHRoO1xyXG4gICAgICBpdGVtLmhlaWdodCA9IHdpZGdldEl0ZW0uaGVpZ2h0O1xyXG4gICAgICBpdGVtTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaXRlbUxpc3Q7XHJcbiAgfVxyXG5cclxuICAvKiogVG8gcmV0cmlldmUgd2lkZ2V0cyBiYXNlZCBvbiB1c2VyRGFzaGJvYXJkaWQgYW5kIGFyZWEgbmFtZSAqL1xyXG4gIGxvYWRXaWRnZXRzKHVzZXJEYXNoYm9hcklkOiBudW1iZXIsIGFyZWFLZXk6IHN0cmluZykge1xyXG5cclxuICAgIGxldCB3aWRnZXRJbmZvID0gPElXaWRnZXRJbmZvPntcclxuICAgICAgZGFzaGJvYXJkSWQ6IHVzZXJEYXNoYm9hcklkLnRvU3RyaW5nKCksXHJcbiAgICAgIGRhc2hib2FyZEFyZWFLZXk6IGFyZWFLZXlcclxuICAgIH1cclxuICAgIHRoaXMud2lkZ2V0TGlzdCA9IFtdO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFdpZGdldHNCeURhc2hib2FyZEFyZWEod2lkZ2V0SW5mbywgdGhpcy5hcHBDb25maWcpLnN1YnNjcmliZSh3aWRnZXRzID0+IHtcclxuICAgICAgdGhpcy51c2VyV2lkZ2V0cyA9IHdpZGdldHM7XHJcbiAgICAgIHRoaXMuUEFNV2lkZ2V0cyA9IFtdO1xyXG4gICAgICB3aWRnZXRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgdmFyIHNldHRpbmdzOiBhbnkgPSB1bmRlZmluZWRcclxuICAgICAgICBpZiAoZWxlbWVudC53aWRnZXRTZXR0aW5ncykge1xyXG4gICAgICAgICAgc2V0dGluZ3MgPSBKU09OLnBhcnNlKGVsZW1lbnQud2lkZ2V0U2V0dGluZ3MpO1xyXG4gICAgICAgICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLmlzUEFNV2lkZ2V0KVxyXG4gICAgICAgICAgICB0aGlzLlBBTVdpZGdldHMucHVzaChlbGVtZW50LndpZGdldEluc3RhbmNlSWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2hlY2tQQU1XaWRnZXRzKCk7XHJcblxyXG4gICAgICBpZiAod2lkZ2V0cyAmJiB3aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLndpZGdldExpc3QgPSB0aGlzLm1hcE9iamVjdExpc3RUb0dyaWRzdGVySXRlbUxpc3Qod2lkZ2V0cyk7XHJcbiAgICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICAgICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5IaWRlRGFzaGJvYXJkQmFubmVyLCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93RW1wdHlEYXNoYm9hcmQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuSGlkZURhc2hib2FyZEJhbm5lciwgdGhpcy5zaG93RW1wdHlEYXNoYm9hcmQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKiogVG8gc2V0IEFyZWEoR3JpZHN0ZXIpIGhlaWdodCBkeW5hbWljYWxseSBhcyB3aWRnZXRzIGFyZSBhZGRlZC9yZW1vdmVkICovXHJcbiAgc2V0QXJlYUhlaWdodCgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgaXNNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2JpbGVCcmVha3BvaW50ID4gdGhpcy5ncmlkV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKSB7XHJcbiAgICAgICAgaXNNb2JpbGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBhcmVhU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgbGV0IGFyZWFIZWlnaHQgPSAwO1xyXG4gICAgICBsZXQgY3VyUm93SGVpZ2h0ID0gMDtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcGkpIHtcclxuICAgICAgICBjdXJSb3dIZWlnaHQgPSB0aGlzLm9wdGlvbnMuYXBpLmdldEN1cnJlbnRSb3dIZWlnaHQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zaG93RW1wdHlEYXNoYm9hcmQgPSB0aGlzLnVzZXJXaWRnZXRzLmxlbmd0aCA+IDAgPyBmYWxzZSA6IHRydWU7XHJcblxyXG4gICAgICB0aGlzLndpZGdldExpc3QuZm9yRWFjaCgodCkgPT4ge1xyXG4gICAgICAgIGxldCBjdXJyZW50SGVpZ2h0ID0gdC55ICsgdC5yb3dzO1xyXG4gICAgICAgIGlmIChjdXJyZW50SGVpZ2h0ID4gYXJlYVNjcm9sbEhlaWdodCkge1xyXG4gICAgICAgICAgYXJlYVNjcm9sbEhlaWdodCA9IGN1cnJlbnRIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjdXJSb3dIZWlnaHQgPT0gMCkge1xyXG4gICAgICAgICAgY3VycmVudEhlaWdodCA9IHRoaXMud2lkZ2V0TGlzdFswXS5jdXJSb3dIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHQud2lkZ2V0SW5mby5yb3dIZWlnaHQgPSBjdXJSb3dIZWlnaHQ7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmdyaWRjZWxsSGVpZ2h0ID0gY3VyUm93SGVpZ2h0O1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmFwaSkge1xyXG4gICAgICAgIGFyZWFIZWlnaHQgPSBhcmVhU2Nyb2xsSGVpZ2h0ICogdGhpcy5vcHRpb25zLmFwaS5nZXRDdXJyZW50Um93SGVpZ2h0KCkgKyAxMDA7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGFyZWFTY3JvbGxIZWlnaHRNb2IgPSAwO1xyXG4gICAgICBpZiAoaXNNb2JpbGUpIHtcclxuICAgICAgICBhcmVhU2Nyb2xsSGVpZ2h0TW9iID0gdGhpcy53aWRnZXRMaXN0Lmxlbmd0aCAqIDMwMCArIDIwMDtcclxuICAgICAgICBhcmVhSGVpZ2h0ID0gYXJlYVNjcm9sbEhlaWdodE1vYjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYXJlYUhlaWdodCA8IDYwMCkge1xyXG4gICAgICAgIGFyZWFIZWlnaHQgPSA2MDA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ncmlkaGVpZ2h0ID0gYXJlYUhlaWdodDtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG5cclxuICAvKiogVG8gcmVtb3ZlIGEgd2lkZ2V0IGluc3RhbmNlIGZyb20gZGFzaGJvYXJkIGFuZCB0byBzYXZlIGluZm8gaW4gZGF0YWJhc2UgKi9cclxuICBkZWxldGVXaWRnZXQod2lkZ2V0SW5zdGFuY2VJZDogYW55LCBpc2FsZXJ0RGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgbGV0IGdyaWRzdGVySXRlbSA9IHRoaXMud2lkZ2V0TGlzdC5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgcmV0dXJuIGl0ZW0ud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkID09PSB3aWRnZXRJbnN0YW5jZUlkO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoZ3JpZHN0ZXJJdGVtLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IHdpZGdldCA9IHRoaXMudXNlcldpZGdldHMuZmlsdGVyKChpdGVtKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0ud2lkZ2V0SW5zdGFuY2VJZCA9PT0gd2lkZ2V0SW5zdGFuY2VJZDtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh3aWRnZXQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMudXNlcldpZGdldHMuc3BsaWNlKHRoaXMudXNlcldpZGdldHMuaW5kZXhPZih3aWRnZXRbMF0pLCAxKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuUEFNV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdmFyIGluZHggPSB0aGlzLlBBTVdpZGdldHMuaW5kZXhPZih3aWRnZXRJbnN0YW5jZUlkKTtcclxuICAgICAgICBpZiAoaW5keCA+IC0xKVxyXG4gICAgICAgICAgdGhpcy5QQU1XaWRnZXRzLnNwbGljZShpbmR4LCAxKTtcclxuICAgICAgICB0aGlzLmNoZWNrUEFNV2lkZ2V0cygpO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgdGhpcy53aWRnZXRMaXN0LnNwbGljZSh0aGlzLndpZGdldExpc3QuaW5kZXhPZihncmlkc3Rlckl0ZW1bMF0pLCAxKTtcclxuICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICAgIGlmICghaXNhbGVydERpc2FibGVkKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmllci5ub3RpZnkoJ3N1Y2Nlc3MnLCBcIiBcIiArIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5XaWRnZXR0ZXh0JykgKyBcIiBcIiArIGdyaWRzdGVySXRlbVswXS53aWRnZXRJbmZvLndpZGdldFRpdGxlICsgXCIgXCIgKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uZGVsZXRlZFN1Y2Nlc2Z1bGx5JykgKyBcIiBcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0VtcHR5RGFzaGJvYXJkID0gdGhpcy51c2VyV2lkZ2V0cy5sZW5ndGggPiAwID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgaWYgKHRoaXMuc2hvd0VtcHR5RGFzaGJvYXJkID09IHRydWUpIHtcclxuICAgICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5IaWRlRGFzaGJvYXJkQmFubmVyLCB0aGlzLnNob3dFbXB0eURhc2hib2FyZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipUbyByZWFycmFuZ2Ugd2lkZ2V0cyBwb3NpdGlvbiBpbiB0aGUgZGFzaGJvYXJkLCBjb21wYWN0TGVmdCZVcCxjb21wYWN0TGVmdCxjb21wYWN0VXAsZXRjKi9cclxuICByZWFycmFuZ2VXaWRnZXRzKCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJXaWRnZXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMudXNlcldpZGdldHNbaV0ucG9zaXRpb25feCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcldpZGdldHNbaV0ucG9zaXRpb25feSA9IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLndpZGdldExpc3QgPSB0aGlzLm1hcE9iamVjdExpc3RUb0dyaWRzdGVySXRlbUxpc3QodGhpcy51c2VyV2lkZ2V0cyk7XHJcbiAgICBpZiAodGhpcy53aWRnZXRMaXN0Lmxlbmd0aCA+IDApXHJcbiAgICAgIHRoaXMudXBkYXRlV2lkZ2V0UG9zaXRpb24odGhpcy53aWRnZXRMaXN0WzBdLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipUbyBhZGQgd2lkZ2V0IGluc3RhbmNlIHRvIHRoZSBkYXRhYmFzZSB3aXRoIHRoZSBuZXh0IGF2YWlsYWJsZSBwb3NpdGlvbiBhbmQgdG8gbWFrZSBjaGFuZ2VzIGluXHJcbiAgICogZGFzaGJvYXJkIGFyZWEuXHJcbiAgICovXHJcbiAgYWRkV2lkZ2V0KGRhdGE6IGFueSkge1xyXG4gICAgZGF0YS5oZWlnaHQgPSB0aGlzLndpZGdldEhlaWdodDtcclxuICAgIGRhdGEud2lkdGggPSB0aGlzLndpZGdldFdpZHRoO1xyXG4gICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5IaWRlRGFzaGJvYXJkQmFubmVyLCBmYWxzZSk7XHJcbiAgICBpZiAoZGF0YS53aWRnZXRTZXR0aW5ncykge1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGEud2lkZ2V0U2V0dGluZ3MgPT09ICdzdHJpbmcnKVxyXG4gICAgICAgIGRhdGEud2lkZ2V0U2V0dGluZ3MgPSBKU09OLnBhcnNlKGRhdGEud2lkZ2V0U2V0dGluZ3MpO1xyXG5cclxuICAgICAgaWYgKGRhdGEud2lkZ2V0U2V0dGluZ3MuZGVmYXVsdENvbHMpIHtcclxuICAgICAgICBkYXRhLndpZHRoID0gZGF0YS53aWRnZXRTZXR0aW5ncy5kZWZhdWx0Q29scztcclxuICAgICAgfVxyXG4gICAgICBpZiAoZGF0YS53aWRnZXRTZXR0aW5ncy5kZWZhdWx0Um93cykge1xyXG4gICAgICAgIGRhdGEuaGVpZ2h0ID0gZGF0YS53aWRnZXRTZXR0aW5ncy5kZWZhdWx0Um93cztcclxuICAgICAgfVxyXG4gICAgICBkYXRhLndpZGdldFNldHRpbmdzID0gbnVsbDtcclxuICAgIH1cclxuICAgIGRhdGEgPSB0aGlzLnNldFBvc2l0aW9ucyhkYXRhKTtcclxuXHJcbiAgICAvKiogdG8gZmluZCB0aGUgYXZhaWxhYmxlIHBvc2l0aW9uIGluIGdyaWRzdGVyLCB0ZW1wIGNvbW1lbnRpbmcgdGhlIGNvZGUtcmV0dXJuaW5nIGhpZ2hlciB5IHZhbHVlIHRoYW4gbm9ybWFsICovXHJcbiAgICBkYXRhLmRhc2hib2FyZEFyZWFLZXkgPSB0aGlzLmFyZWFLZXk7XHJcbiAgICBkYXRhLmRhc2hib2FyZElkID0gdGhpcy51c2VyRGFzaGJvYXJkSWQ7XHJcbiAgICB0aGlzLm5neFNlcnZpY2Uuc3RhcnQoKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5hZGRXaWRnZXQoZGF0YSwgdGhpcy5hcHBDb25maWcpLnN1YnNjcmliZSh3aWRnZXQgPT4ge1xyXG4gICAgICB0aGlzLnVzZXJXaWRnZXRzLnB1c2god2lkZ2V0KTtcclxuICAgICAgbGV0IGdyaWRzdGVySXRlbSA9IHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuZ2V0R3JpZHN0ZXJJdGVtKHdpZGdldCk7XHJcbiAgICAgIHRoaXMud2lkZ2V0TGlzdC5wdXNoKGdyaWRzdGVySXRlbSk7XHJcbiAgICAgIHRoaXMuc2V0QXJlYUhlaWdodCgpO1xyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcGkpIHtcclxuICAgICAgICBsZXQgY3VyUm93SGVpZ2h0OiBudW1iZXIgPSBOdW1iZXIodGhpcy5vcHRpb25zLmFwaS5nZXRDdXJyZW50Um93SGVpZ2h0KCkpO1xyXG4gICAgICAgIGlmIChjdXJSb3dIZWlnaHQgPiAwKSB7XHJcbiAgICAgICAgICB3aWRnZXQucm93SGVpZ2h0ID0gY3VyUm93SGVpZ2h0O1xyXG4gICAgICAgICAgdGhpcy5ncmlkY2VsbEhlaWdodCA9IGN1clJvd0hlaWdodDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdmFyIHdpZGdldEluc3RhbmNlSWQgPSAwO1xyXG4gICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC53aWRnZXRJbnN0YW5jZUlkKSB7XHJcbiAgICAgICAgd2lkZ2V0SW5zdGFuY2VJZCA9IHdpZGdldC53aWRnZXRJbnN0YW5jZUlkO1xyXG4gICAgICAgIC8qKlRvIHNhdmUgYWRkZWQgd2lkZ2V0IHBvc2l0aW9uIGluIGRiICovXHJcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuSXNEZXNrdG9wVmlldykge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlV2lkZ2V0UG9zaXRpb24od2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHdpZGdldC5zZXR0aW5ncyAmJiB3aWRnZXQuc2V0dGluZ3MuaXNQQU1XaWRnZXQpIHtcclxuICAgICAgICB0aGlzLlBBTVdpZGdldHMucHVzaCh3aWRnZXQud2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICAgICAgdGhpcy5jaGVja1BBTVdpZGdldHMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMucHVibGlzaChSQUV2ZW50LldpZGdldEFkZGVkLCB3aWRnZXQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFBvc2l0aW9ucyhkYXRhOiBhbnkpIHtcclxuICAgIGRhdGEucG9zaXRpb25feCA9IDA7XHJcbiAgICBkYXRhLnBvc2l0aW9uX3kgPSAwO1xyXG4gICAgaWYgKCF0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLklzRGVza3RvcFZpZXcpIHtcclxuICAgICAgaWYgKHRoaXMudXNlcldpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCB3aWRnZXQgPSB0aGlzLnVzZXJXaWRnZXRzW3RoaXMudXNlcldpZGdldHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgaWYgKHdpZGdldC5wb3NpdGlvbl94ICsgd2lkZ2V0LndpZHRoID4gKHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UubWF4Q29sc0Rlc2t0b3AgLyAyKSkge1xyXG4gICAgICAgICAgZGF0YS5wb3NpdGlvbl95ID0gd2lkZ2V0LnBvc2l0aW9uX3kgKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGRhdGEucG9zaXRpb25feSA9IHdpZGdldC5wb3NpdGlvbl95O1xyXG4gICAgICAgICAgZGF0YS5wb3NpdGlvbl94ID0gdGhpcy5yZXNwb25zaXZlU2VydmljZS5tYXhDb2xzRGVza3RvcCAtICh3aWRnZXQucG9zaXRpb25feCArIHdpZGdldC53aWR0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIC8qKiBUbyBhZGQgd2lkZ2V0IHRvIGN1cnJlbnQgd2lkZ2V0IGxpc3QgLGludm9rZWQgZnJvbSBjb3B5IHdpZGdldCB3aW5kb3cqL1xyXG4gIGNvcHlXaWRnZXQoZGF0YTogYW55KSB7XHJcbiAgICBkYXRhID0gdGhpcy5zZXRQb3NpdGlvbnMoZGF0YSk7XHJcbiAgICBpZiAoIXRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuSXNEZXNrdG9wVmlldykge1xyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UudXBkYXRlV2lkZ2V0cyh0aGlzLmZvcm1hdFdpZGdldERhdGFGb3JQb3NpdGlvbkRldGFpbHMoW2RhdGFdKSwgdGhpcy5hcHBDb25maWcpLnN1YnNjcmliZSh3aWRnZXRzID0+IHtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJXaWRnZXRzLnB1c2goZGF0YSk7XHJcbiAgICBsZXQgZ3JpZHN0ZXJJdGVtID0gdGhpcy5yZXNwb25zaXZlU2VydmljZS5nZXRHcmlkc3Rlckl0ZW0oZGF0YSk7XHJcbiAgICB0aGlzLndpZGdldExpc3QucHVzaChncmlkc3Rlckl0ZW0pO1xyXG4gICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICBpZiAoZGF0YS5zZXR0aW5ncyAmJiBkYXRhLnNldHRpbmdzLmlzUEFNV2lkZ2V0KSB7XHJcbiAgICAgIHRoaXMuUEFNV2lkZ2V0cy5wdXNoKGRhdGEud2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICAgIHRoaXMuY2hlY2tQQU1XaWRnZXRzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtYXBPYmplY3RMaXN0VG9Hcmlkc3Rlckl0ZW1MaXN0KHdpZGdldExpc3Q6IEFycmF5PElXaWRnZXRJbmZvPikge1xyXG4gICAgbGV0IHdpZGdldEFycmF5ID0gQXJyYXk8R3JpZHN0ZXJJdGVtPigpO1xyXG4gICAgd2lkZ2V0TGlzdC5mb3JFYWNoKHdpZGdldCA9PiB7XHJcbiAgICAgIHdpZGdldEFycmF5LnB1c2godGhpcy5yZXNwb25zaXZlU2VydmljZS5nZXRHcmlkc3Rlckl0ZW0od2lkZ2V0KSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB3aWRnZXRBcnJheTtcclxuICB9XHJcblxyXG4gIG1hcEdyaWRzdGVySXRlbVRvT2JqZWN0KHdpZGdldEl0ZW06IEdyaWRzdGVySXRlbSkge1xyXG4gICAgbGV0IHdpZGdldDogSVdpZGdldEluZm87XHJcbiAgICB3aWRnZXQgPSB3aWRnZXRJdGVtLndpZGdldEluZm87XHJcbiAgICB3aWRnZXQuaGVpZ2h0ID0gd2lkZ2V0SXRlbS5yb3dzO1xyXG4gICAgd2lkZ2V0LndpZHRoID0gd2lkZ2V0SXRlbS5jb2xzO1xyXG4gICAgd2lkZ2V0LnBvc2l0aW9uX3ggPSB3aWRnZXRJdGVtLng7XHJcbiAgICB3aWRnZXQucG9zaXRpb25feSA9IHdpZGdldEl0ZW0ueTtcclxuICAgIHdpZGdldC5yb3dIZWlnaHQgPSB3aWRnZXRJdGVtLmN1clJvd0hlaWdodDtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBtYXBHcmlkc3Rlckxpc3RUb09iamVjdCh3aWRnZXRJdGVtTGlzdDogQXJyYXk8R3JpZHN0ZXJJdGVtPikge1xyXG4gICAgbGV0IHdpZGdldExpc3RBcnJheSA9IEFycmF5PElXaWRnZXRJbmZvPigpO1xyXG4gICAgd2lkZ2V0SXRlbUxpc3QuZm9yRWFjaCh3aWRnZXQgPT4ge1xyXG4gICAgICB3aWRnZXRMaXN0QXJyYXkucHVzaCh0aGlzLm1hcEdyaWRzdGVySXRlbVRvT2JqZWN0KHdpZGdldCkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gd2lkZ2V0TGlzdEFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZE5ld1dpZGdldCgpIHtcclxuICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuQWRkTmV3V2lkZ2V0VG9EYXNoYm9hcmQsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZUFwcGxpZWRGaWx0ZXJzKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5VcGRhdGVBcHBsZWRGaXRlckZvckluYXBwbGljYWJsZUZpbHRlciwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tQQU1XaWRnZXRzKCkge1xyXG4gICAgaWYgKHRoaXMuUEFNV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuU2hvd0luYXBwbGljYWJsZUZpbHRlck1lc3NhZ2UsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuU2hvd0luYXBwbGljYWJsZUZpbHRlck1lc3NhZ2UsIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59Il19
|
|
506
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEuZGFzaGJvYXJkLmFyZWEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2NobmVpZGVyZXNzL2Rhc2hib2FyZGZyYW1ld29yay8iLCJzb3VyY2VzIjpbImxpYi9yYS1kYXNoYm9hcmQtYXJlYS9yYS5kYXNoYm9hcmQuYXJlYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pLLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBUWxGO0lBaUNFLHlCQUFvQixnQkFBb0MsRUFDOUMsTUFBYyxFQUNkLFVBQThCLEVBQzlCLGdCQUFvQyxFQUNwQyxRQUF5QixFQUN6QixpQkFBK0MsRUFDL0MsaUJBQXNDO1FBTjVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFDOUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFDcEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE4QjtRQUMvQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBckN6QyxlQUFVLEdBQUcsS0FBSyxFQUFnQixDQUFDO1FBRW5DLGVBQVUsR0FBVyxHQUFHLENBQUM7UUFDekIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0IsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFDeEIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQU9wQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNqQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQVFkLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQzFCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBR3JDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFXbkQsQ0FBQztJQUVELGtDQUFRLEdBQVI7UUFBQSxpQkFrQ0M7UUFqQ0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNoRixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFDLFNBQVM7WUFDakQsSUFBSSxLQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUN6RSxLQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN2RCxLQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFDckIsVUFBVSxDQUFDO29CQUNULEtBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUM5QixLQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxLQUFJLENBQUMsV0FBVyxFQUFFO3dCQUNwQixLQUFJLENBQUMsVUFBVSxHQUFHLEtBQUksQ0FBQywrQkFBK0IsQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ3pFLFVBQVUsQ0FBQzs0QkFDVCxLQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ3ZCLENBQUMsQ0FBQyxDQUFDO3FCQUNKO3lCQUNJO3dCQUNILEtBQUksQ0FBQyxXQUFXLENBQUMsS0FBSSxDQUFDLGVBQWUsRUFBRSxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3REO29CQUNELEtBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxLQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNyQyxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLFVBQVUsQ0FBQztvQkFDVCxLQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBQyxJQUFpQjt3QkFDdEYsS0FBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtvQkFDdkYsQ0FBQyxDQUFDLENBQUM7b0JBRUgsS0FBSSxDQUFDLGNBQWMsR0FBRyxLQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO29CQUM3RCxLQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSSxDQUFDLFVBQVUsQ0FBQztvQkFDbkMsS0FBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDVDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFDQUFXLEdBQVgsVUFBWSxPQUFzQjtRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNqRixJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN0RSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFOUIsSUFBSSxPQUFPLENBQUMsbUJBQW1CLElBQUksT0FBTyxDQUFDLG1CQUFtQixDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFO1lBQ3hILElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUdELDJCQUEyQjtJQUNwQixnREFBc0IsR0FBN0I7UUFBQSxpQkFtQkM7UUFsQkMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLHNFQUFzRTtZQUN0RSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUN4RSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4RyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxVQUFDLFFBQWE7Z0JBQ3hDLElBQUksS0FBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7b0JBQ3BCLEtBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztpQkFDOUQ7WUFDSCxDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixHQUFHLFVBQUMsSUFBa0I7Z0JBQ25ELElBQUksS0FBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRTtvQkFDeEMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7d0JBQ3ZELEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7cUJBQzdEO2lCQUNGO2dCQUNELEtBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsdURBQTZCLEdBQTdCO1FBQUEsaUJBZ0NDO1FBL0JDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBQyxVQUFVO1lBQ3JHLEtBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUNkLEtBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFDLFVBQVU7WUFDL0YsS0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQ2QsS0FBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBQyxDQUFDO1lBQzNGLEtBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUNkLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFDLENBQUM7WUFDbkcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQ2QsS0FBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFDLFVBQVU7WUFDcEgsS0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQ2QsSUFBSSxVQUFVLEVBQUU7b0JBQ2QsS0FBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDN0M7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaURBQXVCLEdBQXZCLFVBQXdCLFVBQWUsRUFBRSxLQUFhO1FBQ3BELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLFFBQVEsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUMvQixPQUFPO2FBQ0o7WUFDSCxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7Z0JBQ2QsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDekMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUMzRDtpQkFDSTtnQkFDSCxVQUFVLENBQUM7b0JBQ1QsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDekMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDNUQsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ1Y7U0FDRjtJQUNILENBQUM7SUFFRCxxQ0FBVyxHQUFYO1FBQ0UsSUFBSSxJQUFJLENBQUMsY0FBYztZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLGNBQWM7WUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxpQkFBaUI7WUFDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZDLElBQUksSUFBSSxDQUFDLHNCQUFzQjtZQUM3QixJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFNUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CO1lBQzNCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUU1QyxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELHVDQUFhLEdBQWI7UUFDRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQ3hILElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBQSxPQUFPO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLDhDQUFvQixHQUFwQixVQUFxQixnQkFBd0I7UUFFM0MsSUFBSSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBQSxRQUFRLElBQUksT0FBQSxRQUFRLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLEVBQS9FLENBQStFLENBQUMsQ0FBQztRQUNqSSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFBLE9BQU87WUFDMUgsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSw0REFBa0MsR0FBbEMsVUFBbUMsY0FBNkI7UUFDOUQsSUFBSSxRQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ3ZCLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxVQUFVO1lBQ3pDLElBQUksSUFBSSxHQUFHLEVBQWlCLENBQUM7WUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxpRUFBaUU7SUFDakUscUNBQVcsR0FBWCxVQUFZLGNBQXNCLEVBQUUsT0FBZTtRQUFuRCxpQkE4QkM7UUE1QkMsSUFBSSxVQUFVLEdBQWdCO1lBQzVCLFdBQVcsRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFO1lBQ3RDLGdCQUFnQixFQUFFLE9BQU87U0FDMUIsQ0FBQTtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFBLE9BQU87WUFDM0YsS0FBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7WUFDM0IsS0FBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFBLE9BQU87Z0JBQ3JCLElBQUksUUFBUSxHQUFRLFNBQVMsQ0FBQTtnQkFDN0IsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFO29CQUMxQixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzlDLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxXQUFXO3dCQUNsQyxLQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDbEQ7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILEtBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUV2QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDakMsS0FBSSxDQUFDLFVBQVUsR0FBRyxLQUFJLENBQUMsK0JBQStCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hFLEtBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsS0FBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDdEU7aUJBQ0k7Z0JBQ0gsS0FBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztnQkFDL0IsS0FBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDeEY7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCw0RUFBNEU7SUFDNUUsdUNBQWEsR0FBYjtRQUFBLGlCQXdDQztRQXZDQyxVQUFVLENBQUM7WUFDVCxJQUFJLFFBQVEsR0FBWSxLQUFLLENBQUM7WUFDOUIsSUFBSSxLQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixHQUFHLEtBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRTtnQkFDOUUsUUFBUSxHQUFHLElBQUksQ0FBQzthQUNqQjtZQUNELElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7WUFDckIsSUFBSSxLQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDcEIsWUFBWSxHQUFHLEtBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUM7YUFDdkQ7WUFFRCxLQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUVyRSxLQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFDLENBQUM7Z0JBQ3hCLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDakMsSUFBSSxhQUFhLEdBQUcsZ0JBQWdCLEVBQUU7b0JBQ3BDLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztpQkFDbEM7Z0JBQ0QsSUFBSSxZQUFZLElBQUksQ0FBQyxFQUFFO29CQUNyQixhQUFhLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7aUJBQ2pEO2dCQUNELENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztZQUNILEtBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO1lBQ25DLElBQUksS0FBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLFVBQVUsR0FBRyxnQkFBZ0IsR0FBRyxLQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEdBQUcsQ0FBQzthQUM5RTtZQUNELElBQUksbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLElBQUksUUFBUSxFQUFFO2dCQUNaLG1CQUFtQixHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQ3pELFVBQVUsR0FBRyxtQkFBbUIsQ0FBQzthQUNsQztZQUNELElBQUksVUFBVSxHQUFHLEdBQUcsRUFBRTtnQkFDcEIsVUFBVSxHQUFHLEdBQUcsQ0FBQzthQUNsQjtZQUNELEtBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUdELDhFQUE4RTtJQUM5RSxzQ0FBWSxHQUFaLFVBQWEsZ0JBQXFCLEVBQUUsZUFBZ0M7UUFBaEMsZ0NBQUEsRUFBQSx1QkFBZ0M7UUFDbEUsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBQyxJQUFJO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsS0FBSyxnQkFBZ0IsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBQyxJQUFJO2dCQUN4QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxnQkFBZ0IsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ2pFO1lBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzlCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3JELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN4QjtZQUdELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsR0FBRyxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQzthQUN2TjtTQUNGO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxFQUFFO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3hGO0lBQ0gsQ0FBQztJQUVELDZGQUE2RjtJQUM3RiwwQ0FBZ0IsR0FBaEI7UUFBQSxpQkFZQztRQVhDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RSxVQUFVLENBQUM7WUFDVCxLQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQ0FBUyxHQUFULFVBQVUsSUFBUztRQUFuQixpQkFtREM7UUFsREMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssUUFBUTtnQkFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUV4RCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO2FBQzlDO1lBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQzthQUMvQztZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0IsZ0hBQWdIO1FBQ2hILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBQSxNQUFNO1lBQ3BFLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlCLElBQUksWUFBWSxHQUFHLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEUsS0FBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbkMsS0FBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRXJCLElBQUksS0FBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLElBQUksWUFBWSxHQUFXLE1BQU0sQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7Z0JBQzFFLElBQUksWUFBWSxHQUFHLENBQUMsRUFBRTtvQkFDcEIsTUFBTSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7b0JBQ2hDLEtBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO2lCQUNwQzthQUNGO1lBQ0QsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7WUFDekIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLGdCQUFnQixFQUFFO2dCQUNyQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzNDLHlDQUF5QztnQkFDekMsSUFBSSxLQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFO29CQUN4QyxVQUFVLENBQUM7d0JBQ1QsS0FBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQzlDLENBQUMsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7WUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xELEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUM5QyxLQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDeEI7WUFDRCxLQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sc0NBQVksR0FBcEIsVUFBcUIsSUFBUztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRTtZQUN6QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUNsRixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO2lCQUN6QztxQkFDSTtvQkFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM5RjthQUNGO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwyRUFBMkU7SUFDM0Usb0NBQVUsR0FBVixVQUFXLElBQVM7UUFDbEIsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUU7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBQSxPQUFPO1lBQ3RILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7WUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELHlEQUErQixHQUEvQixVQUFnQyxVQUE4QjtRQUE5RCxpQkFNQztRQUxDLElBQUksV0FBVyxHQUFHLEtBQUssRUFBZ0IsQ0FBQztRQUN4QyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQUEsTUFBTTtZQUN2QixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpREFBdUIsR0FBdkIsVUFBd0IsVUFBd0I7UUFDOUMsSUFBSSxNQUFtQixDQUFDO1FBQ3hCLE1BQU0sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUNoQyxNQUFNLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDL0IsTUFBTSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7UUFDM0MsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGlEQUF1QixHQUF2QixVQUF3QixjQUFtQztRQUEzRCxpQkFNQztRQUxDLElBQUksZUFBZSxHQUFHLEtBQUssRUFBZSxDQUFDO1FBQzNDLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBQSxNQUFNO1lBQzNCLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRU0sc0NBQVksR0FBbkI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sOENBQW9CLEdBQTNCLFVBQTRCLElBQVM7UUFDbkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsc0NBQXNDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVNLHlDQUFlLEdBQXRCO1FBQ0UsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDL0U7YUFDSTtZQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2hGO0lBQ0gsQ0FBQzs7Z0JBdmNxQyxrQkFBa0I7Z0JBQ3RDLE1BQU07Z0JBQ0Ysa0JBQWtCO2dCQUNaLGtCQUFrQjtnQkFDMUIsZUFBZTtnQkFDTiw0QkFBNEI7Z0JBQzVCLG1CQUFtQjs7SUFsQnBCO1FBQTNCLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQzs7NERBQXlCO0lBQ2pDO1FBQWxCLEtBQUssQ0FBQyxVQUFVLENBQUM7O29EQUFpQjtJQUNYO1FBQXZCLEtBQUssQ0FBQyxlQUFlLENBQUM7O3lEQUFtQjtJQUN0QjtRQUFuQixLQUFLLENBQUMsV0FBVyxDQUFDOzBDQUFzQixtQkFBbUI7Z0VBQUM7SUFDckM7UUFBdkIsS0FBSyxDQUFDLGVBQWUsQ0FBQzs7eURBQTBCO0lBQzFCO1FBQXRCLEtBQUssQ0FBQyxjQUFjLENBQUM7O3dEQUF5QjtJQUMxQjtRQUFwQixLQUFLLENBQUMsWUFBWSxDQUFDOztzREFBdUI7SUFDbEI7UUFBeEIsS0FBSyxDQUFDLGdCQUFnQixDQUFDOzswREFBOEI7SUFDNUM7UUFBVCxNQUFNLEVBQUU7O2dFQUEwQztJQUVOO1FBQTVDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7MENBQWMsVUFBVTt3REFBQztJQS9CMUQsZUFBZTtRQUwzQixTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLHk0REFBdUM7O1NBRXhDLENBQUM7aURBa0NzQyxrQkFBa0I7WUFDdEMsTUFBTTtZQUNGLGtCQUFrQjtZQUNaLGtCQUFrQjtZQUMxQixlQUFlO1lBQ04sNEJBQTRCO1lBQzVCLG1CQUFtQjtPQXZDckMsZUFBZSxDQTBlM0I7SUFBRCxzQkFBQztDQUFBLEFBMWVELElBMGVDO1NBMWVZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dCwgT25Jbml0LCBDb21wb25lbnQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgTmdab25lLCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgR3JpZHN0ZXJDb25maWcsIEdyaWRzdGVySXRlbSB9IGZyb20gJy4uLy4uL2dyaWRzdGVyL2luZGV4JztcclxuaW1wb3J0IHsgUmFEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi4vcmEuZGFzaGJvYXJkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSQURhc2hib2FyZEV2ZW50QnVzIH0gZnJvbSAnLi4vcmEuZGFzaGJhcmQuZXZlbnQuYnVzJztcclxuaW1wb3J0IHsgUkFFdmVudCB9IGZyb20gJy4uL3JhLmV2ZW50LmVudW0nO1xyXG5pbXBvcnQgeyBJV2lkZ2V0SW5mbywgSUFwcENvbmZpZywgSUJ1bGtBY3Rpb24gfSBmcm9tICdAc2NobmVpZGVyZXNzL3dpZGdldGZyYW1ld29yayc7XHJcbmltcG9ydCB7IE5neFVpTG9hZGVyU2VydmljZSB9IGZyb20gJ25neC11aS1sb2FkZXInO1xyXG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW5vdGlmaWVyJztcclxuaW1wb3J0IHsgUkFUcmFuc2xhdGVTZXJ2aWNlLCBSQVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHNjaG5laWRlcmVzcy9yYS1jb21tb24nO1xyXG5pbXBvcnQgeyBSQURhc2hib2FyZFJlc3BvbnNpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcmEuZGFzaGJvYXJkLnJlc3BvbnNpdmUuc2VydmljZSc7XHJcbmltcG9ydCB7IElEYXNoYm9hcmRJbmZvIH0gZnJvbSAnQHNjaG5laWRlcmVzcy93aWRnZXRmcmFtZXdvcmsnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdyYS1kYXNoYm9hcmQtYXJlYScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JhLmRhc2hib2FyZC5hcmVhLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JhLmRhc2hib2FyZC5hcmVhLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSQURhc2hib2FyZEFyZWEgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgcHVibGljIHdpZGdldExpc3QgPSBBcnJheTxHcmlkc3Rlckl0ZW0+KCk7XHJcbiAgcHVibGljIG9wdGlvbnM6IEdyaWRzdGVyQ29uZmlnO1xyXG4gIHB1YmxpYyBncmlkaGVpZ2h0OiBudW1iZXIgPSAzMDA7XHJcbiAgcHVibGljIGdyaWRjZWxsSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyB1c2VyV2lkZ2V0czogYW55W10gPSBbXTtcclxuICBwdWJsaWMgUEFNV2lkZ2V0czogYW55ID0gW107XHJcblxyXG4gIHByaXZhdGUgY29uaWZnQWRkQ2xpY2s6IGFueTtcclxuICBwcml2YXRlIHJlYXJyYW5nZVdpZGdldENsaWNrOiBhbnk7XHJcbiAgcHJpdmF0ZSB3aWRnZXREZWxldGVFdmVudDogYW55O1xyXG4gIHByaXZhdGUgd2lkZ2V0QWRkRXZlbnQ6IGFueTtcclxuICBwcml2YXRlIHdpZGdldExpYnJhcnlEb25lQ2xpY2s6IGFueTtcclxuICBwcml2YXRlIGlzV2lkZ2V0TG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGRvbVJlc2l6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0VtcHR5RGFzaGJvYXJkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlzV2lkZ2V0TWdtbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbGFzdFZpZXdUeXBlOiBzdHJpbmc7XHJcbiAgcHVibGljIGJ1bGtBY3Rpb25EYXRhOiBJQnVsa0FjdGlvbjtcclxuXHJcbiAgQElucHV0KCd1c2VyLWRhc2hib2FyZC1pZCcpIHVzZXJEYXNoYm9hcmRJZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgnYXJlYS1rZXknKSBhcmVhS2V5OiBzdHJpbmc7XHJcbiAgQElucHV0KCdnbG9iYWwtZmlsdGVyJykgZ2xvYmFsRmlsdGVyOiBhbnk7XHJcbiAgQElucHV0KCdldmVudC1idXMnKSByYURhc2hib2FyZEV2ZW50QnVzOiBSQURhc2hib2FyZEV2ZW50QnVzO1xyXG4gIEBJbnB1dCgnd2lkZ2V0LWhlaWdodCcpIHdpZGdldEhlaWdodDogbnVtYmVyID0gMjtcclxuICBASW5wdXQoJ3dpZGdldC13aWR0aCcpIHdpZGdldFdpZHRoOiBudW1iZXIgPSA0O1xyXG4gIEBJbnB1dCgnYXBwLWNvbmZpZycpIGFwcENvbmZpZzogSUFwcENvbmZpZztcclxuICBASW5wdXQoJ2Rhc2hib2FyZC1pbmZvJykgZGFzaGJvYXJkSW5mbzogSURhc2hib2FyZEluZm9cclxuICBAT3V0cHV0KCkgaGlkZURhc2hib2FyZEJhbm5lciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZ3JpZFdyYXBwZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgZ3JpZFdyYXBwZXI6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGFzaGJvYXJkU2VydmljZTogUmFEYXNoYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgbmd4U2VydmljZTogTmd4VWlMb2FkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBSQVRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWVyOiBOb3RpZmllclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3BvbnNpdmVTZXJ2aWNlOiBSQURhc2hib2FyZFJlc3BvbnNpdmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uU2VydmljZTogUkFQZXJtaXNzaW9uU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzV2lkZ2V0TWdtbnQgPSB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24oJ3JhLndpZGdldG1hbmFnZW1lbnQnKTtcclxuICAgIHRoaXMuaW5pdGlhdGVHcmlkc3RlckNvbmZpZygpO1xyXG4gICAgdGhpcy5sYXN0Vmlld1R5cGUgPSB0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLklzRGVza3RvcFZpZXcgPyAnZGVza3RvcCcgOiAnbW9iaWxlJztcclxuICAgIHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UucmVzaXplZC5zdWJzY3JpYmUoKGlzRGVza3RvcCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5sYXN0Vmlld1R5cGUgIT0gKGlzRGVza3RvcCA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnKSB8fCAhaXNEZXNrdG9wKSB7XHJcbiAgICAgICAgdGhpcy5sYXN0Vmlld1R5cGUgPSAoaXNEZXNrdG9wID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScpO1xyXG4gICAgICAgIHRoaXMud2lkZ2V0TGlzdCA9IFtdO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pbml0aWF0ZUdyaWRzdGVyQ29uZmlnKCk7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuYXBpLm9wdGlvbnNDaGFuZ2VkKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy51c2VyV2lkZ2V0cykge1xyXG4gICAgICAgICAgICB0aGlzLndpZGdldExpc3QgPSB0aGlzLm1hcE9iamVjdExpc3RUb0dyaWRzdGVySXRlbUxpc3QodGhpcy51c2VyV2lkZ2V0cyk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0QXJlYUhlaWdodCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRXaWRnZXRzKHRoaXMudXNlckRhc2hib2FyZElkLCB0aGlzLmFyZWFLZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kb21SZXNpemVkID0gIXRoaXMuZG9tUmVzaXplZDtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5zdWJzY3JpYmUoUkFFdmVudC5CdWxrQWN0aW9uQ2xpY2spLnN1YnNjcmliZSgoZGF0YTogSUJ1bGtBY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5idWxrQWN0aW9uRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpOyAvLyBUbyBjcmVhdGUgYSBuZXcgcmVmZXJlbmNlO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5ncmlkY2VsbEhlaWdodCA9IHRoaXMub3B0aW9ucy5hcGkuZ2V0Q3VycmVudFJvd0hlaWdodCgpO1xyXG4gICAgICAgICAgdGhpcy5kb21SZXNpemVkID0gIXRoaXMuZG9tUmVzaXplZDtcclxuICAgICAgICAgIHRoaXMuc2V0QXJlYUhlaWdodCgpO1xyXG4gICAgICAgIH0sIDEwMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1dpZGdldE1nbW50ID0gdGhpcy5wZXJtaXNzaW9uU2VydmljZS5oYXNQZXJtaXNzaW9uKCdyYS53aWRnZXRtYW5hZ2VtZW50Jyk7XHJcbiAgICBpZiAodGhpcy5yYURhc2hib2FyZEV2ZW50QnVzICYmIHRoaXMuYXBwQ29uZmlnICYmICF0aGlzLmlzV2lkZ2V0TG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuaXNXaWRnZXRMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmxvYWRXaWRnZXRzKHRoaXMudXNlckRhc2hib2FyZElkLCB0aGlzLmFyZWFLZXkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbml0aWF0ZUdyaWRzdGVyQ29uZmlnKCk7XHJcblxyXG4gICAgaWYgKGNoYW5nZXMucmFEYXNoYm9hcmRFdmVudEJ1cyAmJiBjaGFuZ2VzLnJhRGFzaGJvYXJkRXZlbnRCdXMuY3VycmVudFZhbHVlICE9IGNoYW5nZXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wcmV2aW91c1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaW5pdGl0YXRlRXZlbnRCdXNTdWJzY3JpdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipUbyBzZXQgR3JpZHN0ZXJDb25maWcgKi9cclxuICBwdWJsaWMgaW5pdGlhdGVHcmlkc3RlckNvbmZpZygpIHtcclxuICAgIGlmICh0aGlzLmRhc2hib2FyZEluZm8pIHtcclxuICAgICAgLyoqVG8gb3ZlcnJpZGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHZhbHVlcyB0byB0aGUgZ3JpZHN0ZXIgY29udHJvbCAqL1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLmdldEdyaWRzdGVyQ29uZmlnKHRoaXMuaXNXaWRnZXRNZ21udCxcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEluZm8udGVtcGxhdGVDb25maWcud2lkZ2V0LmNhblJlc2l6ZSwgdGhpcy5kYXNoYm9hcmRJbmZvLnRlbXBsYXRlQ29uZmlnLndpZGdldC5jYW5Nb3ZlKTtcclxuICAgICAgdGhpcy5vcHRpb25zLmluaXRDYWxsYmFjayA9IChncmlkc3RlcjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcGkpIHtcclxuICAgICAgICAgIHRoaXMuZ3JpZGNlbGxIZWlnaHQgPSB0aGlzLm9wdGlvbnMuYXBpLmdldEN1cnJlbnRSb3dIZWlnaHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMub3B0aW9ucy5pdGVtQ2hhbmdlQ2FsbGJhY2sgPSAoaXRlbTogR3JpZHN0ZXJJdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuSXNEZXNrdG9wVmlldykge1xyXG4gICAgICAgICAgaWYgKGl0ZW0ud2lkZ2V0SW5mbyAmJiBpdGVtLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVdpZGdldFBvc2l0aW9uKGl0ZW0ud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogVG8gaW5pdGlhdGUgZXZlbnRidXMgc3Vic2N0aXB0aW9ucyAqL1xyXG4gIGluaXRpdGF0ZUV2ZW50QnVzU3Vic2NyaXRpb25zKCkge1xyXG4gICAgdGhpcy53aWRnZXREZWxldGVFdmVudCA9IHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5zdWJzY3JpYmUoUkFFdmVudC5XaWRnZXREZWxldGUpLnN1YnNjcmliZSgoaW5zdGFuY2VJZCkgPT4ge1xyXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlV2lkZ2V0KGluc3RhbmNlSWQsIHRydWUpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMud2lkZ2V0QWRkRXZlbnQgPSB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMuc3Vic2NyaWJlKFJBRXZlbnQuQWRkV2lkZ2V0KS5zdWJzY3JpYmUoKHdpZGdldEluZm8pID0+IHtcclxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNvcHlXaWRnZXQod2lkZ2V0SW5mbyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb25pZmdBZGRDbGljayA9IHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5zdWJzY3JpYmUoUkFFdmVudC5Db25maWdBZGRDbGljaykuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hZGRXaWRnZXQoZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZWFycmFuZ2VXaWRnZXRDbGljayA9IHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5zdWJzY3JpYmUoUkFFdmVudC5SZWFycmFuZ2VDbGlja2VkKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlYXJyYW5nZVdpZGdldHMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLndpZGdldExpYnJhcnlEb25lQ2xpY2sgPSB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMuc3Vic2NyaWJlKFJBRXZlbnQud2lkZ2V0TGlicmFyeURvbmVDbGljaykuc3Vic2NyaWJlKCh3aWRnZXRMaXN0KSA9PiB7XHJcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgaWYgKHdpZGdldExpc3QpIHtcclxuICAgICAgICAgIHRoaXMuYWRkV2lkZ2V0TGlzdFRvR3JpZHN0ZXIod2lkZ2V0TGlzdCwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdGVtcCBmaXgtIHJlY3Vyc2l2ZSBtZXRob2QgdG8gaXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIGl0ZW1zXHJcbiAgICogYW5kIGFkZCB0aGVtIHRvIGdyaWRzdGVyIGluIHRoZSBnaXZlbiBvcmRlclxyXG4gICAqIEBwYXJhbSB3aWRnZXRMaXN0ICAtbGlzdCBvZiB3aWRnZXRzXHJcbiAgICogQHBhcmFtIGluZGV4IC1pbmRleCBvZiB0aGUgY3VycmVudCB2YWx1ZSB0byBiZSBhZGRlZFxyXG4gICAqL1xyXG4gIGFkZFdpZGdldExpc3RUb0dyaWRzdGVyKHdpZGdldExpc3Q6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgbGV0IGFyZWFDb250ZXh0ID0gdGhpcztcclxuICAgIGxldCBpbmRleFZhbCA9IGluZGV4ICsgMTtcclxuICAgIGlmIChpbmRleCA+IHdpZGdldExpc3QubGVuZ3RoIC0gMSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChpbmRleCA9PSAwKSB7XHJcbiAgICAgICAgYXJlYUNvbnRleHQuYWRkV2lkZ2V0KHdpZGdldExpc3RbaW5kZXhdKTtcclxuICAgICAgICBhcmVhQ29udGV4dC5hZGRXaWRnZXRMaXN0VG9Hcmlkc3Rlcih3aWRnZXRMaXN0LCBpbmRleFZhbCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBhcmVhQ29udGV4dC5hZGRXaWRnZXQod2lkZ2V0TGlzdFtpbmRleF0pO1xyXG4gICAgICAgICAgYXJlYUNvbnRleHQuYWRkV2lkZ2V0TGlzdFRvR3JpZHN0ZXIod2lkZ2V0TGlzdCwgaW5kZXhWYWwpO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbmlmZ0FkZENsaWNrKVxyXG4gICAgICB0aGlzLmNvbmlmZ0FkZENsaWNrLnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMud2lkZ2V0QWRkRXZlbnQpXHJcbiAgICAgIHRoaXMud2lkZ2V0QWRkRXZlbnQudW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBpZiAodGhpcy53aWRnZXREZWxldGVFdmVudClcclxuICAgICAgdGhpcy53aWRnZXREZWxldGVFdmVudC51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLndpZGdldExpYnJhcnlEb25lQ2xpY2spXHJcbiAgICAgIHRoaXMud2lkZ2V0TGlicmFyeURvbmVDbGljay51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnJlYXJyYW5nZVdpZGdldENsaWNrKVxyXG4gICAgICB0aGlzLnJlYXJyYW5nZVdpZGdldENsaWNrLnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqVG8gdXBkYXRlIHBvc2l0aW9uL2RpbWVudGlvbiBvZiBhbGwgd2lkZ2V0cyBpbiB0aGUgYXJlYSAqL1xyXG4gIHVwZGF0ZVdpZGdldHMoKSB7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UudXBkYXRlV2lkZ2V0cyh0aGlzLmZvcm1hdFdpZGdldERhdGFGb3JQb3NpdGlvbkRldGFpbHModGhpcy5tYXBHcmlkc3Rlckxpc3RUb09iamVjdCh0aGlzLndpZGdldExpc3QpKSxcclxuICAgICAgdGhpcy5hcHBDb25maWcpLnN1YnNjcmliZSh3aWRnZXRzID0+IHtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlRvIHVwZGF0ZSB3aWRnZXQgZGltZW5zaW9ucyAqL1xyXG4gIHVwZGF0ZVdpZGdldFBvc2l0aW9uKHdpZGdldEluc3RhbmNlSWQ6IG51bWJlcikge1xyXG5cclxuICAgIGxldCB3aWRnZXRGaWx0ZXJlZExpc3QgPSBbXTtcclxuICAgIGxldCB3aWRnZXQgPSB0aGlzLndpZGdldExpc3QuZmlsdGVyKGZpbHRlcmVkID0+IGZpbHRlcmVkLndpZGdldEluZm8gJiYgZmlsdGVyZWQud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkID09IHdpZGdldEluc3RhbmNlSWQpO1xyXG4gICAgaWYgKHdpZGdldCAmJiB3aWRnZXQubGVuZ3RoID4gMCkge1xyXG4gICAgICB3aWRnZXRGaWx0ZXJlZExpc3QucHVzaCh3aWRnZXRbMF0pO1xyXG4gICAgICBsZXQgd2lkZ2V0TGlzdCA9IHRoaXMubWFwR3JpZHN0ZXJMaXN0VG9PYmplY3Qod2lkZ2V0RmlsdGVyZWRMaXN0KTtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZVdpZGdldHModGhpcy5mb3JtYXRXaWRnZXREYXRhRm9yUG9zaXRpb25EZXRhaWxzKHdpZGdldExpc3QpLCB0aGlzLmFwcENvbmZpZykuc3Vic2NyaWJlKHdpZGdldHMgPT4ge1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqVG8gcmVzdHJpY3QgcmVxdWVzdCBwYXlsb2FkIHRvIGJlIG9mIG1pbiBzaXplIChwb3NpdGlvbiAmIHNpemUgZGV0YWlscykgKi9cclxuICBmb3JtYXRXaWRnZXREYXRhRm9yUG9zaXRpb25EZXRhaWxzKHdpZGdldEl0ZW1MaXN0OiBJV2lkZ2V0SW5mb1tdKSB7XHJcbiAgICBsZXQgaXRlbUxpc3Q6IGFueSA9IFtdO1xyXG4gICAgd2lkZ2V0SXRlbUxpc3QuZm9yRWFjaChmdW5jdGlvbiAod2lkZ2V0SXRlbSkge1xyXG4gICAgICBsZXQgaXRlbSA9IHt9IGFzIElXaWRnZXRJbmZvO1xyXG4gICAgICBpdGVtLndpZGdldEluc3RhbmNlSWQgPSB3aWRnZXRJdGVtLndpZGdldEluc3RhbmNlSWQ7XHJcbiAgICAgIGl0ZW0ucG9zaXRpb25feCA9IHdpZGdldEl0ZW0ucG9zaXRpb25feDtcclxuICAgICAgaXRlbS5wb3NpdGlvbl95ID0gd2lkZ2V0SXRlbS5wb3NpdGlvbl95O1xyXG4gICAgICBpdGVtLndpZHRoID0gd2lkZ2V0SXRlbS53aWR0aDtcclxuICAgICAgaXRlbS5oZWlnaHQgPSB3aWRnZXRJdGVtLmhlaWdodDtcclxuICAgICAgaXRlbUxpc3QucHVzaChpdGVtKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGl0ZW1MaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvIHJldHJpZXZlIHdpZGdldHMgYmFzZWQgb24gdXNlckRhc2hib2FyZGlkIGFuZCBhcmVhIG5hbWUgKi9cclxuICBsb2FkV2lkZ2V0cyh1c2VyRGFzaGJvYXJJZDogbnVtYmVyLCBhcmVhS2V5OiBzdHJpbmcpIHtcclxuXHJcbiAgICBsZXQgd2lkZ2V0SW5mbyA9IDxJV2lkZ2V0SW5mbz57XHJcbiAgICAgIGRhc2hib2FyZElkOiB1c2VyRGFzaGJvYXJJZC50b1N0cmluZygpLFxyXG4gICAgICBkYXNoYm9hcmRBcmVhS2V5OiBhcmVhS2V5XHJcbiAgICB9XHJcbiAgICB0aGlzLndpZGdldExpc3QgPSBbXTtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRXaWRnZXRzQnlEYXNoYm9hcmRBcmVhKHdpZGdldEluZm8sIHRoaXMuYXBwQ29uZmlnKS5zdWJzY3JpYmUod2lkZ2V0cyA9PiB7XHJcbiAgICAgIHRoaXMudXNlcldpZGdldHMgPSB3aWRnZXRzO1xyXG4gICAgICB0aGlzLlBBTVdpZGdldHMgPSBbXTtcclxuICAgICAgd2lkZ2V0cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIHZhciBzZXR0aW5nczogYW55ID0gdW5kZWZpbmVkXHJcbiAgICAgICAgaWYgKGVsZW1lbnQud2lkZ2V0U2V0dGluZ3MpIHtcclxuICAgICAgICAgIHNldHRpbmdzID0gSlNPTi5wYXJzZShlbGVtZW50LndpZGdldFNldHRpbmdzKTtcclxuICAgICAgICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy5pc1BBTVdpZGdldClcclxuICAgICAgICAgICAgdGhpcy5QQU1XaWRnZXRzLnB1c2goZWxlbWVudC53aWRnZXRJbnN0YW5jZUlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNoZWNrUEFNV2lkZ2V0cygpO1xyXG5cclxuICAgICAgaWYgKHdpZGdldHMgJiYgd2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy53aWRnZXRMaXN0ID0gdGhpcy5tYXBPYmplY3RMaXN0VG9Hcmlkc3Rlckl0ZW1MaXN0KHdpZGdldHMpO1xyXG4gICAgICAgIHRoaXMuc2V0QXJlYUhlaWdodCgpO1xyXG4gICAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuSGlkZURhc2hib2FyZEJhbm5lciwgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd0VtcHR5RGFzaGJvYXJkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMucHVibGlzaChSQUV2ZW50LkhpZGVEYXNoYm9hcmRCYW5uZXIsIHRoaXMuc2hvd0VtcHR5RGFzaGJvYXJkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqIFRvIHNldCBBcmVhKEdyaWRzdGVyKSBoZWlnaHQgZHluYW1pY2FsbHkgYXMgd2lkZ2V0cyBhcmUgYWRkZWQvcmVtb3ZlZCAqL1xyXG4gIHNldEFyZWFIZWlnaHQoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgbGV0IGlzTW9iaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubW9iaWxlQnJlYWtwb2ludCA+IHRoaXMuZ3JpZFdyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCkge1xyXG4gICAgICAgIGlzTW9iaWxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXJlYVNjcm9sbEhlaWdodCA9IDA7XHJcbiAgICAgIGxldCBhcmVhSGVpZ2h0ID0gMDtcclxuICAgICAgbGV0IGN1clJvd0hlaWdodCA9IDA7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXBpKSB7XHJcbiAgICAgICAgY3VyUm93SGVpZ2h0ID0gdGhpcy5vcHRpb25zLmFwaS5nZXRDdXJyZW50Um93SGVpZ2h0KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2hvd0VtcHR5RGFzaGJvYXJkID0gdGhpcy51c2VyV2lkZ2V0cy5sZW5ndGggPiAwID8gZmFsc2UgOiB0cnVlO1xyXG5cclxuICAgICAgdGhpcy53aWRnZXRMaXN0LmZvckVhY2goKHQpID0+IHtcclxuICAgICAgICBsZXQgY3VycmVudEhlaWdodCA9IHQueSArIHQucm93cztcclxuICAgICAgICBpZiAoY3VycmVudEhlaWdodCA+IGFyZWFTY3JvbGxIZWlnaHQpIHtcclxuICAgICAgICAgIGFyZWFTY3JvbGxIZWlnaHQgPSBjdXJyZW50SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY3VyUm93SGVpZ2h0ID09IDApIHtcclxuICAgICAgICAgIGN1cnJlbnRIZWlnaHQgPSB0aGlzLndpZGdldExpc3RbMF0uY3VyUm93SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0LndpZGdldEluZm8ucm93SGVpZ2h0ID0gY3VyUm93SGVpZ2h0O1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5ncmlkY2VsbEhlaWdodCA9IGN1clJvd0hlaWdodDtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcGkpIHtcclxuICAgICAgICBhcmVhSGVpZ2h0ID0gYXJlYVNjcm9sbEhlaWdodCAqIHRoaXMub3B0aW9ucy5hcGkuZ2V0Q3VycmVudFJvd0hlaWdodCgpICsgMTAwO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBhcmVhU2Nyb2xsSGVpZ2h0TW9iID0gMDtcclxuICAgICAgaWYgKGlzTW9iaWxlKSB7XHJcbiAgICAgICAgYXJlYVNjcm9sbEhlaWdodE1vYiA9IHRoaXMud2lkZ2V0TGlzdC5sZW5ndGggKiAzMDAgKyAyMDA7XHJcbiAgICAgICAgYXJlYUhlaWdodCA9IGFyZWFTY3JvbGxIZWlnaHRNb2I7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFyZWFIZWlnaHQgPCA2MDApIHtcclxuICAgICAgICBhcmVhSGVpZ2h0ID0gNjAwO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ3JpZGhlaWdodCA9IGFyZWFIZWlnaHQ7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqIFRvIHJlbW92ZSBhIHdpZGdldCBpbnN0YW5jZSBmcm9tIGRhc2hib2FyZCBhbmQgdG8gc2F2ZSBpbmZvIGluIGRhdGFiYXNlICovXHJcbiAgZGVsZXRlV2lkZ2V0KHdpZGdldEluc3RhbmNlSWQ6IGFueSwgaXNhbGVydERpc2FibGVkOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGxldCBncmlkc3Rlckl0ZW0gPSB0aGlzLndpZGdldExpc3QuZmlsdGVyKChpdGVtKSA9PiB7XHJcbiAgICAgIHJldHVybiBpdGVtLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCA9PT0gd2lkZ2V0SW5zdGFuY2VJZDtcclxuICAgIH0pO1xyXG4gICAgaWYgKGdyaWRzdGVySXRlbS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCB3aWRnZXQgPSB0aGlzLnVzZXJXaWRnZXRzLmZpbHRlcigoaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBpdGVtLndpZGdldEluc3RhbmNlSWQgPT09IHdpZGdldEluc3RhbmNlSWQ7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAod2lkZ2V0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnVzZXJXaWRnZXRzLnNwbGljZSh0aGlzLnVzZXJXaWRnZXRzLmluZGV4T2Yod2lkZ2V0WzBdKSwgMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLlBBTVdpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHZhciBpbmR4ID0gdGhpcy5QQU1XaWRnZXRzLmluZGV4T2Yod2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICAgICAgaWYgKGluZHggPiAtMSlcclxuICAgICAgICAgIHRoaXMuUEFNV2lkZ2V0cy5zcGxpY2UoaW5keCwgMSk7XHJcbiAgICAgICAgdGhpcy5jaGVja1BBTVdpZGdldHMoKTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIHRoaXMud2lkZ2V0TGlzdC5zcGxpY2UodGhpcy53aWRnZXRMaXN0LmluZGV4T2YoZ3JpZHN0ZXJJdGVtWzBdKSwgMSk7XHJcbiAgICAgIHRoaXMuc2V0QXJlYUhlaWdodCgpO1xyXG4gICAgICBpZiAoIWlzYWxlcnREaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMubm90aWZpZXIubm90aWZ5KCdzdWNjZXNzJywgXCIgXCIgKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uV2lkZ2V0dGV4dCcpICsgXCIgXCIgKyBncmlkc3Rlckl0ZW1bMF0ud2lkZ2V0SW5mby53aWRnZXRUaXRsZSArIFwiIFwiICsgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmRlbGV0ZWRTdWNjZXNmdWxseScpICsgXCIgXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dFbXB0eURhc2hib2FyZCA9IHRoaXMudXNlcldpZGdldHMubGVuZ3RoID4gMCA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIGlmICh0aGlzLnNob3dFbXB0eURhc2hib2FyZCA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuSGlkZURhc2hib2FyZEJhbm5lciwgdGhpcy5zaG93RW1wdHlEYXNoYm9hcmQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqVG8gcmVhcnJhbmdlIHdpZGdldHMgcG9zaXRpb24gaW4gdGhlIGRhc2hib2FyZCwgY29tcGFjdExlZnQmVXAsY29tcGFjdExlZnQsY29tcGFjdFVwLGV0YyovXHJcbiAgcmVhcnJhbmdlV2lkZ2V0cygpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy51c2VyV2lkZ2V0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnVzZXJXaWRnZXRzW2ldLnBvc2l0aW9uX3ggPSAwO1xyXG4gICAgICB0aGlzLnVzZXJXaWRnZXRzW2ldLnBvc2l0aW9uX3kgPSAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy53aWRnZXRMaXN0ID0gdGhpcy5tYXBPYmplY3RMaXN0VG9Hcmlkc3Rlckl0ZW1MaXN0KHRoaXMudXNlcldpZGdldHMpO1xyXG4gICAgaWYgKHRoaXMud2lkZ2V0TGlzdC5sZW5ndGggPiAwKVxyXG4gICAgICB0aGlzLnVwZGF0ZVdpZGdldFBvc2l0aW9uKHRoaXMud2lkZ2V0TGlzdFswXS53aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0QXJlYUhlaWdodCgpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqVG8gYWRkIHdpZGdldCBpbnN0YW5jZSB0byB0aGUgZGF0YWJhc2Ugd2l0aCB0aGUgbmV4dCBhdmFpbGFibGUgcG9zaXRpb24gYW5kIHRvIG1ha2UgY2hhbmdlcyBpblxyXG4gICAqIGRhc2hib2FyZCBhcmVhLlxyXG4gICAqL1xyXG4gIGFkZFdpZGdldChkYXRhOiBhbnkpIHtcclxuICAgIGRhdGEuaGVpZ2h0ID0gdGhpcy53aWRnZXRIZWlnaHQ7XHJcbiAgICBkYXRhLndpZHRoID0gdGhpcy53aWRnZXRXaWR0aDtcclxuICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuSGlkZURhc2hib2FyZEJhbm5lciwgZmFsc2UpO1xyXG4gICAgaWYgKGRhdGEud2lkZ2V0U2V0dGluZ3MpIHtcclxuICAgICAgaWYgKHR5cGVvZiBkYXRhLndpZGdldFNldHRpbmdzID09PSAnc3RyaW5nJylcclxuICAgICAgICBkYXRhLndpZGdldFNldHRpbmdzID0gSlNPTi5wYXJzZShkYXRhLndpZGdldFNldHRpbmdzKTtcclxuXHJcbiAgICAgIGlmIChkYXRhLndpZGdldFNldHRpbmdzLmRlZmF1bHRDb2xzKSB7XHJcbiAgICAgICAgZGF0YS53aWR0aCA9IGRhdGEud2lkZ2V0U2V0dGluZ3MuZGVmYXVsdENvbHM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGRhdGEud2lkZ2V0U2V0dGluZ3MuZGVmYXVsdFJvd3MpIHtcclxuICAgICAgICBkYXRhLmhlaWdodCA9IGRhdGEud2lkZ2V0U2V0dGluZ3MuZGVmYXVsdFJvd3M7XHJcbiAgICAgIH1cclxuICAgICAgZGF0YS53aWRnZXRTZXR0aW5ncyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBkYXRhID0gdGhpcy5zZXRQb3NpdGlvbnMoZGF0YSk7XHJcblxyXG4gICAgLyoqIHRvIGZpbmQgdGhlIGF2YWlsYWJsZSBwb3NpdGlvbiBpbiBncmlkc3RlciwgdGVtcCBjb21tZW50aW5nIHRoZSBjb2RlLXJldHVybmluZyBoaWdoZXIgeSB2YWx1ZSB0aGFuIG5vcm1hbCAqL1xyXG4gICAgZGF0YS5kYXNoYm9hcmRBcmVhS2V5ID0gdGhpcy5hcmVhS2V5O1xyXG4gICAgZGF0YS5kYXNoYm9hcmRJZCA9IHRoaXMudXNlckRhc2hib2FyZElkO1xyXG4gICAgdGhpcy5uZ3hTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuYWRkV2lkZ2V0KGRhdGEsIHRoaXMuYXBwQ29uZmlnKS5zdWJzY3JpYmUod2lkZ2V0ID0+IHtcclxuICAgICAgdGhpcy51c2VyV2lkZ2V0cy5wdXNoKHdpZGdldCk7XHJcbiAgICAgIGxldCBncmlkc3Rlckl0ZW0gPSB0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLmdldEdyaWRzdGVySXRlbSh3aWRnZXQpO1xyXG4gICAgICB0aGlzLndpZGdldExpc3QucHVzaChncmlkc3Rlckl0ZW0pO1xyXG4gICAgICB0aGlzLnNldEFyZWFIZWlnaHQoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXBpKSB7XHJcbiAgICAgICAgbGV0IGN1clJvd0hlaWdodDogbnVtYmVyID0gTnVtYmVyKHRoaXMub3B0aW9ucy5hcGkuZ2V0Q3VycmVudFJvd0hlaWdodCgpKTtcclxuICAgICAgICBpZiAoY3VyUm93SGVpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgd2lkZ2V0LnJvd0hlaWdodCA9IGN1clJvd0hlaWdodDtcclxuICAgICAgICAgIHRoaXMuZ3JpZGNlbGxIZWlnaHQgPSBjdXJSb3dIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHZhciB3aWRnZXRJbnN0YW5jZUlkID0gMDtcclxuICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQud2lkZ2V0SW5zdGFuY2VJZCkge1xyXG4gICAgICAgIHdpZGdldEluc3RhbmNlSWQgPSB3aWRnZXQud2lkZ2V0SW5zdGFuY2VJZDtcclxuICAgICAgICAvKipUbyBzYXZlIGFkZGVkIHdpZGdldCBwb3NpdGlvbiBpbiBkYiAqL1xyXG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLklzRGVza3RvcFZpZXcpIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVdpZGdldFBvc2l0aW9uKHdpZGdldEluc3RhbmNlSWQpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh3aWRnZXQuc2V0dGluZ3MgJiYgd2lkZ2V0LnNldHRpbmdzLmlzUEFNV2lkZ2V0KSB7XHJcbiAgICAgICAgdGhpcy5QQU1XaWRnZXRzLnB1c2god2lkZ2V0LndpZGdldEluc3RhbmNlSWQpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tQQU1XaWRnZXRzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5XaWRnZXRBZGRlZCwgd2lkZ2V0KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQb3NpdGlvbnMoZGF0YTogYW55KSB7XHJcbiAgICBkYXRhLnBvc2l0aW9uX3ggPSAwO1xyXG4gICAgZGF0YS5wb3NpdGlvbl95ID0gMDtcclxuICAgIGlmICghdGhpcy5yZXNwb25zaXZlU2VydmljZS5Jc0Rlc2t0b3BWaWV3KSB7XHJcbiAgICAgIGlmICh0aGlzLnVzZXJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgd2lkZ2V0ID0gdGhpcy51c2VyV2lkZ2V0c1t0aGlzLnVzZXJXaWRnZXRzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIGlmICh3aWRnZXQucG9zaXRpb25feCArIHdpZGdldC53aWR0aCA+ICh0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLm1heENvbHNEZXNrdG9wIC8gMikpIHtcclxuICAgICAgICAgIGRhdGEucG9zaXRpb25feSA9IHdpZGdldC5wb3NpdGlvbl95ICsgMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBkYXRhLnBvc2l0aW9uX3kgPSB3aWRnZXQucG9zaXRpb25feTtcclxuICAgICAgICAgIGRhdGEucG9zaXRpb25feCA9IHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UubWF4Q29sc0Rlc2t0b3AgLSAod2lkZ2V0LnBvc2l0aW9uX3ggKyB3aWRnZXQud2lkdGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICAvKiogVG8gYWRkIHdpZGdldCB0byBjdXJyZW50IHdpZGdldCBsaXN0ICxpbnZva2VkIGZyb20gY29weSB3aWRnZXQgd2luZG93Ki9cclxuICBjb3B5V2lkZ2V0KGRhdGE6IGFueSkge1xyXG4gICAgZGF0YSA9IHRoaXMuc2V0UG9zaXRpb25zKGRhdGEpO1xyXG4gICAgaWYgKCF0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLklzRGVza3RvcFZpZXcpIHtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZVdpZGdldHModGhpcy5mb3JtYXRXaWRnZXREYXRhRm9yUG9zaXRpb25EZXRhaWxzKFtkYXRhXSksIHRoaXMuYXBwQ29uZmlnKS5zdWJzY3JpYmUod2lkZ2V0cyA9PiB7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy51c2VyV2lkZ2V0cy5wdXNoKGRhdGEpO1xyXG4gICAgbGV0IGdyaWRzdGVySXRlbSA9IHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuZ2V0R3JpZHN0ZXJJdGVtKGRhdGEpO1xyXG4gICAgdGhpcy53aWRnZXRMaXN0LnB1c2goZ3JpZHN0ZXJJdGVtKTtcclxuICAgIHRoaXMuc2V0QXJlYUhlaWdodCgpO1xyXG4gICAgaWYgKGRhdGEuc2V0dGluZ3MgJiYgZGF0YS5zZXR0aW5ncy5pc1BBTVdpZGdldCkge1xyXG4gICAgICB0aGlzLlBBTVdpZGdldHMucHVzaChkYXRhLndpZGdldEluc3RhbmNlSWQpO1xyXG4gICAgICB0aGlzLmNoZWNrUEFNV2lkZ2V0cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWFwT2JqZWN0TGlzdFRvR3JpZHN0ZXJJdGVtTGlzdCh3aWRnZXRMaXN0OiBBcnJheTxJV2lkZ2V0SW5mbz4pIHtcclxuICAgIGxldCB3aWRnZXRBcnJheSA9IEFycmF5PEdyaWRzdGVySXRlbT4oKTtcclxuICAgIHdpZGdldExpc3QuZm9yRWFjaCh3aWRnZXQgPT4ge1xyXG4gICAgICB3aWRnZXRBcnJheS5wdXNoKHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuZ2V0R3JpZHN0ZXJJdGVtKHdpZGdldCkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gd2lkZ2V0QXJyYXk7XHJcbiAgfVxyXG5cclxuICBtYXBHcmlkc3Rlckl0ZW1Ub09iamVjdCh3aWRnZXRJdGVtOiBHcmlkc3Rlckl0ZW0pIHtcclxuICAgIGxldCB3aWRnZXQ6IElXaWRnZXRJbmZvO1xyXG4gICAgd2lkZ2V0ID0gd2lkZ2V0SXRlbS53aWRnZXRJbmZvO1xyXG4gICAgd2lkZ2V0LmhlaWdodCA9IHdpZGdldEl0ZW0ucm93cztcclxuICAgIHdpZGdldC53aWR0aCA9IHdpZGdldEl0ZW0uY29scztcclxuICAgIHdpZGdldC5wb3NpdGlvbl94ID0gd2lkZ2V0SXRlbS54O1xyXG4gICAgd2lkZ2V0LnBvc2l0aW9uX3kgPSB3aWRnZXRJdGVtLnk7XHJcbiAgICB3aWRnZXQucm93SGVpZ2h0ID0gd2lkZ2V0SXRlbS5jdXJSb3dIZWlnaHQ7XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgbWFwR3JpZHN0ZXJMaXN0VG9PYmplY3Qod2lkZ2V0SXRlbUxpc3Q6IEFycmF5PEdyaWRzdGVySXRlbT4pIHtcclxuICAgIGxldCB3aWRnZXRMaXN0QXJyYXkgPSBBcnJheTxJV2lkZ2V0SW5mbz4oKTtcclxuICAgIHdpZGdldEl0ZW1MaXN0LmZvckVhY2god2lkZ2V0ID0+IHtcclxuICAgICAgd2lkZ2V0TGlzdEFycmF5LnB1c2godGhpcy5tYXBHcmlkc3Rlckl0ZW1Ub09iamVjdCh3aWRnZXQpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHdpZGdldExpc3RBcnJheTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGROZXdXaWRnZXQoKSB7XHJcbiAgICB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMucHVibGlzaChSQUV2ZW50LkFkZE5ld1dpZGdldFRvRGFzaGJvYXJkLCBudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVBcHBsaWVkRmlsdGVycyhkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuVXBkYXRlQXBwbGVkRml0ZXJGb3JJbmFwcGxpY2FibGVGaWx0ZXIsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrUEFNV2lkZ2V0cygpIHtcclxuICAgIGlmICh0aGlzLlBBTVdpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMucHVibGlzaChSQUV2ZW50LlNob3dJbmFwcGxpY2FibGVGaWx0ZXJNZXNzYWdlLCB0cnVlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMucHVibGlzaChSQUV2ZW50LlNob3dJbmFwcGxpY2FibGVGaWx0ZXJNZXNzYWdlLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufSJdfQ==
|