diff --git a/pages/index/chat/index.vue b/pages/index/chat/index.vue index 465ab69..4671f90 100644 --- a/pages/index/chat/index.vue +++ b/pages/index/chat/index.vue @@ -9,7 +9,7 @@ - + @@ -336,7 +336,7 @@ } .ai-bubble { - background: #fff; + background: #F3F7F9; color: #333; border-bottom-left-radius: 4px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); diff --git a/pages/index/front/index.vue b/pages/index/front/index.vue index eed11f7..cc17679 100644 --- a/pages/index/front/index.vue +++ b/pages/index/front/index.vue @@ -2,7 +2,7 @@ - + HI,{{ timeOfDayText }} 我是萃星科技智能体 @@ -43,7 +43,8 @@ id: 3, label: "今日生产数据", }, - ] + ], + aiLogoMsg : null } }, computed: { @@ -55,10 +56,20 @@ return "晚上好"; }, }, + mounted(){ + let self = this; + uni.createSelectorQuery().select(".ai-image").boundingClientRect((rect) => { + self.aiLogoMsg = rect + }).exec(); + }, methods: { onSuggestionTap(text) { this.$emit('onSuggestionTap', text) + }, + getAiLogoMsg() { + return this.aiLogoMsg; } + } } @@ -67,7 +78,7 @@ .greet-card { display: flex; align-items: center; - background: #fff; + background-image: linear-gradient(to right, #EFF6FF, #EEF2FF); border-radius: 14px; padding: 12px; margin-bottom: 10px; @@ -88,14 +99,15 @@ .welcome { font-size: 13px; color: #333; - background: #fff; + background: #F3F7F9; border-radius: 12px; padding: 10px 12px; margin: 12px 0; + max-width: 80%; } .guess-panel { - background: #fff; + background-image: linear-gradient(to right, #EFF6FF, #EEF2FF); border-radius: 14px; padding: 10px; margin-bottom: 16px; @@ -113,7 +125,7 @@ } .guess-item { - background: #f7f8fc; + background: #FFFFFF ; border-radius: 10px; padding: 12px; display: flex; diff --git a/pages/index/index.vue b/pages/index/index.vue index cb52504..fd24157 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -2,8 +2,8 @@ - - + + @@ -15,8 +15,11 @@ + @changeShow="changeShow" @startRecord="startRecord" /> + @@ -61,9 +64,24 @@ playSrc: '', breakRequestList: [], speechIdList: [], - textToVoiceLoading: false + textToVoiceLoading: false, + isGetAiLogoMsg: false, + aiLogoRect: null, + isShowRightLogo: false }; }, + // onPageScroll(e) { + // if (!this.getAiLogoMsg) { + // this.aiLogoRect = this.$refs.front.getAiLogoMsg(); + // this.getAiLogoMsg = true + // } + // if (!this.aiLogoRect) return; + // if (e.scrollTop > (this.aiLogoRect.top + 12)) { + // this.isShowRightLogo = true; + // } else { + // this.isShowRightLogo = false; + // } + // }, async mounted() { this.loadChatHistory(); uni.onKeyboardHeightChange((res) => { @@ -75,10 +93,10 @@ }); // #ifdef APP-PLUS this.$nextTick(() => { - this.marginBottom = this.$refs.searchRef.getHeight() || 103; + this.marginBottom = this.$refs.searchRef.getHeight() || 112; }); // #endif - this.marginBottom = 103; + this.marginBottom = 112; this.initAudio(); }, @@ -87,14 +105,15 @@ }, methods: { // 开始录音后暂停播放语音 - startRecord(){ - if(this.isPlayingVoice && this.audioContext.src){ + startRecord() { + if (this.isPlayingVoice && this.audioContext.src) { this.audioContext.stop(); this.isPlayingVoice = false; } }, // 点击语音播放暂停 handleVoice(src) { + if (!src) return; if (this.audioContext.src === src && this.isPlayingVoice) { this.isPlayingVoice = false; this.audioContext.stop(); @@ -125,9 +144,9 @@ }); this.audioContext.onEnded(res => { this.isPlayingVoice = false - // const platform = uni.getSystemInfoSync().uniPlatform; - // if(platform === 'web') return; - // removeFile(this.audioContext.src) + const platform = uni.getSystemInfoSync().uniPlatform; + if(platform === 'web') return; + removeFile(this.audioContext.src) }) }, // 处理百度返回arraybuff格式的语音 @@ -157,7 +176,7 @@ const base64WithPrefix = `data:audio/mp3;base64,${base64Audio}`; const fileName = `_doc/${Date.now()}_numberPerson.mp3`; base64ToFile(base64WithPrefix, fileName, (path) => { - this.playSrc = path; + self.playSrc = path; self.textToVoiceLoading = false; self.audioContext.src = path; let endTime2 = Date.now(); @@ -196,6 +215,7 @@ }, // 中断回复 handleBreak() { + console.log('handleBreak'); if (this.isLoading) { const loadingIdx = this.messages.findIndex((m) => m.id === this.loadingId); if (loadingIdx > -1) this.messages.splice(loadingIdx, 1); @@ -398,11 +418,22 @@ } this.replyAction(reply) }, - async replyAction(reply, isCreate) { - if (!this.messages[this.messages.length - 1].src) { + async replyAction(reply, isContinue) { + let content = '' + // 判断请求是否出错 + if (reply.errMsg) { + content = `请求出错: ${reply.errMsg}` + } else { + content = reply; + }; + let result + if (this.$store.state.set.replyPattern === '1' && !this.messages[this.messages.length - 1].src && ! + reply.errMsg) { let speechId = Date.now(); this.speechId = speechId; - const result = await this.getSpeech(reply); + result = await this.getSpeech(reply); + }; + if (result) { let speechIndex = this.speechIdList.findIndex(item => item.speechId === speechId) if (speechIndex > -1) { this.speechIdList = this.speechIdList.splice(speechIndex, -1) @@ -412,28 +443,26 @@ this.isPlayingVoice = true; this.audioContext.play(); }; - }; - let content = '' - if (reply.errMsg) { - content = `请求出错: ${reply.errMsg}` - } else { - content = reply - }; + } // 4. 移除 loading const loadingIdx = this.messages.findIndex((m) => m.id === this.loadingId); if (loadingIdx > -1) this.messages.splice(loadingIdx, 1); // 5. 添加回复 + 打字机 const replyId = this.baseId + 1; - if (!isCreate) { + if (!isContinue) { this.messages.push({ id: replyId, role: "assistant", type: "text", content, displayText: "", - src: JSON.parse(JSON.stringify(this.audioContext.src)), + src: (this.audioContext.src && this.$store.state.set.replyPattern === '1') ? JSON + .parse(JSON.stringify(this.audioContext.src)) : null, duration: null }); + } else { + this.audioContext.play(); + this.isPlayingVoice = true; } this.$nextTick(() => this.scrollToBottom()); this.typewriter(replyId, content); @@ -517,14 +546,22 @@ .ai-page { display: flex; flex-direction: column; - background: #f7f8fc; + background: #fff; } .content { flex: 1; padding: 16px 12px 0px 12px; - background-color: #f7f8fc; + background-color: #fff; width: 100%; box-sizing: border-box; } + + .ai-logo { + width: 60px; + position: fixed; + top: 50%; + right: 10px; + z-index: 999999999; + } \ No newline at end of file diff --git a/pages/index/search/index.vue b/pages/index/search/index.vue index 8a9232d..262eae3 100644 --- a/pages/index/search/index.vue +++ b/pages/index/search/index.vue @@ -89,9 +89,6 @@ uni.createSelectorQuery().select(".dock").boundingClientRect((rect) => { self.searchHeight = Math.ceil(rect.height) }).exec(); - uni.createSelectorQuery().select(".record-box").boundingClientRect((rect) => { - console.log('rect',rect); - }).exec(); }, beforeDestroy() { if (this.recordSimTimer) { @@ -227,8 +224,7 @@ title: "AI正在回复中", icon: "none", }); - const appAuthorizeSetting = uni.getAppAuthorizeSetting(); - if (appAuthorizeSetting.microphoneAuthorized !== 'authorized') { + if (uni.getAppAuthorizeSetting().microphoneAuthorized !== 'authorized') { uni.showModal({ title: '权限设置', content: '应用缺乏必要的权限,是否前往手动授予该权限?', @@ -306,6 +302,7 @@ .quick-actions { padding: 6px 10px 4px; + padding-top: 15px; } .quick-actions.horizontal { diff --git a/unpackage/dist/dev/app-plus/app-service.js b/unpackage/dist/dev/app-plus/app-service.js index 522924a..34fd322 100644 --- a/unpackage/dist/dev/app-plus/app-service.js +++ b/unpackage/dist/dev/app-plus/app-service.js @@ -242,13 +242,10 @@ var render = function () { }), _c( "scroll-view", - { - ref: "scrollView", - staticClass: _vm._$s(4, "sc", "content"), - attrs: { _i: 4 }, - }, + { staticClass: _vm._$s(4, "sc", "content"), attrs: { _i: 4 } }, [ _c("front", { + ref: "front", attrs: { _i: 5 }, on: { onSuggestionTap: _vm.onQuickAsk }, }), @@ -751,7 +748,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBu /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 19));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 21));\nvar _index = __webpack_require__(/*! @/api/index.js */ 22);\nvar _utils = __webpack_require__(/*! @/utils/utils.js */ 26);\nvar _index2 = _interopRequireDefault(__webpack_require__(/*! ./top/index.vue */ 27));\nvar _index3 = _interopRequireDefault(__webpack_require__(/*! ./front/index.vue */ 48));\nvar _index4 = _interopRequireDefault(__webpack_require__(/*! ./chat/index.vue */ 53));\nvar _index5 = _interopRequireDefault(__webpack_require__(/*! ./leftDrawer/index.vue */ 84));\nvar _index6 = _interopRequireDefault(__webpack_require__(/*! ./search/index.vue */ 89));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar HISTORY_KEY = \"chat_history_groups\";\nvar _default = {\n components: {\n top: _index2.default,\n front: _index3.default,\n chat: _index4.default,\n leftDrawer: _index5.default,\n search: _index6.default\n },\n data: function data() {\n return {\n inputText: \"\",\n messages: [],\n historyGroups: [],\n isLoading: false,\n typewriterTimers: {},\n show: false,\n marginBottom: 0,\n isReplying: false,\n // 是否正在回复\n breakReplying: false,\n // 是否打断回复\n replyData: {},\n // 回复数据\n isRefresh: false,\n // 是否重新回复\n audioContext: null,\n isPlayingVoice: false,\n // 是否正在播放语音\n playSrc: '',\n breakRequestList: [],\n speechIdList: [],\n textToVoiceLoading: false\n };\n },\n mounted: function mounted() {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this.loadChatHistory();\n uni.onKeyboardHeightChange(function (res) {\n uni.pageScrollTo({\n scrollTop: _this.height + res.height,\n duration: 300,\n class: \".content\"\n });\n });\n _this.$nextTick(function () {\n _this.marginBottom = _this.$refs.searchRef.getHeight() || 103;\n });\n _this.marginBottom = 103;\n _this.initAudio();\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n beforeDestroy: function beforeDestroy() {\n this.clearTypewriterTimers();\n },\n methods: {\n // 开始录音后暂停播放语音\n startRecord: function startRecord() {\n if (this.isPlayingVoice && this.audioContext.src) {\n this.audioContext.stop();\n this.isPlayingVoice = false;\n }\n },\n // 点击语音播放暂停\n handleVoice: function handleVoice(src) {\n if (this.audioContext.src === src && this.isPlayingVoice) {\n this.isPlayingVoice = false;\n this.audioContext.stop();\n return;\n }\n ;\n if (this.audioContext.src === src && !this.isPlayingVoice) {\n this.isPlayingVoice = true;\n this.audioContext.play();\n return;\n }\n ;\n if (this.isPlayingVoice) {\n this.audioContext.stop();\n }\n ;\n this.isPlayingVoice = true;\n this.audioContext.src = src;\n this.playSrc = src;\n this.audioContext.play();\n },\n // 初始化语音功能, 已经语音部分监听\n initAudio: function initAudio() {\n var _this2 = this;\n this.audioContext = uni.createInnerAudioContext();\n this.audioContext.onCanplay(function (e) {\n var items = _this2.messages.find(function (item) {\n return item.src && item.src === _this2.audioContext.src;\n });\n if (!items) return;\n items.duration = _this2.audioContext.duration;\n // this.isPlayingVoice = true;\n // this.audioContext.play()\n });\n\n this.audioContext.onEnded(function (res) {\n _this2.isPlayingVoice = false;\n // const platform = uni.getSystemInfoSync().uniPlatform;\n // if(platform === 'web') return;\n // removeFile(this.audioContext.src)\n });\n },\n // 处理百度返回arraybuff格式的语音\n getSpeech: function getSpeech(speechStr) {\n var _this3 = this;\n var self = this;\n this.textToVoiceLoading = true;\n var startTime = Date.now();\n return new Promise(function (resolve) {\n (0, _utils.textToSpeech)(speechStr).then(function (audioData) {\n var endTime = Date.now();\n __f__(\"log\", '语音合成耗时:', endTime - startTime, 'ms', \" at pages/index/index.vue:141\");\n var platform = uni.getSystemInfoSync().uniPlatform;\n // H5端处理\n if (platform === 'web') {\n var blob = new Blob([audioData], {\n type: 'audio/mp3'\n });\n var url = URL.createObjectURL(blob);\n _this3.playSrc = url;\n _this3.audioContext.src = url;\n _this3.textToVoiceLoading = false;\n resolve(true);\n }\n // App端和小程序端处理\n else {\n var base64Audio = uni.arrayBufferToBase64(audioData);\n var base64WithPrefix = \"data:audio/mp3;base64,\".concat(base64Audio);\n var fileName = \"_doc/\".concat(Date.now(), \"_numberPerson.mp3\");\n (0, _utils.base64ToFile)(base64WithPrefix, fileName, function (path) {\n _this3.playSrc = path;\n self.textToVoiceLoading = false;\n self.audioContext.src = path;\n var endTime2 = Date.now();\n __f__(\"log\", '语音下载到手机耗时:', endTime2 - startTime, 'ms', \" at pages/index/index.vue:164\");\n resolve(true);\n });\n }\n }).catch(function (err) {\n resolve(true);\n });\n });\n },\n // 重新回复\n refresh: function refresh() {\n this.messages.splice(this.messages.length - 1, 1);\n this.inputText = this.messages[this.messages.length - 1].content;\n this.isRefresh = true;\n this.onSend();\n },\n // 继续生成\n continueCreate: function continueCreate() {\n this.breakReplying = false;\n this.isReplying = true;\n if (!this.isLoading) {\n this.messages[this.messages.length - 1].isBreak = false;\n this.replyAction(this.replyData, true);\n } else {\n this.messages.splice(this.messages.length - 1, 1);\n this.messages.push({\n id: this.loadingId,\n role: \"assistant\",\n loading: true\n });\n }\n },\n // 中断回复\n handleBreak: function handleBreak() {\n var _this4 = this;\n if (this.isLoading) {\n var loadingIdx = this.messages.findIndex(function (m) {\n return m.id === _this4.loadingId;\n });\n if (loadingIdx > -1) this.messages.splice(loadingIdx, 1);\n // 5. 添加回复 + 打字机\n var replyId = this.baseId + 1;\n this.messages.push({\n id: replyId,\n role: \"assistant\",\n type: \"text\",\n content: '',\n displayText: \"已停止\",\n isBreak: true\n });\n this.isReplying = false;\n this.scrollToBottom();\n }\n this.breakReplying = true;\n },\n // 新建对话\n resetMessage: function resetMessage() {\n if (this.messages.length === 0) return;\n if (this.isLoading) {\n this.breakRequestList.push({\n requestId: this.requestId\n });\n }\n ;\n if (this.textToVoiceLoading) {\n this.speechIdList.push({\n speedId: this.speedId\n });\n }\n ;\n if (this.isPlayingVoice) {\n this.isPlayingVoice = false;\n this.audioContext.stop();\n }\n this.clearTypewriterTimers();\n this.isReplying = false;\n this.messages = [];\n },\n // 清理所有打字机定时器\n clearTypewriterTimers: function clearTypewriterTimers() {\n Object.values(this.typewriterTimers).forEach(function (timer) {\n if (timer) clearInterval(timer);\n });\n this.typewriterTimers = {};\n },\n // 修改输入框文本\n changeInputText: function changeInputText(text) {\n this.inputText = text;\n },\n //打开历史记录\n openDrawer: function openDrawer() {\n this.$refs.popup.open();\n },\n // 点击历史记录搜索\n onHistoryItemTap: function onHistoryItemTap(text) {\n this.inputText = text;\n this.onSend();\n this.$refs.popup.close();\n },\n // 聊天页面禁止滚动\n changeShow: function changeShow(e) {\n this.show = e;\n },\n // 删除历史记录\n removeFromHistory: function removeFromHistory(text) {\n var _uni$getStorageSync;\n var groups = ((_uni$getStorageSync = uni.getStorageSync(HISTORY_KEY)) === null || _uni$getStorageSync === void 0 ? void 0 : _uni$getStorageSync.groups) || [];\n groups.forEach(function (group) {\n group.items = group.items.filter(function (item) {\n return item !== text;\n });\n });\n groups = groups.filter(function (g) {\n return g.items.length > 0;\n });\n this.historyGroups = groups;\n uni.setStorageSync(HISTORY_KEY, {\n groups: groups,\n updatedAt: Date.now()\n });\n },\n // 清除全部历史记录\n clearAllHistory: function clearAllHistory() {\n var _this5 = this;\n uni.showModal({\n title: \"清除全部\",\n content: \"将删除所有对话记录,此操作不可恢复\",\n success: function success(res) {\n if (res.confirm) {\n uni.removeStorageSync(HISTORY_KEY);\n _this5.historyGroups = [];\n uni.showToast({\n title: \"已清除\",\n icon: \"success\"\n });\n }\n }\n });\n },\n formatDate: function formatDate(date) {\n var y = date.getFullYear();\n var m = String(date.getMonth() + 1).padStart(2, \"0\");\n var d = String(date.getDate()).padStart(2, \"0\");\n return \"\".concat(y, \"\\u5E74\").concat(m, \"\\u6708\").concat(d, \"\\u65E5\");\n },\n // 加载历史记录\n loadChatHistory: function loadChatHistory() {\n try {\n var data = uni.getStorageSync(HISTORY_KEY);\n if (data && Array.isArray(data.groups)) {\n this.historyGroups = data.groups;\n } else {\n this.historyGroups = [];\n }\n } catch (e) {\n this.historyGroups = [];\n }\n },\n // 添加历史记录\n addToHistory: function addToHistory(text) {\n var _uni$getStorageSync2;\n var groups = ((_uni$getStorageSync2 = uni.getStorageSync(HISTORY_KEY)) === null || _uni$getStorageSync2 === void 0 ? void 0 : _uni$getStorageSync2.groups) || [];\n var today = this.formatDate(new Date());\n var todayGroup = groups.find(function (g) {\n return g.date === today;\n });\n if (!todayGroup) {\n todayGroup = {\n date: today,\n items: []\n };\n groups.unshift(todayGroup);\n }\n if (!todayGroup.items.includes(text)) {\n todayGroup.items.unshift(text);\n }\n\n // 限制大小\n if (todayGroup.items.length > 50) todayGroup.items = todayGroup.items.slice(0, 50);\n if (groups.length > 30) groups = groups.slice(0, 30);\n this.historyGroups = groups;\n uni.setStorageSync(HISTORY_KEY, {\n groups: groups,\n updatedAt: Date.now()\n });\n },\n // 快速提问\n onQuickAsk: function onQuickAsk(text) {\n this.inputText = text;\n this.onSend();\n },\n // 发送消息\n onSend: function onSend() {\n var _arguments = arguments,\n _this6 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var inputType, inputContent, duration, text, requestId, reply, requestIndex;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n inputType = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : \"text\";\n inputContent = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : \"\";\n duration = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : undefined;\n if (!_this6.isReplying) {\n _context2.next = 5;\n break;\n }\n return _context2.abrupt(\"return\");\n case 5:\n text = (_this6.inputText || \"\").trim();\n if (!(!text || _this6.isLoading)) {\n _context2.next = 8;\n break;\n }\n return _context2.abrupt(\"return\");\n case 8:\n _this6.baseId = Date.now();\n if (!_this6.isRefresh) {\n // 1. 用户消息\n _this6.messages.push({\n id: _this6.baseId,\n role: \"user\",\n type: \"text\",\n content: text,\n inputType: typeof inputType === \"string\" ? inputType : \"text\",\n inputContent: inputContent,\n duration: duration\n });\n }\n // 2. loading 消息\n _this6.loadingId = _this6.baseId + 0.5;\n _this6.messages.push({\n id: _this6.loadingId,\n role: \"assistant\",\n loading: true\n });\n _this6.inputText = \"\";\n _this6.isReplying = true;\n _this6.isLoading = true;\n _this6.isRefresh = false;\n _this6.scrollToBottom();\n _this6.addToHistory(text);\n if (_this6.isPlayingVoice) {\n _this6.audioContext.stop();\n _this6.isPlayingVoice = false;\n }\n ;\n requestId = Date.now();\n _this6.requestId = requestId;\n // 3. 真正等待 AI 回复\n _context2.next = 24;\n return (0, _index.getAIResponse)({\n message: text\n });\n case 24:\n reply = _context2.sent;\n _this6.isLoading = false;\n requestIndex = _this6.breakRequestList.findIndex(function (item) {\n return item.requestId === requestId;\n });\n if (!(requestIndex > -1)) {\n _context2.next = 30;\n break;\n }\n _this6.breakRequestList = _this6.breakRequestList.splice(requestIndex, -1);\n return _context2.abrupt(\"return\");\n case 30:\n _this6.replyData = reply;\n if (!_this6.breakReplying) {\n _context2.next = 34;\n break;\n }\n _this6.breakReplying = false;\n return _context2.abrupt(\"return\");\n case 34:\n _this6.replyAction(reply);\n case 35:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n replyAction: function replyAction(reply, isCreate) {\n var _this7 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var speechId, result, speechIndex, content, loadingIdx, replyId;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (_this7.messages[_this7.messages.length - 1].src) {\n _context3.next = 12;\n break;\n }\n speechId = Date.now();\n _this7.speechId = speechId;\n _context3.next = 5;\n return _this7.getSpeech(reply);\n case 5:\n result = _context3.sent;\n speechIndex = _this7.speechIdList.findIndex(function (item) {\n return item.speechId === speechId;\n });\n if (!(speechIndex > -1)) {\n _context3.next = 10;\n break;\n }\n _this7.speechIdList = _this7.speechIdList.splice(speechIndex, -1);\n return _context3.abrupt(\"return\");\n case 10:\n if (result) {\n _this7.isPlayingVoice = true;\n _this7.audioContext.play();\n }\n ;\n case 12:\n ;\n content = '';\n if (reply.errMsg) {\n content = \"\\u8BF7\\u6C42\\u51FA\\u9519: \".concat(reply.errMsg);\n } else {\n content = reply;\n }\n ;\n // 4. 移除 loading\n loadingIdx = _this7.messages.findIndex(function (m) {\n return m.id === _this7.loadingId;\n });\n if (loadingIdx > -1) _this7.messages.splice(loadingIdx, 1);\n // 5. 添加回复 + 打字机\n replyId = _this7.baseId + 1;\n if (!isCreate) {\n _this7.messages.push({\n id: replyId,\n role: \"assistant\",\n type: \"text\",\n content: content,\n displayText: \"\",\n src: JSON.parse(JSON.stringify(_this7.audioContext.src)),\n duration: null\n });\n }\n _this7.$nextTick(function () {\n return _this7.scrollToBottom();\n });\n _this7.typewriter(replyId, content);\n case 22:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n // 打印机效果,并清除加载动画\n typewriter: function typewriter(messageId, fullText) {\n var _this8 = this;\n var msg = this.messages.find(function (m) {\n return m.id === messageId;\n });\n if (!msg) return;\n // 清理之前的定时器(如果存在)\n if (this.typewriterTimers[messageId]) {\n clearInterval(this.typewriterTimers[messageId]);\n }\n var index = msg.displayText.length;\n msg.displayText = fullText.substring(0, index + 1);\n index += 1;\n var speed = 50; // 每个字符间隔50ms\n var timer = setInterval(function () {\n // 是否中断\n if (_this8.breakReplying) {\n clearInterval(timer);\n delete _this8.typewriterTimers[messageId];\n msg.isBreak = true;\n _this8.isReplying = false;\n _this8.breakReplying = false;\n _this8.isLoading = false;\n _this8.isPlayingVoice = false;\n _this8.audioContext.stop();\n _this8.scrollToBottom();\n }\n if (index < fullText.length) {\n msg.displayText = fullText.substring(0, index + 1);\n index++;\n _this8.scrollToBottom();\n } else {\n clearInterval(timer);\n delete _this8.typewriterTimers[messageId];\n // 完成后使用完整文本\n msg.displayText = fullText;\n _this8.isReplying = false;\n _this8.breakReplying = false;\n _this8.$nextTick(function () {\n _this8.scrollToBottom();\n });\n }\n }, speed);\n this.typewriterTimers[messageId] = timer;\n },\n // 滚动到底部\n scrollToBottom: function scrollToBottom() {\n var self = this;\n this.$nextTick(function () {\n uni.createSelectorQuery().select(\".content\").boundingClientRect(function (rect) {\n if (self.height !== rect.height) {\n self.height = rect.height;\n uni.pageScrollTo({\n scrollTop: rect.height,\n duration: 300,\n class: \".content\"\n });\n }\n }).exec();\n });\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJ0b3AiLCJmcm9udCIsImNoYXQiLCJsZWZ0RHJhd2VyIiwic2VhcmNoIiwiZGF0YSIsImlucHV0VGV4dCIsIm1lc3NhZ2VzIiwiaGlzdG9yeUdyb3VwcyIsImlzTG9hZGluZyIsInR5cGV3cml0ZXJUaW1lcnMiLCJzaG93IiwibWFyZ2luQm90dG9tIiwiaXNSZXBseWluZyIsImJyZWFrUmVwbHlpbmciLCJyZXBseURhdGEiLCJpc1JlZnJlc2giLCJhdWRpb0NvbnRleHQiLCJpc1BsYXlpbmdWb2ljZSIsInBsYXlTcmMiLCJicmVha1JlcXVlc3RMaXN0Iiwic3BlZWNoSWRMaXN0IiwidGV4dFRvVm9pY2VMb2FkaW5nIiwibW91bnRlZCIsInVuaSIsInNjcm9sbFRvcCIsImR1cmF0aW9uIiwiY2xhc3MiLCJiZWZvcmVEZXN0cm95IiwibWV0aG9kcyIsInN0YXJ0UmVjb3JkIiwiaGFuZGxlVm9pY2UiLCJpbml0QXVkaW8iLCJpdGVtcyIsImdldFNwZWVjaCIsInR5cGUiLCJyZXNvbHZlIiwic2VsZiIsInJlZnJlc2giLCJjb250aW51ZUNyZWF0ZSIsImlkIiwicm9sZSIsImxvYWRpbmciLCJoYW5kbGVCcmVhayIsImNvbnRlbnQiLCJkaXNwbGF5VGV4dCIsImlzQnJlYWsiLCJyZXNldE1lc3NhZ2UiLCJyZXF1ZXN0SWQiLCJzcGVlZElkIiwiY2xlYXJUeXBld3JpdGVyVGltZXJzIiwiT2JqZWN0IiwiY2hhbmdlSW5wdXRUZXh0Iiwib3BlbkRyYXdlciIsIm9uSGlzdG9yeUl0ZW1UYXAiLCJjaGFuZ2VTaG93IiwicmVtb3ZlRnJvbUhpc3RvcnkiLCJncm91cHMiLCJncm91cCIsInVwZGF0ZWRBdCIsImNsZWFyQWxsSGlzdG9yeSIsInRpdGxlIiwic3VjY2VzcyIsImljb24iLCJmb3JtYXREYXRlIiwibG9hZENoYXRIaXN0b3J5IiwiYWRkVG9IaXN0b3J5IiwidG9kYXlHcm91cCIsImRhdGUiLCJvblF1aWNrQXNrIiwib25TZW5kIiwiaW5wdXRUeXBlIiwiaW5wdXRDb250ZW50IiwidGV4dCIsIm1lc3NhZ2UiLCJyZXBseSIsInJlcXVlc3RJbmRleCIsInJlcGx5QWN0aW9uIiwic3BlZWNoSWQiLCJyZXN1bHQiLCJzcGVlY2hJbmRleCIsImxvYWRpbmdJZHgiLCJyZXBseUlkIiwic3JjIiwidHlwZXdyaXRlciIsImNsZWFySW50ZXJ2YWwiLCJtc2ciLCJpbmRleCIsInNjcm9sbFRvQm90dG9tIiwiY3JlYXRlU2VsZWN0b3JRdWVyeSIsInNlbGVjdCIsImJvdW5kaW5nQ2xpZW50UmVjdCIsImV4ZWMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQXdCQTtBQUdBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYkE7QUFBQSxlQWNBO0VBQ0FBO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0VBQ0E7RUFDQUM7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUFBO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztNQUFBO01BQ0FDO01BQ0FDO01BQUE7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQUE7SUFBQTtNQUFBO1FBQUE7VUFBQTtZQUFBO2NBQ0E7Y0FDQUM7Z0JBQ0FBO2tCQUNBQztrQkFDQUM7a0JBQ0FDO2dCQUNBO2NBQ0E7Y0FFQTtnQkFDQTtjQUNBO2NBRUE7Y0FFQTtZQUFBO1lBQUE7Y0FBQTtVQUFBO1FBQUE7TUFBQTtJQUFBO0VBQ0E7RUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQUM7TUFDQTtRQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO01BQUE7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO01BQUE7TUFDQTtRQUNBO01BQ0E7TUFBQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUFBO01BQ0E7TUFDQTtRQUNBO1VBQUE7UUFBQTtRQUNBO1FBQ0FDO1FBQ0E7UUFDQTtNQUNBOztNQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFBQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1lBQ0E7Y0FDQUM7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0FDO1VBQ0E7VUFDQTtVQUFBLEtBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtjQUNBO2NBQ0FDO2NBQ0FBO2NBQ0E7Y0FDQTtjQUNBRDtZQUNBO1VBQ0E7UUFDQTtVQUNBQTtRQUNBO01BQ0E7SUFFQTtJQUNBO0lBQ0FFO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7UUFDQTtVQUNBQztVQUNBQztVQUNBQztRQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtRQUNBO1VBQUE7UUFBQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1VBQ0FIO1VBQ0FDO1VBQ0FOO1VBQ0FTO1VBQ0FDO1VBQ0FDO1FBQ0E7UUFDQTtRQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO1FBQ0E7VUFDQUM7UUFDQTtNQUNBO01BQUE7TUFDQTtRQUNBO1VBQ0FDO1FBQ0E7TUFDQTtNQUFBO01BQ0E7UUFDQTtRQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0FDO1FBQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFBQTtNQUNBO01BQ0FDO1FBQ0FDO1VBQUE7UUFBQTtNQUNBO01BQ0FEO1FBQUE7TUFBQTtNQUNBO01BQ0Fq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O01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSwyQiIsImZpbGUiOiIxNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cImFpLXBhZ2VcIj5cclxuXHRcdDxwYWdlLW1ldGEgOnBhZ2Utc3R5bGU9XCInb3ZlcmZsb3c6JyArIChzaG93ID8gJ2hpZGRlbicgOiAndmlzaWJsZScpXCI+PC9wYWdlLW1ldGE+XHJcblx0XHQ8dG9wIEBjbGlja0xlZnQ9XCJvcGVuRHJhd2VyXCIgQHJlc2V0TWVzc2FnZT1cInJlc2V0TWVzc2FnZVwiPjwvdG9wPlxyXG5cdFx0PHNjcm9sbC12aWV3IGNsYXNzPVwiY29udGVudFwiIDpzY3JvbGwteT1cInRydWVcIiBzaG93LXNjcm9sbGJhcj1cImZhbHNlXCIgc2Nyb2xsLXdpdGgtYW5pbWF0aW9uIHJlZj1cInNjcm9sbFZpZXdcIj5cclxuXHRcdFx0PGZyb250IEBvblN1Z2dlc3Rpb25UYXA9XCJvblF1aWNrQXNrXCIgLz5cclxuXHRcdFx0PGNoYXQgOm1lc3NhZ2VzPVwibWVzc2FnZXNcIiBAY29udGludWVDcmVhdGU9XCJjb250aW51ZUNyZWF0ZVwiIDppc1JlcGx5aW5nPVwiaXNSZXBseWluZ1wiIEByZWZyZXNoPVwicmVmcmVzaFwiXHJcblx0XHRcdFx0QGNoYW5nZVNob3c9XCJjaGFuZ2VTaG93XCIgQGNoYW5nZUlucHV0VGV4dD1cImNoYW5nZUlucHV0VGV4dFwiIEBoYW5kbGVWb2ljZT1cImhhbmRsZVZvaWNlXCJcclxuXHRcdFx0XHQ6aXNQbGF5aW5nVm9pY2U9XCJpc1BsYXlpbmdWb2ljZVwiIDpwbGF5U3JjPVwicGxheVNyY1wiIC8+XHJcblx0XHQ8L3Njcm9sbC12aWV3PlxyXG5cdFx0PHZpZXcgOnN0eWxlPVwieyBoZWlnaHQ6IG1hcmdpbkJvdHRvbSArICdweCcsIGJhY2tncm91bmRDb2xvcjogJyNmZmYnIH1cIiAvPlxyXG5cdFx0PGxlZnREcmF3ZXIgOmhpc3RvcnlHcm91cHM9XCJoaXN0b3J5R3JvdXBzXCIgcmVmPVwicG9wdXBcIiBAY2hhbmdlU2hvdz1cImNoYW5nZVNob3dcIlxyXG5cdFx0XHRAb25IaXN0b3J5SXRlbVRhcD1cIm9uSGlzdG9yeUl0ZW1UYXBcIiBAcmVtb3ZlRnJvbUhpc3Rvcnk9XCJyZW1vdmVGcm9tSGlzdG9yeVwiXHJcblx0XHRcdEBjbGVhckFsbEhpc3Rvcnk9XCJjbGVhckFsbEhpc3RvcnlcIiAvPlxyXG5cclxuXHRcdDxzZWFyY2ggcmVmPVwic2VhcmNoUmVmXCIgOmlucHV0VGV4dD1cImlucHV0VGV4dFwiIEBvblNlbmQ9XCJvblNlbmRcIiBAb25RdWlja0Fzaz1cIm9uUXVpY2tBc2tcIlxyXG5cdFx0XHRAY2hhbmdlSW5wdXRUZXh0PVwiY2hhbmdlSW5wdXRUZXh0XCIgOmlzUmVwbHlpbmc9XCJpc1JlcGx5aW5nXCIgQGhhbmRsZUJyZWFrPVwiaGFuZGxlQnJlYWtcIlxyXG5cdFx0XHRAY2hhbmdlU2hvdz1cImNoYW5nZVNob3dcIiBAc3RhcnRSZWNvcmQ9XCJzdGFydFJlY29yZFwiLz5cclxuXHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuXHRjb25zdCBISVNUT1JZX0tFWSA9IFwiY2hhdF9oaXN0b3J5X2dyb3Vwc1wiO1xyXG5cdGltcG9ydCB7XHJcblx0XHRnZXRBSVJlc3BvbnNlLFxyXG5cdH0gZnJvbSBcIkAvYXBpL2luZGV4LmpzXCI7XHJcblx0aW1wb3J0IHtcclxuXHRcdHRleHRUb1NwZWVjaCxcclxuXHRcdGJhc2U2NFRvRmlsZSxcclxuXHRcdHJlbW92ZUZpbGVcclxuXHR9IGZyb20gJ0AvdXRpbHMvdXRpbHMuanMnXHJcblx0aW1wb3J0IHRvcCBmcm9tIFwiLi90b3AvaW5kZXgudnVlXCI7XHJcblx0aW1wb3J0IGZyb250IGZyb20gXCIuL2Zyb250L2luZGV4LnZ1ZVwiO1xyXG5cdGltcG9ydCBjaGF0IGZyb20gXCIuL2NoYXQvaW5kZXgudnVlXCI7XHJcblx0aW1wb3J0IGxlZnREcmF3ZXIgZnJvbSBcIi4vbGVmdERyYXdlci9pbmRleC52dWVcIjtcclxuXHRpbXBvcnQgc2VhcmNoIGZyb20gXCIuL3NlYXJjaC9pbmRleC52dWVcIjtcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRjb21wb25lbnRzOiB7XHJcblx0XHRcdHRvcCxcclxuXHRcdFx0ZnJvbnQsXHJcblx0XHRcdGNoYXQsXHJcblx0XHRcdGxlZnREcmF3ZXIsXHJcblx0XHRcdHNlYXJjaFxyXG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0aW5wdXRUZXh0OiBcIlwiLFxyXG5cdFx0XHRcdG1lc3NhZ2VzOiBbXSxcclxuXHRcdFx0XHRoaXN0b3J5R3JvdXBzOiBbXSxcclxuXHRcdFx0XHRpc0xvYWRpbmc6IGZhbHNlLFxyXG5cdFx0XHRcdHR5cGV3cml0ZXJUaW1lcnM6IHt9LFxyXG5cdFx0XHRcdHNob3c6IGZhbHNlLFxyXG5cdFx0XHRcdG1hcmdpbkJvdHRvbTogMCxcclxuXHRcdFx0XHRpc1JlcGx5aW5nOiBmYWxzZSwgLy8g5piv5ZCm5q2j5Zyo5Zue5aSNXHJcblx0XHRcdFx0YnJlYWtSZXBseWluZzogZmFsc2UsIC8vIOaYr+WQpuaJk+aWreWbnuWkjVxyXG5cdFx0XHRcdHJlcGx5RGF0YToge30sIC8vIOWbnuWkjeaVsOaNrlxyXG5cdFx0XHRcdGlzUmVmcmVzaDogZmFsc2UsIC8vIOaYr+WQpumHjeaWsOWbnuWkjVxyXG5cdFx0XHRcdGF1ZGlvQ29udGV4dDogbnVsbCxcclxuXHRcdFx0XHRpc1BsYXlpbmdWb2ljZTogZmFsc2UsIC8vIOaYr+WQpuato+WcqOaSreaUvuivremfs1xyXG5cdFx0XHRcdHBsYXlTcmM6ICcnLFxyXG5cdFx0XHRcdGJyZWFrUmVxdWVzdExpc3Q6IFtdLFxyXG5cdFx0XHRcdHNwZWVjaElkTGlzdDogW10sXHJcblx0XHRcdFx0dGV4dFRvVm9pY2VMb2FkaW5nOiBmYWxzZVxyXG5cdFx0XHR9O1xyXG5cdFx0fSxcclxuXHRcdGFzeW5jIG1vdW50ZWQoKSB7XHJcblx0XHRcdHRoaXMubG9hZENoYXRIaXN0b3J5KCk7XHJcblx0XHRcdHVuaS5vbktleWJvYXJkSGVpZ2h0Q2hhbmdlKChyZXMpID0+IHtcclxuXHRcdFx0XHR1bmkucGFnZVNjcm9sbFRvKHtcclxuXHRcdFx0XHRcdHNjcm9sbFRvcDogdGhpcy5oZWlnaHQgKyByZXMuaGVpZ2h0LFxyXG5cdFx0XHRcdFx0ZHVyYXRpb246IDMwMCxcclxuXHRcdFx0XHRcdGNsYXNzOiBcIi5jb250ZW50XCIsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVNcclxuXHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMubWFyZ2luQm90dG9tID0gdGhpcy4kcmVmcy5zZWFyY2hSZWYuZ2V0SGVpZ2h0KCkgfHwgMTAzO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdHRoaXMubWFyZ2luQm90dG9tID0gMTAzO1xyXG5cclxuXHRcdFx0dGhpcy5pbml0QXVkaW8oKTtcclxuXHRcdH0sXHJcblx0XHRiZWZvcmVEZXN0cm95KCkge1xyXG5cdFx0XHR0aGlzLmNsZWFyVHlwZXdyaXRlclRpbWVycygpO1xyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0Ly8g5byA5aeL5b2V6Z+z5ZCO5pqC5YGc5pKt5pS+6K+t6Z+zXHJcblx0XHRcdHN0YXJ0UmVjb3JkKCl7XHJcblx0XHRcdFx0aWYodGhpcy5pc1BsYXlpbmdWb2ljZSAmJiB0aGlzLmF1ZGlvQ29udGV4dC5zcmMpe1xyXG5cdFx0XHRcdFx0dGhpcy5hdWRpb0NvbnRleHQuc3RvcCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5pc1BsYXlpbmdWb2ljZSA9IGZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g54K55Ye76K+t6Z+z5pKt5pS+5pqC5YGcXHJcblx0XHRcdGhhbmRsZVZvaWNlKHNyYykge1xyXG5cdFx0XHRcdGlmICh0aGlzLmF1ZGlvQ29udGV4dC5zcmMgPT09IHNyYyAmJiB0aGlzLmlzUGxheWluZ1ZvaWNlKSB7XHJcblx0XHRcdFx0XHR0aGlzLmlzUGxheWluZ1ZvaWNlID0gZmFsc2U7XHJcblx0XHRcdFx0XHR0aGlzLmF1ZGlvQ29udGV4dC5zdG9wKCk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRpZiAodGhpcy5hdWRpb0NvbnRleHQuc3JjID09PSBzcmMgJiYgIXRoaXMuaXNQbGF5aW5nVm9pY2UpIHtcclxuXHRcdFx0XHRcdHRoaXMuaXNQbGF5aW5nVm9pY2UgPSB0cnVlO1xyXG5cdFx0XHRcdFx0dGhpcy5hdWRpb0NvbnRleHQucGxheSgpO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNQbGF5aW5nVm9pY2UpIHtcclxuXHRcdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnN0b3AoKTtcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdHRoaXMuaXNQbGF5aW5nVm9pY2UgPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnNyYyA9IHNyYztcclxuXHRcdFx0XHR0aGlzLnBsYXlTcmMgPSBzcmM7XHJcblx0XHRcdFx0dGhpcy5hdWRpb0NvbnRleHQucGxheSgpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDliJ3lp4vljJbor63pn7Plip/og73vvIwg5bey57uP6K+t6Z+z6YOo5YiG55uR5ZCsXHJcblx0XHRcdGluaXRBdWRpbygpIHtcclxuXHRcdFx0XHR0aGlzLmF1ZGlvQ29udGV4dCA9IHVuaS5jcmVhdGVJbm5lckF1ZGlvQ29udGV4dCgpXHJcblx0XHRcdFx0dGhpcy5hdWRpb0NvbnRleHQub25DYW5wbGF5KChlKSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgaXRlbXMgPSB0aGlzLm1lc3NhZ2VzLmZpbmQoaXRlbSA9PiBpdGVtLnNyYyAmJiBpdGVtLnNyYyA9PT0gdGhpcy5hdWRpb0NvbnRleHQuc3JjKTtcclxuXHRcdFx0XHRcdGlmICghaXRlbXMpIHJldHVybjtcclxuXHRcdFx0XHRcdGl0ZW1zLmR1cmF0aW9uID0gdGhpcy5hdWRpb0NvbnRleHQuZHVyYXRpb247XHJcblx0XHRcdFx0XHQvLyB0aGlzLmlzUGxheWluZ1ZvaWNlID0gdHJ1ZTtcclxuXHRcdFx0XHRcdC8vIHRoaXMuYXVkaW9Db250ZXh0LnBsYXkoKVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0Lm9uRW5kZWQocmVzID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuaXNQbGF5aW5nVm9pY2UgPSBmYWxzZVxyXG5cdFx0XHRcdFx0Ly8gY29uc3QgcGxhdGZvcm0gPSB1bmkuZ2V0U3lzdGVtSW5mb1N5bmMoKS51bmlQbGF0Zm9ybTtcclxuXHRcdFx0XHRcdC8vIGlmKHBsYXRmb3JtID09PSAnd2ViJykgcmV0dXJuO1xyXG5cdFx0XHRcdFx0Ly8gcmVtb3ZlRmlsZSh0aGlzLmF1ZGlvQ29udGV4dC5zcmMpXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5aSE55CG55m+5bqm6L+U5ZueYXJyYXlidWZm5qC85byP55qE6K+t6Z+zXHJcblx0XHRcdGdldFNwZWVjaChzcGVlY2hTdHIpIHtcclxuXHRcdFx0XHRsZXQgc2VsZiA9IHRoaXM7XHJcblx0XHRcdFx0dGhpcy50ZXh0VG9Wb2ljZUxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdGxldCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xyXG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG5cdFx0XHRcdFx0dGV4dFRvU3BlZWNoKHNwZWVjaFN0cikudGhlbihhdWRpb0RhdGEgPT4ge1xyXG5cdFx0XHRcdFx0XHRsZXQgZW5kVGltZSA9IERhdGUubm93KCk7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCfor63pn7PlkIjmiJDogJfml7Y6JywgZW5kVGltZSAtIHN0YXJ0VGltZSwgJ21zJyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHBsYXRmb3JtID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKCkudW5pUGxhdGZvcm07XHJcblx0XHRcdFx0XHRcdC8vIEg156uv5aSE55CGXHJcblx0XHRcdFx0XHRcdGlmIChwbGF0Zm9ybSA9PT0gJ3dlYicpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBibG9iID0gbmV3IEJsb2IoW2F1ZGlvRGF0YV0sIHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdhdWRpby9tcDMnXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnBsYXlTcmMgPSB1cmw7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5hdWRpb0NvbnRleHQuc3JjID0gdXJsO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMudGV4dFRvVm9pY2VMb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdC8vIEFwcOerr+WSjOWwj+eoi+W6j+err+WkhOeQhlxyXG5cdFx0XHRcdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBiYXNlNjRBdWRpbyA9IHVuaS5hcnJheUJ1ZmZlclRvQmFzZTY0KGF1ZGlvRGF0YSk7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgYmFzZTY0V2l0aFByZWZpeCA9IGBkYXRhOmF1ZGlvL21wMztiYXNlNjQsJHtiYXNlNjRBdWRpb31gO1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGZpbGVOYW1lID0gYF9kb2MvJHtEYXRlLm5vdygpfV9udW1iZXJQZXJzb24ubXAzYDtcclxuXHRcdFx0XHRcdFx0XHRiYXNlNjRUb0ZpbGUoYmFzZTY0V2l0aFByZWZpeCwgZmlsZU5hbWUsIChwYXRoKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsYXlTcmMgPSBwYXRoO1xyXG5cdFx0XHRcdFx0XHRcdFx0c2VsZi50ZXh0VG9Wb2ljZUxvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0XHRcdHNlbGYuYXVkaW9Db250ZXh0LnNyYyA9IHBhdGg7XHJcblx0XHRcdFx0XHRcdFx0XHRsZXQgZW5kVGltZTIgPSBEYXRlLm5vdygpO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ+ivremfs+S4i+i9veWIsOaJi+acuuiAl+aXtjonLCBlbmRUaW1lMiAtIHN0YXJ0VGltZSwgJ21zJyk7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKHRydWUpXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pLmNhdGNoKGVyciA9PiB7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUodHJ1ZSlcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0fSlcclxuXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOmHjeaWsOWbnuWkjVxyXG5cdFx0XHRyZWZyZXNoKCkge1xyXG5cdFx0XHRcdHRoaXMubWVzc2FnZXMuc3BsaWNlKHRoaXMubWVzc2FnZXMubGVuZ3RoIC0gMSwgMSk7XHJcblx0XHRcdFx0dGhpcy5pbnB1dFRleHQgPSB0aGlzLm1lc3NhZ2VzW3RoaXMubWVzc2FnZXMubGVuZ3RoIC0gMV0uY29udGVudDtcclxuXHRcdFx0XHR0aGlzLmlzUmVmcmVzaCA9IHRydWU7XHJcblx0XHRcdFx0dGhpcy5vblNlbmQoKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g57un57ut55Sf5oiQXHJcblx0XHRcdGNvbnRpbnVlQ3JlYXRlKCkge1xyXG5cdFx0XHRcdHRoaXMuYnJlYWtSZXBseWluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdHRoaXMuaXNSZXBseWluZyA9IHRydWU7XHJcblx0XHRcdFx0aWYgKCF0aGlzLmlzTG9hZGluZykge1xyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlc1t0aGlzLm1lc3NhZ2VzLmxlbmd0aCAtIDFdLmlzQnJlYWsgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMucmVwbHlBY3Rpb24odGhpcy5yZXBseURhdGEsIHRydWUpXHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZXMuc3BsaWNlKHRoaXMubWVzc2FnZXMubGVuZ3RoIC0gMSwgMSk7XHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRpZDogdGhpcy5sb2FkaW5nSWQsXHJcblx0XHRcdFx0XHRcdHJvbGU6IFwiYXNzaXN0YW50XCIsXHJcblx0XHRcdFx0XHRcdGxvYWRpbmc6IHRydWUsXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOS4reaWreWbnuWkjVxyXG5cdFx0XHRoYW5kbGVCcmVhaygpIHtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0xvYWRpbmcpIHtcclxuXHRcdFx0XHRcdGNvbnN0IGxvYWRpbmdJZHggPSB0aGlzLm1lc3NhZ2VzLmZpbmRJbmRleCgobSkgPT4gbS5pZCA9PT0gdGhpcy5sb2FkaW5nSWQpO1xyXG5cdFx0XHRcdFx0aWYgKGxvYWRpbmdJZHggPiAtMSkgdGhpcy5tZXNzYWdlcy5zcGxpY2UobG9hZGluZ0lkeCwgMSk7XHJcblx0XHRcdFx0XHQvLyA1LiDmt7vliqDlm57lpI0gKyDmiZPlrZfmnLpcclxuXHRcdFx0XHRcdGNvbnN0IHJlcGx5SWQgPSB0aGlzLmJhc2VJZCArIDE7XHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRpZDogcmVwbHlJZCxcclxuXHRcdFx0XHRcdFx0cm9sZTogXCJhc3Npc3RhbnRcIixcclxuXHRcdFx0XHRcdFx0dHlwZTogXCJ0ZXh0XCIsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6ICcnLFxyXG5cdFx0XHRcdFx0XHRkaXNwbGF5VGV4dDogXCLlt7LlgZzmraJcIixcclxuXHRcdFx0XHRcdFx0aXNCcmVhazogdHJ1ZVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR0aGlzLmlzUmVwbHlpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5icmVha1JlcGx5aW5nID0gdHJ1ZTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5paw5bu65a+56K+dXHJcblx0XHRcdHJlc2V0TWVzc2FnZSgpIHtcclxuXHRcdFx0XHRpZiAodGhpcy5tZXNzYWdlcy5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0xvYWRpbmcpIHtcclxuXHRcdFx0XHRcdHRoaXMuYnJlYWtSZXF1ZXN0TGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0cmVxdWVzdElkOiB0aGlzLnJlcXVlc3RJZFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRpZiAodGhpcy50ZXh0VG9Wb2ljZUxvYWRpbmcpIHtcclxuXHRcdFx0XHRcdHRoaXMuc3BlZWNoSWRMaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRzcGVlZElkOiB0aGlzLnNwZWVkSWRcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRpZiAodGhpcy5pc1BsYXlpbmdWb2ljZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5pc1BsYXlpbmdWb2ljZSA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0dGhpcy5hdWRpb0NvbnRleHQuc3RvcCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmNsZWFyVHlwZXdyaXRlclRpbWVycygpO1xyXG5cdFx0XHRcdHRoaXMuaXNSZXBseWluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdHRoaXMubWVzc2FnZXMgPSBbXTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5riF55CG5omA5pyJ5omT5a2X5py65a6a5pe25ZmoXHJcblx0XHRcdGNsZWFyVHlwZXdyaXRlclRpbWVycygpIHtcclxuXHRcdFx0XHRPYmplY3QudmFsdWVzKHRoaXMudHlwZXdyaXRlclRpbWVycykuZm9yRWFjaCgodGltZXIpID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aW1lcikgY2xlYXJJbnRlcnZhbCh0aW1lcik7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50eXBld3JpdGVyVGltZXJzID0ge307XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOS/ruaUuei+k+WFpeahhuaWh+acrFxyXG5cdFx0XHRjaGFuZ2VJbnB1dFRleHQodGV4dCkge1xyXG5cdFx0XHRcdHRoaXMuaW5wdXRUZXh0ID0gdGV4dDtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly/miZPlvIDljoblj7LorrDlvZVcclxuXHRcdFx0b3BlbkRyYXdlcigpIHtcclxuXHRcdFx0XHR0aGlzLiRyZWZzLnBvcHVwLm9wZW4oKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g54K55Ye75Y6G5Y+y6K6w5b2V5pCc57SiXHJcblx0XHRcdG9uSGlzdG9yeUl0ZW1UYXAodGV4dCkge1xyXG5cdFx0XHRcdHRoaXMuaW5wdXRUZXh0ID0gdGV4dDtcclxuXHRcdFx0XHR0aGlzLm9uU2VuZCgpO1xyXG5cdFx0XHRcdHRoaXMuJHJlZnMucG9wdXAuY2xvc2UoKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g6IGK5aSp6aG16Z2i56aB5q2i5rua5YqoXHJcblx0XHRcdGNoYW5nZVNob3coZSkge1xyXG5cdFx0XHRcdHRoaXMuc2hvdyA9IGU7XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vICDliKDpmaTljoblj7LorrDlvZVcclxuXHRcdFx0cmVtb3ZlRnJvbUhpc3RvcnkodGV4dCkge1xyXG5cdFx0XHRcdGxldCBncm91cHMgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoSElTVE9SWV9LRVkpPy5ncm91cHMgfHwgW107XHJcblx0XHRcdFx0Z3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XHJcblx0XHRcdFx0XHRncm91cC5pdGVtcyA9IGdyb3VwLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gdGV4dCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0Z3JvdXBzID0gZ3JvdXBzLmZpbHRlcigoZykgPT4gZy5pdGVtcy5sZW5ndGggPiAwKTtcclxuXHRcdFx0XHR0aGlzLmhpc3RvcnlHcm91cHMgPSBncm91cHM7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKEhJU1RPUllfS0VZLCB7XHJcblx0XHRcdFx0XHRncm91cHMsXHJcblx0XHRcdFx0XHR1cGRhdGVkQXQ6IERhdGUubm93KCksXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vICDmuIXpmaTlhajpg6jljoblj7LorrDlvZVcclxuXHRcdFx0Y2xlYXJBbGxIaXN0b3J5KCkge1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0dGl0bGU6IFwi5riF6Zmk5YWo6YOoXCIsXHJcblx0XHRcdFx0XHRjb250ZW50OiBcIuWwhuWIoOmZpOaJgOacieWvueivneiusOW9le+8jOatpOaTjeS9nOS4jeWPr+aBouWkjVwiLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvbmZpcm0pIHtcclxuXHRcdFx0XHRcdFx0XHR1bmkucmVtb3ZlU3RvcmFnZVN5bmMoSElTVE9SWV9LRVkpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaGlzdG9yeUdyb3VwcyA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5bey5riF6ZmkXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRpY29uOiBcInN1Y2Nlc3NcIixcclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHJcblx0XHRcdGZvcm1hdERhdGUoZGF0ZSkge1xyXG5cdFx0XHRcdGNvbnN0IHkgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgbSA9IFN0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCBcIjBcIik7XHJcblx0XHRcdFx0Y29uc3QgZCA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgXCIwXCIpO1xyXG5cdFx0XHRcdHJldHVybiBgJHt5feW5tCR7bX3mnIgke2R95pelYDtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5Yqg6L295Y6G5Y+y6K6w5b2VXHJcblx0XHRcdGxvYWRDaGF0SGlzdG9yeSgpIHtcclxuXHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IHVuaS5nZXRTdG9yYWdlU3luYyhISVNUT1JZX0tFWSk7XHJcblx0XHRcdFx0XHRpZiAoZGF0YSAmJiBBcnJheS5pc0FycmF5KGRhdGEuZ3JvdXBzKSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmhpc3RvcnlHcm91cHMgPSBkYXRhLmdyb3VwcztcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaGlzdG9yeUdyb3VwcyA9IFtdO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHRcdHRoaXMuaGlzdG9yeUdyb3VwcyA9IFtdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5re75Yqg5Y6G5Y+y6K6w5b2VXHJcblx0XHRcdGFkZFRvSGlzdG9yeSh0ZXh0KSB7XHJcblx0XHRcdFx0bGV0IGdyb3VwcyA9IHVuaS5nZXRTdG9yYWdlU3luYyhISVNUT1JZX0tFWSk/Lmdyb3VwcyB8fCBbXTtcclxuXHRcdFx0XHRjb25zdCB0b2RheSA9IHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKTtcclxuXHRcdFx0XHRsZXQgdG9kYXlHcm91cCA9IGdyb3Vwcy5maW5kKChnKSA9PiBnLmRhdGUgPT09IHRvZGF5KTtcclxuXHJcblx0XHRcdFx0aWYgKCF0b2RheUdyb3VwKSB7XHJcblx0XHRcdFx0XHR0b2RheUdyb3VwID0ge1xyXG5cdFx0XHRcdFx0XHRkYXRlOiB0b2RheSxcclxuXHRcdFx0XHRcdFx0aXRlbXM6IFtdLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGdyb3Vwcy51bnNoaWZ0KHRvZGF5R3JvdXApO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aWYgKCF0b2RheUdyb3VwLml0ZW1zLmluY2x1ZGVzKHRleHQpKSB7XHJcblx0XHRcdFx0XHR0b2RheUdyb3VwLml0ZW1zLnVuc2hpZnQodGV4dCk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyDpmZDliLblpKflsI9cclxuXHRcdFx0XHRpZiAodG9kYXlHcm91cC5pdGVtcy5sZW5ndGggPiA1MClcclxuXHRcdFx0XHRcdHRvZGF5R3JvdXAuaXRlbXMgPSB0b2RheUdyb3VwLml0ZW1zLnNsaWNlKDAsIDUwKTtcclxuXHRcdFx0XHRpZiAoZ3JvdXBzLmxlbmd0aCA+IDMwKSBncm91cHMgPSBncm91cHMuc2xpY2UoMCwgMzApO1xyXG5cclxuXHRcdFx0XHR0aGlzLmhpc3RvcnlHcm91cHMgPSBncm91cHM7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKEhJU1RPUllfS0VZLCB7XHJcblx0XHRcdFx0XHRncm91cHMsXHJcblx0XHRcdFx0XHR1cGRhdGVkQXQ6IERhdGUubm93KCksXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOW/q+mAn+aPkOmXrlxyXG5cdFx0XHRvblF1aWNrQXNrKHRleHQpIHtcclxuXHRcdFx0XHR0aGlzLmlucHV0VGV4dCA9IHRleHQ7XHJcblx0XHRcdFx0dGhpcy5vblNlbmQoKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5Y+R6YCB5raI5oGvXHJcblx0XHRcdGFzeW5jIG9uU2VuZChpbnB1dFR5cGUgPSBcInRleHRcIiwgaW5wdXRDb250ZW50ID0gXCJcIiwgZHVyYXRpb24gPSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRpZiAodGhpcy5pc1JlcGx5aW5nKSByZXR1cm47XHJcblx0XHRcdFx0Y29uc3QgdGV4dCA9ICh0aGlzLmlucHV0VGV4dCB8fCBcIlwiKS50cmltKCk7XHJcblx0XHRcdFx0aWYgKCF0ZXh0IHx8IHRoaXMuaXNMb2FkaW5nKSByZXR1cm47XHJcblx0XHRcdFx0dGhpcy5iYXNlSWQgPSBEYXRlLm5vdygpO1xyXG5cdFx0XHRcdGlmICghdGhpcy5pc1JlZnJlc2gpIHtcclxuXHRcdFx0XHRcdC8vIDEuIOeUqOaIt+a2iOaBr1xyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlcy5wdXNoKHtcclxuXHRcdFx0XHRcdFx0aWQ6IHRoaXMuYmFzZUlkLFxyXG5cdFx0XHRcdFx0XHRyb2xlOiBcInVzZXJcIixcclxuXHRcdFx0XHRcdFx0dHlwZTogXCJ0ZXh0XCIsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHRleHQsXHJcblx0XHRcdFx0XHRcdGlucHV0VHlwZTogdHlwZW9mIGlucHV0VHlwZSA9PT0gXCJzdHJpbmdcIiA/IGlucHV0VHlwZSA6IFwidGV4dFwiLFxyXG5cdFx0XHRcdFx0XHRpbnB1dENvbnRlbnQsXHJcblx0XHRcdFx0XHRcdGR1cmF0aW9uLFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vIDIuIGxvYWRpbmcg5raI5oGvXHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nSWQgPSB0aGlzLmJhc2VJZCArIDAuNTtcclxuXHRcdFx0XHR0aGlzLm1lc3NhZ2VzLnB1c2goe1xyXG5cdFx0XHRcdFx0aWQ6IHRoaXMubG9hZGluZ0lkLFxyXG5cdFx0XHRcdFx0cm9sZTogXCJhc3Npc3RhbnRcIixcclxuXHRcdFx0XHRcdGxvYWRpbmc6IHRydWUsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy5pbnB1dFRleHQgPSBcIlwiO1xyXG5cdFx0XHRcdHRoaXMuaXNSZXBseWluZyA9IHRydWU7XHJcblx0XHRcdFx0dGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMuaXNSZWZyZXNoID0gZmFsc2U7XHJcblx0XHRcdFx0dGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG5cdFx0XHRcdHRoaXMuYWRkVG9IaXN0b3J5KHRleHQpO1xyXG5cdFx0XHRcdGlmICh0aGlzLmlzUGxheWluZ1ZvaWNlKSB7XHJcblx0XHRcdFx0XHR0aGlzLmF1ZGlvQ29udGV4dC5zdG9wKCk7XHJcblx0XHRcdFx0XHR0aGlzLmlzUGxheWluZ1ZvaWNlID0gZmFsc2U7XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRsZXQgcmVxdWVzdElkID0gRGF0ZS5ub3coKTtcclxuXHRcdFx0XHR0aGlzLnJlcXVlc3RJZCA9IHJlcXVlc3RJZDtcclxuXHRcdFx0XHQvLyAzLiDnnJ/mraPnrYnlvoUgQUkg5Zue5aSNXHJcblx0XHRcdFx0Y29uc3QgcmVwbHkgPSBhd2FpdCBnZXRBSVJlc3BvbnNlKHtcclxuXHRcdFx0XHRcdG1lc3NhZ2U6IHRleHQsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRsZXQgcmVxdWVzdEluZGV4ID0gdGhpcy5icmVha1JlcXVlc3RMaXN0LmZpbmRJbmRleChpdGVtID0+IGl0ZW0ucmVxdWVzdElkID09PSByZXF1ZXN0SWQpXHJcblx0XHRcdFx0aWYgKHJlcXVlc3RJbmRleCA+IC0xKSB7XHJcblx0XHRcdFx0XHR0aGlzLmJyZWFrUmVxdWVzdExpc3QgPSB0aGlzLmJyZWFrUmVxdWVzdExpc3Quc3BsaWNlKHJlcXVlc3RJbmRleCwgLTEpXHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMucmVwbHlEYXRhID0gcmVwbHk7XHJcblx0XHRcdFx0aWYgKHRoaXMuYnJlYWtSZXBseWluZykge1xyXG5cdFx0XHRcdFx0dGhpcy5icmVha1JlcGx5aW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMucmVwbHlBY3Rpb24ocmVwbHkpXHJcblx0XHRcdH0sXHJcblx0XHRcdGFzeW5jIHJlcGx5QWN0aW9uKHJlcGx5LCBpc0NyZWF0ZSkge1xyXG5cdFx0XHRcdGlmICghdGhpcy5tZXNzYWdlc1t0aGlzLm1lc3NhZ2VzLmxlbmd0aCAtIDFdLnNyYykge1xyXG5cdFx0XHRcdFx0bGV0IHNwZWVjaElkID0gRGF0ZS5ub3coKTtcclxuXHRcdFx0XHRcdHRoaXMuc3BlZWNoSWQgPSBzcGVlY2hJZDtcclxuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0U3BlZWNoKHJlcGx5KTtcclxuXHRcdFx0XHRcdGxldCBzcGVlY2hJbmRleCA9IHRoaXMuc3BlZWNoSWRMaXN0LmZpbmRJbmRleChpdGVtID0+IGl0ZW0uc3BlZWNoSWQgPT09IHNwZWVjaElkKVxyXG5cdFx0XHRcdFx0aWYgKHNwZWVjaEluZGV4ID4gLTEpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zcGVlY2hJZExpc3QgPSB0aGlzLnNwZWVjaElkTGlzdC5zcGxpY2Uoc3BlZWNoSW5kZXgsIC0xKVxyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaXNQbGF5aW5nVm9pY2UgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmF1ZGlvQ29udGV4dC5wbGF5KCk7XHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0bGV0IGNvbnRlbnQgPSAnJ1xyXG5cdFx0XHRcdGlmIChyZXBseS5lcnJNc2cpIHtcclxuXHRcdFx0XHRcdGNvbnRlbnQgPSBg6K+35rGC5Ye66ZSZOiAke3JlcGx5LmVyck1zZ31gXHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGNvbnRlbnQgPSByZXBseVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0Ly8gNC4g56e76ZmkIGxvYWRpbmdcclxuXHRcdFx0XHRjb25zdCBsb2FkaW5nSWR4ID0gdGhpcy5tZXNzYWdlcy5maW5kSW5kZXgoKG0pID0+IG0uaWQgPT09IHRoaXMubG9hZGluZ0lkKTtcclxuXHRcdFx0XHRpZiAobG9hZGluZ0lkeCA+IC0xKSB0aGlzLm1lc3NhZ2VzLnNwbGljZShsb2FkaW5nSWR4LCAxKTtcclxuXHRcdFx0XHQvLyA1LiDmt7vliqDlm57lpI0gKyDmiZPlrZfmnLpcclxuXHRcdFx0XHRjb25zdCByZXBseUlkID0gdGhpcy5iYXNlSWQgKyAxO1xyXG5cdFx0XHRcdGlmICghaXNDcmVhdGUpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZXMucHVzaCh7XHJcblx0XHRcdFx0XHRcdGlkOiByZXBseUlkLFxyXG5cdFx0XHRcdFx0XHRyb2xlOiBcImFzc2lzdGFudFwiLFxyXG5cdFx0XHRcdFx0XHR0eXBlOiBcInRleHRcIixcclxuXHRcdFx0XHRcdFx0Y29udGVudCxcclxuXHRcdFx0XHRcdFx0ZGlzcGxheVRleHQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdHNyYzogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmF1ZGlvQ29udGV4dC5zcmMpKSxcclxuXHRcdFx0XHRcdFx0ZHVyYXRpb246IG51bGxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB0aGlzLnNjcm9sbFRvQm90dG9tKCkpO1xyXG5cdFx0XHRcdHRoaXMudHlwZXdyaXRlcihyZXBseUlkLCBjb250ZW50KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5omT5Y2w5py65pWI5p6c77yM5bm25riF6Zmk5Yqg6L295Yqo55S7XHJcblx0XHRcdHR5cGV3cml0ZXIobWVzc2FnZUlkLCBmdWxsVGV4dCkge1xyXG5cdFx0XHRcdGNvbnN0IG1zZyA9IHRoaXMubWVzc2FnZXMuZmluZCgobSkgPT4gbS5pZCA9PT0gbWVzc2FnZUlkKTtcclxuXHRcdFx0XHRpZiAoIW1zZykgcmV0dXJuO1xyXG5cdFx0XHRcdC8vIOa4heeQhuS5i+WJjeeahOWumuaXtuWZqO+8iOWmguaenOWtmOWcqO+8iVxyXG5cdFx0XHRcdGlmICh0aGlzLnR5cGV3cml0ZXJUaW1lcnNbbWVzc2FnZUlkXSkge1xyXG5cdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLnR5cGV3cml0ZXJUaW1lcnNbbWVzc2FnZUlkXSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGxldCBpbmRleCA9IG1zZy5kaXNwbGF5VGV4dC5sZW5ndGg7XHJcblx0XHRcdFx0bXNnLmRpc3BsYXlUZXh0ID0gZnVsbFRleHQuc3Vic3RyaW5nKDAsIGluZGV4ICsgMSk7XHJcblx0XHRcdFx0aW5kZXggKz0gMTtcclxuXHRcdFx0XHRjb25zdCBzcGVlZCA9IDUwOyAvLyDmr4/kuKrlrZfnrKbpl7TpmpQ1MG1zXHJcblx0XHRcdFx0Y29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcblx0XHRcdFx0XHQvLyDmmK/lkKbkuK3mlq1cclxuXHRcdFx0XHRcdGlmICh0aGlzLmJyZWFrUmVwbHlpbmcpIHtcclxuXHRcdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aW1lcik7XHJcblx0XHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnR5cGV3cml0ZXJUaW1lcnNbbWVzc2FnZUlkXTtcclxuXHRcdFx0XHRcdFx0bXNnLmlzQnJlYWsgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmlzUmVwbHlpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0dGhpcy5icmVha1JlcGx5aW5nID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0dGhpcy5pc1BsYXlpbmdWb2ljZSA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmF1ZGlvQ29udGV4dC5zdG9wKCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmIChpbmRleCA8IGZ1bGxUZXh0Lmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRtc2cuZGlzcGxheVRleHQgPSBmdWxsVGV4dC5zdWJzdHJpbmcoMCwgaW5kZXggKyAxKTtcclxuXHRcdFx0XHRcdFx0aW5kZXgrKztcclxuXHRcdFx0XHRcdFx0dGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aW1lcik7XHJcblx0XHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnR5cGV3cml0ZXJUaW1lcnNbbWVzc2FnZUlkXTtcclxuXHRcdFx0XHRcdFx0Ly8g5a6M5oiQ5ZCO5L2/55So5a6M5pW05paH5pysXHJcblx0XHRcdFx0XHRcdG1zZy5kaXNwbGF5VGV4dCA9IGZ1bGxUZXh0O1xyXG5cdFx0XHRcdFx0XHR0aGlzLmlzUmVwbHlpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0dGhpcy5icmVha1JlcGx5aW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdHRoaXMuJG5leHRUaWNrKCgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0sIHNwZWVkKTtcclxuXHRcdFx0XHR0aGlzLnR5cGV3cml0ZXJUaW1lcnNbbWVzc2FnZUlkXSA9IHRpbWVyO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDmu5rliqjliLDlupXpg6hcclxuXHRcdFx0c2Nyb2xsVG9Cb3R0b20oKSB7XHJcblx0XHRcdFx0bGV0IHNlbGYgPSB0aGlzO1xyXG5cdFx0XHRcdHRoaXMuJG5leHRUaWNrKCgpID0+IHtcclxuXHRcdFx0XHRcdHVuaVxyXG5cdFx0XHRcdFx0XHQuY3JlYXRlU2VsZWN0b3JRdWVyeSgpXHJcblx0XHRcdFx0XHRcdC5zZWxlY3QoXCIuY29udGVudFwiKVxyXG5cdFx0XHRcdFx0XHQuYm91bmRpbmdDbGllbnRSZWN0KChyZWN0KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHNlbGYuaGVpZ2h0ICE9PSByZWN0LmhlaWdodCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0c2VsZi5oZWlnaHQgPSByZWN0LmhlaWdodDtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5wYWdlU2Nyb2xsVG8oe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRzY3JvbGxUb3A6IHJlY3QuaGVpZ2h0LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRkdXJhdGlvbjogMzAwLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzczogXCIuY29udGVudFwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHQuZXhlYygpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcblx0Ojp2LWRlZXAgLnVuaS1uYXYtYmFyLXRleHQge1xyXG5cdFx0Zm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQ6OnYtZGVlbyAudW5pLW5hdmJhci0tYm9yZGVyIHtcclxuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZmZmICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cclxuXHQuYWktcGFnZSB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHRcdGJhY2tncm91bmQ6ICNmN2Y4ZmM7XHJcblx0fVxyXG5cclxuXHQuY29udGVudCB7XHJcblx0XHRmbGV4OiAxO1xyXG5cdFx0cGFkZGluZzogMTZweCAxMnB4IDBweCAxMnB4O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmYztcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHR9XHJcbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///17\n"); +eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 19));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 21));\nvar _index = __webpack_require__(/*! @/api/index.js */ 22);\nvar _utils = __webpack_require__(/*! @/utils/utils.js */ 26);\nvar _index2 = _interopRequireDefault(__webpack_require__(/*! ./top/index.vue */ 27));\nvar _index3 = _interopRequireDefault(__webpack_require__(/*! ./front/index.vue */ 48));\nvar _index4 = _interopRequireDefault(__webpack_require__(/*! ./chat/index.vue */ 53));\nvar _index5 = _interopRequireDefault(__webpack_require__(/*! ./leftDrawer/index.vue */ 84));\nvar _index6 = _interopRequireDefault(__webpack_require__(/*! ./search/index.vue */ 89));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar HISTORY_KEY = \"chat_history_groups\";\nvar _default = {\n components: {\n top: _index2.default,\n front: _index3.default,\n chat: _index4.default,\n leftDrawer: _index5.default,\n search: _index6.default\n },\n data: function data() {\n return {\n inputText: \"\",\n messages: [],\n historyGroups: [],\n isLoading: false,\n typewriterTimers: {},\n show: false,\n marginBottom: 0,\n isReplying: false,\n // 是否正在回复\n breakReplying: false,\n // 是否打断回复\n replyData: {},\n // 回复数据\n isRefresh: false,\n // 是否重新回复\n audioContext: null,\n isPlayingVoice: false,\n // 是否正在播放语音\n playSrc: '',\n breakRequestList: [],\n speechIdList: [],\n textToVoiceLoading: false,\n isGetAiLogoMsg: false,\n aiLogoRect: null,\n isShowRightLogo: false\n };\n },\n // onPageScroll(e) {\n // \tif (!this.getAiLogoMsg) {\n // \t\tthis.aiLogoRect = this.$refs.front.getAiLogoMsg();\n // \t\tthis.getAiLogoMsg = true\n // \t}\n // \tif (!this.aiLogoRect) return;\n // \tif (e.scrollTop > (this.aiLogoRect.top + 12)) {\n // \t\tthis.isShowRightLogo = true;\n // \t} else {\n // \t\tthis.isShowRightLogo = false;\n // \t}\n // },\n mounted: function mounted() {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this.loadChatHistory();\n uni.onKeyboardHeightChange(function (res) {\n uni.pageScrollTo({\n scrollTop: _this.height + res.height,\n duration: 300,\n class: \".content\"\n });\n });\n _this.$nextTick(function () {\n _this.marginBottom = _this.$refs.searchRef.getHeight() || 112;\n });\n _this.marginBottom = 112;\n _this.initAudio();\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n beforeDestroy: function beforeDestroy() {\n this.clearTypewriterTimers();\n },\n methods: {\n // 开始录音后暂停播放语音\n startRecord: function startRecord() {\n if (this.isPlayingVoice && this.audioContext.src) {\n this.audioContext.stop();\n this.isPlayingVoice = false;\n }\n },\n // 点击语音播放暂停\n handleVoice: function handleVoice(src) {\n if (!src) return;\n if (this.audioContext.src === src && this.isPlayingVoice) {\n this.isPlayingVoice = false;\n this.audioContext.stop();\n return;\n }\n ;\n if (this.audioContext.src === src && !this.isPlayingVoice) {\n this.isPlayingVoice = true;\n this.audioContext.play();\n return;\n }\n ;\n if (this.isPlayingVoice) {\n this.audioContext.stop();\n }\n ;\n this.isPlayingVoice = true;\n this.audioContext.src = src;\n this.playSrc = src;\n this.audioContext.play();\n },\n // 初始化语音功能, 已经语音部分监听\n initAudio: function initAudio() {\n var _this2 = this;\n this.audioContext = uni.createInnerAudioContext();\n this.audioContext.onCanplay(function (e) {\n var items = _this2.messages.find(function (item) {\n return item.src && item.src === _this2.audioContext.src;\n });\n if (!items) return;\n items.duration = _this2.audioContext.duration;\n // this.isPlayingVoice = true;\n // this.audioContext.play()\n });\n\n this.audioContext.onEnded(function (res) {\n _this2.isPlayingVoice = false;\n var platform = uni.getSystemInfoSync().uniPlatform;\n if (platform === 'web') return;\n (0, _utils.removeFile)(_this2.audioContext.src);\n });\n },\n // 处理百度返回arraybuff格式的语音\n getSpeech: function getSpeech(speechStr) {\n var _this3 = this;\n var self = this;\n this.textToVoiceLoading = true;\n var startTime = Date.now();\n return new Promise(function (resolve) {\n (0, _utils.textToSpeech)(speechStr).then(function (audioData) {\n var endTime = Date.now();\n __f__(\"log\", '语音合成耗时:', endTime - startTime, 'ms', \" at pages/index/index.vue:160\");\n var platform = uni.getSystemInfoSync().uniPlatform;\n // H5端处理\n if (platform === 'web') {\n var blob = new Blob([audioData], {\n type: 'audio/mp3'\n });\n var url = URL.createObjectURL(blob);\n _this3.playSrc = url;\n _this3.audioContext.src = url;\n _this3.textToVoiceLoading = false;\n resolve(true);\n }\n // App端和小程序端处理\n else {\n var base64Audio = uni.arrayBufferToBase64(audioData);\n var base64WithPrefix = \"data:audio/mp3;base64,\".concat(base64Audio);\n var fileName = \"_doc/\".concat(Date.now(), \"_numberPerson.mp3\");\n (0, _utils.base64ToFile)(base64WithPrefix, fileName, function (path) {\n self.playSrc = path;\n self.textToVoiceLoading = false;\n self.audioContext.src = path;\n var endTime2 = Date.now();\n __f__(\"log\", '语音下载到手机耗时:', endTime2 - startTime, 'ms', \" at pages/index/index.vue:183\");\n resolve(true);\n });\n }\n }).catch(function (err) {\n resolve(true);\n });\n });\n },\n // 重新回复\n refresh: function refresh() {\n this.messages.splice(this.messages.length - 1, 1);\n this.inputText = this.messages[this.messages.length - 1].content;\n this.isRefresh = true;\n this.onSend();\n },\n // 继续生成\n continueCreate: function continueCreate() {\n this.breakReplying = false;\n this.isReplying = true;\n if (!this.isLoading) {\n this.messages[this.messages.length - 1].isBreak = false;\n this.replyAction(this.replyData, true);\n } else {\n this.messages.splice(this.messages.length - 1, 1);\n this.messages.push({\n id: this.loadingId,\n role: \"assistant\",\n loading: true\n });\n }\n },\n // 中断回复\n handleBreak: function handleBreak() {\n var _this4 = this;\n __f__(\"log\", 'handleBreak', \" at pages/index/index.vue:218\");\n if (this.isLoading) {\n var loadingIdx = this.messages.findIndex(function (m) {\n return m.id === _this4.loadingId;\n });\n if (loadingIdx > -1) this.messages.splice(loadingIdx, 1);\n // 5. 添加回复 + 打字机\n var replyId = this.baseId + 1;\n this.messages.push({\n id: replyId,\n role: \"assistant\",\n type: \"text\",\n content: '',\n displayText: \"已停止\",\n isBreak: true\n });\n this.isReplying = false;\n this.scrollToBottom();\n }\n this.breakReplying = true;\n },\n // 新建对话\n resetMessage: function resetMessage() {\n if (this.messages.length === 0) return;\n if (this.isLoading) {\n this.breakRequestList.push({\n requestId: this.requestId\n });\n }\n ;\n if (this.textToVoiceLoading) {\n this.speechIdList.push({\n speedId: this.speedId\n });\n }\n ;\n if (this.isPlayingVoice) {\n this.isPlayingVoice = false;\n this.audioContext.stop();\n }\n this.clearTypewriterTimers();\n this.isReplying = false;\n this.messages = [];\n },\n // 清理所有打字机定时器\n clearTypewriterTimers: function clearTypewriterTimers() {\n Object.values(this.typewriterTimers).forEach(function (timer) {\n if (timer) clearInterval(timer);\n });\n this.typewriterTimers = {};\n },\n // 修改输入框文本\n changeInputText: function changeInputText(text) {\n this.inputText = text;\n },\n //打开历史记录\n openDrawer: function openDrawer() {\n this.$refs.popup.open();\n },\n // 点击历史记录搜索\n onHistoryItemTap: function onHistoryItemTap(text) {\n this.inputText = text;\n this.onSend();\n this.$refs.popup.close();\n },\n // 聊天页面禁止滚动\n changeShow: function changeShow(e) {\n this.show = e;\n },\n // 删除历史记录\n removeFromHistory: function removeFromHistory(text) {\n var _uni$getStorageSync;\n var groups = ((_uni$getStorageSync = uni.getStorageSync(HISTORY_KEY)) === null || _uni$getStorageSync === void 0 ? void 0 : _uni$getStorageSync.groups) || [];\n groups.forEach(function (group) {\n group.items = group.items.filter(function (item) {\n return item !== text;\n });\n });\n groups = groups.filter(function (g) {\n return g.items.length > 0;\n });\n this.historyGroups = groups;\n uni.setStorageSync(HISTORY_KEY, {\n groups: groups,\n updatedAt: Date.now()\n });\n },\n // 清除全部历史记录\n clearAllHistory: function clearAllHistory() {\n var _this5 = this;\n uni.showModal({\n title: \"清除全部\",\n content: \"将删除所有对话记录,此操作不可恢复\",\n success: function success(res) {\n if (res.confirm) {\n uni.removeStorageSync(HISTORY_KEY);\n _this5.historyGroups = [];\n uni.showToast({\n title: \"已清除\",\n icon: \"success\"\n });\n }\n }\n });\n },\n formatDate: function formatDate(date) {\n var y = date.getFullYear();\n var m = String(date.getMonth() + 1).padStart(2, \"0\");\n var d = String(date.getDate()).padStart(2, \"0\");\n return \"\".concat(y, \"\\u5E74\").concat(m, \"\\u6708\").concat(d, \"\\u65E5\");\n },\n // 加载历史记录\n loadChatHistory: function loadChatHistory() {\n try {\n var data = uni.getStorageSync(HISTORY_KEY);\n if (data && Array.isArray(data.groups)) {\n this.historyGroups = data.groups;\n } else {\n this.historyGroups = [];\n }\n } catch (e) {\n this.historyGroups = [];\n }\n },\n // 添加历史记录\n addToHistory: function addToHistory(text) {\n var _uni$getStorageSync2;\n var groups = ((_uni$getStorageSync2 = uni.getStorageSync(HISTORY_KEY)) === null || _uni$getStorageSync2 === void 0 ? void 0 : _uni$getStorageSync2.groups) || [];\n var today = this.formatDate(new Date());\n var todayGroup = groups.find(function (g) {\n return g.date === today;\n });\n if (!todayGroup) {\n todayGroup = {\n date: today,\n items: []\n };\n groups.unshift(todayGroup);\n }\n if (!todayGroup.items.includes(text)) {\n todayGroup.items.unshift(text);\n }\n\n // 限制大小\n if (todayGroup.items.length > 50) todayGroup.items = todayGroup.items.slice(0, 50);\n if (groups.length > 30) groups = groups.slice(0, 30);\n this.historyGroups = groups;\n uni.setStorageSync(HISTORY_KEY, {\n groups: groups,\n updatedAt: Date.now()\n });\n },\n // 快速提问\n onQuickAsk: function onQuickAsk(text) {\n this.inputText = text;\n this.onSend();\n },\n // 发送消息\n onSend: function onSend() {\n var _arguments = arguments,\n _this6 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var inputType, inputContent, duration, text, requestId, reply, requestIndex;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n inputType = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : \"text\";\n inputContent = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : \"\";\n duration = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : undefined;\n if (!_this6.isReplying) {\n _context2.next = 5;\n break;\n }\n return _context2.abrupt(\"return\");\n case 5:\n text = (_this6.inputText || \"\").trim();\n if (!(!text || _this6.isLoading)) {\n _context2.next = 8;\n break;\n }\n return _context2.abrupt(\"return\");\n case 8:\n _this6.baseId = Date.now();\n if (!_this6.isRefresh) {\n // 1. 用户消息\n _this6.messages.push({\n id: _this6.baseId,\n role: \"user\",\n type: \"text\",\n content: text,\n inputType: typeof inputType === \"string\" ? inputType : \"text\",\n inputContent: inputContent,\n duration: duration\n });\n }\n // 2. loading 消息\n _this6.loadingId = _this6.baseId + 0.5;\n _this6.messages.push({\n id: _this6.loadingId,\n role: \"assistant\",\n loading: true\n });\n _this6.inputText = \"\";\n _this6.isReplying = true;\n _this6.isLoading = true;\n _this6.isRefresh = false;\n _this6.scrollToBottom();\n _this6.addToHistory(text);\n if (_this6.isPlayingVoice) {\n _this6.audioContext.stop();\n _this6.isPlayingVoice = false;\n }\n ;\n requestId = Date.now();\n _this6.requestId = requestId;\n // 3. 真正等待 AI 回复\n _context2.next = 24;\n return (0, _index.getAIResponse)({\n message: text\n });\n case 24:\n reply = _context2.sent;\n _this6.isLoading = false;\n requestIndex = _this6.breakRequestList.findIndex(function (item) {\n return item.requestId === requestId;\n });\n if (!(requestIndex > -1)) {\n _context2.next = 30;\n break;\n }\n _this6.breakRequestList = _this6.breakRequestList.splice(requestIndex, -1);\n return _context2.abrupt(\"return\");\n case 30:\n _this6.replyData = reply;\n if (!_this6.breakReplying) {\n _context2.next = 34;\n break;\n }\n _this6.breakReplying = false;\n return _context2.abrupt(\"return\");\n case 34:\n _this6.replyAction(reply);\n case 35:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n replyAction: function replyAction(reply, isContinue) {\n var _this7 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var content, result, _speechId, speechIndex, loadingIdx, replyId;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n content = ''; // 判断请求是否出错\n if (reply.errMsg) {\n content = \"\\u8BF7\\u6C42\\u51FA\\u9519: \".concat(reply.errMsg);\n } else {\n content = reply;\n }\n ;\n if (!(_this7.$store.state.set.replyPattern === '1' && !_this7.messages[_this7.messages.length - 1].src && !reply.errMsg)) {\n _context3.next = 9;\n break;\n }\n _speechId = Date.now();\n _this7.speechId = _speechId;\n _context3.next = 8;\n return _this7.getSpeech(reply);\n case 8:\n result = _context3.sent;\n case 9:\n ;\n if (!result) {\n _context3.next = 17;\n break;\n }\n speechIndex = _this7.speechIdList.findIndex(function (item) {\n return item.speechId === speechId;\n });\n if (!(speechIndex > -1)) {\n _context3.next = 15;\n break;\n }\n _this7.speechIdList = _this7.speechIdList.splice(speechIndex, -1);\n return _context3.abrupt(\"return\");\n case 15:\n if (result) {\n _this7.isPlayingVoice = true;\n _this7.audioContext.play();\n }\n ;\n case 17:\n // 4. 移除 loading\n loadingIdx = _this7.messages.findIndex(function (m) {\n return m.id === _this7.loadingId;\n });\n if (loadingIdx > -1) _this7.messages.splice(loadingIdx, 1);\n // 5. 添加回复 + 打字机\n replyId = _this7.baseId + 1;\n if (!isContinue) {\n _this7.messages.push({\n id: replyId,\n role: \"assistant\",\n type: \"text\",\n content: content,\n displayText: \"\",\n src: _this7.audioContext.src && _this7.$store.state.set.replyPattern === '1' ? JSON.parse(JSON.stringify(_this7.audioContext.src)) : null,\n duration: null\n });\n } else {\n _this7.audioContext.play();\n _this7.isPlayingVoice = true;\n }\n _this7.$nextTick(function () {\n return _this7.scrollToBottom();\n });\n _this7.typewriter(replyId, content);\n case 23:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n // 打印机效果,并清除加载动画\n typewriter: function typewriter(messageId, fullText) {\n var _this8 = this;\n var msg = this.messages.find(function (m) {\n return m.id === messageId;\n });\n if (!msg) return;\n // 清理之前的定时器(如果存在)\n if (this.typewriterTimers[messageId]) {\n clearInterval(this.typewriterTimers[messageId]);\n }\n var index = msg.displayText.length;\n msg.displayText = fullText.substring(0, index + 1);\n index += 1;\n var speed = 50; // 每个字符间隔50ms\n var timer = setInterval(function () {\n // 是否中断\n if (_this8.breakReplying) {\n clearInterval(timer);\n delete _this8.typewriterTimers[messageId];\n msg.isBreak = true;\n _this8.isReplying = false;\n _this8.breakReplying = false;\n _this8.isLoading = false;\n _this8.isPlayingVoice = false;\n _this8.audioContext.stop();\n _this8.scrollToBottom();\n }\n if (index < fullText.length) {\n msg.displayText = fullText.substring(0, index + 1);\n index++;\n _this8.scrollToBottom();\n } else {\n clearInterval(timer);\n delete _this8.typewriterTimers[messageId];\n // 完成后使用完整文本\n msg.displayText = fullText;\n _this8.isReplying = false;\n _this8.breakReplying = false;\n _this8.$nextTick(function () {\n _this8.scrollToBottom();\n });\n }\n }, speed);\n this.typewriterTimers[messageId] = timer;\n },\n // 滚动到底部\n scrollToBottom: function scrollToBottom() {\n var self = this;\n this.$nextTick(function () {\n uni.createSelectorQuery().select(\".content\").boundingClientRect(function (rect) {\n if (self.height !== rect.height) {\n self.height = rect.height;\n uni.pageScrollTo({\n scrollTop: rect.height,\n duration: 300,\n class: \".content\"\n });\n }\n }).exec();\n });\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbIkhJU1RPUllfS0VZIiwiY29tcG9uZW50cyIsInRvcCIsImZyb250IiwiY2hhdCIsImxlZnREcmF3ZXIiLCJzZWFyY2giLCJkYXRhIiwiaW5wdXRUZXh0IiwibWVzc2FnZXMiLCJoaXN0b3J5R3JvdXBzIiwiaXNMb2FkaW5nIiwidHlwZXdyaXRlclRpbWVycyIsInNob3ciLCJtYXJnaW5Cb3R0b20iLCJpc1JlcGx5aW5nIiwiYnJlYWtSZXBseWluZyIsInJlcGx5RGF0YSIsImlzUmVmcmVzaCIsImF1ZGlvQ29udGV4dCIsImlzUGxheWluZ1ZvaWNlIiwicGxheVNyYyIsImJyZWFrUmVxdWVzdExpc3QiLCJzcGVlY2hJZExpc3QiLCJ0ZXh0VG9Wb2ljZUxvYWRpbmciLCJpc0dldEFpTG9nb01zZyIsImFpTG9nb1JlY3QiLCJpc1Nob3dSaWdodExvZ28iLCJtb3VudGVkIiwibG9hZENoYXRIaXN0b3J5IiwidW5pIiwib25LZXlib2FyZEhlaWdodENoYW5nZSIsInJlcyIsInBhZ2VTY3JvbGxUbyIsInNjcm9sbFRvcCIsImhlaWdodCIsImR1cmF0aW9uIiwiY2xhc3MiLCIkbmV4dFRpY2siLCIkcmVmcyIsInNlYXJjaFJlZiIsImdldEhlaWdodCIsImluaXRBdWRpbyIsImJlZm9yZURlc3Ryb3kiLCJjbGVhclR5cGV3cml0ZXJUaW1lcnMiLCJtZXRob2RzIiwic3RhcnRSZWNvcmQiLCJzcmMiLCJzdG9wIiwiaGFuZGxlVm9pY2UiLCJwbGF5IiwiY3JlYXRlSW5uZXJBdWRpb0NvbnRleHQiLCJvbkNhbnBsYXkiLCJlIiwiaXRlbXMiLCJmaW5kIiwiaXRlbSIsIm9uRW5kZWQiLCJwbGF0Zm9ybSIsImdldFN5c3RlbUluZm9TeW5jIiwidW5pUGxhdGZvcm0iLCJyZW1vdmVGaWxlIiwiZ2V0U3BlZWNoIiwic3BlZWNoU3RyIiwic2VsZiIsInN0YXJ0VGltZSIsIkRhdGUiLCJub3ciLCJQcm9taXNlIiwicmVzb2x2ZSIsInRleHRUb1NwZWVjaCIsInRoZW4iLCJhdWRpb0RhdGEiLCJlbmRUaW1lIiwiYmxvYiIsIkJsb2IiLCJ0eXBlIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiYmFzZTY0QXVkaW8iLCJhcnJheUJ1ZmZlclRvQmFzZTY0IiwiYmFzZTY0V2l0aFByZWZpeCIsImZpbGVOYW1lIiwiYmFzZTY0VG9GaWxlIiwicGF0aCIsImVuZFRpbWUyIiwiY2F0Y2giLCJlcnIiLCJyZWZyZXNoIiwic3BsaWNlIiwibGVuZ3RoIiwiY29udGVudCIsIm9uU2VuZCIsImNvbnRpbnVlQ3JlYXRlIiwiaXNCcmVhayIsInJlcGx5QWN0aW9uIiwicHVzaCIsImlkIiwibG9hZGluZ0lkIiwicm9sZSIsImxvYWRpbmciLCJoYW5kbGVCcmVhayIsImxvYWRpbmdJZHgiLCJmaW5kSW5kZXgiLCJtIiwicmVwbHlJZCIsImJhc2VJZCIsImRpc3BsYXlUZXh0Iiwic2Nyb2xsVG9Cb3R0b20iLCJyZXNldE1lc3NhZ2UiLCJyZXF1ZXN0SWQiLCJzcGVlZElkIiwiT2JqZWN0IiwidmFsdWVzIiwiZm9yRWFjaCIsInRpbWVyIiwiY2xlYXJJbnRlcnZhbCIsImNoYW5nZUlucHV0VGV4dCIsInRleHQiLCJvcGVuRHJhd2VyIiwicG9wdXAiLCJvcGVuIiwib25IaXN0b3J5SXRlbVRhcCIsImNsb3NlIiwiY2hhbmdlU2hvdyIsInJlbW92ZUZyb21IaXN0b3J5IiwiZ3JvdXBzIiwiZ2V0U3RvcmFnZVN5bmMiLCJncm91cCIsImZpbHRlciIsImciLCJzZXRTdG9yYWdlU3luYyIsInVwZGF0ZWRBdCIsImNsZWFyQWxsSGlzdG9yeSIsInNob3dNb2RhbCIsInRpdGxlIiwic3VjY2VzcyIsImNvbmZpcm0iLCJyZW1vdmVTdG9yYWdlU3luYyIsInNob3dUb2FzdCIsImljb24iLCJmb3JtYXREYXRlIiwiZGF0ZSIsInkiLCJnZXRGdWxsWWVhciIsIlN0cmluZyIsImdldE1vbnRoIiwicGFkU3RhcnQiLCJkIiwiZ2V0RGF0ZSIsIkFycmF5IiwiaXNBcnJheSIsImFkZFRvSGlzdG9yeSIsInRvZGF5IiwidG9kYXlHcm91cCIsInVuc2hpZnQiLCJpbmNsdWRlcyIsInNsaWNlIiwib25RdWlja0FzayIsImlucHV0VHlwZSIsImlucHV0Q29udGVudCIsInVuZGVmaW5lZCIsInRyaW0iLCJnZXRBSVJlc3BvbnNlIiwibWVzc2FnZSIsInJlcGx5IiwicmVxdWVzdEluZGV4IiwiaXNDb250aW51ZSIsImVyck1zZyIsIiRzdG9yZSIsInN0YXRlIiwic2V0IiwicmVwbHlQYXR0ZXJuIiwic3BlZWNoSWQiLCJyZXN1bHQiLCJzcGVlY2hJbmRleCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsInR5cGV3cml0ZXIiLCJtZXNzYWdlSWQiLCJmdWxsVGV4dCIsIm1zZyIsImluZGV4Iiwic3Vic3RyaW5nIiwic3BlZWQiLCJzZXRJbnRlcnZhbCIsImNyZWF0ZVNlbGVjdG9yUXVlcnkiLCJzZWxlY3QiLCJib3VuZGluZ0NsaWVudFJlY3QiLCJyZWN0IiwiZXhlYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBMkJBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQU1BLFdBQVcsR0FBRyxxQkFBcUI7QUFBQyxlQWMzQjtFQUNkQyxVQUFVLEVBQUU7SUFDWEMsR0FBRyxFQUFIQSxlQUFHO0lBQ0hDLEtBQUssRUFBTEEsZUFBSztJQUNMQyxJQUFJLEVBQUpBLGVBQUk7SUFDSkMsVUFBVSxFQUFWQSxlQUFVO0lBQ1ZDLE1BQU0sRUFBTkE7RUFDRCxDQUFDO0VBQ0RDLElBQUksa0JBQUc7SUFDTixPQUFPO01BQ05DLFNBQVMsRUFBRSxFQUFFO01BQ2JDLFFBQVEsRUFBRSxFQUFFO01BQ1pDLGFB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O1VBQzFCLE1BQUksQ0FBQ3NCLFNBQVMsQ0FBQyxZQUFNO1lBQ3BCLE1BQUksQ0FBQ3VFLGNBQWMsRUFBRTtVQUN0QixDQUFDLENBQUM7UUFDSDtNQUNELENBQUMsRUFBRTZFLEtBQUssQ0FBQztNQUNULElBQUksQ0FBQzlLLGdCQUFnQixDQUFDeUssU0FBUyxDQUFDLEdBQUdqRSxLQUFLO0lBQ3pDLENBQUM7SUFDRDtJQUNBUCxjQUFjLDRCQUFHO01BQ2hCLElBQUk3QyxJQUFJLEdBQUcsSUFBSTtNQUNmLElBQUksQ0FBQzFCLFNBQVMsQ0FBQyxZQUFNO1FBQ3BCUixHQUFHLENBQ0Q4SixtQkFBbUIsRUFBRSxDQUNyQkMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUNsQkMsa0JBQWtCLENBQUMsVUFBQ0MsSUFBSSxFQUFLO1VBQzdCLElBQUkvSCxJQUFJLENBQUM3QixNQUFNLEtBQUs0SixJQUFJLENBQUM1SixNQUFNLEVBQUU7WUFDaEM2QixJQUFJLENBQUM3QixNQUFNLEdBQUc0SixJQUFJLENBQUM1SixNQUFNO1lBQ3pCTCxHQUFHLENBQUNHLFlBQVksQ0FBQztjQUNoQkMsU0FBUyxFQUFFNkosSUFBSSxDQUFDNUosTUFBTTtjQUN0QkMsUUFBUSxFQUFFLEdBQUc7Y0FDYkMsS0FBSyxFQUFFO1lBQ1IsQ0FBQyxDQUFDO1VBQ0g7UUFDRCxDQUFDLENBQUMsQ0FDRDJKLElBQUksRUFBRTtNQUNULENBQUMsQ0FBQztJQUNIO0VBQ0Q7QUFDRCxDQUFDO0FBQUEsMkIiLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5jb25zdCBISVNUT1JZX0tFWSA9IFwiY2hhdF9oaXN0b3J5X2dyb3Vwc1wiO1xuaW1wb3J0IHtcblx0Z2V0QUlSZXNwb25zZSxcbn0gZnJvbSBcIkAvYXBpL2luZGV4LmpzXCI7XG5pbXBvcnQge1xuXHR0ZXh0VG9TcGVlY2gsXG5cdGJhc2U2NFRvRmlsZSxcblx0cmVtb3ZlRmlsZVxufSBmcm9tICdAL3V0aWxzL3V0aWxzLmpzJ1xuaW1wb3J0IHRvcCBmcm9tIFwiLi90b3AvaW5kZXgudnVlXCI7XG5pbXBvcnQgZnJvbnQgZnJvbSBcIi4vZnJvbnQvaW5kZXgudnVlXCI7XG5pbXBvcnQgY2hhdCBmcm9tIFwiLi9jaGF0L2luZGV4LnZ1ZVwiO1xuaW1wb3J0IGxlZnREcmF3ZXIgZnJvbSBcIi4vbGVmdERyYXdlci9pbmRleC52dWVcIjtcbmltcG9ydCBzZWFyY2ggZnJvbSBcIi4vc2VhcmNoL2luZGV4LnZ1ZVwiO1xuZXhwb3J0IGRlZmF1bHQge1xuXHRjb21wb25lbnRzOiB7XG5cdFx0dG9wLFxuXHRcdGZyb250LFxuXHRcdGNoYXQsXG5cdFx0bGVmdERyYXdlcixcblx0XHRzZWFyY2hcblx0fSxcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0aW5wdXRUZXh0OiBcIlwiLFxuXHRcdFx0bWVzc2FnZXM6IFtdLFxuXHRcdFx0aGlzdG9yeUdyb3VwczogW10sXG5cdFx0XHRpc0xvYWRpbmc6IGZhbHNlLFxuXHRcdFx0dHlwZXdyaXRlclRpbWVyczoge30sXG5cdFx0XHRzaG93OiBmYWxzZSxcblx0XHRcdG1hcmdpbkJvdHRvbTogMCxcblx0XHRcdGlzUmVwbHlpbmc6IGZhbHNlLCAvLyDmmK/lkKbmraPlnKjlm57lpI1cblx0XHRcdGJyZWFrUmVwbHlpbmc6IGZhbHNlLCAvLyDmmK/lkKbmiZPmlq3lm57lpI1cblx0XHRcdHJlcGx5RGF0YToge30sIC8vIOWbnuWkjeaVsOaNrlxuXHRcdFx0aXNSZWZyZXNoOiBmYWxzZSwgLy8g5piv5ZCm6YeN5paw5Zue5aSNXG5cdFx0XHRhdWRpb0NvbnRleHQ6IG51bGwsXG5cdFx0XHRpc1BsYXlpbmdWb2ljZTogZmFsc2UsIC8vIOaYr+WQpuato+WcqOaSreaUvuivremfs1xuXHRcdFx0cGxheVNyYzogJycsXG5cdFx0XHRicmVha1JlcXVlc3RMaXN0OiBbXSxcblx0XHRcdHNwZWVjaElkTGlzdDogW10sXG5cdFx0XHR0ZXh0VG9Wb2ljZUxvYWRpbmc6IGZhbHNlLFxuXHRcdFx0aXNHZXRBaUxvZ29Nc2c6IGZhbHNlLFxuXHRcdFx0YWlMb2dvUmVjdDogbnVsbCxcblx0XHRcdGlzU2hvd1JpZ2h0TG9nbzogZmFsc2Vcblx0XHR9O1xuXHR9LFxuXHQvLyBvblBhZ2VTY3JvbGwoZSkge1xuXHQvLyBcdGlmICghdGhpcy5nZXRBaUxvZ29Nc2cpIHtcblx0Ly8gXHRcdHRoaXMuYWlMb2dvUmVjdCA9IHRoaXMuJHJlZnMuZnJvbnQuZ2V0QWlMb2dvTXNnKCk7XG5cdC8vIFx0XHR0aGlzLmdldEFpTG9nb01zZyA9IHRydWVcblx0Ly8gXHR9XG5cdC8vIFx0aWYgKCF0aGlzLmFpTG9nb1JlY3QpIHJldHVybjtcblx0Ly8gXHRpZiAoZS5zY3JvbGxUb3AgPiAodGhpcy5haUxvZ29SZWN0LnRvcCArIDEyKSkge1xuXHQvLyBcdFx0dGhpcy5pc1Nob3dSaWdodExvZ28gPSB0cnVlO1xuXHQvLyBcdH0gZWxzZSB7XG5cdC8vIFx0XHR0aGlzLmlzU2hvd1JpZ2h0TG9nbyA9IGZhbHNlO1xuXHQvLyBcdH1cblx0Ly8gfSxcblx0YXN5bmMgbW91bnRlZCgpIHtcblx0XHR0aGlzLmxvYWRDaGF0SGlzdG9yeSgpO1xuXHRcdHVuaS5vbktleWJvYXJkSGVpZ2h0Q2hhbmdlKChyZXMpID0+IHtcblx0XHRcdHVuaS5wYWdlU2Nyb2xsVG8oe1xuXHRcdFx0XHRzY3JvbGxUb3A6IHRoaXMuaGVpZ2h0ICsgcmVzLmhlaWdodCxcblx0XHRcdFx0ZHVyYXRpb246IDMwMCxcblx0XHRcdFx0Y2xhc3M6IFwiLmNvbnRlbnRcIixcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuXHRcdFx0dGhpcy5tYXJnaW5Cb3R0b20gPSB0aGlzLiRyZWZzLnNlYXJjaFJlZi5nZXRIZWlnaHQoKSB8fCAxMTI7XG5cdFx0fSk7XG5cblx0XHR0aGlzLm1hcmdpbkJvdHRvbSA9IDExMjtcblxuXHRcdHRoaXMuaW5pdEF1ZGlvKCk7XG5cdH0sXG5cdGJlZm9yZURlc3Ryb3koKSB7XG5cdFx0dGhpcy5jbGVhclR5cGV3cml0ZXJUaW1lcnMoKTtcblx0fSxcblx0bWV0aG9kczoge1xuXHRcdC8vIOW8gOWni+W9lemfs+WQjuaaguWBnOaSreaUvuivremfs1xuXHRcdHN0YXJ0UmVjb3JkKCkge1xuXHRcdFx0aWYgKHRoaXMuaXNQbGF5aW5nVm9pY2UgJiYgdGhpcy5hdWRpb0NvbnRleHQuc3JjKSB7XG5cdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnN0b3AoKTtcblx0XHRcdFx0dGhpcy5pc1BsYXlpbmdWb2ljZSA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Ly8g54K55Ye76K+t6Z+z5pKt5pS+5pqC5YGcXG5cdFx0aGFuZGxlVm9pY2Uoc3JjKSB7XG5cdFx0XHRpZiAoIXNyYykgcmV0dXJuO1xuXHRcdFx0aWYgKHRoaXMuYXVkaW9Db250ZXh0LnNyYyA9PT0gc3JjICYmIHRoaXMuaXNQbGF5aW5nVm9pY2UpIHtcblx0XHRcdFx0dGhpcy5pc1BsYXlpbmdWb2ljZSA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLmF1ZGlvQ29udGV4dC5zdG9wKCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH07XG5cdFx0XHRpZiAodGhpcy5hdWRpb0NvbnRleHQuc3JjID09PSBzcmMgJiYgIXRoaXMuaXNQbGF5aW5nVm9pY2UpIHtcblx0XHRcdFx0dGhpcy5pc1BsYXlpbmdWb2ljZSA9IHRydWU7XG5cdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnBsYXkoKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fTtcblx0XHRcdGlmICh0aGlzLmlzUGxheWluZ1ZvaWNlKSB7XG5cdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnN0b3AoKTtcblx0XHRcdH07XG5cdFx0XHR0aGlzLmlzUGxheWluZ1ZvaWNlID0gdHJ1ZTtcblx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnNyYyA9IHNyYztcblx0XHRcdHRoaXMucGxheVNyYyA9IHNyYztcblx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnBsYXkoKTtcblx0XHR9LFxuXHRcdC8vIOWIneWni+WMluivremfs+WKn+iDve+8jCDlt7Lnu4/or63pn7Ppg6jliIbnm5HlkKxcblx0XHRpbml0QXVkaW8oKSB7XG5cdFx0XHR0aGlzLmF1ZGlvQ29udGV4dCA9IHVuaS5jcmVhdGVJbm5lckF1ZGlvQ29udGV4dCgpXG5cdFx0XHR0aGlzLmF1ZGlvQ29udGV4dC5vbkNhbnBsYXkoKGUpID0+IHtcblx0XHRcdFx0bGV0IGl0ZW1zID0gdGhpcy5tZXNzYWdlcy5maW5kKGl0ZW0gPT4gaXRlbS5zcmMgJiYgaXRlbS5zcmMgPT09IHRoaXMuYXVkaW9Db250ZXh0LnNyYyk7XG5cdFx0XHRcdGlmICghaXRlbXMpIHJldHVybjtcblx0XHRcdFx0aXRlbXMuZHVyYXRpb24gPSB0aGlzLmF1ZGlvQ29udGV4dC5kdXJhdGlvbjtcblx0XHRcdFx0Ly8gdGhpcy5pc1BsYXlpbmdWb2ljZSA9IHRydWU7XG5cdFx0XHRcdC8vIHRoaXMuYXVkaW9Db250ZXh0LnBsYXkoKVxuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLmF1ZGlvQ29udGV4dC5vbkVuZGVkKHJlcyA9PiB7XG5cdFx0XHRcdHRoaXMuaXNQbGF5aW5nVm9pY2UgPSBmYWxzZVxuXHRcdFx0XHRjb25zdCBwbGF0Zm9ybSA9IHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnVuaVBsYXRmb3JtO1xuXHRcdFx0XHRpZihwbGF0Zm9ybSA9PT0gJ3dlYicpIHJldHVybjtcblx0XHRcdFx0cmVtb3ZlRmlsZSh0aGlzLmF1ZGlvQ29udGV4dC5zcmMpXG5cdFx0XHR9KVxuXHRcdH0sXG5cdFx0Ly8g5aSE55CG55m+5bqm6L+U5ZueYXJyYXlidWZm5qC85byP55qE6K+t6Z+zXG5cdFx0Z2V0U3BlZWNoKHNwZWVjaFN0cikge1xuXHRcdFx0bGV0IHNlbGYgPSB0aGlzO1xuXHRcdFx0dGhpcy50ZXh0VG9Wb2ljZUxvYWRpbmcgPSB0cnVlO1xuXHRcdFx0bGV0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdFx0dGV4dFRvU3BlZWNoKHNwZWVjaFN0cikudGhlbihhdWRpb0RhdGEgPT4ge1xuXHRcdFx0XHRcdGxldCBlbmRUaW1lID0gRGF0ZS5ub3coKTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygn6K+t6Z+z5ZCI5oiQ6ICX5pe2OicsIGVuZFRpbWUgLSBzdGFydFRpbWUsICdtcycpO1xuXHRcdFx0XHRcdGNvbnN0IHBsYXRmb3JtID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKCkudW5pUGxhdGZvcm07XG5cdFx0XHRcdFx0Ly8gSDXnq6/lpITnkIZcblx0XHRcdFx0XHRpZiAocGxhdGZvcm0gPT09ICd3ZWInKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBibG9iID0gbmV3IEJsb2IoW2F1ZGlvRGF0YV0sIHtcblx0XHRcdFx0XHRcdFx0dHlwZTogJ2F1ZGlvL21wMydcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0Y29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblx0XHRcdFx0XHRcdHRoaXMucGxheVNyYyA9IHVybDtcblx0XHRcdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnNyYyA9IHVybDtcblx0XHRcdFx0XHRcdHRoaXMudGV4dFRvVm9pY2VMb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKHRydWUpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIEFwcOerr+WSjOWwj+eoi+W6j+err+WkhOeQhlxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgYmFzZTY0QXVkaW8gPSB1bmkuYXJyYXlCdWZmZXJUb0Jhc2U2NChhdWRpb0RhdGEpO1xuXHRcdFx0XHRcdFx0Y29uc3QgYmFzZTY0V2l0aFByZWZpeCA9IGBkYXRhOmF1ZGlvL21wMztiYXNlNjQsJHtiYXNlNjRBdWRpb31gO1xuXHRcdFx0XHRcdFx0Y29uc3QgZmlsZU5hbWUgPSBgX2RvYy8ke0RhdGUubm93KCl9X251bWJlclBlcnNvbi5tcDNgO1xuXHRcdFx0XHRcdFx0YmFzZTY0VG9GaWxlKGJhc2U2NFdpdGhQcmVmaXgsIGZpbGVOYW1lLCAocGF0aCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRzZWxmLnBsYXlTcmMgPSBwYXRoO1xuXHRcdFx0XHRcdFx0XHRzZWxmLnRleHRUb1ZvaWNlTG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRzZWxmLmF1ZGlvQ29udGV4dC5zcmMgPSBwYXRoO1xuXHRcdFx0XHRcdFx0XHRsZXQgZW5kVGltZTIgPSBEYXRlLm5vdygpO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn6K+t6Z+z5LiL6L295Yiw5omL5py66ICX5pe2OicsIGVuZFRpbWUyIC0gc3RhcnRUaW1lLCAnbXMnKTtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaChlcnIgPT4ge1xuXHRcdFx0XHRcdHJlc29sdmUodHJ1ZSlcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cblx0XHR9LFxuXHRcdC8vIOmHjeaWsOWbnuWkjVxuXHRcdHJlZnJlc2goKSB7XG5cdFx0XHR0aGlzLm1lc3NhZ2VzLnNwbGljZSh0aGlzLm1lc3NhZ2VzLmxlbmd0aCAtIDEsIDEpO1xuXHRcdFx0dGhpcy5pbnB1dFRleHQgPSB0aGlzLm1lc3NhZ2VzW3RoaXMubWVzc2FnZXMubGVuZ3RoIC0gMV0uY29udGVudDtcblx0XHRcdHRoaXMuaXNSZWZyZXNoID0gdHJ1ZTtcblx0XHRcdHRoaXMub25TZW5kKCk7XG5cdFx0fSxcblx0XHQvLyDnu6fnu63nlJ/miJBcblx0XHRjb250aW51ZUNyZWF0ZSgpIHtcblx0XHRcdHRoaXMuYnJlYWtSZXBseWluZyA9IGZhbHNlO1xuXHRcdFx0dGhpcy5pc1JlcGx5aW5nID0gdHJ1ZTtcblx0XHRcdGlmICghdGhpcy5pc0xvYWRpbmcpIHtcblx0XHRcdFx0dGhpcy5tZXNzYWdlc1t0aGlzLm1lc3NhZ2VzLmxlbmd0aCAtIDFdLmlzQnJlYWsgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5yZXBseUFjdGlvbih0aGlzLnJlcGx5RGF0YSwgdHJ1ZSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMubWVzc2FnZXMuc3BsaWNlKHRoaXMubWVzc2FnZXMubGVuZ3RoIC0gMSwgMSk7XG5cdFx0XHRcdHRoaXMubWVzc2FnZXMucHVzaCh7XG5cdFx0XHRcdFx0aWQ6IHRoaXMubG9hZGluZ0lkLFxuXHRcdFx0XHRcdHJvbGU6IFwiYXNzaXN0YW50XCIsXG5cdFx0XHRcdFx0bG9hZGluZzogdHJ1ZSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvLyDkuK3mlq3lm57lpI1cblx0XHRoYW5kbGVCcmVhaygpIHtcblx0XHRcdGNvbnNvbGUubG9nKCdoYW5kbGVCcmVhaycpO1xuXHRcdFx0aWYgKHRoaXMuaXNMb2FkaW5nKSB7XG5cdFx0XHRcdGNvbnN0IGxvYWRpbmdJZHggPSB0aGlzLm1lc3NhZ2VzLmZpbmRJbmRleCgobSkgPT4gbS5pZCA9PT0gdGhpcy5sb2FkaW5nSWQpO1xuXHRcdFx0XHRpZiAobG9hZGluZ0lkeCA+IC0xKSB0aGlzLm1lc3NhZ2VzLnNwbGljZShsb2FkaW5nSWR4LCAxKTtcblx0XHRcdFx0Ly8gNS4g5re75Yqg5Zue5aSNICsg5omT5a2X5py6XG5cdFx0XHRcdGNvbnN0IHJlcGx5SWQgPSB0aGlzLmJhc2VJZCArIDE7XG5cdFx0XHRcdHRoaXMubWVzc2FnZXMucHVzaCh7XG5cdFx0XHRcdFx0aWQ6IHJlcGx5SWQsXG5cdFx0XHRcdFx0cm9sZTogXCJhc3Npc3RhbnRcIixcblx0XHRcdFx0XHR0eXBlOiBcInRleHRcIixcblx0XHRcdFx0XHRjb250ZW50OiAnJyxcblx0XHRcdFx0XHRkaXNwbGF5VGV4dDogXCLlt7LlgZzmraJcIixcblx0XHRcdFx0XHRpc0JyZWFrOiB0cnVlXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLmlzUmVwbHlpbmcgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5icmVha1JlcGx5aW5nID0gdHJ1ZTtcblx0XHR9LFxuXHRcdC8vIOaWsOW7uuWvueivnVxuXHRcdHJlc2V0TWVzc2FnZSgpIHtcblx0XHRcdGlmICh0aGlzLm1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXHRcdFx0aWYgKHRoaXMuaXNMb2FkaW5nKSB7XG5cdFx0XHRcdHRoaXMuYnJlYWtSZXF1ZXN0TGlzdC5wdXNoKHtcblx0XHRcdFx0XHRyZXF1ZXN0SWQ6IHRoaXMucmVxdWVzdElkXG5cdFx0XHRcdH0pO1xuXHRcdFx0fTtcblx0XHRcdGlmICh0aGlzLnRleHRUb1ZvaWNlTG9hZGluZykge1xuXHRcdFx0XHR0aGlzLnNwZWVjaElkTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRzcGVlZElkOiB0aGlzLnNwZWVkSWRcblx0XHRcdFx0fSlcblx0XHRcdH07XG5cdFx0XHRpZiAodGhpcy5pc1BsYXlpbmdWb2ljZSkge1xuXHRcdFx0XHR0aGlzLmlzUGxheWluZ1ZvaWNlID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnN0b3AoKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuY2xlYXJUeXBld3JpdGVyVGltZXJzKCk7XG5cdFx0XHR0aGlzLmlzUmVwbHlpbmcgPSBmYWxzZTtcblx0XHRcdHRoaXMubWVzc2FnZXMgPSBbXTtcblx0XHR9LFxuXHRcdC8vIOa4heeQhuaJgOacieaJk+Wtl+acuuWumuaXtuWZqFxuXHRcdGNsZWFyVHlwZXdyaXRlclRpbWVycygpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGhpcy50eXBld3JpdGVyVGltZXJzKS5mb3JFYWNoKCh0aW1lcikgPT4ge1xuXHRcdFx0XHRpZiAodGltZXIpIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnR5cGV3cml0ZXJUaW1lcnMgPSB7fTtcblx0XHR9LFxuXHRcdC8vIOS/ruaUuei+k+WFpeahhuaWh+acrFxuXHRcdGNoYW5nZUlucHV0VGV4dCh0ZXh0KSB7XG5cdFx0XHR0aGlzLmlucHV0VGV4dCA9IHRleHQ7XG5cdFx0fSxcblx0XHQvL+aJk+W8gOWOhuWPsuiusOW9lVxuXHRcdG9wZW5EcmF3ZXIoKSB7XG5cdFx0XHR0aGlzLiRyZWZzLnBvcHVwLm9wZW4oKTtcblx0XHR9LFxuXHRcdC8vIOeCueWHu+WOhuWPsuiusOW9leaQnOe0olxuXHRcdG9uSGlzdG9yeUl0ZW1UYXAodGV4dCkge1xuXHRcdFx0dGhpcy5pbnB1dFRleHQgPSB0ZXh0O1xuXHRcdFx0dGhpcy5vblNlbmQoKTtcblx0XHRcdHRoaXMuJHJlZnMucG9wdXAuY2xvc2UoKTtcblx0XHR9LFxuXHRcdC8vIOiBiuWkqemhtemdouemgeatoua7muWKqFxuXHRcdGNoYW5nZVNob3coZSkge1xuXHRcdFx0dGhpcy5zaG93ID0gZTtcblx0XHR9LFxuXHRcdC8vICDliKDpmaTljoblj7LorrDlvZVcblx0XHRyZW1vdmVGcm9tSGlzdG9yeSh0ZXh0KSB7XG5cdFx0XHRsZXQgZ3JvdXBzID0gdW5pLmdldFN0b3JhZ2VTeW5jKEhJU1RPUllfS0VZKT8uZ3JvdXBzIHx8IFtdO1xuXHRcdFx0Z3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG5cdFx0XHRcdGdyb3VwLml0ZW1zID0gZ3JvdXAuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSB0ZXh0KTtcblx0XHRcdH0pO1xuXHRcdFx0Z3JvdXBzID0gZ3JvdXBzLmZpbHRlcigoZykgPT4gZy5pdGVtcy5sZW5ndGggPiAwKTtcblx0XHRcdHRoaXMuaGlzdG9yeUdyb3VwcyA9IGdyb3Vwcztcblx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYyhISVNUT1JZX0tFWSwge1xuXHRcdFx0XHRncm91cHMsXG5cdFx0XHRcdHVwZGF0ZWRBdDogRGF0ZS5ub3coKSxcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0Ly8gIOa4hemZpOWFqOmDqOWOhuWPsuiusOW9lVxuXHRcdGNsZWFyQWxsSGlzdG9yeSgpIHtcblx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHR0aXRsZTogXCLmuIXpmaTlhajpg6hcIixcblx0XHRcdFx0Y29udGVudDogXCLlsIbliKDpmaTmiYDmnInlr7nor53orrDlvZXvvIzmraTmk43kvZzkuI3lj6/mgaLlpI1cIixcblx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdGlmIChyZXMuY29uZmlybSkge1xuXHRcdFx0XHRcdFx0dW5pLnJlbW92ZVN0b3JhZ2VTeW5jKEhJU1RPUllfS0VZKTtcblx0XHRcdFx0XHRcdHRoaXMuaGlzdG9yeUdyb3VwcyA9IFtdO1xuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuW3sua4hemZpFwiLFxuXHRcdFx0XHRcdFx0XHRpY29uOiBcInN1Y2Nlc3NcIixcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHRmb3JtYXREYXRlKGRhdGUpIHtcblx0XHRcdGNvbnN0IHkgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG5cdFx0XHRjb25zdCBtID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsIFwiMFwiKTtcblx0XHRcdGNvbnN0IGQgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsIFwiMFwiKTtcblx0XHRcdHJldHVybiBgJHt5feW5tCR7bX3mnIgke2R95pelYDtcblx0XHR9LFxuXHRcdC8vIOWKoOi9veWOhuWPsuiusOW9lVxuXHRcdGxvYWRDaGF0SGlzdG9yeSgpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoSElTVE9SWV9LRVkpO1xuXHRcdFx0XHRpZiAoZGF0YSAmJiBBcnJheS5pc0FycmF5KGRhdGEuZ3JvdXBzKSkge1xuXHRcdFx0XHRcdHRoaXMuaGlzdG9yeUdyb3VwcyA9IGRhdGEuZ3JvdXBzO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuaGlzdG9yeUdyb3VwcyA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHRoaXMuaGlzdG9yeUdyb3VwcyA9IFtdO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Ly8g5re75Yqg5Y6G5Y+y6K6w5b2VXG5cdFx0YWRkVG9IaXN0b3J5KHRleHQpIHtcblx0XHRcdGxldCBncm91cHMgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoSElTVE9SWV9LRVkpPy5ncm91cHMgfHwgW107XG5cdFx0XHRjb25zdCB0b2RheSA9IHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKTtcblx0XHRcdGxldCB0b2RheUdyb3VwID0gZ3JvdXBzLmZpbmQoKGcpID0+IGcuZGF0ZSA9PT0gdG9kYXkpO1xuXG5cdFx0XHRpZiAoIXRvZGF5R3JvdXApIHtcblx0XHRcdFx0dG9kYXlHcm91cCA9IHtcblx0XHRcdFx0XHRkYXRlOiB0b2RheSxcblx0XHRcdFx0XHRpdGVtczogW10sXG5cdFx0XHRcdH07XG5cdFx0XHRcdGdyb3Vwcy51bnNoaWZ0KHRvZGF5R3JvdXApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIXRvZGF5R3JvdXAuaXRlbXMuaW5jbHVkZXModGV4dCkpIHtcblx0XHRcdFx0dG9kYXlHcm91cC5pdGVtcy51bnNoaWZ0KHRleHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyDpmZDliLblpKflsI9cblx0XHRcdGlmICh0b2RheUdyb3VwLml0ZW1zLmxlbmd0aCA+IDUwKVxuXHRcdFx0XHR0b2RheUdyb3VwLml0ZW1zID0gdG9kYXlHcm91cC5pdGVtcy5zbGljZSgwLCA1MCk7XG5cdFx0XHRpZiAoZ3JvdXBzLmxlbmd0aCA+IDMwKSBncm91cHMgPSBncm91cHMuc2xpY2UoMCwgMzApO1xuXG5cdFx0XHR0aGlzLmhpc3RvcnlHcm91cHMgPSBncm91cHM7XG5cdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoSElTVE9SWV9LRVksIHtcblx0XHRcdFx0Z3JvdXBzLFxuXHRcdFx0XHR1cGRhdGVkQXQ6IERhdGUubm93KCksXG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdC8vIOW/q+mAn+aPkOmXrlxuXHRcdG9uUXVpY2tBc2sodGV4dCkge1xuXHRcdFx0dGhpcy5pbnB1dFRleHQgPSB0ZXh0O1xuXHRcdFx0dGhpcy5vblNlbmQoKTtcblx0XHR9LFxuXHRcdC8vIOWPkemAgea2iOaBr1xuXHRcdGFzeW5jIG9uU2VuZChpbnB1dFR5cGUgPSBcInRleHRcIiwgaW5wdXRDb250ZW50ID0gXCJcIiwgZHVyYXRpb24gPSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICh0aGlzLmlzUmVwbHlpbmcpIHJldHVybjtcblx0XHRcdGNvbnN0IHRleHQgPSAodGhpcy5pbnB1dFRleHQgfHwgXCJcIikudHJpbSgpO1xuXHRcdFx0aWYgKCF0ZXh0IHx8IHRoaXMuaXNMb2FkaW5nKSByZXR1cm47XG5cdFx0XHR0aGlzLmJhc2VJZCA9IERhdGUubm93KCk7XG5cdFx0XHRpZiAoIXRoaXMuaXNSZWZyZXNoKSB7XG5cdFx0XHRcdC8vIDEuIOeUqOaIt+a2iOaBr1xuXHRcdFx0XHR0aGlzLm1lc3NhZ2VzLnB1c2goe1xuXHRcdFx0XHRcdGlkOiB0aGlzLmJhc2VJZCxcblx0XHRcdFx0XHRyb2xlOiBcInVzZXJcIixcblx0XHRcdFx0XHR0eXBlOiBcInRleHRcIixcblx0XHRcdFx0XHRjb250ZW50OiB0ZXh0LFxuXHRcdFx0XHRcdGlucHV0VHlwZTogdHlwZW9mIGlucHV0VHlwZSA9PT0gXCJzdHJpbmdcIiA/IGlucHV0VHlwZSA6IFwidGV4dFwiLFxuXHRcdFx0XHRcdGlucHV0Q29udGVudCxcblx0XHRcdFx0XHRkdXJhdGlvbixcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHQvLyAyLiBsb2FkaW5nIOa2iOaBr1xuXHRcdFx0dGhpcy5sb2FkaW5nSWQgPSB0aGlzLmJhc2VJZCArIDAuNTtcblx0XHRcdHRoaXMubWVzc2FnZXMucHVzaCh7XG5cdFx0XHRcdGlkOiB0aGlzLmxvYWRpbmdJZCxcblx0XHRcdFx0cm9sZTogXCJhc3Npc3RhbnRcIixcblx0XHRcdFx0bG9hZGluZzogdHJ1ZSxcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5pbnB1dFRleHQgPSBcIlwiO1xuXHRcdFx0dGhpcy5pc1JlcGx5aW5nID0gdHJ1ZTtcblx0XHRcdHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcblx0XHRcdHRoaXMuaXNSZWZyZXNoID0gZmFsc2U7XG5cdFx0XHR0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG5cdFx0XHR0aGlzLmFkZFRvSGlzdG9yeSh0ZXh0KTtcblx0XHRcdGlmICh0aGlzLmlzUGxheWluZ1ZvaWNlKSB7XG5cdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnN0b3AoKTtcblx0XHRcdFx0dGhpcy5pc1BsYXlpbmdWb2ljZSA9IGZhbHNlO1xuXHRcdFx0fTtcblx0XHRcdGxldCByZXF1ZXN0SWQgPSBEYXRlLm5vdygpO1xuXHRcdFx0dGhpcy5yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7XG5cdFx0XHQvLyAzLiDnnJ/mraPnrYnlvoUgQUkg5Zue5aSNXG5cdFx0XHRjb25zdCByZXBseSA9IGF3YWl0IGdldEFJUmVzcG9uc2Uoe1xuXHRcdFx0XHRtZXNzYWdlOiB0ZXh0LFxuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0bGV0IHJlcXVlc3RJbmRleCA9IHRoaXMuYnJlYWtSZXF1ZXN0TGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnJlcXVlc3RJZCA9PT0gcmVxdWVzdElkKVxuXHRcdFx0aWYgKHJlcXVlc3RJbmRleCA+IC0xKSB7XG5cdFx0XHRcdHRoaXMuYnJlYWtSZXF1ZXN0TGlzdCA9IHRoaXMuYnJlYWtSZXF1ZXN0TGlzdC5zcGxpY2UocmVxdWVzdEluZGV4LCAtMSlcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5yZXBseURhdGEgPSByZXBseTtcblx0XHRcdGlmICh0aGlzLmJyZWFrUmVwbHlpbmcpIHtcblx0XHRcdFx0dGhpcy5icmVha1JlcGx5aW5nID0gZmFsc2U7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRoaXMucmVwbHlBY3Rpb24ocmVwbHkpXG5cdFx0fSxcblx0XHRhc3luYyByZXBseUFjdGlvbihyZXBseSwgaXNDb250aW51ZSkge1xuXHRcdFx0bGV0IGNvbnRlbnQgPSAnJ1xuXHRcdFx0Ly8g5Yik5pat6K+35rGC5piv5ZCm5Ye66ZSZXG5cdFx0XHRpZiAocmVwbHkuZXJyTXNnKSB7XG5cdFx0XHRcdGNvbnRlbnQgPSBg6K+35rGC5Ye66ZSZOiAke3JlcGx5LmVyck1zZ31gXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb250ZW50ID0gcmVwbHk7XG5cdFx0XHR9O1xuXHRcdFx0bGV0IHJlc3VsdFxuXHRcdFx0aWYgKHRoaXMuJHN0b3JlLnN0YXRlLnNldC5yZXBseVBhdHRlcm4gPT09ICcxJyAmJiAhdGhpcy5tZXNzYWdlc1t0aGlzLm1lc3NhZ2VzLmxlbmd0aCAtIDFdLnNyYyAmJiAhXG5cdFx0XHRcdHJlcGx5LmVyck1zZykge1xuXHRcdFx0XHRsZXQgc3BlZWNoSWQgPSBEYXRlLm5vdygpO1xuXHRcdFx0XHR0aGlzLnNwZWVjaElkID0gc3BlZWNoSWQ7XG5cdFx0XHRcdHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0U3BlZWNoKHJlcGx5KTtcblx0XHRcdH07XG5cdFx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRcdGxldCBzcGVlY2hJbmRleCA9IHRoaXMuc3BlZWNoSWRMaXN0LmZpbmRJbmRleChpdGVtID0+IGl0ZW0uc3BlZWNoSWQgPT09IHNwZWVjaElkKVxuXHRcdFx0XHRpZiAoc3BlZWNoSW5kZXggPiAtMSkge1xuXHRcdFx0XHRcdHRoaXMuc3BlZWNoSWRMaXN0ID0gdGhpcy5zcGVlY2hJZExpc3Quc3BsaWNlKHNwZWVjaEluZGV4LCAtMSlcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRcdHRoaXMuaXNQbGF5aW5nVm9pY2UgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnBsYXkoKTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdC8vIDQuIOenu+mZpCBsb2FkaW5nXG5cdFx0XHRjb25zdCBsb2FkaW5nSWR4ID0gdGhpcy5tZXNzYWdlcy5maW5kSW5kZXgoKG0pID0+IG0uaWQgPT09IHRoaXMubG9hZGluZ0lkKTtcblx0XHRcdGlmIChsb2FkaW5nSWR4ID4gLTEpIHRoaXMubWVzc2FnZXMuc3BsaWNlKGxvYWRpbmdJZHgsIDEpO1xuXHRcdFx0Ly8gNS4g5re75Yqg5Zue5aSNICsg5omT5a2X5py6XG5cdFx0XHRjb25zdCByZXBseUlkID0gdGhpcy5iYXNlSWQgKyAxO1xuXHRcdFx0aWYgKCFpc0NvbnRpbnVlKSB7XG5cdFx0XHRcdHRoaXMubWVzc2FnZXMucHVzaCh7XG5cdFx0XHRcdFx0aWQ6IHJlcGx5SWQsXG5cdFx0XHRcdFx0cm9sZTogXCJhc3Npc3RhbnRcIixcblx0XHRcdFx0XHR0eXBlOiBcInRleHRcIixcblx0XHRcdFx0XHRjb250ZW50LFxuXHRcdFx0XHRcdGRpc3BsYXlUZXh0OiBcIlwiLFxuXHRcdFx0XHRcdHNyYzogKHRoaXMuYXVkaW9Db250ZXh0LnNyYyAmJiB0aGlzLiRzdG9yZS5zdGF0ZS5zZXQucmVwbHlQYXR0ZXJuID09PSAnMScpID8gSlNPTlxuXHRcdFx0XHRcdFx0LnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuYXVkaW9Db250ZXh0LnNyYykpIDogbnVsbCxcblx0XHRcdFx0XHRkdXJhdGlvbjogbnVsbFxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnBsYXkoKTtcblx0XHRcdFx0dGhpcy5pc1BsYXlpbmdWb2ljZSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB0aGlzLnNjcm9sbFRvQm90dG9tKCkpO1xuXHRcdFx0dGhpcy50eXBld3JpdGVyKHJlcGx5SWQsIGNvbnRlbnQpO1xuXHRcdH0sXG5cdFx0Ly8g5omT5Y2w5py65pWI5p6c77yM5bm25riF6Zmk5Yqg6L295Yqo55S7XG5cdFx0dHlwZXdyaXRlcihtZXNzYWdlSWQsIGZ1bGxUZXh0KSB7XG5cdFx0XHRjb25zdCBtc2cgPSB0aGlzLm1lc3NhZ2VzLmZpbmQoKG0pID0+IG0uaWQgPT09IG1lc3NhZ2VJZCk7XG5cdFx0XHRpZiAoIW1zZykgcmV0dXJuO1xuXHRcdFx0Ly8g5riF55CG5LmL5YmN55qE5a6a5pe25Zmo77yI5aaC5p6c5a2Y5Zyo77yJXG5cdFx0XHRpZiAodGhpcy50eXBld3JpdGVyVGltZXJzW21lc3NhZ2VJZF0pIHtcblx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLnR5cGV3cml0ZXJUaW1lcnNbbWVzc2FnZUlkXSk7XG5cdFx0XHR9XG5cdFx0XHRsZXQgaW5kZXggPSBtc2cuZGlzcGxheVRleHQubGVuZ3RoO1xuXHRcdFx0bXNnLmRpc3BsYXlUZXh0ID0gZnVsbFRleHQuc3Vic3RyaW5nKDAsIGluZGV4ICsgMSk7XG5cdFx0XHRpbmRleCArPSAxO1xuXHRcdFx0Y29uc3Qgc3BlZWQgPSA1MDsgLy8g5q+P5Liq5a2X56ym6Ze06ZqUNTBtc1xuXHRcdFx0Y29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRcdC8vIOaYr+WQpuS4reaWrVxuXHRcdFx0XHRpZiAodGhpcy5icmVha1JlcGx5aW5nKSB7XG5cdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aW1lcik7XG5cdFx0XHRcdFx0ZGVsZXRlIHRoaXMudHlwZXdyaXRlclRpbWVyc1ttZXNzYWdlSWRdO1xuXHRcdFx0XHRcdG1zZy5pc0JyZWFrID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLmlzUmVwbHlpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHR0aGlzLmJyZWFrUmVwbHlpbmcgPSBmYWxzZVxuXHRcdFx0XHRcdHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdFx0dGhpcy5pc1BsYXlpbmdWb2ljZSA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMuYXVkaW9Db250ZXh0LnN0b3AoKTtcblx0XHRcdFx0XHR0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGluZGV4IDwgZnVsbFRleHQubGVuZ3RoKSB7XG5cdFx0XHRcdFx0bXNnLmRpc3BsYXlUZXh0ID0gZnVsbFRleHQuc3Vic3RyaW5nKDAsIGluZGV4ICsgMSk7XG5cdFx0XHRcdFx0aW5kZXgrKztcblx0XHRcdFx0XHR0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aW1lcik7XG5cdFx0XHRcdFx0ZGVsZXRlIHRoaXMudHlwZXdyaXRlclRpbWVyc1ttZXNzYWdlSWRdO1xuXHRcdFx0XHRcdC8vIOWujOaIkOWQjuS9v+eUqOWujOaVtOaWh+acrFxuXHRcdFx0XHRcdG1zZy5kaXNwbGF5VGV4dCA9IGZ1bGxUZXh0O1xuXHRcdFx0XHRcdHRoaXMuaXNSZXBseWluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMuYnJlYWtSZXBseWluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMuJG5leHRUaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgc3BlZWQpO1xuXHRcdFx0dGhpcy50eXBld3JpdGVyVGltZXJzW21lc3NhZ2VJZF0gPSB0aW1lcjtcblx0XHR9LFxuXHRcdC8vIOa7muWKqOWIsOW6lemDqFxuXHRcdHNjcm9sbFRvQm90dG9tKCkge1xuXHRcdFx0bGV0IHNlbGYgPSB0aGlzO1xuXHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuXHRcdFx0XHR1bmlcblx0XHRcdFx0XHQuY3JlYXRlU2VsZWN0b3JRdWVyeSgpXG5cdFx0XHRcdFx0LnNlbGVjdChcIi5jb250ZW50XCIpXG5cdFx0XHRcdFx0LmJvdW5kaW5nQ2xpZW50UmVjdCgocmVjdCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHNlbGYuaGVpZ2h0ICE9PSByZWN0LmhlaWdodCkge1xuXHRcdFx0XHRcdFx0XHRzZWxmLmhlaWdodCA9IHJlY3QuaGVpZ2h0O1xuXHRcdFx0XHRcdFx0XHR1bmkucGFnZVNjcm9sbFRvKHtcblx0XHRcdFx0XHRcdFx0XHRzY3JvbGxUb3A6IHJlY3QuaGVpZ2h0LFxuXHRcdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAzMDAsXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M6IFwiLmNvbnRlbnRcIixcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuZXhlYygpO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0fSxcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///17\n"); /***/ }), /* 18 */ @@ -2081,7 +2078,10 @@ var render = function () { "view", { staticClass: _vm._$s(1, "sc", "greet-card"), attrs: { _i: 1 } }, [ - _c("image", { attrs: { _i: 2 } }), + _c("image", { + staticClass: _vm._$s(2, "sc", "ai-image"), + attrs: { _i: 2 }, + }), _c( "view", { staticClass: _vm._$s(3, "sc", "greet-text"), attrs: { _i: 3 } }, @@ -2170,7 +2170,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBu /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n data: function data() {\n return {\n guessData: [{\n id: 1,\n label: \"今日出入库数据\"\n }, {\n id: 2,\n label: \"今日销售数据\"\n }, {\n id: 3,\n label: \"今日生产数据\"\n }]\n };\n },\n computed: {\n timeOfDayText: function timeOfDayText() {\n var h = new Date().getHours();\n if (h < 6) return \"凌晨好\";\n if (h < 12) return \"上午好\";\n if (h < 18) return \"下午好\";\n return \"晚上好\";\n }\n },\n methods: {\n onSuggestionTap: function onSuggestionTap(text) {\n this.$emit('onSuggestionTap', text);\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvZnJvbnQvaW5kZXgudnVlIl0sIm5hbWVzIjpbImRhdGEiLCJndWVzc0RhdGEiLCJpZCIsImxhYmVsIiwiY29tcHV0ZWQiLCJ0aW1lT2ZEYXlUZXh0IiwibWV0aG9kcyIsIm9uU3VnZ2VzdGlvblRhcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUE4QkE7RUFDQUE7SUFDQTtNQUNBQztRQUNBQztRQUNBQztNQUNBLEdBQ0E7UUFDQUQ7UUFDQUM7TUFDQSxHQUNBO1FBQ0FEO1FBQ0FDO01BQ0E7SUFFQTtFQUNBO0VBQ0FDO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQUM7TUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBIiwiZmlsZSI6IjUyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3PlxyXG5cdFx0PCEtLSBncmVldGluZyBjYXJkIC0tPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJncmVldC1jYXJkXCI+XHJcblx0XHRcdDxpbWFnZSBzcmM9XCJAL3N0YXRpYy9haS53ZWJwXCIgbW9kZT1cIndpZHRoRml4XCIgc3R5bGU9XCJ3aWR0aDogNjBweDsgbWFyZ2luLXJpZ2h0OiAxMHB4XCI+PC9pbWFnZT5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJncmVldC10ZXh0XCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoaVwiPkhJ77yMe3sgdGltZU9mRGF5VGV4dCB9fTwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInN1YlwiPuaIkeaYr+iQg+aYn+enkeaKgOaZuuiDveS9kzwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cclxuXHRcdDwhLS0gd2VsY29tZSBzZW50ZW5jZSAtLT5cclxuXHRcdDx2aWV3IGNsYXNzPVwid2VsY29tZVwiPlxyXG5cdFx0XHTmgqjlpb3vvIHpnZ7luLjpq5jlhbTkuI7mgqjkuqTmtYHvvIzku4rlpKnmnInku4DkuYjlj6/ku6XluK7liLDmgqjvvJ9cclxuXHRcdDwvdmlldz5cclxuXHJcblx0XHQ8IS0tIHN1Z2dlc3Rpb25zIC0tPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJndWVzcy1wYW5lbFwiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImd1ZXNzLXRpdGxlXCI+54yc5L2g5oOz6ZeuPC92aWV3PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImd1ZXNzLWxpc3RcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImd1ZXNzLWl0ZW1cIiBAdGFwPVwib25TdWdnZXN0aW9uVGFwKGl0ZW0ubGFiZWwpXCIgdi1mb3I9XCJpdGVtIGluIGd1ZXNzRGF0YVwiIDprZXk9XCJpdGVtLmlkXCI+XHJcblx0XHRcdFx0XHQ8dGV4dD57eyBpdGVtLmxhYmVsIH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJhcnJvd1wiPuKAujwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0Z3Vlc3NEYXRhOiBbe1xyXG5cdFx0XHRcdFx0XHRpZDogMSxcclxuXHRcdFx0XHRcdFx0bGFiZWw6IFwi5LuK5pel5Ye65YWl5bqT5pWw5o2uXCIsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRpZDogMixcclxuXHRcdFx0XHRcdFx0bGFiZWw6IFwi5LuK5pel6ZSA5ZSu5pWw5o2uXCIsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRpZDogMyxcclxuXHRcdFx0XHRcdFx0bGFiZWw6IFwi5LuK5pel55Sf5Lqn5pWw5o2uXCIsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdF1cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGNvbXB1dGVkOiB7XHJcblx0XHRcdHRpbWVPZkRheVRleHQoKSB7XHJcblx0XHRcdFx0Y29uc3QgaCA9IG5ldyBEYXRlKCkuZ2V0SG91cnMoKTtcclxuXHRcdFx0XHRpZiAoaCA8IDYpIHJldHVybiBcIuWHjOaZqOWlvVwiO1xyXG5cdFx0XHRcdGlmIChoIDwgMTIpIHJldHVybiBcIuS4iuWNiOWlvVwiO1xyXG5cdFx0XHRcdGlmIChoIDwgMTgpIHJldHVybiBcIuS4i+WNiOWlvVwiO1xyXG5cdFx0XHRcdHJldHVybiBcIuaZmuS4iuWlvVwiO1xyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0b25TdWdnZXN0aW9uVGFwKHRleHQpIHtcclxuXHRcdFx0XHR0aGlzLiRlbWl0KCdvblN1Z2dlc3Rpb25UYXAnLCB0ZXh0KVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcblx0LmdyZWV0LWNhcmQge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRiYWNrZ3JvdW5kOiAjZmZmO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMTRweDtcclxuXHRcdHBhZGRpbmc6IDEycHg7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5cdH1cclxuXHJcblx0LmdyZWV0LXRleHQgLmhpIHtcclxuXHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XHJcblx0XHRjb2xvcjogIzBiNTZmZjtcclxuXHR9XHJcblxyXG5cdC5ncmVldC10ZXh0IC5zdWIge1xyXG5cdFx0Zm9udC1zaXplOiAxMnB4O1xyXG5cdFx0Y29sb3I6ICM0YTc2YjE7XHJcblx0XHRtYXJnaW4tdG9wOiA0cHg7XHJcblx0fVxyXG5cclxuXHQud2VsY29tZSB7XHJcblx0XHRmb250LXNpemU6IDEzcHg7XHJcblx0XHRjb2xvcjogIzMzMztcclxuXHRcdGJhY2tncm91bmQ6ICNmZmY7XHJcblx0XHRib3JkZXItcmFkaXVzOiAxMnB4O1xyXG5cdFx0cGFkZGluZzogMTBweCAxMnB4O1xyXG5cdFx0bWFyZ2luOiAxMnB4IDA7XHJcblx0fVxyXG5cclxuXHQuZ3Vlc3MtcGFuZWwge1xyXG5cdFx0YmFja2dyb3VuZDogI2ZmZjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDE0cHg7XHJcblx0XHRwYWRkaW5nOiAxMHB4O1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcclxuXHR9XHJcblxyXG5cdC5ndWVzcy10aXRsZSB7XHJcblx0XHRjb2xvcjogIzVmNmZmZjtcclxuXHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDhweDtcclxuXHR9XHJcblxyXG5cdC5ndWVzcy1saXN0IHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdH1cclxuXHJcblx0Lmd1ZXNzLWl0ZW0ge1xyXG5cdFx0YmFja2dyb3VuZDogI2Y3ZjhmYztcclxuXHRcdGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcblx0XHRwYWRkaW5nOiAxMnB4O1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHR9XHJcblxyXG5cdC5ndWVzcy1pdGVtOmxhc3QtY2hpbGQge1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHR9XHJcblxyXG5cdC5ndWVzcy1pdGVtIC5hcnJvdyB7XHJcblx0XHRjb2xvcjogIzlhYTNiMjtcclxuXHRcdGZvbnQtc2l6ZTogMThweDtcclxuXHR9XHJcbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///52\n"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n data: function data() {\n return {\n guessData: [{\n id: 1,\n label: \"今日出入库数据\"\n }, {\n id: 2,\n label: \"今日销售数据\"\n }, {\n id: 3,\n label: \"今日生产数据\"\n }],\n aiLogoMsg: null\n };\n },\n computed: {\n timeOfDayText: function timeOfDayText() {\n var h = new Date().getHours();\n if (h < 6) return \"凌晨好\";\n if (h < 12) return \"上午好\";\n if (h < 18) return \"下午好\";\n return \"晚上好\";\n }\n },\n mounted: function mounted() {\n var self = this;\n uni.createSelectorQuery().select(\".ai-image\").boundingClientRect(function (rect) {\n self.aiLogoMsg = rect;\n }).exec();\n },\n methods: {\n onSuggestionTap: function onSuggestionTap(text) {\n this.$emit('onSuggestionTap', text);\n },\n getAiLogoMsg: function getAiLogoMsg() {\n return this.aiLogoMsg;\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvZnJvbnQvaW5kZXgudnVlIl0sIm5hbWVzIjpbImRhdGEiLCJndWVzc0RhdGEiLCJpZCIsImxhYmVsIiwiYWlMb2dvTXNnIiwiY29tcHV0ZWQiLCJ0aW1lT2ZEYXlUZXh0IiwibW91bnRlZCIsInVuaSIsInNlbGYiLCJtZXRob2RzIiwib25TdWdnZXN0aW9uVGFwIiwiZ2V0QWlMb2dvTXNnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQThCQTtFQUNBQTtJQUNBO01BQ0FDO1FBQ0FDO1FBQ0FDO01BQ0EsR0FDQTtRQUNBRDtRQUNBQztNQUNBLEdBQ0E7UUFDQUQ7UUFDQUM7TUFDQSxFQUNBO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBQztNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQUM7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7RUFFQTtBQUNBO0FBQUEiLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblx0PHZpZXc+XHJcblx0XHQ8IS0tIGdyZWV0aW5nIGNhcmQgLS0+XHJcblx0XHQ8dmlldyBjbGFzcz1cImdyZWV0LWNhcmRcIj5cclxuXHRcdFx0PGltYWdlIGNsYXNzPVwiYWktaW1hZ2VcIiBzcmM9XCJAL3N0YXRpYy9haS53ZWJwXCIgbW9kZT1cIndpZHRoRml4XCIgc3R5bGU9XCJ3aWR0aDogNjBweDsgbWFyZ2luLXJpZ2h0OiAxMHB4XCI+PC9pbWFnZT5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJncmVldC10ZXh0XCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoaVwiPkhJ77yMe3sgdGltZU9mRGF5VGV4dCB9fTwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInN1YlwiPuaIkeaYr+iQg+aYn+enkeaKgOaZuuiDveS9kzwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cclxuXHRcdDwhLS0gd2VsY29tZSBzZW50ZW5jZSAtLT5cclxuXHRcdDx2aWV3IGNsYXNzPVwid2VsY29tZVwiPlxyXG5cdFx0XHTmgqjlpb3vvIHpnZ7luLjpq5jlhbTkuI7mgqjkuqTmtYHvvIzku4rlpKnmnInku4DkuYjlj6/ku6XluK7liLDmgqjvvJ9cclxuXHRcdDwvdmlldz5cclxuXHJcblx0XHQ8IS0tIHN1Z2dlc3Rpb25zIC0tPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJndWVzcy1wYW5lbFwiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImd1ZXNzLXRpdGxlXCI+54yc5L2g5oOz6ZeuPC92aWV3PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImd1ZXNzLWxpc3RcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImd1ZXNzLWl0ZW1cIiBAdGFwPVwib25TdWdnZXN0aW9uVGFwKGl0ZW0ubGFiZWwpXCIgdi1mb3I9XCJpdGVtIGluIGd1ZXNzRGF0YVwiIDprZXk9XCJpdGVtLmlkXCI+XHJcblx0XHRcdFx0XHQ8dGV4dD57eyBpdGVtLmxhYmVsIH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJhcnJvd1wiPuKAujwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0Z3Vlc3NEYXRhOiBbe1xyXG5cdFx0XHRcdFx0XHRpZDogMSxcclxuXHRcdFx0XHRcdFx0bGFiZWw6IFwi5LuK5pel5Ye65YWl5bqT5pWw5o2uXCIsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRpZDogMixcclxuXHRcdFx0XHRcdFx0bGFiZWw6IFwi5LuK5pel6ZSA5ZSu5pWw5o2uXCIsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRpZDogMyxcclxuXHRcdFx0XHRcdFx0bGFiZWw6IFwi5LuK5pel55Sf5Lqn5pWw5o2uXCIsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdF0sXHJcblx0XHRcdFx0YWlMb2dvTXNnIDogbnVsbFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6IHtcclxuXHRcdFx0dGltZU9mRGF5VGV4dCgpIHtcclxuXHRcdFx0XHRjb25zdCBoID0gbmV3IERhdGUoKS5nZXRIb3VycygpO1xyXG5cdFx0XHRcdGlmIChoIDwgNikgcmV0dXJuIFwi5YeM5pmo5aW9XCI7XHJcblx0XHRcdFx0aWYgKGggPCAxMikgcmV0dXJuIFwi5LiK5Y2I5aW9XCI7XHJcblx0XHRcdFx0aWYgKGggPCAxOCkgcmV0dXJuIFwi5LiL5Y2I5aW9XCI7XHJcblx0XHRcdFx0cmV0dXJuIFwi5pma5LiK5aW9XCI7XHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0bW91bnRlZCgpe1xyXG5cdFx0XHRsZXQgc2VsZiA9IHRoaXM7XHJcblx0XHRcdHVuaS5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuc2VsZWN0KFwiLmFpLWltYWdlXCIpLmJvdW5kaW5nQ2xpZW50UmVjdCgocmVjdCkgPT4ge1xyXG5cdFx0XHRcdHNlbGYuYWlMb2dvTXNnID0gcmVjdFxyXG5cdFx0XHR9KS5leGVjKCk7XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRvblN1Z2dlc3Rpb25UYXAodGV4dCkge1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoJ29uU3VnZ2VzdGlvblRhcCcsIHRleHQpXHJcblx0XHRcdH0sXHJcblx0XHRcdGdldEFpTG9nb01zZygpIHtcdFx0XHRcdFxyXG5cdFx0XHRcdHJldHVybiB0aGlzLmFpTG9nb01zZztcclxuXHRcdFx0fVxyXG5cdFx0XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcblx0LmdyZWV0LWNhcmQge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNFRkY2RkYsICNFRUYyRkYpO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMTRweDtcclxuXHRcdHBhZGRpbmc6IDEycHg7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5cdH1cclxuXHJcblx0LmdyZWV0LXRleHQgLmhpIHtcclxuXHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XHJcblx0XHRjb2xvcjogIzBiNTZmZjtcclxuXHR9XHJcblxyXG5cdC5ncmVldC10ZXh0IC5zdWIge1xyXG5cdFx0Zm9udC1zaXplOiAxMnB4O1xyXG5cdFx0Y29sb3I6ICM0YTc2YjE7XHJcblx0XHRtYXJnaW4tdG9wOiA0cHg7XHJcblx0fVxyXG5cclxuXHQud2VsY29tZSB7XHJcblx0XHRmb250LXNpemU6IDEzcHg7XHJcblx0XHRjb2xvcjogIzMzMztcclxuXHRcdGJhY2tncm91bmQ6ICNGM0Y3Rjk7XHJcblx0XHRib3JkZXItcmFkaXVzOiAxMnB4O1xyXG5cdFx0cGFkZGluZzogMTBweCAxMnB4O1xyXG5cdFx0bWFyZ2luOiAxMnB4IDA7XHJcblx0XHRtYXgtd2lkdGg6IDgwJTtcclxuXHR9XHJcblxyXG5cdC5ndWVzcy1wYW5lbCB7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNFRkY2RkYsICNFRUYyRkYpO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMTRweDtcclxuXHRcdHBhZGRpbmc6IDEwcHg7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xyXG5cdH1cclxuXHJcblx0Lmd1ZXNzLXRpdGxlIHtcclxuXHRcdGNvbG9yOiAjNWY2ZmZmO1xyXG5cdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogOHB4O1xyXG5cdH1cclxuXHJcblx0Lmd1ZXNzLWxpc3Qge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0fVxyXG5cclxuXHQuZ3Vlc3MtaXRlbSB7XHJcblx0XHRiYWNrZ3JvdW5kOiAjRkZGRkZGIDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcblx0XHRwYWRkaW5nOiAxMnB4O1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHR9XHJcblxyXG5cdC5ndWVzcy1pdGVtOmxhc3QtY2hpbGQge1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHR9XHJcblxyXG5cdC5ndWVzcy1pdGVtIC5hcnJvdyB7XHJcblx0XHRjb2xvcjogIzlhYTNiMjtcclxuXHRcdGZvbnQtc2l6ZTogMThweDtcclxuXHR9XHJcbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///52\n"); /***/ }), /* 53 */ @@ -2338,7 +2338,7 @@ var render = function () { _vm._$s( "7-" + $30, "i", - m.role !== "user" && m.type !== "card" && !m.loading + m.role !== "user" && m.type !== "card" && !m.loading && m.src ) ? _c( "view", @@ -3190,7 +3190,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBu /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _utils = __webpack_require__(/*! @/utils/utils.js */ 26);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default2 = {\n props: {\n messages: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n isReplying: {\n type: Boolean,\n default: false\n },\n isPlayingVoice: {\n type: Boolean,\n default: false\n },\n playSrc: {\n type: String,\n default: ''\n }\n },\n data: function data() {\n return {\n upvoteImage: __webpack_require__(/*! @/static/upvote.png */ 77),\n upvoteHighLightImage: __webpack_require__(/*! @/static/upvote-highlight.png */ 78),\n leftVoiceImgList: [{\n image: __webpack_require__(/*! @/static/voice-play-left1.png */ 79)\n }, {\n image: __webpack_require__(/*! @/static/voice-play-left2.png */ 80)\n }, {\n image: __webpack_require__(/*! @/static/voice-play-left3.png */ 81)\n }],\n current: 2,\n textToolList: [{\n id: 1,\n text: '复制',\n imageUrl: __webpack_require__(/*! @/static/copy.png */ 82)\n }, {\n id: 2,\n text: '修改',\n imageUrl: __webpack_require__(/*! @/static/edit.png */ 83)\n }],\n isHighLight: false,\n upvoteIndex: null,\n quickAskList: [{\n id: 1,\n label: '数据不准确'\n }, {\n id: 2,\n label: '没有帮助'\n }, {\n id: 3,\n label: '其他'\n }],\n askActive: null,\n textToolStyle: {},\n isOpenTextTool: false,\n showTool: false,\n screenWidth: 0,\n selectText: '',\n voiceTimer: null\n };\n },\n mounted: function mounted() {\n this.screenWidth = uni.getSystemInfoSync().screenWidth;\n },\n watch: {\n isPlayingVoice: function isPlayingVoice(val) {\n var _this = this;\n if (val) {\n this.voiceTimer = setInterval(function () {\n if (_this.current === 2) {\n _this.current = -1;\n }\n _this.current += 1;\n }, 500);\n } else {\n if (this.voiceTimer) {\n clearInterval(this.voiceTimer);\n }\n ;\n this.current = 2;\n }\n }\n },\n methods: {\n clickAiVocie: function clickAiVocie(src) {\n this.$emit('handleVoice', src);\n },\n selectTextTool: function selectTextTool(id) {\n switch (id) {\n case 1:\n (0, _utils.copyText)(this.selectText);\n break;\n case 2:\n this.$emit('changeInputText', this.selectText);\n default:\n break;\n }\n this.closeTool();\n },\n closeTool: function closeTool() {\n this.showTool = false;\n this.isOpenTextTool = false;\n this.$emit('changeShow', false);\n },\n loadTool: function loadTool($event, m) {\n var _this2 = this;\n this.selectText = m.content;\n uni.createSelectorQuery().select(\"#msg-\".concat(m.id)).boundingClientRect(function (rect) {\n var height = rect.height || 0;\n if ($event.touches[0].pageX > _this2.screenWidth / 2) {\n _this2.textToolStyle = {\n top: $event.target.offsetTop + height - 10 + 'px',\n right: _this2.screenWidth - Math.ceil($event.touches[0].pageX) + 'px'\n };\n } else {\n _this2.textToolStyle = {\n top: $event.target.offsetTop + height - 10 + 'px',\n left: Math.ceil($event.touches[0].pageX) + 'px'\n };\n }\n _this2.isOpenTextTool = true;\n _this2.$emit('changeShow', true);\n // 确保DOM更新后再触发动画\n _this2.$nextTick(function () {\n _this2.showTool = true;\n });\n }).exec();\n },\n changeShow: function changeShow(e) {\n this.$emit('changeShow', e.show);\n },\n selectAsk: function selectAsk(id) {\n this.askActive = id;\n },\n continueCreate: function continueCreate() {\n this.$emit('continueCreate');\n },\n refresh: function refresh() {\n this.isHighLight = false;\n this.upvoteIndex = null;\n this.$emit('refresh');\n },\n upvote: function upvote() {\n if (this.upvoteIndex !== 0) {\n this.isHighLight = true;\n } else {\n this.isHighLight = !this.isHighLight;\n }\n this.upvoteIndex = 0;\n if (this.isHighLight) {\n uni.showToast({\n title: '反馈成功',\n icon: 'none',\n duration: 1500\n });\n }\n },\n unUpvote: function unUpvote() {\n if (this.upvoteIndex !== 1) {\n this.$refs.popup.open();\n }\n if (!this.isHighLight) {\n this.$refs.popup.open();\n } else {\n this.isHighLight = !this.isHighLight;\n }\n this.upvoteIndex = 1;\n },\n submitFeedback: function submitFeedback() {\n this.$refs.popup.close();\n this.isHighLight = true;\n uni.showToast({\n title: '反馈成功',\n icon: 'none',\n duration: 1500\n });\n },\n closeFeedback: function closeFeedback() {\n this.$refs.popup.close();\n this.isHighLight = false;\n },\n playVoice: function playVoice(voicePath) {\n __f__(\"log\", 'voicePath', voicePath, \" at pages/index/chat/index.vue:278\");\n // if (!voicePath) {\n // \tuni.showToast({\n // \t\ttitle: \"无可播放的语音\",\n // \t\ticon: \"none\",\n // \t});\n // \treturn;\n // }\n // if (!this.innerAudioContext) {\n // \tthis.innerAudioContext = uni.createInnerAudioContext();\n // \tthis.innerAudioContext.autoplay = false;\n // \tthis.innerAudioContext.onError(() => {\n // \t\tuni.showToast({\n // \t\t\ttitle: \"播放失败\",\n // \t\t\ticon: \"none\",\n // \t\t});\n // \t});\n // }\n // try {\n // \tthis.innerAudioContext.stop();\n // } catch (e) {}\n // this.innerAudioContext.src = voicePath;\n // this.innerAudioContext.play();\n }\n }\n};\nexports.default = _default2;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvY2hhdC9pbmRleC52dWUiXSwibmFtZXMiOlsicHJvcHMiLCJtZXNzYWdlcyIsInR5cGUiLCJkZWZhdWx0IiwiaXNSZXBseWluZyIsImlzUGxheWluZ1ZvaWNlIiwicGxheVNyYyIsImRhdGEiLCJ1cHZvdGVJbWFnZSIsInVwdm90ZUhpZ2hMaWdodEltYWdlIiwibGVmdFZvaWNlSW1nTGlzdCIsImltYWdlIiwiY3VycmVudCIsInRleHRUb29sTGlzdCIsImlkIiwidGV4dCIsImltYWdlVXJsIiwiaXNIaWdoTGlnaHQiLCJ1cHZvdGVJbmRleCIsInF1aWNrQXNrTGlzdCIsImxhYmVsIiwiYXNrQWN0aXZlIiwidGV4dFRvb2xTdHlsZSIsImlzT3BlblRleHRUb29sIiwic2hvd1Rvb2wiLCJzY3JlZW5XaWR0aCIsInNlbGVjdFRleHQiLCJ2b2ljZVRpbWVyIiwibW91bnRlZCIsIndhdGNoIiwiY2xlYXJJbnRlcnZhbCIsIm1ldGhvZHMiLCJjbGlja0FpVm9jaWUiLCJzZWxlY3RUZXh0VG9vbCIsImNsb3NlVG9vbCIsImxvYWRUb29sIiwidW5pIiwidG9wIiwicmlnaHQiLCJsZWZ0IiwiY2hhbmdlU2hvdyIsInNlbGVjdEFzayIsImNvbnRpbnVlQ3JlYXRlIiwicmVmcmVzaCIsInVwdm90ZSIsInRpdGxlIiwiaWNvbiIsImR1cmF0aW9uIiwidW5VcHZvdGUiLCJzdWJtaXRGZWVkYmFjayIsImNsb3NlRmVlZGJhY2siLCJwbGF5Vm9pY2UiXSwibWFwcGluZ3MiOiI7Ozs7OztBQXdGQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFHQTtFQUNBQTtJQUNBQztNQUNBQztNQUNBQztRQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBRjtNQUNBQztJQUNBO0lBQ0FFO01BQ0FIO01BQ0FDO0lBQ0E7SUFDQUc7TUFDQUo7TUFDQUM7SUFDQTtFQUNBO0VBQ0FJO0lBQ0E7TUFDQUM7TUFDQUM7TUFDQUM7UUFDQUM7TUFDQTtRQUNBQTtNQUNBO1FBQ0FBO01BQ0E7TUFDQUM7TUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7TUFDQTtRQUNBRjtRQUNBQztRQUNBQztNQUNBO01BQ0FDO01BQ0FDO01BQ0FDO1FBQ0FMO1FBQ0FNO01BQ0EsR0FDQTtRQUNBTjtRQUNBTTtNQUNBLEdBQ0E7UUFDQU47UUFDQU07TUFDQSxFQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0VBRUE7RUFDQUM7SUFDQXhCO01BQUE7TUFDQTtRQUNBO1VBQ0E7WUFDQTtVQUNBO1VBQ0E7UUFDQTtNQUNBO1FBQ0E7VUFDQXlCO1FBQ0E7UUFBQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO1FBQ0E7VUFDQTtVQUNBO1FBQ0E7VUFDQTtRQUNBO1VBQ0E7TUFBQTtNQUVBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUFBO01BQ0E7TUFDQUM7UUFDQTtRQUNBO1VBQ0E7WUFDQUM7WUFDQUM7VUFDQTtRQUNBO1VBQ0E7WUFDQUQ7WUFDQUU7VUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7VUFDQTtRQUNBO01BQ0E7SUFFQTtJQUNBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQVI7VUFDQVM7VUFDQUM7VUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBO01BQ0E7TUFDQTtRQUNBO01BQ0E7UUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQWI7UUFDQVM7UUFDQUM7UUFDQUM7TUFDQTtJQUNBO0lBQ0FHO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBLDRCIiwiZmlsZSI6Ijc2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY2hhdFwiPlxyXG5cdFx0PHZpZXcgdi1mb3I9XCIobSxpbmRleCkgaW4gbWVzc2FnZXNcIiA6a2V5PVwibS5pZFwiIDppZD1cIidtc2ctJyArIG0uaWRcIiA6Y2xhc3M9XCJbJ21zZycsIG0ucm9sZV1cIj5cclxuXHRcdFx0PHZpZXcgdi1pZj1cIm0ucm9sZSA9PT0gJ3VzZXInXCIgY2xhc3M9XCJidWJibGUgdXNlci1idWJibGVcIj5cclxuXHRcdFx0XHQ8dGV4dCB2LWlmPVwibS5pbnB1dFR5cGUgPT09ICd0ZXh0J1wiIEBsb25ncHJlc3MucHJldmVudD1cImxvYWRUb29sKCRldmVudCxtKVwiPnt7IG0uY29udGVudCB9fTwvdGV4dD5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInRleHQtdm9pY2VcIiB2LWlmPVwibS5pbnB1dFR5cGUgPT09ICd2b2ljZSdcIiBAdGFwPVwicGxheVZvaWNlKG0pXCI+XHJcblx0XHRcdFx0XHQ8dGV4dD57eyBtLmR1cmF0aW9uIH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwidm9pY2UtcGxheVwiIHNyYz1cIkAvc3RhdGljL3ZvaWNlLXBsYXkucG5nXCIgbW9kZT1cIndpZHRoRml4XCI+PC9pbWFnZT5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHJcblx0XHRcdDx2aWV3IHYtaWY9XCJtLnJvbGUgIT09ICd1c2VyJyAmJiBtLnR5cGUgIT09ICdjYXJkJyAmJiAhbS5sb2FkaW5nIFwiIGNsYXNzPVwiYWktdm9pY2VcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYWktdm9pY2UtcGxheVwiIEB0YXA9XCJjbGlja0FpVm9jaWUobS5zcmMpXCI+XHJcblx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJ2b2ljZS1wbGF5XCIgOnNyYz1cImxlZnRWb2ljZUltZ0xpc3RbY3VycmVudF0uaW1hZ2VcIiBtb2RlPVwid2lkdGhGaXhcIlxyXG5cdFx0XHRcdFx0XHQgdi1pZj1cInBsYXlTcmMgPT09IG0uc3JjXCI+XHJcblx0XHRcdFx0XHQ8L2ltYWdlPlxyXG5cdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwidm9pY2UtcGxheVwiIDpzcmM9XCJsZWZ0Vm9pY2VJbWdMaXN0WzJdLmltYWdlXCIgbW9kZT1cIndpZHRoRml4XCJcclxuXHRcdFx0XHRcdFx0IHYtZWxzZT5cclxuXHRcdFx0XHRcdDwvaW1hZ2U+XHJcblx0XHRcdFx0XHQ8dGV4dFxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7Zm9udC1zaXplOiAxNHB4O1wiPnt7IG0uZHVyYXRpb24gPyBNYXRoLmNlaWwoIG0uZHVyYXRpb24pIDogMCB9fVwiPC90ZXh0PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cclxuXHRcdFx0PHZpZXcgdi1pZj1cIm0ucm9sZSAhPT0gJ3VzZXInXCIgY2xhc3M9XCJidWJibGUgYWktYnViYmxlXCI+XHJcblx0XHRcdFx0PHZpZXcgdi1pZj1cIm0udHlwZSA9PT0gJ2NhcmQnXCIgY2xhc3M9XCJhaS1jYXJkXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImFpLWNhcmQtdGl0bGVcIj57eyBtLnRpdGxlIH19PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJhaS1jYXJkLWJvZHlcIj57eyBtLmNvbnRlbnQgfX08L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IHYtZWxzZS1pZj1cIm0ubG9hZGluZ1wiIGNsYXNzPVwiYWktbG9hZGluZ1wiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJsb2FkaW5nLWRvdFwiPjwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibG9hZGluZy1kb3RcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImxvYWRpbmctZG90XCI+PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyB2LWVsc2U+XHJcblx0XHRcdFx0XHQ8dGV4dD57e1xyXG4gICAgICAgICAgICBtLmRpc3BsYXlUZXh0ICE9PSB1bmRlZmluZWQgPyBtLmRpc3BsYXlUZXh0IDogbS5jb250ZW50XHJcbiAgICAgICAgICB9fTwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiY29udGludWUtY3JlYXRlXCIgdi1pZj1cIm0uaXNCcmVhayAmJiBpbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMVwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGV4dFwiIEB0YXA9XCJjb250aW51ZUNyZWF0ZVwiPlxyXG5cdFx0XHRcdFx057un57ut55Sf5oiQIOKGklxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8IS0tIHVwdm90ZS1oaWdobGlnaHQgLS0+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ0b29sLWJveFwiIHYtaWY9XCIhaXNSZXBseWluZyAmJiBpbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMSAmJiBtLnJvbGUgPT09ICdhc3Npc3RhbnQnXCI+XHJcblx0XHRcdFx0PGltYWdlIGNsYXNzPVwidG9vbC1pbWFnZVwiIHNyYz1cIkAvc3RhdGljL3JlZnJlc2gucG5nXCIgbW9kZT1cIndpZHRoRml4XCIgQHRhcD1cInJlZnJlc2hcIj48L2ltYWdlPlxyXG5cdFx0XHRcdDxpbWFnZSBjbGFzcz1cInRvb2wtaW1hZ2VcIlxyXG5cdFx0XHRcdFx0OnNyYz1cImlzSGlnaExpZ2h0ID8gKHVwdm90ZUluZGV4ID09PSAwID8gdXB2b3RlSGlnaExpZ2h0SW1hZ2UgOiB1cHZvdGVJbWFnZSkgOiB1cHZvdGVJbWFnZVwiXHJcblx0XHRcdFx0XHRtb2RlPVwid2lkdGhGaXhcIiBAdGFwPVwidXB2b3RlXCI+PC9pbWFnZT5cclxuXHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJ0b29sLWltYWdlIHJvdGVcIlxyXG5cdFx0XHRcdFx0OnNyYz1cImlzSGlnaExpZ2h0ID8gKHVwdm90ZUluZGV4ID09PSAxID8gdXB2b3RlSGlnaExpZ2h0SW1hZ2UgOiB1cHZvdGVJbWFnZSkgOiB1cHZvdGVJbWFnZVwiXHJcblx0XHRcdFx0XHRtb2RlPVwid2lkdGhGaXhcIiBAdGFwPVwidW5VcHZvdGVcIj48L2ltYWdlPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblxyXG5cdFx0PHZpZXcgY2xhc3M9XCJ0ZXh0LXRvb2xcIiA6Y2xhc3M9XCJ7J3Nob3cnOiBzaG93VG9vbH1cIiA6c3R5bGU9XCJ0ZXh0VG9vbFN0eWxlXCIgdi1pZj1cImlzT3BlblRleHRUb29sXCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidG9vbC1pdGVtXCIgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIHRleHRUb29sTGlzdFwiIDprZXk9XCJpdGVtLmlkXCJcclxuXHRcdFx0XHQ6c3R5bGU9XCJ7YW5pbWF0aW9uRGVsYXk6IGluZGV4ICogMC4wNSArICdzJ31cIiBAdGFwPVwic2VsZWN0VGV4dFRvb2woaXRlbS5pZClcIj5cclxuXHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJpbWdcIiA6c3JjPVwiaXRlbS5pbWFnZVVybFwiIG1vZGU9XCJ3aWR0aEZpeFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0ZXh0XCI+e3tpdGVtLnRleHR9fTwvdGV4dD5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cclxuXHRcdDx2aWV3IGNsYXNzPVwibWFyay1sYXllclwiIHYtaWY9XCJpc09wZW5UZXh0VG9vbFwiIEB0b3VjaHN0YXJ0PVwiY2xvc2VUb29sXCI+PC92aWV3PlxyXG5cclxuXHRcdDx1bmktcG9wdXAgcmVmPVwicG9wdXBcIiB0eXBlPVwiYm90dG9tXCIgY2xhc3M9XCJwb3B1cFwiIEBjaGFuZ2U9XCJjaGFuZ2VTaG93XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiZmVlZGJhY2tcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInRvcFwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aXRsZVwiPuWPjemmiDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiY2xvc2VcIiBAdGFwPVwiY2xvc2VGZWVkYmFja1wiPsOXPC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInF1aWNrLWFza1wiPlxyXG5cdFx0XHRcdFx0PHZpZXcgOmNsYXNzPVwiWydhc2snLGl0ZW0uaWQgPT09IGFza0FjdGl2ZSA/ICdhY3RpdmUnIDogJyddXCIgdi1mb3I9XCJpdGVtIGluIHF1aWNrQXNrTGlzdFwiXHJcblx0XHRcdFx0XHRcdDprZXk9XCJpdGVtLmlkXCIgQHRhcD1cInNlbGVjdEFzayhpdGVtLmlkKVwiPnt7aXRlbS5sYWJlbH19PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldz5cclxuXHRcdFx0XHRcdDx0ZXh0YXJlYSBjbGFzcz1cInRleHRhcmVhXCIgcGxhY2Vob2xkZXI9XCLmiJHku6zmg7Pnn6XpgZPkvaDlr7nmraTlm57nrZTkuI3mu6HmhI/nmoTljp/lm6DvvIzkvaDorqTkuLrmm7Tlpb3nmoTlm57nrZTmmK/ku4DkuYjvvJ9cIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7XCIgQHRhcD1cInN1Ym1pdEZlZWRiYWNrXCI+5o+Q5LqkPC9idXR0b24+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdW5pLXBvcHVwPlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHtcclxuXHRcdGNvcHlUZXh0XHJcblx0fSBmcm9tICdAL3V0aWxzL3V0aWxzLmpzJ1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdHByb3BzOiB7XHJcblx0XHRcdG1lc3NhZ2VzOiB7XHJcblx0XHRcdFx0dHlwZTogQXJyYXksXHJcblx0XHRcdFx0ZGVmYXVsdCAoKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gW107XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdFx0aXNSZXBseWluZzoge1xyXG5cdFx0XHRcdHR5cGU6IEJvb2xlYW4sXHJcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2UsXHJcblx0XHRcdH0sXHJcblx0XHRcdGlzUGxheWluZ1ZvaWNlOiB7XHJcblx0XHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZSxcclxuXHRcdFx0fSxcclxuXHRcdFx0cGxheVNyYyA6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJycsXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHR1cHZvdGVJbWFnZTogcmVxdWlyZSgnQC9zdGF0aWMvdXB2b3RlLnBuZycpLFxyXG5cdFx0XHRcdHVwdm90ZUhpZ2hMaWdodEltYWdlOiByZXF1aXJlKCdAL3N0YXRpYy91cHZvdGUtaGlnaGxpZ2h0LnBuZycpLFxyXG5cdFx0XHRcdGxlZnRWb2ljZUltZ0xpc3Q6IFt7XHJcblx0XHRcdFx0XHRpbWFnZTogcmVxdWlyZSgnQC9zdGF0aWMvdm9pY2UtcGxheS1sZWZ0MS5wbmcnKVxyXG5cdFx0XHRcdH0sIHtcclxuXHRcdFx0XHRcdGltYWdlOiByZXF1aXJlKCdAL3N0YXRpYy92b2ljZS1wbGF5LWxlZnQyLnBuZycpXHJcblx0XHRcdFx0fSwge1xyXG5cdFx0XHRcdFx0aW1hZ2U6IHJlcXVpcmUoJ0Avc3RhdGljL3ZvaWNlLXBsYXktbGVmdDMucG5nJylcclxuXHRcdFx0XHR9XSxcclxuXHRcdFx0XHRjdXJyZW50OiAyLFxyXG5cdFx0XHRcdHRleHRUb29sTGlzdDogW3tcclxuXHRcdFx0XHRcdGlkOiAxLFxyXG5cdFx0XHRcdFx0dGV4dDogJ+WkjeWIticsXHJcblx0XHRcdFx0XHRpbWFnZVVybDogcmVxdWlyZSgnQC9zdGF0aWMvY29weS5wbmcnKVxyXG5cdFx0XHRcdH0sIHtcclxuXHRcdFx0XHRcdGlkOiAyLFxyXG5cdFx0XHRcdFx0dGV4dDogJ+S/ruaUuScsXHJcblx0XHRcdFx0XHRpbWFnZVVybDogcmVxdWlyZSgnQC9zdGF0aWMvZWRpdC5wbmcnKVxyXG5cdFx0XHRcdH1dLFxyXG5cdFx0XHRcdGlzSGlnaExpZ2h0OiBmYWxzZSxcclxuXHRcdFx0XHR1cHZvdGVJbmRleDogbnVsbCxcclxuXHRcdFx0XHRxdWlja0Fza0xpc3Q6IFt7XHJcblx0XHRcdFx0XHRcdGlkOiAxLFxyXG5cdFx0XHRcdFx0XHRsYWJlbDogJ+aVsOaNruS4jeWHhuehridcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGlkOiAyLFxyXG5cdFx0XHRcdFx0XHRsYWJlbDogJ+ayoeacieW4ruWKqSdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGlkOiAzLFxyXG5cdFx0XHRcdFx0XHRsYWJlbDogJ+WFtuS7lidcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRdLFxyXG5cdFx0XHRcdGFza0FjdGl2ZTogbnVsbCxcclxuXHRcdFx0XHR0ZXh0VG9vbFN0eWxlOiB7fSxcclxuXHRcdFx0XHRpc09wZW5UZXh0VG9vbDogZmFsc2UsXHJcblx0XHRcdFx0c2hvd1Rvb2w6IGZhbHNlLFxyXG5cdFx0XHRcdHNjcmVlbldpZHRoOiAwLFxyXG5cdFx0XHRcdHNlbGVjdFRleHQ6ICcnLFxyXG5cdFx0XHRcdHZvaWNlVGltZXI6IG51bGwsXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHR0aGlzLnNjcmVlbldpZHRoID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKCkuc2NyZWVuV2lkdGg7XHJcblxyXG5cdFx0fSxcclxuXHRcdHdhdGNoOiB7XHJcblx0XHRcdGlzUGxheWluZ1ZvaWNlKHZhbCkge1xyXG5cdFx0XHRcdGlmICh2YWwpIHtcclxuXHRcdFx0XHRcdHRoaXMudm9pY2VUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuY3VycmVudCA9PT0gMikge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuY3VycmVudCA9IC0xO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdHRoaXMuY3VycmVudCArPSAxO1xyXG5cdFx0XHRcdFx0fSwgNTAwKVxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMudm9pY2VUaW1lcikge1xyXG5cdFx0XHRcdFx0XHRjbGVhckludGVydmFsKHRoaXMudm9pY2VUaW1lcilcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnQgPSAyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdGNsaWNrQWlWb2NpZShzcmMpIHtcclxuXHRcdFx0XHR0aGlzLiRlbWl0KCdoYW5kbGVWb2ljZScsIHNyYylcclxuXHRcdFx0fSxcclxuXHRcdFx0c2VsZWN0VGV4dFRvb2woaWQpIHtcclxuXHRcdFx0XHRzd2l0Y2ggKGlkKSB7XHJcblx0XHRcdFx0XHRjYXNlIDE6XHJcblx0XHRcdFx0XHRcdGNvcHlUZXh0KHRoaXMuc2VsZWN0VGV4dClcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDI6XHJcblx0XHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZUlucHV0VGV4dCcsIHRoaXMuc2VsZWN0VGV4dClcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmNsb3NlVG9vbCgpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbG9zZVRvb2woKSB7XHJcblx0XHRcdFx0dGhpcy5zaG93VG9vbCA9IGZhbHNlO1xyXG5cdFx0XHRcdHRoaXMuaXNPcGVuVGV4dFRvb2wgPSBmYWxzZTtcclxuXHRcdFx0XHR0aGlzLiRlbWl0KCdjaGFuZ2VTaG93JywgZmFsc2UpXHJcblx0XHRcdH0sXHJcblx0XHRcdGxvYWRUb29sKCRldmVudCwgbSkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0VGV4dCA9IG0uY29udGVudDtcclxuXHRcdFx0XHR1bmkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLnNlbGVjdChgI21zZy0ke20uaWR9YCkuYm91bmRpbmdDbGllbnRSZWN0KChyZWN0KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgaGVpZ2h0ID0gcmVjdC5oZWlnaHQgfHwgMDtcclxuXHRcdFx0XHRcdGlmICgkZXZlbnQudG91Y2hlc1swXS5wYWdlWCA+ICh0aGlzLnNjcmVlbldpZHRoIC8gMikpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy50ZXh0VG9vbFN0eWxlID0ge1xyXG5cdFx0XHRcdFx0XHRcdHRvcDogJGV2ZW50LnRhcmdldC5vZmZzZXRUb3AgKyBoZWlnaHQgLSAxMCArICdweCcsXHJcblx0XHRcdFx0XHRcdFx0cmlnaHQ6IHRoaXMuc2NyZWVuV2lkdGggLSBNYXRoLmNlaWwoJGV2ZW50LnRvdWNoZXNbMF0ucGFnZVgpICsgJ3B4J1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnRleHRUb29sU3R5bGUgPSB7XHJcblx0XHRcdFx0XHRcdFx0dG9wOiAkZXZlbnQudGFyZ2V0Lm9mZnNldFRvcCArIGhlaWdodCAtIDEwICsgJ3B4JyxcclxuXHRcdFx0XHRcdFx0XHRsZWZ0OiBNYXRoLmNlaWwoJGV2ZW50LnRvdWNoZXNbMF0ucGFnZVgpICsgJ3B4J1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLmlzT3BlblRleHRUb29sID0gdHJ1ZTtcclxuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZVNob3cnLCB0cnVlKTtcclxuXHRcdFx0XHRcdC8vIOehruS/nURPTeabtOaWsOWQjuWGjeinpuWPkeWKqOeUu1xyXG5cdFx0XHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNob3dUb29sID0gdHJ1ZTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0pLmV4ZWMoKTtcclxuXHJcblx0XHRcdH0sXHJcblx0XHRcdGNoYW5nZVNob3coZSkge1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZVNob3cnLCBlLnNob3cpXHJcblx0XHRcdH0sXHJcblx0XHRcdHNlbGVjdEFzayhpZCkge1xyXG5cdFx0XHRcdHRoaXMuYXNrQWN0aXZlID0gaWQ7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNvbnRpbnVlQ3JlYXRlKCkge1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2NvbnRpbnVlQ3JlYXRlJylcclxuXHRcdFx0fSxcclxuXHRcdFx0cmVmcmVzaCgpIHtcclxuXHRcdFx0XHR0aGlzLmlzSGlnaExpZ2h0ID0gZmFsc2U7XHJcblx0XHRcdFx0dGhpcy51cHZvdGVJbmRleCA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy4kZW1pdCgncmVmcmVzaCcpXHJcblx0XHRcdH0sXHJcblx0XHRcdHVwdm90ZSgpIHtcclxuXHRcdFx0XHRpZiAodGhpcy51cHZvdGVJbmRleCAhPT0gMCkge1xyXG5cdFx0XHRcdFx0dGhpcy5pc0hpZ2hMaWdodCA9IHRydWVcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5pc0hpZ2hMaWdodCA9ICF0aGlzLmlzSGlnaExpZ2h0O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLnVwdm90ZUluZGV4ID0gMDtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0hpZ2hMaWdodCkge1xyXG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdHRpdGxlOiAn5Y+N6aaI5oiQ5YqfJyxcclxuXHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxyXG5cdFx0XHRcdFx0XHRkdXJhdGlvbjogMTUwMFxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHVuVXB2b3RlKCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLnVwdm90ZUluZGV4ICE9PSAxKSB7XHJcblx0XHRcdFx0XHR0aGlzLiRyZWZzLnBvcHVwLm9wZW4oKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKCF0aGlzLmlzSGlnaExpZ2h0KSB7XHJcblx0XHRcdFx0XHR0aGlzLiRyZWZzLnBvcHVwLm9wZW4oKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5pc0hpZ2hMaWdodCA9ICF0aGlzLmlzSGlnaExpZ2h0O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLnVwdm90ZUluZGV4ID0gMTtcclxuXHRcdFx0fSxcclxuXHRcdFx0c3VibWl0RmVlZGJhY2soKSB7XHJcblx0XHRcdFx0dGhpcy4kcmVmcy5wb3B1cC5jbG9zZSgpO1xyXG5cdFx0XHRcdHRoaXMuaXNIaWdoTGlnaHQgPSB0cnVlO1xyXG5cdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0dGl0bGU6ICflj43ppojmiJDlip8nLFxyXG5cdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxyXG5cdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbG9zZUZlZWRiYWNrKCkge1xyXG5cdFx0XHRcdHRoaXMuJHJlZnMucG9wdXAuY2xvc2UoKTtcclxuXHRcdFx0XHR0aGlzLmlzSGlnaExpZ2h0ID0gZmFsc2U7XHJcblx0XHRcdH0sXHJcblx0XHRcdHBsYXlWb2ljZSh2b2ljZVBhdGgpIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygndm9pY2VQYXRoJywgdm9pY2VQYXRoKTtcclxuXHRcdFx0XHQvLyBpZiAoIXZvaWNlUGF0aCkge1xyXG5cdFx0XHRcdC8vIFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0Ly8gXHRcdHRpdGxlOiBcIuaXoOWPr+aSreaUvueahOivremfs1wiLFxyXG5cdFx0XHRcdC8vIFx0XHRpY29uOiBcIm5vbmVcIixcclxuXHRcdFx0XHQvLyBcdH0pO1xyXG5cdFx0XHRcdC8vIFx0cmV0dXJuO1xyXG5cdFx0XHRcdC8vIH1cclxuXHRcdFx0XHQvLyBpZiAoIXRoaXMuaW5uZXJBdWRpb0NvbnRleHQpIHtcclxuXHRcdFx0XHQvLyBcdHRoaXMuaW5uZXJBdWRpb0NvbnRleHQgPSB1bmkuY3JlYXRlSW5uZXJBdWRpb0NvbnRleHQoKTtcclxuXHRcdFx0XHQvLyBcdHRoaXMuaW5uZXJBdWRpb0NvbnRleHQuYXV0b3BsYXkgPSBmYWxzZTtcclxuXHRcdFx0XHQvLyBcdHRoaXMuaW5uZXJBdWRpb0NvbnRleHQub25FcnJvcigoKSA9PiB7XHJcblx0XHRcdFx0Ly8gXHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdC8vIFx0XHRcdHRpdGxlOiBcIuaSreaUvuWksei0pVwiLFxyXG5cdFx0XHRcdC8vIFx0XHRcdGljb246IFwibm9uZVwiLFxyXG5cdFx0XHRcdC8vIFx0XHR9KTtcclxuXHRcdFx0XHQvLyBcdH0pO1xyXG5cdFx0XHRcdC8vIH1cclxuXHRcdFx0XHQvLyB0cnkge1xyXG5cdFx0XHRcdC8vIFx0dGhpcy5pbm5lckF1ZGlvQ29udGV4dC5zdG9wKCk7XHJcblx0XHRcdFx0Ly8gfSBjYXRjaCAoZSkge31cclxuXHRcdFx0XHQvLyB0aGlzLmlubmVyQXVkaW9Db250ZXh0LnNyYyA9IHZvaWNlUGF0aDtcclxuXHRcdFx0XHQvLyB0aGlzLmlubmVyQXVkaW9Db250ZXh0LnBsYXkoKTtcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0fTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkIGxhbmc9XCJzY3NzXCI+XHJcblx0LmNoYXQge1xyXG5cdFx0bWFyZ2luOiA2cHggMCAxMnB4O1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdH1cclxuXHJcblx0Lm1zZyB7XHJcblx0XHQvKiBtYXJnaW46IDEwcHggMDsgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5cdFx0cGFkZGluZy1ib3R0b206IDEwcHg7XHJcblx0XHRmbGV4LXdyYXA6IHdyYXA7XHJcblx0fVxyXG5cclxuXHQubXNnLnVzZXIge1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuXHR9XHJcblxyXG5cdC5idWJibGUge1xyXG5cdFx0bWF4LXdpZHRoOiA4MCU7XHJcblx0XHRwYWRkaW5nOiAxMHB4IDEycHg7XHJcblx0XHRib3JkZXItcmFkaXVzOiAxNHB4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHR9XHJcblxyXG5cdC51c2VyLWJ1YmJsZSB7XHJcblx0XHRiYWNrZ3JvdW5kOiAjNGU3YmZmO1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XHJcblx0fVxyXG5cclxuXHQuYWktYnViYmxlIHtcclxuXHRcdGJhY2tncm91bmQ6ICNmZmY7XHJcblx0XHRjb2xvcjogIzMzMztcclxuXHRcdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcclxuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xyXG5cdH1cclxuXHJcblx0LmNvbnRpbnVlLWNyZWF0ZSB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHJcblx0XHQudGV4dCB7XHJcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcclxuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2RkZDtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcclxuXHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHRcdHdpZHRoOiA5MHB4O1xyXG5cdFx0XHRwYWRkaW5nOiA1cHggMDtcclxuXHRcdFx0bWFyZ2luLXRvcDogOHB4O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LnRvb2wtYm94IHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0bWFyZ2luLXRvcDogMTVweDtcclxuXHRcdHBhZGRpbmctbGVmdDogNXB4O1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG5cdFx0LnRvb2wtaW1hZ2Uge1xyXG5cdFx0XHR3aWR0aDogMTRweDtcclxuXHRcdFx0bWFyZ2luLXJpZ2h0OiAxNXB4O1xyXG5cdFx0fVxyXG5cclxuXHRcdC5yb3RlIHtcclxuXHRcdFx0dHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC5saXN0ZW4tYnRuIHtcclxuXHRcdG1hcmdpbi1sZWZ0OiA4cHg7XHJcblx0XHRjb2xvcjogIzZiNzI4MDtcclxuXHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHR9XHJcblxyXG5cdC5haS1jYXJkLXRpdGxlIHtcclxuXHRcdGNvbG9yOiAjNWY2ZmZmO1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDZweDtcclxuXHR9XHJcblxyXG5cdC5haS1jYXJkLWJvZHkge1xyXG5cdFx0Y29sb3I6ICM2NjY7XHJcblx0fVxyXG5cclxuXHQvKiBsb2FkaW5nIGFuaW1hdGlvbiAqL1xyXG5cdC5haS1sb2FkaW5nIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0Z2FwOiA2cHg7XHJcblx0XHRwYWRkaW5nOiA0cHggMDtcclxuXHR9XHJcblxyXG5cdC5sb2FkaW5nLWRvdCB7XHJcblx0XHR3aWR0aDogOHB4O1xyXG5cdFx0aGVpZ2h0OiA4cHg7XHJcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XHJcblx0XHRiYWNrZ3JvdW5kOiAjOWNhM2FmO1xyXG5cdFx0YW5pbWF0aW9uOiBsb2FkaW5nLWJvdW5jZSAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlIGJvdGg7XHJcblx0fVxyXG5cclxuXHQubG9hZGluZy1kb3Q6bnRoLWNoaWxkKDEpIHtcclxuXHRcdGFuaW1hdGlvbi1kZWxheTogLTAuMzJzO1xyXG5cdH1cclxuXHJcblx0LmxvYWRpbmctZG90Om50aC1jaGlsZCgyKSB7XHJcblx0XHRhbmltYXRpb24tZGVsYXk6IC0wLjE2cztcclxuXHR9XHJcblxyXG5cdEBrZXlmcmFtZXMgbG9hZGluZy1ib3VuY2Uge1xyXG5cclxuXHRcdDAlLFxyXG5cdFx0ODAlLFxyXG5cdFx0MTAwJSB7XHJcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMC44KTtcclxuXHRcdFx0b3BhY2l0eTogMC41O1xyXG5cdFx0fVxyXG5cclxuXHRcdDQwJSB7XHJcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcclxuXHRcdFx0b3BhY2l0eTogMTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC50ZXh0LXZvaWNlIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdH1cclxuXHJcblx0LnZvaWNlLXBsYXkge1xyXG5cdFx0d2lkdGg6IDIwcHg7XHJcblx0XHRtYXJnaW4tbGVmdDogNXB4O1xyXG5cdH1cclxuXHJcblx0LnRleHQtdG9vbCB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0ei1pbmRleDogMTAwMDA7XHJcblx0XHRjb2xvcjogIzAwMDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDVweDtcclxuXHRcdGJveC1zaGFkb3c6IDAgMCAxcHggMXB4ICNlNGU0ZTQ7XHJcblx0XHRvcGFjaXR5OiAwO1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KSBzY2FsZSgwLjkpO1xyXG5cdFx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UsIHRyYW5zZm9ybSAwLjNzIGVhc2U7XHJcblxyXG5cdFx0Ji5zaG93IHtcclxuXHRcdFx0b3BhY2l0eTogMTtcclxuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC50b29sLWl0ZW0ge1xyXG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHR3aWR0aDogMTYwcHg7XHJcblx0XHRcdHBhZGRpbmc6IDEwcHg7XHJcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xyXG5cdFx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRcdG9wYWNpdHk6IDA7XHJcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7XHJcblx0XHRcdGFuaW1hdGlvbjogc2xpZGVJbkl0ZW0gMC4zcyBlYXNlIGZvcndhcmRzO1xyXG5cdFx0fVxyXG5cclxuXHRcdC50b29sLWl0ZW06bGFzdC1jaGlsZCB7XHJcblx0XHRcdGJvcmRlci1ib3R0b206IDBweDtcclxuXHRcdH1cclxuXHJcblx0XHQuaW1nIHtcclxuXHRcdFx0d2lkdGg6IDE2cHg7XHJcblx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdEBrZXlmcmFtZXMgc2xpZGVJbkl0ZW0ge1xyXG5cdFx0ZnJvbSB7XHJcblx0XHRcdG9wYWNpdHk6IDA7XHJcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7XHJcblx0XHR9XHJcblxyXG5cdFx0dG8ge1xyXG5cdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHJcblxyXG5cdC5wb3B1cCB7XHJcblx0XHR6LWluZGV4OiA5OTk5OTtcclxuXHR9XHJcblxyXG5cdC5mZWVkYmFjayB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0cGFkZGluZzogMCAyMHB4O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMTBweCAxMHB4IDAgMDtcclxuXHRcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xyXG5cclxuXHRcdC50b3Age1xyXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0cGFkZGluZzogMTBweCAwO1xyXG5cclxuXHRcdFx0LnRpdGxlIHtcclxuXHRcdFx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LmNsb3NlIHtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xyXG5cdFx0XHRcdHdpZHRoOiAyNHB4O1xyXG5cdFx0XHRcdGhlaWdodDogMjRweDtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XHJcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0XHRyaWdodDogMDtcclxuXHRcdFx0XHR0b3A6IDUwJTtcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcblx0XHRcdFx0Zm9udC1zaXplOiAxOHB4O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LnF1aWNrLWFzayB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblxyXG5cdFx0XHQuYXNrIHtcclxuXHRcdFx0XHRwYWRkaW5nOiA1cHggMTVweDtcclxuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LmFjdGl2ZSB7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogIzAwN0FGRjtcclxuXHRcdFx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC50ZXh0YXJlYSB7XHJcblx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ1LCA0NCwgNDYsIC4wNSk7XHJcblx0XHRcdC8vIG1pbi1oZWlnaHQ6IDYwcHg7XHJcblx0XHRcdHBhZGRpbmc6IDEwcHggMTJweDtcclxuXHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcclxuXHRcdFx0bWFyZ2luLXRvcDogMTBweDtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcclxuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Lm1hcmstbGF5ZXIge1xyXG5cdFx0cG9zaXRpb246IGZpeGVkO1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0aGVpZ2h0OiAxMDB2aDtcclxuXHRcdGxlZnQ6IDA7XHJcblx0XHRyaWdodDogMDtcclxuXHRcdHRvcDogMDtcclxuXHRcdGJvdHRvbTogMDtcclxuXHRcdHotaW5kZXg6IDk5OTk7XHJcblx0XHRvcGFjaXR5OiAwO1xyXG5cdH1cclxuXHJcblx0LmFpLXZvaWNlLXBsYXkge1xyXG5cdFx0d2lkdGg6IDYwcHg7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcclxuXHRcdHBhZGRpbmc6IDEwcHggMTJweDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDE0cHg7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///76\n"); +eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _utils = __webpack_require__(/*! @/utils/utils.js */ 26);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default2 = {\n props: {\n messages: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n isReplying: {\n type: Boolean,\n default: false\n },\n isPlayingVoice: {\n type: Boolean,\n default: false\n },\n playSrc: {\n type: String,\n default: ''\n }\n },\n data: function data() {\n return {\n upvoteImage: __webpack_require__(/*! @/static/upvote.png */ 77),\n upvoteHighLightImage: __webpack_require__(/*! @/static/upvote-highlight.png */ 78),\n leftVoiceImgList: [{\n image: __webpack_require__(/*! @/static/voice-play-left1.png */ 79)\n }, {\n image: __webpack_require__(/*! @/static/voice-play-left2.png */ 80)\n }, {\n image: __webpack_require__(/*! @/static/voice-play-left3.png */ 81)\n }],\n current: 2,\n textToolList: [{\n id: 1,\n text: '复制',\n imageUrl: __webpack_require__(/*! @/static/copy.png */ 82)\n }, {\n id: 2,\n text: '修改',\n imageUrl: __webpack_require__(/*! @/static/edit.png */ 83)\n }],\n isHighLight: false,\n upvoteIndex: null,\n quickAskList: [{\n id: 1,\n label: '数据不准确'\n }, {\n id: 2,\n label: '没有帮助'\n }, {\n id: 3,\n label: '其他'\n }],\n askActive: null,\n textToolStyle: {},\n isOpenTextTool: false,\n showTool: false,\n screenWidth: 0,\n selectText: '',\n voiceTimer: null\n };\n },\n mounted: function mounted() {\n this.screenWidth = uni.getSystemInfoSync().screenWidth;\n },\n watch: {\n isPlayingVoice: function isPlayingVoice(val) {\n var _this = this;\n if (val) {\n this.voiceTimer = setInterval(function () {\n if (_this.current === 2) {\n _this.current = -1;\n }\n _this.current += 1;\n }, 500);\n } else {\n if (this.voiceTimer) {\n clearInterval(this.voiceTimer);\n }\n ;\n this.current = 2;\n }\n }\n },\n methods: {\n clickAiVocie: function clickAiVocie(src) {\n this.$emit('handleVoice', src);\n },\n selectTextTool: function selectTextTool(id) {\n switch (id) {\n case 1:\n (0, _utils.copyText)(this.selectText);\n break;\n case 2:\n this.$emit('changeInputText', this.selectText);\n default:\n break;\n }\n this.closeTool();\n },\n closeTool: function closeTool() {\n this.showTool = false;\n this.isOpenTextTool = false;\n this.$emit('changeShow', false);\n },\n loadTool: function loadTool($event, m) {\n var _this2 = this;\n this.selectText = m.content;\n uni.createSelectorQuery().select(\"#msg-\".concat(m.id)).boundingClientRect(function (rect) {\n var height = rect.height || 0;\n if ($event.touches[0].pageX > _this2.screenWidth / 2) {\n _this2.textToolStyle = {\n top: $event.target.offsetTop + height - 10 + 'px',\n right: _this2.screenWidth - Math.ceil($event.touches[0].pageX) + 'px'\n };\n } else {\n _this2.textToolStyle = {\n top: $event.target.offsetTop + height - 10 + 'px',\n left: Math.ceil($event.touches[0].pageX) + 'px'\n };\n }\n _this2.isOpenTextTool = true;\n _this2.$emit('changeShow', true);\n // 确保DOM更新后再触发动画\n _this2.$nextTick(function () {\n _this2.showTool = true;\n });\n }).exec();\n },\n changeShow: function changeShow(e) {\n this.$emit('changeShow', e.show);\n },\n selectAsk: function selectAsk(id) {\n this.askActive = id;\n },\n continueCreate: function continueCreate() {\n this.$emit('continueCreate');\n },\n refresh: function refresh() {\n this.isHighLight = false;\n this.upvoteIndex = null;\n this.$emit('refresh');\n },\n upvote: function upvote() {\n if (this.upvoteIndex !== 0) {\n this.isHighLight = true;\n } else {\n this.isHighLight = !this.isHighLight;\n }\n this.upvoteIndex = 0;\n if (this.isHighLight) {\n uni.showToast({\n title: '反馈成功',\n icon: 'none',\n duration: 1500\n });\n }\n },\n unUpvote: function unUpvote() {\n if (this.upvoteIndex !== 1) {\n this.$refs.popup.open();\n }\n if (!this.isHighLight) {\n this.$refs.popup.open();\n } else {\n this.isHighLight = !this.isHighLight;\n }\n this.upvoteIndex = 1;\n },\n submitFeedback: function submitFeedback() {\n this.$refs.popup.close();\n this.isHighLight = true;\n uni.showToast({\n title: '反馈成功',\n icon: 'none',\n duration: 1500\n });\n },\n closeFeedback: function closeFeedback() {\n this.$refs.popup.close();\n this.isHighLight = false;\n },\n playVoice: function playVoice(voicePath) {\n __f__(\"log\", 'voicePath', voicePath, \" at pages/index/chat/index.vue:278\");\n // if (!voicePath) {\n // \tuni.showToast({\n // \t\ttitle: \"无可播放的语音\",\n // \t\ticon: \"none\",\n // \t});\n // \treturn;\n // }\n // if (!this.innerAudioContext) {\n // \tthis.innerAudioContext = uni.createInnerAudioContext();\n // \tthis.innerAudioContext.autoplay = false;\n // \tthis.innerAudioContext.onError(() => {\n // \t\tuni.showToast({\n // \t\t\ttitle: \"播放失败\",\n // \t\t\ticon: \"none\",\n // \t\t});\n // \t});\n // }\n // try {\n // \tthis.innerAudioContext.stop();\n // } catch (e) {}\n // this.innerAudioContext.src = voicePath;\n // this.innerAudioContext.play();\n }\n }\n};\nexports.default = _default2;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvY2hhdC9pbmRleC52dWUiXSwibmFtZXMiOlsicHJvcHMiLCJtZXNzYWdlcyIsInR5cGUiLCJkZWZhdWx0IiwiaXNSZXBseWluZyIsImlzUGxheWluZ1ZvaWNlIiwicGxheVNyYyIsImRhdGEiLCJ1cHZvdGVJbWFnZSIsInVwdm90ZUhpZ2hMaWdodEltYWdlIiwibGVmdFZvaWNlSW1nTGlzdCIsImltYWdlIiwiY3VycmVudCIsInRleHRUb29sTGlzdCIsImlkIiwidGV4dCIsImltYWdlVXJsIiwiaXNIaWdoTGlnaHQiLCJ1cHZvdGVJbmRleCIsInF1aWNrQXNrTGlzdCIsImxhYmVsIiwiYXNrQWN0aXZlIiwidGV4dFRvb2xTdHlsZSIsImlzT3BlblRleHRUb29sIiwic2hvd1Rvb2wiLCJzY3JlZW5XaWR0aCIsInNlbGVjdFRleHQiLCJ2b2ljZVRpbWVyIiwibW91bnRlZCIsIndhdGNoIiwiY2xlYXJJbnRlcnZhbCIsIm1ldGhvZHMiLCJjbGlja0FpVm9jaWUiLCJzZWxlY3RUZXh0VG9vbCIsImNsb3NlVG9vbCIsImxvYWRUb29sIiwidW5pIiwidG9wIiwicmlnaHQiLCJsZWZ0IiwiY2hhbmdlU2hvdyIsInNlbGVjdEFzayIsImNvbnRpbnVlQ3JlYXRlIiwicmVmcmVzaCIsInVwdm90ZSIsInRpdGxlIiwiaWNvbiIsImR1cmF0aW9uIiwidW5VcHZvdGUiLCJzdWJtaXRGZWVkYmFjayIsImNsb3NlRmVlZGJhY2siLCJwbGF5Vm9pY2UiXSwibWFwcGluZ3MiOiI7Ozs7OztBQXdGQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFHQTtFQUNBQTtJQUNBQztNQUNBQztNQUNBQztRQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBRjtNQUNBQztJQUNBO0lBQ0FFO01BQ0FIO01BQ0FDO0lBQ0E7SUFDQUc7TUFDQUo7TUFDQUM7SUFDQTtFQUNBO0VBQ0FJO0lBQ0E7TUFDQUM7TUFDQUM7TUFDQUM7UUFDQUM7TUFDQTtRQUNBQTtNQUNBO1FBQ0FBO01BQ0E7TUFDQUM7TUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7TUFDQTtRQUNBRjtRQUNBQztRQUNBQztNQUNBO01BQ0FDO01BQ0FDO01BQ0FDO1FBQ0FMO1FBQ0FNO01BQ0EsR0FDQTtRQUNBTjtRQUNBTTtNQUNBLEdBQ0E7UUFDQU47UUFDQU07TUFDQSxFQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0VBRUE7RUFDQUM7SUFDQXhCO01BQUE7TUFDQTtRQUNBO1VBQ0E7WUFDQTtVQUNBO1VBQ0E7UUFDQTtNQUNBO1FBQ0E7VUFDQXlCO1FBQ0E7UUFBQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO1FBQ0E7VUFDQTtVQUNBO1FBQ0E7VUFDQTtRQUNBO1VBQ0E7TUFBQTtNQUVBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUFBO01BQ0E7TUFDQUM7UUFDQTtRQUNBO1VBQ0E7WUFDQUM7WUFDQUM7VUFDQTtRQUNBO1VBQ0E7WUFDQUQ7WUFDQUU7VUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7VUFDQTtRQUNBO01BQ0E7SUFFQTtJQUNBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQVI7VUFDQVM7VUFDQUM7VUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBO01BQ0E7TUFDQTtRQUNBO01BQ0E7UUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQWI7UUFDQVM7UUFDQUM7UUFDQUM7TUFDQTtJQUNBO0lBQ0FHO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBLDRCIiwiZmlsZSI6Ijc2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY2hhdFwiPlxyXG5cdFx0PHZpZXcgdi1mb3I9XCIobSxpbmRleCkgaW4gbWVzc2FnZXNcIiA6a2V5PVwibS5pZFwiIDppZD1cIidtc2ctJyArIG0uaWRcIiA6Y2xhc3M9XCJbJ21zZycsIG0ucm9sZV1cIj5cclxuXHRcdFx0PHZpZXcgdi1pZj1cIm0ucm9sZSA9PT0gJ3VzZXInXCIgY2xhc3M9XCJidWJibGUgdXNlci1idWJibGVcIj5cclxuXHRcdFx0XHQ8dGV4dCB2LWlmPVwibS5pbnB1dFR5cGUgPT09ICd0ZXh0J1wiIEBsb25ncHJlc3MucHJldmVudD1cImxvYWRUb29sKCRldmVudCxtKVwiPnt7IG0uY29udGVudCB9fTwvdGV4dD5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInRleHQtdm9pY2VcIiB2LWlmPVwibS5pbnB1dFR5cGUgPT09ICd2b2ljZSdcIiBAdGFwPVwicGxheVZvaWNlKG0pXCI+XHJcblx0XHRcdFx0XHQ8dGV4dD57eyBtLmR1cmF0aW9uIH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwidm9pY2UtcGxheVwiIHNyYz1cIkAvc3RhdGljL3ZvaWNlLXBsYXkucG5nXCIgbW9kZT1cIndpZHRoRml4XCI+PC9pbWFnZT5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHJcblx0XHRcdDx2aWV3IHYtaWY9XCJtLnJvbGUgIT09ICd1c2VyJyAmJiBtLnR5cGUgIT09ICdjYXJkJyAmJiAhbS5sb2FkaW5nICYmIG0uc3JjIFwiIGNsYXNzPVwiYWktdm9pY2VcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYWktdm9pY2UtcGxheVwiIEB0YXA9XCJjbGlja0FpVm9jaWUobS5zcmMpXCI+XHJcblx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJ2b2ljZS1wbGF5XCIgOnNyYz1cImxlZnRWb2ljZUltZ0xpc3RbY3VycmVudF0uaW1hZ2VcIiBtb2RlPVwid2lkdGhGaXhcIlxyXG5cdFx0XHRcdFx0XHQgdi1pZj1cInBsYXlTcmMgPT09IG0uc3JjXCI+XHJcblx0XHRcdFx0XHQ8L2ltYWdlPlxyXG5cdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwidm9pY2UtcGxheVwiIDpzcmM9XCJsZWZ0Vm9pY2VJbWdMaXN0WzJdLmltYWdlXCIgbW9kZT1cIndpZHRoRml4XCJcclxuXHRcdFx0XHRcdFx0IHYtZWxzZT5cclxuXHRcdFx0XHRcdDwvaW1hZ2U+XHJcblx0XHRcdFx0XHQ8dGV4dFxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7Zm9udC1zaXplOiAxNHB4O1wiPnt7IG0uZHVyYXRpb24gPyBNYXRoLmNlaWwoIG0uZHVyYXRpb24pIDogMCB9fVwiPC90ZXh0PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cclxuXHRcdFx0PHZpZXcgdi1pZj1cIm0ucm9sZSAhPT0gJ3VzZXInXCIgY2xhc3M9XCJidWJibGUgYWktYnViYmxlXCI+XHJcblx0XHRcdFx0PHZpZXcgdi1pZj1cIm0udHlwZSA9PT0gJ2NhcmQnXCIgY2xhc3M9XCJhaS1jYXJkXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImFpLWNhcmQtdGl0bGVcIj57eyBtLnRpdGxlIH19PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJhaS1jYXJkLWJvZHlcIj57eyBtLmNvbnRlbnQgfX08L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IHYtZWxzZS1pZj1cIm0ubG9hZGluZ1wiIGNsYXNzPVwiYWktbG9hZGluZ1wiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJsb2FkaW5nLWRvdFwiPjwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibG9hZGluZy1kb3RcIj48L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImxvYWRpbmctZG90XCI+PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyB2LWVsc2U+XHJcblx0XHRcdFx0XHQ8dGV4dD57e1xyXG4gICAgICAgICAgICBtLmRpc3BsYXlUZXh0ICE9PSB1bmRlZmluZWQgPyBtLmRpc3BsYXlUZXh0IDogbS5jb250ZW50XHJcbiAgICAgICAgICB9fTwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiY29udGludWUtY3JlYXRlXCIgdi1pZj1cIm0uaXNCcmVhayAmJiBpbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMVwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGV4dFwiIEB0YXA9XCJjb250aW51ZUNyZWF0ZVwiPlxyXG5cdFx0XHRcdFx057un57ut55Sf5oiQIOKGklxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8IS0tIHVwdm90ZS1oaWdobGlnaHQgLS0+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ0b29sLWJveFwiIHYtaWY9XCIhaXNSZXBseWluZyAmJiBpbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMSAmJiBtLnJvbGUgPT09ICdhc3Npc3RhbnQnXCI+XHJcblx0XHRcdFx0PGltYWdlIGNsYXNzPVwidG9vbC1pbWFnZVwiIHNyYz1cIkAvc3RhdGljL3JlZnJlc2gucG5nXCIgbW9kZT1cIndpZHRoRml4XCIgQHRhcD1cInJlZnJlc2hcIj48L2ltYWdlPlxyXG5cdFx0XHRcdDxpbWFnZSBjbGFzcz1cInRvb2wtaW1hZ2VcIlxyXG5cdFx0XHRcdFx0OnNyYz1cImlzSGlnaExpZ2h0ID8gKHVwdm90ZUluZGV4ID09PSAwID8gdXB2b3RlSGlnaExpZ2h0SW1hZ2UgOiB1cHZvdGVJbWFnZSkgOiB1cHZvdGVJbWFnZVwiXHJcblx0XHRcdFx0XHRtb2RlPVwid2lkdGhGaXhcIiBAdGFwPVwidXB2b3RlXCI+PC9pbWFnZT5cclxuXHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJ0b29sLWltYWdlIHJvdGVcIlxyXG5cdFx0XHRcdFx0OnNyYz1cImlzSGlnaExpZ2h0ID8gKHVwdm90ZUluZGV4ID09PSAxID8gdXB2b3RlSGlnaExpZ2h0SW1hZ2UgOiB1cHZvdGVJbWFnZSkgOiB1cHZvdGVJbWFnZVwiXHJcblx0XHRcdFx0XHRtb2RlPVwid2lkdGhGaXhcIiBAdGFwPVwidW5VcHZvdGVcIj48L2ltYWdlPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblxyXG5cdFx0PHZpZXcgY2xhc3M9XCJ0ZXh0LXRvb2xcIiA6Y2xhc3M9XCJ7J3Nob3cnOiBzaG93VG9vbH1cIiA6c3R5bGU9XCJ0ZXh0VG9vbFN0eWxlXCIgdi1pZj1cImlzT3BlblRleHRUb29sXCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidG9vbC1pdGVtXCIgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIHRleHRUb29sTGlzdFwiIDprZXk9XCJpdGVtLmlkXCJcclxuXHRcdFx0XHQ6c3R5bGU9XCJ7YW5pbWF0aW9uRGVsYXk6IGluZGV4ICogMC4wNSArICdzJ31cIiBAdGFwPVwic2VsZWN0VGV4dFRvb2woaXRlbS5pZClcIj5cclxuXHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJpbWdcIiA6c3JjPVwiaXRlbS5pbWFnZVVybFwiIG1vZGU9XCJ3aWR0aEZpeFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0ZXh0XCI+e3tpdGVtLnRleHR9fTwvdGV4dD5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cclxuXHRcdDx2aWV3IGNsYXNzPVwibWFyay1sYXllclwiIHYtaWY9XCJpc09wZW5UZXh0VG9vbFwiIEB0b3VjaHN0YXJ0PVwiY2xvc2VUb29sXCI+PC92aWV3PlxyXG5cclxuXHRcdDx1bmktcG9wdXAgcmVmPVwicG9wdXBcIiB0eXBlPVwiYm90dG9tXCIgY2xhc3M9XCJwb3B1cFwiIEBjaGFuZ2U9XCJjaGFuZ2VTaG93XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiZmVlZGJhY2tcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInRvcFwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aXRsZVwiPuWPjemmiDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiY2xvc2VcIiBAdGFwPVwiY2xvc2VGZWVkYmFja1wiPsOXPC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInF1aWNrLWFza1wiPlxyXG5cdFx0XHRcdFx0PHZpZXcgOmNsYXNzPVwiWydhc2snLGl0ZW0uaWQgPT09IGFza0FjdGl2ZSA/ICdhY3RpdmUnIDogJyddXCIgdi1mb3I9XCJpdGVtIGluIHF1aWNrQXNrTGlzdFwiXHJcblx0XHRcdFx0XHRcdDprZXk9XCJpdGVtLmlkXCIgQHRhcD1cInNlbGVjdEFzayhpdGVtLmlkKVwiPnt7aXRlbS5sYWJlbH19PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldz5cclxuXHRcdFx0XHRcdDx0ZXh0YXJlYSBjbGFzcz1cInRleHRhcmVhXCIgcGxhY2Vob2xkZXI9XCLmiJHku6zmg7Pnn6XpgZPkvaDlr7nmraTlm57nrZTkuI3mu6HmhI/nmoTljp/lm6DvvIzkvaDorqTkuLrmm7Tlpb3nmoTlm57nrZTmmK/ku4DkuYjvvJ9cIj48L3RleHRhcmVhPlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7XCIgQHRhcD1cInN1Ym1pdEZlZWRiYWNrXCI+5o+Q5LqkPC9idXR0b24+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdW5pLXBvcHVwPlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHtcclxuXHRcdGNvcHlUZXh0XHJcblx0fSBmcm9tICdAL3V0aWxzL3V0aWxzLmpzJ1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdHByb3BzOiB7XHJcblx0XHRcdG1lc3NhZ2VzOiB7XHJcblx0XHRcdFx0dHlwZTogQXJyYXksXHJcblx0XHRcdFx0ZGVmYXVsdCAoKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gW107XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdFx0aXNSZXBseWluZzoge1xyXG5cdFx0XHRcdHR5cGU6IEJvb2xlYW4sXHJcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2UsXHJcblx0XHRcdH0sXHJcblx0XHRcdGlzUGxheWluZ1ZvaWNlOiB7XHJcblx0XHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZSxcclxuXHRcdFx0fSxcclxuXHRcdFx0cGxheVNyYyA6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJycsXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHR1cHZvdGVJbWFnZTogcmVxdWlyZSgnQC9zdGF0aWMvdXB2b3RlLnBuZycpLFxyXG5cdFx0XHRcdHVwdm90ZUhpZ2hMaWdodEltYWdlOiByZXF1aXJlKCdAL3N0YXRpYy91cHZvdGUtaGlnaGxpZ2h0LnBuZycpLFxyXG5cdFx0XHRcdGxlZnRWb2ljZUltZ0xpc3Q6IFt7XHJcblx0XHRcdFx0XHRpbWFnZTogcmVxdWlyZSgnQC9zdGF0aWMvdm9pY2UtcGxheS1sZWZ0MS5wbmcnKVxyXG5cdFx0XHRcdH0sIHtcclxuXHRcdFx0XHRcdGltYWdlOiByZXF1aXJlKCdAL3N0YXRpYy92b2ljZS1wbGF5LWxlZnQyLnBuZycpXHJcblx0XHRcdFx0fSwge1xyXG5cdFx0XHRcdFx0aW1hZ2U6IHJlcXVpcmUoJ0Avc3RhdGljL3ZvaWNlLXBsYXktbGVmdDMucG5nJylcclxuXHRcdFx0XHR9XSxcclxuXHRcdFx0XHRjdXJyZW50OiAyLFxyXG5cdFx0XHRcdHRleHRUb29sTGlzdDogW3tcclxuXHRcdFx0XHRcdGlkOiAxLFxyXG5cdFx0XHRcdFx0dGV4dDogJ+WkjeWIticsXHJcblx0XHRcdFx0XHRpbWFnZVVybDogcmVxdWlyZSgnQC9zdGF0aWMvY29weS5wbmcnKVxyXG5cdFx0XHRcdH0sIHtcclxuXHRcdFx0XHRcdGlkOiAyLFxyXG5cdFx0XHRcdFx0dGV4dDogJ+S/ruaUuScsXHJcblx0XHRcdFx0XHRpbWFnZVVybDogcmVxdWlyZSgnQC9zdGF0aWMvZWRpdC5wbmcnKVxyXG5cdFx0XHRcdH1dLFxyXG5cdFx0XHRcdGlzSGlnaExpZ2h0OiBmYWxzZSxcclxuXHRcdFx0XHR1cHZvdGVJbmRleDogbnVsbCxcclxuXHRcdFx0XHRxdWlja0Fza0xpc3Q6IFt7XHJcblx0XHRcdFx0XHRcdGlkOiAxLFxyXG5cdFx0XHRcdFx0XHRsYWJlbDogJ+aVsOaNruS4jeWHhuehridcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGlkOiAyLFxyXG5cdFx0XHRcdFx0XHRsYWJlbDogJ+ayoeacieW4ruWKqSdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGlkOiAzLFxyXG5cdFx0XHRcdFx0XHRsYWJlbDogJ+WFtuS7lidcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRdLFxyXG5cdFx0XHRcdGFza0FjdGl2ZTogbnVsbCxcclxuXHRcdFx0XHR0ZXh0VG9vbFN0eWxlOiB7fSxcclxuXHRcdFx0XHRpc09wZW5UZXh0VG9vbDogZmFsc2UsXHJcblx0XHRcdFx0c2hvd1Rvb2w6IGZhbHNlLFxyXG5cdFx0XHRcdHNjcmVlbldpZHRoOiAwLFxyXG5cdFx0XHRcdHNlbGVjdFRleHQ6ICcnLFxyXG5cdFx0XHRcdHZvaWNlVGltZXI6IG51bGwsXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHR0aGlzLnNjcmVlbldpZHRoID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKCkuc2NyZWVuV2lkdGg7XHJcblxyXG5cdFx0fSxcclxuXHRcdHdhdGNoOiB7XHJcblx0XHRcdGlzUGxheWluZ1ZvaWNlKHZhbCkge1xyXG5cdFx0XHRcdGlmICh2YWwpIHtcclxuXHRcdFx0XHRcdHRoaXMudm9pY2VUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuY3VycmVudCA9PT0gMikge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuY3VycmVudCA9IC0xO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdHRoaXMuY3VycmVudCArPSAxO1xyXG5cdFx0XHRcdFx0fSwgNTAwKVxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMudm9pY2VUaW1lcikge1xyXG5cdFx0XHRcdFx0XHRjbGVhckludGVydmFsKHRoaXMudm9pY2VUaW1lcilcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnQgPSAyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdGNsaWNrQWlWb2NpZShzcmMpIHtcclxuXHRcdFx0XHR0aGlzLiRlbWl0KCdoYW5kbGVWb2ljZScsIHNyYylcclxuXHRcdFx0fSxcclxuXHRcdFx0c2VsZWN0VGV4dFRvb2woaWQpIHtcclxuXHRcdFx0XHRzd2l0Y2ggKGlkKSB7XHJcblx0XHRcdFx0XHRjYXNlIDE6XHJcblx0XHRcdFx0XHRcdGNvcHlUZXh0KHRoaXMuc2VsZWN0VGV4dClcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDI6XHJcblx0XHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZUlucHV0VGV4dCcsIHRoaXMuc2VsZWN0VGV4dClcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmNsb3NlVG9vbCgpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbG9zZVRvb2woKSB7XHJcblx0XHRcdFx0dGhpcy5zaG93VG9vbCA9IGZhbHNlO1xyXG5cdFx0XHRcdHRoaXMuaXNPcGVuVGV4dFRvb2wgPSBmYWxzZTtcclxuXHRcdFx0XHR0aGlzLiRlbWl0KCdjaGFuZ2VTaG93JywgZmFsc2UpXHJcblx0XHRcdH0sXHJcblx0XHRcdGxvYWRUb29sKCRldmVudCwgbSkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0VGV4dCA9IG0uY29udGVudDtcclxuXHRcdFx0XHR1bmkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLnNlbGVjdChgI21zZy0ke20uaWR9YCkuYm91bmRpbmdDbGllbnRSZWN0KChyZWN0KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgaGVpZ2h0ID0gcmVjdC5oZWlnaHQgfHwgMDtcclxuXHRcdFx0XHRcdGlmICgkZXZlbnQudG91Y2hlc1swXS5wYWdlWCA+ICh0aGlzLnNjcmVlbldpZHRoIC8gMikpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy50ZXh0VG9vbFN0eWxlID0ge1xyXG5cdFx0XHRcdFx0XHRcdHRvcDogJGV2ZW50LnRhcmdldC5vZmZzZXRUb3AgKyBoZWlnaHQgLSAxMCArICdweCcsXHJcblx0XHRcdFx0XHRcdFx0cmlnaHQ6IHRoaXMuc2NyZWVuV2lkdGggLSBNYXRoLmNlaWwoJGV2ZW50LnRvdWNoZXNbMF0ucGFnZVgpICsgJ3B4J1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnRleHRUb29sU3R5bGUgPSB7XHJcblx0XHRcdFx0XHRcdFx0dG9wOiAkZXZlbnQudGFyZ2V0Lm9mZnNldFRvcCArIGhlaWdodCAtIDEwICsgJ3B4JyxcclxuXHRcdFx0XHRcdFx0XHRsZWZ0OiBNYXRoLmNlaWwoJGV2ZW50LnRvdWNoZXNbMF0ucGFnZVgpICsgJ3B4J1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLmlzT3BlblRleHRUb29sID0gdHJ1ZTtcclxuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZVNob3cnLCB0cnVlKTtcclxuXHRcdFx0XHRcdC8vIOehruS/nURPTeabtOaWsOWQjuWGjeinpuWPkeWKqOeUu1xyXG5cdFx0XHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNob3dUb29sID0gdHJ1ZTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0pLmV4ZWMoKTtcclxuXHJcblx0XHRcdH0sXHJcblx0XHRcdGNoYW5nZVNob3coZSkge1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZVNob3cnLCBlLnNob3cpXHJcblx0XHRcdH0sXHJcblx0XHRcdHNlbGVjdEFzayhpZCkge1xyXG5cdFx0XHRcdHRoaXMuYXNrQWN0aXZlID0gaWQ7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNvbnRpbnVlQ3JlYXRlKCkge1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2NvbnRpbnVlQ3JlYXRlJylcclxuXHRcdFx0fSxcclxuXHRcdFx0cmVmcmVzaCgpIHtcclxuXHRcdFx0XHR0aGlzLmlzSGlnaExpZ2h0ID0gZmFsc2U7XHJcblx0XHRcdFx0dGhpcy51cHZvdGVJbmRleCA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy4kZW1pdCgncmVmcmVzaCcpXHJcblx0XHRcdH0sXHJcblx0XHRcdHVwdm90ZSgpIHtcclxuXHRcdFx0XHRpZiAodGhpcy51cHZvdGVJbmRleCAhPT0gMCkge1xyXG5cdFx0XHRcdFx0dGhpcy5pc0hpZ2hMaWdodCA9IHRydWVcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5pc0hpZ2hMaWdodCA9ICF0aGlzLmlzSGlnaExpZ2h0O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLnVwdm90ZUluZGV4ID0gMDtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0hpZ2hMaWdodCkge1xyXG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdHRpdGxlOiAn5Y+N6aaI5oiQ5YqfJyxcclxuXHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxyXG5cdFx0XHRcdFx0XHRkdXJhdGlvbjogMTUwMFxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHVuVXB2b3RlKCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLnVwdm90ZUluZGV4ICE9PSAxKSB7XHJcblx0XHRcdFx0XHR0aGlzLiRyZWZzLnBvcHVwLm9wZW4oKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKCF0aGlzLmlzSGlnaExpZ2h0KSB7XHJcblx0XHRcdFx0XHR0aGlzLiRyZWZzLnBvcHVwLm9wZW4oKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5pc0hpZ2hMaWdodCA9ICF0aGlzLmlzSGlnaExpZ2h0O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLnVwdm90ZUluZGV4ID0gMTtcclxuXHRcdFx0fSxcclxuXHRcdFx0c3VibWl0RmVlZGJhY2soKSB7XHJcblx0XHRcdFx0dGhpcy4kcmVmcy5wb3B1cC5jbG9zZSgpO1xyXG5cdFx0XHRcdHRoaXMuaXNIaWdoTGlnaHQgPSB0cnVlO1xyXG5cdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0dGl0bGU6ICflj43ppojmiJDlip8nLFxyXG5cdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxyXG5cdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbG9zZUZlZWRiYWNrKCkge1xyXG5cdFx0XHRcdHRoaXMuJHJlZnMucG9wdXAuY2xvc2UoKTtcclxuXHRcdFx0XHR0aGlzLmlzSGlnaExpZ2h0ID0gZmFsc2U7XHJcblx0XHRcdH0sXHJcblx0XHRcdHBsYXlWb2ljZSh2b2ljZVBhdGgpIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygndm9pY2VQYXRoJywgdm9pY2VQYXRoKTtcclxuXHRcdFx0XHQvLyBpZiAoIXZvaWNlUGF0aCkge1xyXG5cdFx0XHRcdC8vIFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0Ly8gXHRcdHRpdGxlOiBcIuaXoOWPr+aSreaUvueahOivremfs1wiLFxyXG5cdFx0XHRcdC8vIFx0XHRpY29uOiBcIm5vbmVcIixcclxuXHRcdFx0XHQvLyBcdH0pO1xyXG5cdFx0XHRcdC8vIFx0cmV0dXJuO1xyXG5cdFx0XHRcdC8vIH1cclxuXHRcdFx0XHQvLyBpZiAoIXRoaXMuaW5uZXJBdWRpb0NvbnRleHQpIHtcclxuXHRcdFx0XHQvLyBcdHRoaXMuaW5uZXJBdWRpb0NvbnRleHQgPSB1bmkuY3JlYXRlSW5uZXJBdWRpb0NvbnRleHQoKTtcclxuXHRcdFx0XHQvLyBcdHRoaXMuaW5uZXJBdWRpb0NvbnRleHQuYXV0b3BsYXkgPSBmYWxzZTtcclxuXHRcdFx0XHQvLyBcdHRoaXMuaW5uZXJBdWRpb0NvbnRleHQub25FcnJvcigoKSA9PiB7XHJcblx0XHRcdFx0Ly8gXHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdC8vIFx0XHRcdHRpdGxlOiBcIuaSreaUvuWksei0pVwiLFxyXG5cdFx0XHRcdC8vIFx0XHRcdGljb246IFwibm9uZVwiLFxyXG5cdFx0XHRcdC8vIFx0XHR9KTtcclxuXHRcdFx0XHQvLyBcdH0pO1xyXG5cdFx0XHRcdC8vIH1cclxuXHRcdFx0XHQvLyB0cnkge1xyXG5cdFx0XHRcdC8vIFx0dGhpcy5pbm5lckF1ZGlvQ29udGV4dC5zdG9wKCk7XHJcblx0XHRcdFx0Ly8gfSBjYXRjaCAoZSkge31cclxuXHRcdFx0XHQvLyB0aGlzLmlubmVyQXVkaW9Db250ZXh0LnNyYyA9IHZvaWNlUGF0aDtcclxuXHRcdFx0XHQvLyB0aGlzLmlubmVyQXVkaW9Db250ZXh0LnBsYXkoKTtcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0fTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkIGxhbmc9XCJzY3NzXCI+XHJcblx0LmNoYXQge1xyXG5cdFx0bWFyZ2luOiA2cHggMCAxMnB4O1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdH1cclxuXHJcblx0Lm1zZyB7XHJcblx0XHQvKiBtYXJnaW46IDEwcHggMDsgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5cdFx0cGFkZGluZy1ib3R0b206IDEwcHg7XHJcblx0XHRmbGV4LXdyYXA6IHdyYXA7XHJcblx0fVxyXG5cclxuXHQubXNnLnVzZXIge1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuXHR9XHJcblxyXG5cdC5idWJibGUge1xyXG5cdFx0bWF4LXdpZHRoOiA4MCU7XHJcblx0XHRwYWRkaW5nOiAxMHB4IDEycHg7XHJcblx0XHRib3JkZXItcmFkaXVzOiAxNHB4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHR9XHJcblxyXG5cdC51c2VyLWJ1YmJsZSB7XHJcblx0XHRiYWNrZ3JvdW5kOiAjNGU3YmZmO1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XHJcblx0fVxyXG5cclxuXHQuYWktYnViYmxlIHtcclxuXHRcdGJhY2tncm91bmQ6ICNGM0Y3Rjk7XHJcblx0XHRjb2xvcjogIzMzMztcclxuXHRcdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcclxuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xyXG5cdH1cclxuXHJcblx0LmNvbnRpbnVlLWNyZWF0ZSB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHJcblx0XHQudGV4dCB7XHJcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcclxuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2RkZDtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcclxuXHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHRcdHdpZHRoOiA5MHB4O1xyXG5cdFx0XHRwYWRkaW5nOiA1cHggMDtcclxuXHRcdFx0bWFyZ2luLXRvcDogOHB4O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LnRvb2wtYm94IHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0bWFyZ2luLXRvcDogMTVweDtcclxuXHRcdHBhZGRpbmctbGVmdDogNXB4O1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG5cdFx0LnRvb2wtaW1hZ2Uge1xyXG5cdFx0XHR3aWR0aDogMTRweDtcclxuXHRcdFx0bWFyZ2luLXJpZ2h0OiAxNXB4O1xyXG5cdFx0fVxyXG5cclxuXHRcdC5yb3RlIHtcclxuXHRcdFx0dHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC5saXN0ZW4tYnRuIHtcclxuXHRcdG1hcmdpbi1sZWZ0OiA4cHg7XHJcblx0XHRjb2xvcjogIzZiNzI4MDtcclxuXHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHR9XHJcblxyXG5cdC5haS1jYXJkLXRpdGxlIHtcclxuXHRcdGNvbG9yOiAjNWY2ZmZmO1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDZweDtcclxuXHR9XHJcblxyXG5cdC5haS1jYXJkLWJvZHkge1xyXG5cdFx0Y29sb3I6ICM2NjY7XHJcblx0fVxyXG5cclxuXHQvKiBsb2FkaW5nIGFuaW1hdGlvbiAqL1xyXG5cdC5haS1sb2FkaW5nIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0Z2FwOiA2cHg7XHJcblx0XHRwYWRkaW5nOiA0cHggMDtcclxuXHR9XHJcblxyXG5cdC5sb2FkaW5nLWRvdCB7XHJcblx0XHR3aWR0aDogOHB4O1xyXG5cdFx0aGVpZ2h0OiA4cHg7XHJcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XHJcblx0XHRiYWNrZ3JvdW5kOiAjOWNhM2FmO1xyXG5cdFx0YW5pbWF0aW9uOiBsb2FkaW5nLWJvdW5jZSAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlIGJvdGg7XHJcblx0fVxyXG5cclxuXHQubG9hZGluZy1kb3Q6bnRoLWNoaWxkKDEpIHtcclxuXHRcdGFuaW1hdGlvbi1kZWxheTogLTAuMzJzO1xyXG5cdH1cclxuXHJcblx0LmxvYWRpbmctZG90Om50aC1jaGlsZCgyKSB7XHJcblx0XHRhbmltYXRpb24tZGVsYXk6IC0wLjE2cztcclxuXHR9XHJcblxyXG5cdEBrZXlmcmFtZXMgbG9hZGluZy1ib3VuY2Uge1xyXG5cclxuXHRcdDAlLFxyXG5cdFx0ODAlLFxyXG5cdFx0MTAwJSB7XHJcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMC44KTtcclxuXHRcdFx0b3BhY2l0eTogMC41O1xyXG5cdFx0fVxyXG5cclxuXHRcdDQwJSB7XHJcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcclxuXHRcdFx0b3BhY2l0eTogMTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC50ZXh0LXZvaWNlIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdH1cclxuXHJcblx0LnZvaWNlLXBsYXkge1xyXG5cdFx0d2lkdGg6IDIwcHg7XHJcblx0XHRtYXJnaW4tbGVmdDogNXB4O1xyXG5cdH1cclxuXHJcblx0LnRleHQtdG9vbCB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0ei1pbmRleDogMTAwMDA7XHJcblx0XHRjb2xvcjogIzAwMDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDVweDtcclxuXHRcdGJveC1zaGFkb3c6IDAgMCAxcHggMXB4ICNlNGU0ZTQ7XHJcblx0XHRvcGFjaXR5OiAwO1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KSBzY2FsZSgwLjkpO1xyXG5cdFx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UsIHRyYW5zZm9ybSAwLjNzIGVhc2U7XHJcblxyXG5cdFx0Ji5zaG93IHtcclxuXHRcdFx0b3BhY2l0eTogMTtcclxuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC50b29sLWl0ZW0ge1xyXG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHR3aWR0aDogMTYwcHg7XHJcblx0XHRcdHBhZGRpbmc6IDEwcHg7XHJcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xyXG5cdFx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRcdG9wYWNpdHk6IDA7XHJcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7XHJcblx0XHRcdGFuaW1hdGlvbjogc2xpZGVJbkl0ZW0gMC4zcyBlYXNlIGZvcndhcmRzO1xyXG5cdFx0fVxyXG5cclxuXHRcdC50b29sLWl0ZW06bGFzdC1jaGlsZCB7XHJcblx0XHRcdGJvcmRlci1ib3R0b206IDBweDtcclxuXHRcdH1cclxuXHJcblx0XHQuaW1nIHtcclxuXHRcdFx0d2lkdGg6IDE2cHg7XHJcblx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdEBrZXlmcmFtZXMgc2xpZGVJbkl0ZW0ge1xyXG5cdFx0ZnJvbSB7XHJcblx0XHRcdG9wYWNpdHk6IDA7XHJcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7XHJcblx0XHR9XHJcblxyXG5cdFx0dG8ge1xyXG5cdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHJcblxyXG5cdC5wb3B1cCB7XHJcblx0XHR6LWluZGV4OiA5OTk5OTtcclxuXHR9XHJcblxyXG5cdC5mZWVkYmFjayB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0cGFkZGluZzogMCAyMHB4O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMTBweCAxMHB4IDAgMDtcclxuXHRcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xyXG5cclxuXHRcdC50b3Age1xyXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0cGFkZGluZzogMTBweCAwO1xyXG5cclxuXHRcdFx0LnRpdGxlIHtcclxuXHRcdFx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LmNsb3NlIHtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xyXG5cdFx0XHRcdHdpZHRoOiAyNHB4O1xyXG5cdFx0XHRcdGhlaWdodDogMjRweDtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XHJcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0XHRyaWdodDogMDtcclxuXHRcdFx0XHR0b3A6IDUwJTtcclxuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcblx0XHRcdFx0Zm9udC1zaXplOiAxOHB4O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LnF1aWNrLWFzayB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblxyXG5cdFx0XHQuYXNrIHtcclxuXHRcdFx0XHRwYWRkaW5nOiA1cHggMTVweDtcclxuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LmFjdGl2ZSB7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogIzAwN0FGRjtcclxuXHRcdFx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC50ZXh0YXJlYSB7XHJcblx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ1LCA0NCwgNDYsIC4wNSk7XHJcblx0XHRcdC8vIG1pbi1oZWlnaHQ6IDYwcHg7XHJcblx0XHRcdHBhZGRpbmc6IDEwcHggMTJweDtcclxuXHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcclxuXHRcdFx0bWFyZ2luLXRvcDogMTBweDtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcclxuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Lm1hcmstbGF5ZXIge1xyXG5cdFx0cG9zaXRpb246IGZpeGVkO1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0aGVpZ2h0OiAxMDB2aDtcclxuXHRcdGxlZnQ6IDA7XHJcblx0XHRyaWdodDogMDtcclxuXHRcdHRvcDogMDtcclxuXHRcdGJvdHRvbTogMDtcclxuXHRcdHotaW5kZXg6IDk5OTk7XHJcblx0XHRvcGFjaXR5OiAwO1xyXG5cdH1cclxuXHJcblx0LmFpLXZvaWNlLXBsYXkge1xyXG5cdFx0d2lkdGg6IDYwcHg7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcclxuXHRcdHBhZGRpbmc6IDEwcHggMTJweDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDE0cHg7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///76\n"); /***/ }), /* 77 */ @@ -4793,7 +4793,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBu /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 19));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 21));\nvar _uploadVoice = __webpack_require__(/*! @/utils/uploadVoice.js */ 111);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n props: {\n inputText: {\n type: String,\n default: ''\n },\n isReplying: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n quickAskList: [{\n quickAskText: '设备运行情况'\n }, {\n quickAskText: '今日出入库数据'\n }],\n searchHeight: 0,\n inputTextValue: '',\n isRecording: false,\n willCancel: false,\n recorder: null,\n recordStartY: 0,\n recordStartTs: 0,\n recordSimTimer: null,\n dialogText: ''\n };\n },\n mounted: function mounted() {\n var self = this;\n uni.createSelectorQuery().select(\".dock\").boundingClientRect(function (rect) {\n self.searchHeight = Math.ceil(rect.height);\n }).exec();\n uni.createSelectorQuery().select(\".record-box\").boundingClientRect(function (rect) {\n __f__(\"log\", 'rect', rect, \" at pages/index/search/index.vue:93\");\n }).exec();\n },\n beforeDestroy: function beforeDestroy() {\n if (this.recordSimTimer) {\n clearTimeout(this.recordSimTimer);\n }\n },\n watch: {\n inputText: function inputText(newValue) {\n this.inputTextValue = newValue;\n },\n inputTextValue: function inputTextValue(newValue) {\n this.$emit('changeInputText', newValue);\n }\n },\n methods: {\n deleteQucikAsk: function deleteQucikAsk(item) {\n var _this = this;\n uni.showModal({\n title: \"提示\",\n content: \"确定要删除这条快捷提问?\",\n success: function success(res) {\n if (res.confirm) {\n _this.quickAskList = _this.quickAskList.filter(function (ele) {\n return ele.quickAskText !== item.quickAskText;\n });\n uni.showToast({\n title: '删除成功',\n icon: 'none'\n });\n }\n }\n });\n },\n dialogInputClose: function dialogInputClose() {\n this.$emit('changeShow', false);\n },\n inputDialogToggle: function inputDialogToggle() {\n this.dialogText = '';\n this.$refs.inputDialog.open();\n this.$emit('changeShow', true);\n },\n dialogInputConfirm: function dialogInputConfirm() {\n var _this2 = this;\n this.$emit('changeShow', false);\n if (!this.dialogText || !this.dialogText.trim()) {\n // uni.showToast({\n // \ttitle: '内容不能为空',\n // \ticon: 'none'\n // })\n return;\n }\n var index = this.quickAskList.findIndex(function (item) {\n return item.quickAskText.trim() === _this2.dialogText.trim();\n });\n if (index > -1) {\n uni.showToast({\n title: '不能重复添加内容',\n icon: 'none'\n });\n return;\n }\n this.quickAskList.unshift({\n quickAskText: this.dialogText\n });\n },\n handleBreak: function handleBreak() {\n this.$emit('handleBreak');\n },\n getHeight: function getHeight() {\n return this.searchHeight;\n },\n onSwitchModel: function onSwitchModel() {\n uni.showToast({\n title: \"已切换为通用模型\",\n icon: \"none\"\n });\n },\n // 快速提问\n onQuickAsk: function onQuickAsk(text) {\n this.$emit('onQuickAsk', text);\n },\n onSend: function onSend() {\n if (this.isReplying) return;\n this.$emit('onSend');\n // 清空输入框并同步父组件\n this.inputTextValue = '';\n this.$emit('changeInputText', '');\n },\n ensureRecorder: function ensureRecorder() {\n var _this3 = this;\n if (this.recorder) return;\n try {\n this.recorder = uni.getRecorderManager && uni.getRecorderManager();\n } catch (e) {\n this.recorder = null;\n }\n if (this.recorder) {\n this.recorder.onStart();\n this.recorder.onStop( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(res) {\n var duration, text;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this3.$emit('changeShow', false);\n duration = Date.now() - _this3.recordStartTs;\n if (!(_this3.willCancel || duration < 700)) {\n _context.next = 5;\n break;\n }\n uni.showToast({\n title: duration < 700 ? \"说话时间太短\" : \"已取消\",\n icon: \"none\"\n });\n return _context.abrupt(\"return\");\n case 5:\n uni.showLoading({\n title: \"识别中...\",\n mask: true\n });\n _context.next = 8;\n return (0, _uploadVoice.recognizeAudio)(res.tempFilePath);\n case 8:\n text = _context.sent;\n if (text !== null && text !== void 0 && text.trim()) {\n _context.next = 12;\n break;\n }\n uni.showToast({\n title: '未识别到文字',\n icon: 'none'\n });\n return _context.abrupt(\"return\");\n case 12:\n _this3.$emit('changeInputText', text);\n uni.hideLoading();\n // TODO: 上传 res.tempFilePath 做识别;现用 mock\n // this.handleRecognizedText(this.mockSpeechToText(duration), res.tempFilePath, Math.ceil(\n // \tduration / 100) / 10)\n _this3.onSend();\n case 15:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n }\n },\n onPressMic: function onPressMic(e) {\n if (false) {}\n if (this.isLoading) return uni.showToast({\n title: \"AI正在回复中\",\n icon: \"none\"\n });\n var appAuthorizeSetting = uni.getAppAuthorizeSetting();\n if (appAuthorizeSetting.microphoneAuthorized !== 'authorized') {\n uni.showModal({\n title: '权限设置',\n content: '应用缺乏必要的权限,是否前往手动授予该权限?',\n complete: function complete(res) {\n if (res.confirm) {\n uni.openAppAuthorizeSetting();\n }\n }\n });\n return;\n }\n this.$emit('changeShow', true);\n this.$emit('startRecord');\n this.ensureRecorder();\n this.isRecording = true;\n this.willCancel = false;\n this.recordStartTs = Date.now();\n this.recordStartY = e.changedTouches && e.changedTouches[0] ? e.changedTouches[0].clientY : 0;\n if (this.recorder) {\n try {\n this.recorder.start({\n format: \"amr\",\n sampleRate: 16000,\n numberOfChannels: 1,\n duration: 60000\n });\n } catch (err) {}\n } else {\n if (this.recordSimTimer) clearTimeout(this.recordSimTimer);\n this.recordSimTimer = setTimeout(function () {}, 60000);\n }\n },\n // 录音时移动\n onMoveMic: function onMoveMic(e) {\n if (!this.isRecording) return;\n var y = e.changedTouches && e.changedTouches[0] ? e.changedTouches[0].clientY : 0;\n this.willCancel = this.recordStartY - y > 60;\n },\n // 松开录音\n onReleaseMic: function onReleaseMic() {\n __f__(\"log\", 'onReleaseMic', \" at pages/index/search/index.vue:278\");\n if (!this.isRecording) return;\n this.isRecording = false;\n this.show = false;\n if (this.recorder) {\n try {\n this.recorder.stop();\n } catch (err) {\n __f__(\"log\", \"err\", err, \" at pages/index/search/index.vue:286\");\n }\n }\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvc2VhcmNoL2luZGV4LnZ1ZSJdLCJuYW1lcyI6WyJwcm9wcyIsImlucHV0VGV4dCIsInR5cGUiLCJkZWZhdWx0IiwiaXNSZXBseWluZyIsImRhdGEiLCJxdWlja0Fza0xpc3QiLCJxdWlja0Fza1RleHQiLCJzZWFyY2hIZWlnaHQiLCJpbnB1dFRleHRWYWx1ZSIsImlzUmVjb3JkaW5nIiwid2lsbENhbmNlbCIsInJlY29yZGVyIiwicmVjb3JkU3RhcnRZIiwicmVjb3JkU3RhcnRUcyIsInJlY29yZFNpbVRpbWVyIiwiZGlhbG9nVGV4dCIsIm1vdW50ZWQiLCJ1bmkiLCJzZWxmIiwiYmVmb3JlRGVzdHJveSIsImNsZWFyVGltZW91dCIsIndhdGNoIiwibWV0aG9kcyIsImRlbGV0ZVF1Y2lrQXNrIiwidGl0bGUiLCJjb250ZW50Iiwic3VjY2VzcyIsImljb24iLCJkaWFsb2dJbnB1dENsb3NlIiwiaW5wdXREaWFsb2dUb2dnbGUiLCJkaWFsb2dJbnB1dENvbmZpcm0iLCJoYW5kbGVCcmVhayIsImdldEhlaWdodCIsIm9uU3dpdGNoTW9kZWwiLCJvblF1aWNrQXNrIiwib25TZW5kIiwiZW5zdXJlUmVjb3JkZXIiLCJkdXJhdGlvbiIsIm1hc2siLCJ0ZXh0Iiwib25QcmVzc01pYyIsImNvbXBsZXRlIiwiZSIsImZvcm1hdCIsInNhbXBsZVJhdGUiLCJudW1iZXJPZkNoYW5uZWxzIiwib25Nb3ZlTWljIiwib25SZWxlYXNlTWljIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFtREE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQUdBO0VBQ0FBO0lBQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7SUFDQUM7TUFDQUY7TUFDQUM7SUFDQTtFQUNBO0VBQ0FFO0lBQ0E7TUFDQUMsZUFDQTtRQUNBQztNQUNBLEdBQ0E7UUFDQUE7TUFDQSxFQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0FDO01BQ0FDO0lBQ0E7SUFDQUQ7TUFDQTtJQUNBO0VBQ0E7RUFDQUU7SUFDQTtNQUNBQztJQUNBO0VBQ0E7RUFDQUM7SUFDQXJCO01BQ0E7SUFDQTtJQUNBUTtNQUNBO0lBQ0E7RUFDQTtFQUNBYztJQUNBQztNQUFBO01BQ0FOO1FBQ0FPO1FBQ0FDO1FBQ0FDO1VBQ0E7WUFDQTtjQUFBO1lBQUE7WUFDQVQ7Y0FDQU87Y0FDQUc7WUFDQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtNQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO01BQ0E7UUFBQTtNQUFBO01BQ0E7UUFDQWI7VUFDQU87VUFDQUc7UUFDQTtRQUNBO01BQ0E7TUFDQTtRQUNBckI7TUFDQTtJQUNBO0lBQ0F5QjtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0FoQjtRQUNBTztRQUNBRztNQUNBO0lBQ0E7SUFDQTtJQUNBTztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFBQTtNQUNBO01BQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtNQUNBO1FBQ0E7UUFDQTtVQUFBO1lBQUE7WUFBQTtjQUFBO2dCQUFBO2tCQUFBO29CQUNBO29CQUNBQztvQkFBQSxNQUNBO3NCQUFBO3NCQUFBO29CQUFBO29CQUNBcEI7c0JBQ0FPO3NCQUNBRztvQkFDQTtvQkFBQTtrQkFBQTtvQkFHQVY7c0JBQ0FPO3NCQUNBYztvQkFDQTtvQkFBQTtvQkFBQSxPQUNBO2tCQUFBO29CQUFBQztvQkFBQSxJQUNBQTtzQkFBQTtzQkFBQTtvQkFBQTtvQkFDQXRCO3NCQUNBTztzQkFDQUc7b0JBQ0E7b0JBQUE7a0JBQUE7b0JBR0E7b0JBQ0FWO29CQUNBO29CQUNBO29CQUNBO29CQUNBO2tCQUFBO2tCQUFBO29CQUFBO2dCQUFBO2NBQUE7WUFBQTtVQUFBLENBQ0E7VUFBQTtZQUFBO1VBQUE7UUFBQTtNQUNBO0lBQ0E7SUFDQXVCO01BQ0EsYUFNQTtNQUNBLG9CQUNBO1FBQ0FoQjtRQUNBRztNQUNBO01BQ0E7TUFDQTtRQUNBVjtVQUNBTztVQUNBQztVQUNBZ0I7WUFDQTtjQUNBeEI7WUFDQTtVQUNBO1FBQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0Esb0JBQ0F5QiwwQ0FDQUEsOEJBQ0E7TUFDQTtRQUNBO1VBQ0E7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQVI7VUFDQTtRQUNBO01BQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FTO01BQ0E7TUFDQSxRQUNBSiwwQ0FDQUEsOEJBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUs7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7VUFDQTtRQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEsMkIiLCJmaWxlIjoiMTEwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8dmlldz5cblx0XHQ8dmlldyBjbGFzcz1cImRvY2tcIj5cblx0XHRcdDx2aWV3IHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cblx0XHRcdFx0PHNjcm9sbC12aWV3IGNsYXNzPVwicXVpY2stYWN0aW9ucyBob3Jpem9udGFsXCIgc2Nyb2xsLXggc2hvdy1zY3JvbGxiYXI9XCJmYWxzZVwiXG5cdFx0XHRcdFx0c3R5bGU9XCJ3aWR0aDogY2FsYygxMDAlIC0gNTBweCk7XCI+XG5cdFx0XHRcdFx0PCEtLSA8dmlldyBjbGFzcz1cInFhLWJ0biBtaW5vclwiIEB0YXA9XCJvblN3aXRjaE1vZGVsXCI+5YiH5o2i5qih5Z6LPC92aWV3PiAtLT5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInFhLWJ0blwiIEB0YXA9XCJvblF1aWNrQXNrKGl0ZW0ucXVpY2tBc2tUZXh0KVwiIHYtZm9yPVwiaXRlbSBpbiBxdWlja0Fza0xpc3RcIlxuXHRcdFx0XHRcdFx0OmtleT1cIml0ZW0ucXVpY2tBc2tUZXh0XCIgQGxvbmdwcmVzcy5wcmV2ZW50PVwiZGVsZXRlUXVjaWtBc2soaXRlbSlcIj5cblx0XHRcdFx0XHRcdHt7IGl0ZW0ucXVpY2tBc2tUZXh0IH19XG5cdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHQ8L3Njcm9sbC12aWV3PlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInF1aWNrLWFkZFwiIEB0YXA9XCJpbnB1dERpYWxvZ1RvZ2dsZVwiPlxuXHRcdFx0XHRcdDxpbWFnZSBzdHlsZT1cIndpZHRoOiA0MHB4O1wiIHNyYz1cIkAvc3RhdGljL3BsdXMtY2lyY2xlLWZpbGwucG5nXCIgbW9kZT1cIndpZHRoRml4XCI+PC9pbWFnZT5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC1iYXJcIj5cblx0XHRcdFx0PGlucHV0IGNsYXNzPVwiaW5wdXRcIiBjb25maXJtLXR5cGU9XCJzZW5kXCIgdi1tb2RlbD1cImlucHV0VGV4dFZhbHVlXCIgQGNvbmZpcm09XCJvblNlbmQoKVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCLkvaDlj6/ku6Xor7TigKZcIiBwbGFjZWhvbGRlci1jbGFzcz1cInBoXCIgLz5cblx0XHRcdFx0PHZpZXcgOmNsYXNzPVwiWydtaWMnLCB7IHJlY29yZGluZzogaXNSZWNvcmRpbmcgfV1cIiBAdG91Y2hzdGFydC5zdG9wPVwib25QcmVzc01pY1wiXG5cdFx0XHRcdFx0QHRvdWNobW92ZS5zdG9wPVwib25Nb3ZlTWljXCIgQHRvdWNoZW5kLnN0b3A9XCJvblJlbGVhc2VNaWNcIj5cblx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vLi4vc3RhdGljL21pYy5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIj48L2ltYWdlPlxuXHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PCEtLSA8YnV0dG9uIGNsYXNzPVwic2VuZFwiIHR5cGU9XCJwcmltYXJ5XCIgQHRhcD1cIm9uU2VuZFwiPuWPkemAgTwvYnV0dG9uPiAtLT5cblx0XHRcdFx0PHZpZXdcblx0XHRcdFx0XHQ6Y2xhc3M9XCJbJ3NlbmQnLCAoIWlzUmVwbHlpbmcgJiYgaW5wdXRUZXh0VmFsdWUgJiYgaW5wdXRUZXh0VmFsdWUudHJpbSgpKSA/ICdub3JtYWwnIDogJ2Rpc2FibGVkJ11cIj5cblx0XHRcdFx0XHQ8aW1hZ2Ugdi1pZj1cImlzUmVwbHlpbmdcIiBzcmM9XCJAL3N0YXRpYy9icmVhay5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIiBzdHlsZT1cIndpZHRoOiAyMHB4O1wiXG5cdFx0XHRcdFx0XHRAdGFwPVwiaGFuZGxlQnJlYWtcIj48L2ltYWdlPlxuXHRcdFx0XHRcdDxpbWFnZSB2LWVsc2Ugc3JjPVwiQC9zdGF0aWMvdG9wLWFycm93cy5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIiBzdHlsZT1cIndpZHRoOiAyMHB4O1wiIEB0YXA9XCJvblNlbmRcIj5cblx0XHRcdFx0XHQ8L2ltYWdlPlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3IHYtaWY9XCJpc1JlY29yZGluZ1wiICBjbGFzcz1cInJlY29yZC1tYXNrXCIgPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJyZWNvcmQtYm94XCIgOmNsYXNzPVwieyBjYW5jZWw6IHdpbGxDYW5jZWwgfVwiPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInJlY29yZC10ZXh0XCI+e3tcblx0XHRcdFx0d2lsbENhbmNlbCA/IFwi5p2+5byA5omL5oyH77yM5Y+W5raI5Y+R6YCBXCIgOiBcIuaJi+aMh+S4iua7ke+8jOWPlua2iOWPkemAgVwiXG5cdFx0XHRcdH19PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXHRcdDwvdmlldz5cblxuXHRcdDx1bmktcG9wdXAgcmVmPVwiaW5wdXREaWFsb2dcIiB0eXBlPVwiZGlhbG9nXCIgc3R5bGU9XCJ6LWluZGV4OiAxMDAwMztcIiA+XG5cdFx0XHQ8dW5pLXBvcHVwLWRpYWxvZyByZWY9XCJpbnB1dENsb3NlXCIgbW9kZT1cImlucHV0XCIgdGl0bGU9XCLmt7vliqDlv6vmjbfmj5Dpl65cIiB2LW1vZGVsPVwiZGlhbG9nVGV4dFwiIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5YaF5a65XCJcblx0XHRcdFx0QGNvbmZpcm09XCJkaWFsb2dJbnB1dENvbmZpcm1cIiA6bWF4bGVuZ3RoPVwiMTVcIiBAY2xvc2U9J2RpYWxvZ0lucHV0Q2xvc2UnPjwvdW5pLXBvcHVwLWRpYWxvZz5cblx0XHQ8L3VuaS1wb3B1cD5cblxuXHRcdDx2aWV3IHYtaWY9XCJpc1JlY29yZGluZ1wiIGNsYXNzPVwibWFzay1sYXllclwiPiA8L3ZpZXc+XG5cdDwvdmlldz5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5cdGltcG9ydCB7XG5cdFx0cmVjb2duaXplQXVkaW9cblx0fSBmcm9tIFwiQC91dGlscy91cGxvYWRWb2ljZS5qc1wiO1xuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0cHJvcHM6IHtcblx0XHRcdGlucHV0VGV4dDoge1xuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0XHR9LFxuXHRcdFx0aXNSZXBseWluZzoge1xuXHRcdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0ZGF0YSgpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHF1aWNrQXNrTGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHF1aWNrQXNrVGV4dCA6ICforr7lpIfov5DooYzmg4XlhrUnXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRxdWlja0Fza1RleHQgOiAn5LuK5pel5Ye65YWl5bqT5pWw5o2uJ1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XSxcblx0XHRcdFx0c2VhcmNoSGVpZ2h0OiAwLFxuXHRcdFx0XHRpbnB1dFRleHRWYWx1ZTogJycsXG5cdFx0XHRcdGlzUmVjb3JkaW5nOiBmYWxzZSxcblx0XHRcdFx0d2lsbENhbmNlbDogZmFsc2UsXG5cdFx0XHRcdHJlY29yZGVyOiBudWxsLFxuXHRcdFx0XHRyZWNvcmRTdGFydFk6IDAsXG5cdFx0XHRcdHJlY29yZFN0YXJ0VHM6IDAsXG5cdFx0XHRcdHJlY29yZFNpbVRpbWVyOiBudWxsLFxuXHRcdFx0XHRkaWFsb2dUZXh0OiAnJ1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0bW91bnRlZCgpIHtcblx0XHRcdGxldCBzZWxmID0gdGhpcztcblx0XHRcdHVuaS5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuc2VsZWN0KFwiLmRvY2tcIikuYm91bmRpbmdDbGllbnRSZWN0KChyZWN0KSA9PiB7XG5cdFx0XHRcdHNlbGYuc2VhcmNoSGVpZ2h0ID0gTWF0aC5jZWlsKHJlY3QuaGVpZ2h0KVxuXHRcdFx0fSkuZXhlYygpO1xuXHRcdFx0dW5pLmNyZWF0ZVNlbGVjdG9yUXVlcnkoKS5zZWxlY3QoXCIucmVjb3JkLWJveFwiKS5ib3VuZGluZ0NsaWVudFJlY3QoKHJlY3QpID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ3JlY3QnLHJlY3QpO1xuXHRcdFx0fSkuZXhlYygpO1xuXHRcdH0sXG5cdFx0YmVmb3JlRGVzdHJveSgpIHtcblx0XHRcdGlmICh0aGlzLnJlY29yZFNpbVRpbWVyKSB7XG5cdFx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnJlY29yZFNpbVRpbWVyKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHdhdGNoOiB7XG5cdFx0XHRpbnB1dFRleHQobmV3VmFsdWUpIHtcblx0XHRcdFx0dGhpcy5pbnB1dFRleHRWYWx1ZSA9IG5ld1ZhbHVlO1xuXHRcdFx0fSxcblx0XHRcdGlucHV0VGV4dFZhbHVlKG5ld1ZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZUlucHV0VGV4dCcsIG5ld1ZhbHVlKVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0bWV0aG9kczoge1xuXHRcdFx0ZGVsZXRlUXVjaWtBc2soaXRlbSl7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwi56Gu5a6a6KaB5Yig6Zmk6L+Z5p2h5b+r5o235o+Q6Zeu77yfXCIsXG5cdFx0XHRcdFx0c3VjY2VzcyA6IHJlcyA9PiB7XG5cdFx0XHRcdFx0XHRpZihyZXMuY29uZmlybSl7XG5cdFx0XHRcdFx0XHRcdHRoaXMucXVpY2tBc2tMaXN0ID0gdGhpcy5xdWlja0Fza0xpc3QuZmlsdGVyKGVsZSA9PiBlbGUucXVpY2tBc2tUZXh0ICE9PSBpdGVtLnF1aWNrQXNrVGV4dCk7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAn5Yig6Zmk5oiQ5YqfJyxcblx0XHRcdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0ZGlhbG9nSW5wdXRDbG9zZSgpe1xuXHRcdFx0XHR0aGlzLiRlbWl0KCdjaGFuZ2VTaG93JyxmYWxzZSlcblx0XHRcdH0sXG5cdFx0XHRpbnB1dERpYWxvZ1RvZ2dsZSgpIHtcblx0XHRcdFx0dGhpcy5kaWFsb2dUZXh0ID0gJyc7XG5cdFx0XHRcdHRoaXMuJHJlZnMuaW5wdXREaWFsb2cub3BlbigpO1xuXHRcdFx0XHR0aGlzLiRlbWl0KCdjaGFuZ2VTaG93Jyx0cnVlKVxuXHRcdFx0fSxcblx0XHRcdGRpYWxvZ0lucHV0Q29uZmlybSgpIHtcblx0XHRcdFx0dGhpcy4kZW1pdCgnY2hhbmdlU2hvdycsZmFsc2UpXG5cdFx0XHRcdGlmKCF0aGlzLmRpYWxvZ1RleHQgfHwgIXRoaXMuZGlhbG9nVGV4dC50cmltKCkpe1xuXHRcdFx0XHRcdC8vIHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdC8vIFx0dGl0bGU6ICflhoXlrrnkuI3og73kuLrnqbonLFxuXHRcdFx0XHRcdC8vIFx0aWNvbjogJ25vbmUnXG5cdFx0XHRcdFx0Ly8gfSlcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0bGV0IGluZGV4ID0gdGhpcy5xdWlja0Fza0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5xdWlja0Fza1RleHQudHJpbSgpID09PSB0aGlzLmRpYWxvZ1RleHQudHJpbSgpKTtcblx0XHRcdFx0aWYoaW5kZXggPiAtMSl7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+S4jeiDvemHjeWkjea3u+WKoOWGheWuuScsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnF1aWNrQXNrTGlzdC51bnNoaWZ0KHtcblx0XHRcdFx0XHRxdWlja0Fza1RleHQgOiB0aGlzLmRpYWxvZ1RleHQsXHRcdFx0XHRcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0aGFuZGxlQnJlYWsoKSB7XG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2hhbmRsZUJyZWFrJylcblx0XHRcdH0sXG5cdFx0XHRnZXRIZWlnaHQoKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnNlYXJjaEhlaWdodFxuXHRcdFx0fSxcblx0XHRcdG9uU3dpdGNoTW9kZWwoKSB7XG5cdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuW3suWIh+aNouS4uumAmueUqOaooeWei1wiLFxuXHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQvLyDlv6vpgJ/mj5Dpl65cblx0XHRcdG9uUXVpY2tBc2sodGV4dCkge1xuXHRcdFx0XHR0aGlzLiRlbWl0KCdvblF1aWNrQXNrJywgdGV4dCk7XG5cdFx0XHR9LFxuXHRcdFx0b25TZW5kKCkge1xuXHRcdFx0XHRpZiAodGhpcy5pc1JlcGx5aW5nKSByZXR1cm47XG5cdFx0XHRcdHRoaXMuJGVtaXQoJ29uU2VuZCcpXG5cdFx0XHRcdC8vIOa4heepuui+k+WFpeahhuW5tuWQjOatpeeItue7hOS7tlxuXHRcdFx0XHR0aGlzLmlucHV0VGV4dFZhbHVlID0gJydcblx0XHRcdFx0dGhpcy4kZW1pdCgnY2hhbmdlSW5wdXRUZXh0JywgJycpXG5cdFx0XHR9LFxuXHRcdFx0ZW5zdXJlUmVjb3JkZXIoKSB7XG5cdFx0XHRcdGlmICh0aGlzLnJlY29yZGVyKSByZXR1cm47XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dGhpcy5yZWNvcmRlciA9IHVuaS5nZXRSZWNvcmRlck1hbmFnZXIgJiYgdW5pLmdldFJlY29yZGVyTWFuYWdlcigpO1xuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0dGhpcy5yZWNvcmRlciA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMucmVjb3JkZXIpIHtcblx0XHRcdFx0XHR0aGlzLnJlY29yZGVyLm9uU3RhcnQoKTtcblx0XHRcdFx0XHR0aGlzLnJlY29yZGVyLm9uU3RvcChhc3luYyAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLiRlbWl0KCdjaGFuZ2VTaG93JyxmYWxzZSlcblx0XHRcdFx0XHRcdGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHRoaXMucmVjb3JkU3RhcnRUcztcblx0XHRcdFx0XHRcdGlmICh0aGlzLndpbGxDYW5jZWwgfHwgZHVyYXRpb24gPCA3MDApIHtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IGR1cmF0aW9uIDwgNzAwID8gXCLor7Tor53ml7bpl7TlpKrnn61cIiA6IFwi5bey5Y+W5raIXCIsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLor4bliKvkuK0uLi5cIixcblx0XHRcdFx0XHRcdFx0bWFzazogdHJ1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjb25zdCB0ZXh0ID0gYXdhaXQgcmVjb2duaXplQXVkaW8ocmVzLnRlbXBGaWxlUGF0aCk7XG5cdFx0XHRcdFx0XHRpZiAoIXRleHQ/LnRyaW0oKSkge1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ+acquivhuWIq+WIsOaWh+WtlycsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZUlucHV0VGV4dCcsIHRleHQpXG5cdFx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0XHRcdC8vIFRPRE86IOS4iuS8oCByZXMudGVtcEZpbGVQYXRoIOWBmuivhuWIq++8m+eOsOeUqCBtb2NrXG5cdFx0XHRcdFx0XHQvLyB0aGlzLmhhbmRsZVJlY29nbml6ZWRUZXh0KHRoaXMubW9ja1NwZWVjaFRvVGV4dChkdXJhdGlvbiksIHJlcy50ZW1wRmlsZVBhdGgsIE1hdGguY2VpbChcblx0XHRcdFx0XHRcdC8vIFx0ZHVyYXRpb24gLyAxMDApIC8gMTApXG5cdFx0XHRcdFx0XHR0aGlzLm9uU2VuZCgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b25QcmVzc01pYyhlKSB7XG5cdFx0XHRcdGlmIChwcm9jZXNzLmVudi5VTklfUExBVEZPUk0gIT09ICdBUFAtUExVUycgJiYgcHJvY2Vzcy5lbnYuVU5JX1BMQVRGT1JNICE9PSAnYXBwLXBsdXMnKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+W9k+WJjeaooeW8j+aaguaXtuWPquWcqEFQUOaUr+aMgScsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5pc0xvYWRpbmcpXG5cdFx0XHRcdFx0cmV0dXJuIHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwiQUnmraPlnKjlm57lpI3kuK1cIixcblx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRjb25zdCBhcHBBdXRob3JpemVTZXR0aW5nID0gdW5pLmdldEFwcEF1dGhvcml6ZVNldHRpbmcoKTtcblx0XHRcdFx0aWYgKGFwcEF1dGhvcml6ZVNldHRpbmcubWljcm9waG9uZUF1dGhvcml6ZWQgIT09ICdhdXRob3JpemVkJykge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6ICfmnYPpmZDorr7nva4nLFxuXHRcdFx0XHRcdFx0Y29udGVudDogJ+W6lOeUqOe8uuS5j+W/heimgeeahOadg+mZkO+8jOaYr+WQpuWJjeW+gOaJi+WKqOaOiOS6iOivpeadg+mZkO+8nycsXG5cdFx0XHRcdFx0XHRjb21wbGV0ZTogcmVzID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKHJlcy5jb25maXJtKSB7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLm9wZW5BcHBBdXRob3JpemVTZXR0aW5nKClcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy4kZW1pdCgnY2hhbmdlU2hvdycsdHJ1ZSk7XG5cdFx0XHRcdHRoaXMuJGVtaXQoJ3N0YXJ0UmVjb3JkJylcblx0XHRcdFx0dGhpcy5lbnN1cmVSZWNvcmRlcigpO1xuXHRcdFx0XHR0aGlzLmlzUmVjb3JkaW5nID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy53aWxsQ2FuY2VsID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMucmVjb3JkU3RhcnRUcyA9IERhdGUubm93KCk7XG5cdFx0XHRcdHRoaXMucmVjb3JkU3RhcnRZID1cblx0XHRcdFx0XHRlLmNoYW5nZWRUb3VjaGVzICYmIGUuY2hhbmdlZFRvdWNoZXNbMF0gP1xuXHRcdFx0XHRcdGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WSA6XG5cdFx0XHRcdFx0MDtcblx0XHRcdFx0aWYgKHRoaXMucmVjb3JkZXIpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0dGhpcy5yZWNvcmRlci5zdGFydCh7XG5cdFx0XHRcdFx0XHRcdGZvcm1hdDogXCJhbXJcIixcblx0XHRcdFx0XHRcdFx0c2FtcGxlUmF0ZTogMTYwMDAsXG5cdFx0XHRcdFx0XHRcdG51bWJlck9mQ2hhbm5lbHM6IDEsXG5cdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiA2MDAwMCxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycikge31cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpZiAodGhpcy5yZWNvcmRTaW1UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucmVjb3JkU2ltVGltZXIpO1xuXHRcdFx0XHRcdHRoaXMucmVjb3JkU2ltVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHt9LCA2MDAwMCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHQvLyDlvZXpn7Pml7bnp7vliqhcblx0XHRcdG9uTW92ZU1pYyhlKSB7XG5cdFx0XHRcdGlmICghdGhpcy5pc1JlY29yZGluZykgcmV0dXJuO1xuXHRcdFx0XHRjb25zdCB5ID1cblx0XHRcdFx0XHRlLmNoYW5nZWRUb3VjaGVzICYmIGUuY2hhbmdlZFRvdWNoZXNbMF0gP1xuXHRcdFx0XHRcdGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WSA6XG5cdFx0XHRcdFx0MDtcblx0XHRcdFx0dGhpcy53aWxsQ2FuY2VsID0gdGhpcy5yZWNvcmRTdGFydFkgLSB5ID4gNjA7XG5cdFx0XHR9LFxuXHRcdFx0Ly8g5p2+5byA5b2V6Z+zXG5cdFx0XHRvblJlbGVhc2VNaWMoKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKCdvblJlbGVhc2VNaWMnKTtcblx0XHRcdFx0aWYgKCF0aGlzLmlzUmVjb3JkaW5nKSByZXR1cm47XG5cdFx0XHRcdHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5zaG93ID0gZmFsc2U7XG5cdFx0XHRcdGlmICh0aGlzLnJlY29yZGVyKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHRoaXMucmVjb3JkZXIuc3RvcCgpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coXCJlcnJcIiwgZXJyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuXHQuZG9jayB7XG5cdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdGxlZnQ6IDA7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdGJhY2tncm91bmQ6ICNmN2Y4ZmM7XG5cdFx0Ym94LXNoYWRvdzogMCAtNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjA2KTtcblx0XHRwYWRkaW5nLWJvdHRvbTogY29uc3RhbnQoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XG5cdFx0cGFkZGluZy1ib3R0b206IGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtcblx0XHR6LWluZGV4OiA5OTk7XG5cdH1cblxuXHQucXVpY2stYWN0aW9ucyB7XG5cdFx0cGFkZGluZzogNnB4IDEwcHggNHB4O1xuXHR9XG5cblx0LnF1aWNrLWFjdGlvbnMuaG9yaXpvbnRhbCB7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdH1cblxuXHQucXVpY2stYWRkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdH1cblxuXHQucWEtYnRuIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdG1pbi13aWR0aDogOTZweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0XHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXHRcdHBhZGRpbmc6IDhweCAxMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogIzNiM2Y0NTtcblx0XHRib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA0KTtcblx0XHRtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdH1cblxuXHQucWEtYnRuLm1pbm9yIHtcblx0XHRiYWNrZ3JvdW5kOiAjZWZmMWZmO1xuXHRcdGNvbG9yOiAjNGU3YmZmO1xuXHR9XG5cblx0LnFhLWJ0bjpsYXN0LWNoaWxkIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdH1cblxuXHQuaW5wdXQtYmFyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0cGFkZGluZzogOHB4IDEwcHggMTJweDtcblx0XHRnYXA6IDhweDtcblx0XHRiYWNrZ3JvdW5kOiAjZjdmOGZjO1xuXHR9XG5cblx0LmlucHV0IHtcblx0XHRmbGV4OiAxO1xuXHRcdGJhY2tncm91bmQ6ICNmZmY7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjRweDtcblx0XHRwYWRkaW5nOiAxMHB4IDE0cHg7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHR9XG5cblx0LnBoIHtcblx0XHRjb2xvcjogIzlhYTNiMjtcblx0fVxuXG5cdC5taWMge1xuXHRcdHdpZHRoOiAzNnB4O1xuXHRcdGhlaWdodDogMzZweDtcblx0XHRib3JkZXItcmFkaXVzOiAxOHB4O1xuXHRcdC8qIGJhY2tncm91bmQ6ICM0RjQ2RTU7ICovXG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuXHR9XG5cblx0Lm1pYy5yZWNvcmRpbmcge1xuXHRcdGJhY2tncm91bmQ6ICNmZmZiZjA7XG5cdFx0Ym94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEoMjU1LCAxOTMsIDcsIDAuMjUpIGluc2V0O1xuXHR9XG5cblx0LnNlbmQge1xuXHRcdGhlaWdodDogMzZweDtcblx0XHR3aWR0aDogMzZweDtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0YmFja2dyb3VuZDogIzRlN2JmZjtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdH1cblxuXHQuZGlzYWJsZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XG5cdH1cblxuXHQubm9ybWFsIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjNGU3YmZmO1xuXHR9XG5cblx0LnJlY29yZC1tYXNrIHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHR0b3A6IDA7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHR6LWluZGV4OiAxMDAwMDU7XG5cdH1cblxuXHQucmVjb3JkLWJveCB7XG5cdFx0YmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjc1KTtcblx0XHRjb2xvcjogI2ZmZjtcblx0XHRwYWRkaW5nOiAxNnB4IDE4cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMTJweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1pbi13aWR0aDogMjIwcnB4O1x0XG5cdH1cblxuXHQucmVjb3JkLXRleHQge1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0fVxuXG5cdC5tYXNrLWxheWVyIHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHR0b3A6IDA7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjQpO1xuXHRcdHotaW5kZXg6IDEwMDAwNDtcblx0fVxuXG5cdC5jYW5jZWwge1xuXHRcdGNvbG9yOiByZWQ7XG5cdH1cbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///110\n"); +eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 19));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 21));\nvar _uploadVoice = __webpack_require__(/*! @/utils/uploadVoice.js */ 111);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n props: {\n inputText: {\n type: String,\n default: ''\n },\n isReplying: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n quickAskList: [{\n quickAskText: '设备运行情况'\n }, {\n quickAskText: '今日出入库数据'\n }],\n searchHeight: 0,\n inputTextValue: '',\n isRecording: false,\n willCancel: false,\n recorder: null,\n recordStartY: 0,\n recordStartTs: 0,\n recordSimTimer: null,\n dialogText: ''\n };\n },\n mounted: function mounted() {\n var self = this;\n uni.createSelectorQuery().select(\".dock\").boundingClientRect(function (rect) {\n self.searchHeight = Math.ceil(rect.height);\n }).exec();\n },\n beforeDestroy: function beforeDestroy() {\n if (this.recordSimTimer) {\n clearTimeout(this.recordSimTimer);\n }\n },\n watch: {\n inputText: function inputText(newValue) {\n this.inputTextValue = newValue;\n },\n inputTextValue: function inputTextValue(newValue) {\n this.$emit('changeInputText', newValue);\n }\n },\n methods: {\n deleteQucikAsk: function deleteQucikAsk(item) {\n var _this = this;\n uni.showModal({\n title: \"提示\",\n content: \"确定要删除这条快捷提问?\",\n success: function success(res) {\n if (res.confirm) {\n _this.quickAskList = _this.quickAskList.filter(function (ele) {\n return ele.quickAskText !== item.quickAskText;\n });\n uni.showToast({\n title: '删除成功',\n icon: 'none'\n });\n }\n }\n });\n },\n dialogInputClose: function dialogInputClose() {\n this.$emit('changeShow', false);\n },\n inputDialogToggle: function inputDialogToggle() {\n this.dialogText = '';\n this.$refs.inputDialog.open();\n this.$emit('changeShow', true);\n },\n dialogInputConfirm: function dialogInputConfirm() {\n var _this2 = this;\n this.$emit('changeShow', false);\n if (!this.dialogText || !this.dialogText.trim()) {\n // uni.showToast({\n // \ttitle: '内容不能为空',\n // \ticon: 'none'\n // })\n return;\n }\n var index = this.quickAskList.findIndex(function (item) {\n return item.quickAskText.trim() === _this2.dialogText.trim();\n });\n if (index > -1) {\n uni.showToast({\n title: '不能重复添加内容',\n icon: 'none'\n });\n return;\n }\n this.quickAskList.unshift({\n quickAskText: this.dialogText\n });\n },\n handleBreak: function handleBreak() {\n this.$emit('handleBreak');\n },\n getHeight: function getHeight() {\n return this.searchHeight;\n },\n onSwitchModel: function onSwitchModel() {\n uni.showToast({\n title: \"已切换为通用模型\",\n icon: \"none\"\n });\n },\n // 快速提问\n onQuickAsk: function onQuickAsk(text) {\n this.$emit('onQuickAsk', text);\n },\n onSend: function onSend() {\n if (this.isReplying) return;\n this.$emit('onSend');\n // 清空输入框并同步父组件\n this.inputTextValue = '';\n this.$emit('changeInputText', '');\n },\n ensureRecorder: function ensureRecorder() {\n var _this3 = this;\n if (this.recorder) return;\n try {\n this.recorder = uni.getRecorderManager && uni.getRecorderManager();\n } catch (e) {\n this.recorder = null;\n }\n if (this.recorder) {\n this.recorder.onStart();\n this.recorder.onStop( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(res) {\n var duration, text;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this3.$emit('changeShow', false);\n duration = Date.now() - _this3.recordStartTs;\n if (!(_this3.willCancel || duration < 700)) {\n _context.next = 5;\n break;\n }\n uni.showToast({\n title: duration < 700 ? \"说话时间太短\" : \"已取消\",\n icon: \"none\"\n });\n return _context.abrupt(\"return\");\n case 5:\n uni.showLoading({\n title: \"识别中...\",\n mask: true\n });\n _context.next = 8;\n return (0, _uploadVoice.recognizeAudio)(res.tempFilePath);\n case 8:\n text = _context.sent;\n if (text !== null && text !== void 0 && text.trim()) {\n _context.next = 12;\n break;\n }\n uni.showToast({\n title: '未识别到文字',\n icon: 'none'\n });\n return _context.abrupt(\"return\");\n case 12:\n _this3.$emit('changeInputText', text);\n uni.hideLoading();\n // TODO: 上传 res.tempFilePath 做识别;现用 mock\n // this.handleRecognizedText(this.mockSpeechToText(duration), res.tempFilePath, Math.ceil(\n // \tduration / 100) / 10)\n _this3.onSend();\n case 15:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n }\n },\n onPressMic: function onPressMic(e) {\n if (false) {}\n if (this.isLoading) return uni.showToast({\n title: \"AI正在回复中\",\n icon: \"none\"\n });\n if (uni.getAppAuthorizeSetting().microphoneAuthorized !== 'authorized') {\n uni.showModal({\n title: '权限设置',\n content: '应用缺乏必要的权限,是否前往手动授予该权限?',\n complete: function complete(res) {\n if (res.confirm) {\n uni.openAppAuthorizeSetting();\n }\n }\n });\n return;\n }\n this.$emit('changeShow', true);\n this.$emit('startRecord');\n this.ensureRecorder();\n this.isRecording = true;\n this.willCancel = false;\n this.recordStartTs = Date.now();\n this.recordStartY = e.changedTouches && e.changedTouches[0] ? e.changedTouches[0].clientY : 0;\n if (this.recorder) {\n try {\n this.recorder.start({\n format: \"amr\",\n sampleRate: 16000,\n numberOfChannels: 1,\n duration: 60000\n });\n } catch (err) {}\n } else {\n if (this.recordSimTimer) clearTimeout(this.recordSimTimer);\n this.recordSimTimer = setTimeout(function () {}, 60000);\n }\n },\n // 录音时移动\n onMoveMic: function onMoveMic(e) {\n if (!this.isRecording) return;\n var y = e.changedTouches && e.changedTouches[0] ? e.changedTouches[0].clientY : 0;\n this.willCancel = this.recordStartY - y > 60;\n },\n // 松开录音\n onReleaseMic: function onReleaseMic() {\n __f__(\"log\", 'onReleaseMic', \" at pages/index/search/index.vue:274\");\n if (!this.isRecording) return;\n this.isRecording = false;\n this.show = false;\n if (this.recorder) {\n try {\n this.recorder.stop();\n } catch (err) {\n __f__(\"log\", \"err\", err, \" at pages/index/search/index.vue:282\");\n }\n }\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvc2VhcmNoL2luZGV4LnZ1ZSJdLCJuYW1lcyI6WyJwcm9wcyIsImlucHV0VGV4dCIsInR5cGUiLCJkZWZhdWx0IiwiaXNSZXBseWluZyIsImRhdGEiLCJxdWlja0Fza0xpc3QiLCJxdWlja0Fza1RleHQiLCJzZWFyY2hIZWlnaHQiLCJpbnB1dFRleHRWYWx1ZSIsImlzUmVjb3JkaW5nIiwid2lsbENhbmNlbCIsInJlY29yZGVyIiwicmVjb3JkU3RhcnRZIiwicmVjb3JkU3RhcnRUcyIsInJlY29yZFNpbVRpbWVyIiwiZGlhbG9nVGV4dCIsIm1vdW50ZWQiLCJ1bmkiLCJzZWxmIiwiYmVmb3JlRGVzdHJveSIsImNsZWFyVGltZW91dCIsIndhdGNoIiwibWV0aG9kcyIsImRlbGV0ZVF1Y2lrQXNrIiwidGl0bGUiLCJjb250ZW50Iiwic3VjY2VzcyIsImljb24iLCJkaWFsb2dJbnB1dENsb3NlIiwiaW5wdXREaWFsb2dUb2dnbGUiLCJkaWFsb2dJbnB1dENvbmZpcm0iLCJoYW5kbGVCcmVhayIsImdldEhlaWdodCIsIm9uU3dpdGNoTW9kZWwiLCJvblF1aWNrQXNrIiwib25TZW5kIiwiZW5zdXJlUmVjb3JkZXIiLCJkdXJhdGlvbiIsIm1hc2siLCJ0ZXh0Iiwib25QcmVzc01pYyIsImNvbXBsZXRlIiwiZSIsImZvcm1hdCIsInNhbXBsZVJhdGUiLCJudW1iZXJPZkNoYW5uZWxzIiwib25Nb3ZlTWljIiwib25SZWxlYXNlTWljIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFtREE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQUdBO0VBQ0FBO0lBQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7SUFDQUM7TUFDQUY7TUFDQUM7SUFDQTtFQUNBO0VBQ0FFO0lBQ0E7TUFDQUMsZUFDQTtRQUNBQztNQUNBLEdBQ0E7UUFDQUE7TUFDQSxFQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0FDO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBckI7TUFDQTtJQUNBO0lBQ0FRO01BQ0E7SUFDQTtFQUNBO0VBQ0FjO0lBQ0FDO01BQUE7TUFDQU47UUFDQU87UUFDQUM7UUFDQUM7VUFDQTtZQUNBO2NBQUE7WUFBQTtZQUNBVDtjQUNBTztjQUNBRztZQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFBQTtNQUNBO01BQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO01BQ0E7TUFDQTtRQUFBO01BQUE7TUFDQTtRQUNBYjtVQUNBTztVQUNBRztRQUNBO1FBQ0E7TUFDQTtNQUNBO1FBQ0FyQjtNQUNBO0lBQ0E7SUFDQXlCO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQWhCO1FBQ0FPO1FBQ0FHO01BQ0E7SUFDQTtJQUNBO0lBQ0FPO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUFBO01BQ0E7TUFDQTtRQUNBO01BQ0E7UUFDQTtNQUNBO01BQ0E7UUFDQTtRQUNBO1VBQUE7WUFBQTtZQUFBO2NBQUE7Z0JBQUE7a0JBQUE7b0JBQ0E7b0JBQ0FDO29CQUFBLE1BQ0E7c0JBQUE7c0JBQUE7b0JBQUE7b0JBQ0FwQjtzQkFDQU87c0JBQ0FHO29CQUNBO29CQUFBO2tCQUFBO29CQUdBVjtzQkFDQU87c0JBQ0FjO29CQUNBO29CQUFBO29CQUFBLE9BQ0E7a0JBQUE7b0JBQUFDO29CQUFBLElBQ0FBO3NCQUFBO3NCQUFBO29CQUFBO29CQUNBdEI7c0JBQ0FPO3NCQUNBRztvQkFDQTtvQkFBQTtrQkFBQTtvQkFHQTtvQkFDQVY7b0JBQ0E7b0JBQ0E7b0JBQ0E7b0JBQ0E7a0JBQUE7a0JBQUE7b0JBQUE7Z0JBQUE7Y0FBQTtZQUFBO1VBQUEsQ0FDQTtVQUFBO1lBQUE7VUFBQTtRQUFBO01BQ0E7SUFDQTtJQUNBdUI7TUFDQSxhQU1BO01BQ0Esb0JBQ0E7UUFDQWhCO1FBQ0FHO01BQ0E7TUFDQTtRQUNBVjtVQUNBTztVQUNBQztVQUNBZ0I7WUFDQTtjQUNBeEI7WUFDQTtVQUNBO1FBQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0Esb0JBQ0F5QiwwQ0FDQUEsOEJBQ0E7TUFDQTtRQUNBO1VBQ0E7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQVI7VUFDQTtRQUNBO01BQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FTO01BQ0E7TUFDQSxRQUNBSiwwQ0FDQUEsOEJBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUs7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7VUFDQTtRQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEsMkIiLCJmaWxlIjoiMTEwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8dmlldz5cblx0XHQ8dmlldyBjbGFzcz1cImRvY2tcIj5cblx0XHRcdDx2aWV3IHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cblx0XHRcdFx0PHNjcm9sbC12aWV3IGNsYXNzPVwicXVpY2stYWN0aW9ucyBob3Jpem9udGFsXCIgc2Nyb2xsLXggc2hvdy1zY3JvbGxiYXI9XCJmYWxzZVwiXG5cdFx0XHRcdFx0c3R5bGU9XCJ3aWR0aDogY2FsYygxMDAlIC0gNTBweCk7XCI+XG5cdFx0XHRcdFx0PCEtLSA8dmlldyBjbGFzcz1cInFhLWJ0biBtaW5vclwiIEB0YXA9XCJvblN3aXRjaE1vZGVsXCI+5YiH5o2i5qih5Z6LPC92aWV3PiAtLT5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInFhLWJ0blwiIEB0YXA9XCJvblF1aWNrQXNrKGl0ZW0ucXVpY2tBc2tUZXh0KVwiIHYtZm9yPVwiaXRlbSBpbiBxdWlja0Fza0xpc3RcIlxuXHRcdFx0XHRcdFx0OmtleT1cIml0ZW0ucXVpY2tBc2tUZXh0XCIgQGxvbmdwcmVzcy5wcmV2ZW50PVwiZGVsZXRlUXVjaWtBc2soaXRlbSlcIj5cblx0XHRcdFx0XHRcdHt7IGl0ZW0ucXVpY2tBc2tUZXh0IH19XG5cdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHQ8L3Njcm9sbC12aWV3PlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInF1aWNrLWFkZFwiIEB0YXA9XCJpbnB1dERpYWxvZ1RvZ2dsZVwiPlxuXHRcdFx0XHRcdDxpbWFnZSBzdHlsZT1cIndpZHRoOiA0MHB4O1wiIHNyYz1cIkAvc3RhdGljL3BsdXMtY2lyY2xlLWZpbGwucG5nXCIgbW9kZT1cIndpZHRoRml4XCI+PC9pbWFnZT5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC1iYXJcIj5cblx0XHRcdFx0PGlucHV0IGNsYXNzPVwiaW5wdXRcIiBjb25maXJtLXR5cGU9XCJzZW5kXCIgdi1tb2RlbD1cImlucHV0VGV4dFZhbHVlXCIgQGNvbmZpcm09XCJvblNlbmQoKVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCLkvaDlj6/ku6Xor7TigKZcIiBwbGFjZWhvbGRlci1jbGFzcz1cInBoXCIgLz5cblx0XHRcdFx0PHZpZXcgOmNsYXNzPVwiWydtaWMnLCB7IHJlY29yZGluZzogaXNSZWNvcmRpbmcgfV1cIiBAdG91Y2hzdGFydC5zdG9wPVwib25QcmVzc01pY1wiXG5cdFx0XHRcdFx0QHRvdWNobW92ZS5zdG9wPVwib25Nb3ZlTWljXCIgQHRvdWNoZW5kLnN0b3A9XCJvblJlbGVhc2VNaWNcIj5cblx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vLi4vc3RhdGljL21pYy5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIj48L2ltYWdlPlxuXHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PCEtLSA8YnV0dG9uIGNsYXNzPVwic2VuZFwiIHR5cGU9XCJwcmltYXJ5XCIgQHRhcD1cIm9uU2VuZFwiPuWPkemAgTwvYnV0dG9uPiAtLT5cblx0XHRcdFx0PHZpZXdcblx0XHRcdFx0XHQ6Y2xhc3M9XCJbJ3NlbmQnLCAoIWlzUmVwbHlpbmcgJiYgaW5wdXRUZXh0VmFsdWUgJiYgaW5wdXRUZXh0VmFsdWUudHJpbSgpKSA/ICdub3JtYWwnIDogJ2Rpc2FibGVkJ11cIj5cblx0XHRcdFx0XHQ8aW1hZ2Ugdi1pZj1cImlzUmVwbHlpbmdcIiBzcmM9XCJAL3N0YXRpYy9icmVhay5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIiBzdHlsZT1cIndpZHRoOiAyMHB4O1wiXG5cdFx0XHRcdFx0XHRAdGFwPVwiaGFuZGxlQnJlYWtcIj48L2ltYWdlPlxuXHRcdFx0XHRcdDxpbWFnZSB2LWVsc2Ugc3JjPVwiQC9zdGF0aWMvdG9wLWFycm93cy5wbmdcIiBtb2RlPVwid2lkdGhGaXhcIiBzdHlsZT1cIndpZHRoOiAyMHB4O1wiIEB0YXA9XCJvblNlbmRcIj5cblx0XHRcdFx0XHQ8L2ltYWdlPlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3IHYtaWY9XCJpc1JlY29yZGluZ1wiICBjbGFzcz1cInJlY29yZC1tYXNrXCIgPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJyZWNvcmQtYm94XCIgOmNsYXNzPVwieyBjYW5jZWw6IHdpbGxDYW5jZWwgfVwiPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInJlY29yZC10ZXh0XCI+e3tcblx0XHRcdFx0d2lsbENhbmNlbCA/IFwi5p2+5byA5omL5oyH77yM5Y+W5raI5Y+R6YCBXCIgOiBcIuaJi+aMh+S4iua7ke+8jOWPlua2iOWPkemAgVwiXG5cdFx0XHRcdH19PC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXHRcdDwvdmlldz5cblxuXHRcdDx1bmktcG9wdXAgcmVmPVwiaW5wdXREaWFsb2dcIiB0eXBlPVwiZGlhbG9nXCIgc3R5bGU9XCJ6LWluZGV4OiAxMDAwMztcIiA+XG5cdFx0XHQ8dW5pLXBvcHVwLWRpYWxvZyByZWY9XCJpbnB1dENsb3NlXCIgbW9kZT1cImlucHV0XCIgdGl0bGU9XCLmt7vliqDlv6vmjbfmj5Dpl65cIiB2LW1vZGVsPVwiZGlhbG9nVGV4dFwiIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5YaF5a65XCJcblx0XHRcdFx0QGNvbmZpcm09XCJkaWFsb2dJbnB1dENvbmZpcm1cIiA6bWF4bGVuZ3RoPVwiMTVcIiBAY2xvc2U9J2RpYWxvZ0lucHV0Q2xvc2UnPjwvdW5pLXBvcHVwLWRpYWxvZz5cblx0XHQ8L3VuaS1wb3B1cD5cblxuXHRcdDx2aWV3IHYtaWY9XCJpc1JlY29yZGluZ1wiIGNsYXNzPVwibWFzay1sYXllclwiPiA8L3ZpZXc+XG5cdDwvdmlldz5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5cdGltcG9ydCB7XG5cdFx0cmVjb2duaXplQXVkaW9cblx0fSBmcm9tIFwiQC91dGlscy91cGxvYWRWb2ljZS5qc1wiO1xuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0cHJvcHM6IHtcblx0XHRcdGlucHV0VGV4dDoge1xuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0XHR9LFxuXHRcdFx0aXNSZXBseWluZzoge1xuXHRcdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0ZGF0YSgpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHF1aWNrQXNrTGlzdDogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHF1aWNrQXNrVGV4dCA6ICforr7lpIfov5DooYzmg4XlhrUnXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRxdWlja0Fza1RleHQgOiAn5LuK5pel5Ye65YWl5bqT5pWw5o2uJ1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XSxcblx0XHRcdFx0c2VhcmNoSGVpZ2h0OiAwLFxuXHRcdFx0XHRpbnB1dFRleHRWYWx1ZTogJycsXG5cdFx0XHRcdGlzUmVjb3JkaW5nOiBmYWxzZSxcblx0XHRcdFx0d2lsbENhbmNlbDogZmFsc2UsXG5cdFx0XHRcdHJlY29yZGVyOiBudWxsLFxuXHRcdFx0XHRyZWNvcmRTdGFydFk6IDAsXG5cdFx0XHRcdHJlY29yZFN0YXJ0VHM6IDAsXG5cdFx0XHRcdHJlY29yZFNpbVRpbWVyOiBudWxsLFxuXHRcdFx0XHRkaWFsb2dUZXh0OiAnJ1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0bW91bnRlZCgpIHtcblx0XHRcdGxldCBzZWxmID0gdGhpcztcblx0XHRcdHVuaS5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuc2VsZWN0KFwiLmRvY2tcIikuYm91bmRpbmdDbGllbnRSZWN0KChyZWN0KSA9PiB7XG5cdFx0XHRcdHNlbGYuc2VhcmNoSGVpZ2h0ID0gTWF0aC5jZWlsKHJlY3QuaGVpZ2h0KVxuXHRcdFx0fSkuZXhlYygpO1xuXHRcdH0sXG5cdFx0YmVmb3JlRGVzdHJveSgpIHtcblx0XHRcdGlmICh0aGlzLnJlY29yZFNpbVRpbWVyKSB7XG5cdFx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnJlY29yZFNpbVRpbWVyKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHdhdGNoOiB7XG5cdFx0XHRpbnB1dFRleHQobmV3VmFsdWUpIHtcblx0XHRcdFx0dGhpcy5pbnB1dFRleHRWYWx1ZSA9IG5ld1ZhbHVlO1xuXHRcdFx0fSxcblx0XHRcdGlucHV0VGV4dFZhbHVlKG5ld1ZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZUlucHV0VGV4dCcsIG5ld1ZhbHVlKVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0bWV0aG9kczoge1xuXHRcdFx0ZGVsZXRlUXVjaWtBc2soaXRlbSl7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwi56Gu5a6a6KaB5Yig6Zmk6L+Z5p2h5b+r5o235o+Q6Zeu77yfXCIsXG5cdFx0XHRcdFx0c3VjY2VzcyA6IHJlcyA9PiB7XG5cdFx0XHRcdFx0XHRpZihyZXMuY29uZmlybSl7XG5cdFx0XHRcdFx0XHRcdHRoaXMucXVpY2tBc2tMaXN0ID0gdGhpcy5xdWlja0Fza0xpc3QuZmlsdGVyKGVsZSA9PiBlbGUucXVpY2tBc2tUZXh0ICE9PSBpdGVtLnF1aWNrQXNrVGV4dCk7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAn5Yig6Zmk5oiQ5YqfJyxcblx0XHRcdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0ZGlhbG9nSW5wdXRDbG9zZSgpe1xuXHRcdFx0XHR0aGlzLiRlbWl0KCdjaGFuZ2VTaG93JyxmYWxzZSlcblx0XHRcdH0sXG5cdFx0XHRpbnB1dERpYWxvZ1RvZ2dsZSgpIHtcblx0XHRcdFx0dGhpcy5kaWFsb2dUZXh0ID0gJyc7XG5cdFx0XHRcdHRoaXMuJHJlZnMuaW5wdXREaWFsb2cub3BlbigpO1xuXHRcdFx0XHR0aGlzLiRlbWl0KCdjaGFuZ2VTaG93Jyx0cnVlKVxuXHRcdFx0fSxcblx0XHRcdGRpYWxvZ0lucHV0Q29uZmlybSgpIHtcblx0XHRcdFx0dGhpcy4kZW1pdCgnY2hhbmdlU2hvdycsZmFsc2UpXG5cdFx0XHRcdGlmKCF0aGlzLmRpYWxvZ1RleHQgfHwgIXRoaXMuZGlhbG9nVGV4dC50cmltKCkpe1xuXHRcdFx0XHRcdC8vIHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdC8vIFx0dGl0bGU6ICflhoXlrrnkuI3og73kuLrnqbonLFxuXHRcdFx0XHRcdC8vIFx0aWNvbjogJ25vbmUnXG5cdFx0XHRcdFx0Ly8gfSlcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0bGV0IGluZGV4ID0gdGhpcy5xdWlja0Fza0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5xdWlja0Fza1RleHQudHJpbSgpID09PSB0aGlzLmRpYWxvZ1RleHQudHJpbSgpKTtcblx0XHRcdFx0aWYoaW5kZXggPiAtMSl7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+S4jeiDvemHjeWkjea3u+WKoOWGheWuuScsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnF1aWNrQXNrTGlzdC51bnNoaWZ0KHtcblx0XHRcdFx0XHRxdWlja0Fza1RleHQgOiB0aGlzLmRpYWxvZ1RleHQsXHRcdFx0XHRcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0aGFuZGxlQnJlYWsoKSB7XG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2hhbmRsZUJyZWFrJylcblx0XHRcdH0sXG5cdFx0XHRnZXRIZWlnaHQoKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnNlYXJjaEhlaWdodFxuXHRcdFx0fSxcblx0XHRcdG9uU3dpdGNoTW9kZWwoKSB7XG5cdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuW3suWIh+aNouS4uumAmueUqOaooeWei1wiLFxuXHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQvLyDlv6vpgJ/mj5Dpl65cblx0XHRcdG9uUXVpY2tBc2sodGV4dCkge1xuXHRcdFx0XHR0aGlzLiRlbWl0KCdvblF1aWNrQXNrJywgdGV4dCk7XG5cdFx0XHR9LFxuXHRcdFx0b25TZW5kKCkge1xuXHRcdFx0XHRpZiAodGhpcy5pc1JlcGx5aW5nKSByZXR1cm47XG5cdFx0XHRcdHRoaXMuJGVtaXQoJ29uU2VuZCcpXG5cdFx0XHRcdC8vIOa4heepuui+k+WFpeahhuW5tuWQjOatpeeItue7hOS7tlxuXHRcdFx0XHR0aGlzLmlucHV0VGV4dFZhbHVlID0gJydcblx0XHRcdFx0dGhpcy4kZW1pdCgnY2hhbmdlSW5wdXRUZXh0JywgJycpXG5cdFx0XHR9LFxuXHRcdFx0ZW5zdXJlUmVjb3JkZXIoKSB7XG5cdFx0XHRcdGlmICh0aGlzLnJlY29yZGVyKSByZXR1cm47XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dGhpcy5yZWNvcmRlciA9IHVuaS5nZXRSZWNvcmRlck1hbmFnZXIgJiYgdW5pLmdldFJlY29yZGVyTWFuYWdlcigpO1xuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0dGhpcy5yZWNvcmRlciA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMucmVjb3JkZXIpIHtcblx0XHRcdFx0XHR0aGlzLnJlY29yZGVyLm9uU3RhcnQoKTtcblx0XHRcdFx0XHR0aGlzLnJlY29yZGVyLm9uU3RvcChhc3luYyAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLiRlbWl0KCdjaGFuZ2VTaG93JyxmYWxzZSlcblx0XHRcdFx0XHRcdGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHRoaXMucmVjb3JkU3RhcnRUcztcblx0XHRcdFx0XHRcdGlmICh0aGlzLndpbGxDYW5jZWwgfHwgZHVyYXRpb24gPCA3MDApIHtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IGR1cmF0aW9uIDwgNzAwID8gXCLor7Tor53ml7bpl7TlpKrnn61cIiA6IFwi5bey5Y+W5raIXCIsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLor4bliKvkuK0uLi5cIixcblx0XHRcdFx0XHRcdFx0bWFzazogdHJ1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjb25zdCB0ZXh0ID0gYXdhaXQgcmVjb2duaXplQXVkaW8ocmVzLnRlbXBGaWxlUGF0aCk7XG5cdFx0XHRcdFx0XHRpZiAoIXRleHQ/LnRyaW0oKSkge1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ+acquivhuWIq+WIsOaWh+WtlycsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NoYW5nZUlucHV0VGV4dCcsIHRleHQpXG5cdFx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0XHRcdC8vIFRPRE86IOS4iuS8oCByZXMudGVtcEZpbGVQYXRoIOWBmuivhuWIq++8m+eOsOeUqCBtb2NrXG5cdFx0XHRcdFx0XHQvLyB0aGlzLmhhbmRsZVJlY29nbml6ZWRUZXh0KHRoaXMubW9ja1NwZWVjaFRvVGV4dChkdXJhdGlvbiksIHJlcy50ZW1wRmlsZVBhdGgsIE1hdGguY2VpbChcblx0XHRcdFx0XHRcdC8vIFx0ZHVyYXRpb24gLyAxMDApIC8gMTApXG5cdFx0XHRcdFx0XHR0aGlzLm9uU2VuZCgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b25QcmVzc01pYyhlKSB7XG5cdFx0XHRcdGlmIChwcm9jZXNzLmVudi5VTklfUExBVEZPUk0gIT09ICdBUFAtUExVUycgJiYgcHJvY2Vzcy5lbnYuVU5JX1BMQVRGT1JNICE9PSAnYXBwLXBsdXMnKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+W9k+WJjeaooeW8j+aaguaXtuWPquWcqEFQUOaUr+aMgScsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5pc0xvYWRpbmcpXG5cdFx0XHRcdFx0cmV0dXJuIHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwiQUnmraPlnKjlm57lpI3kuK1cIixcblx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAodW5pLmdldEFwcEF1dGhvcml6ZVNldHRpbmcoKS5taWNyb3Bob25lQXV0aG9yaXplZCAhPT0gJ2F1dGhvcml6ZWQnKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+adg+mZkOiuvue9ricsXG5cdFx0XHRcdFx0XHRjb250ZW50OiAn5bqU55So57y65LmP5b+F6KaB55qE5p2D6ZmQ77yM5piv5ZCm5YmN5b6A5omL5Yqo5o6I5LqI6K+l5p2D6ZmQ77yfJyxcblx0XHRcdFx0XHRcdGNvbXBsZXRlOiByZXMgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAocmVzLmNvbmZpcm0pIHtcblx0XHRcdFx0XHRcdFx0XHR1bmkub3BlbkFwcEF1dGhvcml6ZVNldHRpbmcoKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLiRlbWl0KCdjaGFuZ2VTaG93Jyx0cnVlKTtcblx0XHRcdFx0dGhpcy4kZW1pdCgnc3RhcnRSZWNvcmQnKVxuXHRcdFx0XHR0aGlzLmVuc3VyZVJlY29yZGVyKCk7XG5cdFx0XHRcdHRoaXMuaXNSZWNvcmRpbmcgPSB0cnVlO1xuXHRcdFx0XHR0aGlzLndpbGxDYW5jZWwgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5yZWNvcmRTdGFydFRzID0gRGF0ZS5ub3coKTtcblx0XHRcdFx0dGhpcy5yZWNvcmRTdGFydFkgPVxuXHRcdFx0XHRcdGUuY2hhbmdlZFRvdWNoZXMgJiYgZS5jaGFuZ2VkVG91Y2hlc1swXSA/XG5cdFx0XHRcdFx0ZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZIDpcblx0XHRcdFx0XHQwO1xuXHRcdFx0XHRpZiAodGhpcy5yZWNvcmRlcikge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHR0aGlzLnJlY29yZGVyLnN0YXJ0KHtcblx0XHRcdFx0XHRcdFx0Zm9ybWF0OiBcImFtclwiLFxuXHRcdFx0XHRcdFx0XHRzYW1wbGVSYXRlOiAxNjAwMCxcblx0XHRcdFx0XHRcdFx0bnVtYmVyT2ZDaGFubmVsczogMSxcblx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDYwMDAwLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmICh0aGlzLnJlY29yZFNpbVRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5yZWNvcmRTaW1UaW1lcik7XG5cdFx0XHRcdFx0dGhpcy5yZWNvcmRTaW1UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge30sIDYwMDAwKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdC8vIOW9lemfs+aXtuenu+WKqFxuXHRcdFx0b25Nb3ZlTWljKGUpIHtcblx0XHRcdFx0aWYgKCF0aGlzLmlzUmVjb3JkaW5nKSByZXR1cm47XG5cdFx0XHRcdGNvbnN0IHkgPVxuXHRcdFx0XHRcdGUuY2hhbmdlZFRvdWNoZXMgJiYgZS5jaGFuZ2VkVG91Y2hlc1swXSA/XG5cdFx0XHRcdFx0ZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZIDpcblx0XHRcdFx0XHQwO1xuXHRcdFx0XHR0aGlzLndpbGxDYW5jZWwgPSB0aGlzLnJlY29yZFN0YXJ0WSAtIHkgPiA2MDtcblx0XHRcdH0sXG5cdFx0XHQvLyDmnb7lvIDlvZXpn7Ncblx0XHRcdG9uUmVsZWFzZU1pYygpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ29uUmVsZWFzZU1pYycpO1xuXHRcdFx0XHRpZiAoIXRoaXMuaXNSZWNvcmRpbmcpIHJldHVybjtcblx0XHRcdFx0dGhpcy5pc1JlY29yZGluZyA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLnNob3cgPSBmYWxzZTtcblx0XHRcdFx0aWYgKHRoaXMucmVjb3JkZXIpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0dGhpcy5yZWNvcmRlci5zdG9wKCk7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcImVyclwiLCBlcnIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG5cdC5kb2NrIHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHRib3R0b206IDA7XG5cdFx0YmFja2dyb3VuZDogI2Y3ZjhmYztcblx0XHRib3gtc2hhZG93OiAwIC00cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuXHRcdHBhZGRpbmctYm90dG9tOiBjb25zdGFudChzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtcblx0XHRwYWRkaW5nLWJvdHRvbTogZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO1xuXHRcdHotaW5kZXg6IDk5OTtcblx0fVxuXG5cdC5xdWljay1hY3Rpb25zIHtcblx0XHRwYWRkaW5nOiA2cHggMTBweCA0cHg7XHJcblx0XHRwYWRkaW5nLXRvcDogMTVweDtcblx0fVxuXG5cdC5xdWljay1hY3Rpb25zLmhvcml6b250YWwge1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0cGFkZGluZy1yaWdodDogMTBweDtcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHR9XG5cblx0LnF1aWNrLWFkZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR9XG5cblx0LnFhLWJ0biB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRtaW4td2lkdGg6IDk2cHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGJhY2tncm91bmQ6ICNmZmY7XG5cdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcblx0XHRwYWRkaW5nOiA4cHggMTBweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICMzYjNmNDU7XG5cdFx0Ym94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG5cdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xuXHR9XG5cblx0LnFhLWJ0bi5taW5vciB7XG5cdFx0YmFja2dyb3VuZDogI2VmZjFmZjtcblx0XHRjb2xvcjogIzRlN2JmZjtcblx0fVxuXG5cdC5xYS1idG46bGFzdC1jaGlsZCB7XG5cdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHR9XG5cblx0LmlucHV0LWJhciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdHBhZGRpbmc6IDhweCAxMHB4IDEycHg7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0YmFja2dyb3VuZDogI2Y3ZjhmYztcblx0fVxuXG5cdC5pbnB1dCB7XG5cdFx0ZmxleDogMTtcblx0XHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRcdGJvcmRlci1yYWRpdXM6IDI0cHg7XG5cdFx0cGFkZGluZzogMTBweCAxNHB4O1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0fVxuXG5cdC5waCB7XG5cdFx0Y29sb3I6ICM5YWEzYjI7XG5cdH1cblxuXHQubWljIHtcblx0XHR3aWR0aDogMzZweDtcblx0XHRoZWlnaHQ6IDM2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMThweDtcblx0XHQvKiBiYWNrZ3JvdW5kOiAjNEY0NkU1OyAqL1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA2KTtcblx0fVxuXG5cdC5taWMucmVjb3JkaW5nIHtcblx0XHRiYWNrZ3JvdW5kOiAjZmZmYmYwO1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDI1NSwgMTkzLCA3LCAwLjI1KSBpbnNldDtcblx0fVxuXG5cdC5zZW5kIHtcblx0XHRoZWlnaHQ6IDM2cHg7XG5cdFx0d2lkdGg6IDM2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdGJhY2tncm91bmQ6ICM0ZTdiZmY7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR9XG5cblx0LmRpc2FibGVkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xuXHR9XG5cblx0Lm5vcm1hbCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzRlN2JmZjtcblx0fVxuXG5cdC5yZWNvcmQtbWFzayB7XG5cdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdGxlZnQ6IDA7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0dG9wOiAwO1xuXHRcdGJvdHRvbTogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0ei1pbmRleDogMTAwMDA1O1xuXHR9XG5cblx0LnJlY29yZC1ib3gge1xuXHRcdGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43NSk7XG5cdFx0Y29sb3I6ICNmZmY7XG5cdFx0cGFkZGluZzogMTZweCAxOHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDEycHg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRtaW4td2lkdGg6IDIyMHJweDtcdFxuXHR9XG5cblx0LnJlY29yZC10ZXh0IHtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdH1cblxuXHQubWFzay1sYXllciB7XG5cdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdGxlZnQ6IDA7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0dG9wOiAwO1xuXHRcdGJvdHRvbTogMDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC40KTtcblx0XHR6LWluZGV4OiAxMDAwMDQ7XG5cdH1cblxuXHQuY2FuY2VsIHtcblx0XHRjb2xvcjogcmVkO1xuXHR9XG48L3N0eWxlPiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///110\n"); /***/ }), /* 111 */ diff --git a/unpackage/dist/dev/app-plus/app-view.js b/unpackage/dist/dev/app-plus/app-view.js index 1311fd9..2a3225f 100644 --- a/unpackage/dist/dev/app-plus/app-view.js +++ b/unpackage/dist/dev/app-plus/app-view.js @@ -293,7 +293,6 @@ var render = function () { _c( "v-uni-scroll-view", { - ref: "scrollView", staticClass: _vm._$g(4, "sc"), attrs: { "scroll-y": true, @@ -304,6 +303,7 @@ var render = function () { }, [ _c("front", { + ref: "front", attrs: { _i: 5 }, on: { onSuggestionTap: function ($event) { @@ -2339,6 +2339,7 @@ var render = function () { { staticClass: _vm._$g(1, "sc"), attrs: { _i: 1 } }, [ _c("v-uni-image", { + staticClass: _vm._$g(2, "sc"), staticStyle: { width: "60px", "margin-right": "10px" }, attrs: { src: "/static/ai.webp", mode: "widthFix", _i: 2 }, }), @@ -2507,7 +2508,7 @@ if(false) {} var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 28); exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.i, "\n.greet-card[data-v-eb9a4df4] {\n\tdisplay: flex;\n\talign-items: center;\n\tbackground: #fff;\n\tborder-radius: 14px;\n\tpadding: 12px;\n\tmargin-bottom: 10px;\n}\n.greet-text .hi[data-v-eb9a4df4] {\n\tfont-size: 16px;\n\tfont-weight: 700;\n\tcolor: #0b56ff;\n}\n.greet-text .sub[data-v-eb9a4df4] {\n\tfont-size: 12px;\n\tcolor: #4a76b1;\n\tmargin-top: 4px;\n}\n.welcome[data-v-eb9a4df4] {\n\tfont-size: 13px;\n\tcolor: #333;\n\tbackground: #fff;\n\tborder-radius: 12px;\n\tpadding: 10px 12px;\n\tmargin: 12px 0;\n}\n.guess-panel[data-v-eb9a4df4] {\n\tbackground: #fff;\n\tborder-radius: 14px;\n\tpadding: 10px;\n\tmargin-bottom: 16px;\n}\n.guess-title[data-v-eb9a4df4] {\n\tcolor: #5f6fff;\n\tfont-size: 14px;\n\tmargin-bottom: 8px;\n}\n.guess-list[data-v-eb9a4df4] {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.guess-item[data-v-eb9a4df4] {\n\tbackground: #f7f8fc;\n\tborder-radius: 10px;\n\tpadding: 12px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tmargin-bottom: 10px;\n\tbox-sizing: border-box;\n}\n.guess-item[data-v-eb9a4df4]:last-child {\n\tmargin-bottom: 0;\n}\n.guess-item .arrow[data-v-eb9a4df4] {\n\tcolor: #9aa3b2;\n\tfont-size: 18px;\n}\n", ""]); +exports.push([module.i, "\n.greet-card[data-v-eb9a4df4] {\n\tdisplay: flex;\n\talign-items: center;\n\tbackground-image: linear-gradient(to right, #EFF6FF, #EEF2FF);\n\tborder-radius: 14px;\n\tpadding: 12px;\n\tmargin-bottom: 10px;\n}\n.greet-text .hi[data-v-eb9a4df4] {\n\tfont-size: 16px;\n\tfont-weight: 700;\n\tcolor: #0b56ff;\n}\n.greet-text .sub[data-v-eb9a4df4] {\n\tfont-size: 12px;\n\tcolor: #4a76b1;\n\tmargin-top: 4px;\n}\n.welcome[data-v-eb9a4df4] {\n\tfont-size: 13px;\n\tcolor: #333;\n\tbackground: #F3F7F9;\n\tborder-radius: 12px;\n\tpadding: 10px 12px;\n\tmargin: 12px 0;\n\tmax-width: 80%;\n}\n.guess-panel[data-v-eb9a4df4] {\n\tbackground-image: linear-gradient(to right, #EFF6FF, #EEF2FF);\n\tborder-radius: 14px;\n\tpadding: 10px;\n\tmargin-bottom: 16px;\n}\n.guess-title[data-v-eb9a4df4] {\n\tcolor: #5f6fff;\n\tfont-size: 14px;\n\tmargin-bottom: 8px;\n}\n.guess-list[data-v-eb9a4df4] {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.guess-item[data-v-eb9a4df4] {\n\tbackground: #FFFFFF ;\n\tborder-radius: 10px;\n\tpadding: 12px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tmargin-bottom: 10px;\n\tbox-sizing: border-box;\n}\n.guess-item[data-v-eb9a4df4]:last-child {\n\tmargin-bottom: 0;\n}\n.guess-item .arrow[data-v-eb9a4df4] {\n\tcolor: #9aa3b2;\n\tfont-size: 18px;\n}\n", ""]); // Exports module.exports = exports; @@ -3571,7 +3572,7 @@ if(false) {} var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 28); exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.i, "@charset \"UTF-8\";\r\n/**\r\n * 这里是uni-app内置的常用样式变量\r\n *\r\n * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量\r\n * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App\r\n *\r\n */\r\n/**\r\n * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能\r\n *\r\n * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件\r\n */\r\n/* 颜色变量 */\r\n/* 行为相关颜色 */\r\n/* 文字基本颜色 */\r\n/* 背景颜色 */\r\n/* 边框颜色 */\r\n/* 尺寸变量 */\r\n/* 文字尺寸 */\r\n/* 图片尺寸 */\r\n/* Border Radius */\r\n/* 水平间距 */\r\n/* 垂直间距 */\r\n/* 透明度 */\r\n/* 文章场景相关 */\n.chat[data-v-814c5d9e] {\r\n margin: 6px 0 12px;\r\n position: relative;\n}\n.msg[data-v-814c5d9e] {\r\n /* margin: 10px 0; */\r\n display: flex;\r\n margin-bottom: 10px;\r\n padding-bottom: 10px;\r\n flex-wrap: wrap;\n}\n.msg.user[data-v-814c5d9e] {\r\n justify-content: flex-end;\n}\n.bubble[data-v-814c5d9e] {\r\n max-width: 80%;\r\n padding: 10px 12px;\r\n border-radius: 14px;\r\n line-height: 1.5;\n}\n.user-bubble[data-v-814c5d9e] {\r\n background: #4e7bff;\r\n color: #fff;\r\n border-bottom-right-radius: 4px;\r\n margin-right: 6px;\n}\n.ai-bubble[data-v-814c5d9e] {\r\n background: #fff;\r\n color: #333;\r\n border-bottom-left-radius: 4px;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n.continue-create[data-v-814c5d9e] {\r\n width: 100%;\n}\n.continue-create .text[data-v-814c5d9e] {\r\n font-size: 12px;\r\n border: 1px solid #ddd;\r\n border-radius: 20px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 90px;\r\n padding: 5px 0;\r\n margin-top: 8px;\n}\n.tool-box[data-v-814c5d9e] {\r\n width: 100%;\r\n margin-top: 15px;\r\n padding-left: 5px;\r\n display: flex;\r\n align-items: center;\n}\n.tool-box .tool-image[data-v-814c5d9e] {\r\n width: 14px;\r\n margin-right: 15px;\n}\n.tool-box .rote[data-v-814c5d9e] {\r\n -webkit-transform: rotate(180deg);\r\n transform: rotate(180deg);\n}\n.listen-btn[data-v-814c5d9e] {\r\n margin-left: 8px;\r\n color: #6b7280;\r\n font-size: 14px;\n}\n.ai-card-title[data-v-814c5d9e] {\r\n color: #5f6fff;\r\n font-weight: 600;\r\n margin-bottom: 6px;\n}\n.ai-card-body[data-v-814c5d9e] {\r\n color: #666;\n}\r\n/* loading animation */\n.ai-loading[data-v-814c5d9e] {\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n padding: 4px 0;\n}\n.loading-dot[data-v-814c5d9e] {\r\n width: 8px;\r\n height: 8px;\r\n border-radius: 50%;\r\n background: #9ca3af;\r\n -webkit-animation: loading-bounce-data-v-814c5d9e 1.5s ease-in-out infinite both;\r\n animation: loading-bounce-data-v-814c5d9e 1.5s ease-in-out infinite both;\n}\n.loading-dot[data-v-814c5d9e]:nth-child(1) {\r\n -webkit-animation-delay: -0.32s;\r\n animation-delay: -0.32s;\n}\n.loading-dot[data-v-814c5d9e]:nth-child(2) {\r\n -webkit-animation-delay: -0.16s;\r\n animation-delay: -0.16s;\n}\n@-webkit-keyframes loading-bounce-data-v-814c5d9e {\n0%,\r\n 80%,\r\n 100% {\r\n -webkit-transform: scale(0.8);\r\n transform: scale(0.8);\r\n opacity: 0.5;\n}\n40% {\r\n -webkit-transform: scale(1.2);\r\n transform: scale(1.2);\r\n opacity: 1;\n}\n}\n@keyframes loading-bounce-data-v-814c5d9e {\n0%,\r\n 80%,\r\n 100% {\r\n -webkit-transform: scale(0.8);\r\n transform: scale(0.8);\r\n opacity: 0.5;\n}\n40% {\r\n -webkit-transform: scale(1.2);\r\n transform: scale(1.2);\r\n opacity: 1;\n}\n}\n.text-voice[data-v-814c5d9e] {\r\n display: flex;\r\n align-items: center;\n}\n.voice-play[data-v-814c5d9e] {\r\n width: 20px;\r\n margin-left: 5px;\n}\n.text-tool[data-v-814c5d9e] {\r\n position: absolute;\r\n background-color: #fff;\r\n z-index: 10000;\r\n color: #000;\r\n border-radius: 5px;\r\n box-shadow: 0 0 1px 1px #e4e4e4;\r\n opacity: 0;\r\n -webkit-transform: translateY(-10px) scale(0.9);\r\n transform: translateY(-10px) scale(0.9);\r\n transition: opacity 0.3s ease, -webkit-transform 0.3s ease;\r\n transition: opacity 0.3s ease, transform 0.3s ease;\r\n transition: opacity 0.3s ease, transform 0.3s ease, -webkit-transform 0.3s ease;\n}\n.text-tool.show[data-v-814c5d9e] {\r\n opacity: 1;\r\n -webkit-transform: translateY(0) scale(1);\r\n transform: translateY(0) scale(1);\n}\n.text-tool .tool-item[data-v-814c5d9e] {\r\n display: flex;\r\n width: 160px;\r\n padding: 10px;\r\n box-sizing: border-box;\r\n align-items: center;\r\n border-bottom: 1px solid #ddd;\r\n font-size: 14px;\r\n opacity: 0;\r\n -webkit-transform: translateX(-10px);\r\n transform: translateX(-10px);\r\n -webkit-animation: slideInItem-data-v-814c5d9e 0.3s ease forwards;\r\n animation: slideInItem-data-v-814c5d9e 0.3s ease forwards;\n}\n.text-tool .tool-item[data-v-814c5d9e]:last-child {\r\n border-bottom: 0px;\n}\n.text-tool .img[data-v-814c5d9e] {\r\n width: 16px;\r\n margin-right: 10px;\n}\n@-webkit-keyframes slideInItem-data-v-814c5d9e {\nfrom {\r\n opacity: 0;\r\n -webkit-transform: translateX(-10px);\r\n transform: translateX(-10px);\n}\nto {\r\n opacity: 1;\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\n}\n}\n@keyframes slideInItem-data-v-814c5d9e {\nfrom {\r\n opacity: 0;\r\n -webkit-transform: translateX(-10px);\r\n transform: translateX(-10px);\n}\nto {\r\n opacity: 1;\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\n}\n}\n.popup[data-v-814c5d9e] {\r\n z-index: 99999;\n}\n.feedback[data-v-814c5d9e] {\r\n background-color: #fff;\r\n padding: 0 20px;\r\n border-radius: 10px 10px 0 0;\r\n padding-bottom: 20px;\n}\n.feedback .top[data-v-814c5d9e] {\r\n position: relative;\r\n text-align: center;\r\n padding: 10px 0;\n}\n.feedback .top .title[data-v-814c5d9e] {\r\n font-weight: bold;\n}\n.feedback .top .close[data-v-814c5d9e] {\r\n background-color: #ddd;\r\n width: 24px;\r\n height: 24px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n position: absolute;\r\n right: 0;\r\n top: 50%;\r\n -webkit-transform: translateY(-50%);\r\n transform: translateY(-50%);\r\n font-size: 18px;\n}\n.feedback .quick-ask[data-v-814c5d9e] {\r\n display: flex;\n}\n.feedback .quick-ask .ask[data-v-814c5d9e] {\r\n padding: 5px 15px;\r\n border: 1px solid #ddd;\r\n border-radius: 10px;\r\n margin-right: 10px;\r\n font-size: 14px;\n}\n.feedback .quick-ask .active[data-v-814c5d9e] {\r\n background-color: #007AFF;\r\n color: #fff;\n}\n.feedback .textarea[data-v-814c5d9e] {\r\n width: 100%;\r\n background-color: rgba(45, 44, 46, 0.05);\r\n padding: 10px 12px;\r\n box-sizing: border-box;\r\n margin-bottom: 20px;\r\n margin-top: 10px;\r\n border-radius: 10px;\r\n font-size: 14px;\n}\n.mark-layer[data-v-814c5d9e] {\r\n position: fixed;\r\n width: 100vw;\r\n height: 100vh;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 9999;\r\n opacity: 0;\n}\n.ai-voice-play[data-v-814c5d9e] {\r\n width: 60px;\r\n background-color: #fff;\r\n margin-bottom: 10px;\r\n padding: 10px 12px;\r\n border-radius: 14px;\r\n display: flex;\r\n align-items: center;\n}\r\n", ""]); +exports.push([module.i, "@charset \"UTF-8\";\r\n/**\r\n * 这里是uni-app内置的常用样式变量\r\n *\r\n * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量\r\n * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App\r\n *\r\n */\r\n/**\r\n * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能\r\n *\r\n * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件\r\n */\r\n/* 颜色变量 */\r\n/* 行为相关颜色 */\r\n/* 文字基本颜色 */\r\n/* 背景颜色 */\r\n/* 边框颜色 */\r\n/* 尺寸变量 */\r\n/* 文字尺寸 */\r\n/* 图片尺寸 */\r\n/* Border Radius */\r\n/* 水平间距 */\r\n/* 垂直间距 */\r\n/* 透明度 */\r\n/* 文章场景相关 */\n.chat[data-v-814c5d9e] {\r\n margin: 6px 0 12px;\r\n position: relative;\n}\n.msg[data-v-814c5d9e] {\r\n /* margin: 10px 0; */\r\n display: flex;\r\n margin-bottom: 10px;\r\n padding-bottom: 10px;\r\n flex-wrap: wrap;\n}\n.msg.user[data-v-814c5d9e] {\r\n justify-content: flex-end;\n}\n.bubble[data-v-814c5d9e] {\r\n max-width: 80%;\r\n padding: 10px 12px;\r\n border-radius: 14px;\r\n line-height: 1.5;\n}\n.user-bubble[data-v-814c5d9e] {\r\n background: #4e7bff;\r\n color: #fff;\r\n border-bottom-right-radius: 4px;\r\n margin-right: 6px;\n}\n.ai-bubble[data-v-814c5d9e] {\r\n background: #F3F7F9;\r\n color: #333;\r\n border-bottom-left-radius: 4px;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n.continue-create[data-v-814c5d9e] {\r\n width: 100%;\n}\n.continue-create .text[data-v-814c5d9e] {\r\n font-size: 12px;\r\n border: 1px solid #ddd;\r\n border-radius: 20px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 90px;\r\n padding: 5px 0;\r\n margin-top: 8px;\n}\n.tool-box[data-v-814c5d9e] {\r\n width: 100%;\r\n margin-top: 15px;\r\n padding-left: 5px;\r\n display: flex;\r\n align-items: center;\n}\n.tool-box .tool-image[data-v-814c5d9e] {\r\n width: 14px;\r\n margin-right: 15px;\n}\n.tool-box .rote[data-v-814c5d9e] {\r\n -webkit-transform: rotate(180deg);\r\n transform: rotate(180deg);\n}\n.listen-btn[data-v-814c5d9e] {\r\n margin-left: 8px;\r\n color: #6b7280;\r\n font-size: 14px;\n}\n.ai-card-title[data-v-814c5d9e] {\r\n color: #5f6fff;\r\n font-weight: 600;\r\n margin-bottom: 6px;\n}\n.ai-card-body[data-v-814c5d9e] {\r\n color: #666;\n}\r\n/* loading animation */\n.ai-loading[data-v-814c5d9e] {\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n padding: 4px 0;\n}\n.loading-dot[data-v-814c5d9e] {\r\n width: 8px;\r\n height: 8px;\r\n border-radius: 50%;\r\n background: #9ca3af;\r\n -webkit-animation: loading-bounce-data-v-814c5d9e 1.5s ease-in-out infinite both;\r\n animation: loading-bounce-data-v-814c5d9e 1.5s ease-in-out infinite both;\n}\n.loading-dot[data-v-814c5d9e]:nth-child(1) {\r\n -webkit-animation-delay: -0.32s;\r\n animation-delay: -0.32s;\n}\n.loading-dot[data-v-814c5d9e]:nth-child(2) {\r\n -webkit-animation-delay: -0.16s;\r\n animation-delay: -0.16s;\n}\n@-webkit-keyframes loading-bounce-data-v-814c5d9e {\n0%,\r\n 80%,\r\n 100% {\r\n -webkit-transform: scale(0.8);\r\n transform: scale(0.8);\r\n opacity: 0.5;\n}\n40% {\r\n -webkit-transform: scale(1.2);\r\n transform: scale(1.2);\r\n opacity: 1;\n}\n}\n@keyframes loading-bounce-data-v-814c5d9e {\n0%,\r\n 80%,\r\n 100% {\r\n -webkit-transform: scale(0.8);\r\n transform: scale(0.8);\r\n opacity: 0.5;\n}\n40% {\r\n -webkit-transform: scale(1.2);\r\n transform: scale(1.2);\r\n opacity: 1;\n}\n}\n.text-voice[data-v-814c5d9e] {\r\n display: flex;\r\n align-items: center;\n}\n.voice-play[data-v-814c5d9e] {\r\n width: 20px;\r\n margin-left: 5px;\n}\n.text-tool[data-v-814c5d9e] {\r\n position: absolute;\r\n background-color: #fff;\r\n z-index: 10000;\r\n color: #000;\r\n border-radius: 5px;\r\n box-shadow: 0 0 1px 1px #e4e4e4;\r\n opacity: 0;\r\n -webkit-transform: translateY(-10px) scale(0.9);\r\n transform: translateY(-10px) scale(0.9);\r\n transition: opacity 0.3s ease, -webkit-transform 0.3s ease;\r\n transition: opacity 0.3s ease, transform 0.3s ease;\r\n transition: opacity 0.3s ease, transform 0.3s ease, -webkit-transform 0.3s ease;\n}\n.text-tool.show[data-v-814c5d9e] {\r\n opacity: 1;\r\n -webkit-transform: translateY(0) scale(1);\r\n transform: translateY(0) scale(1);\n}\n.text-tool .tool-item[data-v-814c5d9e] {\r\n display: flex;\r\n width: 160px;\r\n padding: 10px;\r\n box-sizing: border-box;\r\n align-items: center;\r\n border-bottom: 1px solid #ddd;\r\n font-size: 14px;\r\n opacity: 0;\r\n -webkit-transform: translateX(-10px);\r\n transform: translateX(-10px);\r\n -webkit-animation: slideInItem-data-v-814c5d9e 0.3s ease forwards;\r\n animation: slideInItem-data-v-814c5d9e 0.3s ease forwards;\n}\n.text-tool .tool-item[data-v-814c5d9e]:last-child {\r\n border-bottom: 0px;\n}\n.text-tool .img[data-v-814c5d9e] {\r\n width: 16px;\r\n margin-right: 10px;\n}\n@-webkit-keyframes slideInItem-data-v-814c5d9e {\nfrom {\r\n opacity: 0;\r\n -webkit-transform: translateX(-10px);\r\n transform: translateX(-10px);\n}\nto {\r\n opacity: 1;\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\n}\n}\n@keyframes slideInItem-data-v-814c5d9e {\nfrom {\r\n opacity: 0;\r\n -webkit-transform: translateX(-10px);\r\n transform: translateX(-10px);\n}\nto {\r\n opacity: 1;\r\n -webkit-transform: translateX(0);\r\n transform: translateX(0);\n}\n}\n.popup[data-v-814c5d9e] {\r\n z-index: 99999;\n}\n.feedback[data-v-814c5d9e] {\r\n background-color: #fff;\r\n padding: 0 20px;\r\n border-radius: 10px 10px 0 0;\r\n padding-bottom: 20px;\n}\n.feedback .top[data-v-814c5d9e] {\r\n position: relative;\r\n text-align: center;\r\n padding: 10px 0;\n}\n.feedback .top .title[data-v-814c5d9e] {\r\n font-weight: bold;\n}\n.feedback .top .close[data-v-814c5d9e] {\r\n background-color: #ddd;\r\n width: 24px;\r\n height: 24px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n position: absolute;\r\n right: 0;\r\n top: 50%;\r\n -webkit-transform: translateY(-50%);\r\n transform: translateY(-50%);\r\n font-size: 18px;\n}\n.feedback .quick-ask[data-v-814c5d9e] {\r\n display: flex;\n}\n.feedback .quick-ask .ask[data-v-814c5d9e] {\r\n padding: 5px 15px;\r\n border: 1px solid #ddd;\r\n border-radius: 10px;\r\n margin-right: 10px;\r\n font-size: 14px;\n}\n.feedback .quick-ask .active[data-v-814c5d9e] {\r\n background-color: #007AFF;\r\n color: #fff;\n}\n.feedback .textarea[data-v-814c5d9e] {\r\n width: 100%;\r\n background-color: rgba(45, 44, 46, 0.05);\r\n padding: 10px 12px;\r\n box-sizing: border-box;\r\n margin-bottom: 20px;\r\n margin-top: 10px;\r\n border-radius: 10px;\r\n font-size: 14px;\n}\n.mark-layer[data-v-814c5d9e] {\r\n position: fixed;\r\n width: 100vw;\r\n height: 100vh;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 9999;\r\n opacity: 0;\n}\n.ai-voice-play[data-v-814c5d9e] {\r\n width: 60px;\r\n background-color: #fff;\r\n margin-bottom: 10px;\r\n padding: 10px 12px;\r\n border-radius: 14px;\r\n display: flex;\r\n align-items: center;\n}\r\n", ""]); // Exports module.exports = exports; @@ -4665,7 +4666,7 @@ if(false) {} var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../../HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 28); exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.i, "\n.dock[data-v-23e8c801] {\n\tposition: fixed;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tbackground: #f7f8fc;\n\tbox-shadow: 0 -4px 12px rgba(0, 0, 0, 0.06);\n\tpadding-bottom: constant(safe-area-inset-bottom);\n\tpadding-bottom: env(safe-area-inset-bottom);\n\tz-index: 999;\n}\n.quick-actions[data-v-23e8c801] {\n\tpadding: 6px 10px 4px;\n}\n.quick-actions.horizontal[data-v-23e8c801] {\n\twhite-space: nowrap;\n\twidth: 100%;\n\tpadding-right: 10px;\n\tbox-sizing: border-box;\n}\n.quick-add[data-v-23e8c801] {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n.qa-btn[data-v-23e8c801] {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmin-width: 96px;\n\ttext-align: center;\n\tbackground: #fff;\n\tborder-radius: 10px;\n\tpadding: 8px 10px;\n\tfont-size: 12px;\n\tcolor: #3b3f45;\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);\n\tmargin-right: 10px;\n}\n.qa-btn.minor[data-v-23e8c801] {\n\tbackground: #eff1ff;\n\tcolor: #4e7bff;\n}\n.qa-btn[data-v-23e8c801]:last-child {\n\tmargin-right: 0;\n}\n.input-bar[data-v-23e8c801] {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 8px 10px 12px;\n\tgap: 8px;\n\tbackground: #f7f8fc;\n}\n.input[data-v-23e8c801] {\n\tflex: 1;\n\tbackground: #fff;\n\tborder-radius: 24px;\n\tpadding: 10px 14px;\n\tfont-size: 14px;\n}\n.ph[data-v-23e8c801] {\n\tcolor: #9aa3b2;\n}\n.mic[data-v-23e8c801] {\n\twidth: 36px;\n\theight: 36px;\n\tborder-radius: 18px;\n\t/* background: #4F46E5; */\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n.mic.recording[data-v-23e8c801] {\n\tbackground: #fffbf0;\n\tbox-shadow: 0 0 0 2px rgba(255, 193, 7, 0.25) inset;\n}\n.send[data-v-23e8c801] {\n\theight: 36px;\n\twidth: 36px;\n\tborder-radius: 50%;\n\tbackground: #4e7bff;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n.disabled[data-v-23e8c801] {\n\tbackground-color: #ddd;\n}\n.normal[data-v-23e8c801] {\n\tbackground-color: #4e7bff;\n}\n.record-mask[data-v-23e8c801] {\n\tposition: fixed;\n\tleft: 0;\n\tright: 0;\n\ttop: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tz-index: 100005;\n}\n.record-box[data-v-23e8c801] {\n\tbackground: rgba(0, 0, 0, 0.75);\n\tcolor: #fff;\n\tpadding: 16px 18px;\n\tborder-radius: 12px;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 10px;\n\tmin-width: 220rpx;\n}\n.record-text[data-v-23e8c801] {\n\tfont-size: 14px;\n}\n.mask-layer[data-v-23e8c801] {\n\tposition: fixed;\n\tleft: 0;\n\tright: 0;\n\ttop: 0;\n\tbottom: 0;\n\tbackground-color: rgba(0, 0, 0, .4);\n\tz-index: 100004;\n}\n.cancel[data-v-23e8c801] {\n\tcolor: red;\n}\n", ""]); +exports.push([module.i, "\n.dock[data-v-23e8c801] {\n\tposition: fixed;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tbackground: #f7f8fc;\n\tbox-shadow: 0 -4px 12px rgba(0, 0, 0, 0.06);\n\tpadding-bottom: constant(safe-area-inset-bottom);\n\tpadding-bottom: env(safe-area-inset-bottom);\n\tz-index: 999;\n}\n.quick-actions[data-v-23e8c801] {\n\tpadding: 6px 10px 4px;\n\tpadding-top: 15px;\n}\n.quick-actions.horizontal[data-v-23e8c801] {\n\twhite-space: nowrap;\n\twidth: 100%;\n\tpadding-right: 10px;\n\tbox-sizing: border-box;\n}\n.quick-add[data-v-23e8c801] {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n.qa-btn[data-v-23e8c801] {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmin-width: 96px;\n\ttext-align: center;\n\tbackground: #fff;\n\tborder-radius: 10px;\n\tpadding: 8px 10px;\n\tfont-size: 12px;\n\tcolor: #3b3f45;\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);\n\tmargin-right: 10px;\n}\n.qa-btn.minor[data-v-23e8c801] {\n\tbackground: #eff1ff;\n\tcolor: #4e7bff;\n}\n.qa-btn[data-v-23e8c801]:last-child {\n\tmargin-right: 0;\n}\n.input-bar[data-v-23e8c801] {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 8px 10px 12px;\n\tgap: 8px;\n\tbackground: #f7f8fc;\n}\n.input[data-v-23e8c801] {\n\tflex: 1;\n\tbackground: #fff;\n\tborder-radius: 24px;\n\tpadding: 10px 14px;\n\tfont-size: 14px;\n}\n.ph[data-v-23e8c801] {\n\tcolor: #9aa3b2;\n}\n.mic[data-v-23e8c801] {\n\twidth: 36px;\n\theight: 36px;\n\tborder-radius: 18px;\n\t/* background: #4F46E5; */\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n.mic.recording[data-v-23e8c801] {\n\tbackground: #fffbf0;\n\tbox-shadow: 0 0 0 2px rgba(255, 193, 7, 0.25) inset;\n}\n.send[data-v-23e8c801] {\n\theight: 36px;\n\twidth: 36px;\n\tborder-radius: 50%;\n\tbackground: #4e7bff;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n.disabled[data-v-23e8c801] {\n\tbackground-color: #ddd;\n}\n.normal[data-v-23e8c801] {\n\tbackground-color: #4e7bff;\n}\n.record-mask[data-v-23e8c801] {\n\tposition: fixed;\n\tleft: 0;\n\tright: 0;\n\ttop: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tz-index: 100005;\n}\n.record-box[data-v-23e8c801] {\n\tbackground: rgba(0, 0, 0, 0.75);\n\tcolor: #fff;\n\tpadding: 16px 18px;\n\tborder-radius: 12px;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 10px;\n\tmin-width: 220rpx;\n}\n.record-text[data-v-23e8c801] {\n\tfont-size: 14px;\n}\n.mask-layer[data-v-23e8c801] {\n\tposition: fixed;\n\tleft: 0;\n\tright: 0;\n\ttop: 0;\n\tbottom: 0;\n\tbackground-color: rgba(0, 0, 0, .4);\n\tz-index: 100004;\n}\n.cancel[data-v-23e8c801] {\n\tcolor: red;\n}\n", ""]); // Exports module.exports = exports; @@ -4718,7 +4719,7 @@ if(false) {} var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/runtime/api.js */ 28); exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.i, "\n[data-v-2be84a3c] .uni-nav-bar-text {\n\tfont-size: 18px !important;\n}\n::v-deeo .uni-navbar--border[data-v-2be84a3c] {\n\tborder-bottom: 1px solid #fff !important;\n}\n.ai-page[data-v-2be84a3c] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tbackground: #f7f8fc;\n}\n.content[data-v-2be84a3c] {\n\tflex: 1;\n\tpadding: 16px 12px 0px 12px;\n\tbackground-color: #f7f8fc;\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n", ""]); +exports.push([module.i, "\n[data-v-2be84a3c] .uni-nav-bar-text {\n\tfont-size: 18px !important;\n}\n::v-deeo .uni-navbar--border[data-v-2be84a3c] {\n\tborder-bottom: 1px solid #fff !important;\n}\n.ai-page[data-v-2be84a3c] {\n\tdisplay: flex;\n\tflex-direction: column;\n\tbackground: #fff;\n}\n.content[data-v-2be84a3c] {\n\tflex: 1;\n\tpadding: 16px 12px 0px 12px;\n\tbackground-color: #fff;\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n.ai-logo[data-v-2be84a3c] {\n\twidth: 60px;\n\tposition: fixed;\n\ttop: 50%;\n\tright: 10px;\n\tz-index: 999999999;\n}\n", ""]); // Exports module.exports = exports;