From a2e77a798274b5256709b13f74d4eefee1a485d7 Mon Sep 17 00:00:00 2001 From: actions-user Date: Sun, 16 Feb 2025 22:24:52 +0800 Subject: [PATCH] update 2025-02-16 22:24:52 --- istore/LICENSE | 21 + istore/README.en.md | 4 + istore/README.md | 51 + istore/luci/luci-app-store/API.md | 161 +++ istore/luci/luci-app-store/Makefile | 39 + istore/luci/luci-app-store/README.md | 3 + .../luasrc/controller/store.lua | 971 ++++++++++++++++++ .../luci-app-store/luasrc/view/store/main.htm | 63 ++ istore/luci/luci-app-store/root/bin/is-opkg | 291 ++++++ .../luci-app-store/root/etc/config/istore | 7 + .../luci-app-store/root/etc/init.d/istore | 54 + .../root/etc/uci-defaults/luci-app-store | 12 + .../root/usr/libexec/istore/backup | 295 ++++++ .../root/usr/libexec/istore/docker | 114 ++ .../root/usr/libexec/istore/ipkg-build | 200 ++++ .../root/usr/share/opkg/intercept/rm | 7 + istore/luci/luci-app-store/src/Makefile | 23 + istore/luci/luci-app-store/src/compat.conf | 1 + .../luci/luci-app-store/src/dummy/package.mk | 2 + istore/luci/luci-app-store/src/key-build.pub | 2 + .../src/po/templates/iStore.pot | 11 + .../luci-app-store/src/po/zh-cn/iStore.po | 11 + .../luci-app-store/src/po/zh-tw/iStore.po | 11 + istore/luci/luci-app-store/swagger.yaml | 513 +++++++++ istore/luci/luci-lib-taskd/Makefile | 20 + .../luci-static/resources/tasks/tasks.css | 151 +++ .../luci-static/resources/tasks/tasks.js | 241 +++++ .../luasrc/controller/tasks-lib.lua | 98 ++ .../luci-lib-taskd/luasrc/model/tasks.lua | 100 ++ .../luasrc/view/tasks/docker.htm | 56 + .../luasrc/view/tasks/embed.htm | 40 + istore/luci/luci-lib-taskd/src/Makefile | 15 + .../luci/luci-lib-taskd/src/dummy/package.mk | 2 + .../luci-lib-taskd/src/po/zh-cn/lib-tasks.po | 50 + istore/luci/luci-lib-xterm/Makefile | 21 + .../luci-static/resources/xterm/xterm.css | 180 ++++ .../luci-static/resources/xterm/xterm.js | 2 + .../luasrc/view/xterm/embed.htm | 3 + istore/luci/taskd/Makefile | 41 + istore/luci/taskd/files/taskd.sh | 16 + istore/luci/taskd/files/tasks.init | 157 +++ istore/preview/istore-preview.png | Bin 0 -> 1229460 bytes istore/translations/en/app.po | 414 ++++++++ istore/translations/templates/app.pot | 380 +++++++ istore/translations/zh-cn/app.po | 411 ++++++++ 45 files changed, 5265 insertions(+) create mode 100644 istore/LICENSE create mode 100644 istore/README.en.md create mode 100644 istore/README.md create mode 100644 istore/luci/luci-app-store/API.md create mode 100644 istore/luci/luci-app-store/Makefile create mode 100644 istore/luci/luci-app-store/README.md create mode 100644 istore/luci/luci-app-store/luasrc/controller/store.lua create mode 100644 istore/luci/luci-app-store/luasrc/view/store/main.htm create mode 100755 istore/luci/luci-app-store/root/bin/is-opkg create mode 100644 istore/luci/luci-app-store/root/etc/config/istore create mode 100755 istore/luci/luci-app-store/root/etc/init.d/istore create mode 100644 istore/luci/luci-app-store/root/etc/uci-defaults/luci-app-store create mode 100755 istore/luci/luci-app-store/root/usr/libexec/istore/backup create mode 100755 istore/luci/luci-app-store/root/usr/libexec/istore/docker create mode 100755 istore/luci/luci-app-store/root/usr/libexec/istore/ipkg-build create mode 100755 istore/luci/luci-app-store/root/usr/share/opkg/intercept/rm create mode 100644 istore/luci/luci-app-store/src/Makefile create mode 100644 istore/luci/luci-app-store/src/compat.conf create mode 100644 istore/luci/luci-app-store/src/dummy/package.mk create mode 100644 istore/luci/luci-app-store/src/key-build.pub create mode 100644 istore/luci/luci-app-store/src/po/templates/iStore.pot create mode 100644 istore/luci/luci-app-store/src/po/zh-cn/iStore.po create mode 100644 istore/luci/luci-app-store/src/po/zh-tw/iStore.po create mode 100644 istore/luci/luci-app-store/swagger.yaml create mode 100644 istore/luci/luci-lib-taskd/Makefile create mode 100644 istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.css create mode 100644 istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.js create mode 100755 istore/luci/luci-lib-taskd/luasrc/controller/tasks-lib.lua create mode 100644 istore/luci/luci-lib-taskd/luasrc/model/tasks.lua create mode 100644 istore/luci/luci-lib-taskd/luasrc/view/tasks/docker.htm create mode 100644 istore/luci/luci-lib-taskd/luasrc/view/tasks/embed.htm create mode 100644 istore/luci/luci-lib-taskd/src/Makefile create mode 100644 istore/luci/luci-lib-taskd/src/dummy/package.mk create mode 100644 istore/luci/luci-lib-taskd/src/po/zh-cn/lib-tasks.po create mode 100644 istore/luci/luci-lib-xterm/Makefile create mode 100644 istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.css create mode 100644 istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.js create mode 100644 istore/luci/luci-lib-xterm/luasrc/view/xterm/embed.htm create mode 100644 istore/luci/taskd/Makefile create mode 100755 istore/luci/taskd/files/taskd.sh create mode 100755 istore/luci/taskd/files/tasks.init create mode 100644 istore/preview/istore-preview.png create mode 100644 istore/translations/en/app.po create mode 100644 istore/translations/templates/app.pot create mode 100644 istore/translations/zh-cn/app.po diff --git a/istore/LICENSE b/istore/LICENSE new file mode 100644 index 00000000..99c0dc46 --- /dev/null +++ b/istore/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 易有云团队 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/istore/README.en.md b/istore/README.en.md new file mode 100644 index 00000000..a4babbda --- /dev/null +++ b/istore/README.en.md @@ -0,0 +1,4 @@ +# iStore + +## Introduce +The iStore is a app store for OpenWRT, it is implemented using Shell scripts, only depends on OpenWRT standard components, and does not contain binary files itself diff --git a/istore/README.md b/istore/README.md new file mode 100644 index 00000000..5682087f --- /dev/null +++ b/istore/README.md @@ -0,0 +1,51 @@ +# iStore + +## 介绍 + +iStore 是一个[开源](https://github.com/linkease/istore)且标准的 OpenWRT 软件中心实现。 + +是属于易有云团队的固件 [iStoreOS](https://github.com/istoreos) 的一部分。 + +iStore 的设计目标: + +1. 方便用户安装插件 +2. 每个插件都有教程,方便初学者入门使用插件 +3. 适配所有的 OpenWRT 皮肤,以及移动端 +4. 全部基于 OpenWRT 的标准接口开发,不用以前 KoolShare LEDE 的特有的插件风格的软件中心 + +iStore 的无法弥补的缺陷: + +1. 因为 OpenWRT 版本特别多,导致不同平台的插件依赖不一样。所以即使你的系统能安装 iStore,iStore 里面的插件不一定能安装 +2. 我们需要固件开发者自主集成 iStore,并解决 iStore 里面的各种插件的依赖 + +我们建议固件开发者集成 iStore,这样固件开发者只需要发布一个精简固件,用户可以按需安装自己喜欢的插件。还能共享插件的教程,独立更新某个插件版本。 + +> 21版本的固件安装 iStore 需要依赖 `luci-compat` + +## 安装 iStore 到 OpenWRT 官方固件 +只支持 x86_64 和 arm64 设备。 + +``` +opkg update || exit 1 +cd /tmp +wget https://github.com/linkease/openwrt-app-actions/raw/main/applications/luci-app-systools/root/usr/share/systools/istore-reinstall.run +chmod 755 istore-reinstall.run +./istore-reinstall.run +``` + +## 集成到自己编译的固件中 +iStore 官方的软件仓库支持 `x86_64`,`arm64` 两个架构,这两个架构的基于 **OpenWRT** 固件都可以直接集成 iStore + +只需在固件编译目录下执行: +```shell +echo >> feeds.conf.default +echo 'src-git istore https://github.com/linkease/istore;main' >> feeds.conf.default +./scripts/feeds update istore +./scripts/feeds install -d y -p istore luci-app-store +``` + +然后正常编译固件即可 + +## 功能预览 + +![istore-preview.png](./preview/istore-preview.png) diff --git a/istore/luci/luci-app-store/API.md b/istore/luci/luci-app-store/API.md new file mode 100644 index 00000000..0ccbf990 --- /dev/null +++ b/istore/luci/luci-app-store/API.md @@ -0,0 +1,161 @@ +### 路由器端API: +0. 获取csrfToken(用于POST请求) + ``` + GET /cgi-bin/luci/admin/store/token + + + {"token":"xxx"} + ``` +1. 已安装软件列表 + ``` + GET /cgi-bin/luci/admin/store/installed + + + [ + { + "description": "DDNS.TO内网穿透", + "tags": [ + "net", + "tool" + ], + "entry": "/cgi-bin/luci/admin/services/ddnsto", + "author": "xiaobao", + "depends": [ + "ddnsto", + "luci-app-ddnsto", + "luci-i18n-ddnsto-zh-cn" + ], + "title": "DDNS.TO", + "time": 1629356347, + "release": 1, + "website": "https://www.ddnsto.com/", + "name": "ddnsto", + "version": "1.0.0" + } + ] + ``` +2. 安装软件 + ``` + POST /cgi-bin/luci/admin/store/install + token=xxx&package=upnp&autoconf=1&path=/mnt/nvme&enable=1 + + autoconf=1&path=/mnt/nvme&enable=1 是可选参数,表示安装完以后是否自动配置插件 + + {"code":0, "stdout":"", "stderr":""} + ``` +3. 更新软件 + ``` + POST /cgi-bin/luci/admin/store/upgrade + token=xxx&package=upnp + + + {"code":0, "stdout":"", "stderr":""} + ``` +4. 卸载软件 + ``` + POST /cgi-bin/luci/admin/store/remove + token=xxx&package=upnp + + + {"code":0, "stdout":"", "stderr":""} + ``` +5. 刷新可用软件列表 + ``` + POST /cgi-bin/luci/admin/store/update + token=xxx + + + {"code":0, "stdout":"", "stderr":""} + ``` +6. 查询特定软件状态 + ``` + GET /cgi-bin/luci/admin/store/status?package=ddnsto + + + { + "description": "DDNS.TO内网穿透", + "tags": [ + "net", + "tool" + ], + "entry": "/cgi-bin/luci/admin/services/ddnsto", + "author": "xiaobao", + "depends": [ + "ddnsto", + "luci-app-ddnsto", + "luci-i18n-ddnsto-zh-cn" + ], + "installed": true, + "title": "DDNS.TO", + "time": "1629356347", + "release": 1, + "website": "https://www.ddnsto.com/", + "name": "ddnsto", + "version": "1.0.0" + } + + + {"installed":false} + ``` +7. 任务状态(日志),已废弃,使用luci-lib-taskd提供的封装 + ``` + GET /cgi-bin/luci/admin/store/log + + + { + "stdout": "Installing app-meta-ddnsto (1.0.0) to root...\nDownloading http://192.168.9.168:9999/packages/aarch64_cortex-a53/meta/app-meta-ddnsto_1.0.0_all.ipk\nConfiguring app-meta-ddnsto.\n", + "stderr": "", + "code": 206 + } + + {"stdout":"","stderr":"","code":0} + ``` +8. 上传安装 + ``` + POST /cgi-bin/luci/admin/store/upload + + + (文件上传表单,支持文件扩展名".ipk,.run") + + + {"code":0, "stdout":"", "stderr":""} + ``` + +9. 检查iStore自身更新 + ``` + GET /cgi-bin/luci/admin/store/check_self_upgrade + + + {"code":500, "msg":"Internal Error"} + {"code":200, "msg":"1.1.2"} + {"code":304, "msg":""} + ``` + +1. 更新iStore自身 + > 检查iStore自身更新接口返回code为200时才调用这个接口 + ``` + POST /cgi-bin/luci/admin/store/do_self_upgrade + token=xxx + + + {"code":0, "stdout":"", "stderr":""} + ``` + +2. 枚举块设备 + ``` + GET /cgi-bin/luci/admin/store/get_block_devices + + + {"code":500, "msg":"Unable to execute block utility"} + {"code":200, "data":{"sda1":{"dev":"\/dev\/sda1","uuid":"f54566dd-ec58-4e24-9451-bbf75834add3","version":"1.0","type":"ext4","size":"238.46 GB"},"mmcblk0p2":{"dev":"\/dev\/mmcblk0p2","uuid":"dba3d0dc-f072-4e81-a0ac-ac35197fb286","version":"1.0","label":"etc","mount":"\/overlay","type":"ext4","size":"6.87 GB"},"mmcblk0p1":{"dev":"\/dev\/mmcblk0p1","uuid":"8f9564a1-68006e25-c4c26df6-de88ef16","version":"4.0","mount":"\/rom","type":"squashfs","size":"127.99 MB"}}} + ``` + +3. 检查插件是否已经配置过 + ``` + GET /cgi-bin/luci/admin/store/configured?uci=ddnsto + + uci参数是uci配置文件的名称,不是包名,不过大部分情况下都是一致的。 + + {"code":200} + {"code":200, "configured":true} + ``` diff --git a/istore/luci/luci-app-store/Makefile b/istore/luci/luci-app-store/Makefile new file mode 100644 index 00000000..c30f0ce3 --- /dev/null +++ b/istore/luci/luci-app-store/Makefile @@ -0,0 +1,39 @@ +# Copyright (C) 2016 Openwrt.org +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI based ipk store +LUCI_DESCRIPTION:=luci-app-store is a ipk store developed by LinkEase team +LUCI_DEPENDS:=+curl +opkg +luci-lib-ipkg +tar +libuci-lua +mount-utils +luci-lib-taskd +LUCI_EXTRA_DEPENDS:=luci-lib-taskd (>=1.0.19) +LUCI_PKGARCH:=all + +PKG_VERSION:=0.1.27-4 +# PKG_RELEASE MUST be empty for luci.mk +PKG_RELEASE:= + +ISTORE_UI_VERSION:=0.1.27 +ISTORE_UI_RELEASE:=2 +PKG_HASH:=7fb8e9983dd33b14c43de3caf6a6121df0727e0adac6c666354e0d8a0cffa0b8 + +PKG_SOURCE_URL_FILE:=v$(ISTORE_UI_VERSION)-$(ISTORE_UI_RELEASE).tar.gz +PKG_SOURCE:=istore-ui-$(PKG_SOURCE_URL_FILE) +PKG_SOURCE_URL:=https://github.com/linkease/istore-ui/archive/refs/tags + +PKG_MAINTAINER:=jjm2473 + +TARGET_CONFIGURE_OPTS= FRONTEND_DIST="$(BUILD_DIR)/istore-ui-$(ISTORE_UI_VERSION)-$(ISTORE_UI_RELEASE)/app-store-ui/src/dist" APP_STORE_VERSION="$(PKG_VERSION)" +TARGET_CONFIGURE_OPTS+= SED="$(SED)" + +define Package/luci-app-store/conffiles +/etc/.app_store.id +/etc/config/istore +endef + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature + diff --git a/istore/luci/luci-app-store/README.md b/istore/luci/luci-app-store/README.md new file mode 100644 index 00000000..9fd68574 --- /dev/null +++ b/istore/luci/luci-app-store/README.md @@ -0,0 +1,3 @@ +# luci-app-store +OpenWRT应用商店 + diff --git a/istore/luci/luci-app-store/luasrc/controller/store.lua b/istore/luci/luci-app-store/luasrc/controller/store.lua new file mode 100644 index 00000000..cbde2eaf --- /dev/null +++ b/istore/luci/luci-app-store/luasrc/controller/store.lua @@ -0,0 +1,971 @@ +module("luci.controller.store", package.seeall) + +local myopkg = "is-opkg" +local is_backup = "/usr/libexec/istore/backup" +local page_index = {"admin", "store", "pages"} + +function index() + local function store_api(action, onlypost) + local e = entry({"admin", "store", action}, onlypost and post("store_action", {action = action}) or call("store_action", {action = action})) + e.dependent = false -- 父节点不是必须的 + e.leaf = true -- 没有子节点 + end + + local action + + entry({"admin", "store"}, call("redirect_index"), _("iStore"), 31) + entry({"admin", "store", "pages"}, call("store_index")).leaf = true + if nixio.fs.access("/usr/lib/lua/luci/view/store/main_dev.htm") then + entry({"admin", "store", "dev"}, call("store_dev")).leaf = true + end + entry({"admin", "store", "token"}, call("store_token")) + entry({"admin", "store", "log"}, call("store_log")) + entry({"admin", "store", "uid"}, call("action_user_id")) + entry({"admin", "store", "upload"}, post("store_upload")) + entry({"admin", "store", "check_self_upgrade"}, call("check_self_upgrade")) + entry({"admin", "store", "do_self_upgrade"}, post("do_self_upgrade")) + entry({"admin", "store", "toggle_docker"}, post("toggle_docker")) + entry({"admin", "store", "toggle_arch"}, post("toggle_arch")) + entry({"admin", "store", "get_block_devices"}, call("get_block_devices")) + + entry({"admin", "store", "configured"}, call("configured")) + entry({"admin", "store", "entrysh"}, post("entrysh")) + + -- docker + entry({"admin", "store", "docker_check_dir"}, call("docker_check_dir")) + entry({"admin", "store", "docker_check_migrate"}, call("docker_check_migrate")) + entry({"admin", "store", "docker_migrate"}, post("docker_migrate")) + + -- package + for _, action in ipairs({"update", "install", "upgrade", "remove", "autoconf"}) do + store_api(action, true) + end + for _, action in ipairs({"status", "installed"}) do + store_api(action, false) + end + + -- backup + if nixio.fs.access("/usr/libexec/istore/backup") then + entry({"admin", "store", "get_support_backup_features"}, call("get_support_backup_features")) + entry({"admin", "store", "light_backup"}, post("light_backup")) + entry({"admin", "store", "get_light_backup_file"}, call("get_light_backup_file")) + entry({"admin", "store", "local_backup"}, post("local_backup")) + entry({"admin", "store", "light_restore"}, post("light_restore")) + entry({"admin", "store", "local_restore"}, post("local_restore")) + entry({"admin", "store", "get_backup_app_list_file_path"}, call("get_backup_app_list_file_path")) + entry({"admin", "store", "get_backup_app_list"}, call("get_backup_app_list")) + entry({"admin", "store", "get_available_backup_file_list"}, call("get_available_backup_file_list")) + entry({"admin", "store", "set_local_backup_dir_path"}, post("set_local_backup_dir_path")) + entry({"admin", "store", "get_local_backup_dir_path"}, call("get_local_backup_dir_path")) + end +end + +local function user_id() + local jsonc = require "luci.jsonc" + local json_parse = jsonc.parse + local fs = require "nixio.fs" + local data = fs.readfile("/etc/.app_store.id") + + local id + if data ~= nil then + id = json_parse(data) + end + if id == nil then + fs.unlink("/etc/.app_store.id") + id = {arch="",uid=""} + end + + id.version = (fs.readfile("/etc/.app_store.version") or "?"):gsub("[\r\n]", "") + + return id +end + +local function user_config() + local uci = require "luci.model.uci".cursor() + + local data = { + hide_docker = uci:get("istore", "istore", "hide_docker") == "1", + ignore_arch = uci:get("istore", "istore", "ignore_arch") == "1", + last_path = uci:get("istore", "istore", "last_path"), + super_arch = uci:get("istore", "istore", "super_arch"), + channel = uci:get("istore", "istore", "channel") + } + return data +end + +local function vue_lang() + local i18n = require("luci.i18n") + local lang = i18n.translate("istore_vue_lang") + if lang == "istore_vue_lang" or lang == "" then + lang = "en" + end + return lang +end + +local function flock(file, type) + local nixio = require "nixio" + local oflags = nixio.open_flags("wronly", "creat") + local lock, code, msg = nixio.open(file, oflags) + if not lock then + return nil, "Open lock failed: " .. msg + end + + -- Acquire lock + local stat, code, msg = lock:lock(type) + if not stat then + lock:close() + return nil, "Lock failed: " .. msg + end + return lock, nil +end + +local function is_exec(cmd, async) + local nixio = require "nixio" + local os = require "os" + local fs = require "nixio.fs" + local rshift = nixio.bit.rshift + + local lock, msg = flock("/var/lock/istore.lock", "tlock") + if lock == nil then + return 255, "", msg + end + + if async then + cmd = "/etc/init.d/tasks task_add istore " .. luci.util.shellquote(cmd) + end + local r = os.execute(cmd .. " >/var/log/istore.stdout 2>/var/log/istore.stderr") + local e = fs.readfile("/var/log/istore.stderr") + local o = fs.readfile("/var/log/istore.stdout") + + fs.unlink("/var/log/istore.stderr") + fs.unlink("/var/log/istore.stdout") + + lock:lock("ulock") + lock:close() + + e = e or "" + if r == 256 and e == "" then + e = "os.execute exit code 1" + end + return rshift(r,8), o or "", e or "" +end + +function redirect_index() + luci.http.redirect(luci.dispatcher.build_url(unpack(page_index))) +end + +function store_index() + local fs = require "nixio.fs" + local features = { "_lua_force_array_" } + if fs.access("/usr/libexec/istore/backup") then + features[#features+1] = "backup" + end + if luci.sys.call("which docker >/dev/null 2>&1") == 0 then + features[#features+1] = "docker" + end + if luci.sys.call("[ -d /ext_overlay ] >/dev/null 2>&1") == 0 then + features[#features+1] = "sandbox" + end + if luci.sys.call("[ -f /www/luci-static/resources/luci.js ] >/dev/null 2>&1") == 0 then + features[#features+1] = "luci-js" + end + luci.template.render("store/main", {prefix=luci.dispatcher.build_url(unpack(page_index)),id=user_id(),lang=vue_lang(),user_config=user_config(),features=features}) +end + +function store_dev() + luci.template.render("store/main_dev", {prefix=luci.dispatcher.build_url(unpack({"admin", "store", "dev"})),id=user_id(),lang=vue_lang(),user_config=user_config()}) +end + +function store_log() + local fs = require "nixio.fs" + local code = 0 + local e = fs.readfile("/var/log/istore.stderr") + local o = fs.readfile("/var/log/istore.stdout") + if o ~= nil then + code = 206 + end + luci.http.prepare_content("application/json") + luci.http.write_json({code=code,stdout=o or "",stderr=e or ""}) +end + +function action_user_id() + luci.http.prepare_content("application/json") + luci.http.write_json(user_id()) +end + +function check_self_upgrade() + local ret = { + code = 500, + msg = "Unknown" + } + local r,o,e = is_exec(myopkg .. " check_self_upgrade") + if r ~= 0 then + ret.msg = e + else + ret.code = o == "" and 304 or 200 + ret.msg = o:gsub("[\r\n]", "") + end + luci.http.prepare_content("application/json") + luci.http.write_json(ret) +end + +function do_self_upgrade() + local code, out, err, ret + code,out,err = is_exec(myopkg .. " do_self_upgrade") + ret = { + code = code, + stdout = out, + stderr = err + } + luci.http.prepare_content("application/json") + luci.http.write_json(ret) +end + +-- Internal action function +local function _action(exe, cmd, ...) + + local pkg = "" + for k, v in pairs({...}) do + pkg = pkg .. " " .. luci.util.shellquote(v) + end + + local c = "%s %s %s" %{ exe, cmd, pkg } + + return is_exec(c, true) +end + +function validate_pkgname(val) + return (val ~= nil and val:match("^[a-zA-Z0-9_-]+$") ~= nil) +end + +local function get_installed_and_cache() + local metadir = "/usr/lib/opkg/meta" + local cachedir = "/tmp/cache/istore" + local cachefile = cachedir .. "/installed.json" + local metapkgpre = "app-meta-" + local nixio = require "nixio" + local fs = require "nixio.fs" + local ipkg = require "luci.model.ipkg" + local jsonc = require "luci.jsonc" + local result = {} + local lock, msg = flock("/var/lock/istore-installed.lock", "lock") + local ms = fs.stat(metadir) + local cs = fs.stat(cachefile) + if not ms then + result = {} + elseif not cs or ms["mtime"] > cs["mtime"] then + local itr = fs.dir(metadir) + local data = {} + if itr then + local i18n = require("luci.i18n") + local pkg + for pkg in itr do + if pkg:match("^.*%.json$") then + local metadata = fs.readfile(metadir .. "/" .. pkg) + if metadata ~= nil then + local meta = jsonc.parse(metadata) + if meta == nil then + local name = pkg:gsub("^(.-)%.json$", "%1") + meta = { + name = name, + title = "{ " .. name .. " }", + author = "", + version = "0.0.0", + description = i18n.translate("This package is broken! Please reinstall or uninstall it."), + depends = {}, + tags = {"broken"}, + broken = true, + } + end + local metapkg = metapkgpre .. meta.name + local status = ipkg.status(metapkg) + if next(status) ~= nil then + meta.time = tonumber(status[metapkg]["Installed-Time"]) + data[#data+1] = meta + end + end + end + end + end + result = data + fs.mkdirr(cachedir) + local oflags = nixio.open_flags("rdwr", "creat") + local mfile, code, msg = nixio.open(cachefile, oflags) + mfile:writeall(jsonc.stringify(result)) + mfile:close() + else + result = jsonc.parse(fs.readfile(cachefile) or "") + end + lock:lock("ulock") + lock:close() + return result +end + +function store_action(param) + local metadir = "/usr/lib/opkg/meta" + local metapkgpre = "app-meta-" + local code, out, err, ret + local fs = require "nixio.fs" + local ipkg = require "luci.model.ipkg" + local jsonc = require "luci.jsonc" + local json_parse = jsonc.parse + local action = param.action or "" + + if action == "status" then + local pkg = luci.http.formvalue("package") + if not validate_pkgname(pkg) then + luci.http.status(400, "Bad Request") + return + end + local metapkg = metapkgpre .. pkg + local meta = {} + local metadata = fs.readfile(metadir .. "/" .. pkg .. ".json") + + if metadata ~= nil then + meta = json_parse(metadata) or {} + end + meta.installed = false + local status = ipkg.status(metapkg) + if next(status) ~= nil then + meta.installed=true + meta.time=tonumber(status[metapkg]["Installed-Time"]) + end + + ret = meta + elseif action == "installed" then + local data = get_installed_and_cache() + ret = data + else + local pkg = luci.http.formvalue("package") + if not validate_pkgname(pkg) then + luci.http.status(400, "Bad Request") + return + end + local metapkg = pkg and (metapkgpre .. pkg) or "" + if action == "update" or pkg then + if action == "update" or action == "install" or action == "autoconf" then + if (action == "install" and "1" == luci.http.formvalue("autoconf")) or action == "autoconf" then + local autoenv = "AUTOCONF=" .. pkg + local autopath = luci.http.formvalue("path") + local autoenable = luci.http.formvalue("enable") + if autopath ~= nil then + autoenv = autoenv .. " path=" .. luci.util.shellquote(autopath) + local uci = require "luci.model.uci".cursor() + uci:set("istore", "istore", "last_path", autopath) + uci:commit("istore") + end + if autoenable ~= nil then + autoenv = autoenv .. " enable=" .. autoenable + end + code, out, err = _action(myopkg, luci.util.shellquote(autoenv), action, metapkg) + else + code, out, err = _action(myopkg, action, metapkg) + end + else + local meta = json_parse(fs.readfile(metadir .. "/" .. pkg .. ".json")) + local pkgs = {} + if meta == nil then + meta = { + depends = {}, + } + end + if action == "upgrade" then + pkgs = meta.depends + table.insert(pkgs, metapkg) + code, out, err = _action(myopkg, action, unpack(pkgs)) + else -- remove + for _, dep in ipairs(meta.depends) do + if dep ~= "docker-deps" and dep ~= "luci-js-deps" then + pkgs[#pkgs+1] = dep + end + end + table.insert(pkgs, metapkg) + code, out, err = _action(myopkg, action, unpack(pkgs)) + fs.unlink("/tmp/luci-indexcache") + end + end + else + code = 400 + err = "package is null" + end + + ret = { + code = code, + stdout = out, + stderr = err + } + end + + luci.http.prepare_content("application/json") + luci.http.write_json(ret) +end + +function store_token() + luci.http.prepare_content("application/json") + require "luci.template".render_string("{\"token\":\"<%=token%>\"}") +end + +function store_upload() + local fd + local path + local finished = false + local tmpdir = "/tmp/is-root/tmp" + luci.http.setfilehandler( + function(meta, chunk, eof) + if not fd then + path = tmpdir .. "/" .. meta.file + nixio.fs.mkdirr(tmpdir) + fd = io.open(path, "w") + end + if chunk then + fd:write(chunk) + end + if eof then + fd:close() + finished = true + end + end + ) + local code, out, err + out = "" + if finished then + if string.lower(string.sub(path, -4, -1)) == ".run" then + code, out, err = _action("sh", "-c", "ls -l \"%s\"; md5sum \"%s\" 2>/dev/null; chmod 755 \"%s\" && \"%s\"; RET=$?; rm -f \"%s\"; exit $RET" %{ path, path, path, path, path }) + else + code, out, err = _action("sh", "-c", "opkg install \"%s\"; RET=$?; rm -f \"%s\"; exit $RET" %{ path, path }) + end + else + code = 500 + err = "upload failed!" + end + --nixio.fs.unlink(path) + local ret = { + code = code, + stdout = out, + stderr = err + } + luci.http.prepare_content("application/json") + luci.http.write_json(ret) +end + +function configured() + local uci = luci.http.formvalue("uci") + if not validate_pkgname(uci) then + luci.http.status(400, "Bad Request") + return + end + local configured = nixio.fs.access("/etc/config/" .. uci) + luci.http.prepare_content("application/json") + luci.http.write_json({code=200, configured=configured}) +end + +function entrysh() + local package = luci.http.formvalue("package") + local update = luci.http.formvalue("update") + local hostname = luci.http.formvalue("hostname") + if hostname == nil or hostname == "" or not hostname:match("^[a-zA-Z0-9_%[][a-zA-Z0-9_%-%.%:%]]*$") then + luci.http.status(400, "Bad Request") + return + end + local nixio = require "nixio" + local fs = require "nixio.fs" + local hostnameq = luci.util.shellquote(hostname) + local cachedir = "/tmp/cache/istore/entrysh/" .. hostname + fs.mkdirr(cachedir) + + local jsonc = require "luci.jsonc" + local results = {} + local errors = {} + local force = update == "1" + local candidate = nil + if package ~= nil and package ~= "" then + candidate = luci.util.split(package, ",") + end + local installed = get_installed_and_cache() + local lock, msg = flock("/var/lock/istore-entrysh.lock", "lock") + local meta + for _, meta in ipairs(installed) do + if meta.flags ~= nil and meta.uci ~= nil and luci.util.contains(meta.flags, "entrysh") + and (candidate == nil or luci.util.contains(candidate, meta.name)) then + local entryfile = "/usr/libexec/istoree/" .. meta.name .. ".sh" + local ucifile = "/etc/config/" .. meta.uci + local cachefile = cachedir .. "/" .. meta.name .. ".json" + local status = nil + if not force then + local us = fs.stat(ucifile) + local cs = fs.stat(cachefile) + if cs ~= nil and us["mtime"] <= cs["mtime"] then + status = jsonc.parse(fs.readfile(cachefile) or "") + end + end + if status ~= nil then + results[#results+1] = status + elseif fs.access(entryfile) then + local o = luci.util.exec(entryfile .. " status " .. hostnameq) + if o == nil or o == "" then + errors[#errors+1] = {app=meta.name, code=500, msg="entrysh execute failed"} + else + status = jsonc.parse(o) + if status == nil then + errors[#errors+1] = {app=meta.name, code=500, msg="json parse failed: " .. o} + else + results[#results+1] = status + local oflags = nixio.open_flags("rdwr", "creat") + local mfile, code, msg = nixio.open(cachefile, oflags) + mfile:writeall(jsonc.stringify(status)) + mfile:close() + end + end + else + errors[#errors+1] = {app=meta.name, code=404, msg="entrysh of this package not found"} + end + end + end + lock:lock("ulock") + lock:close() + + luci.http.prepare_content("application/json") + luci.http.write_json({code=200, status=results, errors=errors}) +end + +function docker_check_dir() + local docker_on_system = luci.sys.call("/usr/libexec/istore/docker check_dir >/dev/null 2>&1") ~= 0 + luci.http.prepare_content("application/json") + luci.http.write_json({code=200, docker_on_system=docker_on_system}) +end + +function docker_check_migrate() + local path = luci.http.formvalue("path") + if path == nil or path == "" then + luci.http.status(400, "Bad Request") + return + end + local r,o,e = is_exec("/usr/libexec/istore/docker migrate_check " .. luci.util.shellquote(path)) + local result = "good" + if r == 1 then + result = "bad" + elseif r == 2 then + result = "existed" + end + luci.http.prepare_content("application/json") + luci.http.write_json({code=200, result=result, error=e}) +end + +function docker_migrate() + local path = luci.http.formvalue("path") + if path == nil or path == "" then + luci.http.status(400, "Bad Request") + return + end + + local action = "migrate" + local overwrite = luci.http.formvalue("overwrite") + if overwrite == "chdir" then + action = "change_dir" + end + local r,o,e = is_exec("/usr/libexec/istore/docker " .. action .. " " .. luci.util.shellquote(path), true) + luci.http.prepare_content("application/json") + luci.http.write_json({code=r, stdout=o, stderr=e}) +end + +local function split(str,reps) + local resultStrList = {} + string.gsub(str,'[^'..reps..']+',function (w) + table.insert(resultStrList,w) + end) + return resultStrList +end + +local function ltn12_popen(command) + + local fdi, fdo = nixio.pipe() + local pid = nixio.fork() + + if pid > 0 then + fdo:close() + local close + return function() + local buffer = fdi:read(2048) + local wpid, stat = nixio.waitpid(pid, "nohang") + if not close and wpid and stat == "exited" then + close = true + end + + if buffer and #buffer > 0 then + return buffer + elseif close then + fdi:close() + return nil + end + end + elseif pid == 0 then + nixio.dup(fdo, nixio.stdout) + fdi:close() + fdo:close() + nixio.exec("/bin/sh", "-c", command) + end +end + +-- call get_support_backup_features +function get_support_backup_features() + local jsonc = require "luci.jsonc" + local error_ret = {code = 500, msg = "Unknown"} + local success_ret = {code = 200, msg = "Unknown"} + local r,o,e = is_exec(is_backup .. " get_support_backup_features") + if r ~= 0 then + error_ret.msg = e + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + else + success_ret.code = 200 + success_ret.msg = jsonc.stringify(split(o,'\n')) + luci.http.prepare_content("application/json") + luci.http.write_json(success_ret) + end +end + +-- post light_backup +function light_backup() + local jsonc = require "luci.jsonc" + local error_ret = {code = 500, msg = "Unknown"} + local success_ret = {code = 200,msg = "Unknown"} + local r,o,e = is_exec(is_backup .. " backup") + + if r ~= 0 then + error_ret.msg = e + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + else + success_ret.code = 200 + success_ret.msg = o:gsub("[\r\n]", "") + luci.http.prepare_content("application/json") + luci.http.write_json(success_ret) + end +end + +-- call get_light_backup_file +function get_light_backup_file() + local light_backup_cmd = "tar -c %s | gzip 2>/dev/null" + local loght_backup_filelist = "/etc/istore/app.list" + local reader = ltn12_popen(light_backup_cmd:format(loght_backup_filelist)) + luci.http.header('Content-Disposition', 'attachment; filename="light-backup-%s-%s.tar.gz"' % { + luci.sys.hostname(), os.date("%Y-%m-%d")}) + luci.http.prepare_content("application/x-targz") + luci.ltn12.pump.all(reader, luci.http.write) +end + +local function update_local_backup_path(path) + local uci = require "uci" + local fs = require "nixio.fs" + local x = uci.cursor() + local local_backup_path + + if fs.access("/etc/config/istore") then + local_backup_path = x:get("istore","istore","local_backup_path") + else + --create config file + local f=io.open("/etc/config/istore","a+") + f:write("config istore \'istore\'\n\toption local_backup_path \'\'") + f:flush() + f:close() + end + + if path ~= local_backup_path then + -- set uci config + x:set("istore","istore","local_backup_path",path) + x:commit("istore") + end +end + +-- post local_backup +function local_backup() + local code, out, err, ret + local error_ret + local path = luci.http.formvalue("path") + if path ~= "" then + -- judge path + code,out,err = is_exec("findmnt -T " .. path .. " -o TARGET|sed -n 2p") + if out:gsub("[\r\n]", "") == "/" or out:gsub("[\r\n]", "") == "/tmp" then + -- error + error_ret = {code = 500, stderr = "Path Error,Can not be / or tmp."} + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + else + -- update local backup path + update_local_backup_path(path) + code,out,err = _action(is_backup, "backup", path) + ret = { + code = code, + stdout = out, + stderr = err + } + luci.http.prepare_content("application/json") + luci.http.write_json(ret) + end + else + -- error + error_ret = {code = 500, stderr = "Path Unknown"} + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + end +end + +-- post light_restore +function light_restore() + local fd + local path + local finished = false + local tmpdir = "/tmp/" + luci.http.setfilehandler( + function(meta, chunk, eof) + if not fd then + path = tmpdir .. "/" .. meta.file + fd = io.open(path, "w") + end + if chunk then + fd:write(chunk) + end + if eof then + fd:close() + finished = true + end + end + ) + + local code, out, err, ret + + if finished then + is_exec("rm /etc/istore/app.list;tar -xzf " .. path .. " -C /") + nixio.fs.unlink(path) + if nixio.fs.access("/etc/istore/app.list") then + code,out,err = _action(is_backup, "restore") + ret = { + code = code, + stdout = out, + stderr = err + } + luci.http.prepare_content("application/json") + luci.http.write_json(ret) + else + local error_ret = {code = 500, stderr = "File is error!"} + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + end + else + ret = {code = 500, stderr = "upload failed!"} + luci.http.prepare_content("application/json") + luci.http.write_json(ret) + end +end + +-- post local_restore +function local_restore() + local path = luci.http.formvalue("path") + local code, out, err, ret + if path ~= "" then + code,out,err = _action(is_backup, "restore", path) + ret = { + code = code, + stdout = out, + stderr = err + } + luci.http.prepare_content("application/json") + luci.http.write_json(ret) + else + -- error + error_ret = {code = 500, stderr = "Path Unknown"} + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + end +end + +-- call get_backup_app_list_file_path +function get_backup_app_list_file_path() + local jsonc = require "luci.jsonc" + local error_ret = {code = 500, msg = "Unknown"} + local success_ret = {code = 200,msg = "Unknown"} + local r,o,e = is_exec(is_backup .. " get_backup_app_list_file_path") + if r ~= 0 then + error_ret.msg = e + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + else + success_ret.code = 200 + success_ret.msg = o:gsub("[\r\n]", "") + luci.http.prepare_content("application/json") + luci.http.write_json(success_ret) + end +end + +-- call get_backup_app_list +function get_backup_app_list() + local jsonc = require "luci.jsonc" + local error_ret = {code = 500, msg = "Unknown"} + local success_ret = {code = 200,msg = "Unknown"} + local r,o,e = is_exec(is_backup .. " get_backup_app_list") + if r ~= 0 then + error_ret.msg = e + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + else + success_ret.code = 200 + success_ret.msg = jsonc.stringify(split(o,'\n')) + luci.http.prepare_content("application/json") + luci.http.write_json(success_ret) + end +end + +-- call get_available_backup_file_list +function get_available_backup_file_list() + local jsonc = require "luci.jsonc" + local error_ret = {code = 500, msg = "Unknown"} + local success_ret = {code = 200,msg = "Unknown"} + local path = luci.http.formvalue("path") + local r,o,e + + if path ~= "" then + -- update local backup path + update_local_backup_path(path) + r,o,e = is_exec(is_backup .. " get_available_backup_file_list " .. luci.util.shellquote(path)) + if r ~= 0 then + error_ret.msg = e + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + else + success_ret.code = 200 + success_ret.msg = jsonc.stringify(split(o,'\n')) + luci.http.prepare_content("application/json") + luci.http.write_json(success_ret) + end + else + -- set error code + error_ret.msg = "Path Unknown" + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + end +end + +-- post set_local_backup_dir_path +function set_local_backup_dir_path() + local path = luci.http.formvalue("path") + local success_ret = {code = 200, msg = "Success"} + local error_ret = {code = 500, msg = "Unknown"} + + if path ~= "" then + -- update local backup path + update_local_backup_path(path) + luci.http.prepare_content("application/json") + luci.http.write_json(success_ret) + else + -- set error code + error_ret.msg = "Path Unknown" + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + end +end + +-- call get_local_backup_dir_path +function get_local_backup_dir_path() + local uci = require "uci" + local fs = require "nixio.fs" + local x = uci.cursor() + local local_backup_path = nil + local success_ret = {code = 200,msg = "Unknown"} + local error_ret = {code = 500, msg = "Path Unknown"} + + if fs.access("/etc/config/istore") then + local_backup_path = x:get("istore","istore","local_backup_path") + if local_backup_path == nil then + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + else + success_ret.msg = local_backup_path:gsub("[\r\n]", "") + luci.http.prepare_content("application/json") + luci.http.write_json(success_ret) + end + else + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + end +end + +-- copy from /usr/lib/lua/luci/model/diskman.lua +local function byte_format(byte) + local suff = {"B", "KB", "MB", "GB", "TB"} + for i=1, 5 do + if byte > 1024 and i < 5 then + byte = byte / 1024 + else + return string.format("%.2f %s", byte, suff[i]) + end + end +end + +-- copy from /usr/libexec/rpcd/luci +local function getBlockDevices() + local fs = require "nixio.fs" + + local block = io.popen("/sbin/block info", "r") + if block then + local rv = {} + + while true do + local ln = block:read("*l") + if not ln then + break + end + + local dev = ln:match("^/dev/(.-):") + if dev then + local s = tonumber((fs.readfile("/sys/class/block/" .. dev .."/size"))) + local e = { + dev = "/dev/" .. dev, + size = s and byte_format(s * 512) + } + + local key, val = { } + for key, val in ln:gmatch([[(%w+)="(.-)"]]) do + e[key:lower()] = val + end + + rv[dev] = e + end + end + + block:close() + + return rv + else + return + end +end + +function get_block_devices() + local error_ret = {code = 500, msg = "Unable to execute block utility"} + local devices = getBlockDevices() + if devices ~= nil then + luci.http.prepare_content("application/json") + luci.http.write_json({code = 200, data = devices}) + else + luci.http.prepare_content("application/json") + luci.http.write_json(error_ret) + end +end + +function toggle_docker() + local uci = require "luci.model.uci".cursor() + local hide = luci.http.formvalue("hide") + uci:set("istore", "istore", "hide_docker", hide == "true" and "1" or "0") + uci:commit("istore") + luci.http.prepare_content("application/json") + luci.http.write_json({code = 200, msg = "Success"}) +end + +function toggle_arch() + local uci = require "luci.model.uci".cursor() + local ignore = luci.http.formvalue("ignore") + uci:set("istore", "istore", "ignore_arch", ignore == "true" and "1" or "0") + uci:commit("istore") + luci.http.prepare_content("application/json") + luci.http.write_json({code = 200, msg = "Success"}) +end diff --git a/istore/luci/luci-app-store/luasrc/view/store/main.htm b/istore/luci/luci-app-store/luasrc/view/store/main.htm new file mode 100644 index 00000000..2e6f3329 --- /dev/null +++ b/istore/luci/luci-app-store/luasrc/view/store/main.htm @@ -0,0 +1,63 @@ +<%+header%> +<% + local jsonc = require "luci.jsonc" +%> + +

<%:iStore%> + + v<%=id.version%> + +

+ +
+
+<%+tasks/embed%> + + + + +<%+footer%> \ No newline at end of file diff --git a/istore/luci/luci-app-store/root/bin/is-opkg b/istore/luci/luci-app-store/root/bin/is-opkg new file mode 100755 index 00000000..0566af26 --- /dev/null +++ b/istore/luci/luci-app-store/root/bin/is-opkg @@ -0,0 +1,291 @@ +#!/bin/sh +# this script MUST supports executting without luci-app-store installed, +# so we can use this script to install luci-app-store itself + +action=${1} +shift +if [ "${action:0:9}" = "AUTOCONF=" ]; then + export "ISTORE_${action}" + exec "$0" "$@" +fi + +IS_ROOT=/tmp/is-root +DL_DIR=${IS_ROOT}/tmp/dl +LISTS_DIR_O=/tmp/opkg-lists +LISTS_DIR=${IS_ROOT}${LISTS_DIR_O} +OPKG_CONF_DIR=${IS_ROOT}/etc/opkg +OPKG_CONF_DIR_M=${IS_ROOT}/etc/opkg_m +FEEDS_SERVER=https://istore.istoreos.com/repo +FEEDS_SERVER_MIRRORS="https://repo.istoreos.com/repo" +DISABLE_MIRROR=false +ARCH=`sed -n -e 's/^Architecture: *\([^ ]\+\) *$/\1/p' /rom/usr/lib/opkg/info/libc.control /usr/lib/opkg/info/libc.control 2>/dev/null | head -1` + +# for istore self upgrade +ISTORE_PKG=luci-app-store +ISTORE_DEP_PKGS="luci-lib-taskd luci-lib-xterm taskd" +ISTORE_INDEX=https://istore.istoreos.com/repo/all/store/Packages.gz + +is_init() { + mkdir -p ${DL_DIR} ${LISTS_DIR} ${IS_ROOT}/etc ${IS_ROOT}/var + + cat /etc/opkg.conf | grep -Fv lists_dir | grep -Fv check_signature > ${IS_ROOT}/etc/opkg.conf + + cp ${IS_ROOT}/etc/opkg.conf ${IS_ROOT}/etc/opkg_o.conf + + echo >> ${IS_ROOT}/etc/opkg.conf + echo "lists_dir ext ${LISTS_DIR}" >> ${IS_ROOT}/etc/opkg.conf + # create opkg_o.conf for executting 'opkg update' with offline-root, so we don't overwrite system opkg list + echo >> ${IS_ROOT}/etc/opkg_o.conf + echo "lists_dir ext ${LISTS_DIR_O}" >> ${IS_ROOT}/etc/opkg_o.conf + + cp -au /etc/opkg ${IS_ROOT}/etc/ + [ -e ${IS_ROOT}/var/lock ] || ln -s /var/lock ${IS_ROOT}/var/lock +} + +opkg_wrap() { + OPKG_CONF_DIR=${OPKG_CONF_DIR} opkg -f ${IS_ROOT}/etc/opkg.conf "$@" +} + +opkg_wrap_mirrors() { + local server + local file + if ! $DISABLE_MIRROR; then + for server in $FEEDS_SERVER_MIRRORS ; do + rm -rf "${OPKG_CONF_DIR_M}" 2>/dev/null + mkdir -p "${OPKG_CONF_DIR_M}" 2>/dev/null + ls "${OPKG_CONF_DIR}/" | while read; do + file="$REPLY" + if [ -f "${OPKG_CONF_DIR}/$file" -a "${file: -5}" = ".conf" ]; then + sed "s#$FEEDS_SERVER/#$server/#g" "${OPKG_CONF_DIR}/$file" >"${OPKG_CONF_DIR_M}/$file" + touch -r "${OPKG_CONF_DIR}/$file" "${OPKG_CONF_DIR_M}/$file" 2>/dev/null + else + cp -a "${OPKG_CONF_DIR}/$file" "${OPKG_CONF_DIR_M}/" + fi + done + echo "Try mirror server $server" + OPKG_CONF_DIR=${OPKG_CONF_DIR_M} opkg -f ${IS_ROOT}/etc/opkg.conf "$@" && return 0 + done + DISABLE_MIRROR=true + fi + echo "Try origin server $FEEDS_SERVER" + OPKG_CONF_DIR=${OPKG_CONF_DIR} opkg -f ${IS_ROOT}/etc/opkg.conf "$@" +} + +alias fcurl='curl -L --fail --show-error' + +check_space() { + local free="$((`df -kP / | awk 'NR==2 {print $4}'` >> 10 ))" + if [ "$free" -lt 1 ]; then + echo "Root disk full!" >&2 + exit 1 + fi + return 0 +} + +update() { + if [ -z "${ARCH}" ]; then + echo "Get architecture failed" >&2 + return 1 + fi + + echo "Fetch feed list for ${ARCH}" + fcurl --no-progress-meter -o ${OPKG_CONF_DIR}/meta.conf "${FEEDS_SERVER}/all/meta.conf" && \ + fcurl --no-progress-meter -o ${OPKG_CONF_DIR}/all.conf "${FEEDS_SERVER}/all/isfeeds.conf" && \ + fcurl --no-progress-meter -o ${OPKG_CONF_DIR}/arch.conf "${FEEDS_SERVER}/${ARCH}/isfeeds.conf" || \ + return 1 + + echo "Update feeds index" + opkg -f ${IS_ROOT}/etc/opkg_o.conf --offline-root ${IS_ROOT} update + + return 0 +} + +update_if_outdate() { + local idle_t=$((`date '+%s'` - `date -r ${IS_ROOT}/.last_force_ts '+%s' 2>/dev/null || echo '0'`)) + [ $idle_t -gt ${1:-120} ] || return 2 + update || return 1 + touch ${IS_ROOT}/.last_force_ts + return 0 +} + +check_self_upgrade() { + local newest=`curl --connect-timeout 2 --max-time 5 -s ${ISTORE_INDEX} | gunzip | grep -FA10 "Package: ${ISTORE_PKG}" | grep -Fm1 'Version: ' | sed 's/^Version: //'` + local current=`grep -Fm1 'Version: ' /usr/lib/opkg/info/${ISTORE_PKG}.control | sed 's/^Version: //'` + if [ "v$newest" = "v" -o "v$current" = "v" ]; then + echo "Check version failed!" >&2 + exit 255 + fi + if [ "$newest" != "$current" ]; then + echo "$newest" + fi + return 0 +} + +do_self_upgrade_0() { + opkg_wrap upgrade ${ISTORE_DEP_PKGS} && opkg_wrap upgrade ${ISTORE_PKG} +} + +do_self_upgrade() { + check_mtime || return 1 + local newest=`curl --connect-timeout 2 --max-time 5 -s ${ISTORE_INDEX} | gunzip | grep -FA10 "Package: ${ISTORE_PKG}" | grep -Fm1 'Version: ' | sed 's/^Version: //'` + local current=`grep -Fm1 'Version: ' /usr/lib/opkg/info/${ISTORE_PKG}.control | sed 's/^Version: //'` + if [ "v$newest" = "v" -o "v$current" = "v" ]; then + echo "Check version failed!" >&2 + return 1 + fi + if [ "$newest" = "$current" ]; then + echo "Already the latest version!" >&2 + return 1 + fi + if opkg_wrap info ${ISTORE_PKG} | grep -qFm1 "Version: $newest"; then + do_self_upgrade_0 && return 0 + update_if_outdate || return 1 + do_self_upgrade_0 + else + update_if_outdate || return 1 + do_self_upgrade_0 + fi +} + +check_mtime() { + find ${OPKG_CONF_DIR}/arch.conf -mtime -1 2>/dev/null | grep -q . || update +} + +wrapped_in_update() { + check_mtime || return 1 + eval "$@" && return 0 + update_if_outdate || return 1 + eval "$@" +} + +step_upgrade() { + local pkg + local pkgs="" + local metapkg="" + for pkg in $@; do + if [[ $pkg == app-meta-* ]]; then + metapkg="$metapkg $pkg" + else + pkgs="$pkgs $pkg" + fi + done + if [ -n "$pkgs" ]; then + opkg_wrap_mirrors upgrade $pkgs || return 1 + fi + if [ -n "$metapkg" ]; then + opkg_wrap_mirrors upgrade $metapkg || return 1 + fi + return 0 +} + +new_upgrade() { + check_mtime || return 1 + local metapkg=`echo "$@" | sed 's/ /\n/g' | grep -F app-meta-` + if [ -z "$metapkg" ] || opkg_wrap info $metapkg | grep -qF not-installed ; then + true + else + update_if_outdate + fi + wrapped_in_update step_upgrade "$@" +} + +remove() { + opkg_wrap --autoremove --force-removal-of-dependent-packages remove "$@" +} + +autoconf_to_env() { + local autoconf path enable + eval "local autoconf=$ISTORE_AUTOCONF" + export -n ISTORE_AUTOCONF + export -n ISTORE_DONT_START + export -n ISTORE_CONF_DIR + export -n ISTORE_CACHE_DIR + export -n ISTORE_PUBLIC_DIR + export -n ISTORE_DL_DIR + + ISTORE_AUTOCONF=$autoconf + + if [ -n "$path" ]; then + export ISTORE_CONF_DIR="$path/Configs" + export ISTORE_CACHE_DIR="$path/Caches" + export ISTORE_PUBLIC_DIR="$path/Public" + export ISTORE_DL_DIR="$ISTORE_PUBLIC_DIR/Downloads" + fi + [ "$enable" = 0 ] && export ISTORE_DONT_START="1" +} + +try_autoconf() { + [ -n "$ISTORE_AUTOCONF" ] || return 0 + autoconf_to_env + [ -n "$ISTORE_AUTOCONF" ] || return 1 + echo "Auto configure $ISTORE_AUTOCONF" + /usr/libexec/istorea/${ISTORE_AUTOCONF}.sh +} + +try_upgrade_depends() { + local pkg="$1" + if [[ $pkg == app-meta-* ]]; then + local deps=$(grep '^Depends: ' /usr/lib/opkg/info/$pkg.control | busybox sed -e 's/^Depends: //' -e 's/,/\n/g' -e 's/ //g' | grep -vFw libc | xargs echo) + [ -z "$deps" ] || opkg_wrap_mirrors install $deps + fi + return 0 +} + +usage() { + echo "usage: is-opkg sub-command [arguments...]" + echo "where sub-command is one of:" + echo " update Update list of available packages" + echo " upgrade Upgrade package(s)" + echo " install Install package(s)" + echo " remove Remove package(s)" + echo " info [pkg|regexp] Display all info for " + echo " list-upgradable List installed and upgradable packages" + echo " check_self_upgrade Check iStore upgrade" + echo " do_self_upgrade Upgrade iStore" + echo " arch Show libc architecture" + echo " opkg sys opkg wrap" +} + +is_init >/dev/null 2>&1 + +case $action in + "update") + update + ;; + "install") + check_space + wrapped_in_update opkg_wrap_mirrors install "$@" && try_upgrade_depends "$1" && try_autoconf + ;; + "autoconf") + try_autoconf + ;; + "upgrade") + new_upgrade "$@" + ;; + "remove") + remove "$@" || remove "$@" + ;; + "info") + opkg_wrap info "$@" + ;; + "list-upgradable") + opkg_wrap list-upgradable + ;; + "check_self_upgrade") + check_self_upgrade + ;; + "do_self_upgrade") + check_space + do_self_upgrade + ;; + "arch") + echo "$ARCH" + ;; + "opkg") + opkg_wrap "$@" + ;; + + *) + usage + ;; +esac diff --git a/istore/luci/luci-app-store/root/etc/config/istore b/istore/luci/luci-app-store/root/etc/config/istore new file mode 100644 index 00000000..deccf264 --- /dev/null +++ b/istore/luci/luci-app-store/root/etc/config/istore @@ -0,0 +1,7 @@ +config istore 'istore' +# option hide_docker '0' +# option ignore_arch '0' +# option last_path '/mnt/nvme' +# option channel 'istore' +# option super_arch 'x86_64' +# option super_arch 'aarch64' diff --git a/istore/luci/luci-app-store/root/etc/init.d/istore b/istore/luci/luci-app-store/root/etc/init.d/istore new file mode 100755 index 00000000..a7aa1a1a --- /dev/null +++ b/istore/luci/luci-app-store/root/etc/init.d/istore @@ -0,0 +1,54 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2016 OpenWrt.org + +START=45 + +boot() { + local ARCH=`/bin/is-opkg arch` + generate_store_id $ARCH + generate_super_arch $ARCH +} + +generate_store_id() { + [ -s /etc/.app_store.id ] && return 0 + local ARCH=$1 + local iface HASH + + for iface in eth0 br-lan; do + if [ -e /sys/class/net/$iface/address ]; then + HASH=`md5sum /sys/class/net/$iface/address | cut -d ' ' -f1` + break + fi + done + + if [ -z "$HASH" ]; then + HASH=`dd if=/dev/urandom bs=512 count=1 2>/dev/null | md5sum | cut -d ' ' -f1` + fi + + echo "{\"arch\":\"${ARCH}\", \"uid\":\"${HASH}\"}" > /etc/.app_store.id +} + +generate_super_arch() { + local ARCH=$1 + local super_arch + case "$ARCH" in + arm*) + super_arch="arm" + ;; + i386) + super_arch="x86" + ;; + x86_64) + super_arch="x86_64" + ;; + *) + super_arch="${ARCH%%_*}" + ;; + esac + local old=`uci -q get istore.istore.super_arch` + [ "$old" = "$super_arch" ] && return 0 + uci -q batch <<-EOF >/dev/null + set istore.istore.super_arch=$super_arch + commit istore +EOF +} diff --git a/istore/luci/luci-app-store/root/etc/uci-defaults/luci-app-store b/istore/luci/luci-app-store/root/etc/uci-defaults/luci-app-store new file mode 100644 index 00000000..005eb24a --- /dev/null +++ b/istore/luci/luci-app-store/root/etc/uci-defaults/luci-app-store @@ -0,0 +1,12 @@ +#!/bin/sh + +/etc/init.d/istore boot + +if [ -z "`uci -q get istore.istore.hide_docker`" ] && ! which docker >/dev/null; then + uci -q batch <<-EOF >/dev/null + set istore.istore.hide_docker=1 + commit istore +EOF +fi + +rm -rf /tmp/luci-indexcache /tmp/luci-modulecache diff --git a/istore/luci/luci-app-store/root/usr/libexec/istore/backup b/istore/luci/luci-app-store/root/usr/libexec/istore/backup new file mode 100755 index 00000000..c1b506b9 --- /dev/null +++ b/istore/luci/luci-app-store/root/usr/libexec/istore/backup @@ -0,0 +1,295 @@ +#!/bin/sh +#set -x +#IS_DEBUG=1 + +IS_ROOT=/tmp/is-backup +APP_LIST_FILE=/etc/istore/app.list +BACKUP_CONFIG_FILE=/etc/config/istore + +action=${1} +shift + + +is_init() { + mkdir -p ${IS_ROOT} +} + +opkg_list_installed_packages() { + target=$1 + case $target in + "preinstalled") + OPKG_INFO_DIR="/rom/usr/lib/opkg/info" + ;; + "userinstalled") + OPKG_INFO_DIR="/overlay/upper/usr/lib/opkg/info" + ;; + "allinstalled") + OPKG_INFO_DIR="/usr/lib/opkg/info" + ;; + *) + echo "invalid target" + exit + ;; + esac + (cd $OPKG_INFO_DIR && find . -depth -maxdepth 1 -name "*.list" -type f | sed 's#^\./\(.*\)\.list$#\1#g') +} + +ipk_build() { + PKG_NAME_TEMP=$1 + IPK_OUTPUT_DIR=$2 + + UCI_BAK_DIR="/etc/istore/uci-defaults_bak/" + UCI_DEF_DIR="etc/uci-defaults" + OPKG_INFO_DIR="/usr/lib/opkg/info/" + + [ -n "${PKG_NAME_TEMP}" ] || exit 1 + #get real pkg name in opkg + PKG_NAME_TEMP=`cat ${IS_ROOT}/all_installed_package.list | sort -u | grep "^${PKG_NAME_TEMP}" | head -n 1` + [ -n "${PKG_NAME_TEMP}" ] || exit 1 + + PKG_NAME=`cat ${OPKG_INFO_DIR}${PKG_NAME_TEMP}.control | grep "^Package: " | cut -d ' ' -f2` + PKG_VER=`cat ${OPKG_INFO_DIR}${PKG_NAME}.control | grep "^Version: " | cut -d ' ' -f2` + PKG_ARCH=`cat ${OPKG_INFO_DIR}${PKG_NAME}.control | grep "^Architecture: " | cut -d ' ' -f2` + IPK_FILE_NAME="${PKG_NAME}_${PKG_VER}_${PKG_ARCH}" + + rm -rf ${IS_ROOT}/${IPK_FILE_NAME} + mkdir -p ${IS_ROOT}/${IPK_FILE_NAME} + + #(1)make CONTROL dir; (2)copy control file to dir + cd ${IS_ROOT}/${IPK_FILE_NAME} + mkdir -p CONTROL + for control_file in `ls ${OPKG_INFO_DIR}${PKG_NAME}.* | grep -v ".list$"`; do + file=${control_file##*/} + suffix=${file##*.} + cp ${control_file} CONTROL/${suffix} + done + + #(1)make DATA depend dir; (2)copy uci-defaults_bak file to dir; (3)copy other file to dir + for pkgfile in `cat ${OPKG_INFO_DIR}${PKG_NAME}.list | cut -b 2-`; do + file=${pkgfile##*/} + path=${pkgfile%/*} + mkdir -p ${path} + if [ `echo "${path}" | grep "^${UCI_DEF_DIR}"` ]; then + cp "${UCI_BAK_DIR}${file}" "${pkgfile}" + else + cp "/${pkgfile}" "${pkgfile}" + fi + done + + #call ipkg-build script to build ipk + /usr/libexec/istore/ipkg-build ${IS_ROOT}/${IPK_FILE_NAME} ${IPK_OUTPUT_DIR} + echo "${IPK_FILE_NAME}.ipk" >> ${IPK_OUTPUT_DIR}/appdepipk.list + + [ -n "${IS_DEBUG}" ] || rm -rf ${IS_ROOT}/${IPK_FILE_NAME} +} + +# if arg is NULL, use light backup, otherwise use local backup +backup() { + [ -n "$1" ] && BACKUP_PATH=$1 + + #1.add all istore self data to sysupgrade config file, + #sysupgrade will backup/restore it auto when flash new firmware + echo "/etc/.app_store.id" > /lib/upgrade/keep.d/luci-app-store + cat /usr/lib/opkg/info/luci-app-store.list >> /lib/upgrade/keep.d/luci-app-store + echo "/etc/rc.d/S45istore" >> /lib/upgrade/keep.d/luci-app-store + echo "/etc/istore/uci-defaults_bak" >> /lib/upgrade/keep.d/luci-app-store + echo "${APP_LIST_FILE}" >> /lib/upgrade/keep.d/luci-app-store + echo "${BACKUP_CONFIG_FILE}" >> /lib/upgrade/keep.d/luci-app-store + + #write user installed package list to file + opkg_list_installed_packages "userinstalled" 2>/dev/null | sort -u > ${IS_ROOT}/user_installed_package.list + + #write installed package list by istore feed to file + cat ${IS_ROOT}/user_installed_package.list | \ + grep '^app-meta-' > ${IS_ROOT}/istore_installed_package.list + + #if no input backup path, only back app.list + mkdir -p /etc/istore + cp ${IS_ROOT}/istore_installed_package.list ${APP_LIST_FILE} + echo "backup installed package list to ${APP_LIST_FILE}" + + if [ ! -n "${BACKUP_PATH}" ]; then + echo "backup success" + exit 0 + fi + + if [ ! -d "${BACKUP_PATH}" ] && ! mkdir -p "${BACKUP_PATH}" ; then + echo "invalid backup path, can not backup ipk" + exit 1 + fi + + #write all installed package list to file + opkg_list_installed_packages "allinstalled" 2>/dev/null | sort -u > ${IS_ROOT}/all_installed_package.list + + #write system pre installed package list to file + opkg_list_installed_packages "preinstalled" 2>/dev/null | sort -u > ${IS_ROOT}/pre_installed_package.list + + #write installed packages and depends list by istore feed to file by depend sequence + appdep_list="" + temp_list=`cat ${IS_ROOT}/istore_installed_package.list | sed 's/^/\t/'` + while [ -n "${temp_list}" ] + do + #get real pkg name + for PKG_NAME_TEMP in ${temp_list}; do + REAL_PKG_NAME=`cat ${IS_ROOT}/all_installed_package.list | sort -u | grep "^${PKG_NAME_TEMP}" | head -n 1` + if [ "${REAL_PKG_NAME}" != "${PKG_NAME_TEMP}" ]; then + temp_list=`echo "${temp_list}" | sed 's/^\t'"${PKG_NAME_TEMP}"'$/\t'"${REAL_PKG_NAME}"'/'` + fi + done + + appdep_list=`echo -e "${temp_list}\n${appdep_list}"` + [ -n "${IS_DEBUG}" ] && echo -e "temp_list:\n""${temp_list}" + [ -n "${IS_DEBUG}" ] && echo -e "appdep_list:\n""${appdep_list}" + + temp_list=`echo "${temp_list}" | xargs opkg depends | grep -v "depends on:" | grep -v " (>= " | grep -v " (= " | sort -u` + done + + appdep_list_all=`echo "${appdep_list}" | cut -f2 | grep -v "^$" | awk '!seen[$0]++'` + [ -n "${IS_DEBUG}" ] && echo -e "appdep_list_all:\n""${appdep_list_all}" + echo "${appdep_list_all}" > ${IS_ROOT}/appdep.list + + #3.rebuild all istore installed package to ipk and backup to userdata partation + + # 4. create dir + date=$(date +%Y-%m%d-%H%M) + if [ ! -d "$BACKUP_PATH/backup_istore_$date" ];then + mkdir $BACKUP_PATH/backup_istore_$date + fi + cp ${IS_ROOT}/istore_installed_package.list $BACKUP_PATH/backup_istore_$date/app.list + cp ${IS_ROOT}/appdep.list $BACKUP_PATH/backup_istore_$date/appdep.list + + #only backup non pre installed ipk + cp ${IS_ROOT}/appdep.list ${IS_ROOT}/appdep_strip.list + for pre_installed_pkg in `cat ${IS_ROOT}/appdep.list ${IS_ROOT}/pre_installed_package.list | sort -n | uniq -d`; do + sed -i '/^'"$pre_installed_pkg"'$/d' ${IS_ROOT}/appdep_strip.list + done + + rm -f $BACKUP_PATH/backup_istore_$date/appdepipk.list + echo "build ipk" + for pkg_name in `cat ${IS_ROOT}/appdep_strip.list`; do + ipk_build ${pkg_name} $BACKUP_PATH/backup_istore_$date + done + + # 5. create tar.gz file,and remove fir + cd $BACKUP_PATH + echo "write backup file to $BACKUP_PATH/backup_istore_$date.backup.tar.gz" + tar -czf $BACKUP_PATH/backup_istore_$date.backup.tar.gz backup_istore_$date + rm -rf $BACKUP_PATH/backup_istore_$date + echo "backup success" +} + +# if arg is NULL, use light backup, otherwise use local backup +restore() { + if [ -n "$1" ]; then + BACKUP_PATH_FILE=$1 + else + echo "install package by ${APP_LIST_FILE}" + is-opkg update + for app in `cat ${APP_LIST_FILE}`; do + #skip resotre istore self + [ "A${app}" == "A""luci-app-store" ] && continue + is-opkg install ${app} + done + exit 0 + fi + + if [ ! -f "${BACKUP_PATH_FILE}" ];then + echo "invalid backup file, can not restore ipk" + exit 1 + fi + + #1. Unzip file to dir + BACKUP_PATH_FILE_NAME=${BACKUP_PATH_FILE##*/} + BACKUP_PATH=/tmp/${BACKUP_PATH_FILE_NAME%.backup.tar.gz*} + if [ -d "$BACKUP_PATH" ];then + rm -rf $BACKUP_PATH + fi + mkdir -p $BACKUP_PATH + echo "unpack input file..." + # fix tar path error + tar -zxf ${BACKUP_PATH_FILE} -C /tmp/ + + echo "check file" + if [ ! -f "${BACKUP_PATH}/appdep.list" ];then + echo "no available appdep.list, can not restore ipk" + exit 1 + fi + echo "check success" + + #2. install ipk by backup path + echo "restore begin" + ( cd ${BACKUP_PATH}; opkg install `cat ${BACKUP_PATH}/appdepipk.list` ) + + #3. rm dir + rm -rf ${BACKUP_PATH} + echo "restore success" +} + +get_support_backup_features() { + echo "light_backup" + #istore custom img mean support local_backup + if [ -f /etc/istore_img_flag ];then + echo "local_backup" + fi +} + +get_backup_app_list_file_path() { + echo "${APP_LIST_FILE}" +} + +get_backup_app_list() { + if [ ! -f "${APP_LIST_FILE}" ];then + echo "no app.list, can not get backup app list" + exit 1 + fi + cat ${APP_LIST_FILE} +} + +get_available_backup_file_list() { + if [ -n "$1" ]; then + for backup_file in `ls $1/*.backup.tar.gz`; do + filename=${backup_file##*/} + echo "${filename}" + done + else + echo "input backup path is null" + exit 1 + fi +} + +usage() { + echo "usage: backup sub-command [arguments...]" + echo "where sub-command is one of:" + echo " backup [dir] Backup all installed package(s) to [directory]" + echo " restore [dir] Restore package(s) by [directory]" + echo " get_support_backup_features get device support backup features" + echo " get_backup_app_list_file_path get light backup app list file path" + echo " get_backup_app_list get light backup app list" + echo " get_available_backup_file_list get local available backup file list" +} + +is_init >/dev/null 2>&1 + +case $action in + "get_support_backup_features") + get_support_backup_features + ;; + "backup") + backup "$@" + ;; + "restore") + restore "$@" + ;; + "get_backup_app_list_file_path") + get_backup_app_list_file_path + ;; + "get_backup_app_list") + get_backup_app_list + ;; + "get_available_backup_file_list") + get_available_backup_file_list "$@" + ;; + *) + usage + ;; +esac diff --git a/istore/luci/luci-app-store/root/usr/libexec/istore/docker b/istore/luci/luci-app-store/root/usr/libexec/istore/docker new file mode 100755 index 00000000..69b51246 --- /dev/null +++ b/istore/luci/luci-app-store/root/usr/libexec/istore/docker @@ -0,0 +1,114 @@ +#!/bin/sh + +handle_part() { + case "$MOUNT" in + "/overlay") + return 1 + ;; + esac + return 0 +} + +check_dir() { + local data_root=$(uci -q get dockerd.globals.data_root) + [ -n "$data_root" ] || return 0 + local block_dev=$(findmnt -T "$data_root" -v -o SOURCE | sed -n 2p) + [ -n "$block_dev" ] || return 0 + [ "overlayfs:/overlay" = "$block_dev" ] && return 1 + local line=$(block info "$block_dev" 2>/dev/null) + [ -n "$line" ] || return 0 + eval "${line##*: } handle_part ${line%%: *}" +} + +migrate_check(){ + local dest="$1" + [ -n "$dest" ] || { + echo "dest dir not specified!" >&2 + return 1 + } + local data_root="$2" + [ -n "$data_root" ] || data_root=$(uci -q get dockerd.globals.data_root) + [ -n "$data_root" ] || { + echo "get docker data_root failed!" >&2 + return 1 + } + + [ "$data_root" = "/" ] || data_root="${data_root%%/}" + [ "$dest" = "/" ] || dest="${dest%%/}" + + [ "$data_root" = "$dest" ] && { + echo "dest dir is the same as data_root!" >&2 + return 1 + } + + [ 1 = "$FORCE" ] && return 0 + [ -e "$dest" ] || return 0 + [ -d "$dest" ] || { + echo "$dest is existed and it's not a dir, use FORCE=1 to overwrite it" >&2 + return 2 + } + [ 0 = "$(ls -A "$dest" | head -1 | wc -l)" ] || { + echo "$dest is existed and it's not empty, use FORCE=1 to overwrite it" >&2 + return 2 + } + return 0 +} + +migrate() { + local dest="$1" + local data_root=$(uci -q get dockerd.globals.data_root) + [ -n "$data_root" ] || { + echo "get docker data_root failed!" >&2 + return 1 + } + [ "$data_root" = "/" ] || data_root="${data_root%%/}" + [ "$dest" = "/" ] || dest="${dest%%/}" + + FORCE=1 migrate_check "$dest" "$data_root" + local check_result=$? + [ 0 = $check_result ] || return $check_result + + if [ "$UCI_ONLY" != 1 ]; then + rm -rf "$dest" + mkdir -p "$dest" + echo "Copy $data_root to $dest ..." + cp -a "$data_root/." "$dest/" || return 1 + fi + + echo "Change dockerd data_root to $dest and restart" + uci set dockerd.globals.data_root="$dest" + uci commit dockerd + /etc/init.d/dockerd restart + + echo "Done" +} + +action=${1} +shift + +usage() { + echo "usage: $1 sub-command [arguments...]" + echo "where sub-command is one of:" + echo " check_dir Check docker data_root is on extrnal disk" + echo " migrate_check {target_dir} Check target_dir is valid for migration, return 2 if target_dir existed and not empty" + echo " migrate {target_dir} Migrate docker data_root to target_dir" + echo " change_dir {target_dir} Migrate docker data_root to target_dir but change dir only (no data copy)" +} + +case $action in + "check_dir") + check_dir + ;; + "migrate") + migrate "$@" + ;; + "migrate_check") + migrate_check "$@" + ;; + "change_dir") + UCI_ONLY=1 migrate "$@" + ;; + *) + usage "$0" + ;; +esac diff --git a/istore/luci/luci-app-store/root/usr/libexec/istore/ipkg-build b/istore/luci/luci-app-store/root/usr/libexec/istore/ipkg-build new file mode 100755 index 00000000..c037253e --- /dev/null +++ b/istore/luci/luci-app-store/root/usr/libexec/istore/ipkg-build @@ -0,0 +1,200 @@ +#!/bin/sh + +# ipkg-build -- construct a .ipk from a directory +# Carl Worth +# based on a script by Steve Redler IV, steve@sr-tech.com 5-21-2001 +# 2003-04-25 rea@sr.unh.edu +# Updated to work on Familiar Pre0.7rc1, with busybox tar. +# Note it Requires: binutils-ar (since the busybox ar can't create) +# For UID debugging it needs a better "find". +set -e + +version=1.0 +FIND="$(command -v find)" +FIND="${FIND:-$(command -v gfind)}" +TAR="${TAR:-$(command -v tar)}" +GZIP="$(command -v gzip)" + +# try to use fixed source epoch +if [ -n "$PKG_SOURCE_DATE_EPOCH" ]; then + TIMESTAMP=$(date --date="@$PKG_SOURCE_DATE_EPOCH") +elif [ -n "$SOURCE_DATE_EPOCH" ]; then + TIMESTAMP=$(date --date="@$SOURCE_DATE_EPOCH") +else + TIMESTAMP=$(date) +fi + +ipkg_extract_value() { + sed -e "s/^[^:]*:[[:space:]]*//" +} + +required_field() { + field=$1 + + grep "^$field:" < $CONTROL/control | ipkg_extract_value +} + +pkg_appears_sane() { + local pkg_dir=$1 + + local owd=$PWD + cd $pkg_dir + + PKG_ERROR=0 + pkg=`required_field Package` + version=`required_field Version | sed 's/Version://; s/^.://g;'` + arch=`required_field Architecture` + + if echo $pkg | grep '[^a-zA-Z0-9_.+-]'; then + echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2 + PKG_ERROR=1; + fi + + if [ -f $CONTROL/conffiles ]; then + rm -f $CONTROL/conffiles.resolved + + for cf in `$FIND $(sed -e "s!^/!$pkg_dir/!" $CONTROL/conffiles) -type f`; do + echo "${cf#$pkg_dir}" >> $CONTROL/conffiles.resolved + done + + rm $CONTROL/conffiles + if [ -f $CONTROL/conffiles.resolved ]; then + mv $CONTROL/conffiles.resolved $CONTROL/conffiles + chmod 0644 $CONTROL/conffiles + fi + fi + + cd $owd + return $PKG_ERROR +} + +resolve_file_mode_id() { + local var=$1 type=$2 name=$3 id + + case "$name" in + root) + id=0 + ;; + *[!0-9]*) + id=$(sed -ne "s#^$type $name \\([0-9]\\+\\)\\b.*\$#\\1#p" "$TOPDIR/tmp/.packageusergroup" 2>/dev/null) + ;; + *) + id=$name + ;; + esac + + export "$var=$id" + + [ -n "$id" ] +} + +### +# ipkg-build "main" +### +file_modes="" +usage="Usage: $0 [-v] [-h] [-m] []" +while getopts "hvm:" opt; do + case $opt in + v ) echo $version + exit 0 + ;; + h ) echo $usage >&2 ;; + m ) file_modes=$OPTARG ;; + \? ) echo $usage >&2 + esac +done + + +shift $(($OPTIND - 1)) + +# continue on to process additional arguments + +case $# in +1) + dest_dir=$PWD + ;; +2) + dest_dir=$2 + if [ "$dest_dir" = "." -o "$dest_dir" = "./" ] ; then + dest_dir=$PWD + fi + ;; +*) + echo $usage >&2 + exit 1 + ;; +esac + +pkg_dir=$1 + +if [ ! -d $pkg_dir ]; then + echo "*** Error: Directory $pkg_dir does not exist" >&2 + exit 1 +fi + +# CONTROL is second so that it takes precedence +CONTROL= +[ -d $pkg_dir/CONTROL ] && CONTROL=CONTROL +if [ -z "$CONTROL" ]; then + echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2 + exit 1 +fi + +if ! pkg_appears_sane $pkg_dir; then + echo >&2 + echo "ipkg-build: Please fix the above errors and try again." >&2 + exit 1 +fi + +tmp_dir=$dest_dir/IPKG_BUILD.$$ +mkdir $tmp_dir + +echo $CONTROL > $tmp_dir/tarX +cd $pkg_dir +for file_mode in $file_modes; do + case $file_mode in + /*:*:*:*) + ;; + *) + echo "ERROR: file modes must use absolute path and contain user:group:mode" + echo "$file_mode" + exit 1 + ;; + esac + + mode=${file_mode##*:}; path=${file_mode%:*} + group=${path##*:}; path=${path%:*} + user=${path##*:}; path=${path%:*} + + if ! resolve_file_mode_id uid user "$user"; then + echo "ERROR: unable to resolve uid of $user" >&2 + exit 1 + fi + + if ! resolve_file_mode_id gid group "$group"; then + echo "ERROR: unable to resolve gid of $group" >&2 + exit 1 + fi + + chown "$uid:$gid" "$pkg_dir/$path" + chmod "$mode" "$pkg_dir/$path" +done +$TAR -X $tmp_dir/tarX --format=gnu --sort=name -cpf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/data.tar.gz + +installed_size=`ls -ln $tmp_dir/data.tar.gz | awk 'NR==1 {print $5}'` +sed -i -e "s/^Installed-Size: .*/Installed-Size: $installed_size/" \ + $pkg_dir/$CONTROL/control + +( cd $pkg_dir/$CONTROL && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/control.tar.gz ) +rm $tmp_dir/tarX + +echo "2.0" > $tmp_dir/debian-binary + +pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk +rm -f $pkg_file +( cd $tmp_dir && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" ./debian-binary ./data.tar.gz ./control.tar.gz | $GZIP -n - > $pkg_file ) + +rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz +rmdir $tmp_dir + +echo "Packaged contents of $pkg_dir into $pkg_file" diff --git a/istore/luci/luci-app-store/root/usr/share/opkg/intercept/rm b/istore/luci/luci-app-store/root/usr/share/opkg/intercept/rm new file mode 100755 index 00000000..9e50a804 --- /dev/null +++ b/istore/luci/luci-app-store/root/usr/share/opkg/intercept/rm @@ -0,0 +1,7 @@ +#!/bin/sh +for i in "$@"; do + echo "$i" | grep -s -q "/etc/uci-defaults/" \ + && mkdir -p /etc/istore/uci-defaults_bak \ + && cp -f "$i" /etc/istore/uci-defaults_bak/ +done +/bin/rm "$@" diff --git a/istore/luci/luci-app-store/src/Makefile b/istore/luci/luci-app-store/src/Makefile new file mode 100644 index 00000000..8d61b39e --- /dev/null +++ b/istore/luci/luci-app-store/src/Makefile @@ -0,0 +1,23 @@ +clean: +compile: + +include $(TOPDIR)/rules.mk + +LUCI_NAME:=luci-lib-dummy +INCLUDE_DIR:=./dummy + +include $(TOPDIR)/feeds/luci/luci.mk + +install: + [ -n "$(APP_STORE_VERSION)" ] + mkdir -p "$(DESTDIR)/www/luci-static" + cp -a "$(FRONTEND_DIST)/luci-static/istore" "$(DESTDIR)/www/luci-static/" + $(SED) 's#\.js"#.js?v=$(APP_STORE_VERSION)"#g' "$(DESTDIR)/www/luci-static/istore/index.js" + mkdir -p "$(DESTDIR)/etc/opkg/keys" + echo "$(APP_STORE_VERSION)" > "$(DESTDIR)/etc/.app_store.version" + cp -a ./compat.conf "$(DESTDIR)/etc/opkg/compatfeeds.conf" + cp -a ./key-build.pub $(DESTDIR)/etc/opkg/keys/`$(STAGING_DIR_HOST)/bin/usign -F -p ./key-build.pub` + mkdir -p "$(DESTDIR)$(LUCI_LIBRARYDIR)/i18n" + $(foreach lang,$(LUCI_LANGUAGES),$(foreach po,$(wildcard ${CURDIR}/po/$(lang)/*.po), \ + po2lmo $(po) \ + $(DESTDIR)$(LUCI_LIBRARYDIR)/i18n/$(basename $(notdir $(po))).$(lang).lmo;)) diff --git a/istore/luci/luci-app-store/src/compat.conf b/istore/luci/luci-app-store/src/compat.conf new file mode 100644 index 00000000..59393abb --- /dev/null +++ b/istore/luci/luci-app-store/src/compat.conf @@ -0,0 +1 @@ +src/gz istore_compat https://istore.istoreos.com/repo/all/compat \ No newline at end of file diff --git a/istore/luci/luci-app-store/src/dummy/package.mk b/istore/luci/luci-app-store/src/dummy/package.mk new file mode 100644 index 00000000..da8dd1f8 --- /dev/null +++ b/istore/luci/luci-app-store/src/dummy/package.mk @@ -0,0 +1,2 @@ +define BuildPackage +endef \ No newline at end of file diff --git a/istore/luci/luci-app-store/src/key-build.pub b/istore/luci/luci-app-store/src/key-build.pub new file mode 100644 index 00000000..c123b340 --- /dev/null +++ b/istore/luci/luci-app-store/src/key-build.pub @@ -0,0 +1,2 @@ +untrusted comment: istore key +RWSlbxYnTG1Ia0BvB+xd7YdP7QDQACljfpve7sx9KYq94QgIqtlljuME diff --git a/istore/luci/luci-app-store/src/po/templates/iStore.pot b/istore/luci/luci-app-store/src/po/templates/iStore.pot new file mode 100644 index 00000000..449f07a2 --- /dev/null +++ b/istore/luci/luci-app-store/src/po/templates/iStore.pot @@ -0,0 +1,11 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "istore_vue_lang" +msgstr "en" + +msgid "iStore" +msgstr "" + +msgid "This package is broken! Please reinstall or uninstall it." +msgstr "" diff --git a/istore/luci/luci-app-store/src/po/zh-cn/iStore.po b/istore/luci/luci-app-store/src/po/zh-cn/iStore.po new file mode 100644 index 00000000..cf2231ac --- /dev/null +++ b/istore/luci/luci-app-store/src/po/zh-cn/iStore.po @@ -0,0 +1,11 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "istore_vue_lang" +msgstr "zh-cn" + +msgid "iStore" +msgstr "iStore" + +msgid "This package is broken! Please reinstall or uninstall it." +msgstr "此软件包已损坏!请重新安装或卸载它。" diff --git a/istore/luci/luci-app-store/src/po/zh-tw/iStore.po b/istore/luci/luci-app-store/src/po/zh-tw/iStore.po new file mode 100644 index 00000000..c726b2a4 --- /dev/null +++ b/istore/luci/luci-app-store/src/po/zh-tw/iStore.po @@ -0,0 +1,11 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "istore_vue_lang" +msgstr "zh-cn" + +msgid "iStore" +msgstr "iStore" + +msgid "This package is broken! Please reinstall or uninstall it." +msgstr "此軟體包已損壞!請重新安裝或卸載它。" diff --git a/istore/luci/luci-app-store/swagger.yaml b/istore/luci/luci-app-store/swagger.yaml new file mode 100644 index 00000000..57cda787 --- /dev/null +++ b/istore/luci/luci-app-store/swagger.yaml @@ -0,0 +1,513 @@ +swagger: "2.0" +info: + description: Store API V1 + title: Store API V1 + version: 3.0.0 +paths: + /cgi-bin/luci/admin/store/token: + get: + tags: + - token + summary: 获取csrfToken(用于POST请求) + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStoreToken" + /cgi-bin/luci/admin/store/installed: + get: + tags: + - installed + summary: 获取已安装的插件 + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStoreInstalled" + /cgi-bin/luci/admin/store/install: + post: + tags: + - install + summary: 安装插件。安装过程中使用taskd接口获取日志 + parameters: + - in: "query" + name: "token" + type: string + required: true + - in: "query" + name: "package" + type: string + required: true + - in: "query" + name: "autoconf" + type: string + description: "可选参数,表示安装完以后是否自动配置插件" + - in: "query" + name: "path" + type: string + description: "可选参数,表示安装完以后是否自动配置插件" + - in: "query" + name: "enable" + type: string + description: "可选参数,表示安装完以后是否自动配置插件" + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStore" + /cgi-bin/luci/admin/store/autoconf: + post: + tags: + - install + summary: 自动配置插件 + parameters: + - in: "query" + name: "token" + type: string + required: true + - in: "query" + name: "package" + type: string + required: true + - in: "query" + name: "path" + type: string + description: "可选参数" + - in: "query" + name: "enable" + type: string + description: "可选参数" + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStore" + /cgi-bin/luci/admin/store/remove: + post: + tags: + - remove + summary: 卸载插件 + parameters: + - in: "query" + name: "token" + type: string + required: true + - in: "query" + name: "package" + type: string + required: true + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStore" + /cgi-bin/luci/admin/store/upgrade: + post: + tags: + - upgrade + summary: 更新插件 + parameters: + - in: "query" + name: "token" + type: string + required: true + - in: "query" + name: "package" + type: string + required: true + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStore" + /cgi-bin/luci/admin/store/upload: + post: + tags: + - upload + summary: 上传插件 + description: "(文件上传表单,支持文件扩展名 .ipk,.run )" + consumes: + - multipart/form-data + parameters: + - in: formData + name: file + type: file + description: The file to upload. + - in: "query" + name: "token" + type: string + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStore" + /cgi-bin/luci/admin/store/update: + post: + tags: + - update + summary: 刷新可用软件列表 + parameters: + - in: "query" + name: "token" + type: string + required: true + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStore" + /cgi-bin/luci/admin/store/status: + get: + tags: + - status + summary: 查询特定软件状态 + parameters: + - in: "query" + name: "package" + type: string + required: true + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStoreStatus" + /cgi-bin/luci/admin/store/log: + get: + tags: + - log + summary: 任务日志,已废弃 + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStore" + /cgi-bin/luci/admin/store/check_self_upgrade: + get: + tags: + - check_self_upgrade + summary: 检查iStore自身更新 + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStoreCheckSelfUpgrade" + /cgi-bin/luci/admin/store/do_self_upgrade: + post: + tags: + - do_self_upgrade + summary: 更新iStore自身 + parameters: + - in: "query" + name: "token" + type: string + required: true + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStore" + /cgi-bin/luci/admin/store/get_block_devices: + get: + tags: + - get_block_devices + summary: 枚举块设备 + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStoreGetBlockDevices" + /cgi-bin/luci/admin/store/configured: + get: + tags: + - configured + summary: 检查插件是否已经配置过 + parameters: + - in: "query" + name: "uci" + type: string + required: true + description: "要检查的uci配置文件名称" + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStoreConfigured" + /cgi-bin/luci/admin/store/entrysh: + post: + tags: + - entrysh + summary: 查询插件运行状态,主要为了获取入口信息。 + description: 调用前应该检查meta数据中flags数组包含entrysh,注意如果是安装插件则检查服务器端的flags,如果是调用已安装插件则检查路由器端的flags。 + parameters: + - in: "query" + name: "token" + type: string + required: true + - in: "query" + name: "package" + type: string + description: "包名,例如aria2。支持英文逗号分隔多个包名。如果未提供,则返回所有支持entrysh的包" + - in: "query" + name: "hostname" + type: string + required: true + description: "主机名,不包含端口。前端应该使用location.hostname获取" + - in: "query" + name: "update" + type: integer + description: "如果为1则强制更新缓存" + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStoreEntrysh" + "400": + description: Bad Request。hostname不合法 + /cgi-bin/luci/admin/store/docker_check_dir: + get: + tags: + - docker_check_dir + summary: 检查docker目录是否在系统盘 + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseDockerCheckDir" + /cgi-bin/luci/admin/store/docker_check_migrate: + get: + tags: + - docker_check_migrate + summary: 检查docker迁移目标目录是否有效 + parameters: + - in: "query" + name: "path" + type: string + required: true + description: "完整目标路径" + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseDockerCheckMigrate" + /cgi-bin/luci/admin/store/docker_migrate: + post: + tags: + - docker_migrate + summary: docker迁移到目标目录,异步 + description: 当返回code为0的时候,可以使用taskd接口展示日志,跟安装插件时一样 + parameters: + - in: "query" + name: "token" + type: string + required: true + - in: "query" + name: "path" + type: string + required: true + description: "完整目标路径" + - in: "query" + name: "overwrite" + type: string + description: "如果docker_check_migrate返回的result是existed,使用此参数指定解决方案:‘true’表示覆盖目标目录;‘chdir’表示只修改路径不复制文件" + responses: + "200": + description: OK + schema: + $ref: "#/definitions/ResponseStore" + +definitions: + ResponseStoreToken: + type: object + properties: + token: + type: string + StoreInstalledApp: + type: object + properties: + tutorial: + type: string + description: "教程" + arch: + type: array + description: "适用的架构平台" + items: + type: string + entry: + type: string + description: "对于的页面地址" + author: + type: string + description: "作者" + depends: + type: array + description: "关联的依赖" + items: + type: string + time: + type: integer + description: "更新日期" + tags: + type: array + description: "标签" + items: + type: string + description_en: + type: string + description: "简介,英文" + description: + type: string + description: "简介,英文" + title: + type: string + description: "标题" + release: + type: integer + description: "发布" + website: + type: string + description: "官网" + version: + type: string + description: "版本号" + name: + type: string + description: "名称" + ResponseStoreInstalled: + type: array + items: + $ref: "#/definitions/StoreInstalledApp" + ResponseStore: + type: object + properties: + code: + type: integer + stdout: + type: string + stderr: + type: string + ResponseStoreStatus: + type: object + allOf: + - $ref: "#/definitions/StoreInstalledApp" + properties: + installed: + type: boolean + ResponseStoreCheckSelfUpgrade: + type: object + properties: + code: + type: integer + description: "为200时,msg会显示版本号" + msg: + type: string + description: "内容" + GetBlockDevice: + type: object + properties: + dev: + type: string + uuid: + type: string + version: + type: string + label: + type: string + mount: + type: string + type: + type: string + size: + type: string + ResponseStoreGetBlockDevices: + type: object + properties: + code: + type: integer + description: "为200时" + msg: + type: string + description: "内容" + data: + type: object + additionalProperties: + $ref: "#/definitions/GetBlockDevice" + ResponseStoreConfigured: + type: object + properties: + code: + type: integer + description: "为200时" + configured: + type: boolean + ResponseDockerCheckDir: + type: object + properties: + code: + type: integer + description: "为200时" + docker_on_system: + type: boolean + description: "docker数据在系统盘" + ResponseDockerCheckMigrate: + type: object + properties: + code: + type: integer + description: "为200时" + result: + type: string + description: "检查结果。可能值‘good’,‘bad’,‘existed’" + error: + type: string + description: "当result为bad时,此处返回错误日志" + StoreEntrysh: + type: object + description: "状态和入口信息,不同插件可能有些不一样,仅列出常用公共参数" + properties: + app: + type: string + description: "插件名称" + docker: + type: boolean + description: "如果是docker插件" + running: + type: boolean + description: "是否运行中" + deployed: + type: boolean + description: "如果是docker插件且未运行,则是否已经部署" + web: + type: string + description: "url" + href: + type: string + description: "web端直接跳转url" + + ResponseStoreEntrysh: + type: object + properties: + code: + type: integer + description: "为200时" + status: + description: "处理成功的结果集" + type: array + items: + $ref: "#/definitions/StoreEntrysh" + errors: + description: "处理失败的结果集" + type: array + items: + type: object + description: "失败信息" + properties: + app: + type: string + description: "插件名称" + code: + type: integer + description: "404或500" + msg: + type: string + description: "错误信息" + diff --git a/istore/luci/luci-lib-taskd/Makefile b/istore/luci/luci-lib-taskd/Makefile new file mode 100644 index 00000000..cc660a76 --- /dev/null +++ b/istore/luci/luci-lib-taskd/Makefile @@ -0,0 +1,20 @@ +# +# Copyright (C) 2022 jjm2473 +# +# This is free software, licensed under the MIT License. +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Task library +LUCI_DEPENDS:=+luci-lib-xterm +taskd +LUCI_EXTRA_DEPENDS:=taskd (>=1.0.3-1) +LUCI_PKGARCH:=all + +PKG_VERSION:=1.0.22 +PKG_RELEASE:= +PKG_MAINTAINER:=jjm2473 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.css b/istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.css new file mode 100644 index 00000000..7dca0904 --- /dev/null +++ b/istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.css @@ -0,0 +1,151 @@ +[hidden] { + display: none !important; +} + +#tasks_detail_container { + position: fixed; + z-index: 1000; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; + background-color: #0008; +} +#tasks_dialog { + position: absolute; + width: 770px; + max-width: 100%; + max-height: 100%; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + background-color: #000; + + border-radius: 10px; + box-shadow: 2px 2px 6px #000a; + padding: 20px; + + color: white; +} +.dialog-title-bar { + margin-top: -10px; + margin-right: -10px; + margin-bottom: 5px; + display: flex; + flex-direction: row; + justify-content: space-between; + flex-wrap: nowrap; + align-items: center; +} +.dialog-title-bar .dialog-title { + word-break: break-all; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.dialog-content { + position: relative; + max-height: 500px; + overflow-y: scroll; + margin-right: -10px; +} +.dialog-icons { + align-self: center; + display: flex; + justify-content: flex-end; +} +.dialog-icon { + display: flex; + align-items: center; + flex-wrap: nowrap; + + width: 20px; + height: 20px; + background-color: white; + color: black; + border-radius: 50%; + font-size: 10px; + font-weight: bold; + user-select: none; + margin-left: 10px; + line-height: 1; + font-family: sans-serif; + justify-content: center; + cursor: pointer; +} +.dialog-icon.dialog-icon-min { + background-color: darkorange; +} +.dialog-icon.dialog-icon-close { + background-color: #ff5f56; +} +.dialog-icons:hover .dialog-icon.dialog-icon-min:before { + content: "_"; +} +.dialog-icons:hover .dialog-icon.dialog-icon-close:before { + content: "X"; +} + +.tasks_stopped .dialog-icon.dialog-icon-close { + background-color: #27c840; +} +.tasks_stopped #tasks_dialog, .tasks_unknown #tasks_dialog { + padding: 19px; + border: 1px #27c840 solid; + + animation: border-blink 1s; + animation-iteration-count: infinite; +} + +.tasks_failed #tasks_dialog { + border-color: #ff0000; +} + +.tasks_failed .dialog-icon.dialog-icon-close { + background-color: #ff0000; +} + +.tasks_unknown #tasks_dialog { + border-color: darkorange; +} + +#tasks_result_mask { + display: none; + background-color: #000d; + position: absolute; + left: 0; + top: 0; + z-index: 100; + width: 100%; + height: 100%; + + cursor: default; + user-select: none; + + font-size: small; +} + +.tasks_stopped #tasks_result_mask { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.tasks_result_success, .tasks_stopped.tasks_failed .tasks_result_success, .tasks_result_failed { + display: none; + font-size: xx-large; +} + +.tasks_stopped .tasks_result_success { + display: initial; + color: #27c840; +} + +.tasks_failed .tasks_result_failed { + display: initial; + color: darkorange; +} + +@keyframes border-blink { 50% { border-color:#fff ; } } diff --git a/istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.js b/istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.js new file mode 100644 index 00000000..086f7533 --- /dev/null +++ b/istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.js @@ -0,0 +1,241 @@ + +(function(){ + const taskd={}; + const $gettext = function(str) { + return taskd.i18n[str] || str; + }; + const retryPromise = function(fn) { + return new Promise((resolve, reject) => { + const retry = function() { + fn(resolve, reject, retry); + }; + retry(); + }); + }; + const retry403XHR = function(url, method, responseType) { + return retryPromise((resolve, reject, retry) => { + var oReq = new XMLHttpRequest(); + oReq.onerror = reject; + oReq.open(method || 'GET', url, true); + if (responseType) { + oReq.responseType = responseType; + } + oReq.onload = function (oEvent) { + if (oReq.status == 403) { + alert($gettext("Lost login status")); + location.href = location.href; + } else if (oReq.status >= 400) { + reject(oEvent); + } else { + resolve(oReq); + } + }; + if (method=='POST') { + oReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + } + oReq.send(method=='POST'?("token="+taskd.csrfToken):null); + }); + }; + const request = function(url, method) { + return retry403XHR(url, method).then(oReq => oReq.responseText); + }; + const getBin = function(url) { + return retry403XHR(url, null, "arraybuffer").then(oReq => {return {status: oReq.status, buffer: new Uint8Array(oReq.response)}}); + }; + const getTaskDetail = function(task_id) { + return request("/cgi-bin/luci/admin/system/tasks/status?task_id="+task_id).then(data=>JSON.parse(data)); + }; + const create_dialog = function(cfg) { + const container = document.createElement('div'); + container.id = "tasks_detail_container"; + container.innerHTML = taskd.dialog_template; + + document.body.appendChild(container); + const title_view = container.querySelector(".dialog-title-bar .dialog-title"); + title_view.innerText = cfg.title; + + const term = new Terminal({convertEol: cfg.convertEol||false}); + if (cfg.nohide) { + container.querySelector(".dialog-icon-min").hidden = true; + } else { + container.querySelector(".dialog-icon-min").onclick = function(){ + container.hidden=true; + term.dispose(); + document.body.removeChild(container); + cfg.onhide && cfg.onhide(); + return false; + }; + } + const tasks_result_mask = container.querySelector("#tasks_result_mask"); + if (taskd.show_mask_on_stopped) { + tasks_result_mask.onclick = function(){ + tasks_result_mask.hidden=true; + }; + } else { + tasks_result_mask.hidden=true; + } + term.open(document.getElementById("tasks_xterm_log")); + + return {term,container}; + }; + const show_log_txt = function(title, content, onclose) { + const dialog = create_dialog({title, convertEol:true, onhine:onclose}); + const container = dialog.container; + const term = dialog.term; + container.querySelector(".dialog-icon-close").hidden = true; + term.write(content); + }; + const show_log = function(task_id, nohide, onExit) { + let showing = true; + let running = true; + const dialog = create_dialog({title:task_id, nohide, onhide:function(){showing=false;}}); + const container = dialog.container; + const term = dialog.term; + + const title_view = container.querySelector(".dialog-title-bar .dialog-title"); + container.querySelector(".dialog-icon-close").onclick = function(){ + if (!running || confirm($gettext("Stop running task?"))) { + running=false; + showing=false; + del_task(task_id).then(()=>{ + location.href = location.href; + }); + } + return false; + }; + const checkTask = function() { + return getTaskDetail(task_id).then(data=>{ + if (!running) { + return false; + } + running = data.running; + let title = task_id; + if (!data.running && data.stop) { + title += " (" + (data.exit_code?$gettext("Failed at:"):$gettext("Finished at:")) + " " + new Date(data.stop * 1000).toLocaleString() + ")"; + } + title += " > " + (data.command || ''); + title_view.title = title; + title_view.innerText = title; + if (!data.running) { + container.classList.add('tasks_stopped'); + if (data.exit_code) { + container.classList.add('tasks_failed'); + } + onExit && onExit(data.exit_code); + } + // last pull + return showing; + }); + }; + let logoffset = 0; + const pulllog = function(check) { + let starter = Promise.resolve(showing); + if (check) { + starter = checkTask(); + } + starter.then(again => { + if (again) + return getBin("/cgi-bin/luci/admin/system/tasks/log?task_id="+task_id+"&offset="+logoffset); + else + return {status: 204}; + }).then(function(res){ + if (!showing) { + return false; + } + switch(res.status){ + case 205: + term.reset(); + logoffset = 0; + return running; + break; + case 204: + return running && checkTask(); + break; + case 200: + logoffset += res.buffer.byteLength; + term.write(res.buffer); + return running; + break; + } + }).then(again => { + if (again) { + setTimeout(pulllog, 0); + } + }).catch(err => { + if (showing) { + if (err.target.status == 0 || err.target.status == 502) { + title_view.innerText = task_id + ' (' + $gettext("Fetch log failed, retrying...") + ')'; + setTimeout(()=>pulllog(true), 1000); + } else if (err.target.status == 403 || err.target.status == 404) { + title_view.innerText = task_id + ' (' + $gettext(err.target.status == 403?"Lost login status":"Task does not exist or has been deleted") + ')'; + container.querySelector(".dialog-icon-close").hidden = true; + container.classList.add('tasks_unknown'); + } else { + console.error(err); + } + } + }); + }; + pulllog(true); + }; + const del_task = function(task_id) { + return request("/cgi-bin/luci/admin/system/tasks/stop?task_id="+task_id, "POST"); + }; + taskd.show_log = show_log; + taskd.remove = del_task; + taskd.show_log_txt = show_log_txt; + window.taskd=taskd; +})(); + +(function(){ + // compat + if (typeof(window.findParent) !== 'function') { + const elem = function(e) { + return (e != null && typeof(e) == 'object' && 'nodeType' in e); + }; + const matches = function(node, selector) { + var m = elem(node) ? node.matches || node.msMatchesSelector : null; + return m ? m.call(node, selector) : false; + }; + window.findParent = function (node, selector) { + if (elem(node) && node.closest) + return node.closest(selector); + + while (elem(node)) + if (matches(node, selector)) + return node; + else + node = node.parentNode; + + return null; + }; + } + if (typeof(window.cbi_submit) !== 'function') { + const makeHidden = function(name) { + const input = document.createElement('input'); + input.type = 'hidden'; + input.name = name; + return input; + }; + window.cbi_submit = function(elem, name, value, action) { + var form = elem.form || findParent(elem, 'form'); + + if (!form) + return false; + + if (action) + form.action = action; + + if (name) { + var hidden = form.querySelector('input[type="hidden"][name="%s"]'.format(name)) || + makeHidden(name); + + hidden.value = value || '1'; + form.appendChild(hidden); + } + + form.submit(); + return true; + }; + } +})(); \ No newline at end of file diff --git a/istore/luci/luci-lib-taskd/luasrc/controller/tasks-lib.lua b/istore/luci/luci-lib-taskd/luasrc/controller/tasks-lib.lua new file mode 100755 index 00000000..4dbf0931 --- /dev/null +++ b/istore/luci/luci-lib-taskd/luasrc/controller/tasks-lib.lua @@ -0,0 +1,98 @@ + +module("luci.controller.tasks-lib", package.seeall) + + +function index() + entry({"admin", "system", "tasks"}, call("tasks_ping")).dependent=false -- just for compatible + entry({"admin", "system", "tasks", "status"}, call("tasks_status")).dependent=false + entry({"admin", "system", "tasks", "log"}, call("tasks_log")).dependent=false + entry({"admin", "system", "tasks", "stop"}, post("tasks_stop")).dependent=false +end + +local util = require "luci.util" +local jsonc = require "luci.jsonc" +local ltn12 = require "luci.ltn12" + +local taskd = require "luci.model.tasks" + +function tasks_ping() + luci.http.prepare_content("application/json") + luci.http.write_json({}) +end + +function tasks_status() + local data = taskd.status(luci.http.formvalue("task_id")) + luci.http.prepare_content("application/json") + luci.http.write_json(data) +end + +function tasks_log() + local wait = 107 + local task_id = luci.http.formvalue("task_id") + local offset = luci.http.formvalue("offset") + offset = offset and tonumber(offset) or 0 + local logpath = "/var/log/tasks/"..task_id..".log" + local i + local logfd = io.open(logpath, "rb") + if logfd == nil then + luci.http.status(404) + luci.http.write("log not found") + return + end + + local size = logfd:seek("end") + + if size < offset then + luci.http.status(205, "Reset Content") + luci.http.write("reset offset") + return + end + + i = 0 + while (i < wait) + do + if size > offset then + break + end + nixio.nanosleep(0, 10000000) -- sleep 10ms + size = logfd:seek("end") + i = i+1 + end + if i == wait then + logfd:close() + luci.http.status(204) + luci.http.prepare_content("application/octet-stream") + return + end + logfd:seek("set", offset) + + local write_log = function() + local buffer = logfd:read(4096) + if buffer and #buffer > 0 then + return buffer + else + logfd:close() + return nil + end + end + + luci.http.prepare_content("application/octet-stream") + + if logfd then + ltn12.pump.all(write_log, luci.http.write) + end +end + +function tasks_stop() + local sys = require("luci.sys") + local task_id = luci.http.formvalue("task_id") or "" + if task_id == "" then + luci.http.status(400) + luci.http.write("task_id is empty") + return + end + if sys.call("/etc/init.d/tasks task_del "..task_id.." >/dev/null 2>&1") ~= 0 then + nixio.nanosleep(2, 10000000) + end + luci.http.status(204) +end diff --git a/istore/luci/luci-lib-taskd/luasrc/model/tasks.lua b/istore/luci/luci-lib-taskd/luasrc/model/tasks.lua new file mode 100644 index 00000000..07aff98f --- /dev/null +++ b/istore/luci/luci-lib-taskd/luasrc/model/tasks.lua @@ -0,0 +1,100 @@ +local util = require "luci.util" +local jsonc = require "luci.jsonc" + +local taskd = {} + +local function output(data) + local ret={} + ret.running=data.running + if not data.running then + ret.exit_code=data.exit_code + if nil == ret.exit_code then + if data["data"] and data["data"]["exit_code"] and data["data"]["exit_code"] ~= "" then + ret.exit_code=tonumber(data["data"]["exit_code"]) + else + ret.exit_code=143 + end + end + end + ret.command=data["command"] and data["command"][4] or '#' + if data["data"] then + ret.start=tonumber(data["data"]["start"]) + if not data.running and data["data"]["stop"] then + ret.stop=tonumber(data["data"]["stop"]) + end + end + return ret +end + +taskd.status = function (task_id) + task_id = task_id or "" + local data = util.trim(util.exec("/etc/init.d/tasks task_status "..task_id.." 2>/dev/null")) or "" + if data ~= "" then + data = jsonc.parse(data) + else + if task_id == "" then + data = {} + else + data = {running=false, exit_code=404} + end + end + if task_id ~= "" then + return output(data) + end + local ary={} + for k, v in pairs(data) do + ary[k] = output(v) + end + return ary +end + +taskd.docker_map = function(config, task_id, script_path, title, desc) + require("luci.cbi") + require("luci.http") + require("luci.sys") + local translate = require("luci.i18n").translate + local m + m = luci.cbi.Map(config, title, desc) + m.template = "tasks/docker" + -- hide default buttons + m.pageaction = false + -- we want hook 'on_after_apply' works, 'apply_on_parse' can be true (rollback) or false (no rollback), + -- but 'apply_on_parse' must be true for luci 17.01 and below + m.apply_on_parse = true + m.script_path = script_path + m.task_id = task_id + m.auto_show_task = true + m.on_before_apply = function(self) + if self.uci.rollback then + -- luci 18.06+ has 'rollback' function + -- rollback dialog will show because 'apply_on_parse' is true, + -- hide rollback dialog by hook 'apply' function + local apply = self.uci.apply + self.uci.apply = function(uci, rollback) + apply(uci, false) + end + end + end + m.on_after_apply = function(self) + local cmd + local action = luci.http.formvalue("cbi.apply") or "null" + if "upgrade" == action or "install" == action + or "start" == action or "stop" == action or "restart" == action or "rm" == action then + cmd = string.format("\"%s\" %s", script_path, action) + end + if cmd then + if luci.sys.call("/etc/init.d/tasks task_add " .. task_id .. " " .. luci.util.shellquote(cmd) .. " >/dev/null 2>&1") ~= 0 then + self.task_start_failed = true + self.message = translate("Config saved, but apply failed") + end + else + self.message = translate("Unknown command: ") .. action + end + if self.message then + self.auto_show_task = false + end + end + return m +end + +return taskd diff --git a/istore/luci/luci-lib-taskd/luasrc/view/tasks/docker.htm b/istore/luci/luci-lib-taskd/luasrc/view/tasks/docker.htm new file mode 100644 index 00000000..66ce0e6f --- /dev/null +++ b/istore/luci/luci-lib-taskd/luasrc/view/tasks/docker.htm @@ -0,0 +1,56 @@ + +<% if self.task_start_failed then %> +
<%:Another task running, try again later.%> <%:Click here to check running task%>
+<% end %> + +<%+cbi/map%> +<% +local task_running = false +local taskd = require "luci.model.tasks" +local status = taskd.status(self.task_id) +task_running = status.running +-%> +
+<% +if not task_running then +%> + <% + local util = require "luci.util" + local container_status = util.trim(util.exec(self.script_path.." status")) + local container_install = (string.len(container_status) > 0) + local container_running = container_status == "running" + if container_install then + -%> + + <% + if container_running then + -%> + + + + <% else %> + + + + <% end + else %> + + <% end +else + %> + +<% +end +%> +
+ +<%+tasks/embed%> +<% +if self.auto_show_task and task_running then +-%> + +<% +end +%> diff --git a/istore/luci/luci-lib-taskd/luasrc/view/tasks/embed.htm b/istore/luci/luci-lib-taskd/luasrc/view/tasks/embed.htm new file mode 100644 index 00000000..4b46c886 --- /dev/null +++ b/istore/luci/luci-lib-taskd/luasrc/view/tasks/embed.htm @@ -0,0 +1,40 @@ +<%+xterm/embed%> + + +<% + local i18n = {} + local function tr(str) + i18n[str]=translate(str) + end + tr("Stop running task?") + tr("Stopped at:") + tr("Finished at:") + tr("Failed at:") + tr("Lost login status") + tr("Fetch log failed, retrying...") + tr("Task does not exist or has been deleted") +-%> + diff --git a/istore/luci/luci-lib-taskd/src/Makefile b/istore/luci/luci-lib-taskd/src/Makefile new file mode 100644 index 00000000..084ef061 --- /dev/null +++ b/istore/luci/luci-lib-taskd/src/Makefile @@ -0,0 +1,15 @@ +clean: +compile: + +include $(TOPDIR)/rules.mk + +LUCI_NAME:=luci-lib-dummy +INCLUDE_DIR:=./dummy + +include $(TOPDIR)/feeds/luci/luci.mk + +install: + mkdir -p "$(DESTDIR)$(LUCI_LIBRARYDIR)/i18n" + $(foreach lang,$(LUCI_LANGUAGES),$(foreach po,$(wildcard ${CURDIR}/po/$(lang)/*.po), \ + po2lmo $(po) \ + $(DESTDIR)$(LUCI_LIBRARYDIR)/i18n/$(basename $(notdir $(po))).$(lang).lmo;)) diff --git a/istore/luci/luci-lib-taskd/src/dummy/package.mk b/istore/luci/luci-lib-taskd/src/dummy/package.mk new file mode 100644 index 00000000..da8dd1f8 --- /dev/null +++ b/istore/luci/luci-lib-taskd/src/dummy/package.mk @@ -0,0 +1,2 @@ +define BuildPackage +endef \ No newline at end of file diff --git a/istore/luci/luci-lib-taskd/src/po/zh-cn/lib-tasks.po b/istore/luci/luci-lib-taskd/src/po/zh-cn/lib-tasks.po new file mode 100644 index 00000000..895ccd6b --- /dev/null +++ b/istore/luci/luci-lib-taskd/src/po/zh-cn/lib-tasks.po @@ -0,0 +1,50 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Stop running task?" +msgstr "删除运行中的任务?" + +msgid "Finished at:" +msgstr "完成于:" + +msgid "Failed at:" +msgstr "失败于:" + +msgid "Lost login status" +msgstr "丢失登陆状态" + +msgid "Fetch log failed, retrying..." +msgstr "拉取日志失败,正在重试..." + +msgid "Task does not exist or has been deleted" +msgstr "任务不存在或已删除" + +msgid "Stop and Remove" +msgstr "停止并删除" + +msgid "Hide" +msgstr "隐藏" + +msgid "Config saved, but apply failed" +msgstr "配置已保存,但应用失败" + +msgid "Unknown command: " +msgstr "未知命令:" + +msgid "Another task running, try again later." +msgstr "已有后台任务运行中,请稍后重试。" + +msgid "Click here to check running task" +msgstr "点此查看运行中的任务" + +msgid "Task Running" +msgstr "任务执行中" + +msgid "Task execution successful !" +msgstr "任务执行成功!" + +msgid "Task execution failed !" +msgstr "任务执行失败!" + +msgid "Click the button in the upper right corner of the dialog box to close it, or click here to view the log" +msgstr "点击对话框右上角按钮关闭,或者点此查看日志" diff --git a/istore/luci/luci-lib-xterm/Makefile b/istore/luci/luci-lib-xterm/Makefile new file mode 100644 index 00000000..ad42aff5 --- /dev/null +++ b/istore/luci/luci-lib-xterm/Makefile @@ -0,0 +1,21 @@ +# +# Copyright (c) 2017-2019, The xterm.js authors (MIT License) +# Copyright (c) 2014-2017, SourceLair, Private Company (www.sourcelair.com) (MIT License) +# Copyright (c) 2012-2013, Christopher Jeffrey (MIT License) +# +# This is free software, licensed under the MIT License. +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Xterm.js library +LUCI_DEPENDS:= + +PKG_LICENSE:=MIT +PKG_VERSION:=4.18.0 +PKG_RELEASE:= +PKG_MAINTAINER:=jjm2473 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.css b/istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.css new file mode 100644 index 00000000..ab3965b4 --- /dev/null +++ b/istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.css @@ -0,0 +1,180 @@ +/** + * Copyright (c) 2014 The xterm.js authors. All rights reserved. + * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License) + * https://github.com/chjj/term.js + * @license MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Originally forked from (with the author's permission): + * Fabrice Bellard's javascript vt100 for jslinux: + * http://bellard.org/jslinux/ + * Copyright (c) 2011 Fabrice Bellard + * The original design remains. The terminal itself + * has been extended to include xterm CSI codes, among + * other features. + */ + +/** + * Default styles for xterm.js + */ + +.xterm { + position: relative; + user-select: none; + -ms-user-select: none; + -webkit-user-select: none; +} + +.xterm.focus, +.xterm:focus { + outline: none; +} + +.xterm .xterm-helpers { + position: absolute; + top: 0; + /** + * The z-index of the helpers must be higher than the canvases in order for + * IMEs to appear on top. + */ + z-index: 5; +} + +.xterm .xterm-helper-textarea { + padding: 0; + border: 0; + margin: 0; + /* Move textarea out of the screen to the far left, so that the cursor is not visible */ + position: absolute; + opacity: 0; + left: -9999em; + top: 0; + width: 0; + height: 0; + z-index: -5; + /** Prevent wrapping so the IME appears against the textarea at the correct position */ + white-space: nowrap; + overflow: hidden; + resize: none; +} + +.xterm .composition-view { + /* TODO: Composition position got messed up somewhere */ + background: #000; + color: #FFF; + display: none; + position: absolute; + white-space: nowrap; + z-index: 1; +} + +.xterm .composition-view.active { + display: block; +} + +.xterm .xterm-viewport { + /* On OS X this is required in order for the scroll bar to appear fully opaque */ + background-color: #000; + overflow-y: scroll; + cursor: default; + position: absolute; + right: 0; + left: 0; + top: 0; + bottom: 0; +} + +.xterm .xterm-screen { + position: relative; +} + +.xterm .xterm-screen canvas { + position: absolute; + left: 0; + top: 0; +} + +.xterm .xterm-scroll-area { + visibility: hidden; +} + +.xterm-char-measure-element { + display: inline-block; + visibility: hidden; + position: absolute; + top: 0; + left: -9999em; + line-height: normal; +} + +.xterm { + cursor: text; +} + +.xterm.enable-mouse-events { + /* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */ + cursor: default; +} + +.xterm.xterm-cursor-pointer, +.xterm .xterm-cursor-pointer { + cursor: pointer; +} + +.xterm.column-select.focus { + /* Column selection mode */ + cursor: crosshair; +} + +.xterm .xterm-accessibility, +.xterm .xterm-message { + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + z-index: 10; + color: transparent; +} + +.xterm .live-region { + position: absolute; + left: -9999px; + width: 1px; + height: 1px; + overflow: hidden; +} + +.xterm-dim { + opacity: 0.5; +} + +.xterm-underline { + text-decoration: underline; +} + +.xterm-strikethrough { + text-decoration: line-through; +} + +.xterm-screen .xterm-decoration-container .xterm-decoration { + z-index: 6; + position: absolute; +} diff --git a/istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.js b/istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.js new file mode 100644 index 00000000..277b2957 --- /dev/null +++ b/istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.js @@ -0,0 +1,2 @@ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(self,(function(){return(()=>{"use strict";var e={4567:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.AccessibilityManager=void 0;var o=r(9042),s=r(6114),a=r(9924),c=r(3656),l=r(844),h=r(5596),u=r(9631),f=function(e){function t(t,r){var i=e.call(this)||this;i._terminal=t,i._renderService=r,i._liveRegionLineCount=0,i._charsToConsume=[],i._charsToAnnounce="",i._accessibilityTreeRoot=document.createElement("div"),i._accessibilityTreeRoot.classList.add("xterm-accessibility"),i._accessibilityTreeRoot.tabIndex=0,i._rowContainer=document.createElement("div"),i._rowContainer.setAttribute("role","list"),i._rowContainer.classList.add("xterm-accessibility-tree"),i._rowElements=[];for(var n=0;ne;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()},t.prototype._createAccessibilityTreeNode=function(){var e=document.createElement("div");return e.setAttribute("role","listitem"),e.tabIndex=-1,this._refreshRowDimensions(e),e},t.prototype._onTab=function(e){for(var t=0;t0?this._charsToConsume.shift()!==e&&(this._charsToAnnounce+=e):this._charsToAnnounce+=e,"\n"===e&&(this._liveRegionLineCount++,21===this._liveRegionLineCount&&(this._liveRegion.textContent+=o.tooMuchOutput)),s.isMac&&this._liveRegion.textContent&&this._liveRegion.textContent.length>0&&!this._liveRegion.parentNode&&setTimeout((function(){t._accessibilityTreeRoot.appendChild(t._liveRegion)}),0))},t.prototype._clearLiveRegion=function(){this._liveRegion.textContent="",this._liveRegionLineCount=0,s.isMac&&(0,u.removeElementFromParent)(this._liveRegion)},t.prototype._onKey=function(e){this._clearLiveRegion(),this._charsToConsume.push(e)},t.prototype._refreshRows=function(e,t){this._renderRowsDebouncer.refresh(e,t,this._terminal.rows)},t.prototype._renderRows=function(e,t){for(var r=this._terminal.buffer,i=r.lines.length.toString(),n=e;n<=t;n++){var o=r.translateBufferLineToString(r.ydisp+n,!0),s=(r.ydisp+n+1).toString(),a=this._rowElements[n];a&&(0===o.length?a.innerText=" ":a.textContent=o,a.setAttribute("aria-posinset",s),a.setAttribute("aria-setsize",i))}this._announceCharacters()},t.prototype._refreshRowsDimensions=function(){if(this._renderService.dimensions.actualCellHeight){this._rowElements.length!==this._terminal.rows&&this._onResize(this._terminal.rows);for(var e=0;e{function r(e){return e.replace(/\r?\n/g,"\r")}function i(e,t){return t?"[200~"+e+"[201~":e}function n(e,t,n){e=i(e=r(e),n.decPrivateModes.bracketedPasteMode),n.triggerDataEvent(e,!0),t.value=""}function o(e,t,r){var i=r.getBoundingClientRect(),n=e.clientX-i.left-10,o=e.clientY-i.top-10;t.style.width="20px",t.style.height="20px",t.style.left=n+"px",t.style.top=o+"px",t.style.zIndex="1000",t.focus()}Object.defineProperty(t,"__esModule",{value:!0}),t.rightClickHandler=t.moveTextAreaUnderMouseCursor=t.paste=t.handlePasteEvent=t.copyHandler=t.bracketTextForPaste=t.prepareTextForTerminal=void 0,t.prepareTextForTerminal=r,t.bracketTextForPaste=i,t.copyHandler=function(e,t){e.clipboardData&&e.clipboardData.setData("text/plain",t.selectionText),e.preventDefault()},t.handlePasteEvent=function(e,t,r){e.stopPropagation(),e.clipboardData&&n(e.clipboardData.getData("text/plain"),t,r)},t.paste=n,t.moveTextAreaUnderMouseCursor=o,t.rightClickHandler=function(e,t,r,i,n){o(e,t,r),n&&i.rightClickSelect(e),t.value=i.selectionText,t.select()}},4774:(e,t)=>{var r,i,n,o;function s(e){var t=e.toString(16);return t.length<2?"0"+t:t}function a(e,t){return e>>0}}(r=t.channels||(t.channels={})),(i=t.color||(t.color={})).blend=function(e,t){var i=(255&t.rgba)/255;if(1===i)return{css:t.css,rgba:t.rgba};var n=t.rgba>>24&255,o=t.rgba>>16&255,s=t.rgba>>8&255,a=e.rgba>>24&255,c=e.rgba>>16&255,l=e.rgba>>8&255,h=a+Math.round((n-a)*i),u=c+Math.round((o-c)*i),f=l+Math.round((s-l)*i);return{css:r.toCss(h,u,f),rgba:r.toRgba(h,u,f)}},i.isOpaque=function(e){return 255==(255&e.rgba)},i.ensureContrastRatio=function(e,t,r){var i=o.ensureContrastRatio(e.rgba,t.rgba,r);if(i)return o.toColor(i>>24&255,i>>16&255,i>>8&255)},i.opaque=function(e){var t=(255|e.rgba)>>>0,i=o.toChannels(t),n=i[0],s=i[1],a=i[2];return{css:r.toCss(n,s,a),rgba:t}},i.opacity=function(e,t){var i=Math.round(255*t),n=o.toChannels(e.rgba),s=n[0],a=n[1],c=n[2];return{css:r.toCss(s,a,c,i),rgba:r.toRgba(s,a,c,i)}},i.toColorRGB=function(e){return[e.rgba>>24&255,e.rgba>>16&255,e.rgba>>8&255]},(t.css||(t.css={})).toColor=function(e){switch(e.length){case 7:return{css:e,rgba:(parseInt(e.slice(1),16)<<8|255)>>>0};case 9:return{css:e,rgba:parseInt(e.slice(1),16)>>>0}}throw new Error("css.toColor: Unsupported css format")},function(e){function t(e,t,r){var i=e/255,n=t/255,o=r/255;return.2126*(i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4))+.7152*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))+.0722*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))}e.relativeLuminance=function(e){return t(e>>16&255,e>>8&255,255&e)},e.relativeLuminance2=t}(n=t.rgb||(t.rgb={})),function(e){function t(e,t,r){for(var i=e>>24&255,o=e>>16&255,s=e>>8&255,c=t>>24&255,l=t>>16&255,h=t>>8&255,u=a(n.relativeLuminance2(c,h,l),n.relativeLuminance2(i,o,s));u0||l>0||h>0);)c-=Math.max(0,Math.ceil(.1*c)),l-=Math.max(0,Math.ceil(.1*l)),h-=Math.max(0,Math.ceil(.1*h)),u=a(n.relativeLuminance2(c,h,l),n.relativeLuminance2(i,o,s));return(c<<24|l<<16|h<<8|255)>>>0}function i(e,t,r){for(var i=e>>24&255,o=e>>16&255,s=e>>8&255,c=t>>24&255,l=t>>16&255,h=t>>8&255,u=a(n.relativeLuminance2(c,h,l),n.relativeLuminance2(i,o,s));u>>0}e.ensureContrastRatio=function(e,r,o){var s=n.relativeLuminance(e>>8),c=n.relativeLuminance(r>>8);if(a(s,c)>24&255,e>>16&255,e>>8&255,255&e]},e.toColor=function(e,t,i){return{css:r.toCss(e,t,i),rgba:r.toRgba(e,t,i)}}}(o=t.rgba||(t.rgba={})),t.toPaddedHex=s,t.contrastRatio=a},7239:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorContrastCache=void 0;var r=function(){function e(){this._color={},this._rgba={}}return e.prototype.clear=function(){this._color={},this._rgba={}},e.prototype.setCss=function(e,t,r){this._rgba[e]||(this._rgba[e]={}),this._rgba[e][t]=r},e.prototype.getCss=function(e,t){return this._rgba[e]?this._rgba[e][t]:void 0},e.prototype.setColor=function(e,t,r){this._color[e]||(this._color[e]={}),this._color[e][t]=r},e.prototype.getColor=function(e,t){return this._color[e]?this._color[e][t]:void 0},e}();t.ColorContrastCache=r},5680:function(e,t,r){var i=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var i,n=0,o=t.length;n{Object.defineProperty(t,"__esModule",{value:!0}),t.removeElementFromParent=void 0,t.removeElementFromParent=function(){for(var e,t=[],r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.addDisposableDomListener=void 0,t.addDisposableDomListener=function(e,t,r,i){e.addEventListener(t,r,i);var n=!1;return{dispose:function(){n||(n=!0,e.removeEventListener(t,r,i))}}}},3551:function(e,t,r){var i=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},n=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.MouseZone=t.Linkifier=void 0;var o=r(8460),s=r(2585),a=function(){function e(e,t,r){this._bufferService=e,this._logService=t,this._unicodeService=r,this._linkMatchers=[],this._nextLinkMatcherId=0,this._onShowLinkUnderline=new o.EventEmitter,this._onHideLinkUnderline=new o.EventEmitter,this._onLinkTooltip=new o.EventEmitter,this._rowsToLinkify={start:void 0,end:void 0}}return Object.defineProperty(e.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onLinkTooltip",{get:function(){return this._onLinkTooltip.event},enumerable:!1,configurable:!0}),e.prototype.attachToDom=function(e,t){this._element=e,this._mouseZoneManager=t},e.prototype.linkifyRows=function(t,r){var i=this;this._mouseZoneManager&&(void 0===this._rowsToLinkify.start||void 0===this._rowsToLinkify.end?(this._rowsToLinkify.start=t,this._rowsToLinkify.end=r):(this._rowsToLinkify.start=Math.min(this._rowsToLinkify.start,t),this._rowsToLinkify.end=Math.max(this._rowsToLinkify.end,r)),this._mouseZoneManager.clearAll(t,r),this._rowsTimeoutId&&clearTimeout(this._rowsTimeoutId),this._rowsTimeoutId=setTimeout((function(){return i._linkifyRows()}),e._timeBeforeLatency))},e.prototype._linkifyRows=function(){this._rowsTimeoutId=void 0;var e=this._bufferService.buffer;if(void 0!==this._rowsToLinkify.start&&void 0!==this._rowsToLinkify.end){var t=e.ydisp+this._rowsToLinkify.start;if(!(t>=e.lines.length)){for(var r=e.ydisp+Math.min(this._rowsToLinkify.end,this._bufferService.rows)+1,i=Math.ceil(2e3/this._bufferService.cols),n=this._bufferService.buffer.iterator(!1,t,r,i,i);n.hasNext();)for(var o=n.next(),s=0;s=0;t--)if(e.priority<=this._linkMatchers[t].priority)return void this._linkMatchers.splice(t+1,0,e);this._linkMatchers.splice(0,0,e)}else this._linkMatchers.push(e)},e.prototype.deregisterLinkMatcher=function(e){for(var t=0;t>9&511:void 0;r.validationCallback?r.validationCallback(a,(function(e){n._rowsTimeoutId||e&&n._addLink(l[1],l[0]-n._bufferService.buffer.ydisp,a,r,f)})):c._addLink(l[1],l[0]-c._bufferService.buffer.ydisp,a,r,f)},c=this;null!==(i=o.exec(t))&&"break"!==a(););},e.prototype._addLink=function(e,t,r,i,n){var o=this;if(this._mouseZoneManager&&this._element){var s=this._unicodeService.getStringCellWidth(r),a=e%this._bufferService.cols,l=t+Math.floor(e/this._bufferService.cols),h=(a+s)%this._bufferService.cols,u=l+Math.floor((a+s)/this._bufferService.cols);0===h&&(h=this._bufferService.cols,u--),this._mouseZoneManager.add(new c(a+1,l+1,h+1,u+1,(function(e){if(i.handler)return i.handler(e,r);var t=window.open();t?(t.opener=null,t.location.href=r):console.warn("Opening link blocked as opener could not be cleared")}),(function(){o._onShowLinkUnderline.fire(o._createLinkHoverEvent(a,l,h,u,n)),o._element.classList.add("xterm-cursor-pointer")}),(function(e){o._onLinkTooltip.fire(o._createLinkHoverEvent(a,l,h,u,n)),i.hoverTooltipCallback&&i.hoverTooltipCallback(e,r,{start:{x:a,y:l},end:{x:h,y:u}})}),(function(){o._onHideLinkUnderline.fire(o._createLinkHoverEvent(a,l,h,u,n)),o._element.classList.remove("xterm-cursor-pointer"),i.hoverLeaveCallback&&i.hoverLeaveCallback()}),(function(e){return!i.willLinkActivate||i.willLinkActivate(e,r)})))}},e.prototype._createLinkHoverEvent=function(e,t,r,i,n){return{x1:e,y1:t,x2:r,y2:i,cols:this._bufferService.cols,fg:n}},e._timeBeforeLatency=200,e=i([n(0,s.IBufferService),n(1,s.ILogService),n(2,s.IUnicodeService)],e)}();t.Linkifier=a;var c=function(e,t,r,i,n,o,s,a,c){this.x1=e,this.y1=t,this.x2=r,this.y2=i,this.clickCallback=n,this.hoverCallback=o,this.tooltipCallback=s,this.leaveCallback=a,this.willLinkActivate=c};t.MouseZone=c},6465:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Linkifier2=void 0;var a=r(2585),c=r(8460),l=r(844),h=r(3656),u=function(e){function t(t){var r=e.call(this)||this;return r._bufferService=t,r._linkProviders=[],r._linkCacheDisposables=[],r._isMouseOut=!0,r._activeLine=-1,r._onShowLinkUnderline=r.register(new c.EventEmitter),r._onHideLinkUnderline=r.register(new c.EventEmitter),r.register((0,l.getDisposeArrayDisposable)(r._linkCacheDisposables)),r}return n(t,e),Object.defineProperty(t.prototype,"currentLink",{get:function(){return this._currentLink},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),t.prototype.registerLinkProvider=function(e){var t=this;return this._linkProviders.push(e),{dispose:function(){var r=t._linkProviders.indexOf(e);-1!==r&&t._linkProviders.splice(r,1)}}},t.prototype.attachToDom=function(e,t,r){var i=this;this._element=e,this._mouseService=t,this._renderService=r,this.register((0,h.addDisposableDomListener)(this._element,"mouseleave",(function(){i._isMouseOut=!0,i._clearCurrentLink()}))),this.register((0,h.addDisposableDomListener)(this._element,"mousemove",this._onMouseMove.bind(this))),this.register((0,h.addDisposableDomListener)(this._element,"click",this._onClick.bind(this)))},t.prototype._onMouseMove=function(e){if(this._lastMouseEvent=e,this._element&&this._mouseService){var t=this._positionFromMouseEvent(e,this._element,this._mouseService);if(t){this._isMouseOut=!1;for(var r=e.composedPath(),i=0;ie?this._bufferService.cols:s.link.range.end.x,l=a;l<=c;l++){if(r.has(l)){n.splice(o--,1);break}r.add(l)}}},t.prototype._checkLinkProviderResult=function(e,t,r){var i,n=this;if(!this._activeProviderReplies)return r;for(var o=this._activeProviderReplies.get(e),s=!1,a=0;a=e&&this._currentLink.link.range.end.y<=t)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,l.disposeArray)(this._linkCacheDisposables))},t.prototype._handleNewLink=function(e){var t=this;if(this._element&&this._lastMouseEvent&&this._mouseService){var r=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);r&&this._linkAtPosition(e.link,r)&&(this._currentLink=e,this._currentLink.state={decorations:{underline:void 0===e.link.decorations||e.link.decorations.underline,pointerCursor:void 0===e.link.decorations||e.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,e.link,this._lastMouseEvent),e.link.decorations={},Object.defineProperties(e.link.decorations,{pointerCursor:{get:function(){var e,r;return null===(r=null===(e=t._currentLink)||void 0===e?void 0:e.state)||void 0===r?void 0:r.decorations.pointerCursor},set:function(e){var r,i;(null===(r=t._currentLink)||void 0===r?void 0:r.state)&&t._currentLink.state.decorations.pointerCursor!==e&&(t._currentLink.state.decorations.pointerCursor=e,t._currentLink.state.isHovered&&(null===(i=t._element)||void 0===i||i.classList.toggle("xterm-cursor-pointer",e)))}},underline:{get:function(){var e,r;return null===(r=null===(e=t._currentLink)||void 0===e?void 0:e.state)||void 0===r?void 0:r.decorations.underline},set:function(r){var i,n,o;(null===(i=t._currentLink)||void 0===i?void 0:i.state)&&(null===(o=null===(n=t._currentLink)||void 0===n?void 0:n.state)||void 0===o?void 0:o.decorations.underline)!==r&&(t._currentLink.state.decorations.underline=r,t._currentLink.state.isHovered&&t._fireUnderlineEvent(e.link,r))}}}),this._renderService&&this._linkCacheDisposables.push(this._renderService.onRenderedBufferChange((function(e){var r=0===e.start?0:e.start+1+t._bufferService.buffer.ydisp;t._clearCurrentLink(r,e.end+1+t._bufferService.buffer.ydisp)}))))}},t.prototype._linkHover=function(e,t,r){var i;(null===(i=this._currentLink)||void 0===i?void 0:i.state)&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!0),this._currentLink.state.decorations.pointerCursor&&e.classList.add("xterm-cursor-pointer")),t.hover&&t.hover(r,t.text)},t.prototype._fireUnderlineEvent=function(e,t){var r=e.range,i=this._bufferService.buffer.ydisp,n=this._createLinkUnderlineEvent(r.start.x-1,r.start.y-i-1,r.end.x,r.end.y-i-1,void 0);(t?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(n)},t.prototype._linkLeave=function(e,t,r){var i;(null===(i=this._currentLink)||void 0===i?void 0:i.state)&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!1),this._currentLink.state.decorations.pointerCursor&&e.classList.remove("xterm-cursor-pointer")),t.leave&&t.leave(r,t.text)},t.prototype._linkAtPosition=function(e,t){var r=e.range.start.y===e.range.end.y,i=e.range.start.yt.y;return(r&&e.range.start.x<=t.x&&e.range.end.x>=t.x||i&&e.range.end.x>=t.x||n&&e.range.start.x<=t.x||i&&n)&&e.range.start.y<=t.y&&e.range.end.y>=t.y},t.prototype._positionFromMouseEvent=function(e,t,r){var i=r.getCoords(e,t,this._bufferService.cols,this._bufferService.rows);if(i)return{x:i[0],y:i[1]+this._bufferService.buffer.ydisp}},t.prototype._createLinkUnderlineEvent=function(e,t,r,i,n){return{x1:e,y1:t,x2:r,y2:i,cols:this._bufferService.cols,fg:n}},o([s(0,a.IBufferService)],t)}(l.Disposable);t.Linkifier2=u},9042:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tooMuchOutput=t.promptLabel=void 0,t.promptLabel="Terminal input",t.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},6954:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.MouseZoneManager=void 0;var a=r(844),c=r(3656),l=r(4725),h=r(2585),u=function(e){function t(t,r,i,n,o,s){var a=e.call(this)||this;return a._element=t,a._screenElement=r,a._bufferService=i,a._mouseService=n,a._selectionService=o,a._optionsService=s,a._zones=[],a._areZonesActive=!1,a._lastHoverCoords=[void 0,void 0],a._initialSelectionLength=0,a.register((0,c.addDisposableDomListener)(a._element,"mousedown",(function(e){return a._onMouseDown(e)}))),a._mouseMoveListener=function(e){return a._onMouseMove(e)},a._mouseLeaveListener=function(e){return a._onMouseLeave(e)},a._clickListener=function(e){return a._onClick(e)},a}return n(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this._deactivate()},t.prototype.add=function(e){this._zones.push(e),1===this._zones.length&&this._activate()},t.prototype.clearAll=function(e,t){if(0!==this._zones.length){e&&t||(e=0,t=this._bufferService.rows-1);for(var r=0;re&&i.y1<=t+1||i.y2>e&&i.y2<=t+1||i.y1t+1)&&(this._currentZone&&this._currentZone===i&&(this._currentZone.leaveCallback(),this._currentZone=void 0),this._zones.splice(r--,1))}0===this._zones.length&&this._deactivate()}},t.prototype._activate=function(){this._areZonesActive||(this._areZonesActive=!0,this._element.addEventListener("mousemove",this._mouseMoveListener),this._element.addEventListener("mouseleave",this._mouseLeaveListener),this._element.addEventListener("click",this._clickListener))},t.prototype._deactivate=function(){this._areZonesActive&&(this._areZonesActive=!1,this._element.removeEventListener("mousemove",this._mouseMoveListener),this._element.removeEventListener("mouseleave",this._mouseLeaveListener),this._element.removeEventListener("click",this._clickListener))},t.prototype._onMouseMove=function(e){this._lastHoverCoords[0]===e.pageX&&this._lastHoverCoords[1]===e.pageY||(this._onHover(e),this._lastHoverCoords=[e.pageX,e.pageY])},t.prototype._onHover=function(e){var t=this,r=this._findZoneEventAt(e);r!==this._currentZone&&(this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout)),r&&(this._currentZone=r,r.hoverCallback&&r.hoverCallback(e),this._tooltipTimeout=window.setTimeout((function(){return t._onTooltip(e)}),this._optionsService.rawOptions.linkTooltipHoverDuration)))},t.prototype._onTooltip=function(e){this._tooltipTimeout=void 0;var t=this._findZoneEventAt(e);null==t||t.tooltipCallback(e)},t.prototype._onMouseDown=function(e){if(this._initialSelectionLength=this._getSelectionLength(),this._areZonesActive){var t=this._findZoneEventAt(e);(null==t?void 0:t.willLinkActivate(e))&&(e.preventDefault(),e.stopImmediatePropagation())}},t.prototype._onMouseLeave=function(e){this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout))},t.prototype._onClick=function(e){var t=this._findZoneEventAt(e),r=this._getSelectionLength();t&&r===this._initialSelectionLength&&(t.clickCallback(e),e.preventDefault(),e.stopImmediatePropagation())},t.prototype._getSelectionLength=function(){var e=this._selectionService.selectionText;return e?e.length:0},t.prototype._findZoneEventAt=function(e){var t=this._mouseService.getCoords(e,this._screenElement,this._bufferService.cols,this._bufferService.rows);if(t)for(var r=t[0],i=t[1],n=0;n=o.x1&&r=o.x1||i===o.y2&&ro.y1&&i{Object.defineProperty(t,"__esModule",{value:!0}),t.RenderDebouncer=void 0;var r=function(){function e(e){this._renderCallback=e}return e.prototype.dispose=function(){this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},e.prototype.refresh=function(e,t,r){var i=this;this._rowCount=r,e=void 0!==e?e:0,t=void 0!==t?t:this._rowCount-1,this._rowStart=void 0!==this._rowStart?Math.min(this._rowStart,e):e,this._rowEnd=void 0!==this._rowEnd?Math.max(this._rowEnd,t):t,this._animationFrame||(this._animationFrame=window.requestAnimationFrame((function(){return i._innerRefresh()})))},e.prototype._innerRefresh=function(){if(void 0!==this._rowStart&&void 0!==this._rowEnd&&void 0!==this._rowCount){var e=Math.max(this._rowStart,0),t=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._animationFrame=void 0,this._renderCallback(e,t)}},e}();t.RenderDebouncer=r},5596:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.ScreenDprMonitor=void 0;var o=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._currentDevicePixelRatio=window.devicePixelRatio,t}return n(t,e),t.prototype.setListener=function(e){var t=this;this._listener&&this.clearListener(),this._listener=e,this._outerListener=function(){t._listener&&(t._listener(window.devicePixelRatio,t._currentDevicePixelRatio),t._updateDpr())},this._updateDpr()},t.prototype.dispose=function(){e.prototype.dispose.call(this),this.clearListener()},t.prototype._updateDpr=function(){var e;this._outerListener&&(null===(e=this._resolutionMediaMatchList)||void 0===e||e.removeListener(this._outerListener),this._currentDevicePixelRatio=window.devicePixelRatio,this._resolutionMediaMatchList=window.matchMedia("screen and (resolution: "+window.devicePixelRatio+"dppx)"),this._resolutionMediaMatchList.addListener(this._outerListener))},t.prototype.clearListener=function(){this._resolutionMediaMatchList&&this._listener&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._listener=void 0,this._outerListener=void 0)},t}(r(844).Disposable);t.ScreenDprMonitor=o},3236:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.Terminal=void 0;var o=r(2950),s=r(1680),a=r(3614),c=r(2584),l=r(5435),h=r(3525),u=r(3551),f=r(9312),_=r(6114),d=r(3656),p=r(9042),v=r(357),g=r(6954),y=r(4567),m=r(1296),S=r(7399),C=r(8460),b=r(8437),w=r(5680),L=r(3230),E=r(4725),x=r(428),k=r(8934),M=r(6465),A=r(5114),R=r(8969),O=r(4774),T=r(4269),D=r(5941),B=r(7641),P="undefined"!=typeof window?window.document:null,I=function(e){function t(t){void 0===t&&(t={});var r=e.call(this,t)||this;return r.browser=_,r._keyDownHandled=!1,r._keyPressHandled=!1,r._unprocessedDeadKey=!1,r._onCursorMove=new C.EventEmitter,r._onKey=new C.EventEmitter,r._onRender=new C.EventEmitter,r._onSelectionChange=new C.EventEmitter,r._onTitleChange=new C.EventEmitter,r._onBell=new C.EventEmitter,r._onFocus=new C.EventEmitter,r._onBlur=new C.EventEmitter,r._onA11yCharEmitter=new C.EventEmitter,r._onA11yTabEmitter=new C.EventEmitter,r._setup(),r.linkifier=r._instantiationService.createInstance(u.Linkifier),r.linkifier2=r.register(r._instantiationService.createInstance(M.Linkifier2)),r.decorationService=r.register(r._instantiationService.createInstance(B.DecorationService)),r.register(r._inputHandler.onRequestBell((function(){return r.bell()}))),r.register(r._inputHandler.onRequestRefreshRows((function(e,t){return r.refresh(e,t)}))),r.register(r._inputHandler.onRequestSendFocus((function(){return r._reportFocus()}))),r.register(r._inputHandler.onRequestReset((function(){return r.reset()}))),r.register(r._inputHandler.onRequestWindowsOptionsReport((function(e){return r._reportWindowsOptions(e)}))),r.register(r._inputHandler.onColor((function(e){return r._handleColorEvent(e)}))),r.register((0,C.forwardEvent)(r._inputHandler.onCursorMove,r._onCursorMove)),r.register((0,C.forwardEvent)(r._inputHandler.onTitleChange,r._onTitleChange)),r.register((0,C.forwardEvent)(r._inputHandler.onA11yChar,r._onA11yCharEmitter)),r.register((0,C.forwardEvent)(r._inputHandler.onA11yTab,r._onA11yTabEmitter)),r.register(r._bufferService.onResize((function(e){return r._afterResize(e.cols,e.rows)}))),r}return n(t,e),Object.defineProperty(t.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onKey",{get:function(){return this._onKey.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRender",{get:function(){return this._onRender.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onBell",{get:function(){return this._onBell.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onFocus",{get:function(){return this._onFocus.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onBlur",{get:function(){return this._onBlur.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onA11yChar",{get:function(){return this._onA11yCharEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onA11yTab",{get:function(){return this._onA11yTabEmitter.event},enumerable:!1,configurable:!0}),t.prototype._handleColorEvent=function(e){var t,r;if(this._colorManager){for(var i=0,n=e;i4)&&t.coreMouseService.triggerMouseEvent({col:n.x-33,row:n.y-33,button:r,action:i,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey})}var n={mouseup:null,wheel:null,mousedrag:null,mousemove:null},o=function(t){return i(t),t.buttons||(e._document.removeEventListener("mouseup",n.mouseup),n.mousedrag&&e._document.removeEventListener("mousemove",n.mousedrag)),e.cancel(t)},s=function(t){return i(t),e.cancel(t,!0)},a=function(e){e.buttons&&i(e)},l=function(e){e.buttons||i(e)};this.register(this.coreMouseService.onProtocolChange((function(t){t?("debug"===e.optionsService.rawOptions.logLevel&&e._logService.debug("Binding to mouse events:",e.coreMouseService.explainEvents(t)),e.element.classList.add("enable-mouse-events"),e._selectionService.disable()):(e._logService.debug("Unbinding from mouse events."),e.element.classList.remove("enable-mouse-events"),e._selectionService.enable()),8&t?n.mousemove||(r.addEventListener("mousemove",l),n.mousemove=l):(r.removeEventListener("mousemove",n.mousemove),n.mousemove=null),16&t?n.wheel||(r.addEventListener("wheel",s,{passive:!1}),n.wheel=s):(r.removeEventListener("wheel",n.wheel),n.wheel=null),2&t?n.mouseup||(n.mouseup=o):(e._document.removeEventListener("mouseup",n.mouseup),n.mouseup=null),4&t?n.mousedrag||(n.mousedrag=a):(e._document.removeEventListener("mousemove",n.mousedrag),n.mousedrag=null)}))),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,d.addDisposableDomListener)(r,"mousedown",(function(t){if(t.preventDefault(),e.focus(),e.coreMouseService.areMouseEventsActive&&!e._selectionService.shouldForceSelection(t))return i(t),n.mouseup&&e._document.addEventListener("mouseup",n.mouseup),n.mousedrag&&e._document.addEventListener("mousemove",n.mousedrag),e.cancel(t)}))),this.register((0,d.addDisposableDomListener)(r,"wheel",(function(t){if(!n.wheel){if(!e.buffer.hasScrollback){var r=e.viewport.getLinesScrolled(t);if(0===r)return;for(var i=c.C0.ESC+(e.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(t.deltaY<0?"A":"B"),o="",s=0;s47)},t.prototype._keyUp=function(e){this._customKeyEventHandler&&!1===this._customKeyEventHandler(e)||(function(e){return 16===e.keyCode||17===e.keyCode||18===e.keyCode}(e)||this.focus(),this.updateCursorStyle(e),this._keyPressHandled=!1)},t.prototype._keyPress=function(e){var t;if(this._keyPressHandled=!1,this._keyDownHandled)return!1;if(this._customKeyEventHandler&&!1===this._customKeyEventHandler(e))return!1;if(this.cancel(e),e.charCode)t=e.charCode;else if(null===e.which||void 0===e.which)t=e.keyCode;else{if(0===e.which||0===e.charCode)return!1;t=e.which}return!(!t||(e.altKey||e.ctrlKey||e.metaKey)&&!this._isThirdLevelShift(this.browser,e)||(t=String.fromCharCode(t),this._onKey.fire({key:t,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(t,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))},t.prototype._inputEvent=function(e){if(e.data&&"insertText"===e.inputType&&!e.composed&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;var t=e.data;return this.coreService.triggerDataEvent(t,!0),this.cancel(e),!0}return!1},t.prototype.bell=function(){var e;this._soundBell()&&(null===(e=this._soundService)||void 0===e||e.playBellSound()),this._onBell.fire()},t.prototype.resize=function(t,r){t!==this.cols||r!==this.rows?e.prototype.resize.call(this,t,r):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()},t.prototype._afterResize=function(e,t){var r,i;null===(r=this._charSizeService)||void 0===r||r.measure(),null===(i=this.viewport)||void 0===i||i.syncScrollArea(!0)},t.prototype.clear=function(){if(0!==this.buffer.ybase||0!==this.buffer.y){this.buffer.clearMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(var e=1;e{Object.defineProperty(t,"__esModule",{value:!0}),t.TimeBasedDebouncer=void 0;var r=function(){function e(e,t){void 0===t&&(t=1e3),this._renderCallback=e,this._debounceThresholdMS=t,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}return e.prototype.dispose=function(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)},e.prototype.refresh=function(e,t,r){var i=this;this._rowCount=r,e=void 0!==e?e:0,t=void 0!==t?t:this._rowCount-1,this._rowStart=void 0!==this._rowStart?Math.min(this._rowStart,e):e,this._rowEnd=void 0!==this._rowEnd?Math.max(this._rowEnd,t):t;var n=Date.now();if(n-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=n,this._innerRefresh();else if(!this._additionalRefreshRequested){var o=n-this._lastRefreshMs,s=this._debounceThresholdMS-o;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout((function(){i._lastRefreshMs=Date.now(),i._innerRefresh(),i._additionalRefreshRequested=!1,i._refreshTimeoutID=void 0}),s)}},e.prototype._innerRefresh=function(){if(void 0!==this._rowStart&&void 0!==this._rowEnd&&void 0!==this._rowCount){var e=Math.max(this._rowStart,0),t=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,t)}},e}();t.TimeBasedDebouncer=r},1680:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Viewport=void 0;var a=r(844),c=r(3656),l=r(4725),h=r(2585),u=function(e){function t(t,r,i,n,o,s,a,l){var h=e.call(this)||this;return h._scrollLines=t,h._viewportElement=r,h._scrollArea=i,h._element=n,h._bufferService=o,h._optionsService=s,h._charSizeService=a,h._renderService=l,h.scrollBarWidth=0,h._currentRowHeight=0,h._currentScaledCellHeight=0,h._lastRecordedBufferLength=0,h._lastRecordedViewportHeight=0,h._lastRecordedBufferHeight=0,h._lastTouchY=0,h._lastScrollTop=0,h._lastHadScrollBar=!1,h._wheelPartialScroll=0,h._refreshAnimationFrame=null,h._ignoreNextScrollEvent=!1,h.scrollBarWidth=h._viewportElement.offsetWidth-h._scrollArea.offsetWidth||15,h._lastHadScrollBar=!0,h.register((0,c.addDisposableDomListener)(h._viewportElement,"scroll",h._onScroll.bind(h))),h._activeBuffer=h._bufferService.buffer,h.register(h._bufferService.buffers.onBufferActivate((function(e){return h._activeBuffer=e.activeBuffer}))),h._renderDimensions=h._renderService.dimensions,h.register(h._renderService.onDimensionsChange((function(e){return h._renderDimensions=e}))),setTimeout((function(){return h.syncScrollArea()}),0),h}return n(t,e),t.prototype.onThemeChange=function(e){this._viewportElement.style.backgroundColor=e.background.css},t.prototype._refresh=function(e){var t=this;if(e)return this._innerRefresh(),void(null!==this._refreshAnimationFrame&&cancelAnimationFrame(this._refreshAnimationFrame));null===this._refreshAnimationFrame&&(this._refreshAnimationFrame=requestAnimationFrame((function(){return t._innerRefresh()})))},t.prototype._innerRefresh=function(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderService.dimensions.scaledCellHeight/window.devicePixelRatio,this._currentScaledCellHeight=this._renderService.dimensions.scaledCellHeight,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;var e=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderService.dimensions.canvasHeight);this._lastRecordedBufferHeight!==e&&(this._lastRecordedBufferHeight=e,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}var t=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==t&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=t),0===this._optionsService.rawOptions.scrollback?this.scrollBarWidth=0:this.scrollBarWidth=this._viewportElement.offsetWidth-this._scrollArea.offsetWidth||15,this._lastHadScrollBar=this.scrollBarWidth>0;var r=window.getComputedStyle(this._element),i=parseInt(r.paddingLeft)+parseInt(r.paddingRight);this._viewportElement.style.width=(this._renderService.dimensions.actualCellWidth*this._bufferService.cols+this.scrollBarWidth+(this._lastHadScrollBar?i:0)).toString()+"px",this._refreshAnimationFrame=null},t.prototype.syncScrollArea=function(e){if(void 0===e&&(e=!1),this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(e);this._lastRecordedViewportHeight===this._renderService.dimensions.canvasHeight&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.scaledCellHeight===this._currentScaledCellHeight?this._lastHadScrollBar!==this._optionsService.rawOptions.scrollback>0&&this._refresh(e):this._refresh(e)},t.prototype._onScroll=function(e){if(this._lastScrollTop=this._viewportElement.scrollTop,this._viewportElement.offsetParent){if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._scrollLines(0);var t=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._scrollLines(t)}},t.prototype._bubbleScroll=function(e,t){var r=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(t<0&&0!==this._viewportElement.scrollTop||t>0&&r0?1:-1),this._wheelPartialScroll%=1):e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(t*=this._bufferService.rows),t},t.prototype._applyScrollModifier=function(e,t){var r=this._optionsService.rawOptions.fastScrollModifier;return"alt"===r&&t.altKey||"ctrl"===r&&t.ctrlKey||"shift"===r&&t.shiftKey?e*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:e*this._optionsService.rawOptions.scrollSensitivity},t.prototype.onTouchStart=function(e){this._lastTouchY=e.touches[0].pageY},t.prototype.onTouchMove=function(e){var t=this._lastTouchY-e.touches[0].pageY;return this._lastTouchY=e.touches[0].pageY,0!==t&&(this._viewportElement.scrollTop+=t,this._bubbleScroll(e,t))},o([s(4,h.IBufferService),s(5,h.IOptionsService),s(6,l.ICharSizeService),s(7,l.IRenderService)],t)}(a.Disposable);t.Viewport=u},2950:function(e,t,r){var i=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},n=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CompositionHelper=void 0;var o=r(4725),s=r(2585),a=function(){function e(e,t,r,i,n,o){this._textarea=e,this._compositionView=t,this._bufferService=r,this._optionsService=i,this._coreService=n,this._renderService=o,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}return Object.defineProperty(e.prototype,"isComposing",{get:function(){return this._isComposing},enumerable:!1,configurable:!0}),e.prototype.compositionstart=function(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")},e.prototype.compositionupdate=function(e){var t=this;this._compositionView.textContent=e.data,this.updateCompositionElements(),setTimeout((function(){t._compositionPosition.end=t._textarea.value.length}),0)},e.prototype.compositionend=function(){this._finalizeComposition(!0)},e.prototype.keydown=function(e){if(this._isComposing||this._isSendingComposition){if(229===e.keyCode)return!1;if(16===e.keyCode||17===e.keyCode||18===e.keyCode)return!1;this._finalizeComposition(!1)}return 229!==e.keyCode||(this._handleAnyTextareaChanges(),!1)},e.prototype._finalizeComposition=function(e){var t=this;if(this._compositionView.classList.remove("active"),this._isComposing=!1,e){var r={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout((function(){if(t._isSendingComposition){t._isSendingComposition=!1;var e;r.start+=t._dataAlreadySent.length,(e=t._isComposing?t._textarea.value.substring(r.start,r.end):t._textarea.value.substring(r.start)).length>0&&t._coreService.triggerDataEvent(e,!0)}}),0)}else{this._isSendingComposition=!1;var i=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(i,!0)}},e.prototype._handleAnyTextareaChanges=function(){var e=this,t=this._textarea.value;setTimeout((function(){if(!e._isComposing){var r=e._textarea.value.replace(t,"");r.length>0&&(e._dataAlreadySent=r,e._coreService.triggerDataEvent(r,!0))}}),0)},e.prototype.updateCompositionElements=function(e){var t=this;if(this._isComposing){if(this._bufferService.buffer.isCursorInViewport){var r=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),i=this._renderService.dimensions.actualCellHeight,n=this._bufferService.buffer.y*this._renderService.dimensions.actualCellHeight,o=r*this._renderService.dimensions.actualCellWidth;this._compositionView.style.left=o+"px",this._compositionView.style.top=n+"px",this._compositionView.style.height=i+"px",this._compositionView.style.lineHeight=i+"px",this._compositionView.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._compositionView.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var s=this._compositionView.getBoundingClientRect();this._textarea.style.left=o+"px",this._textarea.style.top=n+"px",this._textarea.style.width=Math.max(s.width,1)+"px",this._textarea.style.height=Math.max(s.height,1)+"px",this._textarea.style.lineHeight=s.height+"px"}e||setTimeout((function(){return t.updateCompositionElements(!0)}),0)}},i([n(2,s.IBufferService),n(3,s.IOptionsService),n(4,s.ICoreService),n(5,o.IRenderService)],e)}();t.CompositionHelper=a},9806:(e,t)=>{function r(e,t){var r=t.getBoundingClientRect();return[e.clientX-r.left,e.clientY-r.top]}Object.defineProperty(t,"__esModule",{value:!0}),t.getRawByteCoords=t.getCoords=t.getCoordsRelativeToElement=void 0,t.getCoordsRelativeToElement=r,t.getCoords=function(e,t,i,n,o,s,a,c){if(o){var l=r(e,t);if(l)return l[0]=Math.ceil((l[0]+(c?s/2:0))/s),l[1]=Math.ceil(l[1]/a),l[0]=Math.min(Math.max(l[0],1),i+(c?1:0)),l[1]=Math.min(Math.max(l[1],1),n),l}},t.getRawByteCoords=function(e){if(e)return{x:e[0]+32,y:e[1]+32}}},9504:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.moveToCellSequence=void 0;var i=r(2584);function n(e,t,r,i){var n=e-o(r,e),a=t-o(r,t),h=Math.abs(n-a)-function(e,t,r){for(var i=0,n=e-o(r,e),a=t-o(r,t),c=0;c=0&&tt?"A":"B"}function a(e,t,r,i,n,o){for(var s=e,a=t,c="";s!==r||a!==i;)s+=n?1:-1,n&&s>o.cols-1?(c+=o.buffer.translateBufferLineToString(a,!1,e,s),s=0,e=0,a++):!n&&s<0&&(c+=o.buffer.translateBufferLineToString(a,!1,0,e+1),e=s=o.cols-1,a--);return c+o.buffer.translateBufferLineToString(a,!1,e,s)}function c(e,t){var r=t?"O":"[";return i.C0.ESC+r+e}function l(e,t){e=Math.floor(e);for(var r="",i=0;i0?i-o(s,i):t;var f=i,_=function(e,t,r,i,s,a){var c;return c=n(r,i,s,a).length>0?i-o(s,i):t,e=r&&ce?"D":"C",l(Math.abs(h-e),c(s,i));s=u>t?"D":"C";var f=Math.abs(u-t);return l(function(e,t){return t.cols-e}(u>t?e:h,r)+(f-1)*r.cols+1+((u>t?h:e)-1),c(s,i))}},4389:function(e,t,r){var i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,r=1,i=arguments.length;r{Object.defineProperty(t,"__esModule",{value:!0}),t.BaseRenderLayer=void 0;var i=r(643),n=r(8803),o=r(1420),s=r(3734),a=r(1752),c=r(4774),l=r(9631),h=r(8978),u=function(){function e(e,t,r,i,n,o,s,a){this._container=e,this._alpha=i,this._colors=n,this._rendererId=o,this._bufferService=s,this._optionsService=a,this._scaledCharWidth=0,this._scaledCharHeight=0,this._scaledCellWidth=0,this._scaledCellHeight=0,this._scaledCharLeft=0,this._scaledCharTop=0,this._currentGlyphIdentifier={chars:"",code:0,bg:0,fg:0,bold:!1,dim:!1,italic:!1},this._canvas=document.createElement("canvas"),this._canvas.classList.add("xterm-"+t+"-layer"),this._canvas.style.zIndex=r.toString(),this._initCanvas(),this._container.appendChild(this._canvas)}return e.prototype.dispose=function(){var e;(0,l.removeElementFromParent)(this._canvas),null===(e=this._charAtlas)||void 0===e||e.dispose()},e.prototype._initCanvas=function(){this._ctx=(0,a.throwIfFalsy)(this._canvas.getContext("2d",{alpha:this._alpha})),this._alpha||this._clearAll()},e.prototype.onOptionsChanged=function(){},e.prototype.onBlur=function(){},e.prototype.onFocus=function(){},e.prototype.onCursorMove=function(){},e.prototype.onGridChanged=function(e,t){},e.prototype.onSelectionChanged=function(e,t,r){void 0===r&&(r=!1)},e.prototype.setColors=function(e){this._refreshCharAtlas(e)},e.prototype._setTransparency=function(e){if(e!==this._alpha){var t=this._canvas;this._alpha=e,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,t),this._refreshCharAtlas(this._colors),this.onGridChanged(0,this._bufferService.rows-1)}},e.prototype._refreshCharAtlas=function(e){this._scaledCharWidth<=0&&this._scaledCharHeight<=0||(this._charAtlas=(0,o.acquireCharAtlas)(this._optionsService.rawOptions,this._rendererId,e,this._scaledCharWidth,this._scaledCharHeight),this._charAtlas.warmUp())},e.prototype.resize=function(e){this._scaledCellWidth=e.scaledCellWidth,this._scaledCellHeight=e.scaledCellHeight,this._scaledCharWidth=e.scaledCharWidth,this._scaledCharHeight=e.scaledCharHeight,this._scaledCharLeft=e.scaledCharLeft,this._scaledCharTop=e.scaledCharTop,this._canvas.width=e.scaledCanvasWidth,this._canvas.height=e.scaledCanvasHeight,this._canvas.style.width=e.canvasWidth+"px",this._canvas.style.height=e.canvasHeight+"px",this._alpha||this._clearAll(),this._refreshCharAtlas(this._colors)},e.prototype.clearTextureAtlas=function(){var e;null===(e=this._charAtlas)||void 0===e||e.clear()},e.prototype._fillCells=function(e,t,r,i){this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,r*this._scaledCellWidth,i*this._scaledCellHeight)},e.prototype._fillMiddleLineAtCells=function(e,t,r){void 0===r&&(r=1);var i=Math.ceil(.5*this._scaledCellHeight);this._ctx.fillRect(e*this._scaledCellWidth,(t+1)*this._scaledCellHeight-i-window.devicePixelRatio,r*this._scaledCellWidth,window.devicePixelRatio)},e.prototype._fillBottomLineAtCells=function(e,t,r){void 0===r&&(r=1),this._ctx.fillRect(e*this._scaledCellWidth,(t+1)*this._scaledCellHeight-window.devicePixelRatio-1,r*this._scaledCellWidth,window.devicePixelRatio)},e.prototype._fillLeftLineAtCell=function(e,t,r){this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,window.devicePixelRatio*r,this._scaledCellHeight)},e.prototype._strokeRectAtCell=function(e,t,r,i){this._ctx.lineWidth=window.devicePixelRatio,this._ctx.strokeRect(e*this._scaledCellWidth+window.devicePixelRatio/2,t*this._scaledCellHeight+window.devicePixelRatio/2,r*this._scaledCellWidth-window.devicePixelRatio,i*this._scaledCellHeight-window.devicePixelRatio)},e.prototype._clearAll=function(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))},e.prototype._clearCells=function(e,t,r,i){this._alpha?this._ctx.clearRect(e*this._scaledCellWidth,t*this._scaledCellHeight,r*this._scaledCellWidth,i*this._scaledCellHeight):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,r*this._scaledCellWidth,i*this._scaledCellHeight))},e.prototype._fillCharTrueColor=function(e,t,r){this._ctx.font=this._getFont(!1,!1),this._ctx.textBaseline=n.TEXT_BASELINE,this._clipRow(r);var i=!1;!1!==this._optionsService.rawOptions.customGlyphs&&(i=(0,h.tryDrawCustomChar)(this._ctx,e.getChars(),t*this._scaledCellWidth,r*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),i||this._ctx.fillText(e.getChars(),t*this._scaledCellWidth+this._scaledCharLeft,r*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight)},e.prototype._drawChars=function(e,t,r){var o,s,a,c=this._getContrastColor(e);c||e.isFgRGB()||e.isBgRGB()?this._drawUncachedChars(e,t,r,c):(e.isInverse()?(s=e.isBgDefault()?n.INVERTED_DEFAULT_COLOR:e.getBgColor(),a=e.isFgDefault()?n.INVERTED_DEFAULT_COLOR:e.getFgColor()):(a=e.isBgDefault()?i.DEFAULT_COLOR:e.getBgColor(),s=e.isFgDefault()?i.DEFAULT_COLOR:e.getFgColor()),s+=this._optionsService.rawOptions.drawBoldTextInBrightColors&&e.isBold()&&s<8?8:0,this._currentGlyphIdentifier.chars=e.getChars()||i.WHITESPACE_CELL_CHAR,this._currentGlyphIdentifier.code=e.getCode()||i.WHITESPACE_CELL_CODE,this._currentGlyphIdentifier.bg=a,this._currentGlyphIdentifier.fg=s,this._currentGlyphIdentifier.bold=!!e.isBold(),this._currentGlyphIdentifier.dim=!!e.isDim(),this._currentGlyphIdentifier.italic=!!e.isItalic(),(null===(o=this._charAtlas)||void 0===o?void 0:o.draw(this._ctx,this._currentGlyphIdentifier,t*this._scaledCellWidth+this._scaledCharLeft,r*this._scaledCellHeight+this._scaledCharTop))||this._drawUncachedChars(e,t,r))},e.prototype._drawUncachedChars=function(e,t,r,i){if(this._ctx.save(),this._ctx.font=this._getFont(!!e.isBold(),!!e.isItalic()),this._ctx.textBaseline=n.TEXT_BASELINE,e.isInverse())if(i)this._ctx.fillStyle=i.css;else if(e.isBgDefault())this._ctx.fillStyle=c.color.opaque(this._colors.background).css;else if(e.isBgRGB())this._ctx.fillStyle="rgb("+s.AttributeData.toColorRGB(e.getBgColor()).join(",")+")";else{var o=e.getBgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&e.isBold()&&o<8&&(o+=8),this._ctx.fillStyle=this._colors.ansi[o].css}else if(i)this._ctx.fillStyle=i.css;else if(e.isFgDefault())this._ctx.fillStyle=this._colors.foreground.css;else if(e.isFgRGB())this._ctx.fillStyle="rgb("+s.AttributeData.toColorRGB(e.getFgColor()).join(",")+")";else{var a=e.getFgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&e.isBold()&&a<8&&(a+=8),this._ctx.fillStyle=this._colors.ansi[a].css}this._clipRow(r),e.isDim()&&(this._ctx.globalAlpha=n.DIM_OPACITY);var l=!1;!1!==this._optionsService.rawOptions.customGlyphs&&(l=(0,h.tryDrawCustomChar)(this._ctx,e.getChars(),t*this._scaledCellWidth,r*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),l||this._ctx.fillText(e.getChars(),t*this._scaledCellWidth+this._scaledCharLeft,r*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight),this._ctx.restore()},e.prototype._clipRow=function(e){this._ctx.beginPath(),this._ctx.rect(0,e*this._scaledCellHeight,this._bufferService.cols*this._scaledCellWidth,this._scaledCellHeight),this._ctx.clip()},e.prototype._getFont=function(e,t){return(t?"italic":"")+" "+(e?this._optionsService.rawOptions.fontWeightBold:this._optionsService.rawOptions.fontWeight)+" "+this._optionsService.rawOptions.fontSize*window.devicePixelRatio+"px "+this._optionsService.rawOptions.fontFamily},e.prototype._getContrastColor=function(e){if(1!==this._optionsService.rawOptions.minimumContrastRatio){var t=this._colors.contrastCache.getColor(e.bg,e.fg);if(void 0!==t)return t||void 0;var r=e.getFgColor(),i=e.getFgColorMode(),n=e.getBgColor(),o=e.getBgColorMode(),s=!!e.isInverse(),a=!!e.isInverse();if(s){var l=r;r=n,n=l;var h=i;i=o,o=h}var u=this._resolveBackgroundRgba(o,n,s),f=this._resolveForegroundRgba(i,r,s,a),_=c.rgba.ensureContrastRatio(u,f,this._optionsService.rawOptions.minimumContrastRatio);if(_){var d={css:c.channels.toCss(_>>24&255,_>>16&255,_>>8&255),rgba:_};return this._colors.contrastCache.setColor(e.bg,e.fg,d),d}this._colors.contrastCache.setColor(e.bg,e.fg,null)}},e.prototype._resolveBackgroundRgba=function(e,t,r){switch(e){case 16777216:case 33554432:return this._colors.ansi[t].rgba;case 50331648:return t<<8;default:return r?this._colors.foreground.rgba:this._colors.background.rgba}},e.prototype._resolveForegroundRgba=function(e,t,r,i){switch(e){case 16777216:case 33554432:return this._optionsService.rawOptions.drawBoldTextInBrightColors&&i&&t<8&&(t+=8),this._colors.ansi[t].rgba;case 50331648:return t<<8;default:return r?this._colors.background.rgba:this._colors.foreground.rgba}},e}();t.BaseRenderLayer=u},2512:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CursorRenderLayer=void 0;var a=r(1546),c=r(511),l=r(2585),h=r(4725),u=600,f=function(e){function t(t,r,i,n,o,s,a,l,h){var u=e.call(this,t,"cursor",r,!0,i,n,s,a)||this;return u._onRequestRedraw=o,u._coreService=l,u._coreBrowserService=h,u._cell=new c.CellData,u._state={x:0,y:0,isFocused:!1,style:"",width:0},u._cursorRenderers={bar:u._renderBarCursor.bind(u),block:u._renderBlockCursor.bind(u),underline:u._renderUnderlineCursor.bind(u)},u}return n(t,e),t.prototype.dispose=function(){this._cursorBlinkStateManager&&(this._cursorBlinkStateManager.dispose(),this._cursorBlinkStateManager=void 0),e.prototype.dispose.call(this)},t.prototype.resize=function(t){e.prototype.resize.call(this,t),this._state={x:0,y:0,isFocused:!1,style:"",width:0}},t.prototype.reset=function(){var e;this._clearCursor(),null===(e=this._cursorBlinkStateManager)||void 0===e||e.restartBlinkAnimation(),this.onOptionsChanged()},t.prototype.onBlur=function(){var e;null===(e=this._cursorBlinkStateManager)||void 0===e||e.pause(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},t.prototype.onFocus=function(){var e;null===(e=this._cursorBlinkStateManager)||void 0===e||e.resume(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},t.prototype.onOptionsChanged=function(){var e,t=this;this._optionsService.rawOptions.cursorBlink?this._cursorBlinkStateManager||(this._cursorBlinkStateManager=new _(this._coreBrowserService.isFocused,(function(){t._render(!0)}))):(null===(e=this._cursorBlinkStateManager)||void 0===e||e.dispose(),this._cursorBlinkStateManager=void 0),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},t.prototype.onCursorMove=function(){var e;null===(e=this._cursorBlinkStateManager)||void 0===e||e.restartBlinkAnimation()},t.prototype.onGridChanged=function(e,t){!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isPaused?this._render(!1):this._cursorBlinkStateManager.restartBlinkAnimation()},t.prototype._render=function(e){if(this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden){var t=this._bufferService.buffer.ybase+this._bufferService.buffer.y,r=t-this._bufferService.buffer.ydisp;if(r<0||r>=this._bufferService.rows)this._clearCursor();else{var i=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1);if(this._bufferService.buffer.lines.get(t).loadCell(i,this._cell),void 0!==this._cell.content){if(!this._coreBrowserService.isFocused){this._clearCursor(),this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css;var n=this._optionsService.rawOptions.cursorStyle;return n&&"block"!==n?this._cursorRenderers[n](i,r,this._cell):this._renderBlurCursor(i,r,this._cell),this._ctx.restore(),this._state.x=i,this._state.y=r,this._state.isFocused=!1,this._state.style=n,void(this._state.width=this._cell.getWidth())}if(!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isCursorVisible){if(this._state){if(this._state.x===i&&this._state.y===r&&this._state.isFocused===this._coreBrowserService.isFocused&&this._state.style===this._optionsService.rawOptions.cursorStyle&&this._state.width===this._cell.getWidth())return;this._clearCursor()}this._ctx.save(),this._cursorRenderers[this._optionsService.rawOptions.cursorStyle||"block"](i,r,this._cell),this._ctx.restore(),this._state.x=i,this._state.y=r,this._state.isFocused=!1,this._state.style=this._optionsService.rawOptions.cursorStyle,this._state.width=this._cell.getWidth()}else this._clearCursor()}}}else this._clearCursor()},t.prototype._clearCursor=function(){this._state&&(window.devicePixelRatio<1?this._clearAll():this._clearCells(this._state.x,this._state.y,this._state.width,1),this._state={x:0,y:0,isFocused:!1,style:"",width:0})},t.prototype._renderBarCursor=function(e,t,r){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillLeftLineAtCell(e,t,this._optionsService.rawOptions.cursorWidth),this._ctx.restore()},t.prototype._renderBlockCursor=function(e,t,r){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillCells(e,t,r.getWidth(),1),this._ctx.fillStyle=this._colors.cursorAccent.css,this._fillCharTrueColor(r,e,t),this._ctx.restore()},t.prototype._renderUnderlineCursor=function(e,t,r){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillBottomLineAtCells(e,t),this._ctx.restore()},t.prototype._renderBlurCursor=function(e,t,r){this._ctx.save(),this._ctx.strokeStyle=this._colors.cursor.css,this._strokeRectAtCell(e,t,r.getWidth(),1),this._ctx.restore()},o([s(5,l.IBufferService),s(6,l.IOptionsService),s(7,l.ICoreService),s(8,h.ICoreBrowserService)],t)}(a.BaseRenderLayer);t.CursorRenderLayer=f;var _=function(){function e(e,t){this._renderCallback=t,this.isCursorVisible=!0,e&&this._restartInterval()}return Object.defineProperty(e.prototype,"isPaused",{get:function(){return!(this._blinkStartTimeout||this._blinkInterval)},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},e.prototype.restartBlinkAnimation=function(){var e=this;this.isPaused||(this._animationTimeRestarted=Date.now(),this.isCursorVisible=!0,this._animationFrame||(this._animationFrame=window.requestAnimationFrame((function(){e._renderCallback(),e._animationFrame=void 0}))))},e.prototype._restartInterval=function(e){var t=this;void 0===e&&(e=u),this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout=window.setTimeout((function(){if(t._animationTimeRestarted){var e=u-(Date.now()-t._animationTimeRestarted);if(t._animationTimeRestarted=void 0,e>0)return void t._restartInterval(e)}t.isCursorVisible=!1,t._animationFrame=window.requestAnimationFrame((function(){t._renderCallback(),t._animationFrame=void 0})),t._blinkInterval=window.setInterval((function(){if(t._animationTimeRestarted){var e=u-(Date.now()-t._animationTimeRestarted);return t._animationTimeRestarted=void 0,void t._restartInterval(e)}t.isCursorVisible=!t.isCursorVisible,t._animationFrame=window.requestAnimationFrame((function(){t._renderCallback(),t._animationFrame=void 0}))}),u)}),e)},e.prototype.pause=function(){this.isCursorVisible=!0,this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},e.prototype.resume=function(){this.pause(),this._animationTimeRestarted=void 0,this._restartInterval(),this.restartBlinkAnimation()},e}()},8978:(e,t,r)=>{var i,n,o,s,a,c,l,h,u,f,_,d,p,v,g,y,m,S,C,b,w,L,E,x,k,M,A,R,O,T,D,B,P,I,H,F,j,W,U,q,N,z,K,G,V,X,Y,Z,J,$,Q,ee,te,re,ie,ne,oe,se,ae,ce,le,he,ue,fe,_e,de,pe,ve,ge,ye,me,Se,Ce,be,we,Le,Ee,xe,ke,Me,Ae,Re,Oe,Te,De,Be,Pe,Ie,He,Fe,je,We,Ue,qe,Ne,ze,Ke,Ge,Ve,Xe,Ye,Ze,Je,$e,Qe,et,tt,rt,it,nt,ot,st,at,ct,lt,ht,ut,ft,_t,dt,pt,vt,gt,yt,mt,St,Ct,bt;Object.defineProperty(t,"__esModule",{value:!0}),t.tryDrawCustomChar=t.boxDrawingDefinitions=t.blockElementDefinitions=void 0;var wt=r(1752);t.blockElementDefinitions={"▀":[{x:0,y:0,w:8,h:4}],"▁":[{x:0,y:7,w:8,h:1}],"▂":[{x:0,y:6,w:8,h:2}],"▃":[{x:0,y:5,w:8,h:3}],"▄":[{x:0,y:4,w:8,h:4}],"▅":[{x:0,y:3,w:8,h:5}],"▆":[{x:0,y:2,w:8,h:6}],"▇":[{x:0,y:1,w:8,h:7}],"█":[{x:0,y:0,w:8,h:8}],"▉":[{x:0,y:0,w:7,h:8}],"▊":[{x:0,y:0,w:6,h:8}],"▋":[{x:0,y:0,w:5,h:8}],"▌":[{x:0,y:0,w:4,h:8}],"▍":[{x:0,y:0,w:3,h:8}],"▎":[{x:0,y:0,w:2,h:8}],"▏":[{x:0,y:0,w:1,h:8}],"▐":[{x:4,y:0,w:4,h:8}],"▔":[{x:0,y:0,w:9,h:1}],"▕":[{x:7,y:0,w:1,h:8}],"▖":[{x:0,y:4,w:4,h:4}],"▗":[{x:4,y:4,w:4,h:4}],"▘":[{x:0,y:0,w:4,h:4}],"▙":[{x:0,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"▚":[{x:0,y:0,w:4,h:4},{x:4,y:4,w:4,h:4}],"▛":[{x:0,y:0,w:4,h:8},{x:0,y:0,w:4,h:8}],"▜":[{x:0,y:0,w:8,h:4},{x:4,y:0,w:4,h:8}],"▝":[{x:4,y:0,w:4,h:4}],"▞":[{x:4,y:0,w:4,h:4},{x:0,y:4,w:4,h:4}],"▟":[{x:4,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"🭰":[{x:1,y:0,w:1,h:8}],"🭱":[{x:2,y:0,w:1,h:8}],"🭲":[{x:3,y:0,w:1,h:8}],"🭳":[{x:4,y:0,w:1,h:8}],"🭴":[{x:5,y:0,w:1,h:8}],"🭵":[{x:6,y:0,w:1,h:8}],"🭶":[{x:0,y:1,w:8,h:1}],"🭷":[{x:0,y:2,w:8,h:1}],"🭸":[{x:0,y:3,w:8,h:1}],"🭹":[{x:0,y:4,w:8,h:1}],"🭺":[{x:0,y:5,w:8,h:1}],"🭻":[{x:0,y:6,w:8,h:1}],"🭼":[{x:0,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"🭽":[{x:0,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"🭾":[{x:7,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"🭿":[{x:7,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"🮀":[{x:0,y:0,w:8,h:1},{x:0,y:7,w:8,h:1}],"🮁":[{x:0,y:0,w:8,h:1},{x:0,y:2,w:8,h:1},{x:0,y:4,w:8,h:1},{x:0,y:7,w:8,h:1}],"🮂":[{x:0,y:0,w:8,h:2}],"🮃":[{x:0,y:0,w:8,h:3}],"🮄":[{x:0,y:0,w:8,h:5}],"🮅":[{x:0,y:0,w:8,h:6}],"🮆":[{x:0,y:0,w:8,h:7}],"🮇":[{x:6,y:0,w:2,h:8}],"🮈":[{x:5,y:0,w:3,h:8}],"🮉":[{x:3,y:0,w:5,h:8}],"🮊":[{x:2,y:0,w:6,h:8}],"🮋":[{x:1,y:0,w:7,h:8}],"🮕":[{x:0,y:0,w:2,h:2},{x:4,y:0,w:2,h:2},{x:2,y:2,w:2,h:2},{x:6,y:2,w:2,h:2},{x:0,y:4,w:2,h:2},{x:4,y:4,w:2,h:2},{x:2,y:6,w:2,h:2},{x:6,y:6,w:2,h:2}],"🮖":[{x:2,y:0,w:2,h:2},{x:6,y:0,w:2,h:2},{x:0,y:2,w:2,h:2},{x:4,y:2,w:2,h:2},{x:2,y:4,w:2,h:2},{x:6,y:4,w:2,h:2},{x:0,y:6,w:2,h:2},{x:4,y:6,w:2,h:2}],"🮗":[{x:0,y:2,w:8,h:2},{x:0,y:6,w:8,h:2}]};var Lt={"░":[[1,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]],"▒":[[1,0],[0,0],[0,1],[0,0]],"▓":[[0,1],[1,1],[1,0],[1,1]]};t.boxDrawingDefinitions={"─":(i={},i[1]="M0,.5 L1,.5",i),"━":(n={},n[3]="M0,.5 L1,.5",n),"│":(o={},o[1]="M.5,0 L.5,1",o),"┃":(s={},s[3]="M.5,0 L.5,1",s),"┌":(a={},a[1]="M0.5,1 L.5,.5 L1,.5",a),"┏":(c={},c[3]="M0.5,1 L.5,.5 L1,.5",c),"┐":(l={},l[1]="M0,.5 L.5,.5 L.5,1",l),"┓":(h={},h[3]="M0,.5 L.5,.5 L.5,1",h),"└":(u={},u[1]="M.5,0 L.5,.5 L1,.5",u),"┗":(f={},f[3]="M.5,0 L.5,.5 L1,.5",f),"┘":(_={},_[1]="M.5,0 L.5,.5 L0,.5",_),"┛":(d={},d[3]="M.5,0 L.5,.5 L0,.5",d),"├":(p={},p[1]="M.5,0 L.5,1 M.5,.5 L1,.5",p),"┣":(v={},v[3]="M.5,0 L.5,1 M.5,.5 L1,.5",v),"┤":(g={},g[1]="M.5,0 L.5,1 M.5,.5 L0,.5",g),"┫":(y={},y[3]="M.5,0 L.5,1 M.5,.5 L0,.5",y),"┬":(m={},m[1]="M0,.5 L1,.5 M.5,.5 L.5,1",m),"┳":(S={},S[3]="M0,.5 L1,.5 M.5,.5 L.5,1",S),"┴":(C={},C[1]="M0,.5 L1,.5 M.5,.5 L.5,0",C),"┻":(b={},b[3]="M0,.5 L1,.5 M.5,.5 L.5,0",b),"┼":(w={},w[1]="M0,.5 L1,.5 M.5,0 L.5,1",w),"╋":(L={},L[3]="M0,.5 L1,.5 M.5,0 L.5,1",L),"╴":(E={},E[1]="M.5,.5 L0,.5",E),"╸":(x={},x[3]="M.5,.5 L0,.5",x),"╵":(k={},k[1]="M.5,.5 L.5,0",k),"╹":(M={},M[3]="M.5,.5 L.5,0",M),"╶":(A={},A[1]="M.5,.5 L1,.5",A),"╺":(R={},R[3]="M.5,.5 L1,.5",R),"╷":(O={},O[1]="M.5,.5 L.5,1",O),"╻":(T={},T[3]="M.5,.5 L.5,1",T),"═":(D={},D[1]=function(e,t){return"M0,"+(.5-t)+" L1,"+(.5-t)+" M0,"+(.5+t)+" L1,"+(.5+t)},D),"║":(B={},B[1]=function(e,t){return"M"+(.5-e)+",0 L"+(.5-e)+",1 M"+(.5+e)+",0 L"+(.5+e)+",1"},B),"╒":(P={},P[1]=function(e,t){return"M.5,1 L.5,"+(.5-t)+" L1,"+(.5-t)+" M.5,"+(.5+t)+" L1,"+(.5+t)},P),"╓":(I={},I[1]=function(e,t){return"M"+(.5-e)+",1 L"+(.5-e)+",.5 L1,.5 M"+(.5+e)+",.5 L"+(.5+e)+",1"},I),"╔":(H={},H[1]=function(e,t){return"M1,"+(.5-t)+" L"+(.5-e)+","+(.5-t)+" L"+(.5-e)+",1 M1,"+(.5+t)+" L"+(.5+e)+","+(.5+t)+" L"+(.5+e)+",1"},H),"╕":(F={},F[1]=function(e,t){return"M0,"+(.5-t)+" L.5,"+(.5-t)+" L.5,1 M0,"+(.5+t)+" L.5,"+(.5+t)},F),"╖":(j={},j[1]=function(e,t){return"M"+(.5+e)+",1 L"+(.5+e)+",.5 L0,.5 M"+(.5-e)+",.5 L"+(.5-e)+",1"},j),"╗":(W={},W[1]=function(e,t){return"M0,"+(.5+t)+" L"+(.5-e)+","+(.5+t)+" L"+(.5-e)+",1 M0,"+(.5-t)+" L"+(.5+e)+","+(.5-t)+" L"+(.5+e)+",1"},W),"╘":(U={},U[1]=function(e,t){return"M.5,0 L.5,"+(.5+t)+" L1,"+(.5+t)+" M.5,"+(.5-t)+" L1,"+(.5-t)},U),"╙":(q={},q[1]=function(e,t){return"M1,.5 L"+(.5-e)+",.5 L"+(.5-e)+",0 M"+(.5+e)+",.5 L"+(.5+e)+",0"},q),"╚":(N={},N[1]=function(e,t){return"M1,"+(.5-t)+" L"+(.5+e)+","+(.5-t)+" L"+(.5+e)+",0 M1,"+(.5+t)+" L"+(.5-e)+","+(.5+t)+" L"+(.5-e)+",0"},N),"╛":(z={},z[1]=function(e,t){return"M0,"+(.5+t)+" L.5,"+(.5+t)+" L.5,0 M0,"+(.5-t)+" L.5,"+(.5-t)},z),"╜":(K={},K[1]=function(e,t){return"M0,.5 L"+(.5+e)+",.5 L"+(.5+e)+",0 M"+(.5-e)+",.5 L"+(.5-e)+",0"},K),"╝":(G={},G[1]=function(e,t){return"M0,"+(.5-t)+" L"+(.5-e)+","+(.5-t)+" L"+(.5-e)+",0 M0,"+(.5+t)+" L"+(.5+e)+","+(.5+t)+" L"+(.5+e)+",0"},G),"╞":(V={},V[1]=function(e,t){return"M.5,0 L.5,1 M.5,"+(.5-t)+" L1,"+(.5-t)+" M.5,"+(.5+t)+" L1,"+(.5+t)},V),"╟":(X={},X[1]=function(e,t){return"M"+(.5-e)+",0 L"+(.5-e)+",1 M"+(.5+e)+",0 L"+(.5+e)+",1 M"+(.5+e)+",.5 L1,.5"},X),"╠":(Y={},Y[1]=function(e,t){return"M"+(.5-e)+",0 L"+(.5-e)+",1 M1,"+(.5+t)+" L"+(.5+e)+","+(.5+t)+" L"+(.5+e)+",1 M1,"+(.5-t)+" L"+(.5+e)+","+(.5-t)+" L"+(.5+e)+",0"},Y),"╡":(Z={},Z[1]=function(e,t){return"M.5,0 L.5,1 M0,"+(.5-t)+" L.5,"+(.5-t)+" M0,"+(.5+t)+" L.5,"+(.5+t)},Z),"╢":(J={},J[1]=function(e,t){return"M0,.5 L"+(.5-e)+",.5 M"+(.5-e)+",0 L"+(.5-e)+",1 M"+(.5+e)+",0 L"+(.5+e)+",1"},J),"╣":($={},$[1]=function(e,t){return"M"+(.5+e)+",0 L"+(.5+e)+",1 M0,"+(.5+t)+" L"+(.5-e)+","+(.5+t)+" L"+(.5-e)+",1 M0,"+(.5-t)+" L"+(.5-e)+","+(.5-t)+" L"+(.5-e)+",0"},$),"╤":(Q={},Q[1]=function(e,t){return"M0,"+(.5-t)+" L1,"+(.5-t)+" M0,"+(.5+t)+" L1,"+(.5+t)+" M.5,"+(.5+t)+" L.5,1"},Q),"╥":(ee={},ee[1]=function(e,t){return"M0,.5 L1,.5 M"+(.5-e)+",.5 L"+(.5-e)+",1 M"+(.5+e)+",.5 L"+(.5+e)+",1"},ee),"╦":(te={},te[1]=function(e,t){return"M0,"+(.5-t)+" L1,"+(.5-t)+" M0,"+(.5+t)+" L"+(.5-e)+","+(.5+t)+" L"+(.5-e)+",1 M1,"+(.5+t)+" L"+(.5+e)+","+(.5+t)+" L"+(.5+e)+",1"},te),"╧":(re={},re[1]=function(e,t){return"M.5,0 L.5,"+(.5-t)+" M0,"+(.5-t)+" L1,"+(.5-t)+" M0,"+(.5+t)+" L1,"+(.5+t)},re),"╨":(ie={},ie[1]=function(e,t){return"M0,.5 L1,.5 M"+(.5-e)+",.5 L"+(.5-e)+",0 M"+(.5+e)+",.5 L"+(.5+e)+",0"},ie),"╩":(ne={},ne[1]=function(e,t){return"M0,"+(.5+t)+" L1,"+(.5+t)+" M0,"+(.5-t)+" L"+(.5-e)+","+(.5-t)+" L"+(.5-e)+",0 M1,"+(.5-t)+" L"+(.5+e)+","+(.5-t)+" L"+(.5+e)+",0"},ne),"╪":(oe={},oe[1]=function(e,t){return"M.5,0 L.5,1 M0,"+(.5-t)+" L1,"+(.5-t)+" M0,"+(.5+t)+" L1,"+(.5+t)},oe),"╫":(se={},se[1]=function(e,t){return"M0,.5 L1,.5 M"+(.5-e)+",0 L"+(.5-e)+",1 M"+(.5+e)+",0 L"+(.5+e)+",1"},se),"╬":(ae={},ae[1]=function(e,t){return"M0,"+(.5+t)+" L"+(.5-e)+","+(.5+t)+" L"+(.5-e)+",1 M1,"+(.5+t)+" L"+(.5+e)+","+(.5+t)+" L"+(.5+e)+",1 M0,"+(.5-t)+" L"+(.5-e)+","+(.5-t)+" L"+(.5-e)+",0 M1,"+(.5-t)+" L"+(.5+e)+","+(.5-t)+" L"+(.5+e)+",0"},ae),"╱":(ce={},ce[1]="M1,0 L0,1",ce),"╲":(le={},le[1]="M0,0 L1,1",le),"╳":(he={},he[1]="M1,0 L0,1 M0,0 L1,1",he),"╼":(ue={},ue[1]="M.5,.5 L0,.5",ue[3]="M.5,.5 L1,.5",ue),"╽":(fe={},fe[1]="M.5,.5 L.5,0",fe[3]="M.5,.5 L.5,1",fe),"╾":(_e={},_e[1]="M.5,.5 L1,.5",_e[3]="M.5,.5 L0,.5",_e),"╿":(de={},de[1]="M.5,.5 L.5,1",de[3]="M.5,.5 L.5,0",de),"┍":(pe={},pe[1]="M.5,.5 L.5,1",pe[3]="M.5,.5 L1,.5",pe),"┎":(ve={},ve[1]="M.5,.5 L1,.5",ve[3]="M.5,.5 L.5,1",ve),"┑":(ge={},ge[1]="M.5,.5 L.5,1",ge[3]="M.5,.5 L0,.5",ge),"┒":(ye={},ye[1]="M.5,.5 L0,.5",ye[3]="M.5,.5 L.5,1",ye),"┕":(me={},me[1]="M.5,.5 L.5,0",me[3]="M.5,.5 L1,.5",me),"┖":(Se={},Se[1]="M.5,.5 L1,.5",Se[3]="M.5,.5 L.5,0",Se),"┙":(Ce={},Ce[1]="M.5,.5 L.5,0",Ce[3]="M.5,.5 L0,.5",Ce),"┚":(be={},be[1]="M.5,.5 L0,.5",be[3]="M.5,.5 L.5,0",be),"┝":(we={},we[1]="M.5,0 L.5,1",we[3]="M.5,.5 L1,.5",we),"┞":(Le={},Le[1]="M0.5,1 L.5,.5 L1,.5",Le[3]="M.5,.5 L.5,0",Le),"┟":(Ee={},Ee[1]="M.5,0 L.5,.5 L1,.5",Ee[3]="M.5,.5 L.5,1",Ee),"┠":(xe={},xe[1]="M.5,.5 L1,.5",xe[3]="M.5,0 L.5,1",xe),"┡":(ke={},ke[1]="M.5,.5 L.5,1",ke[3]="M.5,0 L.5,.5 L1,.5",ke),"┢":(Me={},Me[1]="M.5,.5 L.5,0",Me[3]="M0.5,1 L.5,.5 L1,.5",Me),"┥":(Ae={},Ae[1]="M.5,0 L.5,1",Ae[3]="M.5,.5 L0,.5",Ae),"┦":(Re={},Re[1]="M0,.5 L.5,.5 L.5,1",Re[3]="M.5,.5 L.5,0",Re),"┧":(Oe={},Oe[1]="M.5,0 L.5,.5 L0,.5",Oe[3]="M.5,.5 L.5,1",Oe),"┨":(Te={},Te[1]="M.5,.5 L0,.5",Te[3]="M.5,0 L.5,1",Te),"┩":(De={},De[1]="M.5,.5 L.5,1",De[3]="M.5,0 L.5,.5 L0,.5",De),"┪":(Be={},Be[1]="M.5,.5 L.5,0",Be[3]="M0,.5 L.5,.5 L.5,1",Be),"┭":(Pe={},Pe[1]="M0.5,1 L.5,.5 L1,.5",Pe[3]="M.5,.5 L0,.5",Pe),"┮":(Ie={},Ie[1]="M0,.5 L.5,.5 L.5,1",Ie[3]="M.5,.5 L1,.5",Ie),"┯":(He={},He[1]="M.5,.5 L.5,1",He[3]="M0,.5 L1,.5",He),"┰":(Fe={},Fe[1]="M0,.5 L1,.5",Fe[3]="M.5,.5 L.5,1",Fe),"┱":(je={},je[1]="M.5,.5 L1,.5",je[3]="M0,.5 L.5,.5 L.5,1",je),"┲":(We={},We[1]="M.5,.5 L0,.5",We[3]="M0.5,1 L.5,.5 L1,.5",We),"┵":(Ue={},Ue[1]="M.5,0 L.5,.5 L1,.5",Ue[3]="M.5,.5 L0,.5",Ue),"┶":(qe={},qe[1]="M.5,0 L.5,.5 L0,.5",qe[3]="M.5,.5 L1,.5",qe),"┷":(Ne={},Ne[1]="M.5,.5 L.5,0",Ne[3]="M0,.5 L1,.5",Ne),"┸":(ze={},ze[1]="M0,.5 L1,.5",ze[3]="M.5,.5 L.5,0",ze),"┹":(Ke={},Ke[1]="M.5,.5 L1,.5",Ke[3]="M.5,0 L.5,.5 L0,.5",Ke),"┺":(Ge={},Ge[1]="M.5,.5 L0,.5",Ge[3]="M.5,0 L.5,.5 L1,.5",Ge),"┽":(Ve={},Ve[1]="M.5,0 L.5,1 M.5,.5 L1,.5",Ve[3]="M.5,.5 L0,.5",Ve),"┾":(Xe={},Xe[1]="M.5,0 L.5,1 M.5,.5 L0,.5",Xe[3]="M.5,.5 L1,.5",Xe),"┿":(Ye={},Ye[1]="M.5,0 L.5,1",Ye[3]="M0,.5 L1,.5",Ye),"╀":(Ze={},Ze[1]="M0,.5 L1,.5 M.5,.5 L.5,1",Ze[3]="M.5,.5 L.5,0",Ze),"╁":(Je={},Je[1]="M.5,.5 L.5,0 M0,.5 L1,.5",Je[3]="M.5,.5 L.5,1",Je),"╂":($e={},$e[1]="M0,.5 L1,.5",$e[3]="M.5,0 L.5,1",$e),"╃":(Qe={},Qe[1]="M0.5,1 L.5,.5 L1,.5",Qe[3]="M.5,0 L.5,.5 L0,.5",Qe),"╄":(et={},et[1]="M0,.5 L.5,.5 L.5,1",et[3]="M.5,0 L.5,.5 L1,.5",et),"╅":(tt={},tt[1]="M.5,0 L.5,.5 L1,.5",tt[3]="M0,.5 L.5,.5 L.5,1",tt),"╆":(rt={},rt[1]="M.5,0 L.5,.5 L0,.5",rt[3]="M0.5,1 L.5,.5 L1,.5",rt),"╇":(it={},it[1]="M.5,.5 L.5,1",it[3]="M.5,.5 L.5,0 M0,.5 L1,.5",it),"╈":(nt={},nt[1]="M.5,.5 L.5,0",nt[3]="M0,.5 L1,.5 M.5,.5 L.5,1",nt),"╉":(ot={},ot[1]="M.5,.5 L1,.5",ot[3]="M.5,0 L.5,1 M.5,.5 L0,.5",ot),"╊":(st={},st[1]="M.5,.5 L0,.5",st[3]="M.5,0 L.5,1 M.5,.5 L1,.5",st),"╌":(at={},at[1]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",at),"╍":(ct={},ct[3]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",ct),"┄":(lt={},lt[1]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",lt),"┅":(ht={},ht[3]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",ht),"┈":(ut={},ut[1]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",ut),"┉":(ft={},ft[3]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",ft),"╎":(_t={},_t[1]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",_t),"╏":(dt={},dt[3]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",dt),"┆":(pt={},pt[1]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",pt),"┇":(vt={},vt[3]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",vt),"┊":(gt={},gt[1]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",gt),"┋":(yt={},yt[3]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",yt),"╭":(mt={},mt[1]="C.5,1,.5,.5,1,.5",mt),"╮":(St={},St[1]="C.5,1,.5,.5,0,.5",St),"╯":(Ct={},Ct[1]="C.5,0,.5,.5,0,.5",Ct),"╰":(bt={},bt[1]="C.5,0,.5,.5,1,.5",bt)},t.tryDrawCustomChar=function(e,r,i,n,o,s){var a=t.blockElementDefinitions[r];if(a)return function(e,t,r,i,n,o){for(var s=0;s7&&parseInt(c.substr(7,2),16)||1;else{if(!c.startsWith("rgba"))throw new Error('Unexpected fillStyle color format "'+c+'" when drawing pattern glyph');p=(s=c.substring(5,c.length-1).split(",").map((function(e){return parseFloat(e)})))[0],v=s[1],g=s[2],y=s[3]}for(var m=0;m{Object.defineProperty(t,"__esModule",{value:!0}),t.GridCache=void 0;var r=function(){function e(){this.cache=[]}return e.prototype.resize=function(e,t){for(var r=0;r=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.LinkRenderLayer=void 0;var a=r(1546),c=r(8803),l=r(2040),h=r(2585),u=function(e){function t(t,r,i,n,o,s,a,c){var l=e.call(this,t,"link",r,!0,i,n,a,c)||this;return o.onShowLinkUnderline((function(e){return l._onShowLinkUnderline(e)})),o.onHideLinkUnderline((function(e){return l._onHideLinkUnderline(e)})),s.onShowLinkUnderline((function(e){return l._onShowLinkUnderline(e)})),s.onHideLinkUnderline((function(e){return l._onHideLinkUnderline(e)})),l}return n(t,e),t.prototype.resize=function(t){e.prototype.resize.call(this,t),this._state=void 0},t.prototype.reset=function(){this._clearCurrentLink()},t.prototype._clearCurrentLink=function(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);var e=this._state.y2-this._state.y1-1;e>0&&this._clearCells(0,this._state.y1+1,this._state.cols,e),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}},t.prototype._onShowLinkUnderline=function(e){if(e.fg===c.INVERTED_DEFAULT_COLOR?this._ctx.fillStyle=this._colors.background.css:e.fg&&(0,l.is256Color)(e.fg)?this._ctx.fillStyle=this._colors.ansi[e.fg].css:this._ctx.fillStyle=this._colors.foreground.css,e.y1===e.y2)this._fillBottomLineAtCells(e.x1,e.y1,e.x2-e.x1);else{this._fillBottomLineAtCells(e.x1,e.y1,e.cols-e.x1);for(var t=e.y1+1;t=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Renderer=void 0;var a=r(9596),c=r(4149),l=r(2512),h=r(5098),u=r(844),f=r(4725),_=r(2585),d=r(1420),p=r(8460),v=1,g=function(e){function t(t,r,i,n,o,s,u,f){var _=e.call(this)||this;_._colors=t,_._screenElement=r,_._bufferService=s,_._charSizeService=u,_._optionsService=f,_._id=v++,_._onRequestRedraw=new p.EventEmitter;var d=_._optionsService.rawOptions.allowTransparency;return _._renderLayers=[o.createInstance(a.TextRenderLayer,_._screenElement,0,_._colors,d,_._id),o.createInstance(c.SelectionRenderLayer,_._screenElement,1,_._colors,_._id),o.createInstance(h.LinkRenderLayer,_._screenElement,2,_._colors,_._id,i,n),o.createInstance(l.CursorRenderLayer,_._screenElement,3,_._colors,_._id,_._onRequestRedraw)],_.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},_._devicePixelRatio=window.devicePixelRatio,_._updateDimensions(),_.onOptionsChanged(),_}return n(t,e),Object.defineProperty(t.prototype,"onRequestRedraw",{get:function(){return this._onRequestRedraw.event},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){for(var t=0,r=this._renderLayers;t{Object.defineProperty(t,"__esModule",{value:!0}),t.throwIfFalsy=void 0,t.throwIfFalsy=function(e){if(!e)throw new Error("value must not be falsy");return e}},4149:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionRenderLayer=void 0;var a=r(1546),c=r(2585),l=function(e){function t(t,r,i,n,o,s){var a=e.call(this,t,"selection",r,!0,i,n,o,s)||this;return a._clearState(),a}return n(t,e),t.prototype._clearState=function(){this._state={start:void 0,end:void 0,columnSelectMode:void 0,ydisp:void 0}},t.prototype.resize=function(t){e.prototype.resize.call(this,t),this._clearState()},t.prototype.reset=function(){this._state.start&&this._state.end&&(this._clearState(),this._clearAll())},t.prototype.onSelectionChanged=function(e,t,r){if(this._didStateChange(e,t,r,this._bufferService.buffer.ydisp))if(this._clearAll(),e&&t){var i=e[1]-this._bufferService.buffer.ydisp,n=t[1]-this._bufferService.buffer.ydisp,o=Math.max(i,0),s=Math.min(n,this._bufferService.rows-1);if(o>=this._bufferService.rows||s<0)this._state.ydisp=this._bufferService.buffer.ydisp;else{if(this._ctx.fillStyle=this._colors.selectionTransparent.css,r){var a=e[0],c=t[0]-a,l=s-o+1;this._fillCells(a,o,c,l)}else{a=i===o?e[0]:0;var h=o===n?t[0]:this._bufferService.cols;this._fillCells(a,o,h-a,1);var u=Math.max(s-o-1,0);if(this._fillCells(0,o+1,this._bufferService.cols,u),o!==s){var f=n===s?t[0]:this._bufferService.cols;this._fillCells(0,s,f,1)}}this._state.start=[e[0],e[1]],this._state.end=[t[0],t[1]],this._state.columnSelectMode=r,this._state.ydisp=this._bufferService.buffer.ydisp}}else this._clearState()},t.prototype._didStateChange=function(e,t,r,i){return!this._areCoordinatesEqual(e,this._state.start)||!this._areCoordinatesEqual(t,this._state.end)||r!==this._state.columnSelectMode||i!==this._state.ydisp},t.prototype._areCoordinatesEqual=function(e,t){return!(!e||!t)&&e[0]===t[0]&&e[1]===t[1]},o([s(4,c.IBufferService),s(5,c.IOptionsService)],t)}(a.BaseRenderLayer);t.SelectionRenderLayer=l},9596:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.TextRenderLayer=void 0;var a=r(3700),c=r(1546),l=r(3734),h=r(643),u=r(511),f=r(2585),_=r(4725),d=r(4269),p=function(e){function t(t,r,i,n,o,s,c,l){var h=e.call(this,t,"text",r,n,i,o,s,c)||this;return h._characterJoinerService=l,h._characterWidth=0,h._characterFont="",h._characterOverlapCache={},h._workCell=new u.CellData,h._state=new a.GridCache,h}return n(t,e),t.prototype.resize=function(t){e.prototype.resize.call(this,t);var r=this._getFont(!1,!1);this._characterWidth===t.scaledCharWidth&&this._characterFont===r||(this._characterWidth=t.scaledCharWidth,this._characterFont=r,this._characterOverlapCache={}),this._state.clear(),this._state.resize(this._bufferService.cols,this._bufferService.rows)},t.prototype.reset=function(){this._state.clear(),this._clearAll()},t.prototype._forEachCell=function(e,t,r){for(var i=e;i<=t;i++)for(var n=i+this._bufferService.buffer.ydisp,o=this._bufferService.buffer.lines.get(n),s=this._characterJoinerService.getJoinedCharacters(n),a=0;a0&&a===s[0][0]){l=!0;var f=s.shift();c=new d.JoinedCellData(this._workCell,o.translateToString(!0,f[0],f[1]),f[1]-f[0]),u=f[1]-1}!l&&this._isOverlapping(c)&&uthis._characterWidth;return this._ctx.restore(),this._characterOverlapCache[t]=r,r},o([s(5,f.IBufferService),s(6,f.IOptionsService),s(7,_.ICharacterJoinerService)],t)}(c.BaseRenderLayer);t.TextRenderLayer=p},9616:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaseCharAtlas=void 0;var r=function(){function e(){this._didWarmUp=!1}return e.prototype.dispose=function(){},e.prototype.warmUp=function(){this._didWarmUp||(this._doWarmUp(),this._didWarmUp=!0)},e.prototype._doWarmUp=function(){},e.prototype.clear=function(){},e.prototype.beginFrame=function(){},e}();t.BaseCharAtlas=r},1420:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.removeTerminalFromCache=t.acquireCharAtlas=void 0;var i=r(2040),n=r(1906),o=[];t.acquireCharAtlas=function(e,t,r,s,a){for(var c=(0,i.generateConfig)(s,a,e,r),l=0;l=0){if((0,i.configEquals)(u.config,c))return u.atlas;1===u.ownedBy.length?(u.atlas.dispose(),o.splice(l,1)):u.ownedBy.splice(h,1);break}}for(l=0;l{Object.defineProperty(t,"__esModule",{value:!0}),t.CHAR_ATLAS_CELL_SPACING=t.TEXT_BASELINE=t.DIM_OPACITY=t.INVERTED_DEFAULT_COLOR=void 0;var i=r(6114);t.INVERTED_DEFAULT_COLOR=257,t.DIM_OPACITY=.5,t.TEXT_BASELINE=i.isFirefox||i.isLegacyEdge?"bottom":"ideographic",t.CHAR_ATLAS_CELL_SPACING=1},1906:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.NoneCharAtlas=t.DynamicCharAtlas=t.getGlyphCacheKey=void 0;var o=r(8803),s=r(9616),a=r(5680),c=r(7001),l=r(6114),h=r(1752),u=r(4774),f=1024,_=1024,d={css:"rgba(0, 0, 0, 0)",rgba:0};function p(e){return e.code<<21|e.bg<<12|e.fg<<3|(e.bold?0:4)+(e.dim?0:2)+(e.italic?0:1)}t.getGlyphCacheKey=p;var v=function(e){function t(t,r){var i=e.call(this)||this;i._config=r,i._drawToCacheCount=0,i._glyphsWaitingOnBitmap=[],i._bitmapCommitTimeout=null,i._bitmap=null,i._cacheCanvas=t.createElement("canvas"),i._cacheCanvas.width=f,i._cacheCanvas.height=_,i._cacheCtx=(0,h.throwIfFalsy)(i._cacheCanvas.getContext("2d",{alpha:!0}));var n=t.createElement("canvas");n.width=i._config.scaledCharWidth,n.height=i._config.scaledCharHeight,i._tmpCtx=(0,h.throwIfFalsy)(n.getContext("2d",{alpha:i._config.allowTransparency})),i._width=Math.floor(f/i._config.scaledCharWidth),i._height=Math.floor(_/i._config.scaledCharHeight);var o=i._width*i._height;return i._cacheMap=new c.LRUMap(o),i._cacheMap.prealloc(o),i}return n(t,e),t.prototype.dispose=function(){null!==this._bitmapCommitTimeout&&(window.clearTimeout(this._bitmapCommitTimeout),this._bitmapCommitTimeout=null)},t.prototype.beginFrame=function(){this._drawToCacheCount=0},t.prototype.clear=function(){if(this._cacheMap.size>0){var e=this._width*this._height;this._cacheMap=new c.LRUMap(e),this._cacheMap.prealloc(e)}this._cacheCtx.clearRect(0,0,f,_),this._tmpCtx.clearRect(0,0,this._config.scaledCharWidth,this._config.scaledCharHeight)},t.prototype.draw=function(e,t,r,i){if(32===t.code)return!0;if(!this._canCache(t))return!1;var n=p(t),o=this._cacheMap.get(n);if(null!=o)return this._drawFromCache(e,o,r,i),!0;if(this._drawToCacheCount<100){var s;s=this._cacheMap.size>>24,n=t.rgba>>>16&255,o=t.rgba>>>8&255,s=0;s{Object.defineProperty(t,"__esModule",{value:!0}),t.LRUMap=void 0;var r=function(){function e(e){this.capacity=e,this._map={},this._head=null,this._tail=null,this._nodePool=[],this.size=0}return e.prototype._unlinkNode=function(e){var t=e.prev,r=e.next;e===this._head&&(this._head=r),e===this._tail&&(this._tail=t),null!==t&&(t.next=r),null!==r&&(r.prev=t)},e.prototype._appendNode=function(e){var t=this._tail;null!==t&&(t.next=e),e.prev=t,e.next=null,this._tail=e,null===this._head&&(this._head=e)},e.prototype.prealloc=function(e){for(var t=this._nodePool,r=0;r=this.capacity)r=this._head,this._unlinkNode(r),delete this._map[r.key],r.key=e,r.value=t,this._map[e]=r;else{var i=this._nodePool;i.length>0?((r=i.pop()).key=e,r.value=t):r={prev:null,next:null,key:e,value:t},this._map[e]=r,this.size++}this._appendNode(r)},e}();t.LRUMap=r},1296:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.DomRenderer=void 0;var a=r(3787),c=r(8803),l=r(844),h=r(4725),u=r(2585),f=r(8460),_=r(4774),d=r(9631),p="xterm-dom-renderer-owner-",v="xterm-fg-",g="xterm-bg-",y="xterm-focus",m=1,S=function(e){function t(t,r,i,n,o,s,c,l,h,u){var f=e.call(this)||this;return f._colors=t,f._element=r,f._screenElement=i,f._viewportElement=n,f._linkifier=o,f._linkifier2=s,f._charSizeService=l,f._optionsService=h,f._bufferService=u,f._terminalClass=m++,f._rowElements=[],f._rowContainer=document.createElement("div"),f._rowContainer.classList.add("xterm-rows"),f._rowContainer.style.lineHeight="normal",f._rowContainer.setAttribute("aria-hidden","true"),f._refreshRowElements(f._bufferService.cols,f._bufferService.rows),f._selectionContainer=document.createElement("div"),f._selectionContainer.classList.add("xterm-selection"),f._selectionContainer.setAttribute("aria-hidden","true"),f.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},f._updateDimensions(),f._injectCss(),f._rowFactory=c.createInstance(a.DomRendererRowFactory,document,f._colors),f._element.classList.add(p+f._terminalClass),f._screenElement.appendChild(f._rowContainer),f._screenElement.appendChild(f._selectionContainer),f._linkifier.onShowLinkUnderline((function(e){return f._onLinkHover(e)})),f._linkifier.onHideLinkUnderline((function(e){return f._onLinkLeave(e)})),f._linkifier2.onShowLinkUnderline((function(e){return f._onLinkHover(e)})),f._linkifier2.onHideLinkUnderline((function(e){return f._onLinkLeave(e)})),f}return n(t,e),Object.defineProperty(t.prototype,"onRequestRedraw",{get:function(){return(new f.EventEmitter).event},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){this._element.classList.remove(p+this._terminalClass),(0,d.removeElementFromParent)(this._rowContainer,this._selectionContainer,this._themeStyleElement,this._dimensionsStyleElement),e.prototype.dispose.call(this)},t.prototype._updateDimensions=function(){this.dimensions.scaledCharWidth=this._charSizeService.width*window.devicePixelRatio,this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*window.devicePixelRatio),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._optionsService.rawOptions.lineHeight),this.dimensions.scaledCharLeft=0,this.dimensions.scaledCharTop=0,this.dimensions.scaledCanvasWidth=this.dimensions.scaledCellWidth*this._bufferService.cols,this.dimensions.scaledCanvasHeight=this.dimensions.scaledCellHeight*this._bufferService.rows,this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/window.devicePixelRatio),this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/window.devicePixelRatio),this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._bufferService.cols,this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._bufferService.rows;for(var e=0,t=this._rowElements;et;)this._rowContainer.removeChild(this._rowElements.pop())},t.prototype.onResize=function(e,t){this._refreshRowElements(e,t),this._updateDimensions()},t.prototype.onCharSizeChanged=function(){this._updateDimensions()},t.prototype.onBlur=function(){this._rowContainer.classList.remove(y)},t.prototype.onFocus=function(){this._rowContainer.classList.add(y)},t.prototype.onSelectionChanged=function(e,t,r){for(;this._selectionContainer.children.length;)this._selectionContainer.removeChild(this._selectionContainer.children[0]);if(e&&t){var i=e[1]-this._bufferService.buffer.ydisp,n=t[1]-this._bufferService.buffer.ydisp,o=Math.max(i,0),s=Math.min(n,this._bufferService.rows-1);if(!(o>=this._bufferService.rows||s<0)){var a=document.createDocumentFragment();if(r)a.appendChild(this._createSelectionElement(o,e[0],t[0],s-o+1));else{var c=i===o?e[0]:0,l=o===n?t[0]:this._bufferService.cols;a.appendChild(this._createSelectionElement(o,c,l));var h=s-o-1;if(a.appendChild(this._createSelectionElement(o+1,0,this._bufferService.cols,h)),o!==s){var u=n===s?t[0]:this._bufferService.cols;a.appendChild(this._createSelectionElement(s,0,u))}}this._selectionContainer.appendChild(a)}}},t.prototype._createSelectionElement=function(e,t,r,i){void 0===i&&(i=1);var n=document.createElement("div");return n.style.height=i*this.dimensions.actualCellHeight+"px",n.style.top=e*this.dimensions.actualCellHeight+"px",n.style.left=t*this.dimensions.actualCellWidth+"px",n.style.width=this.dimensions.actualCellWidth*(r-t)+"px",n},t.prototype.onCursorMove=function(){},t.prototype.onOptionsChanged=function(){this._updateDimensions(),this._injectCss()},t.prototype.clear=function(){for(var e=0,t=this._rowElements;e=n&&(e=0,r++)}},o([s(6,u.IInstantiationService),s(7,h.ICharSizeService),s(8,u.IOptionsService),s(9,u.IBufferService)],t)}(l.Disposable);t.DomRenderer=S},3787:function(e,t,r){var i=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},n=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.DomRendererRowFactory=t.CURSOR_STYLE_UNDERLINE_CLASS=t.CURSOR_STYLE_BAR_CLASS=t.CURSOR_STYLE_BLOCK_CLASS=t.CURSOR_BLINK_CLASS=t.CURSOR_CLASS=t.STRIKETHROUGH_CLASS=t.UNDERLINE_CLASS=t.ITALIC_CLASS=t.DIM_CLASS=t.BOLD_CLASS=void 0;var o=r(8803),s=r(643),a=r(511),c=r(2585),l=r(4774),h=r(4725),u=r(4269);t.BOLD_CLASS="xterm-bold",t.DIM_CLASS="xterm-dim",t.ITALIC_CLASS="xterm-italic",t.UNDERLINE_CLASS="xterm-underline",t.STRIKETHROUGH_CLASS="xterm-strikethrough",t.CURSOR_CLASS="xterm-cursor",t.CURSOR_BLINK_CLASS="xterm-cursor-blink",t.CURSOR_STYLE_BLOCK_CLASS="xterm-cursor-block",t.CURSOR_STYLE_BAR_CLASS="xterm-cursor-bar",t.CURSOR_STYLE_UNDERLINE_CLASS="xterm-cursor-underline";var f=function(){function e(e,t,r,i,n){this._document=e,this._colors=t,this._characterJoinerService=r,this._optionsService=i,this._coreService=n,this._workCell=new a.CellData}return e.prototype.setColors=function(e){this._colors=e},e.prototype.createRow=function(e,r,i,n,a,c,h,f){for(var d=this._document.createDocumentFragment(),p=this._characterJoinerService.getJoinedCharacters(r),v=0,g=Math.min(e.length,f)-1;g>=0;g--)if(e.loadCell(g,this._workCell).getCode()!==s.NULL_CELL_CODE||i&&g===a){v=g+1;break}for(g=0;g0&&g===p[0][0]){m=!0;var b=p.shift();C=new u.JoinedCellData(this._workCell,e.translateToString(!0,b[0],b[1]),b[1]-b[0]),S=b[1]-1,y=C.getWidth()}var w=this._document.createElement("span");if(y>1&&(w.style.width=h*y+"px"),m&&(w.style.display="inline",a>=g&&a<=S&&(a=g)),!this._coreService.isCursorHidden&&i&&g===a)switch(w.classList.add(t.CURSOR_CLASS),c&&w.classList.add(t.CURSOR_BLINK_CLASS),n){case"bar":w.classList.add(t.CURSOR_STYLE_BAR_CLASS);break;case"underline":w.classList.add(t.CURSOR_STYLE_UNDERLINE_CLASS);break;default:w.classList.add(t.CURSOR_STYLE_BLOCK_CLASS)}C.isBold()&&w.classList.add(t.BOLD_CLASS),C.isItalic()&&w.classList.add(t.ITALIC_CLASS),C.isDim()&&w.classList.add(t.DIM_CLASS),C.isUnderline()&&w.classList.add(t.UNDERLINE_CLASS),C.isInvisible()?w.textContent=s.WHITESPACE_CELL_CHAR:w.textContent=C.getChars()||s.WHITESPACE_CELL_CHAR,C.isStrikethrough()&&w.classList.add(t.STRIKETHROUGH_CLASS);var L=C.getFgColor(),E=C.getFgColorMode(),x=C.getBgColor(),k=C.getBgColorMode(),M=!!C.isInverse();if(M){var A=L;L=x,x=A;var R=E;E=k,k=R}switch(E){case 16777216:case 33554432:C.isBold()&&L<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(L+=8),this._applyMinimumContrast(w,this._colors.background,this._colors.ansi[L])||w.classList.add("xterm-fg-"+L);break;case 50331648:var O=l.rgba.toColor(L>>16&255,L>>8&255,255&L);this._applyMinimumContrast(w,this._colors.background,O)||this._addStyle(w,"color:#"+_(L.toString(16),"0",6));break;default:this._applyMinimumContrast(w,this._colors.background,this._colors.foreground)||M&&w.classList.add("xterm-fg-"+o.INVERTED_DEFAULT_COLOR)}switch(k){case 16777216:case 33554432:w.classList.add("xterm-bg-"+x);break;case 50331648:this._addStyle(w,"background-color:#"+_(x.toString(16),"0",6));break;default:M&&w.classList.add("xterm-bg-"+o.INVERTED_DEFAULT_COLOR)}d.appendChild(w),g=S}}return d},e.prototype._applyMinimumContrast=function(e,t,r){if(1===this._optionsService.rawOptions.minimumContrastRatio)return!1;var i=this._colors.contrastCache.getColor(this._workCell.bg,this._workCell.fg);return void 0===i&&(i=l.color.ensureContrastRatio(t,r,this._optionsService.rawOptions.minimumContrastRatio),this._colors.contrastCache.setColor(this._workCell.bg,this._workCell.fg,null!=i?i:null)),!!i&&(this._addStyle(e,"color:"+i.css),!0)},e.prototype._addStyle=function(e,t){e.setAttribute("style",""+(e.getAttribute("style")||"")+t+";")},i([n(2,h.ICharacterJoinerService),n(3,c.IOptionsService),n(4,c.ICoreService)],e)}();function _(e,t,r){for(;e.length{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionModel=void 0;var r=function(){function e(e){this._bufferService=e,this.isSelectAllActive=!1,this.selectionStartLength=0}return e.prototype.clearSelection=function(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0},Object.defineProperty(e.prototype,"finalSelectionStart",{get:function(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"finalSelectionEnd",{get:function(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){var e=this.selectionStart[0]+this.selectionStartLength;return e>this._bufferService.cols?e%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)-1]:[e%this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)]:[e,this.selectionStart[1]]}return this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]?[Math.max(this.selectionStart[0]+this.selectionStartLength,this.selectionEnd[0]),this.selectionEnd[1]]:this.selectionEnd}},enumerable:!1,configurable:!0}),e.prototype.areSelectionValuesReversed=function(){var e=this.selectionStart,t=this.selectionEnd;return!(!e||!t)&&(e[1]>t[1]||e[1]===t[1]&&e[0]>t[0])},e.prototype.onTrim=function(e){return this.selectionStart&&(this.selectionStart[1]-=e),this.selectionEnd&&(this.selectionEnd[1]-=e),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)},e}();t.SelectionModel=r},428:function(e,t,r){var i=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},n=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CharSizeService=void 0;var o=r(2585),s=r(8460),a=function(){function e(e,t,r){this._optionsService=r,this.width=0,this.height=0,this._onCharSizeChange=new s.EventEmitter,this._measureStrategy=new c(e,t,this._optionsService)}return Object.defineProperty(e.prototype,"hasValidSize",{get:function(){return this.width>0&&this.height>0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onCharSizeChange",{get:function(){return this._onCharSizeChange.event},enumerable:!1,configurable:!0}),e.prototype.measure=function(){var e=this._measureStrategy.measure();e.width===this.width&&e.height===this.height||(this.width=e.width,this.height=e.height,this._onCharSizeChange.fire())},i([n(2,o.IOptionsService)],e)}();t.CharSizeService=a;var c=function(){function e(e,t,r){this._document=e,this._parentElement=t,this._optionsService=r,this._result={width:0,height:0},this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W",this._measureElement.setAttribute("aria-hidden","true"),this._parentElement.appendChild(this._measureElement)}return e.prototype.measure=function(){this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var e=this._measureElement.getBoundingClientRect();return 0!==e.width&&0!==e.height&&(this._result.width=e.width,this._result.height=Math.ceil(e.height)),this._result},e}()},4269:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CharacterJoinerService=t.JoinedCellData=void 0;var a=r(3734),c=r(643),l=r(511),h=r(2585),u=function(e){function t(t,r,i){var n=e.call(this)||this;return n.content=0,n.combinedData="",n.fg=t.fg,n.bg=t.bg,n.combinedData=r,n._width=i,n}return n(t,e),t.prototype.isCombined=function(){return 2097152},t.prototype.getWidth=function(){return this._width},t.prototype.getChars=function(){return this.combinedData},t.prototype.getCode=function(){return 2097151},t.prototype.setFromCharData=function(e){throw new Error("not implemented")},t.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},t}(a.AttributeData);t.JoinedCellData=u;var f=function(){function e(e){this._bufferService=e,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new l.CellData}return e.prototype.register=function(e){var t={id:this._nextCharacterJoinerId++,handler:e};return this._characterJoiners.push(t),t.id},e.prototype.deregister=function(e){for(var t=0;t1)for(var u=this._getJoinedRanges(i,s,o,t,n),f=0;f1)for(u=this._getJoinedRanges(i,s,o,t,n),f=0;f{Object.defineProperty(t,"__esModule",{value:!0}),t.CoreBrowserService=void 0;var r=function(){function e(e){this._textarea=e}return Object.defineProperty(e.prototype,"isFocused",{get:function(){return(this._textarea.getRootNode?this._textarea.getRootNode():document).activeElement===this._textarea&&document.hasFocus()},enumerable:!1,configurable:!0}),e}();t.CoreBrowserService=r},7641:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Decoration=t.DecorationService=void 0;var a=r(8460),c=r(844),l=r(2585),h=function(e){function t(t){var r=e.call(this)||this;return r._instantiationService=t,r._decorations=[],r}return n(t,e),t.prototype.attachToDom=function(e,t){var r=this;this._renderService=t,this._screenElement=e,this._container=document.createElement("div"),this._container.classList.add("xterm-decoration-container"),e.appendChild(this._container),this.register(this._renderService.onRenderedBufferChange((function(){return r.refresh()}))),this.register(this._renderService.onDimensionsChange((function(){return r.refresh(!0)})))},t.prototype.registerDecoration=function(e){var t=this;if(!e.marker.isDisposed&&this._container){var r=this._instantiationService.createInstance(u,e,this._container);return this._decorations.push(r),r.onDispose((function(){return t._decorations.splice(t._decorations.indexOf(r),1)})),this._queueRefresh(),r}},t.prototype._queueRefresh=function(){var e=this;void 0===this._animationFrame&&(this._animationFrame=window.requestAnimationFrame((function(){e.refresh(),e._animationFrame=void 0})))},t.prototype.refresh=function(e){if(this._renderService)for(var t=0,r=this._decorations;tthis._bufferService.cols&&(this._element.style.display="none"),"right"===this.anchor?this._element.style.right=this.x?this.x*e.dimensions.actualCellWidth+"px":"":this._element.style.left=this.x?this.x*e.dimensions.actualCellWidth+"px":""},t.prototype._refreshStyle=function(e){if(this._element){var t=this.marker.line-this._bufferService.buffers.active.ydisp;t<0||t>this._bufferService.rows?this._element.style.display="none":(this._element.style.top=t*e.dimensions.actualCellHeight+"px",this._element.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?"none":"block")}},t.prototype.dispose=function(){this.isDisposed||(this._element&&this._container.contains(this._element)&&this._container.removeChild(this._element),this.isDisposed=!0,this._onDispose.fire())},o([s(2,l.IBufferService)],t)}(c.Disposable);t.Decoration=u},8934:function(e,t,r){var i=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},n=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.MouseService=void 0;var o=r(4725),s=r(9806),a=function(){function e(e,t){this._renderService=e,this._charSizeService=t}return e.prototype.getCoords=function(e,t,r,i,n){return(0,s.getCoords)(e,t,r,i,this._charSizeService.hasValidSize,this._renderService.dimensions.actualCellWidth,this._renderService.dimensions.actualCellHeight,n)},e.prototype.getRawByteCoords=function(e,t,r,i){var n=this.getCoords(e,t,r,i);return(0,s.getRawByteCoords)(n)},i([n(0,o.IRenderService),n(1,o.ICharSizeService)],e)}();t.MouseService=a},3230:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.RenderService=void 0;var a=r(6193),c=r(8460),l=r(844),h=r(5596),u=r(3656),f=r(2585),_=r(4725),d=function(e){function t(t,r,i,n,o,s){var l=e.call(this)||this;if(l._renderer=t,l._rowCount=r,l._charSizeService=o,l._isPaused=!1,l._needsFullRefresh=!1,l._isNextRenderRedrawOnly=!0,l._needsSelectionRefresh=!1,l._canvasWidth=0,l._canvasHeight=0,l._selectionState={start:void 0,end:void 0,columnSelectMode:!1},l._onDimensionsChange=new c.EventEmitter,l._onRender=new c.EventEmitter,l._onRefreshRequest=new c.EventEmitter,l.register({dispose:function(){return l._renderer.dispose()}}),l._renderDebouncer=new a.RenderDebouncer((function(e,t){return l._renderRows(e,t)})),l.register(l._renderDebouncer),l._screenDprMonitor=new h.ScreenDprMonitor,l._screenDprMonitor.setListener((function(){return l.onDevicePixelRatioChange()})),l.register(l._screenDprMonitor),l.register(s.onResize((function(){return l._fullRefresh()}))),l.register(s.buffers.onBufferActivate((function(){var e;return null===(e=l._renderer)||void 0===e?void 0:e.clear()}))),l.register(n.onOptionChange((function(){return l._renderer.onOptionsChanged()}))),l.register(l._charSizeService.onCharSizeChange((function(){return l.onCharSizeChanged()}))),l._renderer.onRequestRedraw((function(e){return l.refreshRows(e.start,e.end,!0)})),l.register((0,u.addDisposableDomListener)(window,"resize",(function(){return l.onDevicePixelRatioChange()}))),"IntersectionObserver"in window){var f=new IntersectionObserver((function(e){return l._onIntersectionChange(e[e.length-1])}),{threshold:0});f.observe(i),l.register({dispose:function(){return f.disconnect()}})}return l}return n(t,e),Object.defineProperty(t.prototype,"onDimensionsChange",{get:function(){return this._onDimensionsChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRenderedBufferChange",{get:function(){return this._onRender.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRefreshRequest",{get:function(){return this._onRefreshRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dimensions",{get:function(){return this._renderer.dimensions},enumerable:!1,configurable:!0}),t.prototype._onIntersectionChange=function(e){this._isPaused=void 0===e.isIntersecting?0===e.intersectionRatio:!e.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)},t.prototype.refreshRows=function(e,t,r){void 0===r&&(r=!1),this._isPaused?this._needsFullRefresh=!0:(r||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(e,t,this._rowCount))},t.prototype._renderRows=function(e,t){this._renderer.renderRows(e,t),this._needsSelectionRefresh&&(this._renderer.onSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRender.fire({start:e,end:t}),this._isNextRenderRedrawOnly=!0},t.prototype.resize=function(e,t){this._rowCount=t,this._fireOnCanvasResize()},t.prototype.changeOptions=function(){this._renderer.onOptionsChanged(),this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize()},t.prototype._fireOnCanvasResize=function(){this._renderer.dimensions.canvasWidth===this._canvasWidth&&this._renderer.dimensions.canvasHeight===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.dimensions)},t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype.setRenderer=function(e){var t=this;this._renderer.dispose(),this._renderer=e,this._renderer.onRequestRedraw((function(e){return t.refreshRows(e.start,e.end,!0)})),this._needsSelectionRefresh=!0,this._fullRefresh()},t.prototype._fullRefresh=function(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)},t.prototype.clearTextureAtlas=function(){var e,t;null===(t=null===(e=this._renderer)||void 0===e?void 0:e.clearTextureAtlas)||void 0===t||t.call(e),this._fullRefresh()},t.prototype.setColors=function(e){this._renderer.setColors(e),this._fullRefresh()},t.prototype.onDevicePixelRatioChange=function(){this._charSizeService.measure(),this._renderer.onDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1)},t.prototype.onResize=function(e,t){this._renderer.onResize(e,t),this._fullRefresh()},t.prototype.onCharSizeChanged=function(){this._renderer.onCharSizeChanged()},t.prototype.onBlur=function(){this._renderer.onBlur()},t.prototype.onFocus=function(){this._renderer.onFocus()},t.prototype.onSelectionChanged=function(e,t,r){this._selectionState.start=e,this._selectionState.end=t,this._selectionState.columnSelectMode=r,this._renderer.onSelectionChanged(e,t,r)},t.prototype.onCursorMove=function(){this._renderer.onCursorMove()},t.prototype.clear=function(){this._renderer.clear()},o([s(3,f.IOptionsService),s(4,_.ICharSizeService),s(5,f.IBufferService)],t)}(l.Disposable);t.RenderService=d},9312:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionService=void 0;var a=r(6114),c=r(456),l=r(511),h=r(8460),u=r(4725),f=r(2585),_=r(9806),d=r(9504),p=r(844),v=r(4841),g=String.fromCharCode(160),y=new RegExp(g,"g"),m=function(e){function t(t,r,i,n,o,s,a,u){var f=e.call(this)||this;return f._element=t,f._screenElement=r,f._linkifier=i,f._bufferService=n,f._coreService=o,f._mouseService=s,f._optionsService=a,f._renderService=u,f._dragScrollAmount=0,f._enabled=!0,f._workCell=new l.CellData,f._mouseDownTimeStamp=0,f._oldHasSelection=!1,f._oldSelectionStart=void 0,f._oldSelectionEnd=void 0,f._onLinuxMouseSelection=f.register(new h.EventEmitter),f._onRedrawRequest=f.register(new h.EventEmitter),f._onSelectionChange=f.register(new h.EventEmitter),f._onRequestScrollLines=f.register(new h.EventEmitter),f._mouseMoveListener=function(e){return f._onMouseMove(e)},f._mouseUpListener=function(e){return f._onMouseUp(e)},f._coreService.onUserInput((function(){f.hasSelection&&f.clearSelection()})),f._trimListener=f._bufferService.buffer.lines.onTrim((function(e){return f._onTrim(e)})),f.register(f._bufferService.buffers.onBufferActivate((function(e){return f._onBufferActivate(e)}))),f.enable(),f._model=new c.SelectionModel(f._bufferService),f._activeSelectionMode=0,f}return n(t,e),Object.defineProperty(t.prototype,"onLinuxMouseSelection",{get:function(){return this._onLinuxMouseSelection.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestRedraw",{get:function(){return this._onRedrawRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestScrollLines",{get:function(){return this._onRequestScrollLines.event},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){this._removeMouseDownListeners()},t.prototype.reset=function(){this.clearSelection()},t.prototype.disable=function(){this.clearSelection(),this._enabled=!1},t.prototype.enable=function(){this._enabled=!0},Object.defineProperty(t.prototype,"selectionStart",{get:function(){return this._model.finalSelectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectionEnd",{get:function(){return this._model.finalSelectionEnd},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasSelection",{get:function(){var e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;return!(!e||!t||e[0]===t[0]&&e[1]===t[1])},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectionText",{get:function(){var e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;if(!e||!t)return"";var r=this._bufferService.buffer,i=[];if(3===this._activeSelectionMode){if(e[0]===t[0])return"";for(var n=e[1];n<=t[1];n++){var o=r.translateBufferLineToString(n,!0,e[0],t[0]);i.push(o)}}else{var s=e[1]===t[1]?t[0]:void 0;for(i.push(r.translateBufferLineToString(e[1],!0,e[0],s)),n=e[1]+1;n<=t[1]-1;n++){var c=r.lines.get(n);o=r.translateBufferLineToString(n,!0),(null==c?void 0:c.isWrapped)?i[i.length-1]+=o:i.push(o)}e[1]!==t[1]&&(c=r.lines.get(t[1]),o=r.translateBufferLineToString(t[1],!0,0,t[0]),c&&c.isWrapped?i[i.length-1]+=o:i.push(o))}return i.map((function(e){return e.replace(y," ")})).join(a.isWindows?"\r\n":"\n")},enumerable:!1,configurable:!0}),t.prototype.clearSelection=function(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()},t.prototype.refresh=function(e){var t=this;this._refreshAnimationFrame||(this._refreshAnimationFrame=window.requestAnimationFrame((function(){return t._refresh()}))),a.isLinux&&e&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)},t.prototype._refresh=function(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:3===this._activeSelectionMode})},t.prototype._isClickInSelection=function(e){var t=this._getMouseBufferCoords(e),r=this._model.finalSelectionStart,i=this._model.finalSelectionEnd;return!!(r&&i&&t)&&this._areCoordsInSelection(t,r,i)},t.prototype._areCoordsInSelection=function(e,t,r){return e[1]>t[1]&&e[1]=t[0]&&e[0]=t[0]},t.prototype._selectWordAtCursor=function(e,t){var r,i,n=null===(i=null===(r=this._linkifier.currentLink)||void 0===r?void 0:r.link)||void 0===i?void 0:i.range;if(n)return this._model.selectionStart=[n.start.x-1,n.start.y-1],this._model.selectionStartLength=(0,v.getRangeLength)(n,this._bufferService.cols),this._model.selectionEnd=void 0,!0;var o=this._getMouseBufferCoords(e);return!!o&&(this._selectWordAt(o,t),this._model.selectionEnd=void 0,!0)},t.prototype.selectAll=function(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()},t.prototype.selectLines=function(e,t){this._model.clearSelection(),e=Math.max(e,0),t=Math.min(t,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,e],this._model.selectionEnd=[this._bufferService.cols,t],this.refresh(),this._onSelectionChange.fire()},t.prototype._onTrim=function(e){this._model.onTrim(e)&&this.refresh()},t.prototype._getMouseBufferCoords=function(e){var t=this._mouseService.getCoords(e,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(t)return t[0]--,t[1]--,t[1]+=this._bufferService.buffer.ydisp,t},t.prototype._getMouseEventScrollAmount=function(e){var t=(0,_.getCoordsRelativeToElement)(e,this._screenElement)[1],r=this._renderService.dimensions.canvasHeight;return t>=0&&t<=r?0:(t>r&&(t-=r),t=Math.min(Math.max(t,-50),50),(t/=50)/Math.abs(t)+Math.round(14*t))},t.prototype.shouldForceSelection=function(e){return a.isMac?e.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:e.shiftKey},t.prototype.onMouseDown=function(e){if(this._mouseDownTimeStamp=e.timeStamp,(2!==e.button||!this.hasSelection)&&0===e.button){if(!this._enabled){if(!this.shouldForceSelection(e))return;e.stopPropagation()}e.preventDefault(),this._dragScrollAmount=0,this._enabled&&e.shiftKey?this._onIncrementalClick(e):1===e.detail?this._onSingleClick(e):2===e.detail?this._onDoubleClick(e):3===e.detail&&this._onTripleClick(e),this._addMouseDownListeners(),this.refresh(!0)}},t.prototype._addMouseDownListeners=function(){var e=this;this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=window.setInterval((function(){return e._dragScroll()}),50)},t.prototype._removeMouseDownListeners=function(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0},t.prototype._onIncrementalClick=function(e){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(e))},t.prototype._onSingleClick=function(e){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(e)?3:0,this._model.selectionStart=this._getMouseBufferCoords(e),this._model.selectionStart){this._model.selectionEnd=void 0;var t=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);t&&t.length!==this._model.selectionStart[0]&&0===t.hasWidth(this._model.selectionStart[0])&&this._model.selectionStart[0]++}},t.prototype._onDoubleClick=function(e){this._selectWordAtCursor(e,!0)&&(this._activeSelectionMode=1)},t.prototype._onTripleClick=function(e){var t=this._getMouseBufferCoords(e);t&&(this._activeSelectionMode=2,this._selectLineAt(t[1]))},t.prototype.shouldColumnSelect=function(e){return e.altKey&&!(a.isMac&&this._optionsService.rawOptions.macOptionClickForcesSelection)},t.prototype._onMouseMove=function(e){if(e.stopImmediatePropagation(),this._model.selectionStart){var t=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(e),this._model.selectionEnd){2===this._activeSelectionMode?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));var r=this._bufferService.buffer;if(this._model.selectionEnd[1]0?(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(e.ydisp+this._bufferService.rows,e.lines.length-1)):(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=e.ydisp),this.refresh()}},t.prototype._onMouseUp=function(e){var t=e.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&t<500&&e.altKey&&this._optionsService.getOption("altClickMovesCursor")){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){var r=this._mouseService.getCoords(e,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(r&&void 0!==r[0]&&void 0!==r[1]){var i=(0,d.moveToCellSequence)(r[0]-1,r[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(i,!0)}}}else this._fireEventIfSelectionChanged()},t.prototype._fireEventIfSelectionChanged=function(){var e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd,r=!(!e||!t||e[0]===t[0]&&e[1]===t[1]);r?e&&t&&(this._oldSelectionStart&&this._oldSelectionEnd&&e[0]===this._oldSelectionStart[0]&&e[1]===this._oldSelectionStart[1]&&t[0]===this._oldSelectionEnd[0]&&t[1]===this._oldSelectionEnd[1]||this._fireOnSelectionChange(e,t,r)):this._oldHasSelection&&this._fireOnSelectionChange(e,t,r)},t.prototype._fireOnSelectionChange=function(e,t,r){this._oldSelectionStart=e,this._oldSelectionEnd=t,this._oldHasSelection=r,this._onSelectionChange.fire()},t.prototype._onBufferActivate=function(e){var t=this;this.clearSelection(),this._trimListener.dispose(),this._trimListener=e.activeBuffer.lines.onTrim((function(e){return t._onTrim(e)}))},t.prototype._convertViewportColToCharacterIndex=function(e,t){for(var r=t[0],i=0;t[0]>=i;i++){var n=e.loadCell(i,this._workCell).getChars().length;0===this._workCell.getWidth()?r--:n>1&&t[0]!==i&&(r+=n-1)}return r},t.prototype.setSelection=function(e,t,r){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[e,t],this._model.selectionStartLength=r,this.refresh()},t.prototype.rightClickSelect=function(e){this._isClickInSelection(e)||(this._selectWordAtCursor(e,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())},t.prototype._getWordAt=function(e,t,r,i){if(void 0===r&&(r=!0),void 0===i&&(i=!0),!(e[0]>=this._bufferService.cols)){var n=this._bufferService.buffer,o=n.lines.get(e[1]);if(o){var s=n.translateBufferLineToString(e[1],!1),a=this._convertViewportColToCharacterIndex(o,e),c=a,l=e[0]-a,h=0,u=0,f=0,_=0;if(" "===s.charAt(a)){for(;a>0&&" "===s.charAt(a-1);)a--;for(;c1&&(_+=v-1,c+=v-1);d>0&&a>0&&!this._isCharWordSeparator(o.loadCell(d-1,this._workCell));){o.loadCell(d-1,this._workCell);var g=this._workCell.getChars().length;0===this._workCell.getWidth()?(h++,d--):g>1&&(f+=g-1,a-=g-1),a--,d--}for(;p1&&(_+=y-1,c+=y-1),c++,p++}}c++;var m=a+l-h+f,S=Math.min(this._bufferService.cols,c-a+h+u-f-_);if(t||""!==s.slice(a,c).trim()){if(r&&0===m&&32!==o.getCodePoint(0)){var C=n.lines.get(e[1]-1);if(C&&o.isWrapped&&32!==C.getCodePoint(this._bufferService.cols-1)){var b=this._getWordAt([this._bufferService.cols-1,e[1]-1],!1,!0,!1);if(b){var w=this._bufferService.cols-b.start;m-=w,S+=w}}}if(i&&m+S===this._bufferService.cols&&32!==o.getCodePoint(this._bufferService.cols-1)){var L=n.lines.get(e[1]+1);if((null==L?void 0:L.isWrapped)&&32!==L.getCodePoint(0)){var E=this._getWordAt([0,e[1]+1],!1,!1,!0);E&&(S+=E.length)}}return{start:m,length:S}}}}},t.prototype._selectWordAt=function(e,t){var r=this._getWordAt(e,t);if(r){for(;r.start<0;)r.start+=this._bufferService.cols,e[1]--;this._model.selectionStart=[r.start,e[1]],this._model.selectionStartLength=r.length}},t.prototype._selectToWordAt=function(e){var t=this._getWordAt(e,!0);if(t){for(var r=e[1];t.start<0;)t.start+=this._bufferService.cols,r--;if(!this._model.areSelectionValuesReversed())for(;t.start+t.length>this._bufferService.cols;)t.length-=this._bufferService.cols,r++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?t.start:t.start+t.length,r]}},t.prototype._isCharWordSeparator=function(e){return 0!==e.getWidth()&&this._optionsService.rawOptions.wordSeparator.indexOf(e.getChars())>=0},t.prototype._selectLineAt=function(e){var t=this._bufferService.buffer.getWrappedRangeForLine(e);this._model.selectionStart=[0,t.first],this._model.selectionEnd=[this._bufferService.cols,t.last],this._model.selectionStartLength=0},o([s(3,f.IBufferService),s(4,f.ICoreService),s(5,u.IMouseService),s(6,f.IOptionsService),s(7,u.IRenderService)],t)}(p.Disposable);t.SelectionService=m},4725:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.IDecorationService=t.ICharacterJoinerService=t.ISoundService=t.ISelectionService=t.IRenderService=t.IMouseService=t.ICoreBrowserService=t.ICharSizeService=void 0;var i=r(8343);t.ICharSizeService=(0,i.createDecorator)("CharSizeService"),t.ICoreBrowserService=(0,i.createDecorator)("CoreBrowserService"),t.IMouseService=(0,i.createDecorator)("MouseService"),t.IRenderService=(0,i.createDecorator)("RenderService"),t.ISelectionService=(0,i.createDecorator)("SelectionService"),t.ISoundService=(0,i.createDecorator)("SoundService"),t.ICharacterJoinerService=(0,i.createDecorator)("CharacterJoinerService"),t.IDecorationService=(0,i.createDecorator)("DecorationService")},357:function(e,t,r){var i=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},n=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.SoundService=void 0;var o=r(2585),s=function(){function e(e){this._optionsService=e}return Object.defineProperty(e,"audioContext",{get:function(){if(!e._audioContext){var t=window.AudioContext||window.webkitAudioContext;if(!t)return console.warn("Web Audio API is not supported by this browser. Consider upgrading to the latest version"),null;e._audioContext=new t}return e._audioContext},enumerable:!1,configurable:!0}),e.prototype.playBellSound=function(){var t=e.audioContext;if(t){var r=t.createBufferSource();t.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._optionsService.rawOptions.bellSound)),(function(e){r.buffer=e,r.connect(t.destination),r.start(0)}))}},e.prototype._base64ToArrayBuffer=function(e){for(var t=window.atob(e),r=t.length,i=new Uint8Array(r),n=0;n{Object.defineProperty(t,"__esModule",{value:!0}),t.CircularList=void 0;var i=r(8460),n=function(){function e(e){this._maxLength=e,this.onDeleteEmitter=new i.EventEmitter,this.onInsertEmitter=new i.EventEmitter,this.onTrimEmitter=new i.EventEmitter,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}return Object.defineProperty(e.prototype,"onDelete",{get:function(){return this.onDeleteEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onInsert",{get:function(){return this.onInsertEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onTrim",{get:function(){return this.onTrimEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxLength",{get:function(){return this._maxLength},set:function(e){if(this._maxLength!==e){for(var t=new Array(e),r=0;rthis._length)for(var t=this._length;t=e;n--)this._array[this._getCyclicIndex(n+r.length)]=this._array[this._getCyclicIndex(n)];for(n=0;nthis._maxLength){var o=this._length+r.length-this._maxLength;this._startIndex+=o,this._length=this._maxLength,this.onTrimEmitter.fire(o)}else this._length+=r.length},e.prototype.trimStart=function(e){e>this._length&&(e=this._length),this._startIndex+=e,this._length-=e,this.onTrimEmitter.fire(e)},e.prototype.shiftElements=function(e,t,r){if(!(t<=0)){if(e<0||e>=this._length)throw new Error("start argument out of range");if(e+r<0)throw new Error("Cannot shift elements in list beyond index 0");if(r>0){for(var i=t-1;i>=0;i--)this.set(e+i+r,this.get(e+i));var n=e+t+r-this._length;if(n>0)for(this._length+=n;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(i=0;i{Object.defineProperty(t,"__esModule",{value:!0}),t.clone=void 0,t.clone=function e(t,r){if(void 0===r&&(r=5),"object"!=typeof t)return t;var i=Array.isArray(t)?[]:{};for(var n in t)i[n]=r<=1?t[n]:t[n]&&e(t[n],r-1);return i}},8969:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.CoreTerminal=void 0;var o=r(844),s=r(2585),a=r(4348),c=r(7866),l=r(744),h=r(7302),u=r(6975),f=r(8460),_=r(1753),d=r(3730),p=r(1480),v=r(7994),g=r(9282),y=r(5435),m=r(5981),S=!1,C=function(e){function t(t){var r=e.call(this)||this;return r._onBinary=new f.EventEmitter,r._onData=new f.EventEmitter,r._onLineFeed=new f.EventEmitter,r._onResize=new f.EventEmitter,r._onScroll=new f.EventEmitter,r._instantiationService=new a.InstantiationService,r.optionsService=new h.OptionsService(t),r._instantiationService.setService(s.IOptionsService,r.optionsService),r._bufferService=r.register(r._instantiationService.createInstance(l.BufferService)),r._instantiationService.setService(s.IBufferService,r._bufferService),r._logService=r._instantiationService.createInstance(c.LogService),r._instantiationService.setService(s.ILogService,r._logService),r.coreService=r.register(r._instantiationService.createInstance(u.CoreService,(function(){return r.scrollToBottom()}))),r._instantiationService.setService(s.ICoreService,r.coreService),r.coreMouseService=r._instantiationService.createInstance(_.CoreMouseService),r._instantiationService.setService(s.ICoreMouseService,r.coreMouseService),r._dirtyRowService=r._instantiationService.createInstance(d.DirtyRowService),r._instantiationService.setService(s.IDirtyRowService,r._dirtyRowService),r.unicodeService=r._instantiationService.createInstance(p.UnicodeService),r._instantiationService.setService(s.IUnicodeService,r.unicodeService),r._charsetService=r._instantiationService.createInstance(v.CharsetService),r._instantiationService.setService(s.ICharsetService,r._charsetService),r._inputHandler=new y.InputHandler(r._bufferService,r._charsetService,r.coreService,r._dirtyRowService,r._logService,r.optionsService,r.coreMouseService,r.unicodeService),r.register((0,f.forwardEvent)(r._inputHandler.onLineFeed,r._onLineFeed)),r.register(r._inputHandler),r.register((0,f.forwardEvent)(r._bufferService.onResize,r._onResize)),r.register((0,f.forwardEvent)(r.coreService.onData,r._onData)),r.register((0,f.forwardEvent)(r.coreService.onBinary,r._onBinary)),r.register(r.optionsService.onOptionChange((function(e){return r._updateOptions(e)}))),r.register(r._bufferService.onScroll((function(e){r._onScroll.fire({position:r._bufferService.buffer.ydisp,source:0}),r._dirtyRowService.markRangeDirty(r._bufferService.buffer.scrollTop,r._bufferService.buffer.scrollBottom)}))),r.register(r._inputHandler.onScroll((function(e){r._onScroll.fire({position:r._bufferService.buffer.ydisp,source:0}),r._dirtyRowService.markRangeDirty(r._bufferService.buffer.scrollTop,r._bufferService.buffer.scrollBottom)}))),r._writeBuffer=new m.WriteBuffer((function(e,t){return r._inputHandler.parse(e,t)})),r}return n(t,e),Object.defineProperty(t.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onScroll",{get:function(){var e=this;return this._onScrollApi||(this._onScrollApi=new f.EventEmitter,this.register(this._onScroll.event((function(t){var r;null===(r=e._onScrollApi)||void 0===r||r.fire(t.position)})))),this._onScrollApi.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"cols",{get:function(){return this._bufferService.cols},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rows",{get:function(){return this._bufferService.rows},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buffers",{get:function(){return this._bufferService.buffers},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"options",{get:function(){return this.optionsService.options},set:function(e){for(var t in e)this.optionsService.options[t]=e[t]},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){var t;this._isDisposed||(e.prototype.dispose.call(this),null===(t=this._windowsMode)||void 0===t||t.dispose(),this._windowsMode=void 0)},t.prototype.write=function(e,t){this._writeBuffer.write(e,t)},t.prototype.writeSync=function(e,t){this._logService.logLevel<=s.LogLevelEnum.WARN&&!S&&(this._logService.warn("writeSync is unreliable and will be removed soon."),S=!0),this._writeBuffer.writeSync(e,t)},t.prototype.resize=function(e,t){isNaN(e)||isNaN(t)||(e=Math.max(e,l.MINIMUM_COLS),t=Math.max(t,l.MINIMUM_ROWS),this._bufferService.resize(e,t))},t.prototype.scroll=function(e,t){void 0===t&&(t=!1),this._bufferService.scroll(e,t)},t.prototype.scrollLines=function(e,t,r){this._bufferService.scrollLines(e,t,r)},t.prototype.scrollPages=function(e){this._bufferService.scrollPages(e)},t.prototype.scrollToTop=function(){this._bufferService.scrollToTop()},t.prototype.scrollToBottom=function(){this._bufferService.scrollToBottom()},t.prototype.scrollToLine=function(e){this._bufferService.scrollToLine(e)},t.prototype.registerEscHandler=function(e,t){return this._inputHandler.registerEscHandler(e,t)},t.prototype.registerDcsHandler=function(e,t){return this._inputHandler.registerDcsHandler(e,t)},t.prototype.registerCsiHandler=function(e,t){return this._inputHandler.registerCsiHandler(e,t)},t.prototype.registerOscHandler=function(e,t){return this._inputHandler.registerOscHandler(e,t)},t.prototype._setup=function(){this.optionsService.rawOptions.windowsMode&&this._enableWindowsMode()},t.prototype.reset=function(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()},t.prototype._updateOptions=function(e){var t;switch(e){case"scrollback":this.buffers.resize(this.cols,this.rows);break;case"windowsMode":this.optionsService.rawOptions.windowsMode?this._enableWindowsMode():(null===(t=this._windowsMode)||void 0===t||t.dispose(),this._windowsMode=void 0)}},t.prototype._enableWindowsMode=function(){var e=this;if(!this._windowsMode){var t=[];t.push(this.onLineFeed(g.updateWindowsModeWrappedState.bind(null,this._bufferService))),t.push(this.registerCsiHandler({final:"H"},(function(){return(0,g.updateWindowsModeWrappedState)(e._bufferService),!1}))),this._windowsMode={dispose:function(){for(var e=0,r=t;e{Object.defineProperty(t,"__esModule",{value:!0}),t.forwardEvent=t.EventEmitter=void 0;var r=function(){function e(){this._listeners=[],this._disposed=!1}return Object.defineProperty(e.prototype,"event",{get:function(){var e=this;return this._event||(this._event=function(t){return e._listeners.push(t),{dispose:function(){if(!e._disposed)for(var r=0;r24)return t.setWinLines||!1;switch(e){case 1:return!!t.restoreWin;case 2:return!!t.minimizeWin;case 3:return!!t.setWinPosition;case 4:return!!t.setWinSizePixels;case 5:return!!t.raiseWin;case 6:return!!t.lowerWin;case 7:return!!t.refreshWin;case 8:return!!t.setWinSizeChars;case 9:return!!t.maximizeWin;case 10:return!!t.fullscreenWin;case 11:return!!t.getWinState;case 13:return!!t.getWinPosition;case 14:return!!t.getWinSizePixels;case 15:return!!t.getScreenSizePixels;case 16:return!!t.getCellSizePixels;case 18:return!!t.getWinSizeChars;case 19:return!!t.getScreenSizeChars;case 20:return!!t.getIconTitle;case 21:return!!t.getWinTitle;case 22:return!!t.pushTitle;case 23:return!!t.popTitle;case 24:return!!t.setWinLines}return!1}!function(e){e[e.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",e[e.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"}(o=t.WindowsOptionsReportType||(t.WindowsOptionsReportType={}));var L=function(){function e(e,t,r,i){this._bufferService=e,this._coreService=t,this._logService=r,this._optionsService=i,this._data=new Uint32Array(0)}return e.prototype.hook=function(e){this._data=new Uint32Array(0)},e.prototype.put=function(e,t,r){this._data=(0,h.concat)(this._data,e.subarray(t,r))},e.prototype.unhook=function(e){if(!e)return this._data=new Uint32Array(0),!0;var t=(0,u.utf32ToString)(this._data);switch(this._data=new Uint32Array(0),t){case'"q':this._coreService.triggerDataEvent(s.C0.ESC+'P1$r0"q'+s.C0.ESC+"\\");break;case'"p':this._coreService.triggerDataEvent(s.C0.ESC+'P1$r61;1"p'+s.C0.ESC+"\\");break;case"r":var r=this._bufferService.buffer.scrollTop+1+";"+(this._bufferService.buffer.scrollBottom+1)+"r";this._coreService.triggerDataEvent(s.C0.ESC+"P1$r"+r+s.C0.ESC+"\\");break;case"m":this._coreService.triggerDataEvent(s.C0.ESC+"P1$r0m"+s.C0.ESC+"\\");break;case" q":var i={block:2,underline:4,bar:6}[this._optionsService.rawOptions.cursorStyle];i-=this._optionsService.rawOptions.cursorBlink?1:0,this._coreService.triggerDataEvent(s.C0.ESC+"P1$r"+i+" q"+s.C0.ESC+"\\");break;default:this._logService.debug("Unknown DCS $q %s",t),this._coreService.triggerDataEvent(s.C0.ESC+"P0$r"+s.C0.ESC+"\\")}return!0},e}(),E=function(e){function t(t,r,i,n,o,l,h,d,v){void 0===v&&(v=new c.EscapeSequenceParser);var g=e.call(this)||this;g._bufferService=t,g._charsetService=r,g._coreService=i,g._dirtyRowService=n,g._logService=o,g._optionsService=l,g._coreMouseService=h,g._unicodeService=d,g._parser=v,g._parseBuffer=new Uint32Array(4096),g._stringDecoder=new u.StringToUtf32,g._utf8Decoder=new u.Utf8ToUtf32,g._workCell=new p.CellData,g._windowTitle="",g._iconName="",g._windowTitleStack=[],g._iconNameStack=[],g._curAttrData=f.DEFAULT_ATTR_DATA.clone(),g._eraseAttrDataInternal=f.DEFAULT_ATTR_DATA.clone(),g._onRequestBell=new _.EventEmitter,g._onRequestRefreshRows=new _.EventEmitter,g._onRequestReset=new _.EventEmitter,g._onRequestSendFocus=new _.EventEmitter,g._onRequestSyncScrollBar=new _.EventEmitter,g._onRequestWindowsOptionsReport=new _.EventEmitter,g._onA11yChar=new _.EventEmitter,g._onA11yTab=new _.EventEmitter,g._onCursorMove=new _.EventEmitter,g._onLineFeed=new _.EventEmitter,g._onScroll=new _.EventEmitter,g._onTitleChange=new _.EventEmitter,g._onColor=new _.EventEmitter,g._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},g._specialColors=[256,257,258],g.register(g._parser),g._activeBuffer=g._bufferService.buffer,g.register(g._bufferService.buffers.onBufferActivate((function(e){return g._activeBuffer=e.activeBuffer}))),g._parser.setCsiHandlerFallback((function(e,t){g._logService.debug("Unknown CSI code: ",{identifier:g._parser.identToString(e),params:t.toArray()})})),g._parser.setEscHandlerFallback((function(e){g._logService.debug("Unknown ESC code: ",{identifier:g._parser.identToString(e)})})),g._parser.setExecuteHandlerFallback((function(e){g._logService.debug("Unknown EXECUTE code: ",{code:e})})),g._parser.setOscHandlerFallback((function(e,t,r){g._logService.debug("Unknown OSC code: ",{identifier:e,action:t,data:r})})),g._parser.setDcsHandlerFallback((function(e,t,r){"HOOK"===t&&(r=r.toArray()),g._logService.debug("Unknown DCS code: ",{identifier:g._parser.identToString(e),action:t,payload:r})})),g._parser.setPrintHandler((function(e,t,r){return g.print(e,t,r)})),g._parser.registerCsiHandler({final:"@"},(function(e){return g.insertChars(e)})),g._parser.registerCsiHandler({intermediates:" ",final:"@"},(function(e){return g.scrollLeft(e)})),g._parser.registerCsiHandler({final:"A"},(function(e){return g.cursorUp(e)})),g._parser.registerCsiHandler({intermediates:" ",final:"A"},(function(e){return g.scrollRight(e)})),g._parser.registerCsiHandler({final:"B"},(function(e){return g.cursorDown(e)})),g._parser.registerCsiHandler({final:"C"},(function(e){return g.cursorForward(e)})),g._parser.registerCsiHandler({final:"D"},(function(e){return g.cursorBackward(e)})),g._parser.registerCsiHandler({final:"E"},(function(e){return g.cursorNextLine(e)})),g._parser.registerCsiHandler({final:"F"},(function(e){return g.cursorPrecedingLine(e)})),g._parser.registerCsiHandler({final:"G"},(function(e){return g.cursorCharAbsolute(e)})),g._parser.registerCsiHandler({final:"H"},(function(e){return g.cursorPosition(e)})),g._parser.registerCsiHandler({final:"I"},(function(e){return g.cursorForwardTab(e)})),g._parser.registerCsiHandler({final:"J"},(function(e){return g.eraseInDisplay(e)})),g._parser.registerCsiHandler({prefix:"?",final:"J"},(function(e){return g.eraseInDisplay(e)})),g._parser.registerCsiHandler({final:"K"},(function(e){return g.eraseInLine(e)})),g._parser.registerCsiHandler({prefix:"?",final:"K"},(function(e){return g.eraseInLine(e)})),g._parser.registerCsiHandler({final:"L"},(function(e){return g.insertLines(e)})),g._parser.registerCsiHandler({final:"M"},(function(e){return g.deleteLines(e)})),g._parser.registerCsiHandler({final:"P"},(function(e){return g.deleteChars(e)})),g._parser.registerCsiHandler({final:"S"},(function(e){return g.scrollUp(e)})),g._parser.registerCsiHandler({final:"T"},(function(e){return g.scrollDown(e)})),g._parser.registerCsiHandler({final:"X"},(function(e){return g.eraseChars(e)})),g._parser.registerCsiHandler({final:"Z"},(function(e){return g.cursorBackwardTab(e)})),g._parser.registerCsiHandler({final:"`"},(function(e){return g.charPosAbsolute(e)})),g._parser.registerCsiHandler({final:"a"},(function(e){return g.hPositionRelative(e)})),g._parser.registerCsiHandler({final:"b"},(function(e){return g.repeatPrecedingCharacter(e)})),g._parser.registerCsiHandler({final:"c"},(function(e){return g.sendDeviceAttributesPrimary(e)})),g._parser.registerCsiHandler({prefix:">",final:"c"},(function(e){return g.sendDeviceAttributesSecondary(e)})),g._parser.registerCsiHandler({final:"d"},(function(e){return g.linePosAbsolute(e)})),g._parser.registerCsiHandler({final:"e"},(function(e){return g.vPositionRelative(e)})),g._parser.registerCsiHandler({final:"f"},(function(e){return g.hVPosition(e)})),g._parser.registerCsiHandler({final:"g"},(function(e){return g.tabClear(e)})),g._parser.registerCsiHandler({final:"h"},(function(e){return g.setMode(e)})),g._parser.registerCsiHandler({prefix:"?",final:"h"},(function(e){return g.setModePrivate(e)})),g._parser.registerCsiHandler({final:"l"},(function(e){return g.resetMode(e)})),g._parser.registerCsiHandler({prefix:"?",final:"l"},(function(e){return g.resetModePrivate(e)})),g._parser.registerCsiHandler({final:"m"},(function(e){return g.charAttributes(e)})),g._parser.registerCsiHandler({final:"n"},(function(e){return g.deviceStatus(e)})),g._parser.registerCsiHandler({prefix:"?",final:"n"},(function(e){return g.deviceStatusPrivate(e)})),g._parser.registerCsiHandler({intermediates:"!",final:"p"},(function(e){return g.softReset(e)})),g._parser.registerCsiHandler({intermediates:" ",final:"q"},(function(e){return g.setCursorStyle(e)})),g._parser.registerCsiHandler({final:"r"},(function(e){return g.setScrollRegion(e)})),g._parser.registerCsiHandler({final:"s"},(function(e){return g.saveCursor(e)})),g._parser.registerCsiHandler({final:"t"},(function(e){return g.windowOptions(e)})),g._parser.registerCsiHandler({final:"u"},(function(e){return g.restoreCursor(e)})),g._parser.registerCsiHandler({intermediates:"'",final:"}"},(function(e){return g.insertColumns(e)})),g._parser.registerCsiHandler({intermediates:"'",final:"~"},(function(e){return g.deleteColumns(e)})),g._parser.setExecuteHandler(s.C0.BEL,(function(){return g.bell()})),g._parser.setExecuteHandler(s.C0.LF,(function(){return g.lineFeed()})),g._parser.setExecuteHandler(s.C0.VT,(function(){return g.lineFeed()})),g._parser.setExecuteHandler(s.C0.FF,(function(){return g.lineFeed()})),g._parser.setExecuteHandler(s.C0.CR,(function(){return g.carriageReturn()})),g._parser.setExecuteHandler(s.C0.BS,(function(){return g.backspace()})),g._parser.setExecuteHandler(s.C0.HT,(function(){return g.tab()})),g._parser.setExecuteHandler(s.C0.SO,(function(){return g.shiftOut()})),g._parser.setExecuteHandler(s.C0.SI,(function(){return g.shiftIn()})),g._parser.setExecuteHandler(s.C1.IND,(function(){return g.index()})),g._parser.setExecuteHandler(s.C1.NEL,(function(){return g.nextLine()})),g._parser.setExecuteHandler(s.C1.HTS,(function(){return g.tabSet()})),g._parser.registerOscHandler(0,new y.OscHandler((function(e){return g.setTitle(e),g.setIconName(e),!0}))),g._parser.registerOscHandler(1,new y.OscHandler((function(e){return g.setIconName(e)}))),g._parser.registerOscHandler(2,new y.OscHandler((function(e){return g.setTitle(e)}))),g._parser.registerOscHandler(4,new y.OscHandler((function(e){return g.setOrReportIndexedColor(e)}))),g._parser.registerOscHandler(10,new y.OscHandler((function(e){return g.setOrReportFgColor(e)}))),g._parser.registerOscHandler(11,new y.OscHandler((function(e){return g.setOrReportBgColor(e)}))),g._parser.registerOscHandler(12,new y.OscHandler((function(e){return g.setOrReportCursorColor(e)}))),g._parser.registerOscHandler(104,new y.OscHandler((function(e){return g.restoreIndexedColor(e)}))),g._parser.registerOscHandler(110,new y.OscHandler((function(e){return g.restoreFgColor(e)}))),g._parser.registerOscHandler(111,new y.OscHandler((function(e){return g.restoreBgColor(e)}))),g._parser.registerOscHandler(112,new y.OscHandler((function(e){return g.restoreCursorColor(e)}))),g._parser.registerEscHandler({final:"7"},(function(){return g.saveCursor()})),g._parser.registerEscHandler({final:"8"},(function(){return g.restoreCursor()})),g._parser.registerEscHandler({final:"D"},(function(){return g.index()})),g._parser.registerEscHandler({final:"E"},(function(){return g.nextLine()})),g._parser.registerEscHandler({final:"H"},(function(){return g.tabSet()})),g._parser.registerEscHandler({final:"M"},(function(){return g.reverseIndex()})),g._parser.registerEscHandler({final:"="},(function(){return g.keypadApplicationMode()})),g._parser.registerEscHandler({final:">"},(function(){return g.keypadNumericMode()})),g._parser.registerEscHandler({final:"c"},(function(){return g.fullReset()})),g._parser.registerEscHandler({final:"n"},(function(){return g.setgLevel(2)})),g._parser.registerEscHandler({final:"o"},(function(){return g.setgLevel(3)})),g._parser.registerEscHandler({final:"|"},(function(){return g.setgLevel(3)})),g._parser.registerEscHandler({final:"}"},(function(){return g.setgLevel(2)})),g._parser.registerEscHandler({final:"~"},(function(){return g.setgLevel(1)})),g._parser.registerEscHandler({intermediates:"%",final:"@"},(function(){return g.selectDefaultCharset()})),g._parser.registerEscHandler({intermediates:"%",final:"G"},(function(){return g.selectDefaultCharset()}));var m=function(e){S._parser.registerEscHandler({intermediates:"(",final:e},(function(){return g.selectCharset("("+e)})),S._parser.registerEscHandler({intermediates:")",final:e},(function(){return g.selectCharset(")"+e)})),S._parser.registerEscHandler({intermediates:"*",final:e},(function(){return g.selectCharset("*"+e)})),S._parser.registerEscHandler({intermediates:"+",final:e},(function(){return g.selectCharset("+"+e)})),S._parser.registerEscHandler({intermediates:"-",final:e},(function(){return g.selectCharset("-"+e)})),S._parser.registerEscHandler({intermediates:".",final:e},(function(){return g.selectCharset("."+e)})),S._parser.registerEscHandler({intermediates:"/",final:e},(function(){return g.selectCharset("/"+e)}))},S=this;for(var C in a.CHARSETS)m(C);return g._parser.registerEscHandler({intermediates:"#",final:"8"},(function(){return g.screenAlignmentPattern()})),g._parser.setErrorHandler((function(e){return g._logService.error("Parsing error: ",e),e})),g._parser.registerDcsHandler({intermediates:"$",final:"q"},new L(g._bufferService,g._coreService,g._logService,g._optionsService)),g}return n(t,e),Object.defineProperty(t.prototype,"onRequestBell",{get:function(){return this._onRequestBell.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestRefreshRows",{get:function(){return this._onRequestRefreshRows.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestReset",{get:function(){return this._onRequestReset.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestSendFocus",{get:function(){return this._onRequestSendFocus.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestSyncScrollBar",{get:function(){return this._onRequestSyncScrollBar.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestWindowsOptionsReport",{get:function(){return this._onRequestWindowsOptionsReport.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onA11yChar",{get:function(){return this._onA11yChar.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onA11yTab",{get:function(){return this._onA11yTab.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onColor",{get:function(){return this._onColor.event},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype._preserveStack=function(e,t,r,i){this._parseStack.paused=!0,this._parseStack.cursorStartX=e,this._parseStack.cursorStartY=t,this._parseStack.decodedLength=r,this._parseStack.position=i},t.prototype._logSlowResolvingAsync=function(e){this._logService.logLevel<=g.LogLevelEnum.WARN&&Promise.race([e,new Promise((function(e,t){return setTimeout((function(){return t("#SLOW_TIMEOUT")}),5e3)}))]).catch((function(e){if("#SLOW_TIMEOUT"!==e)throw e;console.warn("async parser handler taking longer than 5000 ms")}))},t.prototype.parse=function(e,t){var r,i=this._activeBuffer.x,n=this._activeBuffer.y,o=0,s=this._parseStack.paused;if(s){if(r=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,t))return this._logSlowResolvingAsync(r),r;i=this._parseStack.cursorStartX,n=this._parseStack.cursorStartY,this._parseStack.paused=!1,e.length>b&&(o=this._parseStack.position+b)}if(this._logService.logLevel<=g.LogLevelEnum.DEBUG&&this._logService.debug("parsing data"+("string"==typeof e?' "'+e+'"':' "'+Array.prototype.map.call(e,(function(e){return String.fromCharCode(e)})).join("")+'"'),"string"==typeof e?e.split("").map((function(e){return e.charCodeAt(0)})):e),this._parseBuffer.lengthb)for(var a=o;a0&&2===f.getWidth(this._activeBuffer.x-1)&&f.setCellFromCodePoint(this._activeBuffer.x-1,0,1,h.fg,h.bg,h.extended);for(var _=t;_=a)if(c){for(;this._activeBuffer.x=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),f=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)}else if(this._activeBuffer.x=a-1,2===n)continue;if(l&&(f.insertCells(this._activeBuffer.x,n,this._activeBuffer.getNullCell(h),h),2===f.getWidth(a-1)&&f.setCellFromCodePoint(a-1,d.NULL_CELL_CODE,d.NULL_CELL_WIDTH,h.fg,h.bg,h.extended)),f.setCellFromCodePoint(this._activeBuffer.x++,i,n,h.fg,h.bg,h.extended),n>0)for(;--n;)f.setCellFromCodePoint(this._activeBuffer.x++,0,0,h.fg,h.bg,h.extended)}else f.getWidth(this._activeBuffer.x-1)?f.addCodepointToCell(this._activeBuffer.x-1,i):f.addCodepointToCell(this._activeBuffer.x-2,i)}r-t>0&&(f.loadCell(this._activeBuffer.x-1,this._workCell),2===this._workCell.getWidth()||this._workCell.getCode()>65535?this._parser.precedingCodepoint=0:this._workCell.isCombined()?this._parser.precedingCodepoint=this._workCell.getChars().charCodeAt(0):this._parser.precedingCodepoint=this._workCell.content),this._activeBuffer.x0&&0===f.getWidth(this._activeBuffer.x)&&!f.hasContent(this._activeBuffer.x)&&f.setCellFromCodePoint(this._activeBuffer.x,0,1,h.fg,h.bg,h.extended),this._dirtyRowService.markDirty(this._activeBuffer.y)},t.prototype.registerCsiHandler=function(e,t){var r=this;return"t"!==e.final||e.prefix||e.intermediates?this._parser.registerCsiHandler(e,t):this._parser.registerCsiHandler(e,(function(e){return!w(e.params[0],r._optionsService.rawOptions.windowOptions)||t(e)}))},t.prototype.registerDcsHandler=function(e,t){return this._parser.registerDcsHandler(e,new m.DcsHandler(t))},t.prototype.registerEscHandler=function(e,t){return this._parser.registerEscHandler(e,t)},t.prototype.registerOscHandler=function(e,t){return this._parser.registerOscHandler(e,new y.OscHandler(t))},t.prototype.bell=function(){return this._onRequestBell.fire(),!0},t.prototype.lineFeed=function(){return this._dirtyRowService.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowService.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0},t.prototype.carriageReturn=function(){return this._activeBuffer.x=0,!0},t.prototype.backspace=function(){var e;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(0===this._activeBuffer.x&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&(null===(e=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))||void 0===e?void 0:e.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;var t=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);t.hasWidth(this._activeBuffer.x)&&!t.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0},t.prototype.tab=function(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;var e=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-e),!0},t.prototype.shiftOut=function(){return this._charsetService.setgLevel(1),!0},t.prototype.shiftIn=function(){return this._charsetService.setgLevel(0),!0},t.prototype._restrictCursor=function(e){void 0===e&&(e=this._bufferService.cols-1),this._activeBuffer.x=Math.min(e,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowService.markDirty(this._activeBuffer.y)},t.prototype._setCursor=function(e,t){this._dirtyRowService.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=e,this._activeBuffer.y=this._activeBuffer.scrollTop+t):(this._activeBuffer.x=e,this._activeBuffer.y=t),this._restrictCursor(),this._dirtyRowService.markDirty(this._activeBuffer.y)},t.prototype._moveCursor=function(e,t){this._restrictCursor(),this._setCursor(this._activeBuffer.x+e,this._activeBuffer.y+t)},t.prototype.cursorUp=function(e){var t=this._activeBuffer.y-this._activeBuffer.scrollTop;return t>=0?this._moveCursor(0,-Math.min(t,e.params[0]||1)):this._moveCursor(0,-(e.params[0]||1)),!0},t.prototype.cursorDown=function(e){var t=this._activeBuffer.scrollBottom-this._activeBuffer.y;return t>=0?this._moveCursor(0,Math.min(t,e.params[0]||1)):this._moveCursor(0,e.params[0]||1),!0},t.prototype.cursorForward=function(e){return this._moveCursor(e.params[0]||1,0),!0},t.prototype.cursorBackward=function(e){return this._moveCursor(-(e.params[0]||1),0),!0},t.prototype.cursorNextLine=function(e){return this.cursorDown(e),this._activeBuffer.x=0,!0},t.prototype.cursorPrecedingLine=function(e){return this.cursorUp(e),this._activeBuffer.x=0,!0},t.prototype.cursorCharAbsolute=function(e){return this._setCursor((e.params[0]||1)-1,this._activeBuffer.y),!0},t.prototype.cursorPosition=function(e){return this._setCursor(e.length>=2?(e.params[1]||1)-1:0,(e.params[0]||1)-1),!0},t.prototype.charPosAbsolute=function(e){return this._setCursor((e.params[0]||1)-1,this._activeBuffer.y),!0},t.prototype.hPositionRelative=function(e){return this._moveCursor(e.params[0]||1,0),!0},t.prototype.linePosAbsolute=function(e){return this._setCursor(this._activeBuffer.x,(e.params[0]||1)-1),!0},t.prototype.vPositionRelative=function(e){return this._moveCursor(0,e.params[0]||1),!0},t.prototype.hVPosition=function(e){return this.cursorPosition(e),!0},t.prototype.tabClear=function(e){var t=e.params[0];return 0===t?delete this._activeBuffer.tabs[this._activeBuffer.x]:3===t&&(this._activeBuffer.tabs={}),!0},t.prototype.cursorForwardTab=function(e){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var t=e.params[0]||1;t--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0},t.prototype.cursorBackwardTab=function(e){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var t=e.params[0]||1;t--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0},t.prototype._eraseInBufferLine=function(e,t,r,i){void 0===i&&(i=!1);var n=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);n.replaceCells(t,r,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),i&&(n.isWrapped=!1)},t.prototype._resetBufferLine=function(e){var t=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);t.fill(this._activeBuffer.getNullCell(this._eraseAttrData())),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+e),t.isWrapped=!1},t.prototype.eraseInDisplay=function(e){var t;switch(this._restrictCursor(this._bufferService.cols),e.params[0]){case 0:for(t=this._activeBuffer.y,this._dirtyRowService.markDirty(t),this._eraseInBufferLine(t++,this._activeBuffer.x,this._bufferService.cols,0===this._activeBuffer.x);t=this._bufferService.cols&&(this._activeBuffer.lines.get(t+1).isWrapped=!1);t--;)this._resetBufferLine(t);this._dirtyRowService.markDirty(0);break;case 2:for(t=this._bufferService.rows,this._dirtyRowService.markDirty(t-1);t--;)this._resetBufferLine(t);this._dirtyRowService.markDirty(0);break;case 3:var r=this._activeBuffer.lines.length-this._bufferService.rows;r>0&&(this._activeBuffer.lines.trimStart(r),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-r,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-r,0),this._onScroll.fire(0))}return!0},t.prototype.eraseInLine=function(e){switch(this._restrictCursor(this._bufferService.cols),e.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,0===this._activeBuffer.x);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0)}return this._dirtyRowService.markDirty(this._activeBuffer.y),!0},t.prototype.insertLines=function(e){this._restrictCursor();var t=e.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.y0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(s.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(s.C0.ESC+"[?6c")),!0},t.prototype.sendDeviceAttributesSecondary=function(e){return e.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(s.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(s.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(e.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(s.C0.ESC+"[>83;40003;0c")),!0},t.prototype._is=function(e){return 0===(this._optionsService.rawOptions.termName+"").indexOf(e)},t.prototype.setMode=function(e){for(var t=0;t=2||2===i[1]&&o+n>=5)break;i[1]&&(n=1)}while(++o+t5)&&(e=1),t.extended.underlineStyle=e,t.fg|=268435456,0===e&&(t.fg&=-268435457),t.updateExtended()},t.prototype.charAttributes=function(e){if(1===e.length&&0===e.params[0])return this._curAttrData.fg=f.DEFAULT_ATTR_DATA.fg,this._curAttrData.bg=f.DEFAULT_ATTR_DATA.bg,!0;for(var t,r=e.length,i=this._curAttrData,n=0;n=30&&t<=37?(i.fg&=-50331904,i.fg|=16777216|t-30):t>=40&&t<=47?(i.bg&=-50331904,i.bg|=16777216|t-40):t>=90&&t<=97?(i.fg&=-50331904,i.fg|=16777224|t-90):t>=100&&t<=107?(i.bg&=-50331904,i.bg|=16777224|t-100):0===t?(i.fg=f.DEFAULT_ATTR_DATA.fg,i.bg=f.DEFAULT_ATTR_DATA.bg):1===t?i.fg|=134217728:3===t?i.bg|=67108864:4===t?(i.fg|=268435456,this._processUnderline(e.hasSubParams(n)?e.getSubParams(n)[0]:1,i)):5===t?i.fg|=536870912:7===t?i.fg|=67108864:8===t?i.fg|=1073741824:9===t?i.fg|=2147483648:2===t?i.bg|=134217728:21===t?this._processUnderline(2,i):22===t?(i.fg&=-134217729,i.bg&=-134217729):23===t?i.bg&=-67108865:24===t?i.fg&=-268435457:25===t?i.fg&=-536870913:27===t?i.fg&=-67108865:28===t?i.fg&=-1073741825:29===t?i.fg&=2147483647:39===t?(i.fg&=-67108864,i.fg|=16777215&f.DEFAULT_ATTR_DATA.fg):49===t?(i.bg&=-67108864,i.bg|=16777215&f.DEFAULT_ATTR_DATA.bg):38===t||48===t||58===t?n+=this._extractColor(e,n,i):59===t?(i.extended=i.extended.clone(),i.extended.underlineColor=-1,i.updateExtended()):100===t?(i.fg&=-67108864,i.fg|=16777215&f.DEFAULT_ATTR_DATA.fg,i.bg&=-67108864,i.bg|=16777215&f.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",t);return!0},t.prototype.deviceStatus=function(e){switch(e.params[0]){case 5:this._coreService.triggerDataEvent(s.C0.ESC+"[0n");break;case 6:var t=this._activeBuffer.y+1,r=this._activeBuffer.x+1;this._coreService.triggerDataEvent(s.C0.ESC+"["+t+";"+r+"R")}return!0},t.prototype.deviceStatusPrivate=function(e){if(6===e.params[0]){var t=this._activeBuffer.y+1,r=this._activeBuffer.x+1;this._coreService.triggerDataEvent(s.C0.ESC+"[?"+t+";"+r+"R")}return!0},t.prototype.softReset=function(e){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=f.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0},t.prototype.setCursorStyle=function(e){var t=e.params[0]||1;switch(t){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}var r=t%2==1;return this._optionsService.options.cursorBlink=r,!0},t.prototype.setScrollRegion=function(e){var t,r=e.params[0]||1;return(e.length<2||(t=e.params[1])>this._bufferService.rows||0===t)&&(t=this._bufferService.rows),t>r&&(this._activeBuffer.scrollTop=r-1,this._activeBuffer.scrollBottom=t-1,this._setCursor(0,0)),!0},t.prototype.windowOptions=function(e){if(!w(e.params[0],this._optionsService.rawOptions.windowOptions))return!0;var t=e.length>1?e.params[1]:0;switch(e.params[0]){case 14:2!==t&&this._onRequestWindowsOptionsReport.fire(o.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(o.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(s.C0.ESC+"[8;"+this._bufferService.rows+";"+this._bufferService.cols+"t");break;case 22:0!==t&&2!==t||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),0!==t&&1!==t||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:0!==t&&2!==t||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),0!==t&&1!==t||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0},t.prototype.saveCursor=function(e){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0},t.prototype.restoreCursor=function(e){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0},t.prototype.setTitle=function(e){return this._windowTitle=e,this._onTitleChange.fire(e),!0},t.prototype.setIconName=function(e){return this._iconName=e,!0},t.prototype.setOrReportIndexedColor=function(e){for(var t=[],r=e.split(";");r.length>1;){var i=r.shift(),n=r.shift();if(/^\d+$/.exec(i)){var o=parseInt(i);if(0<=o&&o<256)if("?"===n)t.push({type:0,index:o});else{var s=(0,S.parseColor)(n);s&&t.push({type:1,index:o,color:s})}}}return t.length&&this._onColor.fire(t),!0},t.prototype._setOrReportSpecialColor=function(e,t){for(var r=e.split(";"),i=0;i=this._specialColors.length);++i,++t)if("?"===r[i])this._onColor.fire([{type:0,index:this._specialColors[t]}]);else{var n=(0,S.parseColor)(r[i]);n&&this._onColor.fire([{type:1,index:this._specialColors[t],color:n}])}return!0},t.prototype.setOrReportFgColor=function(e){return this._setOrReportSpecialColor(e,0)},t.prototype.setOrReportBgColor=function(e){return this._setOrReportSpecialColor(e,1)},t.prototype.setOrReportCursorColor=function(e){return this._setOrReportSpecialColor(e,2)},t.prototype.restoreIndexedColor=function(e){if(!e)return this._onColor.fire([{type:2}]),!0;for(var t=[],r=e.split(";"),i=0;i=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0},t.prototype.tabSet=function(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0},t.prototype.reverseIndex=function(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){var e=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,e,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0},t.prototype.fullReset=function(){return this._parser.reset(),this._onRequestReset.fire(),!0},t.prototype.reset=function(){this._curAttrData=f.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=f.DEFAULT_ATTR_DATA.clone()},t.prototype._eraseAttrData=function(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal},t.prototype.setgLevel=function(e){return this._charsetService.setgLevel(e),!0},t.prototype.screenAlignmentPattern=function(){var e=new p.CellData;e.content=1<<22|"E".charCodeAt(0),e.fg=this._curAttrData.fg,e.bg=this._curAttrData.bg,this._setCursor(0,0);for(var t=0;t{Object.defineProperty(t,"__esModule",{value:!0}),t.getDisposeArrayDisposable=t.disposeArray=t.Disposable=void 0;var r=function(){function e(){this._disposables=[],this._isDisposed=!1}return e.prototype.dispose=function(){this._isDisposed=!0;for(var e=0,t=this._disposables;e{Object.defineProperty(t,"__esModule",{value:!0}),t.isLinux=t.isWindows=t.isIphone=t.isIpad=t.isMac=t.isSafari=t.isLegacyEdge=t.isFirefox=void 0;var r="undefined"==typeof navigator,i=r?"node":navigator.userAgent,n=r?"node":navigator.platform;t.isFirefox=i.includes("Firefox"),t.isLegacyEdge=i.includes("Edge"),t.isSafari=/^((?!chrome|android).)*safari/i.test(i),t.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(n),t.isIpad="iPad"===n,t.isIphone="iPhone"===n,t.isWindows=["Windows","Win16","Win32","WinCE"].includes(n),t.isLinux=n.indexOf("Linux")>=0},8273:(e,t)=>{function r(e,t,r,i){if(void 0===r&&(r=0),void 0===i&&(i=e.length),r>=e.length)return e;r=(e.length+r)%e.length,i=i>=e.length?e.length:(e.length+i)%e.length;for(var n=r;n{Object.defineProperty(t,"__esModule",{value:!0}),t.updateWindowsModeWrappedState=void 0;var i=r(643);t.updateWindowsModeWrappedState=function(e){var t=e.buffer.lines.get(e.buffer.ybase+e.buffer.y-1),r=null==t?void 0:t.get(e.cols-1),n=e.buffer.lines.get(e.buffer.ybase+e.buffer.y);n&&r&&(n.isWrapped=r[i.CHAR_DATA_CODE_INDEX]!==i.NULL_CELL_CODE&&r[i.CHAR_DATA_CODE_INDEX]!==i.WHITESPACE_CELL_CODE)}},3734:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ExtendedAttrs=t.AttributeData=void 0;var r=function(){function e(){this.fg=0,this.bg=0,this.extended=new i}return e.toColorRGB=function(e){return[e>>>16&255,e>>>8&255,255&e]},e.fromColorRGB=function(e){return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},e.prototype.clone=function(){var t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t},e.prototype.isInverse=function(){return 67108864&this.fg},e.prototype.isBold=function(){return 134217728&this.fg},e.prototype.isUnderline=function(){return 268435456&this.fg},e.prototype.isBlink=function(){return 536870912&this.fg},e.prototype.isInvisible=function(){return 1073741824&this.fg},e.prototype.isItalic=function(){return 67108864&this.bg},e.prototype.isDim=function(){return 134217728&this.bg},e.prototype.isStrikethrough=function(){return 2147483648&this.fg},e.prototype.getFgColorMode=function(){return 50331648&this.fg},e.prototype.getBgColorMode=function(){return 50331648&this.bg},e.prototype.isFgRGB=function(){return 50331648==(50331648&this.fg)},e.prototype.isBgRGB=function(){return 50331648==(50331648&this.bg)},e.prototype.isFgPalette=function(){return 16777216==(50331648&this.fg)||33554432==(50331648&this.fg)},e.prototype.isBgPalette=function(){return 16777216==(50331648&this.bg)||33554432==(50331648&this.bg)},e.prototype.isFgDefault=function(){return 0==(50331648&this.fg)},e.prototype.isBgDefault=function(){return 0==(50331648&this.bg)},e.prototype.isAttributeDefault=function(){return 0===this.fg&&0===this.bg},e.prototype.getFgColor=function(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}},e.prototype.getBgColor=function(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}},e.prototype.hasExtendedAttrs=function(){return 268435456&this.bg},e.prototype.updateExtended=function(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456},e.prototype.getUnderlineColor=function(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()},e.prototype.getUnderlineColorMode=function(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()},e.prototype.isUnderlineColorRGB=function(){return 268435456&this.bg&&~this.extended.underlineColor?50331648==(50331648&this.extended.underlineColor):this.isFgRGB()},e.prototype.isUnderlineColorPalette=function(){return 268435456&this.bg&&~this.extended.underlineColor?16777216==(50331648&this.extended.underlineColor)||33554432==(50331648&this.extended.underlineColor):this.isFgPalette()},e.prototype.isUnderlineColorDefault=function(){return 268435456&this.bg&&~this.extended.underlineColor?0==(50331648&this.extended.underlineColor):this.isFgDefault()},e.prototype.getUnderlineStyle=function(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0},e}();t.AttributeData=r;var i=function(){function e(e,t){void 0===e&&(e=0),void 0===t&&(t=-1),this.underlineStyle=e,this.underlineColor=t}return e.prototype.clone=function(){return new e(this.underlineStyle,this.underlineColor)},e.prototype.isEmpty=function(){return 0===this.underlineStyle},e}();t.ExtendedAttrs=i},9092:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferStringIterator=t.Buffer=t.MAX_BUFFER_SIZE=void 0;var i=r(6349),n=r(8437),o=r(511),s=r(643),a=r(4634),c=r(4863),l=r(7116),h=r(3734);t.MAX_BUFFER_SIZE=4294967295;var u=function(){function e(e,t,r){this._hasScrollback=e,this._optionsService=t,this._bufferService=r,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.savedY=0,this.savedX=0,this.savedCurAttrData=n.DEFAULT_ATTR_DATA.clone(),this.savedCharset=l.DEFAULT_CHARSET,this.markers=[],this._nullCell=o.CellData.fromCharData([0,s.NULL_CELL_CHAR,s.NULL_CELL_WIDTH,s.NULL_CELL_CODE]),this._whitespaceCell=o.CellData.fromCharData([0,s.WHITESPACE_CELL_CHAR,s.WHITESPACE_CELL_WIDTH,s.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new i.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}return e.prototype.getNullCell=function(e){return e?(this._nullCell.fg=e.fg,this._nullCell.bg=e.bg,this._nullCell.extended=e.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new h.ExtendedAttrs),this._nullCell},e.prototype.getWhitespaceCell=function(e){return e?(this._whitespaceCell.fg=e.fg,this._whitespaceCell.bg=e.bg,this._whitespaceCell.extended=e.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new h.ExtendedAttrs),this._whitespaceCell},e.prototype.getBlankLine=function(e,t){return new n.BufferLine(this._bufferService.cols,this.getNullCell(e),t)},Object.defineProperty(e.prototype,"hasScrollback",{get:function(){return this._hasScrollback&&this.lines.maxLength>this._rows},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isCursorInViewport",{get:function(){var e=this.ybase+this.y-this.ydisp;return e>=0&&et.MAX_BUFFER_SIZE?t.MAX_BUFFER_SIZE:r},e.prototype.fillViewportRows=function(e){if(0===this.lines.length){void 0===e&&(e=n.DEFAULT_ATTR_DATA);for(var t=this._rows;t--;)this.lines.push(this.getBlankLine(e))}},e.prototype.clear=function(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new i.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()},e.prototype.resize=function(e,t){var r=this.getNullCell(n.DEFAULT_ATTR_DATA),i=this._getCorrectBufferLength(t);if(i>this.lines.maxLength&&(this.lines.maxLength=i),this.lines.length>0){if(this._cols0&&this.lines.length<=this.ybase+this.y+s+1?(this.ybase--,s++,this.ydisp>0&&this.ydisp--):this.lines.push(new n.BufferLine(e,r)));else for(a=this._rows;a>t;a--)this.lines.length>t+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(i0&&(this.lines.trimStart(c),this.ybase=Math.max(this.ybase-c,0),this.ydisp=Math.max(this.ydisp-c,0),this.savedY=Math.max(this.savedY-c,0)),this.lines.maxLength=i}this.x=Math.min(this.x,e-1),this.y=Math.min(this.y,t-1),s&&(this.y+=s),this.savedX=Math.min(this.savedX,e-1),this.scrollTop=0}if(this.scrollBottom=t-1,this._isReflowEnabled&&(this._reflow(e,t),this._cols>e))for(o=0;othis._cols?this._reflowLarger(e,t):this._reflowSmaller(e,t))},e.prototype._reflowLarger=function(e,t){var r=(0,a.reflowLargerGetLinesToRemove)(this.lines,this._cols,e,this.ybase+this.y,this.getNullCell(n.DEFAULT_ATTR_DATA));if(r.length>0){var i=(0,a.reflowLargerCreateNewLayout)(this.lines,r);(0,a.reflowLargerApplyNewLayout)(this.lines,i.layout),this._reflowLargerAdjustViewport(e,t,i.countRemoved)}},e.prototype._reflowLargerAdjustViewport=function(e,t,r){for(var i=this.getNullCell(n.DEFAULT_ATTR_DATA),o=r;o-- >0;)0===this.ybase?(this.y>0&&this.y--,this.lines.length=0;s--){var c=this.lines.get(s);if(!(!c||!c.isWrapped&&c.getTrimmedLength()<=e)){for(var l=[c];c.isWrapped&&s>0;)c=this.lines.get(--s),l.unshift(c);var h=this.ybase+this.y;if(!(h>=s&&h0&&(i.push({start:s+l.length+o,newLines:p}),o+=p.length),l.push.apply(l,p);var y=_.length-1,m=_[y];0===m&&(m=_[--y]);for(var S=l.length-d-1,C=f;S>=0;){var b=Math.min(C,m);if(void 0===l[y])break;if(l[y].copyCellsFrom(l[S],C-b,m-b,b,!0),0==(m-=b)&&(m=_[--y]),0==(C-=b)){S--;var w=Math.max(S,0);C=(0,a.getWrappedLineTrimmedLength)(l,w,this._cols)}}for(v=0;v0;)0===this.ybase?this.y0){var E=[],x=[];for(v=0;v=0;v--)if(R&&R.start>M+O){for(var T=R.newLines.length-1;T>=0;T--)this.lines.set(v--,R.newLines[T]);v++,E.push({index:M+1,amount:R.newLines.length}),O+=R.newLines.length,R=i[++A]}else this.lines.set(v,x[M--]);var D=0;for(v=E.length-1;v>=0;v--)E[v].index+=D,this.lines.onInsertEmitter.fire(E[v]),D+=E[v].amount;var B=Math.max(0,k+o-this.lines.maxLength);B>0&&this.lines.onTrimEmitter.fire(B)}},e.prototype.stringIndexToBufferIndex=function(e,t,r){for(void 0===r&&(r=!1);t;){var i=this.lines.get(e);if(!i)return[-1,-1];for(var n=r?i.getTrimmedLength():i.length,o=0;o0&&this.lines.get(t).isWrapped;)t--;for(;r+10;);return e>=this._cols?this._cols-1:e<0?0:e},e.prototype.nextStop=function(e){for(null==e&&(e=this.x);!this.tabs[++e]&&e=this._cols?this._cols-1:e<0?0:e},e.prototype.clearMarkers=function(e){if(this._isClearing=!0,void 0!==e)for(var t=0;t=e.index&&(r.line+=e.amount)}))),r.register(this.lines.onDelete((function(e){r.line>=e.index&&r.linee.index&&(r.line-=e.amount)}))),r.register(r.onDispose((function(){return t._removeMarker(r)}))),r},e.prototype._removeMarker=function(e){this._isClearing||this.markers.splice(this.markers.indexOf(e),1)},e.prototype.iterator=function(e,t,r,i,n){return new f(this,e,t,r,i,n)},e}();t.Buffer=u;var f=function(){function e(e,t,r,i,n,o){void 0===r&&(r=0),void 0===i&&(i=e.lines.length),void 0===n&&(n=0),void 0===o&&(o=0),this._buffer=e,this._trimRight=t,this._startIndex=r,this._endIndex=i,this._startOverscan=n,this._endOverscan=o,this._startIndex<0&&(this._startIndex=0),this._endIndex>this._buffer.lines.length&&(this._endIndex=this._buffer.lines.length),this._current=this._startIndex}return e.prototype.hasNext=function(){return this._currentthis._endIndex+this._endOverscan&&(e.last=this._endIndex+this._endOverscan),e.first=Math.max(e.first,0),e.last=Math.min(e.last,this._buffer.lines.length);for(var t="",r=e.first;r<=e.last;++r)t+=this._buffer.translateBufferLineToString(r,this._trimRight);return this._current=e.last+1,{range:e,content:t}},e}();t.BufferStringIterator=f},8437:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferLine=t.DEFAULT_ATTR_DATA=void 0;var i=r(482),n=r(643),o=r(511),s=r(3734);t.DEFAULT_ATTR_DATA=Object.freeze(new s.AttributeData);var a=function(){function e(e,t,r){void 0===r&&(r=!1),this.isWrapped=r,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*e);for(var i=t||o.CellData.fromCharData([0,n.NULL_CELL_CHAR,n.NULL_CELL_WIDTH,n.NULL_CELL_CODE]),s=0;s>22,2097152&t?this._combined[e].charCodeAt(this._combined[e].length-1):r]},e.prototype.set=function(e,t){this._data[3*e+1]=t[n.CHAR_DATA_ATTR_INDEX],t[n.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[e]=t[1],this._data[3*e+0]=2097152|e|t[n.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*e+0]=t[n.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|t[n.CHAR_DATA_WIDTH_INDEX]<<22},e.prototype.getWidth=function(e){return this._data[3*e+0]>>22},e.prototype.hasWidth=function(e){return 12582912&this._data[3*e+0]},e.prototype.getFg=function(e){return this._data[3*e+1]},e.prototype.getBg=function(e){return this._data[3*e+2]},e.prototype.hasContent=function(e){return 4194303&this._data[3*e+0]},e.prototype.getCodePoint=function(e){var t=this._data[3*e+0];return 2097152&t?this._combined[e].charCodeAt(this._combined[e].length-1):2097151&t},e.prototype.isCombined=function(e){return 2097152&this._data[3*e+0]},e.prototype.getString=function(e){var t=this._data[3*e+0];return 2097152&t?this._combined[e]:2097151&t?(0,i.stringFromCodePoint)(2097151&t):""},e.prototype.loadCell=function(e,t){var r=3*e;return t.content=this._data[r+0],t.fg=this._data[r+1],t.bg=this._data[r+2],2097152&t.content&&(t.combinedData=this._combined[e]),268435456&t.bg&&(t.extended=this._extendedAttrs[e]),t},e.prototype.setCell=function(e,t){2097152&t.content&&(this._combined[e]=t.combinedData),268435456&t.bg&&(this._extendedAttrs[e]=t.extended),this._data[3*e+0]=t.content,this._data[3*e+1]=t.fg,this._data[3*e+2]=t.bg},e.prototype.setCellFromCodePoint=function(e,t,r,i,n,o){268435456&n&&(this._extendedAttrs[e]=o),this._data[3*e+0]=t|r<<22,this._data[3*e+1]=i,this._data[3*e+2]=n},e.prototype.addCodepointToCell=function(e,t){var r=this._data[3*e+0];2097152&r?this._combined[e]+=(0,i.stringFromCodePoint)(t):(2097151&r?(this._combined[e]=(0,i.stringFromCodePoint)(2097151&r)+(0,i.stringFromCodePoint)(t),r&=-2097152,r|=2097152):r=t|1<<22,this._data[3*e+0]=r)},e.prototype.insertCells=function(e,t,r,i){if((e%=this.length)&&2===this.getWidth(e-1)&&this.setCellFromCodePoint(e-1,0,1,(null==i?void 0:i.fg)||0,(null==i?void 0:i.bg)||0,(null==i?void 0:i.extended)||new s.ExtendedAttrs),t=0;--a)this.setCell(e+t+a,this.loadCell(e+a,n));for(a=0;athis.length){var r=new Uint32Array(3*e);this.length&&(3*e=e&&delete this._combined[o]}}else this._data=new Uint32Array(0),this._combined={};this.length=e}},e.prototype.fill=function(e){this._combined={},this._extendedAttrs={};for(var t=0;t=0;--e)if(4194303&this._data[3*e+0])return e+(this._data[3*e+0]>>22);return 0},e.prototype.copyCellsFrom=function(e,t,r,i,n){var o=e._data;if(n)for(var s=i-1;s>=0;s--)for(var a=0;a<3;a++)this._data[3*(r+s)+a]=o[3*(t+s)+a];else for(s=0;s=t&&(this._combined[l-t+r]=e._combined[l])}},e.prototype.translateToString=function(e,t,r){void 0===e&&(e=!1),void 0===t&&(t=0),void 0===r&&(r=this.length),e&&(r=Math.min(r,this.getTrimmedLength()));for(var o="";t>22||1}return o},e}();t.BufferLine=a},4841:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getRangeLength=void 0,t.getRangeLength=function(e,t){if(e.start.y>e.end.y)throw new Error("Buffer range end ("+e.end.x+", "+e.end.y+") cannot be before start ("+e.start.x+", "+e.start.y+")");return t*(e.end.y-e.start.y)+(e.end.x-e.start.x+1)}},4634:(e,t)=>{function r(e,t,r){if(t===e.length-1)return e[t].getTrimmedLength();var i=!e[t].hasContent(r-1)&&1===e[t].getWidth(r-1),n=2===e[t+1].getWidth(0);return i&&n?r-1:r}Object.defineProperty(t,"__esModule",{value:!0}),t.getWrappedLineTrimmedLength=t.reflowSmallerGetNewLineLengths=t.reflowLargerApplyNewLayout=t.reflowLargerCreateNewLayout=t.reflowLargerGetLinesToRemove=void 0,t.reflowLargerGetLinesToRemove=function(e,t,i,n,o){for(var s=[],a=0;a=a&&n0&&(S>u||0===h[S].getTrimmedLength());S--)m++;m>0&&(s.push(a+h.length-m),s.push(m)),a+=h.length-1}}}return s},t.reflowLargerCreateNewLayout=function(e,t){for(var r=[],i=0,n=t[i],o=0,s=0;sl&&(s-=l,a++);var h=2===e[a].getWidth(s-1);h&&s--;var u=h?i-1:i;n.push(u),c+=u}return n},t.getWrappedLineTrimmedLength=r},5295:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.BufferSet=void 0;var o=r(9092),s=r(8460),a=function(e){function t(t,r){var i=e.call(this)||this;return i._optionsService=t,i._bufferService=r,i._onBufferActivate=i.register(new s.EventEmitter),i.reset(),i}return n(t,e),Object.defineProperty(t.prototype,"onBufferActivate",{get:function(){return this._onBufferActivate.event},enumerable:!1,configurable:!0}),t.prototype.reset=function(){this._normal=new o.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new o.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()},Object.defineProperty(t.prototype,"alt",{get:function(){return this._alt},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"active",{get:function(){return this._activeBuffer},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"normal",{get:function(){return this._normal},enumerable:!1,configurable:!0}),t.prototype.activateNormalBuffer=function(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))},t.prototype.activateAltBuffer=function(e){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(e),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))},t.prototype.resize=function(e,t){this._normal.resize(e,t),this._alt.resize(e,t)},t.prototype.setupTabStops=function(e){this._normal.setupTabStops(e),this._alt.setupTabStops(e)},t}(r(844).Disposable);t.BufferSet=a},511:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.CellData=void 0;var o=r(482),s=r(643),a=r(3734),c=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.content=0,t.fg=0,t.bg=0,t.extended=new a.ExtendedAttrs,t.combinedData="",t}return n(t,e),t.fromCharData=function(e){var r=new t;return r.setFromCharData(e),r},t.prototype.isCombined=function(){return 2097152&this.content},t.prototype.getWidth=function(){return this.content>>22},t.prototype.getChars=function(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,o.stringFromCodePoint)(2097151&this.content):""},t.prototype.getCode=function(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content},t.prototype.setFromCharData=function(e){this.fg=e[s.CHAR_DATA_ATTR_INDEX],this.bg=0;var t=!1;if(e[s.CHAR_DATA_CHAR_INDEX].length>2)t=!0;else if(2===e[s.CHAR_DATA_CHAR_INDEX].length){var r=e[s.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=r&&r<=56319){var i=e[s.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=i&&i<=57343?this.content=1024*(r-55296)+i-56320+65536|e[s.CHAR_DATA_WIDTH_INDEX]<<22:t=!0}else t=!0}else this.content=e[s.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|e[s.CHAR_DATA_WIDTH_INDEX]<<22;t&&(this.combinedData=e[s.CHAR_DATA_CHAR_INDEX],this.content=2097152|e[s.CHAR_DATA_WIDTH_INDEX]<<22)},t.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},t}(a.AttributeData);t.CellData=c},643:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WHITESPACE_CELL_CODE=t.WHITESPACE_CELL_WIDTH=t.WHITESPACE_CELL_CHAR=t.NULL_CELL_CODE=t.NULL_CELL_WIDTH=t.NULL_CELL_CHAR=t.CHAR_DATA_CODE_INDEX=t.CHAR_DATA_WIDTH_INDEX=t.CHAR_DATA_CHAR_INDEX=t.CHAR_DATA_ATTR_INDEX=t.DEFAULT_ATTR=t.DEFAULT_COLOR=void 0,t.DEFAULT_COLOR=256,t.DEFAULT_ATTR=256|t.DEFAULT_COLOR<<9,t.CHAR_DATA_ATTR_INDEX=0,t.CHAR_DATA_CHAR_INDEX=1,t.CHAR_DATA_WIDTH_INDEX=2,t.CHAR_DATA_CODE_INDEX=3,t.NULL_CELL_CHAR="",t.NULL_CELL_WIDTH=1,t.NULL_CELL_CODE=0,t.WHITESPACE_CELL_CHAR=" ",t.WHITESPACE_CELL_WIDTH=1,t.WHITESPACE_CELL_CODE=32},4863:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.Marker=void 0;var o=r(8460),s=function(e){function t(r){var i=e.call(this)||this;return i.line=r,i._id=t._nextId++,i.isDisposed=!1,i._onDispose=new o.EventEmitter,i}return n(t,e),Object.defineProperty(t.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onDispose",{get:function(){return this._onDispose.event},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),e.prototype.dispose.call(this))},t._nextId=1,t}(r(844).Disposable);t.Marker=s},7116:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_CHARSET=t.CHARSETS=void 0,t.CHARSETS={},t.DEFAULT_CHARSET=t.CHARSETS.B,t.CHARSETS[0]={"`":"◆",a:"▒",b:"␉",c:"␌",d:"␍",e:"␊",f:"°",g:"±",h:"␤",i:"␋",j:"┘",k:"┐",l:"┌",m:"└",n:"┼",o:"⎺",p:"⎻",q:"─",r:"⎼",s:"⎽",t:"├",u:"┤",v:"┴",w:"┬",x:"│",y:"≤",z:"≥","{":"π","|":"≠","}":"£","~":"·"},t.CHARSETS.A={"#":"£"},t.CHARSETS.B=void 0,t.CHARSETS[4]={"#":"£","@":"¾","[":"ij","\\":"½","]":"|","{":"¨","|":"f","}":"¼","~":"´"},t.CHARSETS.C=t.CHARSETS[5]={"[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS.R={"#":"£","@":"à","[":"°","\\":"ç","]":"§","{":"é","|":"ù","}":"è","~":"¨"},t.CHARSETS.Q={"@":"à","[":"â","\\":"ç","]":"ê","^":"î","`":"ô","{":"é","|":"ù","}":"è","~":"û"},t.CHARSETS.K={"@":"§","[":"Ä","\\":"Ö","]":"Ü","{":"ä","|":"ö","}":"ü","~":"ß"},t.CHARSETS.Y={"#":"£","@":"§","[":"°","\\":"ç","]":"é","`":"ù","{":"à","|":"ò","}":"è","~":"ì"},t.CHARSETS.E=t.CHARSETS[6]={"@":"Ä","[":"Æ","\\":"Ø","]":"Å","^":"Ü","`":"ä","{":"æ","|":"ø","}":"å","~":"ü"},t.CHARSETS.Z={"#":"£","@":"§","[":"¡","\\":"Ñ","]":"¿","{":"°","|":"ñ","}":"ç"},t.CHARSETS.H=t.CHARSETS[7]={"@":"É","[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS["="]={"#":"ù","@":"à","[":"é","\\":"ç","]":"ê","^":"î",_:"è","`":"ô","{":"ä","|":"ö","}":"ü","~":"û"}},2584:(e,t)=>{var r,i;Object.defineProperty(t,"__esModule",{value:!0}),t.C1=t.C0=void 0,(i=t.C0||(t.C0={})).NUL="\0",i.SOH="",i.STX="",i.ETX="",i.EOT="",i.ENQ="",i.ACK="",i.BEL="",i.BS="\b",i.HT="\t",i.LF="\n",i.VT="\v",i.FF="\f",i.CR="\r",i.SO="",i.SI="",i.DLE="",i.DC1="",i.DC2="",i.DC3="",i.DC4="",i.NAK="",i.SYN="",i.ETB="",i.CAN="",i.EM="",i.SUB="",i.ESC="",i.FS="",i.GS="",i.RS="",i.US="",i.SP=" ",i.DEL="",(r=t.C1||(t.C1={})).PAD="€",r.HOP="",r.BPH="‚",r.NBH="ƒ",r.IND="„",r.NEL="…",r.SSA="†",r.ESA="‡",r.HTS="ˆ",r.HTJ="‰",r.VTS="Š",r.PLD="‹",r.PLU="Œ",r.RI="",r.SS2="Ž",r.SS3="",r.DCS="",r.PU1="‘",r.PU2="’",r.STS="“",r.CCH="”",r.MW="•",r.SPA="–",r.EPA="—",r.SOS="˜",r.SGCI="™",r.SCI="š",r.CSI="›",r.ST="œ",r.OSC="",r.PM="ž",r.APC="Ÿ"},7399:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.evaluateKeyboardEvent=void 0;var i=r(2584),n={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};t.evaluateKeyboardEvent=function(e,t,r,o){var s={type:0,cancel:!1,key:void 0},a=(e.shiftKey?1:0)|(e.altKey?2:0)|(e.ctrlKey?4:0)|(e.metaKey?8:0);switch(e.keyCode){case 0:"UIKeyInputUpArrow"===e.key?s.key=t?i.C0.ESC+"OA":i.C0.ESC+"[A":"UIKeyInputLeftArrow"===e.key?s.key=t?i.C0.ESC+"OD":i.C0.ESC+"[D":"UIKeyInputRightArrow"===e.key?s.key=t?i.C0.ESC+"OC":i.C0.ESC+"[C":"UIKeyInputDownArrow"===e.key&&(s.key=t?i.C0.ESC+"OB":i.C0.ESC+"[B");break;case 8:if(e.shiftKey){s.key=i.C0.BS;break}if(e.altKey){s.key=i.C0.ESC+i.C0.DEL;break}s.key=i.C0.DEL;break;case 9:if(e.shiftKey){s.key=i.C0.ESC+"[Z";break}s.key=i.C0.HT,s.cancel=!0;break;case 13:s.key=e.altKey?i.C0.ESC+i.C0.CR:i.C0.CR,s.cancel=!0;break;case 27:s.key=i.C0.ESC,e.altKey&&(s.key=i.C0.ESC+i.C0.ESC),s.cancel=!0;break;case 37:if(e.metaKey)break;a?(s.key=i.C0.ESC+"[1;"+(a+1)+"D",s.key===i.C0.ESC+"[1;3D"&&(s.key=i.C0.ESC+(r?"b":"[1;5D"))):s.key=t?i.C0.ESC+"OD":i.C0.ESC+"[D";break;case 39:if(e.metaKey)break;a?(s.key=i.C0.ESC+"[1;"+(a+1)+"C",s.key===i.C0.ESC+"[1;3C"&&(s.key=i.C0.ESC+(r?"f":"[1;5C"))):s.key=t?i.C0.ESC+"OC":i.C0.ESC+"[C";break;case 38:if(e.metaKey)break;a?(s.key=i.C0.ESC+"[1;"+(a+1)+"A",r||s.key!==i.C0.ESC+"[1;3A"||(s.key=i.C0.ESC+"[1;5A")):s.key=t?i.C0.ESC+"OA":i.C0.ESC+"[A";break;case 40:if(e.metaKey)break;a?(s.key=i.C0.ESC+"[1;"+(a+1)+"B",r||s.key!==i.C0.ESC+"[1;3B"||(s.key=i.C0.ESC+"[1;5B")):s.key=t?i.C0.ESC+"OB":i.C0.ESC+"[B";break;case 45:e.shiftKey||e.ctrlKey||(s.key=i.C0.ESC+"[2~");break;case 46:s.key=a?i.C0.ESC+"[3;"+(a+1)+"~":i.C0.ESC+"[3~";break;case 36:s.key=a?i.C0.ESC+"[1;"+(a+1)+"H":t?i.C0.ESC+"OH":i.C0.ESC+"[H";break;case 35:s.key=a?i.C0.ESC+"[1;"+(a+1)+"F":t?i.C0.ESC+"OF":i.C0.ESC+"[F";break;case 33:e.shiftKey?s.type=2:s.key=i.C0.ESC+"[5~";break;case 34:e.shiftKey?s.type=3:s.key=i.C0.ESC+"[6~";break;case 112:s.key=a?i.C0.ESC+"[1;"+(a+1)+"P":i.C0.ESC+"OP";break;case 113:s.key=a?i.C0.ESC+"[1;"+(a+1)+"Q":i.C0.ESC+"OQ";break;case 114:s.key=a?i.C0.ESC+"[1;"+(a+1)+"R":i.C0.ESC+"OR";break;case 115:s.key=a?i.C0.ESC+"[1;"+(a+1)+"S":i.C0.ESC+"OS";break;case 116:s.key=a?i.C0.ESC+"[15;"+(a+1)+"~":i.C0.ESC+"[15~";break;case 117:s.key=a?i.C0.ESC+"[17;"+(a+1)+"~":i.C0.ESC+"[17~";break;case 118:s.key=a?i.C0.ESC+"[18;"+(a+1)+"~":i.C0.ESC+"[18~";break;case 119:s.key=a?i.C0.ESC+"[19;"+(a+1)+"~":i.C0.ESC+"[19~";break;case 120:s.key=a?i.C0.ESC+"[20;"+(a+1)+"~":i.C0.ESC+"[20~";break;case 121:s.key=a?i.C0.ESC+"[21;"+(a+1)+"~":i.C0.ESC+"[21~";break;case 122:s.key=a?i.C0.ESC+"[23;"+(a+1)+"~":i.C0.ESC+"[23~";break;case 123:s.key=a?i.C0.ESC+"[24;"+(a+1)+"~":i.C0.ESC+"[24~";break;default:if(!e.ctrlKey||e.shiftKey||e.altKey||e.metaKey)if(r&&!o||!e.altKey||e.metaKey)!r||e.altKey||e.ctrlKey||e.shiftKey||!e.metaKey?e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.keyCode>=48&&1===e.key.length?s.key=e.key:e.key&&e.ctrlKey&&"_"===e.key&&(s.key=i.C0.US):65===e.keyCode&&(s.type=1);else{var c=n[e.keyCode],l=null==c?void 0:c[e.shiftKey?1:0];if(l)s.key=i.C0.ESC+l;else if(e.keyCode>=65&&e.keyCode<=90){var h=e.ctrlKey?e.keyCode-64:e.keyCode+32;s.key=i.C0.ESC+String.fromCharCode(h)}}else e.keyCode>=65&&e.keyCode<=90?s.key=String.fromCharCode(e.keyCode-64):32===e.keyCode?s.key=i.C0.NUL:e.keyCode>=51&&e.keyCode<=55?s.key=String.fromCharCode(e.keyCode-51+27):56===e.keyCode?s.key=i.C0.DEL:219===e.keyCode?s.key=i.C0.ESC:220===e.keyCode?s.key=i.C0.FS:221===e.keyCode&&(s.key=i.C0.GS)}return s}},482:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Utf8ToUtf32=t.StringToUtf32=t.utf32ToString=t.stringFromCodePoint=void 0,t.stringFromCodePoint=function(e){return e>65535?(e-=65536,String.fromCharCode(55296+(e>>10))+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)},t.utf32ToString=function(e,t,r){void 0===t&&(t=0),void 0===r&&(r=e.length);for(var i="",n=t;n65535?(o-=65536,i+=String.fromCharCode(55296+(o>>10))+String.fromCharCode(o%1024+56320)):i+=String.fromCharCode(o)}return i};var r=function(){function e(){this._interim=0}return e.prototype.clear=function(){this._interim=0},e.prototype.decode=function(e,t){var r=e.length;if(!r)return 0;var i=0,n=0;this._interim&&(56320<=(a=e.charCodeAt(n++))&&a<=57343?t[i++]=1024*(this._interim-55296)+a-56320+65536:(t[i++]=this._interim,t[i++]=a),this._interim=0);for(var o=n;o=r)return this._interim=s,i;var a;56320<=(a=e.charCodeAt(o))&&a<=57343?t[i++]=1024*(s-55296)+a-56320+65536:(t[i++]=s,t[i++]=a)}else 65279!==s&&(t[i++]=s)}return i},e}();t.StringToUtf32=r;var i=function(){function e(){this.interim=new Uint8Array(3)}return e.prototype.clear=function(){this.interim.fill(0)},e.prototype.decode=function(e,t){var r=e.length;if(!r)return 0;var i,n,o,s,a=0,c=0,l=0;if(this.interim[0]){var h=!1,u=this.interim[0];u&=192==(224&u)?31:224==(240&u)?15:7;for(var f=0,_=void 0;(_=63&this.interim[++f])&&f<4;)u<<=6,u|=_;for(var d=192==(224&this.interim[0])?2:224==(240&this.interim[0])?3:4,p=d-f;l=r)return 0;if(128!=(192&(_=e[l++]))){l--,h=!0;break}this.interim[f++]=_,u<<=6,u|=63&_}h||(2===d?u<128?l--:t[a++]=u:3===d?u<2048||u>=55296&&u<=57343||65279===u||(t[a++]=u):u<65536||u>1114111||(t[a++]=u)),this.interim.fill(0)}for(var v=r-4,g=l;g=r)return this.interim[0]=i,a;if(128!=(192&(n=e[g++]))){g--;continue}if((c=(31&i)<<6|63&n)<128){g--;continue}t[a++]=c}else if(224==(240&i)){if(g>=r)return this.interim[0]=i,a;if(128!=(192&(n=e[g++]))){g--;continue}if(g>=r)return this.interim[0]=i,this.interim[1]=n,a;if(128!=(192&(o=e[g++]))){g--;continue}if((c=(15&i)<<12|(63&n)<<6|63&o)<2048||c>=55296&&c<=57343||65279===c)continue;t[a++]=c}else if(240==(248&i)){if(g>=r)return this.interim[0]=i,a;if(128!=(192&(n=e[g++]))){g--;continue}if(g>=r)return this.interim[0]=i,this.interim[1]=n,a;if(128!=(192&(o=e[g++]))){g--;continue}if(g>=r)return this.interim[0]=i,this.interim[1]=n,this.interim[2]=o,a;if(128!=(192&(s=e[g++]))){g--;continue}if((c=(7&i)<<18|(63&n)<<12|(63&o)<<6|63&s)<65536||c>1114111)continue;t[a++]=c}}return a},e}();t.Utf8ToUtf32=i},225:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeV6=void 0;var i,n=r(8273),o=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],s=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],a=function(){function e(){if(this.version="6",!i){i=new Uint8Array(65536),(0,n.fill)(i,1),i[0]=0,(0,n.fill)(i,0,1,32),(0,n.fill)(i,0,127,160),(0,n.fill)(i,2,4352,4448),i[9001]=2,i[9002]=2,(0,n.fill)(i,2,11904,42192),i[12351]=1,(0,n.fill)(i,2,44032,55204),(0,n.fill)(i,2,63744,64256),(0,n.fill)(i,2,65040,65050),(0,n.fill)(i,2,65072,65136),(0,n.fill)(i,2,65280,65377),(0,n.fill)(i,2,65504,65511);for(var e=0;et[n][1])return!1;for(;n>=i;)if(e>t[r=i+n>>1][1])i=r+1;else{if(!(e=131072&&e<=196605||e>=196608&&e<=262141?2:1},e}();t.UnicodeV6=a},5981:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WriteBuffer=void 0;var r="undefined"==typeof queueMicrotask?function(e){Promise.resolve().then(e)}:queueMicrotask,i=function(){function e(e){this._action=e,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0}return e.prototype.writeSync=function(e,t){if(void 0!==t&&this._syncCalls>t)this._syncCalls=0;else if(this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(void 0),this._syncCalls++,!this._isSyncWriting){var r;for(this._isSyncWriting=!0;r=this._writeBuffer.shift();){this._action(r);var i=this._callbacks.shift();i&&i()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}},e.prototype.write=function(e,t){var r=this;if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");this._writeBuffer.length||(this._bufferOffset=0,setTimeout((function(){return r._innerWrite()}))),this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(t)},e.prototype._innerWrite=function(e,t){var i=this;void 0===e&&(e=0),void 0===t&&(t=!0);for(var n=e||Date.now();this._writeBuffer.length>this._bufferOffset;){var o=this._writeBuffer[this._bufferOffset],s=this._action(o,t);if(s)return void s.catch((function(e){return r((function(){throw e})),Promise.resolve(!1)})).then((function(e){return Date.now()-n>=12?setTimeout((function(){return i._innerWrite(0,e)})):i._innerWrite(n,e)}));var a=this._callbacks[this._bufferOffset];if(a&&a(),this._bufferOffset++,this._pendingData-=o.length,Date.now()-n>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((function(){return i._innerWrite()}))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0)},e}();t.WriteBuffer=i},5941:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.toRgbString=t.parseColor=void 0;var r=/^([\da-f]{1})\/([\da-f]{1})\/([\da-f]{1})$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,i=/^[\da-f]+$/;function n(e,t){var r=e.toString(16),i=r.length<2?"0"+r:r;switch(t){case 4:return r[0];case 8:return i;case 12:return(i+i).slice(0,3);default:return i+i}}t.parseColor=function(e){if(e){var t=e.toLowerCase();if(0===t.indexOf("rgb:")){t=t.slice(4);var n=r.exec(t);if(n){var o=n[1]?15:n[4]?255:n[7]?4095:65535;return[Math.round(parseInt(n[1]||n[4]||n[7]||n[10],16)/o*255),Math.round(parseInt(n[2]||n[5]||n[8]||n[11],16)/o*255),Math.round(parseInt(n[3]||n[6]||n[9]||n[12],16)/o*255)]}}else if(0===t.indexOf("#")&&(t=t.slice(1),i.exec(t)&&[3,6,9,12].includes(t.length))){for(var s=t.length/3,a=[0,0,0],c=0;c<3;++c){var l=parseInt(t.slice(s*c,s*c+s),16);a[c]=1===s?l<<4:2===s?l:3===s?l>>4:l>>8}return a}}},t.toRgbString=function(e,t){void 0===t&&(t=16);var r=e[0],i=e[1],o=e[2];return"rgb:"+n(r,t)+"/"+n(i,t)+"/"+n(o,t)}},5770:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PAYLOAD_LIMIT=void 0,t.PAYLOAD_LIMIT=1e7},6351:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DcsHandler=t.DcsParser=void 0;var i=r(482),n=r(8742),o=r(5770),s=[],a=function(){function e(){this._handlers=Object.create(null),this._active=s,this._ident=0,this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return e.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=s},e.prototype.registerHandler=function(e,t){void 0===this._handlers[e]&&(this._handlers[e]=[]);var r=this._handlers[e];return r.push(t),{dispose:function(){var e=r.indexOf(t);-1!==e&&r.splice(e,1)}}},e.prototype.clearHandler=function(e){this._handlers[e]&&delete this._handlers[e]},e.prototype.setHandlerFallback=function(e){this._handlerFb=e},e.prototype.reset=function(){if(this._active.length)for(var e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].unhook(!1);this._stack.paused=!1,this._active=s,this._ident=0},e.prototype.hook=function(e,t){if(this.reset(),this._ident=e,this._active=this._handlers[e]||s,this._active.length)for(var r=this._active.length-1;r>=0;r--)this._active[r].hook(t);else this._handlerFb(this._ident,"HOOK",t)},e.prototype.put=function(e,t,r){if(this._active.length)for(var n=this._active.length-1;n>=0;n--)this._active[n].put(e,t,r);else this._handlerFb(this._ident,"PUT",(0,i.utf32ToString)(e,t,r))},e.prototype.unhook=function(e,t){if(void 0===t&&(t=!0),this._active.length){var r=!1,i=this._active.length-1,n=!1;if(this._stack.paused&&(i=this._stack.loopPosition-1,r=t,n=this._stack.fallThrough,this._stack.paused=!1),!n&&!1===r){for(;i>=0&&!0!==(r=this._active[i].unhook(e));i--)if(r instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=i,this._stack.fallThrough=!1,r;i--}for(;i>=0;i--)if((r=this._active[i].unhook(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=i,this._stack.fallThrough=!0,r}else this._handlerFb(this._ident,"UNHOOK",e);this._active=s,this._ident=0},e}();t.DcsParser=a;var c=new n.Params;c.addParam(0);var l=function(){function e(e){this._handler=e,this._data="",this._params=c,this._hitLimit=!1}return e.prototype.hook=function(e){this._params=e.length>1||e.params[0]?e.clone():c,this._data="",this._hitLimit=!1},e.prototype.put=function(e,t,r){this._hitLimit||(this._data+=(0,i.utf32ToString)(e,t,r),this._data.length>o.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},e.prototype.unhook=function(e){var t=this,r=!1;if(this._hitLimit)r=!1;else if(e&&(r=this._handler(this._data,this._params))instanceof Promise)return r.then((function(e){return t._params=c,t._data="",t._hitLimit=!1,e}));return this._params=c,this._data="",this._hitLimit=!1,r},e}();t.DcsHandler=l},2015:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.EscapeSequenceParser=t.VT500_TRANSITION_TABLE=t.TransitionTable=void 0;var o=r(844),s=r(8273),a=r(8742),c=r(6242),l=r(6351),h=function(){function e(e){this.table=new Uint8Array(e)}return e.prototype.setDefault=function(e,t){(0,s.fill)(this.table,e<<4|t)},e.prototype.add=function(e,t,r,i){this.table[t<<8|e]=r<<4|i},e.prototype.addMany=function(e,t,r,i){for(var n=0;n1)throw new Error("only one byte as prefix supported");if((r=e.prefix.charCodeAt(0))&&60>r||r>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(e.intermediates){if(e.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(var i=0;in||n>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");r<<=8,r|=n}}if(1!==e.final.length)throw new Error("final must be a single byte");var o=e.final.charCodeAt(0);if(t[0]>o||o>t[1])throw new Error("final must be in range "+t[0]+" .. "+t[1]);return(r<<=8)|o},r.prototype.identToString=function(e){for(var t=[];e;)t.push(String.fromCharCode(255&e)),e>>=8;return t.reverse().join("")},r.prototype.dispose=function(){this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null),this._oscParser.dispose(),this._dcsParser.dispose()},r.prototype.setPrintHandler=function(e){this._printHandler=e},r.prototype.clearPrintHandler=function(){this._printHandler=this._printHandlerFb},r.prototype.registerEscHandler=function(e,t){var r=this._identifier(e,[48,126]);void 0===this._escHandlers[r]&&(this._escHandlers[r]=[]);var i=this._escHandlers[r];return i.push(t),{dispose:function(){var e=i.indexOf(t);-1!==e&&i.splice(e,1)}}},r.prototype.clearEscHandler=function(e){this._escHandlers[this._identifier(e,[48,126])]&&delete this._escHandlers[this._identifier(e,[48,126])]},r.prototype.setEscHandlerFallback=function(e){this._escHandlerFb=e},r.prototype.setExecuteHandler=function(e,t){this._executeHandlers[e.charCodeAt(0)]=t},r.prototype.clearExecuteHandler=function(e){this._executeHandlers[e.charCodeAt(0)]&&delete this._executeHandlers[e.charCodeAt(0)]},r.prototype.setExecuteHandlerFallback=function(e){this._executeHandlerFb=e},r.prototype.registerCsiHandler=function(e,t){var r=this._identifier(e);void 0===this._csiHandlers[r]&&(this._csiHandlers[r]=[]);var i=this._csiHandlers[r];return i.push(t),{dispose:function(){var e=i.indexOf(t);-1!==e&&i.splice(e,1)}}},r.prototype.clearCsiHandler=function(e){this._csiHandlers[this._identifier(e)]&&delete this._csiHandlers[this._identifier(e)]},r.prototype.setCsiHandlerFallback=function(e){this._csiHandlerFb=e},r.prototype.registerDcsHandler=function(e,t){return this._dcsParser.registerHandler(this._identifier(e),t)},r.prototype.clearDcsHandler=function(e){this._dcsParser.clearHandler(this._identifier(e))},r.prototype.setDcsHandlerFallback=function(e){this._dcsParser.setHandlerFallback(e)},r.prototype.registerOscHandler=function(e,t){return this._oscParser.registerHandler(e,t)},r.prototype.clearOscHandler=function(e){this._oscParser.clearHandler(e)},r.prototype.setOscHandlerFallback=function(e){this._oscParser.setHandlerFallback(e)},r.prototype.setErrorHandler=function(e){this._errorHandler=e},r.prototype.clearErrorHandler=function(){this._errorHandler=this._errorHandlerFb},r.prototype.reset=function(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,0!==this._parseStack.state&&(this._parseStack.state=2,this._parseStack.handlers=[])},r.prototype._preserveStack=function(e,t,r,i,n){this._parseStack.state=e,this._parseStack.handlers=t,this._parseStack.handlerPos=r,this._parseStack.transition=i,this._parseStack.chunkPos=n},r.prototype.parse=function(e,t,r){var i,n=0,o=0,s=0;if(this._parseStack.state)if(2===this._parseStack.state)this._parseStack.state=0,s=this._parseStack.chunkPos+1;else{if(void 0===r||1===this._parseStack.state)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");var a=this._parseStack.handlers,c=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(!1===r&&c>-1)for(;c>=0&&!0!==(i=a[c](this._params));c--)if(i instanceof Promise)return this._parseStack.handlerPos=c,i;this._parseStack.handlers=[];break;case 4:if(!1===r&&c>-1)for(;c>=0&&!0!==(i=a[c]());c--)if(i instanceof Promise)return this._parseStack.handlerPos=c,i;this._parseStack.handlers=[];break;case 6:if(n=e[this._parseStack.chunkPos],i=this._dcsParser.unhook(24!==n&&26!==n,r))return i;27===n&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(n=e[this._parseStack.chunkPos],i=this._oscParser.end(24!==n&&26!==n,r))return i;27===n&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,s=this._parseStack.chunkPos+1,this.precedingCodepoint=0,this.currentState=15&this._parseStack.transition}for(var l=s;l>4){case 2:for(var h=l+1;;++h){if(h>=t||(n=e[h])<32||n>126&&n=t||(n=e[h])<32||n>126&&n=t||(n=e[h])<32||n>126&&n=t||(n=e[h])<32||n>126&&n=0&&!0!==(i=a[f](this._params));f--)if(i instanceof Promise)return this._preserveStack(3,a,f,o,l),i;f<0&&this._csiHandlerFb(this._collect<<8|n,this._params),this.precedingCodepoint=0;break;case 8:do{switch(n){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(n-48)}}while(++l47&&n<60);l--;break;case 9:this._collect<<=8,this._collect|=n;break;case 10:for(var _=this._escHandlers[this._collect<<8|n],d=_?_.length-1:-1;d>=0&&!0!==(i=_[d]());d--)if(i instanceof Promise)return this._preserveStack(4,_,d,o,l),i;d<0&&this._escHandlerFb(this._collect<<8|n),this.precedingCodepoint=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|n,this._params);break;case 13:for(var p=l+1;;++p)if(p>=t||24===(n=e[p])||26===n||27===n||n>127&&n=t||(n=e[v])<32||n>127&&n{Object.defineProperty(t,"__esModule",{value:!0}),t.OscHandler=t.OscParser=void 0;var i=r(5770),n=r(482),o=[],s=function(){function e(){this._state=0,this._active=o,this._id=-1,this._handlers=Object.create(null),this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return e.prototype.registerHandler=function(e,t){void 0===this._handlers[e]&&(this._handlers[e]=[]);var r=this._handlers[e];return r.push(t),{dispose:function(){var e=r.indexOf(t);-1!==e&&r.splice(e,1)}}},e.prototype.clearHandler=function(e){this._handlers[e]&&delete this._handlers[e]},e.prototype.setHandlerFallback=function(e){this._handlerFb=e},e.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=o},e.prototype.reset=function(){if(2===this._state)for(var e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].end(!1);this._stack.paused=!1,this._active=o,this._id=-1,this._state=0},e.prototype._start=function(){if(this._active=this._handlers[this._id]||o,this._active.length)for(var e=this._active.length-1;e>=0;e--)this._active[e].start();else this._handlerFb(this._id,"START")},e.prototype._put=function(e,t,r){if(this._active.length)for(var i=this._active.length-1;i>=0;i--)this._active[i].put(e,t,r);else this._handlerFb(this._id,"PUT",(0,n.utf32ToString)(e,t,r))},e.prototype.start=function(){this.reset(),this._state=1},e.prototype.put=function(e,t,r){if(3!==this._state){if(1===this._state)for(;t0&&this._put(e,t,r)}},e.prototype.end=function(e,t){if(void 0===t&&(t=!0),0!==this._state){if(3!==this._state)if(1===this._state&&this._start(),this._active.length){var r=!1,i=this._active.length-1,n=!1;if(this._stack.paused&&(i=this._stack.loopPosition-1,r=t,n=this._stack.fallThrough,this._stack.paused=!1),!n&&!1===r){for(;i>=0&&!0!==(r=this._active[i].end(e));i--)if(r instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=i,this._stack.fallThrough=!1,r;i--}for(;i>=0;i--)if((r=this._active[i].end(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=i,this._stack.fallThrough=!0,r}else this._handlerFb(this._id,"END",e);this._active=o,this._id=-1,this._state=0}},e}();t.OscParser=s;var a=function(){function e(e){this._handler=e,this._data="",this._hitLimit=!1}return e.prototype.start=function(){this._data="",this._hitLimit=!1},e.prototype.put=function(e,t,r){this._hitLimit||(this._data+=(0,n.utf32ToString)(e,t,r),this._data.length>i.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},e.prototype.end=function(e){var t=this,r=!1;if(this._hitLimit)r=!1;else if(e&&(r=this._handler(this._data))instanceof Promise)return r.then((function(e){return t._data="",t._hitLimit=!1,e}));return this._data="",this._hitLimit=!1,r},e}();t.OscHandler=a},8742:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Params=void 0;var r=2147483647,i=function(){function e(e,t){if(void 0===e&&(e=32),void 0===t&&(t=32),this.maxLength=e,this.maxSubParamsLength=t,t>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(e),this.length=0,this._subParams=new Int32Array(t),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(e),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}return e.fromArray=function(t){var r=new e;if(!t.length)return r;for(var i=Array.isArray(t[0])?1:0;i>8,i=255&this._subParamsIdx[t];i-r>0&&e.push(Array.prototype.slice.call(this._subParams,r,i))}return e},e.prototype.reset=function(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1},e.prototype.addParam=function(e){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=e>r?r:e}},e.prototype.addSubParam=function(e){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=e>r?r:e,this._subParamsIdx[this.length-1]++}},e.prototype.hasSubParams=function(e){return(255&this._subParamsIdx[e])-(this._subParamsIdx[e]>>8)>0},e.prototype.getSubParams=function(e){var t=this._subParamsIdx[e]>>8,r=255&this._subParamsIdx[e];return r-t>0?this._subParams.subarray(t,r):null},e.prototype.getSubParamsAll=function(){for(var e={},t=0;t>8,i=255&this._subParamsIdx[t];i-r>0&&(e[t]=this._subParams.slice(r,i))}return e},e.prototype.addDigit=function(e){var t;if(!(this._rejectDigits||!(t=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)){var i=this._digitIsSub?this._subParams:this.params,n=i[t-1];i[t-1]=~n?Math.min(10*n+e,r):e}},e}();t.Params=i},5741:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AddonManager=void 0;var r=function(){function e(){this._addons=[]}return e.prototype.dispose=function(){for(var e=this._addons.length-1;e>=0;e--)this._addons[e].instance.dispose()},e.prototype.loadAddon=function(e,t){var r=this,i={instance:t,dispose:t.dispose,isDisposed:!1};this._addons.push(i),t.dispose=function(){return r._wrappedAddonDispose(i)},t.activate(e)},e.prototype._wrappedAddonDispose=function(e){if(!e.isDisposed){for(var t=-1,r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferApiView=void 0;var i=r(3785),n=r(511),o=function(){function e(e,t){this._buffer=e,this.type=t}return e.prototype.init=function(e){return this._buffer=e,this},Object.defineProperty(e.prototype,"cursorY",{get:function(){return this._buffer.y},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"cursorX",{get:function(){return this._buffer.x},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"viewportY",{get:function(){return this._buffer.ydisp},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"baseY",{get:function(){return this._buffer.ybase},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"length",{get:function(){return this._buffer.lines.length},enumerable:!1,configurable:!0}),e.prototype.getLine=function(e){var t=this._buffer.lines.get(e);if(t)return new i.BufferLineApiView(t)},e.prototype.getNullCell=function(){return new n.CellData},e}();t.BufferApiView=o},3785:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferLineApiView=void 0;var i=r(511),n=function(){function e(e){this._line=e}return Object.defineProperty(e.prototype,"isWrapped",{get:function(){return this._line.isWrapped},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"length",{get:function(){return this._line.length},enumerable:!1,configurable:!0}),e.prototype.getCell=function(e,t){if(!(e<0||e>=this._line.length))return t?(this._line.loadCell(e,t),t):this._line.loadCell(e,new i.CellData)},e.prototype.translateToString=function(e,t,r){return this._line.translateToString(e,t,r)},e}();t.BufferLineApiView=n},8285:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferNamespaceApi=void 0;var i=r(8771),n=r(8460),o=function(){function e(e){var t=this;this._core=e,this._onBufferChange=new n.EventEmitter,this._normal=new i.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new i.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((function(){return t._onBufferChange.fire(t.active)}))}return Object.defineProperty(e.prototype,"onBufferChange",{get:function(){return this._onBufferChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"active",{get:function(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"normal",{get:function(){return this._normal.init(this._core.buffers.normal)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alternate",{get:function(){return this._alternate.init(this._core.buffers.alt)},enumerable:!1,configurable:!0}),e}();t.BufferNamespaceApi=o},7975:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ParserApi=void 0;var r=function(){function e(e){this._core=e}return e.prototype.registerCsiHandler=function(e,t){return this._core.registerCsiHandler(e,(function(e){return t(e.toArray())}))},e.prototype.addCsiHandler=function(e,t){return this.registerCsiHandler(e,t)},e.prototype.registerDcsHandler=function(e,t){return this._core.registerDcsHandler(e,(function(e,r){return t(e,r.toArray())}))},e.prototype.addDcsHandler=function(e,t){return this.registerDcsHandler(e,t)},e.prototype.registerEscHandler=function(e,t){return this._core.registerEscHandler(e,t)},e.prototype.addEscHandler=function(e,t){return this.registerEscHandler(e,t)},e.prototype.registerOscHandler=function(e,t){return this._core.registerOscHandler(e,t)},e.prototype.addOscHandler=function(e,t){return this.registerOscHandler(e,t)},e}();t.ParserApi=r},7090:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeApi=void 0;var r=function(){function e(e){this._core=e}return e.prototype.register=function(e){this._core.unicodeService.register(e)},Object.defineProperty(e.prototype,"versions",{get:function(){return this._core.unicodeService.versions},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"activeVersion",{get:function(){return this._core.unicodeService.activeVersion},set:function(e){this._core.unicodeService.activeVersion=e},enumerable:!1,configurable:!0}),e}();t.UnicodeApi=r},744:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.BufferService=t.MINIMUM_ROWS=t.MINIMUM_COLS=void 0;var a=r(2585),c=r(5295),l=r(8460),h=r(844);t.MINIMUM_COLS=2,t.MINIMUM_ROWS=1;var u=function(e){function r(r){var i=e.call(this)||this;return i._optionsService=r,i.isUserScrolling=!1,i._onResize=new l.EventEmitter,i._onScroll=new l.EventEmitter,i.cols=Math.max(r.rawOptions.cols||0,t.MINIMUM_COLS),i.rows=Math.max(r.rawOptions.rows||0,t.MINIMUM_ROWS),i.buffers=new c.BufferSet(r,i),i}return n(r,e),Object.defineProperty(r.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"buffer",{get:function(){return this.buffers.active},enumerable:!1,configurable:!0}),r.prototype.dispose=function(){e.prototype.dispose.call(this),this.buffers.dispose()},r.prototype.resize=function(e,t){this.cols=e,this.rows=t,this.buffers.resize(e,t),this.buffers.setupTabStops(this.cols),this._onResize.fire({cols:e,rows:t})},r.prototype.reset=function(){this.buffers.reset(),this.isUserScrolling=!1},r.prototype.scroll=function(e,t){void 0===t&&(t=!1);var r,i=this.buffer;(r=this._cachedBlankLine)&&r.length===this.cols&&r.getFg(0)===e.fg&&r.getBg(0)===e.bg||(r=i.getBlankLine(e,t),this._cachedBlankLine=r),r.isWrapped=t;var n=i.ybase+i.scrollTop,o=i.ybase+i.scrollBottom;if(0===i.scrollTop){var s=i.lines.isFull;o===i.lines.length-1?s?i.lines.recycle().copyFrom(r):i.lines.push(r.clone()):i.lines.splice(o+1,0,r.clone()),s?this.isUserScrolling&&(i.ydisp=Math.max(i.ydisp-1,0)):(i.ybase++,this.isUserScrolling||i.ydisp++)}else{var a=o-n+1;i.lines.shiftElements(n+1,a-1,-1),i.lines.set(o,r.clone())}this.isUserScrolling||(i.ydisp=i.ybase),this._onScroll.fire(i.ydisp)},r.prototype.scrollLines=function(e,t,r){var i=this.buffer;if(e<0){if(0===i.ydisp)return;this.isUserScrolling=!0}else e+i.ydisp>=i.ybase&&(this.isUserScrolling=!1);var n=i.ydisp;i.ydisp=Math.max(Math.min(i.ydisp+e,i.ybase),0),n!==i.ydisp&&(t||this._onScroll.fire(i.ydisp))},r.prototype.scrollPages=function(e){this.scrollLines(e*(this.rows-1))},r.prototype.scrollToTop=function(){this.scrollLines(-this.buffer.ydisp)},r.prototype.scrollToBottom=function(){this.scrollLines(this.buffer.ybase-this.buffer.ydisp)},r.prototype.scrollToLine=function(e){var t=e-this.buffer.ydisp;0!==t&&this.scrollLines(t)},o([s(0,a.IOptionsService)],r)}(h.Disposable);t.BufferService=u},7994:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CharsetService=void 0;var r=function(){function e(){this.glevel=0,this._charsets=[]}return e.prototype.reset=function(){this.charset=void 0,this._charsets=[],this.glevel=0},e.prototype.setgLevel=function(e){this.glevel=e,this.charset=this._charsets[e]},e.prototype.setgCharset=function(e,t){this._charsets[e]=t,this.glevel===e&&(this.charset=t)},e}();t.CharsetService=r},1753:function(e,t,r){var i=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},n=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CoreMouseService=void 0;var o=r(2585),s=r(8460),a={NONE:{events:0,restrict:function(){return!1}},X10:{events:1,restrict:function(e){return 4!==e.button&&1===e.action&&(e.ctrl=!1,e.alt=!1,e.shift=!1,!0)}},VT200:{events:19,restrict:function(e){return 32!==e.action}},DRAG:{events:23,restrict:function(e){return 32!==e.action||3!==e.button}},ANY:{events:31,restrict:function(e){return!0}}};function c(e,t){var r=(e.ctrl?16:0)|(e.shift?4:0)|(e.alt?8:0);return 4===e.button?(r|=64,r|=e.action):(r|=3&e.button,4&e.button&&(r|=64),8&e.button&&(r|=128),32===e.action?r|=32:0!==e.action||t||(r|=3)),r}var l=String.fromCharCode,h={DEFAULT:function(e){var t=[c(e,!1)+32,e.col+32,e.row+32];return t[0]>255||t[1]>255||t[2]>255?"":""+l(t[0])+l(t[1])+l(t[2])},SGR:function(e){var t=0===e.action&&4!==e.button?"m":"M";return"[<"+c(e,!0)+";"+e.col+";"+e.row+t}},u=function(){function e(e,t){this._bufferService=e,this._coreService=t,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._onProtocolChange=new s.EventEmitter,this._lastEvent=null;for(var r=0,i=Object.keys(a);r=this._bufferService.cols||e.row<0||e.row>=this._bufferService.rows)return!1;if(4===e.button&&32===e.action)return!1;if(3===e.button&&32!==e.action)return!1;if(4!==e.button&&(2===e.action||3===e.action))return!1;if(e.col++,e.row++,32===e.action&&this._lastEvent&&this._compareEvents(this._lastEvent,e))return!1;if(!this._protocols[this._activeProtocol].restrict(e))return!1;var t=this._encodings[this._activeEncoding](e);return t&&("DEFAULT"===this._activeEncoding?this._coreService.triggerBinaryEvent(t):this._coreService.triggerDataEvent(t,!0)),this._lastEvent=e,!0},e.prototype.explainEvents=function(e){return{down:!!(1&e),up:!!(2&e),drag:!!(4&e),move:!!(8&e),wheel:!!(16&e)}},e.prototype._compareEvents=function(e,t){return e.col===t.col&&e.row===t.row&&e.button===t.button&&e.action===t.action&&e.ctrl===t.ctrl&&e.alt===t.alt&&e.shift===t.shift},i([n(0,o.IBufferService),n(1,o.ICoreService)],e)}();t.CoreMouseService=u},6975:function(e,t,r){var i,n=this&&this.__extends||(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CoreService=void 0;var a=r(2585),c=r(8460),l=r(1439),h=r(844),u=Object.freeze({insertMode:!1}),f=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,origin:!1,reverseWraparound:!1,sendFocus:!1,wraparound:!0}),_=function(e){function t(t,r,i,n){var o=e.call(this)||this;return o._bufferService=r,o._logService=i,o._optionsService=n,o.isCursorInitialized=!1,o.isCursorHidden=!1,o._onData=o.register(new c.EventEmitter),o._onUserInput=o.register(new c.EventEmitter),o._onBinary=o.register(new c.EventEmitter),o._scrollToBottom=t,o.register({dispose:function(){return o._scrollToBottom=void 0}}),o.modes=(0,l.clone)(u),o.decPrivateModes=(0,l.clone)(f),o}return n(t,e),Object.defineProperty(t.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onUserInput",{get:function(){return this._onUserInput.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),t.prototype.reset=function(){this.modes=(0,l.clone)(u),this.decPrivateModes=(0,l.clone)(f)},t.prototype.triggerDataEvent=function(e,t){if(void 0===t&&(t=!1),!this._optionsService.rawOptions.disableStdin){var r=this._bufferService.buffer;r.ybase!==r.ydisp&&this._scrollToBottom(),t&&this._onUserInput.fire(),this._logService.debug('sending data "'+e+'"',(function(){return e.split("").map((function(e){return e.charCodeAt(0)}))})),this._onData.fire(e)}},t.prototype.triggerBinaryEvent=function(e){this._optionsService.rawOptions.disableStdin||(this._logService.debug('sending binary "'+e+'"',(function(){return e.split("").map((function(e){return e.charCodeAt(0)}))})),this._onBinary.fire(e))},o([s(1,a.IBufferService),s(2,a.ILogService),s(3,a.IOptionsService)],t)}(h.Disposable);t.CoreService=_},3730:function(e,t,r){var i=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},n=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.DirtyRowService=void 0;var o=r(2585),s=function(){function e(e){this._bufferService=e,this.clearRange()}return Object.defineProperty(e.prototype,"start",{get:function(){return this._start},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"end",{get:function(){return this._end},enumerable:!1,configurable:!0}),e.prototype.clearRange=function(){this._start=this._bufferService.buffer.y,this._end=this._bufferService.buffer.y},e.prototype.markDirty=function(e){ethis._end&&(this._end=e)},e.prototype.markRangeDirty=function(e,t){if(e>t){var r=e;e=t,t=r}ethis._end&&(this._end=t)},e.prototype.markAllDirty=function(){this.markRangeDirty(0,this._bufferService.rows-1)},i([n(0,o.IBufferService)],e)}();t.DirtyRowService=s},4348:function(e,t,r){var i=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var i,n=0,o=t.length;n0?n[0].index:t.length;if(t.length!==u)throw new Error("[createInstance] First service dependency of "+e.name+" at position "+(u+1)+" conflicts with "+t.length+" static arguments");return new(e.bind.apply(e,i([void 0],i(i([],t,!0),s,!0),!1)))},e}();t.InstantiationService=a},7866:function(e,t,r){var i=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(s=(o<3?n(s):o>3?n(t,r,s):n(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},n=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}},o=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var i,n=0,o=t.length;n{function r(e,t,r){t.di$target===t?t.di$dependencies.push({id:e,index:r}):(t.di$dependencies=[{id:e,index:r}],t.di$target=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.createDecorator=t.getServiceDependencies=t.serviceRegistry=void 0,t.serviceRegistry=new Map,t.getServiceDependencies=function(e){return e.di$dependencies||[]},t.createDecorator=function(e){if(t.serviceRegistry.has(e))return t.serviceRegistry.get(e);var i=function(e,t,n){if(3!==arguments.length)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");r(i,e,n)};return i.toString=function(){return e},t.serviceRegistry.set(e,i),i}},2585:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.IUnicodeService=t.IOptionsService=t.ILogService=t.LogLevelEnum=t.IInstantiationService=t.IDirtyRowService=t.ICharsetService=t.ICoreService=t.ICoreMouseService=t.IBufferService=void 0;var i,n=r(8343);t.IBufferService=(0,n.createDecorator)("BufferService"),t.ICoreMouseService=(0,n.createDecorator)("CoreMouseService"),t.ICoreService=(0,n.createDecorator)("CoreService"),t.ICharsetService=(0,n.createDecorator)("CharsetService"),t.IDirtyRowService=(0,n.createDecorator)("DirtyRowService"),t.IInstantiationService=(0,n.createDecorator)("InstantiationService"),(i=t.LogLevelEnum||(t.LogLevelEnum={}))[i.DEBUG=0]="DEBUG",i[i.INFO=1]="INFO",i[i.WARN=2]="WARN",i[i.ERROR=3]="ERROR",i[i.OFF=4]="OFF",t.ILogService=(0,n.createDecorator)("LogService"),t.IOptionsService=(0,n.createDecorator)("OptionsService"),t.IUnicodeService=(0,n.createDecorator)("UnicodeService")},1480:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeService=void 0;var i=r(8460),n=r(225),o=function(){function e(){this._providers=Object.create(null),this._active="",this._onChange=new i.EventEmitter;var e=new n.UnicodeV6;this.register(e),this._active=e.version,this._activeProvider=e}return Object.defineProperty(e.prototype,"onChange",{get:function(){return this._onChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"versions",{get:function(){return Object.keys(this._providers)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"activeVersion",{get:function(){return this._active},set:function(e){if(!this._providers[e])throw new Error('unknown Unicode version "'+e+'"');this._active=e,this._activeProvider=this._providers[e],this._onChange.fire(e)},enumerable:!1,configurable:!0}),e.prototype.register=function(e){this._providers[e.version]=e},e.prototype.wcwidth=function(e){return this._activeProvider.wcwidth(e)},e.prototype.getStringCellWidth=function(e){for(var t=0,r=e.length,i=0;i=r)return t+this.wcwidth(n);var o=e.charCodeAt(i);56320<=o&&o<=57343?n=1024*(n-55296)+o-56320+65536:t+=this.wcwidth(o)}t+=this.wcwidth(n)}return t},e}();t.UnicodeService=o}},t={};return function r(i){var n=t[i];if(void 0!==n)return n.exports;var o=t[i]={exports:{}};return e[i].call(o.exports,o,o.exports,r),o.exports}(4389)})()})); +//# sourceMappingURL=xterm.js.map \ No newline at end of file diff --git a/istore/luci/luci-lib-xterm/luasrc/view/xterm/embed.htm b/istore/luci/luci-lib-xterm/luasrc/view/xterm/embed.htm new file mode 100644 index 00000000..b16d1105 --- /dev/null +++ b/istore/luci/luci-lib-xterm/luasrc/view/xterm/embed.htm @@ -0,0 +1,3 @@ + + + diff --git a/istore/luci/taskd/Makefile b/istore/luci/taskd/Makefile new file mode 100644 index 00000000..9b7e12a4 --- /dev/null +++ b/istore/luci/taskd/Makefile @@ -0,0 +1,41 @@ +# +# Copyright (C) 2022 jjm2473 +# +# This is free software, licensed under the MIT License. +# + +include $(TOPDIR)/rules.mk + + +PKG_NAME:=taskd +PKG_VERSION:=1.0.3 +PKG_RELEASE:=2 +PKG_MAINTAINER:=jjm2473 + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) + SECTION:=utils + CATEGORY:=Utilities + TITLE:=Simple Task Manager + DEPENDS:=+procd +script-utils +coreutils +coreutils-stty + PKGARCH:=all +endef + +define Package/$(PKG_NAME)/description + Simple Task Manager based on procd +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/etc/init.d $(1)/usr/libexec + $(INSTALL_BIN) ./files/tasks.init $(1)/etc/init.d/tasks + $(INSTALL_BIN) ./files/taskd.sh $(1)/usr/libexec/taskd +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/istore/luci/taskd/files/taskd.sh b/istore/luci/taskd/files/taskd.sh new file mode 100755 index 00000000..7edb0429 --- /dev/null +++ b/istore/luci/taskd/files/taskd.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +TASK_ID="$1" +TASK_CMD="$2" + +exec >"/var/log/tasks/$TASK_ID.log" 2>&1 + +export HOME=/root +export TERM=xterm-256color + +exec script -efqc 'onexit() { + /etc/init.d/tasks _task_onstop "'"$TASK_ID"'" "$?" +} +trap onexit EXIT; +stty cols 80 rows 24; +'"$TASK_CMD" /dev/null diff --git a/istore/luci/taskd/files/tasks.init b/istore/luci/taskd/files/tasks.init new file mode 100755 index 00000000..5e6cd3e0 --- /dev/null +++ b/istore/luci/taskd/files/tasks.init @@ -0,0 +1,157 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2022 jjm2473@gmail.com + +USE_PROCD=1 +START=49 + +extra_command "task_add" " [] Add and run a task, time_wait is wait time before auto delete stopped task, in seconds, -1 means forever" +extra_command "task_del" " Stop and delete task" +extra_command "task_status" "[] Dump task status, dump all tasks if no task_id specified" +extra_command "task_gc" "Auto delete exipred (stopped and after timw_wait) tasks" +extra_command "_task_onstop" " Update stop time, for internal usage" + +_task_add() { + local task_id="${1}" + local task_cmd="${2}" + local time_wait="${3}" + > "/var/log/tasks/$task_id.log" + procd_open_instance "$task_id" + procd_set_param data start=`date +'%s'` time_wait="$time_wait" + procd_set_param command sh -c "exec /usr/libexec/taskd '$task_id' \"\$0\"" "$task_cmd" + procd_set_param stderr 1 + procd_close_instance +} + +task_add() { + local task_id="${1}" + local task_cmd="${2}" + local time_wait="${3}" + [ -z "$task_id" -o -z "$task_cmd" ] && return 127 + + if service_running "$task_id"; then + echo "already running" >&2 + return 1 + fi + if ! mkdir -p /var/log/tasks; then + echo "create /var/log/tasks failed!" >&2 + return 1 + fi + rc_procd _task_add "$task_id" "$task_cmd" "$time_wait" + return 0 +} + +_task_del() { + local service="${1}" + local task_id="${2}" + procd_kill "$service" "$task_id" + > "/var/log/tasks/$task_id.log" + rm -f "/var/log/tasks/$task_id.log" +} + +task_del() { + local task_id="${1}" + [ -z "$task_id" ] && return 127 + procd_lock + _task_del "$(basename ${basescript:-$initscript})" "$task_id" + if [ "$(_task_status "$task_id" | jsonfilter -e '$.running' 2>/dev/null)" = "true" ]; then + return 1 + else + return 0 + fi +} + +_task_status() { + local service="$(basename ${basescript:-$initscript})" + local instance="$1" + local data + + json_init + json_add_string name "$service" + + data=$(_procd_ubus_call list | jsonfilter -e '@["'"$service"'"]') + [ -z "$data" ] && return 1 + + data=$(echo "$data" | jsonfilter -e '$.instances') + if [ -z "$data" ]; then + if [ -z "$instance" ]; then + echo "{}" + return 0 + fi + return 1 + fi + + if [ -z "$instance" ]; then + echo "$data" + else + instance="\"$instance\"" + echo "$data" | jsonfilter -e '$['"$instance"']' + fi + return 0 +} + +task_status() { + local task_id="${1}" + _task_status "$task_id" +} + +task_gc() { + local service="$(basename ${basescript:-$initscript})" + local task_id instance time_wait + local data + + json_init + [ -n "$service" ] && json_add_string name "$service" + + data=$(_procd_ubus_call list | jsonfilter -e '@["'"$service"'"]') + [ -z "$data" ] && return 1 + + data=$(echo "$data" | jsonfilter -e '$.instances') + [ -z "$data" ] && return 1 + + procd_lock + + ls /var/log/tasks/ | sed 's/.log$//g' | while read task_id; do + instance=$(echo "$data" | jsonfilter -e '$["'"$task_id"'"]') + [ "$(echo "$instance" | jsonfilter -e '$.running')" = "false" ] || continue + time_wait=$(echo "$instance" | jsonfilter -e '$.data.time_wait') + [ "$time_wait" = "-1" ] && continue + [ $(($(date +'%s' -r "/var/log/tasks/$task_id.log") + ${time_wait:-0})) -lt `date +'%s'` ] && _task_del "$service" "$task_id" + done +} + +_insert_exit() { + local exit_code="$2" + eval "`jshn -r "$1" | grep -v json_init`" + json_select data || { + _procd_set_param data stop=`date +'%s'` exit_code="$exit_code" + return + } + json_add_string stop `date +'%s'` + json_add_string exit_code "$exit_code" + json_select .. +} + +_task_exit() { + local task_id="$1" + local exit_code="$2" + local inst_json="$3" + + _procd_call json_add_object "$task_id" + _procd_call _insert_exit "$inst_json" "$exit_code" + _procd_call json_close_object +} + +_task_onstop() { + local task_id="${1}" + local exit_code="${2}" + [ -z "$task_id" ] && return 127 + local service="$(basename ${basescript:-$initscript})" + + json_init + json_add_string name "$service" + data=$(_procd_ubus_call list | jsonfilter -e '@["'"$service"'"].instances["'"$task_id"'"]') + [ -z "$data" ] && return 1 + json_cleanup + + rc_procd _task_exit "$task_id" "$exit_code" "$data" +} diff --git a/istore/preview/istore-preview.png b/istore/preview/istore-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..01c21a9edef4bea52e237c246df7eef7fd8c3e5e GIT binary patch literal 1229460 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
  • Di?ko_u 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
    t%H4r74kYnQsK%5sC@^BR@q%mq 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

    KdU*@GqT?zaK&59XG4OE-T>tH2uc1rn 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

    9jbTAi?N&-vD&d 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