verben-ng-ui 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/card-data-view/card-data-view.component.mjs +3 -3
- package/esm2022/lib/components/data-table/data-table.component.mjs +8 -4
- package/esm2022/lib/components/data-view/data-view.component.mjs +6 -6
- package/fesm2022/verben-ng-ui.mjs +12 -7
- package/fesm2022/verben-ng-ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -98,11 +98,11 @@ export class CardDataViewComponent {
|
|
|
98
98
|
this.loadMoreClick.emit();
|
|
99
99
|
}
|
|
100
100
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: CardDataViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
101
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: CardDataViewComponent, selector: "verben-card-data-view", inputs: { pd: "pd", mg: "mg", lHeight: "lHeight", rHeight: "rHeight", rWidth: "rWidth", lWidth: "lWidth", textColor: "textColor", lbgColor: "lbgColor", rbgColor: "rbgColor", border: "border", display: "display", borderRadius: "borderRadius", activeCss: "activeCss", inActiveCss: "inActiveCss", displayAsRow: "displayAsRow", cardDataList: "cardDataList", dataId: "dataId", totalRecords: "totalRecords", footer: "footer", noOfVisibleChildren: "noOfVisibleChildren", onItemClick: "onItemClick", onCardChildClick: "onCardChildClick" }, outputs: { loadMoreClick: "loadMoreClick" }, queries: [{ propertyName: "rightContent", first: true, predicate: RightCardDataViewComponent, descendants: true }, { propertyName: "card", first: true, predicate: ["card"], descendants: true }], ngImport: i0, template: "<div #main class=\"
|
|
101
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: CardDataViewComponent, selector: "verben-card-data-view", inputs: { pd: "pd", mg: "mg", lHeight: "lHeight", rHeight: "rHeight", rWidth: "rWidth", lWidth: "lWidth", textColor: "textColor", lbgColor: "lbgColor", rbgColor: "rbgColor", border: "border", display: "display", borderRadius: "borderRadius", activeCss: "activeCss", inActiveCss: "inActiveCss", displayAsRow: "displayAsRow", cardDataList: "cardDataList", dataId: "dataId", totalRecords: "totalRecords", footer: "footer", noOfVisibleChildren: "noOfVisibleChildren", onItemClick: "onItemClick", onCardChildClick: "onCardChildClick" }, outputs: { loadMoreClick: "loadMoreClick" }, queries: [{ propertyName: "rightContent", first: true, predicate: RightCardDataViewComponent, descendants: true }, { propertyName: "card", first: true, predicate: ["card"], descendants: true }], ngImport: i0, template: "<div #main class=\"flex-col\" [style.display]=\"'flex'\">\n <!-- Header -->\n <ng-container ngProjectAs=\"verben-card-data-view-header\">\n <ng-content select='verben-card-data-view-header'></ng-content>\n </ng-container>\n\n <div [ngClass]=\"!hasCurrentItem()?'master-only-container':'master-detail-container'\">\n <!-- Card and Footer -->\n <div [style.borderRadius]=\"borderRadius\" [style.backgroundColor]=\"lbgColor\" class=\"flex-col \">\n <!-- Card section -->\n <ng-container ngProjectAs=\"verben-left-card-data-view\">\n <ng-content select='verben-left-card-data-view'></ng-content>\n </ng-container>\n\n <!-- Footer-->\n <ng-container ngProjectAs=\"verben-card-data-view-footer\">\n <ng-content select='verben-card-data-view-footer'></ng-content>\n </ng-container>\n </div>\n <!-- Detail Section-->\n <div class=\"card-detail-section\" [style.backgroundColor]=\"rbgColor\" *ngIf=\"hasCurrentItem()\"\n [style.borderRadius]=\"borderRadius\">\n <verben-svg (click)=\"clearData()\" class=\"cursor-pointer toRight\" icon=\"close\" [width]=\"20\" [height]=\"20\"\n color=\"black\"></verben-svg>\n <ng-container #right ngProjectAs=\"verben-right-card-data-view\">\n <ng-content #rightContent select='verben-right-card-data-view'></ng-content>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".container{gap:10px}:host{border-radius:12px}.master-detail-container{display:grid;grid-template-columns:30% 70%;gap:15px;justify-content:center}.master-only-container{display:grid;grid-template-columns:100%;justify-content:center}.paginator-text{margin-left:auto;margin-right:auto}.cursor-pointer{cursor:pointer}.toRight{align-self:flex-end}.card-detail-section{display:flex;flex-direction:column;gap:15px;padding:15px 20px 20px}::ng-deep .master-detail-container>div>verben-left-card-data-view>verben-left-card-data{display:flex!important;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }] });
|
|
102
102
|
}
|
|
103
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: CardDataViewComponent, decorators: [{
|
|
104
104
|
type: Component,
|
|
105
|
-
args: [{ selector: 'verben-card-data-view', template: "<div #main class=\"
|
|
105
|
+
args: [{ selector: 'verben-card-data-view', template: "<div #main class=\"flex-col\" [style.display]=\"'flex'\">\n <!-- Header -->\n <ng-container ngProjectAs=\"verben-card-data-view-header\">\n <ng-content select='verben-card-data-view-header'></ng-content>\n </ng-container>\n\n <div [ngClass]=\"!hasCurrentItem()?'master-only-container':'master-detail-container'\">\n <!-- Card and Footer -->\n <div [style.borderRadius]=\"borderRadius\" [style.backgroundColor]=\"lbgColor\" class=\"flex-col \">\n <!-- Card section -->\n <ng-container ngProjectAs=\"verben-left-card-data-view\">\n <ng-content select='verben-left-card-data-view'></ng-content>\n </ng-container>\n\n <!-- Footer-->\n <ng-container ngProjectAs=\"verben-card-data-view-footer\">\n <ng-content select='verben-card-data-view-footer'></ng-content>\n </ng-container>\n </div>\n <!-- Detail Section-->\n <div class=\"card-detail-section\" [style.backgroundColor]=\"rbgColor\" *ngIf=\"hasCurrentItem()\"\n [style.borderRadius]=\"borderRadius\">\n <verben-svg (click)=\"clearData()\" class=\"cursor-pointer toRight\" icon=\"close\" [width]=\"20\" [height]=\"20\"\n color=\"black\"></verben-svg>\n <ng-container #right ngProjectAs=\"verben-right-card-data-view\">\n <ng-content #rightContent select='verben-right-card-data-view'></ng-content>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".container{gap:10px}:host{border-radius:12px}.master-detail-container{display:grid;grid-template-columns:30% 70%;gap:15px;justify-content:center}.master-only-container{display:grid;grid-template-columns:100%;justify-content:center}.paginator-text{margin-left:auto;margin-right:auto}.cursor-pointer{cursor:pointer}.toRight{align-self:flex-end}.card-detail-section{display:flex;flex-direction:column;gap:15px;padding:15px 20px 20px}::ng-deep .master-detail-container>div>verben-left-card-data-view>verben-left-card-data{display:flex!important;flex-direction:column}\n"] }]
|
|
106
106
|
}], propDecorators: { pd: [{
|
|
107
107
|
type: Input
|
|
108
108
|
}], mg: [{
|
|
@@ -156,4 +156,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
156
156
|
}], loadMoreClick: [{
|
|
157
157
|
type: Output
|
|
158
158
|
}] } });
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1kYXRhLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWRhdGEtdmlldy9jYXJkLWRhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtZGF0YS12aWV3L2NhcmQtZGF0YS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFnQixZQUFZLEVBQXNCLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQyxNQUFNLGVBQWUsQ0FBQztBQUc1SyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7OztBQVNuRyxNQUFNLE9BQU8scUJBQXFCO0lBQ3ZCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDWixFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ1gsT0FBTyxHQUFTLE1BQU0sQ0FBQztJQUN2QixPQUFPLEdBQVMsTUFBTSxDQUFDO0lBQ3ZCLE1BQU0sR0FBUyxLQUFLLENBQUM7SUFDckIsTUFBTSxHQUFTLEtBQUssQ0FBQztJQUNyQixTQUFTLENBQVU7SUFDbkIsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsQ0FBVTtJQUNsQixNQUFNLENBQVU7SUFDaEIsT0FBTyxDQUFVO0lBQ2pCLFlBQVksR0FBUyxNQUFNLENBQUM7SUFDNUIsU0FBUyxDQUFVO0lBQ25CLFdBQVcsQ0FBVTtJQUNyQixZQUFZLEdBQVcsSUFBSSxDQUFDO0lBQzVCLFlBQVksR0FBWSxFQUFFLENBQUM7SUFDM0IsTUFBTSxDQUFTLENBQUMsbUNBQW1DO0lBQ25ELFlBQVksR0FBUSxDQUFDLENBQUM7SUFDdEIsTUFBTSxHQUFTLEtBQUssQ0FBQztJQUNyQixtQkFB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QixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNvQyxZQUFZO3NCQUFyRCxZQUFZO3VCQUFDLDBCQUEwQjtnQkFFbEIsSUFBSTtzQkFBekIsWUFBWTt1QkFBQyxNQUFNO2dCQXdCWCxXQUFXO3NCQUFuQixLQUFLO2dCQTJCRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBMkJJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIGNvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkLCBlZmZlY3QsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIHZpZXdDaGlsZCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXJkRGF0YSB9IGZyb20gJy4vY2FyZC1kYXRhJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSaWdodENhcmREYXRhVmlld0NvbXBvbmVudCB9IGZyb20gJy4vcmlnaHQtY2FyZC1kYXRhLXZpZXcvcmlnaHQtY2FyZC1kYXRhLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IExlZnRDYXJkRGF0YUNvbXBvbmVudCB9IGZyb20gJy4vbGVmdC1jYXJkLWRhdGEvbGVmdC1jYXJkLWRhdGEuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLWNhcmQtZGF0YS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcmQtZGF0YS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NhcmQtZGF0YS12aWV3LmNvbXBvbmVudC5jc3MnXG59KVxuXG5leHBvcnQgY2xhc3MgQ2FyZERhdGFWaWV3Q29tcG9uZW50ICB7XG4gIEBJbnB1dCgpIHBkID0gJzEwcHgnO1xuICBASW5wdXQoKSBtZyA9ICcwcHgnO1xuICBASW5wdXQoKSBsSGVpZ2h0PzpzdHJpbmc9XCIxMDAlXCI7XG4gIEBJbnB1dCgpIHJIZWlnaHQ/OnN0cmluZz1cIjEwMCVcIjtcbiAgQElucHV0KCkgcldpZHRoPzpzdHJpbmc9XCI3MCVcIjtcbiAgQElucHV0KCkgbFdpZHRoPzpzdHJpbmc9XCIzMCVcIjtcbiAgQElucHV0KCkgdGV4dENvbG9yPzpzdHJpbmcgO1xuICBASW5wdXQoKSBsYmdDb2xvcj86c3RyaW5nIDtcbiAgQElucHV0KCkgcmJnQ29sb3I/OnN0cmluZyA7XG4gIEBJbnB1dCgpIGJvcmRlcj86c3RyaW5nIDtcbiAgQElucHV0KCkgZGlzcGxheT86c3RyaW5nIDtcbiAgQElucHV0KCkgYm9yZGVyUmFkaXVzPzpzdHJpbmc9XCIxMnB4XCI7XG4gIEBJbnB1dCgpIGFjdGl2ZUNzcz86c3RyaW5nIDtcbiAgQElucHV0KCkgaW5BY3RpdmVDc3M/OnN0cmluZyA7XG4gIEBJbnB1dCgpIGRpc3BsYXlBc1Jvdz86Ym9vbGVhbiA9dHJ1ZTtcbiAgQElucHV0KCkgY2FyZERhdGFMaXN0OkNhcmREYXRhW109W107XG4gIEBJbnB1dCgpIGRhdGFJZCE6c3RyaW5nOyAvL3doYXQgdG8gdXNlIHRvIGlkZW50aWZ5IGVhY2ggZGF0YVxuICBASW5wdXQoKSB0b3RhbFJlY29yZHM6bnVtYmVyPTA7XG4gIEBJbnB1dCgpIGZvb3Rlcjpib29sZWFuPWZhbHNlO1xuICBASW5wdXQoKSBub09mVmlzaWJsZUNoaWxkcmVuOm51bWJlcj0zO1xuICBAQ29udGVudENoaWxkKFJpZ2h0Q2FyZERhdGFWaWV3Q29tcG9uZW50KSByaWdodENvbnRlbnQhOlJpZ2h0Q2FyZERhdGFWaWV3Q29tcG9uZW50OyBcbiAgLy8gQENvbnRlbnRDaGlsZChMZWZ0Q2FyZERhdGFDb21wb25lbnQpIGxlZnQhOkxlZnRDYXJkRGF0YUNvbXBvbmVudDsgXG4gIEBDb250ZW50Q2hpbGQoJ2NhcmQnKSBjYXJkITogVGVtcGxhdGVSZWY8YW55PjtcbiAgLy8gQENvbnRlbnRDaGlsZCgnY29udGVudCcpIGNvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBjdXJyZW50SXRlbTphbnk9e307XG4gIGN1cnJlbnRDaGlsZEl0ZW06YW55PXt9O1xuXG4gIGhhc0N1cnJlbnRJdGVtKClcbiAge1xuICAgIHJldHVybiAhIU9iamVjdC5rZXlzKHRoaXMuY3VycmVudEl0ZW0pLmxlbmd0aCB8fCAhIU9iamVjdC5rZXlzKHRoaXMuY3VycmVudENoaWxkSXRlbSkubGVuZ3RoXG4gIH1cbiAgY2xlYXJEYXRhKClcbiAgIHtcbiAgICB0aGlzLmN1cnJlbnRJdGVtPXt9IGFzIENhcmREYXRhXG4gICAgdGhpcy5jdXJyZW50Q2hpbGRJdGVtPXt9IGFzIENhcmREYXRhXG4gICAgdGhpcy5jYXJkRGF0YUxpc3QuZm9yRWFjaChfPT57XG4gICAgICBfLnNlbGVjdGVkPWZhbHNlO1xuICAgICAgXy5jaGlsZHJlbi5mb3JFYWNoKGM9PntjLnNlbGVjdGVkPWZhbHNlO2MuaXNDaGlsZHJlbkV4cGFuZGVkPWZhbHNlfSlcbiAgICAgIF8uaXNDaGlsZHJlbkV4cGFuZGVkPWZhbHNlXG4gICAgfSk7XG4gICB9XG4gICBzZXREZXRhaWxEYXRhKClcbiAgIHtcbiAgICAgdGhpcy5yaWdodENvbnRlbnQucGFyZW50RGF0YT0gdGhpcy5jdXJyZW50SXRlbTtcbiAgICAgIHRoaXMucmlnaHRDb250ZW50LmNoaWxEYXRhPSB0aGlzLmN1cnJlbnRDaGlsZEl0ZW07XG4gICB9XG4gIEBJbnB1dCgpIG9uSXRlbUNsaWNrKGl0ZW06Q2FyZERhdGEpe1xuICAgIHRoaXMucmVzZXRDaGlsZHJlbihpdGVtKTtcbiAgICBpdGVtLnNlbGVjdGVkPSB0cnVlO1xuICAgIHRoaXMuY2FyZERhdGFMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZihlbGVtZW50LmRhdGFbdGhpcy5kYXRhSWRdPT1pdGVtLmRhdGFbdGhpcy5kYXRhSWRdKVxuICAgICAge1xuICAgICAgICB0aGlzLmN1cnJlbnRJdGVtPSBpdGVtO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAge1xuICAgICAgICBlbGVtZW50LnNlbGVjdGVkPWZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2V0RGV0YWlsRGF0YSgpXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEl0ZW1cbiAgfVxuIHJlc2V0Q2hpbGRyZW4obmV3U2VsZWN0OkNhcmREYXRhKVxuICB7XG4gICAgaWYodGhpcy5jdXJyZW50SXRlbSAmJiB0aGlzLmN1cnJlbnRJdGVtLmNoaWxkcmVuPy5sZW5ndGgpe1xuICAgKHRoaXMuY3VycmVudEl0ZW0uY2hpbGRyZW4gYXMgYW55W10pLmZvckVhY2goYz0+e1xuICAgIGMuc2VsZWN0ZWQ9ZmFsc2U7XG4gIH0pXG4gIGlmKG5ld1NlbGVjdC5kYXRhW3RoaXMuZGF0YUlkXSE9dGhpcy5jdXJyZW50SXRlbS5kYXRhW3RoaXMuZGF0YUlkXSlcbiAgICB0aGlzLmN1cnJlbnRJdGVtLmlzQ2hpbGRyZW5FeHBhbmRlZD1mYWxzZTtcbn1cbiAgdGhpcy5jdXJyZW50Q2hpbGRJdGVtPSBudWxsO1xuICB9XG4gIEBJbnB1dCgpIG9uQ2FyZENoaWxkQ2xpY2soY2hpbGRJbmRleDpudW1iZXIpe1xuICAgIHZhciBpdGVtID0gdGhpcy5jdXJyZW50SXRlbS5jaGlsZHJlbltjaGlsZEluZGV4XTtcbiAgICAodGhpcy5jdXJyZW50SXRlbS5jaGlsZHJlbiBhcyBhbnlbXSkuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmKGVsZW1lbnQuZGF0YVt0aGlzLmRhdGFJZF09PWl0ZW0uZGF0YVt0aGlzLmRhdGFJZF0pXG4gICAgICB7XG4gICAgICAgIHRoaXMuY3VycmVudENoaWxkSXRlbT0gaXRlbTtcbiAgICAgIH1cbiAgICAgIGVsc2VcbiAgICAgIHtcbiAgICAgICAgZWxlbWVudC5zZWxlY3RlZD1mYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmN1cnJlbnRDaGlsZEl0ZW0uc2VsZWN0ZWQ9dHJ1ZTtcbiAgICB0aGlzLnNldERldGFpbERhdGEoKVxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRDaGlsZEl0ZW1cbiAgfVxuICBzaG93Q2hpbGRyZW4oaXRlbTpDYXJkRGF0YSlcbiAge1xuICAgIHZhciBjdXJyVG9nZ2xlU3RhdGU9IGl0ZW0uaXNDaGlsZHJlbkV4cGFuZGVkO1xuICAgIHRoaXMuY2FyZERhdGFMaXN0LmZvckVhY2goXz0+e1xuICAgICAgXy5pc0NoaWxkcmVuRXhwYW5kZWQ9ZmFsc2VcbiAgICAgIF8uc2VsZWN0ZWQ9ZmFsc2U7XG4gICAgfSk7XG4gICAgaXRlbS5zZWxlY3RlZD10cnVlO1xuICAgIGl0ZW0uaXNDaGlsZHJlbkV4cGFuZGVkPSFjdXJyVG9nZ2xlU3RhdGVcbiAgfVxuXG4gIEBPdXRwdXQoKSBsb2FkTW9yZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBvbkxvYWRNb3JlQ2xpY2soKVxuICB7XG4gICAgdGhpcy5sb2FkTW9yZUNsaWNrLmVtaXQoKTtcbiAgfVxufVxuIiwiPGRpdiAjbWFpbiBjbGFzcz1cImNvbnRhaW5lciBmbGV4LWNvbFwiIFtzdHlsZS5kaXNwbGF5XT1cIidmbGV4J1wiPlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cInZlcmJlbi1jYXJkLWRhdGEtdmlldy1oZWFkZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9J3ZlcmJlbi1jYXJkLWRhdGEtdmlldy1oZWFkZXInPjwvbmctY29udGVudD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGRpdiBbbmdDbGFzc109XCIhaGFzQ3VycmVudEl0ZW0oKT8nbWFzdGVyLW9ubHktY29udGFpbmVyJzonbWFzdGVyLWRldGFpbC1jb250YWluZXInXCI+XG4gICAgPCEtLSBDYXJkIGFuZCBGb290ZXIgLS0+XG4gICAgPGRpdiBbc3R5bGUuYm9yZGVyUmFkaXVzXT1cImJvcmRlclJhZGl1c1wiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwibGJnQ29sb3JcIiBjbGFzcz1cImZsZXgtY29sIFwiPlxuICAgICAgPCEtLSBDYXJkIHNlY3Rpb24gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwidmVyYmVuLWxlZnQtY2FyZC1kYXRhLXZpZXdcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSd2ZXJiZW4tbGVmdC1jYXJkLWRhdGEtdmlldyc+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gRm9vdGVyLS0+XG4gICAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwidmVyYmVuLWNhcmQtZGF0YS12aWV3LWZvb3RlclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9J3ZlcmJlbi1jYXJkLWRhdGEtdmlldy1mb290ZXInPjwvbmctY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gRGV0YWlsIFNlY3Rpb24tLT5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1kZXRhaWwtc2VjdGlvblwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwicmJnQ29sb3JcIiAqbmdJZj1cImhhc0N1cnJlbnRJdGVtKClcIlxuICAgICAgW3N0eWxlLmJvcmRlclJhZGl1c109XCJib3JkZXJSYWRpdXNcIj5cbiAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJjbGVhckRhdGEoKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdG9SaWdodFwiIGljb249XCJjbG9zZVwiIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIlxuICAgICAgICBjb2xvcj1cImJsYWNrXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgPG5nLWNvbnRhaW5lciAjcmlnaHQgbmdQcm9qZWN0QXM9XCJ2ZXJiZW4tcmlnaHQtY2FyZC1kYXRhLXZpZXdcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgI3JpZ2h0Q29udGVudCBzZWxlY3Q9J3ZlcmJlbi1yaWdodC1jYXJkLWRhdGEtdmlldyc+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1kYXRhLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWRhdGEtdmlldy9jYXJkLWRhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtZGF0YS12aWV3L2NhcmQtZGF0YS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFnQixZQUFZLEVBQXNCLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQyxNQUFNLGVBQWUsQ0FBQztBQUc1SyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7OztBQVNuRyxNQUFNLE9BQU8scUJBQXFCO0lBQ3ZCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDWixFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ1gsT0FBTyxHQUFTLE1BQU0sQ0FBQztJQUN2QixPQUFPLEdBQVMsTUFBTSxDQUFDO0lBQ3ZCLE1BQU0sR0FBUyxLQUFLLENBQUM7SUFDckIsTUFBTSxHQUFTLEtBQUssQ0FBQztJQUNyQixTQUFTLENBQVU7SUFDbkIsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsQ0FBVTtJQUNsQixNQUFNLENBQVU7SUFDaEIsT0FBTyxDQUFVO0lBQ2pCLFlBQVksR0FBUyxNQUFNLENBQUM7SUFDNUIsU0FBUyxDQUFVO0lBQ25CLFdBQVcsQ0FBVTtJQUNyQixZQUFZLEdBQVcsSUFBSSxDQUFDO0lBQzVCLFlBQVksR0FBWSxFQUFFLENBQUM7SUFDM0IsTUFBTSxDQUFTLENBQUMsbUNBQW1DO0lBQ25ELFlBQVksR0FBUSxDQUFDLENBQUM7SUFDdEIsTUFBTSxHQUFTLEtBQUssQ0FBQztJQUNyQixtQkFB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QixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNvQyxZQUFZO3NCQUFyRCxZQUFZO3VCQUFDLDBCQUEwQjtnQkFFbEIsSUFBSTtzQkFBekIsWUFBWTt1QkFBQyxNQUFNO2dCQXdCWCxXQUFXO3NCQUFuQixLQUFLO2dCQTJCRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBMkJJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIGNvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkLCBlZmZlY3QsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIHZpZXdDaGlsZCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXJkRGF0YSB9IGZyb20gJy4vY2FyZC1kYXRhJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSaWdodENhcmREYXRhVmlld0NvbXBvbmVudCB9IGZyb20gJy4vcmlnaHQtY2FyZC1kYXRhLXZpZXcvcmlnaHQtY2FyZC1kYXRhLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IExlZnRDYXJkRGF0YUNvbXBvbmVudCB9IGZyb20gJy4vbGVmdC1jYXJkLWRhdGEvbGVmdC1jYXJkLWRhdGEuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLWNhcmQtZGF0YS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcmQtZGF0YS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NhcmQtZGF0YS12aWV3LmNvbXBvbmVudC5jc3MnXG59KVxuXG5leHBvcnQgY2xhc3MgQ2FyZERhdGFWaWV3Q29tcG9uZW50ICB7XG4gIEBJbnB1dCgpIHBkID0gJzEwcHgnO1xuICBASW5wdXQoKSBtZyA9ICcwcHgnO1xuICBASW5wdXQoKSBsSGVpZ2h0PzpzdHJpbmc9XCIxMDAlXCI7XG4gIEBJbnB1dCgpIHJIZWlnaHQ/OnN0cmluZz1cIjEwMCVcIjtcbiAgQElucHV0KCkgcldpZHRoPzpzdHJpbmc9XCI3MCVcIjtcbiAgQElucHV0KCkgbFdpZHRoPzpzdHJpbmc9XCIzMCVcIjtcbiAgQElucHV0KCkgdGV4dENvbG9yPzpzdHJpbmcgO1xuICBASW5wdXQoKSBsYmdDb2xvcj86c3RyaW5nIDtcbiAgQElucHV0KCkgcmJnQ29sb3I/OnN0cmluZyA7XG4gIEBJbnB1dCgpIGJvcmRlcj86c3RyaW5nIDtcbiAgQElucHV0KCkgZGlzcGxheT86c3RyaW5nIDtcbiAgQElucHV0KCkgYm9yZGVyUmFkaXVzPzpzdHJpbmc9XCIxMnB4XCI7XG4gIEBJbnB1dCgpIGFjdGl2ZUNzcz86c3RyaW5nIDtcbiAgQElucHV0KCkgaW5BY3RpdmVDc3M/OnN0cmluZyA7XG4gIEBJbnB1dCgpIGRpc3BsYXlBc1Jvdz86Ym9vbGVhbiA9dHJ1ZTtcbiAgQElucHV0KCkgY2FyZERhdGFMaXN0OkNhcmREYXRhW109W107XG4gIEBJbnB1dCgpIGRhdGFJZCE6c3RyaW5nOyAvL3doYXQgdG8gdXNlIHRvIGlkZW50aWZ5IGVhY2ggZGF0YVxuICBASW5wdXQoKSB0b3RhbFJlY29yZHM6bnVtYmVyPTA7XG4gIEBJbnB1dCgpIGZvb3Rlcjpib29sZWFuPWZhbHNlO1xuICBASW5wdXQoKSBub09mVmlzaWJsZUNoaWxkcmVuOm51bWJlcj0zO1xuICBAQ29udGVudENoaWxkKFJpZ2h0Q2FyZERhdGFWaWV3Q29tcG9uZW50KSByaWdodENvbnRlbnQhOlJpZ2h0Q2FyZERhdGFWaWV3Q29tcG9uZW50OyBcbiAgLy8gQENvbnRlbnRDaGlsZChMZWZ0Q2FyZERhdGFDb21wb25lbnQpIGxlZnQhOkxlZnRDYXJkRGF0YUNvbXBvbmVudDsgXG4gIEBDb250ZW50Q2hpbGQoJ2NhcmQnKSBjYXJkITogVGVtcGxhdGVSZWY8YW55PjtcbiAgLy8gQENvbnRlbnRDaGlsZCgnY29udGVudCcpIGNvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBjdXJyZW50SXRlbTphbnk9e307XG4gIGN1cnJlbnRDaGlsZEl0ZW06YW55PXt9O1xuXG4gIGhhc0N1cnJlbnRJdGVtKClcbiAge1xuICAgIHJldHVybiAhIU9iamVjdC5rZXlzKHRoaXMuY3VycmVudEl0ZW0pLmxlbmd0aCB8fCAhIU9iamVjdC5rZXlzKHRoaXMuY3VycmVudENoaWxkSXRlbSkubGVuZ3RoXG4gIH1cbiAgY2xlYXJEYXRhKClcbiAgIHtcbiAgICB0aGlzLmN1cnJlbnRJdGVtPXt9IGFzIENhcmREYXRhXG4gICAgdGhpcy5jdXJyZW50Q2hpbGRJdGVtPXt9IGFzIENhcmREYXRhXG4gICAgdGhpcy5jYXJkRGF0YUxpc3QuZm9yRWFjaChfPT57XG4gICAgICBfLnNlbGVjdGVkPWZhbHNlO1xuICAgICAgXy5jaGlsZHJlbi5mb3JFYWNoKGM9PntjLnNlbGVjdGVkPWZhbHNlO2MuaXNDaGlsZHJlbkV4cGFuZGVkPWZhbHNlfSlcbiAgICAgIF8uaXNDaGlsZHJlbkV4cGFuZGVkPWZhbHNlXG4gICAgfSk7XG4gICB9XG4gICBzZXREZXRhaWxEYXRhKClcbiAgIHtcbiAgICAgdGhpcy5yaWdodENvbnRlbnQucGFyZW50RGF0YT0gdGhpcy5jdXJyZW50SXRlbTtcbiAgICAgIHRoaXMucmlnaHRDb250ZW50LmNoaWxEYXRhPSB0aGlzLmN1cnJlbnRDaGlsZEl0ZW07XG4gICB9XG4gIEBJbnB1dCgpIG9uSXRlbUNsaWNrKGl0ZW06Q2FyZERhdGEpe1xuICAgIHRoaXMucmVzZXRDaGlsZHJlbihpdGVtKTtcbiAgICBpdGVtLnNlbGVjdGVkPSB0cnVlO1xuICAgIHRoaXMuY2FyZERhdGFMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZihlbGVtZW50LmRhdGFbdGhpcy5kYXRhSWRdPT1pdGVtLmRhdGFbdGhpcy5kYXRhSWRdKVxuICAgICAge1xuICAgICAgICB0aGlzLmN1cnJlbnRJdGVtPSBpdGVtO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAge1xuICAgICAgICBlbGVtZW50LnNlbGVjdGVkPWZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2V0RGV0YWlsRGF0YSgpXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEl0ZW1cbiAgfVxuIHJlc2V0Q2hpbGRyZW4obmV3U2VsZWN0OkNhcmREYXRhKVxuICB7XG4gICAgaWYodGhpcy5jdXJyZW50SXRlbSAmJiB0aGlzLmN1cnJlbnRJdGVtLmNoaWxkcmVuPy5sZW5ndGgpe1xuICAgKHRoaXMuY3VycmVudEl0ZW0uY2hpbGRyZW4gYXMgYW55W10pLmZvckVhY2goYz0+e1xuICAgIGMuc2VsZWN0ZWQ9ZmFsc2U7XG4gIH0pXG4gIGlmKG5ld1NlbGVjdC5kYXRhW3RoaXMuZGF0YUlkXSE9dGhpcy5jdXJyZW50SXRlbS5kYXRhW3RoaXMuZGF0YUlkXSlcbiAgICB0aGlzLmN1cnJlbnRJdGVtLmlzQ2hpbGRyZW5FeHBhbmRlZD1mYWxzZTtcbn1cbiAgdGhpcy5jdXJyZW50Q2hpbGRJdGVtPSBudWxsO1xuICB9XG4gIEBJbnB1dCgpIG9uQ2FyZENoaWxkQ2xpY2soY2hpbGRJbmRleDpudW1iZXIpe1xuICAgIHZhciBpdGVtID0gdGhpcy5jdXJyZW50SXRlbS5jaGlsZHJlbltjaGlsZEluZGV4XTtcbiAgICAodGhpcy5jdXJyZW50SXRlbS5jaGlsZHJlbiBhcyBhbnlbXSkuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmKGVsZW1lbnQuZGF0YVt0aGlzLmRhdGFJZF09PWl0ZW0uZGF0YVt0aGlzLmRhdGFJZF0pXG4gICAgICB7XG4gICAgICAgIHRoaXMuY3VycmVudENoaWxkSXRlbT0gaXRlbTtcbiAgICAgIH1cbiAgICAgIGVsc2VcbiAgICAgIHtcbiAgICAgICAgZWxlbWVudC5zZWxlY3RlZD1mYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmN1cnJlbnRDaGlsZEl0ZW0uc2VsZWN0ZWQ9dHJ1ZTtcbiAgICB0aGlzLnNldERldGFpbERhdGEoKVxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRDaGlsZEl0ZW1cbiAgfVxuICBzaG93Q2hpbGRyZW4oaXRlbTpDYXJkRGF0YSlcbiAge1xuICAgIHZhciBjdXJyVG9nZ2xlU3RhdGU9IGl0ZW0uaXNDaGlsZHJlbkV4cGFuZGVkO1xuICAgIHRoaXMuY2FyZERhdGFMaXN0LmZvckVhY2goXz0+e1xuICAgICAgXy5pc0NoaWxkcmVuRXhwYW5kZWQ9ZmFsc2VcbiAgICAgIF8uc2VsZWN0ZWQ9ZmFsc2U7XG4gICAgfSk7XG4gICAgaXRlbS5zZWxlY3RlZD10cnVlO1xuICAgIGl0ZW0uaXNDaGlsZHJlbkV4cGFuZGVkPSFjdXJyVG9nZ2xlU3RhdGVcbiAgfVxuXG4gIEBPdXRwdXQoKSBsb2FkTW9yZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBvbkxvYWRNb3JlQ2xpY2soKVxuICB7XG4gICAgdGhpcy5sb2FkTW9yZUNsaWNrLmVtaXQoKTtcbiAgfVxufVxuIiwiPGRpdiAjbWFpbiBjbGFzcz1cImZsZXgtY29sXCIgW3N0eWxlLmRpc3BsYXldPVwiJ2ZsZXgnXCI+XG4gIDwhLS0gSGVhZGVyIC0tPlxuICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwidmVyYmVuLWNhcmQtZGF0YS12aWV3LWhlYWRlclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD0ndmVyYmVuLWNhcmQtZGF0YS12aWV3LWhlYWRlcic+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZGl2IFtuZ0NsYXNzXT1cIiFoYXNDdXJyZW50SXRlbSgpPydtYXN0ZXItb25seS1jb250YWluZXInOidtYXN0ZXItZGV0YWlsLWNvbnRhaW5lcidcIj5cbiAgICA8IS0tIENhcmQgYW5kIEZvb3RlciAtLT5cbiAgICA8ZGl2IFtzdHlsZS5ib3JkZXJSYWRpdXNdPVwiYm9yZGVyUmFkaXVzXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJsYmdDb2xvclwiIGNsYXNzPVwiZmxleC1jb2wgXCI+XG4gICAgICA8IS0tIENhcmQgc2VjdGlvbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJ2ZXJiZW4tbGVmdC1jYXJkLWRhdGEtdmlld1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9J3ZlcmJlbi1sZWZ0LWNhcmQtZGF0YS12aWV3Jz48L25nLWNvbnRlbnQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBGb290ZXItLT5cbiAgICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJ2ZXJiZW4tY2FyZC1kYXRhLXZpZXctZm9vdGVyXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0ndmVyYmVuLWNhcmQtZGF0YS12aWV3LWZvb3Rlcic+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBEZXRhaWwgU2VjdGlvbi0tPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWRldGFpbC1zZWN0aW9uXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJyYmdDb2xvclwiICpuZ0lmPVwiaGFzQ3VycmVudEl0ZW0oKVwiXG4gICAgICBbc3R5bGUuYm9yZGVyUmFkaXVzXT1cImJvcmRlclJhZGl1c1wiPlxuICAgICAgPHZlcmJlbi1zdmcgKGNsaWNrKT1cImNsZWFyRGF0YSgpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0b1JpZ2h0XCIgaWNvbj1cImNsb3NlXCIgW3dpZHRoXT1cIjIwXCIgW2hlaWdodF09XCIyMFwiXG4gICAgICAgIGNvbG9yPVwiYmxhY2tcIj48L3ZlcmJlbi1zdmc+XG4gICAgICA8bmctY29udGFpbmVyICNyaWdodCBuZ1Byb2plY3RBcz1cInZlcmJlbi1yaWdodC1jYXJkLWRhdGEtdmlld1wiPlxuICAgICAgICA8bmctY29udGVudCAjcmlnaHRDb250ZW50IHNlbGVjdD0ndmVyYmVuLXJpZ2h0LWNhcmQtZGF0YS12aWV3Jz48L25nLWNvbnRlbnQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -169,18 +169,22 @@ export class DataTableComponent {
|
|
|
169
169
|
});
|
|
170
170
|
};
|
|
171
171
|
allRowsSelected = () => {
|
|
172
|
-
|
|
172
|
+
const nonGroupRows = this.data().filter((row) => !this.isGroupRow(row));
|
|
173
|
+
return (nonGroupRows.length > 0 &&
|
|
174
|
+
this.selectedRowsSignal().size === nonGroupRows.length);
|
|
173
175
|
};
|
|
174
176
|
someRowsSelected = () => {
|
|
177
|
+
const nonGroupRows = this.data().filter((row) => !this.isGroupRow(row));
|
|
175
178
|
return (this.selectedRowsSignal().size > 0 &&
|
|
176
|
-
this.selectedRowsSignal().size <
|
|
179
|
+
this.selectedRowsSignal().size < nonGroupRows.length);
|
|
177
180
|
};
|
|
178
181
|
toggleAllRows = () => {
|
|
179
182
|
if (this.allRowsSelected()) {
|
|
180
183
|
this.selectedRowsSignal.set(new Set());
|
|
181
184
|
}
|
|
182
185
|
else {
|
|
183
|
-
|
|
186
|
+
const nonGroupRows = this.data().filter((row) => !this.isGroupRow(row));
|
|
187
|
+
this.selectedRowsSignal.set(new Set(nonGroupRows.map((row) => row.id)));
|
|
184
188
|
}
|
|
185
189
|
this.emitSelectionChange();
|
|
186
190
|
};
|
|
@@ -399,4 +403,4 @@ const defaultTableStyles = {
|
|
|
399
403
|
borderTop: '2px solid #e0e0e0',
|
|
400
404
|
},
|
|
401
405
|
};
|
|
402
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFHTixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFTckQsTUFBTSxPQUFPLGtCQUFrQjtJQUc3Qix3Q0FBd0M7SUFDeEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQU8sQ0FBQztJQUM3QixPQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBeUIsQ0FBQztJQUNsRCw2QkFBNkI7SUFDN0IseUJBQXlCO0lBQ3pCLHdCQUF3QjtJQUN4QixJQUFJO0lBQ0osb0JBQW9CO0lBQ3BCLCtCQUErQjtJQUMvQixJQUFJO0lBQ0osMkJBQTJCO0lBQzNCLHVDQUF1QztJQUN2Qyw2QkFBNkI7SUFDN0IsOENBQThDO0lBQzlDLG1DQUFtQztJQUNuQyxJQUFJO0lBQ0osMEJBQTBCO0lBQzFCLE9BQU8sR0FBRyxLQUFLLEVBQStCLENBQUM7SUFFdEMsV0FBVyxHQUFnQixrQkFBa0IsQ0FBQztJQUd2RCxlQUFlLENBQThCO0lBRW5DLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFDO0lBQ2hDLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFD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LEVBQUUsTUFBTTtRQUNiLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLE9BQU8sRUFBRSxXQUFXO1FBQ3BCLFlBQVksRUFBRSxtQkFBbUI7S0FDbEM7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUU7WUFDSixlQUFlLEVBQUUsU0FBUztTQUMzQjtRQUNELEdBQUcsRUFBRTtZQUNILGVBQWUsRUFBRSxTQUFTO1NBQzNCO1FBQ0QsR0FBRyxFQUFFO1lBQ0gsUUFBUSxFQUFFLENBQUM7WUFDWCxLQUFLLEVBQUU7Z0JBQ0wsZUFBZSxFQUFFLFNBQVM7YUFDM0I7U0FDRjtLQUNGO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsT0FBTyxFQUFFLFdBQVc7UUFDcEIsWUFBWSxFQUFFLG1CQUFtQjtLQUNsQztJQUNELE1BQU0sRUFBRTtRQUNOLGVBQWUsRUFBRSxTQUFTO1FBQzFCLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLEtBQUssRUFBRSxNQUFNO1FBQ2IsU0FBUyxFQUFFLE1BQU07UUFDakIsT0FBTyxFQUFFLFdBQVc7UUFDcEIsU0FBUyxFQUFFLG1CQUFtQjtLQUMvQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIGlucHV0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2lnbmFsLFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbHVtbkRlZmluaXRpb24gfSBmcm9tICcuL2RhdGEtdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgQ29sdW1uRGlyZWN0aXZlIH0gZnJvbSAnLi9jb2x1bW4uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJhc2VTdHlsZXMsIFRhYmxlU3R5bGVzIH0gZnJvbSAnLi9zdHlsZS50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZGF0YS10YWJsZS5jb21wb25lbnQuY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIHwgbnVtYmVyIH0+XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0XG57XG4gIC8vIE1vZGlmeSBkYXRhIGlucHV0IHRvIHVzZSBncm91cGVkIGRhdGFcbiAgZGF0YSA9IGlucHV0LnJlcXVpcmVkPFRbXT4oKTtcbiAgY29sdW1ucyA9IGlucHV0LnJlcXVpcmVkPENvbHVtbkRlZmluaXRpb248VD5bXT4oKTtcbiAgLy8gQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgLy8gc2V0IGRhdGEodmFsdWU6IFRbXSkge1xuICAvLyAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcbiAgLy8gfVxuICAvLyBnZXQgZGF0YSgpOiBUW10ge1xuICAvLyAgIHJldHVybiB0aGlzLmdyb3VwZWREYXRhKCk7XG4gIC8vIH1cbiAgLy8gcHJpdmF0ZSBfZGF0YTogVFtdID0gW107XG4gIC8vIE1vZGlmeSBjb2x1bW5zIGlucHV0IHRvIHVzZSBhIHNpZ25hbFxuICAvLyBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAvLyBzZXQgY29sdW1ucyh2YWx1ZTogQ29sdW1uRGVmaW5pdGlvbjxUPltdKSB7XG4gIC8vICAgdGhpcy5jb2x1bW5zU2lnbmFsLnNldCh2YWx1ZSk7XG4gIC8vIH1cbiAgLy8gTmV3IGlucHV0cyBmb3IgZ3JvdXBpbmdcbiAgZ3JvdXBCeSA9IGlucHV0PGtleW9mIFQgfCAoKHJvdzogVCkgPT4gYW55KT4oKTtcblxuICBASW5wdXQoKSBzdHlsZUNvbmZpZzogVGFibGVTdHlsZXMgPSBkZWZhdWx0VGFibGVTdHlsZXM7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihDb2x1bW5EaXJlY3RpdmUpXG4gIGNvbHVtblRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxDb2x1bW5EaXJlY3RpdmU+O1xuXG4gIEBPdXRwdXQoKSByb3dFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuICBAT3V0cHV0KCkgcm93U2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQE91dHB1dCgpIHJvd0RlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuXG4gIHByaXZhdGUgZWRpdGluZ1Jvd3NTaWduYWwgPSBzaWduYWw8U2V0PHN0cmluZyB8IG51bWJlcj4+KG5ldyBTZXQoKSk7XG4gIHByaXZhdGUgc2VsZWN0ZWRSb3dzU2lnbmFsID0gc2lnbmFsPFNldDxzdHJpbmcgfCBudW1iZXI+PihuZXcgU2V0KCkpO1xuICBwcml2YXRlIGVkaXRlZERhdGFTaWduYWwgPSBzaWduYWw8TWFwPHN0cmluZyB8IG51bWJlciwgRWRpdGVkRGF0YTxUPj4+KFxuICAgIG5ldyBNYXAoKVxuICApO1xuXG4gIGNvbHVtbnNTaWduYWw6IFdyaXRhYmxlU2lnbmFsPENvbHVtbkRlZmluaXRpb248VD5bXT4gPSBzaWduYWwoW10pO1xuXG4gIGhhc0Zvb3RlciA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5jb2x1bW5zU2lnbmFsKCkuc29tZSgoY29sKSA9PiBjb2wuZm9vdGVyVGVtcGxhdGUgIT09IHVuZGVmaW5lZClcbiAgKTtcblxuICAvLyBUeXBlIGd1YXJkIG1ldGhvZCB0byBjaGVjayBmb3IgZ3JvdXAgcm93c1xuICBpc0dyb3VwUm93KHJvdzogVCk6IHJvdyBpcyBUICYgeyBpc0dyb3VwUm93OiB0cnVlOyBncm91cFRpdGxlOiBhbnkgfSB7XG4gICAgcmV0dXJuICEhKHJvdyBhcyBhbnkpLmlzR3JvdXBSb3c7XG4gIH1cblxuICAvLyBDb21wdXRlZCBwcm9wZXJ0eSBmb3IgZ3JvdXBlZCBkYXRhXG4gIGdyb3VwZWREYXRhID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIC8vIElmIG5vIGdyb3VwaW5nIGlzIHNwZWNpZmllZCwgcmV0dXJuIG9yaWdpbmFsIGRhdGFcbiAgICBpZiAoIXRoaXMuZ3JvdXBCeSgpKSByZXR1cm4gdGhpcy5kYXRhKCk7XG5cbiAgICAvLyBEZXRlcm1pbmUgZ3JvdXAgZnVuY3Rpb24gYmFzZWQgb24gaW5wdXQgdHlwZVxuICAgIGNvbnN0IGdldEdyb3VwVmFsdWUgPVxuICAgICAgdHlwZW9mIHRoaXMuZ3JvdXBCeSgpID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gKHRoaXMuZ3JvdXBCeSgpIGFzIChyb3c6IFQpID0+IGFueSlcbiAgICAgICAgOiAocm93OiBUKSA9PiByb3dbdGhpcy5ncm91cEJ5KCkgYXMga2V5b2YgVF07XG5cbiAgICAvLyBHcm91cCB0aGUgZGF0YVxuICAgIGNvbnN0IGdyb3VwcyA9IG5ldyBNYXA8YW55LCBUW10+KCk7XG5cbiAgICB0aGlzLmRhdGEoKS5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgIGlmIChnZXRHcm91cFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBWYWx1ZSA9IGdldEdyb3VwVmFsdWUocm93KTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdHcm91cCA9IGdyb3Vwcy5nZXQoZ3JvdXBWYWx1ZSkgfHwgW107XG4gICAgICAgIGdyb3Vwcy5zZXQoZ3JvdXBWYWx1ZSwgWy4uLmV4aXN0aW5nR3JvdXAsIHJvd10pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gQ29uc3RydWN0IGZpbmFsIGdyb3VwZWQgZGF0YSBhcnJheSB3aXRoIGdyb3VwIHJvd3NcbiAgICBjb25zdCBncm91cGVkRGF0YUFycmF5OiAoVCAmIHsgaXNHcm91cFJvdz86IGJvb2xlYW4gfSlbXSA9IFtdO1xuXG4gICAgZ3JvdXBzLmZvckVhY2goKGdyb3VwUm93cywgZ3JvdXBWYWx1ZSkgPT4ge1xuICAgICAgLy8gQ3JlYXRlIGEgZ3JvdXAgcm93XG4gICAgICBjb25zdCBncm91cFJvdyA9IHtcbiAgICAgICAgaWQ6IGBncm91cC0ke2dyb3VwVmFsdWV9YCxcbiAgICAgICAgaXNHcm91cFJvdzogdHJ1ZSxcbiAgICAgICAgZ3JvdXBWYWx1ZSxcbiAgICAgICAgZ3JvdXBUaXRsZTogZ3JvdXBWYWx1ZSxcbiAgICAgIH0gYXMgdW5rbm93biBhcyBUICYgeyBpc0dyb3VwUm93OiBib29sZWFuIH07XG5cbiAgICAgIGdyb3VwZWREYXRhQXJyYXkucHVzaChncm91cFJvdyk7XG4gICAgICBncm91cGVkRGF0YUFycmF5LnB1c2goLi4uZ3JvdXBSb3dzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBncm91cGVkRGF0YUFycmF5O1xuICB9KTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBTZXQgaW5pdGlhbCBjb2x1bW5zIGlmIG5vdCBhbHJlYWR5IHNldFxuICAgIGlmICh0aGlzLmNvbHVtbnNTaWduYWwoKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29sdW1uc1NpZ25hbC5zZXQodGhpcy5jb2x1bW5zKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmNvbHVtblRlbXBsYXRlcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLm1lcmdlQ29sdW1uVGVtcGxhdGVzKCkpO1xuICAgIHRoaXMubWVyZ2VDb2x1bW5UZW1wbGF0ZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VDb2x1bW5UZW1wbGF0ZXMoKSB7XG4gICAgLy8gT25seSBtZXJnZSBpZiB3ZSBoYXZlIGJvdGggY29sdW1ucyBhbmQgdGVtcGxhdGVzXG4gICAgaWYgKHRoaXMuY29sdW1uc1NpZ25hbCgpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zU2lnbmFsKCkubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdUZW1wbGF0ZSA9IHRoaXMuY29sdW1uVGVtcGxhdGVzLmZpbmQoXG4gICAgICAgICAgKHQpID0+IHQuY29sdW1uSWQgPT09IGNvbHVtbi5pZFxuICAgICAgICApO1xuICAgICAgICBpZiAobWF0Y2hpbmdUZW1wbGF0ZSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgICBjZWxsVGVtcGxhdGU6IG1hdGNoaW5nVGVtcGxhdGUuY2VsbFRlbXBsYXRlLFxuICAgICAgICAgICAgY2VsbEVkaXRUZW1wbGF0ZTogbWF0Y2hpbmdUZW1wbGF0ZS5jZWxsRWRpdFRlbXBsYXRlLFxuICAgICAgICAgICAgaGVhZGVyVGVtcGxhdGU6IG1hdGNoaW5nVGVtcGxhdGUuaGVhZGVyVGVtcGxhdGUsXG4gICAgICAgICAgICBmb290ZXJUZW1wbGF0ZTogbWF0Y2hpbmdUZW1wbGF0ZS5mb290ZXJUZW1wbGF0ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29sdW1uc1NpZ25hbC5zZXQodXBkYXRlZENvbHVtbnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldENlbGxWYWx1ZSA9IChyb3c6IFQsIGNvbHVtbjogQ29sdW1uRGVmaW5pdGlvbjxUPik6IGFueSA9PiB7XG4gICAgLy8gRm9yIGdyb3VwIHJvd3MsIHJldHVybiB0aGUgZ3JvdXAgdGl0bGUgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMuaXNHcm91cFJvdyhyb3cpKSB7XG4gICAgICByZXR1cm4gKHJvdyBhcyBhbnkpLmdyb3VwVGl0bGU7XG4gICAgfVxuXG4gICAgLy8gRXhpc3RpbmcgbG9naWMgZm9yIG5vcm1hbCByb3dzXG4gICAgaWYgKGNvbHVtbi5hY2Nlc3NvcktleSkge1xuICAgICAgcmV0dXJuIChyb3cgYXMgYW55KVtjb2x1bW4uYWNjZXNzb3JLZXldO1xuICAgIH1cbiAgICByZXR1cm4gY29sdW1uLmFjY2Vzc29yRm4gPyBjb2x1bW4uYWNjZXNzb3JGbihyb3cpIDogdW5kZWZpbmVkO1xuICB9O1xuXG4gIGlzUm93RWRpdGluZyA9IChyb3dJZDogc3RyaW5nIHwgbnVtYmVyKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ1Jvd3NTaWduYWwoKS5oYXMocm93SWQpO1xuICB9O1xuXG4gIHRvZ2dsZVJvd0VkaXQgPSAocm93SWQ6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgIHRoaXMuZWRpdGluZ1Jvd3NTaWduYWwudXBkYXRlKChzZXQpID0+IHtcbiAgICAgIGNvbnN0IG5ld1NldCA9IG5ldyBTZXQoc2V0KTtcbiAgICAgIGlmIChuZXdTZXQuaGFzKHJvd0lkKSkge1xuICAgICAgICBuZXdTZXQuZGVsZXRlKHJvd0lkKTtcbiAgICAgICAgdGhpcy5zYXZlUm93KHJvd0lkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1NldC5hZGQocm93SWQpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVFZGl0ZWREYXRhKHJvd0lkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXdTZXQ7XG4gICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRWRpdGVkRGF0YShyb3dJZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgY29uc3Qgcm93ID0gdGhpcy5kYXRhKCkuZmluZCgocikgPT4gci5pZCA9PT0gcm93SWQpO1xuICAgIGlmIChyb3cpIHtcbiAgICAgIHRoaXMuZWRpdGVkRGF0YVNpZ25hbC51cGRhdGUoKG1hcCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdNYXAgPSBuZXcgTWFwKG1hcCk7XG4gICAgICAgIG5ld01hcC5zZXQocm93SWQsIHsgLi4ucm93IH0pO1xuICAgICAgICByZXR1cm4gbmV3TWFwO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzYXZlUm93KHJvd0lkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBjb25zdCBlZGl0ZWREYXRhID0gdGhpcy5lZGl0ZWREYXRhU2lnbmFsKCkuZ2V0KHJvd0lkKTtcbiAgICBpZiAoZWRpdGVkRGF0YSkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxSb3dJbmRleCA9IHRoaXMuZGF0YSgpLmZpbmRJbmRleCgocikgPT4gci5pZCA9PT0gcm93SWQpO1xuICAgICAgaWYgKG9yaWdpbmFsUm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRSb3cgPSB7IC4uLnRoaXMuZGF0YSgpW29yaWdpbmFsUm93SW5kZXhdLCAuLi5lZGl0ZWREYXRhIH07XG4gICAgICAgIHRoaXMuZGF0YSgpW29yaWdpbmFsUm93SW5kZXhdID0gdXBkYXRlZFJvdztcbiAgICAgICAgdGhpcy5yb3dTYXZlLmVtaXQodXBkYXRlZFJvdyk7XG4gICAgICAgIHRoaXMuZWRpdGVkRGF0YVNpZ25hbC51cGRhdGUoKG1hcCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld01hcCA9IG5ldyBNYXAobWFwKTtcbiAgICAgICAgICBuZXdNYXAuZGVsZXRlKHJvd0lkKTtcbiAgICAgICAgICByZXR1cm4gbmV3TWFwO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc1Jvd1NlbGVjdGVkID0gKHJvd0lkOiBzdHJpbmcgfCBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3NTaWduYWwoKS5oYXMocm93SWQpO1xuICB9O1xuXG4gIHRvZ2dsZVJvd1NlbGVjdGlvbiA9IChyb3dJZDogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3NTaWduYWwudXBkYXRlKChzZXQpID0+IHtcbiAgICAgIGNvbnN0IG5ld1NldCA9IG5ldyBTZXQoc2V0KTtcbiAgICAgIGlmIChuZXdTZXQuaGFzKHJvd0lkKSkge1xuICAgICAgICBuZXdTZXQuZGVsZXRlKHJvd0lkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1NldC5hZGQocm93SWQpO1xuICAgICAgfVxuICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgICByZXR1cm4gbmV3U2V0O1xuICAgIH0pO1xuICB9O1xuXG4gIGFsbFJvd3NTZWxlY3RlZCA9ICgpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3NTaWduYWwoKS5zaXplID09PSB0aGlzLmRhdGEubGVuZ3RoO1xuICB9O1xuXG4gIHNvbWVSb3dzU2VsZWN0ZWQgPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzU2lnbmFsKCkuc2l6ZSA+IDAgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzU2lnbmFsKCkuc2l6ZSA8IHRoaXMuZGF0YS5sZW5ndGhcbiAgICApO1xuICB9O1xuXG4gIHRvZ2dsZUFsbFJvd3MgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuYWxsUm93c1NlbGVjdGVkKCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzU2lnbmFsLnNldChuZXcgU2V0KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93c1NpZ25hbC5zZXQobmV3IFNldCh0aGlzLmRhdGEoKS5tYXAoKHJvdykgPT4gcm93LmlkKSkpO1xuICAgIH1cbiAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2UoKTtcbiAgfTtcblxuICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2UoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5kYXRhKCkuZmlsdGVyKChyb3cpID0+XG4gICAgICB0aGlzLnNlbGVjdGVkUm93c1NpZ25hbCgpLmhhcyhyb3cuaWQpXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHNlbGVjdGVkUm93cyk7XG4gIH1cblxuICBnZXRIZWFkZXJDb250ZXh0KGNvbHVtbjogQ29sdW1uRGVmaW5pdGlvbjxUPikge1xuICAgIHJldHVybiB7XG4gICAgICAkaW1wbGljaXQ6IGNvbHVtbixcbiAgICAgIGNvbHVtbixcbiAgICAgIGFsbFJvd3NTZWxlY3RlZDogdGhpcy5hbGxSb3dzU2VsZWN0ZWQsXG4gICAgICBzb21lUm93c1NlbGVjdGVkOiB0aGlzLnNvbWVSb3dzU2VsZWN0ZWQsXG4gICAgICB0b2dnbGVBbGxSb3dzOiB0aGlzLnRvZ2dsZUFsbFJvd3MsXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZUVkaXRlZFZhbHVlKHJvd0lkOiBzdHJpbmcgfCBudW1iZXIsIGNvbHVtbklkOiBrZXlvZiBULCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5lZGl0ZWREYXRhU2lnbmFsLnVwZGF0ZSgobWFwKSA9PiB7XG4gICAgICBjb25zdCBuZXdNYXAgPSBuZXcgTWFwKG1hcCk7XG4gICAgICBjb25zdCByb3dEYXRhID0gbmV3TWFwLmdldChyb3dJZCkgfHwgKHt9IGFzIEVkaXRlZERhdGE8VD4pO1xuICAgICAgbmV3TWFwLnNldChyb3dJZCwgeyAuLi5yb3dEYXRhLCBbY29sdW1uSWRdOiB2YWx1ZSB9KTtcbiAgICAgIHJldHVybiBuZXdNYXA7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVOZXN0ZWRFZGl0ZWRWYWx1ZShcbiAgICByb3dJZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIGNvbHVtbklkOiBrZXlvZiBULFxuICAgIG5lc3RlZEZpZWxkOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueVxuICApIHtcbiAgICB0aGlzLmVkaXRlZERhdGFTaWduYWwudXBkYXRlKChtYXApID0+IHtcbiAgICAgIGNvbnN0IG5ld01hcCA9IG5ldyBNYXAobWFwKTtcbiAgICAgIGNvbnN0IHJvd0RhdGEgPSBuZXdNYXAuZ2V0KHJvd0lkKSB8fCAoe30gYXMgRWRpdGVkRGF0YTxUPik7XG4gICAgICBjb25zdCBjb2x1bW5EYXRhID0gKHJvd0RhdGFbY29sdW1uSWRdIGFzIGFueSkgfHwge307XG4gICAgICBuZXdNYXAuc2V0KHJvd0lkLCB7XG4gICAgICAgIC4uLnJvd0RhdGEsXG4gICAgICAgIFtjb2x1bW5JZF06IHtcbiAgICAgICAgICAuLi5jb2x1bW5EYXRhLFxuICAgICAgICAgIFtuZXN0ZWRGaWVsZF06IHZhbHVlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3TWFwO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2VsbENvbnRleHQocm93OiBULCBjb2x1bW46IENvbHVtbkRlZmluaXRpb248VD4sIHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCByb3dJZCA9IHJvdy5pZDtcbiAgICBjb25zdCBpc0VkaXRpbmcgPSB0aGlzLmlzUm93RWRpdGluZyhyb3dJZCk7XG4gICAgY29uc3QgZWRpdGVkRGF0YSA9IHRoaXMuZWRpdGVkRGF0YVNpZ25hbCgpLmdldChyb3dJZCk7XG5cbiAgICBsZXQgdmFsdWU6IGFueTtcbiAgICBpZiAoaXNFZGl0aW5nICYmIGVkaXRlZERhdGEgJiYgY29sdW1uLmlkIGluIGVkaXRlZERhdGEpIHtcbiAgICAgIHZhbHVlID0gZWRpdGVkRGF0YVtjb2x1bW4uaWQgYXMga2V5b2YgVF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gdGhpcy5nZXRDZWxsVmFsdWUocm93LCBjb2x1bW4pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAkaW1wbGljaXQ6IHZhbHVlLFxuICAgICAgdmFsdWUsXG4gICAgICByb3csXG4gICAgICBjb2x1bW4sXG4gICAgICByb3dJbmRleCxcbiAgICAgIGlzRWRpdGluZyxcbiAgICAgIGlzU2VsZWN0ZWQ6IHRoaXMuaXNSb3dTZWxlY3RlZChyb3dJZCksXG4gICAgICB0b2dnbGVSb3dTZWxlY3Rpb246ICgpID0+IHRoaXMudG9nZ2xlUm93U2VsZWN0aW9uKHJvd0lkKSxcbiAgICAgIHRvZ2dsZVJvd0VkaXQ6ICgpID0+IHRoaXMudG9nZ2xlUm93RWRpdChyb3dJZCksXG4gICAgICBkZWxldGVSb3c6ICgpID0+IHRoaXMuZGVsZXRlUm93KHJvd0lkKSxcbiAgICAgIHVwZGF0ZVZhbHVlOiAobmV3VmFsdWU6IGFueSkgPT5cbiAgICAgICAgdGhpcy51cGRhdGVFZGl0ZWRWYWx1ZShyb3dJZCwgY29sdW1uLmlkIGFzIGtleW9mIFQsIG5ld1ZhbHVlKSxcbiAgICAgIHVwZGF0ZU5lc3RlZFZhbHVlOiAobmVzdGVkRmllbGQ6IHN0cmluZywgbmV3VmFsdWU6IGFueSkgPT5cbiAgICAgICAgdGhpcy51cGRhdGVOZXN0ZWRFZGl0ZWRWYWx1ZShcbiAgICAgICAgICByb3dJZCxcbiAgICAgICAgICBjb2x1bW4uaWQgYXMga2V5b2YgVCxcbiAgICAgICAgICBuZXN0ZWRGaWVsZCxcbiAgICAgICAgICBuZXdWYWx1ZVxuICAgICAgICApLFxuICAgIH07XG4gIH1cblxuICBkZWxldGVSb3cgPSAocm93SWQ6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHJvd1RvRGVsZXRlID0gdGhpcy5kYXRhKCkuZmluZCgocm93KSA9PiByb3cuaWQgPT09IHJvd0lkKTtcbiAgICBpZiAocm93VG9EZWxldGUpIHtcbiAgICAgIHRoaXMucm93RGVsZXRlLmVtaXQocm93VG9EZWxldGUpO1xuICAgIH1cbiAgfTtcblxuICBnZXRGb290ZXJDb250ZXh0KGNvbHVtbjogQ29sdW1uRGVmaW5pdGlvbjxUPikge1xuICAgIHJldHVybiB7XG4gICAgICAkaW1wbGljaXQ6IGNvbHVtbixcbiAgICAgIGNvbHVtbixcbiAgICAgIGRhdGE6IHRoaXMuZGF0YSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0VGFibGVTdHlsZSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLnN0eWxlQ29uZmlnLFxuICAgICAgZm9udEZhbWlseTogdGhpcy5zdHlsZUNvbmZpZy5mb250RmFtaWx5LFxuICAgICAgZm9udFNpemU6IHRoaXMuc3R5bGVDb25maWcuZm9udFNpemUsXG4gICAgICB3aGl0ZVNwYWNlOiB0aGlzLnN0eWxlQ29uZmlnLndoaXRlU3BhY2UsXG4gICAgICBtYXJnaW46IHRoaXMuc3R5bGVDb25maWcubWFyZ2luLFxuICAgICAgYm9yZGVyOiB0aGlzLnN0eWxlQ29uZmlnLmJvcmRlcixcbiAgICAgIGJvcmRlckNvbGxhcHNlOiB0aGlzLnN0eWxlQ29uZmlnLmJvcmRlckNvbGxhcHNlLFxuICAgICAgYm9yZGVyU3BhY2luZzogdGhpcy5zdHlsZUNvbmZpZy5ib3JkZXJTcGFjaW5nLFxuICAgICAgdGFibGVMYXlvdXQ6IHRoaXMuc3R5bGVDb25maWcudGFibGVMYXlvdXQsXG4gICAgICB3aWR0aDogdGhpcy5zdHlsZUNvbmZpZy53aWR0aCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0SGVhZGVyU3R5bGUoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5zdHlsZUNvbmZpZy5oZWFkZXIsXG4gICAgICBwb3NpdGlvbjogdGhpcy5zdHlsZUNvbmZpZy5oZWFkZXI/LnN0aWNreVRvcCA/ICdzdGlja3knIDogJ3N0YXRpYycsXG4gICAgICB0b3A6IHRoaXMuc3R5bGVDb25maWcuaGVhZGVyPy5zdGlja3lUb3AgPyAnMCcgOiAnYXV0bycsXG4gICAgICB6SW5kZXg6IHRoaXMuc3R5bGVDb25maWcuaGVhZGVyPy56SW5kZXggfHwgJ2F1dG8nLFxuICAgIH07XG4gIH1cblxuICBnZXRGb290ZXJTdHlsZSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLnN0eWxlQ29uZmlnLmZvb3RlcixcbiAgICAgIHBvc2l0aW9uOiB0aGlzLnN0eWxlQ29uZmlnLmZvb3Rlcj8uc3RpY2t5Qm90dG9tID8gJ3N0aWNreScgOiAnc3RhdGljJyxcbiAgICAgIGJvdHRvbTogdGhpcy5zdHlsZUNvbmZpZy5mb290ZXI/LnN0aWNreUJvdHRvbSA/ICcwJyA6ICdhdXRvJyxcbiAgICAgIHpJbmRleDogdGhpcy5zdHlsZUNvbmZpZy5mb290ZXI/LnpJbmRleCB8fCAnYXV0bycsXG4gICAgfTtcbiAgfVxuXG4gIGdldFJvd1N0eWxlKHJvd0luZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIGNvbnN0IHJvd1N0eWxlcyA9IHRoaXMuc3R5bGVDb25maWcucm93cztcbiAgICBpZiAocm93U3R5bGVzICYmICdldmVuJyBpbiByb3dTdHlsZXMgJiYgJ29kZCcgaW4gcm93U3R5bGVzKSB7XG4gICAgICByZXR1cm4gcm93SW5kZXggJSAyID09PSAwID8gcm93U3R5bGVzLmV2ZW4gOiByb3dTdHlsZXMub2RkO1xuICAgIH0gZWxzZSBpZiAocm93U3R5bGVzICYmICdudGgnIGluIHJvd1N0eWxlcyAmJiByb3dTdHlsZXMubnRoKSB7XG4gICAgICBjb25zdCB7IGludGVydmFsLCBzdHlsZSB9ID0gcm93U3R5bGVzLm50aDtcbiAgICAgIHJldHVybiAocm93SW5kZXggKyAxKSAlIChpbnRlcnZhbCB8fCAxKSA9PT0gMCA/IHN0eWxlIDoge307XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByb3dTdHlsZXMgfHwge307XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2VsbFN0eWxlKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIGNvbnN0IGlzRmlyc3RDb2x1bW4gPSBjb2xJbmRleCA9PT0gMDtcbiAgICBjb25zdCBpc0xhc3RDb2x1bW4gPSBjb2xJbmRleCA9PT0gdGhpcy5jb2x1bW5zU2lnbmFsKCkubGVuZ3RoIC0gMTtcblxuICAgIGxldCBjZWxsU3R5bGUgPSB7IC4uLnRoaXMuc3R5bGVDb25maWcuY2VsbHMgfTtcblxuICAgIGlmIChpc0ZpcnN0Q29sdW1uKSB7XG4gICAgICBjZWxsU3R5bGUgPSB7XG4gICAgICAgIC4uLmNlbGxTdHlsZSxcbiAgICAgICAgLi4udGhpcy5zdHlsZUNvbmZpZy5maXJzdENvbHVtbixcbiAgICAgICAgcG9zaXRpb246IHRoaXMuc3R5bGVDb25maWcuZmlyc3RDb2x1bW4/LnN0aWNreUxlZnRcbiAgICAgICAgICA/ICdzdGlja3knXG4gICAgICAgICAgOiAnc3RhdGljJyxcbiAgICAgICAgbGVmdDogdGhpcy5zdHlsZUNvbmZpZy5maXJzdENvbHVtbj8uc3RpY2t5TGVmdCA/ICcwJyA6ICdhdXRvJyxcbiAgICAgICAgekluZGV4OiB0aGlzLnN0eWxlQ29uZmlnLmZpcnN0Q29sdW1uPy56SW5kZXggfHwgJ2F1dG8nLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGlzTGFzdENvbHVtbikge1xuICAgICAgY2VsbFN0eWxlID0ge1xuICAgICAgICAuLi5jZWxsU3R5bGUsXG4gICAgICAgIC4uLnRoaXMuc3R5bGVDb25maWcubGFzdENvbHVtbixcbiAgICAgICAgcG9zaXRpb246IHRoaXMuc3R5bGVDb25maWcubGFzdENvbHVtbj8uc3RpY2t5UmlnaHRcbiAgICAgICAgICA/ICdzdGlja3knXG4gICAgICAgICAgOiAnc3RhdGljJyxcbiAgICAgICAgcmlnaHQ6IHRoaXMuc3R5bGVDb25maWcubGFzdENvbHVtbj8uc3RpY2t5UmlnaHQgPyAnMCcgOiAnYXV0bycsXG4gICAgICAgIHpJbmRleDogdGhpcy5zdHlsZUNvbmZpZy5sYXN0Q29sdW1uPy56SW5kZXggfHwgJ2F1dG8nLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAocm93SW5kZXggPj0gMCkge1xuICAgICAgLy8gQXBwbHkgYm9keSBzdHlsZXMgdG8gYWxsIGNlbGxzXG4gICAgICBjZWxsU3R5bGUgPSB7IC4uLmNlbGxTdHlsZSwgLi4udGhpcy5zdHlsZUNvbmZpZy5ib2R5IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNlbGxTdHlsZSA9IHsgLi4udGhpcy5zdHlsZUNvbmZpZy5oZWFkZXIgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2VsbFN0eWxlO1xuICB9XG59XG5cbnR5cGUgRWRpdGVkRGF0YTxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF0/OiBUW0tdIGV4dGVuZHMgb2JqZWN0ID8gUGFydGlhbDxUW0tdPiA6IFRbS107XG59O1xuXG4vLyBEZWZhdWx0IHN0eWxlc1xuY29uc3QgZGVmYXVsdFRhYmxlU3R5bGVzOiBUYWJsZVN0eWxlcyA9IHtcbiAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIGJveFNoYWRvdzogJzAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSknLFxuICB3aWR0aDogJzEwMCUnLFxuICBoZWFkZXI6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZjVmNWY1JyxcbiAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gICAgY29sb3I6ICcjMzMzJyxcbiAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgICBwYWRkaW5nOiAnMTJweCAxNnB4JyxcbiAgICBib3JkZXJCb3R0b206ICcycHggc29saWQgI2UwZTBlMCcsXG4gIH0sXG4gIHJvd3M6IHtcbiAgICBldmVuOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZmZmJyxcbiAgICB9LFxuICAgIG9kZDoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2Y5ZjlmOScsXG4gICAgfSxcbiAgICBudGg6IHtcbiAgICAgIGludGVydmFsOiA1LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2YwZjBmMCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGNlbGxzOiB7XG4gICAgcGFkZGluZzogJzEycHggMTZweCcsXG4gICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICB9LFxuICBmb290ZXI6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZjVmNWY1JyxcbiAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gICAgY29sb3I6ICcjMzMzJyxcbiAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgICBwYWRkaW5nOiAnMTJweCAxNnB4JyxcbiAgICBib3JkZXJUb3A6ICcycHggc29saWQgI2UwZTBlMCcsXG4gIH0sXG59O1xuIiwiPHRhYmxlIFtuZ1N0eWxlXT1cImdldFRhYmxlU3R5bGUoKVwiPlxuICA8dGhlYWQ+XG4gICAgPHRyIFtuZ1N0eWxlXT1cImdldEhlYWRlclN0eWxlKClcIj5cbiAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zU2lnbmFsKCk7IHRyYWNrIGNvbHVtbi5pZCkge1xuICAgICAgPHRoIFtuZ1N0eWxlXT1cImdldENlbGxTdHlsZSgtMSwgJGluZGV4KVwiPlxuICAgICAgICBAaWYgKGNvbHVtbi5oZWFkZXJUZW1wbGF0ZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiZ2V0SGVhZGVyQ29udGV4dChjb2x1bW4pXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAge3sgY29sdW1uLmhlYWRlciB9fVxuICAgICAgICB9XG4gICAgICA8L3RoPlxuICAgICAgfVxuICAgIDwvdHI+XG4gIDwvdGhlYWQ+XG4gIDx0Ym9keT5cbiAgICBAZm9yIChyb3cgb2YgZGF0YSgpOyB0cmFjayByb3cuaWQ7IGxldCByb3dJbmRleCA9ICRpbmRleCkgeyBAaWZcbiAgICAoaXNHcm91cFJvdyhyb3cpKSB7XG4gICAgPHRyIGNsYXNzPVwiZ3JvdXAtcm93XCIgW25nU3R5bGVdPVwiZ2V0Um93U3R5bGUocm93SW5kZXgpXCI+XG4gICAgICA8dGRcbiAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zU2lnbmFsKCkubGVuZ3RoXCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0Q2VsbFN0eWxlKHJvd0luZGV4LCAwKVwiXG4gICAgICA+XG4gICAgICAgIHt7IGdldENlbGxWYWx1ZShyb3csIGNvbHVtbnNTaWduYWwoKVswXSkgfX1cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgICB9IEBlbHNlIHtcbiAgICA8dHIgW25nU3R5bGVdPVwiZ2V0Um93U3R5bGUocm93SW5kZXgpXCI+XG4gICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uc1NpZ25hbCgpOyB0cmFjayBjb2x1bW4uaWQ7IGxldCBjb2xJbmRleCA9ICRpbmRleCkge1xuICAgICAgPHRkIFtuZ1N0eWxlXT1cImdldENlbGxTdHlsZShyb3dJbmRleCwgY29sSW5kZXgpXCI+XG4gICAgICAgIEBpZiAoaXNSb3dFZGl0aW5nKHJvdy5pZCkgJiYgY29sdW1uLmNlbGxFZGl0VGVtcGxhdGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5jZWxsRWRpdFRlbXBsYXRlXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiZ2V0Q2VsbENvbnRleHQocm93LCBjb2x1bW4sIHJvd0luZGV4KVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfSBAZWxzZSBpZiAoY29sdW1uLmNlbGxUZW1wbGF0ZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImdldENlbGxDb250ZXh0KHJvdywgY29sdW1uLCByb3dJbmRleClcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICB7eyBnZXRDZWxsVmFsdWUocm93LCBjb2x1bW4pIH19XG4gICAgICAgIH1cbiAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgPC90cj5cbiAgICB9IH1cbiAgPC90Ym9keT5cbiAgQGlmIChoYXNGb290ZXIoKSkge1xuICA8dGZvb3Q+XG4gICAgPHRyIFtuZ1N0eWxlXT1cImdldEZvb3RlclN0eWxlKClcIj5cbiAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zU2lnbmFsKCk7IHRyYWNrIGNvbHVtbi5pZCkge1xuICAgICAgPHRkIFtuZ1N0eWxlXT1cImdldENlbGxTdHlsZSgtMSwgJGluZGV4KVwiPlxuICAgICAgICBAaWYgKGNvbHVtbi5mb290ZXJUZW1wbGF0ZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmZvb3RlclRlbXBsYXRlXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiZ2V0Rm9vdGVyQ29udGV4dChjb2x1bW4pXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L3RkPlxuICAgICAgfVxuICAgIDwvdHI+XG4gIDwvdGZvb3Q+XG4gIH1cbjwvdGFibGU+XG4iXX0=
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFHTixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFTckQsTUFBTSxPQUFPLGtCQUFrQjtJQUc3Qix3Q0FBd0M7SUFDeEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQU8sQ0FBQztJQUM3QixPQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBeUIsQ0FBQztJQUNsRCw2QkFBNkI7SUFDN0IseUJBQXlCO0lBQ3pCLHdCQUF3QjtJQUN4QixJQUFJO0lBQ0osb0JBQW9CO0lBQ3BCLCtCQUErQjtJQUMvQixJQUFJO0lBQ0osMkJBQTJCO0lBQzNCLHVDQUF1QztJQUN2Qyw2QkFBNkI7SUFDN0IsOENBQThDO0lBQzlDLG1DQUFtQztJQUNuQyxJQUFJO0lBQ0osMEJBQTBCO0lBQzFCLE9BQU8sR0FBRyxLQUFLLEVBQStCLENBQUM7SUFFdEMsV0FBVyxHQUFnQixrQkFBa0IsQ0FBQztJQUd2RCxlQUFlLENBQThCO0lBRW5DLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFDO0lBQ2hDLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFD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ICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIGlucHV0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2lnbmFsLFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbHVtbkRlZmluaXRpb24gfSBmcm9tICcuL2RhdGEtdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgQ29sdW1uRGlyZWN0aXZlIH0gZnJvbSAnLi9jb2x1bW4uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJhc2VTdHlsZXMsIFRhYmxlU3R5bGVzIH0gZnJvbSAnLi9zdHlsZS50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZGF0YS10YWJsZS5jb21wb25lbnQuY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIHwgbnVtYmVyIH0+XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0XG57XG4gIC8vIE1vZGlmeSBkYXRhIGlucHV0IHRvIHVzZSBncm91cGVkIGRhdGFcbiAgZGF0YSA9IGlucHV0LnJlcXVpcmVkPFRbXT4oKTtcbiAgY29sdW1ucyA9IGlucHV0LnJlcXVpcmVkPENvbHVtbkRlZmluaXRpb248VD5bXT4oKTtcbiAgLy8gQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgLy8gc2V0IGRhdGEodmFsdWU6IFRbXSkge1xuICAvLyAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcbiAgLy8gfVxuICAvLyBnZXQgZGF0YSgpOiBUW10ge1xuICAvLyAgIHJldHVybiB0aGlzLmdyb3VwZWREYXRhKCk7XG4gIC8vIH1cbiAgLy8gcHJpdmF0ZSBfZGF0YTogVFtdID0gW107XG4gIC8vIE1vZGlmeSBjb2x1bW5zIGlucHV0IHRvIHVzZSBhIHNpZ25hbFxuICAvLyBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAvLyBzZXQgY29sdW1ucyh2YWx1ZTogQ29sdW1uRGVmaW5pdGlvbjxUPltdKSB7XG4gIC8vICAgdGhpcy5jb2x1bW5zU2lnbmFsLnNldCh2YWx1ZSk7XG4gIC8vIH1cbiAgLy8gTmV3IGlucHV0cyBmb3IgZ3JvdXBpbmdcbiAgZ3JvdXBCeSA9IGlucHV0PGtleW9mIFQgfCAoKHJvdzogVCkgPT4gYW55KT4oKTtcblxuICBASW5wdXQoKSBzdHlsZUNvbmZpZzogVGFibGVTdHlsZXMgPSBkZWZhdWx0VGFibGVTdHlsZXM7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihDb2x1bW5EaXJlY3RpdmUpXG4gIGNvbHVtblRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxDb2x1bW5EaXJlY3RpdmU+O1xuXG4gIEBPdXRwdXQoKSByb3dFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuICBAT3V0cHV0KCkgcm93U2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQE91dHB1dCgpIHJvd0RlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuXG4gIHByaXZhdGUgZWRpdGluZ1Jvd3NTaWduYWwgPSBzaWduYWw8U2V0PHN0cmluZyB8IG51bWJlcj4+KG5ldyBTZXQoKSk7XG4gIHByaXZhdGUgc2VsZWN0ZWRSb3dzU2lnbmFsID0gc2lnbmFsPFNldDxzdHJpbmcgfCBudW1iZXI+PihuZXcgU2V0KCkpO1xuICBwcml2YXRlIGVkaXRlZERhdGFTaWduYWwgPSBzaWduYWw8TWFwPHN0cmluZyB8IG51bWJlciwgRWRpdGVkRGF0YTxUPj4+KFxuICAgIG5ldyBNYXAoKVxuICApO1xuXG4gIGNvbHVtbnNTaWduYWw6IFdyaXRhYmxlU2lnbmFsPENvbHVtbkRlZmluaXRpb248VD5bXT4gPSBzaWduYWwoW10pO1xuXG4gIGhhc0Zvb3RlciA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5jb2x1bW5zU2lnbmFsKCkuc29tZSgoY29sKSA9PiBjb2wuZm9vdGVyVGVtcGxhdGUgIT09IHVuZGVmaW5lZClcbiAgKTtcblxuICAvLyBUeXBlIGd1YXJkIG1ldGhvZCB0byBjaGVjayBmb3IgZ3JvdXAgcm93c1xuICBpc0dyb3VwUm93KHJvdzogVCk6IHJvdyBpcyBUICYgeyBpc0dyb3VwUm93OiB0cnVlOyBncm91cFRpdGxlOiBhbnkgfSB7XG4gICAgcmV0dXJuICEhKHJvdyBhcyBhbnkpLmlzR3JvdXBSb3c7XG4gIH1cblxuICAvLyBDb21wdXRlZCBwcm9wZXJ0eSBmb3IgZ3JvdXBlZCBkYXRhXG4gIGdyb3VwZWREYXRhID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIC8vIElmIG5vIGdyb3VwaW5nIGlzIHNwZWNpZmllZCwgcmV0dXJuIG9yaWdpbmFsIGRhdGFcbiAgICBpZiAoIXRoaXMuZ3JvdXBCeSgpKSByZXR1cm4gdGhpcy5kYXRhKCk7XG5cbiAgICAvLyBEZXRlcm1pbmUgZ3JvdXAgZnVuY3Rpb24gYmFzZWQgb24gaW5wdXQgdHlwZVxuICAgIGNvbnN0IGdldEdyb3VwVmFsdWUgPVxuICAgICAgdHlwZW9mIHRoaXMuZ3JvdXBCeSgpID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gKHRoaXMuZ3JvdXBCeSgpIGFzIChyb3c6IFQpID0+IGFueSlcbiAgICAgICAgOiAocm93OiBUKSA9PiByb3dbdGhpcy5ncm91cEJ5KCkgYXMga2V5b2YgVF07XG5cbiAgICAvLyBHcm91cCB0aGUgZGF0YVxuICAgIGNvbnN0IGdyb3VwcyA9IG5ldyBNYXA8YW55LCBUW10+KCk7XG5cbiAgICB0aGlzLmRhdGEoKS5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgIGlmIChnZXRHcm91cFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBWYWx1ZSA9IGdldEdyb3VwVmFsdWUocm93KTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdHcm91cCA9IGdyb3Vwcy5nZXQoZ3JvdXBWYWx1ZSkgfHwgW107XG4gICAgICAgIGdyb3Vwcy5zZXQoZ3JvdXBWYWx1ZSwgWy4uLmV4aXN0aW5nR3JvdXAsIHJvd10pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gQ29uc3RydWN0IGZpbmFsIGdyb3VwZWQgZGF0YSBhcnJheSB3aXRoIGdyb3VwIHJvd3NcbiAgICBjb25zdCBncm91cGVkRGF0YUFycmF5OiAoVCAmIHsgaXNHcm91cFJvdz86IGJvb2xlYW4gfSlbXSA9IFtdO1xuXG4gICAgZ3JvdXBzLmZvckVhY2goKGdyb3VwUm93cywgZ3JvdXBWYWx1ZSkgPT4ge1xuICAgICAgLy8gQ3JlYXRlIGEgZ3JvdXAgcm93XG4gICAgICBjb25zdCBncm91cFJvdyA9IHtcbiAgICAgICAgaWQ6IGBncm91cC0ke2dyb3VwVmFsdWV9YCxcbiAgICAgICAgaXNHcm91cFJvdzogdHJ1ZSxcbiAgICAgICAgZ3JvdXBWYWx1ZSxcbiAgICAgICAgZ3JvdXBUaXRsZTogZ3JvdXBWYWx1ZSxcbiAgICAgIH0gYXMgdW5rbm93biBhcyBUICYgeyBpc0dyb3VwUm93OiBib29sZWFuIH07XG5cbiAgICAgIGdyb3VwZWREYXRhQXJyYXkucHVzaChncm91cFJvdyk7XG4gICAgICBncm91cGVkRGF0YUFycmF5LnB1c2goLi4uZ3JvdXBSb3dzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBncm91cGVkRGF0YUFycmF5O1xuICB9KTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBTZXQgaW5pdGlhbCBjb2x1bW5zIGlmIG5vdCBhbHJlYWR5IHNldFxuICAgIGlmICh0aGlzLmNvbHVtbnNTaWduYWwoKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29sdW1uc1NpZ25hbC5zZXQodGhpcy5jb2x1bW5zKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmNvbHVtblRlbXBsYXRlcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLm1lcmdlQ29sdW1uVGVtcGxhdGVzKCkpO1xuICAgIHRoaXMubWVyZ2VDb2x1bW5UZW1wbGF0ZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VDb2x1bW5UZW1wbGF0ZXMoKSB7XG4gICAgLy8gT25seSBtZXJnZSBpZiB3ZSBoYXZlIGJvdGggY29sdW1ucyBhbmQgdGVtcGxhdGVzXG4gICAgaWYgKHRoaXMuY29sdW1uc1NpZ25hbCgpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zU2lnbmFsKCkubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdUZW1wbGF0ZSA9IHRoaXMuY29sdW1uVGVtcGxhdGVzLmZpbmQoXG4gICAgICAgICAgKHQpID0+IHQuY29sdW1uSWQgPT09IGNvbHVtbi5pZFxuICAgICAgICApO1xuICAgICAgICBpZiAobWF0Y2hpbmdUZW1wbGF0ZSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgICBjZWxsVGVtcGxhdGU6IG1hdGNoaW5nVGVtcGxhdGUuY2VsbFRlbXBsYXRlLFxuICAgICAgICAgICAgY2VsbEVkaXRUZW1wbGF0ZTogbWF0Y2hpbmdUZW1wbGF0ZS5jZWxsRWRpdFRlbXBsYXRlLFxuICAgICAgICAgICAgaGVhZGVyVGVtcGxhdGU6IG1hdGNoaW5nVGVtcGxhdGUuaGVhZGVyVGVtcGxhdGUsXG4gICAgICAgICAgICBmb290ZXJUZW1wbGF0ZTogbWF0Y2hpbmdUZW1wbGF0ZS5mb290ZXJUZW1wbGF0ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29sdW1uc1NpZ25hbC5zZXQodXBkYXRlZENvbHVtbnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldENlbGxWYWx1ZSA9IChyb3c6IFQsIGNvbHVtbjogQ29sdW1uRGVmaW5pdGlvbjxUPik6IGFueSA9PiB7XG4gICAgLy8gRm9yIGdyb3VwIHJvd3MsIHJldHVybiB0aGUgZ3JvdXAgdGl0bGUgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMuaXNHcm91cFJvdyhyb3cpKSB7XG4gICAgICByZXR1cm4gKHJvdyBhcyBhbnkpLmdyb3VwVGl0bGU7XG4gICAgfVxuXG4gICAgLy8gRXhpc3RpbmcgbG9naWMgZm9yIG5vcm1hbCByb3dzXG4gICAgaWYgKGNvbHVtbi5hY2Nlc3NvcktleSkge1xuICAgICAgcmV0dXJuIChyb3cgYXMgYW55KVtjb2x1bW4uYWNjZXNzb3JLZXldO1xuICAgIH1cbiAgICByZXR1cm4gY29sdW1uLmFjY2Vzc29yRm4gPyBjb2x1bW4uYWNjZXNzb3JGbihyb3cpIDogdW5kZWZpbmVkO1xuICB9O1xuXG4gIGlzUm93RWRpdGluZyA9IChyb3dJZDogc3RyaW5nIHwgbnVtYmVyKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGluZ1Jvd3NTaWduYWwoKS5oYXMocm93SWQpO1xuICB9O1xuXG4gIHRvZ2dsZVJvd0VkaXQgPSAocm93SWQ6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgIHRoaXMuZWRpdGluZ1Jvd3NTaWduYWwudXBkYXRlKChzZXQpID0+IHtcbiAgICAgIGNvbnN0IG5ld1NldCA9IG5ldyBTZXQoc2V0KTtcbiAgICAgIGlmIChuZXdTZXQuaGFzKHJvd0lkKSkge1xuICAgICAgICBuZXdTZXQuZGVsZXRlKHJvd0lkKTtcbiAgICAgICAgdGhpcy5zYXZlUm93KHJvd0lkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1NldC5hZGQocm93SWQpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVFZGl0ZWREYXRhKHJvd0lkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXdTZXQ7XG4gICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRWRpdGVkRGF0YShyb3dJZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgY29uc3Qgcm93ID0gdGhpcy5kYXRhKCkuZmluZCgocikgPT4gci5pZCA9PT0gcm93SWQpO1xuICAgIGlmIChyb3cpIHtcbiAgICAgIHRoaXMuZWRpdGVkRGF0YVNpZ25hbC51cGRhdGUoKG1hcCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdNYXAgPSBuZXcgTWFwKG1hcCk7XG4gICAgICAgIG5ld01hcC5zZXQocm93SWQsIHsgLi4ucm93IH0pO1xuICAgICAgICByZXR1cm4gbmV3TWFwO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzYXZlUm93KHJvd0lkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBjb25zdCBlZGl0ZWREYXRhID0gdGhpcy5lZGl0ZWREYXRhU2lnbmFsKCkuZ2V0KHJvd0lkKTtcbiAgICBpZiAoZWRpdGVkRGF0YSkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxSb3dJbmRleCA9IHRoaXMuZGF0YSgpLmZpbmRJbmRleCgocikgPT4gci5pZCA9PT0gcm93SWQpO1xuICAgICAgaWYgKG9yaWdpbmFsUm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRSb3cgPSB7IC4uLnRoaXMuZGF0YSgpW29yaWdpbmFsUm93SW5kZXhdLCAuLi5lZGl0ZWREYXRhIH07XG4gICAgICAgIHRoaXMuZGF0YSgpW29yaWdpbmFsUm93SW5kZXhdID0gdXBkYXRlZFJvdztcbiAgICAgICAgdGhpcy5yb3dTYXZlLmVtaXQodXBkYXRlZFJvdyk7XG4gICAgICAgIHRoaXMuZWRpdGVkRGF0YVNpZ25hbC51cGRhdGUoKG1hcCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld01hcCA9IG5ldyBNYXAobWFwKTtcbiAgICAgICAgICBuZXdNYXAuZGVsZXRlKHJvd0lkKTtcbiAgICAgICAgICByZXR1cm4gbmV3TWFwO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc1Jvd1NlbGVjdGVkID0gKHJvd0lkOiBzdHJpbmcgfCBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3NTaWduYWwoKS5oYXMocm93SWQpO1xuICB9O1xuXG4gIHRvZ2dsZVJvd1NlbGVjdGlvbiA9IChyb3dJZDogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3NTaWduYWwudXBkYXRlKChzZXQpID0+IHtcbiAgICAgIGNvbnN0IG5ld1NldCA9IG5ldyBTZXQoc2V0KTtcbiAgICAgIGlmIChuZXdTZXQuaGFzKHJvd0lkKSkge1xuICAgICAgICBuZXdTZXQuZGVsZXRlKHJvd0lkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1NldC5hZGQocm93SWQpO1xuICAgICAgfVxuICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgICByZXR1cm4gbmV3U2V0O1xuICAgIH0pO1xuICB9O1xuXG4gIGFsbFJvd3NTZWxlY3RlZCA9ICgpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBub25Hcm91cFJvd3MgPSB0aGlzLmRhdGEoKS5maWx0ZXIoKHJvdykgPT4gIXRoaXMuaXNHcm91cFJvdyhyb3cpKTtcbiAgICByZXR1cm4gKFxuICAgICAgbm9uR3JvdXBSb3dzLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzU2lnbmFsKCkuc2l6ZSA9PT0gbm9uR3JvdXBSb3dzLmxlbmd0aFxuICAgICk7XG4gIH07XG5cbiAgc29tZVJvd3NTZWxlY3RlZCA9ICgpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBub25Hcm91cFJvd3MgPSB0aGlzLmRhdGEoKS5maWx0ZXIoKHJvdykgPT4gIXRoaXMuaXNHcm91cFJvdyhyb3cpKTtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3NTaWduYWwoKS5zaXplID4gMCAmJlxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3NTaWduYWwoKS5zaXplIDwgbm9uR3JvdXBSb3dzLmxlbmd0aFxuICAgICk7XG4gIH07XG5cbiAgdG9nZ2xlQWxsUm93cyA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5hbGxSb3dzU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3NTaWduYWwuc2V0KG5ldyBTZXQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vbkdyb3VwUm93cyA9IHRoaXMuZGF0YSgpLmZpbHRlcigocm93KSA9PiAhdGhpcy5pc0dyb3VwUm93KHJvdykpO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3NTaWduYWwuc2V0KG5ldyBTZXQobm9uR3JvdXBSb3dzLm1hcCgocm93KSA9PiByb3cuaWQpKSk7XG4gICAgfVxuICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZSgpO1xuICB9O1xuXG4gIHByaXZhdGUgZW1pdFNlbGVjdGlvbkNoYW5nZSgpIHtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLmRhdGEoKS5maWx0ZXIoKHJvdykgPT5cbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzU2lnbmFsKCkuaGFzKHJvdy5pZClcbiAgICApO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoc2VsZWN0ZWRSb3dzKTtcbiAgfVxuXG4gIGdldEhlYWRlckNvbnRleHQoY29sdW1uOiBDb2x1bW5EZWZpbml0aW9uPFQ+KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRpbXBsaWNpdDogY29sdW1uLFxuICAgICAgY29sdW1uLFxuICAgICAgYWxsUm93c1NlbGVjdGVkOiB0aGlzLmFsbFJvd3NTZWxlY3RlZCxcbiAgICAgIHNvbWVSb3dzU2VsZWN0ZWQ6IHRoaXMuc29tZVJvd3NTZWxlY3RlZCxcbiAgICAgIHRvZ2dsZUFsbFJvd3M6IHRoaXMudG9nZ2xlQWxsUm93cyxcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlRWRpdGVkVmFsdWUocm93SWQ6IHN0cmluZyB8IG51bWJlciwgY29sdW1uSWQ6IGtleW9mIFQsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmVkaXRlZERhdGFTaWduYWwudXBkYXRlKChtYXApID0+IHtcbiAgICAgIGNvbnN0IG5ld01hcCA9IG5ldyBNYXAobWFwKTtcbiAgICAgIGNvbnN0IHJvd0RhdGEgPSBuZXdNYXAuZ2V0KHJvd0lkKSB8fCAoe30gYXMgRWRpdGVkRGF0YTxUPik7XG4gICAgICBuZXdNYXAuc2V0KHJvd0lkLCB7IC4uLnJvd0RhdGEsIFtjb2x1bW5JZF06IHZhbHVlIH0pO1xuICAgICAgcmV0dXJuIG5ld01hcDtcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZU5lc3RlZEVkaXRlZFZhbHVlKFxuICAgIHJvd0lkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgY29sdW1uSWQ6IGtleW9mIFQsXG4gICAgbmVzdGVkRmllbGQ6IHN0cmluZyxcbiAgICB2YWx1ZTogYW55XG4gICkge1xuICAgIHRoaXMuZWRpdGVkRGF0YVNpZ25hbC51cGRhdGUoKG1hcCkgPT4ge1xuICAgICAgY29uc3QgbmV3TWFwID0gbmV3IE1hcChtYXApO1xuICAgICAgY29uc3Qgcm93RGF0YSA9IG5ld01hcC5nZXQocm93SWQpIHx8ICh7fSBhcyBFZGl0ZWREYXRhPFQ+KTtcbiAgICAgIGNvbnN0IGNvbHVtbkRhdGEgPSAocm93RGF0YVtjb2x1bW5JZF0gYXMgYW55KSB8fCB7fTtcbiAgICAgIG5ld01hcC5zZXQocm93SWQsIHtcbiAgICAgICAgLi4ucm93RGF0YSxcbiAgICAgICAgW2NvbHVtbklkXToge1xuICAgICAgICAgIC4uLmNvbHVtbkRhdGEsXG4gICAgICAgICAgW25lc3RlZEZpZWxkXTogdmFsdWUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXdNYXA7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDZWxsQ29udGV4dChyb3c6IFQsIGNvbHVtbjogQ29sdW1uRGVmaW5pdGlvbjxUPiwgcm93SW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHJvd0lkID0gcm93LmlkO1xuICAgIGNvbnN0IGlzRWRpdGluZyA9IHRoaXMuaXNSb3dFZGl0aW5nKHJvd0lkKTtcbiAgICBjb25zdCBlZGl0ZWREYXRhID0gdGhpcy5lZGl0ZWREYXRhU2lnbmFsKCkuZ2V0KHJvd0lkKTtcblxuICAgIGxldCB2YWx1ZTogYW55O1xuICAgIGlmIChpc0VkaXRpbmcgJiYgZWRpdGVkRGF0YSAmJiBjb2x1bW4uaWQgaW4gZWRpdGVkRGF0YSkge1xuICAgICAgdmFsdWUgPSBlZGl0ZWREYXRhW2NvbHVtbi5pZCBhcyBrZXlvZiBUXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB0aGlzLmdldENlbGxWYWx1ZShyb3csIGNvbHVtbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRpbXBsaWNpdDogdmFsdWUsXG4gICAgICB2YWx1ZSxcbiAgICAgIHJvdyxcbiAgICAgIGNvbHVtbixcbiAgICAgIHJvd0luZGV4LFxuICAgICAgaXNFZGl0aW5nLFxuICAgICAgaXNTZWxlY3RlZDogdGhpcy5pc1Jvd1NlbGVjdGVkKHJvd0lkKSxcbiAgICAgIHRvZ2dsZVJvd1NlbGVjdGlvbjogKCkgPT4gdGhpcy50b2dnbGVSb3dTZWxlY3Rpb24ocm93SWQpLFxuICAgICAgdG9nZ2xlUm93RWRpdDogKCkgPT4gdGhpcy50b2dnbGVSb3dFZGl0KHJvd0lkKSxcbiAgICAgIGRlbGV0ZVJvdzogKCkgPT4gdGhpcy5kZWxldGVSb3cocm93SWQpLFxuICAgICAgdXBkYXRlVmFsdWU6IChuZXdWYWx1ZTogYW55KSA9PlxuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRlZFZhbHVlKHJvd0lkLCBjb2x1bW4uaWQgYXMga2V5b2YgVCwgbmV3VmFsdWUpLFxuICAgICAgdXBkYXRlTmVzdGVkVmFsdWU6IChuZXN0ZWRGaWVsZDogc3RyaW5nLCBuZXdWYWx1ZTogYW55KSA9PlxuICAgICAgICB0aGlzLnVwZGF0ZU5lc3RlZEVkaXRlZFZhbHVlKFxuICAgICAgICAgIHJvd0lkLFxuICAgICAgICAgIGNvbHVtbi5pZCBhcyBrZXlvZiBULFxuICAgICAgICAgIG5lc3RlZEZpZWxkLFxuICAgICAgICAgIG5ld1ZhbHVlXG4gICAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIGRlbGV0ZVJvdyA9IChyb3dJZDogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgY29uc3Qgcm93VG9EZWxldGUgPSB0aGlzLmRhdGEoKS5maW5kKChyb3cpID0+IHJvdy5pZCA9PT0gcm93SWQpO1xuICAgIGlmIChyb3dUb0RlbGV0ZSkge1xuICAgICAgdGhpcy5yb3dEZWxldGUuZW1pdChyb3dUb0RlbGV0ZSk7XG4gICAgfVxuICB9O1xuXG4gIGdldEZvb3RlckNvbnRleHQoY29sdW1uOiBDb2x1bW5EZWZpbml0aW9uPFQ+KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRpbXBsaWNpdDogY29sdW1uLFxuICAgICAgY29sdW1uLFxuICAgICAgZGF0YTogdGhpcy5kYXRhLFxuICAgIH07XG4gIH1cblxuICBnZXRUYWJsZVN0eWxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuc3R5bGVDb25maWcsXG4gICAgICBmb250RmFtaWx5OiB0aGlzLnN0eWxlQ29uZmlnLmZvbnRGYW1pbHksXG4gICAgICBmb250U2l6ZTogdGhpcy5zdHlsZUNvbmZpZy5mb250U2l6ZSxcbiAgICAgIHdoaXRlU3BhY2U6IHRoaXMuc3R5bGVDb25maWcud2hpdGVTcGFjZSxcbiAgICAgIG1hcmdpbjogdGhpcy5zdHlsZUNvbmZpZy5tYXJnaW4sXG4gICAgICBib3JkZXI6IHRoaXMuc3R5bGVDb25maWcuYm9yZGVyLFxuICAgICAgYm9yZGVyQ29sbGFwc2U6IHRoaXMuc3R5bGVDb25maWcuYm9yZGVyQ29sbGFwc2UsXG4gICAgICBib3JkZXJTcGFjaW5nOiB0aGlzLnN0eWxlQ29uZmlnLmJvcmRlclNwYWNpbmcsXG4gICAgICB0YWJsZUxheW91dDogdGhpcy5zdHlsZUNvbmZpZy50YWJsZUxheW91dCxcbiAgICAgIHdpZHRoOiB0aGlzLnN0eWxlQ29uZmlnLndpZHRoLFxuICAgIH07XG4gIH1cblxuICBnZXRIZWFkZXJTdHlsZSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLnN0eWxlQ29uZmlnLmhlYWRlcixcbiAgICAgIHBvc2l0aW9uOiB0aGlzLnN0eWxlQ29uZmlnLmhlYWRlcj8uc3RpY2t5VG9wID8gJ3N0aWNreScgOiAnc3RhdGljJyxcbiAgICAgIHRvcDogdGhpcy5zdHlsZUNvbmZpZy5oZWFkZXI/LnN0aWNreVRvcCA/ICcwJyA6ICdhdXRvJyxcbiAgICAgIHpJbmRleDogdGhpcy5zdHlsZUNvbmZpZy5oZWFkZXI/LnpJbmRleCB8fCAnYXV0bycsXG4gICAgfTtcbiAgfVxuXG4gIGdldEZvb3RlclN0eWxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuc3R5bGVDb25maWcuZm9vdGVyLFxuICAgICAgcG9zaXRpb246IHRoaXMuc3R5bGVDb25maWcuZm9vdGVyPy5zdGlja3lCb3R0b20gPyAnc3RpY2t5JyA6ICdzdGF0aWMnLFxuICAgICAgYm90dG9tOiB0aGlzLnN0eWxlQ29uZmlnLmZvb3Rlcj8uc3RpY2t5Qm90dG9tID8gJzAnIDogJ2F1dG8nLFxuICAgICAgekluZGV4OiB0aGlzLnN0eWxlQ29uZmlnLmZvb3Rlcj8uekluZGV4IHx8ICdhdXRvJyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0Um93U3R5bGUocm93SW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgY29uc3Qgcm93U3R5bGVzID0gdGhpcy5zdHlsZUNvbmZpZy5yb3dzO1xuICAgIGlmIChyb3dTdHlsZXMgJiYgJ2V2ZW4nIGluIHJvd1N0eWxlcyAmJiAnb2RkJyBpbiByb3dTdHlsZXMpIHtcbiAgICAgIHJldHVybiByb3dJbmRleCAlIDIgPT09IDAgPyByb3dTdHlsZXMuZXZlbiA6IHJvd1N0eWxlcy5vZGQ7XG4gICAgfSBlbHNlIGlmIChyb3dTdHlsZXMgJiYgJ250aCcgaW4gcm93U3R5bGVzICYmIHJvd1N0eWxlcy5udGgpIHtcbiAgICAgIGNvbnN0IHsgaW50ZXJ2YWwsIHN0eWxlIH0gPSByb3dTdHlsZXMubnRoO1xuICAgICAgcmV0dXJuIChyb3dJbmRleCArIDEpICUgKGludGVydmFsIHx8IDEpID09PSAwID8gc3R5bGUgOiB7fTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJvd1N0eWxlcyB8fCB7fTtcbiAgICB9XG4gIH1cblxuICBnZXRDZWxsU3R5bGUocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgY29uc3QgaXNGaXJzdENvbHVtbiA9IGNvbEluZGV4ID09PSAwO1xuICAgIGNvbnN0IGlzTGFzdENvbHVtbiA9IGNvbEluZGV4ID09PSB0aGlzLmNvbHVtbnNTaWduYWwoKS5sZW5ndGggLSAxO1xuXG4gICAgbGV0IGNlbGxTdHlsZSA9IHsgLi4udGhpcy5zdHlsZUNvbmZpZy5jZWxscyB9O1xuXG4gICAgaWYgKGlzRmlyc3RDb2x1bW4pIHtcbiAgICAgIGNlbGxTdHlsZSA9IHtcbiAgICAgICAgLi4uY2VsbFN0eWxlLFxuICAgICAgICAuLi50aGlzLnN0eWxlQ29uZmlnLmZpcnN0Q29sdW1uLFxuICAgICAgICBwb3NpdGlvbjogdGhpcy5zdHlsZUNvbmZpZy5maXJzdENvbHVtbj8uc3RpY2t5TGVmdFxuICAgICAgICAgID8gJ3N0aWNreSdcbiAgICAgICAgICA6ICdzdGF0aWMnLFxuICAgICAgICBsZWZ0OiB0aGlzLnN0eWxlQ29uZmlnLmZpcnN0Q29sdW1uPy5zdGlja3lMZWZ0ID8gJzAnIDogJ2F1dG8nLFxuICAgICAgICB6SW5kZXg6IHRoaXMuc3R5bGVDb25maWcuZmlyc3RDb2x1bW4/LnpJbmRleCB8fCAnYXV0bycsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoaXNMYXN0Q29sdW1uKSB7XG4gICAgICBjZWxsU3R5bGUgPSB7XG4gICAgICAgIC4uLmNlbGxTdHlsZSxcbiAgICAgICAgLi4udGhpcy5zdHlsZUNvbmZpZy5sYXN0Q29sdW1uLFxuICAgICAgICBwb3NpdGlvbjogdGhpcy5zdHlsZUNvbmZpZy5sYXN0Q29sdW1uPy5zdGlja3lSaWdodFxuICAgICAgICAgID8gJ3N0aWNreSdcbiAgICAgICAgICA6ICdzdGF0aWMnLFxuICAgICAgICByaWdodDogdGhpcy5zdHlsZUNvbmZpZy5sYXN0Q29sdW1uPy5zdGlja3lSaWdodCA/ICcwJyA6ICdhdXRvJyxcbiAgICAgICAgekluZGV4OiB0aGlzLnN0eWxlQ29uZmlnLmxhc3RDb2x1bW4/LnpJbmRleCB8fCAnYXV0bycsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChyb3dJbmRleCA+PSAwKSB7XG4gICAgICAvLyBBcHBseSBib2R5IHN0eWxlcyB0byBhbGwgY2VsbHNcbiAgICAgIGNlbGxTdHlsZSA9IHsgLi4uY2VsbFN0eWxlLCAuLi50aGlzLnN0eWxlQ29uZmlnLmJvZHkgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2VsbFN0eWxlID0geyAuLi50aGlzLnN0eWxlQ29uZmlnLmhlYWRlciB9O1xuICAgIH1cblxuICAgIHJldHVybiBjZWxsU3R5bGU7XG4gIH1cbn1cblxudHlwZSBFZGl0ZWREYXRhPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXT86IFRbS10gZXh0ZW5kcyBvYmplY3QgPyBQYXJ0aWFsPFRbS10+IDogVFtLXTtcbn07XG5cbi8vIERlZmF1bHQgc3R5bGVzXG5jb25zdCBkZWZhdWx0VGFibGVTdHlsZXM6IFRhYmxlU3R5bGVzID0ge1xuICBib3JkZXI6ICcxcHggc29saWQgI2UwZTBlMCcsXG4gIGJvcmRlclJhZGl1czogJzRweCcsXG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgYm94U2hhZG93OiAnMCAycHggNHB4IHJnYmEoMCwwLDAsMC4xKScsXG4gIHdpZHRoOiAnMTAwJScsXG4gIGhlYWRlcjoge1xuICAgIGJhY2tncm91bmRDb2xvcjogJyNmNWY1ZjUnLFxuICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgICBjb2xvcjogJyMzMzMnLFxuICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgIHBhZGRpbmc6ICcxMnB4IDE2cHgnLFxuICAgIGJvcmRlckJvdHRvbTogJzJweCBzb2xpZCAjZTBlMGUwJyxcbiAgfSxcbiAgcm93czoge1xuICAgIGV2ZW46IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmZmZmYnLFxuICAgIH0sXG4gICAgb2RkOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZjlmOWY5JyxcbiAgICB9LFxuICAgIG50aDoge1xuICAgICAgaW50ZXJ2YWw6IDUsXG4gICAgICBzdHlsZToge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZjBmMGYwJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgY2VsbHM6IHtcbiAgICBwYWRkaW5nOiAnMTJweCAxNnB4JyxcbiAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UwZTBlMCcsXG4gIH0sXG4gIGZvb3Rlcjoge1xuICAgIGJhY2tncm91bmRDb2xvcjogJyNmNWY1ZjUnLFxuICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgICBjb2xvcjogJyMzMzMnLFxuICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgIHBhZGRpbmc6ICcxMnB4IDE2cHgnLFxuICAgIGJvcmRlclRvcDogJzJweCBzb2xpZCAjZTBlMGUwJyxcbiAgfSxcbn07XG4iLCI8dGFibGUgW25nU3R5bGVdPVwiZ2V0VGFibGVTdHlsZSgpXCI+XG4gIDx0aGVhZD5cbiAgICA8dHIgW25nU3R5bGVdPVwiZ2V0SGVhZGVyU3R5bGUoKVwiPlxuICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnNTaWduYWwoKTsgdHJhY2sgY29sdW1uLmlkKSB7XG4gICAgICA8dGggW25nU3R5bGVdPVwiZ2V0Q2VsbFN0eWxlKC0xLCAkaW5kZXgpXCI+XG4gICAgICAgIEBpZiAoY29sdW1uLmhlYWRlclRlbXBsYXRlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uaGVhZGVyVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJnZXRIZWFkZXJDb250ZXh0KGNvbHVtbilcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICB7eyBjb2x1bW4uaGVhZGVyIH19XG4gICAgICAgIH1cbiAgICAgIDwvdGg+XG4gICAgICB9XG4gICAgPC90cj5cbiAgPC90aGVhZD5cbiAgPHRib2R5PlxuICAgIEBmb3IgKHJvdyBvZiBkYXRhKCk7IHRyYWNrIHJvdy5pZDsgbGV0IHJvd0luZGV4ID0gJGluZGV4KSB7IEBpZlxuICAgIChpc0dyb3VwUm93KHJvdykpIHtcbiAgICA8dHIgY2xhc3M9XCJncm91cC1yb3dcIiBbbmdTdHlsZV09XCJnZXRSb3dTdHlsZShyb3dJbmRleClcIj5cbiAgICAgIDx0ZFxuICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnNTaWduYWwoKS5sZW5ndGhcIlxuICAgICAgICBbbmdTdHlsZV09XCJnZXRDZWxsU3R5bGUocm93SW5kZXgsIDApXCJcbiAgICAgID5cbiAgICAgICAge3sgZ2V0Q2VsbFZhbHVlKHJvdywgY29sdW1uc1NpZ25hbCgpWzBdKSB9fVxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICAgIH0gQGVsc2Uge1xuICAgIDx0ciBbbmdTdHlsZV09XCJnZXRSb3dTdHlsZShyb3dJbmRleClcIj5cbiAgICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zU2lnbmFsKCk7IHRyYWNrIGNvbHVtbi5pZDsgbGV0IGNvbEluZGV4ID0gJGluZGV4KSB7XG4gICAgICA8dGQgW25nU3R5bGVdPVwiZ2V0Q2VsbFN0eWxlKHJvd0luZGV4LCBjb2xJbmRleClcIj5cbiAgICAgICAgQGlmIChpc1Jvd0VkaXRpbmcocm93LmlkKSAmJiBjb2x1bW4uY2VsbEVkaXRUZW1wbGF0ZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmNlbGxFZGl0VGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJnZXRDZWxsQ29udGV4dChyb3csIGNvbHVtbiwgcm93SW5kZXgpXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9IEBlbHNlIGlmIChjb2x1bW4uY2VsbFRlbXBsYXRlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uY2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiZ2V0Q2VsbENvbnRleHQocm93LCBjb2x1bW4sIHJvd0luZGV4KVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7IGdldENlbGxWYWx1ZShyb3csIGNvbHVtbikgfX1cbiAgICAgICAgfVxuICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICA8L3RyPlxuICAgIH0gfVxuICA8L3Rib2R5PlxuICBAaWYgKGhhc0Zvb3RlcigpKSB7XG4gIDx0Zm9vdD5cbiAgICA8dHIgW25nU3R5bGVdPVwiZ2V0Rm9vdGVyU3R5bGUoKVwiPlxuICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnNTaWduYWwoKTsgdHJhY2sgY29sdW1uLmlkKSB7XG4gICAgICA8dGQgW25nU3R5bGVdPVwiZ2V0Q2VsbFN0eWxlKC0xLCAkaW5kZXgpXCI+XG4gICAgICAgIEBpZiAoY29sdW1uLmZvb3RlclRlbXBsYXRlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uZm9vdGVyVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJnZXRGb290ZXJDb250ZXh0KGNvbHVtbilcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgPC90cj5cbiAgPC90Zm9vdD5cbiAgfVxuPC90YWJsZT5cbiJdfQ==
|
|
@@ -2,9 +2,8 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
4
|
import * as i2 from "../svg/svg.component";
|
|
5
|
-
import * as i3 from "../../
|
|
6
|
-
import * as i4 from "
|
|
7
|
-
import * as i5 from "./data-view-click-outside.directive";
|
|
5
|
+
import * as i3 from "../../verbena-button/verbena-button.component";
|
|
6
|
+
import * as i4 from "./data-view-click-outside.directive";
|
|
8
7
|
export class DataViewComponent {
|
|
9
8
|
buttonClass;
|
|
10
9
|
iconClass;
|
|
@@ -60,6 +59,7 @@ export class DataViewComponent {
|
|
|
60
59
|
}
|
|
61
60
|
onSearch(event) {
|
|
62
61
|
this.searchValue = event.target.value;
|
|
62
|
+
console.log(this.searchValue);
|
|
63
63
|
this.onSearchChange.emit({ key: this.searchKey, value: this.searchValue });
|
|
64
64
|
}
|
|
65
65
|
onClearSearch() {
|
|
@@ -129,11 +129,11 @@ export class DataViewComponent {
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
132
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: DataViewComponent, selector: "verben-data-view", inputs: { buttonClass: "buttonClass", iconClass: "iconClass", activeIconClass: "activeIconClass", columnCustomClass: "columnCustomClass", filterCustomClass: "filterCustomClass", sortCustomClass: "sortCustomClass", exportCustomClass: "exportCustomClass", selectCustomClass: "selectCustomClass", zIndex: "zIndex", createCustomClass: "createCustomClass", tableIcon: "tableIcon", cardIcon: "cardIcon", cardClass: "cardClass", tableClass: "tableClass", searchKey: "searchKey", searchValue: "searchValue", viewState: "viewState", searchTemplate: "searchTemplate", columnTemplate: "columnTemplate", filterTemplate: "filterTemplate", sortTemplate: "sortTemplate", children: "children", exportTemplate: "exportTemplate", createTemplate: "createTemplate", selectedColumnCount: "selectedColumnCount", selectedSortCount: "selectedSortCount", selectedFilterTableCount: "selectedFilterTableCount", inputWidth: "inputWidth", showColumnChild: "showColumnChild", showSortChild: "showSortChild", showFilterChild: "showFilterChild", showExportChild: "showExportChild", create: "create", showSelected: "showSelected", isTableView: "isTableView" }, outputs: { viewChange: "viewChange", stateChange: "stateChange", onSearchChange: "onSearchChange" }, ngImport: i0, template: "<div class=\"toolbar flex gap justify-between items-center \">\n <div class=\"flex items-center gap flex-1 justify-end\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verbena-input\n [type]=\"'text'\"\n [placeHolder]=\"'Search...'\"\n (input)=\"onSearch($event)\"\n [bgColor]=\"'transparent'\"\n [border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n\n <div class=\"flex items-center relative gap flex-1 justify-end \">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"resetChildViewsExcept('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n columnCustomClass ? columnCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span\n >Columns <sup>({{ selectedColumnCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"showColumnChild\" select=\"[column-content]\">\n </ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"resetChildViewsExcept('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n filterCustomClass ? filterCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span\n >Filter <sup>({{ selectedFilterTableCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showFilterChild\"\n select=\"[filter-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"resetChildViewsExcept('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n sortCustomClass ? sortCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span\n >Sort <sup>({{ selectedSortCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"resetChildViewsExcept('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n exportCustomClass ? exportCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div>\n\n <!-- Create Button -->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"resetChildViewsExcept('create')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n class=\"text-sm font-semibold\"\n [bgColor]=\"'#FFE681'\"\n [buttonClass]=\"createCustomClass\"\n [pd]=\"'6px'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#000'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n <div>\n <ng-container *ngIf=\"children; else defaultChildren\"></ng-container>\n <ng-template #defaultChildren>\n <div>\n <ng-content select=\"[children]\"></ng-content>\n </div>\n </ng-template>\n </div>\n </div>\n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n \n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:flex;justify-content:space-between;align-content:center;border:none;background-color:transparent;cursor:pointer;border:1px solid gray;padding:0;border-radius:6px;overflow:hidden;height:35px}.input-class{border:none;min-width:100%;display:block}.toggle-button-container verben-svg{transition:background-color .5s ease;padding:6px;position:relative}.toggle-button-container verben-svg.active{background-color:#d3d3d3}.justify-end{justify-self:end}.flex{display:flex}.flex-1{flex:1}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;background-color:#80808018;border-radius:10px}sup{color:#3479e9;font-weight:500}.data-view-element{position:absolute;top:40px;left:0}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;right:10px;cursor:pointer;top:13px}.toolbar{margin-bottom:15px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }, { kind: "component", type: i3.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "directive", type: i5.OutSideClickDirective, selector: "[appOutSideClick]", inputs: ["appOutSideClick"], outputs: ["outSideClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
132
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: DataViewComponent, selector: "verben-data-view", inputs: { buttonClass: "buttonClass", iconClass: "iconClass", activeIconClass: "activeIconClass", columnCustomClass: "columnCustomClass", filterCustomClass: "filterCustomClass", sortCustomClass: "sortCustomClass", exportCustomClass: "exportCustomClass", selectCustomClass: "selectCustomClass", zIndex: "zIndex", createCustomClass: "createCustomClass", tableIcon: "tableIcon", cardIcon: "cardIcon", cardClass: "cardClass", tableClass: "tableClass", searchKey: "searchKey", searchValue: "searchValue", viewState: "viewState", searchTemplate: "searchTemplate", columnTemplate: "columnTemplate", filterTemplate: "filterTemplate", sortTemplate: "sortTemplate", children: "children", exportTemplate: "exportTemplate", createTemplate: "createTemplate", selectedColumnCount: "selectedColumnCount", selectedSortCount: "selectedSortCount", selectedFilterTableCount: "selectedFilterTableCount", inputWidth: "inputWidth", showColumnChild: "showColumnChild", showSortChild: "showSortChild", showFilterChild: "showFilterChild", showExportChild: "showExportChild", create: "create", showSelected: "showSelected", isTableView: "isTableView" }, outputs: { viewChange: "viewChange", stateChange: "stateChange", onSearchChange: "onSearchChange" }, ngImport: i0, template: "<div class=\"toolbar flex gap justify-between items-center \">\n <div class=\"flex items-center gap flex-1 justify-end\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg\n [icon]=\"'search2'\"\n [width]=\"20\"\n [height]=\"20\"\n ></verben-svg>\n <input\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n<div class=\"relative flex items-center gap-2\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"resetChildViewsExcept('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n columnCustomClass ? columnCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span\n >Columns <sup>({{ selectedColumnCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"showColumnChild\" select=\"[column-content]\">\n </ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"resetChildViewsExcept('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n filterCustomClass ? filterCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span\n >Filter <sup>({{ selectedFilterTableCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showFilterChild\"\n select=\"[filter-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"resetChildViewsExcept('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n sortCustomClass ? sortCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span\n >Sort <sup>({{ selectedSortCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"resetChildViewsExcept('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n exportCustomClass ? exportCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div>\n\n <!-- Create Button -->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"resetChildViewsExcept('create')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n class=\"text-sm font-semibold\"\n [bgColor]=\"'#FFE681'\"\n [buttonClass]=\"createCustomClass\"\n [pd]=\"'6px'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#000'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n</div>\n \n \n <div>\n <ng-container *ngIf=\"children; else defaultChildren\"></ng-container>\n <ng-template #defaultChildren>\n <div>\n <ng-content select=\"[children]\"></ng-content>\n </div>\n </ng-template>\n </div>\n \n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n \n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:flex;justify-content:space-between;align-content:center;border:none;background-color:transparent;cursor:pointer;border:1px solid gray;padding:0;border-radius:6px;overflow:hidden;height:35px}.input-class{border:none;min-width:100%;display:block}.toggle-button-container verben-svg{transition:background-color .5s ease;padding:6px;position:relative}.toggle-button-container verben-svg.active{background-color:#d3d3d3}.justify-end{justify-self:end}.flex{display:flex}.flex-1{flex:1}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;border-radius:10px;overflow:hidden;display:flex;align-items:center;padding:8px 30px 8px 10px;background-color:#80808018;gap:10px}.search-input input{outline:0;width:100%;display:block;background-color:transparent}.search-input input::placeholder{color:#424242;font-size:14px}sup{color:#3479e9;font-weight:500}.data-view-element{position:absolute;top:40px;left:0}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;right:10px;cursor:pointer;top:13px}.toolbar{margin-bottom:15px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }, { kind: "component", type: i3.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "directive", type: i4.OutSideClickDirective, selector: "[appOutSideClick]", inputs: ["appOutSideClick"], outputs: ["outSideClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
133
133
|
}
|
|
134
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataViewComponent, decorators: [{
|
|
135
135
|
type: Component,
|
|
136
|
-
args: [{ selector: 'verben-data-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"toolbar flex gap justify-between items-center \">\n <div class=\"flex items-center gap flex-1 justify-end\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <
|
|
136
|
+
args: [{ selector: 'verben-data-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"toolbar flex gap justify-between items-center \">\n <div class=\"flex items-center gap flex-1 justify-end\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg\n [icon]=\"'search2'\"\n [width]=\"20\"\n [height]=\"20\"\n ></verben-svg>\n <input\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n<div class=\"relative flex items-center gap-2\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"resetChildViewsExcept('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n columnCustomClass ? columnCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span\n >Columns <sup>({{ selectedColumnCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"showColumnChild\" select=\"[column-content]\">\n </ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"resetChildViewsExcept('filter')\"\n *ngIf=\"viewState.isFilter\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n filterCustomClass ? filterCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span\n >Filter <sup>({{ selectedFilterTableCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showFilterChild\"\n select=\"[filter-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"resetChildViewsExcept('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n sortCustomClass ? sortCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span\n >Sort <sup>({{ selectedSortCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"resetChildViewsExcept('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n exportCustomClass ? exportCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div>\n\n <!-- Create Button -->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"resetChildViewsExcept('create')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n class=\"text-sm font-semibold\"\n [bgColor]=\"'#FFE681'\"\n [buttonClass]=\"createCustomClass\"\n [pd]=\"'6px'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#000'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n</div>\n \n \n <div>\n <ng-container *ngIf=\"children; else defaultChildren\"></ng-container>\n <ng-template #defaultChildren>\n <div>\n <ng-content select=\"[children]\"></ng-content>\n </div>\n </ng-template>\n </div>\n \n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n \n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".toggle-button-container button{display:flex;justify-content:space-between;align-content:center;border:none;background-color:transparent;cursor:pointer;border:1px solid gray;padding:0;border-radius:6px;overflow:hidden;height:35px}.input-class{border:none;min-width:100%;display:block}.toggle-button-container verben-svg{transition:background-color .5s ease;padding:6px;position:relative}.toggle-button-container verben-svg.active{background-color:#d3d3d3}.justify-end{justify-self:end}.flex{display:flex}.flex-1{flex:1}.justify-between{justify-content:space-between}.items-center{align-items:center}.font-semibold{font-weight:600}.font-normal{font-weight:400}.text-sm{font-size:14px}.text-xs{font-size:12px}.gap{gap:7px}.pd{padding:5px 8px}.rounded-sm{border-radius:10px}.cursor-pointer{cursor:pointer}.search-input{position:relative;border-radius:10px;overflow:hidden;display:flex;align-items:center;padding:8px 30px 8px 10px;background-color:#80808018;gap:10px}.search-input input{outline:0;width:100%;display:block;background-color:transparent}.search-input input::placeholder{color:#424242;font-size:14px}sup{color:#3479e9;font-weight:500}.data-view-element{position:absolute;top:40px;left:0}.relative{position:relative}.z-10{z-index:100000000000}.close-icon-class{position:absolute;right:10px;cursor:pointer;top:13px}.toolbar{margin-bottom:15px}\n"] }]
|
|
137
137
|
}], propDecorators: { buttonClass: [{
|
|
138
138
|
type: Input
|
|
139
139
|
}], iconClass: [{
|
|
@@ -211,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
211
211
|
}], onSearchChange: [{
|
|
212
212
|
type: Output
|
|
213
213
|
}] } });
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS12aWV3L2RhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFtQnZCLE1BQU0sT0FBTyxpQkFBaUI7SUFDbkIsV0FBVyxDQUFVO0lBQ3JCLFNBQVMsQ0FBVTtJQUNuQixlQUFlLEdBQVUsRUFBRSxDQUFBO0lBQzNCLGlCQUFpQixHQUFTLEVBQUUsQ0FBQTtJQUM1QixpQkFBaUIsR0FBUyxFQUFFLENBQUE7SUFDNUIsZUFBZSxHQUFTLEVBQUUsQ0FBQTtJQUMxQixpQkFBaUIsR0FBUyxFQUFFLENBQUE7SUFDNUIsaUJBQWlCLEdBQVMsRUFBRSxDQUFBO0lBQzVCLE1BQU0sR0FBUyxDQUFDLENBQUE7SUFDaEIsaUJBQWlCLEdBQVEsRUFBRSxDQUFBO0lBQzNCLFNBQVMsR0FBVyxRQUFRLENBQUM7SUFDN0IsUUFBUSxHQUFXLFdBQVcsQ0FBQztJQUMvQixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3ZCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsU0FBUyxHQUFRLFFBQVEsQ0FBQztJQUMxQixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLFNBQVMsR0FBYztRQUM5QixRQUFRLEVBQUUsSUFBSTtRQUNkLFFBQVEsRUFBRSxJQUFJO1FBQ2QsUUFBUSxFQUFFLElBQUk7UUFDZCxNQUFNLEVBQUUsSUFB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SztnQkFDRSxlQUFlO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmludGVyZmFjZSBWaWV3U3RhdGUge1xuICBpc1NlYXJjaD86IGJvb2xlYW47XG4gIGlzQ29sdW1uPzogYm9vbGVhbjtcbiAgaXNGaWx0ZXI/OiBib29sZWFuO1xuICBpc1NvcnQ/OiBib29sZWFuO1xuICBpc0V4cG9ydD86IGJvb2xlYW47XG4gIGlzU2VsZWN0PzogYm9vbGVhbjtcbiAgaXNDcmVhdGU/OmJvb2xlYW5cbiAgaXNUb2dnbGU/OmJvb2xlYW5cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLWRhdGEtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBidXR0b25DbGFzcz86IHN0cmluZztcbiAgQElucHV0KCkgaWNvbkNsYXNzPzogc3RyaW5nO1xuICBASW5wdXQoKSBhY3RpdmVJY29uQ2xhc3M/OiBzdHJpbmc9XCJcIlxuICBASW5wdXQoKSBjb2x1bW5DdXN0b21DbGFzcz86c3RyaW5nPScnXG4gIEBJbnB1dCgpIGZpbHRlckN1c3RvbUNsYXNzPzpzdHJpbmc9JydcbiAgQElucHV0KCkgc29ydEN1c3RvbUNsYXNzPzpzdHJpbmc9JydcbiAgQElucHV0KCkgZXhwb3J0Q3VzdG9tQ2xhc3M/OnN0cmluZz0nJ1xuICBASW5wdXQoKSBzZWxlY3RDdXN0b21DbGFzcz86c3RyaW5nPScnXG4gIEBJbnB1dCgpIHpJbmRleD86bnVtYmVyPTVcbiAgQElucHV0KCkgY3JlYXRlQ3VzdG9tQ2xhc3M6c3RyaW5nPScnXG4gIEBJbnB1dCgpIHRhYmxlSWNvbjogc3RyaW5nID0gJ2dyaWQtMyc7XG4gIEBJbnB1dCgpIGNhcmRJY29uOiBzdHJpbmcgPSAnbGlzdC12aWV3JztcbiAgQElucHV0KCkgY2FyZENsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdGFibGVDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNlYXJjaEtleTpzdHJpbmc9J3NlYXJjaCc7XG4gIEBJbnB1dCgpIHNlYXJjaFZhbHVlOnN0cmluZz0nJztcbiAgQElucHV0KCkgdmlld1N0YXRlOiBWaWV3U3RhdGUgPSB7XG4gICAgaXNTZWFyY2g6IHRydWUsXG4gICAgaXNDb2x1bW46IHRydWUsXG4gICAgaXNGaWx0ZXI6IHRydWUsXG4gICAgaXNTb3J0OiB0cnVlLFxuICAgIGlzRXhwb3J0OiB0cnVlLFxuICAgIGlzU2VsZWN0OiB0cnVlLFxuICAgIGlzQ3JlYXRlOnRydWUsXG4gICAgaXNUb2dnbGU6dHJ1ZVxuICB9O1xuXG4gIEBJbnB1dCgpIHNlYXJjaFRlbXBsYXRlPzogTm9kZTtcbiAgQElucHV0KCkgY29sdW1uVGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBmaWx0ZXJUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIHNvcnRUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIGNoaWxkcmVuPzogTm9kZTtcbiAgQElucHV0KCkgZXhwb3J0VGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBjcmVhdGVUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIHNlbGVjdGVkQ29sdW1uQ291bnQ/OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBzZWxlY3RlZFNvcnRDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBpbnB1dFdpZHRoOiBzdHJpbmc9XCIxMDAlXCI7XG4gIEBJbnB1dCgpc2hvd0NvbHVtbkNoaWxkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dTb3J0Q2hpbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0ZpbHRlckNoaWxkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dFeHBvcnRDaGlsZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjcmVhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICBASW5wdXQoKSBpc1RhYmxlVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgdmlld0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHN0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogYm9vbGVhbiB9PigpO1xuICBAT3V0cHV0KCkgb25TZWFyY2hDaGFuZ2U9bmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KClcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHRvZ2dsZVZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5pc1RhYmxlVmlldyA9ICF0aGlzLmlzVGFibGVWaWV3O1xuICAgIHRoaXMudmlld0NoYW5nZS5lbWl0KHRoaXMuaXNUYWJsZVZpZXcpO1xuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6YW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZT1ldmVudC50YXJnZXQudmFsdWVcbiAgICB0aGlzLm9uU2VhcmNoQ2hhbmdlLmVtaXQoe2tleTp0aGlzLnNlYXJjaEtleSwgdmFsdWU6dGhpcy5zZWFyY2hWYWx1ZX0pO1xuICB9XG4gIFxub25DbGVhclNlYXJjaCgpe1xuIHRoaXMuc2VhcmNoVmFsdWU9XCJcIlxuIHRoaXMub25TZWFyY2hDaGFuZ2UuZW1pdCh7IGtleTogdGhpcy5zZWFyY2hLZXksIHZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlIH0pO1xuXG59XG4gIHRvZ2dsZUNoaWxkVmlldyh2aWV3VHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoICh2aWV3VHlwZSkge1xuICAgICAgY2FzZSAnY29sdW1uJzpcbiAgICAgICAgdGhpcy5zaG93Q29sdW1uQ2hpbGQgPSAhdGhpcy5zaG93Q29sdW1uQ2hpbGQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdjb2x1bW4nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmaWx0ZXInOlxuICAgICAgICB0aGlzLnNob3dGaWx0ZXJDaGlsZCA9ICF0aGlzLnNob3dGaWx0ZXJDaGlsZDtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ2ZpbHRlcicpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NvcnQnOlxuICAgICAgICB0aGlzLnNob3dTb3J0Q2hpbGQgPSAhdGhpcy5zaG93U29ydENoaWxkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnc29ydCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIHRoaXMuc2hvd1NlbGVjdGVkID0gIXRoaXMuc2hvd1NlbGVjdGVkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnc2VsZWN0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXhwb3J0JzpcbiAgICAgICAgdGhpcy5zaG93RXhwb3J0Q2hpbGQgPSAhdGhpcy5zaG93RXhwb3J0Q2hpbGQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdleHBvcnQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NyZWF0ZSc6XG4gICAgICAgICAgdGhpcy5jcmVhdGUgPSAhdGhpcy5jcmVhdGU7XG4gICAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ2NyZWF0ZScpO1xuICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoeyBrZXk6IHZpZXdUeXBlLCB2YWx1ZTogdGhpcy5nZXRDaGlsZFZpZXdTdGF0ZSh2aWV3VHlwZSkgfSk7XG4gICAgXG4gIH1cbiAgcmVzZXRDaGlsZFZpZXdzRXhjZXB0KHZpZXdUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodmlld1R5cGUgIT09ICdjb2x1bW4nKSB0aGlzLnNob3dDb2x1bW5DaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ2ZpbHRlcicpIHRoaXMuc2hvd0ZpbHRlckNoaWxkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnc29ydCcpIHRoaXMuc2hvd1NvcnRDaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ3NlbGVjdCcpIHRoaXMuc2hvd1NlbGVjdGVkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnZXhwb3J0JykgdGhpcy5zaG93RXhwb3J0Q2hpbGQgPSBmYWxzZTtcbiAgICBpZiAodmlld1R5cGUgIT09ICdjcmVhdGUnKSB0aGlzLmNyZWF0ZSA9IGZhbHNlO1xuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBnZXQgdGhlIHN0YXRlIG9mIGEgc3BlY2lmaWMgY2hpbGQgdmlld1xuICBnZXRDaGlsZFZpZXdTdGF0ZSh2aWV3VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh2aWV3VHlwZSkge1xuICAgICAgY2FzZSAnY29sdW1uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0NvbHVtbkNoaWxkO1xuICAgICAgY2FzZSAnZmlsdGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0ZpbHRlckNoaWxkO1xuICAgICAgY2FzZSAnc29ydCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dTb3J0Q2hpbGQ7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93U2VsZWN0ZWQ7XG4gICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93RXhwb3J0Q2hpbGQ7XG4gICAgICAgIGNhc2UgJ2NyZWF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0b29sYmFyIGZsZXggZ2FwIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAgZmxleC0xIGp1c3RpZnktZW5kXCI+XG4gICAgPGRpdiAqbmdJZj1cInZpZXdTdGF0ZS5pc1RvZ2dsZVwiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVWaWV3KClcIiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIFtpY29uXT1cInRhYmxlSWNvblwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCIhaXNUYWJsZVZpZXdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIiFpc1RhYmxlVmlldyA/IGFjdGl2ZUljb25DbGFzcyA6IGljb25DbGFzc1wiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgW2ljb25dPVwiY2FyZEljb25cIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNUYWJsZVZpZXdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImlzVGFibGVWaWV3ID8gYWN0aXZlSWNvbkNsYXNzIDogaWNvbkNsYXNzXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMjVcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMjVcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTZWFyY2ggSW5wdXQgLS0+XG4gICAgPGRpdlxuICAgICAgW3N0eWxlLndpZHRoXT1cImlucHV0V2lkdGhcIlxuICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNTZWFyY2hcIlxuICAgID5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInU2VhcmNoLi4uJ1wiXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgW2JnQ29sb3JdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFtib3JkZXJdPVwiJzAnXCJcbiAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFZhbHVlXCJcbiAgICAgIC8+XG4gICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAqbmdJZj1cInNlYXJjaFZhbHVlLmxlbmd0aCA+IDBcIlxuICAgICAgICBbaWNvbl09XCInY2xvc2UnXCJcbiAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXJTZWFyY2goKVwiXG4gICAgICAgIGNsYXNzPVwiY2xvc2UtaWNvbi1jbGFzc1wiXG4gICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHJlbGF0aXZlIGdhcCBmbGV4LTEganVzdGlmeS1lbmQgXCI+XG4gICAgPCEtLSBDb2x1bW4gU2VjdGlvbiAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbYXBwT3V0U2lkZUNsaWNrXT1cInNob3dDb2x1bW5DaGlsZFwiXG4gICAgICAob3V0U2lkZUNsaWNrKT1cInJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnY29sdW1uJylcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNDb2x1bW4gJiYgaXNUYWJsZVZpZXdcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0Q29sdW1uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb2x1bW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgICAgJ2ZsZXggZ2FwIHRleHQteHMgaXRlbXMtY2VudGVyIHBkIHJvdW5kZWQgY3Vyc29yLXBvaW50ZXInLFxuICAgICAgICAgICAgY29sdW1uQ3VzdG9tQ2xhc3MgPyBjb2x1bW5DdXN0b21DbGFzcyA6ICcnXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiJyNEOUQ5RDk0MCdcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2NvbHVtbicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidjb2x1bW4nXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICA+Q29sdW1ucyA8c3VwPih7eyBzZWxlY3RlZENvbHVtbkNvdW50IH19KTwvc3VwPjwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiIGNsYXNzPVwiZGF0YS12aWV3LWVsZW1lbnRcIj5cbiAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cInNob3dDb2x1bW5DaGlsZFwiIHNlbGVjdD1cIltjb2x1bW4tY29udGVudF1cIj5cbiAgICAgICAgICA8L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRmlsdGVyIFNlY3Rpb24gLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93RmlsdGVyQ2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJyZXNldENoaWxkVmlld3NFeGNlcHQoJ2ZpbHRlcicpXCJcbiAgICAgICpuZ0lmPVwidmlld1N0YXRlLmlzRmlsdGVyXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEZpbHRlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RmlsdGVyPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgICdmbGV4IGdhcCB0ZXh0LXhzIGl0ZW1zLWNlbnRlciBwZCByb3VuZGVkIGN1cnNvci1wb2ludGVyJyxcbiAgICAgICAgICAgIGZpbHRlckN1c3RvbUNsYXNzID8gZmlsdGVyQ3VzdG9tQ2xhc3MgOiAnJ1xuICAgICAgICAgIF1cIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIicjRDlEOUQ5NDAnXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRWaWV3KCdmaWx0ZXInKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiMTVcIiBbaWNvbl09XCInZmlsdGVyJ1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgPkZpbHRlciA8c3VwPih7eyBzZWxlY3RlZEZpbHRlclRhYmxlQ291bnQgfX0pPC9zdXA+PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICAqbmdJZj1cInNob3dGaWx0ZXJDaGlsZFwiXG4gICAgICAgICAgICBzZWxlY3Q9XCJbZmlsdGVyLWNvbnRlbnRdXCJcbiAgICAgICAgICA+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFNvcnQgU2VjdGlvbiAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbYXBwT3V0U2lkZUNsaWNrXT1cInNob3dTb3J0Q2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJyZXNldENoaWxkVmlld3NFeGNlcHQoJ3NvcnQnKVwiXG4gICAgICAqbmdJZj1cInZpZXdTdGF0ZS5pc1NvcnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzb3J0VGVtcGxhdGU7IGVsc2UgZGVmYXVsdFNvcnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNvcnQ+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgICAgJ2ZsZXggZ2FwIHRleHQteHMgaXRlbXMtY2VudGVyIHBkIHJvdW5kZWQgY3Vyc29yLXBvaW50ZXInLFxuICAgICAgICAgICAgc29ydEN1c3RvbUNsYXNzID8gc29ydEN1c3RvbUNsYXNzIDogJydcbiAgICAgICAgICBdXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCInI0Q5RDlEOTQwJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkVmlldygnc29ydCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidzb3J0J1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgPlNvcnQgPHN1cD4oe3sgc2VsZWN0ZWRTb3J0Q291bnQgfX0pPC9zdXA+PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICAqbmdJZj1cInNob3dTb3J0Q2hpbGRcIlxuICAgICAgICAgICAgc2VsZWN0PVwiW3NvcnQtY29udGVudF1cIlxuICAgICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRXhwb3J0IFNlY3Rpb24gLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93RXhwb3J0Q2hpbGRcIlxuICAgICAgKG91dFNpZGVDbGljayk9XCJyZXNldENoaWxkVmlld3NFeGNlcHQoJ2V4cG9ydCcpXCJcbiAgICAgICpuZ0lmPVwidmlld1N0YXRlLmlzRXhwb3J0XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhwb3J0VGVtcGxhdGU7IGVsc2UgZGVmYXVsdEV4cG9ydFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RXhwb3J0PlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgICdmbGV4IGdhcCB0ZXh0LXhzIGl0ZW1zLWNlbnRlciBwZCByb3VuZGVkIGN1cnNvci1wb2ludGVyJyxcbiAgICAgICAgICAgIGV4cG9ydEN1c3RvbUNsYXNzID8gZXhwb3J0Q3VzdG9tQ2xhc3MgOiAnJ1xuICAgICAgICAgIF1cIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIicjRDlEOUQ5NDAnXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRWaWV3KCdleHBvcnQnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiMTVcIiBbaWNvbl09XCInZXhwb3J0J1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICBFeHBvcnRcbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiIGNsYXNzPVwiZGF0YS12aWV3LWVsZW1lbnRcIj5cbiAgICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgICAgKm5nSWY9XCJzaG93RXhwb3J0Q2hpbGRcIlxuICAgICAgICAgICAgc2VsZWN0PVwiW2V4cG9ydC1jb250ZW50XVwiXG4gICAgICAgICAgPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBTZWxlY3QgU2VjdGlvbiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwidmlld1N0YXRlLmlzU2VsZWN0XCI+XG4gICAgICA8c3BhblxuICAgICAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICAgJ2ZsZXggZ2FwIHRleHQteHMgaXRlbXMtY2VudGVyIHBkIHJvdW5kZWQgY3Vyc29yLXBvaW50ZXInLFxuICAgICAgICAgIHNlbGVjdEN1c3RvbUNsYXNzID8gc2VsZWN0Q3VzdG9tQ2xhc3MgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiJyNEOUQ5RDk0MCdcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRWaWV3KCdzZWxlY3QnKVwiXG4gICAgICA+XG4gICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidzZWxlY3QnXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8c3Bhbj5TZWxlY3Q8L3NwYW4+XG4gICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCI2XCIgW2ljb25dPVwiJ2NoZXZyb24tZG93bidcIj48L3ZlcmJlbi1zdmc+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENyZWF0ZSBCdXR0b24gLS0+XG5cbiAgICA8ZGl2XG4gICAgICBbYXBwT3V0U2lkZUNsaWNrXT1cImNyZWF0ZVwiXG4gICAgICAob3V0U2lkZUNsaWNrKT1cInJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnY3JlYXRlJylcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNDcmVhdGVcIlxuICAgID5cbiAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgICBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZFwiXG4gICAgICAgIFtiZ0NvbG9yXT1cIicjRkZFNjgxJ1wiXG4gICAgICAgIFtidXR0b25DbGFzc109XCJjcmVhdGVDdXN0b21DbGFzc1wiXG4gICAgICAgIFtwZF09XCInNnB4J1wiXG4gICAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzRweCdcIlxuICAgICAgICBbdGV4dENvbG9yXT1cIicjMDAwJ1wiXG4gICAgICAgIFtzdmddPVwiJ2FkZCdcIlxuICAgICAgICBbc3ZnUG9zaXRpb25dPVwiJ3JpZ2h0J1wiXG4gICAgICAgIFt0ZXh0XT1cIidDcmVhdGUgTmV3J1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2NyZWF0ZScpXCJcbiAgICAgID5cbiAgICAgIDwvdmVyYmVuYS1idXR0b24+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JlYXRlVGVtcGxhdGU7IGVsc2UgZGVmYXVsdENyZWF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q3JlYXRlPlxuICAgICAgICA8ZGl2IFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiIGNsYXNzPVwiZGF0YS12aWV3LWVsZW1lbnRcIj5cbiAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cImNyZWF0ZVwiIHNlbGVjdD1cIltjcmVhdGUtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkcmVuOyBlbHNlIGRlZmF1bHRDaGlsZHJlblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2hpbGRyZW4+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NoaWxkcmVuXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIEdyaWQgYW5kIExpc3QgVmlldyBIYW5kbGluZyAtLT5cbjxkaXYgKm5nSWY9XCJpc1RhYmxlVmlldzsgZWxzZSBsaXN0Vmlld1RlbXBsYXRlXCI+XG4gIFxuICA8ZGl2IFtzdHlsZS5vdmVyZmxvd109XCInYXV0bydcIiBbY2xhc3NdPVwidGFibGVDbGFzc1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0YWJsZS1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbGlzdFZpZXdUZW1wbGF0ZT5cbiAgPGRpdiBbY2xhc3NdPVwiY2FyZENsYXNzXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NhcmQtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS12aWV3L2RhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7Ozs7OztBQW1CdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixXQUFXLENBQVU7SUFDckIsU0FBUyxDQUFVO0lBQ25CLGVBQWUsR0FBVSxFQUFFLENBQUE7SUFDM0IsaUJBQWlCLEdBQVMsRUFBRSxDQUFBO0lBQzVCLGlCQUFpQixHQUFTLEVBQUUsQ0FBQTtJQUM1QixlQUFlLEdBQVMsRUFBRSxDQUFBO0lBQzFCLGlCQUFpQixHQUFTLEVBQUUsQ0FBQTtJQUM1QixpQkFBaUIsR0FBUyxFQUFFLENBQUE7SUFDNUIsTUFBTSxHQUFTLENBQUMsQ0FBQTtJQUNoQixpQkFBaUIsR0FBUSxFQUFFLENBQUE7SUFDM0IsU0FBUyxHQUFXLFFBQVEsQ0FBQztJQUM3QixRQUFRLEdBQVcsV0FBVyxDQUFDO0lBQy9CLFNBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixTQUFTLEdBQVEsUUFBUSxDQUFDO0lBQzFCLFdBQVcsR0FBUSxFQUFFLENBQUM7SUFDdEIsU0FBUyxHQUFjO1FBQzlCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsUUFBUSxFQUFFLElBQUk7UUFDZCxRQUFRLEVBQUUsSUFBSTtRQUNkLE1BQU0sRUFBRSxJQUFJ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QUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNFLGVBQWU7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW50ZXJmYWNlIFZpZXdTdGF0ZSB7XG4gIGlzU2VhcmNoPzogYm9vbGVhbjtcbiAgaXNDb2x1bW4/OiBib29sZWFuO1xuICBpc0ZpbHRlcj86IGJvb2xlYW47XG4gIGlzU29ydD86IGJvb2xlYW47XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgaXNTZWxlY3Q/OiBib29sZWFuO1xuICBpc0NyZWF0ZT86Ym9vbGVhblxuICBpc1RvZ2dsZT86Ym9vbGVhblxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZXJiZW4tZGF0YS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdmlldy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGJ1dHRvbkNsYXNzPzogc3RyaW5nO1xuICBASW5wdXQoKSBpY29uQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFjdGl2ZUljb25DbGFzcz86IHN0cmluZz1cIlwiXG4gIEBJbnB1dCgpIGNvbHVtbkN1c3RvbUNsYXNzPzpzdHJpbmc9JydcbiAgQElucHV0KCkgZmlsdGVyQ3VzdG9tQ2xhc3M/OnN0cmluZz0nJ1xuICBASW5wdXQoKSBzb3J0Q3VzdG9tQ2xhc3M/OnN0cmluZz0nJ1xuICBASW5wdXQoKSBleHBvcnRDdXN0b21DbGFzcz86c3RyaW5nPScnXG4gIEBJbnB1dCgpIHNlbGVjdEN1c3RvbUNsYXNzPzpzdHJpbmc9JydcbiAgQElucHV0KCkgekluZGV4PzpudW1iZXI9NVxuICBASW5wdXQoKSBjcmVhdGVDdXN0b21DbGFzczpzdHJpbmc9JydcbiAgQElucHV0KCkgdGFibGVJY29uOiBzdHJpbmcgPSAnZ3JpZC0zJztcbiAgQElucHV0KCkgY2FyZEljb246IHN0cmluZyA9ICdsaXN0LXZpZXcnO1xuICBASW5wdXQoKSBjYXJkQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB0YWJsZUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2VhcmNoS2V5OnN0cmluZz0nc2VhcmNoJztcbiAgQElucHV0KCkgc2VhcmNoVmFsdWU6c3RyaW5nPScnO1xuICBASW5wdXQoKSB2aWV3U3RhdGU6IFZpZXdTdGF0ZSA9IHtcbiAgICBpc1NlYXJjaDogdHJ1ZSxcbiAgICBpc0NvbHVtbjogdHJ1ZSxcbiAgICBpc0ZpbHRlcjogdHJ1ZSxcbiAgICBpc1NvcnQ6IHRydWUsXG4gICAgaXNFeHBvcnQ6IHRydWUsXG4gICAgaXNTZWxlY3Q6IHRydWUsXG4gICAgaXNDcmVhdGU6dHJ1ZSxcbiAgICBpc1RvZ2dsZTp0cnVlXG4gIH07XG5cbiAgQElucHV0KCkgc2VhcmNoVGVtcGxhdGU/OiBOb2RlO1xuICBASW5wdXQoKSBjb2x1bW5UZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIGZpbHRlclRlbXBsYXRlPzogTm9kZTtcbiAgQElucHV0KCkgc29ydFRlbXBsYXRlPzogTm9kZTtcbiAgQElucHV0KCkgY2hpbGRyZW4/OiBOb2RlO1xuICBASW5wdXQoKSBleHBvcnRUZW1wbGF0ZT86IE5vZGU7XG4gIEBJbnB1dCgpIGNyZWF0ZVRlbXBsYXRlPzogTm9kZTtcbiAgQElucHV0KCkgc2VsZWN0ZWRDb2x1bW5Db3VudD86IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHNlbGVjdGVkU29ydENvdW50OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBzZWxlY3RlZEZpbHRlclRhYmxlQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIGlucHV0V2lkdGg6IHN0cmluZz1cIjEwMCVcIjtcbiAgQElucHV0KClzaG93Q29sdW1uQ2hpbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1NvcnRDaGlsZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93RmlsdGVyQ2hpbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0V4cG9ydENoaWxkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNyZWF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93U2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIEBJbnB1dCgpIGlzVGFibGVWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSB2aWV3Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgc3RhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsga2V5OiBzdHJpbmc7IHZhbHVlOiBib29sZWFuIH0+KCk7XG4gIEBPdXRwdXQoKSBvblNlYXJjaENoYW5nZT1uZXcgRXZlbnRFbWl0dGVyPHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4oKVxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgdG9nZ2xlVmlldygpOiB2b2lkIHtcbiAgICB0aGlzLmlzVGFibGVWaWV3ID0gIXRoaXMuaXNUYWJsZVZpZXc7XG4gICAgdGhpcy52aWV3Q2hhbmdlLmVtaXQodGhpcy5pc1RhYmxlVmlldyk7XG4gIH1cblxuICBvblNlYXJjaChldmVudDphbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlPWV2ZW50LnRhcmdldC52YWx1ZVxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VhcmNoVmFsdWUpO1xuICAgIFxuICAgIHRoaXMub25TZWFyY2hDaGFuZ2UuZW1pdCh7a2V5OnRoaXMuc2VhcmNoS2V5LCB2YWx1ZTp0aGlzLnNlYXJjaFZhbHVlfSk7XG4gICAgXG4gIH1cbiAgXG5vbkNsZWFyU2VhcmNoKCl7XG4gdGhpcy5zZWFyY2hWYWx1ZT1cIlwiXG4gdGhpcy5vblNlYXJjaENoYW5nZS5lbWl0KHsga2V5OiB0aGlzLnNlYXJjaEtleSwgdmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUgfSk7XG59XG4gIHRvZ2dsZUNoaWxkVmlldyh2aWV3VHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoICh2aWV3VHlwZSkge1xuICAgICAgY2FzZSAnY29sdW1uJzpcbiAgICAgICAgdGhpcy5zaG93Q29sdW1uQ2hpbGQgPSAhdGhpcy5zaG93Q29sdW1uQ2hpbGQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdjb2x1bW4nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmaWx0ZXInOlxuICAgICAgICB0aGlzLnNob3dGaWx0ZXJDaGlsZCA9ICF0aGlzLnNob3dGaWx0ZXJDaGlsZDtcbiAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ2ZpbHRlcicpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NvcnQnOlxuICAgICAgICB0aGlzLnNob3dTb3J0Q2hpbGQgPSAhdGhpcy5zaG93U29ydENoaWxkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnc29ydCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIHRoaXMuc2hvd1NlbGVjdGVkID0gIXRoaXMuc2hvd1NlbGVjdGVkO1xuICAgICAgICB0aGlzLnJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnc2VsZWN0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXhwb3J0JzpcbiAgICAgICAgdGhpcy5zaG93RXhwb3J0Q2hpbGQgPSAhdGhpcy5zaG93RXhwb3J0Q2hpbGQ7XG4gICAgICAgIHRoaXMucmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdleHBvcnQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NyZWF0ZSc6XG4gICAgICAgICAgdGhpcy5jcmVhdGUgPSAhdGhpcy5jcmVhdGU7XG4gICAgICAgICAgdGhpcy5yZXNldENoaWxkVmlld3NFeGNlcHQoJ2NyZWF0ZScpO1xuICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoeyBrZXk6IHZpZXdUeXBlLCB2YWx1ZTogdGhpcy5nZXRDaGlsZFZpZXdTdGF0ZSh2aWV3VHlwZSkgfSk7XG4gICAgXG4gIH1cbiAgcmVzZXRDaGlsZFZpZXdzRXhjZXB0KHZpZXdUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodmlld1R5cGUgIT09ICdjb2x1bW4nKSB0aGlzLnNob3dDb2x1bW5DaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ2ZpbHRlcicpIHRoaXMuc2hvd0ZpbHRlckNoaWxkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnc29ydCcpIHRoaXMuc2hvd1NvcnRDaGlsZCA9IGZhbHNlO1xuICAgIGlmICh2aWV3VHlwZSAhPT0gJ3NlbGVjdCcpIHRoaXMuc2hvd1NlbGVjdGVkID0gZmFsc2U7XG4gICAgaWYgKHZpZXdUeXBlICE9PSAnZXhwb3J0JykgdGhpcy5zaG93RXhwb3J0Q2hpbGQgPSBmYWxzZTtcbiAgICBpZiAodmlld1R5cGUgIT09ICdjcmVhdGUnKSB0aGlzLmNyZWF0ZSA9IGZhbHNlO1xuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBnZXQgdGhlIHN0YXRlIG9mIGEgc3BlY2lmaWMgY2hpbGQgdmlld1xuICBnZXRDaGlsZFZpZXdTdGF0ZSh2aWV3VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh2aWV3VHlwZSkge1xuICAgICAgY2FzZSAnY29sdW1uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0NvbHVtbkNoaWxkO1xuICAgICAgY2FzZSAnZmlsdGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0ZpbHRlckNoaWxkO1xuICAgICAgY2FzZSAnc29ydCc6XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dTb3J0Q2hpbGQ7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93U2VsZWN0ZWQ7XG4gICAgICBjYXNlICdleHBvcnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5zaG93RXhwb3J0Q2hpbGQ7XG4gICAgICAgIGNhc2UgJ2NyZWF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0b29sYmFyIGZsZXggZ2FwIGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAgZmxleC0xIGp1c3RpZnktZW5kXCI+XG4gICAgPGRpdiAqbmdJZj1cInZpZXdTdGF0ZS5pc1RvZ2dsZVwiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVWaWV3KClcIiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIFtpY29uXT1cInRhYmxlSWNvblwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCIhaXNUYWJsZVZpZXdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIiFpc1RhYmxlVmlldyA/IGFjdGl2ZUljb25DbGFzcyA6IGljb25DbGFzc1wiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgW2ljb25dPVwiY2FyZEljb25cIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNUYWJsZVZpZXdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImlzVGFibGVWaWV3ID8gYWN0aXZlSWNvbkNsYXNzIDogaWNvbkNsYXNzXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMjVcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMjVcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTZWFyY2ggSW5wdXQgLS0+XG4gICAgPGRpdlxuICAgICAgW3N0eWxlLndpZHRoXT1cImlucHV0V2lkdGhcIlxuICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxuICAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNTZWFyY2hcIlxuICAgID5cbiAgICA8dmVyYmVuLXN2Z1xuICAgIFtpY29uXT1cIidzZWFyY2gyJ1wiXG4gICAgW3dpZHRoXT1cIjIwXCJcbiAgICBbaGVpZ2h0XT1cIjIwXCJcbiAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgIDxpbnB1dFxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCdcIlxuICAgICAgICAoaW5wdXQpPVwib25TZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIFtzdHlsZS5ib3JkZXJdPVwiJzAnXCJcbiAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFZhbHVlXCJcbiAgICAgIC8+XG4gICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAqbmdJZj1cInNlYXJjaFZhbHVlLmxlbmd0aCA+IDBcIlxuICAgICAgICBbaWNvbl09XCInY2xvc2UnXCJcbiAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXJTZWFyY2goKVwiXG4gICAgICAgIGNsYXNzPVwiY2xvc2UtaWNvbi1jbGFzc1wiXG4gICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgPCEtLSBDb2x1bW4gU2VjdGlvbiAtLT5cbiAgICAgPG5nLWNvbnRhaW5lclxuICAgICBbYXBwT3V0U2lkZUNsaWNrXT1cInNob3dDb2x1bW5DaGlsZFwiXG4gICAgIChvdXRTaWRlQ2xpY2spPVwicmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdjb2x1bW4nKVwiXG4gICAgICpuZ0lmPVwidmlld1N0YXRlLmlzQ29sdW1uICYmIGlzVGFibGVWaWV3XCJcbiAgID5cbiAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtblRlbXBsYXRlOyBlbHNlIGRlZmF1bHRDb2x1bW5cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q29sdW1uPlxuICAgICAgIDxzcGFuXG4gICAgICAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICAgICdmbGV4IGdhcCB0ZXh0LXhzIGl0ZW1zLWNlbnRlciBwZCByb3VuZGVkIGN1cnNvci1wb2ludGVyJyxcbiAgICAgICAgICAgY29sdW1uQ3VzdG9tQ2xhc3MgPyBjb2x1bW5DdXN0b21DbGFzcyA6ICcnXG4gICAgICAgICBdXCJcbiAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIicjRDlEOUQ5NDAnXCJcbiAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2NvbHVtbicpXCJcbiAgICAgICA+XG4gICAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiMTVcIiBbaWNvbl09XCInY29sdW1uJ1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgIDxzcGFuXG4gICAgICAgICAgID5Db2x1bW5zIDxzdXA+KHt7IHNlbGVjdGVkQ29sdW1uQ291bnQgfX0pPC9zdXA+PC9zcGFuXG4gICAgICAgICA+XG4gICAgICAgPC9zcGFuPlxuICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCJzaG93Q29sdW1uQ2hpbGRcIiBzZWxlY3Q9XCJbY29sdW1uLWNvbnRlbnRdXCI+XG4gICAgICAgICA8L25nLWNvbnRlbnQ+XG4gICAgICAgPC9kaXY+XG4gICAgIDwvbmctdGVtcGxhdGU+XG4gICA8L25nLWNvbnRhaW5lcj5cblxuICAgPCEtLSBGaWx0ZXIgU2VjdGlvbiAtLT5cbiAgIDxuZy1jb250YWluZXJcbiAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93RmlsdGVyQ2hpbGRcIlxuICAgICAob3V0U2lkZUNsaWNrKT1cInJlc2V0Q2hpbGRWaWV3c0V4Y2VwdCgnZmlsdGVyJylcIlxuICAgICAqbmdJZj1cInZpZXdTdGF0ZS5pc0ZpbHRlclwiXG4gICA+XG4gICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0RmlsdGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZpbHRlcj5cbiAgICAgICA8c3BhblxuICAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgICAnZmxleCBnYXAgdGV4dC14cyBpdGVtcy1jZW50ZXIgcGQgcm91bmRlZCBjdXJzb3ItcG9pbnRlcicsXG4gICAgICAgICAgIGZpbHRlckN1c3RvbUNsYXNzID8gZmlsdGVyQ3VzdG9tQ2xhc3MgOiAnJ1xuICAgICAgICAgXVwiXG4gICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCInI0Q5RDlEOTQwJ1wiXG4gICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hpbGRWaWV3KCdmaWx0ZXInKVwiXG4gICAgICAgPlxuICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE1XCIgW2ljb25dPVwiJ2ZpbHRlcidcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICA8c3BhblxuICAgICAgICAgICA+RmlsdGVyIDxzdXA+KHt7IHNlbGVjdGVkRmlsdGVyVGFibGVDb3VudCB9fSk8L3N1cD48L3NwYW5cbiAgICAgICAgID5cbiAgICAgICA8L3NwYW4+XG4gICAgICAgPGRpdiBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXhcIiBjbGFzcz1cImRhdGEtdmlldy1lbGVtZW50XCI+XG4gICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgICAqbmdJZj1cInNob3dGaWx0ZXJDaGlsZFwiXG4gICAgICAgICAgIHNlbGVjdD1cIltmaWx0ZXItY29udGVudF1cIlxuICAgICAgICAgPjwvbmctY29udGVudD5cbiAgICAgICA8L2Rpdj5cbiAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgIDwvbmctY29udGFpbmVyPlxuXG4gICA8IS0tIFNvcnQgU2VjdGlvbiAtLT5cbiAgIDxuZy1jb250YWluZXJcbiAgICAgW2FwcE91dFNpZGVDbGlja109XCJzaG93U29ydENoaWxkXCJcbiAgICAgKG91dFNpZGVDbGljayk9XCJyZXNldENoaWxkVmlld3NFeGNlcHQoJ3NvcnQnKVwiXG4gICAgICpuZ0lmPVwidmlld1N0YXRlLmlzU29ydFwiXG4gICA+XG4gICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzb3J0VGVtcGxhdGU7IGVsc2UgZGVmYXVsdFNvcnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U29ydD5cbiAgICAgICA8c3BhblxuICAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgICAnZmxleCBnYXAgdGV4dC14cyBpdGVtcy1jZW50ZXIgcGQgcm91bmRlZCBjdXJzb3ItcG9pbnRlcicsXG4gICAgICAgICAgIHNvcnRDdXN0b21DbGFzcyA/IHNvcnRDdXN0b21DbGFzcyA6ICcnXG4gICAgICAgICBdXCJcbiAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIicjRDlEOUQ5NDAnXCJcbiAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ3NvcnQnKVwiXG4gICAgICAgPlxuICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE1XCIgW2ljb25dPVwiJ3NvcnQnXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgPlNvcnQgPHN1cD4oe3sgc2VsZWN0ZWRTb3J0Q291bnQgfX0pPC9zdXA+PC9zcGFuXG4gICAgICAgICA+XG4gICAgICAgPC9zcGFuPlxuICAgICAgIDxkaXYgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCIgY2xhc3M9XCJkYXRhLXZpZXctZWxlbWVudFwiPlxuICAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgKm5nSWY9XCJzaG93U29ydENoaWxkXCJcbiAgICAgICAgICAgc2VsZWN0PVwiW3NvcnQtY29udGVudF1cIlxuICAgICAgICAgPjwvbmctY29udGVudD5cbiAgICAgICA8L2Rpdj5cbiAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgIDwvbmctY29udGFpbmVyPlxuXG4gICA8IS0tIEV4cG9ydCBTZWN0aW9uIC0tPlxuICAgPG5nLWNvbnRhaW5lclxuICAgICBbYXBwT3V0U2lkZUNsaWNrXT1cInNob3dFeHBvcnRDaGlsZFwiXG4gICAgIChvdXRTaWRlQ2xpY2spPVwicmVzZXRDaGlsZFZpZXdzRXhjZXB0KCdleHBvcnQnKVwiXG4gICAgICpuZ0lmPVwidmlld1N0YXRlLmlzRXhwb3J0XCJcbiAgID5cbiAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cG9ydFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRFeHBvcnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RXhwb3J0PlxuICAgICAgIDxzcGFuXG4gICAgICAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICAgICdmbGV4IGdhcCB0ZXh0LXhzIGl0ZW1zLWNlbnRlciBwZCByb3VuZGVkIGN1cnNvci1wb2ludGVyJyxcbiAgICAgICAgICAgZXhwb3J0Q3VzdG9tQ2xhc3MgPyBleHBvcnRDdXN0b21DbGFzcyA6ICcnXG4gICAgICAgICBdXCJcbiAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIicjRDlEOUQ5NDAnXCJcbiAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2V4cG9ydCcpXCJcbiAgICAgICA+XG4gICAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiMTVcIiBbaWNvbl09XCInZXhwb3J0J1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgIEV4cG9ydFxuICAgICAgIDwvc3Bhbj5cbiAgICAgICA8ZGl2IFtzdHlsZS56LWluZGV4XT1cInpJbmRleFwiIGNsYXNzPVwiZGF0YS12aWV3LWVsZW1lbnRcIj5cbiAgICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICpuZ0lmPVwic2hvd0V4cG9ydENoaWxkXCJcbiAgICAgICAgICAgc2VsZWN0PVwiW2V4cG9ydC1jb250ZW50XVwiXG4gICAgICAgICA+PC9uZy1jb250ZW50PlxuICAgICAgIDwvZGl2PlxuICAgICA8L25nLXRlbXBsYXRlPlxuICAgPC9uZy1jb250YWluZXI+XG5cbiAgIDwhLS0gU2VsZWN0IFNlY3Rpb24gLS0+XG4gICA8ZGl2ICpuZ0lmPVwidmlld1N0YXRlLmlzU2VsZWN0XCI+XG4gICAgIDxzcGFuXG4gICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgJ2ZsZXggZ2FwIHRleHQteHMgaXRlbXMtY2VudGVyIHBkIHJvdW5kZWQgY3Vyc29yLXBvaW50ZXInLFxuICAgICAgICAgc2VsZWN0Q3VzdG9tQ2xhc3MgPyBzZWxlY3RDdXN0b21DbGFzcyA6ICcnXG4gICAgICAgXVwiXG4gICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiJyNEOUQ5RDk0MCdcIlxuICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ3NlbGVjdCcpXCJcbiAgICAgPlxuICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtpY29uXT1cIidzZWxlY3QnXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgIDxzcGFuPlNlbGVjdDwvc3Bhbj5cbiAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiNlwiIFtpY29uXT1cIidjaGV2cm9uLWRvd24nXCI+PC92ZXJiZW4tc3ZnPlxuICAgICA8L3NwYW4+XG4gICA8L2Rpdj5cblxuICAgPCEtLSBDcmVhdGUgQnV0dG9uIC0tPlxuXG4gICA8ZGl2XG4gICAgIFthcHBPdXRTaWRlQ2xpY2tdPVwiY3JlYXRlXCJcbiAgICAgKG91dFNpZGVDbGljayk9XCJyZXNldENoaWxkVmlld3NFeGNlcHQoJ2NyZWF0ZScpXCJcbiAgICAgKm5nSWY9XCJ2aWV3U3RhdGUuaXNDcmVhdGVcIlxuICAgPlxuICAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgICBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZFwiXG4gICAgICAgW2JnQ29sb3JdPVwiJyNGRkU2ODEnXCJcbiAgICAgICBbYnV0dG9uQ2xhc3NdPVwiY3JlYXRlQ3VzdG9tQ2xhc3NcIlxuICAgICAgIFtwZF09XCInNnB4J1wiXG4gICAgICAgW2JvcmRlclJhZGl1c109XCInNHB4J1wiXG4gICAgICAgW3RleHRDb2xvcl09XCInIzAwMCdcIlxuICAgICAgIFtzdmddPVwiJ2FkZCdcIlxuICAgICAgIFtzdmdQb3NpdGlvbl09XCIncmlnaHQnXCJcbiAgICAgICBbdGV4dF09XCInQ3JlYXRlIE5ldydcIlxuICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZFZpZXcoJ2NyZWF0ZScpXCJcbiAgICAgPlxuICAgICA8L3ZlcmJlbmEtYnV0dG9uPlxuICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JlYXRlVGVtcGxhdGU7IGVsc2UgZGVmYXVsdENyZWF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDcmVhdGU+XG4gICAgICAgPGRpdiBbc3R5bGUuei1pbmRleF09XCJ6SW5kZXhcIiBjbGFzcz1cImRhdGEtdmlldy1lbGVtZW50XCI+XG4gICAgICAgICA8bmctY29udGVudCAqbmdJZj1cImNyZWF0ZVwiIHNlbGVjdD1cIltjcmVhdGUtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgPC9kaXY+XG4gICAgIDwvbmctdGVtcGxhdGU+XG4gICA8L2Rpdj5cbjwvZGl2PlxuICBcbiBcbiAgICA8ZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkcmVuOyBlbHNlIGRlZmF1bHRDaGlsZHJlblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2hpbGRyZW4+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NoaWxkcmVuXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICBcbjwvZGl2PlxuXG48IS0tIEdyaWQgYW5kIExpc3QgVmlldyBIYW5kbGluZyAtLT5cbjxkaXYgKm5nSWY9XCJpc1RhYmxlVmlldzsgZWxzZSBsaXN0Vmlld1RlbXBsYXRlXCI+XG4gIFxuICA8ZGl2IFtzdHlsZS5vdmVyZmxvd109XCInYXV0bydcIiBbY2xhc3NdPVwidGFibGVDbGFzc1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0YWJsZS1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbGlzdFZpZXdUZW1wbGF0ZT5cbiAgPGRpdiBbY2xhc3NdPVwiY2FyZENsYXNzXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NhcmQtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|