@ardium-ui/ui 2.0.1 → 2.0.2

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.
@@ -259,7 +259,7 @@ export class ArdiumInputComponent extends ArdiumSimpleInputComponent {
259
259
  useExisting: forwardRef(() => ArdiumInputComponent),
260
260
  multi: true,
261
261
  },
262
- ], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionTemplate", first: true, predicate: ArdSuggestionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionLoadingTemplate", first: true, predicate: ArdInputLoadingTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dropdownHost", first: true, predicate: ["suggestionsHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["suggestionsTemplate"], descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\n [appearance]=\"appearance()\"\n [variant]=\"variant()\"\n [compact]=\"compact()\"\n [isFocused]=\"isFocused\"\n [prefixTemplate]=\"prefixTemplate()?.template\"\n [suffixTemplate]=\"suffixTemplate()?.template\"\n>\n <div\n class=\"ard-input\"\n #suggestionsHost\n [ngClass]=\"ngClasses()\"\n [class.ard-has-value]=\"value\"\n (click)=\"focus()\"\n >\n <div class=\"ard-input-container\">\n @if (shouldDisplayAutocomplete()) {\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\n }\n @if (shouldDisplayPlaceholder()) {\n <ng-template\n #defaultPlaceholderTemplate\n let-text\n >\n <div class=\"ard-placeholder\">{{ text }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\n }\n <input\n #textInput\n #focusableElement\n type=\"text\"\n [attr.id]=\"inputId()\"\n [attr.tabindex]=\"tabIndex()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput(textInput.value)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (copy)=\"onCopy($event)\"\n />\n </div>\n\n @if (shouldShowClearButton()) {\n <ard-clear-button\n [title]=\"clearButtonTitle()\"\n (click)=\"onClearButtonClick($event)\"\n />\n }\n </div>\n</ard-form-field-frame>\n\n<ng-template #suggestionsTemplate>\n <ard-dropdown-panel\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\n role=\"listbox\"\n [compact]=\"compact\"\n aria-label=\"Suggestions\"\n [appearance]=\"dropdownAppearanceOrDefault()\"\n [variant]=\"dropdownVariantOrDefault()\"\n [isOpen]=\"shouldDisplaySuggestions()\"\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\n (mousemove)=\"onMouseMove()\"\n >\n @for (item of suggestionItems(); track item.index()) {\n <div\n class=\"ard-option\"\n role=\"option\"\n [class.ard-option-selected]=\"item.selected()\"\n [class.ard-option-highlighted]=\"item.highlighted()\"\n [attr.aria-selected]=\"item.selected()\"\n (click)=\"selectSuggestion(item, $event)\"\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\n >\n <span class=\"ard-option-label\">\n <ng-template #defaultOptionTemplate>\n {{ item.label() }}\n </ng-template>\n\n <ng-template\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\n ></ng-template>\n </span>\n </div>\n }\n @if (areSuggestionsLoading()) {\n <ng-template #defaultLoadingPlaceholderTemplate>\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\n }\n </ard-dropdown-panel>\n</ng-template>\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: i4._ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: i5.ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i6.ClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
262
+ ], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionTemplate", first: true, predicate: ArdSuggestionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionLoadingTemplate", first: true, predicate: ArdInputLoadingTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dropdownHost", first: true, predicate: ["suggestionsHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["suggestionsTemplate"], descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\n [appearance]=\"appearance()\"\n [variant]=\"variant()\"\n [compact]=\"compact()\"\n [isFocused]=\"isFocused\"\n [prefixTemplate]=\"prefixTemplate()?.template\"\n [suffixTemplate]=\"suffixTemplate()?.template\"\n>\n <div\n class=\"ard-input\"\n #suggestionsHost\n [ngClass]=\"ngClasses()\"\n [class.ard-has-value]=\"value\"\n (click)=\"focus()\"\n >\n <div class=\"ard-input-container\">\n @if (shouldDisplayAutocomplete()) {\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\n }\n @if (shouldDisplayPlaceholder()) {\n <ng-template\n #defaultPlaceholderTemplate\n >\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\n }\n <input\n #textInput\n #focusableElement\n type=\"text\"\n [attr.id]=\"inputId()\"\n [attr.tabindex]=\"tabIndex()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput(textInput.value)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (copy)=\"onCopy($event)\"\n />\n </div>\n\n @if (shouldShowClearButton()) {\n <ard-clear-button\n [title]=\"clearButtonTitle()\"\n (click)=\"onClearButtonClick($event)\"\n />\n }\n </div>\n</ard-form-field-frame>\n\n<ng-template #suggestionsTemplate>\n <ard-dropdown-panel\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\n role=\"listbox\"\n [compact]=\"compact\"\n aria-label=\"Suggestions\"\n [appearance]=\"dropdownAppearanceOrDefault()\"\n [variant]=\"dropdownVariantOrDefault()\"\n [isOpen]=\"shouldDisplaySuggestions()\"\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\n (mousemove)=\"onMouseMove()\"\n >\n @for (item of suggestionItems(); track item.index()) {\n <div\n class=\"ard-option\"\n role=\"option\"\n [class.ard-option-selected]=\"item.selected()\"\n [class.ard-option-highlighted]=\"item.highlighted()\"\n [attr.aria-selected]=\"item.selected()\"\n (click)=\"selectSuggestion(item, $event)\"\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\n >\n <span class=\"ard-option-label\">\n <ng-template #defaultOptionTemplate>\n {{ item.label() }}\n </ng-template>\n\n <ng-template\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\n ></ng-template>\n </span>\n </div>\n }\n @if (areSuggestionsLoading()) {\n <ng-template #defaultLoadingPlaceholderTemplate>\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\n }\n </ard-dropdown-panel>\n</ng-template>\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: i4._ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: i5.ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i6.ClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
263
263
  }
264
264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumInputComponent, decorators: [{
265
265
  type: Component,
@@ -269,7 +269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
269
269
  useExisting: forwardRef(() => ArdiumInputComponent),
270
270
  multi: true,
271
271
  },
272
- ], template: "<ard-form-field-frame\n [appearance]=\"appearance()\"\n [variant]=\"variant()\"\n [compact]=\"compact()\"\n [isFocused]=\"isFocused\"\n [prefixTemplate]=\"prefixTemplate()?.template\"\n [suffixTemplate]=\"suffixTemplate()?.template\"\n>\n <div\n class=\"ard-input\"\n #suggestionsHost\n [ngClass]=\"ngClasses()\"\n [class.ard-has-value]=\"value\"\n (click)=\"focus()\"\n >\n <div class=\"ard-input-container\">\n @if (shouldDisplayAutocomplete()) {\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\n }\n @if (shouldDisplayPlaceholder()) {\n <ng-template\n #defaultPlaceholderTemplate\n let-text\n >\n <div class=\"ard-placeholder\">{{ text }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\n }\n <input\n #textInput\n #focusableElement\n type=\"text\"\n [attr.id]=\"inputId()\"\n [attr.tabindex]=\"tabIndex()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput(textInput.value)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (copy)=\"onCopy($event)\"\n />\n </div>\n\n @if (shouldShowClearButton()) {\n <ard-clear-button\n [title]=\"clearButtonTitle()\"\n (click)=\"onClearButtonClick($event)\"\n />\n }\n </div>\n</ard-form-field-frame>\n\n<ng-template #suggestionsTemplate>\n <ard-dropdown-panel\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\n role=\"listbox\"\n [compact]=\"compact\"\n aria-label=\"Suggestions\"\n [appearance]=\"dropdownAppearanceOrDefault()\"\n [variant]=\"dropdownVariantOrDefault()\"\n [isOpen]=\"shouldDisplaySuggestions()\"\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\n (mousemove)=\"onMouseMove()\"\n >\n @for (item of suggestionItems(); track item.index()) {\n <div\n class=\"ard-option\"\n role=\"option\"\n [class.ard-option-selected]=\"item.selected()\"\n [class.ard-option-highlighted]=\"item.highlighted()\"\n [attr.aria-selected]=\"item.selected()\"\n (click)=\"selectSuggestion(item, $event)\"\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\n >\n <span class=\"ard-option-label\">\n <ng-template #defaultOptionTemplate>\n {{ item.label() }}\n </ng-template>\n\n <ng-template\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\n ></ng-template>\n </span>\n </div>\n }\n @if (areSuggestionsLoading()) {\n <ng-template #defaultLoadingPlaceholderTemplate>\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\n }\n </ard-dropdown-panel>\n</ng-template>\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"] }]
272
+ ], template: "<ard-form-field-frame\n [appearance]=\"appearance()\"\n [variant]=\"variant()\"\n [compact]=\"compact()\"\n [isFocused]=\"isFocused\"\n [prefixTemplate]=\"prefixTemplate()?.template\"\n [suffixTemplate]=\"suffixTemplate()?.template\"\n>\n <div\n class=\"ard-input\"\n #suggestionsHost\n [ngClass]=\"ngClasses()\"\n [class.ard-has-value]=\"value\"\n (click)=\"focus()\"\n >\n <div class=\"ard-input-container\">\n @if (shouldDisplayAutocomplete()) {\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\n }\n @if (shouldDisplayPlaceholder()) {\n <ng-template\n #defaultPlaceholderTemplate\n >\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\n }\n <input\n #textInput\n #focusableElement\n type=\"text\"\n [attr.id]=\"inputId()\"\n [attr.tabindex]=\"tabIndex()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput(textInput.value)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (copy)=\"onCopy($event)\"\n />\n </div>\n\n @if (shouldShowClearButton()) {\n <ard-clear-button\n [title]=\"clearButtonTitle()\"\n (click)=\"onClearButtonClick($event)\"\n />\n }\n </div>\n</ard-form-field-frame>\n\n<ng-template #suggestionsTemplate>\n <ard-dropdown-panel\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\n role=\"listbox\"\n [compact]=\"compact\"\n aria-label=\"Suggestions\"\n [appearance]=\"dropdownAppearanceOrDefault()\"\n [variant]=\"dropdownVariantOrDefault()\"\n [isOpen]=\"shouldDisplaySuggestions()\"\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\n (mousemove)=\"onMouseMove()\"\n >\n @for (item of suggestionItems(); track item.index()) {\n <div\n class=\"ard-option\"\n role=\"option\"\n [class.ard-option-selected]=\"item.selected()\"\n [class.ard-option-highlighted]=\"item.highlighted()\"\n [attr.aria-selected]=\"item.selected()\"\n (click)=\"selectSuggestion(item, $event)\"\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\n >\n <span class=\"ard-option-label\">\n <ng-template #defaultOptionTemplate>\n {{ item.label() }}\n </ng-template>\n\n <ng-template\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\n ></ng-template>\n </span>\n </div>\n }\n @if (areSuggestionsLoading()) {\n <ng-template #defaultLoadingPlaceholderTemplate>\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\n }\n </ard-dropdown-panel>\n</ng-template>\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"] }]
273
273
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i1.Overlay }, { type: i1.ScrollStrategyOptions }], propDecorators: { suggestions: [{
274
274
  type: Input
275
275
  }], onWindowResize: [{
@@ -282,4 +282,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
282
282
  type: HostListener,
283
283
  args: ['keydown', ['$event']]
284
284
  }] } });
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvaW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvaW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QixhQUFhLEVBQXFDLE1BQU0sc0JBQXNCLENBQUM7QUFDcEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsV0FBVyxFQUVYLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQTJCLE1BQU0scURBQXFELENBQUM7QUFDbkgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFVBQVUsRUFBa0Isb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNw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QUFXO3NCQURkLEtBQUs7Z0JBa0ZOLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlO2dCQWdCN0IsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVc7Z0JBa0V6QixVQUFVO3NCQURULFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYsIFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBjb250ZW50Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheVByb3BlcnR5LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ3NpbXBsZS1ib29sJztcbmltcG9ydCB7IFNpbXBsZXN0SXRlbVN0b3JhZ2UsIFNpbXBsZXN0SXRlbVN0b3JhZ2VIb3N0IH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL2l0ZW0tc3RvcmFnZXMvc2ltcGxlc3QtaXRlbS1zdG9yYWdlJztcbmltcG9ydCB7IERyb3Bkb3duUGFuZWxBcHBlYXJhbmNlLCBEcm9wZG93blBhbmVsVmFyaWFudCB9IGZyb20gJy4uLy4uL2Ryb3Bkb3duLXBhbmVsL2Ryb3Bkb3duLXBhbmVsLnR5cGVzJztcbmltcG9ydCB7IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0gfSBmcm9tICcuLi8uLi90eXBlcy9pdGVtLXN0b3JhZ2UudHlwZXMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XG5pbXBvcnQgeyBBcmRpdW1TaW1wbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL3NpbXBsZS1pbnB1dC9zaW1wbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE9wdGlvbkNvbnRleHQgfSBmcm9tICcuLy4uLy4uL3R5cGVzL2l0ZW0tc3RvcmFnZS50eXBlcyc7XG5pbXBvcnQgeyBJbnB1dE1vZGVsLCBJbnB1dE1vZGVsSG9zdCwgZXNjYXBlQW5kQ3JlYXRlUmVnZXggfSBmcm9tICcuLy4uL2lucHV0LXV0aWxzJztcbmltcG9ydCB7XG4gIEFyZElucHV0TG9hZGluZ1RlbXBsYXRlRGlyZWN0aXZlLFxuICBBcmRJbnB1dFBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZElucHV0UHJlZml4VGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZElucHV0U3VmZml4VGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZFN1Z2dlc3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSxcbn0gZnJvbSAnLi9pbnB1dC5kaXJlY3RpdmVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXJkLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXJkaXVtSW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBBcmRpdW1TaW1wbGVJbnB1dENvbXBvbmVudFxuICBpbXBsZW1lbnRzIElucHV0TW9kZWxIb3N0LCBTaW1wbGVzdEl0ZW1TdG9yYWdlSG9zdCwgQWZ0ZXJWaWV3SW5pdFxue1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQhOiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgc2Nyb2xsU3RyYXRlZ3lPcHRzOiBTY3JvbGxTdHJhdGVneU9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuZWxlbWVudCA9IHZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgREVGQVVMVFMgPSB7XG4gICAgY2xlYXJCdXR0b25UaXRsZTogJ0NsZWFyJyxcbiAgICB2YWx1ZUZyb206ICd2YWx1ZScsXG4gICAgbGFiZWxGcm9tOiAnbGFiZWwnLFxuICAgIHN1Z2dlc3Rpb25zTG9hZGluZ1RleHQ6ICdMb2FkaW5nLi4uJyxcbiAgfTtcbiAgLy8hIGlucHV0IHZpZXdcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IGlucHV0TW9kZWwgPSBuZXcgSW5wdXRNb2RlbCh0aGlzKTtcblxuICAvLyEgYWxsb3dsaXN0L2RlbnlsaXN0IG9mIGNoYXJhY3RlcnNcbiAgLy91c2Ugc3RhbmRhcmQgc3RyaW5nIGZvciBkZW55bGlzdCwgcHJlcGVuZCB3aXRoIF4gZm9yIGFsbG93bGlzdFxuICByZWFkb25seSBjaGFybGlzdEZyb21JbnB1dCA9IGlucHV0PFJlZ0V4cCB8IHVuZGVmaW5lZCwgc3RyaW5nPih1bmRlZmluZWQsIHtcbiAgICBhbGlhczogJ2NoYXJsaXN0JyxcbiAgICB0cmFuc2Zvcm06IHYgPT4ge1xuICAgICAgaWYgKCFpc1N0cmluZyh2KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FSRC1GVDAwMzM6IFtjaGFybGlzdF0gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcsIGdvdCBcIlwiLicpO1xuICAgICAgfVxuICAgICAgY29uc3QgbmVnYXRlZCA9IHYuc3RhcnRzV2l0aCgnXicpO1xuICAgICAgcmV0dXJuIGVzY2FwZUFuZENyZWF0ZVJlZ2V4KHYsICcnLCAhbmVnYXRlZCk7XG4gICAgfSxcbiAgfSk7XG4gIHJlYWRvbmx5IGNoYXJsaXN0Q2FzZUluc2Vuc2l0aXZlID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xuXG4gIHJlYWRvbmx5IGNoYXJsaXN0ID0gY29tcHV0ZWQ8UmVnRXhwIHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgY29uc3QgYyA9IHRoaXMuY2hhcmxpc3RGcm9tSW5wdXQoKTtcbiAgICBpZiAoIXRoaXMuY2hhcmxpc3RDYXNlSW5zZW5zaXRpdmUoKSB8fCAhYykge1xuICAgICAgcmV0dXJuIGM7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUmVnRXhwKGMuc291cmNlLCAnaScpO1xuICB9KTtcblxuICAvLyEgYXV0b2NvbXBsZXRlXG4gIHJlYWRvbmx5IGF1dG9jb21wbGV0ZSA9IGlucHV0PE51bGxhYmxlPHN0cmluZz4+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgc2hvdWxkRGlzcGxheUF1dG9jb21wbGV0ZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+ICF0aGlzLmRpc2FibGVkKCkgJiYgQm9vbGVhbih0aGlzLmF1dG9jb21wbGV0ZSgpKSk7XG5cbiAgLy9hdXRvY29tcGxldGUgZXZlbnRcbiAgcmVhZG9ubHkgYWNjZXB0QXV0b2NvbXBsZXRlRXZlbnQgPSBvdXRwdXQoeyBhbGlhczogJ2FjY2VwdEF1dG9jb21wbGV0ZScgfSk7XG5cbiAgLy8hIHByZWZpeCAmIHN1ZmZpeFxuICBvdmVycmlkZSByZWFkb25seSBwcmVmaXhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRJbnB1dFByZWZpeFRlbXBsYXRlRGlyZWN0aXZlKTtcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgc3VmZml4VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkSW5wdXRTdWZmaXhUZW1wbGF0ZURpcmVjdGl2ZSk7XG5cbiAgLy8hIHBsYWNlaG9sZGVyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHBsYWNlaG9sZGVyVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkSW5wdXRQbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlKTtcblxuICAvLyEgc3VnZ2VzdGlvbnNcbiAgcmVhZG9ubHkgc3VnZ2VzdGlvblN0b3JhZ2UgPSBuZXcgU2ltcGxlc3RJdGVtU3RvcmFnZSh0aGlzKTtcblxuICByZWFkb25seSB2YWx1ZUZyb20gPSBpbnB1dDxOdWxsYWJsZTxzdHJpbmc+Pih1bmRlZmluZWQsIHsgYWxpYXM6ICdzdWdnVmFsdWVGcm9tJyB9KTtcbiAgcmVhZG9ubHkgbGFiZWxGcm9tID0gaW5wdXQ8TnVsbGFibGU8c3RyaW5nPj4odW5kZWZpbmVkLCB7IGFsaWFzOiAnc3VnZ0xhYmVsRnJvbScgfSk7XG5cbiAgcmVhZG9ubHkgYWNjZXB0U3VnZ2VzdGlvbkV2ZW50ID0gb3V0cHV0PGFueT4oeyBhbGlhczogJ2FjY2VwdFN1Z2dlc3Rpb24nIH0pO1xuXG4gIHJlYWRvbmx5IHN1Z2dlc3Rpb25JdGVtcyA9IHRoaXMuc3VnZ2VzdGlvblN0b3JhZ2UuaXRlbXM7XG5cbiAgQElucHV0KClcbiAgc2V0IHN1Z2dlc3Rpb25zKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB2YWx1ZSA9IGNvZXJjZUFycmF5UHJvcGVydHkodmFsdWUpO1xuXG4gICAgY29uc3Qgc2hvdWxkUHJpbnRFcnJvcnMgPSB0aGlzLnN1Z2dlc3Rpb25TdG9yYWdlLnNldEl0ZW1zKHZhbHVlKTtcblxuICAgIHRoaXMuX3N1Z2dlc3Rpb25Ecm9wZG93T3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5zdWdnZXN0aW9uU3RvcmFnZS5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcblxuICAgIGlmIChzaG91bGRQcmludEVycm9ycykge1xuICAgICAgdGhpcy5fcHJpbnRQcmltaXRpdmVXYXJuaW5ncygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3ByaW50UHJpbWl0aXZlV2FybmluZ3MoKSB7XG4gICAgZnVuY3Rpb24gbWFrZVdhcm5pbmcoc3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEFSRC1XQTAwMzE6IFNraXBwZWQgdXNpbmcgWyR7c3RyfV0gcHJvcGVydHkgYm91bmQgdG8gPGFyZC1pbnB1dD4sIGFzIHNvbWUgcHJvdmlkZWQgc3VnZ2VzdGlvbiBpdGVtcyBhcmUgb2YgcHJpbWl0aXZlIHR5cGVgXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWx1ZUZyb20oKSkge1xuICAgICAgbWFrZVdhcm5pbmcoJ3ZhbHVlRnJvbScpO1xuICAgIH1cbiAgICBpZiAodGhpcy5sYWJlbEZyb20oKSkge1xuICAgICAgbWFrZVdhcm5pbmcoJ2xhYmVsRnJvbScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1Z2dlc3Rpb25Ecm9wZG93T3BlbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgc2hvdWxkRGlzcGxheVN1Z2dlc3Rpb25zID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gIXRoaXMuZGlzYWJsZWQoKSAmJiAodGhpcy5zdWdnZXN0aW9uSXRlbXMoKS5sZW5ndGggPiAwIHx8IHRoaXMuYXJlU3VnZ2VzdGlvbnNMb2FkaW5nKCkpICYmIHRoaXMuX3N1Z2dlc3Rpb25Ecm9wZG93T3BlbigpXG4gICk7XG5cbiAgcmVhZG9ubHkgYXJlU3VnZ2VzdGlvbnNMb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xuICByZWFkb25seSBzdWdnZXN0aW9uc0xvYWRpbmdUZXh0ID0gaW5wdXQ8c3RyaW5nPih0aGlzLkRFRkFVTFRTLnN1Z2dlc3Rpb25zTG9hZGluZ1RleHQpO1xuXG4gIHJlYWRvbmx5IHN1Z2dlc3Rpb25UZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRTdWdnZXN0aW9uVGVtcGxhdGVEaXJlY3RpdmUpO1xuICByZWFkb25seSBzdWdnZXN0aW9uTG9hZGluZ1RlbXBsYXRlID0gY29udGVudENoaWxkKEFyZElucHV0TG9hZGluZ1RlbXBsYXRlRGlyZWN0aXZlKTtcblxuICAvLyEgc3VnZ2VzdGlvbnMgb3ZlcmxheVxuICByZWFkb25seSBkcm9wZG93bkhvc3QgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdzdWdnZXN0aW9uc0hvc3QnKTtcbiAgcmVhZG9ubHkgZHJvcGRvd25UZW1wbGF0ZSA9IHZpZXdDaGlsZCgnc3VnZ2VzdGlvbnNUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSk7XG5cbiAgcHJpdmF0ZSBkcm9wZG93bk92ZXJsYXkhOiBPdmVybGF5UmVmO1xuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5kcm9wZG93bkhvc3QoKSEpXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgfSBhcyBDb25uZWN0ZWRQb3NpdGlvbixcbiAgICAgIF0pXG4gICAgICAud2l0aFB1c2goZmFsc2UpO1xuXG4gICAgY29uc3QgY29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneTogc3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5zY3JvbGxTdHJhdGVneU9wdHMuYmxvY2soKSxcbiAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHRoaXMuZHJvcGRvd25PdmVybGF5ID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWcpO1xuXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZHJvcGRvd25UZW1wbGF0ZSgpISwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICB0aGlzLmRyb3Bkb3duT3ZlcmxheS5hdHRhY2gocG9ydGFsKTtcblxuICAgIHRoaXMuc2V0T3ZlcmxheVNpemUoKTtcbiAgfVxuXG4gIHNldE92ZXJsYXlTaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmRyb3Bkb3duSG9zdCgpPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHRoaXMuZHJvcGRvd25PdmVybGF5LnVwZGF0ZVNpemUoeyB3aWR0aDogcmVjdD8ud2lkdGggfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRPdmVybGF5U2l6ZSgpO1xuICB9XG5cbiAgZ2V0T3B0aW9uQ29udGV4dChpdGVtOiBBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtKTogT3B0aW9uQ29udGV4dDxBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRpbXBsaWNpdDogaXRlbSxcbiAgICAgIGl0ZW0sXG4gICAgICBpdGVtRGF0YTogaXRlbS5pdGVtRGF0YSxcbiAgICB9O1xuICB9XG5cbiAgLy8hIHN1Z2dlc3Rpb24taGlnaGxpZ2gtcmVsYXRlZFxuICBwcml2YXRlIF9pc01vdXNlQmVpbmdVc2VkID0gZmFsc2U7XG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbW92ZScpXG4gIG9uTW91c2VNb3ZlKCkge1xuICAgIHRoaXMuX2lzTW91c2VCZWluZ1VzZWQgPSB0cnVlO1xuICB9XG4gIG9uU3VnZ2VzdGlvbk1vdXNlRW50ZXIoaXRlbTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzTW91c2VCZWluZ1VzZWQpIHJldHVybjtcbiAgICB0aGlzLnN1Z2dlc3Rpb25TdG9yYWdlLmhpZ2hsaWdodEl0ZW0oaXRlbSk7XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuICBvblN1Z2dlc3Rpb25Nb3VzZUxlYXZlKGl0ZW06IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0sIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc01vdXNlQmVpbmdVc2VkKSByZXR1cm47XG4gICAgdGhpcy5zdWdnZXN0aW9uU3RvcmFnZS51bmhpZ2hsaWdodEl0ZW0oaXRlbSk7XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8vISBzdWdnZXN0aW9uIHNlbGVjdGlvblxuICBzZWxlY3RTdWdnZXN0aW9uKGl0ZW06IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0sIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLl9zZWxlY3RTdWdnZXN0aW9uKGl0ZW0pO1xuICB9XG4gIHByaXZhdGUgX3NlbGVjdFN1Z2dlc3Rpb24oaXRlbTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zdWdnZXN0aW9uU3RvcmFnZS5zZWxlY3RJdGVtKGl0ZW0pO1xuICAgIHRoaXMud3JpdGVWYWx1ZShzZWxlY3RlZCA/PyAnJyk7XG5cbiAgICB0aGlzLmFjY2VwdFN1Z2dlc3Rpb25FdmVudC5lbWl0KHNlbGVjdGVkKTtcblxuICAgIC8vaW1wb3J0YW50IHRvIGRvIHRob3NlIHR3byB0aGluZ3MgaW4gdGhpcyBleGFjdCBvcmRlclxuICAgIHRoaXMuZm9jdXMoKTtcbiAgICB0aGlzLl9zdWdnZXN0aW9uRHJvcGRvd09wZW4uc2V0KGZhbHNlKTtcbiAgfVxuICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZERpc3BsYXlTdWdnZXN0aW9ucygpKSByZXR1cm47XG5cbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuZWxlbWVudC5jb250YWlucyh0YXJnZXQpKSByZXR1cm47XG5cbiAgICB0aGlzLl9zdWdnZXN0aW9uRHJvcGRvd09wZW4uc2V0KGZhbHNlKTtcbiAgfVxuICAvLyEgc3VnZ2VzdGlvbiBhcHBlYXJhbmNlXG4gIHJlYWRvbmx5IGRyb3Bkb3duQXBwZWFyYW5jZSA9IGlucHV0PE51bGxhYmxlPERyb3Bkb3duUGFuZWxBcHBlYXJhbmNlPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZHJvcGRvd25BcHBlYXJhbmNlT3JEZWZhdWx0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRyb3Bkb3duQXBwZWFyYW5jZSgpKSByZXR1cm4gdGhpcy5kcm9wZG93bkFwcGVhcmFuY2UoKSE7XG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZSgpID09PSBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQpIHJldHVybiBEcm9wZG93blBhbmVsQXBwZWFyYW5jZS5PdXRsaW5lZDtcbiAgICByZXR1cm4gRHJvcGRvd25QYW5lbEFwcGVhcmFuY2UuUmFpc2VkO1xuICB9KTtcbiAgcmVhZG9ubHkgZHJvcGRvd25WYXJpYW50ID0gaW5wdXQ8TnVsbGFibGU8RHJvcGRvd25QYW5lbFZhcmlhbnQ+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBkcm9wZG93blZhcmlhbnRPckRlZmF1bHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25WYXJpYW50KCkpIHJldHVybiB0aGlzLmRyb3Bkb3duVmFyaWFudCgpITtcbiAgICBjb25zdCB2YXJpYW50ID0gdGhpcy52YXJpYW50KCk7XG4gICAgaWYgKHZhcmlhbnQgPT09IEZvcm1FbGVtZW50VmFyaWFudC5QaWxsKSByZXR1cm4gRHJvcGRvd25QYW5lbFZhcmlhbnQuUm91bmRlZDtcbiAgICByZXR1cm4gdmFyaWFudDtcbiAgfSk7XG5cbiAgLy8hIGZvY3VzIG92ZXJyaWRlXG4gIG92ZXJyaWRlIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWdnZXN0aW9uRHJvcGRvd09wZW4uc2V0KHRydWUpO1xuICAgIGlmICghdGhpcy5zdWdnZXN0aW9uU3RvcmFnZS5oaWdobGlnaHRlZEl0ZW0oKSkgdGhpcy5zdWdnZXN0aW9uU3RvcmFnZS5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcblxuICAgIHN1cGVyLm9uRm9jdXMoZXZlbnQpO1xuICB9XG5cbiAgLy8hIGtleSBwcmVzcyBoYW5kbGVyc1xuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgY2FzZSAnRW50ZXInOiB7XG4gICAgICAgIHRoaXMuX29uVGFiT3JFbnRlclByZXNzKGV2ZW50KTtcbiAgICAgICAgdGhpcy5fb25FbnRlclByZXNzKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAnVGFiJzoge1xuICAgICAgICB0aGlzLl9vblRhYk9yRW50ZXJQcmVzcyhldmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6IHtcbiAgICAgICAgdGhpcy5fb25BcnJvd0Rvd25QcmVzcyhldmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0Fycm93VXAnOiB7XG4gICAgICAgIHRoaXMuX29uQXJyb3dVcFByZXNzKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgX29uVGFiT3JFbnRlclByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZERpc3BsYXlBdXRvY29tcGxldGUoKSkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLm9uSW5wdXQodGhpcy5hdXRvY29tcGxldGUoKSA/PyAnJyk7XG4gICAgdGhpcy5hY2NlcHRBdXRvY29tcGxldGVFdmVudC5lbWl0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfb25FbnRlclByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZERpc3BsYXlTdWdnZXN0aW9ucygpKSByZXR1cm47XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuc3VnZ2VzdGlvblN0b3JhZ2UuaGlnaGxpZ2h0ZWRJdGVtKCk7XG4gICAgaWYgKCFpdGVtKSByZXR1cm47XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuX3NlbGVjdFN1Z2dlc3Rpb24oaXRlbSk7XG4gIH1cbiAgcHJpdmF0ZSBfb25BcnJvd0Rvd25QcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGREaXNwbGF5U3VnZ2VzdGlvbnMoKSkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLl9pc01vdXNlQmVpbmdVc2VkID0gZmFsc2U7XG5cbiAgICB0aGlzLnN1Z2dlc3Rpb25TdG9yYWdlLmhpZ2hsaWdodE5leHRJdGVtKCsxKTtcbiAgfVxuICBwcml2YXRlIF9vbkFycm93VXBQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGREaXNwbGF5U3VnZ2VzdGlvbnMoKSkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLl9pc01vdXNlQmVpbmdVc2VkID0gZmFsc2U7XG5cbiAgICB0aGlzLnN1Z2dlc3Rpb25TdG9yYWdlLmhpZ2hsaWdodE5leHRJdGVtKC0xKTtcbiAgfVxufVxuIiwiPGFyZC1mb3JtLWZpZWxkLWZyYW1lXG4gIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiXG4gIFt2YXJpYW50XT1cInZhcmlhbnQoKVwiXG4gIFtjb21wYWN0XT1cImNvbXBhY3QoKVwiXG4gIFtpc0ZvY3VzZWRdPVwiaXNGb2N1c2VkXCJcbiAgW3ByZWZpeFRlbXBsYXRlXT1cInByZWZpeFRlbXBsYXRlKCk/LnRlbXBsYXRlXCJcbiAgW3N1ZmZpeFRlbXBsYXRlXT1cInN1ZmZpeFRlbXBsYXRlKCk/LnRlbXBsYXRlXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYXJkLWlucHV0XCJcbiAgICAjc3VnZ2VzdGlvbnNIb3N0XG4gICAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxuICAgIFtjbGFzcy5hcmQtaGFzLXZhbHVlXT1cInZhbHVlXCJcbiAgICAoY2xpY2spPVwiZm9jdXMoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgQGlmIChzaG91bGREaXNwbGF5QXV0b2NvbXBsZXRlKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZC1hdXRvY29tcGxldGVcIj57eyBhdXRvY29tcGxldGUoKSB9fTwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChzaG91bGREaXNwbGF5UGxhY2Vob2xkZXIoKSkge1xuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAjZGVmYXVsdFBsYWNlaG9sZGVyVGVtcGxhdGVcbiAgICAgICAgICBsZXQtdGV4dFxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFyZC1wbGFjZWhvbGRlclwiPnt7IHRleHQgfX08L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicGxhY2Vob2xkZXJUZW1wbGF0ZSgpPy50ZW1wbGF0ZSB8fCBkZWZhdWx0UGxhY2Vob2xkZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICB9XG4gICAgICA8aW5wdXRcbiAgICAgICAgI3RleHRJbnB1dFxuICAgICAgICAjZm9jdXNhYmxlRWxlbWVudFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFthdHRyLmlkXT1cImlucHV0SWQoKVwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQodGV4dElucHV0LnZhbHVlKVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgIChjb3B5KT1cIm9uQ29weSgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKHNob3VsZFNob3dDbGVhckJ1dHRvbigpKSB7XG4gICAgICA8YXJkLWNsZWFyLWJ1dHRvblxuICAgICAgICBbdGl0bGVdPVwiY2xlYXJCdXR0b25UaXRsZSgpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXJCdXR0b25DbGljaygkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgfVxuICA8L2Rpdj5cbjwvYXJkLWZvcm0tZmllbGQtZnJhbWU+XG5cbjxuZy10ZW1wbGF0ZSAjc3VnZ2VzdGlvbnNUZW1wbGF0ZT5cbiAgPGFyZC1kcm9wZG93bi1wYW5lbFxuICAgIGNsYXNzPVwiYXJkLWRyb3Bkb3duLXBhbmVsIGFyZC1pbnB1dC1zdWdnZXN0aW9ucy1wYW5lbFwiXG4gICAgcm9sZT1cImxpc3Rib3hcIlxuICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgIGFyaWEtbGFiZWw9XCJTdWdnZXN0aW9uc1wiXG4gICAgW2FwcGVhcmFuY2VdPVwiZHJvcGRvd25BcHBlYXJhbmNlT3JEZWZhdWx0KClcIlxuICAgIFt2YXJpYW50XT1cImRyb3Bkb3duVmFyaWFudE9yRGVmYXVsdCgpXCJcbiAgICBbaXNPcGVuXT1cInNob3VsZERpc3BsYXlTdWdnZXN0aW9ucygpXCJcbiAgICAoYXJkQ2xpY2tPdXRzaWRlKT1cImhhbmRsZVN1Z2dlc3Rpb25DbGlja091dHNpZGUoJGV2ZW50KVwiXG4gICAgKG1vdXNlbW92ZSk9XCJvbk1vdXNlTW92ZSgpXCJcbiAgPlxuICAgIEBmb3IgKGl0ZW0gb2Ygc3VnZ2VzdGlvbkl0ZW1zKCk7IHRyYWNrIGl0ZW0uaW5kZXgoKSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFyZC1vcHRpb25cIlxuICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgW2NsYXNzLmFyZC1vcHRpb24tc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZCgpXCJcbiAgICAgICAgW2NsYXNzLmFyZC1vcHRpb24taGlnaGxpZ2h0ZWRdPVwiaXRlbS5oaWdobGlnaHRlZCgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpdGVtLnNlbGVjdGVkKClcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0U3VnZ2VzdGlvbihpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25TdWdnZXN0aW9uTW91c2VFbnRlcihpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25TdWdnZXN0aW9uTW91c2VMZWF2ZShpdGVtLCAkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhcmQtb3B0aW9uLWxhYmVsXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0T3B0aW9uVGVtcGxhdGU+XG4gICAgICAgICAgICB7eyBpdGVtLmxhYmVsKCkgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzdWdnZXN0aW9uVGVtcGxhdGUoKT8udGVtcGxhdGUgfHwgZGVmYXVsdE9wdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJnZXRPcHRpb25Db250ZXh0KGl0ZW0pXCJcbiAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoYXJlU3VnZ2VzdGlvbnNMb2FkaW5nKCkpIHtcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExvYWRpbmdQbGFjZWhvbGRlclRlbXBsYXRlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXJkLW9wdGlvbiBhcmQtb3B0aW9uLWRpc2FibGVkXCI+e3sgc3VnZ2VzdGlvbnNMb2FkaW5nVGV4dCgpIH19PC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic3VnZ2VzdGlvbkxvYWRpbmdUZW1wbGF0ZSgpPy50ZW1wbGF0ZSB8fCBkZWZhdWx0TG9hZGluZ1BsYWNlaG9sZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgIH1cbiAgPC9hcmQtZHJvcGRvd24tcGFuZWw+XG48L25nLXRlbXBsYXRlPlxuIl19
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvaW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvaW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QixhQUFhLEVBQXFDLE1BQU0sc0JBQXNCLENBQUM7QUFDcEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsV0FBVyxFQUVYLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQTJCLE1BQU0scURBQXFELENBQUM7QUFDbkgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFVBQVUsRUFBa0Isb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNw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QUFXO3NCQURkLEtBQUs7Z0JBa0ZOLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlO2dCQWdCN0IsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVc7Z0JBa0V6QixVQUFVO3NCQURULFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYsIFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBjb250ZW50Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheVByb3BlcnR5LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ3NpbXBsZS1ib29sJztcbmltcG9ydCB7IFNpbXBsZXN0SXRlbVN0b3JhZ2UsIFNpbXBsZXN0SXRlbVN0b3JhZ2VIb3N0IH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL2l0ZW0tc3RvcmFnZXMvc2ltcGxlc3QtaXRlbS1zdG9yYWdlJztcbmltcG9ydCB7IERyb3Bkb3duUGFuZWxBcHBlYXJhbmNlLCBEcm9wZG93blBhbmVsVmFyaWFudCB9IGZyb20gJy4uLy4uL2Ryb3Bkb3duLXBhbmVsL2Ryb3Bkb3duLXBhbmVsLnR5cGVzJztcbmltcG9ydCB7IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0gfSBmcm9tICcuLi8uLi90eXBlcy9pdGVtLXN0b3JhZ2UudHlwZXMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XG5pbXBvcnQgeyBBcmRpdW1TaW1wbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL3NpbXBsZS1pbnB1dC9zaW1wbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE9wdGlvbkNvbnRleHQgfSBmcm9tICcuLy4uLy4uL3R5cGVzL2l0ZW0tc3RvcmFnZS50eXBlcyc7XG5pbXBvcnQgeyBJbnB1dE1vZGVsLCBJbnB1dE1vZGVsSG9zdCwgZXNjYXBlQW5kQ3JlYXRlUmVnZXggfSBmcm9tICcuLy4uL2lucHV0LXV0aWxzJztcbmltcG9ydCB7XG4gIEFyZElucHV0TG9hZGluZ1RlbXBsYXRlRGlyZWN0aXZlLFxuICBBcmRJbnB1dFBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZElucHV0UHJlZml4VGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZElucHV0U3VmZml4VGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZFN1Z2dlc3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSxcbn0gZnJvbSAnLi9pbnB1dC5kaXJlY3RpdmVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXJkLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXJkaXVtSW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBBcmRpdW1TaW1wbGVJbnB1dENvbXBvbmVudFxuICBpbXBsZW1lbnRzIElucHV0TW9kZWxIb3N0LCBTaW1wbGVzdEl0ZW1TdG9yYWdlSG9zdCwgQWZ0ZXJWaWV3SW5pdFxue1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQhOiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgc2Nyb2xsU3RyYXRlZ3lPcHRzOiBTY3JvbGxTdHJhdGVneU9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuZWxlbWVudCA9IHZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgREVGQVVMVFMgPSB7XG4gICAgY2xlYXJCdXR0b25UaXRsZTogJ0NsZWFyJyxcbiAgICB2YWx1ZUZyb206ICd2YWx1ZScsXG4gICAgbGFiZWxGcm9tOiAnbGFiZWwnLFxuICAgIHN1Z2dlc3Rpb25zTG9hZGluZ1RleHQ6ICdMb2FkaW5nLi4uJyxcbiAgfTtcbiAgLy8hIGlucHV0IHZpZXdcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IGlucHV0TW9kZWwgPSBuZXcgSW5wdXRNb2RlbCh0aGlzKTtcblxuICAvLyEgYWxsb3dsaXN0L2RlbnlsaXN0IG9mIGNoYXJhY3RlcnNcbiAgLy91c2Ugc3RhbmRhcmQgc3RyaW5nIGZvciBkZW55bGlzdCwgcHJlcGVuZCB3aXRoIF4gZm9yIGFsbG93bGlzdFxuICByZWFkb25seSBjaGFybGlzdEZyb21JbnB1dCA9IGlucHV0PFJlZ0V4cCB8IHVuZGVmaW5lZCwgc3RyaW5nPih1bmRlZmluZWQsIHtcbiAgICBhbGlhczogJ2NoYXJsaXN0JyxcbiAgICB0cmFuc2Zvcm06IHYgPT4ge1xuICAgICAgaWYgKCFpc1N0cmluZyh2KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FSRC1GVDAwMzM6IFtjaGFybGlzdF0gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcsIGdvdCBcIlwiLicpO1xuICAgICAgfVxuICAgICAgY29uc3QgbmVnYXRlZCA9IHYuc3RhcnRzV2l0aCgnXicpO1xuICAgICAgcmV0dXJuIGVzY2FwZUFuZENyZWF0ZVJlZ2V4KHYsICcnLCAhbmVnYXRlZCk7XG4gICAgfSxcbiAgfSk7XG4gIHJlYWRvbmx5IGNoYXJsaXN0Q2FzZUluc2Vuc2l0aXZlID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xuXG4gIHJlYWRvbmx5IGNoYXJsaXN0ID0gY29tcHV0ZWQ8UmVnRXhwIHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgY29uc3QgYyA9IHRoaXMuY2hhcmxpc3RGcm9tSW5wdXQoKTtcbiAgICBpZiAoIXRoaXMuY2hhcmxpc3RDYXNlSW5zZW5zaXRpdmUoKSB8fCAhYykge1xuICAgICAgcmV0dXJuIGM7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUmVnRXhwKGMuc291cmNlLCAnaScpO1xuICB9KTtcblxuICAvLyEgYXV0b2NvbXBsZXRlXG4gIHJlYWRvbmx5IGF1dG9jb21wbGV0ZSA9IGlucHV0PE51bGxhYmxlPHN0cmluZz4+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgc2hvdWxkRGlzcGxheUF1dG9jb21wbGV0ZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+ICF0aGlzLmRpc2FibGVkKCkgJiYgQm9vbGVhbih0aGlzLmF1dG9jb21wbGV0ZSgpKSk7XG5cbiAgLy9hdXRvY29tcGxldGUgZXZlbnRcbiAgcmVhZG9ubHkgYWNjZXB0QXV0b2NvbXBsZXRlRXZlbnQgPSBvdXRwdXQoeyBhbGlhczogJ2FjY2VwdEF1dG9jb21wbGV0ZScgfSk7XG5cbiAgLy8hIHByZWZpeCAmIHN1ZmZpeFxuICBvdmVycmlkZSByZWFkb25seSBwcmVmaXhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRJbnB1dFByZWZpeFRlbXBsYXRlRGlyZWN0aXZlKTtcbiAgb3ZlcnJpZGUgcmVhZG9ubHkgc3VmZml4VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkSW5wdXRTdWZmaXhUZW1wbGF0ZURpcmVjdGl2ZSk7XG5cbiAgLy8hIHBsYWNlaG9sZGVyXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHBsYWNlaG9sZGVyVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkSW5wdXRQbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlKTtcblxuICAvLyEgc3VnZ2VzdGlvbnNcbiAgcmVhZG9ubHkgc3VnZ2VzdGlvblN0b3JhZ2UgPSBuZXcgU2ltcGxlc3RJdGVtU3RvcmFnZSh0aGlzKTtcblxuICByZWFkb25seSB2YWx1ZUZyb20gPSBpbnB1dDxOdWxsYWJsZTxzdHJpbmc+Pih1bmRlZmluZWQsIHsgYWxpYXM6ICdzdWdnVmFsdWVGcm9tJyB9KTtcbiAgcmVhZG9ubHkgbGFiZWxGcm9tID0gaW5wdXQ8TnVsbGFibGU8c3RyaW5nPj4odW5kZWZpbmVkLCB7IGFsaWFzOiAnc3VnZ0xhYmVsRnJvbScgfSk7XG5cbiAgcmVhZG9ubHkgYWNjZXB0U3VnZ2VzdGlvbkV2ZW50ID0gb3V0cHV0PGFueT4oeyBhbGlhczogJ2FjY2VwdFN1Z2dlc3Rpb24nIH0pO1xuXG4gIHJlYWRvbmx5IHN1Z2dlc3Rpb25JdGVtcyA9IHRoaXMuc3VnZ2VzdGlvblN0b3JhZ2UuaXRlbXM7XG5cbiAgQElucHV0KClcbiAgc2V0IHN1Z2dlc3Rpb25zKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB2YWx1ZSA9IGNvZXJjZUFycmF5UHJvcGVydHkodmFsdWUpO1xuXG4gICAgY29uc3Qgc2hvdWxkUHJpbnRFcnJvcnMgPSB0aGlzLnN1Z2dlc3Rpb25TdG9yYWdlLnNldEl0ZW1zKHZhbHVlKTtcblxuICAgIHRoaXMuX3N1Z2dlc3Rpb25Ecm9wZG93T3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5zdWdnZXN0aW9uU3RvcmFnZS5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcblxuICAgIGlmIChzaG91bGRQcmludEVycm9ycykge1xuICAgICAgdGhpcy5fcHJpbnRQcmltaXRpdmVXYXJuaW5ncygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3ByaW50UHJpbWl0aXZlV2FybmluZ3MoKSB7XG4gICAgZnVuY3Rpb24gbWFrZVdhcm5pbmcoc3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEFSRC1XQTAwMzE6IFNraXBwZWQgdXNpbmcgWyR7c3RyfV0gcHJvcGVydHkgYm91bmQgdG8gPGFyZC1pbnB1dD4sIGFzIHNvbWUgcHJvdmlkZWQgc3VnZ2VzdGlvbiBpdGVtcyBhcmUgb2YgcHJpbWl0aXZlIHR5cGVgXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWx1ZUZyb20oKSkge1xuICAgICAgbWFrZVdhcm5pbmcoJ3ZhbHVlRnJvbScpO1xuICAgIH1cbiAgICBpZiAodGhpcy5sYWJlbEZyb20oKSkge1xuICAgICAgbWFrZVdhcm5pbmcoJ2xhYmVsRnJvbScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1Z2dlc3Rpb25Ecm9wZG93T3BlbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgc2hvdWxkRGlzcGxheVN1Z2dlc3Rpb25zID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gIXRoaXMuZGlzYWJsZWQoKSAmJiAodGhpcy5zdWdnZXN0aW9uSXRlbXMoKS5sZW5ndGggPiAwIHx8IHRoaXMuYXJlU3VnZ2VzdGlvbnNMb2FkaW5nKCkpICYmIHRoaXMuX3N1Z2dlc3Rpb25Ecm9wZG93T3BlbigpXG4gICk7XG5cbiAgcmVhZG9ubHkgYXJlU3VnZ2VzdGlvbnNMb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xuICByZWFkb25seSBzdWdnZXN0aW9uc0xvYWRpbmdUZXh0ID0gaW5wdXQ8c3RyaW5nPih0aGlzLkRFRkFVTFRTLnN1Z2dlc3Rpb25zTG9hZGluZ1RleHQpO1xuXG4gIHJlYWRvbmx5IHN1Z2dlc3Rpb25UZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRTdWdnZXN0aW9uVGVtcGxhdGVEaXJlY3RpdmUpO1xuICByZWFkb25seSBzdWdnZXN0aW9uTG9hZGluZ1RlbXBsYXRlID0gY29udGVudENoaWxkKEFyZElucHV0TG9hZGluZ1RlbXBsYXRlRGlyZWN0aXZlKTtcblxuICAvLyEgc3VnZ2VzdGlvbnMgb3ZlcmxheVxuICByZWFkb25seSBkcm9wZG93bkhvc3QgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdzdWdnZXN0aW9uc0hvc3QnKTtcbiAgcmVhZG9ubHkgZHJvcGRvd25UZW1wbGF0ZSA9IHZpZXdDaGlsZCgnc3VnZ2VzdGlvbnNUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSk7XG5cbiAgcHJpdmF0ZSBkcm9wZG93bk92ZXJsYXkhOiBPdmVybGF5UmVmO1xuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5kcm9wZG93bkhvc3QoKSEpXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgfSBhcyBDb25uZWN0ZWRQb3NpdGlvbixcbiAgICAgIF0pXG4gICAgICAud2l0aFB1c2goZmFsc2UpO1xuXG4gICAgY29uc3QgY29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneTogc3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5zY3JvbGxTdHJhdGVneU9wdHMuYmxvY2soKSxcbiAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHRoaXMuZHJvcGRvd25PdmVybGF5ID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWcpO1xuXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZHJvcGRvd25UZW1wbGF0ZSgpISwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICB0aGlzLmRyb3Bkb3duT3ZlcmxheS5hdHRhY2gocG9ydGFsKTtcblxuICAgIHRoaXMuc2V0T3ZlcmxheVNpemUoKTtcbiAgfVxuXG4gIHNldE92ZXJsYXlTaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmRyb3Bkb3duSG9zdCgpPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHRoaXMuZHJvcGRvd25PdmVybGF5LnVwZGF0ZVNpemUoeyB3aWR0aDogcmVjdD8ud2lkdGggfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRPdmVybGF5U2l6ZSgpO1xuICB9XG5cbiAgZ2V0T3B0aW9uQ29udGV4dChpdGVtOiBBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtKTogT3B0aW9uQ29udGV4dDxBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRpbXBsaWNpdDogaXRlbSxcbiAgICAgIGl0ZW0sXG4gICAgICBpdGVtRGF0YTogaXRlbS5pdGVtRGF0YSxcbiAgICB9O1xuICB9XG5cbiAgLy8hIHN1Z2dlc3Rpb24taGlnaGxpZ2gtcmVsYXRlZFxuICBwcml2YXRlIF9pc01vdXNlQmVpbmdVc2VkID0gZmFsc2U7XG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbW92ZScpXG4gIG9uTW91c2VNb3ZlKCkge1xuICAgIHRoaXMuX2lzTW91c2VCZWluZ1VzZWQgPSB0cnVlO1xuICB9XG4gIG9uU3VnZ2VzdGlvbk1vdXNlRW50ZXIoaXRlbTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzTW91c2VCZWluZ1VzZWQpIHJldHVybjtcbiAgICB0aGlzLnN1Z2dlc3Rpb25TdG9yYWdlLmhpZ2hsaWdodEl0ZW0oaXRlbSk7XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuICBvblN1Z2dlc3Rpb25Nb3VzZUxlYXZlKGl0ZW06IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0sIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc01vdXNlQmVpbmdVc2VkKSByZXR1cm47XG4gICAgdGhpcy5zdWdnZXN0aW9uU3RvcmFnZS51bmhpZ2hsaWdodEl0ZW0oaXRlbSk7XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8vISBzdWdnZXN0aW9uIHNlbGVjdGlvblxuICBzZWxlY3RTdWdnZXN0aW9uKGl0ZW06IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0sIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLl9zZWxlY3RTdWdnZXN0aW9uKGl0ZW0pO1xuICB9XG4gIHByaXZhdGUgX3NlbGVjdFN1Z2dlc3Rpb24oaXRlbTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zdWdnZXN0aW9uU3RvcmFnZS5zZWxlY3RJdGVtKGl0ZW0pO1xuICAgIHRoaXMud3JpdGVWYWx1ZShzZWxlY3RlZCA/PyAnJyk7XG5cbiAgICB0aGlzLmFjY2VwdFN1Z2dlc3Rpb25FdmVudC5lbWl0KHNlbGVjdGVkKTtcblxuICAgIC8vaW1wb3J0YW50IHRvIGRvIHRob3NlIHR3byB0aGluZ3MgaW4gdGhpcyBleGFjdCBvcmRlclxuICAgIHRoaXMuZm9jdXMoKTtcbiAgICB0aGlzLl9zdWdnZXN0aW9uRHJvcGRvd09wZW4uc2V0KGZhbHNlKTtcbiAgfVxuICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZERpc3BsYXlTdWdnZXN0aW9ucygpKSByZXR1cm47XG5cbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuZWxlbWVudC5jb250YWlucyh0YXJnZXQpKSByZXR1cm47XG5cbiAgICB0aGlzLl9zdWdnZXN0aW9uRHJvcGRvd09wZW4uc2V0KGZhbHNlKTtcbiAgfVxuICAvLyEgc3VnZ2VzdGlvbiBhcHBlYXJhbmNlXG4gIHJlYWRvbmx5IGRyb3Bkb3duQXBwZWFyYW5jZSA9IGlucHV0PE51bGxhYmxlPERyb3Bkb3duUGFuZWxBcHBlYXJhbmNlPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZHJvcGRvd25BcHBlYXJhbmNlT3JEZWZhdWx0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRyb3Bkb3duQXBwZWFyYW5jZSgpKSByZXR1cm4gdGhpcy5kcm9wZG93bkFwcGVhcmFuY2UoKSE7XG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZSgpID09PSBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQpIHJldHVybiBEcm9wZG93blBhbmVsQXBwZWFyYW5jZS5PdXRsaW5lZDtcbiAgICByZXR1cm4gRHJvcGRvd25QYW5lbEFwcGVhcmFuY2UuUmFpc2VkO1xuICB9KTtcbiAgcmVhZG9ubHkgZHJvcGRvd25WYXJpYW50ID0gaW5wdXQ8TnVsbGFibGU8RHJvcGRvd25QYW5lbFZhcmlhbnQ+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBkcm9wZG93blZhcmlhbnRPckRlZmF1bHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25WYXJpYW50KCkpIHJldHVybiB0aGlzLmRyb3Bkb3duVmFyaWFudCgpITtcbiAgICBjb25zdCB2YXJpYW50ID0gdGhpcy52YXJpYW50KCk7XG4gICAgaWYgKHZhcmlhbnQgPT09IEZvcm1FbGVtZW50VmFyaWFudC5QaWxsKSByZXR1cm4gRHJvcGRvd25QYW5lbFZhcmlhbnQuUm91bmRlZDtcbiAgICByZXR1cm4gdmFyaWFudDtcbiAgfSk7XG5cbiAgLy8hIGZvY3VzIG92ZXJyaWRlXG4gIG92ZXJyaWRlIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWdnZXN0aW9uRHJvcGRvd09wZW4uc2V0KHRydWUpO1xuICAgIGlmICghdGhpcy5zdWdnZXN0aW9uU3RvcmFnZS5oaWdobGlnaHRlZEl0ZW0oKSkgdGhpcy5zdWdnZXN0aW9uU3RvcmFnZS5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcblxuICAgIHN1cGVyLm9uRm9jdXMoZXZlbnQpO1xuICB9XG5cbiAgLy8hIGtleSBwcmVzcyBoYW5kbGVyc1xuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgY2FzZSAnRW50ZXInOiB7XG4gICAgICAgIHRoaXMuX29uVGFiT3JFbnRlclByZXNzKGV2ZW50KTtcbiAgICAgICAgdGhpcy5fb25FbnRlclByZXNzKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAnVGFiJzoge1xuICAgICAgICB0aGlzLl9vblRhYk9yRW50ZXJQcmVzcyhldmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6IHtcbiAgICAgICAgdGhpcy5fb25BcnJvd0Rvd25QcmVzcyhldmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0Fycm93VXAnOiB7XG4gICAgICAgIHRoaXMuX29uQXJyb3dVcFByZXNzKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgX29uVGFiT3JFbnRlclByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZERpc3BsYXlBdXRvY29tcGxldGUoKSkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLm9uSW5wdXQodGhpcy5hdXRvY29tcGxldGUoKSA/PyAnJyk7XG4gICAgdGhpcy5hY2NlcHRBdXRvY29tcGxldGVFdmVudC5lbWl0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfb25FbnRlclByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZERpc3BsYXlTdWdnZXN0aW9ucygpKSByZXR1cm47XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuc3VnZ2VzdGlvblN0b3JhZ2UuaGlnaGxpZ2h0ZWRJdGVtKCk7XG4gICAgaWYgKCFpdGVtKSByZXR1cm47XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuX3NlbGVjdFN1Z2dlc3Rpb24oaXRlbSk7XG4gIH1cbiAgcHJpdmF0ZSBfb25BcnJvd0Rvd25QcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGREaXNwbGF5U3VnZ2VzdGlvbnMoKSkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLl9pc01vdXNlQmVpbmdVc2VkID0gZmFsc2U7XG5cbiAgICB0aGlzLnN1Z2dlc3Rpb25TdG9yYWdlLmhpZ2hsaWdodE5leHRJdGVtKCsxKTtcbiAgfVxuICBwcml2YXRlIF9vbkFycm93VXBQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGREaXNwbGF5U3VnZ2VzdGlvbnMoKSkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLl9pc01vdXNlQmVpbmdVc2VkID0gZmFsc2U7XG5cbiAgICB0aGlzLnN1Z2dlc3Rpb25TdG9yYWdlLmhpZ2hsaWdodE5leHRJdGVtKC0xKTtcbiAgfVxufVxuIiwiPGFyZC1mb3JtLWZpZWxkLWZyYW1lXG4gIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiXG4gIFt2YXJpYW50XT1cInZhcmlhbnQoKVwiXG4gIFtjb21wYWN0XT1cImNvbXBhY3QoKVwiXG4gIFtpc0ZvY3VzZWRdPVwiaXNGb2N1c2VkXCJcbiAgW3ByZWZpeFRlbXBsYXRlXT1cInByZWZpeFRlbXBsYXRlKCk/LnRlbXBsYXRlXCJcbiAgW3N1ZmZpeFRlbXBsYXRlXT1cInN1ZmZpeFRlbXBsYXRlKCk/LnRlbXBsYXRlXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYXJkLWlucHV0XCJcbiAgICAjc3VnZ2VzdGlvbnNIb3N0XG4gICAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxuICAgIFtjbGFzcy5hcmQtaGFzLXZhbHVlXT1cInZhbHVlXCJcbiAgICAoY2xpY2spPVwiZm9jdXMoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgQGlmIChzaG91bGREaXNwbGF5QXV0b2NvbXBsZXRlKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZC1hdXRvY29tcGxldGVcIj57eyBhdXRvY29tcGxldGUoKSB9fTwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChzaG91bGREaXNwbGF5UGxhY2Vob2xkZXIoKSkge1xuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAjZGVmYXVsdFBsYWNlaG9sZGVyVGVtcGxhdGVcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlcigpIH19PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBsYWNlaG9sZGVyVGVtcGxhdGUoKT8udGVtcGxhdGUgfHwgZGVmYXVsdFBsYWNlaG9sZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgfVxuICAgICAgPGlucHV0XG4gICAgICAgICN0ZXh0SW5wdXRcbiAgICAgICAgI2ZvY3VzYWJsZUVsZW1lbnRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkKClcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgIChpbnB1dCk9XCJvbklucHV0KHRleHRJbnB1dC52YWx1ZSlcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgICAoY29weSk9XCJvbkNvcHkoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChzaG91bGRTaG93Q2xlYXJCdXR0b24oKSkge1xuICAgICAgPGFyZC1jbGVhci1idXR0b25cbiAgICAgICAgW3RpdGxlXT1cImNsZWFyQnV0dG9uVGl0bGUoKVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsZWFyQnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAvPlxuICAgIH1cbiAgPC9kaXY+XG48L2FyZC1mb3JtLWZpZWxkLWZyYW1lPlxuXG48bmctdGVtcGxhdGUgI3N1Z2dlc3Rpb25zVGVtcGxhdGU+XG4gIDxhcmQtZHJvcGRvd24tcGFuZWxcbiAgICBjbGFzcz1cImFyZC1kcm9wZG93bi1wYW5lbCBhcmQtaW5wdXQtc3VnZ2VzdGlvbnMtcGFuZWxcIlxuICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICBhcmlhLWxhYmVsPVwiU3VnZ2VzdGlvbnNcIlxuICAgIFthcHBlYXJhbmNlXT1cImRyb3Bkb3duQXBwZWFyYW5jZU9yRGVmYXVsdCgpXCJcbiAgICBbdmFyaWFudF09XCJkcm9wZG93blZhcmlhbnRPckRlZmF1bHQoKVwiXG4gICAgW2lzT3Blbl09XCJzaG91bGREaXNwbGF5U3VnZ2VzdGlvbnMoKVwiXG4gICAgKGFyZENsaWNrT3V0c2lkZSk9XCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2tPdXRzaWRlKCRldmVudClcIlxuICAgIChtb3VzZW1vdmUpPVwib25Nb3VzZU1vdmUoKVwiXG4gID5cbiAgICBAZm9yIChpdGVtIG9mIHN1Z2dlc3Rpb25JdGVtcygpOyB0cmFjayBpdGVtLmluZGV4KCkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhcmQtb3B0aW9uXCJcbiAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgIFtjbGFzcy5hcmQtb3B0aW9uLXNlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWQoKVwiXG4gICAgICAgIFtjbGFzcy5hcmQtb3B0aW9uLWhpZ2hsaWdodGVkXT1cIml0ZW0uaGlnaGxpZ2h0ZWQoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZCgpXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFN1Z2dlc3Rpb24oaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIm9uU3VnZ2VzdGlvbk1vdXNlRW50ZXIoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cIm9uU3VnZ2VzdGlvbk1vdXNlTGVhdmUoaXRlbSwgJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXJkLW9wdGlvbi1sYWJlbFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE9wdGlvblRlbXBsYXRlPlxuICAgICAgICAgICAge3sgaXRlbS5sYWJlbCgpIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic3VnZ2VzdGlvblRlbXBsYXRlKCk/LnRlbXBsYXRlIHx8IGRlZmF1bHRPcHRpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiZ2V0T3B0aW9uQ29udGV4dChpdGVtKVwiXG4gICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGFyZVN1Z2dlc3Rpb25zTG9hZGluZygpKSB7XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMb2FkaW5nUGxhY2Vob2xkZXJUZW1wbGF0ZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFyZC1vcHRpb24gYXJkLW9wdGlvbi1kaXNhYmxlZFwiPnt7IHN1Z2dlc3Rpb25zTG9hZGluZ1RleHQoKSB9fTwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN1Z2dlc3Rpb25Mb2FkaW5nVGVtcGxhdGUoKT8udGVtcGxhdGUgfHwgZGVmYXVsdExvYWRpbmdQbGFjZWhvbGRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICB9XG4gIDwvYXJkLWRyb3Bkb3duLXBhbmVsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -148,7 +148,7 @@ export class ArdiumSimpleInputComponent extends _NgModelComponentBase {
148
148
  useExisting: forwardRef(() => ArdiumSimpleInputComponent),
149
149
  multi: true,
150
150
  },
151
- ], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdSimpleInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdSimpleInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdSimpleInputPlaceholderTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "textInputEl", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\n [appearance]=\"appearance()\"\n [variant]=\"variant()\"\n [compact]=\"compact\"\n [isFocused]=\"isFocused\"\n [prefixTemplate]=\"prefixTemplate()?.template\"\n [suffixTemplate]=\"suffixTemplate()?.template\"\n>\n <div\n class=\"ard-simple-input\"\n [ngClass]=\"ngClasses()\"\n [class.ard-has-value]=\"value\"\n (click)=\"focus()\"\n >\n <div class=\"ard-input-container\">\n @if (shouldDisplayPlaceholder()) {\n <ng-template\n #defaultPlaceholderTemplate\n let-text\n >\n <div class=\"ard-placeholder\">{{ text }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\n }\n\n <input\n #textInput\n #focusableElement\n type=\"text\"\n [attr.id]=\"inputId()\"\n [attr.tabindex]=\"tabIndex()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput(textInput.value)\"\n (focus)=\"onFocusMaster($event)\"\n (blur)=\"onBlurMaster($event)\"\n (change)=\"onChange($event)\"\n (copy)=\"onCopy($event)\"\n />\n </div>\n\n @if (shouldShowClearButton()) {\n <ard-clear-button\n [title]=\"clearButtonTitle()\"\n (click)=\"onClearButtonClick($event)\"\n />\n }\n </div>\n</ard-form-field-frame>\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2._ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: i3.ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
151
+ ], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdSimpleInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdSimpleInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdSimpleInputPlaceholderTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "textInputEl", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\n [appearance]=\"appearance()\"\n [variant]=\"variant()\"\n [compact]=\"compact\"\n [isFocused]=\"isFocused\"\n [prefixTemplate]=\"prefixTemplate()?.template\"\n [suffixTemplate]=\"suffixTemplate()?.template\"\n>\n <div\n class=\"ard-simple-input\"\n [ngClass]=\"ngClasses()\"\n [class.ard-has-value]=\"value\"\n (click)=\"focus()\"\n >\n <div class=\"ard-input-container\">\n @if (shouldDisplayPlaceholder()) {\n <ng-template\n #defaultPlaceholderTemplate\n >\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\n }\n\n <input\n #textInput\n #focusableElement\n type=\"text\"\n [attr.id]=\"inputId()\"\n [attr.tabindex]=\"tabIndex()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput(textInput.value)\"\n (focus)=\"onFocusMaster($event)\"\n (blur)=\"onBlurMaster($event)\"\n (change)=\"onChange($event)\"\n (copy)=\"onCopy($event)\"\n />\n </div>\n\n @if (shouldShowClearButton()) {\n <ard-clear-button\n [title]=\"clearButtonTitle()\"\n (click)=\"onClearButtonClick($event)\"\n />\n }\n </div>\n</ard-form-field-frame>\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2._ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: i3.ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
152
152
  }
153
153
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumSimpleInputComponent, decorators: [{
154
154
  type: Component,
@@ -158,8 +158,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
158
158
  useExisting: forwardRef(() => ArdiumSimpleInputComponent),
159
159
  multi: true,
160
160
  },
161
- ], template: "<ard-form-field-frame\n [appearance]=\"appearance()\"\n [variant]=\"variant()\"\n [compact]=\"compact\"\n [isFocused]=\"isFocused\"\n [prefixTemplate]=\"prefixTemplate()?.template\"\n [suffixTemplate]=\"suffixTemplate()?.template\"\n>\n <div\n class=\"ard-simple-input\"\n [ngClass]=\"ngClasses()\"\n [class.ard-has-value]=\"value\"\n (click)=\"focus()\"\n >\n <div class=\"ard-input-container\">\n @if (shouldDisplayPlaceholder()) {\n <ng-template\n #defaultPlaceholderTemplate\n let-text\n >\n <div class=\"ard-placeholder\">{{ text }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\n }\n\n <input\n #textInput\n #focusableElement\n type=\"text\"\n [attr.id]=\"inputId()\"\n [attr.tabindex]=\"tabIndex()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput(textInput.value)\"\n (focus)=\"onFocusMaster($event)\"\n (blur)=\"onBlurMaster($event)\"\n (change)=\"onChange($event)\"\n (copy)=\"onCopy($event)\"\n />\n </div>\n\n @if (shouldShowClearButton()) {\n <ard-clear-button\n [title]=\"clearButtonTitle()\"\n (click)=\"onClearButtonClick($event)\"\n />\n }\n </div>\n</ard-form-field-frame>\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}\n"] }]
161
+ ], template: "<ard-form-field-frame\n [appearance]=\"appearance()\"\n [variant]=\"variant()\"\n [compact]=\"compact\"\n [isFocused]=\"isFocused\"\n [prefixTemplate]=\"prefixTemplate()?.template\"\n [suffixTemplate]=\"suffixTemplate()?.template\"\n>\n <div\n class=\"ard-simple-input\"\n [ngClass]=\"ngClasses()\"\n [class.ard-has-value]=\"value\"\n (click)=\"focus()\"\n >\n <div class=\"ard-input-container\">\n @if (shouldDisplayPlaceholder()) {\n <ng-template\n #defaultPlaceholderTemplate\n >\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\n }\n\n <input\n #textInput\n #focusableElement\n type=\"text\"\n [attr.id]=\"inputId()\"\n [attr.tabindex]=\"tabIndex()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput(textInput.value)\"\n (focus)=\"onFocusMaster($event)\"\n (blur)=\"onBlurMaster($event)\"\n (change)=\"onChange($event)\"\n (copy)=\"onCopy($event)\"\n />\n </div>\n\n @if (shouldShowClearButton()) {\n <ard-clear-button\n [title]=\"clearButtonTitle()\"\n (click)=\"onClearButtonClick($event)\"\n />\n }\n </div>\n</ard-form-field-frame>\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}\n"] }]
162
162
  }], propDecorators: { value: [{
163
163
  type: Input
164
164
  }] } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvaW5wdXRzL3NpbXBsZS1pbnB1dC9zaW1wbGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvc2ltcGxlLWlucHV0L3NpbXBsZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUdaLFVBQVUsRUFDVixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQXdCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUUsT0FBTyxFQUNMLDBDQUEwQyxFQUMxQyxxQ0FBcUMsRUFDckMscUNBQXFDLEdBQ3RDLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBZ0JuQyxNQUFNLE9BQU8sMEJBQ1gsU0FBUSxxQkFBcUI7SUFmL0I7O1FBa0JXLGFBQVEsR0FBRztZQUNsQixnQkFBZ0IsRUFBRSxPQUFPO1NBQzFCLENBQUM7UUFDRixjQUFjO1FBQ0wsZ0JBQVcsR0FBRyxT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SUFBSTthQUNaO1NBQ0Ysc0VBNkJzQyxxQ0FBcUMsaUdBQ3JDLHFDQUFxQyxzR0FHaEMsMENBQTBDLGlOQ3pFeEYsdzVDQWtEQTs7MkZEUmEsMEJBQTBCO2tCQWR0QyxTQUFTOytCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDJCQUEyQixDQUFDOzRCQUN6RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFzRUcsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGNvbnRlbnRDaGlsZCxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIG91dHB1dCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XG5pbXBvcnQgeyBfTmdNb2RlbENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9faW50ZXJuYWwvbmdtb2RlbC1jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XG5pbXBvcnQgeyBTaW1wbGVPbmVBeGlzQWxpZ25tZW50IH0gZnJvbSAnLi8uLi8uLi90eXBlcy9hbGlnbm1lbnQudHlwZXMnO1xuaW1wb3J0IHsgU2ltcGxlSW5wdXRNb2RlbCwgU2ltcGxlSW5wdXRNb2RlbEhvc3QgfSBmcm9tICcuLy4uL2lucHV0LXV0aWxzJztcbmltcG9ydCB7XG4gIEFyZFNpbXBsZUlucHV0UGxhY2Vob2xkZXJUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgQXJkU2ltcGxlSW5wdXRQcmVmaXhUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgQXJkU2ltcGxlSW5wdXRTdWZmaXhUZW1wbGF0ZURpcmVjdGl2ZSxcbn0gZnJvbSAnLi9zaW1wbGUtaW5wdXQuZGlyZWN0aXZlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FyZC1zaW1wbGUtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2ltcGxlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2ltcGxlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFyZGl1bVNpbXBsZUlucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFyZGl1bVNpbXBsZUlucHV0Q29tcG9uZW50XG4gIGV4dGVuZHMgX05nTW9kZWxDb21wb25lbnRCYXNlXG4gIGltcGxlbWVudHMgU2ltcGxlSW5wdXRNb2RlbEhvc3QsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0XG57XG4gIHJlYWRvbmx5IERFRkFVTFRTID0ge1xuICAgIGNsZWFyQnV0dG9uVGl0bGU6ICdDbGVhcicsXG4gIH07XG4gIC8vISBpbnB1dCB2aWV3XG4gIHJlYWRvbmx5IHRleHRJbnB1dEVsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCd0ZXh0SW5wdXQnKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXRNb2RlbCA9IG5ldyBTaW1wbGVJbnB1dE1vZGVsKHRoaXMpO1xuICBwcml2YXRlIF93YXNWaWV3SW5pdCA9IGZhbHNlO1xuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fd2FzVmlld0luaXQgPSB0cnVlO1xuICAgIHRoaXMuX3NldElucHV0QXR0cmlidXRlcygpO1xuICAgIC8vc2V0IHRoZSB2YWx1ZVxuICAgIGlmICh0aGlzLl92YWx1ZUJlZm9yZUluaXQpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLl92YWx1ZUJlZm9yZUluaXQpO1xuICAgICAgZGVsZXRlIHRoaXMuX3ZhbHVlQmVmb3JlSW5pdDtcbiAgICB9XG4gIH1cblxuICByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBpbnB1dElkID0gaW5wdXQ8TnVsbGFibGU8c3RyaW5nPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2xlYXJCdXR0b25UaXRsZSA9IGlucHV0PHN0cmluZz4odGhpcy5ERUZBVUxUUy5jbGVhckJ1dHRvblRpdGxlKTtcblxuICAvLyEgcHJlZml4ICYgc3VmZml4XG4gIHJlYWRvbmx5IHByZWZpeFRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZFNpbXBsZUlucHV0UHJlZml4VGVtcGxhdGVEaXJlY3RpdmUpO1xuICByZWFkb25seSBzdWZmaXhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRTaW1wbGVJbnB1dFN1ZmZpeFRlbXBsYXRlRGlyZWN0aXZlKTtcblxuICAvLyEgcGxhY2Vob2xkZXJcbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXJUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRTaW1wbGVJbnB1dFBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUpO1xuXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlQbGFjZWhvbGRlciA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IEJvb2xlYW4odGhpcy5wbGFjZWhvbGRlcigpKSAmJiAhdGhpcy5pbnB1dE1vZGVsLnZhbHVlKCkpO1xuXG4gIC8vISBhcHBlYXJhbmNlXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxGb3JtRWxlbWVudEFwcGVhcmFuY2U+KEZvcm1FbGVtZW50QXBwZWFyYW5jZS5PdXRsaW5lZCk7XG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KEZvcm1FbGVtZW50VmFyaWFudC5Sb3VuZGVkKTtcbiAgcmVhZG9ubHkgYWxpZ25UZXh0ID0gaW5wdXQ8U2ltcGxlT25lQXhpc0FsaWdubWVudD4oU2ltcGxlT25lQXhpc0FsaWdubWVudC5MZWZ0KTtcblxuICByZWFkb25seSBjb21wYWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xuXG4gIHJlYWRvbmx5IG5nQ2xhc3NlcyA9IGNvbXB1dGVkKCgpOiBzdHJpbmcgPT5cbiAgICBbXG4gICAgICBgYXJkLWFwcGVhcmFuY2UtJHt0aGlzLmFwcGVhcmFuY2UoKX1gLFxuICAgICAgYGFyZC12YXJpYW50LSR7dGhpcy52YXJpYW50KCl9YCxcbiAgICAgIGBhcmQtdGV4dC1hbGlnbi0ke3RoaXMuYWxpZ25UZXh0KCl9YCxcbiAgICAgIHRoaXMuY29tcGFjdCgpID8gJ2FyZC1jb21wYWN0JyA6ICcnLFxuICAgICAgdGhpcy5jbGVhcmFibGUoKSA/ICdhcmQtY2xlYXJhYmxlJyA6ICcnLFxuICAgIF0uam9pbignICcpXG4gICk7XG5cbiAgLy8hIG90aGVyIGlucHV0c1xuICByZWFkb25seSBpbnB1dEF0dHJzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgYW55Pj4oe30pO1xuXG4gIC8vISBudW1iZXIgYXR0cmlidXRlIHNldHRlcnMvZ2V0dGVyc1xuICByZWFkb25seSBtYXhMZW5ndGggPSBpbnB1dDxOdWxsYWJsZTxudW1iZXI+LCBhbnk+KHVuZGVmaW5lZCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdW5kZWZpbmVkKSB9KTtcblxuICAvLyEgbm8tdmFsdWUgYXR0cmlidXRlIHNldHRlcnMvZ2V0dGVyc1xuICByZWFkb25seSBjbGVhcmFibGUgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG5cbiAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3IncyB3cml0ZSB2YWx1ZSBpbXBsZW1lbnRhdGlvblxuICB3cml0ZVZhbHVlKHY6IGFueSkge1xuICAgIHRoaXMuaW5wdXRNb2RlbC53cml0ZVZhbHVlKHYpO1xuICB9XG4gIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcbiAgcHJvdGVjdGVkIF92YWx1ZUJlZm9yZUluaXQ/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IHN0cmluZyB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3dhc1ZpZXdJbml0KSB7XG4gICAgICB0aGlzLl92YWx1ZUJlZm9yZUluaXQgPSB2O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLndyaXRlVmFsdWUodik7XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmlucHV0TW9kZWwudmFsdWUoKTtcbiAgfVxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxzdHJpbmcgfCBudWxsPigpO1xuXG4gIC8vISBldmVudCBlbWl0dGVyc1xuICByZWFkb25seSBpbnB1dEV2ZW50ID0gb3V0cHV0PHN0cmluZyB8IG51bGw+KHsgYWxpYXM6ICdpbnB1dCcgfSk7XG4gIHJlYWRvbmx5IGNoYW5nZUV2ZW50ID0gb3V0cHV0PHN0cmluZyB8IG51bGw+KHsgYWxpYXM6ICdjaGFuZ2UnIH0pO1xuICByZWFkb25seSBjbGVhckV2ZW50ID0gb3V0cHV0PE1vdXNlRXZlbnQ+KHsgYWxpYXM6ICdjbGVhcicgfSk7XG5cbiAgLy8hIGV2ZW50IGhhbmRsZXJzXG4gIG9uSW5wdXQobmV3VmFsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZUhhc0NoYW5nZWQgPSB0aGlzLmlucHV0TW9kZWwud3JpdGVWYWx1ZShuZXdWYWwpO1xuICAgIGlmICghdmFsdWVIYXNDaGFuZ2VkKSByZXR1cm47XG4gICAgdGhpcy5fZW1pdElucHV0KCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9lbWl0SW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VSZWdpc3RlcmVkPy4odGhpcy52YWx1ZSk7XG4gICAgdGhpcy5pbnB1dEV2ZW50LmVtaXQodGhpcy52YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG4gIC8vZm9jdXMsIGJsdXIsIGNoYW5nZVxuICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkZvY3VzKGV2ZW50KTtcbiAgfVxuICBvbkJsdXJNYXN0ZXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQmx1cihldmVudCk7XG4gIH1cbiAgb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuICB9XG4gIHByb3RlY3RlZCBfZW1pdENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQodGhpcy5pbnB1dE1vZGVsLnZhbHVlKCkpO1xuICB9XG4gIC8vIGNsZWFyIGJ1dHRvblxuICByZWFkb25seSBzaG91bGRTaG93Q2xlYXJCdXR0b24gPSBjb21wdXRlZDxib29sZWFuPihcbiAgICAoKSA9PiB0aGlzLmNsZWFyYWJsZSgpICYmICF0aGlzLmRpc2FibGVkKCkgJiYgQm9vbGVhbih0aGlzLmlucHV0TW9kZWwudmFsdWUoKSlcbiAgKTtcbiAgb25DbGVhckJ1dHRvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pbnB1dE1vZGVsLmNsZWFyKCk7XG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuICAgIHRoaXMuX2VtaXRJbnB1dCgpO1xuICAgIHRoaXMuY2xlYXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICAvLyEgY29weSBldmVudFxuICBvbkNvcHkoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy52YWx1ZSAmJlxuICAgICAgLy9kb2VzIHRoZSBzZWxlY3Rpb24gY292ZXIgdGhlIGVudGlyZSBpbnB1dFxuICAgICAgKCh0aGlzLnRleHRJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDAgJiZcbiAgICAgICAgdGhpcy50ZXh0SW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PT0gdGhpcy50ZXh0SW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LnZhbHVlLmxlbmd0aCkgfHxcbiAgICAgICAgLy9vciBpcyB6ZXJvLXdpZGVcbiAgICAgICAgdGhpcy50ZXh0SW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSB0aGlzLnRleHRJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kKVxuICAgICkge1xuICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YT8uc2V0RGF0YSgndGV4dC9wbGFpbicsIHRoaXMudmFsdWUpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cbiAgLy8hIGhlbHBlcnNcbiAgcHJvdGVjdGVkIF9zZXRJbnB1dEF0dHJpYnV0ZXMoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLnRleHRJbnB1dEVsKCkhLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGF1dG9jb3JyZWN0OiAnb2ZmJyxcbiAgICAgIGF1dG9jYXBpdGFsaXplOiAnb2ZmJyxcbiAgICAgIGF1dG9jb21wbGV0ZTogJ29mZicsXG4gICAgICB0YWJpbmRleDogU3RyaW5nKHRoaXMudGFiSW5kZXgoKSksXG4gICAgICAuLi50aGlzLmlucHV0QXR0cnMoKSxcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIHtcbiAgICAgIGlucHV0LnNldEF0dHJpYnV0ZShrZXksIFN0cmluZyhhdHRyaWJ1dGVzW2tleV0pKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxhcmQtZm9ybS1maWVsZC1mcmFtZVxuICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIlxuICBbdmFyaWFudF09XCJ2YXJpYW50KClcIlxuICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgW2lzRm9jdXNlZF09XCJpc0ZvY3VzZWRcIlxuICBbcHJlZml4VGVtcGxhdGVdPVwicHJlZml4VGVtcGxhdGUoKT8udGVtcGxhdGVcIlxuICBbc3VmZml4VGVtcGxhdGVdPVwic3VmZml4VGVtcGxhdGUoKT8udGVtcGxhdGVcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhcmQtc2ltcGxlLWlucHV0XCJcbiAgICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXG4gICAgW2NsYXNzLmFyZC1oYXMtdmFsdWVdPVwidmFsdWVcIlxuICAgIChjbGljayk9XCJmb2N1cygpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJhcmQtaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICBAaWYgKHNob3VsZERpc3BsYXlQbGFjZWhvbGRlcigpKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICNkZWZhdWx0UGxhY2Vob2xkZXJUZW1wbGF0ZVxuICAgICAgICAgIGxldC10ZXh0XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJkLXBsYWNlaG9sZGVyXCI+e3sgdGV4dCB9fTwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwbGFjZWhvbGRlclRlbXBsYXRlKCk/LnRlbXBsYXRlIHx8IGRlZmF1bHRQbGFjZWhvbGRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIH1cblxuICAgICAgPGlucHV0XG4gICAgICAgICN0ZXh0SW5wdXRcbiAgICAgICAgI2ZvY3VzYWJsZUVsZW1lbnRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkKClcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgIChpbnB1dCk9XCJvbklucHV0KHRleHRJbnB1dC52YWx1ZSlcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1c01hc3RlcigkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyTWFzdGVyKCRldmVudClcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoY29weSk9XCJvbkNvcHkoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChzaG91bGRTaG93Q2xlYXJCdXR0b24oKSkge1xuICAgICAgPGFyZC1jbGVhci1idXR0b25cbiAgICAgICAgW3RpdGxlXT1cImNsZWFyQnV0dG9uVGl0bGUoKVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsZWFyQnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAvPlxuICAgIH1cbiAgPC9kaXY+XG48L2FyZC1mb3JtLWZpZWxkLWZyYW1lPlxuIl19
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvaW5wdXRzL3NpbXBsZS1pbnB1dC9zaW1wbGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvc2ltcGxlLWlucHV0L3NpbXBsZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUVaLFVBQVUsRUFDVixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQXdCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUUsT0FBTyxFQUNMLDBDQUEwQyxFQUMxQyxxQ0FBcUMsRUFDckMscUNBQXFDLEdBQ3RDLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBZ0JuQyxNQUFNLE9BQU8sMEJBQ1gsU0FBUSxxQkFBcUI7SUFmL0I7O1FBa0JXLGFBQVEsR0FBRztZQUNsQixnQkFBZ0IsRUFBRSxPQUFPO1NBQzFCLENBQUM7UUFDRixjQUFjO1FBQ0wsZ0JBQVcsR0FBRyxT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SUFBSTthQUNaO1NBQ0Ysc0VBNkJzQyxxQ0FBcUMsaUdBQ3JDLHFDQUFxQyxzR0FHaEMsMENBQTBDLGlOQ3hFeEYsNjRDQWlEQTs7MkZEUmEsMEJBQTBCO2tCQWR0QyxTQUFTOytCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDJCQUEyQixDQUFDOzRCQUN6RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFzRUcsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGNvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgaW5wdXQsXG4gIElucHV0LFxuICBvdXRwdXQsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xuaW1wb3J0IHsgX05nTW9kZWxDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL25nbW9kZWwtY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGVzL3V0aWxpdHkudHlwZXMnO1xuaW1wb3J0IHsgU2ltcGxlT25lQXhpc0FsaWdubWVudCB9IGZyb20gJy4vLi4vLi4vdHlwZXMvYWxpZ25tZW50LnR5cGVzJztcbmltcG9ydCB7IFNpbXBsZUlucHV0TW9kZWwsIFNpbXBsZUlucHV0TW9kZWxIb3N0IH0gZnJvbSAnLi8uLi9pbnB1dC11dGlscyc7XG5pbXBvcnQge1xuICBBcmRTaW1wbGVJbnB1dFBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZFNpbXBsZUlucHV0UHJlZml4VGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZFNpbXBsZUlucHV0U3VmZml4VGVtcGxhdGVEaXJlY3RpdmUsXG59IGZyb20gJy4vc2ltcGxlLWlucHV0LmRpcmVjdGl2ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcmQtc2ltcGxlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpbXBsZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBcmRpdW1TaW1wbGVJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1TaW1wbGVJbnB1dENvbXBvbmVudFxuICBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50QmFzZVxuICBpbXBsZW1lbnRzIFNpbXBsZUlucHV0TW9kZWxIb3N0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdFxue1xuICByZWFkb25seSBERUZBVUxUUyA9IHtcbiAgICBjbGVhckJ1dHRvblRpdGxlOiAnQ2xlYXInLFxuICB9O1xuICAvLyEgaW5wdXQgdmlld1xuICByZWFkb25seSB0ZXh0SW5wdXRFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PigndGV4dElucHV0Jyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlucHV0TW9kZWwgPSBuZXcgU2ltcGxlSW5wdXRNb2RlbCh0aGlzKTtcbiAgcHJpdmF0ZSBfd2FzVmlld0luaXQgPSBmYWxzZTtcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3dhc1ZpZXdJbml0ID0gdHJ1ZTtcbiAgICB0aGlzLl9zZXRJbnB1dEF0dHJpYnV0ZXMoKTtcbiAgICAvL3NldCB0aGUgdmFsdWVcbiAgICBpZiAodGhpcy5fdmFsdWVCZWZvcmVJbml0KSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5fdmFsdWVCZWZvcmVJbml0KTtcbiAgICAgIGRlbGV0ZSB0aGlzLl92YWx1ZUJlZm9yZUluaXQ7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgaW5wdXRJZCA9IGlucHV0PE51bGxhYmxlPHN0cmluZz4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNsZWFyQnV0dG9uVGl0bGUgPSBpbnB1dDxzdHJpbmc+KHRoaXMuREVGQVVMVFMuY2xlYXJCdXR0b25UaXRsZSk7XG5cbiAgLy8hIHByZWZpeCAmIHN1ZmZpeFxuICByZWFkb25seSBwcmVmaXhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRTaW1wbGVJbnB1dFByZWZpeFRlbXBsYXRlRGlyZWN0aXZlKTtcbiAgcmVhZG9ubHkgc3VmZml4VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkU2ltcGxlSW5wdXRTdWZmaXhUZW1wbGF0ZURpcmVjdGl2ZSk7XG5cbiAgLy8hIHBsYWNlaG9sZGVyXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkU2ltcGxlSW5wdXRQbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlKTtcblxuICByZWFkb25seSBzaG91bGREaXNwbGF5UGxhY2Vob2xkZXIgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBCb29sZWFuKHRoaXMucGxhY2Vob2xkZXIoKSkgJiYgIXRoaXMuaW5wdXRNb2RlbC52YWx1ZSgpKTtcblxuICAvLyEgYXBwZWFyYW5jZVxuICByZWFkb25seSBhcHBlYXJhbmNlID0gaW5wdXQ8Rm9ybUVsZW1lbnRBcHBlYXJhbmNlPihGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQpO1xuICByZWFkb25seSB2YXJpYW50ID0gaW5wdXQ8Rm9ybUVsZW1lbnRWYXJpYW50PihGb3JtRWxlbWVudFZhcmlhbnQuUm91bmRlZCk7XG4gIHJlYWRvbmx5IGFsaWduVGV4dCA9IGlucHV0PFNpbXBsZU9uZUF4aXNBbGlnbm1lbnQ+KFNpbXBsZU9uZUF4aXNBbGlnbm1lbnQuTGVmdCk7XG5cbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcblxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKTogc3RyaW5nID0+XG4gICAgW1xuICAgICAgYGFyZC1hcHBlYXJhbmNlLSR7dGhpcy5hcHBlYXJhbmNlKCl9YCxcbiAgICAgIGBhcmQtdmFyaWFudC0ke3RoaXMudmFyaWFudCgpfWAsXG4gICAgICBgYXJkLXRleHQtYWxpZ24tJHt0aGlzLmFsaWduVGV4dCgpfWAsXG4gICAgICB0aGlzLmNvbXBhY3QoKSA/ICdhcmQtY29tcGFjdCcgOiAnJyxcbiAgICAgIHRoaXMuY2xlYXJhYmxlKCkgPyAnYXJkLWNsZWFyYWJsZScgOiAnJyxcbiAgICBdLmpvaW4oJyAnKVxuICApO1xuXG4gIC8vISBvdGhlciBpbnB1dHNcbiAgcmVhZG9ubHkgaW5wdXRBdHRycyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIGFueT4+KHt9KTtcblxuICAvLyEgbnVtYmVyIGF0dHJpYnV0ZSBzZXR0ZXJzL2dldHRlcnNcbiAgcmVhZG9ubHkgbWF4TGVuZ3RoID0gaW5wdXQ8TnVsbGFibGU8bnVtYmVyPiwgYW55Pih1bmRlZmluZWQsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIHVuZGVmaW5lZCkgfSk7XG5cbiAgLy8hIG5vLXZhbHVlIGF0dHJpYnV0ZSBzZXR0ZXJzL2dldHRlcnNcbiAgcmVhZG9ubHkgY2xlYXJhYmxlID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xuXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yJ3Mgd3JpdGUgdmFsdWUgaW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZSh2OiBhbnkpIHtcbiAgICB0aGlzLmlucHV0TW9kZWwud3JpdGVWYWx1ZSh2KTtcbiAgfVxuICAvLyEgdmFsdWUgdHdvLXdheSBiaW5kaW5nXG4gIHByb3RlY3RlZCBfdmFsdWVCZWZvcmVJbml0Pzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2OiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl93YXNWaWV3SW5pdCkge1xuICAgICAgdGhpcy5fdmFsdWVCZWZvcmVJbml0ID0gdjtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy53cml0ZVZhbHVlKHYpO1xuICB9XG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dE1vZGVsLnZhbHVlKCk7XG4gIH1cbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8c3RyaW5nIHwgbnVsbD4oKTtcblxuICAvLyEgZXZlbnQgZW1pdHRlcnNcbiAgcmVhZG9ubHkgaW5wdXRFdmVudCA9IG91dHB1dDxzdHJpbmcgfCBudWxsPih7IGFsaWFzOiAnaW5wdXQnIH0pO1xuICByZWFkb25seSBjaGFuZ2VFdmVudCA9IG91dHB1dDxzdHJpbmcgfCBudWxsPih7IGFsaWFzOiAnY2hhbmdlJyB9KTtcbiAgcmVhZG9ubHkgY2xlYXJFdmVudCA9IG91dHB1dDxNb3VzZUV2ZW50Pih7IGFsaWFzOiAnY2xlYXInIH0pO1xuXG4gIC8vISBldmVudCBoYW5kbGVyc1xuICBvbklucHV0KG5ld1ZhbDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVIYXNDaGFuZ2VkID0gdGhpcy5pbnB1dE1vZGVsLndyaXRlVmFsdWUobmV3VmFsKTtcbiAgICBpZiAoIXZhbHVlSGFzQ2hhbmdlZCkgcmV0dXJuO1xuICAgIHRoaXMuX2VtaXRJbnB1dCgpO1xuICB9XG4gIHByb3RlY3RlZCBfZW1pdElucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuaW5wdXRFdmVudC5lbWl0KHRoaXMudmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuICAvL2ZvY3VzLCBibHVyLCBjaGFuZ2VcbiAgb25Gb2N1c01hc3RlcihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIHRoaXMub25Gb2N1cyhldmVudCk7XG4gIH1cbiAgb25CbHVyTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkJsdXIoZXZlbnQpO1xuICB9XG4gIG9uQ2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcbiAgfVxuICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHRoaXMuaW5wdXRNb2RlbC52YWx1ZSgpKTtcbiAgfVxuICAvLyBjbGVhciBidXR0b25cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID0gY29tcHV0ZWQ8Ym9vbGVhbj4oXG4gICAgKCkgPT4gdGhpcy5jbGVhcmFibGUoKSAmJiAhdGhpcy5kaXNhYmxlZCgpICYmIEJvb2xlYW4odGhpcy5pbnB1dE1vZGVsLnZhbHVlKCkpXG4gICk7XG4gIG9uQ2xlYXJCdXR0b25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaW5wdXRNb2RlbC5jbGVhcigpO1xuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcbiAgICB0aGlzLl9lbWl0SW5wdXQoKTtcbiAgICB0aGlzLmNsZWFyRXZlbnQuZW1pdChldmVudCk7XG4gICAgdGhpcy5mb2N1cygpO1xuICB9XG5cbiAgLy8hIGNvcHkgZXZlbnRcbiAgb25Db3B5KGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMudmFsdWUgJiZcbiAgICAgIC8vZG9lcyB0aGUgc2VsZWN0aW9uIGNvdmVyIHRoZSBlbnRpcmUgaW5wdXRcbiAgICAgICgodGhpcy50ZXh0SW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSAwICYmXG4gICAgICAgIHRoaXMudGV4dElucHV0RWwoKT8ubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT09IHRoaXMudGV4dElucHV0RWwoKT8ubmF0aXZlRWxlbWVudC52YWx1ZS5sZW5ndGgpIHx8XG4gICAgICAgIC8vb3IgaXMgemVyby13aWRlXG4gICAgICAgIHRoaXMudGV4dElucHV0RWwoKT8ubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gdGhpcy50ZXh0SW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZClcbiAgICApIHtcbiAgICAgIGV2ZW50LmNsaXBib2FyZERhdGE/LnNldERhdGEoJ3RleHQvcGxhaW4nLCB0aGlzLnZhbHVlKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG4gIC8vISBoZWxwZXJzXG4gIHByb3RlY3RlZCBfc2V0SW5wdXRBdHRyaWJ1dGVzKCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy50ZXh0SW5wdXRFbCgpIS5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBhdXRvY29ycmVjdDogJ29mZicsXG4gICAgICBhdXRvY2FwaXRhbGl6ZTogJ29mZicsXG4gICAgICBhdXRvY29tcGxldGU6ICdvZmYnLFxuICAgICAgdGFiaW5kZXg6IFN0cmluZyh0aGlzLnRhYkluZGV4KCkpLFxuICAgICAgLi4udGhpcy5pbnB1dEF0dHJzKCksXG4gICAgfTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpKSB7XG4gICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoa2V5LCBTdHJpbmcoYXR0cmlidXRlc1trZXldKSk7XG4gICAgfVxuICB9XG59XG4iLCI8YXJkLWZvcm0tZmllbGQtZnJhbWVcbiAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCJcbiAgW3ZhcmlhbnRdPVwidmFyaWFudCgpXCJcbiAgW2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gIFtpc0ZvY3VzZWRdPVwiaXNGb2N1c2VkXCJcbiAgW3ByZWZpeFRlbXBsYXRlXT1cInByZWZpeFRlbXBsYXRlKCk/LnRlbXBsYXRlXCJcbiAgW3N1ZmZpeFRlbXBsYXRlXT1cInN1ZmZpeFRlbXBsYXRlKCk/LnRlbXBsYXRlXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYXJkLXNpbXBsZS1pbnB1dFwiXG4gICAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxuICAgIFtjbGFzcy5hcmQtaGFzLXZhbHVlXT1cInZhbHVlXCJcbiAgICAoY2xpY2spPVwiZm9jdXMoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgQGlmIChzaG91bGREaXNwbGF5UGxhY2Vob2xkZXIoKSkge1xuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAjZGVmYXVsdFBsYWNlaG9sZGVyVGVtcGxhdGVcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlcigpIH19PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBsYWNlaG9sZGVyVGVtcGxhdGUoKT8udGVtcGxhdGUgfHwgZGVmYXVsdFBsYWNlaG9sZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgfVxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgI3RleHRJbnB1dFxuICAgICAgICAjZm9jdXNhYmxlRWxlbWVudFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFthdHRyLmlkXT1cImlucHV0SWQoKVwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQodGV4dElucHV0LnZhbHVlKVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzTWFzdGVyKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXJNYXN0ZXIoJGV2ZW50KVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChjb3B5KT1cIm9uQ29weSgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKHNob3VsZFNob3dDbGVhckJ1dHRvbigpKSB7XG4gICAgICA8YXJkLWNsZWFyLWJ1dHRvblxuICAgICAgICBbdGl0bGVdPVwiY2xlYXJCdXR0b25UaXRsZSgpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXJCdXR0b25DbGljaygkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgfVxuICA8L2Rpdj5cbjwvYXJkLWZvcm0tZmllbGQtZnJhbWU+XG4iXX0=