@xxmachina/components 19.5.0 → 19.6.1
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.
- package/fesm2022/xxmachina-components-molecules-weekly-header.mjs +2 -2
- package/fesm2022/xxmachina-components-molecules-weekly-header.mjs.map +1 -1
- package/fesm2022/xxmachina-components-organisms-calendar-section.mjs +2 -2
- package/fesm2022/xxmachina-components-organisms-calendar-section.mjs.map +1 -1
- package/fesm2022/xxmachina-components-pages-command.mjs +2 -2
- package/fesm2022/xxmachina-components-pages-command.mjs.map +1 -1
- package/fesm2022/xxmachina-components-pages-query.mjs +2 -2
- package/fesm2022/xxmachina-components-pages-query.mjs.map +1 -1
- package/fesm2022/xxmachina-components-pages-thread.mjs +2 -2
- package/fesm2022/xxmachina-components-pages-thread.mjs.map +1 -1
- package/fesm2022/xxmachina-components-templates-agent.mjs +2 -2
- package/fesm2022/xxmachina-components-templates-agent.mjs.map +1 -1
- package/fesm2022/xxmachina-components.mjs +2 -2
- package/fesm2022/xxmachina-components.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-components-templates-agent.mjs","sources":["../tmp-esm2022/templates/agent/agent.template.js","../tmp-esm2022/templates/agent/xxmachina-components-templates-agent.js"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, ChangeDetectorRef, viewChild } from '@angular/core';\nimport { NgAtomicComponent, provideComponent } from '@ng-atomic/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { AutoLayoutFrame } from '@ng-atomic/components/frames/auto-layout';\nimport { CardFrame } from '@ng-atomic/components/frames/card';\nimport { ActionButtonsSectionOrganism } from '@ng-atomic/components/organisms/action-buttons-section';\nimport { HeadingOrganism } from '@ng-atomic/components/organisms/heading';\nimport { NgAtomicFormSectionBuilder } from '@ng-atomic/components/templates/form';\nimport { EntranceTemplateStore } from '@ng-atomic/components/templates/entrance';\nimport { AppService } from '@ng-atomic/common/services/app';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { XtermOrganism } from '@xxmachina/components/organisms/xterm';\nimport chalk from 'chalk';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ng-atomic/components/templates/entrance\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@angular/material/button\";\nimport * as i4 from \"@angular/material/icon\";\nimport * as i5 from \"@angular/material/tooltip\";\nvar ActionId;\n(function (ActionId) {\n ActionId[\"SIGN_IN\"] = \"[@ng-atomic/components] Sign In\";\n ActionId[\"SIGN_IN_WITH_GOOGLE\"] = \"[@ng-atomic/components] Sign In With Google\";\n ActionId[\"SIGN_IN_WITH_TWITTER\"] = \"[@ng-atomic/components] Sign In With Twitter\";\n ActionId[\"SIGN_OUT\"] = \"[@ng-atomic/components] Sign Out\";\n})(ActionId || (ActionId = {}));\nexport class AgentTemplate extends NgAtomicComponent {\n constructor() {\n super(...arguments);\n this.ActionId = ActionId;\n this.store = inject(EntranceTemplateStore);\n this.cdr = inject(ChangeDetectorRef);\n this.app = inject(AppService);\n this.xtermComponent = viewChild('xtermComponent');\n this.inputField = viewChild('inputField');\n this.statusText = 'Ready';\n this.isProcessing = false;\n this.showCursor = false;\n this.cursorLeft = 60;\n this.cursorTop = 12;\n this.commandHistory = [];\n this.historyIndex = -1;\n // 入力管理\n this.currentInput = 'x_x ';\n }\n static { this.ActionId = ActionId; }\n ngAfterViewInit() {\n // 入力フィールドにフォーカス\n setTimeout(() => {\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.focus();\n // 初期高さを適切に設定\n this.adjustTextareaHeight();\n }\n }, 100);\n }\n onTerminalReady(terminal) {\n this.terminal = terminal;\n // 初期メッセージの表示\n this.showWelcomeMessage();\n // 初回ロード時は最上部にスクロール(アスキーアートから見えるように)\n setTimeout(() => {\n this.terminal.scrollToTop();\n }, 50);\n // 入力フィールドにフォーカスと高さ調整\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.focus();\n this.adjustTextareaHeight();\n }\n }\n showWelcomeMessage() {\n // アスキーアート(lain風の色で)\n this.terminal.writeln('');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('███╗ ███╗ █████╗ ██████╗██╗ ██╗██╗███╗ ██╗ █████╗ ')}`);\n this.terminal.writeln(`${chalk.cyan('████╗ ████║██╔══██╗██╔════╝██║ ██║██║████╗ ██║██╔══██╗')}`);\n this.terminal.writeln(`${chalk.cyan('██╔████╔██║███████║██║ ███████║██║██╔██╗ ██║███████║')}`);\n this.terminal.writeln(`${chalk.cyan('██║╚██╔╝██║██╔══██║██║ ██╔══██║██║██║╚██╗██║██╔══██║')}`);\n this.terminal.writeln(`${chalk.cyan('██║ ╚═╝ ██║██║ ██║╚██████╗██║ ██║██║██║ ╚████║██║ ██║')}`);\n this.terminal.writeln(`${chalk.cyan('╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝')}`);\n this.terminal.writeln(`${chalk.cyan(' █████╗ ██████╗ ███████╗███╗ ██╗████████╗')}`);\n this.terminal.writeln(`${chalk.cyan(' ██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝')}`);\n this.terminal.writeln(`${chalk.cyan(' ███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ')}`);\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● Welcome to \\x1b[1;93m合同会社マキナエージェント\\x1b[0m')}`);\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● 会社概要\\x1b[0m')}`);\n this.terminal.writeln(' 合同会社マキナエージェントは、AI技術を活用した');\n this.terminal.writeln(' 革新的なソリューションを提供する企業です。');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● 事業内容\\x1b[0m')}`);\n this.terminal.writeln(' - システム開発のコンサルティング事業');\n this.terminal.writeln(' - AIアジャイル開発の導入支援事業');\n this.terminal.writeln(' - 自己改変型AIエージェント(オートポイエーシス)の開発事業');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● ビジョン\\x1b[0m')}`);\n this.terminal.writeln(' 人とAIが協働する未来を創造し、');\n this.terminal.writeln(' あらゆるビジネスの可能性を拡げます。');\n this.terminal.writeln('');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● Type \\x1b[1;36mlogin\\x1b[1;33m to sign in with Google\\x1b[0m')}`);\n this.terminal.writeln(`${chalk.cyan('● Type \\x1b[1;36mhelp\\x1b[1;33m for more commands\\x1b[0m')}`);\n this.terminal.writeln('');\n // プロンプト表示\n this.showPrompt();\n }\n showPrompt() {\n // プロンプトはHTML側の入力フィールドで表示するため不要\n }\n processCommand(command) {\n this.isProcessing = true;\n this.statusText = 'Processing...';\n this.cdr.markForCheck();\n // ログインコマンド\n if (command === 'login') {\n this.terminal.writeln('\\x1b[1;32m● Initiating Google authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });\n this.completeProcessing();\n }, 300);\n }\n else if (command.startsWith('auth')) {\n if (command.includes('google')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating Google authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });\n this.completeProcessing();\n }, 300);\n }\n else if (command.includes('twitter')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating Twitter authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_TWITTER });\n this.completeProcessing();\n }, 300);\n }\n else if (command.includes('local')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating local authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN });\n this.completeProcessing();\n }, 300);\n }\n else {\n this.terminal.writeln('\\x1b[1;32m● Available authentication methods:\\x1b[0m');\n this.terminal.writeln(' - auth --provider=google');\n this.terminal.writeln(' - auth --provider=twitter');\n this.terminal.writeln(' - auth --provider=local');\n this.completeProcessing();\n }\n }\n // ログアウトコマンド\n else if (command === 'logout' || command === 'signout') {\n this.terminal.writeln('\\x1b[1;32m● Signing out...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_OUT });\n setTimeout(() => {\n this.terminal.writeln('\\x1b[1;32m● You have been signed out.\\x1b[0m');\n this.terminal.writeln('\\x1b[1;33m● Type \"login\" to sign in again.\\x1b[0m');\n this.completeProcessing();\n }, 500);\n }, 300);\n }\n // ヘルプコマンド\n else if (command === 'help' || command === '?') {\n this.terminal.writeln('\\x1b[1;32m● Available commands:\\x1b[0m');\n this.terminal.writeln(' \\x1b[36mlogin\\x1b[0m - Sign in with Google (default)');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mgoogle\\x1b[0m - Sign in with Google');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mtwitter\\x1b[0m - Sign in with Twitter');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mlocal\\x1b[0m - Sign in with email/password');\n this.terminal.writeln(' \\x1b[36mlogout\\x1b[0m / \\x1b[36msignout\\x1b[0m - Sign out from the application');\n this.terminal.writeln(' \\x1b[36mabout\\x1b[0m - Show company information');\n this.terminal.writeln(' \\x1b[36mclear\\x1b[0m - Clear terminal');\n this.terminal.writeln(' \\x1b[36mhelp\\x1b[0m / \\x1b[36m?\\x1b[0m - Show this help');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;33m● Keyboard shortcuts:\\x1b[0m');\n this.terminal.writeln(' \\x1b[36m⌘K\\x1b[0m / \\x1b[36mCtrl+K\\x1b[0m - Generate command suggestions');\n this.terminal.writeln(' \\x1b[36m↑\\x1b[0m / \\x1b[36m↓\\x1b[0m - Navigate command history');\n this.completeProcessing();\n }\n // 会社情報コマンド\n else if (command === 'about') {\n this.terminal.writeln('\\x1b[1;36m● 合同会社マキナエージェント\\x1b[0m');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● 会社概要\\x1b[0m');\n this.terminal.writeln(' 合同会社マキナエージェントは、AI技術を活用した');\n this.terminal.writeln(' 革新的なソリューションを提供する企業です。');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● 事業内容\\x1b[0m');\n this.terminal.writeln(' - システム開発のコンサルティング事業');\n this.terminal.writeln(' - AIアジャイル開発の導入支援事業');\n this.terminal.writeln(' - 自己改変型AIエージェント(オートポイエーシス)の開発事業');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● ビジョン\\x1b[0m');\n this.terminal.writeln(' 人とAIが協働する未来を創造し、');\n this.terminal.writeln(' あらゆるビジネスの可能性を拡げます。');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● お問い合わせ\\x1b[0m');\n this.terminal.writeln(' 詳細については、ログイン後にお問い合わせください。');\n this.completeProcessing();\n }\n // クリアコマンド\n else if (command === 'clear' || command === 'cls') {\n this.terminal.clear();\n this.terminal.scrollToBottom();\n this.completeProcessing();\n }\n // 不明なコマンド\n else {\n this.terminal.writeln(`\\x1b[1;31m● Command not found: ${command}\\x1b[0m`);\n this.terminal.writeln(' Type \"help\" for available commands.');\n this.completeProcessing();\n }\n }\n completeProcessing() {\n this.isProcessing = false;\n this.statusText = 'Ready';\n this.cdr.markForCheck();\n this.terminal.writeln('');\n // 最新の出力が見えるようにスクロール\n this.terminal.scrollToBottom();\n // 入力フィールドにフォーカスを戻す\n setTimeout(() => {\n this.inputField()?.nativeElement?.focus();\n }, 100);\n }\n handleEnter(event) {\n // Shift+EnterまたはCtrl+Enterの場合は改行を許可\n if (event.shiftKey || event.ctrlKey) {\n return; // デフォルト動作(改行)を許可\n }\n event.preventDefault();\n const prefix = 'x_x ';\n const actualCommand = this.currentInput.startsWith(prefix)\n ? this.currentInput.slice(prefix.length).trim()\n : this.currentInput.trim();\n if (actualCommand) {\n // コマンドをターミナルに表示(改行を含む場合は適切に処理)\n const displayCommand = actualCommand.split('\\n').map(line => '\\x1b[32m> x_x \\x1b[0m' + line).join('\\r\\n');\n this.terminal.write(displayCommand + '\\r\\n');\n // 履歴に追加\n this.commandHistory.push(actualCommand);\n this.historyIndex = this.commandHistory.length;\n // コマンドを処理\n this.processCommand(actualCommand);\n // 入力を初期状態にリセット\n this.currentInput = prefix;\n // textareaの高さをリセット\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.style.height = 'auto';\n }\n }\n }\n navigateHistory(event, direction) {\n event.preventDefault();\n const prefix = 'x_x ';\n if (direction === -1 && this.historyIndex > 0) {\n // 上矢印\n this.historyIndex--;\n this.currentInput = prefix + this.commandHistory[this.historyIndex];\n }\n else if (direction === 1) {\n // 下矢印\n if (this.historyIndex < this.commandHistory.length - 1) {\n this.historyIndex++;\n this.currentInput = prefix + this.commandHistory[this.historyIndex];\n }\n else {\n this.historyIndex = this.commandHistory.length;\n this.currentInput = prefix;\n }\n }\n }\n generateCommand(event) {\n if (event) {\n event.preventDefault();\n }\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● Generating command suggestions...\\x1b[0m');\n setTimeout(() => {\n this.terminal.writeln('\\x1b[1;33m● Suggested commands:\\x1b[0m');\n this.terminal.writeln(' 1. \\x1b[36mauth --provider=google\\x1b[0m');\n this.terminal.writeln(' 2. \\x1b[36mlogin\\x1b[0m');\n this.terminal.writeln(' 3. \\x1b[36mhelp\\x1b[0m');\n this.terminal.writeln('');\n this.cdr.markForCheck();\n }, 500);\n }\n // sideAppを閉じる\n closeSideApp(event) {\n event.stopPropagation();\n this.app.sideApp.collapse();\n }\n // 入力フィールドにフォーカスを設定\n focusInput() {\n this.inputField()?.nativeElement?.focus();\n }\n // textareaの高さを内容に合わせて調整\n adjustTextareaHeight() {\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n // 一旦高さをリセット\n textarea.style.height = '20px';\n // scrollHeightを確認し、実際に必要な高さを設定\n const scrollHeight = textarea.scrollHeight;\n // パディングを考慮した最小高さ\n const minHeight = 44; // padding: 12px * 2 + line-height: 20px\n textarea.style.height = Math.max(minHeight, scrollHeight) + 'px';\n }\n }\n // プレフィックスの削除を防止\n preventPrefixDeletion(event) {\n const textarea = event.target;\n const prefix = 'x_x ';\n const selectionStart = textarea.selectionStart;\n // バックスペースまたはDeleteキーの処理\n if (event.key === 'Backspace' || event.key === 'Delete') {\n if (selectionStart <= prefix.length) {\n event.preventDefault();\n }\n }\n // 左矢印キーでカーソルがプレフィックスより前に行かないように\n if (event.key === 'ArrowLeft' && selectionStart <= prefix.length) {\n event.preventDefault();\n }\n // Home キーでカーソルをプレフィックスの直後に移動\n if (event.key === 'Home') {\n event.preventDefault();\n textarea.setSelectionRange(prefix.length, prefix.length);\n }\n }\n // 入力時の処理\n handleInput(event) {\n const textarea = event.target;\n const prefix = 'x_x ';\n // プレフィックスが削除されていたら復元\n if (!this.currentInput.startsWith(prefix)) {\n this.currentInput = prefix + this.currentInput.replace(/^x_x\\s*/, '');\n // カーソル位置を調整\n setTimeout(() => {\n const newPosition = Math.max(prefix.length, textarea.selectionStart);\n textarea.setSelectionRange(newPosition, newPosition);\n });\n }\n // 高さ調整(改行が含まれている場合のみ)\n if (this.currentInput.includes('\\n')) {\n this.adjustTextareaHeight();\n }\n else {\n // 1行の場合は固定高さ\n textarea.style.height = '44px';\n }\n // カーソル位置を更新\n this.updateCursorPosition();\n }\n // フォーカス時の処理\n handleFocus() {\n this.showCursor = true;\n this.updateCursorPosition();\n }\n // ブラー時の処理\n handleBlur() {\n this.showCursor = false;\n }\n // カーソル位置の更新\n updateCursorPosition() {\n const textarea = this.inputField()?.nativeElement;\n if (!textarea)\n return;\n const cursorPos = textarea.selectionStart;\n const textBeforeCursor = this.currentInput.substring(0, cursorPos);\n // 改行で分割\n const lines = textBeforeCursor.split('\\n');\n const currentLineIndex = lines.length - 1;\n const currentLineText = lines[currentLineIndex];\n // 仮のcanvasを使って現在の行のテキスト幅を計算\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n if (context) {\n context.font = '14px \"SF Mono\", Monaco, monospace';\n const textWidth = context.measureText(currentLineText).width;\n // カーソル位置を設定(パディング分を考慮)\n this.cursorLeft = 8 + textWidth; // 8px は textarea の左パディング\n // 垂直位置を調整(行数に基づいて、スクロール位置も考慮)\n const scrollTop = textarea.scrollTop;\n this.cursorTop = 12 + (currentLineIndex * 20) - scrollTop; // スクロール分を引く\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AgentTemplate, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.0.5\", type: AgentTemplate, isStandalone: true, selector: \"templates-agent\", host: { classAttribute: \"template\" }, viewQueries: [{ propertyName: \"xtermComponent\", first: true, predicate: [\"xtermComponent\"], descendants: true, isSignal: true }, { propertyName: \"inputField\", first: true, predicate: [\"inputField\"], descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.EntranceTemplateStore, inputs: [\"form\", \"form\", \"actions\", \"actions\", \"title\", \"title\", \"fieldMap\", \"fieldMap\"] }], ngImport: i0, template: `\n <div class=\"terminal-window\">\n <div class=\"terminal-header\">\n <button mat-icon-button class=\"close-button\" (click)=\"closeSideApp($event)\" matTooltip=\"閉じる\">\n <mat-icon>close</mat-icon>\n </button>\n <div class=\"terminal-title\">Machina Agent</div>\n <div class=\"terminal-status\">{{ statusText }}</div>\n </div>\n \n <div class=\"terminal-body\">\n <organisms-xterm \n class=\"terminal-display\"\n (terminalReady)=\"onTerminalReady($event)\"\n (click)=\"focusInput()\"\n #xtermComponent\n ></organisms-xterm>\n <div class=\"input-area\">\n <div class=\"input-line\">\n <span class=\"input-prefix\">> x_x</span>\n <div class=\"textarea-wrapper\">\n <span class=\"arrow-prefix\">></span>\n <div class=\"input-container\">\n <textarea \n #inputField\n class=\"terminal-input\" \n [(ngModel)]=\"currentInput\"\n (keydown.enter)=\"handleEnter($event)\"\n (keydown.arrowUp)=\"navigateHistory($event, -1)\"\n (keydown.arrowDown)=\"navigateHistory($event, 1)\"\n (keydown.control.k)=\"generateCommand($event)\"\n (keydown.meta.k)=\"generateCommand($event)\"\n (keydown)=\"preventPrefixDeletion($event)\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n (keyup)=\"updateCursorPosition()\"\n (click)=\"updateCursorPosition()\"\n (scroll)=\"updateCursorPosition()\"\n [disabled]=\"isProcessing\"\n placeholder=\"x_x about\"\n rows=\"1\"\n ></textarea>\n <div class=\"block-cursor\" \n [class.visible]=\"showCursor\"\n [style.left.px]=\"cursorLeft\"\n [style.top.px]=\"cursorTop\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n `, isInline: true, styles: [\":host{--h-pad: 20px;--h-pad-SCOPED-IN-entrance-EtX2: var(--h-pad);--text: #e0e0e0;--text-SCOPED-IN-entrance-EtX2: var(--text);--user: #00ff00;--user-SCOPED-IN-entrance-EtX2: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-EtX2: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-EtX2: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-EtX2: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-EtX2);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;padding:0 20px;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-EtX2);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-EtX2);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-EtX2);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-EtX2);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-EtX2);opacity:.7}.terminal-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;transition:all .3s ease}.terminal-body .terminal-display{flex:1;position:relative;background:#0a0a0a;overflow:hidden}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-EtX2);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word;caret-shape:block}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0}.terminal-window{height:100%;max-height:100vh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0 16px}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0 12px}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-EtX2);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-EtX2)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-EtX2),0 0 20px var(--accent-SCOPED-IN-entrance-EtX2);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-entrance-EtX2: var(--text);--user: #0066cc;--user-SCOPED-IN-entrance-EtX2: var(--user);--sys: #666;--sys-SCOPED-IN-entrance-EtX2: var(--sys);--border: #ddd;--border-SCOPED-IN-entrance-EtX2: var(--border)}.terminal-window{background:#ffffffd9;box-shadow:0 10px 30px #00000014}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i3.MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i4.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"ngmodule\", type: MatTooltipModule }, { kind: \"directive\", type: i5.MatTooltip, selector: \"[matTooltip]\", inputs: [\"matTooltipPosition\", \"matTooltipPositionAtOrigin\", \"matTooltipDisabled\", \"matTooltipShowDelay\", \"matTooltipHideDelay\", \"matTooltipTouchGestures\", \"matTooltip\", \"matTooltipClass\"], exportAs: [\"matTooltip\"] }, { kind: \"component\", type: XtermOrganism, selector: \"organisms-xterm\", outputs: [\"terminalReady\"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AgentTemplate, decorators: [{\n type: Component,\n args: [{ selector: 'templates-agent', imports: [\n CommonModule,\n FormsModule,\n AutoLayoutFrame,\n CardFrame,\n ActionButtonsSectionOrganism,\n HeadingOrganism,\n NgAtomicFormSectionBuilder,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n XtermOrganism,\n ], template: `\n <div class=\"terminal-window\">\n <div class=\"terminal-header\">\n <button mat-icon-button class=\"close-button\" (click)=\"closeSideApp($event)\" matTooltip=\"閉じる\">\n <mat-icon>close</mat-icon>\n </button>\n <div class=\"terminal-title\">Machina Agent</div>\n <div class=\"terminal-status\">{{ statusText }}</div>\n </div>\n \n <div class=\"terminal-body\">\n <organisms-xterm \n class=\"terminal-display\"\n (terminalReady)=\"onTerminalReady($event)\"\n (click)=\"focusInput()\"\n #xtermComponent\n ></organisms-xterm>\n <div class=\"input-area\">\n <div class=\"input-line\">\n <span class=\"input-prefix\">> x_x</span>\n <div class=\"textarea-wrapper\">\n <span class=\"arrow-prefix\">></span>\n <div class=\"input-container\">\n <textarea \n #inputField\n class=\"terminal-input\" \n [(ngModel)]=\"currentInput\"\n (keydown.enter)=\"handleEnter($event)\"\n (keydown.arrowUp)=\"navigateHistory($event, -1)\"\n (keydown.arrowDown)=\"navigateHistory($event, 1)\"\n (keydown.control.k)=\"generateCommand($event)\"\n (keydown.meta.k)=\"generateCommand($event)\"\n (keydown)=\"preventPrefixDeletion($event)\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n (keyup)=\"updateCursorPosition()\"\n (click)=\"updateCursorPosition()\"\n (scroll)=\"updateCursorPosition()\"\n [disabled]=\"isProcessing\"\n placeholder=\"x_x about\"\n rows=\"1\"\n ></textarea>\n <div class=\"block-cursor\" \n [class.visible]=\"showCursor\"\n [style.left.px]=\"cursorLeft\"\n [style.top.px]=\"cursorTop\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n `, host: {\n class: 'template'\n }, changeDetection: ChangeDetectionStrategy.Default, hostDirectives: [\n {\n directive: EntranceTemplateStore,\n inputs: [\n 'form',\n 'actions',\n 'title',\n 'fieldMap',\n ],\n },\n ], styles: [\":host{--h-pad: 20px;--h-pad-SCOPED-IN-entrance-EtX2: var(--h-pad);--text: #e0e0e0;--text-SCOPED-IN-entrance-EtX2: var(--text);--user: #00ff00;--user-SCOPED-IN-entrance-EtX2: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-EtX2: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-EtX2: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-EtX2: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-EtX2);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;padding:0 20px;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-EtX2);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-EtX2);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-EtX2);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-EtX2);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-EtX2);opacity:.7}.terminal-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;transition:all .3s ease}.terminal-body .terminal-display{flex:1;position:relative;background:#0a0a0a;overflow:hidden}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-EtX2);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word;caret-shape:block}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0}.terminal-window{height:100%;max-height:100vh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0 16px}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0 12px}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-EtX2);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-EtX2)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-EtX2),0 0 20px var(--accent-SCOPED-IN-entrance-EtX2);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-entrance-EtX2: var(--text);--user: #0066cc;--user-SCOPED-IN-entrance-EtX2: var(--user);--sys: #666;--sys-SCOPED-IN-entrance-EtX2: var(--sys);--border: #ddd;--border-SCOPED-IN-entrance-EtX2: var(--border)}.terminal-window{background:#ffffffd9;box-shadow:0 10px 30px #00000014}}\\n\"] }]\n }] });\nexport function provideAgentTemplate() {\n return [\n provideComponent(EntranceTemplateStore, () => AgentTemplate),\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQudGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AeHhtYWNoaW5hL2NvbXBvbmVudHMvc3JjL2xpYi90ZW1wbGF0ZXMvYWdlbnQvYWdlbnQudGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXVDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0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ZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIFByb3ZpZGVyLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQXRvbWljQ29tcG9uZW50LCBwcm92aWRlQ29tcG9uZW50IH0gZnJvbSAnQG5nLWF0b21pYy9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEF1dG9MYXlvdXRGcmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9mcmFtZXMvYXV0by1sYXlvdXQnO1xuaW1wb3J0IHsgQ2FyZEZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9jYXJkJztcbmltcG9ydCB7IEFjdGlvbkJ1dHRvbnNTZWN0aW9uT3JnYW5pc20gfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2FjdGlvbi1idXR0b25zLXNlY3Rpb24nO1xuaW1wb3J0IHsgSGVhZGluZ09yZ2FuaXNtIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy9oZWFkaW5nJztcbmltcG9ydCB7IE5nQXRvbWljRm9ybVNlY3Rpb25CdWlsZGVyIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9mb3JtJztcbmltcG9ydCB7IEVudHJhbmNlVGVtcGxhdGVTdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXMvZW50cmFuY2UnO1xuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2FwcCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgVGVybWluYWwgfSBmcm9tICdAeHRlcm0veHRlcm0nO1xuaW1wb3J0IHsgWHRlcm1PcmdhbmlzbSB9IGZyb20gJ0B4eG1hY2hpbmEvY29tcG9uZW50cy9vcmdhbmlzbXMveHRlcm0nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcblxuXG5lbnVtIEFjdGlvbklkIHtcbiAgU0lHTl9JTiA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzXSBTaWduIEluJyxcbiAgU0lHTl9JTl9XSVRIX0dPT0dMRSA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzXSBTaWduIEluIFdpdGggR29vZ2xlJyxcbiAgU0lHTl9JTl9XSVRIX1RXSVRURVIgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50c10gU2lnbiBJbiBXaXRoIFR3aXR0ZXInLFxuICBTSUdOX09VVCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzXSBTaWduIE91dCcsXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RlbXBsYXRlcy1hZ2VudCcsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQXV0b0xheW91dEZyYW1lLFxuICAgIENhcmRGcmFtZSxcbiAgICBBY3Rpb25CdXR0b25zU2VjdGlvbk9yZ2FuaXNtLFxuICAgIEhlYWRpbmdPcmdhbmlzbSxcbiAgICBOZ0F0b21pY0Zvcm1TZWN0aW9uQnVpbGRlcixcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIFh0ZXJtT3JnYW5pc20sXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gIDxkaXYgY2xhc3M9XCJ0ZXJtaW5hbC13aW5kb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtaGVhZGVyXCI+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiIChjbGljayk9XCJjbG9zZVNpZGVBcHAoJGV2ZW50KVwiIG1hdFRvb2x0aXA9XCLplonjgZjjgotcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzcz1cInRlcm1pbmFsLXRpdGxlXCI+TWFjaGluYSBBZ2VudDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRlcm1pbmFsLXN0YXR1c1wiPnt7IHN0YXR1c1RleHQgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtYm9keVwiPlxuICAgICAgPG9yZ2FuaXNtcy14dGVybSBcbiAgICAgICAgY2xhc3M9XCJ0ZXJtaW5hbC1kaXNwbGF5XCJcbiAgICAgICAgKHRlcm1pbmFsUmVhZHkpPVwib25UZXJtaW5hbFJlYWR5KCRldmVudClcIlxuICAgICAgICAoY2xpY2spPVwiZm9jdXNJbnB1dCgpXCJcbiAgICAgICAgI3h0ZXJtQ29tcG9uZW50XG4gICAgICA+PC9vcmdhbmlzbXMteHRlcm0+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtYXJlYVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbGluZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtcHJlZml4XCI+PiB4X3g8L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRhcmVhLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3ctcHJlZml4XCI+Pjwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPHRleHRhcmVhIFxuICAgICAgICAgICAgICAgICNpbnB1dEZpZWxkXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXJtaW5hbC1pbnB1dFwiIFxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudElucHV0XCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cIm5hdmlnYXRlSGlzdG9yeSgkZXZlbnQsIC0xKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cIm5hdmlnYXRlSGlzdG9yeSgkZXZlbnQsIDEpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5jb250cm9sLmspPVwiZ2VuZXJhdGVDb21tYW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLm1ldGEuayk9XCJnZW5lcmF0ZUNvbW1hbmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwicHJldmVudFByZWZpeERlbGV0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCJoYW5kbGVJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwiaGFuZGxlRm9jdXMoKVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwiaGFuZGxlQmx1cigpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwidXBkYXRlQ3Vyc29yUG9zaXRpb24oKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUN1cnNvclBvc2l0aW9uKClcIlxuICAgICAgICAgICAgICAgIChzY3JvbGwpPVwidXBkYXRlQ3Vyc29yUG9zaXRpb24oKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ4X3ggYWJvdXRcIlxuICAgICAgICAgICAgICAgIHJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibG9jay1jdXJzb3JcIiBcbiAgICAgICAgICAgICAgICBbY2xhc3MudmlzaWJsZV09XCJzaG93Q3Vyc29yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJjdXJzb3JMZWZ0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cImN1cnNvclRvcFwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vYWdlbnQudGVtcGxhdGUuc2NzcyddLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICd0ZW1wbGF0ZSdcbiAgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogRW50cmFuY2VUZW1wbGF0ZVN0b3JlLFxuICAgICAgaW5wdXRzOiBbXG4gICAgICAgICdmb3JtJyxcbiAgICAgICAgJ2FjdGlvbnMnLFxuICAgICAgICAndGl0bGUnLFxuICAgICAgICAnZmllbGRNYXAnLFxuICAgICAgXSxcbiAgICB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFnZW50VGVtcGxhdGUgZXh0ZW5kcyBOZ0F0b21pY0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBzdGF0aWMgQWN0aW9uSWQgPSBBY3Rpb25JZDtcbiAgcHJvdGVjdGVkIEFjdGlvbklkID0gQWN0aW9uSWQ7XG4gIHByb3RlY3RlZCBzdG9yZSA9IGluamVjdChFbnRyYW5jZVRlbXBsYXRlU3RvcmUpO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IHh0ZXJtQ29tcG9uZW50ID0gdmlld0NoaWxkPFh0ZXJtT3JnYW5pc20+KCd4dGVybUNvbXBvbmVudCcpO1xuICByZWFkb25seSBpbnB1dEZpZWxkID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4+KCdpbnB1dEZpZWxkJyk7XG5cbiAgcHJvdGVjdGVkIHN0YXR1c1RleHQgPSAnUmVhZHknO1xuICBwcm90ZWN0ZWQgaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93Q3Vyc29yID0gZmFsc2U7XG4gIHByb3RlY3RlZCBjdXJzb3JMZWZ0ID0gNjA7XG4gIHByb3RlY3RlZCBjdXJzb3JUb3AgPSAxMjtcblxuICAvLyB4dGVybemWoumAo1xuICBwcml2YXRlIHRlcm1pbmFsITogVGVybWluYWw7XG4gIHByaXZhdGUgY29tbWFuZEhpc3Rvcnk6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgaGlzdG9yeUluZGV4ID0gLTE7XG4gIFxuICAvLyDlhaXlipvnrqHnkIZcbiAgcHJvdGVjdGVkIGN1cnJlbnRJbnB1dCA9ICd4X3ggJztcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8g5YWl5Yqb44OV44Kj44O844Or44OJ44Gr44OV44Kp44O844Kr44K5XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCB0ZXh0YXJlYSA9IHRoaXMuaW5wdXRGaWVsZCgpPy5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKHRleHRhcmVhKSB7XG4gICAgICAgIHRleHRhcmVhLmZvY3VzKCk7XG4gICAgICAgIC8vIOWIneacn+mrmOOBleOCkumBqeWIh+OBq+ioreWumlxuICAgICAgICB0aGlzLmFkanVzdFRleHRhcmVhSGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIG9uVGVybWluYWxSZWFkeSh0ZXJtaW5hbDogVGVybWluYWwpIHtcbiAgICB0aGlzLnRlcm1pbmFsID0gdGVybWluYWw7XG4gICAgXG4gICAgLy8g5Yid5pyf44Oh44OD44K744O844K444Gu6KGo56S6XG4gICAgdGhpcy5zaG93V2VsY29tZU1lc3NhZ2UoKTtcbiAgICBcbiAgICAvLyDliJ3lm57jg63jg7zjg4nmmYLjga/mnIDkuIrpg6jjgavjgrnjgq/jg63jg7zjg6vvvIjjgqLjgrnjgq3jg7zjgqLjg7zjg4jjgYvjgonopovjgYjjgovjgojjgYbjgavvvIlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudGVybWluYWwuc2Nyb2xsVG9Ub3AoKTtcbiAgICB9LCA1MCk7XG4gICAgXG4gICAgLy8g5YWl5Yqb44OV44Kj44O844Or44OJ44Gr44OV44Kp44O844Kr44K544Go6auY44GV6Kq/5pW0XG4gICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGV4dGFyZWEpIHtcbiAgICAgIHRleHRhcmVhLmZvY3VzKCk7XG4gICAgICB0aGlzLmFkanVzdFRleHRhcmVhSGVpZ2h0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93V2VsY29tZU1lc3NhZ2UoKSB7XG4gICAgLy8g44Ki44K544Kt44O844Ki44O844OI77yIbGFpbumiqOOBruiJsuOBp++8iVxuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4paI4paI4paI4pWXICAg4paI4paI4paI4pWXIOKWiOKWiOKWiOKWiOKWiOKVlyAg4paI4paI4paI4paI4paI4paI4pWX4paI4paI4pWXICDilojilojilZfilojilojilZfilojilojilojilZcgICDilojilojilZcg4paI4paI4paI4paI4paI4pWXICcpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfilojilojilojilojilZcg4paI4paI4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4paI4paI4pWX4paI4paI4pWU4pWQ4pWQ4pWQ4pWQ4pWd4paI4paI4pWRICDilojilojilZHilojilojilZHilojilojilojilojilZcgIOKWiOKWiOKVkeKWiOKWiOKVlOKVkOKVkOKWiOKWiOKVlycpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfilojilojilZTilojilojilojilojilZTilojilojilZHilojilojilojilojilojilojilojilZHilojilojilZEgICAgIOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKVkeKWiOKWiOKVkeKWiOKWiOKVlOKWiOKWiOKVlyDilojilojilZHilojilojilojilojilojilojilojilZEnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4paI4paI4pWR4pWa4paI4paI4pWU4pWd4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4paI4paI4pWR4paI4paI4pWRICAgICDilojilojilZTilZDilZDilojilojilZHilojilojilZHilojilojilZHilZrilojilojilZfilojilojilZHilojilojilZTilZDilZDilojilojilZEnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4paI4paI4pWRIOKVmuKVkOKVnSDilojilojilZHilojilojilZEgIOKWiOKWiOKVkeKVmuKWiOKWiOKWiOKWiOKWiOKWiOKVl+KWiOKWiOKVkSAg4paI4paI4pWR4paI4paI4pWR4paI4paI4pWRIOKVmuKWiOKWiOKWiOKWiOKVkeKWiOKWiOKVkSAg4paI4paI4pWRJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KVmuKVkOKVnSAgICAg4pWa4pWQ4pWd4pWa4pWQ4pWdICDilZrilZDilZ0g4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWd4pWa4pWQ4pWdICDilZrilZDilZ3ilZrilZDilZ3ilZrilZDilZ0gIOKVmuKVkOKVkOKVkOKVneKVmuKVkOKVnSAg4pWa4pWQ4pWdJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJyAgICAg4paI4paI4paI4paI4paI4pWXICDilojilojilojilojilojilojilZcg4paI4paI4paI4paI4paI4paI4paI4pWX4paI4paI4paI4pWXICAg4paI4paI4pWX4paI4paI4paI4paI4paI4paI4paI4paI4pWXJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJyAgICDilojilojilZTilZDilZDilojilojilZfilojilojilZTilZDilZDilZDilZDilZ0g4paI4paI4pWU4pWQ4pWQ4pWQ4pWQ4pWd4paI4paI4paI4paI4pWXICDilojilojilZHilZrilZDilZDilojilojilZTilZDilZDilZ0nKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbignICAgIOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKVkeKWiOKWiOKVkSAg4paI4paI4paI4pWX4paI4paI4paI4paI4paI4pWXICDilojilojilZTilojilojilZcg4paI4paI4pWRICAg4paI4paI4pWRICAgJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJyAgICDilojilojilZTilZDilZDilojilojilZHilojilojilZEgICDilojilojilZHilojilojilZTilZDilZDilZ0gIOKWiOKWiOKVkeKVmuKWiOKWiOKVl+KWiOKWiOKVkSAgIOKWiOKWiOKVkSAgICcpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCcgICAg4paI4paI4pWRICDilojilojilZHilZrilojilojilojilojilojilojilZTilZ3ilojilojilojilojilojilojilojilZfilojilojilZEg4pWa4paI4paI4paI4paI4pWRICAg4paI4paI4pWRICAgJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJyAgICDilZrilZDilZ0gIOKVmuKVkOKVnSDilZrilZDilZDilZDilZDilZDilZ0g4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWd4pWa4pWQ4pWdICDilZrilZDilZDilZDilZ0gICDilZrilZDilZ0gICAnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfil48gV2VsY29tZSB0byBcXHgxYlsxOzkzbeWQiOWQjOS8muekvuODnuOCreODiuOCqOODvOOCuOOCp+ODs+ODiFxceDFiWzBtJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4pePIOS8muekvuamguimgVxceDFiWzBtJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIOWQiOWQjOS8muekvuODnuOCreODiuOCqOODvOOCuOOCp+ODs+ODiOOBr+OAgUFJ5oqA6KGT44KS5rS755So44GX44GfJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIOmdqeaWsOeahOOBquOCveODquODpeODvOOCt+ODp+ODs+OCkuaPkOS+m+OBmeOCi+S8gealreOBp+OBmeOAgicpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KXjyDkuovmpa3lhoXlrrlcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIOOCt+OCueODhuODoOmWi+eZuuOBruOCs+ODs+OCteODq+ODhuOCo+ODs+OCsOS6i+alrScpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIEFJ44Ki44K444Oj44Kk44Or6ZaL55m644Gu5bCO5YWl5pSv5o+05LqL5qWtJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIC0g6Ieq5bex5pS55aSJ5Z6LQUnjgqjjg7zjgrjjgqfjg7Pjg4go44Kq44O844OI44Od44Kk44Ko44O844K344K5KeOBrumWi+eZuuS6i+alrScpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KXjyDjg5Pjgrjjg6fjg7NcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDkurrjgahBSeOBjOWNlOWDjeOBmeOCi+acquadpeOCkuWJtemAoOOBl+OAgScpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDjgYLjgonjgobjgovjg5Pjgrjjg43jgrnjga7lj6/og73mgKfjgpLmi6HjgZLjgb7jgZnjgIInKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuXG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4pePIFR5cGUgXFx4MWJbMTszNm1sb2dpblxceDFiWzE7MzNtIHRvIHNpZ24gaW4gd2l0aCBHb29nbGVcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfil48gVHlwZSBcXHgxYlsxOzM2bWhlbHBcXHgxYlsxOzMzbSBmb3IgbW9yZSBjb21tYW5kc1xceDFiWzBtJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICBcbiAgICAvLyDjg5fjg63jg7Pjg5fjg4jooajnpLpcbiAgICB0aGlzLnNob3dQcm9tcHQoKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBzaG93UHJvbXB0KCkge1xuICAgIC8vIOODl+ODreODs+ODl+ODiOOBr0hUTUzlgbTjga7lhaXlipvjg5XjgqPjg7zjg6vjg4njgafooajnpLrjgZnjgovjgZ/jgoHkuI3opoFcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0NvbW1hbmQoY29tbWFuZDogc3RyaW5nKSB7XG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xuICAgIHRoaXMuc3RhdHVzVGV4dCA9ICdQcm9jZXNzaW5nLi4uJztcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIC8vIOODreOCsOOCpOODs+OCs+ODnuODs+ODiVxuICAgIGlmIChjb21tYW5kID09PSAnbG9naW4nKSB7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEluaXRpYXRpbmcgR29vZ2xlIGF1dGhlbnRpY2F0aW9uLi4uXFx4MWJbMG0nKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IEFjdGlvbklkLlNJR05fSU5fV0lUSF9HT09HTEUgfSk7XG4gICAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgICB9LCAzMDApO1xuICAgIH1cbiAgICBlbHNlIGlmIChjb21tYW5kLnN0YXJ0c1dpdGgoJ2F1dGgnKSkge1xuICAgICAgaWYgKGNvbW1hbmQuaW5jbHVkZXMoJ2dvb2dsZScpKSB7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gSW5pdGlhdGluZyBHb29nbGUgYXV0aGVudGljYXRpb24uLi5cXHgxYlswbScpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IEFjdGlvbklkLlNJR05fSU5fV0lUSF9HT09HTEUgfSk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH0gZWxzZSBpZiAoY29tbWFuZC5pbmNsdWRlcygndHdpdHRlcicpKSB7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gSW5pdGlhdGluZyBUd2l0dGVyIGF1dGhlbnRpY2F0aW9uLi4uXFx4MWJbMG0nKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBBY3Rpb25JZC5TSUdOX0lOX1dJVEhfVFdJVFRFUiB9KTtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgfSBlbHNlIGlmIChjb21tYW5kLmluY2x1ZGVzKCdsb2NhbCcpKSB7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gSW5pdGlhdGluZyBsb2NhbCBhdXRoZW50aWNhdGlvbi4uLlxceDFiWzBtJyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2goeyBpZDogQWN0aW9uSWQuU0lHTl9JTiB9KTtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMybeKXjyBBdmFpbGFibGUgYXV0aGVudGljYXRpb24gbWV0aG9kczpcXHgxYlswbScpO1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSBhdXRoIC0tcHJvdmlkZXI9Z29vZ2xlJyk7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIGF1dGggLS1wcm92aWRlcj10d2l0dGVyJyk7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIGF1dGggLS1wcm92aWRlcj1sb2NhbCcpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyDjg63jgrDjgqLjgqbjg4jjgrPjg57jg7Pjg4lcbiAgICBlbHNlIGlmIChjb21tYW5kID09PSAnbG9nb3V0JyB8fCBjb21tYW5kID09PSAnc2lnbm91dCcpIHtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gU2lnbmluZyBvdXQuLi5cXHgxYlswbScpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2goeyBpZDogQWN0aW9uSWQuU0lHTl9PVVQgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gWW91IGhhdmUgYmVlbiBzaWduZWQgb3V0LlxceDFiWzBtJyk7XG4gICAgICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMzbeKXjyBUeXBlIFwibG9naW5cIiB0byBzaWduIGluIGFnYWluLlxceDFiWzBtJyk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICAgICAgfSwgNTAwKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICAgIC8vIOODmOODq+ODl+OCs+ODnuODs+ODiVxuICAgIGVsc2UgaWYgKGNvbW1hbmQgPT09ICdoZWxwJyB8fCBjb21tYW5kID09PSAnPycpIHtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gQXZhaWxhYmxlIGNvbW1hbmRzOlxceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtbG9naW5cXHgxYlswbSAgICAgICAgICAgIC0gU2lnbiBpbiB3aXRoIEdvb2dsZSAoZGVmYXVsdCknKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm1hdXRoXFx4MWJbMG0gLS1wcm92aWRlcj1cXHgxYlszM21nb29nbGVcXHgxYlswbSAgIC0gU2lnbiBpbiB3aXRoIEdvb2dsZScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2bWF1dGhcXHgxYlswbSAtLXByb3ZpZGVyPVxceDFiWzMzbXR3aXR0ZXJcXHgxYlswbSAgLSBTaWduIGluIHdpdGggVHdpdHRlcicpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2bWF1dGhcXHgxYlswbSAtLXByb3ZpZGVyPVxceDFiWzMzbWxvY2FsXFx4MWJbMG0gICAgLSBTaWduIGluIHdpdGggZW1haWwvcGFzc3dvcmQnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm1sb2dvdXRcXHgxYlswbSAvIFxceDFiWzM2bXNpZ25vdXRcXHgxYlswbSAtIFNpZ24gb3V0IGZyb20gdGhlIGFwcGxpY2F0aW9uJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtYWJvdXRcXHgxYlswbSAgICAgICAgICAgIC0gU2hvdyBjb21wYW55IGluZm9ybWF0aW9uJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtY2xlYXJcXHgxYlswbSAgICAgICAgICAgIC0gQ2xlYXIgdGVybWluYWwnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm1oZWxwXFx4MWJbMG0gLyBcXHgxYlszNm0/XFx4MWJbMG0gICAgICAgIC0gU2hvdyB0aGlzIGhlbHAnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzNt4pePIEtleWJvYXJkIHNob3J0Y3V0czpcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2beKMmEtcXHgxYlswbSAvIFxceDFiWzM2bUN0cmwrS1xceDFiWzBtICAgIC0gR2VuZXJhdGUgY29tbWFuZCBzdWdnZXN0aW9ucycpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2beKGkVxceDFiWzBtIC8gXFx4MWJbMzZt4oaTXFx4MWJbMG0gICAgICAgICAgIC0gTmF2aWdhdGUgY29tbWFuZCBoaXN0b3J5Jyk7XG4gICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgIH1cbiAgICAvLyDkvJrnpL7mg4XloLHjgrPjg57jg7Pjg4lcbiAgICBlbHNlIGlmIChjb21tYW5kID09PSAnYWJvdXQnKSB7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzZt4pePIOWQiOWQjOS8muekvuODnuOCreODiuOCqOODvOOCuOOCp+ODs+ODiFxceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMybeKXjyDkvJrnpL7mpoLopoFcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIOWQiOWQjOS8muekvuODnuOCreODiuOCqOODvOOCuOOCp+ODs+ODiOOBr+OAgUFJ5oqA6KGT44KS5rS755So44GX44GfJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAg6Z2p5paw55qE44Gq44K944Oq44Ol44O844K344On44Oz44KS5o+Q5L6b44GZ44KL5LyB5qWt44Gn44GZ44CCJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMybeKXjyDkuovmpa3lhoXlrrlcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIC0g44K344K544OG44Og6ZaL55m644Gu44Kz44Oz44K144Or44OG44Kj44Oz44Kw5LqL5qWtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSBBSeOCouOCuOODo+OCpOODq+mWi+eZuuOBruWwjuWFpeaUr+aPtOS6i+alrScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIC0g6Ieq5bex5pS55aSJ5Z6LQUnjgqjjg7zjgrjjgqfjg7Pjg4go44Kq44O844OI44Od44Kk44Ko44O844K344K5KeOBrumWi+eZuuS6i+alrScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48g44OT44K444On44OzXFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDkurrjgahBSeOBjOWNlOWDjeOBmeOCi+acquadpeOCkuWJtemAoOOBl+OAgScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIOOBguOCieOChuOCi+ODk+OCuOODjeOCueOBruWPr+iDveaAp+OCkuaLoeOBkuOBvuOBmeOAgicpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48g44GK5ZWP44GE5ZCI44KP44GbXFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDoqbPntLDjgavjgaTjgYTjgabjga/jgIHjg63jgrDjgqTjg7PlvozjgavjgYrllY/jgYTlkIjjgo/jgZvjgY/jgaDjgZXjgYTjgIInKTtcbiAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgfVxuICAgIC8vIOOCr+ODquOCouOCs+ODnuODs+ODiVxuICAgIGVsc2UgaWYgKGNvbW1hbmQgPT09ICdjbGVhcicgfHwgY29tbWFuZCA9PT0gJ2NscycpIHtcbiAgICAgIHRoaXMudGVybWluYWwuY2xlYXIoKTtcbiAgICAgIHRoaXMudGVybWluYWwuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgfVxuICAgIC8vIOS4jeaYjuOBquOCs+ODnuODs+ODiVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGBcXHgxYlsxOzMxbeKXjyBDb21tYW5kIG5vdCBmb3VuZDogJHtjb21tYW5kfVxceDFiWzBtYCk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgVHlwZSBcImhlbHBcIiBmb3IgYXZhaWxhYmxlIGNvbW1hbmRzLicpO1xuICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXBsZXRlUHJvY2Vzc2luZygpIHtcbiAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgIHRoaXMuc3RhdHVzVGV4dCA9ICdSZWFkeSc7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICBcbiAgICAvLyDmnIDmlrDjga7lh7rlipvjgYzopovjgYjjgovjgojjgYbjgavjgrnjgq/jg63jg7zjg6tcbiAgICB0aGlzLnRlcm1pbmFsLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgXG4gICAgLy8g5YWl5Yqb44OV44Kj44O844Or44OJ44Gr44OV44Kp44O844Kr44K544KS5oi744GZXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgaGFuZGxlRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvLyBTaGlmdCtFbnRlcuOBvuOBn+OBr0N0cmwrRW50ZXLjga7loLTlkIjjga/mlLnooYzjgpLoqLHlj69cbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQuY3RybEtleSkge1xuICAgICAgcmV0dXJuOyAvLyDjg4fjg5Xjgqnjg6vjg4jli5XkvZzvvIjmlLnooYzvvInjgpLoqLHlj69cbiAgICB9XG4gICAgXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBwcmVmaXggPSAneF94ICc7XG4gICAgY29uc3QgYWN0dWFsQ29tbWFuZCA9IHRoaXMuY3VycmVudElucHV0LnN0YXJ0c1dpdGgocHJlZml4KSBcbiAgICAgID8gdGhpcy5jdXJyZW50SW5wdXQuc2xpY2UocHJlZml4Lmxlbmd0aCkudHJpbSgpXG4gICAgICA6IHRoaXMuY3VycmVudElucHV0LnRyaW0oKTtcbiAgICBcbiAgICBpZiAoYWN0dWFsQ29tbWFuZCkge1xuICAgICAgLy8g44Kz44Oe44Oz44OJ44KS44K/44O844Of44OK44Or44Gr6KGo56S677yI5pS56KGM44KS5ZCr44KA5aC05ZCI44Gv6YGp5YiH44Gr5Yem55CG77yJXG4gICAgICBjb25zdCBkaXNwbGF5Q29tbWFuZCA9IGFjdHVhbENvbW1hbmQuc3BsaXQoJ1xcbicpLm1hcChsaW5lID0+ICdcXHgxYlszMm0+IHhfeCBcXHgxYlswbScgKyBsaW5lKS5qb2luKCdcXHJcXG4nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGUoZGlzcGxheUNvbW1hbmQgKyAnXFxyXFxuJyk7XG4gICAgICBcbiAgICAgIC8vIOWxpeattOOBq+i/veWKoFxuICAgICAgdGhpcy5jb21tYW5kSGlzdG9yeS5wdXNoKGFjdHVhbENvbW1hbmQpO1xuICAgICAgdGhpcy5oaXN0b3J5SW5kZXggPSB0aGlzLmNvbW1hbmRIaXN0b3J5Lmxlbmd0aDtcbiAgICAgIFxuICAgICAgLy8g44Kz44Oe44Oz44OJ44KS5Yem55CGXG4gICAgICB0aGlzLnByb2Nlc3NDb21tYW5kKGFjdHVhbENvbW1hbmQpO1xuICAgICAgXG4gICAgICAvLyDlhaXlipvjgpLliJ3mnJ/nirbmhYvjgavjg6rjgrvjg4Pjg4hcbiAgICAgIHRoaXMuY3VycmVudElucHV0ID0gcHJlZml4O1xuICAgICAgXG4gICAgICAvLyB0ZXh0YXJlYeOBrumrmOOBleOCkuODquOCu+ODg+ODiFxuICAgICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmICh0ZXh0YXJlYSkge1xuICAgICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBuYXZpZ2F0ZUhpc3RvcnkoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRpcmVjdGlvbjogbnVtYmVyKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBwcmVmaXggPSAneF94ICc7XG4gICAgXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gLTEgJiYgdGhpcy5oaXN0b3J5SW5kZXggPiAwKSB7XG4gICAgICAvLyDkuIrnn6LljbBcbiAgICAgIHRoaXMuaGlzdG9yeUluZGV4LS07XG4gICAgICB0aGlzLmN1cnJlbnRJbnB1dCA9IHByZWZpeCArIHRoaXMuY29tbWFuZEhpc3RvcnlbdGhpcy5oaXN0b3J5SW5kZXhdO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAxKSB7XG4gICAgICAvLyDkuIvnn6LljbBcbiAgICAgIGlmICh0aGlzLmhpc3RvcnlJbmRleCA8IHRoaXMuY29tbWFuZEhpc3RvcnkubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLmhpc3RvcnlJbmRleCsrO1xuICAgICAgICB0aGlzLmN1cnJlbnRJbnB1dCA9IHByZWZpeCArIHRoaXMuY29tbWFuZEhpc3RvcnlbdGhpcy5oaXN0b3J5SW5kZXhdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5SW5kZXggPSB0aGlzLmNvbW1hbmRIaXN0b3J5Lmxlbmd0aDtcbiAgICAgICAgdGhpcy5jdXJyZW50SW5wdXQgPSBwcmVmaXg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBnZW5lcmF0ZUNvbW1hbmQoZXZlbnQ/OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gR2VuZXJhdGluZyBjb21tYW5kIHN1Z2dlc3Rpb25zLi4uXFx4MWJbMG0nKTtcbiAgICBcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszM23il48gU3VnZ2VzdGVkIGNvbW1hbmRzOlxceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgMS4gXFx4MWJbMzZtYXV0aCAtLXByb3ZpZGVyPWdvb2dsZVxceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgMi4gXFx4MWJbMzZtbG9naW5cXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIDMuIFxceDFiWzM2bWhlbHBcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICAvLyBzaWRlQXBw44KS6ZaJ44GY44KLXG4gIGNsb3NlU2lkZUFwcChldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuYXBwLnNpZGVBcHAuY29sbGFwc2UoKTtcbiAgfVxuXG4gIC8vIOWFpeWKm+ODleOCo+ODvOODq+ODieOBq+ODleOCqeODvOOCq+OCueOCkuioreWumlxuICBmb2N1c0lucHV0KCkge1xuICAgIHRoaXMuaW5wdXRGaWVsZCgpPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICB9XG5cbiAgLy8gdGV4dGFyZWHjga7pq5jjgZXjgpLlhoXlrrnjgavlkIjjgo/jgZvjgaboqr/mlbRcbiAgYWRqdXN0VGV4dGFyZWFIZWlnaHQoKSB7XG4gICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGV4dGFyZWEpIHtcbiAgICAgIC8vIOS4gOaXpumrmOOBleOCkuODquOCu+ODg+ODiFxuICAgICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gJzIwcHgnO1xuICAgICAgLy8gc2Nyb2xsSGVpZ2h044KS56K66KqN44GX44CB5a6f6Zqb44Gr5b+F6KaB44Gq6auY44GV44KS6Kit5a6aXG4gICAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSB0ZXh0YXJlYS5zY3JvbGxIZWlnaHQ7XG4gICAgICAvLyDjg5Hjg4fjgqPjg7PjgrDjgpLogIPmha7jgZfjgZ/mnIDlsI/pq5jjgZVcbiAgICAgIGNvbnN0IG1pbkhlaWdodCA9IDQ0OyAvLyBwYWRkaW5nOiAxMnB4ICogMiArIGxpbmUtaGVpZ2h0OiAyMHB4XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSBNYXRoLm1heChtaW5IZWlnaHQsIHNjcm9sbEhlaWdodCkgKyAncHgnO1xuICAgIH1cbiAgfVxuXG4gIC8vIOODl+ODrOODleOCo+ODg+OCr+OCueOBruWJiumZpOOCkumYsuatolxuICBwcmV2ZW50UHJlZml4RGVsZXRpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCB0ZXh0YXJlYSA9IGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICAgIGNvbnN0IHByZWZpeCA9ICd4X3ggJztcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IHRleHRhcmVhLnNlbGVjdGlvblN0YXJ0O1xuICAgIFxuICAgIC8vIOODkOODg+OCr+OCueODmuODvOOCueOBvuOBn+OBr0RlbGV0ZeOCreODvOOBruWHpueQhlxuICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGV2ZW50LmtleSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA8PSBwcmVmaXgubGVuZ3RoKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIOW3puefouWNsOOCreODvOOBp+OCq+ODvOOCveODq+OBjOODl+ODrOODleOCo+ODg+OCr+OCueOCiOOCiuWJjeOBq+ihjOOBi+OBquOBhOOCiOOBhuOBq1xuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0xlZnQnICYmIHNlbGVjdGlvblN0YXJ0IDw9IHByZWZpeC5sZW5ndGgpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIFxuICAgIC8vIEhvbWUg44Kt44O844Gn44Kr44O844K944Or44KS44OX44Os44OV44Kj44OD44Kv44K544Gu55u05b6M44Gr56e75YuVXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0hvbWUnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UocHJlZml4Lmxlbmd0aCwgcHJlZml4Lmxlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8g5YWl5Yqb5pmC44Gu5Yem55CGXG4gIGhhbmRsZUlucHV0KGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHRleHRhcmVhID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG4gICAgY29uc3QgcHJlZml4ID0gJ3hfeCAnO1xuICAgIFxuICAgIC8vIOODl+ODrOODleOCo+ODg+OCr+OCueOBjOWJiumZpOOBleOCjOOBpuOBhOOBn+OCieW+qeWFg1xuICAgIGlmICghdGhpcy5jdXJyZW50SW5wdXQuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbnB1dCA9IHByZWZpeCArIHRoaXMuY3VycmVudElucHV0LnJlcGxhY2UoL154X3hcXHMqLywgJycpO1xuICAgICAgXG4gICAgICAvLyDjgqvjg7zjgr3jg6vkvY3nva7jgpLoqr/mlbRcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdQb3NpdGlvbiA9IE1hdGgubWF4KHByZWZpeC5sZW5ndGgsIHRleHRhcmVhLnNlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UobmV3UG9zaXRpb24sIG5ld1Bvc2l0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICAvLyDpq5jjgZXoqr/mlbTvvIjmlLnooYzjgYzlkKvjgb7jgozjgabjgYTjgovloLTlkIjjga7jgb/vvIlcbiAgICBpZiAodGhpcy5jdXJyZW50SW5wdXQuaW5jbHVkZXMoJ1xcbicpKSB7XG4gICAgICB0aGlzLmFkanVzdFRleHRhcmVhSGVpZ2h0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIDHooYzjga7loLTlkIjjga/lm7rlrprpq5jjgZVcbiAgICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9ICc0NHB4JztcbiAgICB9XG4gICAgXG4gICAgLy8g44Kr44O844K944Or5L2N572u44KS5pu05pawXG4gICAgdGhpcy51cGRhdGVDdXJzb3JQb3NpdGlvbigpO1xuICB9XG5cbiAgLy8g44OV44Kp44O844Kr44K55pmC44Gu5Yem55CGXG4gIGhhbmRsZUZvY3VzKCkge1xuICAgIHRoaXMuc2hvd0N1cnNvciA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVDdXJzb3JQb3NpdGlvbigpO1xuICB9XG5cbiAgLy8g44OW44Op44O85pmC44Gu5Yem55CGXG4gIGhhbmRsZUJsdXIoKSB7XG4gICAgdGhpcy5zaG93Q3Vyc29yID0gZmFsc2U7XG4gIH1cblxuICAvLyDjgqvjg7zjgr3jg6vkvY3nva7jga7mm7TmlrBcbiAgdXBkYXRlQ3Vyc29yUG9zaXRpb24oKSB7XG4gICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIXRleHRhcmVhKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgY3Vyc29yUG9zID0gdGV4dGFyZWEuc2VsZWN0aW9uU3RhcnQ7XG4gICAgY29uc3QgdGV4dEJlZm9yZUN1cnNvciA9IHRoaXMuY3VycmVudElucHV0LnN1YnN0cmluZygwLCBjdXJzb3JQb3MpO1xuICAgIFxuICAgIC8vIOaUueihjOOBp+WIhuWJslxuICAgIGNvbnN0IGxpbmVzID0gdGV4dEJlZm9yZUN1cnNvci5zcGxpdCgnXFxuJyk7XG4gICAgY29uc3QgY3VycmVudExpbmVJbmRleCA9IGxpbmVzLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgY3VycmVudExpbmVUZXh0ID0gbGluZXNbY3VycmVudExpbmVJbmRleF07XG4gICAgXG4gICAgLy8g5Luu44GuY2FudmFz44KS5L2/44Gj44Gm54++5Zyo44Gu6KGM44Gu44OG44Kt44K544OI5bmF44KS6KiI566XXG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LmZvbnQgPSAnMTRweCBcIlNGIE1vbm9cIiwgTW9uYWNvLCBtb25vc3BhY2UnO1xuICAgICAgY29uc3QgdGV4dFdpZHRoID0gY29udGV4dC5tZWFzdXJlVGV4dChjdXJyZW50TGluZVRleHQpLndpZHRoO1xuICAgICAgXG4gICAgICAvLyDjgqvjg7zjgr3jg6vkvY3nva7jgpLoqK3lrprvvIjjg5Hjg4fjgqPjg7PjgrDliIbjgpLogIPmha7vvIlcbiAgICAgIHRoaXMuY3Vyc29yTGVmdCA9IDggKyB0ZXh0V2lkdGg7IC8vIDhweCDjga8gdGV4dGFyZWEg44Gu5bem44OR44OH44Kj44Oz44KwXG4gICAgICBcbiAgICAgIC8vIOWeguebtOS9jee9ruOCkuiqv+aVtO+8iOihjOaVsOOBq+WfuuOBpeOBhOOBpuOAgeOCueOCr+ODreODvOODq+S9jee9ruOCguiAg+aFru+8iVxuICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGV4dGFyZWEuc2Nyb2xsVG9wO1xuICAgICAgdGhpcy5jdXJzb3JUb3AgPSAxMiArIChjdXJyZW50TGluZUluZGV4ICogMjApIC0gc2Nyb2xsVG9wOyAvLyDjgrnjgq/jg63jg7zjg6vliIbjgpLlvJXjgY9cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBZ2VudFRlbXBsYXRlKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHByb3ZpZGVDb21wb25lbnQoRW50cmFuY2VUZW1wbGF0ZVN0b3JlLCAoKSA9PiBBZ2VudFRlbXBsYXRlKSxcbiAgXTtcbn0iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHhtYWNoaW5hLWNvbXBvbmVudHMtdGVtcGxhdGVzLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21wb25lbnRzL3NyYy9saWIvdGVtcGxhdGVzL2FnZW50L3h4bWFjaGluYS1jb21wb25lbnRzLXRlbXBsYXRlcy1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAsBA,IAAI,QAAQ;AACZ,CAAC,UAAU,QAAQ,EAAE;AACrB,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,iCAAiC;AAC3D,IAAI,QAAQ,CAAC,qBAAqB,CAAC,GAAG,6CAA6C;AACnF,IAAI,QAAQ,CAAC,sBAAsB,CAAC,GAAG,8CAA8C;AACrF,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,kCAAkC;AAC7D,CAAC,EAAE,QAAQ,KAAK,QAAQ,GAAG,EAAE,CAAC,CAAC;AACxB,MAAM,aAAa,SAAS,iBAAiB,CAAC;AACrD,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAClD,QAAQ,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC5C,QAAQ,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,QAAQ,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;AACzD,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC;AACjD,QAAQ,IAAI,CAAC,UAAU,GAAG,OAAO;AACjC,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;AAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE;AAC3B,QAAQ,IAAI,CAAC,cAAc,GAAG,EAAE;AAChC,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC9B;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM;AAClC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACtC,IAAI,eAAe,GAAG;AACtB;AACA,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa;AAC7D,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,QAAQ,CAAC,KAAK,EAAE;AAChC;AACA,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;AAC3C,YAAY;AACZ,QAAQ,CAAC,EAAE,GAAG,CAAC;AACf,IAAI;AACJ,IAAI,eAAe,CAAC,QAAQ,EAAE;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC;AACA,QAAQ,IAAI,CAAC,kBAAkB,EAAE;AACjC;AACA,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AACvC,QAAQ,CAAC,EAAE,EAAE,CAAC;AACd;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa;AACzD,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,QAAQ,CAAC,KAAK,EAAE;AAC5B,YAAY,IAAI,CAAC,oBAAoB,EAAE;AACvC,QAAQ;AACR,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC/D,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,4BAA4B,CAAC;AAC3D,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,yBAAyB,CAAC;AACxD,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC/D,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC;AACrD,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mCAAmC,CAAC;AAClE,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC/D,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACnD,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC;AACrD,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC,CAAC;AAChH,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC;AACA,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB;AACA,IAAI;AACJ,IAAI,cAAc,CAAC,OAAO,EAAE;AAC5B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI;AAChC,QAAQ,IAAI,CAAC,UAAU,GAAG,eAAe;AACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC/B;AACA,QAAQ,IAAI,OAAO,KAAK,OAAO,EAAE;AACjC,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,wDAAwD,CAAC;AAC3F,YAAY,UAAU,CAAC,MAAM;AAC7B,gBAAgB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,mBAAmB,EAAE,CAAC;AACnE,gBAAgB,IAAI,CAAC,kBAAkB,EAAE;AACzC,YAAY,CAAC,EAAE,GAAG,CAAC;AACnB,QAAQ;AACR,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC7C,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC5C,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,wDAAwD,CAAC;AAC/F,gBAAgB,UAAU,CAAC,MAAM;AACjC,oBAAoB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,mBAAmB,EAAE,CAAC;AACvE,oBAAoB,IAAI,CAAC,kBAAkB,EAAE;AAC7C,gBAAgB,CAAC,EAAE,GAAG,CAAC;AACvB,YAAY;AACZ,iBAAiB,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAClD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,yDAAyD,CAAC;AAChG,gBAAgB,UAAU,CAAC,MAAM;AACjC,oBAAoB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,oBAAoB,EAAE,CAAC;AACxE,oBAAoB,IAAI,CAAC,kBAAkB,EAAE;AAC7C,gBAAgB,CAAC,EAAE,GAAG,CAAC;AACvB,YAAY;AACZ,iBAAiB,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAChD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,uDAAuD,CAAC;AAC9F,gBAAgB,UAAU,CAAC,MAAM;AACjC,oBAAoB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC3D,oBAAoB,IAAI,CAAC,kBAAkB,EAAE;AAC7C,gBAAgB,CAAC,EAAE,GAAG,CAAC;AACvB,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sDAAsD,CAAC;AAC7F,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,4BAA4B,CAAC;AACnE,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,6BAA6B,CAAC;AACpE,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC;AAClE,gBAAgB,IAAI,CAAC,kBAAkB,EAAE;AACzC,YAAY;AACZ,QAAQ;AACR;AACA,aAAa,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE;AAChE,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mCAAmC,CAAC;AACtE,YAAY,UAAU,CAAC,MAAM;AAC7B,gBAAgB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACxD,gBAAgB,UAAU,CAAC,MAAM;AACjC,oBAAoB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,8CAA8C,CAAC;AACzF,oBAAoB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mDAAmD,CAAC;AAC9F,oBAAoB,IAAI,CAAC,kBAAkB,EAAE;AAC7C,gBAAgB,CAAC,EAAE,GAAG,CAAC;AACvB,YAAY,CAAC,EAAE,GAAG,CAAC;AACnB,QAAQ;AACR;AACA,aAAa,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,GAAG,EAAE;AACxD,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,wCAAwC,CAAC;AAC3E,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mEAAmE,CAAC;AACtG,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gFAAgF,CAAC;AACnH,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iFAAiF,CAAC;AACpH,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,wFAAwF,CAAC;AAC3H,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kFAAkF,CAAC;AACrH,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,8DAA8D,CAAC;AACjG,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oDAAoD,CAAC;AACvF,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kEAAkE,CAAC;AACrG,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACrC,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,wCAAwC,CAAC;AAC3E,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,+EAA+E,CAAC;AAClH,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,4EAA4E,CAAC;AAC/G,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAQ;AACR;AACA,aAAa,IAAI,OAAO,KAAK,OAAO,EAAE;AACtC,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kCAAkC,CAAC;AACrE,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACrC,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,yBAAyB,CAAC;AAC5D,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,4BAA4B,CAAC;AAC/D,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,yBAAyB,CAAC;AAC5D,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACrC,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,yBAAyB,CAAC;AAC5D,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAC1D,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC;AACzD,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mCAAmC,CAAC;AACtE,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACrC,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,yBAAyB,CAAC;AAC5D,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACvD,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC;AACzD,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACrC,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC;AAC9D,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,6BAA6B,CAAC;AAChE,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAQ;AACR;AACA,aAAa,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,EAAE;AAC3D,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjC,YAAY,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC1C,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAQ;AACR;AACA,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,+BAA+B,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACrF,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,uCAAuC,CAAC;AAC1E,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAQ;AACR,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,OAAO;AACjC,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC/B,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AACtC;AACA,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;AACrD,QAAQ,CAAC,EAAE,GAAG,CAAC;AACf,IAAI;AACJ,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB;AACA,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE;AAC7C,YAAY,OAAO;AACnB,QAAQ;AACR,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM;AACjE,cAAc,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI;AACzD,cAAc,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACtC,QAAQ,IAAI,aAAa,EAAE;AAC3B;AACA,YAAY,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,uBAAuB,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACrH,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC;AACxD;AACA,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;AACnD,YAAY,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;AAC1D;AACA,YAAY,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;AAC9C;AACA,YAAY,IAAI,CAAC,YAAY,GAAG,MAAM;AACtC;AACA,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa;AAC7D,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC9C,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE;AACtC,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B,QAAQ,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;AACvD;AACA,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/E,QAAQ;AACR,aAAa,IAAI,SAAS,KAAK,CAAC,EAAE;AAClC;AACA,YAAY,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AACpE,gBAAgB,IAAI,CAAC,YAAY,EAAE;AACnC,gBAAgB,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC;AACnF,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;AAC9D,gBAAgB,IAAI,CAAC,YAAY,GAAG,MAAM;AAC1C,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,KAAK,CAAC,cAAc,EAAE;AAClC,QAAQ;AACR,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sDAAsD,CAAC;AACrF,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,wCAAwC,CAAC;AAC3E,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,4CAA4C,CAAC;AAC/E,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC;AAC9D,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,0BAA0B,CAAC;AAC7D,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AACrC,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACnC,QAAQ,CAAC,EAAE,GAAG,CAAC;AACf,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,KAAK,CAAC,eAAe,EAAE;AAC/B,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnC,IAAI;AACJ;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;AACjD,IAAI;AACJ;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa;AACzD,QAAQ,IAAI,QAAQ,EAAE;AACtB;AACA,YAAY,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC1C;AACA,YAAY,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY;AACtD;AACA,YAAY,MAAM,SAAS,GAAG,EAAE,CAAC;AACjC,YAAY,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAI;AAC5E,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,qBAAqB,CAAC,KAAK,EAAE;AACjC,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM;AACrC,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B,QAAQ,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc;AACtD;AACA,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AACjE,YAAY,IAAI,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE;AACjD,gBAAgB,KAAK,CAAC,cAAc,EAAE;AACtC,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE;AAC1E,YAAY,KAAK,CAAC,cAAc,EAAE;AAClC,QAAQ;AACR;AACA,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE;AAClC,YAAY,KAAK,CAAC,cAAc,EAAE;AAClC,YAAY,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;AACpE,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM;AACrC,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACnD,YAAY,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AACjF;AACA,YAAY,UAAU,CAAC,MAAM;AAC7B,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC;AACpF,gBAAgB,QAAQ,CAAC,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC;AACpE,YAAY,CAAC,CAAC;AACd,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9C,YAAY,IAAI,CAAC,oBAAoB,EAAE;AACvC,QAAQ;AACR,aAAa;AACb;AACA,YAAY,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC1C,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,oBAAoB,EAAE;AACnC,IAAI;AACJ;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;AAC9B,QAAQ,IAAI,CAAC,oBAAoB,EAAE;AACnC,IAAI;AACJ;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B,IAAI;AACJ;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa;AACzD,QAAQ,IAAI,CAAC,QAAQ;AACrB,YAAY;AACZ,QAAQ,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc;AACjD,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC;AAC1E;AACA,QAAQ,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;AAClD,QAAQ,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;AACjD,QAAQ,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACvD;AACA,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACvD,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AAC/C,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,CAAC,IAAI,GAAG,mCAAmC;AAC9D,YAAY,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,KAAK;AACxE;AACA,YAAY,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5C;AACA,YAAY,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS;AAChD,YAAY,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,gBAAgB,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;AACtE,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACjL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;AACznB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,0pLAA0pL,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,8MAA8M,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,2CAA2C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,qDAAqD,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,sFAAsF,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,oBAAoB,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,YAAY,EAAE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1vO;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AACvH,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE;AAC3D,wBAAwB,YAAY;AACpC,wBAAwB,WAAW;AACnC,wBAAwB,eAAe;AACvC,wBAAwB,SAAS;AACjC,wBAAwB,4BAA4B;AACpD,wBAAwB,eAAe;AACvC,wBAAwB,0BAA0B;AAClD,wBAAwB,eAAe;AACvC,wBAAwB,aAAa;AACrC,wBAAwB,gBAAgB;AACxC,wBAAwB,aAAa;AACrC,qBAAqB,EAAE,QAAQ,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,IAAI,EAAE;AACX,wBAAwB,KAAK,EAAE;AAC/B,qBAAqB,EAAE,eAAe,EAAE,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE;AACzF,wBAAwB;AACxB,4BAA4B,SAAS,EAAE,qBAAqB;AAC5D,4BAA4B,MAAM,EAAE;AACpC,gCAAgC,MAAM;AACtC,gCAAgC,SAAS;AACzC,gCAAgC,OAAO;AACvC,gCAAgC,UAAU;AAC1C,6BAA6B;AAC7B,yBAAyB;AACzB,qBAAqB,EAAE,MAAM,EAAE,CAAC,0pLAA0pL,CAAC,EAAE;AAC7rL,SAAS,CAAC,EAAE,CAAC;AACN,SAAS,oBAAoB,GAAG;AACvC,IAAI,OAAO;AACX,QAAQ,gBAAgB,CAAC,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpE,KAAK;AACL;;AC5hBA;AACA;AACA;;;;"}
|
|
1
|
+
{"version":3,"file":"xxmachina-components-templates-agent.mjs","sources":["../tmp-esm2022/templates/agent/agent.template.js","../tmp-esm2022/templates/agent/xxmachina-components-templates-agent.js"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, ChangeDetectorRef, viewChild } from '@angular/core';\nimport { NgAtomicComponent, provideComponent } from '@ng-atomic/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { AutoLayoutFrame } from '@ng-atomic/components/frames/auto-layout';\nimport { CardFrame } from '@ng-atomic/components/frames/card';\nimport { ActionButtonsSectionOrganism } from '@ng-atomic/components/organisms/action-buttons-section';\nimport { HeadingOrganism } from '@ng-atomic/components/organisms/heading';\nimport { NgAtomicFormSectionBuilder } from '@ng-atomic/components/templates/form';\nimport { EntranceTemplateStore } from '@ng-atomic/components/templates/entrance';\nimport { AppService } from '@ng-atomic/common/services/app';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { XtermOrganism } from '@xxmachina/components/organisms/xterm';\nimport chalk from 'chalk';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ng-atomic/components/templates/entrance\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@angular/material/button\";\nimport * as i4 from \"@angular/material/icon\";\nimport * as i5 from \"@angular/material/tooltip\";\nvar ActionId;\n(function (ActionId) {\n ActionId[\"SIGN_IN\"] = \"[@ng-atomic/components] Sign In\";\n ActionId[\"SIGN_IN_WITH_GOOGLE\"] = \"[@ng-atomic/components] Sign In With Google\";\n ActionId[\"SIGN_IN_WITH_TWITTER\"] = \"[@ng-atomic/components] Sign In With Twitter\";\n ActionId[\"SIGN_OUT\"] = \"[@ng-atomic/components] Sign Out\";\n})(ActionId || (ActionId = {}));\nexport class AgentTemplate extends NgAtomicComponent {\n constructor() {\n super(...arguments);\n this.ActionId = ActionId;\n this.store = inject(EntranceTemplateStore);\n this.cdr = inject(ChangeDetectorRef);\n this.app = inject(AppService);\n this.xtermComponent = viewChild('xtermComponent');\n this.inputField = viewChild('inputField');\n this.statusText = 'Ready';\n this.isProcessing = false;\n this.showCursor = false;\n this.cursorLeft = 60;\n this.cursorTop = 12;\n this.commandHistory = [];\n this.historyIndex = -1;\n // 入力管理\n this.currentInput = 'x_x ';\n }\n static { this.ActionId = ActionId; }\n ngAfterViewInit() {\n // 入力フィールドにフォーカス\n setTimeout(() => {\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.focus();\n // 初期高さを適切に設定\n this.adjustTextareaHeight();\n }\n }, 100);\n }\n onTerminalReady(terminal) {\n this.terminal = terminal;\n // 初期メッセージの表示\n this.showWelcomeMessage();\n // 初回ロード時は最上部にスクロール(アスキーアートから見えるように)\n setTimeout(() => {\n this.terminal.scrollToTop();\n }, 50);\n // 入力フィールドにフォーカスと高さ調整\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.focus();\n this.adjustTextareaHeight();\n }\n }\n showWelcomeMessage() {\n // アスキーアート(lain風の色で)\n this.terminal.writeln('');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('███╗ ███╗ █████╗ ██████╗██╗ ██╗██╗███╗ ██╗ █████╗ ')}`);\n this.terminal.writeln(`${chalk.cyan('████╗ ████║██╔══██╗██╔════╝██║ ██║██║████╗ ██║██╔══██╗')}`);\n this.terminal.writeln(`${chalk.cyan('██╔████╔██║███████║██║ ███████║██║██╔██╗ ██║███████║')}`);\n this.terminal.writeln(`${chalk.cyan('██║╚██╔╝██║██╔══██║██║ ██╔══██║██║██║╚██╗██║██╔══██║')}`);\n this.terminal.writeln(`${chalk.cyan('██║ ╚═╝ ██║██║ ██║╚██████╗██║ ██║██║██║ ╚████║██║ ██║')}`);\n this.terminal.writeln(`${chalk.cyan('╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝')}`);\n this.terminal.writeln(`${chalk.cyan(' █████╗ ██████╗ ███████╗███╗ ██╗████████╗')}`);\n this.terminal.writeln(`${chalk.cyan(' ██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝')}`);\n this.terminal.writeln(`${chalk.cyan(' ███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ')}`);\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● Welcome to \\x1b[1;93m合同会社マキナエージェント\\x1b[0m')}`);\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● 会社概要\\x1b[0m')}`);\n this.terminal.writeln(' 合同会社マキナエージェントは、AI技術を活用した');\n this.terminal.writeln(' 革新的なソリューションを提供する企業です。');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● 事業内容\\x1b[0m')}`);\n this.terminal.writeln(' - システム開発のコンサルティング事業');\n this.terminal.writeln(' - AIアジャイル開発の導入支援事業');\n this.terminal.writeln(' - 自己改変型AIエージェント(オートポイエーシス)の開発事業');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● ビジョン\\x1b[0m')}`);\n this.terminal.writeln(' 人とAIが協働する未来を創造し、');\n this.terminal.writeln(' あらゆるビジネスの可能性を拡げます。');\n this.terminal.writeln('');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● Type \\x1b[1;36mlogin\\x1b[1;33m to sign in with Google\\x1b[0m')}`);\n this.terminal.writeln(`${chalk.cyan('● Type \\x1b[1;36mhelp\\x1b[1;33m for more commands\\x1b[0m')}`);\n this.terminal.writeln('');\n // プロンプト表示\n this.showPrompt();\n }\n showPrompt() {\n // プロンプトはHTML側の入力フィールドで表示するため不要\n }\n processCommand(command) {\n this.isProcessing = true;\n this.statusText = 'Processing...';\n this.cdr.markForCheck();\n // ログインコマンド\n if (command === 'login') {\n this.terminal.writeln('\\x1b[1;32m● Initiating Google authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });\n this.completeProcessing();\n }, 300);\n }\n else if (command.startsWith('auth')) {\n if (command.includes('google')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating Google authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });\n this.completeProcessing();\n }, 300);\n }\n else if (command.includes('twitter')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating Twitter authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_TWITTER });\n this.completeProcessing();\n }, 300);\n }\n else if (command.includes('local')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating local authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN });\n this.completeProcessing();\n }, 300);\n }\n else {\n this.terminal.writeln('\\x1b[1;32m● Available authentication methods:\\x1b[0m');\n this.terminal.writeln(' - auth --provider=google');\n this.terminal.writeln(' - auth --provider=twitter');\n this.terminal.writeln(' - auth --provider=local');\n this.completeProcessing();\n }\n }\n // ログアウトコマンド\n else if (command === 'logout' || command === 'signout') {\n this.terminal.writeln('\\x1b[1;32m● Signing out...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_OUT });\n setTimeout(() => {\n this.terminal.writeln('\\x1b[1;32m● You have been signed out.\\x1b[0m');\n this.terminal.writeln('\\x1b[1;33m● Type \"login\" to sign in again.\\x1b[0m');\n this.completeProcessing();\n }, 500);\n }, 300);\n }\n // ヘルプコマンド\n else if (command === 'help' || command === '?') {\n this.terminal.writeln('\\x1b[1;32m● Available commands:\\x1b[0m');\n this.terminal.writeln(' \\x1b[36mlogin\\x1b[0m - Sign in with Google (default)');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mgoogle\\x1b[0m - Sign in with Google');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mtwitter\\x1b[0m - Sign in with Twitter');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mlocal\\x1b[0m - Sign in with email/password');\n this.terminal.writeln(' \\x1b[36mlogout\\x1b[0m / \\x1b[36msignout\\x1b[0m - Sign out from the application');\n this.terminal.writeln(' \\x1b[36mabout\\x1b[0m - Show company information');\n this.terminal.writeln(' \\x1b[36mclear\\x1b[0m - Clear terminal');\n this.terminal.writeln(' \\x1b[36mhelp\\x1b[0m / \\x1b[36m?\\x1b[0m - Show this help');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;33m● Keyboard shortcuts:\\x1b[0m');\n this.terminal.writeln(' \\x1b[36m⌘K\\x1b[0m / \\x1b[36mCtrl+K\\x1b[0m - Generate command suggestions');\n this.terminal.writeln(' \\x1b[36m↑\\x1b[0m / \\x1b[36m↓\\x1b[0m - Navigate command history');\n this.completeProcessing();\n }\n // 会社情報コマンド\n else if (command === 'about') {\n this.terminal.writeln('\\x1b[1;36m● 合同会社マキナエージェント\\x1b[0m');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● 会社概要\\x1b[0m');\n this.terminal.writeln(' 合同会社マキナエージェントは、AI技術を活用した');\n this.terminal.writeln(' 革新的なソリューションを提供する企業です。');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● 事業内容\\x1b[0m');\n this.terminal.writeln(' - システム開発のコンサルティング事業');\n this.terminal.writeln(' - AIアジャイル開発の導入支援事業');\n this.terminal.writeln(' - 自己改変型AIエージェント(オートポイエーシス)の開発事業');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● ビジョン\\x1b[0m');\n this.terminal.writeln(' 人とAIが協働する未来を創造し、');\n this.terminal.writeln(' あらゆるビジネスの可能性を拡げます。');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● お問い合わせ\\x1b[0m');\n this.terminal.writeln(' 詳細については、ログイン後にお問い合わせください。');\n this.completeProcessing();\n }\n // クリアコマンド\n else if (command === 'clear' || command === 'cls') {\n this.terminal.clear();\n this.terminal.scrollToBottom();\n this.completeProcessing();\n }\n // 不明なコマンド\n else {\n this.terminal.writeln(`\\x1b[1;31m● Command not found: ${command}\\x1b[0m`);\n this.terminal.writeln(' Type \"help\" for available commands.');\n this.completeProcessing();\n }\n }\n completeProcessing() {\n this.isProcessing = false;\n this.statusText = 'Ready';\n this.cdr.markForCheck();\n this.terminal.writeln('');\n // 最新の出力が見えるようにスクロール\n this.terminal.scrollToBottom();\n // 入力フィールドにフォーカスを戻す\n setTimeout(() => {\n this.inputField()?.nativeElement?.focus();\n }, 100);\n }\n handleEnter(event) {\n // Shift+EnterまたはCtrl+Enterの場合は改行を許可\n if (event.shiftKey || event.ctrlKey) {\n return; // デフォルト動作(改行)を許可\n }\n event.preventDefault();\n const prefix = 'x_x ';\n const actualCommand = this.currentInput.startsWith(prefix)\n ? this.currentInput.slice(prefix.length).trim()\n : this.currentInput.trim();\n if (actualCommand) {\n // コマンドをターミナルに表示(改行を含む場合は適切に処理)\n const displayCommand = actualCommand.split('\\n').map(line => '\\x1b[32m> x_x \\x1b[0m' + line).join('\\r\\n');\n this.terminal.write(displayCommand + '\\r\\n');\n // 履歴に追加\n this.commandHistory.push(actualCommand);\n this.historyIndex = this.commandHistory.length;\n // コマンドを処理\n this.processCommand(actualCommand);\n // 入力を初期状態にリセット\n this.currentInput = prefix;\n // textareaの高さをリセット\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.style.height = 'auto';\n }\n }\n }\n navigateHistory(event, direction) {\n event.preventDefault();\n const prefix = 'x_x ';\n if (direction === -1 && this.historyIndex > 0) {\n // 上矢印\n this.historyIndex--;\n this.currentInput = prefix + this.commandHistory[this.historyIndex];\n }\n else if (direction === 1) {\n // 下矢印\n if (this.historyIndex < this.commandHistory.length - 1) {\n this.historyIndex++;\n this.currentInput = prefix + this.commandHistory[this.historyIndex];\n }\n else {\n this.historyIndex = this.commandHistory.length;\n this.currentInput = prefix;\n }\n }\n }\n generateCommand(event) {\n if (event) {\n event.preventDefault();\n }\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● Generating command suggestions...\\x1b[0m');\n setTimeout(() => {\n this.terminal.writeln('\\x1b[1;33m● Suggested commands:\\x1b[0m');\n this.terminal.writeln(' 1. \\x1b[36mauth --provider=google\\x1b[0m');\n this.terminal.writeln(' 2. \\x1b[36mlogin\\x1b[0m');\n this.terminal.writeln(' 3. \\x1b[36mhelp\\x1b[0m');\n this.terminal.writeln('');\n this.cdr.markForCheck();\n }, 500);\n }\n // sideAppを閉じる\n closeSideApp(event) {\n event.stopPropagation();\n this.app.sideApp.collapse();\n }\n // 入力フィールドにフォーカスを設定\n focusInput() {\n this.inputField()?.nativeElement?.focus();\n }\n // textareaの高さを内容に合わせて調整\n adjustTextareaHeight() {\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n // 一旦高さをリセット\n textarea.style.height = '20px';\n // scrollHeightを確認し、実際に必要な高さを設定\n const scrollHeight = textarea.scrollHeight;\n // パディングを考慮した最小高さ\n const minHeight = 44; // padding: 12px * 2 + line-height: 20px\n textarea.style.height = Math.max(minHeight, scrollHeight) + 'px';\n }\n }\n // プレフィックスの削除を防止\n preventPrefixDeletion(event) {\n const textarea = event.target;\n const prefix = 'x_x ';\n const selectionStart = textarea.selectionStart;\n // バックスペースまたはDeleteキーの処理\n if (event.key === 'Backspace' || event.key === 'Delete') {\n if (selectionStart <= prefix.length) {\n event.preventDefault();\n }\n }\n // 左矢印キーでカーソルがプレフィックスより前に行かないように\n if (event.key === 'ArrowLeft' && selectionStart <= prefix.length) {\n event.preventDefault();\n }\n // Home キーでカーソルをプレフィックスの直後に移動\n if (event.key === 'Home') {\n event.preventDefault();\n textarea.setSelectionRange(prefix.length, prefix.length);\n }\n }\n // 入力時の処理\n handleInput(event) {\n const textarea = event.target;\n const prefix = 'x_x ';\n // プレフィックスが削除されていたら復元\n if (!this.currentInput.startsWith(prefix)) {\n this.currentInput = prefix + this.currentInput.replace(/^x_x\\s*/, '');\n // カーソル位置を調整\n setTimeout(() => {\n const newPosition = Math.max(prefix.length, textarea.selectionStart);\n textarea.setSelectionRange(newPosition, newPosition);\n });\n }\n // 高さ調整(改行が含まれている場合のみ)\n if (this.currentInput.includes('\\n')) {\n this.adjustTextareaHeight();\n }\n else {\n // 1行の場合は固定高さ\n textarea.style.height = '44px';\n }\n // カーソル位置を更新\n this.updateCursorPosition();\n }\n // フォーカス時の処理\n handleFocus() {\n this.showCursor = true;\n this.updateCursorPosition();\n }\n // ブラー時の処理\n handleBlur() {\n this.showCursor = false;\n }\n // カーソル位置の更新\n updateCursorPosition() {\n const textarea = this.inputField()?.nativeElement;\n if (!textarea)\n return;\n const cursorPos = textarea.selectionStart;\n const textBeforeCursor = this.currentInput.substring(0, cursorPos);\n // 改行で分割\n const lines = textBeforeCursor.split('\\n');\n const currentLineIndex = lines.length - 1;\n const currentLineText = lines[currentLineIndex];\n // 仮のcanvasを使って現在の行のテキスト幅を計算\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n if (context) {\n context.font = '14px \"SF Mono\", Monaco, monospace';\n const textWidth = context.measureText(currentLineText).width;\n // カーソル位置を設定(パディング分を考慮)\n this.cursorLeft = 8 + textWidth; // 8px は textarea の左パディング\n // 垂直位置を調整(行数に基づいて、スクロール位置も考慮)\n const scrollTop = textarea.scrollTop;\n this.cursorTop = 12 + (currentLineIndex * 20) - scrollTop; // スクロール分を引く\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AgentTemplate, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.0.5\", type: AgentTemplate, isStandalone: true, selector: \"templates-agent\", host: { classAttribute: \"template\" }, viewQueries: [{ propertyName: \"xtermComponent\", first: true, predicate: [\"xtermComponent\"], descendants: true, isSignal: true }, { propertyName: \"inputField\", first: true, predicate: [\"inputField\"], descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.EntranceTemplateStore, inputs: [\"form\", \"form\", \"actions\", \"actions\", \"title\", \"title\", \"fieldMap\", \"fieldMap\"] }], ngImport: i0, template: `\n <div class=\"terminal-window\">\n <div class=\"terminal-header\">\n <button mat-icon-button class=\"close-button\" (click)=\"closeSideApp($event)\" matTooltip=\"閉じる\">\n <mat-icon>close</mat-icon>\n </button>\n <div class=\"terminal-title\">Machina Agent</div>\n <div class=\"terminal-status\">{{ statusText }}</div>\n </div>\n \n <div class=\"terminal-body\">\n <organisms-xterm \n class=\"terminal-display\"\n (terminalReady)=\"onTerminalReady($event)\"\n (click)=\"focusInput()\"\n #xtermComponent\n ></organisms-xterm>\n <div class=\"input-area\">\n <div class=\"input-line\">\n <span class=\"input-prefix\">> x_x</span>\n <div class=\"textarea-wrapper\">\n <span class=\"arrow-prefix\">></span>\n <div class=\"input-container\">\n <textarea \n #inputField\n class=\"terminal-input\" \n [(ngModel)]=\"currentInput\"\n (keydown.enter)=\"handleEnter($event)\"\n (keydown.arrowUp)=\"navigateHistory($event, -1)\"\n (keydown.arrowDown)=\"navigateHistory($event, 1)\"\n (keydown.control.k)=\"generateCommand($event)\"\n (keydown.meta.k)=\"generateCommand($event)\"\n (keydown)=\"preventPrefixDeletion($event)\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n (keyup)=\"updateCursorPosition()\"\n (click)=\"updateCursorPosition()\"\n (scroll)=\"updateCursorPosition()\"\n [disabled]=\"isProcessing\"\n placeholder=\"x_x about\"\n rows=\"1\"\n ></textarea>\n <div class=\"block-cursor\" \n [class.visible]=\"showCursor\"\n [style.left.px]=\"cursorLeft\"\n [style.top.px]=\"cursorTop\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n `, isInline: true, styles: [\":host{--h-pad: 20px;--h-pad-SCOPED-IN-entrance-Y13S: var(--h-pad);--text: #e0e0e0;--text-SCOPED-IN-entrance-Y13S: var(--text);--user: #00ff00;--user-SCOPED-IN-entrance-Y13S: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-Y13S: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-Y13S: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-Y13S: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-Y13S);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;padding:0 20px;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-Y13S);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-Y13S);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-Y13S);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-Y13S);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-Y13S);opacity:.7}.terminal-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;transition:all .3s ease}.terminal-body .terminal-display{flex:1;position:relative;background:#0a0a0a;overflow:hidden}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-Y13S);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word;caret-shape:block}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0}.terminal-window{height:100%;max-height:100vh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0 16px}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0 12px}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-Y13S);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-Y13S)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-Y13S),0 0 20px var(--accent-SCOPED-IN-entrance-Y13S);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-entrance-Y13S: var(--text);--user: #0066cc;--user-SCOPED-IN-entrance-Y13S: var(--user);--sys: #666;--sys-SCOPED-IN-entrance-Y13S: var(--sys);--border: #ddd;--border-SCOPED-IN-entrance-Y13S: var(--border)}.terminal-window{background:#ffffffd9;box-shadow:0 10px 30px #00000014}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i3.MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i4.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"ngmodule\", type: MatTooltipModule }, { kind: \"directive\", type: i5.MatTooltip, selector: \"[matTooltip]\", inputs: [\"matTooltipPosition\", \"matTooltipPositionAtOrigin\", \"matTooltipDisabled\", \"matTooltipShowDelay\", \"matTooltipHideDelay\", \"matTooltipTouchGestures\", \"matTooltip\", \"matTooltipClass\"], exportAs: [\"matTooltip\"] }, { kind: \"component\", type: XtermOrganism, selector: \"organisms-xterm\", outputs: [\"terminalReady\"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AgentTemplate, decorators: [{\n type: Component,\n args: [{ selector: 'templates-agent', imports: [\n CommonModule,\n FormsModule,\n AutoLayoutFrame,\n CardFrame,\n ActionButtonsSectionOrganism,\n HeadingOrganism,\n NgAtomicFormSectionBuilder,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n XtermOrganism,\n ], template: `\n <div class=\"terminal-window\">\n <div class=\"terminal-header\">\n <button mat-icon-button class=\"close-button\" (click)=\"closeSideApp($event)\" matTooltip=\"閉じる\">\n <mat-icon>close</mat-icon>\n </button>\n <div class=\"terminal-title\">Machina Agent</div>\n <div class=\"terminal-status\">{{ statusText }}</div>\n </div>\n \n <div class=\"terminal-body\">\n <organisms-xterm \n class=\"terminal-display\"\n (terminalReady)=\"onTerminalReady($event)\"\n (click)=\"focusInput()\"\n #xtermComponent\n ></organisms-xterm>\n <div class=\"input-area\">\n <div class=\"input-line\">\n <span class=\"input-prefix\">> x_x</span>\n <div class=\"textarea-wrapper\">\n <span class=\"arrow-prefix\">></span>\n <div class=\"input-container\">\n <textarea \n #inputField\n class=\"terminal-input\" \n [(ngModel)]=\"currentInput\"\n (keydown.enter)=\"handleEnter($event)\"\n (keydown.arrowUp)=\"navigateHistory($event, -1)\"\n (keydown.arrowDown)=\"navigateHistory($event, 1)\"\n (keydown.control.k)=\"generateCommand($event)\"\n (keydown.meta.k)=\"generateCommand($event)\"\n (keydown)=\"preventPrefixDeletion($event)\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n (keyup)=\"updateCursorPosition()\"\n (click)=\"updateCursorPosition()\"\n (scroll)=\"updateCursorPosition()\"\n [disabled]=\"isProcessing\"\n placeholder=\"x_x about\"\n rows=\"1\"\n ></textarea>\n <div class=\"block-cursor\" \n [class.visible]=\"showCursor\"\n [style.left.px]=\"cursorLeft\"\n [style.top.px]=\"cursorTop\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n `, host: {\n class: 'template'\n }, changeDetection: ChangeDetectionStrategy.Default, hostDirectives: [\n {\n directive: EntranceTemplateStore,\n inputs: [\n 'form',\n 'actions',\n 'title',\n 'fieldMap',\n ],\n },\n ], styles: [\":host{--h-pad: 20px;--h-pad-SCOPED-IN-entrance-Y13S: var(--h-pad);--text: #e0e0e0;--text-SCOPED-IN-entrance-Y13S: var(--text);--user: #00ff00;--user-SCOPED-IN-entrance-Y13S: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-Y13S: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-Y13S: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-Y13S: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-Y13S);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;padding:0 20px;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-Y13S);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-Y13S);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-Y13S);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-Y13S);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-Y13S);opacity:.7}.terminal-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;transition:all .3s ease}.terminal-body .terminal-display{flex:1;position:relative;background:#0a0a0a;overflow:hidden}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-Y13S);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word;caret-shape:block}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0}.terminal-window{height:100%;max-height:100vh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0 16px}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0 12px}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-Y13S);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-Y13S)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-Y13S),0 0 20px var(--accent-SCOPED-IN-entrance-Y13S);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-entrance-Y13S: var(--text);--user: #0066cc;--user-SCOPED-IN-entrance-Y13S: var(--user);--sys: #666;--sys-SCOPED-IN-entrance-Y13S: var(--sys);--border: #ddd;--border-SCOPED-IN-entrance-Y13S: var(--border)}.terminal-window{background:#ffffffd9;box-shadow:0 10px 30px #00000014}}\\n\"] }]\n }] });\nexport function provideAgentTemplate() {\n return [\n provideComponent(EntranceTemplateStore, () => AgentTemplate),\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQudGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AeHhtYWNoaW5hL2NvbXBvbmVudHMvc3JjL2xpYi90ZW1wbGF0ZXMvYWdlbnQvYWdlbnQudGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXVDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0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ZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIFByb3ZpZGVyLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQXRvbWljQ29tcG9uZW50LCBwcm92aWRlQ29tcG9uZW50IH0gZnJvbSAnQG5nLWF0b21pYy9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEF1dG9MYXlvdXRGcmFtZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9mcmFtZXMvYXV0by1sYXlvdXQnO1xuaW1wb3J0IHsgQ2FyZEZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9jYXJkJztcbmltcG9ydCB7IEFjdGlvbkJ1dHRvbnNTZWN0aW9uT3JnYW5pc20gfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2FjdGlvbi1idXR0b25zLXNlY3Rpb24nO1xuaW1wb3J0IHsgSGVhZGluZ09yZ2FuaXNtIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL29yZ2FuaXNtcy9oZWFkaW5nJztcbmltcG9ydCB7IE5nQXRvbWljRm9ybVNlY3Rpb25CdWlsZGVyIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9mb3JtJztcbmltcG9ydCB7IEVudHJhbmNlVGVtcGxhdGVTdG9yZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy90ZW1wbGF0ZXMvZW50cmFuY2UnO1xuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2FwcCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgVGVybWluYWwgfSBmcm9tICdAeHRlcm0veHRlcm0nO1xuaW1wb3J0IHsgWHRlcm1PcmdhbmlzbSB9IGZyb20gJ0B4eG1hY2hpbmEvY29tcG9uZW50cy9vcmdhbmlzbXMveHRlcm0nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcblxuXG5lbnVtIEFjdGlvbklkIHtcbiAgU0lHTl9JTiA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzXSBTaWduIEluJyxcbiAgU0lHTl9JTl9XSVRIX0dPT0dMRSA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzXSBTaWduIEluIFdpdGggR29vZ2xlJyxcbiAgU0lHTl9JTl9XSVRIX1RXSVRURVIgPSAnW0BuZy1hdG9taWMvY29tcG9uZW50c10gU2lnbiBJbiBXaXRoIFR3aXR0ZXInLFxuICBTSUdOX09VVCA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzXSBTaWduIE91dCcsXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RlbXBsYXRlcy1hZ2VudCcsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQXV0b0xheW91dEZyYW1lLFxuICAgIENhcmRGcmFtZSxcbiAgICBBY3Rpb25CdXR0b25zU2VjdGlvbk9yZ2FuaXNtLFxuICAgIEhlYWRpbmdPcmdhbmlzbSxcbiAgICBOZ0F0b21pY0Zvcm1TZWN0aW9uQnVpbGRlcixcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIFh0ZXJtT3JnYW5pc20sXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gIDxkaXYgY2xhc3M9XCJ0ZXJtaW5hbC13aW5kb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtaGVhZGVyXCI+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiIChjbGljayk9XCJjbG9zZVNpZGVBcHAoJGV2ZW50KVwiIG1hdFRvb2x0aXA9XCLplonjgZjjgotcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzcz1cInRlcm1pbmFsLXRpdGxlXCI+TWFjaGluYSBBZ2VudDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRlcm1pbmFsLXN0YXR1c1wiPnt7IHN0YXR1c1RleHQgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtYm9keVwiPlxuICAgICAgPG9yZ2FuaXNtcy14dGVybSBcbiAgICAgICAgY2xhc3M9XCJ0ZXJtaW5hbC1kaXNwbGF5XCJcbiAgICAgICAgKHRlcm1pbmFsUmVhZHkpPVwib25UZXJtaW5hbFJlYWR5KCRldmVudClcIlxuICAgICAgICAoY2xpY2spPVwiZm9jdXNJbnB1dCgpXCJcbiAgICAgICAgI3h0ZXJtQ29tcG9uZW50XG4gICAgICA+PC9vcmdhbmlzbXMteHRlcm0+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtYXJlYVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbGluZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtcHJlZml4XCI+PiB4X3g8L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRhcmVhLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3ctcHJlZml4XCI+Pjwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPHRleHRhcmVhIFxuICAgICAgICAgICAgICAgICNpbnB1dEZpZWxkXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXJtaW5hbC1pbnB1dFwiIFxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudElucHV0XCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cIm5hdmlnYXRlSGlzdG9yeSgkZXZlbnQsIC0xKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cIm5hdmlnYXRlSGlzdG9yeSgkZXZlbnQsIDEpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5jb250cm9sLmspPVwiZ2VuZXJhdGVDb21tYW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLm1ldGEuayk9XCJnZW5lcmF0ZUNvbW1hbmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwicHJldmVudFByZWZpeERlbGV0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCJoYW5kbGVJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwiaGFuZGxlRm9jdXMoKVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwiaGFuZGxlQmx1cigpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwidXBkYXRlQ3Vyc29yUG9zaXRpb24oKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUN1cnNvclBvc2l0aW9uKClcIlxuICAgICAgICAgICAgICAgIChzY3JvbGwpPVwidXBkYXRlQ3Vyc29yUG9zaXRpb24oKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ4X3ggYWJvdXRcIlxuICAgICAgICAgICAgICAgIHJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibG9jay1jdXJzb3JcIiBcbiAgICAgICAgICAgICAgICBbY2xhc3MudmlzaWJsZV09XCJzaG93Q3Vyc29yXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJjdXJzb3JMZWZ0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cImN1cnNvclRvcFwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vYWdlbnQudGVtcGxhdGUuc2NzcyddLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICd0ZW1wbGF0ZSdcbiAgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogRW50cmFuY2VUZW1wbGF0ZVN0b3JlLFxuICAgICAgaW5wdXRzOiBbXG4gICAgICAgICdmb3JtJyxcbiAgICAgICAgJ2FjdGlvbnMnLFxuICAgICAgICAndGl0bGUnLFxuICAgICAgICAnZmllbGRNYXAnLFxuICAgICAgXSxcbiAgICB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFnZW50VGVtcGxhdGUgZXh0ZW5kcyBOZ0F0b21pY0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBzdGF0aWMgQWN0aW9uSWQgPSBBY3Rpb25JZDtcbiAgcHJvdGVjdGVkIEFjdGlvbklkID0gQWN0aW9uSWQ7XG4gIHByb3RlY3RlZCBzdG9yZSA9IGluamVjdChFbnRyYW5jZVRlbXBsYXRlU3RvcmUpO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgYXBwID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IHh0ZXJtQ29tcG9uZW50ID0gdmlld0NoaWxkPFh0ZXJtT3JnYW5pc20+KCd4dGVybUNvbXBvbmVudCcpO1xuICByZWFkb25seSBpbnB1dEZpZWxkID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4+KCdpbnB1dEZpZWxkJyk7XG5cbiAgcHJvdGVjdGVkIHN0YXR1c1RleHQgPSAnUmVhZHknO1xuICBwcm90ZWN0ZWQgaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93Q3Vyc29yID0gZmFsc2U7XG4gIHByb3RlY3RlZCBjdXJzb3JMZWZ0ID0gNjA7XG4gIHByb3RlY3RlZCBjdXJzb3JUb3AgPSAxMjtcblxuICAvLyB4dGVybemWoumAo1xuICBwcml2YXRlIHRlcm1pbmFsITogVGVybWluYWw7XG4gIHByaXZhdGUgY29tbWFuZEhpc3Rvcnk6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgaGlzdG9yeUluZGV4ID0gLTE7XG4gIFxuICAvLyDlhaXlipvnrqHnkIZcbiAgcHJvdGVjdGVkIGN1cnJlbnRJbnB1dCA9ICd4X3ggJztcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8g5YWl5Yqb44OV44Kj44O844Or44OJ44Gr44OV44Kp44O844Kr44K5XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCB0ZXh0YXJlYSA9IHRoaXMuaW5wdXRGaWVsZCgpPy5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKHRleHRhcmVhKSB7XG4gICAgICAgIHRleHRhcmVhLmZvY3VzKCk7XG4gICAgICAgIC8vIOWIneacn+mrmOOBleOCkumBqeWIh+OBq+ioreWumlxuICAgICAgICB0aGlzLmFkanVzdFRleHRhcmVhSGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIG9uVGVybWluYWxSZWFkeSh0ZXJtaW5hbDogVGVybWluYWwpIHtcbiAgICB0aGlzLnRlcm1pbmFsID0gdGVybWluYWw7XG4gICAgXG4gICAgLy8g5Yid5pyf44Oh44OD44K744O844K444Gu6KGo56S6XG4gICAgdGhpcy5zaG93V2VsY29tZU1lc3NhZ2UoKTtcbiAgICBcbiAgICAvLyDliJ3lm57jg63jg7zjg4nmmYLjga/mnIDkuIrpg6jjgavjgrnjgq/jg63jg7zjg6vvvIjjgqLjgrnjgq3jg7zjgqLjg7zjg4jjgYvjgonopovjgYjjgovjgojjgYbjgavvvIlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudGVybWluYWwuc2Nyb2xsVG9Ub3AoKTtcbiAgICB9LCA1MCk7XG4gICAgXG4gICAgLy8g5YWl5Yqb44OV44Kj44O844Or44OJ44Gr44OV44Kp44O844Kr44K544Go6auY44GV6Kq/5pW0XG4gICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGV4dGFyZWEpIHtcbiAgICAgIHRleHRhcmVhLmZvY3VzKCk7XG4gICAgICB0aGlzLmFkanVzdFRleHRhcmVhSGVpZ2h0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93V2VsY29tZU1lc3NhZ2UoKSB7XG4gICAgLy8g44Ki44K544Kt44O844Ki44O844OI77yIbGFpbumiqOOBruiJsuOBp++8iVxuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4paI4paI4paI4pWXICAg4paI4paI4paI4pWXIOKWiOKWiOKWiOKWiOKWiOKVlyAg4paI4paI4paI4paI4paI4paI4pWX4paI4paI4pWXICDilojilojilZfilojilojilZfilojilojilojilZcgICDilojilojilZcg4paI4paI4paI4paI4paI4pWXICcpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfilojilojilojilojilZcg4paI4paI4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4paI4paI4pWX4paI4paI4pWU4pWQ4pWQ4pWQ4pWQ4pWd4paI4paI4pWRICDilojilojilZHilojilojilZHilojilojilojilojilZcgIOKWiOKWiOKVkeKWiOKWiOKVlOKVkOKVkOKWiOKWiOKVlycpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfilojilojilZTilojilojilojilojilZTilojilojilZHilojilojilojilojilojilojilojilZHilojilojilZEgICAgIOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKVkeKWiOKWiOKVkeKWiOKWiOKVlOKWiOKWiOKVlyDilojilojilZHilojilojilojilojilojilojilojilZEnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4paI4paI4pWR4pWa4paI4paI4pWU4pWd4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4paI4paI4pWR4paI4paI4pWRICAgICDilojilojilZTilZDilZDilojilojilZHilojilojilZHilojilojilZHilZrilojilojilZfilojilojilZHilojilojilZTilZDilZDilojilojilZEnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4paI4paI4pWRIOKVmuKVkOKVnSDilojilojilZHilojilojilZEgIOKWiOKWiOKVkeKVmuKWiOKWiOKWiOKWiOKWiOKWiOKVl+KWiOKWiOKVkSAg4paI4paI4pWR4paI4paI4pWR4paI4paI4pWRIOKVmuKWiOKWiOKWiOKWiOKVkeKWiOKWiOKVkSAg4paI4paI4pWRJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KVmuKVkOKVnSAgICAg4pWa4pWQ4pWd4pWa4pWQ4pWdICDilZrilZDilZ0g4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWd4pWa4pWQ4pWdICDilZrilZDilZ3ilZrilZDilZ3ilZrilZDilZ0gIOKVmuKVkOKVkOKVkOKVneKVmuKVkOKVnSAg4pWa4pWQ4pWdJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJyAgICAg4paI4paI4paI4paI4paI4pWXICDilojilojilojilojilojilojilZcg4paI4paI4paI4paI4paI4paI4paI4pWX4paI4paI4paI4pWXICAg4paI4paI4pWX4paI4paI4paI4paI4paI4paI4paI4paI4pWXJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJyAgICDilojilojilZTilZDilZDilojilojilZfilojilojilZTilZDilZDilZDilZDilZ0g4paI4paI4pWU4pWQ4pWQ4pWQ4pWQ4pWd4paI4paI4paI4paI4pWXICDilojilojilZHilZrilZDilZDilojilojilZTilZDilZDilZ0nKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbignICAgIOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKVkeKWiOKWiOKVkSAg4paI4paI4paI4pWX4paI4paI4paI4paI4paI4pWXICDilojilojilZTilojilojilZcg4paI4paI4pWRICAg4paI4paI4pWRICAgJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJyAgICDilojilojilZTilZDilZDilojilojilZHilojilojilZEgICDilojilojilZHilojilojilZTilZDilZDilZ0gIOKWiOKWiOKVkeKVmuKWiOKWiOKVl+KWiOKWiOKVkSAgIOKWiOKWiOKVkSAgICcpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCcgICAg4paI4paI4pWRICDilojilojilZHilZrilojilojilojilojilojilojilZTilZ3ilojilojilojilojilojilojilojilZfilojilojilZEg4pWa4paI4paI4paI4paI4pWRICAg4paI4paI4pWRICAgJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJyAgICDilZrilZDilZ0gIOKVmuKVkOKVnSDilZrilZDilZDilZDilZDilZDilZ0g4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWd4pWa4pWQ4pWdICDilZrilZDilZDilZDilZ0gICDilZrilZDilZ0gICAnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfil48gV2VsY29tZSB0byBcXHgxYlsxOzkzbeWQiOWQjOS8muekvuODnuOCreODiuOCqOODvOOCuOOCp+ODs+ODiFxceDFiWzBtJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4pePIOS8muekvuamguimgVxceDFiWzBtJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIOWQiOWQjOS8muekvuODnuOCreODiuOCqOODvOOCuOOCp+ODs+ODiOOBr+OAgUFJ5oqA6KGT44KS5rS755So44GX44GfJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIOmdqeaWsOeahOOBquOCveODquODpeODvOOCt+ODp+ODs+OCkuaPkOS+m+OBmeOCi+S8gealreOBp+OBmeOAgicpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KXjyDkuovmpa3lhoXlrrlcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIOOCt+OCueODhuODoOmWi+eZuuOBruOCs+ODs+OCteODq+ODhuOCo+ODs+OCsOS6i+alrScpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIEFJ44Ki44K444Oj44Kk44Or6ZaL55m644Gu5bCO5YWl5pSv5o+05LqL5qWtJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIC0g6Ieq5bex5pS55aSJ5Z6LQUnjgqjjg7zjgrjjgqfjg7Pjg4go44Kq44O844OI44Od44Kk44Ko44O844K344K5KeOBrumWi+eZuuS6i+alrScpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KXjyDjg5Pjgrjjg6fjg7NcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDkurrjgahBSeOBjOWNlOWDjeOBmeOCi+acquadpeOCkuWJtemAoOOBl+OAgScpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDjgYLjgonjgobjgovjg5Pjgrjjg43jgrnjga7lj6/og73mgKfjgpLmi6HjgZLjgb7jgZnjgIInKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuXG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4pePIFR5cGUgXFx4MWJbMTszNm1sb2dpblxceDFiWzE7MzNtIHRvIHNpZ24gaW4gd2l0aCBHb29nbGVcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfil48gVHlwZSBcXHgxYlsxOzM2bWhlbHBcXHgxYlsxOzMzbSBmb3IgbW9yZSBjb21tYW5kc1xceDFiWzBtJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICBcbiAgICAvLyDjg5fjg63jg7Pjg5fjg4jooajnpLpcbiAgICB0aGlzLnNob3dQcm9tcHQoKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBzaG93UHJvbXB0KCkge1xuICAgIC8vIOODl+ODreODs+ODl+ODiOOBr0hUTUzlgbTjga7lhaXlipvjg5XjgqPjg7zjg6vjg4njgafooajnpLrjgZnjgovjgZ/jgoHkuI3opoFcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0NvbW1hbmQoY29tbWFuZDogc3RyaW5nKSB7XG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xuICAgIHRoaXMuc3RhdHVzVGV4dCA9ICdQcm9jZXNzaW5nLi4uJztcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIC8vIOODreOCsOOCpOODs+OCs+ODnuODs+ODiVxuICAgIGlmIChjb21tYW5kID09PSAnbG9naW4nKSB7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEluaXRpYXRpbmcgR29vZ2xlIGF1dGhlbnRpY2F0aW9uLi4uXFx4MWJbMG0nKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IEFjdGlvbklkLlNJR05fSU5fV0lUSF9HT09HTEUgfSk7XG4gICAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgICB9LCAzMDApO1xuICAgIH1cbiAgICBlbHNlIGlmIChjb21tYW5kLnN0YXJ0c1dpdGgoJ2F1dGgnKSkge1xuICAgICAgaWYgKGNvbW1hbmQuaW5jbHVkZXMoJ2dvb2dsZScpKSB7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gSW5pdGlhdGluZyBHb29nbGUgYXV0aGVudGljYXRpb24uLi5cXHgxYlswbScpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IEFjdGlvbklkLlNJR05fSU5fV0lUSF9HT09HTEUgfSk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH0gZWxzZSBpZiAoY29tbWFuZC5pbmNsdWRlcygndHdpdHRlcicpKSB7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gSW5pdGlhdGluZyBUd2l0dGVyIGF1dGhlbnRpY2F0aW9uLi4uXFx4MWJbMG0nKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBBY3Rpb25JZC5TSUdOX0lOX1dJVEhfVFdJVFRFUiB9KTtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgfSBlbHNlIGlmIChjb21tYW5kLmluY2x1ZGVzKCdsb2NhbCcpKSB7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gSW5pdGlhdGluZyBsb2NhbCBhdXRoZW50aWNhdGlvbi4uLlxceDFiWzBtJyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2goeyBpZDogQWN0aW9uSWQuU0lHTl9JTiB9KTtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMybeKXjyBBdmFpbGFibGUgYXV0aGVudGljYXRpb24gbWV0aG9kczpcXHgxYlswbScpO1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSBhdXRoIC0tcHJvdmlkZXI9Z29vZ2xlJyk7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIGF1dGggLS1wcm92aWRlcj10d2l0dGVyJyk7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIGF1dGggLS1wcm92aWRlcj1sb2NhbCcpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyDjg63jgrDjgqLjgqbjg4jjgrPjg57jg7Pjg4lcbiAgICBlbHNlIGlmIChjb21tYW5kID09PSAnbG9nb3V0JyB8fCBjb21tYW5kID09PSAnc2lnbm91dCcpIHtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gU2lnbmluZyBvdXQuLi5cXHgxYlswbScpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2goeyBpZDogQWN0aW9uSWQuU0lHTl9PVVQgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gWW91IGhhdmUgYmVlbiBzaWduZWQgb3V0LlxceDFiWzBtJyk7XG4gICAgICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMzbeKXjyBUeXBlIFwibG9naW5cIiB0byBzaWduIGluIGFnYWluLlxceDFiWzBtJyk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICAgICAgfSwgNTAwKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICAgIC8vIOODmOODq+ODl+OCs+ODnuODs+ODiVxuICAgIGVsc2UgaWYgKGNvbW1hbmQgPT09ICdoZWxwJyB8fCBjb21tYW5kID09PSAnPycpIHtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gQXZhaWxhYmxlIGNvbW1hbmRzOlxceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtbG9naW5cXHgxYlswbSAgICAgICAgICAgIC0gU2lnbiBpbiB3aXRoIEdvb2dsZSAoZGVmYXVsdCknKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm1hdXRoXFx4MWJbMG0gLS1wcm92aWRlcj1cXHgxYlszM21nb29nbGVcXHgxYlswbSAgIC0gU2lnbiBpbiB3aXRoIEdvb2dsZScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2bWF1dGhcXHgxYlswbSAtLXByb3ZpZGVyPVxceDFiWzMzbXR3aXR0ZXJcXHgxYlswbSAgLSBTaWduIGluIHdpdGggVHdpdHRlcicpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2bWF1dGhcXHgxYlswbSAtLXByb3ZpZGVyPVxceDFiWzMzbWxvY2FsXFx4MWJbMG0gICAgLSBTaWduIGluIHdpdGggZW1haWwvcGFzc3dvcmQnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm1sb2dvdXRcXHgxYlswbSAvIFxceDFiWzM2bXNpZ25vdXRcXHgxYlswbSAtIFNpZ24gb3V0IGZyb20gdGhlIGFwcGxpY2F0aW9uJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtYWJvdXRcXHgxYlswbSAgICAgICAgICAgIC0gU2hvdyBjb21wYW55IGluZm9ybWF0aW9uJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtY2xlYXJcXHgxYlswbSAgICAgICAgICAgIC0gQ2xlYXIgdGVybWluYWwnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm1oZWxwXFx4MWJbMG0gLyBcXHgxYlszNm0/XFx4MWJbMG0gICAgICAgIC0gU2hvdyB0aGlzIGhlbHAnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzNt4pePIEtleWJvYXJkIHNob3J0Y3V0czpcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2beKMmEtcXHgxYlswbSAvIFxceDFiWzM2bUN0cmwrS1xceDFiWzBtICAgIC0gR2VuZXJhdGUgY29tbWFuZCBzdWdnZXN0aW9ucycpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2beKGkVxceDFiWzBtIC8gXFx4MWJbMzZt4oaTXFx4MWJbMG0gICAgICAgICAgIC0gTmF2aWdhdGUgY29tbWFuZCBoaXN0b3J5Jyk7XG4gICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgIH1cbiAgICAvLyDkvJrnpL7mg4XloLHjgrPjg57jg7Pjg4lcbiAgICBlbHNlIGlmIChjb21tYW5kID09PSAnYWJvdXQnKSB7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzZt4pePIOWQiOWQjOS8muekvuODnuOCreODiuOCqOODvOOCuOOCp+ODs+ODiFxceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMybeKXjyDkvJrnpL7mpoLopoFcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIOWQiOWQjOS8muekvuODnuOCreODiuOCqOODvOOCuOOCp+ODs+ODiOOBr+OAgUFJ5oqA6KGT44KS5rS755So44GX44GfJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAg6Z2p5paw55qE44Gq44K944Oq44Ol44O844K344On44Oz44KS5o+Q5L6b44GZ44KL5LyB5qWt44Gn44GZ44CCJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMybeKXjyDkuovmpa3lhoXlrrlcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIC0g44K344K544OG44Og6ZaL55m644Gu44Kz44Oz44K144Or44OG44Kj44Oz44Kw5LqL5qWtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSBBSeOCouOCuOODo+OCpOODq+mWi+eZuuOBruWwjuWFpeaUr+aPtOS6i+alrScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIC0g6Ieq5bex5pS55aSJ5Z6LQUnjgqjjg7zjgrjjgqfjg7Pjg4go44Kq44O844OI44Od44Kk44Ko44O844K344K5KeOBrumWi+eZuuS6i+alrScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48g44OT44K444On44OzXFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDkurrjgahBSeOBjOWNlOWDjeOBmeOCi+acquadpeOCkuWJtemAoOOBl+OAgScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIOOBguOCieOChuOCi+ODk+OCuOODjeOCueOBruWPr+iDveaAp+OCkuaLoeOBkuOBvuOBmeOAgicpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48g44GK5ZWP44GE5ZCI44KP44GbXFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDoqbPntLDjgavjgaTjgYTjgabjga/jgIHjg63jgrDjgqTjg7PlvozjgavjgYrllY/jgYTlkIjjgo/jgZvjgY/jgaDjgZXjgYTjgIInKTtcbiAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgfVxuICAgIC8vIOOCr+ODquOCouOCs+ODnuODs+ODiVxuICAgIGVsc2UgaWYgKGNvbW1hbmQgPT09ICdjbGVhcicgfHwgY29tbWFuZCA9PT0gJ2NscycpIHtcbiAgICAgIHRoaXMudGVybWluYWwuY2xlYXIoKTtcbiAgICAgIHRoaXMudGVybWluYWwuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgfVxuICAgIC8vIOS4jeaYjuOBquOCs+ODnuODs+ODiVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGBcXHgxYlsxOzMxbeKXjyBDb21tYW5kIG5vdCBmb3VuZDogJHtjb21tYW5kfVxceDFiWzBtYCk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgVHlwZSBcImhlbHBcIiBmb3IgYXZhaWxhYmxlIGNvbW1hbmRzLicpO1xuICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXBsZXRlUHJvY2Vzc2luZygpIHtcbiAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgIHRoaXMuc3RhdHVzVGV4dCA9ICdSZWFkeSc7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICBcbiAgICAvLyDmnIDmlrDjga7lh7rlipvjgYzopovjgYjjgovjgojjgYbjgavjgrnjgq/jg63jg7zjg6tcbiAgICB0aGlzLnRlcm1pbmFsLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgXG4gICAgLy8g5YWl5Yqb44OV44Kj44O844Or44OJ44Gr44OV44Kp44O844Kr44K544KS5oi744GZXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgaGFuZGxlRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvLyBTaGlmdCtFbnRlcuOBvuOBn+OBr0N0cmwrRW50ZXLjga7loLTlkIjjga/mlLnooYzjgpLoqLHlj69cbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQuY3RybEtleSkge1xuICAgICAgcmV0dXJuOyAvLyDjg4fjg5Xjgqnjg6vjg4jli5XkvZzvvIjmlLnooYzvvInjgpLoqLHlj69cbiAgICB9XG4gICAgXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBwcmVmaXggPSAneF94ICc7XG4gICAgY29uc3QgYWN0dWFsQ29tbWFuZCA9IHRoaXMuY3VycmVudElucHV0LnN0YXJ0c1dpdGgocHJlZml4KSBcbiAgICAgID8gdGhpcy5jdXJyZW50SW5wdXQuc2xpY2UocHJlZml4Lmxlbmd0aCkudHJpbSgpXG4gICAgICA6IHRoaXMuY3VycmVudElucHV0LnRyaW0oKTtcbiAgICBcbiAgICBpZiAoYWN0dWFsQ29tbWFuZCkge1xuICAgICAgLy8g44Kz44Oe44Oz44OJ44KS44K/44O844Of44OK44Or44Gr6KGo56S677yI5pS56KGM44KS5ZCr44KA5aC05ZCI44Gv6YGp5YiH44Gr5Yem55CG77yJXG4gICAgICBjb25zdCBkaXNwbGF5Q29tbWFuZCA9IGFjdHVhbENvbW1hbmQuc3BsaXQoJ1xcbicpLm1hcChsaW5lID0+ICdcXHgxYlszMm0+IHhfeCBcXHgxYlswbScgKyBsaW5lKS5qb2luKCdcXHJcXG4nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGUoZGlzcGxheUNvbW1hbmQgKyAnXFxyXFxuJyk7XG4gICAgICBcbiAgICAgIC8vIOWxpeattOOBq+i/veWKoFxuICAgICAgdGhpcy5jb21tYW5kSGlzdG9yeS5wdXNoKGFjdHVhbENvbW1hbmQpO1xuICAgICAgdGhpcy5oaXN0b3J5SW5kZXggPSB0aGlzLmNvbW1hbmRIaXN0b3J5Lmxlbmd0aDtcbiAgICAgIFxuICAgICAgLy8g44Kz44Oe44Oz44OJ44KS5Yem55CGXG4gICAgICB0aGlzLnByb2Nlc3NDb21tYW5kKGFjdHVhbENvbW1hbmQpO1xuICAgICAgXG4gICAgICAvLyDlhaXlipvjgpLliJ3mnJ/nirbmhYvjgavjg6rjgrvjg4Pjg4hcbiAgICAgIHRoaXMuY3VycmVudElucHV0ID0gcHJlZml4O1xuICAgICAgXG4gICAgICAvLyB0ZXh0YXJlYeOBrumrmOOBleOCkuODquOCu+ODg+ODiFxuICAgICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmICh0ZXh0YXJlYSkge1xuICAgICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBuYXZpZ2F0ZUhpc3RvcnkoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRpcmVjdGlvbjogbnVtYmVyKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBwcmVmaXggPSAneF94ICc7XG4gICAgXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gLTEgJiYgdGhpcy5oaXN0b3J5SW5kZXggPiAwKSB7XG4gICAgICAvLyDkuIrnn6LljbBcbiAgICAgIHRoaXMuaGlzdG9yeUluZGV4LS07XG4gICAgICB0aGlzLmN1cnJlbnRJbnB1dCA9IHByZWZpeCArIHRoaXMuY29tbWFuZEhpc3RvcnlbdGhpcy5oaXN0b3J5SW5kZXhdO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAxKSB7XG4gICAgICAvLyDkuIvnn6LljbBcbiAgICAgIGlmICh0aGlzLmhpc3RvcnlJbmRleCA8IHRoaXMuY29tbWFuZEhpc3RvcnkubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLmhpc3RvcnlJbmRleCsrO1xuICAgICAgICB0aGlzLmN1cnJlbnRJbnB1dCA9IHByZWZpeCArIHRoaXMuY29tbWFuZEhpc3RvcnlbdGhpcy5oaXN0b3J5SW5kZXhdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5SW5kZXggPSB0aGlzLmNvbW1hbmRIaXN0b3J5Lmxlbmd0aDtcbiAgICAgICAgdGhpcy5jdXJyZW50SW5wdXQgPSBwcmVmaXg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBnZW5lcmF0ZUNvbW1hbmQoZXZlbnQ/OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gR2VuZXJhdGluZyBjb21tYW5kIHN1Z2dlc3Rpb25zLi4uXFx4MWJbMG0nKTtcbiAgICBcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszM23il48gU3VnZ2VzdGVkIGNvbW1hbmRzOlxceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgMS4gXFx4MWJbMzZtYXV0aCAtLXByb3ZpZGVyPWdvb2dsZVxceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgMi4gXFx4MWJbMzZtbG9naW5cXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIDMuIFxceDFiWzM2bWhlbHBcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICAvLyBzaWRlQXBw44KS6ZaJ44GY44KLXG4gIGNsb3NlU2lkZUFwcChldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuYXBwLnNpZGVBcHAuY29sbGFwc2UoKTtcbiAgfVxuXG4gIC8vIOWFpeWKm+ODleOCo+ODvOODq+ODieOBq+ODleOCqeODvOOCq+OCueOCkuioreWumlxuICBmb2N1c0lucHV0KCkge1xuICAgIHRoaXMuaW5wdXRGaWVsZCgpPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICB9XG5cbiAgLy8gdGV4dGFyZWHjga7pq5jjgZXjgpLlhoXlrrnjgavlkIjjgo/jgZvjgaboqr/mlbRcbiAgYWRqdXN0VGV4dGFyZWFIZWlnaHQoKSB7XG4gICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGV4dGFyZWEpIHtcbiAgICAgIC8vIOS4gOaXpumrmOOBleOCkuODquOCu+ODg+ODiFxuICAgICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gJzIwcHgnO1xuICAgICAgLy8gc2Nyb2xsSGVpZ2h044KS56K66KqN44GX44CB5a6f6Zqb44Gr5b+F6KaB44Gq6auY44GV44KS6Kit5a6aXG4gICAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSB0ZXh0YXJlYS5zY3JvbGxIZWlnaHQ7XG4gICAgICAvLyDjg5Hjg4fjgqPjg7PjgrDjgpLogIPmha7jgZfjgZ/mnIDlsI/pq5jjgZVcbiAgICAgIGNvbnN0IG1pbkhlaWdodCA9IDQ0OyAvLyBwYWRkaW5nOiAxMnB4ICogMiArIGxpbmUtaGVpZ2h0OiAyMHB4XG4gICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSBNYXRoLm1heChtaW5IZWlnaHQsIHNjcm9sbEhlaWdodCkgKyAncHgnO1xuICAgIH1cbiAgfVxuXG4gIC8vIOODl+ODrOODleOCo+ODg+OCr+OCueOBruWJiumZpOOCkumYsuatolxuICBwcmV2ZW50UHJlZml4RGVsZXRpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCB0ZXh0YXJlYSA9IGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICAgIGNvbnN0IHByZWZpeCA9ICd4X3ggJztcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IHRleHRhcmVhLnNlbGVjdGlvblN0YXJ0O1xuICAgIFxuICAgIC8vIOODkOODg+OCr+OCueODmuODvOOCueOBvuOBn+OBr0RlbGV0ZeOCreODvOOBruWHpueQhlxuICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGV2ZW50LmtleSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA8PSBwcmVmaXgubGVuZ3RoKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIOW3puefouWNsOOCreODvOOBp+OCq+ODvOOCveODq+OBjOODl+ODrOODleOCo+ODg+OCr+OCueOCiOOCiuWJjeOBq+ihjOOBi+OBquOBhOOCiOOBhuOBq1xuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0xlZnQnICYmIHNlbGVjdGlvblN0YXJ0IDw9IHByZWZpeC5sZW5ndGgpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIFxuICAgIC8vIEhvbWUg44Kt44O844Gn44Kr44O844K944Or44KS44OX44Os44OV44Kj44OD44Kv44K544Gu55u05b6M44Gr56e75YuVXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0hvbWUnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UocHJlZml4Lmxlbmd0aCwgcHJlZml4Lmxlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgLy8g5YWl5Yqb5pmC44Gu5Yem55CGXG4gIGhhbmRsZUlucHV0KGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHRleHRhcmVhID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG4gICAgY29uc3QgcHJlZml4ID0gJ3hfeCAnO1xuICAgIFxuICAgIC8vIOODl+ODrOODleOCo+ODg+OCr+OCueOBjOWJiumZpOOBleOCjOOBpuOBhOOBn+OCieW+qeWFg1xuICAgIGlmICghdGhpcy5jdXJyZW50SW5wdXQuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbnB1dCA9IHByZWZpeCArIHRoaXMuY3VycmVudElucHV0LnJlcGxhY2UoL154X3hcXHMqLywgJycpO1xuICAgICAgXG4gICAgICAvLyDjgqvjg7zjgr3jg6vkvY3nva7jgpLoqr/mlbRcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdQb3NpdGlvbiA9IE1hdGgubWF4KHByZWZpeC5sZW5ndGgsIHRleHRhcmVhLnNlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgdGV4dGFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UobmV3UG9zaXRpb24sIG5ld1Bvc2l0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICAvLyDpq5jjgZXoqr/mlbTvvIjmlLnooYzjgYzlkKvjgb7jgozjgabjgYTjgovloLTlkIjjga7jgb/vvIlcbiAgICBpZiAodGhpcy5jdXJyZW50SW5wdXQuaW5jbHVkZXMoJ1xcbicpKSB7XG4gICAgICB0aGlzLmFkanVzdFRleHRhcmVhSGVpZ2h0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIDHooYzjga7loLTlkIjjga/lm7rlrprpq5jjgZVcbiAgICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9ICc0NHB4JztcbiAgICB9XG4gICAgXG4gICAgLy8g44Kr44O844K944Or5L2N572u44KS5pu05pawXG4gICAgdGhpcy51cGRhdGVDdXJzb3JQb3NpdGlvbigpO1xuICB9XG5cbiAgLy8g44OV44Kp44O844Kr44K55pmC44Gu5Yem55CGXG4gIGhhbmRsZUZvY3VzKCkge1xuICAgIHRoaXMuc2hvd0N1cnNvciA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVDdXJzb3JQb3NpdGlvbigpO1xuICB9XG5cbiAgLy8g44OW44Op44O85pmC44Gu5Yem55CGXG4gIGhhbmRsZUJsdXIoKSB7XG4gICAgdGhpcy5zaG93Q3Vyc29yID0gZmFsc2U7XG4gIH1cblxuICAvLyDjgqvjg7zjgr3jg6vkvY3nva7jga7mm7TmlrBcbiAgdXBkYXRlQ3Vyc29yUG9zaXRpb24oKSB7XG4gICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIXRleHRhcmVhKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgY3Vyc29yUG9zID0gdGV4dGFyZWEuc2VsZWN0aW9uU3RhcnQ7XG4gICAgY29uc3QgdGV4dEJlZm9yZUN1cnNvciA9IHRoaXMuY3VycmVudElucHV0LnN1YnN0cmluZygwLCBjdXJzb3JQb3MpO1xuICAgIFxuICAgIC8vIOaUueihjOOBp+WIhuWJslxuICAgIGNvbnN0IGxpbmVzID0gdGV4dEJlZm9yZUN1cnNvci5zcGxpdCgnXFxuJyk7XG4gICAgY29uc3QgY3VycmVudExpbmVJbmRleCA9IGxpbmVzLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgY3VycmVudExpbmVUZXh0ID0gbGluZXNbY3VycmVudExpbmVJbmRleF07XG4gICAgXG4gICAgLy8g5Luu44GuY2FudmFz44KS5L2/44Gj44Gm54++5Zyo44Gu6KGM44Gu44OG44Kt44K544OI5bmF44KS6KiI566XXG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LmZvbnQgPSAnMTRweCBcIlNGIE1vbm9cIiwgTW9uYWNvLCBtb25vc3BhY2UnO1xuICAgICAgY29uc3QgdGV4dFdpZHRoID0gY29udGV4dC5tZWFzdXJlVGV4dChjdXJyZW50TGluZVRleHQpLndpZHRoO1xuICAgICAgXG4gICAgICAvLyDjgqvjg7zjgr3jg6vkvY3nva7jgpLoqK3lrprvvIjjg5Hjg4fjgqPjg7PjgrDliIbjgpLogIPmha7vvIlcbiAgICAgIHRoaXMuY3Vyc29yTGVmdCA9IDggKyB0ZXh0V2lkdGg7IC8vIDhweCDjga8gdGV4dGFyZWEg44Gu5bem44OR44OH44Kj44Oz44KwXG4gICAgICBcbiAgICAgIC8vIOWeguebtOS9jee9ruOCkuiqv+aVtO+8iOihjOaVsOOBq+WfuuOBpeOBhOOBpuOAgeOCueOCr+ODreODvOODq+S9jee9ruOCguiAg+aFru+8iVxuICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGV4dGFyZWEuc2Nyb2xsVG9wO1xuICAgICAgdGhpcy5jdXJzb3JUb3AgPSAxMiArIChjdXJyZW50TGluZUluZGV4ICogMjApIC0gc2Nyb2xsVG9wOyAvLyDjgrnjgq/jg63jg7zjg6vliIbjgpLlvJXjgY9cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBZ2VudFRlbXBsYXRlKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHByb3ZpZGVDb21wb25lbnQoRW50cmFuY2VUZW1wbGF0ZVN0b3JlLCAoKSA9PiBBZ2VudFRlbXBsYXRlKSxcbiAgXTtcbn0iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHhtYWNoaW5hLWNvbXBvbmVudHMtdGVtcGxhdGVzLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21wb25lbnRzL3NyYy9saWIvdGVtcGxhdGVzL2FnZW50L3h4bWFjaGluYS1jb21wb25lbnRzLXRlbXBsYXRlcy1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
@@ -225,7 +225,7 @@ class SessionNavigatorOrganism extends NgAtomicComponent {
|
|
|
225
225
|
}
|
|
226
226
|
</div>
|
|
227
227
|
</mat-toolbar>
|
|
228
|
-
`, isInline: true, styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-
|
|
228
|
+
`, isInline: true, styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-uD3z: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-uD3z: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-uD3z: var(--border);--primary-color: rgba(26, 26, 26, .6);--primary-color-SCOPED-IN-session-navigator-uD3z: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-uD3z: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-uD3z: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-uD3z: var(--on-secondary-color);--background-color: rgba(26, 26, 26, .6);--background-color-SCOPED-IN-session-navigator-uD3z: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-uD3z: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--background-color-SCOPED-IN-session-navigator-uD3z);color:var(--on-background-color-SCOPED-IN-session-navigator-uD3z);background:#1a1a1a99!important;border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-uD3z)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-uD3z)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-uD3z)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-uD3z)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-uD3z)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-uD3z)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-session-navigator-uD3z: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-uD3z: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-uD3z: var(--border)}}@media (max-width: 600px){:host mat-toolbar span{font-size:11px!important}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: MenuButtonAtomStore, selector: "atoms-menu-button, atoms-smart-menu-button", inputs: ["actions", "type", "action"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
229
229
|
}
|
|
230
230
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: SessionNavigatorOrganism, decorators: [{
|
|
231
231
|
type: Component,
|
|
@@ -259,7 +259,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImpor
|
|
|
259
259
|
directive: SessionNavigatorOrganismStore,
|
|
260
260
|
inputs: ['startActions', 'endActions', 'title'],
|
|
261
261
|
}
|
|
262
|
-
], styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-
|
|
262
|
+
], styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-uD3z: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-uD3z: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-uD3z: var(--border);--primary-color: rgba(26, 26, 26, .6);--primary-color-SCOPED-IN-session-navigator-uD3z: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-uD3z: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-uD3z: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-uD3z: var(--on-secondary-color);--background-color: rgba(26, 26, 26, .6);--background-color-SCOPED-IN-session-navigator-uD3z: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-uD3z: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--background-color-SCOPED-IN-session-navigator-uD3z);color:var(--on-background-color-SCOPED-IN-session-navigator-uD3z);background:#1a1a1a99!important;border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-uD3z)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-uD3z)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-uD3z)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-uD3z)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-uD3z)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-uD3z)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-session-navigator-uD3z: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-uD3z: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-uD3z: var(--border)}}@media (max-width: 600px){:host mat-toolbar span{font-size:11px!important}}\n"] }]
|
|
263
263
|
}] });
|
|
264
264
|
|
|
265
265
|
var InvoiceAppActionId;
|