Twitter menampilkan tanggal dan waktu normal

Sepertinya ini. 70/12/31 (TH) 23:59:59.

// ==UserScript==
// @name                   Show date normally on Twitter
// @name:aa                Tiwiteril qaadik tan ayro kee wakti yaybulle
// @name:ab                Твиттер иаанарԥшуеит иаабац арыцхәи аамҭеи
// @name:af                Twitter vertoon normale datum en tyd
// @name:ak                Twitter kyerɛ da ne bere a ɛfata .
// @name:am                ትዊተር የተለመደው ቀን እና ሰዓት ያሳያል
// @name:ar                يعرض Twitter التاريخ والوقت العاديين
// @name:as                টুইটাৰে সাধাৰণ তাৰিখ আৰু সময় প্ৰদৰ্শন কৰে
// @name:av                Твиттералда бихьулеб букӀуна гӀадатияб тарих ва заман
// @name:ay                Twitter ukax normal uru ukat pacha uñacht’ayi .
// @name:az                Twitter normal tarix və vaxt göstərir
// @name:ba                Twitter ғәҙәти дата һәм ваҡыт күрһәтә
// @name:be                Twitter адлюстроўвае звычайную дату і час
// @name:bg                Twitter показва нормална дата и час
// @name:bh                ट्विटर सामान्य तारीख आ समय के देखावेला
// @name:bm                Twitter bɛ don ni waati nɔrɔlen jira .
// @name:bn                টুইটার স্বাভাবিক তারিখ এবং সময় প্রদর্শন করে
// @name:bo                ཊུ་ཊར་གྱིས་ཚེས་གྲངས་དང་དུས་ཚོད་སྟོན་གྱི་ཡོད།
// @name:br                Diskouez a ra Twitter deiziad ha eur normal
// @name:bs                Twitter prikazuje normalan datum i vrijeme
// @name:ca                Twitter mostra la data i l’hora normals
// @name:ce                Твиттерехь гойту нийса хан а, хан а .
// @name:ceb               Ang Twitter nagpakita sa normal nga petsa ug oras
// @name:ch                I Twitter ha dispåtta i fechan-ña yan .
// @name:ckb               تویتەر بەروار و کاتی ئاسایی پیشان دەدات
// @name:co                Twitter mostra a data è u tempu nurmale
// @name:cs                Twitter zobrazuje normální datum a čas
// @name:cv                Твиттер йĕркеллĕ кунпа вăхăта кăтартать
// @name:cy                Mae Twitter yn arddangos dyddiad ac amser arferol
// @name:da                Twitter viser normal dato og tid
// @name:de                Twitter zeigt das normale Datum und die normale Uhrzeit an
// @name:dv                ޓްވިޓަރ އިން އާދައިގެ ތާރީޚާއި ގަޑި ދައްކާ
// @name:dz                ཊུ་ཊར་གྱིས་ སྤྱིར་བཏང་ཚེས་གྲངས་དང་དུས་ཚོད་བཀྲམ་སྟོན་འབདཝ་ཨིན།
// @name:ee                Twitter ɖea ŋkeke kple gaƒoƒo si sɔ fiana .
// @name:el                Το Twitter εμφανίζει κανονική ημερομηνία και ώρα
// @name:en                Twitter displays normal date and time
// @name:en-GB             Twitter displays normal date and time
// @name:eo                Twitter montras normalan daton kaj horon
// @name:es                Twitter muestra fecha y hora normales
// @name:et                Twitter kuvab tavalise kuupäeva ja kellaaja
// @name:eu                Twitterrek data eta ordu normala erakusten du
// @name:fa                توییتر تاریخ و زمان عادی را نشان می دهد
// @name:ff                Twitter ina hollira ñalngu e waktu no woorunoo
// @name:fi                Twitter näyttää normaalin päivämäärän ja ajan
// @name:fil               Ipinapakita ng Twitter ang normal na petsa at oras
// @name:fj                Tuvanaka na tiki ni siga kei na gauna .
// @name:fo                Twitter vísir vanliga dagfesting og tíð
// @name:fr                Twitter affiche la date et l’heure normales
// @name:fr-CA             Twitter affiche la date et l’heure normales
// @name:fy                Twitter Toant normale datum en tiid
// @name:ga                Taispeánann Twitter gnáth -dháta agus am
// @name:gd                Bidh Twitter a ’taisbeanadh ceann-latha agus àm àbhaisteach
// @name:gl                Twitter mostra a data e hora normais
// @name:gn                Twitter ohechauka ára ha aravo normal .
// @name:gsw-berne         Twitter displays normal date and time
// @name:gu                ટ્વિટર સામાન્ય તારીખ અને સમય દર્શાવે છે
// @name:gv                Twitter t’eh soilshaghey date as traa arryltagh
// @name:ha                Twitter nuni na al’ada da lokaci
// @name:he                טוויטר מציג תאריך ושעה רגילים
// @name:hi                ट्विटर सामान्य तारीख और समय प्रदर्शित करता है
// @name:hmn               TWITTER qhia txog hnub qub thiab sijhawm
// @name:hr                Twitter prikazuje normalan datum i vrijeme
// @name:ht                Twitter montre dat ak lè nòmal
// @name:hu                A Twitter megjeleníti a normál dátumot és időt
// @name:hy                Twitter- ը ցուցադրում է նորմալ ամսաթիվը եւ ժամանակը
// @name:id                Twitter menampilkan tanggal dan waktu normal
// @name:ig                Twitter na-egosiputa ụbọchị na oge
// @name:is                Twitter sýnir venjulegan dag og tíma
// @name:it                Twitter visualizza la data e l’ora normali
// @name:iu                Twitter ᑕᑯᒃᓴᐅᑎᑦᑎᕗᖅ ᐅᓪᓗᕆᔭᐅᔪᒥᒃ ᐊᒻᒪ ᐱᕕᒃᓴᒥᒃ
// @name:ja                Twitterには通常の日付と時刻が表示されます
// @name:jv                Twitter nampilake tanggal lan wektu normal
// @name:ka                Twitter აჩვენებს ნორმალურ თარიღს და დროს
// @name:kg                Twitter ke monisa kilumbu mpi ntangu ya mbote
// @name:kk                Twitter қалыпты күн мен уақытты көрсетеді
// @name:kl                Twitterip ulloq piffissarlu nalinginnaasoq takutinneqartarpoq
// @name:km                Twitter បង្ហាញកាលបរិច្ឆេទនិងពេលវេលាធម្មតា
// @name:kn                ಟ್ವಿಟರ್ ಸಾಮಾನ್ಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ
// @name:ko                트위터에는 일반 날짜와 시간이 표시됩니다
// @name:kr                Twitter lan loktu-a yim-a kalkal fəlejin
// @name:ku                Twitter tarîx û wextê normal nîşan dide
// @name:kv                Твиттерын петкӧдлӧма нормальнӧй кад да кад .
// @name:ky                Twitter кадимки күндү жана убакытты көрсөтөт
// @name:la                Twitter Displays Normal Date et Tempus
// @name:lb                Twitter weist normal Datum an Zäit
// @name:lg                Twitter eraga olunaku n’essaawa ebya bulijjo .
// @name:ln                Twitter elakisaka mokolo mpe ngonga ya momesano .
// @name:lo                Twitter ສະແດງວັນທີແລະເວລາທໍາມະດາ
// @name:lt                „Twitter“ rodo įprastą datą ir laiką
// @name:lv                Twitter parāda normālu datumu un laiku
// @name:mg                Ny Twitter dia mampiseho daty sy fotoana mahazatra
// @name:mh                Twitter ej kwaļo̧k raan im iien .
// @name:mi                Ka whakaatu a Twitter i te waa me te waa
// @name:mk                Твитер прикажува нормален датум и време
// @name:ml                ട്വിറ്റർ സാധാരണ തീയതിയും സമയവും പ്രദർശിപ്പിക്കുന്നു
// @name:mn                Твиттер нь хэвийн огноо, цагийг харуулдаг
// @name:mo                Twitter afișează data și ora normale
// @name:mr                ट्विटर सामान्य तारीख आणि वेळ प्रदर्शित करते
// @name:ms                Twitter memaparkan tarikh dan masa biasa
// @name:mt                Twitter juri data u ħin normali
// @name:my                Twitter သည်ပုံမှန်နေ့စွဲနှင့်အချိန်ကိုပြသသည်
// @name:nb                Twitter viser normal dato og tid
// @name:ne                ट्विटरले सामान्य मिति र समय प्रदर्शन गर्दछ
// @name:nl                Twitter toont normale datum en tijd
// @name:nr                Fala i-orasssssss.
// @name:ny                Twitter ikuwonetsa tsiku labwinobwino komanso nthawi
// @name:oc                Twitter aficha la data e l’ora normalas
// @name:om                Twitter guyyaa fi sa’aatii idilee agarsiisa .
// @name:or                ଟ୍ୱିଟର ସାଧାରଣ ତାରିଖ ଏବଂ ସମୟ ପ୍ରଦର୍ଶନ କରେ |
// @name:os                Твиттер æвдисы нормалон датæ æмæ рæстæг
// @name:pa                ਟਵਿੱਟਰ ਆਮ ਮਿਤੀ ਅਤੇ ਸਮਾਂ ਦਰਸਾਉਂਦਾ ਹੈ
// @name:pl                Twitter wyświetla normalną datę i godzinę
// @name:ps                ټویټر نورمال نیټه او وخت ښیې
// @name:pt                Twitter exibe data e hora normais
// @name:pt-BR             Twitter exibe data e hora normais
// @name:pt-PT             Twitter exibe data e hora normais
// @name:qu                Twitter normal p’unchawta, pachata rikuchin .
// @name:rn                Twitter yerekana itariki n’isaha isanzwe
// @name:ro                Twitter afișează data și ora normale
// @name:ru                Твиттер отображает обычную дату и время
// @name:rw                Twitter yerekana itariki nigihe gisanzwe
// @name:sa                ट्विटर सामान्य तिथि एवं समय प्रदर्शित करता है।
// @name:sd                Twitter عام تاريخ ۽ وقت ڏيکاري ٿو
// @name:se                Twitter čájeha dábálaš beaivvi ja áiggi
// @name:sg                Twitter afa lango na l’heure .
// @name:sh                Твиттер приказује нормалан датум и време
// @name:si                ට්විටර් සාමාන්ය දිනය සහ වේලාව පෙන්වයි
// @name:sk                Twitter zobrazuje normálny dátum a čas
// @name:sl                Twitter prikazuje normalen datum in čas
// @name:sm                Twitter faʻaalia le taimi masani aso ma le taimi
// @name:sn                Twitter inoratidza yakajairika zuva uye nguva
// @name:so                Twitter wuxuu soo bandhigayaa taariikhda iyo waqtiga caadiga ah
// @name:sq                Twitter shfaq datën dhe kohën normale
// @name:sr                Твиттер приказује нормалан датум и време
// @name:ss                I-Twitter ikhombisa lusuku nesikhatsi lesivamile
// @name:st                Twitter e bontša letsatsi le tloaelehileng le nako
// @name:su                Twitter ningalikeun tanggal sareng waktos anu normal
// @name:sv                Twitter visar normalt datum och tid
// @name:sw                Twitter inaonyesha tarehe ya kawaida na wakati
// @name:ta                ட்விட்டர் சாதாரண தேதி மற்றும் நேரத்தைக் காட்டுகிறது
// @name:te                ట్విట్టర్ సాధారణ తేదీ మరియు సమయాన్ని ప్రదర్శిస్తుంది
// @name:tg                Twitter санаи муқаррарӣ ва вақтро нишон медиҳад
// @name:th                Twitter แสดงวันที่และเวลาปกติ
// @name:ti                ትዊተር ንቡር ዕለትን ሰዓትን
// @name:tk                Twitter adaty senesini we wagty görkezýär
// @name:tl                Ipinapakita ng Twitter ang normal na petsa at oras
// @name:tn                Twitter e bontsha letlha le nako e e tlwaelegileng
// @name:to                ’Oku fakahaa’i ’e he Twitter ’a e ’aho mo e taimi angamaheni .
// @name:tr                Twitter normal tarih ve saati görüntüler
// @name:ts                Twitter yi kombisa siku na nkarhi lowu tolovelekeke .
// @name:tt                Твиттер гадәти датаны һәм вакытны күрсәтә
// @name:tw                Twitter kyerɛ da ne bere a ɛfata .
// @name:ty                E faaite te Twitter i te mahana e te taime matauhia
// @name:ug                Twitter نورمال ۋاقىت ۋە ۋاقىتنى كۆرسىتىدۇ
// @name:uk                Twitter відображає звичайну дату та час
// @name:ur                ٹویٹر عام تاریخ اور وقت دکھاتا ہے
// @name:uz                Twitter normal sana va vaqtni namoyish etadi
// @name:ve                Twitter i sumbedza ḓuvha na tshifhinga tsho ḓoweleaho
// @name:vi                Twitter hiển thị ngày và giờ bình thường
// @name:wo                Twitter dafay wane bis ak waxtu
// @name:xh                I-Twitter ibonisa umhla oqhelekileyo kunye nexesha
// @name:yi                טוויטטער דיספּלייז נאָרמאַל דאַטע און צייט
// @name:yo                Twitter ṣafihan ọjọ deede ati akoko
// @name:zh                Twitter 显示正常的日期和时间
// @name:zh-CN             Twitter 显示正常的日期和时间
// @name:zh-HK             Twitter 顯示正常的日期和時間
// @name:zh-MO             Twitter 顯示正常的日期和時間
// @name:zh-MY             Twitter 显示正常的日期和时间
// @name:zh-SG             Twitter 显示正常的日期和时间
// @name:zh-TW             Twitter 顯示正常的日期和時間
// @name:zu                I-Twitter ibonisa usuku olujwayelekile nesikhathi
// @name:es-419            Twitter muestra fecha y hora normales
// @description            Like this, 70/12/31(Th) 23:59:59.
// @description:aa         Tah celta. 70/12/31(Th) 23:59:59.
// @description:ab         Абри еиԥш ауп ишыҟоу. 70/12/31(Th) 23:59:59.
// @description:af         Dit lyk so. 70/12/31 (Th) 23:59:59.
// @description:ak         Ɛte sɛ eyi. 70/12/31(th) 23:59:59.
// @description:am         ይህ ይመስላል. 70/12/31 (te) 23:59:59.
// @description:ar         يبدو هكذا. 70/12/31 (TH) 23:59:59.
// @description:as         দেখাত এনেকুৱাই। ৭০/১২/৩১(তম) ২৩:৫৯:৫৯।
// @description:av         Гьеб гьадинаб буго. 70/12/31(Тх) 23:59:59.
// @description:ay         Ukhamaw ukham uñtasi. 70/12/31(th) 23:59:59.
// @description:az         Bu kimi görünür. 70/12/31 (TH) 23:59:59.
// @description:ba         Ул былай күренә. 70/12/31(Th) 23:59:59.
// @description:be         Падобна так. 70/12/31 (TH) 23:59:59.
// @description:bg         Изглежда така. 70/12/31 (TH) 23:59:59.
// @description:bh         अईसन लागता। 70/12/31(वें) 23:59:59 के बा।
// @description:bm         A bɛ iko nin. 70/12/31(nan) 23:59:59.
// @description:bn         দেখে মনে হচ্ছে এটি। 70/12/31 (TH) 23:59:59।
// @description:bo         འདི་འདྲ་འདུག ༧༠/༡༢/༣༡(Th) ༢༣:༥༩:༥༩།
// @description:br         Seblantout a ra evel-se. 70/12/31(Th) 23:59:59.
// @description:bs         Izgleda ovako. 70/12/31 (th) 23:59:59.
// @description:ca         Sembla així. 70/12/31 (Th) 23:59:59.
// @description:ce         Иштта хетало. 70/12/31(Th) 23:59:59.
// @description:ceb        Ingon kini. 70/12/31 (Th) 23:59:59.
// @description:ch         Parehu este yan este. 70/12/1211 (Th) 23:59:59.
// @description:ckb        بەم شێوەیە دەردەکەوێت. 70/12/31(th) 23:59:59.
// @description:co         Sembra cusì. 70/12/31 (u) 23:59:59.
// @description:cs         Vypadá to takto. 70/12/31 (th) 23:59:59.
// @description:cv         Кун пек курăнать. 70/12/31 (Тх) 23:59:59.
// @description:cy         Mae’n edrych fel hyn. 70/12/31 (TH) 23:59:59.
// @description:da         Det ser ud som dette. 70/12/31 (th) 23:59:59.
// @description:de         Es sieht so aus. 70/12/31 (Th) 23:59:59.
// @description:dv         މިހެން ހީވަނީ. 70/12/31(th) 23:59:59.
// @description:dz         འདི་བཟུམ་མཐོངམ་ཨིན། ༧༠/༡༢/༣༡(ཐ) ༢༣:༥༩:༥༩.
// @description:ee         Edze abe esia ene. 70/12/31 (th) 23:59:59.
// @description:el         Μοιάζει με αυτό. 70/12/31 (Th) 23:59:59.
// @description:en         It looks like this. 70/12/31(Th) 23:59:59.
// @description:en-GB      It looks like this. 70/12/31(Th) 23:59:59.
// @description:eo         Ĝi aspektas tiel. 70/12/31 (TH) 23:59:59.
// @description:es         Se parece a esto. 70/12/31 (Th) 23:59:59.
// @description:es-419     Se parece a esto. 70/12/31 (Th) 23:59:59.
// @description:et         See näeb välja selline. 70/12/31 (Th) 23:59:59.
// @description:eu         Horren antza du. 70/12/31 (th) 23:59:59.
// @description:fa         به نظر می رسد مانند این 70/12/31 (TH) 23:59:59.
// @description:ff         Ina wayi no nii. 70/12/31(Th) 23:59:59.
// @description:fi         Se näyttää tältä. 70/12/31 (Th) 23:59:59.
// @description:fil        Mukhang ganito. 70/12/31 (TH) 23:59:59.
// @description:fj         E vaka oqo na ka oqo. 70/12/31(The The) 23:59:59.
// @description:fo         Tað sær soleiðis út. 70/12/31(H) 23:59:59.
// @description:fr         Cela ressemble à ça. 70/12/31 (TH) 23:59:59.
// @description:fr-CA      Cela ressemble à ça. 70/12/31 (TH) 23:59:59.
// @description:fy         It liket derop. 70/12/31 (TH) 23:59:59.
// @description:ga         Tá an chuma air seo. 70/12/31 (TH) 23:59:59.
// @description:gd         Tha e coltach ri seo. 70/12/31 (th) 23:59:59.
// @description:gl         Parece así. 70/12/31 (TH) 23:59:59.
// @description:gn         Péicha ojehecha. 70/12/31(TH) 23:59:59.
// @description:gsw-berne  It looks like this. 70/12/31(Th) 23:59:59.
// @description:gu         તે આના જેવું લાગે છે. 70/12/31 (મી) 23:59:59.
// @description:gv         Ta’n red shoh myr shoh. 70/12/31(Th) 23:59:59.
// @description:ha         Yayi kama da wannan. 70/12/31 (th) 23:59:59.
// @description:he         זה נראה כך. 70/12/31 (TH) 23:59:59.
// @description:hi         यह इस तरह दिख रहा है। 70/12/31 (Th) 23:59:59।
// @description:hmn        Nws zoo li no. 70/12/31 (th) 23:59:59.
// @description:hr         Izgleda ovako. 70/12/31 (TH) 23:59:59.
// @description:ht         Li sanble tankou sa a. 70/12/31 (th) 23:59:59.
// @description:hu         Így néz ki. 70/12/31 (TH) 23:59:59.
// @description:hy         Կարծես սա է: 70/12/31 (րդ) 23:59:59:
// @description:id         Sepertinya ini. 70/12/31 (TH) 23:59:59.
// @description:ig         Ọ dị ka nke a. 70/12/31 (TH) 23:59:59.
// @description:is         Það lítur svona út. 70/12/31 (TH) 23:59:59.
// @description:it         Sembra questo. 70/12/31 (Th) 23:59:59.
// @description:iu         ᐃᒪᐃᑦᑐᔭᕐᒪᑦ. 70/12/31(Th) 23:59:59.
// @description:ja         このように見えます。 70/12/31(th)23:59:59。
// @description:jv         Katon kaya ngono. 70/12/31 (th) 23:59:59.
// @description:ka         ასე გამოიყურება. 70/12/31 (TH) 23:59:59.
// @description:kg         Yo ke monana mutindu yai. 70/12/31(Th) 23:59:59.
// @description:kk         Бұл сияқты. 70/12/31 (мың) 23:59:59.
// @description:kl         Taamatut isikkoqarpoq. 70/12/31(Th) 23:59:59.
// @description:km         វាមើលទៅដូចនេះ។ 70/12/31 (ទី) 23:59:59 ។
// @description:kn         ಇದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ. 70/12/31 (ನೇ) 23:59:59.
// @description:ko         이렇게 보인다. 70/12/31 (th) 23:59:59.
// @description:kr         Alama adəgai. 70/12/31(Th) 23:59:59.
// @description:ku         Wusa dixuye. 70/12/31 (th) 23:59:59.
// @description:kv         Сійӧ татшӧм. 70/12/31(Тх) 23:59:59.
// @description:ky         Бул окшойт. 70/12/31 (th) 23:59:59.
// @description:la         Is vultus amo is. 70/12/31 (Th) 23:59:59.
// @description:lb         IT gesäit esou aus. 70/12/31 (Th) 23:59:59.
// @description:lg         Kirabika bwe kiti. 70/12/31(th) 23:59:59.
// @description:ln         Ezali komonana lokola oyo. 70/12/31(th) 23:59:59.
// @description:lo         ມັນເບິ່ງຄືວ່ານີ້. 70/12/31 (ທ) ເວລາ 23:59:59.
// @description:lt         Panašu, kad taip. 70/12/31 (Th) 23:59:59.
// @description:lv         Tas izskatās šādi. 70/12/31 (Th) 23:59:59.
// @description:mg         Toa izany. 70/12/31 (th) 23:59:59.
// @description:mh         Ej āinwōt in. 70/12/31( Tht) 23:59:59.
// @description:mi         Te ahua nei. 70/12/31 (TH) 23:59:59.
// @description:mk         Изгледа вака. 70/12/31 (TH) 23:59:59.
// @description:ml         ഇത് ഇതുപോലെ തോന്നുന്നു. 70/12/31 (TH) 23:59:59.
// @description:mn         Энэ нь иймэрхүү харагдаж байна. 70/12/31 (th) 23:59:59.
// @description:mo         Pare așa. 70/12/31 (TH) 23:59:59.
// @description:mr         हे असे दिसते. 70/12/31 (व्या) 23:59:59.
// @description:ms         Nampaknya ini. 70/12/31 (Th) 23:59:59.
// @description:mt         Jidher bħal dan. 70/12/31 (Th) 23:59:59.
// @description:my         ဒါနဲ့တူတယ် 70/12/31 (ကြိမ်မြောက်) 23:59:59 ။
// @description:nb         Det ser slik ut. 70/12/31 (TH) 23:59:59.
// @description:ne         यो यस्तो देखिन्छ। 70/12/31 (th) 23 :: 59:59।
// @description:nl         Het ziet er zo uit. 70/12/31 (TH) 23:59:59.
// @description:nr         Bazama ukududuza. ( 1 10:10 ) U-Israyeli u-10:1.
// @description:ny         Zikuwoneka ngati izi. 70/12/31 (th) 23:59:59.
// @description:oc         Sembla aquò. 70/12/31(La) 23:59:59.
// @description:om         Akkas fakkaata. 70/12/31(th) 23:59:59.
// @description:or         ଏହା ଏହିପରି ଦେଖାଯାଏ | 70/12/31 (ଥ) 23:59।
// @description:os         Афтæ зыны ахæм. 70/12/31(Th) 23:59:59.
// @description:pa         ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਲੱਗਦਾ ਹੈ. 70/12/31 (ਧੂਹ) 23:59:59.
// @description:pl         Wygląda na to. 70/12/31 (th) 23:59:59.
// @description:ps         دا ورته ښکاري. 70/12/31 (TH) 23:59:59.
// @description:pt         Parece isso. 70/12/31 (TH) 23:59:59.
// @description:pt-BR      Parece isso. 70/12/31 (TH) 23:59:59.
// @description:pt-PT      Parece isso. 70/12/31 (TH) 23:59:59.
// @description:qu         Kaymanmi rikchakun. 70/12/31(H) 23:59:59.
// @description:rn         Bimeze gutya. 70/12/31(Th) 23:59:59.
// @description:ro         Pare așa. 70/12/31 (TH) 23:59:59.
// @description:ru         Похоже, это. 70/12/31 (TH) 23:59:59.
// @description:rw         Birasa nkibi. 70/12/31 (TH) 23:59:59.
// @description:sa         एवं दृश्यते। 70/12/31(थ) 23:59:59।
// @description:sd         اهو ڏسجي ٿو. 70/12/31 (ٿ) 23:59:59.
// @description:se         Dat lea ná. 70/12/31(Th) 23:59:59.
// @description:sg         A yeke mo bâ mo tene a yeke tongaso. 70/12/12 (Th) 23:59:59.
// @description:sh         Изгледа овако. 70/12/31 (ТХ) 23:59:59.
// @description:si         ඒක මේ වගේ. 70/12/31 (TH) 23:59:59.
// @description:sk         Vyzerá to takto. 70/12/31 (Th) 23:59:59.
// @description:sl         Videti je tako. 70/12/31 (TH) 23:59:59.
// @description:sm         E pei o lenei. 70/12/31 (th) 23:59:59.
// @description:sn         Zvinotaridzika seizvi. 70/12/31 (th) 23:59:59.
// @description:so         Waxay u egtahay sidan oo kale. 70/12/31 (th) 23:59:59.
// @description:sq         Duket kështu. 70/12/31 (TH) 23:59:59.
// @description:sr         Изгледа овако. 70/12/31 (ТХ) 23:59:59.
// @description:ss         Kubukeka kanje. 70/12/31(Th) 23:59:59.
// @description:st         E shebahala tjena. 70/12/31 (th) 23:59:59.
// @description:su         Sigana mah ieu. 70/12/31 (th) 23:59:59.
// @description:sv         Det ser ut så här. 70/12/31 (Th) 23:59:59.
// @description:sw         Inaonekana kama hii. 70/12/31 (TH) 23:59:59.
// @description:ta         இது போல் தெரிகிறது. 70/12/31 (வது) 23:59:59.
// @description:te         ఇది ఇలా ఉంది. 70/12/31 (వ) 23:59:59.
// @description:tg         Чунин ба назар мерасад. 70/12/31 (TH) 23:59:59.
// @description:th         ดูเหมือนว่า 70/12/31 (Th) 23:59:59
// @description:ti         ከምዚ ይመስል። 70/12/31(th) 23:59:59።
// @description:tk         Şuňa meňzeýär. 70/12/3/31 (tra) 23:59:59.
// @description:tl         Mukhang ganito. 70/12/31 (TH) 23:59:59.
// @description:tn         Go lebega jaana. 70/12/31(Th) 23:59:59.
// @description:to         ʻOku hangē ʻení. 70/12/31(T) 23:59:59.
// @description:tr         Öyle görünüyor. 70/12/31 (TH) 23:59:59.
// @description:ts         Swi languteka hi ndlela leyi. 70/12/31(TH) 23:59:59.
// @description:tt         Бу шундый. 70/12/31 (th) 23:59:59.
// @description:tw         Ɛte sɛ eyi. 70/12/31(th) 23:59:59.
// @description:ty         E au te reira i te reira. 70/12/31(Th) 23:59:59.
// @description:ug         ئۇ ئوخشايدۇ. 70/12/31 (th) 23:59:59.
// @description:uk         Це виглядає так. 70/12/31 (Th) 23:59:59.
// @description:ur         ایسا لگتا ہے۔ 70/12/31 (ویں) 23:59:59۔
// @description:uz         Bu shunday ko’rinadi. 70/12/31 (Th) 23:59:59.
// @description:ve         Zwi vhonala zwo ralo. 70/12/31(Th) 23:59:59.
// @description:vi         Nó trông như thế này. 70/12/31 (th) 23:59:59.
// @description:wo         Dafa mel nii. 70/12/31(Th) 23:59:59.
// @description:xh         Ijongeka ngoluhlobo. 70/12/31 (th) 23:59:59.
// @description:yi         עס קוקט ווי דאָס. 70/12/31 (טה) 23:59:59.
// @description:yo         O dabi eyi. 70/12/31 (TH) 23:59:59.
// @description:zh         看起来是这样的。70/12/31(Th) 23:59:59.
// @description:zh-CN      看起来是这样的。70/12/31(Th) 23:59:59.
// @description:zh-HK      看起來是這樣的。 70/12/31(Th) 23:59:59.
// @description:zh-MO      看起來是這樣的。 70/12/31(Th) 23:59:59.
// @description:zh-MY      看起来是这样的。70/12/31(Th) 23:59:59.
// @description:zh-SG      看起来是这样的。70/12/31(Th) 23:59:59.
// @description:zh-TW      看起來是這樣的。 70/12/31(Th) 23:59:59.
// @description:zu         Kubukeka kanjena. 70/12/31 (th) 23:59:59.
// @author                 AeamaN
// @namespace              https://github.com/ChinaGodMan/UserScripts
// @supportURL             https://github.com/ChinaGodMan/UserScripts/issues
// @homepageURL            https://github.com/ChinaGodMan/UserScripts
// @homepage               https://github.com/ChinaGodMan/UserScripts
// @license                MIT
// @match                  https://twitter.com/*
// @match                  https://mobile.twitter.com/*
// @match                  https://mobile.twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion/*
// @match                  https://x.com/*
// @match                  https://mobile.x.com/*
// @require                https://update.greasyfork.org/scripts/538254/1601105/PNG.js
// @grant                  GM_getValue
// @grant                  GM_registerMenuCommand
// @grant                  GM_setValue
// @run-at                 document-body
// @icon                   https://raw.githubusercontent.com/ChinaGodMan/UserScriptsHistory/main/scriptsIcon/x.svg
// @compatible             chrome
// @compatible             firefox
// @compatible             edge
// @compatible             opera
// @compatible             safari
// @compatible             kiwi
// @compatible             qq
// @compatible             via
// @compatible             brave
// @version                2025.6.4.1
// ==/UserScript==

// And more. See Default valuse below.
// It's based on "https://qiita.com/libraplanet/items/0bdd7ef1a13e7af8f48f".
//
// 他にも機能があります。以下の Default valuse を確認して下さい。
// "https://qiita.com/libraplanet/items/0bdd7ef1a13e7af8f48f" を参考にしています。
(function () { /* START */

    'use strict'

    // //////////// Settings //////////// //
    // No GUI Settings
    // Default values are used
    const NOGUI = false
    // ////////////////////////////////// //

    // ///////// Default valuse ///////// //
    // Blue bird returns
    const BBR = false

    // Replace with orig images(wasted traffic occurs)
    const ORIGI = false

    // Slightly wider TL
    const WTL = false

    // Eye Care Mode at default background
    const ECMODE = true

    // Hide promotions
    const HPP = true

    // Hide Who to follow
    const HWTF = true

    // Hide DM drawer
    const HDMD = true

    // Hide Get Verified
    const HGV = true

    // Fine engagement
    // 1. Live
    // 2. Normal
    // 0. Do nothing
    const FEGM = 0

    // Fix videos quality
    // 1. Maximum
    // 2. Minimum
    // 0. Do nothing
    const FVQ = 1

    // Date formats
    //  1. 31.12.70 23:59
    //  2. 31.12.70 23:59:59
    //  3. 31.12.70(Th) 23:59
    //  4. 31.12.70(Th) 23:59:59
    //
    //  5. 70/12/31 23:59
    //  6. 70/12/31 23:59:59
    //  7. 70/12/31(Th) 23:59
    //  8. 70/12/31(Th) 23:59:59 [ye/mo/da(we) ho:mi:se]
    //
    //  9. 70-12/31 23:59
    // 10. 70-12/31 23:59'59
    // 11. 70-12/31(Th) 23:59
    // 12. 70-12/31(Th) 23:59'59
    //
    // 13. M59-12-31 23:59
    // 14. M59-12-31 23:59:59
    // 15. M59-12-31(Th) 23:59
    // 16. M59-12-31(Th) 23:59:59
    //
    //  0. Do nothing
    const FMT = 7

    // Loop interval(ms)
    const INTL = 800
    // ////////////////////////////////// //

    const MYNAME = 'sdnt1200'
    const LANG = document.documentElement.getAttribute('lang')

    let time_r = Date.now()
    let s_mutations = true
    let observer = new MutationObserver(function (mutations) {
        s_mutations = mutations
    })
    let originalXHROPEN
    let bbr, origi, wtl, ecmode, hpp, hwtf, hdmd, hgv, fegm, fvq, fmt, intl

    function makeDialog() {
        let dalg = document.createElement('div')

        dalg.className = 'us-' + MYNAME

        dalg.style.all = 'initial'
        dalg.style.backgroundColor = 'rgb(235, 235, 235)'
        dalg.style.border = '3px outset'
        dalg.style.borderRadius = '1%'
        dalg.style.display = 'none'
        dalg.style.fontFamily = 'monospace'
        dalg.style.fontSize = '12px'
        dalg.style.height = '440px'
        dalg.style.width = '480px'
        dalg.style.paddingLeft = '2px'
        dalg.style.paddingRight = '2px'
        dalg.style.position = 'fixed'
        dalg.style.right = '8px'
        dalg.style.top = '8px'
        dalg.style.zIndex = '2147483647'
        dalg.style.overflow = 'auto'

        let html =
            '<span style="all: initial; font-size: 120%; line-height: 210%">' +
            GM_info.script.name + ' ' + GM_info.script.version + ' ' + 'Settings' +
            '</span><br />\n' +

            '<input type="radio" name="fmt" value="1" class="top_r" />31.12.70 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '&nbsp;' +
            '<input type="radio" name="fmt" value="2" class="top_r" />31.12.70 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="3" class="mid_r" />31.12.70(Th) 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="4" class="mid_r" />31.12.70(Th) 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="5" class="mid_r" />70/12/31 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="6" class="mid_r" />70/12/31 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="7" class="mid_r" />70/12/31(Th) 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="8" class="mid_r" />70/12/31(Th) 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="9" class="mid_r" />70-12/31 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="10" class="mid_r" />70-12/31 23:59\'59<br />\n' +
            '<input type="radio" name="fmt" value="11" class="mid_r" />70-12/31(Th) 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="12" class="mid_r" />70-12/31(Th) 23:59\'59<br />\n' +
            '<input type="radio" name="fmt" value="13" class="mid_r" />M59-12-31 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="14" class="mid_r" />M59-12-31 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="15" class="mid_r" />M59-12-31(Th) 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="16" class="mid_r" />M59-12-31(Th) 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="0" class="btm_r" />Do nothing<br />\n' +

            '<input type="checkbox" name="bbr" class="top_c" />BB returns' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="checkbox" name="origi" class="mid_c" />Replace with orig images*<br />\n' +
            '<input type="checkbox" name="wtl" class="mid_c" />Widen slightly TL' +
            '&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="checkbox" name="ecmode" class="btm_c" />Eye Care Mode at default BG<br />\n' +
            '<input type="checkbox" name="hpp" class="top_c" />Hide promotions' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="checkbox" name="hwtf" class="mid_c" />Hide Who to follow<br />\n' +
            '<input type="checkbox" name="hdmd" class="mid_c" />Hide DM drawer' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="checkbox" name="hgv" class="btm_c" />Hide Get Verified<br />\n' +

            '<input type="radio" name="fegm" value="1" class="top_r" />Fine engagement(live)' +
            '&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fegm" value="2" class="top_r" />Fine engagement(normal)<br />\n' +
            '<input type="radio" name="fegm" value="0" class="btm_r" />Do nothing<br />\n' +

            '<input type="radio" name="fvq" value="1" class="top_r" />at maximum video quality**' +
            '&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fvq" value="2" class="top_r" />at minimum video quality<br />\n' +
            '<input type="radio" name="fvq" value="0" class="btm_r" />Do nothing<br />\n' +

            '<span style="all: initial; font-size: 100%">' +
            'Loop interval(ms)**&nbsp;' +
            '</span><input type="text" name="intl" size="10" class="top_t" /><br />\n' +

            '<span style="all: initial; font-size: 100%; line-height: 200%">' +
            '*wasted traffic occurs&nbsp;&nbsp;&nbsp;&nbsp;**Restart required' +
            '</span><br />\n' +

            '<input type="button" class="top_b" value="Cancel" />\n' +
            '<input type="button" class="top_b" value="Set default" />\n' +
            '<input type="button" class="top_b" value="Save & Close" /><br /><br />\n'

        dalg.innerHTML = html

        for (let e of dalg.querySelectorAll('input.top_r, input.mid_r, input.btm_r')) {
            e.style.all = 'initial'
            e.style.appearance = 'auto'
            e.style.marginRight = '1px'
            e.style.marginTop = '1px'
        }
        for (let e of dalg.querySelectorAll('input.top_c, input.mid_c, input.btm_c')) {
            e.style.all = 'initial'
            e.style.appearance = 'auto'
            e.style.marginRight = '1px'
            e.style.marginTop = '1px'
        }
        for (let e of dalg.querySelectorAll('input.top_t')) {
            e.style.all = 'initial'
            e.style.backgroundColor = 'rgb(255, 255, 255)'
            e.style.fontFamily = 'monospace'
            e.style.fontSize = '100%'
            e.style.marginLeft = '1px'
            e.style.marginRight = '1px'
            e.style.marginTop = '8px'
            e.style.marginBottom = '0px'
            e.style.paddingLeft = '1px'
            e.style.paddingRight = '1px'
            e.style.paddingTop = '1px'
            e.style.paddingBottom = '1px'
        }
        for (let e of dalg.querySelectorAll('input.top_b')) {
            e.style.all = 'initial'
            e.style.backgroundColor = 'rgb(190, 190, 190)'
            e.style.borderRadius = '10%'
            e.style.cursor = 'default'
            e.style.fontSize = '110%'
            e.style.marginTop = '10px'
            e.style.marginBottom = '0px'
            e.style.paddingTop = '6px'
            e.style.paddingBottom = '6px'
            e.style.textAlign = 'center'
            e.style.width = '90px'
        }

        return dalg
    }

    function makeFunc(dalg) {
        dalg.addEventListener(
            'click',
            function (event) { event.stopPropagation() },
            false
        )

        dalg.querySelector('input[value="Cancel"]').addEventListener(
            'click',
            function () { dalg.style.display = 'none' },
            false
        )
        dalg.querySelector('input[value="Cancel"]').addEventListener(
            'mouseenter',
            function (event) { event.target.style.backgroundColor = 'rgb(170, 170, 170)' },
            false
        )
        dalg.querySelector('input[value="Cancel"]').addEventListener(
            'mouseleave',
            function (event) { event.target.style.backgroundColor = 'rgb(190, 190, 190)' },
            false
        )

        dalg.querySelector('input[value="Set default"]').addEventListener(
            'click',
            function () {
                dalg.querySelector('input[name="bbr"]').checked = BBR
                dalg.querySelector('input[name="origi"]').checked = ORIGI
                dalg.querySelector('input[name="fmt"][value="' + FMT + '"]').checked = true
                dalg.querySelector('input[name="wtl"]').checked = WTL
                dalg.querySelector('input[name="ecmode"]').checked = ECMODE
                dalg.querySelector('input[name="hpp"]').checked = HPP
                dalg.querySelector('input[name="hwtf"]').checked = HWTF
                dalg.querySelector('input[name="hdmd"]').checked = HDMD
                dalg.querySelector('input[name="hgv"]').checked = HGV
                dalg.querySelector('input[name="fegm"][value="' + FEGM + '"]').checked = true
                dalg.querySelector('input[name="fvq"][value="' + FVQ + '"]').checked = true
                dalg.querySelector('input[name="intl"]').value = INTL
            },
            false
        )
        dalg.querySelector('input[value="Set default"]').addEventListener(
            'mouseenter',
            function (event) { event.target.style.backgroundColor = 'rgb(170, 170, 170)' },
            false
        )
        dalg.querySelector('input[value="Set default"]').addEventListener(
            'mouseleave',
            function (event) { event.target.style.backgroundColor = 'rgb(190, 190, 190)' },
            false
        )

        dalg.querySelector('input[value="Save & Close"]').addEventListener(
            'click',
            function () {
                bbr = dalg.querySelector('input[name="bbr"]').checked
                origi = dalg.querySelector('input[name="origi"]').checked
                for (let e of dalg.querySelectorAll('input[name="fmt"]')) {
                    if (e.checked) {
                        fmt = +e.value
                        break
                    }
                }
                wtl = dalg.querySelector('input[name="wtl"]').checked
                ecmode = dalg.querySelector('input[name="ecmode"]').checked
                hpp = dalg.querySelector('input[name="hpp"]').checked
                hwtf = dalg.querySelector('input[name="hwtf"]').checked
                hdmd = dalg.querySelector('input[name="hdmd"]').checked
                hgv = dalg.querySelector('input[name="hgv"]').checked
                for (let e of dalg.querySelectorAll('input[name="fegm"]')) {
                    if (e.checked) {
                        fegm = +e.value
                        break
                    }
                }
                for (let e of dalg.querySelectorAll('input[name="fvq"]')) {
                    if (e.checked) {
                        fvq = +e.value
                        break
                    }
                }
                intl = +dalg.querySelector('input[name="intl"]').value

                GM_setValue('bbr', bbr)
                GM_setValue('origi', origi)
                GM_setValue('fmt', fmt)
                GM_setValue('wtl', wtl)
                GM_setValue('ecmode', ecmode)
                GM_setValue('hpp', hpp)
                GM_setValue('hwtf', hwtf)
                GM_setValue('hdmd', hdmd)
                GM_setValue('hgv', hgv)
                GM_setValue('fegm', fegm)
                GM_setValue('fvq', fvq)
                GM_setValue('intl', intl)

                dalg.style.display = 'none'
            },
            false
        )
        dalg.querySelector('input[value="Save & Close"]').addEventListener(
            'mouseenter',
            function (event) { event.target.style.backgroundColor = 'rgb(170, 170, 170)' },
            false
        )
        dalg.querySelector('input[value="Save & Close"]').addEventListener(
            'mouseleave',
            function (event) { event.target.style.backgroundColor = 'rgb(190, 190, 190)' },
            false
        )
    }

    function initgui() {
        if (GM_getValue('bbr') === undefined) {
            GM_setValue('bbr', BBR)
        } else {
            bbr = GM_getValue('bbr')
        }
        if (GM_getValue('origi') === undefined) {
            GM_setValue('origi', ORIGI)
        } else {
            origi = GM_getValue('origi')
        }
        if (GM_getValue('fmt') === undefined) {
            GM_setValue('fmt', FMT)
        } else {
            fmt = GM_getValue('fmt')
        }
        if (GM_getValue('wtl') === undefined) {
            GM_setValue('wtl', WTL)
        } else {
            wtl = GM_getValue('wtl')
        }
        if (GM_getValue('ecmode') === undefined) {
            GM_setValue('ecmode', ECMODE)
        } else {
            ecmode = GM_getValue('ecmode')
        }
        if (GM_getValue('hpp') === undefined) {
            GM_setValue('hpp', HPP)
        } else {
            hpp = GM_getValue('hpp')
        }
        if (GM_getValue('hwtf') === undefined) {
            GM_setValue('hwtf', HWTF)
        } else {
            hwtf = GM_getValue('hwtf')
        }
        if (GM_getValue('hdmd') === undefined) {
            GM_setValue('hdmd', HDMD)
        } else {
            hdmd = GM_getValue('hdmd')
        }
        if (GM_getValue('hgv') === undefined) {
            GM_setValue('hgv', HGV)
        } else {
            hgv = GM_getValue('hgv')
        }
        if (GM_getValue('fegm') === undefined) {
            GM_setValue('fegm', FEGM)
        } else {
            fegm = GM_getValue('fegm')
        }
        if (GM_getValue('fvq') === undefined) {
            GM_setValue('fvq', FVQ)
        } else {
            fvq = GM_getValue('fvq')
        }
        if (GM_getValue('intl') === undefined) {
            GM_setValue('intl', INTL)
        } else {
            intl = GM_getValue('intl')
        }

        let dalg = makeDialog()
        makeFunc(dalg)
        document.body.appendChild(dalg)

        GM_registerMenuCommand('Settings', function () {
            if (dalg.style.display == 'none') {
                dalg.querySelector('input[name="bbr"]').checked = bbr
                dalg.querySelector('input[name="origi"]').checked = origi
                dalg.querySelector('input[name="fmt"][value="' + fmt + '"]').checked = true
                dalg.querySelector('input[name="wtl"]').checked = wtl
                dalg.querySelector('input[name="ecmode"]').checked = ecmode
                dalg.querySelector('input[name="hpp"]').checked = hpp
                dalg.querySelector('input[name="hwtf"]').checked = hwtf
                dalg.querySelector('input[name="hdmd"]').checked = hdmd
                dalg.querySelector('input[name="hgv"]').checked = hgv
                dalg.querySelector('input[name="fegm"][value="' + fegm + '"]').checked = true
                dalg.querySelector('input[name="fvq"][value="' + fvq + '"]').checked = true
                dalg.querySelector('input[name="intl"]').value = intl

                dalg.style.display = 'block'
            }
        })
    }

    function datef(date, f) {
        const WEEK = {
            'ja': ['日', '月', '火', '水', '木', '金', '土'],
            'ko': ['일', '월', '화', '수', '목', '금', '토'],
            'zh-Hant': ['日', '一', '二', '三', '四', '五', '六'],
            'zh': ['日', '一', '二', '三', '四', '五', '六'],
            'ru': ['ВС', 'ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ'],
            'de': ['Son', 'Mon', 'Die', 'Mit', 'Don', 'Fre', 'Sam'],
            'it': ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],
            'fr': ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
            'pt': ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],
            'en': ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] // Add your language
        }
        const WEEK_L = WEEK[LANG] ?? WEEK['en']

        const YE = date.getFullYear().toString().slice(-2)
        const YM = date.getFullYear() - 1911
        const MO = ('0' + (date.getMonth() + 1)).slice(-2)
        const DA = ('0' + date.getDate()).slice(-2)
        const WE = WEEK_L[date.getDay()]
        const HO = ('0' + date.getHours()).slice(-2)
        const MI = ('0' + date.getMinutes()).slice(-2)
        const SE = ('0' + date.getSeconds()).slice(-2)

        const F = [
            DA + '.' + MO + '.' + YE + ' ' + HO + ':' + MI, // 0=1
            DA + '.' + MO + '.' + YE + ' ' + HO + ':' + MI + ':' + SE,
            DA + '.' + MO + '.' + YE + '(' + WE + ') ' + HO + ':' + MI,
            DA + '.' + MO + '.' + YE + '(' + WE + ') ' + HO + ':' + MI + ':' + SE,
            YE + '/' + MO + '/' + DA + ' ' + HO + ':' + MI,
            YE + '/' + MO + '/' + DA + ' ' + HO + ':' + MI + ':' + SE,
            YE + '/' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI,
            YE + '/' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI + ':' + SE,
            YE + '-' + MO + '/' + DA + ' ' + HO + ':' + MI,
            YE + '-' + MO + '/' + DA + ' ' + HO + ':' + MI + '\'' + SE,
            YE + '-' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI,
            YE + '-' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI + '\'' + SE,
            'M' + YM + '-' + MO + '-' + DA + ' ' + HO + ':' + MI,
            'M' + YM + '-' + MO + '-' + DA + ' ' + HO + ':' + MI + ':' + SE,
            'M' + YM + '-' + MO + '-' + DA + '(' + WE + ') ' + HO + ':' + MI,
            'M' + YM + '-' + MO + '-' + DA + '(' + WE + ') ' + HO + ':' + MI + ':' + SE,
            YE + '/' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI + ':' + SE
        ]

        return F[f - 1] ?? F[16]
    }

    function bbreturn() {
        const SEL_ID =
            'div#placeholder[aria-label="Loading…"] g path, ' +
            'svg#loading-x-anim-0 g path, svg#loading-x-anim-1 g path, ' +
            'svg#loading-x-anim-2 g path, svg#loading-x-anim-3 g path'
        const SEL_H = 'header[role="banner"] h1[role="heading"] g path' // ホーム
        const SEL_M = 'div[data-testid="Dropdown"] a[href="/i/premium_sign_up"] g path' // もっと見る
        const SEL_V = 'header[role="banner"] nav g path' // 認証済み
        const SEL_L = 'div[role="dialog"] div[aria-labelledby="modal-header"] svg.r-lrvibr path' // ログイン
        const SEL_T = 'div#react-root main svg.r-lrvibr path' // トップ

        let elms = document.querySelectorAll(
            SEL_ID + ', ' + SEL_H + ', ' + SEL_M + ', ' + SEL_V + ', ' + SEL_L + ', ' + SEL_T
        )
        let ss // Temp.

        for (let e of elms) {
            const D_X = 'M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99'
            const D_BB =
                'M23.643 4.937c-.835.37-1.732.62-2.675.733.962-.576 1.7-1.49 2.048-2.578-.9.534-1' +
                '.897.922-2.958 1.13-.85-.904-2.06-1.47-3.4-1.47-2.572 0-4.658 2.086-4.658 4.66 0' +
                ' .364.042.718.12 1.06-3.873-.195-7.304-2.05-9.602-4.868-.4.69-.63 1.49-.63 2.342' +
                ' 0 1.616.823 3.043 2.072 3.878-.764-.025-1.482-.234-2.11-.583v.06c0 2.257 1.605 ' +
                '4.14 3.737 4.568-.392.106-.803.162-1.227.162-.3 0-.593-.028-.877-.082.593 1.85 2' +
                '.313 3.198 4.352 3.234-1.595 1.25-3.604 1.995-5.786 1.995-.376 0-.747-.022-1.112' +
                '-.065 2.062 1.323 4.51 2.093 7.14 2.093 8.57 0 13.255-7.098 13.255-13.254 0-.2-.' +
                '005-.402-.014-.602.91-.658 1.7-1.477 2.323-2.41z'
            const D_FILL_N = 'none'
            const D_FILL_LB = '#1da1f2ff'
            const D_FILL_DB = '#1d9bf0ff'
            const D_S = 'currentColor'
            const D_SW = '2'

            if (e.getAttribute('d').startsWith(D_X)) {
                if (e.closest('header[role="banner"] nav, div[data-testid="Dropdown"] a[href="/i/premium_sign_up"]')) {
                    ss = s_mutations

                    e.setAttribute('d', D_BB)
                    e.setAttribute('fill', D_FILL_N)
                    e.setAttribute('stroke', D_S)
                    e.setAttribute('stroke-width', D_SW)

                    s_mutations = ss
                } else if (e.closest('div#placeholder[aria-label="Loading…"]') ||
                    e.closest('svg[id^="loading-x-anim-"]')) {
                    ss = s_mutations

                    e.setAttribute('d', D_BB)
                    e.setAttribute('fill', D_FILL_LB)

                    s_mutations = ss
                } else {
                    ss = s_mutations

                    e.setAttribute('d', D_BB)
                    e.setAttribute('fill', D_FILL_DB)

                    s_mutations = ss
                }
            }
        }

        const TITLE = document.title
        let elm = document.querySelector('head link[rel="shortcut icon"]')
        let elm_2 = document.querySelector('head link[rel="apple-touch-icon"]')

        ss = s_mutations

        if (
            elm &&
            !/favicons\/twitter\.2\.ico$/.test(elm.getAttribute('href')) &&
            !/^\(\d+\) /.test(document.title)
        ) {
            elm.setAttribute('href', '//abs.twimg.com/favicons/twitter.2.ico')
        } else if (
            elm &&
            !/favicons\/twitter-pip\.2\.ico$/.test(elm.getAttribute('href')) &&
            /^\(\d+\) /.test(document.title)
        ) {
            elm.setAttribute('href', '//abs.twimg.com/favicons/twitter-pip.2.ico')
        }
        if (
            elm_2 &&
            /responsive-web\/client-web[-a-z]*\/icon-ios\.77d25eba\.png$/.test(elm_2.getAttribute('href'))
        ) {
            elm_2.setAttribute('href', 'data:image/png;base64,' + PNG_BB)
            alert('afaf')
        }
        let rt = TITLE.replace(/ \/ X$/, ' / Twitter')
        if (TITLE != rt) document.title = rt

        s_mutations = ss
    }

    function origimg() {
        const SEL_D = 'div[style*="background-image:"]'
        const SEL_I = 'img'

        let elms = document.querySelectorAll(SEL_D + ', ' + SEL_I)

        for (let e of elms) {
            let regex = /^(.+pbs\.twimg\.com\/[^?]+\?format=\w+)(&|&amp;)(name=)(\w+)([")]*)$/
            let ss // Temp.

            if (/div/i.test(e.tagName)) {
                let r = regex.exec(e.style.backgroundImage)
                if (r && r[4] != 'orig') {
                    ss = s_mutations
                    e.style.backgroundImage = r[1] + r[2] + r[3] + 'orig' + r[5]
                    s_mutations = ss
                    continue
                }

                continue
            }

            let r = regex.exec(e.getAttribute('src'))
            if (r && r[4] != 'orig') {
                ss = s_mutations
                e.setAttribute('src', r[1] + r[2] + r[3] + 'orig' + r[5])
                s_mutations = ss
                continue
            }
        }
    }

    function widetl() {
        let elms = document.querySelectorAll('div.css-175oi2r.r-aqfbo4[data-testid="sidebarColumn"]')
        let ss // Temp.

        if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 'c')) {
            let style_a = document.createElement('style')
            style_a.className = 'us-' + MYNAME + '-' + 'a'
            style_a.textContent =
                'div.css-175oi2r.r-f8sm7e.r-13qz1uu.r-1ye8kvj' +
                '{max-width: 660px;}'

            let style_b = document.createElement('style')
            style_b.className = 'us-' + MYNAME + '-' + 'b'
            style_b.textContent =
                'div[role="dialog"] div.css-175oi2r.r-f8sm7e.r-13qz1uu.r-1ye8kvj' +
                '{max-width: 600px;}'

            let style_c = document.createElement('style')
            style_c.className = 'us-' + MYNAME + '-' + 'c'
            style_c.textContent =
                'section div.css-175oi2r.r-f8sm7e.r-13qz1uu.r-1ye8kvj' +
                '{max-width: 600px;}'

            ss = s_mutations

            document.head.appendChild(style_a)
            document.head.appendChild(style_b)
            document.head.appendChild(style_c)

            s_mutations = ss
        }

        for (let e of elms) {
            let d, dd, dg, dgi, spdgi, da, ds

            d = e.querySelector(':scope>div>div.r-1hycxz', ':scope>div>div.r-1jocfgc')
            if (d != null) {
                dd = d.querySelector('div.r-aqfbo4.r-6gpygo.r-15ysp7h') // null対策
                dg = d.querySelector('div[data-testid="google_sign_in_container"]')
                dgi = d.querySelector('div[data-testid="google_sign_in_container"] iframe[id^="gsi"]')
                da = d.querySelector('button[data-testid="apple_sign_in_button"]')
                ds = d.querySelector('a[href="/i/flow/signup"]')
            }
            if (dgi) spdgi = dgi.parentNode.parentNode

            ss = s_mutations

            if (dd) dd.style.width = '290px'
            if (dg) dg.style.width = '260px'
            if (dgi) dgi.style.left = '-20px'
            if (spdgi) spdgi.style.setProperty('clip-path', 'inset(0 round 20px)')
            if (da) da.style.width = '260px'
            if (ds) ds.style.width = '260px'
            if (d != null) d.style.width = '290px'
            e.style.width = '290px' // 350px

            s_mutations = ss
        }
    }

    function chgbgc() {
        let body = document.getElementsByTagName('body')[0]

        if (/\(2\d{2},\s*2\d{2},\s*2\d{2}/i.test(body.style.backgroundColor)) {
            let tl, fb, sb
            tl = document.querySelector('main div.r-f8sm7e.r-1ye8kvj')
            fb = document.querySelector('main div.r-1e5uvyk.r-6026j')
            sb = document.querySelector('main div.r-aqfbo4.r-15ysp7h.r-1xcajam')

            let ss = s_mutations

            body.style.backgroundColor = 'rgb(253, 253, 245)'
            if (tl != null) tl.style.backgroundColor = 'rgb(253, 253, 245)'
            if (fb != null) fb.style.backgroundColor = 'rgba(253, 253, 245, 0.85)'
            if (sb != null) sb.style.backgroundColor = 'rgb(253, 253, 245)'

            s_mutations = ss
        }
    }

    function hidepromo() {
        const SEL = 'path[d^="M19.498 3h-15c-1.381 0-2.5 1.12-2.5 2.5v13c0 1.38 1.119 2.5"]'
        const SEL_2 = 'main div[data-testid="sidebarColumn"] section div[data-testid="trend"] div.r-14gqq1x ' +
            'span.css-1qaijid.r-bcqeeo.r-qvutc0' // def-ja, def-en, ble-ja, ble-en
        const SEL_3 = 'main div[data-testid="primaryColumn"] section article ' +
            'span.css-1jxf684.r-bcqeeo.r-qvutc0.r-poiln3'
        const SEL_4 =
            'main div[data-testid="primaryColumn"] section ' +
            'span.css-901oao.css-16my406.r-bcqeeo.r-qvutc0'
        // Lone label def-ja, def-en, ble-ja, ble-en
        let elms = document.querySelectorAll(SEL)
        let elms_2 = document.querySelectorAll(SEL_2)
        let elms_3 = document.querySelectorAll(SEL_3)
        let elms_4 = document.querySelectorAll(SEL_4)

        const PROMO = {
            'ja': 'によるプロモーション$',
            'ko': ' 님이 프로모션함$',
            'zh-Hant': '^由 .+ 推廣$',
            'zh': '^由 .+ 推广$',
            'ru': '^Реклама от ',
            'de': '^Gesponsert von ',
            'it': '^Sponsorizzato da ',
            'fr': '^Sponsorisé par ',
            'pt': '^Promovido por ',
            'en': '^Promoted by ' // Add your language
        }
        const PROMO_L = PROMO[LANG] ?? PROMO['en']

        const PROMO_2 = {
            'ja': 'プロモポスト',
            'ko': 'Promoted Post',
            'zh-Hant': '推廣貼文',
            'zh': 'Promoted Post',
            'ru': 'Promoted Post',
            'de': 'Gesponserter Post',
            'it': 'Promoted Post',
            'fr': 'Promoted Post',
            'pt': 'Post promovido',
            'en': 'Promoted Post' // Add your language
        }
        const PROMO_L_2 = PROMO_2[LANG] ?? PROMO_2['en']

        let ss // Temp.

        for (let e of elms) {
            let xpe = e.closest('div[data-testid="cellInnerDiv"]')
            if (!xpe) xpe = e.closest('div.css-175oi2r.r-1adg3ll.r-1ny4l3l') // def-ja, def-en, ble-ja, ble-en
            if (!xpe) xpe = e.closest('div.css-175oi2r.r-1ny4l3l[data-testid="UserCell"]') // def-ja, def-en, ?, ble-en

            ss = s_mutations

            if (xpe) xpe.style.setProperty('display', 'none') // Right column のおすすめユーザー'

            s_mutations = ss
        }

        for (let e of elms_2) {
            const REGEX = new RegExp(PROMO_L, 'i')

            if (!REGEX.test(e.textContent)) continue

            let xpe = e.closest('div.css-175oi2r.r-1adg3ll.r-1ny4l3l')

            ss = s_mutations

            xpe.style.setProperty('display', 'none')

            s_mutations = ss
        }

        for (let e of elms_3) {
            if (e.textContent != 'Ad') continue

            let xpe = e.closest('div[data-testid="cellInnerDiv"]')

            ss = s_mutations

            xpe.style.setProperty('display', 'none')

            s_mutations = ss
        }

        for (let e of elms_4) {
            if (e.textContent != PROMO_2['en'] && e.textContent != PROMO_L_2) continue

            let xpe = e.closest('div[data-testid="cellInnerDiv"]')

            ss = s_mutations

            xpe.style.setProperty('display', 'none')

            s_mutations = ss
        }
    }

    function hidewtf() {
        let ss // Temp.

        let r =
            '^[^:]+://[^/]+/$|' +

            '^[^:]+://[^/]+/(' +
            'compose|' + // pop up
            'search-advanced|' + // pop up
            'home|' + // 除外?
            'search|' +

            'i/display|' + // pop up
            'i/flow|' + // pop up
            'i/keyboard_shortcuts|' + // pop up
            'i/verified-orgs-signup|' + // pop up、追加
            'i/verified-choose|' + // pop up、追加
            'i/premium_sign_up|' + // pop up、追加
            'i/connect_people|' +
            'i/topics|' +
            'i/spaces/start|' + // pop up、追加
            'i/verified-application|' + // pop up、追加
            'i/verified-get-verified|' + // pop up、追加

            '[^/]+/followers|' +
            '[^/]+/following|' +
            '[^/]+/lists|' +
            '[^/]+/status/|' + // 両方、WTFのみ除外
            '[^/]+/topics|' +
            '[^/]+/creator-subscriptions|' + // 追加
            '[^/]+/superfollows|' + // 追加
            '[^/]+/verified_followers' + // 追加
            ')'

        if (new RegExp(r, 'i').test(document.URL)) {
            for (let i = 1; i < 4; i++) {
                let e = document.querySelector('head style.' + 'us-' + MYNAME + '-' + i)
                if (e) document.head.removeChild(e)
            }

            return
        }

        if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 1)) {
            ss = s_mutations

            let style = document.createElement('style')
            style.className = 'us-' + MYNAME + '-' + 1
            style.textContent =
                'main div[data-testid="primaryColumn"] section div[data-testid="cellInnerDiv"]' +
                ':has(button.css-175oi2r.r-1mmae3n.r-3pj75a.r-1ny4l3l.r-o7ynqc.r-6416eg[data-testid="UserCell"]) ' +
                '{display: none;}'
            // フォロー, def-ja, def-en, ble-ja, ble-en
            document.head.appendChild(style)

            s_mutations = ss
        }

        if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 2)) {
            ss = s_mutations

            let style = document.createElement('style')
            style.className = 'us-' + MYNAME + '-' + 2
            style.textContent =
                'main div[data-testid="primaryColumn"] section div[data-testid="cellInnerDiv"]' +
                ':has(h2[aria-level="2"][role="heading"]>div>span.css-1jxf684.r-bcqeeo.r-qvutc0) {display: none;}'
            // Who to follow, def-ja, def-en, ble-ja, ble-en
            document.head.appendChild(style)

            s_mutations = ss
        }

        if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 3)) {
            ss = s_mutations

            let style = document.createElement('style')
            style.className = 'us-' + MYNAME + '-' + 3
            style.textContent =
                'main div[data-testid="primaryColumn"] section div[data-testid="cellInnerDiv"]' +
                ':has(a[href*="/connect_people?user_id="]) {display: none;}' // さらに表示
            document.head.appendChild(style)

            s_mutations = ss
        }
    }

    function hidedmd() {
        const SEL = 'div[data-testid="DMDrawer"]'
        let elm = document.querySelector(SEL)
        let ss = s_mutations

        if (elm != null) elm.style.setProperty('display', 'none')

        s_mutations = ss
    }

    function hidegv() {
        const SEL = 'aside.css-175oi2r.r-1habvwh.r-eqz5dr.r-uaa2di.r-1mmae3n.r-3pj75a'
        const SEL_2 = 'main section div[data-testid="cellInnerDiv"] h1[role="heading"] span.css-1jxf684.r-bcqeeo.r-qvutc0'
        // def-ja, def-en, ble-ja, ble-en
        let elms = document.querySelectorAll(SEL)
        let elms_2 = document.querySelectorAll(SEL_2)

        const TC = {
            'gv': {
                'ja': '認証を受ける',
                'ko': '인증 받기',
                'zh-Hant': '獲得認證',
                'zh': '获得认证',
                'ru': 'Подтвердить подлинность',
                'de': 'Lass dich verifizieren',
                'it': 'Ottieni la verifica',
                'fr': 'Obtenez la certification',
                'pt': 'Obter verificação',
                'en': 'Get Verified' // Add your language
            },
            'sp': {
                'ja': 'プレミアムにサブスクライブ',
                'ko': 'Subscribe to Premium',
                'zh-Hant': '訂閱 Premium',
                'zh': 'Subscribe to Premium',
                'ru': 'Subscribe to Premium',
                'de': 'Premium abonnieren',
                'it': 'Subscribe to Premium',
                'fr': 'Subscribe to Premium',
                'pt': 'Assine o Premium',
                'en': 'Subscribe to Premium' // Add your language
            },
            'spylp': {
                'ja': '長いポストを作成するには、プレミアムにサブスクライブしてください',
                'ko': 'Premium을 구독하고 나만의 긴 게시물을 작성해 보세요',
                'zh-Hant': '訂閱 Premium 以撰寫你自己的更長貼文',
                'zh': '订阅 Premium,撰写自己的长帖',
                'ru': 'Подпишитесь на Premium, чтобы писать собственные длинные посты',
                'de': 'Abonniere Premium, wenn du deine eigenen längeren Posts schreiben möchtest',
                'it': 'Per scrivere post più lunghi, abbonati a Premium',
                'fr': 'Abonnez-vous à Premium pour écrire vos propres posts plus longs.',
                'pt': 'Assine o Premium para escrever posts mais longos',
                'en': 'Subscribe to Premium to write your own longer posts' // Add your language
            },
            'gafp': {
                'ja': 'プレミアムプラスで広告をなくす',
                'ko': 'Go ad-free with Premium+',
                'zh-Hant': 'Go ad-free with Premium+',
                'zh': 'Go ad-free with Premium+',
                'ru': 'Go ad-free with Premium+',
                'de': 'Go ad-free with Premium+',
                'it': 'Go ad-free with Premium+',
                'fr': 'Go ad-free with Premium+',
                'pt': 'Go ad-free with Premium+',
                'en': 'Go ad-free with Premium+' // Add your language
            },
            'gaf': {
                'ja': '広告をなくす',
                'ko': 'Go ad free',
                'zh-Hant': 'Go ad free',
                'zh': 'Go ad free',
                'ru': 'Go ad free',
                'de': 'Go ad free',
                'it': 'Go ad free',
                'fr': 'Go ad free',
                'pt': 'Go ad free',
                'en': 'Go ad free' // Add your language
            },
            'txp': {
                'ja': 'TweetDeckはX Proになりました',
                'ko': 'TweetDeck is now X Pro',
                'zh-Hant': 'TweetDeck is now X Pro',
                'zh': 'TweetDeck is now X Pro',
                'ru': 'TweetDeck is now X Pro',
                'de': 'TweetDeck is now X Pro',
                'it': 'TweetDeck is now X Pro',
                'fr': 'TweetDeck is now X Pro',
                'pt': 'TweetDeck is now X Pro',
                'en': 'TweetDeck is now X Pro' // Add your language
            }
        }
        const GV_L = TC.gv[LANG] ?? TC.gv['en']
        const SP_L = TC.sp[LANG] ?? TC.sp['en']
        const SPYLP_L = TC.spylp[LANG] ?? TC.spylp['en']
        const GAFP_L = TC.gafp[LANG] ?? TC.gafp['en']
        const GAF_L = TC.gaf[LANG] ?? TC.gaf['en']
        const TXP_L = TC.txp[LANG] ?? TC.txp['en']

        for (let e of elms) {
            if (
                e.getAttribute('aria-label') == GV_L ||
                e.getAttribute('aria-label') == SP_L ||
                e.getAttribute('aria-label') == SPYLP_L ||
                e.getAttribute('aria-label') == GAFP_L
            ) {
                let ss = s_mutations

                e.parentNode.parentNode.style.setProperty('display', 'none')

                s_mutations = ss
            }
        }

        for (let e of elms_2) {
            if (e.textContent == GAF_L || e.textContent == TXP_L) {
                let xpe = e.closest('div[data-testid="cellInnerDiv"]')

                let ss = s_mutations

                xpe.style.setProperty('display', 'none')

                s_mutations = ss
            }
        }
    }

    function fineegm() {
        const SEL_R =
            'main div[data-testid="primaryColumn"] section article ' +
            'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="reply"] ' +
            'div>span[data-testid="app-text-transition-container"]>span' // 一つ上
        const SEL_T =
            'main div[data-testid="primaryColumn"] section article ' +
            'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="retweet"] ' +
            'div>span[data-testid="app-text-transition-container"]>span'
        const SEL_L =
            'main div[data-testid="primaryColumn"] section article ' +
            'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="like"] ' +
            'div>span[data-testid="app-text-transition-container"]>span'
        const SEL_B =
            'main div[data-testid="primaryColumn"] section article ' +
            'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="bookmark"] ' +
            'div>span[data-testid="app-text-transition-container"]>span'

        document.
            querySelectorAll(SEL_R + ', ' + SEL_T + ', ' + SEL_L + ', ' + SEL_B).
            forEach(function (e) {
                const SEL_ADD = 'span.us-' + MYNAME

                let ce = e.querySelector('span:not(.us-' + MYNAME + ')')
                let xpe = e.closest('button')
                let n = +xpe.getAttribute('aria-label').split(' ')[0]
                let ls = ''
                if (n) ls = n.toLocaleString('en-US')

                let old = e.querySelector(SEL_ADD)

                let ss // Temp.

                ss = s_mutations

                if (ce && ce.style.display != 'none') { // 0の時も無い
                    ce.style.setProperty('display', 'none')
                }
                if (!old) {
                    let span = document.createElement('span')
                    span.className = 'us-' + MYNAME
                    span.textContent = ls
                    if (ce) span.style = ce.style

                    e.appendChild(span)
                } else if (old.textContent != ls) {
                    old.textContent = ls
                    if (ce) old.style = ce.style
                }

                s_mutations = ss
            })
    }

    function fineegm_v_d() {
        const SEL =
            'main div[data-testid="primaryColumn"] section article ' +
            'div.css-175oi2r.r-1d09ksm.r-1471scf.r-18u37iz.r-1wbh5a2>' +
            'div>span>div>span[data-testid="app-text-transition-container"]>span>span:not(.us-' + MYNAME + ')'
        // 表示回数は減らない、0の時は無い
        const SEL_2 =
            'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="retweet"] ' +
            'div>span[data-testid="app-text-transition-container"]>span' // 一つ上
        const SEL_ADD = 'span.us-' + MYNAME

        let elm = document.querySelector(SEL)
        if (!elm) return

        let elm_2 = document.querySelector(SEL_2)
        if (!elm_2) return

        let pelm = elm.parentNode
        let xpelm_2 = elm_2.closest('div.r-1kbdv8c[aria-label][role="group"]') // fineegm()のさらに上
        let n = +/(\d+)\D+$/.exec(xpelm_2.getAttribute('aria-label'))[1]
        let ls = n.toLocaleString('en-US')

        let old = pelm.querySelector(SEL_ADD)

        let ss // Temp.

        ss = s_mutations

        if (!old) {
            let span = document.createElement('span')
            span.className = 'us-' + MYNAME
            span.textContent = ls
            span.style = elm.style

            elm.style.setProperty('display', 'none')
            pelm.appendChild(span)
        } else if (old.textContent != ls) {
            old.textContent = ls
            old.style = elm.style
        }

        s_mutations = ss
    }

    function fineegm_v_t() {
        const SEL =
            'main div[data-testid="primaryColumn"] section article ' +
            'a[href$="/analytics"][aria-label][role="link"]>div>div>span[data-testid="app-text-transition-container"]>' +
            'span>span:not(.us-' + MYNAME + ')' // 二つ下から消える

        document.querySelectorAll(SEL).forEach(function (e) {
            const SEL_ADD = 'span.us-' + MYNAME

            let pe = e.parentNode
            let xpe = e.closest('a')
            let n = +xpe.getAttribute('aria-label').split(' ')[0]
            let ls = n.toLocaleString('en-US')

            let old = pe.querySelector(SEL_ADD)

            let ss // Temp.

            ss = s_mutations

            if (!old) {
                let span = document.createElement('span')
                span.className = 'us-' + MYNAME
                span.textContent = ls
                span.style = e.style

                e.style.setProperty('display', 'none')
                pe.appendChild(span)
            } else if (old.textContent != ls) {
                old.textContent = ls
                old.style = e.style
            }

            s_mutations = ss
        })
    }

    function fineegm_t() {
        const SEL =
            'main div[data-testid="primaryColumn"] div[aria-label] ' +
            'h2[role="heading"]~div.css-146c3p1.r-n6v787.r-1cwl3u0'
        const SEL_2 =
            'script[data-testid="UserProfileSchema-test"]'
        const SEL_ADD = 'div.us-' + MYNAME

        let elm = document.querySelector(SEL)
        if (!elm) return

        let elm_2 = document.querySelector(SEL_2)
        if (!elm_2) return

        let pelm = elm.parentNode
        let n = JSON.parse(elm_2.textContent).author.interactionStatistic[2].userInteractionCount
        let ls = n.toLocaleString('en-US')

        let old = pelm.querySelector(SEL_ADD)

        let ss = s_mutations // Temp.

        if (!old) {
            let div = document.createElement('div')
            div.className = 'us-' + MYNAME
            div.textContent = ls + ' ' + elm.textContent.split(' ')[1]
            div.style = elm.style

            elm.style.setProperty('display', 'none')
            pelm.appendChild(div)
        } else if (old.textContent.split(' ')[0] != ls) {
            old.textContent = ls + ' ' + elm.textContent.split(' ')[1]
            old.style = elm.style
        }

        s_mutations = ss
    }

    function isHLSURL(url) {
        return (
            /^https?:\/\/video\.twimg\.com\/[^?]+\.m3u8?/i.test(url) ||
            /^https?:\/\/[^.]+\.video\.pscp\.tv\/[^?]+\.m3u8?/i.test(url)
        )
    }

    function isHLSMaster(text) {
        return (
            text &&
            text.includes('#EXT-X-STREAM-INF') &&
            !text.includes('#EXT-X-TARGETDURATION')
        )
    }

    function pickone(reg, text) {
        let matches = []
        const HEAD = text.replace(reg, function (m, p1) {
            matches.push([m, p1])
            return ''
        })
        const L = matches.length
        if (L < 2) return text

        let select = matches[0]
        for (let i = 1; i < L; i++) { // 2番目から
            select =
                (fvq != 2 && +select[1] < +matches[i][1]) ||
                    (fvq == 2 && +select[1] > +matches[i][1]) ? matches[i] :
                    select
        }

        return (HEAD + '\n' + select[0]).trim().replace(/(\r?\n)+/g, '\n') + '\n'
    }

    function twXHRStateHandler({ target: xhr }) {
        if (xhr.readyState === 4) {
            const rawTEXT = xhr.responseText
            if (isHLSMaster(rawTEXT)) {
                // eslint-disable-next-line regexp/optimal-quantifier-concatenation
                const REG = /#EXT-X-STREAM-INF.*[^-]BANDWIDTH=(\d+).*\r?\n\/.+$/gm
                const modTEXT = pickone(REG, rawTEXT)
                Object.defineProperties(xhr, {
                    response: { writable: true },
                    responseText: { writable: true }
                })
                xhr.response = xhr.responseText = modTEXT
            }
        }
    }

    function overrideXHROpen() {
        originalXHROPEN = XMLHttpRequest.prototype.open
        XMLHttpRequest.prototype.open = function () {
            if (isHLSURL(arguments[1])) {
                this.addEventListener('readystatechange', twXHRStateHandler)
            }
            return originalXHROPEN.apply(this, arguments)
        }

        console.log(MYNAME + ': XMLHttpRequest.open overriden.')
    }

    function repldatetime() {
        const SEL =
            'main div[data-testid="primaryColumn"] section article time[datetime*=":"]'
        const SEL_2 =
            'div[aria-labelledby="modal-header"] div[data-testid^="User-Name"] time[datetime]'
        const SEL_3 =
            'div[aria-labelledby="modal-header"] div[aria-label] time[datetime]'
        const SEL_4 =
            'main section[aria-labelledby="detail-header"] article div[data-testid^="User-Name"] time[datetime]'
        const SEL_5 =
            'main section div[data-testid="conversation"] div[aria-label] time[datetime]' // DM list

        document.
            querySelectorAll(SEL + ', ' + SEL_2 + ', ' + SEL_3 + ', ' + SEL_4 + ', ' + SEL_5).
            forEach(function (e) {
                const SEL_ADD = 'span.us-' + MYNAME

                let d = e.getAttribute('datetime')
                let df = datef(new Date(d), fmt)

                let pe = e.parentNode

                let old = pe.querySelectorAll(SEL_ADD)

                let ss // Temp.

                ss = s_mutations

                if (!old.length) {
                    let span = document.createElement('span')
                    span.className = 'us-' + MYNAME
                    span.setAttribute('datetime', d)
                    span.setAttribute('local-datetime', df)
                    span.textContent = df
                    span.style = e.style

                    e.style.setProperty('display', 'none')
                    pe.appendChild(span)
                } else if (old[0].getAttribute('local-datetime') != df) { // TZ change
                    old[0].setAttribute('local-datetime', df)
                    old[0].textContent = df
                    old[0].style = e.style
                }

                s_mutations = ss
            })
    }

    function loop() {
        setTimeout(() => {
            if (s_mutations) {
                s_mutations = null // 初期値がtrue、変更もしない

                if (bbr) bbreturn()
                if (origi) origimg()
                if (wtl) widetl()
                if (ecmode) chgbgc()
                if (hpp) hidepromo()
                if (hwtf) hidewtf()
                if (hdmd) hidedmd()
                if (hgv) hidegv()
                if (fmt) repldatetime()
                if (fegm) {
                    fineegm()
                    fineegm_v_d()
                    fineegm_v_t()
                    fineegm_t()
                    time_r = Date.now()
                }
            } else if (fegm == 1 && Date.now() - time_r > 4000) {
                fineegm()
                fineegm_v_d()
                fineegm_v_t()
                fineegm_t()
                time_r = Date.now()
            }
            loop()
        }, intl)
    }

    bbr = BBR
    origi = ORIGI
    wtl = WTL
    ecmode = ECMODE
    hpp = HPP
    hwtf = HWTF
    hdmd = HDMD
    hgv = HGV
    fegm = FEGM
    fvq = FVQ
    fmt = FMT
    intl = INTL

    if (!NOGUI) initgui()
    if (fvq) overrideXHROpen()
    observer.observe(document, { childList: true, subtree: true })
    loop()

})() /*  END  */