Greasy Fork

【💯💯💯2024】网络教育、专业技术、继续教育等视频学习伴侣

后台继续播放📺高倍数🤖自动挂机无人值守🔥继续教育🎗️远程教育,🚩专业技术人员,安徽专技网,建投学堂、雨课堂、温州继续教育网、❇山东青年政治学院,🛎河南教师培训网,宁夏专业技术人员,黑龙江省网络助学平台,青岛市,🌈浙里学习、🐱‍🚀云课程、山东干部网络学院,河北教师教育网、隆泰达培训、🎊东营市继续教育网专业科目培训平台、百年树人、会计人员继续教育🥇深i学、济宁市高级职业学校、基础教育进修网、高等学历继续教育网络学习平台、🐱‍🚀河南专技在线、青岛大学、和学在线、湖南农民大学生⏩全国煤炭行业现代❤️浙江文化干部🤖新营造MOOC❤️贵州省建设行业职业技能管理中心、广州市干部培训❤️长春工业大学🎉西安工业大学168网校🥇在线壹佰分🎉一点通🎉上海开放大学🔉专业技术人员继续教育网📺卫生健康人才职业技能培养学习平台✅株洲教师教育1️⃣安徽专业技术人员🔥广东省教师继续教育信息管理平台🎗️河北干部网络学院↗️西安工业大学🔛江西科技学院、河南华夏基础😉九江学院继续教育学院成教平台🎉国家开放大,🧠学青书学堂、云南省执业药师、马鞍山市专业技术人员、湖南师范大学

目前为 2024-06-21 提交的版本。查看 最新版本

// ==UserScript==
// @name         【💯💯💯2024】网络教育、专业技术、继续教育等视频学习伴侣
// @namespace    http://tampermonkey.net/
// @version      6.6.0
// @description  后台继续播放📺高倍数🤖自动挂机无人值守🔥继续教育🎗️远程教育,🚩专业技术人员,安徽专技网,建投学堂、雨课堂、温州继续教育网、❇山东青年政治学院,🛎河南教师培训网,宁夏专业技术人员,黑龙江省网络助学平台,青岛市,🌈浙里学习、🐱‍🚀云课程、山东干部网络学院,河北教师教育网、隆泰达培训、🎊东营市继续教育网专业科目培训平台、百年树人、会计人员继续教育🥇深i学、济宁市高级职业学校、基础教育进修网、高等学历继续教育网络学习平台、🐱‍🚀河南专技在线、青岛大学、和学在线、湖南农民大学生⏩全国煤炭行业现代❤️浙江文化干部🤖新营造MOOC❤️贵州省建设行业职业技能管理中心、广州市干部培训❤️长春工业大学🎉西安工业大学168网校🥇在线壹佰分🎉一点通🎉上海开放大学🔉专业技术人员继续教育网📺卫生健康人才职业技能培养学习平台✅株洲教师教育1️⃣安徽专业技术人员🔥广东省教师继续教育信息管理平台🎗️河北干部网络学院↗️西安工业大学🔛江西科技学院、河南华夏基础😉九江学院继续教育学院成教平台🎉国家开放大,🧠学青书学堂、云南省执业药师、马鞍山市专业技术人员、湖南师范大学
// @author
// @match        *://*/*
// @grant        GM_xmlhttpRequest
// @grant        GM_openInTab
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        window.close
// @antifeature  payment
// @noframes
// @icon         https://www.zhihuishu.com/favicon.ico
// @connect      www.gaozhiwang.top
// @connect      localhost
// @antifeature  payment  学习辅助付费
// @license      MIT
// ==/UserScript==

"use strict";
var __awaiter = this && this.__awaiter || function (e, a, s, r) {
    return new (s = s || Promise)(function (n, t) {
        function i(e) {
            try {
                l(r.next(e))
            } catch (e) {
                t(e)
            }
        }
        function o(e) {
            try {
                l(r.throw(e))
            } catch (e) {
                t(e)
            }
        }
        function l(e) {
            var t;
            e.done ? n(e.value) : ((t = e.value) instanceof s ? t : new s(function (e) {
                e(t)
            })).then(i, o)
        }
        l((r = r.apply(e, a || [])).next())
    })
};
!function () {
    let bserUrl = "";
    const panelcss = `
        .myTool{
            background: #fff;
            width: 387px;
            font-size: 14px;
            display: flex;
            flex-direction: column;
            align-items: center;
            position: fixed;
            z-index: 9999;
            top: 70px;
            left: 44px;
            box-sizing: border-box;
            padding: 12px 0px;
            border-radius: 5px;
            box-shadow: 0 0 9px rgba(0,0,0,.5);
        }
        .controls{
            position: absolute;
            right: 12px;
            font-size: 27px;
            top: 9px;
            cursor: pointer;
            transition: all 0.4s;
        }
        .controls:hover{
            color: #1f74c;
            transform: rotate(360deg);
        }
        
        .myTool-content{
            width: 94%;
            transition: all 0.4s;
            overflow: hidden;
        }
        .mytoolkeyipt{
            width: 130px;
            height: 22px !important;
            outline: none;
            padding: 0px 3px;
            border: 1px solid #757575FF;
            border-radius: 3px;
            font-size: 13px;
            padding: 0px 3px;
            margin-right: 5px;
            margin-top: 2px;
        }
        .addkey-btn{
            color: #fff;
            background: #1f74ca;
        }
        .removkey-btn{
            color: #000;
            display: none;
            background: #eee;
        }
        .handleKeyBtn{
            width: 54px;
            height: 24px;
            margin-top: 2px;
            border: none;
            font-size: 12px;
            border-radius: 2px;
            cursor: pointer;
        }
        
        .handleSpeedUp{
            background: orange;
            font-size: 12px;
            color: #fff;
            padding: 4px 15px;
            border-radius: 5px;
            margin: 0 auto;
            max-width: 80px;
            margin-top: 10px;
            cursor: pointer;
            text-align: center;
        }
        .ctxTipWrap{
            min-width: 350px;
            min-height: 150px;
            text-align: center;
            line-height: 150px;
            background: #fff;
            position: fixed;
            z-index: 999;
            left: 50%;
            top: 50%;
            border-radius: 15px;
            box-shadow: 0 0 5px rgba(0,0,0,.6);
            display:none;
        }
        .cxtsection{
          width: 100%;
          box-sizing: border-box;
          padding: 0 5px;
          margin-bottom: 2px;
        }
        .cxtsection .ctx-title{
          text-align: left;
          margin-top: 12px;
          font-size: 12px;
          color: #4e5969;
          border-left: 2px solid #1f74ca;
          border-radius: 2px;
          padding-left: 3px;
          line-height: 16px;
        }
        .ctxsection2{
          display: flex;
          justify-content: space-between;
        }
        .ctxsection2 .speed-select{
          width: 50%;
          height: 18px !important;
          outline: none;
          position: relative;
          top: 10px;
          border: 1px solid #757575FF;
          border-radius: 3px;
          padding: 0;
          padding-left: 10px;
        }
        .ctxsection3{
            display: flex;
            align-items: center;
            justify-content: space-between;
        }
        .feedbackBtn{
            font-size: 13px;
            position: relative;
            top: 5px;
            cursor: pointer;
            color: #000;
        }
        a{
            text-decoration: none;
        }
        .myTool-pannel_wrap{
            border: 1px solid #a99e9e;
            height: 100px;
            background: rgb(190 203 206);
            border-radius: 6px;
            margin-top: 6px;
            color: #000;
            padding: 2px;
            box-sizing: border-box;
        }
    `;
    class GMTool {
        constructor() {
        }
        getValue(e) {
            return GM_getValue(e, null)
        }
        setValue(e, t) {
            GM_setValue(e, t)
        }
        openInTab(e) {
            GM_openInTab(e, {active: !0})
        }
    }
    const MyTool = new GMTool;
    let ElementObj = {}, Internetcourse = {
        das01: {
            id: 1,
            name: "\u56db\u5ddd\u519c\u4e1a",
            mainClass: "CTXCommon",
            host: ["player.cnzx.info", "cj.cnzx.info"],
            option: {
                nodeListClass: ".nb-lession-item", activeClass: "nb-current-lession-item", _init(l) {
                    return new Promise(e => {
                        let o = setInterval(() => __awaiter(this, void 0, void 0, function* () {
                            if (ElementObj.$parentNodes = document.querySelectorAll(".chapter"), ElementObj.$parentNodes.length) {
                                clearInterval(o);
                                for (var e of ElementObj.$parentNodes) e.classList.contains("ant-menu-submenu-open") || (e.click(), yield sleep(300));
                                ElementObj.$allTask = document.querySelectorAll(".section");
                                for (let e = 0; e < ElementObj.$allTask.length; e++) {
                                    var t = ElementObj.$allTask[e];
                                    if ("\u5df2\u5b8c\u6210" !== t.querySelector(".u-clicon").title) {
                                        l.currentIndex = e, setTimeout(() => {
                                            l.handleClickSpeedUp()
                                        }, 3e3), t.classList.contains("section-cur") || t.click();
                                        break
                                    }
                                }
                            } else {
                                var n = document.querySelector("body");
                                if (n && "/Student/Interface/ChaKanKeJian.aspx" == location.pathname) {
                                    clearInterval(o), yield l.changeHtml(n), l.addInfo("\u521d\u59cb\u5316\u5b8c\u6210,\u5373\u5c06\u5f00\u59cb\u540e\u53f0\u64ad\u653e");
                                    for (var i of new Array(1e4)) l.addInfo("🔊🔊\u6b63\u5728\u540e\u53f0\u64ad\u653e, \u5b66\u4e60\u5e73\u53f05\u5206\u949f\u4fdd\u5b58\u4e00\u6b21\u8fdb\u5ea6,\u8bf7\u52ff\u9891\u7e41\u5237\u65b0"), i % 100 == 0 && (i = yield new Promise(l => {
                                        fetch("https://cj.cnzx.info/Student/KaoHe/XingChengXingKaoHeChengJi.aspx", {
                                            headers: {
                                                accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
                                                "accept-language": "zh-CN,zh;q=0.9",
                                                "cache-control": "max-age=0",
                                                "sec-ch-ua": '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
                                                "sec-ch-ua-mobile": "?0",
                                                "sec-ch-ua-platform": '"Windows"',
                                                "sec-fetch-dest": "document",
                                                "sec-fetch-mode": "navigate",
                                                "sec-fetch-site": "same-origin",
                                                "sec-fetch-user": "?1",
                                                "upgrade-insecure-requests": "1"
                                            },
                                            referrer: "https://cj.cnzx.info/Student/Default.aspx",
                                            referrerPolicy: "strict-origin-when-cross-origin",
                                            body: null,
                                            method: "GET",
                                            mode: "cors",
                                            credentials: "include"
                                        }).then(e => e.text()).then(e => {
                                            var t = document.createElement("div");
                                            t.innerHTML = e;
                                            var n, i = t.querySelectorAll(".tableListGroup")[1].querySelectorAll("tr");
                                            let o = "";
                                            for (let e = 0; e < i.length; e++) 0 !== e && ((n = {
                                                name: "",
                                                t1: "0",
                                                t2: "0"
                                            }).name = i[e].querySelectorAll(".contentWhite")[0].innerText, n.t1 = i[e].querySelectorAll(".contentWhite")[1].innerText, n.t2 = i[e].querySelectorAll(".contentWhite")[2].innerText, o += `🔹${n.name}:【${n.t1}, ${n.t2}】<br/>`);
                                            l(o)
                                        })
                                    }), l.addInfo(i)), yield sleep(3e3)
                                }
                            }
                        }), 500)
                    })
                }
            }
        }
    }, speedArr = [1, 2, 3, 5, 10, 16], toolOption = {accelerator: 1, CtxMain: null, SchoolType: -1};
    class Main {
        constructor() {
            this.studentType = 1, this.speedStatus = 0, this.isAdaptive = 1, this.listenVidoeStatusTimer = null, this.init()
        }
        init() {
        }
        updateSpeedElement(e) {
            0 != this.speedStatus && (ElementObj.$video.playbackRate = e)
        }
        handleClickSpeedUp(e, t = 0) {
            return __awaiter(this, void 0, void 0, function* () {
                this.speedStatus = 1, this.isAdaptive = 1, toolOption.CtxMain.play()
            })
        }
        handleChangeCtxSpeed(e) {
            var t = speedArr, n = Number(e);
            e && t.includes(n) && (toolOption.accelerator = n, localStorage.setItem("_localSpeed", n.toString()), ElementObj.$video) && (ElementObj.$video.playbackRate = n)
        }
        colletionSchoolData() {
            return __awaiter(this, void 0, void 0, function* () {
            })
        }
        listenVidoeStatus(t, n) {
            if (t) {
                let e = 0;
                this.listenVidoeStatusTimer = setInterval(() => {
                    t.readyState < 4 && 20 <= (e += 1) && location.reload(), t.paused && (e += 1, "function" == typeof n) && (20 <= e ? location.reload() : n())
                }, 5e3)
            }
        }
        changeHtml(t) {
            return __awaiter(this, void 0, void 0, function* () {
                var e;
                ElementObj.$ctxstatsbox = document.querySelector(".ctxstatsbox"), ElementObj.$ctxstatsbox || ((e = document.createElement("div")).setAttribute("class", "ctxstatsbox"), e.setAttribute("style", `
                width: 100%;
                height: 100%;
                background: #eae9e9;
                position: absolute;
                z-index: 999;
                overflow: scroll;
                top: 0;
                padding-left: 10px;
            `), t.appendChild(e), yield sleep(300), ElementObj.$ctxstatsbox = document.querySelector(".ctxstatsbox")), this.addInfo("🔉\u521d\u59cb\u5316\u5df2\u5b8c\u6210,\u6b63\u5728\u64ad\u653e")
            })
        }
        addInfo(e, t) {
            15 <= document.querySelectorAll(".ctxstatsbox_li").length && (ElementObj.$ctxstatsbox.innerHTML = "");
            t = `<li class="ctxstatsbox_li" style="color: ${0 == t ? "#f01414" : "#000"};line-height: 30px;font-size: 16px;list-style: none;">${e}</li>`;
            ElementObj.$ctxstatsbox.innerHTML += t
        }
        listenPageHide() {
            let t;
            document.addEventListener("visibilitychange", () => {
                if (document.hidden) {
                    let e = 0;
                    t = setInterval(() => {
                        5 <= (e += 1) && this.addInfo("⚠️⚠️⚠️\u8bf7\u52ff\u957f\u65f6\u95f4\u9690\u85cf\u8be5\u5b66\u4e60\u9875\u9762", 0)
                    }, 5e3)
                } else clearInterval(t)
            })
        }
        pdPlayFn(e) {
            var t = MyTool.getValue("spanClassName") || [];
            -1 != t.indexOf(e) ? toolOption.CtxMain.play() : (t.push(e), MyTool.setValue("spanClassName", t), this.handleClickSpeedUp())
        }
        getVideoDom() {
            return new Promise(e => {
                let t = 0, n = setInterval(() => {
                    t += 1, ElementObj.$video = document.querySelectorAll("video")[0], ElementObj.$video ? (clearInterval(n), e(1)) : 7 <= t && (clearInterval(n), e(2))
                }, 1e3)
            })
        }
    }
    let times = 1714117290426;
    if (!(270 < ((new Date).getTime() - times) / 1e3 / 60 / 60 / 24)) {
        class CTXCommon extends Main {
            constructor(e) {
                super(), this.taskLength = 0, this.parentIndex = -1, this.currentIndex = -1, this.nodeListClass = e.nodeListClass, this.activeClass = e.activeClass || "", this.nextClass = e.nextClass || "", this.openListenPlayStatus = "boolean" != typeof e.openListenPlayStatus || e.openListenPlayStatus, this.openListenPlayTime = "boolean" == typeof e.openListenPlayTime && e.openListenPlayTime, this.afterPlayEnd = e.afterPlayEnd, this.getCurrentIndexByOption = e.getCurrentIndexByOption, this.playNext = e.playNext || this.playNext, this.listenRebortFn = e.listenRebortFn, this.getVideoDom = "function" == typeof e.videoEle ? e.videoEle : this.getVideoDom, this.playFn = e.playFn, e._init ? e._init(this) : this._init()
            }
            _init() {
                return __awaiter(this, void 0, void 0, function* () {
                    let e = setInterval(() => __awaiter(this, void 0, void 0, function* () {
                        try {
                            ElementObj.$allTask = document.querySelectorAll(this.nodeListClass), ElementObj.$allTask.length && (ElementObj.$handleSpeedUp.style.display = "none", clearInterval(e), this.getCurrentIndex())
                        } catch (e) {
                        }
                    }), 1e3)
                })
            }
            getCurrentIndex() {
                return __awaiter(this, void 0, void 0, function* () {
                    if (this.getCurrentIndexByOption) this.currentIndex = yield this.getCurrentIndexByOption(); else for (var e = 0; e <= ElementObj.$allTask.length - 1; e++) if (ElementObj.$allTask[e].classList.contains(this.activeClass)) {
                        this.currentIndex = e;
                        break
                    }
                    -1 != this.currentIndex && (showTip("✅✅✅\u521d\u59cb\u5316\u5b8c\u6210,5\u79d2\u540e\u5f00\u59cb\u64ad\u653e", 3e3), setTimeout(() => {
                        this.handleClickSpeedUp()
                    }, 4e3))
                })
            }
            getCurrentIndex2() {
                return __awaiter(this, void 0, void 0, function* () {
                    ElementObj.$allTask = document.querySelectorAll(".cd-inline-block.two-right li a");
                    let t = MyTool.getValue("historyData") || null;
                    var e, n = document.querySelector(".two-active a").innerText;
                    t && (e = ElementObj.$allTask.values().find(e => {
                        if (-1 == t.indexOf(e.innerText)) return e
                    })) && n != e.innerText ? e.click() : this.play()
                })
            }
            getVideoDom() {
                return new Promise(e => {
                    let t = 0, n = setInterval(() => {
                        t += 1, ElementObj.$video = document.querySelectorAll("video")[0], ElementObj.$video ? (clearInterval(n), e(1)) : 7 <= t && (clearInterval(n), e(2))
                    }, 1e3)
                })
            }
            play() {
                return __awaiter(this, void 0, void 0, function* () {
                    clearInterval(this.timer), clearInterval(this.listenVidoeStatusTimer), clearInterval(this.listenRebortTime);
                    var e = yield this.getVideoDom();
                    this.playFn ? this.playFn(this) : (1 == e && (yield sleep(2e3), ElementObj.$video.volume = 0, ElementObj.$video.play(), this.openListenPlayStatus && this.listenVidoeStatus(ElementObj.$video, () => {
                        ElementObj.$video.volume = 0, ElementObj.$video.play()
                    }), this.openListenPlayTime && (yield this.changeHtml(ElementObj.$video.parentElement), this.listenPlayTime()), this.listenRebort(), ElementObj.$video.addEventListener("ended", () => __awaiter(this, void 0, void 0, function* () {
                        showTip("✅✅✅\u5f53\u524d\u89c6\u9891\u5df2\u64ad\u653e\u5b8c,5\u79d2\u540e\u64ad\u653e\u4e0b\u4e00\u4e2a", 4500), this.playNext(this)
                    })), ElementObj.$video.addEventListener("pause", () => {
                        setTimeout(() => {
                            ElementObj.$video.volume = 0, ElementObj.$video.play()
                        }, 1500)
                    })), 2 == e && (showTip("✅✅✅\u8be5\u7ae0\u8282\u4e3a\u6587\u6863,\u5373\u5c06\u81ea\u52a8\u5207\u6362\u4e0b\u4e00\u4e2a", 3e3), yield sleep(3e3), this.playNext()))
                })
            }
            listenRebort() {
                this.listenRebortTime = setInterval(() => {
                    this.listenRebortFn && "function" == typeof this.listenRebortFn && this.listenRebortFn()
                }, 1e3)
            }
            playNext() {
                return __awaiter(this, void 0, void 0, function* () {
                    if (!(this.currentIndex >= ElementObj.$allTask.length - 1)) {
                        yield sleep(2500), this.currentIndex += 1;
                        let e = ElementObj.$allTask[this.currentIndex];
                        null !== (e = this.nextClass ? ElementObj.$allTask[this.currentIndex].querySelector(this.nextClass) : e) && void 0 !== e && e.click(), this.afterPlayEnd && (yield this.afterPlayEnd()), setTimeout(() => {
                            this.handleClickSpeedUp()
                        }, 6e3)
                    }
                })
            }
            listenPlayTime() {
                let n = 0;
                this.timer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
                    n += 1;
                    var e = null == (e = ElementObj.$video) ? void 0 : e.currentTime, e = (e / 60).toFixed(2),
                        t = null == (t = ElementObj.$video) ? void 0 : t.duration;
                    this.addInfo(`\u5df2\u76d1\u6d4b${n}\u6b21,\u5f53\u524d\u72b6\u6001\u6b63\u5728\u5b66\u4e60,\u5df2\u64ad\u653e${e}\u5206\u949f,\u89c6\u9891\u603b\u65f6\u957f\u4e3a${t / 60}\u5206\u949f`)
                }), 5e3)
            }
        }
        class Addpanel {
            constructor() {
                this.$panelWrap = document.createElement("div"), this.$panelStyle = document.createElement("style"), this._init()
            }
            _init() {
                var e;
                this.$panelWrap.innerHTML = this.getCTXHTML(), this.$panelStyle.innerHTML = panelcss, null != (e = document.querySelector("head")) && e.appendChild(this.$panelStyle), 3 == toolOption.SchoolType ? null != (e = document.querySelector("#bigContainer")) && e.appendChild(this.$panelWrap) : 7 == toolOption.SchoolType ? null != (e = document.querySelector(".layout-content")) && e.appendChild(this.$panelWrap) : 11 == toolOption.SchoolType ? null != (e = document.querySelector(".task-dashboard-page")) && e.appendChild(this.$panelWrap) : 18 == toolOption.SchoolType ? null != (e = document.querySelector(".screen_wide_1")) && e.appendChild(this.$panelWrap) : null != (e = document.querySelector("body")) && e.appendChild(this.$panelWrap), ElementObj.$title3 = document.querySelector(".title3"), ElementObj.$handleSpeedUp = document.querySelector(".handleSpeedUp"), ElementObj.$playButton = document.querySelector("#playButton"), ElementObj.$ctxTipWrap = document.querySelector("#ctxTipWrap"), ElementObj.$ctxsection2 = document.querySelector(".ctxsection2"), this.optimizePannel(), this.setSpeedOption(), this.addEvent()
            }
            optimizePannel() {
            }
            setSpeedOption() {
                ElementObj.$speedSelect = document.querySelector("#ctxspeed");
                let e = "";
                for (var t = 0; t < speedArr.length; t++) {
                    var n = `
                <option value="${1.1 == speedArr[t] ? 1 : speedArr[t]}" class="option">
                  × ${1.1 == speedArr[t] ? 1.2 : speedArr[t]}.0
                </option>
                `;
                    e += n
                }
                ElementObj.$speedSelect.innerHTML = e;
                var i = localStorage.getItem("_localSpeed");
                i && (ElementObj.$speedSelect.value = i, toolOption.accelerator = Number(i))
            }
            handleSetHtml(e) {
                try {
                    ElementObj.$ipt.style.display = "none", ElementObj.$title3.innerText = "\u5f53\u524dkey:", ElementObj.$mytoolkey.innerText = e, ElementObj.$mytoolkey.style.display = "block", ElementObj.$nokey.style.display = "none", ElementObj.$removeKey.style.display = "block", ElementObj.$addKey.style.display = "none", ElementObj.userKey = e
                } catch (e) {
                }
            }
            addEvent() {
                ElementObj.$handleSpeedUp.addEventListener("click", () => {
                    toolOption.CtxMain.handleClickSpeedUp()
                }), ElementObj.$ctxsection2.addEventListener("change", e => {
                    toolOption.CtxMain.handleChangeCtxSpeed(e.target.value)
                })
            }
            getCTXHTML() {
                return `
            <div class="myTool" style="opacity: 0;">
                <div class="myTool-content">
                    <div class="cxtsection ctxsection2">
                      <div class="ctx-title">
                        \u8bbe\u7f6e\u500d\u901f:
                      </div>
                      <select name="" id="ctxspeed" class="speed-select">
                        <option value="1" class="option">
                          × 1.0
                        </option>
                        <option value="5" class="option">
                          × 5.00
                        </option>
                        <option value="10" class="option" selected="selected">
                          × 10.00
                        </option>
                        <option value="16" class="option">
                          × 16.00
                        </option>
                      </select>
                    </div>
                    <div class="cxtsection cxtsection3 myTool-pannel" style="display: none"> 
                      <div class="ctx-title">
                        \u8f93\u5165\u4fe1\u606f:
                      </div>
                      <div class="myTool-pannel_wrap"><li></li></div>
                    </div>
                    
                    <div class="handleSpeedUp">\u70b9\u51fb\u52a0\u901f</div>
                </div>
                <div id="ctxTipWrap" class="ctxTipWrap"></div>
            </div>
            `
            }
        }
        function $el(e, t = window.document) {
            t.querySelector(e)
        }
        function sleep(t) {
            return new Promise(e => setTimeout(e, t))
        }
        function fetchData(n) {
            new Promise(t => {
                try {
                    GM_xmlhttpRequest(Object.assign(Object.assign({}, n), {
                        onload: function (e) {
                            200 == e.status && t(JSON.parse(e.response))
                        }
                    }))
                } catch (e) {
                    fetch(n.url, {method: n.method}).then(e => e.json()).then(e => {
                        t(e)
                    })
                }
            })
        }
        function showTip(e, t = 3500, n) {
            t = t || 3500, ElementObj.$ctxTipWrap.style.display = "block", ElementObj.$ctxTipWrap.innerText = e;
            setTimeout(() => {
                ElementObj.$ctxTipWrap.style.display = "none"
            }, t)
        }
        function recognitionType() {
            let current_host = location.host;
            if (!/www.gaozhiwang.top/.test(current_host)) {
                let result = {type: 0, option: null};
                for (var key in Internetcourse) Internetcourse[key].host.includes(current_host) && (result.type = 2, "CTXCommon" == Internetcourse[key].mainClass && (result.type = 1, result.option = Internetcourse[key].option), toolOption.CtxMain = eval(Internetcourse[key].mainClass), toolOption.SchoolType = Internetcourse[key].id);
                return result
            }
        }
        setTimeout(() => {
            var e = recognitionType();
            1 == (null == e ? void 0 : e.type) ? toolOption.CtxMain = new CTXCommon(e.option) : toolOption.CtxMain = new toolOption.CtxMain, new Addpanel
        }, 3e3)
    }
}();