trackkun-dom 1.11.7 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/adBlocker.json CHANGED
@@ -1 +1 @@
1
- {"hosts":["pubfuture-ad.com","bidgear.com","googlesyndication.com","flytechb.com","roledale.com","e-planning.net","360yield.com","creativecdn.com","cpmrevenuegate.com","id5-sync.com","33across.com","nicelybacked.com","app-lite.com","shopee.vn","giftsacred.com","wugroansaghadry.com","rtmark.net","e7z9t4x6a0v5mk3zo1a0xj2z7c6g8sa6js5z7s2c3h9x0s5fh3a6sjwb8q7m.xyz","phumsise.com","chumsaf.com","ad.baovip79.biz","uk88.top","stathome.org","outbrain.com","kismetrosland.life","d3n7ct9nohphbs.cloudfront.net","rlcdn.com","rfihub.com","stoolsocman.top","malthuscorno.shop","farcivinage.shop","fixatealaloi.top","footlogmerida.shop","attalidhatters.shop","doubleclick.net","acscdn.com","viglink.com","outheelrelict.com","netpub.media","cinderycandor.com","coaphumewy.net","vntsm.io","ad-delivery.net","radioonlinehd.net","a-ads.com","adskeeper.com","goomaphy.com","t7cp4fldl.com","endowmentoverhangutmost.com","vlitag.com","addthis.com","adschill.com","pubfuture.com","infolinks.com","prospectprefer.com","benchsuited.com","busyexit.com","realsrvcdn.com","adhub.digital","stoachdarts.com","godpvqnszo.com","prplad.com","openx.net","socdm.com","cebidsbessel.com","vdo.ai","imasdk.googleapis.com","noshelfrequired.com","weinsteinandmiller.com","earthenicings.com","trotolhonor.com","zqvee2re50mr.com","waisheph.com","groapeeque.com","umbretalen.com","guigebichir.website","divvyprorata.com","dummieseardrum.com","hbcdn.net","falcatayamalka.com","admatic.com.tr","ppcnt.pro","gdpr.web0.eu","sowfootsolent.com","%20sowfootsolent.com%20","flarby.com","web0.eu","y8z5nv0slz06vj2k5vh6akv7dj2c8aj62zhj2v7zj8vp0zq7fj2gf4mv6zsb.me","pemsrv.com","magsrv.com","tsyndicate.com","xlviirdr.com","org.uk","funnelgloveaffable.com","wordsnought.com","fictionfittinglad.com","wrestcut.com","obediencechainednoun.com","scratchconsonant.com","pubadx.one","pestholy.com","mv.netprotect","microsoftonline.com","securly.com","t-mobile.at","bihussfoob.net","doruffleton.com","tenmrwwk.com","fcoexcuf.com","yxextvgvbbhfuff.com","crwdcntrl.net","mcheaprjnve.com","btcijivtsvph.com","yssmiccrhxiru.com","brand-display.com","ads.linkedin.com","prplads.com","crockerydestructivespoken.com","lwonclbench.com","purpleads.io","abrhydona.com","taxismaned.top","viewyentreat.guru","foramscoypou.com","188.42.84.12","taiiwin.vin","licensekey2018.com","caribedkurukh.com","tzegilo.com","casibom.io","jubusvaleur.top","intimalsejoin.top","squeaksgridded.top","cussingversate.top","newcrystalcommunications.com","gypperywyling.com","wpadmngr.com","mc.yandex.ru","flinttovaria.com","bitonclick.com","fuzzyvisuals.com","mbidadm.com","23.109.170.2","pubmatic.com","invstatic101.creativecdn.com","antiadblocksystems.com","d3cod80thn7qnd.cloudfront.net","ndrrbpgmjpsng.com","uwolvsazk.com","chaseherbalpasty.com","adsco.re","lavangataled.com","betteradsystem.com","d2kk0o3fr7ed01.cloudfront.net","abtfliping.top","eloawiphi.net","dantaradiohd.net","liadm.com","jatosbathkol.com","links.services.disqus.com","tempest.services.disqus.com","muthfourre.com","koaptouw.com","exinesriles.com","mxhnkn.pro","blurbreimbursetrombone.com","awwagqorqpty.com","clobberprocurertightwad.com","coosync.com","bncloudfl.com","bullionglidingscuttle.com","btoomlalk.com","x8.games","mplmncb.com","shakingtacklingunpeeled.com","bankingbloatedcaptive.com","xibet.com","divisiondrearilyunfiled.com","isolatedovercomepasted.com","profitsfly.com","massifbramble.com","babistmucuses.com","urgingslaurae.com","greatmidship.com","oxbet.com","whoanebsos.net","lanky-bar.com","glizauvo.net","teksishe.net","hottedholster.com","spokanchap.com","dependsmoscow.com","akalibalboas.com","viewdeos.com","d11enq2rymy0yl.cloudfront.net","aukveygibngnjg.com","xadsmart.com","bqpvduxtfhwsd.com","qjeirnapocqcy.com","zxomvphodwdpcs.com","recordedthereby.com","proftrafficcounter.com","sympathizecrewfrugality.com","capaciousdrewreligion.com","jobetartane.com","amon1.net","bulkconflictpeculiarities.com","zodiacdinner.com","peanutrefusesplit.com","naupsithizeekee.com","ectypedechlog.com","topcpmcreativeformat.com","chaungourtee.com","tektosfolic.com","dapcerevis.shop","captorbaryton.com","wilfreddrear.shop","arvigorothan.com","cassabahotcake.top","oaphoace.net","h12-media.com","craniolgozzan.com","cuinageaquilid.com","laxativestuckunclog.com","earringsatisfiedsplice.com","childlessporcupinevaluables.com","appointeeivyspongy.com","flaxdescale.com","flatjeep.com","dtscout.com","scakuvap.com","occasionedcaneturner.com","unasonoric.com","tripsisvellums.com","zoeacaring.com","gekeebsirs.com","pricklymine.com","pointlessplan.pro","coafeerapheepho.net","calculatingvoice.com","madurird.com","pointedpleasure.com","visariomedia.com","d13k7prax1yi04.cloudfront.net","xcafcyxddc.com","pbljxppwurd.com","peuru.com","streamtheworld.com","rubiconproject.com","adtelligent.com","zemanta.com","adswizz.com","chambulwacs.com","onclckmn.com","1xbetm.info"],"css":".ad-topMobile,.ad,.ads-container,.ads,.adsbygalaksion,.adsbygoogle,.code-block,.display-banner,.radio-ad,#radio_content,#content *[class*=\"bg-ssp-\"],#adplus-anchor,#fixedban,#noktaplayercontainer,#p_6314647,#psdn-slot,#stickyplayervideoclose,#teaser1,#teaser3,*[class^=\"ad-\"],*[class^=\"ad_\"],*[class$=\"-ad\"],*[class$=\"_ad\"],*[class*=\"-ad-\"],*[class*=\"_ad_\"],*[class^=\"ads-\"],*[class^=\"ads_\"],*[class$=\"-ads\"],*[class$=\"_ads\"],*[class*=\"-ads-\"],*[class*=\"_ads_\"],*[data-adunit],*[data-google-query-id],*[id*=\"_ad_\"],*[id*=\"-ad-\"],*[id^=\"ad_\"],*[id^=\"ad-\"],*[id$=\"_ad\"],*[id$=\"-ad\"],*[id*=\"_ads_\"],*[id*=\"-ads-\"],*[id^=\"ads_\"],*[id^=\"ads-\"],*[id$=\"_ads\"],*[id$=\"-ads\"],*[id^=\"pf-\"],*[id^=\"publift-\"],iframe[src*=\"adata\"],iframe[src*=\"ad.\"],iframe[src*=\"ads.\"],iframe[src*=\"/ad\"],iframe[src*=\"/A=\"],iframe[src*=\"/click\"],iframe[src*=\"?click\"],iframe[src*=\"?banner\"],iframe[src*=\"=click\"],iframe[src*=\"clickurl=\"],iframe[src*=\".atwola.\"],iframe[src*=\"spinbox.\"],iframe[src*=\"transfer.go\"],iframe[src*=\"adfarm\"],iframe[src*=\"adfarmadSpace\"],iframe[src*=\"adserver\"],iframe[src*=\"adjuggler\"],iframe[src*=\".banner\"],iframe[src*=\"bluestreak\"],iframe[src*=\"doubleclick\"],iframe[src*=\"/rd.\"],iframe[src*=\"/0AD\"],iframe[src*=\".falkaq.\"],iframe[src*=\"connextra.\"],iframe[src*=\"tracksponsor.\"],iframe[data-aa],script[src*=\"doubleclick\"] + div,script[src*=\"romanticwait\"] + div,.empower-ad,*[data-empower-id],#empowerplayercontainer,*[id^=\"bg-ssp-\"],a[href*=\"ajker-sangbad.com\"],a[href*=\"story.alandal.com/psycho-asura\"],.google-auto-placed,*[data-ad-format],*[data-adtrack-id],.rev-src,iframe[src=\"about:blank\"] + div[style]:last-child,a[href*=\"deflink\"],#Arpian-ads,iframe[id^=\"bg_\"],.adv,#vi-smartbanner,*[data-ad-slot],html > iframe,div:has(> [prclck]),[prclck],a[href*=\"gotrackier\"],body > nav:not([id]):not([class]):not([style]) > a[style]:first-child:last-child,body > section:not([id]):not([class]):not([style]) > span:first-child:last-child > a[style],html > ins,.kln:has(> script),.adblock_title,.adblock_subtitle,div[id]:has(div[id] h4.adblock_title),script[src*=\"trotolhonor.com\"] + iframe,.custom-html-widget:has(script[src*=\"separatelysmackfibber\"]),#content a[href*=\"kit-food.com\"],*[pa-slot-container],*[id^=\"exo_slider\"],.exo-native-widget-outer-container,iframe[src*=\"a.magsrv.com\"],#theradios_content,script[src*=\"dummieseardrum\"] + iframe,.ts-im-container,.adxp-sticky,div[id*=\"ScriptRoot\"],#catfishAd,div:has(> script[src*=\"tingisincused.com\"]),.ob-widget-items-container:has([data-adv-id]){position: fixed!important;display: none!important;opacity: 0!important;top: -99999px!important;left: -99999px!important;right: unset!important;bottom: unset!important;visibility: hidden!important;z-index: -1000!important;pointer-events: none!important;height: 0!important;width: 0!important;max-height: 0!important;min-height: 0!important;max-width: 0!important;min-width: 0!important;overflow: hidden!important;transform: translate(-99999px, -99999px) scale(0)!important;} body:has(div[id] h4.adblock_title) {overflow: unset !important;}"}
1
+ {"hosts":["pubfuture-ad.com","bidgear.com","googlesyndication.com","flytechb.com","roledale.com","e-planning.net","360yield.com","creativecdn.com","cpmrevenuegate.com","id5-sync.com","33across.com","nicelybacked.com","app-lite.com","shopee.vn","giftsacred.com","wugroansaghadry.com","rtmark.net","e7z9t4x6a0v5mk3zo1a0xj2z7c6g8sa6js5z7s2c3h9x0s5fh3a6sjwb8q7m.xyz","phumsise.com","chumsaf.com","ad.baovip79.biz","uk88.top","stathome.org","outbrain.com","kismetrosland.life","d3n7ct9nohphbs.cloudfront.net","rlcdn.com","rfihub.com","stoolsocman.top","malthuscorno.shop","farcivinage.shop","fixatealaloi.top","footlogmerida.shop","attalidhatters.shop","doubleclick.net","acscdn.com","viglink.com","outheelrelict.com","netpub.media","cinderycandor.com","coaphumewy.net","vntsm.io","ad-delivery.net","radioonlinehd.net","a-ads.com","adskeeper.com","goomaphy.com","t7cp4fldl.com","endowmentoverhangutmost.com","vlitag.com","addthis.com","adschill.com","pubfuture.com","infolinks.com","prospectprefer.com","benchsuited.com","busyexit.com","realsrvcdn.com","adhub.digital","stoachdarts.com","godpvqnszo.com","prplad.com","openx.net","socdm.com","cebidsbessel.com","vdo.ai","imasdk.googleapis.com","noshelfrequired.com","weinsteinandmiller.com","earthenicings.com","trotolhonor.com","zqvee2re50mr.com","waisheph.com","groapeeque.com","umbretalen.com","guigebichir.website","divvyprorata.com","dummieseardrum.com","hbcdn.net","falcatayamalka.com","admatic.com.tr","ppcnt.pro","gdpr.web0.eu","sowfootsolent.com","%20sowfootsolent.com%20","flarby.com","web0.eu","y8z5nv0slz06vj2k5vh6akv7dj2c8aj62zhj2v7zj8vp0zq7fj2gf4mv6zsb.me","pemsrv.com","magsrv.com","tsyndicate.com","xlviirdr.com","org.uk","funnelgloveaffable.com","wordsnought.com","fictionfittinglad.com","wrestcut.com","obediencechainednoun.com","scratchconsonant.com","pubadx.one","pestholy.com","mv.netprotect","microsoftonline.com","securly.com","t-mobile.at","bihussfoob.net","doruffleton.com","tenmrwwk.com","fcoexcuf.com","yxextvgvbbhfuff.com","crwdcntrl.net","mcheaprjnve.com","btcijivtsvph.com","yssmiccrhxiru.com","brand-display.com","ads.linkedin.com","prplads.com","crockerydestructivespoken.com","lwonclbench.com","purpleads.io","abrhydona.com","taxismaned.top","viewyentreat.guru","foramscoypou.com","188.42.84.12","taiiwin.vin","licensekey2018.com","caribedkurukh.com","tzegilo.com","casibom.io","jubusvaleur.top","intimalsejoin.top","squeaksgridded.top","cussingversate.top","newcrystalcommunications.com","gypperywyling.com","wpadmngr.com","mc.yandex.ru","flinttovaria.com","bitonclick.com","fuzzyvisuals.com","mbidadm.com","23.109.170.2","pubmatic.com","invstatic101.creativecdn.com","antiadblocksystems.com","d3cod80thn7qnd.cloudfront.net","ndrrbpgmjpsng.com","uwolvsazk.com","chaseherbalpasty.com","adsco.re","lavangataled.com","betteradsystem.com","d2kk0o3fr7ed01.cloudfront.net","abtfliping.top","eloawiphi.net","dantaradiohd.net","liadm.com","jatosbathkol.com","links.services.disqus.com","tempest.services.disqus.com","muthfourre.com","koaptouw.com","exinesriles.com","mxhnkn.pro","blurbreimbursetrombone.com","awwagqorqpty.com","clobberprocurertightwad.com","coosync.com","bncloudfl.com","bullionglidingscuttle.com","btoomlalk.com","x8.games","mplmncb.com","shakingtacklingunpeeled.com","bankingbloatedcaptive.com","xibet.com","divisiondrearilyunfiled.com","isolatedovercomepasted.com","profitsfly.com","massifbramble.com","babistmucuses.com","urgingslaurae.com","greatmidship.com","oxbet.com","whoanebsos.net","lanky-bar.com","glizauvo.net","teksishe.net","hottedholster.com","spokanchap.com","dependsmoscow.com","akalibalboas.com","viewdeos.com","d11enq2rymy0yl.cloudfront.net","aukveygibngnjg.com","xadsmart.com","bqpvduxtfhwsd.com","qjeirnapocqcy.com","zxomvphodwdpcs.com","recordedthereby.com","proftrafficcounter.com","sympathizecrewfrugality.com","capaciousdrewreligion.com","jobetartane.com","amon1.net","bulkconflictpeculiarities.com","zodiacdinner.com","peanutrefusesplit.com","naupsithizeekee.com","ectypedechlog.com","topcpmcreativeformat.com","chaungourtee.com","tektosfolic.com","dapcerevis.shop","captorbaryton.com","wilfreddrear.shop","arvigorothan.com","cassabahotcake.top","oaphoace.net","h12-media.com","craniolgozzan.com","cuinageaquilid.com","laxativestuckunclog.com","earringsatisfiedsplice.com","childlessporcupinevaluables.com","appointeeivyspongy.com","flaxdescale.com","flatjeep.com","dtscout.com","scakuvap.com","occasionedcaneturner.com","unasonoric.com","tripsisvellums.com","zoeacaring.com","gekeebsirs.com","pricklymine.com","pointlessplan.pro","coafeerapheepho.net","calculatingvoice.com","madurird.com","pointedpleasure.com","visariomedia.com","d13k7prax1yi04.cloudfront.net","xcafcyxddc.com","pbljxppwurd.com","peuru.com","streamtheworld.com","rubiconproject.com","adtelligent.com","zemanta.com","adswizz.com","chambulwacs.com","onclckmn.com","1xbetm.info"],"css":".ad-topMobile,.ad,.ads-container,.ads,.adsbygalaksion,.adsbygoogle,.code-block,.display-banner,.radio-ad,#radio_content,#content *[class*=\"bg-ssp-\"],#adplus-anchor,#fixedban,#noktaplayercontainer,#p_6314647,#psdn-slot,#stickyplayervideoclose,#teaser1,#teaser3,*[class^=\"ad-\"],*[class^=\"ad_\"],*[class$=\"-ad\"],*[class$=\"_ad\"],*[class*=\"-ad-\"],*[class*=\"_ad_\"],*[class^=\"ads-\"],*[class^=\"ads_\"],*[class$=\"-ads\"],*[class$=\"_ads\"],*[class*=\"-ads-\"],*[class*=\"_ads_\"],*[data-adunit],*[data-google-query-id],*[id*=\"_ad_\"],*[id*=\"-ad-\"],*[id^=\"ad_\"],*[id^=\"ad-\"],*[id$=\"_ad\"],*[id$=\"-ad\"],*[id*=\"_ads_\"],*[id*=\"-ads-\"],*[id^=\"ads_\"],*[id^=\"ads-\"],*[id$=\"_ads\"],*[id$=\"-ads\"],*[id^=\"pf-\"],*[id^=\"publift-\"],iframe[src*=\"adata\"],iframe[src*=\"ad.\"],iframe[src*=\"ads.\"],iframe[src*=\"/ad\"],iframe[src*=\"/A=\"],iframe[src*=\"/click\"],iframe[src*=\"?click\"],iframe[src*=\"?banner\"],iframe[src*=\"=click\"],iframe[src*=\"clickurl=\"],iframe[src*=\".atwola.\"],iframe[src*=\"spinbox.\"],iframe[src*=\"transfer.go\"],iframe[src*=\"adfarm\"],iframe[src*=\"adfarmadSpace\"],iframe[src*=\"adserver\"],iframe[src*=\"adjuggler\"],iframe[src*=\".banner\"],iframe[src*=\"bluestreak\"],iframe[src*=\"doubleclick\"],iframe[src*=\"/rd.\"],iframe[src*=\"/0AD\"],iframe[src*=\".falkaq.\"],iframe[src*=\"connextra.\"],iframe[src*=\"tracksponsor.\"],iframe[data-aa],script[src*=\"doubleclick\"] + div,script[src*=\"romanticwait\"] + div,.empower-ad,*[data-empower-id],#empowerplayercontainer,*[id^=\"bg-ssp-\"],a[href*=\"ajker-sangbad.com\"],a[href*=\"story.alandal.com/psycho-asura\"],.google-auto-placed,*[data-ad-format],*[data-adtrack-id],.rev-src,iframe[src=\"about:blank\"] + div[style]:last-child,a[href*=\"deflink\"],#Arpian-ads,iframe[id^=\"bg_\"],.adv,#vi-smartbanner,*[data-ad-slot],html > iframe,div:has(> [prclck]),[prclck],a[href*=\"gotrackier\"],body > nav:not([id]):not([class]):not([style]) > a[style]:first-child:last-child,body > section:not([id]):not([class]):not([style]) > span:first-child:last-child > a[style],html > ins,.kln:has(> script),.adblock_title,.adblock_subtitle,div[id]:has(div[id] h4.adblock_title),div:has([data-izone]),script[src*=\"trotolhonor.com\"] + iframe,.custom-html-widget:has(script[src*=\"separatelysmackfibber\"]),#content a[href*=\"kit-food.com\"],*[pa-slot-container],*[id^=\"exo_slider\"],.exo-native-widget-outer-container,iframe[src*=\"a.magsrv.com\"],#theradios_content,script[src*=\"dummieseardrum\"] + iframe,.ts-im-container,.adxp-sticky,div[id*=\"ScriptRoot\"],#catfishAd,div:has(> script[src*=\"tingisincused.com\"]),.ob-widget-items-container:has([data-adv-id]){position: fixed!important;display: none!important;opacity: 0!important;top: -99999px!important;left: -99999px!important;right: unset!important;bottom: unset!important;visibility: hidden!important;z-index: -1000!important;pointer-events: none!important;height: 0!important;width: 0!important;max-height: 0!important;min-height: 0!important;max-width: 0!important;min-width: 0!important;overflow: hidden!important;transform: translate(-99999px, -99999px) scale(0)!important;} body:has(div[id] h4.adblock_title) {overflow: unset !important;}"}
package/index.js CHANGED
@@ -1 +1 @@
1
- (function(B,O){typeof exports=="object"&&typeof module<"u"?O(exports):typeof define=="function"&&define.amd?define(["exports"],O):(B=typeof globalThis<"u"?globalThis:B||self,O(B._trackkun_={}))})(this,function(B){"use strict";function O(a){let t=!1;return new Promise((e,r)=>{Promise.all(a.map(async s=>{const n=await s;!t&&n&&(t=!0,e(n))})).then(()=>{t||e(void 0)})})}function W(a,{removeTrailingSlash:t=!0}={}){if(!a)return;const e=t&&a.endsWith("/")?a.slice(0,-1):a;try{return new URL(e)}catch{return}}function S(a){if(!(!a||typeof a!="string"))return a.startsWith("http://")||a.startsWith("https://")?W(a)?.pathname:a.startsWith("//")?W(`https:${a}`)?.pathname:a}async function N(a,t,e){const r=await e(()=>{a=0});if(r!==void 0)return r;if(!(a<=0))return await new Promise(s=>{setTimeout(async()=>{const n=await N(a-1,t,e);s(n)},t)})}async function $(a,t,e=0){const r=t.root??document.documentElement,s=t.timeoutMs??1e4;return N(t.lazy===!0?s/50:0,50,()=>{const n=t.all===!0?Array.from(r.querySelectorAll(a)):r.querySelector(a)??void 0;return(t.all?!n?.length:!n)?void 0:n})}const Q={text:jt,attr:Lt,"attr-contain":Nt,value:_t,row:zt,"bg-image":At};function g(a,t){if(a)return J(a,t,Bt)}function _(a,t){if(a)return J(a,t,Ot)}function J(a,t,e){if(!a)return;const r=a.split("||").map(s=>s.trim()).filter(s=>!!s&&s.includes("|"));for(const s of r){const n=Pt(s);if(!n)continue;const i=e(t??document.documentElement,n.selector,n.instructions);if(i)return i}}function Pt(a){const[t,e]=a.split("|");if(!e)return;const r=(e?.startsWith("[")&&e.endsWith("]")?e.substring(1,e.length-1).split(","):[e]).map(s=>{const n=s.indexOf(":"),i=n!==-1;return{extractor:i?s.substring(0,n):s,param:i?s.substring(n+1):""}});return{selector:t||void 0,instructions:r}}function Bt(a,t,e){if(!t)return Y(a,e);const r=t.split(",");for(const s of r){const n=Array.from(a.querySelectorAll(s));for(const i of n){const o=Y(i,e);if(o)return o}}}function Ot(a,t,e){const r=t?Array.from(a.querySelectorAll(t)):[a],s=[];for(const n of r)for(const i of e){const o=Q[i.extractor],l=o(n,i.param);if(l){s.push(l);break}}if(s.length)return s}function Y(a,t){for(const e of t){const r=Q[e.extractor],s=r(a,e.param);if(s)return s}}function jt(a){return Array.from(a.childNodes).filter(t=>t.nodeType===3).map(t=>j(t.textContent)).filter(Boolean).join(" ").trim()||j(a.textContent)}function Lt(a,t){return j(a.getAttribute(t))}function Nt(a,t){let e=a.getAttribute(t);if(!e){const r=a.getAttributeNames().find(s=>s.includes(t));r&&(e=a.getAttribute(r))}return j(e)}function _t(a){return a.value}function zt(a,t){if(!t)return;const e=j(a.textContent)?.toLowerCase(),r=t.toLowerCase();if(!(e!==r&&e!==`${r}:`))return j(a.nextElementSibling?.textContent??a.nextSibling?.textContent)}function At(a){const t=getComputedStyle(a).backgroundImage;if(!(!t||!t.startsWith("url(")))return t.slice(5,-2)||void 0}function j(a){if(a)return a?.replace(/(\n|\t)/g," ").trim()||void 0}var kt=(a=>(a[a.reading=1]="reading",a[a.paused=2]="paused",a[a.plan=3]="plan",a[a.completed=4]="completed",a[a.dropped=5]="dropped",a[a.deleted=6]="deleted",a))(kt||{}),Wt=(a=>(a[a.ok=1]="ok",a[a.hidden=2]="hidden",a[a.deleted=3]="deleted",a))(Wt||{}),Et=(a=>(a[a.aggregator=0]="aggregator",a[a.scanlator=1]="scanlator",a))(Et||{}),Ut=(a=>(a[a.pending=0]="pending",a[a.completed=1]="completed",a[a.offline=2]="offline",a[a.incompat=3]="incompat",a))(Ut||{}),E=(a=>(a.id="id",a.name="name",a.slug="slug",a))(E||{}),A=(a=>(a.blank="about:blank",a.title="meta.title",a.reader="meta.reader",a))(A||{});const qt=/(vol(ume)?|season)(\s*|-|\.)(\d+)/i,Ft=/^S([1-9])\s/i,Vt=/(ch(ap(t(er)?|\.)?|\.)?|^#|episode\.?|capitolo\.?|capitulo\.?|bölüm\.?)(\s*|-)(\d+([_-~,.]\d+)?)/i,Ht=/\d+([_-~,.]\d+)?/,Qt=/[_-~,]/;function Jt(a){const t=a.match(qt);if(t)return{volStr:t[0],volValueStr:t[4]};const e=a.match(Ft);return e?{volStr:e[0],volValueStr:e[1]}:{}}function C(a){if(!a)return;if(!isNaN(+a))return{chap:+a};const{volStr:t,volValueStr:e}=Jt(a),r=t?a.replace(t,"").trim():a,s=r.match(Vt),n=r.match(Ht),i=s?.[6],o=i??n?.[0];if(!o)return;const l=+o.replace(Qt,".");return isNaN(l)?void 0:{vol:t&&e&&!isNaN(+e)&&a.indexOf(t)<a.indexOf(i?s[0]:n[0])?+e:void 0,chap:l}}async function Z(a,t=240){return new Promise(e=>{const r=new Image;r.crossOrigin="anonymous",r.onerror=()=>e(void 0),r.onload=()=>{const s=document.createElement("canvas"),n=s.getContext("2d"),i=Math.max(1,r.naturalWidth/t),o=r.naturalWidth/i,l=r.naturalHeight/i;s.width=o,s.height=l;const c=/iPad|iPhone|iPod/.test(navigator.userAgent);try{n.drawImage(r,0,0,o,l);const u=s.toDataURL(c?"image/jpg":"image/webp",c?.99:.8).split(",").slice(-1)[0];e(u)}catch{e(void 0)}},r.src=a})}async function Yt(a,t=240){const e=await Zt(a);if(e)return await new Promise(async r=>{const s=Z(e,t),n=setTimeout(()=>r(void 0),100),i=await s;clearTimeout(n),r(i)})}async function Zt(a){try{const t=await fetch(a);if(t.status>=400)return;const e=await t.blob();return URL.createObjectURL(e)}catch{return}}function z(a){return a.sort((t,e)=>t.vol===void 0||e.vol===void 0?e.chap-t.chap:e.vol-t.vol||e.chap-t.chap),Gt(a)}function Gt(a){const t={};for(let e=a.length-1;e>=0;e--){const r=a[e],s=r.lang??"";r.vol!==void 0?t[s]=r.vol:t[s]!==void 0&&(r.inferVol=t[s])}return a}const Kt=[{seconds:1,locales:{en:"sec",vi:"gi\xE2y",tr:"ikinci",es:"segunda"}},{seconds:60,locales:{en:"min",vi:"ph\xFAt",tr:"dakika"}},{seconds:3600,locales:{en:"hour",vi:"gi\u1EDD",tr:"saat",fr:"heure",it:"ora",es:"hora"}},{seconds:86400,locales:{en:"day",vi:"ng\xE0y",tr:"g\xFCn",fr:"jour",it:"giorno",es:"d\xEDa"}},{seconds:604800,locales:{en:"week",vi:"tu\u1EA7n",tr:"hafta",fr:"semaine",it:"settimana",es:"semana"}},{seconds:2592e3,locales:{en:"month",vi:"th\xE1ng",tr:"ay",fr:"mois",it:"mese",es:"mes"}},{seconds:31536e3,locales:{en:"year",vi:"n\u0103m",tr:"yil",fr:"ann",it:"anno",es:"a\xF1o"}}];function G(a,t){const e=a?.toLowerCase();if(!e)return;const r=Date.now();if(e.includes("now"))return r;if(e.includes("yesterday"))return r-864e5;const s=new Date(e);if(s instanceof Date){const c=s.valueOf();if(!isNaN(c))return s.getHours()===0&&s.getMinutes()===0?Math.min(r,c+432e5):c}const n=Kt.find(c=>t&&c.locales[t]&&e.indexOf(c.locales[t])!==-1?!0:e.indexOf(c.locales.en)!==-1);if(!n)return;const i=e.split(" ").filter(Boolean),o=K(i)??K(i,["a","an"]);if(!o)return;const l=r-o*n.seconds*1e3;return l>0?l:void 0}function K(a,t){for(let e=0;e<a.length;e++){const r=a[e];if(t?.includes(r))return 1;const s=+r;if(s)return s<0?void 0:s}}function X(a,t=location.origin){if(!a)return;const e=new URL(a.startsWith("//")?`${location.protocol}${a}`:a,location.origin+location.pathname).toString();return e.startsWith(t)?e.replace(t,""):e}function tt(a,{titleSlug:t,titleId:e}){if(!a)return"/";let r=a.replace("{titleSlug}",t);e&&(r=r.replace("{titleId}",e));const s=r.endsWith("/")?r:r+"/";return s.startsWith("/")?s:"/"+s}function Xt(a,t){const e=[...t],r=[];let s=!1,n=0;const i=Math.min(a.length,100);for(let l=0;l<i;l++){if(n>=10/2){const p=10-r.length;if(p>0){const v=l+p<=a.length?a.slice(l,l+p):e.slice(0,p);r.push(...v)}break}const c=a[l],u=c.id!==void 0,d=e.findIndex(p=>u&&p.id===c.id||p.slug===c.slug||p.name==c.name),h=d===-1?void 0:e.splice(d,1)[0];!h||h.chapters[0]?.chap!==c.chapters[0]?.chap?(s=!0,r.push({...c,changed:!0})):(n++,r.push(c))}if(!s)return{hasMore:!1,rawReleases:[]};if(r.length<=10)return{hasMore:!!a[a.length-1]?.changed,rawReleases:r};const o=[];for(let l=0;l<r.length;l++){const c=r[l];(c.changed||l<10)&&o.push(c)}return{hasMore:t.length<2||t.length-e.length<2,rawReleases:o}}function te(a,t){const e={};return a.forEach(r=>{const s=r.chapters.reduce((n,i)=>{const o=i.lang||t||"";return n[o]||(n[o]=[]),n[o].push(i),n},{});Object.entries(s).forEach(([n,i])=>{const o=`${r.slug}:${n}`;e[o]?(e[o].chapters.push(...i),z(e[o].chapters)):e[o]={...r,lang:n===""?void 0:n,chapters:i}})}),Object.values(e)}var x=(a=>(a.title="title",a.reader="reader",a.releases="releases",a.chapters="chapters",a.search="search",a))(x||{}),ee=Object.defineProperty,ae=(a,t,e)=>t in a?ee(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,I=(a,t,e)=>(ae(a,typeof t!="symbol"?t+"":t,e),e);class k{constructor(t){I(this,"siteId"),I(this,"spec"),I(this,"siteMeta"),I(this,"tags"),I(this,"context"),I(this,"methodsMap",{[x.title]:()=>this.getRawTitleData(),[x.reader]:()=>this.getRawReaderData(),[x.releases]:()=>this.getRawReleasesData(),[x.search]:()=>this.getRawSearchData(),[x.chapters]:()=>this.getRawChaptersData()}),I(this,"normalizedTagsMap"),this.siteId=t.siteId,this.spec=t.spec,this.siteMeta=t.siteMeta,this.tags=t.tags,this.context=t.context}async getRawSearchData(){throw new Error("Unimplemented")}async getRawPageByType(t,e=!1){const r=await this.methodsMap[t](),s=!r&&(t===x.title||t===x.reader)&&await se(this.spec);if(e&&!r&&!s)return;const n=location.origin+location.pathname;return{type:t,is404:s,specId:this.spec.id,siteName:g(this.spec.name),url:n,data:r,spec:this.spec,context:this.context}}parseReaderSlug(t,e,r){let s=e;if(s[0]!=="/"&&s.includes("/"))try{s=new URL(e,location.href).pathname}catch{}const n=s.endsWith("/")?s.slice(0,-1):s;if(t.includes("{")){const i=t.split("/").filter(Boolean),o=n.split("/").filter(Boolean);if(i.length<o.length){const l=o[i.indexOf("{lang}")],c=o[i.indexOf("{titleId}")],u=o[i.indexOf("{titleSlug}")],d=t.replace("{lang}",l).replace("{titleId}",c).replace("{titleSlug}",u);if(n.startsWith(d))return{basePath:d,lang:l.toLowerCase(),titleId:c,titleSlug:u,slug:n.replace(d,"")}}}else if(n.startsWith(t))return{basePath:t,slug:n.replace(t,"")};return{basePath:"",slug:n[0]==="/"?n.substring(1):n}}parseTitleSlug(t){if(typeof t!="string")return{};const e=S(t),r=e?.split("/").filter(Boolean);if(!r?.length)return{};const s=this.siteMeta.titleBase.split("/").filter(Boolean),n=s.indexOf("{slug}");return(n===-1?r.length-s.length>=1:r.length===s.length)?{id:r[s.indexOf("{id}")],slug:n===-1?r.slice(s.length).join("/"):r[n]}:{slug:e}}finalizeRawReleasesData(t){const e=this.spec.releases?.title?.lang?this.siteMeta.defaultLang:void 0,r=te(t.rawReleases,e);if(r.length)return this.context?.oldRawReleases?Xt(r,this.context.oldRawReleases):{rawReleases:r,hasMore:!0}}getTagIdsFromNames(t){if(!t?.length)return;const e=this.normalizedTagsMap??(this.normalizedTagsMap=re(this.tags)),r=t.map(s=>e[U(s)]).filter(Boolean);return r.length===0?void 0:Array.from(new Set(r)).sort((s,n)=>s-n)}}I(k,"specId"),I(k,"siteId");function re(a){const t={};return a.forEach(({id:e,name:r,altNames:s})=>{t[U(r)]=e,s&&s.forEach(n=>{t[U(n)]=e})}),t}function U(a){const t=a.toLowerCase().replaceAll(" ","").replaceAll("-","");return t[t.length-1]==="s"?t.substring(0,t.length-1):t}async function se(a){return ne()===404||a[404]&&await $(a[404],{lazy:!0,timeoutMs:5e3})?!0:document.title.toLowerCase().includes("not found")}function ne(){try{return window.performance.getEntries().find(a=>a.entryType==="navigation")?.responseStatus}catch{return}}class f extends k{async getRawReleasesData(){if(!this.spec?.releases?.title)return;const{chapter:t,...e}=this.spec.releases.title,r=await $(e.sel,{lazy:!0,all:!0});if(!r?.length)return;const s=r.slice(0,100).map(i=>{const o=g(e.url,i),l=S(o),c=g(e.name,i),u=g(e.at,i);if(!(!l||!c))return{titleEl:i,id:g(e.id,i),path:l,name:c,lang:g(e.lang,i)?.toLowerCase(),at:G(u,this.siteMeta.defaultLang)}}).filter(Boolean);if(!s.length)return;const n=[];return await Promise.all(s.map(async i=>{const{path:o,titleEl:l,lang:c,at:u,...d}=i,{id:h,slug:p}=this.parseTitleSlug(o);if(!p)return;const v=d.id||h,y=await this.getChapters(t,{root:l,titleId:v,titleSlug:p})??[];y.length&&n.push({slug:p,chapters:c||u?y.map(w=>({...w,elIndex:void 0,lang:w.lang??c,ts:w.ts??u})):y,...d,id:v})})),this.finalizeRawReleasesData({rawReleases:n})}getRawTitleData(){return this.getTitleData(this.spec.title)}async getTitleData(t){if(!t||(t.sel||t.lazy)&&!await $(t.sel??t.name,{lazy:!!t.lazy}))return;const e=g(t.name);if(!e)return;const{id:r,slug:s}=this.parseTitleSlug(location.pathname);if(!s)return;let n=_(t.tags)??[];n.length===1&&(n=n[0].split(",").map(h=>h.trim()).filter(Boolean));const i=g(t.type),o=_(t.langs)?.map(h=>h.toLowerCase()),l=r||g(t.id),c=await this.getChapters(t.chapter,{lazy:!0,titleId:l,titleSlug:s})??[],u=t.img?await this.getValidImgSrc(t.img):void 0,d=u&&this.context?.includeImgBytes?await Yt(u):void 0;return{id:l||g(t.id),url:location.origin+location.pathname,slug:s,name:e,langs:o?.length?o:t.langs&&this.siteMeta.defaultLang?[this.siteMeta.defaultLang]:void 0,tags:this.getTagIdsFromNames([...n??[],...i?[i]:[]]),chapters:c,hasMoreChapters:t.hasMore?!!document.querySelector(t.hasMore):void 0,img:u,imgBytes:d,firstUrl:this.getFirstChapterUrl()}}getFirstChapterUrl(){const t=g(this.spec.title?.first);if(t){if(t.startsWith("http"))return t;try{return new URL(t,location.href).href}catch{return}}}getValidImgSrc(t){return N(33,30,()=>{const e=g(t);return e&&!e.startsWith("data:")?e.split(" ")[0]:void 0})}getRawReaderTitleData(){const t=this.spec.reader?.title;if(!t)return;const e=t.sel?document.querySelector(t.sel)??void 0:void 0,r=g(t.name,e),s=g(t.url,e),{slug:n,id:i}=this.parseTitleSlug(s),o=X(g(t.img,e));if(!(!r||!s||!n))return{name:r,img:o,url:s,slug:n,id:i||g(t.id)}}async getRawReaderData(){const{spec:t,siteMeta:e}=this;if(!t?.reader||t.generic&&!await f.isReaderPage(t.reader))return;const r=t.reader.content;if(!(!r||await f.verifyImgsCotainer(r)))return;const s=this.getRawReaderTitleData();if(!s)return;const{id:n,slug:i}=s,o=t.reader?.chapter,l=!!this.context?.disableLazyChapters,c=!!this.context?.includeHiddenChapters,u=await this.getChapters(o,{titleId:n,titleSlug:i,lazy:c||!l,includeHiddenChapters:c,timeoutMs:c?3e3:12e4,includeIndex:!0})??[],d=g(t.reader.label)?.toLowerCase().replace(s.name.toLowerCase(),"");if(!d)return;const{vol:h,chap:p=0}=C(d)||{},{slug:v,basePath:y,lang:w,titleId:b}=this.parseReaderSlug(tt(e.readerBase,{titleId:n,titleSlug:i}),location.pathname,location.href),m=this.findNeighborChapter({sel:t.reader.prev,basePath:y}),P=this.findNeighborChapter({sel:t.reader.next,basePath:y});return this.finalizeRawReaderData({vol:h,chap:p,lang:w??g(t.reader.lang)?.toLowerCase()??(t.reader.lang?this.siteMeta.defaultLang:void 0),slug:v,basePath:y,imgs:r?void 0:_(t.reader.imgs),title:{id:n||b||g(this.spec.reader?.title.id),url:s.url,slug:i,name:s.name,langs:w?[w]:void 0,img:s.img,chapters:u,hasMoreChapters:!u.length&&!c&&!!this.context?.disableLazyChapters&&!!o?.label}},{prevSlug:m,nextSlug:P})}async getRawChaptersData(){const t=this.siteMeta.chapters;if(t===A.blank)return;const e=t===A.reader,r=!t||t===A.title,s=e?(await this.getRawReaderData())?.title:r?await this.getRawTitleData():void 0;let n=s?.chapters;if(!e&&!r&&(n=await this.getChapters(this.spec.chapters?.chapter,{lazy:this.spec.chapters?.lazy})),!n)return;const i=this.context?.lang,o=i?n.filter(l=>!l.lang||l.lang===i):n;return{chapters:o,title:s?{...s,chapters:[]}:await this.getTitleData(this.spec.chapters?.title),hasMore:!1,asc:!1,total:o.length}}async getRawSearchData(){const t=this.spec.search?.title;if(!t)return;const{chapter:e}=t,r=[];return await Promise.all(Array.from(document.querySelectorAll(t.sel)).map(async s=>{const n=g(t.url,s),i=S(n),o=g(t.name,s),{slug:l,id:c}=this.parseTitleSlug(i);!i||!o||!l||r.push({id:c,slug:l,name:o,chapters:await this.getChapters(e,{root:s,titleId:c,titleSlug:l})??[]})})),r.length?{rawReleases:r}:void 0}async getChapters(t,{root:e,titleId:r="",titleSlug:s="",includeHiddenChapters:n=!1,lazy:i=!0,timeoutMs:o,includeIndex:l}={}){if(!t||!t.sel||!t.label)return;let c=null;if(t.trigger){if(!n||(c=document.querySelector(t.trigger),!c))return;c.click()}const u=[],d=await $(t.sel,{root:e,all:!0,lazy:i,timeoutMs:o});if(!d?.length)return c?.click(),[];const h=(d??[]).map((b,m)=>({id:g(t.id,b),label:g(t.label,b),url:g(t.url,b),at:g(t.at,b),elIndex:m}));c?.click();const p=h.map(({label:b})=>C(b)),v=p[1]?.chap;!p[0]&&(v===void 0||v<=1)&&(p[0]={chap:0});const{readerBase:y}=this.siteMeta,w=tt(y,{titleId:r,titleSlug:s});return p.forEach((b,m)=>{if(!b)return;const{id:P,url:T,at:F,elIndex:V}=h[m],R={...b,id:P,ts:G(F,this.siteMeta.defaultLang)};l&&(R.elIndex=V);const Tt=T?.startsWith("http")&&!T.includes(`//${location.hostname}/`),H=Tt?T:S(T);if(!H){u.push(R);return}if(Tt){u.push({...R,slug:H});return}const{slug:Ra,lang:xa}=this.parseReaderSlug(w,H,T);u.push({...R,slug:Ra,lang:xa})}),z(u)}static async isReaderPage(t){return!!t.sel&&!!await $(t.sel,{lazy:!!t.lazy})}static async verifyImgsCotainer(t){const e=t.split(",").map(r=>r.trim()).filter(Boolean).map(r=>`${r} img, ${r} canvas`).join(",");return!!await $(e,{lazy:!0,all:!1})}findNeighborChapter({sel:t,basePath:e}){const r=g(t);if(!r||r.startsWith("#")||r.startsWith("/#"))return;const s=S(r);if(s)return this.parseReaderSlug(e,s,r).slug||void 0}finalizeRawReaderData(t,{prevSlug:e,nextSlug:r}={}){const s=t.title.chapters;if(!s.length){const c=C(e),u=C(r);return!c&&!u?t:{...t,prev:c?{...c,slug:e}:void 0,next:u?{...u,slug:r}:void 0}}let n,i,o,l;for(let c=0;c<s.length&&!(n&&(!e||o)&&!r&&l);c++){const u=s[c];!n&&(t.slug==u.slug||t.chap===u.chap&&(t.vol===u.vol||t.vol===void 0))?(n=u,i=c):!o&&e===u.slug?o=u:!l&&r===u.slug&&(l=u)}return i!==void 0&&(o??(o=s[i+1]),l??(l=s[i-1])),{...t,inferVol:n?.inferVol,prev:o,next:l}}}var ie=Object.defineProperty,oe=(a,t,e)=>t in a?ie(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,le=(a,t,e)=>(oe(a,typeof t!="symbol"?t+"":t,e),e);class et extends f{parseTitleSlug(t){return{slug:S(t)?.split("/").filter(Boolean)[1]}}}le(et,"specId","bato");function ce(){return Math.random().toString(16).slice(2)}async function ue({addListener:a,removeListener:t,transform:e,filter:r,handler:s,onTimeout:n,timeout:i,once:o}){return new Promise(l=>{a(d);const c=()=>o===!0&&t(d),u=i?setTimeout(()=>{c(),l(void 0),n?.()},i):void 0;async function d(h,...p){h=e?e(h):h,h!==void 0&&(!r||r(h,...p))&&(c(),l(h),s?.(h,...p),u&&clearTimeout(u))}})}async function ge(a){return(await ue({addListener:t=>window.addEventListener("message",t),removeListener:t=>window.removeEventListener("message",t),...a}))?.data}async function de(a){const{receiverWindow:t,timeout:e,targetOrigin:r,event:s,args:n}=a,i={reqId:ce(),event:s,args:n};return(t||window)?.postMessage(i,r??"*"),(await ge({filter:o=>o?.data?.resId===i.reqId,timeout:e??3e4,once:!0}))?.result}const L={isAny:!0};function M(a,...t){return de({event:"tk:fetchResult",args:{baseUrl:a,segments:t}})}var he=Object.defineProperty,pe=(a,t,e)=>t in a?he(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,fe=(a,t,e)=>(pe(a,typeof t!="symbol"?t+"":t,e),e);const at=class Ct extends f{async getRawReleasesData(){let t;try{const r=Array.from({length:2},async(s,n)=>{const i=`https://api.${location.host}/chapter?accept_erotic_content=true&page=${n+1}&order=new`;return(await fetch(i)).json()});t=(await Promise.all(r)).flat()}catch{return}const e=[];return t.forEach(r=>{const{vol:s,chap:n,hid:i,lang:o,updated_at:l,md_comics:c}=r,u=typeof n=="string"&&!isNaN(+n)?+n:void 0;typeof u=="number"&&e.push({id:c.hid,slug:c.slug,name:c.title,chapters:[{slug:i,vol:typeof s=="string"&&!isNaN(+s)?+s:void 0,chap:u,lang:o,ts:new Date(l).valueOf()}]})}),super.finalizeRawReleasesData({rawReleases:e})}async getRawTitleData(){const t=await super.getRawTitleData();if(!t)return t;const e=await M(`https://api.${location.host}`,"comic",L,"chapters");if(!e)return t;const r=e.url.split("/").filter(Boolean).slice(-2)[0],s=rt(e.value),n=g("h1 ~ div.text-sm span:first-child|row:demographic"),i=n?this.getTagIdsFromNames([n])?.[0]:void 0;return i&&!t.tags?.includes(i)&&(t.tags?.push(i),t.tags?.sort((o,l)=>o-l)),{...t,img:t.img??X(g(this.spec.title?.img)),id:r,hasMoreChapters:s?.hasMore??!1,chapters:s?.chapters??[]}}async getRawReaderData(){const t=await super.getRawReaderData();return t&&{...t,lang:t.lang&&t.lang?.length<=6?t.lang:Ct.getLangFromReaderSlug(t.slug)||t.lang}}static getLangFromReaderSlug(t){const e=t.split("-");let r;for(let s=e.length-1;s>0;s--){const n=e[s];if(!isNaN(+n))break;r=r?`${n}-${r}`:n}return r&&r.length<=6?r:void 0}async getRawChaptersData(){if(!this.context?.rawId)return;const{rawId:t,lang:e="en",skip:r}=this.context,s=r?Math.floor(r/1e3)+1:void 0;try{const n=await fetch(`https://api.${location.host}/comic/${t}/chapters?lang=${e}&limit=1000${s&&s>1?`&page=${s}`:""}`),i=rt(await n.json());return i?{...i,lang:e,asc:!1}:void 0}catch{return}}};fe(at,"specId","comick");let me=at;function rt(a){if(!Array.isArray(a?.chapters))return;const t=[];return a.chapters.forEach(e=>{const{vol:r,chap:s,hid:n,lang:i,updated_at:o}=e,l=typeof s=="string"&&!isNaN(+s)?+s:void 0;typeof l!="number"||t.some(c=>c.vol==r&&c.chap===l&&c.lang===i)||t.push({slug:n,vol:typeof r=="string"&&!isNaN(+r)?+r:void 0,chap:l,lang:i,ts:new Date(o).valueOf()})}),{chapters:z(t),total:a.total??t.length,hasMore:a.total>a.limit}}var we=Object.defineProperty,ve=(a,t,e)=>t in a?we(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,ye=(a,t,e)=>(ve(a,typeof t!="symbol"?t+"":t,e),e);class st extends f{async getRawChaptersData(){const t=this.context?.titleSlug;if(!t)return;const e=`https://api.${location.host}/chapter/all/${t}`;return{chapters:(await(await fetch(e)).json()).map(be).filter(Boolean)}}}ye(st,"specId","lua");function be(a){if(!a||typeof a.chapter_name!="string")return;const t=C(a.chapter_name);if(t)return{...t,slug:typeof a.chapter_slug=="string"?a.chapter_slug:void 0,ts:typeof a.created_at=="string"?new Date(a.created_at).valueOf():void 0}}function nt(a,t){const e=a[0]===t?a.substring(1):a;return e[e.length-1]===t?e.substring(0,e.length-1):e}var Re=Object.defineProperty,xe=(a,t,e)=>t in a?Re(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Se=(a,t,e)=>(xe(a,typeof t!="symbol"?t+"":t,e),e);class q extends f{async getRawReleasesData(){const t=this.detectNewSiteMeta(this.spec.releases,this.siteMeta);this.siteMeta=t??this.siteMeta;const e=await super.getRawReleasesData();if(e)return{...e,siteMeta:t}}async getRawTitleData(){const t=this.finalizeNewSiteMeta(this.siteMeta,{titleBase:this.extractBasePath(location.pathname)});this.siteMeta=t??this.siteMeta;const e=await super.getRawTitleData();if(e)return{...e,siteMeta:t}}async getRawReaderData(){const t=it(this.spec.reader?.title);if(!t)return;const e=this.finalizeNewSiteMeta(this.siteMeta,{titleBase:this.extractBasePath(S(t))});this.siteMeta=e??this.siteMeta;const r=await super.getRawReaderData();if(r)return{...r,siteMeta:e}}async getRawSearchData(){const t=it(this.spec.search?.title);if(!t)return;const e=this.finalizeNewSiteMeta(this.siteMeta,{titleBase:this.extractBasePath(S(t))});this.siteMeta=e??this.siteMeta;const r=await super.getRawSearchData();if(r)return{...r,siteMeta:e}}detectNewSiteMeta(t,e){if(!t)return;const r=t.title,s=document.querySelector(r.sel)??void 0;if(!s)return;const n=S(g(r.url,s));if(n!==void 0)return this.finalizeNewSiteMeta(e,{titleBase:this.extractBasePath(n)})}finalizeNewSiteMeta(t,{titleBase:e}){if(t.titleBase!==e)return{...t,titleBase:e,readerBase:t.readerBase.replace(t.titleBase,e)}}extractBasePath(t){return nt(t,"/").split("/").slice(0,-1).join("/")}}Se(q,"specId","madara");function it(a){if(!a)return;const t=a.sel?document.querySelector(a.sel)??void 0:void 0;return g(a.url,t)}var $e=Object.defineProperty,Ie=(a,t,e)=>t in a?$e(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Me=(a,t,e)=>(Ie(a,typeof t!="symbol"?t+"":t,e),e);const De={a:.1,b:.2,c:.3,d:.4};class ot extends k{parseTitleSlug(t){return{slug:S(t)?.split("/").filter(Boolean)[1]}}async getRawReleasesData(){let t=[];try{t=(await(await fetch("https://api.mangadex.org/chapter?limit=96&offset=0&includes[]=manga&contentRating[]=safe&contentRating[]=suggestive&contentRating[]=erotica&contentRating[]=pornographic&order[readableAt]=desc")).json()).data}catch{return}const e=[];return t.forEach(({relationships:r,attributes:s,id:n})=>{const i=r.find(({type:d})=>d==="manga"),o=D(s.volume),l=D(s.chapter);if(l===void 0)return;const{title:c}=i.attributes,u=c.en??Object.values(c)[0];e.push({slug:i.id,name:u,chapters:[{slug:s.externalUrl||n,vol:o,chap:l,lang:s.translatedLanguage,ts:new Date(s.readableAt).valueOf()}]})}),super.finalizeRawReleasesData({rawReleases:e})}async getRawTitleData(){const t="https://api.mangadex.org/manga/",[e,r]=await Promise.all([M(t,L),M(t,L,"feed")]);if(!e||!r)return;const s=r.value.data?.map?.(l=>{const{attributes:c,id:u}=l;if(typeof c!="object"||typeof u!="string"||!u)return;const{externalUrl:d,title:h,volume:p,chapter:v,translatedLanguage:y}=c;return{slug:d||u,label:h||void 0,vol:D(p),chap:D(v),lang:y||"en",ts:new Date(c.readableAt).valueOf()}}).filter(l=>l?.chap!=null)??[],{data:n}=e.value;if(!n)return;const i=ct({data:n,getTagIdsFromNames:l=>this.getTagIdsFromNames(l)});if(!i)return;const o=this.context?.includeImgBytes&&i.img?await Z(i.img):void 0;return{...i,imgBytes:o,chapters:z(s),hasMoreChapters:(r.value.total||0)>(r.value.limit||0)}}async getRawReaderData(){const t="https://api.mangadex.org/",[e,r,s]=await Promise.all([M(t,"chapter",L),M(t,"at-home","server",L),M(t,"manga",L,"aggregate")]);if(!e||!r||!s)return;const n=e.value.data,{volume:i,chapter:o,externalUrl:l,translatedLanguage:c}=n.attributes||{},{baseUrl:u,chapter:{data:d,dataSaver:h,hash:p}}=r.value,v=n.relationships?.find?.(R=>R.type==="manga");if(!v)return;const y=ct({data:v,getTagIdsFromNames:R=>this.getTagIdsFromNames(R)});if(!y||typeof s.value.volumes!="object")return;const w=lt(s.value)??[];(typeof o!="string"||o==="none")&&!w.length&&w.push({chap:0,slug:n.id});const b=w.findIndex(R=>R.slug===n.id),m=n.relationships?.find?.(R=>R.type==="scanlation_group"),P=u.endsWith("/")?u:u+"/",T=!!localStorage.getItem("md")?.includes?.('"dataSaver":true'),F=`${P}${T?"data-saver":"data"}/`,V=((T?h:d)??[]).map?.(R=>`${F}${p}/${R}`)??[];return{externalUrl:l,vol:D(i),inferVol:w[b]?.inferVol,chap:D(o)||0,imgs:V,lang:c,slug:n.id,prev:w[b+1],next:w[b-1],basePath:"/chapter/",groupName:m?.attributes?.name,groupUrl:m?.attributes?.website,isWebtoon:v?.attributes?.tags?.some(R=>R.attributes.name.en==="Long Strip"),title:{...y,chapters:w}}}async getRawChaptersData(){if(!this.context)return;const{titleSlug:t,lang:e="en"}=this.context;let r;try{const s=await fetch(`https://api.mangadex.org/manga/${t}/aggregate?translatedLanguage[]=${e}`);r=lt(await s.json())}catch{return}if(r)return{chapters:r,lang:e,asc:!1,hasMore:!1,total:r.length}}}Me(ot,"specId","mangadex");function D(a){if(typeof a!="string"||a==="none")return;const t=parseFloat(a);if(t!==t)return;const e=a[a.length-1];return t+(De[e]??0)}function lt(a){if(typeof a.volumes!="object")return;const t=Object.values(a.volumes).map(({volume:e,chapters:r})=>{const s=D(e);return Object.values(r).map(({id:n,chapter:i})=>{const o=D(i);if(o!==void 0)return{vol:s,chap:o,slug:n}})}).flat().filter(Boolean).reverse();return z(t)}function ct({data:a,getTagIdsFromNames:t}){const{id:e,attributes:r,relationships:s}=a;if(!e||typeof e!="string"||typeof r!="object")return;const{title:n,availableTranslatedLanguages:i,altTitles:o,tags:l,contentRating:c}=r;if(typeof n!="object"||i&&!Array.isArray(i))return;const u=Object.values(n)[0];if(!u||typeof u!="string")return;const d=Te(),h=(i??[])?.map?.(m=>typeof m=="string"?m:void 0).filter(Boolean)??[],p=h.filter(m=>m&&(!d||d.includes(m))),v=o?.map?.(m=>{const[[,P]=[]]=Object.entries(m);return P}),y=s?.find?.(m=>m.type==="cover_art")?.attributes?.fileName,w=y?`https://mangadex.org/covers/${e}/${y}.256.jpg`:void 0,b=(l||[]).map(m=>m?.attributes?.name?.en).concat(c).filter(Boolean);return{url:`${location.origin}/title/${e}`,slug:e,name:u,altNames:v,langs:p.length>0?p:h.length>0?h:["en"],img:w,tags:t(b)}}function Te(){const a=localStorage.getItem("md");if(a)try{const t=JSON.parse(a)?.userPreferences?.filteredLanguages;return t?.length?t:void 0}catch{return}}var Ce=Object.defineProperty,Pe=(a,t,e)=>t in a?Ce(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Be=(a,t,e)=>(Pe(a,typeof t!="symbol"?t+"":t,e),e);class ut extends f{async getRawReleasesData(){const t=await super.getRawReleasesData();if(t)return{...t,rawReleases:t.rawReleases.map(e=>({...e,id:e.id?.split("?")[0]}))}}async getRawReaderData(){if((await $(".current-viewtype",{lazy:!0,all:!1}))?.textContent?.trim().toLowerCase()!=="volume")return await super.getRawReaderData()}async getRawChaptersData(){const t=this.context?.lang;if(!t)return;const e=await $(`.tab-content[data-name="chapter"] a.dropdown-item[data-code="${t.toUpperCase()}"]`,{lazy:!0,all:!1});if(e)return e.click(),await $(`.tab-content[data-name="chapter"] li.item[data-number] a[href*="/${t}/"]`,{lazy:!0,all:!1}),await super.getRawChaptersData()}}Be(ut,"specId","mangafire");var Oe=Object.defineProperty,je=(a,t,e)=>t in a?Oe(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Le=(a,t,e)=>(je(a,typeof t!="symbol"?t+"":t,e),e);class gt extends f{async getRawReaderData(){const t=await super.getRawReaderData();return t&&{...t,imgs:await this.getImgs()}}parseReaderSlug(t,e){const{slug:r,basePath:s}=super.parseReaderSlug(t,e),n=r.split("/").filter(Boolean),i=n[n.length-1];return{basePath:s,slug:i.startsWith("pg-")?n.slice(0,-1).join("/"):r}}async getImgs(){const t=await N(100,20,()=>window.imgsrcs),e=window.CryptoJS,r=e.enc.Hex.parse("e11adc3949ba59abbe56e057f20f883e"),s={iv:e.enc.Hex.parse("1234567890abcdef1234567890abcdef"),padding:e.pad.ZeroPadding};return e.AES.decrypt(t,r,s).toString(e.enc.Utf8).split(",")}}Le(gt,"specId","mangago");var Ne=Object.defineProperty,_e=(a,t,e)=>t in a?Ne(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,ze=(a,t,e)=>(_e(a,typeof t!="symbol"?t+"":t,e),e);class dt extends f{async getRawTitleData(){const t=await super.getRawTitleData();return t&&{...t,chapters:t.chapters.map(e=>({...e,slug:e.slug?.split("/").filter(Boolean).slice(-1)[0]}))}}}ze(dt,"specId","mangaplus");var Ae=Object.defineProperty,ke=(a,t,e)=>t in a?Ae(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,We=(a,t,e)=>(ke(a,typeof t!="symbol"?t+"":t,e),e);class ht extends f{async getRawReleasesData(){const t=await super.getRawReleasesData();if(t)return{...t,rawReleases:t.rawReleases.map(e=>({...e,id:e.slug.substring(e.slug.lastIndexOf("-")+1)||void 0}))}}}We(ht,"specId","mangareader");var Ee=Object.defineProperty,Ue=(a,t,e)=>t in a?Ee(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,qe=(a,t,e)=>(Ue(a,typeof t!="symbol"?t+"":t,e),e);class pt extends q{async getRawReaderData(){const t=await super.getRawReaderData();if(t)return{...t,title:{...t.title,id:await this.getReaderTitleId()}}}async getReaderTitleId(){const t=await window.HISTORY?.getStored?.();if(!t||typeof t!="object")return;const e=Object.values(t).filter(Boolean);if(!e.length)return;e.sort((s,n)=>n.time-s.time);const r=e[0].manga_ID;return typeof r=="string"?r:typeof r=="number"?r+"":void 0}detectNewSiteMeta(t,e){if(this.siteId==="realm"||!t)return;const r={...e,releases:nt(location.pathname,"/")},s=t.title,n=document.querySelector(s.sel)??void 0;if(!n)return;const i=S(g(s.url,n));if(i===void 0)return;const o=n.querySelector(s.chapter.sel)??void 0;if(!(!o||S(g(s.chapter.url,o))===void 0))return r.titleBase=this.extractBasePath(i),e.titleIdType===E.id&&(g(s.id,n)||(e.titleIdType=E.name)),this.finalizeNewSiteMeta(e,r)}finalizeNewSiteMeta(t,e){if(this.siteId==="realm")return;const r=Object.keys(e),s={...t};let n=!1;return r.forEach(i=>{const o=e[i];o!==t[i]&&(s[i]=o,n=!0)}),n?s:void 0}}qe(pt,"specId","mangastream");var Fe=Object.defineProperty,Ve=(a,t,e)=>t in a?Fe(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,He=(a,t,e)=>(Ve(a,typeof t!="symbol"?t+"":t,e),e);class ft extends f{async getRawReaderData(){const t=await super.getRawReaderData();if(t)return{...t,title:{...t.title,name:t.title.name.replace("Ritorna a","").trim()}}}}He(ft,"specId","mangaworld");var Qe=Object.defineProperty,Je=(a,t,e)=>t in a?Qe(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Ye=(a,t,e)=>(Je(a,typeof t!="symbol"?t+"":t,e),e);class mt extends f{async getRawTitleData(){const t=await super.getRawTitleData();if(t)return{...t,hasMoreChapters:t.chapters.length===50}}}Ye(mt,"specId","mgeko");var Ze=Object.defineProperty,Ge=(a,t,e)=>t in a?Ze(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Ke=(a,t,e)=>(Ge(a,typeof t!="symbol"?t+"":t,e),e);class wt extends f{async getRawTitleData(){const t=await super.getRawTitleData();if(!t)return t;const e=await M(`https://api.${location.host}`,"chapter","query");if(!e)return;let r;try{r=new URL(e.url).searchParams.get("series_id")}catch{return}if(!r)return;const{first_page:s,last_page:n}=e.value.meta||{};return{...t,id:r,hasMoreChapters:s!==n}}async getRawChaptersData(){if(!this.context?.rawId)return;const{rawId:t}=this.context;try{const e=await(await fetch(`https://api.${location.host}/chapter/query?page=1&perPage=1000&query=&order=desc&series_id=${t}`)).json();if(!e?.data?.map)return;const r=[];return e.data.forEach(s=>{const{chapter_name:n,chapter_slug:i,created_at:o}=s;if(typeof n!="string"||typeof i!="string")return;const l=C(n);if(l?.chap)return{...l,slug:i,ts:o&&new Date(o).valueOf()||void 0}}),{chapters:r,hasMore:!1,asc:!1}}catch{return}}}Ke(wt,"specId","reaper");var Xe=Object.defineProperty,ta=(a,t,e)=>t in a?Xe(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,ea=(a,t,e)=>(ta(a,typeof t!="symbol"?t+"":t,e),e);class vt extends f{async getRawTitleData(){const t=await super.getRawTitleData();if(!t)return;const e=_(".info-detail__row > .genre-btn,.info__right .stats__row:first-child|text")?.map(r=>[r,...r.split(" ")]).flat();return yt({...t,tags:this.getTagIdsFromNames(e)??[]},".episode-header .episode-cnt")}async getRawReaderData(){const t=await super.getRawReaderData();if(!t)return;const e=`${location.origin}/series/${t.title.slug}/info`;return{...t,title:{...yt({...t.title,url:e,tags:[]},".episode-list .js-ep-cnt"),hasMoreChapters:!1}}}async getRawChaptersData(){if(!this.context)return;const{rawId:t,skip:e}=this.context,r=1e3,s=e?Math.floor(e/1e3)+1:1;try{const n=await fetch(`/series/${t}/episodes?page=${s}&sort=NEWEST&max_limit=${r}`);return aa(await n.json())}catch{return}}parseTitleSlug(t){if(!t)return{};const e=t.split("/").filter(Boolean);return{slug:e[1]??e[0]}}}ea(vt,"specId","tapas");function yt(a,t){const e=ra(t)>20;return{...a,chapters:e?[]:a.chapters,hasMoreChapters:e}}function aa(a){const t=a?.data?.episodes;if(!Array.isArray(t))return;const e=t.map(s=>({chap:s.pending_scene??s.scene,slug:s.id+"",ts:new Date(s.publish_date)?.valueOf?.()||void 0})),r=a?.data?.pagination;return{chapters:e,total:r?.total??e.length,hasMore:!!r?.has_next}}function ra(a){return+(document.querySelector(a)?.textContent?.trim().split(" ")[0]||0)}var sa=Object.defineProperty,na=(a,t,e)=>t in a?sa(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,ia=(a,t,e)=>(na(a,typeof t!="symbol"?t+"":t,e),e);class bt extends f{async getRawReleasesData(){const t=await super.getRawReleasesData();if(t)return{...t,rawReleases:t.rawReleases.map(e=>({...e,id:oa(e.slug)}))}}}ia(bt,"specId","truyenqq");function oa(a){return a.substring(a.lastIndexOf("-")+1).replace(".html","")||void 0}var la=Object.defineProperty,ca=(a,t,e)=>t in a?la(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,ua=(a,t,e)=>(ca(a,typeof t!="symbol"?t+"":t,e),e);class Rt extends f{async getRawTitleData(){const t=await super.getRawTitleData();return t?.img?{...t,img:ga(t.img)}:t}getRawReaderTitleData(){const t=super.getRawReaderTitleData();if(t)return{...t,name:t.name.split(" Chapter")[0]}}async getRawChaptersData(){const t=await this.getRawTitleData();if(!t)return;const e=M(location.origin,"api","chapters"),r=document.querySelector('button[data-key="chapters"]');if(!r)return;r.click();const s=setInterval(()=>r.click(),100),n=await e;if(clearInterval(s),!n?.value)return;const i=n.url.split("?")[1];if(!i)return;const o=new URLSearchParams(i).get("postId");if(!o)return;const l=n.value?.totalChapterCount;if(!l||l<50){const d=xt(n.value);return d?{chapters:d,title:t,hasMore:!1,skip:0,total:l}:void 0}const c=await fetch(`${location.origin}/api/chapters?postId=${o}&skip=0&take=1000&order=desc`),u=xt(await c.json());if(u)return{chapters:u,title:t,total:l,skip:0,hasMore:!1}}}ua(Rt,"specId","vortex");function ga(a){try{return new URL(a,location.href).searchParams.get("url")||void 0}catch{return}}function xt(a){const t=a?.post?.chapters;if(t)return t.map(e=>({slug:e.slug,chap:e.number,ts:e.createdAt?new Date(e.createdAt)?.valueOf?.():void 0})).filter(e=>e.slug&&typeof e.chap=="number")}var da=Object.defineProperty,ha=(a,t,e)=>t in a?da(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,pa=(a,t,e)=>(ha(a,typeof t!="symbol"?t+"":t,e),e);class St extends f{async getRawTitleData(){const t=new URLSearchParams(location.search),e=t.get("episode_no"),r=t.get("title_no");if(e||!r)return;const s=await super.getRawTitleData();if(!s)return;const n=location.pathname.split("/")[1];return{...s,slug:`${s.slug}?title_no=${r}`,id:r,langs:[n].filter(Boolean),chapters:s.chapters.map(i=>({...i,lang:n})),hasMoreChapters:(document.querySelector(".paginate")?.childElementCount??1)>1}}async getRawReaderData(){const t=new URLSearchParams(location.search),e=t.get("episode_no"),r=t.get("title_no");if(!e||!r)return;const s=C(g(".paginate > span:not(:first-child)|text"));if(s===void 0)return;const{chap:n}=s,i=document.title.split("|")[1]?.trim();if(!i)return;const o=location.pathname.split("/"),l=`${o.slice(0,4).join("/")}/list?title_no=${r}`,c=await this.getChapters({sel:"#sequence_scroll li.eg-flick-panel,#toolbar .episode_lst li[data-episode-no]",url:"a|attr:href",label:"|attr:data-episode-no || .num|text"},{lazy:!1,titleId:r,titleSlug:l}),u=o[1];return{chap:n,lang:u,slug:`${location.pathname}?title_no=${r}&episode_no=${e}`,basePath:"",imgs:await this.getReaderImgs(),isWebtoon:!0,title:{id:r,url:l,slug:l,name:i,langs:[u],chapters:(c??[]).map(d=>({...d,lang:u})),hasMoreChapters:!1}}}async getReaderImgs(){const t=_("#_imageList img|[attr:data-url,attr:src]");return t?.length?t:await N(100,50,()=>window.__viewerState__?.scrollViewerParam?.imageList?.map(({url:e})=>e).filter(Boolean))}parseReaderSlug(t,e,r){if(!r)return{basePath:"",slug:e};if(r.startsWith("http://")||r.startsWith("https://")){const s=W(r);return{basePath:"",slug:s.pathname+s.search}}return{basePath:"",slug:r}}}pa(St,"specId","webtoon");var fa=Object.defineProperty,ma=(a,t,e)=>t in a?fa(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,wa=(a,t,e)=>(ma(a,typeof t!="symbol"?t+"":t,e),e);class $t extends f{async getRawChaptersData(){const t=this.context?.rawId;if(!t)return;const e=await va(t);if(!e)return;const r=document.createElement("DIV");r.innerHTML=e;const s=await this.getChapters({sel:'a[href*="/chapters/"]',url:"|attr:href",label:"span span|text",at:"time|attr:datetime"},{root:r,lazy:!0});if(s)return{chapters:s,hasMore:!1,asc:!1,total:s.length}}}wa($t,"specId","weebcentral");async function va(a){const t=`https://weebcentral.com/series/${a}/full-chapter-list`;try{return await(await fetch(t)).text()}catch{return}}const ya=[et,me,st,q,ot,ut,gt,dt,ht,pt,ft,mt,wt,vt,Rt,bt,St,$t];function It(a){const t=ya.find(e=>e.specId===a.spec.id)??f;return new t(a)}async function ba(a){const{spec:t}=a;if(t){const e=a.siteMeta??t.meta,r=a.type?[a.type]:Mt(e,t.generic);if(!r.length)return;const s=It({...a,spec:t,siteMeta:e});return await O(r.map(n=>s.getRawPageByType(n,r.length>1)))}return await O((a.genericSpecs??[]).map(e=>{const r=Mt(e.meta,e.generic);if(!r.length)return[];const s=It({...a,spec:e,siteMeta:e.meta});return r.map(n=>s.getRawPageByType(n,!0))}).flat())}function Mt(a,t){if(location.pathname==="/")return[];const{titleBase:e,readerBase:r}=a,s=location.pathname.split("/").filter(Boolean),n=Dt(s,r),i=Dt(s,e);if(n&&i)return[x.reader,x.title];const o=[];return!i&&(n!==!1||t)&&o.push(x.reader),!n&&(i!==!1||t)&&o.push(x.title),!o.length&&t?[x.reader,x.title]:o}function Dt(a,t){if(!t)return;const e=t.split("/").filter(Boolean),r=e.indexOf("{slug}"),s=r===e.length-1,n=!s&&r!==-1;if(s&&(e.pop(),!e.length))return;const i=a.length-e.length;if(n?i<0:i<=0)return!1;let o=!1;for(let l=0;l<e.length;l++){const c=e[l];if(c[0]!=="{"){if(c!==a[l])return!1;o=!0}}if(o&&i===(n?0:1))return!0}B.PageType=x,B.scrape=ba});
1
+ (function(B,O){typeof exports=="object"&&typeof module<"u"?O(exports):typeof define=="function"&&define.amd?define(["exports"],O):(B=typeof globalThis<"u"?globalThis:B||self,O(B._trackkun_={}))})(this,function(B){"use strict";function O(a){let t=!1;return new Promise((e,r)=>{Promise.all(a.map(async s=>{const n=await s;!t&&n&&(t=!0,e(n))})).then(()=>{t||e(void 0)})})}function W(a,{removeTrailingSlash:t=!0}={}){if(!a)return;const e=t&&a.endsWith("/")?a.slice(0,-1):a;try{return new URL(e)}catch{return}}function S(a){if(!(!a||typeof a!="string"))return a.startsWith("http://")||a.startsWith("https://")?W(a)?.pathname:a.startsWith("//")?W(`https:${a}`)?.pathname:a}async function N(a,t,e){const r=await e(()=>{a=0});if(r!==void 0)return r;if(!(a<=0))return await new Promise(s=>{setTimeout(async()=>{const n=await N(a-1,t,e);s(n)},t)})}async function $(a,t,e=0){const r=t.root??document.documentElement,s=t.timeoutMs??1e4;return N(t.lazy===!0?s/50:0,50,()=>{const n=t.all===!0?Array.from(r.querySelectorAll(a)):r.querySelector(a)??void 0;return(t.all?!n?.length:!n)?void 0:n})}const Q={text:jt,attr:Lt,"attr-contain":Nt,value:_t,row:zt,"bg-image":kt};function g(a,t){if(a)return J(a,t,Bt)}function _(a,t){if(a)return J(a,t,Ot)}function J(a,t,e){if(!a)return;const r=a.split("||").map(s=>s.trim()).filter(s=>!!s&&s.includes("|"));for(const s of r){const n=Pt(s);if(!n)continue;const i=e(t??document.documentElement,n.selector,n.instructions);if(i)return i}}function Pt(a){const[t,e]=a.split("|");if(!e)return;const r=(e?.startsWith("[")&&e.endsWith("]")?e.substring(1,e.length-1).split(","):[e]).map(s=>{const n=s.indexOf(":"),i=n!==-1;return{extractor:i?s.substring(0,n):s,param:i?s.substring(n+1):""}});return{selector:t||void 0,instructions:r}}function Bt(a,t,e){if(!t)return Y(a,e);const r=t.split(",");for(const s of r){const n=Array.from(a.querySelectorAll(s));for(const i of n){const o=Y(i,e);if(o)return o}}}function Ot(a,t,e){const r=t?Array.from(a.querySelectorAll(t)):[a],s=[];for(const n of r)for(const i of e){const o=Q[i.extractor],l=o(n,i.param);if(l){s.push(l);break}}if(s.length)return s}function Y(a,t){for(const e of t){const r=Q[e.extractor],s=r(a,e.param);if(s)return s}}function jt(a){return Array.from(a.childNodes).filter(t=>t.nodeType===3).map(t=>j(t.textContent)).filter(Boolean).join(" ").trim()||j(a.textContent)}function Lt(a,t){return j(a.getAttribute(t))}function Nt(a,t){let e=a.getAttribute(t);if(!e){const r=a.getAttributeNames().find(s=>s.includes(t));r&&(e=a.getAttribute(r))}return j(e)}function _t(a){return a.value}function zt(a,t){if(!t)return;const e=j(a.textContent)?.toLowerCase(),r=t.toLowerCase();if(!(e!==r&&e!==`${r}:`))return j(a.nextElementSibling?.textContent??a.nextSibling?.textContent)}function kt(a){const t=getComputedStyle(a).backgroundImage;if(!(!t||!t.startsWith("url(")))return t.slice(5,-2)||void 0}function j(a){if(a)return a?.replace(/(\n|\t)/g," ").trim()||void 0}var At=(a=>(a[a.reading=1]="reading",a[a.paused=2]="paused",a[a.plan=3]="plan",a[a.completed=4]="completed",a[a.dropped=5]="dropped",a[a.deleted=6]="deleted",a))(At||{}),Wt=(a=>(a[a.ok=1]="ok",a[a.hidden=2]="hidden",a[a.deleted=3]="deleted",a))(Wt||{}),Et=(a=>(a[a.aggregator=0]="aggregator",a[a.scanlator=1]="scanlator",a))(Et||{}),Ut=(a=>(a[a.pending=0]="pending",a[a.completed=1]="completed",a[a.offline=2]="offline",a[a.incompat=3]="incompat",a))(Ut||{}),E=(a=>(a.id="id",a.name="name",a.slug="slug",a))(E||{}),k=(a=>(a.blank="about:blank",a.title="meta.title",a.reader="meta.reader",a))(k||{});const qt=/(vol(ume)?|season)(\s*|-|\.)(\d+)/i,Ft=/^S([1-9])\s/i,Vt=/(ch(ap(t(er)?|\.)?|\.)?|^#|episode\.?|capitolo\.?|capitulo\.?|bölüm\.?)(\s*|-)(\d+([_-~,.]\d+)?)/i,Ht=/\d+([_-~,.]\d+)?/,Qt=/[_-~,]/;function Jt(a){const t=a.match(qt);if(t)return{volStr:t[0],volValueStr:t[4]};const e=a.match(Ft);return e?{volStr:e[0],volValueStr:e[1]}:{}}function T(a){if(!a)return;if(!isNaN(+a))return{chap:+a};const{volStr:t,volValueStr:e}=Jt(a),r=t?a.replace(t,"").trim():a,s=r.match(Vt),n=r.match(Ht),i=s?.[6],o=i??n?.[0];if(!o)return;const l=+o.replace(Qt,".");return isNaN(l)?void 0:{vol:t&&e&&!isNaN(+e)&&a.indexOf(t)<a.indexOf(i?s[0]:n[0])?+e:void 0,chap:l}}async function Z(a,t=240){return new Promise(e=>{const r=new Image;r.crossOrigin="anonymous",r.onerror=()=>e(void 0),r.onload=()=>{const s=document.createElement("canvas"),n=s.getContext("2d"),i=Math.max(1,r.naturalWidth/t),o=r.naturalWidth/i,l=r.naturalHeight/i;s.width=o,s.height=l;const c=/iPad|iPhone|iPod/.test(navigator.userAgent);try{n.drawImage(r,0,0,o,l);const u=s.toDataURL(c?"image/jpg":"image/webp",c?.99:.8).split(",").slice(-1)[0];e(u)}catch{e(void 0)}},r.src=a})}async function Yt(a,t=240){const e=await Zt(a);if(e)return await new Promise(async r=>{const s=Z(e,t),n=setTimeout(()=>r(void 0),100),i=await s;clearTimeout(n),r(i)})}async function Zt(a){try{const t=await fetch(a);if(t.status>=400)return;const e=await t.blob();return URL.createObjectURL(e)}catch{return}}function z(a){return a.sort((t,e)=>t.vol===void 0||e.vol===void 0?e.chap-t.chap:e.vol-t.vol||e.chap-t.chap),Gt(a)}function Gt(a){const t={};for(let e=a.length-1;e>=0;e--){const r=a[e],s=r.lang??"";r.vol!==void 0?t[s]=r.vol:t[s]!==void 0&&(r.inferVol=t[s])}return a}const Kt=[{seconds:1,locales:{en:"sec",vi:"gi\xE2y",tr:"ikinci",es:"segunda"}},{seconds:60,locales:{en:"min",vi:"ph\xFAt",tr:"dakika"}},{seconds:3600,locales:{en:"hour",vi:"gi\u1EDD",tr:"saat",fr:"heure",it:"ora",es:"hora"}},{seconds:86400,locales:{en:"day",vi:"ng\xE0y",tr:"g\xFCn",fr:"jour",it:"giorno",es:"d\xEDa"}},{seconds:604800,locales:{en:"week",vi:"tu\u1EA7n",tr:"hafta",fr:"semaine",it:"settimana",es:"semana"}},{seconds:2592e3,locales:{en:"month",vi:"th\xE1ng",tr:"ay",fr:"mois",it:"mese",es:"mes"}},{seconds:31536e3,locales:{en:"year",vi:"n\u0103m",tr:"yil",fr:"ann",it:"anno",es:"a\xF1o"}}];function G(a,t){const e=a?.toLowerCase();if(!e)return;const r=Date.now();if(e.includes("now"))return r;if(e.includes("yesterday"))return r-864e5;const s=new Date(e);if(s instanceof Date){const c=s.valueOf();if(!isNaN(c))return s.getHours()===0&&s.getMinutes()===0?Math.min(r,c+432e5):c}const n=Kt.find(c=>t&&c.locales[t]&&e.indexOf(c.locales[t])!==-1?!0:e.indexOf(c.locales.en)!==-1);if(!n)return;const i=e.split(" ").filter(Boolean),o=K(i)??K(i,["a","an"]);if(!o)return;const l=r-o*n.seconds*1e3;return l>0?l:void 0}function K(a,t){for(let e=0;e<a.length;e++){const r=a[e];if(t?.includes(r))return 1;const s=+r;if(s)return s<0?void 0:s}}function X(a,t=location.origin){if(!a)return;const e=new URL(a.startsWith("//")?`${location.protocol}${a}`:a,location.origin+location.pathname).toString();return e.startsWith(t)?e.replace(t,""):e}function tt(a,{titleSlug:t,titleId:e}){if(!a)return"/";let r=a.replace("{titleSlug}",t);e&&(r=r.replace("{titleId}",e));const s=r.endsWith("/")?r:r+"/";return s.startsWith("/")?s:"/"+s}function Xt(a,t){const e=[...t],r=[];let s=!1,n=0;const i=Math.min(a.length,100);for(let l=0;l<i;l++){if(n>=10/2){const d=10-r.length;if(d>0){const v=l+d<=a.length?a.slice(l,l+d):e.slice(0,d);r.push(...v)}break}const c=a[l],u=c.id!==void 0,h=e.findIndex(d=>u&&d.id===c.id||d.slug===c.slug||d.name==c.name),p=h===-1?void 0:e.splice(h,1)[0];!p||p.chapters[0]?.chap!==c.chapters[0]?.chap?(s=!0,r.push({...c,changed:!0})):(n++,r.push(c))}if(!s)return{hasMore:!1,rawReleases:[]};if(r.length<=10)return{hasMore:!!a[a.length-1]?.changed,rawReleases:r};const o=[];for(let l=0;l<r.length;l++){const c=r[l];(c.changed||l<10)&&o.push(c)}return{hasMore:t.length<2||t.length-e.length<2,rawReleases:o}}function te(a,t){const e={};return a.forEach(r=>{const s=r.chapters.reduce((n,i)=>{const o=i.lang||t||"";return n[o]||(n[o]=[]),n[o].push(i),n},{});Object.entries(s).forEach(([n,i])=>{const o=`${r.slug}:${n}`;e[o]?(e[o].chapters.push(...i),z(e[o].chapters)):e[o]={...r,lang:n===""?void 0:n,chapters:i}})}),Object.values(e)}var x=(a=>(a.title="title",a.reader="reader",a.releases="releases",a.chapters="chapters",a.search="search",a))(x||{}),ee=Object.defineProperty,ae=(a,t,e)=>t in a?ee(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,I=(a,t,e)=>(ae(a,typeof t!="symbol"?t+"":t,e),e);class A{constructor(t){I(this,"siteId"),I(this,"spec"),I(this,"siteMeta"),I(this,"tags"),I(this,"context"),I(this,"methodsMap",{[x.title]:()=>this.getRawTitleData(),[x.reader]:()=>this.getRawReaderData(),[x.releases]:()=>this.getRawReleasesData(),[x.search]:()=>this.getRawSearchData(),[x.chapters]:()=>this.getRawChaptersData()}),I(this,"normalizedTagsMap"),this.siteId=t.siteId,this.spec=t.spec,this.siteMeta=t.siteMeta,this.tags=t.tags,this.context=t.context}async getRawSearchData(){throw new Error("Unimplemented")}async getRawPageByType(t,e=!1){const r=await this.methodsMap[t](),s=!r&&(t===x.title||t===x.reader)&&await se(this.spec);if(e&&!r&&!s)return;const n=location.origin+location.pathname;return{type:t,is404:s,specId:this.spec.id,siteName:g(this.spec.name),url:n,data:r,spec:this.spec,context:this.context}}parseReaderSlug(t,e,r){let s=e;if(s[0]!=="/"&&s.includes("/"))try{s=new URL(e,location.href).pathname}catch{}const n=s.endsWith("/")?s.slice(0,-1):s;if(t.includes("{")){const i=t.split("/").filter(Boolean),o=n.split("/").filter(Boolean);if(i.length<o.length){const l=o[i.indexOf("{lang}")],c=o[i.indexOf("{titleId}")],u=o[i.indexOf("{titleSlug}")],h=t.replace("{lang}",l).replace("{titleId}",c).replace("{titleSlug}",u);if(n.startsWith(h))return{basePath:h,lang:l.toLowerCase(),titleId:c,titleSlug:u,slug:n.replace(h,"")}}}else if(n.startsWith(t))return{basePath:t,slug:n.replace(t,"")};return{basePath:"",slug:n[0]==="/"?n.substring(1):n}}parseTitleSlug(t){if(typeof t!="string")return{};const e=S(t),r=e?.split("/").filter(Boolean);if(!r?.length)return{};const s=this.siteMeta.titleBase.split("/").filter(Boolean),n=s.indexOf("{slug}");return(n===-1?r.length-s.length>=1:r.length===s.length)?{id:r[s.indexOf("{id}")],slug:n===-1?r.slice(s.length).join("/"):r[n]}:{slug:e}}finalizeRawReleasesData(t){const e=this.spec.releases?.title?.lang?this.siteMeta.defaultLang:void 0,r=te(t.rawReleases,e);if(r.length)return this.context?.oldRawReleases?Xt(r,this.context.oldRawReleases):{rawReleases:r,hasMore:!0}}getTagIdsFromNames(t){if(!t?.length)return;const e=this.normalizedTagsMap??(this.normalizedTagsMap=re(this.tags)),r=t.map(s=>e[U(s)]).filter(Boolean);return r.length===0?void 0:Array.from(new Set(r)).sort((s,n)=>s-n)}}I(A,"specId"),I(A,"siteId");function re(a){const t={};return a.forEach(({id:e,name:r,altNames:s})=>{t[U(r)]=e,s&&s.forEach(n=>{t[U(n)]=e})}),t}function U(a){const t=a.toLowerCase().replaceAll(" ","").replaceAll("-","");return t[t.length-1]==="s"?t.substring(0,t.length-1):t}async function se(a){return ne()===404||a[404]&&await $(a[404],{lazy:!0,timeoutMs:5e3})?!0:document.title.toLowerCase().includes("not found")}function ne(){try{return window.performance.getEntries().find(a=>a.entryType==="navigation")?.responseStatus}catch{return}}class f extends A{async getRawReleasesData(){if(!this.spec?.releases?.title)return;const{chapter:t,...e}=this.spec.releases.title,r=await $(e.sel,{lazy:!0,all:!0});if(!r?.length)return;const s=r.slice(0,100).map(i=>{const o=g(e.url,i),l=S(o),c=g(e.name,i),u=g(e.at,i);if(!(!l||!c))return{titleEl:i,id:g(e.id,i),path:l,name:c,lang:g(e.lang,i)?.toLowerCase(),at:G(u,this.siteMeta.defaultLang)}}).filter(Boolean);if(!s.length)return;const n=[];return await Promise.all(s.map(async i=>{const{path:o,titleEl:l,lang:c,at:u,...h}=i,{id:p,slug:d}=this.parseTitleSlug(o);if(!d)return;const v=h.id||p,y=await this.getChapters(t,{root:l,titleId:v,titleSlug:d})??[];y.length&&n.push({slug:d,chapters:c||u?y.map(w=>({...w,elIndex:void 0,lang:w.lang??c,ts:w.ts??u})):y,...h,id:v})})),this.finalizeRawReleasesData({rawReleases:n})}getRawTitleData(){return this.getTitleData(this.spec.title)}async getTitleData(t){if(!t||(t.sel||t.lazy)&&!await $(t.sel??t.name,{lazy:!!t.lazy}))return;const e=g(t.name);if(!e)return;const{id:r,slug:s}=this.parseTitleSlug(location.pathname);if(!s)return;let n=_(t.tags)??[];n.length===1&&(n=n[0].split(",").map(p=>p.trim()).filter(Boolean));const i=g(t.type),o=_(t.langs)?.map(p=>p.toLowerCase()),l=r||g(t.id),c=await this.getChapters(t.chapter,{lazy:!0,titleId:l,titleSlug:s})??[],u=t.img?await this.getValidImgSrc(t.img):void 0,h=u&&this.context?.includeImgBytes?await Yt(u):void 0;return{id:l||g(t.id),url:location.origin+location.pathname,slug:s,name:e,langs:o?.length?o:t.langs&&this.siteMeta.defaultLang?[this.siteMeta.defaultLang]:void 0,tags:this.getTagIdsFromNames([...n??[],...i?[i]:[]]),chapters:c,hasMoreChapters:t.hasMore?!!document.querySelector(t.hasMore):void 0,img:u,imgBytes:h,firstUrl:this.getFirstChapterUrl()}}getFirstChapterUrl(){const t=g(this.spec.title?.first);if(t){if(t.startsWith("http"))return t;try{return new URL(t,location.href).href}catch{return}}}getValidImgSrc(t){return N(33,30,()=>{const e=g(t);return e&&!e.startsWith("data:")?e.split(" ")[0]:void 0})}getRawReaderTitleData(){const t=this.spec.reader?.title;if(!t)return;const e=t.sel?document.querySelector(t.sel)??void 0:void 0,r=g(t.name,e),s=g(t.url,e),{slug:n,id:i}=this.parseTitleSlug(s),o=X(g(t.img,e));if(!(!r||!s||!n))return{name:r,img:o,url:s,slug:n,id:i||g(t.id)}}async getRawReaderData(){const{spec:t,siteMeta:e}=this;if(!t?.reader||t.generic&&!await f.isReaderPage(t.reader))return;const r=t.reader.content;if(!(!r||await f.verifyImgsCotainer(r)))return;const s=this.getRawReaderTitleData();if(!s)return;const{id:n,slug:i}=s,o=t.reader?.chapter,l=!!this.context?.disableLazyChapters,c=!!this.context?.includeHiddenChapters,u=await this.getChapters(o,{titleId:n,titleSlug:i,lazy:c||!l,includeHiddenChapters:c,timeoutMs:c?3e3:12e4,includeIndex:!0})??[],h=g(t.reader.label)?.toLowerCase().replace(s.name.toLowerCase(),"");if(!h)return;const{vol:p,chap:d=0}=T(h)||{},{slug:v,basePath:y,lang:w,titleId:b}=this.parseReaderSlug(tt(e.readerBase,{titleId:n,titleSlug:i}),location.pathname,location.href),m=this.findNeighborChapter({sel:t.reader.prev,basePath:y}),P=this.findNeighborChapter({sel:t.reader.next,basePath:y});return this.finalizeRawReaderData({vol:p,chap:d,lang:w??g(t.reader.lang)?.toLowerCase()??(t.reader.lang?this.siteMeta.defaultLang:void 0),slug:v,basePath:y,imgs:r?void 0:_(t.reader.imgs),title:{id:n||b||g(this.spec.reader?.title.id),url:s.url,slug:i,name:s.name,langs:w?[w]:void 0,img:s.img,chapters:u,hasMoreChapters:!u.length&&!c&&!!this.context?.disableLazyChapters&&!!o?.label}},{prevSlug:m,nextSlug:P})}async getRawChaptersData(){const t=this.siteMeta.chapters;if(t===k.blank)return;const e=t===k.reader,r=!t||t===k.title,s=e?(await this.getRawReaderData())?.title:r?await this.getRawTitleData():void 0;let n=s?.chapters;if(!e&&!r&&(n=await this.getChapters(this.spec.chapters?.chapter,{lazy:this.spec.chapters?.lazy})),!n)return;const i=this.context?.lang,o=i?n.filter(l=>!l.lang||l.lang===i):n;return{chapters:o,title:s?{...s,chapters:[]}:await this.getTitleData(this.spec.chapters?.title),hasMore:!1,asc:!1,total:o.length}}async getRawSearchData(){const t=this.spec.search?.title;if(!t)return;const{chapter:e}=t,r=[];return await Promise.all(Array.from(document.querySelectorAll(t.sel)).map(async s=>{const n=g(t.url,s),i=S(n),o=g(t.name,s),{slug:l,id:c}=this.parseTitleSlug(i);!i||!o||!l||r.push({id:c,slug:l,name:o,chapters:await this.getChapters(e,{root:s,titleId:c,titleSlug:l})??[]})})),r.length?{rawReleases:r}:void 0}async getChapters(t,{root:e,titleId:r="",titleSlug:s="",includeHiddenChapters:n=!1,lazy:i=!0,timeoutMs:o,includeIndex:l}={}){if(!t||!t.sel||!t.label)return;let c=null;if(t.trigger){if(!n||(c=document.querySelector(t.trigger),!c))return;c.click()}const u=[],h=await $(t.sel,{root:e,all:!0,lazy:i,timeoutMs:o});if(!h?.length)return c?.click(),[];const p=(h??[]).map((b,m)=>({id:g(t.id,b),label:g(t.label,b),url:g(t.url,b),at:g(t.at,b),elIndex:m}));c?.click();const d=p.map(({label:b})=>T(b)),v=d[1]?.chap;!d[0]&&(v===void 0||v<=1)&&(d[0]={chap:0});const{readerBase:y}=this.siteMeta,w=tt(y,{titleId:r,titleSlug:s});return d.forEach((b,m)=>{if(!b)return;const{id:P,url:D,at:F,elIndex:V}=p[m],R={...b,id:P,ts:G(F,this.siteMeta.defaultLang)};l&&(R.elIndex=V);const Tt=D?.startsWith("http")&&!D.includes(`//${location.hostname}/`),H=Tt?D:S(D);if(!H){u.push(R);return}if(Tt){u.push({...R,slug:H});return}const{slug:xa,lang:Sa}=this.parseReaderSlug(w,H,D);u.push({...R,slug:xa,lang:Sa})}),z(u)}static async isReaderPage(t){return!!t.sel&&!!await $(t.sel,{lazy:!!t.lazy})}static async verifyImgsCotainer(t){const e=t.split(",").map(r=>r.trim()).filter(Boolean).map(r=>`${r} img, ${r} canvas`).join(",");return!!await $(e,{lazy:!0,all:!1})}findNeighborChapter({sel:t,basePath:e}){const r=g(t);if(!r||r.startsWith("#")||r.startsWith("/#"))return;const s=S(r);if(s)return this.parseReaderSlug(e,s,r).slug||void 0}finalizeRawReaderData(t,{prevSlug:e,nextSlug:r}={}){const s=t.title.chapters;if(!s.length){const c=T(e),u=T(r);return!c&&!u?t:{...t,prev:c?{...c,slug:e}:void 0,next:u?{...u,slug:r}:void 0}}let n,i,o,l;for(let c=0;c<s.length&&!(n&&(!e||o)&&!r&&l);c++){const u=s[c];!n&&(t.slug==u.slug||t.chap===u.chap&&(t.vol===u.vol||t.vol===void 0))?(n=u,i=c):!o&&e===u.slug?o=u:!l&&r===u.slug&&(l=u)}return i!==void 0&&(o??(o=s[i+1]),l??(l=s[i-1])),{...t,inferVol:n?.inferVol,prev:o,next:l}}}var ie=Object.defineProperty,oe=(a,t,e)=>t in a?ie(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,le=(a,t,e)=>(oe(a,typeof t!="symbol"?t+"":t,e),e);class et extends f{parseTitleSlug(t){return{slug:S(t)?.split("/").filter(Boolean)[1]}}}le(et,"specId","bato");function ce(){return Math.random().toString(16).slice(2)}async function ue({addListener:a,removeListener:t,transform:e,filter:r,handler:s,onTimeout:n,timeout:i,once:o}){return new Promise(l=>{a(h);const c=()=>o===!0&&t(h),u=i?setTimeout(()=>{c(),l(void 0),n?.()},i):void 0;async function h(p,...d){p=e?e(p):p,p!==void 0&&(!r||r(p,...d))&&(c(),l(p),s?.(p,...d),u&&clearTimeout(u))}})}async function ge(a){return(await ue({addListener:t=>window.addEventListener("message",t),removeListener:t=>window.removeEventListener("message",t),...a}))?.data}async function he(a){const{receiverWindow:t,timeout:e,targetOrigin:r,event:s,args:n}=a,i={reqId:ce(),event:s,args:n};return(t||window)?.postMessage(i,r??"*"),(await ge({filter:o=>o?.data?.resId===i.reqId,timeout:e??3e4,once:!0}))?.result}const L={isAny:!0};function C(a,...t){return he({event:"tk:fetchResult",args:{baseUrl:a,segments:t}})}var pe=Object.defineProperty,de=(a,t,e)=>t in a?pe(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,fe=(a,t,e)=>(de(a,typeof t!="symbol"?t+"":t,e),e);const at=class Ct extends f{async getRawReleasesData(){let t;try{const r=Array.from({length:2},async(s,n)=>{const i=`https://api.${location.host}/chapter?accept_erotic_content=true&page=${n+1}&order=new`;return(await fetch(i)).json()});t=(await Promise.all(r)).flat()}catch{return}const e=[];return t.forEach(r=>{const{vol:s,chap:n,hid:i,lang:o,updated_at:l,md_comics:c}=r,u=typeof n=="string"&&!isNaN(+n)?+n:void 0;typeof u=="number"&&e.push({id:c.hid,slug:c.slug,name:c.title,chapters:[{slug:i,vol:typeof s=="string"&&!isNaN(+s)?+s:void 0,chap:u,lang:o,ts:new Date(l).valueOf()}]})}),super.finalizeRawReleasesData({rawReleases:e})}async getRawTitleData(){const t=await super.getRawTitleData();if(!t)return t;const e=await C(`https://api.${location.host}`,"comic",L,"chapters");if(!e)return t;const r=e.url.split("/").filter(Boolean).slice(-2)[0],s=rt(e.value),n=g("h1 ~ div.text-sm span:first-child|row:demographic"),i=n?this.getTagIdsFromNames([n])?.[0]:void 0;return i&&!t.tags?.includes(i)&&(t.tags?.push(i),t.tags?.sort((o,l)=>o-l)),{...t,img:t.img??X(g(this.spec.title?.img)),id:r,hasMoreChapters:s?.hasMore??!1,chapters:s?.chapters??[]}}async getRawReaderData(){const t=await super.getRawReaderData();return t&&{...t,lang:t.lang&&t.lang?.length<=6?t.lang:Ct.getLangFromReaderSlug(t.slug)||t.lang}}static getLangFromReaderSlug(t){const e=t.split("-");let r;for(let s=e.length-1;s>0;s--){const n=e[s];if(!isNaN(+n))break;r=r?`${n}-${r}`:n}return r&&r.length<=6?r:void 0}async getRawChaptersData(){if(!this.context?.rawId)return;const{rawId:t,lang:e="en",skip:r}=this.context,s=r?Math.floor(r/1e3)+1:void 0;try{const n=await fetch(`https://api.${location.host}/comic/${t}/chapters?lang=${e}&limit=1000${s&&s>1?`&page=${s}`:""}`),i=rt(await n.json());return i?{...i,lang:e,asc:!1}:void 0}catch{return}}};fe(at,"specId","comick");let me=at;function rt(a){if(!Array.isArray(a?.chapters))return;const t=[];return a.chapters.forEach(e=>{const{vol:r,chap:s,hid:n,lang:i,updated_at:o}=e,l=typeof s=="string"&&!isNaN(+s)?+s:void 0;typeof l!="number"||t.some(c=>c.vol==r&&c.chap===l&&c.lang===i)||t.push({slug:n,vol:typeof r=="string"&&!isNaN(+r)?+r:void 0,chap:l,lang:i,ts:new Date(o).valueOf()})}),{chapters:z(t),total:a.total??t.length,hasMore:a.total>a.limit}}var we=Object.defineProperty,ve=(a,t,e)=>t in a?we(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,ye=(a,t,e)=>(ve(a,typeof t!="symbol"?t+"":t,e),e);class st extends f{async getRawChaptersData(){const t=this.context?.titleSlug;if(!t)return;const e=`https://api.${location.host}/chapter/all/${t}`;return{chapters:(await(await fetch(e)).json()).map(be).filter(Boolean)}}}ye(st,"specId","lua");function be(a){if(!a||typeof a.chapter_name!="string")return;const t=T(a.chapter_name);if(t)return{...t,slug:typeof a.chapter_slug=="string"?a.chapter_slug:void 0,ts:typeof a.created_at=="string"?new Date(a.created_at).valueOf():void 0}}function nt(a,t){const e=a[0]===t?a.substring(1):a;return e[e.length-1]===t?e.substring(0,e.length-1):e}var Re=Object.defineProperty,xe=(a,t,e)=>t in a?Re(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Se=(a,t,e)=>(xe(a,typeof t!="symbol"?t+"":t,e),e);class q extends f{async getRawReleasesData(){const t=this.detectNewSiteMeta(this.spec.releases,this.siteMeta);this.siteMeta=t??this.siteMeta;const e=await super.getRawReleasesData();if(e)return{...e,siteMeta:t}}async getRawTitleData(){const t=this.finalizeNewSiteMeta(this.siteMeta,{titleBase:this.extractBasePath(location.pathname)});this.siteMeta=t??this.siteMeta;const e=await super.getRawTitleData();if(e)return{...e,siteMeta:t}}async getRawReaderData(){const t=it(this.spec.reader?.title);if(!t)return;const e=this.finalizeNewSiteMeta(this.siteMeta,{titleBase:this.extractBasePath(S(t))});this.siteMeta=e??this.siteMeta;const r=await super.getRawReaderData();if(r)return{...r,siteMeta:e}}async getRawSearchData(){const t=it(this.spec.search?.title);if(!t)return;const e=this.finalizeNewSiteMeta(this.siteMeta,{titleBase:this.extractBasePath(S(t))});this.siteMeta=e??this.siteMeta;const r=await super.getRawSearchData();if(r)return{...r,siteMeta:e}}detectNewSiteMeta(t,e){if(!t)return;const r=t.title,s=document.querySelector(r.sel)??void 0;if(!s)return;const n=S(g(r.url,s));if(n!==void 0)return this.finalizeNewSiteMeta(e,{titleBase:this.extractBasePath(n)})}finalizeNewSiteMeta(t,{titleBase:e}){if(t.titleBase!==e)return{...t,titleBase:e,readerBase:t.readerBase.replace(t.titleBase,e)}}extractBasePath(t){return nt(t,"/").split("/").slice(0,-1).join("/")}}Se(q,"specId","madara");function it(a){if(!a)return;const t=a.sel?document.querySelector(a.sel)??void 0:void 0;return g(a.url,t)}var $e=Object.defineProperty,Ie=(a,t,e)=>t in a?$e(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Me=(a,t,e)=>(Ie(a,typeof t!="symbol"?t+"":t,e),e);const De={a:.1,b:.2,c:.3,d:.4};class ot extends A{parseTitleSlug(t){return{slug:S(t)?.split("/").filter(Boolean)[1]}}async getRawReleasesData(){let t=[];try{t=(await(await fetch("https://api.mangadex.org/chapter?limit=96&offset=0&includes[]=manga&contentRating[]=safe&contentRating[]=suggestive&contentRating[]=erotica&contentRating[]=pornographic&order[readableAt]=desc")).json()).data}catch{return}const e=[];return t.forEach(({relationships:r,attributes:s,id:n})=>{const i=r.find(({type:h})=>h==="manga"),o=M(s.volume),l=M(s.chapter);if(l===void 0)return;const{title:c}=i.attributes,u=c.en??Object.values(c)[0];e.push({slug:i.id,name:u,chapters:[{slug:s.externalUrl||n,vol:o,chap:l,lang:s.translatedLanguage,ts:new Date(s.readableAt).valueOf()}]})}),super.finalizeRawReleasesData({rawReleases:e})}async getRawTitleData(){const t="https://api.mangadex.org/manga/",[e,r]=await Promise.all([C(t,L),C(t,L,"feed")]);if(!e||!r)return;const s=r.value.data?.map?.(l=>{const{attributes:c,id:u}=l;if(typeof c!="object"||typeof u!="string"||!u)return;const{externalUrl:h,title:p,volume:d,chapter:v,translatedLanguage:y}=c;return{slug:h||u,label:p||void 0,vol:M(d),chap:M(v),lang:y||"en",ts:new Date(c.readableAt).valueOf()}}).filter(l=>l?.chap!=null)??[],{data:n}=e.value;if(!n)return;const i=ct({data:n,getTagIdsFromNames:l=>this.getTagIdsFromNames(l)});if(!i)return;const o=this.context?.includeImgBytes&&i.img?await Z(i.img):void 0;return{...i,imgBytes:o,chapters:z(s),hasMoreChapters:(r.value.total||0)>(r.value.limit||0)}}async getRawReaderData(){const t="https://api.mangadex.org/",[e,r,s]=await Promise.all([C(t,"chapter",L),C(t,"at-home","server",L),C(t,"manga",L,"aggregate")]);if(!e||!r||!s)return;const n=e.value.data,{volume:i,chapter:o,externalUrl:l,translatedLanguage:c}=n.attributes||{},{baseUrl:u,chapter:{data:h,dataSaver:p,hash:d}}=r.value,v=n.relationships?.find?.(R=>R.type==="manga");if(!v)return;const y=ct({data:v,getTagIdsFromNames:R=>this.getTagIdsFromNames(R)});if(!y||typeof s.value.volumes!="object")return;const w=lt(s.value)??[];(typeof o!="string"||o==="none")&&!w.length&&w.push({chap:0,slug:n.id});const b=w.findIndex(R=>R.slug===n.id),m=n.relationships?.find?.(R=>R.type==="scanlation_group"),P=u.endsWith("/")?u:u+"/",D=!!localStorage.getItem("md")?.includes?.('"dataSaver":true'),F=`${P}${D?"data-saver":"data"}/`,V=((D?p:h)??[]).map?.(R=>`${F}${d}/${R}`)??[];return{externalUrl:l,vol:M(i),inferVol:w[b]?.inferVol,chap:M(o)||0,imgs:V,lang:c,slug:n.id,prev:w[b+1],next:w[b-1],basePath:"/chapter/",groupName:m?.attributes?.name,groupUrl:m?.attributes?.website,isWebtoon:v?.attributes?.tags?.some(R=>R.attributes.name.en==="Long Strip"),title:{...y,chapters:w}}}async getRawChaptersData(){if(!this.context)return;const{titleSlug:t,lang:e="en"}=this.context;let r;try{const s=await fetch(`https://api.mangadex.org/manga/${t}/aggregate?translatedLanguage[]=${e}`);r=lt(await s.json())}catch{return}if(r)return{chapters:r,lang:e,asc:!1,hasMore:!1,total:r.length}}}Me(ot,"specId","mangadex");function M(a){if(typeof a!="string"||a==="none")return;const t=parseFloat(a);if(t!==t)return;const e=a[a.length-1];return t+(De[e]??0)}function lt(a){if(typeof a.volumes!="object")return;const t=Object.values(a.volumes).map(({volume:e,chapters:r})=>{const s=M(e);return Object.values(r).map(({id:n,chapter:i})=>{const o=M(i);if(o!==void 0)return{vol:s,chap:o,slug:n}})}).flat().filter(Boolean).reverse();return z(t)}function ct({data:a,getTagIdsFromNames:t}){const{id:e,attributes:r,relationships:s}=a;if(!e||typeof e!="string"||typeof r!="object")return;const{title:n,availableTranslatedLanguages:i,altTitles:o,tags:l,contentRating:c}=r;if(typeof n!="object"||i&&!Array.isArray(i))return;const u=Object.values(n)[0];if(!u||typeof u!="string")return;const h=Te(),p=(i??[])?.map?.(m=>typeof m=="string"?m:void 0).filter(Boolean)??[],d=p.filter(m=>m&&(!h||h.includes(m))),v=o?.map?.(m=>{const[[,P]=[]]=Object.entries(m);return P}),y=s?.find?.(m=>m.type==="cover_art")?.attributes?.fileName,w=y?`https://mangadex.org/covers/${e}/${y}.256.jpg`:void 0,b=(l||[]).map(m=>m?.attributes?.name?.en).concat(c).filter(Boolean);return{url:`${location.origin}/title/${e}`,slug:e,name:u,altNames:v,langs:d.length>0?d:p.length>0?p:["en"],img:w,tags:t(b)}}function Te(){const a=localStorage.getItem("md");if(a)try{const t=JSON.parse(a)?.userPreferences?.filteredLanguages;return t?.length?t:void 0}catch{return}}var Ce=Object.defineProperty,Pe=(a,t,e)=>t in a?Ce(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Be=(a,t,e)=>(Pe(a,typeof t!="symbol"?t+"":t,e),e);class ut extends f{async getRawReleasesData(){const t=await super.getRawReleasesData();if(t)return{...t,rawReleases:t.rawReleases.map(e=>({...e,id:e.id?.split("?")[0]}))}}async getRawReaderData(){if((await $(".current-viewtype",{lazy:!0,all:!1}))?.textContent?.trim().toLowerCase()!=="volume")return await super.getRawReaderData()}async getRawChaptersData(){const t=this.context?.lang;if(!t)return;const e=await $(`.tab-content[data-name="chapter"] a.dropdown-item[data-code="${t.toUpperCase()}"]`,{lazy:!0,all:!1});if(e)return e.click(),await $(`.tab-content[data-name="chapter"] li.item[data-number] a[href*="/${t}/"]`,{lazy:!0,all:!1}),await super.getRawChaptersData()}}Be(ut,"specId","mangafire");var Oe=Object.defineProperty,je=(a,t,e)=>t in a?Oe(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Le=(a,t,e)=>(je(a,typeof t!="symbol"?t+"":t,e),e);class gt extends f{async getRawReaderData(){const t=await super.getRawReaderData();return t&&{...t,imgs:await this.getImgs()}}parseReaderSlug(t,e){const{slug:r,basePath:s}=super.parseReaderSlug(t,e),n=r.split("/").filter(Boolean),i=n[n.length-1];return{basePath:s,slug:i.startsWith("pg-")?n.slice(0,-1).join("/"):r}}async getImgs(){const t=await N(100,20,()=>window.imgsrcs),e=window.CryptoJS,r=e.enc.Hex.parse("e11adc3949ba59abbe56e057f20f883e"),s={iv:e.enc.Hex.parse("1234567890abcdef1234567890abcdef"),padding:e.pad.ZeroPadding};return e.AES.decrypt(t,r,s).toString(e.enc.Utf8).split(",")}}Le(gt,"specId","mangago");var Ne=Object.defineProperty,_e=(a,t,e)=>t in a?Ne(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,ze=(a,t,e)=>(_e(a,typeof t!="symbol"?t+"":t,e),e);class ht extends f{async getRawTitleData(){const t=await super.getRawTitleData();return t&&{...t,chapters:t.chapters.map(e=>({...e,slug:e.slug?.split("/").filter(Boolean).slice(-1)[0]}))}}}ze(ht,"specId","mangaplus");var ke=Object.defineProperty,Ae=(a,t,e)=>t in a?ke(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,We=(a,t,e)=>(Ae(a,typeof t!="symbol"?t+"":t,e),e);class pt extends f{async getRawReleasesData(){const t=await super.getRawReleasesData();if(t)return{...t,rawReleases:t.rawReleases.map(e=>({...e,id:e.slug.substring(e.slug.lastIndexOf("-")+1)||void 0}))}}}We(pt,"specId","mangareader");var Ee=Object.defineProperty,Ue=(a,t,e)=>t in a?Ee(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,qe=(a,t,e)=>(Ue(a,typeof t!="symbol"?t+"":t,e),e);class dt extends q{async getRawReaderData(){const t=await super.getRawReaderData();if(t)return{...t,title:{...t.title,id:await this.getReaderTitleId()}}}async getReaderTitleId(){const t=await window.HISTORY?.getStored?.();if(!t||typeof t!="object")return;const e=Object.values(t).filter(Boolean);if(!e.length)return;e.sort((s,n)=>n.time-s.time);const r=e[0].manga_ID;return typeof r=="string"?r:typeof r=="number"?r+"":void 0}detectNewSiteMeta(t,e){if(this.siteId==="realm"||!t)return;const r={...e,releases:nt(location.pathname,"/")},s=t.title,n=document.querySelector(s.sel)??void 0;if(!n)return;const i=S(g(s.url,n));if(i===void 0)return;const o=n.querySelector(s.chapter.sel)??void 0;if(!(!o||S(g(s.chapter.url,o))===void 0))return r.titleBase=this.extractBasePath(i),e.titleIdType===E.id&&(g(s.id,n)||(e.titleIdType=E.name)),this.finalizeNewSiteMeta(e,r)}finalizeNewSiteMeta(t,e){if(this.siteId==="realm")return;const r=Object.keys(e),s={...t};let n=!1;return r.forEach(i=>{const o=e[i];o!==t[i]&&(s[i]=o,n=!0)}),n?s:void 0}}qe(dt,"specId","mangastream");var Fe=Object.defineProperty,Ve=(a,t,e)=>t in a?Fe(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,He=(a,t,e)=>(Ve(a,typeof t!="symbol"?t+"":t,e),e);class ft extends f{async getRawReaderData(){const t=await super.getRawReaderData();if(t)return{...t,title:{...t.title,name:t.title.name.replace("Ritorna a","").trim()}}}}He(ft,"specId","mangaworld");var Qe=Object.defineProperty,Je=(a,t,e)=>t in a?Qe(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Ye=(a,t,e)=>(Je(a,typeof t!="symbol"?t+"":t,e),e);class mt extends f{async getRawTitleData(){const t=await super.getRawTitleData();if(t)return{...t,hasMoreChapters:t.chapters.length===50}}}Ye(mt,"specId","mgeko");var Ze=Object.defineProperty,Ge=(a,t,e)=>t in a?Ze(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,Ke=(a,t,e)=>(Ge(a,typeof t!="symbol"?t+"":t,e),e);class wt extends f{async getRawTitleData(){const t=await super.getRawTitleData();return t&&{...t,img:Xe(t.img)}}async getRawChaptersData(){const t=this.context?.titleSlug;if(t)try{const e=await(await fetch(`https://api.${location.host}/chapters/${t}/all`)).json(),r=[],s=this.context.skip;return(s?e.slice(s):e).forEach(n=>{const{chapter_name:i,chapter_slug:o,created_at:l}=n;if(typeof i!="string"||typeof o!="string")return;const c=T(i);c?.chap&&r.push({...c,slug:o,ts:l&&new Date(l).valueOf()||void 0})}),{chapters:r,hasMore:!1,asc:!1}}catch{return}}}Ke(wt,"specId","reaper");function Xe(a){if(a)try{return new URL(a,location.href).searchParams.get("url")||a}catch{return a}}var ta=Object.defineProperty,ea=(a,t,e)=>t in a?ta(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,aa=(a,t,e)=>(ea(a,typeof t!="symbol"?t+"":t,e),e);class vt extends f{async getRawTitleData(){const t=await super.getRawTitleData();if(!t)return;const e=_(".info-detail__row > .genre-btn,.info__right .stats__row:first-child|text")?.map(r=>[r,...r.split(" ")]).flat();return yt({...t,tags:this.getTagIdsFromNames(e)??[]},".episode-header .episode-cnt")}async getRawReaderData(){const t=await super.getRawReaderData();if(!t)return;const e=`${location.origin}/series/${t.title.slug}/info`;return{...t,title:{...yt({...t.title,url:e,tags:[]},".episode-list .js-ep-cnt"),hasMoreChapters:!1}}}async getRawChaptersData(){if(!this.context)return;const{rawId:t,skip:e}=this.context,r=1e3,s=e?Math.floor(e/1e3)+1:1;try{const n=await fetch(`/series/${t}/episodes?page=${s}&sort=NEWEST&max_limit=${r}`);return ra(await n.json())}catch{return}}parseTitleSlug(t){if(!t)return{};const e=t.split("/").filter(Boolean);return{slug:e[1]??e[0]}}}aa(vt,"specId","tapas");function yt(a,t){const e=sa(t)>20;return{...a,chapters:e?[]:a.chapters,hasMoreChapters:e}}function ra(a){const t=a?.data?.episodes;if(!Array.isArray(t))return;const e=t.map(s=>({chap:s.pending_scene??s.scene,slug:s.id+"",ts:new Date(s.publish_date)?.valueOf?.()||void 0})),r=a?.data?.pagination;return{chapters:e,total:r?.total??e.length,hasMore:!!r?.has_next}}function sa(a){return+(document.querySelector(a)?.textContent?.trim().split(" ")[0]||0)}var na=Object.defineProperty,ia=(a,t,e)=>t in a?na(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,oa=(a,t,e)=>(ia(a,typeof t!="symbol"?t+"":t,e),e);class bt extends f{async getRawReleasesData(){const t=await super.getRawReleasesData();if(t)return{...t,rawReleases:t.rawReleases.map(e=>({...e,id:la(e.slug)}))}}}oa(bt,"specId","truyenqq");function la(a){return a.substring(a.lastIndexOf("-")+1).replace(".html","")||void 0}var ca=Object.defineProperty,ua=(a,t,e)=>t in a?ca(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,ga=(a,t,e)=>(ua(a,typeof t!="symbol"?t+"":t,e),e);class Rt extends f{async getRawTitleData(){const t=await super.getRawTitleData();return t?.img?{...t,img:ha(t.img)}:t}getRawReaderTitleData(){const t=super.getRawReaderTitleData();if(t)return{...t,name:t.name.split(" Chapter")[0]}}async getRawChaptersData(){const t=await this.getRawTitleData();if(!t)return;const e=C(location.origin,"api","chapters"),r=document.querySelector('button[data-key="chapters"]');if(!r)return;r.click();const s=setInterval(()=>r.click(),100),n=await e;if(clearInterval(s),!n?.value)return;const i=n.url.split("?")[1];if(!i)return;const o=new URLSearchParams(i).get("postId");if(!o)return;const l=n.value?.totalChapterCount;if(!l||l<50){const h=xt(n.value);return h?{chapters:h,title:t,hasMore:!1,skip:0,total:l}:void 0}const c=await fetch(`${location.origin}/api/chapters?postId=${o}&skip=0&take=1000&order=desc`),u=xt(await c.json());if(u)return{chapters:u,title:t,total:l,skip:0,hasMore:!1}}}ga(Rt,"specId","vortex");function ha(a){try{return new URL(a,location.href).searchParams.get("url")||a}catch{return a}}function xt(a){const t=a?.post?.chapters;if(t)return t.map(e=>({slug:e.slug,chap:e.number,ts:e.createdAt?new Date(e.createdAt)?.valueOf?.():void 0})).filter(e=>e.slug&&typeof e.chap=="number")}var pa=Object.defineProperty,da=(a,t,e)=>t in a?pa(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,fa=(a,t,e)=>(da(a,typeof t!="symbol"?t+"":t,e),e);class St extends f{async getRawTitleData(){const t=new URLSearchParams(location.search),e=t.get("episode_no"),r=t.get("title_no");if(e||!r)return;const s=await super.getRawTitleData();if(!s)return;const n=location.pathname.split("/")[1];return{...s,slug:`${s.slug}?title_no=${r}`,id:r,langs:[n].filter(Boolean),chapters:s.chapters.map(i=>({...i,lang:n})),hasMoreChapters:(document.querySelector(".paginate")?.childElementCount??1)>1}}async getRawReaderData(){const t=new URLSearchParams(location.search),e=t.get("episode_no"),r=t.get("title_no");if(!e||!r)return;const s=T(g(".paginate > span:not(:first-child)|text"));if(s===void 0)return;const{chap:n}=s,i=document.title.split("|")[1]?.trim();if(!i)return;const o=location.pathname.split("/"),l=`${o.slice(0,4).join("/")}/list?title_no=${r}`,c=await this.getChapters({sel:"#sequence_scroll li.eg-flick-panel,#toolbar .episode_lst li[data-episode-no]",url:"a|attr:href",label:"|attr:data-episode-no || .num|text"},{lazy:!1,titleId:r,titleSlug:l}),u=o[1];return{chap:n,lang:u,slug:`${location.pathname}?title_no=${r}&episode_no=${e}`,basePath:"",imgs:await this.getReaderImgs(),isWebtoon:!0,title:{id:r,url:l,slug:l,name:i,langs:[u],chapters:(c??[]).map(h=>({...h,lang:u})),hasMoreChapters:!1}}}async getReaderImgs(){const t=_("#_imageList img|[attr:data-url,attr:src]");return t?.length?t:await N(100,50,()=>window.__viewerState__?.scrollViewerParam?.imageList?.map(({url:e})=>e).filter(Boolean))}parseReaderSlug(t,e,r){if(!r)return{basePath:"",slug:e};if(r.startsWith("http://")||r.startsWith("https://")){const s=W(r);return{basePath:"",slug:s.pathname+s.search}}return{basePath:"",slug:r}}}fa(St,"specId","webtoon");var ma=Object.defineProperty,wa=(a,t,e)=>t in a?ma(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,va=(a,t,e)=>(wa(a,typeof t!="symbol"?t+"":t,e),e);class $t extends f{async getRawChaptersData(){const t=this.context?.rawId;if(!t)return;const e=await ya(t);if(!e)return;const r=document.createElement("DIV");r.innerHTML=e;const s=await this.getChapters({sel:'a[href*="/chapters/"]',url:"|attr:href",label:"span span|text",at:"time|attr:datetime"},{root:r,lazy:!0});if(s)return{chapters:s,hasMore:!1,asc:!1,total:s.length}}}va($t,"specId","weebcentral");async function ya(a){const t=`https://weebcentral.com/series/${a}/full-chapter-list`;try{return await(await fetch(t)).text()}catch{return}}const ba=[et,me,st,q,ot,ut,gt,ht,pt,dt,ft,mt,wt,vt,Rt,bt,St,$t];function It(a){const t=ba.find(e=>e.specId===a.spec.id)??f;return new t(a)}async function Ra(a){const{spec:t}=a;if(t){const e=a.siteMeta??t.meta,r=a.type?[a.type]:Mt(e,t.generic);if(!r.length)return;const s=It({...a,spec:t,siteMeta:e});return await O(r.map(n=>s.getRawPageByType(n,r.length>1)))}return await O((a.genericSpecs??[]).map(e=>{const r=Mt(e.meta,e.generic);if(!r.length)return[];const s=It({...a,spec:e,siteMeta:e.meta});return r.map(n=>s.getRawPageByType(n,!0))}).flat())}function Mt(a,t){if(location.pathname==="/")return[];const{titleBase:e,readerBase:r}=a,s=location.pathname.split("/").filter(Boolean),n=Dt(s,r),i=Dt(s,e);if(n&&i)return[x.reader,x.title];const o=[];return!i&&(n!==!1||t)&&o.push(x.reader),!n&&(i!==!1||t)&&o.push(x.title),!o.length&&t?[x.reader,x.title]:o}function Dt(a,t){if(!t)return;const e=t.split("/").filter(Boolean),r=e.indexOf("{slug}"),s=r===e.length-1,n=!s&&r!==-1;if(s&&(e.pop(),!e.length))return;const i=a.length-e.length;if(n?i<0:i<=0)return!1;let o=!1;for(let l=0;l<e.length;l++){const c=e[l];if(c[0]!=="{"){if(c!==a[l])return!1;o=!0}}if(o&&i===(n?0:1))return!0}B.PageType=x,B.scrape=Ra});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "trackkun-dom",
3
3
  "author": "endyquang",
4
- "version": "1.11.7",
4
+ "version": "1.12.0",
5
5
  "license": "UNLICENSED",
6
6
  "description": "Trkun DOM parser",
7
7
  "main": "index.js",
package/specs.json CHANGED
@@ -1 +1 @@
1
- [{"404":"img[src*=\"/images/error-message\"]","id":"asura","meta":{"releases":"","titleBase":"series","readerBase":"series/{titleSlug}/chapter","searchBase":"series?page=1&name=","titleIdType":"name","defaultLang":"en","trailing":false},"releases":{"title":{"sel":"div:has(> a[href=\"/series\"]) + div > div > div > div:nth-child(2)","name":"span a|text","url":"span a|attr:href","chapter":{"sel":"div:has(> p):has(a)","url":"a[href*=\"/chapter/\"]|attr:href","label":"a[href*=\"/chapter/\"] p|text","at":"div + p|text"}}},"title":{"name":"div:has(> div a[href*=\"/sharer/\"]) span|text","img":"img[alt=\"poster\"]|attr-contain:src","type":"div:has(> img[alt=\"poster\"]) h3:first-child|row:type","tags":"div:has(> h3:first-child):has(> div:last-child:nth-child(2)) button|text","chapter":{"sel":"a[href*=\"/chapter/\"]:has(> h3)","url":"|attr:href","label":"h3|text","at":"h3:last-child|text"}},"reader":{"label":"h2|text","imgDivs":"div:has(> img[alt*=\"chapter\"])","content":"body","prev":"a[href*=\"/chapter/\"]:has(svg.lucide-chevron-left)|attr:href","next":"a[href*=\"/chapter/\"]:has(svg.lucide-chevron-right)|attr:href","title":{"sel":"a[href*=\"series/\"]:not([href$=\"series/\"]):not([href*=\"/chapter/\"])","name":"span|text","url":"|attr:href"},"chapter":{"trigger":"button:has(> h2)","sel":".dropdown-content > a","label":"h2|text","url":"|attr:href"}},"search":{"title":{"sel":"a[href*=\"series/\"]:not([href$=\"series/\"]):has(div span:first-child)","url":"|attr:href","name":"div:has(> span:first-child):has(> span:nth-child(3):last-child) span:first-child|text"}}},{"404":"#content > .wrapper > .notf img, body:empty","id":"mangastream","generic":true,"name":"meta[itemprop=\"name\"]|attr:content","meta":{"releases":"","titleBase":"series","readerBase":"","searchBase":"?s=","idBase":"?p=","titleIdType":"id","defaultLang":"en","trailing":true},"releases":{"title":{"sel":".listupd .utao .uta, .bixbox .bs.styletere","id":"a.series[rel]|attr:rel","name":"h4, .info .tt, .tt a, .series > h3|text","url":"a|attr:href","chapter":{"sel":".luf ul li, .chapter-list > a, .chfiv > li","label":"a .fivchap, a, .epxs|text","url":"a|attr:href || |attr:href","at":"a .fivtime, a + span, .expdate, .newchtimeluffy|text"}}},"title":{"sel":"#chapterlist > ul","id":".bookmark[data-id]|attr:data-id || #rating-form input[name=\"bs_table_id\"]|attr:value","name":"h1.entry-title|text","img":".thumb img|attr-contain:src","type":".imptdt a[href*=\"type=\"]|text || .imptdt:first-of-type i|text","tags":".postbody .mgen > a|text","chapter":{"sel":"#chapterlist > ul > li","url":"a|attr:href","label":".chapternum|text","at":".chapterdate|text"}},"reader":{"sel":"#readerarea","content":"#readerarea","id":".ctop option:selected|attr:data-id","label":"h1.entry-title|text","title":{"sel":".headpost .allc a, [itemprop=\"itemListElement\"] [content=\"2\"] ~ a","name":"|text","url":"|attr:href"},"prev":"a.ch-prev-btn:not(.disabled)|attr:href","next":"a.ch-next-btn:not(.disabled)|attr:href","chapter":{"sel":".ctop #chapter option:not([disabled]):not([value=\"\"])","id":"|attr:data-id","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".listupd .bsx","name":".bigor .tt|text","url":"a|attr:href"}}},{"404":".error-404.not-found","id":"madara","generic":true,"name":"a.logo|attr:title || meta[property=\"og:site_name\"]|attr:content","meta":{"releases":"","titleBase":"manga","readerBase":"manga/{titleSlug}","idBase":"?p=","searchBase":"?post_type=wp-manga&s=","defaultLang":"en","titleIdType":"id","trailing":true},"releases":{"title":{"sel":".page-listing-item .page-item-detail, .lastest-content .page-item-detail","id":"[data-post-id]|attr:data-post-id","name":"h3 a, .item-summary h3|text","url":"a|attr:href","chapter":{"sel":".chapter-item","label":".chapter a|text","url":".chapter a|attr:href","at":".c-new-tag|attr:title || .post-on|text"}}},"title":{"sel":"body.manga-page","id":"#manga-chapters-holder|attr:data-id || .rating-post-id|attr:value || [data-action=\"bookmark\"]|attr:data-post","name":"h1|text","img":".summary_image .img-responsive, .summary_image img, .series-img img|[attr:data-src,attr-contain:src]","tags":"a[rel=\"tag\"][href*=\"genre\"],a[rel=\"tag\"][href*=\"tag\"],.genres-content|text","type":".post-content_item .summary-heading|row:type","chapter":{"sel":"li.wp-manga-chapter, .chapter-ul > li","url":"a|attr:href","label":"a, .chapter-title-date > p|text","at":".c-new-tag|attr:title || .chapter-release-date i|text"}},"reader":{"sel":".entry-content .read-container","content":".reading-content","label":".breadcrumb li.active|text","title":{"sel":".breadcrumb li:nth-last-of-type(2) a","id":"#manga-reading-nav-head|attr:data-id","name":"|text","url":"|attr:href"},"prev":"a.btn.prev_page|attr:href","next":"a.btn.next_page|attr:href","chapter":{"sel":"#manga-reading-nav-head select.single-chapter-select > option:not([disabled])","label":"|text","url":"|attr:data-redirect"}},"search":{"title":{"sel":".c-tabs-item__content","name":"h3 a|text","url":"a|attr:href","chapter":{"sel":".tab-meta","label":".chapter a|text","url":".chapter a|attr:href","at":".c-new-tag|attr:title || .post-on|text"}}}},{"404":".elapi > a[href*=\"/search?q=\"]","id":"mangahub","meta":{"releases":"","titleBase":"manga","readerBase":"chapter/{titleSlug}","searchBase":"search?q=","defaultLang":"en","titleIdType":"slug","trailing":false},"releases":{"title":{"sel":".list-group-item .media","name":"h4.media-heading a|text","url":".media-heading a|attr:href","at":".media-heading .small|text","chapter":{"sel":".media-body > a","label":"|text","url":"|attr:href"}}},"title":{"sel":"#chapters-tab .tab-content","name":"#mangadetail h1|text","img":"#mangadetail img.manga-thumb|attr-contain:src","tags":"#mangadetail a.genre-label|text","chapter":{"sel":"#chapters-tab li.list-group-item","label":"a:not([rel]) > span:first-child > span:first-child,a > span:first-child > span:first-child|text","url":"a:not([rel])|attr:href || a|attr:href","at":"small|text"}},"reader":{"content":"#mangareader .container-fluid, #mangareader","label":"h3|text","prev":".chapter-pager .previous a[href*=\"/chapter/\"]|attr:href","next":".chapter-pager .next a[href*=\"/chapter/\"]|attr:href","title":{"sel":"h3 a","name":"|text","url":"|attr:href"},"chapter":{"sel":".pager-dropdown .dropdown-menu > li > a","label":"|text","url":"|attr:href"}},"search":{"title":{"sel":".media-manga","name":"h4 a|text","url":"h4 a|attr:href","chapter":{"sel":".media-body","label":"a[href*=\"/chapter/\"]|text","url":"a[href*=\"/chapter/\"]|attr:href"}}}},{"id":"mangadex","meta":{"releases":"about:blank","titleBase":"title","readerBase":"chapter","searchBase":"titles?q=","defaultLang":"en","chapters":"about:blank","titleIdType":"slug","trailing":false}},{"id":"comick","meta":{"home":"home","releases":"about:blank","titleBase":"comic","readerBase":"comic/{titleSlug}","searchBase":"search?q=","defaultLang":"en","chapters":"about:blank","titleIdType":"id","trailing":false},"releases":{"title":{"sel":"#updates-container div[title]","name":"|attr:title","url":"a[href^=\"/comic/\"]|attr:href","chapter":{"sel":"a:last-child","label":"div:first-child|text","url":"|attr:href","at":"div:nth-child(2)|text"}}},"title":{"name":"h1|text","img":"a[href$=\"/covers\"] > img,a[href$=\"/cover\"] > img|attr-contain:src","langs":"#chapter-header + div select option:not([value=\"\"]):not([value=\"all\"])|attr:value","tags":"table a.link[href^=\"/search?genres=\"]|text","type":"h1 ~ div.text-sm span:first-child|row:origination","first":"div:has(> a[href*=\"/comic/\"] + button) a|attr:href"},"reader":{"lazy":true,"sel":".reader-container","content":".reader-container","label":"select:first-of-type option[selected]|text","title":{"sel":"div > a[href*=\"/comic/\"]","name":"|text || img[alt]|attr:alt","url":"|attr:href"},"lang":"select:last-of-type|value","prev":".reader-container a:first-child[href^=\"/comic/\"]:not(:last-child)|attr:href","next":".reader-container a:last-child[href^=\"/comic/\"]|attr:href","chapter":{"sel":"select:first-of-type option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}}},{"id":"bato","meta":{"releases":"","titleBase":"series","readerBase":"chapter","searchBase":"search?word=","defaultLang":"en","titleIdType":"slug","trailing":false},"releases":{"title":{"sel":"#series-list > .item","name":"a.item-title|text","url":"a.item-title|attr:href","lang":"em[data-lang]|attr:data-lang","chapter":{"sel":".item-volch","label":"a|text","url":"a|attr:href","at":"i|text"}}},"title":{"name":"h3.item-title a|text","img":".attr-cover > img|attr-contain:src","langs":".title-set em[data-lang]|attr:data-lang","tags":".attr-main .attr-item .text-muted|row:genres","chapter":{"sel":".episode-list > .main > .item","label":"a.chapt > b|text","url":"a.chapt|attr:href","at":".extra > i|text"}},"reader":{"content":"#viewer","label":"title|text","title":{"sel":"h3.nav-title a","name":"|text","url":"|attr:href"},"lang":"h3.nav-title em[data-lang]|attr:data-lang","prev":".nav-prev > a[href^=\"/chapter/\"]|attr:href","next":".nav-next > a[href^=\"/chapter/\"]|attr:href","chapter":{"sel":".nav-epis > select option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}}},{"404":"#error > .attention","id":"mangago","meta":{"releases":"list/latest","titleBase":"read-manga","readerBase":"read-manga/{titleSlug}","searchBase":"r/l_search/?name=","defaultLang":"en","titleIdType":"slug","trailing":true},"releases":{"title":{"sel":"ul#search_list > li > div","name":"a.thm-effect|attr:title","url":"a.thm-effect|attr:href","chapter":{"sel":"a.chico","label":"|text","url":"|attr:href"}}},"title":{"name":".w-title h1|text","img":".article .cover img,#information img|attr-contain:src","tags":".manga_right a[href*=\"/genre/\"],.manga_info ul.uk-list a[href*=\"/genre/\"]|text","chapter":{"sel":"#chapter_table tbody tr, table.uk-table tbody tr","label":"h4 a b, a.chico b|text || a.chico|text","url":"h4 a, a.chico|attr:href","at":"td:last-child|text"}},"reader":{"label":"#navi h3 span:last-child,#series + a.chapter|text","title":{"sel":"#navi a#series,#reader-nav .nav li:first-child a","name":"|text","url":"|attr:href"},"chapter":{"sel":".pagebar.top ul.dropdown-menu.chapter > li > a,#series ~ ul.chapter li a","label":"|text","url":"|attr:href"}},"search":{"title":{"sel":"#search_list > li .box","name":"a.thm-effect|attr:title","url":"a.thm-effect|attr:href","chapter":{"sel":"a.chico","label":"|text","url":"|attr:href"}}}},{"404":".nf-large + .nf-desc + a[href=\"/home\"]","id":"kakalot","meta":{"home":"home","releases":"home","titleBase":"","readerBase":"read/{titleSlug}/{lang}","searchBase":"search?keyword=","defaultLang":"en","titleIdType":"id","trailing":false},"releases":{"title":{"sel":"#latest-chap .inner > .item","id":".item-info h3|attr:data-id","name":".item-info h3 a|text","url":"a|attr:href","chapter":{"sel":".chapter-list > .cl-item","label":"a.chapter-name|text","url":"a|attr:href","at":".time|text"}}},"title":{"lazy":true,"sel":"#chapt-list .cl-header","id":"#main|attr:data-id","name":".detail-box h3.manga-name|text","img":".detail-box .manga-poster-img|attr-contain:src","tags":".detail-box .line-content a[href*=\"/genre/\"]|text","langs":"#chap-lang .lang-item|attr:data-code","chapter":{"sel":"#chapt-list .reading-list > .item","label":"a.chapter-name|text","url":"a.chapter-name|attr:href","at":".item-time|text"}},"reader":{"content":"#list-image","imgDivs":".card-wrap[data-url]","label":".breadcrumb-item.active|text","title":{"sel":".breadcrumb-item:nth-child(2) a","id":"#reading|attr:data-manga-id","name":"|text","url":"|attr:href"},"chapter":{"sel":".kbreadcrumb + .reading-option option.reading-item","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".manga-list > .inner > .item","name":".manga-name a|attr:title","url":".manga-name a|attr:href","chapter":{"sel":".latest-chapter .chapter-name","label":"|text","url":"|attr:href"}}}},{"id":"reaper","meta":{"releases":"latest/comics","titleBase":"series","readerBase":"series/{titleSlug}/chapters","searchBase":"?s=","defaultLang":"en","titleIdType":"id"},"releases":{"title":{"sel":"h5 + div > div > div:has(> a h5)","name":"a h5|text","url":"a|attr:href","chapter":{"sel":"div > a","url":"|attr:href","label":"span:first-child|text","at":"span:last-child|text"}}},"title":{"lazy":true,"sel":"[aria-labelledby*=\"chapters_list\"] div > ul","name":"h1|text","img":"main .container img[alt]|attr-contain:src","first":"#content a:first-child:has(> button)|attr:href","chapter":{"sel":"[aria-labelledby*=\"chapters_list\"] ul > a","url":"|attr:href","label":"div:has(> span):not(:has(div))|text","at":"div + span|text"}},"reader":{"content":"#content","label":"h1|text","prev":"#content nav > div > div:first-child a|attr:href","next":"#content nav > div > div:last-child a|attr:href","title":{"sel":"#content","url":"a:has(svg[data-icon=\"house\"])|attr:href","name":"h2|text"}}},{"id":"tapas","meta":{"releases":null,"titleBase":"series/{slug}/info","readerBase":"episode","searchBase":"search?q=","defaultLang":"en","titleIdType":"id","chapters":"about:blank","trailing":false},"title":{"id":".button--subscribe|attr:data-tiara-event-meta-series-id","name":".info .title|text","img":".thumb img|attr:src","first":".episode-list__item a|attr:href","chapter":{"sel":".episode-list .episode-list__item > a","url":"|attr:data-id","label":"|attr:data-scene-number"}},"reader":{"content":".viewer__body","id":"div[id^=\"episode-\"][data-ep-id]|attr:data-ep-id","label":"div[id^=\"episode-\"][data-ep-scene]|attr:data-ep-scene","prev":"div[data-prev-id]:not([data-prev-id=\"-1\"])|attr:data-prev-id","next":"div[data-next-id]:not([data-next-id=\"-1\"])|attr:data-next-id","title":{"sel":"body","id":".subscribe-btn|attr:data-id","url":".subscribe-btn|attr:data-id","name":".series-info .title|text","img":".series-info .thumb img|attr:src"},"chapter":{"sel":".episode-list .list-body > li[data-id]","url":"|attr:data-id","label":".info__label|text"}}},{"id":"mangafire","meta":{"home":"home","releases":"updated","titleBase":"manga","readerBase":"read/{titleSlug}/{lang}","searchBase":"filter?keyword=","defaultLang":"en","titleIdType":"id"},"releases":{"title":{"sel":".unit > .inner","id":"a[data-tip]|attr:data-tip","name":".info a|text","url":"a|attr:href","chapter":{"sel":"ul.content li a","label":"span:first-child|text","url":"|attr:href","at":"span:last-child"}}},"title":{"id":".bookmark[data-id]|attr:data-id","name":".info h1[itemprop=\"name\"]|text","img":".poster img|attr-contain:src","tags":"#info-rating a[href*=\"/genre/\"]|text","langs":".tab-content[data-name=\"chapter\"] a.dropdown-item[data-code]|attr:data-code","chapter":{"sel":".tab-content[data-name=\"chapter\"] li.item[data-number]","url":"a|attr:href","label":"|attr:data-number","at":"a span:last-child|text"}},"reader":{"content":"#page-wrapper","imgDivs":".page","lstrip":".setting-tab.page-layout [data-value=\"longstrip\"].active","lstripBtn":".setting-tab.page-layout [data-value=\"longstrip\"]","label":"#number-panel ul li a[href*=\"/read/\"][data-number].active|attr:data-number","title":{"sel":"#ctrl-menu .head a","id":"body|attr:data-id","url":"|attr:href","name":"|text"},"chapter":{"sel":"#number-panel ul li a[href*=\"/read/\"][data-number]","label":"|attr:data-number","url":"|attr:href"}}},{"id":"webtoon","meta":{"releases":null,"titleBase":"","readerBase":"","searchBase":"search?keyword=","defaultLang":"en","chapters":"meta.reader","titleIdType":"id","trailing":false},"title":{"name":"h1.subj,.detail_info > p.subj,.info > h3.subj|text","img":"meta[property=\"og:image\"]|attr:content","tags":".info > h2.genre,.detail_info > p.genre,.info > p.genre|text","first":"a#_btnEpisode|attr:href","chapter":{"sel":"li._episodeItem","label":"|attr:data-episode-no","url":"a|attr:href","at":".date|text"}}},{"id":"mangareader","meta":{"home":"home","releases":"home","titleBase":"","readerBase":"read/{titleSlug}/{lang}","searchBase":"search?keyword=","defaultLang":"en","titleIdType":"id","trailing":false},"releases":{"title":{"sel":"#latest-chap .mls-wrap > .item","url":"a|attr:href","name":".manga-name a|text","chapter":{"sel":".fd-list .chapter a","label":"|text","url":"|attr:href"}}},"title":{"id":"[data-manga-id]|attr:data-manga-id","name":"#ani_detail h2.manga-name|text","img":"#ani_detail img.manga-poster-img|attr:src","type":".anisc-info .item-head|row:type","tags":".anisc-detail .genres a|text","langs":"a.c-select-lang|attr:data-code","chapter":{"sel":".chapters-list-ul > ul > li","label":"|attr:data-number","url":"a|attr:href"}},"reader":{"content":"#main-wrapper","imgDivs":".iv-card[data-url]","lstrip":"a.active[data-value=\"vertical\"]","lstripBtn":".dropdown-menu a[data-value=\"vertical\"]","label":".reading-list .chapter-item.active|attr:data-number","title":{"id":"[data-manga-id]|attr:data-manga-id","sel":"#header a.hr-manga","name":"h2,.manga-name|text","url":"|attr:href"},"chapter":{"sel":".reading-list.active > .chapter-item","url":"a|attr:href","label":"|attr:data-number"}}},{"404":"#notfound .notfound-404","id":"mgeko","meta":{"releases":"jumbo/manga","titleBase":"manga","readerBase":"reader","searchBase":"search/?search=","defaultLang":"en","titleIdType":"slug","chapters":"meta.reader"},"releases":{"title":{"sel":"#latest-updates .novel-list.chapters > li > a","url":"|attr:href","name":"|attr:title","chapter":{"sel":"div:has(.chapter-title)","label":".chapter-title|text","at":".novel-stats span:first-child|text"}}},"title":{"name":".cover img|attr:alt","img":".cover img|[attr:data-src,attr-contain:src]","tags":".categories .property-item|text","first":"a#readchapterbtn|attr:href","chapter":{"sel":".chapter-list > li a","url":"|attr:href","label":".chapter-title,.chapter-number|text","at":"time|attr:datetime || .chapter-stats|text"}},"reader":{"content":"#chapter-reader","label":".chapter-header .titles h2|text","next":"center .nextchap:not(.isDisabled)|attr:href","prev":"center .prevchap:not(.isDisabled)|attr:href","title":{"sel":".chapter-header .titles h1 a","name":"|text","url":"|attr:href"},"chapter":{"sel":"center center #cars option","label":"|text","url":"|attr:value"}}},{"404":"#main > .error-404","id":"mangack","meta":{"home":"home","releases":"updates","titleBase":"manga","readerBase":"chapter","searchBase":"?s=","defaultLang":"en","titleIdType":"slug","trailing":true},"releases":{"title":{"sel":".latestmanga .Latest_chapter_update","url":"a|attr:href","name":".latest-title a|text","chapter":{"sel":"tr:last-child center","label":"a|text","url":"a|attr:href","at":".chapter-date|text"}}},"title":{"id":"input[name=\"follow_manga\"]|attr:value","name":"h1.entry-title|text","img":".manga-cover-wrap img|attr:src","tags":".infobox a[href*=\"/genres/\"]|text","type":".infobox a[href*=\"/comic-type/\"]|text","chapter":{"sel":".chapterslist > li","url":"a|attr:href","label":"a|text","at":".entry-date|text"}},"reader":{"content":".entry-content","label":".entry-title|text","title":{"sel":".latest-title a","name":"|text","url":"|attr:href"},"prev":".prev-post a|attr:href","next":".next-post a|attr:href"}},{"id":"katana","meta":{"releases":"latest","titleBase":"manga","readerBase":"manga/{titleSlug}","searchBase":"?search_by=book_name&search=","defaultLang":"en","titleIdType":"id","trailing":false},"releases":{"title":{"sel":"#book_list > .item","id":"|attr:data-id","url":"a|attr:href","name":"a|text","chapter":{"sel":".chapter a","url":"|attr:href","label":"|text"}}},"title":{"id":".bookmark_bt[data-id]|attr:data-id","name":".info h1|text","img":".cover img|attr:src","tags":".info .genres a|text","chapter":{"sel":".chapters tbody > tr","url":"a|attr:href","label":"a|text","at":".update_time|text"}},"reader":{"content":"#imgs","label":"select[name=\"chapter_select\"] option[selected]|text","prev":".nav_button.prev:not([disabled])|attr:href","next":".nav_button.next:not([disabled])|attr:href","title":{"sel":"#breadcrumb_wrap li:nth-child(2) a","id":".bookmark_chapter_bt[data-id]|attr:data-id","name":"span|text","url":"|attr:href"},"chapter":{"sel":".nav_chapters_wrap:first-child select[name=\"chapter_select\"] option","url":"|attr:value","label":"|text"}}},{"id":"blogtruyen","meta":{"releases":null,"titleBase":"{id}","readerBase":"","searchBase":"timkiem/nangcao/1/0/-1/-1?txt=","defaultLang":"vi","titleIdType":"id"},"title":{"name":"h1.entry-title a|text","img":".thumbnail img|attr-contain:src","tags":".description .category a|attr:title","chapter":{"sel":"#list-chapters > p[id]","label":".title a|text","url":".title a|attr:href","at":".publishedDate|text"}},"reader":{"sel":"#readonline","content":"#readonline #content","label":"h1|text","prev":".linkchapter a:first-child:not([href=\"#\"])|attr:href","next":".linkchapter a:last-child:not([href=\"#\"])|attr:href","title":{"sel":".breadcrumbs a:nth-child(2)","name":"span|text","url":"|attr:href"},"chapter":{"sel":".linkchapter .ddlChapter option","label":"|text","url":"|attr:value"}}},{"id":"truyenqq","meta":{"releases":"","titleBase":"truyen-tranh","readerBase":"truyen-tranh","searchBase":"tim-kiem.html?q=","defaultLang":"vi","trailing":false,"titleIdType":"id"},"releases":{"title":{"sel":"#list_new > li","name":".book_name h3 a|text","url":".book_name h3 a|attr:href","chapter":{"sel":".last_chapter a","label":"|text","url":"|attr:href"}}},"title":{"id":".btn-subscribe|attr:data-id","name":".book_info h1|text","img":".book_avatar img|attr-contain:src","tags":".book_info li a[href*=\"/the-loai/\"]|text","chapter":{"sel":".works-chapter-list .works-chapter-item","label":".name-chap a|text","url":".name-chap a|attr:href","at":".time-chap|text"}},"reader":{"content":".chapter_content","label":"ol.breadcrumb > li:last-of-type a span|text","prev":".chapter-control a.prev[href]:first-of-type:not(.d-none)|attr:href","next":".chapter-control a.prev[href]:last-of-type:not(.d-none), .chapter-control a.next[href]:not(.d-none)|attr:href","title":{"sel":"ol.breadcrumb > li:nth-of-type(2) a","id":".btn-subscribe|attr:data-id","name":"span|text","url":"|attr:href"},"chapter":{"trigger":".chapter_list","sel":"#popup_content .chapter-list > a, .chapter_list > option","label":"|text","url":"|attr:href || |attr:value"}},"search":{"title":{"sel":"#list_new > li","name":".book_name h3 a|text","url":".book_name h3 a|attr:href"}}},{"id":"uzay","meta":{"releases":"","titleBase":"manga/{id}","readerBase":"manga/{titleId}/{titleSlug}","searchBase":"search?search=","defaultLang":"tr","titleIdType":"slug","trailing":false},"releases":{"title":{"sel":"section[aria-label=\"new series\"] ~ section .header + div > div","url":"a|attr:href","name":"h2|text","chapter":{"sel":"a.mobile-list-item","url":"|attr:href","label":"h3 span:first-child b|text","at":"h3 span:nth-child(2)|text"}}},"title":{"name":".content-details > h1|text","img":".content-info > img|attr:src","tags":".content-details a[href*=\"?categories=\"]|text","chapter":{"sel":".list-episode > a","url":"|attr:href","label":"h3 b|text","at":"span:last-child|text"}},"reader":{"content":".manga-episode-card","label":".header h1 + h2|text","prev":"[aria-label=\"episode-navbar\"] div:not(last-child) > a[href]|attr:href","next":"[aria-label=\"episode-navbar\"] div:last-child > a[href]|attr:href","title":{"sel":".header h1:has(> a) a","url":"|attr:href","name":"|text"}}},{"id":"mangaworld","meta":{"releases":"","titleBase":"manga/{id}","readerBase":"manga/{titleId}/{titleSlug}/read","searchBase":"archive?keyword=","defaultLang":"it","titleIdType":"id"},"releases":{"title":{"sel":".comics-grid > .entry","name":".manga-title|text","url":"a|attr:href","chapter":{"sel":"div:has(> .xanh)","label":"a|text","url":"a|attr:href","at":"i|text"}}},"title":{"name":"h1.name|text","img":".thumb img|attr:src","tags":".meta-data a[href*=\"?genre=\"]|text","type":".meta-data a[href*=\"?type=\"]|text","chapter":{"sel":".chapters-wrapper .chapter > a","url":"|attr:href","label":"span|text","at":"i|text"}},"reader":{"content":"#page","label":"h1|text","lstrip":"select.mode option[value=\"LIST\"][selected]","lstripBtn":"select.mode option[value=\"LIST\"]","title":{"sel":"a[href*=\"/manga/\"]","name":"|text","url":"|attr:href"},"chapter":{"sel":"#controls-1 select.chapter option","label":"|text","url":"|value"}}},{"id":"mangaplus","meta":{"home":"updates","releases":"updates","titleBase":"titles","readerBase":"viewer","defaultLang":"en","titleIdType":"slug","trailing":false},"releases":{"title":{"sel":"[class*=\"UpdatedTitle-module_titleWrapper_\"]","url":"a|attr:href","name":"[class*=\"UpdatedTitle-module_titleName_\"]|text","chapter":{"sel":"[class*=\"UpdatedTitle-module_chapterTitle_\"]","label":"|text"}}},"title":{"lazy":true,"sel":"h1[class*=\"TitleDetailHeader-module_title_\"]","name":"h1[class*=\"TitleDetailHeader-module_title_\"]|text","img":"img[class*=\"TitleDetailHeader-module_coverImage_\"]|attr:src","chapter":{"sel":"[class*=\"ChapterListItem-module_chapterListItem_\"]","url":"a[class*=\"ChapterListItem-module_commentContainer_\"]|attr:href","label":"[class*=\"ChapterListItem-module_name_\"]|text","at":"[class*=\"ChapterListItem-module_date_\"]|text"}},"reader":{"content":"[class*=\"Viewer-module_viewerContainer_\"]","label":"[class*=\"Navigation-module_chapterTitle_\"]|text","lstrip":"input#mode-vertical:checked","lstripBtn":"input#mode-vertical","title":{"sel":"a:has(> [class*=\"Navigation-module_title_\"])","url":"|attr:href","name":"h1|text"},"chapter":{"sel":"ul > li[class*=\"SideMenu-module_chapter_\"]","label":"|text"}}},{"id":"flame","meta":{"releases":"","titleBase":"series","readerBase":"series/{titleSlug}","searchBase":"browse?search=","defaultLang":"en","titleIdType":"name","trailing":false},"releases":{"title":{"sel":"[class*=\"SeriesCard_chapterCardContainer__\"]","url":"a|attr:href","name":".mantine-Stack-root a|text","chapter":{"sel":"a:has(> [class*=\"SeriesCard_chapterPillWrapper__\"])","url":"|attr:href","label":"p:first-child|text","at":"p:not(:first-child)|text"}}},"title":{"name":"h1|text","img":"img[alt=\"Cover\"]|attr:src","tags":"a[href*=\"/genre/\"] span|text","type":"p[class*=\"SeriesPage_infoField__\"]|row:type","first":".mantine-Paper-root p + a[href*=\"/series/\"]|attr:href","chapter":{"sel":"a[class*=\"ChapterCard_chapterWrapper__\"]","url":"|attr:href","label":"p:first-child|text","at":"p:not(:first-child)|text"}},"reader":{"content":"body","imgs":".mantine-Stack-root img","label":"p[class*=\"TopChapterNavbar_chapter_title___\"]|text","prevBtn":"button:has(.bi-arrow-left)","nextBtn":"button:has(.bi-arrow-right)","title":{"sel":"[class*=\"TopChapterNavbar_inner__\"]","name":"[class*=\"TopChapterNavbar_series_title__\"]|text","url":"a|attr:href"},"chapter":{"trigger":"button:has(.bi-card-list)","sel":"[class*=\"ChapterCard_chapterWrapper__\"]","url":"|attr:href","label":"p:first-child|text","at":"p:not(:first-child)|text"}}},{"id":"vortex","meta":{"home":"home","releases":null,"titleBase":"series","readerBase":"series/{titleSlug}","searchBase":"series?searchTerm=","defaultLang":"en","trailing":false,"titleIdType":"name"},"title":{"name":"h1[itemprop=\"name\"]|text","img":"[itemprop=\"image\"] img|attr:src","type":"h1:has(> svg)|row:type","first":"a[href*=\"/series/\"][href*=\"/chapter\"]|attr:href","hasMore":"a[href*=\"/series/\"][href*=\"/chapter\"]"},"reader":{"content":"section:has(> .chapter-image-container),body","label":"a[href*=\"/series\"]:has(img) div:has(~ time)|text","prev":"a:has(button[aria-label=\"Prev\"])|attr:href","next":"a:has(button[aria-label=\"Next\"])|attr:href","title":{"sel":"a[href*=\"/series\"]:has(img)","name":"div:has(~ time)|text","url":"|attr:href"}}},{"id":"weebcentral","meta":{"releases":"","titleBase":"series/{id}","readerBase":"chapters","chapters":"about:blank","defaultLang":"en","titleIdType":"id","trailing":false},"releases":{"title":{"sel":"[x-data*=\"sub_feed_shown\"] section article","url":"a:first-child|attr:href","name":"div:not(:has(span)) div|text","chapter":{"sel":"a:not(:first-child)","url":"|attr:href","label":"div:not(:first-child) span|text","at":"time|attr:datetime"}}},"title":{"name":"h1|text","img":"picture img|attr:src","tags":"li a[href*=\"?included_tag=\"]|text","type":"li a[href*=\"?included_type=\"]|text","hasMore":"#chapter-list a","first":"[x-data]:has(> a[href*=\"chapters/\"]):last-child a|attr:href"},"reader":{"content":"[hx-include*=\"reading_style\"]","label":"[hx-target=\"#chapter-select-body\"] span|text","lstripBtn":"input[value=\"long_strip\"]","lstrip":"input[value=\"long_strip\"]:checked","prevBtn":"button[\\@click=\"prevPage()\"]","nextBtn":"button[\\@click=\"nextPage()\"]","title":{"sel":"#nav-top a[href*=\"/series/\"]","url":"|attr:href","name":"span|text"},"chapter":{"trigger":"button[hx-target=\"#chapter-select-body\"]"}}},{"id":"lua","meta":{"releases":"","titleBase":"series","readerBase":"series/{titleSlug}","titleIdType":"slug","trailing":false,"defaultLang":"en"},"releases":{"title":{"sel":"div:has(> div > a[href*=\"/series/\"]):has(a > h5)","url":"a|attr:href","name":"h5|text","chapter":{"sel":"a + div a","url":"|attr:href","label":"span:first-child|text","at":"span:not(:first-child)|text"}}},"title":{"lazy":true,"sel":"ul:has(> * > li)","name":"h1|text","img":"section:has(h1) img[srcset]|attr:src"},"reader":{"label":"h1|text","prev":"a[href*=\"/series/\"]:has(> button [data-icon=\"chevron-left\"])|attr:href","next":"a[href*=\"/series/\"]:has(> button [data-icon=\"chevron-right\"])|attr:href","content":"nav:first-child ~ .container:has(img)","title":{"sel":"nav:has(h1)","name":"h2|text","url":"nav:has(h1) a[href*=\"/series/\"]:has(svg[data-icon=\"house\"])|attr:href","img":"img|attr:src"}}},{"id":"rolia","meta":{"releases":"updated-mangas","titleBase":"manga","readerBase":"manga/{titleSlug}","chapters":"manga/{titleSlug}/chapterlist","searchBase":"?s=","titleIdType":"name","defaultLang":"en","trailing":true},"releases":{"title":{"sel":".article-feed > div > div:has(> h6)","name":"h6 a|text","url":"h6 a|attr:href","chapter":{"sel":"table tr","label":"a|text","url":"a|attr:href","at":"time|attr:data-date"}}},"title":{"name":"h1|text","img":"img.poster|attr-contain:src","tags":"a[href*=\"/genres/\"]|text","type":".card-movies-series table tr:last-child td|text","first":".chapter-list + a|attr:href","hasMore":".chapter-list ~ a[href*=\"/chapterlist\"]"},"chapters":{"chapter":{"sel":"#page-content-wrapper td:first-child a","url":"|attr:url","label":"|text"}},"reader":{"content":".manga-child-content","label":".childtitle|text","next":".chapter-nav-right|attr:href","prev":".chapter-nav-left|attr:href","title":{"sel":".breadcrumb strong a","name":"|text","url":"|attr:href"},"chapter":{"sel":"#postDropdown option:not(:first-child)","label":"|text","url":"|attr:value"}}}]
1
+ [{"404":"img[src*=\"/images/error-message\"]","id":"asura","meta":{"releases":"","titleBase":"series","readerBase":"series/{titleSlug}/chapter","searchBase":"series?page=1&name=","titleIdType":"name","defaultLang":"en","trailing":false},"releases":{"title":{"sel":"div:has(> a[href=\"/series\"]) + div > div > div > div:nth-child(2)","name":"span a|text","url":"span a|attr:href","chapter":{"sel":"div:has(> p):has(a)","url":"a[href*=\"/chapter/\"]|attr:href","label":"a[href*=\"/chapter/\"] p|text","at":"div + p|text"}}},"title":{"name":"div:has(> div a[href*=\"/sharer/\"]) span|text","img":"img[alt=\"poster\"]|attr-contain:src","type":"div:has(> img[alt=\"poster\"]) h3:first-child|row:type","tags":"div:has(> h3:first-child):has(> div:last-child:nth-child(2)) button|text","chapter":{"sel":"a[href*=\"/chapter/\"]:has(> h3)","url":"|attr:href","label":"h3|text","at":"h3:last-child|text"}},"reader":{"label":"h2|text","imgDivs":"div:has(> img[alt*=\"chapter\"])","content":"body","prev":"a[href*=\"/chapter/\"]:has(svg.lucide-chevron-left)|attr:href","next":"a[href*=\"/chapter/\"]:has(svg.lucide-chevron-right)|attr:href","title":{"sel":"a[href*=\"series/\"]:not([href$=\"series/\"]):not([href*=\"/chapter/\"])","name":"span|text","url":"|attr:href"},"chapter":{"trigger":"button:has(> h2)","sel":".dropdown-content > a","label":"h2|text","url":"|attr:href"}},"search":{"title":{"sel":"a[href*=\"series/\"]:not([href$=\"series/\"]):has(div span:first-child)","url":"|attr:href","name":"div:has(> span:first-child):has(> span:nth-child(3):last-child) span:first-child|text"}}},{"404":"#content > .wrapper > .notf img, body:empty","id":"mangastream","generic":true,"name":"meta[itemprop=\"name\"]|attr:content","meta":{"releases":"","titleBase":"series","readerBase":"","searchBase":"?s=","idBase":"?p=","titleIdType":"id","defaultLang":"en","trailing":true},"releases":{"title":{"sel":".listupd .utao .uta, .bixbox .bs.styletere","id":"a.series[rel]|attr:rel","name":"h4, .info .tt, .tt a, .series > h3|text","url":"a|attr:href","chapter":{"sel":".luf ul li, .chapter-list > a, .chfiv > li","label":"a .fivchap, a, .epxs|text","url":"a|attr:href || |attr:href","at":"a .fivtime, a + span, .expdate, .newchtimeluffy|text"}}},"title":{"sel":"#chapterlist > ul","id":".bookmark[data-id]|attr:data-id || #rating-form input[name=\"bs_table_id\"]|attr:value","name":"h1.entry-title|text","img":".thumb img|attr-contain:src","type":".imptdt a[href*=\"type=\"]|text || .imptdt:first-of-type i|text","tags":".postbody .mgen > a|text","chapter":{"sel":"#chapterlist > ul > li","url":"a|attr:href","label":".chapternum|text","at":".chapterdate|text"}},"reader":{"sel":"#readerarea","content":"#readerarea","id":".ctop option:selected|attr:data-id","label":"h1.entry-title|text","title":{"sel":".headpost .allc a, [itemprop=\"itemListElement\"] [content=\"2\"] ~ a","name":"|text","url":"|attr:href"},"prev":"a.ch-prev-btn:not(.disabled)|attr:href","next":"a.ch-next-btn:not(.disabled)|attr:href","chapter":{"sel":".ctop #chapter option:not([disabled]):not([value=\"\"])","id":"|attr:data-id","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".listupd .bsx","name":".bigor .tt|text","url":"a|attr:href"}}},{"404":".error-404.not-found","id":"madara","generic":true,"name":"a.logo|attr:title || meta[property=\"og:site_name\"]|attr:content","meta":{"releases":"","titleBase":"manga","readerBase":"manga/{titleSlug}","idBase":"?p=","searchBase":"?post_type=wp-manga&s=","defaultLang":"en","titleIdType":"id","trailing":true},"releases":{"title":{"sel":".page-listing-item .page-item-detail, .lastest-content .page-item-detail","id":"[data-post-id]|attr:data-post-id","name":"h3 a, .item-summary h3|text","url":"a|attr:href","chapter":{"sel":".chapter-item","label":".chapter a|text","url":".chapter a|attr:href","at":".c-new-tag|attr:title || .post-on|text"}}},"title":{"sel":"body.manga-page","id":"#manga-chapters-holder|attr:data-id || .rating-post-id|attr:value || [data-action=\"bookmark\"]|attr:data-post","name":"h1|text","img":".summary_image .img-responsive, .summary_image img, .series-img img|[attr:data-src,attr-contain:src]","tags":"a[rel=\"tag\"][href*=\"genre\"],a[rel=\"tag\"][href*=\"tag\"],.genres-content|text","type":".post-content_item .summary-heading|row:type","chapter":{"sel":"li.wp-manga-chapter, .chapter-ul > li","url":"a|attr:href","label":"a, .chapter-title-date > p|text","at":".c-new-tag|attr:title || .chapter-release-date i|text"}},"reader":{"sel":".entry-content .read-container","content":".reading-content","label":".breadcrumb li.active|text","title":{"sel":".breadcrumb li:nth-last-of-type(2) a","id":"#manga-reading-nav-head|attr:data-id","name":"|text","url":"|attr:href"},"prev":"a.btn.prev_page|attr:href","next":"a.btn.next_page|attr:href","chapter":{"sel":"#manga-reading-nav-head select.single-chapter-select > option:not([disabled])","label":"|text","url":"|attr:data-redirect"}},"search":{"title":{"sel":".c-tabs-item__content","name":"h3 a|text","url":"a|attr:href","chapter":{"sel":".tab-meta","label":".chapter a|text","url":".chapter a|attr:href","at":".c-new-tag|attr:title || .post-on|text"}}}},{"404":".elapi > a[href*=\"/search?q=\"]","id":"mangahub","meta":{"releases":"","titleBase":"manga","readerBase":"chapter/{titleSlug}","searchBase":"search?q=","defaultLang":"en","titleIdType":"slug","trailing":false},"releases":{"title":{"sel":".list-group-item .media","name":"h4.media-heading a|text","url":".media-heading a|attr:href","at":".media-heading .small|text","chapter":{"sel":".media-body > a","label":"|text","url":"|attr:href"}}},"title":{"sel":"#chapters-tab .tab-content","name":"#mangadetail h1|text","img":"#mangadetail img.manga-thumb|attr-contain:src","tags":"#mangadetail a.genre-label|text","chapter":{"sel":"#chapters-tab li.list-group-item","label":"a:not([rel]) > span:first-child > span:first-child,a > span:first-child > span:first-child|text","url":"a:not([rel])|attr:href || a|attr:href","at":"small|text"}},"reader":{"content":"#mangareader .container-fluid, #mangareader","label":"h3|text","prev":".chapter-pager .previous a[href*=\"/chapter/\"]|attr:href","next":".chapter-pager .next a[href*=\"/chapter/\"]|attr:href","title":{"sel":"h3 a","name":"|text","url":"|attr:href"},"chapter":{"sel":".pager-dropdown .dropdown-menu > li > a","label":"|text","url":"|attr:href"}},"search":{"title":{"sel":".media-manga","name":"h4 a|text","url":"h4 a|attr:href","chapter":{"sel":".media-body","label":"a[href*=\"/chapter/\"]|text","url":"a[href*=\"/chapter/\"]|attr:href"}}}},{"id":"mangadex","meta":{"releases":"about:blank","titleBase":"title","readerBase":"chapter","searchBase":"titles?q=","defaultLang":"en","chapters":"about:blank","titleIdType":"slug","trailing":false}},{"id":"comick","meta":{"home":"home","releases":"about:blank","titleBase":"comic","readerBase":"comic/{titleSlug}","searchBase":"search?q=","defaultLang":"en","chapters":"about:blank","titleIdType":"id","trailing":false},"releases":{"title":{"sel":"#updates-container div[title]","name":"|attr:title","url":"a[href^=\"/comic/\"]|attr:href","chapter":{"sel":"a:last-child","label":"div:first-child|text","url":"|attr:href","at":"div:nth-child(2)|text"}}},"title":{"name":"h1|text","img":"a[href$=\"/covers\"] > img,a[href$=\"/cover\"] > img|attr-contain:src","langs":"#chapter-header + div select option:not([value=\"\"]):not([value=\"all\"])|attr:value","tags":"table a.link[href^=\"/search?genres=\"]|text","type":"h1 ~ div.text-sm span:first-child|row:origination","first":"div:has(> a[href*=\"/comic/\"] + button) a|attr:href"},"reader":{"lazy":true,"sel":".reader-container","content":".reader-container","label":"select:first-of-type option[selected]|text","title":{"sel":"div > a[href*=\"/comic/\"]","name":"|text || img[alt]|attr:alt","url":"|attr:href"},"lang":"select:last-of-type|value","prev":".reader-container a:first-child[href^=\"/comic/\"]:not(:last-child)|attr:href","next":".reader-container a:last-child[href^=\"/comic/\"]|attr:href","chapter":{"sel":"select:first-of-type option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}}},{"id":"bato","meta":{"releases":"","titleBase":"series","readerBase":"chapter","searchBase":"search?word=","defaultLang":"en","titleIdType":"slug","trailing":false},"releases":{"title":{"sel":"#series-list > .item","name":"a.item-title|text","url":"a.item-title|attr:href","lang":"em[data-lang]|attr:data-lang","chapter":{"sel":".item-volch","label":"a|text","url":"a|attr:href","at":"i|text"}}},"title":{"name":"h3.item-title a|text","img":".attr-cover > img|attr-contain:src","langs":".title-set em[data-lang]|attr:data-lang","tags":".attr-main .attr-item .text-muted|row:genres","chapter":{"sel":".episode-list > .main > .item","label":"a.chapt > b|text","url":"a.chapt|attr:href","at":".extra > i|text"}},"reader":{"content":"#viewer","label":"title|text","title":{"sel":"h3.nav-title a","name":"|text","url":"|attr:href"},"lang":"h3.nav-title em[data-lang]|attr:data-lang","prev":".nav-prev > a[href^=\"/chapter/\"]|attr:href","next":".nav-next > a[href^=\"/chapter/\"]|attr:href","chapter":{"sel":".nav-epis > select option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}}},{"404":"#error > .attention","id":"mangago","meta":{"releases":"list/latest","titleBase":"read-manga","readerBase":"read-manga/{titleSlug}","searchBase":"r/l_search/?name=","defaultLang":"en","titleIdType":"slug","trailing":true},"releases":{"title":{"sel":"ul#search_list > li > div","name":"a.thm-effect|attr:title","url":"a.thm-effect|attr:href","chapter":{"sel":"a.chico","label":"|text","url":"|attr:href"}}},"title":{"name":".w-title h1|text","img":".article .cover img,#information img|attr-contain:src","tags":".manga_right a[href*=\"/genre/\"],.manga_info ul.uk-list a[href*=\"/genre/\"]|text","chapter":{"sel":"#chapter_table tbody tr, table.uk-table tbody tr","label":"h4 a b, a.chico b|text || a.chico|text","url":"h4 a, a.chico|attr:href","at":"td:last-child|text"}},"reader":{"label":"#navi h3 span:last-child,#series + a.chapter|text","title":{"sel":"#navi a#series,#reader-nav .nav li:first-child a","name":"|text","url":"|attr:href"},"chapter":{"sel":".pagebar.top ul.dropdown-menu.chapter > li > a,#series ~ ul.chapter li a","label":"|text","url":"|attr:href"}},"search":{"title":{"sel":"#search_list > li .box","name":"a.thm-effect|attr:title","url":"a.thm-effect|attr:href","chapter":{"sel":"a.chico","label":"|text","url":"|attr:href"}}}},{"404":".nf-large + .nf-desc + a[href=\"/home\"]","id":"kakalot","meta":{"home":"home","releases":"home","titleBase":"","readerBase":"read/{titleSlug}/{lang}","searchBase":"search?keyword=","defaultLang":"en","titleIdType":"id","trailing":false},"releases":{"title":{"sel":"#latest-chap .inner > .item","id":".item-info h3|attr:data-id","name":".item-info h3 a|text","url":"a|attr:href","chapter":{"sel":".chapter-list > .cl-item","label":"a.chapter-name|text","url":"a|attr:href","at":".time|text"}}},"title":{"lazy":true,"sel":"#chapt-list .cl-header","id":"#main|attr:data-id","name":".detail-box h3.manga-name|text","img":".detail-box .manga-poster-img|attr-contain:src","tags":".detail-box .line-content a[href*=\"/genre/\"]|text","langs":"#chap-lang .lang-item|attr:data-code","chapter":{"sel":"#chapt-list .reading-list > .item","label":"a.chapter-name|text","url":"a.chapter-name|attr:href","at":".item-time|text"}},"reader":{"content":"#list-image","imgDivs":".card-wrap[data-url]","label":".breadcrumb-item.active|text","title":{"sel":".breadcrumb-item:nth-child(2) a","id":"#reading|attr:data-manga-id","name":"|text","url":"|attr:href"},"chapter":{"sel":".kbreadcrumb + .reading-option option.reading-item","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".manga-list > .inner > .item","name":".manga-name a|attr:title","url":".manga-name a|attr:href","chapter":{"sel":".latest-chapter .chapter-name","label":"|text","url":"|attr:href"}}}},{"id":"reaper","meta":{"releases":"latest/comics","titleBase":"series","readerBase":"series/{titleSlug}","chapters":"about:blank","defaultLang":"en","titleIdType":"name"},"releases":{"title":{"sel":"h5 + div > div > div:has(> a h5)","name":"a h5|text","url":"a|attr:href","chapter":{"sel":"div > a","url":"|attr:href","label":"span:first-child|text","at":"span:not(:first-child)|text"}}},"title":{"lazy":true,"sel":"[aria-labelledby*=\"chapters_list\"] div > ul","name":"h1|text","img":"#content div:has(> img):has(+ button) img|attr-contain:src","hasMore":"nav a .lucide-chevron-right","chapter":{"sel":"[aria-labelledby*=\"chapters_list\"] ul > a","url":"|attr:href","label":"div:has(> span):not(:has(div))|text","at":"div + span|text"}},"reader":{"content":"#content > .container:has(div img)","label":"h1|text","prev":"nav a:has(button svg[data-icon=\"chevron-left\"])|attr:href","next":"nav a:has(button svg[data-icon=\"chevron-right\"])|attr:href","title":{"url":"a[href*=\"/series/\"]:has(svg[data-icon=\"house\"])|attr:href","name":"h2|text","img":"nav a:has(button svg[data-icon=\"chevron-left\"]) + div img|attr-contain:src"},"chapter":{"trigger":"button:has(svg[data-icon=\"list\"])","sel":"[id*=\"headlessui-dialog-panel\"] ul > a","url":"|attr:href","label":"div:not(:has(img)) span:first-child|text"}}},{"id":"tapas","meta":{"releases":null,"titleBase":"series/{slug}/info","readerBase":"episode","searchBase":"search?q=","defaultLang":"en","titleIdType":"id","chapters":"about:blank","trailing":false},"title":{"id":".button--subscribe|attr:data-tiara-event-meta-series-id","name":".info .title|text","img":".thumb img|attr:src","first":".episode-list__item a|attr:href","chapter":{"sel":".episode-list .episode-list__item > a","url":"|attr:data-id","label":"|attr:data-scene-number"}},"reader":{"content":".viewer__body","id":"div[id^=\"episode-\"][data-ep-id]|attr:data-ep-id","label":"div[id^=\"episode-\"][data-ep-scene]|attr:data-ep-scene","prev":"div[data-prev-id]:not([data-prev-id=\"-1\"])|attr:data-prev-id","next":"div[data-next-id]:not([data-next-id=\"-1\"])|attr:data-next-id","title":{"sel":"body","id":".subscribe-btn|attr:data-id","url":".subscribe-btn|attr:data-id","name":".series-info .title|text","img":".series-info .thumb img|attr:src"},"chapter":{"sel":".episode-list .list-body > li[data-id]","url":"|attr:data-id","label":".info__label|text"}}},{"id":"mangafire","meta":{"home":"home","releases":"updated","titleBase":"manga","readerBase":"read/{titleSlug}/{lang}","searchBase":"filter?keyword=","defaultLang":"en","titleIdType":"id"},"releases":{"title":{"sel":".unit > .inner","id":"a[data-tip]|attr:data-tip","name":".info a|text","url":"a|attr:href","chapter":{"sel":"ul.content li a","label":"span:first-child|text","url":"|attr:href","at":"span:last-child"}}},"title":{"id":".bookmark[data-id]|attr:data-id","name":".info h1[itemprop=\"name\"]|text","img":".poster img|attr-contain:src","tags":"#info-rating a[href*=\"/genre/\"]|text","langs":".tab-content[data-name=\"chapter\"] a.dropdown-item[data-code]|attr:data-code","chapter":{"sel":".tab-content[data-name=\"chapter\"] li.item[data-number]","url":"a|attr:href","label":"|attr:data-number","at":"a span:last-child|text"}},"reader":{"content":"#page-wrapper","imgDivs":".page","lstrip":".setting-tab.page-layout [data-value=\"longstrip\"].active","lstripBtn":".setting-tab.page-layout [data-value=\"longstrip\"]","label":"#number-panel ul li a[href*=\"/read/\"][data-number].active|attr:data-number","title":{"sel":"#ctrl-menu .head a","id":"body|attr:data-id","url":"|attr:href","name":"|text"},"chapter":{"sel":"#number-panel ul li a[href*=\"/read/\"][data-number]","label":"|attr:data-number","url":"|attr:href"}}},{"id":"webtoon","meta":{"releases":null,"titleBase":"","readerBase":"","searchBase":"search?keyword=","defaultLang":"en","chapters":"meta.reader","titleIdType":"id","trailing":false},"title":{"name":"h1.subj,.detail_info > p.subj,.info > h3.subj|text","img":"meta[property=\"og:image\"]|attr:content","tags":".info > h2.genre,.detail_info > p.genre,.info > p.genre|text","first":"a#_btnEpisode|attr:href","chapter":{"sel":"li._episodeItem","label":"|attr:data-episode-no","url":"a|attr:href","at":".date|text"}}},{"id":"mangareader","meta":{"home":"home","releases":"home","titleBase":"","readerBase":"read/{titleSlug}/{lang}","searchBase":"search?keyword=","defaultLang":"en","titleIdType":"id","trailing":false},"releases":{"title":{"sel":"#latest-chap .mls-wrap > .item","url":"a|attr:href","name":".manga-name a|text","chapter":{"sel":".fd-list .chapter a","label":"|text","url":"|attr:href"}}},"title":{"id":"[data-manga-id]|attr:data-manga-id","name":"#ani_detail h2.manga-name|text","img":"#ani_detail img.manga-poster-img|attr:src","type":".anisc-info .item-head|row:type","tags":".anisc-detail .genres a|text","langs":"a.c-select-lang|attr:data-code","chapter":{"sel":".chapters-list-ul > ul > li","label":"|attr:data-number","url":"a|attr:href"}},"reader":{"content":"#main-wrapper","imgDivs":".iv-card[data-url]","lstrip":"a.active[data-value=\"vertical\"]","lstripBtn":".dropdown-menu a[data-value=\"vertical\"]","label":".reading-list .chapter-item.active|attr:data-number","title":{"id":"[data-manga-id]|attr:data-manga-id","sel":"#header a.hr-manga","name":"h2,.manga-name|text","url":"|attr:href"},"chapter":{"sel":".reading-list.active > .chapter-item","url":"a|attr:href","label":"|attr:data-number"}}},{"404":"#notfound .notfound-404","id":"mgeko","meta":{"releases":"jumbo/manga","titleBase":"manga","readerBase":"reader","searchBase":"search/?search=","defaultLang":"en","titleIdType":"slug","chapters":"meta.reader"},"releases":{"title":{"sel":"#latest-updates .novel-list.chapters > li > a","url":"|attr:href","name":"|attr:title","chapter":{"sel":"div:has(.chapter-title)","label":".chapter-title|text","at":".novel-stats span:first-child|text"}}},"title":{"name":".cover img|attr:alt","img":".cover img|[attr:data-src,attr-contain:src]","tags":".categories .property-item|text","first":"a#readchapterbtn|attr:href","chapter":{"sel":".chapter-list > li a","url":"|attr:href","label":".chapter-title,.chapter-number|text","at":"time|attr:datetime || .chapter-stats|text"}},"reader":{"content":"#chapter-reader","label":".chapter-header .titles h2|text","next":"center .nextchap:not(.isDisabled)|attr:href","prev":"center .prevchap:not(.isDisabled)|attr:href","title":{"sel":".chapter-header .titles h1 a","name":"|text","url":"|attr:href"},"chapter":{"sel":"center center #cars option","label":"|text","url":"|attr:value"}}},{"404":"#main > .error-404","id":"mangack","meta":{"home":"home","releases":"updates","titleBase":"manga","readerBase":"chapter","searchBase":"?s=","defaultLang":"en","titleIdType":"slug","trailing":true},"releases":{"title":{"sel":".latestmanga .Latest_chapter_update","url":"a|attr:href","name":".latest-title a|text","chapter":{"sel":"tr:last-child center","label":"a|text","url":"a|attr:href","at":".chapter-date|text"}}},"title":{"id":"input[name=\"follow_manga\"]|attr:value","name":"h1.entry-title|text","img":".manga-cover-wrap img|attr:src","tags":".infobox a[href*=\"/genres/\"]|text","type":".infobox a[href*=\"/comic-type/\"]|text","chapter":{"sel":".chapterslist > li","url":"a|attr:href","label":"a|text","at":".entry-date|text"}},"reader":{"content":".entry-content","label":".entry-title|text","title":{"sel":".latest-title a","name":"|text","url":"|attr:href"},"prev":".prev-post a|attr:href","next":".next-post a|attr:href"}},{"id":"katana","meta":{"releases":"latest","titleBase":"manga","readerBase":"manga/{titleSlug}","searchBase":"?search_by=book_name&search=","defaultLang":"en","titleIdType":"id","trailing":false},"releases":{"title":{"sel":"#book_list > .item","id":"|attr:data-id","url":"a|attr:href","name":"a|text","chapter":{"sel":".chapter a","url":"|attr:href","label":"|text"}}},"title":{"id":".bookmark_bt[data-id]|attr:data-id","name":".info h1|text","img":".cover img|attr:src","tags":".info .genres a|text","chapter":{"sel":".chapters tbody > tr","url":"a|attr:href","label":"a|text","at":".update_time|text"}},"reader":{"content":"#imgs","label":"select[name=\"chapter_select\"] option[selected]|text","prev":".nav_button.prev:not([disabled])|attr:href","next":".nav_button.next:not([disabled])|attr:href","title":{"sel":"#breadcrumb_wrap li:nth-child(2) a","id":".bookmark_chapter_bt[data-id]|attr:data-id","name":"span|text","url":"|attr:href"},"chapter":{"sel":".nav_chapters_wrap:first-child select[name=\"chapter_select\"] option","url":"|attr:value","label":"|text"}}},{"id":"blogtruyen","meta":{"releases":null,"titleBase":"{id}","readerBase":"","searchBase":"timkiem/nangcao/1/0/-1/-1?txt=","defaultLang":"vi","titleIdType":"id"},"title":{"name":"h1.entry-title a|text","img":".thumbnail img|attr-contain:src","tags":".description .category a|attr:title","chapter":{"sel":"#list-chapters > p[id]","label":".title a|text","url":".title a|attr:href","at":".publishedDate|text"}},"reader":{"sel":"#readonline","content":"#readonline #content","label":"h1|text","prev":".linkchapter a:first-child:not([href=\"#\"])|attr:href","next":".linkchapter a:last-child:not([href=\"#\"])|attr:href","title":{"sel":".breadcrumbs a:nth-child(2)","name":"span|text","url":"|attr:href"},"chapter":{"sel":".linkchapter .ddlChapter option","label":"|text","url":"|attr:value"}}},{"id":"truyenqq","meta":{"releases":"","titleBase":"truyen-tranh","readerBase":"truyen-tranh","searchBase":"tim-kiem.html?q=","defaultLang":"vi","trailing":false,"titleIdType":"id"},"releases":{"title":{"sel":"#list_new > li","name":".book_name h3 a|text","url":".book_name h3 a|attr:href","chapter":{"sel":".last_chapter a","label":"|text","url":"|attr:href"}}},"title":{"id":".btn-subscribe|attr:data-id","name":".book_info h1|text","img":".book_avatar img|attr-contain:src","tags":".book_info li a[href*=\"/the-loai/\"]|text","chapter":{"sel":".works-chapter-list .works-chapter-item","label":".name-chap a|text","url":".name-chap a|attr:href","at":".time-chap|text"}},"reader":{"content":".chapter_content","label":"ol.breadcrumb > li:last-of-type a span|text","prev":".chapter-control a.prev[href]:first-of-type:not(.d-none)|attr:href","next":".chapter-control a.prev[href]:last-of-type:not(.d-none), .chapter-control a.next[href]:not(.d-none)|attr:href","title":{"sel":"ol.breadcrumb > li:nth-of-type(2) a","id":".btn-subscribe|attr:data-id","name":"span|text","url":"|attr:href"},"chapter":{"trigger":".chapter_list","sel":"#popup_content .chapter-list > a, .chapter_list > option","label":"|text","url":"|attr:href || |attr:value"}},"search":{"title":{"sel":"#list_new > li","name":".book_name h3 a|text","url":".book_name h3 a|attr:href"}}},{"id":"uzay","meta":{"releases":"","titleBase":"manga/{id}","readerBase":"manga/{titleId}/{titleSlug}","searchBase":"search?search=","defaultLang":"tr","titleIdType":"slug","trailing":false},"releases":{"title":{"sel":"section[aria-label=\"new series\"] ~ section .header + div > div","url":"a|attr:href","name":"h2|text","chapter":{"sel":"a.mobile-list-item","url":"|attr:href","label":"h3 span:first-child b|text","at":"h3 span:nth-child(2)|text"}}},"title":{"name":".content-details > h1|text","img":".content-info > img|attr:src","tags":".content-details a[href*=\"?categories=\"]|text","chapter":{"sel":".list-episode > a","url":"|attr:href","label":"h3 b|text","at":"span:last-child|text"}},"reader":{"content":".manga-episode-card","label":".header h1 + h2|text","prev":"[aria-label=\"episode-navbar\"] div:not(last-child) > a[href]|attr:href","next":"[aria-label=\"episode-navbar\"] div:last-child > a[href]|attr:href","title":{"sel":".header h1:has(> a) a","url":"|attr:href","name":"|text"}}},{"id":"mangaworld","meta":{"releases":"","titleBase":"manga/{id}","readerBase":"manga/{titleId}/{titleSlug}/read","searchBase":"archive?keyword=","defaultLang":"it","titleIdType":"id"},"releases":{"title":{"sel":".comics-grid > .entry","name":".manga-title|text","url":"a|attr:href","chapter":{"sel":"div:has(> .xanh)","label":"a|text","url":"a|attr:href","at":"i|text"}}},"title":{"name":"h1.name|text","img":".thumb img|attr:src","tags":".meta-data a[href*=\"?genre=\"]|text","type":".meta-data a[href*=\"?type=\"]|text","chapter":{"sel":".chapters-wrapper .chapter > a","url":"|attr:href","label":"span|text","at":"i|text"}},"reader":{"content":"#page","label":"h1|text","lstrip":"select.mode option[value=\"LIST\"][selected]","lstripBtn":"select.mode option[value=\"LIST\"]","title":{"sel":"a[href*=\"/manga/\"]","name":"|text","url":"|attr:href"},"chapter":{"sel":"#controls-1 select.chapter option","label":"|text","url":"|value"}}},{"id":"mangaplus","meta":{"home":"updates","releases":"updates","titleBase":"titles","readerBase":"viewer","defaultLang":"en","titleIdType":"slug","trailing":false},"releases":{"title":{"sel":"[class*=\"UpdatedTitle-module_titleWrapper_\"]","url":"a|attr:href","name":"[class*=\"UpdatedTitle-module_titleName_\"]|text","chapter":{"sel":"[class*=\"UpdatedTitle-module_chapterTitle_\"]","label":"|text"}}},"title":{"lazy":true,"sel":"h1[class*=\"TitleDetailHeader-module_title_\"]","name":"h1[class*=\"TitleDetailHeader-module_title_\"]|text","img":"img[class*=\"TitleDetailHeader-module_coverImage_\"]|attr:src","chapter":{"sel":"[class*=\"ChapterListItem-module_chapterListItem_\"]","url":"a[class*=\"ChapterListItem-module_commentContainer_\"]|attr:href","label":"[class*=\"ChapterListItem-module_name_\"]|text","at":"[class*=\"ChapterListItem-module_date_\"]|text"}},"reader":{"content":"[class*=\"Viewer-module_viewerContainer_\"]","label":"[class*=\"Navigation-module_chapterTitle_\"]|text","lstrip":"input#mode-vertical:checked","lstripBtn":"input#mode-vertical","title":{"sel":"a:has(> [class*=\"Navigation-module_title_\"])","url":"|attr:href","name":"h1|text"},"chapter":{"sel":"ul > li[class*=\"SideMenu-module_chapter_\"]","label":"|text"}}},{"id":"flame","meta":{"releases":"","titleBase":"series","readerBase":"series/{titleSlug}","searchBase":"browse?search=","defaultLang":"en","titleIdType":"name","trailing":false},"releases":{"title":{"sel":"[class*=\"SeriesCard_chapterCardContainer__\"]","url":"a|attr:href","name":".mantine-Stack-root a|text","chapter":{"sel":"a:has(> [class*=\"SeriesCard_chapterPillWrapper__\"])","url":"|attr:href","label":"p:first-child|text","at":"p:not(:first-child)|text"}}},"title":{"name":"h1|text","img":"img[alt=\"Cover\"]|attr:src","tags":"a[href*=\"/genre/\"] span|text","type":"p[class*=\"SeriesPage_infoField__\"]|row:type","first":".mantine-Paper-root p + a[href*=\"/series/\"]|attr:href","chapter":{"sel":"a[class*=\"ChapterCard_chapterWrapper__\"]","url":"|attr:href","label":"p:first-child|text","at":"p:not(:first-child)|text"}},"reader":{"content":"body","imgs":".mantine-Stack-root img","label":"p[class*=\"TopChapterNavbar_chapter_title___\"]|text","prevBtn":"button:has(.bi-arrow-left)","nextBtn":"button:has(.bi-arrow-right)","title":{"sel":"[class*=\"TopChapterNavbar_inner__\"]","name":"[class*=\"TopChapterNavbar_series_title__\"]|text","url":"a|attr:href"},"chapter":{"trigger":"button:has(.bi-card-list)","sel":"[class*=\"ChapterCard_chapterWrapper__\"]","url":"|attr:href","label":"p:first-child|text","at":"p:not(:first-child)|text"}}},{"id":"vortex","meta":{"home":"home","releases":null,"titleBase":"series","readerBase":"series/{titleSlug}","searchBase":"series?searchTerm=","defaultLang":"en","trailing":false,"titleIdType":"name"},"title":{"name":"h1[itemprop=\"name\"]|text","img":"[itemprop=\"image\"] img|attr:src","type":"h1:has(> svg)|row:type","first":"a[href*=\"/series/\"][href*=\"/chapter\"]|attr:href","hasMore":"a[href*=\"/series/\"][href*=\"/chapter\"]"},"reader":{"content":"section:has(> .chapter-image-container),body","label":"a[href*=\"/series\"]:has(img) div:has(~ time)|text","prev":"a:has(button[aria-label=\"Prev\"])|attr:href","next":"a:has(button[aria-label=\"Next\"])|attr:href","title":{"sel":"a[href*=\"/series\"]:has(img)","name":"div:has(~ time)|text","url":"|attr:href"}}},{"id":"weebcentral","meta":{"releases":"","titleBase":"series/{id}","readerBase":"chapters","chapters":"about:blank","defaultLang":"en","titleIdType":"id","trailing":false},"releases":{"title":{"sel":"[x-data*=\"sub_feed_shown\"] section article","url":"a:first-child|attr:href","name":"div:not(:has(span)) div|text","chapter":{"sel":"a:not(:first-child)","url":"|attr:href","label":"div:not(:first-child) span|text","at":"time|attr:datetime"}}},"title":{"name":"h1|text","img":"picture img|attr:src","tags":"li a[href*=\"?included_tag=\"]|text","type":"li a[href*=\"?included_type=\"]|text","hasMore":"#chapter-list a","first":"[x-data]:has(> a[href*=\"chapters/\"]):last-child a|attr:href"},"reader":{"content":"[hx-include*=\"reading_style\"]","label":"[hx-target=\"#chapter-select-body\"] span|text","lstripBtn":"input[value=\"long_strip\"]","lstrip":"input[value=\"long_strip\"]:checked","prevBtn":"button[\\@click=\"prevPage()\"]","nextBtn":"button[\\@click=\"nextPage()\"]","title":{"sel":"#nav-top a[href*=\"/series/\"]","url":"|attr:href","name":"span|text"},"chapter":{"trigger":"button[hx-target=\"#chapter-select-body\"]"}}},{"id":"lua","meta":{"releases":"","titleBase":"series","readerBase":"series/{titleSlug}","titleIdType":"slug","trailing":false,"defaultLang":"en"},"releases":{"title":{"sel":"div:has(> div > a[href*=\"/series/\"]):has(a > h5)","url":"a|attr:href","name":"h5|text","chapter":{"sel":"a + div a","url":"|attr:href","label":"span:first-child|text","at":"span:not(:first-child)|text"}}},"title":{"lazy":true,"sel":"ul:has(> * > li)","name":"h1|text","img":"section:has(h1) img[srcset]|attr:src"},"reader":{"label":"h1|text","prev":"a[href*=\"/series/\"]:has(> button [data-icon=\"chevron-left\"])|attr:href","next":"a[href*=\"/series/\"]:has(> button [data-icon=\"chevron-right\"])|attr:href","content":"nav:first-child ~ .container:has(img)","title":{"sel":"nav:has(h1)","name":"h2|text","url":"nav:has(h1) a[href*=\"/series/\"]:has(svg[data-icon=\"house\"])|attr:href","img":"img|attr:src"}}},{"id":"rolia","meta":{"releases":"updated-mangas","titleBase":"manga","readerBase":"manga/{titleSlug}","chapters":"manga/{titleSlug}/chapterlist","searchBase":"?s=","titleIdType":"name","defaultLang":"en","trailing":true},"releases":{"title":{"sel":".article-feed > div > div:has(> h6)","name":"h6 a|text","url":"h6 a|attr:href","chapter":{"sel":"table tr","label":"a|text","url":"a|attr:href","at":"time|attr:data-date"}}},"title":{"name":"h1|text","img":"img.poster|attr-contain:src","tags":"a[href*=\"/genres/\"]|text","type":".card-movies-series table tr:last-child td|text","first":".chapter-list + a|attr:href","hasMore":".chapter-list ~ a[href*=\"/chapterlist\"]"},"chapters":{"chapter":{"sel":"#page-content-wrapper td:first-child a","url":"|attr:url","label":"|text"}},"reader":{"content":".manga-child-content","label":".childtitle|text","next":".chapter-nav-right|attr:href","prev":".chapter-nav-left|attr:href","title":{"sel":".breadcrumb strong a","name":"|text","url":"|attr:href"},"chapter":{"sel":"#postDropdown option:not(:first-child)","label":"|text","url":"|attr:value"}}}]
package/webview.js CHANGED
@@ -1 +1 @@
1
- (function(){"use strict";function C(e,t){let n;return()=>{n&&clearTimeout(n),n=setTimeout(()=>{e(),n=void 0},t)}}function p(e){return e.title==="Just a moment..."||e.title==="Access denied"||e.title=="Attention Required! | Cloudflare"||!!e.querySelector('body.no-js #challenge-running, body.no-js noscript, link[href$="/styles/challenges.css"]')}async function T({addListener:e,removeListener:t,transform:n,filter:o,handler:i,onTimeout:r,timeout:a,once:s}){return new Promise(c=>{e(k);const l=()=>s===!0&&t(k),b=a?setTimeout(()=>{l(),c(void 0),r?.()},a):void 0;async function k(d,...L){d=n?n(d):d,d!==void 0&&(!o||o(d,...L))&&(l(),c(d),i?.(d,...L),b&&clearTimeout(b))}})}async function E(e){return(await T({addListener:t=>window.addEventListener("message",t),removeListener:t=>window.removeEventListener("message",t),...e}))?.data}function H({event:e,filter:t,handler:n,senderWindow:o,targetOrigin:i}){E({filter:r=>r.data?.event===e&&!!r.data?.reqId&&(!t||t(r)),handler:async r=>{const a=await n?.(r);(o||window).postMessage({resId:r.data.reqId,result:a},i??"*")}})}async function m(e,t,n){const o=await n(()=>{e=0});if(o!==void 0)return o;if(!(e<=0))return await new Promise(i=>{setTimeout(async()=>{const r=await m(e-1,t,n);i(r)},t)})}function M(){const e={delay:{loading:!0}};let t=location.pathname,n={...e};async function o(i,r){if(!r.headers.get("Content-Type")?.includes("application/json")){delete n[i];return}n[i]={res:r.clone()}}window.fetch=new Proxy(window.fetch,{apply:async(i,r,a)=>{t!==location.pathname&&(t=location.pathname,n={...e});const[s,c]=a;return c?.method&&c.method.toLowerCase?.()!=="get"?await i.apply(r,a):(n[s]={loading:!0},delete n.delay,await i.apply(r,[s,c]).then(l=>(o(s,l),l)).catch(l=>{throw delete n[s],l}))}}),H({event:"tk:fetchResult",async handler(i){if(i.origin!==location.origin)return;const{baseUrl:r,segments:a}=i.data.args||{};return!Array.isArray(a)||typeof r!="string"?void 0:await I(()=>n,r,a.filter(s=>typeof s=="string"||typeof s?.isAny=="boolean"))}})}function A(e,t,n){const o=Object.keys(e).find(i=>_(i,t,n));return o?{url:o,result:e[o]}:void 0}function _(e,t,n){const o=e.replace(location.origin,""),i=t.replace(location.origin,"");if(!o.startsWith(i))return!1;const r=o.replace(i,"").split("?")[0].split("#")[0].split("/").filter(Boolean);return r.length===n.length&&n.every((a,s)=>a?.isAny||a===r[s])}function I(e,t,n){let o=15;return m(150,100,async i=>{const r=A(e(),t,n);if(!r){const s=Object.values(e());!(!s.length||s.some(c=>c.loading))&&!--o&&i();return}const a=await S(r.result);return a?{url:r.url,value:a}:void 0})}async function S(e){const{res:t,parsed:n,loading:o}=e;if(!o)return e.parsed=n??await t?.json().catch(async()=>JSON.parse(await t.text())).catch(()=>{}),delete e.res,e.parsed}const h=!navigator.userAgent.toLowerCase().includes("android"),y=h&&location.hostname.includes("mangafire"),j=location.hostname.includes("mangahub");let w;window.top===window&&(h&&j&&(navigator.serviceWorker={addEventListener:()=>{}}),P(),D(),O(),M(),x());function D(){let e=!1,t=0;const n=()=>{if(!(e||p(document)))if(e=!0,t++,location.protocol==="chrome-error:")u("tk:error",document.title),document.body.style.setProperty("display","none");else{const o=g();u("tk:DOMContentLoaded",{isDocTransparent:o}),o&&q()}};document.addEventListener("DOMContentLoaded",n),document.addEventListener("readystatechange",o=>{o.target.readyState!=="loading"?n():t<=1&&(e=!1)})}function O(){e(()=>!p(document)&&u("tk:spaNav"));function e(t){let n=location.pathname;const o=C(()=>{n!==location.pathname&&(y&&window.webkit&&(w=window.webkit,window.webkit=void 0),n=location.pathname,t())},50),i=(r,a,s)=>(o(),r.apply(a,s));window.addEventListener("popstate",o),window.history.pushState=new Proxy(window.history.pushState,{apply:i}),window.history.replaceState=new Proxy(window.history.replaceState,{apply:i})}}function P(){if(!y)return W();window.addEventListener("DOMContentLoaded",()=>{w=window.webkit,window.webkit=void 0;const e={log:console.log,debug:console.debug,error:console.error,info:console.info,warn:console.warn};for(const t in e)console[t]=function(...n){try{e[t].call(null,n)}catch{}};window.flutter_inappwebview.callHandler=function(...t){const n=window._flutter_inappwebview_windowId,o=setTimeout(function(){});return w?.messageHandlers.callHandler.postMessage({handlerName:t[0],_callHandlerID:o,args:JSON.stringify(Array.prototype.slice.call(t,1)),_windowId:n}),new Promise(function(i,r){window.flutter_inappwebview[o]={resolve:i,reject:r}})}})}function W(){let e=window.webkit,t=0;const n=setInterval(()=>{if(e===window.webkit){++t>=300&&clearInterval(n);return}e===void 0||typeof window.webkit=="object"?(t=0,e=window.webkit):window.webkit=e},10)}function q(){let e=0;const t=setInterval(()=>{if(e++,e===10){clearInterval(t);return}g()||(clearInterval(t),u("tk:transparentChanged",!1))},200)}function g(){return v(document.documentElement)&&v(document.body)}function v(e){const t=getComputedStyle(e).backgroundColor;return!t||t==="rgba(0, 0, 0, 0)"}function x(){let e;const t=()=>({});window._lstClckDetails=t,document.addEventListener("touchstart",n=>{const o=n.target;if(!(o instanceof HTMLElement)||!o.isConnected)return;const i=n.touches[0];window._lstClckDetails=()=>N(o,location.pathname,i.pageX,i.pageY),clearTimeout(e),o&&(e=setTimeout(()=>{window._lstClckDetails=t},500))})}function N(e,t,n,o){if(location.pathname!==t)return;const i=(e.isConnected?$(e,a=>a instanceof HTMLAnchorElement||a instanceof HTMLButtonElement):void 0)??Array.from(document.elementsFromPoint(n,o)).find(a=>a instanceof HTMLAnchorElement&&f(a));if(!i)return e.isConnected&&f(e)?{}:void 0;if(!f(i))return;if(!(i instanceof HTMLAnchorElement))return i.children.length?{}:void 0;const r=i.href;if(!r||r.includes("javascript:")||r[0]==="#")return{};try{return{href:new URL(r,location.href).toString(),isBlank:i.target==="_blank"}}catch{return{}}}function f(e){const{offsetWidth:t,offsetHeight:n}=e;return t>=1&&t<window.innerWidth*.9||n>=1&&n>window.innerHeight*.9}function $(e,t){let n=e;for(;n&&n!==document.body;){if(t(n))return n;n=n.parentElement}}function u(e,t){window.flutter_inappwebview?.callHandler?.(e,t===void 0?{}:t)}})();
1
+ (function(){"use strict";function C(e,t){let n;return()=>{n&&clearTimeout(n),n=setTimeout(()=>{e(),n=void 0},t)}}function p(e){return e.title==="Just a moment..."||e.title==="Access denied"||e.title=="Attention Required! | Cloudflare"||!!e.querySelector('body.no-js #challenge-running, body.no-js noscript, link[href$="/styles/challenges.css"]')}async function T({addListener:e,removeListener:t,transform:n,filter:o,handler:i,onTimeout:r,timeout:a,once:s}){return new Promise(c=>{e(k);const l=()=>s===!0&&t(k),b=a?setTimeout(()=>{l(),c(void 0),r?.()},a):void 0;async function k(d,...L){d=n?n(d):d,d!==void 0&&(!o||o(d,...L))&&(l(),c(d),i?.(d,...L),b&&clearTimeout(b))}})}async function E(e){return(await T({addListener:t=>window.addEventListener("message",t),removeListener:t=>window.removeEventListener("message",t),...e}))?.data}function H({event:e,filter:t,handler:n,senderWindow:o,targetOrigin:i}){E({filter:r=>r.data?.event===e&&!!r.data?.reqId&&(!t||t(r)),handler:async r=>{const a=await n?.(r);(o||window).postMessage({resId:r.data.reqId,result:a},i??"*")}})}async function m(e,t,n){const o=await n(()=>{e=0});if(o!==void 0)return o;if(!(e<=0))return await new Promise(i=>{setTimeout(async()=>{const r=await m(e-1,t,n);i(r)},t)})}function M(){const e={delay:{loading:!0}};let t=location.pathname,n={...e};async function o(i,r){if(!r.headers.get("Content-Type")?.includes("application/json")){delete n[i];return}n[i]={res:r.clone()}}window.fetch=new Proxy(window.fetch,{apply:async(i,r,a)=>{t!==location.pathname&&(t=location.pathname,n={...e});const[s,c]=a;return c?.method&&c.method.toLowerCase?.()!=="get"?await i.apply(r,a):(n[s]={loading:!0},delete n.delay,await i.apply(r,[s,c]).then(l=>(o(s,l),l)).catch(l=>{throw delete n[s],l}))}}),H({event:"tk:fetchResult",async handler(i){if(i.origin!==location.origin)return;const{baseUrl:r,segments:a}=i.data.args||{};return!Array.isArray(a)||typeof r!="string"?void 0:await I(()=>n,r,a.filter(s=>typeof s=="string"||typeof s?.isAny=="boolean"))}})}function A(e,t,n){const o=Object.keys(e).find(i=>_(i,t,n));return o?{url:o,result:e[o]}:void 0}function _(e,t,n){const o=e.replace(location.origin,""),i=t.replace(location.origin,"");if(!o.startsWith(i))return!1;const r=o.replace(i,"").split("?")[0].split("#")[0].split("/").filter(Boolean);return r.length===n.length&&n.every((a,s)=>a?.isAny||a===r[s])}function I(e,t,n){let o=15;return m(150,100,async i=>{const r=A(e(),t,n);if(!r){const s=Object.values(e());!(!s.length||s.some(c=>c.loading))&&!--o&&i();return}const a=await S(r.result);return a?{url:r.url,value:a}:void 0})}async function S(e){const{res:t,parsed:n,loading:o}=e;if(!o)return e.parsed=n??await t?.json().catch(async()=>JSON.parse(await t.text())).catch(()=>{}),delete e.res,e.parsed}const h=!navigator.userAgent.toLowerCase().includes("android"),y=h&&location.hostname.includes("mangafire"),j=location.hostname.includes("mangahub");let w;window.top===window&&(h&&j&&(navigator.serviceWorker={addEventListener:()=>{}}),P(),D(),O(),M(),x());function D(){let e=!1,t=0;const n=()=>{if(!(e||p(document)))if(e=!0,t++,location.protocol==="chrome-error:")u("tk:error",document.title),document.body.style.setProperty("display","none");else{const o=g();u("tk:DOMContentLoaded",{isDocTransparent:o}),o&&q()}};document.addEventListener("DOMContentLoaded",n),document.addEventListener("readystatechange",o=>{o.target.readyState!=="loading"?n():t<=1&&(e=!1)})}function O(){e(()=>{p(document)||u("tk:spaNav")});function e(t){let n=location.pathname;const o=C(()=>{n!==location.pathname&&(y&&window.webkit&&(w=window.webkit,window.webkit=void 0),n=location.pathname,t())},50),i=(r,a,s)=>(o(),r.apply(a,s));window.addEventListener("popstate",o),window.history.pushState=new Proxy(window.history.pushState,{apply:i}),window.history.replaceState=new Proxy(window.history.replaceState,{apply:i})}}function P(){if(!y)return W();window.addEventListener("DOMContentLoaded",()=>{w=window.webkit,window.webkit=void 0;const e={log:console.log,debug:console.debug,error:console.error,info:console.info,warn:console.warn};for(const t in e)console[t]=function(...n){try{e[t].call(null,n)}catch{}};window.flutter_inappwebview.callHandler=function(...t){const n=window._flutter_inappwebview_windowId,o=setTimeout(function(){});return w?.messageHandlers.callHandler.postMessage({handlerName:t[0],_callHandlerID:o,args:JSON.stringify(Array.prototype.slice.call(t,1)),_windowId:n}),new Promise(function(i,r){window.flutter_inappwebview[o]={resolve:i,reject:r}})}})}function W(){let e=window.webkit,t=0;const n=setInterval(()=>{if(e===window.webkit){++t>=300&&clearInterval(n);return}e===void 0||typeof window.webkit=="object"?(t=0,e=window.webkit):window.webkit=e},10)}function q(){let e=0;const t=setInterval(()=>{if(e++,e===10){clearInterval(t);return}g()||(clearInterval(t),u("tk:transparentChanged",!1))},200)}function g(){return v(document.documentElement)&&v(document.body)}function v(e){const t=getComputedStyle(e).backgroundColor;return!t||t==="rgba(0, 0, 0, 0)"}function x(){let e;const t=()=>({});window._lstClckDetails=t,document.addEventListener("touchstart",n=>{const o=n.target;if(!(o instanceof HTMLElement)||!o.isConnected)return;const i=n.touches[0];window._lstClckDetails=()=>N(o,location.pathname,i.pageX,i.pageY),clearTimeout(e),o&&(e=setTimeout(()=>{window._lstClckDetails=t},500))})}function N(e,t,n,o){if(location.pathname!==t)return;const i=(e.isConnected?$(e,a=>a instanceof HTMLAnchorElement||a instanceof HTMLButtonElement):void 0)??Array.from(document.elementsFromPoint(n,o)).find(a=>a instanceof HTMLAnchorElement&&f(a));if(!i)return e.isConnected&&f(e)?{}:void 0;if(!f(i))return;if(!(i instanceof HTMLAnchorElement))return i.children.length?{}:void 0;const r=i.href;if(!r||r.includes("javascript:")||r[0]==="#")return{};try{return{href:new URL(r,location.href).toString(),isBlank:i.target==="_blank"}}catch{return{}}}function f(e){const{offsetWidth:t,offsetHeight:n}=e;return t>=1&&t<window.innerWidth*.9||n>=1&&n>window.innerHeight*.9}function $(e,t){let n=e;for(;n&&n!==document.body;){if(t(n))return n;n=n.parentElement}}function u(e,t){window.flutter_inappwebview?.callHandler?.(e,t===void 0?{}:t)}})();