UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

315 lines 43.6 kB
import { ButtonModule, CheckboxModule, DialogService, DialogSize, IconModule, InputModule, SearchComponent, ThemeService, } from '@alauda/ui'; import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, Optional, TemplateRef, ViewChild, } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { PurePipe } from '../../core/public-api'; import { saveAs } from '../../core/utils/browser'; import { EffectDirectiveModule } from '../../effect-directive/module'; import { XTERM_DARK_THEME, XTERM_LIGHT_THEME } from '../../exec/constants'; import { TranslateModule } from '../../translate/public-api'; import { XtermComponent } from '../xterm.component'; import { XtermTerminalToolbarLeftDirective, XtermTerminalToolbarRightDirective, } from './xterm-terminal.directive'; import * as i0 from "@angular/core"; import * as i1 from "@alauda/ui"; import * as i2 from "@angular/common"; import * as i3 from "../../effect-directive/e2e-attribute-binding.directive"; import * as i4 from "../../translate/translate.pipe"; const _c0 = ["searchInput"]; const _c1 = ["viewTemplate"]; const _c2 = [[["", "aclXtermTerminalToolbarLeft", ""]], [["", "aclXtermTerminalToolbarRight", ""]]]; const _c3 = ["[aclXtermTerminalToolbarLeft]", "[aclXtermTerminalToolbarRight]"]; function XtermTerminalComponent_ng_template_0_div_0_a_8_Template(rf, ctx) { if (rf & 1) { const _r2 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "a", 13); i0.ɵɵlistener("click", function XtermTerminalComponent_ng_template_0_div_0_a_8_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.openSearching()); }); i0.ɵɵelement(1, "aui-icon", 14); i0.ɵɵelementStart(2, "span"); i0.ɵɵtext(3); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd()(); } if (rf & 2) { i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, "find_label")); } } function XtermTerminalComponent_ng_template_0_div_0_a_9_Template(rf, ctx) { if (rf & 1) { const _r4 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "a", 13); i0.ɵɵlistener("click", function XtermTerminalComponent_ng_template_0_div_0_a_9_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.copy()); }); i0.ɵɵelement(1, "aui-icon", 15); i0.ɵɵelementStart(2, "span"); i0.ɵɵtext(3); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd()(); } if (rf & 2) { i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, "copy")); } } function XtermTerminalComponent_ng_template_0_div_0_a_10_Template(rf, ctx) { if (rf & 1) { const _r5 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "a", 13); i0.ɵɵlistener("click", function XtermTerminalComponent_ng_template_0_div_0_a_10_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.export()); }); i0.ɵɵelement(1, "aui-icon", 16); i0.ɵɵelementStart(2, "span"); i0.ɵɵtext(3); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd()(); } if (rf & 2) { i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, "export")); } } function XtermTerminalComponent_ng_template_0_div_0_a_11_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelement(1, "aui-icon", 18); i0.ɵɵelementStart(2, "span"); i0.ɵɵtext(3); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, "full_screen_label")); } } function XtermTerminalComponent_ng_template_0_div_0_a_11_ng_container_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelement(1, "aui-icon", 19); i0.ɵɵelementStart(2, "span"); i0.ɵɵtext(3); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, "exit_full_screen_label")); } } function XtermTerminalComponent_ng_template_0_div_0_a_11_Template(rf, ctx) { if (rf & 1) { const _r6 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "a", 13); i0.ɵɵlistener("click", function XtermTerminalComponent_ng_template_0_div_0_a_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.toggleFullscreen()); }); i0.ɵɵtemplate(1, XtermTerminalComponent_ng_template_0_div_0_a_11_ng_container_1_Template, 5, 3, "ng-container", 17)(2, XtermTerminalComponent_ng_template_0_div_0_a_11_ng_container_2_Template, 5, 3, "ng-container", 17); i0.ɵɵelementEnd(); } if (rf & 2) { const inFullscreen_r7 = i0.ɵɵnextContext(2).$implicit; i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", !inFullscreen_r7); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", inFullscreen_r7); } } function XtermTerminalComponent_ng_template_0_div_0_div_12_Template(rf, ctx) { if (rf & 1) { const _r8 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "div", 20)(1, "aui-search", 21, 1); i0.ɵɵtwoWayListener("keywordChange", function XtermTerminalComponent_ng_template_0_div_0_div_12_Template_aui_search_keywordChange_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.searchKeyword, $event) || (ctx_r2.searchKeyword = $event); return i0.ɵɵresetView($event); }); i0.ɵɵlistener("keydown", function XtermTerminalComponent_ng_template_0_div_0_div_12_Template_aui_search_keydown_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onSearchInputKeyDown($event)); }); i0.ɵɵelementEnd(); i0.ɵɵelementStart(3, "button", 22); i0.ɵɵpipe(4, "translate"); i0.ɵɵlistener("click", function XtermTerminalComponent_ng_template_0_div_0_div_12_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.findPrevious()); }); i0.ɵɵelement(5, "aui-icon", 23); i0.ɵɵelementEnd(); i0.ɵɵelementStart(6, "button", 22); i0.ɵɵpipe(7, "translate"); i0.ɵɵlistener("click", function XtermTerminalComponent_ng_template_0_div_0_div_12_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.findNext()); }); i0.ɵɵelement(8, "aui-icon", 24); i0.ɵɵelementEnd(); i0.ɵɵelementStart(9, "button", 22); i0.ɵɵpipe(10, "translate"); i0.ɵɵlistener("click", function XtermTerminalComponent_ng_template_0_div_0_div_12_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.closeSearching()); }); i0.ɵɵelement(11, "aui-icon", 25); i0.ɵɵelementEnd()(); } if (rf & 2) { const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵadvance(); i0.ɵɵtwoWayProperty("keyword", ctx_r2.searchKeyword); i0.ɵɵadvance(2); i0.ɵɵproperty("square", true)("plain", true)("title", i0.ɵɵpipeBind1(4, 10, "find_previous") + " (Shift + Enter)"); i0.ɵɵadvance(3); i0.ɵɵproperty("square", true)("plain", true)("title", i0.ɵɵpipeBind1(7, 12, "find_next") + " (Enter)"); i0.ɵɵadvance(3); i0.ɵɵproperty("square", true)("plain", true)("title", i0.ɵɵpipeBind1(10, 14, "close") + " (Escape)"); } } function XtermTerminalComponent_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) { const _r1 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "div", 4)(1, "div", 5)(2, "div", 6)(3, "div", 7); i0.ɵɵprojection(4); i0.ɵɵelementEnd(); i0.ɵɵelement(5, "div", 8); i0.ɵɵelementStart(6, "div", 9); i0.ɵɵprojection(7, 1); i0.ɵɵtemplate(8, XtermTerminalComponent_ng_template_0_div_0_a_8_Template, 5, 3, "a", 10)(9, XtermTerminalComponent_ng_template_0_div_0_a_9_Template, 5, 3, "a", 10)(10, XtermTerminalComponent_ng_template_0_div_0_a_10_Template, 5, 3, "a", 10)(11, XtermTerminalComponent_ng_template_0_div_0_a_11_Template, 3, 2, "a", 10); i0.ɵɵelementEnd()()(); i0.ɵɵtemplate(12, XtermTerminalComponent_ng_template_0_div_0_div_12_Template, 12, 16, "div", 11); i0.ɵɵelementStart(13, "acl-xterm", 12); i0.ɵɵpipe(14, "async"); i0.ɵɵlistener("searchAddonInit", function XtermTerminalComponent_ng_template_0_div_0_Template_acl_xterm_searchAddonInit_13_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.searchAddon = $event); })("terminalInit", function XtermTerminalComponent_ng_template_0_div_0_Template_acl_xterm_terminalInit_13_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.terminal = $event); }); i0.ɵɵelementEnd()(); } if (rf & 2) { const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵadvance(8); i0.ɵɵproperty("ngIf", ctx_r2.actionConfig == null ? null : ctx_r2.actionConfig.find); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", ctx_r2.actionConfig == null ? null : ctx_r2.actionConfig.copy); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", ctx_r2.actionConfig == null ? null : ctx_r2.actionConfig.export); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", ctx_r2.actionConfig == null ? null : ctx_r2.actionConfig.fullscreen); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", ctx_r2.searching); i0.ɵɵadvance(); i0.ɵɵproperty("logs", ctx_r2.logs)("theme", i0.ɵɵpipeBind1(14, 7, ctx_r2.theme$)); } } function XtermTerminalComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, XtermTerminalComponent_ng_template_0_div_0_Template, 15, 9, "div", 3); } if (rf & 2) { const inFullscreen_r7 = ctx.$implicit; const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵproperty("ngIf", inFullscreen_r7 ? true : !ctx_r2.fullscreenDialog); } } function XtermTerminalComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } export const BASE_XTERM_TERMINAL_ACTIONS = { find: true, copy: true, fullscreen: true, export: true, }; export class XtermTerminalComponent { constructor(dialog, cdr, theme) { this.dialog = dialog; this.cdr = cdr; this.theme = theme; this.actionConfig = BASE_XTERM_TERMINAL_ACTIONS; this.searching = false; this.searchKeyword = ''; this.fullscreenDialog = null; this.theme$ = this.theme.currentTheme$; } toggleFullscreen() { this.closeSearching(); if (this.fullscreenDialog) { this.fullscreenDialog.close(); this.fullscreenDialog = undefined; } else { this.fullscreenDialog = this.dialog.open(this.viewTemplateRef, { size: DialogSize.Fullscreen, data: true, fitViewport: true, }); this.fullscreenDialog.afterClosed().subscribe(() => { this.fullscreenDialog = undefined; }); } this.cdr.markForCheck(); } openSearching() { this.searching = true; requestAnimationFrame(() => { this.searchInputRef?.focus(); }); } onSearchInputKeyDown(event) { if (event.code === 'Escape') { this.closeSearching(); event.preventDefault(); event.stopPropagation(); } else if (event.code === 'Enter') { if (event.shiftKey) { this.findPrevious(); } else { this.findNext(); } event.preventDefault(); event.stopPropagation(); } } closeSearching() { this.searching = false; this.searchKeyword = ''; this.findNext(); this.terminal?.focus(); } getSearchOptions() { const theme = this.theme.currentTheme() === 'light' ? XTERM_LIGHT_THEME : XTERM_DARK_THEME; return { decorations: { matchBackground: theme.selectionInactiveBackground, matchOverviewRuler: theme.selectionInactiveBackground, activeMatchBackground: theme.selectionBackground, activeMatchColorOverviewRuler: theme.selectionBackground, }, }; } findNext() { this.searchAddon?.findNext(this.searchKeyword, this.getSearchOptions()); } findPrevious() { this.searchAddon?.findPrevious(this.searchKeyword, this.getSearchOptions()); } export() { const data = this.logsStringify(this.logs); const blob = new Blob([data], { type: 'text/plain;charset=utf-8', }); saveAs(blob, new Date().toISOString() + '.txt'); } logsStringify(logs) { return Array.isArray(this.logs) ? this.logs.join('\r\n') : logs; } copy() { navigator.clipboard.writeText(this.logsStringify(this.logs)); } static { this.ɵfac = function XtermTerminalComponent_Factory(t) { return new (t || XtermTerminalComponent)(i0.ɵɵdirectiveInject(i1.DialogService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ThemeService, 8)); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: XtermTerminalComponent, selectors: [["acl-xterm-terminal"]], viewQuery: function XtermTerminalComponent_Query(rf, ctx) { if (rf & 1) { i0.ɵɵviewQuery(_c0, 5); i0.ɵɵviewQuery(_c1, 5); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchInputRef = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.viewTemplateRef = _t.first); } }, inputs: { logs: "logs", actionConfig: "actionConfig" }, standalone: true, features: [i0.ɵɵStandaloneFeature], ngContentSelectors: _c3, decls: 3, vars: 1, consts: [["viewTemplate", ""], ["searchInput", ""], [4, "ngTemplateOutlet"], ["class", "acl-xterm-terminal", 4, "ngIf"], [1, "acl-xterm-terminal"], [1, "acl-xterm-terminal__toolbar"], [1, "acl-xterm-terminal-tools"], [1, "acl-xterm-terminal-tools__left"], [1, "tw-flex-1"], [1, "acl-xterm-terminal-tools__right"], ["href", "javascript:;", 3, "click", 4, "ngIf"], ["class", "acl-xterm-terminal__finding", 4, "ngIf"], [3, "searchAddonInit", "terminalInit", "logs", "theme"], ["href", "javascript:;", 3, "click"], ["icon", "magnifier"], ["icon", "copy"], ["icon", "file_export"], [4, "ngIf"], ["icon", "expand"], ["icon", "compress"], [1, "acl-xterm-terminal__finding"], ["size", "small", 3, "keywordChange", "keydown", "keyword"], ["aui-button", "text", "size", "mini", 3, "click", "square", "plain", "title"], ["icon", "arrow_right", 2, "transform", "rotate(-90deg)"], ["icon", "arrow_right", 2, "transform", "rotate(90deg)"], ["icon", "xmark"]], template: function XtermTerminalComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵprojectionDef(_c2); i0.ɵɵtemplate(0, XtermTerminalComponent_ng_template_0_Template, 1, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(2, XtermTerminalComponent_ng_container_2_Template, 1, 0, "ng-container", 2); } if (rf & 2) { const viewTemplate_r9 = i0.ɵɵreference(1); i0.ɵɵadvance(2); i0.ɵɵproperty("ngTemplateOutlet", viewTemplate_r9); } }, dependencies: [CommonModule, i2.NgIf, i2.NgTemplateOutlet, i2.AsyncPipe, FormsModule, EffectDirectiveModule, i3.E2eAttributeBindingDirective, IconModule, i1.IconComponent, CheckboxModule, TranslateModule, i4.TranslatePipe, XtermComponent, InputModule, i1.SearchComponent, ButtonModule, i1.ButtonComponent], styles: ["[_nghost-%COMP%]{height:100%}.acl-xterm-terminal[_ngcontent-%COMP%]{display:flex;min-height:400px;height:100%;flex:1;flex-flow:column;position:relative;padding:0 12px 12px;background-color:rgb(var(--aui-color-n-9));border-radius:4px}.acl-xterm-terminal__toolbar[_ngcontent-%COMP%]{line-height:20px;flex-shrink:0;display:flex;flex-flow:row;align-items:center;background-color:rgb(var(--aui-color-n-9));padding:10px 20px}.acl-xterm-terminal__toolbar[_ngcontent-%COMP%] aui-checkbox[_ngcontent-%COMP%]{margin:0 4px}.acl-xterm-terminal__toolbar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{display:flex;flex-flow:row;align-items:center;color:rgb(var(--aui-color-n-1));margin:0 4px;opacity:.6}.acl-xterm-terminal__toolbar[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{opacity:1}.acl-xterm-terminal__toolbar[_ngcontent-%COMP%] a[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:16px;height:16px}.acl-xterm-terminal-tools[_ngcontent-%COMP%]{display:flex;flex:1;flex-shrink:0;flex-flow:row;align-items:center}.acl-xterm-terminal-tools__left[_ngcontent-%COMP%], .acl-xterm-terminal-tools__right[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap}.acl-xterm-terminal-tools[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{margin:0 4px}.acl-xterm-terminal-tools[_ngcontent-%COMP%] a[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{margin:0 2px}.acl-xterm-terminal-tools[_ngcontent-%COMP%] acl-xterm[_ngcontent-%COMP%]{min-height:400px}.acl-xterm-terminal__finding[_ngcontent-%COMP%]{position:absolute;top:40px;right:40px;padding:8px;z-index:100;display:flex;align-items:center;background-color:rgb(var(--aui-color-popper-bg));border-radius:var(--aui-border-radius-m);box-shadow:0 0 4px rgb(var(--aui-color-origin-shadow) .1)}.acl-xterm-terminal__finding[_ngcontent-%COMP%] .aui-input[_ngcontent-%COMP%]{margin-right:8px}.acl-xterm-terminal[_ngcontent-%COMP%] .logs-xterm{border:solid 1px rgb(var(--aui-color-n-8));border-radius:4px;overflow:hidden}.acl-xterm-terminal[_ngcontent-%COMP%] acl-xterm[_ngcontent-%COMP%]{height:calc(100% - 42px)}"], changeDetection: 0 }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(XtermTerminalComponent, [{ type: Component, args: [{ selector: 'acl-xterm-terminal', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ CommonModule, FormsModule, EffectDirectiveModule, IconModule, CheckboxModule, TranslateModule, PurePipe, XtermComponent, InputModule, ButtonModule, XtermTerminalToolbarLeftDirective, XtermTerminalToolbarRightDirective, ], template: "<ng-template\n #viewTemplate\n let-inFullscreen\n>\n <div\n *ngIf=\"inFullscreen ? true : !fullscreenDialog\"\n class=\"acl-xterm-terminal\"\n >\n <div class=\"acl-xterm-terminal__toolbar\">\n <div class=\"acl-xterm-terminal-tools\">\n <div class=\"acl-xterm-terminal-tools__left\">\n <ng-content select=\"[aclXtermTerminalToolbarLeft]\"></ng-content>\n </div>\n\n <div class=\"tw-flex-1\"></div>\n\n <div class=\"acl-xterm-terminal-tools__right\">\n <ng-content select=\"[aclXtermTerminalToolbarRight]\"></ng-content>\n\n <a\n href=\"javascript:;\"\n (click)=\"openSearching()\"\n *ngIf=\"actionConfig?.find\"\n >\n <aui-icon icon=\"magnifier\"></aui-icon>\n <span>{{ 'find_label' | translate }}</span>\n </a>\n <a\n href=\"javascript:;\"\n (click)=\"copy()\"\n *ngIf=\"actionConfig?.copy\"\n >\n <aui-icon icon=\"copy\"></aui-icon>\n <span>{{ 'copy' | translate }}</span>\n </a>\n <a\n href=\"javascript:;\"\n (click)=\"export()\"\n *ngIf=\"actionConfig?.export\"\n >\n <aui-icon icon=\"file_export\"></aui-icon>\n <span>{{ 'export' | translate }}</span>\n </a>\n <a\n href=\"javascript:;\"\n (click)=\"toggleFullscreen()\"\n *ngIf=\"actionConfig?.fullscreen\"\n >\n <ng-container *ngIf=\"!inFullscreen\">\n <aui-icon icon=\"expand\"></aui-icon>\n <span>{{ 'full_screen_label' | translate }}</span>\n </ng-container>\n <ng-container *ngIf=\"inFullscreen\">\n <aui-icon icon=\"compress\"></aui-icon>\n <span>{{ 'exit_full_screen_label' | translate }}</span>\n </ng-container>\n </a>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"searching\"\n class=\"acl-xterm-terminal__finding\"\n >\n <aui-search\n #searchInput\n size=\"small\"\n [(keyword)]=\"searchKeyword\"\n (keydown)=\"onSearchInputKeyDown($event)\"\n ></aui-search>\n <button\n aui-button=\"text\"\n size=\"mini\"\n [square]=\"true\"\n [plain]=\"true\"\n [title]=\"('find_previous' | translate) + ' (Shift + Enter)'\"\n (click)=\"findPrevious()\"\n >\n <aui-icon\n icon=\"arrow_right\"\n style=\"transform: rotate(-90deg)\"\n ></aui-icon>\n </button>\n <button\n aui-button=\"text\"\n size=\"mini\"\n [square]=\"true\"\n [plain]=\"true\"\n [title]=\"('find_next' | translate) + ' (Enter)'\"\n (click)=\"findNext()\"\n >\n <aui-icon\n icon=\"arrow_right\"\n style=\"transform: rotate(90deg)\"\n ></aui-icon>\n </button>\n <button\n aui-button=\"text\"\n size=\"mini\"\n [square]=\"true\"\n [plain]=\"true\"\n [title]=\"('close' | translate) + ' (Escape)'\"\n (click)=\"closeSearching()\"\n >\n <aui-icon icon=\"xmark\"></aui-icon>\n </button>\n </div>\n <acl-xterm\n (searchAddonInit)=\"searchAddon = $event\"\n (terminalInit)=\"terminal = $event\"\n [logs]=\"logs\"\n [theme]=\"theme$ | async\"\n ></acl-xterm>\n </div>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"viewTemplate\"></ng-container>\n", styles: [":host{height:100%}.acl-xterm-terminal{display:flex;min-height:400px;height:100%;flex:1;flex-flow:column;position:relative;padding:0 12px 12px;background-color:rgb(var(--aui-color-n-9));border-radius:4px}.acl-xterm-terminal__toolbar{line-height:20px;flex-shrink:0;display:flex;flex-flow:row;align-items:center;background-color:rgb(var(--aui-color-n-9));padding:10px 20px}.acl-xterm-terminal__toolbar aui-checkbox{margin:0 4px}.acl-xterm-terminal__toolbar a{display:flex;flex-flow:row;align-items:center;color:rgb(var(--aui-color-n-1));margin:0 4px;opacity:.6}.acl-xterm-terminal__toolbar a:hover{opacity:1}.acl-xterm-terminal__toolbar a svg{width:16px;height:16px}.acl-xterm-terminal-tools{display:flex;flex:1;flex-shrink:0;flex-flow:row;align-items:center}.acl-xterm-terminal-tools__left,.acl-xterm-terminal-tools__right{display:flex;align-items:center;flex-wrap:wrap}.acl-xterm-terminal-tools a{margin:0 4px}.acl-xterm-terminal-tools a aui-icon{margin:0 2px}.acl-xterm-terminal-tools acl-xterm{min-height:400px}.acl-xterm-terminal__finding{position:absolute;top:40px;right:40px;padding:8px;z-index:100;display:flex;align-items:center;background-color:rgb(var(--aui-color-popper-bg));border-radius:var(--aui-border-radius-m);box-shadow:0 0 4px rgb(var(--aui-color-origin-shadow) .1)}.acl-xterm-terminal__finding .aui-input{margin-right:8px}.acl-xterm-terminal ::ng-deep .logs-xterm{border:solid 1px rgb(var(--aui-color-n-8));border-radius:4px;overflow:hidden}.acl-xterm-terminal acl-xterm{height:calc(100% - 42px)}\n"] }] }], () => [{ type: i1.DialogService }, { type: i0.ChangeDetectorRef }, { type: i1.ThemeService, decorators: [{ type: Optional }] }], { logs: [{ type: Input }], actionConfig: [{ type: Input }], searchInputRef: [{ type: ViewChild, args: ['searchInput', { static: false }] }], viewTemplateRef: [{ type: ViewChild, args: ['viewTemplate', { static: false }] }] }); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(XtermTerminalComponent, { className: "XtermTerminalComponent" }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHRlcm0tdGVybWluYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3h0ZXJtL3h0ZXJtLXRlcm1pbmFsL3h0ZXJtLXRlcm1pbmFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy94dGVybS94dGVybS10ZXJtaW5hbC94dGVybS10ZXJtaW5hbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFFZCxhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsZUFBZSxFQUNmLFlBQVksR0FDYixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsa0NBQWtDLEdBQ25DLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7OztJQ2hCMUIsNkJBSUM7SUFGQyxnTUFBUyxzQkFBZSxLQUFDO0lBR3pCLCtCQUFzQztJQUN0Qyw0QkFBTTtJQUFBLFlBQThCOztJQUN0QyxBQURzQyxpQkFBTyxFQUN6Qzs7SUFESSxlQUE4QjtJQUE5Qix3REFBOEI7Ozs7SUFFdEMsNkJBSUM7SUFGQyxnTUFBUyxhQUFNLEtBQUM7SUFHaEIsK0JBQWlDO0lBQ2pDLDRCQUFNO0lBQUEsWUFBd0I7O0lBQ2hDLEFBRGdDLGlCQUFPLEVBQ25DOztJQURJLGVBQXdCO0lBQXhCLGtEQUF3Qjs7OztJQUVoQyw2QkFJQztJQUZDLGlNQUFTLGVBQVEsS0FBQztJQUdsQiwrQkFBd0M7SUFDeEMsNEJBQU07SUFBQSxZQUEwQjs7SUFDbEMsQUFEa0MsaUJBQU8sRUFDckM7O0lBREksZUFBMEI7SUFBMUIsb0RBQTBCOzs7SUFPaEMsNkJBQW9DO0lBQ2xDLCtCQUFtQztJQUNuQyw0QkFBTTtJQUFBLFlBQXFDOztJQUFBLGlCQUFPOzs7SUFBNUMsZUFBcUM7SUFBckMsK0RBQXFDOzs7SUFFN0MsNkJBQW1DO0lBQ2pDLCtCQUFxQztJQUNyQyw0QkFBTTtJQUFBLFlBQTBDOztJQUFBLGlCQUFPOzs7SUFBakQsZUFBMEM7SUFBMUMsb0VBQTBDOzs7O0lBWHBELDZCQUlDO0lBRkMsaU1BQVMseUJBQWtCLEtBQUM7SUFPNUIsQUFKQSxtSEFBb0Msc0dBSUQ7SUFJckMsaUJBQUk7OztJQVJhLGNBQW1CO0lBQW5CLHVDQUFtQjtJQUluQixjQUFrQjtJQUFsQixzQ0FBa0I7Ozs7SUFZdkMsQUFKRiwrQkFHQyx3QkFNRTtJQUZDLDJVQUEyQjtJQUMzQixzTkFBVyxtQ0FBNEIsS0FBQztJQUN6QyxpQkFBYTtJQUNkLGtDQU9DOztJQURDLHdNQUFTLHFCQUFjLEtBQUM7SUFFeEIsK0JBR1k7SUFDZCxpQkFBUztJQUNULGtDQU9DOztJQURDLHdNQUFTLGlCQUFVLEtBQUM7SUFFcEIsK0JBR1k7SUFDZCxpQkFBUztJQUNULGtDQU9DOztJQURDLHdNQUFTLHVCQUFnQixLQUFDO0lBRTFCLGdDQUFrQztJQUV0QyxBQURFLGlCQUFTLEVBQ0w7OztJQXZDRixjQUEyQjtJQUEzQixvREFBMkI7SUFNM0IsZUFBZTtJQUVmLEFBREEsQUFEQSw2QkFBZSxlQUNELHNFQUM4QztJQVc1RCxlQUFlO0lBRWYsQUFEQSxBQURBLDZCQUFlLGVBQ0QsMERBQ2tDO0lBV2hELGVBQWU7SUFFZixBQURBLEFBREEsNkJBQWUsZUFDRCx3REFDK0I7Ozs7SUEzRjdDLEFBREYsQUFERixBQUpGLDhCQUdDLGFBQzBDLGFBQ0QsYUFDUTtJQUMxQyxrQkFBZ0U7SUFDbEUsaUJBQU07SUFFTix5QkFBNkI7SUFFN0IsOEJBQTZDO0lBQzNDLHFCQUFpRTtJQTBCakUsQUFSQSxBQVJBLEFBUkEsd0ZBSUMsMkVBUUEsNkVBUUEsNkVBUUE7SUFZUCxBQURFLEFBREUsaUJBQU0sRUFDRixFQUNGO0lBQ04sZ0dBR0M7SUE0Q0Qsc0NBS0M7O0lBSEMsQUFEQSwrUEFBd0MseU9BQ047SUFJdEMsQUFERyxpQkFBWSxFQUNUOzs7SUEzRkssZUFBd0I7SUFBeEIsb0ZBQXdCO0lBUXhCLGNBQXdCO0lBQXhCLG9GQUF3QjtJQVF4QixjQUEwQjtJQUExQixzRkFBMEI7SUFRMUIsY0FBOEI7SUFBOUIsMEZBQThCO0lBZXBDLGNBQWU7SUFBZix1Q0FBZTtJQWlEaEIsY0FBYTtJQUNiLEFBREEsa0NBQWEsK0NBQ1c7OztJQTNHNUIsc0ZBR0M7Ozs7SUFGRSx3RUFBNkM7OztJQStHbEQsd0JBQThEOztBRHhFOUQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUc7SUFDekMsSUFBSSxFQUFFLElBQUk7SUFDVixJQUFJLEVBQUUsSUFBSTtJQUNWLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQztBQXVCRixNQUFNLE9BQU8sc0JBQXNCO0lBc0JqQyxZQUNtQixNQUFxQixFQUMvQixHQUFzQixFQUVaLEtBQW1CO1FBSG5CLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDL0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFFWixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBckJ0QyxpQkFBWSxHQUE4QiwyQkFBMkIsQ0FBQztRQVd0RSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRW5CLHFCQUFnQixHQUFzQyxJQUFJLENBQUM7UUFTM0QsV0FBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO0lBRi9CLENBQUM7SUFJSixnQkFBZ0I7UUFDZCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUM3RCxJQUFJLEVBQUUsVUFBVSxDQUFDLFVBQVU7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNqRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFvQjtRQUN2QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUIsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsQ0FBQztZQUNELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLEtBQUssR0FDVCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLE9BQU87WUFDbkMsQ0FBQyxDQUFDLGlCQUFpQjtZQUNuQixDQUFDLENBQUMsZ0JBQWdCLENBQUM7UUFDdkIsT0FBTztZQUNMLFdBQVcsRUFBRTtnQkFDWCxlQUFlLEVBQUUsS0FBSyxDQUFDLDJCQUEyQjtnQkFDbEQsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLDJCQUEyQjtnQkFDckQscUJBQXFCLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtnQkFDaEQsNkJBQTZCLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjthQUN6RDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxFQUFFLDBCQUEwQjtTQUNqQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUF1QjtRQUMzQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBZSxDQUFDO0lBQzlFLENBQUM7SUFFRCxJQUFJO1FBQ0YsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO3VGQXRIVSxzQkFBc0I7b0VBQXRCLHNCQUFzQjs7Ozs7Ozs7O1lDNENuQyxBQXBIQSx3SEFHQyw0RUFpSDhDOzs7WUFBaEMsZUFBOEI7WUFBOUIsa0RBQThCOzRCRDFEekMsWUFBWSw4Q0FDWixXQUFXO1lBQ1gscUJBQXFCLG1DQUNyQixVQUFVLG9CQUNWLGNBQWM7WUFDZCxlQUFlLG9CQUVmLGNBQWM7WUFDZCxXQUFXLHNCQUNYLFlBQVk7O2lGQUtILHNCQUFzQjtjQXJCbEMsU0FBUzsyQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7b0JBQ1AsWUFBWTtvQkFDWixXQUFXO29CQUNYLHFCQUFxQjtvQkFDckIsVUFBVTtvQkFDVixjQUFjO29CQUNkLGVBQWU7b0JBQ2YsUUFBUTtvQkFDUixjQUFjO29CQUNkLFdBQVc7b0JBQ1gsWUFBWTtvQkFDWixpQ0FBaUM7b0JBQ2pDLGtDQUFrQztpQkFDbkM7O3NCQTJCRSxRQUFRO3FCQXZCWCxJQUFJO2tCQURILEtBQUs7WUFJTixZQUFZO2tCQURYLEtBQUs7WUFJTixjQUFjO2tCQURiLFNBQVM7bUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUkzQyxlQUFlO2tCQURkLFNBQVM7bUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7a0ZBVmpDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgQ2hlY2tib3hNb2R1bGUsXG4gIERpYWxvZ1JlZixcbiAgRGlhbG9nU2VydmljZSxcbiAgRGlhbG9nU2l6ZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIFNlYXJjaENvbXBvbmVudCxcbiAgVGhlbWVTZXJ2aWNlLFxufSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9wdGlvbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGVybWluYWwgfSBmcm9tICd4dGVybSc7XG5pbXBvcnQgeyBTZWFyY2hBZGRvbiB9IGZyb20gJ3h0ZXJtLWFkZG9uLXNlYXJjaCc7XG5cbmltcG9ydCB7IFB1cmVQaXBlIH0gZnJvbSAnLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvYnJvd3Nlcic7XG5pbXBvcnQgeyBFZmZlY3REaXJlY3RpdmVNb2R1bGUgfSBmcm9tICcuLi8uLi9lZmZlY3QtZGlyZWN0aXZlL21vZHVsZSc7XG5pbXBvcnQgeyBYVEVSTV9EQVJLX1RIRU1FLCBYVEVSTV9MSUdIVF9USEVNRSB9IGZyb20gJy4uLy4uL2V4ZWMvY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJy4uLy4uL3RyYW5zbGF0ZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFh0ZXJtQ29tcG9uZW50IH0gZnJvbSAnLi4veHRlcm0uY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgWHRlcm1UZXJtaW5hbFRvb2xiYXJMZWZ0RGlyZWN0aXZlLFxuICBYdGVybVRlcm1pbmFsVG9vbGJhclJpZ2h0RGlyZWN0aXZlLFxufSBmcm9tICcuL3h0ZXJtLXRlcm1pbmFsLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgWHRlcm1UZXJtaW5hbEFjdGlvbkNvbmZpZyB7XG4gIGZpbmQ/OiBib29sZWFuO1xuICBjb3B5PzogYm9vbGVhbjtcbiAgZnVsbHNjcmVlbj86IGJvb2xlYW47XG4gIGV4cG9ydD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBCQVNFX1hURVJNX1RFUk1JTkFMX0FDVElPTlMgPSB7XG4gIGZpbmQ6IHRydWUsXG4gIGNvcHk6IHRydWUsXG4gIGZ1bGxzY3JlZW46IHRydWUsXG4gIGV4cG9ydDogdHJ1ZSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC14dGVybS10ZXJtaW5hbCcsXG4gIHRlbXBsYXRlVXJsOiAneHRlcm0tdGVybWluYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsneHRlcm0tdGVybWluYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRWZmZWN0RGlyZWN0aXZlTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgQ2hlY2tib3hNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFB1cmVQaXBlLFxuICAgIFh0ZXJtQ29tcG9uZW50LFxuICAgIElucHV0TW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBYdGVybVRlcm1pbmFsVG9vbGJhckxlZnREaXJlY3RpdmUsXG4gICAgWHRlcm1UZXJtaW5hbFRvb2xiYXJSaWdodERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgWHRlcm1UZXJtaW5hbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGxvZ3M6IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIEBJbnB1dCgpXG4gIGFjdGlvbkNvbmZpZzogWHRlcm1UZXJtaW5hbEFjdGlvbkNvbmZpZyA9IEJBU0VfWFRFUk1fVEVSTUlOQUxfQUNUSU9OUztcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBzZWFyY2hJbnB1dFJlZjogU2VhcmNoQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdUZW1wbGF0ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICB2aWV3VGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHRlcm1pbmFsOiBUZXJtaW5hbDtcbiAgc2VhcmNoQWRkb246IFNlYXJjaEFkZG9uO1xuXG4gIHNlYXJjaGluZyA9IGZhbHNlO1xuXG4gIHNlYXJjaEtleXdvcmQgPSAnJztcblxuICBmdWxsc2NyZWVuRGlhbG9nOiBEaWFsb2dSZWY8WHRlcm1UZXJtaW5hbENvbXBvbmVudD4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGVtZTogVGhlbWVTZXJ2aWNlLFxuICApIHt9XG5cbiAgdGhlbWUkID0gdGhpcy50aGVtZS5jdXJyZW50VGhlbWUkO1xuXG4gIHRvZ2dsZUZ1bGxzY3JlZW4oKSB7XG4gICAgdGhpcy5jbG9zZVNlYXJjaGluZygpO1xuICAgIGlmICh0aGlzLmZ1bGxzY3JlZW5EaWFsb2cpIHtcbiAgICAgIHRoaXMuZnVsbHNjcmVlbkRpYWxvZy5jbG9zZSgpO1xuICAgICAgdGhpcy5mdWxsc2NyZWVuRGlhbG9nID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZ1bGxzY3JlZW5EaWFsb2cgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMudmlld1RlbXBsYXRlUmVmLCB7XG4gICAgICAgIHNpemU6IERpYWxvZ1NpemUuRnVsbHNjcmVlbixcbiAgICAgICAgZGF0YTogdHJ1ZSxcbiAgICAgICAgZml0Vmlld3BvcnQ6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5mdWxsc2NyZWVuRGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuRGlhbG9nID0gdW5kZWZpbmVkO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb3BlblNlYXJjaGluZygpIHtcbiAgICB0aGlzLnNlYXJjaGluZyA9IHRydWU7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXRSZWY/LmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBvblNlYXJjaElucHV0S2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5jb2RlID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5jbG9zZVNlYXJjaGluZygpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIHRoaXMuZmluZFByZXZpb3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbmROZXh0KCk7XG4gICAgICB9XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VTZWFyY2hpbmcoKSB7XG4gICAgdGhpcy5zZWFyY2hpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnNlYXJjaEtleXdvcmQgPSAnJztcbiAgICB0aGlzLmZpbmROZXh0KCk7XG4gICAgdGhpcy50ZXJtaW5hbD8uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VhcmNoT3B0aW9ucygpIHtcbiAgICBjb25zdCB0aGVtZSA9XG4gICAgICB0aGlzLnRoZW1lLmN1cnJlbnRUaGVtZSgpID09PSAnbGlnaHQnXG4gICAgICAgID8gWFRFUk1fTElHSFRfVEhFTUVcbiAgICAgICAgOiBYVEVSTV9EQVJLX1RIRU1FO1xuICAgIHJldHVybiB7XG4gICAgICBkZWNvcmF0aW9uczoge1xuICAgICAgICBtYXRjaEJhY2tncm91bmQ6IHRoZW1lLnNlbGVjdGlvbkluYWN0aXZlQmFja2dyb3VuZCxcbiAgICAgICAgbWF0Y2hPdmVydmlld1J1bGVyOiB0aGVtZS5zZWxlY3Rpb25JbmFjdGl2ZUJhY2tncm91bmQsXG4gICAgICAgIGFjdGl2ZU1hdGNoQmFja2dyb3VuZDogdGhlbWUuc2VsZWN0aW9uQmFja2dyb3VuZCxcbiAgICAgICAgYWN0aXZlTWF0Y2hDb2xvck92ZXJ2aWV3UnVsZXI6IHRoZW1lLnNlbGVjdGlvbkJhY2tncm91bmQsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBmaW5kTmV4dCgpIHtcbiAgICB0aGlzLnNlYXJjaEFkZG9uPy5maW5kTmV4dCh0aGlzLnNlYXJjaEtleXdvcmQsIHRoaXMuZ2V0U2VhcmNoT3B0aW9ucygpKTtcbiAgfVxuXG4gIGZpbmRQcmV2aW91cygpIHtcbiAgICB0aGlzLnNlYXJjaEFkZG9uPy5maW5kUHJldmlvdXModGhpcy5zZWFyY2hLZXl3b3JkLCB0aGlzLmdldFNlYXJjaE9wdGlvbnMoKSk7XG4gIH1cblxuICBleHBvcnQoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMubG9nc1N0cmluZ2lmeSh0aGlzLmxvZ3MpO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZGF0YV0sIHtcbiAgICAgIHR5cGU6ICd0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgnLFxuICAgIH0pO1xuXG4gICAgc2F2ZUFzKGJsb2IsIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSArICcudHh0Jyk7XG4gIH1cblxuICBwcml2YXRlIGxvZ3NTdHJpbmdpZnkobG9nczogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmxvZ3MpID8gdGhpcy5sb2dzLmpvaW4oJ1xcclxcbicpIDogKGxvZ3MgYXMgc3RyaW5nKTtcbiAgfVxuXG4gIGNvcHkoKSB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGhpcy5sb2dzU3RyaW5naWZ5KHRoaXMubG9ncykpO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGVcbiAgI3ZpZXdUZW1wbGF0ZVxuICBsZXQtaW5GdWxsc2NyZWVuXG4+XG4gIDxkaXZcbiAgICAqbmdJZj1cImluRnVsbHNjcmVlbiA/IHRydWUgOiAhZnVsbHNjcmVlbkRpYWxvZ1wiXG4gICAgY2xhc3M9XCJhY2wteHRlcm0tdGVybWluYWxcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImFjbC14dGVybS10ZXJtaW5hbF9fdG9vbGJhclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFjbC14dGVybS10ZXJtaW5hbC10b29sc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWNsLXh0ZXJtLXRlcm1pbmFsLXRvb2xzX19sZWZ0XCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FjbFh0ZXJtVGVybWluYWxUb29sYmFyTGVmdF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4LTFcIj48L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWNsLXh0ZXJtLXRlcm1pbmFsLXRvb2xzX19yaWdodFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthY2xYdGVybVRlcm1pbmFsVG9vbGJhclJpZ2h0XVwiPjwvbmctY29udGVudD5cblxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuU2VhcmNoaW5nKClcIlxuICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25Db25maWc/LmZpbmRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktaWNvbiBpY29uPVwibWFnbmlmaWVyXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdmaW5kX2xhYmVsJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNvcHkoKVwiXG4gICAgICAgICAgICAqbmdJZj1cImFjdGlvbkNvbmZpZz8uY29weVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJjb3B5XCI+PC9hdWktaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdjb3B5JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImV4cG9ydCgpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uQ29uZmlnPy5leHBvcnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktaWNvbiBpY29uPVwiZmlsZV9leHBvcnRcIj48L2F1aS1pY29uPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ2V4cG9ydCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIlxuICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25Db25maWc/LmZ1bGxzY3JlZW5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5GdWxsc2NyZWVuXCI+XG4gICAgICAgICAgICAgIDxhdWktaWNvbiBpY29uPVwiZXhwYW5kXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ2Z1bGxfc2NyZWVuX2xhYmVsJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluRnVsbHNjcmVlblwiPlxuICAgICAgICAgICAgICA8YXVpLWljb24gaWNvbj1cImNvbXByZXNzXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ2V4aXRfZnVsbF9zY3JlZW5fbGFiZWwnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwic2VhcmNoaW5nXCJcbiAgICAgIGNsYXNzPVwiYWNsLXh0ZXJtLXRlcm1pbmFsX19maW5kaW5nXCJcbiAgICA+XG4gICAgICA8YXVpLXNlYXJjaFxuICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgWyhrZXl3b3JkKV09XCJzZWFyY2hLZXl3b3JkXCJcbiAgICAgICAgKGtleWRvd24pPVwib25TZWFyY2hJbnB1dEtleURvd24oJGV2ZW50KVwiXG4gICAgICA+PC9hdWktc2VhcmNoPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgIHNpemU9XCJtaW5pXCJcbiAgICAgICAgW3NxdWFyZV09XCJ0cnVlXCJcbiAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICBbdGl0bGVdPVwiKCdmaW5kX3ByZXZpb3VzJyB8IHRyYW5zbGF0ZSkgKyAnIChTaGlmdCArIEVudGVyKSdcIlxuICAgICAgICAoY2xpY2spPVwiZmluZFByZXZpb3VzKClcIlxuICAgICAgPlxuICAgICAgICA8YXVpLWljb25cbiAgICAgICAgICBpY29uPVwiYXJyb3dfcmlnaHRcIlxuICAgICAgICAgIHN0eWxlPVwidHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKVwiXG4gICAgICAgID48L2F1aS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgICAgc2l6ZT1cIm1pbmlcIlxuICAgICAgICBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICAgIFt0aXRsZV09XCIoJ2ZpbmRfbmV4dCcgfCB0cmFuc2xhdGUpICsgJyAoRW50ZXIpJ1wiXG4gICAgICAgIChjbGljayk9XCJmaW5kTmV4dCgpXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgaWNvbj1cImFycm93X3JpZ2h0XCJcbiAgICAgICAgICBzdHlsZT1cInRyYW5zZm9ybTogcm90YXRlKDkwZGVnKVwiXG4gICAgICAgID48L2F1aS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgICAgc2l6ZT1cIm1pbmlcIlxuICAgICAgICBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICAgIFt0aXRsZV09XCIoJ2Nsb3NlJyB8IHRyYW5zbGF0ZSkgKyAnIChFc2NhcGUpJ1wiXG4gICAgICAgIChjbGljayk9XCJjbG9zZVNlYXJjaGluZygpXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS1pY29uIGljb249XCJ4bWFya1wiPjwvYXVpLWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8YWNsLXh0ZXJtXG4gICAgICAoc2VhcmNoQWRkb25Jbml0KT1cInNlYXJjaEFkZG9uID0gJGV2ZW50XCJcbiAgICAgICh0ZXJtaW5hbEluaXQpPVwidGVybWluYWwgPSAkZXZlbnRcIlxuICAgICAgW2xvZ3NdPVwibG9nc1wiXG4gICAgICBbdGhlbWVdPVwidGhlbWUkIHwgYXN5bmNcIlxuICAgID48L2FjbC14dGVybT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidmlld1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4iXX0=