barsa-sap-ui 2.0.127 → 2.0.128
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/layout-wizard/layout-wizard.component.mjs +2 -2
- package/esm2022/lib/sap-ui-report-base.component.mjs +3 -1
- package/esm2022/lib/ui-table-view/ui-table-view.component.mjs +14 -9
- package/esm2022/lib/ui-text-field/ui-text-field.component.mjs +3 -3
- package/fesm2022/barsa-sap-ui.mjs +18 -11
- package/fesm2022/barsa-sap-ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -32,7 +32,7 @@ export class UiTableViewComponent extends ReportViewBaseComponent {
|
|
|
32
32
|
super.ngOnInit();
|
|
33
33
|
const x = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
34
34
|
if (x) {
|
|
35
|
-
this._renderer2.setStyle(this._el.nativeElement, 'width', `${x}px`);
|
|
35
|
+
this._renderer2.setStyle(this._el.nativeElement, 'width', `${x - 10}px`);
|
|
36
36
|
}
|
|
37
37
|
this._portalService.windowResize$.pipe(takeUntil(this._onDestroy$)).subscribe(() => {
|
|
38
38
|
const x = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
@@ -155,19 +155,23 @@ export class UiTableViewComponent extends ReportViewBaseComponent {
|
|
|
155
155
|
this._renderer2.setStyle(this._tableRef.nativeElement, 'width', `100%`);
|
|
156
156
|
}
|
|
157
157
|
_setParentWidthFitToOffsetWidth() {
|
|
158
|
-
|
|
159
|
-
this._renderer2.setStyle(this.
|
|
160
|
-
|
|
158
|
+
const x1 = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
159
|
+
this._renderer2.setStyle(this._el.nativeElement.parentNode, 'width', `${x1}px`);
|
|
160
|
+
const x = Math.floor(this._el.nativeElement.offsetWidth);
|
|
161
|
+
this._renderer2.setStyle(this._tableRef.nativeElement, 'min-width', `${x}px`);
|
|
162
|
+
this._renderer2.setStyle(this._tableRef.nativeElement, 'width', `${x}px`);
|
|
161
163
|
}
|
|
162
164
|
_setParentWidth() {
|
|
163
|
-
|
|
165
|
+
const x = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
166
|
+
this._renderer2.setStyle(this._el.nativeElement.parentNode, 'width', `${x}px`);
|
|
164
167
|
}
|
|
165
168
|
_refreshThWidth() {
|
|
166
169
|
this._calculateColumnsWidth(this.moDataList, this.columns);
|
|
167
170
|
this._tableHeaderComponent?.RefreshTableThWidth();
|
|
168
171
|
}
|
|
169
172
|
_setWidth(setWidth) {
|
|
170
|
-
const widthOfDom = this._el.nativeElement.parentNode.getBoundingClientRect().width;
|
|
173
|
+
const widthOfDom = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
174
|
+
console.log(widthOfDom);
|
|
171
175
|
if (widthOfDom === 0) {
|
|
172
176
|
return;
|
|
173
177
|
}
|
|
@@ -175,8 +179,9 @@ export class UiTableViewComponent extends ReportViewBaseComponent {
|
|
|
175
179
|
this._refreshThWidth();
|
|
176
180
|
}
|
|
177
181
|
this.oldWidth = widthOfDom;
|
|
178
|
-
|
|
179
|
-
this._renderer2.setStyle(this._tableRef.nativeElement, 'width',
|
|
182
|
+
const widthOfDom2 = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
183
|
+
this._renderer2.setStyle(this._tableRef.nativeElement, 'max-width', widthOfDom2 - 10 + 'px');
|
|
184
|
+
this._renderer2.setStyle(this._tableRef.nativeElement, 'width', widthOfDom2 - 10 + 'px');
|
|
180
185
|
}
|
|
181
186
|
_calculateHeaderStickyTop(dom) {
|
|
182
187
|
if (this.stickyEnable() && this.tableHeaderDom) {
|
|
@@ -280,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
280
285
|
type: HostBinding,
|
|
281
286
|
args: ['style.max-height']
|
|
282
287
|
}] } });
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10YWJsZS12aWV3L3VpLXRhYmxlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGFibGUtdmlldy91aS10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUVILHVCQUF1QixFQUV2QixvQkFBb0IsRUFFcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixrQ0FBa0MsRUFDbEMsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixpQ0FBaUMsRUFDcEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7QUFRL0YsTUFBTSxPQUFPLG9CQUNULFNBQVEsdUJBQTJDO0lBUHZEOztRQW9Cb0MsV0FBTSxHQUFrQixJQUFJLENBQUM7UUFDNUIsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDakUsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUdoQixxQkFBZ0IsR0FBbUUsRUFBRSxDQUFDO1FBRXRGLG9CQUFlLEdBQUcsb0JBQW9CLENBQUMsY0FBYyxDQUFDO1FBQ3RELGlCQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVu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b0JBQW9CLHlnQkFJZ0IsVUFBVSxtRkFDNUMseUJBQXlCLDRGQ3pDeEMsbWlkQXdWQTs7MkZEcFRhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDSSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTs4QkFNWSxTQUFTO3NCQUFuRSxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDbkIscUJBQXFCO3NCQUExRCxTQUFTO3VCQUFDLHlCQUF5QjtnQkFDM0IsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDMEIsTUFBTTtzQkFBckMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBQ0csU0FBUztzQkFBekMsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBzaWduYWwsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBSZXBvcnRWaWV3QmFzZUNvbXBvbmVudCxcbiAgICBSZXBvcnRWaWV3Q29sdW1uLFxuICAgIFRhYmxlSGVhZGVyV2lkdGhNb2RlLFxuICAgIENvbHVtblJlc2l6ZWRBcmdzLFxuICAgIGNhbGNDb250ZXh0TWVudVdpZHRoLFxuICAgIGNhbGN1bGF0ZUNvbHVtbldpZHRoLFxuICAgIGNhbGN1bGF0ZUNvbHVtbldpZHRoRml0VG9Db250YWluZXIsXG4gICAgY2FsY3VsYXRlRnJlZUNvbHVtblNpemUsXG4gICAgY2FsY3VsYXRlQ29sdW1uQ29udGVudCxcbiAgICBzZXRDb2x1bW5XaWR0aEJ5TWF4TW9Db250ZW50V2lkdGhcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgVWlUYWJsZVZpZXdTZXR0aW5nIH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtdmlldyc7XG5pbXBvcnQgeyBCYXJzYVRhYmxlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFyc2EtdGFibGUtaGVhZGVyL2JhcnNhLXRhYmxlLWhlYWRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS11aS10YWJsZS12aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktdGFibGUtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktdGFibGUtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVpVGFibGVWaWV3Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBSZXBvcnRWaWV3QmFzZUNvbXBvbmVudDxVaVRhYmxlVmlld1NldHRpbmc+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlc1xue1xuICAgIEBWaWV3Q2hpbGQoJ3RhYmxlVHBsJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgX3RhYmxlUmVmOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoQmFyc2FUYWJsZUhlYWRlckNvbXBvbmVudCkgX3RhYmxlSGVhZGVyQ29tcG9uZW50OiBCYXJzYVRhYmxlSGVhZGVyQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpIGNvbHVtbldpZHRoOiBudW1iZXI7XG4gICAgQElucHV0KCkgbWluV2lkdGg7XG4gICAgQElucHV0KCkgbWluSGVpZ2h0O1xuICAgIEBJbnB1dCgpIGRpc2FibGVSZXNpemU7XG4gICAgQElucHV0KCkgZGlzYWJsZUhlYWRlckNvbnRleHRNZW51O1xuICAgIEBJbnB1dCgpIHJvd1Jlc2l6ZXI7XG4gICAgQElucHV0KCkgZW5hYmxlUmVzaXppbmc7XG4gICAgQElucHV0KCkgZGlzYWJsZUZpeGVkVGFibGVMYXlvdXQ7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQucHgnKSBoZWlnaHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LWhlaWdodCcpIG1heEhlaWdodDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgX3dpZHRoID0gJzEwMCUnO1xuICAgIHNob3dEZXRhaWxzSW5Sb3c6IGJvb2xlYW47XG4gICAgaGFzUm93T2xnbzogYm9vbGVhbjtcbiAgICBjb2x1bW5Db21wb25lbnRzOiB7IGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjsgY29tcG9uZW50OiBNZXRhb2JqZWN0RGF0YU1vZGVsIH1bXSA9IFtdO1xuICAgIHJvd0luZGljYXRvcjogYm9vbGVhbjtcbiAgICB0YWJsZUhlYWRlck1vZGUgPSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb0NvbnRhaW5lcjtcbiAgICBzdGlja3lFbmFibGUgPSBzaWduYWwoZmFsc2UpO1xuICAgIHJvd1Zpc2liaWx0eUNoYW5nZSA9IHNpZ25hbChmYWxzZSk7XG4gICAgdGFibGVIZWFkZXJEb206IEhUTUxFbGVtZW50O1xuICAgIF9oZWFkZXJUb3AkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIHJvd1Zpc2libGUkID0gbmV3IFN1YmplY3Q8eyBpbmRleDsgZG9tIH0+KCk7XG4gICAgX2lzUGFyZW50V2lkdGhTZXQgPSBmYWxzZTtcbiAgICB0YWJsZUhlYWRlclRvcCA9IDA7XG4gICAgdGFibGVIZWFkZXJIZWlnaHQgPSAwO1xuICAgIGhlYWRlck9ic2VydmVyRG9tOiBIVE1MRWxlbWVudDtcbiAgICBub3RWaXNpYmxlSXRlbXM6IG51bWJlcltdID0gW107XG4gICAgdmlzaWJsZUl0ZW1zOiBudW1iZXJbXSA9IFtdO1xuICAgIG9sZFdpZHRoID0gMDtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBjb25zdCB4ID0gTWF0aC5mbG9vcih0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuICAgICAgICBpZiAoeCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3h9cHhgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLndpbmRvd1Jlc2l6ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB4ID0gTWF0aC5mbG9vcih0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIHggKyAncHgnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnbWF4LXdpZHRoJywgeCArICdweCcpO1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFRoV2lkdGgoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaGFzUm93T2xnbyA9IHRoaXMudmlld1NldHRpbmc/LlJvd09sZ28/LlNlbGVjdG9yO1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMudmlld1NldHRpbmc/LkJvZHlIZWlnaHQ7XG4gICAgICAgIHRoaXMuX3NldEhhc1N1bW1lcnkodGhpcy5jYXJ0YWJsZUNoaWxkc01vKTtcbiAgICAgICAgdGhpcy5fc2V0SGVpZ2h0KHRoaXMucGFyZW50SGVpZ2h0KTtcbiAgICAgICAgdGhpcy5fc2V0V2lkdGgoKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29sdW1uc1dpZHRoKHRoaXMubW9EYXRhTGlzdCwgdGhpcy5jb2x1bW5zKTtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlck1vZGUgPSB0aGlzLmdyaWRGcmVlQ29sdW1uU2l6aW5nXG4gICAgICAgICAgICA/IFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplXG4gICAgICAgICAgICA6IFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZpdFRvQ29udGFpbmVyO1xuICAgICAgICB0aGlzLl9jYWxjQ29udGV4dE1lbnVXaWR0aCh0aGlzLmNvbnRleHRNZW51SXRlbXMpO1xuICAgIH1cblxuICAgIF9jYWxjQ29udGV4dE1lbnVXaWR0aChjb250ZXh0TWVudUl0ZW1zKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVXaWR0aCA9IGNhbGNDb250ZXh0TWVudVdpZHRoKGNvbnRleHRNZW51SXRlbXMsIHRoaXMuZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnUpO1xuICAgIH1cbiAgICBvblRhYmxlVmlzaWJpbGl0eUNoYW5nZShlLCBkb20pOiB2b2lkIHtcbiAgICAgICAgaWYgKGUgPT09ICdWaXNpYmxlJykge1xuICAgICAgICAgICAgdGhpcy5fc2V0V2lkdGgodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgY2FydGFibGVUZW1wbGF0ZXMsIHBhcmVudEhlaWdodCwgY29udGV4dE1lbnVJdGVtcywgY29sdW1uc0NvdW50LCBjb2x1bW5zLCBzZWNvbmRhcnlDb2x1bW5zIH0gPSBjaGFuZ2VzO1xuICAgICAgICBpZiAoY29udGV4dE1lbnVJdGVtcyAmJiAhY29udGV4dE1lbnVJdGVtcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5fY2FsY0NvbnRleHRNZW51V2lkdGgoY29udGV4dE1lbnVJdGVtcy5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FydGFibGVUZW1wbGF0ZXMgJiYgIWNhcnRhYmxlVGVtcGxhdGVzLmZpcnN0Q2hhbmdlICYmICF0aGlzLmhhc1N1bW1hcnkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEhhc1N1bW1lcnkoY2FydGFibGVUZW1wbGF0ZXMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGNvbHVtbnNDb3VudCAmJiAhY29sdW1uc0NvdW50LmZpcnN0Q2hhbmdlKSB8fCAoc2Vjb25kYXJ5Q29sdW1ucyAmJiAhc2Vjb25kYXJ5Q29sdW1ucy5maXJzdENoYW5nZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIGNvbHVtbnMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyZW50SGVpZ2h0ICYmICFwYXJlbnRIZWlnaHQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEhlaWdodChwYXJlbnRIZWlnaHQuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICB9XG4gICAgb25Db2x1bW5SZXNpemluZyhlOiB7IGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjsgd2lkdGg6IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9UaFdpZHRoKCk7XG4gICAgICAgIHRoaXMuX3NldFBhcmVudFdpZHRoKCk7XG4gICAgfVxuICAgIG9uQ29sdW1uUmVzaXplZChhcnI6IEFycmF5PENvbHVtblJlc2l6ZWRBcmdzPik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFibGVIZWFkZXJNb2RlID09PSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GcmVlQ29sdW1uU2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQuU2V0Q29sdW1uV2lkdGhUb1RoV2lkdGgoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9QZXJjZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQuUmVmcmVzaFRhYmxlVGhXaWR0aCgpO1xuICAgICAgICB0aGlzLnJlc2l6ZWRCeVVzZXIgPSB0cnVlO1xuXG4gICAgICAgIC8vIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZShsYXN0VGgsICd3aWR0aCcsIGAxMDAlYCk7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplZC5lbWl0KHsgY29sdW1uczogdGhpcy5jb2x1bW5zLCByZXNpemVkOiBhcnIgfSk7XG4gICAgfVxuICAgIG9uRml0VG9Db250YWluZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db250YWluZXI7XG4gICAgICAgIHRoaXMuX3NldFBhcmVudFdpZHRoRml0KCk7XG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9QZXJjZW50KCk7XG4gICAgICAgIC8vIHRoaXMuX3JlZnJlc2hUaFdpZHRoKCk7XG4gICAgICAgIC8vIHRoaXMuX2ZpcmVSZXNpemVDaGFuZ2VkKCk7XG4gICAgfVxuICAgIG9uRnJlZUNvbHVtblNpemluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlck1vZGUgPSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GcmVlQ29sdW1uU2l6ZTtcbiAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQuU2V0Q29sdW1uV2lkdGhUb1RoV2lkdGgoKTtcbiAgICAgICAgdGhpcy5fc2V0UGFyZW50V2lkdGhGaXRUb09mZnNldFdpZHRoKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY29sdW1ucyk7XG4gICAgfVxuICAgIG9uRml0VG9Db250ZW50KGU6IHsgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uOyB0aERvbTogSFRNTFRhYmxlQ2VsbEVsZW1lbnQgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGNvbHVtbiwgdGhEb20gfSA9IGU7XG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemU7XG4gICAgICAgIHNldENvbHVtbldpZHRoQnlNYXhNb0NvbnRlbnRXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIGNvbHVtbik7XG4gICAgICAgIGNvbHVtbi4kV2lkdGggPSBjb2x1bW4uJENvbnRlbnRXaWR0aDtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoRG9tLCAnd2lkdGgnLCBjb2x1bW4uJFdpZHRoKTtcbiAgICAgICAgdGhpcy5fZmlyZVJlc2l6ZUNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBvblNldFRhYmxlSGVhZGVyRG9tKGRvbSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyRG9tID0gZG9tO1xuICAgICAgICBjb25zdCByZWN0ID0gZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyVG9wID0gcmVjdC50b3A7XG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJIZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICB9XG4gICAgb25IZWFkZXJWaXNpYmlsaXR5Q2hhbmdlKGUsIGRvbSk6IHZvaWQge1xuICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuaGVhZGVyT2JzZXJ2ZXJEb20gPSBkb207XG4gICAgICAgIGlmIChlID09PSAnTm90VmlzaWJsZScpIHtcbiAgICAgICAgICAgIHRoaXMuc3RpY2t5RW5hYmxlLnNldCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RpY2t5RW5hYmxlLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJvd1Zpc2liaWxpdHlDaGFuZ2UoZSwgaW5kZXgsIGRvbSk6IHZvaWQge1xuICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChlICE9PSAnUGVuZGluZycpIHtcbiAgICAgICAgICAgIGlmIChlID09PSAnTm90VmlzaWJsZScpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlSXRlbXMuaW5kZXhPZihpbmRleCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93VmlzaWJsZSQubmV4dCh7IGluZGV4LCBkb20gfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy52aXNpYmxlSXRlbXMuZmlsdGVyKChjKSA9PiBjICE9PSBpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubm90VmlzaWJsZUl0ZW1zLnB1c2goaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUgPT09ICdWaXNpYmxlJykge1xuICAgICAgICAgICAgICAgIHRoaXMubm90VmlzaWJsZUl0ZW1zID0gdGhpcy5ub3RWaXNpYmxlSXRlbXMuZmlsdGVyKChjKSA9PiBjICE9PSBpbmRleCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVJdGVtcy5wdXNoKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRoaXMucm93VmlzaWJsZSQubmV4dCh7IGluZGV4LCBkb20gfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0UGFyZW50V2lkdGhGaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsICd3aWR0aCcsIGAxMDAlYCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnbWluLXdpZHRoJywgYDEwMCVgKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAxMDAlYCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldFBhcmVudFdpZHRoRml0VG9PZmZzZXRXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKFxuICAgICAgICAgICAgdGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLFxuICAgICAgICAgICAgJ3dpZHRoJyxcbiAgICAgICAgICAgIGAke3RoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1weGBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICdtaW4td2lkdGgnLCBgJHt0aGlzLl9lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofXB4YCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCBgJHt0aGlzLl9lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofXB4YCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldFBhcmVudFdpZHRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUoXG4gICAgICAgICAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsXG4gICAgICAgICAgICAnd2lkdGgnLFxuICAgICAgICAgICAgYCR7dGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4YFxuICAgICAgICApO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZWZyZXNoVGhXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29sdW1uc1dpZHRoKHRoaXMubW9EYXRhTGlzdCwgdGhpcy5jb2x1bW5zKTtcbiAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQ/LlJlZnJlc2hUYWJsZVRoV2lkdGgoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0V2lkdGgoc2V0V2lkdGg/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdpZHRoT2ZEb20gPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGlmICh3aWR0aE9mRG9tID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdpZHRoT2ZEb20gIT09IHRoaXMub2xkV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hUaFdpZHRoKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbGRXaWR0aCA9IHdpZHRoT2ZEb207XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZShcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAnbWF4LXdpZHRoJyxcbiAgICAgICAgICAgIHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCArICdweCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIHdpZHRoT2ZEb20gKyAncHgnKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlSGVhZGVyU3RpY2t5VG9wKGRvbTogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RpY2t5RW5hYmxlKCkgJiYgdGhpcy50YWJsZUhlYWRlckRvbSkge1xuICAgICAgICAgICAgLy8gY29uc3QgcmVjID0gdGhpcy5oZWFkZXJPYnNlcnZlckRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIC8vIGNvbnN0IHRvcCA9IHJlYy50b3A7XG4gICAgICAgICAgICAvLyBjb25zdCBjYWxjID0gdGhpcy50YWJsZUhlYWRlclRvcCAtIHRvcCAtIHRoaXMudGFibGVIZWFkZXJIZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgY29uc3QgcmVjID0gZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICB0aGlzLl9oZWFkZXJUb3AkLm5leHQocmVjLnRvcCAtIDEyICsgdGhpcy50YWJsZUhlYWRlckhlaWdodCArICdweCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9maXJlUmVzaXplQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb2x1bW5SZXNpemVkLmVtaXQoe1xuICAgICAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxuICAgICAgICAgICAgcmVzaXplZDogdGhpcy5jb2x1bW5zLm1hcCgoYykgPT4gKHsgbmFtZTogYy5OYW1lLCB3aWR0aDogYy5XaWR0aCB9KSlcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY2FsY3VsYXRlQ29sdW1uc1dpZHRoKG1vRGF0YUxpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSwgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50YWJsZUhlYWRlck1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemU6XG4gICAgICAgICAgICAgICAgdGhpcy5fZnJlZUNvbHVtblNpemUobW9EYXRhTGlzdCwgY29sdW1ucyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZpdFRvUm93Q29udGVudDpcbiAgICAgICAgICAgICAgICB0aGlzLl9maXRUb1Jvd0NvbnRlbnRDb2x1bW4obW9EYXRhTGlzdCwgY29sdW1ucyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZpdFRvQ29udGFpbmVyOlxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpdFRvQ29udGFpbmVyKG1vRGF0YUxpc3QsIGNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZml0VG9Db2x1bW4obW9EYXRhTGlzdCwgY29sdW1ucyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbERvbSA9IHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNhbGN1bGF0ZUNvbHVtbldpZHRoKGVsRG9tLCBjb2x1bW5zLCBtb0RhdGFMaXN0LCB0aGlzLmRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51LCB0aGlzLmNvbnRleHRNZW51SXRlbXMpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2ZpdFRvUm93Q29udGVudENvbHVtbihtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sIGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSk6IHZvaWQge1xuICAgICAgICBjYWxjdWxhdGVDb2x1bW5Db250ZW50KGNvbHVtbnMsIG1vRGF0YUxpc3QpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2ZpdFRvQ29udGFpbmVyKG1vRGF0YUxpc3QsIGNvbHVtbnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxEb20gPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNhbGN1bGF0ZUNvbHVtbldpZHRoRml0VG9Db250YWluZXIoXG4gICAgICAgICAgICBlbERvbSxcbiAgICAgICAgICAgIHRoaXMuY2FuVmlldyxcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZUhlYWRlckNvbnRleHRNZW51LFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0TWVudUl0ZW1zLFxuICAgICAgICAgICAgdGhpcy5jb2x1bW5zXG4gICAgICAgICk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZnJlZUNvbHVtblNpemUobW9EYXRhTGlzdCwgY29sdW1ucyk6IHZvaWQge1xuICAgICAgICBjYWxjdWxhdGVGcmVlQ29sdW1uU2l6ZSh0aGlzLmNvbHVtbnMpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldEhlaWdodChwYXJlbnRIZWlnaHQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbkRpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBwYXJlbnRIZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zZXRIYXNTdW1tZXJ5KGNhcnRhYmxlVGVtcGxhdGVzKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsc0NvbHVtbnM/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsc0NvbXBvbmVudD8uU2VsZWN0b3IgfHxcbiAgICAgICAgICAgIChjYXJ0YWJsZVRlbXBsYXRlcyAmJiBPYmplY3Qua2V5cyhjYXJ0YWJsZVRlbXBsYXRlcykubGVuZ3RoID4gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dEZXRhaWxzSW5Sb3cgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5oYXNEZXRhaWxzSW5Sb3cuZW1pdCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFzRGV0YWlsc0luUm93LmVtaXQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY29udGFpbmVyV2lkdGhDaGFuZ2VkKHZhbDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWwgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3dpZHRoID0gJzEwMCUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fd2lkdGggPSB2YWwgPyB2YWwgKyAncHgnIDogJzEwMCUnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB0aGlzLl93aWR0aCk7XG4gICAgfVxufVxuIiwiPHRhYmxlXG4gICAgZmQtdGFibGVcbiAgICAjdGFibGVUcGxcbiAgICAjaGVhZGVyQm90dG9tT2JzZXJ2ZXJcbiAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxuICAgIFtpbnRlcnNlY3Rpb25UaHJlc2hvbGRdPVwiMC4xXCJcbiAgICAodmlzaWJpbGl0eUNoYW5nZSk9XCJvblRhYmxlVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQsIGhlYWRlckJvdHRvbU9ic2VydmVyKVwiXG4gICAgW3BvcEluXT1cInBvcGluXCJcbiAgICBbY2xhc3MudGFibGUtZml4ZWRdPVwiXG4gICAgICAgICFjb250ZXh0Vmlldz8uR3JpZF9IaWRlSGVhZGVyICYmICghcG9waW4gfHwgc2Vjb25kYXJ5Q29sdW1ucy5sZW5ndGggPT09IDApICYmICFkaXNhYmxlRml4ZWRUYWJsZUxheW91dFxuICAgIFwiXG4gICAgW25vQm9yZGVyWF09XCJ2aWV3U2V0dGluZz8uTm9Ib3JpenRvbmFsQm9yZGVycyA9PT0gdHJ1ZVwiXG4gICAgW25vQm9yZGVyWV09XCJ2aWV3U2V0dGluZz8uTm9WZXJ0aWNhbEJvcmRlcnMgPT09IHRydWUgfHwgKHBvcGluICYmIHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID4gMClcIlxuPlxuICAgIEBpZiAoY29sdW1ucyB8IG1lcmdlRmllbGRzVG9Db2x1bW5zOiB2aWV3U2V0dGluZz8uTWVyZ2VGaWVsZHNUb0NvbHVtbnM/Lk1vRGF0YUxpc3Q7IGFzIG1lcmdlRmllbGRzVG9Db2x1bW5zKSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgaGVhZGVyVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogbWVyZ2VGaWVsZHNUb0NvbHVtbnMsIG1vRGF0YUxpc3RDb3VudDogbW9EYXRhTGlzdD8ubGVuZ3RoIH1cbiAgICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gICAgQGlmIChtb0RhdGFMaXN0Py5sZW5ndGgpIHtcbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBib2R5VGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogbWVyZ2VGaWVsZHNUb0NvbHVtbnMsIHByZXZpZXdDb2x1bW46IGFsbENvbHVtbnMgfCBmaW5kUHJldmlld0NvbHVtbiB9XG4gICAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IH1cbjwvdGFibGU+XG48IS0tcmVuZGVyQ29sdW1uLS0+XG5cbkBpZiAoIW1vRGF0YUxpc3Q/Lmxlbmd0aCkge1xuPGJzdS1uby1kYXRhXG4gICAgW2NsYXNzLm5vLXRvcGJvcmRlcl09XCIhaGlkZVRvb2xiYXJcIlxuICAgIFtjbGFzcy5ub2JvcmRlcl09XCJjb250ZXh0Vmlldy5HcmlkX0hpZGVIZWFkZXIgJiYgaGlkZVRvb2xiYXJcIlxuICAgIFtzaW1wbGVdPVwidHJ1ZVwiXG4+XG48L2JzdS1uby1kYXRhPlxufVxuXG48bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlIGxldC1jb2x1bW5zIGxldC1tb0RhdGFMaXN0Q291bnQ+XG4gICAgPGJzdS1iYXJzYS10YWJsZS1oZWFkZXJcbiAgICAgICAgW3N0aWNreV09XCJzdGlja3lFbmFibGUoKVwiXG4gICAgICAgIFtoYXNTZWNvbmRhcnlDb2x1bW5zXT1cInNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID4gMFwiXG4gICAgICAgIFtjbGFzcy5oYXMtdG9vbGJhcl09XCIhaGlkZVRvb2xiYXJcIlxuICAgICAgICBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwibW9EYXRhTGlzdENvdW50ID8gJ2F1dG8nIDogJ25vbmUnXCJcbiAgICAgICAgW3RhYmxlV2lkdGhdPVwiZWxXaWR0aFwiXG4gICAgICAgIFtzaG93RGV0YWlsc0luUm93XT1cInNob3dEZXRhaWxzSW5Sb3dcIlxuICAgICAgICBbaGlkZU9wZW5JY29uXT1cImhpZGVPcGVuSWNvblwiXG4gICAgICAgIFtyZXNpemVkQnlVc2VyXT1cInJlc2l6ZWRCeVVzZXJcIlxuICAgICAgICBbdGFibGVIZWFkZXJNb2RlXT1cInRhYmxlSGVhZGVyTW9kZVwiXG4gICAgICAgIFtzaG93Um93TnVtYmVyXT1cImNvbnRleHRWaWV3Py5HcmlkX1Nob3dSb3dOdW1iZXJcIlxuICAgICAgICBbYWxsQ2hlY2tlZF09XCJhbGxDaGVja2VkXCJcbiAgICAgICAgW3J0bF09XCJydGxcIlxuICAgICAgICBbYWN0aW9uTGlzdF09XCJhY3Rpb25MaXN0XCJcbiAgICAgICAgW2Rpc2FibGVSZXNwb25zaXZlXT1cImRpc2FibGVSZXNwb25zaXZlXCJcbiAgICAgICAgW2lzQ2hlY2tMaXN0XT1cImlzQ2hlY2tMaXN0XCJcbiAgICAgICAgW2NvbHVtbnNdPVwiXG4gICAgICAgICAgICBjb2x1bW5zXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXJDb2x1bW5zQnlEZXRhaWxzOiBkZXRhaWxzQ29sdW1uczpyb3dJbmRpY2F0b3JcbiAgICAgICAgICAgICAgICB8IGZpbHRlcjogeyBJc1ByZXZpZXc6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICB8IGhpZGVDb2x1bW5zSW5tb2JpbGU6IHZpZXdTZXR0aW5nPy5IaWRlQ29sdW1uc0luTW9iaWxlXG4gICAgICAgIFwiXG4gICAgICAgIFtmaXRXaWR0aF09XCJmaXRXaWR0aFwiXG4gICAgICAgIFtkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudV09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudVwiXG4gICAgICAgIFtpbmxpbmVFZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICBbY29udGV4dE1lbnVXaWR0aF09XCJjb250ZXh0TWVudVdpZHRoXCJcbiAgICAgICAgW3Nob3dWaWV3QnV0dG9uXT1cInNob3dWaWV3QnV0dG9uXCJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgIFt2aWV3U2V0dGluZ109XCJ2aWV3U2V0dGluZ1wiXG4gICAgICAgIFtoaWRlSGVhZGVyXT1cImNvbnRleHRWaWV3LkdyaWRfSGlkZUhlYWRlclwiXG4gICAgICAgIFtyb3dJbmRpY2F0b3JdPVwicm93SW5kaWNhdG9yXCJcbiAgICAgICAgW2Rpc2FibGVSZXNpemVdPVwiZGlzYWJsZVJlc2l6ZVwiXG4gICAgICAgIFtkaXNhYmxlSGVhZGVyQ29udGV4dE1lbnVdPVwiZGlzYWJsZUhlYWRlckNvbnRleHRNZW51XCJcbiAgICAgICAgKGhlYWRlclJlbmRlcik9XCJvblNldFRhYmxlSGVhZGVyRG9tKCRldmVudClcIlxuICAgICAgICAoY29sdW1uUmVzaXplKT1cIm9uQ29sdW1uUmVzaXplZCgkZXZlbnQpXCJcbiAgICAgICAgKGNvbHVtblJlc2l6aW5nKT1cIm9uQ29sdW1uUmVzaXppbmcoJGV2ZW50KVwiXG4gICAgICAgIChmaXRUb0NvbnRlbnQpPVwib25GaXRUb0NvbnRlbnQoJGV2ZW50KVwiXG4gICAgICAgIChmaXRUb0NvbnRhaW5lcik9XCJvbkZpdFRvQ29udGFpbmVyKClcIlxuICAgICAgICAoZnJlZUNvbHVtblNpemUpPVwib25GcmVlQ29sdW1uU2l6aW5nKClcIlxuICAgICAgICAoYWxsQ2hlY2tib3gpPVwib25BbGxDaGVja2JveCgkZXZlbnQpXCJcbiAgICAgICAgKHNvcnRBc2NlbmRpbmcpPVwib25Tb3J0QXNjZW5kaW5nKCRldmVudClcIlxuICAgICAgICAoc29ydERlc2NlbmRpbmcpPVwib25Tb3J0RGVzY2VuZGluZygkZXZlbnQpXCJcbiAgICAgICAgKGZpbHRlcik9XCJvbkZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgKHJlc2V0R3JpZFNldHRpbmdzKT1cInJlc2V0R3JpZFNldHRpbmdzLmVtaXQoKVwiXG4gICAgPjwvYnN1LWJhcnNhLXRhYmxlLWhlYWRlcj5cbiAgICA8IS0tIDxkaXZcbiAgICAgICAgI2hlYWRlckJvdHRvbU9ic2VydmVyXG4gICAgICAgIGludGVyc2VjdGlvbk9ic2VydmVyXG4gICAgICAgIFtpbnRlcnNlY3Rpb25UaHJlc2hvbGRdPVwiMC4xXCJcbiAgICAgICAgKHZpc2liaWxpdHlDaGFuZ2UpPVwib25IZWFkZXJWaXNpYmlsaXR5Q2hhbmdlKCRldmVudCwgaGVhZGVyQm90dG9tT2JzZXJ2ZXIpXCJcbiAgICA+PC9kaXY+IC0tPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjYm9keVRlbXBsYXRlIGxldC1jb2x1bW5zIGxldC1wcmV2aWV3Q29sdW1uPVwicHJldmlld0NvbHVtblwiPlxuICAgIDx0Ym9keVxuICAgICAgICAjYm9keVxuICAgICAgICBmZC10YWJsZS1ib2R5XG4gICAgICAgIFtjbGFzcy5ub2JvcmRlcl09XCJ2aWV3U2V0dGluZz8uTm9Cb2R5Qm9yZGVycyA9PT0gdHJ1ZVwiXG4gICAgICAgIFtub0JvcmRlclhdPVwidmlld1NldHRpbmc/Lk5vSG9yaXp0b25hbEJvcmRlcnMgPT09IHRydWUgfHwgcHJldmlld0NvbHVtblwiXG4gICAgICAgIFtub0JvcmRlclldPVwiKHBvcGluICYmIHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID4gMCkgfHwgcHJldmlld0NvbHVtblwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgQGZvciAobW8gb2YgbW9EYXRhTGlzdCB8IG11bHRpcGxlR3JvdXBCeTogZ3JvdXBieTsgdHJhY2sgX3RyYWNrQnlSb3coaW5kZXgsIG1vKTsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgaGFzUm93T2xnbyA/IHJvd09sZ29UZW1wbGF0ZSA6IHJvd1RlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IG1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93TnVtYmVyOiBtby5JZCB8IHJvd051bWJlcjogcGFnaW5nU2V0dGluZzptb0RhdGFMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93SW5kaWNhdG9yQ29sb3I6ICFjb2x1bW5zLmxlbmd0aCA/ICcnIDogKGNvbHVtbnNbMF0uQ2FwdGlvbiB8IHJ2YWw6IG1vOmNvbHVtbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogY29sdW1ucyB8IGNvbHVtbkN1c3RvbUNvbXBvbmVudDogdmlld1NldHRpbmc/LkNvbHVtbkNvbXBvbmVudHM/Lk1vRGF0YUxpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlDb2x1bW5zOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZGFyeUNvbHVtbnMgfCBjb2x1bW5DdXN0b21Db21wb25lbnQ6IHZpZXdTZXR0aW5nPy5Db2x1bW5Db21wb25lbnRzPy5Nb0RhdGFMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9EYXRhTGlzdDogbW9EYXRhTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vRGF0YUxpc3RDb3VudDogbW9EYXRhTGlzdC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlOiBjYXJ0YWJsZVRlbXBsYXRlc1ttby5SZWxhdGVkTW8/LiRUeXBlRGVmSWQgKyAnQCcgKyBtby5DYXJ0YWJsZVNldHRpbmdzPy5JZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3Q29sdW1uOiBwcmV2aWV3Q29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc0NvbGxhcHNlZDogdmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5EZXRhaWxzQ29sbGFwc2VkID09PSB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZURldGFpbHNUZXh0OiB2aWV3U2V0dGluZz8uRGV0YWlsc1NldHRpbmc/LkhpZGVEZXRhaWxzVGV4dCA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90Ym9keT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlIGxldC1jb2x1bW5zPlxuICAgIEBpZiAoaGFzU3VtbWFyeSkge1xuICAgIDx0Zm9vdCBmZC10YWJsZS1mb290ZXI+XG4gICAgICAgIDx0ciBmZC10YWJsZS1yb3cgY2xhc3M9XCJyb3ctc3VtbWFyeVwiPlxuICAgICAgICAgICAgQGlmIChpc0NoZWNrTGlzdCkge1xuICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgY29sdW1uUmVzaXplcj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiY29sLXRvdGFsLXRleHRcIj57eyAnVG90YWwnIHwgYmJiVHJhbnNsYXRlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfSBAaWYgKCFpc0NoZWNrTGlzdCkge1xuICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgY2xhc3M9XCJzaW5nbGUtc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImNvbC10b3RhbC10ZXh0XCI+e3sgJ1RvdGFsJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIH0gQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIGNvbHVtbjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5IYXNTdW1tYXJ5KSB7XG4gICAgICAgICAgICAgICAgPHN0cm9uZyBzdHlsZT1cImRpcmVjdGlvbjogbHRyOyBkaXNwbGF5OiBibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtb0RhdGFMaXN0IHwgdG90YWxTdW1tYXJ5OiBjb2x1bW4uTmFtZSB8IG51bWJlciB9fTwvc3Ryb25nXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9IEBpZiAoY29udGV4dE1lbnVJdGVtcyAmJiBjb250ZXh0TWVudUl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIHN0eWxlPVwid2lkdGg6IDEwMHB4XCI+PC90ZD5cbiAgICAgICAgICAgIH0gQGlmICghaGlkZU9wZW5JY29uICYmIGNhblZpZXcgJiYgKCFpbmxpbmVFZGl0TW9kZSB8fCAhYWxsb3dJbmxpbmVFZGl0KSkge1xuICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGw+PC90ZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC90cj5cbiAgICA8L3Rmb290PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGVcbiAgICAjcm93T2xnb1RlbXBsYXRlXG4gICAgbGV0LW1vXG4gICAgbGV0LWluZGV4PVwiaW5kZXhcIlxuICAgIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXG4gICAgbGV0LW1vRGF0YUxpc3RDb3VudD1cIm1vRGF0YUxpc3RDb3VudFwiXG4gICAgbGV0LW1vRGF0YUxpc3Q9XCJtb0RhdGFMaXN0XCJcbiAgICBsZXQtY2FydGFibGVUZW1wbGF0ZT1cImNhcnRhYmxlVGVtcGxhdGVcIlxuICAgIGxldC1zZWNvbmRhcnlDb2x1bW5zPVwic2Vjb25kYXJ5Q29sdW1uc1wiXG4gICAgbGV0LXJvd0luZGljYXRvckNvbG9yPVwicm93SW5kaWNhdG9yQ29sb3JcIlxuICAgIGxldC1yb3dOdW1iZXI9XCJyb3dOdW1iZXJcIlxuICAgIGxldC1wcmV2aWV3Q29sdW1uPVwicHJldmlld0NvbHVtblwiXG4gICAgbGV0LWRldGFpbHNDb2xsYXBzZWQ9XCJkZXRhaWxzQ29sbGFwc2VkXCJcbiAgICBsZXQtaGlkZURldGFpbHNUZXh0PVwiaGlkZURldGFpbHNUZXh0XCJcbj5cbiAgICA8Ym5yYy1keW5hbWljLWl0ZW0tY29tcG9uZW50XG4gICAgICAgIFtjb21wb25lbnRdPVwidmlld1NldHRpbmcuUm93T2xnb1wiXG4gICAgICAgIFttb109XCJtb1wiXG4gICAgICAgIFtkZXRhaWxzQ29sbGFwc2VkXT1cImRldGFpbHNDb2xsYXBzZWRcIlxuICAgICAgICBbaGlkZURldGFpbHNUZXh0XT1cImhpZGVEZXRhaWxzVGV4dFwiXG4gICAgICAgIFtpc0xhc3RDaGlsZEdyb3VwXT1cIm1vLiRJc0xhc3RDaGlsZEdyb3VwXCJcbiAgICAgICAgW2dyb3VwU3VtbWFyeV09XCJncm91cFN1bW1hcnlcIlxuICAgICAgICBbc2hvd1ZpZXdCdXR0b25dPVwic2hvd1ZpZXdCdXR0b25cIlxuICAgICAgICBbVWx2TWFpbkN0cmxyXT1cIlVsdk1haW5DdHJsclwiXG4gICAgICAgIFttb0RhdGFMaXN0XT1cIm1vRGF0YUxpc3RcIlxuICAgICAgICBbc2hvd0RldGFpbHNJblJvd109XCJzaG93RGV0YWlsc0luUm93XCJcbiAgICAgICAgW2hpZGVPcGVuSWNvbl09XCJoaWRlT3Blbkljb25cIlxuICAgICAgICBbZGV0YWlsc0NvbHVtbnNdPVwiZGV0YWlsc0NvbHVtbnNcIlxuICAgICAgICBbc2hvd1Jvd051bWJlcl09XCJjb250ZXh0Vmlldz8uR3JpZF9TaG93Um93TnVtYmVyXCJcbiAgICAgICAgW3Jvd051bWJlcl09XCJyb3dOdW1iZXJcIlxuICAgICAgICBbY29sdW1uQ29tcG9uZW50c109XCJ2aWV3U2V0dGluZz8uQ29sdW1uQ29tcG9uZW50cyB8fCBudWxsXCJcbiAgICAgICAgW2NhcnRhYmxlVGVtcGxhdGVdPVwiY2FydGFibGVUZW1wbGF0ZVwiXG4gICAgICAgIFtjYXJ0YWJsZU1vXT1cIm1vLlJlbGF0ZWRNb1wiXG4gICAgICAgIFtkaXJ0eUNvbHVtbnNdPVwibW8uJERpcnR5Q29sdW1uc1wiXG4gICAgICAgIFtjYXJ0YWJsZVdvcmtmbG93RGF0YV09XCJtby5TZXJpYWxpemVkV29ya2Zsb3dEYXRhXCJcbiAgICAgICAgW3NlcmlhbGl6ZWRSZWxhdGVkTW9dPVwibW8uU2VyaWFsaXplZFJlbGF0ZWRNb1wiXG4gICAgICAgIFtkZXRhaWxzVGV4dF09XCJ2aWV3U2V0dGluZz8uRGV0YWlsc1NldHRpbmc/LkJ1dHRvblRleHRcIlxuICAgICAgICBbZGV0YWlsc1RleHRGdW5jdGlvbl09XCJ2aWV3U2V0dGluZz8uRGV0YWlsc1NldHRpbmc/LkJ1dHRvblRleHRGdW5jdGlvblwiXG4gICAgICAgIFtkZXRhaWxzQ29tcG9uZW50XT1cImRldGFpbHNDb21wb25lbnRcIlxuICAgICAgICBbY29sb3JpbmdSb3ddPVwidmlld1NldHRpbmc/LkNvbG9yaW5nUm93XCJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJtby4kSXNDaGVja2VkXCJcbiAgICAgICAgW3Zpc2liaWxpdHldPVwibW8uJFZpc2liaWxpdHlcIlxuICAgICAgICBbZXhwYW5kZWRdPVwibW8uJEV4cGFuZGVkXCJcbiAgICAgICAgW3N0eWxlSW5kZXhdPVwibW8uJFN0eWxlSW5kZXhcIlxuICAgICAgICBbbGV2ZWxdPVwibW8uJExldmVsXCJcbiAgICAgICAgW3BhcmVudEV4cGFuZGVkXT1cIm1vLiRQYXJlbnQ/LiRFeHBhbmRlZFwiXG4gICAgICAgIFttb0RhdGFMaXN0Q291bnRdPVwibW9EYXRhTGlzdENvdW50XCJcbiAgICAgICAgW2NvbHVtbnNDb3VudF09XCJjb2x1bW5zQ291bnQgLSBkZXRhaWxzQ29sdW1ucy5sZW5ndGhcIlxuICAgICAgICBbdHlwZURlZklkXT1cInR5cGVEZWZJZFwiXG4gICAgICAgIFtleHRyYVJlbGF0aW9uXT1cImV4dHJhUmVsYXRpb25cIlxuICAgICAgICBbZm9ybVNldHRpbmddPVwiZm9ybVNldHRpbmdcIlxuICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICBbc2V0dGluZ109XCJ2aWV3U2V0dGluZ1wiXG4gICAgICAgIFtzZWNvbmRhcnlDb2x1bW5zXT1cInNlY29uZGFyeUNvbHVtbnMgfCBmaWx0ZXJDb2x1bW5zQnlEZXRhaWxzOiBkZXRhaWxzQ29sdW1uczpyb3dJbmRpY2F0b3JcIlxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6cm93SW5kaWNhdG9yXCJcbiAgICAgICAgW2lzTmV3SW5saW5lTW9dPVwibW8uJE5ld0lubGluZU1vXCJcbiAgICAgICAgW2FjY2Vzc109XCJhY2Nlc3NcIlxuICAgICAgICBbaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxuICAgICAgICBbYWxsb3dJbmxpbmVFZGl0XT1cImFsbG93SW5saW5lRWRpdFwiXG4gICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICBbYWxsQ29sdW1uc109XCJhbGxDb2x1bW5zXCJcbiAgICAgICAgW2NvbnRleHRNZW51SXRlbXNdPVwiY29udGV4dE1lbnVJdGVtc1wiXG4gICAgICAgIFtjYW5WaWV3XT1cImNhblZpZXdcIlxuICAgICAgICBbY29uZGl0aW9uYWxGb3JtYXRzXT1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgICAgIFtkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudV09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudVwiXG4gICAgICAgIFtuYXZpZ2F0aW9uQXJyb3ddPVwibmF2aWdhdGlvbkFycm93XCJcbiAgICAgICAgW2lzQ2hlY2tMaXN0XT1cImlzQ2hlY2tMaXN0XCJcbiAgICAgICAgW3Jvd0luZGljYXRvcl09XCJyb3dJbmRpY2F0b3JcIlxuICAgICAgICBbcm93SW5kaWNhdG9yQ29sb3JdPVwicm93SW5kaWNhdG9yQ29sb3JcIlxuICAgICAgICAoZXZlbnRzKT1cIm9uT2xnb0V2ZW50cygkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9ibnJjLWR5bmFtaWMtaXRlbS1jb21wb25lbnQ+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlXG4gICAgI3Jvd1RlbXBsYXRlXG4gICAgbGV0LW1vXG4gICAgbGV0LWluZGV4PVwiaW5kZXhcIlxuICAgIGxldC1yb3dOdW1iZXI9XCJyb3dOdW1iZXJcIlxuICAgIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXG4gICAgbGV0LW1vRGF0YUxpc3RDb3VudD1cIm1vRGF0YUxpc3RDb3VudFwiXG4gICAgbGV0LW1vRGF0YUxpc3Q9XCJtb0RhdGFMaXN0XCJcbiAgICBsZXQtY2FydGFibGVUZW1wbGF0ZT1cImNhcnRhYmxlVGVtcGxhdGVcIlxuICAgIGxldC1zZWNvbmRhcnlDb2x1bW5zPVwic2Vjb25kYXJ5Q29sdW1uc1wiXG4gICAgbGV0LXJvd0luZGljYXRvckNvbG9yPVwicm93SW5kaWNhdG9yQ29sb3JcIlxuICAgIGxldC1wcmV2aWV3Q29sdW1uPVwicHJldmlld0NvbHVtblwiXG4gICAgbGV0LWRldGFpbHNDb2xsYXBzZWQ9XCJkZXRhaWxzQ29sbGFwc2VkXCJcbiAgICBsZXQtaGlkZURldGFpbHNUZXh0PVwiaGlkZURldGFpbHNUZXh0XCJcbj5cbiAgICA8YnN1LWJhcnNhLXRhYmxlLXJvd1xuICAgICAgICBbbW9dPVwibW9cIlxuICAgICAgICBbZGlydHlDb2x1bW5zXT1cIm1vLiREaXJ0eUNvbHVtbnNcIlxuICAgICAgICBbaXNMYXN0Q2hpbGRHcm91cF09XCJtby4kSXNMYXN0Q2hpbGRHcm91cFwiXG4gICAgICAgIFttb0RhdGFMaXN0XT1cIm1vRGF0YUxpc3RcIlxuICAgICAgICBbaGlkZURldGFpbHNUZXh0XT1cImhpZGVEZXRhaWxzVGV4dFwiXG4gICAgICAgIFtkZXRhaWxzQ29sbGFwc2VkXT1cImRldGFpbHNDb2xsYXBzZWRcIlxuICAgICAgICBbZ3JvdXBTdW1tYXJ5XT1cImdyb3VwU3VtbWFyeVwiXG4gICAgICAgIFtVbHZNYWluQ3RybHJdPVwiVWx2TWFpbkN0cmxyXCJcbiAgICAgICAgW3Nob3dEZXRhaWxzSW5Sb3ddPVwic2hvd0RldGFpbHNJblJvd1wiXG4gICAgICAgIFtoaWRlT3Blbkljb25dPVwiaGlkZU9wZW5JY29uXCJcbiAgICAgICAgW3Nob3dSb3dOdW1iZXJdPVwiY29udGV4dFZpZXc/LkdyaWRfU2hvd1Jvd051bWJlclwiXG4gICAgICAgIFtyb3dOdW1iZXJdPVwicm93TnVtYmVyXCJcbiAgICAgICAgW2NvbG9yaW5nUm93XT1cInZpZXdTZXR0aW5nPy5Db2xvcmluZ1Jvd1wiXG4gICAgICAgIFtkaXNhYmxlRWxsYXBzaXNdPVwidmlld1NldHRpbmc/LkRpc2FibGVFbGxhcHNpc1wiXG4gICAgICAgIFtzaG93Vmlld0J1dHRvbl09XCJzaG93Vmlld0J1dHRvblwiXG4gICAgICAgIFtkZXRhaWxzQ29sdW1uc109XCJkZXRhaWxzQ29sdW1uc1wiXG4gICAgICAgIFtjb2x1bW5Db21wb25lbnRzXT1cInZpZXdTZXR0aW5nPy5Db2x1bW5Db21wb25lbnRzIHx8IG51bGxcIlxuICAgICAgICBbY2FydGFibGVUZW1wbGF0ZV09XCJjYXJ0YWJsZVRlbXBsYXRlXCJcbiAgICAgICAgW2NhcnRhYmxlTW9dPVwibW8uUmVsYXRlZE1vXCJcbiAgICAgICAgW2NhcnRhYmxlV29ya2Zsb3dEYXRhXT1cIm1vLlNlcmlhbGl6ZWRXb3JrZmxvd0RhdGFcIlxuICAgICAgICBbc2VyaWFsaXplZFJlbGF0ZWRNb109XCJtby5TZXJpYWxpemVkUmVsYXRlZE1vXCJcbiAgICAgICAgW2RldGFpbHNUZXh0XT1cInZpZXdTZXR0aW5nPy5EZXRhaWxzU2V0dGluZz8uQnV0dG9uVGV4dFwiXG4gICAgICAgIFtkZXRhaWxzQ29tcG9uZW50XT1cImRldGFpbHNDb21wb25lbnRcIlxuICAgICAgICBbaXNDaGVja2VkXT1cIm1vLiRJc0NoZWNrZWRcIlxuICAgICAgICBbdmlzaWJpbGl0eV09XCJtby4kVmlzaWJpbGl0eVwiXG4gICAgICAgIFtleHBhbmRlZF09XCJtby4kRXhwYW5kZWRcIlxuICAgICAgICBbc3R5bGVJbmRleF09XCJtby4kU3R5bGVJbmRleFwiXG4gICAgICAgIFtsZXZlbF09XCJtby4kTGV2ZWxcIlxuICAgICAgICBbcGFyZW50RXhwYW5kZWRdPVwibW8uJFBhcmVudD8uJEV4cGFuZGVkXCJcbiAgICAgICAgW21vRGF0YUxpc3RDb3VudF09XCJtb0RhdGFMaXN0Q291bnRcIlxuICAgICAgICBbY29sdW1uc0NvdW50XT1cImNvbHVtbnNDb3VudCAtIGRldGFpbHNDb2x1bW5zLmxlbmd0aFwiXG4gICAgICAgIFt0eXBlRGVmSWRdPVwidHlwZURlZklkXCJcbiAgICAgICAgW2V4dHJhUmVsYXRpb25dPVwiZXh0cmFSZWxhdGlvblwiXG4gICAgICAgIFtmb3JtU2V0dGluZ109XCJmb3JtU2V0dGluZ1wiXG4gICAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICAgIFtzZXR0aW5nXT1cInZpZXdTZXR0aW5nXCJcbiAgICAgICAgW2NoZWNrYm94Q29tcG9uZW50XT1cInZpZXdTZXR0aW5nPy5DaGVja2JveENvbXBvbmVudFwiXG4gICAgICAgIFtzZWNvbmRhcnlDb2x1bW5zXT1cIlxuICAgICAgICAgICAgc2Vjb25kYXJ5Q29sdW1uc1xuICAgICAgICAgICAgICAgIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6ZmFsc2VcbiAgICAgICAgICAgICAgICB8IGZpbHRlcjogeyBJc1ByZXZpZXc6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICB8IGhpZGVDb2x1bW5zSW5tb2JpbGU6IHZpZXdTZXR0aW5nPy5IaWRlQ29sdW1uc0luTW9iaWxlXG4gICAgICAgIFwiXG4gICAgICAgIFtjb2x1bW5zXT1cIlxuICAgICAgICAgICAgY29sdW1uc1xuICAgICAgICAgICAgICAgIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6cm93SW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXI6IHsgSXNQcmV2aWV3OiBmYWxzZSB9XG4gICAgICAgICAgICAgICAgfCBoaWRlQ29sdW1uc0lubW9iaWxlOiB2aWV3U2V0dGluZz8uSGlkZUNvbHVtbnNJbk1vYmlsZVxuICAgICAgICBcIlxuICAgICAgICBbaXNOZXdJbmxpbmVNb109XCJtby4kTmV3SW5saW5lTW9cIlxuICAgICAgICBbYWNjZXNzXT1cImFjY2Vzc1wiXG4gICAgICAgIFtzaW1wbGVJbmxpbmVFZGl0XT1cInNpbXBsZUlubGluZUVkaXRcIlxuICAgICAgICBbbm9TYXZlSW5saW5lRWRpdEluU2VydmVyXT1cInNpbXBsZUlubGluZUVkaXRcIlxuICAgICAgICBbYWN0aW9uTGlzdF09XCJhY3Rpb25MaXN0XCJcbiAgICAgICAgW2lubGluZUVkaXRNb2RlXT1cImlubGluZUVkaXRNb2RlXCJcbiAgICAgICAgW2FsbG93SW5saW5lRWRpdF09XCJhbGxvd0lubGluZUVkaXRcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICBbY2FuVmlld109XCJjYW5WaWV3XCJcbiAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICBbbmF2aWdhdGlvbkFycm93XT1cIm5hdmlnYXRpb25BcnJvd1wiXG4gICAgICAgIFtpc0NoZWNrTGlzdF09XCJpc0NoZWNrTGlzdFwiXG4gICAgICAgIFtyb3dJbmRpY2F0b3JdPVwicm93SW5kaWNhdG9yXCJcbiAgICAgICAgW3Jvd0luZGljYXRvckNvbG9yXT1cInJvd0luZGljYXRvckNvbG9yXCJcbiAgICAgICAgW3ByZXZpZXdDb2x1bW5dPVwicHJldmlld0NvbHVtblwiXG4gICAgICAgIChjb2x1bW5TdW1tYXJ5KT1cImNvbHVtblN1bW1hcnkuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHJlc2V0V29ya2Zsb3dTdGF0ZSk9XCJyZXNldFdvcmtmbG93U3RhdGUuZW1pdChtbylcIlxuICAgICAgICAoZXNjYXBlS2V5KT1cIm9uRXNjYXBlS2V5KCRldmVudClcIlxuICAgICAgICAoZXhwYW5kQ2xpY2spPVwib25FeHBhbmRDbGljaygkZXZlbnQpXCJcbiAgICAgICAgKHJvd0NoZWNrKT1cIm9uUm93Q2hlY2soJGV2ZW50KVwiXG4gICAgICAgICh3b3JrZmxvd1NoYXJlQnV0dG9ucyk9XCJvbldvcmtmbG93U2hhcmVCdXR0b25zKCRldmVudClcIlxuICAgICAgICAoZGVzZWxlY3RBbGwpPVwib25EZXNlbGVjdEFsbCgpXCJcbiAgICAgICAgKHJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICh1bHZDb21tYW5kKT1cIm9uVWx2Q29tbWFuZCgkZXZlbnQpXCJcbiAgICAgICAgKGFjdGlvbkxpc3RDbGljayk9XCJvbkFjdGlvbkxpc3RDbGljayhtbywgaW5kZXgsICRldmVudClcIlxuICAgICAgICAoc2VsZWN0TmV4dElubGluZVJlY29yZCk9XCJvblNlbGVjdE5leHRJbmxpbmVSZWNvcmQoJGV2ZW50KVwiXG4gICAgICAgIChlZGl0Rm9ybVBhbmVsU2F2ZSk9XCJvbkVkaXRGb3JtUGFuZWxTYXZlKCRldmVudClcIlxuICAgICAgICAoZWRpdEZvcm1QYW5lbENhbmNlbCk9XCJvbkVkaXRGb3JtUGFuZWxDYW5jZWwoJGV2ZW50KVwiXG4gICAgICAgIChlZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UpPVwib25FZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChjYXJ0YWJsZUZvcm1DbG9zZWQpPVwib25DYXJ0YWJsZUZvcm1DbG9zZWQoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvYnN1LWJhcnNhLXRhYmxlLXJvdz5cbiAgICA8IS0tIDxkaXZcbiAgICAgICAgI3Jvd0JvdHRvbVxuICAgICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxuICAgICAgICBbaW50ZXJzZWN0aW9uVGhyZXNob2xkXT1cIjAuMVwiXG4gICAgICAgICh2aXNpYmlsaXR5Q2hhbmdlKT1cIm9uUm93VmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQsIGluZGV4LCByb3dCb3R0b20pXCJcbiAgICA+PC9kaXY+IC0tPlxuPC9uZy10ZW1wbGF0ZT5cbjxkaXYgI3RhYmxlQm90dG9tT2JzZXJ2ZT48L2Rpdj5cbiJdfQ==
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10YWJsZS12aWV3L3VpLXRhYmxlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGFibGUtdmlldy91aS10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUVILHVCQUF1QixFQUV2QixvQkFBb0IsRUFFcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixrQ0FBa0MsRUFDbEMsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixpQ0FBaUMsRUFDcEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7QUFRL0YsTUFBTSxPQUFPLG9CQUNULFNBQVEsdUJBQTJDO0lBUHZEOztRQW9Cb0MsV0FBTSxHQUFrQixJQUFJLENBQUM7UUFDNUIsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDakUsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUdoQixxQkFBZ0IsR0FBbUUsRUFBRSxDQUFDO1FBRXRGLG9CQUFlLEdBQUcsb0JBQW9CLENBQUMsY0FBYyxDQUFDO1FBQ3RELGlCQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVu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WUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDNUMsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0UsQ0FBQzs4R0E1UVEsb0JBQW9CO2tHQUFwQixvQkFBb0IseWdCQUlnQixVQUFVLG1GQUM1Qyx5QkFBeUIsNEZDekN4QyxtaWRBd1ZBOzsyRkRwVGEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNJLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNOzhCQU1ZLFNBQVM7c0JBQW5FLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNuQixxQkFBcUI7c0JBQTFELFNBQVM7dUJBQUMseUJBQXlCO2dCQUMzQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUMwQixNQUFNO3NCQUFyQyxXQUFXO3VCQUFDLGlCQUFpQjtnQkFDRyxTQUFTO3NCQUF6QyxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIHNpZ25hbCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50LFxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXG4gICAgVGFibGVIZWFkZXJXaWR0aE1vZGUsXG4gICAgQ29sdW1uUmVzaXplZEFyZ3MsXG4gICAgY2FsY0NvbnRleHRNZW51V2lkdGgsXG4gICAgY2FsY3VsYXRlQ29sdW1uV2lkdGgsXG4gICAgY2FsY3VsYXRlQ29sdW1uV2lkdGhGaXRUb0NvbnRhaW5lcixcbiAgICBjYWxjdWxhdGVGcmVlQ29sdW1uU2l6ZSxcbiAgICBjYWxjdWxhdGVDb2x1bW5Db250ZW50LFxuICAgIHNldENvbHVtbldpZHRoQnlNYXhNb0NvbnRlbnRXaWR0aFxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBVaVRhYmxlVmlld1NldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC12aWV3JztcbmltcG9ydCB7IEJhcnNhVGFibGVIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9iYXJzYS10YWJsZS1oZWFkZXIvYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LXVpLXRhYmxlLXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91aS10YWJsZS12aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVWlUYWJsZVZpZXdDb21wb25lbnRcbiAgICBleHRlbmRzIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50PFVpVGFibGVWaWV3U2V0dGluZz5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzXG57XG4gICAgQFZpZXdDaGlsZCgndGFibGVUcGwnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBfdGFibGVSZWY6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZChCYXJzYVRhYmxlSGVhZGVyQ29tcG9uZW50KSBfdGFibGVIZWFkZXJDb21wb25lbnQ6IEJhcnNhVGFibGVIZWFkZXJDb21wb25lbnQ7XG4gICAgQElucHV0KCkgY29sdW1uV2lkdGg6IG51bWJlcjtcbiAgICBASW5wdXQoKSBtaW5XaWR0aDtcbiAgICBASW5wdXQoKSBtaW5IZWlnaHQ7XG4gICAgQElucHV0KCkgZGlzYWJsZVJlc2l6ZTtcbiAgICBASW5wdXQoKSBkaXNhYmxlSGVhZGVyQ29udGV4dE1lbnU7XG4gICAgQElucHV0KCkgcm93UmVzaXplcjtcbiAgICBASW5wdXQoKSBlbmFibGVSZXNpemluZztcbiAgICBASW5wdXQoKSBkaXNhYmxlRml4ZWRUYWJsZUxheW91dDtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodC5weCcpIGhlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtaGVpZ2h0JykgbWF4SGVpZ2h0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBfd2lkdGggPSAnMTAwJSc7XG4gICAgc2hvd0RldGFpbHNJblJvdzogYm9vbGVhbjtcbiAgICBoYXNSb3dPbGdvOiBib29sZWFuO1xuICAgIGNvbHVtbkNvbXBvbmVudHM6IHsgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uOyBjb21wb25lbnQ6IE1ldGFvYmplY3REYXRhTW9kZWwgfVtdID0gW107XG4gICAgcm93SW5kaWNhdG9yOiBib29sZWFuO1xuICAgIHRhYmxlSGVhZGVyTW9kZSA9IFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZpdFRvQ29udGFpbmVyO1xuICAgIHN0aWNreUVuYWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gICAgcm93VmlzaWJpbHR5Q2hhbmdlID0gc2lnbmFsKGZhbHNlKTtcbiAgICB0YWJsZUhlYWRlckRvbTogSFRNTEVsZW1lbnQ7XG4gICAgX2hlYWRlclRvcCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgcm93VmlzaWJsZSQgPSBuZXcgU3ViamVjdDx7IGluZGV4OyBkb20gfT4oKTtcbiAgICBfaXNQYXJlbnRXaWR0aFNldCA9IGZhbHNlO1xuICAgIHRhYmxlSGVhZGVyVG9wID0gMDtcbiAgICB0YWJsZUhlYWRlckhlaWdodCA9IDA7XG4gICAgaGVhZGVyT2JzZXJ2ZXJEb206IEhUTUxFbGVtZW50O1xuICAgIG5vdFZpc2libGVJdGVtczogbnVtYmVyW10gPSBbXTtcbiAgICB2aXNpYmxlSXRlbXM6IG51bWJlcltdID0gW107XG4gICAgb2xkV2lkdGggPSAwO1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBjb25zdCB4ID0gTWF0aC5mbG9vcih0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuICAgICAgICBpZiAoeCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3ggLSAxMH1weGApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2Uud2luZG93UmVzaXplJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fdGFibGVSZWYubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgeCArICdweCcpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICdtYXgtd2lkdGgnLCB4ICsgJ3B4Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoVGhXaWR0aCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5oYXNSb3dPbGdvID0gdGhpcy52aWV3U2V0dGluZz8uUm93T2xnbz8uU2VsZWN0b3I7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy52aWV3U2V0dGluZz8uQm9keUhlaWdodDtcbiAgICAgICAgdGhpcy5fc2V0SGFzU3VtbWVyeSh0aGlzLmNhcnRhYmxlQ2hpbGRzTW8pO1xuICAgICAgICB0aGlzLl9zZXRIZWlnaHQodGhpcy5wYXJlbnRIZWlnaHQpO1xuICAgICAgICB0aGlzLl9zZXRXaWR0aCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVDb2x1bW5zV2lkdGgodGhpcy5tb0RhdGFMaXN0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyTW9kZSA9IHRoaXMuZ3JpZEZyZWVDb2x1bW5TaXppbmdcbiAgICAgICAgICAgID8gVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemVcbiAgICAgICAgICAgIDogVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db250YWluZXI7XG4gICAgICAgIHRoaXMuX2NhbGNDb250ZXh0TWVudVdpZHRoKHRoaXMuY29udGV4dE1lbnVJdGVtcyk7XG4gICAgfVxuICAgIF9jYWxjQ29udGV4dE1lbnVXaWR0aChjb250ZXh0TWVudUl0ZW1zKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVXaWR0aCA9IGNhbGNDb250ZXh0TWVudVdpZHRoKGNvbnRleHRNZW51SXRlbXMsIHRoaXMuZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnUpO1xuICAgIH1cbiAgICBvblRhYmxlVmlzaWJpbGl0eUNoYW5nZShlLCBkb20pOiB2b2lkIHtcbiAgICAgICAgaWYgKGUgPT09ICdWaXNpYmxlJykge1xuICAgICAgICAgICAgdGhpcy5fc2V0V2lkdGgodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgY2FydGFibGVUZW1wbGF0ZXMsIHBhcmVudEhlaWdodCwgY29udGV4dE1lbnVJdGVtcywgY29sdW1uc0NvdW50LCBjb2x1bW5zLCBzZWNvbmRhcnlDb2x1bW5zIH0gPSBjaGFuZ2VzO1xuICAgICAgICBpZiAoY29udGV4dE1lbnVJdGVtcyAmJiAhY29udGV4dE1lbnVJdGVtcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5fY2FsY0NvbnRleHRNZW51V2lkdGgoY29udGV4dE1lbnVJdGVtcy5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FydGFibGVUZW1wbGF0ZXMgJiYgIWNhcnRhYmxlVGVtcGxhdGVzLmZpcnN0Q2hhbmdlICYmICF0aGlzLmhhc1N1bW1hcnkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEhhc1N1bW1lcnkoY2FydGFibGVUZW1wbGF0ZXMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGNvbHVtbnNDb3VudCAmJiAhY29sdW1uc0NvdW50LmZpcnN0Q2hhbmdlKSB8fCAoc2Vjb25kYXJ5Q29sdW1ucyAmJiAhc2Vjb25kYXJ5Q29sdW1ucy5maXJzdENoYW5nZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIGNvbHVtbnMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyZW50SGVpZ2h0ICYmICFwYXJlbnRIZWlnaHQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEhlaWdodChwYXJlbnRIZWlnaHQuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICB9XG4gICAgb25Db2x1bW5SZXNpemluZyhlOiB7IGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjsgd2lkdGg6IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9UaFdpZHRoKCk7XG4gICAgICAgIHRoaXMuX3NldFBhcmVudFdpZHRoKCk7XG4gICAgfVxuICAgIG9uQ29sdW1uUmVzaXplZChhcnI6IEFycmF5PENvbHVtblJlc2l6ZWRBcmdzPik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFibGVIZWFkZXJNb2RlID09PSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GcmVlQ29sdW1uU2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQuU2V0Q29sdW1uV2lkdGhUb1RoV2lkdGgoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9QZXJjZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQuUmVmcmVzaFRhYmxlVGhXaWR0aCgpO1xuICAgICAgICB0aGlzLnJlc2l6ZWRCeVVzZXIgPSB0cnVlO1xuXG4gICAgICAgIC8vIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZShsYXN0VGgsICd3aWR0aCcsIGAxMDAlYCk7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplZC5lbWl0KHsgY29sdW1uczogdGhpcy5jb2x1bW5zLCByZXNpemVkOiBhcnIgfSk7XG4gICAgfVxuICAgIG9uRml0VG9Db250YWluZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db250YWluZXI7XG4gICAgICAgIHRoaXMuX3NldFBhcmVudFdpZHRoRml0KCk7XG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9QZXJjZW50KCk7XG4gICAgICAgIC8vIHRoaXMuX3JlZnJlc2hUaFdpZHRoKCk7XG4gICAgICAgIC8vIHRoaXMuX2ZpcmVSZXNpemVDaGFuZ2VkKCk7XG4gICAgfVxuICAgIG9uRnJlZUNvbHVtblNpemluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlck1vZGUgPSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GcmVlQ29sdW1uU2l6ZTtcbiAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQuU2V0Q29sdW1uV2lkdGhUb1RoV2lkdGgoKTtcbiAgICAgICAgdGhpcy5fc2V0UGFyZW50V2lkdGhGaXRUb09mZnNldFdpZHRoKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY29sdW1ucyk7XG4gICAgfVxuICAgIG9uRml0VG9Db250ZW50KGU6IHsgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uOyB0aERvbTogSFRNTFRhYmxlQ2VsbEVsZW1lbnQgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGNvbHVtbiwgdGhEb20gfSA9IGU7XG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemU7XG4gICAgICAgIHNldENvbHVtbldpZHRoQnlNYXhNb0NvbnRlbnRXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIGNvbHVtbik7XG4gICAgICAgIGNvbHVtbi4kV2lkdGggPSBjb2x1bW4uJENvbnRlbnRXaWR0aDtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoRG9tLCAnd2lkdGgnLCBjb2x1bW4uJFdpZHRoKTtcbiAgICAgICAgdGhpcy5fZmlyZVJlc2l6ZUNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBvblNldFRhYmxlSGVhZGVyRG9tKGRvbSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyRG9tID0gZG9tO1xuICAgICAgICBjb25zdCByZWN0ID0gZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyVG9wID0gcmVjdC50b3A7XG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJIZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICB9XG4gICAgb25IZWFkZXJWaXNpYmlsaXR5Q2hhbmdlKGUsIGRvbSk6IHZvaWQge1xuICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuaGVhZGVyT2JzZXJ2ZXJEb20gPSBkb207XG4gICAgICAgIGlmIChlID09PSAnTm90VmlzaWJsZScpIHtcbiAgICAgICAgICAgIHRoaXMuc3RpY2t5RW5hYmxlLnNldCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RpY2t5RW5hYmxlLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJvd1Zpc2liaWxpdHlDaGFuZ2UoZSwgaW5kZXgsIGRvbSk6IHZvaWQge1xuICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChlICE9PSAnUGVuZGluZycpIHtcbiAgICAgICAgICAgIGlmIChlID09PSAnTm90VmlzaWJsZScpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlSXRlbXMuaW5kZXhPZihpbmRleCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93VmlzaWJsZSQubmV4dCh7IGluZGV4LCBkb20gfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy52aXNpYmxlSXRlbXMuZmlsdGVyKChjKSA9PiBjICE9PSBpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubm90VmlzaWJsZUl0ZW1zLnB1c2goaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUgPT09ICdWaXNpYmxlJykge1xuICAgICAgICAgICAgICAgIHRoaXMubm90VmlzaWJsZUl0ZW1zID0gdGhpcy5ub3RWaXNpYmxlSXRlbXMuZmlsdGVyKChjKSA9PiBjICE9PSBpbmRleCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVJdGVtcy5wdXNoKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRoaXMucm93VmlzaWJsZSQubmV4dCh7IGluZGV4LCBkb20gfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0UGFyZW50V2lkdGhGaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsICd3aWR0aCcsIGAxMDAlYCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnbWluLXdpZHRoJywgYDEwMCVgKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAxMDAlYCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldFBhcmVudFdpZHRoRml0VG9PZmZzZXRXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeDEgPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsICd3aWR0aCcsIGAke3gxfXB4YCk7XG4gICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fdGFibGVSZWYubmF0aXZlRWxlbWVudCwgJ21pbi13aWR0aCcsIGAke3h9cHhgKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3h9cHhgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0UGFyZW50V2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsICd3aWR0aCcsIGAke3h9cHhgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVmcmVzaFRoV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY29sdW1ucyk7XG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50Py5SZWZyZXNoVGFibGVUaFdpZHRoKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldFdpZHRoKHNldFdpZHRoPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCB3aWR0aE9mRG9tID0gTWF0aC5mbG9vcih0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuICAgICAgICBjb25zb2xlLmxvZyh3aWR0aE9mRG9tKTtcblxuICAgICAgICBpZiAod2lkdGhPZkRvbSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3aWR0aE9mRG9tICE9PSB0aGlzLm9sZFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoVGhXaWR0aCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2xkV2lkdGggPSB3aWR0aE9mRG9tO1xuICAgICAgICBjb25zdCB3aWR0aE9mRG9tMiA9IE1hdGguZmxvb3IodGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICdtYXgtd2lkdGgnLCB3aWR0aE9mRG9tMiAtIDEwICsgJ3B4Jyk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB3aWR0aE9mRG9tMiAtIDEwICsgJ3B4Jyk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUhlYWRlclN0aWNreVRvcChkb206IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0aWNreUVuYWJsZSgpICYmIHRoaXMudGFibGVIZWFkZXJEb20pIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IHJlYyA9IHRoaXMuaGVhZGVyT2JzZXJ2ZXJEb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAvLyBjb25zdCB0b3AgPSByZWMudG9wO1xuICAgICAgICAgICAgLy8gY29uc3QgY2FsYyA9IHRoaXMudGFibGVIZWFkZXJUb3AgLSB0b3AgLSB0aGlzLnRhYmxlSGVhZGVySGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgIGNvbnN0IHJlYyA9IGRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgdGhpcy5faGVhZGVyVG9wJC5uZXh0KHJlYy50b3AgLSAxMiArIHRoaXMudGFibGVIZWFkZXJIZWlnaHQgKyAncHgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZmlyZVJlc2l6ZUNoYW5nZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplZC5lbWl0KHtcbiAgICAgICAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucyxcbiAgICAgICAgICAgIHJlc2l6ZWQ6IHRoaXMuY29sdW1ucy5tYXAoKGMpID0+ICh7IG5hbWU6IGMuTmFtZSwgd2lkdGg6IGMuV2lkdGggfSkpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aChtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sIGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudGFibGVIZWFkZXJNb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplOlxuICAgICAgICAgICAgICAgIHRoaXMuX2ZyZWVDb2x1bW5TaXplKG1vRGF0YUxpc3QsIGNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb1Jvd0NvbnRlbnQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fZml0VG9Sb3dDb250ZW50Q29sdW1uKG1vRGF0YUxpc3QsIGNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb0NvbnRhaW5lcjpcbiAgICAgICAgICAgICAgICB0aGlzLl9maXRUb0NvbnRhaW5lcihtb0RhdGFMaXN0LCBjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2ZpdFRvQ29sdW1uKG1vRGF0YUxpc3QsIGNvbHVtbnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxEb20gPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjYWxjdWxhdGVDb2x1bW5XaWR0aChlbERvbSwgY29sdW1ucywgbW9EYXRhTGlzdCwgdGhpcy5kaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudSwgdGhpcy5jb250ZXh0TWVudUl0ZW1zKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9maXRUb1Jvd0NvbnRlbnRDb2x1bW4obW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10pOiB2b2lkIHtcbiAgICAgICAgY2FsY3VsYXRlQ29sdW1uQ29udGVudChjb2x1bW5zLCBtb0RhdGFMaXN0KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9maXRUb0NvbnRhaW5lcihtb0RhdGFMaXN0LCBjb2x1bW5zKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsRG9tID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjYWxjdWxhdGVDb2x1bW5XaWR0aEZpdFRvQ29udGFpbmVyKFxuICAgICAgICAgICAgZWxEb20sXG4gICAgICAgICAgICB0aGlzLmNhblZpZXcsXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVIZWFkZXJDb250ZXh0TWVudSxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcyxcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1xuICAgICAgICApO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2ZyZWVDb2x1bW5TaXplKG1vRGF0YUxpc3QsIGNvbHVtbnMpOiB2b2lkIHtcbiAgICAgICAgY2FsY3VsYXRlRnJlZUNvbHVtblNpemUodGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zZXRIZWlnaHQocGFyZW50SGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gcGFyZW50SGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0SGFzU3VtbWVyeShjYXJ0YWJsZVRlbXBsYXRlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmRldGFpbHNDb2x1bW5zPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICB0aGlzLmRldGFpbHNDb21wb25lbnQ/LlNlbGVjdG9yIHx8XG4gICAgICAgICAgICAoY2FydGFibGVUZW1wbGF0ZXMgJiYgT2JqZWN0LmtleXMoY2FydGFibGVUZW1wbGF0ZXMpLmxlbmd0aCA+IDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zaG93RGV0YWlsc0luUm93ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaGFzRGV0YWlsc0luUm93LmVtaXQodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhc0RldGFpbHNJblJvdy5lbWl0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NvbnRhaW5lcldpZHRoQ2hhbmdlZCh2YWw6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodmFsID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl93aWR0aCA9ICcxMDAlJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3dpZHRoID0gdmFsID8gdmFsICsgJ3B4JyA6ICcxMDAlJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgdGhpcy5fd2lkdGgpO1xuICAgIH1cbn1cbiIsIjx0YWJsZVxuICAgIGZkLXRhYmxlXG4gICAgI3RhYmxlVHBsXG4gICAgI2hlYWRlckJvdHRvbU9ic2VydmVyXG4gICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbiAgICBbaW50ZXJzZWN0aW9uVGhyZXNob2xkXT1cIjAuMVwiXG4gICAgKHZpc2liaWxpdHlDaGFuZ2UpPVwib25UYWJsZVZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBoZWFkZXJCb3R0b21PYnNlcnZlcilcIlxuICAgIFtwb3BJbl09XCJwb3BpblwiXG4gICAgW2NsYXNzLnRhYmxlLWZpeGVkXT1cIlxuICAgICAgICAhY29udGV4dFZpZXc/LkdyaWRfSGlkZUhlYWRlciAmJiAoIXBvcGluIHx8IHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID09PSAwKSAmJiAhZGlzYWJsZUZpeGVkVGFibGVMYXlvdXRcbiAgICBcIlxuICAgIFtub0JvcmRlclhdPVwidmlld1NldHRpbmc/Lk5vSG9yaXp0b25hbEJvcmRlcnMgPT09IHRydWVcIlxuICAgIFtub0JvcmRlclldPVwidmlld1NldHRpbmc/Lk5vVmVydGljYWxCb3JkZXJzID09PSB0cnVlIHx8IChwb3BpbiAmJiBzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDApXCJcbj5cbiAgICBAaWYgKGNvbHVtbnMgfCBtZXJnZUZpZWxkc1RvQ29sdW1uczogdmlld1NldHRpbmc/Lk1lcmdlRmllbGRzVG9Db2x1bW5zPy5Nb0RhdGFMaXN0OyBhcyBtZXJnZUZpZWxkc1RvQ29sdW1ucykge1xuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGhlYWRlclRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zLCBtb0RhdGFMaXN0Q291bnQ6IG1vRGF0YUxpc3Q/Lmxlbmd0aCB9XG4gICAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICAgIEBpZiAobW9EYXRhTGlzdD8ubGVuZ3RoKSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgYm9keVRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zLCBwcmV2aWV3Q29sdW1uOiBhbGxDb2x1bW5zIHwgZmluZFByZXZpZXdDb2x1bW4gfVxuICAgICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZXJnZUZpZWxkc1RvQ29sdW1ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfSB9XG48L3RhYmxlPlxuPCEtLXJlbmRlckNvbHVtbi0tPlxuXG5AaWYgKCFtb0RhdGFMaXN0Py5sZW5ndGgpIHtcbjxic3Utbm8tZGF0YVxuICAgIFtjbGFzcy5uby10b3Bib3JkZXJdPVwiIWhpZGVUb29sYmFyXCJcbiAgICBbY2xhc3Mubm9ib3JkZXJdPVwiY29udGV4dFZpZXcuR3JpZF9IaWRlSGVhZGVyICYmIGhpZGVUb29sYmFyXCJcbiAgICBbc2ltcGxlXT1cInRydWVcIlxuPlxuPC9ic3Utbm8tZGF0YT5cbn1cblxuPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZSBsZXQtY29sdW1ucyBsZXQtbW9EYXRhTGlzdENvdW50PlxuICAgIDxic3UtYmFyc2EtdGFibGUtaGVhZGVyXG4gICAgICAgIFtzdGlja3ldPVwic3RpY2t5RW5hYmxlKClcIlxuICAgICAgICBbaGFzU2Vjb25kYXJ5Q29sdW1uc109XCJzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDBcIlxuICAgICAgICBbY2xhc3MuaGFzLXRvb2xiYXJdPVwiIWhpZGVUb29sYmFyXCJcbiAgICAgICAgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cIm1vRGF0YUxpc3RDb3VudCA/ICdhdXRvJyA6ICdub25lJ1wiXG4gICAgICAgIFt0YWJsZVdpZHRoXT1cImVsV2lkdGhcIlxuICAgICAgICBbc2hvd0RldGFpbHNJblJvd109XCJzaG93RGV0YWlsc0luUm93XCJcbiAgICAgICAgW2hpZGVPcGVuSWNvbl09XCJoaWRlT3Blbkljb25cIlxuICAgICAgICBbcmVzaXplZEJ5VXNlcl09XCJyZXNpemVkQnlVc2VyXCJcbiAgICAgICAgW3RhYmxlSGVhZGVyTW9kZV09XCJ0YWJsZUhlYWRlck1vZGVcIlxuICAgICAgICBbc2hvd1Jvd051bWJlcl09XCJjb250ZXh0Vmlldz8uR3JpZF9TaG93Um93TnVtYmVyXCJcbiAgICAgICAgW2FsbENoZWNrZWRdPVwiYWxsQ2hlY2tlZFwiXG4gICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgW2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdFwiXG4gICAgICAgIFtkaXNhYmxlUmVzcG9uc2l2ZV09XCJkaXNhYmxlUmVzcG9uc2l2ZVwiXG4gICAgICAgIFtpc0NoZWNrTGlzdF09XCJpc0NoZWNrTGlzdFwiXG4gICAgICAgIFtjb2x1bW5zXT1cIlxuICAgICAgICAgICAgY29sdW1uc1xuICAgICAgICAgICAgICAgIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6cm93SW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXI6IHsgSXNQcmV2aWV3OiBmYWxzZSB9XG4gICAgICAgICAgICAgICAgfCBoaWRlQ29sdW1uc0lubW9iaWxlOiB2aWV3U2V0dGluZz8uSGlkZUNvbHVtbnNJbk1vYmlsZVxuICAgICAgICBcIlxuICAgICAgICBbZml0V2lkdGhdPVwiZml0V2lkdGhcIlxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICBbaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxuICAgICAgICBbY29udGV4dE1lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgW2NvbnRleHRNZW51V2lkdGhdPVwiY29udGV4dE1lbnVXaWR0aFwiXG4gICAgICAgIFtzaG93Vmlld0J1dHRvbl09XCJzaG93Vmlld0J1dHRvblwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICBbdmlld1NldHRpbmddPVwidmlld1NldHRpbmdcIlxuICAgICAgICBbaGlkZUhlYWRlcl09XCJjb250ZXh0Vmlldy5HcmlkX0hpZGVIZWFkZXJcIlxuICAgICAgICBbcm93SW5kaWNhdG9yXT1cInJvd0luZGljYXRvclwiXG4gICAgICAgIFtkaXNhYmxlUmVzaXplXT1cImRpc2FibGVSZXNpemVcIlxuICAgICAgICBbZGlzYWJsZUhlYWRlckNvbnRleHRNZW51XT1cImRpc2FibGVIZWFkZXJDb250ZXh0TWVudVwiXG4gICAgICAgIChoZWFkZXJSZW5kZXIpPVwib25TZXRUYWJsZUhlYWRlckRvbSgkZXZlbnQpXCJcbiAgICAgICAgKGNvbHVtblJlc2l6ZSk9XCJvbkNvbHVtblJlc2l6ZWQoJGV2ZW50KVwiXG4gICAgICAgIChjb2x1bW5SZXNpemluZyk9XCJvbkNvbHVtblJlc2l6aW5nKCRldmVudClcIlxuICAgICAgICAoZml0VG9Db250ZW50KT1cIm9uRml0VG9Db250ZW50KCRldmVudClcIlxuICAgICAgICAoZml0VG9Db250YWluZXIpPVwib25GaXRUb0NvbnRhaW5lcigpXCJcbiAgICAgICAgKGZyZWVDb2x1bW5TaXplKT1cIm9uRnJlZUNvbHVtblNpemluZygpXCJcbiAgICAgICAgKGFsbENoZWNrYm94KT1cIm9uQWxsQ2hlY2tib3goJGV2ZW50KVwiXG4gICAgICAgIChzb3J0QXNjZW5kaW5nKT1cIm9uU29ydEFzY2VuZGluZygkZXZlbnQpXCJcbiAgICAgICAgKHNvcnREZXNjZW5kaW5nKT1cIm9uU29ydERlc2NlbmRpbmcoJGV2ZW50KVwiXG4gICAgICAgIChmaWx0ZXIpPVwib25GaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgIChyZXNldEdyaWRTZXR0aW5ncyk9XCJyZXNldEdyaWRTZXR0aW5ncy5lbWl0KClcIlxuICAgID48L2JzdS1iYXJzYS10YWJsZS1oZWFkZXI+XG4gICAgPCEtLSA8ZGl2XG4gICAgICAgICNoZWFkZXJCb3R0b21PYnNlcnZlclxuICAgICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxuICAgICAgICBbaW50ZXJzZWN0aW9uVGhyZXNob2xkXT1cIjAuMVwiXG4gICAgICAgICh2aXNpYmlsaXR5Q2hhbmdlKT1cIm9uSGVhZGVyVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQsIGhlYWRlckJvdHRvbU9ic2VydmVyKVwiXG4gICAgPjwvZGl2PiAtLT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZSBsZXQtY29sdW1ucyBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIj5cbiAgICA8dGJvZHlcbiAgICAgICAgI2JvZHlcbiAgICAgICAgZmQtdGFibGUtYm9keVxuICAgICAgICBbY2xhc3Mubm9ib3JkZXJdPVwidmlld1NldHRpbmc/Lk5vQm9keUJvcmRlcnMgPT09IHRydWVcIlxuICAgICAgICBbbm9Cb3JkZXJYXT1cInZpZXdTZXR0aW5nPy5Ob0hvcml6dG9uYWxCb3JkZXJzID09PSB0cnVlIHx8IHByZXZpZXdDb2x1bW5cIlxuICAgICAgICBbbm9Cb3JkZXJZXT1cIihwb3BpbiAmJiBzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDApIHx8IHByZXZpZXdDb2x1bW5cIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIEBmb3IgKG1vIG9mIG1vRGF0YUxpc3QgfCBtdWx0aXBsZUdyb3VwQnk6IGdyb3VwYnk7IHRyYWNrIF90cmFja0J5Um93KGluZGV4LCBtbyk7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGhhc1Jvd09sZ28gPyByb3dPbGdvVGVtcGxhdGUgOiByb3dUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBtbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd051bWJlcjogbW8uSWQgfCByb3dOdW1iZXI6IHBhZ2luZ1NldHRpbmc6bW9EYXRhTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGljYXRvckNvbG9yOiAhY29sdW1ucy5sZW5ndGggPyAnJyA6IChjb2x1bW5zWzBdLkNhcHRpb24gfCBydmFsOiBtbzpjb2x1bW5zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMgfCBjb2x1bW5DdXN0b21Db21wb25lbnQ6IHZpZXdTZXR0aW5nPy5Db2x1bW5Db21wb25lbnRzPy5Nb0RhdGFMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5Q29sdW1uczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlDb2x1bW5zIHwgY29sdW1uQ3VzdG9tQ29tcG9uZW50OiB2aWV3U2V0dGluZz8uQ29sdW1uQ29tcG9uZW50cz8uTW9EYXRhTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vRGF0YUxpc3Q6IG1vRGF0YUxpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBtb0RhdGFMaXN0Q291bnQ6IG1vRGF0YUxpc3QubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZTogY2FydGFibGVUZW1wbGF0ZXNbbW8uUmVsYXRlZE1vPy4kVHlwZURlZklkICsgJ0AnICsgbW8uQ2FydGFibGVTZXR0aW5ncz8uSWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld0NvbHVtbjogcHJldmlld0NvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHNDb2xsYXBzZWQ6IHZpZXdTZXR0aW5nPy5EZXRhaWxzU2V0dGluZz8uRGV0YWlsc0NvbGxhcHNlZCA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVEZXRhaWxzVGV4dDogdmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5IaWRlRGV0YWlsc1RleHQgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZSBsZXQtY29sdW1ucz5cbiAgICBAaWYgKGhhc1N1bW1hcnkpIHtcbiAgICA8dGZvb3QgZmQtdGFibGUtZm9vdGVyPlxuICAgICAgICA8dHIgZmQtdGFibGUtcm93IGNsYXNzPVwicm93LXN1bW1hcnlcIj5cbiAgICAgICAgICAgIEBpZiAoaXNDaGVja0xpc3QpIHtcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIGNvbHVtblJlc2l6ZXI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImNvbC10b3RhbC10ZXh0XCI+e3sgJ1RvdGFsJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIH0gQGlmICghaXNDaGVja0xpc3QpIHtcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIGNsYXNzPVwic2luZ2xlLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJjb2wtdG90YWwtdGV4dFwiPnt7ICdUb3RhbCcgfCBiYmJUcmFuc2xhdGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9IEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayBjb2x1bW47IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uSGFzU3VtbWFyeSkge1xuICAgICAgICAgICAgICAgIDxzdHJvbmcgc3R5bGU9XCJkaXJlY3Rpb246IGx0cjsgZGlzcGxheTogYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbW9EYXRhTGlzdCB8IHRvdGFsU3VtbWFyeTogY29sdW1uLk5hbWUgfCBudW1iZXIgfX08L3N0cm9uZ1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfSBAaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbCBzdHlsZT1cIndpZHRoOiAxMDBweFwiPjwvdGQ+XG4gICAgICAgICAgICB9IEBpZiAoIWhpZGVPcGVuSWNvbiAmJiBjYW5WaWV3ICYmICghaW5saW5lRWRpdE1vZGUgfHwgIWFsbG93SW5saW5lRWRpdCkpIHtcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsPjwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdHI+XG4gICAgPC90Zm9vdD5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlXG4gICAgI3Jvd09sZ29UZW1wbGF0ZVxuICAgIGxldC1tb1xuICAgIGxldC1pbmRleD1cImluZGV4XCJcbiAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICAgIGxldC1tb0RhdGFMaXN0Q291bnQ9XCJtb0RhdGFMaXN0Q291bnRcIlxuICAgIGxldC1tb0RhdGFMaXN0PVwibW9EYXRhTGlzdFwiXG4gICAgbGV0LWNhcnRhYmxlVGVtcGxhdGU9XCJjYXJ0YWJsZVRlbXBsYXRlXCJcbiAgICBsZXQtc2Vjb25kYXJ5Q29sdW1ucz1cInNlY29uZGFyeUNvbHVtbnNcIlxuICAgIGxldC1yb3dJbmRpY2F0b3JDb2xvcj1cInJvd0luZGljYXRvckNvbG9yXCJcbiAgICBsZXQtcm93TnVtYmVyPVwicm93TnVtYmVyXCJcbiAgICBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIlxuICAgIGxldC1kZXRhaWxzQ29sbGFwc2VkPVwiZGV0YWlsc0NvbGxhcHNlZFwiXG4gICAgbGV0LWhpZGVEZXRhaWxzVGV4dD1cImhpZGVEZXRhaWxzVGV4dFwiXG4+XG4gICAgPGJucmMtZHluYW1pYy1pdGVtLWNvbXBvbmVudFxuICAgICAgICBbY29tcG9uZW50XT1cInZpZXdTZXR0aW5nLlJvd09sZ29cIlxuICAgICAgICBbbW9dPVwibW9cIlxuICAgICAgICBbZGV0YWlsc0NvbGxhcHNlZF09XCJkZXRhaWxzQ29sbGFwc2VkXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzVGV4dF09XCJoaWRlRGV0YWlsc1RleHRcIlxuICAgICAgICBbaXNMYXN0Q2hpbGRHcm91cF09XCJtby4kSXNMYXN0Q2hpbGRHcm91cFwiXG4gICAgICAgIFtncm91cFN1bW1hcnldPVwiZ3JvdXBTdW1tYXJ5XCJcbiAgICAgICAgW3Nob3dWaWV3QnV0dG9uXT1cInNob3dWaWV3QnV0dG9uXCJcbiAgICAgICAgW1Vsdk1haW5DdHJscl09XCJVbHZNYWluQ3RybHJcIlxuICAgICAgICBbbW9EYXRhTGlzdF09XCJtb0RhdGFMaXN0XCJcbiAgICAgICAgW3Nob3dEZXRhaWxzSW5Sb3ddPVwic2hvd0RldGFpbHNJblJvd1wiXG4gICAgICAgIFtoaWRlT3Blbkljb25dPVwiaGlkZU9wZW5JY29uXCJcbiAgICAgICAgW2RldGFpbHNDb2x1bW5zXT1cImRldGFpbHNDb2x1bW5zXCJcbiAgICAgICAgW3Nob3dSb3dOdW1iZXJdPVwiY29udGV4dFZpZXc/LkdyaWRfU2hvd1Jvd051bWJlclwiXG4gICAgICAgIFtyb3dOdW1iZXJdPVwicm93TnVtYmVyXCJcbiAgICAgICAgW2NvbHVtbkNvbXBvbmVudHNdPVwidmlld1NldHRpbmc/LkNvbHVtbkNvbXBvbmVudHMgfHwgbnVsbFwiXG4gICAgICAgIFtjYXJ0YWJsZVRlbXBsYXRlXT1cImNhcnRhYmxlVGVtcGxhdGVcIlxuICAgICAgICBbY2FydGFibGVNb109XCJtby5SZWxhdGVkTW9cIlxuICAgICAgICBbZGlydHlDb2x1bW5zXT1cIm1vLiREaXJ0eUNvbHVtbnNcIlxuICAgICAgICBbY2FydGFibGVXb3JrZmxvd0RhdGFdPVwibW8uU2VyaWFsaXplZFdvcmtmbG93RGF0YVwiXG4gICAgICAgIFtzZXJpYWxpemVkUmVsYXRlZE1vXT1cIm1vLlNlcmlhbGl6ZWRSZWxhdGVkTW9cIlxuICAgICAgICBbZGV0YWlsc1RleHRdPVwidmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5CdXR0b25UZXh0XCJcbiAgICAgICAgW2RldGFpbHNUZXh0RnVuY3Rpb25dPVwidmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5CdXR0b25UZXh0RnVuY3Rpb25cIlxuICAgICAgICBbZGV0YWlsc0NvbXBvbmVudF09XCJkZXRhaWxzQ29tcG9uZW50XCJcbiAgICAgICAgW2NvbG9yaW5nUm93XT1cInZpZXdTZXR0aW5nPy5Db2xvcmluZ1Jvd1wiXG4gICAgICAgIFtpc0NoZWNrZWRdPVwibW8uJElzQ2hlY2tlZFwiXG4gICAgICAgIFt2aXNpYmlsaXR5XT1cIm1vLiRWaXNpYmlsaXR5XCJcbiAgICAgICAgW2V4cGFuZGVkXT1cIm1vLiRFeHBhbmRlZFwiXG4gICAgICAgIFtzdHlsZUluZGV4XT1cIm1vLiRTdHlsZUluZGV4XCJcbiAgICAgICAgW2xldmVsXT1cIm1vLiRMZXZlbFwiXG4gICAgICAgIFtwYXJlbnRFeHBhbmRlZF09XCJtby4kUGFyZW50Py4kRXhwYW5kZWRcIlxuICAgICAgICBbbW9EYXRhTGlzdENvdW50XT1cIm1vRGF0YUxpc3RDb3VudFwiXG4gICAgICAgIFtjb2x1bW5zQ291bnRdPVwiY29sdW1uc0NvdW50IC0gZGV0YWlsc0NvbHVtbnMubGVuZ3RoXCJcbiAgICAgICAgW3R5cGVEZWZJZF09XCJ0eXBlRGVmSWRcIlxuICAgICAgICBbZXh0cmFSZWxhdGlvbl09XCJleHRyYVJlbGF0aW9uXCJcbiAgICAgICAgW2Zvcm1TZXR0aW5nXT1cImZvcm1TZXR0aW5nXCJcbiAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgW3NldHRpbmddPVwidmlld1NldHRpbmdcIlxuICAgICAgICBbc2Vjb25kYXJ5Q29sdW1uc109XCJzZWNvbmRhcnlDb2x1bW5zIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6cm93SW5kaWNhdG9yXCJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1ucyB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zOnJvd0luZGljYXRvclwiXG4gICAgICAgIFtpc05ld0lubGluZU1vXT1cIm1vLiROZXdJbmxpbmVNb1wiXG4gICAgICAgIFthY2Nlc3NdPVwiYWNjZXNzXCJcbiAgICAgICAgW2lubGluZUVkaXRNb2RlXT1cImlubGluZUVkaXRNb2RlXCJcbiAgICAgICAgW2FsbG93SW5saW5lRWRpdF09XCJhbGxvd0lubGluZUVkaXRcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICBbY2FuVmlld109XCJjYW5WaWV3XCJcbiAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICBbbmF2aWdhdGlvbkFycm93XT1cIm5hdmlnYXRpb25BcnJvd1wiXG4gICAgICAgIFtpc0NoZWNrTGlzdF09XCJpc0NoZWNrTGlzdFwiXG4gICAgICAgIFtyb3dJbmRpY2F0b3JdPVwicm93SW5kaWNhdG9yXCJcbiAgICAgICAgW3Jvd0luZGljYXRvckNvbG9yXT1cInJvd0luZGljYXRvckNvbG9yXCJcbiAgICAgICAgKGV2ZW50cyk9XCJvbk9sZ29FdmVudHMoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvYm5yYy1keW5hbWljLWl0ZW0tY29tcG9uZW50PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZVxuICAgICNyb3dUZW1wbGF0ZVxuICAgIGxldC1tb1xuICAgIGxldC1pbmRleD1cImluZGV4XCJcbiAgICBsZXQtcm93TnVtYmVyPVwicm93TnVtYmVyXCJcbiAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICAgIGxldC1tb0RhdGFMaXN0Q291bnQ9XCJtb0RhdGFMaXN0Q291bnRcIlxuICAgIGxldC1tb0RhdGFMaXN0PVwibW9EYXRhTGlzdFwiXG4gICAgbGV0LWNhcnRhYmxlVGVtcGxhdGU9XCJjYXJ0YWJsZVRlbXBsYXRlXCJcbiAgICBsZXQtc2Vjb25kYXJ5Q29sdW1ucz1cInNlY29uZGFyeUNvbHVtbnNcIlxuICAgIGxldC1yb3dJbmRpY2F0b3JDb2xvcj1cInJvd0luZGljYXRvckNvbG9yXCJcbiAgICBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIlxuICAgIGxldC1kZXRhaWxzQ29sbGFwc2VkPVwiZGV0YWlsc0NvbGxhcHNlZFwiXG4gICAgbGV0LWhpZGVEZXRhaWxzVGV4dD1cImhpZGVEZXRhaWxzVGV4dFwiXG4+XG4gICAgPGJzdS1iYXJzYS10YWJsZS1yb3dcbiAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgW2RpcnR5Q29sdW1uc109XCJtby4kRGlydHlDb2x1bW5zXCJcbiAgICAgICAgW2lzTGFzdENoaWxkR3JvdXBdPVwibW8uJElzTGFzdENoaWxkR3JvdXBcIlxuICAgICAgICBbbW9EYXRhTGlzdF09XCJtb0RhdGFMaXN0XCJcbiAgICAgICAgW2hpZGVEZXRhaWxzVGV4dF09XCJoaWRlRGV0YWlsc1RleHRcIlxuICAgICAgICBbZGV0YWlsc0NvbGxhcHNlZF09XCJkZXRhaWxzQ29sbGFwc2VkXCJcbiAgICAgICAgW2dyb3VwU3VtbWFyeV09XCJncm91cFN1bW1hcnlcIlxuICAgICAgICBbVWx2TWFpbkN0cmxyXT1cIlVsdk1haW5DdHJsclwiXG4gICAgICAgIFtzaG93RGV0YWlsc0luUm93XT1cInNob3dEZXRhaWxzSW5Sb3dcIlxuICAgICAgICBbaGlkZU9wZW5JY29uXT1cImhpZGVPcGVuSWNvblwiXG4gICAgICAgIFtzaG93Um93TnVtYmVyXT1cImNvbnRleHRWaWV3Py5HcmlkX1Nob3dSb3dOdW1iZXJcIlxuICAgICAgICBbcm93TnVtYmVyXT1cInJvd051bWJlclwiXG4gICAgICAgIFtjb2xvcmluZ1Jvd109XCJ2aWV3U2V0dGluZz8uQ29sb3JpbmdSb3dcIlxuICAgICAgICBbZGlzYWJsZUVsbGFwc2lzXT1cInZpZXdTZXR0aW5nPy5EaXNhYmxlRWxsYXBzaXNcIlxuICAgICAgICBbc2hvd1ZpZXdCdXR0b25dPVwic2hvd1ZpZXdCdXR0b25cIlxuICAgICAgICBbZGV0YWlsc0NvbHVtbnNdPVwiZGV0YWlsc0NvbHVtbnNcIlxuICAgICAgICBbY29sdW1uQ29tcG9uZW50c109XCJ2aWV3U2V0dGluZz8uQ29sdW1uQ29tcG9uZW50cyB8fCBudWxsXCJcbiAgICAgICAgW2NhcnRhYmxlVGVtcGxhdGVdPVwiY2FydGFibGVUZW1wbGF0ZVwiXG4gICAgICAgIFtjYXJ0YWJsZU1vXT1cIm1vLlJlbGF0ZWRNb1wiXG4gICAgICAgIFtjYXJ0YWJsZVdvcmtmbG93RGF0YV09XCJtby5TZXJpYWxpemVkV29ya2Zsb3dEYXRhXCJcbiAgICAgICAgW3NlcmlhbGl6ZWRSZWxhdGVkTW9dPVwibW8uU2VyaWFsaXplZFJlbGF0ZWRNb1wiXG4gICAgICAgIFtkZXRhaWxzVGV4dF09XCJ2aWV3U2V0dGluZz8uRGV0YWlsc1NldHRpbmc/LkJ1dHRvblRleHRcIlxuICAgICAgICBbZGV0YWlsc0NvbXBvbmVudF09XCJkZXRhaWxzQ29tcG9uZW50XCJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJtby4kSXNDaGVja2VkXCJcbiAgICAgICAgW3Zpc2liaWxpdHldPVwibW8uJFZpc2liaWxpdHlcIlxuICAgICAgICBbZXhwYW5kZWRdPVwibW8uJEV4cGFuZGVkXCJcbiAgICAgICAgW3N0eWxlSW5kZXhdPVwibW8uJFN0eWxlSW5kZXhcIlxuICAgICAgICBbbGV2ZWxdPVwibW8uJExldmVsXCJcbiAgICAgICAgW3BhcmVudEV4cGFuZGVkXT1cIm1vLiRQYXJlbnQ/LiRFeHBhbmRlZFwiXG4gICAgICAgIFttb0RhdGFMaXN0Q291bnRdPVwibW9EYXRhTGlzdENvdW50XCJcbiAgICAgICAgW2NvbHVtbnNDb3VudF09XCJjb2x1bW5zQ291bnQgLSBkZXRhaWxzQ29sdW1ucy5sZW5ndGhcIlxuICAgICAgICBbdHlwZURlZklkXT1cInR5cGVEZWZJZFwiXG4gICAgICAgIFtleHRyYVJlbGF0aW9uXT1cImV4dHJhUmVsYXRpb25cIlxuICAgICAgICBbZm9ybVNldHRpbmddPVwiZm9ybVNldHRpbmdcIlxuICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICBbc2V0dGluZ109XCJ2aWV3U2V0dGluZ1wiXG4gICAgICAgIFtjaGVja2JveENvbXBvbmVudF09XCJ2aWV3U2V0dGluZz8uQ2hlY2tib3hDb21wb25lbnRcIlxuICAgICAgICBbc2Vjb25kYXJ5Q29sdW1uc109XCJcbiAgICAgICAgICAgIHNlY29uZGFyeUNvbHVtbnNcbiAgICAgICAgICAgICAgICB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zOmZhbHNlXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXI6IHsgSXNQcmV2aWV3OiBmYWxzZSB9XG4gICAgICAgICAgICAgICAgfCBoaWRlQ29sdW1uc0lubW9iaWxlOiB2aWV3U2V0dGluZz8uSGlkZUNvbHVtbnNJbk1vYmlsZVxuICAgICAgICBcIlxuICAgICAgICBbY29sdW1uc109XCJcbiAgICAgICAgICAgIGNvbHVtbnNcbiAgICAgICAgICAgICAgICB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zOnJvd0luZGljYXRvclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyOiB7IElzUHJldmlldzogZmFsc2UgfVxuICAgICAgICAgICAgICAgIHwgaGlkZUNvbHVtbnNJbm1vYmlsZTogdmlld1NldHRpbmc/LkhpZGVDb2x1bW5zSW5Nb2JpbGVcbiAgICAgICAgXCJcbiAgICAgICAgW2lzTmV3SW5saW5lTW9dPVwibW8uJE5ld0lubGluZU1vXCJcbiAgICAgICAgW2FjY2Vzc109XCJhY2Nlc3NcIlxuICAgICAgICBbc2ltcGxlSW5saW5lRWRpdF09XCJzaW1wbGVJbmxpbmVFZGl0XCJcbiAgICAgICAgW25vU2F2ZUlubGluZUVkaXRJblNlcnZlcl09XCJzaW1wbGVJbmxpbmVFZGl0XCJcbiAgICAgICAgW2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdFwiXG4gICAgICAgIFtpbmxpbmVFZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgICAgIFthbGxvd0lubGluZUVkaXRdPVwiYWxsb3dJbmxpbmVFZGl0XCJcbiAgICAgICAgW3J0bF09XCJydGxcIlxuICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxuICAgICAgICBbY29udGV4dE1lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgW2NhblZpZXddPVwiY2FuVmlld1wiXG4gICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICAgICAgW2Rpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcbiAgICAgICAgW25hdmlnYXRpb25BcnJvd109XCJuYXZpZ2F0aW9uQXJyb3dcIlxuICAgICAgICBbaXNDaGVja0xpc3RdPVwiaXNDaGVja0xpc3RcIlxuICAgICAgICBbcm93SW5kaWNhdG9yXT1cInJvd0luZGljYXRvclwiXG4gICAgICAgIFtyb3dJbmRpY2F0b3JDb2xvcl09XCJyb3dJbmRpY2F0b3JDb2xvclwiXG4gICAgICAgIFtwcmV2aWV3Q29sdW1uXT1cInByZXZpZXdDb2x1bW5cIlxuICAgICAgICAoY29sdW1uU3VtbWFyeSk9XCJjb2x1bW5TdW1tYXJ5LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChyZXNldFdvcmtmbG93U3RhdGUpPVwicmVzZXRXb3JrZmxvd1N0YXRlLmVtaXQobW8pXCJcbiAgICAgICAgKGVzY2FwZUtleSk9XCJvbkVzY2FwZUtleSgkZXZlbnQpXCJcbiAgICAgICAgKGV4cGFuZENsaWNrKT1cIm9uRXhwYW5kQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChyb3dDaGVjayk9XCJvblJvd0NoZWNrKCRldmVudClcIlxuICAgICAgICAod29ya2Zsb3dTaGFyZUJ1dHRvbnMpPVwib25Xb3JrZmxvd1NoYXJlQnV0dG9ucygkZXZlbnQpXCJcbiAgICAgICAgKGRlc2VsZWN0QWxsKT1cIm9uRGVzZWxlY3RBbGwoKVwiXG4gICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxuICAgICAgICAodWx2Q29tbWFuZCk9XCJvblVsdkNvbW1hbmQoJGV2ZW50KVwiXG4gICAgICAgIChhY3Rpb25MaXN0Q2xpY2spPVwib25BY3Rpb25MaXN0Q2xpY2sobW8sIGluZGV4LCAkZXZlbnQpXCJcbiAgICAgICAgKHNlbGVjdE5leHRJbmxpbmVSZWNvcmQpPVwib25TZWxlY3ROZXh0SW5saW5lUmVjb3JkKCRldmVudClcIlxuICAgICAgICAoZWRpdEZvcm1QYW5lbFNhdmUpPVwib25FZGl0Rm9ybVBhbmVsU2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgKGVkaXRGb3JtUGFuZWxDYW5jZWwpPVwib25FZGl0Rm9ybVBhbmVsQ2FuY2VsKCRldmVudClcIlxuICAgICAgICAoZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKT1cIm9uRWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoY2FydGFibGVGb3JtQ2xvc2VkKT1cIm9uQ2FydGFibGVGb3JtQ2xvc2VkKCRldmVudClcIlxuICAgID5cbiAgICA8L2JzdS1iYXJzYS10YWJsZS1yb3c+XG4gICAgPCEtLSA8ZGl2XG4gICAgICAgICNyb3dCb3R0b21cbiAgICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbiAgICAgICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjFcIlxuICAgICAgICAodmlzaWJpbGl0eUNoYW5nZSk9XCJvblJvd1Zpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBpbmRleCwgcm93Qm90dG9tKVwiXG4gICAgPjwvZGl2PiAtLT5cbjwvbmctdGVtcGxhdGU+XG48ZGl2ICN0YWJsZUJvdHRvbU9ic2VydmU+PC9kaXY+XG4iXX0=
|
|
@@ -39,14 +39,14 @@ export class UiTextFieldComponent extends FieldBaseComponent {
|
|
|
39
39
|
return false;
|
|
40
40
|
}
|
|
41
41
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiTextFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiTextFieldComponent, selector: "bsu-ui-text-field", inputs: { value: "value", MinSize: "MinSize" }, usesInheritance: true, ngImport: i0, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: i1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
42
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiTextFieldComponent, selector: "bsu-ui-text-field", inputs: { value: "value", MinSize: "MinSize" }, usesInheritance: true, ngImport: i0, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n [style.text-align]=\"Setting.IsLtr === true ? 'left' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: i1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
43
43
|
}
|
|
44
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiTextFieldComponent, decorators: [{
|
|
45
45
|
type: Component,
|
|
46
|
-
args: [{ selector: 'bsu-ui-text-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
|
|
46
|
+
args: [{ selector: 'bsu-ui-text-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n [style.text-align]=\"Setting.IsLtr === true ? 'left' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
|
|
47
47
|
}], propDecorators: { value: [{
|
|
48
48
|
type: Input
|
|
49
49
|
}], MinSize: [{
|
|
50
50
|
type: Input
|
|
51
51
|
}] } });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGV4dC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10ZXh0LWZpZWxkL3VpLXRleHQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGV4dC1maWVsZC91aS10ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUIsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQVEvRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQWtCO0lBR3hELElBQWEsT0FBTztRQUNoQixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUdELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQztRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxhQUFhLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxTQUFTLENBQUMsQ0FBQztRQUNQLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDZixPQUFPO1lBQ1gsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25HLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDWCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDTyxZQUFZLENBQUMsR0FBRztRQUNwQixJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDbEcsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OEdBckNRLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGdJQ1ZqQyxpckJBa0JBOzsyRkRSYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFFTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGaWVsZEJhc2VDb21wb25lbnQsIE1ldGFvYmplY3REYXRhTW9kZWwgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LXVpLXRleHQtZmllbGQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS10ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91aS10ZXh0LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVWlUZXh0RmllbGRDb21wb25lbnQgZXh0ZW5kcyBGaWVsZEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmc7XG4gICAgc2FmZUh0bWw6IGFueTtcbiAgICBASW5wdXQoKSBnZXQgTWluU2l6ZSgpOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICAgICAgICByZXR1cm4geyB3aWR0aDogMCwgaGVpZ2h0OiAzMCB9O1xuICAgIH1cbiAgICBwYXJhbWV0ZXJzOiBUZXh0U2V0dGluZztcbiAgICBpc0VtYmVkSHRtbDogYm9vbGVhbjtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5pc0VtYmVkSHRtbCA9IHRoaXMucGFyYW1ldGVycz8uSXNFbWJlZEh0bWw7XG4gICAgICAgIHRoaXMuc2FmZUh0bWwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIG9uVmFsdWVDaGFuZ2UoZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgb25LZXlEb3duKGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dC5tYXNrUmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2hhcmFjdGVyID0gdGhpcy5faXNDaGFyYWN0ZXIoZSk7XG4gICAgICAgICAgICBpZiAoIWlzQ2hhcmFjdGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IG5ldyBSZWdFeHAoJ15bJyArIHRoaXMuY29udGV4dC5tYXNrUmUgKyAnXSokJykudGVzdChlLmN1cnJlbnRUYXJnZXQudmFsdWUgKyBlLmtleSk7XG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9pc0NoYXJhY3RlcihldnQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiBldnQud2hpY2ggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXZ0LndoaWNoID09PSAnbnVtYmVyJyAmJiBldnQud2hpY2ggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gIWV2dC5jdHJsS2V5ICYmICFldnQubWV0YUtleSAmJiAhZXZ0LmFsdEtleSAmJiBldnQud2hpY2ggIT09IDggJiYgZXZ0LmtleS5sZW5ndGggPT09IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmludGVyZmFjZSBUZXh0U2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIElzRW1iZWRIdG1sOiBib29sZWFuO1xufVxuIiwiQGlmICghaXNFbWJlZEh0bWwpIHtcbjxpbnB1dFxuICAgIGZkLWZvcm0tY29udHJvbFxuICAgIFtwbGFjZWhvbGRlcl09XCJTZXR0aW5nLk51bGxUZXh0IHx8ICcnXCJcbiAgICBbYXR0ci5yZWFkb25seV09XCIocmVhZG9ubHkkIHwgYXN5bmMpID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxuICAgIFtkaXNhYmxlZF09XCIoZGlzYWJsZSQgfCBhc3luYykgPT09IHRydWUgPyB0cnVlIDogbnVsbFwiXG4gICAgW3R5cGVdPVwiU2V0dGluZy5Jc1Bhc3N3b3JkID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiXG4gICAgW3ZhbHVlXT1cIiF2YWx1ZSA/ICcnIDogdmFsdWVcIlxuICAgIFthdHRyLm1heExlbmd0aF09XCJTZXR0aW5nLk1heExlbmd0aCAhPT0gdW5kZWZpbmVkID8gU2V0dGluZy5NYXhMZW5ndGggOiBudWxsXCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIFtzdHlsZS5kaXJlY3Rpb25dPVwiU2V0dGluZy5Jc0x0ciA9PT0gdHJ1ZSA/ICdsdHInIDogbnVsbFwiXG4gICAgW3N0eWxlLnRleHQtYWxpZ25dPVwiU2V0dGluZy5Jc0x0ciA9PT0gdHJ1ZSA/ICdsZWZ0JyA6IG51bGxcIlxuICAgIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbi8+XG59IEBlbHNlIHtcbjxkaXYgW2lubmVySFRNTF09XCJzYWZlSHRtbFwiPjwvZGl2PlxufVxuIl19
|
|
@@ -2106,7 +2106,9 @@ class SapUiReportBaseComponent extends ReportBaseComponent {
|
|
|
2106
2106
|
const newMoDataList = this.moDataList;
|
|
2107
2107
|
const existMoIndex = newMoDataList.findIndex((c) => c.Id === mo.Id);
|
|
2108
2108
|
if (existMoIndex > -1) {
|
|
2109
|
+
const sIndex = newMoDataList[existMoIndex].$StyleIndex;
|
|
2109
2110
|
newMoDataList[existMoIndex] = BarsaApi.Common.MetaObjectWeb.CreateMo(mo);
|
|
2111
|
+
newMoDataList[existMoIndex].$StyleIndex = sIndex;
|
|
2110
2112
|
this._resetMoDataList(newMoDataList);
|
|
2111
2113
|
this.refreshContextMoDataList(newMoDataList);
|
|
2112
2114
|
}
|
|
@@ -5909,7 +5911,7 @@ class UiTableViewComponent extends ReportViewBaseComponent {
|
|
|
5909
5911
|
super.ngOnInit();
|
|
5910
5912
|
const x = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
5911
5913
|
if (x) {
|
|
5912
|
-
this._renderer2.setStyle(this._el.nativeElement, 'width', `${x}px`);
|
|
5914
|
+
this._renderer2.setStyle(this._el.nativeElement, 'width', `${x - 10}px`);
|
|
5913
5915
|
}
|
|
5914
5916
|
this._portalService.windowResize$.pipe(takeUntil$1(this._onDestroy$)).subscribe(() => {
|
|
5915
5917
|
const x = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
@@ -6032,19 +6034,23 @@ class UiTableViewComponent extends ReportViewBaseComponent {
|
|
|
6032
6034
|
this._renderer2.setStyle(this._tableRef.nativeElement, 'width', `100%`);
|
|
6033
6035
|
}
|
|
6034
6036
|
_setParentWidthFitToOffsetWidth() {
|
|
6035
|
-
|
|
6036
|
-
this._renderer2.setStyle(this.
|
|
6037
|
-
|
|
6037
|
+
const x1 = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
6038
|
+
this._renderer2.setStyle(this._el.nativeElement.parentNode, 'width', `${x1}px`);
|
|
6039
|
+
const x = Math.floor(this._el.nativeElement.offsetWidth);
|
|
6040
|
+
this._renderer2.setStyle(this._tableRef.nativeElement, 'min-width', `${x}px`);
|
|
6041
|
+
this._renderer2.setStyle(this._tableRef.nativeElement, 'width', `${x}px`);
|
|
6038
6042
|
}
|
|
6039
6043
|
_setParentWidth() {
|
|
6040
|
-
|
|
6044
|
+
const x = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
6045
|
+
this._renderer2.setStyle(this._el.nativeElement.parentNode, 'width', `${x}px`);
|
|
6041
6046
|
}
|
|
6042
6047
|
_refreshThWidth() {
|
|
6043
6048
|
this._calculateColumnsWidth(this.moDataList, this.columns);
|
|
6044
6049
|
this._tableHeaderComponent?.RefreshTableThWidth();
|
|
6045
6050
|
}
|
|
6046
6051
|
_setWidth(setWidth) {
|
|
6047
|
-
const widthOfDom = this._el.nativeElement.parentNode.getBoundingClientRect().width;
|
|
6052
|
+
const widthOfDom = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
6053
|
+
console.log(widthOfDom);
|
|
6048
6054
|
if (widthOfDom === 0) {
|
|
6049
6055
|
return;
|
|
6050
6056
|
}
|
|
@@ -6052,8 +6058,9 @@ class UiTableViewComponent extends ReportViewBaseComponent {
|
|
|
6052
6058
|
this._refreshThWidth();
|
|
6053
6059
|
}
|
|
6054
6060
|
this.oldWidth = widthOfDom;
|
|
6055
|
-
|
|
6056
|
-
this._renderer2.setStyle(this._tableRef.nativeElement, 'width',
|
|
6061
|
+
const widthOfDom2 = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
|
|
6062
|
+
this._renderer2.setStyle(this._tableRef.nativeElement, 'max-width', widthOfDom2 - 10 + 'px');
|
|
6063
|
+
this._renderer2.setStyle(this._tableRef.nativeElement, 'width', widthOfDom2 - 10 + 'px');
|
|
6057
6064
|
}
|
|
6058
6065
|
_calculateHeaderStickyTop(dom) {
|
|
6059
6066
|
if (this.stickyEnable() && this.tableHeaderDom) {
|
|
@@ -10690,7 +10697,7 @@ class LayoutWizardComponent extends FormPropsBaseComponent {
|
|
|
10690
10697
|
setTimeout(() => {
|
|
10691
10698
|
// this.setHeightOfFormContent();
|
|
10692
10699
|
const rootHeight = this.containerRootRef?.nativeElement?.offsetHeight;
|
|
10693
|
-
if (this.minTabHeight && rootHeight >
|
|
10700
|
+
if (!this.minTabHeight && rootHeight > 0) {
|
|
10694
10701
|
this.minTabHeight = rootHeight + 20;
|
|
10695
10702
|
}
|
|
10696
10703
|
this._cdr.detectChanges();
|
|
@@ -12839,11 +12846,11 @@ class UiTextFieldComponent extends FieldBaseComponent {
|
|
|
12839
12846
|
return false;
|
|
12840
12847
|
}
|
|
12841
12848
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiTextFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
12842
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiTextFieldComponent, selector: "bsu-ui-text-field", inputs: { value: "value", MinSize: "MinSize" }, usesInheritance: true, ngImport: i0, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: i2$1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12849
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiTextFieldComponent, selector: "bsu-ui-text-field", inputs: { value: "value", MinSize: "MinSize" }, usesInheritance: true, ngImport: i0, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n [style.text-align]=\"Setting.IsLtr === true ? 'left' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: i2$1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12843
12850
|
}
|
|
12844
12851
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiTextFieldComponent, decorators: [{
|
|
12845
12852
|
type: Component,
|
|
12846
|
-
args: [{ selector: 'bsu-ui-text-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
|
|
12853
|
+
args: [{ selector: 'bsu-ui-text-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n [style.text-align]=\"Setting.IsLtr === true ? 'left' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
|
|
12847
12854
|
}], propDecorators: { value: [{
|
|
12848
12855
|
type: Input
|
|
12849
12856
|
}], MinSize: [{
|