{"version":3,"sources":["jsdelivr-header.js","/npm/darkreader@4.9.94/darkreader.js"],"names":[],"mappings":"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","file":"/npm/darkreader@4.9.94/darkreader.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/darkreader@4.9.94/darkreader.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\r\n * Dark Reader v4.9.94\r\n * https://darkreader.org/\r\n */\r\n\r\n(function (global, factory) {\r\n    typeof exports === \"object\" && typeof module !== \"undefined\"\r\n        ? factory(exports)\r\n        : typeof define === \"function\" && define.amd\r\n          ? define([\"exports\"], factory)\r\n          : ((global =\r\n                typeof globalThis !== \"undefined\"\r\n                    ? globalThis\r\n                    : global || self),\r\n            factory((global.DarkReader = {})));\r\n})(this, function (exports) {\r\n    \"use strict\";\r\n\r\n    var MessageTypeUItoBG;\r\n    (function (MessageTypeUItoBG) {\r\n        MessageTypeUItoBG[\"GET_DATA\"] = \"ui-bg-get-data\";\r\n        MessageTypeUItoBG[\"GET_DEVTOOLS_DATA\"] = \"ui-bg-get-devtools-data\";\r\n        MessageTypeUItoBG[\"SUBSCRIBE_TO_CHANGES\"] =\r\n            \"ui-bg-subscribe-to-changes\";\r\n        MessageTypeUItoBG[\"UNSUBSCRIBE_FROM_CHANGES\"] =\r\n            \"ui-bg-unsubscribe-from-changes\";\r\n        MessageTypeUItoBG[\"CHANGE_SETTINGS\"] = \"ui-bg-change-settings\";\r\n        MessageTypeUItoBG[\"SET_THEME\"] = \"ui-bg-set-theme\";\r\n        MessageTypeUItoBG[\"TOGGLE_ACTIVE_TAB\"] = \"ui-bg-toggle-active-tab\";\r\n        MessageTypeUItoBG[\"MARK_NEWS_AS_READ\"] = \"ui-bg-mark-news-as-read\";\r\n        MessageTypeUItoBG[\"MARK_NEWS_AS_DISPLAYED\"] =\r\n            \"ui-bg-mark-news-as-displayed\";\r\n        MessageTypeUItoBG[\"LOAD_CONFIG\"] = \"ui-bg-load-config\";\r\n        MessageTypeUItoBG[\"APPLY_DEV_DYNAMIC_THEME_FIXES\"] =\r\n            \"ui-bg-apply-dev-dynamic-theme-fixes\";\r\n        MessageTypeUItoBG[\"RESET_DEV_DYNAMIC_THEME_FIXES\"] =\r\n            \"ui-bg-reset-dev-dynamic-theme-fixes\";\r\n        MessageTypeUItoBG[\"APPLY_DEV_INVERSION_FIXES\"] =\r\n            \"ui-bg-apply-dev-inversion-fixes\";\r\n        MessageTypeUItoBG[\"RESET_DEV_INVERSION_FIXES\"] =\r\n            \"ui-bg-reset-dev-inversion-fixes\";\r\n        MessageTypeUItoBG[\"APPLY_DEV_STATIC_THEMES\"] =\r\n            \"ui-bg-apply-dev-static-themes\";\r\n        MessageTypeUItoBG[\"RESET_DEV_STATIC_THEMES\"] =\r\n            \"ui-bg-reset-dev-static-themes\";\r\n        MessageTypeUItoBG[\"COLOR_SCHEME_CHANGE\"] = \"ui-bg-color-scheme-change\";\r\n        MessageTypeUItoBG[\"HIDE_HIGHLIGHTS\"] = \"ui-bg-hide-highlights\";\r\n    })(MessageTypeUItoBG || (MessageTypeUItoBG = {}));\r\n    var MessageTypeBGtoUI;\r\n    (function (MessageTypeBGtoUI) {\r\n        MessageTypeBGtoUI[\"CHANGES\"] = \"bg-ui-changes\";\r\n    })(MessageTypeBGtoUI || (MessageTypeBGtoUI = {}));\r\n    var DebugMessageTypeBGtoUI;\r\n    (function (DebugMessageTypeBGtoUI) {\r\n        DebugMessageTypeBGtoUI[\"CSS_UPDATE\"] = \"debug-bg-ui-css-update\";\r\n        DebugMessageTypeBGtoUI[\"UPDATE\"] = \"debug-bg-ui-update\";\r\n    })(DebugMessageTypeBGtoUI || (DebugMessageTypeBGtoUI = {}));\r\n    var MessageTypeBGtoCS;\r\n    (function (MessageTypeBGtoCS) {\r\n        MessageTypeBGtoCS[\"ADD_CSS_FILTER\"] = \"bg-cs-add-css-filter\";\r\n        MessageTypeBGtoCS[\"ADD_DYNAMIC_THEME\"] = \"bg-cs-add-dynamic-theme\";\r\n        MessageTypeBGtoCS[\"ADD_STATIC_THEME\"] = \"bg-cs-add-static-theme\";\r\n        MessageTypeBGtoCS[\"ADD_SVG_FILTER\"] = \"bg-cs-add-svg-filter\";\r\n        MessageTypeBGtoCS[\"CLEAN_UP\"] = \"bg-cs-clean-up\";\r\n        MessageTypeBGtoCS[\"FETCH_RESPONSE\"] = \"bg-cs-fetch-response\";\r\n        MessageTypeBGtoCS[\"UNSUPPORTED_SENDER\"] = \"bg-cs-unsupported-sender\";\r\n    })(MessageTypeBGtoCS || (MessageTypeBGtoCS = {}));\r\n    var DebugMessageTypeBGtoCS;\r\n    (function (DebugMessageTypeBGtoCS) {\r\n        DebugMessageTypeBGtoCS[\"RELOAD\"] = \"debug-bg-cs-reload\";\r\n    })(DebugMessageTypeBGtoCS || (DebugMessageTypeBGtoCS = {}));\r\n    var MessageTypeCStoBG;\r\n    (function (MessageTypeCStoBG) {\r\n        MessageTypeCStoBG[\"COLOR_SCHEME_CHANGE\"] = \"cs-bg-color-scheme-change\";\r\n        MessageTypeCStoBG[\"DARK_THEME_DETECTED\"] = \"cs-bg-dark-theme-detected\";\r\n        MessageTypeCStoBG[\"DARK_THEME_NOT_DETECTED\"] =\r\n            \"cs-bg-dark-theme-not-detected\";\r\n        MessageTypeCStoBG[\"FETCH\"] = \"cs-bg-fetch\";\r\n        MessageTypeCStoBG[\"DOCUMENT_CONNECT\"] = \"cs-bg-document-connect\";\r\n        MessageTypeCStoBG[\"DOCUMENT_FORGET\"] = \"cs-bg-document-forget\";\r\n        MessageTypeCStoBG[\"DOCUMENT_FREEZE\"] = \"cs-bg-document-freeze\";\r\n        MessageTypeCStoBG[\"DOCUMENT_RESUME\"] = \"cs-bg-document-resume\";\r\n    })(MessageTypeCStoBG || (MessageTypeCStoBG = {}));\r\n    var DebugMessageTypeCStoBG;\r\n    (function (DebugMessageTypeCStoBG) {\r\n        DebugMessageTypeCStoBG[\"LOG\"] = \"debug-cs-bg-log\";\r\n    })(DebugMessageTypeCStoBG || (DebugMessageTypeCStoBG = {}));\r\n    var MessageTypeCStoUI;\r\n    (function (MessageTypeCStoUI) {\r\n        MessageTypeCStoUI[\"EXPORT_CSS_RESPONSE\"] = \"cs-ui-export-css-response\";\r\n    })(MessageTypeCStoUI || (MessageTypeCStoUI = {}));\r\n    var MessageTypeUItoCS;\r\n    (function (MessageTypeUItoCS) {\r\n        MessageTypeUItoCS[\"EXPORT_CSS\"] = \"ui-cs-export-css\";\r\n    })(MessageTypeUItoCS || (MessageTypeUItoCS = {}));\r\n\r\n    const isNavigatorDefined = typeof navigator !== \"undefined\";\r\n    const userAgent = isNavigatorDefined\r\n        ? navigator.userAgentData &&\r\n          Array.isArray(navigator.userAgentData.brands)\r\n            ? navigator.userAgentData.brands\r\n                  .map(\r\n                      (brand) => `${brand.brand.toLowerCase()} ${brand.version}`\r\n                  )\r\n                  .join(\" \")\r\n            : navigator.userAgent.toLowerCase()\r\n        : \"some useragent\";\r\n    const platform = isNavigatorDefined\r\n        ? navigator.userAgentData &&\r\n          typeof navigator.userAgentData.platform === \"string\"\r\n            ? navigator.userAgentData.platform.toLowerCase()\r\n            : navigator.platform.toLowerCase()\r\n        : \"some platform\";\r\n    const isChromium =\r\n        userAgent.includes(\"chrome\") || userAgent.includes(\"chromium\");\r\n    const isFirefox =\r\n        userAgent.includes(\"firefox\") ||\r\n        userAgent.includes(\"thunderbird\") ||\r\n        userAgent.includes(\"librewolf\");\r\n    const isSafari = userAgent.includes(\"safari\") && !isChromium;\r\n    const isWindows = platform.startsWith(\"win\");\r\n    const isMacOS = platform.startsWith(\"mac\");\r\n    isNavigatorDefined && navigator.userAgentData\r\n        ? navigator.userAgentData.mobile\r\n        : userAgent.includes(\"mobile\");\r\n    const isShadowDomSupported = typeof ShadowRoot === \"function\";\r\n    const isMatchMediaChangeEventListenerSupported =\r\n        typeof MediaQueryList === \"function\" &&\r\n        typeof MediaQueryList.prototype.addEventListener === \"function\";\r\n    const isLayerRuleSupported = typeof CSSLayerBlockRule === \"function\";\r\n    (() => {\r\n        const m = userAgent.match(/chrom(?:e|ium)(?:\\/| )([^ ]+)/);\r\n        if (m && m[1]) {\r\n            return m[1];\r\n        }\r\n        return \"\";\r\n    })();\r\n    (() => {\r\n        const m = userAgent.match(/(?:firefox|librewolf)(?:\\/| )([^ ]+)/);\r\n        if (m && m[1]) {\r\n            return m[1];\r\n        }\r\n        return \"\";\r\n    })();\r\n    const isDefinedSelectorSupported = (() => {\r\n        try {\r\n            document.querySelector(\":defined\");\r\n            return true;\r\n        } catch (err) {\r\n            return false;\r\n        }\r\n    })();\r\n    const isCSSColorSchemePropSupported = (() => {\r\n        try {\r\n            if (typeof document === \"undefined\") {\r\n                return false;\r\n            }\r\n            const el = document.createElement(\"div\");\r\n            if (!el || typeof el.style !== \"object\") {\r\n                return false;\r\n            }\r\n            if (typeof el.style.colorScheme === \"string\") {\r\n                return true;\r\n            }\r\n            el.setAttribute(\"style\", \"color-scheme: dark\");\r\n            return el.style.colorScheme === \"dark\";\r\n        } catch (e) {\r\n            return false;\r\n        }\r\n    })();\r\n\r\n    async function getOKResponse(url, mimeType, origin) {\r\n        const response = await fetch(url, {\r\n            cache: \"force-cache\",\r\n            credentials: \"omit\",\r\n            referrer: origin\r\n        });\r\n        if (\r\n            isFirefox &&\r\n            mimeType === \"text/css\" &&\r\n            url.startsWith(\"moz-extension://\") &&\r\n            url.endsWith(\".css\")\r\n        ) {\r\n            return response;\r\n        }\r\n        if (\r\n            mimeType &&\r\n            !response.headers.get(\"Content-Type\").startsWith(mimeType)\r\n        ) {\r\n            throw new Error(`Mime type mismatch when loading ${url}`);\r\n        }\r\n        if (!response.ok) {\r\n            throw new Error(\r\n                `Unable to load ${url} ${response.status} ${response.statusText}`\r\n            );\r\n        }\r\n        return response;\r\n    }\r\n    async function loadAsDataURL(url, mimeType) {\r\n        const response = await getOKResponse(url, mimeType);\r\n        return await readResponseAsDataURL(response);\r\n    }\r\n    async function loadAsBlob(url, mimeType) {\r\n        const response = await getOKResponse(url, mimeType);\r\n        return await response.blob();\r\n    }\r\n    async function readResponseAsDataURL(response) {\r\n        const blob = await response.blob();\r\n        const dataURL = await new Promise((resolve) => {\r\n            const reader = new FileReader();\r\n            reader.onloadend = () => resolve(reader.result);\r\n            reader.readAsDataURL(blob);\r\n        });\r\n        return dataURL;\r\n    }\r\n    async function loadAsText(url, mimeType, origin) {\r\n        const response = await getOKResponse(url, mimeType, origin);\r\n        return await response.text();\r\n    }\r\n\r\n    const throwCORSError = async (url) => {\r\n        return Promise.reject(\r\n            new Error(\r\n                [\r\n                    \"Embedded Dark Reader cannot access a cross-origin resource\",\r\n                    url,\r\n                    \"Overview your URLs and CORS policies or use\",\r\n                    \"`DarkReader.setFetchMethod(fetch: (url) => Promise<Response>))`.\",\r\n                    \"See if using `DarkReader.setFetchMethod(window.fetch)`\",\r\n                    \"before `DarkReader.enable()` works.\"\r\n                ].join(\" \")\r\n            )\r\n        );\r\n    };\r\n    let fetcher = throwCORSError;\r\n    function setFetchMethod$1(fetch) {\r\n        if (fetch) {\r\n            fetcher = fetch;\r\n        } else {\r\n            fetcher = throwCORSError;\r\n        }\r\n    }\r\n    async function callFetchMethod(url) {\r\n        return await fetcher(url);\r\n    }\r\n\r\n    if (!window.chrome) {\r\n        window.chrome = {};\r\n    }\r\n    if (!chrome.runtime) {\r\n        chrome.runtime = {};\r\n    }\r\n    const messageListeners = new Set();\r\n    async function sendMessage(...args) {\r\n        if (args[0] && args[0].type === MessageTypeCStoBG.FETCH) {\r\n            const {id} = args[0];\r\n            try {\r\n                const {url, responseType} = args[0].data;\r\n                const response = await callFetchMethod(url);\r\n                let text;\r\n                if (responseType === \"data-url\") {\r\n                    text = await readResponseAsDataURL(response);\r\n                } else {\r\n                    text = await response.text();\r\n                }\r\n                messageListeners.forEach((cb) =>\r\n                    cb({\r\n                        type: MessageTypeBGtoCS.FETCH_RESPONSE,\r\n                        data: text,\r\n                        error: null,\r\n                        id\r\n                    })\r\n                );\r\n            } catch (error) {\r\n                console.error(error);\r\n                messageListeners.forEach((cb) =>\r\n                    cb({\r\n                        type: MessageTypeBGtoCS.FETCH_RESPONSE,\r\n                        data: null,\r\n                        error,\r\n                        id\r\n                    })\r\n                );\r\n            }\r\n        }\r\n    }\r\n    function addMessageListener(callback) {\r\n        messageListeners.add(callback);\r\n    }\r\n    if (typeof chrome.runtime.sendMessage === \"function\") {\r\n        const nativeSendMessage = chrome.runtime.sendMessage;\r\n        chrome.runtime.sendMessage = (...args) => {\r\n            sendMessage(...args);\r\n            nativeSendMessage.apply(chrome.runtime, args);\r\n        };\r\n    } else {\r\n        chrome.runtime.sendMessage = sendMessage;\r\n    }\r\n    if (!chrome.runtime.onMessage) {\r\n        chrome.runtime.onMessage = {};\r\n    }\r\n    if (typeof chrome.runtime.onMessage.addListener === \"function\") {\r\n        const nativeAddListener = chrome.runtime.onMessage.addListener;\r\n        chrome.runtime.onMessage.addListener = (...args) => {\r\n            addMessageListener(args[0]);\r\n            nativeAddListener.apply(chrome.runtime.onMessage, args);\r\n        };\r\n    } else {\r\n        chrome.runtime.onMessage.addListener = (...args) =>\r\n            addMessageListener(args[0]);\r\n    }\r\n\r\n    var ThemeEngine;\r\n    (function (ThemeEngine) {\r\n        ThemeEngine[\"cssFilter\"] = \"cssFilter\";\r\n        ThemeEngine[\"svgFilter\"] = \"svgFilter\";\r\n        ThemeEngine[\"staticTheme\"] = \"staticTheme\";\r\n        ThemeEngine[\"dynamicTheme\"] = \"dynamicTheme\";\r\n    })(ThemeEngine || (ThemeEngine = {}));\r\n\r\n    var AutomationMode;\r\n    (function (AutomationMode) {\r\n        AutomationMode[\"NONE\"] = \"\";\r\n        AutomationMode[\"TIME\"] = \"time\";\r\n        AutomationMode[\"SYSTEM\"] = \"system\";\r\n        AutomationMode[\"LOCATION\"] = \"location\";\r\n    })(AutomationMode || (AutomationMode = {}));\r\n\r\n    const DEFAULT_COLORS = {\r\n        darkScheme: {\r\n            background: \"#181a1b\",\r\n            text: \"#e8e6e3\"\r\n        },\r\n        lightScheme: {\r\n            background: \"#dcdad7\",\r\n            text: \"#181a1b\"\r\n        }\r\n    };\r\n    const DEFAULT_THEME = {\r\n        mode: 1,\r\n        brightness: 100,\r\n        contrast: 100,\r\n        grayscale: 0,\r\n        sepia: 0,\r\n        useFont: false,\r\n        fontFamily: isMacOS\r\n            ? \"Helvetica Neue\"\r\n            : isWindows\r\n              ? \"Segoe UI\"\r\n              : \"Open Sans\",\r\n        textStroke: 0,\r\n        engine: ThemeEngine.dynamicTheme,\r\n        stylesheet: \"\",\r\n        darkSchemeBackgroundColor: DEFAULT_COLORS.darkScheme.background,\r\n        darkSchemeTextColor: DEFAULT_COLORS.darkScheme.text,\r\n        lightSchemeBackgroundColor: DEFAULT_COLORS.lightScheme.background,\r\n        lightSchemeTextColor: DEFAULT_COLORS.lightScheme.text,\r\n        scrollbarColor: \"\",\r\n        selectionColor: \"auto\",\r\n        styleSystemControls: !isCSSColorSchemePropSupported,\r\n        lightColorScheme: \"Default\",\r\n        darkColorScheme: \"Default\",\r\n        immediateModify: false\r\n    };\r\n    const filterModeSites = [\r\n        \"*.officeapps.live.com\",\r\n        \"*.sharepoint.com\",\r\n        \"docs.google.com\",\r\n        \"onedrive.live.com\"\r\n    ];\r\n    ({\r\n        schemeVersion: 0,\r\n        enabled: true,\r\n        fetchNews: true,\r\n        theme: DEFAULT_THEME,\r\n        presets: [],\r\n        customThemes: filterModeSites.map((url) => {\r\n            const engine = isChromium\r\n                ? ThemeEngine.svgFilter\r\n                : ThemeEngine.cssFilter;\r\n            return {\r\n                url: [url],\r\n                theme: {...DEFAULT_THEME, engine},\r\n                builtIn: true\r\n            };\r\n        }),\r\n        enabledByDefault: true,\r\n        enabledFor: [],\r\n        disabledFor: [],\r\n        changeBrowserTheme: false,\r\n        syncSettings: true,\r\n        syncSitesFixes: false,\r\n        automation: {\r\n            enabled: false,\r\n            mode: AutomationMode.NONE,\r\n            behavior: \"OnOff\"\r\n        },\r\n        time: {\r\n            activation: \"18:00\",\r\n            deactivation: \"9:00\"\r\n        },\r\n        location: {\r\n            latitude: null,\r\n            longitude: null\r\n        },\r\n        previewNewDesign: false,\r\n        previewNewestDesign: false,\r\n        enableForPDF: true,\r\n        enableForProtectedPages: false,\r\n        enableContextMenus: false,\r\n        detectDarkTheme: true\r\n    });\r\n\r\n    function isArrayLike(items) {\r\n        return items.length != null;\r\n    }\r\n    function forEach(items, iterator) {\r\n        if (isArrayLike(items)) {\r\n            for (let i = 0, len = items.length; i < len; i++) {\r\n                iterator(items[i]);\r\n            }\r\n        } else {\r\n            for (const item of items) {\r\n                iterator(item);\r\n            }\r\n        }\r\n    }\r\n    function push(array, addition) {\r\n        forEach(addition, (a) => array.push(a));\r\n    }\r\n    function toArray(items) {\r\n        const results = [];\r\n        for (let i = 0, len = items.length; i < len; i++) {\r\n            results.push(items[i]);\r\n        }\r\n        return results;\r\n    }\r\n\r\n    function logInfo(...args) {}\r\n    function logWarn(...args) {}\r\n\r\n    function throttle(callback) {\r\n        let pending = false;\r\n        let frameId = null;\r\n        let lastArgs;\r\n        const throttled = (...args) => {\r\n            lastArgs = args;\r\n            if (frameId) {\r\n                pending = true;\r\n            } else {\r\n                callback(...lastArgs);\r\n                frameId = requestAnimationFrame(() => {\r\n                    frameId = null;\r\n                    if (pending) {\r\n                        callback(...lastArgs);\r\n                        pending = false;\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        const cancel = () => {\r\n            cancelAnimationFrame(frameId);\r\n            pending = false;\r\n            frameId = null;\r\n        };\r\n        return Object.assign(throttled, {cancel});\r\n    }\r\n    function createAsyncTasksQueue() {\r\n        const tasks = [];\r\n        let frameId = null;\r\n        function runTasks() {\r\n            let task;\r\n            while ((task = tasks.shift())) {\r\n                task();\r\n            }\r\n            frameId = null;\r\n        }\r\n        function add(task) {\r\n            tasks.push(task);\r\n            if (!frameId) {\r\n                frameId = requestAnimationFrame(runTasks);\r\n            }\r\n        }\r\n        function cancel() {\r\n            tasks.splice(0);\r\n            cancelAnimationFrame(frameId);\r\n            frameId = null;\r\n        }\r\n        return {add, cancel};\r\n    }\r\n    const delayTokens = new Set();\r\n    function requestAnimationFrameOnce(token, callback) {\r\n        if (delayTokens.has(token)) {\r\n            return;\r\n        }\r\n        delayTokens.add(token);\r\n        requestAnimationFrame(() => {\r\n            delayTokens.delete(token);\r\n            callback();\r\n        });\r\n    }\r\n\r\n    function getDuration(time) {\r\n        let duration = 0;\r\n        if (time.seconds) {\r\n            duration += time.seconds * 1000;\r\n        }\r\n        if (time.minutes) {\r\n            duration += time.minutes * 60 * 1000;\r\n        }\r\n        if (time.hours) {\r\n            duration += time.hours * 60 * 60 * 1000;\r\n        }\r\n        if (time.days) {\r\n            duration += time.days * 24 * 60 * 60 * 1000;\r\n        }\r\n        return duration;\r\n    }\r\n\r\n    function removeNode(node) {\r\n        node && node.parentNode && node.parentNode.removeChild(node);\r\n    }\r\n    function watchForNodePosition(node, mode, onRestore = Function.prototype) {\r\n        const MAX_ATTEMPTS_COUNT = 10;\r\n        const RETRY_TIMEOUT = getDuration({seconds: 2});\r\n        const ATTEMPTS_INTERVAL = getDuration({seconds: 10});\r\n        const prevSibling = node.previousSibling;\r\n        let parent = node.parentNode;\r\n        if (!parent) {\r\n            throw new Error(\r\n                \"Unable to watch for node position: parent element not found\"\r\n            );\r\n        }\r\n        if (mode === \"prev-sibling\" && !prevSibling) {\r\n            throw new Error(\r\n                \"Unable to watch for node position: there is no previous sibling\"\r\n            );\r\n        }\r\n        let attempts = 0;\r\n        let start = null;\r\n        let timeoutId = null;\r\n        const restore = throttle(() => {\r\n            if (timeoutId) {\r\n                return;\r\n            }\r\n            attempts++;\r\n            const now = Date.now();\r\n            if (start == null) {\r\n                start = now;\r\n            } else if (attempts >= MAX_ATTEMPTS_COUNT) {\r\n                if (now - start < ATTEMPTS_INTERVAL) {\r\n                    timeoutId = setTimeout(() => {\r\n                        start = null;\r\n                        attempts = 0;\r\n                        timeoutId = null;\r\n                        restore();\r\n                    }, RETRY_TIMEOUT);\r\n                    return;\r\n                }\r\n                start = now;\r\n                attempts = 1;\r\n            }\r\n            if (mode === \"head\") {\r\n                if (prevSibling && prevSibling.parentNode !== parent) {\r\n                    stop();\r\n                    return;\r\n                }\r\n            }\r\n            if (mode === \"prev-sibling\") {\r\n                if (prevSibling.parentNode == null) {\r\n                    stop();\r\n                    return;\r\n                }\r\n                if (prevSibling.parentNode !== parent) {\r\n                    updateParent(prevSibling.parentNode);\r\n                }\r\n            }\r\n            if (mode === \"head\" && !parent.isConnected) {\r\n                parent = document.head;\r\n            }\r\n            parent.insertBefore(\r\n                node,\r\n                prevSibling && prevSibling.isConnected\r\n                    ? prevSibling.nextSibling\r\n                    : parent.firstChild\r\n            );\r\n            observer.takeRecords();\r\n            onRestore && onRestore();\r\n        });\r\n        const observer = new MutationObserver(() => {\r\n            if (\r\n                (mode === \"head\" &&\r\n                    (node.parentNode !== parent ||\r\n                        !node.parentNode.isConnected)) ||\r\n                (mode === \"prev-sibling\" &&\r\n                    node.previousSibling !== prevSibling)\r\n            ) {\r\n                restore();\r\n            }\r\n        });\r\n        const run = () => {\r\n            observer.observe(parent, {childList: true});\r\n        };\r\n        const stop = () => {\r\n            clearTimeout(timeoutId);\r\n            observer.disconnect();\r\n            restore.cancel();\r\n        };\r\n        const skip = () => {\r\n            observer.takeRecords();\r\n        };\r\n        const updateParent = (parentNode) => {\r\n            parent = parentNode;\r\n            stop();\r\n            run();\r\n        };\r\n        run();\r\n        return {run, stop, skip};\r\n    }\r\n    function iterateShadowHosts(root, iterator) {\r\n        if (root == null) {\r\n            return;\r\n        }\r\n        const walker = document.createTreeWalker(\r\n            root,\r\n            NodeFilter.SHOW_ELEMENT,\r\n            {\r\n                acceptNode(node) {\r\n                    return node.shadowRoot == null\r\n                        ? NodeFilter.FILTER_SKIP\r\n                        : NodeFilter.FILTER_ACCEPT;\r\n                }\r\n            }\r\n        );\r\n        for (\r\n            let node = root.shadowRoot ? walker.currentNode : walker.nextNode();\r\n            node != null;\r\n            node = walker.nextNode()\r\n        ) {\r\n            if (node.classList.contains(\"surfingkeys_hints_host\")) {\r\n                continue;\r\n            }\r\n            iterator(node);\r\n            iterateShadowHosts(node.shadowRoot, iterator);\r\n        }\r\n    }\r\n    let isDOMReady = () => {\r\n        return (\r\n            document.readyState === \"complete\" ||\r\n            document.readyState === \"interactive\"\r\n        );\r\n    };\r\n    function setIsDOMReady(newFunc) {\r\n        isDOMReady = newFunc;\r\n    }\r\n    const readyStateListeners = new Set();\r\n    function addDOMReadyListener(listener) {\r\n        isDOMReady() ? listener() : readyStateListeners.add(listener);\r\n    }\r\n    function removeDOMReadyListener(listener) {\r\n        readyStateListeners.delete(listener);\r\n    }\r\n    function isReadyStateComplete() {\r\n        return document.readyState === \"complete\";\r\n    }\r\n    const readyStateCompleteListeners = new Set();\r\n    function addReadyStateCompleteListener(listener) {\r\n        isReadyStateComplete()\r\n            ? listener()\r\n            : readyStateCompleteListeners.add(listener);\r\n    }\r\n    function cleanReadyStateCompleteListeners() {\r\n        readyStateCompleteListeners.clear();\r\n    }\r\n    if (!isDOMReady()) {\r\n        const onReadyStateChange = () => {\r\n            if (isDOMReady()) {\r\n                readyStateListeners.forEach((listener) => listener());\r\n                readyStateListeners.clear();\r\n                if (isReadyStateComplete()) {\r\n                    document.removeEventListener(\r\n                        \"readystatechange\",\r\n                        onReadyStateChange\r\n                    );\r\n                    readyStateCompleteListeners.forEach((listener) =>\r\n                        listener()\r\n                    );\r\n                    readyStateCompleteListeners.clear();\r\n                }\r\n            }\r\n        };\r\n        document.addEventListener(\"readystatechange\", onReadyStateChange);\r\n    }\r\n    const HUGE_MUTATIONS_COUNT = 1000;\r\n    function isHugeMutation(mutations) {\r\n        if (mutations.length > HUGE_MUTATIONS_COUNT) {\r\n            return true;\r\n        }\r\n        let addedNodesCount = 0;\r\n        for (let i = 0; i < mutations.length; i++) {\r\n            addedNodesCount += mutations[i].addedNodes.length;\r\n            if (addedNodesCount > HUGE_MUTATIONS_COUNT) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function getElementsTreeOperations(mutations) {\r\n        const additions = new Set();\r\n        const deletions = new Set();\r\n        const moves = new Set();\r\n        mutations.forEach((m) => {\r\n            forEach(m.addedNodes, (n) => {\r\n                if (n instanceof Element && n.isConnected) {\r\n                    additions.add(n);\r\n                }\r\n            });\r\n            forEach(m.removedNodes, (n) => {\r\n                if (n instanceof Element) {\r\n                    if (n.isConnected) {\r\n                        moves.add(n);\r\n                        additions.delete(n);\r\n                    } else {\r\n                        deletions.add(n);\r\n                    }\r\n                }\r\n            });\r\n        });\r\n        const duplicateAdditions = [];\r\n        const duplicateDeletions = [];\r\n        additions.forEach((node) => {\r\n            if (additions.has(node.parentElement)) {\r\n                duplicateAdditions.push(node);\r\n            }\r\n        });\r\n        deletions.forEach((node) => {\r\n            if (deletions.has(node.parentElement)) {\r\n                duplicateDeletions.push(node);\r\n            }\r\n        });\r\n        duplicateAdditions.forEach((node) => additions.delete(node));\r\n        duplicateDeletions.forEach((node) => deletions.delete(node));\r\n        return {additions, moves, deletions};\r\n    }\r\n    const optimizedTreeObservers = new Map();\r\n    const optimizedTreeCallbacks = new WeakMap();\r\n    function createOptimizedTreeObserver(root, callbacks) {\r\n        let observer;\r\n        let observerCallbacks;\r\n        let domReadyListener;\r\n        if (optimizedTreeObservers.has(root)) {\r\n            observer = optimizedTreeObservers.get(root);\r\n            observerCallbacks = optimizedTreeCallbacks.get(observer);\r\n        } else {\r\n            let hadHugeMutationsBefore = false;\r\n            let subscribedForReadyState = false;\r\n            observer = new MutationObserver((mutations) => {\r\n                if (isHugeMutation(mutations)) {\r\n                    if (!hadHugeMutationsBefore || isDOMReady()) {\r\n                        observerCallbacks.forEach(({onHugeMutations}) =>\r\n                            onHugeMutations(root)\r\n                        );\r\n                    } else if (!subscribedForReadyState) {\r\n                        domReadyListener = () =>\r\n                            observerCallbacks.forEach(({onHugeMutations}) =>\r\n                                onHugeMutations(root)\r\n                            );\r\n                        addDOMReadyListener(domReadyListener);\r\n                        subscribedForReadyState = true;\r\n                    }\r\n                    hadHugeMutationsBefore = true;\r\n                } else {\r\n                    const elementsOperations =\r\n                        getElementsTreeOperations(mutations);\r\n                    observerCallbacks.forEach(({onMinorMutations}) =>\r\n                        onMinorMutations(root, elementsOperations)\r\n                    );\r\n                }\r\n            });\r\n            observer.observe(root, {childList: true, subtree: true});\r\n            optimizedTreeObservers.set(root, observer);\r\n            observerCallbacks = new Set();\r\n            optimizedTreeCallbacks.set(observer, observerCallbacks);\r\n        }\r\n        observerCallbacks.add(callbacks);\r\n        return {\r\n            disconnect() {\r\n                observerCallbacks.delete(callbacks);\r\n                if (domReadyListener) {\r\n                    removeDOMReadyListener(domReadyListener);\r\n                }\r\n                if (observerCallbacks.size === 0) {\r\n                    observer.disconnect();\r\n                    optimizedTreeCallbacks.delete(observer);\r\n                    optimizedTreeObservers.delete(root);\r\n                }\r\n            }\r\n        };\r\n    }\r\n\r\n    function getMatches(regex, input, group = 0) {\r\n        const matches = [];\r\n        let m;\r\n        while ((m = regex.exec(input))) {\r\n            matches.push(m[group]);\r\n        }\r\n        return matches;\r\n    }\r\n    function getHashCode(text) {\r\n        const len = text.length;\r\n        let hash = 0;\r\n        for (let i = 0; i < len; i++) {\r\n            const c = text.charCodeAt(i);\r\n            hash = ((hash << 5) - hash + c) & 4294967295;\r\n        }\r\n        return hash;\r\n    }\r\n    function escapeRegExpSpecialChars(input) {\r\n        return input.replaceAll(/[\\^$.*+?\\(\\)\\[\\]{}|\\-\\\\]/g, \"\\\\$&\");\r\n    }\r\n    function getParenthesesRange(input, searchStartIndex = 0) {\r\n        return getOpenCloseRange(input, searchStartIndex, \"(\", \")\", []);\r\n    }\r\n    function getOpenCloseRange(\r\n        input,\r\n        searchStartIndex,\r\n        openToken,\r\n        closeToken,\r\n        excludeRanges\r\n    ) {\r\n        let indexOf;\r\n        if (excludeRanges.length === 0) {\r\n            indexOf = (token, pos) => input.indexOf(token, pos);\r\n        } else {\r\n            indexOf = (token, pos) =>\r\n                indexOfExcluding(input, token, pos, excludeRanges);\r\n        }\r\n        const {length} = input;\r\n        let depth = 0;\r\n        let firstOpenIndex = -1;\r\n        for (let i = searchStartIndex; i < length; i++) {\r\n            if (depth === 0) {\r\n                const openIndex = indexOf(openToken, i);\r\n                if (openIndex < 0) {\r\n                    break;\r\n                }\r\n                firstOpenIndex = openIndex;\r\n                depth++;\r\n                i = openIndex;\r\n            } else {\r\n                const closeIndex = indexOf(closeToken, i);\r\n                if (closeIndex < 0) {\r\n                    break;\r\n                }\r\n                const openIndex = indexOf(openToken, i);\r\n                if (openIndex < 0 || closeIndex <= openIndex) {\r\n                    depth--;\r\n                    if (depth === 0) {\r\n                        return {start: firstOpenIndex, end: closeIndex + 1};\r\n                    }\r\n                    i = closeIndex;\r\n                } else {\r\n                    depth++;\r\n                    i = openIndex;\r\n                }\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n    function indexOfExcluding(input, search, position, excludeRanges) {\r\n        const i = input.indexOf(search, position);\r\n        const exclusion = excludeRanges.find((r) => i >= r.start && i < r.end);\r\n        if (exclusion) {\r\n            return indexOfExcluding(\r\n                input,\r\n                search,\r\n                exclusion.end,\r\n                excludeRanges\r\n            );\r\n        }\r\n        return i;\r\n    }\r\n    function splitExcluding(input, separator, excludeRanges) {\r\n        const parts = [];\r\n        let commaIndex = -1;\r\n        let currIndex = 0;\r\n        while (\r\n            (commaIndex = indexOfExcluding(\r\n                input,\r\n                separator,\r\n                currIndex,\r\n                excludeRanges\r\n            )) >= 0\r\n        ) {\r\n            parts.push(input.substring(currIndex, commaIndex).trim());\r\n            currIndex = commaIndex + 1;\r\n        }\r\n        parts.push(input.substring(currIndex).trim());\r\n        return parts;\r\n    }\r\n\r\n    let anchor;\r\n    const parsedURLCache = new Map();\r\n    function fixBaseURL($url) {\r\n        if (!anchor) {\r\n            anchor = document.createElement(\"a\");\r\n        }\r\n        anchor.href = $url;\r\n        return anchor.href;\r\n    }\r\n    function parseURL($url, $base = null) {\r\n        const key = `${$url}${$base ? `;${$base}` : \"\"}`;\r\n        if (parsedURLCache.has(key)) {\r\n            return parsedURLCache.get(key);\r\n        }\r\n        if ($base) {\r\n            const parsedURL = new URL($url, fixBaseURL($base));\r\n            parsedURLCache.set(key, parsedURL);\r\n            return parsedURL;\r\n        }\r\n        const parsedURL = new URL(fixBaseURL($url));\r\n        parsedURLCache.set($url, parsedURL);\r\n        return parsedURL;\r\n    }\r\n    function getAbsoluteURL($base, $relative) {\r\n        if ($relative.match(/^data\\\\?\\:/)) {\r\n            return $relative;\r\n        }\r\n        if (/^\\/\\//.test($relative)) {\r\n            return `${location.protocol}${$relative}`;\r\n        }\r\n        const b = parseURL($base);\r\n        const a = parseURL($relative, b.href);\r\n        return a.href;\r\n    }\r\n    function isRelativeHrefOnAbsolutePath(href) {\r\n        if (href.startsWith(\"data:\")) {\r\n            return true;\r\n        }\r\n        const url = parseURL(href);\r\n        if (url.protocol !== location.protocol) {\r\n            return false;\r\n        }\r\n        if (url.hostname !== location.hostname) {\r\n            return false;\r\n        }\r\n        if (url.port !== location.port) {\r\n            return false;\r\n        }\r\n        return url.pathname === location.pathname;\r\n    }\r\n\r\n    function iterateCSSRules(rules, iterate, onImportError) {\r\n        forEach(rules, (rule) => {\r\n            if (isStyleRule(rule)) {\r\n                iterate(rule);\r\n            } else if (isImportRule(rule)) {\r\n                try {\r\n                    iterateCSSRules(\r\n                        rule.styleSheet.cssRules,\r\n                        iterate,\r\n                        onImportError\r\n                    );\r\n                } catch (err) {\r\n                    onImportError?.();\r\n                }\r\n            } else if (isMediaRule(rule)) {\r\n                const media = Array.from(rule.media);\r\n                const isScreenOrAllOrQuery = media.some(\r\n                    (m) =>\r\n                        m.startsWith(\"screen\") ||\r\n                        m.startsWith(\"all\") ||\r\n                        m.startsWith(\"(\")\r\n                );\r\n                const isPrintOrSpeech = media.some(\r\n                    (m) => m.startsWith(\"print\") || m.startsWith(\"speech\")\r\n                );\r\n                if (isScreenOrAllOrQuery || !isPrintOrSpeech) {\r\n                    iterateCSSRules(rule.cssRules, iterate, onImportError);\r\n                }\r\n            } else if (isSupportsRule(rule)) {\r\n                if (CSS.supports(rule.conditionText)) {\r\n                    iterateCSSRules(rule.cssRules, iterate, onImportError);\r\n                }\r\n            } else if (isLayerRule(rule)) {\r\n                iterateCSSRules(rule.cssRules, iterate, onImportError);\r\n            } else;\r\n        });\r\n    }\r\n    const shorthandVarDependantProperties = [\r\n        \"background\",\r\n        \"border\",\r\n        \"border-color\",\r\n        \"border-bottom\",\r\n        \"border-left\",\r\n        \"border-right\",\r\n        \"border-top\",\r\n        \"outline\",\r\n        \"outline-color\"\r\n    ];\r\n    const shorthandVarDepPropRegexps = isSafari\r\n        ? shorthandVarDependantProperties.map((prop) => {\r\n              const regexp = new RegExp(`${prop}:\\\\s*(.*?)\\\\s*;`);\r\n              return [prop, regexp];\r\n          })\r\n        : null;\r\n    function iterateCSSDeclarations(style, iterate) {\r\n        forEach(style, (property) => {\r\n            const value = style.getPropertyValue(property).trim();\r\n            if (!value) {\r\n                return;\r\n            }\r\n            iterate(property, value);\r\n        });\r\n        const cssText = style.cssText;\r\n        if (cssText.includes(\"var(\")) {\r\n            if (isSafari) {\r\n                shorthandVarDepPropRegexps.forEach(([prop, regexp]) => {\r\n                    const match = cssText.match(regexp);\r\n                    if (match && match[1]) {\r\n                        const val = match[1].trim();\r\n                        iterate(prop, val);\r\n                    }\r\n                });\r\n            } else {\r\n                shorthandVarDependantProperties.forEach((prop) => {\r\n                    const val = style.getPropertyValue(prop);\r\n                    if (val && val.includes(\"var(\")) {\r\n                        iterate(prop, val);\r\n                    }\r\n                });\r\n            }\r\n        }\r\n        if (\r\n            cssText.includes(\"background-color: ;\") &&\r\n            !style.getPropertyValue(\"background\")\r\n        ) {\r\n            handleEmptyShorthand(\"background\", style, iterate);\r\n        }\r\n        if (\r\n            cssText.includes(\"border-\") &&\r\n            cssText.includes(\"-color: ;\") &&\r\n            !style.getPropertyValue(\"border\")\r\n        ) {\r\n            handleEmptyShorthand(\"border\", style, iterate);\r\n        }\r\n    }\r\n    function handleEmptyShorthand(shorthand, style, iterate) {\r\n        const parentRule = style.parentRule;\r\n        if (isStyleRule(parentRule)) {\r\n            const sourceCSSText =\r\n                parentRule.parentStyleSheet?.ownerNode?.textContent;\r\n            if (sourceCSSText) {\r\n                let escapedSelector = escapeRegExpSpecialChars(\r\n                    parentRule.selectorText\r\n                );\r\n                escapedSelector = escapedSelector.replaceAll(/\\s+/g, \"\\\\s*\");\r\n                escapedSelector = escapedSelector.replaceAll(/::/g, \"::?\");\r\n                const regexp = new RegExp(\r\n                    `${escapedSelector}\\\\s*{[^}]*${shorthand}:\\\\s*([^;}]+)`\r\n                );\r\n                const match = sourceCSSText.match(regexp);\r\n                if (match) {\r\n                    iterate(shorthand, match[1]);\r\n                }\r\n            } else if (shorthand === \"background\") {\r\n                iterate(\"background-color\", \"#ffffff\");\r\n            }\r\n        }\r\n    }\r\n    const cssURLRegex = /url\\((('.*?')|(\".*?\")|([^\\)]*?))\\)/g;\r\n    const cssImportRegex =\r\n        /@import\\s*(url\\()?(('.+?')|(\".+?\")|([^\\)]*?))\\)? ?(screen)?;?/gi;\r\n    function getCSSURLValue(cssURL) {\r\n        return cssURL\r\n            .trim()\r\n            .replace(/[\\n\\r\\\\]+/g, \"\")\r\n            .replace(/^url\\((.*)\\)$/, \"$1\")\r\n            .trim()\r\n            .replace(/^\"(.*)\"$/, \"$1\")\r\n            .replace(/^'(.*)'$/, \"$1\")\r\n            .replace(/(?:\\\\(.))/g, \"$1\");\r\n    }\r\n    function getCSSBaseBath(url) {\r\n        const cssURL = parseURL(url);\r\n        return `${cssURL.origin}${cssURL.pathname.replace(/\\?.*$/, \"\").replace(/(\\/)([^\\/]+)$/i, \"$1\")}`;\r\n    }\r\n    function replaceCSSRelativeURLsWithAbsolute($css, cssBasePath) {\r\n        return $css.replace(cssURLRegex, (match) => {\r\n            try {\r\n                const url = getCSSURLValue(match);\r\n                const absoluteURL = getAbsoluteURL(cssBasePath, url);\r\n                const escapedURL = absoluteURL.replaceAll(\"'\", \"\\\\'\");\r\n                return `url('${escapedURL}')`;\r\n            } catch (err) {\r\n                return match;\r\n            }\r\n        });\r\n    }\r\n    const fontFaceRegex = /@font-face\\s*{[^}]*}/g;\r\n    function replaceCSSFontFace($css) {\r\n        return $css.replace(fontFaceRegex, \"\");\r\n    }\r\n    const styleRules = new WeakSet();\r\n    const importRules = new WeakSet();\r\n    const mediaRules = new WeakSet();\r\n    const supportsRules = new WeakSet();\r\n    const layerRules = new WeakSet();\r\n    function isStyleRule(rule) {\r\n        if (!rule) {\r\n            return false;\r\n        }\r\n        if (styleRules.has(rule)) {\r\n            return true;\r\n        }\r\n        if (rule.selectorText) {\r\n            styleRules.add(rule);\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n    function isImportRule(rule) {\r\n        if (!rule) {\r\n            return false;\r\n        }\r\n        if (styleRules.has(rule)) {\r\n            return false;\r\n        }\r\n        if (importRules.has(rule)) {\r\n            return true;\r\n        }\r\n        if (rule.href) {\r\n            importRules.add(rule);\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n    function isMediaRule(rule) {\r\n        if (!rule) {\r\n            return false;\r\n        }\r\n        if (styleRules.has(rule)) {\r\n            return false;\r\n        }\r\n        if (mediaRules.has(rule)) {\r\n            return true;\r\n        }\r\n        if (rule.media) {\r\n            mediaRules.add(rule);\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n    function isSupportsRule(rule) {\r\n        if (!rule) {\r\n            return false;\r\n        }\r\n        if (styleRules.has(rule)) {\r\n            return false;\r\n        }\r\n        if (supportsRules.has(rule)) {\r\n            return true;\r\n        }\r\n        if (rule instanceof CSSSupportsRule) {\r\n            supportsRules.add(rule);\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n    function isLayerRule(rule) {\r\n        if (!rule) {\r\n            return false;\r\n        }\r\n        if (styleRules.has(rule)) {\r\n            return false;\r\n        }\r\n        if (layerRules.has(rule)) {\r\n            return true;\r\n        }\r\n        if (isLayerRuleSupported && rule instanceof CSSLayerBlockRule) {\r\n            layerRules.add(rule);\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    function evalMath(expression) {\r\n        const rpnStack = [];\r\n        const workingStack = [];\r\n        let lastToken;\r\n        for (let i = 0, len = expression.length; i < len; i++) {\r\n            const token = expression[i];\r\n            if (!token || token === \" \") {\r\n                continue;\r\n            }\r\n            if (operators.has(token)) {\r\n                const op = operators.get(token);\r\n                while (workingStack.length) {\r\n                    const currentOp = operators.get(workingStack[0]);\r\n                    if (!currentOp) {\r\n                        break;\r\n                    }\r\n                    if (op.lessOrEqualThan(currentOp)) {\r\n                        rpnStack.push(workingStack.shift());\r\n                    } else {\r\n                        break;\r\n                    }\r\n                }\r\n                workingStack.unshift(token);\r\n            } else if (!lastToken || operators.has(lastToken)) {\r\n                rpnStack.push(token);\r\n            } else {\r\n                rpnStack[rpnStack.length - 1] += token;\r\n            }\r\n            lastToken = token;\r\n        }\r\n        rpnStack.push(...workingStack);\r\n        const stack = [];\r\n        for (let i = 0, len = rpnStack.length; i < len; i++) {\r\n            const op = operators.get(rpnStack[i]);\r\n            if (op) {\r\n                const args = stack.splice(0, 2);\r\n                stack.push(op.exec(args[1], args[0]));\r\n            } else {\r\n                stack.unshift(parseFloat(rpnStack[i]));\r\n            }\r\n        }\r\n        return stack[0];\r\n    }\r\n    class Operator {\r\n        constructor(precedence, method) {\r\n            this.precendce = precedence;\r\n            this.execMethod = method;\r\n        }\r\n        exec(left, right) {\r\n            return this.execMethod(left, right);\r\n        }\r\n        lessOrEqualThan(op) {\r\n            return this.precendce <= op.precendce;\r\n        }\r\n    }\r\n    const operators = new Map([\r\n        [\"+\", new Operator(1, (left, right) => left + right)],\r\n        [\"-\", new Operator(1, (left, right) => left - right)],\r\n        [\"*\", new Operator(2, (left, right) => left * right)],\r\n        [\"/\", new Operator(2, (left, right) => left / right)]\r\n    ]);\r\n\r\n    const isSystemDarkModeEnabled = () =>\r\n        matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n\r\n    const hslaParseCache = new Map();\r\n    const rgbaParseCache = new Map();\r\n    function parseColorWithCache($color) {\r\n        $color = $color.trim();\r\n        if (rgbaParseCache.has($color)) {\r\n            return rgbaParseCache.get($color);\r\n        }\r\n        if ($color.includes(\"calc(\")) {\r\n            $color = lowerCalcExpression($color);\r\n        }\r\n        const color = parse($color);\r\n        color && rgbaParseCache.set($color, color);\r\n        return color;\r\n    }\r\n    function parseToHSLWithCache(color) {\r\n        if (hslaParseCache.has(color)) {\r\n            return hslaParseCache.get(color);\r\n        }\r\n        const rgb = parseColorWithCache(color);\r\n        if (!rgb) {\r\n            return null;\r\n        }\r\n        const hsl = rgbToHSL(rgb);\r\n        hslaParseCache.set(color, hsl);\r\n        return hsl;\r\n    }\r\n    function clearColorCache() {\r\n        hslaParseCache.clear();\r\n        rgbaParseCache.clear();\r\n    }\r\n    function hslToRGB({h, s, l, a = 1}) {\r\n        if (s === 0) {\r\n            const [r, b, g] = [l, l, l].map((x) => Math.round(x * 255));\r\n            return {r, g, b, a};\r\n        }\r\n        const c = (1 - Math.abs(2 * l - 1)) * s;\r\n        const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\r\n        const m = l - c / 2;\r\n        const [r, g, b] = (\r\n            h < 60\r\n                ? [c, x, 0]\r\n                : h < 120\r\n                  ? [x, c, 0]\r\n                  : h < 180\r\n                    ? [0, c, x]\r\n                    : h < 240\r\n                      ? [0, x, c]\r\n                      : h < 300\r\n                        ? [x, 0, c]\r\n                        : [c, 0, x]\r\n        ).map((n) => Math.round((n + m) * 255));\r\n        return {r, g, b, a};\r\n    }\r\n    function rgbToHSL({r: r255, g: g255, b: b255, a = 1}) {\r\n        const r = r255 / 255;\r\n        const g = g255 / 255;\r\n        const b = b255 / 255;\r\n        const max = Math.max(r, g, b);\r\n        const min = Math.min(r, g, b);\r\n        const c = max - min;\r\n        const l = (max + min) / 2;\r\n        if (c === 0) {\r\n            return {h: 0, s: 0, l, a};\r\n        }\r\n        let h =\r\n            (max === r\r\n                ? ((g - b) / c) % 6\r\n                : max === g\r\n                  ? (b - r) / c + 2\r\n                  : (r - g) / c + 4) * 60;\r\n        if (h < 0) {\r\n            h += 360;\r\n        }\r\n        const s = c / (1 - Math.abs(2 * l - 1));\r\n        return {h, s, l, a};\r\n    }\r\n    function toFixed(n, digits = 0) {\r\n        const fixed = n.toFixed(digits);\r\n        if (digits === 0) {\r\n            return fixed;\r\n        }\r\n        const dot = fixed.indexOf(\".\");\r\n        if (dot >= 0) {\r\n            const zerosMatch = fixed.match(/0+$/);\r\n            if (zerosMatch) {\r\n                if (zerosMatch.index === dot + 1) {\r\n                    return fixed.substring(0, dot);\r\n                }\r\n                return fixed.substring(0, zerosMatch.index);\r\n            }\r\n        }\r\n        return fixed;\r\n    }\r\n    function rgbToString(rgb) {\r\n        const {r, g, b, a} = rgb;\r\n        if (a != null && a < 1) {\r\n            return `rgba(${toFixed(r)}, ${toFixed(g)}, ${toFixed(b)}, ${toFixed(a, 2)})`;\r\n        }\r\n        return `rgb(${toFixed(r)}, ${toFixed(g)}, ${toFixed(b)})`;\r\n    }\r\n    function rgbToHexString({r, g, b, a}) {\r\n        return `#${(a != null && a < 1\r\n            ? [r, g, b, Math.round(a * 255)]\r\n            : [r, g, b]\r\n        )\r\n            .map((x) => {\r\n                return `${x < 16 ? \"0\" : \"\"}${x.toString(16)}`;\r\n            })\r\n            .join(\"\")}`;\r\n    }\r\n    function hslToString(hsl) {\r\n        const {h, s, l, a} = hsl;\r\n        if (a != null && a < 1) {\r\n            return `hsla(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%, ${toFixed(a, 2)})`;\r\n        }\r\n        return `hsl(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%)`;\r\n    }\r\n    const rgbMatch = /^rgba?\\([^\\(\\)]+\\)$/;\r\n    const hslMatch = /^hsla?\\([^\\(\\)]+\\)$/;\r\n    const hexMatch = /^#[0-9a-f]+$/i;\r\n    function parse($color) {\r\n        const c = $color.trim().toLowerCase();\r\n        if (c.match(rgbMatch)) {\r\n            return parseRGB(c);\r\n        }\r\n        if (c.match(hslMatch)) {\r\n            return parseHSL(c);\r\n        }\r\n        if (c.match(hexMatch)) {\r\n            return parseHex(c);\r\n        }\r\n        if (knownColors.has(c)) {\r\n            return getColorByName(c);\r\n        }\r\n        if (systemColors.has(c)) {\r\n            return getSystemColor(c);\r\n        }\r\n        if ($color === \"transparent\") {\r\n            return {r: 0, g: 0, b: 0, a: 0};\r\n        }\r\n        if (\r\n            (c.startsWith(\"color(\") || c.startsWith(\"color-mix(\")) &&\r\n            c.endsWith(\")\")\r\n        ) {\r\n            return domParseColor(c);\r\n        }\r\n        if (c.startsWith(\"light-dark(\") && c.endsWith(\")\")) {\r\n            const match = c.match(\r\n                /^light-dark\\(\\s*([a-z]+(\\(.*\\))?),\\s*([a-z]+(\\(.*\\))?)\\s*\\)$/\r\n            );\r\n            if (match) {\r\n                const schemeColor = isSystemDarkModeEnabled()\r\n                    ? match[3]\r\n                    : match[1];\r\n                return parse(schemeColor);\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n    function getNumbers($color) {\r\n        const numbers = [];\r\n        let prevPos = 0;\r\n        let isMining = false;\r\n        const startIndex = $color.indexOf(\"(\");\r\n        $color = $color.substring(startIndex + 1, $color.length - 1);\r\n        for (let i = 0; i < $color.length; i++) {\r\n            const c = $color[i];\r\n            if ((c >= \"0\" && c <= \"9\") || c === \".\" || c === \"+\" || c === \"-\") {\r\n                isMining = true;\r\n            } else if (isMining && (c === \" \" || c === \",\" || c === \"/\")) {\r\n                numbers.push($color.substring(prevPos, i));\r\n                isMining = false;\r\n                prevPos = i + 1;\r\n            } else if (!isMining) {\r\n                prevPos = i + 1;\r\n            }\r\n        }\r\n        if (isMining) {\r\n            numbers.push($color.substring(prevPos, $color.length));\r\n        }\r\n        return numbers;\r\n    }\r\n    function getNumbersFromString(str, range, units) {\r\n        const raw = getNumbers(str);\r\n        const unitsList = Object.entries(units);\r\n        const numbers = raw\r\n            .map((r) => r.trim())\r\n            .map((r, i) => {\r\n                let n;\r\n                const unit = unitsList.find(([u]) => r.endsWith(u));\r\n                if (unit) {\r\n                    n =\r\n                        (parseFloat(r.substring(0, r.length - unit[0].length)) /\r\n                            unit[1]) *\r\n                        range[i];\r\n                } else {\r\n                    n = parseFloat(r);\r\n                }\r\n                if (range[i] > 1) {\r\n                    return Math.round(n);\r\n                }\r\n                return n;\r\n            });\r\n        return numbers;\r\n    }\r\n    const rgbRange = [255, 255, 255, 1];\r\n    const rgbUnits = {\"%\": 100};\r\n    function parseRGB($rgb) {\r\n        const [r, g, b, a = 1] = getNumbersFromString($rgb, rgbRange, rgbUnits);\r\n        return {r, g, b, a};\r\n    }\r\n    const hslRange = [360, 1, 1, 1];\r\n    const hslUnits = {\"%\": 100, \"deg\": 360, \"rad\": 2 * Math.PI, \"turn\": 1};\r\n    function parseHSL($hsl) {\r\n        const [h, s, l, a = 1] = getNumbersFromString($hsl, hslRange, hslUnits);\r\n        return hslToRGB({h, s, l, a});\r\n    }\r\n    function parseHex($hex) {\r\n        const h = $hex.substring(1);\r\n        switch (h.length) {\r\n            case 3:\r\n            case 4: {\r\n                const [r, g, b] = [0, 1, 2].map((i) =>\r\n                    parseInt(`${h[i]}${h[i]}`, 16)\r\n                );\r\n                const a =\r\n                    h.length === 3 ? 1 : parseInt(`${h[3]}${h[3]}`, 16) / 255;\r\n                return {r, g, b, a};\r\n            }\r\n            case 6:\r\n            case 8: {\r\n                const [r, g, b] = [0, 2, 4].map((i) =>\r\n                    parseInt(h.substring(i, i + 2), 16)\r\n                );\r\n                const a =\r\n                    h.length === 6 ? 1 : parseInt(h.substring(6, 8), 16) / 255;\r\n                return {r, g, b, a};\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n    function getColorByName($color) {\r\n        const n = knownColors.get($color);\r\n        return {\r\n            r: (n >> 16) & 255,\r\n            g: (n >> 8) & 255,\r\n            b: (n >> 0) & 255,\r\n            a: 1\r\n        };\r\n    }\r\n    function getSystemColor($color) {\r\n        const n = systemColors.get($color);\r\n        return {\r\n            r: (n >> 16) & 255,\r\n            g: (n >> 8) & 255,\r\n            b: (n >> 0) & 255,\r\n            a: 1\r\n        };\r\n    }\r\n    function lowerCalcExpression(color) {\r\n        let searchIndex = 0;\r\n        const replaceBetweenIndices = (start, end, replacement) => {\r\n            color =\r\n                color.substring(0, start) + replacement + color.substring(end);\r\n        };\r\n        while ((searchIndex = color.indexOf(\"calc(\")) !== -1) {\r\n            const range = getParenthesesRange(color, searchIndex);\r\n            if (!range) {\r\n                break;\r\n            }\r\n            let slice = color.slice(range.start + 1, range.end - 1);\r\n            const includesPercentage = slice.includes(\"%\");\r\n            slice = slice.split(\"%\").join(\"\");\r\n            const output = Math.round(evalMath(slice));\r\n            replaceBetweenIndices(\r\n                range.start - 4,\r\n                range.end,\r\n                output + (includesPercentage ? \"%\" : \"\")\r\n            );\r\n        }\r\n        return color;\r\n    }\r\n    const knownColors = new Map(\r\n        Object.entries({\r\n            aliceblue: 0xf0f8ff,\r\n            antiquewhite: 0xfaebd7,\r\n            aqua: 0x00ffff,\r\n            aquamarine: 0x7fffd4,\r\n            azure: 0xf0ffff,\r\n            beige: 0xf5f5dc,\r\n            bisque: 0xffe4c4,\r\n            black: 0x000000,\r\n            blanchedalmond: 0xffebcd,\r\n            blue: 0x0000ff,\r\n            blueviolet: 0x8a2be2,\r\n            brown: 0xa52a2a,\r\n            burlywood: 0xdeb887,\r\n            cadetblue: 0x5f9ea0,\r\n            chartreuse: 0x7fff00,\r\n            chocolate: 0xd2691e,\r\n            coral: 0xff7f50,\r\n            cornflowerblue: 0x6495ed,\r\n            cornsilk: 0xfff8dc,\r\n            crimson: 0xdc143c,\r\n            cyan: 0x00ffff,\r\n            darkblue: 0x00008b,\r\n            darkcyan: 0x008b8b,\r\n            darkgoldenrod: 0xb8860b,\r\n            darkgray: 0xa9a9a9,\r\n            darkgrey: 0xa9a9a9,\r\n            darkgreen: 0x006400,\r\n            darkkhaki: 0xbdb76b,\r\n            darkmagenta: 0x8b008b,\r\n            darkolivegreen: 0x556b2f,\r\n            darkorange: 0xff8c00,\r\n            darkorchid: 0x9932cc,\r\n            darkred: 0x8b0000,\r\n            darksalmon: 0xe9967a,\r\n            darkseagreen: 0x8fbc8f,\r\n            darkslateblue: 0x483d8b,\r\n            darkslategray: 0x2f4f4f,\r\n            darkslategrey: 0x2f4f4f,\r\n            darkturquoise: 0x00ced1,\r\n            darkviolet: 0x9400d3,\r\n            deeppink: 0xff1493,\r\n            deepskyblue: 0x00bfff,\r\n            dimgray: 0x696969,\r\n            dimgrey: 0x696969,\r\n            dodgerblue: 0x1e90ff,\r\n            firebrick: 0xb22222,\r\n            floralwhite: 0xfffaf0,\r\n            forestgreen: 0x228b22,\r\n            fuchsia: 0xff00ff,\r\n            gainsboro: 0xdcdcdc,\r\n            ghostwhite: 0xf8f8ff,\r\n            gold: 0xffd700,\r\n            goldenrod: 0xdaa520,\r\n            gray: 0x808080,\r\n            grey: 0x808080,\r\n            green: 0x008000,\r\n            greenyellow: 0xadff2f,\r\n            honeydew: 0xf0fff0,\r\n            hotpink: 0xff69b4,\r\n            indianred: 0xcd5c5c,\r\n            indigo: 0x4b0082,\r\n            ivory: 0xfffff0,\r\n            khaki: 0xf0e68c,\r\n            lavender: 0xe6e6fa,\r\n            lavenderblush: 0xfff0f5,\r\n            lawngreen: 0x7cfc00,\r\n            lemonchiffon: 0xfffacd,\r\n            lightblue: 0xadd8e6,\r\n            lightcoral: 0xf08080,\r\n            lightcyan: 0xe0ffff,\r\n            lightgoldenrodyellow: 0xfafad2,\r\n            lightgray: 0xd3d3d3,\r\n            lightgrey: 0xd3d3d3,\r\n            lightgreen: 0x90ee90,\r\n            lightpink: 0xffb6c1,\r\n            lightsalmon: 0xffa07a,\r\n            lightseagreen: 0x20b2aa,\r\n            lightskyblue: 0x87cefa,\r\n            lightslategray: 0x778899,\r\n            lightslategrey: 0x778899,\r\n            lightsteelblue: 0xb0c4de,\r\n            lightyellow: 0xffffe0,\r\n            lime: 0x00ff00,\r\n            limegreen: 0x32cd32,\r\n            linen: 0xfaf0e6,\r\n            magenta: 0xff00ff,\r\n            maroon: 0x800000,\r\n            mediumaquamarine: 0x66cdaa,\r\n            mediumblue: 0x0000cd,\r\n            mediumorchid: 0xba55d3,\r\n            mediumpurple: 0x9370db,\r\n            mediumseagreen: 0x3cb371,\r\n            mediumslateblue: 0x7b68ee,\r\n            mediumspringgreen: 0x00fa9a,\r\n            mediumturquoise: 0x48d1cc,\r\n            mediumvioletred: 0xc71585,\r\n            midnightblue: 0x191970,\r\n            mintcream: 0xf5fffa,\r\n            mistyrose: 0xffe4e1,\r\n            moccasin: 0xffe4b5,\r\n            navajowhite: 0xffdead,\r\n            navy: 0x000080,\r\n            oldlace: 0xfdf5e6,\r\n            olive: 0x808000,\r\n            olivedrab: 0x6b8e23,\r\n            orange: 0xffa500,\r\n            orangered: 0xff4500,\r\n            orchid: 0xda70d6,\r\n            palegoldenrod: 0xeee8aa,\r\n            palegreen: 0x98fb98,\r\n            paleturquoise: 0xafeeee,\r\n            palevioletred: 0xdb7093,\r\n            papayawhip: 0xffefd5,\r\n            peachpuff: 0xffdab9,\r\n            peru: 0xcd853f,\r\n            pink: 0xffc0cb,\r\n            plum: 0xdda0dd,\r\n            powderblue: 0xb0e0e6,\r\n            purple: 0x800080,\r\n            rebeccapurple: 0x663399,\r\n            red: 0xff0000,\r\n            rosybrown: 0xbc8f8f,\r\n            royalblue: 0x4169e1,\r\n            saddlebrown: 0x8b4513,\r\n            salmon: 0xfa8072,\r\n            sandybrown: 0xf4a460,\r\n            seagreen: 0x2e8b57,\r\n            seashell: 0xfff5ee,\r\n            sienna: 0xa0522d,\r\n            silver: 0xc0c0c0,\r\n            skyblue: 0x87ceeb,\r\n            slateblue: 0x6a5acd,\r\n            slategray: 0x708090,\r\n            slategrey: 0x708090,\r\n            snow: 0xfffafa,\r\n            springgreen: 0x00ff7f,\r\n            steelblue: 0x4682b4,\r\n            tan: 0xd2b48c,\r\n            teal: 0x008080,\r\n            thistle: 0xd8bfd8,\r\n            tomato: 0xff6347,\r\n            turquoise: 0x40e0d0,\r\n            violet: 0xee82ee,\r\n            wheat: 0xf5deb3,\r\n            white: 0xffffff,\r\n            whitesmoke: 0xf5f5f5,\r\n            yellow: 0xffff00,\r\n            yellowgreen: 0x9acd32\r\n        })\r\n    );\r\n    const systemColors = new Map(\r\n        Object.entries({\r\n            \"ActiveBorder\": 0x3b99fc,\r\n            \"ActiveCaption\": 0x000000,\r\n            \"AppWorkspace\": 0xaaaaaa,\r\n            \"Background\": 0x6363ce,\r\n            \"ButtonFace\": 0xffffff,\r\n            \"ButtonHighlight\": 0xe9e9e9,\r\n            \"ButtonShadow\": 0x9fa09f,\r\n            \"ButtonText\": 0x000000,\r\n            \"CaptionText\": 0x000000,\r\n            \"GrayText\": 0x7f7f7f,\r\n            \"Highlight\": 0xb2d7ff,\r\n            \"HighlightText\": 0x000000,\r\n            \"InactiveBorder\": 0xffffff,\r\n            \"InactiveCaption\": 0xffffff,\r\n            \"InactiveCaptionText\": 0x000000,\r\n            \"InfoBackground\": 0xfbfcc5,\r\n            \"InfoText\": 0x000000,\r\n            \"Menu\": 0xf6f6f6,\r\n            \"MenuText\": 0xffffff,\r\n            \"Scrollbar\": 0xaaaaaa,\r\n            \"ThreeDDarkShadow\": 0x000000,\r\n            \"ThreeDFace\": 0xc0c0c0,\r\n            \"ThreeDHighlight\": 0xffffff,\r\n            \"ThreeDLightShadow\": 0xffffff,\r\n            \"ThreeDShadow\": 0x000000,\r\n            \"Window\": 0xececec,\r\n            \"WindowFrame\": 0xaaaaaa,\r\n            \"WindowText\": 0x000000,\r\n            \"-webkit-focus-ring-color\": 0xe59700\r\n        }).map(([key, value]) => [key.toLowerCase(), value])\r\n    );\r\n    function getSRGBLightness(r, g, b) {\r\n        return (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255;\r\n    }\r\n    let canvas$1;\r\n    let context$1;\r\n    function domParseColor($color) {\r\n        if (!context$1) {\r\n            canvas$1 = document.createElement(\"canvas\");\r\n            canvas$1.width = 1;\r\n            canvas$1.height = 1;\r\n            context$1 = canvas$1.getContext(\"2d\", {willReadFrequently: true});\r\n        }\r\n        context$1.fillStyle = $color;\r\n        context$1.fillRect(0, 0, 1, 1);\r\n        const d = context$1.getImageData(0, 0, 1, 1).data;\r\n        const color = `rgba(${d[0]}, ${d[1]}, ${d[2]}, ${(d[3] / 255).toFixed(2)})`;\r\n        return parseRGB(color);\r\n    }\r\n\r\n    function scale(x, inLow, inHigh, outLow, outHigh) {\r\n        return ((x - inLow) * (outHigh - outLow)) / (inHigh - inLow) + outLow;\r\n    }\r\n    function clamp(x, min, max) {\r\n        return Math.min(max, Math.max(min, x));\r\n    }\r\n    function multiplyMatrices(m1, m2) {\r\n        const result = [];\r\n        for (let i = 0, len = m1.length; i < len; i++) {\r\n            result[i] = [];\r\n            for (let j = 0, len2 = m2[0].length; j < len2; j++) {\r\n                let sum = 0;\r\n                for (let k = 0, len3 = m1[0].length; k < len3; k++) {\r\n                    sum += m1[i][k] * m2[k][j];\r\n                }\r\n                result[i][j] = sum;\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n\r\n    function createFilterMatrix(config) {\r\n        let m = Matrix.identity();\r\n        if (config.sepia !== 0) {\r\n            m = multiplyMatrices(m, Matrix.sepia(config.sepia / 100));\r\n        }\r\n        if (config.grayscale !== 0) {\r\n            m = multiplyMatrices(m, Matrix.grayscale(config.grayscale / 100));\r\n        }\r\n        if (config.contrast !== 100) {\r\n            m = multiplyMatrices(m, Matrix.contrast(config.contrast / 100));\r\n        }\r\n        if (config.brightness !== 100) {\r\n            m = multiplyMatrices(m, Matrix.brightness(config.brightness / 100));\r\n        }\r\n        if (config.mode === 1) {\r\n            m = multiplyMatrices(m, Matrix.invertNHue());\r\n        }\r\n        return m;\r\n    }\r\n    function applyColorMatrix([r, g, b], matrix) {\r\n        const rgb = [[r / 255], [g / 255], [b / 255], [1], [1]];\r\n        const result = multiplyMatrices(matrix, rgb);\r\n        return [0, 1, 2].map((i) =>\r\n            clamp(Math.round(result[i][0] * 255), 0, 255)\r\n        );\r\n    }\r\n    const Matrix = {\r\n        identity() {\r\n            return [\r\n                [1, 0, 0, 0, 0],\r\n                [0, 1, 0, 0, 0],\r\n                [0, 0, 1, 0, 0],\r\n                [0, 0, 0, 1, 0],\r\n                [0, 0, 0, 0, 1]\r\n            ];\r\n        },\r\n        invertNHue() {\r\n            return [\r\n                [0.333, -0.667, -0.667, 0, 1],\r\n                [-0.667, 0.333, -0.667, 0, 1],\r\n                [-0.667, -0.667, 0.333, 0, 1],\r\n                [0, 0, 0, 1, 0],\r\n                [0, 0, 0, 0, 1]\r\n            ];\r\n        },\r\n        brightness(v) {\r\n            return [\r\n                [v, 0, 0, 0, 0],\r\n                [0, v, 0, 0, 0],\r\n                [0, 0, v, 0, 0],\r\n                [0, 0, 0, 1, 0],\r\n                [0, 0, 0, 0, 1]\r\n            ];\r\n        },\r\n        contrast(v) {\r\n            const t = (1 - v) / 2;\r\n            return [\r\n                [v, 0, 0, 0, t],\r\n                [0, v, 0, 0, t],\r\n                [0, 0, v, 0, t],\r\n                [0, 0, 0, 1, 0],\r\n                [0, 0, 0, 0, 1]\r\n            ];\r\n        },\r\n        sepia(v) {\r\n            return [\r\n                [\r\n                    0.393 + 0.607 * (1 - v),\r\n                    0.769 - 0.769 * (1 - v),\r\n                    0.189 - 0.189 * (1 - v),\r\n                    0,\r\n                    0\r\n                ],\r\n                [\r\n                    0.349 - 0.349 * (1 - v),\r\n                    0.686 + 0.314 * (1 - v),\r\n                    0.168 - 0.168 * (1 - v),\r\n                    0,\r\n                    0\r\n                ],\r\n                [\r\n                    0.272 - 0.272 * (1 - v),\r\n                    0.534 - 0.534 * (1 - v),\r\n                    0.131 + 0.869 * (1 - v),\r\n                    0,\r\n                    0\r\n                ],\r\n                [0, 0, 0, 1, 0],\r\n                [0, 0, 0, 0, 1]\r\n            ];\r\n        },\r\n        grayscale(v) {\r\n            return [\r\n                [\r\n                    0.2126 + 0.7874 * (1 - v),\r\n                    0.7152 - 0.7152 * (1 - v),\r\n                    0.0722 - 0.0722 * (1 - v),\r\n                    0,\r\n                    0\r\n                ],\r\n                [\r\n                    0.2126 - 0.2126 * (1 - v),\r\n                    0.7152 + 0.2848 * (1 - v),\r\n                    0.0722 - 0.0722 * (1 - v),\r\n                    0,\r\n                    0\r\n                ],\r\n                [\r\n                    0.2126 - 0.2126 * (1 - v),\r\n                    0.7152 - 0.7152 * (1 - v),\r\n                    0.0722 + 0.9278 * (1 - v),\r\n                    0,\r\n                    0\r\n                ],\r\n                [0, 0, 0, 1, 0],\r\n                [0, 0, 0, 0, 1]\r\n            ];\r\n        }\r\n    };\r\n\r\n    function getBgPole(theme) {\r\n        const isDarkScheme = theme.mode === 1;\r\n        const prop = isDarkScheme\r\n            ? \"darkSchemeBackgroundColor\"\r\n            : \"lightSchemeBackgroundColor\";\r\n        return theme[prop];\r\n    }\r\n    function getFgPole(theme) {\r\n        const isDarkScheme = theme.mode === 1;\r\n        const prop = isDarkScheme\r\n            ? \"darkSchemeTextColor\"\r\n            : \"lightSchemeTextColor\";\r\n        return theme[prop];\r\n    }\r\n    const colorModificationCache = new Map();\r\n    function clearColorModificationCache() {\r\n        colorModificationCache.clear();\r\n    }\r\n    const rgbCacheKeys = [\"r\", \"g\", \"b\", \"a\"];\r\n    const themeCacheKeys$1 = [\r\n        \"mode\",\r\n        \"brightness\",\r\n        \"contrast\",\r\n        \"grayscale\",\r\n        \"sepia\",\r\n        \"darkSchemeBackgroundColor\",\r\n        \"darkSchemeTextColor\",\r\n        \"lightSchemeBackgroundColor\",\r\n        \"lightSchemeTextColor\"\r\n    ];\r\n    function getCacheId(rgb, theme) {\r\n        let resultId = \"\";\r\n        rgbCacheKeys.forEach((key) => {\r\n            resultId += `${rgb[key]};`;\r\n        });\r\n        themeCacheKeys$1.forEach((key) => {\r\n            resultId += `${theme[key]};`;\r\n        });\r\n        return resultId;\r\n    }\r\n    function modifyColorWithCache(\r\n        rgb,\r\n        theme,\r\n        modifyHSL,\r\n        poleColor,\r\n        anotherPoleColor\r\n    ) {\r\n        let fnCache;\r\n        if (colorModificationCache.has(modifyHSL)) {\r\n            fnCache = colorModificationCache.get(modifyHSL);\r\n        } else {\r\n            fnCache = new Map();\r\n            colorModificationCache.set(modifyHSL, fnCache);\r\n        }\r\n        const id = getCacheId(rgb, theme);\r\n        if (fnCache.has(id)) {\r\n            return fnCache.get(id);\r\n        }\r\n        const hsl = rgbToHSL(rgb);\r\n        const pole = poleColor == null ? null : parseToHSLWithCache(poleColor);\r\n        const anotherPole =\r\n            anotherPoleColor == null\r\n                ? null\r\n                : parseToHSLWithCache(anotherPoleColor);\r\n        const modified = modifyHSL(hsl, pole, anotherPole);\r\n        const {r, g, b, a} = hslToRGB(modified);\r\n        const matrix = createFilterMatrix(theme);\r\n        const [rf, gf, bf] = applyColorMatrix([r, g, b], matrix);\r\n        const color =\r\n            a === 1\r\n                ? rgbToHexString({r: rf, g: gf, b: bf})\r\n                : rgbToString({r: rf, g: gf, b: bf, a});\r\n        fnCache.set(id, color);\r\n        return color;\r\n    }\r\n    function modifyLightSchemeColor(rgb, theme) {\r\n        const poleBg = getBgPole(theme);\r\n        const poleFg = getFgPole(theme);\r\n        return modifyColorWithCache(\r\n            rgb,\r\n            theme,\r\n            modifyLightModeHSL,\r\n            poleFg,\r\n            poleBg\r\n        );\r\n    }\r\n    function modifyLightModeHSL({h, s, l, a}, poleFg, poleBg) {\r\n        const isDark = l < 0.5;\r\n        let isNeutral;\r\n        if (isDark) {\r\n            isNeutral = l < 0.2 || s < 0.12;\r\n        } else {\r\n            const isBlue = h > 200 && h < 280;\r\n            isNeutral = s < 0.24 || (l > 0.8 && isBlue);\r\n        }\r\n        let hx = h;\r\n        let sx = l;\r\n        if (isNeutral) {\r\n            if (isDark) {\r\n                hx = poleFg.h;\r\n                sx = poleFg.s;\r\n            } else {\r\n                hx = poleBg.h;\r\n                sx = poleBg.s;\r\n            }\r\n        }\r\n        const lx = scale(l, 0, 1, poleFg.l, poleBg.l);\r\n        return {h: hx, s: sx, l: lx, a};\r\n    }\r\n    const MAX_BG_LIGHTNESS = 0.4;\r\n    function modifyBgHSL({h, s, l, a}, pole) {\r\n        const isDark = l < 0.5;\r\n        const isBlue = h > 200 && h < 280;\r\n        const isNeutral = s < 0.12 || (l > 0.8 && isBlue);\r\n        if (isDark) {\r\n            const lx = scale(l, 0, 0.5, 0, MAX_BG_LIGHTNESS);\r\n            if (isNeutral) {\r\n                const hx = pole.h;\r\n                const sx = pole.s;\r\n                return {h: hx, s: sx, l: lx, a};\r\n            }\r\n            return {h, s, l: lx, a};\r\n        }\r\n        let lx = scale(l, 0.5, 1, MAX_BG_LIGHTNESS, pole.l);\r\n        if (isNeutral) {\r\n            const hx = pole.h;\r\n            const sx = pole.s;\r\n            return {h: hx, s: sx, l: lx, a};\r\n        }\r\n        let hx = h;\r\n        const isYellow = h > 60 && h < 180;\r\n        if (isYellow) {\r\n            const isCloserToGreen = h > 120;\r\n            if (isCloserToGreen) {\r\n                hx = scale(h, 120, 180, 135, 180);\r\n            } else {\r\n                hx = scale(h, 60, 120, 60, 105);\r\n            }\r\n        }\r\n        if (hx > 40 && hx < 80) {\r\n            lx *= 0.75;\r\n        }\r\n        return {h: hx, s, l: lx, a};\r\n    }\r\n    function modifyBackgroundColor(rgb, theme) {\r\n        if (theme.mode === 0) {\r\n            return modifyLightSchemeColor(rgb, theme);\r\n        }\r\n        const pole = getBgPole(theme);\r\n        return modifyColorWithCache(\r\n            rgb,\r\n            {...theme, mode: 0},\r\n            modifyBgHSL,\r\n            pole\r\n        );\r\n    }\r\n    const MIN_FG_LIGHTNESS = 0.55;\r\n    function modifyBlueFgHue(hue) {\r\n        return scale(hue, 205, 245, 205, 220);\r\n    }\r\n    function modifyFgHSL({h, s, l, a}, pole) {\r\n        const isLight = l > 0.5;\r\n        const isNeutral = l < 0.2 || s < 0.24;\r\n        const isBlue = !isNeutral && h > 205 && h < 245;\r\n        if (isLight) {\r\n            const lx = scale(l, 0.5, 1, MIN_FG_LIGHTNESS, pole.l);\r\n            if (isNeutral) {\r\n                const hx = pole.h;\r\n                const sx = pole.s;\r\n                return {h: hx, s: sx, l: lx, a};\r\n            }\r\n            let hx = h;\r\n            if (isBlue) {\r\n                hx = modifyBlueFgHue(h);\r\n            }\r\n            return {h: hx, s, l: lx, a};\r\n        }\r\n        if (isNeutral) {\r\n            const hx = pole.h;\r\n            const sx = pole.s;\r\n            const lx = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS);\r\n            return {h: hx, s: sx, l: lx, a};\r\n        }\r\n        let hx = h;\r\n        let lx;\r\n        if (isBlue) {\r\n            hx = modifyBlueFgHue(h);\r\n            lx = scale(l, 0, 0.5, pole.l, Math.min(1, MIN_FG_LIGHTNESS + 0.05));\r\n        } else {\r\n            lx = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS);\r\n        }\r\n        return {h: hx, s, l: lx, a};\r\n    }\r\n    function modifyForegroundColor(rgb, theme) {\r\n        if (theme.mode === 0) {\r\n            return modifyLightSchemeColor(rgb, theme);\r\n        }\r\n        const pole = getFgPole(theme);\r\n        return modifyColorWithCache(\r\n            rgb,\r\n            {...theme, mode: 0},\r\n            modifyFgHSL,\r\n            pole\r\n        );\r\n    }\r\n    function modifyBorderHSL({h, s, l, a}, poleFg, poleBg) {\r\n        const isDark = l < 0.5;\r\n        const isNeutral = l < 0.2 || s < 0.24;\r\n        let hx = h;\r\n        let sx = s;\r\n        if (isNeutral) {\r\n            if (isDark) {\r\n                hx = poleFg.h;\r\n                sx = poleFg.s;\r\n            } else {\r\n                hx = poleBg.h;\r\n                sx = poleBg.s;\r\n            }\r\n        }\r\n        const lx = scale(l, 0, 1, 0.5, 0.2);\r\n        return {h: hx, s: sx, l: lx, a};\r\n    }\r\n    function modifyBorderColor(rgb, theme) {\r\n        if (theme.mode === 0) {\r\n            return modifyLightSchemeColor(rgb, theme);\r\n        }\r\n        const poleFg = getFgPole(theme);\r\n        const poleBg = getBgPole(theme);\r\n        return modifyColorWithCache(\r\n            rgb,\r\n            {...theme, mode: 0},\r\n            modifyBorderHSL,\r\n            poleFg,\r\n            poleBg\r\n        );\r\n    }\r\n    function modifyShadowColor(rgb, theme) {\r\n        return modifyBackgroundColor(rgb, theme);\r\n    }\r\n    function modifyGradientColor(rgb, theme) {\r\n        return modifyBackgroundColor(rgb, theme);\r\n    }\r\n\r\n    const excludedSelectors = [\r\n        \"pre\",\r\n        \"pre *\",\r\n        \"code\",\r\n        '[aria-hidden=\"true\"]',\r\n        '[class*=\"fa-\"]',\r\n        \".fa\",\r\n        \".fab\",\r\n        \".fad\",\r\n        \".fal\",\r\n        \".far\",\r\n        \".fas\",\r\n        \".fass\",\r\n        \".fasr\",\r\n        \".fat\",\r\n        \".icofont\",\r\n        '[style*=\"font-\"]',\r\n        '[class*=\"icon\"]',\r\n        '[class*=\"Icon\"]',\r\n        '[class*=\"symbol\"]',\r\n        '[class*=\"Symbol\"]',\r\n        \".glyphicon\",\r\n        '[class*=\"material-symbol\"]',\r\n        '[class*=\"material-icon\"]',\r\n        \"mu\",\r\n        '[class*=\"mu-\"]',\r\n        \".typcn\",\r\n        '[class*=\"vjs-\"]'\r\n    ];\r\n    function createTextStyle(config) {\r\n        const lines = [];\r\n        lines.push(`*:not(${excludedSelectors.join(\", \")}) {`);\r\n        if (config.useFont && config.fontFamily) {\r\n            lines.push(`  font-family: ${config.fontFamily} !important;`);\r\n        }\r\n        if (config.textStroke > 0) {\r\n            lines.push(\r\n                `  -webkit-text-stroke: ${config.textStroke}px !important;`\r\n            );\r\n            lines.push(`  text-stroke: ${config.textStroke}px !important;`);\r\n        }\r\n        lines.push(\"}\");\r\n        return lines.join(\"\\n\");\r\n    }\r\n\r\n    var FilterMode;\r\n    (function (FilterMode) {\r\n        FilterMode[(FilterMode[\"light\"] = 0)] = \"light\";\r\n        FilterMode[(FilterMode[\"dark\"] = 1)] = \"dark\";\r\n    })(FilterMode || (FilterMode = {}));\r\n    function getCSSFilterValue(config) {\r\n        const filters = [];\r\n        if (config.mode === FilterMode.dark) {\r\n            filters.push(\"invert(100%) hue-rotate(180deg)\");\r\n        }\r\n        if (config.brightness !== 100) {\r\n            filters.push(`brightness(${config.brightness}%)`);\r\n        }\r\n        if (config.contrast !== 100) {\r\n            filters.push(`contrast(${config.contrast}%)`);\r\n        }\r\n        if (config.grayscale !== 0) {\r\n            filters.push(`grayscale(${config.grayscale}%)`);\r\n        }\r\n        if (config.sepia !== 0) {\r\n            filters.push(`sepia(${config.sepia}%)`);\r\n        }\r\n        if (filters.length === 0) {\r\n            return null;\r\n        }\r\n        return filters.join(\" \");\r\n    }\r\n\r\n    function toSVGMatrix(matrix) {\r\n        return matrix\r\n            .slice(0, 4)\r\n            .map((m) => m.map((m) => m.toFixed(3)).join(\" \"))\r\n            .join(\" \");\r\n    }\r\n    function getSVGFilterMatrixValue(config) {\r\n        return toSVGMatrix(createFilterMatrix(config));\r\n    }\r\n\r\n    function hexify(number) {\r\n        return (number < 16 ? \"0\" : \"\") + number.toString(16);\r\n    }\r\n    function generateUID() {\r\n        if (\"randomUUID\" in crypto) {\r\n            const uuid = crypto.randomUUID();\r\n            return (\r\n                uuid.substring(0, 8) +\r\n                uuid.substring(9, 13) +\r\n                uuid.substring(14, 18) +\r\n                uuid.substring(19, 23) +\r\n                uuid.substring(24)\r\n            );\r\n        }\r\n        if (\"getRandomValues\" in crypto) {\r\n            return Array.from(crypto.getRandomValues(new Uint8Array(16)))\r\n                .map((x) => hexify(x))\r\n                .join(\"\");\r\n        }\r\n        return Math.floor(Math.random() * 2 ** 55).toString(36);\r\n    }\r\n\r\n    const resolvers$1 = new Map();\r\n    const rejectors = new Map();\r\n    async function bgFetch(request) {\r\n        if (window.DarkReader?.Plugins?.fetch) {\r\n            return window.DarkReader.Plugins.fetch(request);\r\n        }\r\n        return new Promise((resolve, reject) => {\r\n            const id = generateUID();\r\n            resolvers$1.set(id, resolve);\r\n            rejectors.set(id, reject);\r\n            chrome.runtime.sendMessage({\r\n                type: MessageTypeCStoBG.FETCH,\r\n                data: request,\r\n                id\r\n            });\r\n        });\r\n    }\r\n    chrome.runtime.onMessage.addListener(({type, data, error, id}) => {\r\n        if (type === MessageTypeBGtoCS.FETCH_RESPONSE) {\r\n            const resolve = resolvers$1.get(id);\r\n            const reject = rejectors.get(id);\r\n            resolvers$1.delete(id);\r\n            rejectors.delete(id);\r\n            if (error) {\r\n                reject && reject(error);\r\n            } else {\r\n                resolve && resolve(data);\r\n            }\r\n        }\r\n    });\r\n\r\n    const MAX_FRAME_DURATION = 1000 / 60;\r\n    class AsyncQueue {\r\n        constructor() {\r\n            this.queue = [];\r\n            this.timerId = null;\r\n        }\r\n        addTask(task) {\r\n            this.queue.push(task);\r\n            this.scheduleFrame();\r\n        }\r\n        stop() {\r\n            if (this.timerId !== null) {\r\n                cancelAnimationFrame(this.timerId);\r\n                this.timerId = null;\r\n            }\r\n            this.queue = [];\r\n        }\r\n        scheduleFrame() {\r\n            if (this.timerId) {\r\n                return;\r\n            }\r\n            this.timerId = requestAnimationFrame(() => {\r\n                this.timerId = null;\r\n                const start = Date.now();\r\n                let cb;\r\n                while ((cb = this.queue.shift())) {\r\n                    cb();\r\n                    if (Date.now() - start >= MAX_FRAME_DURATION) {\r\n                        this.scheduleFrame();\r\n                        break;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    const imageManager = new AsyncQueue();\r\n    async function getImageDetails(url) {\r\n        return new Promise(async (resolve, reject) => {\r\n            try {\r\n                const dataURL = url.startsWith(\"data:\")\r\n                    ? url\r\n                    : await getDataURL(url);\r\n                const blob =\r\n                    tryConvertDataURLToBlobSync(dataURL) ??\r\n                    (await loadAsBlob(url));\r\n                let image;\r\n                if (dataURL.startsWith(\"data:image/svg+xml\")) {\r\n                    image = await loadImage(dataURL);\r\n                } else {\r\n                    image =\r\n                        (await tryCreateImageBitmap(blob)) ??\r\n                        (await loadImage(dataURL));\r\n                }\r\n                imageManager.addTask(() => {\r\n                    const analysis = analyzeImage(image);\r\n                    resolve({\r\n                        src: url,\r\n                        dataURL: analysis.isLarge ? \"\" : dataURL,\r\n                        width: image.width,\r\n                        height: image.height,\r\n                        ...analysis\r\n                    });\r\n                });\r\n            } catch (error) {\r\n                reject(error);\r\n            }\r\n        });\r\n    }\r\n    async function getDataURL(url) {\r\n        const parsedURL = new URL(url);\r\n        if (parsedURL.origin === location.origin) {\r\n            return await loadAsDataURL(url);\r\n        }\r\n        return await bgFetch({url, responseType: \"data-url\"});\r\n    }\r\n    async function tryCreateImageBitmap(blob) {\r\n        try {\r\n            return await createImageBitmap(blob);\r\n        } catch (err) {\r\n            logWarn(\r\n                `Unable to create image bitmap for type ${blob.type}: ${String(err)}`\r\n            );\r\n            return null;\r\n        }\r\n    }\r\n    const INCOMPLETE_DOC_LOADING_IMAGE_LIMIT = 256;\r\n    let loadingImagesCount = 0;\r\n    async function loadImage(url) {\r\n        return new Promise((resolve, reject) => {\r\n            const image = new Image();\r\n            image.onload = () => resolve(image);\r\n            image.onerror = () => reject(`Unable to load image ${url}`);\r\n            if (\r\n                ++loadingImagesCount <= INCOMPLETE_DOC_LOADING_IMAGE_LIMIT ||\r\n                isReadyStateComplete()\r\n            ) {\r\n                image.src = url;\r\n            } else {\r\n                addReadyStateCompleteListener(() => (image.src = url));\r\n            }\r\n        });\r\n    }\r\n    const MAX_ANALYSIS_PIXELS_COUNT = 32 * 32;\r\n    let canvas;\r\n    let context;\r\n    function createCanvas() {\r\n        const maxWidth = MAX_ANALYSIS_PIXELS_COUNT;\r\n        const maxHeight = MAX_ANALYSIS_PIXELS_COUNT;\r\n        canvas = document.createElement(\"canvas\");\r\n        canvas.width = maxWidth;\r\n        canvas.height = maxHeight;\r\n        context = canvas.getContext(\"2d\", {willReadFrequently: true});\r\n        context.imageSmoothingEnabled = false;\r\n    }\r\n    function removeCanvas() {\r\n        canvas = null;\r\n        context = null;\r\n    }\r\n    const LARGE_IMAGE_PIXELS_COUNT = 512 * 512;\r\n    function analyzeImage(image) {\r\n        if (!canvas) {\r\n            createCanvas();\r\n        }\r\n        let sw;\r\n        let sh;\r\n        if (image instanceof HTMLImageElement) {\r\n            sw = image.naturalWidth;\r\n            sh = image.naturalHeight;\r\n        } else {\r\n            sw = image.width;\r\n            sh = image.height;\r\n        }\r\n        if (sw === 0 || sh === 0) {\r\n            return {\r\n                isDark: false,\r\n                isLight: false,\r\n                isTransparent: false,\r\n                isLarge: false\r\n            };\r\n        }\r\n        const isLarge = sw * sh > LARGE_IMAGE_PIXELS_COUNT;\r\n        const sourcePixelsCount = sw * sh;\r\n        const k = Math.min(\r\n            1,\r\n            Math.sqrt(MAX_ANALYSIS_PIXELS_COUNT / sourcePixelsCount)\r\n        );\r\n        const width = Math.ceil(sw * k);\r\n        const height = Math.ceil(sh * k);\r\n        context.clearRect(0, 0, width, height);\r\n        context.drawImage(image, 0, 0, sw, sh, 0, 0, width, height);\r\n        const imageData = context.getImageData(0, 0, width, height);\r\n        const d = imageData.data;\r\n        const TRANSPARENT_ALPHA_THRESHOLD = 0.05;\r\n        const DARK_LIGHTNESS_THRESHOLD = 0.4;\r\n        const LIGHT_LIGHTNESS_THRESHOLD = 0.7;\r\n        let transparentPixelsCount = 0;\r\n        let darkPixelsCount = 0;\r\n        let lightPixelsCount = 0;\r\n        let i, x, y;\r\n        let r, g, b, a;\r\n        let l;\r\n        for (y = 0; y < height; y++) {\r\n            for (x = 0; x < width; x++) {\r\n                i = 4 * (y * width + x);\r\n                r = d[i + 0];\r\n                g = d[i + 1];\r\n                b = d[i + 2];\r\n                a = d[i + 3];\r\n                if (a / 255 < TRANSPARENT_ALPHA_THRESHOLD) {\r\n                    transparentPixelsCount++;\r\n                } else {\r\n                    l = getSRGBLightness(r, g, b);\r\n                    if (l < DARK_LIGHTNESS_THRESHOLD) {\r\n                        darkPixelsCount++;\r\n                    }\r\n                    if (l > LIGHT_LIGHTNESS_THRESHOLD) {\r\n                        lightPixelsCount++;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        const totalPixelsCount = width * height;\r\n        const opaquePixelsCount = totalPixelsCount - transparentPixelsCount;\r\n        const DARK_IMAGE_THRESHOLD = 0.7;\r\n        const LIGHT_IMAGE_THRESHOLD = 0.7;\r\n        const TRANSPARENT_IMAGE_THRESHOLD = 0.1;\r\n        return {\r\n            isDark: darkPixelsCount / opaquePixelsCount >= DARK_IMAGE_THRESHOLD,\r\n            isLight:\r\n                lightPixelsCount / opaquePixelsCount >= LIGHT_IMAGE_THRESHOLD,\r\n            isTransparent:\r\n                transparentPixelsCount / totalPixelsCount >=\r\n                TRANSPARENT_IMAGE_THRESHOLD,\r\n            isLarge\r\n        };\r\n    }\r\n    let isBlobURLSupported = null;\r\n    let canUseProxy = false;\r\n    let blobURLCheckRequested = false;\r\n    const blobURLCheckAwaiters = [];\r\n    document.addEventListener(\r\n        \"__darkreader__inlineScriptsAllowed\",\r\n        () => (canUseProxy = true),\r\n        {once: true}\r\n    );\r\n    async function requestBlobURLCheck() {\r\n        if (!canUseProxy) {\r\n            return;\r\n        }\r\n        if (blobURLCheckRequested) {\r\n            return await new Promise((resolve) =>\r\n                blobURLCheckAwaiters.push(resolve)\r\n            );\r\n        }\r\n        blobURLCheckRequested = true;\r\n        await new Promise((resolve) => {\r\n            document.addEventListener(\r\n                \"__darkreader__blobURLCheckResponse\",\r\n                (e) => {\r\n                    isBlobURLSupported = e.detail.blobURLAllowed;\r\n                    resolve();\r\n                    blobURLCheckAwaiters.forEach((r) => r());\r\n                    blobURLCheckAwaiters.splice(0);\r\n                },\r\n                {once: true}\r\n            );\r\n            document.dispatchEvent(\r\n                new CustomEvent(\"__darkreader__blobURLCheckRequest\")\r\n            );\r\n        });\r\n    }\r\n    function isBlobURLCheckResultReady() {\r\n        return isBlobURLSupported != null || !canUseProxy;\r\n    }\r\n    function onCSPError(err) {\r\n        if (err.blockedURI === \"blob\") {\r\n            isBlobURLSupported = false;\r\n            document.removeEventListener(\"securitypolicyviolation\", onCSPError);\r\n        }\r\n    }\r\n    document.addEventListener(\"securitypolicyviolation\", onCSPError);\r\n    const objectURLs = new Set();\r\n    function getFilteredImageURL({dataURL, width, height}, theme) {\r\n        if (dataURL.startsWith(\"data:image/svg+xml\")) {\r\n            dataURL = escapeXML(dataURL);\r\n        }\r\n        const matrix = getSVGFilterMatrixValue(theme);\r\n        const svg = [\r\n            `<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"${width}\" height=\"${height}\">`,\r\n            \"<defs>\",\r\n            '<filter id=\"darkreader-image-filter\">',\r\n            `<feColorMatrix type=\"matrix\" values=\"${matrix}\" />`,\r\n            \"</filter>\",\r\n            \"</defs>\",\r\n            `<image width=\"${width}\" height=\"${height}\" filter=\"url(#darkreader-image-filter)\" xlink:href=\"${dataURL}\" />`,\r\n            \"</svg>\"\r\n        ].join(\"\");\r\n        if (!isBlobURLSupported) {\r\n            return `data:image/svg+xml;base64,${btoa(svg)}`;\r\n        }\r\n        const bytes = new Uint8Array(svg.length);\r\n        for (let i = 0; i < svg.length; i++) {\r\n            bytes[i] = svg.charCodeAt(i);\r\n        }\r\n        const blob = new Blob([bytes], {type: \"image/svg+xml\"});\r\n        const objectURL = URL.createObjectURL(blob);\r\n        objectURLs.add(objectURL);\r\n        return objectURL;\r\n    }\r\n    const xmlEscapeChars = {\r\n        \"<\": \"&lt;\",\r\n        \">\": \"&gt;\",\r\n        \"&\": \"&amp;\",\r\n        \"'\": \"&apos;\",\r\n        '\"': \"&quot;\"\r\n    };\r\n    function escapeXML(str) {\r\n        return str.replace(/[<>&'\"]/g, (c) => xmlEscapeChars[c] ?? c);\r\n    }\r\n    const dataURLBlobURLs = new Map();\r\n    function tryConvertDataURLToBlobSync(dataURL) {\r\n        const colonIndex = dataURL.indexOf(\":\");\r\n        const semicolonIndex = dataURL.indexOf(\";\", colonIndex + 1);\r\n        const commaIndex = dataURL.indexOf(\",\", semicolonIndex + 1);\r\n        const encoding = dataURL\r\n            .substring(semicolonIndex + 1, commaIndex)\r\n            .toLocaleLowerCase();\r\n        const mediaType = dataURL.substring(colonIndex + 1, semicolonIndex);\r\n        if (encoding !== \"base64\" || !mediaType) {\r\n            return null;\r\n        }\r\n        const characters = atob(dataURL.substring(commaIndex + 1));\r\n        const bytes = new Uint8Array(characters.length);\r\n        for (let i = 0; i < characters.length; i++) {\r\n            bytes[i] = characters.charCodeAt(i);\r\n        }\r\n        return new Blob([bytes], {type: mediaType});\r\n    }\r\n    async function tryConvertDataURLToBlobURL(dataURL) {\r\n        if (!isBlobURLSupported) {\r\n            return null;\r\n        }\r\n        const hash = getHashCode(dataURL);\r\n        let blobURL = dataURLBlobURLs.get(hash);\r\n        if (blobURL) {\r\n            return blobURL;\r\n        }\r\n        let blob = tryConvertDataURLToBlobSync(dataURL);\r\n        if (!blob) {\r\n            const response = await fetch(dataURL);\r\n            blob = await response.blob();\r\n        }\r\n        blobURL = URL.createObjectURL(blob);\r\n        dataURLBlobURLs.set(hash, blobURL);\r\n        return blobURL;\r\n    }\r\n    function cleanImageProcessingCache() {\r\n        imageManager && imageManager.stop();\r\n        removeCanvas();\r\n        objectURLs.forEach((u) => URL.revokeObjectURL(u));\r\n        objectURLs.clear();\r\n        dataURLBlobURLs.forEach((u) => URL.revokeObjectURL(u));\r\n        dataURLBlobURLs.clear();\r\n    }\r\n\r\n    const gradientLength = \"gradient\".length;\r\n    const conicGradient = \"conic-\";\r\n    const conicGradientLength = conicGradient.length;\r\n    const radialGradient = \"radial-\";\r\n    const linearGradient = \"linear-\";\r\n    function parseGradient(value) {\r\n        const result = [];\r\n        let index = 0;\r\n        let startIndex = conicGradient.length;\r\n        while ((index = value.indexOf(\"gradient\", startIndex)) !== -1) {\r\n            let typeGradient;\r\n            [linearGradient, radialGradient, conicGradient].find(\r\n                (possibleType) => {\r\n                    if (index - possibleType.length >= 0) {\r\n                        const possibleGradient = value.substring(\r\n                            index - possibleType.length,\r\n                            index\r\n                        );\r\n                        if (possibleGradient === possibleType) {\r\n                            if (\r\n                                value.slice(\r\n                                    index - possibleType.length - 10,\r\n                                    index - possibleType.length - 1\r\n                                ) === \"repeating\"\r\n                            ) {\r\n                                typeGradient = `repeating-${possibleType}gradient`;\r\n                                return true;\r\n                            }\r\n                            if (\r\n                                value.slice(\r\n                                    index - possibleType.length - 8,\r\n                                    index - possibleType.length - 1\r\n                                ) === \"-webkit\"\r\n                            ) {\r\n                                typeGradient = `-webkit-${possibleType}gradient`;\r\n                                return true;\r\n                            }\r\n                            typeGradient = `${possibleType}gradient`;\r\n                            return true;\r\n                        }\r\n                    }\r\n                }\r\n            );\r\n            if (!typeGradient) {\r\n                break;\r\n            }\r\n            const {start, end} = getParenthesesRange(\r\n                value,\r\n                index + gradientLength\r\n            );\r\n            const match = value.substring(start + 1, end - 1);\r\n            startIndex = end + 1 + conicGradientLength;\r\n            result.push({\r\n                typeGradient,\r\n                match,\r\n                offset: typeGradient.length + 2,\r\n                index: index - typeGradient.length + gradientLength,\r\n                hasComma: true\r\n            });\r\n        }\r\n        if (result.length) {\r\n            result[result.length - 1].hasComma = false;\r\n        }\r\n        return result;\r\n    }\r\n\r\n    function getPriority(ruleStyle, property) {\r\n        return Boolean(ruleStyle && ruleStyle.getPropertyPriority(property));\r\n    }\r\n    function getModifiableCSSDeclaration(\r\n        property,\r\n        value,\r\n        rule,\r\n        variablesStore,\r\n        ignoreImageSelectors,\r\n        isCancelled\r\n    ) {\r\n        let modifier = null;\r\n        if (property.startsWith(\"--\")) {\r\n            modifier = getVariableModifier(\r\n                variablesStore,\r\n                property,\r\n                value,\r\n                rule,\r\n                ignoreImageSelectors,\r\n                isCancelled\r\n            );\r\n        } else if (value.includes(\"var(\")) {\r\n            modifier = getVariableDependantModifier(\r\n                variablesStore,\r\n                property,\r\n                value\r\n            );\r\n        } else if (property === \"color-scheme\") {\r\n            modifier = getColorSchemeModifier();\r\n        } else if (property === \"scrollbar-color\") {\r\n            modifier = getScrollbarColorModifier(value);\r\n        } else if (\r\n            (property.includes(\"color\") &&\r\n                property !== \"-webkit-print-color-adjust\") ||\r\n            property === \"fill\" ||\r\n            property === \"stroke\" ||\r\n            property === \"stop-color\"\r\n        ) {\r\n            if (\r\n                property.startsWith(\"border\") &&\r\n                property !== \"border-color\" &&\r\n                value === \"initial\"\r\n            ) {\r\n                const borderSideProp = property.substring(\r\n                    0,\r\n                    property.length - 6\r\n                );\r\n                const borderSideVal =\r\n                    rule.style.getPropertyValue(borderSideProp);\r\n                if (\r\n                    borderSideVal.startsWith(\"0px\") ||\r\n                    borderSideVal === \"none\"\r\n                ) {\r\n                    property = borderSideProp;\r\n                    modifier = borderSideVal;\r\n                } else {\r\n                    modifier = value;\r\n                }\r\n            } else {\r\n                modifier = getColorModifier(property, value, rule);\r\n            }\r\n        } else if (\r\n            property === \"background-image\" ||\r\n            property === \"list-style-image\"\r\n        ) {\r\n            modifier = getBgImageModifier(\r\n                value,\r\n                rule,\r\n                ignoreImageSelectors,\r\n                isCancelled\r\n            );\r\n        } else if (property.includes(\"shadow\")) {\r\n            modifier = getShadowModifier(value);\r\n        }\r\n        if (!modifier) {\r\n            return null;\r\n        }\r\n        return {\r\n            property,\r\n            value: modifier,\r\n            important: getPriority(rule.style, property),\r\n            sourceValue: value\r\n        };\r\n    }\r\n    function joinSelectors(...selectors) {\r\n        return selectors.filter(Boolean).join(\", \");\r\n    }\r\n    function getModifiedUserAgentStyle(theme, isIFrame, styleSystemControls) {\r\n        const lines = [];\r\n        if (!isIFrame) {\r\n            lines.push(\"html {\");\r\n            lines.push(\r\n                `    background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)} !important;`\r\n            );\r\n            lines.push(\"}\");\r\n        }\r\n        if (isCSSColorSchemePropSupported && theme.mode === 1) {\r\n            lines.push(\"html {\");\r\n            lines.push(`    color-scheme: dark !important;`);\r\n            lines.push(\"}\");\r\n            lines.push(\"iframe {\");\r\n            lines.push(`    color-scheme: dark !important;`);\r\n            lines.push(\"}\");\r\n        }\r\n        const bgSelectors = joinSelectors(\r\n            isIFrame ? \"\" : \"html, body\",\r\n            styleSystemControls ? \"input, textarea, select, button, dialog\" : \"\"\r\n        );\r\n        if (bgSelectors) {\r\n            lines.push(`${bgSelectors} {`);\r\n            lines.push(\r\n                `    background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)};`\r\n            );\r\n            lines.push(\"}\");\r\n        }\r\n        lines.push(\r\n            `${joinSelectors(\"html, body\", styleSystemControls ? \"input, textarea, select, button\" : \"\")} {`\r\n        );\r\n        lines.push(\r\n            `    border-color: ${modifyBorderColor({r: 76, g: 76, b: 76}, theme)};`\r\n        );\r\n        lines.push(\r\n            `    color: ${modifyForegroundColor({r: 0, g: 0, b: 0}, theme)};`\r\n        );\r\n        lines.push(\"}\");\r\n        lines.push(\"a {\");\r\n        lines.push(\r\n            `    color: ${modifyForegroundColor({r: 0, g: 64, b: 255}, theme)};`\r\n        );\r\n        lines.push(\"}\");\r\n        lines.push(\"table {\");\r\n        lines.push(\r\n            `    border-color: ${modifyBorderColor({r: 128, g: 128, b: 128}, theme)};`\r\n        );\r\n        lines.push(\"}\");\r\n        lines.push(\"mark {\");\r\n        lines.push(\r\n            `    color: ${modifyForegroundColor({r: 0, g: 0, b: 0}, theme)};`\r\n        );\r\n        lines.push(\"}\");\r\n        lines.push(\"::placeholder {\");\r\n        lines.push(\r\n            `    color: ${modifyForegroundColor({r: 169, g: 169, b: 169}, theme)};`\r\n        );\r\n        lines.push(\"}\");\r\n        lines.push(\"input:-webkit-autofill,\");\r\n        lines.push(\"textarea:-webkit-autofill,\");\r\n        lines.push(\"select:-webkit-autofill {\");\r\n        lines.push(\r\n            `    background-color: ${modifyBackgroundColor({r: 250, g: 255, b: 189}, theme)} !important;`\r\n        );\r\n        lines.push(\r\n            `    color: ${modifyForegroundColor({r: 0, g: 0, b: 0}, theme)} !important;`\r\n        );\r\n        lines.push(\"}\");\r\n        if (theme.scrollbarColor) {\r\n            lines.push(getModifiedScrollbarStyle(theme));\r\n        }\r\n        if (theme.selectionColor) {\r\n            lines.push(getModifiedSelectionStyle(theme));\r\n        }\r\n        if (isLayerRuleSupported) {\r\n            lines.unshift(\"@layer {\");\r\n            lines.push(\"}\");\r\n        }\r\n        return lines.join(\"\\n\");\r\n    }\r\n    function getSelectionColor(theme) {\r\n        let backgroundColorSelection;\r\n        let foregroundColorSelection;\r\n        if (theme.selectionColor === \"auto\") {\r\n            backgroundColorSelection = modifyBackgroundColor(\r\n                {r: 0, g: 96, b: 212},\r\n                {...theme, grayscale: 0}\r\n            );\r\n            foregroundColorSelection = modifyForegroundColor(\r\n                {r: 255, g: 255, b: 255},\r\n                {...theme, grayscale: 0}\r\n            );\r\n        } else {\r\n            const rgb = parseColorWithCache(theme.selectionColor);\r\n            const hsl = rgbToHSL(rgb);\r\n            backgroundColorSelection = theme.selectionColor;\r\n            if (hsl.l < 0.5) {\r\n                foregroundColorSelection = \"#FFF\";\r\n            } else {\r\n                foregroundColorSelection = \"#000\";\r\n            }\r\n        }\r\n        return {backgroundColorSelection, foregroundColorSelection};\r\n    }\r\n    function getModifiedSelectionStyle(theme) {\r\n        const lines = [];\r\n        const modifiedSelectionColor = getSelectionColor(theme);\r\n        const backgroundColorSelection =\r\n            modifiedSelectionColor.backgroundColorSelection;\r\n        const foregroundColorSelection =\r\n            modifiedSelectionColor.foregroundColorSelection;\r\n        [\"::selection\", \"::-moz-selection\"].forEach((selection) => {\r\n            lines.push(`${selection} {`);\r\n            lines.push(\r\n                `    background-color: ${backgroundColorSelection} !important;`\r\n            );\r\n            lines.push(`    color: ${foregroundColorSelection} !important;`);\r\n            lines.push(\"}\");\r\n        });\r\n        return lines.join(\"\\n\");\r\n    }\r\n    function getModifiedScrollbarStyle(theme) {\r\n        let colorTrack;\r\n        let colorThumb;\r\n        if (theme.scrollbarColor === \"auto\") {\r\n            colorTrack = modifyBackgroundColor({r: 241, g: 241, b: 241}, theme);\r\n            colorThumb = modifyBackgroundColor({r: 176, g: 176, b: 176}, theme);\r\n        } else {\r\n            const rgb = parseColorWithCache(theme.scrollbarColor);\r\n            const hsl = rgbToHSL(rgb);\r\n            const darken = (darker) => ({\r\n                ...hsl,\r\n                l: clamp(hsl.l - darker, 0, 1)\r\n            });\r\n            colorTrack = hslToString(darken(0.4));\r\n            colorThumb = hslToString(hsl);\r\n        }\r\n        return [\r\n            `* {`,\r\n            `    scrollbar-color: ${colorThumb} ${colorTrack};`,\r\n            `}`\r\n        ].join(\"\\n\");\r\n    }\r\n    function getModifiedFallbackStyle(theme, {strict}) {\r\n        const factory = defaultFallbackFactory;\r\n        return factory(theme, {strict});\r\n    }\r\n    function defaultFallbackFactory(theme, {strict}) {\r\n        const lines = [];\r\n        lines.push(\r\n            `html, body, ${strict ? \"body :not(iframe)\" : \"body > :not(iframe)\"} {`\r\n        );\r\n        lines.push(\r\n            `    background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)} !important;`\r\n        );\r\n        lines.push(\r\n            `    border-color: ${modifyBorderColor({r: 64, g: 64, b: 64}, theme)} !important;`\r\n        );\r\n        lines.push(\r\n            `    color: ${modifyForegroundColor({r: 0, g: 0, b: 0}, theme)} !important;`\r\n        );\r\n        lines.push(\"}\");\r\n        lines.push(`div[style*=\"background-color: rgb(135, 135, 135)\"] {`);\r\n        lines.push(`    background-color: #878787 !important;`);\r\n        lines.push(\"}\");\r\n        return lines.join(\"\\n\");\r\n    }\r\n    const unparsableColors = new Set([\r\n        \"inherit\",\r\n        \"transparent\",\r\n        \"initial\",\r\n        \"currentcolor\",\r\n        \"none\",\r\n        \"unset\",\r\n        \"auto\"\r\n    ]);\r\n    function getColorModifier(prop, value, rule) {\r\n        if (unparsableColors.has(value.toLowerCase())) {\r\n            return value;\r\n        }\r\n        const rgb = parseColorWithCache(value);\r\n        if (!rgb) {\r\n            return null;\r\n        }\r\n        if (prop.includes(\"background\")) {\r\n            if (\r\n                (rule.style.webkitMaskImage &&\r\n                    rule.style.webkitMaskImage !== \"none\") ||\r\n                (rule.style.webkitMask &&\r\n                    !rule.style.webkitMask.startsWith(\"none\")) ||\r\n                (rule.style.mask && rule.style.mask !== \"none\") ||\r\n                (rule.style.getPropertyValue(\"mask-image\") &&\r\n                    rule.style.getPropertyValue(\"mask-image\") !== \"none\")\r\n            ) {\r\n                return (theme) => modifyForegroundColor(rgb, theme);\r\n            }\r\n            return (theme) => modifyBackgroundColor(rgb, theme);\r\n        }\r\n        if (prop.includes(\"border\") || prop.includes(\"outline\")) {\r\n            return (theme) => modifyBorderColor(rgb, theme);\r\n        }\r\n        return (theme) => modifyForegroundColor(rgb, theme);\r\n    }\r\n    const imageDetailsCache = new Map();\r\n    const awaitingForImageLoading = new Map();\r\n    function shouldIgnoreImage(selectorText, selectors) {\r\n        if (!selectorText || selectors.length === 0) {\r\n            return false;\r\n        }\r\n        if (selectors.some((s) => s === \"*\")) {\r\n            return true;\r\n        }\r\n        const ruleSelectors = selectorText.split(/,\\s*/g);\r\n        for (let i = 0; i < selectors.length; i++) {\r\n            const ignoredSelector = selectors[i];\r\n            if (ruleSelectors.some((s) => s === ignoredSelector)) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function getBgImageModifier(\r\n        value,\r\n        rule,\r\n        ignoreImageSelectors,\r\n        isCancelled\r\n    ) {\r\n        try {\r\n            if (shouldIgnoreImage(rule.selectorText, ignoreImageSelectors)) {\r\n                return value;\r\n            }\r\n            const gradients = parseGradient(value);\r\n            const urls = getMatches(cssURLRegex, value);\r\n            if (urls.length === 0 && gradients.length === 0) {\r\n                return value;\r\n            }\r\n            const getIndices = (matches) => {\r\n                let index = 0;\r\n                return matches.map((match) => {\r\n                    const valueIndex = value.indexOf(match, index);\r\n                    index = valueIndex + match.length;\r\n                    return {match, index: valueIndex};\r\n                });\r\n            };\r\n            const matches = gradients\r\n                .map((i) => ({type: \"gradient\", ...i}))\r\n                .concat(\r\n                    getIndices(urls).map((i) => ({\r\n                        type: \"url\",\r\n                        offset: 0,\r\n                        ...i\r\n                    }))\r\n                )\r\n                .sort((a, b) => (a.index > b.index ? 1 : -1));\r\n            const getGradientModifier = (gradient) => {\r\n                const {typeGradient, match, hasComma} = gradient;\r\n                const partsRegex =\r\n                    /([^\\(\\),]+(\\([^\\(\\)]*(\\([^\\(\\)]*\\)*[^\\(\\)]*)?\\))?([^\\(\\), ]|( (?!calc)))*),?/g;\r\n                const colorStopRegex =\r\n                    /^(from|color-stop|to)\\(([^\\(\\)]*?,\\s*)?(.*?)\\)$/;\r\n                const parts = getMatches(partsRegex, match, 1).map((part) => {\r\n                    part = part.trim();\r\n                    let rgb = parseColorWithCache(part);\r\n                    if (rgb) {\r\n                        return (theme) => modifyGradientColor(rgb, theme);\r\n                    }\r\n                    const space = part.lastIndexOf(\" \");\r\n                    rgb = parseColorWithCache(part.substring(0, space));\r\n                    if (rgb) {\r\n                        return (theme) =>\r\n                            `${modifyGradientColor(rgb, theme)} ${part.substring(space + 1)}`;\r\n                    }\r\n                    const colorStopMatch = part.match(colorStopRegex);\r\n                    if (colorStopMatch) {\r\n                        rgb = parseColorWithCache(colorStopMatch[3]);\r\n                        if (rgb) {\r\n                            return (theme) =>\r\n                                `${colorStopMatch[1]}(${colorStopMatch[2] ? `${colorStopMatch[2]}, ` : \"\"}${modifyGradientColor(rgb, theme)})`;\r\n                        }\r\n                    }\r\n                    return () => part;\r\n                });\r\n                return (theme) => {\r\n                    return `${typeGradient}(${parts.map((modify) => modify(theme)).join(\", \")})${hasComma ? \", \" : \"\"}`;\r\n                };\r\n            };\r\n            const getURLModifier = (urlValue) => {\r\n                let url = getCSSURLValue(urlValue);\r\n                const isURLEmpty = url.length === 0;\r\n                const {parentStyleSheet} = rule;\r\n                const baseURL =\r\n                    parentStyleSheet && parentStyleSheet.href\r\n                        ? getCSSBaseBath(parentStyleSheet.href)\r\n                        : parentStyleSheet?.ownerNode?.baseURI ||\r\n                          location.origin;\r\n                url = getAbsoluteURL(baseURL, url);\r\n                return async (theme) => {\r\n                    if (isURLEmpty) {\r\n                        return \"url('')\";\r\n                    }\r\n                    let imageDetails = null;\r\n                    if (imageDetailsCache.has(url)) {\r\n                        imageDetails = imageDetailsCache.get(url);\r\n                    } else {\r\n                        try {\r\n                            if (!isBlobURLCheckResultReady()) {\r\n                                await requestBlobURLCheck();\r\n                            }\r\n                            if (awaitingForImageLoading.has(url)) {\r\n                                const awaiters =\r\n                                    awaitingForImageLoading.get(url);\r\n                                imageDetails = await new Promise((resolve) =>\r\n                                    awaiters.push(resolve)\r\n                                );\r\n                                if (!imageDetails) {\r\n                                    return null;\r\n                                }\r\n                            } else {\r\n                                awaitingForImageLoading.set(url, []);\r\n                                imageDetails = await getImageDetails(url);\r\n                                imageDetailsCache.set(url, imageDetails);\r\n                                awaitingForImageLoading\r\n                                    .get(url)\r\n                                    .forEach((resolve) =>\r\n                                        resolve(imageDetails)\r\n                                    );\r\n                                awaitingForImageLoading.delete(url);\r\n                            }\r\n                            if (isCancelled()) {\r\n                                return null;\r\n                            }\r\n                        } catch (err) {\r\n                            logWarn(err);\r\n                            if (awaitingForImageLoading.has(url)) {\r\n                                awaitingForImageLoading\r\n                                    .get(url)\r\n                                    .forEach((resolve) => resolve(null));\r\n                                awaitingForImageLoading.delete(url);\r\n                            }\r\n                        }\r\n                    }\r\n                    if (imageDetails) {\r\n                        const bgImageValue = getBgImageValue(\r\n                            imageDetails,\r\n                            theme\r\n                        );\r\n                        if (bgImageValue) {\r\n                            return bgImageValue;\r\n                        }\r\n                    }\r\n                    if (url.startsWith(\"data:\")) {\r\n                        const blobURL = await tryConvertDataURLToBlobURL(url);\r\n                        if (blobURL) {\r\n                            return `url(\"${blobURL}\")`;\r\n                        }\r\n                    }\r\n                    return `url(\"${url}\")`;\r\n                };\r\n            };\r\n            const getBgImageValue = (imageDetails, theme) => {\r\n                const {isDark, isLight, isTransparent, isLarge, width} =\r\n                    imageDetails;\r\n                let result;\r\n                const logSrc = imageDetails.src.startsWith(\"data:\")\r\n                    ? \"data:\"\r\n                    : imageDetails.src;\r\n                if (isLarge && isLight && !isTransparent && theme.mode === 1) {\r\n                    logInfo(`Hiding large light image ${logSrc}`);\r\n                    result = \"none\";\r\n                } else if (\r\n                    isDark &&\r\n                    isTransparent &&\r\n                    theme.mode === 1 &&\r\n                    width > 2\r\n                ) {\r\n                    logInfo(`Inverting dark image ${logSrc}`);\r\n                    const inverted = getFilteredImageURL(imageDetails, {\r\n                        ...theme,\r\n                        sepia: clamp(theme.sepia + 10, 0, 100)\r\n                    });\r\n                    result = `url(\"${inverted}\")`;\r\n                } else if (isLight && !isTransparent && theme.mode === 1) {\r\n                    logInfo(`Dimming light image ${logSrc}`);\r\n                    const dimmed = getFilteredImageURL(imageDetails, theme);\r\n                    result = `url(\"${dimmed}\")`;\r\n                } else if (theme.mode === 0 && isLight) {\r\n                    logInfo(`Applying filter to image ${logSrc}`);\r\n                    const filtered = getFilteredImageURL(imageDetails, {\r\n                        ...theme,\r\n                        brightness: clamp(theme.brightness - 10, 5, 200),\r\n                        sepia: clamp(theme.sepia + 10, 0, 100)\r\n                    });\r\n                    result = `url(\"${filtered}\")`;\r\n                } else {\r\n                    logInfo(`Not modifying the image ${logSrc}`);\r\n                    result = null;\r\n                }\r\n                return result;\r\n            };\r\n            const modifiers = [];\r\n            let matchIndex = 0;\r\n            let prevHasComma = false;\r\n            matches.forEach(\r\n                ({type, match, index, typeGradient, hasComma, offset}, i) => {\r\n                    const matchStart = index;\r\n                    const prefixStart = matchIndex;\r\n                    const matchEnd = matchStart + match.length + offset;\r\n                    matchIndex = matchEnd;\r\n                    if (prefixStart !== matchStart) {\r\n                        if (prevHasComma) {\r\n                            modifiers.push(() => {\r\n                                let betweenValue = value.substring(\r\n                                    prefixStart,\r\n                                    matchStart\r\n                                );\r\n                                if (betweenValue[0] === \",\") {\r\n                                    betweenValue = betweenValue.substring(1);\r\n                                }\r\n                                return betweenValue;\r\n                            });\r\n                        } else {\r\n                            modifiers.push(() =>\r\n                                value.substring(prefixStart, matchStart)\r\n                            );\r\n                        }\r\n                    }\r\n                    prevHasComma = hasComma || false;\r\n                    if (type === \"url\") {\r\n                        modifiers.push(getURLModifier(match));\r\n                    } else if (type === \"gradient\") {\r\n                        modifiers.push(\r\n                            getGradientModifier({\r\n                                match,\r\n                                index,\r\n                                typeGradient: typeGradient,\r\n                                hasComma: hasComma || false,\r\n                                offset\r\n                            })\r\n                        );\r\n                    }\r\n                    if (i === matches.length - 1) {\r\n                        modifiers.push(() => value.substring(matchEnd));\r\n                    }\r\n                }\r\n            );\r\n            return (theme) => {\r\n                const results = modifiers\r\n                    .filter(Boolean)\r\n                    .map((modify) => modify(theme));\r\n                if (results.some((r) => r instanceof Promise)) {\r\n                    return Promise.all(results).then((asyncResults) => {\r\n                        return asyncResults.filter(Boolean).join(\"\");\r\n                    });\r\n                }\r\n                const combinedResult = results.join(\"\");\r\n                if (combinedResult.endsWith(\", initial\")) {\r\n                    return combinedResult.slice(0, -9);\r\n                }\r\n                return combinedResult;\r\n            };\r\n        } catch (err) {\r\n            return null;\r\n        }\r\n    }\r\n    function getShadowModifierWithInfo(value) {\r\n        try {\r\n            let index = 0;\r\n            const colorMatches = getMatches(\r\n                /(^|\\s)(?!calc)([a-z]+\\(.+?\\)|#[0-9a-f]+|[a-z]+)(.*?(inset|outset)?($|,))/gi,\r\n                value,\r\n                2\r\n            );\r\n            let notParsed = 0;\r\n            const modifiers = colorMatches.map((match, i) => {\r\n                const prefixIndex = index;\r\n                const matchIndex = value.indexOf(match, index);\r\n                const matchEnd = matchIndex + match.length;\r\n                index = matchEnd;\r\n                const rgb = parseColorWithCache(match);\r\n                if (!rgb) {\r\n                    notParsed++;\r\n                    return () => value.substring(prefixIndex, matchEnd);\r\n                }\r\n                return (theme) =>\r\n                    `${value.substring(prefixIndex, matchIndex)}${modifyShadowColor(rgb, theme)}${i === colorMatches.length - 1 ? value.substring(matchEnd) : \"\"}`;\r\n            });\r\n            return (theme) => {\r\n                const modified = modifiers\r\n                    .map((modify) => modify(theme))\r\n                    .join(\"\");\r\n                return {\r\n                    matchesLength: colorMatches.length,\r\n                    unparseableMatchesLength: notParsed,\r\n                    result: modified\r\n                };\r\n            };\r\n        } catch (err) {\r\n            return null;\r\n        }\r\n    }\r\n    function getShadowModifier(value) {\r\n        const shadowModifier = getShadowModifierWithInfo(value);\r\n        if (!shadowModifier) {\r\n            return null;\r\n        }\r\n        return (theme) => shadowModifier(theme).result;\r\n    }\r\n    function getScrollbarColorModifier(value) {\r\n        const colorsMatch = value.match(\r\n            /^\\s*([a-z]+(\\(.*\\))?)\\s+([a-z]+(\\(.*\\))?)\\s*$/\r\n        );\r\n        if (!colorsMatch) {\r\n            return value;\r\n        }\r\n        const thumb = parseColorWithCache(colorsMatch[1]);\r\n        const track = parseColorWithCache(colorsMatch[3]);\r\n        if (!thumb || !track) {\r\n            return null;\r\n        }\r\n        return (theme) =>\r\n            `${modifyForegroundColor(thumb, theme)} ${modifyBackgroundColor(thumb, theme)}`;\r\n    }\r\n    function getColorSchemeModifier() {\r\n        return (theme) => (theme.mode === 0 ? \"dark light\" : \"dark\");\r\n    }\r\n    function getVariableModifier(\r\n        variablesStore,\r\n        prop,\r\n        value,\r\n        rule,\r\n        ignoredImgSelectors,\r\n        isCancelled\r\n    ) {\r\n        return variablesStore.getModifierForVariable({\r\n            varName: prop,\r\n            sourceValue: value,\r\n            rule,\r\n            ignoredImgSelectors,\r\n            isCancelled\r\n        });\r\n    }\r\n    function getVariableDependantModifier(variablesStore, prop, value) {\r\n        return variablesStore.getModifierForVarDependant(prop, value);\r\n    }\r\n    function cleanModificationCache() {\r\n        clearColorModificationCache();\r\n        imageDetailsCache.clear();\r\n        cleanImageProcessingCache();\r\n        awaitingForImageLoading.clear();\r\n    }\r\n\r\n    const VAR_TYPE_BGCOLOR = 1 << 0;\r\n    const VAR_TYPE_TEXTCOLOR = 1 << 1;\r\n    const VAR_TYPE_BORDERCOLOR = 1 << 2;\r\n    const VAR_TYPE_BGIMG = 1 << 3;\r\n    class VariablesStore {\r\n        constructor() {\r\n            this.varTypes = new Map();\r\n            this.rulesQueue = new Set();\r\n            this.inlineStyleQueue = [];\r\n            this.definedVars = new Set();\r\n            this.varRefs = new Map();\r\n            this.unknownColorVars = new Set();\r\n            this.unknownBgVars = new Set();\r\n            this.undefinedVars = new Set();\r\n            this.initialVarTypes = new Map();\r\n            this.changedTypeVars = new Set();\r\n            this.typeChangeSubscriptions = new Map();\r\n            this.unstableVarValues = new Map();\r\n        }\r\n        clear() {\r\n            this.varTypes.clear();\r\n            this.rulesQueue.clear();\r\n            this.inlineStyleQueue.splice(0);\r\n            this.definedVars.clear();\r\n            this.varRefs.clear();\r\n            this.unknownColorVars.clear();\r\n            this.unknownBgVars.clear();\r\n            this.undefinedVars.clear();\r\n            this.initialVarTypes.clear();\r\n            this.changedTypeVars.clear();\r\n            this.typeChangeSubscriptions.clear();\r\n            this.unstableVarValues.clear();\r\n        }\r\n        isVarType(varName, typeNum) {\r\n            return (\r\n                this.varTypes.has(varName) &&\r\n                (this.varTypes.get(varName) & typeNum) > 0\r\n            );\r\n        }\r\n        addRulesForMatching(rules) {\r\n            this.rulesQueue.add(rules);\r\n        }\r\n        addInlineStyleForMatching(style) {\r\n            this.inlineStyleQueue.push(style);\r\n        }\r\n        matchVariablesAndDependents() {\r\n            if (\r\n                this.rulesQueue.size === 0 &&\r\n                this.inlineStyleQueue.length === 0\r\n            ) {\r\n                return;\r\n            }\r\n            this.changedTypeVars.clear();\r\n            this.initialVarTypes = new Map(this.varTypes);\r\n            this.collectRootVariables();\r\n            this.collectVariablesAndVarDep();\r\n            this.collectRootVarDependents();\r\n            this.varRefs.forEach((refs, v) => {\r\n                refs.forEach((r) => {\r\n                    if (this.varTypes.has(v)) {\r\n                        this.resolveVariableType(r, this.varTypes.get(v));\r\n                    }\r\n                });\r\n            });\r\n            this.unknownColorVars.forEach((v) => {\r\n                if (this.unknownBgVars.has(v)) {\r\n                    this.unknownColorVars.delete(v);\r\n                    this.unknownBgVars.delete(v);\r\n                    this.resolveVariableType(v, VAR_TYPE_BGCOLOR);\r\n                } else if (\r\n                    this.isVarType(\r\n                        v,\r\n                        VAR_TYPE_BGCOLOR |\r\n                            VAR_TYPE_TEXTCOLOR |\r\n                            VAR_TYPE_BORDERCOLOR\r\n                    )\r\n                ) {\r\n                    this.unknownColorVars.delete(v);\r\n                } else {\r\n                    this.undefinedVars.add(v);\r\n                }\r\n            });\r\n            this.unknownBgVars.forEach((v) => {\r\n                const hasColor =\r\n                    this.findVarRef(v, (ref) => {\r\n                        return (\r\n                            this.unknownColorVars.has(ref) ||\r\n                            this.isVarType(\r\n                                ref,\r\n                                VAR_TYPE_BGCOLOR |\r\n                                    VAR_TYPE_TEXTCOLOR |\r\n                                    VAR_TYPE_BORDERCOLOR\r\n                            )\r\n                        );\r\n                    }) != null;\r\n                if (hasColor) {\r\n                    this.iterateVarRefs(v, (ref) => {\r\n                        this.resolveVariableType(ref, VAR_TYPE_BGCOLOR);\r\n                    });\r\n                } else if (\r\n                    this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG)\r\n                ) {\r\n                    this.unknownBgVars.delete(v);\r\n                } else {\r\n                    this.undefinedVars.add(v);\r\n                }\r\n            });\r\n            this.changedTypeVars.forEach((varName) => {\r\n                if (this.typeChangeSubscriptions.has(varName)) {\r\n                    this.typeChangeSubscriptions\r\n                        .get(varName)\r\n                        .forEach((callback) => {\r\n                            callback();\r\n                        });\r\n                }\r\n            });\r\n            this.changedTypeVars.clear();\r\n        }\r\n        getModifierForVariable(options) {\r\n            return (theme) => {\r\n                const {\r\n                    varName,\r\n                    sourceValue,\r\n                    rule,\r\n                    ignoredImgSelectors,\r\n                    isCancelled\r\n                } = options;\r\n                const getDeclarations = () => {\r\n                    const declarations = [];\r\n                    const addModifiedValue = (\r\n                        typeNum,\r\n                        varNameWrapper,\r\n                        colorModifier\r\n                    ) => {\r\n                        if (!this.isVarType(varName, typeNum)) {\r\n                            return;\r\n                        }\r\n                        const property = varNameWrapper(varName);\r\n                        let modifiedValue;\r\n                        if (isVarDependant(sourceValue)) {\r\n                            if (isConstructedColorVar(sourceValue)) {\r\n                                let value = insertVarValues(\r\n                                    sourceValue,\r\n                                    this.unstableVarValues\r\n                                );\r\n                                if (!value) {\r\n                                    value =\r\n                                        typeNum === VAR_TYPE_BGCOLOR\r\n                                            ? \"#ffffff\"\r\n                                            : \"#000000\";\r\n                                }\r\n                                modifiedValue = colorModifier(value, theme);\r\n                            } else {\r\n                                modifiedValue = replaceCSSVariablesNames(\r\n                                    sourceValue,\r\n                                    (v) => varNameWrapper(v),\r\n                                    (fallback) => colorModifier(fallback, theme)\r\n                                );\r\n                            }\r\n                        } else {\r\n                            modifiedValue = colorModifier(sourceValue, theme);\r\n                        }\r\n                        declarations.push({\r\n                            property,\r\n                            value: modifiedValue\r\n                        });\r\n                    };\r\n                    addModifiedValue(\r\n                        VAR_TYPE_BGCOLOR,\r\n                        wrapBgColorVariableName,\r\n                        tryModifyBgColor\r\n                    );\r\n                    addModifiedValue(\r\n                        VAR_TYPE_TEXTCOLOR,\r\n                        wrapTextColorVariableName,\r\n                        tryModifyTextColor\r\n                    );\r\n                    addModifiedValue(\r\n                        VAR_TYPE_BORDERCOLOR,\r\n                        wrapBorderColorVariableName,\r\n                        tryModifyBorderColor\r\n                    );\r\n                    if (this.isVarType(varName, VAR_TYPE_BGIMG)) {\r\n                        const property = wrapBgImgVariableName(varName);\r\n                        let modifiedValue = sourceValue;\r\n                        if (isVarDependant(sourceValue)) {\r\n                            modifiedValue = replaceCSSVariablesNames(\r\n                                sourceValue,\r\n                                (v) => wrapBgColorVariableName(v),\r\n                                (fallback) => tryModifyBgColor(fallback, theme)\r\n                            );\r\n                        }\r\n                        const bgModifier = getBgImageModifier(\r\n                            modifiedValue,\r\n                            rule,\r\n                            ignoredImgSelectors,\r\n                            isCancelled\r\n                        );\r\n                        modifiedValue =\r\n                            typeof bgModifier === \"function\"\r\n                                ? bgModifier(theme)\r\n                                : bgModifier;\r\n                        declarations.push({\r\n                            property,\r\n                            value: modifiedValue\r\n                        });\r\n                    }\r\n                    return declarations;\r\n                };\r\n                const callbacks = new Set();\r\n                const addListener = (onTypeChange) => {\r\n                    const callback = () => {\r\n                        const decs = getDeclarations();\r\n                        onTypeChange(decs);\r\n                    };\r\n                    callbacks.add(callback);\r\n                    this.subscribeForVarTypeChange(varName, callback);\r\n                };\r\n                const removeListeners = () => {\r\n                    callbacks.forEach((callback) => {\r\n                        this.unsubscribeFromVariableTypeChanges(\r\n                            varName,\r\n                            callback\r\n                        );\r\n                    });\r\n                };\r\n                return {\r\n                    declarations: getDeclarations(),\r\n                    onTypeChange: {addListener, removeListeners}\r\n                };\r\n            };\r\n        }\r\n        getModifierForVarDependant(property, sourceValue) {\r\n            const isConstructedColor = sourceValue.match(/^\\s*(rgb|hsl)a?\\(/);\r\n            const isSimpleConstructedColor = sourceValue.match(\r\n                /^rgba?\\(var\\(--[\\-_A-Za-z0-9]+\\)(\\s*,?\\/?\\s*0?\\.\\d+)?\\)$/\r\n            );\r\n            if (isConstructedColor && !isSimpleConstructedColor) {\r\n                const isBg = property.startsWith(\"background\");\r\n                const isText = isTextColorProperty(property);\r\n                return (theme) => {\r\n                    let value = insertVarValues(\r\n                        sourceValue,\r\n                        this.unstableVarValues\r\n                    );\r\n                    if (!value) {\r\n                        value = isBg ? \"#ffffff\" : \"#000000\";\r\n                    }\r\n                    const modifier = isBg\r\n                        ? tryModifyBgColor\r\n                        : isText\r\n                          ? tryModifyTextColor\r\n                          : tryModifyBorderColor;\r\n                    return modifier(value, theme);\r\n                };\r\n            }\r\n            if (\r\n                property === \"background-color\" ||\r\n                (isSimpleConstructedColor && property === \"background\")\r\n            ) {\r\n                return (theme) => {\r\n                    const defaultFallback = tryModifyBgColor(\r\n                        isConstructedColor ? \"255, 255, 255\" : \"#ffffff\",\r\n                        theme\r\n                    );\r\n                    return replaceCSSVariablesNames(\r\n                        sourceValue,\r\n                        (v) => wrapBgColorVariableName(v),\r\n                        (fallback) => tryModifyBgColor(fallback, theme),\r\n                        defaultFallback\r\n                    );\r\n                };\r\n            }\r\n            if (isTextColorProperty(property)) {\r\n                return (theme) => {\r\n                    const defaultFallback = tryModifyTextColor(\r\n                        isConstructedColor ? \"0, 0, 0\" : \"#000000\",\r\n                        theme\r\n                    );\r\n                    return replaceCSSVariablesNames(\r\n                        sourceValue,\r\n                        (v) => wrapTextColorVariableName(v),\r\n                        (fallback) => tryModifyTextColor(fallback, theme),\r\n                        defaultFallback\r\n                    );\r\n                };\r\n            }\r\n            if (\r\n                property === \"background\" ||\r\n                property === \"background-image\" ||\r\n                property === \"box-shadow\"\r\n            ) {\r\n                return (theme) => {\r\n                    const unknownVars = new Set();\r\n                    const modify = () => {\r\n                        const variableReplaced = replaceCSSVariablesNames(\r\n                            sourceValue,\r\n                            (v) => {\r\n                                if (this.isVarType(v, VAR_TYPE_BGCOLOR)) {\r\n                                    return wrapBgColorVariableName(v);\r\n                                }\r\n                                if (this.isVarType(v, VAR_TYPE_BGIMG)) {\r\n                                    return wrapBgImgVariableName(v);\r\n                                }\r\n                                unknownVars.add(v);\r\n                                return v;\r\n                            },\r\n                            (fallback) => tryModifyBgColor(fallback, theme)\r\n                        );\r\n                        if (property === \"box-shadow\") {\r\n                            const shadowModifier =\r\n                                getShadowModifierWithInfo(variableReplaced);\r\n                            const modifiedShadow = shadowModifier(theme);\r\n                            if (\r\n                                modifiedShadow.unparseableMatchesLength !==\r\n                                modifiedShadow.matchesLength\r\n                            ) {\r\n                                return modifiedShadow.result;\r\n                            }\r\n                        }\r\n                        return variableReplaced;\r\n                    };\r\n                    const modified = modify();\r\n                    if (unknownVars.size > 0) {\r\n                        const isFallbackResolved = modified.match(\r\n                            /^var\\(.*?, (var\\(--darkreader-bg--.*\\))|(#[0-9A-Fa-f]+)|([a-z]+)|(rgba?\\(.+\\))|(hsla?\\(.+\\))\\)$/\r\n                        );\r\n                        if (isFallbackResolved) {\r\n                            return modified;\r\n                        }\r\n                        return new Promise((resolve) => {\r\n                            for (const unknownVar of unknownVars.values()) {\r\n                                const callback = () => {\r\n                                    this.unsubscribeFromVariableTypeChanges(\r\n                                        unknownVar,\r\n                                        callback\r\n                                    );\r\n                                    const newValue = modify();\r\n                                    resolve(newValue);\r\n                                };\r\n                                this.subscribeForVarTypeChange(\r\n                                    unknownVar,\r\n                                    callback\r\n                                );\r\n                            }\r\n                        });\r\n                    }\r\n                    return modified;\r\n                };\r\n            }\r\n            if (\r\n                property.startsWith(\"border\") ||\r\n                property.startsWith(\"outline\")\r\n            ) {\r\n                return (theme) => {\r\n                    return replaceCSSVariablesNames(\r\n                        sourceValue,\r\n                        (v) => wrapBorderColorVariableName(v),\r\n                        (fallback) => tryModifyBorderColor(fallback, theme)\r\n                    );\r\n                };\r\n            }\r\n            return null;\r\n        }\r\n        subscribeForVarTypeChange(varName, callback) {\r\n            if (!this.typeChangeSubscriptions.has(varName)) {\r\n                this.typeChangeSubscriptions.set(varName, new Set());\r\n            }\r\n            const rootStore = this.typeChangeSubscriptions.get(varName);\r\n            if (!rootStore.has(callback)) {\r\n                rootStore.add(callback);\r\n            }\r\n        }\r\n        unsubscribeFromVariableTypeChanges(varName, callback) {\r\n            if (this.typeChangeSubscriptions.has(varName)) {\r\n                this.typeChangeSubscriptions.get(varName).delete(callback);\r\n            }\r\n        }\r\n        collectVariablesAndVarDep() {\r\n            this.rulesQueue.forEach((rules) => {\r\n                iterateCSSRules(rules, (rule) => {\r\n                    if (rule.style) {\r\n                        this.collectVarsFromCSSDeclarations(rule.style);\r\n                    }\r\n                });\r\n            });\r\n            this.inlineStyleQueue.forEach((style) => {\r\n                this.collectVarsFromCSSDeclarations(style);\r\n            });\r\n            this.rulesQueue.clear();\r\n            this.inlineStyleQueue.splice(0);\r\n        }\r\n        collectVarsFromCSSDeclarations(style) {\r\n            iterateCSSDeclarations(style, (property, value) => {\r\n                if (isVariable(property)) {\r\n                    this.inspectVariable(property, value);\r\n                }\r\n                if (isVarDependant(value)) {\r\n                    this.inspectVarDependant(property, value);\r\n                }\r\n            });\r\n        }\r\n        shouldProcessRootVariables() {\r\n            return (\r\n                this.rulesQueue.size > 0 &&\r\n                document.documentElement.getAttribute(\"style\")?.includes(\"--\")\r\n            );\r\n        }\r\n        collectRootVariables() {\r\n            if (!this.shouldProcessRootVariables()) {\r\n                return;\r\n            }\r\n            iterateCSSDeclarations(\r\n                document.documentElement.style,\r\n                (property, value) => {\r\n                    if (isVariable(property)) {\r\n                        this.inspectVariable(property, value);\r\n                    }\r\n                }\r\n            );\r\n        }\r\n        inspectVariable(varName, value) {\r\n            this.unstableVarValues.set(varName, value);\r\n            if (isVarDependant(value) && isConstructedColorVar(value)) {\r\n                this.unknownColorVars.add(varName);\r\n                this.definedVars.add(varName);\r\n            }\r\n            if (this.definedVars.has(varName)) {\r\n                return;\r\n            }\r\n            this.definedVars.add(varName);\r\n            const isColor = Boolean(\r\n                value.match(rawRGBSpaceRegex) ||\r\n                    value.match(rawRGBCommaRegex) ||\r\n                    parseColorWithCache(value)\r\n            );\r\n            if (isColor) {\r\n                this.unknownColorVars.add(varName);\r\n            } else if (\r\n                value.includes(\"url(\") ||\r\n                value.includes(\"linear-gradient(\") ||\r\n                value.includes(\"radial-gradient(\")\r\n            ) {\r\n                this.resolveVariableType(varName, VAR_TYPE_BGIMG);\r\n            }\r\n        }\r\n        resolveVariableType(varName, typeNum) {\r\n            const initialType = this.initialVarTypes.get(varName) || 0;\r\n            const currentType = this.varTypes.get(varName) || 0;\r\n            const newType = currentType | typeNum;\r\n            this.varTypes.set(varName, newType);\r\n            if (newType !== initialType || this.undefinedVars.has(varName)) {\r\n                this.changedTypeVars.add(varName);\r\n                this.undefinedVars.delete(varName);\r\n            }\r\n            this.unknownColorVars.delete(varName);\r\n            this.unknownBgVars.delete(varName);\r\n        }\r\n        collectRootVarDependents() {\r\n            if (!this.shouldProcessRootVariables()) {\r\n                return;\r\n            }\r\n            iterateCSSDeclarations(\r\n                document.documentElement.style,\r\n                (property, value) => {\r\n                    if (isVarDependant(value)) {\r\n                        this.inspectVarDependant(property, value);\r\n                    }\r\n                }\r\n            );\r\n        }\r\n        inspectVarDependant(property, value) {\r\n            if (isVariable(property)) {\r\n                this.iterateVarDeps(value, (ref) => {\r\n                    if (!this.varRefs.has(property)) {\r\n                        this.varRefs.set(property, new Set());\r\n                    }\r\n                    this.varRefs.get(property).add(ref);\r\n                });\r\n            } else if (\r\n                property === \"background-color\" ||\r\n                property === \"box-shadow\"\r\n            ) {\r\n                this.iterateVarDeps(value, (v) =>\r\n                    this.resolveVariableType(v, VAR_TYPE_BGCOLOR)\r\n                );\r\n            } else if (isTextColorProperty(property)) {\r\n                this.iterateVarDeps(value, (v) =>\r\n                    this.resolveVariableType(v, VAR_TYPE_TEXTCOLOR)\r\n                );\r\n            } else if (\r\n                property.startsWith(\"border\") ||\r\n                property.startsWith(\"outline\")\r\n            ) {\r\n                this.iterateVarDeps(value, (v) =>\r\n                    this.resolveVariableType(v, VAR_TYPE_BORDERCOLOR)\r\n                );\r\n            } else if (\r\n                property === \"background\" ||\r\n                property === \"background-image\"\r\n            ) {\r\n                this.iterateVarDeps(value, (v) => {\r\n                    if (this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG)) {\r\n                        return;\r\n                    }\r\n                    const isBgColor =\r\n                        this.findVarRef(v, (ref) => {\r\n                            return (\r\n                                this.unknownColorVars.has(ref) ||\r\n                                this.isVarType(\r\n                                    ref,\r\n                                    VAR_TYPE_BGCOLOR |\r\n                                        VAR_TYPE_TEXTCOLOR |\r\n                                        VAR_TYPE_BORDERCOLOR\r\n                                )\r\n                            );\r\n                        }) != null;\r\n                    this.iterateVarRefs(v, (ref) => {\r\n                        if (isBgColor) {\r\n                            this.resolveVariableType(ref, VAR_TYPE_BGCOLOR);\r\n                        } else {\r\n                            this.unknownBgVars.add(ref);\r\n                        }\r\n                    });\r\n                });\r\n            }\r\n        }\r\n        iterateVarDeps(value, iterator) {\r\n            const varDeps = new Set();\r\n            iterateVarDependencies(value, (v) => varDeps.add(v));\r\n            varDeps.forEach((v) => iterator(v));\r\n        }\r\n        findVarRef(varName, iterator, stack = new Set()) {\r\n            if (stack.has(varName)) {\r\n                return null;\r\n            }\r\n            stack.add(varName);\r\n            const result = iterator(varName);\r\n            if (result) {\r\n                return varName;\r\n            }\r\n            const refs = this.varRefs.get(varName);\r\n            if (!refs || refs.size === 0) {\r\n                return null;\r\n            }\r\n            for (const ref of refs) {\r\n                const found = this.findVarRef(ref, iterator, stack);\r\n                if (found) {\r\n                    return found;\r\n                }\r\n            }\r\n            return null;\r\n        }\r\n        iterateVarRefs(varName, iterator) {\r\n            this.findVarRef(varName, (ref) => {\r\n                iterator(ref);\r\n                return false;\r\n            });\r\n        }\r\n        setOnRootVariableChange(callback) {\r\n            this.onRootVariableDefined = callback;\r\n        }\r\n        putRootVars(styleElement, theme) {\r\n            const sheet = styleElement.sheet;\r\n            if (sheet.cssRules.length > 0) {\r\n                sheet.deleteRule(0);\r\n            }\r\n            const declarations = new Map();\r\n            iterateCSSDeclarations(\r\n                document.documentElement.style,\r\n                (property, value) => {\r\n                    if (isVariable(property)) {\r\n                        if (this.isVarType(property, VAR_TYPE_BGCOLOR)) {\r\n                            declarations.set(\r\n                                wrapBgColorVariableName(property),\r\n                                tryModifyBgColor(value, theme)\r\n                            );\r\n                        }\r\n                        if (this.isVarType(property, VAR_TYPE_TEXTCOLOR)) {\r\n                            declarations.set(\r\n                                wrapTextColorVariableName(property),\r\n                                tryModifyTextColor(value, theme)\r\n                            );\r\n                        }\r\n                        if (this.isVarType(property, VAR_TYPE_BORDERCOLOR)) {\r\n                            declarations.set(\r\n                                wrapBorderColorVariableName(property),\r\n                                tryModifyBorderColor(value, theme)\r\n                            );\r\n                        }\r\n                        this.subscribeForVarTypeChange(\r\n                            property,\r\n                            this.onRootVariableDefined\r\n                        );\r\n                    }\r\n                }\r\n            );\r\n            const cssLines = [];\r\n            cssLines.push(\":root {\");\r\n            for (const [property, value] of declarations) {\r\n                cssLines.push(`    ${property}: ${value};`);\r\n            }\r\n            cssLines.push(\"}\");\r\n            const cssText = cssLines.join(\"\\n\");\r\n            sheet.insertRule(cssText);\r\n        }\r\n    }\r\n    const variablesStore = new VariablesStore();\r\n    function getVariableRange(input, searchStart = 0) {\r\n        const start = input.indexOf(\"var(\", searchStart);\r\n        if (start >= 0) {\r\n            const range = getParenthesesRange(input, start + 3);\r\n            if (range) {\r\n                return {start, end: range.end};\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n    function getVariablesMatches(input) {\r\n        const ranges = [];\r\n        let i = 0;\r\n        let range;\r\n        while ((range = getVariableRange(input, i))) {\r\n            const {start, end} = range;\r\n            ranges.push({start, end, value: input.substring(start, end)});\r\n            i = range.end + 1;\r\n        }\r\n        return ranges;\r\n    }\r\n    function replaceVariablesMatches(input, replacer) {\r\n        const matches = getVariablesMatches(input);\r\n        const matchesCount = matches.length;\r\n        if (matchesCount === 0) {\r\n            return input;\r\n        }\r\n        const inputLength = input.length;\r\n        const replacements = matches.map((m) =>\r\n            replacer(m.value, matches.length)\r\n        );\r\n        const parts = [];\r\n        parts.push(input.substring(0, matches[0].start));\r\n        for (let i = 0; i < matchesCount; i++) {\r\n            parts.push(replacements[i]);\r\n            const start = matches[i].end;\r\n            const end =\r\n                i < matchesCount - 1 ? matches[i + 1].start : inputLength;\r\n            parts.push(input.substring(start, end));\r\n        }\r\n        return parts.join(\"\");\r\n    }\r\n    function getVariableNameAndFallback(match) {\r\n        const commaIndex = match.indexOf(\",\");\r\n        let name;\r\n        let fallback;\r\n        if (commaIndex >= 0) {\r\n            name = match.substring(4, commaIndex).trim();\r\n            fallback = match.substring(commaIndex + 1, match.length - 1).trim();\r\n        } else {\r\n            name = match.substring(4, match.length - 1).trim();\r\n            fallback = \"\";\r\n        }\r\n        return {name, fallback};\r\n    }\r\n    function replaceCSSVariablesNames(\r\n        value,\r\n        nameReplacer,\r\n        fallbackReplacer,\r\n        finalFallback\r\n    ) {\r\n        const matchReplacer = (match) => {\r\n            const {name, fallback} = getVariableNameAndFallback(match);\r\n            const newName = nameReplacer(name);\r\n            if (!fallback) {\r\n                if (finalFallback) {\r\n                    return `var(${newName}, ${finalFallback})`;\r\n                }\r\n                return `var(${newName})`;\r\n            }\r\n            let newFallback;\r\n            if (isVarDependant(fallback)) {\r\n                newFallback = replaceCSSVariablesNames(\r\n                    fallback,\r\n                    nameReplacer,\r\n                    fallbackReplacer\r\n                );\r\n            } else if (fallbackReplacer) {\r\n                newFallback = fallbackReplacer(fallback);\r\n            } else {\r\n                newFallback = fallback;\r\n            }\r\n            return `var(${newName}, ${newFallback})`;\r\n        };\r\n        return replaceVariablesMatches(value, matchReplacer);\r\n    }\r\n    function iterateVarDependencies(value, iterator) {\r\n        replaceCSSVariablesNames(value, (varName) => {\r\n            iterator(varName);\r\n            return varName;\r\n        });\r\n    }\r\n    function wrapBgColorVariableName(name) {\r\n        return `--darkreader-bg${name}`;\r\n    }\r\n    function wrapTextColorVariableName(name) {\r\n        return `--darkreader-text${name}`;\r\n    }\r\n    function wrapBorderColorVariableName(name) {\r\n        return `--darkreader-border${name}`;\r\n    }\r\n    function wrapBgImgVariableName(name) {\r\n        return `--darkreader-bgimg${name}`;\r\n    }\r\n    function isVariable(property) {\r\n        return property.startsWith(\"--\");\r\n    }\r\n    function isVarDependant(value) {\r\n        return value.includes(\"var(\");\r\n    }\r\n    function isConstructedColorVar(value) {\r\n        return (\r\n            value.match(/^\\s*(rgb|hsl)a?\\(/) ||\r\n            value.match(/^(((\\d{1,3})|(var\\([\\-_A-Za-z0-9]+\\))),?\\s*?){3}$/)\r\n        );\r\n    }\r\n    function isTextColorProperty(property) {\r\n        return (\r\n            property === \"color\" ||\r\n            property === \"caret-color\" ||\r\n            property === \"-webkit-text-fill-color\"\r\n        );\r\n    }\r\n    const rawRGBSpaceRegex = /^(\\d{1,3})\\s+(\\d{1,3})\\s+(\\d{1,3})$/;\r\n    const rawRGBCommaRegex = /^(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})$/;\r\n    function parseRawColorValue(input) {\r\n        const match =\r\n            input.match(rawRGBSpaceRegex) ?? input.match(rawRGBCommaRegex);\r\n        if (match) {\r\n            const color = `rgb(${match[1]}, ${match[2]}, ${match[3]})`;\r\n            return {isRaw: true, color};\r\n        }\r\n        return {isRaw: false, color: input};\r\n    }\r\n    function handleRawColorValue(input, theme, modifyFunction) {\r\n        const {isRaw, color} = parseRawColorValue(input);\r\n        const rgb = parseColorWithCache(color);\r\n        if (rgb) {\r\n            const outputColor = modifyFunction(rgb, theme);\r\n            if (isRaw) {\r\n                const outputInRGB = parseColorWithCache(outputColor);\r\n                return outputInRGB\r\n                    ? `${outputInRGB.r}, ${outputInRGB.g}, ${outputInRGB.b}`\r\n                    : outputColor;\r\n            }\r\n            return outputColor;\r\n        }\r\n        return color;\r\n    }\r\n    function tryModifyBgColor(color, theme) {\r\n        return handleRawColorValue(color, theme, modifyBackgroundColor);\r\n    }\r\n    function tryModifyTextColor(color, theme) {\r\n        return handleRawColorValue(color, theme, modifyForegroundColor);\r\n    }\r\n    function tryModifyBorderColor(color, theme) {\r\n        return handleRawColorValue(color, theme, modifyBorderColor);\r\n    }\r\n    function insertVarValues(source, varValues, fullStack = new Set()) {\r\n        let containsUnresolvedVar = false;\r\n        const matchReplacer = (match, count) => {\r\n            const {name, fallback} = getVariableNameAndFallback(match);\r\n            const stack = count > 1 ? new Set(fullStack) : fullStack;\r\n            if (stack.has(name)) {\r\n                containsUnresolvedVar = true;\r\n                return null;\r\n            }\r\n            stack.add(name);\r\n            const varValue = varValues.get(name) || fallback;\r\n            let inserted = null;\r\n            if (varValue) {\r\n                if (isVarDependant(varValue)) {\r\n                    inserted = insertVarValues(varValue, varValues, stack);\r\n                } else {\r\n                    inserted = varValue;\r\n                }\r\n            }\r\n            if (!inserted) {\r\n                containsUnresolvedVar = true;\r\n                return null;\r\n            }\r\n            return inserted;\r\n        };\r\n        const replaced = replaceVariablesMatches(source, matchReplacer);\r\n        if (containsUnresolvedVar) {\r\n            return null;\r\n        }\r\n        return replaced;\r\n    }\r\n\r\n    const overrides$1 = {\r\n        \"background-color\": {\r\n            customProp: \"--darkreader-inline-bgcolor\",\r\n            cssProp: \"background-color\",\r\n            dataAttr: \"data-darkreader-inline-bgcolor\"\r\n        },\r\n        \"background-image\": {\r\n            customProp: \"--darkreader-inline-bgimage\",\r\n            cssProp: \"background-image\",\r\n            dataAttr: \"data-darkreader-inline-bgimage\"\r\n        },\r\n        \"border-color\": {\r\n            customProp: \"--darkreader-inline-border\",\r\n            cssProp: \"border-color\",\r\n            dataAttr: \"data-darkreader-inline-border\"\r\n        },\r\n        \"border-bottom-color\": {\r\n            customProp: \"--darkreader-inline-border-bottom\",\r\n            cssProp: \"border-bottom-color\",\r\n            dataAttr: \"data-darkreader-inline-border-bottom\"\r\n        },\r\n        \"border-left-color\": {\r\n            customProp: \"--darkreader-inline-border-left\",\r\n            cssProp: \"border-left-color\",\r\n            dataAttr: \"data-darkreader-inline-border-left\"\r\n        },\r\n        \"border-right-color\": {\r\n            customProp: \"--darkreader-inline-border-right\",\r\n            cssProp: \"border-right-color\",\r\n            dataAttr: \"data-darkreader-inline-border-right\"\r\n        },\r\n        \"border-top-color\": {\r\n            customProp: \"--darkreader-inline-border-top\",\r\n            cssProp: \"border-top-color\",\r\n            dataAttr: \"data-darkreader-inline-border-top\"\r\n        },\r\n        \"box-shadow\": {\r\n            customProp: \"--darkreader-inline-boxshadow\",\r\n            cssProp: \"box-shadow\",\r\n            dataAttr: \"data-darkreader-inline-boxshadow\"\r\n        },\r\n        \"color\": {\r\n            customProp: \"--darkreader-inline-color\",\r\n            cssProp: \"color\",\r\n            dataAttr: \"data-darkreader-inline-color\"\r\n        },\r\n        \"fill\": {\r\n            customProp: \"--darkreader-inline-fill\",\r\n            cssProp: \"fill\",\r\n            dataAttr: \"data-darkreader-inline-fill\"\r\n        },\r\n        \"stroke\": {\r\n            customProp: \"--darkreader-inline-stroke\",\r\n            cssProp: \"stroke\",\r\n            dataAttr: \"data-darkreader-inline-stroke\"\r\n        },\r\n        \"outline-color\": {\r\n            customProp: \"--darkreader-inline-outline\",\r\n            cssProp: \"outline-color\",\r\n            dataAttr: \"data-darkreader-inline-outline\"\r\n        },\r\n        \"stop-color\": {\r\n            customProp: \"--darkreader-inline-stopcolor\",\r\n            cssProp: \"stop-color\",\r\n            dataAttr: \"data-darkreader-inline-stopcolor\"\r\n        }\r\n    };\r\n    const shorthandOverrides = {\r\n        background: {\r\n            customProp: \"--darkreader-inline-bg\",\r\n            cssProp: \"background\",\r\n            dataAttr: \"data-darkreader-inline-bg\"\r\n        }\r\n    };\r\n    const overridesList = Object.values(overrides$1);\r\n    const normalizedPropList = {};\r\n    overridesList.forEach(\r\n        ({cssProp, customProp}) => (normalizedPropList[customProp] = cssProp)\r\n    );\r\n    const INLINE_STYLE_ATTRS = [\r\n        \"style\",\r\n        \"fill\",\r\n        \"stop-color\",\r\n        \"stroke\",\r\n        \"bgcolor\",\r\n        \"color\",\r\n        \"background\"\r\n    ];\r\n    const INLINE_STYLE_SELECTOR = INLINE_STYLE_ATTRS.map(\r\n        (attr) => `[${attr}]`\r\n    ).join(\", \");\r\n    function getInlineOverrideStyle() {\r\n        const allOverrides = overridesList.concat(\r\n            Object.values(shorthandOverrides)\r\n        );\r\n        return allOverrides\r\n            .map(({dataAttr, customProp, cssProp}) => {\r\n                return [\r\n                    `[${dataAttr}] {`,\r\n                    `  ${cssProp}: var(${customProp}) !important;`,\r\n                    \"}\"\r\n                ].join(\"\\n\");\r\n            })\r\n            .concat([\r\n                \"[data-darkreader-inline-invert] {\",\r\n                \"    filter: invert(100%) hue-rotate(180deg);\",\r\n                \"}\"\r\n            ])\r\n            .join(\"\\n\");\r\n    }\r\n    function getInlineStyleElements(root) {\r\n        const results = [];\r\n        if (root instanceof Element && root.matches(INLINE_STYLE_SELECTOR)) {\r\n            results.push(root);\r\n        }\r\n        if (\r\n            root instanceof Element ||\r\n            (isShadowDomSupported && root instanceof ShadowRoot) ||\r\n            root instanceof Document\r\n        ) {\r\n            push(results, root.querySelectorAll(INLINE_STYLE_SELECTOR));\r\n        }\r\n        return results;\r\n    }\r\n    const treeObservers = new Map();\r\n    const attrObservers = new Map();\r\n    function watchForInlineStyles(elementStyleDidChange, shadowRootDiscovered) {\r\n        deepWatchForInlineStyles(\r\n            document,\r\n            elementStyleDidChange,\r\n            shadowRootDiscovered\r\n        );\r\n        iterateShadowHosts(document.documentElement, (host) => {\r\n            deepWatchForInlineStyles(\r\n                host.shadowRoot,\r\n                elementStyleDidChange,\r\n                shadowRootDiscovered\r\n            );\r\n        });\r\n    }\r\n    function deepWatchForInlineStyles(\r\n        root,\r\n        elementStyleDidChange,\r\n        shadowRootDiscovered\r\n    ) {\r\n        if (treeObservers.has(root)) {\r\n            treeObservers.get(root).disconnect();\r\n            attrObservers.get(root).disconnect();\r\n        }\r\n        const discoveredNodes = new WeakSet();\r\n        function discoverNodes(node) {\r\n            getInlineStyleElements(node).forEach((el) => {\r\n                if (discoveredNodes.has(el)) {\r\n                    return;\r\n                }\r\n                discoveredNodes.add(el);\r\n                elementStyleDidChange(el);\r\n            });\r\n            iterateShadowHosts(node, (n) => {\r\n                if (discoveredNodes.has(node)) {\r\n                    return;\r\n                }\r\n                discoveredNodes.add(node);\r\n                shadowRootDiscovered(n.shadowRoot);\r\n                deepWatchForInlineStyles(\r\n                    n.shadowRoot,\r\n                    elementStyleDidChange,\r\n                    shadowRootDiscovered\r\n                );\r\n            });\r\n            variablesStore.matchVariablesAndDependents();\r\n        }\r\n        const treeObserver = createOptimizedTreeObserver(root, {\r\n            onMinorMutations: (_root, {additions}) => {\r\n                additions.forEach((added) => discoverNodes(added));\r\n            },\r\n            onHugeMutations: () => {\r\n                discoverNodes(root);\r\n            }\r\n        });\r\n        treeObservers.set(root, treeObserver);\r\n        let attemptCount = 0;\r\n        let start = null;\r\n        const ATTEMPTS_INTERVAL = getDuration({seconds: 10});\r\n        const RETRY_TIMEOUT = getDuration({seconds: 2});\r\n        const MAX_ATTEMPTS_COUNT = 50;\r\n        let cache = [];\r\n        let timeoutId = null;\r\n        const handleAttributeMutations = throttle((mutations) => {\r\n            const handledTargets = new Set();\r\n            mutations.forEach((m) => {\r\n                const target = m.target;\r\n                if (handledTargets.has(target)) {\r\n                    return;\r\n                }\r\n                if (INLINE_STYLE_ATTRS.includes(m.attributeName)) {\r\n                    handledTargets.add(target);\r\n                    elementStyleDidChange(target);\r\n                }\r\n            });\r\n            variablesStore.matchVariablesAndDependents();\r\n        });\r\n        const attrObserver = new MutationObserver((mutations) => {\r\n            if (timeoutId) {\r\n                cache.push(...mutations);\r\n                return;\r\n            }\r\n            attemptCount++;\r\n            const now = Date.now();\r\n            if (start == null) {\r\n                start = now;\r\n            } else if (attemptCount >= MAX_ATTEMPTS_COUNT) {\r\n                if (now - start < ATTEMPTS_INTERVAL) {\r\n                    timeoutId = setTimeout(() => {\r\n                        start = null;\r\n                        attemptCount = 0;\r\n                        timeoutId = null;\r\n                        const attributeCache = cache;\r\n                        cache = [];\r\n                        handleAttributeMutations(attributeCache);\r\n                    }, RETRY_TIMEOUT);\r\n                    cache.push(...mutations);\r\n                    return;\r\n                }\r\n                start = now;\r\n                attemptCount = 1;\r\n            }\r\n            handleAttributeMutations(mutations);\r\n        });\r\n        attrObserver.observe(root, {\r\n            attributes: true,\r\n            attributeFilter: INLINE_STYLE_ATTRS.concat(\r\n                overridesList.map(({dataAttr}) => dataAttr)\r\n            ),\r\n            subtree: true\r\n        });\r\n        attrObservers.set(root, attrObserver);\r\n    }\r\n    function stopWatchingForInlineStyles() {\r\n        treeObservers.forEach((o) => o.disconnect());\r\n        attrObservers.forEach((o) => o.disconnect());\r\n        treeObservers.clear();\r\n        attrObservers.clear();\r\n    }\r\n    const inlineStyleCache = new WeakMap();\r\n    const svgInversionCache = new WeakSet();\r\n    const svgAnalysisConditionCache = new WeakMap();\r\n    const themeProps = [\"brightness\", \"contrast\", \"grayscale\", \"sepia\", \"mode\"];\r\n    function shouldAnalyzeSVGAsImage(svg) {\r\n        if (svgAnalysisConditionCache.has(svg)) {\r\n            return svgAnalysisConditionCache.get(svg);\r\n        }\r\n        const shouldAnalyze = Boolean(\r\n            svg &&\r\n                (svg.getAttribute(\"class\")?.includes(\"logo\") ||\r\n                    svg.parentElement?.getAttribute(\"class\")?.includes(\"logo\"))\r\n        );\r\n        svgAnalysisConditionCache.set(svg, shouldAnalyze);\r\n        return shouldAnalyze;\r\n    }\r\n    function getInlineStyleCacheKey(el, theme) {\r\n        return INLINE_STYLE_ATTRS.map(\r\n            (attr) => `${attr}=\"${el.getAttribute(attr)}\"`\r\n        )\r\n            .concat(themeProps.map((prop) => `${prop}=\"${theme[prop]}\"`))\r\n            .join(\" \");\r\n    }\r\n    function shouldIgnoreInlineStyle(element, selectors) {\r\n        for (let i = 0, len = selectors.length; i < len; i++) {\r\n            const ingnoredSelector = selectors[i];\r\n            if (element.matches(ingnoredSelector)) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function overrideInlineStyle(\r\n        element,\r\n        theme,\r\n        ignoreInlineSelectors,\r\n        ignoreImageSelectors\r\n    ) {\r\n        const cacheKey = getInlineStyleCacheKey(element, theme);\r\n        if (cacheKey === inlineStyleCache.get(element)) {\r\n            return;\r\n        }\r\n        const unsetProps = new Set(Object.keys(overrides$1));\r\n        function setCustomProp(targetCSSProp, modifierCSSProp, cssVal) {\r\n            const mod = getModifiableCSSDeclaration(\r\n                modifierCSSProp,\r\n                cssVal,\r\n                {style: element.style},\r\n                variablesStore,\r\n                ignoreImageSelectors,\r\n                null\r\n            );\r\n            if (!mod) {\r\n                return;\r\n            }\r\n            function setStaticValue(value) {\r\n                const {customProp, dataAttr} =\r\n                    overrides$1[targetCSSProp] ??\r\n                    shorthandOverrides[targetCSSProp];\r\n                element.style.setProperty(customProp, value);\r\n                if (!element.hasAttribute(dataAttr)) {\r\n                    element.setAttribute(dataAttr, \"\");\r\n                }\r\n                unsetProps.delete(targetCSSProp);\r\n            }\r\n            function setVarDeclaration(mod) {\r\n                let prevDeclarations = [];\r\n                function setProps(declarations) {\r\n                    prevDeclarations.forEach(({property}) => {\r\n                        element.style.removeProperty(property);\r\n                    });\r\n                    declarations.forEach(({property, value}) => {\r\n                        if (!(value instanceof Promise)) {\r\n                            element.style.setProperty(property, value);\r\n                        }\r\n                    });\r\n                    prevDeclarations = declarations;\r\n                }\r\n                setProps(mod.declarations);\r\n                mod.onTypeChange.addListener(setProps);\r\n            }\r\n            function setAsyncValue(promise, sourceValue) {\r\n                promise.then((value) => {\r\n                    if (\r\n                        value &&\r\n                        targetCSSProp === \"background\" &&\r\n                        value.startsWith(\"var(--darkreader-bg--\")\r\n                    ) {\r\n                        setStaticValue(value);\r\n                    }\r\n                    if (value && targetCSSProp === \"background-image\") {\r\n                        if (\r\n                            (element === document.documentElement ||\r\n                                element === document.body) &&\r\n                            value === sourceValue\r\n                        ) {\r\n                            value = \"none\";\r\n                        }\r\n                        setStaticValue(value);\r\n                    }\r\n                    inlineStyleCache.set(\r\n                        element,\r\n                        getInlineStyleCacheKey(element, theme)\r\n                    );\r\n                });\r\n            }\r\n            const value =\r\n                typeof mod.value === \"function\" ? mod.value(theme) : mod.value;\r\n            if (typeof value === \"string\") {\r\n                setStaticValue(value);\r\n            } else if (value instanceof Promise) {\r\n                setAsyncValue(value, cssVal);\r\n            } else if (typeof value === \"object\") {\r\n                setVarDeclaration(value);\r\n            }\r\n        }\r\n        if (ignoreInlineSelectors.length > 0) {\r\n            if (shouldIgnoreInlineStyle(element, ignoreInlineSelectors)) {\r\n                unsetProps.forEach((cssProp) => {\r\n                    element.removeAttribute(overrides$1[cssProp].dataAttr);\r\n                });\r\n                return;\r\n            }\r\n        }\r\n        const isSVGElement = element instanceof SVGElement;\r\n        const svg = isSVGElement\r\n            ? (element.ownerSVGElement ??\r\n              (element instanceof SVGSVGElement ? element : null))\r\n            : null;\r\n        if (isSVGElement && theme.mode === 1 && svg) {\r\n            if (svgInversionCache.has(svg)) {\r\n                return;\r\n            }\r\n            if (shouldAnalyzeSVGAsImage(svg)) {\r\n                svgInversionCache.add(svg);\r\n                const analyzeSVGAsImage = () => {\r\n                    let svgString = svg.outerHTML;\r\n                    svgString = svgString.replaceAll(\r\n                        '<style class=\"darkreader darkreader--sync\" media=\"screen\"></style>',\r\n                        \"\"\r\n                    );\r\n                    const dataURL = `data:image/svg+xml;base64,${btoa(svgString)}`;\r\n                    getImageDetails(dataURL).then((details) => {\r\n                        if (\r\n                            (details.isDark && details.isTransparent) ||\r\n                            (details.isLarge &&\r\n                                details.isLight &&\r\n                                !details.isTransparent)\r\n                        ) {\r\n                            svg.setAttribute(\r\n                                \"data-darkreader-inline-invert\",\r\n                                \"\"\r\n                            );\r\n                        } else {\r\n                            svg.removeAttribute(\r\n                                \"data-darkreader-inline-invert\"\r\n                            );\r\n                        }\r\n                    });\r\n                };\r\n                analyzeSVGAsImage();\r\n                if (!isDOMReady()) {\r\n                    addDOMReadyListener(analyzeSVGAsImage);\r\n                }\r\n                return;\r\n            }\r\n        }\r\n        if (element.hasAttribute(\"bgcolor\")) {\r\n            let value = element.getAttribute(\"bgcolor\");\r\n            if (\r\n                value.match(/^[0-9a-f]{3}$/i) ||\r\n                value.match(/^[0-9a-f]{6}$/i)\r\n            ) {\r\n                value = `#${value}`;\r\n            }\r\n            setCustomProp(\"background-color\", \"background-color\", value);\r\n        }\r\n        if (\r\n            (element === document.documentElement ||\r\n                element === document.body) &&\r\n            element.hasAttribute(\"background\")\r\n        ) {\r\n            const url = getAbsoluteURL(\r\n                location.href,\r\n                element.getAttribute(\"background\") ?? \"\"\r\n            );\r\n            const value = `url(\"${url}\")`;\r\n            setCustomProp(\"background-image\", \"background-image\", value);\r\n        }\r\n        if (element.hasAttribute(\"color\") && element.rel !== \"mask-icon\") {\r\n            let value = element.getAttribute(\"color\");\r\n            if (\r\n                value.match(/^[0-9a-f]{3}$/i) ||\r\n                value.match(/^[0-9a-f]{6}$/i)\r\n            ) {\r\n                value = `#${value}`;\r\n            }\r\n            setCustomProp(\"color\", \"color\", value);\r\n        }\r\n        if (isSVGElement) {\r\n            if (element.hasAttribute(\"fill\")) {\r\n                const SMALL_SVG_LIMIT = 32;\r\n                const value = element.getAttribute(\"fill\");\r\n                if (value !== \"none\") {\r\n                    if (!(element instanceof SVGTextElement)) {\r\n                        const handleSVGElement = () => {\r\n                            const {width, height} =\r\n                                element.getBoundingClientRect();\r\n                            const isBg =\r\n                                width > SMALL_SVG_LIMIT ||\r\n                                height > SMALL_SVG_LIMIT;\r\n                            setCustomProp(\r\n                                \"fill\",\r\n                                isBg ? \"background-color\" : \"color\",\r\n                                value\r\n                            );\r\n                        };\r\n                        if (isReadyStateComplete()) {\r\n                            handleSVGElement();\r\n                        } else {\r\n                            addReadyStateCompleteListener(handleSVGElement);\r\n                        }\r\n                    } else {\r\n                        setCustomProp(\"fill\", \"color\", value);\r\n                    }\r\n                }\r\n            }\r\n            if (element.hasAttribute(\"stop-color\")) {\r\n                setCustomProp(\r\n                    \"stop-color\",\r\n                    \"background-color\",\r\n                    element.getAttribute(\"stop-color\")\r\n                );\r\n            }\r\n        }\r\n        if (element.hasAttribute(\"stroke\")) {\r\n            const value = element.getAttribute(\"stroke\");\r\n            setCustomProp(\r\n                \"stroke\",\r\n                element instanceof SVGLineElement ||\r\n                    element instanceof SVGTextElement\r\n                    ? \"border-color\"\r\n                    : \"color\",\r\n                value\r\n            );\r\n        }\r\n        element.style &&\r\n            iterateCSSDeclarations(element.style, (property, value) => {\r\n                if (property === \"background-image\" && value.includes(\"url\")) {\r\n                    if (\r\n                        element === document.documentElement ||\r\n                        element === document.body\r\n                    ) {\r\n                        setCustomProp(property, property, value);\r\n                    }\r\n                    return;\r\n                }\r\n                if (\r\n                    overrides$1.hasOwnProperty(property) ||\r\n                    (property.startsWith(\"--\") && !normalizedPropList[property])\r\n                ) {\r\n                    setCustomProp(property, property, value);\r\n                } else if (\r\n                    property === \"background\" &&\r\n                    value.includes(\"var(\")\r\n                ) {\r\n                    setCustomProp(\"background\", \"background\", value);\r\n                } else {\r\n                    const overriddenProp = normalizedPropList[property];\r\n                    if (\r\n                        overriddenProp &&\r\n                        !element.style.getPropertyValue(overriddenProp) &&\r\n                        !element.hasAttribute(overriddenProp)\r\n                    ) {\r\n                        if (\r\n                            overriddenProp === \"background-color\" &&\r\n                            element.hasAttribute(\"bgcolor\")\r\n                        ) {\r\n                            return;\r\n                        }\r\n                        element.style.setProperty(property, \"\");\r\n                    }\r\n                }\r\n            });\r\n        if (\r\n            element.style &&\r\n            element instanceof SVGTextElement &&\r\n            element.style.fill\r\n        ) {\r\n            setCustomProp(\r\n                \"fill\",\r\n                \"color\",\r\n                element.style.getPropertyValue(\"fill\")\r\n            );\r\n        }\r\n        if (element.getAttribute(\"style\")?.includes(\"--\")) {\r\n            variablesStore.addInlineStyleForMatching(element.style);\r\n        }\r\n        forEach(unsetProps, (cssProp) => {\r\n            element.removeAttribute(overrides$1[cssProp].dataAttr);\r\n        });\r\n        inlineStyleCache.set(element, getInlineStyleCacheKey(element, theme));\r\n    }\r\n\r\n    const metaThemeColorName = \"theme-color\";\r\n    const metaThemeColorSelector = `meta[name=\"${metaThemeColorName}\"]`;\r\n    let srcMetaThemeColor = null;\r\n    let observer = null;\r\n    function changeMetaThemeColor(meta, theme) {\r\n        srcMetaThemeColor = srcMetaThemeColor || meta.content;\r\n        const color = parseColorWithCache(srcMetaThemeColor);\r\n        if (!color) {\r\n            return;\r\n        }\r\n        meta.content = modifyBackgroundColor(color, theme);\r\n    }\r\n    function changeMetaThemeColorWhenAvailable(theme) {\r\n        const meta = document.querySelector(metaThemeColorSelector);\r\n        if (meta) {\r\n            changeMetaThemeColor(meta, theme);\r\n        } else {\r\n            if (observer) {\r\n                observer.disconnect();\r\n            }\r\n            observer = new MutationObserver((mutations) => {\r\n                loop: for (let i = 0; i < mutations.length; i++) {\r\n                    const {addedNodes} = mutations[i];\r\n                    for (let j = 0; j < addedNodes.length; j++) {\r\n                        const node = addedNodes[j];\r\n                        if (\r\n                            node instanceof HTMLMetaElement &&\r\n                            node.name === metaThemeColorName\r\n                        ) {\r\n                            observer.disconnect();\r\n                            observer = null;\r\n                            changeMetaThemeColor(node, theme);\r\n                            break loop;\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n            observer.observe(document.head, {childList: true});\r\n        }\r\n    }\r\n    function restoreMetaThemeColor() {\r\n        if (observer) {\r\n            observer.disconnect();\r\n            observer = null;\r\n        }\r\n        const meta = document.querySelector(metaThemeColorSelector);\r\n        if (meta && srcMetaThemeColor) {\r\n            meta.content = srcMetaThemeColor;\r\n        }\r\n    }\r\n\r\n    const cssCommentsRegex = /\\/\\*[\\s\\S]*?\\*\\//g;\r\n    function removeCSSComments(cssText) {\r\n        return cssText.replace(cssCommentsRegex, \"\");\r\n    }\r\n\r\n    const themeCacheKeys = [\r\n        \"mode\",\r\n        \"brightness\",\r\n        \"contrast\",\r\n        \"grayscale\",\r\n        \"sepia\",\r\n        \"darkSchemeBackgroundColor\",\r\n        \"darkSchemeTextColor\",\r\n        \"lightSchemeBackgroundColor\",\r\n        \"lightSchemeTextColor\"\r\n    ];\r\n    function getThemeKey(theme) {\r\n        let resultKey = \"\";\r\n        themeCacheKeys.forEach((key) => {\r\n            resultKey += `${key}:${theme[key]};`;\r\n        });\r\n        return resultKey;\r\n    }\r\n    const asyncQueue = createAsyncTasksQueue();\r\n    function createStyleSheetModifier() {\r\n        let renderId = 0;\r\n        function getStyleRuleHash(rule) {\r\n            let cssText = rule.cssText;\r\n            if (isMediaRule(rule.parentRule)) {\r\n                cssText = `${rule.parentRule.media.mediaText} { ${cssText} }`;\r\n            }\r\n            return getHashCode(cssText);\r\n        }\r\n        const rulesTextCache = new Set();\r\n        const rulesModCache = new Map();\r\n        const varTypeChangeCleaners = new Set();\r\n        let prevFilterKey = null;\r\n        let hasNonLoadedLink = false;\r\n        let wasRebuilt = false;\r\n        function shouldRebuildStyle() {\r\n            return hasNonLoadedLink && !wasRebuilt;\r\n        }\r\n        function modifySheet(options) {\r\n            const rules = options.sourceCSSRules;\r\n            const {\r\n                theme,\r\n                ignoreImageAnalysis,\r\n                force,\r\n                prepareSheet,\r\n                isAsyncCancelled\r\n            } = options;\r\n            let rulesChanged = rulesModCache.size === 0;\r\n            const notFoundCacheKeys = new Set(rulesModCache.keys());\r\n            const themeKey = getThemeKey(theme);\r\n            const themeChanged = themeKey !== prevFilterKey;\r\n            if (hasNonLoadedLink) {\r\n                wasRebuilt = true;\r\n            }\r\n            const modRules = [];\r\n            iterateCSSRules(\r\n                rules,\r\n                (rule) => {\r\n                    const hash = getStyleRuleHash(rule);\r\n                    let textDiffersFromPrev = false;\r\n                    notFoundCacheKeys.delete(hash);\r\n                    if (!rulesTextCache.has(hash)) {\r\n                        rulesTextCache.add(hash);\r\n                        textDiffersFromPrev = true;\r\n                    }\r\n                    if (textDiffersFromPrev) {\r\n                        rulesChanged = true;\r\n                    } else {\r\n                        modRules.push(rulesModCache.get(hash));\r\n                        return;\r\n                    }\r\n                    if (rule.style.all === \"revert\") {\r\n                        return;\r\n                    }\r\n                    const modDecs = [];\r\n                    rule.style &&\r\n                        iterateCSSDeclarations(\r\n                            rule.style,\r\n                            (property, value) => {\r\n                                const mod = getModifiableCSSDeclaration(\r\n                                    property,\r\n                                    value,\r\n                                    rule,\r\n                                    variablesStore,\r\n                                    ignoreImageAnalysis,\r\n                                    isAsyncCancelled\r\n                                );\r\n                                if (mod) {\r\n                                    modDecs.push(mod);\r\n                                }\r\n                            }\r\n                        );\r\n                    let modRule = null;\r\n                    if (modDecs.length > 0) {\r\n                        const parentRule = rule.parentRule;\r\n                        modRule = {\r\n                            selector: rule.selectorText,\r\n                            declarations: modDecs,\r\n                            parentRule\r\n                        };\r\n                        modRules.push(modRule);\r\n                    }\r\n                    rulesModCache.set(hash, modRule);\r\n                },\r\n                () => {\r\n                    hasNonLoadedLink = true;\r\n                }\r\n            );\r\n            notFoundCacheKeys.forEach((key) => {\r\n                rulesTextCache.delete(key);\r\n                rulesModCache.delete(key);\r\n            });\r\n            prevFilterKey = themeKey;\r\n            if (!force && !rulesChanged && !themeChanged) {\r\n                return;\r\n            }\r\n            renderId++;\r\n            function setRule(target, index, rule) {\r\n                const {selector, declarations} = rule;\r\n                let selectorText = selector;\r\n                const emptyIsWhereSelector =\r\n                    isChromium &&\r\n                    selector.startsWith(\":is(\") &&\r\n                    (selector.includes(\":is()\") ||\r\n                        selector.includes(\":where()\") ||\r\n                        (selector.includes(\":where(\") &&\r\n                            selector.includes(\":-moz\")));\r\n                const viewTransitionSelector =\r\n                    selector.includes(\"::view-transition-\");\r\n                if (emptyIsWhereSelector || viewTransitionSelector) {\r\n                    selectorText = \".darkreader-unsupported-selector\";\r\n                }\r\n                let ruleText = `${selectorText} {`;\r\n                for (const dec of declarations) {\r\n                    const {property, value, important} = dec;\r\n                    if (value) {\r\n                        ruleText += ` ${property}: ${value}${important ? \" !important\" : \"\"};`;\r\n                    }\r\n                }\r\n                ruleText += \" }\";\r\n                target.insertRule(ruleText, index);\r\n            }\r\n            const asyncDeclarations = new Map();\r\n            const varDeclarations = new Map();\r\n            let asyncDeclarationCounter = 0;\r\n            let varDeclarationCounter = 0;\r\n            const rootReadyGroup = {rule: null, rules: [], isGroup: true};\r\n            const groupRefs = new WeakMap();\r\n            function getGroup(rule) {\r\n                if (rule == null) {\r\n                    return rootReadyGroup;\r\n                }\r\n                if (groupRefs.has(rule)) {\r\n                    return groupRefs.get(rule);\r\n                }\r\n                const group = {rule, rules: [], isGroup: true};\r\n                groupRefs.set(rule, group);\r\n                const parentGroup = getGroup(rule.parentRule);\r\n                parentGroup.rules.push(group);\r\n                return group;\r\n            }\r\n            varTypeChangeCleaners.forEach((clear) => clear());\r\n            varTypeChangeCleaners.clear();\r\n            modRules\r\n                .filter((r) => r)\r\n                .forEach(({selector, declarations, parentRule}) => {\r\n                    const group = getGroup(parentRule);\r\n                    const readyStyleRule = {\r\n                        selector,\r\n                        declarations: [],\r\n                        isGroup: false\r\n                    };\r\n                    const readyDeclarations = readyStyleRule.declarations;\r\n                    group.rules.push(readyStyleRule);\r\n                    function handleAsyncDeclaration(\r\n                        property,\r\n                        modified,\r\n                        important,\r\n                        sourceValue\r\n                    ) {\r\n                        const asyncKey = ++asyncDeclarationCounter;\r\n                        const asyncDeclaration = {\r\n                            property,\r\n                            value: null,\r\n                            important,\r\n                            asyncKey,\r\n                            sourceValue\r\n                        };\r\n                        readyDeclarations.push(asyncDeclaration);\r\n                        const currentRenderId = renderId;\r\n                        modified.then((asyncValue) => {\r\n                            if (\r\n                                !asyncValue ||\r\n                                isAsyncCancelled() ||\r\n                                currentRenderId !== renderId\r\n                            ) {\r\n                                return;\r\n                            }\r\n                            asyncDeclaration.value = asyncValue;\r\n                            asyncQueue.add(() => {\r\n                                if (\r\n                                    isAsyncCancelled() ||\r\n                                    currentRenderId !== renderId\r\n                                ) {\r\n                                    return;\r\n                                }\r\n                                rebuildAsyncRule(asyncKey);\r\n                            });\r\n                        });\r\n                    }\r\n                    function handleVarDeclarations(\r\n                        property,\r\n                        modified,\r\n                        important,\r\n                        sourceValue\r\n                    ) {\r\n                        const {declarations: varDecs, onTypeChange} = modified;\r\n                        const varKey = ++varDeclarationCounter;\r\n                        const currentRenderId = renderId;\r\n                        const initialIndex = readyDeclarations.length;\r\n                        let oldDecs = [];\r\n                        if (varDecs.length === 0) {\r\n                            const tempDec = {\r\n                                property,\r\n                                value: sourceValue,\r\n                                important,\r\n                                sourceValue,\r\n                                varKey\r\n                            };\r\n                            readyDeclarations.push(tempDec);\r\n                            oldDecs = [tempDec];\r\n                        }\r\n                        varDecs.forEach((mod) => {\r\n                            if (mod.value instanceof Promise) {\r\n                                handleAsyncDeclaration(\r\n                                    mod.property,\r\n                                    mod.value,\r\n                                    important,\r\n                                    sourceValue\r\n                                );\r\n                            } else {\r\n                                const readyDec = {\r\n                                    property: mod.property,\r\n                                    value: mod.value,\r\n                                    important,\r\n                                    sourceValue,\r\n                                    varKey\r\n                                };\r\n                                readyDeclarations.push(readyDec);\r\n                                oldDecs.push(readyDec);\r\n                            }\r\n                        });\r\n                        onTypeChange.addListener((newDecs) => {\r\n                            if (\r\n                                isAsyncCancelled() ||\r\n                                currentRenderId !== renderId\r\n                            ) {\r\n                                return;\r\n                            }\r\n                            const readyVarDecs = newDecs.map((mod) => {\r\n                                return {\r\n                                    property: mod.property,\r\n                                    value: mod.value,\r\n                                    important,\r\n                                    sourceValue,\r\n                                    varKey\r\n                                };\r\n                            });\r\n                            const index = readyDeclarations.indexOf(\r\n                                oldDecs[0],\r\n                                initialIndex\r\n                            );\r\n                            readyDeclarations.splice(\r\n                                index,\r\n                                oldDecs.length,\r\n                                ...readyVarDecs\r\n                            );\r\n                            oldDecs = readyVarDecs;\r\n                            rebuildVarRule(varKey);\r\n                        });\r\n                        varTypeChangeCleaners.add(() =>\r\n                            onTypeChange.removeListeners()\r\n                        );\r\n                    }\r\n                    declarations.forEach(\r\n                        ({property, value, important, sourceValue}) => {\r\n                            if (typeof value === \"function\") {\r\n                                const modified = value(theme);\r\n                                if (modified instanceof Promise) {\r\n                                    handleAsyncDeclaration(\r\n                                        property,\r\n                                        modified,\r\n                                        important,\r\n                                        sourceValue\r\n                                    );\r\n                                } else if (property.startsWith(\"--\")) {\r\n                                    handleVarDeclarations(\r\n                                        property,\r\n                                        modified,\r\n                                        important,\r\n                                        sourceValue\r\n                                    );\r\n                                } else {\r\n                                    readyDeclarations.push({\r\n                                        property,\r\n                                        value: modified,\r\n                                        important,\r\n                                        sourceValue\r\n                                    });\r\n                                }\r\n                            } else {\r\n                                readyDeclarations.push({\r\n                                    property,\r\n                                    value,\r\n                                    important,\r\n                                    sourceValue\r\n                                });\r\n                            }\r\n                        }\r\n                    );\r\n                });\r\n            const sheet = prepareSheet();\r\n            function buildStyleSheet() {\r\n                function createTarget(group, parent) {\r\n                    const {rule} = group;\r\n                    if (isMediaRule(rule)) {\r\n                        const {media} = rule;\r\n                        const index = parent.cssRules.length;\r\n                        parent.insertRule(\r\n                            `@media ${media.mediaText} {}`,\r\n                            index\r\n                        );\r\n                        return parent.cssRules[index];\r\n                    }\r\n                    if (isLayerRule(rule)) {\r\n                        const {name} = rule;\r\n                        const index = parent.cssRules.length;\r\n                        parent.insertRule(`@layer ${name} {}`, index);\r\n                        return parent.cssRules[index];\r\n                    }\r\n                    return parent;\r\n                }\r\n                function iterateReadyRules(group, target, styleIterator) {\r\n                    group.rules.forEach((r) => {\r\n                        if (r.isGroup) {\r\n                            const t = createTarget(r, target);\r\n                            iterateReadyRules(r, t, styleIterator);\r\n                        } else {\r\n                            styleIterator(r, target);\r\n                        }\r\n                    });\r\n                }\r\n                iterateReadyRules(rootReadyGroup, sheet, (rule, target) => {\r\n                    const index = target.cssRules.length;\r\n                    rule.declarations.forEach(({asyncKey, varKey}) => {\r\n                        if (asyncKey != null) {\r\n                            asyncDeclarations.set(asyncKey, {\r\n                                rule,\r\n                                target,\r\n                                index\r\n                            });\r\n                        }\r\n                        if (varKey != null) {\r\n                            varDeclarations.set(varKey, {rule, target, index});\r\n                        }\r\n                    });\r\n                    setRule(target, index, rule);\r\n                });\r\n            }\r\n            function rebuildAsyncRule(key) {\r\n                const {rule, target, index} = asyncDeclarations.get(key);\r\n                target.deleteRule(index);\r\n                setRule(target, index, rule);\r\n                asyncDeclarations.delete(key);\r\n            }\r\n            function rebuildVarRule(key) {\r\n                const {rule, target, index} = varDeclarations.get(key);\r\n                target.deleteRule(index);\r\n                setRule(target, index, rule);\r\n            }\r\n            buildStyleSheet();\r\n        }\r\n        return {modifySheet, shouldRebuildStyle};\r\n    }\r\n\r\n    let canUseSheetProxy$1 = false;\r\n    document.addEventListener(\r\n        \"__darkreader__inlineScriptsAllowed\",\r\n        () => (canUseSheetProxy$1 = true),\r\n        {once: true}\r\n    );\r\n    function createSheetWatcher(\r\n        element,\r\n        safeGetSheetRules,\r\n        callback,\r\n        isCancelled\r\n    ) {\r\n        let rafSheetWatcher = null;\r\n        function watchForSheetChanges() {\r\n            watchForSheetChangesUsingProxy();\r\n            if (!(canUseSheetProxy$1 && element.sheet)) {\r\n                rafSheetWatcher = createRAFSheetWatcher(\r\n                    element,\r\n                    safeGetSheetRules,\r\n                    callback,\r\n                    isCancelled\r\n                );\r\n                rafSheetWatcher.start();\r\n            }\r\n        }\r\n        let areSheetChangesPending = false;\r\n        function onSheetChange() {\r\n            canUseSheetProxy$1 = true;\r\n            rafSheetWatcher?.stop();\r\n            if (areSheetChangesPending) {\r\n                return;\r\n            }\r\n            function handleSheetChanges() {\r\n                areSheetChangesPending = false;\r\n                if (isCancelled()) {\r\n                    return;\r\n                }\r\n                callback();\r\n            }\r\n            areSheetChangesPending = true;\r\n            queueMicrotask(handleSheetChanges);\r\n        }\r\n        function watchForSheetChangesUsingProxy() {\r\n            element.addEventListener(\r\n                \"__darkreader__updateSheet\",\r\n                onSheetChange\r\n            );\r\n        }\r\n        function stopWatchingForSheetChangesUsingProxy() {\r\n            element.removeEventListener(\r\n                \"__darkreader__updateSheet\",\r\n                onSheetChange\r\n            );\r\n        }\r\n        function stopWatchingForSheetChanges() {\r\n            stopWatchingForSheetChangesUsingProxy();\r\n            rafSheetWatcher?.stop();\r\n        }\r\n        return {\r\n            start: watchForSheetChanges,\r\n            stop: stopWatchingForSheetChanges\r\n        };\r\n    }\r\n    function createRAFSheetWatcher(\r\n        element,\r\n        safeGetSheetRules,\r\n        callback,\r\n        isCancelled\r\n    ) {\r\n        let rulesChangeKey = null;\r\n        let rulesCheckFrameId = null;\r\n        function getRulesChangeKey() {\r\n            const rules = safeGetSheetRules();\r\n            return rules ? rules.length : null;\r\n        }\r\n        function didRulesKeyChange() {\r\n            return getRulesChangeKey() !== rulesChangeKey;\r\n        }\r\n        function watchForSheetChangesUsingRAF() {\r\n            rulesChangeKey = getRulesChangeKey();\r\n            stopWatchingForSheetChangesUsingRAF();\r\n            const checkForUpdate = () => {\r\n                const cancelled = isCancelled();\r\n                if (!cancelled && didRulesKeyChange()) {\r\n                    rulesChangeKey = getRulesChangeKey();\r\n                    callback();\r\n                }\r\n                if (cancelled || (canUseSheetProxy$1 && element.sheet)) {\r\n                    stopWatchingForSheetChangesUsingRAF();\r\n                    return;\r\n                }\r\n                rulesCheckFrameId = requestAnimationFrame(checkForUpdate);\r\n            };\r\n            checkForUpdate();\r\n        }\r\n        function stopWatchingForSheetChangesUsingRAF() {\r\n            rulesCheckFrameId && cancelAnimationFrame(rulesCheckFrameId);\r\n        }\r\n        return {\r\n            start: watchForSheetChangesUsingRAF,\r\n            stop: stopWatchingForSheetChangesUsingRAF\r\n        };\r\n    }\r\n\r\n    const STYLE_SELECTOR = 'style, link[rel*=\"stylesheet\" i]:not([disabled])';\r\n    function isFontsGoogleApiStyle(element) {\r\n        if (!element.href) {\r\n            return false;\r\n        }\r\n        try {\r\n            const elementURL = new URL(element.href);\r\n            return elementURL.hostname === \"fonts.googleapis.com\";\r\n        } catch (err) {\r\n            logInfo(`Couldn't construct ${element.href} as URL`);\r\n            return false;\r\n        }\r\n    }\r\n    const hostsBreakingOnSVGStyleOverride = [\"www.onet.pl\"];\r\n    function shouldManageStyle(element) {\r\n        return (\r\n            (element instanceof HTMLStyleElement ||\r\n                (element instanceof SVGStyleElement &&\r\n                    !hostsBreakingOnSVGStyleOverride.includes(\r\n                        location.hostname\r\n                    )) ||\r\n                (element instanceof HTMLLinkElement &&\r\n                    Boolean(element.rel) &&\r\n                    element.rel.toLowerCase().includes(\"stylesheet\") &&\r\n                    Boolean(element.href) &&\r\n                    !element.disabled &&\r\n                    (isFirefox\r\n                        ? !element.href.startsWith(\"moz-extension://\")\r\n                        : true) &&\r\n                    !isFontsGoogleApiStyle(element))) &&\r\n            !element.classList.contains(\"darkreader\") &&\r\n            element.media.toLowerCase() !== \"print\" &&\r\n            !element.classList.contains(\"stylus\")\r\n        );\r\n    }\r\n    function getManageableStyles(node, results = [], deep = true) {\r\n        if (shouldManageStyle(node)) {\r\n            results.push(node);\r\n        } else if (\r\n            node instanceof Element ||\r\n            (isShadowDomSupported && node instanceof ShadowRoot) ||\r\n            node === document\r\n        ) {\r\n            forEach(node.querySelectorAll(STYLE_SELECTOR), (style) =>\r\n                getManageableStyles(style, results, false)\r\n            );\r\n            if (deep) {\r\n                iterateShadowHosts(node, (host) =>\r\n                    getManageableStyles(host.shadowRoot, results, false)\r\n                );\r\n            }\r\n        }\r\n        return results;\r\n    }\r\n    const syncStyleSet = new WeakSet();\r\n    const corsStyleSet = new WeakSet();\r\n    let loadingLinkCounter = 0;\r\n    const rejectorsForLoadingLinks = new Map();\r\n    function cleanLoadingLinks() {\r\n        rejectorsForLoadingLinks.clear();\r\n    }\r\n    function manageStyle(element, {update, loadingStart, loadingEnd}) {\r\n        const prevStyles = [];\r\n        let next = element;\r\n        while (\r\n            (next = next.nextElementSibling) &&\r\n            next.matches(\".darkreader\")\r\n        ) {\r\n            prevStyles.push(next);\r\n        }\r\n        let corsCopy =\r\n            prevStyles.find(\r\n                (el) => el.matches(\".darkreader--cors\") && !corsStyleSet.has(el)\r\n            ) || null;\r\n        let syncStyle =\r\n            prevStyles.find(\r\n                (el) => el.matches(\".darkreader--sync\") && !syncStyleSet.has(el)\r\n            ) || null;\r\n        let corsCopyPositionWatcher = null;\r\n        let syncStylePositionWatcher = null;\r\n        let cancelAsyncOperations = false;\r\n        let isOverrideEmpty = true;\r\n        const isAsyncCancelled = () => cancelAsyncOperations;\r\n        const sheetModifier = createStyleSheetModifier();\r\n        const observer = new MutationObserver((mutations) => {\r\n            if (\r\n                mutations.some((m) => m.type === \"characterData\") &&\r\n                containsCSSImport()\r\n            ) {\r\n                const cssText = (element.textContent ?? \"\").trim();\r\n                createOrUpdateCORSCopy(cssText, location.href).then(update);\r\n            } else {\r\n                update();\r\n            }\r\n        });\r\n        const observerOptions = {\r\n            attributes: true,\r\n            childList: true,\r\n            subtree: true,\r\n            characterData: true\r\n        };\r\n        function containsCSSImport() {\r\n            if (!(element instanceof HTMLStyleElement)) {\r\n                return false;\r\n            }\r\n            const cssText = removeCSSComments(element.textContent ?? \"\").trim();\r\n            return cssText.match(cssImportRegex);\r\n        }\r\n        function hasImports(cssRules, checkCrossOrigin) {\r\n            let result = false;\r\n            if (cssRules) {\r\n                let rule;\r\n                cssRulesLoop: for (\r\n                    let i = 0, len = cssRules.length;\r\n                    i < len;\r\n                    i++\r\n                ) {\r\n                    rule = cssRules[i];\r\n                    if (rule.href) {\r\n                        if (checkCrossOrigin) {\r\n                            if (\r\n                                !rule.href.startsWith(\r\n                                    \"https://fonts.googleapis.com/\"\r\n                                ) &&\r\n                                rule.href.startsWith(\"http\") &&\r\n                                !rule.href.startsWith(location.origin)\r\n                            ) {\r\n                                result = true;\r\n                                break cssRulesLoop;\r\n                            }\r\n                        } else {\r\n                            result = true;\r\n                            break cssRulesLoop;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return result;\r\n        }\r\n        function getRulesSync() {\r\n            if (corsCopy) {\r\n                return corsCopy.sheet.cssRules;\r\n            }\r\n            if (containsCSSImport()) {\r\n                return null;\r\n            }\r\n            const cssRules = safeGetSheetRules();\r\n            if (\r\n                element instanceof HTMLLinkElement &&\r\n                !isRelativeHrefOnAbsolutePath(element.href) &&\r\n                hasImports(cssRules, false)\r\n            ) {\r\n                return null;\r\n            }\r\n            if (hasImports(cssRules, true)) {\r\n                return null;\r\n            }\r\n            return cssRules;\r\n        }\r\n        function insertStyle() {\r\n            if (corsCopy) {\r\n                if (element.nextSibling !== corsCopy) {\r\n                    element.parentNode.insertBefore(\r\n                        corsCopy,\r\n                        element.nextSibling\r\n                    );\r\n                }\r\n                if (corsCopy.nextSibling !== syncStyle) {\r\n                    element.parentNode.insertBefore(\r\n                        syncStyle,\r\n                        corsCopy.nextSibling\r\n                    );\r\n                }\r\n            } else if (element.nextSibling !== syncStyle) {\r\n                element.parentNode.insertBefore(syncStyle, element.nextSibling);\r\n            }\r\n        }\r\n        function createSyncStyle() {\r\n            syncStyle =\r\n                element instanceof SVGStyleElement\r\n                    ? document.createElementNS(\r\n                          \"http://www.w3.org/2000/svg\",\r\n                          \"style\"\r\n                      )\r\n                    : document.createElement(\"style\");\r\n            syncStyle.classList.add(\"darkreader\");\r\n            syncStyle.classList.add(\"darkreader--sync\");\r\n            syncStyle.media = \"screen\";\r\n            if (element.title) {\r\n                syncStyle.title = element.title;\r\n            }\r\n            syncStyleSet.add(syncStyle);\r\n        }\r\n        let isLoadingRules = false;\r\n        let wasLoadingError = false;\r\n        const loadingLinkId = ++loadingLinkCounter;\r\n        async function getRulesAsync() {\r\n            let cssText;\r\n            let cssBasePath;\r\n            if (element instanceof HTMLLinkElement) {\r\n                let [cssRules, accessError] = getRulesOrError();\r\n                if (\r\n                    (isSafari && !element.sheet) ||\r\n                    (!isSafari && !cssRules && !accessError) ||\r\n                    isStillLoadingError(accessError)\r\n                ) {\r\n                    try {\r\n                        logInfo(\r\n                            `Linkelement ${loadingLinkId} is not loaded yet and thus will be await for`,\r\n                            element\r\n                        );\r\n                        await linkLoading(element, loadingLinkId);\r\n                    } catch (err) {\r\n                        wasLoadingError = true;\r\n                    }\r\n                    if (cancelAsyncOperations) {\r\n                        return null;\r\n                    }\r\n                    [cssRules, accessError] = getRulesOrError();\r\n                }\r\n                if (cssRules) {\r\n                    if (!hasImports(cssRules, false)) {\r\n                        return cssRules;\r\n                    }\r\n                }\r\n                cssText = await loadText(element.href);\r\n                cssBasePath = getCSSBaseBath(element.href);\r\n                if (cancelAsyncOperations) {\r\n                    return null;\r\n                }\r\n            } else if (containsCSSImport()) {\r\n                cssText = element.textContent.trim();\r\n                cssBasePath = getCSSBaseBath(location.href);\r\n            } else {\r\n                return null;\r\n            }\r\n            await createOrUpdateCORSCopy(cssText, cssBasePath);\r\n            if (corsCopy) {\r\n                return corsCopy.sheet.cssRules;\r\n            }\r\n            return null;\r\n        }\r\n        async function createOrUpdateCORSCopy(cssText, cssBasePath) {\r\n            if (cssText) {\r\n                try {\r\n                    const fullCSSText = await replaceCSSImports(\r\n                        cssText,\r\n                        cssBasePath\r\n                    );\r\n                    if (corsCopy) {\r\n                        if (\r\n                            (corsCopy.textContent?.length ?? 0) <\r\n                            fullCSSText.length\r\n                        ) {\r\n                            corsCopy.textContent = fullCSSText;\r\n                        }\r\n                    } else {\r\n                        corsCopy = createCORSCopy(element, fullCSSText);\r\n                    }\r\n                } catch (err) {}\r\n                if (corsCopy) {\r\n                    corsCopyPositionWatcher = watchForNodePosition(\r\n                        corsCopy,\r\n                        \"prev-sibling\"\r\n                    );\r\n                }\r\n            }\r\n        }\r\n        function details(options) {\r\n            const rules = getRulesSync();\r\n            if (!rules) {\r\n                if (options.secondRound) {\r\n                    return null;\r\n                }\r\n                if (isLoadingRules || wasLoadingError) {\r\n                    return null;\r\n                }\r\n                isLoadingRules = true;\r\n                loadingStart();\r\n                getRulesAsync()\r\n                    .then((results) => {\r\n                        isLoadingRules = false;\r\n                        loadingEnd();\r\n                        if (results) {\r\n                            update();\r\n                        }\r\n                    })\r\n                    .catch((err) => {\r\n                        isLoadingRules = false;\r\n                        loadingEnd();\r\n                    });\r\n                return null;\r\n            }\r\n            return {rules};\r\n        }\r\n        let forceRenderStyle = false;\r\n        function render(theme, ignoreImageAnalysis) {\r\n            const rules = getRulesSync();\r\n            if (!rules) {\r\n                return;\r\n            }\r\n            cancelAsyncOperations = false;\r\n            function removeCSSRulesFromSheet(sheet) {\r\n                if (!sheet) {\r\n                    return;\r\n                }\r\n                for (let i = sheet.cssRules.length - 1; i >= 0; i--) {\r\n                    sheet.deleteRule(i);\r\n                }\r\n            }\r\n            function prepareOverridesSheet() {\r\n                if (!syncStyle) {\r\n                    createSyncStyle();\r\n                }\r\n                syncStylePositionWatcher && syncStylePositionWatcher.stop();\r\n                insertStyle();\r\n                if (syncStyle.sheet == null) {\r\n                    syncStyle.textContent = \"\";\r\n                }\r\n                const sheet = syncStyle.sheet;\r\n                removeCSSRulesFromSheet(sheet);\r\n                if (syncStylePositionWatcher) {\r\n                    syncStylePositionWatcher.run();\r\n                } else {\r\n                    syncStylePositionWatcher = watchForNodePosition(\r\n                        syncStyle,\r\n                        \"prev-sibling\",\r\n                        () => {\r\n                            forceRenderStyle = true;\r\n                            buildOverrides();\r\n                        }\r\n                    );\r\n                }\r\n                return syncStyle.sheet;\r\n            }\r\n            function buildOverrides() {\r\n                const force = forceRenderStyle;\r\n                forceRenderStyle = false;\r\n                sheetModifier.modifySheet({\r\n                    prepareSheet: prepareOverridesSheet,\r\n                    sourceCSSRules: rules,\r\n                    theme,\r\n                    ignoreImageAnalysis,\r\n                    force,\r\n                    isAsyncCancelled\r\n                });\r\n                isOverrideEmpty = syncStyle.sheet.cssRules.length === 0;\r\n                if (sheetModifier.shouldRebuildStyle()) {\r\n                    addReadyStateCompleteListener(() => update());\r\n                }\r\n            }\r\n            buildOverrides();\r\n        }\r\n        function getRulesOrError() {\r\n            try {\r\n                if (element.sheet == null) {\r\n                    return [null, null];\r\n                }\r\n                return [element.sheet.cssRules, null];\r\n            } catch (err) {\r\n                return [null, err];\r\n            }\r\n        }\r\n        function isStillLoadingError(error) {\r\n            return error && error.message && error.message.includes(\"loading\");\r\n        }\r\n        function safeGetSheetRules() {\r\n            const [cssRules, err] = getRulesOrError();\r\n            if (err) {\r\n                return null;\r\n            }\r\n            return cssRules;\r\n        }\r\n        const sheetChangeWatcher = createSheetWatcher(\r\n            element,\r\n            safeGetSheetRules,\r\n            update,\r\n            isAsyncCancelled\r\n        );\r\n        function pause() {\r\n            observer.disconnect();\r\n            cancelAsyncOperations = true;\r\n            corsCopyPositionWatcher && corsCopyPositionWatcher.stop();\r\n            syncStylePositionWatcher && syncStylePositionWatcher.stop();\r\n            sheetChangeWatcher.stop();\r\n        }\r\n        function destroy() {\r\n            pause();\r\n            removeNode(corsCopy);\r\n            removeNode(syncStyle);\r\n            loadingEnd();\r\n            if (rejectorsForLoadingLinks.has(loadingLinkId)) {\r\n                const reject = rejectorsForLoadingLinks.get(loadingLinkId);\r\n                rejectorsForLoadingLinks.delete(loadingLinkId);\r\n                reject && reject();\r\n            }\r\n        }\r\n        function watch() {\r\n            observer.observe(element, observerOptions);\r\n            if (element instanceof HTMLStyleElement) {\r\n                sheetChangeWatcher.start();\r\n            }\r\n        }\r\n        const maxMoveCount = 10;\r\n        let moveCount = 0;\r\n        function restore() {\r\n            if (!syncStyle) {\r\n                return;\r\n            }\r\n            moveCount++;\r\n            if (moveCount > maxMoveCount) {\r\n                return;\r\n            }\r\n            insertStyle();\r\n            corsCopyPositionWatcher && corsCopyPositionWatcher.skip();\r\n            syncStylePositionWatcher && syncStylePositionWatcher.skip();\r\n            if (!isOverrideEmpty) {\r\n                forceRenderStyle = true;\r\n                update();\r\n            }\r\n        }\r\n        return {\r\n            details,\r\n            render,\r\n            pause,\r\n            destroy,\r\n            watch,\r\n            restore\r\n        };\r\n    }\r\n    async function linkLoading(link, loadingId) {\r\n        return new Promise((resolve, reject) => {\r\n            const cleanUp = () => {\r\n                link.removeEventListener(\"load\", onLoad);\r\n                link.removeEventListener(\"error\", onError);\r\n                rejectorsForLoadingLinks.delete(loadingId);\r\n            };\r\n            const onLoad = () => {\r\n                cleanUp();\r\n                resolve();\r\n            };\r\n            const onError = () => {\r\n                cleanUp();\r\n                reject(\r\n                    `Linkelement ${loadingId} couldn't be loaded. ${link.href}`\r\n                );\r\n            };\r\n            rejectorsForLoadingLinks.set(loadingId, () => {\r\n                cleanUp();\r\n                reject();\r\n            });\r\n            link.addEventListener(\"load\", onLoad, {passive: true});\r\n            link.addEventListener(\"error\", onError, {passive: true});\r\n            if (!link.href) {\r\n                onError();\r\n            }\r\n        });\r\n    }\r\n    function getCSSImportURL(importDeclaration) {\r\n        return getCSSURLValue(\r\n            importDeclaration\r\n                .substring(7)\r\n                .trim()\r\n                .replace(/;$/, \"\")\r\n                .replace(/screen$/, \"\")\r\n        );\r\n    }\r\n    async function loadText(url) {\r\n        if (url.startsWith(\"data:\")) {\r\n            return await (await fetch(url)).text();\r\n        }\r\n        const parsedURL = new URL(url);\r\n        if (parsedURL.origin === location.origin) {\r\n            return await loadAsText(url, \"text/css\", location.origin);\r\n        }\r\n        return await bgFetch({\r\n            url,\r\n            responseType: \"text\",\r\n            mimeType: \"text/css\",\r\n            origin: location.origin\r\n        });\r\n    }\r\n    async function replaceCSSImports(cssText, basePath, cache = new Map()) {\r\n        cssText = removeCSSComments(cssText);\r\n        cssText = replaceCSSFontFace(cssText);\r\n        cssText = replaceCSSRelativeURLsWithAbsolute(cssText, basePath);\r\n        const importMatches = getMatches(cssImportRegex, cssText);\r\n        for (const match of importMatches) {\r\n            const importURL = getCSSImportURL(match);\r\n            const absoluteURL = getAbsoluteURL(basePath, importURL);\r\n            let importedCSS;\r\n            if (cache.has(absoluteURL)) {\r\n                importedCSS = cache.get(absoluteURL);\r\n            } else {\r\n                try {\r\n                    importedCSS = await loadText(absoluteURL);\r\n                    cache.set(absoluteURL, importedCSS);\r\n                    importedCSS = await replaceCSSImports(\r\n                        importedCSS,\r\n                        getCSSBaseBath(absoluteURL),\r\n                        cache\r\n                    );\r\n                } catch (err) {\r\n                    importedCSS = \"\";\r\n                }\r\n            }\r\n            cssText = cssText.split(match).join(importedCSS);\r\n        }\r\n        cssText = cssText.trim();\r\n        return cssText;\r\n    }\r\n    function createCORSCopy(srcElement, cssText) {\r\n        if (!cssText) {\r\n            return null;\r\n        }\r\n        const cors = document.createElement(\"style\");\r\n        cors.classList.add(\"darkreader\");\r\n        cors.classList.add(\"darkreader--cors\");\r\n        cors.media = \"screen\";\r\n        cors.textContent = cssText;\r\n        srcElement.parentNode.insertBefore(cors, srcElement.nextSibling);\r\n        cors.sheet.disabled = true;\r\n        corsStyleSet.add(cors);\r\n        return cors;\r\n    }\r\n\r\n    const definedCustomElements = new Set();\r\n    const undefinedGroups = new Map();\r\n    let elementsDefinitionCallback;\r\n    function isCustomElement(element) {\r\n        if (element.tagName.includes(\"-\") || element.getAttribute(\"is\")) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n    function recordUndefinedElement(element) {\r\n        let tag = element.tagName.toLowerCase();\r\n        if (!tag.includes(\"-\")) {\r\n            const extendedTag = element.getAttribute(\"is\");\r\n            if (extendedTag) {\r\n                tag = extendedTag;\r\n            } else {\r\n                return;\r\n            }\r\n        }\r\n        if (!undefinedGroups.has(tag)) {\r\n            undefinedGroups.set(tag, new Set());\r\n            customElementsWhenDefined(tag).then(() => {\r\n                if (elementsDefinitionCallback) {\r\n                    const elements = undefinedGroups.get(tag);\r\n                    undefinedGroups.delete(tag);\r\n                    elementsDefinitionCallback(Array.from(elements));\r\n                }\r\n            });\r\n        }\r\n        undefinedGroups.get(tag).add(element);\r\n    }\r\n    function collectUndefinedElements(root) {\r\n        if (!isDefinedSelectorSupported) {\r\n            return;\r\n        }\r\n        forEach(\r\n            root.querySelectorAll(\":not(:defined)\"),\r\n            recordUndefinedElement\r\n        );\r\n    }\r\n    let canOptimizeUsingProxy = false;\r\n    document.addEventListener(\r\n        \"__darkreader__inlineScriptsAllowed\",\r\n        () => {\r\n            canOptimizeUsingProxy = true;\r\n        },\r\n        {once: true, passive: true}\r\n    );\r\n    const resolvers = new Map();\r\n    function handleIsDefined(e) {\r\n        canOptimizeUsingProxy = true;\r\n        const tag = e.detail.tag;\r\n        definedCustomElements.add(tag);\r\n        if (resolvers.has(tag)) {\r\n            const r = resolvers.get(tag);\r\n            resolvers.delete(tag);\r\n            r.forEach((r) => r());\r\n        }\r\n    }\r\n    async function customElementsWhenDefined(tag) {\r\n        if (definedCustomElements.has(tag)) {\r\n            return;\r\n        }\r\n        return new Promise((resolve) => {\r\n            if (\r\n                window.customElements &&\r\n                typeof customElements.whenDefined === \"function\"\r\n            ) {\r\n                customElements.whenDefined(tag).then(() => resolve());\r\n            } else if (canOptimizeUsingProxy) {\r\n                if (resolvers.has(tag)) {\r\n                    resolvers.get(tag).push(resolve);\r\n                } else {\r\n                    resolvers.set(tag, [resolve]);\r\n                }\r\n                document.dispatchEvent(\r\n                    new CustomEvent(\"__darkreader__addUndefinedResolver\", {\r\n                        detail: {tag}\r\n                    })\r\n                );\r\n            } else {\r\n                const checkIfDefined = () => {\r\n                    const elements = undefinedGroups.get(tag);\r\n                    if (elements && elements.size > 0) {\r\n                        if (\r\n                            elements.values().next().value.matches(\":defined\")\r\n                        ) {\r\n                            resolve();\r\n                        } else {\r\n                            requestAnimationFrame(checkIfDefined);\r\n                        }\r\n                    }\r\n                };\r\n                requestAnimationFrame(checkIfDefined);\r\n            }\r\n        });\r\n    }\r\n    function watchWhenCustomElementsDefined(callback) {\r\n        elementsDefinitionCallback = callback;\r\n    }\r\n    function unsubscribeFromDefineCustomElements() {\r\n        elementsDefinitionCallback = null;\r\n        undefinedGroups.clear();\r\n        document.removeEventListener(\r\n            \"__darkreader__isDefined\",\r\n            handleIsDefined\r\n        );\r\n    }\r\n\r\n    const observers = [];\r\n    let observedRoots;\r\n    function watchForStylePositions(\r\n        currentStyles,\r\n        update,\r\n        shadowRootDiscovered\r\n    ) {\r\n        stopWatchingForStylePositions();\r\n        const prevStylesByRoot = new WeakMap();\r\n        const getPrevStyles = (root) => {\r\n            if (!prevStylesByRoot.has(root)) {\r\n                prevStylesByRoot.set(root, new Set());\r\n            }\r\n            return prevStylesByRoot.get(root);\r\n        };\r\n        currentStyles.forEach((node) => {\r\n            let root = node;\r\n            while ((root = root.parentNode)) {\r\n                if (\r\n                    root === document ||\r\n                    root.nodeType === Node.DOCUMENT_FRAGMENT_NODE\r\n                ) {\r\n                    const prevStyles = getPrevStyles(root);\r\n                    prevStyles.add(node);\r\n                    break;\r\n                }\r\n            }\r\n        });\r\n        const prevStyleSiblings = new WeakMap();\r\n        const nextStyleSiblings = new WeakMap();\r\n        function saveStylePosition(style) {\r\n            prevStyleSiblings.set(style, style.previousElementSibling);\r\n            nextStyleSiblings.set(style, style.nextElementSibling);\r\n        }\r\n        function forgetStylePosition(style) {\r\n            prevStyleSiblings.delete(style);\r\n            nextStyleSiblings.delete(style);\r\n        }\r\n        function didStylePositionChange(style) {\r\n            return (\r\n                style.previousElementSibling !== prevStyleSiblings.get(style) ||\r\n                style.nextElementSibling !== nextStyleSiblings.get(style)\r\n            );\r\n        }\r\n        currentStyles.forEach(saveStylePosition);\r\n        function handleStyleOperations(root, operations) {\r\n            const {createdStyles, removedStyles, movedStyles} = operations;\r\n            createdStyles.forEach((s) => saveStylePosition(s));\r\n            movedStyles.forEach((s) => saveStylePosition(s));\r\n            removedStyles.forEach((s) => forgetStylePosition(s));\r\n            const prevStyles = getPrevStyles(root);\r\n            createdStyles.forEach((s) => prevStyles.add(s));\r\n            removedStyles.forEach((s) => prevStyles.delete(s));\r\n            if (\r\n                createdStyles.size + removedStyles.size + movedStyles.size >\r\n                0\r\n            ) {\r\n                update({\r\n                    created: Array.from(createdStyles),\r\n                    removed: Array.from(removedStyles),\r\n                    moved: Array.from(movedStyles),\r\n                    updated: []\r\n                });\r\n            }\r\n        }\r\n        function handleMinorTreeMutations(root, {additions, moves, deletions}) {\r\n            const createdStyles = new Set();\r\n            const removedStyles = new Set();\r\n            const movedStyles = new Set();\r\n            additions.forEach((node) =>\r\n                getManageableStyles(node).forEach((style) =>\r\n                    createdStyles.add(style)\r\n                )\r\n            );\r\n            deletions.forEach((node) =>\r\n                getManageableStyles(node).forEach((style) =>\r\n                    removedStyles.add(style)\r\n                )\r\n            );\r\n            moves.forEach((node) =>\r\n                getManageableStyles(node).forEach((style) =>\r\n                    movedStyles.add(style)\r\n                )\r\n            );\r\n            handleStyleOperations(root, {\r\n                createdStyles,\r\n                removedStyles,\r\n                movedStyles\r\n            });\r\n            additions.forEach((n) => {\r\n                deepObserve(n);\r\n                collectUndefinedElements(n);\r\n            });\r\n            additions.forEach(\r\n                (node) => isCustomElement(node) && recordUndefinedElement(node)\r\n            );\r\n        }\r\n        function handleHugeTreeMutations(root) {\r\n            const styles = new Set(getManageableStyles(root));\r\n            const createdStyles = new Set();\r\n            const removedStyles = new Set();\r\n            const movedStyles = new Set();\r\n            const prevStyles = getPrevStyles(root);\r\n            styles.forEach((s) => {\r\n                if (!prevStyles.has(s)) {\r\n                    createdStyles.add(s);\r\n                }\r\n            });\r\n            prevStyles.forEach((s) => {\r\n                if (!styles.has(s)) {\r\n                    removedStyles.add(s);\r\n                }\r\n            });\r\n            styles.forEach((s) => {\r\n                if (\r\n                    !createdStyles.has(s) &&\r\n                    !removedStyles.has(s) &&\r\n                    didStylePositionChange(s)\r\n                ) {\r\n                    movedStyles.add(s);\r\n                }\r\n            });\r\n            handleStyleOperations(root, {\r\n                createdStyles,\r\n                removedStyles,\r\n                movedStyles\r\n            });\r\n            deepObserve(root);\r\n            collectUndefinedElements(root);\r\n        }\r\n        function handleAttributeMutations(mutations) {\r\n            const updatedStyles = new Set();\r\n            const removedStyles = new Set();\r\n            mutations.forEach((m) => {\r\n                const {target} = m;\r\n                if (target.isConnected) {\r\n                    if (shouldManageStyle(target)) {\r\n                        updatedStyles.add(target);\r\n                    } else if (\r\n                        target instanceof HTMLLinkElement &&\r\n                        target.disabled\r\n                    ) {\r\n                        removedStyles.add(target);\r\n                    }\r\n                }\r\n            });\r\n            if (updatedStyles.size + removedStyles.size > 0) {\r\n                update({\r\n                    updated: Array.from(updatedStyles),\r\n                    created: [],\r\n                    removed: Array.from(removedStyles),\r\n                    moved: []\r\n                });\r\n            }\r\n        }\r\n        function observe(root) {\r\n            if (observedRoots.has(root)) {\r\n                return;\r\n            }\r\n            const treeObserver = createOptimizedTreeObserver(root, {\r\n                onMinorMutations: handleMinorTreeMutations,\r\n                onHugeMutations: handleHugeTreeMutations\r\n            });\r\n            const attrObserver = new MutationObserver(handleAttributeMutations);\r\n            attrObserver.observe(root, {\r\n                attributeFilter: [\"rel\", \"disabled\", \"media\", \"href\"],\r\n                subtree: true\r\n            });\r\n            observers.push(treeObserver, attrObserver);\r\n            observedRoots.add(root);\r\n        }\r\n        function subscribeForShadowRootChanges(node) {\r\n            const {shadowRoot} = node;\r\n            if (shadowRoot == null || observedRoots.has(shadowRoot)) {\r\n                return;\r\n            }\r\n            observe(shadowRoot);\r\n            shadowRootDiscovered(shadowRoot);\r\n        }\r\n        function deepObserve(node) {\r\n            iterateShadowHosts(node, subscribeForShadowRootChanges);\r\n        }\r\n        observe(document);\r\n        deepObserve(document.documentElement);\r\n        watchWhenCustomElementsDefined((hosts) => {\r\n            const newStyles = [];\r\n            hosts.forEach((host) =>\r\n                push(newStyles, getManageableStyles(host.shadowRoot))\r\n            );\r\n            update({created: newStyles, updated: [], removed: [], moved: []});\r\n            hosts.forEach((host) => {\r\n                const {shadowRoot} = host;\r\n                if (shadowRoot == null) {\r\n                    return;\r\n                }\r\n                subscribeForShadowRootChanges(host);\r\n                deepObserve(shadowRoot);\r\n                collectUndefinedElements(shadowRoot);\r\n            });\r\n        });\r\n        document.addEventListener(\"__darkreader__isDefined\", handleIsDefined);\r\n        collectUndefinedElements(document);\r\n    }\r\n    function resetObservers() {\r\n        observers.forEach((o) => o.disconnect());\r\n        observers.splice(0, observers.length);\r\n        observedRoots = new WeakSet();\r\n    }\r\n    function stopWatchingForStylePositions() {\r\n        resetObservers();\r\n        unsubscribeFromDefineCustomElements();\r\n    }\r\n\r\n    function watchForStyleChanges(currentStyles, update, shadowRootDiscovered) {\r\n        watchForStylePositions(currentStyles, update, shadowRootDiscovered);\r\n    }\r\n    function stopWatchingForStyleChanges() {\r\n        stopWatchingForStylePositions();\r\n    }\r\n\r\n    let canUseSheetProxy = false;\r\n    document.addEventListener(\r\n        \"__darkreader__inlineScriptsAllowed\",\r\n        () => (canUseSheetProxy = true),\r\n        {once: true}\r\n    );\r\n    const overrides = new WeakSet();\r\n    const overridesBySource = new WeakMap();\r\n    function canHaveAdoptedStyleSheets(node) {\r\n        return Array.isArray(node.adoptedStyleSheets);\r\n    }\r\n    function createAdoptedStyleSheetOverride(node) {\r\n        let cancelAsyncOperations = false;\r\n        function iterateSourceSheets(iterator) {\r\n            node.adoptedStyleSheets.forEach((sheet) => {\r\n                if (!overrides.has(sheet)) {\r\n                    iterator(sheet);\r\n                }\r\n            });\r\n        }\r\n        function injectSheet(sheet, override) {\r\n            const newSheets = [...node.adoptedStyleSheets];\r\n            const sheetIndex = newSheets.indexOf(sheet);\r\n            const overrideIndex = newSheets.indexOf(override);\r\n            if (overrideIndex >= 0) {\r\n                newSheets.splice(overrideIndex, 1);\r\n            }\r\n            newSheets.splice(sheetIndex + 1, 0, override);\r\n            node.adoptedStyleSheets = newSheets;\r\n        }\r\n        function clear() {\r\n            const newSheets = [...node.adoptedStyleSheets];\r\n            for (let i = newSheets.length - 1; i >= 0; i--) {\r\n                const sheet = newSheets[i];\r\n                if (overrides.has(sheet)) {\r\n                    newSheets.splice(i, 1);\r\n                }\r\n            }\r\n            if (node.adoptedStyleSheets.length !== newSheets.length) {\r\n                node.adoptedStyleSheets = newSheets;\r\n            }\r\n            sourceSheets = new WeakSet();\r\n            sourceDeclarations = new WeakSet();\r\n        }\r\n        const cleaners = [];\r\n        function destroy() {\r\n            cleaners.forEach((c) => c());\r\n            cleaners.splice(0);\r\n            cancelAsyncOperations = true;\r\n            clear();\r\n            if (frameId) {\r\n                cancelAnimationFrame(frameId);\r\n                frameId = null;\r\n            }\r\n        }\r\n        let rulesChangeKey = 0;\r\n        function getRulesChangeKey() {\r\n            let count = 0;\r\n            iterateSourceSheets((sheet) => {\r\n                count += sheet.cssRules.length;\r\n            });\r\n            if (count === 1) {\r\n                const rule = node.adoptedStyleSheets[0].cssRules[0];\r\n                return rule instanceof CSSStyleRule ? rule.style.length : count;\r\n            }\r\n            return count;\r\n        }\r\n        let sourceSheets = new WeakSet();\r\n        let sourceDeclarations = new WeakSet();\r\n        function render(theme, ignoreImageAnalysis) {\r\n            clear();\r\n            for (let i = node.adoptedStyleSheets.length - 1; i >= 0; i--) {\r\n                const sheet = node.adoptedStyleSheets[i];\r\n                if (overrides.has(sheet)) {\r\n                    continue;\r\n                }\r\n                sourceSheets.add(sheet);\r\n                const readyOverride = overridesBySource.get(sheet);\r\n                if (readyOverride) {\r\n                    rulesChangeKey = getRulesChangeKey();\r\n                    injectSheet(sheet, readyOverride);\r\n                    continue;\r\n                }\r\n                const rules = sheet.cssRules;\r\n                const override = new CSSStyleSheet();\r\n                overridesBySource.set(sheet, override);\r\n                iterateCSSRules(rules, (rule) =>\r\n                    sourceDeclarations.add(rule.style)\r\n                );\r\n                const prepareSheet = () => {\r\n                    for (let i = override.cssRules.length - 1; i >= 0; i--) {\r\n                        override.deleteRule(i);\r\n                    }\r\n                    override.insertRule(\"#__darkreader__adoptedOverride {}\");\r\n                    injectSheet(sheet, override);\r\n                    overrides.add(override);\r\n                    return override;\r\n                };\r\n                const sheetModifier = createStyleSheetModifier();\r\n                sheetModifier.modifySheet({\r\n                    prepareSheet,\r\n                    sourceCSSRules: rules,\r\n                    theme,\r\n                    ignoreImageAnalysis,\r\n                    force: false,\r\n                    isAsyncCancelled: () => cancelAsyncOperations\r\n                });\r\n            }\r\n            rulesChangeKey = getRulesChangeKey();\r\n        }\r\n        let callbackRequested = false;\r\n        function handleArrayChange(callback) {\r\n            if (callbackRequested) {\r\n                return;\r\n            }\r\n            callbackRequested = true;\r\n            queueMicrotask(() => {\r\n                callbackRequested = false;\r\n                const sheets = node.adoptedStyleSheets.filter(\r\n                    (s) => !overrides.has(s)\r\n                );\r\n                sheets.forEach((sheet) => overridesBySource.delete(sheet));\r\n                callback(sheets);\r\n            });\r\n        }\r\n        function checkForUpdates() {\r\n            return getRulesChangeKey() !== rulesChangeKey;\r\n        }\r\n        let frameId = null;\r\n        function watchUsingRAF(callback) {\r\n            frameId = requestAnimationFrame(() => {\r\n                if (canUseSheetProxy) {\r\n                    return;\r\n                }\r\n                if (checkForUpdates()) {\r\n                    handleArrayChange(callback);\r\n                }\r\n                watchUsingRAF(callback);\r\n            });\r\n        }\r\n        function addSheetChangeEventListener(type, listener) {\r\n            node.addEventListener(type, listener);\r\n            cleaners.push(() => node.removeEventListener(type, listener));\r\n        }\r\n        function watch(callback) {\r\n            const onAdoptedSheetsChange = () => {\r\n                canUseSheetProxy = true;\r\n                handleArrayChange(callback);\r\n            };\r\n            addSheetChangeEventListener(\r\n                \"__darkreader__adoptedStyleSheetsChange\",\r\n                onAdoptedSheetsChange\r\n            );\r\n            addSheetChangeEventListener(\r\n                \"__darkreader__adoptedStyleSheetChange\",\r\n                onAdoptedSheetsChange\r\n            );\r\n            addSheetChangeEventListener(\r\n                \"__darkreader__adoptedStyleDeclarationChange\",\r\n                onAdoptedSheetsChange\r\n            );\r\n            if (canUseSheetProxy) {\r\n                return;\r\n            }\r\n            watchUsingRAF(callback);\r\n        }\r\n        return {\r\n            render,\r\n            destroy,\r\n            watch\r\n        };\r\n    }\r\n    class StyleSheetCommandBuilder {\r\n        constructor(onChange) {\r\n            this.cssRules = [];\r\n            this.commands = [];\r\n            this.onChange = onChange;\r\n        }\r\n        insertRule(cssText, index = 0) {\r\n            this.commands.push({type: \"insert\", index, cssText});\r\n            this.cssRules.splice(\r\n                index,\r\n                0,\r\n                new StyleSheetCommandBuilder(this.onChange)\r\n            );\r\n            this.onChange();\r\n            return index;\r\n        }\r\n        deleteRule(index) {\r\n            this.commands.push({type: \"delete\", index});\r\n            this.cssRules.splice(index, 1);\r\n            this.onChange();\r\n        }\r\n        replaceSync(cssText) {\r\n            this.commands.splice(0);\r\n            this.commands.push({type: \"replace\", cssText});\r\n            if (cssText === \"\") {\r\n                this.cssRules.splice(0);\r\n            } else {\r\n                throw new Error(\r\n                    \"StyleSheetCommandBuilder.replaceSync() is not fully supported\"\r\n                );\r\n            }\r\n            this.onChange();\r\n        }\r\n        getDeepCSSCommands() {\r\n            const deep = [];\r\n            this.commands.forEach((command) => {\r\n                deep.push({\r\n                    type: command.type,\r\n                    cssText: command.type !== \"delete\" ? command.cssText : \"\",\r\n                    path: command.type === \"replace\" ? [] : [command.index]\r\n                });\r\n            });\r\n            this.cssRules.forEach((rule, i) => {\r\n                const childCommands = rule.getDeepCSSCommands();\r\n                childCommands.forEach((c) => c.path.unshift(i));\r\n            });\r\n            return deep;\r\n        }\r\n        clearDeepCSSCommands() {\r\n            this.commands.splice(0);\r\n            this.cssRules.forEach((rule) => rule.clearDeepCSSCommands());\r\n        }\r\n    }\r\n    function createAdoptedStyleSheetFallback(onChange) {\r\n        let cancelAsyncOperations = false;\r\n        let sourceCSSRules = [];\r\n        let lastTheme;\r\n        let lastIgnoreImageAnalysis;\r\n        function updateCSS(cssRules) {\r\n            sourceCSSRules = cssRules;\r\n            if (lastTheme && lastIgnoreImageAnalysis) {\r\n                render(lastTheme, lastIgnoreImageAnalysis);\r\n            }\r\n        }\r\n        const builder = new StyleSheetCommandBuilder(onChange);\r\n        function render(theme, ignoreImageAnalysis) {\r\n            lastTheme = theme;\r\n            lastIgnoreImageAnalysis = ignoreImageAnalysis;\r\n            const prepareSheet = () => {\r\n                builder.replaceSync(\"\");\r\n                return builder;\r\n            };\r\n            const sheetModifier = createStyleSheetModifier();\r\n            sheetModifier.modifySheet({\r\n                prepareSheet,\r\n                sourceCSSRules,\r\n                theme,\r\n                ignoreImageAnalysis,\r\n                force: false,\r\n                isAsyncCancelled: () => cancelAsyncOperations\r\n            });\r\n        }\r\n        function commands() {\r\n            const commands = builder.getDeepCSSCommands();\r\n            builder.clearDeepCSSCommands();\r\n            return commands;\r\n        }\r\n        function destroy() {\r\n            cancelAsyncOperations = true;\r\n        }\r\n        return {render, destroy, updateCSS, commands};\r\n    }\r\n\r\n    function injectProxy(\r\n        enableStyleSheetsProxy,\r\n        enableCustomElementRegistryProxy\r\n    ) {\r\n        document.dispatchEvent(\r\n            new CustomEvent(\"__darkreader__inlineScriptsAllowed\")\r\n        );\r\n        const cleaners = [];\r\n        function cleanUp() {\r\n            cleaners.forEach((clean) => clean());\r\n            cleaners.splice(0);\r\n        }\r\n        function documentEventListener(type, listener, options) {\r\n            document.addEventListener(type, listener, options);\r\n            cleaners.push(() => document.removeEventListener(type, listener));\r\n        }\r\n        function disableConflictingPlugins() {\r\n            const disableWPDarkMode = () => {\r\n                if (window?.WPDarkMode?.deactivate) {\r\n                    window.WPDarkMode.deactivate();\r\n                }\r\n            };\r\n            disableWPDarkMode();\r\n        }\r\n        documentEventListener(\"__darkreader__cleanUp\", cleanUp);\r\n        documentEventListener(\r\n            \"__darkreader__disableConflictingPlugins\",\r\n            disableConflictingPlugins\r\n        );\r\n        function overrideProperty(cls, prop, overrides) {\r\n            const proto = cls.prototype;\r\n            const oldDescriptor = Object.getOwnPropertyDescriptor(proto, prop);\r\n            const newDescriptor = oldDescriptor ? {...oldDescriptor} : {};\r\n            Object.keys(overrides).forEach((key) => {\r\n                const factory = overrides[key];\r\n                newDescriptor[key] = factory(oldDescriptor[key]);\r\n            });\r\n            Object.defineProperty(proto, prop, newDescriptor);\r\n            cleaners.push(() =>\r\n                Object.defineProperty(proto, prop, oldDescriptor)\r\n            );\r\n        }\r\n        function override(cls, prop, factory) {\r\n            overrideProperty(cls, prop, {value: factory});\r\n        }\r\n        function isDRElement(element) {\r\n            return element?.classList?.contains(\"darkreader\");\r\n        }\r\n        function isDRSheet(sheet) {\r\n            return isDRElement(sheet.ownerNode);\r\n        }\r\n        const updateSheetEvent = new CustomEvent(\"__darkreader__updateSheet\");\r\n        const adoptedSheetChangeEvent = new CustomEvent(\r\n            \"__darkreader__adoptedStyleSheetChange\"\r\n        );\r\n        const adoptedSheetOwners = new WeakMap();\r\n        const adoptedDeclarationSheets = new WeakMap();\r\n        function onAdoptedSheetChange(sheet) {\r\n            const owners = adoptedSheetOwners.get(sheet);\r\n            owners?.forEach((node) => {\r\n                if (node.isConnected) {\r\n                    node.dispatchEvent(adoptedSheetChangeEvent);\r\n                } else {\r\n                    owners.delete(node);\r\n                }\r\n            });\r\n        }\r\n        function reportSheetChange(sheet) {\r\n            if (sheet.ownerNode && !isDRSheet(sheet)) {\r\n                sheet.ownerNode.dispatchEvent(updateSheetEvent);\r\n            }\r\n            if (adoptedSheetOwners.has(sheet)) {\r\n                onAdoptedSheetChange(sheet);\r\n            }\r\n        }\r\n        function reportSheetChangeAsync(sheet, promise) {\r\n            const {ownerNode} = sheet;\r\n            if (\r\n                ownerNode &&\r\n                !isDRSheet(sheet) &&\r\n                promise &&\r\n                promise instanceof Promise\r\n            ) {\r\n                promise.then(() => ownerNode.dispatchEvent(updateSheetEvent));\r\n            }\r\n            if (adoptedSheetOwners.has(sheet)) {\r\n                if (promise && promise instanceof Promise) {\r\n                    promise.then(() => onAdoptedSheetChange(sheet));\r\n                }\r\n            }\r\n        }\r\n        override(\r\n            CSSStyleSheet,\r\n            \"addRule\",\r\n            (native) =>\r\n                function (selector, style, index) {\r\n                    native.call(this, selector, style, index);\r\n                    reportSheetChange(this);\r\n                    return -1;\r\n                }\r\n        );\r\n        override(\r\n            CSSStyleSheet,\r\n            \"insertRule\",\r\n            (native) =>\r\n                function (rule, index) {\r\n                    const returnValue = native.call(this, rule, index);\r\n                    reportSheetChange(this);\r\n                    return returnValue;\r\n                }\r\n        );\r\n        override(\r\n            CSSStyleSheet,\r\n            \"deleteRule\",\r\n            (native) =>\r\n                function (index) {\r\n                    native.call(this, index);\r\n                    reportSheetChange(this);\r\n                }\r\n        );\r\n        override(\r\n            CSSStyleSheet,\r\n            \"removeRule\",\r\n            (native) =>\r\n                function (index) {\r\n                    native.call(this, index);\r\n                    reportSheetChange(this);\r\n                }\r\n        );\r\n        override(\r\n            CSSStyleSheet,\r\n            \"replace\",\r\n            (native) =>\r\n                function (cssText) {\r\n                    const returnValue = native.call(this, cssText);\r\n                    reportSheetChangeAsync(this, returnValue);\r\n                    return returnValue;\r\n                }\r\n        );\r\n        override(\r\n            CSSStyleSheet,\r\n            \"replaceSync\",\r\n            (native) =>\r\n                function (cssText) {\r\n                    native.call(this, cssText);\r\n                    reportSheetChange(this);\r\n                }\r\n        );\r\n        const shouldWrapHTMLElement =\r\n            location.hostname === \"baidu.com\" ||\r\n            location.hostname.endsWith(\".baidu.com\");\r\n        if (shouldWrapHTMLElement) {\r\n            override(\r\n                Element,\r\n                \"getElementsByTagName\",\r\n                (native) =>\r\n                    function (tagName) {\r\n                        if (tagName !== \"style\") {\r\n                            return native.call(this, tagName);\r\n                        }\r\n                        const getCurrentElementValue = () => {\r\n                            const elements = native.call(this, tagName);\r\n                            return Object.setPrototypeOf(\r\n                                [...elements].filter(\r\n                                    (element) =>\r\n                                        element && !isDRElement(element)\r\n                                ),\r\n                                NodeList.prototype\r\n                            );\r\n                        };\r\n                        let elements = getCurrentElementValue();\r\n                        const nodeListBehavior = {\r\n                            get: function (_, property) {\r\n                                return getCurrentElementValue()[\r\n                                    Number(property) || property\r\n                                ];\r\n                            }\r\n                        };\r\n                        elements = new Proxy(elements, nodeListBehavior);\r\n                        return elements;\r\n                    }\r\n            );\r\n        }\r\n        const shouldProxyChildNodes = [\"brilliant.org\", \"www.vy.no\"].includes(\r\n            location.hostname\r\n        );\r\n        if (shouldProxyChildNodes) {\r\n            overrideProperty(Node, \"childNodes\", {\r\n                get: (native) =>\r\n                    function () {\r\n                        const childNodes = native.call(this);\r\n                        return Object.setPrototypeOf(\r\n                            [...childNodes].filter((element) => {\r\n                                return !isDRElement(element);\r\n                            }),\r\n                            NodeList.prototype\r\n                        );\r\n                    }\r\n            });\r\n        }\r\n        function resolveCustomElement(tag) {\r\n            customElements.whenDefined(tag).then(() => {\r\n                document.dispatchEvent(\r\n                    new CustomEvent(\"__darkreader__isDefined\", {detail: {tag}})\r\n                );\r\n            });\r\n        }\r\n        documentEventListener(\"__darkreader__addUndefinedResolver\", (e) =>\r\n            resolveCustomElement(e.detail.tag)\r\n        );\r\n        if (enableCustomElementRegistryProxy) {\r\n            override(\r\n                CustomElementRegistry,\r\n                \"define\",\r\n                (native) =>\r\n                    function (name, constructor, options) {\r\n                        resolveCustomElement(name);\r\n                        native.call(this, name, constructor, options);\r\n                    }\r\n            );\r\n        }\r\n        async function checkBlobURLSupport() {\r\n            const svg =\r\n                '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1\" height=\"1\"><rect width=\"1\" height=\"1\" fill=\"transparent\"/></svg>';\r\n            const bytes = new Uint8Array(svg.length);\r\n            for (let i = 0; i < svg.length; i++) {\r\n                bytes[i] = svg.charCodeAt(i);\r\n            }\r\n            const blob = new Blob([bytes], {type: \"image/svg+xml\"});\r\n            const objectURL = URL.createObjectURL(blob);\r\n            let blobURLAllowed;\r\n            try {\r\n                const image = new Image();\r\n                await new Promise((resolve, reject) => {\r\n                    image.onload = () => resolve();\r\n                    image.onerror = () => reject();\r\n                    image.src = objectURL;\r\n                });\r\n                blobURLAllowed = true;\r\n            } catch (err) {\r\n                blobURLAllowed = false;\r\n            }\r\n            document.dispatchEvent(\r\n                new CustomEvent(\"__darkreader__blobURLCheckResponse\", {\r\n                    detail: {blobURLAllowed}\r\n                })\r\n            );\r\n        }\r\n        documentEventListener(\r\n            \"__darkreader__blobURLCheckRequest\",\r\n            checkBlobURLSupport,\r\n            {once: true}\r\n        );\r\n        if (enableStyleSheetsProxy) {\r\n            overrideProperty(Document, \"styleSheets\", {\r\n                get: (native) =>\r\n                    function () {\r\n                        const getCurrentValue = () => {\r\n                            const docSheets = native.call(this);\r\n                            const filteredSheets = [...docSheets].filter(\r\n                                (styleSheet) =>\r\n                                    styleSheet.ownerNode &&\r\n                                    !isDRSheet(styleSheet)\r\n                            );\r\n                            filteredSheets.item = (item) =>\r\n                                filteredSheets[item];\r\n                            return Object.setPrototypeOf(\r\n                                filteredSheets,\r\n                                StyleSheetList.prototype\r\n                            );\r\n                        };\r\n                        let elements = getCurrentValue();\r\n                        const styleSheetListBehavior = {\r\n                            get: function (_, property) {\r\n                                return getCurrentValue()[property];\r\n                            }\r\n                        };\r\n                        elements = new Proxy(elements, styleSheetListBehavior);\r\n                        return elements;\r\n                    }\r\n            });\r\n        }\r\n        {\r\n            const adoptedSheetsSourceProxies = new WeakMap();\r\n            const adoptedSheetsProxySources = new WeakMap();\r\n            const adoptedSheetsChangeEvent = new CustomEvent(\r\n                \"__darkreader__adoptedStyleSheetsChange\"\r\n            );\r\n            const adoptedSheetOverrideCache = new WeakSet();\r\n            const adoptedSheetsSnapshots = new WeakMap();\r\n            const isDRAdoptedSheetOverride = (sheet) => {\r\n                if (!sheet || !sheet.cssRules) {\r\n                    return false;\r\n                }\r\n                if (adoptedSheetOverrideCache.has(sheet)) {\r\n                    return true;\r\n                }\r\n                if (\r\n                    sheet.cssRules.length > 0 &&\r\n                    sheet.cssRules[0].cssText.startsWith(\r\n                        \"#__darkreader__adoptedOverride\"\r\n                    )\r\n                ) {\r\n                    adoptedSheetOverrideCache.add(sheet);\r\n                    return true;\r\n                }\r\n                return false;\r\n            };\r\n            const areArraysEqual = (a, b) => {\r\n                return a.length === b.length && a.every((x, i) => x === b[i]);\r\n            };\r\n            const onAdoptedSheetsChange = (node) => {\r\n                const prev = adoptedSheetsSnapshots.get(node);\r\n                const curr = (node.adoptedStyleSheets || []).filter(\r\n                    (s) => !isDRAdoptedSheetOverride(s)\r\n                );\r\n                adoptedSheetsSnapshots.set(node, curr);\r\n                if (!prev || !areArraysEqual(prev, curr)) {\r\n                    curr.forEach((sheet) => {\r\n                        if (!adoptedSheetOwners.has(sheet)) {\r\n                            adoptedSheetOwners.set(sheet, new Set());\r\n                        }\r\n                        adoptedSheetOwners.get(sheet).add(node);\r\n                        for (const rule of sheet.cssRules) {\r\n                            const declaration = rule.style;\r\n                            if (declaration) {\r\n                                adoptedDeclarationSheets.set(\r\n                                    declaration,\r\n                                    sheet\r\n                                );\r\n                            }\r\n                        }\r\n                    });\r\n                    node.dispatchEvent(adoptedSheetsChangeEvent);\r\n                }\r\n            };\r\n            const proxyAdoptedSheetsArray = (node, source) => {\r\n                if (adoptedSheetsProxySources.has(source)) {\r\n                    return source;\r\n                }\r\n                if (adoptedSheetsSourceProxies.has(source)) {\r\n                    return adoptedSheetsSourceProxies.get(source);\r\n                }\r\n                const proxy = new Proxy(source, {\r\n                    deleteProperty(target, property) {\r\n                        delete target[property];\r\n                        return true;\r\n                    },\r\n                    set(target, property, value) {\r\n                        target[property] = value;\r\n                        if (property === \"length\") {\r\n                            onAdoptedSheetsChange(node);\r\n                        }\r\n                        return true;\r\n                    }\r\n                });\r\n                adoptedSheetsSourceProxies.set(source, proxy);\r\n                adoptedSheetsProxySources.set(proxy, source);\r\n                return proxy;\r\n            };\r\n            [Document, ShadowRoot].forEach((ctor) => {\r\n                overrideProperty(ctor, \"adoptedStyleSheets\", {\r\n                    get: (native) =>\r\n                        function () {\r\n                            const source = native.call(this);\r\n                            return proxyAdoptedSheetsArray(this, source);\r\n                        },\r\n                    set: (native) =>\r\n                        function (source) {\r\n                            if (adoptedSheetsProxySources.has(source)) {\r\n                                source = adoptedSheetsProxySources.get(source);\r\n                            }\r\n                            native.call(this, source);\r\n                            onAdoptedSheetsChange(this);\r\n                        }\r\n                });\r\n            });\r\n            const adoptedDeclarationChangeEvent = new CustomEvent(\r\n                \"__darkreader__adoptedStyleDeclarationChange\"\r\n            );\r\n            [\"setProperty\", \"removeProperty\"].forEach((key) => {\r\n                override(CSSStyleDeclaration, key, (native) => {\r\n                    return function (...args) {\r\n                        const returnValue = native.apply(this, args);\r\n                        const sheet = adoptedDeclarationSheets.get(this);\r\n                        if (sheet) {\r\n                            const owners = adoptedSheetOwners.get(sheet);\r\n                            if (owners) {\r\n                                owners.forEach((node) => {\r\n                                    node.dispatchEvent(\r\n                                        adoptedDeclarationChangeEvent\r\n                                    );\r\n                                });\r\n                            }\r\n                        }\r\n                        return returnValue;\r\n                    };\r\n                });\r\n            });\r\n        }\r\n    }\r\n\r\n    let documentVisibilityListener = null;\r\n    let documentIsVisible_ = !document.hidden;\r\n    const listenerOptions = {\r\n        capture: true,\r\n        passive: true\r\n    };\r\n    function watchForDocumentVisibility() {\r\n        document.addEventListener(\r\n            \"visibilitychange\",\r\n            documentVisibilityListener,\r\n            listenerOptions\r\n        );\r\n        window.addEventListener(\r\n            \"pageshow\",\r\n            documentVisibilityListener,\r\n            listenerOptions\r\n        );\r\n        window.addEventListener(\r\n            \"focus\",\r\n            documentVisibilityListener,\r\n            listenerOptions\r\n        );\r\n    }\r\n    function stopWatchingForDocumentVisibility() {\r\n        document.removeEventListener(\r\n            \"visibilitychange\",\r\n            documentVisibilityListener,\r\n            listenerOptions\r\n        );\r\n        window.removeEventListener(\r\n            \"pageshow\",\r\n            documentVisibilityListener,\r\n            listenerOptions\r\n        );\r\n        window.removeEventListener(\r\n            \"focus\",\r\n            documentVisibilityListener,\r\n            listenerOptions\r\n        );\r\n    }\r\n    function setDocumentVisibilityListener(callback) {\r\n        const alreadyWatching = Boolean(documentVisibilityListener);\r\n        documentVisibilityListener = () => {\r\n            if (!document.hidden) {\r\n                removeDocumentVisibilityListener();\r\n                callback();\r\n                documentIsVisible_ = true;\r\n            }\r\n        };\r\n        if (!alreadyWatching) {\r\n            watchForDocumentVisibility();\r\n        }\r\n    }\r\n    function removeDocumentVisibilityListener() {\r\n        stopWatchingForDocumentVisibility();\r\n        documentVisibilityListener = null;\r\n    }\r\n    function documentIsVisible() {\r\n        return documentIsVisible_;\r\n    }\r\n\r\n    const INSTANCE_ID = generateUID();\r\n    const styleManagers = new Map();\r\n    const adoptedStyleManagers = [];\r\n    const adoptedStyleFallbacks = new Map();\r\n    const adoptedStyleNodeIds = new WeakMap();\r\n    const adoptedStyleChangeTokens = new WeakMap();\r\n    let theme = null;\r\n    let fixes = null;\r\n    let isIFrame$1 = null;\r\n    let ignoredImageAnalysisSelectors = [];\r\n    let ignoredInlineSelectors = [];\r\n    function createOrUpdateStyle(className, root = document.head || document) {\r\n        let element = root.querySelector(`.${className}`);\r\n        if (!element) {\r\n            element = document.createElement(\"style\");\r\n            element.classList.add(\"darkreader\");\r\n            element.classList.add(className);\r\n            element.media = \"screen\";\r\n            element.textContent = \"\";\r\n        }\r\n        return element;\r\n    }\r\n    function createOrUpdateScript(className, root = document.head || document) {\r\n        let element = root.querySelector(`.${className}`);\r\n        if (!element) {\r\n            element = document.createElement(\"script\");\r\n            element.classList.add(\"darkreader\");\r\n            element.classList.add(className);\r\n        }\r\n        return element;\r\n    }\r\n    const nodePositionWatchers = new Map();\r\n    function setupNodePositionWatcher(node, alias) {\r\n        nodePositionWatchers.has(alias) &&\r\n            nodePositionWatchers.get(alias).stop();\r\n        nodePositionWatchers.set(alias, watchForNodePosition(node, \"head\"));\r\n    }\r\n    function stopStylePositionWatchers() {\r\n        forEach(nodePositionWatchers.values(), (watcher) => watcher.stop());\r\n        nodePositionWatchers.clear();\r\n    }\r\n    function createStaticStyleOverrides() {\r\n        const fallbackStyle = createOrUpdateStyle(\r\n            \"darkreader--fallback\",\r\n            document\r\n        );\r\n        fallbackStyle.textContent = getModifiedFallbackStyle(theme, {\r\n            strict: true\r\n        });\r\n        document.head.insertBefore(fallbackStyle, document.head.firstChild);\r\n        setupNodePositionWatcher(fallbackStyle, \"fallback\");\r\n        const userAgentStyle = createOrUpdateStyle(\"darkreader--user-agent\");\r\n        userAgentStyle.textContent = getModifiedUserAgentStyle(\r\n            theme,\r\n            isIFrame$1,\r\n            theme.styleSystemControls\r\n        );\r\n        document.head.insertBefore(userAgentStyle, fallbackStyle.nextSibling);\r\n        setupNodePositionWatcher(userAgentStyle, \"user-agent\");\r\n        const textStyle = createOrUpdateStyle(\"darkreader--text\");\r\n        if (theme.useFont || theme.textStroke > 0) {\r\n            textStyle.textContent = createTextStyle(theme);\r\n        } else {\r\n            textStyle.textContent = \"\";\r\n        }\r\n        document.head.insertBefore(textStyle, fallbackStyle.nextSibling);\r\n        setupNodePositionWatcher(textStyle, \"text\");\r\n        const invertStyle = createOrUpdateStyle(\"darkreader--invert\");\r\n        if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) {\r\n            invertStyle.textContent = [\r\n                `${fixes.invert.join(\", \")} {`,\r\n                `    filter: ${getCSSFilterValue({\r\n                    ...theme,\r\n                    contrast:\r\n                        theme.mode === 0\r\n                            ? theme.contrast\r\n                            : clamp(theme.contrast - 10, 0, 100)\r\n                })} !important;`,\r\n                \"}\"\r\n            ].join(\"\\n\");\r\n        } else {\r\n            invertStyle.textContent = \"\";\r\n        }\r\n        document.head.insertBefore(invertStyle, textStyle.nextSibling);\r\n        setupNodePositionWatcher(invertStyle, \"invert\");\r\n        const inlineStyle = createOrUpdateStyle(\"darkreader--inline\");\r\n        inlineStyle.textContent = getInlineOverrideStyle();\r\n        document.head.insertBefore(inlineStyle, invertStyle.nextSibling);\r\n        setupNodePositionWatcher(inlineStyle, \"inline\");\r\n        const overrideStyle = createOrUpdateStyle(\"darkreader--override\");\r\n        overrideStyle.textContent =\r\n            fixes && fixes.css ? replaceCSSTemplates(fixes.css) : \"\";\r\n        document.head.appendChild(overrideStyle);\r\n        setupNodePositionWatcher(overrideStyle, \"override\");\r\n        const variableStyle = createOrUpdateStyle(\"darkreader--variables\");\r\n        const selectionColors = theme?.selectionColor\r\n            ? getSelectionColor(theme)\r\n            : null;\r\n        const neutralBackgroundColor = modifyBackgroundColor(\r\n            parseColorWithCache(\"#ffffff\"),\r\n            theme\r\n        );\r\n        const neutralTextColor = modifyForegroundColor(\r\n            parseColorWithCache(\"#000000\"),\r\n            theme\r\n        );\r\n        variableStyle.textContent = [\r\n            `:root {`,\r\n            `   --darkreader-neutral-background: ${neutralBackgroundColor};`,\r\n            `   --darkreader-neutral-text: ${neutralTextColor};`,\r\n            `   --darkreader-selection-background: ${selectionColors?.backgroundColorSelection ?? \"initial\"};`,\r\n            `   --darkreader-selection-text: ${selectionColors?.foregroundColorSelection ?? \"initial\"};`,\r\n            `}`\r\n        ].join(\"\\n\");\r\n        document.head.insertBefore(variableStyle, inlineStyle.nextSibling);\r\n        setupNodePositionWatcher(variableStyle, \"variables\");\r\n        const rootVarsStyle = createOrUpdateStyle(\"darkreader--root-vars\");\r\n        document.head.insertBefore(rootVarsStyle, variableStyle.nextSibling);\r\n        const enableStyleSheetsProxy = !(\r\n            fixes && fixes.disableStyleSheetsProxy\r\n        );\r\n        const enableCustomElementRegistryProxy = !(\r\n            fixes && fixes.disableCustomElementRegistryProxy\r\n        );\r\n        document.dispatchEvent(new CustomEvent(\"__darkreader__cleanUp\"));\r\n        {\r\n            const proxyScript = createOrUpdateScript(\"darkreader--proxy\");\r\n            proxyScript.append(\r\n                `(${injectProxy})(${enableStyleSheetsProxy}, ${enableCustomElementRegistryProxy})`\r\n            );\r\n            document.head.insertBefore(proxyScript, rootVarsStyle.nextSibling);\r\n            proxyScript.remove();\r\n        }\r\n    }\r\n    const shadowRootsWithOverrides = new Set();\r\n    function createShadowStaticStyleOverridesInner(root) {\r\n        const inlineStyle = createOrUpdateStyle(\"darkreader--inline\", root);\r\n        inlineStyle.textContent = getInlineOverrideStyle();\r\n        root.insertBefore(inlineStyle, root.firstChild);\r\n        const overrideStyle = createOrUpdateStyle(\"darkreader--override\", root);\r\n        overrideStyle.textContent =\r\n            fixes && fixes.css ? replaceCSSTemplates(fixes.css) : \"\";\r\n        root.insertBefore(overrideStyle, inlineStyle.nextSibling);\r\n        const invertStyle = createOrUpdateStyle(\"darkreader--invert\", root);\r\n        if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) {\r\n            invertStyle.textContent = [\r\n                `${fixes.invert.join(\", \")} {`,\r\n                `    filter: ${getCSSFilterValue({\r\n                    ...theme,\r\n                    contrast:\r\n                        theme.mode === 0\r\n                            ? theme.contrast\r\n                            : clamp(theme.contrast - 10, 0, 100)\r\n                })} !important;`,\r\n                \"}\"\r\n            ].join(\"\\n\");\r\n        } else {\r\n            invertStyle.textContent = \"\";\r\n        }\r\n        root.insertBefore(invertStyle, overrideStyle.nextSibling);\r\n        shadowRootsWithOverrides.add(root);\r\n    }\r\n    function delayedCreateShadowStaticStyleOverrides(root) {\r\n        const observer = new MutationObserver((mutations, observer) => {\r\n            observer.disconnect();\r\n            for (const {type, removedNodes} of mutations) {\r\n                if (type === \"childList\") {\r\n                    for (const {nodeName, className} of removedNodes) {\r\n                        if (\r\n                            nodeName === \"STYLE\" &&\r\n                            [\r\n                                \"darkreader darkreader--inline\",\r\n                                \"darkreader darkreader--override\",\r\n                                \"darkreader darkreader--invert\"\r\n                            ].includes(className)\r\n                        ) {\r\n                            createShadowStaticStyleOverridesInner(root);\r\n                            return;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        });\r\n        observer.observe(root, {childList: true});\r\n    }\r\n    function createShadowStaticStyleOverrides(root) {\r\n        const delayed = root.firstChild === null;\r\n        createShadowStaticStyleOverridesInner(root);\r\n        if (delayed) {\r\n            delayedCreateShadowStaticStyleOverrides(root);\r\n        }\r\n    }\r\n    function replaceCSSTemplates($cssText) {\r\n        return $cssText.replace(/\\${(.+?)}/g, (_, $color) => {\r\n            const color = parseColorWithCache($color);\r\n            if (color) {\r\n                const lightness = getSRGBLightness(color.r, color.g, color.b);\r\n                if (lightness > 0.5) {\r\n                    return modifyBackgroundColor(color, theme);\r\n                }\r\n                return modifyForegroundColor(color, theme);\r\n            }\r\n            return $color;\r\n        });\r\n    }\r\n    function cleanFallbackStyle() {\r\n        const fallback = document.querySelector(\".darkreader--fallback\");\r\n        if (fallback) {\r\n            fallback.textContent = \"\";\r\n        }\r\n    }\r\n    function createDynamicStyleOverrides() {\r\n        cancelRendering();\r\n        const allStyles = getManageableStyles(document);\r\n        const newManagers = allStyles\r\n            .filter((style) => !styleManagers.has(style))\r\n            .map((style) => createManager(style));\r\n        newManagers\r\n            .map((manager) => manager.details({secondRound: false}))\r\n            .filter((detail) => detail && detail.rules.length > 0)\r\n            .forEach((detail) => {\r\n                variablesStore.addRulesForMatching(detail.rules);\r\n            });\r\n        variablesStore.matchVariablesAndDependents();\r\n        variablesStore.setOnRootVariableChange(() => {\r\n            const rootVarsStyle = createOrUpdateStyle(\"darkreader--root-vars\");\r\n            variablesStore.putRootVars(rootVarsStyle, theme);\r\n        });\r\n        const rootVarsStyle = createOrUpdateStyle(\"darkreader--root-vars\");\r\n        variablesStore.putRootVars(rootVarsStyle, theme);\r\n        styleManagers.forEach((manager) =>\r\n            manager.render(theme, ignoredImageAnalysisSelectors)\r\n        );\r\n        if (loadingStyles.size === 0) {\r\n            cleanFallbackStyle();\r\n        }\r\n        newManagers.forEach((manager) => manager.watch());\r\n        const inlineStyleElements = toArray(\r\n            document.querySelectorAll(INLINE_STYLE_SELECTOR)\r\n        );\r\n        iterateShadowHosts(document.documentElement, (host) => {\r\n            createShadowStaticStyleOverrides(host.shadowRoot);\r\n            const elements = host.shadowRoot.querySelectorAll(\r\n                INLINE_STYLE_SELECTOR\r\n            );\r\n            if (elements.length > 0) {\r\n                push(inlineStyleElements, elements);\r\n            }\r\n        });\r\n        inlineStyleElements.forEach((el) =>\r\n            overrideInlineStyle(\r\n                el,\r\n                theme,\r\n                ignoredInlineSelectors,\r\n                ignoredImageAnalysisSelectors\r\n            )\r\n        );\r\n        handleAdoptedStyleSheets(document);\r\n        variablesStore.matchVariablesAndDependents();\r\n        if (isFirefox) {\r\n            const MATCH_VAR = Symbol();\r\n            const onAdoptedCSSChange = (e) => {\r\n                const {node, id, cssRules, entries} = e.detail;\r\n                if (Array.isArray(entries)) {\r\n                    entries.forEach((e) => {\r\n                        const cssRules = e[2];\r\n                        variablesStore.addRulesForMatching(cssRules);\r\n                    });\r\n                    variablesStore.matchVariablesAndDependents();\r\n                } else if (cssRules) {\r\n                    variablesStore.addRulesForMatching(cssRules);\r\n                    requestAnimationFrameOnce(MATCH_VAR, () =>\r\n                        variablesStore.matchVariablesAndDependents()\r\n                    );\r\n                }\r\n                const tuples = Array.isArray(entries)\r\n                    ? entries\r\n                    : node && cssRules\r\n                      ? [[node, id, cssRules]]\r\n                      : [];\r\n                tuples.forEach(([node, id, cssRules]) => {\r\n                    adoptedStyleNodeIds.set(node, id);\r\n                    const fallback = getAdoptedStyleSheetFallback(node);\r\n                    fallback.updateCSS(cssRules);\r\n                });\r\n            };\r\n            document.addEventListener(\r\n                \"__darkreader__adoptedStyleSheetsChange\",\r\n                onAdoptedCSSChange\r\n            );\r\n            cleaners.push(() =>\r\n                document.removeEventListener(\r\n                    \"__darkreader__adoptedStyleSheetsChange\",\r\n                    onAdoptedCSSChange\r\n                )\r\n            );\r\n            document.dispatchEvent(\r\n                new CustomEvent(\"__darkreader__startAdoptedStyleSheetsWatcher\")\r\n            );\r\n        }\r\n    }\r\n    let loadingStylesCounter = 0;\r\n    const loadingStyles = new Set();\r\n    function createManager(element) {\r\n        const loadingStyleId = ++loadingStylesCounter;\r\n        function loadingStart() {\r\n            if (!isDOMReady() || !documentIsVisible()) {\r\n                loadingStyles.add(loadingStyleId);\r\n                logInfo(\r\n                    `Current amount of styles loading: ${loadingStyles.size}`\r\n                );\r\n                const fallbackStyle = document.querySelector(\r\n                    \".darkreader--fallback\"\r\n                );\r\n                if (!fallbackStyle.textContent) {\r\n                    fallbackStyle.textContent = getModifiedFallbackStyle(\r\n                        theme,\r\n                        {strict: false}\r\n                    );\r\n                }\r\n            }\r\n        }\r\n        function loadingEnd() {\r\n            loadingStyles.delete(loadingStyleId);\r\n            logInfo(\r\n                `Removed loadingStyle ${loadingStyleId}, now awaiting: ${loadingStyles.size}`\r\n            );\r\n            if (loadingStyles.size === 0 && isDOMReady()) {\r\n                cleanFallbackStyle();\r\n            }\r\n        }\r\n        function update() {\r\n            const details = manager.details({secondRound: true});\r\n            if (!details) {\r\n                return;\r\n            }\r\n            variablesStore.addRulesForMatching(details.rules);\r\n            variablesStore.matchVariablesAndDependents();\r\n            manager.render(theme, ignoredImageAnalysisSelectors);\r\n        }\r\n        const manager = manageStyle(element, {\r\n            update,\r\n            loadingStart,\r\n            loadingEnd\r\n        });\r\n        styleManagers.set(element, manager);\r\n        return manager;\r\n    }\r\n    function removeManager(element) {\r\n        const manager = styleManagers.get(element);\r\n        if (manager) {\r\n            manager.destroy();\r\n            styleManagers.delete(element);\r\n        }\r\n    }\r\n    const throttledRenderAllStyles = throttle((callback) => {\r\n        styleManagers.forEach((manager) =>\r\n            manager.render(theme, ignoredImageAnalysisSelectors)\r\n        );\r\n        adoptedStyleManagers.forEach((manager) =>\r\n            manager.render(theme, ignoredImageAnalysisSelectors)\r\n        );\r\n        callback && callback();\r\n    });\r\n    const cancelRendering = function () {\r\n        throttledRenderAllStyles.cancel();\r\n    };\r\n    function onDOMReady() {\r\n        if (loadingStyles.size === 0) {\r\n            cleanFallbackStyle();\r\n            return;\r\n        }\r\n    }\r\n    function runDynamicStyle() {\r\n        createDynamicStyleOverrides();\r\n        watchForUpdates();\r\n    }\r\n    function createThemeAndWatchForUpdates() {\r\n        createStaticStyleOverrides();\r\n        if (!documentIsVisible() && !theme.immediateModify) {\r\n            setDocumentVisibilityListener(runDynamicStyle);\r\n        } else {\r\n            runDynamicStyle();\r\n        }\r\n        changeMetaThemeColorWhenAvailable(theme);\r\n    }\r\n    function handleAdoptedStyleSheets(node) {\r\n        if (isFirefox) {\r\n            const fallback = getAdoptedStyleSheetFallback(node);\r\n            fallback.render(theme, ignoredImageAnalysisSelectors);\r\n            return;\r\n        }\r\n        if (canHaveAdoptedStyleSheets(node)) {\r\n            node.adoptedStyleSheets.forEach((s) => {\r\n                variablesStore.addRulesForMatching(s.cssRules);\r\n            });\r\n            const newManger = createAdoptedStyleSheetOverride(node);\r\n            adoptedStyleManagers.push(newManger);\r\n            newManger.render(theme, ignoredImageAnalysisSelectors);\r\n            newManger.watch((sheets) => {\r\n                sheets.forEach((s) => {\r\n                    variablesStore.addRulesForMatching(s.cssRules);\r\n                });\r\n                variablesStore.matchVariablesAndDependents();\r\n                newManger.render(theme, ignoredImageAnalysisSelectors);\r\n            });\r\n        }\r\n    }\r\n    function getAdoptedStyleChangeToken(node) {\r\n        if (adoptedStyleChangeTokens.has(node)) {\r\n            return adoptedStyleChangeTokens.get(node);\r\n        }\r\n        const token = Symbol();\r\n        adoptedStyleChangeTokens.set(node, token);\r\n        return token;\r\n    }\r\n    function getAdoptedStyleSheetFallback(node) {\r\n        let fallback = adoptedStyleFallbacks.get(node);\r\n        if (!fallback) {\r\n            fallback = createAdoptedStyleSheetFallback(() => {\r\n                const token = getAdoptedStyleChangeToken(node);\r\n                requestAnimationFrameOnce(token, () => {\r\n                    const id = adoptedStyleNodeIds.get(node);\r\n                    const commands = fallback?.commands();\r\n                    if (!id || !commands) {\r\n                        return;\r\n                    }\r\n                    const data = {id, commands};\r\n                    document.dispatchEvent(\r\n                        new CustomEvent(\r\n                            \"__darkreader__adoptedStyleSheetCommands\",\r\n                            {detail: JSON.stringify(data)}\r\n                        )\r\n                    );\r\n                });\r\n            });\r\n            adoptedStyleFallbacks.set(node, fallback);\r\n        }\r\n        return fallback;\r\n    }\r\n    function watchForUpdates() {\r\n        const managedStyles = Array.from(styleManagers.keys());\r\n        watchForStyleChanges(\r\n            managedStyles,\r\n            ({created, updated, removed, moved}) => {\r\n                const stylesToRemove = removed;\r\n                const stylesToManage = created\r\n                    .concat(updated)\r\n                    .concat(moved)\r\n                    .filter((style) => !styleManagers.has(style));\r\n                const stylesToRestore = moved.filter((style) =>\r\n                    styleManagers.has(style)\r\n                );\r\n                stylesToRemove.forEach((style) => removeManager(style));\r\n                const newManagers = stylesToManage.map((style) =>\r\n                    createManager(style)\r\n                );\r\n                newManagers\r\n                    .map((manager) => manager.details({secondRound: false}))\r\n                    .filter((detail) => detail && detail.rules.length > 0)\r\n                    .forEach((detail) => {\r\n                        variablesStore.addRulesForMatching(detail.rules);\r\n                    });\r\n                variablesStore.matchVariablesAndDependents();\r\n                newManagers.forEach((manager) =>\r\n                    manager.render(theme, ignoredImageAnalysisSelectors)\r\n                );\r\n                newManagers.forEach((manager) => manager.watch());\r\n                stylesToRestore.forEach((style) =>\r\n                    styleManagers.get(style).restore()\r\n                );\r\n            },\r\n            (shadowRoot) => {\r\n                createShadowStaticStyleOverrides(shadowRoot);\r\n                handleAdoptedStyleSheets(shadowRoot);\r\n            }\r\n        );\r\n        watchForInlineStyles(\r\n            (element) => {\r\n                overrideInlineStyle(\r\n                    element,\r\n                    theme,\r\n                    ignoredInlineSelectors,\r\n                    ignoredImageAnalysisSelectors\r\n                );\r\n                if (element === document.documentElement) {\r\n                    const styleAttr = element.getAttribute(\"style\") || \"\";\r\n                    if (styleAttr.includes(\"--\")) {\r\n                        variablesStore.matchVariablesAndDependents();\r\n                        const rootVarsStyle = createOrUpdateStyle(\r\n                            \"darkreader--root-vars\"\r\n                        );\r\n                        variablesStore.putRootVars(rootVarsStyle, theme);\r\n                    }\r\n                }\r\n            },\r\n            (root) => {\r\n                createShadowStaticStyleOverrides(root);\r\n                const inlineStyleElements = root.querySelectorAll(\r\n                    INLINE_STYLE_SELECTOR\r\n                );\r\n                if (inlineStyleElements.length > 0) {\r\n                    forEach(inlineStyleElements, (el) =>\r\n                        overrideInlineStyle(\r\n                            el,\r\n                            theme,\r\n                            ignoredInlineSelectors,\r\n                            ignoredImageAnalysisSelectors\r\n                        )\r\n                    );\r\n                }\r\n            }\r\n        );\r\n        addDOMReadyListener(onDOMReady);\r\n    }\r\n    function stopWatchingForUpdates() {\r\n        styleManagers.forEach((manager) => manager.pause());\r\n        stopStylePositionWatchers();\r\n        stopWatchingForStyleChanges();\r\n        stopWatchingForInlineStyles();\r\n        removeDOMReadyListener(onDOMReady);\r\n        cleanReadyStateCompleteListeners();\r\n    }\r\n    let metaObserver;\r\n    function addMetaListener() {\r\n        metaObserver = new MutationObserver(() => {\r\n            if (document.querySelector('meta[name=\"darkreader-lock\"]')) {\r\n                metaObserver.disconnect();\r\n                removeDynamicTheme();\r\n            }\r\n        });\r\n        metaObserver.observe(document.head, {childList: true, subtree: true});\r\n    }\r\n    function createDarkReaderInstanceMarker() {\r\n        const metaElement = document.createElement(\"meta\");\r\n        metaElement.name = \"darkreader\";\r\n        metaElement.content = INSTANCE_ID;\r\n        document.head.appendChild(metaElement);\r\n    }\r\n    function isDRLocked() {\r\n        return document.querySelector('meta[name=\"darkreader-lock\"]') != null;\r\n    }\r\n    function isAnotherDarkReaderInstanceActive() {\r\n        const meta = document.querySelector('meta[name=\"darkreader\"]');\r\n        if (meta) {\r\n            if (meta.content !== INSTANCE_ID) {\r\n                return true;\r\n            }\r\n            return false;\r\n        }\r\n        createDarkReaderInstanceMarker();\r\n        addMetaListener();\r\n        return false;\r\n    }\r\n    let interceptorAttempts = 2;\r\n    function interceptOldScript({success, failure}) {\r\n        if (--interceptorAttempts <= 0) {\r\n            failure();\r\n            return;\r\n        }\r\n        const oldMeta = document.head.querySelector('meta[name=\"darkreader\"]');\r\n        if (!oldMeta || oldMeta.content === INSTANCE_ID) {\r\n            return;\r\n        }\r\n        const lock = document.createElement(\"meta\");\r\n        lock.name = \"darkreader-lock\";\r\n        document.head.append(lock);\r\n        queueMicrotask(() => {\r\n            lock.remove();\r\n            success();\r\n        });\r\n    }\r\n    function disableConflictingPlugins() {\r\n        if (document.documentElement.hasAttribute(\"data-wp-dark-mode-preset\")) {\r\n            const disableWPDarkMode = () => {\r\n                document.dispatchEvent(\r\n                    new CustomEvent(\"__darkreader__disableConflictingPlugins\")\r\n                );\r\n                document.documentElement.classList.remove(\r\n                    \"wp-dark-mode-active\"\r\n                );\r\n                document.documentElement.removeAttribute(\r\n                    \"data-wp-dark-mode-active\"\r\n                );\r\n            };\r\n            disableWPDarkMode();\r\n            const observer = new MutationObserver(() => {\r\n                if (\r\n                    document.documentElement.classList.contains(\r\n                        \"wp-dark-mode-active\"\r\n                    ) ||\r\n                    document.documentElement.hasAttribute(\r\n                        \"data-wp-dark-mode-active\"\r\n                    )\r\n                ) {\r\n                    disableWPDarkMode();\r\n                }\r\n            });\r\n            observer.observe(document.documentElement, {\r\n                attributes: true,\r\n                attributeFilter: [\"class\", \"data-wp-dark-mode-active\"]\r\n            });\r\n        }\r\n    }\r\n    function createOrUpdateDynamicThemeInternal(\r\n        themeConfig,\r\n        dynamicThemeFixes,\r\n        iframe\r\n    ) {\r\n        theme = themeConfig;\r\n        fixes = dynamicThemeFixes;\r\n        if (fixes) {\r\n            ignoredImageAnalysisSelectors = Array.isArray(\r\n                fixes.ignoreImageAnalysis\r\n            )\r\n                ? fixes.ignoreImageAnalysis\r\n                : [];\r\n            ignoredInlineSelectors = Array.isArray(fixes.ignoreInlineStyle)\r\n                ? fixes.ignoreInlineStyle\r\n                : [];\r\n        } else {\r\n            ignoredImageAnalysisSelectors = [];\r\n            ignoredInlineSelectors = [];\r\n        }\r\n        if (theme.immediateModify) {\r\n            setIsDOMReady(() => {\r\n                return true;\r\n            });\r\n        }\r\n        isIFrame$1 = iframe;\r\n        const ready = () => {\r\n            const success = () => {\r\n                disableConflictingPlugins();\r\n                document.documentElement.setAttribute(\r\n                    \"data-darkreader-mode\",\r\n                    \"dynamic\"\r\n                );\r\n                document.documentElement.setAttribute(\r\n                    \"data-darkreader-scheme\",\r\n                    theme.mode ? \"dark\" : \"dimmed\"\r\n                );\r\n                createThemeAndWatchForUpdates();\r\n            };\r\n            const failure = () => {\r\n                removeDynamicTheme();\r\n            };\r\n            if (isDRLocked()) {\r\n                removeNode(document.querySelector(\".darkreader--fallback\"));\r\n            } else if (isAnotherDarkReaderInstanceActive()) {\r\n                interceptOldScript({\r\n                    success,\r\n                    failure\r\n                });\r\n            } else {\r\n                success();\r\n            }\r\n        };\r\n        if (document.head) {\r\n            ready();\r\n        } else {\r\n            if (!isFirefox) {\r\n                const fallbackStyle = createOrUpdateStyle(\r\n                    \"darkreader--fallback\"\r\n                );\r\n                document.documentElement.appendChild(fallbackStyle);\r\n                fallbackStyle.textContent = getModifiedFallbackStyle(theme, {\r\n                    strict: true\r\n                });\r\n            }\r\n            const headObserver = new MutationObserver(() => {\r\n                if (document.head) {\r\n                    headObserver.disconnect();\r\n                    ready();\r\n                }\r\n            });\r\n            headObserver.observe(document, {childList: true, subtree: true});\r\n        }\r\n    }\r\n    function removeProxy() {\r\n        document.dispatchEvent(new CustomEvent(\"__darkreader__cleanUp\"));\r\n        removeNode(document.head.querySelector(\".darkreader--proxy\"));\r\n    }\r\n    const cleaners = [];\r\n    function removeDynamicTheme() {\r\n        document.documentElement.removeAttribute(`data-darkreader-mode`);\r\n        document.documentElement.removeAttribute(`data-darkreader-scheme`);\r\n        cleanDynamicThemeCache();\r\n        removeNode(document.querySelector(\".darkreader--fallback\"));\r\n        if (document.head) {\r\n            restoreMetaThemeColor();\r\n            removeNode(document.head.querySelector(\".darkreader--user-agent\"));\r\n            removeNode(document.head.querySelector(\".darkreader--text\"));\r\n            removeNode(document.head.querySelector(\".darkreader--invert\"));\r\n            removeNode(document.head.querySelector(\".darkreader--inline\"));\r\n            removeNode(document.head.querySelector(\".darkreader--override\"));\r\n            removeNode(document.head.querySelector(\".darkreader--variables\"));\r\n            removeNode(document.head.querySelector(\".darkreader--root-vars\"));\r\n            removeNode(document.head.querySelector('meta[name=\"darkreader\"]'));\r\n            removeProxy();\r\n        }\r\n        shadowRootsWithOverrides.forEach((root) => {\r\n            removeNode(root.querySelector(\".darkreader--inline\"));\r\n            removeNode(root.querySelector(\".darkreader--override\"));\r\n        });\r\n        shadowRootsWithOverrides.clear();\r\n        forEach(styleManagers.keys(), (el) => removeManager(el));\r\n        loadingStyles.clear();\r\n        cleanLoadingLinks();\r\n        forEach(document.querySelectorAll(\".darkreader\"), removeNode);\r\n        adoptedStyleManagers.forEach((manager) => manager.destroy());\r\n        adoptedStyleManagers.splice(0);\r\n        adoptedStyleFallbacks.forEach((fallback) => fallback.destroy());\r\n        adoptedStyleFallbacks.clear();\r\n        metaObserver && metaObserver.disconnect();\r\n        cleaners.forEach((clean) => clean());\r\n        cleaners.splice(0);\r\n    }\r\n    function cleanDynamicThemeCache() {\r\n        variablesStore.clear();\r\n        parsedURLCache.clear();\r\n        removeDocumentVisibilityListener();\r\n        cancelRendering();\r\n        stopWatchingForUpdates();\r\n        cleanModificationCache();\r\n        clearColorCache();\r\n    }\r\n\r\n    function parseCSS(cssText) {\r\n        cssText = removeCSSComments(cssText);\r\n        cssText = cssText.trim();\r\n        if (!cssText) {\r\n            return [];\r\n        }\r\n        const rules = [];\r\n        const excludeRanges = getTokenExclusionRanges(cssText);\r\n        const bracketRanges = getAllOpenCloseRanges(\r\n            cssText,\r\n            \"{\",\r\n            \"}\",\r\n            excludeRanges\r\n        );\r\n        let ruleStart = 0;\r\n        bracketRanges.forEach((brackets) => {\r\n            const key = cssText.substring(ruleStart, brackets.start).trim();\r\n            const content = cssText.substring(\r\n                brackets.start + 1,\r\n                brackets.end - 1\r\n            );\r\n            if (key.startsWith(\"@\")) {\r\n                const typeEndIndex = key.search(/[\\s\\(]/);\r\n                const rule = {\r\n                    type:\r\n                        typeEndIndex < 0 ? key : key.substring(0, typeEndIndex),\r\n                    query:\r\n                        typeEndIndex < 0\r\n                            ? \"\"\r\n                            : key.substring(typeEndIndex).trim(),\r\n                    rules: parseCSS(content)\r\n                };\r\n                rules.push(rule);\r\n            } else {\r\n                const rule = {\r\n                    selectors: parseSelectors(key),\r\n                    declarations: parseDeclarations(content)\r\n                };\r\n                rules.push(rule);\r\n            }\r\n            ruleStart = brackets.end;\r\n        });\r\n        return rules;\r\n    }\r\n    function getAllOpenCloseRanges(\r\n        input,\r\n        openToken,\r\n        closeToken,\r\n        excludeRanges = []\r\n    ) {\r\n        const ranges = [];\r\n        let i = 0;\r\n        let range;\r\n        while (\r\n            (range = getOpenCloseRange(\r\n                input,\r\n                i,\r\n                openToken,\r\n                closeToken,\r\n                excludeRanges\r\n            ))\r\n        ) {\r\n            ranges.push(range);\r\n            i = range.end;\r\n        }\r\n        return ranges;\r\n    }\r\n    function getTokenExclusionRanges(cssText) {\r\n        const singleQuoteGoesFirst =\r\n            cssText.indexOf(\"'\") < cssText.indexOf('\"');\r\n        const firstQuote = singleQuoteGoesFirst ? \"'\" : '\"';\r\n        const secondQuote = singleQuoteGoesFirst ? '\"' : \"'\";\r\n        const excludeRanges = getAllOpenCloseRanges(\r\n            cssText,\r\n            firstQuote,\r\n            firstQuote\r\n        );\r\n        excludeRanges.push(\r\n            ...getAllOpenCloseRanges(\r\n                cssText,\r\n                secondQuote,\r\n                secondQuote,\r\n                excludeRanges\r\n            )\r\n        );\r\n        excludeRanges.push(\r\n            ...getAllOpenCloseRanges(cssText, \"[\", \"]\", excludeRanges)\r\n        );\r\n        excludeRanges.push(\r\n            ...getAllOpenCloseRanges(cssText, \"(\", \")\", excludeRanges)\r\n        );\r\n        return excludeRanges;\r\n    }\r\n    function parseSelectors(selectorText) {\r\n        const excludeRanges = getTokenExclusionRanges(selectorText);\r\n        return splitExcluding(selectorText, \",\", excludeRanges);\r\n    }\r\n    function parseDeclarations(cssDeclarationsText) {\r\n        const declarations = [];\r\n        const excludeRanges = getTokenExclusionRanges(cssDeclarationsText);\r\n        splitExcluding(cssDeclarationsText, \";\", excludeRanges).forEach(\r\n            (part) => {\r\n                const colonIndex = part.indexOf(\":\");\r\n                if (colonIndex > 0) {\r\n                    const importantIndex = part.indexOf(\"!important\");\r\n                    declarations.push({\r\n                        property: part.substring(0, colonIndex).trim(),\r\n                        value: part\r\n                            .substring(\r\n                                colonIndex + 1,\r\n                                importantIndex > 0\r\n                                    ? importantIndex\r\n                                    : part.length\r\n                            )\r\n                            .trim(),\r\n                        important: importantIndex > 0\r\n                    });\r\n                }\r\n            }\r\n        );\r\n        return declarations;\r\n    }\r\n    function isParsedStyleRule(rule) {\r\n        return \"selectors\" in rule;\r\n    }\r\n\r\n    function formatCSS(cssText) {\r\n        const parsed = parseCSS(cssText);\r\n        return formatParsedCSS(parsed);\r\n    }\r\n    function formatParsedCSS(parsed) {\r\n        const lines = [];\r\n        const tab = \"    \";\r\n        function formatRule(rule, indent) {\r\n            if (isParsedStyleRule(rule)) {\r\n                formatStyleRule(rule, indent);\r\n            } else {\r\n                formatAtRule(rule, indent);\r\n            }\r\n        }\r\n        function formatAtRule({type, query, rules}, indent) {\r\n            lines.push(`${indent}${type} ${query} {`);\r\n            rules.forEach((child) => formatRule(child, `${indent}${tab}`));\r\n            lines.push(`${indent}}`);\r\n        }\r\n        function formatStyleRule({selectors, declarations}, indent) {\r\n            const lastSelectorIndex = selectors.length - 1;\r\n            selectors.forEach((selector, i) => {\r\n                lines.push(\r\n                    `${indent}${selector}${i < lastSelectorIndex ? \",\" : \" {\"}`\r\n                );\r\n            });\r\n            const sorted = sortDeclarations(declarations);\r\n            sorted.forEach(({property, value, important}) => {\r\n                lines.push(\r\n                    `${indent}${tab}${property}: ${value}${important ? \" !important\" : \"\"};`\r\n                );\r\n            });\r\n            lines.push(`${indent}}`);\r\n        }\r\n        clearEmptyRules(parsed);\r\n        parsed.forEach((rule) => formatRule(rule, \"\"));\r\n        return lines.join(\"\\n\");\r\n    }\r\n    function sortDeclarations(declarations) {\r\n        const prefixRegex = /^-[a-z]-/;\r\n        return [...declarations].sort((a, b) => {\r\n            const aProp = a.property;\r\n            const bProp = b.property;\r\n            const aPrefix = aProp.match(prefixRegex)?.[0] ?? \"\";\r\n            const bPrefix = bProp.match(prefixRegex)?.[0] ?? \"\";\r\n            const aNorm = aPrefix ? aProp.replace(prefixRegex, \"\") : aProp;\r\n            const bNorm = bPrefix ? bProp.replace(prefixRegex, \"\") : bProp;\r\n            if (aNorm === bNorm) {\r\n                return aPrefix.localeCompare(bPrefix);\r\n            }\r\n            return aNorm.localeCompare(bNorm);\r\n        });\r\n    }\r\n    function clearEmptyRules(rules) {\r\n        for (let i = rules.length - 1; i >= 0; i--) {\r\n            const rule = rules[i];\r\n            if (isParsedStyleRule(rule)) {\r\n                if (rule.declarations.length === 0) {\r\n                    rules.splice(i, 1);\r\n                }\r\n            } else {\r\n                clearEmptyRules(rule.rules);\r\n                if (rule.rules.length === 0) {\r\n                    rules.splice(i, 1);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    const blobRegex = /url\\(\\\"(blob\\:.*?)\\\"\\)/g;\r\n    async function replaceBlobs(text) {\r\n        const promises = [];\r\n        getMatches(blobRegex, text, 1).forEach((url) => {\r\n            const promise = loadAsDataURL(url);\r\n            promises.push(promise);\r\n        });\r\n        const data = await Promise.all(promises);\r\n        return text.replace(blobRegex, () => `url(\"${data.shift()}\")`);\r\n    }\r\n    const banner = `/*\r\n                        _______\r\n                       /       \\\\\r\n                      .==.    .==.\r\n                     ((  ))==((  ))\r\n                    / \"==\"    \"==\"\\\\\r\n                   /____|| || ||___\\\\\r\n       ________     ____    ________  ___    ___\r\n       |  ___  \\\\   /    \\\\   |  ___  \\\\ |  |  /  /\r\n       |  |  \\\\  \\\\ /  /\\\\  \\\\  |  |  \\\\  \\\\|  |_/  /\r\n       |  |   )  /  /__\\\\  \\\\ |  |__/  /|  ___  \\\\\r\n       |  |__/  /  ______  \\\\|  ____  \\\\|  |  \\\\  \\\\\r\n_______|_______/__/ ____ \\\\__\\\\__|___\\\\__\\\\__|___\\\\__\\\\____\r\n|  ___  \\\\ |  ____/ /    \\\\   |  ___  \\\\ |  ____|  ___  \\\\\r\n|  |  \\\\  \\\\|  |___ /  /\\\\  \\\\  |  |  \\\\  \\\\|  |___|  |  \\\\  \\\\\r\n|  |__/  /|  ____/  /__\\\\  \\\\ |  |   )  |  ____|  |__/  /\r\n|  ____  \\\\|  |__/  ______  \\\\|  |__/  /|  |___|  ____  \\\\\r\n|__|   \\\\__\\\\____/__/      \\\\__\\\\_______/ |______|__|   \\\\__\\\\\r\n                https://darkreader.org\r\n*/\r\n\r\n/*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/main/LICENSE */\r\n`;\r\n    async function collectCSS() {\r\n        const css = [banner];\r\n        function addStaticCSS(selector, comment) {\r\n            const staticStyle = document.querySelector(selector);\r\n            if (staticStyle && staticStyle.textContent) {\r\n                css.push(`/* ${comment} */`);\r\n                css.push(staticStyle.textContent);\r\n                css.push(\"\");\r\n            }\r\n        }\r\n        addStaticCSS(\".darkreader--fallback\", \"Fallback Style\");\r\n        addStaticCSS(\".darkreader--user-agent\", \"User-Agent Style\");\r\n        addStaticCSS(\".darkreader--text\", \"Text Style\");\r\n        addStaticCSS(\".darkreader--invert\", \"Invert Style\");\r\n        addStaticCSS(\".darkreader--variables\", \"Variables Style\");\r\n        const modifiedCSS = [];\r\n        document.querySelectorAll(\".darkreader--sync\").forEach((element) => {\r\n            forEach(element.sheet.cssRules, (rule) => {\r\n                rule && rule.cssText && modifiedCSS.push(rule.cssText);\r\n            });\r\n        });\r\n        if (modifiedCSS.length) {\r\n            const formattedCSS = formatCSS(modifiedCSS.join(\"\\n\"));\r\n            css.push(\"/* Modified CSS */\");\r\n            css.push(await replaceBlobs(formattedCSS));\r\n            css.push(\"\");\r\n        }\r\n        addStaticCSS(\".darkreader--override\", \"Override Style\");\r\n        return css.join(\"\\n\");\r\n    }\r\n\r\n    let isDarkReaderEnabled = false;\r\n    const isIFrame = (() => {\r\n        try {\r\n            return window.self !== window.top;\r\n        } catch (err) {\r\n            console.warn(err);\r\n            return true;\r\n        }\r\n    })();\r\n    function enable(themeOptions = {}, fixes = null) {\r\n        const theme = {...DEFAULT_THEME, ...themeOptions};\r\n        if (theme.engine !== ThemeEngine.dynamicTheme) {\r\n            throw new Error(\"Theme engine is not supported.\");\r\n        }\r\n        createOrUpdateDynamicThemeInternal(theme, fixes, isIFrame);\r\n        isDarkReaderEnabled = true;\r\n    }\r\n    function isEnabled() {\r\n        return isDarkReaderEnabled;\r\n    }\r\n    function disable() {\r\n        removeDynamicTheme();\r\n        isDarkReaderEnabled = false;\r\n    }\r\n    const darkScheme = matchMedia(\"(prefers-color-scheme: dark)\");\r\n    let store = {\r\n        themeOptions: null,\r\n        fixes: null\r\n    };\r\n    function handleColorScheme() {\r\n        if (darkScheme.matches) {\r\n            enable(store.themeOptions, store.fixes);\r\n        } else {\r\n            disable();\r\n        }\r\n    }\r\n    function auto(themeOptions = {}, fixes = null) {\r\n        if (themeOptions) {\r\n            store = {themeOptions, fixes};\r\n            handleColorScheme();\r\n            if (isMatchMediaChangeEventListenerSupported) {\r\n                darkScheme.addEventListener(\"change\", handleColorScheme);\r\n            } else {\r\n                darkScheme.addListener(handleColorScheme);\r\n            }\r\n        } else {\r\n            if (isMatchMediaChangeEventListenerSupported) {\r\n                darkScheme.removeEventListener(\"change\", handleColorScheme);\r\n            } else {\r\n                darkScheme.removeListener(handleColorScheme);\r\n            }\r\n            disable();\r\n        }\r\n    }\r\n    async function exportGeneratedCSS() {\r\n        return await collectCSS();\r\n    }\r\n    const setFetchMethod = setFetchMethod$1;\r\n\r\n    exports.auto = auto;\r\n    exports.disable = disable;\r\n    exports.enable = enable;\r\n    exports.exportGeneratedCSS = exportGeneratedCSS;\r\n    exports.isEnabled = isEnabled;\r\n    exports.setFetchMethod = setFetchMethod;\r\n\r\n    Object.defineProperty(exports, \"__esModule\", {value: true});\r\n});\r\n"]}