diff --git a/Rewrite/4limbo.adblock b/Rewrite/4limbo.adblock index 2d48bd0..da424a3 100644 --- a/Rewrite/4limbo.adblock +++ b/Rewrite/4limbo.adblock @@ -1,4 +1,4 @@ -#!name=毒奶特供(2024年02月18日更新) +#!name=毒奶特供(2024年04月10日更新) #!desc=毒奶去网页广告计划(稳定版)For Surge / Quantumult X / Shadowrocket/ 油猴 - Tampermonkey ;如去内容农场/泥巴影视/剧迷网/低端影视/哔滴影视/Jable/Missav//Netflav/Xvideos/Pornhub/91../禁漫天堂/百度与谷歌搜索结果页面广告等视频网站广告或其他ACG网站网页广告/百度知道广告... #! \\ You Can Change The World With Code. @@ -10,7 +10,7 @@ #! // Done Is Better Than Perfect. -hostname = www.ntdm9.com, www.olevod.tv, www.tameikegoro.jp,tameikegoro.jp,www.madonna-av.com,madonna-av.com,deeps.net,www.fitch-av.com,fitch-av.com,www.takara-tv.jp,takara-tv.jp,www.moodyz.com,moodyz.com,www.s1s1s1.com,s1s1s1.com,www.prestige-av.com,prestige-av.com,www.sod.co.jp,sod.co.jp,venus-av.com,www.gloryquest.tv,gloryquest.tv,www.premium-beauty.com,premium-beauty.com,www.nagae-style.com,nagae-style.com,www.ideapocket.com,ideapocket.com,www.attackers.net,attackers.net,www.dasdas.jp,dasdas.jp,www.oppai-av.com,oppai-av.com,www.kawaiikawaii.jp,kawaiikawaii.jp,www.to-satsu.com,to-satsu.com,www.wanz-factory.com,wanz-factory.com,www.av-e-body.com,av-e-body.com,www.mgstage.com,mgstage.com,www.mousouzoku-av.com,mousouzoku-av.com,manji-group.com,www.rocket-inc.net,rocket-inc.net,www.dmm.co.jp,dmm.co.jp,www.muku.tv,muku.tv,streamtape.com, fviplions.com,sfastwish.com,cabecabean.lol,belegug.online,wishfast.top,vidmoviesb.xyz,vhmovies.to,awish.pro,ankrzkz.sbs,fc2stream.tv,sub123.xyz,leakslove.net,mwish.pro,embedwish.com,javhahaha.us,abkrzkz.sbs,streamvid.top,abkrzkr.sbs,playertv.net,sbrity.com,doodporn.xyz,mycloud123.top,streamsb.click,streamxxx.online,trafficdepot.re,sblona.com,filelions.*,ahvsh.com,sbrapid.com,streaamss.com,louishide.com,projectfreetv.lol,streamwish.to,lvturbo.com,javb1.com,sbface.com,rbtstream.info,vidgo.top,sbhight.com,sbbrisk.com,streamhide.to,cloudrls.com,mm9846.com,m4uhd.club,streamm4u.club,sbchill.com,fbjav.com,imfb.xyz,sbrulz.xyz,baldrfilms.xyz,javbigo.xyz,dizivap.*,dvapizle.*,sblongvu.com,mavavid.com,fembed9hd.com,xsub.cc,sbthe.com,sbanh.com,mm9844.*,anigogo.net,faptiti.com,javsubbed.xyz,sblanh.com,av4asia.com,playerjavseen.com,pornhubed.com,xvideostream.net,streamsss.net,sbspeed.com,vcdn-stream.xyz,vanfem.com,javuncen.xyz,vidplay.ch,javenglish.me,ssbstream.net,zojav.com,watch-jav-english.live,javpornhd.online,yuamikami.xyz,embed-media.com,obaplayer.xyz,cdn-myhdjav.info,dlmovies.link,cinegrabber.com,watchjavnow.xyz,luxubu.review,nsfwzone.xyz,viplayer.cc,cinemaemcasa.xyz,sbfast.com,iframe2videos.xyz,javfu.net,streamas.cloud,nashstream.top,yuistream.xyz,jav247.top,viewsb.com,myvideoplayer.monster,cloudemb.com,moviesland.xyz,jvembed.com,ffem.club,javleaked.com,pornhole.club,ndrama.xyz,fembed-hd.com,netflav.com,netflav5.com,mambast.tk,cutl.xyz,playerjavhd.com,mycloudzz.com,suzihaza.com,embedsb.com,layarkacaxxi.icu,nekolink.site,sbflix.xyz,javhdfree.icu,streamsb.net,rubicstreaming.com,javside.com,gdstream.net,animepl.xyz,watchsb.com,sbplay2.*,hentai4.me,playersb.com,streamabc.xyz,ns21.online,diasfem.com,milfnut.net,pelispop.net,ondembed.xyz,tubesb.com,fplayer.info,mm9842.com,sbplay1.com,javmvp.com,japopav.tv,nezuko-ah.nl,pelistop.co,vidcloud.*,mavlecteur.com,xxxjaa.xyz,vcdn2.space,mavplayer.xyz,sbplay.*,sbvideo.net,sbembed4.com,javcl.me,dfmagazine.co.uk,down-paradise.com,embedsito.com,serverf4.org,streamwish.com, emturbovid.com, static.adxadserv.com, ak.oneegrou.net, goesdeedinsensitive.com, help.fanza.cc, a.realsrv.com, creative.xlivrdr.com, www.javlibrary.com, njav.tv, hanime1.me, 555dy.shop, 555dyx5.com, 555dyx4.com, 555dyx3.com, 555dyx1.com, supjav.com, embedgram.com, mmfl02.com, embedrise.com, filemoon.sx, static-cdn77.xvideos-cdn.com, www.xvideos.com, javday.tv, xiaobaotv.net, cn1.91short.com, vthumb.killcovid2021.com, img.killcovid2021.com, api.nivodz.com, m.nivod4.tv, www.nivod4.tv, m.yhpdm.com, m.yhdmp.cc, m.yhdmp.com, anime1.me, www.tz659.com, www.ttsp.tv, *.cloudfront.net, www.o8tv.com, www.555dd*.com, www.5dy*, *.tvn.cc, www.wnacg.com, www.wnacg.org, suzihaza.com, 91porn.com, netflav.com, netflav5.com, www.javmost.xyz, javmost.xyz, www5.javmost.xyz, www5.javmost.com, cn.bing.com, www.bing.com, zhuanlan.zhihu.com, www.zhihu.com, *.jable.tv, en.jable.tv, jable.tv, wwww.tvn.cc, m.tvn.cc, wap.tvn.cc, ddrk.me, ddys.pro, ddys.tv, ddys.art, ddys2.me, 18comic.org, 18comic.vip, www.google.com, www.google.com.hk, www.pornhub.com, cn.pornhub.com, missav.com, www.libvio.top, www.libvio.pro, www.libvio.com, www.libvio.la, 4hu.*, gimy.ai, gimy.tv, *.duboku.*, assert.avple.tv, avple.tv, *.btbdys.*, www.bdys01.com, www.bdys02.com, www.bdys03.com, www.bdys10.com, *.javbus.*, www.baidu.com, m.baidu.com, zhidao.baidu.com +hostname = ra7.xyz, a.magsrv.com, poweredby.jads.co, cdn.tsyndicate.com, mc.yandex.ru, rouman5.com, cnys.tv, xiaoxintv.net, www.ntdm9.com, www.olevod.tv, www.tameikegoro.jp,tameikegoro.jp,www.madonna-av.com,madonna-av.com,deeps.net,www.fitch-av.com,fitch-av.com,www.takara-tv.jp,takara-tv.jp,www.moodyz.com,moodyz.com,www.s1s1s1.com,s1s1s1.com,www.prestige-av.com,prestige-av.com,www.sod.co.jp,sod.co.jp,venus-av.com,www.gloryquest.tv,gloryquest.tv,www.premium-beauty.com,premium-beauty.com,www.nagae-style.com,nagae-style.com,www.ideapocket.com,ideapocket.com,www.attackers.net,attackers.net,www.dasdas.jp,dasdas.jp,www.oppai-av.com,oppai-av.com,www.kawaiikawaii.jp,kawaiikawaii.jp,www.to-satsu.com,to-satsu.com,www.wanz-factory.com,wanz-factory.com,www.av-e-body.com,av-e-body.com,www.mgstage.com,mgstage.com,www.mousouzoku-av.com,mousouzoku-av.com,manji-group.com,www.rocket-inc.net,rocket-inc.net,www.dmm.co.jp,dmm.co.jp,www.muku.tv,muku.tv,streamtape.com, fviplions.com,sfastwish.com,cabecabean.lol,belegug.online,wishfast.top,vidmoviesb.xyz,vhmovies.to,awish.pro,ankrzkz.sbs,fc2stream.tv,sub123.xyz,leakslove.net,mwish.pro,embedwish.com,javhahaha.us,abkrzkz.sbs,streamvid.top,abkrzkr.sbs,playertv.net,sbrity.com,doodporn.xyz,mycloud123.top,streamsb.click,streamxxx.online,trafficdepot.re,sblona.com,filelions.*,ahvsh.com,sbrapid.com,streaamss.com,louishide.com,projectfreetv.lol,streamwish.to,lvturbo.com,javb1.com,sbface.com,rbtstream.info,vidgo.top,sbhight.com,sbbrisk.com,streamhide.to,cloudrls.com,mm9846.com,m4uhd.club,streamm4u.club,sbchill.com,fbjav.com,imfb.xyz,sbrulz.xyz,baldrfilms.xyz,javbigo.xyz,dizivap.*,dvapizle.*,sblongvu.com,mavavid.com,fembed9hd.com,xsub.cc,sbthe.com,sbanh.com,mm9844.*,anigogo.net,faptiti.com,javsubbed.xyz,sblanh.com,av4asia.com,playerjavseen.com,pornhubed.com,xvideostream.net,streamsss.net,sbspeed.com,vcdn-stream.xyz,vanfem.com,javuncen.xyz,vidplay.ch,javenglish.me,ssbstream.net,zojav.com,watch-jav-english.live,javpornhd.online,yuamikami.xyz,embed-media.com,obaplayer.xyz,cdn-myhdjav.info,dlmovies.link,cinegrabber.com,watchjavnow.xyz,luxubu.review,nsfwzone.xyz,viplayer.cc,cinemaemcasa.xyz,sbfast.com,iframe2videos.xyz,javfu.net,streamas.cloud,nashstream.top,yuistream.xyz,jav247.top,viewsb.com,myvideoplayer.monster,cloudemb.com,moviesland.xyz,jvembed.com,ffem.club,javleaked.com,pornhole.club,ndrama.xyz,fembed-hd.com,netflav.com,netflav5.com,mambast.tk,cutl.xyz,playerjavhd.com,mycloudzz.com,suzihaza.com,embedsb.com,layarkacaxxi.icu,nekolink.site,sbflix.xyz,javhdfree.icu,streamsb.net,rubicstreaming.com,javside.com,gdstream.net,animepl.xyz,watchsb.com,sbplay2.*,hentai4.me,playersb.com,streamabc.xyz,ns21.online,diasfem.com,milfnut.net,pelispop.net,ondembed.xyz,tubesb.com,fplayer.info,mm9842.com,sbplay1.com,javmvp.com,japopav.tv,nezuko-ah.nl,pelistop.co,vidcloud.*,mavlecteur.com,xxxjaa.xyz,vcdn2.space,mavplayer.xyz,sbplay.*,sbvideo.net,sbembed4.com,javcl.me,dfmagazine.co.uk,down-paradise.com,embedsito.com,serverf4.org,streamwish.com,mmsw02.com,mmfl04.com,netflavns1.com,emturbovid.com, static.adxadserv.com, ak.oneegrou.net, goesdeedinsensitive.com, help.fanza.cc, a.realsrv.com, creative.xlivrdr.com, www.javlibrary.com, njav.tv, hanime1.me, 555dy.shop, 555dyx5.com, 555dyx4.com, 555dyx3.com, 555dyx1.com, supjav.com, embedgram.com, mmfl02.com, embedrise.com, filemoon.sx, static-cdn77.xvideos-cdn.com, www.xvideos.com, javday.tv, xiaobaotv.net, cn1.91short.com, vthumb.killcovid2021.com, img.killcovid2021.com, api.nivodz.com, m.nivod4.tv, m.nivod8.tv, www.nivod8.tv, www.nivod4.tv, m.yhpdm.com, m.yhdmp.cc, m.yhdmp.com, anime1.me, www.tz659.com, www.ttsp.tv, *.cloudfront.net, www.o8tv.com, www.555dd*.com, www.5dy*, *.tvn.cc, www.wnacg.com, www.wnacg.org, suzihaza.com, 91porn.com, netflav.com, netflav5.com, www.javmost.xyz, javmost.xyz, www5.javmost.xyz, www5.javmost.com, cn.bing.com, www.bing.com, zhuanlan.zhihu.com, www.zhihu.com, *.jable.tv, en.jable.tv, jable.tv, wwww.tvn.cc, m.tvn.cc, wap.tvn.cc, ddrk.me, ddys.pro, ddys.tv, ddys.art, ddys2.me, 18comic.org, 18comic.vip, www.google.com, www.google.com.hk, www.pornhub.com, cn.pornhub.com, missav.com, www.libvio.top, www.libvio.pro, www.libvio.com, www.libvio.la, 4hu.*, gimy.ai, gimy.tv, *.duboku.*, assert.avple.tv, avple.tv, *.btbdys.*, www.bdys01.com, www.bdys02.com, www.bdys03.com, www.bdys10.com, *.javbus.*, www.baidu.com, m.baidu.com, zhidao.baidu.com https?:\/\/[0-9a-zA-Z]{10,16}\.cloudfront\.net\/\?[a-z]{3,7}=\d{4,8} url reject ^https?:\/\/assert\.avple\.tv\/file\/avple-images\/ad\.js url reject @@ -32,6 +32,12 @@ https://creative.xlivrdr.com/widgets/v4/Universal?tag url reject https://goesdeedinsensitive.com/bd/0d/e2/*.js url reject https://streamwish.com/.*ads.js url reject /assets/jquery/main100.js? url reject +https://rouman5.com/_next/static/chunks/pages/home-8ff6090a1203a289.js url reject +https://mc.yandex.ru/metrika/tag.js url reject +https://cdn.tsyndicate.com/sdk/v1/master.spot.js url reject +https://poweredby.jads.co/js/jads.js url reject +https://a.magsrv.com/ad-provider.js url reject +https://ra7.xyz/z/.*/code.js url reject https://(www|zhuanlan)\.zhihu\.com/api/v4/questions/\d+/related-readings url reject https://(www|zhuanlan)\.zhihu\.com/api/v4/answers/\d+/related-readings url reject #https://(www|zhuanlan)\.zhihu\.com/api/v4/hot_recommendation url reject @@ -55,12 +61,16 @@ https://creative.live.missav.com/widgets/Spot/lib.js url reject ^https?:\/\/(www\.google)(\.\w{2,4}){1,2}\/(search\?|\?sa=|\?FORM)(?!.*?(apps=)) url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js # 禁漫天堂(18comic.org|vip) ^https?:\/\/18comic\.(vip|org)\/(?!(.*(onclick|cdn-cgi|\.))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js +# 肉漫(rouman5) +^https?:\/\/(rouman5\.com)\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js # 紳士漫畫(www.wnacg.com) ^https?:\/\/www\.wnacg\.com\/(?!(.*(onclick|cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js +# CN影视(cnys.tv) +^https?:\/\/((cnys)\.(tv|com))\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/cnys.js # 小宝影视(xiaobaotv.net) -^https?:\/\/(xiaobaotv\.(net|com))\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js +^https?:\/\/((xiaobaotv|xiaoxintv)\.(net|com))\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js # 泥巴影视(Nivod4.tv) -^https?:\/\/(www|m)\.(nivod4\.tv)\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js +^https?:\/\/(www|m)\.(nivod\d\.tv)\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js # 剧迷网(gimy.app|ai) ^https?:\/\/(\w{0,3}(\.){0,1}(gimy)(\.)\w{0,3})\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js # 低端影视(ddrk.me|ddys.pro) @@ -102,7 +112,7 @@ https?:\/\/.*duboku.*\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff| # Netflav(netflav|netflav5|.com) ^https?:\/\/(netflav|netflav5)\.com\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/surge_netflav.js # PlayerAds -^https?:\/\/(streamtape.com|((emturbovid|filemoon|embedrise|mmfl02|embedgram)\.(sx|com))|emturbovid\.com|filemoon.sx|embedrise.com|mmfl02.com|embedgram.com|fviplions.com|sfastwish.com|cabecabean.lol|belegug.online|wishfast.top|vidmoviesb.xyz|vhmovies.to|awish.pro|ankrzkz.sbs|fc2stream.tv|sub123.xyz|leakslove.net|mwish.pro|embedwish.com|javhahaha.us|abkrzkz.sbs|streamvid.top|abkrzkr.sbs|playertv.net|sbrity.com|doodporn.xyz|mycloud123.top|streamsb.click|streamxxx.online|trafficdepot.re|sblona.com|filelions.*|ahvsh.com|sbrapid.com|streaamss.com|louishide.com|projectfreetv.lol|streamwish.to|lvturbo.com|javb1.com|sbface.com|rbtstream.info|vidgo.top|sbhight.com|sbbrisk.com|streamhide.to|cloudrls.com|mm9846.com|m4uhd.club|streamm4u.club|sbchill.com|fbjav.com|imfb.xyz|sbrulz.xyz|baldrfilms.xyz|javbigo.xyz|dizivap.*|dvapizle.*|sblongvu.com|mavavid.com|fembed9hd.com|xsub.cc|sbthe.com|sbanh.com|mm9844.*|anigogo.net|faptiti.com|javsubbed.xyz|sblanh.com|av4asia.com|playerjavseen.com|pornhubed.com|xvideostream.net|streamsss.net|sbspeed.com|vcdn-stream.xyz|vanfem.com|javuncen.xyz|vidplay.ch|javenglish.me|ssbstream.net|zojav.com|watch-jav-english.live|javpornhd.online|yuamikami.xyz|embed-media.com|obaplayer.xyz|cdn-myhdjav.info|dlmovies.link|cinegrabber.com|watchjavnow.xyz|luxubu.review|nsfwzone.xyz|viplayer.cc|cinemaemcasa.xyz|sbfast.com|iframe2videos.xyz|javfu.net|streamas.cloud|nashstream.top|yuistream.xyz|jav247.top|viewsb.com|myvideoplayer.monster|cloudemb.com|moviesland.xyz|jvembed.com|ffem.club|javleaked.com|pornhole.club|ndrama.xyz|fembed-hd.com|netflav.com|netflav5.com|mambast.tk|cutl.xyz|playerjavhd.com|mycloudzz.com|suzihaza.com|embedsb.com|layarkacaxxi.icu|nekolink.site|sbflix.xyz|javhdfree.icu|streamsb.net|rubicstreaming.com|javside.com|gdstream.net|animepl.xyz|watchsb.com|sbplay2.*|hentai4.me|playersb.com|streamabc.xyz|ns21.online|diasfem.com|milfnut.net|pelispop.net|ondembed.xyz|tubesb.com|fplayer.info|mm9842.com|sbplay1.com|javmvp.com|japopav.tv|nezuko-ah.nl|pelistop.co|vidcloud.*|mavlecteur.com|xxxjaa.xyz|vcdn2.space|mavplayer.xyz|sbplay.*|sbvideo.net|sbembed4.com|javcl.me|dfmagazine.co.uk|down-paradise.com|embedsito.com|serverf4.org)\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js +^https?:\/\/(streamtape.com|((mmsw02|mmfl04|netflavns1|emturbovid|filemoon|embedrise|mmfl02|embedgram)\.(sx|com))|emturbovid\.com|filemoon.sx|embedrise.com|mmfl02.com|embedgram.com|fviplions.com|sfastwish.com|cabecabean.lol|belegug.online|wishfast.top|vidmoviesb.xyz|vhmovies.to|awish.pro|ankrzkz.sbs|fc2stream.tv|sub123.xyz|leakslove.net|mwish.pro|embedwish.com|javhahaha.us|abkrzkz.sbs|streamvid.top|abkrzkr.sbs|playertv.net|sbrity.com|doodporn.xyz|mycloud123.top|streamsb.click|streamxxx.online|trafficdepot.re|sblona.com|filelions.*|ahvsh.com|sbrapid.com|streaamss.com|louishide.com|projectfreetv.lol|streamwish.to|lvturbo.com|javb1.com|sbface.com|rbtstream.info|vidgo.top|sbhight.com|sbbrisk.com|streamhide.to|cloudrls.com|mm9846.com|m4uhd.club|streamm4u.club|sbchill.com|fbjav.com|imfb.xyz|sbrulz.xyz|baldrfilms.xyz|javbigo.xyz|dizivap.*|dvapizle.*|sblongvu.com|mavavid.com|fembed9hd.com|xsub.cc|sbthe.com|sbanh.com|mm9844.*|anigogo.net|faptiti.com|javsubbed.xyz|sblanh.com|av4asia.com|playerjavseen.com|pornhubed.com|xvideostream.net|streamsss.net|sbspeed.com|vcdn-stream.xyz|vanfem.com|javuncen.xyz|vidplay.ch|javenglish.me|ssbstream.net|zojav.com|watch-jav-english.live|javpornhd.online|yuamikami.xyz|embed-media.com|obaplayer.xyz|cdn-myhdjav.info|dlmovies.link|cinegrabber.com|watchjavnow.xyz|luxubu.review|nsfwzone.xyz|viplayer.cc|cinemaemcasa.xyz|sbfast.com|iframe2videos.xyz|javfu.net|streamas.cloud|nashstream.top|yuistream.xyz|jav247.top|viewsb.com|myvideoplayer.monster|cloudemb.com|moviesland.xyz|jvembed.com|ffem.club|javleaked.com|pornhole.club|ndrama.xyz|fembed-hd.com|netflav.com|netflav5.com|mambast.tk|cutl.xyz|playerjavhd.com|mycloudzz.com|suzihaza.com|embedsb.com|layarkacaxxi.icu|nekolink.site|sbflix.xyz|javhdfree.icu|streamsb.net|rubicstreaming.com|javside.com|gdstream.net|animepl.xyz|watchsb.com|sbplay2.*|hentai4.me|playersb.com|streamabc.xyz|ns21.online|diasfem.com|milfnut.net|pelispop.net|ondembed.xyz|tubesb.com|fplayer.info|mm9842.com|sbplay1.com|javmvp.com|japopav.tv|nezuko-ah.nl|pelistop.co|vidcloud.*|mavlecteur.com|xxxjaa.xyz|vcdn2.space|mavplayer.xyz|sbplay.*|sbvideo.net|sbembed4.com|javcl.me|dfmagazine.co.uk|down-paradise.com|embedsito.com|serverf4.org)\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/PlayerAds.js # 91porn(www.91porn.com) ^https?:\/\/\w{0,3}(\.){0,1}91porn\.com\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js # 91short(cn1.91short.com) @@ -110,7 +120,7 @@ https?:\/\/.*duboku.*\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff| # Avple(avple.tv) ^https?:\/\/avple\.tv\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js # 4hu(4hu.tv) -^https?:\/\/4hu\.tv\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js +^https?:\/\/4hu\.tv\/(?!(.*(cdn-cgi|onclick|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js # Supjav(supjav.com) ^https?:\/\/supjav\.com\/(?!(.*(cdn-cgi|api|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js # tz659(www.tz659.com) diff --git a/Rewrite/AdBlock/BdMap.adblock b/Rewrite/AdBlock/BdMap.adblock new file mode 100644 index 0000000..af24294 --- /dev/null +++ b/Rewrite/AdBlock/BdMap.adblock @@ -0,0 +1,33 @@ +// ==UserScript== +// @ScriptName 百度地图净化[墨鱼版] +// @Author @ddgksf2013 +// @ForHelp 若有屏蔽广告的需求,可公众号后台回复APP名称 +// @WechatID 公众号墨鱼手记 +// @TgChannel https://t.me/ddgksf2021 +// @Contribute https://t.me/ddgksf2013_bot +// @Feedback 📮 ddgksf2013@163.com 📮 +// @UpdateTime 2023-12-15 +// @Suitable 自行观看“# > ”注释内容 +// @Attention 使用前请卸载百度地图,挂载脚本然后使用 +// @Attention 如需引用请注明出处,谢谢合作! +// @Version V1.0.7 +// @ScriptURL https://gist.githubusercontent.com/ddgksf2013/beec132ca0c3570ffa0cf331bce8f82a/raw/baidumap.adblock.conf +// ==/UserScript== + + +hostname=180.76.76.200, newclient.map.baidu.com, httpdns.baidubce.com, ugc.map.baidu.com + +# > 百度地图_首页底部推荐@ddgksf2013 +^https?:\/\/ugc\.map\.baidu\.com\/govui\/rich_content url reject-200 +# > 百度地图_搜索框下足记Tips@ddgksf2013 +;^https?:\/\/newclient\.map\.baidu\.com\/client\/phpui.*qt=rgc url reject-200 +# > 百度地图_搜索推广@ddgksf2013 +^https?:\/\/newclient\.map\.baidu\.com\/client\/phpui.*qt=hw url reject-200 +# > 百度地图_开屏广告|首页左上角广告@ddgksf2013 +^https?:\/\/newclient\.map\.baidu\.com\/client\/phpui2\/\?qt=ads url reject-200 +# > 百度地图_DNS处理@ddgksf2013 +^https?:\/\/httpdns\.baidubce\.com url reject-200 +# > 百度地图_各种商业推广@ddgksf2013 +^https?:\/\/newclient\.map\.baidu\.com\/client\/crossmarketing url reject-200 +# > 百度地图_我的页面地图动态@ddgksf2013 +^https?:\/\/newclient\.map\.baidu\.com\/client\/usersystem\/home\/dynamic url reject-200 \ No newline at end of file diff --git a/Rewrite/AdBlock/BiliBili.adblock b/Rewrite/AdBlock/BiliBili.adblock index 8c7fa2f..046701c 100644 --- a/Rewrite/AdBlock/BiliBili.adblock +++ b/Rewrite/AdBlock/BiliBili.adblock @@ -9,8 +9,8 @@ // @TgChannel https://t.me/ddgksf2021 // @Contribute https://t.me/ddgksf2013_bot // @Feedback 📮 ddgksf2013@163.com 📮 -// @UpdateTime 2024-02-07 -// @ConfigVersion V2.0.130 +// @UpdateTime 2024-02-25 +// @ConfigVersion V2.0.132 // @Attention 如果广告仍然存在,请清除缓存或卸载应用重新安装 // @Attention 如需引用请注明出处,谢谢合作! // @Function 去广告配置(自用,不定期更新) @@ -18,7 +18,7 @@ // @ScriptURL https://github.com/ddgksf2013/Rewrite/raw/master/AdBlock/Bilibili.conf // ==/UserScript== -hostname = -broadcast.chat.bilibili.com, -*cdn*.biliapi.net, -*tracker*.biliapi.net, app.bilibili.com, api.live.bilibili.com, *.bilibili.com, *.bilibili.*, grpc.biliapi.net,*biliapi.net +hostname = -broadcast.chat.bilibili.com, -*cdn*.biliapi.net, -*tracker*.biliapi.net, app.bilibili.com, api.live.bilibili.com, *.bilibili.com, *.bili*.*, *.bilibili.*, grpc.biliapi.net,*biliapi.net # ======= BiliJson 播放页处理 ======= # @@ -32,6 +32,8 @@ hostname = -broadcast.chat.bilibili.com, -*cdn*.biliapi.net, -*tracker*.biliapi. ^https?:\/\/api\.bili(api|bili)\.(net|com)\/pgc\/season\/app\/related\/recommend\? url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Bilibili/BiliBili.min.js # ~ BiliBili_哔哩哔哩_点击追番Card@ddgksf2013 ^https?:\/\/api\.bilibili\.com\/pgc\/season\/player\/ogv\/cards url reject-dict +# ~ BiliBili_哔哩哔哩_屏蔽4480端口[白B有问题]@kokoryh +#^http:\/\/.*:4480\/upgcxcode url reject-200 # ======= BiliJson 直播间处理 ======= # @@ -84,16 +86,21 @@ hostname = -broadcast.chat.bilibili.com, -*cdn*.biliapi.net, -*tracker*.biliapi. ^https?:\/\/(app\.bilibili\.com|grpc\.biliapi\.net)\/bilibili\.app\.interface\.v1\.Search\/Default url reject # ~ BiliBili_哔哩哔哩_搜索去广告@BiliUniverse ^https?:\/\/(grpc\.biliapi\.net|app\.bilibili\.com)\/bilibili\.polymer\.app\.search\.v1\.Search\/SearchAll$ url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Bilibili/BiliBili.response.min.js + # ~ BiliBili_哔哩哔哩_交互点赞投票弹幕及会员弹幕@BiliUniverse ^https?:\/\/(app\.bilibili\.com|grpc\.biliapi\.net)\/bilibili\.community\.service\.dm\.v1\.DM\/(DmView|DmSegMobile) url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Bilibili/BiliBili.response.min.js + # ~ BiliBili_哔哩哔哩_青少年弹窗@BiliUniverse ^https:\/\/(grpc\.biliapi\.net|app\.bilibili\.com)\/bilibili\.app\.interface\.v1\.Teenagers\/ModeStatus url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Bilibili/BiliBili.response.min.js + # ~ BiliBili_哔哩哔哩_UP主推荐广告[适配ipad端]@BiliUniverse ^https?:\/\/(app\.bilibili\.com|grpc\.biliapi\.net)\/bilibili\.app\.(view|viewunite)\.v1\.View\/(View|TFInfo)$ url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Bilibili/BiliBili.response.min.js + # ~ BiliBili_哔哩哔哩_动态综合页及视频页去广告@BiliUniverse ^https?:\/\/(app\.bilibili\.com|grpc\.biliapi\.net)\/bilibili\.app\.dynamic\.v2\.Dynamic\/Dyn(All|Video)$ url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Bilibili/BiliBili.response.min.js + # ======= BiliNotAdded ======= # # ~ BiliBili_哔哩哔哩_启动时开启直连模式[自行启用]@ddgksf2013 ;^https?:\/\/app\.bilibili\.com\/x\/resource\/domain url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/bilibili_startup_direct.js diff --git a/Rewrite/AdBlock/Cainiao.adblock b/Rewrite/AdBlock/Cainiao.adblock index 89e65ba..d4e2c8e 100644 --- a/Rewrite/AdBlock/Cainiao.adblock +++ b/Rewrite/AdBlock/Cainiao.adblock @@ -6,20 +6,22 @@ // @TgChannel https://t.me/ddgksf2021 // @Contribute https://t.me/ddgksf2013_bot // @Feedback 📮 ddgksf2013@163.com 📮 -// @UpdateTime 2023-04-25 +// @UpdateTime 2024-03-20 // @Suitable 自行观看“# > ”注释内容 // @Attention 使用前请卸载菜鸟APP,挂载脚本然后使用 // @Attention 如需引用请注明出处,谢谢合作! -// @Version V1.0.7 +// @Version V1.0.10 // @ScriptURL https://github.com/ddgksf2013/Rewrite/raw/master/AdBlock/Cainiao.conf // ==/UserScript== -hostname=cn-acs.m.cainiao.com, guide-acs.m.taobao.com +hostname=cn-acs.m.cainiao.com, guide-acs.m.taobao.com,acs4miniapp-inner.m.taobao.com # > 菜鸟裹裹_amdc处理[Anti已将Amdc分流删除,故更换屏蔽策略]@ddgksf2013 ^http:\/\/amdc\.m\.taobao\.com url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Amdc.min.js +# > 菜鸟裹裹_首页中部的问邻居推广@ddgksf2013 +^https?:\/\/cn-acs\.m\.cainiao\.com\/gw\/mtop\.cainiao\.nbpresentation\.homepage\.merge\.get\.cn url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Cainiao.js # > 菜鸟裹裹_首页中部的惊喜福利推广@ddgksf2013 ^https?:\/\/cn-acs\.m\.cainiao\.com\/gw\/mtop\.cainiao\.nbpresentation\.protocol\.homepage\.get\.cn url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Cainiao.js # > 菜鸟裹裹_搜索框下方今日好物推荐@ddgksf2013 @@ -30,7 +32,9 @@ hostname=cn-acs.m.cainiao.com, guide-acs.m.taobao.com ^https?:\/\/cn-acs\.m\.cainiao\.com\/gw\/mtop\.cainiao\.guoguo\.nbnetflow\.ads\.(show|mshow)\.cn\/ url reject-200 # > 菜鸟裹裹_支付宝小程序_通用广告请求@ddgksf2013 ^https?:\/\/guide-acs\.m\.taobao\.com\/gw\/mtop\.cainiao\.guoguo\.nbnetflow\.ads\.show url reject-200 -# > 菜鸟裹裹_支付宝小程序_底部商品推广@ddgksf2013 +# > 菜鸟裹裹_支付宝小程序_底部商品推广新@ddgksf2013 +^https?:\/\/acs4miniapp-inner\.m\.taobao\.com\/gw\/mtop\.alimama\.abyss\.unionpage\.get url reject-200 +# > 菜鸟裹裹_支付宝小程序_底部商品推广旧@ddgksf2013 ^https?:\/\/guide-acs\.m\.taobao\.com\/gw\/mtop\.cainiao\.adx\.flyad\.getad url reject-200 # > 菜鸟裹裹_支付宝小程序_匿名选择@ddgksf2013 ^https?:\/\/guide-acs\.m\.taobao\.com\/gw\/mtop\.cainiao\.nbmensa\.research\.researchservice\.consultmerge url reject-200 diff --git a/Rewrite/AdBlock/Keep.adblock b/Rewrite/AdBlock/Keep.adblock index af93fea..e32ee5e 100644 --- a/Rewrite/AdBlock/Keep.adblock +++ b/Rewrite/AdBlock/Keep.adblock @@ -1,53 +1,49 @@ // ==UserScript== -// @ScriptName Keep 净化 +// @ScriptName Keep去广告+净化[墨鱼版] // @Author @ddgksf2013 // @ForHelp 若有屏蔽广告的需求,可公众号后台回复APP名称 // @WechatID 公众号墨鱼手记 // @TgChannel https://t.me/ddgksf2021 // @Contribute https://t.me/ddgksf2013_bot // @Feedback 📮 ddgksf2013@163.com 📮 -// @UpdateTime 2023-09-09 +// @UpdateTime 2024-04-04 // @Function 应用净化去广告 // @Suitable 自行观看“# > ”注释内容 // @Attention 如需引用请注明出处,谢谢合作! -// @Version V1.0.5 +// @Version V1.0.9 // @ScriptURL https://github.com/ddgksf2013/Rewrite/raw/master/AdBlock/KeepStyle.conf // ==/UserScript== -hostname=api.gotokeep.com, kad.gotokeep.com +hostname=hc-ssp.sm.cn, api.gotokeep.com, 42.187.199.248, kad.gotokeep.com # > 屏蔽应用内弹窗 -^https?:\/\/api\.gotokeep\.com\/guide-webapp\/v\d\/popup\/getPopUp url reject +^https?:\/\/api\.gotokeep\.com\/guide-webapp\/v\d\/popup\/getPopUp url reject-200 +^https?:\/\/api\.gotokeep\.com\/running\/v\d\/home\/dialog url reject-200 # > 屏蔽部分启动弹窗 -^https?:\/\/api\.gotokeep\.com\/kprime\/v\d\/popups\/primeGuide url reject +^https?:\/\/api\.gotokeep\.com\/kprime\/v\d\/popups\/primeGuide url reject-200 # > 屏蔽开屏广告请求 -^https?:\/\/kad\.gotokeep\.com\/op-engine-webapp\/v\d\/ad url reject +^https?:\/\/hc-ssp\.sm\.cn url reject-200 +^https?:\/\/kad\.gotokeep\.com\/op-engine-webapp\/v\d\/ad url reject-200 # > 屏蔽青少年弹窗 -^https?:\/\/api.gotokeep.com/cauchy/growth/init url reject +^https?:\/\/api.gotokeep.com/cauchy/growth/init url reject-200 # > 屏蔽搜索栏自动填充词 -^https?:\/\/api\.gotokeep\.com\/search\/v\d\/default\/keyword\/list url reject +^https?:\/\/api\.gotokeep\.com\/search\/v\d\/default\/keyword\/list url reject-200 # > 屏蔽热词 -^https?:\/\/api\.gotokeep\.com\/search\/v\d\/hotword\/list url reject +^https?:\/\/api\.gotokeep\.com\/search\/v\d\/hotword\/list url reject-200 # > 屏蔽hotCourse -^https?:\/\/api\.gotokeep\.com\/search\/v\d\/hotCourse\/list url reject +^https?:\/\/api\.gotokeep\.com\/search\/v\d\/hotCourse\/list url reject-200 # > 屏蔽adwebapp -^https?:\/\/api\.gotokeep\.com\/op-engine-webapp\/v\d\/ad url reject +^https?:\/\/api\.gotokeep\.com\/op-engine-webapp\/v\d\/ad url reject-200 # > 屏蔽广告预加载 -^https?:\/\/api\.gotokeep\.com\/ads\/v\d\/ads\/preload url reject +^https?:\/\/api\.gotokeep\.com\/ads\/v\d\/ads\/preload url reject-200 # > 屏蔽adbox -^https?:\/\/api\.gotokeep\.com\/training\/box\/config url reject +^https?:\/\/api\.gotokeep\.com\/training\/box\/config url reject-200 # > 屏蔽更新 -^https?:\/\/api\.gotokeep\.com\/anno\/v\d\/upgrade\/check url reject +^https?:\/\/api\.gotokeep\.com\/anno\/v\d\/upgrade\/check url reject-200 # > 我的页面去推广 ^https?:\/\/api\.gotokeep\.com\/athena\/v\d\/people\/my$ url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Keep.min.js # > 应用底部栏净化 ^https?:\/\/api\.gotokeep\.com\/config\/v\d\/basic url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Keep.min.js -# > 发现页处理 -https://api.gotokeep.com/homepage/v\d/tab url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Keep.min.js -# > 课程预览页广告 -https://api.gotokeep.com/nuocha/course/v2/\w+/preview url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Keep.min.js -# > 我的运动页面去除下方推荐 -https://api.gotokeep.com/sportpage/sport/v3/mysport url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Keep.min.js -# > 订阅解锁 -^https:\/\/api\.gotokeep\.com url script-response-body https://rules-for-qx.sveir.xyz/Scripts/Unlock/Keep.min.js \ No newline at end of file +# > 首页信息流去广告 +^https?:\/\/api\.gotokeep\.com\/twins\/v4\/feed\/course url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Keep.min.js \ No newline at end of file diff --git a/Rewrite/AdBlock/LittleRedBook.adblock b/Rewrite/AdBlock/LittleRedBook.adblock index bd772cf..fa51a2c 100644 --- a/Rewrite/AdBlock/LittleRedBook.adblock +++ b/Rewrite/AdBlock/LittleRedBook.adblock @@ -8,7 +8,7 @@ // @Contribute https://t.me/ddgksf2013_bot // @MainFunction 去开屏、瀑布流、启动服务广告及一些隐私、广告、青少年请求,去水印及功能增强 // @Feedback 📮 ddgksf2013@163.com 📮 -// @UpdateTime 2023-06-08 +// @UpdateTime 2024-03-24 // @Function 去广告配置(自用,不定期更新) // @Suitable 自行观看“# > ”注释内容 // @Attention 如需引用请注明出处,谢谢合作! @@ -20,48 +20,35 @@ hostname = edith.xiaohongshu.com, www.xiaohongshu.com, pages.xiaohongshu.com, re # > 小红书_视频播放页商品推广@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/note\/widgets url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js - # > 小红书_短视频流去水印+强制开启保存功能@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/note\/redtube\? url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js - # > 小红书_信息流视频去水印+强制开启保存功能@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/note\/videofeed\? url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js - # > 小红书_信息流图片去水印@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/note\/feed\? url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js - +# > 小红书_信息流图片[部分用户是下面请求]去水印@ddgksf2013 +^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/note\/imagefeed url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js # > 小红书_开屏广告@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/system_service\/splash_config url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js - # > 小红书_首页瀑布流@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/homefeed\? url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js - # > 小红书_启动处理@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/system_service\/config\? url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js - # > 小红书_热搜发现@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/search\/hot_list url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js - # > 小红书_默认填词@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/search\/hint url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js - # > 小红书_去除购物@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/homefeed\/categories url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js - # > 小红书_猜你想搜@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/search\/trending url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js - # > 小红书_通用广告请求@ddgksf2013 ^https?:\/\/www\.xiaohongshu\.com\/api\/sns\/v\d\/(tag\/)?ads url reject-dict - # > 小红书_隐私屏蔽@ddgksf2013 ^https?:\/\/referee\.xiaohongshu\.com\/v\d\/stateReport url reject-dict - # > 小红书_Switches@ddgksf2013 ^https?:\/\/pages\.xiaohongshu\.com\/data\/native\/matrix_switches url reject-dict - # > 小红书_青少年请求@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/user\/teenager\/status url reject-dict - # > 小红书_启动引导@ddgksf2013 ^https?:\/\/edith\.xiaohongshu\.com\/api\/sns\/v\d\/guide\/home_guide url reject-dict \ No newline at end of file diff --git a/Rewrite/AdBlock/Netease.adblock b/Rewrite/AdBlock/Netease.adblock index 45b8fbe..01fe3f2 100644 --- a/Rewrite/AdBlock/Netease.adblock +++ b/Rewrite/AdBlock/Netease.adblock @@ -6,10 +6,10 @@ // @TgChannel https://t.me/ddgksf2021 // @Contribute https://t.me/ddgksf2013_bot // @Feedback 📮 ddgksf2013@163.com 📮 -// @UpdateTime 2023-05-20 +// @UpdateTime 2024-03-24 // @Suitable 自行观看“# > ”注释内容 // @Attention 如需引用请注明出处,谢谢合作! -// @Version V1.0.26 +// @Version V1.0.27 // @RewriteURL https://github.com/ddgksf2013/Rewrite/raw/master/AdBlock/Netease.conf // ==/UserScript== @@ -21,8 +21,11 @@ // 4、进入【设置】,然后点击【账号页管理】,进入后可关闭趣测、云村有票、商城、Beat专区等等Tab -hostname = interface*.music.163.com +hostname = interface*.music.163.com + +# > 网易云_新开屏广告 +^http:\/\/ipv4\.music\.163\.com\/e?api\/ad\/loading\/current url reject-200 # > 网易云_评论弹窗 ^https?:\/\/interface(\d)?\.music\.163\.com\/w?e?api\/music\/partner\/picked\/user\/top url reject-dict # > 网易云_位置请求 diff --git a/Rewrite/AdBlock/StartUp.adblock b/Rewrite/AdBlock/StartUp.adblock index d742eba..c7ac178 100644 --- a/Rewrite/AdBlock/StartUp.adblock +++ b/Rewrite/AdBlock/StartUp.adblock @@ -3,256 +3,281 @@ // @Author @ddgksf2013 // @TgChannel 𝐡𝐭𝐭𝐩𝐬://𝐭.𝐦𝐞/𝐝𝐝𝐠𝐤𝐬𝐟𝟐𝟎𝟐𝟏 // @TgBot https://t.me/ddgksf2013_bot -// @WechatID 公众号墨鱼手记 +// @WechatID 公众号@墨鱼手记 // @Feedback 💡 请通过邮件反馈问题『其它方式一概无视』:𝐝𝐝𝐠𝐤𝐬𝐟𝟐𝟎𝟏𝟑@𝟏𝟔𝟑.𝐜𝐨𝐦 💡 -// @UpdateTime 2024-02-18 +// @UpdateTime 2024-04-21 // @Please 如需引用请注明出处,谢谢合作! // @Function 去除APP首页启动广告和部分应用内广告,如果有需要的去除广告的APP,可以公众号后台直接回复 // @ExtraTxt Only provide the removal of open-screen advertisements for personally used apps -// @Attention QuantumultX能去广告,不代表能去所有广告!(应用个数:268) +// @Attention QuantumultX能去广告,不代表能去所有广告!(应用个数:308) // @Mark 名字后面的*代表该应用启动倒计时仍然存在 // @Contributor @blackmatrix7, @app2smile, @DivineEngine, @kyle, @Nick-workflow, @kkpp, @LE // @Tips 利用捷径打开URL[填写AppScheme],即可免开屏广告打开应用,适合无法MITM的APP // @DoitYourself https://mp.weixin.qq.com/s/DOwEQs4Z7eFpGWOVAO-2QA -// @APPList 无法𝐌𝐈𝐓𝐌的应用:银行类[绝大部分]|抖音|蜂巢|滴答清单|Taio|小米运动|有条下载|Fileball|万年历|豆瓣[信息流]|虎牙直播|货拉拉|番茄小说|携程旅行[APP]|凯叔讲故事|七猫小说|醒图|剪映|潮汐|不背单词|高铁管家|咕咚运动|APTV|DayOne|懂车帝 +// @APPList 无法𝐌𝐈𝐓𝐌的应用:银行类[绝大部分]|抖音|蜂巢|滴答清单|Taio|小米运动|有条下载|Fileball|万年历|豆瓣[信息流]|虎牙直播|货拉拉|番茄小说|携程旅行[APP]|凯叔讲故事|七猫小说|醒图|剪映|潮汐|不背单词|高铁管家|咕咚运动|APTV|DayOne|懂车帝|南京银行 // @Attention 如果广告仍然存在,请『卸载应用』重新安装,还是不行则表示『规则里没有或已失效』 // @ScriptURL https://github.com/ddgksf2013/Rewrite/raw/master/AdBlock/StartUp.conf // ==/UserScript== -hostname = mobilepaas.abchina.com.cn, api-one-wscn.awtmt.com, restapi.iyunmai.com, maicai.api.ddxq.mobi, info.mina.mi.com, qadx.qinlinad.com, app-gateway.leisuapi.com, app.c.nf.migu.cn, app.flymodem.com.cn, hfapp-service.qweather.net, *.ahhhhfs.com, promotion.medlive.cn, mobads.baidu.com, entree-ws.igetget.com, axxd.xmseeyouyima.com, guide-acs.m.taobao.com, *.mting.info, ad.lofter.com, entry.ubixioe.com, *.v2ex.com, adv.ccb.com, client-api-v2.oray.com, www.pansearch.me, td.cgmcare.cn, *.yuanfudao.com, ad.mcloud.139.com, wallpaper.soutushenqi.com, carapp.gtmc.com.cn, 140.179.224.63, ap.dongqiudi.com, apapia-sqk.manmanbuy.com, emdcadvise.eastmoney.com, *.tipatipa.xyz, superapp.xgimi.com, mix-api.camera360.com, api1.34580.com, api.wmpvp.com, gateway.abite.com, rengine-platform.llsapp.com, capi.lkcoffee.com, 1jietu.com, bbs-api.miyoushe.com, tcmobileapi.17usoft.com, m.msyc.cc, mgw.mpaas.cn-hangzhou.aliyuncs.com, ytmsout.radio.cn, api.kmovie.gifshow.com, igetcool-gateway.igetcool.com, *.xbwpys.com, open-cms-api.quark.cn, ftapi.10jqka.com.cn, wxa.wxs.qq.com, evs.500.com, j1.pupuapi.com, dq.dxy.cn, m.you.163.com, open-cms-api.uc.cn, *.yuxueyuan.cn, pan-api.bitqiu.com, client.tujia.com, vip7.fzwdyy.cn, *.qyfxgd.cn, *.weilai555.com, *.ecoliving168.com, *cupid.iqiyi.com, gateway.36kr.com, shopapi.io.mi.com, tk.lanjiyin.com, gongdu.youshu.cc, api.21ec74.com, ztoread.ziroom.com, iphone.ac.qq.com, web.chelaile.net.cn, gd.10086.cn, api.00bang.cn, app.hbooker.com, api.sfacg.com, newclient.map.baidu.com, api3.cls.cn, gateway-api.dushu365.com, p0.pipi.cn, jdread-api.jd.com, ms.jr.jd.com, bdsp-x.jd.com, dsp-x.jd.com, api.m.jd.com, router-app-api.jdcloud.com, app.homeinns.com, cdn-evone-ceph.echargenet.com, mlol.qt.qq.com, gg.caixin.com, app-gw.csdn.net, api.gameplus.qq.com, mrobot.pconline.com.cn, djcapp.game.qq.com, mxsa.mxbc.net, cn-acs.m.cainiao.com, zjdr666.com, api.caiyunapp.com, api.ahmobile.cn, gx.10086.cn, emdcadvertise.eastmoney.com, api-sams.walmartmobile.cn, creditcardapp.bankcomm.cn, lban.spdb.com.cn, adapi.izuiyou.com, i.ys7.com, apps.api.ke.com, api.yonghuivip.com, access.mypikpak.com, gateway.shouqiev.com, res.pizzahut.com.cn, api.caijingmobile.com, 3g.csair.com, client-api.oray.com, bgw.xinyue.qq.com, api-new.app.acfun.cn, m.client.10010.com, open.fitdays.cn, gha.ghac.cn, sh-gateway.shihuo.cn, wcprd.hilton.com, ad.12306.cn, 103.91.210.141, adx-cn.anythinktech.com, js-ad.ayximgs.com, api.dangdang.com, pzoap.moedot.com, pipi.4kya.com, vip7.fzwdyy.cn, sdk.alibaba.com.ailbaba.me, tft-app.cdtft.cn, bgw.xinyue.qq.com, pan.baidu.com, yunbusiness.ccb.com, client.app.coc.10086.cn, t1.market.xiaomi.com, api.m.mi.com, app.zhuanzhuan.com, api.cloud.189.cn, appwk.baidu.com, us.l.qq.com, open.e.kuaishou.com, mi.gdt.qq.com, emdcadvertise.eastmoney.com, adm.10jqka.com.cn, a.qiumibao.com, api.tipsoon.com, b.appsimg.com, ios.sspai.com, zconfig.alibabausercontent.com, api.touker.com, mpcs.suning.com, api.pinduoduo.com, api.yangkeduo.com, easyreadfs.nosdn.127.net, sp.kaola.com, gw.kaola.com, mime.baidu.com, learn.chaoxing.com, mapi.dangdang.com, api.dangdang.com, open.e.kuaishou.com, client.qunar.com, mpos-pic.helipay.com, dili.bdatu.com, wap.ngchina.cn, ih2.ireader.com, adpai.thepaper.cn, api.haohaozhu.cn, list-app-m.i4.cn, api.xiachufang.com, peisongapi.meituan.com, *gaoqingdianshi.com, *.kakamobi.cn, api.jxedt.com, slapi.oray.net, r.inews.qq.com, app.yinxiang.com, mapi.appvipshop.com, syh.zybang.com, cdn.cmgadx.com, api.internetofcity.cn, img.meituan.net, lcen.xiaote.net, venus.yhd.com, api.shenyin.name, mage*.if.qidian.com, god.gameyw.netease.com, m.ibuscloud.com, e.dangdang.com, app2.autoimg.cn, adproxy.autohome.com.cn, *.umetrip.com, explorer.tratao.com, overseas.weico.cc, 118.178.214.118, dapis.mting.info, acs.m.taobao.com, open3.vistastory.com, ssp.dzh.com.cn, www.meituan.com, client.mail.163.com, api.izuiyou.com, appapi.huazhu.com, api.wfdata.club, interface*.music.163.com, api.psy-1.com, res.kfc.com.cn, mp.weixin.qq.com, security.wechat.com, weixin110.qq.com, cdn.*.chelaileapp.cn, api.coolapk.com, app3.qdaily.com, daoyu.sdo.com, img.jiemian.com, ccsp-egmas.sf-express.com, *.laichon.com, app.ap.d3yuiw4.com, www.i3zh.com, api.yikaobang.com.cn, api-ad-product.huxiu.com, jad-api.jin10.com, mob.mddcloud.com.cn, appactive.1234567.com.cn, rtbapi.douyucdn.cn, service.busi.inke.cn, gab.122.gov.cn, dispatcher.camera360.com, app.api.versa-ai.com, open.taou.com, api.taou.com, track.mm.taou.com, app.dewu.com, data-collector.soulapp.cn, api.gamer.com.tw, beta-api.crunchyroll.com, api.vistopia.com.cn, pss.txffp.com, m.sd.10086.cn, helper.2bulu.com, 47.100.65.202, api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, new.vip.weibo.cn, wap.js.10086.cn, tagit.hyhuo.com, top-widgets-api.xiaozujian.com, *mangaapi.manhuaren.*, apis.lifeweek.com.cn, support.you.163.com, yanxuan.nosdn.127.net, *.peopleapp.com, new-app-api.ylyk.com, gw.aihuishou.com, *.58cdn.com.cn, app.58.com, api.zhihu.com, creditcardapp.bankcomm.com, res.xiaojukeji.com, 116.85.2.15, 116.85.2.14, 212.129.159.79, lchttpapi.xczim.com, business.msstatic.com, api.kkmh.com, *.chelaile.net.cn, api.jr.mi.com, api.m.mi.com, guanyu.longfor.com, elemecdn.com, fuss10.elemecdn.com, www1.elecfans.com, m.tuniu.com, mapi.mafengwo.cn, api.xiaoyi.com, api.douban.com, otheve.beacon.qq.com, mapi.sfbest.com, api.mwee.cn, sso.ifanr.com, s3plus.meituan.net, flowplus.meituan.net, p*.meituan.net, testflight.apple.com, wmapi.meituan.com, appconf.mail.163.com, dl-cu-hz.lechange.cn, fbchina.flipchina.cn, zone.guiderank-app.com, homefront.qunar.com, afd.baidu.com, ma-adx.ctrip.com, mbd.baidu.com, img.rr.tv, api.rr.tv, *.hoopchina.com, goblin.hupu.com, spclient.wg.spotify.com +hostname = www.kujiale.com, mama.dxy.com, newapp2.szsmk.com, vidz.3hxq.cn, xapi.xinmanhua.net, jz.wacaijizhang.com, ads.closeli.cn, shop-api.retail.mi.com, gorgon.youdao.com, cdke.youdao.com, m.stock.pingan.com, sdk.1rtb.net, careapi.oclean.com, app.10099.com.cn, hc-ssp.sm.cn, *.dcloud.net.cn, apps.workair.cn, app-api.medsci.cn, ad.cj.sina.cn, app-cdn.2q10.com, api.merach.com, zlsdk.1rtb.net, advertise.bczeducation.cn, notify.baicizhan.com, app.api.qjjfin.com, dynamicad.kfc.com.cn, ump.sz.creditcard.ecitic.com, *.didapinche.com, api.mcd.cn, comicapi.manhuashe.com, acs-m.freshippo.com, zjmbank.js96008.com, www.flyert.com, api.ys7.com, saad.ms.zhangyue.net, dj.palmestore.com, device-box.onethingpcs.com, *.anythinktech.com, api.xueqiu.com, switch.jumpvg.com, mobilepaas.abchina.com.cn, api-one-wscn.awtmt.com, restapi.iyunmai.com, maicai.api.ddxq.mobi, info.mina.mi.com, qadx.qinlinad.com, app-gateway.leisuapi.com, app.c.nf.migu.cn, app.flymodem.com.cn, hfapp-service.qweather.net, *.ahhhhfs.com, promotion.medlive.cn, mobads.baidu.com, entree-ws.igetget.com, axxd.xmseeyouyima.com, guide-acs.m.taobao.com, *.mting.info, ad.lofter.com, entry.ubixioe.com, *.v2ex.com, adv.ccb.com, client-api-v2.oray.com, www.pansearch.me, td.cgmcare.cn, *.yuanfudao.com, ad.mcloud.139.com, wallpaper.soutushenqi.com, carapp.gtmc.com.cn, 140.179.224.63, ap.dongqiudi.com, apapia-sqk.manmanbuy.com, emdcadvise.eastmoney.com, *.tipatipa.xyz, superapp.xgimi.com, mix-api.camera360.com, api1.34580.com, api.wmpvp.com, gateway.abite.com, rengine-platform.llsapp.com, capi.lkcoffee.com, 1jietu.com, bbs-api.miyoushe.com, tcmobileapi.17usoft.com, m.msyc.cc, mgw.mpaas.cn-hangzhou.aliyuncs.com, ytmsout.radio.cn, api.kmovie.gifshow.com, igetcool-gateway.igetcool.com, *.xbwpys.com, open-cms-api.quark.cn, ftapi.10jqka.com.cn, wxa.wxs.qq.com, evs.500.com, j1.pupuapi.com, dq.dxy.cn, m.you.163.com, open-cms-api.uc.cn, *.yuxueyuan.cn, pan-api.bitqiu.com, client.tujia.com, vip7.fzwdyy.cn, *.qyfxgd.cn, *.weilai555.com, *.ecoliving168.com, *cupid.iqiyi.com, gateway.36kr.com, shopapi.io.mi.com, tk.lanjiyin.com, gongdu.youshu.cc, api.21ec74.com, ztoread.ziroom.com, iphone.ac.qq.com, web.chelaile.net.cn, gd.10086.cn, api.00bang.cn, app.hbooker.com, api.sfacg.com, newclient.map.baidu.com, api3.cls.cn, gateway-api.dushu365.com, p0.pipi.cn, jdread-api.jd.com, ms.jr.jd.com, bdsp-x.jd.com, dsp-x.jd.com, api.m.jd.com, router-app-api.jdcloud.com, app.homeinns.com, cdn-evone-ceph.echargenet.com, mlol.qt.qq.com, gg.caixin.com, app-gw.csdn.net, api.gameplus.qq.com, mrobot.pconline.com.cn, djcapp.game.qq.com, mxsa.mxbc.net, cn-acs.m.cainiao.com, zjdr666.com, api.caiyunapp.com, api.ahmobile.cn, gx.10086.cn, emdcadvertise.eastmoney.com, api-sams.walmartmobile.cn, creditcardapp.bankcomm.cn, lban.spdb.com.cn, adapi.izuiyou.com, i.ys7.com, apps.api.ke.com, api.yonghuivip.com, access.mypikpak.com, gateway.shouqiev.com, res.pizzahut.com.cn, api.caijingmobile.com, 3g.csair.com, client-api.oray.com, bgw.xinyue.qq.com, api-new.app.acfun.cn, m.client.10010.com, open.fitdays.cn, gha.ghac.cn, sh-gateway.shihuo.cn, wcprd.hilton.com, ad.12306.cn, 103.91.210.141, adx-cn.anythinktech.com, js-ad.ayximgs.com, api.dangdang.com, pzoap.moedot.com, pipi.4kya.com, vip7.fzwdyy.cn, sdk.alibaba.com.ailbaba.me, tft-app.cdtft.cn, bgw.xinyue.qq.com, pan.baidu.com, yunbusiness.ccb.com, client.app.coc.10086.cn, t1.market.xiaomi.com, api.m.mi.com, app.zhuanzhuan.com, api.cloud.189.cn, appwk.baidu.com, us.l.qq.com, open.e.kuaishou.com, mi.gdt.qq.com, emdcadvertise.eastmoney.com, adm.10jqka.com.cn, a.qiumibao.com, api.tipsoon.com, b.appsimg.com, ios.sspai.com, zconfig.alibabausercontent.com, api.touker.com, mpcs.suning.com, api.yangkeduo.com, easyreadfs.nosdn.127.net, sp.kaola.com, gw.kaola.com, mime.baidu.com, learn.chaoxing.com, mapi.dangdang.com, api.dangdang.com, open.e.kuaishou.com, client.qunar.com, mpos-pic.helipay.com, dili.bdatu.com, wap.ngchina.cn, ih2.ireader.com, adpai.thepaper.cn, api.haohaozhu.cn, list-app-m.i4.cn, api.xiachufang.com, peisongapi.meituan.com, *gaoqingdianshi.com, *.kakamobi.cn, api.jxedt.com, slapi.oray.net, r.inews.qq.com, app.yinxiang.com, mapi.appvipshop.com, syh.zybang.com, cdn.cmgadx.com, api.internetofcity.cn, img.meituan.net, lcen.xiaote.net, venus.yhd.com, api.shenyin.name, mage*.if.qidian.com, god.gameyw.netease.com, m.ibuscloud.com, e.dangdang.com, app2.autoimg.cn, adproxy.autohome.com.cn, *.umetrip.com, explorer.tratao.com, overseas.weico.cc, 118.178.214.118, 182.92.251.113, 120.241.*, dapis.mting.info, acs.m.taobao.com, open3.vistastory.com, ssp.dzh.com.cn, www.meituan.com, client.mail.163.com, api.izuiyou.com, appapi.huazhu.com, api.wfdata.club, interface*.music.163.com, api.psy-1.com, res.kfc.com.cn, mp.weixin.qq.com, security.wechat.com, weixin110.qq.com, cdn.*.chelaileapp.cn, api.coolapk.com, app3.qdaily.com, daoyu.sdo.com, img.jiemian.com, ccsp-egmas.sf-express.com, *.laichon.com, app.ap.d3yuiw4.com, www.i3zh.com, api.yikaobang.com.cn, api-ad-product.huxiu.com, jad-api.jin10.com, mob.mddcloud.com.cn, appactive.1234567.com.cn, rtbapi.douyucdn.cn, service.busi.inke.cn, gab.122.gov.cn, dispatcher.camera360.com, app.api.versa-ai.com, open.taou.com, api.taou.com, track.mm.taou.com, app.dewu.com, data-collector.soulapp.cn, api.gamer.com.tw, beta-api.crunchyroll.com, api.vistopia.com.cn, pss.txffp.com, m.sd.10086.cn, helper.2bulu.com, 47.100.65.202, api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, new.vip.weibo.cn, wap.js.10086.cn, tagit.hyhuo.com, top-widgets-api.xiaozujian.com, *mangaapi.manhuaren.*, apis.lifeweek.com.cn, support.you.163.com, yanxuan.nosdn.127.net, *.peopleapp.com, new-app-api.ylyk.com, gw.aihuishou.com, *.58cdn.com.cn, app.58.com, api.zhihu.com, creditcardapp.bankcomm.com, res.xiaojukeji.com, 116.85.2.15, 116.85.2.14, 212.129.159.79, lchttpapi.xczim.com, business.msstatic.com, api.kkmh.com, *.chelaile.net.cn, api.jr.mi.com, api.m.mi.com, guanyu.longfor.com, elemecdn.com, fuss10.elemecdn.com, www1.elecfans.com, m.tuniu.com, mapi.mafengwo.cn, api.xiaoyi.com, api.douban.com, otheve.beacon.qq.com, mapi.sfbest.com, api.mwee.cn, sso.ifanr.com, s3plus.meituan.net, flowplus.meituan.net, p*.meituan.net, testflight.apple.com, wmapi.meituan.com, appconf.mail.163.com, dl-cu-hz.lechange.cn, fbchina.flipchina.cn, zone.guiderank-app.com, homefront.qunar.com, afd.baidu.com, ma-adx.ctrip.com, mbd.baidu.com, img.rr.tv, api.rr.tv, *.hoopchina.com, goblin.hupu.com, spclient.wg.spotify.com + # ======= 0~9 ======= # -# > version -^https?:\/\/2024.02.18/v2.0.421 url reject-200 +# > Version +^https?:\/\/2024.04.21/v2.0.474 url reject-200 # > 10 -^https?:\/\/ftapi\.10jqka\.com\.cn\/futgwapi\/api\/om\/v\d\/ad\/common\/transfer url reject +^https?:\/\/ftapi\.10jqka\.com\.cn\/futgwapi\/api\/om\/v\d\/ad\/common\/transfer url reject-200 # > 58 -^https?:\/\/app\.58\.com\/api\/home\/(advertising|appadv) url reject +^https?:\/\/app\.58\.com\/api\/home\/(advertising|appadv) url reject-200 # > 555 -^https?:\/\/[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+){1,3}(:\d+)?\/api\/v\d\/movie\/index_recommend url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/555Ad.js -^https?:\/\/[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+){1,3}(:\d+)?\/api\/v\d\/advert url reject +^https?:\/\/[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){1,3}(:\d+)?\/api\/v\d\/movie\/index_recommend url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/555Ad.js +^https?:\/\/[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){1,3}(:\d+)?\/.*?\/v\d\/(version$|notice\?|top_notice\?|advert\?position=[^2]+) url reject-200 # > 12123 -^https:\/\/gab\.122\.gov\.cn\/eapp\/m\/sysquery url reject +^https:\/\/gab\.122\.gov\.cn\/eapp\/m\/sysquery url reject-200 +# > 123pan +^https?:\/\/sdk\.1rtb\.net\/sdk\/req_ad url reject-200 # > 36kr -^https?:\/\/gateway\.36kr\.com\/api\/adx\/ad\/show url reject +^https?:\/\/gateway\.36kr\.com\/api\/adx\/ad\/show url reject-200 # > 500 -^https?:\/\/evs\.500\.com\/esinfo\/loading\/loading url reject +^https?:\/\/evs\.500\.com\/esinfo\/loading\/loading url reject-200 # > 12306 -^https?:\/\/ad\.12306\.cn\/ad\/ser\/getAdList url script-analyze-echo-response https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/12306.js +^https?:\/\/ad\.12306\.cn\/ad\/ser\/getAdList url script-analyze-echo-response https://github.com/ddgksf2013/Scripts/raw/master/12306.js # ======= A ======= # # > acfun -^https?:\/\/api-new\.app\.acfun\.cn\/rest\/app\/flash\/screen\/ url reject +^https?:\/\/api-new\.app\.acfun\.cn\/rest\/app\/flash\/screen\/ url reject-200 # > aihuishou -^https?:\/\/gw.aihuishou.com\/app-portal\/home\/getadvertisement url reject +^https?:\/\/gw.aihuishou.com\/app-portal\/home\/getadvertisement url reject-200 # > appso -^https?:\/\/sso.ifanr.com\/jiong\/IOS\/appso\/splash\/ url reject +^https?:\/\/sso.ifanr.com\/jiong\/IOS\/appso\/splash\/ url reject-200 # > alibaba -^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.alibaba\.advertisementservice\.getadv\/ url reject +^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.alibaba\.advertisementservice\.getadv\/ url reject-200 # > amdc -^http:\/\/amdc\.m\.taobao\.com url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Amdc.min.js +^http:\/\/amdc\.m\.taobao\.com url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/amdc.js # > ahfs -^https?:\/\/.*(xbwpys|ahhhhfs)\.com\/($|[0-9a-zA-Z_/]+\/$) url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Ahfs.js +^https?:\/\/.*(xbwpys|ahhhhfs)\.com\/($|[0-9a-zA-Z_/]+\/$) url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/ahfs.js +# > aastocks +^https?:\/\/.*aastocks\.com\/ad\/ url reject-200 # ======= B ======= # # > baiduditu -^https:\/\/newclient\.map\.baidu\.com\/client\/phpui2\/\?qt=ads url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/BaiduMap.min.js +^https:\/\/newclient\.map\.baidu\.com\/client\/phpui2\/\?qt=ads url script-response-body https://raw.githubusercontent.com/app2smile/rules/master/js/baidumap.js # > baidufanyi -^https?:\/\/mime\.baidu\.com\/v\d\/IosStart\/getStartInfo url reject -^https?:\/\/mime\.baidu\.com\/v\d\/activity\/advertisement url reject +^https?:\/\/mime\.baidu\.com\/v\d\/IosStart\/getStartInfo url reject-200 +^https?:\/\/mime\.baidu\.com\/v\d\/activity\/advertisement url reject-200 # > baiduwenku -^https?:\/\/appwk\.baidu\.com\/xpage\/interface\/wknaad url reject +^https?:\/\/appwk\.baidu\.com\/xpage\/interface\/wknaad url reject-200 # > baiduwangpan -^https?:\/\/pan\.baidu\.com\/act\/v\d\/(bchannel|welfare)\/list url reject -^https?:\/\/pan\.baidu\.com\/rest\/2\.0\/pcs\/ad url reject -^https?:\/\/pan\.baidu\.com\/act\/api\/activityentry url reject +^https?:\/\/pan\.baidu\.com\/act\/v\d\/(bchannel|welfare)\/list url reject-200 +^https?:\/\/pan\.baidu\.com\/rest\/2\.0\/pcs\/ad url reject-200 +^https?:\/\/pan\.baidu\.com\/act\/api\/activityentry url reject-200 # > beijingshouqi -^https?:\/\/gateway\.shouqiev\.com\/fsda\/app\/bootImage\.json url reject +^https?:\/\/gateway\.shouqiev\.com\/fsda\/app\/bootImage\.json url reject-200 # > bishengke -^https?:\/\/res\.pizzahut\.com\.cn\/CRM\/phad\/apphome\/apphome url reject +^https?:\/\/res\.pizzahut\.com\.cn\/CRM\/phad\/apphome\/apphome url reject-200 # > beikezhaofang -^https?:\/\/apps\.api\.ke\.com\/config\/config\/(bootpage|getactivityconfig) url reject +^https?:\/\/apps\.api\.ke\.com\/config\/config\/(bootpage|getactivityconfig) url reject-200 # > boluobaoqingxiaoshuo -^https:\/\/api\.sfacg\.com\/ioscfg url reject +^https:\/\/api\.sfacg\.com\/ioscfg url reject-200 # > bit -^https?:\/\/pan-api\.bitqiu\.com\/activity\/getPromoteGuide url reject +^https?:\/\/pan-api\.bitqiu\.com\/activity\/getPromoteGuide url reject-200 # > baidushurufa -^https?:\/\/mobads\.baidu\.com\/cpro\/ui\/mads.php url reject +^https?:\/\/mobads\.baidu\.com\/cpro\/ui\/mads.php url reject-200 +# > baobaoshuyunyu +^http:\/\/.*babytree\.com/(plough\.do|go_search\/api\/mobile_search_new\/get_multi_search_default_keywords) url reject-200 +^http:\/\/m\.meitun\.com\/newapi\/router\/topic\/hometptf\/feedRecommend url reject-200 +# > baicizhan +^https?:\/\/notify\.baicizhan\.com\/rpc\/notify\/get_latest_notify url reject-200 +^https?://advertise\.bczeducation\.cn\/rpc\/advertise url reject-200 # ======= C ======= # # > clicli -^https?:\/\/js-ad\.ayximgs\.com\.ad-universe-cdn\.hzhcbkj\.cn\/xgapp\.php\/v2\/top_notice url reject +^https?:\/\/js-ad\.ayximgs\.com\.ad-universe-cdn\.hzhcbkj\.cn\/xgapp\.php\/v2\/top_notice url reject-200 # > chelaile -^https?:\/\/web\.chelaile\.net\.cn\/api\/adpub\/ad url reject -^https?:\/\/cdn\.\w{3}\.chelaileapp\.cn\/(api\/)?adpub url reject -^https?:\/\/api.chelaile.net.cn\/adpub\/ url reject -^https?:\/\/api.chelaile.net.cn\/goocity\/advert\/ url reject -^https?:\/\/atrace.chelaile.net.cn\/adpub\/ url reject -^https?:\/\/atrace.chelaile.net.cn\/exhibit\?&adv_image url reject -^https?:\/\/pic1.chelaile.net.cn\/adv\/ url reject +^https?:\/\/web\.chelaile\.net\.cn\/api\/adpub\/ad url reject-200 +^https?:\/\/cdn\.\w{3}\.chelaileapp\.cn\/(api\/)?adpub url reject-200 +^https?:\/\/api.chelaile.net.cn\/adpub\/ url reject-200 +^https?:\/\/api.chelaile.net.cn\/goocity\/advert\/ url reject-200 +^https?:\/\/atrace.chelaile.net.cn\/adpub\/ url reject-200 +^https?:\/\/atrace.chelaile.net.cn\/exhibit\?&adv_image url reject-200 +^https?:\/\/pic1.chelaile.net.cn\/adv\/ url reject-200 # > crunchyroll https://beta-api.crunchyroll.com/cms url response-body offset_ms":\d+ response-body offset_ms":99999999999999 # > chaoxingxuexitong -^https?:\/\/learn\.chaoxing\.com\/apis\/service\/appConfig url reject +^https?:\/\/learn\.chaoxing\.com\/apis\/service\/appConfig url reject-200 # > caifu -^https?:\/\/emdcadvertise\.eastmoney\.com\/infoService\/v\d url reject +^https?:\/\/emdcadvertise\.eastmoney\.com\/infoService\/v\d url reject-200 # > caijingzazhi -^https?:\/\/api\.caijingmobile\.com\/(ad|advert)\/ url reject +^https?:\/\/api\.caijingmobile\.com\/(ad|advert)\/ url reject-200 # > caiyun -^https:\/\/api\.caiyunapp\.com\/v1\/activity url reject +^https:\/\/api\.caiyunapp\.com\/v1\/activity url reject-200 # > ciweimaoyuedu -^https?:\/\/app\.hbooker\.com\/setting\/get_startpage_url_list url reject +^https?:\/\/app\.hbooker\.com\/setting\/get_startpage_url_list url reject-200 # > cainiao -^https?:\/\/cn-acs\.m\.cainiao\.com\/gw\/mtop\.cainiao\.guoguo\.nbnetflow\.ads\.(show|mshow)\.cn\/ url reject +^https?:\/\/cn-acs\.m\.cainiao\.com\/gw\/mtop\.cainiao\.guoguo\.nbnetflow\.ads\.(show|mshow)\.cn\/ url reject-200 # > csdn -^https?:\/\/app-gw\.csdn\.net\/silkroad-api\/api\/v\d\/assemble\/list\/pub\/channel\/app_open_screen_ad url reject +^https?:\/\/app-gw\.csdn\.net\/silkroad-api\/api\/v\d\/assemble\/list\/pub\/channel\/app_open_screen_ad url reject-200 # > cailianshe -^https?:\/\/api3\.cls\.cn\/v1\/boot\/ad url reject +^https?:\/\/api3\.cls\.cn\/v1\/boot\/ad url reject-200 # > caixin -^https?:\/\/gg\.caixin\.com\/s\?z=caixin&op=1&c=3362 url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/caixinads.js +^https?:\/\/gg\.caixin\.com\/s\?z=caixin&op=1&c=3362 url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/caixinads.js # ======= D ======= # # > dongkakongjian* -#^https?:\/\/m\.creditcard\.ecitic\.com\/citiccard\/mbk\/appspace-getway\/getWay\/dkkj-system-web\/system\/v\d\/init-config url reject +#^https?:\/\/m\.creditcard\.ecitic\.com\/citiccard\/mbk\/appspace-getway\/getWay\/dkkj-system-web\/system\/v\d\/init-config url reject-200 # > dangdang -^https?:\/\/api\.dangdang\.com\/mapi\d\/mobile\/init url reject +^https?:\/\/api\.dangdang\.com\/mapi\d\/mobile\/init url reject-200 # > dashixiong -^https?:\/\/sdk\.alibaba\.com\.ailbaba\.me\/.*?\/v\d\/(version|top_notice\?|advert\?position=[^2]+) url reject +^https?:\/\/sdk\.alibaba\.com\.ailbaba\.me\/.*?\/v\d\/(version|top_notice\?|advert\?position=[^2]+) url reject-200 # > douban -^https?:\/\/api\.douban\.com\/v2\/app_ads\/splash url reject -^https?:\/\/api\.douban\.com\/b.*\/common_ads\?.* url reject +^https?:\/\/api\.douban\.com\/v2\/app_ads\/splash url reject-200 +^https?:\/\/api\.douban\.com\/b.*\/common_ads\?.* url reject-200 # > didichuxing -https?://res\.xiaojukeji\.com\/resapi\/activity\/mget url reject -https?:\/\/res\.xiaojukeji\.com\/resapi\/activity\/get(Ruled|Preload|PasMultiNotices) url reject +https?://res\.xiaojukeji\.com\/resapi\/activity\/mget url reject-200 +https?:\/\/res\.xiaojukeji\.com\/resapi\/activity\/get(Ruled|Preload|PasMultiNotices) url reject-200 # > daoyu -^https?:\/\/daoyu\.sdo\.com\/api\/userCommon\/getAppStartAd url reject +^https?:\/\/daoyu\.sdo\.com\/api\/userCommon\/getAppStartAd url reject-200 # > dongqiudi ^https?:\/\/ap\.dongqiudi\.com\/plat\/v4 url echo-response text/json echo-response https://raw.githubusercontent.com/ddgksf2013/Scripts/master/dongqiudi.js # > douyu -^https?:\/\/rtbapi\.douyucdn\.cn\/japi\/sign\/app\/getinfo url reject +^https?:\/\/rtbapi\.douyucdn\.cn\/japi\/sign\/app\/getinfo url reject-200 # > dewu -^https:\/\/app\.dewu\.com\/api\/v1\/app\/advertisement\/ url reject +^https:\/\/app\.dewu\.com\/api\/v1\/app\/advertisement\/ url reject-200 # > donghuafeng ^https?:\/\/api\.gamer\.com\.tw\/mobile_app\/anime\/v\d\/anime_get_question\.php url reject-dict ;^https:\/\/api\.gamer\.com\.tw\/mobile_app\/anime\/v\d\/(token|m3u8).php\? url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Bahamut/BahamutAnimeAds.js # > dazhihui -^https?://ssp\.dzh\.com\.cn/v2api/adgroupjson url reject +^https?://ssp\.dzh\.com\.cn/v2api/adgroupjson url reject-200 # > dangdangyuedu -^https?:\/\/e.dangdang.com\/media\/api.+\?action=getDeviceStartPage url reject -^https?:\/\/api\.dangdang\.com\/mapi\d\/mobile\/init url reject -^https?:\/\/mapi\.dangdang\.com\/index\.php\?action=init url reject -^https?:\/\/e\.dangdang\.com\/.+?getDeviceStartPage url reject +^https?:\/\/e.dangdang.com\/media\/api.+\?action=getDeviceStartPage url reject-200 +^https?:\/\/api\.dangdang\.com\/mapi\d\/mobile\/init url reject-200 +^https?:\/\/mapi\.dangdang\.com\/index\.php\?action=init url reject-200 +^https?:\/\/e\.dangdang\.com\/.+?getDeviceStartPage url reject-200 # > dianshijia -^https?:\/\/api\.gaoqingdianshi\.com\/api\/v\d\/ad\/ url reject -^https?:\/\/cdn\.dianshihome\.com\/static\/ad\/ url reject +^https?:\/\/api\.gaoqingdianshi\.com\/api\/v\d\/ad\/ url reject-200 +^https?:\/\/cdn\.dianshihome\.com\/static\/ad\/ url reject-200 +# > dingxiangmama +^https?:\/\/mama\.dxy\.com\/api\/cms\/client\/popup-window\/list url reject-200 # > dongfangcaifu -^https?:\/\/emdcadvertise\.eastmoney\.com\/infoService\/v2 url reject +^https?:\/\/emdcadvertise\.eastmoney\.com\/infoService\/v2 url reject-200 # > damai -^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.damai\.wireless\.home\.welcome url reject -^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.damai\.mec\.popup\.get url reject +^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.damai\.wireless\.home\.welcome url reject-200 +^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.damai\.mec\.popup\.get url reject-200 # > dami -^https?:\/\/vip7\.fzwdyy\.cn:8083\/api\/(getAdvertInfo|getGOOGAdvert) url reject +^https?:\/\/vip7\.fzwdyy\.cn:8083\/api\/(getAdvertInfo|getGOOGAdvert) url reject-200 # > dingxiangyuan -^https?:\/\/dq\.dxy\.cn\/api\.php\?action=getpostbanners url reject +^https?:\/\/dq\.dxy\.cn\/api\.php\?action=getpostbanners url reject-200 # > dongfangcaifu -^https?:\/\/emdcadvise\.eastmoney\.com\/infoAdviseService$ url reject +^https?:\/\/emdcadvise\.eastmoney\.com\/infoAdviseService$ url reject-200 # > dedao -^https?:\/\/entree-ws\.igetget\.com\/oms\/front\/start\/push url reject +^https?:\/\/entree-ws\.igetget\.com\/oms\/front\/start\/push url reject-200 # > dingdongmaicai ^https?:\/\/maicai\.api\.ddxq\.mobi\/advert\/getAd url response-body rt_time":\d{2} response-body rt_time":40 +# > dejian +^https?:\/\/dj\.palmestore\.com\/zybk\/api\/ad url reject-200 +^https?:\/\/saad\.ms\.zhangyue\.net\/ad\/ url reject-200 +# > didachuxing +^https?:\/\/capis.*didapinche\.com\/ad\/cx\/startup url reject-200 +# > dongkakongjian* +^https?:\/\/ump\.sz\.creditcard\.ecitic\.com\/citiccard\/cm-ump\/ump-gateway\/ump-net-app\/ump-net-app\/adv url reject-200 # ======= E ======= # # > elema -^https?:\/\/elemecdn.com\/.+\/sitemap url reject -^https?:\/\/fuss10.elemecdn.com\/.+\/w\/640\/h\/\d{3,4} url reject -^https?:\/\/fuss10.elemecdn.com\/.+\/w\/750\/h\/\d{3,4} url reject -^https?:\/\/fuss10.elemecdn.com\/.+.mp4 url reject -^https?:\/\/www1.elecfans.com\/www\/delivery\/ url reject +^https?:\/\/elemecdn.com\/.+\/sitemap url reject-200 +^https?:\/\/fuss10.elemecdn.com\/.+\/w\/640\/h\/\d{3,4} url reject-200 +^https?:\/\/fuss10.elemecdn.com\/.+\/w\/750\/h\/\d{3,4} url reject-200 +^https?:\/\/fuss10.elemecdn.com\/.+.mp4 url reject-200 +^https?:\/\/www1.elecfans.com\/www\/delivery\/ url reject-200 # > echongdian ^https?:\/\/cdn-evone-ceph\.echargenet\.com\/gw-emas-cdn\/63c4e3b558bb610008969f89 url reject-200 +# > echongdian +^https?:\/\/cdn-evone-ceph\.echargenet\.com\/gw-emas-cdn url reject-200 # ======= F ======= # # > fandengdushu -^https?:\/\/gateway-api\.dushu365\.com\/chief-orch\/config\/config\/v100\/appConfig url reject +^https?:\/\/gateway-api\.dushu365\.com\/chief-orch\/config\/config\/v100\/appConfig url reject-200 # > feizhu -^https:\/\/acs\.m\.taobao\.com\/gw\/mtop\.fliggy\.crm\.screen\.allresource url reject +^https:\/\/acs\.m\.taobao\.com\/gw\/mtop\.fliggy\.crm\.screen\.allresource url reject-200 # > feikechaguan -^https?:\/\/47\.100\.65\.202\/source\/plugin\/mobile\/mobile\.php\?module=advis url reject -^https?:\/\/47\.100\.65\.202\/api\/mobile\/index\.php\?version=\d&mobile=yes&module=basicdata&type=forumlist url response-body adv response-body ddgksf2013 -^https?:\/\/47\.100\.65\.202\/source\/plugin\/mobile\/mobile\.php\?module=threadpost&.+?&page=1 url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/FlyPiggy.js +^https?:\/\/www\.flyert\.com\/source\/plugin\/mobile\/mobile\.php\?module=advis url reject-200 +^https?:\/\/www\.flyert\.com\/api\/mobile\/index\.php\?version=\d&mobile=yes&module=basicdata&type=forumlist url response-body adv response-body ddgksf2013 +^https?:\/\/www\.flyert\.com\/source\/plugin\/mobile\/mobile\.php\?module=threadpost&.+?&page=1 url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/fly.js # > fengyunxing -^https?:\/\/carapp\.gtmc\.com\.cn\/api\/appgtmc\/homePage\/HomePageAction\/queryHomePageImg\.json url reject +^https?:\/\/carapp\.gtmc\.com\.cn\/api\/appgtmc\/homePage\/HomePageAction\/queryHomePageImg\.json url reject-200 # > feimaoguanjia ^https?:\/\/app\.flymodem\.com\.cn\/Appapi\/Public\/welecome url reject-200 +# > etnet +^http:\/\/gateway2\.etnet\.com\.hk\/etnetApp\/theme\/seasonal\/v30\/theme.json url reject-200 # ======= G ======= # # > gongshijilu -^https:\/\/mi\.gdt\.qq\.com\/gdt_mview\.fcg url reject -^https:\/\/open\.e\.kuaishou\.com\/rest\/e\/v3\/open\/univ url reject +^https:\/\/mi\.gdt\.qq\.com\/gdt_mview\.fcg url reject-200 +^https:\/\/open\.e\.kuaishou\.com\/rest\/e\/v3\/open\/univ url reject-200 # > gaidepaihang -https://zone.guiderank-app.com/guiderank-web/app/ad/listLaunchADByCity.do url reject +https://zone.guiderank-app.com/guiderank-web/app/ad/listLaunchADByCity.do url reject-200 # > guanyu -https://guanyu.longfor.com/app-server/api/v1/main/start url reject +https://guanyu.longfor.com/app-server/api/v1/main/start url reject-200 # > guangqibentian -^https?:\/\/gha\.ghac\.cn\:8081\/base\/app\/api\/ad\/query\?adType url reject +^https?:\/\/gha\.ghac\.cn\:8081\/base\/app\/api\/ad\/query\?adType url reject-200 # > guojiadili -^https?:\/\/dili\.bdatu\.com\/jiekou\/ad url reject -^https?:\/\/wap\.ngchina\.cn\/news\/adverts url reject +^https?:\/\/dili\.bdatu\.com\/jiekou\/ad url reject-200 +^https?:\/\/wap\.ngchina\.cn\/news\/adverts url reject-200 # ======= H ======= # # > haoxingtizhongcheng -^http:\/\/open\.fitdays\.cn\/uploads\/ad\/ url reject +^http:\/\/open\.fitdays\.cn\/uploads\/ad\/ url reject-200 # > huazhu -^https?:\/\/appapi\.huazhu\.com:\d{4}\/client\/app\/getAppStartPage\/ url reject +^https?:\/\/appapi\.huazhu\.com:\d{4}\/client\/app\/getAppStartPage\/ url reject-200 # > hupu ^https?:\/\/i\d\.hoopchina\.com\.cn/blogfile\//d+\//d+\/BbsImg\.(?<=(big.(png|jpg)))$ url reject-img ^https?:\/\/games\.mobileapi\.hupu\.com\/.+\/(search|interfaceAdMonitor|status|hupuBbsPm)/(hotkey|init|hupuBbsPm)\. url reject-img ^https?:\/\/games\.mobileapi\.hupu\.com\/interfaceAdMonitor url reject-img -^https?:\/\/goblin\.hupu\.com\/.+\/interfaceAd\/getOther url reject +^https?:\/\/goblin\.hupu\.com\/.+\/interfaceAd\/getOther url reject-200 ^https?:\/\/i1\.hoopchina\.com\.cn\/blogfile\/.+_\d{3}x\d{4} url reject-img # > hongbanbao -https://fbchina.flipchina.cn/v2/ad/query/* url reject +https://fbchina.flipchina.cn/v2/ad/query/* url reject-200 # > huyazhibo -^https?:\/\/business\.msstatic\.com\/advertiser\/material url reject +^https?:\/\/business\.msstatic\.com\/advertiser\/material url reject-200 # > haoqixinribao -^https?:\/\/app3\.qdaily\.com\/app\d\/boot_advertisements\.json url reject +^https?:\/\/app3\.qdaily\.com\/app\d\/boot_advertisements\.json url reject-200 # > huxiu -^https:\/\/api-ad-product\.huxiu\.com\/Api\/Product\/SDK\/Advert\/Query\/queryAdvertListInfo url reject +^https:\/\/api-ad-product\.huxiu\.com\/Api\/Product\/SDK\/Advert\/Query\/queryAdvertListInfo url reject-200 # > huangyouxiangji -^https?:\/\/api4\.bybutter\.com\/v\d\/app\/placements\/\d\/advertisements url reject +^https?:\/\/api4\.bybutter\.com\/v\d\/app\/placements\/\d\/advertisements url reject-200 # > hanglvzongheng -^https?:\/\/(discardrp|startup)\.umetrip\.com\/gateway\/api\/umetrip\/native url reject -^https?:\/\/.*umetrip\.com\.cn\/gateway\/api\/umetrip\/native$ url script-response-header https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/UmeTrip.min.js -;^https?:\/\/114\.115\.217\.129\/gateway\/api\/umetrip\/native$ url script-response-header https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/UmeTrip.min.js +^https?:\/\/(discardrp|startup)\.umetrip\.com\/gateway\/api\/umetrip\/native url reject-200 +^https?:\/\/.*umetrip\.com\.cn\/gateway\/api\/umetrip\/native$ url script-response-header https://github.com/ddgksf2013/Scripts/raw/master/hanglvzongheng.js +;^https?:\/\/114\.115\.217\.129\/gateway\/api\/umetrip\/native$ url script-response-header https://github.com/ddgksf2013/Scripts/raw/master/hanglvzongheng.js # > hangzhougongjiao -^https?:\/\/m.ibuscloud.com\/v2\/app\/getStartPage url reject +^https?:\/\/m.ibuscloud.com\/v2\/app\/getStartPage url reject-200 # > haohaozhu -^https?:\/\/api\.haohaozhu\.cn\/index\.php\/home\/AppInit\/getStartPhoto url reject +^https?:\/\/api\.haohaozhu\.cn\/index\.php\/home\/AppInit\/getStartPhoto url reject-200 # > huabaozhitou -^https?:\/\/api\.touker\.com\/v2\/IAdvertisementAPI\.queryStartAdvertisement url reject +^https?:\/\/api\.touker\.com\/v2\/IAdvertisementAPI\.queryStartAdvertisement url reject-200 # > hema -^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.wdk\.render\.querysinglepage url reject +^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.wdk\.render\.querysinglepage url reject-200 +^https?:\/\/acs-m\.freshippo\.com\/gw\/mtop\.wdk\.render\.querysinglepage url reject-200 # >hefengtianqi -^https?:\/\/hfapp-service\.qweather\.net\/.*\/ad\/ url reject +^https?:\/\/hfapp-service\.qweather\.net\/.*\/ad\/ url reject-200 # > haoqing -^https?:\/\/restapi\.iyunmai\.com\/ad-api\/ url reject +^https?:\/\/restapi\.iyunmai\.com\/ad-api\/ url reject-200 # > huaerjiejianwen ^https?:\/\/api-one-wscn\.awtmt\.com\/apiv\d\/advertising\/ads url reject-200 @@ -260,11 +285,13 @@ https://fbchina.flipchina.cn/v2/ad/query/* url reject # ======= I ======= # # > i4 -^https?:\/\/list-app-m\.i4\.cn\/getopfstadinfo\.xhtml url reject +^https?:\/\/list-app-m\.i4\.cn\/getopfstadinfo\.xhtml url reject-200 # > i3 #^https?:\/\/www\.i3zh\.com url response-body cm-pop-up-banners response-body ddgksf2013 # > iQiYi -^https?:\/\/.*cupid\.iqiyi\.com\/mixer\? url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/iQiyi.js +^https?:\/\/.*cupid\.iqiyi\.com\/mixer\? url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/iqiyi_open_ads.js +# > iHour +^https?:\/\/app-cdn\.2q10\.com\/app\/\w+\/honored url reject-200 # ======= J ======= # @@ -273,11 +300,11 @@ https://fbchina.flipchina.cn/v2/ad/query/* url reject ^https?:\/\/jdread-api\.jd\.com\/jdread\/api\/channel\/module\/opens url reject-200 ^https?:\/\/jdread-api\.jd\.com\/jdread\/api\/popup url reject-200 # > jingxi -^https?:\/\/api\.m\.jd\.com\/api\?functionId=delivery_show url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/JD/jx_startup.js -# > jingdong +^https?:\/\/api\.m\.jd\.com\/api\?functionId=delivery_show url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/startup.js +# > jingdong[invalid] ^https?:\/\/api\.m\.jd\.com\/client\.action\?functionId=(start|queryMaterialAdverts) url reject-200 ^https?:\/\/(bdsp-x|dsp-x)\.jd\.com\/adx\/ url reject-200 -^https?:\/\/api\.m\.jd\.com\/client\.action\?functionId=(hotWords|hotSearchTerms) url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/JD/jd_search_json.js +^https?:\/\/api\.m\.jd\.com\/client\.action\?functionId=(hotWords|hotSearchTerms) url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/jd_json.js # > jingdongjinrong ^https?:\/\/ms\.jr\.jd\.com\/gw\/generic\/aladdin\/(new)?na\/m\/getLoadingPicture url reject-200 # > jingdonglite @@ -288,50 +315,58 @@ https://fbchina.flipchina.cn/v2/ad/query/* url reject # > jianxun ^https?:\/\/api\.tipsoon\.com\/api\/v\d\/top\/ad url reject-200 # > jiaohangmaidanba -^https?:\/\/creditcardapp\.bankcomm\.com\/mapp\/common\/(queryGuidePageAds|getPopAds)\.do$ url reject +^https?:\/\/creditcardapp\.bankcomm\.com\/mapp\/common\/(queryGuidePageAds|getPopAds)\.do$ url reject-200 # > jiemianxinwen -^https?:\/\/img\.jiemian\.com\/ads\/ url reject +^https?:\/\/img\.jiemian\.com\/ads\/ url reject-200 # > jinshi -^https?:\/\/jad-api\.jin10\.com\/ad url reject +^https?:\/\/jad-api\.jin10\.com\/ad url reject-200 # > jijianhuilv -^https?:\/\/explorer\.tratao\.com\/api\/client\/v4\/xtransfer\/ad\/ url reject +^https?:\/\/explorer\.tratao\.com\/api\/client\/v4\/xtransfer\/ad\/ url reject-200 # > jiaxiaoediantong -^https?:\/\/api\.jxedt\.com\/ad\/ url reject +^https?:\/\/api\.jxedt\.com\/ad\/ url reject-200 # > jiakaobaodian -^https?:\/\/\w+\.kakamobi\.cn\/api\/open\/v\d\/advert-sdk\/ url reject +^https?:\/\/\w+\.kakamobi\.cn\/api\/open\/v\d\/advert-sdk\/ url reject-200 # > jianhanglife -^https?:\/\/yunbusiness\.ccb\.com\/clp_service\/txCtrl\?txcode=A3341A00(2|9) url reject +^https?:\/\/yunbusiness\.ccb\.com\/clp_service\/txCtrl\?txcode=A3341A00(2|9) url reject-200 # > jimi -^https?:\/\/superapp\.xgimi\.com\/api/v1\/app\/ad\/configs\?_sort=createdAt:Adesc url reject +^https?:\/\/superapp\.xgimi\.com\/api/v1\/app\/ad\/configs\?_sort=createdAt:Adesc url reject-200 # > jike -;^https?:\/\/mgw\.mpaas\.cn-hangzhou\.aliyuncs\.com\/mgw\.htm url reject +;^https?:\/\/mgw\.mpaas\.cn-hangzhou\.aliyuncs\.com\/mgw\.htm url reject-200 # > jiansheyinhang -^https?:\/\/adv\.ccb\.com\/ebda\/ctm_adv url reject +^https?:\/\/adv\.ccb\.com\/ebda\/ctm_adv url reject-200 +# > jump +^https?:\/\/switch\.jumpvg\.com\/jump\/(getlaunchad|recommend\/ad_conf) url reject-200 # ======= K ======= # # > kfc -^https?:\/\/res.kfc.com.cn\/advertisement\/ url reject +^https?:\/\/res.kfc.com.cn\/advertisement\/ url reject-200 +^https?:\/\/res.kfc.com.cn\/CRM\/kfcad\/apphome6\/apphome.*json url response-body bootStrapAd response-body ddgksf2013 +https://dynamicad.kfc.com.cn/api/app5/homepage/ai/popup url reject-200 # > kuaikan -^https?:\/\/api.kkmh.com\/v\d\/(ad|advertisement)\/ url reject +^https?:\/\/api.kkmh.com\/v\d\/(ad|advertisement)\/ url reject-200 # > ku'an -^https?:\/\/api\.coolapk\.com\/v6\/(feed\/(replyList|detail)|main\/indexV8|dataList) url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/CoolApk.min.js -^https?:\/\/api.coolapk.com\/v6\/main\/init url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/CoolApk.min.js +^https?:\/\/api\.coolapk\.com\/v6\/(feed\/(replyList|detail)|main\/indexV8|dataList) url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/coolapk.js +^https?:\/\/api.coolapk.com\/v6\/main\/init url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/coolapk.js ^https?:\/\/api\.coolapk\.com\/v6\/search\?.*type=hotSearch url reject-dict # > kanlixiang ^https?:\/\/api\.vistopia\.com\.cn\/api\/v\d\/home\/advertisement url reject # > kantianxia -https://open3.vistastory.com/v3/api/index/loading_ad url reject -https://open3.vistastory.com/v3/api.*get_popup url reject +https://open3.vistastory.com/v3/api/index/loading_ad url reject-200 +https://open3.vistastory.com/v3/api.*get_popup url reject-200 # > kuake ^https?:\/\/open-cms-api\.(uc|quark)\.cn\/open-cms url script-response-body https://raw.githubusercontent.com/ddgksf2013/Scripts/master/quark.js # > kuaishou -^https:\/\/open\.e\.kuaishou\.com\/rest\/e\/v3\/open\/univ url reject +^https:\/\/open\.e\.kuaishou\.com\/rest\/e\/v3\/open\/univ url reject-200 # > kudi -^https?:\/\/gateway\.abite\.com\/cotti-capi\/customer\/position\/list\?code=cotti-launch-window url reject +^https?:\/\/gateway\.abite\.com\/cotti-capi\/customer\/position\/list\?code=cotti-launch-window url reject-200 +# > keep +^https?:\/\/hc-ssp\.sm\.cn url reject-200 # > kuaiying -^https?:\/\/api\.kmovie\.gifshow\.com\/rest\/n\/kmovie\/app\/(resource|banner) url reject +^https?:\/\/api\.kmovie\.gifshow\.com\/rest\/n\/kmovie\/app\/(resource|banner) url reject-200 +# > kujiale +^https?:\/\/www\.kujiale\.com\/app\/queryOpenPage url reject-200 # ======= L ======= # @@ -339,82 +374,92 @@ https://open3.vistastory.com/v3/api.*get_popup url reject # > lingclub ^https?:\/\/api\.00bang\.cn\/llb\/baseinfo\/advertise\/getAdvertiseByPageCode url reject-200 # > linxi -^https?:\/\/api\.internetofcity\.cn\/api\/resource\/anon\/popups\/(getSplashList|getList) url reject +^https?:\/\/api\.internetofcity\.cn\/api\/resource\/anon\/popups\/(getSplashList|getList) url reject-200 # > lecheng -https://dl-cu-hz.lechange.cn/oms-online/advertisementPush/* url reject +https://dl-cu-hz.lechange.cn/oms-online/advertisementPush/* url reject-200 # > lanjie100 -https://tagit.hyhuo.com/recover/list url reject +https://tagit.hyhuo.com/recover/list url reject-200 # > laiChon -^https?:\/\/(mobile|shop)\.laichon\.com\/api\/(v1\/goods\/goodsList|exposureAdvStatistics|getWebAdvList) url reject +^https?:\/\/(mobile|shop)\.laichon\.com\/api\/(v1\/goods\/goodsList|exposureAdvStatistics|getWebAdvList) url reject-200 # > liangBulU -# host-suffix, admobile.top, reject -https?:\/\/helper\.2bulu\.com\/(greenPea\/queryTasks|proSpecial\/allData|saveSplashFrequencyStatistics|getPopInfo|getAppEntranceConfig|promote\/list|getSplash|outing\/reqFoundNewList|outing\/reqIndex) url reject +# host-suffix, admobile.top, reject-200 +https?:\/\/helper\.2bulu\.com\/(greenPea\/queryTasks|proSpecial\/allData|saveSplashFrequencyStatistics|getPopInfo|getAppEntranceConfig|promote\/list|getSplash|outing\/reqFoundNewList|outing\/reqIndex) url reject-200 # > lanRenTingShu -^https?:\/\/.*\/yyting\/advertclient\/ClientAdvertList.action url reject +^https?:\/\/.*\/yyting\/advertclient\/ClientAdvertList.action url reject-200 # > lanjiyin -^https?:\/\/tk\.lanjiyin\.com\.cn\/ad\/getAdList url reject +^https?:\/\/tk\.lanjiyin\.com\.cn\/ad\/getAdList url reject-200 # > leisutiyu ^https?:\/\/app-gateway\.leisuapi\.com\/v\d\/app\/mobile\/(banners|ads) url reject-200 # > liulishuo -^https?:\/\/rengine-platform\.llsapp\.com\/auth\/api\/remoteResource\/darwin url reject +^https?:\/\/rengine-platform\.llsapp\.com\/auth\/api\/remoteResource\/darwin url reject-200 # >lianmeng -^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.alimama\.etao\.config\.query url reject +^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.alimama\.etao\.config\.query url reject-200 # > lofter -^https?:\/\/ad\.lofter\.com\/.*yitou\/madr url reject +^https?:\/\/ad\.lofter\.com\/.*yitou\/madr url reject-200 # > lanrentingshu -^https?:\/\/.*mting\.info\/advert\/ClientAdvertList\.action url reject +^https?:\/\/.*mting\.info\/advert\/ClientAdvertList\.action url reject-200 +# > lecheng +^https?:\/\/adx.*anythinktech\.com\/bid url reject-200 # ======= M ======= # # > MeiTuan -^https?:\/\/peisongapi\.meituan\.com\/client\/getInitiateImage url reject -^https?:\/\/img\.meituan\.net\/(adunion|display|midas)\/\w+\.(gif|jpg|jpg\.webp)$ url reject -^https?:\/\/(s3plus|flowplus)\.meituan\.net\/v\d\/\w+\/linglong\/\w+\.(gif|jpg|mp4) url reject -^https?:\/\/p\d\.meituan\.net\/(bizad|wmbanner)\/\w+\.jpg url reject -^https?:\/\/p\d\.meituan\.net\/movie\/\w+\.jpg\?may_covertWebp url reject +^https?:\/\/peisongapi\.meituan\.com\/client\/getInitiateImage url reject-200 +^https?:\/\/img\.meituan\.net\/(adunion|display|midas)\/\w+\.(gif|jpg|jpg\.webp)$ url reject-200 +^https?:\/\/(s3plus|flowplus)\.meituan\.net\/v\d\/\w+\/linglong\/\w+\.(gif|jpg|mp4) url reject-200 +^https?:\/\/p\d\.meituan\.net\/(bizad|wmbanner)\/\w+\.jpg url reject-200 +^https?:\/\/p\d\.meituan\.net\/movie\/\w+\.jpg\?may_covertWebp url reject-200 # > MeiTuanWaiMai -^https?:\/\/img\.meituan\.net\/(bizad|brandCpt)\/\w+\.(png|jpg) url reject -^https?:\/\/.*\.meituan\.com\/api\/v\d\/(openscreen\?ad|appstatus\?ad|loadInfo\?|startpicture) url reject -^http:\/\/s3plus\.meituan\.net\/.*\/brandcpt-vedio\/.*\?time url reject +^https?:\/\/img\.meituan\.net\/(bizad|brandCpt)\/\w+\.(png|jpg) url reject-200 +^https?:\/\/.*\.meituan\.com\/api\/v\d\/(openscreen\?ad|appstatus\?ad|loadInfo\?|startpicture) url reject-200 +^http:\/\/s3plus\.meituan\.net\/.*\/brandcpt-vedio\/.*\?time url reject-200 # > MeiWeiBuYongDeng -^https?:\/\/capi.mwee.cn\/app-api\/V12\/app\/getstartad url reject +^https?:\/\/capi.mwee.cn\/app-api\/V12\/app\/getstartad url reject-200 # > MaFengWo -^https://mapi.mafengwo.cn\/ad\/get_launch_ad_list\/v2 url reject +^https://mapi.mafengwo.cn\/ad\/get_launch_ad_list\/v2 url reject-200 # > manmanmai ^https?:\/\/apapia-sqk\.manmanbuy\.com\/index_json\.ashx url response-body splashAD response-body ddgksf2013 # > MaiDuiDui -^https?:\/\/mob\.mddcloud\.com\.cn\/adApi\/advert url reject +^https?:\/\/mob\.mddcloud\.com\.cn\/adApi\/advert url reject-200 # > manhuaren -^https?:\/\/.*mangaapi\.manhuaren\.\w{2,4}\/v\d\/public\/(getStartUpMessage|getStartPageAds|getShelfActivity) url reject -^https?:\/\/.*mangaapi\.manhuaren\.\w{2,4}\/v\d\/ad url reject +^https?:\/\/.*mangaapi\.manhuaren\.\w{2,4}\/v\d\/public\/(getStartUpMessage|getStartPageAds|getShelfActivity) url reject-200 +^https?:\/\/.*mangaapi\.manhuaren\.\w{2,4}\/v\d\/ad url reject-200 # > MIX -^https?:\/\/dispatcher\.camera360\.com\/api\/v1\/list$ url reject -^https?:\/\/mix-api\.camera360\.com\/v\d\/operational-positions url reject +^https?:\/\/dispatcher\.camera360\.com\/api\/v1\/list$ url reject-200 +^https?:\/\/mix-api\.camera360\.com\/v\d\/operational-positions url reject-200 # > MaKaLong -^https:\/\/app\.api\.versa-ai\.com\/launch\/ads\? url reject +^https:\/\/app\.api\.versa-ai\.com\/launch\/ads\? url reject-200 # > MoMo -^https?:\/\/open\.taou\.com\/maimai\/launch_ad url reject -^https?:\/\/api\.taou\.com\/sdk\/global\/splash_ad url reject -^https?:\/\/track\.mm\.taou\.com/v\d\/track url reject +^https?:\/\/open\.taou\.com\/maimai\/launch_ad url reject-200 +^https?:\/\/api\.taou\.com\/sdk\/global\/splash_ad url reject-200 +^https?:\/\/track\.mm\.taou\.com/v\d\/track url reject-200 # > maidanba -^https?:\/\/creditcardapp\.bankcomm\.cn\/mappweb_interface\/common\/(qryPopAds|qryLaunchAds)\.do url reject +^https?:\/\/creditcardapp\.bankcomm\.cn\/mappweb_interface\/common\/(qryPopAds|qryLaunchAds)\.do url reject-200 # > mixuebingcheng -^https:\/\/mxsa\.mxbc\.net\/api\/v1\/adinfo\/limitedAds$ url reject +^https:\/\/mxsa\.mxbc\.net\/api\/v1\/adinfo\/limitedAds$ url reject-200 # > maoyan* ^https?:\/\/p0\.pipi\.cn\/adAdmin\/\w+.jpg\? url reject-img # > miyoushe -^https?:\/\/bbs-api\.miyoushe\.com\/apihub\/api\/getAppSplash url reject +^https?:\/\/bbs-api\.miyoushe\.com\/apihub\/api\/getAppSplash url reject-200 # > meiyou -^https?:\/\/axxd\.xmseeyouyima\.com\/v\d\/getad url reject +^https?:\/\/axxd\.xmseeyouyima\.com\/v\d\/getad url reject-200 # > miguyinyue ^https?:\/\/app\.c\.nf\.migu\.cn\/.*column\/start(-)?up-pic url reject-200 +# > manhuashe +^https?:\/\/comicapi\.manhuashe\.com\/v\d\/(ads\/adstrategys|public\/startupactivity) url reject-200 +# > maidanglao +^https?:\/\/api\.mcd\.cn\/bff\/portal\/(richpop|home\/splash) url reject-200 +# > merit +^https?:\/\/api\.merach\.com\/app\/AppAdvertisingController\/getAdvert url reject-200 +# > meisiyixue* +^https?:\/\/app-api\.medsci\.cn\/app-advertisement-space\/showAdList url reject-200 # ======= N ======= # # > nanfanghangkong -^https?:\/\/3g\.csair\.com\/CSMBP\/bookProcess\/homepopup\/queryAdvertisement url reject +^https?:\/\/3g\.csair\.com\/CSMBP\/bookProcess\/homepopup\/queryAdvertisement url reject-200 # > nongyeyinhang ^https?:\/\/mobilepaas\.abchina\.com\.cn:441\/mgw\.htm url script-response-header https://raw.githubusercontent.com/ddgksf2013/Scripts/master/abchina.js @@ -422,67 +467,76 @@ https?:\/\/helper\.2bulu\.com\/(greenPea\/queryTasks|proSpecial\/allData|saveSpl # ======= O ======= # # > omofun -^https?:\/\/103\.91\.210\.141\:2515\/xgapp\.php\/v2\/top_notice url reject +^https?:\/\/103\.91\.210\.141\:2515\/xgapp\.php\/v2\/top_notice url reject-200 # > One -^http:\/\/app\.api\.d3yuiw4\.com\/api\/app\/ad url reject +^http:\/\/app\.api\.d3yuiw4\.com\/api\/app\/ad url reject-200 # > Oray -^https?:\/\/slapi\.oray\.net\/client\/ad url reject -^https?:\/\/slapi\.oray\.net\/adver url reject +^https?:\/\/slapi\.oray\.net\/client\/ad url reject-200 +^https?:\/\/slapi\.oray\.net\/adver url reject-200 # > one -^https?:\/\/api\.21ec74\.com\/v2\.5\/ad url reject +^https?:\/\/api\.21ec74\.com\/v2\.5\/ad url reject-200 +# > ocleancare* +^https?:\/\/careapi\.oclean\.com\/mall\/v\d\/User\/GetUserCenter url response-body banner" response-body ddgksf2013" +^https?:\/\/careapi\.oclean\.com\/mall\/v\d\/Temporary\/SafetyGetStartAdvert url reject-200 # ======= P ======= # # > pikpak -https://access.mypikpak.com/access_controller/v1/area_accessible url reject +https://access.mypikpak.com/access_controller/v1/area_accessible url reject-200 # > pinduoduo -^https?:\/\/api\.(pinduoduo|yangkeduo)\.com\/api\/cappuccino\/splash url reject +^https?:\/\/api\.(pinduoduo|yangkeduo)\.com\/api\/cappuccino\/splash url reject-200 # > PiaoGen -^https?:\/\/pss\.txffp\.com\/piaogen\/images\/launchScreen/ url reject +^https?:\/\/pss\.txffp\.com\/piaogen\/images\/launchScreen/ url reject-200 # > pengpainews -^https?:\/\/adpai\.thepaper\.cn\/.+&ad= url reject +^https?:\/\/adpai\.thepaper\.cn\/.+&ad= url reject-200 # > pufayinhang -^https?:\/\/lban\.spdb\.com\.cn\/mspmk-web-component\/(getAdvList|prefetchAdvList)\.ah url reject +^https?:\/\/lban\.spdb\.com\.cn\/mspmk-web-component\/(getAdvList|prefetchAdvList)\.ah url reject-200 # > pupumarket -^https?:\/\/j1\.pupuapi\.com\/client\/marketing\/banner\/v\d\?position url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/PupuMarket.js +^https?:\/\/j1\.pupuapi\.com\/client\/marketing\/banner\/v\d\?position url script-response-body https://raw.githubusercontent.com/ddgksf2013/Scripts/master/pupumarket.js # > pica -^https?:\/\/.*tipatipa\.xyz\/announcements url reject +^https?:\/\/.*tipatipa\.xyz\/announcements url reject-200 # > pansearch ^https?:\/\/www\.pansearch\.me\/api\/adsite url reject-dict +# > pinganzhengquan +^https?:\/\/m\.stock\.pingan\.com\/restapi\/rmd\/open\/O\/api\/openAd url reject-200 # ======= Q ======= # # > qqbrower -^https:\/\/us\.l\.qq\.com\/exapp\?spsa=\d url reject +^https:\/\/us\.l\.qq\.com\/exapp\?spsa=\d url reject-200 # > QuNaEr -https://homefront.qunar.com/front/splash/ad url reject -^https?:\/\/client\.qunar\.com\/pitcher-proxy\?qrt=p_splashAd url reject +https://homefront.qunar.com/front/splash/ad url reject-200 +^https?:\/\/client\.qunar\.com\/pitcher-proxy\?qrt=p_splashAd url reject-200 # > QiCheZhiJia -^https?:\/\/adproxy.autohome.com.cn\/AdvertiseService\/ url reject -^https?:\/\/app2.autoimg.cn\/appdfs\/ url reject +^https?:\/\/adproxy.autohome.com.cn\/AdvertiseService\/ url reject-200 +^https?:\/\/app2.autoimg.cn\/appdfs\/ url reject-200 # > QiDianDuShu -^https?:\/\/magev\d\.if\.qidian\.com\/argus\/api\/v\d\/client\/getsplashscreen url reject +^https?:\/\/magev\d\.if\.qidian\.com\/argus\/api\/v\d\/client\/getsplashscreen url reject-200 # > qinlingkaimen ^https?:\/\/qadx\.qinlinad\.com\/ad\/ url reject-200 +# > qijunjiekancaijin +^https?:\/\/app\.api\.qjjfin\.com\/publicize\/allList url reject-200 # ======= R ======= # # > RenMinRiBao -^https:\/\/app\.peopleapp\.com\/Api\/\d+/HomeApi\/(adv|getAdvertImage) url reject -^https?:\/\/stat\.peopleapp\.com\/ url reject +^https:\/\/app\.peopleapp\.com\/Api\/\d+/HomeApi\/(adv|getAdvertImage) url reject-200 +^https?:\/\/stat\.peopleapp\.com\/ url reject-200 +# > renren +^https?:\/\/.*dcloud\.net\.cn\/(app\/acs|uad) url reject-200 # > ruixinkafei -^https?:\/\/capi\.lkcoffee\.com\/resource\/m\/sys\/(homePage\/contactor\/modules|app\/adposNew) url reject +^https?:\/\/capi\.lkcoffee\.com\/resource\/m\/sys\/(homePage\/contactor\/modules|app\/adposNew) url reject-200 # ======= S ======= # # > shaoshupai -https://ios.sspai.com/api/v3/recommend/page/get\?ad.*ios_home_modal url reject +https://ios.sspai.com/api/v3/recommend/page/get\?ad.*ios_home_modal url reject-200 # > ShunFengYouXuan -^https://mapi.sfbest.com\/brokerservice-server\/cms\/getPositionById.* url reject +^https://mapi.sfbest.com\/brokerservice-server\/cms\/getPositionById.* url reject-200 # > spotify pro ;^https:\/\/spclient\.wg\.spotify\.com\/(bootstrap\/v1\/bootstrap|user-customization-service\/v1\/customize)$ url script-response-body https://raw.githubusercontent.com/app2smile/rules/master/js/spotify-proto.js ;^https:\/\/spclient\.wg\.spotify\.com\/(artistview\/v1\/artist|album-entity-view\/v2\/album)\/ url script-request-header https://raw.githubusercontent.com/app2smile/rules/master/js/spotify-json.js @@ -490,33 +544,35 @@ https://ios.sspai.com/api/v3/recommend/page/get\?ad.*ios_home_modal url reject ^https?://spclient.wg.spotify.com/(ad-logic|ads|.+ad_slot|.+banners|.+canvases|.+cards|.+crashlytics|.+doubleclick.net|.+enabled-tracks|.+promoted_offer) url reject-img ^https?:\/\/api\d?\.musical\.ly\/api\/ad\/ url reject-img # > SanLianZhongDu -https://apis.lifeweek.com.cn/api/baseConfig/getIosNewConfig url reject +https://apis.lifeweek.com.cn/api/baseConfig/getIosNewConfig url reject-200 # > ShunFeng -^https?:\/\/ccsp-egmas\.sf-express\.com\/cx-app-base\/base\/app\/appVersion\/detectionUpgrade url reject -https://ccsp-egmas.sf-express.com/cx-app-base/base/app/ad/queryInfoFlow url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/shunfeng_json.js -https://ccsp-egmas.sf-express.com/cx-app-base/base/app/ad/queryAdImages url reject -^https?:\/\/shopic\.sf-express\.com\/crm\/mobile\/common\/flashscreen url reject +^https?:\/\/ccsp-egmas\.sf-express\.com\/cx-app-base\/base\/app\/appVersion\/detectionUpgrade url reject-200 +https://ccsp-egmas.sf-express.com/cx-app-base/base/app/ad/queryInfoFlow url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/shunfeng_json.js +https://ccsp-egmas.sf-express.com/cx-app-base/base/app/ad/queryAdImages url reject-200 +^https?:\/\/shopic\.sf-express\.com\/crm\/mobile\/common\/flashscreen url reject-200 # > shihuo -^https?:\/\/sh-gateway\.shihuo\.cn\/v\d\/services\/sh-adapi\/home\/(screen|ad) url reject +^https?:\/\/sh-gateway\.shihuo\.cn\/v\d\/services\/sh-adapi\/home\/screen url response-body egin_time":"\d{4} response-body egin_time":"2099 # > Soul -^https:\/\/data-collector\.soulapp\.cn\/api\/data\/report$ url reject +^https:\/\/data-collector\.soulapp\.cn\/api\/data\/report$ url reject-200 # > Stay -^https?:\/\/api\.shenyin\.name\/stay-fork\/browse\/featured$ url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Stay.js +^https?:\/\/api\.shenyin\.name\/stay-fork\/browse\/featured$ url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/stay.js # > suning -^https?:\/\/mpcs\.suning\.com\/mpcs\/dm\/getDmInfo url reject +^https?:\/\/mpcs\.suning\.com\/mpcs\/dm\/getDmInfo url reject-200 # > shanmu -^https?:\/\/api-sams\.walmartmobile\.cn\/api\/v1\/sams\/sams-user\/(window\/getGoUpPlus|screen_promotion\/get) url reject +^https?:\/\/api-sams\.walmartmobile\.cn\/api\/v1\/sams\/sams-user\/(window\/getGoUpPlus|screen_promotion\/get) url reject-200 # > shanxianyixia -^https:\/\/api\.gameplus\.qq\.com\/community\.OnloadSrv\/GetPreloadScreenInfo url reject +^https:\/\/api\.gameplus\.qq\.com\/community\.OnloadSrv\/GetPreloadScreenInfo url reject-200 # > shaoniandedao ^https?:\/\/igetcool-gateway\.igetcool\.com\/app-api-other-server\/white\/open\/ads.json url reject-200 # > shoulvrujia -^https?:\/\/app\.homeinns\.com\/api\/landing url reject +^https?:\/\/app\.homeinns\.com\/api\/landing url reject-200 # > soutushenqi -^https?:\/\/wallpaper\.soutushenqi\.com\/v\d\/dateSignature\/random url reject -^https?:\/\/wallpaper\.soutushenqi\.com\/v\d\/home\/dialog url reject +^https?:\/\/wallpaper\.soutushenqi\.com\/v\d\/dateSignature\/random url reject-200 +^https?:\/\/wallpaper\.soutushenqi\.com\/v\d\/home\/dialog url reject-200 # > shixingshengxian -^https?:\/\/api1\.34580\.com\/wx\/Home\/AdvertisementPhotoshootRequest url reject +^https?:\/\/api1\.34580\.com\/wx\/Home\/AdvertisementPhotoshootRequest url reject-200 +# > sanhaodongman +^https?:\/\/vidz\.3hxq\.cn\/api\/app\/(miscs\/mine\/extensions|announcements\/home) url reject-dict # ======= T ======= # @@ -524,40 +580,40 @@ https://ccsp-egmas.sf-express.com/cx-app-base/base/app/ad/queryAdImages url reje # > tianfutong ^https?:\/\/tft-app\.cdtft\.cn\/gateway-customer\/tftapp\/tft-ams\/api\/appAd url response-body officialAdvertResultVo response-body ddgksf2013 # > tianxingjinrong -^https?:\/\/t1\.market\.xiaomi\.com\/thumbnail\/webp\/w1170q100\/ url reject +^https?:\/\/t1\.market\.xiaomi\.com\/thumbnail\/webp\/w1170q100\/ url reject-200 # > tianyiyunpan -^https?:\/\/api\.cloud\.189\.cn\/guns\/getOpenscreenBanners url reject +^https?:\/\/api\.cloud\.189\.cn\/guns\/getOpenscreenBanners url reject-200 # > tianmaojingling -^https?:\/\/zconfig\.alibabausercontent\.com\/zconfig url reject +^https?:\/\/zconfig\.alibabausercontent\.com\/zconfig url reject-200 # > testflight ^https?:\/\/testflight\.apple\.com\/v2\/accounts\/.*\/apps\/\d*/builds/\d*/install url request-body storefrontId" : ".*" request-body storefrontId" : "143441-1,29" # > TengXunShouJiGuanJia -^https://otheve.beacon.qq.com\/analytics\/upload\?sid=.* url reject +^https://otheve.beacon.qq.com\/analytics\/upload\?sid=.* url reject-200 # > TuNiu -^https?:\/\/m\.tuniu\.com\/api\/operation\/splash\/ url reject +^https?:\/\/m\.tuniu\.com\/api\/operation\/splash\/ url reject-200 # > TaoPiaoPiao -^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.film\.mtopadvertiseapi\.queryadvertise\/ url reject +^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.film\.mtopadvertiseapi\.queryadvertise\/ url reject-200 # > TianTianJiJin -^https?:\/\/appactive\.1234567\.com\.cn\/AppoperationApi\/OperationService\/GetAppStartImg url reject +^https?:\/\/appactive\.1234567\.com\.cn\/AppoperationApi\/OperationService\/GetAppStartImg url reject-200 # > topwidget -https://top-widgets-api.xiaozujian.com/api/ad/config url reject +https://top-widgets-api.xiaozujian.com/api/ad/config url reject-200 # > TencentNews -^https?:\/\/r\.inews\.qq\.com\/(adsBlacklist|getFullScreenPic|getQQNewsRemoteConfig) url reject -^https?:\/\/r\.inews\.qq\.com\/(getBannerAds|getNewsRemoteConfig|getSplash|searchHotCatList|upLoadLoc) url reject +^https?:\/\/r\.inews\.qq\.com\/(adsBlacklist|getFullScreenPic|getQQNewsRemoteConfig) url reject-200 +^https?:\/\/r\.inews\.qq\.com\/(getBannerAds|getNewsRemoteConfig|getSplash|searchHotCatList|upLoadLoc) url reject-200 # > taipinyang -^https?:\/\/mrobot\.pconline\.com\.cn\/s-900\/onlineinfo\/cms\/launch url reject +^https?:\/\/mrobot\.pconline\.com\.cn\/s-900\/onlineinfo\/cms\/launch url reject-200 # > tonghuashun -^https?:\/\/adm\.10jqka\.com\.cn\/interface\/ad\/recommend url reject +^https?:\/\/adm\.10jqka\.com\.cn\/interface\/ad\/recommend url reject-200 # > tengxundongman -^https?:\/\/iphone\.ac\.qq\.com\/.*\/Support\/(getSystemConf|bootScreen) url reject +^https?:\/\/iphone\.ac\.qq\.com\/.*\/Support\/(getSystemConf|bootScreen) url reject-200 # > tongchenglvxing -^https?:\/\/tcmobileapi\.17usoft\.com\/appindexnew\/index\/getappindexconfig url reject +^https?:\/\/tcmobileapi\.17usoft\.com\/appindexnew\/index\/getappindexconfig url reject-200 # > tujiaminxu -^https?:\/\/client\.tujia\.com\/bnbapp-node\/app\/portal\/getStartPictureAdvertising url reject +^https?:\/\/client\.tujia\.com\/bnbapp-node\/app\/portal\/getStartPictureAdvertising url reject-200 # > tangdong -^https?:\/\/td\.cgmcare\.cn\/api\/ad url reject +^https?:\/\/td\.cgmcare\.cn\/api\/ad url reject-200 # > taobao -^https?:\/\/guide-acs\.m\.taobao\.com\/gw\/mtop\.taobao\.wireless\.home\.splash\.awesome\.get url reject +^https?:\/\/guide-acs\.m\.taobao\.com\/gw\/mtop\.taobao\.wireless\.home\.splash\.awesome\.get url reject-200 # ======= U ======= # @@ -566,184 +622,214 @@ https://top-widgets-api.xiaozujian.com/api/ad/config url reject # ======= V ======= # # > v2ex -^https?:\/\/.*v2ex\.com\/($|t\/\d+) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/v2ex.js +^https?:\/\/.*v2ex\.com\/($|t\/\d+) url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/v2ex.js # ======= W ======= # # > weipinhui -^https?:\/\/mapi\.appvipshop\.com\/vips-mobile\/rest\/activity\/advertisement\/get url reject +^https?:\/\/mapi\.appvipshop\.com\/vips-mobile\/rest\/activity\/advertisement\/get url reject-200 https://b.appsimg.com/upload/momin/ url reject -https://mapi.appvipshop.com/vips-mobile/rest/activity/advertisement/get url reject -^https:\/\/mapi\.appvipshop\.com\/vips-mobile\/rest\/iosAdInfo\/report url reject +https://mapi.appvipshop.com/vips-mobile/rest/activity/advertisement/get url reject-200 +^https:\/\/mapi\.appvipshop\.com\/vips-mobile\/rest\/iosAdInfo\/report url reject-200 # > WangYiDaShen -^https?:\/\/god\.gameyw\.netease\.com\/v\d\/ad\/serving\/app-start url reject +^https?:\/\/god\.gameyw\.netease\.com\/v\d\/ad\/serving\/app-start url reject-200 # > WangYiyunyinyue -#^https?:\/\/interface(\d)?.music.163.com\/eapi\/ad\/ url reject +#^https?:\/\/interface(\d)?.music.163.com\/eapi\/ad\/ url reject-200 # > WangYiYouXiang -^https?:\/\/appconf\.mail\.163\.com\/mmad\/get\.do url reject -^https?:\/\/client\.mail\.163.com\/apptrack\/confinfo\/(searchMultiAds.do|showAds.do) url reject +^https?:\/\/appconf\.mail\.163\.com\/mmad\/get\.do url reject-200 +^https?:\/\/client\.mail\.163.com\/apptrack\/confinfo\/(searchMultiAds.do|showAds.do) url reject-200 # > WangYiYanXuan -https://support.you.163.com/appversync/check.do url reject -^https?:\/\/support\.you\.163\.com\/xhr\/boot\/getBootMedia\.json url reject -^https?:\/\/m\.you\.163\.com\/activity\/popWindow url reject -; ^https?:\/\/yanxuan.nosdn.127.net\/(static-union\/)?.*\.gif url reject -^https?:\/\/yanxuan\.nosdn\.127\.net\/.*\.mp4 url reject +https://support.you.163.com/appversync/check.do url reject-200 +^https?:\/\/support\.you\.163\.com\/xhr\/boot\/getBootMedia\.json url reject-200 +^https?:\/\/m\.you\.163\.com\/activity\/popWindow url reject-200 +; ^https?:\/\/yanxuan.nosdn.127.net\/(static-union\/)?.*\.gif url reject-200 +^https?:\/\/yanxuan\.nosdn\.127\.net\/.*\.mp4 url reject-200 # > WeChat110 -^https\:\/\/(weixin110\.qq|security.wechat)\.com\/cgi-bin\/mmspamsupport-bin\/newredirectconfirmcgi\? url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Wechat/UnlockLink.min.js +^https\:\/\/(weixin110\.qq|security.wechat)\.com\/cgi-bin\/mmspamsupport-bin\/newredirectconfirmcgi\? url script-response-body https://raw.githubusercontent.com/ddgksf2013/Scripts/master/weixin110.js # > weixindaihuo -^https?:\/\/mp\.weixin\.qq\.com\/mp\/cps_product_info url reject +^https?:\/\/mp\.weixin\.qq\.com\/mp\/cps_product_info url reject-200 # > WeChat -^https?:\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad url response-body advertisement response-body null +^https?:\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad url response-body advertisement response-body ddgksf2013 # > Weifeng -^https?:\/\/api\.wfdata\.club\/v2\/yesfeng\/(infoCenterAd|yesList) url reject +^https?:\/\/api\.wfdata\.club\/v2\/yesfeng\/(infoCenterAd|yesList) url reject-200 #^https?:\/\/api\.wfdata\.club\/v\d\/search\/hot\? url response-body dataList":\[.+\] response-body dataList":[{}] # > Weico -^https?:\/\/overseas.weico.cc\/portal.php\?a=get_coopen_ads url reject +^https?:\/\/overseas.weico.cc\/portal.php\?a=get_coopen_ads url reject-200 # > wangyiwoniudushu -^https?:\/\/easyreadfs\.nosdn\.127\.net\/ad-material\/ url reject +^https?:\/\/easyreadfs\.nosdn\.127\.net\/ad-material\/ url reject-200 # > wangyikaola -^https?:\/\/sp\.kaola\.com\/api\/openad url reject -^https?:\/\/gw\.kaola\.com\/gw\/dgmobile\/newOpenAd url reject +^https?:\/\/sp\.kaola\.com\/api\/openad url reject-200 +^https?:\/\/gw\.kaola\.com\/gw\/dgmobile\/newOpenAd url reject-200 # > wanmeishijiedianjing -^https?:\/\/api\.wmpvp\.com\/api\/v\d\/config\/promote url reject +^https?:\/\/api\.wmpvp\.com\/api\/v\d\/config\/promote url reject-200 +# > wangxinyun +^https?:\/\/device-box\.onethingpcs\.com\/.+\/adConf url reject-200 +# > wacaijizhang +^https?:\/\/jz\.wacaijizhang\.com\/api\/banners\/newSplash url reject-200 # ======= X ======= # # > xinyue -^https?:\/\/bgw\.xinyue\.qq\.com\/xyapi\.PageService\/GetIndexPopFlash url reject +^https?:\/\/bgw\.xinyue\.qq\.com\/xyapi\.PageService\/GetIndexPopFlash url reject-200 # > xierdun -^https?:\/\/wcprd\.hilton\.com\.cn\/app-middleware\/graphql\?type=splashAd url reject +^https?:\/\/wcprd\.hilton\.com\.cn\/app-middleware\/graphql\?type=splashAd url reject-200 # > XiaoTe ^https?:\/\/lcen\.xiaote\.net\/api\/graphql url response-body screenSplashAd response-body ddgksf2013 # > XiaoShuiMian -^https?:\/\/api.psy-1.com\/cosleep\/startup url reject +^https?:\/\/api.psy-1.com\/cosleep\/startup url reject-200 # > XieCheng -^https:\/\/ma-adx\.ctrip\.com\/_ma\.gif url reject -^https:\/\/mbd\.baidu\.com\/newspage\/api\/getmobads\?page\=landingshare url reject +^https:\/\/ma-adx\.ctrip\.com\/_ma\.gif url reject-200 +^https:\/\/mbd\.baidu\.com\/newspage\/api\/getmobads\?page\=landingshare url reject-200 # > XiChuangZhu -^https?:\/\/lchttpapi\.xczim\.com\/1\.1\/functions\/getLaunchImageForIOS url reject +^https?:\/\/lchttpapi\.xczim\.com\/1\.1\/functions\/getLaunchImageForIOS url reject-200 # > XiaoYi -^https://api.xiaoyi.com\/v5\/app\/mobile\/ads url reject -^https://api.xiaoyi.com\/v5\/app\/config\?userid=.* url reject +^https://api.xiaoyi.com\/v5\/app\/mobile\/ads url reject-200 +^https://api.xiaoyi.com\/v5\/app\/config\?userid=.* url reject-200 # > xiachufang -^https:\/\/api\.xiachufang\.com\/v\d\/ad/ url reject +^https:\/\/api\.xiachufang\.com\/v\d\/ad/ url reject-200 # > xiaolishenghuo -^https?:\/\/mpos-pic\.helipay\.com\/upload\/images\/advertisment url reject +^https?:\/\/mpos-pic\.helipay\.com\/upload\/images\/advertisment url reject-200 # > xiaomi -^https?:\/\/api\.m\.mi\.com\/v1\/app\/start url reject +^https?:\/\/api\.m\.mi\.com\/v1\/app\/start url reject-200 # > xiaomiyoupin -^https?:\/\/shopapi\.io\.mi\.com\/mtop\/mf\/resource\/homePage\/pageConfig url reject +^https?:\/\/shopapi\.io\.mi\.com\/mtop\/mf\/resource\/homePage\/pageConfig url reject-200 # > xifandongman -^https?:\/\/pzoap\.moedot\.net\/xgapp\.php\/v2\/top_notice url reject +^https?:\/\/pzoap\.moedot\.net\/xgapp\.php\/v2\/top_notice url reject-200 # > xiangrikui -^https?:\/\/client-api\.oray\.com\/materials\/SLCC_IOS_STARTUP\?lang=zh-Hans-CN url reject +^https?:\/\/client-api\.oray\.com\/materials\/SLCC_IOS_STARTUP\?lang=zh-Hans-CN url reject-200 # > xinruijulebu -^https?:\/\/bgw\.xinyue\.qq\.com\/xyapi\.PageService\/GetIndexPopFlash url reject +^https?:\/\/bgw\.xinyue\.qq\.com\/xyapi\.PageService\/GetIndexPopFlash url reject-200 +# > xueqiu +^https?:\/\/api\.xueqiu\.com\/snowpard\/launch_strategy\/query\.json url reject-200 # > xiaoyuansouti -^https?:\/\/.*yuanfudao\.com\/iphone\/splashes url reject +^https?:\/\/.*yuanfudao\.com\/iphone\/splashes url reject-200 # > xiaoyuankousuan -^https?:\/\/.*yuanfudao\.com\/leo-mis\/iphone\/splashes url reject +^https?:\/\/.*yuanfudao\.com\/leo-mis\/iphone\/splashes url reject-200 # > xiangrikui -^https?:\/\/client-api-v2\.oray\.com\/materials\/(SUNLOGIN_CLIENT_IOS_PROMOTION|SLCC_IOS_DEVICE|SLCC_IOS_STARTUP) url reject +^https?:\/\/client-api-v2\.oray\.com\/materials\/(SUNLOGIN_CLIENT_IOS_PROMOTION|SLCC_IOS_DEVICE|SLCC_IOS_STARTUP) url reject-200 # > xiaoaiyinxiang ^https?:\/\/info\.mina\.mi\.com\/advertise\/splash url reject-200 +# > xiaocaibawangcan +^https?:\/\/zlsdk\.1rtb\.net\/sdk\/req_ad\? url reject-200 +# > xinlangcaijing +^https?:\/\/ad\.cj\.sina\.cn\/(osa\/adpreload|fax\/impress) url reject-200 +# > xiaoyisheyingji +^https?:\/\/qcwx\.medproad\.com:8080\/ad\/ url reject-200 +# > xiaoxiong +^https?:\/\/apps\.workair\.cn\/app\/version url response-body ads" response-body ddgksf2013" +# > xiaomishangcheng +^https?:\/\/shop-api\.retail\.mi\.com\/mtop\/navi\/skywheel\/mishop\/splash url reject-200 +# > xinmanhua +^https?:\/\/xapi\.xinmanhua\.net\/splashgroups\?include=splashs url reject-200 # ======= Y ======= # # > yanaifei -^https?:\/\/pipi\.4kya\.com\/\/xgapp\.php\/v3\/advert\.position=[^2]+ url reject +^https?:\/\/pipi\.4kya\.com\/\/xgapp\.php\/v3\/advert\.position=[^2]+ url reject-200 # > YangShiPin -^https?:\/\/cdn\.cmgadx\.com\/sdk\/pool\/\w+\.json url reject +^https?:\/\/cdn\.cmgadx\.com\/sdk\/pool\/\w+\.json url reject-200 # > YiHaoDian -^https?:\/\/venus\.yhd\.com\/memhome\/launchConfig url reject +^https?:\/\/venus\.yhd\.com\/memhome\/launchConfig url reject-200 # > YiKaoBang -^https?:\/\/api\.yikaobang\.com\.cn\/client\/main\/homePageSmallAd url reject -^https?:\/\/api\.yikaobang\.com\.cn\/index\.php\/Client\/main\/startPage url reject +^https?:\/\/api\.yikaobang\.com\.cn\/client\/main\/homePageSmallAd url reject-200 +^https?:\/\/api\.yikaobang\.com\.cn\/index\.php\/Client\/main\/startPage url reject-200 # > YouLinYouKe -https://new-app-api.ylyk.com/v1/user/myinfo/adviser url reject +https://new-app-api.ylyk.com/v1/user/myinfo/adviser url reject-200 # > YinkeZhiBo -^https?:\/\/service\.busi\.inke\.cn\/api\/flash\/screen url reject +^https?:\/\/service\.busi\.inke\.cn\/api\/flash\/screen url reject-200 # > YinxiangNote -^https?:\/\/app\.yinxiang\.com\/ads\/ url reject +^https?:\/\/app\.yinxiang\.com\/ads\/ url reject-200 # > yonghui -^https?:\/\/api\.yonghuivip\.com\/web\/shensuan\/ad\/getAd url reject +^https?:\/\/api\.yonghuivip\.com\/web\/shensuan\/ad\/getAd url reject-200 # > youshu -^https?:\/\/gongdu\.youshu\.cc\/m\/open_screen\/list_by_udid url reject +^https?:\/\/gongdu\.youshu\.cc\/m\/open_screen\/list_by_udid url reject-200 # > yingshiyun -^https?:\/\/i\.ys7\.com\/api\/ads\/ url reject +^https?:\/\/i\.ys7\.com\/api\/ads\/ url reject-200 # > yuxueyuan ^https?:\/\/.*\.yuxueyuan\.cn\/yxy-api-gateway\/api\/json\/advert\/getsAdStartScreen url reject-200 # > yitao -^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.etao\.noah\.query.*etao_splash url reject +^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.etao\.noah\.query.*etao_splash url reject-200 # > yunting -^https?:\/\/ytmsout\.radio\.cn\/publish\/recScreen\/getLoadPage url reject +^https?:\/\/ytmsout\.radio\.cn\/publish\/recScreen\/getLoadPage url reject-200 # > yangcong -^https?:\/\/m\.msyc\.cc\/app\/getBootPage\/v\d url reject +^https?:\/\/m\.msyc\.cc\/app\/getBootPage\/v\d url reject-200 # > yijietu -^https?:\/\/1jietu\.com\/apiv\d\/ad url reject +^https?:\/\/1jietu\.com\/apiv\d\/ad url reject-200 # > youminxingkong -^https?:\/\/entry\.ubixioe\.com\/mob\/sdk\/v\d\/endpoint url reject +^https?:\/\/entry\.ubixioe\.com\/mob\/sdk\/v\d\/endpoint url reject-200 # > yihaodian ^https?:\/\/api\.m\.jd\.com\/client\.action\?functionId=home_launchConfig url reject-200 # > yimaitong -^https?:\/\/promotion\.medlive\.cn\/getcover-v2\?app_name url reject +^https?:\/\/promotion\.medlive\.cn\/getcover-v2\?app_name url reject-200 +# > yingshiyun +^https?:\/\/api\.ys7\.com\/api\/ads url reject-200 +# > youdaocidian +^https?:\/\/cdke\.youdao\.com\/course3\/recommend\/dict\/startup url reject-200 +^https?:\/\/gorgon\.youdao\.com\/gorgon url reject-200 +# > ycc360 +^https?:\/\/ads\.closeli\.cn\/ url reject-200 # ======= Z ======= # # > zhangshangshenghuo -#^https?:\/\/mlife\.cmbchina\.com\/ClientFaceService\/api\/mlife\.clientface\.clientservice\.api\.advertiseService\/preCacheAdvertiseSec url reject +#^https?:\/\/mlife\.cmbchina\.com\/ClientFaceService\/api\/mlife\.clientface\.clientservice\.api\.advertiseService\/preCacheAdvertiseSec url reject-200 # > zhongguoyidong -^https?:\/\/client\.app\.coc\.10086\.cn\/biz-orange\/DN\/init\/startInit url reject -^https?:\/\/client\.app\.coc\.10086\.cn\/biz-orange\/DN\/explorePage\/getAdverList url reject +^https?:\/\/client\.app\.coc\.10086\.cn\/biz-orange\/DN\/init\/startInit url reject-200 +^https?:\/\/client\.app\.coc\.10086\.cn\/biz-orange\/DN\/explorePage\/getAdverList url reject-200 # > zhongguoyidongyunpan -^https?:\/\/ad\.mcloud\.139\.com\/advertapi\/adv-filter\/adv-filter\/AdInfoFilter\/getAdInfos$ url reject +^https?:\/\/ad\.mcloud\.139\.com\/advertapi\/adv-filter\/adv-filter\/AdInfoFilter\/getAdInfos$ url reject-200 # > zhongguoyidongjiangsu -^https?:\/\/wap\.js\.10086\.cn\/jsmccClient\/cd\/market_content\/api\/v\d\/market_content\.page\.query url reject +^https?:\/\/wap\.js\.10086\.cn\/jsmccClient\/cd\/market_content\/api\/v\d\/market_content\.page\.query url reject-200 # > zhongguoyidongshandong -https?:\/\/m\.sd\.10086\.cn\/zapi\/app_common\/homeWelcome\/welcome.do url reject +https?:\/\/m\.sd\.10086\.cn\/zapi\/app_common\/homeWelcome\/welcome.do url reject-200 # > zhongguoliantong -^https?:\/\/m\.client\.10010\.com\/mobileService\/(activity|customer)\/(accountListData|get_client_adv|get_startadv) url reject -^https?:\/\/m\.client\.10010\.com\/uniAdmsInterface\/(getHomePageAd|getWelcomeAd) url reject +^https?:\/\/m\.client\.10010\.com\/mobileService\/(activity|customer)\/(accountListData|get_client_adv|get_startadv) url reject-200 +^https?:\/\/m\.client\.10010\.com\/uniAdmsInterface\/(getHomePageAd|getWelcomeAd) url reject-200 # > zhongguoyidongguangxi -^https?:\/\/gx\.10086\.cn\/zt-portal\/gxhzg\/portal\/app\/api\/v url reject +^https?:\/\/gx\.10086\.cn\/zt-portal\/gxhzg\/portal\/app\/api\/v url reject-200 # > zhongguoyidonganhui* -^https?:\/\/api\.ahmobile\.cn:443\/eip\?eip_serv_id=app\.getAllNew url reject +^https?:\/\/api\.ahmobile\.cn:443\/eip\?eip_serv_id=app\.getAllNew url reject-200 # > zhuanzhuan -^https?:\/\/app\.zhuanzhuan\.com\/zzx\/transfer\/getConfigInfo url reject +^https?:\/\/app\.zhuanzhuan\.com\/zzx\/transfer\/getConfigInfo url reject-200 # > zhiboba -^https?:\/\/a\.qiumibao\.com\/activities\/config\.php$ url reject -^https?:\/\/a\.qiumibao\.com\/ios\/config\/\?version_code= url reject +^https?:\/\/a\.qiumibao\.com\/activities\/config\.php$ url reject-200 +^https?:\/\/a\.qiumibao\.com\/ios\/config\/\?version_code= url reject-200 # > zuoyebang -^https?:\/\/syh\.zybang\.com\/com\/adx\/ url reject +^https?:\/\/syh\.zybang\.com\/com\/adx\/ url reject-200 # > ZuiYou -^https?:\/\/adapi\.izuiyou\.com\/ url reject -^https?:\/\/api\.izuiyou\.com\/ad\/ url reject +^https?:\/\/adapi\.izuiyou\.com\/ url reject-200 +^https?:\/\/api\.izuiyou\.com\/ad\/ url reject-200 # > Zhihu -^https?:\/\/api\.zhihu\.com\/commercial_api.*launch_v2 url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Zhihu.min.js +^https?:\/\/api\.zhihu\.com\/commercial_api.*launch_v2 url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/zhihu_openads.js # > zhuishushenqi -^https?:\/\/adx-cn\.anythinktech\.com\/bid url reject +^https?:\/\/adx-cn\.anythinktech\.com\/bid url reject-200 # > zhangshangdaojucheng -^https?:\/\/djcapp\.game\.qq\.com\/daoju\/igw\/main\/\?_service=welink\.ad\.list url reject +^https?:\/\/djcapp\.game\.qq\.com\/daoju\/igw\/main\/\?_service=welink\.ad\.list url reject-200 # > zhangyue -^https?:\/\/ih2\.ireader\.com\/zyapi\/bookstore\/ad url reject -^https?:\/\/ih2\.ireader\.com\/zyapi\/self\/screen\/ad url reject -^https?:\/\/ih2\.ireader\.com\/zycl\/api\/ad url reject +^https?:\/\/ih2\.ireader\.com\/zyapi\/bookstore\/ad url reject-200 +^https?:\/\/ih2\.ireader\.com\/zyapi\/self\/screen\/ad url reject-200 +^https?:\/\/ih2\.ireader\.com\/zycl\/api\/ad url reject-200 # > ziru -^https?:\/\/ztoread\.ziroom\.com\/ymerApi\/v\d\/index\/open url reject +^https?:\/\/ztoread\.ziroom\.com\/ymerApi\/v\d\/index\/open url reject-200 +# > zhangshanggongjiao +^https?:\/\/quanguo\.mygolbs\.com:8081\/MyBusServer\/servlet\/MyGoServer\.HttpPool\.HttpHandlerServlet url reject-200 # > zhongguoyinhang #^https?:\/\/mbs\.boc\.cn\/ubas-mgateway-static\/images\/advertType\/.+.jpg url reject-img # > zhuijudaren -^https?:\/\/zjdr666\.com\/zjdr\.php\/v\d\/(version|top_notice\?|advert\?position=[^2]+) url reject +^https?:\/\/zjdr666\.com\/zjdr\.php\/v\d\/(version|top_notice\?|advert\?position=[^2]+) url reject-200 # > zhangshangyingxionglianmeng -^https?:\/\/mlol\.qt\.qq\.com\/go\/recommend url reject +^https?:\/\/mlol\.qt\.qq\.com\/go\/recommend url reject-200 # > zhongguoyidongguangdong -^https?:\/\/gd\.10086\.cn\/gmccapp\/serv\/\?servicename=GMCCAPP_704_002_001_001 url reject +^https?:\/\/gd\.10086\.cn\/gmccapp\/serv\/\?servicename=GMCCAPP_704_002_001_001 url reject-200 # > zhixinghuochepiao -^https?:\/\/m\.ctrip\.com\/restapi\/soa2\/\d+\/scjson\/tripAds url reject - - - +^https?:\/\/m\.ctrip\.com\/restapi\/soa2\/\d+\/scjson\/tripAds url reject-200 +# > zijinnongshangyinhang* +^https?:\/\/zjmbank\.js96008\.com:8090\/gw\/advert\/oprAdvertQry url reject-200 +# > zhongguoguangdian +^https?:\/\/app\.10099\.com\.cn\/contact-web\/api\/version\/getFlashScreenPage url reject-200 +# > zhihuisuzhou +^https?:\/\/newapp2\.szsmk\.com\/app\/config\/queryMainAd url reject-200 diff --git a/Rewrite/AdBlock/WebAdBlock.adblock b/Rewrite/AdBlock/WebAdBlock.adblock index 3088bdc..33cc47a 100644 --- a/Rewrite/AdBlock/WebAdBlock.adblock +++ b/Rewrite/AdBlock/WebAdBlock.adblock @@ -7,7 +7,7 @@ // @Contribute https://t.me/ddgksf2013_bot // @Feedback 📮 ddgksf2013@163.com 📮 // @Attention 如需引用请注明出处,谢谢合作! -// @UpdateTime 2024-01-07 +// @UpdateTime 2024-02-19 // @Function 自用影视网站去广告配置(不定期更新) // @Suitable 自行观看"# > "注释内容 // @Explain 推荐使用手机版Chrome或Alook浏览器(仅供墨鱼本人及小部分QX用户使用) @@ -23,15 +23,12 @@ hostname=www.zxzjhd.com, m.nivod4.tv, *.freeok.*, *netflix*, *bdys*,*cupfox*,*co # > 08 在线之家[网页优化]@ddgksf2013 - 网站地址:https://www.zxzjhd.com/ ^https?:\/\/www\.zxzjhd\.com\/($|[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/adguard.js -# > 08 FreeOk[网页优化]@ddgksf2013 - 网站地址:https://www.freeok.vip +# > 07 FreeOk[网页优化]@ddgksf2013 - 网站地址:https://www.freeok.vip ^https?:\/\/www\.freeok\.(vip|pro)(\/$|\/[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/adguard.js -# > 07 哔嘀影视[网页优化]@ddgksf2013 - 网站地址:https://www.bdys01.com +# > 06 哔嘀影视[网页优化]@ddgksf2013 - 网站地址:https://www.bdys01.com ^https?:\/\/.*bdys.*com\/($|([a-z]+)\/(play\/)?\d+.*$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/bdys.js -# > 06 茶杯狐[网页优化]@ddgksf2013 - 网站地址:https://cupfox.app -^https?:/\/.*cupfox\.*\/($|[\u4E00-\u9FFFa-zA-Z0-9%=_/-]+$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/cupbox.js - # > 05 PornHub[网页优化]@ddgksf2013 - 网站地址:https://cn.pornhub.com ^https?:\/\/(cn|www)\.pornhub\.com\/_xa\/ads url reject-dict ^https?:/\/(cn|www)\.pornhub\.com\/($|(view|video).*$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/pornhub.js @@ -50,7 +47,9 @@ hostname=www.zxzjhd.com, m.nivod4.tv, *.freeok.*, *netflix*, *bdys*,*cupfox*,*co # =========== 不维护的或网站已关服 =========== # -# > 08 Cokemv[网页优化]@ddgksf2013 - 网站地址:https://cokemv.me +# > 09 茶杯狐[网页优化]@ddgksf2013 - 网站地址:https://cupfox.app +^https?:/\/.*cupfox\.*\/($|[\u4E00-\u9FFFa-zA-Z0-9%=_/-]+$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/cupbox.js +# > 08 Cokemv[网页优化]@ddgksf2013 - 网站地址:https://cokemv.me ^https?:/\/cokemv\.me\/($|vod.*$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/cokemv.js # > 07 555影视[网页优化]@ddgksf2013 - 网站地址:https://555yy6.com ^https?:\/\/.*5y.*\/($|[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/555.js diff --git a/Rewrite/AdBlock/Weibo.adblock b/Rewrite/AdBlock/Weibo.adblock index 182a57f..01387c9 100644 --- a/Rewrite/AdBlock/Weibo.adblock +++ b/Rewrite/AdBlock/Weibo.adblock @@ -6,12 +6,12 @@ // @TgChannel https://t.me/ddgksf2021 // @Contribute https://t.me/ddgksf2013_bot // @Feedback 📮 ddgksf2013@163.com 📮 -// @UpdateTime 2024-01-26 +// @UpdateTime 2024-04-22 // @Attention 微博、微博国际版净化,现已二合一,使用中若有问题请发邮件! // @Attention 使用时请注意关闭QuantumultX的[兼容性增强]开关,否则无法去除微博广告 // @Suitable 自行观看“# > ”注释内容 // @Attention 如需引用请注明出处,谢谢合作! -// @Version V2.0.96 +// @Version V2.0.97 // @ScriptURL https://github.com/ddgksf2013/Rewrite/raw/master/AdBlock/Weibo.conf // ==/UserScript== diff --git a/Rewrite/Unlock/Secret.unlock b/Rewrite/Unlock/Secret.unlock new file mode 100644 index 0000000..b0f4068 --- /dev/null +++ b/Rewrite/Unlock/Secret.unlock @@ -0,0 +1,15 @@ +############################## +# 小秘密悄悄解锁 +# 偷偷使用哦 +# LastUpdateDate: 2024-04-23 23:34:47 +############################## + + +hostname = buy.itunes.apple.com,api.revenuecat.com + +# ~ RevenueCat@ddgksf2013 +^https:\/\/api\.revenuecat\.com\/.+\/(receipts$|subscribers\/[^/]+$) url script-response-body https://rules-for-qx.sveir.xyz/Scripts/Unlock/RevenueCat.min.js +^https:\/\/api\.revenuecat\.com\/.+\/(receipts|subscribers) url script-request-header https://rules-for-qx.sveir.xyz/Scripts/Unlock/RevenueCat.RmHeaders.js + +# ~ BuyiTunes@ddgksf2013 +^https?:\/\/buy\.itunes\.apple\.com\/verifyReceipt$ url script-response-body https://rules-for-qx.sveir.xyz/Scripts/Unlock/iTunes.min.js \ No newline at end of file diff --git a/Scripts/AdBlock/Bilibili/BiliBili.response.js b/Scripts/AdBlock/Bilibili/BiliBili.response.js index def3edd..fea33e5 100644 --- a/Scripts/AdBlock/Bilibili/BiliBili.response.js +++ b/Scripts/AdBlock/Bilibili/BiliBili.response.js @@ -2,13 +2,13 @@ WEBSITE: https://biliuniverse.io README: https://github.com/BiliUniverse */ -const $ = new Env("📺 BiliBili: 🛡️ ADBlock v0.4.0(2) response"); -const URL = new URLs(); +const $ = new Env("📺 BiliBili: 🛡️ ADBlock v0.5.0(1) response"); +const URI = new URIs(); const DataBase = { "ADBlock":{ "Settings":{ "Switch":true, - "Detail":{"splash":true,"feed":true,"activity":false,"story":true,"cinema":true,"view":true,"search":true,"commandDms":false,"colorfulDms":false,"MainList":true,"xlive":true,"Hot_search":true,"Hot_topics":true,"Most_visited":true,"Dynamic_adcard":true} + "Detail":{"splash":true,"feed":true,"vertical":false,"activity":false,"story":true,"cinema":true,"view":true,"search":true,"commandDms":false,"colorfulDms":false,"MainList":true,"xlive":true,"Hot_search":true,"Hot_topics":true,"Most_visited":true,"Dynamic_adcard":true} } }, "Default": { @@ -17,17 +17,22 @@ const DataBase = { }; /***************** Processing *****************/ +// 解构URL +const URL = URI.parse($request.url); +$.log(`⚠ ${$.name}`, `URL: ${JSON.stringify(URL)}`, ""); +// 获取连接参数 +const METHOD = $request.method, HOST = URL.host, PATH = URL.path, PATHs = URL.paths; +$.log(`⚠ ${$.name}`, `METHOD: ${METHOD}`, ""); +// 解析格式 +const FORMAT = ($response.headers?.["Content-Type"] ?? $response.headers?.["content-type"])?.split(";")?.[0]; +$.log(`⚠ ${$.name}`, `FORMAT: ${FORMAT}`, ""); (async () => { + // 读取设置 const { Settings, Caches, Configs } = setENV("BiliBili", "ADBlock", DataBase); $.log(`⚠ ${$.name}`, `Settings.Switch: ${Settings?.Switch}`, ""); switch (Settings.Switch) { case true: default: - let url = URL.parse($request?.url); - const METHOD = $request?.method, HOST = url?.host, PATH = url?.path, PATHs = url?.paths; - // 解析格式 - const FORMAT = ($response?.headers?.["Content-Type"] ?? $response?.headers?.["content-type"])?.split(";")?.[0]; - $.log(`⚠ ${$.name}`, `METHOD: ${METHOD}`, `HOST: ${HOST}`, `PATH: ${PATH}`, `PATHs: ${PATHs}`, `FORMAT: ${FORMAT}`, ""); // 创建空数据 let body = { "code": 0, "message": "0", "data": {} }; // 格式判断 @@ -42,6 +47,7 @@ const DataBase = { case "application/x-mpegURL": case "application/x-mpegurl": case "application/vnd.apple.mpegurl": + case "audio/mpegurl": break; case "text/xml": case "text/plist": @@ -51,7 +57,7 @@ const DataBase = { break; case "text/json": case "application/json": - body = JSON.parse($response.body); + body = JSON.parse($response.body ?? "{}"); // 解析链接 switch (HOST) { case "www.bilibili.com": @@ -86,7 +92,7 @@ const DataBase = { if (body.data.items?.length) { //区分pad与phone body.data.items = await Promise.all(body.data.items.map(async item => { - const { card_type: cardType, card_goto: cardGoto } = item; + const { card_type: cardType, card_goto: cardGoto, goto: Goto } = item; if (cardType && cardGoto) { if (['banner_v8', 'banner_ipad_v8'].includes(cardType) && cardGoto === 'banner') { switch (Settings?.Detail?.activity) { @@ -109,9 +115,9 @@ const DataBase = { break; } } else if (['cm_v2', 'cm_v1'].includes(cardType) && ['ad_web_s', 'ad_av', 'ad_web_gif'].includes(cardGoto)) { - // ad_player大视频广告 ad_web_gif大gif广告 ad_web_s普通小广告 ad_av创作推广广告 ad_inline_3d 上方大的视频3d广告 ad_inline_eggs 上方大的视频广告 + // ad_player大视频广告 ad_web_gif大gif广告 ad_web_s普通小广告 ad_av创作推广广告 ad_inline_3d 上方大的视频3d广告 ad_inline_eggs 上方大的视频广告 ad_inline_live 华为问界 $.log(`🎉 ${$.name}`, `${cardGoto}广告去除`); - if (url?.query?.device !== "phone") { + if (URL.query?.device !== "phone") { return undefined;//pad直接去除 } else { await fixPosition().then(result => item = result);//小广告补位 @@ -125,12 +131,12 @@ const DataBase = { $.log(`🎉 ${$.name}`, `屏蔽Up主<${item?.args?.up_name}>直播推广`); await fixPosition().then(result => item = result);//小广告补位 } - } else if (cardType === 'cm_v2' && ['ad_player', 'ad_inline_3d', 'ad_inline_eggs'].includes(cardGoto)) { + } else if (cardType === 'cm_v2' && ['ad_player', 'ad_inline_3d', 'ad_inline_eggs', 'ad_inline_live'].includes(cardGoto)) { $.log(`🎉 ${$.name}`, `${cardGoto}广告去除`); return undefined;//大广告直接去除 } else if (cardType === 'small_cover_v10' && cardGoto === 'game') { $.log(`🎉 ${$.name}`, "游戏广告去除"); - if (url?.query?.device !== "phone") { + if (URL.query?.device !== "phone") { return undefined;//pad直接去除 } else { await fixPosition().then(result => item = result);//小广告补位 @@ -138,6 +144,17 @@ const DataBase = { } else if (cardType === 'cm_double_v9' && cardGoto === 'ad_inline_av') { $.log(`🎉 ${$.name}`, "大视频广告去除"); return undefined;//大广告直接去除 + } else if (Goto === 'vertical_av') { + switch (Settings?.Detail?.vertical) { + case true: + default: + $.log(`🎉 ${$.name}`, "竖屏视频去除"); + await fixPosition().then(result => item = result);//小视频补位 + break; + case false: + $.log(`🚧 ${$.name}`, "用户设置推荐页竖屏视频不去除"); + break; + } } } return item; @@ -160,11 +177,11 @@ const DataBase = { const body = $.toObj(response.body) if (body?.code === 0 && body?.message === "0") { body.data.items = body.data.items.map(item => { - const { card_type: cardType, card_goto: cardGoto } = item; + const { card_type: cardType, card_goto: cardGoto, goto: Goto } = item; if (cardType && cardGoto) { if (cardType === 'banner_v8' && cardGoto === 'banner') { return undefined; - } else if (cardType === 'cm_v2' && ['ad_web_s', 'ad_av', 'ad_web_gif', 'ad_player', 'ad_inline_3d', 'ad_inline_eggs'].includes(cardGoto)) { + } else if (cardType === 'cm_v2' && ['ad_web_s', 'ad_av', 'ad_web_gif', 'ad_player', 'ad_inline_3d', 'ad_inline_eggs', 'ad_inline_live'].includes(cardGoto)) { return undefined; } else if (cardType === 'small_cover_v10' && cardGoto === 'game') { return undefined; @@ -172,6 +189,8 @@ const DataBase = { return undefined; } else if (cardType === 'large_cover_v9' && cardGoto === 'inline_av_v2') {//补位不需要大视频 return undefined; + } else if (Goto === 'vertical_av') {//补位不需要竖屏视频 + return undefined; } } return item; @@ -239,12 +258,7 @@ const DataBase = { switch (PATH) { case "pgc/player/api/playurl": // 番剧-播放地址-api case "pgc/player/web/playurl": // 番剧-播放地址-web - case "pgc/player/web/playurl/html5": // 番剧-播放地址-web-HTML5 - break; - case "pgc/view/v2/app/season": // 番剧页面-内容-app - break; - case "pgc/view/web/season": // 番剧-内容-web - case "pgc/view/pc/season": // 番剧-内容-pc + case "pgc/player/web/playurl/html5": // 番剧-播放地址-web-HTML5 break; case "pgc/page/bangumi": // 追番页 case "pgc/page/cinema/tab": // 观影页 @@ -287,7 +301,7 @@ const DataBase = { break; case "x/space/acc/info": // 用户空间-账号信息-pc case "x/space/wbi/acc/info": // 用户空间-账号信息-wbi - switch (url.query?.vmid || url.query?.mid) { + switch (URL.query?.vmid || URL.query?.mid) { case "11783021": // 哔哩哔哩番剧出差 case "1988098633": // b站_戲劇咖 case "2042149112": // b站_綜藝咖 @@ -296,6 +310,11 @@ const DataBase = { break; }; break; + case "pgc/view/v2/app/season": // 番剧页面-内容-app + break; + case "pgc/view/web/season": // 番剧-内容-web + case "pgc/view/pc/season": // 番剧-内容-pc + break; }; break; case "api.live.bilibili.com": @@ -329,20 +348,25 @@ const DataBase = { }; $response.body = JSON.stringify(body); break; + case "application/protobuf": case "application/x-protobuf": + case "application/vnd.google.protobuf": case "application/grpc": case "application/grpc+proto": case "applecation/octet-stream": - let rawBody = $.isQuanX() ? new Uint8Array($response.bodyBytes) : $response.body; - //$.log(`🚧 ${$.name}`, `isBuffer? ${ArrayBuffer.isView(rawBody)}: ${JSON.stringify(rawBody)}`, ""); + let rawBody = $.isQuanX() ? new Uint8Array($response.bodyBytes ?? []) : $response.body ?? new Uint8Array(); /****************** initialization start *******************/ - // timostamm/protobuf-ts + // timostamm/protobuf-ts 2.9.0 + // text-decoder !function(i){"use strict";function _(n,e,i){return e<=n&&n<=i}"undefined"!=typeof module&&module.exports&&!i["encoding-indexes"]&&(i["encoding-indexes"]=require("./encoding-indexes.js")["encoding-indexes"]);var l=Math.floor;function s(n){if(void 0===n)return{};if(n===Object(n))return n;throw TypeError("Could not convert argument to dictionary")}function u(n){return 0<=n&&n<=127}var a=u,b=-1;function c(n){this.tokens=[].slice.call(n),this.tokens.reverse()}c.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.pop():b},prepend:function(n){if(Array.isArray(n))for(var e=n;e.length;)this.tokens.push(e.pop());else this.tokens.push(n)},push:function(n){if(Array.isArray(n))for(var e=n;e.length;)this.tokens.unshift(e.shift());else this.tokens.unshift(n)}};var w=-1;function m(n,e){if(n)throw TypeError("Decoder error");return e||65533}function f(n){throw TypeError("The code point "+n+" could not be encoded.")}function r(n){return n=String(n).trim().toLowerCase(),Object.prototype.hasOwnProperty.call(d,n)?d[n]:null}var t,o,n=[{encodings:[{labels:["unicode-1-1-utf-8","utf-8","utf8"],name:"UTF-8"}],heading:"The Encoding"},{encodings:[{labels:["866","cp866","csibm866","ibm866"],name:"IBM866"},{labels:["csisolatin2","iso-8859-2","iso-ir-101","iso8859-2","iso88592","iso_8859-2","iso_8859-2:1987","l2","latin2"],name:"ISO-8859-2"},{labels:["csisolatin3","iso-8859-3","iso-ir-109","iso8859-3","iso88593","iso_8859-3","iso_8859-3:1988","l3","latin3"],name:"ISO-8859-3"},{labels:["csisolatin4","iso-8859-4","iso-ir-110","iso8859-4","iso88594","iso_8859-4","iso_8859-4:1988","l4","latin4"],name:"ISO-8859-4"},{labels:["csisolatincyrillic","cyrillic","iso-8859-5","iso-ir-144","iso8859-5","iso88595","iso_8859-5","iso_8859-5:1988"],name:"ISO-8859-5"},{labels:["arabic","asmo-708","csiso88596e","csiso88596i","csisolatinarabic","ecma-114","iso-8859-6","iso-8859-6-e","iso-8859-6-i","iso-ir-127","iso8859-6","iso88596","iso_8859-6","iso_8859-6:1987"],name:"ISO-8859-6"},{labels:["csisolatingreek","ecma-118","elot_928","greek","greek8","iso-8859-7","iso-ir-126","iso8859-7","iso88597","iso_8859-7","iso_8859-7:1987","sun_eu_greek"],name:"ISO-8859-7"},{labels:["csiso88598e","csisolatinhebrew","hebrew","iso-8859-8","iso-8859-8-e","iso-ir-138","iso8859-8","iso88598","iso_8859-8","iso_8859-8:1988","visual"],name:"ISO-8859-8"},{labels:["csiso88598i","iso-8859-8-i","logical"],name:"ISO-8859-8-I"},{labels:["csisolatin6","iso-8859-10","iso-ir-157","iso8859-10","iso885910","l6","latin6"],name:"ISO-8859-10"},{labels:["iso-8859-13","iso8859-13","iso885913"],name:"ISO-8859-13"},{labels:["iso-8859-14","iso8859-14","iso885914"],name:"ISO-8859-14"},{labels:["csisolatin9","iso-8859-15","iso8859-15","iso885915","iso_8859-15","l9"],name:"ISO-8859-15"},{labels:["iso-8859-16"],name:"ISO-8859-16"},{labels:["cskoi8r","koi","koi8","koi8-r","koi8_r"],name:"KOI8-R"},{labels:["koi8-ru","koi8-u"],name:"KOI8-U"},{labels:["csmacintosh","mac","macintosh","x-mac-roman"],name:"macintosh"},{labels:["dos-874","iso-8859-11","iso8859-11","iso885911","tis-620","windows-874"],name:"windows-874"},{labels:["cp1250","windows-1250","x-cp1250"],name:"windows-1250"},{labels:["cp1251","windows-1251","x-cp1251"],name:"windows-1251"},{labels:["ansi_x3.4-1968","ascii","cp1252","cp819","csisolatin1","ibm819","iso-8859-1","iso-ir-100","iso8859-1","iso88591","iso_8859-1","iso_8859-1:1987","l1","latin1","us-ascii","windows-1252","x-cp1252"],name:"windows-1252"},{labels:["cp1253","windows-1253","x-cp1253"],name:"windows-1253"},{labels:["cp1254","csisolatin5","iso-8859-9","iso-ir-148","iso8859-9","iso88599","iso_8859-9","iso_8859-9:1989","l5","latin5","windows-1254","x-cp1254"],name:"windows-1254"},{labels:["cp1255","windows-1255","x-cp1255"],name:"windows-1255"},{labels:["cp1256","windows-1256","x-cp1256"],name:"windows-1256"},{labels:["cp1257","windows-1257","x-cp1257"],name:"windows-1257"},{labels:["cp1258","windows-1258","x-cp1258"],name:"windows-1258"},{labels:["x-mac-cyrillic","x-mac-ukrainian"],name:"x-mac-cyrillic"}],heading:"Legacy single-byte encodings"},{encodings:[{labels:["chinese","csgb2312","csiso58gb231280","gb2312","gb_2312","gb_2312-80","gbk","iso-ir-58","x-gbk"],name:"GBK"},{labels:["gb18030"],name:"gb18030"}],heading:"Legacy multi-byte Chinese (simplified) encodings"},{encodings:[{labels:["big5","big5-hkscs","cn-big5","csbig5","x-x-big5"],name:"Big5"}],heading:"Legacy multi-byte Chinese (traditional) encodings"},{encodings:[{labels:["cseucpkdfmtjapanese","euc-jp","x-euc-jp"],name:"EUC-JP"},{labels:["csiso2022jp","iso-2022-jp"],name:"ISO-2022-JP"},{labels:["csshiftjis","ms932","ms_kanji","shift-jis","shift_jis","sjis","windows-31j","x-sjis"],name:"Shift_JIS"}],heading:"Legacy multi-byte Japanese encodings"},{encodings:[{labels:["cseuckr","csksc56011987","euc-kr","iso-ir-149","korean","ks_c_5601-1987","ks_c_5601-1989","ksc5601","ksc_5601","windows-949"],name:"EUC-KR"}],heading:"Legacy multi-byte Korean encodings"},{encodings:[{labels:["csiso2022kr","hz-gb-2312","iso-2022-cn","iso-2022-cn-ext","iso-2022-kr"],name:"replacement"},{labels:["utf-16be"],name:"UTF-16BE"},{labels:["utf-16","utf-16le"],name:"UTF-16LE"},{labels:["x-user-defined"],name:"x-user-defined"}],heading:"Legacy miscellaneous encodings"}],d={},h=(n.forEach(function(n){n.encodings.forEach(function(e){e.labels.forEach(function(n){d[n]=e})})}),{}),g={};function y(n,e){return e&&e[n]||null}function p(n,e){e=e.indexOf(n);return-1===e?null:e}function v(n){if("encoding-indexes"in i)return i["encoding-indexes"][n];throw Error("Indexes missing. Did you forget to include encoding-indexes.js first?")}var x="utf-8";function O(n,e){if(!(this instanceof O))throw TypeError("Called as a function. Did you forget 'new'?");n=void 0!==n?String(n):x,e=s(e),this._encoding=null,this._decoder=null,this._ignoreBOM=!1,this._BOMseen=!1,this._error_mode="replacement",this._do_not_flush=!1;var i=r(n);if(null===i||"replacement"===i.name)throw RangeError("Unknown encoding: "+n);if(g[i.name])return(n=this)._encoding=i,Boolean(e.fatal)&&(n._error_mode="fatal"),Boolean(e.ignoreBOM)&&(n._ignoreBOM=!0),Object.defineProperty||(this.encoding=n._encoding.name.toLowerCase(),this.fatal="fatal"===n._error_mode,this.ignoreBOM=n._ignoreBOM),n;throw Error("Decoder not present. Did you forget to include encoding-indexes.js first?")}function k(n,e){if(!(this instanceof k))throw TypeError("Called as a function. Did you forget 'new'?");e=s(e),this._encoding=null,this._encoder=null,this._do_not_flush=!1,this._fatal=Boolean(e.fatal)?"fatal":"replacement";if(Boolean(e.NONSTANDARD_allowLegacyEncoding)){e=r(n=void 0!==n?String(n):x);if(null===e||"replacement"===e.name)throw RangeError("Unknown encoding: "+n);if(!h[e.name])throw Error("Encoder not present. Did you forget to include encoding-indexes.js first?");this._encoding=e}else this._encoding=r("utf-8"),void 0!==n&&"console"in i&&console.warn("TextEncoder constructor called with encoding label, which is ignored.");return Object.defineProperty||(this.encoding=this._encoding.name.toLowerCase()),this}function e(n){var r=n.fatal,t=0,o=0,s=0,l=128,a=191;this.handler=function(n,e){if(e===b&&0!==s)return s=0,m(r);if(e===b)return w;if(0===s){if(_(e,0,127))return e;if(_(e,194,223))s=1,t=31&e;else if(_(e,224,239))224===e&&(l=160),237===e&&(a=159),s=2,t=15&e;else{if(!_(e,240,244))return m(r);240===e&&(l=144),244===e&&(a=143),s=3,t=7&e}return null}var i;return _(e,l,a)?(l=128,a=191,t=t<<6|63&e,(o+=1)!==s?null:(i=t,t=s=o=0,i)):(t=s=o=0,l=128,a=191,n.prepend(e),m(r))}}function E(n){n.fatal;this.handler=function(n,e){if(e===b)return w;if(a(e))return e;_(e,128,2047)?(i=1,r=192):_(e,2048,65535)?(i=2,r=224):_(e,65536,1114111)&&(i=3,r=240);for(var i,r,t=[(e>>6*i)+r];0>6*(i-1)),--i;return t}}function j(i,n){var r=n.fatal;this.handler=function(n,e){return e===b?w:u(e)?e:null===(e=i[e-128])?m(r):e}}function B(r,n){n.fatal;this.handler=function(n,e){var i;return e===b?w:a(e)?e:(null===(i=p(e,r))&&f(e),i+128)}}function S(n){var o=n.fatal,s=0,l=0,a=0;this.handler=function(n,e){var i,r,t;return e===b&&0===s&&0===l&&0===a?w:(e!==b||0===s&&0===l&&0===a||(a=l=s=0,m(o)),0!==a?(i=null,_(e,48,57)&&(i=function(n){if(39419>8,n=255&n;return e?[i,n]:[n,i]}function L(r,n){var t=n.fatal,o=null,s=null;this.handler=function(n,e){var i;return e!==b||null===o&&null===s?e===b&&null===o&&null===s?w:null===o?(o=e,null):(e=r?(o<<8)+e:(e<<8)+o,(o=null)!==s?(i=s,s=null,_(e,56320,57343)?65536+1024*(i-55296)+(e-56320):(n.prepend(A(e,r)),m(t))):_(e,55296,56319)?(s=e,null):_(e,56320,57343)?m(t):e):m(t)}}function M(r,n){n.fatal;this.handler=function(n,e){var i;return e===b?w:_(e,0,65535)?A(e,r):(i=A(55296+(e-65536>>10),r),e=A(56320+(e-65536&1023),r),i.concat(e))}}function N(n){n.fatal;this.handler=function(n,e){return e===b?w:u(e)?e:63360+e-128}}function q(n){n.fatal;this.handler=function(n,e){return e===b?w:a(e)?e:_(e,63360,63487)?e-63360+128:f(e)}}Object.defineProperty&&(Object.defineProperty(O.prototype,"encoding",{get:function(){return this._encoding.name.toLowerCase()}}),Object.defineProperty(O.prototype,"fatal",{get:function(){return"fatal"===this._error_mode}}),Object.defineProperty(O.prototype,"ignoreBOM",{get:function(){return this._ignoreBOM}})),O.prototype.decode=function(n,e){n="object"==typeof n&&n instanceof ArrayBuffer?new Uint8Array(n):"object"==typeof n&&"buffer"in n&&n.buffer instanceof ArrayBuffer?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(0);e=s(e),this._do_not_flush||(this._decoder=g[this._encoding.name]({fatal:"fatal"===this._error_mode}),this._BOMseen=!1),this._do_not_flush=Boolean(e.stream);for(var i,r=new c(n),t=[];;){var o=r.read();if(o===b)break;if((i=this._decoder.handler(r,o))===w)break;null!==i&&(Array.isArray(i)?t.push.apply(t,i):t.push(i))}if(!this._do_not_flush){for(;(i=this._decoder.handler(r,r.read()))!==w&&(null!==i&&(Array.isArray(i)?t.push.apply(t,i):t.push(i)),!r.endOfStream()););this._decoder=null}return function(n){e=["UTF-8","UTF-16LE","UTF-16BE"],i=this._encoding.name,-1===e.indexOf(i)||this._ignoreBOM||this._BOMseen||(0>10),56320+(1023&s)))}return t}.call(this,t)},Object.defineProperty&&Object.defineProperty(k.prototype,"encoding",{get:function(){return this._encoding.name.toLowerCase()}}),k.prototype.encode=function(n,e){n=void 0===n?"":String(n),e=s(e),this._do_not_flush||(this._encoder=h[this._encoding.name]({fatal:"fatal"===this._fatal})),this._do_not_flush=Boolean(e.stream);for(var i,r=new c(function(n){for(var e=String(n),i=e.length,r=0,t=[];rr in e?__defProp(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,__spreadValues=(e,r)=>{for(var t in r=r||{})__hasOwnProp.call(r,t)&&__defNormalProp(e,t,r[t]);if(__getOwnPropSymbols)for(var t of __getOwnPropSymbols(r))__propIsEnum.call(r,t)&&__defNormalProp(e,t,r[t]);return e},__spreadProps=(e,r)=>__defProps(e,__getOwnPropDescs(r));function varint64read(){let r=0,t=0;for(let e=0;e<28;e+=7){var a=this.buf[this.pos++];if(r|=(127&a)<>4,0==(128&e))return this.assertBounds(),[r,t];for(let e=3;e<=31;e+=7){var n=this.buf[this.pos++];if(t|=(127&n)<>>e,s=!(n>>>7==0&&0==t);if(a.push(255&(s?128|n:n)),!s)return}var e=r>>>28&15|(7&t)<<4,i=!(t>>3==0);if(a.push(255&(i?128|e:e)),i){for(let e=3;e<31;e+=7){var o=t>>>e,l=!(o>>>7==0);if(a.push(255&(l?128|o:o)),!l)return}a.push(t>>>31&1)}}const TWO_PWR_32_DBL$1=4294967296;function int64fromString(t){var e="-"==t[0];e&&(t=t.slice(1));let a=0,n=0;function r(e,r){e=Number(t.slice(e,r));n*=1e6,(a=1e6*a+e)>=TWO_PWR_32_DBL$1&&(n+=a/TWO_PWR_32_DBL$1|0,a%=TWO_PWR_32_DBL$1)}return r(-24,-18),r(-18,-12),r(-12,-6),r(-6),[e,a,n]}function int64toString(e,r){if(r<=2097151)return""+(TWO_PWR_32_DBL$1*r+e);var t=(e>>>24|r<<8)>>>0&16777215,r=r>>16&65535;let a=(16777215&e)+6777216*t+6710656*r,n=t+8147497*r,s=2*r;e=1e7;function i(e,r){e=e?String(e):"";return r?"0000000".slice(e.length)+e:e}return a>=e&&(n+=Math.floor(a/e),a%=e),n>=e&&(s+=Math.floor(n/e),n%=e),i(s,0)+i(n,s)+i(a,1)}function varint32write(r,t){if(0<=r){for(;127>>=7;t.push(r)}else{for(let e=0;e<9;e++)t.push(127&r|128),r>>=7;t.push(1)}}function varint32read(){let r=this.buf[this.pos++];var e=127&r;if(0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<7,0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<14,0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<21,0==(128&r))return this.assertBounds(),e;e|=(15&(r=this.buf[this.pos++]))<<28;for(let e=5;0!=(128&r)&&e<10;e++)r=this.buf[this.pos++];if(0!=(128&r))throw new Error("invalid varint");return this.assertBounds(),e>>>0}function detectBi(){var e=new DataView(new ArrayBuffer(8));return void 0!==globalThis.BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("9223372036854775807"),UMIN:BigInt("0"),UMAX:BigInt("18446744073709551615"),C:BigInt,V:e}:void 0}const BI=detectBi();function assertBi(e){if(!e)throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support")}const RE_DECIMAL_STR=/^-?[0-9]+$/,TWO_PWR_32_DBL=4294967296;class SharedPbLong{constructor(e,r){this.lo=0|e,this.hi=0|r}isZero(){return 0==this.lo&&0==this.hi}toNumber(){var e=this.hi*TWO_PWR_32_DBL+(this.lo>>>0);if(Number.isSafeInteger(e))return e;throw new Error("cannot convert to safe number")}}const _PbULong=class extends SharedPbLong{static from(e){if(BI)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=BI.C(e);case"number":if(0===e)return this.ZERO;e=BI.C(e);case"bigint":if(!e)return this.ZERO;if(eBI.UMAX)throw new Error("ulong too large");return BI.V.setBigUint64(0,e,!0),new _PbULong(BI.V.getInt32(0,!0),BI.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!RE_DECIMAL_STR.test(e))throw new Error("string is no integer");var[r,t,a]=int64fromString(e);if(r)throw new Error("signed value");return new _PbULong(t,a);case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");if(e<0)throw new Error("signed value for ulong");return new _PbULong(e,e/TWO_PWR_32_DBL)}throw new Error("unknown value "+typeof e)}toString(){return BI?this.toBigInt().toString():int64toString(this.lo,this.hi)}toBigInt(){return assertBi(BI),BI.V.setInt32(0,this.lo,!0),BI.V.setInt32(4,this.hi,!0),BI.V.getBigUint64(0,!0)}};let PbULong=_PbULong;PbULong.ZERO=new _PbULong(0,0);const _PbLong=class extends SharedPbLong{static from(e){if(BI)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=BI.C(e);case"number":if(0===e)return this.ZERO;e=BI.C(e);case"bigint":if(!e)return this.ZERO;if(eBI.MAX)throw new Error("ulong too large");return BI.V.setBigInt64(0,e,!0),new _PbLong(BI.V.getInt32(0,!0),BI.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;var r,t,a;if(e=e.trim(),RE_DECIMAL_STR.test(e))return[r,a,t]=int64fromString(e),a=new _PbLong(a,t),r?a.negate():a;throw new Error("string is no integer");case"number":if(0==e)return this.ZERO;if(Number.isSafeInteger(e))return 0>>3,e=7&e;if(r<=0||e<0||5this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){var e=this.uint32();return e>>>1^-(1&e)}int64(){return new PbLong(...this.varint64())}uint64(){return new PbULong(...this.varint64())}sint64(){var[e,r]=this.varint64(),t=-(1&e),e=(e>>>1|(1&r)<<31)^t,r=r>>>1^t;return new PbLong(e,r)}bool(){var[e,r]=this.varint64();return 0!==e||0!==r}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return new PbULong(this.sfixed32(),this.sfixed32())}sfixed64(){return new PbLong(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){var e=this.uint32(),r=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(r,r+e)}string(){return this.textDecoder.decode(this.bytes())}}function assert(e,r){if(!e)throw new Error(r)}const FLOAT32_MAX=34028234663852886e22,FLOAT32_MIN=-34028234663852886e22,UINT32_MAX=4294967295,INT32_MAX=2147483647,INT32_MIN=-2147483648;function assertInt32(e){if("number"!=typeof e)throw new Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>INT32_MAX||eUINT32_MAX||e<0)throw new Error("invalid uint 32: "+e)}function assertFloat32(e){if("number"!=typeof e)throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>FLOAT32_MAX||e>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(assertUInt32(e);127>>=7;return this.buf.push(e),this}int32(e){return assertInt32(e),varint32write(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){e=this.textEncoder.encode(e);return this.uint32(e.byteLength),this.raw(e)}float(e){assertFloat32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setFloat32(0,e,!0),this.raw(r)}double(e){var r=new Uint8Array(8);return new DataView(r.buffer).setFloat64(0,e,!0),this.raw(r)}fixed32(e){assertUInt32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setUint32(0,e,!0),this.raw(r)}sfixed32(e){assertInt32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setInt32(0,e,!0),this.raw(r)}sint32(e){return assertInt32(e),varint32write(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){var r=new Uint8Array(8),t=new DataView(r.buffer),e=PbLong.from(e);return t.setInt32(0,e.lo,!0),t.setInt32(4,e.hi,!0),this.raw(r)}fixed64(e){var r=new Uint8Array(8),t=new DataView(r.buffer),e=PbULong.from(e);return t.setInt32(0,e.lo,!0),t.setInt32(4,e.hi,!0),this.raw(r)}int64(e){e=PbLong.from(e);return varint64write(e.lo,e.hi,this.buf),this}sint64(e){var e=PbLong.from(e),r=e.hi>>31;return varint64write(e.lo<<1^r,(e.hi<<1|e.lo>>>31)^r,this.buf),this}uint64(e){e=PbULong.from(e);return varint64write(e.lo,e.hi,this.buf),this}}function binaryWriteOptions(e){return e?__spreadValues(__spreadValues({},defaultsWrite$1),e):defaultsWrite$1}function binaryReadOptions(e){return e?__spreadValues(__spreadValues({},defaultsRead$1),e):defaultsRead$1}!function(i){i.symbol=Symbol.for("protobuf-ts/unknown"),i.onRead=(e,r,t,a,n)=>{(s(r)?r[i.symbol]:r[i.symbol]=[]).push({no:t,wireType:a,data:n})},i.onWrite=(e,r,t)=>{for(var{no:a,wireType:n,data:s}of i.list(r))t.tag(a,n).raw(s)},i.list=(e,r)=>s(e)?(e=e[i.symbol],r?e.filter((e=>e.no==r)):e):[],i.last=(e,r)=>i.list(e,r).slice(-1)[0];const s=e=>e&&Array.isArray(e[i.symbol])}(UnknownFieldHandler=UnknownFieldHandler||{});const defaultsRead$1={readUnknownField:!0,readerFactory:e=>new BinaryReader(e)},defaultsWrite$1={writeUnknownFields:!0,writerFactory:()=>new BinaryWriter},MESSAGE_TYPE=(!function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"}(WireType=WireType||{}),Symbol.for("protobuf-ts/message-type"));function lowerCamelCase(r){let t=!1;var a=[];for(let e=0;e!r.includes(e))))return!1;if(!n&&r.some((e=>!t.known.includes(e))))return!1;if(!(a<1)){for(const i of t.oneofs){const o=e[i];if(!isOneofGroup(o))return!1;if(void 0!==o.oneofKind){var s=this.fields.find((e=>e.localName===o.oneofKind));if(!s)return!1;if(!this.field(o[o.oneofKind],s,n,a))return!1}}for(const l of this.fields)if(void 0===l.oneof&&!this.field(e[l.localName],l,n,a))return!1}}return!0}field(e,r,t,a){var n=r.repeat;switch(r.kind){case"scalar":return void 0===e?r.opt:n?this.scalars(e,r.T,a,r.L):this.scalar(e,r.T,r.L);case"enum":return void 0===e?r.opt:n?this.scalars(e,ScalarType.INT32,a):this.scalar(e,ScalarType.INT32);case"message":return void 0===e?!0:n?this.messages(e,r.T(),t,a):this.message(e,r.T(),t,a);case"map":if("object"!=typeof e||null===e)return!1;if(a<2)return!0;if(!this.mapKeys(e,r.K,a))return!1;switch(r.V.kind){case"scalar":return this.scalars(Object.values(e),r.V.T,a,r.V.L);case"enum":return this.scalars(Object.values(e),ScalarType.INT32,a);case"message":return this.messages(Object.values(e),r.V.T(),t,a)}}return!0}message(e,r,t,a){return t?r.isAssignable(e,a):r.is(e,a)}messages(r,t,e,a){if(!Array.isArray(r))return!1;if(!(a<2))if(e){for(let e=0;eparseInt(e))),r,t);case ScalarType.BOOL:return this.scalars(a.slice(0,t).map((e=>"true"==e||"false"!=e&&e)),r,t);default:return this.scalars(a,r,t,LongType.STRING)}}}function typeofJsonValue(e){var r=typeof e;if("object"==r){if(Array.isArray(e))return"array";if(null===e)return"null"}return r}function isJsonObject(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}let encTable="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),decTable=[];for(let e=0;e>4,i=s,n=2;break;case 2:t[a++]=(15&i)<<4|(60&s)>>2,i=s,n=3;break;case 3:t[a++]=(3&i)<<6|s,n=0}}if(1==n)throw Error("invalid base64 string.");return t.subarray(0,a)}function base64encode(r){let t="",a=0,n,s=0;for(let e=0;e>2],s=(3&n)<<4,a=1;break;case 1:t+=encTable[s|n>>4],s=(15&n)<<2,a=2;break;case 2:t=(t+=encTable[s|n>>6])+encTable[63&n],a=0}return a&&(t=t+encTable[s]+"=",1==a&&(t+="=")),t}function reflectionLongConvert(e,r){switch(r){case LongType.BIGINT:return e.toBigInt();case LongType.NUMBER:return e.toNumber();default:return e.toString()}}decTable["-".charCodeAt(0)]=encTable.indexOf("+"),decTable["_".charCodeAt(0)]=encTable.indexOf("/");class ReflectionJsonReader{constructor(e){this.info=e}prepare(){var e;if(void 0===this.fMap){this.fMap={};for(const r of null!=(e=this.info.fields)?e:[])this.fMap[r.name]=r,this.fMap[r.jsonName]=r,this.fMap[r.localName]=r}}assert(e,r,t){if(!e){let e=typeofJsonValue(t);throw"number"!=e&&"boolean"!=e||(e=t.toString()),new Error(`Cannot parse JSON ${e} for ${this.info.typeName}#`+r)}}read(e,r,t){this.prepare();var a,n,s=[];for([a,n]of Object.entries(e)){var i=this.fMap[a];if(!i){if(t.ignoreUnknownFields)continue;throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: `+a)}var o=i.localName;let e;if(i.oneof){if(s.includes(i.oneof))throw new Error(`Multiple members of the oneof group "${i.oneof}" of ${this.info.typeName} are present in JSON.`);s.push(i.oneof),e=r[i.oneof]={oneofKind:o}}else e=r;if("map"==i.kind){if(null!==n){this.assert(isJsonObject(n),i.name,n);var l,c,u=e[o];for([l,c]of Object.entries(n)){this.assert(null!==c,i.name+" map value",null);let e;switch(i.V.kind){case"message":e=i.V.T().internalJsonRead(c,t);break;case"enum":if(!1===(e=this.enum(i.V.T(),c,i.name,t.ignoreUnknownFields)))continue;break;case"scalar":e=this.scalar(c,i.V.T,i.V.L,i.name)}this.assert(void 0!==e,i.name+" map value",c);let r=l;i.K==ScalarType.BOOL&&(r="true"==r||"false"!=r&&r),u[r=this.scalar(r,i.K,LongType.STRING,i.name).toString()]=e}}}else if(i.repeat){if(null!==n){this.assert(Array.isArray(n),i.name,n);var f=e[o];for(const p of n){this.assert(null!==p,i.name,null);let e;switch(i.kind){case"message":e=i.T().internalJsonRead(p,t);break;case"enum":if(!1===(e=this.enum(i.T(),p,i.name,t.ignoreUnknownFields)))continue;break;case"scalar":e=this.scalar(p,i.T,i.L,i.name)}this.assert(void 0!==e,i.name,n),f.push(e)}}}else switch(i.kind){case"message":null===n&&"google.protobuf.Value"!=i.T().typeName?this.assert(void 0===i.oneof,i.name+" (oneof member)",null):e[o]=i.T().internalJsonRead(n,t,e[o]);break;case"enum":var h=this.enum(i.T(),n,i.name,t.ignoreUnknownFields);!1!==h&&(e[o]=h);break;case"scalar":e[o]=this.scalar(n,i.T,i.L,i.name)}}}enum(r,t,a,n){if("google.protobuf.NullValue"==r[0]&&assert(null===t,`Unable to parse field ${this.info.typeName}#${a}, enum ${r[0]} only accepts null.`),null===t)return 0;switch(typeof t){case"number":return assert(Number.isInteger(t),`Unable to parse field ${this.info.typeName}#${a}, enum can only be integral number, got ${t}.`),t;case"string":let e=t;r[2]&&t.substring(0,r[2].length)===r[2]&&(e=t.substring(r[2].length));var s=r[1][e];return void 0===s&&n?!1:(assert("number"==typeof s,`Unable to parse field ${this.info.typeName}#${a}, enum ${r[0]} has no value for "${t}".`),s)}assert(!1,`Unable to parse field ${this.info.typeName}#${a}, cannot parse enum value from ${typeof t}".`)}scalar(r,t,a,e){let n;try{switch(t){case ScalarType.DOUBLE:case ScalarType.FLOAT:if(null===r)return 0;if("NaN"===r)return Number.NaN;if("Infinity"===r)return Number.POSITIVE_INFINITY;if("-Infinity"===r)return Number.NEGATIVE_INFINITY;if(""===r)n="empty string";else if("string"==typeof r&&r.trim().length!==r.length)n="extra whitespace";else if("string"==typeof r||"number"==typeof r){var s=Number(r);if(Number.isNaN(s))n="not a number";else{if(Number.isFinite(s))return t==ScalarType.FLOAT&&assertFloat32(s),s;n="too large or small"}}break;case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.SFIXED32:case ScalarType.SINT32:case ScalarType.UINT32:if(null===r)return 0;let e;if("number"==typeof r?e=r:""===r?n="empty string":"string"==typeof r&&(r.trim().length!==r.length?n="extra whitespace":e=Number(r)),void 0===e)break;return(t==ScalarType.UINT32?assertUInt32:assertInt32)(e),e;case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:if(null===r)return reflectionLongConvert(PbLong.ZERO,a);if("number"!=typeof r&&"string"!=typeof r)break;return reflectionLongConvert(PbLong.from(r),a);case ScalarType.FIXED64:case ScalarType.UINT64:if(null===r)return reflectionLongConvert(PbULong.ZERO,a);if("number"!=typeof r&&"string"!=typeof r)break;return reflectionLongConvert(PbULong.from(r),a);case ScalarType.BOOL:if(null===r)return!1;if("boolean"!=typeof r)break;return r;case ScalarType.STRING:if(null===r)return"";if("string"!=typeof r){n="extra whitespace";break}try{encodeURIComponent(r)}catch(e){0;break}return r;case ScalarType.BYTES:if(null===r||""===r)return new Uint8Array(0);if("string"!=typeof r)break;return base64decode(r)}}catch(e){n=e.message}this.assert(!1,e+(n?" - "+n:""),r)}}class ReflectionJsonWriter{constructor(e){this.fields=null!=(e=e.fields)?e:[]}write(e,r){var t,a,n={},s=e;for(const i of this.fields)i.oneof?(t=s[i.oneof]).oneofKind===i.localName&&(a="scalar"==i.kind||"enum"==i.kind?__spreadProps(__spreadValues({},r),{emitDefaultValues:!0}):r,assert(void 0!==(t=this.field(i,t[i.localName],a))),n[r.useProtoFieldName?i.name:i.jsonName]=t):void 0!==(a=this.field(i,s[i.localName],r))&&(n[r.useProtoFieldName?i.name:i.jsonName]=a);return n}field(r,t,a){let e=void 0;if("map"==r.kind){assert("object"==typeof t&&null!==t);var n={};switch(r.V.kind){case"scalar":for(var[s,i]of Object.entries(t)){i=this.scalar(r.V.T,i,r.name,!1,!0);assert(void 0!==i),n[s.toString()]=i}break;case"message":var o,l,c=r.V.T();for([o,l]of Object.entries(t)){var u=this.message(c,l,r.name,a);assert(void 0!==u),n[o.toString()]=u}break;case"enum":var f,h,p=r.V.T();for([f,h]of Object.entries(t)){assert(void 0===h||"number"==typeof h);var d=this.enum(p,h,r.name,!1,!0,a.enumAsInteger);assert(void 0!==d),n[f.toString()]=d}}(a.emitDefaultValues||0[e.no,e]))))}read(a,n,s,e){this.prepare();for(var r=void 0===e?a.len:a.pos+e;a.pose.no-r.no)))}write(n,s,i){this.prepare();for(const f of this.fields){let e,r,t=f.repeat,a=f.localName;if(f.oneof){var o=n[f.oneof];if(o.oneofKind!==a)continue;e=o[a],r=!0}else e=n[a],r=!1;switch(f.kind){case"scalar":case"enum":var l="enum"==f.kind?ScalarType.INT32:f.T;if(t)if(assert(Array.isArray(e)),t==RepeatType.PACKED)this.packed(s,l,f.no,e);else for(const h of e)this.scalar(s,l,f.no,h,!0);else void 0===e?assert(f.opt):this.scalar(s,l,f.no,e,r||f.opt);break;case"message":if(t){assert(Array.isArray(e));for(const p of e)this.message(s,i,f.T(),f.no,p)}else this.message(s,i,f.T(),f.no,e);break;case"map":assert("object"==typeof e&&null!==e);for(var[c,u]of Object.entries(e))this.mapEntry(s,i,f,c,u)}}var e=i.writeUnknownFields;!1!==e&&(!0===e?UnknownFieldHandler.onWrite:e)(this.info.typeName,n,s)}mapEntry(e,r,t,a,n){e.tag(t.no,WireType.LengthDelimited),e.fork();let s=a;switch(t.K){case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.UINT32:case ScalarType.SFIXED32:case ScalarType.SINT32:s=Number.parseInt(a);break;case ScalarType.BOOL:assert("true"==a||"false"==a),s="true"==a}switch(this.scalar(e,t.K,1,s,!0),t.V.kind){case"scalar":this.scalar(e,t.V.T,2,n,!0);break;case"enum":this.scalar(e,ScalarType.INT32,2,n,!0);break;case"message":this.message(e,r,t.V.T(),2,n)}e.join()}message(e,r,t,a,n){void 0!==n&&(t.internalBinaryWrite(n,e.tag(a,WireType.LengthDelimited).fork(),r),e.join())}scalar(e,r,t,a,n){var[r,s,i]=this.scalarInfo(r,a);i&&!n||(e.tag(t,r),e[s](a))}packed(r,e,t,a){if(a.length){assert(e!==ScalarType.BYTES&&e!==ScalarType.STRING),r.tag(t,WireType.LengthDelimited),r.fork();var[,n]=this.scalarInfo(e);for(let e=0;e{i.symbol=Symbol.for("protobuf-ts/unknown"),i.onRead=(e,r,t,a,n)=>{(s(r)?r[i.symbol]:r[i.symbol]=[]).push({no:t,wireType:a,data:n})},i.onWrite=(e,r,t)=>{for(var{no:a,wireType:n,data:s}of i.list(r))t.tag(a,n).raw(s)},i.list=(e,r)=>{return s(e)?(e=e[i.symbol],r?e.filter(e=>e.no==r):e):[]},i.last=(e,r)=>(0,i.list)(e,r).slice(-1)[0];const s=e=>e&&Array.isArray(e[i.symbol])})(UnknownFieldHandler=UnknownFieldHandler||{}); + var UnknownFieldHandler,WireType=(e=>(e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32",e))(WireType||{});const MESSAGE_TYPE=Symbol.for("protobuf-ts/message-type");function lowerCamelCase(r){let t=!1;var a=[];for(let e=0;e(e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64",e))(ScalarType||{}),LongType=(e=>(e[e.BIGINT=0]="BIGINT",e[e.STRING=1]="STRING",e[e.NUMBER=2]="NUMBER",e))(LongType||{}),RepeatType=(e=>(e[e.NO=0]="NO",e[e.PACKED=1]="PACKED",e[e.UNPACKED=2]="UNPACKED",e))(RepeatType||{});function normalizeFieldInfo(e){return e.localName=e.localName??lowerCamelCase(e.name),e.jsonName=e.jsonName??lowerCamelCase(e.name),e.repeat=e.repeat??0,e.opt=e.opt??(!e.repeat&&(!e.oneof&&"message"==e.kind)),e}function isOneofGroup(e){if("object"!=typeof e||null===e||!e.hasOwnProperty("oneofKind"))return!1;switch(typeof e.oneofKind){case"string":return void 0===e[e.oneofKind]?!1:2==Object.keys(e).length;case"undefined":return 1==Object.keys(e).length;default:return!1}}class ReflectionTypeCheck{constructor(e){this.fields=e.fields??[]}prepare(){if(!this.data){var e,r=[],t=[],a=[];for(e of this.fields)if(e.oneof)a.includes(e.oneof)||(a.push(e.oneof),r.push(e.oneof),t.push(e.oneof));else switch(t.push(e.localName),e.kind){case"scalar":case"enum":e.opt&&!e.repeat||r.push(e.localName);break;case"message":e.repeat&&r.push(e.localName);break;case"map":r.push(e.localName)}this.data={req:r,known:t,oneofs:Object.values(a)}}}is(e,a,n=!1){if(!(a<0)){if(null==e||"object"!=typeof e)return!1;this.prepare();let r=Object.keys(e),t=this.data;if(r.length!r.includes(e)))return!1;if(!n&&r.some(e=>!t.known.includes(e)))return!1;if(!(a<1)){for(const i of t.oneofs){const o=e[i];if(!isOneofGroup(o))return!1;if(void 0!==o.oneofKind){var s=this.fields.find(e=>e.localName===o.oneofKind);if(!s)return!1;if(!this.field(o[o.oneofKind],s,n,a))return!1}}for(const l of this.fields)if(void 0===l.oneof&&!this.field(e[l.localName],l,n,a))return!1}}return!0}field(e,r,t,a){var n=r.repeat;switch(r.kind){case"scalar":return void 0===e?r.opt:n?this.scalars(e,r.T,a,r.L):this.scalar(e,r.T,r.L);case"enum":return void 0===e?r.opt:n?this.scalars(e,ScalarType.INT32,a):this.scalar(e,ScalarType.INT32);case"message":return void 0===e?!0:n?this.messages(e,r.T(),t,a):this.message(e,r.T(),t,a);case"map":if("object"!=typeof e||null===e)return!1;if(a<2)return!0;if(!this.mapKeys(e,r.K,a))return!1;switch(r.V.kind){case"scalar":return this.scalars(Object.values(e),r.V.T,a,r.V.L);case"enum":return this.scalars(Object.values(e),ScalarType.INT32,a);case"message":return this.messages(Object.values(e),r.V.T(),t,a)}}return!0}message(e,r,t,a){return t?r.isAssignable(e,a):r.is(e,a)}messages(r,t,e,a){if(!Array.isArray(r))return!1;if(!(a<2))if(e){for(let e=0;eparseInt(e)),r,t);case ScalarType.BOOL:return this.scalars(a.slice(0,t).map(e=>"true"==e||"false"!=e&&e),r,t);default:return this.scalars(a,r,t,LongType.STRING)}}}function typeofJsonValue(e){var r=typeof e;if("object"==r){if(Array.isArray(e))return"array";if(null===e)return"null"}return r}function isJsonObject(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}let encTable="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),decTable=[];for(let e=0;e>4,i=s,n=2;break;case 2:t[a++]=(15&i)<<4|(60&s)>>2,i=s,n=3;break;case 3:t[a++]=(3&i)<<6|s,n=0}}if(1==n)throw Error("invalid base64 string.");return t.subarray(0,a)}function base64encode(r){let t="",a=0,n,s=0;for(let e=0;e>2],s=(3&n)<<4,a=1;break;case 1:t+=encTable[s|n>>4],s=(15&n)<<2,a=2;break;case 2:t=(t+=encTable[s|n>>6])+encTable[63&n],a=0}return a&&(t=t+encTable[s]+"=",1==a&&(t+="=")),t}function varint64read(){let r=0,t=0;for(let e=0;e<28;e+=7){var a=this.buf[this.pos++];if(r|=(127&a)<>4,0==(128&e))return this.assertBounds(),[r,t];for(let e=3;e<=31;e+=7){var n=this.buf[this.pos++];if(t|=(127&n)<>>e,s=!(n>>>7==0&&0==t);if(a.push(255&(s?128|n:n)),!s)return}var e=r>>>28&15|(7&t)<<4,i=!(t>>3==0);if(a.push(255&(i?128|e:e)),i){for(let e=3;e<31;e+=7){var o=t>>>e,l=!(o>>>7==0);if(a.push(255&(l?128|o:o)),!l)return}a.push(t>>>31&1)}}decTable["-".charCodeAt(0)]=encTable.indexOf("+"),decTable["_".charCodeAt(0)]=encTable.indexOf("/");const TWO_PWR_32_DBL$1=4294967296;function int64fromString(t){var e="-"==t[0];e&&(t=t.slice(1));let a=0,n=0;function r(e,r){e=Number(t.slice(e,r));n*=1e6,(a=1e6*a+e)>=TWO_PWR_32_DBL$1&&(n+=a/TWO_PWR_32_DBL$1|0,a%=TWO_PWR_32_DBL$1)}return r(-24,-18),r(-18,-12),r(-12,-6),r(-6),[e,a,n]}function int64toString(e,r){if(r<=2097151)return""+(TWO_PWR_32_DBL$1*r+(e>>>0));var t=(e>>>24|r<<8)>>>0&16777215,r=r>>16&65535;let a=(16777215&e)+6777216*t+6710656*r,n=t+8147497*r,s=2*r;function i(e,r){e=e?String(e):"";return r?"0000000".slice(e.length)+e:e}return 1e7<=a&&(n+=Math.floor(a/1e7),a%=1e7),1e7<=n&&(s+=Math.floor(n/1e7),n%=1e7),i(s,0)+i(n,s)+i(a,1)}function varint32write(r,t){if(0<=r){for(;127>>=7;t.push(r)}else{for(let e=0;e<9;e++)t.push(127&r|128),r>>=7;t.push(1)}}function varint32read(){let r=this.buf[this.pos++];var e=127&r;if(0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<7,0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<14,0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<21,0==(128&r))return this.assertBounds(),e;e|=(15&(r=this.buf[this.pos++]))<<28;for(let e=5;0!=(128&r)&&e<10;e++)r=this.buf[this.pos++];if(0!=(128&r))throw new Error("invalid varint");return this.assertBounds(),e>>>0}function detectBi(){var e=new DataView(new ArrayBuffer(8));return void 0!==globalThis.BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("9223372036854775807"),UMIN:BigInt("0"),UMAX:BigInt("18446744073709551615"),C:BigInt,V:e}:void 0}const BI=detectBi();function assertBi(e){if(!e)throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support")}const RE_DECIMAL_STR=/^-?[0-9]+$/,TWO_PWR_32_DBL=4294967296;class SharedPbLong{constructor(e,r){this.lo=0|e,this.hi=0|r}isZero(){return 0==this.lo&&0==this.hi}toNumber(){var e=this.hi*TWO_PWR_32_DBL+(this.lo>>>0);if(Number.isSafeInteger(e))return e;throw new Error("cannot convert to safe number")}}const _PbULong=class extends SharedPbLong{static from(e){if(BI)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=BI.C(e);case"number":if(0===e)return this.ZERO;e=BI.C(e);case"bigint":if(!e)return this.ZERO;if(eBI.UMAX)throw new Error("ulong too large");return BI.V.setBigUint64(0,e,!0),new _PbULong(BI.V.getInt32(0,!0),BI.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!RE_DECIMAL_STR.test(e))throw new Error("string is no integer");var[r,t,a]=int64fromString(e);if(r)throw new Error("signed value");return new _PbULong(t,a);case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");if(e<0)throw new Error("signed value for ulong");return new _PbULong(e,e/TWO_PWR_32_DBL)}throw new Error("unknown value "+typeof e)}toString(){return BI?this.toBigInt().toString():int64toString(this.lo,this.hi)}toBigInt(){return assertBi(BI),BI.V.setInt32(0,this.lo,!0),BI.V.setInt32(4,this.hi,!0),BI.V.getBigUint64(0,!0)}};let PbULong=_PbULong;PbULong.ZERO=new _PbULong(0,0);const _PbLong=class extends SharedPbLong{static from(e){if(BI)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=BI.C(e);case"number":if(0===e)return this.ZERO;e=BI.C(e);case"bigint":if(!e)return this.ZERO;if(eBI.MAX)throw new Error("ulong too large");return BI.V.setBigInt64(0,e,!0),new _PbLong(BI.V.getInt32(0,!0),BI.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;var r,t,a;if(e=e.trim(),RE_DECIMAL_STR.test(e))return[r,a,t]=int64fromString(e),a=new _PbLong(a,t),r?a.negate():a;throw new Error("string is no integer");case"number":if(0==e)return this.ZERO;if(Number.isSafeInteger(e))return 0INT32_MAX||eUINT32_MAX||e<0)throw new Error("invalid uint 32: "+e)}function assertFloat32(e){if("number"!=typeof e)throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>FLOAT32_MAX||e[e.no,e])))}read(a,n,s,e){this.prepare();for(var r=void 0===e?a.len:a.pos+e;a.pose.no-r.no))}write(n,s,i){this.prepare();for(const u of this.fields){let e,r,t=u.repeat,a=u.localName;if(u.oneof){var o=n[u.oneof];if(o.oneofKind!==a)continue;e=o[a],r=!0}else e=n[a],r=!1;switch(u.kind){case"scalar":case"enum":var l="enum"==u.kind?ScalarType.INT32:u.T;if(t)if(assert(Array.isArray(e)),t==RepeatType.PACKED)this.packed(s,l,u.no,e);else for(const h of e)this.scalar(s,l,u.no,h,!0);else void 0===e?assert(u.opt):this.scalar(s,l,u.no,e,r||u.opt);break;case"message":if(t){assert(Array.isArray(e));for(const p of e)this.message(s,i,u.T(),u.no,p)}else this.message(s,i,u.T(),u.no,e);break;case"map":assert("object"==typeof e&&null!==e);for(var[c,f]of Object.entries(e))this.mapEntry(s,i,u,c,f)}}var e=i.writeUnknownFields;!1!==e&&(!0===e?UnknownFieldHandler.onWrite:e)(this.info.typeName,n,s)}mapEntry(e,r,t,a,n){e.tag(t.no,WireType.LengthDelimited),e.fork();let s=a;switch(t.K){case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.UINT32:case ScalarType.SFIXED32:case ScalarType.SINT32:s=Number.parseInt(a);break;case ScalarType.BOOL:assert("true"==a||"false"==a),s="true"==a}switch(this.scalar(e,t.K,1,s,!0),t.V.kind){case"scalar":this.scalar(e,t.V.T,2,n,!0);break;case"enum":this.scalar(e,ScalarType.INT32,2,n,!0);break;case"message":this.message(e,r,t.V.T(),2,n)}e.join()}message(e,r,t,a,n){void 0!==n&&(t.internalBinaryWrite(n,e.tag(a,WireType.LengthDelimited).fork(),r),e.join())}scalar(e,r,t,a,n){var[r,s,i]=this.scalarInfo(r,a);i&&!n||(e.tag(t,r),e[s](a))}packed(r,e,t,a){if(a.length){assert(e!==ScalarType.BYTES&&e!==ScalarType.STRING),r.tag(t,WireType.LengthDelimited),r.fork();var[,n]=this.scalarInfo(e);for(let e=0;enew BinaryWriter};function binaryWriteOptions(e){return e?{...defaultsWrite,...e}:defaultsWrite}class BinaryWriter{constructor(e){this.stack=[],this.textEncoder=e??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let r=0;for(let e=0;e>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(assertUInt32(e);127>>=7;return this.buf.push(e),this}int32(e){return assertInt32(e),varint32write(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){e=this.textEncoder.encode(e);return this.uint32(e.byteLength),this.raw(e)}float(e){assertFloat32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setFloat32(0,e,!0),this.raw(r)}double(e){var r=new Uint8Array(8);return new DataView(r.buffer).setFloat64(0,e,!0),this.raw(r)}fixed32(e){assertUInt32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setUint32(0,e,!0),this.raw(r)}sfixed32(e){assertInt32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setInt32(0,e,!0),this.raw(r)}sint32(e){return assertInt32(e),varint32write(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){var r=new Uint8Array(8),t=new DataView(r.buffer),e=PbLong.from(e);return t.setInt32(0,e.lo,!0),t.setInt32(4,e.hi,!0),this.raw(r)}fixed64(e){var r=new Uint8Array(8),t=new DataView(r.buffer),e=PbULong.from(e);return t.setInt32(0,e.lo,!0),t.setInt32(4,e.hi,!0),this.raw(r)}int64(e){e=PbLong.from(e);return varint64write(e.lo,e.hi,this.buf),this}sint64(e){var e=PbLong.from(e),r=e.hi>>31;return varint64write(e.lo<<1^r,(e.hi<<1|e.lo>>>31)^r,this.buf),this}uint64(e){e=PbULong.from(e);return varint64write(e.lo,e.hi,this.buf),this}}const defaultsRead={readUnknownField:!0,readerFactory:e=>new BinaryReader(e)};function binaryReadOptions(e){return e?{...defaultsRead,...e}:defaultsRead}class BinaryReader{constructor(e,r){this.varint64=varint64read,this.uint32=varint32read,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=r??new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0})}tag(){var e=this.uint32(),r=e>>>3,e=7&e;if(r<=0||e<0||5this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){var e=this.uint32();return e>>>1^-(1&e)}int64(){return new PbLong(...this.varint64())}uint64(){return new PbULong(...this.varint64())}sint64(){var[e,r]=this.varint64(),t=-(1&e),e=(e>>>1|(1&r)<<31)^t,r=r>>>1^t;return new PbLong(e,r)}bool(){var[e,r]=this.varint64();return 0!==e||0!==r}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return new PbULong(this.sfixed32(),this.sfixed32())}sfixed64(){return new PbLong(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){var e=this.uint32(),r=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(r,r+e)}string(){return this.textDecoder.decode(this.bytes())}}class MessageType{constructor(e,r,t){this.defaultCheckDepth=16,this.typeName=e,this.fields=r.map(normalizeFieldInfo),this.options=t??{},this.refTypeCheck=new ReflectionTypeCheck(this),this.refJsonReader=new ReflectionJsonReader(this),this.refJsonWriter=new ReflectionJsonWriter(this),this.refBinReader=new ReflectionBinaryReader(this),this.refBinWriter=new ReflectionBinaryWriter(this)}create(e){var r=reflectionCreate(this);return void 0!==e&&reflectionMergePartial(this,r,e),r}clone(e){var r=this.create();return reflectionMergePartial(this,r,e),r}equals(e,r){return reflectionEquals(this,e,r)}is(e,r=this.defaultCheckDepth){return this.refTypeCheck.is(e,r,!1)}isAssignable(e,r=this.defaultCheckDepth){return this.refTypeCheck.is(e,r,!0)}mergePartial(e,r){reflectionMergePartial(this,e,r)}fromBinary(e,r){r=binaryReadOptions(r);return this.internalBinaryRead(r.readerFactory(e),e.byteLength,r)}fromJson(e,r){return this.internalJsonRead(e,jsonReadOptions(r))}fromJsonString(e,r){e=JSON.parse(e);return this.fromJson(e,r)}toJson(e,r){return this.internalJsonWrite(e,jsonWriteOptions(r))}toJsonString(e,r){e=this.toJson(e,r);return JSON.stringify(e,null,(null==r?void 0:r.prettySpaces)??0)}toBinary(e,r){r=binaryWriteOptions(r);return this.internalBinaryWrite(e,r.writerFactory(),r).finish()}internalJsonRead(e,r,t){if(null===e||"object"!=typeof e||Array.isArray(e))throw new Error(`Unable to parse message ${this.typeName} from JSON ${typeofJsonValue(e)}.`);return t=t??this.create(),this.refJsonReader.read(e,t,r),t}internalJsonWrite(e,r){return this.refJsonWriter.write(e,r)}internalBinaryWrite(e,r,t){return this.refBinWriter.write(e,r,t),r}internalBinaryRead(e,r,t,a){a=a??this.create();return this.refBinReader.read(e,a,t,r),a}} /****************** initialization finish ******************/ switch (FORMAT) { + case "application/protobuf": case "application/x-protobuf": + case "application/vnd.google.protobuf": break; case "application/grpc": case "application/grpc+proto": @@ -541,7 +565,7 @@ const DataBase = { data.cm.sourceContent = []; $.log(`🎉 ${$.name}`, "up主推荐广告去除"); } - data.tab.tabModule[0].tab.introduction.modules =data.tab.tabModule[0].tab.introduction.modules.map((i) => { + data.tab.tabModule[0].tab.introduction.modules = data.tab.tabModule[0].tab.introduction.modules.map((i) => { if (i.type === 28) { i.data.relates.cards = i.data.relates.cards.filter((j) => j.relateCardType !== 5 && j.relateCardType !== 4); $.log(`🎉 ${$.name}`, "视频详情下方推荐卡广告去除"); @@ -716,7 +740,6 @@ const DataBase = { .finally(() => { switch ($response) { default: { // 有回复数据,返回回复数据 - const FORMAT = ($response?.headers?.["Content-Type"] ?? $response?.headers?.["content-type"])?.split(";")?.[0]; $.log(`🎉 ${$.name}, finally`, `$response`, `FORMAT: ${FORMAT}`, ""); //$.log(`🚧 ${$.name}, finally`, `$response: ${JSON.stringify($response)}`, ""); if ($response?.headers?.["Content-Encoding"]) $response.headers["Content-Encoding"] = "identity"; @@ -725,19 +748,21 @@ const DataBase = { switch (FORMAT) { case undefined: // 视为无body // 返回普通数据 - $.done({ headers: $response.headers }); + $.done({ status: $response.status, headers: $response.headers }); break; default: // 返回普通数据 - $.done({ headers: $response.headers, body: $response.body }); + $.done({ status: $response.status, headers: $response.headers, body: $response.body }); break; + case "application/protobuf": case "application/x-protobuf": + case "application/vnd.google.protobuf": case "application/grpc": case "application/grpc+proto": case "applecation/octet-stream": // 返回二进制数据 //$.log(`${$response.bodyBytes.byteLength}---${$response.bodyBytes.buffer.byteLength}`); - $.done({ headers: $response.headers, bodyBytes: $response.bodyBytes.buffer.slice($response.bodyBytes.byteOffset, $response.bodyBytes.byteLength + $response.bodyBytes.byteOffset) }); + $.done({ status: $response.status, headers: $response.headers, bodyBytes: $response.bodyBytes.buffer.slice($response.bodyBytes.byteOffset, $response.bodyBytes.byteLength + $response.bodyBytes.byteOffset) }); break; }; } else $.done($response); @@ -814,8 +839,7 @@ function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"== * @param {Object} database - Default Database * @return {Object} { Settings, Caches, Configs } */ -function getENV(key,names,database){let BoxJs=$.getjson(key,database),Argument={};if("undefined"!=typeof $argument&&Boolean($argument)){let arg=Object.fromEntries($argument.split("&").map((item=>item.split("="))));for(let item in arg)setPath(Argument,item,arg[item])}const Store={Settings:database?.Default?.Settings||{},Configs:database?.Default?.Configs||{},Caches:{}};Array.isArray(names)||(names=[names]);for(let name of names)Store.Settings={...Store.Settings,...database?.[name]?.Settings,...BoxJs?.[name]?.Settings,...Argument},Store.Configs={...Store.Configs,...database?.[name]?.Configs},BoxJs?.[name]?.Caches&&"string"==typeof BoxJs?.[name]?.Caches&&(BoxJs[name].Caches=JSON.parse(BoxJs?.[name]?.Caches)),Store.Caches={...Store.Caches,...BoxJs?.[name]?.Caches};return function traverseObject(o,c){for(var t in o){var n=o[t];o[t]="object"==typeof n&&null!==n?traverseObject(n,c):c(t,n)}return o}(Store.Settings,((key,value)=>("true"===value||"false"===value?value=JSON.parse(value):"string"==typeof value&&(value?.includes(",")?value=value.split(","):value&&!isNaN(value)&&(value=parseInt(value,10))),value))),Store;function setPath(object,path,value){path.split(".").reduce(((o,p,i)=>o[p]=path.split(".").length===++i?value:o[p]||{}),object)}} +function getENV(key,names,database){let BoxJs=$.getjson(key,database),Argument={};if("undefined"!=typeof $argument&&Boolean($argument)){let arg=Object.fromEntries($argument.split("&").map((item=>item.split("=").map((i=>i.replace(/\"/g,""))))));for(let item in arg)setPath(Argument,item,arg[item])}const Store={Settings:database?.Default?.Settings||{},Configs:database?.Default?.Configs||{},Caches:{}};Array.isArray(names)||(names=[names]);for(let name of names)Store.Settings={...Store.Settings,...database?.[name]?.Settings,...Argument,...BoxJs?.[name]?.Settings},Store.Configs={...Store.Configs,...database?.[name]?.Configs},BoxJs?.[name]?.Caches&&"string"==typeof BoxJs?.[name]?.Caches&&(BoxJs[name].Caches=JSON.parse(BoxJs?.[name]?.Caches)),Store.Caches={...Store.Caches,...BoxJs?.[name]?.Caches};return function traverseObject(o,c){for(var t in o){var n=o[t];o[t]="object"==typeof n&&null!==n?traverseObject(n,c):c(t,n)}return o}(Store.Settings,((key,value)=>("true"===value||"false"===value?value=JSON.parse(value):"string"==typeof value&&(value=value.includes(",")?value.split(",").map((item=>string2number(item))):string2number(value)),value))),Store;function setPath(object,path,value){path.split(".").reduce(((o,p,i)=>o[p]=path.split(".").length===++i?value:o[p]||{}),object)}function string2number(string){return string&&!isNaN(string)&&(string=parseInt(string,10)),string}} -// https://github.com/VirgilClyne/GetSomeFries/blob/main/function/URL/URLs.embedded.min.js - -function URLs(t){return new class{constructor(t=[]){this.name="URL v1.2.2",this.opts=t,this.json={scheme:"",host:"",path:"",type:"",query:{}}}parse(t){let s=t.match(/(?:(?.+):\/\/(?[^/]+))?\/?(?[^?]+)?\??(?[^?]+)?/)?.groups??null;return s?.path?s.paths=s?.path?.split("/"):s.path="",s?.paths&&(s.type=s?.paths?.[s?.paths?.length-1]?.split(".")?.[1]),s?.query&&(s.query=Object.fromEntries(s.query.split("&").map((t=>t.split("="))))),s}stringify(t=this.json){let s="";return t?.scheme&&t?.host&&(s+=t.scheme+"://"+t.host),t?.path&&(s+=t?.host?"/"+t.path:t.path),t?.query&&(s+="?"+Object.entries(t.query).map((t=>t.join("="))).join("&")),s}}(t)} \ No newline at end of file +// https://github.com/VirgilClyne/GetSomeFries/blob/main/function/URI/URIs.embedded.min.js +function URIs(t){return new class{constructor(t=[]){this.name="URI v1.2.6",this.opts=t,this.json={scheme:"",host:"",path:"",query:{}}}parse(t){let s=t.match(/(?:(?.+):\/\/(?[^/]+))?\/?(?[^?]+)?\??(?[^?]+)?/)?.groups??null;if(s?.path?s.paths=s.path.split("/"):s.path="",s?.paths){const t=s.paths[s.paths.length-1];if(t?.includes(".")){const e=t.split(".");s.format=e[e.length-1]}}return s?.query&&(s.query=Object.fromEntries(s.query.split("&").map((t=>t.split("="))))),s}stringify(t=this.json){let s="";return t?.scheme&&t?.host&&(s+=t.scheme+"://"+t.host),t?.path&&(s+=t?.host?"/"+t.path:t.path),t?.query&&(s+="?"+Object.entries(t.query).map((t=>t.join("="))).join("&")),s}}(t)} \ No newline at end of file diff --git a/Scripts/AdBlock/Bilibili/BiliBili.response.min.js b/Scripts/AdBlock/Bilibili/BiliBili.response.min.js index f0b4e62..ac86eca 100644 --- a/Scripts/AdBlock/Bilibili/BiliBili.response.min.js +++ b/Scripts/AdBlock/Bilibili/BiliBili.response.min.js @@ -1,820 +1 @@ -/* -WEBSITE: https://biliuniverse.io -README: https://github.com/BiliUniverse -*/ -const $ = new Env("📺 BiliBili: 🛡️ ADBlock v0.4.0(2) response"); -const URL = new URLs(); -const DataBase = { - "ADBlock":{ - "Settings":{ - "Switch":true, - "Detail":{"splash":true,"feed":true,"activity":false,"story":true,"cinema":true,"view":true,"search":true,"commandDms":false,"colorfulDms":false,"MainList":true,"xlive":true,"Hot_search":true,"Hot_topics":true,"Most_visited":true,"Dynamic_adcard":true} - } - }, - "Default": { - "Settings":{"Switch":true} - } -}; - -/***************** Processing *****************/ -(async () => { - const { Settings, Caches, Configs } = setENV("BiliBili", "ADBlock", DataBase); - $.log(`⚠ ${$.name}`, `Settings.Switch: ${Settings?.Switch}`, ""); - switch (Settings.Switch) { - case true: - default: - let url = URL.parse($request?.url); - const METHOD = $request?.method, HOST = url?.host, PATH = url?.path, PATHs = url?.paths; - // 解析格式 - const FORMAT = ($response?.headers?.["Content-Type"] ?? $response?.headers?.["content-type"])?.split(";")?.[0]; - $.log(`⚠ ${$.name}`, `METHOD: ${METHOD}`, `HOST: ${HOST}`, `PATH: ${PATH}`, `PATHs: ${PATHs}`, `FORMAT: ${FORMAT}`, ""); - // 创建空数据 - let body = { "code": 0, "message": "0", "data": {} }; - // 格式判断 - switch (FORMAT) { - case undefined: // 视为无body - break; - case "application/x-www-form-urlencoded": - case "text/plain": - case "text/html": - default: - break; - case "application/x-mpegURL": - case "application/x-mpegurl": - case "application/vnd.apple.mpegurl": - break; - case "text/xml": - case "text/plist": - case "application/xml": - case "application/plist": - case "application/x-plist": - break; - case "text/json": - case "application/json": - body = JSON.parse($response.body); - // 解析链接 - switch (HOST) { - case "www.bilibili.com": - break; - case "app.bilibili.com": - case "app.biliapi.net": - switch (PATH) { - case "x/v2/splash/show": // 开屏页 - case "x/v2/splash/list": // 开屏页 - case "x/v2/splash/brand/list": // 开屏页 - case "x/v2/splash/event/list2": // 开屏页 - switch (Settings?.Detail?.splash) { - case true: - default: - const item = ["account", "event_list", "preload", "show"]; - if (body.data) { - item.forEach((i) => { - delete body.data[i]; - }); - $.log(`🎉 ${$.name}`, "开屏页广告去除"); - } - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置开屏页广告不去除"); - break; - }; - break; - case "x/v2/feed/index": // 推荐页 - switch (Settings?.Detail?.feed) { - case true: - default: - if (body.data.items?.length) { - //区分pad与phone - body.data.items = await Promise.all(body.data.items.map(async item => { - const { card_type: cardType, card_goto: cardGoto } = item; - if (cardType && cardGoto) { - if (['banner_v8', 'banner_ipad_v8'].includes(cardType) && cardGoto === 'banner') { - switch (Settings?.Detail?.activity) { - case true: - default: - Caches.banner_hash = item.hash; - $.setjson(Caches, "@BiliBili.ADBlock.Caches"); // 获取banner_hash,无此字段会有活动页且此字段无法伪造. - $.log(`🎉 ${$.name}`, "推荐页活动大图去除"); - return undefined; - case false: - if (item.banner_item) { - item.banner_item = item.banner_item.filter(i => { - if (i.type === 'ad') { - $.log(`🎉 ${$.name}`, "推荐页大图广告去除"); - return false; - } - return true; - }); - } - break; - } - } else if (['cm_v2', 'cm_v1'].includes(cardType) && ['ad_web_s', 'ad_av', 'ad_web_gif'].includes(cardGoto)) { - // ad_player大视频广告 ad_web_gif大gif广告 ad_web_s普通小广告 ad_av创作推广广告 ad_inline_3d 上方大的视频3d广告 ad_inline_eggs 上方大的视频广告 - $.log(`🎉 ${$.name}`, `${cardGoto}广告去除`); - if (url?.query?.device !== "phone") { - return undefined;//pad直接去除 - } else { - await fixPosition().then(result => item = result);//小广告补位 - } - } else if (cardGoto === 'live' && cardType === 'small_cover_v9') { - let blockUpLiveList = Settings?.Detail?.blockUpLiveList; - if (typeof blockUpLiveList === 'number') { - blockUpLiveList = blockUpLiveList.toString(); - } - if (blockUpLiveList && blockUpLiveList.includes(item?.args?.up_id?.toString())) { - $.log(`🎉 ${$.name}`, `屏蔽Up主<${item?.args?.up_name}>直播推广`); - await fixPosition().then(result => item = result);//小广告补位 - } - } else if (cardType === 'cm_v2' && ['ad_player', 'ad_inline_3d', 'ad_inline_eggs'].includes(cardGoto)) { - $.log(`🎉 ${$.name}`, `${cardGoto}广告去除`); - return undefined;//大广告直接去除 - } else if (cardType === 'small_cover_v10' && cardGoto === 'game') { - $.log(`🎉 ${$.name}`, "游戏广告去除"); - if (url?.query?.device !== "phone") { - return undefined;//pad直接去除 - } else { - await fixPosition().then(result => item = result);//小广告补位 - } - } else if (cardType === 'cm_double_v9' && cardGoto === 'ad_inline_av') { - $.log(`🎉 ${$.name}`, "大视频广告去除"); - return undefined;//大广告直接去除 - } - } - return item; - })); - body.data.items = body.data.items.filter(fix => fix !== undefined); - } - async function fixPosition() { - let itemsCache = $.getdata("@BiliBili.Index.Caches",""); - let singleItem = {}; - if (itemsCache && itemsCache.length > 0) { - singleItem = itemsCache.pop(); - $.log(`🎉 ${$.name}`, "推荐页空缺位填充成功"); - } else {//重新获取填充位 - const myRequest = { - url: $request.url, - headers: $request.heders - } - await $.http.get(myRequest).then(response => { - try { - const body = $.toObj(response.body) - if (body?.code === 0 && body?.message === "0") { - body.data.items = body.data.items.map(item => { - const { card_type: cardType, card_goto: cardGoto } = item; - if (cardType && cardGoto) { - if (cardType === 'banner_v8' && cardGoto === 'banner') { - return undefined; - } else if (cardType === 'cm_v2' && ['ad_web_s', 'ad_av', 'ad_web_gif', 'ad_player', 'ad_inline_3d', 'ad_inline_eggs'].includes(cardGoto)) { - return undefined; - } else if (cardType === 'small_cover_v10' && cardGoto === 'game') { - return undefined; - } else if (cardType === 'cm_double_v9' && cardGoto === 'ad_inline_av') { - return undefined; - } else if (cardType === 'large_cover_v9' && cardGoto === 'inline_av_v2') {//补位不需要大视频 - return undefined; - } - } - return item; - }).filter(fix => fix !== undefined); - $.setdata(body.data.items, "@BiliBili.Index.Caches"); - $.log(`🎉 ${$.name}`, "推荐页缓存数组补充成功"); - } else { - $.log(`🚧 ${$.name}`, "访问推荐页尝试填补失败"); - } - } catch (e) { - $.logErr(e, response) - } - }) - itemsCache = $.getdata("@BiliBili.Index.Caches",""); - if (itemsCache.length > 0) { - singleItem = itemsCache.pop(); - $.log(`🎉 ${$.name}`, "推荐页空缺位填充成功"); - } - } - $.setdata(itemsCache, "@BiliBili.Index.Caches"); - return singleItem; - } - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置推荐页广告不去除"); - break; - }; - break; - case "x/v2/feed/index/story": // 首页短视频流 - switch (Settings?.Detail?.story) { - case true: - default: - if (body.data?.items) { - // vertical_live 直播内容 - // vertical_pgc 大会员专享 - body.data.items = body.data.items.filter((i) => !( - i.hasOwnProperty("ad_info") || - ["vertical_ad_av", "vertical_pgc"].includes(i.card_goto) - ) - ); - $.log(`🎉 ${$.name}`, "首页短视频流广告去除"); - } - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置首页短视频流广告不去除"); - break; - }; - break; - case "x/v2/search/square": // 搜索页 - switch (Settings?.Detail?.Hot_search) { - case true: - default: - body.data = body.data.filter((i) => !(i.type === "trending")); - $.log(`🎉 ${$.name}`, "搜索页热搜内容去除"); - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置搜索页热搜内容不去除"); - break; - } - break; - }; - break; - case "api.bilibili.com": - case "api.biliapi.net": - switch (PATH) { - case "pgc/player/api/playurl": // 番剧-播放地址-api - case "pgc/player/web/playurl": // 番剧-播放地址-web - case "pgc/player/web/playurl/html5": // 番剧-播放地址-web-HTML5 - break; - case "pgc/view/v2/app/season": // 番剧页面-内容-app - break; - case "pgc/view/web/season": // 番剧-内容-web - case "pgc/view/pc/season": // 番剧-内容-pc - break; - case "pgc/page/bangumi": // 追番页 - case "pgc/page/cinema/tab": // 观影页 - switch (Settings?.Detail?.cinema) { - case true: - default: - if (body.result?.modules) { - body.result.modules.forEach((i) => { - if (i.style.startsWith("banner")) { - i.items = i.items.filter((j) => j.link.includes("play")); - } else if (i.style.startsWith("function")) { - i.items = i.items.filter((j) => j.blink.startsWith("bilibili")); - } else if ([241, 1283, 1284, 1441].includes(i.module_id)) { - i.items = []; - } else if (i.style.startsWith("tip")) { - i.items = []; - } - }); - $.log(`🎉 ${$.name}`, "观影页广告去除"); - } - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置观影页广告不去除"); - break; - }; - break; - case "x/player/wbi/playurl": // UGC-用户生产内容-播放地址 - break; - case "x/web-interface/wbi/index/top/feed/rcmd": // web首页 - switch (Settings?.Detail?.feed) { - case true: - default: - body.data.item = body.data.item.filter((i) => !(i.goto === "ad")); - $.log(`🎉 ${$.name}`, "首页广告内容去除"); - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置首页广告不去除"); - break; - }; - break; - case "x/space/acc/info": // 用户空间-账号信息-pc - case "x/space/wbi/acc/info": // 用户空间-账号信息-wbi - switch (url.query?.vmid || url.query?.mid) { - case "11783021": // 哔哩哔哩番剧出差 - case "1988098633": // b站_戲劇咖 - case "2042149112": // b站_綜藝咖 - break; - default: - break; - }; - break; - }; - break; - case "api.live.bilibili.com": - switch (PATH) { - case "xlive/app-room/v1/index/getInfoByRoom": // 直播 - switch (Settings?.Detail?.xlive) { - case true: - default: - if (body.data?.activity_banner_info) { - body.data.activity_banner_info = null; - $.log(`🎉 ${$.name}`, "直播banner广告去除"); - } - if (body.data?.shopping_info) { - body.data.shopping_info = { - is_show: 0 - }; - $.log(`🎉 ${$.name}`, "直播购物广告去除"); - } - if (body.data?.new_tab_info?.outer_list?.length > 0) { - body.data.new_tab_info.outer_list = - body.data.new_tab_info.outer_list.filter((i) => i.biz_id !== 33); - } - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置直播页广告不去除"); - break; - }; - break; - }; - break; - }; - $response.body = JSON.stringify(body); - break; - case "application/x-protobuf": - case "application/grpc": - case "application/grpc+proto": - case "applecation/octet-stream": - let rawBody = $.isQuanX() ? new Uint8Array($response.bodyBytes) : $response.body; - //$.log(`🚧 ${$.name}`, `isBuffer? ${ArrayBuffer.isView(rawBody)}: ${JSON.stringify(rawBody)}`, ""); - /****************** initialization start *******************/ - // timostamm/protobuf-ts - !function(i){"use strict";function _(n,e,i){return e<=n&&n<=i}"undefined"!=typeof module&&module.exports&&!i["encoding-indexes"]&&(i["encoding-indexes"]=require("./encoding-indexes.js")["encoding-indexes"]);var l=Math.floor;function s(n){if(void 0===n)return{};if(n===Object(n))return n;throw TypeError("Could not convert argument to dictionary")}function u(n){return 0<=n&&n<=127}var a=u,b=-1;function c(n){this.tokens=[].slice.call(n),this.tokens.reverse()}c.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.pop():b},prepend:function(n){if(Array.isArray(n))for(var e=n;e.length;)this.tokens.push(e.pop());else this.tokens.push(n)},push:function(n){if(Array.isArray(n))for(var e=n;e.length;)this.tokens.unshift(e.shift());else this.tokens.unshift(n)}};var w=-1;function m(n,e){if(n)throw TypeError("Decoder error");return e||65533}function f(n){throw TypeError("The code point "+n+" could not be encoded.")}function r(n){return n=String(n).trim().toLowerCase(),Object.prototype.hasOwnProperty.call(d,n)?d[n]:null}var t,o,n=[{encodings:[{labels:["unicode-1-1-utf-8","utf-8","utf8"],name:"UTF-8"}],heading:"The Encoding"},{encodings:[{labels:["866","cp866","csibm866","ibm866"],name:"IBM866"},{labels:["csisolatin2","iso-8859-2","iso-ir-101","iso8859-2","iso88592","iso_8859-2","iso_8859-2:1987","l2","latin2"],name:"ISO-8859-2"},{labels:["csisolatin3","iso-8859-3","iso-ir-109","iso8859-3","iso88593","iso_8859-3","iso_8859-3:1988","l3","latin3"],name:"ISO-8859-3"},{labels:["csisolatin4","iso-8859-4","iso-ir-110","iso8859-4","iso88594","iso_8859-4","iso_8859-4:1988","l4","latin4"],name:"ISO-8859-4"},{labels:["csisolatincyrillic","cyrillic","iso-8859-5","iso-ir-144","iso8859-5","iso88595","iso_8859-5","iso_8859-5:1988"],name:"ISO-8859-5"},{labels:["arabic","asmo-708","csiso88596e","csiso88596i","csisolatinarabic","ecma-114","iso-8859-6","iso-8859-6-e","iso-8859-6-i","iso-ir-127","iso8859-6","iso88596","iso_8859-6","iso_8859-6:1987"],name:"ISO-8859-6"},{labels:["csisolatingreek","ecma-118","elot_928","greek","greek8","iso-8859-7","iso-ir-126","iso8859-7","iso88597","iso_8859-7","iso_8859-7:1987","sun_eu_greek"],name:"ISO-8859-7"},{labels:["csiso88598e","csisolatinhebrew","hebrew","iso-8859-8","iso-8859-8-e","iso-ir-138","iso8859-8","iso88598","iso_8859-8","iso_8859-8:1988","visual"],name:"ISO-8859-8"},{labels:["csiso88598i","iso-8859-8-i","logical"],name:"ISO-8859-8-I"},{labels:["csisolatin6","iso-8859-10","iso-ir-157","iso8859-10","iso885910","l6","latin6"],name:"ISO-8859-10"},{labels:["iso-8859-13","iso8859-13","iso885913"],name:"ISO-8859-13"},{labels:["iso-8859-14","iso8859-14","iso885914"],name:"ISO-8859-14"},{labels:["csisolatin9","iso-8859-15","iso8859-15","iso885915","iso_8859-15","l9"],name:"ISO-8859-15"},{labels:["iso-8859-16"],name:"ISO-8859-16"},{labels:["cskoi8r","koi","koi8","koi8-r","koi8_r"],name:"KOI8-R"},{labels:["koi8-ru","koi8-u"],name:"KOI8-U"},{labels:["csmacintosh","mac","macintosh","x-mac-roman"],name:"macintosh"},{labels:["dos-874","iso-8859-11","iso8859-11","iso885911","tis-620","windows-874"],name:"windows-874"},{labels:["cp1250","windows-1250","x-cp1250"],name:"windows-1250"},{labels:["cp1251","windows-1251","x-cp1251"],name:"windows-1251"},{labels:["ansi_x3.4-1968","ascii","cp1252","cp819","csisolatin1","ibm819","iso-8859-1","iso-ir-100","iso8859-1","iso88591","iso_8859-1","iso_8859-1:1987","l1","latin1","us-ascii","windows-1252","x-cp1252"],name:"windows-1252"},{labels:["cp1253","windows-1253","x-cp1253"],name:"windows-1253"},{labels:["cp1254","csisolatin5","iso-8859-9","iso-ir-148","iso8859-9","iso88599","iso_8859-9","iso_8859-9:1989","l5","latin5","windows-1254","x-cp1254"],name:"windows-1254"},{labels:["cp1255","windows-1255","x-cp1255"],name:"windows-1255"},{labels:["cp1256","windows-1256","x-cp1256"],name:"windows-1256"},{labels:["cp1257","windows-1257","x-cp1257"],name:"windows-1257"},{labels:["cp1258","windows-1258","x-cp1258"],name:"windows-1258"},{labels:["x-mac-cyrillic","x-mac-ukrainian"],name:"x-mac-cyrillic"}],heading:"Legacy single-byte encodings"},{encodings:[{labels:["chinese","csgb2312","csiso58gb231280","gb2312","gb_2312","gb_2312-80","gbk","iso-ir-58","x-gbk"],name:"GBK"},{labels:["gb18030"],name:"gb18030"}],heading:"Legacy multi-byte Chinese (simplified) encodings"},{encodings:[{labels:["big5","big5-hkscs","cn-big5","csbig5","x-x-big5"],name:"Big5"}],heading:"Legacy multi-byte Chinese (traditional) encodings"},{encodings:[{labels:["cseucpkdfmtjapanese","euc-jp","x-euc-jp"],name:"EUC-JP"},{labels:["csiso2022jp","iso-2022-jp"],name:"ISO-2022-JP"},{labels:["csshiftjis","ms932","ms_kanji","shift-jis","shift_jis","sjis","windows-31j","x-sjis"],name:"Shift_JIS"}],heading:"Legacy multi-byte Japanese encodings"},{encodings:[{labels:["cseuckr","csksc56011987","euc-kr","iso-ir-149","korean","ks_c_5601-1987","ks_c_5601-1989","ksc5601","ksc_5601","windows-949"],name:"EUC-KR"}],heading:"Legacy multi-byte Korean encodings"},{encodings:[{labels:["csiso2022kr","hz-gb-2312","iso-2022-cn","iso-2022-cn-ext","iso-2022-kr"],name:"replacement"},{labels:["utf-16be"],name:"UTF-16BE"},{labels:["utf-16","utf-16le"],name:"UTF-16LE"},{labels:["x-user-defined"],name:"x-user-defined"}],heading:"Legacy miscellaneous encodings"}],d={},h=(n.forEach(function(n){n.encodings.forEach(function(e){e.labels.forEach(function(n){d[n]=e})})}),{}),g={};function y(n,e){return e&&e[n]||null}function p(n,e){e=e.indexOf(n);return-1===e?null:e}function v(n){if("encoding-indexes"in i)return i["encoding-indexes"][n];throw Error("Indexes missing. Did you forget to include encoding-indexes.js first?")}var x="utf-8";function O(n,e){if(!(this instanceof O))throw TypeError("Called as a function. Did you forget 'new'?");n=void 0!==n?String(n):x,e=s(e),this._encoding=null,this._decoder=null,this._ignoreBOM=!1,this._BOMseen=!1,this._error_mode="replacement",this._do_not_flush=!1;var i=r(n);if(null===i||"replacement"===i.name)throw RangeError("Unknown encoding: "+n);if(g[i.name])return(n=this)._encoding=i,Boolean(e.fatal)&&(n._error_mode="fatal"),Boolean(e.ignoreBOM)&&(n._ignoreBOM=!0),Object.defineProperty||(this.encoding=n._encoding.name.toLowerCase(),this.fatal="fatal"===n._error_mode,this.ignoreBOM=n._ignoreBOM),n;throw Error("Decoder not present. Did you forget to include encoding-indexes.js first?")}function k(n,e){if(!(this instanceof k))throw TypeError("Called as a function. Did you forget 'new'?");e=s(e),this._encoding=null,this._encoder=null,this._do_not_flush=!1,this._fatal=Boolean(e.fatal)?"fatal":"replacement";if(Boolean(e.NONSTANDARD_allowLegacyEncoding)){e=r(n=void 0!==n?String(n):x);if(null===e||"replacement"===e.name)throw RangeError("Unknown encoding: "+n);if(!h[e.name])throw Error("Encoder not present. Did you forget to include encoding-indexes.js first?");this._encoding=e}else this._encoding=r("utf-8"),void 0!==n&&"console"in i&&console.warn("TextEncoder constructor called with encoding label, which is ignored.");return Object.defineProperty||(this.encoding=this._encoding.name.toLowerCase()),this}function e(n){var r=n.fatal,t=0,o=0,s=0,l=128,a=191;this.handler=function(n,e){if(e===b&&0!==s)return s=0,m(r);if(e===b)return w;if(0===s){if(_(e,0,127))return e;if(_(e,194,223))s=1,t=31&e;else if(_(e,224,239))224===e&&(l=160),237===e&&(a=159),s=2,t=15&e;else{if(!_(e,240,244))return m(r);240===e&&(l=144),244===e&&(a=143),s=3,t=7&e}return null}var i;return _(e,l,a)?(l=128,a=191,t=t<<6|63&e,(o+=1)!==s?null:(i=t,t=s=o=0,i)):(t=s=o=0,l=128,a=191,n.prepend(e),m(r))}}function E(n){n.fatal;this.handler=function(n,e){if(e===b)return w;if(a(e))return e;_(e,128,2047)?(i=1,r=192):_(e,2048,65535)?(i=2,r=224):_(e,65536,1114111)&&(i=3,r=240);for(var i,r,t=[(e>>6*i)+r];0>6*(i-1)),--i;return t}}function j(i,n){var r=n.fatal;this.handler=function(n,e){return e===b?w:u(e)?e:null===(e=i[e-128])?m(r):e}}function B(r,n){n.fatal;this.handler=function(n,e){var i;return e===b?w:a(e)?e:(null===(i=p(e,r))&&f(e),i+128)}}function S(n){var o=n.fatal,s=0,l=0,a=0;this.handler=function(n,e){var i,r,t;return e===b&&0===s&&0===l&&0===a?w:(e!==b||0===s&&0===l&&0===a||(a=l=s=0,m(o)),0!==a?(i=null,_(e,48,57)&&(i=function(n){if(39419>8,n=255&n;return e?[i,n]:[n,i]}function L(r,n){var t=n.fatal,o=null,s=null;this.handler=function(n,e){var i;return e!==b||null===o&&null===s?e===b&&null===o&&null===s?w:null===o?(o=e,null):(e=r?(o<<8)+e:(e<<8)+o,(o=null)!==s?(i=s,s=null,_(e,56320,57343)?65536+1024*(i-55296)+(e-56320):(n.prepend(A(e,r)),m(t))):_(e,55296,56319)?(s=e,null):_(e,56320,57343)?m(t):e):m(t)}}function M(r,n){n.fatal;this.handler=function(n,e){var i;return e===b?w:_(e,0,65535)?A(e,r):(i=A(55296+(e-65536>>10),r),e=A(56320+(e-65536&1023),r),i.concat(e))}}function N(n){n.fatal;this.handler=function(n,e){return e===b?w:u(e)?e:63360+e-128}}function q(n){n.fatal;this.handler=function(n,e){return e===b?w:a(e)?e:_(e,63360,63487)?e-63360+128:f(e)}}Object.defineProperty&&(Object.defineProperty(O.prototype,"encoding",{get:function(){return this._encoding.name.toLowerCase()}}),Object.defineProperty(O.prototype,"fatal",{get:function(){return"fatal"===this._error_mode}}),Object.defineProperty(O.prototype,"ignoreBOM",{get:function(){return this._ignoreBOM}})),O.prototype.decode=function(n,e){n="object"==typeof n&&n instanceof ArrayBuffer?new Uint8Array(n):"object"==typeof n&&"buffer"in n&&n.buffer instanceof ArrayBuffer?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(0);e=s(e),this._do_not_flush||(this._decoder=g[this._encoding.name]({fatal:"fatal"===this._error_mode}),this._BOMseen=!1),this._do_not_flush=Boolean(e.stream);for(var i,r=new c(n),t=[];;){var o=r.read();if(o===b)break;if((i=this._decoder.handler(r,o))===w)break;null!==i&&(Array.isArray(i)?t.push.apply(t,i):t.push(i))}if(!this._do_not_flush){for(;(i=this._decoder.handler(r,r.read()))!==w&&(null!==i&&(Array.isArray(i)?t.push.apply(t,i):t.push(i)),!r.endOfStream()););this._decoder=null}return function(n){e=["UTF-8","UTF-16LE","UTF-16BE"],i=this._encoding.name,-1===e.indexOf(i)||this._ignoreBOM||this._BOMseen||(0>10),56320+(1023&s)))}return t}.call(this,t)},Object.defineProperty&&Object.defineProperty(k.prototype,"encoding",{get:function(){return this._encoding.name.toLowerCase()}}),k.prototype.encode=function(n,e){n=void 0===n?"":String(n),e=s(e),this._do_not_flush||(this._encoder=h[this._encoding.name]({fatal:"fatal"===this._fatal})),this._do_not_flush=Boolean(e.stream);for(var i,r=new c(function(n){for(var e=String(n),i=e.length,r=0,t=[];rr in e?__defProp(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,__spreadValues=(e,r)=>{for(var t in r=r||{})__hasOwnProp.call(r,t)&&__defNormalProp(e,t,r[t]);if(__getOwnPropSymbols)for(var t of __getOwnPropSymbols(r))__propIsEnum.call(r,t)&&__defNormalProp(e,t,r[t]);return e},__spreadProps=(e,r)=>__defProps(e,__getOwnPropDescs(r));function varint64read(){let r=0,t=0;for(let e=0;e<28;e+=7){var a=this.buf[this.pos++];if(r|=(127&a)<>4,0==(128&e))return this.assertBounds(),[r,t];for(let e=3;e<=31;e+=7){var n=this.buf[this.pos++];if(t|=(127&n)<>>e,s=!(n>>>7==0&&0==t);if(a.push(255&(s?128|n:n)),!s)return}var e=r>>>28&15|(7&t)<<4,i=!(t>>3==0);if(a.push(255&(i?128|e:e)),i){for(let e=3;e<31;e+=7){var o=t>>>e,l=!(o>>>7==0);if(a.push(255&(l?128|o:o)),!l)return}a.push(t>>>31&1)}}const TWO_PWR_32_DBL$1=4294967296;function int64fromString(t){var e="-"==t[0];e&&(t=t.slice(1));let a=0,n=0;function r(e,r){e=Number(t.slice(e,r));n*=1e6,(a=1e6*a+e)>=TWO_PWR_32_DBL$1&&(n+=a/TWO_PWR_32_DBL$1|0,a%=TWO_PWR_32_DBL$1)}return r(-24,-18),r(-18,-12),r(-12,-6),r(-6),[e,a,n]}function int64toString(e,r){if(r<=2097151)return""+(TWO_PWR_32_DBL$1*r+e);var t=(e>>>24|r<<8)>>>0&16777215,r=r>>16&65535;let a=(16777215&e)+6777216*t+6710656*r,n=t+8147497*r,s=2*r;e=1e7;function i(e,r){e=e?String(e):"";return r?"0000000".slice(e.length)+e:e}return a>=e&&(n+=Math.floor(a/e),a%=e),n>=e&&(s+=Math.floor(n/e),n%=e),i(s,0)+i(n,s)+i(a,1)}function varint32write(r,t){if(0<=r){for(;127>>=7;t.push(r)}else{for(let e=0;e<9;e++)t.push(127&r|128),r>>=7;t.push(1)}}function varint32read(){let r=this.buf[this.pos++];var e=127&r;if(0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<7,0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<14,0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<21,0==(128&r))return this.assertBounds(),e;e|=(15&(r=this.buf[this.pos++]))<<28;for(let e=5;0!=(128&r)&&e<10;e++)r=this.buf[this.pos++];if(0!=(128&r))throw new Error("invalid varint");return this.assertBounds(),e>>>0}function detectBi(){var e=new DataView(new ArrayBuffer(8));return void 0!==globalThis.BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("9223372036854775807"),UMIN:BigInt("0"),UMAX:BigInt("18446744073709551615"),C:BigInt,V:e}:void 0}const BI=detectBi();function assertBi(e){if(!e)throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support")}const RE_DECIMAL_STR=/^-?[0-9]+$/,TWO_PWR_32_DBL=4294967296;class SharedPbLong{constructor(e,r){this.lo=0|e,this.hi=0|r}isZero(){return 0==this.lo&&0==this.hi}toNumber(){var e=this.hi*TWO_PWR_32_DBL+(this.lo>>>0);if(Number.isSafeInteger(e))return e;throw new Error("cannot convert to safe number")}}const _PbULong=class extends SharedPbLong{static from(e){if(BI)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=BI.C(e);case"number":if(0===e)return this.ZERO;e=BI.C(e);case"bigint":if(!e)return this.ZERO;if(eBI.UMAX)throw new Error("ulong too large");return BI.V.setBigUint64(0,e,!0),new _PbULong(BI.V.getInt32(0,!0),BI.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!RE_DECIMAL_STR.test(e))throw new Error("string is no integer");var[r,t,a]=int64fromString(e);if(r)throw new Error("signed value");return new _PbULong(t,a);case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");if(e<0)throw new Error("signed value for ulong");return new _PbULong(e,e/TWO_PWR_32_DBL)}throw new Error("unknown value "+typeof e)}toString(){return BI?this.toBigInt().toString():int64toString(this.lo,this.hi)}toBigInt(){return assertBi(BI),BI.V.setInt32(0,this.lo,!0),BI.V.setInt32(4,this.hi,!0),BI.V.getBigUint64(0,!0)}};let PbULong=_PbULong;PbULong.ZERO=new _PbULong(0,0);const _PbLong=class extends SharedPbLong{static from(e){if(BI)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=BI.C(e);case"number":if(0===e)return this.ZERO;e=BI.C(e);case"bigint":if(!e)return this.ZERO;if(eBI.MAX)throw new Error("ulong too large");return BI.V.setBigInt64(0,e,!0),new _PbLong(BI.V.getInt32(0,!0),BI.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;var r,t,a;if(e=e.trim(),RE_DECIMAL_STR.test(e))return[r,a,t]=int64fromString(e),a=new _PbLong(a,t),r?a.negate():a;throw new Error("string is no integer");case"number":if(0==e)return this.ZERO;if(Number.isSafeInteger(e))return 0>>3,e=7&e;if(r<=0||e<0||5this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){var e=this.uint32();return e>>>1^-(1&e)}int64(){return new PbLong(...this.varint64())}uint64(){return new PbULong(...this.varint64())}sint64(){var[e,r]=this.varint64(),t=-(1&e),e=(e>>>1|(1&r)<<31)^t,r=r>>>1^t;return new PbLong(e,r)}bool(){var[e,r]=this.varint64();return 0!==e||0!==r}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return new PbULong(this.sfixed32(),this.sfixed32())}sfixed64(){return new PbLong(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){var e=this.uint32(),r=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(r,r+e)}string(){return this.textDecoder.decode(this.bytes())}}function assert(e,r){if(!e)throw new Error(r)}const FLOAT32_MAX=34028234663852886e22,FLOAT32_MIN=-34028234663852886e22,UINT32_MAX=4294967295,INT32_MAX=2147483647,INT32_MIN=-2147483648;function assertInt32(e){if("number"!=typeof e)throw new Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>INT32_MAX||eUINT32_MAX||e<0)throw new Error("invalid uint 32: "+e)}function assertFloat32(e){if("number"!=typeof e)throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>FLOAT32_MAX||e>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(assertUInt32(e);127>>=7;return this.buf.push(e),this}int32(e){return assertInt32(e),varint32write(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){e=this.textEncoder.encode(e);return this.uint32(e.byteLength),this.raw(e)}float(e){assertFloat32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setFloat32(0,e,!0),this.raw(r)}double(e){var r=new Uint8Array(8);return new DataView(r.buffer).setFloat64(0,e,!0),this.raw(r)}fixed32(e){assertUInt32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setUint32(0,e,!0),this.raw(r)}sfixed32(e){assertInt32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setInt32(0,e,!0),this.raw(r)}sint32(e){return assertInt32(e),varint32write(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){var r=new Uint8Array(8),t=new DataView(r.buffer),e=PbLong.from(e);return t.setInt32(0,e.lo,!0),t.setInt32(4,e.hi,!0),this.raw(r)}fixed64(e){var r=new Uint8Array(8),t=new DataView(r.buffer),e=PbULong.from(e);return t.setInt32(0,e.lo,!0),t.setInt32(4,e.hi,!0),this.raw(r)}int64(e){e=PbLong.from(e);return varint64write(e.lo,e.hi,this.buf),this}sint64(e){var e=PbLong.from(e),r=e.hi>>31;return varint64write(e.lo<<1^r,(e.hi<<1|e.lo>>>31)^r,this.buf),this}uint64(e){e=PbULong.from(e);return varint64write(e.lo,e.hi,this.buf),this}}function binaryWriteOptions(e){return e?__spreadValues(__spreadValues({},defaultsWrite$1),e):defaultsWrite$1}function binaryReadOptions(e){return e?__spreadValues(__spreadValues({},defaultsRead$1),e):defaultsRead$1}!function(i){i.symbol=Symbol.for("protobuf-ts/unknown"),i.onRead=(e,r,t,a,n)=>{(s(r)?r[i.symbol]:r[i.symbol]=[]).push({no:t,wireType:a,data:n})},i.onWrite=(e,r,t)=>{for(var{no:a,wireType:n,data:s}of i.list(r))t.tag(a,n).raw(s)},i.list=(e,r)=>s(e)?(e=e[i.symbol],r?e.filter((e=>e.no==r)):e):[],i.last=(e,r)=>i.list(e,r).slice(-1)[0];const s=e=>e&&Array.isArray(e[i.symbol])}(UnknownFieldHandler=UnknownFieldHandler||{});const defaultsRead$1={readUnknownField:!0,readerFactory:e=>new BinaryReader(e)},defaultsWrite$1={writeUnknownFields:!0,writerFactory:()=>new BinaryWriter},MESSAGE_TYPE=(!function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"}(WireType=WireType||{}),Symbol.for("protobuf-ts/message-type"));function lowerCamelCase(r){let t=!1;var a=[];for(let e=0;e!r.includes(e))))return!1;if(!n&&r.some((e=>!t.known.includes(e))))return!1;if(!(a<1)){for(const i of t.oneofs){const o=e[i];if(!isOneofGroup(o))return!1;if(void 0!==o.oneofKind){var s=this.fields.find((e=>e.localName===o.oneofKind));if(!s)return!1;if(!this.field(o[o.oneofKind],s,n,a))return!1}}for(const l of this.fields)if(void 0===l.oneof&&!this.field(e[l.localName],l,n,a))return!1}}return!0}field(e,r,t,a){var n=r.repeat;switch(r.kind){case"scalar":return void 0===e?r.opt:n?this.scalars(e,r.T,a,r.L):this.scalar(e,r.T,r.L);case"enum":return void 0===e?r.opt:n?this.scalars(e,ScalarType.INT32,a):this.scalar(e,ScalarType.INT32);case"message":return void 0===e?!0:n?this.messages(e,r.T(),t,a):this.message(e,r.T(),t,a);case"map":if("object"!=typeof e||null===e)return!1;if(a<2)return!0;if(!this.mapKeys(e,r.K,a))return!1;switch(r.V.kind){case"scalar":return this.scalars(Object.values(e),r.V.T,a,r.V.L);case"enum":return this.scalars(Object.values(e),ScalarType.INT32,a);case"message":return this.messages(Object.values(e),r.V.T(),t,a)}}return!0}message(e,r,t,a){return t?r.isAssignable(e,a):r.is(e,a)}messages(r,t,e,a){if(!Array.isArray(r))return!1;if(!(a<2))if(e){for(let e=0;eparseInt(e))),r,t);case ScalarType.BOOL:return this.scalars(a.slice(0,t).map((e=>"true"==e||"false"!=e&&e)),r,t);default:return this.scalars(a,r,t,LongType.STRING)}}}function typeofJsonValue(e){var r=typeof e;if("object"==r){if(Array.isArray(e))return"array";if(null===e)return"null"}return r}function isJsonObject(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}let encTable="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),decTable=[];for(let e=0;e>4,i=s,n=2;break;case 2:t[a++]=(15&i)<<4|(60&s)>>2,i=s,n=3;break;case 3:t[a++]=(3&i)<<6|s,n=0}}if(1==n)throw Error("invalid base64 string.");return t.subarray(0,a)}function base64encode(r){let t="",a=0,n,s=0;for(let e=0;e>2],s=(3&n)<<4,a=1;break;case 1:t+=encTable[s|n>>4],s=(15&n)<<2,a=2;break;case 2:t=(t+=encTable[s|n>>6])+encTable[63&n],a=0}return a&&(t=t+encTable[s]+"=",1==a&&(t+="=")),t}function reflectionLongConvert(e,r){switch(r){case LongType.BIGINT:return e.toBigInt();case LongType.NUMBER:return e.toNumber();default:return e.toString()}}decTable["-".charCodeAt(0)]=encTable.indexOf("+"),decTable["_".charCodeAt(0)]=encTable.indexOf("/");class ReflectionJsonReader{constructor(e){this.info=e}prepare(){var e;if(void 0===this.fMap){this.fMap={};for(const r of null!=(e=this.info.fields)?e:[])this.fMap[r.name]=r,this.fMap[r.jsonName]=r,this.fMap[r.localName]=r}}assert(e,r,t){if(!e){let e=typeofJsonValue(t);throw"number"!=e&&"boolean"!=e||(e=t.toString()),new Error(`Cannot parse JSON ${e} for ${this.info.typeName}#`+r)}}read(e,r,t){this.prepare();var a,n,s=[];for([a,n]of Object.entries(e)){var i=this.fMap[a];if(!i){if(t.ignoreUnknownFields)continue;throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: `+a)}var o=i.localName;let e;if(i.oneof){if(s.includes(i.oneof))throw new Error(`Multiple members of the oneof group "${i.oneof}" of ${this.info.typeName} are present in JSON.`);s.push(i.oneof),e=r[i.oneof]={oneofKind:o}}else e=r;if("map"==i.kind){if(null!==n){this.assert(isJsonObject(n),i.name,n);var l,c,u=e[o];for([l,c]of Object.entries(n)){this.assert(null!==c,i.name+" map value",null);let e;switch(i.V.kind){case"message":e=i.V.T().internalJsonRead(c,t);break;case"enum":if(!1===(e=this.enum(i.V.T(),c,i.name,t.ignoreUnknownFields)))continue;break;case"scalar":e=this.scalar(c,i.V.T,i.V.L,i.name)}this.assert(void 0!==e,i.name+" map value",c);let r=l;i.K==ScalarType.BOOL&&(r="true"==r||"false"!=r&&r),u[r=this.scalar(r,i.K,LongType.STRING,i.name).toString()]=e}}}else if(i.repeat){if(null!==n){this.assert(Array.isArray(n),i.name,n);var f=e[o];for(const p of n){this.assert(null!==p,i.name,null);let e;switch(i.kind){case"message":e=i.T().internalJsonRead(p,t);break;case"enum":if(!1===(e=this.enum(i.T(),p,i.name,t.ignoreUnknownFields)))continue;break;case"scalar":e=this.scalar(p,i.T,i.L,i.name)}this.assert(void 0!==e,i.name,n),f.push(e)}}}else switch(i.kind){case"message":null===n&&"google.protobuf.Value"!=i.T().typeName?this.assert(void 0===i.oneof,i.name+" (oneof member)",null):e[o]=i.T().internalJsonRead(n,t,e[o]);break;case"enum":var h=this.enum(i.T(),n,i.name,t.ignoreUnknownFields);!1!==h&&(e[o]=h);break;case"scalar":e[o]=this.scalar(n,i.T,i.L,i.name)}}}enum(r,t,a,n){if("google.protobuf.NullValue"==r[0]&&assert(null===t,`Unable to parse field ${this.info.typeName}#${a}, enum ${r[0]} only accepts null.`),null===t)return 0;switch(typeof t){case"number":return assert(Number.isInteger(t),`Unable to parse field ${this.info.typeName}#${a}, enum can only be integral number, got ${t}.`),t;case"string":let e=t;r[2]&&t.substring(0,r[2].length)===r[2]&&(e=t.substring(r[2].length));var s=r[1][e];return void 0===s&&n?!1:(assert("number"==typeof s,`Unable to parse field ${this.info.typeName}#${a}, enum ${r[0]} has no value for "${t}".`),s)}assert(!1,`Unable to parse field ${this.info.typeName}#${a}, cannot parse enum value from ${typeof t}".`)}scalar(r,t,a,e){let n;try{switch(t){case ScalarType.DOUBLE:case ScalarType.FLOAT:if(null===r)return 0;if("NaN"===r)return Number.NaN;if("Infinity"===r)return Number.POSITIVE_INFINITY;if("-Infinity"===r)return Number.NEGATIVE_INFINITY;if(""===r)n="empty string";else if("string"==typeof r&&r.trim().length!==r.length)n="extra whitespace";else if("string"==typeof r||"number"==typeof r){var s=Number(r);if(Number.isNaN(s))n="not a number";else{if(Number.isFinite(s))return t==ScalarType.FLOAT&&assertFloat32(s),s;n="too large or small"}}break;case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.SFIXED32:case ScalarType.SINT32:case ScalarType.UINT32:if(null===r)return 0;let e;if("number"==typeof r?e=r:""===r?n="empty string":"string"==typeof r&&(r.trim().length!==r.length?n="extra whitespace":e=Number(r)),void 0===e)break;return(t==ScalarType.UINT32?assertUInt32:assertInt32)(e),e;case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:if(null===r)return reflectionLongConvert(PbLong.ZERO,a);if("number"!=typeof r&&"string"!=typeof r)break;return reflectionLongConvert(PbLong.from(r),a);case ScalarType.FIXED64:case ScalarType.UINT64:if(null===r)return reflectionLongConvert(PbULong.ZERO,a);if("number"!=typeof r&&"string"!=typeof r)break;return reflectionLongConvert(PbULong.from(r),a);case ScalarType.BOOL:if(null===r)return!1;if("boolean"!=typeof r)break;return r;case ScalarType.STRING:if(null===r)return"";if("string"!=typeof r){n="extra whitespace";break}try{encodeURIComponent(r)}catch(e){0;break}return r;case ScalarType.BYTES:if(null===r||""===r)return new Uint8Array(0);if("string"!=typeof r)break;return base64decode(r)}}catch(e){n=e.message}this.assert(!1,e+(n?" - "+n:""),r)}}class ReflectionJsonWriter{constructor(e){this.fields=null!=(e=e.fields)?e:[]}write(e,r){var t,a,n={},s=e;for(const i of this.fields)i.oneof?(t=s[i.oneof]).oneofKind===i.localName&&(a="scalar"==i.kind||"enum"==i.kind?__spreadProps(__spreadValues({},r),{emitDefaultValues:!0}):r,assert(void 0!==(t=this.field(i,t[i.localName],a))),n[r.useProtoFieldName?i.name:i.jsonName]=t):void 0!==(a=this.field(i,s[i.localName],r))&&(n[r.useProtoFieldName?i.name:i.jsonName]=a);return n}field(r,t,a){let e=void 0;if("map"==r.kind){assert("object"==typeof t&&null!==t);var n={};switch(r.V.kind){case"scalar":for(var[s,i]of Object.entries(t)){i=this.scalar(r.V.T,i,r.name,!1,!0);assert(void 0!==i),n[s.toString()]=i}break;case"message":var o,l,c=r.V.T();for([o,l]of Object.entries(t)){var u=this.message(c,l,r.name,a);assert(void 0!==u),n[o.toString()]=u}break;case"enum":var f,h,p=r.V.T();for([f,h]of Object.entries(t)){assert(void 0===h||"number"==typeof h);var d=this.enum(p,h,r.name,!1,!0,a.enumAsInteger);assert(void 0!==d),n[f.toString()]=d}}(a.emitDefaultValues||0[e.no,e]))))}read(a,n,s,e){this.prepare();for(var r=void 0===e?a.len:a.pos+e;a.pose.no-r.no)))}write(n,s,i){this.prepare();for(const f of this.fields){let e,r,t=f.repeat,a=f.localName;if(f.oneof){var o=n[f.oneof];if(o.oneofKind!==a)continue;e=o[a],r=!0}else e=n[a],r=!1;switch(f.kind){case"scalar":case"enum":var l="enum"==f.kind?ScalarType.INT32:f.T;if(t)if(assert(Array.isArray(e)),t==RepeatType.PACKED)this.packed(s,l,f.no,e);else for(const h of e)this.scalar(s,l,f.no,h,!0);else void 0===e?assert(f.opt):this.scalar(s,l,f.no,e,r||f.opt);break;case"message":if(t){assert(Array.isArray(e));for(const p of e)this.message(s,i,f.T(),f.no,p)}else this.message(s,i,f.T(),f.no,e);break;case"map":assert("object"==typeof e&&null!==e);for(var[c,u]of Object.entries(e))this.mapEntry(s,i,f,c,u)}}var e=i.writeUnknownFields;!1!==e&&(!0===e?UnknownFieldHandler.onWrite:e)(this.info.typeName,n,s)}mapEntry(e,r,t,a,n){e.tag(t.no,WireType.LengthDelimited),e.fork();let s=a;switch(t.K){case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.UINT32:case ScalarType.SFIXED32:case ScalarType.SINT32:s=Number.parseInt(a);break;case ScalarType.BOOL:assert("true"==a||"false"==a),s="true"==a}switch(this.scalar(e,t.K,1,s,!0),t.V.kind){case"scalar":this.scalar(e,t.V.T,2,n,!0);break;case"enum":this.scalar(e,ScalarType.INT32,2,n,!0);break;case"message":this.message(e,r,t.V.T(),2,n)}e.join()}message(e,r,t,a,n){void 0!==n&&(t.internalBinaryWrite(n,e.tag(a,WireType.LengthDelimited).fork(),r),e.join())}scalar(e,r,t,a,n){var[r,s,i]=this.scalarInfo(r,a);i&&!n||(e.tag(t,r),e[s](a))}packed(r,e,t,a){if(a.length){assert(e!==ScalarType.BYTES&&e!==ScalarType.STRING),r.tag(t,WireType.LengthDelimited),r.fork();var[,n]=this.scalarInfo(e);for(let e=0;e=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),l=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),o=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function b(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let g,p,m;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,l=0;for(n=1;n<=s;n++)i[n]=l=l+a[n-1]<<1;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let n,s,o,h,d=0;if(0!==t.last_lit)do{n=t.pending_buf[t.d_buf+2*d]<<8|t.pending_buf[t.d_buf+2*d+1],s=t.pending_buf[t.l_buf+d],d++,0===n?z(t,s,e):(o=c[s],z(t,o+a+1,e),h=r[o],0!==h&&(s-=u[o],x(t,s,h)),n--,o=v(n),z(t,o,i),h=l[o],0!==h&&(n-=w[o],x(t,n,h)))}while(d{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let l,o,h,d=-1;for(t.heap_len=0,t.heap_max=573,l=0;l>1;l>=1;l--)S(t,a,l);h=r;do{l=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=l,t.heap[--t.heap_max]=o,a[2*h]=a[2*l]+a[2*o],t.depth[h]=(t.depth[l]>=t.depth[o]?t.depth[l]:t.depth[o])+1,a[2*l+1]=a[2*o+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,l=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,b=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,b++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=o&&(u=l[_-o]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==b){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,b-=2}while(b>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],l=0,o=7,h=4;for(0===r&&(o=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++l{let i,n,s=-1,r=e[1],l=0,o=7,h=4;for(0===r&&(o=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++l{x(t,0+(i?1:0),3),((t,e,a,i)=>{Z(t),i&&(y(t,a),y(t,~a)),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a})(t,e,a,!0)};var N={_tr_init:t=>{F||((()=>{let t,e,a,h,k;const v=new Array(16);for(a=0,h=0;h<28;h++)for(u[h]=a,t=0;t<1<>=7;h{let s,r,l=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=i+5,i+4<=s&&-1!==e?L(t,e,i,n):4===t.strategy||r===s?(x(t,2+(n?1:0),3),D(t,d,_)):(x(t,4+(n?1:0),3),((t,e,a,i)=>{let n;for(x(t,e-257,5),x(t,a-1,5),x(t,i-4,4),n=0;n(t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&i,t.last_lit++,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(c[i]+a+1)]++,t.dyn_dtree[2*v(e)]++),t.last_lit===t.lit_bufsize-1),_tr_align:t=>{x(t,2,3),z(t,256,d),(t=>{16===t.bi_valid?(y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var B=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const C=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var M=(t,e,a,i)=>{const n=C,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},H={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},j={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:K,_tr_stored_block:P,_tr_flush_block:Y,_tr_tally:G,_tr_align:X}=N,{Z_NO_FLUSH:W,Z_PARTIAL_FLUSH:q,Z_FULL_FLUSH:J,Z_FINISH:Q,Z_BLOCK:V,Z_OK:$,Z_STREAM_END:tt,Z_STREAM_ERROR:et,Z_DATA_ERROR:at,Z_BUF_ERROR:it,Z_DEFAULT_COMPRESSION:nt,Z_FILTERED:st,Z_HUFFMAN_ONLY:rt,Z_RLE:lt,Z_FIXED:ot,Z_DEFAULT_STRATEGY:ht,Z_UNKNOWN:dt,Z_DEFLATED:_t}=j,ft=258,ct=262,ut=103,wt=113,bt=666,gt=(t,e)=>(t.msg=H[e],e),pt=t=>(t<<1)-(t>4?9:0),mt=t=>{let e=t.length;for(;--e>=0;)t[e]=0};let kt=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},yt=(t,e)=>{Y(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,vt(t.strm)},xt=(t,e)=>{t.pending_buf[t.pending++]=e},zt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},At=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=B(t.adler,e,n,a):2===t.state.wrap&&(t.adler=M(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},Et=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,l=t.nice_match;const o=t.strstart>t.w_size-ct?t.strstart-(t.w_size-ct):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+ft;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),l>t.lookahead&&(l=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=l)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>o&&0!=--n);return r<=t.lookahead?r:t.lookahead},Rt=t=>{const e=t.w_size;let a,i,n,s,r;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ct)){t.window.set(t.window.subarray(e,e+e),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,i=t.hash_size,a=i;do{n=t.head[--a],t.head[a]=n>=e?n-e:0}while(--i);i=e,a=i;do{n=t.prev[--a],t.prev[a]=n>=e?n-e:0}while(--i);s+=e}if(0===t.strm.avail_in)break;if(i=At(t.strm,t.window,t.strstart+t.lookahead,s),t.lookahead+=i,t.lookahead+t.insert>=3)for(r=t.strstart-t.insert,t.ins_h=t.window[r],t.ins_h=kt(t,t.ins_h,t.window[r+1]);t.insert&&(t.ins_h=kt(t,t.ins_h,t.window[r+3-1]),t.prev[r&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=r,r++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let a,i;for(;;){if(t.lookahead=3&&(t.ins_h=kt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ct&&(t.match_length=Et(t,a)),t.match_length>=3)if(i=G(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=kt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=kt(t,t.ins_h,t.window[t.strstart+1]);else i=G(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===Q?(yt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yt(t,!1),0===t.strm.avail_out)?1:2},Ut=(t,e)=>{let a,i,n;for(;;){if(t.lookahead=3&&(t.ins_h=kt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=G(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=kt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(yt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=G(t,0,t.window[t.strstart-1]),i&&yt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=G(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===Q?(yt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yt(t,!1),0===t.strm.avail_out)?1:2};function St(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const Dt=[new St(0,0,0,0,((t,e)=>{let a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Rt(t),0===t.lookahead&&e===W)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;const i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,yt(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-ct&&(yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Q?(yt(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(yt(t,!1),t.strm.avail_out),1)})),new St(4,4,8,4,Zt),new St(4,5,16,8,Zt),new St(4,6,32,32,Zt),new St(4,4,16,16,Ut),new St(8,16,32,32,Ut),new St(8,16,128,128,Ut),new St(8,32,128,256,Ut),new St(32,128,258,1024,Ut),new St(32,258,258,4096,Ut)];function Tt(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=_t,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),mt(this.dyn_ltree),mt(this.dyn_dtree),mt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),mt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),mt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Ot=t=>{if(!t||!t.state)return gt(t,et);t.total_in=t.total_out=0,t.data_type=dt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:wt,t.adler=2===e.wrap?0:1,e.last_flush=W,K(e),$},It=t=>{const e=Ot(t);var a;return e===$&&((a=t.state).window_size=2*a.w_size,mt(a.head),a.max_lazy_match=Dt[a.level].max_lazy,a.good_match=Dt[a.level].good_length,a.nice_match=Dt[a.level].nice_length,a.max_chain_length=Dt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ft=(t,e,a,i,n,s)=>{if(!t)return et;let r=1;if(e===nt&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==_t||i<8||i>15||e<0||e>9||s<0||s>ot)return gt(t,et);8===i&&(i=9);const l=new Tt;return t.state=l,l.strm=t,l.wrap=r,l.gzhead=null,l.w_bits=i,l.w_size=1<Ft(t,e,_t,15,8,ht),deflateInit2:Ft,deflateReset:It,deflateResetKeep:Ot,deflateSetHeader:(t,e)=>t&&t.state?2!==t.state.wrap?et:(t.state.gzhead=e,$):et,deflate:(t,e)=>{let a,i;if(!t||!t.state||e>V||e<0)return t?gt(t,et):et;const n=t.state;if(!t.output||!t.input&&0!==t.avail_in||n.status===bt&&e!==Q)return gt(t,0===t.avail_out?it:et);n.strm=t;const s=n.last_flush;if(n.last_flush=e,42===n.status)if(2===n.wrap)t.adler=0,xt(n,31),xt(n,139),xt(n,8),n.gzhead?(xt(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),xt(n,255&n.gzhead.time),xt(n,n.gzhead.time>>8&255),xt(n,n.gzhead.time>>16&255),xt(n,n.gzhead.time>>24&255),xt(n,9===n.level?2:n.strategy>=rt||n.level<2?4:0),xt(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(xt(n,255&n.gzhead.extra.length),xt(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=M(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(xt(n,0),xt(n,0),xt(n,0),xt(n,0),xt(n,0),xt(n,9===n.level?2:n.strategy>=rt||n.level<2?4:0),xt(n,3),n.status=wt);else{let e=_t+(n.w_bits-8<<4)<<8,a=-1;a=n.strategy>=rt||n.level<2?0:n.level<6?1:6===n.level?2:3,e|=a<<6,0!==n.strstart&&(e|=32),e+=31-e%31,n.status=wt,zt(n,e),0!==n.strstart&&(zt(n,t.adler>>>16),zt(n,65535&t.adler)),t.adler=1}if(69===n.status)if(n.gzhead.extra){for(a=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>a&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),vt(t),a=n.pending,n.pending!==n.pending_buf_size));)xt(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>a&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){a=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>a&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),vt(t),a=n.pending,n.pending===n.pending_buf_size)){i=1;break}i=n.gzindexa&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),0===i&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){a=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>a&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),vt(t),a=n.pending,n.pending===n.pending_buf_size)){i=1;break}i=n.gzindexa&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),0===i&&(n.status=ut)}else n.status=ut;if(n.status===ut&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&vt(t),n.pending+2<=n.pending_buf_size&&(xt(n,255&t.adler),xt(n,t.adler>>8&255),t.adler=0,n.status=wt)):n.status=wt),0!==n.pending){if(vt(t),0===t.avail_out)return n.last_flush=-1,$}else if(0===t.avail_in&&pt(e)<=pt(s)&&e!==Q)return gt(t,it);if(n.status===bt&&0!==t.avail_in)return gt(t,it);if(0!==t.avail_in||0!==n.lookahead||e!==W&&n.status!==bt){let a=n.strategy===rt?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Rt(t),0===t.lookahead)){if(e===W)return 1;break}if(t.match_length=0,a=G(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Q?(yt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yt(t,!1),0===t.strm.avail_out)?1:2})(n,e):n.strategy===lt?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=ft){if(Rt(t),t.lookahead<=ft&&e===W)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+ft;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=G(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=G(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Q?(yt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yt(t,!1),0===t.strm.avail_out)?1:2})(n,e):Dt[n.level].func(n,e);if(3!==a&&4!==a||(n.status=bt),1===a||3===a)return 0===t.avail_out&&(n.last_flush=-1),$;if(2===a&&(e===q?X(n):e!==V&&(P(n,0,0,!1),e===J&&(mt(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),vt(t),0===t.avail_out))return n.last_flush=-1,$}return e!==Q?$:n.wrap<=0?tt:(2===n.wrap?(xt(n,255&t.adler),xt(n,t.adler>>8&255),xt(n,t.adler>>16&255),xt(n,t.adler>>24&255),xt(n,255&t.total_in),xt(n,t.total_in>>8&255),xt(n,t.total_in>>16&255),xt(n,t.total_in>>24&255)):(zt(n,t.adler>>>16),zt(n,65535&t.adler)),vt(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?$:tt)},deflateEnd:t=>{if(!t||!t.state)return et;const e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==ut&&e!==wt&&e!==bt?gt(t,et):(t.state=null,e===wt?gt(t,at):$)},deflateSetDictionary:(t,e)=>{let a=e.length;if(!t||!t.state)return et;const i=t.state,n=i.wrap;if(2===n||1===n&&42!==i.status||i.lookahead)return et;if(1===n&&(t.adler=B(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(mt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,l=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Rt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=kt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Rt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=l,t.avail_in=s,i.wrap=n,$},deflateInfo:"pako deflate (from Nodeca project)"};const Nt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Bt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Nt(a,e)&&(t[e]=a[e])}}return t},Ct=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Ht[254]=Ht[254]=1;var jt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,l=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},Kt=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Mt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Ht[t[a]]>e?a:e};var Yt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Gt=Object.prototype.toString,{Z_NO_FLUSH:Xt,Z_SYNC_FLUSH:Wt,Z_FULL_FLUSH:qt,Z_FINISH:Jt,Z_OK:Qt,Z_STREAM_END:Vt,Z_DEFAULT_COMPRESSION:$t,Z_DEFAULT_STRATEGY:te,Z_DEFLATED:ee}=j;function ae(t){this.options=Bt({level:$t,method:ee,chunkSize:16384,windowBits:15,memLevel:8,strategy:te},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Yt,this.strm.avail_out=0;let a=Lt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==Qt)throw new Error(H[a]);if(e.header&&Lt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?jt(e.dictionary):"[object ArrayBuffer]"===Gt.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Lt.deflateSetDictionary(this.strm,t),a!==Qt)throw new Error(H[a]);this._dict_set=!0}}function ie(t,e){const a=new ae(e);if(a.push(t,!0),a.err)throw a.msg||H[a.err];return a.result}ae.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Jt:Xt,"string"==typeof t?a.input=jt(t):"[object ArrayBuffer]"===Gt.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===Wt||s===qt)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Lt.deflate(a,s),n===Vt)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Lt.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Qt;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},ae.prototype.onData=function(t){this.chunks.push(t)},ae.prototype.onEnd=function(t){t===Qt&&(this.result=Ct(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var ne={Deflate:ae,deflate:ie,deflateRaw:function(t,e){return(e=e||{}).raw=!0,ie(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,ie(t,e)},constants:j};var se=function(t,e){let a,i,n,s,r,l,o,h,d,_,f,c,u,w,b,g,p,m,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),l=E.dmax,o=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,b=(1<>>24,f>>>=m,c-=m,m=p>>>16&255,0===m)A[n++]=65535&p;else{if(!(16&m)){if(0==(64&m)){p=u[(65535&p)+(f&(1<>>=m,c-=m),c<15&&(f+=z[a++]<>>24,f>>>=m,c-=m,m=p>>>16&255,!(16&m)){if(0==(64&m)){p=w[(65535&p)+(f&(1<l){t.msg="invalid distance too far back",E.mode=30;break t}if(f>>>=m,c-=m,m=n-s,v>m){if(m=v-m,m>h&&E.sane){t.msg="invalid distance too far back",E.mode=30;break t}if(y=0,x=_,0===d){if(y+=o-m,m2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const o=l.bits;let h,d,_,f,c,u,w=0,b=0,g=0,p=0,m=0,k=0,v=0,y=0,x=0,z=0,A=null,E=0;const R=new Uint16Array(16),Z=new Uint16Array(16);let U,S,D,T=null,O=0;for(w=0;w<=re;w++)R[w]=0;for(b=0;b=1&&0===R[p];p--);if(m>p&&(m=p),0===p)return n[s++]=20971520,n[s++]=20971520,l.bits=1,0;for(g=1;g0&&(0===t||1!==p))return-1;for(Z[1]=0,w=1;w852||2===t&&x>592)return 1;for(;;){U=w-v,r[b]u?(S=T[O+r[b]],D=A[E+r[b]]):(S=96,D=0),h=1<>v)+d]=U<<24|S<<16|D|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,b++,0==--R[w]){if(w===p)break;w=e[a+r[b]]}if(w>m&&(z&f)!==_){for(0===v&&(v=m),c+=g,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=m<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),l.bits=m,0};const{Z_FINISH:fe,Z_BLOCK:ce,Z_TREES:ue,Z_OK:we,Z_STREAM_END:be,Z_NEED_DICT:ge,Z_STREAM_ERROR:pe,Z_DATA_ERROR:me,Z_MEM_ERROR:ke,Z_BUF_ERROR:ve,Z_DEFLATED:ye}=j,xe=12,ze=30,Ae=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Ee(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Re=t=>{if(!t||!t.state)return pe;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,we},Ze=t=>{if(!t||!t.state)return pe;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Re(t)},Ue=(t,e)=>{let a;if(!t||!t.state)return pe;const i=t.state;return e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?pe:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,Ze(t))},Se=(t,e)=>{if(!t)return pe;const a=new Ee;t.state=a,a.window=null;const i=Ue(t,e);return i!==we&&(t.state=null),i};let De,Te,Oe=!0;const Ie=t=>{if(Oe){De=new Int32Array(512),Te=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(_e(1,t.lens,0,288,De,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;_e(2,t.lens,0,32,Te,0,t.work,{bits:5}),Oe=!1}t.lencode=De,t.lenbits=9,t.distcode=Te,t.distbits=5},Fe=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveSe(t,15),inflateInit2:Se,inflate:(t,e)=>{let a,i,n,s,r,l,o,h,d,_,f,c,u,w,b,g,p,m,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return pe;a=t.state,a.mode===xe&&(a.mode=13),r=t.next_out,n=t.output,o=t.avail_out,s=t.next_in,i=t.input,l=t.avail_in,h=a.hold,d=a.bits,_=l,f=o,x=we;t:for(;;)switch(a.mode){case 1:if(0===a.wrap){a.mode=13;break}for(;d<16;){if(0===l)break t;l--,h+=i[s++]<>>8&255,a.check=M(a.check,A,2,0),h=0,d=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=ze;break}if((15&h)!==ye){t.msg="unknown compression method",a.mode=ze;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits)a.wbits=y;else if(y>a.wbits){t.msg="invalid window size",a.mode=ze;break}a.dmax=1<>8&1),512&a.flags&&(A[0]=255&h,A[1]=h>>>8&255,a.check=M(a.check,A,2,0)),h=0,d=0,a.mode=3;case 3:for(;d<32;){if(0===l)break t;l--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=M(a.check,A,4,0)),h=0,d=0,a.mode=4;case 4:for(;d<16;){if(0===l)break t;l--,h+=i[s++]<>8),512&a.flags&&(A[0]=255&h,A[1]=h>>>8&255,a.check=M(a.check,A,2,0)),h=0,d=0,a.mode=5;case 5:if(1024&a.flags){for(;d<16;){if(0===l)break t;l--,h+=i[s++]<>>8&255,a.check=M(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(c=a.length,c>l&&(c=l),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&(a.check=M(a.check,i,c,s)),l-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===l)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=xe;break;case 10:for(;d<32;){if(0===l)break t;l--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=27;break}for(;d<3;){if(0===l)break t;l--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=14;break;case 1:if(Ie(a),a.mode=20,e===ue){h>>>=2,d-=2;break t}break;case 2:a.mode=17;break;case 3:t.msg="invalid block type",a.mode=ze}h>>>=2,d-=2;break;case 14:for(h>>>=7&d,d-=7&d;d<32;){if(0===l)break t;l--,h+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",a.mode=ze;break}if(a.length=65535&h,h=0,d=0,a.mode=15,e===ue)break t;case 15:a.mode=16;case 16:if(c=a.length,c){if(c>l&&(c=l),c>o&&(c=o),0===c)break t;n.set(i.subarray(s,s+c),r),l-=c,s+=c,o-=c,r+=c,a.length-=c;break}a.mode=xe;break;case 17:for(;d<14;){if(0===l)break t;l--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=ze;break}a.have=0,a.mode=18;case 18:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=_e(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=ze;break}a.have=0,a.mode=19;case 19:for(;a.have>>24,g=z>>>16&255,p=65535&z,!(b<=d);){if(0===l)break t;l--,h+=i[s++]<>>=b,d-=b,a.lens[a.have++]=p;else{if(16===p){for(R=b+2;d>>=b,d-=b,0===a.have){t.msg="invalid bit length repeat",a.mode=ze;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===p){for(R=b+3;d>>=b,d-=b,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=b+7;d>>=b,d-=b,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=ze;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===ze)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=ze;break}if(a.lenbits=9,E={bits:a.lenbits},x=_e(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=ze;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=_e(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=ze;break}if(a.mode=20,e===ue)break t;case 20:a.mode=21;case 21:if(l>=6&&o>=258){t.next_out=r,t.avail_out=o,t.next_in=s,t.avail_in=l,a.hold=h,a.bits=d,se(t,f),r=t.next_out,n=t.output,o=t.avail_out,s=t.next_in,i=t.input,l=t.avail_in,h=a.hold,d=a.bits,a.mode===xe&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,g=z>>>16&255,p=65535&z,!(b<=d);){if(0===l)break t;l--,h+=i[s++]<>m)],b=z>>>24,g=z>>>16&255,p=65535&z,!(m+b<=d);){if(0===l)break t;l--,h+=i[s++]<>>=m,d-=m,a.back+=m}if(h>>>=b,d-=b,a.back+=b,a.length=p,0===g){a.mode=26;break}if(32&g){a.back=-1,a.mode=xe;break}if(64&g){t.msg="invalid literal/length code",a.mode=ze;break}a.extra=15&g,a.mode=22;case 22:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;z=a.distcode[h&(1<>>24,g=z>>>16&255,p=65535&z,!(b<=d);){if(0===l)break t;l--,h+=i[s++]<>m)],b=z>>>24,g=z>>>16&255,p=65535&z,!(m+b<=d);){if(0===l)break t;l--,h+=i[s++]<>>=m,d-=m,a.back+=m}if(h>>>=b,d-=b,a.back+=b,64&g){t.msg="invalid distance code",a.mode=ze;break}a.offset=p,a.extra=15&g,a.mode=24;case 24:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=ze;break}a.mode=25;case 25:if(0===o)break t;if(c=f-o,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=ze;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>o&&(c=o),o-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=21);break;case 26:if(0===o)break t;n[r++]=a.length,o--,a.mode=21;break;case 27:if(a.wrap){for(;d<32;){if(0===l)break t;l--,h|=i[s++]<{if(!t||!t.state)return pe;let e=t.state;return e.window&&(e.window=null),t.state=null,we},inflateGetHeader:(t,e)=>{if(!t||!t.state)return pe;const a=t.state;return 0==(2&a.wrap)?pe:(a.head=e,e.done=!1,we)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return t&&t.state?(i=t.state,0!==i.wrap&&11!==i.mode?pe:11===i.mode&&(n=1,n=B(n,e,a,0),n!==i.check)?me:(s=Fe(t,e,a,a),s?(i.mode=31,ke):(i.havedict=1,we))):pe},inflateInfo:"pako inflate (from Nodeca project)"};var Ne=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Be=Object.prototype.toString,{Z_NO_FLUSH:Ce,Z_FINISH:Me,Z_OK:He,Z_STREAM_END:je,Z_NEED_DICT:Ke,Z_STREAM_ERROR:Pe,Z_DATA_ERROR:Ye,Z_MEM_ERROR:Ge}=j;function Xe(t){this.options=Bt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Yt,this.strm.avail_out=0;let a=Le.inflateInit2(this.strm,e.windowBits);if(a!==He)throw new Error(H[a]);if(this.header=new Ne,Le.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=jt(e.dictionary):"[object ArrayBuffer]"===Be.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Le.inflateSetDictionary(this.strm,e.dictionary),a!==He)))throw new Error(H[a])}function We(t,e){const a=new Xe(e);if(a.push(t),a.err)throw a.msg||H[a.err];return a.result}Xe.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,l;if(this.ended)return!1;for(r=e===~~e?e:!0===e?Me:Ce,"[object ArrayBuffer]"===Be.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=Le.inflate(a,r),s===Ke&&n&&(s=Le.inflateSetDictionary(a,n),s===He?s=Le.inflate(a,r):s===Ye&&(s=Ke));a.avail_in>0&&s===je&&a.state.wrap>0&&0!==t[a.next_in];)Le.inflateReset(a),s=Le.inflate(a,r);switch(s){case Pe:case Ye:case Ke:case Ge:return this.onEnd(s),this.ended=!0,!1}if(l=a.avail_out,a.next_out&&(0===a.avail_out||s===je))if("string"===this.options.to){let t=Pt(a.output,a.next_out),e=a.next_out-t,n=Kt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==He||0!==l){if(s===je)return s=Le.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},Xe.prototype.onData=function(t){this.chunks.push(t)},Xe.prototype.onEnd=function(t){t===He&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Ct(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var qe={Inflate:Xe,inflate:We,inflateRaw:function(t,e){return(e=e||{}).raw=!0,We(t,e)},ungzip:We,constants:j};const{Deflate:Je,deflate:Qe,deflateRaw:Ve,gzip:$e}=ne,{Inflate:ta,inflate:ea,inflateRaw:aa,ungzip:ia}=qe;var na=Je,sa=Qe,ra=Ve,la=$e,oa=ta,ha=ea,da=aa,_a=ia,fa=j,ca={Deflate:na,deflate:sa,deflateRaw:ra,gzip:la,Inflate:oa,inflate:ha,inflateRaw:da,ungzip:_a,constants:fa};t.Deflate=na,t.Inflate=oa,t.constants=fa,t.default=ca,t.deflate=sa,t.deflateRaw=ra,t.gzip=la,t.inflate=ha,t.inflateRaw=da,t.ungzip=_a,Object.defineProperty(t,"__esModule",{value:!0})})); - /****************** initialization finish ******************/ - // 先拆分B站gRPC校验头和protobuf数据体 - let header = rawBody.slice(0, 5); - body = rawBody.slice(5); - // 处理response压缩protobuf数据体 - switch (header?.[0]) { - case 0: // unGzip - break; - case 1: // Gzip - body = pako.ungzip(body); - header[0] = 0; // unGzip - break; - }; - // 解析链接并处理protobuf数据 - switch (HOST) { - case "grpc.biliapi.net": // HTTP/2 - case "app.bilibili.com": // HTTP/1.1 - /****************** initialization start *******************/ - // google.protobuf.Any - class Any$Type extends MessageType{constructor(){super("google.protobuf.Any",[{no:1,name:"type_url",kind:"scalar",T:9},{no:2,name:"value",kind:"scalar",T:12}])}pack(message,type){return{typeUrl:this.typeNameToUrl(type.typeName),value:type.toBinary(message),}}unpack(any,type,options){if(!this.contains(any,type))throw new Error("Cannot unpack google.protobuf.Any with typeUrl '"+any.typeUrl+"' as "+type.typeName+".");return type.fromBinary(any.value,options)}contains(any,type){if(!any.typeUrl.length)return false;let wants=typeof type=="string"?type:type.typeName;let has=this.typeUrlToName(any.typeUrl);return wants===has}internalJsonWrite(any,options){if(any.typeUrl==="")return{};let typeName=this.typeUrlToName(any.typeUrl);let opt=jsonWriteOptions(options);let type=opt.typeRegistry?.find(t=>t.typeName===typeName);if(!type)throw new globalThis.Error("Unable to convert google.protobuf.Any with typeUrl '"+any.typeUrl+"' to JSON. The specified type "+typeName+" is not available in the type registry.");let value=type.fromBinary(any.value,{readUnknownField:false});let json=type.internalJsonWrite(value,opt);if(typeName.startsWith("google.protobuf.")||!isJsonObject(json))json={value:json};json["@type"]=any.typeUrl;return json}internalJsonRead(json,options,target){if(!isJsonObject(json))throw new globalThis.Error("Unable to parse google.protobuf.Any from JSON "+typeofJsonValue(json)+".");if(typeof json["@type"]!="string"||json["@type"]=="")return this.create();let typeName=this.typeUrlToName(json["@type"]);let type=options?.typeRegistry?.find(t=>t.typeName==typeName);if(!type)throw new globalThis.Error("Unable to parse google.protobuf.Any from JSON. The specified type "+typeName+" is not available in the type registry.");let value;if(typeName.startsWith("google.protobuf.")&&json.hasOwnProperty("value"))value=type.fromJson(json["value"],options);else{let copy=Object.assign({},json);delete copy["@type"];value=type.fromJson(copy,options)}if(target===undefined)target=this.create();target.typeUrl=json["@type"];target.value=type.toBinary(value);return target}typeNameToUrl(name){if(!name.length)throw new Error("invalid type name: "+name);return"type.googleapis.com/"+name}typeUrlToName(url){if(!url.length)throw new Error("invalid type url: "+url);let slash=url.lastIndexOf("/");let name=slash>0?url.substring(slash+1):url;if(!name.length)throw new Error("invalid type url: "+url);return name}create(value){const message={typeUrl:"",value:new Uint8Array(0)};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posAny}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posPlayArcConf}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posArcConf}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posExtraContent}])}create(value){const message={isSupport:false,disabled:false};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posDynamicList},{no:2,name:"up_list",kind:"message",T:()=>CardVideoUpList},{no:3,name:"topic_list",kind:"message",T:()=>TopicList}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posCardVideoUpList}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posDynamicItem}])}create(value){const message={list:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos["DynamicType",DynamicType]}])}create(value){const message={cardType:0};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos { - if (item.cardType !== 15) { - return true; - } - $.log(`🎉 ${$.name}`, "动态综合页广告动态去除"); - return false; - } - ); - } - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置动态综合页广告动态不去除"); - break; - } - body = DynAllReply.toBinary(data); - break; - case "DynVideo": // 动态视频页 - data = DynVideoReply.fromBinary(body); - switch (Settings?.Detail?.Most_visited) { - case true: - default: - if (data.videoUpList) { - data.videoUpList = null; - $.log(`🎉 ${$.name}`, "动态视频页最常访问去除"); - } - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置动态视频页最常访问不去除"); - break; - } - body = DynVideoReply.toBinary(data); - break; - } - break; - case "bilibili.app.view.v1.View": // 视频 - switch (PATHs?.[1]) { - case "View": // 视频播放页 - /****************** initialization start *******************/ - // protobuf/bilibili/app/view/view.proto - class ViewReply$Type extends MessageType{constructor(){super("ViewReply",[{no:6,name:"t_icon",kind:"map",K:9,V:{kind:"message",T:()=>TIcon}},{no:10,name:"relates",kind:"message",repeat:1,T:()=>Relate},{no:30,name:"cms",kind:"message",repeat:1,T:()=>CM},{no:31,name:"cm_config",kind:"message",T:()=>CMConfig},{no:41,name:"cm_ipad",kind:"message",T:()=>CmIpad}])}create(value){const message={tIcon:{},relates:[],cms:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posAny}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posCM}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos { - if (item.cm) { - $.log(`🎉 ${$.name}`, "播放页关联推荐广告去除"); - return false; - } - return true; - }); - } - if (data.cmConfig || data.cmIpad) { - delete data.cmConfig; - delete data.cmIpad; - $.log(`🎉 ${$.name}`, "播放页定制tab去除"); - } - for (const i in data.tIcon) { - if (data.tIcon[i] === null) { - // 解决tIcon的null is not an object问题 - // console.log(`tIconMap:${i}`); - delete data.tIcon[i]; - } - } - body = ViewReply.toBinary(data); - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置播放页广告不去除"); - break; - }; - break; - case "TFInfo": - /****************** initialization start *******************/ - // protobuf/bilibili/app/view/view.proto - class TFInfoReply$Type extends MessageType{constructor(){super("TFInfoReply",[{no:1,name:"tipsId",kind:"scalar",T:3,L:0},{no:2,name:"tfToast",kind:"message",T:()=>TFToast},{no:3,name:"tfPanelCustomized",kind:"message",T:()=>TFPanelCustomized}])}create(value){const message={tipsId:0n};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posTab},{no:7,name:"cm",kind:"message",T:()=>CM}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posTabModule}])}create(value){const message={tabModule:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posIntroductionTab}])}create(value){const message={tab:{oneofKind:undefined}};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posModule}])}create(value){const message={modules:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posRelates}])}create(value){const message={type:0,data:{oneofKind:undefined}};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posRelateCard}])}create(value){const message={cards:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posAny}])}create(value){const message={sourceContent:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos { - if (i.type === 28) { - i.data.relates.cards = i.data.relates.cards.filter((j) => j.relateCardType !== 5 && j.relateCardType !== 4); - $.log(`🎉 ${$.name}`, "视频详情下方推荐卡广告去除"); - } - return i; - } - ); - body = ViewReply.toBinary(data); - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置up主推荐广告不去除"); - break; - }; - break; - } - break; - case "bilibili.app.interface.v1.Teenagers": // 青少年模式 - switch (PATHs?.[1]) { - case "ModeStatus": // 青少年模式 - /****************** initialization start *******************/ - // protobuf/bilibili/app/interface/teenagers.proto - class ModeStatus$Type extends MessageType{constructor(){super("ModeStatus",[{no:1,name:"modes",kind:"message",repeat:1,T:()=>Mode}])}create(value){const message={modes:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posF5}])}create(value){const message={name:""};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos { - if (mode?.name === "teenagers") { - if (mode?.f5?.f1) { - mode.f5.f1 = 0; - $.log(`🎉 ${$.name}`, "青少年模式弹窗去除"); - } - } - return mode; - }); - body = ModeStatus.toBinary(data); - break; - }; - break; - case "bilibili.community.service.dm.v1.DM": //弹幕 - /****************** initialization start *******************/ - // protobuf/bilibili/community/service/dm/dm.proto - class CommandDm$Type extends MessageType{constructor(){super("CommandDm",[{no:1,name:"id",kind:"scalar",T:3,L:0}])}create(value){const message={id:0n};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posCommandDm}])}create(value){const message={commandDms:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posDmView}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posDanmakuElem}])}create(value){const message={elems:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos { - if (ele?.colorful === 60001) { - ele.colorful = 0; - } - return ele; - }); - $.log(`🎉 ${$.name}`, "会员弹幕已替换为普通弹幕"); - body = DmSegMobileReply.toBinary(data); - break; - case false: - default: - $.log(`🎉 ${$.name}`, "用户设置会员弹幕不修改"); - break; - } - break; - } - break; - case "bilibili.main.community.reply.v1.Reply": //评论区 - switch (PATHs?.[1]) { - case "MainList": - /****************** initialization start *******************/ - // protobuf/bilibili/main/community/reply/reply.proto - class MainListReply$Type extends MessageType{constructor(){super("MainListReply",[{no:11,name:"cm",kind:"message",T:()=>CM}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posSearchGameCard},{no:25,name:"cm",kind:"message",oneof:"cardItem",T:()=>SearchAdCard}])}create(value){const message={cardItem:{oneofKind:undefined}};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posItem}])}create(value){const message={item:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos !(i.cardItem?.oneofKind === "cm" || i.cardItem?.oneofKind === "game")); - $.log(`🎉 ${$.name}`, "搜索页广告去除"); - body = SearchAllResponse.toBinary(data); - break; - case false: - $.log(`🚧 ${$.name}`, "用户设置搜索页广告不去除"); - break; - } - break; - }; - case "SearchByType": { // 分类结果(番剧、用户、影视、专栏) - break; - }; - }; - break; - }; - break; - }; - // protobuf部分处理完后,重新计算并添加B站gRPC校验头 - rawBody = newRawBody({ header, body }); // gzip压缩有问题,别用 - break; - }; - // 写入二进制数据 - if ($.isQuanX()) $response.bodyBytes = rawBody - else $response.body = rawBody; - break; - }; - break; - case false: - break; - }; -})() - .catch((e) => $.logErr(e)) - .finally(() => { - switch ($response) { - default: { // 有回复数据,返回回复数据 - const FORMAT = ($response?.headers?.["Content-Type"] ?? $response?.headers?.["content-type"])?.split(";")?.[0]; - $.log(`🎉 ${$.name}, finally`, `$response`, `FORMAT: ${FORMAT}`, ""); - //$.log(`🚧 ${$.name}, finally`, `$response: ${JSON.stringify($response)}`, ""); - if ($response?.headers?.["Content-Encoding"]) $response.headers["Content-Encoding"] = "identity"; - if ($response?.headers?.["content-encoding"]) $response.headers["content-encoding"] = "identity"; - if ($.isQuanX()) { - switch (FORMAT) { - case undefined: // 视为无body - // 返回普通数据 - $.done({ headers: $response.headers }); - break; - default: - // 返回普通数据 - $.done({ headers: $response.headers, body: $response.body }); - break; - case "application/x-protobuf": - case "application/grpc": - case "application/grpc+proto": - case "applecation/octet-stream": - // 返回二进制数据 - //$.log(`${$response.bodyBytes.byteLength}---${$response.bodyBytes.buffer.byteLength}`); - $.done({ headers: $response.headers, bodyBytes: $response.bodyBytes.buffer.slice($response.bodyBytes.byteOffset, $response.bodyBytes.byteLength + $response.bodyBytes.byteOffset) }); - break; - }; - } else $.done($response); - break; - }; - case undefined: { // 无回复数据 - break; - }; - }; - }) - -/***************** Function *****************/ -/** - * Set Environment Variables - * @author VirgilClyne - * @param {String} name - Persistent Store Key - * @param {Array} platforms - Platform Names - * @param {Object} database - Default DataBase - * @return {Object} { Settings, Caches, Configs } - */ -function setENV(name, platforms, database) { - $.log(`☑️ ${$.name}, Set Environment Variables`, ""); - let { Settings, Caches, Configs } = getENV(name, platforms, database); - /***************** Settings *****************/ - $.log(`✅ ${$.name}, Set Environment Variables`, `Settings: ${typeof Settings}`, `Settings内容: ${JSON.stringify(Settings)}`, ""); - /***************** Caches *****************/ - //$.log(`✅ ${$.name}, Set Environment Variables`, `Caches: ${typeof Caches}`, `Caches内容: ${JSON.stringify(Caches)}`, ""); - /***************** Configs *****************/ - return { Settings, Caches, Configs }; -}; - -/** - * Create New Raw Body - * @author app2smile - * @param {ArrayBuffer} header - unGzip Header - * @param {ArrayBuffer} body - unGzip Body - * @param {String} type - encoding type - * @return {ArrayBuffer} new raw Body with Checksum Header - */ -function newRawBody({ header, body }, encoding = undefined) { - //$.log(`⚠ ${$.name}, Create New Raw Body`, ""); - // Header: 1位:是否校验数据 (0或者1) + 4位:校验值(数据长度) - const flag = (encoding == "gzip") ? 1 : (encoding == "identity") ? 0 : (encoding == undefined) ? 0 : header?.[0] ?? 0; // encoding flag - const checksum = Checksum(body.length); // 校验值为未压缩情况下的数据长度, 不是压缩后的长度 - if (encoding == "gzip") body = pako.gzip(body); // gzip压缩(有问题,别压) - let rawBody = new Uint8Array(header.length + body.length); - rawBody.set([flag], 0) // 0位:Encoding类型,当为1的时候, app会校验1-4位的校验值是否正确 - rawBody.set(checksum, 1) // 1-4位: 校验值(4位) - rawBody.set(body, 5); // 5-end位:protobuf数据 - //$.log(`🎉 ${$.name}, Create New Raw Body`, ""); - return rawBody; - - // 计算校验和 (B站为数据本体字节数) - function Checksum(num) { - let arr = new ArrayBuffer(4); // an Int32 takes 4 bytes - let view = new DataView(arr); - // 首位填充计算过的新数据长度 - view.setUint32(0, num, false); // byteOffset = 0; litteEndian = false - return new Uint8Array(arr); - }; -}; - -/***************** Env *****************/ -// prettier-ignore -// https://github.com/chavyleung/scripts/blob/master/Env.min.js -function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,a)=>{s.call(this,t,(t,s,r)=>{t?a(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.encoding="utf-8",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}getEnv(){return"undefined"!=typeof $environment&&$environment["surge-version"]?"Surge":"undefined"!=typeof $environment&&$environment["stash-version"]?"Stash":"undefined"!=typeof module&&module.exports?"Node.js":"undefined"!=typeof $task?"Quantumult X":"undefined"!=typeof $loon?"Loon":"undefined"!=typeof $rocket?"Shadowrocket":void 0}isNode(){return"Node.js"===this.getEnv()}isQuanX(){return"Quantumult X"===this.getEnv()}isSurge(){return"Surge"===this.getEnv()}isLoon(){return"Loon"===this.getEnv()}isShadowrocket(){return"Shadowrocket"===this.getEnv()}isStash(){return"Stash"===this.getEnv()}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const a=this.getdata(t);if(a)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,a)=>e(a))})}runScript(t,e){return new Promise(s=>{let a=this.getdata("@chavy_boxjs_userCfgs.httpapi");a=a?a.replace(/\n/g,"").trim():a;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[i,o]=a.split("@"),n={url:`http://${o}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":i,Accept:"*/*"},timeout:r};this.post(n,(t,e,a)=>s(a))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),a=!s&&this.fs.existsSync(e);if(!s&&!a)return{};{const a=s?t:e;try{return JSON.parse(this.fs.readFileSync(a))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),a=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):a?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const a=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of a)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,a)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[a+1])>>0==+e[a+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,a]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,a,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,a,r]=/^@(.*?)\.(.*?)$/.exec(e),i=this.getval(a),o=a?"null"===i?null:i||"{}":"{}";try{const e=JSON.parse(o);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),a)}catch(e){const i={};this.lodash_set(i,r,t),s=this.setval(JSON.stringify(i),a)}}else s=this.setval(t,e);return s}getval(t){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":return $persistentStore.read(t);case"Quantumult X":return $prefs.valueForKey(t);case"Node.js":return this.data=this.loaddata(),this.data[t];default:return this.data&&this.data[t]||null}}setval(t,e){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":return $persistentStore.write(t,e);case"Quantumult X":return $prefs.setValueForKey(t,e);case"Node.js":return this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0;default:return this.data&&this.data[e]||null}}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){switch(t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"],delete t.headers["content-type"],delete t.headers["content-length"]),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,a)=>{!t&&s&&(s.body=a,s.statusCode=s.status?s.status:s.statusCode,s.status=s.statusCode),e(t,s,a)});break;case"Quantumult X":this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:a,headers:r,body:i,bodyBytes:o}=t;e(null,{status:s,statusCode:a,headers:r,body:i,bodyBytes:o},i,o)},t=>e(t&&t.error||"UndefinedError"));break;case"Node.js":let s=require("iconv-lite");this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:a,statusCode:r,headers:i,rawBody:o}=t,n=s.decode(o,this.encoding);e(null,{status:a,statusCode:r,headers:i,rawBody:o,body:n},n)},t=>{const{message:a,response:r}=t;e(a,r,r&&s.decode(r.rawBody,this.encoding))})}}post(t,e=(()=>{})){const s=t.method?t.method.toLocaleLowerCase():"post";switch(t.body&&t.headers&&!t.headers["Content-Type"]&&!t.headers["content-type"]&&(t.headers["content-type"]="application/x-www-form-urlencoded"),t.headers&&(delete t.headers["Content-Length"],delete t.headers["content-length"]),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient[s](t,(t,s,a)=>{!t&&s&&(s.body=a,s.statusCode=s.status?s.status:s.statusCode,s.status=s.statusCode),e(t,s,a)});break;case"Quantumult X":t.method=s,this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:a,headers:r,body:i,bodyBytes:o}=t;e(null,{status:s,statusCode:a,headers:r,body:i,bodyBytes:o},i,o)},t=>e(t&&t.error||"UndefinedError"));break;case"Node.js":let a=require("iconv-lite");this.initGotEnv(t);const{url:r,...i}=t;this.got[s](r,i).then(t=>{const{statusCode:s,statusCode:r,headers:i,rawBody:o}=t,n=a.decode(o,this.encoding);e(null,{status:s,statusCode:r,headers:i,rawBody:o,body:n},n)},t=>{const{message:s,response:r}=t;e(s,r,r&&a.decode(r.rawBody,this.encoding))})}}time(t,e=null){const s=e?new Date(e):new Date;let a={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in a)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?a[e]:("00"+a[e]).substr((""+a[e]).length)));return t}queryStr(t){let e="";for(const s in t){let a=t[s];null!=a&&""!==a&&("object"==typeof a&&(a=JSON.stringify(a)),e+=`${s}=${a}&`)}return e=e.substring(0,e.length-1),e}msg(e=t,s="",a="",r){const i=t=>{switch(typeof t){case void 0:return t;case"string":switch(this.getEnv()){case"Surge":case"Stash":default:return{url:t};case"Loon":case"Shadowrocket":return t;case"Quantumult X":return{"open-url":t};case"Node.js":return}case"object":switch(this.getEnv()){case"Surge":case"Stash":case"Shadowrocket":default:{let e=t.url||t.openUrl||t["open-url"];return{url:e}}case"Loon":{let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}case"Quantumult X":{let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl,a=t["update-pasteboard"]||t.updatePasteboard;return{"open-url":e,"media-url":s,"update-pasteboard":a}}case"Node.js":return}default:return}};if(!this.isMute)switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:$notification.post(e,s,a,i(r));break;case"Quantumult X":$notify(e,s,a,i(r));break;case"Node.js":}if(!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),a&&t.push(a),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":case"Quantumult X":default:this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t);break;case"Node.js":this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack)}}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;switch(this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":case"Quantumult X":default:$done(t);break;case"Node.js":process.exit(1)}}}(t,e)} - -/** - * Get Environment Variables - * @link https://github.com/VirgilClyne/GetSomeFries/blob/main/function/getENV/getENV.min.js - * @author VirgilClyne - * @param {String} key - Persistent Store Key - * @param {Array} names - Platform Names - * @param {Object} database - Default Database - * @return {Object} { Settings, Caches, Configs } - */ -function getENV(key,names,database){let BoxJs=$.getjson(key,database),Argument={};if("undefined"!=typeof $argument&&Boolean($argument)){let arg=Object.fromEntries($argument.split("&").map((item=>item.split("="))));for(let item in arg)setPath(Argument,item,arg[item])}const Store={Settings:database?.Default?.Settings||{},Configs:database?.Default?.Configs||{},Caches:{}};Array.isArray(names)||(names=[names]);for(let name of names)Store.Settings={...Store.Settings,...database?.[name]?.Settings,...BoxJs?.[name]?.Settings,...Argument},Store.Configs={...Store.Configs,...database?.[name]?.Configs},BoxJs?.[name]?.Caches&&"string"==typeof BoxJs?.[name]?.Caches&&(BoxJs[name].Caches=JSON.parse(BoxJs?.[name]?.Caches)),Store.Caches={...Store.Caches,...BoxJs?.[name]?.Caches};return function traverseObject(o,c){for(var t in o){var n=o[t];o[t]="object"==typeof n&&null!==n?traverseObject(n,c):c(t,n)}return o}(Store.Settings,((key,value)=>("true"===value||"false"===value?value=JSON.parse(value):"string"==typeof value&&(value?.includes(",")?value=value.split(","):value&&!isNaN(value)&&(value=parseInt(value,10))),value))),Store;function setPath(object,path,value){path.split(".").reduce(((o,p,i)=>o[p]=path.split(".").length===++i?value:o[p]||{}),object)}} - -// https://github.com/VirgilClyne/GetSomeFries/blob/main/function/URL/URLs.embedded.min.js -function URLs(t){return new class{constructor(t=[]){this.name="URL v1.2.2",this.opts=t,this.json={scheme:"",host:"",path:"",type:"",query:{}}}parse(t){let s=t.match(/(?:(?.+):\/\/(?[^/]+))?\/?(?[^?]+)?\??(?[^?]+)?/)?.groups??null;return s?.path?s.paths=s?.path?.split("/"):s.path="",s?.paths&&(s.type=s?.paths?.[s?.paths?.length-1]?.split(".")?.[1]),s?.query&&(s.query=Object.fromEntries(s.query.split("&").map((t=>t.split("="))))),s}stringify(t=this.json){let s="";return t?.scheme&&t?.host&&(s+=t.scheme+"://"+t.host),t?.path&&(s+=t?.host?"/"+t.path:t.path),t?.query&&(s+="?"+Object.entries(t.query).map((t=>t.join("="))).join("&")),s}}(t)} \ No newline at end of file +const $=new Env("\uD83D\uDCFA BiliBili: \uD83D\uDEE1️ ADBlock v0.5.0(1) response"),URI=new URIs,DataBase={ADBlock:{Settings:{Switch:!0,Detail:{splash:!0,feed:!0,vertical:!1,activity:!1,story:!0,cinema:!0,view:!0,search:!0,commandDms:!1,colorfulDms:!1,MainList:!0,xlive:!0,Hot_search:!0,Hot_topics:!0,Most_visited:!0,Dynamic_adcard:!0}}},Default:{Settings:{Switch:!0}}},URL=URI.parse($request.url);$.log(`⚠ ${$.name}`,`URL: ${JSON.stringify(URL)}`,"");const METHOD=$request.method,HOST=URL.host,PATH=URL.path,PATHs=URL.paths;$.log(`⚠ ${$.name}`,`METHOD: ${METHOD}`,"");const FORMAT=($response.headers?.["Content-Type"]??$response.headers?.["content-type"])?.split(";")?.[0];function setENV(e,t,n){$.log(`☑️ ${$.name}, Set Environment Variables`,"");let{Settings:i,Caches:r,Configs:a}=getENV(e,t,n);return $.log(`✅ ${$.name}, Set Environment Variables`,`Settings: ${typeof i}`,`Settings内容: ${JSON.stringify(i)}`,""),{Settings:i,Caches:r,Configs:a}}function newRawBody({header:e,body:t},n){var i;let r,a="gzip"==n?1:"identity"==n?0:void 0==n?0:e?.[0]??0,s=(i=t.length,r=new ArrayBuffer(4),new DataView(r).setUint32(0,i,!1),new Uint8Array(r));"gzip"==n&&(t=pako.gzip(t));let o=new Uint8Array(e.length+t.length);return o.set([a],0),o.set(s,1),o.set(t,5),o}function Env(e,t){return new class{constructor(e,t){this.name=e,this.http=new class e{constructor(e){this.env=e}send(e,t="GET"){e="string"==typeof e?{url:e}:e;let n=this.get;return"POST"===t&&(n=this.post),new Promise((t,i)=>{n.call(this,e,(e,n,r)=>{e?i(e):t(n)})})}get(e){return this.send.call(this.env,e)}post(e){return this.send.call(this.env,e,"POST")}}(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.encoding="utf-8",this.startTime=(new Date).getTime(),Object.assign(this,t),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}getEnv(){return"undefined"!=typeof $environment&&$environment["surge-version"]?"Surge":"undefined"!=typeof $environment&&$environment["stash-version"]?"Stash":"undefined"!=typeof module&&module.exports?"Node.js":"undefined"!=typeof $task?"Quantumult X":"undefined"!=typeof $loon?"Loon":"undefined"!=typeof $rocket?"Shadowrocket":void 0}isNode(){return"Node.js"===this.getEnv()}isQuanX(){return"Quantumult X"===this.getEnv()}isSurge(){return"Surge"===this.getEnv()}isLoon(){return"Loon"===this.getEnv()}isShadowrocket(){return"Shadowrocket"===this.getEnv()}isStash(){return"Stash"===this.getEnv()}toObj(e,t=null){try{return JSON.parse(e)}catch{return t}}toStr(e,t=null){try{return JSON.stringify(e)}catch{return t}}getjson(e,t){let n=t,i=this.getdata(e);if(i)try{n=JSON.parse(this.getdata(e))}catch{}return n}setjson(e,t){try{return this.setdata(JSON.stringify(e),t)}catch{return!1}}getScript(e){return new Promise(t=>{this.get({url:e},(e,n,i)=>t(i))})}runScript(e,t){return new Promise(n=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=t&&t.timeout?t.timeout:r;let[a,s]=i.split("@"),o={url:`http://${s}/v1/scripting/evaluate`,body:{script_text:e,mock_type:"cron",timeout:r},headers:{"X-Key":a,Accept:"*/*"},timeout:r};this.post(o,(e,t,i)=>n(i))}).catch(e=>this.logErr(e))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");let e=this.path.resolve(this.dataFile),t=this.path.resolve(process.cwd(),this.dataFile),n=this.fs.existsSync(e),i=!n&&this.fs.existsSync(t);if(!n&&!i)return{};try{return JSON.parse(this.fs.readFileSync(n?e:t))}catch(r){return{}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");let e=this.path.resolve(this.dataFile),t=this.path.resolve(process.cwd(),this.dataFile),n=this.fs.existsSync(e),i=!n&&this.fs.existsSync(t),r=JSON.stringify(this.data);n?this.fs.writeFileSync(e,r):i?this.fs.writeFileSync(t,r):this.fs.writeFileSync(e,r)}}lodash_get(e,t,n){let i=t.replace(/\[(\d+)\]/g,".$1").split("."),r=e;for(let a of i)if(void 0===(r=Object(r)[a]))return n;return r}lodash_set(e,t,n){return Object(e)!==e||(Array.isArray(t)||(t=t.toString().match(/[^.[\]]+/g)||[]),t.slice(0,-1).reduce((e,n,i)=>Object(e[n])===e[n]?e[n]:e[n]=Math.abs(t[i+1])>>0==+t[i+1]?[]:{},e)[t[t.length-1]]=n),e}getdata(e){let t=this.getval(e);if(/^@/.test(e)){let[,n,i]=/^@(.*?)\.(.*?)$/.exec(e),r=n?this.getval(n):"";if(r)try{let a=JSON.parse(r);t=a?this.lodash_get(a,i,""):t}catch(s){t=""}}return t}setdata(e,t){let n=!1;if(/^@/.test(t)){let[,i,r]=/^@(.*?)\.(.*?)$/.exec(t),a=this.getval(i);try{let s=JSON.parse(i?"null"===a?null:a||"{}":"{}");this.lodash_set(s,r,e),n=this.setval(JSON.stringify(s),i)}catch(o){let l={};this.lodash_set(l,r,e),n=this.setval(JSON.stringify(l),i)}}else n=this.setval(e,t);return n}getval(e){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":return $persistentStore.read(e);case"Quantumult X":return $prefs.valueForKey(e);case"Node.js":return this.data=this.loaddata(),this.data[e];default:return this.data&&this.data[e]||null}}setval(e,t){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":return $persistentStore.write(e,t);case"Quantumult X":return $prefs.setValueForKey(e,t);case"Node.js":return this.data=this.loaddata(),this.data[t]=e,this.writedata(),!0;default:return this.data&&this.data[t]||null}}initGotEnv(e){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,e&&(e.headers=e.headers?e.headers:{},void 0===e.headers.Cookie&&void 0===e.cookieJar&&(e.cookieJar=this.ckjar))}get(e,t=()=>{}){switch(e.headers&&(delete e.headers["Content-Type"],delete e.headers["Content-Length"],delete e.headers["content-type"],delete e.headers["content-length"]),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:this.isSurge()&&this.isNeedRewrite&&(e.headers=e.headers||{},Object.assign(e.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(e,(e,n,i)=>{!e&&n&&(n.body=i,n.statusCode=n.status?n.status:n.statusCode,n.status=n.statusCode),t(e,n,i)});break;case"Quantumult X":this.isNeedRewrite&&(e.opts=e.opts||{},Object.assign(e.opts,{hints:!1})),$task.fetch(e).then(e=>{let{statusCode:n,statusCode:i,headers:r,body:a,bodyBytes:s}=e;t(null,{status:n,statusCode:i,headers:r,body:a,bodyBytes:s},a,s)},e=>t(e&&e.error||"UndefinedError"));break;case"Node.js":let n=require("iconv-lite");this.initGotEnv(e),this.got(e).on("redirect",(e,t)=>{try{if(e.headers["set-cookie"]){let n=e.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();n&&this.ckjar.setCookieSync(n,null),t.cookieJar=this.ckjar}}catch(i){this.logErr(i)}}).then(e=>{let{statusCode:i,statusCode:r,headers:a,rawBody:s}=e,o=n.decode(s,this.encoding);t(null,{status:i,statusCode:r,headers:a,rawBody:s,body:o},o)},e=>{let{message:i,response:r}=e;t(i,r,r&&n.decode(r.rawBody,this.encoding))})}}post(e,t=()=>{}){let n=e.method?e.method.toLocaleLowerCase():"post";switch(e.body&&e.headers&&!e.headers["Content-Type"]&&!e.headers["content-type"]&&(e.headers["content-type"]="application/x-www-form-urlencoded"),e.headers&&(delete e.headers["Content-Length"],delete e.headers["content-length"]),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:this.isSurge()&&this.isNeedRewrite&&(e.headers=e.headers||{},Object.assign(e.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient[n](e,(e,n,i)=>{!e&&n&&(n.body=i,n.statusCode=n.status?n.status:n.statusCode,n.status=n.statusCode),t(e,n,i)});break;case"Quantumult X":e.method=n,this.isNeedRewrite&&(e.opts=e.opts||{},Object.assign(e.opts,{hints:!1})),$task.fetch(e).then(e=>{let{statusCode:n,statusCode:i,headers:r,body:a,bodyBytes:s}=e;t(null,{status:n,statusCode:i,headers:r,body:a,bodyBytes:s},a,s)},e=>t(e&&e.error||"UndefinedError"));break;case"Node.js":let i=require("iconv-lite");this.initGotEnv(e);let{url:r,...a}=e;this.got[n](r,a).then(e=>{let{statusCode:n,statusCode:r,headers:a,rawBody:s}=e,o=i.decode(s,this.encoding);t(null,{status:n,statusCode:r,headers:a,rawBody:s,body:o},o)},e=>{let{message:n,response:r}=e;t(n,r,r&&i.decode(r.rawBody,this.encoding))})}}time(e,t=null){let n=t?new Date(t):new Date,i={"M+":n.getMonth()+1,"d+":n.getDate(),"H+":n.getHours(),"m+":n.getMinutes(),"s+":n.getSeconds(),"q+":Math.floor((n.getMonth()+3)/3),S:n.getMilliseconds()};for(let r in/(y+)/.test(e)&&(e=e.replace(RegExp.$1,(n.getFullYear()+"").substr(4-RegExp.$1.length))),i)RegExp("("+r+")").test(e)&&(e=e.replace(RegExp.$1,1==RegExp.$1.length?i[r]:("00"+i[r]).substr((""+i[r]).length)));return e}queryStr(e){let t="";for(let n in e){let i=e[n];null!=i&&""!==i&&("object"==typeof i&&(i=JSON.stringify(i)),t+=`${n}=${i}&`)}return t.substring(0,t.length-1)}msg(t=e,n="",i="",r){let a=e=>{switch(typeof e){case void 0:return e;case"string":switch(this.getEnv()){case"Surge":case"Stash":default:return{url:e};case"Loon":case"Shadowrocket":return e;case"Quantumult X":return{"open-url":e};case"Node.js":return}case"object":switch(this.getEnv()){case"Surge":case"Stash":case"Shadowrocket":default:return{url:e.url||e.openUrl||e["open-url"]};case"Loon":{let t;return{openUrl:e.openUrl||e.url||e["open-url"],mediaUrl:e.mediaUrl||e["media-url"]}}case"Quantumult X":{let n=e["open-url"]||e.url||e.openUrl,i;return{"open-url":n,"media-url":e["media-url"]||e.mediaUrl,"update-pasteboard":e["update-pasteboard"]||e.updatePasteboard}}case"Node.js":return}default:return}};if(!this.isMute)switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:$notification.post(t,n,i,a(r));break;case"Quantumult X":$notify(t,n,i,a(r));case"Node.js":}if(!this.isMuteLog){let s=["","==============\ud83d\udce3系统通知\ud83d\udce3=============="];s.push(t),n&&s.push(n),i&&s.push(i),console.log(s.join("\n")),this.logs=this.logs.concat(s)}}log(...e){e.length>0&&(this.logs=[...this.logs,...e]),console.log(e.join(this.logSeparator))}logErr(e,t){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":case"Quantumult X":default:this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,e);break;case"Node.js":this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,e.stack)}}wait(e){return new Promise(t=>setTimeout(t,e))}done(e={}){let t=(new Date).getTime(),n=(t-this.startTime)/1e3;switch(this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${n} \u79d2`),this.log(),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":case"Quantumult X":default:$done(e);break;case"Node.js":process.exit(1)}}}(e,t)}function getENV(e,t,n){let i=$.getjson(e,n),r={};if("undefined"!=typeof $argument&&Boolean($argument)){let a=Object.fromEntries($argument.split("&").map(e=>e.split("=").map(e=>e.replace(/\"/g,""))));for(let s in a)d(r,s,a[s])}let o={Settings:n?.Default?.Settings||{},Configs:n?.Default?.Configs||{},Caches:{}};for(let l of(Array.isArray(t)||(t=[t]),t))o.Settings={...o.Settings,...n?.[l]?.Settings,...r,...i?.[l]?.Settings},o.Configs={...o.Configs,...n?.[l]?.Configs},i?.[l]?.Caches&&"string"==typeof i?.[l]?.Caches&&(i[l].Caches=JSON.parse(i?.[l]?.Caches)),o.Caches={...o.Caches,...i?.[l]?.Caches};return function e(t,n){for(var i in t){var r=t[i];t[i]="object"==typeof r&&null!==r?e(r,n):n(i,r)}return t}(o.Settings,(e,t)=>("true"===t||"false"===t?t=JSON.parse(t):"string"==typeof t&&(t=t.includes(",")?t.split(",").map(e=>h(e)):h(t)),t)),o;function d(e,t,n){t.split(".").reduce((e,i,r)=>e[i]=t.split(".").length===++r?n:e[i]||{},e)}function h(e){return e&&!isNaN(e)&&(e=parseInt(e,10)),e}}function URIs(e){return new class{constructor(e=[]){this.name="URI v1.2.6",this.opts=e,this.json={scheme:"",host:"",path:"",query:{}}}parse(e){let t=e.match(/(?:(?.+):\/\/(?[^/]+))?\/?(?[^?]+)?\??(?[^?]+)?/)?.groups??null;if(t?.path?t.paths=t.path.split("/"):t.path="",t?.paths){let n=t.paths[t.paths.length-1];if(n?.includes(".")){let i=n.split(".");t.format=i[i.length-1]}}return t?.query&&(t.query=Object.fromEntries(t.query.split("&").map(e=>e.split("=")))),t}stringify(e=this.json){let t="";return e?.scheme&&e?.host&&(t+=e.scheme+"://"+e.host),e?.path&&(t+=e?.host?"/"+e.path:e.path),e?.query&&(t+="?"+Object.entries(e.query).map(e=>e.join("=")).join("&")),t}}(e)}$.log(`⚠ ${$.name}`,`FORMAT: ${FORMAT}`,""),(async()=>{let{Settings:e,Caches:t,Configs:n}=setENV("BiliBili","ADBlock",DataBase);switch($.log(`⚠ ${$.name}`,`Settings.Switch: ${e?.Switch}`,""),e.Switch){case!0:default:let i={code:0,message:"0",data:{}};switch(FORMAT){case void 0:case"application/x-www-form-urlencoded":case"text/plain":case"text/html":default:case"application/x-mpegURL":case"application/x-mpegurl":case"application/vnd.apple.mpegurl":case"audio/mpegurl":case"text/xml":case"text/plist":case"application/xml":case"application/plist":case"application/x-plist":break;case"text/json":case"application/json":switch(i=JSON.parse($response.body??"{}"),HOST){case"www.bilibili.com":break;case"app.bilibili.com":case"app.biliapi.net":switch(PATH){case"x/v2/splash/show":case"x/v2/splash/list":case"x/v2/splash/brand/list":case"x/v2/splash/event/list2":switch(e?.Detail?.splash){case!0:default:let r=["account","event_list","preload","show"];i.data&&(r.forEach(e=>{delete i.data[e]}),$.log(`🎉 ${$.name}`,"开屏页广告去除"));break;case!1:$.log(`🚧 ${$.name}`,"用户设置开屏页广告不去除")}break;case"x/v2/feed/index":switch(e?.Detail?.feed){case!0:default:async function a(){let e=$.getdata("@BiliBili.Index.Caches",""),t={};if(e&&e.length>0)t=e.pop(),$.log(`🎉 ${$.name}`,"推荐页空缺位填充成功");else{let n={url:$request.url,headers:$request.heders};await $.http.get(n).then(e=>{try{let t=$.toObj(e.body);t?.code===0&&t?.message==="0"?(t.data.items=t.data.items.map(e=>{let{card_type:t,card_goto:n,goto:i}=e;if(t&&n){if("banner_v8"===t&&"banner"===n)return;if("cm_v2"===t&&["ad_web_s","ad_av","ad_web_gif","ad_player","ad_inline_3d","ad_inline_eggs","ad_inline_live"].includes(n))return;if("small_cover_v10"===t&&"game"===n)return;else if("cm_double_v9"===t&&"ad_inline_av"===n)return;else if("large_cover_v9"===t&&"inline_av_v2"===n)return;else if("vertical_av"===i)return}return e}).filter(e=>void 0!==e),$.setdata(t.data.items,"@BiliBili.Index.Caches"),$.log(`🎉 ${$.name}`,"推荐页缓存数组补充成功")):$.log(`🚧 ${$.name}`,"访问推荐页尝试填补失败")}catch(n){$.logErr(n,e)}}),(e=$.getdata("@BiliBili.Index.Caches","")).length>0&&(t=e.pop(),$.log(`🎉 ${$.name}`,"推荐页空缺位填充成功"))}return $.setdata(e,"@BiliBili.Index.Caches"),t}i.data.items?.length&&(i.data.items=await Promise.all(i.data.items.map(async n=>{let{card_type:i,card_goto:r,goto:s}=n;if(i&&r){if(["banner_v8","banner_ipad_v8"].includes(i)&&"banner"===r)switch(e?.Detail?.activity){case!0:default:t.banner_hash=n.hash,$.setjson(t,"@BiliBili.ADBlock.Caches"),$.log(`🎉 ${$.name}`,"推荐页活动大图去除");return;case!1:n.banner_item&&(n.banner_item=n.banner_item.filter(e=>"ad"!==e.type||($.log(`🎉 ${$.name}`,"推荐页大图广告去除"),!1)))}else if(["cm_v2","cm_v1"].includes(i)&&["ad_web_s","ad_av","ad_web_gif"].includes(r)){if($.log(`🎉 ${$.name}`,`${r}广告去除`),URL.query?.device!=="phone")return;await a().then(e=>n=e)}else if("live"===r&&"small_cover_v9"===i){let o=e?.Detail?.blockUpLiveList;"number"==typeof o&&(o=o.toString()),o&&o.includes(n?.args?.up_id?.toString())&&($.log(`🎉 ${$.name}`,`屏蔽Up主<${n?.args?.up_name}>直播推广`),await a().then(e=>n=e))}else if("cm_v2"===i&&["ad_player","ad_inline_3d","ad_inline_eggs","ad_inline_live"].includes(r)){$.log(`🎉 ${$.name}`,`${r}广告去除`);return}else if("small_cover_v10"===i&&"game"===r){if($.log(`🎉 ${$.name}`,"游戏广告去除"),URL.query?.device!=="phone")return;await a().then(e=>n=e)}else if("cm_double_v9"===i&&"ad_inline_av"===r){$.log(`🎉 ${$.name}`,"大视频广告去除");return}else if("vertical_av"===s)switch(e?.Detail?.vertical){case!0:default:$.log(`🎉 ${$.name}`,"竖屏视频去除"),await a().then(e=>n=e);break;case!1:$.log(`🚧 ${$.name}`,"用户设置推荐页竖屏视频不去除")}}return n})),i.data.items=i.data.items.filter(e=>void 0!==e));break;case!1:$.log(`🚧 ${$.name}`,"用户设置推荐页广告不去除")}break;case"x/v2/feed/index/story":switch(e?.Detail?.story){case!0:default:i.data?.items&&(i.data.items=i.data.items.filter(e=>!(e.hasOwnProperty("ad_info")||["vertical_ad_av","vertical_pgc"].includes(e.card_goto))),$.log(`🎉 ${$.name}`,"首页短视频流广告去除"));break;case!1:$.log(`🚧 ${$.name}`,"用户设置首页短视频流广告不去除")}break;case"x/v2/search/square":switch(e?.Detail?.Hot_search){case!0:default:i.data=i.data.filter(e=>"trending"!==e.type),$.log(`🎉 ${$.name}`,"搜索页热搜内容去除");break;case!1:$.log(`🚧 ${$.name}`,"用户设置搜索页热搜内容不去除")}}break;case"api.bilibili.com":case"api.biliapi.net":switch(PATH){case"pgc/player/api/playurl":case"pgc/player/web/playurl":case"pgc/player/web/playurl/html5":case"x/player/wbi/playurl":case"pgc/view/v2/app/season":break;case"pgc/page/bangumi":case"pgc/page/cinema/tab":switch(e?.Detail?.cinema){case!0:default:i.result?.modules&&(i.result.modules.forEach(e=>{e.style.startsWith("banner")?e.items=e.items.filter(e=>e.link.includes("play")):e.style.startsWith("function")?e.items=e.items.filter(e=>e.blink.startsWith("bilibili")):[241,1283,1284,1441].includes(e.module_id)?e.items=[]:e.style.startsWith("tip")&&(e.items=[])}),$.log(`🎉 ${$.name}`,"观影页广告去除"));break;case!1:$.log(`🚧 ${$.name}`,"用户设置观影页广告不去除")}break;case"x/web-interface/wbi/index/top/feed/rcmd":switch(e?.Detail?.feed){case!0:default:i.data.item=i.data.item.filter(e=>"ad"!==e.goto),$.log(`🎉 ${$.name}`,"首页广告内容去除");break;case!1:$.log(`🚧 ${$.name}`,"用户设置首页广告不去除")}break;case"x/space/acc/info":case"x/space/wbi/acc/info":URL.query?.vmid||URL.query?.mid}break;case"api.live.bilibili.com":if("xlive/app-room/v1/index/getInfoByRoom"===PATH)switch(e?.Detail?.xlive){case!0:default:i.data?.activity_banner_info&&(i.data.activity_banner_info=null,$.log(`🎉 ${$.name}`,"直播banner广告去除")),i.data?.shopping_info&&(i.data.shopping_info={is_show:0},$.log(`🎉 ${$.name}`,"直播购物广告去除")),i.data?.new_tab_info?.outer_list?.length>0&&(i.data.new_tab_info.outer_list=i.data.new_tab_info.outer_list.filter(e=>33!==e.biz_id));break;case!1:$.log(`🚧 ${$.name}`,"用户设置直播页广告不去除")}}$response.body=JSON.stringify(i);break;case"application/protobuf":case"application/x-protobuf":case"application/vnd.google.protobuf":case"application/grpc":case"application/grpc+proto":case"applecation/octet-stream":let s=$.isQuanX()?new Uint8Array($response.bodyBytes??[]):$response.body??new Uint8Array;(function(e){"use strict";function t(e,t,n){return t<=e&&e<=n}"undefined"!=typeof module&&module.exports&&!e["encoding-indexes"]&&(e["encoding-indexes"]=require("./encoding-indexes.js")["encoding-indexes"]);var n=Math.floor;function i(e){if(void 0===e)return{};if(e===Object(e))return e;throw TypeError("Could not convert argument to dictionary")}function r(e){return 0<=e&&e<=127}var a=r;function s(e){this.tokens=[].slice.call(e),this.tokens.reverse()}function o(e,t){if(e)throw TypeError("Decoder error");return t||65533}function l(e){throw TypeError("The code point "+e+" could not be encoded.")}function d(e){return e=String(e).trim().toLowerCase(),Object.prototype.hasOwnProperty.call(f,e)?f[e]:null}s.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.pop():-1},prepend:function(e){if(Array.isArray(e))for(var t=e;t.length;)this.tokens.push(t.pop());else this.tokens.push(e)},push:function(e){if(Array.isArray(e))for(var t=e;t.length;)this.tokens.unshift(t.shift());else this.tokens.unshift(e)}};var h,u,c=[{encodings:[{labels:["unicode-1-1-utf-8","utf-8","utf8"],name:"UTF-8"}],heading:"The Encoding"},{encodings:[{labels:["866","cp866","csibm866","ibm866"],name:"IBM866"},{labels:["csisolatin2","iso-8859-2","iso-ir-101","iso8859-2","iso88592","iso_8859-2","iso_8859-2:1987","l2","latin2"],name:"ISO-8859-2"},{labels:["csisolatin3","iso-8859-3","iso-ir-109","iso8859-3","iso88593","iso_8859-3","iso_8859-3:1988","l3","latin3"],name:"ISO-8859-3"},{labels:["csisolatin4","iso-8859-4","iso-ir-110","iso8859-4","iso88594","iso_8859-4","iso_8859-4:1988","l4","latin4"],name:"ISO-8859-4"},{labels:["csisolatincyrillic","cyrillic","iso-8859-5","iso-ir-144","iso8859-5","iso88595","iso_8859-5","iso_8859-5:1988"],name:"ISO-8859-5"},{labels:["arabic","asmo-708","csiso88596e","csiso88596i","csisolatinarabic","ecma-114","iso-8859-6","iso-8859-6-e","iso-8859-6-i","iso-ir-127","iso8859-6","iso88596","iso_8859-6","iso_8859-6:1987"],name:"ISO-8859-6"},{labels:["csisolatingreek","ecma-118","elot_928","greek","greek8","iso-8859-7","iso-ir-126","iso8859-7","iso88597","iso_8859-7","iso_8859-7:1987","sun_eu_greek"],name:"ISO-8859-7"},{labels:["csiso88598e","csisolatinhebrew","hebrew","iso-8859-8","iso-8859-8-e","iso-ir-138","iso8859-8","iso88598","iso_8859-8","iso_8859-8:1988","visual"],name:"ISO-8859-8"},{labels:["csiso88598i","iso-8859-8-i","logical"],name:"ISO-8859-8-I"},{labels:["csisolatin6","iso-8859-10","iso-ir-157","iso8859-10","iso885910","l6","latin6"],name:"ISO-8859-10"},{labels:["iso-8859-13","iso8859-13","iso885913"],name:"ISO-8859-13"},{labels:["iso-8859-14","iso8859-14","iso885914"],name:"ISO-8859-14"},{labels:["csisolatin9","iso-8859-15","iso8859-15","iso885915","iso_8859-15","l9"],name:"ISO-8859-15"},{labels:["iso-8859-16"],name:"ISO-8859-16"},{labels:["cskoi8r","koi","koi8","koi8-r","koi8_r"],name:"KOI8-R"},{labels:["koi8-ru","koi8-u"],name:"KOI8-U"},{labels:["csmacintosh","mac","macintosh","x-mac-roman"],name:"macintosh"},{labels:["dos-874","iso-8859-11","iso8859-11","iso885911","tis-620","windows-874"],name:"windows-874"},{labels:["cp1250","windows-1250","x-cp1250"],name:"windows-1250"},{labels:["cp1251","windows-1251","x-cp1251"],name:"windows-1251"},{labels:["ansi_x3.4-1968","ascii","cp1252","cp819","csisolatin1","ibm819","iso-8859-1","iso-ir-100","iso8859-1","iso88591","iso_8859-1","iso_8859-1:1987","l1","latin1","us-ascii","windows-1252","x-cp1252"],name:"windows-1252"},{labels:["cp1253","windows-1253","x-cp1253"],name:"windows-1253"},{labels:["cp1254","csisolatin5","iso-8859-9","iso-ir-148","iso8859-9","iso88599","iso_8859-9","iso_8859-9:1989","l5","latin5","windows-1254","x-cp1254"],name:"windows-1254"},{labels:["cp1255","windows-1255","x-cp1255"],name:"windows-1255"},{labels:["cp1256","windows-1256","x-cp1256"],name:"windows-1256"},{labels:["cp1257","windows-1257","x-cp1257"],name:"windows-1257"},{labels:["cp1258","windows-1258","x-cp1258"],name:"windows-1258"},{labels:["x-mac-cyrillic","x-mac-ukrainian"],name:"x-mac-cyrillic"}],heading:"Legacy single-byte encodings"},{encodings:[{labels:["chinese","csgb2312","csiso58gb231280","gb2312","gb_2312","gb_2312-80","gbk","iso-ir-58","x-gbk"],name:"GBK"},{labels:["gb18030"],name:"gb18030"}],heading:"Legacy multi-byte Chinese (simplified) encodings"},{encodings:[{labels:["big5","big5-hkscs","cn-big5","csbig5","x-x-big5"],name:"Big5"}],heading:"Legacy multi-byte Chinese (traditional) encodings"},{encodings:[{labels:["cseucpkdfmtjapanese","euc-jp","x-euc-jp"],name:"EUC-JP"},{labels:["csiso2022jp","iso-2022-jp"],name:"ISO-2022-JP"},{labels:["csshiftjis","ms932","ms_kanji","shift-jis","shift_jis","sjis","windows-31j","x-sjis"],name:"Shift_JIS"}],heading:"Legacy multi-byte Japanese encodings"},{encodings:[{labels:["cseuckr","csksc56011987","euc-kr","iso-ir-149","korean","ks_c_5601-1987","ks_c_5601-1989","ksc5601","ksc_5601","windows-949"],name:"EUC-KR"}],heading:"Legacy multi-byte Korean encodings"},{encodings:[{labels:["csiso2022kr","hz-gb-2312","iso-2022-cn","iso-2022-cn-ext","iso-2022-kr"],name:"replacement"},{labels:["utf-16be"],name:"UTF-16BE"},{labels:["utf-16","utf-16le"],name:"UTF-16LE"},{labels:["x-user-defined"],name:"x-user-defined"}],heading:"Legacy miscellaneous encodings"}],f={},p=(c.forEach(function(e){e.encodings.forEach(function(e){e.labels.forEach(function(t){f[t]=e})})}),{}),_={};function m(e,t){return t&&t[e]||null}function g(e,t){return -1===(t=t.indexOf(e))?null:t}function w(t){if("encoding-indexes"in e)return e["encoding-indexes"][t];throw Error("Indexes missing. Did you forget to include encoding-indexes.js first?")}var b="utf-8";function y(e,t){if(!(this instanceof y))throw TypeError("Called as a function. Did you forget 'new'?");e=void 0!==e?String(e):b,t=i(t),this._encoding=null,this._decoder=null,this._ignoreBOM=!1,this._BOMseen=!1,this._error_mode="replacement",this._do_not_flush=!1;var n=d(e);if(null===n||"replacement"===n.name)throw RangeError("Unknown encoding: "+e);if(_[n.name])return(e=this)._encoding=n,Boolean(t.fatal)&&(e._error_mode="fatal"),Boolean(t.ignoreBOM)&&(e._ignoreBOM=!0),Object.defineProperty||(this.encoding=e._encoding.name.toLowerCase(),this.fatal="fatal"===e._error_mode,this.ignoreBOM=e._ignoreBOM),e;throw Error("Decoder not present. Did you forget to include encoding-indexes.js first?")}function k(t,n){if(!(this instanceof k))throw TypeError("Called as a function. Did you forget 'new'?");if(n=i(n),this._encoding=null,this._encoder=null,this._do_not_flush=!1,this._fatal=Boolean(n.fatal)?"fatal":"replacement",Boolean(n.NONSTANDARD_allowLegacyEncoding)){if(null===(n=d(t=void 0!==t?String(t):b))||"replacement"===n.name)throw RangeError("Unknown encoding: "+t);if(!p[n.name])throw Error("Encoder not present. Did you forget to include encoding-indexes.js first?");this._encoding=n}else this._encoding=d("utf-8"),void 0!==t&&"console"in e&&console.warn("TextEncoder constructor called with encoding label, which is ignored.");return Object.defineProperty||(this.encoding=this._encoding.name.toLowerCase()),this}function v(e){var n=e.fatal,i=0,r=0,a=0,s=128,l=191;this.handler=function(e,d){var h;if(-1===d&&0!==a)return a=0,o(n);if(-1===d)return -1;if(0===a){if(t(d,0,127))return d;if(t(d,194,223))a=1,i=31&d;else if(t(d,224,239))224===d&&(s=160),237===d&&(l=159),a=2,i=15&d;else{if(!t(d,240,244))return o(n);240===d&&(s=144),244===d&&(l=143),a=3,i=7&d}return null}return t(d,s,l)?(s=128,l=191,i=i<<6|63&d,(r+=1)!==a?null:(h=i,i=a=r=0,h)):(i=a=r=0,s=128,l=191,e.prepend(d),o(n))}}function B(e){e.fatal,this.handler=function(e,n){if(-1===n)return -1;if(a(n))return n;t(n,128,2047)?(i=1,r=192):t(n,2048,65535)?(i=2,r=224):t(n,65536,1114111)&&(i=3,r=240);for(var i,r,s=[(n>>6*i)+r];0>6*(i-1)),--i;return s}}function N(e,t){var n=t.fatal;this.handler=function(t,i){return -1===i?-1:r(i)?i:null===(i=e[i-128])?o(n):i}}function T(e,t){t.fatal,this.handler=function(t,n){var i;return -1===n?-1:a(n)?n:(null===(i=g(n,e))&&l(n),i+128)}}function x(e){var n=e.fatal,i=0,a=0,s=0;this.handler=function(e,l){var d,h,u;return -1===l&&0===i&&0===a&&0===s?-1:(-1!==l||0===i&&0===a&&0===s||(s=a=i=0,o(n)),0!==s?(d=null,t(l,48,57)&&(d=function(e){if(39419>8,e=255&e;return t?[n,e]:[e,n]}function z(e,n){var i=n.fatal,r=null,a=null;this.handler=function(n,s){var l;return -1!==s||null===r&&null===a?-1===s&&null===r&&null===a?-1:null===r?(r=s,null):(s=e?(r<<8)+s:(s<<8)+r,(r=null)!==a?(l=a,a=null,t(s,56320,57343)?65536+1024*(l-55296)+(s-56320):(n.prepend(A(s,e)),o(i))):t(s,55296,56319)?(a=s,null):t(s,56320,57343)?o(i):s):o(i)}}function W(e,n){n.fatal,this.handler=function(n,i){var r;return -1===i?-1:t(i,0,65535)?A(i,e):(r=A(55296+(i-65536>>10),e),i=A(56320+(i-65536&1023),e),r.concat(i))}}function P(e){e.fatal,this.handler=function(e,t){return -1===t?-1:r(t)?t:63360+t-128}}function M(e){e.fatal,this.handler=function(e,n){return -1===n?-1:a(n)?n:t(n,63360,63487)?n-63360+128:l(n)}}Object.defineProperty&&(Object.defineProperty(y.prototype,"encoding",{get:function(){return this._encoding.name.toLowerCase()}}),Object.defineProperty(y.prototype,"fatal",{get:function(){return"fatal"===this._error_mode}}),Object.defineProperty(y.prototype,"ignoreBOM",{get:function(){return this._ignoreBOM}})),y.prototype.decode=function(e,t){e="object"==typeof e&&e instanceof ArrayBuffer?new Uint8Array(e):"object"==typeof e&&"buffer"in e&&e.buffer instanceof ArrayBuffer?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0),t=i(t),this._do_not_flush||(this._decoder=_[this._encoding.name]({fatal:"fatal"===this._error_mode}),this._BOMseen=!1),this._do_not_flush=Boolean(t.stream);for(var n,r=new s(e),a=[];;){var o=r.read();if(-1===o||-1===(n=this._decoder.handler(r,o)))break;null!==n&&(Array.isArray(n)?a.push.apply(a,n):a.push(n))}if(!this._do_not_flush){for(;-1!==(n=this._decoder.handler(r,r.read()))&&(null!==n&&(Array.isArray(n)?a.push.apply(a,n):a.push(n)),!r.endOfStream()););this._decoder=null}return(function(e){t=["UTF-8","UTF-16LE","UTF-16BE"],n=this._encoding.name,-1===t.indexOf(n)||this._ignoreBOM||this._BOMseen||(0>10),56320+(1023&s)))}return r}).call(this,a)},Object.defineProperty&&Object.defineProperty(k.prototype,"encoding",{get:function(){return this._encoding.name.toLowerCase()}}),k.prototype.encode=function(e,t){e=void 0===e?"":String(e),t=i(t),this._do_not_flush||(this._encoder=p[this._encoding.name]({fatal:"fatal"===this._fatal})),this._do_not_flush=Boolean(t.stream);for(var n,r=new s(function(e){for(var t=String(e),n=t.length,i=0,r=[];i{e.symbol=Symbol.for("protobuf-ts/unknown"),e.onRead=(n,i,r,a,s)=>{(t(i)?i[e.symbol]:i[e.symbol]=[]).push({no:r,wireType:a,data:s})},e.onWrite=(t,n,i)=>{for(var{no:r,wireType:a,data:s}of e.list(n))i.tag(r,a).raw(s)},e.list=(n,i)=>t(n)?(n=n[e.symbol],i?n.filter(e=>e.no==i):n):[],e.last=(t,n)=>(0,e.list)(t,n).slice(-1)[0];let t=t=>t&&Array.isArray(t[e.symbol])})(d=d||{});var o,l,d,h=((o=h||{})[o.Varint=0]="Varint",o[o.Bit64=1]="Bit64",o[o.LengthDelimited=2]="LengthDelimited",o[o.StartGroup=3]="StartGroup",o[o.EndGroup=4]="EndGroup",o[o.Bit32=5]="Bit32",o);let u=Symbol.for("protobuf-ts/message-type");function c(e){let t=!1;var n=[];for(let i=0;i!i.includes(e))||!n&&i.some(e=>!r.known.includes(e)))return!1;if(!(t<1)){for(let a of r.oneofs){let s=e[a];if(!y(s))return!1;if(void 0!==s.oneofKind){var o=this.fields.find(e=>e.localName===s.oneofKind);if(!o||!this.field(s[s.oneofKind],o,n,t))return!1}}for(let l of this.fields)if(void 0===l.oneof&&!this.field(e[l.localName],l,n,t))return!1}}return!0}field(e,t,n,i){var r=t.repeat;switch(t.kind){case"scalar":return void 0===e?t.opt:r?this.scalars(e,t.T,i,t.L):this.scalar(e,t.T,t.L);case"enum":return void 0===e?t.opt:r?this.scalars(e,m.INT32,i):this.scalar(e,m.INT32);case"message":return void 0===e||(r?this.messages(e,t.T(),n,i):this.message(e,t.T(),n,i));case"map":if("object"!=typeof e||null===e)return!1;if(i<2)break;if(!this.mapKeys(e,t.K,i))return!1;switch(t.V.kind){case"scalar":return this.scalars(Object.values(e),t.V.T,i,t.V.L);case"enum":return this.scalars(Object.values(e),m.INT32,i);case"message":return this.messages(Object.values(e),t.V.T(),n,i)}}return!0}message(e,t,n,i){return n?t.isAssignable(e,i):t.is(e,i)}messages(e,t,n,i){if(!Array.isArray(e))return!1;if(!(i<2)){if(n){for(let r=0;rparseInt(e)),t,n);case m.BOOL:return this.scalars(i.slice(0,n).map(e=>"true"==e||"false"!=e&&e),t,n);default:return this.scalars(i,t,n,g.STRING)}}}function v(e){var t=typeof e;if("object"==t){if(Array.isArray(e))return"array";if(null===e)return"null"}return t}function B(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}let N="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),T=[];for(let x=0;x>4,s=a,r=2;break;case 2:n[i++]=(15&s)<<4|(60&a)>>2,s=a,r=3;break;case 3:n[i++]=(3&s)<<6|a,r=0}}if(1==r)throw Error("invalid base64 string.");return n.subarray(0,i)}function I(e){let t="",n=0,i,r=0;for(let a=0;a>2],r=(3&i)<<4,n=1;break;case 1:t+=N[r|i>>4],r=(15&i)<<2,n=2;break;case 2:t=(t+=N[r|i>>6])+N[63&i],n=0}return n&&(t=t+N[r]+"=",1==n&&(t+="=")),t}function E(){let e=0,t=0;for(let n=0;n<28;n+=7){var i=this.buf[this.pos++];if(e|=(127&i)<>4,0==(128&r))return this.assertBounds(),[e,t];for(let a=3;a<=31;a+=7){var s=this.buf[this.pos++];if(t|=(127&s)<>>i,a=!(r>>>7==0&&0==t);if(n.push(255&(a?128|r:r)),!a)return}var s=e>>>28&15|(7&t)<<4,o=t>>3!=0;if(n.push(255&(o?128|s:s)),o){for(let l=3;l<31;l+=7){var d=t>>>l,h=d>>>7!=0;if(n.push(255&(h?128|d:d)),!h)return}n.push(t>>>31&1)}}T["-".charCodeAt(0)]=N.indexOf("+"),T["_".charCodeAt(0)]=N.indexOf("/");function S(e){var t="-"==e[0];t&&(e=e.slice(1));let n=0,i=0;function r(t,r){i*=1e6,(n=1e6*n+(t=Number(e.slice(t,r))))>=4294967296&&(i+=n/4294967296|0,n%=4294967296)}return r(-24,-18),r(-18,-12),r(-12,-6),r(-6),[t,n,i]}function D(e,t){if(t<=2097151)return""+(4294967296*t+(e>>>0));var n=(e>>>24|t<<8)>>>0&16777215,t=t>>16&65535;let i=(16777215&e)+6777216*n+6710656*t,r=n+8147497*t,a=2*t;function s(e,t){return e=e?String(e):"",t?"0000000".slice(e.length)+e:e}return 1e7<=i&&(r+=Math.floor(i/1e7),i%=1e7),1e7<=r&&(a+=Math.floor(r/1e7),r%=1e7),s(a,0)+s(r,a)+s(i,1)}function L(e,t){if(0<=e){for(;127>>=7;t.push(e)}else{for(let n=0;n<9;n++)t.push(127&e|128),e>>=7;t.push(1)}}function F(){let e=this.buf[this.pos++];var t=127&e;if(0==(128&e)||(t|=(127&(e=this.buf[this.pos++]))<<7,0==(128&e))||(t|=(127&(e=this.buf[this.pos++]))<<14,0==(128&e))||(t|=(127&(e=this.buf[this.pos++]))<<21,0==(128&e)))return this.assertBounds(),t;t|=(15&(e=this.buf[this.pos++]))<<28;for(let n=5;0!=(128&e)&&n<10;n++)e=this.buf[this.pos++];if(0!=(128&e))throw Error("invalid varint");return this.assertBounds(),t>>>0}function O(){var e=new DataView(new ArrayBuffer(8));return void 0!==globalThis.BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("9223372036854775807"),UMIN:BigInt("0"),UMAX:BigInt("18446744073709551615"),C:BigInt,V:e}:void 0}let C=O();function j(e){if(!e)throw Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support")}let A=/^-?[0-9]+$/;class z{constructor(e,t){this.lo=0|e,this.hi=0|t}isZero(){return 0==this.lo&&0==this.hi}toNumber(){var e=4294967296*this.hi+(this.lo>>>0);if(Number.isSafeInteger(e))return e;throw Error("cannot convert to safe number")}}let W=class extends z{static from(e){if(C)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw Error("string is no integer");e=C.C(e);case"number":if(0===e)return this.ZERO;e=C.C(e);case"bigint":if(!e)return this.ZERO;if(eC.UMAX)throw Error("ulong too large");return C.V.setBigUint64(0,e,!0),new W(C.V.getInt32(0,!0),C.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!A.test(e))throw Error("string is no integer");var[t,n,i]=S(e);if(t)throw Error("signed value");return new W(n,i);case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw Error("number is no integer");if(e<0)throw Error("signed value for ulong");return new W(e,e/4294967296)}throw Error("unknown value "+typeof e)}toString(){return C?this.toBigInt().toString():D(this.lo,this.hi)}toBigInt(){return j(C),C.V.setInt32(0,this.lo,!0),C.V.setInt32(4,this.hi,!0),C.V.getBigUint64(0,!0)}},P=W;P.ZERO=new W(0,0);let M=class extends z{static from(e){if(C)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw Error("string is no integer");e=C.C(e);case"number":if(0===e)return this.ZERO;e=C.C(e);case"bigint":if(!e)return this.ZERO;if(eC.MAX)throw Error("ulong too large");return C.V.setBigInt64(0,e,!0),new M(C.V.getInt32(0,!0),C.V.getInt32(4,!0))}else switch(typeof e){case"string":var t,n,i;if("0"==e)return this.ZERO;if(e=e.trim(),A.test(e))return[t,i,n]=S(e),i=new M(i,n),t?i.negate():i;throw Error("string is no integer");case"number":if(0==e)return this.ZERO;if(Number.isSafeInteger(e))return 02147483647||e<-2147483648)throw Error("invalid int 32: "+e)}function X(e){if("number"!=typeof e)throw Error("invalid uint 32: "+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw Error("invalid uint 32: "+e)}function H(e){if("number"!=typeof e)throw Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>34028234663852886e22||e<-34028234663852886e22))throw Error("invalid float 32: "+e)}function J(e,t){switch(t){case g.BIGINT:return e.toBigInt();case g.NUMBER:return e.toNumber();default:return e.toString()}}class G{constructor(e){this.info=e}prepare(){if(void 0===this.fMap)for(let e of(this.fMap={},this.info.fields??[]))this.fMap[e.name]=e,this.fMap[e.jsonName]=e,this.fMap[e.localName]=e}assert(e,t,n){if(!e){let i=v(n);throw"number"!=i&&"boolean"!=i||(i=n.toString()),Error(`Cannot parse JSON ${i} for ${this.info.typeName}#`+t)}}read(e,t,n){this.prepare();var i,r,a=[];for([i,r]of Object.entries(e)){var s=this.fMap[i];if(!s){if(n.ignoreUnknownFields)continue;throw Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: `+i)}var o=s.localName;let l;if(s.oneof){if(a.includes(s.oneof))throw Error(`Multiple members of the oneof group "${s.oneof}" of ${this.info.typeName} are present in JSON.`);a.push(s.oneof),l=t[s.oneof]={oneofKind:o}}else l=t;if("map"==s.kind){if(null!==r){this.assert(B(r),s.name,r);var d,h,u=l[o];for([d,h]of Object.entries(r)){this.assert(null!==h,s.name+" map value",null);let c;switch(s.V.kind){case"message":c=s.V.T().internalJsonRead(h,n);break;case"enum":if(!1===(c=this.enum(s.V.T(),h,s.name,n.ignoreUnknownFields)))continue;break;case"scalar":c=this.scalar(h,s.V.T,s.V.L,s.name)}this.assert(void 0!==c,s.name+" map value",h);let f=d;s.K==m.BOOL&&(f="true"==f||"false"!=f&&f),u[f=this.scalar(f,s.K,g.STRING,s.name).toString()]=c}}}else if(s.repeat){if(null!==r){this.assert(Array.isArray(r),s.name,r);var p=l[o];for(let _ of r){this.assert(null!==_,s.name,null);let w;switch(s.kind){case"message":w=s.T().internalJsonRead(_,n);break;case"enum":if(!1===(w=this.enum(s.T(),_,s.name,n.ignoreUnknownFields)))continue;break;case"scalar":w=this.scalar(_,s.T,s.L,s.name)}this.assert(void 0!==w,s.name,r),p.push(w)}}}else switch(s.kind){case"message":null===r&&"google.protobuf.Value"!=s.T().typeName?this.assert(void 0===s.oneof,s.name+" (oneof member)",null):l[o]=s.T().internalJsonRead(r,n,l[o]);break;case"enum":var b=this.enum(s.T(),r,s.name,n.ignoreUnknownFields);!1!==b&&(l[o]=b);break;case"scalar":l[o]=this.scalar(r,s.T,s.L,s.name)}}}enum(e,t,n,i){if("google.protobuf.NullValue"==e[0]&&Z(null===t,`Unable to parse field ${this.info.typeName}#${n}, enum ${e[0]} only accepts null.`),null===t)return 0;switch(typeof t){case"number":return Z(Number.isInteger(t),`Unable to parse field ${this.info.typeName}#${n}, enum can only be integral number, got ${t}.`),t;case"string":let r=t;e[2]&&t.substring(0,e[2].length)===e[2]&&(r=t.substring(e[2].length));var a=e[1][r];return(void 0!==a||!i)&&(Z("number"==typeof a,`Unable to parse field ${this.info.typeName}#${n}, enum ${e[0]} has no value for "${t}".`),a)}Z(!1,`Unable to parse field ${this.info.typeName}#${n}, cannot parse enum value from ${typeof t}".`)}scalar(e,t,n,i){let r;try{switch(t){case m.DOUBLE:case m.FLOAT:if(null===e)return 0;if("NaN"===e)return Number.NaN;if("Infinity"===e)return Number.POSITIVE_INFINITY;if("-Infinity"===e)return Number.NEGATIVE_INFINITY;if(""===e)r="empty string";else if("string"==typeof e&&e.trim().length!==e.length)r="extra whitespace";else if("string"==typeof e||"number"==typeof e){var a=Number(e);if(Number.isNaN(a))r="not a number";else{if(Number.isFinite(a))return t==m.FLOAT&&H(a),a;r="too large or small"}}break;case m.INT32:case m.FIXED32:case m.SFIXED32:case m.SINT32:case m.UINT32:if(null===e)return 0;let s;if("number"==typeof e?s=e:""===e?r="empty string":"string"==typeof e&&(e.trim().length!==e.length?r="extra whitespace":s=Number(e)),void 0===s)break;return(t==m.UINT32?X:K)(s),s;case m.INT64:case m.SFIXED64:case m.SINT64:if(null===e)return J(V.ZERO,n);if("number"!=typeof e&&"string"!=typeof e)break;return J(V.from(e),n);case m.FIXED64:case m.UINT64:if(null===e)return J(P.ZERO,n);if("number"!=typeof e&&"string"!=typeof e)break;return J(P.from(e),n);case m.BOOL:if(null===e)return!1;if("boolean"!=typeof e)break;return e;case m.STRING:if(null===e)return"";if("string"!=typeof e){r="extra whitespace";break}try{encodeURIComponent(e)}catch(o){break}return e;case m.BYTES:if(null===e||""===e)return new Uint8Array(0);if("string"!=typeof e)break;return R(e)}}catch(l){r=l.message}this.assert(!1,i+(r?" - "+r:""),e)}}class Y{constructor(e){this.fields=e.fields??[]}write(e,t){var n,i,r={},a=e;for(let s of this.fields)s.oneof?(n=a[s.oneof]).oneofKind===s.localName&&(i="scalar"==s.kind||"enum"==s.kind?{...t,emitDefaultValues:!0}:t,Z(void 0!==(n=this.field(s,n[s.localName],i))),r[t.useProtoFieldName?s.name:s.jsonName]=n):void 0!==(i=this.field(s,a[s.localName],t))&&(r[t.useProtoFieldName?s.name:s.jsonName]=i);return r}field(e,t,n){let i;if("map"==e.kind){Z("object"==typeof t&&null!==t);var r={};switch(e.V.kind){case"scalar":for(var[a,s]of Object.entries(t))Z(void 0!==(s=this.scalar(e.V.T,s,e.name,!1,!0))),r[a.toString()]=s;break;case"message":var o,l,d=e.V.T();for([o,l]of Object.entries(t)){var h=this.message(d,l,e.name,n);Z(void 0!==h),r[o.toString()]=h}break;case"enum":var u,c,f=e.V.T();for([u,c]of Object.entries(t)){Z(void 0===c||"number"==typeof c);var p=this.enum(f,c,e.name,!1,!0,n.enumAsInteger);Z(void 0!==p),r[u.toString()]=p}}(n.emitDefaultValues||0[e.no,e])))}read(e,t,n,i){this.prepare();for(var r=void 0===i?e.len:e.pos+i;e.pose.no-t.no))}write(e,t,n){for(let i of(this.prepare(),this.fields)){let r,a,s=i.repeat,o=i.localName;if(i.oneof){var l=e[i.oneof];if(l.oneofKind!==o)continue;r=l[o],a=!0}else r=e[o],a=!1;switch(i.kind){case"scalar":case"enum":var h="enum"==i.kind?m.INT32:i.T;if(s){if(Z(Array.isArray(r)),s==w.PACKED)this.packed(t,h,i.no,r);else for(let u of r)this.scalar(t,h,i.no,u,!0)}else void 0===r?Z(i.opt):this.scalar(t,h,i.no,r,a||i.opt);break;case"message":if(s)for(let c of(Z(Array.isArray(r)),r))this.message(t,n,i.T(),i.no,c);else this.message(t,n,i.T(),i.no,r);break;case"map":for(var[f,p]of(Z("object"==typeof r&&null!==r),Object.entries(r)))this.mapEntry(t,n,i,f,p)}}var _=n.writeUnknownFields;!1!==_&&(!0===_?d.onWrite:_)(this.info.typeName,e,t)}mapEntry(e,t,n,i,r){e.tag(n.no,h.LengthDelimited),e.fork();let a=i;switch(n.K){case m.INT32:case m.FIXED32:case m.UINT32:case m.SFIXED32:case m.SINT32:a=Number.parseInt(i);break;case m.BOOL:Z("true"==i||"false"==i),a="true"==i}switch(this.scalar(e,n.K,1,a,!0),n.V.kind){case"scalar":this.scalar(e,n.V.T,2,r,!0);break;case"enum":this.scalar(e,m.INT32,2,r,!0);break;case"message":this.message(e,t,n.V.T(),2,r)}e.join()}message(e,t,n,i,r){void 0!==r&&(n.internalBinaryWrite(r,e.tag(i,h.LengthDelimited).fork(),t),e.join())}scalar(e,t,n,i,r){var[t,a,s]=this.scalarInfo(t,i);s&&!r||(e.tag(n,t),e[a](i))}packed(e,t,n,i){if(i.length){Z(t!==m.BYTES&&t!==m.STRING),e.tag(n,h.LengthDelimited),e.fork();var[,r]=this.scalarInfo(t);for(let a=0;anew ep};function ef(e){return e?{...ec,...e}:ec}class ep{constructor(e){this.stack=[],this.textEncoder=e??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let t=0;t>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(X(e);127>>=7;return this.buf.push(e),this}int32(e){return K(e),L(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){return e=this.textEncoder.encode(e),this.uint32(e.byteLength),this.raw(e)}float(e){H(e);var t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){var t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){X(e);var t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){K(e);var t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return K(e),L(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){var t=new Uint8Array(8),n=new DataView(t.buffer),e=V.from(e);return n.setInt32(0,e.lo,!0),n.setInt32(4,e.hi,!0),this.raw(t)}fixed64(e){var t=new Uint8Array(8),n=new DataView(t.buffer),e=P.from(e);return n.setInt32(0,e.lo,!0),n.setInt32(4,e.hi,!0),this.raw(t)}int64(e){return U((e=V.from(e)).lo,e.hi,this.buf),this}sint64(e){var e=V.from(e),t=e.hi>>31;return U(e.lo<<1^t,(e.hi<<1|e.lo>>>31)^t,this.buf),this}uint64(e){return U((e=P.from(e)).lo,e.hi,this.buf),this}}let e_={readUnknownField:!0,readerFactory:e=>new em(e)};function e$(e){return e?{...e_,...e}:e_}class em{constructor(e,t){this.varint64=E,this.uint32=F,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=t??new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0})}tag(){var e=this.uint32(),t=e>>>3,e=7&e;if(t<=0||e<0||5this.len)throw RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){var e=this.uint32();return e>>>1^-(1&e)}int64(){return new V(...this.varint64())}uint64(){return new P(...this.varint64())}sint64(){var[e,t]=this.varint64(),n=-(1&e),e=(e>>>1|(1&t)<<31)^n,t=t>>>1^n;return new V(e,t)}bool(){var[e,t]=this.varint64();return 0!==e||0!==t}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return new P(this.sfixed32(),this.sfixed32())}sfixed64(){return new V(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){var e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}class eg{constructor(e,t,n){this.defaultCheckDepth=16,this.typeName=e,this.fields=t.map(b),this.options=n??{},this.refTypeCheck=new k(this),this.refJsonReader=new G(this),this.refJsonWriter=new Y(this),this.refBinReader=new Q(this),this.refBinWriter=new ee(this)}create(e){var t=et(this);return void 0!==e&&en(this,t,e),t}clone(e){var t=this.create();return en(this,t,e),t}equals(e,t){return eo(this,e,t)}is(e,t=this.defaultCheckDepth){return this.refTypeCheck.is(e,t,!1)}isAssignable(e,t=this.defaultCheckDepth){return this.refTypeCheck.is(e,t,!0)}mergePartial(e,t){en(this,e,t)}fromBinary(e,t){return t=e$(t),this.internalBinaryRead(t.readerFactory(e),e.byteLength,t)}fromJson(e,t){return this.internalJsonRead(e,ea(t))}fromJsonString(e,t){return e=JSON.parse(e),this.fromJson(e,t)}toJson(e,t){return this.internalJsonWrite(e,es(t))}toJsonString(e,t){return JSON.stringify(e=this.toJson(e,t),null,(null==t?void 0:t.prettySpaces)??0)}toBinary(e,t){return t=ef(t),this.internalBinaryWrite(e,t.writerFactory(),t).finish()}internalJsonRead(e,t,n){if(null===e||"object"!=typeof e||Array.isArray(e))throw Error(`Unable to parse message ${this.typeName} from JSON ${v(e)}.`);return n=n??this.create(),this.refJsonReader.read(e,n,t),n}internalJsonWrite(e,t){return this.refJsonWriter.write(e,t)}internalBinaryWrite(e,t,n){return this.refBinWriter.write(e,t,n),t}internalBinaryRead(e,t,n,i){return i=i??this.create(),this.refBinReader.read(e,i,n,t),i}}switch(FORMAT){case"application/protobuf":case"application/x-protobuf":case"application/vnd.google.protobuf":break;case"application/grpc":case"application/grpc+proto":!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).pako={})}(this,function(e){"use strict";function t(e){let t=e.length;for(;--t>=0;)e[t]=0}let n=286,i=30,r=15,a=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),s=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),o=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),l=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=Array(576);t(d);let h=Array(60);t(h);let u=Array(512);t(u);let c=Array(256);t(c);let f=Array(29);t(f);let p=Array(i);function _(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}let m,g,w;function b(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}t(p);let y=e=>e<256?u[e]:u[256+(e>>>7)],k=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},v=(e,t,n)=>{e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<{v(e,n[2*t],n[2*t+1])},N=(e,t)=>{let n=0;do n|=1&e,e>>>=1,n<<=1;while(--t>0);return n>>>1},T=(e,t,n)=>{let i=Array(16),a,s,o=0;for(a=1;a<=r;a++)i[a]=o=o+n[a-1]<<1;for(s=0;s<=t;s++){let l=e[2*s+1];0!==l&&(e[2*s]=N(i[l]++,l))}},x=e=>{let t;for(t=0;t{e.bi_valid>8?k(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},I=(e,t,n,i)=>{let r=2*t,a=2*n;return e[r]{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r{let i,r,o,l,d=0;if(0!==e.last_lit)do i=e.pending_buf[e.d_buf+2*d]<<8|e.pending_buf[e.d_buf+2*d+1],r=e.pending_buf[e.l_buf+d],d++,0===i?B(e,r,t):(B(e,(o=c[r])+256+1,t),0!==(l=a[o])&&v(e,r-=f[o],l),o=y(--i),B(e,o,n),0!==(l=s[o])&&v(e,i-=p[o],l));while(d{let n=t.dyn_tree,i=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.elems,o,l,d,h=-1;for(e.heap_len=0,e.heap_max=573,o=0;o>1;o>=1;o--)E(e,n,o);d=s;do o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],E(e,n,1),l=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=l,n[2*d]=n[2*o]+n[2*l],e.depth[d]=(e.depth[o]>=e.depth[l]?e.depth[o]:e.depth[l])+1,n[2*o+1]=n[2*l+1]=d,e.heap[1]=d++,E(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{let n=t.dyn_tree,i=t.max_code,a=t.stat_desc.static_tree,s=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,l=t.stat_desc.extra_base,d=t.stat_desc.max_length,h,u,c,f,p,_,m=0;for(f=0;f<=r;f++)e.bl_count[f]=0;for(n[2*e.heap[e.heap_max]+1]=0,h=e.heap_max+1;h<573;h++)(f=n[2*n[2*(u=e.heap[h])+1]+1]+1)>d&&(f=d,m++),n[2*u+1]=f,u>i||(e.bl_count[f]++,p=0,u>=l&&(p=o[u-l]),_=n[2*u],e.opt_len+=_*(f+p),s&&(e.static_len+=_*(a[2*u+1]+p)));if(0!==m){do{for(f=d-1;0===e.bl_count[f];)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[d]--,m-=2}while(m>0);for(f=d;0!==f;f--)for(u=e.bl_count[f];0!==u;)(c=e.heap[--h])>i||(n[2*c+1]!==f&&(e.opt_len+=(f-n[2*c+1])*n[2*c],n[2*c+1]=f),u--)}})(e,t),T(n,h,e.bl_count)},D=(e,t,n)=>{let i,r,a=-1,s=t[1],o=0,l=7,d=4;for(0===s&&(l=138,d=3),t[2*(n+1)+1]=65535,i=0;i<=n;i++)r=s,s=t[2*(i+1)+1],++o{let i,r,a=-1,s=t[1],o=0,l=7,d=4;for(0===s&&(l=138,d=3),i=0;i<=n;i++)if(r=s,s=t[2*(i+1)+1],!(++o{var r,a,s,o;v(e,0+(i?1:0),3),r=e,a=t,s=n,o=!0,R(r),o&&(k(r,s),k(r,~s)),r.pending_buf.set(r.window.subarray(a,a+s),r.pending),r.pending+=s};var C={_tr_init(e){F||((()=>{let e,t,l,b,y,k=Array(16);for(l=0,b=0;b<28;b++)for(f[b]=l,e=0;e<1<>=7;b0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),S(e,e.l_desc),S(e,e.d_desc),s=(e=>{let t;for(D(e,e.dyn_ltree,e.l_desc.max_code),D(e,e.dyn_dtree,e.d_desc.max_code),S(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*l[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),r=e.opt_len+3+7>>>3,(a=e.static_len+3+7>>>3)<=r&&(r=a)):r=a=n+5,n+4<=r&&-1!==t?O(e,t,n,i):4===e.strategy||a===r?(v(e,2+(i?1:0),3),U(e,d,h)):(v(e,4+(i?1:0),3),((e,t,n,i)=>{let r;for(v(e,t-257,5),v(e,n-1,5),v(e,i-4,4),r=0;r(e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(c[n]+256+1)]++,e.dyn_dtree[2*y(t)]++),e.last_lit===e.lit_bufsize-1),_tr_align(e){var t;v(e,2,3),B(e,256,d),16===(t=e).bi_valid?(k(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}},j=(e,t,n,i)=>{let r=65535&e|0,a=e>>>16&65535|0,s=0;for(;0!==n;){s=n>2e3?2e3:n,n-=s;do a=a+(r=r+t[i++]|0)|0;while(--s);r%=65521,a%=65521}return r|a<<16|0};let A=new Uint32Array((()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t})());var z=(e,t,n,i)=>{let r=A,a=i+n;e^=-1;for(let s=i;s>>8^r[255&(e^t[s])];return -1^e},W={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},P={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};let{_tr_init:M,_tr_stored_block:V,_tr_flush_block:Z,_tr_tally:K,_tr_align:X}=C,{Z_NO_FLUSH:H,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:G,Z_FINISH:Y,Z_BLOCK:q,Z_OK:Q,Z_STREAM_END:ee,Z_STREAM_ERROR:et,Z_DATA_ERROR:en,Z_BUF_ERROR:ei,Z_DEFAULT_COMPRESSION:er,Z_FILTERED:ea,Z_HUFFMAN_ONLY:es,Z_RLE:eo,Z_FIXED:el,Z_DEFAULT_STRATEGY:ed,Z_UNKNOWN:eh,Z_DEFLATED:eu}=P,ec=103,ef=113,ep=666,e_=(e,t)=>(e.msg=W[t],t),e$=e=>(e<<1)-(e>4?9:0),em=e=>{let t=e.length;for(;--t>=0;)e[t]=0},eg=(e,t,n)=>(t<{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))},e0=(e,t)=>{Z(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ew(e.strm)},eb=(e,t)=>{e.pending_buf[e.pending++]=t},ey=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},e8=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),1===e.state.wrap?e.adler=j(e.adler,t,r,n):2===e.state.wrap&&(e.adler=z(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},ek=(e,t)=>{let n,i,r=e.max_chain_length,a=e.strstart,s=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,d=e.window,h=e.w_mask,u=e.prev,c=e.strstart+258,f=d[a+s-1],p=d[a+s];e.prev_length>=e.good_match&&(r>>=2),o>e.lookahead&&(o=e.lookahead);do if(d[(n=t)+s]===p&&d[n+s-1]===f&&d[n]===d[a]&&d[++n]===d[a+1]){a+=2,n++;do;while(d[++a]===d[++n]&&d[++a]===d[++n]&&d[++a]===d[++n]&&d[++a]===d[++n]&&d[++a]===d[++n]&&d[++a]===d[++n]&&d[++a]===d[++n]&&d[++a]===d[++n]&&as){if(e.match_start=t,s=i,i>=o)break;f=d[a+s-1],p=d[a+s]}}while((t=u[t&h])>l&&0!=--r);return s<=e.lookahead?s:e.lookahead},e3=e=>{let t=e.w_size,n,i,r,a,s;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-262)){e.window.set(e.window.subarray(t,t+t),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,n=i=e.hash_size;do r=e.head[--n],e.head[n]=r>=t?r-t:0;while(--i);n=i=t;do r=e.prev[--n],e.prev[n]=r>=t?r-t:0;while(--i);a+=t}if(0===e.strm.avail_in)break;if(i=e8(e.strm,e.window,e.strstart+e.lookahead,a),e.lookahead+=i,e.lookahead+e.insert>=3)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=eg(e,e.ins_h,e.window[s+1]);e.insert&&(e.ins_h=eg(e,e.ins_h,e.window[s+3-1]),e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<262&&0!==e.strm.avail_in)},ev=(e,t)=>{let n,i;for(;;){if(e.lookahead<262){if(e3(e),e.lookahead<262&&t===H)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=eg(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==n&&e.strstart-n<=e.w_size-262&&(e.match_length=ek(e,n)),e.match_length>=3){if(i=K(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do e.strstart++,e.ins_h=eg(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=eg(e,e.ins_h,e.window[e.strstart+1])}else i=K(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(e0(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Y?(e0(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(e0(e,!1),0===e.strm.avail_out)?1:2},e1=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<262){if(e3(e),e.lookahead<262&&t===H)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=eg(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==n&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,i=K(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=eg(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,i&&(e0(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((i=K(e,0,e.window[e.strstart-1]))&&e0(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=K(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Y?(e0(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(e0(e,!1),0===e.strm.avail_out)?1:2};function e4(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}let e6=[new e4(0,0,0,0,(e,t)=>{let n=65535;for(n>e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(e3(e),0===e.lookahead&&t===H)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;let i=e.block_start+n;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,e0(e,!1),0===e.strm.avail_out)||e.strstart-e.block_start>=e.w_size-262&&(e0(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Y?(e0(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(e0(e,!1),e.strm.avail_out),1)}),new e4(4,4,8,4,ev),new e4(4,5,16,8,ev),new e4(4,6,32,32,ev),new e4(4,4,16,16,e1),new e4(8,16,32,32,e1),new e4(8,16,128,128,e1),new e4(8,32,128,256,e1),new e4(32,128,258,1024,e1),new e4(32,258,258,4096,e1)];function e2(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=eu,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),em(this.dyn_ltree),em(this.dyn_dtree),em(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),em(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),em(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}let eB=e=>{if(!e||!e.state)return e_(e,et);e.total_in=e.total_out=0,e.data_type=eh;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?42:ef,e.adler=2===t.wrap?0:1,t.last_flush=H,M(t),Q},e9=e=>{var t;let n=eB(e);return n===Q&&((t=e.state).window_size=2*t.w_size,em(t.head),t.max_lazy_match=e6[t.level].max_lazy,t.good_match=e6[t.level].good_length,t.nice_match=e6[t.level].nice_length,t.max_chain_length=e6[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=2,t.match_available=0,t.ins_h=0),n},eN=(e,t,n,i,r,a)=>{if(!e)return et;let s=1;if(t===er&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>9||n!==eu||i<8||i>15||t<0||t>9||a<0||a>el)return e_(e,et);8===i&&(i=9);let o=new e2;return e.state=o,o.strm=e,o.wrap=s,o.gzhead=null,o.w_bits=i,o.w_size=1<eN(e,t,eu,15,8,ed),deflateInit2:eN,deflateReset:e9,deflateResetKeep:eB,deflateSetHeader:(e,t)=>e&&e.state?2!==e.state.wrap?et:(e.state.gzhead=t,Q):et,deflate(e,t){let n,i;if(!e||!e.state||t>q||t<0)return e?e_(e,et):et;let r=e.state;if(!e.output||!e.input&&0!==e.avail_in||r.status===ep&&t!==Y)return e_(e,0===e.avail_out?ei:et);r.strm=e;let a=r.last_flush;if(r.last_flush=t,42===r.status){if(2===r.wrap)e.adler=0,eb(r,31),eb(r,139),eb(r,8),r.gzhead?(eb(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),eb(r,255&r.gzhead.time),eb(r,r.gzhead.time>>8&255),eb(r,r.gzhead.time>>16&255),eb(r,r.gzhead.time>>24&255),eb(r,9===r.level?2:r.strategy>=es||r.level<2?4:0),eb(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(eb(r,255&r.gzhead.extra.length),eb(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(e.adler=z(e.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(eb(r,0),eb(r,0),eb(r,0),eb(r,0),eb(r,0),eb(r,9===r.level?2:r.strategy>=es||r.level<2?4:0),eb(r,3),r.status=ef);else{let s=eu+(r.w_bits-8<<4)<<8,o=-1;s|=(o=r.strategy>=es||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(s|=32),s+=31-s%31,r.status=ef,ey(r,s),0!==r.strstart&&(ey(r,e.adler>>>16),ey(r,65535&e.adler)),e.adler=1}}if(69===r.status){if(r.gzhead.extra){for(n=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>n&&(e.adler=z(e.adler,r.pending_buf,r.pending-n,n)),ew(e),n=r.pending,r.pending!==r.pending_buf_size));)eb(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>n&&(e.adler=z(e.adler,r.pending_buf,r.pending-n,n)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73}if(73===r.status){if(r.gzhead.name){n=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>n&&(e.adler=z(e.adler,r.pending_buf,r.pending-n,n)),ew(e),n=r.pending,r.pending===r.pending_buf_size)){i=1;break}i=r.gzindexn&&(e.adler=z(e.adler,r.pending_buf,r.pending-n,n)),0===i&&(r.gzindex=0,r.status=91)}else r.status=91}if(91===r.status){if(r.gzhead.comment){n=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>n&&(e.adler=z(e.adler,r.pending_buf,r.pending-n,n)),ew(e),n=r.pending,r.pending===r.pending_buf_size)){i=1;break}i=r.gzindexn&&(e.adler=z(e.adler,r.pending_buf,r.pending-n,n)),0===i&&(r.status=ec)}else r.status=ec}if(r.status===ec&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&ew(e),r.pending+2<=r.pending_buf_size&&(eb(r,255&e.adler),eb(r,e.adler>>8&255),e.adler=0,r.status=ef)):r.status=ef),0!==r.pending){if(ew(e),0===e.avail_out)return r.last_flush=-1,Q}else if(0===e.avail_in&&e$(t)<=e$(a)&&t!==Y)return e_(e,ei);if(r.status===ep&&0!==e.avail_in)return e_(e,ei);if(0!==e.avail_in||0!==r.lookahead||t!==H&&r.status!==ep){let l=r.strategy===es?((e,t)=>{let n;for(;;){if(0===e.lookahead&&(e3(e),0===e.lookahead)){if(t===H)return 1;break}if(e.match_length=0,n=K(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(e0(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Y?(e0(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(e0(e,!1),0===e.strm.avail_out)?1:2})(r,t):r.strategy===eo?((e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=258){if(e3(e),e.lookahead<=258&&t===H)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=s[r=e.strstart-1])===s[++r]&&i===s[++r]&&i===s[++r]){a=e.strstart+258;do;while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=K(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=K(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(e0(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Y?(e0(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(e0(e,!1),0===e.strm.avail_out)?1:2})(r,t):e6[r.level].func(r,t);if(3!==l&&4!==l||(r.status=ep),1===l||3===l)return 0===e.avail_out&&(r.last_flush=-1),Q;if(2===l&&(t===J?X(r):t!==q&&(V(r,0,0,!1),t===G&&(em(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),ew(e),0===e.avail_out))return r.last_flush=-1,Q}return t!==Y?Q:r.wrap<=0?ee:(2===r.wrap?(eb(r,255&e.adler),eb(r,e.adler>>8&255),eb(r,e.adler>>16&255),eb(r,e.adler>>24&255),eb(r,255&e.total_in),eb(r,e.total_in>>8&255),eb(r,e.total_in>>16&255),eb(r,e.total_in>>24&255)):(ey(r,e.adler>>>16),ey(r,65535&e.adler)),ew(e),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?Q:ee)},deflateEnd(e){if(!e||!e.state)return et;let t=e.state.status;return 42!==t&&69!==t&&73!==t&&91!==t&&t!==ec&&t!==ef&&t!==ep?e_(e,et):(e.state=null,t===ef?e_(e,en):Q)},deflateSetDictionary(e,t){let n=t.length;if(!e||!e.state)return et;let i=e.state,r=i.wrap;if(2===r||1===r&&42!==i.status||i.lookahead)return et;if(1===r&&(e.adler=j(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){0===r&&(em(i.head),i.strstart=0,i.block_start=0,i.insert=0);let a=new Uint8Array(i.w_size);a.set(t.subarray(n-i.w_size,n),0),t=a,n=i.w_size}let s=e.avail_in,o=e.next_in,l=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,e3(i);i.lookahead>=3;){let d=i.strstart,h=i.lookahead-2;do i.ins_h=eg(i,i.ins_h,i.window[d+3-1]),i.prev[d&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=d,d++;while(--h);i.strstart=d,i.lookahead=2,e3(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,e.next_in=o,e.input=l,e.avail_in=s,i.wrap=r,Q},deflateInfo:"pako deflate (from Nodeca project)"};let ex=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var e7=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if("object"!=typeof n)throw TypeError(n+"must be non-object");for(let i in n)ex(n,i)&&(e[i]=n[i])}}return e},eR=e=>{let t=0;for(let n=0,i=e.length;n=252?6:eS>=248?5:eS>=240?4:eS>=224?3:eS>=192?2:1;eU[254]=eU[254]=1;var e5=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,n,i,r,a,s=e.length,o=0;for(r=0;r>>6,t[a++]=128|63&n):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|63&n):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|63&n);return t},eD=(e,t)=>{let n=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let i,r,a=Array(2*n);for(r=0,i=0;i4)a[r++]=65533,i+=o-1;else{for(s&=2===o?31:3===o?15:7;o>1&&i1?a[r++]=65533:s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|1023&s)}}return((e,t)=>{if(t<65534&&e.subarray&&eI)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let i=0;i{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+eU[e[n]]>t?n:t},eF=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};let eO=Object.prototype.toString,{Z_NO_FLUSH:eC,Z_SYNC_FLUSH:ej,Z_FULL_FLUSH:eA,Z_FINISH:ez,Z_OK:eW,Z_STREAM_END:eP,Z_DEFAULT_COMPRESSION:eM,Z_DEFAULT_STRATEGY:eV,Z_DEFLATED:eZ}=P;function eK(e){this.options=e7({level:eM,method:eZ,chunkSize:16384,windowBits:15,memLevel:8,strategy:eV},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new eF,this.strm.avail_out=0;let n=eT.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==eW)throw Error(W[n]);if(t.header&&eT.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(i="string"==typeof t.dictionary?e5(t.dictionary):"[object ArrayBuffer]"===eO.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(n=eT.deflateSetDictionary(this.strm,i))!==eW)throw Error(W[n]);this._dict_set=!0}}function eX(e,t){let n=new eK(t);if(n.push(e,!0),n.err)throw n.msg||W[n.err];return n.result}eK.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r,a;if(this.ended)return!1;for(a=t===~~t?t:!0===t?ez:eC,"string"==typeof e?n.input=e5(e):"[object ArrayBuffer]"===eO.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;)if(0===n.avail_out&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),(a===ej||a===eA)&&n.avail_out<=6)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else{if((r=eT.deflate(n,a))===eP)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=eT.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===eW;if(0!==n.avail_out){if(a>0&&n.next_out>0)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else if(0===n.avail_in)break}else this.onData(n.output)}return!0},eK.prototype.onData=function(e){this.chunks.push(e)},eK.prototype.onEnd=function(e){e===eW&&(this.result=eR(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var eH=function(e,t){let n,i,r,a,s,o,l,d,h,u,c,f,p,_,m,g,w,b,y,k,v,B,N,T,x=e.state;n=e.next_in,N=e.input,i=n+(e.avail_in-5),r=e.next_out,T=e.output,a=r-(t-e.avail_out),s=r+(e.avail_out-257),o=x.dmax,l=x.wsize,d=x.whave,h=x.wnext,u=x.window,c=x.hold,f=x.bits,p=x.lencode,_=x.distcode,m=(1<>>=b=w>>>24,f-=b,0==(b=w>>>16&255))T[r++]=65535&w;else{if(!(16&b)){if(0==(64&b)){w=p[(65535&w)+(c&(1<>>=b,f-=b),f<15&&(c+=N[n++]<>>=b=w>>>24,f-=b,!(16&(b=w>>>16&255))){if(0==(64&b)){w=_[(65535&w)+(c&(1<o){e.msg="invalid distance too far back",x.mode=30;break t}if(c>>>=b,f-=b,k>(b=r-a)){if((b=k-b)>d&&x.sane){e.msg="invalid distance too far back",x.mode=30;break t}if(v=0,B=u,0===h){if(v+=l-b,b2;)T[r++]=B[v++],T[r++]=B[v++],T[r++]=B[v++],y-=3;y&&(T[r++]=B[v++],y>1&&(T[r++]=B[v++]))}else{v=r-k;do T[r++]=T[v++],T[r++]=T[v++],T[r++]=T[v++],y-=3;while(y>2);y&&(T[r++]=T[v++],y>1&&(T[r++]=T[v++]))}break}}break}}while(n>3,f-=y<<3,c&=(1<{let l=o.bits,d,h,u,c,f,p,_=0,m=0,g=0,w=0,b=0,y=0,k=0,v=0,B=0,N=0,T=null,x=0,R=new Uint16Array(16),I=new Uint16Array(16),E,U,S,D=null,L=0;for(_=0;_<=eJ;_++)R[_]=0;for(m=0;m=1&&0===R[w];w--);if(b>w&&(b=w),0===w)return r[a++]=20971520,r[a++]=20971520,o.bits=1,0;for(g=1;g0&&(0===e||1!==w))return -1;for(I[1]=0,_=1;_852||2===e&&B>592)return 1;for(;;){E=_-k,s[m]p?(U=D[L+s[m]],S=T[x+s[m]]):(U=96,S=0),d=1<<_-k,g=h=1<>k)+(h-=d)]=E<<24|U<<16|S|0;while(0!==h);for(d=1<<_-1;N&d;)d>>=1;if(0!==d?(N&=d-1,N+=d):N=0,m++,0==--R[_]){if(_===w)break;_=t[n+s[m]]}if(_>b&&(N&c)!==u){for(0===k&&(k=b),f+=g,v=1<<(y=_-k);y+k852||2===e&&B>592)return 1;r[u=N&c]=b<<24|y<<16|f-a|0}}return 0!==N&&(r[f+N]=_-k<<24|4194304),o.bits=b,0};let{Z_FINISH:tt,Z_BLOCK:tn,Z_TREES:ti,Z_OK:tr,Z_STREAM_END:ta,Z_NEED_DICT:ts,Z_STREAM_ERROR:to,Z_DATA_ERROR:tl,Z_MEM_ERROR:td,Z_BUF_ERROR:th,Z_DEFLATED:tu}=P,tc=12,tf=30,tp=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function t_(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}let t$=e=>{if(!e||!e.state)return to;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,tr},tm=e=>{if(!e||!e.state)return to;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,t$(e)},tg=(e,t)=>{let n;if(!e||!e.state)return to;let i=e.state;return t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?to:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,tm(e))},tw=(e,t)=>{if(!e)return to;let n=new t_;e.state=n,n.window=null;let i=tg(e,t);return i!==tr&&(e.state=null),i},t0,tb,ty=!0,t8=e=>{if(ty){t0=new Int32Array(512),tb=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(te(1,e.lens,0,288,t0,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;te(2,e.lens,0,32,tb,0,e.work,{bits:5}),ty=!1}e.lencode=t0,e.lenbits=9,e.distcode=tb,e.distbits=5},tk=(e,t,n,i)=>{let r,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):((r=a.wsize-a.wnext)>i&&(r=i),a.window.set(t.subarray(n-i,n-i+r),a.wnext),(i-=r)?(a.window.set(t.subarray(n-i,n),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whavetw(e,15),inflateInit2:tw,inflate(e,t){let n,i,r,a,s,o,l,d,h,u,c,f,p,_,m,g,w,b,y,k,v,B,N=0,T=new Uint8Array(4),x,R,I=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return to;(n=e.state).mode===tc&&(n.mode=13),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,d=n.hold,h=n.bits,u=o,c=l,B=tr;t:for(;;)switch(n.mode){case 1:if(0===n.wrap){n.mode=13;break}for(;h<16;){if(0===o)break t;o--,d+=i[a++]<>>8&255,n.check=z(n.check,T,2,0),d=0,h=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&d)<<8)+(d>>8))%31){e.msg="incorrect header check",n.mode=tf;break}if((15&d)!==tu){e.msg="unknown compression method",n.mode=tf;break}if(d>>>=4,h-=4,v=8+(15&d),0===n.wbits)n.wbits=v;else if(v>n.wbits){e.msg="invalid window size",n.mode=tf;break}n.dmax=1<>8&1),512&n.flags&&(T[0]=255&d,T[1]=d>>>8&255,n.check=z(n.check,T,2,0)),d=0,h=0,n.mode=3;case 3:for(;h<32;){if(0===o)break t;o--,d+=i[a++]<>>8&255,T[2]=d>>>16&255,T[3]=d>>>24&255,n.check=z(n.check,T,4,0)),d=0,h=0,n.mode=4;case 4:for(;h<16;){if(0===o)break t;o--,d+=i[a++]<>8),512&n.flags&&(T[0]=255&d,T[1]=d>>>8&255,n.check=z(n.check,T,2,0)),d=0,h=0,n.mode=5;case 5:if(1024&n.flags){for(;h<16;){if(0===o)break t;o--,d+=i[a++]<>>8&255,n.check=z(n.check,T,2,0)),d=0,h=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((f=n.length)>o&&(f=o),f&&(n.head&&(v=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(a,a+f),v)),512&n.flags&&(n.check=z(n.check,i,f,a)),o-=f,a+=f,n.length-=f),n.length))break t;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===o)break t;f=0;do v=i[a+f++],n.head&&v&&n.length<65536&&(n.head.name+=String.fromCharCode(v));while(v&&f>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=tc;break;case 10:for(;h<32;){if(0===o)break t;o--,d+=i[a++]<>>=7&h,h-=7&h,n.mode=27;break}for(;h<3;){if(0===o)break t;o--,d+=i[a++]<>>=1)){case 0:n.mode=14;break;case 1:if(t8(n),n.mode=20,t===ti){d>>>=2,h-=2;break t}break;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=tf}d>>>=2,h-=2;break;case 14:for(d>>>=7&h,h-=7&h;h<32;){if(0===o)break t;o--,d+=i[a++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=tf;break}if(n.length=65535&d,d=0,h=0,n.mode=15,t===ti)break t;case 15:n.mode=16;case 16:if(f=n.length){if(f>o&&(f=o),f>l&&(f=l),0===f)break t;r.set(i.subarray(a,a+f),s),o-=f,a+=f,l-=f,s+=f,n.length-=f;break}n.mode=tc;break;case 17:for(;h<14;){if(0===o)break t;o--,d+=i[a++]<>>=5,h-=5,n.ndist=1+(31&d),d>>>=5,h-=5,n.ncode=4+(15&d),d>>>=4,h-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=tf;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,h-=3}for(;n.have<19;)n.lens[I[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,x={bits:n.lenbits},B=te(0,n.lens,0,19,n.lencode,0,n.work,x),n.lenbits=x.bits,B){e.msg="invalid code lengths set",n.mode=tf;break}n.have=0,n.mode=19;case 19:for(;n.have>>24,g=N>>>16&255,w=65535&N,!(m<=h);){if(0===o)break t;o--,d+=i[a++]<>>=m,h-=m,n.lens[n.have++]=w;else{if(16===w){for(R=m+2;h>>=m,h-=m,0===n.have){e.msg="invalid bit length repeat",n.mode=tf;break}v=n.lens[n.have-1],f=3+(3&d),d>>>=2,h-=2}else if(17===w){for(R=m+3;h>>=m,h-=m,v=0,f=3+(7&d),d>>>=3,h-=3}else{for(R=m+7;h>>=m,h-=m,v=0,f=11+(127&d),d>>>=7,h-=7}if(n.have+f>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=tf;break}for(;f--;)n.lens[n.have++]=v}}if(n.mode===tf)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=tf;break}if(n.lenbits=9,x={bits:n.lenbits},B=te(1,n.lens,0,n.nlen,n.lencode,0,n.work,x),n.lenbits=x.bits,B){e.msg="invalid literal/lengths set",n.mode=tf;break}if(n.distbits=6,n.distcode=n.distdyn,x={bits:n.distbits},B=te(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,x),n.distbits=x.bits,B){e.msg="invalid distances set",n.mode=tf;break}if(n.mode=20,t===ti)break t;case 20:n.mode=21;case 21:if(o>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=d,n.bits=h,eH(e,c),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,d=n.hold,h=n.bits,n.mode===tc&&(n.back=-1);break}for(n.back=0;m=(N=n.lencode[d&(1<>>24,g=N>>>16&255,w=65535&N,!(m<=h);){if(0===o)break t;o--,d+=i[a++]<>b)])>>>24,g=N>>>16&255,w=65535&N,!(b+m<=h);){if(0===o)break t;o--,d+=i[a++]<>>=b,h-=b,n.back+=b}if(d>>>=m,h-=m,n.back+=m,n.length=w,0===g){n.mode=26;break}if(32&g){n.back=-1,n.mode=tc;break}if(64&g){e.msg="invalid literal/length code",n.mode=tf;break}n.extra=15&g,n.mode=22;case 22:if(n.extra){for(R=n.extra;h>>=n.extra,h-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;m=(N=n.distcode[d&(1<>>24,g=N>>>16&255,w=65535&N,!(m<=h);){if(0===o)break t;o--,d+=i[a++]<>b)])>>>24,g=N>>>16&255,w=65535&N,!(b+m<=h);){if(0===o)break t;o--,d+=i[a++]<>>=b,h-=b,n.back+=b}if(d>>>=m,h-=m,n.back+=m,64&g){e.msg="invalid distance code",n.mode=tf;break}n.offset=w,n.extra=15&g,n.mode=24;case 24:if(n.extra){for(R=n.extra;h>>=n.extra,h-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=tf;break}n.mode=25;case 25:if(0===l)break t;if(f=c-l,n.offset>f){if((f=n.offset-f)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=tf;break}f>n.wnext?(f-=n.wnext,p=n.wsize-f):p=n.wnext-f,f>n.length&&(f=n.length),_=n.window}else _=r,p=s-n.offset,f=n.length;f>l&&(f=l),l-=f,n.length-=f;do r[s++]=_[p++];while(--f);0===n.length&&(n.mode=21);break;case 26:if(0===l)break t;r[s++]=n.length,l--,n.mode=21;break;case 27:if(n.wrap){for(;h<32;){if(0===o)break t;o--,d|=i[a++]<=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new eF,this.strm.avail_out=0;let n=t3.inflateInit2(this.strm,t.windowBits);if(n!==t2||(this.header=new tv,t3.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=e5(t.dictionary):"[object ArrayBuffer]"===t1.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=t3.inflateSetDictionary(this.strm,t.dictionary))!==t2)))throw Error(W[n])}function tR(e,t){let n=new t7(t);if(n.push(e),n.err)throw n.msg||W[n.err];return n.result}t7.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(s=t===~~t?t:!0===t?t6:t4,"[object ArrayBuffer]"===t1.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),(a=t3.inflate(n,s))===t9&&r&&((a=t3.inflateSetDictionary(n,r))===t2?a=t3.inflate(n,s):a===tT&&(a=t9));n.avail_in>0&&a===tB&&n.state.wrap>0&&0!==e[n.next_in];)t3.inflateReset(n),a=t3.inflate(n,s);switch(a){case tN:case tT:case t9:case tx:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(0===n.avail_out||a===tB)){if("string"===this.options.to){let l=eL(n.output,n.next_out),d=n.next_out-l,h=eD(n.output,l);n.next_out=d,n.avail_out=i-d,d&&n.output.set(n.output.subarray(l,l+d),0),this.onData(h)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out))}if(a!==t2||0!==o){if(a===tB)return a=t3.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},t7.prototype.onData=function(e){this.chunks.push(e)},t7.prototype.onEnd=function(e){e===t2&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=eR(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};let{Deflate:tI,deflate:tE,deflateRaw:tU,gzip:tS}={Deflate:eK,deflate:eX,deflateRaw:function(e,t){return(t=t||{}).raw=!0,eX(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,eX(e,t)},constants:P},{Inflate:t5,inflate:tD,inflateRaw:tL,ungzip:tF}={Inflate:t7,inflate:tR,inflateRaw:function(e,t){return(t=t||{}).raw=!0,tR(e,t)},ungzip:tR,constants:P};var tO=tI,tC=tE,tj=tU,tA=tS,tz=t5,tW=tD,tP=tL,tM=tF,tV=P;e.Deflate=tO,e.Inflate=tz,e.constants=tV,e.default={Deflate:tO,deflate:tC,deflateRaw:tj,gzip:tA,Inflate:tz,inflate:tW,inflateRaw:tP,ungzip:tM,constants:tV},e.deflate=tC,e.deflateRaw=tj,e.gzip=tA,e.inflate=tW,e.inflateRaw=tP,e.ungzip=tM,Object.defineProperty(e,"__esModule",{value:!0})});let ew=s.slice(0,5);switch(i=s.slice(5),ew?.[0]){case 0:break;case 1:i=pako.ungzip(i),ew[0]=0}switch(HOST){case"grpc.biliapi.net":case"app.bilibili.com":class e0 extends eg{constructor(){super("google.protobuf.Any",[{no:1,name:"type_url",kind:"scalar",T:9},{no:2,name:"value",kind:"scalar",T:12}])}pack(e,t){return{typeUrl:this.typeNameToUrl(t.typeName),value:t.toBinary(e)}}unpack(e,t,n){if(!this.contains(e,t))throw Error("Cannot unpack google.protobuf.Any with typeUrl '"+e.typeUrl+"' as "+t.typeName+".");return t.fromBinary(e.value,n)}contains(e,t){if(!e.typeUrl.length)return!1;let n;return("string"==typeof t?t:t.typeName)===this.typeUrlToName(e.typeUrl)}internalJsonWrite(e,t){if(""===e.typeUrl)return{};let n=this.typeUrlToName(e.typeUrl),i=es(t),r=i.typeRegistry?.find(e=>e.typeName===n);if(!r)throw new globalThis.Error("Unable to convert google.protobuf.Any with typeUrl '"+e.typeUrl+"' to JSON. The specified type "+n+" is not available in the type registry.");let a=r.fromBinary(e.value,{readUnknownField:!1}),s=r.internalJsonWrite(a,i);return(n.startsWith("google.protobuf.")||!B(s))&&(s={value:s}),s["@type"]=e.typeUrl,s}internalJsonRead(e,t,n){if(!B(e))throw new globalThis.Error("Unable to parse google.protobuf.Any from JSON "+v(e)+".");if("string"!=typeof e["@type"]||""==e["@type"])return this.create();let i=this.typeUrlToName(e["@type"]),r=t?.typeRegistry?.find(e=>e.typeName==i);if(!r)throw new globalThis.Error("Unable to parse google.protobuf.Any from JSON. The specified type "+i+" is not available in the type registry.");let a;if(i.startsWith("google.protobuf.")&&e.hasOwnProperty("value"))a=r.fromJson(e.value,t);else{let s=Object.assign({},e);delete s["@type"],a=r.fromJson(s,t)}return void 0===n&&(n=this.create()),n.typeUrl=e["@type"],n.value=r.toBinary(a),n}typeNameToUrl(e){if(!e.length)throw Error("invalid type name: "+e);return"type.googleapis.com/"+e}typeUrlToName(e){if(!e.length)throw Error("invalid type url: "+e);let t=e.lastIndexOf("/"),n=t>0?e.substring(t+1):e;if(!n.length)throw Error("invalid type url: "+e);return n}create(e){let t={typeUrl:"",value:new Uint8Array(0)};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.poseb}])}create(e){let t={};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.pose1}])}create(e){let t={};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.pose6}])}create(e){let t={};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.poseB}])}create(e){let t={isSupport:!1,disabled:!1};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.poseE},{no:2,name:"up_list",kind:"message",T:()=>eS},{no:3,name:"topic_list",kind:"message",T:()=>eD}])}create(e){let t={};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.poseS}])}create(e){let t={};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.poseF}])}create(e){let t={list:[]};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.pos["DynamicType",l]}])}create(e){let t={cardType:0};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.pos15!==e.cardType||($.log(`🎉 ${$.name}`,"动态综合页广告动态去除"),!1)));break;case!1:$.log(`🚧 ${$.name}`,"用户设置动态综合页广告动态不去除")}i=ex.toBinary(data);break;case"DynVideo":switch(data=eR.fromBinary(i),e?.Detail?.Most_visited){case!0:default:data.videoUpList&&(data.videoUpList=null,$.log(`🎉 ${$.name}`,"动态视频页最常访问去除"));break;case!1:$.log(`🚧 ${$.name}`,"用户设置动态视频页最常访问不去除")}i=eR.toBinary(data)}break;case"bilibili.app.view.v1.View":switch(PATHs?.[1]){case"View":class eO extends eg{constructor(){super("ViewReply",[{no:6,name:"t_icon",kind:"map",K:9,V:{kind:"message",T:()=>eM}},{no:10,name:"relates",kind:"message",repeat:1,T:()=>eZ},{no:30,name:"cms",kind:"message",repeat:1,T:()=>e8},{no:31,name:"cm_config",kind:"message",T:()=>eA},{no:41,name:"cm_ipad",kind:"message",T:()=>eW}])}create(e){let t={tIcon:{},relates:[],cms:[]};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.poseb}])}create(e){let t={};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.pose8}])}create(e){let t={};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.pos!e.cm||($.log(`🎉 ${$.name}`,"播放页关联推荐广告去除"),!1))),(eK.cmConfig||eK.cmIpad)&&(delete eK.cmConfig,delete eK.cmIpad,$.log(`🎉 ${$.name}`,"播放页定制tab去除")),eK.tIcon)null===eK.tIcon[eX]&&delete eK.tIcon[eX];i=eC.toBinary(eK);break;case!1:$.log(`🚧 ${$.name}`,"用户设置播放页广告不去除")}break;case"TFInfo":class eH extends eg{constructor(){super("TFInfoReply",[{no:1,name:"tipsId",kind:"scalar",T:3,L:0},{no:2,name:"tfToast",kind:"message",T:()=>eY},{no:3,name:"tfPanelCustomized",kind:"message",T:()=>eQ}])}create(e){let t={tipsId:0n};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.postr},{no:7,name:"cm",kind:"message",T:()=>t$}])}create(e){let t={};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.posts}])}create(e){let t={tabModule:[]};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.postl}])}create(e){let t={tab:{oneofKind:void 0}};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.posth}])}create(e){let t={modules:[]};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.postc}])}create(e){let t={type:0,data:{oneofKind:void 0}};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.postp}])}create(e){let t={cards:[]};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.poseb}])}create(e){let t={sourceContent:[]};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.pos(28===e.type&&(e.data.relates.cards=e.data.relates.cards.filter(e=>5!==e.relateCardType&&4!==e.relateCardType),$.log(`🎉 ${$.name}`,"视频详情下方推荐卡广告去除")),e)),i=tn.toBinary(tm);break;case!1:$.log(`🚧 ${$.name}`,"用户设置up主推荐广告不去除")}}break;case"bilibili.app.interface.v1.Teenagers":if(PATHs?.[1]==="ModeStatus"){class tg extends eg{constructor(){super("ModeStatus",[{no:1,name:"modes",kind:"message",repeat:1,T:()=>tb}])}create(e){let t={modes:[]};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.post8}])}create(e){let t={name:""};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.pos(e?.name==="teenagers"&&e?.f5?.f1&&(e.f5.f1=0,$.log(`🎉 ${$.name}`,"青少年模式弹窗去除")),e)),i=tw.toBinary(data)}break;case"bilibili.community.service.dm.v1.DM":class tk extends eg{constructor(){super("CommandDm",[{no:1,name:"id",kind:"scalar",T:3,L:0}])}create(e){let t={id:0n};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.post3}])}create(e){let t={commandDms:[]};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.post1}])}create(e){let t={};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.postN}])}create(e){let t={elems:[]};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.pos(e?.colorful===60001&&(e.colorful=0),e)),$.log(`🎉 ${$.name}`,"会员弹幕已替换为普通弹幕"),i=tB.toBinary(tx)}else $.log(`🎉 ${$.name}`,"用户设置会员弹幕不修改")}break;case"bilibili.main.community.reply.v1.Reply":if(PATHs?.[1]==="MainList"){class t7 extends eg{constructor(){super("MainListReply",[{no:11,name:"cm",kind:"message",T:()=>e8}])}create(e){let t={};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.postL},{no:25,name:"cm",kind:"message",oneof:"cardItem",T:()=>t5}])}create(e){let t={cardItem:{oneofKind:void 0}};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.postU}])}create(e){let t={item:[]};return globalThis.Object.defineProperty(t,u,{enumerable:!1,value:this}),void 0!==e&&en(this,t,e),t}internalBinaryRead(e,t,n,i){let r=i??this.create(),a=e.pos+t;for(;e.pos!(e.cardItem?.oneofKind==="cm"||e.cardItem?.oneofKind==="game")),$.log(`🎉 ${$.name}`,"搜索页广告去除"),i=tO.toBinary(tC);break;case!1:$.log(`🚧 ${$.name}`,"用户设置搜索页广告不去除")}}}}s=newRawBody({header:ew,body:i})}$.isQuanX()?$response.bodyBytes=s:$response.body=s}case!1:}})().catch(e=>$.logErr(e)).finally(()=>{if(void 0!==$response){if($.log(`🎉 ${$.name}, finally`,"$response",`FORMAT: ${FORMAT}`,""),$response?.headers?.["Content-Encoding"]&&($response.headers["Content-Encoding"]="identity"),$response?.headers?.["content-encoding"]&&($response.headers["content-encoding"]="identity"),$.isQuanX())switch(FORMAT){case void 0:$.done({status:$response.status,headers:$response.headers});break;default:$.done({status:$response.status,headers:$response.headers,body:$response.body});break;case"application/protobuf":case"application/x-protobuf":case"application/vnd.google.protobuf":case"application/grpc":case"application/grpc+proto":case"applecation/octet-stream":$.done({status:$response.status,headers:$response.headers,bodyBytes:$response.bodyBytes.buffer.slice($response.bodyBytes.byteOffset,$response.bodyBytes.byteLength+$response.bodyBytes.byteOffset)})}else $.done($response)}}); \ No newline at end of file diff --git a/Scripts/AdBlock/LittleRedBook/LittleRedBook.js b/Scripts/AdBlock/LittleRedBook/LittleRedBook.js index 3714898..0bcd6b3 100644 --- a/Scripts/AdBlock/LittleRedBook/LittleRedBook.js +++ b/Scripts/AdBlock/LittleRedBook/LittleRedBook.js @@ -1,12 +1,11 @@ - -const version = 'V1.0.10'; +const version = 'V1.0.12'; let body = $response.body; if (body) { switch (!0) { case/api\/sns\/v\d\/note\/widgets/.test($request.url): try { - let e = JSON.parse(body), t = ["goods_card_v2", "note_next_step"]; + let e = JSON.parse(body), t = ["1goods_card_v2", "note_next_step"]; for (let a of t) e.data?.[a] && delete e.data[a]; body = JSON.stringify(e) } catch (s) { @@ -52,77 +51,90 @@ if (body) { console.log("feed: " + f) } break; - case/api\/sns\/v\d\/homefeed\/categories\?/.test($request.url): + case/api\/sns\/v\d\/note\/imagefeed/.test($request.url): try { let b = JSON.parse(body); - b.data.categories = b.data.categories.filter(e => !("homefeed.shop" == e.oid || "homefeed.live" == e.oid)), body = JSON.stringify(b) - } catch (p) { - console.log("categories: " + p) + for (let p of b.data) if (p.related_goods_num && (p.related_goods_num = 0), p.has_related_goods && (p.has_related_goods = !1), p.note_list) for (let h of p.note_list) h.media_save_config = { + disable_save: !1, + disable_watermark: !0, + disable_weibo_cover: !0 + }; + body = JSON.stringify(b) + } catch (v) { + console.log("imagefeed: " + v) + } + break; + case/api\/sns\/v\d\/homefeed\/categories\?/.test($request.url): + try { + let m = JSON.parse(body); + m.data.categories = m.data.categories.filter(e => !("homefeed.shop" == e.oid || "homefeed.live" == e.oid)), body = JSON.stringify(m) + } catch (u) { + console.log("categories: " + u) } break; case/api\/sns\/v\d\/search\/hint/.test($request.url): try { - let h = JSON.parse(body); - h.data?.hint_words && (h.data.hint_words = [{ + let k = JSON.parse(body); + k.data?.hint_words && (k.data.hint_words = [{ title: "搜索笔记", type: "firstEnterOther#itemCfRecWord#搜索笔记#1", search_word: "搜索笔记" - }]), body = JSON.stringify(h) - } catch (v) { - console.log("hint: " + v) + }]), body = JSON.stringify(k) + } catch ($) { + console.log("hint: " + $) } break; case/api\/sns\/v\d\/search\/hot_list/.test($request.url): try { - let m = JSON.parse(body); - m.data = { + let w = JSON.parse(body); + w.data = { scene: "", title: "", items: [], host: "", background_color: {}, word_request_id: "" - }, body = JSON.stringify(m) - } catch (u) { - console.log("hot_list: " + u) + }, body = JSON.stringify(w) + } catch (_) { + console.log("hot_list: " + _) } break; case/api\/sns\/v\d\/search\/trending/.test($request.url): try { - let k = JSON.parse(body); - k.data = {title: "", queries: [], type: "", word_request_id: ""}, body = JSON.stringify(k) - } catch ($) { - console.log("trending: " + $) + let q = JSON.parse(body); + q.data = {title: "", queries: [], type: "", word_request_id: ""}, body = JSON.stringify(q) + } catch (E) { + console.log("trending: " + E) } break; case/api\/sns\/v\d\/system_service\/splash_config/.test($request.url): try { - let w = JSON.parse(body); - w.data.ads_groups.forEach(e => { + let x = JSON.parse(body); + x.data.ads_groups.forEach(e => { e.start_time = "2208963661", e.end_time = "2209050061", e.ads && e.ads.forEach(e => { e.start_time = "2208963661", e.end_time = "2209050061" }) - }), body = JSON.stringify(w) - } catch (_) { - console.log("splash_config: " + _) + }), body = JSON.stringify(x) + } catch (C) { + console.log("splash_config: " + C) } break; case/api\/sns\/v\d\/homefeed\?/.test($request.url): try { - let q = JSON.parse(body); - q.data = q.data.filter(e => !e.is_ads), body = JSON.stringify(q) - } catch (E) { - console.log("homefeed: " + E) + let O = JSON.parse(body); + O.data = O.data.filter(e => !e.is_ads), body = JSON.stringify(O) + } catch (R) { + console.log("homefeed: " + R) } break; case/api\/sns\/v\d\/system_service\/config\?/.test($request.url): try { - let x = JSON.parse(body), - C = ["store", "splash", "loading_img", "app_theme", "cmt_words", "highlight_tab"]; - for (let O of C) x.data?.[O] && delete x.data[O]; - body = JSON.stringify(x) - } catch (R) { - console.log("system_service: " + R) + let W = JSON.parse(body), + j = ["store", "splash", "loading_img", "app_theme", "cmt_words", "highlight_tab"]; + for (let z of j) W.data?.[z] && delete W.data[z]; + body = JSON.stringify(W) + } catch (A) { + console.log("system_service: " + A) } break; default: diff --git a/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js b/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js index b9af6ab..3f153df 100644 --- a/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js +++ b/Scripts/AdBlock/LittleRedBook/LittleRedBook.min.js @@ -1,3 +1,3 @@ -const version = 'V1.0.10'; +const version = 'V1.0.12'; -let body=$response.body;if(body){switch(!0){case/api\/sns\/v\d\/note\/widgets/.test($request.url):try{let e=JSON.parse(body),t=["goods_card_v2","note_next_step"];for(let a of t)e.data?.[a]&&delete e.data[a];body=JSON.stringify(e)}catch(s){console.log("widgets: "+s)}break;case/api\/sns\/v\d\/note\/redtube/.test($request.url):try{let o=JSON.parse(body);for(let d of o.data.items)d.related_goods_num&&(d.related_goods_num=0),d.has_related_goods&&(d.has_related_goods=!1),d.media_save_config&&(d.media_save_config={disable_save:!1,disable_watermark:!0,disable_weibo_cover:!0}),d.share_info&&(d.share_info.function_entries=[{type:"video_download"},{type:"generate_image"},{type:"copy_link"},{type:"native_voice"},{type:"video_speed"},{type:"dislike"},{type:"report"},{type:"video_feedback"}]);body=JSON.stringify(o)}catch(r){console.log("redtube: "+r)}break;case/api\/sns\/v\d\/note\/videofeed/.test($request.url):try{let i=JSON.parse(body);for(let l of i.data)l.related_goods_num&&(l.related_goods_num=0),l.has_related_goods&&(l.has_related_goods=!1),l.media_save_config&&(l.media_save_config={disable_save:!1,disable_watermark:!0,disable_weibo_cover:!0}),l.share_info&&(l.share_info.function_entries=[{type:"video_download"},{type:"generate_image"},{type:"copy_link"},{type:"native_voice"},{type:"video_speed"},{type:"dislike"},{type:"report"},{type:"video_feedback"}]);body=JSON.stringify(i)}catch(n){console.log("videofeed: "+n)}break;case/api\/sns\/v\d\/note\/feed/.test($request.url):try{let c=JSON.parse(body);for(let y of c.data)if(y.related_goods_num&&(y.related_goods_num=0),y.has_related_goods&&(y.has_related_goods=!1),y.note_list)for(let g of y.note_list)g.media_save_config={disable_save:!1,disable_watermark:!0,disable_weibo_cover:!0};body=JSON.stringify(c)}catch(f){console.log("feed: "+f)}break;case/api\/sns\/v\d\/homefeed\/categories\?/.test($request.url):try{let b=JSON.parse(body);b.data.categories=b.data.categories.filter(e=>!("homefeed.shop"==e.oid||"homefeed.live"==e.oid)),body=JSON.stringify(b)}catch(p){console.log("categories: "+p)}break;case/api\/sns\/v\d\/search\/hint/.test($request.url):try{let h=JSON.parse(body);h.data?.hint_words&&(h.data.hint_words=[{title:"搜索笔记",type:"firstEnterOther#itemCfRecWord#搜索笔记#1",search_word:"搜索笔记"}]),body=JSON.stringify(h)}catch(v){console.log("hint: "+v)}break;case/api\/sns\/v\d\/search\/hot_list/.test($request.url):try{let m=JSON.parse(body);m.data={scene:"",title:"",items:[],host:"",background_color:{},word_request_id:""},body=JSON.stringify(m)}catch(u){console.log("hot_list: "+u)}break;case/api\/sns\/v\d\/search\/trending/.test($request.url):try{let k=JSON.parse(body);k.data={title:"",queries:[],type:"",word_request_id:""},body=JSON.stringify(k)}catch($){console.log("trending: "+$)}break;case/api\/sns\/v\d\/system_service\/splash_config/.test($request.url):try{let w=JSON.parse(body);w.data.ads_groups.forEach(e=>{e.start_time="2208963661",e.end_time="2209050061",e.ads&&e.ads.forEach(e=>{e.start_time="2208963661",e.end_time="2209050061"})}),body=JSON.stringify(w)}catch(_){console.log("splash_config: "+_)}break;case/api\/sns\/v\d\/homefeed\?/.test($request.url):try{let q=JSON.parse(body);q.data=q.data.filter(e=>!e.is_ads),body=JSON.stringify(q)}catch(E){console.log("homefeed: "+E)}break;case/api\/sns\/v\d\/system_service\/config\?/.test($request.url):try{let x=JSON.parse(body),C=["store","splash","loading_img","app_theme","cmt_words","highlight_tab"];for(let O of C)x.data?.[O]&&delete x.data[O];body=JSON.stringify(x)}catch(R){console.log("system_service: "+R)}break;default:$done({})}$done({body})}else $done({}); \ No newline at end of file +let body=$response.body;if(body){switch(!0){case/api\/sns\/v\d\/note\/widgets/.test($request.url):try{let e=JSON.parse(body),t=["1goods_card_v2","note_next_step"];for(let a of t)e.data?.[a]&&delete e.data[a];body=JSON.stringify(e)}catch(s){console.log("widgets: "+s)}break;case/api\/sns\/v\d\/note\/redtube/.test($request.url):try{let o=JSON.parse(body);for(let d of o.data.items)d.related_goods_num&&(d.related_goods_num=0),d.has_related_goods&&(d.has_related_goods=!1),d.media_save_config&&(d.media_save_config={disable_save:!1,disable_watermark:!0,disable_weibo_cover:!0}),d.share_info&&(d.share_info.function_entries=[{type:"video_download"},{type:"generate_image"},{type:"copy_link"},{type:"native_voice"},{type:"video_speed"},{type:"dislike"},{type:"report"},{type:"video_feedback"}]);body=JSON.stringify(o)}catch(r){console.log("redtube: "+r)}break;case/api\/sns\/v\d\/note\/videofeed/.test($request.url):try{let i=JSON.parse(body);for(let l of i.data)l.related_goods_num&&(l.related_goods_num=0),l.has_related_goods&&(l.has_related_goods=!1),l.media_save_config&&(l.media_save_config={disable_save:!1,disable_watermark:!0,disable_weibo_cover:!0}),l.share_info&&(l.share_info.function_entries=[{type:"video_download"},{type:"generate_image"},{type:"copy_link"},{type:"native_voice"},{type:"video_speed"},{type:"dislike"},{type:"report"},{type:"video_feedback"}]);body=JSON.stringify(i)}catch(n){console.log("videofeed: "+n)}break;case/api\/sns\/v\d\/note\/feed/.test($request.url):try{let c=JSON.parse(body);for(let y of c.data)if(y.related_goods_num&&(y.related_goods_num=0),y.has_related_goods&&(y.has_related_goods=!1),y.note_list)for(let g of y.note_list)g.media_save_config={disable_save:!1,disable_watermark:!0,disable_weibo_cover:!0};body=JSON.stringify(c)}catch(f){console.log("feed: "+f)}break;case/api\/sns\/v\d\/note\/imagefeed/.test($request.url):try{let b=JSON.parse(body);for(let p of b.data)if(p.related_goods_num&&(p.related_goods_num=0),p.has_related_goods&&(p.has_related_goods=!1),p.note_list)for(let h of p.note_list)h.media_save_config={disable_save:!1,disable_watermark:!0,disable_weibo_cover:!0};body=JSON.stringify(b)}catch(v){console.log("imagefeed: "+v)}break;case/api\/sns\/v\d\/homefeed\/categories\?/.test($request.url):try{let m=JSON.parse(body);m.data.categories=m.data.categories.filter(e=>!("homefeed.shop"==e.oid||"homefeed.live"==e.oid)),body=JSON.stringify(m)}catch(u){console.log("categories: "+u)}break;case/api\/sns\/v\d\/search\/hint/.test($request.url):try{let k=JSON.parse(body);k.data?.hint_words&&(k.data.hint_words=[{title:"搜索笔记",type:"firstEnterOther#itemCfRecWord#搜索笔记#1",search_word:"搜索笔记"}]),body=JSON.stringify(k)}catch($){console.log("hint: "+$)}break;case/api\/sns\/v\d\/search\/hot_list/.test($request.url):try{let w=JSON.parse(body);w.data={scene:"",title:"",items:[],host:"",background_color:{},word_request_id:""},body=JSON.stringify(w)}catch(_){console.log("hot_list: "+_)}break;case/api\/sns\/v\d\/search\/trending/.test($request.url):try{let q=JSON.parse(body);q.data={title:"",queries:[],type:"",word_request_id:""},body=JSON.stringify(q)}catch(E){console.log("trending: "+E)}break;case/api\/sns\/v\d\/system_service\/splash_config/.test($request.url):try{let x=JSON.parse(body);x.data.ads_groups.forEach(e=>{e.start_time="2208963661",e.end_time="2209050061",e.ads&&e.ads.forEach(e=>{e.start_time="2208963661",e.end_time="2209050061"})}),body=JSON.stringify(x)}catch(C){console.log("splash_config: "+C)}break;case/api\/sns\/v\d\/homefeed\?/.test($request.url):try{let O=JSON.parse(body);O.data=O.data.filter(e=>!e.is_ads),body=JSON.stringify(O)}catch(R){console.log("homefeed: "+R)}break;case/api\/sns\/v\d\/system_service\/config\?/.test($request.url):try{let W=JSON.parse(body),j=["store","splash","loading_img","app_theme","cmt_words","highlight_tab"];for(let z of j)W.data?.[z]&&delete W.data[z];body=JSON.stringify(W)}catch(A){console.log("system_service: "+A)}break;default:$done({})}$done({body})}else $done({}); \ No newline at end of file diff --git a/Scripts/AdBlock/Other/Amdc.js b/Scripts/AdBlock/Other/Amdc.js index a4bb0cc..b720d8a 100644 --- a/Scripts/AdBlock/Other/Amdc.js +++ b/Scripts/AdBlock/Other/Amdc.js @@ -1,9 +1,7 @@ +const version = 'V1.0.8'; -const version = "V1.0.4"; - -var ua = $request.headers["User-Agent"] || $request.headers["user-agent"]; --1 != ua.indexOf("AMap") || --1 != ua.indexOf("Cainiao") || --1 != ua.indexOf("%E9%A3%9E%E7%8C%AA%E6%97%85%E8%A1%8C") - ? $done({ body: "ddgksf2013" }) - : $done({}); +var ua = $request.headers["User-Agent"] + || $request.headers["user-agent"]; +/(AMap|Cainiao|%E9%A3%9E%E7%8C%AA%E6%97%85%E8%A1%8C|Hema4iPhone|Moon|DMPortal)/.test(ua) + ? $done({body: "null"}) + : $done({}); \ No newline at end of file diff --git a/Scripts/AdBlock/Other/Amdc.min.js b/Scripts/AdBlock/Other/Amdc.min.js index 53dec67..7536c8c 100644 --- a/Scripts/AdBlock/Other/Amdc.min.js +++ b/Scripts/AdBlock/Other/Amdc.min.js @@ -1,3 +1,3 @@ -const version = 'V1.0.4'; +const version = 'V1.0.8'; -var ua=$request.headers["User-Agent"]||$request.headers["user-agent"];-1!=ua.indexOf("AMap")||-1!=ua.indexOf("Cainiao")||-1!=ua.indexOf("%E9%A3%9E%E7%8C%AA%E6%97%85%E8%A1%8C")?$done({body:"empty"}):$done({}); \ No newline at end of file +var ua=$request.headers["User-Agent"]||$request.headers["user-agent"];/(AMap|Cainiao|%E9%A3%9E%E7%8C%AA%E6%97%85%E8%A1%8C|Hema4iPhone|Moon|DMPortal)/.test(ua)?$done({body:"ddgksf2013"}):$done({}); \ No newline at end of file diff --git a/Scripts/AdBlock/Other/Cainiao.js b/Scripts/AdBlock/Other/Cainiao.js index ef86f0b..e80c385 100644 --- a/Scripts/AdBlock/Other/Cainiao.js +++ b/Scripts/AdBlock/Other/Cainiao.js @@ -1,15 +1,2 @@ -const version = "V1.0.16"; - -var respBody = JSON.parse($response.body); --1 != $request.url.indexOf("mtop.cainiao.nbpresentation.protocol.homepage.get.cn") - ? respBody.data?.result?.dataList?.length > 0 && - (respBody.data.result.dataList = respBody.data.result.dataList.filter( - (d) => "big_banner_area_v870" != d.type - )) - : -1 != $request.url.indexOf("mtop.cainiao.guoguo.nbnetflow.ads.index.cn") - ? respBody.data?.result && (respBody.data.result = []) - : -1 != $request.url.indexOf("mtop.cainiao.adkeyword") && - respBody.data?.result?.adHotKeywords && - (respBody.data.result.adHotKeywords = []); -var body = JSON.stringify(respBody); -$done({ body }); +const version="V1.0.19"; +var respBody=JSON.parse($response.body);if(-1!=$request.url.indexOf("mtop.cainiao.nbpresentation.protocol.homepage.get.cn"))respBody.data?.result?.dataList?.length>0&&(respBody.data.result.dataList=respBody.data.result.dataList.filter(e=>!("big_banner_area_v870"==e.type||"todo_list_v860"==e.type)));else if(-1!=$request.url.indexOf("mtop.cainiao.nbpresentation.homepage.merge.get.cn"))for(let i=0;i<4;i++){let e=`mtop.cainiao.nbpresentation.protocol.homepage.get.cn@${i}`;respBody.data?.[e]?.data?.result?.dataList?.length>0&&(respBody.data[e].data.result.dataList=respBody.data[e].data.result.dataList.filter(e=>!("big_banner_area_v870"==e.type||"todo_list_v860"==e.type)))}else -1!=$request.url.indexOf("mtop.cainiao.guoguo.nbnetflow.ads.mshow")?(respBody.data["1308"]&&delete respBody.data["1308"],respBody.data["1275"]&&delete respBody.data["1275"],respBody.data["205"]&&delete respBody.data["205"]):-1!=$request.url.indexOf("mtop.cainiao.guoguo.nbnetflow.ads.index.cn")?respBody.data?.result&&(respBody.data.result=[{}]):-1!=$request.url.indexOf("mtop.cainiao.adkeyword")&&respBody.data?.result?.adHotKeywords&&(respBody.data.result.adHotKeywords=[]);var body=JSON.stringify(respBody);$done({body}); \ No newline at end of file diff --git a/Scripts/AdBlock/Other/Keep.js b/Scripts/AdBlock/Other/Keep.js index cc80103..97d6c8f 100644 --- a/Scripts/AdBlock/Other/Keep.js +++ b/Scripts/AdBlock/Other/Keep.js @@ -1,11 +1,21 @@ -const version = 'V1.0.29'; +const version = 'V1.0.33'; + if (-1 != $request.url.indexOf("people/my")) { let e = JSON.parse($response.body); - e.data.floatingInfo = {}, $done({body: JSON.stringify(e)}) -} else if (-1 != $request.url.indexOf("config/v3/basic")) { + e.data.floatingInfo = {}, e.data.memberInfo && delete e.data.memberInfo, $done({body: JSON.stringify(e)}) +} else if (-1 != $request.url.indexOf("start")) { + let a = JSON.parse($response.body); + a.data.status = !0, $done({body: JSON.stringify(a)}) +} else if (-1 != $request.url.indexOf("preview")) { let t = JSON.parse($response.body); - t.data.bottomBarControl.defaultTab = "home", t.data.bottomBarControl.tabs = Object.values(t.data.bottomBarControl.tabs).filter(e => "home" == e.tabType || "new_sports" == e.tabType || "personal" == e.tabType), t.data.homeTabs = [{ + t.data.detailSections = Object.values(t.data.detailSections).filter(e => "recommendation" != e.sectionType), t.data.extendInfo.startEnable = !0, t.data.extendInfo.hasPaid = !0, $done({body: JSON.stringify(t)}) +} else if (-1 != $request.url.indexOf("twins/v4/feed/course")) { + let o = JSON.parse($response.body); + o.data.modules = Object.values(o.data.modules).filter(e => !("homepageCommonContainer" == e.code || "homepageLive" == e.code)), $done({body: JSON.stringify(o)}) +} else if (-1 != $request.url.indexOf("config/v3/basic")) { + let d = JSON.parse($response.body); + d.data.bottomBarControl.defaultTab = "home", d.data.bottomBarControl.tabs = Object.values(d.data.bottomBarControl.tabs).filter(e => "home" == e.tabType || "dynamic_sports" == e.tabType || "personal" == e.tabType), d.data.homeTabs = [{ type: "homeRecommend", order: 1, name: "推荐", @@ -21,349 +31,5 @@ if (-1 != $request.url.indexOf("people/my")) { showInFewDays: 7, reverseSwitch: !1, default: !1 - }], $done({body: JSON.stringify(t)}) -} else if (-1 != $request.url.indexOf("homepage/v")) { - let n = JSON.parse($response.body); - if (n.data.sections.length > 0 && "quickEntranceV3" != n.data.sections[0].contentStyle) { - var a = { - sectionStyle: null, - contentStyle: "quickEntranceV3", - pageId: "", - pitId: null, - sectionId: null, - location: "entrance", - pageNum: 0, - moduleNum: 0, - bizType: null, - backgroundImage: null, - sectionTrackProps: { - content_style: "quickEntranceV3", - pageType: "homeRecommend", - section_id: null, - sectionTitle: "品类入口", - itemDetailId: "", - pageVersion: "8.0", - page_index: 0, - page_plan_id: "", - sectionPosition: 0, - sectionType: "categoryEntry" - }, - moreText: null, - priority: 0, - index: 0, - schema: null, - title: null, - subBaseSection: null, - showUserSettingSwitch: !0, - quickEntrances: [{ - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.0", - itemTitle: "跳绳", - item_type: "smartrope", - itemPosition: 0 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/4/553246736447566b5831396d774a726d4944386a5763754d4e7243573943632f72766b72713243377433733d/210x174_be8314bcf2ddadaa91d64df15b8179410024b0cc.png", - iconInner: "https://static1.keepcdn.com/kylin-cms/2022/11/22/16/40/553246736447566b5831394749734e746f305572724d59745a4f52724b37623655326668714f45504637673d/108x108_bed15c8355030f96af69226270bcc4d508b73375.png", - type: "smartrope", - schema: "keep://subpage/home?categoryType=jumprope&source=page_home&isPreview=false", - title: "跳绳", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.1", - itemTitle: "跑步", - item_type: "running", - itemPosition: 1 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/1/553246736447566b58312f39463164783279354b67734b4c7958796e354f32736a2b5a7576306867512b593d/210x174_1a6d2547a58966dbdea3322795acdc2bba24e889.png", - iconInner: "https://static1.keepcdn.com/infra-cms/2021/03/21/20/30/298362495336_108x108.png", - type: "running", - schema: "keep://homepage/running?tabId=cnVubmluZw==&style=tab&trainingTrace=categoryEntry&source=categoryEntry", - title: "跑步", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.2", - itemTitle: "行走", - item_type: "hiking", - itemPosition: 2 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/1/553246736447566b583138396362694a75476b7567306d6b373158632b4c635635713847456b56325542303d/210x174_990cd347017ad1a7ba63688b96aa64ed9b7ed824.png", - iconInner: "https://static1.keepcdn.com/infra-cms/2021/03/22/10/19/79547768652_108x108.png", - type: "hiking", - schema: "keep://homepage/hiking?tabId=aGlraW5n&new=true&trainingTrace=categoryEntry&source=categoryEntry", - title: "行走", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.3", - itemTitle: "骑行", - item_type: "cycling", - itemPosition: 3 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/1/553246736447566b583139376d6c764e3637682b4c584c36544d45466c574e556d744f6e443257534435303d/210x174_495638b7a4224c14fde4ee5c88173b32db09c8f2.png", - iconInner: "https://static1.keepcdn.com/infra-cms/2021/03/22/10/19/795794009923_108x108.png", - type: "cycling", - schema: "keep://homepage/cycling?tabId=Y3ljbGluZw==&new=true&trainingTrace=categoryEntry&source=categoryEntry", - title: "骑行", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.4", - itemTitle: "助眠冥想", - item_type: "meditation", - itemPosition: 4 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/18/38/553246736447566b58313961757053466470325955426a4353427a45627874396d4f6e5144616579646c413d/210x174_c946a5440299cc439ce103629eb9498c120c060e.png", - iconInner: "https://static1.keepcdn.com/kylin-cms/2022/11/22/16/27/553246736447566b58312f45336d7949654768352f79793358552f7535797462774e78574e345a3152486f3d/108x108_0e012a0f0154208c791abd0509c5a2ae19c5d40e.png", - type: "meditation", - schema: "keep://subpage/home?categoryType=meditation&source=page_home&isPreview=false", - title: "助眠冥想", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.5", - itemTitle: "瑜伽", - item_type: "yoga", - itemPosition: 5 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/1/553246736447566b58312b5173386d5766432f395932726e7a5130523867676676442b463139385462514d3d/210x174_6455aa0d0da392b4dcb1ae02faa7a6de3b12b74a.png", - iconInner: "https://static1.keepcdn.com/kylin-cms/2022/11/10/12/35/553246736447566b58313863714d4b313937715338352b6d653032397858705371596d4873385752486b733d/108x108_4cc973b47b99b7ba40ad7e37226c5a07e08be1ed.png", - type: "yoga", - schema: "keep://subpage/home?categoryType=yoga&source=home_recommend", - title: "瑜伽", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.6", - itemTitle: "塑形训练", - item_type: "bodybuilding", - itemPosition: 6 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/2/553246736447566b58313848692f6245626c4c72764d4e6b2b3948727a44784a727857427a6b7a326a616b3d/210x174_9537eca338eda8e0d51c40e63378d73743ae2e39.png", - iconInner: "https://static1.keepcdn.com/kylin-cms/2022/11/22/16/45/553246736447566b58313843613174565a6962313166665a5666366770765342447368786a4c61377879673d/108x108_b9315d9c9915931c8bdfddbeed40b8c1b7410fa6.png", - type: "bodybuilding", - schema: "keep://subpage/home?categoryType=bodybuilding&source=page_home&isPreview=false", - title: "塑形训练", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.7", - itemTitle: "趣味课", - item_type: "games", - itemPosition: 7 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/15/553246736447566b58312b6a326a4432784770777256325373413073464168336753746159436c364f70453d/210x174_efc0141893630618ab491c34999b5b64506ee721.png", - iconInner: "https://static1.keepcdn.com/infra-cms/2022/8/26/16/13/553246736447566b58313956386b78707053647a4869527078506d3863736f4c5771557433436445556b673d/108x108_17b1fb9c0175415962aa4582a9deb9baeac0a663.png", - type: "games", - schema: "https://m.gotokeep.com/live-activity/games/center?fullscreen=true&source=home_quickStart", - title: "趣味课", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.8", - itemTitle: "呼啦圈", - item_type: "smarthulahoop", - itemPosition: 8 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/11/22/16/50/553246736447566b58312b436f7931697352694a32653235597378695a39677533515a7630485a556345383d/210x174_d09af7f584c060e3bf20f5713382fb4e502993db.png", - iconInner: "https://static1.keepcdn.com/kylin-cms/2022/11/22/16/50/553246736447566b58312b64724d4c6a536d65436f5736434162693172694f6273336268564c355350634d3d/108x108_eb24e19577e617b521363b73363cfc85affa0616.png", - type: "smarthulahoop", - schema: "keep://subpage/home?categoryType=hulahoop&source=page_home&isPreview=false", - title: "呼啦圈", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.9", - itemTitle: "跑步机", - item_type: "keloton", - itemPosition: 9 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/5/553246736447566b583138546267467857467a5134322b77685252514656662b504351395278655a6c41513d/210x174_f146aad28baf15d9a967507fb6e8b92cb647a105.png", - iconInner: "https://static1.keepcdn.com/infra-cms/2021/03/22/10/20/79638592490_108x108.png", - type: "keloton", - schema: "keep://homepage/keloton?tabId=keloton", - title: "跑步机", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.10", - itemTitle: "动感单车", - item_type: "puncheur", - itemPosition: 10 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/5/553246736447566b58313855655a534a706f48447154597675417570646e466c64694337715968325374553d/210x174_d9682832608569e7bfdf8e099a6a4fb271cdd814.png", - iconInner: "https://static1.keepcdn.com/infra-cms/2022/4/1/16/36/79214849d54a4c4df7830379af74a37bbe952e55_108x108_9e25f3e357ad724a7b06ca568472c181876cb773.png", - type: "puncheur", - schema: "keep://homepage/puncheur?tabId=puncheur", - title: "动感单车", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.11", - itemTitle: "椭圆机", - item_type: "elliptical", - itemPosition: 11 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/5/553246736447566b58312b62724c324c6a643154702f50654447626636676b526262636f5651504f52746b3d/210x174_777c3a7262a4390e851fb1c0005540f824149ac4.png", - iconInner: "https://static1.keepcdn.com/infra-cms/2022/4/1/16/34/79214849d54a4c4df7830379af74a37bbe952e55_108x108_93972c09e24276111935364f32f58da9f0b6dfd0.png", - type: "elliptical", - schema: "keep://koval/main", - title: "椭圆机", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.12", - itemTitle: "健走机", - item_type: "walkman", - itemPosition: 12 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/6/553246736447566b58312b7a43783335705a5257533431356c61475a76416f2f4a30647a7a47584235636f3d/210x174_31eab9bbbc0c46611911645b7a04e4007752bfe9.png", - iconInner: "https://static1.keepcdn.com/infra-cms/2021/03/23/11/40/708221831818_108x108.png", - type: "walkman", - schema: "keep://homepage/walkman?tabId=walkman", - title: "健走机", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.13", - itemTitle: "练器械", - item_type: "equipment_class", - itemPosition: 13 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/6/553246736447566b58313948413149376f6d4d4f3065575338374d50716261744f544867773448496b726b3d/210x174_eb833711c3e4896f61dcb636bf0381266e3b4db5.png", - iconInner: "https://static1.keepcdn.com/infra-cms/2021/8/20/11/53/79214849d54a4c4df7830379af74a37bbe952e55_108x108_9e353657a04c932a7c07e8221d3ef6d09be02989.png", - type: "equipment_class", - schema: "keep://equipment/equipment_training", - title: "练器械", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }, { - itemTrackProps: { - itemId: null, - spm: "keep.homepage.quickEntrance.14", - itemTitle: "Keepland", - item_type: "uni_web_keepland", - itemPosition: 14 - }, - icon: "https://static1.keepcdn.com/kylin-cms/2022/12/7/20/7/553246736447566b58313848583836333869584239486c564552317272753876574a43345445306b632f773d/210x174_af8fa993c3b4c33a073d99f791748b3f44a623b2.png", - iconInner: "https://static1.keepcdn.com/infra-cms/2021/03/21/20/29/297988776391_108x108.png", - type: "uni_web_keepland", - schema: "https://keepland.gotokeep.com?kpwebbarcolor=0xffffff&kpwebbtntitlecolor=0x584F60", - title: "Keepland", - iconLinkFormat: null, - showTimes: 0, - bubbleId: null, - bubbleText: null, - bubble: null, - newBubbleId: null, - showInFewDays: 0 - }] - }; - n.data.sections.unshift(a) - } - $done({body: JSON.stringify(n)}) -} else if (-1 != $request.url.indexOf("preview")) { - let i = JSON.parse($response.body); - i.data.detailSections = Object.values(i.data.detailSections).filter(e => "recommendation" != e.sectionType), $done({body: JSON.stringify(i)}) -} else if (-1 != $request.url.indexOf("sportpage/sport/v3/mysport")) { - let l = JSON.parse($response.body); - l.data.sections && delete l.data.sections, $done({body: JSON.stringify(l)}) + }], $done({body: JSON.stringify(d)}) } else $done(); \ No newline at end of file diff --git a/Scripts/AdBlock/Other/Keep.min.js b/Scripts/AdBlock/Other/Keep.min.js index 880ab7d..afa33f4 100644 --- a/Scripts/AdBlock/Other/Keep.min.js +++ b/Scripts/AdBlock/Other/Keep.min.js @@ -1,3 +1,3 @@ -const version = 'V1.0.29'; +const version = 'V1.0.33'; -if(-1!=$request.url.indexOf("people/my")){let e=JSON.parse($response.body);e.data.floatingInfo={},$done({body:JSON.stringify(e)})}else if(-1!=$request.url.indexOf("config/v3/basic")){let t=JSON.parse($response.body);t.data.bottomBarControl.defaultTab="home",t.data.bottomBarControl.tabs=Object.values(t.data.bottomBarControl.tabs).filter(e=>"home"==e.tabType||"new_sports"==e.tabType||"personal"==e.tabType),t.data.homeTabs=[{type:"homeRecommend",order:1,name:"推荐",schema:"keep://homepage/homeRecommend",showInFewDays:7,reverseSwitch:!1,default:!0},{type:"homePrime",order:2,name:"会员",schema:"keep://coursepage/homePrime",showInFewDays:7,reverseSwitch:!1,default:!1}],$done({body:JSON.stringify(t)})}else if(-1!=$request.url.indexOf("homepage/v")){let n=JSON.parse($response.body);if(n.data.sections.length>0&&"quickEntranceV3"!=n.data.sections[0].contentStyle){var a={sectionStyle:null,contentStyle:"quickEntranceV3",pageId:"",pitId:null,sectionId:null,location:"entrance",pageNum:0,moduleNum:0,bizType:null,backgroundImage:null,sectionTrackProps:{content_style:"quickEntranceV3",pageType:"homeRecommend",section_id:null,sectionTitle:"品类入口",itemDetailId:"",pageVersion:"8.0",page_index:0,page_plan_id:"",sectionPosition:0,sectionType:"categoryEntry"},moreText:null,priority:0,index:0,schema:null,title:null,subBaseSection:null,showUserSettingSwitch:!0,quickEntrances:[{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.0",itemTitle:"跳绳",item_type:"smartrope",itemPosition:0},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/4/553246736447566b5831396d774a726d4944386a5763754d4e7243573943632f72766b72713243377433733d/210x174_be8314bcf2ddadaa91d64df15b8179410024b0cc.png",iconInner:"https://static1.keepcdn.com/kylin-cms/2022/11/22/16/40/553246736447566b5831394749734e746f305572724d59745a4f52724b37623655326668714f45504637673d/108x108_bed15c8355030f96af69226270bcc4d508b73375.png",type:"smartrope",schema:"keep://subpage/home?categoryType=jumprope&source=page_home&isPreview=false",title:"跳绳",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.1",itemTitle:"跑步",item_type:"running",itemPosition:1},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/1/553246736447566b58312f39463164783279354b67734b4c7958796e354f32736a2b5a7576306867512b593d/210x174_1a6d2547a58966dbdea3322795acdc2bba24e889.png",iconInner:"https://static1.keepcdn.com/infra-cms/2021/03/21/20/30/298362495336_108x108.png",type:"running",schema:"keep://homepage/running?tabId=cnVubmluZw==&style=tab&trainingTrace=categoryEntry&source=categoryEntry",title:"跑步",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.2",itemTitle:"行走",item_type:"hiking",itemPosition:2},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/1/553246736447566b583138396362694a75476b7567306d6b373158632b4c635635713847456b56325542303d/210x174_990cd347017ad1a7ba63688b96aa64ed9b7ed824.png",iconInner:"https://static1.keepcdn.com/infra-cms/2021/03/22/10/19/79547768652_108x108.png",type:"hiking",schema:"keep://homepage/hiking?tabId=aGlraW5n&new=true&trainingTrace=categoryEntry&source=categoryEntry",title:"行走",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.3",itemTitle:"骑行",item_type:"cycling",itemPosition:3},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/1/553246736447566b583139376d6c764e3637682b4c584c36544d45466c574e556d744f6e443257534435303d/210x174_495638b7a4224c14fde4ee5c88173b32db09c8f2.png",iconInner:"https://static1.keepcdn.com/infra-cms/2021/03/22/10/19/795794009923_108x108.png",type:"cycling",schema:"keep://homepage/cycling?tabId=Y3ljbGluZw==&new=true&trainingTrace=categoryEntry&source=categoryEntry",title:"骑行",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.4",itemTitle:"助眠冥想",item_type:"meditation",itemPosition:4},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/18/38/553246736447566b58313961757053466470325955426a4353427a45627874396d4f6e5144616579646c413d/210x174_c946a5440299cc439ce103629eb9498c120c060e.png",iconInner:"https://static1.keepcdn.com/kylin-cms/2022/11/22/16/27/553246736447566b58312f45336d7949654768352f79793358552f7535797462774e78574e345a3152486f3d/108x108_0e012a0f0154208c791abd0509c5a2ae19c5d40e.png",type:"meditation",schema:"keep://subpage/home?categoryType=meditation&source=page_home&isPreview=false",title:"助眠冥想",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.5",itemTitle:"瑜伽",item_type:"yoga",itemPosition:5},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/1/553246736447566b58312b5173386d5766432f395932726e7a5130523867676676442b463139385462514d3d/210x174_6455aa0d0da392b4dcb1ae02faa7a6de3b12b74a.png",iconInner:"https://static1.keepcdn.com/kylin-cms/2022/11/10/12/35/553246736447566b58313863714d4b313937715338352b6d653032397858705371596d4873385752486b733d/108x108_4cc973b47b99b7ba40ad7e37226c5a07e08be1ed.png",type:"yoga",schema:"keep://subpage/home?categoryType=yoga&source=home_recommend",title:"瑜伽",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.6",itemTitle:"塑形训练",item_type:"bodybuilding",itemPosition:6},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/2/553246736447566b58313848692f6245626c4c72764d4e6b2b3948727a44784a727857427a6b7a326a616b3d/210x174_9537eca338eda8e0d51c40e63378d73743ae2e39.png",iconInner:"https://static1.keepcdn.com/kylin-cms/2022/11/22/16/45/553246736447566b58313843613174565a6962313166665a5666366770765342447368786a4c61377879673d/108x108_b9315d9c9915931c8bdfddbeed40b8c1b7410fa6.png",type:"bodybuilding",schema:"keep://subpage/home?categoryType=bodybuilding&source=page_home&isPreview=false",title:"塑形训练",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.7",itemTitle:"趣味课",item_type:"games",itemPosition:7},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/15/553246736447566b58312b6a326a4432784770777256325373413073464168336753746159436c364f70453d/210x174_efc0141893630618ab491c34999b5b64506ee721.png",iconInner:"https://static1.keepcdn.com/infra-cms/2022/8/26/16/13/553246736447566b58313956386b78707053647a4869527078506d3863736f4c5771557433436445556b673d/108x108_17b1fb9c0175415962aa4582a9deb9baeac0a663.png",type:"games",schema:"https://m.gotokeep.com/live-activity/games/center?fullscreen=true&source=home_quickStart",title:"趣味课",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.8",itemTitle:"呼啦圈",item_type:"smarthulahoop",itemPosition:8},icon:"https://static1.keepcdn.com/kylin-cms/2022/11/22/16/50/553246736447566b58312b436f7931697352694a32653235597378695a39677533515a7630485a556345383d/210x174_d09af7f584c060e3bf20f5713382fb4e502993db.png",iconInner:"https://static1.keepcdn.com/kylin-cms/2022/11/22/16/50/553246736447566b58312b64724d4c6a536d65436f5736434162693172694f6273336268564c355350634d3d/108x108_eb24e19577e617b521363b73363cfc85affa0616.png",type:"smarthulahoop",schema:"keep://subpage/home?categoryType=hulahoop&source=page_home&isPreview=false",title:"呼啦圈",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.9",itemTitle:"跑步机",item_type:"keloton",itemPosition:9},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/5/553246736447566b583138546267467857467a5134322b77685252514656662b504351395278655a6c41513d/210x174_f146aad28baf15d9a967507fb6e8b92cb647a105.png",iconInner:"https://static1.keepcdn.com/infra-cms/2021/03/22/10/20/79638592490_108x108.png",type:"keloton",schema:"keep://homepage/keloton?tabId=keloton",title:"跑步机",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.10",itemTitle:"动感单车",item_type:"puncheur",itemPosition:10},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/5/553246736447566b58313855655a534a706f48447154597675417570646e466c64694337715968325374553d/210x174_d9682832608569e7bfdf8e099a6a4fb271cdd814.png",iconInner:"https://static1.keepcdn.com/infra-cms/2022/4/1/16/36/79214849d54a4c4df7830379af74a37bbe952e55_108x108_9e25f3e357ad724a7b06ca568472c181876cb773.png",type:"puncheur",schema:"keep://homepage/puncheur?tabId=puncheur",title:"动感单车",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.11",itemTitle:"椭圆机",item_type:"elliptical",itemPosition:11},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/5/553246736447566b58312b62724c324c6a643154702f50654447626636676b526262636f5651504f52746b3d/210x174_777c3a7262a4390e851fb1c0005540f824149ac4.png",iconInner:"https://static1.keepcdn.com/infra-cms/2022/4/1/16/34/79214849d54a4c4df7830379af74a37bbe952e55_108x108_93972c09e24276111935364f32f58da9f0b6dfd0.png",type:"elliptical",schema:"keep://koval/main",title:"椭圆机",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.12",itemTitle:"健走机",item_type:"walkman",itemPosition:12},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/6/553246736447566b58312b7a43783335705a5257533431356c61475a76416f2f4a30647a7a47584235636f3d/210x174_31eab9bbbc0c46611911645b7a04e4007752bfe9.png",iconInner:"https://static1.keepcdn.com/infra-cms/2021/03/23/11/40/708221831818_108x108.png",type:"walkman",schema:"keep://homepage/walkman?tabId=walkman",title:"健走机",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.13",itemTitle:"练器械",item_type:"equipment_class",itemPosition:13},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/6/553246736447566b58313948413149376f6d4d4f3065575338374d50716261744f544867773448496b726b3d/210x174_eb833711c3e4896f61dcb636bf0381266e3b4db5.png",iconInner:"https://static1.keepcdn.com/infra-cms/2021/8/20/11/53/79214849d54a4c4df7830379af74a37bbe952e55_108x108_9e353657a04c932a7c07e8221d3ef6d09be02989.png",type:"equipment_class",schema:"keep://equipment/equipment_training",title:"练器械",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0},{itemTrackProps:{itemId:null,spm:"keep.homepage.quickEntrance.14",itemTitle:"Keepland",item_type:"uni_web_keepland",itemPosition:14},icon:"https://static1.keepcdn.com/kylin-cms/2022/12/7/20/7/553246736447566b58313848583836333869584239486c564552317272753876574a43345445306b632f773d/210x174_af8fa993c3b4c33a073d99f791748b3f44a623b2.png",iconInner:"https://static1.keepcdn.com/infra-cms/2021/03/21/20/29/297988776391_108x108.png",type:"uni_web_keepland",schema:"https://keepland.gotokeep.com?kpwebbarcolor=0xffffff&kpwebbtntitlecolor=0x584F60",title:"Keepland",iconLinkFormat:null,showTimes:0,bubbleId:null,bubbleText:null,bubble:null,newBubbleId:null,showInFewDays:0}]};n.data.sections.unshift(a)}$done({body:JSON.stringify(n)})}else if(-1!=$request.url.indexOf("preview")){let i=JSON.parse($response.body);i.data.detailSections=Object.values(i.data.detailSections).filter(e=>"recommendation"!=e.sectionType),$done({body:JSON.stringify(i)})}else if(-1!=$request.url.indexOf("sportpage/sport/v3/mysport")){let l=JSON.parse($response.body);l.data.sections&&delete l.data.sections,$done({body:JSON.stringify(l)})}else $done(); \ No newline at end of file +if(-1!=$request.url.indexOf("people/my")){let e=JSON.parse($response.body);e.data.floatingInfo={},e.data.memberInfo&&delete e.data.memberInfo,$done({body:JSON.stringify(e)})}else if(-1!=$request.url.indexOf("start")){let a=JSON.parse($response.body);a.data.status=!0,$done({body:JSON.stringify(a)})}else if(-1!=$request.url.indexOf("preview")){let t=JSON.parse($response.body);t.data.detailSections=Object.values(t.data.detailSections).filter(e=>"recommendation"!=e.sectionType),t.data.extendInfo.startEnable=!0,t.data.extendInfo.hasPaid=!0,$done({body:JSON.stringify(t)})}else if(-1!=$request.url.indexOf("twins/v4/feed/course")){let o=JSON.parse($response.body);o.data.modules=Object.values(o.data.modules).filter(e=>!("homepageCommonContainer"==e.code||"homepageLive"==e.code)),$done({body:JSON.stringify(o)})}else if(-1!=$request.url.indexOf("config/v3/basic")){let d=JSON.parse($response.body);d.data.bottomBarControl.defaultTab="home",d.data.bottomBarControl.tabs=Object.values(d.data.bottomBarControl.tabs).filter(e=>"home"==e.tabType||"dynamic_sports"==e.tabType||"personal"==e.tabType),d.data.homeTabs=[{type:"homeRecommend",order:1,name:"推荐",schema:"keep://homepage/homeRecommend",showInFewDays:7,reverseSwitch:!1,default:!0},{type:"homePrime",order:2,name:"会员",schema:"keep://coursepage/homePrime",showInFewDays:7,reverseSwitch:!1,default:!1}],$done({body:JSON.stringify(d)})}else $done(); \ No newline at end of file diff --git a/Scripts/AdBlock/Weibo/weibo.js b/Scripts/AdBlock/Weibo/weibo.js index eb83ab9..56cb000 100644 --- a/Scripts/AdBlock/Weibo/weibo.js +++ b/Scripts/AdBlock/Weibo/weibo.js @@ -1,4 +1,5 @@ -const version = 'V2.0.125'; +const version = 'V2.0.126'; + const mainConfig = { isDebug: !1, @@ -190,13 +191,13 @@ function removeSearchMain(e) { } function checkSearchWindow(e) { - return !!mainConfig.removeSearchWindow && "card" == e.category && (e.data?.itemid == "finder_window" || e.data?.itemid == 'discover_gallery' || e.data?.itemid == "more_frame" || e.data?.card_type == 208 || e.data?.card_type == 247 || e.data?.card_type == 217 || e.data?.card_type == 101 || e.data?.card_type == 19 || e.data?.mblog?.page_info?.actionlog?.source?.includes("ad")) + return !!mainConfig.removeSearchWindow && "card" == e.category && (e.data?.itemid == "finder_window" || e.data?.itemid == "discover_gallery" || e.data?.itemid == "more_frame" || e.data?.card_type == 208 || e.data?.card_type == 236 || e.data?.card_type == 247 || e.data?.card_type == 217 || e.data?.card_type == 101 || e.data?.card_type == 19 || e.data?.mblog?.page_info?.actionlog?.source?.includes("ad")) } function removeSearch(e) { if (!e.items) return e; let t = []; - for (let o of e.items) "feed" == o.category ? isAd(o.data) || (o.data?.page_info?.video_limit && delete o.data.page_info.video_limit, t.push(o)) : "group" == o.category ? (o.items = o.items.filter(e => e.data?.card_type == void 0 || e.data?.card_type === 17), o.items.length > 0 && t.push(o)) : checkSearchWindow(o) || t.push(o); + for (let o of e.items) "feed" == o.category ? isAd(o.data) || (o.data?.page_info?.video_limit && delete o.data.page_info.video_limit, t.push(o)) : "group" == o.category ? (o.items = o.items.filter(e => e.data?.card_type == void 0 || e.data?.card_type === 17 || e.data?.card_type === 10), o.items.length > 0 && t.push(o)) : checkSearchWindow(o) || t.push(o); return e.items = t, e.loadedInfo && (e.loadedInfo.searchBarContent = [], e.loadedInfo.headerBack && (e.loadedInfo.headerBack.channelStyleMap = {})), log("remove_search success"), e } diff --git a/Scripts/AdBlock/Weibo/weibo.min.js b/Scripts/AdBlock/Weibo/weibo.min.js index 0cf3b7f..e6ecfa8 100644 --- a/Scripts/AdBlock/Weibo/weibo.min.js +++ b/Scripts/AdBlock/Weibo/weibo.min.js @@ -1,3 +1,3 @@ -const version = 'V2.0.125'; +const version = 'V2.0.126'; -const mainConfig={isDebug:!1,author:"ddgksf2013",removeHomeVip:!0,removeHomeCreatorTask:!0,removeRelate:!0,removeGood:!0,removeFollow:!0,modifyMenus:!0,removeRelateItem:!1,removeRecommendItem:!0,removeRewardItem:!0,removeLiveMedia:!0,removeNextVideo:!1,removePinedTrending:!0,removeInterestFriendInTopic:!1,removeInterestTopic:!1,removeInterestUser:!0,removeLvZhou:!0,removeSearchWindow:!0,profileSkin1:null,profileSkin2:null,tabIconVersion:0,tabIconPath:""},itemMenusConfig={creator_task:!1,mblog_menus_custom:!1,mblog_menus_video_later:!0,mblog_menus_comment_manager:!0,mblog_menus_avatar_widget:!1,mblog_menus_card_bg:!1,mblog_menus_long_picture:!0,mblog_menus_delete:!0,mblog_menus_edit:!0,mblog_menus_edit_history:!0,mblog_menus_edit_video:!0,mblog_menus_sticking:!0,mblog_menus_open_reward:!0,mblog_menus_novelty:!1,mblog_menus_favorite:!0,mblog_menus_promote:!0,mblog_menus_modify_visible:!0,mblog_menus_copy_url:!0,mblog_menus_follow:!0,mblog_menus_video_feedback:!0,mblog_menus_shield:!0,mblog_menus_report:!0,mblog_menus_apeal:!0,mblog_menus_home:!0},modifyCardsUrls=["/cardlist","video/community_tab","searchall"],modifyStatusesUrls=["statuses/friends/timeline","statuses_unread_hot_timeline","statuses/unread_friends_timeline","statuses/unread_hot_timeline","groups/timeline","statuses/friends_timeline"],otherUrls={"/profile/me":"removeHome","/statuses/extend":"itemExtendHandler","/video/remind_info":"removeVideoRemind","/checkin/show":"removeCheckin","/live/media_homelist":"removeMediaHomelist","/comments/build_comments":"removeComments","/container/get_item":"containerHandler","/profile/container_timeline":"userHandler","/video/tiny_stream_video_list":"nextVideoHandler","/2/statuses/video_mixtimeline":"nextVideoHandler","video/tiny_stream_mid_detail":"nextVideoHandler","/!/client/light_skin":"tabSkinHandler","/littleskin/preview":"skinPreviewHandler","/search/finder":"removeSearchMain","/search/container_timeline":"removeSearch","/search/container_discover":"removeSearch","/2/messageflow":"removeMsgAd","/2/page?":"removePage","/statuses/unread_topic_timeline":"topicHandler","/square&pageDataType/":"squareHandler","/statuses/container_timeline_topic":"removeMain","/statuses/container_timeline":"removeMainTab","wbapplua/wbpullad.lua":"removeLuaScreenAds","interface/sdk/sdkad.php":"removePhpScreenAds","ct=feed&a=trends":"removeTopics",user_center:"modifiedUserCenter","a=get_coopen_ads":"removeIntlOpenAds","php?a=search_topic":"removeSearchTopic","v1/ad/realtime":"removeRealtimeAd","v1/ad/preload":"removeAdPreload","php?a=open_app":"removeAdBanner"};function getModifyMethod(e){for(let t of modifyCardsUrls)if(e.indexOf(t)>-1)return"removeCards";for(let o of modifyStatusesUrls)if(e.indexOf(o)>-1)return"removeTimeLine";for(let[i,a]of Object.entries(otherUrls))if(e.indexOf(i)>-1)return a;return null}function removeRealtimeAd(e){return delete e.ads,e.code=4016,e}function removeAdBanner(e){return e.data.close_ad_setting&&delete e.data.close_ad_setting,e.data.detail_banner_ad&&(e.data.detail_banner_ad=[]),e}function removeAdPreload(e){if(!e.ads)return e;for(let t of(e.last_ad_show_interval=86400,e.ads))t.start_time=2681574400,t.end_time=2681660799,t.display_duration=0,t.daily_display_cnt=0,t.total_display_cnt=0;return e}function removeIntlOpenAds(e){return e.data&&0!==e.data.length&&(e.data.ad_list=[],e.data.gdt_video_ad_ios=[],e.data.display_ad=0,e.data.ad_ios_id=null,e.data.app_ad_ios_id=null,e.data.reserve_ad_ios_id="",e.data.reserve_app_ad_ios_id="",e.data.ad_duration=604800,e.data.ad_cd_interval=604800,e.data.pic_ad=[]),e}function removeSearchTopic(e){return e.data&&0!==e.data.length&&(e.data=Object.values(e.data).filter(e=>"searchtop"!=e.type)),e}function modifiedUserCenter(e){return e.data&&0!==e.data.length&&e.data.cards&&(e.data.cards=Object.values(e.data.cards).filter(e=>"personal_vip"!=e.items[0].type)),e}function removeTopics(e){return e.data&&(e.data.order=["search_topic"]),e}function isAd(e){return!!e&&("广告"==e.mblogtypename||"热推"==e.mblogtypename||e.promotion?.type=="ad"||e.page_info?.actionlog?.source=="ad"||e.content_auth_info?.content_auth_title=="广告")}function squareHandler(e){return e.items,e}function removeMainTab(e){if(e.loadedInfo&&e.loadedInfo.headers&&delete e.loadedInfo.headers,!e.items)return e;let t=[];for(let o of e.items)isAd(o.data)||(o.data?.page_info?.video_limit&&delete o.data.page_info.video_limit,o.data?.common_struct&&delete o.data.common_struct,o.category?"group"!=o.category?t.push(o):-1!=JSON.stringify(o.items).indexOf("profile_top")&&t.push(o):t.push(o));return e.items=t,log("removeMainTab success"),e}function removeMain(e){if(e.loadedInfo&&e.loadedInfo.headers&&delete e.loadedInfo.headers,!e.items)return e;let t=[];for(let o of e.items)if("feed"==o.category)isAd(o.data)||t.push(o);else if("group"==o.category){if(o.items.length>0&&o.items[0].data?.itemid?.includes("search_input"))o.items=o.items.filter(e=>e?.data?.itemid?.includes("mine_topics")||e?.data?.itemid?.includes("search_input")||e?.data?.card_type==202),o.items[0].data.hotwords=[{word:"搜索超话",tip:""}],t.push(o);else{if(o.items.length>0&&o.items[0].data?.itemid?.includes("top_title"))continue;o.items.length>0&&(o.items=Object.values(o.items).filter(e=>"feed"==e.category||"card"==e.category)),t.push(o)}}else{if(o.data?.card_type&&[202,200].indexOf(o.data.card_type)>-1)continue;t.push(o)}return e.items=t,log("removeMain success"),e}function topicHandler(e){let t=e.cards;if(!t||!mainConfig.removeUnfollowTopic&&!mainConfig.removeUnusedPart)return e;let o=[];for(let i of t){let a=!0;if(i.mblog){let r=i.mblog.buttons;mainConfig.removeUnfollowTopic&&r&&"follow"==r[0].type&&(a=!1)}else{if(!mainConfig.removeUnusedPart)continue;if("bottom_mix_activity"==i.itemid)a=!1;else if(i?.top?.title=="正在活跃")a=!1;else if(200==i.card_type&&i.group)a=!1;else{let n=i.card_group;if(!n)continue;if(["guess_like_title","cats_top_title","chaohua_home_readpost_samecity_title"].indexOf(n[0].itemid)>-1)a=!1;else if(n.length>1){let d=[];for(let s of n)-1==["chaohua_discovery_banner_1","bottom_mix_activity"].indexOf(s.itemid)&&d.push(s);i.card_group=d}}}a&&o.push(i)}return e.cards=o,log("topicHandler success"),e}function removeSearchMain(e){let t=e.channelInfo.channels;if(!t)return e;let o=[];for(let i of t)i.payload&&(removeSearch(i.payload),o.push(i));return e.channelInfo.channels=o,log("remove_search main success"),e}function checkSearchWindow(e){return!!mainConfig.removeSearchWindow&&"card"==e.category&&(e.data?.itemid=="finder_window"||e.data?.itemid == 'discover_gallery'||e.data?.itemid=="more_frame"||e.data?.card_type==208||e.data?.card_type==247||e.data?.card_type==217||e.data?.card_type==101||e.data?.card_type==19||e.data?.mblog?.page_info?.actionlog?.source?.includes("ad"))}function removeSearch(e){if(!e.items)return e;let t=[];for(let o of e.items)"feed"==o.category?isAd(o.data)||(o.data?.page_info?.video_limit&&delete o.data.page_info.video_limit,t.push(o)):"group"==o.category?(o.items=o.items.filter(e=>e.data?.card_type==void 0||e.data?.card_type===17),o.items.length>0&&t.push(o)):checkSearchWindow(o)||t.push(o);return e.items=t,e.loadedInfo&&(e.loadedInfo.searchBarContent=[],e.loadedInfo.headerBack&&(e.loadedInfo.headerBack.channelStyleMap={})),log("remove_search success"),e}function removeMsgAd(e){if(!e.messages)return;let t=[];for(let o of e.messages)!o.msg_card?.ad_tag&&t.push(o);return e.messages=t,e}function removePage(e){return removeCards(e),mainConfig.removePinedTrending&&e.cards&&e.cards.length>0&&e.cards[0].card_group&&(e.cards[0].card_group=e.cards[0].card_group.filter(e=>!(e?.actionlog?.ext?.includes("ads_word")||e?.itemid?.includes("t:51")||e?.itemid?.includes("ads_word")))),e}function removeCards(e){if(e.hotwords&&(e.hotwords=[]),e.cards){let t=[];for(let o of e.cards){e.cardlistInfo?.containerid=="232082type=1"&&(17==o.card_type||58==o.card_type||11==o.card_type)&&(o={card_type:o.card_type+1});let i=o.card_group;if(i&&i.length>0){let a=[];for(let r of i)118==r.card_type||isAd(r.mblog)||-1!=JSON.stringify(r).indexOf("res_from:ads")||a.push(r);o.card_group=a,t.push(o)}else{let n=o.card_type;if([9,165].indexOf(n)>-1)isAd(o.mblog)||t.push(o);else{if([1007,180].indexOf(n)>-1)continue;t.push(o)}}}e.cards=t}e.items&&(log("data.items"),removeSearch(e))}function lvZhouHandler(e){if(!mainConfig.removeLvZhou||!e)return;let t=e.common_struct;if(!t)return;let o=[];for(let i of t)"绿洲"!=i.name&&o.push(i);e.common_struct=o}function isBlock(e){let t=mainConfig.blockIds||[];if(0===t.length)return!1;let o=e.user.id;for(let i of t)if(i==o)return!0;return!1}function removeTimeLine(e){for(let t of["ad","advertises","trends","headers"])e[t]&&delete e[t];if(!e.statuses)return;let o=[];for(let i of e.statuses)isAd(i)||(lvZhouHandler(i),i.common_struct&&delete i.common_struct,i.category?"group"!=i.category&&o.push(i):o.push(i));e.statuses=o}function removeHomeVip(e){return e.header&&e.header.vipView&&(e.header.vipView=null),e}function removeVideoRemind(e){e.bubble_dismiss_time=0,e.exist_remind=!1,e.image_dismiss_time=0,e.image="",e.tag_image_english="",e.tag_image_english_dark="",e.tag_image_normal="",e.tag_image_normal_dark=""}function itemExtendHandler(e){if((mainConfig.removeRelate||mainConfig.removeGood)&&e.trend&&e.trend.titles){let t=e.trend.titles.title;mainConfig.removeRelate&&"相关推荐"===t?delete e.trend:mainConfig.removeGood&&"博主好物种草"===t&&delete e.trend}mainConfig.removeFollow&&e.follow_data&&(e.follow_data=null),mainConfig.removeRewardItem&&e.reward_info&&(e.reward_info=null),e.head_cards&&delete e.head_cards,e.page_alerts&&(e.page_alerts=null);try{e.trend.extra_struct.extBtnInfo.btn_picurl.indexOf("timeline_icon_ad_delete")>-1&&delete e.trend}catch(o){}if(mainConfig.modifyMenus&&e.custom_action_list){let i=[];for(let a of e.custom_action_list){let r=a.type,n=itemMenusConfig[r];void 0===n?i.push(a):"mblog_menus_copy_url"===r?i.unshift(a):n&&i.push(a)}e.custom_action_list=i}}function updateFollowOrder(e){try{for(let t of e.items)if("mainnums_friends"===t.itemId){let o=t.click.modules[0].scheme;t.click.modules[0].scheme=o.replace("231093_-_selfrecomm","231093_-_selffollowed"),log("updateFollowOrder success");return}}catch(i){console.log("updateFollowOrder fail")}}function updateProfileSkin(e,t){try{let o=mainConfig[t];if(!o)return;let i=0;for(let a of e.items)if(a.image)try{dm=a.image.style.darkMode,"alpha"!=dm&&(a.image.style.darkMode="alpha"),a.image.iconUrl=o[i++],a.dot&&(a.dot=[])}catch(r){}log("updateProfileSkin success")}catch(n){console.log("updateProfileSkin fail")}}function removeHome(e){if(!e.items)return e;let t=[];for(let o of e.items){let i=o.itemId;if("profileme_mine"==i)mainConfig.removeHomeVip&&(o=removeHomeVip(o)),o.header?.vipIcon&&delete o.header.vipIcon,updateFollowOrder(o),t.push(o);else if("100505_-_top8"==i)updateProfileSkin(o,"profileSkin1"),t.push(o);else if("100505_-_newcreator"==i)"grid"==o.type?(updateProfileSkin(o,"profileSkin2"),t.push(o)):mainConfig.removeHomeCreatorTask||t.push(o);else{if("100505_-_chaohua"!=i&&"100505_-_manage"!=i&&"100505_-_recentlyuser"!=i)continue;o.images?.length>0&&(o.images=o.images.filter(e=>"100505_-_chaohua"==e.itemId||"100505_-_recentlyuser"==e.itemId)),t.push(o)}}return e.items=t,e}function removeCheckin(e){log("remove tab1签到"),e.show=0}function removeMediaHomelist(e){mainConfig.removeLiveMedia&&(log("remove 首页直播"),e.data={})}function removeComments(e){let t=["广告","廣告","相关内容","推荐","热推","推薦"],o=e.datas||[];if(0===o.length)return;let i=[];for(let a of o){let r=a.adType||"";-1==t.indexOf(r)&&6!=a.type&&i.push(a)}log("remove 评论区相关和推荐内容"),e.datas=i,e.tip_msg&&delete e.tip_msg}function containerHandler(e){mainConfig.removeInterestFriendInTopic&&"超话里的好友"===e.card_type_name&&(log("remove 超话里的好友"),e.card_group=[]),mainConfig.removeInterestTopic&&e.itemid&&(e.itemid.indexOf("infeed_may_interest_in")>-1?(log("remove 感兴趣的超话"),e.card_group=[]):e.itemid.indexOf("infeed_friends_recommend")>-1&&(log("remove 超话好友关注"),e.card_group=[]))}function userHandler(e){if(e=removeMainTab(e),!mainConfig.removeInterestUser||!e.items)return e;let t=[];for(let o of e.items){let i=!0;if("group"==o.category)try{"可能感兴趣的人"==o.items[0].data.desc&&(i=!1)}catch(a){}i&&(o.data?.common_struct&&delete o.data.common_struct,t.push(o))}return e.items=t,log("removeMain sub success"),e}function nextVideoHandler(e){if(!e.statuses)return e;let t=[];for(let o of e.statuses)if(!isAd(o)){let i=["forward_redpacket_info","shopping","float_info","tags"];for(let a of i)o.video_info?.[a]&&delete o.video_info[a];t.push(o)}return e.statuses=t,log("removeMainTab Success"),e}function tabSkinHandler(e){try{let t=mainConfig.tabIconVersion;if(e.data.canUse=1,!t||!mainConfig.tabIconPath||t<100)return;let o=e.data.list;for(let i of o)i.version=t,i.downloadlink=mainConfig.tabIconPath;log("tabSkinHandler success")}catch(a){log("tabSkinHandler fail")}}function skinPreviewHandler(e){e.data.skin_info.status=1}function removeLuaScreenAds(e){if(!e.cached_ad)return e;for(let t of e.cached_ad.ads)t.start_date=1893254400,t.show_count=0,t.duration=0,t.end_date=1893340799;return e}function removePhpScreenAds(e){if(!e.ads)return e;for(let t of(e.show_push_splash_ad=!1,e.background_delay_display_time=0,e.lastAdShow_delay_display_time=0,e.realtime_ad_video_stall_time=0,e.realtime_ad_timeout_duration=0,e.ads))t.displaytime=0,t.displayintervel=86400,t.allowdaydisplaynum=0,t.displaynum=0,t.displaytime=1,t.begintime="2029-12-30 00:00:00",t.endtime="2029-12-30 23:59:59";return e}function log(e){mainConfig.isDebug&&console.log(e)}var body=$response.body,url=$request.url;let method=getModifyMethod(url);if(method){log(method);var func=eval(method);let data=JSON.parse(body.match(/\{.*\}/)[0]);new func(data),body=JSON.stringify(data),"removePhpScreenAds"==method&&(body=JSON.stringify(data)+"OK")}$done({body}); \ No newline at end of file +const mainConfig={isDebug:!1,author:"ddgksf2013",removeHomeVip:!0,removeHomeCreatorTask:!0,removeRelate:!0,removeGood:!0,removeFollow:!0,modifyMenus:!0,removeRelateItem:!1,removeRecommendItem:!0,removeRewardItem:!0,removeLiveMedia:!0,removeNextVideo:!1,removePinedTrending:!0,removeInterestFriendInTopic:!1,removeInterestTopic:!1,removeInterestUser:!0,removeLvZhou:!0,removeSearchWindow:!0,profileSkin1:null,profileSkin2:null,tabIconVersion:0,tabIconPath:""},itemMenusConfig={creator_task:!1,mblog_menus_custom:!1,mblog_menus_video_later:!0,mblog_menus_comment_manager:!0,mblog_menus_avatar_widget:!1,mblog_menus_card_bg:!1,mblog_menus_long_picture:!0,mblog_menus_delete:!0,mblog_menus_edit:!0,mblog_menus_edit_history:!0,mblog_menus_edit_video:!0,mblog_menus_sticking:!0,mblog_menus_open_reward:!0,mblog_menus_novelty:!1,mblog_menus_favorite:!0,mblog_menus_promote:!0,mblog_menus_modify_visible:!0,mblog_menus_copy_url:!0,mblog_menus_follow:!0,mblog_menus_video_feedback:!0,mblog_menus_shield:!0,mblog_menus_report:!0,mblog_menus_apeal:!0,mblog_menus_home:!0},modifyCardsUrls=["/cardlist","video/community_tab","searchall"],modifyStatusesUrls=["statuses/friends/timeline","statuses_unread_hot_timeline","statuses/unread_friends_timeline","statuses/unread_hot_timeline","groups/timeline","statuses/friends_timeline"],otherUrls={"/profile/me":"removeHome","/statuses/extend":"itemExtendHandler","/video/remind_info":"removeVideoRemind","/checkin/show":"removeCheckin","/live/media_homelist":"removeMediaHomelist","/comments/build_comments":"removeComments","/container/get_item":"containerHandler","/profile/container_timeline":"userHandler","/video/tiny_stream_video_list":"nextVideoHandler","/2/statuses/video_mixtimeline":"nextVideoHandler","video/tiny_stream_mid_detail":"nextVideoHandler","/!/client/light_skin":"tabSkinHandler","/littleskin/preview":"skinPreviewHandler","/search/finder":"removeSearchMain","/search/container_timeline":"removeSearch","/search/container_discover":"removeSearch","/2/messageflow":"removeMsgAd","/2/page?":"removePage","/statuses/unread_topic_timeline":"topicHandler","/square&pageDataType/":"squareHandler","/statuses/container_timeline_topic":"removeMain","/statuses/container_timeline":"removeMainTab","wbapplua/wbpullad.lua":"removeLuaScreenAds","interface/sdk/sdkad.php":"removePhpScreenAds","ct=feed&a=trends":"removeTopics",user_center:"modifiedUserCenter","a=get_coopen_ads":"removeIntlOpenAds","php?a=search_topic":"removeSearchTopic","v1/ad/realtime":"removeRealtimeAd","v1/ad/preload":"removeAdPreload","php?a=open_app":"removeAdBanner"};function getModifyMethod(e){for(let t of modifyCardsUrls)if(e.indexOf(t)>-1)return"removeCards";for(let o of modifyStatusesUrls)if(e.indexOf(o)>-1)return"removeTimeLine";for(let[i,a]of Object.entries(otherUrls))if(e.indexOf(i)>-1)return a;return null}function removeRealtimeAd(e){return delete e.ads,e.code=4016,e}function removeAdBanner(e){return e.data.close_ad_setting&&delete e.data.close_ad_setting,e.data.detail_banner_ad&&(e.data.detail_banner_ad=[]),e}function removeAdPreload(e){if(!e.ads)return e;for(let t of(e.last_ad_show_interval=86400,e.ads))t.start_time=2681574400,t.end_time=2681660799,t.display_duration=0,t.daily_display_cnt=0,t.total_display_cnt=0;return e}function removeIntlOpenAds(e){return e.data&&0!==e.data.length&&(e.data.ad_list=[],e.data.gdt_video_ad_ios=[],e.data.display_ad=0,e.data.ad_ios_id=null,e.data.app_ad_ios_id=null,e.data.reserve_ad_ios_id="",e.data.reserve_app_ad_ios_id="",e.data.ad_duration=604800,e.data.ad_cd_interval=604800,e.data.pic_ad=[]),e}function removeSearchTopic(e){return e.data&&0!==e.data.length&&(e.data=Object.values(e.data).filter(e=>"searchtop"!=e.type)),e}function modifiedUserCenter(e){return e.data&&0!==e.data.length&&e.data.cards&&(e.data.cards=Object.values(e.data.cards).filter(e=>"personal_vip"!=e.items[0].type)),e}function removeTopics(e){return e.data&&(e.data.order=["search_topic"]),e}function isAd(e){return!!e&&("广告"==e.mblogtypename||"热推"==e.mblogtypename||e.promotion?.type=="ad"||e.page_info?.actionlog?.source=="ad"||e.content_auth_info?.content_auth_title=="广告")}function squareHandler(e){return e.items,e}function removeMainTab(e){if(e.loadedInfo&&e.loadedInfo.headers&&delete e.loadedInfo.headers,!e.items)return e;let t=[];for(let o of e.items)isAd(o.data)||(o.data?.page_info?.video_limit&&delete o.data.page_info.video_limit,o.data?.common_struct&&delete o.data.common_struct,o.category?"group"!=o.category?t.push(o):-1!=JSON.stringify(o.items).indexOf("profile_top")&&t.push(o):t.push(o));return e.items=t,log("removeMainTab success"),e}function removeMain(e){if(e.loadedInfo&&e.loadedInfo.headers&&delete e.loadedInfo.headers,!e.items)return e;let t=[];for(let o of e.items)if("feed"==o.category)isAd(o.data)||t.push(o);else if("group"==o.category){if(o.items.length>0&&o.items[0].data?.itemid?.includes("search_input"))o.items=o.items.filter(e=>e?.data?.itemid?.includes("mine_topics")||e?.data?.itemid?.includes("search_input")||e?.data?.card_type==202),o.items[0].data.hotwords=[{word:"搜索超话",tip:""}],t.push(o);else{if(o.items.length>0&&o.items[0].data?.itemid?.includes("top_title"))continue;o.items.length>0&&(o.items=Object.values(o.items).filter(e=>"feed"==e.category||"card"==e.category)),t.push(o)}}else{if(o.data?.card_type&&[202,200].indexOf(o.data.card_type)>-1)continue;t.push(o)}return e.items=t,log("removeMain success"),e}function topicHandler(e){let t=e.cards;if(!t||!mainConfig.removeUnfollowTopic&&!mainConfig.removeUnusedPart)return e;let o=[];for(let i of t){let a=!0;if(i.mblog){let r=i.mblog.buttons;mainConfig.removeUnfollowTopic&&r&&"follow"==r[0].type&&(a=!1)}else{if(!mainConfig.removeUnusedPart)continue;if("bottom_mix_activity"==i.itemid)a=!1;else if(i?.top?.title=="正在活跃")a=!1;else if(200==i.card_type&&i.group)a=!1;else{let n=i.card_group;if(!n)continue;if(["guess_like_title","cats_top_title","chaohua_home_readpost_samecity_title"].indexOf(n[0].itemid)>-1)a=!1;else if(n.length>1){let d=[];for(let s of n)-1==["chaohua_discovery_banner_1","bottom_mix_activity"].indexOf(s.itemid)&&d.push(s);i.card_group=d}}}a&&o.push(i)}return e.cards=o,log("topicHandler success"),e}function removeSearchMain(e){let t=e.channelInfo.channels;if(!t)return e;let o=[];for(let i of t)i.payload&&(removeSearch(i.payload),o.push(i));return e.channelInfo.channels=o,log("remove_search main success"),e}function checkSearchWindow(e){return!!mainConfig.removeSearchWindow&&"card"==e.category&&(e.data?.itemid=="finder_window"||e.data?.itemid=="discover_gallery"||e.data?.itemid=="more_frame"||e.data?.card_type==208||e.data?.card_type==236||e.data?.card_type==247||e.data?.card_type==217||e.data?.card_type==101||e.data?.card_type==19||e.data?.mblog?.page_info?.actionlog?.source?.includes("ad"))}function removeSearch(e){if(!e.items)return e;let t=[];for(let o of e.items)"feed"==o.category?isAd(o.data)||(o.data?.page_info?.video_limit&&delete o.data.page_info.video_limit,t.push(o)):"group"==o.category?(o.items=o.items.filter(e=>e.data?.card_type==void 0||e.data?.card_type===17||e.data?.card_type===10),o.items.length>0&&t.push(o)):checkSearchWindow(o)||t.push(o);return e.items=t,e.loadedInfo&&(e.loadedInfo.searchBarContent=[],e.loadedInfo.headerBack&&(e.loadedInfo.headerBack.channelStyleMap={})),log("remove_search success"),e}function removeMsgAd(e){if(!e.messages)return;let t=[];for(let o of e.messages)!o.msg_card?.ad_tag&&t.push(o);return e.messages=t,e}function removePage(e){return removeCards(e),mainConfig.removePinedTrending&&e.cards&&e.cards.length>0&&e.cards[0].card_group&&(e.cards[0].card_group=e.cards[0].card_group.filter(e=>!(e?.actionlog?.ext?.includes("ads_word")||e?.itemid?.includes("t:51")||e?.itemid?.includes("ads_word")))),e}function removeCards(e){if(e.hotwords&&(e.hotwords=[]),e.cards){let t=[];for(let o of e.cards){e.cardlistInfo?.containerid=="232082type=1"&&(17==o.card_type||58==o.card_type||11==o.card_type)&&(o={card_type:o.card_type+1});let i=o.card_group;if(i&&i.length>0){let a=[];for(let r of i)118==r.card_type||isAd(r.mblog)||-1!=JSON.stringify(r).indexOf("res_from:ads")||a.push(r);o.card_group=a,t.push(o)}else{let n=o.card_type;if([9,165].indexOf(n)>-1)isAd(o.mblog)||t.push(o);else{if([1007,180].indexOf(n)>-1)continue;t.push(o)}}}e.cards=t}e.items&&(log("data.items"),removeSearch(e))}function lvZhouHandler(e){if(!mainConfig.removeLvZhou||!e)return;let t=e.common_struct;if(!t)return;let o=[];for(let i of t)"绿洲"!=i.name&&o.push(i);e.common_struct=o}function isBlock(e){let t=mainConfig.blockIds||[];if(0===t.length)return!1;let o=e.user.id;for(let i of t)if(i==o)return!0;return!1}function removeTimeLine(e){for(let t of["ad","advertises","trends","headers"])e[t]&&delete e[t];if(!e.statuses)return;let o=[];for(let i of e.statuses)isAd(i)||(lvZhouHandler(i),i.common_struct&&delete i.common_struct,i.category?"group"!=i.category&&o.push(i):o.push(i));e.statuses=o}function removeHomeVip(e){return e.header&&e.header.vipView&&(e.header.vipView=null),e}function removeVideoRemind(e){e.bubble_dismiss_time=0,e.exist_remind=!1,e.image_dismiss_time=0,e.image="",e.tag_image_english="",e.tag_image_english_dark="",e.tag_image_normal="",e.tag_image_normal_dark=""}function itemExtendHandler(e){if((mainConfig.removeRelate||mainConfig.removeGood)&&e.trend&&e.trend.titles){let t=e.trend.titles.title;mainConfig.removeRelate&&"相关推荐"===t?delete e.trend:mainConfig.removeGood&&"博主好物种草"===t&&delete e.trend}mainConfig.removeFollow&&e.follow_data&&(e.follow_data=null),mainConfig.removeRewardItem&&e.reward_info&&(e.reward_info=null),e.head_cards&&delete e.head_cards,e.page_alerts&&(e.page_alerts=null);try{e.trend.extra_struct.extBtnInfo.btn_picurl.indexOf("timeline_icon_ad_delete")>-1&&delete e.trend}catch(o){}if(mainConfig.modifyMenus&&e.custom_action_list){let i=[];for(let a of e.custom_action_list){let r=a.type,n=itemMenusConfig[r];void 0===n?i.push(a):"mblog_menus_copy_url"===r?i.unshift(a):n&&i.push(a)}e.custom_action_list=i}}function updateFollowOrder(e){try{for(let t of e.items)if("mainnums_friends"===t.itemId){let o=t.click.modules[0].scheme;t.click.modules[0].scheme=o.replace("231093_-_selfrecomm","231093_-_selffollowed"),log("updateFollowOrder success");return}}catch(i){console.log("updateFollowOrder fail")}}function updateProfileSkin(e,t){try{let o=mainConfig[t];if(!o)return;let i=0;for(let a of e.items)if(a.image)try{dm=a.image.style.darkMode,"alpha"!=dm&&(a.image.style.darkMode="alpha"),a.image.iconUrl=o[i++],a.dot&&(a.dot=[])}catch(r){}log("updateProfileSkin success")}catch(n){console.log("updateProfileSkin fail")}}function removeHome(e){if(!e.items)return e;let t=[];for(let o of e.items){let i=o.itemId;if("profileme_mine"==i)mainConfig.removeHomeVip&&(o=removeHomeVip(o)),o.header?.vipIcon&&delete o.header.vipIcon,updateFollowOrder(o),t.push(o);else if("100505_-_top8"==i)updateProfileSkin(o,"profileSkin1"),t.push(o);else if("100505_-_newcreator"==i)"grid"==o.type?(updateProfileSkin(o,"profileSkin2"),t.push(o)):mainConfig.removeHomeCreatorTask||t.push(o);else{if("100505_-_chaohua"!=i&&"100505_-_manage"!=i&&"100505_-_recentlyuser"!=i)continue;o.images?.length>0&&(o.images=o.images.filter(e=>"100505_-_chaohua"==e.itemId||"100505_-_recentlyuser"==e.itemId)),t.push(o)}}return e.items=t,e}function removeCheckin(e){log("remove tab1签到"),e.show=0}function removeMediaHomelist(e){mainConfig.removeLiveMedia&&(log("remove 首页直播"),e.data={})}function removeComments(e){let t=["广告","廣告","相关内容","推荐","热推","推薦"],o=e.datas||[];if(0===o.length)return;let i=[];for(let a of o){let r=a.adType||"";-1==t.indexOf(r)&&6!=a.type&&i.push(a)}log("remove 评论区相关和推荐内容"),e.datas=i,e.tip_msg&&delete e.tip_msg}function containerHandler(e){mainConfig.removeInterestFriendInTopic&&"超话里的好友"===e.card_type_name&&(log("remove 超话里的好友"),e.card_group=[]),mainConfig.removeInterestTopic&&e.itemid&&(e.itemid.indexOf("infeed_may_interest_in")>-1?(log("remove 感兴趣的超话"),e.card_group=[]):e.itemid.indexOf("infeed_friends_recommend")>-1&&(log("remove 超话好友关注"),e.card_group=[]))}function userHandler(e){if(e=removeMainTab(e),!mainConfig.removeInterestUser||!e.items)return e;let t=[];for(let o of e.items){let i=!0;if("group"==o.category)try{"可能感兴趣的人"==o.items[0].data.desc&&(i=!1)}catch(a){}i&&(o.data?.common_struct&&delete o.data.common_struct,t.push(o))}return e.items=t,log("removeMain sub success"),e}function nextVideoHandler(e){if(!e.statuses)return e;let t=[];for(let o of e.statuses)if(!isAd(o)){let i=["forward_redpacket_info","shopping","float_info","tags"];for(let a of i)o.video_info?.[a]&&delete o.video_info[a];t.push(o)}return e.statuses=t,log("removeMainTab Success"),e}function tabSkinHandler(e){try{let t=mainConfig.tabIconVersion;if(e.data.canUse=1,!t||!mainConfig.tabIconPath||t<100)return;let o=e.data.list;for(let i of o)i.version=t,i.downloadlink=mainConfig.tabIconPath;log("tabSkinHandler success")}catch(a){log("tabSkinHandler fail")}}function skinPreviewHandler(e){e.data.skin_info.status=1}function removeLuaScreenAds(e){if(!e.cached_ad)return e;for(let t of e.cached_ad.ads)t.start_date=1893254400,t.show_count=0,t.duration=0,t.end_date=1893340799;return e}function removePhpScreenAds(e){if(!e.ads)return e;for(let t of(e.show_push_splash_ad=!1,e.background_delay_display_time=0,e.lastAdShow_delay_display_time=0,e.realtime_ad_video_stall_time=0,e.realtime_ad_timeout_duration=0,e.ads))t.displaytime=0,t.displayintervel=86400,t.allowdaydisplaynum=0,t.displaynum=0,t.displaytime=1,t.begintime="2029-12-30 00:00:00",t.endtime="2029-12-30 23:59:59";return e}function log(e){mainConfig.isDebug&&console.log(e)}var body=$response.body,url=$request.url;let method=getModifyMethod(url);if(method){log(method);var func=eval(method);let data=JSON.parse(body.match(/\{.*\}/)[0]);new func(data),body=JSON.stringify(data),"removePhpScreenAds"==method&&(body=JSON.stringify(data)+"OK")}$done({body}); \ No newline at end of file diff --git a/Scripts/Unlock/RevenueCat.RmHeaders.js b/Scripts/Unlock/RevenueCat.RmHeaders.js new file mode 100644 index 0000000..2604022 --- /dev/null +++ b/Scripts/Unlock/RevenueCat.RmHeaders.js @@ -0,0 +1 @@ +function setHeaderValue(e,a,d){var r=a.toLowerCase();r in e?e[r]=d:e[a]=d}var modifiedHeaders=$request.headers;setHeaderValue(modifiedHeaders,"X-RevenueCat-ETag",""),$done({headers:modifiedHeaders}); \ No newline at end of file diff --git a/Scripts/Unlock/RevenueCat.js b/Scripts/Unlock/RevenueCat.js new file mode 100644 index 0000000..c305952 --- /dev/null +++ b/Scripts/Unlock/RevenueCat.js @@ -0,0 +1,180 @@ +/*********************************** + + > ScriptName 𝐑𝐞𝐯𝐞𝐧𝐮𝐞𝐂𝐚𝐭多合一脚本[墨鱼版] + > Author @ddgksf2013 + > ForHelp 若有屏蔽广告的需求,可公众号后台回复APP名称 + > WechatID 墨鱼手记 + > TgChannel https://t.me/ddgksf2021 + > Contribute https://t.me/ddgksf2013_bot + > Feedback 📮 𝐝𝐝𝐠𝐤𝐬𝐟𝟐𝟎𝟏𝟑@𝟏𝟔𝟑.𝐜𝐨𝐦 📮 + > UpdateTime 2024-02-13 + > Suitable 自行观看“# > ”注释内容,解锁是暂时的,购买也不是永久的[订阅、跑路] + > Attention 📣个别失效的APP请相关需求者自行降级、或寻找替代品、或购买支持 + > Attention 如需引用请注明出处,谢谢合作! + > ScriptURL https://gist.githubusercontent.com/ddgksf2013/dbb1695cd96743eef18f3fac5c6fe227/raw/revenuecat.js + ***********************************/ + + +// ========= 动态ID ========= // +const mapping = { + '%E8%BD%A6%E7%A5%A8%E7%A5%A8': ['vip+watch_vip'], + 'FinancialNote': ['category'], + 'Precious/': ['Pro'], + 'LUTCamera': ['ProVersion', 'com.uzero.funforcam.monthlysub'], + 'totowallet': ['all', 'com.ziheng.totowallet.yearly'], + 'Aphrodite': ['all'], + 'apollo': ['all'], + 'widget_art': ['all'], + 'OneBox': ['all'], + 'Spark': ['premium'], + 'Pillow': ['premium'], + '1Blocker': ['premium'], + 'VSCO': ['membership'], + 'UTC': ['Entitlement.Pro'], + '%E8%AC%8E%E5%BA%95%E9%BB%91%E8%86%A0': ['Entitlement.Pro'], + '%E8%AC%8E%E5%BA%95%E6%99%82%E9%90%98': ['Entitlement.Pro'], + 'OffScreen': ['Entitlement.Pro'], + 'ScannerPro': ['plus'], + 'WhiteCloud': ['allaccess'], + 'HTTPBot': ['pro'], + 'audiomack': ['Premium1'], + 'server_bee': ['Pro'], + 'simple-': ['patron'], + 'streaks': ['patron'], + 'andyworks-calculator': ['patron'], + 'vibes': ['patron'], + 'CountDuck': ['premium', 'Lifetime'], + 'IPTVUltra': ['premium'], + 'Happy%3ADays': ['pro', 'happy_999_lifetime'], + 'PDF_convertor/': ['VIP', 'com.pdf.convertor.forever'], + 'ChatGPTApp': ['Advanced'], + 'APTV': ['pro'], + 'TouchRetouchBasic': ['premium'], + 'My%20Jump%20Lab': ['lifetime'], + '%E7%9B%AE%E6%A0%87%E5%9C%B0%E5%9B%BE': ['pro'], + 'Paku': ['pro'], + 'Awesome%20Habits': ['premium'], + 'Gear': ['pro', 'com.gear.app.yearly'], + 'MoneyThings': ['Premium'], + 'Anybox': ['pro'], + 'Fileball': ['filebox_pro'], + 'Noto': ['pro'], + 'Grow': ['grow.pro', 'grow_lifetime'], + 'WidgetSmith': ['Premium'], + 'Percento': ['premium'], + 'Planny': ['premium'], + 'CPUMonitor': ['Pro'], + 'Locket': ['Gold'], + 'My%20Tim': ['Pro'], + 'Photom': ['premium', 'pixelmator_photo_pro_subscription_v1_pro_offer'], + 'mizframa': ['premium', 'mf_20_lifetime2'], + 'ImageX': ['imagex.pro.ios', 'imagex.pro.ios.lifetime'], + 'Fin': ['premium', 'com.circles.fin.premium.yearly'], + 'Ledger': ['Pro', 'com.lifetime.pro'], + 'One4Wall': ['lifetime', 'lifetime_key'], + 'SimpleScan/': ['premium', 'com.atlantia.SimpleScan.Purchases.Lifetime'], + 'OneWidget': ['allaccess'], + 'CardPhoto': ['premium'], + 'Journal_iOS/': ['PRO'], + 'LemonKeepAccounts/': ['VIP', 'lm_1_1month'], + 'PDF%20Viewer': ['sub.pro'], + 'PhotoRoom': ['business'], + 'Decision': ['com.nixwang.decision.entitlements.pro'], + 'Tangerine': ['Premium'], + 'PastePal': ['premium'], + 'Fiery': ['premium'], + 'Airmail': ['Airmail Premium'], + 'Stress': ['StressWatch Pro'], + 'PinPaper': ['allaccess'], + 'Echo': ['PLUS'], + 'MyThings': ['pro', 'xyz.jiaolong.MyThings.pro.infinity'], + 'Overdue': ['Pro'], + 'BlackBox': ['plus', 'app.filmnoir.appstore.purchases.lifetime'], + 'Spektr': ['premium'], + 'MusicMate': ['premium', 'mm_lifetime_68_premium'], + '%E4%BA%8B%E7%BA%BF': ['pro', 'xyz.jiaolong.eventline.pro.lifetime'], + 'Tasks': ['Pro'], + 'Currency': ['plus'], + 'money_manager': ['premium'], + 'fastdiet': ['premium'], + 'Blurer': ['paid_access'], + 'Everlog': ['premium'], + 'reader': ['vip2', 'com.valo.reader.vip2.year'], + 'GetFace': ['Pro access'], + 'intervalFlow': ['All Access', 'wodtimer_lf_free'], + 'Period%20Calendar': ['Premium', 'com.lbrc.PeriodCalendar.premium.yearly'], + 'Cookie': ['allaccess', 'app.ft.Bookkeeping.lifetime'], + 'ScientificCalculator': ['premium', 'com.simpleinnovation.calculator.ai.premium.yearly.base'], + 'MOZE': ['premium'], + '1LemonKeepAccounts/': ['vip'], + 'To%20Me/': ['Premium'], + '%E8%A8%80%E5%A4%96%E7%AD%86%E8%A8%98/': ['Premium'], + 'alcohol.tracker': ['pro', 'drinklog_lifetime'], + 'DayPoem': ['Pro Lifetime'], + 'Budget%20Flow': ['full_access', 'com.fabian.hasse.haushaltsbuch.upgrade.combined'], + 'G%20E%20I%20S%20T': ['memorado_premium'], + 'multitimer_app': ['premium', 'timus_lt'], + 'Darkroom': ['co.bergen.Darkroom.entitlement.allToolsAndFilters'], + 'tiimo': ['full_access'], + 'FaceMa/': ['Pro access'], + 'Record2Text/': ['Pro access'], + 'jinduoduo_calculator': ['jinduoduoapp', 'mobile_vip'], + 'Focused%20Work': ['Pro'], + 'GoToSleep': ['Pro'], + 'kegel': ['kegel_pro'], + 'Ochi': ['Pro'], + 'Pomodoro': ['Plus', 'com.MINE.PomodoroTimer.plus.yearly'], + 'universal/': ['Premium', 'remotetv.yearly.07'], + 'ShellBean/': ['pro', 'com.ningle.shellbean.subscription.year'], + 'AI%20Art%20Generator/': ['Unlimited Access'], + 'Email%20Me': ['premium'], + 'GoodThing/': ['pro', 'goodhappens_basic_year'], + 'Reels%20Editor': ['Unlimited Access'], + 'com.dison.diary': ['vip'], + 'iRead': ['vip'], + 'jizhi': ['jizhi_vip'], + 'card/': ['vip'], + 'EraseIt/': ['ProVersionLifeTime'], + 'Alpenglow': ['newPro'], + 'MindBreathYoga/': ['lifetimeusa'], + 'MetadataEditor': ['unlimited_access'], + '%E6%9F%A5%E5%A6%86%E5%A6%86': ['Pro access'], + '%E5%85%83%E6%B0%94%E8%AE%A1%E6%97%B6': ['plus'], + 'WidgetCat': ['MiaoWidgetPro'], + 'Emphasis/': ['premium'], + 'FormScanner/': ['Pro', 'formscanner_lifetime'], + 'streamer/': ['Premium'], + 'NeatNook/': ['com.neatnook.pro', 'com.neatnook.pro.forever'], + 'Blackout/': ['premium', 'blackout_299_lt'], + 'Budgetify/': ['premium', 'budgetify_3999_lt'], + 'Dedupe/': ['Pro', 'com.curiouscreatorsco.Dedupe.pro.lifetime.notrial.39_99'], + 'Wozi': ['wozi_pro_2023'] +}; + +// ========= 固定部分 ========= // +// ========= @ddgksf2021 ========= // +var ua = $request.headers["User-Agent"] || $request.headers["user-agent"], obj = JSON.parse($response.body); +obj.Attention = "恭喜你抓到元数据!由墨鱼分享,请勿售卖或分享他人!"; +var ddgksf2013 = { + is_sandbox: !1, + ownership_type: "PURCHASED", + billing_issues_detected_at: null, + period_type: "normal", + expires_date: "2099-12-18T01:04:17Z", + grace_period_expires_date: null, + unsubscribe_detected_at: null, + original_purchase_date: "2022-09-08T01:04:18Z", + purchase_date: "2022-09-08T01:04:17Z", + store: "app_store" +}, ddgksf2021 = { + grace_period_expires_date: null, + purchase_date: "2022-09-08T01:04:17Z", + product_identifier: "com.ddgksf2013.premium.yearly", + expires_date: "2099-12-18T01:04:17Z" +}; +const match = Object.keys(mapping).find(e => ua.includes(e)); +if (match) { + let [e, s] = mapping[match]; + s ? (ddgksf2021.product_identifier = s, obj.subscriber.subscriptions[s] = ddgksf2013) : obj.subscriber.subscriptions["com.ddgksf2013.premium.yearly"] = ddgksf2013, obj.subscriber.entitlements[e] = ddgksf2021 +} else obj.subscriber.subscriptions["com.ddgksf2013.premium.yearly"] = ddgksf2013, obj.subscriber.entitlements.pro = ddgksf2021; +$done({body: JSON.stringify(obj)}); \ No newline at end of file diff --git a/Scripts/Unlock/RevenueCat.min.js b/Scripts/Unlock/RevenueCat.min.js new file mode 100644 index 0000000..4a5bd91 --- /dev/null +++ b/Scripts/Unlock/RevenueCat.min.js @@ -0,0 +1 @@ +const mapping={"%E8%BD%A6%E7%A5%A8%E7%A5%A8":["vip+watch_vip"],FinancialNote:["category"],"Precious/":["Pro"],LUTCamera:["ProVersion","com.uzero.funforcam.monthlysub"],totowallet:["all","com.ziheng.totowallet.yearly"],Aphrodite:["all"],apollo:["all"],widget_art:["all"],OneBox:["all"],Spark:["premium"],Pillow:["premium"],"1Blocker":["premium"],VSCO:["membership"],UTC:["Entitlement.Pro"],"%E8%AC%8E%E5%BA%95%E9%BB%91%E8%86%A0":["Entitlement.Pro"],"%E8%AC%8E%E5%BA%95%E6%99%82%E9%90%98":["Entitlement.Pro"],OffScreen:["Entitlement.Pro"],ScannerPro:["plus"],WhiteCloud:["allaccess"],HTTPBot:["pro"],audiomack:["Premium1"],server_bee:["Pro"],"simple-":["patron"],streaks:["patron"],"andyworks-calculator":["patron"],vibes:["patron"],CountDuck:["premium","Lifetime"],IPTVUltra:["premium"],"Happy%3ADays":["pro","happy_999_lifetime"],"PDF_convertor/":["VIP","com.pdf.convertor.forever"],ChatGPTApp:["Advanced"],APTV:["pro"],TouchRetouchBasic:["premium"],"My%20Jump%20Lab":["lifetime"],"%E7%9B%AE%E6%A0%87%E5%9C%B0%E5%9B%BE":["pro"],Paku:["pro"],"Awesome%20Habits":["premium"],Gear:["pro","com.gear.app.yearly"],MoneyThings:["Premium"],Anybox:["pro"],Fileball:["filebox_pro"],Noto:["pro"],Grow:["grow.pro","grow_lifetime"],WidgetSmith:["Premium"],Percento:["premium"],Planny:["premium"],CPUMonitor:["Pro"],Locket:["Gold"],"My%20Tim":["Pro"],Photom:["premium","pixelmator_photo_pro_subscription_v1_pro_offer"],mizframa:["premium","mf_20_lifetime2"],ImageX:["imagex.pro.ios","imagex.pro.ios.lifetime"],Fin:["premium","com.circles.fin.premium.yearly"],Ledger:["Pro","com.lifetime.pro"],One4Wall:["lifetime","lifetime_key"],"SimpleScan/":["premium","com.atlantia.SimpleScan.Purchases.Lifetime"],OneWidget:["allaccess"],CardPhoto:["premium"],"Journal_iOS/":["PRO"],"LemonKeepAccounts/":["VIP","lm_1_1month"],"PDF%20Viewer":["sub.pro"],PhotoRoom:["business"],Decision:["com.nixwang.decision.entitlements.pro"],Tangerine:["Premium"],PastePal:["premium"],Fiery:["premium"],Airmail:["Airmail Premium"],Stress:["StressWatch Pro"],PinPaper:["allaccess"],Echo:["PLUS"],MyThings:["pro","xyz.jiaolong.MyThings.pro.infinity"],Overdue:["Pro"],BlackBox:["plus","app.filmnoir.appstore.purchases.lifetime"],Spektr:["premium"],MusicMate:["premium","mm_lifetime_68_premium"],"%E4%BA%8B%E7%BA%BF":["pro","xyz.jiaolong.eventline.pro.lifetime"],Tasks:["Pro"],Currency:["plus"],money_manager:["premium"],fastdiet:["premium"],Blurer:["paid_access"],Everlog:["premium"],reader:["vip2","com.valo.reader.vip2.year"],GetFace:["Pro access"],intervalFlow:["All Access","wodtimer_lf_free"],"Period%20Calendar":["Premium","com.lbrc.PeriodCalendar.premium.yearly"],Cookie:["allaccess","app.ft.Bookkeeping.lifetime"],ScientificCalculator:["premium","com.simpleinnovation.calculator.ai.premium.yearly.base"],MOZE:["premium"],"1LemonKeepAccounts/":["vip"],"To%20Me/":["Premium"],"%E8%A8%80%E5%A4%96%E7%AD%86%E8%A8%98/":["Premium"],"alcohol.tracker":["pro","drinklog_lifetime"],DayPoem:["Pro Lifetime"],"Budget%20Flow":["full_access","com.fabian.hasse.haushaltsbuch.upgrade.combined"],"G%20E%20I%20S%20T":["memorado_premium"],multitimer_app:["premium","timus_lt"],Darkroom:["co.bergen.Darkroom.entitlement.allToolsAndFilters"],tiimo:["full_access"],"FaceMa/":["Pro access"],"Record2Text/":["Pro access"],jinduoduo_calculator:["jinduoduoapp","mobile_vip"],"Focused%20Work":["Pro"],GoToSleep:["Pro"],kegel:["kegel_pro"],Ochi:["Pro"],Pomodoro:["Plus","com.MINE.PomodoroTimer.plus.yearly"],"universal/":["Premium","remotetv.yearly.07"],"ShellBean/":["pro","com.ningle.shellbean.subscription.year"],"AI%20Art%20Generator/":["Unlimited Access"],"Email%20Me":["premium"],"GoodThing/":["pro","goodhappens_basic_year"],"Reels%20Editor":["Unlimited Access"],"com.dison.diary":["vip"],iRead:["vip"],jizhi:["jizhi_vip"],"card/":["vip"],"EraseIt/":["ProVersionLifeTime"],Alpenglow:["newPro"],"MindBreathYoga/":["lifetimeusa"],MetadataEditor:["unlimited_access"],"%E6%9F%A5%E5%A6%86%E5%A6%86":["Pro access"],"%E5%85%83%E6%B0%94%E8%AE%A1%E6%97%B6":["plus"],WidgetCat:["MiaoWidgetPro"],"Emphasis/":["premium"],"FormScanner/":["Pro","formscanner_lifetime"],"streamer/":["Premium"],"NeatNook/":["com.neatnook.pro","com.neatnook.pro.forever"],"Blackout/":["premium","blackout_299_lt"],"Budgetify/":["premium","budgetify_3999_lt"],"Dedupe/":["Pro","com.curiouscreatorsco.Dedupe.pro.lifetime.notrial.39_99"],Wozi:["wozi_pro_2023"]};var ua=$request.headers["User-Agent"]||$request.headers["user-agent"],obj=JSON.parse($response.body);obj.Attention="恭喜你抓到元数据!由墨鱼分享,请勿售卖或分享他人!";var ddgksf2013={is_sandbox:!1,ownership_type:"PURCHASED",billing_issues_detected_at:null,period_type:"normal",expires_date:"2099-12-18T01:04:17Z",grace_period_expires_date:null,unsubscribe_detected_at:null,original_purchase_date:"2022-09-08T01:04:18Z",purchase_date:"2022-09-08T01:04:17Z",store:"app_store"},ddgksf2021={grace_period_expires_date:null,purchase_date:"2022-09-08T01:04:17Z",product_identifier:"com.ddgksf2013.premium.yearly",expires_date:"2099-12-18T01:04:17Z"};const match=Object.keys(mapping).find(e=>ua.includes(e));if(match){let[e,r]=mapping[match];r?(ddgksf2021.product_identifier=r,obj.subscriber.subscriptions[r]=ddgksf2013):obj.subscriber.subscriptions["com.ddgksf2013.premium.yearly"]=ddgksf2013,obj.subscriber.entitlements[e]=ddgksf2021}else obj.subscriber.subscriptions["com.ddgksf2013.premium.yearly"]=ddgksf2013,obj.subscriber.entitlements.pro=ddgksf2021;$done({body:JSON.stringify(obj)}); \ No newline at end of file diff --git a/Scripts/Unlock/iTunes.js b/Scripts/Unlock/iTunes.js new file mode 100644 index 0000000..6644595 --- /dev/null +++ b/Scripts/Unlock/iTunes.js @@ -0,0 +1,77 @@ +/*********************************** + + > ScriptName BuyiTunes多合一脚本[墨鱼版] + > Author @ddgksf2013 + > ForHelp 若有屏蔽广告的需求,可公众号后台回复APP名称 + > WechatID 墨鱼手记 + > TgChannel https://t.me/ddgksf2021 + > Contribute https://t.me/ddgksf2013_bot + > Feedback 📮 ddgksf2013@163.com 📮 + > UpdateTime 2024-02-19 + > Suitable 自行观看“# > ”注释内容,解锁是暂时的,购买也不是永久的[订阅、跑路] + > Attention 如需引用请注明出处,谢谢合作! + > Attention 使用此脚本,会导致AppleStore无法切换账户,解决方法[关闭QX切换账户,或关闭MITM,或删除脚本,或去设置媒体与购买项目处切换ID] + > ScriptURL https://gist.githubusercontent.com/ddgksf2013/9e0f6c7341beea09a31aa309d9d7f502/raw/buyitunes.js + ***********************************/ + + +var ddgksf2013 = JSON.parse($response.body); + +// ========= 动态ID ========= // +var productidmap = { + 'default': ['ddgksf2013', 'https://t.me/ddgksf2021', 0], + 'com.sugarmo.ScrollClip': ['picsewV3.9.4', 'com.sugarmo.ScrollClip.pro', 1], + 'com.zijayrate.analogcam': ['oldroll', 'com.zijayrate.analogcam.vipforever10', 0], + 'com.loveyouchenapps.knockout': ['proknockout', 'com.knockout.7daysplus', 0], + 'net.shinyfrog.bear-iOS': ['bear', 'net.shinyfrog.bear_iOS.pro_yearly_subscription_bis', 0], + 'com.yengshine.proccd': ['proccd', 'com.yengshine.proccd.year', 0], + 'com.yumiteam.Kuki.ID': ['PicsLeap', 'com.yumiteam.Kuki.ID.4', 1], + 'com.calc.iphone': ['Calculator', 'calc_Unlock_1', 0], + 'me.imgbase.intolive': ['intolive', 'me.imgbase.intolive.proSubYearly', 0], + 'MVH6DNU2ZP.input': ['logcg', 'com.logcg.loginput', 1], + 'com.waterminder.waterminder': ['waterminder', 'waterminder.premiumYearly', 0], + 'wtf.riedel.one-sec': ['onesec', 'wtf.riedel.one_sec.pro.annual.individual', 0], + 'com.aaaalab.nepacket': ['http', 'com.li.blur.pro.month', 0], + 'com.inturnex.Sticker-Maker': ['Sticker', 'com.inturnex.Sticker_Maker.full_access', 1], + 'FuYuan.inkDiary': ['Secai', 'FuYuan.inkDiary.YearB.Pro', 0], + 'me.imgbase.imgplay': ['imgplay', 'me.imgbase.imgplay.subscriptionYearly', 0], + 'com.mediaeditor.video': ['PrettyUp', 'yearautorenew', 0], + 'com.anycasesolutions.SexTracker': ['SexTracker', 'com.anycasesolutions.SexTracker.3mon', 0], + 'com.jianili.pawff': ['pawff', 'com.jianili.pawff.pro.monthly', 0], + 'icar.ren.smk': ['smk', 'smoke19870727', 0], + 'com.meditation.heartratehrv': ['meditation', 'lifetimeusa', 1], + 'livintis.com.wallpapermonster': ['wallpaper', 'wallpaperworld.subscription.yearly.12.notrial', 0], + 'me.imgbase.videoday': ['videoday', 'me.imgbase.videoday.profeaturesYearly', 0], + 'com.icandiapps.nightsky': ['nightsky', 'com.icandiapps.ns4.annual', 0] +} + +// ========= 固定部分 ========= // +ddgksf2013.Attention = "恭喜你抓到元数据!由墨鱼分享,请勿售卖或分享他人!"; +var mapid = ddgksf2013.receipt.bundle_id, mapping = productidmap[mapid] || productidmap.default, inapp = { + product_id: mapping[1], + quantity: "1", + expires_date: "2099-12-18 23:59:59 Etc/GMT", + expires_date_pst: "2099-12-18 23:59:59 America/Los_Angeles", + expires_date_ms: "4101292799000", + is_in_intro_offer_period: "false", + transaction_id: "100000000000000", + is_trial_period: "false", + original_transaction_id: "100000000000000", + purchase_date_ms: "1701705599000", + purchase_date: "2023-12-04 23:59:59 Etc/GMT", + purchase_date_pst: "2023-12-04 23:59:59 America/Los_Angeles", + original_purchase_date: "2023-12-04 23:59:59 Etc/GMT", + original_purchase_date_pst: "2023-12-04 23:59:59 America/Los_Angeles", + original_purchase_date_ms: "1701705599000", + in_app_ownership_type: "PURCHASED", + web_order_line_item_id: "100000000000000" +}, renew = { + product_id: mapping[1], + original_transaction_id: "100000000000000", + auto_renew_product_id: mapping[1], + auto_renew_status: "1" +}; +mapping[2] ? (delete inapp.expires_date, delete inapp.expires_date_ms, delete inapp.expires_date_pst) + : (ddgksf2013.latest_receipt_info = [inapp], ddgksf2013.latest_receipt = "https://t.me/ddgksf2021", ddgksf2013.pending_renewal_info = [renew]), + ddgksf2013.receipt.in_app = [inapp], + $done({body: JSON.stringify(ddgksf2013)}); \ No newline at end of file diff --git a/Scripts/Unlock/iTunes.min.js b/Scripts/Unlock/iTunes.min.js new file mode 100644 index 0000000..a69f9cb --- /dev/null +++ b/Scripts/Unlock/iTunes.min.js @@ -0,0 +1 @@ +var ddgksf2013=JSON.parse($response.body),productidmap={default:["ddgksf2013","https://t.me/ddgksf2021",0],"com.sugarmo.ScrollClip":["picsewV3.9.4","com.sugarmo.ScrollClip.pro",1],"com.zijayrate.analogcam":["oldroll","com.zijayrate.analogcam.vipforever10",0],"com.loveyouchenapps.knockout":["proknockout","com.knockout.7daysplus",0],"net.shinyfrog.bear-iOS":["bear","net.shinyfrog.bear_iOS.pro_yearly_subscription_bis",0],"com.yengshine.proccd":["proccd","com.yengshine.proccd.year",0],"com.yumiteam.Kuki.ID":["PicsLeap","com.yumiteam.Kuki.ID.4",1],"com.calc.iphone":["Calculator","calc_Unlock_1",0],"me.imgbase.intolive":["intolive","me.imgbase.intolive.proSubYearly",0],"MVH6DNU2ZP.input":["logcg","com.logcg.loginput",1],"com.waterminder.waterminder":["waterminder","waterminder.premiumYearly",0],"wtf.riedel.one-sec":["onesec","wtf.riedel.one_sec.pro.annual.individual",0],"com.aaaalab.nepacket":["http","com.li.blur.pro.month",0],"com.inturnex.Sticker-Maker":["Sticker","com.inturnex.Sticker_Maker.full_access",1],"FuYuan.inkDiary":["Secai","FuYuan.inkDiary.YearB.Pro",0],"me.imgbase.imgplay":["imgplay","me.imgbase.imgplay.subscriptionYearly",0],"com.mediaeditor.video":["PrettyUp","yearautorenew",0],"com.anycasesolutions.SexTracker":["SexTracker","com.anycasesolutions.SexTracker.3mon",0],"com.jianili.pawff":["pawff","com.jianili.pawff.pro.monthly",0],"icar.ren.smk":["smk","smoke19870727",0],"com.meditation.heartratehrv":["meditation","lifetimeusa",1],"livintis.com.wallpapermonster":["wallpaper","wallpaperworld.subscription.yearly.12.notrial",0],"me.imgbase.videoday":["videoday","me.imgbase.videoday.profeaturesYearly",0],"com.icandiapps.nightsky":["nightsky","com.icandiapps.ns4.annual",0]};ddgksf2013.Attention="恭喜你抓到元数据!由墨鱼分享,请勿售卖或分享他人!";var mapid=ddgksf2013.receipt.bundle_id,mapping=productidmap[mapid]||productidmap.default,inapp={product_id:mapping[1],quantity:"1",expires_date:"2099-12-18 23:59:59 Etc/GMT",expires_date_pst:"2099-12-18 23:59:59 America/Los_Angeles",expires_date_ms:"4101292799000",is_in_intro_offer_period:"false",transaction_id:"100000000000000",is_trial_period:"false",original_transaction_id:"100000000000000",purchase_date_ms:"1701705599000",purchase_date:"2023-12-04 23:59:59 Etc/GMT",purchase_date_pst:"2023-12-04 23:59:59 America/Los_Angeles",original_purchase_date:"2023-12-04 23:59:59 Etc/GMT",original_purchase_date_pst:"2023-12-04 23:59:59 America/Los_Angeles",original_purchase_date_ms:"1701705599000",in_app_ownership_type:"PURCHASED",web_order_line_item_id:"100000000000000"},renew={product_id:mapping[1],original_transaction_id:"100000000000000",auto_renew_product_id:mapping[1],auto_renew_status:"1"};mapping[2]?(delete inapp.expires_date,delete inapp.expires_date_ms,delete inapp.expires_date_pst):(ddgksf2013.latest_receipt_info=[inapp],ddgksf2013.latest_receipt="https://t.me/ddgksf2021",ddgksf2013.pending_renewal_info=[renew]),ddgksf2013.receipt.in_app=[inapp],$done({body:JSON.stringify(ddgksf2013)}); \ No newline at end of file