@skyux/text-editor 11.0.0-alpha.13 → 11.0.0-alpha.14

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.
@@ -171,7 +171,7 @@ export class SkyTextEditorMenubarComponent {
171
171
  this.execCommand('removeFormat');
172
172
  }
173
173
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SkyTextEditorMenubarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
174
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: SkyTextEditorMenubarComponent, isStandalone: true, selector: "sky-text-editor-menubar", inputs: { editorFocusStream: "editorFocusStream", menus: "menus", mergeFields: "mergeFields", disabled: ["disabled", "disabled", booleanAttribute] }, ngImport: i0, template: "<sky-toolbar-item\n *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n>\n @switch (menu) {\n @case ('edit') {\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button\n *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem?.function()\"\n >\n {{ editItem.label }}\n <div\n *ngIf=\"editItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n @case ('format') {\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button\n *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem?.function()\"\n >\n {{ formatItem.label }}\n <div\n *ngIf=\"formatItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n @case ('merge-field') {\n <sky-dropdown\n *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n }\n</sky-toolbar-item>\n", styles: [".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: SkyDropdownModule }, { kind: "component", type: i2.λ2, selector: "sky-dropdown-button" }, { kind: "component", type: i2.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { kind: "component", type: i2.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { kind: "component", type: i2.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { kind: "ngmodule", type: SkyTextEditorResourcesModule }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "ngmodule", type: SkyThemeModule }, { kind: "directive", type: i4.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "ngmodule", type: SkyToolbarModule }, { kind: "component", type: i5.λ39, selector: "sky-toolbar-item" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
174
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: SkyTextEditorMenubarComponent, isStandalone: true, selector: "sky-text-editor-menubar", inputs: { editorFocusStream: "editorFocusStream", menus: "menus", mergeFields: "mergeFields", disabled: ["disabled", "disabled", booleanAttribute] }, ngImport: i0, template: "@for (menu of menus; track menu) {\n <sky-toolbar-item\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n >\n @switch (menu) {\n @case ('edit') {\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n @for (editItem of editItems; track editItem) {\n <sky-dropdown-item>\n @if (!editItem.isDivider) {\n <button type=\"button\" (click)=\"editItem?.function()\">\n {{ editItem.label }}\n @if (editItem.keyShortcut) {\n <div\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n }\n </button>\n } @else {\n <div\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n }\n </sky-dropdown-item>\n }\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n @case ('format') {\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n @for (formatItem of formatItems; track formatItem) {\n <sky-dropdown-item>\n @if (!formatItem.isDivider) {\n <button type=\"button\" (click)=\"formatItem?.function()\">\n {{ formatItem.label }}\n @if (formatItem.keyShortcut) {\n <div\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n }\n </button>\n } @else {\n <div\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n }\n </sky-dropdown-item>\n }\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n @case ('merge-field') {\n @if (mergeFields && mergeFields.length > 0) {\n <sky-dropdown\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n @for (mergeField of mergeFields; track mergeField) {\n <sky-dropdown-item>\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n }\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n }\n }\n </sky-toolbar-item>\n}\n", styles: [".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: SkyDropdownModule }, { kind: "component", type: i2.λ2, selector: "sky-dropdown-button" }, { kind: "component", type: i2.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { kind: "component", type: i2.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { kind: "component", type: i2.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { kind: "ngmodule", type: SkyTextEditorResourcesModule }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "ngmodule", type: SkyThemeModule }, { kind: "directive", type: i4.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "ngmodule", type: SkyToolbarModule }, { kind: "component", type: i5.λ39, selector: "sky-toolbar-item" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
175
175
  }
176
176
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SkyTextEditorMenubarComponent, decorators: [{
177
177
  type: Component,
@@ -181,7 +181,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
181
181
  SkyTextEditorResourcesModule,
182
182
  SkyThemeModule,
183
183
  SkyToolbarModule,
184
- ], template: "<sky-toolbar-item\n *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n>\n @switch (menu) {\n @case ('edit') {\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button\n *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem?.function()\"\n >\n {{ editItem.label }}\n <div\n *ngIf=\"editItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n @case ('format') {\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button\n *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem?.function()\"\n >\n {{ formatItem.label }}\n <div\n *ngIf=\"formatItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n @case ('merge-field') {\n <sky-dropdown\n *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n }\n</sky-toolbar-item>\n", styles: [".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}\n"] }]
184
+ ], template: "@for (menu of menus; track menu) {\n <sky-toolbar-item\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n >\n @switch (menu) {\n @case ('edit') {\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n @for (editItem of editItems; track editItem) {\n <sky-dropdown-item>\n @if (!editItem.isDivider) {\n <button type=\"button\" (click)=\"editItem?.function()\">\n {{ editItem.label }}\n @if (editItem.keyShortcut) {\n <div\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n }\n </button>\n } @else {\n <div\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n }\n </sky-dropdown-item>\n }\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n @case ('format') {\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n @for (formatItem of formatItems; track formatItem) {\n <sky-dropdown-item>\n @if (!formatItem.isDivider) {\n <button type=\"button\" (click)=\"formatItem?.function()\">\n {{ formatItem.label }}\n @if (formatItem.keyShortcut) {\n <div\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n }\n </button>\n } @else {\n <div\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n }\n </sky-dropdown-item>\n }\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n @case ('merge-field') {\n @if (mergeFields && mergeFields.length > 0) {\n <sky-dropdown\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n @for (mergeField of mergeFields; track mergeField) {\n <sky-dropdown-item>\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n }\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n }\n }\n </sky-toolbar-item>\n}\n", styles: [".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}\n"] }]
185
185
  }], propDecorators: { editorFocusStream: [{
186
186
  type: Input
187
187
  }], menus: [{
@@ -192,4 +192,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
192
192
  type: Input,
193
193
  args: [{ transform: booleanAttribute }]
194
194
  }] } });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLGlCQUFpQixHQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7OztBQUl0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dUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQiw0QkFBNEI7d0JBQzVCLGNBQWM7d0JBQ2QsZ0JBQWdCO3FCQUNqQjs4QkFJTSxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lUb29sYmFyTW9kdWxlIH0gZnJvbSAnQHNreXV4L2xheW91dCc7XG5pbXBvcnQge1xuICBTa3lEcm9wZG93bk1lc3NhZ2UsXG4gIFNreURyb3Bkb3duTWVzc2FnZVR5cGUsXG4gIFNreURyb3Bkb3duTW9kdWxlLFxufSBmcm9tICdAc2t5dXgvcG9wb3ZlcnMnO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgaGUgZnJvbSAnaGUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NreS10ZXh0LWVkaXRvci1yZXNvdXJjZXMubW9kdWxlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RleHQtZWRpdG9yLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yTWVudVR5cGUgfSBmcm9tICcuLi90eXBlcy9tZW51LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lcmdlRmllbGQgfSBmcm9tICcuLi90eXBlcy90ZXh0LWVkaXRvci1tZXJnZS1maWVsZCc7XG5cbmNvbnN0IEZPUk1BVF9NRU5VX0FDVElPTiA9ICdza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fJztcbmNvbnN0IEVESVRfTUVOVV9BQ1RJT04gPSAnc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl8nO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdza3ktdGV4dC1lZGl0b3ItbWVudWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci1tZW51YmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lEcm9wZG93bk1vZHVsZSxcbiAgICBTa3lUZXh0RWRpdG9yUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICAgIFNreVRvb2xiYXJNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFZGl0b3JNZW51YmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgZWRpdG9yRm9jdXNTdHJlYW0gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZW51czogU2t5VGV4dEVkaXRvck1lbnVUeXBlW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWVyZ2VGaWVsZHM6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkW10gPSBbXTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgcHVibGljIGVkaXREcm9wZG93blN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcblxuICBwdWJsaWMgZWRpdEl0ZW1zOlxuICAgIHwge1xuICAgICAgICBmdW5jdGlvbj86ICgpID0+IHZvaWQ7XG4gICAgICAgIGlzRGl2aWRlcj86IGJvb2xlYW47XG4gICAgICAgIGxhYmVsPzogc3RyaW5nO1xuICAgICAgICBrZXlTaG9ydGN1dD86IHN0cmluZztcbiAgICAgIH1bXVxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBmb3JtYXREcm9wZG93blN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcblxuICBwdWJsaWMgZm9ybWF0SXRlbXM6XG4gICAgfCB7XG4gICAgICAgIGZ1bmN0aW9uPzogKCkgPT4gdm9pZDtcbiAgICAgICAgaXNEaXZpZGVyPzogYm9vbGVhbjtcbiAgICAgICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgICAgIGtleVNob3J0Y3V0Pzogc3RyaW5nO1xuICAgICAgfVtdXG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIG1lcmdlRmllbGREcm9wZG93blN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgI2FkYXB0ZXJTZXJ2aWNlID0gaW5qZWN0KFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZXMgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yRm9jdXNTdHJlYW1cbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNjbG9zZURyb3Bkb3ducygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNyZXNvdXJjZXNcbiAgICAgIC5nZXRTdHJpbmdzKHtcbiAgICAgICAgYm9sZDogRk9STUFUX01FTlVfQUNUSU9OICsgJ2JvbGRfbGFiZWwnLFxuICAgICAgICBib2xkU2hvcnQ6IEZPUk1BVF9NRU5VX0FDVElPTiArICdib2xkX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIGl0YWxpYzogRk9STUFUX01FTlVfQUNUSU9OICsgJ2l0YWxpY19sYWJlbCcsXG4gICAgICAgIGl0YWxpY1Nob3J0OiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAnaXRhbGljX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHVuZGVybGluZTogRk9STUFUX01FTlVfQUNUSU9OICsgJ3VuZGVybGluZV9sYWJlbCcsXG4gICAgICAgIHVuZGVybGluZVNob3J0OiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAndW5kZXJsaW5lX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHN0cmlrZXRocm91Z2g6IEZPUk1BVF9NRU5VX0FDVElPTiArICdzdHJpa2V0aHJvdWdoX2xhYmVsJyxcbiAgICAgICAgY2xlYXJGb3JtYXR0aW5nOiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAnY2xlYXJfZm9ybWF0dGluZ19sYWJlbCcsXG4gICAgICAgIHVuZG86IEVESVRfTUVOVV9BQ1RJT04gKyAndW5kb19sYWJlbCcsXG4gICAgICAgIHVuZG9TaG9ydDogRURJVF9NRU5VX0FDVElPTiArICd1bmRvX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHJlZG86IEVESVRfTUVOVV9BQ1RJT04gKyAncmVkb19sYWJlbCcsXG4gICAgICAgIHJlZG9TaG9ydDogRURJVF9NRU5VX0FDVElPTiArICdyZWRvX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIGN1dDogRURJVF9NRU5VX0FDVElPTiArICdjdXRfbGFiZWwnLFxuICAgICAgICBjdXRTaG9ydDogRURJVF9NRU5VX0FDVElPTiArICdjdXRfa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgY29weTogRURJVF9NRU5VX0FDVElPTiArICdjb3B5X2xhYmVsJyxcbiAgICAgICAgY29weVNob3J0OiBFRElUX01FTlVfQUNUSU9OICsgJ2NvcHlfa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgcGFzdGU6IEVESVRfTUVOVV9BQ1RJT04gKyAncGFzdGVfbGFiZWwnLFxuICAgICAgICBwYXN0ZVNob3J0OiBFRElUX01FTlVfQUNUSU9OICsgJ3Bhc3RlX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHNlbGVjdEFsbDogRURJVF9NRU5VX0FDVElPTiArICdzZWxlY3RfYWxsX2xhYmVsJyxcbiAgICAgICAgc2VsZWN0QWxsU2hvcnQ6IEVESVRfTUVOVV9BQ1RJT04gKyAnc2VsZWN0X2FsbF9rZXlfc2hvcnRjdXQnLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRha2UoMSksIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlcykgPT4ge1xuICAgICAgICB0aGlzLmZvcm1hdEl0ZW1zID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdib2xkJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLmJvbGQsXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLmJvbGRTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdpdGFsaWMnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuaXRhbGljLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5pdGFsaWNTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCd1bmRlcmxpbmUnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMudW5kZXJsaW5lLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy51bmRlcmxpbmVTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdzdHJpa2V0aHJvdWdoJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnN0cmlrZXRocm91Z2gsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpc0RpdmlkZXI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy4jY2xlYXJGb3JtYXQoKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuY2xlYXJGb3JtYXR0aW5nLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuZWRpdEl0ZW1zID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCd1bmRvJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnVuZG8sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLnVuZG9TaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdyZWRvJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnJlZG8sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLnJlZG9TaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzRGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdjdXQnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuY3V0LFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5jdXRTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdjb3B5JyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLmNvcHksXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLmNvcHlTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdwYXN0ZScpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy5wYXN0ZSxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXMucGFzdGVTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzRGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdzZWxlY3RBbGwnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuc2VsZWN0QWxsLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5zZWxlY3RBbGxTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGV4ZWNDb21tYW5kKGNvbW1hbmQ6IHN0cmluZywgdmFsdWUgPSAnJyk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmV4ZWNDb21tYW5kKHtcbiAgICAgIGNvbW1hbmQ6IGNvbW1hbmQsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5zZXJ0TWVyZ2VGaWVsZChmaWVsZDogU2t5VGV4dEVkaXRvck1lcmdlRmllbGQpOiB2b2lkIHtcbiAgICB0aGlzLmV4ZWNDb21tYW5kKFxuICAgICAgJ2luc2VydEhUTUwnLFxuICAgICAgJzxpbWcgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmU7IGN1cnNvcjogZ3JhYjtcIiBkYXRhLWZpZWxkaWQ9XCInICtcbiAgICAgICAgaGUuZXNjYXBlKGZpZWxkLmlkKSArXG4gICAgICAgICdcIiBkYXRhLWZpZWxkZGlzcGxheT1cIicgK1xuICAgICAgICBoZS5lc2NhcGUoZmllbGQubmFtZSkgK1xuICAgICAgICAnXCIgc3JjPVwiJyArXG4gICAgICAgIChmaWVsZC5wcmV2aWV3SW1hZ2VVcmwgfHxcbiAgICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRNZXJnZUZpZWxkRGF0YVVSSShmaWVsZC5uYW1lKSkgK1xuICAgICAgICAnXCI+JyxcbiAgICApO1xuICB9XG5cbiAgI2Nsb3NlRHJvcGRvd25zKCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdERyb3Bkb3duU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICAgIHRoaXMuZm9ybWF0RHJvcGRvd25TdHJlYW0ubmV4dCh7IHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gICAgdGhpcy5tZXJnZUZpZWxkRHJvcGRvd25TdHJlYW0ubmV4dCh7IHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gIH1cblxuICAjY2xlYXJGb3JtYXQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldEN1cnJlbnRTZWxlY3Rpb24oKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24gJiZcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDAgJiZcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS50b1N0cmluZygpLmxlbmd0aCA8PSAwXG4gICAgKSB7XG4gICAgICB0aGlzLmV4ZWNDb21tYW5kKCdzZWxlY3RBbGwnKTtcbiAgICB9XG4gICAgdGhpcy5leGVjQ29tbWFuZCgncmVtb3ZlRm9ybWF0Jyk7XG4gIH1cbn1cbiIsIjxza3ktdG9vbGJhci1pdGVtXG4gICpuZ0Zvcj1cImxldCBtZW51IG9mIG1lbnVzXCJcbiAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItbWVudVwiXG4gIFtuZ0NsYXNzXT1cIidza3ktdGV4dC1lZGl0b3ItbWVudS0nICsgbWVudVwiXG4+XG4gIEBzd2l0Y2ggKG1lbnUpIHtcbiAgICBAY2FzZSAoJ2VkaXQnKSB7XG4gICAgICA8c2t5LWRyb3Bkb3duXG4gICAgICAgIGxhYmVsPVwiRWRpdCBtZW51XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZWRpdERyb3Bkb3duU3RyZWFtXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9tZW51YmFyX2Ryb3Bkb3duX2J1dHRvbl9lZGl0X2xhYmVsJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgIH19XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgIDxza3ktZHJvcGRvd24taXRlbSAqbmdGb3I9XCJsZXQgZWRpdEl0ZW0gb2YgZWRpdEl0ZW1zXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWVkaXRJdGVtLmlzRGl2aWRlclwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEl0ZW0/LmZ1bmN0aW9uKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBlZGl0SXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0SXRlbS5rZXlTaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItbWVudS1rZXktc2hvcnRjdXRcIlxuICAgICAgICAgICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiAnbW9kZXJuJyxcbiAgICAgICAgICAgICAgICAgICdza3ktZGVlbXBoYXNpemVkJzogJ2RlZmF1bHQnXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBlZGl0SXRlbS5rZXlTaG9ydGN1dCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cImVkaXRJdGVtLmlzRGl2aWRlclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWRyb3Bkb3duLWl0ZW0tZGl2aWRlclwiXG4gICAgICAgICAgICAgIHJvbGU9XCJkaXZpZGVyXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L3NreS1kcm9wZG93bi1pdGVtPlxuICAgICAgICA8L3NreS1kcm9wZG93bi1tZW51PlxuICAgICAgPC9za3ktZHJvcGRvd24+XG4gICAgfVxuICAgIEBjYXNlICgnZm9ybWF0Jykge1xuICAgICAgPHNreS1kcm9wZG93blxuICAgICAgICBsYWJlbD1cIkZvcm1hdCBtZW51XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZm9ybWF0RHJvcGRvd25TdHJlYW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2Zvcm1hdF9sYWJlbCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICB9fVxuICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0gKm5nRm9yPVwibGV0IGZvcm1hdEl0ZW0gb2YgZm9ybWF0SXRlbXNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCIhZm9ybWF0SXRlbS5pc0RpdmlkZXJcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdEl0ZW0/LmZ1bmN0aW9uKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBmb3JtYXRJdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm1hdEl0ZW0ua2V5U2hvcnRjdXRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLW1lbnUta2V5LXNob3J0Y3V0XCJcbiAgICAgICAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogJ21vZGVybicsXG4gICAgICAgICAgICAgICAgICAnc2t5LWRlZW1waGFzaXplZCc6ICdkZWZhdWx0J1xuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0SXRlbS5rZXlTaG9ydGN1dCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cImZvcm1hdEl0ZW0uaXNEaXZpZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItZHJvcGRvd24taXRlbS1kaXZpZGVyXCJcbiAgICAgICAgICAgICAgcm9sZT1cImRpdmlkZXJcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvc2t5LWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICA8L3NreS1kcm9wZG93bj5cbiAgICB9XG4gICAgQGNhc2UgKCdtZXJnZS1maWVsZCcpIHtcbiAgICAgIDxza3ktZHJvcGRvd25cbiAgICAgICAgKm5nSWY9XCJtZXJnZUZpZWxkcyAmJiBtZXJnZUZpZWxkcy5sZW5ndGggPiAwXCJcbiAgICAgICAgbGFiZWw9XCJJbnNlcnQgbWVyZ2UgZmllbGRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbbWVzc2FnZVN0cmVhbV09XCJtZXJnZUZpZWxkRHJvcGRvd25TdHJlYW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2luc2VydF9sYWJlbCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICB9fVxuICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0gKm5nRm9yPVwibGV0IG1lcmdlRmllbGQgb2YgbWVyZ2VGaWVsZHNcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJpbnNlcnRNZXJnZUZpZWxkKG1lcmdlRmllbGQpXCI+XG4gICAgICAgICAgICAgIHt7IG1lcmdlRmllbGQubmFtZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIH1cbiAgfVxuPC9za3ktdG9vbGJhci1pdGVtPlxuIl19
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLGlCQUFpQixHQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7OztBQUl0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dUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQiw0QkFBNEI7d0JBQzVCLGNBQWM7d0JBQ2QsZ0JBQWdCO3FCQUNqQjs4QkFJTSxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lUb29sYmFyTW9kdWxlIH0gZnJvbSAnQHNreXV4L2xheW91dCc7XG5pbXBvcnQge1xuICBTa3lEcm9wZG93bk1lc3NhZ2UsXG4gIFNreURyb3Bkb3duTWVzc2FnZVR5cGUsXG4gIFNreURyb3Bkb3duTW9kdWxlLFxufSBmcm9tICdAc2t5dXgvcG9wb3ZlcnMnO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgaGUgZnJvbSAnaGUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NreS10ZXh0LWVkaXRvci1yZXNvdXJjZXMubW9kdWxlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RleHQtZWRpdG9yLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yTWVudVR5cGUgfSBmcm9tICcuLi90eXBlcy9tZW51LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lcmdlRmllbGQgfSBmcm9tICcuLi90eXBlcy90ZXh0LWVkaXRvci1tZXJnZS1maWVsZCc7XG5cbmNvbnN0IEZPUk1BVF9NRU5VX0FDVElPTiA9ICdza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fJztcbmNvbnN0IEVESVRfTUVOVV9BQ1RJT04gPSAnc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl8nO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdza3ktdGV4dC1lZGl0b3ItbWVudWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci1tZW51YmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lEcm9wZG93bk1vZHVsZSxcbiAgICBTa3lUZXh0RWRpdG9yUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICAgIFNreVRvb2xiYXJNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFZGl0b3JNZW51YmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgZWRpdG9yRm9jdXNTdHJlYW0gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZW51czogU2t5VGV4dEVkaXRvck1lbnVUeXBlW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWVyZ2VGaWVsZHM6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkW10gPSBbXTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgcHVibGljIGVkaXREcm9wZG93blN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcblxuICBwdWJsaWMgZWRpdEl0ZW1zOlxuICAgIHwge1xuICAgICAgICBmdW5jdGlvbj86ICgpID0+IHZvaWQ7XG4gICAgICAgIGlzRGl2aWRlcj86IGJvb2xlYW47XG4gICAgICAgIGxhYmVsPzogc3RyaW5nO1xuICAgICAgICBrZXlTaG9ydGN1dD86IHN0cmluZztcbiAgICAgIH1bXVxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBmb3JtYXREcm9wZG93blN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcblxuICBwdWJsaWMgZm9ybWF0SXRlbXM6XG4gICAgfCB7XG4gICAgICAgIGZ1bmN0aW9uPzogKCkgPT4gdm9pZDtcbiAgICAgICAgaXNEaXZpZGVyPzogYm9vbGVhbjtcbiAgICAgICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgICAgIGtleVNob3J0Y3V0Pzogc3RyaW5nO1xuICAgICAgfVtdXG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIG1lcmdlRmllbGREcm9wZG93blN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgI2FkYXB0ZXJTZXJ2aWNlID0gaW5qZWN0KFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZXMgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yRm9jdXNTdHJlYW1cbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNjbG9zZURyb3Bkb3ducygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNyZXNvdXJjZXNcbiAgICAgIC5nZXRTdHJpbmdzKHtcbiAgICAgICAgYm9sZDogRk9STUFUX01FTlVfQUNUSU9OICsgJ2JvbGRfbGFiZWwnLFxuICAgICAgICBib2xkU2hvcnQ6IEZPUk1BVF9NRU5VX0FDVElPTiArICdib2xkX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIGl0YWxpYzogRk9STUFUX01FTlVfQUNUSU9OICsgJ2l0YWxpY19sYWJlbCcsXG4gICAgICAgIGl0YWxpY1Nob3J0OiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAnaXRhbGljX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHVuZGVybGluZTogRk9STUFUX01FTlVfQUNUSU9OICsgJ3VuZGVybGluZV9sYWJlbCcsXG4gICAgICAgIHVuZGVybGluZVNob3J0OiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAndW5kZXJsaW5lX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHN0cmlrZXRocm91Z2g6IEZPUk1BVF9NRU5VX0FDVElPTiArICdzdHJpa2V0aHJvdWdoX2xhYmVsJyxcbiAgICAgICAgY2xlYXJGb3JtYXR0aW5nOiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAnY2xlYXJfZm9ybWF0dGluZ19sYWJlbCcsXG4gICAgICAgIHVuZG86IEVESVRfTUVOVV9BQ1RJT04gKyAndW5kb19sYWJlbCcsXG4gICAgICAgIHVuZG9TaG9ydDogRURJVF9NRU5VX0FDVElPTiArICd1bmRvX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHJlZG86IEVESVRfTUVOVV9BQ1RJT04gKyAncmVkb19sYWJlbCcsXG4gICAgICAgIHJlZG9TaG9ydDogRURJVF9NRU5VX0FDVElPTiArICdyZWRvX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIGN1dDogRURJVF9NRU5VX0FDVElPTiArICdjdXRfbGFiZWwnLFxuICAgICAgICBjdXRTaG9ydDogRURJVF9NRU5VX0FDVElPTiArICdjdXRfa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgY29weTogRURJVF9NRU5VX0FDVElPTiArICdjb3B5X2xhYmVsJyxcbiAgICAgICAgY29weVNob3J0OiBFRElUX01FTlVfQUNUSU9OICsgJ2NvcHlfa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgcGFzdGU6IEVESVRfTUVOVV9BQ1RJT04gKyAncGFzdGVfbGFiZWwnLFxuICAgICAgICBwYXN0ZVNob3J0OiBFRElUX01FTlVfQUNUSU9OICsgJ3Bhc3RlX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHNlbGVjdEFsbDogRURJVF9NRU5VX0FDVElPTiArICdzZWxlY3RfYWxsX2xhYmVsJyxcbiAgICAgICAgc2VsZWN0QWxsU2hvcnQ6IEVESVRfTUVOVV9BQ1RJT04gKyAnc2VsZWN0X2FsbF9rZXlfc2hvcnRjdXQnLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRha2UoMSksIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlcykgPT4ge1xuICAgICAgICB0aGlzLmZvcm1hdEl0ZW1zID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdib2xkJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLmJvbGQsXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLmJvbGRTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdpdGFsaWMnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuaXRhbGljLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5pdGFsaWNTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCd1bmRlcmxpbmUnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMudW5kZXJsaW5lLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy51bmRlcmxpbmVTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdzdHJpa2V0aHJvdWdoJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnN0cmlrZXRocm91Z2gsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpc0RpdmlkZXI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy4jY2xlYXJGb3JtYXQoKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuY2xlYXJGb3JtYXR0aW5nLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuZWRpdEl0ZW1zID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCd1bmRvJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnVuZG8sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLnVuZG9TaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdyZWRvJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnJlZG8sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLnJlZG9TaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzRGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdjdXQnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuY3V0LFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5jdXRTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdjb3B5JyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLmNvcHksXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLmNvcHlTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdwYXN0ZScpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy5wYXN0ZSxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXMucGFzdGVTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzRGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdzZWxlY3RBbGwnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuc2VsZWN0QWxsLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5zZWxlY3RBbGxTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGV4ZWNDb21tYW5kKGNvbW1hbmQ6IHN0cmluZywgdmFsdWUgPSAnJyk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmV4ZWNDb21tYW5kKHtcbiAgICAgIGNvbW1hbmQ6IGNvbW1hbmQsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5zZXJ0TWVyZ2VGaWVsZChmaWVsZDogU2t5VGV4dEVkaXRvck1lcmdlRmllbGQpOiB2b2lkIHtcbiAgICB0aGlzLmV4ZWNDb21tYW5kKFxuICAgICAgJ2luc2VydEhUTUwnLFxuICAgICAgJzxpbWcgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmU7IGN1cnNvcjogZ3JhYjtcIiBkYXRhLWZpZWxkaWQ9XCInICtcbiAgICAgICAgaGUuZXNjYXBlKGZpZWxkLmlkKSArXG4gICAgICAgICdcIiBkYXRhLWZpZWxkZGlzcGxheT1cIicgK1xuICAgICAgICBoZS5lc2NhcGUoZmllbGQubmFtZSkgK1xuICAgICAgICAnXCIgc3JjPVwiJyArXG4gICAgICAgIChmaWVsZC5wcmV2aWV3SW1hZ2VVcmwgfHxcbiAgICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRNZXJnZUZpZWxkRGF0YVVSSShmaWVsZC5uYW1lKSkgK1xuICAgICAgICAnXCI+JyxcbiAgICApO1xuICB9XG5cbiAgI2Nsb3NlRHJvcGRvd25zKCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdERyb3Bkb3duU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICAgIHRoaXMuZm9ybWF0RHJvcGRvd25TdHJlYW0ubmV4dCh7IHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gICAgdGhpcy5tZXJnZUZpZWxkRHJvcGRvd25TdHJlYW0ubmV4dCh7IHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gIH1cblxuICAjY2xlYXJGb3JtYXQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldEN1cnJlbnRTZWxlY3Rpb24oKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24gJiZcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDAgJiZcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS50b1N0cmluZygpLmxlbmd0aCA8PSAwXG4gICAgKSB7XG4gICAgICB0aGlzLmV4ZWNDb21tYW5kKCdzZWxlY3RBbGwnKTtcbiAgICB9XG4gICAgdGhpcy5leGVjQ29tbWFuZCgncmVtb3ZlRm9ybWF0Jyk7XG4gIH1cbn1cbiIsIkBmb3IgKG1lbnUgb2YgbWVudXM7IHRyYWNrIG1lbnUpIHtcbiAgPHNreS10b29sYmFyLWl0ZW1cbiAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1tZW51XCJcbiAgICBbbmdDbGFzc109XCInc2t5LXRleHQtZWRpdG9yLW1lbnUtJyArIG1lbnVcIlxuICA+XG4gICAgQHN3aXRjaCAobWVudSkge1xuICAgICAgQGNhc2UgKCdlZGl0Jykge1xuICAgICAgICA8c2t5LWRyb3Bkb3duXG4gICAgICAgICAgbGFiZWw9XCJFZGl0IG1lbnVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZWRpdERyb3Bkb3duU3RyZWFtXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2VkaXRfbGFiZWwnXG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICAgIEBmb3IgKGVkaXRJdGVtIG9mIGVkaXRJdGVtczsgdHJhY2sgZWRpdEl0ZW0pIHtcbiAgICAgICAgICAgICAgPHNreS1kcm9wZG93bi1pdGVtPlxuICAgICAgICAgICAgICAgIEBpZiAoIWVkaXRJdGVtLmlzRGl2aWRlcikge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImVkaXRJdGVtPy5mdW5jdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGVkaXRJdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZWRpdEl0ZW0ua2V5U2hvcnRjdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1tZW51LWtleS1zaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiAnbW9kZXJuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NreS1kZWVtcGhhc2l6ZWQnOiAnZGVmYXVsdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVkaXRJdGVtLmtleVNob3J0Y3V0IH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1kcm9wZG93bi1pdGVtLWRpdmlkZXJcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiZGl2aWRlclwiXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3NreS1kcm9wZG93bi1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgICAgfVxuICAgICAgQGNhc2UgKCdmb3JtYXQnKSB7XG4gICAgICAgIDxza3ktZHJvcGRvd25cbiAgICAgICAgICBsYWJlbD1cIkZvcm1hdCBtZW51XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIFttZXNzYWdlU3RyZWFtXT1cImZvcm1hdERyb3Bkb3duU3RyZWFtXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2Zvcm1hdF9sYWJlbCdcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgICAgQGZvciAoZm9ybWF0SXRlbSBvZiBmb3JtYXRJdGVtczsgdHJhY2sgZm9ybWF0SXRlbSkge1xuICAgICAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgICAgICAgICAgQGlmICghZm9ybWF0SXRlbS5pc0RpdmlkZXIpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJmb3JtYXRJdGVtPy5mdW5jdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdEl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChmb3JtYXRJdGVtLmtleVNob3J0Y3V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItbWVudS1rZXktc2hvcnRjdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogJ21vZGVybicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdza3ktZGVlbXBoYXNpemVkJzogJ2RlZmF1bHQnXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRJdGVtLmtleVNob3J0Y3V0IH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1kcm9wZG93bi1pdGVtLWRpdmlkZXJcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiZGl2aWRlclwiXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3NreS1kcm9wZG93bi1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgICAgfVxuICAgICAgQGNhc2UgKCdtZXJnZS1maWVsZCcpIHtcbiAgICAgICAgQGlmIChtZXJnZUZpZWxkcyAmJiBtZXJnZUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgPHNreS1kcm9wZG93blxuICAgICAgICAgICAgbGFiZWw9XCJJbnNlcnQgbWVyZ2UgZmllbGRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFttZXNzYWdlU3RyZWFtXT1cIm1lcmdlRmllbGREcm9wZG93blN0cmVhbVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2luc2VydF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAgICA8c2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICAgICAgICAgIEBmb3IgKG1lcmdlRmllbGQgb2YgbWVyZ2VGaWVsZHM7IHRyYWNrIG1lcmdlRmllbGQpIHtcbiAgICAgICAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiaW5zZXJ0TWVyZ2VGaWVsZChtZXJnZUZpZWxkKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtZXJnZUZpZWxkLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvc2t5LWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIDwvc2t5LXRvb2xiYXItaXRlbT5cbn1cbiJdfQ==
@@ -431,12 +431,12 @@ export class SkyTextEditorComponent {
431
431
  /* istanbul ignore next */
432
432
  #_onChange;
433
433
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SkyTextEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
434
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.1.2", type: SkyTextEditorComponent, isStandalone: true, selector: "sky-text-editor", inputs: { autofocus: "autofocus", disabled: ["disabled", "disabled", booleanAttribute], fontList: "fontList", fontSizeList: "fontSizeList", helpPopoverContent: "helpPopoverContent", helpPopoverTitle: "helpPopoverTitle", hintText: "hintText", id: "id", initialStyleState: "initialStyleState", labelText: "labelText", menus: "menus", mergeFields: "mergeFields", placeholder: "placeholder", stacked: ["stacked", "stacked", booleanAttribute], toolbarActions: "toolbarActions", linkWindowOptions: "linkWindowOptions", helpKey: "helpKey" }, host: { properties: { "class.sky-margin-stacked-lg": "this.stacked", "class.sky-form-control": "this.formControlClass" } }, providers: [
434
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: SkyTextEditorComponent, isStandalone: true, selector: "sky-text-editor", inputs: { autofocus: "autofocus", disabled: ["disabled", "disabled", booleanAttribute], fontList: "fontList", fontSizeList: "fontSizeList", helpPopoverContent: "helpPopoverContent", helpPopoverTitle: "helpPopoverTitle", hintText: "hintText", id: "id", initialStyleState: "initialStyleState", labelText: "labelText", menus: "menus", mergeFields: "mergeFields", placeholder: "placeholder", stacked: ["stacked", "stacked", booleanAttribute], toolbarActions: "toolbarActions", linkWindowOptions: "linkWindowOptions", helpKey: "helpKey" }, host: { properties: { "class.sky-margin-stacked-lg": "this.stacked", "class.sky-form-control": "this.formControlClass" } }, providers: [
435
435
  SkyTextEditorService,
436
436
  SkyTextEditorSelectionService,
437
437
  SkyTextEditorAdapterService,
438
438
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
439
- ], viewQueries: [{ propertyName: "iframeRef", first: true, predicate: ["iframe"], descendants: true }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }], hostDirectives: [{ directive: i1.SkyFormFieldLabelTextRequiredDirective, inputs: ["labelText", "labelText"] }, { directive: i1.SkyRequiredStateDirective, inputs: ["required", "required"] }], ngImport: i0, template: "<div\n class=\"sky-text-editor\"\n [ngClass]=\"{\n 'sky-text-editor-disabled': disabled,\n 'sky-text-editor-wrapper-focused': editorFocused,\n 'sky-text-editor-invalid':\n ngControl.errors && (ngControl.touched || ngControl.dirty),\n 'sky-margin-stacked-xs': !!hintText\n }\"\n>\n <div class=\"sky-text-editor-label-wrapper\">\n <ng-container *ngIf=\"labelText\">\n <label\n class=\"sky-control-label\"\n [ngClass]=\"{\n 'sky-control-label-required': requiredState.isRequired(),\n 'sky-margin-inline-xs': helpPopoverContent\n }\"\n >{{ labelText }}</label\n >\n <sky-help-inline\n *ngIf=\"helpPopoverContent || helpKey\"\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n </ng-container>\n </div>\n <sky-toolbar\n *ngIf=\"\n (menus && menus.length) > 0 ||\n (toolbarActions && toolbarActions.length > 0)\n \"\n class=\"sky-text-editor-toolbar\"\n >\n <sky-toolbar-section\n *ngIf=\"menus && menus.length > 0\"\n aria-label=\"Text formatting\"\n class=\"menubar\"\n role=\"toolbar\"\n >\n <sky-text-editor-menubar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [menus]=\"menus\"\n [mergeFields]=\"mergeFields\"\n >\n </sky-text-editor-menubar>\n </sky-toolbar-section>\n <sky-toolbar-section\n *ngIf=\"toolbarActions && toolbarActions.length > 0\"\n aria-label=\"Text formatting\"\n class=\"toolbar\"\n role=\"toolbar\"\n >\n <sky-text-editor-toolbar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [fontList]=\"fontList\"\n [fontSizeList]=\"fontSizeList\"\n [linkWindowOptions]=\"linkWindowOptions\"\n [toolbarActions]=\"toolbarActions\"\n [styleState]=\"initialStyleState\"\n >\n </sky-text-editor-toolbar>\n </sky-toolbar-section>\n </sky-toolbar>\n <iframe\n class=\"sky-text-editor-wrapper\"\n src=\"about:blank\"\n [attr.title]=\"\n labelText || ('skyux_text_editor_iframe_title_default' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [ngClass]=\"{\n 'sky-text-editor-wrapper-disabled': disabled\n }\"\n (load)=\"onIframeLoad()\"\n #iframe\n allow=\"clipboard-read *; clipboard-write *\"\n >\n </iframe>\n</div>\n<div\n skyId\n [ngClass]=\"{\n 'sky-font-deemphasized sky-text-editor-hint-text': !!hintText\n }\"\n #hintTextEl=\"skyId\"\n>\n {{ hintText }}\n</div>\n<sky-form-errors\n class=\"sky-text-editor-errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl.errors\"\n [labelText]=\"labelText\"\n [touched]=\"ngControl.touched\"\n [dirty]=\"ngControl.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n", styles: ["sky-text-editor.sky-margin-stacked-lg{display:block}.sky-text-editor.sky-text-editor-disabled .sky-toolbar *,.sky-text-editor.sky-text-editor-disabled .sky-text-editor-wrapper *{color:var(--sky-text-color-deemphasized)!important}.sky-text-editor .sky-text-editor-label-wrapper{display:flex;width:100%}.sky-text-editor .sky-text-editor-wrapper{display:flex;flex-wrap:wrap;background-color:#fff;width:100%;height:300px;padding:1rem;font-size:1.2rem;border:1px solid #cdcfd2;border-top:none;overflow-y:auto;outline:none}.sky-text-editor .sky-text-editor-wrapper.sky-text-editor-wrapper-disabled{background-color:var(--sky-background-color-disabled)}.sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}.sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{box-shadow:0 0 8px #00b4f199;border:1px solid var(--sky-highlight-color-info);outline:none}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-dropdown-button{border:none}.sky-text-editor .sky-text-editor-toolbar sky-text-editor-menubar,.sky-text-editor .sky-text-editor-toolbar sky-text-editor-toolbar{display:flex;flex-wrap:wrap}.sky-theme-modern .sky-text-editor{border:none;box-shadow:inset 0 0 0 1px #d2d2d2;border-radius:6px}.sky-theme-modern .sky-text-editor.sky-text-editor-disabled{background-color:var(--sky-background-color-disabled);cursor:not-allowed}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty){display:inline-block;padding:10px 10px 0;width:100%;color:#686c73;transition:border-color .15s,box-shadow .15s,color .15s}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty) label{font-size:13px;margin-bottom:0}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-label-wrapper{color:var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-label-wrapper{color:#1870b8}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 3px #0000004d}.sky-theme-modern .sky-text-editor:not(.sky-text-editor-wrapper-focused) .sky-text-editor-wrapper:hover{border:none;box-shadow:inset 0 0 0 1px #1870b8}.sky-theme-modern .sky-text-editor .sky-text-editor-wrapper{transition:border-color .15s,box-shadow .15s,color .15s;box-shadow:inset 0 0 0 1px #d2d2d2;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border:none}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar{padding:10px 10px 0}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px!important;border-top:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar sky-toolbar-section:not(:last-of-type) .sky-toolbar-section{padding-bottom:0!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:none!important;border-right:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 0 0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: SkyHelpInlineModule }, { kind: "component", type: i3.λ1, selector: "sky-help-inline", inputs: ["ariaControls", "ariaExpanded", "ariaLabel", "helpKey", "labelledBy", "labelText", "popoverContent", "popoverTitle"], outputs: ["actionClick"] }, { kind: "ngmodule", type: SkyIdModule }, { kind: "directive", type: i4.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: SkyTextEditorMenubarComponent, selector: "sky-text-editor-menubar", inputs: ["editorFocusStream", "menus", "mergeFields", "disabled"] }, { kind: "component", type: SkyTextEditorToolbarComponent, selector: "sky-text-editor-toolbar", inputs: ["editorFocusStream", "fontList", "fontSizeList", "toolbarActions", "linkWindowOptions", "styleState", "disabled"] }, { kind: "ngmodule", type: SkyToolbarModule }, { kind: "component", type: i5.λ37, selector: "sky-toolbar", inputs: ["listDescriptor"] }, { kind: "component", type: i5.λ38, selector: "sky-toolbar-section" }, { kind: "ngmodule", type: SkyFormErrorsModule }, { kind: "component", type: i1.λ21, selector: "sky-form-errors", inputs: ["errors", "labelText", "touched", "dirty"] }, { kind: "ngmodule", type: SkyTextEditorResourcesModule }, { kind: "pipe", type: i6.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
439
+ ], viewQueries: [{ propertyName: "iframeRef", first: true, predicate: ["iframe"], descendants: true }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }], hostDirectives: [{ directive: i1.SkyFormFieldLabelTextRequiredDirective, inputs: ["labelText", "labelText"] }, { directive: i1.SkyRequiredStateDirective, inputs: ["required", "required"] }], ngImport: i0, template: "<div\n class=\"sky-text-editor\"\n [ngClass]=\"{\n 'sky-text-editor-disabled': disabled,\n 'sky-text-editor-wrapper-focused': editorFocused,\n 'sky-text-editor-invalid':\n ngControl.errors && (ngControl.touched || ngControl.dirty),\n 'sky-margin-stacked-xs': !!hintText\n }\"\n>\n <div class=\"sky-text-editor-label-wrapper\">\n @if (labelText) {\n <label\n class=\"sky-control-label\"\n [ngClass]=\"{\n 'sky-control-label-required': requiredState.isRequired(),\n 'sky-margin-inline-xs': helpPopoverContent\n }\"\n >{{ labelText }}</label\n >\n @if (helpPopoverContent || helpKey) {\n <sky-help-inline\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n }\n }\n </div>\n @if (\n (menus && menus.length) > 0 || (toolbarActions && toolbarActions.length > 0)\n ) {\n <sky-toolbar class=\"sky-text-editor-toolbar\">\n @if (menus && menus.length > 0) {\n <sky-toolbar-section\n aria-label=\"Text formatting\"\n class=\"menubar\"\n role=\"toolbar\"\n >\n <sky-text-editor-menubar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [menus]=\"menus\"\n [mergeFields]=\"mergeFields\"\n />\n </sky-toolbar-section>\n }\n @if (toolbarActions && toolbarActions.length > 0) {\n <sky-toolbar-section\n aria-label=\"Text formatting\"\n class=\"toolbar\"\n role=\"toolbar\"\n >\n <sky-text-editor-toolbar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [fontList]=\"fontList\"\n [fontSizeList]=\"fontSizeList\"\n [linkWindowOptions]=\"linkWindowOptions\"\n [toolbarActions]=\"toolbarActions\"\n [styleState]=\"initialStyleState\"\n />\n </sky-toolbar-section>\n }\n </sky-toolbar>\n }\n <iframe\n #iframe\n class=\"sky-text-editor-wrapper\"\n src=\"about:blank\"\n allow=\"clipboard-read *; clipboard-write *\"\n [attr.title]=\"\n labelText || ('skyux_text_editor_iframe_title_default' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [ngClass]=\"{\n 'sky-text-editor-wrapper-disabled': disabled\n }\"\n (load)=\"onIframeLoad()\"\n >\n </iframe>\n</div>\n<div\n #hintTextEl=\"skyId\"\n skyId\n [ngClass]=\"{\n 'sky-font-deemphasized sky-text-editor-hint-text': !!hintText\n }\"\n>\n {{ hintText }}\n</div>\n<sky-form-errors\n class=\"sky-text-editor-errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl.errors\"\n [labelText]=\"labelText\"\n [touched]=\"ngControl.touched\"\n [dirty]=\"ngControl.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n", styles: ["sky-text-editor.sky-margin-stacked-lg{display:block}.sky-text-editor.sky-text-editor-disabled .sky-toolbar *,.sky-text-editor.sky-text-editor-disabled .sky-text-editor-wrapper *{color:var(--sky-text-color-deemphasized)!important}.sky-text-editor .sky-text-editor-label-wrapper{display:flex;width:100%}.sky-text-editor .sky-text-editor-wrapper{display:flex;flex-wrap:wrap;background-color:#fff;width:100%;height:300px;padding:1rem;font-size:1.2rem;border:1px solid #cdcfd2;border-top:none;overflow-y:auto;outline:none}.sky-text-editor .sky-text-editor-wrapper.sky-text-editor-wrapper-disabled{background-color:var(--sky-background-color-disabled)}.sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}.sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{box-shadow:0 0 8px #00b4f199;border:1px solid var(--sky-highlight-color-info);outline:none}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-dropdown-button{border:none}.sky-text-editor .sky-text-editor-toolbar sky-text-editor-menubar,.sky-text-editor .sky-text-editor-toolbar sky-text-editor-toolbar{display:flex;flex-wrap:wrap}.sky-theme-modern .sky-text-editor{border:none;box-shadow:inset 0 0 0 1px #d2d2d2;border-radius:6px}.sky-theme-modern .sky-text-editor.sky-text-editor-disabled{background-color:var(--sky-background-color-disabled);cursor:not-allowed}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty){display:inline-block;padding:10px 10px 0;width:100%;color:#686c73;transition:border-color .15s,box-shadow .15s,color .15s}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty) label{font-size:13px;margin-bottom:0}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-label-wrapper{color:var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-label-wrapper{color:#1870b8}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 3px #0000004d}.sky-theme-modern .sky-text-editor:not(.sky-text-editor-wrapper-focused) .sky-text-editor-wrapper:hover{border:none;box-shadow:inset 0 0 0 1px #1870b8}.sky-theme-modern .sky-text-editor .sky-text-editor-wrapper{transition:border-color .15s,box-shadow .15s,color .15s;box-shadow:inset 0 0 0 1px #d2d2d2;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border:none}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar{padding:10px 10px 0}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px!important;border-top:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar sky-toolbar-section:not(:last-of-type) .sky-toolbar-section{padding-bottom:0!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:none!important;border-right:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 0 0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: SkyHelpInlineModule }, { kind: "component", type: i3.λ1, selector: "sky-help-inline", inputs: ["ariaControls", "ariaExpanded", "ariaLabel", "helpKey", "labelledBy", "labelText", "popoverContent", "popoverTitle"], outputs: ["actionClick"] }, { kind: "ngmodule", type: SkyIdModule }, { kind: "directive", type: i4.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: SkyTextEditorMenubarComponent, selector: "sky-text-editor-menubar", inputs: ["editorFocusStream", "menus", "mergeFields", "disabled"] }, { kind: "component", type: SkyTextEditorToolbarComponent, selector: "sky-text-editor-toolbar", inputs: ["editorFocusStream", "fontList", "fontSizeList", "toolbarActions", "linkWindowOptions", "styleState", "disabled"] }, { kind: "ngmodule", type: SkyToolbarModule }, { kind: "component", type: i5.λ37, selector: "sky-toolbar", inputs: ["listDescriptor"] }, { kind: "component", type: i5.λ38, selector: "sky-toolbar-section" }, { kind: "ngmodule", type: SkyFormErrorsModule }, { kind: "component", type: i1.λ21, selector: "sky-form-errors", inputs: ["errors", "labelText", "touched", "dirty"] }, { kind: "ngmodule", type: SkyTextEditorResourcesModule }, { kind: "pipe", type: i6.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
440
440
  }
441
441
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SkyTextEditorComponent, decorators: [{
442
442
  type: Component,
@@ -463,7 +463,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
463
463
  SkyToolbarModule,
464
464
  SkyFormErrorsModule,
465
465
  SkyTextEditorResourcesModule,
466
- ], template: "<div\n class=\"sky-text-editor\"\n [ngClass]=\"{\n 'sky-text-editor-disabled': disabled,\n 'sky-text-editor-wrapper-focused': editorFocused,\n 'sky-text-editor-invalid':\n ngControl.errors && (ngControl.touched || ngControl.dirty),\n 'sky-margin-stacked-xs': !!hintText\n }\"\n>\n <div class=\"sky-text-editor-label-wrapper\">\n <ng-container *ngIf=\"labelText\">\n <label\n class=\"sky-control-label\"\n [ngClass]=\"{\n 'sky-control-label-required': requiredState.isRequired(),\n 'sky-margin-inline-xs': helpPopoverContent\n }\"\n >{{ labelText }}</label\n >\n <sky-help-inline\n *ngIf=\"helpPopoverContent || helpKey\"\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n </ng-container>\n </div>\n <sky-toolbar\n *ngIf=\"\n (menus && menus.length) > 0 ||\n (toolbarActions && toolbarActions.length > 0)\n \"\n class=\"sky-text-editor-toolbar\"\n >\n <sky-toolbar-section\n *ngIf=\"menus && menus.length > 0\"\n aria-label=\"Text formatting\"\n class=\"menubar\"\n role=\"toolbar\"\n >\n <sky-text-editor-menubar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [menus]=\"menus\"\n [mergeFields]=\"mergeFields\"\n >\n </sky-text-editor-menubar>\n </sky-toolbar-section>\n <sky-toolbar-section\n *ngIf=\"toolbarActions && toolbarActions.length > 0\"\n aria-label=\"Text formatting\"\n class=\"toolbar\"\n role=\"toolbar\"\n >\n <sky-text-editor-toolbar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [fontList]=\"fontList\"\n [fontSizeList]=\"fontSizeList\"\n [linkWindowOptions]=\"linkWindowOptions\"\n [toolbarActions]=\"toolbarActions\"\n [styleState]=\"initialStyleState\"\n >\n </sky-text-editor-toolbar>\n </sky-toolbar-section>\n </sky-toolbar>\n <iframe\n class=\"sky-text-editor-wrapper\"\n src=\"about:blank\"\n [attr.title]=\"\n labelText || ('skyux_text_editor_iframe_title_default' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [ngClass]=\"{\n 'sky-text-editor-wrapper-disabled': disabled\n }\"\n (load)=\"onIframeLoad()\"\n #iframe\n allow=\"clipboard-read *; clipboard-write *\"\n >\n </iframe>\n</div>\n<div\n skyId\n [ngClass]=\"{\n 'sky-font-deemphasized sky-text-editor-hint-text': !!hintText\n }\"\n #hintTextEl=\"skyId\"\n>\n {{ hintText }}\n</div>\n<sky-form-errors\n class=\"sky-text-editor-errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl.errors\"\n [labelText]=\"labelText\"\n [touched]=\"ngControl.touched\"\n [dirty]=\"ngControl.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n", styles: ["sky-text-editor.sky-margin-stacked-lg{display:block}.sky-text-editor.sky-text-editor-disabled .sky-toolbar *,.sky-text-editor.sky-text-editor-disabled .sky-text-editor-wrapper *{color:var(--sky-text-color-deemphasized)!important}.sky-text-editor .sky-text-editor-label-wrapper{display:flex;width:100%}.sky-text-editor .sky-text-editor-wrapper{display:flex;flex-wrap:wrap;background-color:#fff;width:100%;height:300px;padding:1rem;font-size:1.2rem;border:1px solid #cdcfd2;border-top:none;overflow-y:auto;outline:none}.sky-text-editor .sky-text-editor-wrapper.sky-text-editor-wrapper-disabled{background-color:var(--sky-background-color-disabled)}.sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}.sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{box-shadow:0 0 8px #00b4f199;border:1px solid var(--sky-highlight-color-info);outline:none}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-dropdown-button{border:none}.sky-text-editor .sky-text-editor-toolbar sky-text-editor-menubar,.sky-text-editor .sky-text-editor-toolbar sky-text-editor-toolbar{display:flex;flex-wrap:wrap}.sky-theme-modern .sky-text-editor{border:none;box-shadow:inset 0 0 0 1px #d2d2d2;border-radius:6px}.sky-theme-modern .sky-text-editor.sky-text-editor-disabled{background-color:var(--sky-background-color-disabled);cursor:not-allowed}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty){display:inline-block;padding:10px 10px 0;width:100%;color:#686c73;transition:border-color .15s,box-shadow .15s,color .15s}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty) label{font-size:13px;margin-bottom:0}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-label-wrapper{color:var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-label-wrapper{color:#1870b8}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 3px #0000004d}.sky-theme-modern .sky-text-editor:not(.sky-text-editor-wrapper-focused) .sky-text-editor-wrapper:hover{border:none;box-shadow:inset 0 0 0 1px #1870b8}.sky-theme-modern .sky-text-editor .sky-text-editor-wrapper{transition:border-color .15s,box-shadow .15s,color .15s;box-shadow:inset 0 0 0 1px #d2d2d2;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border:none}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar{padding:10px 10px 0}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px!important;border-top:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar sky-toolbar-section:not(:last-of-type) .sky-toolbar-section{padding-bottom:0!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:none!important;border-right:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 0 0!important}\n"] }]
466
+ ], template: "<div\n class=\"sky-text-editor\"\n [ngClass]=\"{\n 'sky-text-editor-disabled': disabled,\n 'sky-text-editor-wrapper-focused': editorFocused,\n 'sky-text-editor-invalid':\n ngControl.errors && (ngControl.touched || ngControl.dirty),\n 'sky-margin-stacked-xs': !!hintText\n }\"\n>\n <div class=\"sky-text-editor-label-wrapper\">\n @if (labelText) {\n <label\n class=\"sky-control-label\"\n [ngClass]=\"{\n 'sky-control-label-required': requiredState.isRequired(),\n 'sky-margin-inline-xs': helpPopoverContent\n }\"\n >{{ labelText }}</label\n >\n @if (helpPopoverContent || helpKey) {\n <sky-help-inline\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n }\n }\n </div>\n @if (\n (menus && menus.length) > 0 || (toolbarActions && toolbarActions.length > 0)\n ) {\n <sky-toolbar class=\"sky-text-editor-toolbar\">\n @if (menus && menus.length > 0) {\n <sky-toolbar-section\n aria-label=\"Text formatting\"\n class=\"menubar\"\n role=\"toolbar\"\n >\n <sky-text-editor-menubar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [menus]=\"menus\"\n [mergeFields]=\"mergeFields\"\n />\n </sky-toolbar-section>\n }\n @if (toolbarActions && toolbarActions.length > 0) {\n <sky-toolbar-section\n aria-label=\"Text formatting\"\n class=\"toolbar\"\n role=\"toolbar\"\n >\n <sky-text-editor-toolbar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [fontList]=\"fontList\"\n [fontSizeList]=\"fontSizeList\"\n [linkWindowOptions]=\"linkWindowOptions\"\n [toolbarActions]=\"toolbarActions\"\n [styleState]=\"initialStyleState\"\n />\n </sky-toolbar-section>\n }\n </sky-toolbar>\n }\n <iframe\n #iframe\n class=\"sky-text-editor-wrapper\"\n src=\"about:blank\"\n allow=\"clipboard-read *; clipboard-write *\"\n [attr.title]=\"\n labelText || ('skyux_text_editor_iframe_title_default' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [ngClass]=\"{\n 'sky-text-editor-wrapper-disabled': disabled\n }\"\n (load)=\"onIframeLoad()\"\n >\n </iframe>\n</div>\n<div\n #hintTextEl=\"skyId\"\n skyId\n [ngClass]=\"{\n 'sky-font-deemphasized sky-text-editor-hint-text': !!hintText\n }\"\n>\n {{ hintText }}\n</div>\n<sky-form-errors\n class=\"sky-text-editor-errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl.errors\"\n [labelText]=\"labelText\"\n [touched]=\"ngControl.touched\"\n [dirty]=\"ngControl.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n", styles: ["sky-text-editor.sky-margin-stacked-lg{display:block}.sky-text-editor.sky-text-editor-disabled .sky-toolbar *,.sky-text-editor.sky-text-editor-disabled .sky-text-editor-wrapper *{color:var(--sky-text-color-deemphasized)!important}.sky-text-editor .sky-text-editor-label-wrapper{display:flex;width:100%}.sky-text-editor .sky-text-editor-wrapper{display:flex;flex-wrap:wrap;background-color:#fff;width:100%;height:300px;padding:1rem;font-size:1.2rem;border:1px solid #cdcfd2;border-top:none;overflow-y:auto;outline:none}.sky-text-editor .sky-text-editor-wrapper.sky-text-editor-wrapper-disabled{background-color:var(--sky-background-color-disabled)}.sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}.sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{box-shadow:0 0 8px #00b4f199;border:1px solid var(--sky-highlight-color-info);outline:none}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-dropdown-button{border:none}.sky-text-editor .sky-text-editor-toolbar sky-text-editor-menubar,.sky-text-editor .sky-text-editor-toolbar sky-text-editor-toolbar{display:flex;flex-wrap:wrap}.sky-theme-modern .sky-text-editor{border:none;box-shadow:inset 0 0 0 1px #d2d2d2;border-radius:6px}.sky-theme-modern .sky-text-editor.sky-text-editor-disabled{background-color:var(--sky-background-color-disabled);cursor:not-allowed}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty){display:inline-block;padding:10px 10px 0;width:100%;color:#686c73;transition:border-color .15s,box-shadow .15s,color .15s}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty) label{font-size:13px;margin-bottom:0}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-label-wrapper{color:var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-label-wrapper{color:#1870b8}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 3px #0000004d}.sky-theme-modern .sky-text-editor:not(.sky-text-editor-wrapper-focused) .sky-text-editor-wrapper:hover{border:none;box-shadow:inset 0 0 0 1px #1870b8}.sky-theme-modern .sky-text-editor .sky-text-editor-wrapper{transition:border-color .15s,box-shadow .15s,color .15s;box-shadow:inset 0 0 0 1px #d2d2d2;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border:none}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar{padding:10px 10px 0}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px!important;border-top:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar sky-toolbar-section:not(:last-of-type) .sky-toolbar-section{padding-bottom:0!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:none!important;border-right:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 0 0!important}\n"] }]
467
467
  }], ctorParameters: () => [], propDecorators: { autofocus: [{
468
468
  type: Input
469
469
  }], disabled: [{
@@ -516,4 +516,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
516
516
  type: HostBinding,
517
517
  args: ['class.sky-form-control']
518
518
  }] } });
519
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLHNDQUFzQyxFQUN0QyxzQkFBc0IsRUFDdEIseUJBQXlCLEdBQzFCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUs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QVFLLEVBQUU7c0JBRFosS0FBSztnQkFhSyxpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBb0JLLFNBQVM7c0JBRG5CLEtBQUs7Z0JBZUssS0FBSztzQkFEZixLQUFLO2dCQWFLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBYUssV0FBVztzQkFEckIsS0FBSztnQkFxQkMsT0FBTztzQkFGYixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztzQkFDckMsV0FBVzt1QkFBQyw2QkFBNkI7Z0JBUS9CLGNBQWM7c0JBRHhCLEtBQUs7Z0JBZ0JLLGlCQUFpQjtzQkFEM0IsS0FBSztnQkFpQkMsT0FBTztzQkFEYixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxRQUFRO2dCQXNEWixnQkFBZ0I7c0JBSnRCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUU7d0JBQzdCLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFNTSxnQkFBZ0I7c0JBRHRCLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lDb3JlQWRhcHRlclNlcnZpY2UsIFNreUlkTW9kdWxlLCBTa3lJZFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCxcbiAgU2t5Rm9ybUVycm9yc01vZHVsZSxcbiAgU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWREaXJlY3RpdmUsXG4gIFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gIFNreVJlcXVpcmVkU3RhdGVEaXJlY3RpdmUsXG59IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lTW9kdWxlIH0gZnJvbSAnQHNreXV4L2hlbHAtaW5saW5lJztcbmltcG9ydCB7IFNreVRvb2xiYXJNb2R1bGUgfSBmcm9tICdAc2t5dXgvbGF5b3V0JztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS10ZXh0LWVkaXRvci1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgRk9OVF9MSVNUX0RFRkFVTFRTIH0gZnJvbSAnLi9kZWZhdWx0cy9mb250LWxpc3QtZGVmYXVsdHMnO1xuaW1wb3J0IHsgRk9OVF9TSVpFX0xJU1RfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL2ZvbnQtc2l6ZS1saXN0LWRlZmF1bHRzJztcbmltcG9ydCB7IExJTktfV0lORE9XX09QVElPTlNfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL2xpbmstd2luZG93LW9wdGlvbnMtZGVmYXVsdHMnO1xuaW1wb3J0IHsgTUVOVV9ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvbWVudS1kZWZhdWx0cyc7XG5pbXBvcnQgeyBTVFlMRV9TVEFURV9ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvc3R5bGUtc3RhdGUtZGVmYXVsdHMnO1xuaW1wb3J0IHsgVE9PTEJBUl9BQ1RJT05fREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL3Rvb2xiYXItYWN0aW9uLWRlZmF1bHRzJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZW51YmFyQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51YmFyL3RleHQtZWRpdG9yLW1lbnViYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1lZGl0b3ItYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90ZXh0LWVkaXRvci1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0U2FuaXRpemF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1zYW5pdGl6YXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci90ZXh0LWVkaXRvci10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yRm9udCB9IGZyb20gJy4vdHlwZXMvZm9udC1zdGF0ZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yTGlua1dpbmRvd09wdGlvbnNUeXBlIH0gZnJvbSAnLi90eXBlcy9saW5rLXdpbmRvdy1vcHRpb25zLXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lbnVUeXBlIH0gZnJvbSAnLi90eXBlcy9tZW51LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvclN0eWxlU3RhdGUgfSBmcm9tICcuL3R5cGVzL3N0eWxlLXN0YXRlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkIH0gZnJvbSAnLi90eXBlcy90ZXh0LWVkaXRvci1tZXJnZS1maWVsZCc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzL3Rvb2xiYXItYWN0aW9uLXR5cGUnO1xuXG4vKipcbiAqIFRoZSB0ZXh0IGVkaXRvciBjb21wb25lbnQgbGV0cyB1c2VycyBmb3JtYXQgYW5kIG1hbmlwdWxhdGUgdGV4dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVRleHRFZGl0b3JTZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVELCB1c2VWYWx1ZTogdHJ1ZSB9LFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWREaXJlY3RpdmUsXG4gICAgICBpbnB1dHM6IFsnbGFiZWxUZXh0J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IFNreVJlcXVpcmVkU3RhdGVEaXJlY3RpdmUsXG4gICAgICBpbnB1dHM6IFsncmVxdWlyZWQnXSxcbiAgICB9LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUhlbHBJbmxpbmVNb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5VGV4dEVkaXRvck1lbnViYXJDb21wb25lbnQsXG4gICAgU2t5VGV4dEVkaXRvclRvb2xiYXJDb21wb25lbnQsXG4gICAgU2t5VG9vbGJhck1vZHVsZSxcbiAgICBTa3lGb3JtRXJyb3JzTW9kdWxlLFxuICAgIFNreVRleHRFZGl0b3JSZXNvdXJjZXNNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFZGl0b3JDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHB1dCBmb2N1cyBvbiB0aGUgZWRpdG9yIGFmdGVyIGl0IHJlbmRlcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2ZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGV4dCBlZGl0b3Igb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuXG4gICAgICAvLyBVcGRhdGUgZm9jdXNhYmxlQ2hpbGRyZW4gaW5zaWRlIHRoZSBpZnJhbWUuXG4gICAgICBsZXQgZm9jdXNhYmxlQ2hpbGRyZW46IEhUTUxFbGVtZW50W107XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRoaXMuaWZyYW1lUmVmKSB7XG4gICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuID0gdGhpcy4jY29yZUFkYXB0ZXJTZXJ2aWNlLmdldEZvY3VzYWJsZUNoaWxkcmVuKFxuICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHksXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWdub3JlVmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZVRhYkluZGV4OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuI19kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmRpc2FibGVFZGl0b3IoXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbixcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5lbmFibGVFZGl0b3IoXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbixcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZvbnRzIHRvIGluY2x1ZGUgaW4gdGhlIGZvbnQgcGlja2VyLlxuICAgKiBAZGVmYXVsdCBbe25hbWU6ICdCbGFja2JhdWQgU2FucycsIHZhbHVlOiAnXCJCbGFja2JhdWQgU2Fuc1wiLCBBcmlhbCwgc2Fucy1zZXJpZid9LCB7bmFtZTogJ0FyaWFsJywgdmFsdWU6ICdBcmlhbCd9LCB7bmFtZTogJ0FyaWFsIEJsYWNrJywgdmFsdWU6ICdcIkFyaWFsIEJsYWNrXCInfSwge25hbWU6ICdDb3VyaWVyIE5ldycsIHZhbHVlOiAnXCJDb3VyaWVyIE5ld1wiJ30sIHtuYW1lOiAnR2VvcmdpYScsIHZhbHVlOiAnR2VvcmdpYSwgc2VyaWYnfSwge25hbWU6ICdUYWhvbWEnLCB2YWx1ZTogJ1RhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmJ30sIHtuYW1lOiAnVGltZXMgTmV3IFJvbWFuJywgdmFsdWU6ICdcIlRpbWVzIE5ldyBSb21hblwiJ30sIHtuYW1lOiAnVHJlYnVjaGV0IE1TJywgdmFsdWU6ICdcIlRyZWJ1Y2hldCBNU1wiLCBzYW5zLXNlcmlmJ30sIHtuYW1lOiAnVmVyZGFuYScsIHZhbHVlOiAnVmVyZGFuYSwgR2VuZXZhLCBzYW5zLXNlcmlmJ31dXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZvbnRMaXN0KHZhbHVlOiBTa3lUZXh0RWRpdG9yRm9udFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2ZvbnRMaXN0ID0gdmFsdWUgfHwgRk9OVF9MSVNUX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBmb250TGlzdCgpOiBTa3lUZXh0RWRpdG9yRm9udFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2ZvbnRMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb250IHNpemVzIHRvIGluY2x1ZGUgaW4gdGhlIGZvbnQgc2l6ZSBwaWNrZXIuXG4gICAqIEBkZWZhdWx0IFs2LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTgsIDIwLCAyMiwgMjQsIDI2LCAyOCwgMzYsIDQ4XVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmb250U2l6ZUxpc3QodmFsdWU6IG51bWJlcltdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2ZvbnRTaXplTGlzdCA9IHZhbHVlIHx8IEZPTlRfU0laRV9MSVNUX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBmb250U2l6ZUxpc3QoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLiNfZm9udFNpemVMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBoZWxwIHBvcG92ZXIuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGxhYmVsVGV4dGAsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBhZGRlZCB0byB0aGUgdGV4dCBlZGl0b3IuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgSUQgYXR0cmlidXRlIGZvciB0aGUgdGV4dCBlZGl0b3IuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb21wb25lbnQgZ2VuZXJhdGVzIGEgcmFuZG9tIElELlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpZCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jaWQgPSB2YWx1ZSB8fCB0aGlzLiNkZWZhdWx0SWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2lkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHN0eWxlcyBmb3IgYWxsIGNvbnRlbnQsIGluY2x1ZGluZyBiYWNrZ3JvdW5kIGNvbG9yLCBmb250IHNpemUsIGFuZCBsaW5rIHN0YXRlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbml0aWFsU3R5bGVTdGF0ZShzdGF0ZTogU2t5VGV4dEVkaXRvclN0eWxlU3RhdGUgfCB1bmRlZmluZWQpIHtcbiAgICAvLyBEbyBub3QgdXBkYXRlIHRoZSBzdGF0ZSBhZnRlciBpbml0aWFsaXphdGlvbiBoYXMgdGFrZW4gcGxhY2VcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy4jaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI19pbml0aWFsU3R5bGVTdGF0ZSA9IHtcbiAgICAgICAgLi4uU1RZTEVfU1RBVEVfREVGQVVMVFMsXG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluaXRpYWxTdHlsZVN0YXRlKCk6IFNreVRleHRFZGl0b3JTdHlsZVN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy4jX2luaXRpYWxTdHlsZVN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIHRleHQgZWRpdG9yJ3MgbGFiZWwuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxhYmVsVGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2xhYmVsVGV4dCA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUExMXlBdHRyaWJ1dGVzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhYmVsVGV4dCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbGFiZWxUZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZW51cyB0byBpbmNsdWRlIGluIHRoZSBtZW51IGJhci5cbiAgICogQGRlZmF1bHQgWyAnZWRpdCcsICdmb3JtYXQnIF1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWVudXModmFsdWU6IFNreVRleHRFZGl0b3JNZW51VHlwZVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX21lbnVzID0gdmFsdWUgfHwgTUVOVV9ERUZBVUxUUztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVudXMoKTogU2t5VGV4dEVkaXRvck1lbnVUeXBlW10ge1xuICAgIHJldHVybiB0aGlzLiNfbWVudXM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1lcmdlIGZpZWxkcyB0byBpbmNsdWRlIGluIHRoZSBtZXJnZSBmaWVsZCBtZW51LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtZXJnZUZpZWxkcyh2YWx1ZTogU2t5VGV4dEVkaXRvck1lcmdlRmllbGRbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tZXJnZUZpZWxkcyA9IHZhbHVlIHx8IFtdO1xuICB9XG5cbiAgcHVibGljIGdldCBtZXJnZUZpZWxkcygpOiBTa3lUZXh0RWRpdG9yTWVyZ2VGaWVsZFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX21lcmdlRmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgdG8gZGlzcGxheSB3aGVuIHRoZSB0ZXh0IGVudHJ5IGFyZWEgaXMgZW1wdHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX3BsYWNlaG9sZGVyKSB7XG4gICAgICB0aGlzLiNfcGxhY2Vob2xkZXIgPSB2YWx1ZSB8fCAnJztcbiAgICAgIGlmICh0aGlzLiNpbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfcGxhY2Vob2xkZXI7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdGV4dCBlZGl0b3IgaXMgc3RhY2tlZCBvbiBhbm90aGVyIGZvcm0gY29tcG9uZW50LiBXaGVuIHNwZWNpZmllZCxcbiAgICogdGhlIGFwcHJvcHJpYXRlIHZlcnRpY2FsIHNwYWNpbmcgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgdGV4dCBlZGl0b3IuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za3ktbWFyZ2luLXN0YWNrZWQtbGcnKVxuICBwdWJsaWMgc3RhY2tlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9ucyB0byBpbmNsdWRlIGluIHRoZSB0b29sYmFyIGluIHRoZSBzcGVjaWZpZWQgb3JkZXIuXG4gICAqIEBkZWZhdWx0IFsgJ2ZvbnQtZmFtaWx5JywgJ2ZvbnQtc2l6ZScsICdmb250LXN0eWxlJywgJ2NvbG9yJywgJ2xpc3QnLCAnbGluayBdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRvb2xiYXJBY3Rpb25zKFxuICAgIHZhbHVlOiBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGVbXSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgdGhpcy4jX3Rvb2xiYXJBY3Rpb25zID0gdmFsdWUgfHwgVE9PTEJBUl9BQ1RJT05fREVGQVVMVFM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvb2xiYXJBY3Rpb25zKCk6IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX3Rvb2xiYXJBY3Rpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgd2luZG93IG9wdGlvbnMgZm9yIGFkZGluZyBhIGh5cGVybGluay5cbiAgICogQGRlZmF1bHQgWyAnbmV3JywgJ2V4aXN0aW5nJyBdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxpbmtXaW5kb3dPcHRpb25zKFxuICAgIHZhbHVlOiBTa3lUZXh0RWRpdG9yTGlua1dpbmRvd09wdGlvbnNUeXBlW10gfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuI19saW5rV2luZG93T3B0aW9ucyA9IHZhbHVlID8/IExJTktfV0lORE9XX09QVElPTlNfREVGQVVMVFM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxpbmtXaW5kb3dPcHRpb25zKCk6IFNreVRleHRFZGl0b3JMaW5rV2luZG93T3B0aW9uc1R5cGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19saW5rV2luZG93T3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIHBsYWNlZCBiZXNpZGUgdGhlIHRleHQgZWRpdG9yIGxhYmVsLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgW2dsb2JhbCBoZWxwXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2RldmVsb3AvZ2xvYmFsLWhlbHApXG4gICAqIGFzIGNvbmZpZ3VyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdpZnJhbWUnKVxuICBwdWJsaWMgaWZyYW1lUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgdmFsdWUgb2YgdGhlIGNvbnRyb2wuXG4gICAqL1xuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvLyBOb3JtYWxpemUgdmFsdWUgYW5kIHNldCBhbnkgZW1wdHkgc3RhdGUgdG8gYW4gZW1wdHkgc3RyaW5nLlxuICAgIGxldCBub3JtYWxpemVkVmFsdWU6IHN0cmluZztcbiAgICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZT8udHJpbSgpO1xuXG4gICAgaWYgKFxuICAgICAgIXZhbHVlIHx8XG4gICAgICB2YWx1ZVRyaW1tZWQgPT09ICc8cD48L3A+JyB8fFxuICAgICAgdmFsdWVUcmltbWVkID09PSAnPGJyPicgfHxcbiAgICAgIHZhbHVlVHJpbW1lZCA9PT0gJzxwPjxicj48L3A+J1xuICAgICkge1xuICAgICAgbm9ybWFsaXplZFZhbHVlID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMuI3Nhbml0aXphdGlvblNlcnZpY2VcbiAgICAgIC5zYW5pdGl6ZShub3JtYWxpemVkVmFsdWUpXG4gICAgICAudHJpbSgpO1xuXG4gICAgaWYgKHRoaXMuI192YWx1ZSAhPT0gbm9ybWFsaXplZFZhbHVlKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG5cbiAgICAgIC8vIFVwZGF0ZSBhbmd1bGFyIGZvcm0gY29udHJvbCBpZiBtb2RlbCBoYXMgYmVlbiBub3JtYWxpemVkLlxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wgJiZcbiAgICAgICAgbm9ybWFsaXplZFZhbHVlICE9PSB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbHVlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVkVmFsdWUsIHtcbiAgICAgICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gI2luaXRJZnJhbWUoKSB3aWxsIGRvIGFub3RoZXIgY2hlY2sgbGF0ZXIgdG8gc2VlIGlmIHRoZSBlZGl0b3Igc2hvdWxkXG4gICAgICAvLyByZWNlaXZlIGZvY3VzIGlmIG5vdCBpbml0aWFsaXplZCBiZWZvcmUgdGhpcyBpcyBjYWxsZWQuXG4gICAgICB0aGlzLiNjaGVja0F1dG9mb2N1c0FuZEZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfdmFsdWU7XG4gIH1cblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIGlucHV0VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBlZGl0b3JGb2N1c1N0cmVhbSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za3ktZm9ybS1jb250cm9sJylcbiAgcHVibGljIGZvcm1Db250cm9sQ2xhc3MgPSAhIWluamVjdChTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCBlZGl0b3JGb2N1c2VkID0gZmFsc2U7XG5cbiAgI2RlZmF1bHRJZDogc3RyaW5nO1xuICAjaWQ6IHN0cmluZztcbiAgI2ZvY3VzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgI2luaXRpYWxpemVkID0gZmFsc2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX2ZvbnRMaXN0ID0gRk9OVF9MSVNUX0RFRkFVTFRTO1xuICAjX2ZvbnRTaXplTGlzdCA9IEZPTlRfU0laRV9MSVNUX0RFRkFVTFRTO1xuICAjX2xhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX21lcmdlRmllbGRzOiBTa3lUZXh0RWRpdG9yTWVyZ2VGaWVsZFtdID0gW107XG4gICNfbWVudXMgPSBNRU5VX0RFRkFVTFRTO1xuICAjX3Rvb2xiYXJBY3Rpb25zOiBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGVbXSA9IFRPT0xCQVJfQUNUSU9OX0RFRkFVTFRTO1xuICAjX2xpbmtXaW5kb3dPcHRpb25zID0gTElOS19XSU5ET1dfT1BUSU9OU19ERUZBVUxUUztcbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuICAjX2luaXRpYWxTdHlsZVN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgU1RZTEVfU1RBVEVfREVGQVVMVFMpO1xuICAjX3BsYWNlaG9sZGVyID0gJyc7XG4gICNfdmFsdWUgPSAnPHA+PC9wPic7XG5cbiAgcmVhZG9ubHkgI2FkYXB0ZXJTZXJ2aWNlID0gaW5qZWN0KFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5ICNjb3JlQWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2VkaXRvclNlcnZpY2UgPSBpbmplY3QoU2t5VGV4dEVkaXRvclNlcnZpY2UpO1xuICByZWFkb25seSAjaWRTdmMgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3Nhbml0aXphdGlvblNlcnZpY2UgPSBpbmplY3QoU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2UpO1xuICByZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBlcnJvcklkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSByZXF1aXJlZFN0YXRlID0gaW5qZWN0KFNreVJlcXVpcmVkU3RhdGVEaXJlY3RpdmUpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2lkID0gdGhpcy4jZGVmYXVsdElkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNpbml0SWZyYW1lKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UucmVtb3ZlT2JzZXJ2ZXJzKHRoaXMuI2VkaXRvclNlcnZpY2UuZWRpdG9yKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25JZnJhbWVMb2FkKCk6IHZvaWQge1xuICAgIC8vIFJlaW5pdGlhbGl6ZSB0aGUgZWRpdG9yIGlmIGl0IGFscmVhZHkgZXhpc3RzIHRvIGNvdmVyIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHRleHQgZWRpdG9yIG1pZ2h0IGhhdmUgYmVlbiBtb3ZlZCBpbiB0aGUgRE9NLlxuICAgIGlmICh0aGlzLiNlZGl0b3JTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI2luaXRJZnJhbWUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAvLyBVcGRhdGUgSFRNTCBpZiBuZWNlc3NhcnkuXG4gICAgaWYgKHRoaXMuI2luaXRpYWxpemVkKSB7XG4gICAgICBjb25zdCBlZGl0b3JWYWx1ZSA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldEVkaXRvcklubmVySHRtbCgpO1xuICAgICAgaWYgKGVkaXRvclZhbHVlICE9PSB0aGlzLiNfdmFsdWUpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0RWRpdG9ySW5uZXJIdG1sKHRoaXMuI192YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAjY2hlY2tBdXRvZm9jdXNBbmRGb2N1cygpOiB2b2lkIHtcbiAgICAvLyBEb24ndCBzZXQgZm9jdXMgb24gdGhlIGVkaXRvciBpZiB0aGUgaWZyYW1lIGlzbid0IGluaXRpYWxpemVkLlxuICAgIC8vIEF1dG9mb2N1cyBpc24ndCB0ZXN0YWJsZSBpbiBGaXJlZm94IGFuZCBJRS5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLmF1dG9mb2N1cyAmJiB0aGlzLiNpbml0aWFsaXplZCAmJiAhdGhpcy4jZm9jdXNJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNFZGl0b3IoKTtcbiAgICAgIHRoaXMuI2ZvY3VzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVTdHlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUgPSB7XG4gICAgICAuLi50aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUsXG4gICAgICAuLi50aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTdHlsZVN0YXRlKCksXG4gICAgfTtcbiAgfVxuXG4gICNpbml0SWZyYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmluaXRFZGl0b3IoXG4gICAgICB0aGlzLmlkLFxuICAgICAgKHRoaXMuaWZyYW1lUmVmIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLmluaXRpYWxTdHlsZVN0YXRlLFxuICAgICAgdGhpcy5wbGFjZWhvbGRlcixcbiAgICApO1xuXG4gICAgdGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiN1cGRhdGVBMTF5QXR0cmlidXRlcygpO1xuXG4gICAgICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiB3aGVuIHRoZSBmaWVsZCBzdGF0dXMgaXMgbW9kaWZpZWQgcHJvZ3JhbW1hdGljYWxseS5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5pbnB1dExpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBBbmd1bGFyIGRvZXNuJ3QgcnVuIGNoYW5nZSBkZXRlY3Rpb24gZm9yIGNoYW5nZXMgb3JpZ2luYXRpbmcgaW5zaWRlIGFuIGlmcmFtZSxcbiAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBjYWxsIHRoZSBvbkNoYW5nZSgpIGV2ZW50IGluc2lkZSBOZ1pvbmUgdG8gZm9yY2UgY2hhbmdlIHByb3BhZ2F0aW9uIHRvIGNvbnN1bWluZyBjb21wb25lbnRzLlxuICAgICAgICB0aGlzLiN6b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jdmlld1RvTW9kZWxVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5zZWxlY3Rpb25DaGFuZ2VMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jdXBkYXRlU3R5bGUoKTtcbiAgICAgICAgdGhpcy5lZGl0b3JGb2N1c1N0cmVhbS5uZXh0KCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5jbGlja0xpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmVkaXRvckZvY3VzU3RyZWFtLm5leHQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZWRpdG9yU2VydmljZVxuICAgICAgLmJsdXJMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBjaGFuZ2VzIG9yaWdpbmF0aW5nIGluc2lkZSBhbiBpZnJhbWUsXG4gICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gcnVuIG1hcmtGb3JDaGVjaygpIGluc2lkZSB0aGUgTmdab25lIHRvIGZvcmNlIGNoYW5nZSBwcm9wYWdhdGlvbiB0byBjb25zdW1pbmcgY29tcG9uZW50cy5cbiAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI19vblRvdWNoZWQoKTtcbiAgICAgICAgICB0aGlzLmVkaXRvckZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5jb21tYW5kQ2hhbmdlTGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZVN0eWxlKCk7XG4gICAgICAgIHRoaXMuI3ZpZXdUb01vZGVsVXBkYXRlKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5mb2N1c0xpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBBbmd1bGFyIGRvZXNuJ3QgcnVuIGNoYW5nZSBkZXRlY3Rpb24gZm9yIGNoYW5nZXMgb3JpZ2luYXRpbmcgaW5zaWRlIGFuIGlmcmFtZSxcbiAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBydW4gbWFya0ZvckNoZWNrKCkgaW5zaWRlIHRoZSBOZ1pvbmUgdG8gZm9yY2UgY2hhbmdlIHByb3BhZ2F0aW9uIHRvIGNvbnN1bWluZyBjb21wb25lbnRzLlxuICAgICAgICB0aGlzLiN6b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lZGl0b3JGb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldEVkaXRvcklubmVySHRtbCh0aGlzLiNfdmFsdWUpO1xuICAgIHRoaXMuI3VwZGF0ZUExMXlBdHRyaWJ1dGVzKCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLmF1dG9mb2N1cykge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNFZGl0b3IoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNpbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy4jZm9jdXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgdGhpcy4jY2hlY2tBdXRvZm9jdXNBbmRGb2N1cygpO1xuICB9XG5cbiAgI3VwZGF0ZUExMXlBdHRyaWJ1dGVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNlZGl0b3JTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldExhYmVsQXR0cmlidXRlKHRoaXMubGFiZWxUZXh0KTtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldEVycm9yQXR0cmlidXRlcyhcbiAgICAgICAgdGhpcy5sYWJlbFRleHQgPyB0aGlzLmVycm9ySWQgOiAnJyxcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wuZXJyb3JzLFxuICAgICAgKTtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldFJlcXVpcmVkQXR0cmlidXRlKFxuICAgICAgICB0aGlzLnJlcXVpcmVkU3RhdGUuaXNSZXF1aXJlZCgpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAjdmlld1RvTW9kZWxVcGRhdGUoZW1pdENoYW5nZSA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0RWRpdG9ySW5uZXJIdG1sKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZW1pdENoYW5nZSkge1xuICAgICAgdGhpcy4jX29uQ2hhbmdlKHRoaXMuI192YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgI19vblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICB9O1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICNfb25DaGFuZ2U6IChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHZhbHVlOiBhbnksXG4gICkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIH07XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktdGV4dC1lZGl0b3ItZGlzYWJsZWQnOiBkaXNhYmxlZCxcbiAgICAnc2t5LXRleHQtZWRpdG9yLXdyYXBwZXItZm9jdXNlZCc6IGVkaXRvckZvY3VzZWQsXG4gICAgJ3NreS10ZXh0LWVkaXRvci1pbnZhbGlkJzpcbiAgICAgIG5nQ29udHJvbC5lcnJvcnMgJiYgKG5nQ29udHJvbC50b3VjaGVkIHx8IG5nQ29udHJvbC5kaXJ0eSksXG4gICAgJ3NreS1tYXJnaW4tc3RhY2tlZC14cyc6ICEhaGludFRleHRcbiAgfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItbGFiZWwtd3JhcHBlclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYWJlbFRleHRcIj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cInNreS1jb250cm9sLWxhYmVsXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktY29udHJvbC1sYWJlbC1yZXF1aXJlZCc6IHJlcXVpcmVkU3RhdGUuaXNSZXF1aXJlZCgpLFxuICAgICAgICAgICdza3ktbWFyZ2luLWlubGluZS14cyc6IGhlbHBQb3BvdmVyQ29udGVudFxuICAgICAgICB9XCJcbiAgICAgICAgPnt7IGxhYmVsVGV4dCB9fTwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxza3ktaGVscC1pbmxpbmVcbiAgICAgICAgKm5nSWY9XCJoZWxwUG9wb3ZlckNvbnRlbnQgfHwgaGVscEtleVwiXG4gICAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gICAgICAgIFtwb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgICAgICBbcG9wb3ZlclRpdGxlXT1cImhlbHBQb3BvdmVyVGl0bGVcIlxuICAgICAgLz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxza3ktdG9vbGJhclxuICAgICpuZ0lmPVwiXG4gICAgICAobWVudXMgJiYgbWVudXMubGVuZ3RoKSA+IDAgfHxcbiAgICAgICh0b29sYmFyQWN0aW9ucyAmJiB0b29sYmFyQWN0aW9ucy5sZW5ndGggPiAwKVxuICAgIFwiXG4gICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItdG9vbGJhclwiXG4gID5cbiAgICA8c2t5LXRvb2xiYXItc2VjdGlvblxuICAgICAgKm5nSWY9XCJtZW51cyAmJiBtZW51cy5sZW5ndGggPiAwXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJUZXh0IGZvcm1hdHRpbmdcIlxuICAgICAgY2xhc3M9XCJtZW51YmFyXCJcbiAgICAgIHJvbGU9XCJ0b29sYmFyXCJcbiAgICA+XG4gICAgICA8c2t5LXRleHQtZWRpdG9yLW1lbnViYXJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2VkaXRvckZvY3VzU3RyZWFtXT1cImVkaXRvckZvY3VzU3RyZWFtXCJcbiAgICAgICAgW21lbnVzXT1cIm1lbnVzXCJcbiAgICAgICAgW21lcmdlRmllbGRzXT1cIm1lcmdlRmllbGRzXCJcbiAgICAgID5cbiAgICAgIDwvc2t5LXRleHQtZWRpdG9yLW1lbnViYXI+XG4gICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICAgIDxza3ktdG9vbGJhci1zZWN0aW9uXG4gICAgICAqbmdJZj1cInRvb2xiYXJBY3Rpb25zICYmIHRvb2xiYXJBY3Rpb25zLmxlbmd0aCA+IDBcIlxuICAgICAgYXJpYS1sYWJlbD1cIlRleHQgZm9ybWF0dGluZ1wiXG4gICAgICBjbGFzcz1cInRvb2xiYXJcIlxuICAgICAgcm9sZT1cInRvb2xiYXJcIlxuICAgID5cbiAgICAgIDxza3ktdGV4dC1lZGl0b3ItdG9vbGJhclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbZWRpdG9yRm9jdXNTdHJlYW1dPVwiZWRpdG9yRm9jdXNTdHJlYW1cIlxuICAgICAgICBbZm9udExpc3RdPVwiZm9udExpc3RcIlxuICAgICAgICBbZm9udFNpemVMaXN0XT1cImZvbnRTaXplTGlzdFwiXG4gICAgICAgIFtsaW5rV2luZG93T3B0aW9uc109XCJsaW5rV2luZG93T3B0aW9uc1wiXG4gICAgICAgIFt0b29sYmFyQWN0aW9uc109XCJ0b29sYmFyQWN0aW9uc1wiXG4gICAgICAgIFtzdHlsZVN0YXRlXT1cImluaXRpYWxTdHlsZVN0YXRlXCJcbiAgICAgID5cbiAgICAgIDwvc2t5LXRleHQtZWRpdG9yLXRvb2xiYXI+XG4gICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICA8L3NreS10b29sYmFyPlxuICA8aWZyYW1lXG4gICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3Itd3JhcHBlclwiXG4gICAgc3JjPVwiYWJvdXQ6YmxhbmtcIlxuICAgIFthdHRyLnRpdGxlXT1cIlxuICAgICAgbGFiZWxUZXh0IHx8ICgnc2t5dXhfdGV4dF9lZGl0b3JfaWZyYW1lX3RpdGxlX2RlZmF1bHQnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgIFwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoaW50VGV4dCA/IGhpbnRUZXh0RWwuaWQgOiB1bmRlZmluZWRcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktdGV4dC1lZGl0b3Itd3JhcHBlci1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgfVwiXG4gICAgKGxvYWQpPVwib25JZnJhbWVMb2FkKClcIlxuICAgICNpZnJhbWVcbiAgICBhbGxvdz1cImNsaXBib2FyZC1yZWFkICo7IGNsaXBib2FyZC13cml0ZSAqXCJcbiAgPlxuICA8L2lmcmFtZT5cbjwvZGl2PlxuPGRpdlxuICBza3lJZFxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS1mb250LWRlZW1waGFzaXplZCBza3ktdGV4dC1lZGl0b3ItaGludC10ZXh0JzogISFoaW50VGV4dFxuICB9XCJcbiAgI2hpbnRUZXh0RWw9XCJza3lJZFwiXG4+XG4gIHt7IGhpbnRUZXh0IH19XG48L2Rpdj5cbjxza3ktZm9ybS1lcnJvcnNcbiAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItZXJyb3JzXCJcbiAgW2lkXT1cImVycm9ySWRcIlxuICBbZXJyb3JzXT1cIm5nQ29udHJvbC5lcnJvcnNcIlxuICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gIFt0b3VjaGVkXT1cIm5nQ29udHJvbC50b3VjaGVkXCJcbiAgW2RpcnR5XT1cIm5nQ29udHJvbC5kaXJ0eVwiXG4+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1mb3JtLWVycm9yXCIgLz5cbjwvc2t5LWZvcm0tZXJyb3JzPlxuIl19
519
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLHNDQUFzQyxFQUN0QyxzQkFBc0IsRUFDdEIseUJBQXlCLEdBQzFCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUs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QVFLLEVBQUU7c0JBRFosS0FBSztnQkFhSyxpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBb0JLLFNBQVM7c0JBRG5CLEtBQUs7Z0JBZUssS0FBSztzQkFEZixLQUFLO2dCQWFLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBYUssV0FBVztzQkFEckIsS0FBSztnQkFxQkMsT0FBTztzQkFGYixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztzQkFDckMsV0FBVzt1QkFBQyw2QkFBNkI7Z0JBUS9CLGNBQWM7c0JBRHhCLEtBQUs7Z0JBZ0JLLGlCQUFpQjtzQkFEM0IsS0FBSztnQkFpQkMsT0FBTztzQkFEYixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxRQUFRO2dCQXNEWixnQkFBZ0I7c0JBSnRCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUU7d0JBQzdCLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFNTSxnQkFBZ0I7c0JBRHRCLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lDb3JlQWRhcHRlclNlcnZpY2UsIFNreUlkTW9kdWxlLCBTa3lJZFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCxcbiAgU2t5Rm9ybUVycm9yc01vZHVsZSxcbiAgU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWREaXJlY3RpdmUsXG4gIFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gIFNreVJlcXVpcmVkU3RhdGVEaXJlY3RpdmUsXG59IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lTW9kdWxlIH0gZnJvbSAnQHNreXV4L2hlbHAtaW5saW5lJztcbmltcG9ydCB7IFNreVRvb2xiYXJNb2R1bGUgfSBmcm9tICdAc2t5dXgvbGF5b3V0JztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS10ZXh0LWVkaXRvci1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgRk9OVF9MSVNUX0RFRkFVTFRTIH0gZnJvbSAnLi9kZWZhdWx0cy9mb250LWxpc3QtZGVmYXVsdHMnO1xuaW1wb3J0IHsgRk9OVF9TSVpFX0xJU1RfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL2ZvbnQtc2l6ZS1saXN0LWRlZmF1bHRzJztcbmltcG9ydCB7IExJTktfV0lORE9XX09QVElPTlNfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL2xpbmstd2luZG93LW9wdGlvbnMtZGVmYXVsdHMnO1xuaW1wb3J0IHsgTUVOVV9ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvbWVudS1kZWZhdWx0cyc7XG5pbXBvcnQgeyBTVFlMRV9TVEFURV9ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvc3R5bGUtc3RhdGUtZGVmYXVsdHMnO1xuaW1wb3J0IHsgVE9PTEJBUl9BQ1RJT05fREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL3Rvb2xiYXItYWN0aW9uLWRlZmF1bHRzJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZW51YmFyQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51YmFyL3RleHQtZWRpdG9yLW1lbnViYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1lZGl0b3ItYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90ZXh0LWVkaXRvci1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0U2FuaXRpemF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1zYW5pdGl6YXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci90ZXh0LWVkaXRvci10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yRm9udCB9IGZyb20gJy4vdHlwZXMvZm9udC1zdGF0ZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yTGlua1dpbmRvd09wdGlvbnNUeXBlIH0gZnJvbSAnLi90eXBlcy9saW5rLXdpbmRvdy1vcHRpb25zLXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lbnVUeXBlIH0gZnJvbSAnLi90eXBlcy9tZW51LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvclN0eWxlU3RhdGUgfSBmcm9tICcuL3R5cGVzL3N0eWxlLXN0YXRlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkIH0gZnJvbSAnLi90eXBlcy90ZXh0LWVkaXRvci1tZXJnZS1maWVsZCc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzL3Rvb2xiYXItYWN0aW9uLXR5cGUnO1xuXG4vKipcbiAqIFRoZSB0ZXh0IGVkaXRvciBjb21wb25lbnQgbGV0cyB1c2VycyBmb3JtYXQgYW5kIG1hbmlwdWxhdGUgdGV4dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVRleHRFZGl0b3JTZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVELCB1c2VWYWx1ZTogdHJ1ZSB9LFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWREaXJlY3RpdmUsXG4gICAgICBpbnB1dHM6IFsnbGFiZWxUZXh0J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IFNreVJlcXVpcmVkU3RhdGVEaXJlY3RpdmUsXG4gICAgICBpbnB1dHM6IFsncmVxdWlyZWQnXSxcbiAgICB9LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUhlbHBJbmxpbmVNb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5VGV4dEVkaXRvck1lbnViYXJDb21wb25lbnQsXG4gICAgU2t5VGV4dEVkaXRvclRvb2xiYXJDb21wb25lbnQsXG4gICAgU2t5VG9vbGJhck1vZHVsZSxcbiAgICBTa3lGb3JtRXJyb3JzTW9kdWxlLFxuICAgIFNreVRleHRFZGl0b3JSZXNvdXJjZXNNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFZGl0b3JDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHB1dCBmb2N1cyBvbiB0aGUgZWRpdG9yIGFmdGVyIGl0IHJlbmRlcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2ZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGV4dCBlZGl0b3Igb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuXG4gICAgICAvLyBVcGRhdGUgZm9jdXNhYmxlQ2hpbGRyZW4gaW5zaWRlIHRoZSBpZnJhbWUuXG4gICAgICBsZXQgZm9jdXNhYmxlQ2hpbGRyZW46IEhUTUxFbGVtZW50W107XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRoaXMuaWZyYW1lUmVmKSB7XG4gICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuID0gdGhpcy4jY29yZUFkYXB0ZXJTZXJ2aWNlLmdldEZvY3VzYWJsZUNoaWxkcmVuKFxuICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHksXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWdub3JlVmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZVRhYkluZGV4OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuI19kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmRpc2FibGVFZGl0b3IoXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbixcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5lbmFibGVFZGl0b3IoXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbixcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZvbnRzIHRvIGluY2x1ZGUgaW4gdGhlIGZvbnQgcGlja2VyLlxuICAgKiBAZGVmYXVsdCBbe25hbWU6ICdCbGFja2JhdWQgU2FucycsIHZhbHVlOiAnXCJCbGFja2JhdWQgU2Fuc1wiLCBBcmlhbCwgc2Fucy1zZXJpZid9LCB7bmFtZTogJ0FyaWFsJywgdmFsdWU6ICdBcmlhbCd9LCB7bmFtZTogJ0FyaWFsIEJsYWNrJywgdmFsdWU6ICdcIkFyaWFsIEJsYWNrXCInfSwge25hbWU6ICdDb3VyaWVyIE5ldycsIHZhbHVlOiAnXCJDb3VyaWVyIE5ld1wiJ30sIHtuYW1lOiAnR2VvcmdpYScsIHZhbHVlOiAnR2VvcmdpYSwgc2VyaWYnfSwge25hbWU6ICdUYWhvbWEnLCB2YWx1ZTogJ1RhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmJ30sIHtuYW1lOiAnVGltZXMgTmV3IFJvbWFuJywgdmFsdWU6ICdcIlRpbWVzIE5ldyBSb21hblwiJ30sIHtuYW1lOiAnVHJlYnVjaGV0IE1TJywgdmFsdWU6ICdcIlRyZWJ1Y2hldCBNU1wiLCBzYW5zLXNlcmlmJ30sIHtuYW1lOiAnVmVyZGFuYScsIHZhbHVlOiAnVmVyZGFuYSwgR2VuZXZhLCBzYW5zLXNlcmlmJ31dXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZvbnRMaXN0KHZhbHVlOiBTa3lUZXh0RWRpdG9yRm9udFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2ZvbnRMaXN0ID0gdmFsdWUgfHwgRk9OVF9MSVNUX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBmb250TGlzdCgpOiBTa3lUZXh0RWRpdG9yRm9udFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2ZvbnRMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb250IHNpemVzIHRvIGluY2x1ZGUgaW4gdGhlIGZvbnQgc2l6ZSBwaWNrZXIuXG4gICAqIEBkZWZhdWx0IFs2LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTgsIDIwLCAyMiwgMjQsIDI2LCAyOCwgMzYsIDQ4XVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmb250U2l6ZUxpc3QodmFsdWU6IG51bWJlcltdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2ZvbnRTaXplTGlzdCA9IHZhbHVlIHx8IEZPTlRfU0laRV9MSVNUX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBmb250U2l6ZUxpc3QoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLiNfZm9udFNpemVMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBoZWxwIHBvcG92ZXIuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGxhYmVsVGV4dGAsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBhZGRlZCB0byB0aGUgdGV4dCBlZGl0b3IuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgSUQgYXR0cmlidXRlIGZvciB0aGUgdGV4dCBlZGl0b3IuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb21wb25lbnQgZ2VuZXJhdGVzIGEgcmFuZG9tIElELlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpZCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jaWQgPSB2YWx1ZSB8fCB0aGlzLiNkZWZhdWx0SWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2lkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHN0eWxlcyBmb3IgYWxsIGNvbnRlbnQsIGluY2x1ZGluZyBiYWNrZ3JvdW5kIGNvbG9yLCBmb250IHNpemUsIGFuZCBsaW5rIHN0YXRlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbml0aWFsU3R5bGVTdGF0ZShzdGF0ZTogU2t5VGV4dEVkaXRvclN0eWxlU3RhdGUgfCB1bmRlZmluZWQpIHtcbiAgICAvLyBEbyBub3QgdXBkYXRlIHRoZSBzdGF0ZSBhZnRlciBpbml0aWFsaXphdGlvbiBoYXMgdGFrZW4gcGxhY2VcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy4jaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI19pbml0aWFsU3R5bGVTdGF0ZSA9IHtcbiAgICAgICAgLi4uU1RZTEVfU1RBVEVfREVGQVVMVFMsXG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluaXRpYWxTdHlsZVN0YXRlKCk6IFNreVRleHRFZGl0b3JTdHlsZVN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy4jX2luaXRpYWxTdHlsZVN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIHRleHQgZWRpdG9yJ3MgbGFiZWwuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxhYmVsVGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2xhYmVsVGV4dCA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUExMXlBdHRyaWJ1dGVzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhYmVsVGV4dCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbGFiZWxUZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZW51cyB0byBpbmNsdWRlIGluIHRoZSBtZW51IGJhci5cbiAgICogQGRlZmF1bHQgWyAnZWRpdCcsICdmb3JtYXQnIF1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWVudXModmFsdWU6IFNreVRleHRFZGl0b3JNZW51VHlwZVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX21lbnVzID0gdmFsdWUgfHwgTUVOVV9ERUZBVUxUUztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVudXMoKTogU2t5VGV4dEVkaXRvck1lbnVUeXBlW10ge1xuICAgIHJldHVybiB0aGlzLiNfbWVudXM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1lcmdlIGZpZWxkcyB0byBpbmNsdWRlIGluIHRoZSBtZXJnZSBmaWVsZCBtZW51LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtZXJnZUZpZWxkcyh2YWx1ZTogU2t5VGV4dEVkaXRvck1lcmdlRmllbGRbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tZXJnZUZpZWxkcyA9IHZhbHVlIHx8IFtdO1xuICB9XG5cbiAgcHVibGljIGdldCBtZXJnZUZpZWxkcygpOiBTa3lUZXh0RWRpdG9yTWVyZ2VGaWVsZFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX21lcmdlRmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgdG8gZGlzcGxheSB3aGVuIHRoZSB0ZXh0IGVudHJ5IGFyZWEgaXMgZW1wdHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX3BsYWNlaG9sZGVyKSB7XG4gICAgICB0aGlzLiNfcGxhY2Vob2xkZXIgPSB2YWx1ZSB8fCAnJztcbiAgICAgIGlmICh0aGlzLiNpbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfcGxhY2Vob2xkZXI7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdGV4dCBlZGl0b3IgaXMgc3RhY2tlZCBvbiBhbm90aGVyIGZvcm0gY29tcG9uZW50LiBXaGVuIHNwZWNpZmllZCxcbiAgICogdGhlIGFwcHJvcHJpYXRlIHZlcnRpY2FsIHNwYWNpbmcgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgdGV4dCBlZGl0b3IuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za3ktbWFyZ2luLXN0YWNrZWQtbGcnKVxuICBwdWJsaWMgc3RhY2tlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9ucyB0byBpbmNsdWRlIGluIHRoZSB0b29sYmFyIGluIHRoZSBzcGVjaWZpZWQgb3JkZXIuXG4gICAqIEBkZWZhdWx0IFsgJ2ZvbnQtZmFtaWx5JywgJ2ZvbnQtc2l6ZScsICdmb250LXN0eWxlJywgJ2NvbG9yJywgJ2xpc3QnLCAnbGluayBdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRvb2xiYXJBY3Rpb25zKFxuICAgIHZhbHVlOiBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGVbXSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgdGhpcy4jX3Rvb2xiYXJBY3Rpb25zID0gdmFsdWUgfHwgVE9PTEJBUl9BQ1RJT05fREVGQVVMVFM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvb2xiYXJBY3Rpb25zKCk6IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX3Rvb2xiYXJBY3Rpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgd2luZG93IG9wdGlvbnMgZm9yIGFkZGluZyBhIGh5cGVybGluay5cbiAgICogQGRlZmF1bHQgWyAnbmV3JywgJ2V4aXN0aW5nJyBdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxpbmtXaW5kb3dPcHRpb25zKFxuICAgIHZhbHVlOiBTa3lUZXh0RWRpdG9yTGlua1dpbmRvd09wdGlvbnNUeXBlW10gfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuI19saW5rV2luZG93T3B0aW9ucyA9IHZhbHVlID8/IExJTktfV0lORE9XX09QVElPTlNfREVGQVVMVFM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxpbmtXaW5kb3dPcHRpb25zKCk6IFNreVRleHRFZGl0b3JMaW5rV2luZG93T3B0aW9uc1R5cGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19saW5rV2luZG93T3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIHBsYWNlZCBiZXNpZGUgdGhlIHRleHQgZWRpdG9yIGxhYmVsLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgW2dsb2JhbCBoZWxwXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2RldmVsb3AvZ2xvYmFsLWhlbHApXG4gICAqIGFzIGNvbmZpZ3VyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdpZnJhbWUnKVxuICBwdWJsaWMgaWZyYW1lUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgdmFsdWUgb2YgdGhlIGNvbnRyb2wuXG4gICAqL1xuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvLyBOb3JtYWxpemUgdmFsdWUgYW5kIHNldCBhbnkgZW1wdHkgc3RhdGUgdG8gYW4gZW1wdHkgc3RyaW5nLlxuICAgIGxldCBub3JtYWxpemVkVmFsdWU6IHN0cmluZztcbiAgICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZT8udHJpbSgpO1xuXG4gICAgaWYgKFxuICAgICAgIXZhbHVlIHx8XG4gICAgICB2YWx1ZVRyaW1tZWQgPT09ICc8cD48L3A+JyB8fFxuICAgICAgdmFsdWVUcmltbWVkID09PSAnPGJyPicgfHxcbiAgICAgIHZhbHVlVHJpbW1lZCA9PT0gJzxwPjxicj48L3A+J1xuICAgICkge1xuICAgICAgbm9ybWFsaXplZFZhbHVlID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMuI3Nhbml0aXphdGlvblNlcnZpY2VcbiAgICAgIC5zYW5pdGl6ZShub3JtYWxpemVkVmFsdWUpXG4gICAgICAudHJpbSgpO1xuXG4gICAgaWYgKHRoaXMuI192YWx1ZSAhPT0gbm9ybWFsaXplZFZhbHVlKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG5cbiAgICAgIC8vIFVwZGF0ZSBhbmd1bGFyIGZvcm0gY29udHJvbCBpZiBtb2RlbCBoYXMgYmVlbiBub3JtYWxpemVkLlxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wgJiZcbiAgICAgICAgbm9ybWFsaXplZFZhbHVlICE9PSB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbHVlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVkVmFsdWUsIHtcbiAgICAgICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gI2luaXRJZnJhbWUoKSB3aWxsIGRvIGFub3RoZXIgY2hlY2sgbGF0ZXIgdG8gc2VlIGlmIHRoZSBlZGl0b3Igc2hvdWxkXG4gICAgICAvLyByZWNlaXZlIGZvY3VzIGlmIG5vdCBpbml0aWFsaXplZCBiZWZvcmUgdGhpcyBpcyBjYWxsZWQuXG4gICAgICB0aGlzLiNjaGVja0F1dG9mb2N1c0FuZEZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfdmFsdWU7XG4gIH1cblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIGlucHV0VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBlZGl0b3JGb2N1c1N0cmVhbSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za3ktZm9ybS1jb250cm9sJylcbiAgcHVibGljIGZvcm1Db250cm9sQ2xhc3MgPSAhIWluamVjdChTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCBlZGl0b3JGb2N1c2VkID0gZmFsc2U7XG5cbiAgI2RlZmF1bHRJZDogc3RyaW5nO1xuICAjaWQ6IHN0cmluZztcbiAgI2ZvY3VzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgI2luaXRpYWxpemVkID0gZmFsc2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX2ZvbnRMaXN0ID0gRk9OVF9MSVNUX0RFRkFVTFRTO1xuICAjX2ZvbnRTaXplTGlzdCA9IEZPTlRfU0laRV9MSVNUX0RFRkFVTFRTO1xuICAjX2xhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX21lcmdlRmllbGRzOiBTa3lUZXh0RWRpdG9yTWVyZ2VGaWVsZFtdID0gW107XG4gICNfbWVudXMgPSBNRU5VX0RFRkFVTFRTO1xuICAjX3Rvb2xiYXJBY3Rpb25zOiBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGVbXSA9IFRPT0xCQVJfQUNUSU9OX0RFRkFVTFRTO1xuICAjX2xpbmtXaW5kb3dPcHRpb25zID0gTElOS19XSU5ET1dfT1BUSU9OU19ERUZBVUxUUztcbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuICAjX2luaXRpYWxTdHlsZVN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgU1RZTEVfU1RBVEVfREVGQVVMVFMpO1xuICAjX3BsYWNlaG9sZGVyID0gJyc7XG4gICNfdmFsdWUgPSAnPHA+PC9wPic7XG5cbiAgcmVhZG9ubHkgI2FkYXB0ZXJTZXJ2aWNlID0gaW5qZWN0KFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5ICNjb3JlQWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2VkaXRvclNlcnZpY2UgPSBpbmplY3QoU2t5VGV4dEVkaXRvclNlcnZpY2UpO1xuICByZWFkb25seSAjaWRTdmMgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3Nhbml0aXphdGlvblNlcnZpY2UgPSBpbmplY3QoU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2UpO1xuICByZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBlcnJvcklkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSByZXF1aXJlZFN0YXRlID0gaW5qZWN0KFNreVJlcXVpcmVkU3RhdGVEaXJlY3RpdmUpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2lkID0gdGhpcy4jZGVmYXVsdElkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNpbml0SWZyYW1lKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UucmVtb3ZlT2JzZXJ2ZXJzKHRoaXMuI2VkaXRvclNlcnZpY2UuZWRpdG9yKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25JZnJhbWVMb2FkKCk6IHZvaWQge1xuICAgIC8vIFJlaW5pdGlhbGl6ZSB0aGUgZWRpdG9yIGlmIGl0IGFscmVhZHkgZXhpc3RzIHRvIGNvdmVyIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHRleHQgZWRpdG9yIG1pZ2h0IGhhdmUgYmVlbiBtb3ZlZCBpbiB0aGUgRE9NLlxuICAgIGlmICh0aGlzLiNlZGl0b3JTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI2luaXRJZnJhbWUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAvLyBVcGRhdGUgSFRNTCBpZiBuZWNlc3NhcnkuXG4gICAgaWYgKHRoaXMuI2luaXRpYWxpemVkKSB7XG4gICAgICBjb25zdCBlZGl0b3JWYWx1ZSA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldEVkaXRvcklubmVySHRtbCgpO1xuICAgICAgaWYgKGVkaXRvclZhbHVlICE9PSB0aGlzLiNfdmFsdWUpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0RWRpdG9ySW5uZXJIdG1sKHRoaXMuI192YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAjY2hlY2tBdXRvZm9jdXNBbmRGb2N1cygpOiB2b2lkIHtcbiAgICAvLyBEb24ndCBzZXQgZm9jdXMgb24gdGhlIGVkaXRvciBpZiB0aGUgaWZyYW1lIGlzbid0IGluaXRpYWxpemVkLlxuICAgIC8vIEF1dG9mb2N1cyBpc24ndCB0ZXN0YWJsZSBpbiBGaXJlZm94IGFuZCBJRS5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLmF1dG9mb2N1cyAmJiB0aGlzLiNpbml0aWFsaXplZCAmJiAhdGhpcy4jZm9jdXNJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNFZGl0b3IoKTtcbiAgICAgIHRoaXMuI2ZvY3VzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVTdHlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUgPSB7XG4gICAgICAuLi50aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUsXG4gICAgICAuLi50aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTdHlsZVN0YXRlKCksXG4gICAgfTtcbiAgfVxuXG4gICNpbml0SWZyYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmluaXRFZGl0b3IoXG4gICAgICB0aGlzLmlkLFxuICAgICAgKHRoaXMuaWZyYW1lUmVmIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLmluaXRpYWxTdHlsZVN0YXRlLFxuICAgICAgdGhpcy5wbGFjZWhvbGRlcixcbiAgICApO1xuXG4gICAgdGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiN1cGRhdGVBMTF5QXR0cmlidXRlcygpO1xuXG4gICAgICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiB3aGVuIHRoZSBmaWVsZCBzdGF0dXMgaXMgbW9kaWZpZWQgcHJvZ3JhbW1hdGljYWxseS5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5pbnB1dExpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBBbmd1bGFyIGRvZXNuJ3QgcnVuIGNoYW5nZSBkZXRlY3Rpb24gZm9yIGNoYW5nZXMgb3JpZ2luYXRpbmcgaW5zaWRlIGFuIGlmcmFtZSxcbiAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBjYWxsIHRoZSBvbkNoYW5nZSgpIGV2ZW50IGluc2lkZSBOZ1pvbmUgdG8gZm9yY2UgY2hhbmdlIHByb3BhZ2F0aW9uIHRvIGNvbnN1bWluZyBjb21wb25lbnRzLlxuICAgICAgICB0aGlzLiN6b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jdmlld1RvTW9kZWxVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5zZWxlY3Rpb25DaGFuZ2VMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jdXBkYXRlU3R5bGUoKTtcbiAgICAgICAgdGhpcy5lZGl0b3JGb2N1c1N0cmVhbS5uZXh0KCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5jbGlja0xpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmVkaXRvckZvY3VzU3RyZWFtLm5leHQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZWRpdG9yU2VydmljZVxuICAgICAgLmJsdXJMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBjaGFuZ2VzIG9yaWdpbmF0aW5nIGluc2lkZSBhbiBpZnJhbWUsXG4gICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gcnVuIG1hcmtGb3JDaGVjaygpIGluc2lkZSB0aGUgTmdab25lIHRvIGZvcmNlIGNoYW5nZSBwcm9wYWdhdGlvbiB0byBjb25zdW1pbmcgY29tcG9uZW50cy5cbiAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI19vblRvdWNoZWQoKTtcbiAgICAgICAgICB0aGlzLmVkaXRvckZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5jb21tYW5kQ2hhbmdlTGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZVN0eWxlKCk7XG4gICAgICAgIHRoaXMuI3ZpZXdUb01vZGVsVXBkYXRlKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5mb2N1c0xpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBBbmd1bGFyIGRvZXNuJ3QgcnVuIGNoYW5nZSBkZXRlY3Rpb24gZm9yIGNoYW5nZXMgb3JpZ2luYXRpbmcgaW5zaWRlIGFuIGlmcmFtZSxcbiAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBydW4gbWFya0ZvckNoZWNrKCkgaW5zaWRlIHRoZSBOZ1pvbmUgdG8gZm9yY2UgY2hhbmdlIHByb3BhZ2F0aW9uIHRvIGNvbnN1bWluZyBjb21wb25lbnRzLlxuICAgICAgICB0aGlzLiN6b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lZGl0b3JGb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldEVkaXRvcklubmVySHRtbCh0aGlzLiNfdmFsdWUpO1xuICAgIHRoaXMuI3VwZGF0ZUExMXlBdHRyaWJ1dGVzKCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLmF1dG9mb2N1cykge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNFZGl0b3IoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNpbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy4jZm9jdXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgdGhpcy4jY2hlY2tBdXRvZm9jdXNBbmRGb2N1cygpO1xuICB9XG5cbiAgI3VwZGF0ZUExMXlBdHRyaWJ1dGVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNlZGl0b3JTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldExhYmVsQXR0cmlidXRlKHRoaXMubGFiZWxUZXh0KTtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldEVycm9yQXR0cmlidXRlcyhcbiAgICAgICAgdGhpcy5sYWJlbFRleHQgPyB0aGlzLmVycm9ySWQgOiAnJyxcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wuZXJyb3JzLFxuICAgICAgKTtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldFJlcXVpcmVkQXR0cmlidXRlKFxuICAgICAgICB0aGlzLnJlcXVpcmVkU3RhdGUuaXNSZXF1aXJlZCgpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAjdmlld1RvTW9kZWxVcGRhdGUoZW1pdENoYW5nZSA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0RWRpdG9ySW5uZXJIdG1sKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZW1pdENoYW5nZSkge1xuICAgICAgdGhpcy4jX29uQ2hhbmdlKHRoaXMuI192YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgI19vblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICB9O1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICNfb25DaGFuZ2U6IChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHZhbHVlOiBhbnksXG4gICkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIH07XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktdGV4dC1lZGl0b3ItZGlzYWJsZWQnOiBkaXNhYmxlZCxcbiAgICAnc2t5LXRleHQtZWRpdG9yLXdyYXBwZXItZm9jdXNlZCc6IGVkaXRvckZvY3VzZWQsXG4gICAgJ3NreS10ZXh0LWVkaXRvci1pbnZhbGlkJzpcbiAgICAgIG5nQ29udHJvbC5lcnJvcnMgJiYgKG5nQ29udHJvbC50b3VjaGVkIHx8IG5nQ29udHJvbC5kaXJ0eSksXG4gICAgJ3NreS1tYXJnaW4tc3RhY2tlZC14cyc6ICEhaGludFRleHRcbiAgfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItbGFiZWwtd3JhcHBlclwiPlxuICAgIEBpZiAobGFiZWxUZXh0KSB7XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnOiByZXF1aXJlZFN0YXRlLmlzUmVxdWlyZWQoKSxcbiAgICAgICAgICAnc2t5LW1hcmdpbi1pbmxpbmUteHMnOiBoZWxwUG9wb3ZlckNvbnRlbnRcbiAgICAgICAgfVwiXG4gICAgICAgID57eyBsYWJlbFRleHQgfX08L2xhYmVsXG4gICAgICA+XG4gICAgICBAaWYgKGhlbHBQb3BvdmVyQ29udGVudCB8fCBoZWxwS2V5KSB7XG4gICAgICAgIDxza3ktaGVscC1pbmxpbmVcbiAgICAgICAgICBbaGVscEtleV09XCJoZWxwS2V5XCJcbiAgICAgICAgICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gICAgICAgICAgW3BvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgICAgICAgW3BvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuICBAaWYgKFxuICAgIChtZW51cyAmJiBtZW51cy5sZW5ndGgpID4gMCB8fCAodG9vbGJhckFjdGlvbnMgJiYgdG9vbGJhckFjdGlvbnMubGVuZ3RoID4gMClcbiAgKSB7XG4gICAgPHNreS10b29sYmFyIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLXRvb2xiYXJcIj5cbiAgICAgIEBpZiAobWVudXMgJiYgbWVudXMubGVuZ3RoID4gMCkge1xuICAgICAgICA8c2t5LXRvb2xiYXItc2VjdGlvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUZXh0IGZvcm1hdHRpbmdcIlxuICAgICAgICAgIGNsYXNzPVwibWVudWJhclwiXG4gICAgICAgICAgcm9sZT1cInRvb2xiYXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS10ZXh0LWVkaXRvci1tZW51YmFyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2VkaXRvckZvY3VzU3RyZWFtXT1cImVkaXRvckZvY3VzU3RyZWFtXCJcbiAgICAgICAgICAgIFttZW51c109XCJtZW51c1wiXG4gICAgICAgICAgICBbbWVyZ2VGaWVsZHNdPVwibWVyZ2VGaWVsZHNcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAodG9vbGJhckFjdGlvbnMgJiYgdG9vbGJhckFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICA8c2t5LXRvb2xiYXItc2VjdGlvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUZXh0IGZvcm1hdHRpbmdcIlxuICAgICAgICAgIGNsYXNzPVwidG9vbGJhclwiXG4gICAgICAgICAgcm9sZT1cInRvb2xiYXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS10ZXh0LWVkaXRvci10b29sYmFyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2VkaXRvckZvY3VzU3RyZWFtXT1cImVkaXRvckZvY3VzU3RyZWFtXCJcbiAgICAgICAgICAgIFtmb250TGlzdF09XCJmb250TGlzdFwiXG4gICAgICAgICAgICBbZm9udFNpemVMaXN0XT1cImZvbnRTaXplTGlzdFwiXG4gICAgICAgICAgICBbbGlua1dpbmRvd09wdGlvbnNdPVwibGlua1dpbmRvd09wdGlvbnNcIlxuICAgICAgICAgICAgW3Rvb2xiYXJBY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCJcbiAgICAgICAgICAgIFtzdHlsZVN0YXRlXT1cImluaXRpYWxTdHlsZVN0YXRlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gICAgICB9XG4gICAgPC9za3ktdG9vbGJhcj5cbiAgfVxuICA8aWZyYW1lXG4gICAgI2lmcmFtZVxuICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLXdyYXBwZXJcIlxuICAgIHNyYz1cImFib3V0OmJsYW5rXCJcbiAgICBhbGxvdz1cImNsaXBib2FyZC1yZWFkICo7IGNsaXBib2FyZC13cml0ZSAqXCJcbiAgICBbYXR0ci50aXRsZV09XCJcbiAgICAgIGxhYmVsVGV4dCB8fCAoJ3NreXV4X3RleHRfZWRpdG9yX2lmcmFtZV90aXRsZV9kZWZhdWx0JyB8IHNreUxpYlJlc291cmNlcylcbiAgICBcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaGludFRleHQgPyBoaW50VGV4dEVsLmlkIDogdW5kZWZpbmVkXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LXRleHQtZWRpdG9yLXdyYXBwZXItZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICAgIChsb2FkKT1cIm9uSWZyYW1lTG9hZCgpXCJcbiAgPlxuICA8L2lmcmFtZT5cbjwvZGl2PlxuPGRpdlxuICAjaGludFRleHRFbD1cInNreUlkXCJcbiAgc2t5SWRcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQgc2t5LXRleHQtZWRpdG9yLWhpbnQtdGV4dCc6ICEhaGludFRleHRcbiAgfVwiXG4+XG4gIHt7IGhpbnRUZXh0IH19XG48L2Rpdj5cbjxza3ktZm9ybS1lcnJvcnNcbiAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItZXJyb3JzXCJcbiAgW2lkXT1cImVycm9ySWRcIlxuICBbZXJyb3JzXT1cIm5nQ29udHJvbC5lcnJvcnNcIlxuICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gIFt0b3VjaGVkXT1cIm5nQ29udHJvbC50b3VjaGVkXCJcbiAgW2RpcnR5XT1cIm5nQ29udHJvbC5kaXJ0eVwiXG4+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1mb3JtLWVycm9yXCIgLz5cbjwvc2t5LWZvcm0tZXJyb3JzPlxuIl19