From 5b6b4211a4c455ffde80f1356556fda88c4b83e5 Mon Sep 17 00:00:00 2001 From: IndieKKY Date: Thu, 3 Oct 2024 19:29:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E9=87=8D=E6=9E=84=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=9C=AC=E5=9C=B0=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fixChrome.cjs | 11 --- fixFirefox.cjs | 22 ------ manifest.config.ts | 63 +++++++++++++++++ manifest.json | 37 ---------- package.json | 4 +- pnpm-lock.yaml | 15 ++++ public/popup.html => popup.html | 0 public/bibigpt.png | Bin 4069 -> 0 bytes public/immersive-summary.png | Bin 23600 -> 0 bytes public/my-article-summarizer.png | Bin 5482 -> 0 bytes public/openai-up.ico | Bin 41270 -> 0 bytes push.sh | 4 +- src/App.tsx | 2 +- .../content-script.cjs => inject/inject.ts} | 49 +++++++------ src/redux/envReducer.ts | 4 +- tsconfig.json | 5 +- tsconfig.node.json | 2 +- vite.config.ts | 31 +++++--- vite.config.ts.timestamp-1705728659971.mjs | 66 ------------------ 19 files changed, 136 insertions(+), 179 deletions(-) delete mode 100644 fixChrome.cjs delete mode 100644 fixFirefox.cjs create mode 100644 manifest.config.ts delete mode 100644 manifest.json rename public/popup.html => popup.html (100%) delete mode 100644 public/bibigpt.png delete mode 100644 public/immersive-summary.png delete mode 100644 public/my-article-summarizer.png delete mode 100644 public/openai-up.ico rename src/{chrome/content-script.cjs => inject/inject.ts} (84%) delete mode 100644 vite.config.ts.timestamp-1705728659971.mjs diff --git a/fixChrome.cjs b/fixChrome.cjs deleted file mode 100644 index e68be20..0000000 --- a/fixChrome.cjs +++ /dev/null @@ -1,11 +0,0 @@ -console.log('fixChrome.js loaded'); - -const fs = require('fs') - -const manifest = require('./dist/manifest.json') -manifest.web_accessible_resources[0].resources.push('index.html') -manifest.action.default_popup = 'popup.html' -//写回文件 -fs.writeFileSync('./dist/manifest.json', JSON.stringify(manifest, null, 2)) - -console.log('fixChrome.js done'); diff --git a/fixFirefox.cjs b/fixFirefox.cjs deleted file mode 100644 index af9b823..0000000 --- a/fixFirefox.cjs +++ /dev/null @@ -1,22 +0,0 @@ -console.log('fixFirefox.js loaded'); - -const fs = require('fs') - -const manifest = require('./dist/manifest.json') -manifest.web_accessible_resources[0].resources.push('index.html') -manifest.action.default_popup = 'popup.html' -//browser_specific_settings -manifest.browser_specific_settings = { - "gecko": { - "id": "bilibili-subtitle@indiekky" - } -} -//background -manifest.background = { - type: "module", - scripts: [manifest.background.service_worker] -} -//写回文件 -fs.writeFileSync('./dist/manifest.json', JSON.stringify(manifest, null, 2)) - -console.log('fixFirefox.js done'); diff --git a/manifest.config.ts b/manifest.config.ts new file mode 100644 index 0000000..55c8394 --- /dev/null +++ b/manifest.config.ts @@ -0,0 +1,63 @@ +import {defineManifest} from '@crxjs/vite-plugin' +// @ts-ignore +import packageJson from './package.json' + +const {version} = packageJson + +// Convert from Semver (example: 0.1.0-beta6) +const [major, minor, patch, label = '0'] = version + // can only contain digits, dots, or dash + .replace(/[^\d.-]+/g, '') + // split into version parts + .split(/[.-]/) + +export default defineManifest(async (env) => ({ + "name": "哔哩哔哩字幕列表", + "description": "显示B站视频的字幕列表,可点击跳转与下载字幕,并支持翻译和总结字幕!", + "version": `${major}.${minor}.${patch}`, + "manifest_version": 3, + "permissions": [ + "storage", + ], + "host_permissions": [ + "http://localhost/*", + "http://127.0.0.1/*" + ], + "background": { + "service_worker": "src/chrome/background.ts", + "type": "module" + }, + "options_page": "options.html", + "content_scripts": [ + { + "matches": ["https://www.bilibili.com/video/*", "https://www.bilibili.com/list/*"], + "js": ["src/inject/inject.ts"] + } + ], + "icons": { + "16": "favicon-16x16.png", + "32": "favicon-32x32.png", + "48": "favicon-48x48.png", + "128": "favicon-128x128.png" + }, + "action": { + "default_popup": "popup.html", + "default_icon": { + "16": "favicon-16x16.png", + "32": "favicon-32x32.png", + "48": "favicon-48x48.png", + "128": "favicon-128x128.png" + } + }, + "web_accessible_resources": [ + { + "matches": [ + "https://www.bilibili.com/video/*", "https://www.bilibili.com/list/*" + ], + "resources": [ + "index.html", + ], + "use_dynamic_url": true + } + ] +})) diff --git a/manifest.json b/manifest.json deleted file mode 100644 index f2f73f3..0000000 --- a/manifest.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "哔哩哔哩字幕列表", - "description": "显示B站视频的字幕列表,可点击跳转与下载字幕,并支持翻译和总结字幕!", - "version": "1.10.6", - "manifest_version": 3, - "permissions": [ - "storage" - ], - "host_permissions": [ - "http://localhost/*", - "http://127.0.0.1/*" - ], - "background": { - "service_worker": "src/chrome/background.ts" - }, - "content_scripts": [ - { - "matches": ["https://www.bilibili.com/video/*", "https://www.bilibili.com/list/*"], - "js": ["src/chrome/content-script.cjs"] - } - ], - "icons": { - "16": "favicon-16x16.png", - "32": "favicon-32x32.png", - "48": "favicon-48x48.png", - "128": "favicon-128x128.png" - }, - "action": { - "default_popup": "index.html", - "default_icon": { - "16": "favicon-16x16.png", - "32": "favicon-32x32.png", - "48": "favicon-48x48.png", - "128": "favicon-128x128.png" - } - } -} diff --git a/package.json b/package.json index da832ad..749ab0b 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,7 @@ "main": "index.js", "scripts": { "dev": "vite", - "build_chrome": "tsc && vite build -m production_chrome && node fixChrome.cjs", - "build_firefox": "tsc && vite build -m production_chrome && node fixFirefox.cjs", + "build": "tsc && vite build", "fix": "eslint --fix --quiet ." }, "author": "IndieKKY", @@ -47,6 +46,7 @@ "devDependencies": { "@tailwindcss/line-clamp": "^0.4.2", "@tailwindcss/typography": "^0.5.8", + "@types/node": "^20.8.10", "@types/chrome": "^0.0.203", "@types/js-search": "^1.4.0", "@types/lodash-es": "^4.17.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b4162e..1594e9e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -111,6 +111,9 @@ importers: '@types/lodash-es': specifier: ^4.17.6 version: 4.17.6 + '@types/node': + specifier: ^20.8.10 + version: 20.16.10 '@types/pako': specifier: ^2.0.0 version: 2.0.0 @@ -490,6 +493,9 @@ packages: '@types/ms@0.7.31': resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + '@types/node@20.16.10': + resolution: {integrity: sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==} + '@types/pako@2.0.0': resolution: {integrity: sha512-10+iaz93qR5WYxTo+PMifD5TSxiOtdRaxBf7INGGXMQgTCu8Z/7GYWYFUOS3q/G0nE5boj1r4FEB+WSy7s5gbA==} @@ -2343,6 +2349,9 @@ packages: unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} @@ -2881,6 +2890,10 @@ snapshots: '@types/ms@0.7.31': {} + '@types/node@20.16.10': + dependencies: + undici-types: 6.19.8 + '@types/pako@2.0.0': {} '@types/prop-types@15.7.5': {} @@ -4955,6 +4968,8 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + undici-types@6.19.8: {} + unified@10.1.2: dependencies: '@types/unist': 2.0.6 diff --git a/public/popup.html b/popup.html similarity index 100% rename from public/popup.html rename to popup.html diff --git a/public/bibigpt.png b/public/bibigpt.png deleted file mode 100644 index 5be4212a39749c6911a549cba5928f7c2ea17c8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4069 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�AtkL)gx!_-q20=-ghsenX<5^ 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%0A3}7{ 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 Hu0mjfEOL&q diff --git a/public/my-article-summarizer.png b/public/my-article-summarizer.png deleted file mode 100644 index 12cfd8b64d7235a3375f72dd8054188fecab7363..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5482 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 diff --git a/public/openai-up.ico b/public/openai-up.ico deleted file mode 100644 index fbcfb14a5f9236888475dff35f0749f90473377c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41270 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 diff --git a/push.sh b/push.sh index ec5f47f..9b2a2e4 100755 --- a/push.sh +++ b/push.sh @@ -17,13 +17,11 @@ done # Update the version in package.json sed -i '' "s/\"version\": \"$current_version\"/\"version\": \"$new_version\"/g" package.json -# Update the version in manifest.json -sed -i '' "s/\"version\": \"$current_version\"/\"version\": \"$new_version\"/g" manifest.json echo "Version updated to: $new_version" # build -pnpm run build_chrome +pnpm run build # zip dist rm -f dist.zip cd dist diff --git a/src/App.tsx b/src/App.tsx index af6d03d..3487547 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -75,7 +75,7 @@ function App() { useTranslateService() useSearchService() - return
diff --git a/src/chrome/content-script.cjs b/src/inject/inject.ts similarity index 84% rename from src/chrome/content-script.cjs rename to src/inject/inject.ts index d478fe3..4579366 100644 --- a/src/chrome/content-script.cjs +++ b/src/inject/inject.ts @@ -1,9 +1,9 @@ -const {TOTAL_HEIGHT_DEF, HEADER_HEIGHT, TOTAL_HEIGHT_MIN, TOTAL_HEIGHT_MAX, IFRAME_ID} = require("../const"); -var totalHeight = TOTAL_HEIGHT_DEF +import {TOTAL_HEIGHT_DEF, HEADER_HEIGHT, TOTAL_HEIGHT_MIN, TOTAL_HEIGHT_MAX, IFRAME_ID} from '@/const' +let totalHeight = TOTAL_HEIGHT_DEF const getVideoElement = () => { const videoWrapper = document.getElementById('bilibili-player') - return videoWrapper.querySelector('video') + return videoWrapper?.querySelector('video') as HTMLVideoElement | undefined } const timerIframe = setInterval(function () { @@ -24,7 +24,10 @@ const timerIframe = setInterval(function () { const iframe = document.createElement('iframe') iframe.id = IFRAME_ID iframe.src = chrome.runtime.getURL('index.html') - iframe.style = 'border: none; width: 100%; height: 44px;margin-bottom: 3px;' + iframe.style.border = 'none' + iframe.style.width = '100%' + iframe.style.height = '44px' + iframe.style.marginBottom = '3px' iframe.allow = 'clipboard-read; clipboard-write;' if (vKey) { iframe.dataset[vKey] = danmukuBox?.dataset[vKey] @@ -37,19 +40,19 @@ const timerIframe = setInterval(function () { } }, 1000) -let aid = 0 +let aid: number | null = null let title = '' -let pages = [] -let pagesMap = {} +let pages: any[] = [] +let pagesMap: Record = {} -let lastAidOrBvid = null +let lastAidOrBvid: string | null = null const refreshVideoInfo = async () => { - const iframe = document.getElementById(IFRAME_ID) + const iframe = document.getElementById(IFRAME_ID) as HTMLIFrameElement | undefined if (!iframe) return // fix: https://github.com/IndieKKY/bilibili-subtitle/issues/5 // 处理稍后再看的url( https://www.bilibili.com/list/watchlater?bvid=xxx&oid=xxx ) - const pathSearchs = {} + const pathSearchs: Record = {} location.search.slice(1).replace(/([^=&]*)=([^=&]*)/g, (matchs, a, b, c) => pathSearchs[a] = b) // bvid @@ -72,7 +75,7 @@ const refreshVideoInfo = async () => { let cid let subtitles if (aidOrBvid.toLowerCase().startsWith('av')) {//avxxx - aid = aidOrBvid.slice(2) + aid = parseInt(aidOrBvid.slice(2)) pages = await fetch(`https://api.bilibili.com/x/player/pagelist?aid=${aid}`, {credentials: 'include'}).then(res => res.json()).then(res => res.data) cid = pages[0].cid title = pages[0].part @@ -100,7 +103,7 @@ const refreshVideoInfo = async () => { console.debug('refreshVideoInfo: ', aid, cid, pages, subtitles) //send setVideoInfo - iframe.contentWindow.postMessage({ + iframe.contentWindow?.postMessage({ type: 'setVideoInfo', url: location.origin + location.pathname, title, @@ -112,10 +115,10 @@ const refreshVideoInfo = async () => { } } -let lastAid = null -let lastCid = null +let lastAid: number | null = null +let lastCid: number | null = null const refreshSubtitles = () => { - const iframe = document.getElementById(IFRAME_ID) + const iframe = document.getElementById(IFRAME_ID) as HTMLIFrameElement | undefined if (!iframe) return const urlSearchParams = new URLSearchParams(window.location.search) @@ -136,7 +139,7 @@ const refreshSubtitles = () => { .then(res => res.json()) .then(res => { // console.log('refreshSubtitles: ', aid, cid, res) - iframe.contentWindow.postMessage({ + iframe.contentWindow?.postMessage({ type: 'setInfos', infos: res.data.subtitle.subtitles }, '*') @@ -150,8 +153,10 @@ window.addEventListener("message", (event) => { const {data} = event if (data.type === 'fold') { - const iframe = document.getElementById(IFRAME_ID) - iframe.style.height = (data.fold ? HEADER_HEIGHT : totalHeight) + 'px' + const iframe = document.getElementById(IFRAME_ID) as HTMLIFrameElement | undefined + if (iframe) { + iframe.style.height = (data.fold ? HEADER_HEIGHT : totalHeight) + 'px' + } } if (data.type === 'move') { @@ -178,7 +183,7 @@ window.addEventListener("message", (event) => { url = url.replace('http://', 'https://') } fetch(url).then(res => res.json()).then(res => { - event.source.postMessage({ + event.source?.postMessage({ data: { info: data.info, data: res, @@ -190,7 +195,7 @@ window.addEventListener("message", (event) => { if (data.type === 'getCurrentTime') { const video = getVideoElement() if (video) { - event.source.postMessage({ + event.source?.postMessage({ data: { currentTime: video.currentTime }, type: 'setCurrentTime' @@ -201,7 +206,7 @@ window.addEventListener("message", (event) => { if (data.type === 'getSettings') { const videoElement = getVideoElement() totalHeight = videoElement ? Math.min(Math.max(videoElement.offsetHeight, TOTAL_HEIGHT_MIN), TOTAL_HEIGHT_MAX) : TOTAL_HEIGHT_DEF - event.source.postMessage({ + event.source?.postMessage({ data: { noVideo: !videoElement, totalHeight, @@ -211,7 +216,7 @@ window.addEventListener("message", (event) => { if (data.type === 'downloadAudio') { const html = document.getElementsByTagName('html')[0].innerHTML - const playInfo = JSON.parse(html.match(/window.__playinfo__=(.+?)<\/script/)[1]) + const playInfo = JSON.parse(html.match(/window.__playinfo__=(.+?)<\/script/)?.[1] ?? '{}') const audioUrl = playInfo.data.dash.audio[0].baseUrl fetch(audioUrl).then(res => res.blob()).then(blob => { diff --git a/src/redux/envReducer.ts b/src/redux/envReducer.ts index d912939..e7ca207 100644 --- a/src/redux/envReducer.ts +++ b/src/redux/envReducer.ts @@ -67,11 +67,11 @@ const initialState: EnvState = { }, totalHeight: TOTAL_HEIGHT_DEF, autoScroll: true, - currentTime: import.meta.env.VITE_ENV === 'web-dev' ? 30 : undefined, + // currentTime: import.meta.env.VITE_ENV === 'web-dev' ? 30 : undefined, envReady: false, tempReady: false, fold: true, - data: import.meta.env.VITE_ENV === 'web-dev' ? getDevData() : undefined, + // data: import.meta.env.VITE_ENV === 'web-dev' ? getDevData() : undefined, transResults: {}, inputting: false, diff --git a/tsconfig.json b/tsconfig.json index 9539005..d7dd2fb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,7 +17,10 @@ "jsx": "react-jsx", "types": [ "@types/chrome" - ] + ], + "paths": { + "@/*": ["./src/*"] + } }, "include": ["src"], "references": [{ "path": "./tsconfig.node.json" }] diff --git a/tsconfig.node.json b/tsconfig.node.json index e229c97..be6f5d9 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -6,5 +6,5 @@ "allowSyntheticDefaultImports": true, "resolveJsonModule": true }, - "include": ["vite.config.ts", "manifest.json"] + "include": ["vite.config.ts", "manifest.config.ts"] } diff --git a/vite.config.ts b/vite.config.ts index 70c859f..fb59aa4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,24 +2,33 @@ import {defineConfig, PluginOption} from 'vite' import react from '@vitejs/plugin-react' import {visualizer} from "rollup-plugin-visualizer"; import {crx} from '@crxjs/vite-plugin' +import path from "path" // @ts-ignore import manifest from './manifest.json' // https://vitejs.dev/config/ export default ({mode}) => { - const plugins = [ - react(), - visualizer() as PluginOption, - ] - // @ts-ignore - if (mode === 'production_chrome' || mode === 'production_edge') { - plugins.push(crx({ - manifest, - })) - } return defineConfig({ base: '/', - plugins, + build: { + rollupOptions: { + input: { + index: 'index.html', + }, + }, + }, + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + } + }, + plugins: [ + react(), + crx({ + manifest, + }), + visualizer() as PluginOption, + ], css: { modules: { localsConvention: "camelCase" diff --git a/vite.config.ts.timestamp-1705728659971.mjs b/vite.config.ts.timestamp-1705728659971.mjs deleted file mode 100644 index d2c3687..0000000 --- a/vite.config.ts.timestamp-1705728659971.mjs +++ /dev/null @@ -1,66 +0,0 @@ -// vite.config.ts -import { defineConfig } from "vite"; -import react from "@vitejs/plugin-react"; -import { visualizer } from "rollup-plugin-visualizer"; -import { crx } from "@crxjs/vite-plugin"; - -// manifest.json -var manifest_default = { - name: "\u54D4\u54E9\u54D4\u54E9\u5B57\u5E55\u5217\u8868", - description: "\u663E\u793AB\u7AD9\u89C6\u9891\u7684\u5B57\u5E55\u5217\u8868,\u53EF\u70B9\u51FB\u8DF3\u8F6C\u4E0E\u4E0B\u8F7D\u5B57\u5E55,\u5E76\u652F\u6301\u7FFB\u8BD1\u548C\u603B\u7ED3\u5B57\u5E55!", - version: "1.7.11", - manifest_version: 3, - permissions: [ - "storage" - ], - background: { - service_worker: "src/chrome/background.ts" - }, - content_scripts: [ - { - matches: ["https://www.bilibili.com/video/*", "https://www.bilibili.com/list/*"], - js: ["src/chrome/content-script.cjs"] - } - ], - icons: { - "16": "favicon-16x16.png", - "32": "favicon-32x32.png", - "48": "favicon-48x48.png", - "128": "favicon-128x128.png" - }, - action: { - default_popup: "index.html", - default_icon: { - "16": "favicon-16x16.png", - "32": "favicon-32x32.png", - "48": "favicon-48x48.png", - "128": "favicon-128x128.png" - } - } -}; - -// vite.config.ts -var vite_config_default = ({ mode }) => { - const plugins = [ - react(), - visualizer() - ]; - if (mode === "production_chrome") { - plugins.push(crx({ - manifest: manifest_default - })); - } - return defineConfig({ - base: "/", - plugins, - css: { - modules: { - localsConvention: "camelCase" - } - } - }); -}; -export { - vite_config_default as default -}; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvZmVuZ3l1ZXhpYW5nL2RhdGEvcHJvamVjdC9iaWxpYmlsaS1zdWJ0aXRsZVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL2Zlbmd5dWV4aWFuZy9kYXRhL3Byb2plY3QvYmlsaWJpbGktc3VidGl0bGUvdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL2Zlbmd5dWV4aWFuZy9kYXRhL3Byb2plY3QvYmlsaWJpbGktc3VidGl0bGUvdml0ZS5jb25maWcudHNcIjtpbXBvcnQge2RlZmluZUNvbmZpZywgUGx1Z2luT3B0aW9ufSBmcm9tICd2aXRlJ1xuaW1wb3J0IHJlYWN0IGZyb20gJ0B2aXRlanMvcGx1Z2luLXJlYWN0J1xuaW1wb3J0IHt2aXN1YWxpemVyfSBmcm9tIFwicm9sbHVwLXBsdWdpbi12aXN1YWxpemVyXCI7XG5pbXBvcnQge2NyeH0gZnJvbSAnQGNyeGpzL3ZpdGUtcGx1Z2luJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IG1hbmlmZXN0IGZyb20gJy4vbWFuaWZlc3QuanNvbidcblxuLy8gaHR0cHM6Ly92aXRlanMuZGV2L2NvbmZpZy9cbmV4cG9ydCBkZWZhdWx0ICh7bW9kZX0pID0+IHtcbiAgY29uc3QgcGx1Z2lucyA9IFtcbiAgICByZWFjdCgpLFxuICAgIHZpc3VhbGl6ZXIoKSBhcyBQbHVnaW5PcHRpb24sXG4gIF1cbiAgLy8gQHRzLWlnbm9yZVxuICBpZiAobW9kZSA9PT0gJ3Byb2R1Y3Rpb25fY2hyb21lJykge1xuICAgIHBsdWdpbnMucHVzaChjcngoe1xuICAgICAgbWFuaWZlc3QsXG4gICAgfSkpXG4gIH1cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyh7XG4gICAgYmFzZTogJy8nLFxuICAgIHBsdWdpbnMsXG4gICAgY3NzOiB7XG4gICAgICBtb2R1bGVzOiB7XG4gICAgICAgIGxvY2Fsc0NvbnZlbnRpb246IFwiY2FtZWxDYXNlXCJcbiAgICAgIH1cbiAgICB9XG4gIH0pXG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQXdVLFNBQVEsb0JBQWlDO0FBQ2pYLE9BQU8sV0FBVztBQUNsQixTQUFRLGtCQUFpQjtBQUN6QixTQUFRLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS2xCLElBQU8sc0JBQVEsQ0FBQyxFQUFDLEtBQUksTUFBTTtBQUN6QixRQUFNLFVBQVU7QUFBQSxJQUNkLE1BQU07QUFBQSxJQUNOLFdBQVc7QUFBQSxFQUNiO0FBRUEsTUFBSSxTQUFTLHFCQUFxQjtBQUNoQyxZQUFRLEtBQUssSUFBSTtBQUFBLE1BQ2Y7QUFBQSxJQUNGLENBQUMsQ0FBQztBQUFBLEVBQ0o7QUFDQSxTQUFPLGFBQWE7QUFBQSxJQUNsQixNQUFNO0FBQUEsSUFDTjtBQUFBLElBQ0EsS0FBSztBQUFBLE1BQ0gsU0FBUztBQUFBLFFBQ1Asa0JBQWtCO0FBQUEsTUFDcEI7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==