HDrezka Improvement

HDrezka Improvement: cleanup, change content width, change player size, remove ads, remove blocks, restyle, subtitles (opensubtitles.com)

目前為 2023-05-27 提交的版本,檢視 最新版本

// ==UserScript==
// @name            HDrezka Improvement
// @name:en         HDrezka Improvement
// @name:uk         HDrezka Improvement
// @name:ru         HDrezka Improvement
// @namespace       http://tampermonkey.net/
// @version         1.32
// @description     HDrezka Improvement: cleanup, change content width, change player size, remove ads, remove blocks, restyle, subtitles (opensubtitles.com)
// @description:en  HDrezka Improvement: cleanup, change content width, change player size, remove ads, remove blocks, restyle, subtitles (opensubtitles.com)
// @description:uk  HDrezka Improvement: cleanup, change content width, change player size, remove ads, remove blocks, restyle, subtitles (opensubtitles.com)
// @description:ru  HDrezka Improvement: cleanup, change content width, change player size, remove ads, remove blocks, restyle, subtitles (opensubtitles.com)
// @author          rub4ek
// @match           http*://hdrezka*/*
// @match           http*://rezka.ag/*
// @match           http*://rezkify.com/*
// @match           http*://kinopub.me/*
// @icon            https://www.google.com/s2/favicons?domain=rezka.ag
// @grant           GM_info
// @grant           GM_addStyle
// @grant           GM_xmlhttpRequest
// @run-at          document-body
// @license         MIT
// ==/UserScript==

(function () {
    "use strict";

    /* ------------------------------------------------- */
    /* --------------GLOBAL----------------------------- */
    /* ------------------------------------------------- */

    let hc = {};

    /* ------------------------------------------------- */
    /* --------------DEBUG------------------------------ */
    /* ------------------------------------------------- */

    // unsafeWindow.hc = hc;

    /* ------------------------------------------------- */
    /* --------------IMAGES----------------------------- */
    /* ------------------------------------------------- */

    const images = {
        russia: "data:image/jpeg;base64,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f4lbGp77++dT/SVLqZ5KmZ0sri+Rxy5xPEldCJGEY9Efat1WrLFSbfq2wiIsjQEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEXOD3Jg9yA4Rc4PcuEAREQBFzgpg9yA4REQBFzgpg9yA4RECAIucHuKYPcUBwi5x5CmCgOEREARcjJTB7igOEXOCmD3IDhERAEXOD3LhAEREARc4PcmD3IDhERAEREAREQBERAEREAUj9HrZmzarrw6XdeDaf8TlquvEHW+4LRjdyOe9zz2KOFkV4Pr4ej8jVX1o0BIY6DrOzaI7+qf8AuLn7B1v+sR39U/8AcWZLeS5QGGh6Do7Nobv6p/7ioV86EuqoYXvs+srTXSN4tjqKaSnz/OG+FnQEQGp/afsr1vs6q2wapsVTRxSOLYqpuJKeU/wZG8M+Q4PkVkEYW4TVFhtGpbHVWW+0EFfb6qMsmgmblrh+YjmCOIPJaxekZszn2X7S6ywtdJNbZWCqts7xxfA4nAJ7XNILT5s9qAv3o9dGtm1bQL9TnVrrU5tdLSmD2D1vuAw729vjnvcsdikb7B1v+sR39U/9xX74PX4CZ/lup+pEsjUBqy6RGzBuyjXEWmG3h1236KOq68wdVjfc8bu7k8t3nntUaLJDwhfw6U/yLT/XlWN6Anno3dH1m1/Tl0ux1O60Ggq203Vij67fywOzneGOeFKn2Drf9Yjv6p/7ir/g2vg91R8qx/kWrKzsQGqrpAbN27LdoD9KNupum5SxVBnMPVZL8nG7k8sd6sKmhklmbHGxz3uOA0DJJU+9PrP2Qc+P3spPU5WVs8sjKeibdJ2Azy8Ysj3De/zlaLiuqMHJlpo+l1NTuVRh8X4IpFm0JVzNEtfUexWnjuAbz/0BVuPQlna0h81W/wAu+B6grpQ8Bk8FRTv60n1wer2vCWmUIJOnzPxZaNRoK2uafY9VUxuP4WHD1BWtqDStxtTDKQKinz+u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",
        arrow: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAABmJLR0QA/wD/AP+gvaeTAAABa0lEQVR4nO3awUrDQBSF4dMuGhc+uF0puK/v4KL4RPoARbLUxTRQi5nMJDPJvcn/gRsp5NyfWgSVAAAAAAAAAAAAAAAAAACYXSPpKOlL0qekp+v3UNBB0rukn7uvD0kPC+5alb7IxC5oKDKxC0iNTOwJciMTe4SxkYmdoZF0VjzkOfE1/OrXI+Wd3L1bc16LG2PCETvTlGDETlQiFLEHlAxE7B41whD7Ts0gxL6aI8TmY88ZYLOxlzh8c7GXPHgzsS0camFDVZYOtLSlKIuHWdw0ieWDLG/L4uEQDxujPB3gaesfHoe72+xu8A03290MjTB/g/mBGczeYnbYBOZuSv2XAI9/7jd126uVIZWkxH6pPWIv6TsywHvkzlDsi6RdzQF7SW3Pw9cSuROL3Sq0qOrtnwevLXKnL/Zpjoc/KsRuFX6EnrXOyJ1G4TP5onDzSaHBbKp+Rhm00/ZuBgAAAAAAAAAAAAAAAODKL8SQFSF3JeZKAAAAAElFTkSuQmCC",
        settings:
            "data:image/png;base64,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",
        settingsclose:
            "data:image/png;base64,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",
        imdb:
            /* https://icons8.com/icon/V0AXUEQxEIf5/imdb */
            "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAABmJLR0QA/wD/AP+gvaeTAAAEu0lEQVR4nO2czYscRRiHn+nxY7ORdc1ulGgQYoxGNwbEKIoHDxpQNGxEURQPQQ34D/gRCFE8hJCDIIoHz7noRTeCB4MmB0OMHxFRE0wkStCIGM0SV1fDJuOhetze2uqu/piZ7u35PfAyzLxVv3q73uma6uquASGEEEIIIYQQQgghhBBCCCGEEEIIIUTdaCT4LgM2AuPAamA5sLgXQdWAv4CfgCPAbuBd4HTayouALcAk0JJ1xE4DLwADvs6/Evi0AgHX1b4Erk7q/BMVCLLudiLs6zksAj6rQHD9YgcJh6NmmIDngSfsrIiucRUwBexvYGY7PwCXlhpS/zEJXBMAD6LOL4NhYDwANpQdSR+zIQDGyo6ijxlrAH8Cl5QdSZ8y1cBMi7LyD7ATM3W9DXiWuVd508AO4BBwR+i/MIP+v8B2zHTtduZfRbbbPwDMRD4fAJYBK4H7gTUdOp6ukmce+5Sl8bTl32T57wPOptQ+C9xr1X/S034c1wG7gHMFj6eblqvSkBXwkOV3LdptAs57dM8zP3mEeknt+1gHHC9wPJVLgAufH2CrR3drQt00+kmMAh/HtOtrrzYJAHgtRvNNT72iCQDzzf7W0bavvVoloAlMWOUnmF0WicOnvwd4D3gVuJv4ex3XA3+n0KttAgAGMTOYVvg6mKJO1g47AFwbU3ZHCr17LHsA2Iz5Uf/D0d6CSgCYMXl3+JqGPN/Y33FfaA4DZzLGG2UxsI35Z9KCSkBW8iSgBXwHXOQo/5ZHLw23Aj8ntF2pBKxLeVBx5fImoAU84yj/uEcvLWsxqwmVT8CvmCvUJFaG5fLoJ8X7kaP8Wo9eFjZ72o+1vEsRrhlGK4X/GHAn8JvDvxTYD6wqoB/HqVA/ymgkDpfeHuv9NPAhZro8bfmawNfADQkxxNKrM6Dt+4T5s57B8PNO6LvM7jAwaz159D7H3MK12eKJofQhKOr/gNnZz9LwfSf1bTvqKL+igN5OR/lbPHUqlYAWZgXySPjaDf2oveEof1cBvZOO8qOeOpVLQK/0Z4AbHeVfLhCvb0hLbUFM43ViO3DY8fnGAppfOD5blleszmfAK4DrS7a+QLznwvo2D2U8xtoOQTPAXsyCnIsAc6cuT7y/AA/HlN/lOSanXRAjthBZj1n7+ZHkJ5FfAm5OqRflFPANc2+BtlkFPJJC00ldzoA0PIb7rlwRmpiLtjz9mHsIssfVIKO/0/o+Gpgb+3H3hvNORhrA6zGaXU2AvcS7xuO/qcv6SYwB72dsLw0jwDsZjqmjCdgLLAkDWQLss/z7Iv4Rh7+oftTvYgh4FHgbM2Znac/HauBFzO9M0c7PvRgH5uneY5gfINeDXVPA96E/z9amNPpfMfeiaAQzH7+C5O1Xce3ZelFGME81X55RN5EiCRAdIMBkXpTDmQD3wpLoDScD3OskojccDjBPJohymGhvUTqOeVRD9I5JYEUTc0MkIH7xSnSHbUQeFhhAG7R7af9vU42ijdq9MedG7WgSDlYgyLraIRL+qqDNAGbjdkfWOmS0wr58DrjY7uyk9ZJhzF/VjGMeOFqONvOlZYrZv6uZCG2y1IiEEEIIIYQQQgghhBBCCCGEEEIIIYQQPeM/uURowB/mrvMAAAAASUVORK5CYII=",
        expand: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAABmJLR0QA/wD/AP+gvaeTAAABSklEQVR4nO3cMUoDQQCF4afYihcwdc6uBKwtvJEKiQeIxdoZkiVZfZvk+2C6YZmZn2G7SQAAAAAAAAaLJKskmyRbY+/YJHlJsjzqpHdYJPmYwcbObXz+nN3JVjPYzLmO50OHe3NoQoYrdT9iHr9tkjzsmzAmwHaatVytvWd8+1+rYDcBygQou5vgG2P+I5fspH+kG1AmQJkAZQKUCVAmQJkAZQKUCVAmQJkAZQKUCVAmQJkAZQKUCVAmQJkAZQKUCVAmQJkAZQKUCVAmQJkAZQKUCVAmQJkAZQKUCVAmQJkAZQKUCVAmQJkAZQKUCVAmQJkAZQKUCVAmQJkAZVO8F+RNuRO4AWUClAlQNibA15+v4nKtD00YE+BtgoVcq9cpPrLM8BB1+x3mcxvvSR6POO+dFhkeol7PYGNzH+skT5nw8AEAAAAAgPP2DeBZieSycI1SAAAAAElFTkSuQmCC",
        pip: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAABmJLR0QA/wD/AP+gvaeTAAABZ0lEQVR4nO3cPU7DQBgG4QEhnAJOACfjDEBOxVX4qYCGgxD3oXCUyl5gid/YZh5pK8vS59FqK2tBkiRJkiRJkvSNFbAGXoAW2LrY7lo8A/dAU1135xp4n8BHTX297VpVWWHk38au2tnrCQw/t3U3FPO0EPqm8Ez9BpudFF7aABeHn2XRWuCy70Ep9HacWRavt2np6NABGTrk7NgDVCodeWOqPk7d0SGGDjF0iKFDDB1i6BBDhxg6xNAhhg4xdIihQwwdYugQQ4cYOsTQIYYOMXSIoUMMHWLoEEOHzPW/jtn9ruaODjF0iKFDDB1i6BBDhxg6xNAhhg4xdIihQwwdYugQQ4cYOsTQIYYOMXSIoUMMHVIK3camWI7PoQel0B8jDLJ0g81KoR9GGGTpqpo1dFeMHfvmrbmsV+C8JjR0l+YZ+2eRryob7zV097k90d0cduyPmsraAI/ALX/YyZIkSZIkSZL0T3wBF00Ny0RLG98AAAAASUVORK5CYII=",
        subtitles:
            "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAC9klEQVR4nO2aS2tTQRSAP7UvTH9AfZKNiBsFxUWqTelGNz5AWysIIvUPCAVd+PgBLupC6Eah4rL+AEFXhmK7cKELH+iqTbH+gARjYquLSXDuJPeRO/eRes8HQ3LmzOOck8zjzh0QBEEQBEEQhEyyw0c/BJwFxoA9QH8zvwo8A9405QngOpALqI+bBrABlIBXQC1MI9NAGfjjkn4CB4F8s4Nu9UmlNWCqW+cfBGz8DOofElafZLoX1PnpgA1+BHaj/tafQuiTTlvApOmsOQcMAd+A/VpeA1gAllFjG6CCGl8tOQcUgeGA+rjJAQVgBujT8svAIeCXW8WLOKNWB07HZmb8FFE/oO7Teb3Azg4VdBaApbisS4ASygedMV0wAzBiyMtRW5QCbw15ry6YAeg35CrbH9OHAV0wA5A5JABpG5A2mQ9An38RTwo4N00tqqgHoU6TaB44Duyy7LvFOharlU0AHgG3PPSfgZM4gzABvAQGLfrtxBwwG6aizRCY8dEfAU4ZedeI3nmAm2Er2gTgg4++Bnzpsk5Y3oetaDMErgC36TwHVFAHImtG/nzzc5To5oAy8DCitljE+eDQ9UFCDzKF06dFXZn5ZVACkLYBaSMBSNuAtLFZBkeAO8C+iGzZRB1ezDe/63i9V1hHLYM/wnRqE4AXRH9eeLX5+VjLy+O/fT4BjIfp0GYIHLWo68UxQz6M//bZrBMYmwA8tajrRg14buQtoR6svHgStkObITCLGgYHLNrQ2QTe0b59rqKeKt3eK5SBlbCd2p4HrNh03gVV1DwQOZlfBiUAaRuQNhIAQ24YclI3OuLEXDnqumAGYMOQC5Gbkzyjhvzdq/AFnKcnDdrfGG8nxml/PX5OL9DpgsRXnJub3/y7IFGJy9KIGUb98jdw7nVWUVtr1wsS0H6G9r+kLeBygOABcL8HDI7a+btBnW8xidqXp228bVoFLrk56XdRchB11a2Iuig54F28Z6ijZvsS8BqfMS8IgiAIgiAIGeQvDCyog3APYFUAAAAASUVORK5CYII=",
        collapse:
            "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAABmJLR0QA/wD/AP+gvaeTAAABxklEQVRoge2ay07CQBRAj/6EfpK4sGgwLPTbS8JTwD/AgIu2SUOn05nLPGq8J+mu93EYaDu9gKIoiqIoY+Yd+AY2wDRzLyZegR1wBGa3JrurE13q4wTMb00akDlVT01/xxBJ962ELtIFcKjjXgT1XOOvZS/Al6BehzdDYpv0pnXeWlDPJd4ke6p7DcLMUOAH+DSce7k6fBmKf+/p5UNQy4qrdEzhZLINLtKxhJPLNgxJxxDOJttgkw4tnF22oe9KGVrY5w4RHdNKhxbOvrLXDEn7MhrZZ2BhaSjFCpuOBTAROllZC5o5C+qcBXVWrsnvPRqRrNZeEHMQxERhApS4f+pbZNvJaR3rWqcEnoROiqIoiqIoiqJEwHc/vKOaIvhSUE0Q/uR+eCuosxPUGc1++FEQ8yCIiYLvfjjVK57k+2HTe+MYwn2zrKQMyYZe4azS/+pFvG38EVrYZ1QbhaFZT2hhyCjtMtiKIQwZpF2neLGEIaG0z8gypjAkkC4MBWxXyvbzdimo5xLfd4eQPLt3WBkS224LkzpmhewJyDXeJL0U1OvQHnuM/Y9pks1Kh4LqkysJ9JUJTEH1M1gi+yOcoiiKoiiJ+AW/ZiNhxuJ8eQAAAABJRU5ErkJggg==",
        next: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAABmJLR0QA/wD/AP+gvaeTAAACc0lEQVR4nO3cvW7UQBTF8T9IRNokJUj08ADwCqHhGeAdoKSEpAEkFIkWKniF0EAPSHkBEJt2ER+iSAdSxKTwWiHJjD22Z3yH9flJVynSHJ1Eu3e99oCIiIiIiIiIiIiIiIjYWQOeAl+Bn8AusGGaKM46sAMcAH+WP7eBmWWoJk8Ad2Y+AzctQ7VYBz5yPrcDPlBo2Qv8gX8D94ELdtGCdvBnrueRXbSwpsAOeANcMUvnd0Bz5rldtLC2oh3V6/ctq4AeRzTnPbKLFhZTtAP+As+p3jytxeQtTmzR9ewD102SnphE0Q44BO5ahF2aTNH1vAY2x488vaIdNjv3JIt2VDv3A+BiQZmLk6Loet4BVwvJXJyURTvgO3C7gMzFSV20I//OraLPTK6dW0V7JsfOraIbJuXOraJbJtXOraIjJsXOraI7zJCdW0V3nG/027lVdI/ps3Or6AGzD1xLmLk41gX/O7E7t4pONC9ofilR0Qlnd2DmJFLea1HkXx/4BVwO/C4mc5KOxrrAPnlTKPqVdYDUrF+LffMSvRlmHa13I4w+sGQefQQfYXRRaYTRZdLMowv/I4y+yhph9OVs5tHtBks5S+6yG6fOXJwcBeuWMI/UJffdjVNnLk7Kkt+i23aDUhSsG9EjDC1Zj1ZEGlKyHhbqoE/Bh8Adi7BLkyg6127cxUoXXe/Gl2xinrKyRS+ALauAHiv50P0e4fsrrLQdI/HFLlpY08Eo9yjzYJRtmot+aBct7DHng34CbliGajGjOtLHV/J7Cj3qZ43qXKUF8AN4xv9xeNWM6kifOdXhVXOq/+QiSxYREREREREREREREZmOY+Tk/DreSTOTAAAAAElFTkSuQmCC",
        play: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAABmJLR0QA/wD/AP+gvaeTAAADOElEQVR4nO2dPYxMURiGHxYrfkKzJKJgoxGEQiNCtAqNRHRKrVKiUohINHTYQu+vUS6JQhYbBZuN0PkJIRYRq1hrreLuTcbGzNzde855z8y8T/J0d3bu937JnJ0z554DxhhjjDHGmF5jSeC/txY4AhwCBoE+4BPwGLgJvA/8fmaOfuAM8B2YbeIUMARsEt1j17IReEjz4Oc7CZwF1ihutttYBYxSPfxGPwOngGXJ77qLGGJx4Tc6DhxOfePdwE7gN/UbUDoM7ElaQYdzkXDhl84AN4AtCevoWJ4RvgGlP4FzFP/WmiZ8I14DSifwQN2U2OE3+oLiC55pIGUDSkeAfSmK6wQUDZgF/lAM1Fvjl5g3qgaUTgGXgXWxC80VdQNKJ4DTFPNRPYU6+Pm+Ao4RfoY3W9SBN/MRsD9i3dmgDrqV5UA9GK36DFCHXMVyoF4fKQMp6nAX4he6cKBWh7oY3wAn6JKBWh1mHZ8AB8JHkhZ1iCG8C2wLHUwq1OGF8hdwFRgIG0981MGF9ivFQL0yZEgxUQcWy7d0yECtDiq2o8DBYGlFQB1QKoeBHYEyC4o6mJSWA/WGIMkFQh2Kwh8Uq/qyGKjVYSh9B5wEltZOsQbqEHLwKcVKcAnq4nNymGKlYFLURefmNHCBhDOu6oJz9QGJlt6rC83ZOzVyrYy6yNw9XiXEOvMdszVe2wuMAbvbXeQGxGU78LLVBdIvEj1A2zkkNyAubR80cQPEuAFxed3uAjcgLuPtLnAD4vGcYsFwS9yAeJyP/Qbqb5o5e6tGrpVRF5mr94HVNXKtjLrQ3Jym+NhZUSfUhaAuOCf9g4xI/yQp0j/Ki/SyFJFemCXUSxNFenGuSC9PF+kHNET6ESWhfkhPpB9TFekHtUV6qwKR3qxDpLerEeoNm0R6yzKR3rRPpLetFOmNW+dQhO+tixtIGbw37/4Pk8QP3tvXt2CMeMH7AIcKXCJ88DPAdWBzwjo6ll0UgYUK34f4LIIr1A/ex1jVYDkLO0WvUR/kFogB4B7Vg/dRhhHoo5iP+Ujz4KeAa/gwz38IPXPYDxwF9lIs1+6j+KgZAW4DHwK/nzHGGGOMMcZ0HH8B2KK9/+dC2k8AAAAASUVORK5CYII",
        replay: "data:image/png;base64,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",
        forward:
            "data:image/png;base64,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",
        loader: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAABmJLR0QA/wD/AP+gvaeTAAAEE0lEQVR4nO2cy04UQRSGPyYGXsCd0QgIS9EHwIWXeCHuvLL0slNfwhjxEZTElUYjShhwoyaoG8F4dwGuNYCKd1wIIYyL6nEmOJeq6uquruZ8SWXCTM85p/85c7pOdQ0gCIIgCIIgCIIgaNEGnAMmgd/RmATORq8JDtgAvAZKdcar6BghBm00FrlabMnsGJyjucjlccbQtpSjKp6iL/SEgV0pR6tYQF/oX5o2pRzVIAmhkyxHwZJE6UiqHAXNWdxnXxLfkuBpQ9VKnXraqmlThK7DBhqLbTpDkNLRgFZUaZhAZeQC8CR6TjeTyyRRjryTxaYgiXLklSw3Ba7LkTdCaApcliNvSFOQEnJlTwmTueqCpxgzQSFFXysp+soccYWeSujY3BFX6GsGx16P6WtNk7umIKIA9ANjwCywFD2OAsdJt+T+IzdNQUQH8JLGifMiOi51ctEUoMT7jN4s6hPQ7ifMsCnQPJNXj+d4KiMh04+ZyOVxzEewIXMXO6GLPoINmTnshJ7xEWzILGIn9B8d41LIK3y1fN8XnYNE6ArPLd/3TOcgEbrCDcv33XQaRRUF4DSqHS0Cp4CWpJylSAHV8ZnU52cklKwFVP+/2uFoUg5TpgPV8el2hpuTCuR0A8cnk3KaMu2oet0skxNtv0cbOM/TxL2A6viKqHnyYvQ4AhwlhW9vI6FHknYeMqafzKjla4IhBWpndZF8zDwSw0acFuAEcDD6ewy4ihJcEARhDbEHGATeUdkNOw1cAXZ7jCs3dAOPad4FPgK6PMUYPDuAb+iva3wDer1EGjDdmIlcHl+BLR7iDZZx7O6mlFClRtBgD/Yil8cuU6cuF0dagUuorVMzwADZ3DxzJCM2rBng/09+wGdAdXhH/IyeTj3qKmZrBDTnM6A6mGyerzeMN9WvcxB4mVprHXE3n28DDqOaho3AetRd5w/AA2AIeGNo08WajNd1nVql46KlrW7U+rZOdg1j1ky4KB1eN9W3osSeId7FsA/4idmJ/wAOaNofNLRda1y2OK9M0QcsY3fyy8B+DR+7Le1Xj51xT9Qn3Zhncq3M7tTw9SiGj/G4J+qbIvEzrQTc0fDVDsxb2A6+Bd+OG5FLqJlOj4bPXpRwJiIHv6h0AXdCl4Dzmn67gIca9sYJPJPLmPzUWWeY/hx6F2omMUXlNzhT0XNBX/hW8xG3Qmduc3hWtggs4nYBaomM/S+7rGxMtN0EXo95x/ZikxWhP2TcXmyyIvR9x/buObaXG7bhdh69Nd3ww2IYN0LfSjvw0OhCrVXEEfk7nn4MHxoHiLd6ty/9kMNlLyozTUT+RWV3q2BAJ2oVboXmF74hAigXWekM69EDHEIt1m+ics/wPeqe4W3grbfoBEEQBEEQBEEQ8sBfyQHftJOPyYMAAAAASUVORK5CYII=",
    };

    /* ------------------------------------------------- */
    /* --------------DOCUMENT--------------------------- */
    /* ------------------------------------------------- */

    function onDocumentStart() {
        initSettings();
        initPlayer();
        initContentSizeTumbler();
        initNavbarLinks();
        initStyleImprovements();
        initHideAds();
        initIMDbRating();
        initAutoPlayNext();
        initHidePlayerAds();
        initPlayerCover();
        initPlayerExtraControls();
        initHideInfo();
        initHideComments();
        initHideTranslators();
        initHotkeys();
        initHideRussian();
        initPlayerSubtitles();
    }

    function onDocumentEnd() {}

    document.addEventListener("DOMContentLoaded", onDocumentEnd);

    onDocumentStart();

    /* ------------------------------------------------- */
    /* --------------GLOBAL-STYLES---------------------- */
    /* ------------------------------------------------- */

    GM_addStyle(`

    /* css */

        /* Body background */
        /* Need it to fix background for not authenticated users */
        body.active-brand #wrapper {
            background-color: #efefef !important;
        }
        .b-seriesupdate__block_list_item {
            background-color: transparent !important;
        }

        /* Padding for content */
        .glory,
        .b-wrapper {
            padding-left: 30px !important;
            padding-right: 30px !important;
        }
        .glory {
            width: 960px !important;
        }
        .b-footer {
            width: auto !important;
        }
        .b-search__form.focused,
        .search-results {
            width: calc(100% - 60px);
            left: 30px;
        }
        .b-content__inline_items {
            padding-right: 16px;
            width: auto;
        }

        /* Remove extra right padding for content page */
        .b-content__columns {
            padding-right: 0 !important;
        }

        /* Remove extra right padding on main content listing */
        .b-content__inline_inner_mainprobar {
            padding-right: 0 !important;
        }
        .b-content__inline_inner_mainprobar .b-content__inline_item {
            margin-left: 16px !important;
        }

        /* Active brand fixes */
        body.active-brand,
        body.active-brand.pp {
            padding-top: 0 !important;
        }
        .active-brand #wrapper {
            width: auto !important;
        }

        /* Style status (HDrezka tracker block) */
        .b-post__status_wrapper {
            width: auto !important;
            margin: 0px 10px 0px 13px !important;
        }

        /* Style and resize rating block */
        .b-post__rating_table {
            width: 100% !important;
        }
        .b-post__rating_table td > * {
            float: right !important;
        }
        .b-post__rating_table .label {
            display: none !important;
        }

    /* Hide last episode info */
    .b-post__lastepisodeout {
        display: none !important;
    }

    /* Hide support block */
    .b-post__support_holder {
        display: none !important;
    }
    .b-post__support_holder_report .append {
        display: none !important;
    }

    /* Hide share label */
    .b-post__social_holder_wrapper .share-label {
        display: none !important;
    }

    /* Hide mixedtext */
    .b-post__mixedtext {
        text-indent: -9999px !important;
        padding: 0 !important;
    }

    /* !css */

    `);

    /* ------------------------------------------------- */
    /* --------------PLAYER----------------------------- */
    /* ------------------------------------------------- */

    function initPlayer() {
        GM_addStyle(`

        /* css */

        /* Style player */

        .b-player {
            padding-top: 0;
        }
        .b-player #cdnplayer-preloader {
            height: 100%;
            width: 100%;
        }
        .b-player .b-simple_seasons__list {
            padding: 10px;
        }
        .b-player .b-player__holder_cdn {
            height: auto !important;
        }
        .b-player .b-player__container_cdn {
            resize: vertical;
            overflow: auto;
            width: auto !important;
            min-height: 300px !important;
        }

        /* !css */

        `);

        hc.player = {};
        hc.player.start = start;
        hc.player.play = play;
        hc.player.pause = pause;
        hc.player.stop = stop;
        hc.player.next = next;
        hc.player.prev = prev;
        hc.player.toggle = toggle;
        hc.player.enterfullscreen = enterfullscreen;
        hc.player.exitfullscreen = exitfullscreen;
        hc.player.togglefullscreen = togglefullscreen;
        hc.player.poster = poster;
        hc.player.resize = resize;
        hc.player.mute = mute;
        hc.player.vast = vast;
        hc.player.seek = seek;
        hc.player.adjust = adjust;
        hc.player.subtitle = subtitle;

        hc.player.season = season;
        hc.player.episode = episode;

        hc.player.shoudvast = 0;
        hc.player.expanded = 0;
        hc.player.fullscreen = 0;

        setup();

        function setup() {
            window.addEventListener("message", function (event) {
                if (event.data) {
                    if (event.data.event == "init") {
                        document.querySelector("#cdnplayer").oncontextmenu = undefined;
                    }
                    if (event.data.event == "inited") {
                        poster("hc-poster");
                    }
                    if (
                        ["init", "inited", "new", "start", "started", "ended", "vast_time"].includes(event.data.event)
                    ) {
                        vast(hc.player.shoudvast);
                    }
                }
            });
        }

        function season() {
            const seasonItem = document.querySelector(".b-simple_season__item.active");
            if (seasonItem) {
                return seasonItem.innerText.split(" ")[1];
            }
        }

        function episode() {
            const seasonItem = document.querySelector(".b-simple_episode__item.active");
            if (seasonItem) {
                return seasonItem.innerText.split(" ")[1];
            }
        }

        function defined() {
            return typeof CDNPlayer != "undefined";
        }

        function start() {
            sof.tv.buildCDNPlayer();
            vast(hc.player.shoudvast);
            play();
        }

        function vast(value) {
            hc.player.shoudvast = value;
            if (defined()) {
                CDNPlayer.api("update:vast", value);
            }
        }

        function play() {
            vast(hc.player.shoudvast);
            if (defined()) {
                CDNPlayer.api("play");
            }
        }

        function pause() {
            if (defined()) {
                CDNPlayer.api("pause");
            }
        }

        function stop() {
            if (defined()) {
                CDNPlayer.api("stop");
            }
        }

        function toggle() {
            if (defined()) {
                if (!CDNPlayer.api("started")) {
                    play();
                } else {
                    vast(hc.player.shoudvast);
                    CDNPlayer.api("toggle");
                }
            }
        }

        function enterfullscreen() {
            if (defined()) {
                CDNPlayer.api("fullscreen");
            }
        }

        function exitfullscreen() {
            if (defined()) {
                CDNPlayer.api("exitfullscreen");
            }
        }

        function togglefullscreen() {
            if (hc.player.fullscreen) {
                exitfullscreen();
            } else {
                enterfullscreen();
            }
        }

        function poster(poster) {
            if (defined()) {
                CDNPlayer.api("poster", poster);
            }
        }

        function mute() {
            if (defined()) {
                if (!CDNPlayer.api("muted")) {
                    CDNPlayer.api("mute");
                } else {
                    CDNPlayer.api("unmute");
                }
            }
        }

        function sibling(direction) {
            const activeEpisode = document.querySelector(".b-simple_episode__item.active");
            if (activeEpisode && activeEpisode[direction]) {
                activeEpisode[direction].click();
                setTimeout(start, 1000);
            } else {
                const activeSeason = document.querySelector(".b-simple_season__item.active");
                if (activeSeason && activeSeason[direction]) {
                    activeSeason[direction].click();
                    setTimeout(start, 1000);
                }
            }
        }

        function next() {
            sibling("nextElementSibling");
        }

        function prev() {
            sibling("previousElementSibling");
        }

        function seek(seconds) {
            if (defined()) {
                CDNPlayer.api("seek", seconds);
            }
        }

        function adjust(seconds) {
            if (defined()) {
                const time = seconds + CDNPlayer.api("time");
                const duration = CDNPlayer.api("duration");
                if (time < duration) {
                    seek(time);
                } else {
                    seek(duration - 0.5);
                }
            }
        }

        function subtitle(url) {
            if (defined()) {
                CDNPlayer.api("subtitle", url);
            }
        }

        function calc(initialSize, newWidth, maxHeight) {
            let initialWidth = initialSize.width;
            let initialHeight = initialSize.height;

            let resizedWidth = initialSize.width;
            let resizedHeight = initialSize.height;

            if (initialHeight > 0 && initialWidth !== newWidth) {
                let ratio = initialWidth / initialHeight;
                resizedWidth = newWidth;
                resizedHeight = newWidth / ratio;
                if (resizedHeight > maxHeight) {
                    resizedHeight = maxHeight;
                    resizedWidth = maxHeight * ratio;
                }
            }

            return {
                width: resizedWidth,
                height: resizedHeight,
            };
        }

        function resize() {
            const contentMain = document.querySelector(".b-content__main");
            if (contentMain && !hc.player.fullscreen && !hc.player.expanded) {
                const playerHolder = document.querySelector(".b-player__holder_cdn");
                const playerContainer = document.querySelector(".b-player__container_cdn");
                if (playerHolder && playerContainer) {
                    const initial = {
                        width: playerHolder.offsetWidth,
                        height: playerHolder.offsetHeight,
                    };
                    const resized = calc(initial, contentMain.offsetWidth, window.innerHeight);

                    if (initial.width !== resized.width) {
                        playerHolder.style.width = resized.width + "px";
                        playerContainer.style.height = resized.height + "px";
                        console.log(
                            `Player resized ` +
                                `from ${initial.width}x${initial.height} ` +
                                `to ${resized.width}x${resized.height}.`
                        );
                    }

                    if (defined()) {
                        CDNPlayer.api("resize");
                    }
                }
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------CONTENT-SIZE----------------------- */
    /* ------------------------------------------------- */

    function initContentSizeTumbler() {
        GM_addStyle(`

        /* css */

        /* Content Size Tumbler */
        .hc-tumbler-content-size .hc-tumbler-point:nth-child(1) {
            border-width: 8px;
        }
        .hc-tumbler-content-size .hc-tumbler-point:nth-child(2) {
            border-width: 7px;
        }
        .hc-tumbler-content-size .hc-tumbler-point:nth-child(3) {
            border-width: 6px;
        }
        .hc-tumbler-content-size .hc-tumbler-point:nth-child(4) {
            border-width: 5px;
        }

        /* Content Sizes */

        body {
            min-width: 960px;
        }
        body.hc-content-size-wide .glory,
        body.hc-content-size-wide .b-newest_slider_wrapper,
        body.hc-content-size-wide .b-wrapper {
            width: auto !important;
            min-width: 960px;
            max-width: 1150px;
        }
        body.hc-content-size-ultrawide .glory,
        body.hc-content-size-ultrawide .b-newest_slider_wrapper,
        body.hc-content-size-ultrawide .b-wrapper {
            width: auto !important;
            min-width: 960px;
            max-width: 1340px;
        }
        body.hc-content-size-full .glory,
        body.hc-content-size-full .b-newest_slider_wrapper,
        body.hc-content-size-full .b-wrapper {
            min-width: 960px;
            width: auto !important;
        }

        /* Newest Slider */

        body.hc-content-size-wide .b-newest_slider_wrapper,
        body.hc-content-size-ultrawide .b-newest_slider_wrapper,
        body.hc-content-size-full .b-newest_slider_wrapper {
            margin: 0 auto;
            padding-left: 30px !important;
            padding-right: 30px !important;
            margin-bottom: 20px;
        }
        body.hc-content-size-wide .b-newest_slider_wrapper .cntrl,
        body.hc-content-size-ultrawide .b-newest_slider_wrapper .cntrl,
        body.hc-content-size-full .b-newest_slider_wrapper .cntrl {
            display: none;
        }
        body.hc-content-size-wide .b-newest_slider_wrapper .b-newest_slider,
        body.hc-content-size-ultrawide .b-newest_slider_wrapper .b-newest_slider,
        body.hc-content-size-full .b-newest_slider_wrapper .b-newest_slider {
            width: 100%;
            padding-left: 0;
            padding-right: 0;
            box-sizing: border-box;
        }
        body.hc-content-size-wide .b-newest_slider_wrapper .b-newest_slider .b-newest_slider__list,
        body.hc-content-size-ultrawide .b-newest_slider_wrapper .b-newest_slider .b-newest_slider__list,
        body.hc-content-size-full .b-newest_slider_wrapper .b-newest_slider .b-newest_slider__list {
            margin-left: -990px !important;
        }

        /* !css */

        `);

        settings();

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "content-size",
                    label: "Максимальная ширина контента",
                    classes: [],
                    options: [
                        {
                            class: null,
                            text: "960 px",
                            end: function () {
                                window.removeEventListener("resize", hc.player.resize);
                                hc.player.resize();
                            },
                        },
                        {
                            class: "hc-content-size-wide",
                            text: "1150 px",
                            end: function () {
                                window.removeEventListener("resize", hc.player.resize);
                                window.addEventListener("resize", hc.player.resize);
                                hc.player.resize();
                            },
                        },
                        {
                            class: "hc-content-size-ultrawide",
                            text: "1340 px",
                            end: function () {
                                window.removeEventListener("resize", hc.player.resize);
                                window.addEventListener("resize", hc.player.resize);
                                hc.player.resize();
                            },
                        },
                        {
                            class: "hc-content-size-full",
                            text: "100%",
                            end: function () {
                                window.removeEventListener("resize", hc.player.resize);
                                window.addEventListener("resize", hc.player.resize);
                                hc.player.resize();
                            },
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------NAVBAR-LINKS----------------------- */
    /* ------------------------------------------------- */

    function initNavbarLinks() {
        GM_addStyle(`

        /* css */

        /* !css */

        `);

        settings();

        function set(filter) {
            function replace(elem) {
                let url = new URL(elem.href);
                if (filter) {
                    url.search = new URLSearchParams({ filter: filter }).toString();
                } else {
                    url.search = "";
                }
                elem.href = url;
            }

            const navbar = document.querySelector(".b-topnav");
            if (navbar) {
                navbar.querySelectorAll(".b-topnav__item-link").forEach(replace);
                navbar.querySelectorAll(".b-topnav__sub_inner .left a").forEach(replace);
            }
        }

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "navbar-links",
                    label: "Ссылки в панели навигации",
                    classes: [],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                            end: function () {
                                set(null);
                            },
                        },
                        {
                            class: "hc-navbar-links-last",
                            text: "Последние поступления",
                            end: function () {
                                set("last");
                            },
                        },
                        {
                            class: "hc-navbar-links-popular",
                            text: "Популярные",
                            end: function () {
                                set("popular");
                            },
                        },
                        {
                            class: "hc-navbar-links-soon",
                            text: "В ожидании",
                            end: function () {
                                set("soon");
                            },
                        },
                        {
                            class: "hc-navbar-links-watching",
                            text: "Сейчас смотрят",
                            end: function () {
                                set("watching");
                            },
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------PLAYER-SUBTITLES------------------- */
    /* ------------------------------------------------- */
    function initPlayerSubtitles() {
        GM_addStyle(`

        /* css */

        /* Subtitles */

        .hc-subtitles-list-wrapper {
            position: absolute;
            left: 0;
            right: 0;
            bottom: 100px;
            max-height: calc(100% - 200px);
            box-sizing: border-box !important;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            overflow-y: auto;
            z-index: 1;
        }

        .hc-subtitles-list-container {
            height: 100%;
            box-sizing: border-box;
            overflow: hidden;
            overflow-y: auto;
            border-radius: 2.3px;
        }

        .hc-subtitles-error {
            padding: 20px;
            margin-bottom: 5px;
            box-sizing: border-box;
            border: 2px solid red;
            bottom: 0;
            max-height: 100%;
            font-size: 12px;
            background: rgba(23, 35, 34, .5);
            border-radius: 2.3px;
            left: 0;
            right: 0;
        }

        .hc-subtitles-list {
            bottom: 0;
        }

        /* Scrollbars */

        .hc-subtitles-list-wrapper {
            margin: 0 5px 0 10px;
        }

        .hc-subtitles-list-container {
            margin-right: 5px;
        }

        .hc-subtitles-error {
            margin-right: 5px;
        }

        .hc-subtitles-list-wrapper,
        .hc-subtitles-list-wrapper * {
            scrollbar-width: thin;
            scrollbar-color: rgba(23, 35, 34, .7) rgba(23, 35, 34, .5);
        }

        .hc-subtitles-list-wrapper::-webkit-scrollbar,
        .hc-subtitles-list-wrapper *::-webkit-scrollbar {
            width: 20px;
        }

        .hc-subtitles-list-wrapper::-webkit-scrollbar-track,
        .hc-subtitles-list-wrapper *::-webkit-scrollbar-track {
            background-color: transparent;
        }

        .hc-subtitles-list-wrapper::-webkit-scrollbar-thumb,
        .hc-subtitles-list-wrapper *::-webkit-scrollbar-thumb {
            background-color: rgba(23, 35, 34, .7);
            border-radius: 20px;
            border: 5px solid transparent;
            background-clip: padding-box;
        }

        /* Subtitles list */

        .hc-subtitles-list .hc-subtitles-head {
            font-size: 12px;
            background: rgba(23, 35, 34, .5);
            border-radius: 2.3px;
        }

        .hc-subtitles-list .hc-subtitles-item {
            position: relative;
            display: inline-block;
            cursor: pointer;
            pointer-events: all;
            width: 100%;
            box-sizing: border-box;
            margin-top: 5px;
            background: rgba(23, 35, 34, .7);
            border-radius: 2.3px;
            transition: opacity 0.1s linear 0s, background 0.1s linear 0s, transform 0.1s linear 0s;
            font-size: 12px;
        }

        .hc-subtitles-list .hc-subtitles-item:hover {
            background: rgba(0, 173, 239, .7);
        }

        .hc-subtitles-list .hc-subtitles-item.active {
            color: black;
        }

        .hc-subtitles-list .hc-subtitles-item.active {
            background: white;
            color: black;
        }

        .hc-subtitles-list .hc-subtitles-head .hc-subtitles-item-title,
        .hc-subtitles-list .hc-subtitles-item .hc-subtitles-item-title {
            position: relative;
            padding: 7px;
            margin-right: 130px;
            overflow-wrap: break-word;
        }

        .hc-subtitles-list .hc-subtitles-head .hc-subtitles-item-lang,
        .hc-subtitles-list .hc-subtitles-item .hc-subtitles-item-lang {
            position: relative;
            padding: 7px;
            float: right;
            width: 35px;
            text-align: center;
        }

        .hc-subtitles-list .hc-subtitles-head .hc-subtitles-shift,
        .hc-subtitles-list .hc-subtitles-item .hc-subtitles-shift {
            float: right;
            padding: 7px;
            width: 40px;
            text-align: center;
        }

        .hc-subtitles-list .hc-subtitles-item .hc-subtitles-shift .hc-subtitles-shift-input {
            background: rgba(43, 55, 54, .7);
            border: 0;
            width: 35px;
            color: white;
            text-align: center;
            margin: -2px 0px;
        }
        .hc-subtitles-list .hc-subtitles-item .hc-subtitles-shift .hc-subtitles-shift-input::-webkit-outer-spin-button,
        .hc-subtitles-list .hc-subtitles-item .hc-subtitles-shift .hc-subtitles-shift-input::-webkit-inner-spin-button {
            -webkit-appearance: none;
            margin: 0;
        }

        .hc-subtitles-list .hc-subtitles-item .hc-subtitles-shift .hc-subtitles-shift-input[type=number] {
            -moz-appearance: textfield;
        }

        /* Subtitles loader */

        .hc-subtitles-loader {
            content: "";
            background-size: 48px 48px;
            background-repeat: no-repeat;
            background-image: url(${images.loader});
            display: block;
            position: absolute;
            top: 50%;
            left: 50%;
            width: 48px;
            height: 48px;
            margin-top: -24px;
            margin-left: -24px;
            animation: spin 1s infinite linear;
            filter: invert(100%);
        }

        /* Subtitles settings */

        .hc-setting-opensubtitles-key .hc-setting-text-value {
            display: block;
        }

        .hc-setting-opensubtitles-key .hc-opensubtitles-login,
        .hc-setting-opensubtitles-key .hc-opensubtitles-logout {
            float: right;
        }

        body.hs-opensubtitles-logged-in .hc-opensubtitles-login,
        body:not(.hs-opensubtitles-logged-in) .hc-opensubtitles-logout {
            display: none;
        }

        .hc-setting-opensubtitles-key .hc-opensubtitles-input {
            border: 0;
            border-radius: 20px;
            background: #222d33;
            background-color: #000;
            color: #fff;
            margin: 4px 0;
            width: 70px;
            font-size: 12px;
            padding: 3px 10px;
            margin-left: 10px;
        }

        body.hc-style.b-theme__template__night .hc-setting-opensubtitles-key .hc-opensubtitles-input {
            background-color: #222d33;
        }

        .hc-setting-opensubtitles-key .hc-opensubtitles-button {
            height: 30px;
            background-color: #000;
            border: #1d92b2;
            border-radius: 30px;
            font-size: 12px;
            color: #fff;
            padding: 3px 10px;
            margin-left: 10px;
        }

        .hc-setting-opensubtitles-key .hc-opensubtitles-login .hc-opensubtitles-button {
            width: 52px;
        }

        .hc-setting-opensubtitles-key .hc-opensubtitles-logout .hc-opensubtitles-button {
            width: 60px;
        }

        body.hc-style.b-theme__template__night .hc-setting-opensubtitles-key .hc-opensubtitles-button {
            background-color: #222d33;
        }

        .hc-setting-opensubtitles-error {
            float: left;
            color: red;
        }

        /* !css */

        `);

        hc.subtitles = {};
        hc.subtitles.key = "I4RUSehE2lQ5jLgNjteb3gaW31PbJfso";

        const HELP_LINK = '<a href="https://www.opensubtitles.com">opensubtitles.com</a>';
        const HELP_TOOLTIP =
            /* html */
            `
            <!-- html -->
            <span class="hc-tooltip" style="float: right; margin-right: -10px;">
                <span class="hc-tooltip-icon">i</span>
                <div class="tooltiptext">

                    <div>Настройка аккаунта</div>
                    <ol style="list-style: auto; margin-left: 15px;">
                        <li style="margin-top: 5px;">Перейти на сайт ${HELP_LINK}</li>
                        <li style="margin-top: 5px;">Зарегистрироваться</li>
                        <li style="margin-top: 5px;">Подтвердить регистрацию</li>
                        <li style="margin-top: 5px;">Ввести имя/пароль от созданного аккаунта</li>
                    </ol>

                    <div style="margin-top: 5px;">Использование</div>
                    <ol style="list-style: auto; margin-left: 15px;">
                        <li style="margin-top: 5px;">Настройка "Дополнительные элементы управления плеером" должна быть включена</li>
                        <li style="margin-top: 5px;">
                            Для поиска субтитров нажать кнопку расположенную
                            в правом нижнем углу плеера
                        </li>
                        <li style="margin-top: 5px;">
                            Выбрать в списке подходящие субтитры
                        </li>
                        <li style="margin-top: 5px;">
                            После нажатия на пункт списка плеер загрузит и отобразит выбрананые субтитры
                        </li>
                        <li style="margin-top: 5px;">
                            При рассинхранизации есть 2 способа синхронизировать видео и субтитры
                            <ul style="list-style: circle; margin-left: 15px;">
                                <li style="margin-top: 5px;">В настройках плеера (максимум ±5 секунд)</li>
                                <li style="margin-top: 5px;">В списке найденых субтитров перед выбором выставить значение в колонке "Сдвиг" (в секундах)</li>
                            </ul>
                        </li>
                    </ol>


                    <div style="margin-top: 15px;">
                        <small>
                            Способы увеличения количества загрузок:
                            <br>
                            <a href="https://www.opensubtitles.com/en/users/vip">opensubtitles.com/en/users/vip</a>
                        </small>
                    </div>
                </div>
            </div>
            <!-- !html -->
        `;

        settings();
        setup();

        function settings() {
            if (hc.settings) {
                const settingWrapper = document.createElement("div");
                settingWrapper.classList.add("hc-setting");
                settingWrapper.classList.add("hc-setting-opensubtitles-key");

                const settingTextBlock = document.createElement("div");
                settingTextBlock.classList.add("hc-setting-text-block");

                const labelSpan = document.createElement("span");
                labelSpan.classList.add("hc-setting-label");
                labelSpan.innerHTML = "Cубтитры";

                settingTextBlock.appendChild(labelSpan);

                const textValueSpan = document.createElement("span");
                textValueSpan.classList.add("hc-setting-text-value");
                textValueSpan.innerHTML = HELP_LINK;
                settingTextBlock.appendChild(textValueSpan);

                const profileSpan = document.createElement("span");
                profileSpan.classList.add("hc-setting-text-value");
                settingTextBlock.appendChild(profileSpan);

                const downloadSpan = document.createElement("span");
                downloadSpan.classList.add("hc-setting-text-value");
                settingTextBlock.appendChild(downloadSpan);

                const textErrorSpan = document.createElement("span");
                textErrorSpan.classList.add("hc-setting-text-value");
                textErrorSpan.classList.add("hc-setting-opensubtitles-error");

                const settingLogin = document.createElement("div");
                settingLogin.classList.add("hc-opensubtitles-login");

                const settingUsernameInput = document.createElement("input");
                settingUsernameInput.placeholder = "Username";
                settingUsernameInput.type = "text";
                settingUsernameInput.classList.add("hc-opensubtitles-input");

                const settingPasswordInput = document.createElement("input");
                settingPasswordInput.placeholder = "Password";
                settingPasswordInput.type = "password";
                settingPasswordInput.classList.add("hc-opensubtitles-input");

                const settingLoginButton = document.createElement("button");
                settingLoginButton.innerText = "Вход";
                settingLoginButton.classList.add("hc-opensubtitles-button");

                function showError(text) {
                    textErrorSpan.innerHTML = text;
                }

                function createRemainingTime(time_utc) {
                    const diff = (new Date(time_utc) - new Date()) / 1000;
                    var hours = Math.floor(diff / (60 * 60));
                    var minutes = "0" + Math.floor((diff % (60 * 60)) / 60);
                    var seconds = "0" + Math.floor(diff % 60);
                    return hours + ":" + minutes.slice(minutes.length - 2) + ":" + seconds.slice(seconds.length - 2);
                }

                var downloadsData = {};

                function showDownloadData() {
                    downloadSpan.innerHTML = "";
                    if (downloadsData.allowed_downloads) {
                        let allowed_downloads = downloadsData.allowed_downloads;
                        downloadSpan.innerHTML += "<p>Разрешено загрузок в день: " + allowed_downloads + "</p>";
                    }
                    if (downloadsData.remaining_downloads) {
                        let remaining_downloads = downloadsData.remaining_downloads;
                        if (remaining_downloads < 0) {
                            remaining_downloads = 0;
                        }
                        downloadSpan.innerHTML += "<p>Осталось загрузок: " + remaining_downloads + "</p>";
                    }
                    if (downloadsData.reset_time_utc) {
                        let remaining = createRemainingTime(downloadsData.reset_time_utc);
                        if (remaining[0] === "-") {
                            setDownloadData({
                                allowed_downloads: downloadsData.allowed_downloads,
                                remaining_downloads: null,
                                reset_time_utc: null,
                            });
                        } else {
                            downloadSpan.innerHTML += "<p>Сброс счетчика через " + remaining + "</p>";
                        }
                    }
                }

                function hideDownloadData() {
                    downloadSpan.innerHTML = "";
                }

                function setDownloadData(data) {
                    downloadsData = data;
                }

                hc.subtitles.setDownloadData = setDownloadData;

                function showUserData(id) {
                    profileSpan.innerHTML = "Идентификатор пользователя: " + id;
                    showDownloadData();
                }

                function hideUserData() {
                    profileSpan.innerHTML = "";
                    hideDownloadData();
                }

                setInterval(function () {
                    showDownloadData();
                }, 1000);

                function loadProfile() {
                    GM_xmlhttpRequest({
                        method: "GET",
                        url: "https://api.opensubtitles.com/api/v1/infos/user",
                        headers: {
                            "Api-Key": hc.subtitles.key,
                            Authorization: "Bearer " + hc.settings.getSetting("hs-opensubtitles-key") || "",
                            "Content-Type": "application/json",
                        },
                        onload: function (response) {
                            if (response.status === 200) {
                                var responseJSON = JSON.parse(response.responseText);
                                console.debug(responseJSON);
                                setDownloadData({
                                    allowed_downloads: responseJSON.data.allowed_downloads,
                                    remaining_downloads: responseJSON.data.remaining_downloads,
                                    reset_time_utc: responseJSON.data.reset_time_utc,
                                });
                                showUserData(responseJSON.data.user_id);
                            } else {
                                console.debug(response);
                                logout();
                                showError(parseOpensubtitlesError(response));
                            }
                        },
                        onerror: function (e) {
                            console.debug(e);
                            showError("Something went wrong");
                        },
                    });
                }

                if (hc.settings.getSetting("hs-opensubtitles-key")) {
                    loadProfile();
                }

                function login(event) {
                    event.preventDefault();
                    textErrorSpan.innerHTML = "";
                    GM_xmlhttpRequest({
                        method: "POST",
                        url: "https://api.opensubtitles.com/api/v1/login",
                        data: JSON.stringify({
                            username: settingUsernameInput.value,
                            password: settingPasswordInput.value,
                        }),
                        headers: {
                            "Api-Key": hc.subtitles.key,
                            "Content-Type": "application/json",
                        },
                        onload: function (response) {
                            if (response.status === 200) {
                                var responseJSON = JSON.parse(response.responseText);
                                console.debug(responseJSON);
                                hc.settings.setSetting("hs-opensubtitles-key", responseJSON.token);
                                document.body.classList.add("hs-opensubtitles-logged-in");
                                loadProfile();
                            } else {
                                showError(parseOpensubtitlesError(response));
                                console.debug(response);
                            }
                        },
                        onerror: function (e) {
                            showError("Something went wrong");
                            console.debug(e);
                        },
                    });
                }

                function inputEnter(event) {
                    if (event.key === "Enter") {
                        login();
                    }
                }

                settingLoginButton.addEventListener("click", login);

                settingUsernameInput.addEventListener("keyup", inputEnter);
                settingPasswordInput.addEventListener("keyup", inputEnter);

                settingLogin.appendChild(settingUsernameInput);
                settingLogin.appendChild(settingPasswordInput);
                settingLogin.appendChild(settingLoginButton);

                settingWrapper.appendChild(settingLogin);
                settingWrapper.appendChild(settingTextBlock);
                settingWrapper.appendChild(textErrorSpan);

                const settingProfile = document.createElement("div");
                settingProfile.classList.add("hc-opensubtitles-logout");

                const settingLogoutButton = document.createElement("button");
                settingLogoutButton.innerText = "Выход";
                settingLogoutButton.classList.add("hc-opensubtitles-button");

                function logout() {
                    hc.settings.setSetting("hs-opensubtitles-key", "");
                    document.body.classList.remove("hs-opensubtitles-logged-in");
                    setDownloadData({
                        allowed_downloads: null,
                        remaining_downloads: null,
                        reset_time_utc: null,
                    });
                    hideUserData();
                    downloadSpan.innerHTML = "";
                    textErrorSpan.innerHTML = "";
                }

                settingLogoutButton.addEventListener("click", function () {
                    GM_xmlhttpRequest({
                        method: "DELETE",
                        url: "https://api.opensubtitles.com/api/v1/logout",
                        headers: {
                            "Api-Key": hc.subtitles.key,
                            Authorization: "Bearer " + hc.settings.getSetting("hs-opensubtitles-key") || "",
                        },
                        onload: function (response) {
                            if (response.status === 200) {
                                logout();
                            } else {
                                console.debug(response);
                                logout();
                            }
                        },
                        onerror: function (e) {
                            console.debug(e);
                            logout();
                        },
                    });
                });

                settingProfile.appendChild(settingLogoutButton);

                settingWrapper.appendChild(settingProfile);

                const tooltip = document.createElement("div");
                tooltip.innerHTML = HELP_TOOLTIP;
                settingWrapper.appendChild(tooltip);

                hc.settings.addElementSetting(settingWrapper, {submenu: "Субтитры"});
            }
        }

        function parseOpensubtitlesError(response) {
            localStorage.setItem("hc-opensubtitles-error-status", response.status);
            localStorage.setItem("hc-opensubtitles-error-text", response.responseText);
            try {
                const responseJSON = JSON.parse(response.responseText);
                if (responseJSON.message) {
                    return responseJSON.message;
                }
                if (responseJSON.errors) {
                    return responseJSON.errors.join("<br>");
                }
                return responseJSON;
            } catch (e) {
                return response.responseText;
            }
        }

        function setup() {
            if (hc.settings.getSetting("hs-opensubtitles-key")) {
                document.body.classList.add("hs-opensubtitles-logged-in");
            }

            const playerSubtitles = document.createElement("div");
            playerSubtitles.classList.add("hc-subtitles-list-wrapper");
            playerSubtitles.classList.add("hidden");

            const playerSubtitlesError = document.createElement("div");
            playerSubtitlesError.classList.add("hc-subtitles-error");
            playerSubtitlesError.classList.add("hidden");
            playerSubtitles.appendChild(playerSubtitlesError);

            const playerSubtitlesListContainer = document.createElement("div");
            playerSubtitlesListContainer.classList.add("hc-subtitles-list-container");
            playerSubtitles.appendChild(playerSubtitlesListContainer);

            const playerSubtitlesList = document.createElement("ul");
            playerSubtitlesList.classList.add("hc-subtitles-list");
            playerSubtitlesListContainer.appendChild(playerSubtitlesList);

            const playerSubtitlesLoader = document.createElement("div");
            playerSubtitlesLoader.classList.add("hc-subtitles-loader");
            playerSubtitlesLoader.classList.add("hidden");

            window.addEventListener("message", function (event) {
                if (event.data) {
                    if (event.data.event == "init") {
                        const player = document.querySelector("#oframecdnplayer");
                        if (player) {
                            player.appendChild(playerSubtitles);
                            player.appendChild(playerSubtitlesLoader);
                        }
                    }
                }
            });

            // Player subtitles actions

            function errorSubtitlesShow(innerHTML) {
                playerSubtitlesError.classList.remove("hidden");
                playerSubtitlesError.innerHTML = innerHTML;
            }
            function errorSubtitlesHide() {
                playerSubtitlesError.classList.add("hidden");
            }

            function getImdbId(imdbUrl) {
                playerSubtitlesLoader.classList.remove("hidden");
                return new Promise(function (resolve) {
                    GM_xmlhttpRequest({
                        method: "GET",
                        headers: {
                            Referer: location.href,
                        },
                        url: imdbUrl,
                        onload: function (response) {
                            console.debug(response);
                            if (response.status === 200) {
                                const pageConstPattern =
                                    /<meta property="imdb:pageConst" content="tt(?<id>[^"]*)"[\/]{0,1}>/;
                                const pageConstResult = pageConstPattern.exec(response.responseText);
                                if (pageConstResult && pageConstResult.groups && pageConstResult.groups.id) {
                                    resolve(pageConstResult.groups.id);
                                    errorSubtitlesHide();
                                } else {
                                    console.debug("Can't find id on imdb");
                                    errorSubtitlesShow("Something went wrong");
                                }
                            } else {
                                errorSubtitlesShow("Something went wrong");
                            }
                            playerSubtitlesLoader.classList.add("hidden");
                        },
                        onerror: function (e) {
                            console.debug(e);
                            errorSubtitlesShow("Something went wrong");
                            playerSubtitlesLoader.classList.add("hidden");
                        },
                    });
                });
            }

            function searchSubtitles(id, page) {
                playerSubtitlesLoader.classList.remove("hidden");
                return new Promise(function (resolve) {
                    GM_xmlhttpRequest({
                        method: "GET",
                        url:
                            "https://api.opensubtitles.com/api/v1/subtitles?" +
                            new URLSearchParams({
                                imdb_id: id,
                                languages: "en,uk,ru",
                                page: page || 1,
                                season_number: hc.player.season(),
                                episode_number: hc.player.episode(),
                            }).toString(),
                        headers: {
                            "Api-Key": hc.subtitles.key,
                            Authorization: "Bearer " + hc.settings.getSetting("hs-opensubtitles-key") || "",
                        },
                        onload: function (response) {
                            if (response.status === 200) {
                                var responseJSON = JSON.parse(response.responseText);
                                console.debug(responseJSON);
                                if (responseJSON.total_count > 0) {
                                    resolve(responseJSON);
                                    errorSubtitlesHide();
                                } else {
                                    errorSubtitlesShow("No subtitles found");
                                }
                            } else {
                                console.debug(response);
                                errorSubtitlesShow(parseOpensubtitlesError(response));
                            }
                            playerSubtitlesLoader.classList.add("hidden");
                        },
                        onerror: function (e) {
                            console.debug(e);
                            errorSubtitlesShow("Something went wrong");
                            playerSubtitlesLoader.classList.add("hidden");
                        },
                    });
                });
            }

            function downloadSubtitles(id, shift) {
                playerSubtitlesLoader.classList.remove("hidden");
                return new Promise(function (resolve) {
                    GM_xmlhttpRequest({
                        method: "POST",
                        url: "https://api.opensubtitles.com/api/v1/download",
                        data: JSON.stringify({
                            file_id: id,
                            timeshift: shift,
                        }),
                        headers: {
                            "Api-Key": hc.subtitles.key,
                            Authorization: "Bearer " + hc.settings.getSetting("hs-opensubtitles-key") || "",
                            "Content-Type": "application/json",
                        },
                        onload: function (response) {
                            if (response.status === 200) {
                                var responseJSON = JSON.parse(response.responseText);
                                console.debug(responseJSON);
                                if (hc.subtitles) {
                                    hc.subtitles.setDownloadData({
                                        allowed_downloads: responseJSON.remaining + responseJSON.requests,
                                        remaining_downloads: responseJSON.remaining,
                                        reset_time_utc: responseJSON.reset_time_utc,
                                    });
                                }
                                resolve(responseJSON);
                                errorSubtitlesHide();
                            } else {
                                console.debug(response);
                                errorSubtitlesShow(parseOpensubtitlesError(response));
                            }
                            playerSubtitlesLoader.classList.add("hidden");
                        },
                        onerror: function (e) {
                            console.debug(e);
                            errorSubtitlesShow("Something went wrong");
                            playerSubtitlesLoader.classList.add("hidden");
                        },
                    });
                });
            }

            function loadSubtitles(responseJSON) {
                hc.player.subtitle(decodeURI(responseJSON.link));
            }

            function headSubtitles() {
                const playerSubtitlesItem = document.createElement("li");
                playerSubtitlesItem.classList.add("hc-subtitles-head");

                const playerSubtitlesItemLang = document.createElement("div");
                playerSubtitlesItemLang.classList.add("hc-subtitles-item-lang");
                playerSubtitlesItemLang.innerText = "Язык";
                playerSubtitlesItem.appendChild(playerSubtitlesItemLang);

                const playerSubtitlesShift = document.createElement("div");
                playerSubtitlesShift.classList.add("hc-subtitles-shift");
                playerSubtitlesShift.innerText = "Сдвиг";
                playerSubtitlesItem.appendChild(playerSubtitlesShift);

                const playerSubtitlesItemTitle = document.createElement("div");
                playerSubtitlesItemTitle.classList.add("hc-subtitles-item-title");
                playerSubtitlesItemTitle.innerText = "Название";
                playerSubtitlesItem.appendChild(playerSubtitlesItemTitle);

                playerSubtitlesList.appendChild(playerSubtitlesItem);
            }

            function pageSubtitles(responseJSON) {
                for (let dataIndex = 0; dataIndex < responseJSON.data.length; dataIndex++) {
                    const dataItem = responseJSON.data[dataIndex];
                    for (let fileIndex = 0; fileIndex < dataItem.attributes.files.length; fileIndex++) {
                        const fileItem = dataItem.attributes.files[fileIndex];

                        const playerSubtitlesItem = document.createElement("li");
                        playerSubtitlesItem.classList.add("hc-subtitles-item");

                        playerSubtitlesItem.addEventListener("click", function (event) {
                            const target = event.target;
                            const item = target.closest(".hc-subtitles-item");
                            const siblings = Array.from(item.parentElement.children);
                            for (let sib of siblings) {
                                sib.classList.remove("active");
                            }
                            item.classList.add("active");
                            const shift = item.querySelector(".hc-subtitles-shift-input").value;
                            downloadSubtitles(fileItem.file_id, shift).then(loadSubtitles).then(closeSubtitles);
                        });

                        const playerSubtitlesItemLang = document.createElement("div");
                        playerSubtitlesItemLang.classList.add("hc-subtitles-item-lang");
                        playerSubtitlesItemLang.innerText = dataItem.attributes.language;
                        playerSubtitlesItem.appendChild(playerSubtitlesItemLang);

                        const playerSubtitlesShift = document.createElement("div");
                        playerSubtitlesShift.classList.add("hc-subtitles-shift");
                        playerSubtitlesItem.appendChild(playerSubtitlesShift);

                        const playerSubtitlesShiftLabel = document.createElement("span");
                        playerSubtitlesShift.appendChild(playerSubtitlesShiftLabel);

                        const playerSubtitlesShiftInput = document.createElement("input");
                        playerSubtitlesShiftInput.classList.add("hc-subtitles-shift-input");
                        playerSubtitlesShiftInput.type = "number";
                        playerSubtitlesShiftInput.value = "0";
                        playerSubtitlesShiftInput.addEventListener("click", function (e) {
                            e.stopPropagation();
                        });
                        playerSubtitlesShift.appendChild(playerSubtitlesShiftInput);

                        const playerSubtitlesItemTitle = document.createElement("div");
                        playerSubtitlesItemTitle.classList.add("hc-subtitles-item-title");
                        playerSubtitlesItemTitle.innerText = fileItem.file_name || dataItem.attributes.release;
                        playerSubtitlesItem.appendChild(playerSubtitlesItemTitle);

                        playerSubtitlesList.appendChild(playerSubtitlesItem);
                    }
                }
            }

            function findSubtitles(url) {
                getImdbId(url).then(function (id) {
                    searchSubtitles(id).then(function (responseJSON) {
                        headSubtitles();
                        pageSubtitles(responseJSON);
                        if (responseJSON.total_pages > 1) {
                            for (let pageNumber = 2; pageNumber <= responseJSON.total_pages; pageNumber++) {
                                searchSubtitles(id, pageNumber).then(pageSubtitles);
                            }
                        }
                    });
                });
            }

            var subtitlesOpened = false;

            function openSubtitles() {
                const imdbLink = document.querySelector(".b-post__info_rates.imdb a");
                if (!imdbLink) return;

                const playerVideo = document.querySelector("#oframecdnplayer video");
                if (!playerVideo) return;

                playerSubtitles.classList.remove("hidden");
                if (Array.from(playerSubtitlesList.querySelectorAll(".hc-subtitles-item")).length === 0) {
                    findSubtitles(imdbLink.href);
                }

                subtitlesOpened = true;

                let interval = setInterval(function () {
                    if (subtitlesOpened) {
                        document.querySelector("#oframecdnplayer").dispatchEvent(new Event("mousemove"));
                    } else {
                        clearInterval(interval);
                    }
                }, 1000);
            }

            function closeSubtitles() {
                const playerVideo = document.querySelector("#oframecdnplayer video");
                if (!playerVideo) return;

                playerSubtitles.classList.add("hidden");

                subtitlesOpened = false;
            }

            function clearSubtitles() {
                playerSubtitlesList.querySelectorAll(".hc-subtitles-item, .hc-subtitles-head").forEach(function (elem) {
                    elem.remove();
                });
                closeSubtitles();
            }

            function toggleSubtitles() {
                if (playerSubtitles.classList.contains("hidden")) {
                    openSubtitles();
                } else {
                    closeSubtitles();
                }
            }

            hc.subtitles.toggle = toggleSubtitles;
            hc.subtitles.clear = clearSubtitles;
        }
    }

    /* ------------------------------------------------- */
    /* --------------PLAYER-EXTRA-CONTROLS-------------- */
    /* ------------------------------------------------- */

    function initPlayerExtraControls() {
        GM_addStyle(`

        /* css */

        body.hc-player-full-page {
            height: 100%;
            overflow: hidden;
        }

        body.hc-player-full-page .b-player {
            display: flex;
            flex-direction: column;
            position: fixed !important;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            width: 100% !important;
            height: 100% !important;
            z-index: 1000;
        }

        body.hc-player-full-page .b-player__holder_cdn {
            width: 100% !important;
            height: 100% !important;
        }

        body.hc-player-full-page .b-player__container_cdn {
            width: 100% !important;
            height: 100% !important;
        }

        body.hc-player-full-page .b-post__status_wrapper {
            display: none;
        }

        body.hc-player-full-page .b-simple_seasons__list {
            margin: 0;
        }

        .hc-player-top-bar {
            display: none;
            box-sizing: border-box !important;
            position: absolute;
            width: 100%;
            top: 0;
            left: 0;
            padding: 20px;
            background: linear-gradient(
                to bottom,
                rgba(0, 0, 0, .6) 0%,
                rgba(0, 0, 0, .1) 70%,
                rgba(0, 0, 0, 0) 100%
            );
            pointer-events: none;
            z-index: 1;
        }

        .hc-player-top-bar-enabled .hc-player-top-bar {
            display: block;
        }

        .hc-player-top-bar:hover {
            display: block !important;
            visibility: visible !important;
        }

        .hc-player-top-bar-title {
            display: inline-block;
            cursor: pointer;
            position: relative;
            text-align: left;
            line-height: 20px;
            font-size: 20px;
            font-weight: bold;
            pointer-events: all;
            padding-left: 10px;
            user-select: none;
        }

        body.hc-player-full-page .hc-player-top-bar-title {
            padding-left: 30px;
        }

        .hc-player-top-bar-origtitle {
            display: inline-block;
            position: relative;
            text-align: left;
            line-height: 14px;
            font-size: 14px;
            pointer-events: all;
            padding-left: 10px;
            user-select: none;
            padding-top: 5px;
            opacity: 70%;
        }

        body.hc-player-full-page .hc-player-top-bar-origtitle {
            padding-left: 30px;
        }

        .hc-player-top-bar-episode {
            display: inline-block;
            position: relative;
            text-align: left;
            line-height: 14px;
            font-size: 12px;
            pointer-events: all;
            padding-left: 10px;
            user-select: none;
            padding-top: 5px;
            opacity: 50%;
        }

        body.hc-player-full-page .hc-player-top-bar-episode {
            padding-left: 30px;
        }

        body.hc-player-full-page .hc-player-top-bar-title:before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 20px;
            height: 20px;
            margin-right: 10px;
            background-size: 20px 20px;
            background-repeat: no-repeat;
            background-image: url(${images.arrow});
            filter: invert(100%) sepia(95%) saturate(21%) hue-rotate(280deg) brightness(106%) contrast(106%);
            transform: rotate(-90deg);
        }

        .hc-player-control {
            display: none;
            content: '';
            position: relative;
            float: left;
            cursor: pointer;
            pointer-events: all;
            z-index: 2;
            border-radius: 2.3px;
            background: rgba(23, 35, 34, .7);
            transition: opacity 0.1s linear 0s, background 0.1s linear 0s, transform 0.1s linear 0s;
            cursor: point;
        }

        .hc-player-control:hover {
            background: rgba(0, 173, 239, .7);
        }

        .hc-player-extra-controls-enabled .hc-player-control {
            display: block;
        }

        .hc-player-extra-controls-enabled .hc-player-extra-controls-hidden {
            display: none !important;
        }

        .hc-player-controls-left {
            position: absolute;
            bottom: 56px;
            left: 10px;
        }

        .hc-player-controls-left .hc-player-control {
            margin-right: 10px;
        }

        .hc-player-controls-right {
            position: absolute;
            bottom: 56px;
            right: 10px;
        }

        .hc-player-controls-right .hc-player-control {
            margin-left: 10px;
        }

        .hc-player-control-prev,
        .hc-player-control-next,
        .hc-player-control-replay,
        .hc-player-control-forward {
            width: 28px;
            height: 35px;
        }

        .hc-player-control-expand,
        .hc-player-control-pip,
        .hc-player-control-subtitles {
            width: 41px;
            height: 35px;
        }

        body:not(.hs-opensubtitles-logged-in) .hc-player-control-subtitles {
            display: none;
        }

        .hc-player-control-icon {
            content: '';
            position: absolute;
            background-repeat: no-repeat;
            filter: invert(100%);
        }

        .hc-player-control-prev-icon {
            top: 10px;
            left: 7px;
            width: 15px;
            height: 15px;
            background-size: 15px 15px;
            background-image: url(${images.next});
            transform: rotate(180deg);
        }

        .hc-player-control-next-icon {
            top: 10px;
            left: 7px;
            width: 15px;
            height: 15px;
            background-size: 15px 15px;
            background-image: url(${images.next});
        }

        .hc-player-control-replay-icon {
            top: 10px;
            left: 7px;
            width: 15px;
            height: 15px;
            background-size: 15px 15px;
            background-image: url(${images.replay});
        }

        .hc-player-control-forward-icon {
            top: 10px;
            left: 7px;
            width: 15px;
            height: 15px;
            background-size: 15px 15px;
            background-image: url(${images.forward});
        }

        .hc-player-control-expand-icon {
            top: 8px;
            right: 11px;
            width: 20px;
            height: 20px;
            background-size: 20px 20px;
            background-image: url(${images.expand});
        }

        .hc-player-control-pip-icon {
            top: 8px;
            right: 11px;
            width: 20px;
            height: 20px;
            background-size: 20px 20px;
            background-image: url(${images.pip});
        }

        .hc-player-control-subtitles-icon {
            top: 8px;
            right: 11px;
            width: 20px;
            height: 20px;
            background-size: 20px 20px;
            background-image: url(${images.subtitles});
        }

        body.hc-player-full-page .hc-player-control-expand-icon {
            background-image: url(${images.collapse}) !important;
            transform: rotate(-90deg);
        }

        body.hc-player-full-page .b-footer {
            margin-top: 0 !important;
        }

        .hc-player-control-large-next,
        .hc-player-control-large-prev {
            position: absolute;
            width: 100%;
            height: 200%;
            top: -50%;
            background: #00000000;
            border-radius: 50%;
            transition: background-color 0.5s ease;
            display: none;
        }

        .hc-player-extra-controls-enabled.hc-player-triple-click-enabled .hc-player-control-large-next,
        .hc-player-extra-controls-enabled.hc-player-triple-click-enabled .hc-player-control-large-prev {
            display: block;
        }

        .hc-player-control-large-next {
            right: -75%;
        }

        .hc-player-control-large-prev {
            left: -75%;
        }

        .hc-player-control-large-prev.active:before,
        .hc-player-control-large-next.active:before {
            content: '';
            background-repeat: no-repeat;
            background-size: 30px 30px;
            background-position: center;
            height: 100%;
            width: 100%;
            position: absolute;
            filter: invert(100%) sepia(95%) saturate(21%) hue-rotate(280deg) brightness(106%) contrast(106%);
            opacity: .5;
        }

        .hc-player-control-large-prev.active:before {
            margin-left: calc(75% / 2);
        }

        .hc-player-control-large-next.active:before {
            margin-left: calc(-75% / 2);
        }

        .hc-player-control-large-prev.replay:before {
            background-image: url(${images.replay});
        }

        .hc-player-control-large-next.forward:before {
            background-image: url(${images.forward});
        }

        .hc-player-control-large-prev.prev:before {
            background-image: url(${images.next});
            transform: rotate(180deg);
        }

        .hc-player-control-large-next.next:before {
            background-image: url(${images.next});
        }

        .hc-player-control-large-prev.active,
        .hc-player-control-large-next.active {
            background: #00000070;
        }

        #oframecdnplayer > pjsdiv {
            z-index: 1;
        }

        #oframecdnplayer > pjsdiv[style*="width: 100%; height: 100%;"] {
            z-index: 0;
        }

        /* !css */

        `);

        setup();
        settings();

        function setup() {
            // Create Player Control function

            function createPlayerControl(mainClass, iconClass) {
                const playerControlIcon = document.createElement("div");
                playerControlIcon.classList.add("hc-player-control-icon");
                playerControlIcon.classList.add(iconClass);

                const playerControl = document.createElement("div");
                playerControl.classList.add("hc-player-control");
                playerControl.classList.add(mainClass);
                playerControl.appendChild(playerControlIcon);

                var mouseon = false;
                playerControl.addEventListener("mouseenter", function () {
                    mouseon = true;
                    let interval = setInterval(function () {
                        if (mouseon) {
                            document.querySelector("#oframecdnplayer").dispatchEvent(new Event("mousemove"));
                        } else {
                            clearInterval(interval);
                        }
                    }, 1000);
                });
                playerControl.addEventListener("mouseleave", function () {
                    mouseon = false;
                });

                return playerControl;
            }

            // Player Control Prev

            const playerControlPrev = createPlayerControl("hc-player-control-prev", "hc-player-control-prev-icon");
            playerControlPrev.addEventListener("click", hc.player.prev);

            // Player Control Next

            const playerControlNext = createPlayerControl("hc-player-control-next", "hc-player-control-next-icon");
            playerControlNext.addEventListener("click", hc.player.next);

            // Adjust player time function

            let adjusting = false;

            function adjust(seconds) {
                hc.player.adjust(seconds);
                setTimeout(function () {
                    let interval = setInterval(function () {
                        if (adjusting) {
                            hc.player.adjust(seconds);
                        } else {
                            clearInterval(interval);
                        }
                    }, 30);
                }, 1000);
            }

            // Player Control Replay

            const playerControlReplay = createPlayerControl(
                "hc-player-control-replay",
                "hc-player-control-replay-icon"
            );
            playerControlReplay.addEventListener("mousedown", function () {
                adjusting = true;
                adjust(-5);
            });
            playerControlReplay.addEventListener("mouseup", function () {
                adjusting = false;
            });

            // Player Control Forward

            const playerControlForward = createPlayerControl(
                "hc-player-control-forward",
                "hc-player-control-forward-icon"
            );
            playerControlForward.addEventListener("mousedown", function () {
                adjusting = true;
                adjust(5);
            });
            playerControlForward.addEventListener("mouseup", function () {
                adjusting = false;
            });

            // Player Expand button

            var collapsed = false;

            function collapse() {
                hc.player.expanded = 0;
                document.body.classList.remove("hc-player-full-page");
                hc.player.resize();
                collapsed = true;
            }

            function expand() {
                hc.player.expanded = 1;
                document.body.classList.add("hc-player-full-page");
            }

            function toggle() {
                if (hc.player.fullscreen == 0) {
                    if (hc.player.expanded == 1) {
                        collapse();
                    } else if (hc.player.expanded == 0) {
                        expand();
                    }
                } else if (hc.player.fullscreen == 1) {
                    hc.player.exitfullscreen();
                }
            }

            const playerControlExpand = createPlayerControl(
                "hc-player-control-expand",
                "hc-player-control-expand-icon"
            );
            playerControlExpand.addEventListener("click", toggle);

            // Player PIP button

            const playerControlPIP = createPlayerControl("hc-player-control-pip", "hc-player-control-pip-icon");

            // Player Subtitles button

            const playerControlSubtitles = createPlayerControl(
                "hc-player-control-subtitles",
                "hc-player-control-subtitles-icon"
            );
            playerControlSubtitles.addEventListener("click", function () {
                hc.subtitles.toggle();
            });

            // Player Controls Left

            const playerControlsLeft = document.createElement("div");
            playerControlsLeft.classList.add("hc-player-controls-left");
            playerControlsLeft.appendChild(playerControlPrev);
            playerControlsLeft.appendChild(playerControlNext);
            playerControlsLeft.appendChild(playerControlReplay);
            playerControlsLeft.appendChild(playerControlForward);

            // Player Controls Right

            const playerControlsRight = document.createElement("div");
            playerControlsRight.classList.add("hc-player-controls-right");
            playerControlsRight.appendChild(playerControlSubtitles);
            playerControlsRight.appendChild(playerControlPIP);
            playerControlsRight.appendChild(playerControlExpand);

            // Player Top Bar

            const playerTopBarTitleSpan = document.createElement("span");
            playerTopBarTitleSpan.classList.add("hc-player-top-bar-title");
            playerTopBarTitleSpan.addEventListener("click", toggle);

            const playerTopBarTitle = document.createElement("div");
            playerTopBarTitle.appendChild(playerTopBarTitleSpan);

            const playerTopBarOrigTitleSpan = document.createElement("span");
            playerTopBarOrigTitleSpan.classList.add("hc-player-top-bar-origtitle");

            const playerTopBarOrigTitle = document.createElement("div");
            playerTopBarOrigTitle.appendChild(playerTopBarOrigTitleSpan);

            const playerTopBarEpisodeSpan = document.createElement("span");
            playerTopBarEpisodeSpan.classList.add("hc-player-top-bar-episode");

            const playerTopBarEpisode = document.createElement("div");
            playerTopBarEpisode.appendChild(playerTopBarEpisodeSpan);

            const playerTopBar = document.createElement("div");
            playerTopBar.classList.add("hc-player-top-bar");
            playerTopBar.appendChild(playerTopBarTitle);
            playerTopBar.appendChild(playerTopBarOrigTitle);
            playerTopBar.appendChild(playerTopBarEpisode);

            // Large controls

            function createControlLarge(className, singleClick, doubleClick, tripleClick, multiClick) {
                const playerControlLarge = document.createElement("div");
                playerControlLarge.classList.add(className);

                var clicks = 0;
                var timer,
                    timeout = 350;

                playerControlLarge.addEventListener("click", function (event) {
                    clearTimeout(timer);
                    clicks++;
                    if (clicks < 4) {
                        timer = setTimeout(function () {
                            if (clicks == 1) singleClick(event);
                            else if (clicks == 2) doubleClick(event);
                            else if (clicks == 3) tripleClick(event);
                            clicks = 0;
                        }, timeout);
                    } else {
                        multiClick(event);
                        timer = setTimeout(function () {
                            clicks = 0;
                        }, timeout);
                    }
                });

                return playerControlLarge;
            }

            const clickDelay = 500;

            const playerControlLargePrev = createControlLarge(
                "hc-player-control-large-prev",
                function () {
                    hc.player.toggle();
                },
                function () {
                    hc.player.togglefullscreen();
                },
                function (event) {
                    event.target.classList.add("active");
                    event.target.classList.add("prev");
                    setTimeout(function () {
                        event.target.classList.remove("active");
                        event.target.classList.remove("prev");
                        hc.player.prev();
                    }, clickDelay);
                },
                function (event) {
                    event.target.classList.add("active");
                    event.target.classList.add("replay");
                    setTimeout(function () {
                        event.target.classList.remove("active");
                        event.target.classList.remove("replay");
                        hc.player.adjust(-5);
                    }, clickDelay);
                }
            );

            const playerControlLargeNext = createControlLarge(
                "hc-player-control-large-next",
                function () {
                    hc.player.toggle();
                },
                function () {
                    hc.player.togglefullscreen();
                },
                function (event) {
                    event.target.classList.add("active");
                    event.target.classList.add("next");
                    setTimeout(function () {
                        event.target.classList.remove("active");
                        event.target.classList.remove("next");
                        hc.player.next();
                    }, clickDelay);
                },
                function (event) {
                    event.target.classList.add("active");
                    event.target.classList.add("forward");
                    setTimeout(function () {
                        event.target.classList.remove("active");
                        event.target.classList.remove("forward");
                        hc.player.adjust(5);
                    }, clickDelay);
                }
            );

            // Keys

            document.addEventListener("keydown", function (e) {
                switch (e.code) {
                    case "Escape":
                        if (hc.player.fullscreen == 0) {
                            collapse();
                        }
                        hc.player.resize();
                        break;
                }
            });

            // Player events

            function setTitle() {
                const postTitle = document.querySelector(".b-post__title h1");
                if (postTitle) {
                    playerTopBarTitleSpan.innerText = postTitle.innerText;
                }
            }

            function setOrigTitle() {
                const postOrigTitle = document.querySelector(".b-post__origtitle");
                if (postOrigTitle) {
                    playerTopBarOrigTitleSpan.innerText = postOrigTitle.innerText;
                }
            }

            function setSeasonAndEpisode() {
                const season = hc.player.season();
                const episode = hc.player.episode();
                if (season && episode) {
                    playerTopBarEpisodeSpan.innerText = "Сезон " + season + " - Серия " + episode;
                }
            }

            function initPIPControl(player) {
                playerControlPIP.classList.add("hidden");
                Array.from(player.querySelectorAll('pjsdiv[style*="top: 20px;"]')).forEach(function (elem) {
                    if (!elem) return;

                    const pip = elem.querySelector('pjsdiv[style*="top: -17.5px; left: -17.5px;"]');
                    if (!pip) return;

                    new MutationObserver(function () {
                        if (elem.style.display === "none") {
                            playerControlPIP.classList.add("hidden");
                            elem.classList.remove("hc-player-extra-controls-hidden");
                        } else {
                            playerControlPIP.classList.remove("hidden");
                            elem.classList.add("hc-player-extra-controls-hidden");
                        }
                    }).observe(elem, {
                        attributes: true,
                        attributeFilter: ["style"],
                    });

                    playerControlPIP.addEventListener("click", function () {
                        pip.click();
                    });
                });
            }

            window.addEventListener("message", function (event) {
                if (event.data) {
                    if (event.data.event == "init") {
                        const player = document.querySelector("#oframecdnplayer");
                        if (player) {
                            player.appendChild(playerTopBar);
                            player.appendChild(playerControlsLeft);
                            player.appendChild(playerControlsRight);
                            player.appendChild(playerControlLargePrev);
                            player.appendChild(playerControlLargeNext);
                            initPIPControl(player);
                            if (!document.querySelector(".b-simple_episodes__list")) {
                                playerControlPrev.classList.add("hidden");
                                playerControlNext.classList.add("hidden");
                                playerControlLargePrev.classList.add("hidden");
                                playerControlLargeNext.classList.add("hidden");
                            }
                        }
                        setTitle();
                        setOrigTitle();
                        setSeasonAndEpisode();
                    }
                    if (event.data.event == "new") {
                        setSeasonAndEpisode();
                        hc.subtitles.clear();
                    }
                    if (event.data.event == "play") {
                        if (!collapsed && document.body.classList.contains("hc-player-full-page-enabled")) {
                            expand();
                        }
                    }
                    if (event.data.event == "ui") {
                        if (event.data.data == 0) {
                            playerTopBar.classList.add("hidden");
                            playerControlsLeft.classList.add("hidden");
                            playerControlsRight.classList.add("hidden");
                        }
                        if (event.data.data == 1) {
                            playerTopBar.classList.remove("hidden");
                            playerControlsLeft.classList.remove("hidden");
                            playerControlsRight.classList.remove("hidden");
                        }
                    }
                    if (event.data.event == "fullscreen") {
                        document.body.classList.add("hc-player-full-page");
                        hc.player.fullscreen = 1;
                    }
                    if (event.data.event == "exitfullscreen") {
                        if (hc.player.expanded == 0) {
                            document.body.classList.remove("hc-player-full-page");
                        }
                        hc.player.fullscreen = 0;
                        hc.player.resize();
                    }
                }
            });
        }

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "player-top-bar",
                    label: "Дополнительная панель с заголовком",
                    submenu: "Плеер",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                        },
                        {
                            class: "hc-player-top-bar-enabled",
                            text: "Вкл",
                            default: true,
                        },
                    ],
                });
                hc.settings.createTumblerSetting({
                    name: "player-extra-controls",
                    label: "Дополнительные элементы управления",
                    submenu: "Плеер",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                        },
                        {
                            class: "hc-player-extra-controls-enabled",
                            text: "Вкл",
                            default: true,
                        },
                    ],
                });
                hc.settings.createTumblerSetting({
                    name: "player-triple-click",
                    label: "Переключение серий тройным кликом",
                    submenu: "Плеер",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                        },
                        {
                            class: "hc-player-triple-click-enabled",
                            text: "Вкл",
                        },
                    ],
                });
                hc.settings.createTumblerSetting({
                    name: "player-full-page",
                    label: "Автоматическое разворачивание",
                    submenu: "Плеер",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                        },
                        {
                            class: "hc-player-full-page-enabled",
                            text: "Вкл",
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------PLAYER-AUTO-PLAY-NEXT-------------- */
    /* ------------------------------------------------- */

    function initAutoPlayNext() {
        setup();
        settings();

        function setup() {
            window.addEventListener("message", function (event) {
                if (event.data && event.data.event == "ended") {
                    if (document.body.classList.contains("hc-auto-play-next-enabled")) {
                        hc.player.next();
                    }
                }
                if (
                    event.data &&
                    event.data.event == "time" &&
                    event.data.data != 0 &&
                    event.data.data >= event.data.duration - 1
                ) {
                    if (document.body.classList.contains("hc-auto-play-next-disabled")) {
                        hc.player.stop();
                    }
                }
            });
        }

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "auto-play-next",
                    label: "Автопереключение серий",
                    submenu: "Плеер",
                    classes: [],
                    options: [
                        {
                            class: null,
                            text: "Как в настройках профиля (серии или выкл)",
                        },
                        {
                            class: "hc-auto-play-next-enabled",
                            text: "Быстрое переключение (серии и сезоны)",
                        },
                        {
                            class: "hc-auto-play-next-disabled",
                            text: "Выкл",
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------HIDE-ADS--------------------------- */
    /* ------------------------------------------------- */

    function initHideAds() {
        GM_addStyle(`

        /* css */

        /* Hide some ads containers */

        body.hc-hide-ads .b-content__main > .b-post__mixedtext + div[style][id],
        body.hc-hide-ads .b-content__main > .b-post__rating_table + div[style][id],
        body.hc-hide-ads .b-content__main > div > .b-player > .b-player__network_issues_holder + div[style]:not([class]),
        body.hc-hide-ads .b-content__main > div > .b-player > a[target='_blank'],
        body.hc-hide-ads .b-content__main + div[id],
        body.hc-hide-ads .b-content__inline > .b-content__inline_inner > .b-content__inline_items + div[id],
        body.hc-hide-ads .b-wrapper .nopadd,
        body.hc-hide-ads .b-seriesupdate__block_list > .b-seriesupdate__block_list_item[data-url=''] {
            display: none !important;
        }

        /* !css */

        `);

        settings();

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "hide-ads",
                    label: "Скрытие рекламных блоков",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                        },
                        {
                            class: "hc-hide-ads",
                            text: "Вкл",
                            default: true,
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------HIDE-PLAYER-ADS-------------------- */
    /* ------------------------------------------------- */

    function initHidePlayerAds() {
        settings();

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "hide-player-ads",
                    label: "Отключение рекламных роликов",
                    submenu: "Плеер",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            start: function () {
                                hc.player.vast(1);
                            },
                            class: null,
                            text: "Выкл",
                        },
                        {
                            start: function () {
                                hc.player.vast(0);
                            },
                            class: "hc-player-hide-ads",
                            text: "Вкл",
                            default: true,
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------STYLE-IMPROVEMENTS----------------- */
    /* ------------------------------------------------- */

    function initStyleImprovements() {
        GM_addStyle(`

        /* css */

        /* Top Nav */

        body.hc-style .b-topnav__sub_inner a {
            color: #000 !important;
        }

        body.hc-style.b-theme__template__night .b-topnav__sub_inner a {
            color: #fff !important;
        }

        /* Сontent item */

        body.hc-style .b-content__inline_item .b-content__inline_item-link a,
        body.hc-style .b-content__inline_item .b-content__inline_item-link a:visited {
            color: #000;
        }

        body.hc-style.b-theme__template__night .b-content__inline_item .b-content__inline_item-link a,
        body.hc-style.b-theme__template__night .b-content__inline_item .b-content__inline_item-link a:visited {
            color: #fff;
        }

        body.hc-style .b-content__inline_item .cat {
            position: relative;
            top: unset;
            bottom: 0;
            right: 0;
            border-radius: 0;
            width: 100%;
        }

        body.hc-style.b-theme__template__night .b-content__inline_item .cat {
            background-color: #060f13 !important;
        }

        body.hc-style .b-content__inline_item .cat .entity {
            display: inline-block !important;
            margin-right: -8px;
            position: absolute;
            left: 0;
            right: 0;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        body.hc-style .b-content__inline_item:hover .cat .entity,
        body.hc-style .b-content__inline_item.active .cat .entity {
            display: none !important;
            margin-right: -10px;
            position: absolute;
            left: 0;
            right: 0;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        body.hc-style .b-content__inline_item .info {
            background-color: #222d33;
            color: #fff;
            border-radius: 0 !important;
            box-sizing: border-box;
            width: 100%;
            margin-bottom: 26px;
        }

        body.hc-style .b-content__inline_item .trailer {
            display: none !important;
            left: 0;
        }

        body.hc-style .b-content__inline_item-cover {
            padding: 0;
            border: 0;
        }

        body.hc-style .b-content__inline_item-cover img {
            width: 100%;
            height: auto;
        }

        /* Sidelist */

        body.hc-style .b-sidelist__holder .b-sidelist {
            width: calc(100% + 16px) !important;
            display: flex;
        }
        body.hc-style .b-sidelist__holder .b-sidelist .b-content__inline_item {
            width: inherit !important;
        }

        /* Slider */

        body.hc-style.b-theme__template__night .b-newest_slider {
            border-color: #fff;
            color: #fff;
        }

        body.hc-style.b-theme__template__night .b-newest_slider .b-newest_slider__title span {
            border-color: #fff;
            color: #fff;
        }

        /* Сontent page */

        body.hc-style .b-post .b-post__partcontent a,
        body.hc-style .b-post__info a,
        body.hc-style .b-post__info .persons-list-holder .person-name-item a {
            color: #000 !important;
            border-color: #000;
        }

        body.hc-style.b-theme__template__night .b-post .b-post__partcontent a,
        body.hc-style.b-theme__template__night .b-post__info a,
        body.hc-style.b-theme__template__night .b-post__info .persons-list-holder .person-name-item a {
            color: #fff !important;
            border-color: #fff;
        }

        body.hc-style .b-sidecover {
            background: none;
            border: none;
            padding: 0;
            overflow: hidden;
            border-radius: 4px;
        }

        body.hc-style .b-post .b-sidetitle,
        body.hc-style .b-post .b-post__mtitle {
            font-size: 16px;
            font-weight: bold;
            line-height: 18px;
            overflow: hidden;
            padding: 10px 18px;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        body.hc-style .b-post .b-post__actions .btn,
        body.hc-style .b-post .b-sidetitle,
        body.hc-style .b-post .b-post__schedule_block_title,
        body.hc-style .b-post .b-post__schedule_more,
        body.hc-style .b-post .b-post__mtitle {
            background: #ddd;
        }
        body.hc-style .b-post .b-post__actions .btn,
        body.hc-style .b-post .b-sidetitle,
        body.hc-style .b-post .b-post__schedule_block_title .title,
        body.hc-style .b-post .b-post__schedule_more .title,
        body.hc-style .b-post .b-post__mtitle {
            color: #000;
        }
        body.hc-style.b-theme__template__night .b-post .b-post__actions .btn,
        body.hc-style.b-theme__template__night .b-post .b-sidetitle,
        body.hc-style.b-theme__template__night .b-post .b-post__schedule_block_title,
        body.hc-style.b-theme__template__night .b-post .b-post__schedule_more,
        body.hc-style.b-theme__template__night .b-post .b-post__mtitle {
            background: #192125;
        }
        body.hc-style.b-theme__template__night .b-post .b-post__actions .btn,
        body.hc-style.b-theme__template__night .b-post .b-sidetitle,
        body.hc-style.b-theme__template__night .b-post .b-post__schedule_block_title .title,
        body.hc-style.b-theme__template__night .b-post .b-post__schedule_more .title,
        body.hc-style.b-theme__template__night .b-post .b-post__mtitle {
            color: #fff;
        }
        body.hc-style .b-post .b-post__schedule .b-sidetitle {
            display: none;
        }
        body.hc-style .b-post .b-post__partcontent {
            margin-top: 0;
        }
        body.hc-style .b-post .b-post__actions .btn {
            border: 0;
            border-radius: 0;
        }
        body.hc-style .b-post .b-post__social_holder {
            background: #1f1f1f;
        }

        /* Rating stars */

        body.hc-style .b-content__bubble_rating .b-rating > .current,
        body.hc-style .b-post__rating .b-post__rating_layer_current {
            filter: grayscale(100%) !important;
        }
        body.hc-style.b-theme__template__night .b-content__bubble_rating .b-rating > .current,
        body.hc-style.b-theme__template__night .b-post__rating .b-post__rating_layer_current {
            filter: grayscale(100%) brightness(200%) !important;
        }

        body.hc-style .b-content__bubble_rating b {
            color: #000;
        }
        body.hc-style.b-theme__template__night .b-content__bubble_rating b {
            color: #fff;
        }

        body.hc-style .b-post__rating .num {
            color: inherit !important;;
        }

        /* Breadcrumbs */

        body.hc-style .b-content__crumbs a {
            color: #444;
        }

        body.hc-style.b-theme__template__night .b-content__crumbs a {
            color: #fff;
        }

        /* Comments */

        body.hc-style .b-comment__like_it > i {
            display: none;
        }

        body.hc-style .b-comment__likes_count {
            margin: 0 !important;
        }

        body.hc-style .b-comment__quoteuser,
        body.hc-style .b-comment__like_it,
        body.hc-style.b-theme__template__night .b-comment__quoteuser,
        body.hc-style.b-theme__template__night .b-comment__like_it {
            color: #888;
            border-color: #888;
        }

        body.hc-style .b-comment .message > .text {
            color: #000;
        }

        body.hc-style.b-theme__template__night .b-comment .message > .text {
            color: #fff;
        }

        /* Content bubble */

        body.hc-style .b-content__bubble_content a {
            color: #000;
        }

        body.hc-style.b-theme__template__night .b-content__bubble_content a {
            color: #fff;
        }

        /* Player translation, season, episode styles */

        body.hc-style .b-translators__block {
            background: #000;
            padding: 5px 10px 10px 10px;
        }

        body.hc-style .b-rgstats__help,
        body.hc-style .b-translators__title {
            padding-top: 10px;
        }

        body.hc-style .b-simple_seasons__list {
            margin: -10px 0 0 0;
            padding: 5px 10px 10px 10px;
        }

        body.hc-style .b-simple_episodes__list {
            margin: 0;
            padding: 5px 10px 10px 10px;
        }

        body.hc-style .b-translator__item,
        body.hc-style .b-simple_episode__item,
        body.hc-style .b-simple_season__item {
            border-radius: 2.3px;
            background: rgba(23, 35, 34, .7);
            transition: opacity 0.1s linear 0s, background 0.1s linear 0s, transform 0.1s linear 0s;
            margin: 5px 5px 0 0;
            text-align: center;
        }

        body.hc-style .b-translator__item:hover,
        body.hc-style .b-simple_episode__item:hover,
        body.hc-style .b-simple_season__item:hover {
            background: rgba(0, 173, 239, .7);
        }

        body.hc-style .b-translator__item.active,
        body.hc-style .b-simple_episode__item.active,
        body.hc-style .b-simple_season__item.active {
            background: rgba(89, 105, 102, .7) !important;
        }

        body.hc-style .hc-toggle-translators-button {
            margin-top: 10px;
        }

        /* Misc */

        body.hc-style .b-newest_slider__title {
            padding-bottom: 20px;
        }

        /* !css */

        `);

        settings();

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "styles",
                    label: "Декоративные изменения",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                        },
                        {
                            class: "hc-style",
                            text: "Вкл",
                            default: true,
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------PLAYER-COVER----------------------- */
    /* ------------------------------------------------- */

    function initPlayerCover() {
        document.addEventListener("DOMContentLoaded", setup);
        settings();

        function setup() {
            const cover = document.querySelector(".b-sidecover");
            if (!cover) return;

            const imgURL = cover.querySelector("img").src;

            GM_addStyle(`

            /* css */

            body.hc-player-cover #cdnplayer [style*='hc-poster'] {
                background-image:
                    linear-gradient(
                        to left,
                        rgba(0,0,0,1) 0%,
                        rgba(0,0,0,1) 30%,
                        rgba(0,0,0,.8) 50%,
                        rgba(0,0,0,1) 70%,
                        rgba(0,0,0,1) 100%
                    ),
                    url('${imgURL}') !important;
                background-size: auto 100% !important;
                background-position: center !important;
                background-repeat: no-repeat !important;
            }

            /* !css */

            `);
        }

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "player-cover",
                    label: "Отображение обложки",
                    submenu: "Плеер",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                        },
                        {
                            class: "hc-player-cover",
                            text: "Вкл",
                            default: true,
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------HIDE-INFO-------------------------- */
    /* ------------------------------------------------- */

    function initHideInfo() {
        GM_addStyle(`

        /* css */

        /* Content hide info (button) */

        .hc-hide-info-button {
            content: '';
            width: 25px;
            height: 25px;
            margin-right: 5px;
            background-size: 25px 25px;
            background-repeat: no-repeat;
            background-image: url(${images.arrow});
            cursor: pointer;
        }
        body.hc-hide-info .hc-hide-info-button {
            transform: rotate(180deg);
        }

        body.hc-hide-info.hc-hide-title .hc-hide-info-button {
            margin-top: -15px;
        }


        /* Content hide info (hidden styles) */

        body.hc-hide-info .b-post__origtitle,
        body.hc-hide-info .b-post__infotable,
        body.hc-hide-info .b-post__description,
        body.hc-hide-info .b-post__infolast {
            display: none !important;
        }

        /* Content hide info (night theme) */

        body.b-theme__template__night .hc-hide-info-button {
            filter: invert(100%) sepia(95%) saturate(21%) hue-rotate(280deg) brightness(106%) contrast(106%);
        }

        /* !css */

        `);

        settings();
        document.addEventListener("DOMContentLoaded", setup);

        function setup() {
            const title = document.querySelector(".b-post__title");
            if (!title) return;

            if (title.querySelector(".hc-hide-info-button")) return;

            const button = document.createElement("div");
            button.classList.add("pull-right");
            button.classList.add("hc-hide-info-button");
            button.addEventListener("click", function () {
                document.body.classList.toggle("hc-hide-info");
            });
            title.insertBefore(button, title.firstChild);
        }

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "hide-info",
                    label: "Описание",
                    submenu: "Автоматическое сворачивание",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            start: function () {
                                document.body.classList.remove("hc-hide-info");
                            },
                            class: null,
                            text: "Выкл",
                        },
                        {
                            start: function () {
                                document.body.classList.add("hc-hide-info");
                            },
                            class: "hc-hide-info-enabled",
                            text: "Вкл",
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------HIDE-COMMENTS---------------------- */
    /* ------------------------------------------------- */

    function initHideComments() {
        GM_addStyle(`

        /* css */

        body.hc-comments-hide #hd-comments-list,
        body.hc-comments-hide #hd-comments-navigation {
            display: none;
        }

        .hc-comments-title {
            margin-bottom: 13px;
            overflow: hidden;
        }

        .hc-comments-title .title {
            font-size: 16px;
            font-weight: bold;
            line-height: 18px;
            overflow: hidden;
            padding: 10px 18px;
            text-overflow: ellipsis;
            white-space: nowrap;
            width: 520px;
            float: left;
        }

        .hc-comments-title {
            background: #ddd;
        }
        .hc-comments-title .title {
            color: #000;
        }
        body.b-theme__template__night .hc-comments-title {
            background: #192125;
        }
        body.b-theme__template__night .hc-comments-title .title {
            color: #fff;
        }

        .hc-act {
            color: #878586;
            cursor: pointer;
            float: right;
            font-size: 12px;
            margin-top: 8px;
            margin-right: 18px;
        }

        .hc-act:hover {
            text-decoration: underline;
        }

        .hc-act-show {
            display: none;
        }

        .hc-act-hide {
            display: block;
        }

        body.hc-comments-hide .hc-act-show {
            display: block;
        }

        body.hc-comments-hide .hc-act-hide {
            display: none;
        }

        body.hc-comments-hide .b-content__crumbs {
            margin-top: 30px;
        }

        /* !css */

        `);

        settings();
        document.addEventListener("DOMContentLoaded", setup);

        function setup() {
            const commentsList = document.querySelector("#hd-comments-list");
            if (!commentsList) return;

            const commentsTitle = document.createElement("div");
            commentsTitle.classList.add("hc-comments-title");
            commentsTitle.addEventListener("click", function () {
                document.body.classList.toggle("hc-comments-hide");
            });

            const commentsButton = document.querySelector("#comments-list-button");
            commentsButton.addEventListener("click", function () {
                document.body.classList.remove("hc-comments-hide");
            });

            const title = document.createElement("div");
            title.innerText = "Отзывы";
            title.classList.add("title");
            commentsTitle.appendChild(title);

            const actShow = document.createElement("div");
            actShow.classList.add("hc-act");
            actShow.classList.add("hc-act-show");
            actShow.innerText = "развернуть";
            commentsTitle.appendChild(actShow);

            const actHide = document.createElement("div");
            actHide.classList.add("hc-act");
            actHide.classList.add("hc-act-hide");
            actHide.innerText = "свернуть";
            commentsTitle.appendChild(actHide);

            commentsList.parentNode.insertBefore(commentsTitle, commentsList);
        }

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "comments-hide",
                    label: "Отзывы",
                    submenu: "Автоматическое сворачивание",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            start: function () {
                                document.body.classList.remove("hc-comments-hide");
                            },
                            class: null,
                            text: "Выкл",
                        },
                        {
                            start: function () {
                                document.body.classList.add("hc-comments-hide");
                            },
                            class: "hc-comments-hide-enabled",
                            text: "Вкл",
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------TRANSLATORS------------------------ */
    /* ------------------------------------------------- */

    function initHideTranslators() {
        GM_addStyle(`

        /* css */

        /* Content hide translators */

        .hc-translators-hide-enabled .b-translator__item.active {
            cursor: pointer;
        }
        .hc-translators-hide-enabled .hc-toggle-translators-button {
            content: '';
            float: left;
            width: 20px;
            height: 20px;
            margin-right: 3px;
            margin-top: 8px;
            margin-left: 5px;
            background-size: 20px 20px;
            background-repeat: no-repeat;
            background-image: url(${images.arrow});
            filter: invert(100%) sepia(95%) saturate(21%) hue-rotate(280deg) brightness(106%) contrast(106%);
            transform: rotate(90deg);
            cursor: pointer;
        }
        .hc-translators-hide-enabled .hc-show-translators .hc-toggle-translators-button {
            transform: rotate(-90deg);
        }
        .hc-translators-hide-enabled .b-translator__item:not(.active):not(.hc-toggle-translators-button) {
            display: none;
        }
        .hc-translators-hide-enabled .b-translators__title {
            display: none;
        }
        .hc-translators-hide-enabled .hc-show-translators .b-translator__item:not(.active):not(.hc-toggle-translators-button) {
            display: block;
        }
        .hc-translators-hide-enabled .hc-show-translators .b-translators__title {
            display: block;
        }

        /* !css */

        `);

        settings();
        document.addEventListener("DOMContentLoaded", setup);

        function setup() {
            function toggle() {
                document.querySelector(".b-translators__block").classList.toggle("hc-show-translators");
            }

            const translators = document.querySelector(".b-translators__block");
            if (!translators) return;

            const translatorsList = translators.querySelector(".b-translators__list");
            if (!translatorsList) return;

            const toggler = document.createElement("li");
            toggler.classList.add("hc-toggle-translators-button");
            toggler.addEventListener("click", toggle);
            translatorsList.appendChild(toggler);

            translatorsList.querySelectorAll(".b-translator__item").forEach(function (button) {
                button.addEventListener("click", function () {
                    if (this.classList.contains("active")) {
                        toggle();
                    }
                });
            });
        }

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "translators",
                    label: "Список переводов",
                    submenu: "Автоматическое сворачивание",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                        },
                        {
                            class: "hc-translators-hide-enabled",
                            text: "Вкл",
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------IMDB-RATING------------------------ */
    /* ------------------------------------------------- */

    function initIMDbRating() {
        GM_addStyle(`

        /* css */

        /* Rating */

        .b-content__inline_item-link > .rating {
            display: none;
        }

        body.hc-imdb .b-content__inline_item-link > .rating {
            display: block;
        }

        .b-content__inline_item-link > .rating {
            position: relative;
            line-height: 15px;
            font-size: 11px;
            font-weight: normal;
            margin-top: 3px;
        }
        .b-content__inline_item-link > .rating .rating-votes {
            font-size: 9px;
        }
        .b-content__inline_item-link > .rating .rating-value {
            padding-left: 29px;
            background-size: auto 24px;
            background-position: left -6px;
            background-repeat: no-repeat;
            background-image: url(${images.imdb});
            color: black;
            filter: invert(66%) sepia(77%) saturate(1448%) hue-rotate(347deg) brightness(99%) contrast(91%);  /* https://codepen.io/sosuke/pen/Pjoqqp */
        }
        .b-content__inline_item-link > .rating .rating-value.low {
            filter: invert(30%) sepia(53%) saturate(2254%) hue-rotate(337deg) brightness(97%) contrast(95%);  /* https://codepen.io/sosuke/pen/Pjoqqp */
        }
        .b-content__inline_item-link > .rating .rating-value.high {
            filter: invert(68%) sepia(79%) saturate(5115%) hue-rotate(105deg) brightness(99%) contrast(99%);  /* https://codepen.io/sosuke/pen/Pjoqqp */
        }

        /* !css */

        `);

        settings();

        function setWithExpiry(key, value, ttl) {
            const now = new Date();

            // `item` is an object which contains the original value
            // as well as the time when it's supposed to expire
            const item = {
                value: value,
                expiry: now.getTime() + ttl,
            };
            localStorage.setItem(key, JSON.stringify(item));
        }

        function getWithExpiry(key) {
            const itemStr = localStorage.getItem(key);
            // if the item doesn't exist, return null
            if (!itemStr) {
                return null;
            }
            const item = JSON.parse(itemStr);
            const now = new Date();
            // compare the expiry time of the item with the current time
            if (now.getTime() > item.expiry) {
                // If the item is expired, delete the item from storage
                // and return null
                localStorage.removeItem(key);
                return null;
            }
            return item.value;
        }

        function getRating(id) {
            return new Promise(function (resolve, reject) {
                console.debug(`IMDB Rating: request quick content for id=${id}.`);
                GM_xmlhttpRequest({
                    method: "POST",
                    url: "/engine/ajax/quick_content.php",
                    data: `id=${id}&is_touch=1`,
                    headers: {
                        "Content-Type": "application/x-www-form-urlencoded",
                    },
                    onload: function (response) {
                        // One weak ttl in ms
                        const ttl = 7 * 24 * 60 * 60 * 1000;
                        if (response.status === 200) {
                            // Is 200 status code
                            // Find IMDb block
                            const ratingPattern =
                                /<span class="imdb">IMDb: <b>(?<rating>.*)<\/b> <i>\((?<votes>.*)\)<\/i>\<\/span>/;
                            const ratingResult = ratingPattern.exec(response.responseText);
                            if (ratingResult && ratingResult.groups && ratingResult.groups.rating) {
                                // IMDb block found
                                // Get actual rating
                                const rating = ratingResult.groups.rating;
                                // Get actual votes count
                                const votes = ratingResult.groups.votes;
                                // Save real rating to Storage
                                // Resolve with real rating
                                const data = {
                                    rating: rating,
                                    votes: votes,
                                    id: id,
                                };
                                setWithExpiry(id, data, ttl);
                                resolve(data);
                                console.debug(`IMDB Rating: request quick content for id=${id} success.`);
                                return;
                            }
                            // IMDb block not found
                            // Save empty rating to storage to not make new request in next page load
                            // Resolve with empty rating
                            const data = { rating: "", votes: "", id: id };
                            setWithExpiry(id, data, ttl);
                            resolve(data);
                            console.debug(
                                `IMDB Rating: request quick content for id=${id} success, but no correct data found.`
                            );
                        } else {
                            console.debug(
                                `IMDB Rating: request quick content for id=${id} failed with ${response.status} status code.`
                            );
                            // Isn't 200 status code
                            reject();
                        }
                    },
                    onerror: function (e) {
                        console.debug(`IMDB Rating: request quick content for id=${id} failed.`);
                        // Request failed
                        reject();
                    },
                });
            });
        }

        function showRating(ratingObject) {
            if (
                ratingObject &&
                ratingObject.id !== null &&
                ratingObject.rating !== null &&
                ratingObject.rating !== ""
            ) {
                // Got rating
                // Find related elements to append rating
                document
                    .querySelectorAll(`[data-id="${ratingObject.id}"] .b-content__inline_item-link`)
                    .forEach(function (contentItemLinkElement) {
                        // Check rating wasn't already appended
                        if (contentItemLinkElement && !contentItemLinkElement.querySelector(".rating")) {
                            // Append rating block
                            let votesText;
                            try {
                                votesText = `${parseInt(parseInt(ratingObject.votes.replace(/\s/g, "")) / 1000)}k`;
                            } catch (e) {
                                console.debug(e);
                                votesText = "";
                            }
                            let colorClass;
                            if (ratingObject.rating < 5) {
                                colorClass = "low";
                            } else if (ratingObject.rating < 7) {
                                colorClass = "medium";
                            } else {
                                colorClass = "high";
                            }
                            contentItemLinkElement.innerHTML +=
                                /* html */
                                `
                                    <!-- html -->
                                    <span class="rating">
                                        <span class="rating-value ${colorClass}"><b>${ratingObject.rating}</b></span>
                                        <span> / </span>
                                        <span class="rating-votes">${votesText}</span>
                                    </span>
                                    <!-- !html -->
                                `;
                        }
                    });
            }
        }

        function getAndShowRating(contentItemElement, callback) {
            function showRatingWithCallback(ratingObject) {
                showRating(ratingObject);
                if (callback) {
                    callback();
                }
            }
            const id = contentItemElement.dataset.id;
            const ratingObject = getWithExpiry(id);
            if (
                ratingObject !== null &&
                ratingObject.id != null &&
                ratingObject.rating != null &&
                ratingObject.votes != null
            ) {
                // Found vaid saved rating in storage
                // Show rating from storage
                showRatingWithCallback(ratingObject);
            } else {
                // Rating not found in storage
                // Request rating and then show
                getRating(id)
                    .then(showRatingWithCallback)
                    .catch(function () {});
            }
        }

        function getAndShowRatings(contentItemElements) {
            if (contentItemElements.length) {
                getAndShowRating(contentItemElements.shift(), function () {
                    getAndShowRatings(contentItemElements);
                });
            }
        }

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "imdb",
                    label: "Добавление рейтинга IMDb",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                        },
                        {
                            end: function () {
                                getAndShowRatings(Array.from(document.querySelectorAll(".b-content__inline_item")));
                            },
                            class: "hc-imdb",
                            text: "Вкл",
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------HOTKEYS---------------------------- */
    /* ------------------------------------------------- */

    function initHotkeys() {
        const HELP_TOOLTIP =
            /* html */
            `
            <!-- html -->
            <span class="hc-tooltip" style="float: right;">
                <span class="hc-tooltip-icon">i</span>
                <div class="tooltiptext">
                    <div>Список горячих клавиш</div>
                    <ul style="margin-top: 15px;">
                        <li style="margin-top: 5px;">ПРОБЕЛ - Плей/Пауза</li>
                        <li style="margin-top: 5px;">F - Полноэкранный режим</li>
                        <li style="margin-top: 5px;">N - Следующий эпизод</li>
                        <li style="margin-top: 5px;">P - Предыдущий эпизод</li>
                    </ul>
                    <div style="margin-top: 15px;">
                        <small>
                            В отличии от оригинальных работают с
                            разу полсле загрузки страницы.
                            В том числе когда плеер не в фокусе
                            или был не в фокусе на момент перевода
                            в полноэкранный режим.
                        </small>
                    </div>
                </div>
            </span>
            <!-- !html -->
        `;

        function setup() {
            function anyActiveInput() {
                const inputs = document.querySelectorAll("input,textarea");
                return Array.from(inputs).includes(document.activeElement);
            }

            document.addEventListener("keyup", function (e) {
                if (!anyActiveInput()) {
                    switch (e.code) {
                        case "KeyF":
                            hc.player.enterfullscreen();
                            e.preventDefault();
                            break;
                    }
                }
            });

            document.addEventListener("keydown", function (e) {
                if (!anyActiveInput()) {
                    switch (e.code) {
                        case "KeyN":
                            hc.player.next();
                            e.preventDefault();
                            break;
                        case "KeyP":
                            hc.player.prev();
                            e.preventDefault();
                            break;
                        case "Space":
                            hc.player.toggle();
                            e.preventDefault();
                            break;
                    }
                }
            });
        }

        settings();

        function settings() {
            if (hc.settings) {
                const settingConfig = {
                    name: "hotkeys",
                    label: `Улучшеные горячие клавиши`,
                    submenu: "Плеер",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                            reload: true,
                        },
                        {
                            end: setup,
                            class: "hc-hotkeys-enabled",
                            text: "Вкл",
                            default: true,
                            reload: true,
                        },
                    ],
                }
                const tumblerSetting = hc.settings.buildTumblerSetting(settingConfig);

                const tooltip = document.createElement("div");
                tooltip.innerHTML = HELP_TOOLTIP;
                tumblerSetting.appendChild(tooltip);

                hc.settings.addElementSetting(tumblerSetting, settingConfig);
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------HIDE-RUSSIAN----------------------- */
    /* ------------------------------------------------- */

    function initHideRussian() {
        GM_addStyle(`

        /* css */

        /* Main */

        .hc-hide-russian .hc-content-russian,
        .hc-hide-ussr .hc-content-ussr {
            display: none;
        }

        .hc-russia {
            display: block;
            width: 100%;
            height: 320px;
            background-color: black;
            background-image: url(${images.russia});
            background-size: auto 260px;
            background-repeat: no-repeat;
            background-position: center;
        }

        body:not(.b-theme__template__night) .hc-russia {
            filter: invert(94%);
        }

        /* !css */

        `);

        document.addEventListener("DOMContentLoaded", setup);
        settings();

        function markCountryItems(country, name) {
            document.querySelectorAll(".b-content__inline_item").forEach(function (elem) {
                markCountryItem(elem, country, name);
            });
        }

        function markCountryItem(elem, country, name) {
            const countryClassName = "hc-content-" + name;
            if (elem.textContent.includes(country + ",") && !elem.classList.contains(countryClassName)) {
                elem.classList.add(countryClassName);
                logCountryItem(elem, country);
            }
        }

        function logCountryItem(elem, country) {
            const title = elem.querySelector(".b-content__inline_item-link a").textContent.trim();
            const year = elem
                .querySelector(".b-content__inline_item-link div")
                .textContent.trim()
                .split(",")[0]
                .trim()
                .split("-")[0]
                .trim();
            console.debug(`Mark "${title}, ${year}" as "${country}" content`);
        }

        function showTerroristBanner() {
            const newest = document.querySelector(".b-collections__newest");
            if (newest) {
                const russia = document.createElement("a");
                russia.href = "https://twitter.com/search?q=%23russiaisaterrorisstate";
                russia.target = "_blank";
                russia.classList.add("hc-russia");
                newest.parentElement.insertBefore(russia, newest);
            }
        }

        function setup() {
            markCountryItems("Россия", "russian");
            markCountryItems("СССР", "ussr");
            showTerroristBanner();
        }

        function settings() {
            if (hc.settings) {
                hc.settings.createTumblerSetting({
                    name: "hide-russian",
                    label: "Россия",
                    submenu: "Скрытие контента из стран оккупантов",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                        },
                        {
                            class: "hc-hide-russian",
                            text: "Вкл",
                        },
                    ],
                });
                hc.settings.createTumblerSetting({
                    name: "hide-ussr",
                    label: "СССР",
                    submenu: "Скрытие контента из стран оккупантов",
                    classes: ["hc-on-of-tumbler"],
                    options: [
                        {
                            class: null,
                            text: "Выкл",
                        },
                        {
                            class: "hc-hide-ussr",
                            text: "Вкл",
                        },
                    ],
                });
            }
        }
    }

    /* ------------------------------------------------- */
    /* --------------SETTINGS--------------------------- */
    /* ------------------------------------------------- */

    function initSettings() {
        GM_addStyle(`
        /* css */

        /* Settings */

        .hc-settings {
            position: relative;
        }

        /* Tumbler */

        .hc-tumbler {
            width: 38px;
            height: 30px;
            background-color: #000;
            border: #1d92b2;
            border-radius: 30px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 0 6px;
            cursor: pointer;
            position: relative;
            user-select: none;
        }
        .hc-tumbler-point {
            border-radius: 50%;
            content: '';
            display: block;
            height: 20px;
            width: 20px;
            background-color: #999;
            background-clip: content-box;
            box-sizing: border-box;
            border-color: transparent;
            border-style: solid;
            border-width: 5px;
        }
        .hc-tumbler > .hc-tumbler-dot {
            position: absolute;
            height: 20px;
            width: 20px;
            border-radius: 50%;
            background-color: #fff;
            transition: transform .5s,background-color .5s;
            will-change: transform;
        }
        body.b-theme__template__night .hc-tumbler {
            background: #222d33;
        }

        /* On-Off Tumbler */

        .hc-on-of-tumbler .hc-tumbler-point:nth-child(1) {
            background-color: green;
        }
        .hc-on-of-tumbler .hc-tumbler-point:nth-child(2) {
            background-color: indianred;
        }

        /* Settings */

        .hc-settings > ul {
            width: 350px;
            display: none;
            background: #313131;
            border-top: 0;
            position: absolute;
            top: 50px;
            left: 0px;
            white-space: nowrap;
            box-shadow: 0 5px 20px 0px #000;
            border-color: #222d33;
            border-style: solid;
            border-width: 3px 3px 3px 3px;
            padding: 5px 0 0 0;
        }
        .hc-settings > ul:before {
            content: '';
            display: block;
            position: absolute;
            top: -13px;
            left: 20px;
            width: 0;
            height: 0;
            border-left: 10px solid transparent;
            border-right: 10px solid transparent;
            border-bottom: 10px solid #222d33;
        }

        .hc-settings > ul:after {
            content: '';
            display: block;
            position: absolute;
            top: -9px;
            left: 21px;
            width: 0;
            height: 0;
            border-left: 9px solid transparent;
            border-right: 9px solid transparent;
            border-bottom: 9px solid #313131;
        }

        body.b-theme__template__night .hc-settings > ul:after {
            border-bottom-color: #060f13;
        }

        body.hc-settings-active .hc-settings > ul {
            display: block !important;
        }

        .hc-settings > ul > li,
        .hc-setting-submenu > ul > li {
            color: #777;
            font-size: 10px;
            font-weight: bold;
            margin: 0 !important;
            padding-left: 10px;
            padding-right: 10px;
            padding-top: 5px;
            padding-bottom: 5px;
            min-height: 30px;
        }


        .hc-settings > ul > li .hc-setting,
        .hc-setting-submenu > ul > li .hc-setting {
            display: inline-block;
            width: 100%;
        }

        .hc-settings > ul > li .hc-tumbler,
        .hc-setting-submenu > ul > li .hc-tumbler {
            float: right;
        }

        .hc-settings .hc-setting-header {
            text-align: center;
        }

        .hc-settings .hc-setting-text-value {
            display: block;
            opacity: .5;
        }

        .hc-settings .hc-setting-text-block {
            float: left;
            position: relative;
            padding-top: 5px;
        }

        body.b-theme__template__night .hc-settings > ul {
            background: #060f13;
        }

        .hc-setting-submenu {
            position: relative;
            cursor: pointer;
        }

        .hc-setting-submenu > ul {
            background: #212121;
            margin: 30px -10px 0;
            padding: 10px 0;
        }

        .hc-settings > ul > li:last-child .hc-setting-submenu > ul {
            margin-bottom: -5px;
        }

        .hc-setting-submenu-arrow {
            float: right;
            width: 15px;
            height: 15px;
            margin-right: 10px;
            margin-top: 5px;
            background-size: 15px 15px;
            background-repeat: no-repeat;
            background-image: url(${images.arrow});
            filter: invert(100%) sepia(95%) saturate(21%) hue-rotate(280deg) brightness(106%) contrast(106%);
            transform: rotate(180deg);
        }

        /* Settings tumbler */

        .hc-tumbler-settings {
            margin-top: 5px;
            margin-left: 10px;
        }
        .hc-tumbler-settings .hc-tumbler-point {
            background-size: 15px 15px;
            background-repeat: no-repeat;
            background-position: center;
            border-width: 2px;
        }
        .hc-tumbler-settings .hc-tumbler-point:nth-child(1) {
            background-image: url('${images.settings}');
            background-color: transparent !important;
        }
        .hc-tumbler-settings .hc-tumbler-point:nth-child(2) {
            background-image: url('${images.settingsclose}');
            background-color: transparent !important;
        }

        .hc-tumbler-settings-update,
        .hc-tumbler-settings-update:hover {
            height: 30px;
            background: #f4363630;
            position: absolute;
            left: 0;
            margin-left: 30px;
            margin-top: 5px;
            border-radius: 30px;
            color: #b44b44 !important;
            line-height: 30px;
            padding: 0 20px 0 40px;
            cursor: pointer;
            text-decoration: none;
        }

        /* Tooltip */

        .hc-tooltip {
            position: relative;
            display: inline-block;
            border-bottom: 1px dotted black;
        }

        .hc-tooltip .tooltiptext {
            background: #313131;
            border-top: 0;
            position: absolute;
            top: -10px;
            left: 35px;
            white-space: nowrap;
            box-shadow: 0 5px 20px 0px #000;
            border-color: #222d33;
            border-style: solid;
            border-width: 3px;
            visibility: hidden;
            width: 300px;
            white-space: normal;
            padding: 15px;
            position: absolute;
            z-index: 3;
        }

        body.b-theme__template__night .hc-tooltip .tooltiptext {
            background: #060f13;
        }

        .hc-tooltip:hover .tooltiptext {
            visibility: visible;
        }

        .hc-tooltip .tooltiptext:before {
            content: '';
            display: block;
            position: absolute;
            left: -13px;
            top: 11px;
            width: 0;
            height: 0;
            border-top: 10px solid transparent;
            border-bottom: 10px solid transparent;
            border-right: 10px solid #222d33;
        }

        .hc-tooltip .tooltiptext:after {
            content: '';
            display: block;
            position: absolute;
            left: -9px;
            top: 12px;
            width: 0;
            height: 0;
            border-top: 9px solid transparent;
            border-bottom: 9px solid transparent;
            border-right: 9px solid #222d33;
        }

        body.b-theme__template__night .hc-tooltip .tooltiptext:after {
            border-right-color: #060f13;
        }

        .hc-tooltip-icon {
            border-radius: 50%;
            background: #777;
            width: 14px;
            height: 14px;
            display: inline-block;
            text-align: center;
            color: #000;
            text-transform: lowercase;
            cursor: pointer;
            font-family: monospace, monospace;
            font-size: 13px;
            margin: 8px;
        }

        */

        /* !css */
        `);

        hc.settings = {};
        hc.settings.buildTumblerSetting = buildTumblerSetting;
        hc.settings.createTumblerSetting = createTumblerSetting;
        hc.settings.addElementSetting = addElementSetting;
        hc.settings.setSetting = setSetting;
        hc.settings.getSetting = getSetting;

        const SETTINGS_NAME = "hc-settings";
        const DEFAULT_SETTING = "";

        const SCRIPT_HOMEPAGE = "https://gf.qytechs.cn/en/scripts/425494";

        setup();
        document.addEventListener("DOMContentLoaded", add);

        function setSetting(name, value) {
            const settingsStr = localStorage.getItem(SETTINGS_NAME);
            let settings = settingsStr !== null ? JSON.parse(settingsStr) : {};
            settings[name] = value;
            localStorage.setItem(SETTINGS_NAME, JSON.stringify(settings));
        }

        function getSetting(name) {
            const settingsStr = localStorage.getItem(SETTINGS_NAME);
            const settings = settingsStr !== null ? JSON.parse(settingsStr) : {};
            let setting = settings[name];
            return setting !== undefined ? setting : null;
        }

        function setCongigSetting(config, option) {
            const value = option.class !== null ? option.class : DEFAULT_SETTING;
            setSetting(config.name, value);
        }

        function getConfigSetting(config) {
            return getSetting(config.name);
        }

        function getDefaultOption(config) {
            for (let optionIndex = 0; optionIndex < config.options.length; optionIndex++) {
                const tumblerOption = config.options[optionIndex];
                if (tumblerOption.default === true) {
                    return tumblerOption;
                }
            }
        }

        function setBodyClass(config, option) {
            for (let optionIndex = 0; optionIndex < config.options.length; optionIndex++) {
                const tumblerOption = config.options[optionIndex];
                if (tumblerOption.class !== null) {
                    document.body.classList.remove(tumblerOption.class);
                }
            }

            if (option && option.class) {
                document.body.classList.add(option.class);
            }
        }

        function getNextOption(config, option) {
            let nextOptionIndex;
            if (option) {
                const currentOptionIndex = config.options.indexOf(option);
                if (currentOptionIndex < config.options.length - 1) {
                    nextOptionIndex = currentOptionIndex + 1;
                } else {
                    nextOptionIndex = 0;
                }
            } else {
                nextOptionIndex = 1;
            }
            return config.options[nextOptionIndex];
        }

        function getCurrentOption(config) {
            const currentSetting = getConfigSetting(config);

            if (currentSetting != null) {
                for (let optionIndex = 0; optionIndex < config.options.length; optionIndex++) {
                    const tumblerOption = config.options[optionIndex];
                    const optionSetting = tumblerOption.class !== null ? tumblerOption.class : DEFAULT_SETTING;
                    if (optionSetting === currentSetting) {
                        return tumblerOption;
                    }
                }
            }

            const option = getDefaultOption(config);

            if (option) {
                setCongigSetting(config, option);
                return option;
            } else {
                setCongigSetting(config, { class: DEFAULT_SETTING });
            }
        }

        function rotateSetting(config) {
            const currentOption = getCurrentOption(config);
            const nextOption = getNextOption(config, currentOption);
            setCongigSetting(config, nextOption);
            setBodyClass(config, nextOption);
            if (nextOption.reload === true) {
                document.location.reload();
            }
            if (nextOption.start) {
                nextOption.start();
            }
            if (nextOption.end) {
                nextOption.end();
            }
        }

        function initSetting(config) {
            const currentOption = getCurrentOption(config);
            setBodyClass(config, currentOption);
            if (currentOption && currentOption.start) {
                currentOption.start();
            }
            if (currentOption && currentOption.end) {
                document.addEventListener("DOMContentLoaded", currentOption.end);
            }
        }

        var settings;

        function add() {
            const tophead = document.querySelector(".b-tophead-left");
            if (!tophead) return;

            tophead.appendChild(settings);
        }

        function setup() {
            settings = buildTumbler({
                handler: toggle,
                name: "settings",
                classes: [],
                options: [
                    {
                        class: null,
                    },
                    {
                        class: "hc-settings-active",
                    },
                ],
            });
            settings.classList.add("hc-settings");
            settings.classList.add("pull-left");

            const dropdown = document.createElement("ul");
            settings.appendChild(dropdown);

            const item = document.createElement("div");
            item.classList.add("hc-setting-header");

            const name = document.createElement("div");
            name.classList.add("hc-setting-label");
            name.innerHTML = `<a href="${SCRIPT_HOMEPAGE}" target="_blank">${GM_info.script.name}</a>`;

            const feedback = document.createElement("div");
            feedback.classList.add("hc-setting-text-value");
            feedback.innerHTML = `<a href="${SCRIPT_HOMEPAGE}/feedback" target="_blank">Отзывы и предложения</a>`;

            const version = document.createElement("div");
            version.classList.add("hc-setting-text-value");
            version.innerHTML = `Версия: ${GM_info.script.version}`;

            GM_xmlhttpRequest({
                method: "GET",
                url: SCRIPT_HOMEPAGE,
                onload: function (response) {
                    console.debug(response);
                    if (response.status === 200) {
                        const patern =
                            /<a class="install-link" [^>]* data-script-version="(?<version>[^"]*)" [^>]* href="(?<href>[^"]*)"[^>]*>/;
                        const results = patern.exec(response.responseText);
                        if (results && results.groups) {
                            if (results.groups.version != GM_info.script.version) {
                                let updateURL = new URL(SCRIPT_HOMEPAGE);
                                updateURL.pathname = results.groups.href;

                                const updateTumbler = document.createElement("a");
                                updateTumbler.href = updateURL;
                                updateTumbler.classList.add("hc-tumbler-settings-update");
                                updateTumbler.innerText = "Обновить";

                                settings.insertBefore(updateTumbler, settings.firstChild);
                            }
                        } else {
                            console.debug(`Failed to parse install link`);
                        }
                    }
                },
                onerror: function (e) {
                    console.debug(`Failed to request install link`);
                    console.debug(e);
                },
            });

            item.appendChild(name);
            item.appendChild(feedback);
            item.appendChild(version);

            addElementSetting(item);

            document.addEventListener("click", close);
        }

        function toggle(event) {
            document.body.classList.toggle("hc-settings-active");
            event.stopPropagation();
        }

        function close(event) {
            if (!event.target.closest(".hc-settings")) {
                document.body.classList.remove("hc-settings-active");
            }
        }

        function findSubmenu(config) {
            const submenuAll = settings.querySelectorAll(".hc-setting-submenu");
            var submenuFiltered = Array.from(submenuAll).find(function(el) {
                return el.querySelector(".hc-setting-label").textContent === config.submenu;
            });
            if (submenuFiltered) {
                return submenuFiltered.querySelector("ul");
            }
        }

        function createSubmenu(config) {
            const settingTextBlock = buildSettingTextBlock(config.submenu);
            var submenu = document.createElement("ul");
            submenu.addEventListener("click", function(event) {
                event.stopPropagation();
            });
            submenu.classList.add("hidden");
            var submenuArrow = document.createElement("span");
            submenuArrow.classList.add("hc-setting-submenu-arrow");
            var submenuElem = document.createElement("div");
            submenuElem.classList.add("hc-setting");
            submenuElem.classList.add("hc-setting-submenu");
            submenuElem.appendChild(settingTextBlock);
            submenuElem.appendChild(submenuArrow);
            submenuElem.appendChild(submenu);
            var submenuItem = document.createElement("li");
            submenuItem.appendChild(submenuElem);
            submenuItem.addEventListener("click", function(event) {
                submenu.classList.toggle("hidden");
            });
            const dropdown = settings.querySelector("ul");
            dropdown.appendChild(submenuItem);
            return submenu;
        }

        function addElementSetting(element, config) {
            var container;

            if (config && config.submenu) {
                var submenu = findSubmenu(config);
                if (!submenu) {
                    submenu = createSubmenu(config);
                }
                container = submenu;
            } else {
                const dropdown = settings.querySelector("ul");
                container = dropdown;
            }

            const item = document.createElement("li");
            item.appendChild(element);
            container.appendChild(item);
        }

        function buildTumbler(config) {
            const optionsLength = config.options.length;
            const tumblerClassName = "hc-tumbler-" + config.name;

            GM_addStyle(`
            /* css */

            .${tumblerClassName} {
                width: ${optionsLength * 15 + optionsLength * 5}px !important;
            }

            /* !css */
            `);

            const tumblerWrapper = document.createElement("div");
            tumblerWrapper.classList.add("hc-tumbler-wrapper");

            const tumbler = document.createElement("div");
            tumbler.classList.add("hc-tumbler");
            tumbler.classList.add(tumblerClassName);
            tumbler.className += " " + config.classes.join(" ");

            tumbler.addEventListener("click", config.handler);

            for (let optionIndex = 0; optionIndex < optionsLength; optionIndex++) {
                const tumblerOption = config.options[optionIndex];
                const tumblerPoint = document.createElement("div");
                tumblerPoint.classList.add("hc-tumbler-point");
                tumbler.appendChild(tumblerPoint);

                if (tumblerOption.class !== null) {
                    // Add dot move style for all points except initial
                    const enabledClassName = tumblerOption.class;

                    GM_addStyle(`
                    /* css */

                    .${enabledClassName} .${tumblerClassName} .hc-tumbler-dot {
                        transform: translateX(${optionIndex * 100}%);
                    }

                    /* !css */
                    `);
                }
            }

            const tumblerDot = document.createElement("div");
            tumblerDot.classList.add("hc-tumbler-dot");
            tumbler.appendChild(tumblerDot);

            tumblerWrapper.appendChild(tumbler);

            return tumblerWrapper;
        }

        function buildSettingTextBlock(label) {
            const settingTextBlock = document.createElement("div");
            settingTextBlock.classList.add("hc-setting-text-block");

            const labelSpan = document.createElement("span");
            labelSpan.classList.add("hc-setting-label");
            labelSpan.innerHTML = label;

            settingTextBlock.appendChild(labelSpan);

            return settingTextBlock;
        }

        function buildTumblerSetting(config) {
            initSetting(config);
            const originalHandler = config.handler;
            function handler(event) {
                rotateSetting(config);
                if (originalHandler) {
                    originalHandler(event);
                }
            }
            config.handler = handler;

            const tumblerWrapper = buildTumbler(config);
            tumblerWrapper.classList.add("hc-setting");

            const settingClass = "hc-setting-" + config.name;
            tumblerWrapper.classList.add(settingClass);

            const settingTextBlock = buildSettingTextBlock(config.label);

            const optionsLength = config.options.length;

            let defaultSelectors = [];
            for (let tumblerIndex = 0; tumblerIndex < optionsLength; tumblerIndex++) {
                const tumplerOption = config.options[tumblerIndex];
                if (tumplerOption.class !== null) {
                    defaultSelectors.push(`body.${tumplerOption.class} .${settingClass} .hc-setting-text-value-1`);
                }
            }

            for (let optionIndex = 0; optionIndex < optionsLength; optionIndex++) {
                const tumplerOption = config.options[optionIndex];
                const textValueClass = "hc-setting-text-value-" + (optionIndex + 1);

                const textValueSpan = document.createElement("span");
                textValueSpan.classList.add("hc-setting-text-value");
                textValueSpan.classList.add(textValueClass);
                textValueSpan.innerHTML = tumplerOption.text;
                settingTextBlock.appendChild(textValueSpan);

                if (optionIndex == 0) {
                    GM_addStyle(`
                    /* css */

                    ${defaultSelectors.join(",")} {
                        display: none !important;
                    }

                    /* !css */
                    `);
                } else {
                    const enabledClassName = tumplerOption.class;
                    GM_addStyle(`
                    /* css */

                    body:not(.${enabledClassName}) .${settingClass} .${textValueClass} {
                        display: none !important;
                    }

                    /* !css */
                    `);
                }
            }

            tumblerWrapper.appendChild(settingTextBlock);

            return tumblerWrapper;
        }

        function createTumblerSetting(config) {
            const tumblerSetting = buildTumblerSetting(config);
            addElementSetting(tumblerSetting, config);
        }
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址