Greasy Fork is available in English.

Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)

Optimice la página de reproducción de video colocando la sección de comentarios en el lado derecho del reproductor de video para una experiencia de navegación más cómoda y conveniente.Al mismo tiempo, el script también puede omitir anuncios de video ~

// ==UserScript==
// @name        Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:zh-CN  Youtubeᴾˡᵘˢ(油管)超级助手 - 视频下载 & 🚫去广告 & 布局优化,使用更舒服
// @name:zh-TW  Youtubeᴾˡᵘˢ(油管)超級助手 - 視頻下載 & 🚫去廣告 & 布局優化,使用更舒服
// @name:ar     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:bg     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:cs     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:da     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:de     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:el     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:en     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:eo     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:es     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:es-419 Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:fi     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:fr     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:fr-CA  Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:he     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:hr     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:hu     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:id     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!))
// @name:it     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:ja     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:ka     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:ko     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:nb     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:nl     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:pl     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:pt-BR  Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:ro     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:ru     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:sv     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:th     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:tr     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:uk     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:ug     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @name:vi     Youtubeᴾˡᵘˢ Super Assistant(Video Downloader & 🚫 No ads & New Layout For YT!)
// @description       Optimize the video playback page by placing the comments section on the right side of the video player for a more comfortable and convenient browsing experience. At the same time, the script can also skip video ads~
// @description:zh-CN 优化视频播放页面,将评论区放在视频播放器右侧,可以边看视频边浏览评论,体验更加舒适;自动移除广告,跳过视频广告;视频下载;其他界面优化等~
// @description:zh-TW 優化視頻播放頁面,將評論區放在視頻播放器右側,可以邊看視頻邊瀏覽評論,體驗更加舒適;自動移除廣告,跳過視頻廣告;視頻下載;其他界面優化等~
// @description:ar    قم بتحسين صفحة تشغيل الفيديو من خلال وضع قسم التعليقات على الجانب الأيمن من مشغل الفيديو لتجربة تصفح أكثر راحة ومريحة.في الوقت نفسه ، يمكن للنص أيضًا تخطي إعلانات الفيديو ~
// @description:bg    Оптимизирайте страницата за възпроизвеждане на видео, като поставите секцията за коментари от дясната страна на видео плейъра за по -удобно и удобно изживяване на сърфиране.В същото време скриптът може да пропусне и видеореклами ~
// @description:cs    Optimalizujte stránku přehrávání videa umístěním sekce komentářů na pravé straně přehrávače videa pro pohodlnější a pohodlnější zážitek z prohlížení.Současně může skript také přeskočit videoreklamy ~
// @description:da    Optimer videospilningssiden ved at placere kommentarfeltet på højre side af videoafspilleren for en mere behagelig og praktisk browsingoplevelse.På samme tid kan scriptet også springe videoannoncer over ~
// @description:de    Optimieren Sie die Video -Wiedergabeseite, indem Sie den Kommentarbereich auf der rechten Seite des Videoplayers für ein komfortableres und bequemeres Browsing -Erlebnis platzieren.Gleichzeitig kann das Skript auch Videoanzeigen überspringen ~
// @description:el    Βελτιστοποιήστε τη σελίδα αναπαραγωγής βίντεο τοποθετώντας την ενότητα σχολίων στη δεξιά πλευρά της αναπαραγωγής βίντεο για μια πιο άνετη και βολική εμπειρία περιήγησης.Ταυτόχρονα, το σενάριο μπορεί επίσης να παραλείψει διαφημίσεις βίντεο ~
// @description:en    Optimize the video playback page by placing the comments section on the right side of the video player for a more comfortable and convenient browsing experience. At the same time, the script can also skip video ads~
// @description:eo    Optimumigu la video -reproduktan paĝon metante la sekcion de komentoj dekstre de la videoludilo por pli komforta kaj oportuna foliumada sperto.Samtempe la skripto ankaŭ povas preterlasi filmetajn reklamojn ~
// @description:es    Optimice la página de reproducción de video colocando la sección de comentarios en el lado derecho del reproductor de video para una experiencia de navegación más cómoda y conveniente.Al mismo tiempo, el script también puede omitir anuncios de video ~
// @description:fi    Optimoi videotoistosivu asettamalla videosoittimen oikealle puolelle kommenttiosa mukavamman ja kätevämmän selauskokemuksen saamiseksi.Samanaikaisesti komentosarja voi myös ohittaa videomainokset ~
// @description:fr    Optimisez la page de lecture vidéo en plaçant la section des commentaires sur le côté droit du lecteur vidéo pour une expérience de navigation plus confortable et plus pratique.En même temps, le script peut également sauter des annonces vidéo ~
// @description:fr-CA Optimisez la page de lecture vidéo en plaçant la section des commentaires sur le côté droit du lecteur vidéo pour une expérience de navigation plus confortable et plus pratique.En même temps, le script peut également sauter des annonces vidéo ~
// @description:he    ערוך אופטימיזציה של דף הפעלת הווידיאו על ידי הצבת קטע התגובות בצד ימין של נגן הווידיאו לחוויית גלישה נוחה ונוחה יותר.יחד עם זאת, התסריט יכול גם לדלג על מודעות וידאו ~
// @description:hr    Optimizirajte stranicu za reprodukciju videozapisa postavljanjem odjeljka s komentarima na desnu stranu video playera za ugodnije i prikladnije iskustvo pregledavanja.Istodobno, skripta također može preskočiti video oglase ~
// @description:hu    Optimalizálja a Video lejátszási oldalt azáltal, hogy a megjegyzés részt a videolejátszó jobb oldalára helyezi a kényelmesebb és kényelmesebb böngészési élmény érdekében.Ugyanakkor a szkript kihagyhatja a videohirdetéseket ~
// @description:id    Optimalkan halaman pemutaran video dengan menempatkan bagian komentar di sisi kanan pemutar video untuk pengalaman penelusuran yang lebih nyaman dan nyaman.Pada saat yang sama, skrip juga dapat melewati iklan video ~
// @description:it    Ottimizza la pagina di riproduzione video posizionando la sezione commenti sul lato destro del lettore video per un'esperienza di navigazione più comoda e conveniente.Allo stesso tempo, lo script può anche saltare gli annunci video ~
// @description:ja    ビデオプレーヤーの右側にコメントセクションを配置して、より快適で便利なブラウジングエクスペリエンスを提供して、ビデオ再生ページを最適化します。同時に、スクリプトはビデオ広告をスキップすることもできます〜
// @description:ka    ვიდეო აღწარმოების გვერდის ოპტიმიზაცია ვიდეო პლეერის მარჯვენა მხარეს კომენტარების განყოფილების განთავსებით უფრო კომფორტული და მოსახერხებელი დათვალიერების გამოცდილებისთვის.ამავე დროს, სკრიპტს ასევე შეუძლია გამოტოვოთ ვიდეო რეკლამები
// @description:ko    보다 편안하고 편리한 탐색 경험을 위해 비디오 플레이어의 오른쪽에 댓글 섹션을 배치하여 비디오 재생 페이지를 최적화하십시오.동시에 스크립트는 비디오 광고를 건너 뛸 수 있습니다 ~
// @description:nb    Optimaliser videoavspillingssiden ved å plassere kommentarfeltet på høyre side av videospilleren for en mer behagelig og praktisk nettleseropplevelse.Samtidig kan manuset også hoppe over videoannonser ~
// @description:nl    Optimaliseer de video -afspeelpagina door het commentaargedeelte aan de rechterkant van de videospeler te plaatsen voor een comfortabelere en handiger browse -ervaring.Tegelijkertijd kan het script ook videoadvertenties overslaan ~
// @description:pl    Zoptymalizuj stronę odtwarzania wideo, umieszczając sekcję komentarzy po prawej stronie odtwarzacza wideo, aby uzyskać wygodniejsze i wygodniejsze przeglądanie.Jednocześnie skrypt może również pominąć reklamy wideo ~
// @description:pt-BR Otimize a página de reprodução de vídeo colocando a seção de comentários no lado direito do player de vídeo para uma experiência de navegação mais confortável e conveniente.Ao mesmo tempo, o script também pode pular anúncios de vídeo ~
// @description:ro    Optimizați pagina de redare video, plasând secțiunea de comentarii în partea dreaptă a playerului video pentru o experiență de navigare mai confortabilă și mai convenabilă.În același timp, scenariul poate sări și reclame video ~
// @description:ru    Оптимизируйте страницу воспроизведения видео, поместив раздел комментариев в правую сторону видеоплеере для более удобного и удобного опыта просмотра.В то же время, сценарий также может пропустить видеообъявления ~
// @description:sv    Optimera sidan av videouppspelning genom att placera kommentarsavsnittet på höger sida av videospelaren för en mer bekväm och bekväm surfupplevelse.Samtidigt kan skriptet också hoppa över videoannonser ~
// @description:th    เพิ่มประสิทธิภาพหน้าการเล่นวิดีโอโดยวางส่วนความคิดเห็นทางด้านขวาของเครื่องเล่นวิดีโอเพื่อประสบการณ์การท่องเว็บที่สะดวกสบายและสะดวกสบายยิ่งขึ้นในเวลาเดียวกันสคริปต์ยังสามารถข้ามโฆษณาวิดีโอ ~
// @description:tr    Daha rahat ve kullanışlı bir tarama deneyimi için video oynatıcının sağ tarafına yorum bölümünü yerleştirerek video oynatma sayfasını optimize edin.Aynı zamanda, komut dosyası video reklamları da atlayabilir ~
// @description:uk    Оптимізуйте сторінку відтворення відео, розмістивши розділ коментарів у правій частині відеоплеєра для більш комфортного та зручного досвіду перегляду.У той же час, сценарій також може пропустити відеорекламу ~
// @description:ug    سىن بۆلەكلىرىنى تېخىمۇ راھەت ۋە قۇلايلىق كۆرۈش تەجرىبىسىنىڭ ئوڭ تەرىپىدە سىناش تاختىسىنى ئەلالاشتۇرۇش بېتىنى ئەلالاشتۇرۇش ئارقىلىق سىناش بېتىنى ئەلالاشتۇرۇش ئارقىلىق سىن ئويناش بېتىنى ئەلالاشتۇرۇش.شۇنىڭ بىلەن بىر ۋاقىتتا, بۇ seal should سىن ئېلانىنى ئاتلاپ كەتتى
// @description:vi    Tối ưu hóa trang phát lại video bằng cách đặt phần bình luận ở phía bên phải của trình phát video để có trải nghiệm duyệt web thoải mái và thuận tiện hơn.Đồng thời, tập lệnh cũng có thể bỏ qua quảng cáo video ~
// @namespace FunnyMonkey_NameScope
// @version   2.0.1
// @author    FunnyMonkey
// @icon      data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAwRJREFUaEPtWUtOAzEMTQZRcQkqlnCKlpO1PRnlFLBEcAkEao0c4siTyceTDNMG6AraJPbL8z9aNf7Rjeuv/gaAp5urtToe17Oy1XX7u5f3fU5mkoGn5WKrldrkDvnJ30Gp3d3rxzYmIwgAb1wfDhul9by3HtMSYA8XF7sQI0EAz9eXDznloevu8UC3FmB/+/Z5b8Afjw+Ts2LP988dABCbjacwUS3eX4AwZE4DAM/LBYjO9gEQI9L9IiHDRbevHz2de/+Mpd+Z0XIBdLC7AGu3GL1cILDfkX/hflRxjMmRTILWBzA26hALy8UWIwWZjzOnm6s1+om7GLYeQQ1AC1jxzWgSACSXHJozw/9WZwdAKcUpJfPBm6Vbpxsz4JRSJlJZpk/PAAPAo09bAGym/AcgcGBcMq0TswN/FQPk2AiKCjHj4Cz5YX7o/XZODJCipJNjh9UzGKWoOBNn/58wIaMkwHfdzqtX+s7/ntbj2tC+DBOT+4CQ+cmW1QPAekbrR9V10W4p1kmZzi70Yd1eroGqAuAXUpNdq3dQqh8pBpBr7aYEk6qKywB44S+kbKxvdQMBYZPuF4a+rCIA2W4r0u6hcL/EljIVM6M6AHa8ogFWJmQyh446rq08x5pgrDWtAuAnJolSEgZ4UnMyIsOBMgC2300B4KUC0W/KauryMGnZRNfrIdgEhCsXc+STAsD8YeK815mhUmSWro46NwZcZ8aKuh5TVuEmAZjphJ1e8IFAaFpxMhNKMcBDa5MA/GGVyR9N+sDhsKEh7ux5gMIoKkC2y8NoyoSCPhAZspX5gDejDyWnUFfVywOskUnZOW9HQ6V1EYBBi2jfDzCuUxFnQAGskAETUQBWbtyOpoE9BDZtdg2VHrTP4GNvAGW1UGy2nyjWpMXZ2HWxPjk53EUh0Y2Zp56xCqbWp94YkuN1Xv6GBEiKt1ogKeVFDxyGhdwTk50mkF3XKG1qIPqk3uSkT0wuibT8yOeXzTU3XLs3Z7ail/pmH7prb2+O/SIG5lCkVEbzAL4A07+gbQ8x85sAAAAASUVORK5CYII=
// @include   *://www.youtube.com/**
// @exclude   *://accounts.youtube.com/*
// @exclude   *://www.youtube.com/live_chat_replay*
// @exclude   *://www.youtube.com/persist_identity*
// @connect   www.google-analytics.com
// @license   MIT
// @run-at    document-start
// @grant     GM_registerMenuCommand
// @grant     GM_openInTab
// @grant     GM.openInTab
// @grant     GM_addStyle
// @grant     GM_setValue
// @grant     GM_getValue
// @grant     GM_xmlhttpRequest
// @grant     GM_download
// @grant     GM_setClipboard
// @grant     GM_info
// @grant     unsafeWindow
// ==/UserScript==
var css_248z$1 = "@keyframes relatedElementProvided{0%{background-position-x:3px}to{background-position-x:4px}}html[tabview-loaded=icp] #related.ytd-watch-flexy{animation:relatedElementProvided 1ms linear 0s 1 normal forwards}html[tabview-loaded=icp] #right-tabs #related.ytd-watch-flexy,html[tabview-loaded=icp] #right-tabs ytd-expander#expander,html[tabview-loaded=icp] [hidden] #related.ytd-watch-flexy,html[tabview-loaded=icp] [hidden] ytd-expander#expander,html[tabview-loaded=icp] ytd-comments ytd-expander#expander{animation:initial}#secondary.ytd-watch-flexy{position:relative}#secondary-inner.style-scope.ytd-watch-flexy{height:100%}secondary-wrapper{border:0;box-sizing:border-box;contain:strict;flex-wrap:nowrap;height:100%;left:0;max-height:calc(100vh - var(--ytd-toolbar-height, 56px));padding:0;padding-bottom:var(--ytd-margin-6x);padding-right:var(--ytd-margin-6x);padding-top:var(--ytd-margin-6x);position:absolute;right:0;top:0}#right-tabs,secondary-wrapper{display:flex;flex-direction:column;margin:0}#right-tabs{flex-grow:1;padding:0;position:relative}[tyt-tab=\"\"] #right-tabs{flex-grow:0}[tyt-tab=\"\"] #right-tabs .tab-content{border:0}#right-tabs .tab-content{flex-grow:1}ytd-watch-flexy[hide-default-text-inline-expander] #primary.style-scope.ytd-watch-flexy ytd-text-inline-expander{display:none}ytd-watch-flexy:not([keep-comments-scroller]) #tab-comments.tab-content-hidden{--comment-pre-load-sizing:90px;border:0;contain:strict;display:block!important;height:var(--comment-pre-load-sizing)!important;left:2px;margin:0;overflow:hidden;padding:0;pointer-events:none!important;position:fixed!important;top:2px;visibility:collapse;width:var(--comment-pre-load-sizing)!important;z-index:-1}ytd-watch-flexy:not([keep-comments-scroller]) #tab-comments.tab-content-hidden ytd-comments#comments>*{display:none!important}ytd-watch-flexy:not([keep-comments-scroller]) #tab-comments.tab-content-hidden ytd-comments#comments>ytd-item-section-renderer#sections{border:0;contain:strict;display:block!important;height:var(--comment-pre-load-sizing);margin:0;overflow:hidden;padding:0;width:var(--comment-pre-load-sizing)}ytd-watch-flexy:not([keep-comments-scroller]) #tab-comments.tab-content-hidden ytd-comments#comments>ytd-item-section-renderer#sections>*{display:none!important}ytd-watch-flexy:not([keep-comments-scroller]) #tab-comments.tab-content-hidden ytd-comments#comments>ytd-item-section-renderer#sections>#contents{border:0;contain:strict;display:flex!important;flex-direction:row;gap:60px;height:var(--comment-pre-load-sizing);margin:0;overflow:hidden;padding:0;width:var(--comment-pre-load-sizing)}ytd-watch-flexy:not([keep-comments-scroller]) #tab-comments.tab-content-hidden ytd-comments#comments>ytd-item-section-renderer#sections>#contents>*{border:0;box-sizing:content-box;contain:strict;display:block!important;height:var(--comment-pre-load-sizing);margin:calc(var(--comment-pre-load-sizing)*2)!important;overflow:hidden;padding:0;visibility:collapse!important;width:var(--comment-pre-load-sizing)}ytd-watch-flexy:not([keep-comments-scroller]) #tab-comments.tab-content-hidden ytd-comments#comments>ytd-item-section-renderer#sections>#contents>:empty{box-sizing:content-box;contain:strict;display:none!important;height:0;margin:0!important;overflow:hidden;visibility:collapse!important;width:0}ytd-watch-flexy:not([keep-comments-scroller]) #tab-comments.tab-content-hidden ytd-comments#comments>ytd-item-section-renderer#sections>#contents>ytd-continuation-item-renderer{box-sizing:initial;contain:strict;display:block!important;height:1px;margin:0!important;overflow:initial;visibility:collapse!important;width:1px}ytd-watch-flexy:not([keep-comments-scroller]) #tab-comments.tab-content-hidden ytd-comments#comments>ytd-item-section-renderer#sections>#contents>*>*{box-sizing:content-box;contain:strict;display:none!important;height:0;margin:0!important;overflow:hidden;visibility:collapse!important;width:0}#right-tabs #material-tabs{border:1px solid var(--ytd-searchbox-legacy-border-color);display:flex;overflow:hidden;padding:0;position:relative}[tyt-tab] #right-tabs #material-tabs{border-radius:var(--tyt-rounded-a1) var(--tyt-rounded-a1) var(--tyt-rounded-a1) var(--tyt-rounded-a1)}[tyt-tab^=\"#\"] #right-tabs #material-tabs{border-radius:var(--tyt-rounded-a1) var(--tyt-rounded-a1) 0 0}ytd-watch-flexy[flexy]:not([is-two-columns_]) #right-tabs #material-tabs{outline:0}#right-tabs #material-tabs a.tab-btn[tyt-tab-content]>*{pointer-events:none}#right-tabs #material-tabs a.tab-btn[tyt-tab-content]>.font-size-right{display:none;pointer-events:auto}ytd-watch-flexy #right-tabs .tab-content{border:1px solid var(--ytd-searchbox-legacy-border-color);border-radius:0 0 var(--tyt-rounded-a1) var(--tyt-rounded-a1);border-top:0;box-sizing:border-box;display:block;display:flex;flex-direction:row;overflow:hidden;padding:0;position:relative;top:0}ytd-watch-flexy:not([is-two-columns_]) #right-tabs .tab-content{height:100%}ytd-watch-flexy #right-tabs .tab-content-cld{--tab-content-padding:var(--ytd-margin-4x);box-sizing:border-box;contain:layout paint;display:block;overflow:auto;padding:var(--tab-content-padding);position:relative;width:100%}#right-tabs,.tab-content,.tab-content-cld{animation:none;transition:none}ytd-watch-flexy[is-two-columns_] #right-tabs .tab-content-cld{contain:size layout paint style;height:100%;position:absolute;width:100%}ytd-watch-flexy #right-tabs .tab-content-cld.tab-content-hidden{contain:size layout paint style;display:none;width:100%}@supports (color:var(--tabview-tab-btn-define )){ytd-watch-flexy #right-tabs .tab-btn{background:var(--yt-spec-general-background-a)}html{--tyt-tab-btn-flex-grow:1;--tyt-tab-btn-flex-basis:0%;--tyt-tab-bar-color-1-def:#ff4533;--tyt-tab-bar-color-2-def:var(--yt-brand-light-red);--tyt-tab-bar-color-1:var(--main-color,var(--tyt-tab-bar-color-1-def));--tyt-tab-bar-color-2:var(--main-color,var(--tyt-tab-bar-color-2-def))}ytd-watch-flexy #right-tabs .tab-btn[tyt-tab-content]{--tyt-tab-btn-color:var(--yt-spec-text-secondary);background-color:var(--ytd-searchbox-legacy-button-color);border:0;border-bottom:4px solid transparent;color:var(--tyt-tab-btn-color);cursor:pointer;display:inline-block;flex-basis:0%;flex-basis:var(--tyt-tab-btn-flex-basis);flex-grow:1;flex-grow:var(--tyt-tab-btn-flex-grow);flex-shrink:1;font-size:12px;font-weight:500;line-height:18px;overflow:hidden;padding:14px 8px 10px;position:relative;text-align:center;text-decoration:none;text-overflow:clip;text-transform:uppercase;text-transform:var(--yt-button-text-transform,inherit);transition:border .2s linear .1s;white-space:nowrap}ytd-watch-flexy #right-tabs .tab-btn[tyt-tab-content]>svg{fill:var(--iron-icon-fill-color,currentcolor);stroke:var(--iron-icon-stroke-color,none);color:var(--yt-button-color,inherit);height:18px;margin-right:0;opacity:.5;padding-right:0;vertical-align:bottom}ytd-watch-flexy #right-tabs .tab-btn{--tabview-btn-txt-ml:8px}ytd-watch-flexy[tyt-comment-disabled] #right-tabs .tab-btn[tyt-tab-content=\"#tab-comments\"]{--tabview-btn-txt-ml:0px}ytd-watch-flexy #right-tabs .tab-btn[tyt-tab-content]>svg+span{margin-left:var(--tabview-btn-txt-ml)}ytd-watch-flexy #right-tabs .tab-btn[tyt-tab-content] svg{pointer-events:none}ytd-watch-flexy #right-tabs .tab-btn[tyt-tab-content].active{--tyt-tab-btn-color:var(--yt-spec-text-primary);background-color:var(--ytd-searchbox-legacy-button-focus-color);border-bottom-color:var(--tyt-tab-bar-color-1);border-bottom:2px solid var(--tyt-tab-bar-color-2);font-weight:500;outline:0}ytd-watch-flexy #right-tabs .tab-btn[tyt-tab-content].active svg{opacity:.9}ytd-watch-flexy #right-tabs .tab-btn[tyt-tab-content]:not(.active):hover{--tyt-tab-btn-color:var(--yt-spec-text-primary);background-color:var(--ytd-searchbox-legacy-button-hover-color)}ytd-watch-flexy #right-tabs .tab-btn[tyt-tab-content]:not(.active):hover svg{opacity:.9}ytd-watch-flexy #right-tabs .tab-btn[tyt-tab-content]{user-select:none!important}ytd-watch-flexy #right-tabs .tab-btn[tyt-tab-content].tab-btn-hidden{display:none}ytd-watch-flexy[tyt-comment-disabled] #right-tabs .tab-btn[tyt-tab-content=\"#tab-comments\"],ytd-watch-flexy[tyt-comment-disabled] #right-tabs .tab-btn[tyt-tab-content=\"#tab-comments\"]:hover{--tyt-tab-btn-color:var(--yt-spec-icon-disabled)}ytd-watch-flexy[tyt-comment-disabled] #right-tabs .tab-btn[tyt-tab-content=\"#tab-comments\"] span#tyt-cm-count:empty{display:none}ytd-watch-flexy #right-tabs .tab-btn span#tyt-cm-count:empty:after{color:currentColor;display:inline-block;font-size:inherit;text-align:left;transform:scaleX(.8);width:4em}}@supports (color:var(--tyt-cm-count-define )){ytd-watch-flexy{--tyt-x-loading-content-letter-spacing:2px}html{--tabview-text-loading:\"Loading\";--tabview-text-fetching:\"Fetching\";--tabview-panel-loading:var(--tabview-text-loading)}html:lang(ja){--tabview-text-loading:\"読み込み中\";--tabview-text-fetching:\"フェッチ..\"}html:lang(ko){--tabview-text-loading:\"로딩..\";--tabview-text-fetching:\"가져오기..\"}html:lang(zh-Hant){--tabview-text-loading:\"載入中\";--tabview-text-fetching:\"擷取中\"}html:lang(zh-Hans){--tabview-text-loading:\"加载中\";--tabview-text-fetching:\"抓取中\"}html:lang(ru){--tabview-text-loading:\"Загрузка\";--tabview-text-fetching:\"Получение\"}ytd-watch-flexy #right-tabs .tab-btn span#tyt-cm-count:empty:after{content:var(--tabview-text-loading);letter-spacing:var(--tyt-x-loading-content-letter-spacing)}}@supports (color:var(--tabview-font-size-btn-define )){.font-size-right{align-content:space-evenly;bottom:0;display:inline-flex;flex-direction:column;justify-content:space-evenly;padding:4px 0;pointer-events:none;position:absolute;right:0;top:0;width:16px}html body ytd-watch-flexy.style-scope .font-size-btn{user-select:none!important}.font-size-btn{--tyt-font-size-btn-display:none;background-color:var(--yt-spec-badge-chip-background);box-sizing:border-box;color:var(--yt-spec-text-secondary);cursor:pointer;display:var(--tyt-font-size-btn-display,none);font-family:Menlo,Lucida Console,Monaco,Consolas,monospace;font-weight:900;height:12px;line-height:100%;margin:0;padding:0;pointer-events:all;position:relative;transform-origin:left top;transition:background-color 90ms linear,color 90ms linear;width:12px}.font-size-btn:hover{background-color:var(--yt-spec-text-primary);color:var(--yt-spec-general-background-a)}@supports (zoom:0.5){.tab-btn .font-size-btn{--tyt-font-size-btn-display:none}.tab-btn.active:hover .font-size-btn{--tyt-font-size-btn-display:inline-block}}}body ytd-watch-flexy:not([is-two-columns_]) #columns.ytd-watch-flexy{flex-direction:column}body ytd-watch-flexy:not([is-two-columns_]) #secondary.ytd-watch-flexy{box-sizing:border-box;display:block;width:100%}body ytd-watch-flexy:not([is-two-columns_]) #secondary.ytd-watch-flexy secondary-wrapper{contain:content;height:auto;padding-left:var(--ytd-margin-6x)}body ytd-watch-flexy:not([is-two-columns_]) #secondary.ytd-watch-flexy secondary-wrapper #right-tabs{overflow:auto}[tyt-chat=\"+\"] secondary-wrapper>[tyt-chat-container]{display:flex;flex-direction:column;flex-grow:1;flex-shrink:0}[tyt-chat=\"+\"] secondary-wrapper>[tyt-chat-container]>#chat{flex-grow:1}ytd-watch-flexy[is-two-columns_]:not([theater]) #columns.style-scope.ytd-watch-flexy{min-height:calc(100vh - var(--ytd-toolbar-height, 56px))}ytd-watch-flexy[is-two-columns_] ytd-live-chat-frame#chat{height:auto!important;min-height:auto!important}ytd-watch-flexy[tyt-tab^=\"#\"]:not([is-two-columns_]):not([tyt-chat=\"+\"]) #right-tabs{min-height:var(--ytd-watch-flexy-chat-max-height)}body ytd-watch-flexy:not([is-two-columns_]) #chat.ytd-watch-flexy{margin-top:0}body ytd-watch-flexy:not([is-two-columns_]) ytd-watch-metadata.ytd-watch-flexy{margin-bottom:0}ytd-watch-metadata.ytd-watch-flexy ytd-metadata-row-container-renderer{display:none}#tab-info #social-links.style-scope.ytd-video-description-infocards-section-renderer>#left-arrow-container.ytd-video-description-infocards-section-renderer>#left-arrow,#tab-info #social-links.style-scope.ytd-video-description-infocards-section-renderer>#right-arrow-container.ytd-video-description-infocards-section-renderer>#right-arrow{border:6px solid transparent;opacity:.65}#tab-info #social-links.style-scope.ytd-video-description-infocards-section-renderer>#left-arrow-container.ytd-video-description-infocards-section-renderer>#left-arrow:hover,#tab-info #social-links.style-scope.ytd-video-description-infocards-section-renderer>#right-arrow-container.ytd-video-description-infocards-section-renderer>#right-arrow:hover{opacity:1}#tab-info #social-links.style-scope.ytd-video-description-infocards-section-renderer>div#left-arrow-container:before{background:transparent;content:\"\";display:block;height:40px;left:-20px;position:absolute;top:0;width:40px;z-index:-1}#tab-info #social-links.style-scope.ytd-video-description-infocards-section-renderer>div#right-arrow-container:before{background:transparent;content:\"\";display:block;height:40px;position:absolute;right:-20px;top:0;width:40px;z-index:-1}body ytd-watch-flexy[is-two-columns_][tyt-egm-panel_] #columns.style-scope.ytd-watch-flexy #panels.style-scope.ytd-watch-flexy{display:flex;flex-direction:column;flex-grow:1;flex-shrink:0}body ytd-watch-flexy[is-two-columns_][tyt-egm-panel_] #columns.style-scope.ytd-watch-flexy #panels.style-scope.ytd-watch-flexy ytd-engagement-panel-section-list-renderer[target-id][visibility=ENGAGEMENT_PANEL_VISIBILITY_EXPANDED]{display:flex;flex-direction:column;flex-grow:1;flex-shrink:0;height:auto;max-height:none;min-height:auto}secondary-wrapper [visibility=ENGAGEMENT_PANEL_VISIBILITY_EXPANDED] #body.ytd-transcript-renderer:not(:empty),secondary-wrapper [visibility=ENGAGEMENT_PANEL_VISIBILITY_EXPANDED] #content.ytd-transcript-renderer:not(:empty),secondary-wrapper [visibility=ENGAGEMENT_PANEL_VISIBILITY_EXPANDED] ytd-transcript-renderer:not(:empty){flex-grow:1;height:auto;max-height:none;min-height:auto}secondary-wrapper #content.ytd-engagement-panel-section-list-renderer{position:relative}@supports (contain:strict){secondary-wrapper #content.ytd-engagement-panel-section-list-renderer>[panel-target-id]:only-child{contain:strict;max-height:100%}}@supports not (contain:strict){secondary-wrapper #content.ytd-engagement-panel-section-list-renderer>[panel-target-id]:only-child{max-height:100%;position:absolute}}body ytd-watch-flexy[theater] #secondary.ytd-watch-flexy{margin-top:0;padding-top:var(--ytd-margin-2x)}body ytd-watch-flexy[theater] secondary-wrapper{padding-top:var(--ytd-margin-2x)}body ytd-watch-flexy[theater] #chat.ytd-watch-flexy{margin-bottom:var(--ytd-margin-2x)}#tab-comments ytd-comments#comments [field-of-cm-count]{margin-top:0}#tab-info [class]:last-child{margin-bottom:0;padding-bottom:0}#tab-info ytd-rich-metadata-row-renderer ytd-rich-metadata-renderer{max-width:none}ytd-watch-flexy[is-two-columns_] secondary-wrapper #chat.ytd-watch-flexy{margin-bottom:var(--ytd-margin-3x)}ytd-watch-flexy[tyt-tab] tp-yt-paper-tooltip{contain:content;white-space:nowrap}ytd-watch-info-text tp-yt-paper-tooltip.style-scope.ytd-watch-info-text{margin-bottom:-300px;margin-top:-96px}[hide-default-text-inline-expander] #bottom-row #description.ytd-watch-metadata{font-size:1.2rem;line-height:1.8rem}[hide-default-text-inline-expander] #bottom-row #description.ytd-watch-metadata yt-animated-rolling-number{font-size:inherit}[hide-default-text-inline-expander] #bottom-row #description.ytd-watch-metadata #info-container.style-scope.ytd-watch-info-text{align-items:center}ytd-watch-flexy[hide-default-text-inline-expander]{--tyt-bottom-watch-metadata-margin:6px}[hide-default-text-inline-expander] #bottom-row #description.ytd-watch-metadata>#description-inner.ytd-watch-metadata{margin:6px 12px}[hide-default-text-inline-expander] ytd-watch-metadata[title-headline-xs] h1.ytd-watch-metadata{font-size:1.8rem}ytd-watch-flexy[is-two-columns_][hide-default-text-inline-expander] #below.style-scope.ytd-watch-flexy ytd-merch-shelf-renderer{border:0;margin:0;padding:0}ytd-watch-flexy[is-two-columns_][hide-default-text-inline-expander] #below.style-scope.ytd-watch-flexy ytd-watch-metadata.ytd-watch-flexy{margin-bottom:6px}#tab-info yt-video-attribute-view-model .yt-video-attribute-view-model--horizontal .yt-video-attribute-view-model__link-container .yt-video-attribute-view-model__hero-section{flex-shrink:0}#tab-info yt-video-attribute-view-model .yt-video-attribute-view-model__overflow-menu{background:var(--yt-emoji-picker-category-background-color);border-radius:99px}#tab-info yt-video-attribute-view-model .yt-video-attribute-view-model--image-square.yt-video-attribute-view-model--image-large .yt-video-attribute-view-model__hero-section{max-height:128px}#tab-info yt-video-attribute-view-model .yt-video-attribute-view-model--image-large .yt-video-attribute-view-model__hero-section{max-width:128px}#tab-info ytd-reel-shelf-renderer #items.yt-horizontal-list-renderer ytd-reel-item-renderer.yt-horizontal-list-renderer{max-width:142px}ytd-watch-info-text#ytd-watch-info-text.style-scope.ytd-watch-metadata #date-text.style-scope.ytd-watch-info-text,ytd-watch-info-text#ytd-watch-info-text.style-scope.ytd-watch-metadata #view-count.style-scope.ytd-watch-info-text{align-items:center}ytd-watch-info-text:not([detailed]) #info.ytd-watch-info-text a.yt-simple-endpoint.yt-formatted-string{pointer-events:none}body ytd-app>ytd-popup-container>tp-yt-iron-dropdown>#contentWrapper>[slot=dropdown-content]{backdrop-filter:none}#tab-info [tyt-clone-refresh-count]{overflow:visible!important}#tab-info #items.ytd-horizontal-card-list-renderer yt-video-attribute-view-model.ytd-horizontal-card-list-renderer{contain:layout}#tab-info #thumbnail-container.ytd-structured-description-channel-lockup-renderer,#tab-info ytd-media-lockup-renderer[is-compact] #thumbnail-container.ytd-media-lockup-renderer{flex-shrink:0}secondary-wrapper ytd-donation-unavailable-renderer{--ytd-margin-6x:var(--ytd-margin-2x);--ytd-margin-5x:var(--ytd-margin-2x);--ytd-margin-4x:var(--ytd-margin-2x);--ytd-margin-3x:var(--ytd-margin-2x)}[tyt-no-less-btn] #less{display:none}.tyt-metadata-hover-resized #analytics-button,.tyt-metadata-hover-resized #purchase-button,.tyt-metadata-hover-resized #sponsor-button,.tyt-metadata-hover-resized #subscribe-button{display:none!important}.tyt-metadata-hover #upload-info{flex-basis:100vw;flex-shrink:0;max-width:max-content;min-width:max-content}#tab-info ytd-structured-description-playlist-lockup-renderer[collections] #playlist-thumbnail.style-scope.ytd-structured-description-playlist-lockup-renderer{max-width:100%}#tab-info ytd-structured-description-playlist-lockup-renderer[collections] #lockup-container.ytd-structured-description-playlist-lockup-renderer{padding:1px}#tab-info ytd-structured-description-playlist-lockup-renderer[collections] #thumbnail.ytd-structured-description-playlist-lockup-renderer{outline:1px solid hsla(0,0%,50%,.5)}ytd-live-chat-frame#chat[collapsed] ytd-message-renderer~#show-hide-button.ytd-live-chat-frame>ytd-toggle-button-renderer.ytd-live-chat-frame{padding:0}.tyt-info-invisible{display:none}[tyt-playlist-expanded] secondary-wrapper>ytd-playlist-panel-renderer#playlist{flex-grow:1;flex-shrink:1;max-height:unset!important;overflow:auto}[tyt-playlist-expanded] secondary-wrapper>ytd-playlist-panel-renderer#playlist>#container{max-height:unset!important}secondary-wrapper ytd-playlist-panel-renderer{--ytd-margin-6x:var(--ytd-margin-3x)}ytd-watch-flexy[theater] ytd-playlist-panel-renderer[collapsible][collapsed] .header.ytd-playlist-panel-renderer{padding:6px 8px}ytd-watch-flexy[theater] #playlist.ytd-watch-flexy{margin-bottom:var(--ytd-margin-2x)}ytd-watch-flexy[theater] #right-tabs .tab-btn[tyt-tab-content]{border-bottom:0 solid transparent;padding:8px 4px 6px}ytd-watch-flexy{--tyt-bottom-watch-metadata-margin:12px}ytd-watch-flexy[rounded-info-panel],ytd-watch-flexy[rounded-player-large]{--tyt-rounded-a1:${VAL_ROUNDED_A1}px}#bottom-row.style-scope.ytd-watch-metadata .item.ytd-watch-metadata{margin-right:var(--tyt-bottom-watch-metadata-margin,12px);margin-top:var(--tyt-bottom-watch-metadata-margin,12px)}";

/*!
 * MIT License
 *  
 * Copyright (c) 2021-2024 cyfung1031&FunnyMonkey
 *  
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *  
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *  
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
const VAL_ROUNDED_A1 = 12;
const styles = {
  main: css_248z$1.replace("${VAL_ROUNDED_A1}", VAL_ROUNDED_A1)
};

/*!
 * table function
 * MIT, https://github.com/tabview-youtube/Tabview-Youtube
 * @param {*} communicationKey 
 * Optimize project structure to make it more reliable
 */
const executionScript = (communicationKey) => {
  const overwrite_default = false;
  var passThroughFunc = function(string, sink) {
    return string;
  };
  var TTPName = "passthrough";
  var TTP_default, TTP = {
    createHTML: passThroughFunc,
    createScript: passThroughFunc,
    createScriptURL: passThroughFunc
  };
  var needsTrustedHTML = false;
  !window.TTP && (() => {
    try {
      if (typeof window.isSecureContext !== "undefined" && window.isSecureContext) {
        if (window.trustedTypes && window.trustedTypes.createPolicy) {
          needsTrustedHTML = true;
          if (trustedTypes.defaultPolicy) {
            if (overwrite_default) ; else {
              TTP = window.trustedTypes.createPolicy(TTPName, TTP);
            }
            TTP_default = trustedTypes.defaultPolicy;
          } else {
            TTP_default = TTP = window.trustedTypes.createPolicy(
              "default",
              TTP
            );
          }
        }
      }
    } catch (e) {
    } finally {
      window.TTP = TTP;
    }
  })();
  const createHTML = (s) => {
    if (typeof TTP !== "undefined" && typeof TTP.createHTML === "function")
      return TTP.createHTML(s);
    return s;
  };
  try {
    let getWord = function(tag) {
      return langWords[pageLang][tag] || langWords["en"][tag] || "";
    }, getTabsHTML = function() {
      const sTabBtnVideos = `${svgElm(
        16,
        16,
        90,
        90,
        svgVideos
      )}<span>${getWord("videos")}</span>`;
      const sTabBtnInfo = `${svgElm(16, 16, 60, 60, svgInfo)}<span>${getWord(
        "info"
      )}</span>`;
      const sTabBtnPlayList = `${svgElm(
        16,
        16,
        20,
        20,
        svgPlayList
      )}<span>${getWord("playlist")}</span>`;
      let str1 = `
        <paper-ripple class="style-scope yt-icon-button">
            <div id="background" class="style-scope paper-ripple" style="opacity:0;"></div>
            <div id="waves" class="style-scope paper-ripple"></div>
        </paper-ripple>
        `;
      let str_fbtns = `
		<div class="font-size-right">
			<div class="font-size-btn font-size-plus" tyt-di="8rdLQ">
				<svg width="12" height="12" viewbox="0 0 50 50" preserveAspectRatio="xMidYMid meet" stroke="currentColor" stroke-width="6" stroke-linecap="round" vector-effect="non-scaling-size">
				  <path d="M12 25H38M25 12V38"/>
				</svg>
			</div>
			<div class="font-size-btn font-size-minus" tyt-di="8rdLQ">
				<svg width="12" height="12" viewbox="0 0 50 50" preserveAspectRatio="xMidYMid meet" stroke="currentColor" stroke-width="6" stroke-linecap="round" vector-effect="non-scaling-size">
				  <path d="M12 25h26"/>
				</svg>
			</div>
		</div>
    `.replace(/[\r\n]+/g, "");
      const str_tabs = [
        `<a id="tab-btn1" tyt-di="q9Kjc" tyt-tab-content="#tab-info" class="tab-btn${(hiddenTabsByUserCSS & 1) === 1 ? " tab-btn-hidden" : ""}">${sTabBtnInfo}${str1}${str_fbtns}</a>`,
        `<a id="tab-btn3" tyt-di="q9Kjc" tyt-tab-content="#tab-comments" class="tab-btn${(hiddenTabsByUserCSS & 2) === 2 ? " tab-btn-hidden" : ""}">${svgElm(16, 16, 120, 120, svgComments)}<span id="tyt-cm-count"></span>${str1}${str_fbtns}</a>`,
        `<a id="tab-btn4" tyt-di="q9Kjc" tyt-tab-content="#tab-videos" class="tab-btn${(hiddenTabsByUserCSS & 4) === 4 ? " tab-btn-hidden" : ""}">${sTabBtnVideos}${str1}${str_fbtns}</a>`,
        `<a id="tab-btn5" tyt-di="q9Kjc" tyt-tab-content="#tab-list" class="tab-btn tab-btn-hidden">${sTabBtnPlayList}${str1}${str_fbtns}</a>`
      ].join("");
      let addHTML = `
        <div id="right-tabs">
            <tabview-view-pos-thead></tabview-view-pos-thead>
            <header>
                <div id="material-tabs">
                    ${str_tabs}
                </div>
            </header>
            <div class="tab-content">
                <div id="tab-info" class="tab-content-cld tab-content-hidden" tyt-hidden userscript-scrollbar-render></div>
                <div id="tab-comments" class="tab-content-cld tab-content-hidden" tyt-hidden userscript-scrollbar-render></div>
                <div id="tab-videos" class="tab-content-cld tab-content-hidden" tyt-hidden userscript-scrollbar-render></div>
                <div id="tab-list" class="tab-content-cld tab-content-hidden" tyt-hidden userscript-scrollbar-render></div>
            </div>
        </div>
        `;
      return addHTML;
    }, getLang = function() {
      let lang = "en";
      let htmlLang = ((document || 0).documentElement || 0).lang || "";
      switch (htmlLang) {
        case "en":
        case "en-GB":
          lang = "en";
          break;
        case "de":
        case "de-DE":
          lang = "du";
          break;
        case "fr":
        case "fr-CA":
        case "fr-FR":
          lang = "fr";
          break;
        case "zh-Hant":
        case "zh-Hant-HK":
        case "zh-Hant-TW":
          lang = "tw";
          break;
        case "zh-Hans":
        case "zh-Hans-CN":
          lang = "cn";
          break;
        case "ja":
        case "ja-JP":
          lang = "jp";
          break;
        case "ko":
        case "ko-KR":
          lang = "kr";
          break;
        case "ru":
        case "ru-RU":
          lang = "ru";
          break;
        default:
          lang = "en";
      }
      return lang;
    }, getLangForPage = function() {
      let lang = getLang();
      if (langWords[lang])
        pageLang = lang;
      else
        pageLang = "en";
    }, isTheater = function() {
      const ytdFlexyElm = elements.flexy;
      return ytdFlexyElm && ytdFlexyElm.hasAttribute000("theater");
    }, ytBtnSetTheater = function() {
      if (!isTheater()) {
        const sizeBtn = document.querySelector(
          "ytd-watch-flexy #ytd-player button.ytp-size-button"
        );
        if (sizeBtn)
          sizeBtn.click();
      }
    }, ytBtnCancelTheater = function() {
      if (isTheater()) {
        const sizeBtn = document.querySelector(
          "ytd-watch-flexy #ytd-player button.ytp-size-button"
        );
        if (sizeBtn)
          sizeBtn.click();
      }
    }, ytBtnExpandChat = function() {
      let button = document.querySelector(
        "ytd-live-chat-frame#chat[collapsed] > .ytd-live-chat-frame#show-hide-button"
      );
      if (button) {
        button = button.querySelector000("div.yt-spec-touch-feedback-shape") || button.querySelector000("ytd-toggle-button-renderer");
        if (button)
          button.click();
      }
    }, ytBtnCollapseChat = function() {
      let button = document.querySelector(
        "ytd-live-chat-frame#chat:not([collapsed]) > .ytd-live-chat-frame#show-hide-button"
      );
      if (button) {
        button = button.querySelector000("div.yt-spec-touch-feedback-shape") || button.querySelector000("ytd-toggle-button-renderer");
        if (button)
          button.click();
      }
    }, ytBtnEgmPanelCore = function(arr) {
      if (!arr)
        return;
      if (!("length" in arr))
        arr = [arr];
      const ytdFlexyElm = elements.flexy;
      if (!ytdFlexyElm)
        return;
      let actions = [];
      for (const entry of arr) {
        if (!entry)
          continue;
        let panelId = entry.panelId;
        let toHide = entry.toHide;
        let toShow = entry.toShow;
        if (toHide === true && !toShow) {
          actions.push({
            changeEngagementPanelVisibilityAction: {
              targetId: panelId,
              visibility: "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN"
            }
          });
        } else if (toShow === true && !toHide) {
          actions.push({
            showEngagementPanelEndpoint: {
              panelIdentifier: panelId
            }
          });
        }
        if (actions.length > 0) {
          const cnt = insp(ytdFlexyElm);
          cnt.resolveCommand(
            {
              signalServiceEndpoint: {
                signal: "CLIENT_SIGNAL",
                actions
              }
            },
            {},
            false
          );
        }
        actions = null;
      }
    }, ytBtnCloseEngagementPanels = function() {
      const actions = [];
      for (const panelElm of document.querySelectorAll(
        `ytd-watch-flexy[flexy][tyt-tab] #panels.ytd-watch-flexy ytd-engagement-panel-section-list-renderer[target-id][visibility]:not([hidden])`
      )) {
        if (panelElm.getAttribute("visibility") == "ENGAGEMENT_PANEL_VISIBILITY_EXPANDED" && !panelElm.closest("[hidden]")) {
          actions.push({
            panelId: panelElm.getAttribute000("target-id"),
            toHide: true
          });
        }
      }
      ytBtnEgmPanelCore(actions);
    }, ytBtnOpenPlaylist = function() {
      const cnt = insp(elements.playlist);
      if (cnt && typeof cnt.collapsed === "boolean") {
        cnt.collapsed = false;
      }
    }, ytBtnClosePlaylist = function() {
      const cnt = insp(elements.playlist);
      if (cnt && typeof cnt.collapsed === "boolean") {
        cnt.collapsed = true;
      }
    };
    let executionFinished = 0;
    if (typeof CustomElementRegistry === "undefined")
      return;
    if (CustomElementRegistry.prototype.define000)
      return;
    if (typeof CustomElementRegistry.prototype.define !== "function")
      return;
    const HTMLElement_ = HTMLElement.prototype.constructor;
    const pdsBaseDF = Object.getOwnPropertyDescriptors(
      DocumentFragment.prototype
    );
    Object.defineProperties(DocumentFragment.prototype, {
      replaceChildren000: pdsBaseDF.replaceChildren
    });
    const pdsBaseNode = Object.getOwnPropertyDescriptors(Node.prototype);
    Object.defineProperties(Node.prototype, {
      appendChild000: pdsBaseNode.appendChild,
      insertBefore000: pdsBaseNode.insertBefore
    });
    const pdsBaseElement = Object.getOwnPropertyDescriptors(Element.prototype);
    Object.defineProperties(Element.prototype, {
      setAttribute000: pdsBaseElement.setAttribute,
      getAttribute000: pdsBaseElement.getAttribute,
      hasAttribute000: pdsBaseElement.hasAttribute,
      removeAttribute000: pdsBaseElement.removeAttribute,
      querySelector000: pdsBaseElement.querySelector,
      replaceChildren000: pdsBaseElement.replaceChildren
    });
    Element.prototype.setAttribute111 = function(p, v) {
      v = `${v}`;
      if (this.getAttribute000(p) === v)
        return;
      this.setAttribute000(p, v);
    };
    Element.prototype.incAttribute111 = function(p) {
      let v = +this.getAttribute000(p) || 0;
      v = v > 1e9 ? v + 1 : 9;
      this.setAttribute000(p, `${v}`);
      return v;
    };
    Element.prototype.assignChildern111 = function(previousSiblings, node, nextSiblings) {
      let nodeList = [];
      for (let t = this.firstChild; t instanceof Node; t = t.nextSibling) {
        if (t === node)
          continue;
        nodeList.push(t);
      }
      inPageRearrange = true;
      if (node.parentNode === this) {
        let fm = new DocumentFragment();
        if (nodeList.length > 0) {
          fm.replaceChildren000(...nodeList);
        }
        if (previousSiblings && previousSiblings.length > 0) {
          fm.replaceChildren000(...previousSiblings);
          this.insertBefore000(fm, node);
        }
        if (nextSiblings && nextSiblings.length > 0) {
          fm.replaceChildren000(...nextSiblings);
          this.appendChild000(fm);
        }
        fm.replaceChildren000();
        fm = null;
      } else {
        if (!previousSiblings)
          previousSiblings = [];
        if (!nextSiblings)
          nextSiblings = [];
        this.replaceChildren000(...previousSiblings, node, ...nextSiblings);
      }
      inPageRearrange = false;
      if (nodeList.length > 0) {
        for (const t of nodeList) {
          if (t instanceof Element && t.isConnected === false)
            t.remove();
        }
      }
      nodeList.length = 0;
      nodeList = null;
    };
    const DISABLE_FLAGS_SHADYDOM_FREE = true;
    /*!
     *
     * Minified Code from https://greasyfork.org/en/scripts/475632-ytconfighacks/code (ytConfigHacks)
     * Date: 2024.04.17
     * Minifier: https://www.toptal.com/developers/javascript-minifier
     *
     */
    (() => {
      let e = "undefined" != typeof unsafeWindow ? unsafeWindow : void 0 instanceof Window ? void 0 : window;
      if (!e._ytConfigHacks) {
        let r = function(t2) {
          o(), t2 && e.removeEventListener("DOMContentLoaded", r, false);
        };
        let t = 4;
        class n extends Set {
          add(e2) {
            if (t <= 0)
              return void 0;
            "function" == typeof e2 && super.add(e2);
          }
        }
        let a = (async () => {
        })().constructor, i = e._ytConfigHacks = new n(), l = () => {
          let t2 = e.ytcsi.originalYtcsi;
          t2 && (e.ytcsi = t2, l = null);
        }, c = null, o = () => {
          if (t >= 1) {
            let n2 = (e.yt || 0).config_ || (e.ytcfg || 0).data_ || 0;
            if ("string" == typeof n2.INNERTUBE_API_KEY && "object" == typeof n2.EXPERIMENT_FLAGS)
              for (let a2 of (--t <= 0 && l && l(), c = true, i))
                a2(n2);
          }
        }, f = 1, d = (t2) => {
          if (t2 = t2 || e.ytcsi)
            return e.ytcsi = new Proxy(t2, {
              get: (e2, t3, n2) => "originalYtcsi" === t3 ? e2 : (o(), c && --f <= 0 && l && l(), e2[t3])
            }), true;
        };
        d() || Object.defineProperty(e, "ytcsi", {
          get() {
          },
          set: (t2) => (t2 && (delete e.ytcsi, d(t2)), true),
          enumerable: false,
          configurable: true
        });
        let { addEventListener: s, removeEventListener: y } = Document.prototype;
        new a((e2) => {
          if ("undefined" != typeof AbortSignal)
            s.call(document, "yt-page-data-fetched", e2, { once: true }), s.call(document, "yt-navigate-finish", e2, { once: true }), s.call(document, "spfdone", e2, { once: true });
          else {
            let t2 = () => {
              e2(), y.call(document, "yt-page-data-fetched", t2, false), y.call(document, "yt-navigate-finish", t2, false), y.call(document, "spfdone", t2, false);
            };
            s.call(document, "yt-page-data-fetched", t2, false), s.call(document, "yt-navigate-finish", t2, false), s.call(document, "spfdone", t2, false);
          }
        }).then(o), new a((e2) => {
          if ("undefined" != typeof AbortSignal)
            s.call(document, "yt-action", e2, { once: true, capture: true });
          else {
            let t2 = () => {
              e2(), y.call(document, "yt-action", t2, true);
            };
            s.call(document, "yt-action", t2, true);
          }
        }).then(o), a.resolve().then(() => {
          "loading" !== document.readyState ? r() : e.addEventListener("DOMContentLoaded", r, false);
        });
      }
    })();
    let configOnce = false;
    window._ytConfigHacks.add((config_) => {
      if (configOnce)
        return;
      configOnce = true;
      const EXPERIMENT_FLAGS = config_.EXPERIMENT_FLAGS || 0;
      const EXPERIMENTS_FORCED_FLAGS = config_.EXPERIMENTS_FORCED_FLAGS || 0;
      for (const flags of [EXPERIMENT_FLAGS, EXPERIMENTS_FORCED_FLAGS]) {
        if (flags) {
          flags.web_watch_chat_hide_button_killswitch = false;
          flags.web_watch_theater_chat = false;
          flags.suppress_error_204_logging = true;
          flags.kevlar_watch_grid = false;
          if (DISABLE_FLAGS_SHADYDOM_FREE) {
            flags.enable_shadydom_free_scoped_node_methods = false;
            flags.enable_shadydom_free_scoped_query_methods = false;
            flags.enable_shadydom_free_scoped_readonly_properties_batch_one = false;
            flags.enable_shadydom_free_parent_node = false;
            flags.enable_shadydom_free_children = false;
            flags.enable_shadydom_free_last_child = false;
          }
        }
      }
    });
    const mWeakRef = typeof WeakRef === "function" ? (o) => o ? new WeakRef(o) : null : (o) => o || null;
    const kRef = (wr) => wr && wr.deref ? wr.deref() : wr;
    const Promise = (async () => {
    })().constructor;
    const delayPn = (delay) => new Promise((fn) => setTimeout(fn, delay));
    const insp = (o) => o ? o.polymerController || o.inst || o || 0 : o || 0;
    const PromiseExternal = ((resolve_, reject_) => {
      const h = (resolve, reject) => {
        resolve_ = resolve;
        reject_ = reject;
      };
      return class PromiseExternal extends Promise {
        constructor(cb = h) {
          super(cb);
          if (cb === h) {
            this.resolve = resolve_;
            this.reject = reject_;
          }
        }
      };
    })();
    !function(e) {
      "use strict";
      if (e.nextBrowserTick)
        return;
      if (!function() {
        if (e.postMessage && !e.importScripts && e.addEventListener) {
          let t2 = true, s2 = () => {
            t2 = false;
          };
          return e.addEventListener("message", s2, false), e.postMessage("", "*"), e.removeEventListener("message", s2, false), t2;
        }
      }())
        return void 0;
      const t = (async () => {
      })().constructor, s = ((e2, s2) => {
        const n2 = (t2, n3) => {
          e2 = t2, s2 = n3;
        };
        return class extends t {
          constructor(t2 = n2) {
            super(t2), t2 === n2 && (this.resolve = e2, this.reject = s2);
          }
        };
      })();
      let n, r = null;
      do {
        n = `$$nextBrowserTick$$${(Math.random() + 8).toString().slice(2)}$$`;
      } while (n in e);
      const o = n;
      e[o] = 1;
      e.addEventListener(
        "message",
        (e2) => {
          (null !== r ? (e2 || 0).data : 0) === o && e2.source === (e2.target || 1) && r.resolve(r = null);
        },
        false
      ), e.nextBrowserTick = (t2) => {
        r || (r = new s(), e.postMessage(o, "*")), r.then(t2).catch(console.warn);
      };
    }(
      "undefined" == typeof self ? "undefined" == typeof global ? void 0 : global : self
    );
    const isPassiveArgSupport = typeof IntersectionObserver === "function";
    const bubblePassive = isPassiveArgSupport ? { capture: false, passive: true } : false;
    const capturePassive = isPassiveArgSupport ? { capture: true, passive: true } : true;
    class Attributer {
      constructor(list) {
        this.list = list;
        this.flag = 0;
      }
      makeString() {
        let k = 1;
        let s = "";
        let i = 0;
        while (this.flag >= k) {
          if (this.flag & k) {
            s += this.list[i];
          }
          i++;
          k <<= 1;
        }
        return s;
      }
    }
    const mLoaded = new Attributer("icp");
    const wrSelfMap = /* @__PURE__ */ new WeakMap();
    const elements = new Proxy(
      {
        related: null,
        comments: null,
        infoExpander: null
      },
      {
        get(target, prop) {
          return kRef(target[prop]);
        },
        set(target, prop, value) {
          if (value) {
            let wr = wrSelfMap.get(value);
            if (!wr) {
              wr = mWeakRef(value);
              wrSelfMap.set(value, wr);
            }
            target[prop] = wr;
          } else {
            target[prop] = null;
          }
          return true;
        }
      }
    );
    const getMainInfo = () => {
      const infoExpander = elements.infoExpander;
      if (!infoExpander)
        return null;
      const mainInfo = infoExpander.matches("ytd-expander[tyt-main-info]") ? infoExpander : infoExpander.querySelector000("ytd-expander[tyt-main-info]");
      return mainInfo || null;
    };
    const asyncWrap = (asyncFn) => {
      return () => {
        Promise.resolve().then(asyncFn);
      };
    };
    let pageType = null;
    let pageLang = "en";
    const langWords = {
      en: {
        info: "Info",
        videos: "Videos",
        playlist: "Playlist"
      },
      jp: {
        info: "情報",
        videos: "動画",
        playlist: "再生リスト"
      },
      tw: {
        info: "資訊",
        videos: "影片",
        playlist: "播放清單"
      },
      cn: {
        info: "资讯",
        videos: "视频",
        playlist: "播放列表"
      },
      du: {
        info: "Info",
        videos: "Videos",
        playlist: "Playlist"
      },
      fr: {
        info: "Info",
        videos: "Vidéos",
        playlist: "Playlist"
      },
      kr: {
        info: "정보",
        videos: "동영상",
        playlist: "재생목록"
      },
      ru: {
        info: "Описание",
        videos: "Видео",
        playlist: "Плейлист"
      }
    };
    const svgComments = `<path d="M80 27H12A12 12 90 0 0 0 39v42a12 12 90 0 0 12 12h12v20a2 2 90 0 0 3.4 2L47 93h33a12 
  12 90 0 0 12-12V39a12 12 90 0 0-12-12zM20 47h26a2 2 90 1 1 0 4H20a2 2 90 1 1 0-4zm52 28H20a2 2 90 1 1 0-4h52a2 2 90 
  1 1 0 4zm0-12H20a2 2 90 1 1 0-4h52a2 2 90 1 1 0 4zm36-58H40a12 12 90 0 0-12 12v6h52c9 0 16 7 16 16v42h0v4l7 7a2 2 90 
  0 0 3-1V71h2a12 12 90 0 0 12-12V17a12 12 90 0 0-12-12z"/>`.trim();
    const svgVideos = `<path d="M89 10c0-4-3-7-7-7H7c-4 0-7 3-7 7v70c0 4 3 7 7 7h75c4 0 7-3 7-7V10zm-62 2h13v10H27V12zm-9 
  66H9V68h9v10zm0-56H9V12h9v10zm22 56H27V68h13v10zm-3-25V36c0-2 2-3 4-2l12 8c2 1 2 4 0 5l-12 8c-2 1-4 0-4-2zm25 
  25H49V68h13v10zm0-56H49V12h13v10zm18 56h-9V68h9v10zm0-56h-9V12h9v10z"/>`.trim();
    const svgInfo = `<path d="M30 0C13.3 0 0 13.3 0 30s13.3 30 30 30 30-13.3 30-30S46.7 0 30 0zm6.2 46.6c-1.5.5-2.6 
  1-3.6 1.3a10.9 10.9 0 0 1-3.3.5c-1.7 0-3.3-.5-4.3-1.4a4.68 4.68 0 0 1-1.6-3.6c0-.4.2-1 .2-1.5a20.9 20.9 90 0 1 
  .3-2l2-6.8c.1-.7.3-1.3.4-1.9a8.2 8.2 90 0 0 .3-1.6c0-.8-.3-1.4-.7-1.8s-1-.5-2-.5a4.53 4.53 0 0 0-1.6.3c-.5.2-1 
  .2-1.3.4l.6-2.1c1.2-.5 2.4-1 3.5-1.3s2.3-.6 3.3-.6c1.9 0 3.3.6 4.3 1.3s1.5 2.1 1.5 3.5c0 .3 0 .9-.1 1.6a10.4 10.4 
  90 0 1-.4 2.2l-1.9 6.7c-.2.5-.2 1.1-.4 1.8s-.2 1.3-.2 1.6c0 .9.2 1.6.6 1.9s1.1.5 2.1.5a6.1 6.1 90 0 0 1.5-.3 9 9 90 
  0 0 1.4-.4l-.6 2.2zm-3.8-35.2a1 1 0 010 8.6 1 1 0 010-8.6z"/>`.trim();
    const svgPlayList = `<path d="M0 3h12v2H0zm0 4h12v2H0zm0 4h8v2H0zm16 0V7h-2v4h-4v2h4v4h2v-4h4v-2z"/>`.trim();
    const svgDiag1 = `<svg stroke="currentColor" fill="none"><path d="M8 2h2v2M7 5l3-3m-6 8H2V8m0 2l3-3"/></svg>`;
    const svgDiag2 = `<svg stroke="currentColor" fill="none"><path d="M7 3v2h2M7 5l3-3M5 9V7H3m-1 3l3-3"/></svg>`;
    const getGMT = () => {
      let m = new Date("2023-01-01T00:00:00Z");
      return m.getDate() === 1 ? `+${m.getHours()}` : `-${24 - m.getHours()}`;
    };
    const svgElm = (w, h, vw, vh, p, m) => `<svg${m ? ` class=${m}` : ""} width="${w}" height="${h}" viewBox="0 0 ${vw} ${vh}" preserveAspectRatio="xMidYMid meet">${p}</svg>`;
    let hiddenTabsByUserCSS = 0;
    const _locks = {};
    const lockGet = new Proxy(_locks, {
      get(target, prop) {
        return target[prop] || 0;
      },
      set(target, prop, val) {
        return true;
      }
    });
    const lockSet = new Proxy(_locks, {
      get(target, prop) {
        if (target[prop] > 1e9)
          target[prop] = 9;
        return target[prop] = (target[prop] || 0) + 1;
      },
      set(target, prop, val) {
        return true;
      }
    });
    const videosElementProvidedPromise = new PromiseExternal();
    const navigateFinishedPromise = new PromiseExternal();
    let isRightTabsInserted = false;
    const rightTabsProvidedPromise = new PromiseExternal();
    const infoExpanderElementProvidedPromise = new PromiseExternal();
    const funcCanCollapse = function(s) {
      if (!s)
        return;
      this.canToggle = this.shouldUseNumberOfLines && (this.alwaysCollapsed || this.collapsed) ? this.alwaysToggleable || this.$.content.offsetHeight < this.$.content.scrollHeight : this.alwaysToggleable || this.$.content.scrollHeight > this.collapsedHeight;
    };
    const aoChatAttrChangeFn = async (lockId) => {
      if (lockGet["aoChatAttrAsyncLock"] !== lockId)
        return;
      const chatElm = elements.chat;
      const ytdFlexyElm = elements.flexy;
      if (chatElm && ytdFlexyElm) {
        const isChatCollapsed = chatElm.hasAttribute000("collapsed");
        if (isChatCollapsed) {
          ytdFlexyElm.setAttribute111("tyt-chat-collapsed", "");
        } else {
          ytdFlexyElm.removeAttribute000("tyt-chat-collapsed");
        }
        ytdFlexyElm.setAttribute111("tyt-chat", isChatCollapsed ? "-" : "+");
      }
    };
    const aoInfoAttrChangeFn = async (lockId) => {
      if (lockGet["aoInfoAttrAsyncLock"] !== lockId)
        return;
      const infoElm = elements.infoExpander;
      const ytdFlexyElm = elements.flexy;
      if (infoElm && ytdFlexyElm) {
        const videoId = infoElm.getAttribute000("tyt-video-id");
        const displayFor = infoElm.getAttribute000("tyt-display-for");
        const b = videoId && displayFor && videoId === displayFor;
        infoElm.classList.toggle("tyt-info-invisible", !b);
      }
    };
    const zoInfoAttrChangeFn = async (lockId) => {
      if (lockGet["zoInfoAttrAsyncLock"] !== lockId)
        return;
      const infoElm = elements.infoExpander;
      const ytdFlexyElm = elements.flexy;
      if (infoElm && ytdFlexyElm) {
        if (ytdFlexyElm.hasAttribute000("hidden")) {
          infoElm.setAttribute111("tyt-video-id", "");
        } else {
          const videoId = getCurrentVideoId();
          infoElm.setAttribute111("tyt-video-id", videoId);
          infoElm.setAttribute111("tyt-display-for", videoId);
        }
      }
    };
    const aoPlayListAttrChangeFn = async (lockId) => {
      if (lockGet["aoPlayListAttrAsyncLock"] !== lockId)
        return;
      const playlistElm = elements.playlist;
      const ytdFlexyElm = elements.flexy;
      if (playlistElm && ytdFlexyElm) {
        if (playlistElm.hasAttribute000("collapsed")) {
          ytdFlexyElm.removeAttribute000("tyt-playlist-expanded");
        } else {
          ytdFlexyElm.setAttribute111("tyt-playlist-expanded", "");
        }
      } else if (ytdFlexyElm) {
        ytdFlexyElm.removeAttribute000("tyt-playlist-expanded");
      }
    };
    const aoChat = new MutationObserver(() => {
      Promise.resolve(lockSet["aoChatAttrAsyncLock"]).then(aoChatAttrChangeFn).catch(console.warn);
    });
    const aoInfo = new MutationObserver(() => {
      Promise.resolve(lockSet["aoInfoAttrAsyncLock"]).then(aoInfoAttrChangeFn).catch(console.warn);
    });
    const zoInfo = new MutationObserver(() => {
      Promise.resolve(lockSet["zoInfoAttrAsyncLock"]).then(zoInfoAttrChangeFn).catch(console.warn);
    });
    const aoPlayList = new MutationObserver(() => {
      Promise.resolve(lockSet["aoPlayListAttrAsyncLock"]).then(aoPlayListAttrChangeFn).catch(console.warn);
    });
    const aoComment = new MutationObserver(async (mutations) => {
      const commentsArea = elements.comments;
      const ytdFlexyElm = elements.flexy;
      if (!commentsArea)
        return;
      let bfHidden = false;
      let bfCommentsVideoId = false;
      let bfCommentDisabled = false;
      for (const mutation of mutations) {
        if (mutation.attributeName === "hidden" && mutation.target === commentsArea) {
          bfHidden = true;
        } else if (mutation.attributeName === "tyt-comments-video-id" && mutation.target === commentsArea) {
          bfCommentsVideoId = true;
        } else if (mutation.attributeName === "tyt-comments-data-status" && mutation.target === commentsArea) {
          bfCommentDisabled = true;
        }
      }
      if (bfHidden) {
        if (!commentsArea.hasAttribute000("hidden")) {
          Promise.resolve(commentsArea).then(eventMap["settingCommentsVideoId"]).catch(console.warn);
        }
        Promise.resolve(lockSet["removeKeepCommentsScrollerLock"]).then(removeKeepCommentsScroller).catch(console.warn);
      }
      if ((bfHidden || bfCommentsVideoId || bfCommentDisabled) && ytdFlexyElm) {
        const commentsDataStatus = +commentsArea.getAttribute000(
          "tyt-comments-data-status"
        );
        if (commentsDataStatus === 2) {
          ytdFlexyElm.setAttribute111("tyt-comment-disabled", "");
        } else if (commentsDataStatus === 1) {
          ytdFlexyElm.removeAttribute000("tyt-comment-disabled");
        }
        Promise.resolve(lockSet["checkCommentsShouldBeHiddenLock"]).then(eventMap["checkCommentsShouldBeHidden"]).catch(console.warn);
        const lockId = lockSet["rightTabReadyLock01"];
        await rightTabsProvidedPromise.then();
        if (lockGet["rightTabReadyLock01"] !== lockId)
          return;
        if (elements.comments !== commentsArea)
          return;
        if (commentsArea.isConnected === false)
          return;
        if (commentsArea.closest("#tab-comments")) {
          const shouldTabVisible = !commentsArea.closest("[hidden]");
          document.querySelector('[tyt-tab-content="#tab-comments"]').classList.toggle("tab-btn-hidden", !shouldTabVisible);
        }
      }
    });
    const ioComment = new IntersectionObserver(
      (entries) => {
        for (const entry of entries) {
          const target = entry.target;
          const cnt = insp(target);
          if (entry.isIntersecting && target instanceof HTMLElement_ && typeof cnt.calculateCanCollapse === "function") {
            lockSet["removeKeepCommentsScrollerLock"];
            cnt.calculateCanCollapse(true);
            target.setAttribute111("io-intersected", "");
            const ytdFlexyElm = elements.flexy;
            if (ytdFlexyElm && !ytdFlexyElm.hasAttribute000("keep-comments-scroller")) {
              ytdFlexyElm.setAttribute111("keep-comments-scroller", "");
            }
          } else if (target.hasAttribute000("io-intersected")) {
            target.removeAttribute000("io-intersected");
          }
        }
      },
      {
        threshold: [0],
        rootMargin: "32px"
      }
    );
    let bFixForResizedTabLater = false;
    let lastRoRightTabsWidth = 0;
    const roRightTabs = new ResizeObserver((entries) => {
      const entry = entries[entries.length - 1];
      const width = Math.round(entry.borderBoxSize.inlineSize);
      if (lastRoRightTabsWidth !== width) {
        lastRoRightTabsWidth = width;
        if ((tabAStatus & 2) === 2) {
          bFixForResizedTabLater = false;
          Promise.resolve(1).then(eventMap["fixForTabDisplay"]);
        } else {
          bFixForResizedTabLater = true;
        }
      }
    });
    const switchToTab = (activeLink) => {
      if (typeof activeLink === "string") {
        activeLink = document.querySelector(`a[tyt-tab-content="${activeLink}"]`) || null;
      }
      const ytdFlexyElm = elements.flexy;
      const links = document.querySelectorAll(
        "#material-tabs a[tyt-tab-content]"
      );
      for (const link of links) {
        const content = document.querySelector(
          link.getAttribute000("tyt-tab-content")
        );
        if (link && content) {
          if (link !== activeLink) {
            link.classList.remove("active");
            content.classList.add("tab-content-hidden");
            if (!content.hasAttribute000("tyt-hidden")) {
              content.setAttribute111("tyt-hidden", "");
            }
          } else {
            link.classList.add("active");
            if (content.hasAttribute000("tyt-hidden")) {
              content.removeAttribute000("tyt-hidden");
            }
            content.classList.remove("tab-content-hidden");
          }
        }
      }
      const switchingTo = activeLink ? activeLink.getAttribute000("tyt-tab-content") : "";
      if (switchingTo) {
        lastTab = lastPanel = switchingTo;
      }
      if (ytdFlexyElm.getAttribute000("tyt-chat") === "")
        ytdFlexyElm.removeAttribute000("tyt-chat");
      ytdFlexyElm.setAttribute111("tyt-tab", switchingTo);
      if (switchingTo) {
        bFixForResizedTabLater = false;
        Promise.resolve(0).then(eventMap["fixForTabDisplay"]);
      }
    };
    let tabAStatus = 0;
    const calculationFn = (r = 0, flag) => {
      const ytdFlexyElm = elements.flexy;
      if (!ytdFlexyElm)
        return r;
      if (flag & 1) {
        r |= 1;
        if (!ytdFlexyElm.hasAttribute000("theater"))
          r -= 1;
      }
      if (flag & 2) {
        r |= 2;
        if (!ytdFlexyElm.getAttribute000("tyt-tab"))
          r -= 2;
      }
      if (flag & 4) {
        r |= 4;
        if (ytdFlexyElm.getAttribute000("tyt-chat") !== "-")
          r -= 4;
      }
      if (flag & 8) {
        r |= 8;
        if (ytdFlexyElm.getAttribute000("tyt-chat") !== "+")
          r -= 8;
      }
      if (flag & 16) {
        r |= 16;
        if (!ytdFlexyElm.hasAttribute000("is-two-columns_"))
          r -= 16;
      }
      if (flag & 32) {
        r |= 32;
        if (!ytdFlexyElm.hasAttribute000("tyt-egm-panel_"))
          r -= 32;
      }
      if (flag & 64) {
        r |= 64;
        if (!document.fullscreenElement)
          r -= 64;
      }
      if (flag & 128) {
        r |= 128;
        if (!ytdFlexyElm.hasAttribute000("tyt-playlist-expanded"))
          r -= 128;
      }
      return r;
    };
    const updateChatLocation498 = function() {
      if (this.is !== "ytd-watch-grid") {
        this.updatePageMediaQueries();
        this.schedulePlayerSizeUpdate_();
      }
    };
    const mirrorNodeWS = /* @__PURE__ */ new WeakMap();
    const dummyNode = document.createElement("noscript");
    const __j4836__ = Symbol();
    const __j5744__ = Symbol();
    const __j5733__ = Symbol();
    const monitorDataChangedByDOMMutation = async function(mutations) {
      const nodeWR = this;
      const node = kRef(nodeWR);
      if (!node)
        return;
      const cnt = insp(node);
      const __lastChanged__ = cnt[__j5733__];
      const val = cnt.data ? cnt.data[__j4836__] || 1 : 0;
      if (__lastChanged__ !== val) {
        cnt[__j5733__] = val > 0 ? cnt.data[__j4836__] = Date.now() : 0;
        await Promise.resolve();
        attributeInc(node, "tyt-data-change-counter");
      }
    };
    const moChangeReflection = function(mutations) {
      const nodeWR = this;
      const node = kRef(nodeWR);
      if (!node)
        return;
      const originElement = kRef(node[__j5744__] || null) || null;
      if (!originElement)
        return;
      const cnt = insp(node);
      const oriCnt = insp(originElement);
      if (mutations) {
        let bfDataChangeCounter = false;
        for (const mutation of mutations) {
          if (mutation.attributeName === "tyt-clone-refresh-count" && mutation.target === originElement) {
            bfDataChangeCounter = true;
          } else if (mutation.attributeName === "tyt-data-change-counter" && mutation.target === originElement) {
            bfDataChangeCounter = true;
          }
        }
        if (bfDataChangeCounter && oriCnt.data) {
          node.replaceWith(dummyNode);
          cnt.data = Object.assign({}, oriCnt.data);
          dummyNode.replaceWith(node);
        }
      }
    };
    const attributeInc = (elm, prop) => {
      let v = (+elm.getAttribute000(prop) || 0) + 1;
      if (v > 1e9)
        v = 9;
      elm.setAttribute000(prop, v);
      return v;
    };
    const infoFix = (lockId) => {
      if (lockGet["infoFixLock"] !== lockId)
        return;
      const infoExpander = elements.infoExpander;
      const infoContainer = (infoExpander ? infoExpander.parentNode : null) || document.querySelector("#tab-info");
      const ytdFlexyElm = elements.flexy;
      if (!infoContainer || !ytdFlexyElm)
        return;
      if (infoExpander && !infoExpander.matches("#tab-info > [class]"))
        return;
      const requireElements = [
        ...document.querySelectorAll(
          'ytd-watch-metadata.ytd-watch-flexy div[slot="extra-content"] > *, ytd-watch-metadata.ytd-watch-flexy #extra-content > *'
        )
      ].filter((elm) => {
        return typeof elm.is == "string";
      }).map((elm) => {
        const is = elm.is;
        while (elm instanceof HTMLElement_) {
          const q = [...elm.querySelectorAll(is)].filter((e) => insp(e).data);
          if (q.length >= 1)
            return q[0];
          elm = elm.parentNode;
        }
      }).filter((elm) => !!elm && typeof elm.is === "string");
      const source = requireElements.map((entry) => {
        const inst = insp(entry);
        return {
          data: inst.data,
          tag: inst.is,
          elm: entry
        };
      });
      let noscript_ = document.querySelector("noscript#aythl");
      if (!noscript_) {
        noscript_ = document.createElement("noscript");
        noscript_.id = "aythl";
        inPageRearrange = true;
        ytdFlexyElm.insertBefore000(noscript_, ytdFlexyElm.firstChild);
        inPageRearrange = false;
      }
      const noscript = noscript_;
      let requiredUpdate = false;
      const mirrorElmSet = /* @__PURE__ */ new Set();
      const targetParent = infoContainer;
      for (const { data, tag, elm: s } of source) {
        let mirrorNode = mirrorNodeWS.get(s);
        mirrorNode = mirrorNode ? kRef(mirrorNode) : mirrorNode;
        if (!mirrorNode) {
          const cnt = insp(s);
          const cProto = cnt.constructor.prototype;
          const element = document.createElement(tag);
          noscript.appendChild(element);
          mirrorNode = element;
          mirrorNode[__j5744__] = mWeakRef(s);
          const nodeWR = mWeakRef(mirrorNode);
          new MutationObserver(moChangeReflection.bind(nodeWR)).observe(s, {
            attributes: true,
            attributeFilter: [
              "tyt-clone-refresh-count",
              "tyt-data-change-counter"
            ]
          });
          s.jy8432 = 1;
          if (!(cProto instanceof Node) && !cProto._dataChanged496 && typeof cProto._createPropertyObserver === "function") {
            cProto._dataChanged496 = function() {
              const cnt2 = this;
              const node = cnt2.hostElement || cnt2;
              if (node.jy8432) {
                attributeInc(node, "tyt-data-change-counter");
              }
            };
            cProto._createPropertyObserver(
              "data",
              "_dataChanged496",
              void 0
            );
          } else if (!(cProto instanceof Node) && !cProto._dataChanged496 && cProto.useSignals === true && insp(s).signalProxy) {
            const dataSignal = cnt?.signalProxy?.signalCache?.data;
            if (dataSignal && typeof dataSignal.setWithPath === "function" && !dataSignal.setWithPath573 && !dataSignal.controller573) {
              dataSignal.controller573 = mWeakRef(cnt);
              dataSignal.setWithPath573 = dataSignal.setWithPath;
              dataSignal.setWithPath = function() {
                const cnt2 = kRef(this.controller573 || null) || null;
                cnt2 && typeof cnt2._dataChanged496k === "function" && Promise.resolve(cnt2).then(cnt2._dataChanged496k).catch(console.warn);
                return this.setWithPath573(...arguments);
              };
              cProto._dataChanged496 = function() {
                const cnt2 = this;
                const node = cnt2.hostElement || cnt2;
                if (node.jy8432) {
                  attributeInc(node, "tyt-data-change-counter");
                }
              };
              cProto._dataChanged496k = (cnt2) => cnt2._dataChanged496();
            }
          }
          if (!cProto._dataChanged496) {
            new MutationObserver(
              monitorDataChangedByDOMMutation.bind(mirrorNode[__j5744__])
            ).observe(s, { attributes: true, childList: true, subtree: true });
          }
          mirrorNodeWS.set(s, nodeWR);
          requiredUpdate = true;
        } else {
          if (mirrorNode.parentNode !== targetParent) {
            requiredUpdate = true;
          }
        }
        if (!requiredUpdate) {
          const cloneNodeCnt = insp(mirrorNode);
          if (cloneNodeCnt.data !== data) {
            requiredUpdate = true;
          }
        }
        mirrorElmSet.add(mirrorNode);
        source.mirrored = mirrorNode;
      }
      const mirroElmArr = [...mirrorElmSet];
      mirrorElmSet.clear();
      if (!requiredUpdate) {
        let e = infoExpander ? -1 : 0;
        for (let n = targetParent.firstChild; n instanceof Node; n = n.nextSibling) {
          let target = e < 0 ? infoExpander : mirroElmArr[e];
          e++;
          if (n !== target) {
            requiredUpdate = true;
            break;
          }
        }
        if (!requiredUpdate && e !== mirroElmArr.length + 1)
          requiredUpdate = true;
      }
      if (requiredUpdate) {
        if (infoExpander) {
          targetParent.assignChildern111(null, infoExpander, mirroElmArr);
        } else {
          targetParent.replaceChildren000(...mirroElmArr);
        }
        for (const mirrorElm of mirroElmArr) {
          const j = attributeInc(mirrorElm, "tyt-clone-refresh-count");
          const oriElm = kRef(mirrorElm[__j5744__] || null) || null;
          if (oriElm) {
            oriElm.setAttribute111("tyt-clone-refresh-count", j);
          }
        }
      }
      mirroElmArr.length = 0;
      source.length = 0;
    };
    const layoutFix = (lockId) => {
      if (lockGet["layoutFixLock"] !== lockId)
        return;
      const secondaryWrapper = document.querySelector(
        "#secondary-inner.style-scope.ytd-watch-flexy > secondary-wrapper"
      );
      if (secondaryWrapper) {
        const secondaryInner = secondaryWrapper.parentNode;
        const chatContainer = document.querySelector(
          "#columns.style-scope.ytd-watch-flexy [tyt-chat-container]"
        );
        if (secondaryInner.firstChild !== secondaryInner.lastChild || chatContainer && !chatContainer.closest("secondary-wrapper")) {
          let w = [];
          let w2 = [];
          for (let node = secondaryInner.firstChild; node instanceof Node; node = node.nextSibling) {
            if (node === chatContainer && chatContainer) {
            } else if (node === secondaryWrapper) {
              for (let node2 = secondaryWrapper.firstChild; node2 instanceof Node; node2 = node2.nextSibling) {
                if (node2 === chatContainer && chatContainer) {
                } else {
                  if (node2.id === "right-tabs" && chatContainer) {
                    w2.push(chatContainer);
                  }
                  w2.push(node2);
                }
              }
            } else {
              w.push(node);
            }
          }
          inPageRearrange = true;
          secondaryWrapper.replaceChildren000(...w, ...w2);
          inPageRearrange = false;
          const chatElm = elements.chat;
          const chatCnt = insp(chatElm);
          if (chatCnt && typeof chatCnt.urlChanged === "function" && secondaryWrapper.contains(chatElm)) {
            if (typeof chatCnt.urlChangedAsync12 === "function") {
              chatCnt.urlChanged();
            } else {
              setTimeout(() => chatCnt.urlChanged(), 136);
            }
          }
        }
      }
    };
    let lastPanel = "";
    let lastTab = "";
    const aoEgmPanels = new MutationObserver(() => {
      Promise.resolve(lockSet["updateEgmPanelsLock"]).then(updateEgmPanels).catch(console.warn);
    });
    const removeKeepCommentsScroller = async (lockId) => {
      if (lockGet["removeKeepCommentsScrollerLock"] !== lockId)
        return;
      await Promise.resolve();
      if (lockGet["removeKeepCommentsScrollerLock"] !== lockId)
        return;
      const ytdFlexyFlm = elements.flexy;
      if (ytdFlexyFlm) {
        ytdFlexyFlm.removeAttribute000("keep-comments-scroller");
      }
    };
    const updateEgmPanels = async (lockId) => {
      if (lockId !== lockGet["updateEgmPanelsLock"])
        return;
      await navigateFinishedPromise.then().catch(console.warn);
      if (lockId !== lockGet["updateEgmPanelsLock"])
        return;
      const ytdFlexyElm = elements.flexy;
      if (!ytdFlexyElm)
        return;
      let newVisiblePanels = [];
      let newHiddenPanels = [];
      let allVisiblePanels = [];
      for (const panelElm of document.querySelectorAll(
        "[tyt-egm-panel][target-id][visibility]"
      )) {
        const visibility = panelElm.getAttribute000("visibility");
        if (visibility === "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN" || panelElm.closest("[hidden]")) {
          if (panelElm.hasAttribute000("tyt-visible-at")) {
            panelElm.removeAttribute000("tyt-visible-at");
            newHiddenPanels.push(panelElm);
          }
        } else if (visibility === "ENGAGEMENT_PANEL_VISIBILITY_EXPANDED" && !panelElm.closest("[hidden]")) {
          let visibleAt = panelElm.getAttribute000("tyt-visible-at");
          if (!visibleAt) {
            panelElm.setAttribute111("tyt-visible-at", Date.now());
            newVisiblePanels.push(panelElm);
          }
          allVisiblePanels.push(panelElm);
        }
      }
      if (newVisiblePanels.length >= 1 && allVisiblePanels.length >= 2) {
        const targetVisible = newVisiblePanels[newVisiblePanels.length - 1];
        const actions = [];
        for (const panelElm of allVisiblePanels) {
          if (panelElm === targetVisible)
            continue;
          actions.push({
            panelId: panelElm.getAttribute000("target-id"),
            toHide: true
          });
        }
        if (actions.length >= 1) {
          ytBtnEgmPanelCore(actions);
        }
      }
      if (allVisiblePanels.length >= 1) {
        ytdFlexyElm.setAttribute111("tyt-egm-panel_", "");
      } else {
        ytdFlexyElm.removeAttribute000("tyt-egm-panel_");
      }
      newVisiblePanels.length = 0;
      newVisiblePanels = null;
      newHiddenPanels.length = 0;
      newHiddenPanels = null;
      allVisiblePanels.length = 0;
      allVisiblePanels = null;
    };
    const checkElementExist = (css, exclude) => {
      for (const p of document.querySelectorAll(css)) {
        if (!p.closest(exclude))
          return p;
      }
      return null;
    };
    let fixInitialTabStateK = 0;
    const { handleNavigateFactory } = (() => {
      let isLoadStartListened = false;
      function findLcComment(lc) {
        if (arguments.length === 1) {
          let element = document.querySelector(
            `#tab-comments ytd-comments ytd-comment-renderer #header-author a[href*="lc=${lc}"]`
          );
          if (element) {
            let commentRendererElm = closestFromAnchor.call(
              element,
              "ytd-comment-renderer"
            );
            if (commentRendererElm && lc) {
              return {
                lc,
                commentRendererElm
              };
            }
          }
        } else if (arguments.length === 0) {
          let element = document.querySelector(
            `#tab-comments ytd-comments ytd-comment-renderer > #linked-comment-badge span:not(:empty)`
          );
          if (element) {
            let commentRendererElm = closestFromAnchor.call(
              element,
              "ytd-comment-renderer"
            );
            if (commentRendererElm) {
              let header = _querySelector.call(
                commentRendererElm,
                "#header-author"
              );
              if (header) {
                let anchor = _querySelector.call(header, 'a[href*="lc="]');
                if (anchor) {
                  let href = anchor.getAttribute("href") || "";
                  let m = /[&?]lc=([\w_.-]+)/.exec(href);
                  if (m) {
                    lc = m[1];
                  }
                }
              }
            }
            if (commentRendererElm && lc) {
              return {
                lc,
                commentRendererElm
              };
            }
          }
        }
        return null;
      }
      function lcSwapFuncA(targetLcId, currentLcId) {
        let done = 0;
        try {
          let r1 = findLcComment(currentLcId).commentRendererElm;
          let r2 = findLcComment(targetLcId).commentRendererElm;
          if (typeof insp(r1).data.linkedCommentBadge === "object" && typeof insp(r2).data.linkedCommentBadge === "undefined") {
            let p = Object.assign({}, insp(r1).data.linkedCommentBadge);
            if (((p || 0).metadataBadgeRenderer || 0).trackingParams) {
              delete p.metadataBadgeRenderer.trackingParams;
            }
            const v1 = findContentsRenderer(r1);
            const v2 = findContentsRenderer(r2);
            if (v1.parent === v2.parent && (v2.parent.nodeName === "YTD-COMMENTS" || v2.parent.nodeName === "YTD-ITEM-SECTION-RENDERER")) {
            } else {
              return false;
            }
            if (v2.index >= 0) {
              if (v2.parent.nodeName === "YTD-COMMENT-REPLIES-RENDERER") {
                if (lcSwapFuncB(targetLcId, currentLcId, p)) {
                  done = 1;
                }
                done = 1;
              } else {
                const v2pCnt = insp(v2.parent);
                const v2Conents = (v2pCnt.data || 0).contents || 0;
                if (!v2Conents)
                  ;
                v2pCnt.data = Object.assign({}, v2pCnt.data, {
                  contents: [].concat(
                    [v2Conents[v2.index]],
                    v2Conents.slice(0, v2.index),
                    v2Conents.slice(v2.index + 1)
                  )
                });
                if (lcSwapFuncB(targetLcId, currentLcId, p)) {
                  done = 1;
                }
              }
            }
          }
        } catch (e) {
        }
        return done === 1;
      }
      function lcSwapFuncB(targetLcId, currentLcId, _p) {
        let done = 0;
        try {
          let r1 = findLcComment(currentLcId).commentRendererElm;
          let r1cnt = insp(r1);
          let r2 = findLcComment(targetLcId).commentRendererElm;
          let r2cnt = insp(r2);
          const r1d = r1cnt.data;
          let p = Object.assign({}, _p);
          r1d.linkedCommentBadge = null;
          delete r1d.linkedCommentBadge;
          let q = Object.assign({}, r1d);
          q.linkedCommentBadge = null;
          delete q.linkedCommentBadge;
          r1cnt.data = Object.assign({}, q);
          r2cnt.data = Object.assign({}, r2cnt.data, { linkedCommentBadge: p });
          done = 1;
        } catch (e) {
        }
        return done === 1;
      }
      const loadStartFx = async (evt) => {
        let media = (evt || 0).target || 0;
        if (media.nodeName === "VIDEO" || media.nodeName === "AUDIO") {
        } else
          return;
        const newMedia = media;
        const media1 = getMediaElement(0);
        const media2 = getMediaElements(2);
        if (media1 !== null && media2.length > 0) {
          if (newMedia !== media1 && media1.paused === false) {
            if (isVideoPlaying(media1)) {
              Promise.resolve(newMedia).then((video) => video.paused === false && video.pause()).catch(console.warn);
            }
          } else if (newMedia === media1) {
            for (const s of media2) {
              if (s.paused === false) {
                Promise.resolve(s).then((s2) => s2.paused === false && s2.pause()).catch(console.warn);
                break;
              }
            }
          } else {
            Promise.resolve(media1).then((video1) => video1.paused === false && video1.pause()).catch(console.warn);
          }
        }
      };
      const getBrowsableEndPoint = (req) => {
        let valid = false;
        let endpoint = req ? req.command : null;
        if (endpoint && (endpoint.commandMetadata || 0).webCommandMetadata && endpoint.watchEndpoint) {
          let videoId = endpoint.watchEndpoint.videoId;
          let url = endpoint.commandMetadata.webCommandMetadata.url;
          if (typeof videoId === "string" && typeof url === "string" && url.indexOf("lc=") > 0) {
            let m = /^\/watch\?v=([\w_-]+)&lc=([\w_.-]+)$/.exec(url);
            if (m && m[1] === videoId) {
              let targetLc = findLcComment(m[2]);
              let currentLc = targetLc ? findLcComment() : null;
              if (targetLc && currentLc) {
                let done = targetLc.lc === currentLc.lc ? 1 : lcSwapFuncA(targetLc.lc, currentLc.lc) ? 1 : 0;
                if (done === 1) {
                  common.xReplaceState(history.state, url);
                  return;
                }
              }
            }
          }
        }
        if (endpoint && (endpoint.browseEndpoint || endpoint.searchEndpoint) && !endpoint.urlEndpoint && !endpoint.watchEndpoint) {
          if (endpoint.browseEndpoint && endpoint.browseEndpoint.browseId === "FEwhat_to_watch") {
            const playerMedia = common.getMediaElement(1);
            if (playerMedia && playerMedia.paused === false)
              valid = true;
          } else if (endpoint.commandMetadata && endpoint.commandMetadata.webCommandMetadata) {
            let meta = endpoint.commandMetadata.webCommandMetadata;
            if (meta && meta.url && meta.webPageType) {
              valid = true;
            }
          }
        }
        if (!valid)
          endpoint = null;
        return endpoint;
      };
      const conditionFulfillment = (req) => {
        const endpoint = req ? req.command : null;
        if (!endpoint)
          return;
        if (endpoint && (endpoint.commandMetadata || 0).webCommandMetadata && endpoint.watchEndpoint) {
        } else if (endpoint && (endpoint.browseEndpoint || endpoint.searchEndpoint) && !endpoint.urlEndpoint && !endpoint.watchEndpoint) {
        } else {
          return false;
        }
        if (!document.querySelector(
          "ytd-page-manager#page-manager > ytd-browse[page-subtype]"
        ))
          return false;
        if (pageType !== "watch")
          return false;
        if (!checkElementExist(
          "ytd-watch-flexy #player button.ytp-miniplayer-button.ytp-button",
          "[hidden]"
        )) {
          return false;
        }
        return true;
      };
      const handleNavigateFactory2 = (handleNavigate) => {
        return function(req) {
          const $this = this;
          const $arguments = arguments;
          let endpoint = null;
          if (conditionFulfillment(req)) {
            endpoint = getBrowsableEndPoint(req);
          }
          if (!endpoint || !document.querySelector(
            "ytd-page-manager#page-manager > ytd-browse[page-subtype]"
          ))
            return handleNavigate.apply($this, $arguments);
          const ytdAppElm = document.querySelector("ytd-app");
          const ytdAppCnt = insp(ytdAppElm);
          let object = null;
          try {
            object = ytdAppCnt.data.response.currentVideoEndpoint.watchEndpoint || null;
          } catch (e) {
            object = null;
          }
          if (typeof object !== "object")
            object = null;
          const once = { once: true };
          if (object !== null && !("playlistId" in object)) {
            let wObject = mWeakRef(object);
            const N = 3;
            let count = 0;
            Object.defineProperty(kRef(wObject) || {}, "playlistId", {
              get() {
                count++;
                if (count === N) {
                  delete this.playlistId;
                }
                return "*";
              },
              set(value) {
                delete this.playlistId;
                this.playlistId = value;
              },
              enumerable: false,
              configurable: true
            });
            let playlistClearout = null;
            let timeoutid = 0;
            Promise.race([
              new Promise((r) => {
                timeoutid = setTimeout(r, 4e3);
              }),
              new Promise((r) => {
                playlistClearout = () => {
                  if (timeoutid > 0) {
                    clearTimeout(timeoutid);
                    timeoutid = 0;
                  }
                  r();
                };
                document.addEventListener(
                  "yt-page-type-changed",
                  playlistClearout,
                  once
                );
              })
            ]).then(() => {
              if (timeoutid !== 0) {
                playlistClearout && document.removeEventListener(
                  "yt-page-type-changed",
                  playlistClearout,
                  once
                );
                timeoutid = 0;
              }
              playlistClearout = null;
              count = N - 1;
              let object2 = kRef(wObject);
              wObject = null;
              return object2 ? object2.playlistId : null;
            }).catch(console.warn);
          }
          if (!isLoadStartListened) {
            isLoadStartListened = true;
            document.addEventListener("loadstart", loadStartFx, true);
          }
          handleNavigate.apply($this, $arguments);
        };
      };
      return { handleNavigateFactory: handleNavigateFactory2 };
    })();
    const common = (() => {
      let mediaModeLock = 0;
      const _getMediaElement = (i) => {
        if (mediaModeLock === 0) {
          let e = document.querySelector(".video-stream.html5-main-video") || document.querySelector(
            "#movie_player video, #movie_player audio"
          ) || document.querySelector("body video[src], body audio[src]");
          if (e) {
            if (e.nodeName === "VIDEO")
              mediaModeLock = 1;
            else if (e.nodeName === "AUDIO")
              mediaModeLock = 2;
          }
        }
        if (!mediaModeLock)
          return null;
        if (mediaModeLock === 1) {
          switch (i) {
            case 1:
              return "ytd-player#ytd-player video[src]";
            case 2:
              return 'ytd-browse[role="main"] video[src]';
            case 0:
            default:
              return "#movie_player video[src]";
          }
        } else if (mediaModeLock === 2) {
          switch (i) {
            case 1:
              return "ytd-player#ytd-player audio.video-stream.html5-main-video[src]";
            case 2:
              return 'ytd-browse[role="main"] audio.video-stream.html5-main-video[src]';
            case 0:
            default:
              return "#movie_player audio.video-stream.html5-main-video[src]";
          }
        }
        return null;
      };
      return {
        xReplaceState(s, u) {
          try {
            history.replaceState(s, "", u);
          } catch (e) {
          }
          if (s.endpoint) {
            try {
              const ytdAppElm = document.querySelector("ytd-app");
              const ytdAppCnt = insp(ytdAppElm);
              ytdAppCnt.replaceState(s.endpoint, "", u);
            } catch (e) {
            }
          }
        },
        getMediaElement(i) {
          let s = _getMediaElement(i) || "";
          if (s)
            return document.querySelector(s);
          return null;
        },
        getMediaElements(i) {
          let s = _getMediaElement(i) || "";
          if (s)
            return document.querySelectorAll(s);
          return [];
        }
      };
    })();
    let inPageRearrange = false;
    let tmpLastVideoId = "";
    const getCurrentVideoId = () => {
      const ytdFlexyElm = elements.flexy;
      const ytdFlexyCnt = insp(ytdFlexyElm);
      if (ytdFlexyCnt && typeof ytdFlexyCnt.videoId === "string")
        return ytdFlexyCnt.videoId;
      if (ytdFlexyElm && typeof ytdFlexyElm.videoId === "string")
        return ytdFlexyElm.videoId;
      return "";
    };
    const plugin = {
      minibrowser: {
        activated: false,
        toUse: true,
        activate() {
          if (this.activated)
            return;
          const isPassiveArgSupport2 = typeof IntersectionObserver === "function";
          if (!isPassiveArgSupport2)
            return;
          this.activated = true;
          const ytdAppElm = document.querySelector("ytd-app");
          const ytdAppCnt = insp(ytdAppElm);
          if (!ytdAppCnt)
            return;
          const cProto = ytdAppCnt.constructor.prototype;
          if (!cProto.handleNavigate)
            return;
          if (cProto.handleNavigate.__ma355__)
            return;
          cProto.handleNavigate = handleNavigateFactory(cProto.handleNavigate);
          cProto.handleNavigate.__ma355__ = 1;
        }
      },
      autoExpandInfoDesc: {
        activated: false,
        toUse: true,
        mo: null,
        promiseReady: new PromiseExternal(),
        moFn(lockId) {
          if (lockGet["autoExpandInfoDescAttrAsyncLock"] !== lockId)
            return;
          const mainInfo = getMainInfo();
          if (mainInfo && mainInfo.hasAttribute000("collapsed")) {
            let success = false;
            try {
              insp(mainInfo).handleMoreTap(new Event("tap"));
              success = true;
            } catch (e) {
            }
            if (success)
              mainInfo.setAttribute111("tyt-no-less-btn", "");
          }
        },
        activate() {
          if (this.activated)
            return;
          this.moFn = this.moFn.bind(this);
          this.mo = new MutationObserver(() => {
            Promise.resolve(lockSet["autoExpandInfoDescAttrAsyncLock"]).then(this.moFn).catch(console.warn);
          });
          this.activated = true;
          this.promiseReady.resolve();
        },
        async onMainInfoSet(mainInfo) {
          await this.promiseReady.then();
          this.mo.observe(mainInfo, {
            attributes: true,
            attributeFilter: ["collapsed", "attr-8ifv7"]
          });
          mainInfo.incAttribute111("attr-8ifv7");
        }
      },
      fullChannelNameOnHover: {
        activated: false,
        toUse: true,
        mo: null,
        ro: null,
        promiseReady: new PromiseExternal(),
        checkResize: 0,
        mouseEnterFn(evt) {
          const target = evt ? evt.target : null;
          if (!(target instanceof HTMLElement_))
            return;
          const metaDataElm = target.closest("ytd-watch-metadata");
          metaDataElm.classList.remove("tyt-metadata-hover-resized");
          this.checkResize = Date.now() + 300;
          metaDataElm.classList.add("tyt-metadata-hover");
        },
        mouseLeaveFn(evt) {
          const target = evt ? evt.target : null;
          if (!(target instanceof HTMLElement_))
            return;
          const metaDataElm = target.closest("ytd-watch-metadata");
          metaDataElm.classList.remove("tyt-metadata-hover-resized");
          metaDataElm.classList.remove("tyt-metadata-hover");
        },
        moFn(lockId) {
          if (lockGet["fullChannelNameOnHoverAttrAsyncLock"] !== lockId)
            return;
          const uploadInfo = document.querySelector(
            "#primary.ytd-watch-flexy ytd-watch-metadata #upload-info"
          );
          if (!uploadInfo)
            return;
          const evtOpt = { passive: true, capture: false };
          uploadInfo.removeEventListener(
            "pointerenter",
            this.mouseEnterFn,
            evtOpt
          );
          uploadInfo.removeEventListener(
            "pointerleave",
            this.mouseLeaveFn,
            evtOpt
          );
          uploadInfo.addEventListener(
            "pointerenter",
            this.mouseEnterFn,
            evtOpt
          );
          uploadInfo.addEventListener(
            "pointerleave",
            this.mouseLeaveFn,
            evtOpt
          );
        },
        async onNavigateFinish() {
          await this.promiseReady.then();
          const uploadInfo = document.querySelector(
            "#primary.ytd-watch-flexy ytd-watch-metadata #upload-info"
          );
          if (!uploadInfo)
            return;
          this.mo.observe(uploadInfo, {
            attributes: true,
            attributeFilter: ["hidden", "attr-3wb0k"]
          });
          uploadInfo.incAttribute111("attr-3wb0k");
          this.ro.observe(uploadInfo);
        },
        activate() {
          if (this.activated)
            return;
          const isPassiveArgSupport2 = typeof IntersectionObserver === "function";
          if (!isPassiveArgSupport2)
            return;
          this.activated = true;
          this.mouseEnterFn = this.mouseEnterFn.bind(this);
          this.mouseLeaveFn = this.mouseLeaveFn.bind(this);
          this.moFn = this.moFn.bind(this);
          this.mo = new MutationObserver(() => {
            Promise.resolve(lockSet["fullChannelNameOnHoverAttrAsyncLock"]).then(this.moFn).catch(console.warn);
          });
          this.ro = new ResizeObserver((mutations) => {
            if (Date.now() > this.checkResize)
              return;
            for (const mutation of mutations) {
              const uploadInfo = mutation.target;
              if (uploadInfo && mutation.contentRect.width > 0 && mutation.contentRect.height > 0) {
                const metaDataElm = uploadInfo.closest("ytd-watch-metadata");
                if (metaDataElm.classList.contains("tyt-metadata-hover")) {
                  metaDataElm.classList.add("tyt-metadata-hover-resized");
                }
                break;
              }
            }
          });
          this.promiseReady.resolve();
        }
      }
    };
    const __attachedSymbol__ = Symbol();
    const makeInitAttached = (tag) => {
      const inPageRearrange_ = inPageRearrange;
      inPageRearrange = false;
      for (const elm of document.querySelectorAll(`${tag}`)) {
        const cnt = insp(elm) || 0;
        if (typeof cnt.attached498 === "function" && !elm[__attachedSymbol__])
          Promise.resolve(elm).then(eventMap[`${tag}::attached`]).catch(console.warn);
      }
      inPageRearrange = inPageRearrange_;
    };
    const getGeneralChatElement = async () => {
      for (let i = 2; i-- > 0; ) {
        let t = document.querySelector(
          "#columns.style-scope.ytd-watch-flexy ytd-live-chat-frame#chat"
        );
        if (t instanceof Element)
          return t;
        if (i > 0) {
          await delayPn(200);
        }
      }
      return null;
    };
    const eventMap = {
      ceHack: () => {
        mLoaded.flag |= 2;
        document.documentElement.setAttribute111(
          "tabview-loaded",
          mLoaded.makeString()
        );
        retrieveCE("ytd-watch-flexy").then(eventMap["ytd-watch-flexy::defined"]).catch(console.warn);
        retrieveCE("ytd-expander").then(eventMap["ytd-expander::defined"]).catch(console.warn);
        retrieveCE("ytd-watch-next-secondary-results-renderer").then(eventMap["ytd-watch-next-secondary-results-renderer::defined"]).catch(console.warn);
        retrieveCE("ytd-comments-header-renderer").then(eventMap["ytd-comments-header-renderer::defined"]).catch(console.warn);
        retrieveCE("ytd-live-chat-frame").then(eventMap["ytd-live-chat-frame::defined"]).catch(console.warn);
        retrieveCE("ytd-comments").then(eventMap["ytd-comments::defined"]).catch(console.warn);
        retrieveCE("ytd-engagement-panel-section-list-renderer").then(eventMap["ytd-engagement-panel-section-list-renderer::defined"]).catch(console.warn);
        retrieveCE("ytd-watch-metadata").then(eventMap["ytd-watch-metadata::defined"]).catch(console.warn);
        retrieveCE("ytd-playlist-panel-renderer").then(eventMap["ytd-playlist-panel-renderer::defined"]).catch(console.warn);
      },
      fixForTabDisplay: (isResize) => {
        bFixForResizedTabLater = false;
        for (const element of document.querySelectorAll("[io-intersected]")) {
          const cnt = insp(element);
          if (element instanceof HTMLElement_ && typeof cnt.calculateCanCollapse === "function") {
            try {
              cnt.calculateCanCollapse(true);
            } catch (e) {
            }
          }
        }
        if (!isResize) {
          for (const element of document.querySelectorAll(
            "ytd-video-description-infocards-section-renderer, yt-chip-cloud-renderer, ytd-horizontal-card-list-renderer"
          )) {
            const cnt = insp(element);
            if (element instanceof HTMLElement_ && typeof cnt.notifyResize === "function") {
              try {
                cnt.notifyResize();
              } catch (e) {
              }
            }
          }
        }
      },
      "ytd-watch-flexy::defined": (cProto) => {
        if (!cProto.updateChatLocation498 && typeof cProto.updateChatLocation === "function" && cProto.updateChatLocation.length === 0) {
          cProto.updateChatLocation498 = cProto.updateChatLocation;
          cProto.updateChatLocation = updateChatLocation498;
        }
      },
      "ytd-watch-next-secondary-results-renderer::defined": (cProto) => {
        if (!cProto.attached498 && typeof cProto.attached === "function") {
          cProto.attached498 = cProto.attached;
          cProto.attached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(
                eventMap["ytd-watch-next-secondary-results-renderer::attached"]
              ).catch(console.warn);
            return this.attached498();
          };
        }
        if (!cProto.detached498 && typeof cProto.detached === "function") {
          cProto.detached498 = cProto.detached;
          cProto.detached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(
                eventMap["ytd-watch-next-secondary-results-renderer::detached"]
              ).catch(console.warn);
            return this.detached498();
          };
        }
        makeInitAttached("ytd-watch-next-secondary-results-renderer");
      },
      "ytd-watch-next-secondary-results-renderer::attached": (hostElement) => {
        if (hostElement instanceof HTMLElement) {
          const hasFlexyParent = HTMLElement.prototype.closest.call(
            hostElement,
            "ytd-watch-flexy"
          );
          if (!hasFlexyParent)
            return;
          const currentFlexy = elements.flexy;
          if (currentFlexy && currentFlexy !== hasFlexyParent)
            return;
        }
        if (hostElement instanceof Element)
          hostElement[__attachedSymbol__] = true;
        if (!(hostElement instanceof HTMLElement_) || !(hostElement.classList.length > 0) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== true)
          return;
        if (hostElement instanceof HTMLElement_ && hostElement.matches(
          "#columns #related ytd-watch-next-secondary-results-renderer"
        ) && !hostElement.matches(
          "#right-tabs ytd-watch-next-secondary-results-renderer, [hidden] ytd-watch-next-secondary-results-renderer"
        )) {
          elements.related = hostElement.closest("#related");
          hostElement.setAttribute111("tyt-videos-list", "");
        }
      },
      "ytd-watch-next-secondary-results-renderer::detached": (hostElement) => {
        if (!(hostElement instanceof HTMLElement_) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== false)
          return;
        if (hostElement.hasAttribute000("tyt-videos-list")) {
          elements.related = null;
          hostElement.removeAttribute000("tyt-videos-list");
        }
      },
      settingCommentsVideoId: (hostElement) => {
        if (!(hostElement instanceof HTMLElement_) || !(hostElement.classList.length > 0) || hostElement.closest("noscript"))
          return;
        const cnt = insp(hostElement);
        const commentsArea = elements.comments;
        if (commentsArea !== hostElement || hostElement.isConnected !== true || cnt.isAttached !== true || !cnt.data || cnt.hidden !== false)
          return;
        const ytdFlexyElm = elements.flexy;
        const ytdFlexyCnt = ytdFlexyElm ? insp(ytdFlexyElm) : null;
        if (ytdFlexyCnt && ytdFlexyCnt.videoId) {
          hostElement.setAttribute111(
            "tyt-comments-video-id",
            ytdFlexyCnt.videoId
          );
        } else {
          hostElement.removeAttribute000("tyt-comments-video-id");
        }
      },
      checkCommentsShouldBeHidden: (lockId) => {
        if (lockGet["checkCommentsShouldBeHiddenLock"] !== lockId)
          return;
        const commentsArea = elements.comments;
        const ytdFlexyElm = elements.flexy;
        if (commentsArea && ytdFlexyElm && !commentsArea.hasAttribute000("hidden")) {
          const ytdFlexyCnt = insp(ytdFlexyElm);
          if (typeof ytdFlexyCnt.videoId === "string") {
            const commentsVideoId = commentsArea.getAttribute(
              "tyt-comments-video-id"
            );
            if (commentsVideoId && commentsVideoId !== ytdFlexyCnt.videoId) {
              commentsArea.setAttribute111("hidden", "");
            }
          }
        }
      },
      "ytd-comments::defined": (cProto) => {
        if (!cProto.attached498 && typeof cProto.attached === "function") {
          cProto.attached498 = cProto.attached;
          cProto.attached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-comments::attached"]).catch(console.warn);
            return this.attached498();
          };
        }
        if (!cProto.detached498 && typeof cProto.detached === "function") {
          cProto.detached498 = cProto.detached;
          cProto.detached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-comments::detached"]).catch(console.warn);
            return this.detached498();
          };
        }
        cProto._createPropertyObserver("data", "_dataChanged498", void 0);
        cProto._dataChanged498 = function() {
          Promise.resolve(this.hostElement).then(eventMap["ytd-comments::_dataChanged498"]).catch(console.warn);
        };
        makeInitAttached("ytd-comments");
      },
      "ytd-comments::_dataChanged498": (hostElement) => {
        if (!hostElement.hasAttribute000("tyt-comments-area"))
          return;
        let commentsDataStatus = 0;
        const cnt = insp(hostElement);
        const data = cnt ? cnt.data : null;
        const contents = data ? data.contents : null;
        if (data) {
          if (contents && contents.length === 1 && contents[0].messageRenderer) {
            commentsDataStatus = 2;
          }
          if (contents && contents.length > 1 && contents[0].commentThreadRenderer) {
            commentsDataStatus = 1;
          }
        }
        if (commentsDataStatus) {
          hostElement.setAttribute111(
            "tyt-comments-data-status",
            commentsDataStatus
          );
        } else {
          hostElement.removeAttribute000("tyt-comments-data-status");
        }
        Promise.resolve(hostElement).then(eventMap["settingCommentsVideoId"]).catch(console.warn);
      },
      "ytd-comments::attached": async (hostElement) => {
        if (hostElement instanceof HTMLElement) {
          const hasFlexyParent = HTMLElement.prototype.closest.call(
            hostElement,
            "ytd-watch-flexy"
          );
          if (!hasFlexyParent)
            return;
          const currentFlexy = elements.flexy;
          if (currentFlexy && currentFlexy !== hasFlexyParent)
            return;
        }
        if (hostElement instanceof Element)
          hostElement[__attachedSymbol__] = true;
        if (!(hostElement instanceof HTMLElement_) || !(hostElement.classList.length > 0) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== true)
          return;
        if (!hostElement || hostElement.id !== "comments")
          return;
        elements.comments = hostElement;
        Promise.resolve(hostElement).then(eventMap["settingCommentsVideoId"]).catch(console.warn);
        aoComment.observe(hostElement, { attributes: true });
        hostElement.setAttribute111("tyt-comments-area", "");
        const lockId = lockSet["rightTabReadyLock02"];
        await rightTabsProvidedPromise.then();
        if (lockGet["rightTabReadyLock02"] !== lockId)
          return;
        if (elements.comments !== hostElement)
          return;
        if (hostElement.isConnected === false)
          return;
        if (hostElement && !hostElement.closest("#right-tabs")) {
          document.querySelector("#tab-comments").assignChildern111(null, hostElement, null);
        } else {
          const shouldTabVisible = elements.comments && elements.comments.closest("#tab-comments") && !elements.comments.closest("[hidden]");
          document.querySelector('[tyt-tab-content="#tab-comments"]').classList.toggle("tab-btn-hidden", !shouldTabVisible);
          Promise.resolve(lockSet["removeKeepCommentsScrollerLock"]).then(removeKeepCommentsScroller).catch(console.warn);
        }
      },
      "ytd-comments::detached": (hostElement) => {
        if (!(hostElement instanceof HTMLElement_) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== false)
          return;
        if (hostElement.hasAttribute000("tyt-comments-area")) {
          hostElement.removeAttribute000("tyt-comments-area");
          aoComment.disconnect();
          aoComment.takeRecords();
          elements.comments = null;
          document.querySelector('[tyt-tab-content="#tab-comments"]').classList.add("tab-btn-hidden");
          Promise.resolve(lockSet["removeKeepCommentsScrollerLock"]).then(removeKeepCommentsScroller).catch(console.warn);
        }
      },
      "ytd-comments-header-renderer::defined": (cProto) => {
        if (!cProto.attached498 && typeof cProto.attached === "function") {
          cProto.attached498 = cProto.attached;
          cProto.attached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-comments-header-renderer::attached"]).catch(console.warn);
            Promise.resolve(this.hostElement).then(eventMap["ytd-comments-header-renderer::dataChanged"]).catch(console.warn);
            return this.attached498();
          };
        }
        if (!cProto.detached498 && typeof cProto.detached === "function") {
          cProto.detached498 = cProto.detached;
          cProto.detached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-comments-header-renderer::detached"]).catch(console.warn);
            return this.detached498();
          };
        }
        if (!cProto.dataChanged498 && typeof cProto.dataChanged === "function") {
          cProto.dataChanged498 = cProto.dataChanged;
          cProto.dataChanged = function() {
            Promise.resolve(this.hostElement).then(eventMap["ytd-comments-header-renderer::dataChanged"]).catch(console.warn);
            return this.dataChanged498();
          };
        }
        makeInitAttached("ytd-comments-header-renderer");
      },
      "ytd-comments-header-renderer::attached": (hostElement) => {
        if (hostElement instanceof HTMLElement) {
          const hasFlexyParent = HTMLElement.prototype.closest.call(
            hostElement,
            "ytd-watch-flexy"
          );
          if (!hasFlexyParent)
            return;
          const currentFlexy = elements.flexy;
          if (currentFlexy && currentFlexy !== hasFlexyParent)
            return;
        }
        if (hostElement instanceof Element)
          hostElement[__attachedSymbol__] = true;
        if (!(hostElement instanceof HTMLElement_) || !(hostElement.classList.length > 0) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== true)
          return;
        if (!hostElement || !hostElement.classList.contains("ytd-item-section-renderer"))
          return;
        const targetElement = document.querySelector(
          "[tyt-comments-area] ytd-comments-header-renderer"
        );
        if (hostElement === targetElement) {
          hostElement.setAttribute111("tyt-comments-header-field", "");
        } else {
          const parentNode = hostElement.parentNode;
          if (parentNode instanceof HTMLElement_ && parentNode.querySelector("[tyt-comments-header-field]")) {
            hostElement.setAttribute111("tyt-comments-header-field", "");
          }
        }
      },
      "ytd-comments-header-renderer::detached": (hostElement) => {
        if (!(hostElement instanceof HTMLElement_) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== false)
          return;
        if (hostElement.hasAttribute000("field-of-cm-count")) {
          const cmCount = document.querySelector("#tyt-cm-count");
          if (cmCount) {
            cmCount.textContent = "";
            hostElement.removeAttribute000("field-of-cm-count");
          }
        }
        if (hostElement.hasAttribute000("tyt-comments-header-field")) {
          hostElement.removeAttribute000("tyt-comments-header-field");
        }
      },
      "ytd-comments-header-renderer::dataChanged": (hostElement) => {
        if (!(hostElement instanceof HTMLElement_) || !(hostElement.classList.length > 0) || hostElement.closest("noscript"))
          return;
        const ytdFlexyElm = elements.flexy;
        let b = false;
        const cnt = insp(hostElement);
        if (cnt && hostElement.closest("#tab-comments") && document.querySelector(
          "#tab-comments ytd-comments-header-renderer"
        ) === hostElement) {
          b = true;
        } else if (hostElement instanceof HTMLElement_ && hostElement.parentNode instanceof HTMLElement_ && hostElement.parentNode.querySelector("[tyt-comments-header-field]")) {
          b = true;
        }
        if (b) {
          hostElement.setAttribute111("tyt-comments-header-field", "");
          ytdFlexyElm && ytdFlexyElm.removeAttribute000("tyt-comment-disabled");
        }
        if (hostElement.hasAttribute000("tyt-comments-header-field") && hostElement.isConnected === true) {
          const data = cnt.data;
          let ez = "";
          if (data.commentsCount && data.commentsCount.runs && data.commentsCount.runs.length >= 1) {
            let max = -1;
            const z = data.commentsCount.runs.map((e) => {
              let c = e.text.replace(/\D+/g, "").length;
              if (c > max)
                max = c;
              return [e.text, c];
            }).filter((a) => a[1] === max);
            if (z.length >= 1) {
              ez = z[0][0];
            }
          } else if (data.countText && data.countText.runs && data.countText.runs.length >= 1) {
            let max = -1;
            const z = data.countText.runs.map((e) => {
              let c = e.text.replace(/\D+/g, "").length;
              if (c > max)
                max = c;
              return [e.text, c];
            }).filter((a) => a[1] === max);
            if (z.length >= 1) {
              ez = z[0][0];
            }
          }
          const cmCount = document.querySelector("#tyt-cm-count");
          if (ez) {
            hostElement.setAttribute111("field-of-cm-count", "");
            cmCount && (cmCount.textContent = ez.trim());
          } else {
            hostElement.removeAttribute000("field-of-cm-count");
            cmCount && (cmCount.textContent = "");
          }
        }
      },
      "ytd-expander::defined": (cProto) => {
        if (!cProto.attached498 && typeof cProto.attached === "function") {
          cProto.attached498 = cProto.attached;
          cProto.attached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-expander::attached"]).catch(console.warn);
            return this.attached498();
          };
        }
        if (!cProto.detached498 && typeof cProto.detached === "function") {
          cProto.detached498 = cProto.detached;
          cProto.detached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-expander::detached"]).catch(console.warn);
            return this.detached498();
          };
        }
        if (!cProto.calculateCanCollapse498 && typeof cProto.calculateCanCollapse === "function") {
          cProto.calculateCanCollapse498 = cProto.calculateCanCollapse;
          cProto.calculateCanCollapse = funcCanCollapse;
        }
        if (!cProto.childrenChanged498 && typeof cProto.childrenChanged === "function") {
          cProto.childrenChanged498 = cProto.childrenChanged;
          cProto.childrenChanged = function() {
            Promise.resolve(this.hostElement).then(eventMap["ytd-expander::childrenChanged"]).catch(console.warn);
            return this.childrenChanged498();
          };
        }
        makeInitAttached("ytd-expander");
      },
      "ytd-expander::childrenChanged": (hostElement) => {
        if (hostElement instanceof Node && hostElement.hasAttribute000("hidden") && hostElement.hasAttribute000("tyt-main-info") && hostElement.firstElementChild) {
          hostElement.removeAttribute("hidden");
        }
      },
      "ytd-expander::attached": async (hostElement) => {
        if (hostElement instanceof HTMLElement) {
          const hasFlexyParent = HTMLElement.prototype.closest.call(
            hostElement,
            "ytd-watch-flexy"
          );
          if (!hasFlexyParent)
            return;
          const currentFlexy = elements.flexy;
          if (currentFlexy && currentFlexy !== hasFlexyParent)
            return;
        }
        if (hostElement instanceof Element)
          hostElement[__attachedSymbol__] = true;
        if (!(hostElement instanceof HTMLElement_) || !(hostElement.classList.length > 0) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== true)
          return;
        if (hostElement instanceof HTMLElement_ && hostElement.matches(
          "[tyt-comments-area] #contents ytd-expander#expander"
        ) && !hostElement.matches("[hidden] ytd-expander#expander")) {
          hostElement.setAttribute111("tyt-content-comment-entry", "");
          ioComment.observe(hostElement);
        } else if (hostElement instanceof HTMLElement_ && hostElement.matches(
          "ytd-expander#expander.style-scope.ytd-expandable-video-description-body-renderer"
        )) {
          elements.infoExpander = hostElement;
          infoExpanderElementProvidedPromise.resolve();
          hostElement.setAttribute111("tyt-main-info", "");
          if (plugin.autoExpandInfoDesc.toUse) {
            plugin.autoExpandInfoDesc.onMainInfoSet(hostElement);
          }
          const lockId = lockSet["rightTabReadyLock03"];
          await rightTabsProvidedPromise.then();
          if (lockGet["rightTabReadyLock03"] !== lockId)
            return;
          if (elements.infoExpander !== hostElement)
            return;
          if (hostElement.isConnected === false)
            return;
          const infoExpander = elements.infoExpander;
          aoInfo.observe(infoExpander, {
            attributes: true,
            attributeFilter: ["tyt-display-for", "tyt-video-id"]
          });
          zoInfo.observe(infoExpander, {
            attributes: true,
            attributeFilter: ["hidden", "attr-w20ts"],
            childList: true,
            subtree: true
          });
          if (infoExpander && !infoExpander.closest("#right-tabs")) {
            document.querySelector("#tab-info").assignChildern111(null, infoExpander, null);
          } else {
            if (document.querySelector('[tyt-tab-content="#tab-info"]')) {
              const shouldTabVisible = elements.infoExpander && elements.infoExpander.closest("#tab-info");
              document.querySelector('[tyt-tab-content="#tab-info"]').classList.toggle("tab-btn-hidden", !shouldTabVisible);
            }
          }
          infoExpander.incAttribute111("attr-w20ts");
        }
      },
      "ytd-expander::detached": (hostElement) => {
        if (!(hostElement instanceof HTMLElement_) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== false)
          return;
        if (hostElement.hasAttribute000("tyt-content-comment-entry")) {
          ioComment.unobserve(hostElement);
          hostElement.removeAttribute000("tyt-content-comment-entry");
        } else if (hostElement.hasAttribute000("tyt-main-info")) {
          elements.infoExpander = null;
          hostElement.removeAttribute000("tyt-main-info");
        }
      },
      "ytd-live-chat-frame::defined": (cProto) => {
        let lastDomAction = 0;
        if (!cProto.attached498 && typeof cProto.attached === "function") {
          cProto.attached498 = cProto.attached;
          cProto.attached = function() {
            lastDomAction = Date.now();
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-live-chat-frame::attached"]).catch(console.warn);
            return this.attached498();
          };
        }
        if (!cProto.detached498 && typeof cProto.detached === "function") {
          cProto.detached498 = cProto.detached;
          cProto.detached = function() {
            lastDomAction = Date.now();
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-live-chat-frame::detached"]).catch(console.warn);
            return this.detached498();
          };
        }
        if (typeof cProto.urlChanged === "function" && !cProto.urlChanged66 && !cProto.urlChangedAsync12 && cProto.urlChanged.length === 0) {
          cProto.urlChanged66 = cProto.urlChanged;
          let ath = 0;
          cProto.urlChangedAsync12 = async function() {
            if (ath > 1e9)
              ath = 9;
            const t = ++ath;
            const chatframe = this.chatframe || (this.$ || 0).chatframe || 0;
            if (chatframe) {
              if (chatframe.contentDocument === null)
                await Promise.resolve("#").catch(console.warn);
              if (t !== ath)
                return;
              await new Promise(
                (r) => window.setTimeout.call(window, r, "1")
              ).catch(console.warn);
              if (t !== ath)
                return;
              await new Promise((resolve) => {
                new IntersectionObserver((_, observer) => {
                  observer.disconnect();
                  resolve("#");
                }).observe(chatframe);
              });
              if (t !== ath)
                return;
            }
            this.urlChanged66();
          };
          cProto.urlChanged = function() {
            this.urlChangedAsync12();
          };
        }
        makeInitAttached("ytd-live-chat-frame");
      },
      "ytd-live-chat-frame::attached": async (hostElement) => {
        if (hostElement instanceof HTMLElement) {
          const hasFlexyParent = HTMLElement.prototype.closest.call(
            hostElement,
            "ytd-watch-flexy"
          );
          if (!hasFlexyParent)
            return;
          const currentFlexy = elements.flexy;
          if (currentFlexy && currentFlexy !== hasFlexyParent)
            return;
        }
        if (hostElement instanceof Element)
          hostElement[__attachedSymbol__] = true;
        if (!(hostElement instanceof HTMLElement_) || !(hostElement.classList.length > 0) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== true)
          return;
        if (!hostElement || hostElement.id !== "chat")
          return;
        const lockId = lockSet["ytdLiveAttachedLock"];
        const chatElem = await getGeneralChatElement();
        if (lockGet["ytdLiveAttachedLock"] !== lockId)
          return;
        if (chatElem === hostElement) {
          elements.chat = chatElem;
          aoChat.observe(chatElem, { attributes: true });
          const isFlexyReady = elements.flexy instanceof Element;
          chatElem.setAttribute111(
            "tyt-active-chat-frame",
            isFlexyReady ? "CF" : "C"
          );
          const chatContainer = chatElem ? chatElem.closest("#chat-container") || chatElem : null;
          if (chatContainer && !chatContainer.hasAttribute000("tyt-chat-container")) {
            for (const p of document.querySelectorAll("[tyt-chat-container]")) {
              p.removeAttribute000("[tyt-chat-container]");
            }
            chatContainer.setAttribute111("tyt-chat-container", "");
          }
          Promise.resolve(lockSet["layoutFixLock"]).then(layoutFix);
        } else {
        }
      },
      "ytd-live-chat-frame::detached": (hostElement) => {
        if (!(hostElement instanceof HTMLElement_) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== false)
          return;
        if (hostElement.hasAttribute000("tyt-active-chat-frame")) {
          aoChat.disconnect();
          aoChat.takeRecords();
          hostElement.removeAttribute000("tyt-active-chat-frame");
          elements.chat = null;
          const ytdFlexyElm = elements.flexy;
          if (ytdFlexyElm) {
            ytdFlexyElm.removeAttribute000("tyt-chat-collapsed");
            ytdFlexyElm.setAttribute111("tyt-chat", "");
          }
        }
      },
      "ytd-engagement-panel-section-list-renderer::defined": (cProto) => {
        if (!cProto.attached498 && typeof cProto.attached === "function") {
          cProto.attached498 = cProto.attached;
          cProto.attached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(
                eventMap["ytd-engagement-panel-section-list-renderer::attached"]
              ).catch(console.warn);
            return this.attached498();
          };
        }
        if (!cProto.detached498 && typeof cProto.detached === "function") {
          cProto.detached498 = cProto.detached;
          cProto.detached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(
                eventMap["ytd-engagement-panel-section-list-renderer::detached"]
              ).catch(console.warn);
            return this.detached498();
          };
        }
        makeInitAttached("ytd-engagement-panel-section-list-renderer");
      },
      "ytd-engagement-panel-section-list-renderer::bindTarget": (hostElement) => {
        if (hostElement.matches(
          "#panels.ytd-watch-flexy > ytd-engagement-panel-section-list-renderer[target-id][visibility]"
        )) {
          hostElement.setAttribute111("tyt-egm-panel", "");
          Promise.resolve(lockSet["updateEgmPanelsLock"]).then(updateEgmPanels).catch(console.warn);
          aoEgmPanels.observe(hostElement, {
            attributes: true,
            attributeFilter: ["visibility", "hidden"]
          });
        }
      },
      "ytd-engagement-panel-section-list-renderer::attached": (hostElement) => {
        if (hostElement instanceof HTMLElement) {
          const hasFlexyParent = HTMLElement.prototype.closest.call(
            hostElement,
            "ytd-watch-flexy"
          );
          if (!hasFlexyParent)
            return;
          const currentFlexy = elements.flexy;
          if (currentFlexy && currentFlexy !== hasFlexyParent)
            return;
        }
        if (hostElement instanceof Element)
          hostElement[__attachedSymbol__] = true;
        if (!(hostElement instanceof HTMLElement_) || !(hostElement.classList.length > 0) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== true)
          return;
        if (!hostElement.matches(
          "#panels.ytd-watch-flexy > ytd-engagement-panel-section-list-renderer"
        ))
          return;
        if (hostElement.hasAttribute000("target-id") && hostElement.hasAttribute000("visibility")) {
          Promise.resolve(hostElement).then(
            eventMap["ytd-engagement-panel-section-list-renderer::bindTarget"]
          ).catch(console.warn);
        } else {
          hostElement.setAttribute000("tyt-egm-panel-jclmd", "");
          moEgmPanelReady.observe(hostElement, {
            attributes: true,
            attributeFilter: ["visibility", "target-id"]
          });
        }
      },
      "ytd-engagement-panel-section-list-renderer::detached": (hostElement) => {
        if (!(hostElement instanceof HTMLElement_) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== false)
          return;
        if (hostElement.hasAttribute000("tyt-egm-panel")) {
          hostElement.removeAttribute000("tyt-egm-panel");
          Promise.resolve(lockSet["updateEgmPanelsLock"]).then(updateEgmPanels).catch(console.warn);
        } else if (hostElement.hasAttribute000("tyt-egm-panel-jclmd")) {
          hostElement.removeAttribute000("tyt-egm-panel-jclmd");
          moEgmPanelReadyClearFn();
        }
      },
      "ytd-watch-metadata::defined": (cProto) => {
        if (!cProto.attached498 && typeof cProto.attached === "function") {
          cProto.attached498 = cProto.attached;
          cProto.attached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-watch-metadata::attached"]).catch(console.warn);
            return this.attached498();
          };
        }
        if (!cProto.detached498 && typeof cProto.detached === "function") {
          cProto.detached498 = cProto.detached;
          cProto.detached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-watch-metadata::detached"]).catch(console.warn);
            return this.detached498();
          };
        }
        makeInitAttached("ytd-watch-metadata");
      },
      "ytd-watch-metadata::attached": (hostElement) => {
        if (hostElement instanceof HTMLElement) {
          const hasFlexyParent = HTMLElement.prototype.closest.call(
            hostElement,
            "ytd-watch-flexy"
          );
          if (!hasFlexyParent)
            return;
          const currentFlexy = elements.flexy;
          if (currentFlexy && currentFlexy !== hasFlexyParent)
            return;
        }
        if (hostElement instanceof Element)
          hostElement[__attachedSymbol__] = true;
        if (!(hostElement instanceof HTMLElement_) || !(hostElement.classList.length > 0) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== true)
          return;
        if (plugin.fullChannelNameOnHover.activated)
          plugin.fullChannelNameOnHover.onNavigateFinish();
      },
      "ytd-watch-metadata::detached": (hostElement) => {
        if (!(hostElement instanceof HTMLElement_) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== false)
          return;
      },
      "ytd-playlist-panel-renderer::defined": (cProto) => {
        if (!cProto.attached498 && typeof cProto.attached === "function") {
          cProto.attached498 = cProto.attached;
          cProto.attached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-playlist-panel-renderer::attached"]).catch(console.warn);
            return this.attached498();
          };
        }
        if (!cProto.detached498 && typeof cProto.detached === "function") {
          cProto.detached498 = cProto.detached;
          cProto.detached = function() {
            if (!inPageRearrange)
              Promise.resolve(this.hostElement).then(eventMap["ytd-playlist-panel-renderer::detached"]).catch(console.warn);
            return this.detached498();
          };
        }
        makeInitAttached("ytd-playlist-panel-renderer");
      },
      "ytd-playlist-panel-renderer::attached": (hostElement) => {
        if (hostElement instanceof HTMLElement) {
          const hasFlexyParent = HTMLElement.prototype.closest.call(
            hostElement,
            "ytd-watch-flexy"
          );
          if (!hasFlexyParent)
            return;
          const currentFlexy = elements.flexy;
          if (currentFlexy && currentFlexy !== hasFlexyParent)
            return;
        }
        if (hostElement instanceof Element)
          hostElement[__attachedSymbol__] = true;
        if (!(hostElement instanceof HTMLElement_) || !(hostElement.classList.length > 0) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== true)
          return;
        elements.playlist = hostElement;
        aoPlayList.observe(hostElement, {
          attributes: true,
          attributeFilter: ["hidden", "collapsed", "attr-1y6nu"]
        });
        hostElement.incAttribute111("attr-1y6nu");
      },
      "ytd-playlist-panel-renderer::detached": (hostElement) => {
        if (!(hostElement instanceof HTMLElement_) || hostElement.closest("noscript"))
          return;
        if (hostElement.isConnected !== false)
          return;
      },
      _yt_playerProvided: () => {
        mLoaded.flag |= 4;
        document.documentElement.setAttribute111(
          "tabview-loaded",
          mLoaded.makeString()
        );
      },
      relatedElementProvided: (target) => {
        if (target.closest("[hidden]"))
          return;
        elements.related = target;
        videosElementProvidedPromise.resolve();
      },
      onceInfoExpanderElementProvidedPromised: () => {
        const ytdFlexyElm = elements.flexy;
        if (ytdFlexyElm) {
          ytdFlexyElm.setAttribute111("hide-default-text-inline-expander", "");
        }
      },
      refreshSecondaryInner: (lockId) => {
        if (lockGet["refreshSecondaryInnerLock"] !== lockId)
          return;
        const ytdFlexyElm = elements.flexy;
        if (ytdFlexyElm && ytdFlexyElm.matches(
          "ytd-watch-flexy[theater][flexy][full-bleed-player]:not([full-bleed-no-max-width-columns])"
        )) {
          ytdFlexyElm.setAttribute111("full-bleed-no-max-width-columns", "");
        }
        const related = elements.related;
        if (related && related.isConnected && !related.closest("#right-tabs #tab-videos")) {
          document.querySelector("#tab-videos").assignChildern111(null, related, null);
        }
        const infoExpander = elements.infoExpander;
        if (infoExpander && infoExpander.isConnected && !infoExpander.closest("#right-tabs #tab-info")) {
          document.querySelector("#tab-info").assignChildern111(null, infoExpander, null);
        } else {
        }
        const commentsArea = elements.comments;
        if (commentsArea) {
          const isConnected = commentsArea.isConnected;
          if (isConnected && !commentsArea.closest("#right-tabs #tab-comments")) {
            const tab = document.querySelector("#tab-comments");
            tab.assignChildern111(null, commentsArea, null);
          } else {
          }
        }
      },
      "yt-navigate-finish": (evt) => {
        const ytdAppElm = document.querySelector(
          "ytd-page-manager#page-manager.style-scope.ytd-app"
        );
        const ytdAppCnt = insp(ytdAppElm);
        pageType = ytdAppCnt ? (ytdAppCnt.data || 0).page : null;
        if (!document.querySelector("ytd-watch-flexy #player"))
          return;
        const flexyArr = [
          ...document.querySelectorAll("ytd-watch-flexy")
        ].filter((e) => !e.closest("[hidden]") && e.querySelector("#player"));
        if (flexyArr.length === 1) {
          elements.flexy = flexyArr[0];
          if (isRightTabsInserted) {
            Promise.resolve(lockSet["refreshSecondaryInnerLock"]).then(eventMap["refreshSecondaryInner"]).catch(console.warn);
            Promise.resolve(lockSet["removeKeepCommentsScrollerLock"]).then(removeKeepCommentsScroller).catch(console.warn);
          } else {
            navigateFinishedPromise.resolve();
            if (plugin.minibrowser.toUse)
              plugin.minibrowser.activate();
            if (plugin.autoExpandInfoDesc.toUse)
              plugin.autoExpandInfoDesc.activate();
            if (plugin.fullChannelNameOnHover.toUse)
              plugin.fullChannelNameOnHover.activate();
          }
          const chat = elements.chat;
          if (chat instanceof Element) {
            chat.setAttribute111("tyt-active-chat-frame", "CF");
          }
          const infoExpander = elements.infoExpander;
          if (infoExpander && infoExpander.closest("#right-tabs"))
            Promise.resolve(lockSet["infoFixLock"]).then(infoFix).catch(console.warn);
          Promise.resolve(lockSet["layoutFixLock"]).then(layoutFix);
          if (plugin.fullChannelNameOnHover.activated)
            plugin.fullChannelNameOnHover.onNavigateFinish();
        }
      },
      onceInsertRightTabs: () => {
        const related = elements.related;
        let rightTabs = document.querySelector("#right-tabs");
        if (!document.querySelector("#right-tabs") && related) {
          getLangForPage();
          let docTmp = document.createElement("template");
          docTmp.innerHTML = createHTML(getTabsHTML());
          let newElm = docTmp.content.firstElementChild;
          if (newElm !== null) {
            inPageRearrange = true;
            related.parentNode.insertBefore000(newElm, related);
            inPageRearrange = false;
          }
          rightTabs = newElm;
          rightTabs.querySelector('[tyt-tab-content="#tab-comments"]').classList.add("tab-btn-hidden");
          const secondaryWrapper = document.createElement("secondary-wrapper");
          const secondaryInner = document.querySelector(
            "#secondary-inner.style-scope.ytd-watch-flexy"
          );
          inPageRearrange = true;
          secondaryWrapper.replaceChildren000(...secondaryInner.childNodes);
          secondaryInner.insertBefore000(
            secondaryWrapper,
            secondaryInner.firstChild
          );
          inPageRearrange = false;
          rightTabs.querySelector("#material-tabs").addEventListener("click", eventMap["tabs-btn-click"], true);
          inPageRearrange = true;
          if (!rightTabs.closest("secondary-wrapper"))
            secondaryWrapper.appendChild000(rightTabs);
          inPageRearrange = false;
        }
        if (rightTabs) {
          isRightTabsInserted = true;
          const ioTabBtns = new IntersectionObserver(
            (entries) => {
              for (const entry of entries) {
                const rect = entry.boundingClientRect;
                entry.target.classList.toggle(
                  "tab-btn-visible",
                  rect.width && rect.height
                );
              }
            },
            { rootMargin: "0px" }
          );
          for (const btn of document.querySelectorAll(
            ".tab-btn[tyt-tab-content]"
          )) {
            ioTabBtns.observe(btn);
          }
          if (!related.closest("#right-tabs")) {
            document.querySelector("#tab-videos").assignChildern111(null, related, null);
          }
          const infoExpander = elements.infoExpander;
          if (infoExpander && !infoExpander.closest("#right-tabs")) {
            document.querySelector("#tab-info").assignChildern111(null, infoExpander, null);
          }
          const commentsArea = elements.comments;
          if (commentsArea && !commentsArea.closest("#right-tabs")) {
            document.querySelector("#tab-comments").assignChildern111(null, commentsArea, null);
          }
          rightTabsProvidedPromise.resolve();
          roRightTabs.disconnect();
          roRightTabs.observe(rightTabs);
          const ytdFlexyElm = elements.flexy;
          const aoFlexy = new MutationObserver(eventMap["aoFlexyFn"]);
          aoFlexy.observe(ytdFlexyElm, { attributes: true });
          Promise.resolve(lockSet["fixInitialTabStateLock"]).then(eventMap["fixInitialTabStateFn"]).catch(console.warn);
          ytdFlexyElm.incAttribute111("attr-7qlsy");
        }
      },
      aoFlexyFn: () => {
        Promise.resolve(lockSet["checkCommentsShouldBeHiddenLock"]).then(eventMap["checkCommentsShouldBeHidden"]).catch(console.warn);
        Promise.resolve(lockSet["refreshSecondaryInnerLock"]).then(eventMap["refreshSecondaryInner"]).catch(console.warn);
        Promise.resolve(lockSet["tabsStatusCorrectionLock"]).then(eventMap["tabsStatusCorrection"]).catch(console.warn);
        const videoId = getCurrentVideoId();
        if (videoId !== tmpLastVideoId) {
          tmpLastVideoId = videoId;
          Promise.resolve(lockSet["updateOnVideoIdChangedLock"]).then(eventMap["updateOnVideoIdChanged"]).catch(console.warn);
        }
      },
      twoColumnChanged10: (lockId) => {
        if (lockId !== lockGet["twoColumnChanged10Lock"])
          return;
        for (const continuation of document.querySelectorAll(
          "#tab-videos ytd-watch-next-secondary-results-renderer ytd-continuation-item-renderer"
        )) {
          if (continuation.closest("[hidden]"))
            continue;
          const cnt = insp(continuation);
          if (typeof cnt.showButton === "boolean") {
            if (cnt.showButton === false)
              continue;
            cnt.showButton = false;
            const behavior = cnt.ytRendererBehavior || cnt;
            if (typeof behavior.invalidate === "function") {
              behavior.invalidate(false);
            }
          }
        }
      },
      tabsStatusCorrection: (lockId) => {
        if (lockId !== lockGet["tabsStatusCorrectionLock"])
          return;
        const ytdFlexyElm = elements.flexy;
        if (!ytdFlexyElm)
          return;
        const p = tabAStatus;
        const q = calculationFn(p, 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128);
        let resetForPanelDisappeared = false;
        if (p !== q) {
          let actioned = false;
          if ((p & 128) === 0 && (q & 128) === 128) {
            lastPanel = "playlist";
          } else if ((p & 8) === 0 && (q & 8) === 8) {
            lastPanel = "chat";
          } else if (((p & 4) == 4 && (q & (4 | 8)) == (0 | 0) || (p & 8) == 8 && (q & (4 | 8)) === (0 | 0)) && lastPanel === "chat") {
            lastPanel = lastTab || "";
            resetForPanelDisappeared = true;
          } else if ((p & (4 | 8)) === 8 && (q & (4 | 8)) === 4 && lastPanel === "chat") {
            lastPanel = lastTab || "";
            resetForPanelDisappeared = true;
          } else if ((p & 128) === 128 && (q & 128) === 0 && lastPanel === "playlist") {
            lastPanel = lastTab || "";
            resetForPanelDisappeared = true;
          }
          tabAStatus = q;
          let bFixForResizedTab = false;
          if ((q ^ 2) === 2 && bFixForResizedTabLater) {
            bFixForResizedTab = true;
          }
          if ((p & 16) === 16 & (q & 16) === 0) {
            Promise.resolve(lockSet["twoColumnChanged10Lock"]).then(eventMap["twoColumnChanged10"]).catch(console.warn);
          }
          if ((p & 2) === 2 ^ (q & 2) === 2 && (q & 2) === 2) {
            bFixForResizedTab = true;
          }
          if ((p & 2) === 0 && (q & 2) === 2 && (p & 128) === 128 && (q & 128) === 128) {
            lastPanel = lastTab || "";
            ytBtnClosePlaylist();
            actioned = true;
          }
          if ((p & (8 | 128)) === (0 | 128) && (q & (8 | 128)) === (8 | 128) && lastPanel === "chat") {
            lastPanel = lastTab || "";
            ytBtnClosePlaylist();
            actioned = true;
          }
          if ((p & (2 | 128)) === (2 | 0) && (q & (2 | 128)) === (2 | 128) && lastPanel === "playlist") {
            switchToTab(null);
            actioned = true;
          }
          if ((p & (8 | 128)) === (8 | 0) && (q & (8 | 128)) === (8 | 128) && lastPanel === "playlist") {
            lastPanel = lastTab || "";
            ytBtnCollapseChat();
            actioned = true;
          }
          if ((p & (1 | 16 | 128)) == (1 | 16) && (q & (1 | 16 | 128)) == (1 | 16 | 128)) {
            ytBtnCancelTheater();
            actioned = true;
          }
          if ((p & (1 | 16 | 128)) == (16 | 128) && (q & (1 | 16 | 128)) == (1 | 16 | 128)) {
            lastPanel = lastTab || "";
            ytBtnClosePlaylist();
            actioned = true;
          }
          if ((q & 64) === 64) {
            actioned = false;
          } else if ((p & 64) == 64 && (q & 64) === 0) {
            if ((q & 32) === 32) {
              ytBtnCloseEngagementPanels();
            }
            if ((q & (2 | 8)) === (2 | 8)) {
              if (lastPanel === "chat") {
                switchToTab(null);
                actioned = true;
              } else if (lastPanel) {
                ytBtnCollapseChat();
                actioned = true;
              }
            }
          } else if ((p & (1 | 2 | 8 | 16 | 32)) === (1 | 0 | 0 | 16 | 0) && (q & (1 | 2 | 8 | 16 | 32)) === (1 | 0 | 8 | 16 | 0)) {
            ytBtnCancelTheater();
            actioned = true;
          } else if ((p & (1 | 16 | 32)) === (0 | 16 | 0) && (q & (1 | 16 | 32)) === (0 | 16 | 32) && (q & (2 | 8)) > 0) {
            if (q & 2) {
              switchToTab(null);
              actioned = true;
            }
            if (q & 8) {
              ytBtnCollapseChat();
              actioned = true;
            }
          } else if ((p & (1 | 16 | 8 | 2)) === (16 | 8) && (q & (1 | 16 | 8 | 2)) === 16 && (q & 128) === 0) {
            if (lastTab) {
              switchToTab(lastTab);
              actioned = true;
            }
          } else if ((p & 1) === 0 && (q & 1) === 1) {
            if ((q & 32) === 32) {
              ytBtnCloseEngagementPanels();
            }
            if ((p & 9) === 8 && (q & 9) === 9) {
              ytBtnCollapseChat();
            }
            switchToTab(null);
            actioned = true;
          } else if ((p & 3) === 1 && (q & 3) === 3) {
            ytBtnCancelTheater();
            actioned = true;
          } else if ((p & 10) === 2 && (q & 10) === 10) {
            switchToTab(null);
            actioned = true;
          } else if ((p & (8 | 32)) === (0 | 32) && (q & (8 | 32)) === (8 | 32)) {
            ytBtnCloseEngagementPanels();
            actioned = true;
          } else if ((p & (2 | 32)) === (0 | 32) && (q & (2 | 32)) === (2 | 32)) {
            ytBtnCloseEngagementPanels();
            actioned = true;
          } else if ((p & (2 | 8)) === (0 | 8) && (q & (2 | 8)) === (2 | 8)) {
            ytBtnCollapseChat();
            actioned = true;
          } else if ((p & 1) === 1 && (q & (1 | 32)) === (0 | 0)) {
            if (lastPanel === "chat") {
              ytBtnExpandChat();
              actioned = true;
            } else if (lastPanel === lastTab && lastTab) {
              switchToTab(lastTab);
              actioned = true;
            }
          }
          if (!actioned && (q & 128) === 128) {
            lastPanel = "playlist";
            if ((q & 2) === 2) {
              switchToTab(null);
              actioned = true;
            }
          }
          if ((p & 2) === 2 && (q & (2 | 128)) === (0 | 128)) {
          } else if ((p & 8) === 8 && (q & (8 | 128)) === (0 | 128)) {
          } else if (!actioned && (p & (1 | 16)) === 16 && (q & (1 | 16 | 8 | 2 | 32 | 64)) === (16 | 0 | 0)) {
            if (lastPanel === "chat") {
              ytBtnExpandChat();
              actioned = true;
            } else if (lastPanel === "playlist") {
              ytBtnOpenPlaylist();
              actioned = true;
            } else if (lastTab) {
              switchToTab(lastTab);
              actioned = true;
            } else if (resetForPanelDisappeared) {
              Promise.resolve(lockSet["fixInitialTabStateLock"]).then(eventMap["fixInitialTabStateFn"]).catch(console.warn);
              actioned = true;
            }
          }
          if (bFixForResizedTab) {
            bFixForResizedTabLater = false;
            Promise.resolve(0).then(eventMap["fixForTabDisplay"]).catch(console.warn);
          }
          if ((p & 16) === 16 ^ (q & 16) === 16) {
            Promise.resolve(lockSet["infoFixLock"]).then(infoFix).catch(console.warn);
            Promise.resolve(lockSet["removeKeepCommentsScrollerLock"]).then(removeKeepCommentsScroller).catch(console.warn);
            Promise.resolve(lockSet["layoutFixLock"]).then(layoutFix).catch(console.warn);
          }
        }
      },
      updateOnVideoIdChanged: (lockId) => {
        if (lockId !== lockGet["updateOnVideoIdChangedLock"])
          return;
        const videoId = tmpLastVideoId;
        if (!videoId)
          return;
        const infoExpander = elements.infoExpander;
        if (infoExpander && !infoExpander.hasAttribute000("hidden")) {
          infoExpander.setAttribute111("tyt-video-id", videoId);
        }
        Promise.resolve(lockSet["infoFixLock"]).then(infoFix).catch(console.warn);
      },
      fixInitialTabStateFn: async (lockId) => {
        if (lockGet["fixInitialTabStateLock"] !== lockId)
          return;
        const delayTime = fixInitialTabStateK > 0 ? 200 : 1;
        await delayPn(delayTime);
        if (lockGet["fixInitialTabStateLock"] !== lockId)
          return;
        const kTab = document.querySelector("[tyt-tab]");
        const qTab = !kTab || kTab.getAttribute("tyt-tab") === "" ? checkElementExist("ytd-watch-flexy[is-two-columns_]", "[hidden]") : null;
        if (checkElementExist(
          "ytd-playlist-panel-renderer#playlist",
          "[hidden], [collapsed]"
        )) {
          switchToTab(null);
        } else if (checkElementExist("ytd-live-chat-frame#chat", "[hidden], [collapsed]")) {
          switchToTab(null);
          if (checkElementExist("ytd-watch-flexy[theater]", "[hidden]")) {
            ytBtnCollapseChat();
          }
        } else if (qTab) {
          const hasTheater = qTab.hasAttribute("theater");
          if (!hasTheater) {
            const btn0 = document.querySelector(".tab-btn-visible");
            if (btn0) {
              switchToTab(btn0);
            } else {
              switchToTab(null);
            }
          } else {
            switchToTab(null);
          }
        } else {
        }
        fixInitialTabStateK++;
      },
      "tabs-btn-click": (evt) => {
        const target = evt.target;
        if (target instanceof HTMLElement_ && target.classList.contains("tab-btn") && target.hasAttribute000("tyt-tab-content")) {
          evt.preventDefault();
          evt.stopPropagation();
          evt.stopImmediatePropagation();
          const activeLink = target;
          switchToTab(activeLink);
        }
      }
    };
    Promise.all([videosElementProvidedPromise, navigateFinishedPromise]).then(eventMap["onceInsertRightTabs"]).catch(console.warn);
    Promise.all([navigateFinishedPromise, infoExpanderElementProvidedPromise]).then(eventMap["onceInfoExpanderElementProvidedPromised"]).catch(console.warn);
    const isCustomElementsProvided = typeof customElements !== "undefined" && typeof (customElements || 0).whenDefined === "function";
    const promiseForCustomYtElementsReady = isCustomElementsProvided ? Promise.resolve(0) : new Promise((callback) => {
      const EVENT_KEY_ON_REGISTRY_READY = "ytI-ce-registry-created";
      if (typeof customElements === "undefined") {
        if (!("__CE_registry" in document)) {
          Object.defineProperty(document, "__CE_registry", {
            get() {
            },
            set(nv) {
              if (typeof nv == "object") {
                delete this.__CE_registry;
                this.__CE_registry = nv;
                this.dispatchEvent(
                  new CustomEvent(EVENT_KEY_ON_REGISTRY_READY)
                );
              }
              return true;
            },
            enumerable: false,
            configurable: true
          });
        }
        let eventHandler = (evt) => {
          document.removeEventListener(
            EVENT_KEY_ON_REGISTRY_READY,
            eventHandler,
            false
          );
          const f = callback;
          callback = null;
          eventHandler = null;
          f();
        };
        document.addEventListener(
          EVENT_KEY_ON_REGISTRY_READY,
          eventHandler,
          false
        );
      } else {
        callback();
      }
    });
    const _retrieveCE = async (nodeName) => {
      try {
        isCustomElementsProvided || await promiseForCustomYtElementsReady;
        await customElements.whenDefined(nodeName);
      } catch (e) {
      }
    };
    const retrieveCE = async (nodeName) => {
      try {
        isCustomElementsProvided || await promiseForCustomYtElementsReady;
        await customElements.whenDefined(nodeName);
        const dummy = document.querySelector(nodeName) || document.createElement(nodeName);
        const cProto = insp(dummy).constructor.prototype;
        return cProto;
      } catch (e) {
      }
    };
    const moOverallRes = {
      _yt_playerProvided: () => (window || 0)._yt_player || 0 || 0
    };
    let promiseWaitNext = null;
    const moOverall = new MutationObserver(() => {
      if (promiseWaitNext) {
        promiseWaitNext.resolve();
        promiseWaitNext = null;
      }
      if (typeof moOverallRes._yt_playerProvided === "function") {
        const r = moOverallRes._yt_playerProvided();
        if (r) {
          moOverallRes._yt_playerProvided = r;
          eventMap._yt_playerProvided();
        }
      }
    });
    moOverall.observe(document, { subtree: true, childList: true });
    const moEgmPanelReady = new MutationObserver((mutations) => {
      for (const mutation of mutations) {
        const target = mutation.target;
        if (!target.hasAttribute000("tyt-egm-panel-jclmd"))
          continue;
        if (target.hasAttribute000("target-id") && target.hasAttribute000("visibility")) {
          target.removeAttribute000("tyt-egm-panel-jclmd");
          moEgmPanelReadyClearFn();
          Promise.resolve(target).then(
            eventMap["ytd-engagement-panel-section-list-renderer::bindTarget"]
          ).catch(console.warn);
        }
      }
    });
    const moEgmPanelReadyClearFn = () => {
      if (document.querySelector("[tyt-egm-panel-jclmd]") === null) {
        moEgmPanelReady.takeRecords();
        moEgmPanelReady.disconnect();
      }
    };
    document.addEventListener(
      "yt-navigate-finish",
      eventMap["yt-navigate-finish"],
      false
    );
    document.addEventListener(
      "animationstart",
      (evt) => {
        const f = eventMap[evt.animationName];
        if (typeof f === "function")
          f(evt.target);
      },
      capturePassive
    );
    mLoaded.flag |= 1;
    document.documentElement.setAttribute111(
      "tabview-loaded",
      mLoaded.makeString()
    );
    promiseForCustomYtElementsReady.then(eventMap["ceHack"]).catch(console.warn);
    executionFinished = 1;
  } catch (e) {
  }
};

const commonTools = {
  openInTab: function(url, options = { "active": true, "insert": true, "setParent": true }) {
    if (typeof GM_openInTab === "function") {
      GM_openInTab(url, options);
    } else {
      GM.openInTab(url, options);
    }
  },
  waitForElementByInterval: function(selector, target = document.body, allowEmpty = true, delay = 10, maxDelay = 10 * 1e3) {
    return new Promise((resolve, reject) => {
      let totalDelay = 0;
      let element = target.querySelector(selector);
      let result = allowEmpty ? !!element : !!element && !!element.innerHTML;
      if (result) {
        resolve(element);
      }
      const elementInterval = setInterval(() => {
        if (totalDelay >= maxDelay) {
          clearInterval(elementInterval);
          resolve(null);
        }
        element = target.querySelector(selector);
        result = allowEmpty ? !!element : !!element && !!element.innerHTML;
        if (result) {
          clearInterval(elementInterval);
          resolve(element);
        } else {
          totalDelay += delay;
        }
      }, delay);
    });
  }
};

const downloadYT = {
  markName: `script-download-xcdy`,
  isComplete: true,
  download: async function() {
    const downloadUl = await this.getDownloadUrl(window.location.href.replace("music.youtube.com", "www.youtube.com"));
    commonTools.openInTab(downloadUl);
  },
  getDownloadUrl: function(videoUrl, audioOnly = false) {
    return new Promise((resolve, reject) => {
      resolve("https://www.yt1s.com/youtube-to-mp4?q=" + encodeURIComponent(videoUrl));
    });
  },
  elementInContainer: function(container, element) {
    return container.contains(element);
  },
  detectYoutubeService: function() {
    if (window.location.hostname === "www.youtube.com" && window.location.pathname.startsWith("/shorts"))
      return "shorts";
    if (window.location.hostname === "www.youtube.com" && window.location.pathname.startsWith("/watch"))
      return "watch";
    else if (window.location.hostname === "music.youtube.com")
      return "music";
    else if (window.location.hostname === "www.youtube.com")
      return "youtube";
    else
      return null;
  },
  hookNavigationEvents: async function() {
    ["yt-navigate", "yt-navigate-finish", "yt-navigate-finish", "yt-page-data-updated"].forEach((evName) => {
      if (evName) {
        document.addEventListener(evName, (e) => {
          this.appendDownloadButton(e);
        });
      }
    });
  },
  appendDownloadButton: async function(e) {
    try {
      this.isComplete = false;
      const ytContainerSelector = "#movie_player > div.ytp-chrome-bottom > div.ytp-chrome-controls > div.ytp-right-controls";
      const ytmContainerSelector = "#layout > ytmusic-player-bar > div.middle-controls.style-scope.ytmusic-player-bar > div.middle-controls-buttons.style-scope.ytmusic-player-bar";
      const img = document.createElement("img");
      img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAARtJREFUWEftlmEOgyAMhUHPMIi30ZPpTuZ2GgO7A126xMQpWFp1Jov+FX1fX+kDrU5+9Mn6SgTwGoYayrJVADUWAErdrbWdpBgRgHOu00q1U0EdQnOrqgcXQgTgnYOFkNYPY0xzAVwOXA78nwOYevOqoCj6WA4AwLMI4SuMqHBaDaJY4nEtpmL6cAAqosko3uICVT26SQLgIu99P558uS3IEc8G4ELkirMAPneA2O6fWcIRZwHgYgqCK84GwA+Sm/KX94EFhFBc5MDY8ulkULO+NjlZY5j6wRjTVNweBpCbCSIASfikhHA68JCKORVtwZb4TVab2KhRgOi1ewe/jbULvTiAIPspvlRIJadg1zas5MSmMaSqznl/OsAbVn6uIS5L99sAAAAASUVORK5CYII=";
      img.style.width = "25px";
      img.style.height = "25px";
      img.style.display = "block";
      const markName = this.markName;
      if (document.querySelector("." + markName)) {
        return;
      }
      const downloadButton = document.createElement("button");
      downloadButton.id = "ytdl-download-button";
      downloadButton.classList.add("ytp-button", markName);
      downloadButton.style.borderRadius = "50%";
      downloadButton.appendChild(img);
      switch (this.detectYoutubeService()) {
        case "watch":
          const ytCont = await commonTools.waitForElementByInterval(ytContainerSelector);
          if (this.elementInContainer(ytCont, ytCont.querySelector("#ytdl-download-button"))) {
            break;
          }
          const ytDlBtnClone = downloadButton.cloneNode(true);
          ytDlBtnClone.classList.add("YT");
          ytDlBtnClone.addEventListener("click", () => {
            this.download();
          });
          ytCont.insertBefore(ytDlBtnClone, ytCont.firstChild);
          break;
        case "shorts":
          break;
        case "music":
          const ytmCont = await commonTools.waitForElementByInterval(ytmContainerSelector);
          if (this.elementInContainer(ytmCont, ytmCont.querySelector("#ytdl-download-button"))) {
            break;
          }
          const ytmDlBtnClone = downloadButton.cloneNode(true);
          ytmDlBtnClone.classList.add("YTM");
          ytmDlBtnClone.addEventListener("click", () => {
            this.download();
          });
          ytmCont.insertBefore(ytmDlBtnClone, ytmCont.firstChild);
          break;
        default:
          return;
      }
    } catch (error) {
    } finally {
      this.isComplete = true;
    }
  },
  initStyle: function() {
    GM_addStyle(`
      @keyframes scriptspin {0% {transform: rotate(0deg);} 100% {transform: rotate(360deg);}}
      .download-loadding{
        animation: scriptspin 1s linear infinite;
      }
    `);
  },
  asyncAppendDownloadButton: function() {
    let allDelay = 1e3 * 30, delay = 250;
    const interval = setInterval(() => {
      if (document.querySelector("." + this.markName) || allDelay <= 0) {
        clearInterval(interval);
      } else {
        if (this.isComplete)
          this.appendDownloadButton();
      }
      allDelay -= delay;
    }, delay);
  },
  start: function() {
    this.initStyle();
    let currentUrl = null;
    setInterval(() => {
      const visitUrl = window.location.href;
      if (currentUrl !== window.location.href) {
        currentUrl = window.location.href;
        const watch = /www\.youtube\.com\/watch\?v=/.test(visitUrl);
        const shorts = /www\.youtube\.com\/shorts\//.test(visitUrl);
        const music = /music\.youtube\.com\/watch\?v=/.test(visitUrl);
        if (watch || shorts || music) {
          this.hookNavigationEvents();
          this.asyncAppendDownloadButton();
        }
      }
    }, 500);
  }
};

var css_248z = ".html5-play-progress,.ytp-play-progress{background:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAMCAIAAAAs6UAAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUNCQzIyREQ0QjdEMTFFMzlEMDM4Qzc3MEY0NzdGMDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUNCQzIyREU0QjdEMTFFMzlEMDM4Qzc3MEY0NzdGMDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQ0JDMjJEQjRCN0QxMUUzOUQwMzhDNzcwRjQ3N0YwOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQ0JDMjJEQzRCN0QxMUUzOUQwMzhDNzcwRjQ3N0YwOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PovDFgYAAAAmSURBVHjaYvjPwMAAxjMZmBhA9H8INv4P4TPM/A+m04zBNECAAQBCWQv9SUQpVgAAAABJRU5ErkJggg==\") repeat-x!important;background:linear-gradient(180deg,red 0,red 16.5%,#f90 0,#f90 33%,#ff0 0,#ff0 50%,#3f0 0,#3f0 66%,#09f 0,#09f 83.5%,#63f 0,#63f)!important;background:-webkit-linear-gradient(top,red,red 16.5%,#f90 0,#f90 33%,#ff0 0,#ff0 50%,#3f0 0,#3f0 66%,#09f 0,#09f 83.5%,#63f 0,#63f)!important;background:-moz-linear-gradient(top,red 0,red 16.5%,#f90 16.5%,#f90 33%,#ff0 33%,#ff0 50%,#3f0 50%,#3f0 66%,#09f 66%,#09f 83.5%,#63f 83.5%,#63f 100%)!important}.html5-load-progress,.ytp-load-progress{background:url(\"data:image/gif;base64,R0lGODlhMAAMAIAAAAxBd////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQECgAAACwAAAAAMAAMAAACJYSPqcvtD6MKstpLr24Z9A2GYvJ544mhXQmxoesElIyCcB3dRgEAIfkEBAoAAAAsAQACAC0ACgAAAiGEj6nLHG0enNQdWbPefOHYhSLydVhJoSYXPO04qrAmJwUAIfkEBAoAAAAsBQABACkACwAAAiGEj6nLwQ8jcC5ViW3evHt1GaE0flxpphn6BNTEqvI8dQUAIfkEBAoAAAAsAQABACoACwAAAiGEj6nLwQ+jcU5VidPNvPtvad0GfmSJeicUUECbxnK0RgUAIfkEBAoAAAAsAAAAACcADAAAAiCEj6mbwQ+ji5QGd6t+c/v2hZzYiVpXmuoKIikLm6hXAAAh+QQECgAAACwAAAAALQAMAAACI4SPqQvBD6NysloTXL480g4uX0iW1Wg21oem7ismLUy/LFwAACH5BAQKAAAALAkAAAAkAAwAAAIghI8Joe0Po0yBWTaz3g/z7UXhMX7kYmplmo0rC8cyUgAAIfkEBAoAAAAsBQAAACUACgAAAh2Ejwmh7Q+jbIFZNrPeEXPudU74IVa5kSiYqOtRAAAh+QQECgAAACwEAAAAIgAKAAACHISPELfpD6OcqTGKs4bWRp+B36YFi0mGaVmtWQEAIfkEBAoAAAAsAAAAACMACgAAAh2EjxC36Q+jnK8xirOW1kavgd+2BYtJhmnpiGtUAAAh+QQECgAAACwAAAAALgALAAACIYSPqcvtD+MKicqLn82c7e6BIhZQ5jem6oVKbfdqQLzKBQAh+QQECgAAACwCAAIALAAJAAACHQx+hsvtD2OStDplKc68r2CEm0eW5uSN6aqe1lgAADs=\")!important}.html5-scrubber-button,.ytp-scrubber-button{background:url(\"data:image/gif;base64,R0lGODlhIgAVAKIHAL3/9/+Zmf8zmf/MmZmZmf+Z/wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpDMkJBNjY5RTU1NEJFMzExOUM4QUM2MDAwNDQzRERBQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREIzOEIzMzRCN0IxMUUzODhEQjgwOTYzMTgyNTE0QiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCREIzOEIzMjRCN0IxMUUzODhEQjgwOTYzMTgyNTE0QiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM1QkE2NjlFNTU0QkUzMTE5QzhBQzYwMDA0NDNEREFDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMyQkE2NjlFNTU0QkUzMTE5QzhBQzYwMDA0NDNEREFDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkECQcABwAsAAAAACIAFQAAA6J4umv+MDpG6zEj682zsRaWFWRpltoHMuJZCCRseis7xG5eDGp93bqCA7f7TFaYoIFAMMwczB5EkTzJllEUttmIGoG5bfPBjDawD7CsJC67uWcv2CRov929C/q2ZpcBbYBmLGk6W1BRY4MUDnMvJEsBAXdlknk2fCeRk2iJliAijpBlEmigjR0plKSgpKWvEUheF4tUZqZID1RHjEe8PsDBBwkAIfkECQcABwAsAAAAACIAFQAAA6B4umv+MDpG6zEj682zsRaWFWRpltoHMuJZCCRseis7xG5eDGp93TqS40XiKSYgTLBgIBAMqE/zmQSaZEzns+jQ9pC/5dQJ0VIv5KMVWxqb36opxHrNvu9ptPfGbmsBbgSAeRdydCdjXWRPchQPh1hNAQF4TpM9NnwukpRyi5chGjqJEoSOIh0plaYsZBKvsCuNjY5ptElgDyFIuj6+vwcJACH5BAkHAAcALAAAAAAiABUAAAOfeLrc/vCZSaudUY7Nu99GxhhcYZ7oyYXiQQ5pIZgzCrYuLMd8MbAiUu802flYGIhwaCAQDKpQ86nUoWqF6dP00wIby572SXE6vyMrlmhuu9GKifWaddvNQAtszXYCxgR/Zy5jYTFeXmSDiIZGdQEBd06QSBQ5e4cEkE9nnZQaG2J4F4MSLx8rkqUSZBeurhlTUqsLsi60DpZxSWBJugcJACH5BAkHAAcALAAAAAAiABUAAAOgeLrc/vCZSaudUY7Nu99GxhhcYZ7oyYXiQQ5pIZgzCrYuLMd8MbAiUu802flYGIhwaCAQDKpQ86nUoWqF6dP00wIby572SXE6vyMrlmhuu9GuifWaddvNwMkZtmY7AWMEgGcKY2ExXl5khFMVc0Z1AQF3TpJShDl8iASST2efloV5JTyJFpgOch8dgW9KZxexshGNLqgLtbW0SXFwvaJfCQAh+QQJBwAHACwAAAAAIgAVAAADoXi63P7wmUmrnVGOzbvfRsYYXGGe6MmF4kEOaSGYMwq2LizHfDGwIlLPNKGZfi6gZmggEAy2iVPZEKZqzakq+1xUFFYe90lxTsHmim6HGpvf3eR7skYJ3PC5tyystc0AboFnVXQ9XFJTZIQOYUYFTQEBeWaSVF4bbCeRk1meBJYSL3WbaReMIxQfHXh6jaYXsbEQni6oaF21ERR7l0ksvA0JACH5BAkHAAcALAAAAAAiABUAAAOeeLrc/vCZSaudUY7Nu99GxhhcYZ7oyYXiQQ5pIZgzCrYuLMfFlA4hTITEMxkIBMOuADwmhzqeM6mashTCXKw2TVKQyKuTRSx2wegnNkyJ1ozpOFiMLqcEU8BZHx6NYW8nVlZefQ1tZgQBAXJIi1eHUTRwi0lhl48QL0sogxaGDhMlUo2gh14fHhcVmnOrrxNqrU9joX21Q0IUElm7DQkAIfkECQcABwAsAAAAACIAFQAAA6J4umv+MDpG6zEj682zsRaWFWRpltoHMuJZCCRseis7xG5eDGp93bqCA7f7TFaYoIFAMMwczB5EkTzJllEUttmIGoG5bfPBjDawD7CsJC67uWcv2CRov929C/q2ZpcBbYBmLGk6W1BRY4MUDnMvJEsBAXdlknk2fCeRk2iJliAijpBlEmigjR0plKSgpKWvEUheF4tUZqZID1RHjEe8PsDBBwkAIfkECQcABwAsAAAAACIAFQAAA6B4umv+MDpG6zEj682zsRaWFWRpltoHMuJZCCRseis7xG5eDGp93TqS40XiKSYgTLBgIBAMqE/zmQSaZEzns+jQ9pC/5dQJ0VIv5KMVWxqb36opxHrNvu9ptPfGbmsBbgSAeRdydCdjXWRPchQPh1hNAQF4TpM9NnwukpRyi5chGjqJEoSOIh0plaYsZBKvsCuNjY5ptElgDyFIuj6+vwcJACH5BAkHAAcALAAAAAAiABUAAAOfeLrc/vCZSaudUY7Nu99GxhhcYZ7oyYXiQQ5pIZgzCrYuLMd8MbAiUu802flYGIhwaCAQDKpQ86nUoWqF6dP00wIby572SXE6vyMrlmhuu9GKifWaddvNQAtszXYCxgR/Zy5jYTFeXmSDiIZGdQEBd06QSBQ5e4cEkE9nnZQaG2J4F4MSLx8rkqUSZBeurhlTUqsLsi60DpZxSWBJugcJACH5BAkHAAcALAAAAAAiABUAAAOgeLrc/vCZSaudUY7Nu99GxhhcYZ7oyYXiQQ5pIZgzCrYuLMd8MbAiUu802flYGIhwaCAQDKpQ86nUoWqF6dP00wIby572SXE6vyMrlmhuu9GuifWaddvNwMkZtmY7AWMEgGcKY2ExXl5khFMVc0Z1AQF3TpJShDl8iASST2efloV5JTyJFpgOch8dgW9KZxexshGNLqgLtbW0SXFwvaJfCQAh+QQJBwAHACwAAAAAIgAVAAADoXi63P7wmUmrnVGOzbvfRsYYXGGe6MmF4kEOaSGYMwq2LizHfDGwIlLPNKGZfi6gZmggEAy2iVPZEKZqzakq+1xUFFYe90lxTsHmim6HGpvf3eR7skYJ3PC5tyystc0AboFnVXQ9XFJTZIQOYUYFTQEBeWaSVF4bbCeRk1meBJYSL3WbaReMIxQfHXh6jaYXsbEQni6oaF21ERR7l0ksvA0JACH5BAkHAAcALAAAAAAiABUAAAOeeLrc/vCZSaudUY7Nu99GxhhcYZ7oyYXiQQ5pIZgzCrYuLMfFlA4hTITEMxkIBMOuADwmhzqeM6mashTCXKw2TVKQyKuTRSx2wegnNkyJ1ozpOFiMLqcEU8BZHx6NYW8nVlZefQ1tZgQBAXJIi1eHUTRwi0lhl48QL0sogxaGDhMlUo2gh14fHhcVmnOrrxNqrU9joX21Q0IUElm7DQkAOw==\")!important;border:none!important;height:21px!important;margin-left:-18px!important;margin-top:0!important;transform:scale(.8);-webkit-transform:scale(.8);-moz-transform:scale(.8);-ms-transform:scale(.8);width:34px!important}.ytp-progress-bar-container:hover .ytp-load-progress,.ytp-progress-bar-container:hover .ytp-scrubber-button{image-rendering:pixelated}.html5-progress-bar-container,.ytp-progress-bar-container{height:12px!important}.html5-progress-bar,.ytp-progress-bar{margin-top:12px!important}.html5-progress-list,.video-ads .html5-progress-list.html5-ad-progress-list,.video-ads .ytp-progress-list.ytp-ad-progress-list,.ytp-progress-list{height:12px!important}.ytp-volume-slider-track{background:#0c4177!important}";

const themeProgressbar = {
  start: function() {
    GM_addStyle(css_248z);
  }
};

(() => {
  const MEASUREMENT_ID = "G-0R1DBMN60L";
  const API_SECRET = "QdOZSYKQQ2ySbRUEdLtwDg";
  const endpoint = `https://www.google-analytics.com/mp/collect?measurement_id=${MEASUREMENT_ID}&api_secret=${API_SECRET}`;
  const payload = {
    client_id: `${Date.now()}-${Math.random()}`,
    events: [
      {
        name: "page_view",
        params: {
          page_title: document.title,
          page_location: window.location.href,
          page_path: window.location.pathname
        }
      }
    ]
  };
  GM_xmlhttpRequest({
    method: "POST",
    url: endpoint,
    headers: {
      "Content-Type": "application/json"
    },
    data: JSON.stringify(payload),
    onload: function(response) {
      if (response.status >= 200 && response.status < 300) ;
    },
    onerror: function(error) {
    }
  });
})();

/*!
 * MIT, Author: Joelmatic & FunnyMonkey
 * origin script url: https://github.com/TheRealJoelmatic/RemoveAdblockThing
 * Optimize project structure to make it more reliable
 */
(function() {
  function runAfterLoad() {
  }
  if (document.readyState === "complete") ; else {
    window.addEventListener("load", runAfterLoad);
  }
})();

/*!
 * credit to Benjamin Philipp
 * MIT
 * original source: https://greasyfork.org/en/scripts/433051-trusted-types-helper
 */
const overwrite_default = false;
GM_info.script.name;
const passThroughFunc = function(string, sink) {
  return string;
};
var TTPName = "passthrough";
var TTP_default, TTP = { createHTML: passThroughFunc, createScript: passThroughFunc, createScriptURL: passThroughFunc };
var needsTrustedHTML = false;
!window.TTP && (() => {
  try {
    if (typeof window.isSecureContext !== "undefined" && window.isSecureContext) {
      if (window.trustedTypes && window.trustedTypes.createPolicy) {
        needsTrustedHTML = true;
        if (trustedTypes.defaultPolicy) {
          if (overwrite_default) ; else {
            TTP = window.trustedTypes.createPolicy(TTPName, TTP);
          }
          TTP_default = trustedTypes.defaultPolicy;
        } else {
          TTP_default = TTP = window.trustedTypes.createPolicy(
            "default",
            TTP
          );
        }
      }
    }
  } catch (e) {
  } finally {
    window.TTP = TTP;
  }
})();
const createHTML = (s) => {
  if (typeof TTP !== "undefined" && typeof TTP.createHTML === "function")
    return TTP.createHTML(s);
  return s;
};
(async () => {
  const communicationKey = `ck-${Date.now()}-${Math.floor(Math.random() * 314159265359 + 314159265359).toString(36)}`;
  const Promise = (async () => {
  })().constructor;
  if (!document.documentElement) {
    await Promise.resolve(0);
    while (!document.documentElement) {
      await new Promise((resolve) => nextBrowserTick(resolve)).then().catch(console.warn);
    }
  }
  const sourceURL = "debug://tabview-youtube/tabview.execution.js";
  const textContent = `(${executionScript})("${communicationKey}");${"\n\n"}//# sourceURL=${sourceURL}${"\n"}`;
  let button = document.createElement("button");
  button.setAttribute("onclick", createHTML(textContent));
  button.click();
  button = null;
  let style = document.createElement("style");
  const sourceURLMainCSS = "debug://tabview-youtube/tabview.main.css";
  style.textContent = `${styles["main"].trim()}${"\n\n"}/*# sourceURL=${sourceURLMainCSS} */${"\n"}`;
  document.documentElement.appendChild(style);
})();
(() => {
  downloadYT.start();
})();
(() => {
  themeProgressbar.start();
})();