@acorex/components 16.18.23 → 16.18.25

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,24 +19,39 @@ export class AXFormGroupComponent extends AXBaseComponent {
19
19
  }
20
20
  const input = this.component.ref.nativeElement.querySelector('input');
21
21
  const textArea = this.component.ref.nativeElement.querySelector('textarea');
22
+ if (this.component.name === 'selectBox') {
23
+ const selectBox = this.component;
24
+ selectBox.selectedItemsChange.subscribe((e) => {
25
+ if (e.length > 0 && this.labelMode() === 'float') {
26
+ this.isFloatActive.set(true);
27
+ this.labelMode.set('over');
28
+ }
29
+ else {
30
+ this.labelMode.set('float');
31
+ this.isFloatActive.set(false);
32
+ }
33
+ });
34
+ }
22
35
  if (input) {
36
+ input.addEventListener('input', this.checkForValue.bind(this));
23
37
  input.addEventListener('focus', this.handleFocus.bind(this));
24
38
  input.addEventListener('blur', this.handeleBlur.bind(this));
25
39
  }
26
40
  if (textArea) {
41
+ textArea.addEventListener('input', this.checkForValue.bind(this));
27
42
  textArea.addEventListener('focus', this.handleFocus.bind(this));
28
43
  textArea.addEventListener('blur', this.handeleBlur.bind(this));
29
44
  }
30
- setTimeout(() => {
31
- if ((this.component.value ||
32
- this.component.selectedItems?.length > 0) &&
33
- this.labelMode() === 'float') {
34
- this.labelMode.set('over');
35
- this.isFloatActive.set(true);
36
- this.crd.detectChanges();
37
- }
38
- }, 10000);
45
+ this.checkForValue();
39
46
  });
47
+ checkForValue() {
48
+ if ((this.component.value ||
49
+ this.component.selectedItems?.length > 0) &&
50
+ this.labelMode() === 'float') {
51
+ this.labelMode.set('over');
52
+ this.isFloatActive.set(true);
53
+ }
54
+ }
40
55
  handleFocus() {
41
56
  if (this.labelMode() === 'float') {
42
57
  this.isFloatActive.set(true);
@@ -61,11 +76,11 @@ export class AXFormGroupComponent extends AXBaseComponent {
61
76
  removeEventListener('blur', this.handeleBlur);
62
77
  }
63
78
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXFormGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
64
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.7", type: AXFormGroupComponent, selector: "ax-form-group", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, labelMode: { classPropertyName: "labelMode", publicName: "labelMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { labelMode: "labelModeChange" }, host: { styleAttribute: "width: 100%; display:contents;" }, queries: [{ propertyName: "component", first: true, predicate: AXValidatableComponent, descendants: true }], viewQueries: [{ propertyName: "div", first: true, predicate: ["div"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax form-group {{ size }} ax-form-group-container\">\n <div class=\"ax-lable-{{ labelMode() }}\">\n <ng-content select=\"ax-label\"></ng-content>\n </div>\n <div\n #div\n class=\"ax form-item {{ size }}\"\n [ngClass]=\"{ 'required-state': required }\"\n >\n <div class=\"ax buttons start-buttons\" #startButtons>\n <ng-content select=\"ax-button[start]\"></ng-content>\n </div>\n <div\n [class]=\"labelMode() === 'over' ? 'content ax-over-apply' : 'content'\"\n #content\n >\n <ng-content></ng-content>\n </div>\n <div class=\"ax buttons end-buttons\" #endButtons>\n <ng-content select=\"ax-button[end]\"></ng-content>\n <ng-content select=\"ax-button\"></ng-content>\n </div>\n </div>\n</div>\n", styles: [".ax-form-group-container{position:relative}.ax-form-group-container .ax-lable-static{position:static}.ax-form-group-container .ax-lable-float{top:50%;transform:translateY(-50%)}.ax-form-group-container .ax-lable-over{top:0}.ax-form-group-container .ax-lable-over,.ax-form-group-container .ax-lable-float{position:absolute;z-index:999;transition:all .15s ease-in-out;inset-inline-start:.3rem}.ax-form-group-container .ax-lable-over .form-group-label,.ax-form-group-container .ax-lable-float .form-group-label{padding:.1rem .5rem!important;font-size:.7rem!important}.ax-form-group-container .content.ax-over-apply{padding:.25rem 0 0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
79
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.7", type: AXFormGroupComponent, selector: "ax-form-group", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, labelMode: { classPropertyName: "labelMode", publicName: "labelMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { labelMode: "labelModeChange" }, host: { styleAttribute: "width: 100%; display:contents;" }, queries: [{ propertyName: "component", first: true, predicate: AXValidatableComponent, descendants: true }], viewQueries: [{ propertyName: "div", first: true, predicate: ["div"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax form-group {{ size }} ax-form-group-container\">\n <div class=\"ax-lable-{{ labelMode() }}\">\n <ng-content select=\"ax-label\"></ng-content>\n </div>\n <div\n #div\n class=\"ax form-item {{ size }}\"\n [ngClass]=\"{ 'required-state': required }\"\n >\n <div class=\"ax buttons start-buttons\" #startButtons>\n <ng-content select=\"ax-button[start]\"></ng-content>\n </div>\n <div\n class=\"content {{ labelMode() === 'over' && 'ax-over-apply' }}\"\n #content\n >\n <ng-content></ng-content>\n </div>\n <div class=\"ax buttons end-buttons\" #endButtons>\n <ng-content select=\"ax-button[end]\"></ng-content>\n <ng-content select=\"ax-button\"></ng-content>\n </div>\n </div>\n</div>\n", styles: [".ax-form-group-container{position:relative}.ax-form-group-container .ax-lable-static{position:static}.ax-form-group-container .ax-lable-float{top:50%;transform:translateY(-50%)}.ax-form-group-container .ax-lable-over{top:0}.ax-form-group-container .ax-lable-over,.ax-form-group-container .ax-lable-float{position:absolute;z-index:999;transition:all .15s ease-in-out;inset-inline-start:.3rem}.ax-form-group-container .ax-lable-over .form-group-label,.ax-form-group-container .ax-lable-float .form-group-label{padding:.1rem .5rem!important;font-size:.7rem!important}.ax-form-group-container .content.ax-over-apply{padding:.25rem 0 0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
65
80
  }
66
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXFormGroupComponent, decorators: [{
67
82
  type: Component,
68
- args: [{ selector: 'ax-form-group', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { style: 'width: 100%; display:contents;' }, template: "<div class=\"ax form-group {{ size }} ax-form-group-container\">\n <div class=\"ax-lable-{{ labelMode() }}\">\n <ng-content select=\"ax-label\"></ng-content>\n </div>\n <div\n #div\n class=\"ax form-item {{ size }}\"\n [ngClass]=\"{ 'required-state': required }\"\n >\n <div class=\"ax buttons start-buttons\" #startButtons>\n <ng-content select=\"ax-button[start]\"></ng-content>\n </div>\n <div\n [class]=\"labelMode() === 'over' ? 'content ax-over-apply' : 'content'\"\n #content\n >\n <ng-content></ng-content>\n </div>\n <div class=\"ax buttons end-buttons\" #endButtons>\n <ng-content select=\"ax-button[end]\"></ng-content>\n <ng-content select=\"ax-button\"></ng-content>\n </div>\n </div>\n</div>\n", styles: [".ax-form-group-container{position:relative}.ax-form-group-container .ax-lable-static{position:static}.ax-form-group-container .ax-lable-float{top:50%;transform:translateY(-50%)}.ax-form-group-container .ax-lable-over{top:0}.ax-form-group-container .ax-lable-over,.ax-form-group-container .ax-lable-float{position:absolute;z-index:999;transition:all .15s ease-in-out;inset-inline-start:.3rem}.ax-form-group-container .ax-lable-over .form-group-label,.ax-form-group-container .ax-lable-float .form-group-label{padding:.1rem .5rem!important;font-size:.7rem!important}.ax-form-group-container .content.ax-over-apply{padding:.25rem 0 0}\n"] }]
83
+ args: [{ selector: 'ax-form-group', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { style: 'width: 100%; display:contents;' }, template: "<div class=\"ax form-group {{ size }} ax-form-group-container\">\n <div class=\"ax-lable-{{ labelMode() }}\">\n <ng-content select=\"ax-label\"></ng-content>\n </div>\n <div\n #div\n class=\"ax form-item {{ size }}\"\n [ngClass]=\"{ 'required-state': required }\"\n >\n <div class=\"ax buttons start-buttons\" #startButtons>\n <ng-content select=\"ax-button[start]\"></ng-content>\n </div>\n <div\n class=\"content {{ labelMode() === 'over' && 'ax-over-apply' }}\"\n #content\n >\n <ng-content></ng-content>\n </div>\n <div class=\"ax buttons end-buttons\" #endButtons>\n <ng-content select=\"ax-button[end]\"></ng-content>\n <ng-content select=\"ax-button\"></ng-content>\n </div>\n </div>\n</div>\n", styles: [".ax-form-group-container{position:relative}.ax-form-group-container .ax-lable-static{position:static}.ax-form-group-container .ax-lable-float{top:50%;transform:translateY(-50%)}.ax-form-group-container .ax-lable-over{top:0}.ax-form-group-container .ax-lable-over,.ax-form-group-container .ax-lable-float{position:absolute;z-index:999;transition:all .15s ease-in-out;inset-inline-start:.3rem}.ax-form-group-container .ax-lable-over .form-group-label,.ax-form-group-container .ax-lable-float .form-group-label{padding:.1rem .5rem!important;font-size:.7rem!important}.ax-form-group-container .content.ax-over-apply{padding:.25rem 0 0}\n"] }]
69
84
  }], propDecorators: { size: [{
70
85
  type: Input
71
86
  }], div: [{
@@ -75,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImpor
75
90
  type: ContentChild,
76
91
  args: [AXValidatableComponent]
77
92
  }] } });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZm9ybS1ncm91cC9mb3JtLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBR2Ysc0JBQXNCLEdBQ3ZCLE1BQU0sdUJBQXVCLENBQUM7OztBQVUvQixNQUFNLE9BQU8sb0JBQ1gsU0FBUSxlQUFlO0lBR3ZCLEdBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUdoQyxJQUFJLEdBQWtCLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztJQUd6RCxHQUFHLENBQWE7SUFHUixTQUFTLENBQXlCO0lBRTFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUM7SUFFbkQsU0FBUyxHQUFHLEtBQUssQ0FDZixRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsSUFBSSxRQUFRLENBQzVDLENBQUM7SUFFUSxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhDLFdBQVcsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FDckQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUM3QixDQUFDO1FBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxNQUFNLEtBQUssR0FBSSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDbkUsT0FBTyxDQUNSLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBSSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDdEUsVUFBVSxDQUNYLENBQUM7UUFFRixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzdELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNoRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUNFLENBQUUsSUFBSSxDQUFDLFNBQWlCLENBQUMsS0FBSztnQkFDM0IsSUFBSSxDQUFDLFNBQWlCLENBQUMsYUFBYSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxPQUFPLEVBQzVCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDLENBQUMsQ0FBQztJQUVPLFdBQVc7UUFDbkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFUyxXQUFXO1FBQ25CLElBQ0UsQ0FBRSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxLQUFLO1lBQzNCLElBQUksQ0FBQyxTQUFpQixDQUFDLGFBQWEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxhQUFhLEVBQUUsRUFDcEIsQ0FBQztZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLENBQUM7YUFBTSxJQUNMLENBQUMsQ0FBRSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxLQUFLO1lBQzVCLElBQUksQ0FBQyxTQUFpQixDQUFDLGFBQWEsRUFBRSxNQUFNLEtBQUssQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxhQUFhLEVBQUUsRUFDcEIsQ0FBQztZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0MsbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO3VHQXhGVSxvQkFBb0I7MkZBQXBCLG9CQUFvQix5Y0FZakIsc0JBQXNCLG1LQzNDdEMseXdCQXdCQTs7MkZET2Esb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNFLGVBQWUsaUJBR1YsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRTs4QkFTakQsSUFBSTtzQkFESCxLQUFLO2dCQUlOLEdBQUc7c0JBREYsU0FBUzt1QkFBQyxLQUFLO2dCQUlSLFNBQVM7c0JBRGhCLFlBQVk7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb25maWcgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBpbmplY3QsXG4gIG1vZGVsLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhCYXNlQ29tcG9uZW50LFxuICBBWEJhc2VTaXphYmxlQ29tcG9uZW50LFxuICBBWEVsZW1lbnRTaXplLFxuICBBWFZhbGlkYXRhYmxlQ29tcG9uZW50LFxufSBmcm9tICcuLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1mb3JtLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZm9ybS1ncm91cC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IHN0eWxlOiAnd2lkdGg6IDEwMCU7IGRpc3BsYXk6Y29udGVudHM7JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBBWEZvcm1Hcm91cENvbXBvbmVudFxuICBleHRlbmRzIEFYQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFYQmFzZVNpemFibGVDb21wb25lbnQsIE9uRGVzdHJveVxue1xuICBjcmQgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU6IEFYRWxlbWVudFNpemUgPSBBWENvbmZpZy5nZXQoJ2Zvcm0nKT8uc2l6ZSB8fCAnbWQnO1xuXG4gIEBWaWV3Q2hpbGQoJ2RpdicpXG4gIGRpdjogRWxlbWVudFJlZjtcblxuICBAQ29udGVudENoaWxkKEFYVmFsaWRhdGFibGVDb21wb25lbnQpXG4gIHByaXZhdGUgY29tcG9uZW50OiBBWFZhbGlkYXRhYmxlQ29tcG9uZW50O1xuXG4gIHJlcXVpcmVkID0gQVhDb25maWcuZ2V0KCdmb3JtJyk/LnJlcXVpcmVkIHx8IGZhbHNlO1xuXG4gIGxhYmVsTW9kZSA9IG1vZGVsPCdzdGF0aWMnIHwgJ2Zsb2F0JyB8ICdvdmVyJz4oXG4gICAgQVhDb25maWcuZ2V0KCdmb3JtJyk/LmxhYmVsTW9kZSB8fCAnc3RhdGljJ1xuICApO1xuXG4gIHByb3RlY3RlZCBpc0Zsb2F0QWN0aXZlID0gc2lnbmFsKGZhbHNlKTtcblxuICAjbmV4dFJlbmRlciA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgdGhpcy5yZXF1aXJlZCA9IHRoaXMuY29tcG9uZW50Py52YWxpZGF0aW9uPy5ydWxlcz8uc29tZShcbiAgICAgIChjKSA9PiBjLnR5cGUgPT09ICdyZXF1aXJlZCdcbiAgICApO1xuICAgIHRoaXMuZGl2Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLnNpemUpO1xuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmRpdi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3JlcXVpcmVkLXN0YXRlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXQgPSAodGhpcy5jb21wb25lbnQgYXMgYW55KS5yZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ2lucHV0J1xuICAgICk7XG4gICAgY29uc3QgdGV4dEFyZWEgPSAodGhpcy5jb21wb25lbnQgYXMgYW55KS5yZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ3RleHRhcmVhJ1xuICAgICk7XG5cbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5oYW5kbGVGb2N1cy5iaW5kKHRoaXMpKTtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLmhhbmRlbGVCbHVyLmJpbmQodGhpcykpO1xuICAgIH1cbiAgICBpZiAodGV4dEFyZWEpIHtcbiAgICAgIHRleHRBcmVhLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5oYW5kbGVGb2N1cy5iaW5kKHRoaXMpKTtcbiAgICAgIHRleHRBcmVhLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLmhhbmRlbGVCbHVyLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAoKHRoaXMuY29tcG9uZW50IGFzIGFueSkudmFsdWUgfHxcbiAgICAgICAgICAodGhpcy5jb21wb25lbnQgYXMgYW55KS5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggPiAwKSAmJlxuICAgICAgICB0aGlzLmxhYmVsTW9kZSgpID09PSAnZmxvYXQnXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5sYWJlbE1vZGUuc2V0KCdvdmVyJyk7XG4gICAgICAgIHRoaXMuaXNGbG9hdEFjdGl2ZS5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY3JkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9LCAxMDAwMCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBoYW5kbGVGb2N1cygpIHtcbiAgICBpZiAodGhpcy5sYWJlbE1vZGUoKSA9PT0gJ2Zsb2F0Jykge1xuICAgICAgdGhpcy5pc0Zsb2F0QWN0aXZlLnNldCh0cnVlKTtcbiAgICAgIHRoaXMubGFiZWxNb2RlLnNldCgnb3ZlcicpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kZWxlQmx1cigpIHtcbiAgICBpZiAoXG4gICAgICAoKHRoaXMuY29tcG9uZW50IGFzIGFueSkudmFsdWUgfHxcbiAgICAgICAgKHRoaXMuY29tcG9uZW50IGFzIGFueSkuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID4gMCkgJiZcbiAgICAgIHRoaXMuaXNGbG9hdEFjdGl2ZSgpXG4gICAgKSB7XG4gICAgICB0aGlzLmxhYmVsTW9kZS5zZXQoJ292ZXInKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgKCEodGhpcy5jb21wb25lbnQgYXMgYW55KS52YWx1ZSB8fFxuICAgICAgICAodGhpcy5jb21wb25lbnQgYXMgYW55KS5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggPT09IDApICYmXG4gICAgICB0aGlzLmlzRmxvYXRBY3RpdmUoKVxuICAgICkge1xuICAgICAgdGhpcy5sYWJlbE1vZGUuc2V0KCdmbG9hdCcpO1xuICAgICAgdGhpcy5pc0Zsb2F0QWN0aXZlLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLmhhbmRsZUZvY3VzKTtcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgdGhpcy5oYW5kZWxlQmx1cik7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheCBmb3JtLWdyb3VwIHt7IHNpemUgfX0gYXgtZm9ybS1ncm91cC1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cImF4LWxhYmxlLXt7IGxhYmVsTW9kZSgpIH19XCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtbGFiZWxcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgI2RpdlxuICAgIGNsYXNzPVwiYXggZm9ybS1pdGVtIHt7IHNpemUgfX1cIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3JlcXVpcmVkLXN0YXRlJzogcmVxdWlyZWQgfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiYXggYnV0dG9ucyBzdGFydC1idXR0b25zXCIgI3N0YXJ0QnV0dG9ucz5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWJ1dHRvbltzdGFydF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW2NsYXNzXT1cImxhYmVsTW9kZSgpID09PSAnb3ZlcicgPyAnY29udGVudCBheC1vdmVyLWFwcGx5JyA6ICdjb250ZW50J1wiXG4gICAgICAjY29udGVudFxuICAgID5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXggYnV0dG9ucyBlbmQtYnV0dG9uc1wiICNlbmRCdXR0b25zPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtYnV0dG9uW2VuZF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1idXR0b25cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZm9ybS1ncm91cC9mb3JtLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBRVYsS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBR2Ysc0JBQXNCLEdBQ3ZCLE1BQU0sdUJBQXVCLENBQUM7OztBQVcvQixNQUFNLE9BQU8sb0JBQ1gsU0FBUSxlQUFlO0lBR3ZCLEdBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUdoQyxJQUFJLEdBQWtCLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztJQUd6RCxHQUFHLENBQWE7SUFHUixTQUFTLENBQXlCO0lBRTFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUM7SUFFbkQsU0FBUyxHQUFHLEtBQUssQ0FDZixRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsSUFBSSxRQUFRLENBQzVDLENBQUM7SUFFUSxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhDLFdB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bUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO3VHQXhHVSxvQkFBb0I7MkZBQXBCLG9CQUFvQix5Y0FZakIsc0JBQXNCLG1LQzdDdEMsa3dCQXdCQTs7MkZEU2Esb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNFLGVBQWUsaUJBR1YsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRTs4QkFTakQsSUFBSTtzQkFESCxLQUFLO2dCQUlOLEdBQUc7c0JBREYsU0FBUzt1QkFBQyxLQUFLO2dCQUlSLFNBQVM7c0JBRGhCLFlBQVk7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb25maWcgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGluamVjdCxcbiAgbW9kZWwsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWEJhc2VDb21wb25lbnQsXG4gIEFYQmFzZVNpemFibGVDb21wb25lbnQsXG4gIEFYRWxlbWVudFNpemUsXG4gIEFYVmFsaWRhdGFibGVDb21wb25lbnQsXG59IGZyb20gJy4uL2Jhc2UvZWxlbWVudC5jbGFzcyc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveENvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdGJveC9zZWxlY3Rib3guY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtZm9ybS1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Zvcm0tZ3JvdXAuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBzdHlsZTogJ3dpZHRoOiAxMDAlOyBkaXNwbGF5OmNvbnRlbnRzOycgfSxcbn0pXG5leHBvcnQgY2xhc3MgQVhGb3JtR3JvdXBDb21wb25lbnRcbiAgZXh0ZW5kcyBBWEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBWEJhc2VTaXphYmxlQ29tcG9uZW50LCBPbkRlc3Ryb3lcbntcbiAgY3JkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBASW5wdXQoKVxuICBzaXplOiBBWEVsZW1lbnRTaXplID0gQVhDb25maWcuZ2V0KCdmb3JtJyk/LnNpemUgfHwgJ21kJztcblxuICBAVmlld0NoaWxkKCdkaXYnKVxuICBkaXY6IEVsZW1lbnRSZWY7XG5cbiAgQENvbnRlbnRDaGlsZChBWFZhbGlkYXRhYmxlQ29tcG9uZW50KVxuICBwcml2YXRlIGNvbXBvbmVudDogQVhWYWxpZGF0YWJsZUNvbXBvbmVudDtcblxuICByZXF1aXJlZCA9IEFYQ29uZmlnLmdldCgnZm9ybScpPy5yZXF1aXJlZCB8fCBmYWxzZTtcblxuICBsYWJlbE1vZGUgPSBtb2RlbDwnc3RhdGljJyB8ICdmbG9hdCcgfCAnb3Zlcic+KFxuICAgIEFYQ29uZmlnLmdldCgnZm9ybScpPy5sYWJlbE1vZGUgfHwgJ3N0YXRpYydcbiAgKTtcblxuICBwcm90ZWN0ZWQgaXNGbG9hdEFjdGl2ZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgI25leHRSZW5kZXIgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgIHRoaXMucmVxdWlyZWQgPSB0aGlzLmNvbXBvbmVudD8udmFsaWRhdGlvbj8ucnVsZXM/LnNvbWUoXG4gICAgICAoYykgPT4gYy50eXBlID09PSAncmVxdWlyZWQnXG4gICAgKTtcbiAgICB0aGlzLmRpdi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5zaXplKTtcbiAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgdGhpcy5kaXYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdyZXF1aXJlZC1zdGF0ZScpO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0ID0gKHRoaXMuY29tcG9uZW50IGFzIGFueSkucmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dCdcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dEFyZWEgPSAodGhpcy5jb21wb25lbnQgYXMgYW55KS5yZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ3RleHRhcmVhJ1xuICAgICkgYXMgSFRNTFRleHRBcmVhRWxlbWVudDtcblxuICAgIGlmICgodGhpcy5jb21wb25lbnQgYXMgYW55KS5uYW1lID09PSAnc2VsZWN0Qm94Jykge1xuICAgICAgY29uc3Qgc2VsZWN0Qm94ID0gdGhpcy5jb21wb25lbnQgYXMgQVhTZWxlY3RCb3hDb21wb25lbnQ7XG4gICAgICBzZWxlY3RCb3guc2VsZWN0ZWRJdGVtc0NoYW5nZS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgaWYgKGUubGVuZ3RoID4gMCAmJiB0aGlzLmxhYmVsTW9kZSgpID09PSAnZmxvYXQnKSB7XG4gICAgICAgICAgdGhpcy5pc0Zsb2F0QWN0aXZlLnNldCh0cnVlKTtcbiAgICAgICAgICB0aGlzLmxhYmVsTW9kZS5zZXQoJ292ZXInKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxhYmVsTW9kZS5zZXQoJ2Zsb2F0Jyk7XG4gICAgICAgICAgdGhpcy5pc0Zsb2F0QWN0aXZlLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpbnB1dCkge1xuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCB0aGlzLmNoZWNrRm9yVmFsdWUuYmluZCh0aGlzKSk7XG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuaGFuZGxlRm9jdXMuYmluZCh0aGlzKSk7XG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgdGhpcy5oYW5kZWxlQmx1ci5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgaWYgKHRleHRBcmVhKSB7XG4gICAgICB0ZXh0QXJlYS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIHRoaXMuY2hlY2tGb3JWYWx1ZS5iaW5kKHRoaXMpKTtcbiAgICAgIHRleHRBcmVhLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5oYW5kbGVGb2N1cy5iaW5kKHRoaXMpKTtcbiAgICAgIHRleHRBcmVhLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLmhhbmRlbGVCbHVyLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHRoaXMuY2hlY2tGb3JWYWx1ZSgpO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgY2hlY2tGb3JWYWx1ZSgpIHtcbiAgICBpZiAoXG4gICAgICAoKHRoaXMuY29tcG9uZW50IGFzIGFueSkudmFsdWUgfHxcbiAgICAgICAgKHRoaXMuY29tcG9uZW50IGFzIGFueSkuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID4gMCkgJiZcbiAgICAgIHRoaXMubGFiZWxNb2RlKCkgPT09ICdmbG9hdCdcbiAgICApIHtcbiAgICAgIHRoaXMubGFiZWxNb2RlLnNldCgnb3ZlcicpO1xuICAgICAgdGhpcy5pc0Zsb2F0QWN0aXZlLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMubGFiZWxNb2RlKCkgPT09ICdmbG9hdCcpIHtcbiAgICAgIHRoaXMuaXNGbG9hdEFjdGl2ZS5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmxhYmVsTW9kZS5zZXQoJ292ZXInKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGVsZUJsdXIoKSB7XG4gICAgaWYgKFxuICAgICAgKCh0aGlzLmNvbXBvbmVudCBhcyBhbnkpLnZhbHVlIHx8XG4gICAgICAgICh0aGlzLmNvbXBvbmVudCBhcyBhbnkpLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA+IDApICYmXG4gICAgICB0aGlzLmlzRmxvYXRBY3RpdmUoKVxuICAgICkge1xuICAgICAgdGhpcy5sYWJlbE1vZGUuc2V0KCdvdmVyJyk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICghKHRoaXMuY29tcG9uZW50IGFzIGFueSkudmFsdWUgfHxcbiAgICAgICAgKHRoaXMuY29tcG9uZW50IGFzIGFueSkuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID09PSAwKSAmJlxuICAgICAgdGhpcy5pc0Zsb2F0QWN0aXZlKClcbiAgICApIHtcbiAgICAgIHRoaXMubGFiZWxNb2RlLnNldCgnZmxvYXQnKTtcbiAgICAgIHRoaXMuaXNGbG9hdEFjdGl2ZS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5oYW5kbGVGb2N1cyk7XG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuaGFuZGVsZUJsdXIpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXggZm9ybS1ncm91cCB7eyBzaXplIH19IGF4LWZvcm0tZ3JvdXAtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJheC1sYWJsZS17eyBsYWJlbE1vZGUoKSB9fVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWxhYmVsXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICNkaXZcbiAgICBjbGFzcz1cImF4IGZvcm0taXRlbSB7eyBzaXplIH19XCJcbiAgICBbbmdDbGFzc109XCJ7ICdyZXF1aXJlZC1zdGF0ZSc6IHJlcXVpcmVkIH1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImF4IGJ1dHRvbnMgc3RhcnQtYnV0dG9uc1wiICNzdGFydEJ1dHRvbnM+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1idXR0b25bc3RhcnRdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY29udGVudCB7eyBsYWJlbE1vZGUoKSA9PT0gJ292ZXInICYmICdheC1vdmVyLWFwcGx5JyB9fVwiXG4gICAgICAjY29udGVudFxuICAgID5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXggYnV0dG9ucyBlbmQtYnV0dG9uc1wiICNlbmRCdXR0b25zPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtYnV0dG9uW2VuZF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1idXR0b25cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=