@testgorilla/tgo-ui 2.26.19 → 2.26.20

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.
@@ -3,7 +3,7 @@ import { ApplicationTheme } from '../../models/application-theme.model';
3
3
  import { FilterButtonOption } from './filter-button.model';
4
4
  import { IconName } from '../icon/icon.model';
5
5
  import { ButtonIconPosition } from '../button/button.model';
6
- import { FocusKeyManager } from "@angular/cdk/a11y";
6
+ import { FocusKeyManager } from '@angular/cdk/a11y';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class FilterButtonComponent implements OnChanges {
9
9
  private readonly defaultAppTheme;
@@ -98,7 +98,16 @@ export declare class FilterButtonComponent implements OnChanges {
98
98
  displayedLabel: import("@angular/core").WritableSignal<string>;
99
99
  tooltip: import("@angular/core").WritableSignal<string>;
100
100
  search: import("@angular/core").WritableSignal<string>;
101
- displayedOptions: import("@angular/core").Signal<FilterButtonOption[]>;
101
+ showTooltip: {
102
+ [key: string]: boolean;
103
+ };
104
+ displayedOptions: import("@angular/core").Signal<{
105
+ sectionTitle: string;
106
+ value: string;
107
+ label: string;
108
+ labelNumber?: number | undefined;
109
+ icon?: IconName | undefined;
110
+ }[]>;
102
111
  readonly MIN_OPTIONS_LENGTH_FOR_SEARCH = 8;
103
112
  protected keyManager: FocusKeyManager<HTMLElement>;
104
113
  protected translationContext: string;
@@ -107,11 +116,11 @@ export declare class FilterButtonComponent implements OnChanges {
107
116
  clearValue(): void;
108
117
  outsideClick(): void;
109
118
  toggle(): void;
110
- overlayAttach(): void;
111
119
  isSelected(value?: string): boolean;
112
120
  optionChanged(selected: boolean, option: FilterButtonOption): void;
113
- private updateLabel;
114
121
  keyDownHandler(ev: any): void;
122
+ onLabelEllipsisChange(isEllipsis: boolean, value: string): void;
123
+ private updateLabel;
115
124
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterButtonComponent, [{ optional: true; }, null]>;
116
125
  static ɵcmp: i0.ɵɵComponentDeclaration<FilterButtonComponent, "ui-filter-button", never, { "label": { "alias": "label"; "required": false; }; "message": { "alias": "message"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "options": { "alias": "options"; "required": false; }; "allowClear": { "alias": "allowClear"; "required": false; }; "singleSelection": { "alias": "singleSelection"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; }, { "changed": "changed"; }, never, never, false, never>;
117
126
  }
@@ -6,11 +6,13 @@ import * as i4 from "@angular/material/tooltip";
6
6
  import * as i5 from "@angular/cdk/overlay";
7
7
  import * as i6 from "../../pipes/ui-translate.pipe";
8
8
  import * as i7 from "../button/button.component.module";
9
- import * as i8 from "../checkbox/checkbox.component.module";
10
- import * as i9 from "../field/field.component.module";
11
- import * as i10 from "../radio-button/radio-button.component.module";
9
+ import * as i8 from "../icon/icon.component.module";
10
+ import * as i9 from "../checkbox/checkbox.component.module";
11
+ import * as i10 from "../field/field.component.module";
12
+ import * as i11 from "../../directives/ellipse-text.directive";
13
+ import * as i12 from "../radio-button/radio-button.component.module";
12
14
  export declare class FilterButtonComponentModule {
13
15
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterButtonComponentModule, never>;
14
- static ɵmod: i0.ɵɵNgModuleDeclaration<FilterButtonComponentModule, [typeof i1.FilterButtonComponent], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i4.MatTooltipModule, typeof i5.OverlayModule, typeof i6.UiTranslatePipe, typeof i7.ButtonComponentModule, typeof i8.CheckboxComponentModule, typeof i9.FieldComponentModule, typeof i10.RadioButtonComponentModule], [typeof i1.FilterButtonComponent]>;
16
+ static ɵmod: i0.ɵɵNgModuleDeclaration<FilterButtonComponentModule, [typeof i1.FilterButtonComponent], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i4.MatTooltipModule, typeof i5.OverlayModule, typeof i6.UiTranslatePipe, typeof i7.ButtonComponentModule, typeof i8.IconComponentModule, typeof i9.CheckboxComponentModule, typeof i10.FieldComponentModule, typeof i11.EllipseTextDirective, typeof i12.RadioButtonComponentModule], [typeof i1.FilterButtonComponent]>;
15
17
  static ɵinj: i0.ɵɵInjectorDeclaration<FilterButtonComponentModule>;
16
18
  }
@@ -1,6 +1,8 @@
1
+ import { IconName } from "../icon/icon.model";
1
2
  export interface FilterButtonOption {
2
3
  value: string;
3
4
  label: string;
4
5
  labelNumber?: number;
6
+ icon?: IconName;
5
7
  sectionTitle?: string;
6
8
  }
@@ -211,6 +211,7 @@ export class ButtonComponent {
211
211
  changes['iconPosition'] ||
212
212
  changes['disabled'] ||
213
213
  changes['companyColor'] ||
214
+ changes['variant'] ||
214
215
  changes['applicationTheme']) {
215
216
  this.classCss = this.setCssClass();
216
217
  this.styleCss = this.setCssStyle();
@@ -445,4 +446,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
445
446
  type: HostBinding,
446
447
  args: ['style.--color']
447
448
  }] } });
448
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFZdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7O0FBVzdELE1BQU0sT0FBTyxlQUFlO0lBQzFCLElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQTZORCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBZUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsWUFDNkUsZUFBaUM7UUFBakMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBcFA5Rzs7Ozs7V0FLRztRQUNNLFNBQUksR0FBZSxLQUFLLENBQUM7UUFDbEM7Ozs7O1dBS0c7UUFHSCxZQUFPLEdBQWdCLFNBQVMsQ0FBQztRQUVqQzs7OztX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O2dCQVFHLE9BQU87c0JBQWYsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQVNHLElBQUk7c0JBQVosS0FBSztnQkFTRyxZQUFZO3NCQUFwQixLQUFLO2dCQVNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFXTixnQkFBZ0I7c0JBRmYsV0FBVzt1QkFBQyxZQUFZOztzQkFDeEIsS0FBSztnQkFVRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBUUcsU0FBUztzQkFBakIsS0FBSztnQkFRRyxZQUFZO3NCQUFwQixLQUFLO2dCQVNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBUUcsZUFBZTtzQkFBdkIsS0FBSztnQkFPa0MsY0FBYztzQkFBckQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFPRSxhQUFhO3NCQUFwRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVE3QixlQUFlO3NCQUF2QixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRUcsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUV3QyxhQUFhO3NCQUEzRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBUXpDLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3VzZS1saWZlY3ljbGUtaW50ZXJmYWNlICovXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBib29sZWFuQXR0cmlidXRlLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZGVsJztcbmltcG9ydCB7XG4gIEJ1dHRvbkJhZGdlQ29uZmlnLFxuICBCdXR0b25Db2xvcixcbiAgQnV0dG9uSWNvblBvc2l0aW9uLFxuICBCdXR0b25TaXplLFxuICBCdXR0b25TdGF0ZSxcbiAgQnV0dG9uVHlwZSxcbiAgSWNvbkJ1dHRvblNpemUsXG4gIExpbmtVcmxUYXJnZXRcbn0gZnJvbSAnLi9idXR0b24ubW9kZWwnO1xuaW1wb3J0IHsgYWRqdXN0TGlnaHRuZXNzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3ItY29udHJhc3QnO1xuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uVGhlbWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwbGljYXRpb24tdGhlbWUubW9kZWwnO1xuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBGb2N1c09yaWdpbiB9IGZyb20gXCJAYW5ndWxhci9jZGsvYTExeVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5wb2ludGVyLWV2ZW50cycpXG4gIGdldCBlbmFibGVkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAnbm9uZScgOiAnYWxsJztcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXBFbGVtZW50JykgdG9vbHRpcEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgYnV0dG9uIGhlaWdodFxuICAgKlxuICAgKiBAdHlwZSB7QnV0dG9uU2l6ZX1cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2l6ZTogQnV0dG9uU2l6ZSA9ICdiaWcnO1xuICAvKipcbiAgICogQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uIHdoaWxlIGluIGFjdGl2ZSBzdGF0ZVxuICAgKlxuICAgKiBAdHlwZSB7QnV0dG9uQ29sb3J9XG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5idG4tdmFyaWFudCcpXG4gIEBJbnB1dCgpXG4gIHZhcmlhbnQ6IEJ1dHRvbkNvbG9yID0gJ3ByaW1hcnknO1xuXG4gIC8qKlxuICAgKiBUZXh0IGNvbnRlbnQgdG8gYXBwZWFyIG9uIHRoZSBidXR0b25cbiAgICpcbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbGFiZWwgPSAnJztcblxuICAvKipcbiAgICogUG9zaXRpb25pbmcgb2YgdGhlIGljb24gKHdoZW4gZXhpc3RhbnQpXG4gICAqXG4gICAqIEB0eXBlIHtCdXR0b25JY29uUG9zaXRpb259XG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGljb25Qb3NpdGlvbj86IEJ1dHRvbkljb25Qb3NpdGlvbiA9ICdyaWdodCc7XG5cbiAgLyoqXG4gICAqIERlZmluZSBpZiBidXR0b24gaGFzIG9ubHkgaWNvbiB3aXRob3V0IHRleHRcbiAgICpcbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkganVzdEljb24gPSBmYWxzZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB1aS1pY29uXG4gICAqXG4gICAqIEB0eXBlIHtJY29uTmFtZX1cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaWNvbk5hbWU6IEljb25OYW1lID0gJyc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRvciBpZiB0aGUgYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZFxuICAgKlxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0b3IgaWYgdGhlIGxvYWRpbmcgaWNvbiBzaG91bGQgYmUgc2hvd25cbiAgICpcbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0b3Igb2YgdGhlIGJ1dHRvbiB3aWR0aFxuICAgKlxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBmdWxsV2lkdGggPSBmYWxzZTtcblxuICAvKipcbiAgICogVXJsIG9mIGJ1dHRvbiBpZiBpdCBpcyBhIGxpbmtcbiAgICpcbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcmwncyB0YXJnZXQgb2YgYnV0dG9uIGlmIGl0IGlzIGEgbGlua1xuICAgKlxuICAgKiBAdHlwZSB7QHR5cGUge0xpbmtVcmxUYXJnZXR9fVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB1cmxUYXJnZXQ/OiBMaW5rVXJsVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBCdXR0b24gdmFsdWVcbiAgICpcbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdmFsdWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSB0b29sdGlwXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgdG9vbHRpcCB0aGF0IGlzIGRpc3BsYXllZCBvbiBob3Zlci4gUmVxdWlyZWQgZm9yIGljb24tYnV0dG9uIHR5cGVcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcCA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgaXNQcmVtaXVtXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgaWNvbiB0aGF0IGlzIGRpc3BsYXllZCBmb3IgUHJlbWl1bSBidXR0b25cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGlzUHJlbWl1bSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgYnV0dG9uLlxuICAgKlxuICAgKiBAdHlwZSB7QnV0dG9uVHlwZX1cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKiBAZGVmYXVsdCAnYnV0dG9uJ1xuICAgKi9cbiAgQElucHV0KCkgdHlwZTogQnV0dG9uVHlwZSA9ICdidXR0b24nO1xuXG4gIC8qKlxuICAgKiBDb2xvciBvZiB0aGUgYnV0dG9uLlxuICAgKiBEZWZhdWx0cyB0byBUZXN0IEdvcmlsbGEgcHJpbWFyeSBjb2xvci5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgY29tcGFueUNvbG9yOiBzdHJpbmcgfCBudWxsID0gJyc7XG5cbiAgLyoqXG4gICAqIENvbmZpZyBmb3IgdGhlIGJ1dHRvbiBiYWRnZSB2YXJpYXRpb25cbiAgICogQHR5cGUge0J1dHRvbkJhZGdlQ29uZmlnfVxuICAgKiBAcHJvcGVydHkgYmFkZ2VUeXBlIFR5cGUgb2YgYmFkZ2Ugb24gdGhlIGJ1dHRvblxuICAgKiBAcHJvcGVydHkgYmFkZ2VMYWJlbCBMYWJlbCB0ZXh0IGZvciB0aGUgYmFkZ2VcbiAgICogQHByb3BlcnR5IGJhZGdlTm90aWZpY2F0aW9uQW1vdW50IFRoZSBhbW91bnQgZm9yIG5vdGlmaWNhdGlvbiBpbiB0aGUgYmFkZ2VcbiAgICovXG4gIEBJbnB1dCgpIGJ1dHRvbkJhZGdlQ29uZmlnOiBCdXR0b25CYWRnZUNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICpcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWUgd2hlcmUgYnV0dG9ucyBpcyB1c2VkXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIudGhlbWUnKVxuICBASW5wdXQoKVxuICBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcblxuICAvKipcbiAgICpcbiAgICogRGlzYWJsZWQgYnV0dG9uIHNjYWxlIG9uIGNsaWNrXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZFNjYWxlT25DbGljayA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgbGFiZWwgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgbGFiZWwgaXMgdXNlZCB0byBwcm92aWRlIGFuIGFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciBhbiBpbnB1dCBmaWVsZCBpcyByZXF1aXJlZCBmb3IgZm9ybSBzdWJtaXNzaW9uLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXJpYVJlcXVpcmVkID0gZmFsc2U7XG5cblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgYW4gaW5wdXQgZmllbGQgaXMgcmVxdWlyZWQgZm9yIGZvcm0gc3VibWlzc2lvbi5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsbGVkYnkgPSAnJztcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgYW4gaW5wdXQgZmllbGQgaXMgcmVxdWlyZWQgZm9yIGZvcm0gc3VibWlzc2lvbi5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXJpYURlc2NyaWJlZGJ5ID0gJyc7XG5cbiAgLyoqXG4gICAqIFByZXZlbnRzIGRlZmF1bHQgYnV0dG9uIGNsaWNrIGJlaGF2aW9yXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJldmVudERlZmF1bHQgPSBmYWxzZTtcblxuICAvKipcbiAgICogR2hvc3QgdmFyaWFudCB3aXRoIHdoaXRlIGJhY2tncm91bmRcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNCYWNrZ3JvdW5kID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldHMgdG9vbHRpcCBwb3NpdGlvblxuICAgKlxuICAgKiBAdHlwZSB7VG9vbHRpcFBvc2l0aW9ufVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwUG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbiA9ICdiZWxvdyc7XG5cbiAgQElucHV0KCkgcm9sZTogc3RyaW5nID0gJ2J1dHRvbic7XG5cbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKSBidXR0b25Ib3ZlckV2ZW50OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKCdidXR0b25FbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIGJ1dHRvbkVsZW1lbnQ6IE1hdEJ1dHRvbjtcblxuXG4gIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLWNvbG9yJylcbiAgZ2V0IGNvbXBDb2xvcigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDb21wYW55Q29sb3I7XG4gIH1cblxuICBjbGFzc0Nzczogc3RyaW5nO1xuICBzdHlsZUNzczogYW55O1xuICBpc0J1dHRvbkxpbms6IGJvb2xlYW47XG4gIGlzTGFiZWw6IGJvb2xlYW47XG4gIGJ1dHRvblN0YXRlOiBCdXR0b25TdGF0ZTtcbiAgaG92ZXIgPSBmYWxzZTtcbiAgaWNvbkJ1dHRvblNpemU6IEljb25CdXR0b25TaXplID0gJzQwJztcbiAgYWxsb3dCdXR0b25UeXBlRm9yUHJlbWl1bTogQnV0dG9uQ29sb3JbXSA9IFsnc2Vjb25kYXJ5JywgJ3ByaW1hcnknLCAnZ2hvc3QnLCAnb3V0bGluZWQnLCAnZGVzdHJ1Y3RpdmUnXTtcbiAgaXNGaWxsZWRJY29uOiBib29sZWFuO1xuICBjb2xvcmVkSWNvbnMgPSBbJ0dvb2dsZS1pbi1saW5lJywgJ0dvb2dsZScsICdHb29nbGUtZmlsbGVkJ107XG4gIGxhYmVsRWxsaXBzaXMgPSBmYWxzZTtcbiAgaWNvbjogSWNvbk5hbWUgPSAnJztcblxuICBnZXQgdHlwZUluY2x1ZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsbG93QnV0dG9uVHlwZUZvclByZW1pdW0uaW5jbHVkZXModGhpcy52YXJpYW50KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgKSB7XG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblRoZW1lID0gZGVmYXVsdEFwcFRoZW1lO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2xhc3NDc3MgPSB0aGlzLnNldENzc0NsYXNzKCk7XG4gICAgdGhpcy5zdHlsZUNzcyA9IHRoaXMuc2V0Q3NzU3R5bGUoKTtcbiAgICB0aGlzLmlzQnV0dG9uTGluayA9IHRoaXMuc2hvd0J1dHRvbkxpbmsoKTtcbiAgICB0aGlzLmlzTGFiZWwgPSB0aGlzLnNob3dMYWJlbCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddKSB7XG4gICAgICB0aGlzLmJ1dHRvblN0YXRlID0gJ2RlZmF1bHQnO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYXBwbGljYXRpb25UaGVtZSkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3R5cGUnXSkge1xuICAgICAgdGhpcy5pc0J1dHRvbkxpbmsgPSB0aGlzLnNob3dCdXR0b25MaW5rKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydsb2FkaW5nJ10pIHtcbiAgICAgIHRoaXMuaXNMYWJlbCA9IHRoaXMuc2hvd0xhYmVsKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpY29uTmFtZSddKSB7XG4gICAgICB0aGlzLmljb24gPSBjaGFuZ2VzWydpY29uTmFtZSddLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1sndHlwZSddIHx8XG4gICAgICBjaGFuZ2VzWydmdWxsV2lkdGgnXSB8fFxuICAgICAgY2hhbmdlc1snaWNvbk5hbWUnXSB8fFxuICAgICAgY2hhbmdlc1snanVzdEljb24nXSB8fFxuICAgICAgY2hhbmdlc1snaWNvblBvc2l0aW9uJ10gfHxcbiAgICAgIGNoYW5nZXNbJ2Rpc2FibGVkJ10gfHxcbiAgICAgIGNoYW5nZXNbJ2NvbXBhbnlDb2xvciddIHx8XG4gICAgICBjaGFuZ2VzWydhcHBsaWNhdGlvblRoZW1lJ11cbiAgICApIHtcbiAgICAgIHRoaXMuY2xhc3NDc3MgPSB0aGlzLnNldENzc0NsYXNzKCk7XG4gICAgICB0aGlzLnN0eWxlQ3NzID0gdGhpcy5zZXRDc3NTdHlsZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sndmFyaWFudCddPy5jdXJyZW50VmFsdWUgPT09ICdpY29uLWJ1dHRvbicgfHwgKGNoYW5nZXNbJ3ZhcmlhbnQnXT8uY3VycmVudFZhbHVlID09PSAnbWVudVRyaWdnZXInICYmIHRoaXMuYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnKSkge1xuICAgICAgdGhpcy5pY29uQnV0dG9uU2l6ZSA9IHRoaXMuc2V0SWNvbkJ1dHRvblNpemUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzRmlsbGVkSWNvbiA9IHRoaXMuYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnICYmICh0aGlzLnZhcmlhbnQgPT09ICdwcmltYXJ5JyB8fCB0aGlzLnZhcmlhbnQgPT09ICdzZWNvbmRhcnknKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2x0aXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub25jbGljayA9IGV2ID0+IHtcbiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9O1xuICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdpY29uLWJ1dHRvbicgJiYgIXRoaXMudG9vbHRpcCkge1xuICAgICAgY29uc29sZS53YXJuKCd1aS1idXR0b24gQnV0dG9uQ29tcG9uZW50XFxuICAgIFt0b29sdGlwXSBpcyByZXF1aXJlZCBmb3IgW3R5cGVdIGljb24tYnV0dG9uIScpO1xuICAgIH0gZWxzZSBpZiAodGhpcy52YXJpYW50ID09PSAnZGVzdHJ1Y3RpdmUnICYmICF0aGlzLmljb24gJiYgIXRoaXMubG9hZGluZyAmJiB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJykge1xuICAgICAgY29uc29sZS53YXJuKCd1aS1idXR0b24gQnV0dG9uQ29tcG9uZW50XFxuICBbaWNvbl0gaXMgcmVxdWlyZWQgZm9yIFt0eXBlXSBkZXN0cnVjdGl2ZScpO1xuICAgIH1cbiAgfVxuXG4gIGJ1dHRvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZXZlbnREZWZhdWx0KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuYnV0dG9uQ2xpY2tFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGJ1dHRvbkhvdmVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2VlbnRlcicpIHtcbiAgICAgIHRoaXMuaG92ZXIgPSB0cnVlO1xuICAgICAgdGhpcy5idXR0b25Ib3ZlckV2ZW50LmVtaXQoZXZlbnQpO1xuICAgICAgdGhpcy5idXR0b25TdGF0ZSA9ICdob3Zlcic7XG4gICAgICBpZiAodGhpcy5zaG91bGRDaGFuZ2VGaWxsZWRTdGF0dXMgJiYgdGhpcy5pY29uKSB7XG4gICAgICAgIHRoaXMuaWNvbiA9IHRoaXMuZ2V0SWNvbk5hbWUodGhpcy5pY29uTmFtZSwgJy1maWxsZWQnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ob3ZlciA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuc2hvdWxkQ2hhbmdlRmlsbGVkU3RhdHVzICYmIHRoaXMuaWNvbikge1xuICAgICAgICB0aGlzLmljb24gPSB0aGlzLmljb25OYW1lO1xuICAgICAgfVxuICAgICAgdGhpcy5idXR0b25TdGF0ZSA9ICdkZWZhdWx0JztcbiAgICB9XG5cbiAgICB0aGlzLnN0eWxlQ3NzID0gdGhpcy5zZXRDc3NTdHlsZSgpO1xuICB9XG5cbiAgLy9TaG93IG9yIGhpZGUgbGFiZWxcbiAgc2hvd0xhYmVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5sb2FkaW5nO1xuICB9XG5cbiAgLy9TZXQgY3NzIGNsYXNzIGFjY29yZGluZyBpbnB1dHNcbiAgc2V0Q3NzQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuZnVsbFdpZHRoID8gJ2Z1bGwtd2lkdGgnIDogJyc7XG4gICAgY29uc3QgaGFzSWNvbiA9IHRoaXMuaWNvbk5hbWUgPT09IG51bGwgPyAnJyA6ICdpY29uJztcbiAgICBjb25zdCBqdXN0SWNvbiA9IHRoaXMuanVzdEljb24gfHwgdGhpcy52YXJpYW50ID09PSAnaWNvbi1idXR0b24nID8gJ29ubHktaWNvbicgOiAnJztcbiAgICBjb25zdCBpY29uUG9zaXRpb24gPSB0aGlzLmljb25Qb3NpdGlvbiA9PT0gdW5kZWZpbmVkID8gJycgOiB0aGlzLmljb25Qb3NpdGlvbjtcbiAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgJiYgdGhpcy52YXJpYW50ID09PSAncHJpbWFyeScgPyAncHJpbWFyeS1kaXNhYmxlZCcgOiAnJztcbiAgICBjb25zdCB2YXJpYW50ID0gdGhpcy52YXJpYW50ID09PSAnZ2hvc3QnICYmIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ291dGxpbmVkJyA6IHRoaXMudmFyaWFudDtcbiAgICBjb25zdCBjb21wYW55Q29sb3IgPSB0aGlzLmNvbXBhbnlDb2xvciA/ICdoYXMtY29tcGFueS1jb2xvcicgOiAnJztcbiAgICByZXR1cm4gYCR7dGhpcy5zaXplfSAke2ljb25Qb3NpdGlvbn0gJHt2YXJpYW50fSAke3dpZHRofSAke2hhc0ljb259ICR7anVzdEljb259ICR7ZGlzYWJsZWR9ICR7Y29tcGFueUNvbG9yfSAke3RoaXMuYXBwbGljYXRpb25UaGVtZX0tdGhlbWVgO1xuICB9XG5cbiAgc2V0Q3NzU3R5bGUoKTogYW55IHtcbiAgICB0aGlzLmJ1dHRvblN0YXRlID0gdGhpcy5kaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiB0aGlzLmJ1dHRvblN0YXRlO1xuICAgIGNvbnN0IHN0eWxlT2JqOiBhbnkgPSB7fTtcblxuICAgIGlmICgodGhpcy52YXJpYW50ID09PSAncHJpbWFyeScgfHwgdGhpcy52YXJpYW50ID09PSAndGV4dCcpICYmIHRoaXMuYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnICYmICh0aGlzLmJ1dHRvblN0YXRlID09PSAnaG92ZXInIHx8IHRoaXMuYnV0dG9uU3RhdGUgPT09ICdwcmVzc2VkJykpIHtcbiAgICAgIHN0eWxlT2JqW3RoaXMudmFyaWFudCA9PT0gJ3ByaW1hcnknID8gJ2JhY2tncm91bmQtY29sb3InIDogJ2NvbG9yJ10gPSBhZGp1c3RMaWdodG5lc3ModGhpcy5nZXRDb21wYW55Q29sb3IsIHRoaXMuYnV0dG9uU3RhdGUpO1xuICAgICAgaWYgKHRoaXMudmFyaWFudCA9PT0gJ3RleHQnKSB7XG4gICAgICAgIHN0eWxlT2JqWyctLWFjdGl2ZS1jb2xvciddID0gdGhpcy5jb21wYW55Q29sb3IgPyBhZGp1c3RMaWdodG5lc3ModGhpcy5nZXRDb21wYW55Q29sb3IsIHRoaXMuYnV0dG9uU3RhdGUpIDogJyM2NjY2NjYnO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoKHRoaXMudmFyaWFudCA9PT0gJ3ByaW1hcnknIHx8IHRoaXMudmFyaWFudCA9PT0gJ3RleHQnKSAmJiB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyAmJiB0aGlzLmJ1dHRvblN0YXRlICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIHN0eWxlT2JqW3RoaXMudmFyaWFudCA9PT0gJ3ByaW1hcnknID8gJ2JhY2tncm91bmQtY29sb3InIDogJ2NvbG9yJ10gPSBhZGp1c3RMaWdodG5lc3ModGhpcy5nZXRDb21wYW55Q29sb3IsIHRoaXMuYnV0dG9uU3RhdGUsICdjbGFzc2ljJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmdldENvbXBhbnlDb2xvciAmJiAodGhpcy52YXJpYW50ID09PSAnbGluaycgfHwgdGhpcy52YXJpYW50ID09PSAndGVydGlhcnknIHx8IHRoaXMudmFyaWFudCA9PT0gJ2ljb24tYnV0dG9uJykpIHtcbiAgICAgIHN0eWxlT2JqWydjb2xvciddID0gdGhpcy5nZXRDb21wYW55Q29sb3I7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc0JhY2tncm91bmQpIHtcbiAgICAgIHN0eWxlT2JqWyctLWdob3N0LWJhY2tncm91bmQnXSA9ICcjZmZmZmZmJztcbiAgICB9XG4gICAgcmV0dXJuIHN0eWxlT2JqO1xuICB9XG5cbiAgLy9TaG93IG9yIGhpZGUgc3Bpbm5lclxuICBnZXQgc2hvd1NwaW5uZXIoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNOb3RUYWIgPSB0aGlzLnZhcmlhbnQgIT09ICd0YWInO1xuICAgIGNvbnN0IGlzTm90TGluayA9IHRoaXMudmFyaWFudCAhPT0gJ2xpbmsnO1xuICAgIGNvbnN0IGlzTG9hZGluZyA9IHRoaXMubG9hZGluZyA9PT0gdHJ1ZTtcbiAgICByZXR1cm4gaXNMb2FkaW5nICYmIGlzTm90VGFiICYmIGlzTm90TGluaztcbiAgfVxuXG4gIC8vU2hvdyBidXR0b24gd2l0aCA8YnV0dG9uPiBvciA8YT4gdGFnXG4gIHNob3dCdXR0b25MaW5rKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhcmlhbnQgIT09ICdsaW5rJztcbiAgfVxuXG4gIHNldEljb25CdXR0b25TaXplKCk6IEljb25CdXR0b25TaXplIHtcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSAnYmlnJyA/ICc0MCcgOiB0aGlzLnNpemUgPT09ICdzbWFsbCcgPyAnMjQnIDogJzMyJztcbiAgfVxuXG4gIG9uUHJlc3NlZChldjogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXYudHlwZSA9PT0gJ21vdXNlZG93bicpIHtcbiAgICAgIHRoaXMuYnV0dG9uU3RhdGUgPSAncHJlc3NlZCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnV0dG9uU3RhdGUgPSB0aGlzLmhvdmVyID8gJ2hvdmVyJyA6ICdkZWZhdWx0JztcbiAgICB9XG5cbiAgICB0aGlzLnN0eWxlQ3NzID0gdGhpcy5zZXRDc3NTdHlsZSgpO1xuICB9XG5cbiAgZm9jdXMob3JpZ2luPzogRm9jdXNPcmlnaW4pOiB2b2lkIHtcbiAgICB0aGlzLmJ1dHRvbkVsZW1lbnQuZm9jdXMob3JpZ2luKVxuICB9XG5cbiAgZ2V0IGdldENvbXBhbnlDb2xvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbXBhbnlDb2xvciB8fCAodGhpcy52YXJpYW50ID09PSAndGV4dCcgPyB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdkYXJrJyA/ICcjZmZmZmZmJyA6ICcjMjQyNDI0JyA6ICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICcjNDZBOTk3JyA6ICcjRDQxMEFBJykpO1xuICB9XG5cbiAgZ2V0IHNob3VsZENoYW5nZUZpbGxlZFN0YXR1cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycgJiYgdGhpcy52YXJpYW50ICE9PSAncHJpbWFyeScgJiYgdGhpcy52YXJpYW50ICE9PSAnc2Vjb25kYXJ5JyAmJiAhdGhpcy5jb2xvcmVkSWNvbnMuaW5jbHVkZXModGhpcy5pY29uKTtcbiAgfVxuXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIHRhcmdldC5jbGljaygpO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIHRoaXMuYnV0dG9uU3RhdGUgPSAncHJlc3NlZCc7XG4gICAgICB0aGlzLnN0eWxlQ3NzID0gdGhpcy5zZXRDc3NTdHlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uS2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICB0aGlzLmJ1dHRvblN0YXRlID0gdGhpcy5ob3ZlciA/ICdob3ZlcicgOiAnZGVmYXVsdCc7XG4gICAgICB0aGlzLnN0eWxlQ3NzID0gdGhpcy5zZXRDc3NTdHlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uTGFiZWxFbGxpcHNpc0NoYW5nZShzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubGFiZWxFbGxpcHNpcyA9IHN0YXRlO1xuICB9XG5cbiAgZ2V0SWNvbk5hbWUoaWNvbk5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBzdHJpbmcpOiBJY29uTmFtZSB7XG4gICAgaWYgKGljb25OYW1lLmluY2x1ZGVzKCdmaWxsZWQnKSkge1xuICAgICAgcmV0dXJuIGljb25OYW1lLnJlcGxhY2UoL2ZpbGxlZC8sICdpbi1saW5lJykgYXMgSWNvbk5hbWVcbiAgICB9IGVsc2UgaWYgKGljb25OYW1lLmluY2x1ZGVzKCdpbi1saW5lJykpIHtcbiAgICAgIHJldHVybiBpY29uTmFtZS5yZXBsYWNlKC9pbi1saW5lLywgJ2ZpbGxlZCcpIGFzIEljb25OYW1lXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpY29uTmFtZSArIGRlZmF1bHRWYWx1ZSBhcyBJY29uTmFtZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgI3Rvb2x0aXBFbGVtZW50IGNsYXNzPVwidG9vbHRpcFwiXG4gICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXAgPyB0b29sdGlwIDogbGFiZWxFbGxpcHNpcyA/IGxhYmVsIDogJydcIlxuICAgICBbbWF0VG9vbHRpcENsYXNzXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuPjwvZGl2PlxuPGRpdlxuICBjbGFzcz1cImJ1dHRvbi13cmFwcGVyXCJcbiAgW25nQ2xhc3NdPVwieyAnZnVsbC13aWR0aCc6IGZ1bGxXaWR0aCwgJ3JvdW5kZWQtaWNvbic6IGFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJyAmJiBpY29uICYmICFsYWJlbCwgbGluazogIWlzQnV0dG9uTGluayB9XCJcbj5cbiAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIlxuICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkJzogZGlzYWJsZWQsICdidXR0b24tc2NhbGUnOiBidXR0b25TdGF0ZSA9PT0gJ3ByZXNzZWQnICYmIGFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJyAmJiAhZGlzYWJsZWRTY2FsZU9uQ2xpY2sgfVwiXG4gID5cbiAgICAgPHNwYW4gKm5nSWY9XCJpc1ByZW1pdW0gJiYgdHlwZUluY2x1ZGVkXCIgY2xhc3M9XCJyaWdodC10b3BcIj5cbiAgICAgPGltZyBbYXR0ci5zcmNdPVwiJy9pbWFnZXMvcHJlbWl1bS5zdmcnXCIgW2FsdF09XCIncHJlbWl1bS1pY29uJ1wiPlxuICAgPC9zcGFuPlxuICAgIDx1aS1iYWRnZVxuICAgICAgaWQ9XCJiYWRnZVwiXG4gICAgICAqbmdJZj1cImJ1dHRvbkJhZGdlQ29uZmlnPy5iYWRnZVR5cGVcIlxuICAgICAgW3JlYnJhbmRDb2xvcl09XCJidXR0b25CYWRnZUNvbmZpZz8ucmVicmFuZENvbG9yID8/ICdicmFuZCdcIlxuICAgICAgW3ZhcmlhbnRdPVwiYnV0dG9uQmFkZ2VDb25maWchLmJhZGdlVHlwZSFcIlxuICAgICAgW2xhYmVsXT1cImJ1dHRvbkJhZGdlQ29uZmlnPy5iYWRnZUxhYmVsID8/ICcnXCJcbiAgICAgIFtub3RpZmljYXRpb25zQW1vdW50XT1cImJ1dHRvbkJhZGdlQ29uZmlnPy5iYWRnZU5vdGlmaWNhdGlvbkFtb3VudCA/PyAwXCJcbiAgICAgIGNsYXNzPVwicmlnaHQtdG9wXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2JhZGdlLXByaW1hcnknOiBidXR0b25CYWRnZUNvbmZpZz8uYmFkZ2VUeXBlID09PSAncHJpbWFyeScsICdiYWRnZS1ub3RpZmljYXRpb24nOiBidXR0b25CYWRnZUNvbmZpZz8uYmFkZ2VUeXBlID09PSAnbm90aWZpY2F0aW9uJyB9XCJcbiAgICA+PC91aS1iYWRnZT5cbiAgICA8YnV0dG9uXG4gICAgICBbc3R5bGVdPVwiJy0taWNvbi1idXR0b24tc2l6ZTonICsgaWNvbkJ1dHRvblNpemUgKyAncHgnXCJcbiAgICAgIFtuZ0NsYXNzXT1cImNsYXNzQ3NzXCJcbiAgICAgIFtuZ1N0eWxlXT1cInN0eWxlQ3NzXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJidXR0b25Ib3ZlcigkZXZlbnQpXCJcbiAgICAgIChtb3VzZWVudGVyKT1cImJ1dHRvbkhvdmVyKCRldmVudClcIlxuICAgICAgKG1vdXNlZG93bik9XCJvblByZXNzZWQoJGV2ZW50KVwiXG4gICAgICAobW91c2V1cCk9XCJvblByZXNzZWQoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAoa2V5dXApPVwib25LZXl1cCgkZXZlbnQpXCJcbiAgICAgICpuZ0lmPVwiaXNCdXR0b25MaW5rXCJcbiAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiYXJpYVJlcXVpcmVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWxsZWRieSdcIlxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInZGVzY3JpYmVkYnknXCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICBbZGlzYWJsZVJpcHBsZV09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYydcIlxuICAgICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcCA/IHRvb2x0aXAgOiBsYWJlbEVsbGlwc2lzID8gbGFiZWwgOiAnJ1wiXG4gICAgICBbbWF0VG9vbHRpcENsYXNzXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgICAgI2J1dHRvbkVsZW1lbnRcbiAgICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgICBtYXQtZmxhdC1idXR0b24+XG4gICAgICA8c3BhbiBpZD1cImRlc2NyaWJlZGJ5XCIgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCI+XG4gICAgICAgIHt7IChpc1ByZW1pdW0gPyAobGFiZWwgKyAnICcgKyAoJ0JVVFRPTi5QUkVNSVVNX0ZFQVRVUkUnIHwgdWlUcmFuc2xhdGUgfCBhc3luYykpIDogYXJpYURlc2NyaWJlZGJ5KSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gaWQ9XCJsYWJlbGxlZGJ5XCIgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCI+XG4gICAgICAgIHt7IGFyaWFMYWJlbGxlZGJ5IH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NwaW5uZXI7IGVsc2UgaWNvbnNcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLXdyYXBwZXJcIj5cbiAgICAgICAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJwb3NpdGlvbi1zcGlubmVyXCIgYXJpYS1sYWJlbD1cImxvYWRpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGRpYW1ldGVyPVwiMjRcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvbnM+XG4gICAgICA8c3BhbiBjbGFzcz1cImljb24tb25seS13cmFwcGVyXCIgKm5nSWY9XCJqdXN0SWNvbiAmJiAhIWljb25cIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImljb24gb25seVwiXG4gICAgICAgICAgcm9sZT1cImxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx1aS1pY29uXG4gICAgICAgICAgICBbY29sb3JdPVwiJ2luaGVyaXQnXCJcbiAgICAgICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgICAgICAgW25hbWVdPVwiaWNvblwiXG4gICAgICAgICAgICBbZmlsbGVkXT1cImlzRmlsbGVkSWNvblwiXG4gICAgICAgICAgICBbdXNlRnVsbEljb25OYW1lXT1cInRoaXMudmFyaWFudCA9PT0gJ3ByaW1hcnknIHx8IHRoaXMudmFyaWFudCA9PT0gJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgW3NpemVdPVwic2l6ZSA9PT0gJ3NtYWxsJyA/ICcxNicgOiAnMjQnXCJcbiAgICAgICAgICA+PC91aS1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWxhYmVsLXdyYXBwZXJcIiBbbmdDbGFzc109XCJ7J2NlbnRlci10ZXh0JzogaWNvbk5hbWUgPT09ICcnfVwiICpuZ0lmPVwiIWp1c3RJY29uXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJpY29uXCJcbiAgICAgICAgICAqbmdJZj1cImljb25Qb3NpdGlvbiA9PT0gJ2xlZnQnICYmICEhaWNvbk5hbWVcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dWktaWNvblxuICAgICAgICAgICAgW2NvbG9yXT1cIidpbmhlcml0J1wiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgIFtuYW1lXT1cImljb25cIlxuICAgICAgICAgICAgW2ZpbGxlZF09XCJpc0ZpbGxlZEljb25cIlxuICAgICAgICAgICAgW3VzZUZ1bGxJY29uTmFtZV09XCJ0aGlzLnZhcmlhbnQgPT09ICdwcmltYXJ5JyB8fCB0aGlzLnZhcmlhbnQgPT09ICdzZWNvbmRhcnknXCJcbiAgICAgICAgICAgIFtzaXplXT1cInNpemUgPT09ICdzbWFsbCcgPyAnMTYnIDogJzI0J1wiXG4gICAgICAgICAgPjwvdWktaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiaXNMYWJlbFwiXG4gICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgaWQ9XCJsYWJlbFwiXG4gICAgICAgICAgdWlFbGxpcHNlVGV4dFxuICAgICAgICAgIFtpc011bHRpbGluZV09XCJ0cnVlXCJcbiAgICAgICAgICAob25DaGFuZ2VUZXh0U3RhdGUpPVwib25MYWJlbEVsbGlwc2lzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImljb25cIiAqbmdJZj1cImljb25Qb3NpdGlvbiA9PT0gJ3JpZ2h0JyAmJiAhIWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48dWktaWNvblxuICAgICAgICAgIFtjb2xvcl09XCInaW5oZXJpdCdcIiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiaWNvblwiIFtmaWxsZWRdPVwiaXNGaWxsZWRJY29uXCJcbiAgICAgICAgICBbc2l6ZV09XCJzaXplID09PSAnc21hbGwnID8gJzE2JyA6ICcyNCdcIiBbdXNlRnVsbEljb25OYW1lXT1cInRoaXMudmFyaWFudCA9PT0gJ3ByaW1hcnknIHx8IHRoaXMudmFyaWFudCA9PT0gJ3NlY29uZGFyeSdcIj48L3VpLWljb24+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YVxuICAgICAgI2J1dHRvbkVsZW1lbnRcbiAgICAgIFtuZ0NsYXNzXT1cImNsYXNzQ3NzXCJcbiAgICAgIFtuZ1N0eWxlXT1cInN0eWxlQ3NzXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAobW91c2VlbnRlcik9XCJidXR0b25Ib3ZlcigkZXZlbnQpXCJcbiAgICAgIChtb3VzZWxlYXZlKT1cImJ1dHRvbkhvdmVyKCRldmVudClcIlxuICAgICAgKG1vdXNlZG93bik9XCJvblByZXNzZWQoJGV2ZW50KVwiXG4gICAgICAobW91c2V1cCk9XCJvblByZXNzZWQoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KTtcIlxuICAgICAgKGtleXVwKT1cIm9uS2V5dXAoJGV2ZW50KVwiXG4gICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcbiAgICAgICpuZ0lmPVwiIWlzQnV0dG9uTGlua1wiXG4gICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImFyaWFSZXF1aXJlZFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsbGVkYnktbGluaydcIlxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInZGVzY3JpYmVkYnktbGluaydcIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwID8gdG9vbHRpcCA6IGxhYmVsRWxsaXBzaXMgPyBsYWJlbCA6ICcnXCJcbiAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICByb2xlPVwibGlua1wiXG4gICAgICBbaHJlZl09XCJ1cmxcIlxuICAgICAgW3RhcmdldF09XCJ1cmxUYXJnZXRcIlxuICAgICAgbWF0LWZsYXQtYnV0dG9uPlxuICAgICAgPHNwYW4gaWQ9XCJkZXNjcmliZWRieS1saW5rXCIgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCI+XG4gICAgICAgIHt7IGFyaWFEZXNjcmliZWRieSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gaWQ9XCJsYWJlbGxlZGJ5LWxpbmtcIiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIj5cbiAgICAgICAge3sgYXJpYUxhYmVsbGVkYnkgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1sYWJlbC13cmFwcGVyXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RDtBQUM1RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFZdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7O0FBVzdELE1BQU0sT0FBTyxlQUFlO0lBQzFCLElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQTZORCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBZUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsWUFDNkUsZUFBaUM7UUFBakMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBcFA5Rzs7Ozs7V0FLRztRQUNNLFNBQUksR0FBZSxLQUFLLENBQUM7UUFDbEM7Ozs7O1dBS0c7UUFHSCxZQUFPLEdBQWdCLFNBQVMsQ0FBQztRQUVqQzs7OztX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S0FBSztnQkFPRyxLQUFLO3NCQUFiLEtBQUs7Z0JBUUcsT0FBTztzQkFBZixLQUFLO2dCQVFHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBU0csSUFBSTtzQkFBWixLQUFLO2dCQVNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBU0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQVdOLGdCQUFnQjtzQkFGZixXQUFXO3VCQUFDLFlBQVk7O3NCQUN4QixLQUFLO2dCQVVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQVFHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBU0csY0FBYztzQkFBdEIsS0FBSztnQkFRRyxlQUFlO3NCQUF2QixLQUFLO2dCQU9rQyxjQUFjO3NCQUFyRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU9FLGFBQWE7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUTdCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRXdDLGFBQWE7c0JBQTNELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFRekMsU0FBUztzQkFEWixXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kZWwnO1xuaW1wb3J0IHtcbiAgQnV0dG9uQmFkZ2VDb25maWcsXG4gIEJ1dHRvbkNvbG9yLFxuICBCdXR0b25JY29uUG9zaXRpb24sXG4gIEJ1dHRvblNpemUsXG4gIEJ1dHRvblN0YXRlLFxuICBCdXR0b25UeXBlLFxuICBJY29uQnV0dG9uU2l6ZSxcbiAgTGlua1VybFRhcmdldFxufSBmcm9tICcuL2J1dHRvbi5tb2RlbCc7XG5pbXBvcnQgeyBhZGp1c3RMaWdodG5lc3MgfSBmcm9tICcuLi8uLi91dGlscy9jb2xvci1jb250cmFzdCc7XG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IEZvY3VzT3JpZ2luIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9hMTF5XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9idXR0b24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnBvaW50ZXItZXZlbnRzJylcbiAgZ2V0IGVuYWJsZWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/ICdub25lJyA6ICdhbGwnO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcEVsZW1lbnQnKSB0b29sdGlwRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgLyoqXG4gICAqIERlZmluZSBidXR0b24gaGVpZ2h0XG4gICAqXG4gICAqIEB0eXBlIHtCdXR0b25TaXplfVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzaXplOiBCdXR0b25TaXplID0gJ2JpZyc7XG4gIC8qKlxuICAgKiBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24gd2hpbGUgaW4gYWN0aXZlIHN0YXRlXG4gICAqXG4gICAqIEB0eXBlIHtCdXR0b25Db2xvcn1cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmJ0bi12YXJpYW50JylcbiAgQElucHV0KClcbiAgdmFyaWFudDogQnV0dG9uQ29sb3IgPSAncHJpbWFyeSc7XG5cbiAgLyoqXG4gICAqIFRleHQgY29udGVudCB0byBhcHBlYXIgb24gdGhlIGJ1dHRvblxuICAgKlxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbmluZyBvZiB0aGUgaWNvbiAod2hlbiBleGlzdGFudClcbiAgICpcbiAgICogQHR5cGUge0J1dHRvbkljb25Qb3NpdGlvbn1cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaWNvblBvc2l0aW9uPzogQnV0dG9uSWNvblBvc2l0aW9uID0gJ3JpZ2h0JztcblxuICAvKipcbiAgICogRGVmaW5lIGlmIGJ1dHRvbiBoYXMgb25seSBpY29uIHdpdGhvdXQgdGV4dFxuICAgKlxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBqdXN0SWNvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHVpLWljb25cbiAgICpcbiAgICogQHR5cGUge0ljb25OYW1lfVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBpY29uTmFtZTogSWNvbk5hbWUgPSAnJztcblxuICAvKipcbiAgICogSW5kaWNhdG9yIGlmIHRoZSBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkXG4gICAqXG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRvciBpZiB0aGUgbG9hZGluZyBpY29uIHNob3VsZCBiZSBzaG93blxuICAgKlxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRvciBvZiB0aGUgYnV0dG9uIHdpZHRoXG4gICAqXG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGZ1bGxXaWR0aCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBVcmwgb2YgYnV0dG9uIGlmIGl0IGlzIGEgbGlua1xuICAgKlxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB1cmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVybCdzIHRhcmdldCBvZiBidXR0b24gaWYgaXQgaXMgYSBsaW5rXG4gICAqXG4gICAqIEB0eXBlIHtAdHlwZSB7TGlua1VybFRhcmdldH19XG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHVybFRhcmdldD86IExpbmtVcmxUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIEJ1dHRvbiB2YWx1ZVxuICAgKlxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IHRvb2x0aXBcbiAgICogQGRlc2NyaXB0aW9uIFRoZSB0b29sdGlwIHRoYXQgaXMgZGlzcGxheWVkIG9uIGhvdmVyLiBSZXF1aXJlZCBmb3IgaWNvbi1idXR0b24gdHlwZVxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBpc1ByZW1pdW1cbiAgICogQGRlc2NyaXB0aW9uIFRoZSBpY29uIHRoYXQgaXMgZGlzcGxheWVkIGZvciBQcmVtaXVtIGJ1dHRvblxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaXNQcmVtaXVtID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBidXR0b24uXG4gICAqXG4gICAqIEB0eXBlIHtCdXR0b25UeXBlfVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqIEBkZWZhdWx0ICdidXR0b24nXG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBCdXR0b25UeXBlID0gJ2J1dHRvbic7XG5cbiAgLyoqXG4gICAqIENvbG9yIG9mIHRoZSBidXR0b24uXG4gICAqIERlZmF1bHRzIHRvIFRlc3QgR29yaWxsYSBwcmltYXJ5IGNvbG9yLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBjb21wYW55Q29sb3I6IHN0cmluZyB8IG51bGwgPSAnJztcblxuICAvKipcbiAgICogQ29uZmlnIGZvciB0aGUgYnV0dG9uIGJhZGdlIHZhcmlhdGlvblxuICAgKiBAdHlwZSB7QnV0dG9uQmFkZ2VDb25maWd9XG4gICAqIEBwcm9wZXJ0eSBiYWRnZVR5cGUgVHlwZSBvZiBiYWRnZSBvbiB0aGUgYnV0dG9uXG4gICAqIEBwcm9wZXJ0eSBiYWRnZUxhYmVsIExhYmVsIHRleHQgZm9yIHRoZSBiYWRnZVxuICAgKiBAcHJvcGVydHkgYmFkZ2VOb3RpZmljYXRpb25BbW91bnQgVGhlIGFtb3VudCBmb3Igbm90aWZpY2F0aW9uIGluIHRoZSBiYWRnZVxuICAgKi9cbiAgQElucHV0KCkgYnV0dG9uQmFkZ2VDb25maWc6IEJ1dHRvbkJhZGdlQ29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZSB3aGVyZSBidXR0b25zIGlzIHVzZWRcbiAgICpcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci50aGVtZScpXG4gIEBJbnB1dCgpXG4gIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEaXNhYmxlZCBidXR0b24gc2NhbGUgb24gY2xpY2tcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkU2NhbGVPbkNsaWNrID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgQVJJQSBsYWJlbCBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICogVGhpcyBsYWJlbCBpcyB1c2VkIHRvIHByb3ZpZGUgYW4gYWNjZXNzaWJsZSBuYW1lIGZvciB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgQVJJQSByZXF1aXJlbWVudCBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIGFuIGlucHV0IGZpZWxkIGlzIHJlcXVpcmVkIGZvciBmb3JtIHN1Ym1pc3Npb24uXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhUmVxdWlyZWQgPSBmYWxzZTtcblxuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciBhbiBpbnB1dCBmaWVsZCBpcyByZXF1aXJlZCBmb3IgZm9ybSBzdWJtaXNzaW9uLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxsZWRieSA9ICcnO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciBhbiBpbnB1dCBmaWVsZCBpcyByZXF1aXJlZCBmb3IgZm9ybSBzdWJtaXNzaW9uLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgQnV0dG9uQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhRGVzY3JpYmVkYnkgPSAnJztcblxuICAvKipcbiAgICogUHJldmVudHMgZGVmYXVsdCBidXR0b24gY2xpY2sgYmVoYXZpb3JcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBHaG9zdCB2YXJpYW50IHdpdGggd2hpdGUgYmFja2dyb3VuZFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc0JhY2tncm91bmQgPSBmYWxzZTtcblxuICAvKipcbiAgICogU2V0cyB0b29sdGlwIHBvc2l0aW9uXG4gICAqXG4gICAqIEB0eXBlIHtUb29sdGlwUG9zaXRpb259XG4gICAqIEBtZW1iZXJvZiBCdXR0b25Db21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBQb3NpdGlvbjogVG9vbHRpcFBvc2l0aW9uID0gJ2JlbG93JztcblxuICBASW5wdXQoKSByb2xlOiBzdHJpbmcgPSAnYnV0dG9uJztcblxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpIGJ1dHRvbkhvdmVyRXZlbnQ6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2J1dHRvbkVsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgYnV0dG9uRWxlbWVudDogTWF0QnV0dG9uO1xuXG5cbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tY29sb3InKVxuICBnZXQgY29tcENvbG9yKCkge1xuICAgIHJldHVybiB0aGlzLmdldENvbXBhbnlDb2xvcjtcbiAgfVxuXG4gIGNsYXNzQ3NzOiBzdHJpbmc7XG4gIHN0eWxlQ3NzOiBhbnk7XG4gIGlzQnV0dG9uTGluazogYm9vbGVhbjtcbiAgaXNMYWJlbDogYm9vbGVhbjtcbiAgYnV0dG9uU3RhdGU6IEJ1dHRvblN0YXRlO1xuICBob3ZlciA9IGZhbHNlO1xuICBpY29uQnV0dG9uU2l6ZTogSWNvbkJ1dHRvblNpemUgPSAnNDAnO1xuICBhbGxvd0J1dHRvblR5cGVGb3JQcmVtaXVtOiBCdXR0b25Db2xvcltdID0gWydzZWNvbmRhcnknLCAncHJpbWFyeScsICdnaG9zdCcsICdvdXRsaW5lZCcsICdkZXN0cnVjdGl2ZSddO1xuICBpc0ZpbGxlZEljb246IGJvb2xlYW47XG4gIGNvbG9yZWRJY29ucyA9IFsnR29vZ2xlLWluLWxpbmUnLCAnR29vZ2xlJywgJ0dvb2dsZS1maWxsZWQnXTtcbiAgbGFiZWxFbGxpcHNpcyA9IGZhbHNlO1xuICBpY29uOiBJY29uTmFtZSA9ICcnO1xuXG4gIGdldCB0eXBlSW5jbHVkZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWxsb3dCdXR0b25UeXBlRm9yUHJlbWl1bS5pbmNsdWRlcyh0aGlzLnZhcmlhbnQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lLFxuICApIHtcbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jbGFzc0NzcyA9IHRoaXMuc2V0Q3NzQ2xhc3MoKTtcbiAgICB0aGlzLnN0eWxlQ3NzID0gdGhpcy5zZXRDc3NTdHlsZSgpO1xuICAgIHRoaXMuaXNCdXR0b25MaW5rID0gdGhpcy5zaG93QnV0dG9uTGluaygpO1xuICAgIHRoaXMuaXNMYWJlbCA9IHRoaXMuc2hvd0xhYmVsKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcbiAgICAgIHRoaXMuYnV0dG9uU3RhdGUgPSAnZGVmYXVsdCc7XG4gICAgfVxuICAgIGlmICghdGhpcy5hcHBsaWNhdGlvblRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sndHlwZSddKSB7XG4gICAgICB0aGlzLmlzQnV0dG9uTGluayA9IHRoaXMuc2hvd0J1dHRvbkxpbmsoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2xvYWRpbmcnXSkge1xuICAgICAgdGhpcy5pc0xhYmVsID0gdGhpcy5zaG93TGFiZWwoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2ljb25OYW1lJ10pIHtcbiAgICAgIHRoaXMuaWNvbiA9IGNoYW5nZXNbJ2ljb25OYW1lJ10uY3VycmVudFZhbHVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzWyd0eXBlJ10gfHxcbiAgICAgIGNoYW5nZXNbJ2Z1bGxXaWR0aCddIHx8XG4gICAgICBjaGFuZ2VzWydpY29uTmFtZSddIHx8XG4gICAgICBjaGFuZ2VzWydqdXN0SWNvbiddIHx8XG4gICAgICBjaGFuZ2VzWydpY29uUG9zaXRpb24nXSB8fFxuICAgICAgY2hhbmdlc1snZGlzYWJsZWQnXSB8fFxuICAgICAgY2hhbmdlc1snY29tcGFueUNvbG9yJ10gfHxcbiAgICAgIGNoYW5nZXNbJ3ZhcmlhbnQnXSB8fFxuICAgICAgY2hhbmdlc1snYXBwbGljYXRpb25UaGVtZSddXG4gICAgKSB7XG4gICAgICB0aGlzLmNsYXNzQ3NzID0gdGhpcy5zZXRDc3NDbGFzcygpO1xuICAgICAgdGhpcy5zdHlsZUNzcyA9IHRoaXMuc2V0Q3NzU3R5bGUoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3ZhcmlhbnQnXT8uY3VycmVudFZhbHVlID09PSAnaWNvbi1idXR0b24nIHx8IChjaGFuZ2VzWyd2YXJpYW50J10/LmN1cnJlbnRWYWx1ZSA9PT0gJ21lbnVUcmlnZ2VyJyAmJiB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJykpIHtcbiAgICAgIHRoaXMuaWNvbkJ1dHRvblNpemUgPSB0aGlzLnNldEljb25CdXR0b25TaXplKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc0ZpbGxlZEljb24gPSB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJyAmJiAodGhpcy52YXJpYW50ID09PSAncHJpbWFyeScgfHwgdGhpcy52YXJpYW50ID09PSAnc2Vjb25kYXJ5Jyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy50b29sdGlwRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9uY2xpY2sgPSBldiA9PiB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfTtcbiAgICBpZiAodGhpcy52YXJpYW50ID09PSAnaWNvbi1idXR0b24nICYmICF0aGlzLnRvb2x0aXApIHtcbiAgICAgIGNvbnNvbGUud2FybigndWktYnV0dG9uIEJ1dHRvbkNvbXBvbmVudFxcbiAgICBbdG9vbHRpcF0gaXMgcmVxdWlyZWQgZm9yIFt0eXBlXSBpY29uLWJ1dHRvbiEnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmFyaWFudCA9PT0gJ2Rlc3RydWN0aXZlJyAmJiAhdGhpcy5pY29uICYmICF0aGlzLmxvYWRpbmcgJiYgdGhpcy5hcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycpIHtcbiAgICAgIGNvbnNvbGUud2FybigndWktYnV0dG9uIEJ1dHRvbkNvbXBvbmVudFxcbiAgW2ljb25dIGlzIHJlcXVpcmVkIGZvciBbdHlwZV0gZGVzdHJ1Y3RpdmUnKTtcbiAgICB9XG4gIH1cblxuICBidXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICB0aGlzLmJ1dHRvbkNsaWNrRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBidXR0b25Ib3ZlcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlZW50ZXInKSB7XG4gICAgICB0aGlzLmhvdmVyID0gdHJ1ZTtcbiAgICAgIHRoaXMuYnV0dG9uSG92ZXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgICAgIHRoaXMuYnV0dG9uU3RhdGUgPSAnaG92ZXInO1xuICAgICAgaWYgKHRoaXMuc2hvdWxkQ2hhbmdlRmlsbGVkU3RhdHVzICYmIHRoaXMuaWNvbikge1xuICAgICAgICB0aGlzLmljb24gPSB0aGlzLmdldEljb25OYW1lKHRoaXMuaWNvbk5hbWUsICctZmlsbGVkJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG92ZXIgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLnNob3VsZENoYW5nZUZpbGxlZFN0YXR1cyAmJiB0aGlzLmljb24pIHtcbiAgICAgICAgdGhpcy5pY29uID0gdGhpcy5pY29uTmFtZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnV0dG9uU3RhdGUgPSAnZGVmYXVsdCc7XG4gICAgfVxuXG4gICAgdGhpcy5zdHlsZUNzcyA9IHRoaXMuc2V0Q3NzU3R5bGUoKTtcbiAgfVxuXG4gIC8vU2hvdyBvciBoaWRlIGxhYmVsXG4gIHNob3dMYWJlbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMubG9hZGluZztcbiAgfVxuXG4gIC8vU2V0IGNzcyBjbGFzcyBhY2NvcmRpbmcgaW5wdXRzXG4gIHNldENzc0NsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLmZ1bGxXaWR0aCA/ICdmdWxsLXdpZHRoJyA6ICcnO1xuICAgIGNvbnN0IGhhc0ljb24gPSB0aGlzLmljb25OYW1lID09PSBudWxsID8gJycgOiAnaWNvbic7XG4gICAgY29uc3QganVzdEljb24gPSB0aGlzLmp1c3RJY29uIHx8IHRoaXMudmFyaWFudCA9PT0gJ2ljb24tYnV0dG9uJyA/ICdvbmx5LWljb24nIDogJyc7XG4gICAgY29uc3QgaWNvblBvc2l0aW9uID0gdGhpcy5pY29uUG9zaXRpb24gPT09IHVuZGVmaW5lZCA/ICcnIDogdGhpcy5pY29uUG9zaXRpb247XG4gICAgY29uc3QgZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkICYmIHRoaXMudmFyaWFudCA9PT0gJ3ByaW1hcnknID8gJ3ByaW1hcnktZGlzYWJsZWQnIDogJyc7XG4gICAgY29uc3QgdmFyaWFudCA9IHRoaXMudmFyaWFudCA9PT0gJ2dob3N0JyAmJiB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdvdXRsaW5lZCcgOiB0aGlzLnZhcmlhbnQ7XG4gICAgY29uc3QgY29tcGFueUNvbG9yID0gdGhpcy5jb21wYW55Q29sb3IgPyAnaGFzLWNvbXBhbnktY29sb3InIDogJyc7XG4gICAgcmV0dXJuIGAke3RoaXMuc2l6ZX0gJHtpY29uUG9zaXRpb259ICR7dmFyaWFudH0gJHt3aWR0aH0gJHtoYXNJY29ufSAke2p1c3RJY29ufSAke2Rpc2FibGVkfSAke2NvbXBhbnlDb2xvcn0gJHt0aGlzLmFwcGxpY2F0aW9uVGhlbWV9LXRoZW1lYDtcbiAgfVxuXG4gIHNldENzc1N0eWxlKCk6IGFueSB7XG4gICAgdGhpcy5idXR0b25TdGF0ZSA9IHRoaXMuZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogdGhpcy5idXR0b25TdGF0ZTtcbiAgICBjb25zdCBzdHlsZU9iajogYW55ID0ge307XG5cbiAgICBpZiAoKHRoaXMudmFyaWFudCA9PT0gJ3ByaW1hcnknIHx8IHRoaXMudmFyaWFudCA9PT0gJ3RleHQnKSAmJiB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJyAmJiAodGhpcy5idXR0b25TdGF0ZSA9PT0gJ2hvdmVyJyB8fCB0aGlzLmJ1dHRvblN0YXRlID09PSAncHJlc3NlZCcpKSB7XG4gICAgICBzdHlsZU9ialt0aGlzLnZhcmlhbnQgPT09ICdwcmltYXJ5JyA/ICdiYWNrZ3JvdW5kLWNvbG9yJyA6ICdjb2xvciddID0gYWRqdXN0TGlnaHRuZXNzKHRoaXMuZ2V0Q29tcGFueUNvbG9yLCB0aGlzLmJ1dHRvblN0YXRlKTtcbiAgICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICd0ZXh0Jykge1xuICAgICAgICBzdHlsZU9ialsnLS1hY3RpdmUtY29sb3InXSA9IHRoaXMuY29tcGFueUNvbG9yID8gYWRqdXN0TGlnaHRuZXNzKHRoaXMuZ2V0Q29tcGFueUNvbG9yLCB0aGlzLmJ1dHRvblN0YXRlKSA6ICcjNjY2NjY2JztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCh0aGlzLnZhcmlhbnQgPT09ICdwcmltYXJ5JyB8fCB0aGlzLnZhcmlhbnQgPT09ICd0ZXh0JykgJiYgdGhpcy5hcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgJiYgdGhpcy5idXR0b25TdGF0ZSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICBzdHlsZU9ialt0aGlzLnZhcmlhbnQgPT09ICdwcmltYXJ5JyA/ICdiYWNrZ3JvdW5kLWNvbG9yJyA6ICdjb2xvciddID0gYWRqdXN0TGlnaHRuZXNzKHRoaXMuZ2V0Q29tcGFueUNvbG9yLCB0aGlzLmJ1dHRvblN0YXRlLCAnY2xhc3NpYycpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5nZXRDb21wYW55Q29sb3IgJiYgKHRoaXMudmFyaWFudCA9PT0gJ2xpbmsnIHx8IHRoaXMudmFyaWFudCA9PT0gJ3RlcnRpYXJ5JyB8fCB0aGlzLnZhcmlhbnQgPT09ICdpY29uLWJ1dHRvbicpKSB7XG4gICAgICBzdHlsZU9ialsnY29sb3InXSA9IHRoaXMuZ2V0Q29tcGFueUNvbG9yO1xuICAgIH0gZWxzZSBpZiAodGhpcy5oYXNCYWNrZ3JvdW5kKSB7XG4gICAgICBzdHlsZU9ialsnLS1naG9zdC1iYWNrZ3JvdW5kJ10gPSAnI2ZmZmZmZic7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZU9iajtcbiAgfVxuXG4gIC8vU2hvdyBvciBoaWRlIHNwaW5uZXJcbiAgZ2V0IHNob3dTcGlubmVyKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzTm90VGFiID0gdGhpcy52YXJpYW50ICE9PSAndGFiJztcbiAgICBjb25zdCBpc05vdExpbmsgPSB0aGlzLnZhcmlhbnQgIT09ICdsaW5rJztcbiAgICBjb25zdCBpc0xvYWRpbmcgPSB0aGlzLmxvYWRpbmcgPT09IHRydWU7XG4gICAgcmV0dXJuIGlzTG9hZGluZyAmJiBpc05vdFRhYiAmJiBpc05vdExpbms7XG4gIH1cblxuICAvL1Nob3cgYnV0dG9uIHdpdGggPGJ1dHRvbj4gb3IgPGE+IHRhZ1xuICBzaG93QnV0dG9uTGluaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYW50ICE9PSAnbGluayc7XG4gIH1cblxuICBzZXRJY29uQnV0dG9uU2l6ZSgpOiBJY29uQnV0dG9uU2l6ZSB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ2JpZycgPyAnNDAnIDogdGhpcy5zaXplID09PSAnc21hbGwnID8gJzI0JyA6ICczMic7XG4gIH1cblxuICBvblByZXNzZWQoZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2LnR5cGUgPT09ICdtb3VzZWRvd24nKSB7XG4gICAgICB0aGlzLmJ1dHRvblN0YXRlID0gJ3ByZXNzZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1dHRvblN0YXRlID0gdGhpcy5ob3ZlciA/ICdob3ZlcicgOiAnZGVmYXVsdCc7XG4gICAgfVxuXG4gICAgdGhpcy5zdHlsZUNzcyA9IHRoaXMuc2V0Q3NzU3R5bGUoKTtcbiAgfVxuXG4gIGZvY3VzKG9yaWdpbj86IEZvY3VzT3JpZ2luKTogdm9pZCB7XG4gICAgdGhpcy5idXR0b25FbGVtZW50LmZvY3VzKG9yaWdpbilcbiAgfVxuXG4gIGdldCBnZXRDb21wYW55Q29sb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb21wYW55Q29sb3IgfHwgKHRoaXMudmFyaWFudCA9PT0gJ3RleHQnID8gdGhpcy5hcHBsaWNhdGlvblRoZW1lID09PSAnZGFyaycgPyAnI2ZmZmZmZicgOiAnIzI0MjQyNCcgOiAodGhpcy5hcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgPyAnIzQ2QTk5NycgOiAnI0Q0MTBBQScpKTtcbiAgfVxuXG4gIGdldCBzaG91bGRDaGFuZ2VGaWxsZWRTdGF0dXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnICYmIHRoaXMudmFyaWFudCAhPT0gJ3ByaW1hcnknICYmIHRoaXMudmFyaWFudCAhPT0gJ3NlY29uZGFyeScgJiYgIXRoaXMuY29sb3JlZEljb25zLmluY2x1ZGVzKHRoaXMuaWNvbik7XG4gIH1cblxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICB0YXJnZXQuY2xpY2soKTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICB0aGlzLmJ1dHRvblN0YXRlID0gJ3ByZXNzZWQnO1xuICAgICAgdGhpcy5zdHlsZUNzcyA9IHRoaXMuc2V0Q3NzU3R5bGUoKTtcbiAgICB9XG4gIH1cblxuICBvbktleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgdGhpcy5idXR0b25TdGF0ZSA9IHRoaXMuaG92ZXIgPyAnaG92ZXInIDogJ2RlZmF1bHQnO1xuICAgICAgdGhpcy5zdHlsZUNzcyA9IHRoaXMuc2V0Q3NzU3R5bGUoKTtcbiAgICB9XG4gIH1cblxuICBvbkxhYmVsRWxsaXBzaXNDaGFuZ2Uoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmxhYmVsRWxsaXBzaXMgPSBzdGF0ZTtcbiAgfVxuXG4gIGdldEljb25OYW1lKGljb25OYW1lOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogc3RyaW5nKTogSWNvbk5hbWUge1xuICAgIGlmIChpY29uTmFtZS5pbmNsdWRlcygnZmlsbGVkJykpIHtcbiAgICAgIHJldHVybiBpY29uTmFtZS5yZXBsYWNlKC9maWxsZWQvLCAnaW4tbGluZScpIGFzIEljb25OYW1lXG4gICAgfSBlbHNlIGlmIChpY29uTmFtZS5pbmNsdWRlcygnaW4tbGluZScpKSB7XG4gICAgICByZXR1cm4gaWNvbk5hbWUucmVwbGFjZSgvaW4tbGluZS8sICdmaWxsZWQnKSBhcyBJY29uTmFtZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaWNvbk5hbWUgKyBkZWZhdWx0VmFsdWUgYXMgSWNvbk5hbWU7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICN0b29sdGlwRWxlbWVudCBjbGFzcz1cInRvb2x0aXBcIlxuICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwID8gdG9vbHRpcCA6IGxhYmVsRWxsaXBzaXMgPyBsYWJlbCA6ICcnXCJcbiAgICAgW21hdFRvb2x0aXBDbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcbj48L2Rpdj5cbjxkaXZcbiAgY2xhc3M9XCJidXR0b24td3JhcHBlclwiXG4gIFtuZ0NsYXNzXT1cInsgJ2Z1bGwtd2lkdGgnOiBmdWxsV2lkdGgsICdyb3VuZGVkLWljb24nOiBhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycgJiYgaWNvbiAmJiAhbGFiZWwsIGxpbms6ICFpc0J1dHRvbkxpbmsgfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCJcbiAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZCc6IGRpc2FibGVkLCAnYnV0dG9uLXNjYWxlJzogYnV0dG9uU3RhdGUgPT09ICdwcmVzc2VkJyAmJiBhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycgJiYgIWRpc2FibGVkU2NhbGVPbkNsaWNrIH1cIlxuICA+XG4gICAgIDxzcGFuICpuZ0lmPVwiaXNQcmVtaXVtICYmIHR5cGVJbmNsdWRlZFwiIGNsYXNzPVwicmlnaHQtdG9wXCI+XG4gICAgIDxpbWcgW2F0dHIuc3JjXT1cIicvaW1hZ2VzL3ByZW1pdW0uc3ZnJ1wiIFthbHRdPVwiJ3ByZW1pdW0taWNvbidcIj5cbiAgIDwvc3Bhbj5cbiAgICA8dWktYmFkZ2VcbiAgICAgIGlkPVwiYmFkZ2VcIlxuICAgICAgKm5nSWY9XCJidXR0b25CYWRnZUNvbmZpZz8uYmFkZ2VUeXBlXCJcbiAgICAgIFtyZWJyYW5kQ29sb3JdPVwiYnV0dG9uQmFkZ2VDb25maWc/LnJlYnJhbmRDb2xvciA/PyAnYnJhbmQnXCJcbiAgICAgIFt2YXJpYW50XT1cImJ1dHRvbkJhZGdlQ29uZmlnIS5iYWRnZVR5cGUhXCJcbiAgICAgIFtsYWJlbF09XCJidXR0b25CYWRnZUNvbmZpZz8uYmFkZ2VMYWJlbCA/PyAnJ1wiXG4gICAgICBbbm90aWZpY2F0aW9uc0Ftb3VudF09XCJidXR0b25CYWRnZUNvbmZpZz8uYmFkZ2VOb3RpZmljYXRpb25BbW91bnQgPz8gMFwiXG4gICAgICBjbGFzcz1cInJpZ2h0LXRvcFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdiYWRnZS1wcmltYXJ5JzogYnV0dG9uQmFkZ2VDb25maWc/LmJhZGdlVHlwZSA9PT0gJ3ByaW1hcnknLCAnYmFkZ2Utbm90aWZpY2F0aW9uJzogYnV0dG9uQmFkZ2VDb25maWc/LmJhZGdlVHlwZSA9PT0gJ25vdGlmaWNhdGlvbicgfVwiXG4gICAgPjwvdWktYmFkZ2U+XG4gICAgPGJ1dHRvblxuICAgICAgW3N0eWxlXT1cIictLWljb24tYnV0dG9uLXNpemU6JyArIGljb25CdXR0b25TaXplICsgJ3B4J1wiXG4gICAgICBbbmdDbGFzc109XCJjbGFzc0Nzc1wiXG4gICAgICBbbmdTdHlsZV09XCJzdHlsZUNzc1wiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKCRldmVudClcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwiYnV0dG9uSG92ZXIoJGV2ZW50KVwiXG4gICAgICAobW91c2VlbnRlcik9XCJidXR0b25Ib3ZlcigkZXZlbnQpXCJcbiAgICAgIChtb3VzZWRvd24pPVwib25QcmVzc2VkKCRldmVudClcIlxuICAgICAgKG1vdXNldXApPVwib25QcmVzc2VkKCRldmVudClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgKGtleXVwKT1cIm9uS2V5dXAoJGV2ZW50KVwiXG4gICAgICAqbmdJZj1cImlzQnV0dG9uTGlua1wiXG4gICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImFyaWFSZXF1aXJlZFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsbGVkYnknXCJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Rlc2NyaWJlZGJ5J1wiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgW2Rpc2FibGVSaXBwbGVdPVwiYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnXCJcbiAgICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXAgPyB0b29sdGlwIDogbGFiZWxFbGxpcHNpcyA/IGxhYmVsIDogJydcIlxuICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcbiAgICAgICNidXR0b25FbGVtZW50XG4gICAgICBbYXR0ci5yb2xlXT1cInJvbGVcIlxuICAgICAgbWF0LWZsYXQtYnV0dG9uPlxuICAgICAgPHNwYW4gaWQ9XCJkZXNjcmliZWRieVwiIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiPlxuICAgICAgICB7eyAoaXNQcmVtaXVtID8gKGxhYmVsICsgJyAnICsgKCdCVVRUT04uUFJFTUlVTV9GRUFUVVJFJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpKSA6IGFyaWFEZXNjcmliZWRieSkgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGlkPVwibGFiZWxsZWRieVwiIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiPlxuICAgICAgICB7eyBhcmlhTGFiZWxsZWRieSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dTcGlubmVyOyBlbHNlIGljb25zXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3Bpbm5lci13cmFwcGVyXCI+XG4gICAgICAgICAgPG1hdC1zcGlubmVyIGNsYXNzPVwicG9zaXRpb24tc3Bpbm5lclwiIGFyaWEtbGFiZWw9XCJsb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBkaWFtZXRlcj1cIjI0XCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2ljb25zPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLW9ubHktd3JhcHBlclwiICpuZ0lmPVwianVzdEljb24gJiYgISFpY29uXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJpY29uIG9ubHlcIlxuICAgICAgICAgIHJvbGU9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8dWktaWNvblxuICAgICAgICAgICAgW2NvbG9yXT1cIidpbmhlcml0J1wiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgIFtuYW1lXT1cImljb25cIlxuICAgICAgICAgICAgW2ZpbGxlZF09XCJpc0ZpbGxlZEljb25cIlxuICAgICAgICAgICAgW3VzZUZ1bGxJY29uTmFtZV09XCJ0aGlzLnZhcmlhbnQgPT09ICdwcmltYXJ5JyB8fCB0aGlzLnZhcmlhbnQgPT09ICdzZWNvbmRhcnknXCJcbiAgICAgICAgICAgIFtzaXplXT1cInNpemUgPT09ICdzbWFsbCcgPyAnMTYnIDogJzI0J1wiXG4gICAgICAgICAgPjwvdWktaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1sYWJlbC13cmFwcGVyXCIgW25nQ2xhc3NdPVwieydjZW50ZXItdGV4dCc6IGljb25OYW1lID09PSAnJ31cIiAqbmdJZj1cIiFqdXN0SWNvblwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgKm5nSWY9XCJpY29uUG9zaXRpb24gPT09ICdsZWZ0JyAmJiAhIWljb25OYW1lXCJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHVpLWljb25cbiAgICAgICAgICAgIFtjb2xvcl09XCInaW5oZXJpdCdcIlxuICAgICAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICBbbmFtZV09XCJpY29uXCJcbiAgICAgICAgICAgIFtmaWxsZWRdPVwiaXNGaWxsZWRJY29uXCJcbiAgICAgICAgICAgIFt1c2VGdWxsSWNvbk5hbWVdPVwidGhpcy52YXJpYW50ID09PSAncHJpbWFyeScgfHwgdGhpcy52YXJpYW50ID09PSAnc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICBbc2l6ZV09XCJzaXplID09PSAnc21hbGwnID8gJzE2JyA6ICcyNCdcIlxuICAgICAgICAgID48L3VpLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cImlzTGFiZWxcIlxuICAgICAgICAgIGNsYXNzPVwibGFiZWxcIlxuICAgICAgICAgIGlkPVwibGFiZWxcIlxuICAgICAgICAgIHVpRWxsaXBzZVRleHRcbiAgICAgICAgICBbaXNNdWx0aWxpbmVdPVwidHJ1ZVwiXG4gICAgICAgICAgKG9uQ2hhbmdlVGV4dFN0YXRlKT1cIm9uTGFiZWxFbGxpcHNpc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uXCIgKm5nSWY9XCJpY29uUG9zaXRpb24gPT09ICdyaWdodCcgJiYgISFpY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHVpLWljb25cbiAgICAgICAgICBbY29sb3JdPVwiJ2luaGVyaXQnXCIgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImljb25cIiBbZmlsbGVkXT1cImlzRmlsbGVkSWNvblwiXG4gICAgICAgICAgW3NpemVdPVwic2l6ZSA9PT0gJ3NtYWxsJyA/ICcxNicgOiAnMjQnXCIgW3VzZUZ1bGxJY29uTmFtZV09XCJ0aGlzLnZhcmlhbnQgPT09ICdwcmltYXJ5JyB8fCB0aGlzLnZhcmlhbnQgPT09ICdzZWNvbmRhcnknXCI+PC91aS1pY29uPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9idXR0b24+XG4gICAgPGFcbiAgICAgICNidXR0b25FbGVtZW50XG4gICAgICBbbmdDbGFzc109XCJjbGFzc0Nzc1wiXG4gICAgICBbbmdTdHlsZV09XCJzdHlsZUNzc1wiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKCRldmVudClcIlxuICAgICAgKG1vdXNlZW50ZXIpPVwiYnV0dG9uSG92ZXIoJGV2ZW50KVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJidXR0b25Ib3ZlcigkZXZlbnQpXCJcbiAgICAgIChtb3VzZWRvd24pPVwib25QcmVzc2VkKCRldmVudClcIlxuICAgICAgKG1vdXNldXApPVwib25QcmVzc2VkKCRldmVudClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudCk7XCJcbiAgICAgIChrZXl1cCk9XCJvbktleXVwKCRldmVudClcIlxuICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gICAgICAqbmdJZj1cIiFpc0J1dHRvbkxpbmtcIlxuICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJhcmlhUmVxdWlyZWRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbGxlZGJ5LWxpbmsnXCJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Rlc2NyaWJlZGJ5LWxpbmsnXCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcCA/IHRvb2x0aXAgOiBsYWJlbEVsbGlwc2lzID8gbGFiZWwgOiAnJ1wiXG4gICAgICBbbWF0VG9vbHRpcENsYXNzXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgW2hyZWZdPVwidXJsXCJcbiAgICAgIFt0YXJnZXRdPVwidXJsVGFyZ2V0XCJcbiAgICAgIG1hdC1mbGF0LWJ1dHRvbj5cbiAgICAgIDxzcGFuIGlkPVwiZGVzY3JpYmVkYnktbGlua1wiIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiPlxuICAgICAgICB7eyBhcmlhRGVzY3JpYmVkYnkgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGlkPVwibGFiZWxsZWRieS1saW5rXCIgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCI+XG4gICAgICAgIHt7IGFyaWFMYWJlbGxlZGJ5IH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImljb24tbGFiZWwtd3JhcHBlclwiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvYT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==