@coolon/angular-ui-powerups 16.1.0-alpha.302 → 16.1.0-alpha.303
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/tables/renderer/table-body/table-body.component.mjs +20 -2
- package/fesm2022/coolon-angular-ui-powerups.mjs +19 -1
- package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
- package/lib/components/tables/renderer/table-body/table-body.component.d.ts +9 -0
- package/package.json +2 -2
|
@@ -83,8 +83,14 @@ export class TableBodyComponent extends ResizeAwareComponent {
|
|
|
83
83
|
columnIds$;
|
|
84
84
|
footerRowDefs$;
|
|
85
85
|
columnsById$;
|
|
86
|
-
|
|
86
|
+
/**
|
|
87
|
+
* The header row's height, which the virtual scroller offsets its rows by and which pins the header
|
|
88
|
+
* cells in virtual mode. Taken from --aup-table-header-row-height at init (table.scss sets 48px), so
|
|
89
|
+
* a table themed with a shorter header scrolls correctly; 48 when the variable can't be read.
|
|
90
|
+
*/
|
|
87
91
|
headerHeight$ = new MutableValueModel(48);
|
|
92
|
+
// TODO: take the row height from --aup-table-row-height too. Not a drop-in: table.scss sets it to
|
|
93
|
+
// 40px while virtual rows have always been 44, so following it would shrink every virtual row.
|
|
88
94
|
rowHeight$ = new MutableValueModel(44);
|
|
89
95
|
baseCssClass = "aup-table-component";
|
|
90
96
|
get animationsDisabledClass() { return this.animationsDisabled$.value; }
|
|
@@ -137,6 +143,9 @@ export class TableBodyComponent extends ResizeAwareComponent {
|
|
|
137
143
|
this.resetAnimationsAfterFrame();
|
|
138
144
|
}, { initialValue: "evaluate" });
|
|
139
145
|
this.onInit(() => {
|
|
146
|
+
// On init, not after the view: the header height is bound in this view and in a host binding,
|
|
147
|
+
// and changing it after they are checked would trip ExpressionChangedAfterItHasBeenChecked.
|
|
148
|
+
this.takeHeaderHeightFromTheme();
|
|
140
149
|
this.columns$ = chain(this.tableModel.visibleColumns$);
|
|
141
150
|
this.columnIds$ = chain(this.columns$).pluck("columnId");
|
|
142
151
|
this.columnsById$ = chain(this.columns$).indexBy('columnId');
|
|
@@ -210,6 +219,15 @@ export class TableBodyComponent extends ResizeAwareComponent {
|
|
|
210
219
|
}
|
|
211
220
|
return classes;
|
|
212
221
|
}
|
|
222
|
+
/** Sets [headerHeight$] from --aup-table-header-row-height, keeping the current value when it can't be read. */
|
|
223
|
+
takeHeaderHeightFromTheme() {
|
|
224
|
+
this.headerHeight$.value = this.readCssPixels("--aup-table-header-row-height") ?? this.headerHeight$.value;
|
|
225
|
+
}
|
|
226
|
+
/** A length custom property as resolved on this element, in px; undefined when unset or not a length. */
|
|
227
|
+
readCssPixels(property) {
|
|
228
|
+
const pixels = parseFloat(getComputedStyle(this.elementRef.nativeElement).getPropertyValue(property));
|
|
229
|
+
return Number.isFinite(pixels) && pixels > 0 ? pixels : undefined;
|
|
230
|
+
}
|
|
213
231
|
scheduleTableHeightCheck(waitMillis = 50) {
|
|
214
232
|
setTimeout(() => {
|
|
215
233
|
// Use CDK's internal rendered range to detect a broken virtual scroll state —
|
|
@@ -351,4 +369,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
351
369
|
type: HostBinding,
|
|
352
370
|
args: ["style.--aup-table-row-height"]
|
|
353
371
|
}] } });
|
|
354
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9yZW5kZXJlci90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvdGFibGUtYm9keS90YWJsZS1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzR0FBc0c7QUFDdEcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEdBQUcsRUFDSCxTQUFTLEVBR1QsaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBSTlELE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFFM0YsTUFBTSxDQUFDLE1BQU0sMENBQTBDLEdBQUcsSUFBSSxjQUFj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QkFEbEIsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSUcsV0FBVztzQkFEbkIsS0FBSztnQkFLRyxVQUFVO3NCQUZsQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFJOUIsY0FBYztzQkFEYixTQUFTO3VCQUFDLHdCQUF3QjtnQkFlbkMsWUFBWTtzQkFEWCxXQUFXO3VCQUFDLE9BQU87Z0JBSWhCLHVCQUF1QjtzQkFEMUIsV0FBVzt1QkFBQywrQkFBK0I7Z0JBZ0h4QyxVQUFVO3NCQURiLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU01QixrQkFBa0I7c0JBRHJCLFdBQVc7dUJBQUMsaUNBQWlDO2dCQU0xQyxlQUFlO3NCQURsQixXQUFXO3VCQUFDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gdGFibGUgYm9keSByZW5kZXJzIGFyYml0cmFyeSByb3cvY2VsbCB0eXBlcyAqL1xuaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGQsXG4gIGluamVjdFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgRHNsLFxuICBMaXN0TW9kZWwsXG4gIExpc3RNb2RlbENoYWluLFxuICBNYXBNb2RlbENoYWluLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgUHJveGlmeSxcbiAgcHJveGlmeSxcbiAgU3RvcmVJblZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge1RhYmxlVmlydHVhbFNjcm9sbERhdGFTb3VyY2V9IGZyb20gXCJuZy10YWJsZS12aXJ0dWFsLXNjcm9sbFwiO1xuaW1wb3J0IHtSZXNpemVBd2FyZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uL3Jlc2l6ZS1hd2FyZS5jb21wb25lbnRcIjtcbmltcG9ydCB7QWJzdHJhY3RUYWJsZU1vZGVsfSBmcm9tIFwiLi4vLi4vYWJzdHJhY3QtdGFibGUtbW9kZWxcIjtcbmltcG9ydCB0eXBlIHtDb2x1bW5Nb2RlbH0gZnJvbSBcIi4uLy4uL2NvbHVtbi9jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7Rm9vdGVyUm93TW9kZWwsIFJlc29sdmVkRm9vdGVyUm93fSBmcm9tIFwiLi4vLi4vZm9vdGVyL2Zvb3Rlci1yb3ctbW9kZWxcIjtcblxuaW1wb3J0IHtBVVBfREVUQUNIRURfUEFSRU5UX0NEUiwgRGlzcG9zYWJsZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uL2Rpc3Bvc2FibGUtY29tcG9uZW50XCI7XG5cbmV4cG9ydCBjb25zdCBBVVBfVEFCTEVfVklSVFVBTF9TQ1JPTExfQlVGRkVSX01VTFRJUExJRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48bnVtYmVyPihcIkFVUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9CVUZGRVJfTVVMVElQTElFUlwiKVxuZXhwb3J0IGNvbnN0IEFVUF9UQUJMRV9PUFRJTUlaRURfQ0hBTkdFX0RFVEVDVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPihcIkFVUF9UQUJMRV9PUFRJTUlaRURfQ0hBTkdFX0RFVEVDVElPTlwiKVxuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbYXVwVGFibGVSb3dBdHRyaWJ1dGVzXVwiLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVJvd0F0dHJpYnV0ZXNEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpXG4gIGF1cFRhYmxlUm93QXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIC8qKiBBdHRyaWJ1dGUgbmFtZXMgYXBwbGllZCBvbiB0aGUgcHJldmlvdXMgcGFzcywgc28gb25lcyB0aGF0IGRpc2FwcGVhciBjYW4gYmUgcmVtb3ZlZC4gKi9cbiAgcHJpdmF0ZSBhcHBsaWVkQXR0cmlidXRlTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gIH1cblxuICAvLyBSZS1hcHBseSBvbiBldmVyeSBjaGFuZ2UsIG5vdCBqdXN0IG9uY2UgYXQgaW5pdDogYSByb3cncyBhdHRyaWJ1dGUgdmFsdWVzIGNhbiBjaGFuZ2UgYWZ0ZXIgdGhlXG4gIC8vIHJvdyBoYXMgcmVuZGVyZWQgKGUuZy4gYW4gT1RBUCBkZXZpY2Ugcm93IHdob3NlIGRldmljZSByZWNvcmQgcmVzb2x2ZXMgYWZ0ZXIgaXRzIHNjcmF0Y2hwYWQgcm93XG4gIC8vIHdhcyBjcmVhdGVkKSwgYW5kIHRoZSBlbGVtZW50IG11c3QgcmVmbGVjdCB0aGUgbGF0ZXN0IHZhbHVlcy4gUHJldmlvdXNseSB0aGlzIGltcGxlbWVudGVkIE9uSW5pdCxcbiAgLy8gc28gdGhlIGF0dHJpYnV0ZXMgd2VyZSBmcm96ZW4gYXQgcm93LWNyZWF0aW9uIHRpbWUgYW5kIHdlbnQgc3RhbGUgKGUuZy4gZGV2aWNlSGFyZHdhcmVJZCBzdHVjayBvblxuICAvLyBpdHMgaW5pdGlhbCBcInVuZGVmaW5lZFwiKS5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IG5leHQgPSB0aGlzLmF1cFRhYmxlUm93QXR0cmlidXRlcyA/PyB7fTtcbiAgICBmb3IgKGNvbnN0IGF0dHIgb2YgdGhpcy5hcHBsaWVkQXR0cmlidXRlTmFtZXMpIHtcbiAgICAgIGlmICghKGF0dHIgaW4gbmV4dCkpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cik7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYXBwbGllZEF0dHJpYnV0ZU5hbWVzID0gT2JqZWN0LmtleXMobmV4dCk7XG4gICAgZm9yIChjb25zdCBhdHRyIG9mIHRoaXMuYXBwbGllZEF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyLCBuZXh0W2F0dHJdKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF1cC10YWJsZS1ib2R5XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFibGUtYm9keS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdGFibGUtYm9keS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBVVBfREVUQUNIRURfUEFSRU5UX0NEUiwgdXNlRmFjdG9yeTogKCkgPT4gaW5qZWN0KEFVUF9UQUJMRV9PUFRJTUlaRURfQ0hBTkdFX0RFVEVDVElPTiwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgOiBudWxsIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUJvZHlDb21wb25lbnQ8Um93IGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIFJlc2l6ZUF3YXJlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIGRhdGEkOiBMaXN0TW9kZWw8Um93PiA9IHByb3hpZnkoTGlzdE1vZGVsPFJvdz4pO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgdGFibGVNb2RlbDogQWJzdHJhY3RUYWJsZU1vZGVsPFJvdz4gPSBwcm94aWZ5KEFic3RyYWN0VGFibGVNb2RlbDxSb3c+KTtcblxuICAvLyBGb290ZXIgcm93cyBhcmUgYnVpbHQgb25jZSBpbiB0aGUgVGFibGVNb2RlbCBidWlsZGVyIGNhbGxiYWNrLCBzbyBhIHBsYWluIGlucHV0IGlzIGVub3VnaDtcbiAgLy8gdGhlIHBlci1yb3cgY2VsbCBsYXlvdXQgKGZvb3RlclJvd0RlZnMkKSBpcyBkZXJpdmVkIHJlYWN0aXZlbHkgZnJvbSB0aGUgdmlzaWJsZSBjb2x1bW5zLlxuICBASW5wdXQoKVxuICBmb290ZXJSb3dzOiBGb290ZXJSb3dNb2RlbC5JbXBsW10gPSBbXTtcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHNob3dIZWFkZXIkOiBWYWx1ZU1vZGVsPGJvb2xlYW4+ID0gcHJveGlmeShWYWx1ZU1vZGVsPGJvb2xlYW4+KTtcblxuICBASW5wdXQoKSBAU3RvcmVJblZhbHVlTW9kZWwoKVxuICBhY2Nlc3NvciBzaG93SGVhZGVyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICB0cmFja0J5OiAoaW5kZXg6IG51bWJlciwgaXRlbTogUm93KSA9PiBhbnlcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHNjcm9sbE1vZGUkOiBWYWx1ZU1vZGVsPFRhYmxlQm9keUNvbXBvbmVudC5TY3JvbGxNb2RlPiA9IHByb3hpZnkoVmFsdWVNb2RlbDxUYWJsZUJvZHlDb21wb25lbnQuU2Nyb2xsTW9kZT4pO1xuXG4gIEBJbnB1dCgpIEBTdG9yZUluVmFsdWVNb2RlbCgpXG4gIEBIb3N0QmluZGluZyhcImF0dHIuc2Nyb2xsTW9kZVwiKVxuICBhY2Nlc3NvciBzY3JvbGxNb2RlOiBUYWJsZUJvZHlDb21wb25lbnQuU2Nyb2xsTW9kZSA9IFwibm9uZVwiO1xuXG4gIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KVxuICBzY3JvbGxWaWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0XG5cbiAgY29sdW1ucyQ6IExpc3RNb2RlbENoYWluPENvbHVtbk1vZGVsPFJvdz4+O1xuICBjb2x1bW5JZHMkOiBMaXN0TW9kZWxDaGFpbjxzdHJpbmc+O1xuICBmb290ZXJSb3dEZWZzJDogVmFsdWVNb2RlbDxSZXNvbHZlZEZvb3RlclJvd1tdPjtcblxuICBwcml2YXRlIGNvbHVtbnNCeUlkJDogTWFwTW9kZWxDaGFpbjxzdHJpbmcsIENvbHVtbk1vZGVsPFJvdz4+O1xuXG5cbiAgLy8gVE9ETzogc3VwcG9ydCB1c2VyIGRlZmluZWQgaGVhZGVyIGFuZCByb3cgaGVpZ2h0cyB2aWEgY3NzIHZhcnMuXG4gIHByb3RlY3RlZCByZWFkb25seSBoZWFkZXJIZWlnaHQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPG51bWJlcj4oNDgpO1xuICBwcm90ZWN0ZWQgcm93SGVpZ2h0JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxudW1iZXI+KDQ0KTtcblxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKVxuICBiYXNlQ3NzQ2xhc3MgPSBcImF1cC10YWJsZS1jb21wb25lbnRcIjtcblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5hdXAtYW5pbWF0aW9ucy1kaXNhYmxlZFwiKVxuICBnZXQgYW5pbWF0aW9uc0Rpc2FibGVkQ2xhc3MoKSB7IHJldHVybiB0aGlzLmFuaW1hdGlvbnNEaXNhYmxlZCQudmFsdWU7IH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlydHVhbFNjcm9sbERhdGFTb3VyY2UgPSBuZXcgVGFibGVWaXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZTxSb3c+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB2aXJ0dWFsU2Nyb2xsQWN0aXZlJCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBhbmltYXRpb25zRGlzYWJsZWQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsKGZhbHNlKTtcbiAgcHJpdmF0ZSBzY3JvbGxUaW1lb3V0OiBhbnk7XG4gIHByaXZhdGUgYW5pbWF0aW9uc1Jlc2V0UmFmSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHNjcm9sbEVuZEFib3J0Q29udHJvbGxlcjogQWJvcnRDb250cm9sbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGltaXNlZENoYW5nZURldGVjdGlvbkVuYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgdmlld0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG1hcmtGb3JDaGVjaygpIHtcbiAgICBpZiAodGhpcy5vcHRpbWlzZWRDaGFuZ2VEZXRlY3Rpb25FbmFibGVkKSB7XG4gICAgICAvLyBUaGUgdGFibGUtYm9keSBkZXRhY2hlcyBpdHMgb3duIENEUiBhbmQgaGFzIG5vIGRldGFjaGVkIHBhcmVudCAoQVVQX0RFVEFDSEVEX1BBUkVOVF9DRFJcbiAgICAgIC8vIHVzZXMgc2tpcFNlbGYpLCBzbyB0aGUgYmFzZSBtYXJrRm9yQ2hlY2soKSB3b3VsZCBjYWxsIGNkci5tYXJrRm9yQ2hlY2soKSB3aGljaCBpcyBhXG4gICAgICAvLyBuby1vcCBvbiBhIGRldGFjaGVkIHZpZXcuIFNjaGVkdWxlIGFuIGV4cGxpY2l0IGRldGVjdENoYW5nZXMoKSBvbiBvdXJzZWx2ZXMgaW5zdGVhZCBzb1xuICAgICAgLy8gdGhhdCB2aWV3U3RhdGVEZXBlbmRzT24oKSBjb3JyZWN0bHkgdHJpZ2dlcnMgcmUtcmVuZGVycyAoZS5nLiByb3cgc2VsZWN0aW9uIGNsYXNzZXMpLlxuICAgICAgRGlzcG9zYWJsZUNvbXBvbmVudC5zY2hlZHVsZVBhcmVudFN3ZWVwKHRoaXMuY2RyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3VwZXIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFVUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9CVUZGRVJfTVVMVElQTElFUikgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGJ1ZmZlck11bHRpcGxpZXI6IG51bWJlciA9IDMpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHtjaGFpbiwgd2hlbiwgb2JzZXJ2ZX0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG5cbiAgICB0aGlzLm9wdGltaXNlZENoYW5nZURldGVjdGlvbkVuYWJsZWQgPSB0aGlzLmluamVjdChBVVBfVEFCTEVfT1BUSU1JWkVEX0NIQU5HRV9ERVRFQ1RJT04sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgY29uc3QgYWN0dWFsSGVhZGVySGVpZ2h0JCA9IGNoYWluKHRoaXMuc2hvd0hlYWRlciQpLm1hcChzaG93ID0+IHtcbiAgICAgIHJldHVybiBzaG93ID8gdGhpcy5oZWFkZXJIZWlnaHQkLnZhbHVlIDogMDtcbiAgICB9LCB7ZGVwZW5kc09uOiB0aGlzLmhlYWRlckhlaWdodCR9KTtcblxuXG4gICAgLy8gcGVyZm9ybWFuY2UgaXMgdGVycmlibGUgaWYgdGhlIGRhdGEgY2hhbmdlcyB3aGlsZSB3ZSdyZSBzY3JvbGxpbmcsIHNvIHdlIHBvc3Rwb25lIHVwZGF0ZXMgdW50aWxcbiAgICAvLyBzY3JvbGxpbmcgc3RvcHMuXG4gICAgY29uc3QgZGVsYXllZERhdGEkID0gY2hhaW4odGhpcy5kYXRhJCkucG9zdHBvbmVXaGlsZSh0aGlzLnZpcnR1YWxTY3JvbGxBY3RpdmUkKVxuICAgIHdoZW4oZGVsYXllZERhdGEkKS5jaGFuZ2VzKGRlbGF0ZWREYXRhID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uc0Rpc2FibGVkJC52YWx1ZSA9IHRydWU7XG4gICAgICAvLyBVcGRhdGUgdGhlIENESyBkYXRhIHNvdXJjZSBiZWZvcmUgZGV0ZWN0Q2hhbmdlcyBzbyB0aGF0IGJvdGggdGhlIGV4cGxpY2l0IGRldGVjdENoYW5nZXNcbiAgICAgIC8vIGFuZCBhbnkgc3Vic2VxdWVudCBTV0VFUC10cmlnZ2VyZWQgZGV0ZWN0Q2hhbmdlcyBzZWUgdGhlIHNhbWUgZGF0YS4gSWYgd2UgdXBkYXRlIGFmdGVyLFxuICAgICAgLy8gdGhlIFNXRUVQJ3MgZGV0ZWN0Q2hhbmdlcyBzZWVzIGRpZmZlcmVudCByb3cgb2JqZWN0cyBhbmQgdHJpZ2dlcnMgYSBzZWNvbmQgY2FzY2FkZS5cbiAgICAgIHRoaXMudmlydHVhbFNjcm9sbERhdGFTb3VyY2UuZGF0YSA9IGRlbGF0ZWREYXRhO1xuICAgICAgLy8gV2l0aCBkZXRhY2hlZCBDRCwgbWFya0ZvckNoZWNrKCkgYWxvbmUgd29uJ3QgcHVzaCBbQC5kaXNhYmxlZF09XCJ0cnVlXCIgdG8gdGhlIERPTS5cbiAgICAgIC8vIERldGVjdCBzeW5jaHJvbm91c2x5IHNvIENESyByZW5kZXJzIG5ldyByb3dzIHdpdGggYW5pbWF0aW9ucyBhbHJlYWR5IHN1cHByZXNzZWQuXG4gICAgICAvLyBhbmltYXRpb25zRGlzYWJsZWQkLnZhbHVlIGlzIGFscmVhZHkgdHJ1ZSAoc2V0IGFib3ZlKSwgc28gdGhlIHRlbXBsYXRlIGV2YWx1YXRpb25cbiAgICAgIC8vIGluIHRoaXMgZGV0ZWN0Q2hhbmdlcyB3aWxsIHNlZSBbQC5kaXNhYmxlZF09XCJ0cnVlXCIgYmVmb3JlIGFueSBuZXcgcm93cyBhcmUgY3JlYXRlZC5cbiAgICAgIC8vIEd1YXJkIGFnYWluc3QgdGhlIHtpbml0aWFsVmFsdWU6XCJldmFsdWF0ZVwifSBmaXJpbmcgZHVyaW5nIGNvbnN0cnVjdGlvbiBiZWZvcmUgdGhlIHZpZXcgZXhpc3RzLlxuICAgICAgaWYgKHRoaXMub3B0aW1pc2VkQ2hhbmdlRGV0ZWN0aW9uRW5hYmxlZCAmJiB0aGlzLnZpZXdJbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNjaGVkdWxlVGFibGVIZWlnaHRDaGVjaygpO1xuICAgICAgdGhpcy5yZXNldEFuaW1hdGlvbnNBZnRlckZyYW1lKCk7XG4gICAgfSwge2luaXRpYWxWYWx1ZTogXCJldmFsdWF0ZVwifSlcblxuXG4gICAgdGhpcy5vbkluaXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zJCA9IGNoYWluKHRoaXMudGFibGVNb2RlbC52aXNpYmxlQ29sdW1ucyQpO1xuICAgICAgdGhpcy5jb2x1bW5JZHMkID0gY2hhaW4odGhpcy5jb2x1bW5zJCkucGx1Y2soXCJjb2x1bW5JZFwiKTtcbiAgICAgIHRoaXMuY29sdW1uc0J5SWQkID0gY2hhaW4odGhpcy5jb2x1bW5zJCkuaW5kZXhCeSgnY29sdW1uSWQnKTtcbiAgICAgIHRoaXMuZm9vdGVyUm93RGVmcyQgPSBjaGFpbih0aGlzLmNvbHVtbklkcyQpLnJlZHVjZUFsbChpZHMgPT5cbiAgICAgICAgKHRoaXMuZm9vdGVyUm93cyA/PyBbXSkubWFwKChyb3csIGkpID0+IHJvdy5yZXNvbHZlKGksIFsuLi5pZHNdKSlcbiAgICAgICk7XG4gICAgICAvLyBGb290ZXIgcm93cyBnYXRlZCB2aWEgdmlzaWJsZVdoaWxlKCkgZmxpcCBpbmRlcGVuZGVudGx5IG9mIHRoZSBjb2x1bW5zIHRoYXQgZHJpdmVcbiAgICAgIC8vIGZvb3RlclJvd0RlZnMkLCBzbyBkZXBlbmQgb24gdGhlaXIgbW9kZWxzIGRpcmVjdGx5IHRvIHJlLXJlbmRlciB0aGUgPHRyPiByZWFjdGl2ZWx5LlxuICAgICAgY29uc3QgZm9vdGVyVmlzaWJpbGl0eSQgPSAodGhpcy5mb290ZXJSb3dzID8/IFtdKVxuICAgICAgICAubWFwKHJvdyA9PiByb3cudmlzaWJsZSQpXG4gICAgICAgIC5maWx0ZXIoKG0pOiBtIGlzIFZhbHVlTW9kZWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4gPT4gbSAhPSBudWxsKTtcbiAgICAgIHRoaXMudmlld1N0YXRlRGVwZW5kc09uKHRoaXMudGFibGVNb2RlbC5maWx0ZXJlZFJvd3MkLCB0aGlzLnRhYmxlTW9kZWwudmlzaWJsZUNvbHVtbnMkLCB0aGlzLnZpcnR1YWxTY3JvbGxBY3RpdmUkLCB0aGlzLmFuaW1hdGlvbnNEaXNhYmxlZCQsIHRoaXMudGFibGVNb2RlbC5zZWxlY3RlZEl0ZW1zJCwgdGhpcy50YWJsZU1vZGVsLnNlbGVjdGFibGVSb3dzJCwgdGhpcy5mb290ZXJSb3dEZWZzJCwgLi4uZm9vdGVyVmlzaWJpbGl0eSQpXG4gICAgfSk7XG5cbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB0aGlzLnZpZXdJbml0aWFsaXplZCA9IHRydWU7XG4gICAgaWYgKHRoaXMuc2Nyb2xsVmlld3BvcnQpIHtcbiAgICAgIGNvbnN0IHtvYnNlcnZlfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICAgIHRoaXMuc2Nyb2xsVmlld3BvcnQuZWxlbWVudFNjcm9sbGVkKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMubm90aWZ5U2Nyb2xsZWQoKSk7XG4gICAgICB0aGlzLnNjcm9sbEVuZEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIHRoaXMuc2Nyb2xsVmlld3BvcnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdzY3JvbGxlbmQnLFxuICAgICAgICAoKSA9PiB0aGlzLm5vdGlmeVNjcm9sbEVuZGVkKCksXG4gICAgICAgIHtwYXNzaXZlOiB0cnVlLCBzaWduYWw6IHRoaXMuc2Nyb2xsRW5kQWJvcnRDb250cm9sbGVyLnNpZ25hbH1cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGltaXNlZENoYW5nZURldGVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIHRoaXMuY2RyLmRldGFjaCgpO1xuICAgICAgaWYgKHRoaXMuc2Nyb2xsVmlld3BvcnQpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3cG9ydC5yZW5kZXJlZFJhbmdlU3RyZWFtLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gRGVmZXIgcGFzdCB0aGUgY3VycmVudCBzeW5jIGJhdGNoIHNvIHRoZSBkYXRhIHNvdXJjZSBoYXMgdXBkYXRlZCBfcmVuZGVyZWRJdGVtcyBiZWZvcmUgd2UgcnVuIENELlxuICAgICAgICAgIC8vIE11c3QgY2FsbCBkZXRlY3RDaGFuZ2VzKCkgZGlyZWN0bHkg4oCUIG1hcmtGb3JDaGVjaygpIGFsb25lIGRvZXMgbm90aGluZyBvbiBhIGRldGFjaGVkIHZpZXcuXG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gRXh0ZW5kIHRoZSBhbmltYXRpb24gc3VwcHJlc3Npb24gd2luZG93IG9uIGVhY2ggQ0RLIHJhbmdlIGNoYW5nZSBzbyBhbmltYXRpb25zIGNhbid0XG4gICAgICAgICAgLy8gZmlyZSBtaWQtcmVuZGVyIHJlZ2FyZGxlc3Mgb2YgaG93IG1hbnkgZnJhbWVzIHRoZSByYW5nZSB1cGRhdGUgc3BhbnMuXG4gICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uc0Rpc2FibGVkJC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldEFuaW1hdGlvbnNBZnRlckZyYW1lKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIERlZmVyIHBhc3QgdGhlIGN1cnJlbnQgdGljayBzbyB0aGUgdmlld3BvcnQncyBpbml0aWFsIHJlbmRlcmVkIHJhbmdlIGlzIHN0YWJsZVxuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmhpZGUtaGVhZGVyXCIpXG4gIGdldCBoaWRlSGVhZGVyKCkge1xuICAgIHJldHVybiAhdGhpcy5zaG93SGVhZGVyO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKFwic3R5bGUuLS1hdXAtdGFibGUtaGVhZGVyLWhlaWdodFwiKVxuICBnZXQgaGVhZGVySGVpZ2h0Q3NzVmFyKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmhlYWRlckhlaWdodCQudmFsdWV9cHhgXG4gIH1cblxuICBASG9zdEJpbmRpbmcoXCJzdHlsZS4tLWF1cC10YWJsZS1yb3ctaGVpZ2h0XCIpXG4gIGdldCByb3dIZWlnaHRDc3NWYXIoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMucm93SGVpZ2h0JC52YWx1ZX1weGBcbiAgfVxuXG4gIG5vdGlmeUNlbGxDbGlja2VkKGNvbHVtbk1vZGVsOiBDb2x1bW5Nb2RlbDxSb3c+LCByb3c6IFJvdykge1xuICAgIHRoaXMudGFibGVNb2RlbC5fbm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uTW9kZWwsIHJvdyk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuXG4gIGlzRmlyc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLmZpcnN0VmlzaWJsZUNvbHVtbiQucXVlcnkoKS52YWx1ZT8uY29sdW1uSWQgPT09IGNvbHVtbklkO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcblxuICBpc0xhc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLmxhc3RWaXNpYmxlQ29sdW1uJC5xdWVyeSgpLnZhbHVlPy5jb2x1bW5JZCA9PT0gY29sdW1uSWQ7XG4gIH1cblxuICBnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbklkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjbGFzc2VzID0gW2BhdXAtY29sLSR7dGhpcy5jb2x1bW5zQnlJZCQuZ2V0KGNvbHVtbklkKS5kYXNoZXJpc2VkQ29sdW1uSWR9YF07XG4gICAgaWYgKHRoaXMuaXNGaXJzdFZpc2libGVDb2x1bW4oY29sdW1uSWQpKSB7XG4gICAgICBjbGFzc2VzLnB1c2goXCJmaXJzdC12aXNpYmxlLWNvbHVtblwiKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNMYXN0VmlzaWJsZUNvbHVtbihjb2x1bW5JZCkpIHtcbiAgICAgIGNsYXNzZXMucHVzaChcImxhc3QtdmlzaWJsZS1jb2x1bW5cIik7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZVRhYmxlSGVpZ2h0Q2hlY2sod2FpdE1pbGxpcyA9IDUwKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBVc2UgQ0RLJ3MgaW50ZXJuYWwgcmVuZGVyZWQgcmFuZ2UgdG8gZGV0ZWN0IGEgYnJva2VuIHZpcnR1YWwgc2Nyb2xsIHN0YXRlIOKAlFxuICAgICAgLy8gYXZvaWRzIHJlYWRpbmcgb2Zmc2V0SGVpZ2h0IChmb3JjZWQgbGF5b3V0KSBhbmQgZGlzcGF0Y2hpbmcgYSBnbG9iYWwgcmVzaXplIGV2ZW50XG4gICAgICAvLyAod2hpY2ggdHJpZ2dlcnMgQW5ndWxhcidzIGFuaW1hdGlvbiBlbmdpbmUgdG8gY2FsbCBnZXRDb21wdXRlZFN0eWxlIG9uIGFsbCBlbGVtZW50cykuXG4gICAgICBjb25zdCByZW5kZXJlZFJhbmdlID0gdGhpcy5zY3JvbGxWaWV3cG9ydD8uZ2V0UmVuZGVyZWRSYW5nZSgpO1xuICAgICAgLy8gQSB1c2FibGUgdmlydHVhbCB2aWV3cG9ydCByZW5kZXJzIG1vcmUgdGhhbiBvbmUgcm93IHdoZW5ldmVyIG1vcmUgZGF0YSBleGlzdHMuIFJlbmRlcmluZ1xuICAgICAgLy8gbm9uZSBvciBvbmUgcm93IGF0IHRoZSB0b3Agd2hpbGUgZGF0YSQgaG9sZHMgbW9yZSBtZWFucyB0aGUgdmlld3BvcnQgbWVhc3VyZWQgYVxuICAgICAgLy8gY29sbGFwc2VkL3N0YWxlIGhlaWdodCAoZS5nLiBpdCB3YXMgbWVhc3VyZWQgYmVmb3JlIHRoZSB0YWJsZSB3YXMgc2l6ZWQgdXAsIHRoZW4gbmV2ZXJcbiAgICAgIC8vIHJlLW1lYXN1cmVkIHVuZGVyIGRldGFjaGVkIGNoYW5nZSBkZXRlY3Rpb24pIOKAlCBzbyByZS1tZWFzdXJlIHRvIGV4cGFuZCB0aGUgcmVuZGVyZWQgcmFuZ2UuXG4gICAgICAvLyBDb3ZlcnMgYm90aCB0aGUgemVyby1yb3cgY29sbGFwc2UgYW5kIHRoZSBwYXJ0aWFsIChvbmUtcm93KSB1bmRlci1yZW5kZXIuIERldGVjdGlvbiBzdGF5c1xuICAgICAgLy8gbGF5b3V0LWZyZWUgKGdldFJlbmRlcmVkUmFuZ2Ugb25seSk7IGNvcnJlY3RseS1zaXplZCBhbmQgZ2VudWluZWx5LXZpcnR1YWxpc2VkIGxhcmdlXG4gICAgICAvLyB0YWJsZXMgcmVuZGVyIG1hbnkgcm93cywgc28gdGhleSBuZXZlciByZWFjaCB0aGUgY2hlY2tWaWV3cG9ydFNpemUoKSByZWZsb3cgYmVsb3cuXG4gICAgICBjb25zdCByZW5kZXJlZENvdW50ID0gcmVuZGVyZWRSYW5nZSAhPSBudWxsID8gcmVuZGVyZWRSYW5nZS5lbmQgLSByZW5kZXJlZFJhbmdlLnN0YXJ0IDogMDtcbiAgICAgIGNvbnN0IHVuZGVyUmVuZGVyZWQgPSByZW5kZXJlZFJhbmdlICE9IG51bGwgJiYgcmVuZGVyZWRSYW5nZS5zdGFydCA9PT0gMCAmJiByZW5kZXJlZENvdW50IDw9IDE7XG4gICAgICBpZiAodW5kZXJSZW5kZXJlZCAmJiB0aGlzLmRhdGEkLmxlbmd0aCA+IHJlbmRlcmVkQ291bnQpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3cG9ydD8uY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICAgICAgaWYgKHdhaXRNaWxsaXMgPCA1MDApIHtcbiAgICAgICAgICB0aGlzLnNjaGVkdWxlVGFibGVIZWlnaHRDaGVjayh3YWl0TWlsbGlzICsgNTApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgd2FpdE1pbGxpcylcbiAgfVxuXG4gIHByaXZhdGUgbm90aWZ5U2Nyb2xsZWQoKSB7XG4gICAgdGhpcy52aXJ0dWFsU2Nyb2xsQWN0aXZlJC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5hbmltYXRpb25zRGlzYWJsZWQkLnZhbHVlID0gdHJ1ZTtcbiAgICAvLyBTeW5jIHRoZSBbQC5kaXNhYmxlZF09XCJ0cnVlXCIgdG8gdGhlIERPTSBpbW1lZGlhdGVseSBzbyBDREsncyBwZW5kaW5nIHJhbmdlXG4gICAgLy8gdXBkYXRlICh3aGljaCBpcyBzY2hlZHVsZWQgYXN5bmMpIHNlZXMgYW5pbWF0aW9ucyBzdXBwcmVzc2VkIHdoZW4gaXQgcmVuZGVycyByb3dzLlxuICAgIGlmICh0aGlzLm9wdGltaXNlZENoYW5nZURldGVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgdGhpcy5jbGVhclNjcm9sbFRpbWVvdXQoKTtcbiAgICB0aGlzLnNjcm9sbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMubm90aWZ5U2Nyb2xsRW5kZWQoKSwgMTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgbm90aWZ5U2Nyb2xsRW5kZWQoKSB7XG4gICAgdGhpcy5jbGVhclNjcm9sbFRpbWVvdXQoKTtcbiAgICB0aGlzLnZpcnR1YWxTY3JvbGxBY3RpdmUkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5yZXNldEFuaW1hdGlvbnNBZnRlckZyYW1lKCk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNjcm9sbEVuZEFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEFuaW1hdGlvbnNBZnRlckZyYW1lKCkge1xuICAgIC8vIENhbmNlbCBhbnkgcGVuZGluZyByZXNldCBzbyByYXBpZCBkYXRhIGNoYW5nZXMgZG9uJ3QgcmUtZW5hYmxlIGFuaW1hdGlvbnMgbWlkLXJlbmRlci5cbiAgICBpZiAodGhpcy5hbmltYXRpb25zUmVzZXRSYWZJZCAhPT0gbnVsbCkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25zUmVzZXRSYWZJZCk7XG4gICAgfVxuICAgIC8vIFJlLWVuYWJsZSBhZnRlciB0aGUgbmV4dCBmcmFtZTogYnkgdGhlbiBDREsgaGFzIGNyZWF0ZWQgcm93cyBhbmQgQ0QgaGFzIHJ1bixcbiAgICAvLyBzbyA6ZW50ZXIgYW5pbWF0aW9ucyB3b24ndCBmaXJlIG9uIHRoZSBuZXdseSBjcmVhdGVkIHJvdyBjb21wb25lbnRzLlxuICAgIHRoaXMuYW5pbWF0aW9uc1Jlc2V0UmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb25zUmVzZXRSYWZJZCA9IG51bGw7XG4gICAgICB0aGlzLmFuaW1hdGlvbnNEaXNhYmxlZCQudmFsdWUgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLm9wdGltaXNlZENoYW5nZURldGVjdGlvbkVuYWJsZWQpIHtcbiAgICAgICAgLy8gZGV0ZWN0Q2hhbmdlcygpIGRpcmVjdGx5IOKAlCBtYXJrRm9yQ2hlY2soKSBkb2VzIG5vdGhpbmcgb24gYSBkZXRhY2hlZCB2aWV3LlxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU2Nyb2xsVGltZW91dCgpIHtcbiAgICBpZiAodGhpcy5zY3JvbGxUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zY3JvbGxUaW1lb3V0KTtcbiAgICB9XG4gIH1cblxufVxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVCb2R5Q29tcG9uZW50IHtcbiAgZXhwb3J0IHR5cGUgU2Nyb2xsTW9kZSA9IFwibm9uZVwiIHwgXCJjbGFzc2ljXCIgfCBcInZpcnR1YWxcIjtcbn1cbiIsIlxuPGRpdiBjbGFzcz1cImNsYXNzaWMtc2Nyb2xsLWNvbnRhaW5lclwiICpuZ0lmPVwic2Nyb2xsTW9kZSQudmFsdWUgIT09ICd2aXJ0dWFsJ1wiPlxuICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGEkLnZhbHVlXCIgW3RyYWNrQnldPVwidHJhY2tCeVwiIFttdWx0aVRlbXBsYXRlRGF0YVJvd3NdPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnMkLnZhbHVlOyBpbmRleCBhcyBpbmRleDsgZmlyc3QgYXMgZmlyc3Q7IGxhc3QgYXMgbGFzdFwiXG4gICAgICAgICAgICAgICAgICBtYXRDb2x1bW5EZWY9XCJ7e2NvbHVtbi5jb2x1bW5JZH19XCI+XG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiIFtjbGFzcy5oaWRlXT1cIiFjb2x1bW4uaXNWaXNpYmxlKClcIj5cbiAgICAgICAgPGF1cC10YWJsZS1oZWFkZXItY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY29sdW1uLmNvbHVtbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3Nlcyhjb2x1bW4uY29sdW1uSWQpXCJcbiAgICAgICAgPjwvYXVwLXRhYmxlLWhlYWRlci1jZWxsPlxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiAoY2xpY2spPVwibm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uLCByb3cpXCJcbiAgICAgICAgICBbY2xhc3MuZW5hYmxlLWN1cnNvcl09XCJ0YWJsZU1vZGVsLmlzQ3Vyc29yRW5hYmxlZEZvclJvdyhjb2x1bW4sIHJvdylcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiXG4gICAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdXAtdGFibGUtY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVNb2RlbF09XCIkYW55KHRhYmxlTW9kZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY29sdW1uLmNvbHVtbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtY2VsbD5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbklkcyQudmFsdWU7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGNvbHVtbklkcyQudmFsdWU7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICBbbmdDbGFzc109XCJ0YWJsZU1vZGVsLmdldFJvd0NsYXNzZXMocm93KVwiXG4gICAgICAgIFtjbGFzcy5lbmFibGUtaG92ZXJdPVwidGFibGVNb2RlbC5pc0hvdmVyRW5hYmxlZEZvclJvdyhyb3cpXCJcbiAgICAgICAgW2F1cFRhYmxlUm93QXR0cmlidXRlc109XCJ0YWJsZU1vZGVsLmdldFJvd0F0dHJpYnV0ZXMocm93KVwiXG4gICAgICAgIFthdHRyLmF1cC1yb3ctaWRdPVwidHJhY2tCeShpLCByb3cpXCJcbiAgICA+PC90cj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvb3RlciBvZiBmb290ZXJSb3dEZWZzJC52YWx1ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2VsbCBvZiBmb290ZXIuY2VsbHNcIiBbbWF0Q29sdW1uRGVmXT1cImNlbGwuZGVmSWRcIj5cbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBbYXR0ci5jb2xzcGFuXT1cImNlbGwuY29sc3BhblwiXG4gICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY2VsbC5jb2x1bW5JZFwiIGNsYXNzPVwiZm9vdGVyLWNlbGxcIj5cbiAgICAgICAgICA8YXVwLXRhYmxlLWZvb3Rlci1yb3cgKm5nSWY9XCIhY2VsbC5maWxsZXJcIiBbY2VsbF09XCJjZWxsXCI+PC9hdXAtdGFibGUtZm9vdGVyLXJvdz5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJmb290ZXIuZGVmSWRzOyBzdGlja3k6IHRydWVcIiBbbmdDbGFzc109XCJmb290ZXIucm93Q2xhc3Nlc1wiXG4gICAgICAgICAgW2NsYXNzLmF1cC1mb290ZXItcm93LWhpZGRlbl09XCJmb290ZXIudmlzaWJsZSQgJiYgIWZvb3Rlci52aXNpYmxlJC52YWx1ZVwiPjwvdHI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICAqbmdJZj1cInNjcm9sbE1vZGUkLnZhbHVlID09PSAndmlydHVhbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0AuZGlzYWJsZWRdPVwiYW5pbWF0aW9uc0Rpc2FibGVkJC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHZzSXRlbVNpemVdPVwicm93SGVpZ2h0JC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVySGVpZ2h0XT1cImhlYWRlckhlaWdodCQudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvb3RlckVuYWJsZWRdPVwiKGZvb3RlclJvd0RlZnMkPy52YWx1ZT8ubGVuZ3RoID8/IDApID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9vdGVySGVpZ2h0XT1cIjQ4ICogKGZvb3RlclJvd0RlZnMkPy52YWx1ZT8ubGVuZ3RoID8/IDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZmZXJNdWx0aXBsaWVyXT1cImJ1ZmZlck11bHRpcGxpZXJcIlxuPlxuICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInZpcnR1YWxTY3JvbGxEYXRhU291cmNlXCIgW3RyYWNrQnldPVwidHJhY2tCeVwiPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnMkLnZhbHVlOyBpbmRleCBhcyBpbmRleDsgZmlyc3QgYXMgZmlyc3Q7IGxhc3QgYXMgbGFzdFwiXG4gICAgICAgICAgICAgICAgICBtYXRDb2x1bW5EZWY9XCJ7e2NvbHVtbi5jb2x1bW5JZH19XCI+XG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiIFtjbGFzcy5oaWRlXT1cIiFjb2x1bW4uaXNWaXNpYmxlKClcIj5cbiAgICAgICAgPGF1cC10YWJsZS1oZWFkZXItY2VsbCBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY29sdW1uLmNvbHVtbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3Nlcyhjb2x1bW4uY29sdW1uSWQpXCJcbiAgICAgICAgPjwvYXVwLXRhYmxlLWhlYWRlci1jZWxsPlxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiAoY2xpY2spPVwibm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uLCByb3cpXCJcbiAgICAgICAgICBbY2xhc3MuZW5hYmxlLWN1cnNvcl09XCJ0YWJsZU1vZGVsLmlzQ3Vyc29yRW5hYmxlZEZvclJvdyhjb2x1bW4sIHJvdylcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiXG4gICAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdXAtdGFibGUtY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVNb2RlbF09XCIkYW55KHRhYmxlTW9kZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY29sdW1uLmNvbHVtbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtY2VsbD5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbklkcyQudmFsdWU7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGNvbHVtbklkcyQudmFsdWU7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICBbbmdDbGFzc109XCJ0YWJsZU1vZGVsLmdldFJvd0NsYXNzZXMocm93KVwiXG4gICAgICAgIFtjbGFzcy5lbmFibGUtaG92ZXJdPVwidGFibGVNb2RlbC5pc0hvdmVyRW5hYmxlZEZvclJvdyhyb3cpXCJcbiAgICAgICAgW2F1cFRhYmxlUm93QXR0cmlidXRlc109XCJ0YWJsZU1vZGVsLmdldFJvd0F0dHJpYnV0ZXMocm93KVwiXG4gICAgICAgIFthdHRyLmF1cC1yb3ctaWRdPVwidHJhY2tCeShpLCByb3cpXCJcbiAgICA+PC90cj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvb3RlciBvZiBmb290ZXJSb3dEZWZzJC52YWx1ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2VsbCBvZiBmb290ZXIuY2VsbHNcIiBbbWF0Q29sdW1uRGVmXT1cImNlbGwuZGVmSWRcIj5cbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBbYXR0ci5jb2xzcGFuXT1cImNlbGwuY29sc3BhblwiXG4gICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY2VsbC5jb2x1bW5JZFwiIGNsYXNzPVwiZm9vdGVyLWNlbGxcIj5cbiAgICAgICAgICA8YXVwLXRhYmxlLWZvb3Rlci1yb3cgKm5nSWY9XCIhY2VsbC5maWxsZXJcIiBbY2VsbF09XCJjZWxsXCI+PC9hdXAtdGFibGUtZm9vdGVyLXJvdz5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJmb290ZXIuZGVmSWRzOyBzdGlja3k6IHRydWVcIiBbbmdDbGFzc109XCJmb290ZXIucm93Q2xhc3Nlc1wiXG4gICAgICAgICAgW2NsYXNzLmF1cC1mb290ZXItcm93LWhpZGRlbl09XCJmb290ZXIudmlzaWJsZSQgJiYgIWZvb3Rlci52aXNpYmxlJC52YWx1ZVwiPjwvdHI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cblxuICA8L3RhYmxlPlxuPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG5cbiJdfQ==
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9yZW5kZXJlci90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvdGFibGUtYm9keS90YWJsZS1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzR0FBc0c7QUFDdEcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEdBQUcsRUFDSCxTQUFTLEVBR1QsaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBSTlELE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFFM0YsTUFBTSxDQUFDLE1BQU0sMENBQTBDLEdBQUcsSUFBSSxjQUFj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RTs4QkFDRyxVQUFVO3FEQUF5QztBQUdoRTtJQURDLGlCQUFpQixFQUFFOztvREFDRjtBQU1sQjtJQURDLE9BQU8sRUFBRTs4QkFDRyxVQUFVO3FEQUFxRjtBQUk1RztJQUZDLGlCQUFpQixFQUFFOztvREFFK0I7MkZBM0JqRCxrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGFBR2Y7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxvQ0FBb0MsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO3FCQUM1Sjs7MEJBZ0ZZLE1BQU07MkJBQUMsMENBQTBDOzswQkFBRyxRQUFROzRDQTNFaEUsS0FBSztzQkFEYixLQUFLO2dCQUlHLFVBQVU7c0JBRGxCLEtBQUs7Z0JBTU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlHLFdBQVc7c0JBRG5CLEtBQUs7Z0JBSUcsVUFBVTtzQkFEbEIsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSUcsV0FBVztzQkFEbkIsS0FBSztnQkFLRyxVQUFVO3NCQUZsQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFJOUIsY0FBYztzQkFEYixTQUFTO3VCQUFDLHdCQUF3QjtnQkFxQm5DLFlBQVk7c0JBRFgsV0FBVzt1QkFBQyxPQUFPO2dCQUloQix1QkFBdUI7c0JBRDFCLFdBQVc7dUJBQUMsK0JBQStCO2dCQW1IeEMsVUFBVTtzQkFEYixXQUFXO3VCQUFDLG1CQUFtQjtnQkFNNUIsa0JBQWtCO3NCQURyQixXQUFXO3VCQUFDLGlDQUFpQztnQkFNMUMsZUFBZTtzQkFEbEIsV0FBVzt1QkFBQyw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIHRhYmxlIGJvZHkgcmVuZGVycyBhcmJpdHJhcnkgcm93L2NlbGwgdHlwZXMgKi9cbmltcG9ydCB7Q2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0fSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3Njcm9sbGluZ1wiO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkLFxuICBpbmplY3Rcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIERzbCxcbiAgTGlzdE1vZGVsLFxuICBMaXN0TW9kZWxDaGFpbixcbiAgTWFwTW9kZWxDaGFpbixcbiAgTXV0YWJsZVZhbHVlTW9kZWwsXG4gIFByb3hpZnksXG4gIHByb3hpZnksXG4gIFN0b3JlSW5WYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsXG59IGZyb20gXCJAY29vbG9uL3BlY3RpblwiO1xuaW1wb3J0IHtUYWJsZVZpcnR1YWxTY3JvbGxEYXRhU291cmNlfSBmcm9tIFwibmctdGFibGUtdmlydHVhbC1zY3JvbGxcIjtcbmltcG9ydCB7UmVzaXplQXdhcmVDb21wb25lbnR9IGZyb20gXCIuLi8uLi8uLi9yZXNpemUtYXdhcmUuY29tcG9uZW50XCI7XG5pbXBvcnQge0Fic3RyYWN0VGFibGVNb2RlbH0gZnJvbSBcIi4uLy4uL2Fic3RyYWN0LXRhYmxlLW1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7Q29sdW1uTW9kZWx9IGZyb20gXCIuLi8uLi9jb2x1bW4vY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge0Zvb3RlclJvd01vZGVsLCBSZXNvbHZlZEZvb3RlclJvd30gZnJvbSBcIi4uLy4uL2Zvb3Rlci9mb290ZXItcm93LW1vZGVsXCI7XG5cbmltcG9ydCB7QVVQX0RFVEFDSEVEX1BBUkVOVF9DRFIsIERpc3Bvc2FibGVDb21wb25lbnR9IGZyb20gXCIuLi8uLi8uLi9kaXNwb3NhYmxlLWNvbXBvbmVudFwiO1xuXG5leHBvcnQgY29uc3QgQVVQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0JVRkZFUl9NVUxUSVBMSUVSID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcj4oXCJBVVBfVEFCTEVfVklSVFVBTF9TQ1JPTExfQlVGRkVSX01VTFRJUExJRVJcIilcbmV4cG9ydCBjb25zdCBBVVBfVEFCTEVfT1BUSU1JWkVEX0NIQU5HRV9ERVRFQ1RJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48Ym9vbGVhbj4oXCJBVVBfVEFCTEVfT1BUSU1JWkVEX0NIQU5HRV9ERVRFQ1RJT05cIilcblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2F1cFRhYmxlUm93QXR0cmlidXRlc11cIixcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVSb3dBdHRyaWJ1dGVzRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICBhdXBUYWJsZVJvd0F0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAvKiogQXR0cmlidXRlIG5hbWVzIGFwcGxpZWQgb24gdGhlIHByZXZpb3VzIHBhc3MsIHNvIG9uZXMgdGhhdCBkaXNhcHBlYXIgY2FuIGJlIHJlbW92ZWQuICovXG4gIHByaXZhdGUgYXBwbGllZEF0dHJpYnV0ZU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICB9XG5cbiAgLy8gUmUtYXBwbHkgb24gZXZlcnkgY2hhbmdlLCBub3QganVzdCBvbmNlIGF0IGluaXQ6IGEgcm93J3MgYXR0cmlidXRlIHZhbHVlcyBjYW4gY2hhbmdlIGFmdGVyIHRoZVxuICAvLyByb3cgaGFzIHJlbmRlcmVkIChlLmcuIGFuIE9UQVAgZGV2aWNlIHJvdyB3aG9zZSBkZXZpY2UgcmVjb3JkIHJlc29sdmVzIGFmdGVyIGl0cyBzY3JhdGNocGFkIHJvd1xuICAvLyB3YXMgY3JlYXRlZCksIGFuZCB0aGUgZWxlbWVudCBtdXN0IHJlZmxlY3QgdGhlIGxhdGVzdCB2YWx1ZXMuIFByZXZpb3VzbHkgdGhpcyBpbXBsZW1lbnRlZCBPbkluaXQsXG4gIC8vIHNvIHRoZSBhdHRyaWJ1dGVzIHdlcmUgZnJvemVuIGF0IHJvdy1jcmVhdGlvbiB0aW1lIGFuZCB3ZW50IHN0YWxlIChlLmcuIGRldmljZUhhcmR3YXJlSWQgc3R1Y2sgb25cbiAgLy8gaXRzIGluaXRpYWwgXCJ1bmRlZmluZWRcIikuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5hdXBUYWJsZVJvd0F0dHJpYnV0ZXMgPz8ge307XG4gICAgZm9yIChjb25zdCBhdHRyIG9mIHRoaXMuYXBwbGllZEF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICBpZiAoIShhdHRyIGluIG5leHQpKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHIpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFwcGxpZWRBdHRyaWJ1dGVOYW1lcyA9IE9iamVjdC5rZXlzKG5leHQpO1xuICAgIGZvciAoY29uc3QgYXR0ciBvZiB0aGlzLmFwcGxpZWRBdHRyaWJ1dGVOYW1lcykge1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0ciwgbmV4dFthdHRyXSk7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhdXAtdGFibGUtYm9keVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3RhYmxlLWJvZHkuY29tcG9uZW50LnNjc3NcIl0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVVQX0RFVEFDSEVEX1BBUkVOVF9DRFIsIHVzZUZhY3Rvcnk6ICgpID0+IGluamVjdChBVVBfVEFCTEVfT1BUSU1JWkVEX0NIQU5HRV9ERVRFQ1RJT04sIHsgb3B0aW9uYWw6IHRydWUgfSkgPyBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIDogbnVsbCB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVCb2R5Q29tcG9uZW50PFJvdyBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBSZXNpemVBd2FyZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBkYXRhJDogTGlzdE1vZGVsPFJvdz4gPSBwcm94aWZ5KExpc3RNb2RlbDxSb3c+KTtcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHRhYmxlTW9kZWw6IEFic3RyYWN0VGFibGVNb2RlbDxSb3c+ID0gcHJveGlmeShBYnN0cmFjdFRhYmxlTW9kZWw8Um93Pik7XG5cbiAgLy8gRm9vdGVyIHJvd3MgYXJlIGJ1aWx0IG9uY2UgaW4gdGhlIFRhYmxlTW9kZWwgYnVpbGRlciBjYWxsYmFjaywgc28gYSBwbGFpbiBpbnB1dCBpcyBlbm91Z2g7XG4gIC8vIHRoZSBwZXItcm93IGNlbGwgbGF5b3V0IChmb290ZXJSb3dEZWZzJCkgaXMgZGVyaXZlZCByZWFjdGl2ZWx5IGZyb20gdGhlIHZpc2libGUgY29sdW1ucy5cbiAgQElucHV0KClcbiAgZm9vdGVyUm93czogRm9vdGVyUm93TW9kZWwuSW1wbFtdID0gW107XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBzaG93SGVhZGVyJDogVmFsdWVNb2RlbDxib29sZWFuPiA9IHByb3hpZnkoVmFsdWVNb2RlbDxib29sZWFuPik7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKClcbiAgYWNjZXNzb3Igc2hvd0hlYWRlciA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgdHJhY2tCeTogKGluZGV4OiBudW1iZXIsIGl0ZW06IFJvdykgPT4gYW55XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBzY3JvbGxNb2RlJDogVmFsdWVNb2RlbDxUYWJsZUJvZHlDb21wb25lbnQuU2Nyb2xsTW9kZT4gPSBwcm94aWZ5KFZhbHVlTW9kZWw8VGFibGVCb2R5Q29tcG9uZW50LlNjcm9sbE1vZGU+KTtcblxuICBASW5wdXQoKSBAU3RvcmVJblZhbHVlTW9kZWwoKVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLnNjcm9sbE1vZGVcIilcbiAgYWNjZXNzb3Igc2Nyb2xsTW9kZTogVGFibGVCb2R5Q29tcG9uZW50LlNjcm9sbE1vZGUgPSBcIm5vbmVcIjtcblxuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydClcbiAgc2Nyb2xsVmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydFxuXG4gIGNvbHVtbnMkOiBMaXN0TW9kZWxDaGFpbjxDb2x1bW5Nb2RlbDxSb3c+PjtcbiAgY29sdW1uSWRzJDogTGlzdE1vZGVsQ2hhaW48c3RyaW5nPjtcbiAgZm9vdGVyUm93RGVmcyQ6IFZhbHVlTW9kZWw8UmVzb2x2ZWRGb290ZXJSb3dbXT47XG5cbiAgcHJpdmF0ZSBjb2x1bW5zQnlJZCQ6IE1hcE1vZGVsQ2hhaW48c3RyaW5nLCBDb2x1bW5Nb2RlbDxSb3c+PjtcblxuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGVyIHJvdydzIGhlaWdodCwgd2hpY2ggdGhlIHZpcnR1YWwgc2Nyb2xsZXIgb2Zmc2V0cyBpdHMgcm93cyBieSBhbmQgd2hpY2ggcGlucyB0aGUgaGVhZGVyXG4gICAqIGNlbGxzIGluIHZpcnR1YWwgbW9kZS4gVGFrZW4gZnJvbSAtLWF1cC10YWJsZS1oZWFkZXItcm93LWhlaWdodCBhdCBpbml0ICh0YWJsZS5zY3NzIHNldHMgNDhweCksIHNvXG4gICAqIGEgdGFibGUgdGhlbWVkIHdpdGggYSBzaG9ydGVyIGhlYWRlciBzY3JvbGxzIGNvcnJlY3RseTsgNDggd2hlbiB0aGUgdmFyaWFibGUgY2FuJ3QgYmUgcmVhZC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBoZWFkZXJIZWlnaHQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPG51bWJlcj4oNDgpO1xuICAvLyBUT0RPOiB0YWtlIHRoZSByb3cgaGVpZ2h0IGZyb20gLS1hdXAtdGFibGUtcm93LWhlaWdodCB0b28uIE5vdCBhIGRyb3AtaW46IHRhYmxlLnNjc3Mgc2V0cyBpdCB0b1xuICAvLyA0MHB4IHdoaWxlIHZpcnR1YWwgcm93cyBoYXZlIGFsd2F5cyBiZWVuIDQ0LCBzbyBmb2xsb3dpbmcgaXQgd291bGQgc2hyaW5rIGV2ZXJ5IHZpcnR1YWwgcm93LlxuICBwcm90ZWN0ZWQgcm93SGVpZ2h0JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxudW1iZXI+KDQ0KTtcblxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKVxuICBiYXNlQ3NzQ2xhc3MgPSBcImF1cC10YWJsZS1jb21wb25lbnRcIjtcblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5hdXAtYW5pbWF0aW9ucy1kaXNhYmxlZFwiKVxuICBnZXQgYW5pbWF0aW9uc0Rpc2FibGVkQ2xhc3MoKSB7IHJldHVybiB0aGlzLmFuaW1hdGlvbnNEaXNhYmxlZCQudmFsdWU7IH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlydHVhbFNjcm9sbERhdGFTb3VyY2UgPSBuZXcgVGFibGVWaXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZTxSb3c+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB2aXJ0dWFsU2Nyb2xsQWN0aXZlJCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBhbmltYXRpb25zRGlzYWJsZWQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsKGZhbHNlKTtcbiAgcHJpdmF0ZSBzY3JvbGxUaW1lb3V0OiBhbnk7XG4gIHByaXZhdGUgYW5pbWF0aW9uc1Jlc2V0UmFmSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHNjcm9sbEVuZEFib3J0Q29udHJvbGxlcjogQWJvcnRDb250cm9sbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGltaXNlZENoYW5nZURldGVjdGlvbkVuYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgdmlld0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG1hcmtGb3JDaGVjaygpIHtcbiAgICBpZiAodGhpcy5vcHRpbWlzZWRDaGFuZ2VEZXRlY3Rpb25FbmFibGVkKSB7XG4gICAgICAvLyBUaGUgdGFibGUtYm9keSBkZXRhY2hlcyBpdHMgb3duIENEUiBhbmQgaGFzIG5vIGRldGFjaGVkIHBhcmVudCAoQVVQX0RFVEFDSEVEX1BBUkVOVF9DRFJcbiAgICAgIC8vIHVzZXMgc2tpcFNlbGYpLCBzbyB0aGUgYmFzZSBtYXJrRm9yQ2hlY2soKSB3b3VsZCBjYWxsIGNkci5tYXJrRm9yQ2hlY2soKSB3aGljaCBpcyBhXG4gICAgICAvLyBuby1vcCBvbiBhIGRldGFjaGVkIHZpZXcuIFNjaGVkdWxlIGFuIGV4cGxpY2l0IGRldGVjdENoYW5nZXMoKSBvbiBvdXJzZWx2ZXMgaW5zdGVhZCBzb1xuICAgICAgLy8gdGhhdCB2aWV3U3RhdGVEZXBlbmRzT24oKSBjb3JyZWN0bHkgdHJpZ2dlcnMgcmUtcmVuZGVycyAoZS5nLiByb3cgc2VsZWN0aW9uIGNsYXNzZXMpLlxuICAgICAgRGlzcG9zYWJsZUNvbXBvbmVudC5zY2hlZHVsZVBhcmVudFN3ZWVwKHRoaXMuY2RyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3VwZXIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFVUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9CVUZGRVJfTVVMVElQTElFUikgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGJ1ZmZlck11bHRpcGxpZXI6IG51bWJlciA9IDMpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHtjaGFpbiwgd2hlbiwgb2JzZXJ2ZX0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG5cbiAgICB0aGlzLm9wdGltaXNlZENoYW5nZURldGVjdGlvbkVuYWJsZWQgPSB0aGlzLmluamVjdChBVVBfVEFCTEVfT1BUSU1JWkVEX0NIQU5HRV9ERVRFQ1RJT04sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgY29uc3QgYWN0dWFsSGVhZGVySGVpZ2h0JCA9IGNoYWluKHRoaXMuc2hvd0hlYWRlciQpLm1hcChzaG93ID0+IHtcbiAgICAgIHJldHVybiBzaG93ID8gdGhpcy5oZWFkZXJIZWlnaHQkLnZhbHVlIDogMDtcbiAgICB9LCB7ZGVwZW5kc09uOiB0aGlzLmhlYWRlckhlaWdodCR9KTtcblxuXG4gICAgLy8gcGVyZm9ybWFuY2UgaXMgdGVycmlibGUgaWYgdGhlIGRhdGEgY2hhbmdlcyB3aGlsZSB3ZSdyZSBzY3JvbGxpbmcsIHNvIHdlIHBvc3Rwb25lIHVwZGF0ZXMgdW50aWxcbiAgICAvLyBzY3JvbGxpbmcgc3RvcHMuXG4gICAgY29uc3QgZGVsYXllZERhdGEkID0gY2hhaW4odGhpcy5kYXRhJCkucG9zdHBvbmVXaGlsZSh0aGlzLnZpcnR1YWxTY3JvbGxBY3RpdmUkKVxuICAgIHdoZW4oZGVsYXllZERhdGEkKS5jaGFuZ2VzKGRlbGF0ZWREYXRhID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uc0Rpc2FibGVkJC52YWx1ZSA9IHRydWU7XG4gICAgICAvLyBVcGRhdGUgdGhlIENESyBkYXRhIHNvdXJjZSBiZWZvcmUgZGV0ZWN0Q2hhbmdlcyBzbyB0aGF0IGJvdGggdGhlIGV4cGxpY2l0IGRldGVjdENoYW5nZXNcbiAgICAgIC8vIGFuZCBhbnkgc3Vic2VxdWVudCBTV0VFUC10cmlnZ2VyZWQgZGV0ZWN0Q2hhbmdlcyBzZWUgdGhlIHNhbWUgZGF0YS4gSWYgd2UgdXBkYXRlIGFmdGVyLFxuICAgICAgLy8gdGhlIFNXRUVQJ3MgZGV0ZWN0Q2hhbmdlcyBzZWVzIGRpZmZlcmVudCByb3cgb2JqZWN0cyBhbmQgdHJpZ2dlcnMgYSBzZWNvbmQgY2FzY2FkZS5cbiAgICAgIHRoaXMudmlydHVhbFNjcm9sbERhdGFTb3VyY2UuZGF0YSA9IGRlbGF0ZWREYXRhO1xuICAgICAgLy8gV2l0aCBkZXRhY2hlZCBDRCwgbWFya0ZvckNoZWNrKCkgYWxvbmUgd29uJ3QgcHVzaCBbQC5kaXNhYmxlZF09XCJ0cnVlXCIgdG8gdGhlIERPTS5cbiAgICAgIC8vIERldGVjdCBzeW5jaHJvbm91c2x5IHNvIENESyByZW5kZXJzIG5ldyByb3dzIHdpdGggYW5pbWF0aW9ucyBhbHJlYWR5IHN1cHByZXNzZWQuXG4gICAgICAvLyBhbmltYXRpb25zRGlzYWJsZWQkLnZhbHVlIGlzIGFscmVhZHkgdHJ1ZSAoc2V0IGFib3ZlKSwgc28gdGhlIHRlbXBsYXRlIGV2YWx1YXRpb25cbiAgICAgIC8vIGluIHRoaXMgZGV0ZWN0Q2hhbmdlcyB3aWxsIHNlZSBbQC5kaXNhYmxlZF09XCJ0cnVlXCIgYmVmb3JlIGFueSBuZXcgcm93cyBhcmUgY3JlYXRlZC5cbiAgICAgIC8vIEd1YXJkIGFnYWluc3QgdGhlIHtpbml0aWFsVmFsdWU6XCJldmFsdWF0ZVwifSBmaXJpbmcgZHVyaW5nIGNvbnN0cnVjdGlvbiBiZWZvcmUgdGhlIHZpZXcgZXhpc3RzLlxuICAgICAgaWYgKHRoaXMub3B0aW1pc2VkQ2hhbmdlRGV0ZWN0aW9uRW5hYmxlZCAmJiB0aGlzLnZpZXdJbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNjaGVkdWxlVGFibGVIZWlnaHRDaGVjaygpO1xuICAgICAgdGhpcy5yZXNldEFuaW1hdGlvbnNBZnRlckZyYW1lKCk7XG4gICAgfSwge2luaXRpYWxWYWx1ZTogXCJldmFsdWF0ZVwifSlcblxuXG4gICAgdGhpcy5vbkluaXQoKCkgPT4ge1xuICAgICAgLy8gT24gaW5pdCwgbm90IGFmdGVyIHRoZSB2aWV3OiB0aGUgaGVhZGVyIGhlaWdodCBpcyBib3VuZCBpbiB0aGlzIHZpZXcgYW5kIGluIGEgaG9zdCBiaW5kaW5nLFxuICAgICAgLy8gYW5kIGNoYW5naW5nIGl0IGFmdGVyIHRoZXkgYXJlIGNoZWNrZWQgd291bGQgdHJpcCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZC5cbiAgICAgIHRoaXMudGFrZUhlYWRlckhlaWdodEZyb21UaGVtZSgpO1xuICAgICAgdGhpcy5jb2x1bW5zJCA9IGNoYWluKHRoaXMudGFibGVNb2RlbC52aXNpYmxlQ29sdW1ucyQpO1xuICAgICAgdGhpcy5jb2x1bW5JZHMkID0gY2hhaW4odGhpcy5jb2x1bW5zJCkucGx1Y2soXCJjb2x1bW5JZFwiKTtcbiAgICAgIHRoaXMuY29sdW1uc0J5SWQkID0gY2hhaW4odGhpcy5jb2x1bW5zJCkuaW5kZXhCeSgnY29sdW1uSWQnKTtcbiAgICAgIHRoaXMuZm9vdGVyUm93RGVmcyQgPSBjaGFpbih0aGlzLmNvbHVtbklkcyQpLnJlZHVjZUFsbChpZHMgPT5cbiAgICAgICAgKHRoaXMuZm9vdGVyUm93cyA/PyBbXSkubWFwKChyb3csIGkpID0+IHJvdy5yZXNvbHZlKGksIFsuLi5pZHNdKSlcbiAgICAgICk7XG4gICAgICAvLyBGb290ZXIgcm93cyBnYXRlZCB2aWEgdmlzaWJsZVdoaWxlKCkgZmxpcCBpbmRlcGVuZGVudGx5IG9mIHRoZSBjb2x1bW5zIHRoYXQgZHJpdmVcbiAgICAgIC8vIGZvb3RlclJvd0RlZnMkLCBzbyBkZXBlbmQgb24gdGhlaXIgbW9kZWxzIGRpcmVjdGx5IHRvIHJlLXJlbmRlciB0aGUgPHRyPiByZWFjdGl2ZWx5LlxuICAgICAgY29uc3QgZm9vdGVyVmlzaWJpbGl0eSQgPSAodGhpcy5mb290ZXJSb3dzID8/IFtdKVxuICAgICAgICAubWFwKHJvdyA9PiByb3cudmlzaWJsZSQpXG4gICAgICAgIC5maWx0ZXIoKG0pOiBtIGlzIFZhbHVlTW9kZWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4gPT4gbSAhPSBudWxsKTtcbiAgICAgIHRoaXMudmlld1N0YXRlRGVwZW5kc09uKHRoaXMudGFibGVNb2RlbC5maWx0ZXJlZFJvd3MkLCB0aGlzLnRhYmxlTW9kZWwudmlzaWJsZUNvbHVtbnMkLCB0aGlzLnZpcnR1YWxTY3JvbGxBY3RpdmUkLCB0aGlzLmFuaW1hdGlvbnNEaXNhYmxlZCQsIHRoaXMudGFibGVNb2RlbC5zZWxlY3RlZEl0ZW1zJCwgdGhpcy50YWJsZU1vZGVsLnNlbGVjdGFibGVSb3dzJCwgdGhpcy5mb290ZXJSb3dEZWZzJCwgLi4uZm9vdGVyVmlzaWJpbGl0eSQpXG4gICAgfSk7XG5cbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB0aGlzLnZpZXdJbml0aWFsaXplZCA9IHRydWU7XG4gICAgaWYgKHRoaXMuc2Nyb2xsVmlld3BvcnQpIHtcbiAgICAgIGNvbnN0IHtvYnNlcnZlfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICAgIHRoaXMuc2Nyb2xsVmlld3BvcnQuZWxlbWVudFNjcm9sbGVkKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMubm90aWZ5U2Nyb2xsZWQoKSk7XG4gICAgICB0aGlzLnNjcm9sbEVuZEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIHRoaXMuc2Nyb2xsVmlld3BvcnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdzY3JvbGxlbmQnLFxuICAgICAgICAoKSA9PiB0aGlzLm5vdGlmeVNjcm9sbEVuZGVkKCksXG4gICAgICAgIHtwYXNzaXZlOiB0cnVlLCBzaWduYWw6IHRoaXMuc2Nyb2xsRW5kQWJvcnRDb250cm9sbGVyLnNpZ25hbH1cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGltaXNlZENoYW5nZURldGVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIHRoaXMuY2RyLmRldGFjaCgpO1xuICAgICAgaWYgKHRoaXMuc2Nyb2xsVmlld3BvcnQpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3cG9ydC5yZW5kZXJlZFJhbmdlU3RyZWFtLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gRGVmZXIgcGFzdCB0aGUgY3VycmVudCBzeW5jIGJhdGNoIHNvIHRoZSBkYXRhIHNvdXJjZSBoYXMgdXBkYXRlZCBfcmVuZGVyZWRJdGVtcyBiZWZvcmUgd2UgcnVuIENELlxuICAgICAgICAgIC8vIE11c3QgY2FsbCBkZXRlY3RDaGFuZ2VzKCkgZGlyZWN0bHkg4oCUIG1hcmtGb3JDaGVjaygpIGFsb25lIGRvZXMgbm90aGluZyBvbiBhIGRldGFjaGVkIHZpZXcuXG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gRXh0ZW5kIHRoZSBhbmltYXRpb24gc3VwcHJlc3Npb24gd2luZG93IG9uIGVhY2ggQ0RLIHJhbmdlIGNoYW5nZSBzbyBhbmltYXRpb25zIGNhbid0XG4gICAgICAgICAgLy8gZmlyZSBtaWQtcmVuZGVyIHJlZ2FyZGxlc3Mgb2YgaG93IG1hbnkgZnJhbWVzIHRoZSByYW5nZSB1cGRhdGUgc3BhbnMuXG4gICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uc0Rpc2FibGVkJC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldEFuaW1hdGlvbnNBZnRlckZyYW1lKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIERlZmVyIHBhc3QgdGhlIGN1cnJlbnQgdGljayBzbyB0aGUgdmlld3BvcnQncyBpbml0aWFsIHJlbmRlcmVkIHJhbmdlIGlzIHN0YWJsZVxuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmhpZGUtaGVhZGVyXCIpXG4gIGdldCBoaWRlSGVhZGVyKCkge1xuICAgIHJldHVybiAhdGhpcy5zaG93SGVhZGVyO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKFwic3R5bGUuLS1hdXAtdGFibGUtaGVhZGVyLWhlaWdodFwiKVxuICBnZXQgaGVhZGVySGVpZ2h0Q3NzVmFyKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmhlYWRlckhlaWdodCQudmFsdWV9cHhgXG4gIH1cblxuICBASG9zdEJpbmRpbmcoXCJzdHlsZS4tLWF1cC10YWJsZS1yb3ctaGVpZ2h0XCIpXG4gIGdldCByb3dIZWlnaHRDc3NWYXIoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMucm93SGVpZ2h0JC52YWx1ZX1weGBcbiAgfVxuXG4gIG5vdGlmeUNlbGxDbGlja2VkKGNvbHVtbk1vZGVsOiBDb2x1bW5Nb2RlbDxSb3c+LCByb3c6IFJvdykge1xuICAgIHRoaXMudGFibGVNb2RlbC5fbm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uTW9kZWwsIHJvdyk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuXG4gIGlzRmlyc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLmZpcnN0VmlzaWJsZUNvbHVtbiQucXVlcnkoKS52YWx1ZT8uY29sdW1uSWQgPT09IGNvbHVtbklkO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcblxuICBpc0xhc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLmxhc3RWaXNpYmxlQ29sdW1uJC5xdWVyeSgpLnZhbHVlPy5jb2x1bW5JZCA9PT0gY29sdW1uSWQ7XG4gIH1cblxuICBnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbklkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjbGFzc2VzID0gW2BhdXAtY29sLSR7dGhpcy5jb2x1bW5zQnlJZCQuZ2V0KGNvbHVtbklkKS5kYXNoZXJpc2VkQ29sdW1uSWR9YF07XG4gICAgaWYgKHRoaXMuaXNGaXJzdFZpc2libGVDb2x1bW4oY29sdW1uSWQpKSB7XG4gICAgICBjbGFzc2VzLnB1c2goXCJmaXJzdC12aXNpYmxlLWNvbHVtblwiKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNMYXN0VmlzaWJsZUNvbHVtbihjb2x1bW5JZCkpIHtcbiAgICAgIGNsYXNzZXMucHVzaChcImxhc3QtdmlzaWJsZS1jb2x1bW5cIik7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG5cbiAgLyoqIFNldHMgW2hlYWRlckhlaWdodCRdIGZyb20gLS1hdXAtdGFibGUtaGVhZGVyLXJvdy1oZWlnaHQsIGtlZXBpbmcgdGhlIGN1cnJlbnQgdmFsdWUgd2hlbiBpdCBjYW4ndCBiZSByZWFkLiAqL1xuICBwcm90ZWN0ZWQgdGFrZUhlYWRlckhlaWdodEZyb21UaGVtZSgpIHtcbiAgICB0aGlzLmhlYWRlckhlaWdodCQudmFsdWUgPSB0aGlzLnJlYWRDc3NQaXhlbHMoXCItLWF1cC10YWJsZS1oZWFkZXItcm93LWhlaWdodFwiKSA/PyB0aGlzLmhlYWRlckhlaWdodCQudmFsdWU7XG4gIH1cblxuICAvKiogQSBsZW5ndGggY3VzdG9tIHByb3BlcnR5IGFzIHJlc29sdmVkIG9uIHRoaXMgZWxlbWVudCwgaW4gcHg7IHVuZGVmaW5lZCB3aGVuIHVuc2V0IG9yIG5vdCBhIGxlbmd0aC4gKi9cbiAgcHJpdmF0ZSByZWFkQ3NzUGl4ZWxzKHByb3BlcnR5OiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBpeGVscyA9IHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSkpO1xuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGl4ZWxzKSAmJiBwaXhlbHMgPiAwID8gcGl4ZWxzIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZVRhYmxlSGVpZ2h0Q2hlY2sod2FpdE1pbGxpcyA9IDUwKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBVc2UgQ0RLJ3MgaW50ZXJuYWwgcmVuZGVyZWQgcmFuZ2UgdG8gZGV0ZWN0IGEgYnJva2VuIHZpcnR1YWwgc2Nyb2xsIHN0YXRlIOKAlFxuICAgICAgLy8gYXZvaWRzIHJlYWRpbmcgb2Zmc2V0SGVpZ2h0IChmb3JjZWQgbGF5b3V0KSBhbmQgZGlzcGF0Y2hpbmcgYSBnbG9iYWwgcmVzaXplIGV2ZW50XG4gICAgICAvLyAod2hpY2ggdHJpZ2dlcnMgQW5ndWxhcidzIGFuaW1hdGlvbiBlbmdpbmUgdG8gY2FsbCBnZXRDb21wdXRlZFN0eWxlIG9uIGFsbCBlbGVtZW50cykuXG4gICAgICBjb25zdCByZW5kZXJlZFJhbmdlID0gdGhpcy5zY3JvbGxWaWV3cG9ydD8uZ2V0UmVuZGVyZWRSYW5nZSgpO1xuICAgICAgLy8gQSB1c2FibGUgdmlydHVhbCB2aWV3cG9ydCByZW5kZXJzIG1vcmUgdGhhbiBvbmUgcm93IHdoZW5ldmVyIG1vcmUgZGF0YSBleGlzdHMuIFJlbmRlcmluZ1xuICAgICAgLy8gbm9uZSBvciBvbmUgcm93IGF0IHRoZSB0b3Agd2hpbGUgZGF0YSQgaG9sZHMgbW9yZSBtZWFucyB0aGUgdmlld3BvcnQgbWVhc3VyZWQgYVxuICAgICAgLy8gY29sbGFwc2VkL3N0YWxlIGhlaWdodCAoZS5nLiBpdCB3YXMgbWVhc3VyZWQgYmVmb3JlIHRoZSB0YWJsZSB3YXMgc2l6ZWQgdXAsIHRoZW4gbmV2ZXJcbiAgICAgIC8vIHJlLW1lYXN1cmVkIHVuZGVyIGRldGFjaGVkIGNoYW5nZSBkZXRlY3Rpb24pIOKAlCBzbyByZS1tZWFzdXJlIHRvIGV4cGFuZCB0aGUgcmVuZGVyZWQgcmFuZ2UuXG4gICAgICAvLyBDb3ZlcnMgYm90aCB0aGUgemVyby1yb3cgY29sbGFwc2UgYW5kIHRoZSBwYXJ0aWFsIChvbmUtcm93KSB1bmRlci1yZW5kZXIuIERldGVjdGlvbiBzdGF5c1xuICAgICAgLy8gbGF5b3V0LWZyZWUgKGdldFJlbmRlcmVkUmFuZ2Ugb25seSk7IGNvcnJlY3RseS1zaXplZCBhbmQgZ2VudWluZWx5LXZpcnR1YWxpc2VkIGxhcmdlXG4gICAgICAvLyB0YWJsZXMgcmVuZGVyIG1hbnkgcm93cywgc28gdGhleSBuZXZlciByZWFjaCB0aGUgY2hlY2tWaWV3cG9ydFNpemUoKSByZWZsb3cgYmVsb3cuXG4gICAgICBjb25zdCByZW5kZXJlZENvdW50ID0gcmVuZGVyZWRSYW5nZSAhPSBudWxsID8gcmVuZGVyZWRSYW5nZS5lbmQgLSByZW5kZXJlZFJhbmdlLnN0YXJ0IDogMDtcbiAgICAgIGNvbnN0IHVuZGVyUmVuZGVyZWQgPSByZW5kZXJlZFJhbmdlICE9IG51bGwgJiYgcmVuZGVyZWRSYW5nZS5zdGFydCA9PT0gMCAmJiByZW5kZXJlZENvdW50IDw9IDE7XG4gICAgICBpZiAodW5kZXJSZW5kZXJlZCAmJiB0aGlzLmRhdGEkLmxlbmd0aCA+IHJlbmRlcmVkQ291bnQpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3cG9ydD8uY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICAgICAgaWYgKHdhaXRNaWxsaXMgPCA1MDApIHtcbiAgICAgICAgICB0aGlzLnNjaGVkdWxlVGFibGVIZWlnaHRDaGVjayh3YWl0TWlsbGlzICsgNTApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgd2FpdE1pbGxpcylcbiAgfVxuXG4gIHByaXZhdGUgbm90aWZ5U2Nyb2xsZWQoKSB7XG4gICAgdGhpcy52aXJ0dWFsU2Nyb2xsQWN0aXZlJC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5hbmltYXRpb25zRGlzYWJsZWQkLnZhbHVlID0gdHJ1ZTtcbiAgICAvLyBTeW5jIHRoZSBbQC5kaXNhYmxlZF09XCJ0cnVlXCIgdG8gdGhlIERPTSBpbW1lZGlhdGVseSBzbyBDREsncyBwZW5kaW5nIHJhbmdlXG4gICAgLy8gdXBkYXRlICh3aGljaCBpcyBzY2hlZHVsZWQgYXN5bmMpIHNlZXMgYW5pbWF0aW9ucyBzdXBwcmVzc2VkIHdoZW4gaXQgcmVuZGVycyByb3dzLlxuICAgIGlmICh0aGlzLm9wdGltaXNlZENoYW5nZURldGVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgdGhpcy5jbGVhclNjcm9sbFRpbWVvdXQoKTtcbiAgICB0aGlzLnNjcm9sbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMubm90aWZ5U2Nyb2xsRW5kZWQoKSwgMTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgbm90aWZ5U2Nyb2xsRW5kZWQoKSB7XG4gICAgdGhpcy5jbGVhclNjcm9sbFRpbWVvdXQoKTtcbiAgICB0aGlzLnZpcnR1YWxTY3JvbGxBY3RpdmUkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5yZXNldEFuaW1hdGlvbnNBZnRlckZyYW1lKCk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNjcm9sbEVuZEFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEFuaW1hdGlvbnNBZnRlckZyYW1lKCkge1xuICAgIC8vIENhbmNlbCBhbnkgcGVuZGluZyByZXNldCBzbyByYXBpZCBkYXRhIGNoYW5nZXMgZG9uJ3QgcmUtZW5hYmxlIGFuaW1hdGlvbnMgbWlkLXJlbmRlci5cbiAgICBpZiAodGhpcy5hbmltYXRpb25zUmVzZXRSYWZJZCAhPT0gbnVsbCkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25zUmVzZXRSYWZJZCk7XG4gICAgfVxuICAgIC8vIFJlLWVuYWJsZSBhZnRlciB0aGUgbmV4dCBmcmFtZTogYnkgdGhlbiBDREsgaGFzIGNyZWF0ZWQgcm93cyBhbmQgQ0QgaGFzIHJ1bixcbiAgICAvLyBzbyA6ZW50ZXIgYW5pbWF0aW9ucyB3b24ndCBmaXJlIG9uIHRoZSBuZXdseSBjcmVhdGVkIHJvdyBjb21wb25lbnRzLlxuICAgIHRoaXMuYW5pbWF0aW9uc1Jlc2V0UmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb25zUmVzZXRSYWZJZCA9IG51bGw7XG4gICAgICB0aGlzLmFuaW1hdGlvbnNEaXNhYmxlZCQudmFsdWUgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLm9wdGltaXNlZENoYW5nZURldGVjdGlvbkVuYWJsZWQpIHtcbiAgICAgICAgLy8gZGV0ZWN0Q2hhbmdlcygpIGRpcmVjdGx5IOKAlCBtYXJrRm9yQ2hlY2soKSBkb2VzIG5vdGhpbmcgb24gYSBkZXRhY2hlZCB2aWV3LlxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU2Nyb2xsVGltZW91dCgpIHtcbiAgICBpZiAodGhpcy5zY3JvbGxUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zY3JvbGxUaW1lb3V0KTtcbiAgICB9XG4gIH1cblxufVxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVCb2R5Q29tcG9uZW50IHtcbiAgZXhwb3J0IHR5cGUgU2Nyb2xsTW9kZSA9IFwibm9uZVwiIHwgXCJjbGFzc2ljXCIgfCBcInZpcnR1YWxcIjtcbn1cbiIsIlxuPGRpdiBjbGFzcz1cImNsYXNzaWMtc2Nyb2xsLWNvbnRhaW5lclwiICpuZ0lmPVwic2Nyb2xsTW9kZSQudmFsdWUgIT09ICd2aXJ0dWFsJ1wiPlxuICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGEkLnZhbHVlXCIgW3RyYWNrQnldPVwidHJhY2tCeVwiIFttdWx0aVRlbXBsYXRlRGF0YVJvd3NdPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnMkLnZhbHVlOyBpbmRleCBhcyBpbmRleDsgZmlyc3QgYXMgZmlyc3Q7IGxhc3QgYXMgbGFzdFwiXG4gICAgICAgICAgICAgICAgICBtYXRDb2x1bW5EZWY9XCJ7e2NvbHVtbi5jb2x1bW5JZH19XCI+XG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiIFtjbGFzcy5oaWRlXT1cIiFjb2x1bW4uaXNWaXNpYmxlKClcIj5cbiAgICAgICAgPGF1cC10YWJsZS1oZWFkZXItY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY29sdW1uLmNvbHVtbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3Nlcyhjb2x1bW4uY29sdW1uSWQpXCJcbiAgICAgICAgPjwvYXVwLXRhYmxlLWhlYWRlci1jZWxsPlxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiAoY2xpY2spPVwibm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uLCByb3cpXCJcbiAgICAgICAgICBbY2xhc3MuZW5hYmxlLWN1cnNvcl09XCJ0YWJsZU1vZGVsLmlzQ3Vyc29yRW5hYmxlZEZvclJvdyhjb2x1bW4sIHJvdylcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiXG4gICAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdXAtdGFibGUtY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVNb2RlbF09XCIkYW55KHRhYmxlTW9kZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY29sdW1uLmNvbHVtbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtY2VsbD5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbklkcyQudmFsdWU7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGNvbHVtbklkcyQudmFsdWU7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICBbbmdDbGFzc109XCJ0YWJsZU1vZGVsLmdldFJvd0NsYXNzZXMocm93KVwiXG4gICAgICAgIFtjbGFzcy5lbmFibGUtaG92ZXJdPVwidGFibGVNb2RlbC5pc0hvdmVyRW5hYmxlZEZvclJvdyhyb3cpXCJcbiAgICAgICAgW2F1cFRhYmxlUm93QXR0cmlidXRlc109XCJ0YWJsZU1vZGVsLmdldFJvd0F0dHJpYnV0ZXMocm93KVwiXG4gICAgICAgIFthdHRyLmF1cC1yb3ctaWRdPVwidHJhY2tCeShpLCByb3cpXCJcbiAgICA+PC90cj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvb3RlciBvZiBmb290ZXJSb3dEZWZzJC52YWx1ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2VsbCBvZiBmb290ZXIuY2VsbHNcIiBbbWF0Q29sdW1uRGVmXT1cImNlbGwuZGVmSWRcIj5cbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBbYXR0ci5jb2xzcGFuXT1cImNlbGwuY29sc3BhblwiXG4gICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY2VsbC5jb2x1bW5JZFwiIGNsYXNzPVwiZm9vdGVyLWNlbGxcIj5cbiAgICAgICAgICA8YXVwLXRhYmxlLWZvb3Rlci1yb3cgKm5nSWY9XCIhY2VsbC5maWxsZXJcIiBbY2VsbF09XCJjZWxsXCI+PC9hdXAtdGFibGUtZm9vdGVyLXJvdz5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJmb290ZXIuZGVmSWRzOyBzdGlja3k6IHRydWVcIiBbbmdDbGFzc109XCJmb290ZXIucm93Q2xhc3Nlc1wiXG4gICAgICAgICAgW2NsYXNzLmF1cC1mb290ZXItcm93LWhpZGRlbl09XCJmb290ZXIudmlzaWJsZSQgJiYgIWZvb3Rlci52aXNpYmxlJC52YWx1ZVwiPjwvdHI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICAqbmdJZj1cInNjcm9sbE1vZGUkLnZhbHVlID09PSAndmlydHVhbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0AuZGlzYWJsZWRdPVwiYW5pbWF0aW9uc0Rpc2FibGVkJC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHZzSXRlbVNpemVdPVwicm93SGVpZ2h0JC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVySGVpZ2h0XT1cImhlYWRlckhlaWdodCQudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvb3RlckVuYWJsZWRdPVwiKGZvb3RlclJvd0RlZnMkPy52YWx1ZT8ubGVuZ3RoID8/IDApID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9vdGVySGVpZ2h0XT1cIjQ4ICogKGZvb3RlclJvd0RlZnMkPy52YWx1ZT8ubGVuZ3RoID8/IDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZmZXJNdWx0aXBsaWVyXT1cImJ1ZmZlck11bHRpcGxpZXJcIlxuPlxuICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInZpcnR1YWxTY3JvbGxEYXRhU291cmNlXCIgW3RyYWNrQnldPVwidHJhY2tCeVwiPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnMkLnZhbHVlOyBpbmRleCBhcyBpbmRleDsgZmlyc3QgYXMgZmlyc3Q7IGxhc3QgYXMgbGFzdFwiXG4gICAgICAgICAgICAgICAgICBtYXRDb2x1bW5EZWY9XCJ7e2NvbHVtbi5jb2x1bW5JZH19XCI+XG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiIFtjbGFzcy5oaWRlXT1cIiFjb2x1bW4uaXNWaXNpYmxlKClcIj5cbiAgICAgICAgPGF1cC10YWJsZS1oZWFkZXItY2VsbCBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY29sdW1uLmNvbHVtbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3Nlcyhjb2x1bW4uY29sdW1uSWQpXCJcbiAgICAgICAgPjwvYXVwLXRhYmxlLWhlYWRlci1jZWxsPlxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiAoY2xpY2spPVwibm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uLCByb3cpXCJcbiAgICAgICAgICBbY2xhc3MuZW5hYmxlLWN1cnNvcl09XCJ0YWJsZU1vZGVsLmlzQ3Vyc29yRW5hYmxlZEZvclJvdyhjb2x1bW4sIHJvdylcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiXG4gICAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdXAtdGFibGUtY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVNb2RlbF09XCIkYW55KHRhYmxlTW9kZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY29sdW1uLmNvbHVtbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtY2VsbD5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbklkcyQudmFsdWU7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGNvbHVtbklkcyQudmFsdWU7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICBbbmdDbGFzc109XCJ0YWJsZU1vZGVsLmdldFJvd0NsYXNzZXMocm93KVwiXG4gICAgICAgIFtjbGFzcy5lbmFibGUtaG92ZXJdPVwidGFibGVNb2RlbC5pc0hvdmVyRW5hYmxlZEZvclJvdyhyb3cpXCJcbiAgICAgICAgW2F1cFRhYmxlUm93QXR0cmlidXRlc109XCJ0YWJsZU1vZGVsLmdldFJvd0F0dHJpYnV0ZXMocm93KVwiXG4gICAgICAgIFthdHRyLmF1cC1yb3ctaWRdPVwidHJhY2tCeShpLCByb3cpXCJcbiAgICA+PC90cj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvb3RlciBvZiBmb290ZXJSb3dEZWZzJC52YWx1ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2VsbCBvZiBmb290ZXIuY2VsbHNcIiBbbWF0Q29sdW1uRGVmXT1cImNlbGwuZGVmSWRcIj5cbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBbYXR0ci5jb2xzcGFuXT1cImNlbGwuY29sc3BhblwiXG4gICAgICAgICAgICBbYXR0ci5jb2x1bW4taWRdPVwiY2VsbC5jb2x1bW5JZFwiIGNsYXNzPVwiZm9vdGVyLWNlbGxcIj5cbiAgICAgICAgICA8YXVwLXRhYmxlLWZvb3Rlci1yb3cgKm5nSWY9XCIhY2VsbC5maWxsZXJcIiBbY2VsbF09XCJjZWxsXCI+PC9hdXAtdGFibGUtZm9vdGVyLXJvdz5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJmb290ZXIuZGVmSWRzOyBzdGlja3k6IHRydWVcIiBbbmdDbGFzc109XCJmb290ZXIucm93Q2xhc3Nlc1wiXG4gICAgICAgICAgW2NsYXNzLmF1cC1mb290ZXItcm93LWhpZGRlbl09XCJmb290ZXIudmlzaWJsZSQgJiYgIWZvb3Rlci52aXNpYmxlJC52YWx1ZVwiPjwvdHI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cblxuICA8L3RhYmxlPlxuPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG5cbiJdfQ==
|
|
@@ -6804,8 +6804,14 @@ class TableBodyComponent extends ResizeAwareComponent {
|
|
|
6804
6804
|
columnIds$;
|
|
6805
6805
|
footerRowDefs$;
|
|
6806
6806
|
columnsById$;
|
|
6807
|
-
|
|
6807
|
+
/**
|
|
6808
|
+
* The header row's height, which the virtual scroller offsets its rows by and which pins the header
|
|
6809
|
+
* cells in virtual mode. Taken from --aup-table-header-row-height at init (table.scss sets 48px), so
|
|
6810
|
+
* a table themed with a shorter header scrolls correctly; 48 when the variable can't be read.
|
|
6811
|
+
*/
|
|
6808
6812
|
headerHeight$ = new MutableValueModel(48);
|
|
6813
|
+
// TODO: take the row height from --aup-table-row-height too. Not a drop-in: table.scss sets it to
|
|
6814
|
+
// 40px while virtual rows have always been 44, so following it would shrink every virtual row.
|
|
6809
6815
|
rowHeight$ = new MutableValueModel(44);
|
|
6810
6816
|
baseCssClass = "aup-table-component";
|
|
6811
6817
|
get animationsDisabledClass() { return this.animationsDisabled$.value; }
|
|
@@ -6858,6 +6864,9 @@ class TableBodyComponent extends ResizeAwareComponent {
|
|
|
6858
6864
|
this.resetAnimationsAfterFrame();
|
|
6859
6865
|
}, { initialValue: "evaluate" });
|
|
6860
6866
|
this.onInit(() => {
|
|
6867
|
+
// On init, not after the view: the header height is bound in this view and in a host binding,
|
|
6868
|
+
// and changing it after they are checked would trip ExpressionChangedAfterItHasBeenChecked.
|
|
6869
|
+
this.takeHeaderHeightFromTheme();
|
|
6861
6870
|
this.columns$ = chain(this.tableModel.visibleColumns$);
|
|
6862
6871
|
this.columnIds$ = chain(this.columns$).pluck("columnId");
|
|
6863
6872
|
this.columnsById$ = chain(this.columns$).indexBy('columnId');
|
|
@@ -6931,6 +6940,15 @@ class TableBodyComponent extends ResizeAwareComponent {
|
|
|
6931
6940
|
}
|
|
6932
6941
|
return classes;
|
|
6933
6942
|
}
|
|
6943
|
+
/** Sets [headerHeight$] from --aup-table-header-row-height, keeping the current value when it can't be read. */
|
|
6944
|
+
takeHeaderHeightFromTheme() {
|
|
6945
|
+
this.headerHeight$.value = this.readCssPixels("--aup-table-header-row-height") ?? this.headerHeight$.value;
|
|
6946
|
+
}
|
|
6947
|
+
/** A length custom property as resolved on this element, in px; undefined when unset or not a length. */
|
|
6948
|
+
readCssPixels(property) {
|
|
6949
|
+
const pixels = parseFloat(getComputedStyle(this.elementRef.nativeElement).getPropertyValue(property));
|
|
6950
|
+
return Number.isFinite(pixels) && pixels > 0 ? pixels : undefined;
|
|
6951
|
+
}
|
|
6934
6952
|
scheduleTableHeightCheck(waitMillis = 50) {
|
|
6935
6953
|
setTimeout(() => {
|
|
6936
6954
|
// Use CDK's internal rendered range to detect a broken virtual scroll state —
|