ng-zorro-antd-extension 17.2.0 → 17.3.0

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/README.md CHANGED
@@ -39,9 +39,9 @@ ng add ng-zorro-antd-extension
39
39
  3、app.module v15.11.0+
40
40
 
41
41
  ```ts
42
- import zh from "@angular/common/locales/zh";
43
- import { NZ_I18N, zh_CN } from "ng-zorro-antd/i18n";
44
- import { nzx_zh_CN } from "ng-zorro-antd-extension/i18n";
42
+ import zh from '@angular/common/locales/zh';
43
+ import { NZ_I18N, zh_CN } from 'ng-zorro-antd/i18n';
44
+ import { nzx_zh_CN } from 'ng-zorro-antd-extension/i18n';
45
45
 
46
46
  registerLocaleData(zh);
47
47
 
@@ -61,11 +61,11 @@ export class AppModule {}
61
61
 
62
62
  | angular | ng-zorro-antd | ng-zorro-antd-extension | LTS ends |
63
63
  | ------- | ------------- | ----------------------- | ---------- |
64
- | ^13.0.0 | ^13.0.0 | ^13.0.0 | end |
65
- | ^14.0.0 | ^14.0.0 | ^14.0.0 | end |
66
- | ^15.0.0 | ^15.0.0 | ^15.0.0 | 2024-05-18 |
67
- | ^16.0.0 | ^16.0.0 | ^15.6.0 | 2024-11-08 |
68
64
  | ^17.0.0 | ^17.0.0 | ^15.6.0 | 2025-05-15 |
65
+ | ^16.0.0 | ^16.0.0 | ^15.6.0 | 2024-11-08 |
66
+ | ^15.0.0 | ^15.0.0 | ^15.0.0 | end |
67
+ | ^14.0.0 | ^14.0.0 | ^14.0.0 | end |
68
+ | ^13.0.0 | ^13.0.0 | ^13.0.0 | end |
69
69
 
70
70
  Install the specified version if required using:
71
71
 
@@ -32,12 +32,12 @@ export declare class NzxConfigurableQueryComponent implements OnChanges, OnInit,
32
32
  queryChange: EventEmitter<NzxQueryParams>;
33
33
  /** 重置时会触发抛出查询参数 */
34
34
  resetChange: EventEmitter<NzxQueryParams>;
35
- /** form 表单*/
36
- queryForm: FormGroup;
37
35
  /** 查询组件出参*/
38
36
  get queryParams(): any;
39
37
  set queryParams(value: any);
40
38
  get nzxCollapse(): boolean;
39
+ /** form 表单*/
40
+ queryForm: FormGroup;
41
41
  locale: NzxQueryI18nInterface;
42
42
  collapseIcon: string;
43
43
  collapseText: string;
@@ -45,13 +45,12 @@ export declare class NzxConfigurableQueryComponent implements OnChanges, OnInit,
45
45
  private defaultValue;
46
46
  private cacheParams;
47
47
  private destroy$;
48
- private _nzxBtnSpan;
49
48
  private queyFormEl;
50
49
  controlTemplateList: QueryList<NzxControlDirective>;
51
50
  constructor(i18n: NzI18nService, fb: FormBuilder, cd: ChangeDetectorRef);
52
- ngAfterViewInit(): void;
53
51
  ngOnChanges(changes: SimpleChanges): void;
54
52
  ngOnInit(): void;
53
+ ngAfterViewInit(): void;
55
54
  ngAfterContentInit(): void;
56
55
  /** 设置查询值进行回显 */
57
56
  setQueryParams(cacheParams: NzxQueryParams): void;
@@ -79,7 +78,7 @@ export declare class NzxConfigurableQueryComponent implements OnChanges, OnInit,
79
78
  */
80
79
  getFormControl(path: string | readonly (string | number)[]): AbstractControl<any, any> | null;
81
80
  /** 查询 */
82
- search(event?: Event): void;
81
+ search(): void;
83
82
  /** 重置 */
84
83
  reset(): void;
85
84
  /**展开、收起*/
@@ -56,29 +56,8 @@ export class NzxConfigurableQueryComponent {
56
56
  this.defaultValue = {};
57
57
  this.cacheParams = {};
58
58
  this.destroy$ = new Subject();
59
- this._nzxBtnSpan = null;
60
59
  this.queryForm = this.fb.group({});
61
60
  }
62
- ngAfterViewInit() {
63
- if (this.queyFormEl) {
64
- fromEvent(this.queyFormEl.nativeElement, 'keydown')
65
- .pipe(takeUntil(this.destroy$))
66
- .subscribe((event) => {
67
- if (event.key === 'Enter') {
68
- event.stopPropagation();
69
- event.preventDefault();
70
- this.search();
71
- }
72
- // 检查是否同时按下了Ctrl键(在Windows/Linux上)和S键
73
- if ((event.ctrlKey || event.metaKey) && event.key === 'r') {
74
- // 注意:event.metaKey用于兼容Mac的Command键
75
- event.preventDefault(); // 阻止浏览器默认的保存行为
76
- event.stopPropagation();
77
- this.reset();
78
- }
79
- });
80
- }
81
- }
82
61
  ngOnChanges(changes) {
83
62
  if (changes['controls'] && !changes['controls'].isFirstChange()) {
84
63
  const controls = changes['controls'].currentValue;
@@ -100,7 +79,26 @@ export class NzxConfigurableQueryComponent {
100
79
  ...this.fixedParams,
101
80
  };
102
81
  });
103
- this._nzxBtnSpan = this.nzxBtnSpan;
82
+ }
83
+ ngAfterViewInit() {
84
+ if (this.queyFormEl) {
85
+ fromEvent(this.queyFormEl.nativeElement, 'keydown')
86
+ .pipe(takeUntil(this.destroy$))
87
+ .subscribe((event) => {
88
+ if (event.key === 'Enter') {
89
+ event.stopPropagation();
90
+ event.preventDefault();
91
+ this.search();
92
+ }
93
+ // 检查是否同时按下了Ctrl键(在Windows/Linux上)和S键
94
+ if ((event.ctrlKey || event.metaKey) && event.key === 'r') {
95
+ // 注意:event.metaKey用于兼容Mac的Command键
96
+ event.preventDefault(); // 阻止浏览器默认的保存行为
97
+ event.stopPropagation();
98
+ this.reset();
99
+ }
100
+ });
101
+ }
104
102
  }
105
103
  ngAfterContentInit() {
106
104
  this.generateForm(this.controls);
@@ -117,14 +115,15 @@ export class NzxConfigurableQueryComponent {
117
115
  * 根据controlName设置config值
118
116
  */
119
117
  setControl(controlName, config) {
120
- Promise.resolve().then(() => {
118
+ setTimeout(() => {
121
119
  const control = this.getControl(controlName);
122
120
  if (control) {
123
121
  Object.keys(config).forEach((key) => {
124
122
  control[key] = config[key];
125
123
  });
124
+ this.cd.markForCheck();
126
125
  }
127
- });
126
+ }, 0);
128
127
  }
129
128
  /**
130
129
  * 动态添加控件
@@ -177,10 +176,7 @@ export class NzxConfigurableQueryComponent {
177
176
  return this.queryForm.get(path);
178
177
  }
179
178
  /** 查询 */
180
- search(event) {
181
- if (event) {
182
- event.stopPropagation();
183
- }
179
+ search() {
184
180
  if (this.queryForm.invalid) {
185
181
  updateControlStatus(this.queryForm);
186
182
  return;
@@ -253,11 +249,11 @@ export class NzxConfigurableQueryComponent {
253
249
  this.calculateText();
254
250
  }
255
251
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxConfigurableQueryComponent, deps: [{ token: i1.NzI18nService }, { token: i2.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
256
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: NzxConfigurableQueryComponent, selector: "nzx-configurable-query", inputs: { controls: "controls", nzxJustify: "nzxJustify", nzxGutter: "nzxGutter", lineNumber: "lineNumber", nzxBtnSpan: "nzxBtnSpan", initQuery: "initQuery", fixedParams: "fixedParams" }, outputs: { queryChange: "queryChange", resetChange: "resetChange" }, queries: [{ propertyName: "controlTemplateList", predicate: NzxControlDirective, descendants: true }], viewQueries: [{ propertyName: "queyFormEl", first: true, predicate: ["queyForm"], descendants: true }], exportAs: ["NzxConfigurableQuery"], usesOnChanges: true, ngImport: i0, template: "<form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n\t<div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n\t\t<ng-container *ngFor=\"let config of controls; let i = index\">\n\t\t\t<div\n\t\t\t\t*ngIf=\"!config.hidden\"\n\t\t\t\tnz-col\n\t\t\t\t[nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n\t\t\t\t[hidden]=\"config.collapse\"\n\t\t\t\t[nzOrder]=\"i\"\n\t\t\t>\n\t\t\t\t<nzx-configurable-query-item\n\t\t\t\t\t*ngIf=\"config.controlName\"\n\t\t\t\t\t[form]=\"queryForm\"\n\t\t\t\t\t[control]=\"config\"\n\t\t\t\t></nzx-configurable-query-item>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<div\n\t\t\t[nzOrder]=\"controls.length\"\n\t\t\tclass=\"nzx-query-btn\"\n\t\t\tnz-col\n\t\t\t[nzSpan]=\"nzxBtnSpan || 24 / lineNumber\"\n\t\t>\n\t\t\t<div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n\t\t\t\t<button\n\t\t\t\t\tnz-button\n\t\t\t\t\tnzType=\"primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttitle=\"Enter\"\n\t\t\t\t\t(click)=\"search($event)\"\n\t\t\t\t>\n\t\t\t\t\t{{ locale['query'] }}\n\t\t\t\t</button>\n\t\t\t\t<button nz-button type=\"button\" title=\"ctrl+r\" (click)=\"reset()\">\n\t\t\t\t\t{{ locale['reset'] }}\n\t\t\t\t</button>\n\t\t\t\t<ng-content></ng-content>\n\t\t\t\t<a\n\t\t\t\t\t*ngIf=\"nzxCollapse\"\n\t\t\t\t\tnz-button\n\t\t\t\t\tnzType=\"link\"\n\t\t\t\t\t(click)=\"toggleCollapse()\"\n\t\t\t\t>\n\t\t\t\t\t{{ collapseText }}\n\t\t\t\t\t<i nz-icon [nzType]=\"collapseIcon\"></i>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</form>\n", styles: [".nzx-query-container{padding:12px;background-color:#fff;border-radius:8px}.nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}.nzx-query-container .nzx-query-btn button{margin:0 4px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i4.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: i5.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzForm"] }, { kind: "component", type: i6.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i7.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i8.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i9.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i10.NzxConfigurableQueryItemComponent, selector: "nzx-configurable-query-item", inputs: ["form", "control"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
252
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: NzxConfigurableQueryComponent, selector: "nzx-configurable-query", inputs: { controls: "controls", nzxJustify: "nzxJustify", nzxGutter: "nzxGutter", lineNumber: "lineNumber", nzxBtnSpan: "nzxBtnSpan", initQuery: "initQuery", fixedParams: "fixedParams" }, outputs: { queryChange: "queryChange", resetChange: "resetChange" }, queries: [{ propertyName: "controlTemplateList", predicate: NzxControlDirective, descendants: true }], viewQueries: [{ propertyName: "queyFormEl", first: true, predicate: ["queyForm"], descendants: true }], exportAs: ["NzxConfigurableQuery"], usesOnChanges: true, ngImport: i0, template: "<form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n <div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n <ng-container *ngFor=\"let config of controls; let i = index\">\n <div\n *ngIf=\"!config.hidden\"\n nz-col\n [nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n [hidden]=\"config.collapse\"\n [nzOrder]=\"i\"\n >\n <nzx-configurable-query-item\n *ngIf=\"config.controlName\"\n [form]=\"queryForm\"\n [control]=\"config\"\n ></nzx-configurable-query-item>\n </div>\n </ng-container>\n\n <div\n class=\"nzx-query-btn\"\n nz-col\n [nzOrder]=\"controls.length\"\n [nzSpan]=\"nzxBtnSpan || 24 / lineNumber\"\n >\n <div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n <button\n nz-button\n nzType=\"primary\"\n type=\"button\"\n title=\"Enter\"\n (click)=\"search()\"\n >\n {{ locale['query'] }}\n </button>\n <button nz-button type=\"button\" title=\"ctrl+r\" (click)=\"reset()\">\n {{ locale['reset'] }}\n </button>\n <ng-content></ng-content>\n <a\n *ngIf=\"nzxCollapse\"\n nz-button\n nzType=\"link\"\n (click)=\"toggleCollapse()\"\n >\n {{ collapseText }}\n <i nz-icon [nzType]=\"collapseIcon\"></i>\n </a>\n </div>\n </div>\n </div>\n</form>\n", styles: [".nzx-query-container{padding:12px;background-color:#fff;border-radius:8px}.nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}.nzx-query-container .nzx-query-btn button{margin:0 4px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i4.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: i5.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzForm"] }, { kind: "component", type: i6.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i7.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i8.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i9.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i10.NzxConfigurableQueryItemComponent, selector: "nzx-configurable-query-item", inputs: ["form", "control"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
257
253
  }
258
254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxConfigurableQueryComponent, decorators: [{
259
255
  type: Component,
260
- args: [{ selector: 'nzx-configurable-query', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'NzxConfigurableQuery', template: "<form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n\t<div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n\t\t<ng-container *ngFor=\"let config of controls; let i = index\">\n\t\t\t<div\n\t\t\t\t*ngIf=\"!config.hidden\"\n\t\t\t\tnz-col\n\t\t\t\t[nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n\t\t\t\t[hidden]=\"config.collapse\"\n\t\t\t\t[nzOrder]=\"i\"\n\t\t\t>\n\t\t\t\t<nzx-configurable-query-item\n\t\t\t\t\t*ngIf=\"config.controlName\"\n\t\t\t\t\t[form]=\"queryForm\"\n\t\t\t\t\t[control]=\"config\"\n\t\t\t\t></nzx-configurable-query-item>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<div\n\t\t\t[nzOrder]=\"controls.length\"\n\t\t\tclass=\"nzx-query-btn\"\n\t\t\tnz-col\n\t\t\t[nzSpan]=\"nzxBtnSpan || 24 / lineNumber\"\n\t\t>\n\t\t\t<div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n\t\t\t\t<button\n\t\t\t\t\tnz-button\n\t\t\t\t\tnzType=\"primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttitle=\"Enter\"\n\t\t\t\t\t(click)=\"search($event)\"\n\t\t\t\t>\n\t\t\t\t\t{{ locale['query'] }}\n\t\t\t\t</button>\n\t\t\t\t<button nz-button type=\"button\" title=\"ctrl+r\" (click)=\"reset()\">\n\t\t\t\t\t{{ locale['reset'] }}\n\t\t\t\t</button>\n\t\t\t\t<ng-content></ng-content>\n\t\t\t\t<a\n\t\t\t\t\t*ngIf=\"nzxCollapse\"\n\t\t\t\t\tnz-button\n\t\t\t\t\tnzType=\"link\"\n\t\t\t\t\t(click)=\"toggleCollapse()\"\n\t\t\t\t>\n\t\t\t\t\t{{ collapseText }}\n\t\t\t\t\t<i nz-icon [nzType]=\"collapseIcon\"></i>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</form>\n", styles: [".nzx-query-container{padding:12px;background-color:#fff;border-radius:8px}.nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}.nzx-query-container .nzx-query-btn button{margin:0 4px}\n"] }]
256
+ args: [{ selector: 'nzx-configurable-query', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'NzxConfigurableQuery', template: "<form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n <div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n <ng-container *ngFor=\"let config of controls; let i = index\">\n <div\n *ngIf=\"!config.hidden\"\n nz-col\n [nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n [hidden]=\"config.collapse\"\n [nzOrder]=\"i\"\n >\n <nzx-configurable-query-item\n *ngIf=\"config.controlName\"\n [form]=\"queryForm\"\n [control]=\"config\"\n ></nzx-configurable-query-item>\n </div>\n </ng-container>\n\n <div\n class=\"nzx-query-btn\"\n nz-col\n [nzOrder]=\"controls.length\"\n [nzSpan]=\"nzxBtnSpan || 24 / lineNumber\"\n >\n <div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n <button\n nz-button\n nzType=\"primary\"\n type=\"button\"\n title=\"Enter\"\n (click)=\"search()\"\n >\n {{ locale['query'] }}\n </button>\n <button nz-button type=\"button\" title=\"ctrl+r\" (click)=\"reset()\">\n {{ locale['reset'] }}\n </button>\n <ng-content></ng-content>\n <a\n *ngIf=\"nzxCollapse\"\n nz-button\n nzType=\"link\"\n (click)=\"toggleCollapse()\"\n >\n {{ collapseText }}\n <i nz-icon [nzType]=\"collapseIcon\"></i>\n </a>\n </div>\n </div>\n </div>\n</form>\n", styles: [".nzx-query-container{padding:12px;background-color:#fff;border-radius:8px}.nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}.nzx-query-container .nzx-query-btn button{margin:0 4px}\n"] }]
261
257
  }], ctorParameters: () => [{ type: i1.NzI18nService }, { type: i2.FormBuilder }, { type: i0.ChangeDetectorRef }], propDecorators: { controls: [{
262
258
  type: Input
263
259
  }], nzxJustify: [{
@@ -283,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
283
279
  type: ContentChildren,
284
280
  args: [NzxControlDirective, { descendants: true }]
285
281
  }] } });
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLXF1ZXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmZpZ3VyYWJsZS1xdWVyeS9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdOLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUduRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7OztBQUcxRDs7O0dBR0c7QUFTSCxNQUFNLE9BQU8sNkJBQTZCO0lBNkJ6QyxZQUFZO0lBQ1osSUFBSSxXQUFXO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxLQUFVO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQWlCRCxZQUNTLElBQW1CLEVBQ25CLEVBQWUsRUFDZixFQUFxQjtRQUZyQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25C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QztJQUN0QixDQUFDOzhHQXpTVyw2QkFBNkI7a0dBQTdCLDZCQUE2QixtV0FzRHhCLG1CQUFtQixpTkNoR3JDLDArQ0FtREE7OzJGRFRhLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDQyx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsc0JBQXNCOzRJQU12QixRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkE0QndCLFVBQVU7c0JBQXhDLFNBQVM7dUJBQUMsVUFBVTtnQkFHckIsbUJBQW1CO3NCQURsQixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0QWZ0ZXJDb250ZW50SW5pdCxcclxuXHRBZnRlclZpZXdJbml0LFxyXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdENvbXBvbmVudCxcclxuXHRDb250ZW50Q2hpbGRyZW4sXHJcblx0RWxlbWVudFJlZixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T25DaGFuZ2VzLFxyXG5cdE9uRGVzdHJveSxcclxuXHRPbkluaXQsXHJcblx0T3V0cHV0LFxyXG5cdFF1ZXJ5TGlzdCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFZpZXdDaGlsZCxcclxuXHRWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IE56eFF1ZXJ5STE4bkludGVyZmFjZSB9IGZyb20gJ25nLXpvcnJvLWFudGQtZXh0ZW5zaW9uL2kxOG4nO1xyXG5pbXBvcnQgeyB1cGRhdGVDb250cm9sU3RhdHVzIH0gZnJvbSAnbmctem9ycm8tYW50ZC1leHRlbnNpb24vdXRpbCc7XHJcbmltcG9ydCB7IE56SnVzdGlmeSB9IGZyb20gJ25nLXpvcnJvLWFudGQvZ3JpZCc7XHJcbmltcG9ydCB7IE56STE4blNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL2kxOG4nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBOenhDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250cm9sLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMsIE56eFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi90eXBlJztcclxuXHJcbi8qKlxyXG4gKiDmn6Xor6Lnu4Tku7ZcclxuICog5pSv5oyB5qih5p2/6Ieq5a6a5LmJ77yM5Zyo5L2/55So5qih5p2/6Ieq5a6a5LmJ5pe277yM6KaB5rOo5oSPY29udHJvbFR5cGXlupTor6Xorr7nva7kuLpUZW1wbGF0ZeW5tuS4lOehruS/nWNvbnRyb2xOYW1l5LiO5oyH5Luk5LiK55qEbnp4Q29udHJvbOW6lOivpeebuOWQjFxyXG4gKi9cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbnp4LWNvbmZpZ3VyYWJsZS1xdWVyeScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vY29uZmlndXJhYmxlLXF1ZXJ5LmNvbXBvbmVudC5sZXNzJ10sXHJcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcblx0ZXhwb3J0QXM6ICdOenhDb25maWd1cmFibGVRdWVyeScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOenhDb25maWd1cmFibGVRdWVyeUNvbXBvbmVudFxyXG5cdGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveVxyXG57XHJcblx0LyoqIOmFjee9rumhuSAqL1xyXG5cdEBJbnB1dCgpIGNvbnRyb2xzOiBBcnJheTxOenhRdWVyeUNvbnRyb2xPcHRpb25zPiA9IFtdO1xyXG5cclxuXHQvKiog5p+l6K+i6KGo5Y2V5o6S5YiX5pa55byPICovXHJcblx0QElucHV0KCkgbnp4SnVzdGlmeTogTnpKdXN0aWZ5ID0gJ3N0YXJ0JztcclxuXHQvKiog5p+l6K+i6aG56Ze06ZqUICovXHJcblx0QElucHV0KCkgbnp4R3V0dGVyOiBudW1iZXIgPSA4O1xyXG5cdC8qKiDkuIDooYzlsZXnpLrlpJrlsJHmn6Xor6LpobkgKi9cclxuXHRASW5wdXQoKSBsaW5lTnVtYmVyOiBudW1iZXIgPSAzO1xyXG5cdC8qKiDmk43kvZzmjInpkq7miYDljaDmoIXmoLzmlbDvvIwyNOWImeaNouihjCAqL1xyXG5cdEBJbnB1dCgpIG56eEJ0blNwYW46IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuXHQvKiog5Yid5aeL5YyW5pe277yM5Li75Yqo5p+l6K+iICovXHJcblx0QElucHV0KCkgaW5pdFF1ZXJ5ID0gZmFsc2U7XHJcblxyXG5cdC8qKiDnvLrnnIEg5Zu65a6a5Y+C5pWwICovXHJcblx0QElucHV0KCkgZml4ZWRQYXJhbXMgPSB7fTtcclxuXHJcblx0LyoqIOafpeivouaXtuS8muinpuWPkeaKm+WHuuafpeivouWPguaVsCAqL1xyXG5cdEBPdXRwdXQoKSBxdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tnp4UXVlcnlQYXJhbXM+KCk7XHJcblx0LyoqIOmHjee9ruaXtuS8muinpuWPkeaKm+WHuuafpeivouWPguaVsCAqL1xyXG5cdEBPdXRwdXQoKSByZXNldENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tnp4UXVlcnlQYXJhbXM+KCk7XHJcblxyXG5cdC8qKiBmb3JtIOihqOWNlSovXHJcblx0cXVlcnlGb3JtITogRm9ybUdyb3VwO1xyXG5cclxuXHQvKiog5p+l6K+i57uE5Lu25Ye65Y+CKi9cclxuXHRnZXQgcXVlcnlQYXJhbXMoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbXM7XHJcblx0fVxyXG5cclxuXHRzZXQgcXVlcnlQYXJhbXModmFsdWU6IGFueSkge1xyXG5cdFx0dGhpcy5fcXVlcnlQYXJhbXMgPSB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdGdldCBuenhDb2xsYXBzZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLmNvbnRyb2xzLnNvbWUoKGkpID0+IGkuaGFzT3duUHJvcGVydHkoJ2NvbGxhcHNlJykpO1xyXG5cdH1cclxuXHJcblx0bG9jYWxlITogTnp4UXVlcnlJMThuSW50ZXJmYWNlO1xyXG5cdGNvbGxhcHNlSWNvbjogc3RyaW5nID0gJ2Rvd24nO1xyXG5cdGNvbGxhcHNlVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG5cdHByaXZhdGUgX3F1ZXJ5UGFyYW1zOiBOenhRdWVyeVBhcmFtcyA9IHt9O1xyXG5cdHByaXZhdGUgZGVmYXVsdFZhbHVlOiBOenhRdWVyeVBhcmFtcyA9IHt9O1xyXG5cdHByaXZhdGUgY2FjaGVQYXJhbXM6IE56eFF1ZXJ5UGFyYW1zID0ge307XHJcblx0cHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblx0cHJpdmF0ZSBfbnp4QnRuU3BhbjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cdEBWaWV3Q2hpbGQoJ3F1ZXlGb3JtJykgcHJpdmF0ZSBxdWV5Rm9ybUVsITogRWxlbWVudFJlZjxIVE1MRm9ybUVsZW1lbnQ+O1xyXG5cclxuXHRAQ29udGVudENoaWxkcmVuKE56eENvbnRyb2xEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcclxuXHRjb250cm9sVGVtcGxhdGVMaXN0ITogUXVlcnlMaXN0PE56eENvbnRyb2xEaXJlY3RpdmU+O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgaTE4bjogTnpJMThuU2VydmljZSxcclxuXHRcdHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG5cdFx0cHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuXHQpIHtcclxuXHRcdHRoaXMucXVlcnlGb3JtID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcblx0fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5xdWV5Rm9ybUVsKSB7XHJcblx0XHRcdGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLnF1ZXlGb3JtRWwubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxyXG5cdFx0XHRcdC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuXHRcdFx0XHQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG5cdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZWFyY2goKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIOajgOafpeaYr+WQpuWQjOaXtuaMieS4i+S6hkN0cmzplK7vvIjlnKhXaW5kb3dzL0xpbnV45LiK77yJ5ZKMU+mUrlxyXG5cdFx0XHRcdFx0aWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleSA9PT0gJ3InKSB7XHJcblx0XHRcdFx0XHRcdC8vIOazqOaEj++8mmV2ZW50Lm1ldGFLZXnnlKjkuo7lhbzlrrlNYWPnmoRDb21tYW5k6ZSuXHJcblx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIOmYu+atoua1j+iniOWZqOm7mOiupOeahOS/neWtmOihjOS4ulxyXG5cdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5yZXNldCgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cdFx0aWYgKGNoYW5nZXNbJ2NvbnRyb2xzJ10gJiYgIWNoYW5nZXNbJ2NvbnRyb2xzJ10uaXNGaXJzdENoYW5nZSgpKSB7XHJcblx0XHRcdGNvbnN0IGNvbnRyb2xzID0gY2hhbmdlc1snY29udHJvbHMnXS5jdXJyZW50VmFsdWU7XHJcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGNvbnRyb2xzKSkge1xyXG5cdFx0XHRcdHRoaXMuZ2VuZXJhdGVGb3JtKGNvbnRyb2xzKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmxvY2FsZSA9IHRoaXMuaTE4bi5nZXRMb2NhbGVEYXRhKCdRdWVyeScpO1xyXG5cclxuXHRcdFx0dGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMucXVlcnlGb3JtLnZhbHVlQ2hhbmdlc1xyXG5cdFx0XHQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuX3F1ZXJ5UGFyYW1zID0ge1xyXG5cdFx0XHRcdFx0Li4udmFsLFxyXG5cdFx0XHRcdFx0Li4udGhpcy5maXhlZFBhcmFtcyxcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHR0aGlzLl9uenhCdG5TcGFuID0gdGhpcy5uenhCdG5TcGFuO1xyXG5cdH1cclxuXHJcblx0bmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5nZW5lcmF0ZUZvcm0odGhpcy5jb250cm9scyk7XHJcblxyXG5cdFx0aWYgKHRoaXMuaW5pdFF1ZXJ5KSB7XHJcblx0XHRcdHRoaXMuc2VhcmNoKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiog6K6+572u5p+l6K+i5YC86L+b6KGM5Zue5pi+ICovXHJcblx0c2V0UXVlcnlQYXJhbXMoY2FjaGVQYXJhbXM6IE56eFF1ZXJ5UGFyYW1zKTogdm9pZCB7XHJcblx0XHR0aGlzLmNhY2hlUGFyYW1zID0gY2FjaGVQYXJhbXM7XHJcblx0XHR0aGlzLnF1ZXJ5Rm9ybS5wYXRjaFZhbHVlKGNhY2hlUGFyYW1zKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIOagueaNrmNvbnRyb2xOYW1l6K6+572uY29uZmln5YC8XHJcblx0ICovXHJcblx0c2V0Q29udHJvbChcclxuXHRcdGNvbnRyb2xOYW1lOiBzdHJpbmcsXHJcblx0XHRjb25maWc6IFBhcnRpYWw8Tnp4UXVlcnlDb250cm9sT3B0aW9ucz5cclxuXHQpOiB2b2lkIHtcclxuXHRcdFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xyXG5cdFx0XHRjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKGNvbnRyb2xOYW1lKTtcclxuXHRcdFx0aWYgKGNvbnRyb2wpIHtcclxuXHRcdFx0XHRPYmplY3Qua2V5cyhjb25maWcpLmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdFx0KGNvbnRyb2wgYXMgYW55KVtrZXldID0gKGNvbmZpZyBhcyBhbnkpW2tleV07XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICog5Yqo5oCB5re75Yqg5o6n5Lu2XHJcblx0ICogQHBhcmFtIGNvbmZpZyDphY3nva7poblcclxuXHQgKiBAcGFyYW0gcG9zaXRpb24g5re75Yqg5L2N572uIOS4jeS8oOS4uuacq+WwvlxyXG5cdCAqL1xyXG5cdGFkZENvbnRyb2woXHJcblx0XHRjb25maWc6IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMsXHJcblx0XHRwb3NpdGlvbj86IG51bWJlciB8IHVuZGVmaW5lZFxyXG5cdCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChjb25maWcuY29udHJvbE5hbWUpO1xyXG5cdFx0aWYgKCFjb250cm9sKSB7XHJcblx0XHRcdGlmIChjb25maWcuY29udHJvbE5hbWUpIHtcclxuXHRcdFx0XHR0aGlzLnF1ZXJ5Rm9ybS5hZGRDb250cm9sKFxyXG5cdFx0XHRcdFx0Y29uZmlnLmNvbnRyb2xOYW1lLFxyXG5cdFx0XHRcdFx0Y29uZmlnLmNvbnRyb2xJbnN0YW5jZSA/PyB0aGlzLmZiLmNvbnRyb2woY29uZmlnLmRlZmF1bHQgPz8gbnVsbClcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChwb3NpdGlvbiA9PT0gdm9pZCAwIHx8IHBvc2l0aW9uID09PSBudWxsKSB7XHJcblx0XHRcdFx0dGhpcy5jb250cm9scy5wdXNoKGNvbmZpZyk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb250cm9scy5zcGxpY2UocG9zaXRpb24gLSAxLCAwLCBjb25maWcpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuY2FsY3VsYXRlVGV4dCgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhyb3cgYFRoZSBjb250cm9sIG5hbWU6ICcke2NvbmZpZy5jb250cm9sTmFtZX0nIGFscmVhZHkgZXhpc3RzIWA7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDmoLnmja7mjqfku7blkI3liKDpmaTmjqfku7ZcclxuXHQgKi9cclxuXHRyZW1vdmVDb250cm9sKGNvbnRyb2xOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woY29udHJvbE5hbWUpO1xyXG5cdFx0aWYgKGNvbnRyb2wpIHtcclxuXHRcdFx0dGhpcy5xdWVyeUZvcm0ucmVtb3ZlQ29udHJvbChjb250cm9sTmFtZSk7XHJcblx0XHRcdHRoaXMuY29udHJvbHMgPSB0aGlzLmNvbnRyb2xzLmZpbHRlcihcclxuXHRcdFx0XHQoYykgPT4gYy5jb250cm9sTmFtZSAhPT0gY29udHJvbE5hbWVcclxuXHRcdFx0KTtcclxuXHJcblx0XHRcdHRoaXMuY2FsY3VsYXRlVGV4dCgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhyb3cgYFRoZSBjb250cm9sIG5hbWU6ICcke2NvbnRyb2xOYW1lfScgbm90IGZpbmQhYDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIOagueaNrmNvbnRyb2xOYW1l6I635Y+WY29uZmln6aG5XHJcblx0ICovXHJcblx0Z2V0Q29udHJvbChcclxuXHRcdGNvbnRyb2xOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWRcclxuXHQpOiBOenhRdWVyeUNvbnRyb2xPcHRpb25zIHwgdW5kZWZpbmVkIHtcclxuXHRcdHJldHVybiB0aGlzLmNvbnRyb2xzLmZpbmQoKGNvbmZpZykgPT4gY29uZmlnLmNvbnRyb2xOYW1lID09PSBjb250cm9sTmFtZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDmo4DntKLnu5nlrprmjqfku7blkI3np7DmiJbot6/lvoTnmoTlrZDmjqfku7bjgIJcclxuXHQgKiDov5nkuKogZ2V0Rm9ybUNvbnRyb2wg562+5ZCN5pSv5oyB5a2X56ym5Liy5ZKMIGNvbnN0IOaVsOe7hO+8iC5nZXRGb3JtQ29udHJvbChbJ2ZvbycsICdiYXInXSBhcyBjb25zdCnvvIlcclxuXHQgKi9cclxuXHRnZXRGb3JtQ29udHJvbChcclxuXHRcdHBhdGg6IHN0cmluZyB8IHJlYWRvbmx5IChzdHJpbmcgfCBudW1iZXIpW11cclxuXHQpOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+IHwgbnVsbCB7XHJcblx0XHRyZXR1cm4gdGhpcy5xdWVyeUZvcm0uZ2V0KHBhdGgpO1xyXG5cdH1cclxuXHJcblx0LyoqIOafpeivoiAqL1xyXG5cdHNlYXJjaChldmVudD86IEV2ZW50KTogdm9pZCB7XHJcblx0XHRpZiAoZXZlbnQpIHtcclxuXHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5xdWVyeUZvcm0uaW52YWxpZCkge1xyXG5cdFx0XHR1cGRhdGVDb250cm9sU3RhdHVzKHRoaXMucXVlcnlGb3JtKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5xdWVyeUNoYW5nZS5lbWl0KHRoaXMuX3F1ZXJ5UGFyYW1zKTtcclxuXHR9XHJcblxyXG5cdC8qKiDph43nva4gKi9cclxuXHRyZXNldCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnF1ZXJ5Rm9ybS5pbnZhbGlkKSB7XHJcblx0XHRcdHVwZGF0ZUNvbnRyb2xTdGF0dXModGhpcy5xdWVyeUZvcm0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnF1ZXJ5Rm9ybS5yZXNldCh0aGlzLmRlZmF1bHRWYWx1ZSk7XHJcblx0XHR0aGlzLnJlc2V0Q2hhbmdlLmVtaXQodGhpcy5fcXVlcnlQYXJhbXMpO1xyXG5cdH1cclxuXHJcblx0Lyoq5bGV5byA44CB5pS26LW3Ki9cclxuXHR0b2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcclxuXHRcdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNvbnRyb2xzLmxlbmd0aDsgaW5kZXgrKykge1xyXG5cdFx0XHRjb25zdCBjb25maWcgPSB0aGlzLmNvbnRyb2xzW2luZGV4XTtcclxuXHRcdFx0aWYgKGNvbmZpZy5oYXNPd25Qcm9wZXJ0eSgnY29sbGFwc2UnKSAmJiBjb25maWcuY29sbGFwc2UgPT09IHRydWUpIHtcclxuXHRcdFx0XHQoY29uZmlnLmNvbGxhcHNlIGFzIGJvb2xlYW4pID0gZmFsc2U7XHJcblx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0Y29uZmlnLmhhc093blByb3BlcnR5KCdjb2xsYXBzZScpICYmXHJcblx0XHRcdFx0KGNvbmZpZy5jb2xsYXBzZSBhcyBib29sZWFuKSA9PT0gZmFsc2VcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0Y29uZmlnLmNvbGxhcHNlID0gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5jYWxjdWxhdGVUZXh0KCk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG5cdFx0dGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjYWxjdWxhdGVUZXh0KCkge1xyXG5cdFx0aWYgKHRoaXMuY29udHJvbHMuc29tZSgoaSkgPT4gaS5jb2xsYXBzZSA9PT0gdHJ1ZSkpIHtcclxuXHRcdFx0dGhpcy5jb2xsYXBzZUljb24gPSAnZG93bic7XHJcblx0XHRcdHRoaXMuY29sbGFwc2VUZXh0ID0gdGhpcy5sb2NhbGUuZXhwYW5kO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5jb2xsYXBzZUljb24gPSAndXAnO1xyXG5cdFx0XHR0aGlzLmNvbGxhcHNlVGV4dCA9IHRoaXMubG9jYWxlLmNvbGxhcHNlO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHR9XHJcblxyXG5cdC8qKiDmuIXnqbrooajljZXmjqfku7YgKi9cclxuXHRwcml2YXRlIGNsZWFyRm9ybUNvbnRyb2woKTogdm9pZCB7XHJcblx0XHRPYmplY3Qua2V5cyh0aGlzLnF1ZXJ5Rm9ybS5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcblx0XHRcdHRoaXMucXVlcnlGb3JtLnJlbW92ZUNvbnRyb2woa2V5KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIOeUn+aIkOihqOWNlSAqL1xyXG5cdHByaXZhdGUgZ2VuZXJhdGVGb3JtKGNvbnRyb2xDb25maWdzOiBBcnJheTxOenhRdWVyeUNvbnRyb2xPcHRpb25zPik6IHZvaWQge1xyXG5cdFx0dGhpcy5jbGVhckZvcm1Db250cm9sKCk7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBjb25maWcgb2YgY29udHJvbENvbmZpZ3MpIHtcclxuXHRcdFx0aWYgKGNvbmZpZy5jb250cm9sVHlwZSA9PT0gJ1RlbXBsYXRlJykge1xyXG5cdFx0XHRcdGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnRyb2xUZW1wbGF0ZUxpc3QuZmluZChcclxuXHRcdFx0XHRcdChkaXJlY3RpdmUpID0+IGRpcmVjdGl2ZS5uenhDb250cm9sID09PSBjb25maWcuY29udHJvbE5hbWVcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdGlmIChpdGVtKSB7XHJcblx0XHRcdFx0XHRjb25maWcudGVtcGxhdGVSZWYgPSBpdGVtLnRlbXBsYXRlUmVmO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoY29uZmlnLmNvbnRyb2xOYW1lKSB7XHJcblx0XHRcdFx0dGhpcy5xdWVyeUZvcm0uYWRkQ29udHJvbChcclxuXHRcdFx0XHRcdGNvbmZpZy5jb250cm9sTmFtZSxcclxuXHRcdFx0XHRcdGNvbmZpZy5jb250cm9sSW5zdGFuY2UgPz8gdGhpcy5mYi5jb250cm9sKGNvbmZpZy5kZWZhdWx0ID8/IG51bGwpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5kZWZhdWx0VmFsdWUgPSB0aGlzLnF1ZXJ5Rm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG5cdFx0aWYgKHRoaXMuY2FjaGVQYXJhbXMpIHtcclxuXHRcdFx0Ly8g57yT5a2Y5Zue5pi+5p+l6K+i5p2h5Lu2XHJcblx0XHRcdHRoaXMucXVlcnlGb3JtLnBhdGNoVmFsdWUodGhpcy5jYWNoZVBhcmFtcyk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jYWxjdWxhdGVUZXh0KCk7XHJcblx0fVxyXG59XHJcbiIsIjxmb3JtICNxdWV5Rm9ybSBjbGFzcz1cIm56eC1xdWVyeS1jb250YWluZXJcIiBuei1mb3JtIFtmb3JtR3JvdXBdPVwicXVlcnlGb3JtXCI+XG5cdDxkaXYgbnotcm93IFtuekd1dHRlcl09XCJuenhHdXR0ZXJcIiBbbnpKdXN0aWZ5XT1cIm56eEp1c3RpZnlcIj5cblx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb25maWcgb2YgY29udHJvbHM7IGxldCBpID0gaW5kZXhcIj5cblx0XHRcdDxkaXZcblx0XHRcdFx0Km5nSWY9XCIhY29uZmlnLmhpZGRlblwiXG5cdFx0XHRcdG56LWNvbFxuXHRcdFx0XHRbbnpTcGFuXT1cImNvbmZpZy5uenhTcGFuIHx8IDI0IC8gbGluZU51bWJlclwiXG5cdFx0XHRcdFtoaWRkZW5dPVwiY29uZmlnLmNvbGxhcHNlXCJcblx0XHRcdFx0W256T3JkZXJdPVwiaVwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxuengtY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW1cblx0XHRcdFx0XHQqbmdJZj1cImNvbmZpZy5jb250cm9sTmFtZVwiXG5cdFx0XHRcdFx0W2Zvcm1dPVwicXVlcnlGb3JtXCJcblx0XHRcdFx0XHRbY29udHJvbF09XCJjb25maWdcIlxuXHRcdFx0XHQ+PC9uengtY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW0+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblxuXHRcdDxkaXZcblx0XHRcdFtuek9yZGVyXT1cImNvbnRyb2xzLmxlbmd0aFwiXG5cdFx0XHRjbGFzcz1cIm56eC1xdWVyeS1idG5cIlxuXHRcdFx0bnotY29sXG5cdFx0XHRbbnpTcGFuXT1cIm56eEJ0blNwYW4gfHwgMjQgLyBsaW5lTnVtYmVyXCJcblx0XHQ+XG5cdFx0XHQ8ZGl2IG56LXJvdyBuekp1c3RpZnk9XCJlbmRcIiBuekFsaWduPVwibWlkZGxlXCI+XG5cdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHRuei1idXR0b25cblx0XHRcdFx0XHRuelR5cGU9XCJwcmltYXJ5XCJcblx0XHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHR0aXRsZT1cIkVudGVyXCJcblx0XHRcdFx0XHQoY2xpY2spPVwic2VhcmNoKCRldmVudClcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3sgbG9jYWxlWydxdWVyeSddIH19XG5cdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHQ8YnV0dG9uIG56LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJjdHJsK3JcIiAoY2xpY2spPVwicmVzZXQoKVwiPlxuXHRcdFx0XHRcdHt7IGxvY2FsZVsncmVzZXQnXSB9fVxuXHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXHRcdFx0XHQ8YVxuXHRcdFx0XHRcdCpuZ0lmPVwibnp4Q29sbGFwc2VcIlxuXHRcdFx0XHRcdG56LWJ1dHRvblxuXHRcdFx0XHRcdG56VHlwZT1cImxpbmtcIlxuXHRcdFx0XHRcdChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7IGNvbGxhcHNlVGV4dCB9fVxuXHRcdFx0XHRcdDxpIG56LWljb24gW256VHlwZV09XCJjb2xsYXBzZUljb25cIj48L2k+XG5cdFx0XHRcdDwvYT5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLXF1ZXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmZpZ3VyYWJsZS1xdWVyeS9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUduRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7OztBQUcxRDs7O0dBR0c7QUFTSCxNQUFNLE9BQU8sNkJBQTZCO0lBdUJ4QyxZQUFZO0lBQ1osSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxLQUFVO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQWlCRCxZQUNVLElBQW1CLEVBQ25CLEVBQWUsRUFDZixFQUFxQjtRQUZyQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25C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akIsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxzQkFBc0I7NElBTXZCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQXlCd0IsVUFBVTtzQkFBeEMsU0FBUzt1QkFBQyxVQUFVO2dCQUVyQixtQkFBbUI7c0JBRGxCLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRJbml0LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBOenhRdWVyeUkxOG5JbnRlcmZhY2UgfSBmcm9tICduZy16b3Jyby1hbnRkLWV4dGVuc2lvbi9pMThuJztcclxuaW1wb3J0IHsgdXBkYXRlQ29udHJvbFN0YXR1cyB9IGZyb20gJ25nLXpvcnJvLWFudGQtZXh0ZW5zaW9uL3V0aWwnO1xyXG5pbXBvcnQgeyBOekp1c3RpZnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2dyaWQnO1xyXG5pbXBvcnQgeyBOekkxOG5TZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pMThuJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTnp4Q29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vY29udHJvbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBOenhRdWVyeUNvbnRyb2xPcHRpb25zLCBOenhRdWVyeVBhcmFtcyB9IGZyb20gJy4vdHlwZSc7XHJcblxyXG4vKipcclxuICog5p+l6K+i57uE5Lu2XHJcbiAqIOaUr+aMgeaooeadv+iHquWumuS5ie+8jOWcqOS9v+eUqOaooeadv+iHquWumuS5ieaXtu+8jOimgeazqOaEj2NvbnRyb2xUeXBl5bqU6K+l6K6+572u5Li6VGVtcGxhdGXlubbkuJTnoa7kv51jb250cm9sTmFtZeS4juaMh+S7pOS4iueahG56eENvbnRyb2zlupTor6Xnm7jlkIxcclxuICovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ256eC1jb25maWd1cmFibGUtcXVlcnknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGV4cG9ydEFzOiAnTnp4Q29uZmlndXJhYmxlUXVlcnknLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTnp4Q29uZmlndXJhYmxlUXVlcnlDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gIC8qKiDphY3nva7pobkgKi9cclxuICBASW5wdXQoKSBjb250cm9sczogQXJyYXk8Tnp4UXVlcnlDb250cm9sT3B0aW9ucz4gPSBbXTtcclxuICAvKiog5p+l6K+i6KGo5Y2V5o6S5YiX5pa55byPICovXHJcbiAgQElucHV0KCkgbnp4SnVzdGlmeTogTnpKdXN0aWZ5ID0gJ3N0YXJ0JztcclxuICAvKiog5p+l6K+i6aG56Ze06ZqUICovXHJcbiAgQElucHV0KCkgbnp4R3V0dGVyOiBudW1iZXIgPSA4O1xyXG4gIC8qKiDkuIDooYzlsZXnpLrlpJrlsJHmn6Xor6LpobkgKi9cclxuICBASW5wdXQoKSBsaW5lTnVtYmVyOiBudW1iZXIgPSAzO1xyXG4gIC8qKiDmk43kvZzmjInpkq7miYDljaDmoIXmoLzmlbDvvIwyNOWImeaNouihjCAqL1xyXG4gIEBJbnB1dCgpIG56eEJ0blNwYW46IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIC8qKiDliJ3lp4vljJbml7bvvIzkuLvliqjmn6Xor6IgKi9cclxuICBASW5wdXQoKSBpbml0UXVlcnkgPSBmYWxzZTtcclxuICAvKiog57y655yBIOWbuuWumuWPguaVsCAqL1xyXG4gIEBJbnB1dCgpIGZpeGVkUGFyYW1zID0ge307XHJcblxyXG4gIC8qKiDmn6Xor6Lml7bkvJrop6blj5Hmipvlh7rmn6Xor6Llj4LmlbAgKi9cclxuICBAT3V0cHV0KCkgcXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE56eFF1ZXJ5UGFyYW1zPigpO1xyXG4gIC8qKiDph43nva7ml7bkvJrop6blj5Hmipvlh7rmn6Xor6Llj4LmlbAgKi9cclxuICBAT3V0cHV0KCkgcmVzZXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE56eFF1ZXJ5UGFyYW1zPigpO1xyXG5cclxuICAvKiog5p+l6K+i57uE5Lu25Ye65Y+CKi9cclxuICBnZXQgcXVlcnlQYXJhbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG4gIHNldCBxdWVyeVBhcmFtcyh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9xdWVyeVBhcmFtcyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG56eENvbGxhcHNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHMuc29tZSgoaSkgPT4gaS5oYXNPd25Qcm9wZXJ0eSgnY29sbGFwc2UnKSk7XHJcbiAgfVxyXG5cclxuICAvKiogZm9ybSDooajljZUqL1xyXG4gIHF1ZXJ5Rm9ybSE6IEZvcm1Hcm91cDtcclxuICBsb2NhbGUhOiBOenhRdWVyeUkxOG5JbnRlcmZhY2U7XHJcbiAgY29sbGFwc2VJY29uOiBzdHJpbmcgPSAnZG93bic7XHJcbiAgY29sbGFwc2VUZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgcHJpdmF0ZSBfcXVlcnlQYXJhbXM6IE56eFF1ZXJ5UGFyYW1zID0ge307XHJcbiAgcHJpdmF0ZSBkZWZhdWx0VmFsdWU6IE56eFF1ZXJ5UGFyYW1zID0ge307XHJcbiAgcHJpdmF0ZSBjYWNoZVBhcmFtczogTnp4UXVlcnlQYXJhbXMgPSB7fTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgncXVleUZvcm0nKSBwcml2YXRlIHF1ZXlGb3JtRWwhOiBFbGVtZW50UmVmPEhUTUxGb3JtRWxlbWVudD47XHJcbiAgQENvbnRlbnRDaGlsZHJlbihOenhDb250cm9sRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXHJcbiAgY29udHJvbFRlbXBsYXRlTGlzdCE6IFF1ZXJ5TGlzdDxOenhDb250cm9sRGlyZWN0aXZlPjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGkxOG46IE56STE4blNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLnF1ZXJ5Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe30pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbnRyb2xzJ10gJiYgIWNoYW5nZXNbJ2NvbnRyb2xzJ10uaXNGaXJzdENoYW5nZSgpKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2xzID0gY2hhbmdlc1snY29udHJvbHMnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbnRyb2xzKSkge1xyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVGb3JtKGNvbnRyb2xzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvY2FsZSA9IHRoaXMuaTE4bi5nZXRMb2NhbGVEYXRhKCdRdWVyeScpO1xyXG5cclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucXVlcnlGb3JtLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICAgICAgLi4udmFsLFxyXG4gICAgICAgICAgLi4udGhpcy5maXhlZFBhcmFtcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnF1ZXlGb3JtRWwpIHtcclxuICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRoaXMucXVleUZvcm1FbC5uYXRpdmVFbGVtZW50LCAna2V5ZG93bicpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8g5qOA5p+l5piv5ZCm5ZCM5pe25oyJ5LiL5LqGQ3RybOmUru+8iOWcqFdpbmRvd3MvTGludXjkuIrvvInlkoxT6ZSuXHJcbiAgICAgICAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5ID09PSAncicpIHtcclxuICAgICAgICAgICAgLy8g5rOo5oSP77yaZXZlbnQubWV0YUtleeeUqOS6juWFvOWuuU1hY+eahENvbW1hbmTplK5cclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8g6Zi75q2i5rWP6KeI5Zmo6buY6K6k55qE5L+d5a2Y6KGM5Li6XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdlbmVyYXRlRm9ybSh0aGlzLmNvbnRyb2xzKTtcclxuXHJcbiAgICBpZiAodGhpcy5pbml0UXVlcnkpIHtcclxuICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiDorr7nva7mn6Xor6LlgLzov5vooYzlm57mmL4gKi9cclxuICBzZXRRdWVyeVBhcmFtcyhjYWNoZVBhcmFtczogTnp4UXVlcnlQYXJhbXMpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FjaGVQYXJhbXMgPSBjYWNoZVBhcmFtcztcclxuICAgIHRoaXMucXVlcnlGb3JtLnBhdGNoVmFsdWUoY2FjaGVQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2uY29udHJvbE5hbWXorr7nva5jb25maWflgLxcclxuICAgKi9cclxuICBzZXRDb250cm9sKFxyXG4gICAgY29udHJvbE5hbWU6IHN0cmluZyxcclxuICAgIGNvbmZpZzogUGFydGlhbDxOenhRdWVyeUNvbnRyb2xPcHRpb25zPlxyXG4gICk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woY29udHJvbE5hbWUpO1xyXG4gICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGNvbmZpZykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAoY29udHJvbCBhcyBhbnkpW2tleV0gPSAoY29uZmlnIGFzIGFueSlba2V5XTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWKqOaAgea3u+WKoOaOp+S7tlxyXG4gICAqIEBwYXJhbSBjb25maWcg6YWN572u6aG5XHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIOa3u+WKoOS9jee9riDkuI3kvKDkuLrmnKvlsL5cclxuICAgKi9cclxuICBhZGRDb250cm9sKFxyXG4gICAgY29uZmlnOiBOenhRdWVyeUNvbnRyb2xPcHRpb25zLFxyXG4gICAgcG9zaXRpb24/OiBudW1iZXIgfCB1bmRlZmluZWRcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woY29uZmlnLmNvbnRyb2xOYW1lKTtcclxuICAgIGlmICghY29udHJvbCkge1xyXG4gICAgICBpZiAoY29uZmlnLmNvbnRyb2xOYW1lKSB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUZvcm0uYWRkQ29udHJvbChcclxuICAgICAgICAgIGNvbmZpZy5jb250cm9sTmFtZSxcclxuICAgICAgICAgIGNvbmZpZy5jb250cm9sSW5zdGFuY2UgPz8gdGhpcy5mYi5jb250cm9sKGNvbmZpZy5kZWZhdWx0ID8/IG51bGwpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocG9zaXRpb24gPT09IHZvaWQgMCB8fCBwb3NpdGlvbiA9PT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbHMucHVzaChjb25maWcpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29udHJvbHMuc3BsaWNlKHBvc2l0aW9uIC0gMSwgMCwgY29uZmlnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhbGN1bGF0ZVRleHQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IGBUaGUgY29udHJvbCBuYW1lOiAnJHtjb25maWcuY29udHJvbE5hbWV9JyBhbHJlYWR5IGV4aXN0cyFgO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2u5o6n5Lu25ZCN5Yig6Zmk5o6n5Lu2XHJcbiAgICovXHJcbiAgcmVtb3ZlQ29udHJvbChjb250cm9sTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKGNvbnRyb2xOYW1lKTtcclxuICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgIHRoaXMucXVlcnlGb3JtLnJlbW92ZUNvbnRyb2woY29udHJvbE5hbWUpO1xyXG4gICAgICB0aGlzLmNvbnRyb2xzID0gdGhpcy5jb250cm9scy5maWx0ZXIoXHJcbiAgICAgICAgKGMpID0+IGMuY29udHJvbE5hbWUgIT09IGNvbnRyb2xOYW1lXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmNhbGN1bGF0ZVRleHQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IGBUaGUgY29udHJvbCBuYW1lOiAnJHtjb250cm9sTmFtZX0nIG5vdCBmaW5kIWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja5jb250cm9sTmFtZeiOt+WPlmNvbmZpZ+mhuVxyXG4gICAqL1xyXG4gIGdldENvbnRyb2woXHJcbiAgICBjb250cm9sTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkXHJcbiAgKTogTnp4UXVlcnlDb250cm9sT3B0aW9ucyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9scy5maW5kKChjb25maWcpID0+IGNvbmZpZy5jb250cm9sTmFtZSA9PT0gY29udHJvbE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si57uZ5a6a5o6n5Lu25ZCN56ew5oiW6Lev5b6E55qE5a2Q5o6n5Lu244CCXHJcbiAgICog6L+Z5LiqIGdldEZvcm1Db250cm9sIOetvuWQjeaUr+aMgeWtl+espuS4suWSjCBjb25zdCDmlbDnu4TvvIguZ2V0Rm9ybUNvbnRyb2woWydmb28nLCAnYmFyJ10gYXMgY29uc3Qp77yJXHJcbiAgICovXHJcbiAgZ2V0Rm9ybUNvbnRyb2woXHJcbiAgICBwYXRoOiBzdHJpbmcgfCByZWFkb25seSAoc3RyaW5nIHwgbnVtYmVyKVtdXHJcbiAgKTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMucXVlcnlGb3JtLmdldChwYXRoKTtcclxuICB9XHJcblxyXG4gIC8qKiDmn6Xor6IgKi9cclxuICBzZWFyY2goKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5xdWVyeUZvcm0uaW52YWxpZCkge1xyXG4gICAgICB1cGRhdGVDb250cm9sU3RhdHVzKHRoaXMucXVlcnlGb3JtKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5xdWVyeUNoYW5nZS5lbWl0KHRoaXMuX3F1ZXJ5UGFyYW1zKTtcclxuICB9XHJcblxyXG4gIC8qKiDph43nva4gKi9cclxuICByZXNldCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnF1ZXJ5Rm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHVwZGF0ZUNvbnRyb2xTdGF0dXModGhpcy5xdWVyeUZvcm0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnF1ZXJ5Rm9ybS5yZXNldCh0aGlzLmRlZmF1bHRWYWx1ZSk7XHJcbiAgICB0aGlzLnJlc2V0Q2hhbmdlLmVtaXQodGhpcy5fcXVlcnlQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoq5bGV5byA44CB5pS26LW3Ki9cclxuICB0b2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNvbnRyb2xzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbnRyb2xzW2luZGV4XTtcclxuICAgICAgaWYgKGNvbmZpZy5oYXNPd25Qcm9wZXJ0eSgnY29sbGFwc2UnKSAmJiBjb25maWcuY29sbGFwc2UgPT09IHRydWUpIHtcclxuICAgICAgICAoY29uZmlnLmNvbGxhcHNlIGFzIGJvb2xlYW4pID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgY29uZmlnLmhhc093blByb3BlcnR5KCdjb2xsYXBzZScpICYmXHJcbiAgICAgICAgKGNvbmZpZy5jb2xsYXBzZSBhcyBib29sZWFuKSA9PT0gZmFsc2VcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uZmlnLmNvbGxhcHNlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jYWxjdWxhdGVUZXh0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbHMuc29tZSgoaSkgPT4gaS5jb2xsYXBzZSA9PT0gdHJ1ZSkpIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUljb24gPSAnZG93bic7XHJcbiAgICAgIHRoaXMuY29sbGFwc2VUZXh0ID0gdGhpcy5sb2NhbGUuZXhwYW5kO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUljb24gPSAndXAnO1xyXG4gICAgICB0aGlzLmNvbGxhcHNlVGV4dCA9IHRoaXMubG9jYWxlLmNvbGxhcHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIC8qKiDmuIXnqbrooajljZXmjqfku7YgKi9cclxuICBwcml2YXRlIGNsZWFyRm9ybUNvbnRyb2woKTogdm9pZCB7XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLnF1ZXJ5Rm9ybS5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIHRoaXMucXVlcnlGb3JtLnJlbW92ZUNvbnRyb2woa2V5KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIOeUn+aIkOihqOWNlSAqL1xyXG4gIHByaXZhdGUgZ2VuZXJhdGVGb3JtKGNvbnRyb2xDb25maWdzOiBBcnJheTxOenhRdWVyeUNvbnRyb2xPcHRpb25zPik6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhckZvcm1Db250cm9sKCk7XHJcblxyXG4gICAgZm9yIChjb25zdCBjb25maWcgb2YgY29udHJvbENvbmZpZ3MpIHtcclxuICAgICAgaWYgKGNvbmZpZy5jb250cm9sVHlwZSA9PT0gJ1RlbXBsYXRlJykge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnRyb2xUZW1wbGF0ZUxpc3QuZmluZChcclxuICAgICAgICAgIChkaXJlY3RpdmUpID0+IGRpcmVjdGl2ZS5uenhDb250cm9sID09PSBjb25maWcuY29udHJvbE5hbWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICBjb25maWcudGVtcGxhdGVSZWYgPSBpdGVtLnRlbXBsYXRlUmVmO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoY29uZmlnLmNvbnRyb2xOYW1lKSB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUZvcm0uYWRkQ29udHJvbChcclxuICAgICAgICAgIGNvbmZpZy5jb250cm9sTmFtZSxcclxuICAgICAgICAgIGNvbmZpZy5jb250cm9sSW5zdGFuY2UgPz8gdGhpcy5mYi5jb250cm9sKGNvbmZpZy5kZWZhdWx0ID8/IG51bGwpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB0aGlzLnF1ZXJ5Rm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgaWYgKHRoaXMuY2FjaGVQYXJhbXMpIHtcclxuICAgICAgLy8g57yT5a2Y5Zue5pi+5p+l6K+i5p2h5Lu2XHJcbiAgICAgIHRoaXMucXVlcnlGb3JtLnBhdGNoVmFsdWUodGhpcy5jYWNoZVBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYWxjdWxhdGVUZXh0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtICNxdWV5Rm9ybSBjbGFzcz1cIm56eC1xdWVyeS1jb250YWluZXJcIiBuei1mb3JtIFtmb3JtR3JvdXBdPVwicXVlcnlGb3JtXCI+XG4gIDxkaXYgbnotcm93IFtuekd1dHRlcl09XCJuenhHdXR0ZXJcIiBbbnpKdXN0aWZ5XT1cIm56eEp1c3RpZnlcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb25maWcgb2YgY29udHJvbHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhY29uZmlnLmhpZGRlblwiXG4gICAgICAgIG56LWNvbFxuICAgICAgICBbbnpTcGFuXT1cImNvbmZpZy5uenhTcGFuIHx8IDI0IC8gbGluZU51bWJlclwiXG4gICAgICAgIFtoaWRkZW5dPVwiY29uZmlnLmNvbGxhcHNlXCJcbiAgICAgICAgW256T3JkZXJdPVwiaVwiXG4gICAgICA+XG4gICAgICAgIDxuengtY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW1cbiAgICAgICAgICAqbmdJZj1cImNvbmZpZy5jb250cm9sTmFtZVwiXG4gICAgICAgICAgW2Zvcm1dPVwicXVlcnlGb3JtXCJcbiAgICAgICAgICBbY29udHJvbF09XCJjb25maWdcIlxuICAgICAgICA+PC9uengtY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibnp4LXF1ZXJ5LWJ0blwiXG4gICAgICBuei1jb2xcbiAgICAgIFtuek9yZGVyXT1cImNvbnRyb2xzLmxlbmd0aFwiXG4gICAgICBbbnpTcGFuXT1cIm56eEJ0blNwYW4gfHwgMjQgLyBsaW5lTnVtYmVyXCJcbiAgICA+XG4gICAgICA8ZGl2IG56LXJvdyBuekp1c3RpZnk9XCJlbmRcIiBuekFsaWduPVwibWlkZGxlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBuei1idXR0b25cbiAgICAgICAgICBuelR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0aXRsZT1cIkVudGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwic2VhcmNoKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgbG9jYWxlWydxdWVyeSddIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJjdHJsK3JcIiAoY2xpY2spPVwicmVzZXQoKVwiPlxuICAgICAgICAgIHt7IGxvY2FsZVsncmVzZXQnXSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8YVxuICAgICAgICAgICpuZ0lmPVwibnp4Q29sbGFwc2VcIlxuICAgICAgICAgIG56LWJ1dHRvblxuICAgICAgICAgIG56VHlwZT1cImxpbmtcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbGxhcHNlVGV4dCB9fVxuICAgICAgICAgIDxpIG56LWljb24gW256VHlwZV09XCJjb2xsYXBzZUljb25cIj48L2k+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
@@ -207,7 +207,7 @@ export class NzxPrintVComponent {
207
207
  if (d.identifierStr || d.identifierStr.length > 0) {
208
208
  styles = this.getStyles(d.identifierStr);
209
209
  }
210
- const html = `
210
+ let html = `
211
211
  <!DOCTYPE html>
212
212
  <html>
213
213
  <head>
@@ -223,6 +223,7 @@ export class NzxPrintVComponent {
223
223
  </body>
224
224
  </html>
225
225
  `;
226
+ html = html.replace(/<!---->/g, ' ');
226
227
  templates.push(html);
227
228
  });
228
229
  return templates;
@@ -237,46 +238,46 @@ export class NzxPrintVComponent {
237
238
  }
238
239
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxPrintVComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
239
240
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: NzxPrintVComponent, selector: "nzx-print-v", inputs: { printTitle: "printTitle", width: "width", height: "height", enablePreview: "enablePreview", pixelRatio: "pixelRatio" }, outputs: { pageRenderComplete: "pageRenderComplete" }, queries: [{ propertyName: "_printElQueryList", predicate: NzxPrintContentDirective }], viewQueries: [{ propertyName: "vivViewRef", first: true, predicate: ["vivView"], descendants: true }], ngImport: i0, template: `
240
- <ng-content select="[nzxPrintHeader]"></ng-content>
241
+ <ng-content select="[nzxPrintHeader]"></ng-content>
241
242
 
242
- <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
243
+ <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
243
244
 
244
- <div nz-row nzJustify="end">
245
- <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
246
- <nz-pagination
247
- [nzPageIndex]="1"
248
- [nzTotal]="pageTotal"
249
- [nzPageSize]="1"
250
- [nzSize]="'small'"
251
- [nzShowTotal]="totalTemplate"
252
- nzShowQuickJumper
253
- (nzPageIndexChange)="onPageIndexChange($event)"
254
- ></nz-pagination>
255
- </div>
256
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "component", type: i3.NzPaginationComponent, selector: "nz-pagination", inputs: ["nzShowTotal", "nzItemRender", "nzSize", "nzPageSizeOptions", "nzShowSizeChanger", "nzShowQuickJumper", "nzSimple", "nzDisabled", "nzResponsive", "nzHideOnSinglePage", "nzTotal", "nzPageIndex", "nzPageSize"], outputs: ["nzPageSizeChange", "nzPageIndexChange"], exportAs: ["nzPagination"] }] }); }
245
+ <div nz-row nzJustify="end">
246
+ <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
247
+ <nz-pagination
248
+ [nzPageIndex]="1"
249
+ [nzTotal]="pageTotal"
250
+ [nzPageSize]="1"
251
+ [nzSize]="'small'"
252
+ [nzShowTotal]="totalTemplate"
253
+ nzShowQuickJumper
254
+ (nzPageIndexChange)="onPageIndexChange($event)"
255
+ ></nz-pagination>
256
+ </div>
257
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "component", type: i3.NzPaginationComponent, selector: "nz-pagination", inputs: ["nzShowTotal", "nzItemRender", "nzSize", "nzPageSizeOptions", "nzShowSizeChanger", "nzShowQuickJumper", "nzSimple", "nzDisabled", "nzResponsive", "nzHideOnSinglePage", "nzTotal", "nzPageIndex", "nzPageSize"], outputs: ["nzPageSizeChange", "nzPageIndexChange"], exportAs: ["nzPagination"] }] }); }
257
258
  }
258
259
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxPrintVComponent, decorators: [{
259
260
  type: Component,
260
261
  args: [{
261
262
  selector: 'nzx-print-v',
262
263
  template: `
263
- <ng-content select="[nzxPrintHeader]"></ng-content>
264
+ <ng-content select="[nzxPrintHeader]"></ng-content>
264
265
 
265
- <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
266
+ <div #vivView [ngStyle]="{ margin: '10px 0' }"></div>
266
267
 
267
- <div nz-row nzJustify="end">
268
- <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
269
- <nz-pagination
270
- [nzPageIndex]="1"
271
- [nzTotal]="pageTotal"
272
- [nzPageSize]="1"
273
- [nzSize]="'small'"
274
- [nzShowTotal]="totalTemplate"
275
- nzShowQuickJumper
276
- (nzPageIndexChange)="onPageIndexChange($event)"
277
- ></nz-pagination>
278
- </div>
279
- `,
268
+ <div nz-row nzJustify="end">
269
+ <ng-template #totalTemplate let-total>共 {{ total }} 页</ng-template>
270
+ <nz-pagination
271
+ [nzPageIndex]="1"
272
+ [nzTotal]="pageTotal"
273
+ [nzPageSize]="1"
274
+ [nzSize]="'small'"
275
+ [nzShowTotal]="totalTemplate"
276
+ nzShowQuickJumper
277
+ (nzPageIndexChange)="onPageIndexChange($event)"
278
+ ></nz-pagination>
279
+ </div>
280
+ `,
280
281
  }]
281
282
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { printTitle: [{
282
283
  type: Input
@@ -297,4 +298,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
297
298
  type: ContentChildren,
298
299
  args: [NzxPrintContentDirective]
299
300
  }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LXByaW50LXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wcmludC9uengtcHJpbnQtdi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdOLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksR0FHWixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQUV6RTs7R0FFRztBQXNCSCxNQUFNLE9BQU8sa0JBQWtCO0lBdUI5QixZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXRCaEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1Qjs7V0FFRztRQUNNLFVBQUssR0FBRyxHQUFHLENBQUM7UUFDWixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNkLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHM0QsY0FBUyxHQUFHLENBQUMsQ0FBQztRQU9OLFdBQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBRXhCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQXNIMUIsZ0JBQVcsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUM7UUFFTSwyQkFBc0IsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FB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QUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUM7SUFDbEIsQ0FBQztJQUVPLFNBQVM7UUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7OEdBeFFXLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDhRQWlCYix3QkFBd0Isb0lBcEMvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQlQ7OzJGQUVXLGtCQUFrQjtrQkFyQjlCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQlQ7aUJBQ0Q7c0ZBRVMsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBTUMsVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxTQUFTO2dCQUlaLGlCQUFpQjtzQkFEeEIsZUFBZTt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBZnRlclZpZXdJbml0LFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGRyZW4sXG5cdEVsZW1lbnRSZWYsXG5cdEV2ZW50RW1pdHRlcixcblx0SW5wdXQsXG5cdE9uRGVzdHJveSxcblx0T3V0cHV0LFxuXHRRdWVyeUxpc3QsXG5cdFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRDb3JlVmlld2VyLFxuXHROYXZpZ2F0aW9uLFxuXHRQYWdlVmlld01vZGUsXG5cdFBheWxvYWQsXG5cdFNpbmdsZURvY3VtZW50T3B0aW9ucyxcbn0gZnJvbSAnQHZpdmxpb3N0eWxlL2NvcmUnO1xuaW1wb3J0IHsgTnp4UHJpbnRDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9uengtcHJpbnQtY29udGVudC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIFZpdmxpb3N0eWxlIOaJk+WNsFxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduengtcHJpbnQtdicsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW256eFByaW50SGVhZGVyXVwiPjwvbmctY29udGVudD5cblxuXHRcdDxkaXYgI3ZpdlZpZXcgW25nU3R5bGVdPVwieyBtYXJnaW46ICcxMHB4IDAnIH1cIj48L2Rpdj5cblxuXHRcdDxkaXYgbnotcm93IG56SnVzdGlmeT1cImVuZFwiPlxuXHRcdFx0PG5nLXRlbXBsYXRlICN0b3RhbFRlbXBsYXRlIGxldC10b3RhbD7lhbEge3sgdG90YWwgfX0g6aG1PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDxuei1wYWdpbmF0aW9uXG5cdFx0XHRcdFtuelBhZ2VJbmRleF09XCIxXCJcblx0XHRcdFx0W256VG90YWxdPVwicGFnZVRvdGFsXCJcblx0XHRcdFx0W256UGFnZVNpemVdPVwiMVwiXG5cdFx0XHRcdFtuelNpemVdPVwiJ3NtYWxsJ1wiXG5cdFx0XHRcdFtuelNob3dUb3RhbF09XCJ0b3RhbFRlbXBsYXRlXCJcblx0XHRcdFx0bnpTaG93UXVpY2tKdW1wZXJcblx0XHRcdFx0KG56UGFnZUluZGV4Q2hhbmdlKT1cIm9uUGFnZUluZGV4Q2hhbmdlKCRldmVudClcIlxuXHRcdFx0PjwvbnotcGFnaW5hdGlvbj5cblx0XHQ8L2Rpdj5cblx0YCxcbn0pXG5leHBvcnQgY2xhc3MgTnp4UHJpbnRWQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblx0QElucHV0KCkgcHJpbnRUaXRsZSA9ICdwZGYnO1xuXHQvKipcblx0ICogYTQgNzk0cHgxMTIzcHhcblx0ICovXG5cdEBJbnB1dCgpIHdpZHRoID0gODE0O1xuXHRASW5wdXQoKSBoZWlnaHQgPSAxMTQzO1xuXHRASW5wdXQoKSBlbmFibGVQcmV2aWV3ID0gdHJ1ZTtcblx0QElucHV0KCkgcGl4ZWxSYXRpbyA9IDg7XG5cdEBPdXRwdXQoKSBwYWdlUmVuZGVyQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cblx0dmlld2VyOiBDb3JlVmlld2VyIHwgdW5kZWZpbmVkO1xuXHRwYWdlVG90YWwgPSAwO1xuXG5cdEBWaWV3Q2hpbGQoJ3ZpdlZpZXcnKVxuXHRwcml2YXRlIHZpdlZpZXdSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuXHRAQ29udGVudENoaWxkcmVuKE56eFByaW50Q29udGVudERpcmVjdGl2ZSlcblx0cHJpdmF0ZSBfcHJpbnRFbFF1ZXJ5TGlzdCE6IFF1ZXJ5TGlzdDxOenhQcmludENvbnRlbnREaXJlY3RpdmU+O1xuXHRwcml2YXRlIF90aXRsZSA9IGRvY3VtZW50LnRpdGxlO1xuXHRwcml2YXRlIGlmcmFtZUVsITogSFRNTElGcmFtZUVsZW1lbnQ7XG5cdHByaXZhdGUgX2lzUmVuZGVyQ29tcGxldGUgPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmNyZWF0ZUlmcmFtZVdyYXBwZXIoKTtcblx0XHR9LCAxMDAwKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnZpZXdlcikge1xuXHRcdFx0dGhpcy5jbGVhclZpZXcoKTtcblx0XHR9XG5cdH1cblxuXHRvblBhZ2VJbmRleENoYW5nZShudW06IG51bWJlcikge1xuXHRcdGlmICh0aGlzLnZpZXdlcikge1xuXHRcdFx0dGhpcy52aWV3ZXIubmF2aWdhdGVUb1BhZ2UoTmF2aWdhdGlvbi5FUEFHRSwgbnVtIC0gMSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpbnQoKSB7XG5cdFx0aWYgKHRoaXMuX2lzUmVuZGVyQ29tcGxldGUpIHtcblx0XHRcdHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdyEucHJpbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc29sZS53YXJuKCdyZW5kaW5nLi4uJyk7XG5cdFx0fVxuXHR9XG5cblx0cmVmcmVzaCgpIHtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuY3JlYXRlSWZyYW1lV3JhcHBlcigpO1xuXHRcdH0sIDEwMCk7XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZUlmcmFtZVdyYXBwZXIoKSB7XG5cdFx0aWYgKHRoaXMudml2Vmlld1JlZikge1xuXHRcdFx0dGhpcy5jbGVhclZpZXcoKTtcblxuXHRcdFx0dGhpcy5pZnJhbWVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuXHRcdFx0dGhpcy5pZnJhbWVFbC5oZWlnaHQgPSB0aGlzLmhlaWdodCArICcnO1xuXHRcdFx0dGhpcy5pZnJhbWVFbC53aWR0aCA9IHRoaXMud2lkdGggKyAnJztcblx0XHRcdHRoaXMuaWZyYW1lRWwuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjY2NjJztcblx0XHRcdHRoaXMuaWZyYW1lRWwuc3R5bGUuYmFja2dyb3VuZCA9ICcjZmZmJztcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGUgPSBgXG4gICAgICAgIDwhRE9DVFlQRSBodG1sPlxuICAgICAgICA8aHRtbCBkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZD1cInRydWVcIj5cbiAgICAgICAgICA8aGVhZD5cbiAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICAgICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiIC8+XG4gICAgICAgICAgICA8YmFzZSBocmVmPVwiL1wiIC8+XG4gICAgICAgICAgICA8dGl0bGU+JHt0aGlzLnByaW50VGl0bGV9PC90aXRsZT5cbiAgICAgICAgICAgIDxzdHlsZT5cbiAgICAgICAgICAgICAgaHRtbFtkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZF0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBodG1sW2RhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkXSBib2R5LFxuICAgICAgICAgICAgICBodG1sW2RhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkXSBbZGF0YS12aXZsaW9zdHlsZS12aWV3ZXItdmlld3BvcnRdIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaHRtbFtkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZF0sXG4gICAgICAgICAgICAgIGh0bWxbZGF0YS12aXZsaW9zdHlsZS1wYWdpbmF0ZWRdIGJvZHkge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3N0eWxlPlxuICAgICAgICAgICAgPHN0eWxlIGlkPVwidml2bGlvc3R5bGUtcGFnZS1ydWxlc1wiPjwvc3R5bGU+XG4gICAgICAgICAgPC9oZWFkPlxuICAgICAgICAgIDxib2R5PlxuICAgICAgICAgICAgPGRpdiBpZD1cInZpdmxpb3N0eWxlLXZpZXdlci12aWV3cG9ydFwiPjwvZGl2PlxuICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgPC9odG1sPlxuICAgICAgYDtcblxuXHRcdFx0dGhpcy5pZnJhbWVFbC5zcmNkb2MgPSB0ZW1wbGF0ZTtcblx0XHRcdHRoaXMudml2Vmlld1JlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaWZyYW1lRWwpO1xuXHRcdFx0dGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5vbmJlZm9yZXByaW50ID0gKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLnBhcmVudC5kb2N1bWVudC50aXRsZSA9IHRoaXMucHJpbnRUaXRsZTtcblx0XHRcdH07XG5cdFx0XHR0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLm9uYWZ0ZXJwcmludCA9ICgpID0+IHtcblx0XHRcdFx0dGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5wYXJlbnQuZG9jdW1lbnQudGl0bGUgPSB0aGlzLl90aXRsZTtcblx0XHRcdH07XG5cdFx0XHR0aGlzLmNyZWF0ZVZpdlZpZXdlcigpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlVml2Vmlld2VyKCkge1xuXHRcdHRoaXMuaWZyYW1lRWwub25sb2FkID0gKCkgPT4ge1xuXHRcdFx0Y29uc3QgZWxzOiBOenhQcmludENvbnRlbnREaXJlY3RpdmVbXSA9IHRoaXMuX3ByaW50RWxRdWVyeUxpc3QudG9BcnJheSgpO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVzID0gdGhpcy5nZXRWaXZUZW1wbGF0ZXMoZWxzKTtcblx0XHRcdGNvbnN0IG9wdGlvbnM6IFNpbmdsZURvY3VtZW50T3B0aW9uc1tdID0gW107XG5cdFx0XHR0ZW1wbGF0ZXMuZm9yRWFjaCgodGVtcGxhdGUpID0+IHtcblx0XHRcdFx0Y29uc3QgZG9jQmxvYiA9IG5ldyBCbG9iKFt0ZW1wbGF0ZV0sIHtcblx0XHRcdFx0XHR0eXBlOiAndGV4dC9odG1sJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IGRvY1VSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZG9jQmxvYik7XG5cdFx0XHRcdG9wdGlvbnMucHVzaCh7IHVybDogZG9jVVJMIH0pO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnZpZXdlciA9IG5ldyBDb3JlVmlld2VyKFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dmlld3BvcnRFbGVtZW50OiB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50LmJvZHlcblx0XHRcdFx0XHRcdC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHBhZ2VWaWV3TW9kZTogUGFnZVZpZXdNb2RlLlNJTkdMRV9QQUdFLFxuXHRcdFx0XHRcdHBpeGVsUmF0aW86IHRoaXMucGl4ZWxSYXRpbyxcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHRcdHRoaXMudmlld2VyLmxvYWREb2N1bWVudChvcHRpb25zKTtcblx0XHRcdHRoaXMuY3JlYXRlTGlzdGVuZXIodGhpcy52aWV3ZXIpO1xuXHRcdH07XG5cdH1cblxuXHRwcml2YXRlIGhhbmRsZUVycm9yID0gKHBheWxvYWQ6IFBheWxvYWQpID0+IHtcblx0XHRjb25zb2xlLmxvZygnZXJyb3I6OicsIHBheWxvYWQpO1xuXHR9O1xuXG5cdHByaXZhdGUgaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZSA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PiB7XG5cdFx0dGhpcy5faXNSZW5kZXJDb21wbGV0ZSA9IGZhbHNlO1xuXHRcdHRoaXMucGFnZVJlbmRlckNvbXBsZXRlLmVtaXQoZmFsc2UpO1xuXHRcdGlmICh0aGlzLnZpZXdlciAmJiB0aGlzLnZpZXdlci5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG5cdFx0XHRjb25zdCBpbnRlcnZhbFRhZyA9IHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHRoaXMuaWZyYW1lRWwgJiZcblx0XHRcdFx0XHR0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cgJiZcblx0XHRcdFx0XHR0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Y29uc3QgaW1hZ2VzID1cblx0XHRcdFx0XHRcdHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJyk7XG5cblx0XHRcdFx0XHRsZXQgYWxsSW1hZ2VzTG9hZGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGltYWdlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0aWYgKCFpbWFnZXNbaV0uY29tcGxldGUpIHtcblx0XHRcdFx0XHRcdFx0YWxsSW1hZ2VzTG9hZGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoYWxsSW1hZ2VzTG9hZGVkKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnQWxsIGltYWdlcyBpbiBpZnJhbWUgbG9hZGVkIHN1Y2Nlc3NmdWxseScpO1xuXHRcdFx0XHRcdFx0dGhpcy5wYWdlUmVuZGVyQ29tcGxldGUuZW1pdCh0cnVlKTtcblx0XHRcdFx0XHRcdHRoaXMuX2lzUmVuZGVyQ29tcGxldGUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbChpbnRlcnZhbFRhZyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LCAxMDAwKTtcblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSBoYW5kbGVIeXBlcmxpbmsgPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuXHRcdGNvbnNvbGUubG9nKCdoYW5kbGVIeXBlcmxpbms6OicsIHBheWxvYWQpO1xuXHR9O1xuXG5cdHByaXZhdGUgaGFuZGxlTG9hZGVkID0gKHBheWxvYWQ6IFBheWxvYWQpID0+IHtcblx0XHRjb25zb2xlLmxvZygnaGFuZGxlTG9hZGVkOjonLCBwYXlsb2FkKTtcblx0fTtcblxuXHRwcml2YXRlIGhhbmRsZU5hdmlnYXRpb24gPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuXHRcdHRoaXMucGFnZVRvdGFsID0gcGF5bG9hZC5lcGFnZUNvdW50O1xuXHRcdHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG5cdH07XG5cblx0cHJpdmF0ZSBjcmVhdGVMaXN0ZW5lcih2aWV3ZXI6IENvcmVWaWV3ZXIpIHtcblx0XHR2aWV3ZXIuYWRkTGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5oYW5kbGVFcnJvcik7XG5cdFx0dmlld2VyLmFkZExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgdGhpcy5oYW5kbGVSZWFkeVN0YXRlQ2hhbmdlKTtcblx0XHR2aWV3ZXIuYWRkTGlzdGVuZXIoJ2xvYWRlZCcsIHRoaXMuaGFuZGxlTG9hZGVkKTtcblx0XHR2aWV3ZXIuYWRkTGlzdGVuZXIoJ2h5cGVybGluaycsIHRoaXMuaGFuZGxlSHlwZXJsaW5rKTtcblx0XHR2aWV3ZXIuYWRkTGlzdGVuZXIoJ25hdicsIHRoaXMuaGFuZGxlTmF2aWdhdGlvbik7XG5cdH1cblxuXHRwcml2YXRlIHJlbW92ZUxpc3RlbmVycyh2aWV3ZXI6IENvcmVWaWV3ZXIpIHtcblx0XHR2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5oYW5kbGVFcnJvcik7XG5cdFx0dmlld2VyLnJlbW92ZUxpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgdGhpcy5oYW5kbGVSZWFkeVN0YXRlQ2hhbmdlKTtcblx0XHR2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2xvYWRlZCcsIHRoaXMuaGFuZGxlTG9hZGVkKTtcblx0XHR2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2h5cGVybGluaycsIHRoaXMuaGFuZGxlSHlwZXJsaW5rKTtcblx0XHR2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ25hdicsIHRoaXMuaGFuZGxlTmF2aWdhdGlvbik7XG5cdH1cblxuXHRwcml2YXRlIGdldFN0eWxlcyhpZGVudGlmaWVyU3RyOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB7XG5cdFx0Y29uc3Qgc3R5bGVzQXJyYXk6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc3R5bGVFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpO1xuXHRcdGNvbnN0IGxlbmd0aCA9IHN0eWxlRWxlbWVudHMubGVuZ3RoO1xuXHRcdGxldCBpZGVudGlmaWVyczogc3RyaW5nW10gPSBbXTtcblx0XHRpZiAoQXJyYXkuaXNBcnJheShpZGVudGlmaWVyU3RyKSkge1xuXHRcdFx0aWRlbnRpZmllcnMgPSBbLi4uaWRlbnRpZmllclN0cl07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlkZW50aWZpZXJzID0gW2lkZW50aWZpZXJTdHJdO1xuXHRcdH1cblx0XHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG5cdFx0XHRpZGVudGlmaWVycy5mb3JFYWNoKChzKSA9PiB7XG5cdFx0XHRcdGlmIChzdHlsZUVsZW1lbnRzW2luZGV4XS5vdXRlckhUTUwuaW5jbHVkZXMocykpIHtcblx0XHRcdFx0XHRjb25zdCBmb3JtYXRlU3RyID0gc3R5bGVFbGVtZW50c1tpbmRleF0ub3V0ZXJIVE1MLnJlcGxhY2UoXG5cdFx0XHRcdFx0XHQvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLFxuXHRcdFx0XHRcdFx0Jydcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHN0eWxlc0FycmF5LnB1c2goZm9ybWF0ZVN0cik7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gc3R5bGVzQXJyYXkuam9pbignXFxyXFxuJyk7XG5cdH1cblxuXHRwcml2YXRlIGdldFZpdlRlbXBsYXRlcyhkaXJlY3RpdmVzOiBOenhQcmludENvbnRlbnREaXJlY3RpdmVbXSkge1xuXHRcdGNvbnN0IHRlbXBsYXRlczogc3RyaW5nW10gPSBbXTtcblx0XHRkaXJlY3RpdmVzLmZvckVhY2goKGQpID0+IHtcblx0XHRcdGxldCBzdHlsZXMgPSAnJztcblx0XHRcdGlmIChkLmlkZW50aWZpZXJTdHIgfHwgZC5pZGVudGlmaWVyU3RyLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0c3R5bGVzID0gdGhpcy5nZXRTdHlsZXMoZC5pZGVudGlmaWVyU3RyKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgaHRtbCA9IGBcbiAgICAgICAgICA8IURPQ1RZUEUgaHRtbD5cbiAgICAgICAgICA8aHRtbD5cbiAgICAgICAgICAgIDxoZWFkPlxuICAgICAgICAgICAgPG1ldGEgY2hhcnNldD1cInV0Zi04XCIgLz5cbiAgICAgICAgICAgIDx0aXRsZT4ke3RoaXMucHJpbnRUaXRsZX08L3RpdGxlPlxuICAgICAgICAgICAgPGJhc2UgaHJlZj1cIi9cIiAvPlxuICAgICAgICAgICAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCIgLz5cbiAgICAgICAgICAgICAke2QuY3VzdG9tU3R5bGV9XG4gICAgICAgICAgICAgJHtzdHlsZXN9XG4gICAgICAgICAgICA8L2hlYWQ+XG4gICAgICAgICAgICA8Ym9keT5cbiAgICAgICAgICAgICAgJHtkLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vdXRlckhUTUx9XG4gICAgICAgICAgICA8L2JvZHk+XG4gICAgICAgICAgPC9odG1sPlxuICAgICAgICBgO1xuXHRcdFx0dGVtcGxhdGVzLnB1c2goaHRtbCk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gdGVtcGxhdGVzO1xuXHR9XG5cblx0cHJpdmF0ZSBjbGVhclZpZXcoKSB7XG5cdFx0aWYgKHRoaXMudmlld2VyKSB7XG5cdFx0XHR0aGlzLnJlbW92ZUxpc3RlbmVycyh0aGlzLnZpZXdlcik7XG5cdFx0fVxuXHRcdHRoaXMudml2Vmlld1JlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuXHRcdHRoaXMudmlld2VyID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuX2lzUmVuZGVyQ29tcGxldGUgPSBmYWxzZTtcblx0fVxufVxuIl19
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LXByaW50LXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wcmludC9uengtcHJpbnQtdi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksR0FHYixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQUV6RTs7R0FFRztBQXNCSCxNQUFNLE9BQU8sa0JBQWtCO0lBdUI3QixZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXRCaEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1Qjs7V0FFRztRQUNNLFVBQUssR0FBRyxHQUFHLENBQUM7UUFDWixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNkLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHM0QsY0FBUyxHQUFHLENBQUMsQ0FBQztRQU9OLFdBQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBRXhCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQXNIMUIsZ0JBQVcsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUM7UUFFTSwyQkFBc0IsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNwRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtnQkFDeEQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtvQkFDbkMsSUFDRSxJQUFJLENBQUMsUUFBUTt3QkFDYixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWE7d0JBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFDcEM7d0JBQ0EsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUVuRSxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUM7d0JBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQ0FDdkIsZUFBZSxHQUFHLEtBQUssQ0FBQztnQ0FDeEIsTUFBTTs2QkFDUDt5QkFDRjt3QkFDRCxJQUFJLGVBQWUsRUFBRTs0QkFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDOzRCQUN4RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDOzRCQUM5QixhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7eUJBQzVCO3FCQUNGO2dCQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNWO1FBQ0gsQ0FBQyxDQUFDO1FBRU0sb0JBQWUsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQztRQUVNLGlCQUFZLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7WUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUM7UUFFTSxxQkFBZ0IsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUM7SUFsSzBDLENBQUM7SUFFN0MsZUFBZTtRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNsQjtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFXO1FBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0QzthQUFNO1lBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDO1lBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7WUFFeEMsTUFBTSxRQUFRLEdBQUc7Ozs7Ozs7cUJBT0YsSUFBSSxDQUFDLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXdCN0IsQ0FBQztZQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYyxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDdkUsQ0FBQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFjLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNuRSxDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDMUIsTUFBTSxHQUFHLEdBQStCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUM7WUFDNUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLEVBQUUsV0FBVztpQkFDbEIsQ0FBQyxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQzFCO2dCQUNFLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsSUFBSTtxQkFDeEQsaUJBQWdDO2FBQ3BDLEVBQ0Q7Z0JBQ0UsWUFBWSxFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUN0QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDNUIsQ0FDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQWtETyxjQUFjLENBQUMsTUFBa0I7UUFDdkMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDcEUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sZUFBZSxDQUFDLE1BQWtCO1FBQ3hDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLFNBQVMsQ0FBQyxhQUFnQztRQUNoRCxNQUFNLFdBQVcsR0FBYSxFQUFFLENBQUM7UUFDakMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxXQUFXLEdBQWEsRUFBRSxDQUFDO1FBQy9CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNoQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO1NBQ2xDO2FBQU07WUFDTCxXQUFXLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMvQjtRQUNELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDM0MsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN4QixJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUM5QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDdkQsbUJBQW1CLEVBQ25CLEVBQUUsQ0FDSCxDQUFDO29CQUNGLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQzlCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sZUFBZSxDQUFDLFVBQXNDO1FBQzVELE1BQU0sU0FBUyxHQUFhLEVBQUUsQ0FBQztRQUMvQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2pELE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMxQztZQUVELElBQUksSUFBSSxHQUFHOzs7OztxQkFLSSxJQUFJLENBQUMsVUFBVTs7O2VBR3JCLENBQUMsQ0FBQyxXQUFXO2VBQ2IsTUFBTTs7O2dCQUdMLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVM7OztTQUczQyxDQUFDO1lBQ0osSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7OEdBelFVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDhRQWlCWix3QkFBd0Isb0lBcEMvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7OzJGQUVVLGtCQUFrQjtrQkFyQjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7aUJBQ0Y7c0ZBRVUsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBTUMsVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxTQUFTO2dCQUlaLGlCQUFpQjtzQkFEeEIsZUFBZTt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb3JlVmlld2VyLFxuICBOYXZpZ2F0aW9uLFxuICBQYWdlVmlld01vZGUsXG4gIFBheWxvYWQsXG4gIFNpbmdsZURvY3VtZW50T3B0aW9ucyxcbn0gZnJvbSAnQHZpdmxpb3N0eWxlL2NvcmUnO1xuaW1wb3J0IHsgTnp4UHJpbnRDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9uengtcHJpbnQtY29udGVudC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIFZpdmxpb3N0eWxlIOaJk+WNsFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduengtcHJpbnQtdicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW256eFByaW50SGVhZGVyXVwiPjwvbmctY29udGVudD5cblxuICAgIDxkaXYgI3ZpdlZpZXcgW25nU3R5bGVdPVwieyBtYXJnaW46ICcxMHB4IDAnIH1cIj48L2Rpdj5cblxuICAgIDxkaXYgbnotcm93IG56SnVzdGlmeT1cImVuZFwiPlxuICAgICAgPG5nLXRlbXBsYXRlICN0b3RhbFRlbXBsYXRlIGxldC10b3RhbD7lhbEge3sgdG90YWwgfX0g6aG1PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuei1wYWdpbmF0aW9uXG4gICAgICAgIFtuelBhZ2VJbmRleF09XCIxXCJcbiAgICAgICAgW256VG90YWxdPVwicGFnZVRvdGFsXCJcbiAgICAgICAgW256UGFnZVNpemVdPVwiMVwiXG4gICAgICAgIFtuelNpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgIFtuelNob3dUb3RhbF09XCJ0b3RhbFRlbXBsYXRlXCJcbiAgICAgICAgbnpTaG93UXVpY2tKdW1wZXJcbiAgICAgICAgKG56UGFnZUluZGV4Q2hhbmdlKT1cIm9uUGFnZUluZGV4Q2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvbnotcGFnaW5hdGlvbj5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgTnp4UHJpbnRWQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgcHJpbnRUaXRsZSA9ICdwZGYnO1xuICAvKipcbiAgICogYTQgNzk0cHgxMTIzcHhcbiAgICovXG4gIEBJbnB1dCgpIHdpZHRoID0gODE0O1xuICBASW5wdXQoKSBoZWlnaHQgPSAxMTQzO1xuICBASW5wdXQoKSBlbmFibGVQcmV2aWV3ID0gdHJ1ZTtcbiAgQElucHV0KCkgcGl4ZWxSYXRpbyA9IDg7XG4gIEBPdXRwdXQoKSBwYWdlUmVuZGVyQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgdmlld2VyOiBDb3JlVmlld2VyIHwgdW5kZWZpbmVkO1xuICBwYWdlVG90YWwgPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpdlZpZXcnKVxuICBwcml2YXRlIHZpdlZpZXdSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKE56eFByaW50Q29udGVudERpcmVjdGl2ZSlcbiAgcHJpdmF0ZSBfcHJpbnRFbFF1ZXJ5TGlzdCE6IFF1ZXJ5TGlzdDxOenhQcmludENvbnRlbnREaXJlY3RpdmU+O1xuICBwcml2YXRlIF90aXRsZSA9IGRvY3VtZW50LnRpdGxlO1xuICBwcml2YXRlIGlmcmFtZUVsITogSFRNTElGcmFtZUVsZW1lbnQ7XG4gIHByaXZhdGUgX2lzUmVuZGVyQ29tcGxldGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNyZWF0ZUlmcmFtZVdyYXBwZXIoKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZXdlcikge1xuICAgICAgdGhpcy5jbGVhclZpZXcoKTtcbiAgICB9XG4gIH1cblxuICBvblBhZ2VJbmRleENoYW5nZShudW06IG51bWJlcikge1xuICAgIGlmICh0aGlzLnZpZXdlcikge1xuICAgICAgdGhpcy52aWV3ZXIubmF2aWdhdGVUb1BhZ2UoTmF2aWdhdGlvbi5FUEFHRSwgbnVtIC0gMSk7XG4gICAgfVxuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgaWYgKHRoaXMuX2lzUmVuZGVyQ29tcGxldGUpIHtcbiAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdyEucHJpbnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdyZW5kaW5nLi4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY3JlYXRlSWZyYW1lV3JhcHBlcigpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUlmcmFtZVdyYXBwZXIoKSB7XG4gICAgaWYgKHRoaXMudml2Vmlld1JlZikge1xuICAgICAgdGhpcy5jbGVhclZpZXcoKTtcblxuICAgICAgdGhpcy5pZnJhbWVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgICAgdGhpcy5pZnJhbWVFbC5oZWlnaHQgPSB0aGlzLmhlaWdodCArICcnO1xuICAgICAgdGhpcy5pZnJhbWVFbC53aWR0aCA9IHRoaXMud2lkdGggKyAnJztcbiAgICAgIHRoaXMuaWZyYW1lRWwuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjY2NjJztcbiAgICAgIHRoaXMuaWZyYW1lRWwuc3R5bGUuYmFja2dyb3VuZCA9ICcjZmZmJztcblxuICAgICAgY29uc3QgdGVtcGxhdGUgPSBgXG4gICAgICAgIDwhRE9DVFlQRSBodG1sPlxuICAgICAgICA8aHRtbCBkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZD1cInRydWVcIj5cbiAgICAgICAgICA8aGVhZD5cbiAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICAgICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiIC8+XG4gICAgICAgICAgICA8YmFzZSBocmVmPVwiL1wiIC8+XG4gICAgICAgICAgICA8dGl0bGU+JHt0aGlzLnByaW50VGl0bGV9PC90aXRsZT5cbiAgICAgICAgICAgIDxzdHlsZT5cbiAgICAgICAgICAgICAgaHRtbFtkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZF0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBodG1sW2RhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkXSBib2R5LFxuICAgICAgICAgICAgICBodG1sW2RhdGEtdml2bGlvc3R5bGUtcGFnaW5hdGVkXSBbZGF0YS12aXZsaW9zdHlsZS12aWV3ZXItdmlld3BvcnRdIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaHRtbFtkYXRhLXZpdmxpb3N0eWxlLXBhZ2luYXRlZF0sXG4gICAgICAgICAgICAgIGh0bWxbZGF0YS12aXZsaW9zdHlsZS1wYWdpbmF0ZWRdIGJvZHkge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3N0eWxlPlxuICAgICAgICAgICAgPHN0eWxlIGlkPVwidml2bGlvc3R5bGUtcGFnZS1ydWxlc1wiPjwvc3R5bGU+XG4gICAgICAgICAgPC9oZWFkPlxuICAgICAgICAgIDxib2R5PlxuICAgICAgICAgICAgPGRpdiBpZD1cInZpdmxpb3N0eWxlLXZpZXdlci12aWV3cG9ydFwiPjwvZGl2PlxuICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgPC9odG1sPlxuICAgICAgYDtcblxuICAgICAgdGhpcy5pZnJhbWVFbC5zcmNkb2MgPSB0ZW1wbGF0ZTtcbiAgICAgIHRoaXMudml2Vmlld1JlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaWZyYW1lRWwpO1xuICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5vbmJlZm9yZXByaW50ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLnBhcmVudC5kb2N1bWVudC50aXRsZSA9IHRoaXMucHJpbnRUaXRsZTtcbiAgICAgIH07XG4gICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3chLm9uYWZ0ZXJwcmludCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5pZnJhbWVFbC5jb250ZW50V2luZG93IS5wYXJlbnQuZG9jdW1lbnQudGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgIH07XG4gICAgICB0aGlzLmNyZWF0ZVZpdlZpZXdlcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVml2Vmlld2VyKCkge1xuICAgIHRoaXMuaWZyYW1lRWwub25sb2FkID0gKCkgPT4ge1xuICAgICAgY29uc3QgZWxzOiBOenhQcmludENvbnRlbnREaXJlY3RpdmVbXSA9IHRoaXMuX3ByaW50RWxRdWVyeUxpc3QudG9BcnJheSgpO1xuICAgICAgY29uc3QgdGVtcGxhdGVzID0gdGhpcy5nZXRWaXZUZW1wbGF0ZXMoZWxzKTtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IFNpbmdsZURvY3VtZW50T3B0aW9uc1tdID0gW107XG4gICAgICB0ZW1wbGF0ZXMuZm9yRWFjaCgodGVtcGxhdGUpID0+IHtcbiAgICAgICAgY29uc3QgZG9jQmxvYiA9IG5ldyBCbG9iKFt0ZW1wbGF0ZV0sIHtcbiAgICAgICAgICB0eXBlOiAndGV4dC9odG1sJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGRvY1VSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZG9jQmxvYik7XG4gICAgICAgIG9wdGlvbnMucHVzaCh7IHVybDogZG9jVVJMIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnZpZXdlciA9IG5ldyBDb3JlVmlld2VyKFxuICAgICAgICB7XG4gICAgICAgICAgdmlld3BvcnRFbGVtZW50OiB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50LmJvZHlcbiAgICAgICAgICAgIC5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2VWaWV3TW9kZTogUGFnZVZpZXdNb2RlLlNJTkdMRV9QQUdFLFxuICAgICAgICAgIHBpeGVsUmF0aW86IHRoaXMucGl4ZWxSYXRpbyxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMudmlld2VyLmxvYWREb2N1bWVudChvcHRpb25zKTtcbiAgICAgIHRoaXMuY3JlYXRlTGlzdGVuZXIodGhpcy52aWV3ZXIpO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yID0gKHBheWxvYWQ6IFBheWxvYWQpID0+IHtcbiAgICBjb25zb2xlLmxvZygnZXJyb3I6OicsIHBheWxvYWQpO1xuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZSA9IChwYXlsb2FkOiBQYXlsb2FkKSA9PiB7XG4gICAgdGhpcy5faXNSZW5kZXJDb21wbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMucGFnZVJlbmRlckNvbXBsZXRlLmVtaXQoZmFsc2UpO1xuICAgIGlmICh0aGlzLnZpZXdlciAmJiB0aGlzLnZpZXdlci5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG4gICAgICBjb25zdCBpbnRlcnZhbFRhZyA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuaWZyYW1lRWwgJiZcbiAgICAgICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cgJiZcbiAgICAgICAgICB0aGlzLmlmcmFtZUVsLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgaW1hZ2VzID1cbiAgICAgICAgICAgIHRoaXMuaWZyYW1lRWwuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJyk7XG5cbiAgICAgICAgICBsZXQgYWxsSW1hZ2VzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGltYWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCFpbWFnZXNbaV0uY29tcGxldGUpIHtcbiAgICAgICAgICAgICAgYWxsSW1hZ2VzTG9hZGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYWxsSW1hZ2VzTG9hZGVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQWxsIGltYWdlcyBpbiBpZnJhbWUgbG9hZGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgdGhpcy5wYWdlUmVuZGVyQ29tcGxldGUuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuX2lzUmVuZGVyQ29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbFRhZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCAxMDAwKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVIeXBlcmxpbmsgPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdoYW5kbGVIeXBlcmxpbms6OicsIHBheWxvYWQpO1xuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlTG9hZGVkID0gKHBheWxvYWQ6IFBheWxvYWQpID0+IHtcbiAgICBjb25zb2xlLmxvZygnaGFuZGxlTG9hZGVkOjonLCBwYXlsb2FkKTtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZU5hdmlnYXRpb24gPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgIHRoaXMucGFnZVRvdGFsID0gcGF5bG9hZC5lcGFnZUNvdW50O1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBjcmVhdGVMaXN0ZW5lcih2aWV3ZXI6IENvcmVWaWV3ZXIpIHtcbiAgICB2aWV3ZXIuYWRkTGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5oYW5kbGVFcnJvcik7XG4gICAgdmlld2VyLmFkZExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgdGhpcy5oYW5kbGVSZWFkeVN0YXRlQ2hhbmdlKTtcbiAgICB2aWV3ZXIuYWRkTGlzdGVuZXIoJ2xvYWRlZCcsIHRoaXMuaGFuZGxlTG9hZGVkKTtcbiAgICB2aWV3ZXIuYWRkTGlzdGVuZXIoJ2h5cGVybGluaycsIHRoaXMuaGFuZGxlSHlwZXJsaW5rKTtcbiAgICB2aWV3ZXIuYWRkTGlzdGVuZXIoJ25hdicsIHRoaXMuaGFuZGxlTmF2aWdhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycyh2aWV3ZXI6IENvcmVWaWV3ZXIpIHtcbiAgICB2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5oYW5kbGVFcnJvcik7XG4gICAgdmlld2VyLnJlbW92ZUxpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgdGhpcy5oYW5kbGVSZWFkeVN0YXRlQ2hhbmdlKTtcbiAgICB2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2xvYWRlZCcsIHRoaXMuaGFuZGxlTG9hZGVkKTtcbiAgICB2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ2h5cGVybGluaycsIHRoaXMuaGFuZGxlSHlwZXJsaW5rKTtcbiAgICB2aWV3ZXIucmVtb3ZlTGlzdGVuZXIoJ25hdicsIHRoaXMuaGFuZGxlTmF2aWdhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGdldFN0eWxlcyhpZGVudGlmaWVyU3RyOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3R5bGVzQXJyYXk6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgc3R5bGVFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpO1xuICAgIGNvbnN0IGxlbmd0aCA9IHN0eWxlRWxlbWVudHMubGVuZ3RoO1xuICAgIGxldCBpZGVudGlmaWVyczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpZGVudGlmaWVyU3RyKSkge1xuICAgICAgaWRlbnRpZmllcnMgPSBbLi4uaWRlbnRpZmllclN0cl07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkZW50aWZpZXJzID0gW2lkZW50aWZpZXJTdHJdO1xuICAgIH1cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBpZGVudGlmaWVycy5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgIGlmIChzdHlsZUVsZW1lbnRzW2luZGV4XS5vdXRlckhUTUwuaW5jbHVkZXMocykpIHtcbiAgICAgICAgICBjb25zdCBmb3JtYXRlU3RyID0gc3R5bGVFbGVtZW50c1tpbmRleF0ub3V0ZXJIVE1MLnJlcGxhY2UoXG4gICAgICAgICAgICAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLFxuICAgICAgICAgICAgJydcbiAgICAgICAgICApO1xuICAgICAgICAgIHN0eWxlc0FycmF5LnB1c2goZm9ybWF0ZVN0cik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3R5bGVzQXJyYXkuam9pbignXFxyXFxuJyk7XG4gIH1cblxuICBwcml2YXRlIGdldFZpdlRlbXBsYXRlcyhkaXJlY3RpdmVzOiBOenhQcmludENvbnRlbnREaXJlY3RpdmVbXSkge1xuICAgIGNvbnN0IHRlbXBsYXRlczogc3RyaW5nW10gPSBbXTtcbiAgICBkaXJlY3RpdmVzLmZvckVhY2goKGQpID0+IHtcbiAgICAgIGxldCBzdHlsZXMgPSAnJztcbiAgICAgIGlmIChkLmlkZW50aWZpZXJTdHIgfHwgZC5pZGVudGlmaWVyU3RyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgc3R5bGVzID0gdGhpcy5nZXRTdHlsZXMoZC5pZGVudGlmaWVyU3RyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGh0bWwgPSBgXG4gICAgICAgICAgPCFET0NUWVBFIGh0bWw+XG4gICAgICAgICAgPGh0bWw+XG4gICAgICAgICAgICA8aGVhZD5cbiAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiIC8+XG4gICAgICAgICAgICA8dGl0bGU+JHt0aGlzLnByaW50VGl0bGV9PC90aXRsZT5cbiAgICAgICAgICAgIDxiYXNlIGhyZWY9XCIvXCIgLz5cbiAgICAgICAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiIC8+XG4gICAgICAgICAgICAgJHtkLmN1c3RvbVN0eWxlfVxuICAgICAgICAgICAgICR7c3R5bGVzfVxuICAgICAgICAgICAgPC9oZWFkPlxuICAgICAgICAgICAgPGJvZHk+XG4gICAgICAgICAgICAgICR7ZC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub3V0ZXJIVE1MfVxuICAgICAgICAgICAgPC9ib2R5PlxuICAgICAgICAgIDwvaHRtbD5cbiAgICAgICAgYDtcbiAgICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoLzwhLS0tLT4vZywgJyAnKTtcbiAgICAgIHRlbXBsYXRlcy5wdXNoKGh0bWwpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRlbXBsYXRlcztcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJWaWV3KCkge1xuICAgIGlmICh0aGlzLnZpZXdlcikge1xuICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnModGhpcy52aWV3ZXIpO1xuICAgIH1cbiAgICB0aGlzLnZpdlZpZXdSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICB0aGlzLnZpZXdlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9pc1JlbmRlckNvbXBsZXRlID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==